diff --git a/include/vmlinux/README b/include/vmlinux/README
new file mode 100644
index 0000000..1021e05
--- /dev/null
+++ b/include/vmlinux/README
@@ -0,0 +1,11 @@
+These vmlinux.h files are manually generated using the following command:
+
+bpftool btf dump file <path/to/vmlinux> format c > vmlinux.h
+
+In the future, it would be good to create the infrastructure to periodically update this to a version with the latest tracking kernel.
+
+These vmlinux.h files are used for bpf programs leveraging CO-RE to access internal kernel data structures. They do not need to track the target kernel perfectly, but if fields are added to an internal kernel data structure, they must be regenerated before these fields are used.
+
+Similarly, the BPF programs which use vmlinux.h should be compiled against a vmlinux.h file which is generated from the vmlinux of the same architecture. On Android, this is not a problem for arm64 or x86_64 architectures, as the 64bit system userspace matches the 64bit kernel.
+
+However, for 32 bit Android userspace, either arm or x86, we currently have no way to determine at build time if the kernel we will be running on will be 32bit or 64bit. For this reason, we default to 32bit userspace running on 64bit kernel, and therefore loading libbpf programs will be disabled at runtime for systems with 32bit kernels.
diff --git a/include/vmlinux/android15_6.6/arm64/vmlinux.h b/include/vmlinux/android15_6.6/arm64/vmlinux.h
new file mode 100644
index 0000000..674f201
--- /dev/null
+++ b/include/vmlinux/android15_6.6/arm64/vmlinux.h
@@ -0,0 +1,145619 @@
+#ifndef __VMLINUX_H__
+#define __VMLINUX_H__
+
+#ifndef BPF_NO_PRESERVE_ACCESS_INDEX
+#pragma clang attribute push (__attribute__((preserve_access_index)), apply_to = record)
+#endif
+
+typedef struct {
+	int counter;
+} atomic_t;
+
+struct jump_entry;
+
+struct static_key_mod;
+
+struct static_key {
+	atomic_t enabled;
+	union {
+		unsigned long type;
+		struct jump_entry *entries;
+		struct static_key_mod *next;
+	};
+};
+
+struct static_call_key;
+
+struct tracepoint_func;
+
+struct tracepoint {
+	const char *name;
+	struct static_key key;
+	struct static_call_key *static_call_key;
+	void *static_call_tramp;
+	void *iterator;
+	void *probestub;
+	int (*regfunc)();
+	void (*unregfunc)();
+	struct tracepoint_func __attribute__((btf_type_tag("rcu"))) *funcs;
+};
+
+typedef int __s32;
+
+typedef __s32 s32;
+
+struct jump_entry {
+	s32 code;
+	s32 target;
+	long key;
+};
+
+struct static_call_key {
+	void *func;
+};
+
+struct tracepoint_func {
+	void *func;
+	void *data;
+	int prio;
+};
+
+enum trace_reg {
+	TRACE_REG_REGISTER = 0,
+	TRACE_REG_UNREGISTER = 1,
+	TRACE_REG_PERF_REGISTER = 2,
+	TRACE_REG_PERF_UNREGISTER = 3,
+	TRACE_REG_PERF_OPEN = 4,
+	TRACE_REG_PERF_CLOSE = 5,
+	TRACE_REG_PERF_ADD = 6,
+	TRACE_REG_PERF_DEL = 7,
+};
+
+struct list_head {
+	struct list_head *next;
+	struct list_head *prev;
+};
+
+struct trace_event_call;
+
+struct trace_event_fields;
+
+struct trace_event_class {
+	const char *system;
+	void *probe;
+	void *perf_probe;
+	int (*reg)(struct trace_event_call *, enum trace_reg, void *);
+	struct trace_event_fields *fields_array;
+	struct list_head * (*get_fields)(struct trace_event_call *);
+	struct list_head fields;
+	int (*raw_init)(struct trace_event_call *);
+};
+
+struct hlist_node {
+	struct hlist_node *next;
+	struct hlist_node **pprev;
+};
+
+struct trace_event_functions;
+
+struct trace_event {
+	struct hlist_node node;
+	int type;
+	struct trace_event_functions *funcs;
+};
+
+struct event_filter;
+
+struct hlist_head;
+
+struct bpf_prog_array;
+
+struct perf_event;
+
+struct trace_event_call {
+	struct list_head list;
+	struct trace_event_class *class;
+	union {
+		char *name;
+		struct tracepoint *tp;
+	};
+	struct trace_event event;
+	char *print_fmt;
+	struct event_filter *filter;
+	union {
+		void *module;
+		atomic_t refcnt;
+	};
+	void *data;
+	int flags;
+	int perf_refcount;
+	struct hlist_head __attribute__((btf_type_tag("percpu"))) *perf_events;
+	struct bpf_prog_array __attribute__((btf_type_tag("rcu"))) *prog_array;
+	int (*perf_perm)(struct trace_event_call *, struct perf_event *);
+};
+
+enum print_line_t {
+	TRACE_TYPE_PARTIAL_LINE = 0,
+	TRACE_TYPE_HANDLED = 1,
+	TRACE_TYPE_UNHANDLED = 2,
+	TRACE_TYPE_NO_CONSUME = 3,
+};
+
+struct trace_iterator;
+
+typedef enum print_line_t (*trace_print_func)(struct trace_iterator *, int, struct trace_event *);
+
+struct trace_event_functions {
+	trace_print_func trace;
+	trace_print_func raw;
+	trace_print_func hex;
+	trace_print_func binary;
+};
+
+typedef long long __s64;
+
+typedef __s64 s64;
+
+typedef struct {
+	s64 counter;
+} atomic64_t;
+
+typedef atomic64_t atomic_long_t;
+
+typedef unsigned char __u8;
+
+typedef __u8 u8;
+
+typedef unsigned short __u16;
+
+typedef __u16 u16;
+
+struct qspinlock {
+	union {
+		atomic_t val;
+		struct {
+			u8 locked;
+			u8 pending;
+		};
+		struct {
+			u16 locked_pending;
+			u16 tail;
+		};
+	};
+};
+
+typedef struct qspinlock arch_spinlock_t;
+
+struct raw_spinlock {
+	arch_spinlock_t raw_lock;
+};
+
+typedef struct raw_spinlock raw_spinlock_t;
+
+struct optimistic_spin_queue {
+	atomic_t tail;
+};
+
+typedef unsigned long long __u64;
+
+typedef __u64 u64;
+
+struct mutex {
+	atomic_long_t owner;
+	raw_spinlock_t wait_lock;
+	struct optimistic_spin_queue osq;
+	struct list_head wait_list;
+	u64 android_oem_data1[2];
+};
+
+typedef unsigned long __kernel_ulong_t;
+
+typedef __kernel_ulong_t __kernel_size_t;
+
+typedef __kernel_size_t size_t;
+
+typedef long long __kernel_loff_t;
+
+typedef __kernel_loff_t loff_t;
+
+struct seq_buf {
+	char *buffer;
+	size_t size;
+	size_t len;
+	loff_t readpos;
+};
+
+struct trace_seq {
+	char buffer[4096];
+	struct seq_buf seq;
+	int full;
+};
+
+struct cpumask {
+	unsigned long bits[1];
+};
+
+typedef struct cpumask cpumask_var_t[1];
+
+typedef _Bool bool;
+
+struct trace_array;
+
+struct tracer;
+
+struct array_buffer;
+
+struct ring_buffer_iter;
+
+struct trace_entry;
+
+struct trace_iterator {
+	struct trace_array *tr;
+	struct tracer *trace;
+	struct array_buffer *array_buffer;
+	void *private;
+	int cpu_file;
+	struct mutex mutex;
+	struct ring_buffer_iter **buffer_iter;
+	unsigned long iter_flags;
+	void *temp;
+	unsigned int temp_size;
+	char *fmt;
+	unsigned int fmt_size;
+	long wait_index;
+	struct trace_seq tmp_seq;
+	cpumask_var_t started;
+	bool snapshot;
+	struct trace_seq seq;
+	struct trace_entry *ent;
+	unsigned long lost_events;
+	int leftover;
+	int ent_size;
+	int cpu;
+	u64 ts;
+	loff_t pos;
+	long idx;
+};
+
+struct trace_entry {
+	unsigned short type;
+	unsigned char flags;
+	unsigned char preempt_count;
+	int pid;
+};
+
+struct hlist_head {
+	struct hlist_node *first;
+};
+
+struct callback_head {
+	struct callback_head *next;
+	void (*func)(struct callback_head *);
+};
+
+struct bpf_prog;
+
+struct bpf_cgroup_storage;
+
+struct bpf_prog_array_item {
+	struct bpf_prog *prog;
+	union {
+		struct bpf_cgroup_storage *cgroup_storage[2];
+		u64 bpf_cookie;
+	};
+};
+
+struct bpf_prog_array {
+	struct callback_head rcu;
+	struct bpf_prog_array_item items[0];
+};
+
+struct rb_node {
+	unsigned long __rb_parent_color;
+	struct rb_node *rb_right;
+	struct rb_node *rb_left;
+};
+
+enum perf_event_state {
+	PERF_EVENT_STATE_DEAD = -4,
+	PERF_EVENT_STATE_EXIT = -3,
+	PERF_EVENT_STATE_ERROR = -2,
+	PERF_EVENT_STATE_OFF = -1,
+	PERF_EVENT_STATE_INACTIVE = 0,
+	PERF_EVENT_STATE_ACTIVE = 1,
+};
+
+typedef struct {
+	atomic_long_t a;
+} local_t;
+
+typedef struct {
+	local_t a;
+} local64_t;
+
+typedef unsigned int __u32;
+
+struct perf_event_attr {
+	__u32 type;
+	__u32 size;
+	__u64 config;
+	union {
+		__u64 sample_period;
+		__u64 sample_freq;
+	};
+	__u64 sample_type;
+	__u64 read_format;
+	__u64 disabled: 1;
+	__u64 inherit: 1;
+	__u64 pinned: 1;
+	__u64 exclusive: 1;
+	__u64 exclude_user: 1;
+	__u64 exclude_kernel: 1;
+	__u64 exclude_hv: 1;
+	__u64 exclude_idle: 1;
+	__u64 mmap: 1;
+	__u64 comm: 1;
+	__u64 freq: 1;
+	__u64 inherit_stat: 1;
+	__u64 enable_on_exec: 1;
+	__u64 task: 1;
+	__u64 watermark: 1;
+	__u64 precise_ip: 2;
+	__u64 mmap_data: 1;
+	__u64 sample_id_all: 1;
+	__u64 exclude_host: 1;
+	__u64 exclude_guest: 1;
+	__u64 exclude_callchain_kernel: 1;
+	__u64 exclude_callchain_user: 1;
+	__u64 mmap2: 1;
+	__u64 comm_exec: 1;
+	__u64 use_clockid: 1;
+	__u64 context_switch: 1;
+	__u64 write_backward: 1;
+	__u64 namespaces: 1;
+	__u64 ksymbol: 1;
+	__u64 bpf_event: 1;
+	__u64 aux_output: 1;
+	__u64 cgroup: 1;
+	__u64 text_poke: 1;
+	__u64 build_id: 1;
+	__u64 inherit_thread: 1;
+	__u64 remove_on_exec: 1;
+	__u64 sigtrap: 1;
+	__u64 __reserved_1: 26;
+	union {
+		__u32 wakeup_events;
+		__u32 wakeup_watermark;
+	};
+	__u32 bp_type;
+	union {
+		__u64 bp_addr;
+		__u64 kprobe_func;
+		__u64 uprobe_path;
+		__u64 config1;
+	};
+	union {
+		__u64 bp_len;
+		__u64 kprobe_addr;
+		__u64 probe_offset;
+		__u64 config2;
+	};
+	__u64 branch_sample_type;
+	__u64 sample_regs_user;
+	__u32 sample_stack_user;
+	__s32 clockid;
+	__u64 sample_regs_intr;
+	__u32 aux_watermark;
+	__u16 sample_max_stack;
+	__u16 __reserved_2;
+	__u32 aux_sample_size;
+	__u32 __reserved_3;
+	__u64 sig_data;
+	__u64 config3;
+};
+
+struct hw_perf_event_extra {
+	u64 config;
+	unsigned int reg;
+	int alloc;
+	int idx;
+};
+
+typedef s64 ktime_t;
+
+struct timerqueue_node {
+	struct rb_node node;
+	ktime_t expires;
+};
+
+enum hrtimer_restart {
+	HRTIMER_NORESTART = 0,
+	HRTIMER_RESTART = 1,
+};
+
+struct hrtimer_clock_base;
+
+struct hrtimer {
+	struct timerqueue_node node;
+	ktime_t _softexpires;
+	enum hrtimer_restart (*function)(struct hrtimer *);
+	struct hrtimer_clock_base *base;
+	u8 state;
+	u8 is_rel;
+	u8 is_soft;
+	u8 is_hard;
+	u64 android_kabi_reserved1;
+};
+
+typedef __u32 u32;
+
+struct arch_hw_breakpoint_ctrl {
+	u32 __reserved: 19;
+	u32 len: 8;
+	u32 type: 2;
+	u32 privilege: 2;
+	u32 enabled: 1;
+};
+
+struct arch_hw_breakpoint {
+	u64 address;
+	u64 trigger;
+	struct arch_hw_breakpoint_ctrl ctrl;
+};
+
+struct rhash_head {
+	struct rhash_head __attribute__((btf_type_tag("rcu"))) *next;
+};
+
+struct rhlist_head {
+	struct rhash_head rhead;
+	struct rhlist_head __attribute__((btf_type_tag("rcu"))) *next;
+};
+
+struct task_struct;
+
+struct hw_perf_event {
+	union {
+		struct {
+			u64 config;
+			u64 last_tag;
+			unsigned long config_base;
+			unsigned long event_base;
+			int event_base_rdpmc;
+			int idx;
+			int last_cpu;
+			int flags;
+			struct hw_perf_event_extra extra_reg;
+			struct hw_perf_event_extra branch_reg;
+		};
+		struct {
+			struct hrtimer hrtimer;
+		};
+		struct {
+			struct list_head tp_list;
+		};
+		struct {
+			u64 pwr_acc;
+			u64 ptsc;
+		};
+		struct {
+			struct arch_hw_breakpoint info;
+			struct rhlist_head bp_list;
+		};
+		struct {
+			u8 iommu_bank;
+			u8 iommu_cntr;
+			u16 padding;
+			u64 conf;
+			u64 conf1;
+		};
+	};
+	struct task_struct *target;
+	void *addr_filters;
+	unsigned long addr_filters_gen;
+	int state;
+	local64_t prev_count;
+	u64 sample_period;
+	union {
+		struct {
+			u64 last_period;
+			local64_t period_left;
+		};
+		struct {
+			u64 saved_metric;
+			u64 saved_slots;
+		};
+	};
+	u64 interrupts_seq;
+	u64 interrupts;
+	u64 freq_time_stamp;
+	u64 freq_count_stamp;
+};
+
+struct spinlock {
+	union {
+		struct raw_spinlock rlock;
+	};
+};
+
+typedef struct spinlock spinlock_t;
+
+struct wait_queue_head {
+	spinlock_t lock;
+	struct list_head head;
+};
+
+typedef struct wait_queue_head wait_queue_head_t;
+
+struct llist_node {
+	struct llist_node *next;
+};
+
+struct __call_single_node {
+	struct llist_node llist;
+	union {
+		unsigned int u_flags;
+		atomic_t a_flags;
+	};
+	u16 src;
+	u16 dst;
+};
+
+struct rcuwait {
+	struct task_struct __attribute__((btf_type_tag("rcu"))) *task;
+};
+
+struct irq_work {
+	struct __call_single_node node;
+	void (*func)(struct irq_work *);
+	struct rcuwait irqwait;
+};
+
+struct perf_addr_filters_head {
+	struct list_head list;
+	raw_spinlock_t lock;
+	unsigned int nr_file_filters;
+};
+
+struct perf_sample_data;
+
+struct pt_regs;
+
+typedef void (*perf_overflow_handler_t)(struct perf_event *, struct perf_sample_data *, struct pt_regs *);
+
+struct pmu;
+
+struct perf_event_context;
+
+struct perf_event_pmu_context;
+
+struct perf_buffer;
+
+struct fasync_struct;
+
+struct perf_addr_filter_range;
+
+struct pid_namespace;
+
+struct perf_event {
+	struct list_head event_entry;
+	struct list_head sibling_list;
+	struct list_head active_list;
+	struct rb_node group_node;
+	u64 group_index;
+	struct list_head migrate_entry;
+	struct hlist_node hlist_entry;
+	struct list_head active_entry;
+	int nr_siblings;
+	int event_caps;
+	int group_caps;
+	unsigned int group_generation;
+	struct perf_event *group_leader;
+	struct pmu *pmu;
+	void *pmu_private;
+	enum perf_event_state state;
+	unsigned int attach_state;
+	local64_t count;
+	atomic64_t child_count;
+	u64 total_time_enabled;
+	u64 total_time_running;
+	u64 tstamp;
+	struct perf_event_attr attr;
+	u16 header_size;
+	u16 id_header_size;
+	u16 read_size;
+	struct hw_perf_event hw;
+	struct perf_event_context *ctx;
+	struct perf_event_pmu_context *pmu_ctx;
+	atomic_long_t refcount;
+	atomic64_t child_total_time_enabled;
+	atomic64_t child_total_time_running;
+	struct mutex child_mutex;
+	struct list_head child_list;
+	struct perf_event *parent;
+	int oncpu;
+	int cpu;
+	struct list_head owner_entry;
+	struct task_struct *owner;
+	struct mutex mmap_mutex;
+	atomic_t mmap_count;
+	struct perf_buffer *rb;
+	struct list_head rb_entry;
+	unsigned long rcu_batches;
+	int rcu_pending;
+	wait_queue_head_t waitq;
+	struct fasync_struct *fasync;
+	unsigned int pending_wakeup;
+	unsigned int pending_kill;
+	unsigned int pending_disable;
+	unsigned int pending_sigtrap;
+	unsigned long pending_addr;
+	struct irq_work pending_irq;
+	struct callback_head pending_task;
+	unsigned int pending_work;
+	atomic_t event_limit;
+	struct perf_addr_filters_head addr_filters;
+	struct perf_addr_filter_range *addr_filter_ranges;
+	unsigned long addr_filters_gen;
+	struct perf_event *aux_event;
+	void (*destroy)(struct perf_event *);
+	struct callback_head callback_head;
+	struct pid_namespace *ns;
+	u64 id;
+	atomic64_t lost_samples;
+	u64 (*clock)();
+	perf_overflow_handler_t overflow_handler;
+	void *overflow_handler_context;
+	perf_overflow_handler_t orig_overflow_handler;
+	struct bpf_prog *prog;
+	u64 bpf_cookie;
+	struct trace_event_call *tp_event;
+	struct event_filter *filter;
+	void *security;
+	struct list_head sb_list;
+	__u32 orig_type;
+};
+
+struct module;
+
+struct device;
+
+struct attribute_group;
+
+struct perf_cpu_pmu_context;
+
+struct mm_struct;
+
+struct kmem_cache;
+
+struct perf_output_handle;
+
+struct pmu {
+	struct list_head entry;
+	struct module *module;
+	struct device *dev;
+	struct device *parent;
+	const struct attribute_group **attr_groups;
+	const struct attribute_group **attr_update;
+	const char *name;
+	int type;
+	int capabilities;
+	int __attribute__((btf_type_tag("percpu"))) *pmu_disable_count;
+	struct perf_cpu_pmu_context __attribute__((btf_type_tag("percpu"))) *cpu_pmu_context;
+	atomic_t exclusive_cnt;
+	int task_ctx_nr;
+	int hrtimer_interval_ms;
+	unsigned int nr_addr_filters;
+	void (*pmu_enable)(struct pmu *);
+	void (*pmu_disable)(struct pmu *);
+	int (*event_init)(struct perf_event *);
+	void (*event_mapped)(struct perf_event *, struct mm_struct *);
+	void (*event_unmapped)(struct perf_event *, struct mm_struct *);
+	int (*add)(struct perf_event *, int);
+	void (*del)(struct perf_event *, int);
+	void (*start)(struct perf_event *, int);
+	void (*stop)(struct perf_event *, int);
+	void (*read)(struct perf_event *);
+	void (*start_txn)(struct pmu *, unsigned int);
+	int (*commit_txn)(struct pmu *);
+	void (*cancel_txn)(struct pmu *);
+	int (*event_idx)(struct perf_event *);
+	void (*sched_task)(struct perf_event_pmu_context *, bool);
+	struct kmem_cache *task_ctx_cache;
+	void (*swap_task_ctx)(struct perf_event_pmu_context *, struct perf_event_pmu_context *);
+	void * (*setup_aux)(struct perf_event *, void **, int, bool);
+	void (*free_aux)(void *);
+	long (*snapshot_aux)(struct perf_event *, struct perf_output_handle *, unsigned long);
+	int (*addr_filters_validate)(struct list_head *);
+	void (*addr_filters_sync)(struct perf_event *);
+	int (*aux_output_match)(struct perf_event *);
+	bool (*filter)(struct pmu *, int);
+	int (*check_period)(struct perf_event *, u64);
+};
+
+enum module_state {
+	MODULE_STATE_LIVE = 0,
+	MODULE_STATE_COMING = 1,
+	MODULE_STATE_GOING = 2,
+	MODULE_STATE_UNFORMED = 3,
+};
+
+struct refcount_struct {
+	atomic_t refs;
+};
+
+typedef struct refcount_struct refcount_t;
+
+struct kref {
+	refcount_t refcount;
+};
+
+struct kset;
+
+struct kobj_type;
+
+struct kernfs_node;
+
+struct kobject {
+	const char *name;
+	struct list_head entry;
+	struct kobject *parent;
+	struct kset *kset;
+	const struct kobj_type *ktype;
+	struct kernfs_node *sd;
+	struct kref kref;
+	unsigned int state_initialized: 1;
+	unsigned int state_in_sysfs: 1;
+	unsigned int state_add_uevent_sent: 1;
+	unsigned int state_remove_uevent_sent: 1;
+	unsigned int uevent_suppress: 1;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct module_param_attrs;
+
+struct completion;
+
+struct module_kobject {
+	struct kobject kobj;
+	struct module *mod;
+	struct kobject *drivers_dir;
+	struct module_param_attrs *mp;
+	struct completion *kobj_completion;
+};
+
+struct latch_tree_node {
+	struct rb_node node[2];
+};
+
+struct mod_tree_node {
+	struct module *mod;
+	struct latch_tree_node node;
+};
+
+struct module_memory {
+	void *base;
+	unsigned int size;
+	struct mod_tree_node mtn;
+};
+
+struct mod_plt_sec {
+	int plt_shndx;
+	int plt_num_entries;
+	int plt_max_entries;
+};
+
+struct pkvm_module_section {
+	void *start;
+	void *end;
+};
+
+typedef s32 kvm_nvhe_reloc_t;
+
+struct hyp_event;
+
+struct pkvm_module_ops;
+
+struct pkvm_el2_module {
+	struct pkvm_module_section text;
+	struct pkvm_module_section bss;
+	struct pkvm_module_section rodata;
+	struct pkvm_module_section data;
+	struct pkvm_module_section event_ids;
+	struct pkvm_module_section sections;
+	struct hyp_event *hyp_events;
+	unsigned int nr_hyp_events;
+	kvm_nvhe_reloc_t *relocs;
+	struct list_head node;
+	unsigned long token;
+	unsigned int nr_relocs;
+	int (*init)(const struct pkvm_module_ops *);
+};
+
+struct plt_entry;
+
+struct mod_arch_specific {
+	struct mod_plt_sec core;
+	struct mod_plt_sec init;
+	struct plt_entry *ftrace_trampolines;
+	struct pkvm_el2_module hyp;
+};
+
+struct elf64_sym;
+
+typedef struct elf64_sym Elf64_Sym;
+
+struct mod_kallsyms {
+	Elf64_Sym *symtab;
+	unsigned int num_symtab;
+	char *strtab;
+	char *typetab;
+};
+
+typedef const int tracepoint_ptr_t;
+
+struct _ddebug;
+
+struct ddebug_class_map;
+
+struct _ddebug_info {
+	struct _ddebug *descs;
+	struct ddebug_class_map *classes;
+	unsigned int num_descs;
+	unsigned int num_classes;
+};
+
+struct module_attribute;
+
+struct kernel_symbol;
+
+struct kernel_param;
+
+struct exception_table_entry;
+
+struct bug_entry;
+
+struct module_sect_attrs;
+
+struct module_notes_attrs;
+
+struct srcu_struct;
+
+struct bpf_raw_event_map;
+
+struct trace_eval_map;
+
+struct kunit_suite;
+
+struct module {
+	enum module_state state;
+	struct list_head list;
+	char name[56];
+	unsigned char build_id[20];
+	struct module_kobject mkobj;
+	struct module_attribute *modinfo_attrs;
+	const char *version;
+	const char *srcversion;
+	const char *scmversion;
+	struct kobject *holders_dir;
+	const struct kernel_symbol *syms;
+	const s32 *crcs;
+	unsigned int num_syms;
+	struct mutex param_lock;
+	struct kernel_param *kp;
+	unsigned int num_kp;
+	unsigned int num_gpl_syms;
+	const struct kernel_symbol *gpl_syms;
+	const s32 *gpl_crcs;
+	bool using_gplonly_symbols;
+	bool sig_ok;
+	bool async_probe_requested;
+	unsigned int num_exentries;
+	struct exception_table_entry *extable;
+	int (*init)();
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct module_memory mem[7];
+	struct mod_arch_specific arch;
+	unsigned long taints;
+	unsigned int num_bugs;
+	struct list_head bug_list;
+	struct bug_entry *bug_table;
+	struct mod_kallsyms __attribute__((btf_type_tag("rcu"))) *kallsyms;
+	struct mod_kallsyms core_kallsyms;
+	struct module_sect_attrs *sect_attrs;
+	struct module_notes_attrs *notes_attrs;
+	char *args;
+	void __attribute__((btf_type_tag("percpu"))) *percpu;
+	unsigned int percpu_size;
+	void *noinstr_text_start;
+	unsigned int noinstr_text_size;
+	unsigned int num_tracepoints;
+	tracepoint_ptr_t *tracepoints_ptrs;
+	unsigned int num_srcu_structs;
+	struct srcu_struct **srcu_struct_ptrs;
+	unsigned int num_bpf_raw_events;
+	struct bpf_raw_event_map *bpf_raw_events;
+	unsigned int btf_data_size;
+	void *btf_data;
+	struct jump_entry *jump_entries;
+	unsigned int num_jump_entries;
+	unsigned int num_trace_bprintk_fmt;
+	const char **trace_bprintk_fmt_start;
+	struct trace_event_call **trace_events;
+	unsigned int num_trace_events;
+	struct trace_eval_map **trace_evals;
+	unsigned int num_trace_evals;
+	void *kprobes_text_start;
+	unsigned int kprobes_text_size;
+	unsigned long *kprobe_blacklist;
+	unsigned int num_kprobe_blacklist;
+	int num_kunit_suites;
+	struct kunit_suite **kunit_suites;
+	struct list_head source_list;
+	struct list_head target_list;
+	void (*exit)();
+	atomic_t refcnt;
+	struct _ddebug_info dyndbg_info;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct kset_uevent_ops;
+
+struct kset {
+	struct list_head list;
+	spinlock_t list_lock;
+	struct kobject kobj;
+	const struct kset_uevent_ops *uevent_ops;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct kobj_uevent_env;
+
+struct kset_uevent_ops {
+	int (* const filter)(const struct kobject *);
+	const char * (* const name)(const struct kobject *);
+	int (* const uevent)(const struct kobject *, struct kobj_uevent_env *);
+};
+
+struct kobj_uevent_env {
+	char *argv[3];
+	char *envp[64];
+	int envp_idx;
+	char buf[2048];
+	int buflen;
+};
+
+typedef unsigned int __kernel_uid32_t;
+
+typedef __kernel_uid32_t uid_t;
+
+typedef struct {
+	uid_t val;
+} kuid_t;
+
+typedef unsigned int __kernel_gid32_t;
+
+typedef __kernel_gid32_t gid_t;
+
+typedef struct {
+	gid_t val;
+} kgid_t;
+
+struct sysfs_ops;
+
+struct kobj_ns_type_operations;
+
+struct kobj_type {
+	void (*release)(struct kobject *);
+	const struct sysfs_ops *sysfs_ops;
+	const struct attribute_group **default_groups;
+	const struct kobj_ns_type_operations * (*child_ns_type)(const struct kobject *);
+	const void * (*namespace)(const struct kobject *);
+	void (*get_ownership)(const struct kobject *, kuid_t *, kgid_t *);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+typedef long __kernel_long_t;
+
+typedef __kernel_long_t __kernel_ssize_t;
+
+typedef __kernel_ssize_t ssize_t;
+
+struct attribute;
+
+struct sysfs_ops {
+	ssize_t (*show)(struct kobject *, struct attribute *, char *);
+	ssize_t (*store)(struct kobject *, struct attribute *, const char *, size_t);
+};
+
+typedef unsigned short umode_t;
+
+struct attribute {
+	const char *name;
+	umode_t mode;
+};
+
+struct bin_attribute;
+
+struct attribute_group {
+	const char *name;
+	umode_t (*is_visible)(struct kobject *, struct attribute *, int);
+	umode_t (*is_bin_visible)(struct kobject *, struct bin_attribute *, int);
+	struct attribute **attrs;
+	struct bin_attribute **bin_attrs;
+};
+
+struct address_space;
+
+struct file;
+
+struct vm_area_struct;
+
+struct bin_attribute {
+	struct attribute attr;
+	size_t size;
+	void *private;
+	struct address_space * (*f_mapping)();
+	ssize_t (*read)(struct file *, struct kobject *, struct bin_attribute *, char *, loff_t, size_t);
+	ssize_t (*write)(struct file *, struct kobject *, struct bin_attribute *, char *, loff_t, size_t);
+	int (*mmap)(struct file *, struct kobject *, struct bin_attribute *, struct vm_area_struct *);
+};
+
+typedef unsigned int gfp_t;
+
+struct xarray {
+	spinlock_t xa_lock;
+	gfp_t xa_flags;
+	void __attribute__((btf_type_tag("rcu"))) *xa_head;
+};
+
+struct rw_semaphore {
+	atomic_long_t count;
+	atomic_long_t owner;
+	struct optimistic_spin_queue osq;
+	raw_spinlock_t wait_lock;
+	struct list_head wait_list;
+	u64 android_vendor_data1;
+	u64 android_oem_data1[2];
+};
+
+struct rb_root {
+	struct rb_node *rb_node;
+};
+
+struct rb_root_cached {
+	struct rb_root rb_root;
+	struct rb_node *rb_leftmost;
+};
+
+typedef u32 errseq_t;
+
+struct inode;
+
+struct address_space_operations;
+
+struct address_space {
+	struct inode *host;
+	struct xarray i_pages;
+	struct rw_semaphore invalidate_lock;
+	gfp_t gfp_mask;
+	atomic_t i_mmap_writable;
+	struct rb_root_cached i_mmap;
+	unsigned long nrpages;
+	unsigned long writeback_index;
+	const struct address_space_operations *a_ops;
+	unsigned long flags;
+	struct rw_semaphore i_mmap_rwsem;
+	errseq_t wb_err;
+	spinlock_t private_lock;
+	struct list_head private_list;
+	void *private_data;
+};
+
+typedef u32 __kernel_dev_t;
+
+typedef __kernel_dev_t dev_t;
+
+typedef __s64 time64_t;
+
+struct timespec64 {
+	time64_t tv_sec;
+	long tv_nsec;
+};
+
+enum rw_hint {
+	WRITE_LIFE_NOT_SET = 0,
+	WRITE_LIFE_NONE = 1,
+	WRITE_LIFE_SHORT = 2,
+	WRITE_LIFE_MEDIUM = 3,
+	WRITE_LIFE_LONG = 4,
+	WRITE_LIFE_EXTREME = 5,
+} __attribute__((mode(byte)));
+
+typedef u64 blkcnt_t;
+
+struct posix_acl;
+
+struct inode_operations;
+
+struct super_block;
+
+struct bdi_writeback;
+
+struct file_operations;
+
+struct file_lock_context;
+
+struct pipe_inode_info;
+
+struct cdev;
+
+struct fsnotify_mark_connector;
+
+struct fscrypt_inode_info;
+
+struct fsverity_info;
+
+struct inode {
+	umode_t i_mode;
+	unsigned short i_opflags;
+	kuid_t i_uid;
+	kgid_t i_gid;
+	unsigned int i_flags;
+	struct posix_acl *i_acl;
+	struct posix_acl *i_default_acl;
+	const struct inode_operations *i_op;
+	struct super_block *i_sb;
+	struct address_space *i_mapping;
+	void *i_security;
+	unsigned long i_ino;
+	union {
+		const unsigned int i_nlink;
+		unsigned int __i_nlink;
+	};
+	dev_t i_rdev;
+	loff_t i_size;
+	struct timespec64 i_atime;
+	struct timespec64 i_mtime;
+	struct timespec64 __i_ctime;
+	spinlock_t i_lock;
+	unsigned short i_bytes;
+	u8 i_blkbits;
+	enum rw_hint i_write_hint;
+	blkcnt_t i_blocks;
+	unsigned long i_state;
+	struct rw_semaphore i_rwsem;
+	unsigned long dirtied_when;
+	unsigned long dirtied_time_when;
+	struct hlist_node i_hash;
+	struct list_head i_io_list;
+	struct bdi_writeback *i_wb;
+	int i_wb_frn_winner;
+	u16 i_wb_frn_avg_time;
+	u16 i_wb_frn_history;
+	struct list_head i_lru;
+	struct list_head i_sb_list;
+	struct list_head i_wb_list;
+	union {
+		struct hlist_head i_dentry;
+		struct callback_head i_rcu;
+	};
+	atomic64_t i_version;
+	atomic64_t i_sequence;
+	atomic_t i_count;
+	atomic_t i_dio_count;
+	atomic_t i_writecount;
+	atomic_t i_readcount;
+	union {
+		const struct file_operations *i_fop;
+		void (*free_inode)(struct inode *);
+	};
+	struct file_lock_context *i_flctx;
+	struct address_space i_data;
+	struct list_head i_devices;
+	union {
+		struct pipe_inode_info *i_pipe;
+		struct cdev *i_cdev;
+		char *i_link;
+		unsigned int i_dir_seq;
+	};
+	__u32 i_generation;
+	__u32 i_fsnotify_mask;
+	struct fsnotify_mark_connector __attribute__((btf_type_tag("rcu"))) *i_fsnotify_marks;
+	struct fscrypt_inode_info *i_crypt_info;
+	struct fsverity_info *i_verity_info;
+	void *i_private;
+};
+
+struct dentry;
+
+struct delayed_call;
+
+struct mnt_idmap;
+
+struct iattr;
+
+struct path;
+
+struct kstat;
+
+struct fiemap_extent_info;
+
+struct fileattr;
+
+struct offset_ctx;
+
+struct inode_operations {
+	struct dentry * (*lookup)(struct inode *, struct dentry *, unsigned int);
+	const char * (*get_link)(struct dentry *, struct inode *, struct delayed_call *);
+	int (*permission)(struct mnt_idmap *, struct inode *, int);
+	struct posix_acl * (*get_inode_acl)(struct inode *, int, bool);
+	int (*readlink)(struct dentry *, char __attribute__((btf_type_tag("user"))) *, int);
+	int (*create)(struct mnt_idmap *, struct inode *, struct dentry *, umode_t, bool);
+	int (*link)(struct dentry *, struct inode *, struct dentry *);
+	int (*unlink)(struct inode *, struct dentry *);
+	int (*symlink)(struct mnt_idmap *, struct inode *, struct dentry *, const char *);
+	int (*mkdir)(struct mnt_idmap *, struct inode *, struct dentry *, umode_t);
+	int (*rmdir)(struct inode *, struct dentry *);
+	int (*mknod)(struct mnt_idmap *, struct inode *, struct dentry *, umode_t, dev_t);
+	int (*rename)(struct mnt_idmap *, struct inode *, struct dentry *, struct inode *, struct dentry *, unsigned int);
+	int (*setattr)(struct mnt_idmap *, struct dentry *, struct iattr *);
+	int (*getattr)(struct mnt_idmap *, const struct path *, struct kstat *, u32, unsigned int);
+	ssize_t (*listxattr)(struct dentry *, char *, size_t);
+	int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64, u64);
+	int (*update_time)(struct inode *, int);
+	int (*atomic_open)(struct inode *, struct dentry *, struct file *, unsigned int, umode_t);
+	int (*tmpfile)(struct mnt_idmap *, struct inode *, struct file *, umode_t);
+	struct posix_acl * (*get_acl)(struct mnt_idmap *, struct dentry *, int);
+	int (*set_acl)(struct mnt_idmap *, struct dentry *, struct posix_acl *, int);
+	int (*fileattr_set)(struct mnt_idmap *, struct dentry *, struct fileattr *);
+	int (*fileattr_get)(struct dentry *, struct fileattr *);
+	struct offset_ctx * (*get_offset_ctx)(struct inode *);
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct hlist_bl_node {
+	struct hlist_bl_node *next;
+	struct hlist_bl_node **pprev;
+};
+
+struct seqcount {
+	unsigned int sequence;
+};
+
+typedef struct seqcount seqcount_t;
+
+struct seqcount_spinlock {
+	seqcount_t seqcount;
+};
+
+typedef struct seqcount_spinlock seqcount_spinlock_t;
+
+struct qstr {
+	union {
+		struct {
+			u32 hash;
+			u32 len;
+		};
+		u64 hash_len;
+	};
+	const unsigned char *name;
+};
+
+struct lockref {
+	union {
+		__u64 lock_count;
+		struct {
+			spinlock_t lock;
+			int count;
+		};
+	};
+};
+
+struct dentry_operations;
+
+struct dentry {
+	unsigned int d_flags;
+	seqcount_spinlock_t d_seq;
+	struct hlist_bl_node d_hash;
+	struct dentry *d_parent;
+	struct qstr d_name;
+	struct inode *d_inode;
+	unsigned char d_iname[32];
+	struct lockref d_lockref;
+	const struct dentry_operations *d_op;
+	struct super_block *d_sb;
+	unsigned long d_time;
+	void *d_fsdata;
+	union {
+		struct list_head d_lru;
+		wait_queue_head_t *d_wait;
+	};
+	struct list_head d_child;
+	struct list_head d_subdirs;
+	union {
+		struct hlist_node d_alias;
+		struct hlist_bl_node d_in_lookup_hash;
+		struct callback_head d_rcu;
+	} d_u;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct vfsmount;
+
+struct dentry_operations {
+	int (*d_revalidate)(struct dentry *, unsigned int);
+	int (*d_weak_revalidate)(struct dentry *, unsigned int);
+	int (*d_hash)(const struct dentry *, struct qstr *);
+	int (*d_compare)(const struct dentry *, unsigned int, const char *, const struct qstr *);
+	int (*d_delete)(const struct dentry *);
+	int (*d_init)(struct dentry *);
+	void (*d_release)(struct dentry *);
+	void (*d_prune)(struct dentry *);
+	void (*d_iput)(struct dentry *, struct inode *);
+	char * (*d_dname)(struct dentry *, char *, int);
+	struct vfsmount * (*d_automount)(struct path *);
+	int (*d_manage)(const struct path *, bool);
+	struct dentry * (*d_real)(struct dentry *, const struct inode *);
+	int (*d_canonical_path)(const struct path *, struct path *);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct vfsmount {
+	struct dentry *mnt_root;
+	struct super_block *mnt_sb;
+	int mnt_flags;
+	struct mnt_idmap *mnt_idmap;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct hlist_bl_head {
+	struct hlist_bl_node *first;
+};
+
+struct mtd_info;
+
+typedef long long qsize_t;
+
+struct quota_format_type;
+
+struct mem_dqinfo {
+	struct quota_format_type *dqi_format;
+	int dqi_fmt_id;
+	struct list_head dqi_dirty_list;
+	unsigned long dqi_flags;
+	unsigned int dqi_bgrace;
+	unsigned int dqi_igrace;
+	qsize_t dqi_max_spc_limit;
+	qsize_t dqi_max_ino_limit;
+	void *dqi_priv;
+};
+
+struct quota_format_ops;
+
+struct quota_info {
+	unsigned int flags;
+	struct rw_semaphore dqio_sem;
+	struct inode *files[3];
+	struct mem_dqinfo info[3];
+	const struct quota_format_ops *ops[3];
+};
+
+struct rcu_sync {
+	int gp_state;
+	int gp_count;
+	wait_queue_head_t gp_wait;
+	struct callback_head cb_head;
+};
+
+struct percpu_rw_semaphore {
+	struct rcu_sync rss;
+	unsigned int __attribute__((btf_type_tag("percpu"))) *read_count;
+	struct rcuwait writer;
+	wait_queue_head_t waiters;
+	atomic_t block;
+	u64 android_oem_data1;
+};
+
+struct sb_writers {
+	unsigned short frozen;
+	unsigned short freeze_holders;
+	struct percpu_rw_semaphore rw_sem[3];
+};
+
+typedef struct {
+	__u8 b[16];
+} uuid_t;
+
+struct shrink_control;
+
+struct shrinker {
+	unsigned long (*count_objects)(struct shrinker *, struct shrink_control *);
+	unsigned long (*scan_objects)(struct shrinker *, struct shrink_control *);
+	long batch;
+	int seeks;
+	unsigned int flags;
+	struct list_head list;
+	int id;
+	atomic_long_t *nr_deferred;
+};
+
+struct list_lru_node;
+
+struct list_lru {
+	struct list_lru_node *node;
+	struct list_head list;
+	int shrinker_id;
+	bool memcg_aware;
+	struct xarray xa;
+};
+
+struct work_struct;
+
+typedef void (*work_func_t)(struct work_struct *);
+
+struct work_struct {
+	atomic_long_t data;
+	struct list_head entry;
+	work_func_t func;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct file_system_type;
+
+struct super_operations;
+
+struct dquot_operations;
+
+struct quotactl_ops;
+
+struct export_operations;
+
+struct xattr_handler;
+
+struct fscrypt_operations;
+
+struct fscrypt_keyring;
+
+struct fsverity_operations;
+
+struct unicode_map;
+
+struct block_device;
+
+struct backing_dev_info;
+
+struct workqueue_struct;
+
+struct user_namespace;
+
+struct super_block {
+	struct list_head s_list;
+	dev_t s_dev;
+	unsigned char s_blocksize_bits;
+	unsigned long s_blocksize;
+	loff_t s_maxbytes;
+	struct file_system_type *s_type;
+	const struct super_operations *s_op;
+	const struct dquot_operations *dq_op;
+	const struct quotactl_ops *s_qcop;
+	const struct export_operations *s_export_op;
+	unsigned long s_flags;
+	unsigned long s_iflags;
+	unsigned long s_magic;
+	struct dentry *s_root;
+	struct rw_semaphore s_umount;
+	int s_count;
+	atomic_t s_active;
+	void *s_security;
+	const struct xattr_handler **s_xattr;
+	const struct fscrypt_operations *s_cop;
+	struct fscrypt_keyring *s_master_keys;
+	const struct fsverity_operations *s_vop;
+	struct unicode_map *s_encoding;
+	__u16 s_encoding_flags;
+	struct hlist_bl_head s_roots;
+	struct list_head s_mounts;
+	struct block_device *s_bdev;
+	struct backing_dev_info *s_bdi;
+	struct mtd_info *s_mtd;
+	struct hlist_node s_instances;
+	unsigned int s_quota_types;
+	struct quota_info s_dquot;
+	struct sb_writers s_writers;
+	void *s_fs_info;
+	u32 s_time_gran;
+	time64_t s_time_min;
+	time64_t s_time_max;
+	__u32 s_fsnotify_mask;
+	struct fsnotify_mark_connector __attribute__((btf_type_tag("rcu"))) *s_fsnotify_marks;
+	char s_id[32];
+	uuid_t s_uuid;
+	unsigned int s_max_links;
+	struct mutex s_vfs_rename_mutex;
+	const char *s_subtype;
+	const struct dentry_operations *s_d_op;
+	int cleancache_poolid;
+	struct shrinker s_shrink;
+	atomic_long_t s_remove_count;
+	atomic_long_t s_fsnotify_connectors;
+	int s_readonly_remount;
+	errseq_t s_wb_err;
+	struct workqueue_struct *s_dio_done_wq;
+	struct hlist_head s_pins;
+	struct user_namespace *s_user_ns;
+	struct list_lru s_dentry_lru;
+	struct list_lru s_inode_lru;
+	struct callback_head rcu;
+	struct work_struct destroy_work;
+	struct mutex s_sync_lock;
+	int s_stack_depth;
+	long: 0;
+	spinlock_t s_inode_list_lock;
+	struct list_head s_inodes;
+	spinlock_t s_inode_wblist_lock;
+	struct list_head s_inodes_wb;
+	long: 64;
+	long: 64;
+};
+
+struct lock_class_key {};
+
+struct fs_context;
+
+struct fs_parameter_spec;
+
+struct file_system_type {
+	const char *name;
+	int fs_flags;
+	int (*init_fs_context)(struct fs_context *);
+	const struct fs_parameter_spec *parameters;
+	struct dentry * (*mount)(struct file_system_type *, int, const char *, void *);
+	void (*kill_sb)(struct super_block *);
+	struct module *owner;
+	struct file_system_type *next;
+	struct hlist_head fs_supers;
+	struct lock_class_key s_lock_key;
+	struct lock_class_key s_umount_key;
+	struct lock_class_key s_vfs_rename_key;
+	struct lock_class_key s_writers_key[3];
+	struct lock_class_key i_lock_key;
+	struct lock_class_key i_mutex_key;
+	struct lock_class_key invalidate_lock_key;
+	struct lock_class_key i_mutex_dir_key;
+};
+
+struct fc_log;
+
+struct p_log {
+	const char *prefix;
+	struct fc_log *log;
+};
+
+enum fs_context_purpose {
+	FS_CONTEXT_FOR_MOUNT = 0,
+	FS_CONTEXT_FOR_SUBMOUNT = 1,
+	FS_CONTEXT_FOR_RECONFIGURE = 2,
+};
+
+enum fs_context_phase {
+	FS_CONTEXT_CREATE_PARAMS = 0,
+	FS_CONTEXT_CREATING = 1,
+	FS_CONTEXT_AWAITING_MOUNT = 2,
+	FS_CONTEXT_AWAITING_RECONF = 3,
+	FS_CONTEXT_RECONF_PARAMS = 4,
+	FS_CONTEXT_RECONFIGURING = 5,
+	FS_CONTEXT_FAILED = 6,
+};
+
+struct fs_context_operations;
+
+struct net;
+
+struct cred;
+
+struct fs_context {
+	const struct fs_context_operations *ops;
+	struct mutex uapi_mutex;
+	struct file_system_type *fs_type;
+	void *fs_private;
+	void *sget_key;
+	struct dentry *root;
+	struct user_namespace *user_ns;
+	struct net *net_ns;
+	const struct cred *cred;
+	struct p_log log;
+	const char *source;
+	void *security;
+	void *s_fs_info;
+	unsigned int sb_flags;
+	unsigned int sb_flags_mask;
+	unsigned int s_iflags;
+	enum fs_context_purpose purpose: 8;
+	enum fs_context_phase phase: 8;
+	bool need_free: 1;
+	bool global: 1;
+	bool oldapi: 1;
+	bool exclusive: 1;
+};
+
+struct fs_parameter;
+
+struct fs_context_operations {
+	void (*free)(struct fs_context *);
+	int (*dup)(struct fs_context *, struct fs_context *);
+	int (*parse_param)(struct fs_context *, struct fs_parameter *);
+	int (*parse_monolithic)(struct fs_context *, void *);
+	int (*get_tree)(struct fs_context *);
+	int (*reconfigure)(struct fs_context *);
+};
+
+enum fs_value_type {
+	fs_value_is_undefined = 0,
+	fs_value_is_flag = 1,
+	fs_value_is_string = 2,
+	fs_value_is_blob = 3,
+	fs_value_is_filename = 4,
+	fs_value_is_file = 5,
+};
+
+struct filename;
+
+struct fs_parameter {
+	const char *key;
+	enum fs_value_type type: 8;
+	union {
+		char *string;
+		void *blob;
+		struct filename *name;
+		struct file *file;
+	};
+	size_t size;
+	int dirfd;
+};
+
+struct audit_names;
+
+struct filename {
+	const char *name;
+	const char __attribute__((btf_type_tag("user"))) *uptr;
+	atomic_t refcnt;
+	struct audit_names *aname;
+	const char iname[0];
+};
+
+typedef unsigned int fmode_t;
+
+struct qrwlock {
+	union {
+		atomic_t cnts;
+		struct {
+			u8 wlocked;
+			u8 __lstate[3];
+		};
+	};
+	arch_spinlock_t wait_lock;
+};
+
+typedef struct qrwlock arch_rwlock_t;
+
+typedef struct {
+	arch_rwlock_t raw_lock;
+} rwlock_t;
+
+enum pid_type {
+	PIDTYPE_PID = 0,
+	PIDTYPE_TGID = 1,
+	PIDTYPE_PGID = 2,
+	PIDTYPE_SID = 3,
+	PIDTYPE_MAX = 4,
+};
+
+struct pid;
+
+struct fown_struct {
+	rwlock_t lock;
+	struct pid *pid;
+	enum pid_type pid_type;
+	kuid_t uid;
+	kuid_t euid;
+	int signum;
+};
+
+struct file_ra_state {
+	unsigned long start;
+	unsigned int size;
+	unsigned int async_size;
+	unsigned int ra_pages;
+	unsigned int mmap_miss;
+	loff_t prev_pos;
+};
+
+struct path {
+	struct vfsmount *mnt;
+	struct dentry *dentry;
+};
+
+struct file {
+	union {
+		struct llist_node f_llist;
+		struct callback_head f_rcuhead;
+		unsigned int f_iocb_flags;
+	};
+	spinlock_t f_lock;
+	fmode_t f_mode;
+	atomic_long_t f_count;
+	struct mutex f_pos_lock;
+	loff_t f_pos;
+	unsigned int f_flags;
+	struct fown_struct f_owner;
+	const struct cred *f_cred;
+	struct file_ra_state f_ra;
+	struct path f_path;
+	struct inode *f_inode;
+	const struct file_operations *f_op;
+	u64 f_version;
+	void *f_security;
+	void *private_data;
+	struct hlist_head *f_ep;
+	struct address_space *f_mapping;
+	errseq_t f_wb_err;
+	errseq_t f_sb_err;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct upid {
+	int nr;
+	struct pid_namespace *ns;
+};
+
+struct pid {
+	refcount_t count;
+	unsigned int level;
+	spinlock_t lock;
+	struct hlist_head tasks[4];
+	struct hlist_head inodes;
+	wait_queue_head_t wait_pidfd;
+	struct callback_head rcu;
+	struct upid numbers[0];
+};
+
+struct idr {
+	struct xarray idr_rt;
+	unsigned int idr_base;
+	unsigned int idr_next;
+};
+
+struct proc_ns_operations;
+
+struct ns_common {
+	atomic_long_t stashed;
+	const struct proc_ns_operations *ops;
+	unsigned int inum;
+	refcount_t count;
+};
+
+struct ucounts;
+
+struct pid_namespace {
+	struct idr idr;
+	struct callback_head rcu;
+	unsigned int pid_allocated;
+	struct task_struct *child_reaper;
+	struct kmem_cache *pid_cachep;
+	unsigned int level;
+	struct pid_namespace *parent;
+	struct user_namespace *user_ns;
+	struct ucounts *ucounts;
+	int reboot;
+	struct ns_common ns;
+	int memfd_noexec_scope;
+};
+
+struct thread_info {
+	unsigned long flags;
+	u64 ttbr0;
+	union {
+		u64 preempt_count;
+		struct {
+			u32 count;
+			u32 need_resched;
+		} preempt;
+	};
+	void *scs_base;
+	void *scs_sp;
+	u32 cpu;
+};
+
+struct load_weight {
+	unsigned long weight;
+	u32 inv_weight;
+};
+
+struct sched_avg {
+	u64 last_update_time;
+	u64 load_sum;
+	u64 runnable_sum;
+	u32 util_sum;
+	u32 period_contrib;
+	unsigned long load_avg;
+	unsigned long runnable_avg;
+	unsigned long util_avg;
+	unsigned int util_est;
+	u32 reserved;
+};
+
+struct cfs_rq;
+
+struct sched_entity {
+	struct load_weight load;
+	struct rb_node run_node;
+	u64 deadline;
+	u64 min_vruntime;
+	struct list_head group_node;
+	unsigned int on_rq;
+	u64 exec_start;
+	u64 sum_exec_runtime;
+	u64 prev_sum_exec_runtime;
+	u64 vruntime;
+	s64 vlag;
+	u64 slice;
+	u64 nr_migrations;
+	int depth;
+	struct sched_entity *parent;
+	struct cfs_rq *cfs_rq;
+	struct cfs_rq *my_q;
+	unsigned long runnable_weight;
+	long: 64;
+	long: 64;
+	struct sched_avg avg;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct sched_rt_entity {
+	struct list_head run_list;
+	unsigned long timeout;
+	unsigned long watchdog_stamp;
+	unsigned int time_slice;
+	unsigned short on_rq;
+	unsigned short on_list;
+	struct sched_rt_entity *back;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct sched_dl_entity {
+	struct rb_node rb_node;
+	u64 dl_runtime;
+	u64 dl_deadline;
+	u64 dl_period;
+	u64 dl_bw;
+	u64 dl_density;
+	s64 runtime;
+	u64 deadline;
+	unsigned int flags;
+	unsigned int dl_throttled: 1;
+	unsigned int dl_yielded: 1;
+	unsigned int dl_non_contending: 1;
+	unsigned int dl_overrun: 1;
+	struct hrtimer dl_timer;
+	struct hrtimer inactive_timer;
+	struct sched_dl_entity *pi_se;
+};
+
+struct uclamp_se {
+	unsigned int value: 11;
+	unsigned int bucket_id: 5;
+	unsigned int active: 1;
+	unsigned int user_defined: 1;
+};
+
+struct sched_statistics {
+	u64 wait_start;
+	u64 wait_max;
+	u64 wait_count;
+	u64 wait_sum;
+	u64 iowait_count;
+	u64 iowait_sum;
+	u64 sleep_start;
+	u64 sleep_max;
+	s64 sum_sleep_runtime;
+	u64 block_start;
+	u64 block_max;
+	s64 sum_block_runtime;
+	u64 exec_max;
+	u64 slice_max;
+	u64 nr_migrations_cold;
+	u64 nr_failed_migrations_affine;
+	u64 nr_failed_migrations_running;
+	u64 nr_failed_migrations_hot;
+	u64 nr_forced_migrations;
+	u64 nr_wakeups;
+	u64 nr_wakeups_sync;
+	u64 nr_wakeups_migrate;
+	u64 nr_wakeups_local;
+	u64 nr_wakeups_remote;
+	u64 nr_wakeups_affine;
+	u64 nr_wakeups_affine_attempts;
+	u64 nr_wakeups_passive;
+	u64 nr_wakeups_idle;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+typedef struct cpumask cpumask_t;
+
+union rcu_special {
+	struct {
+		u8 blocked;
+		u8 need_qs;
+		u8 exp_hint;
+		u8 need_mb;
+	} b;
+	u32 s;
+};
+
+struct sched_info {
+	unsigned long pcount;
+	unsigned long long run_delay;
+	unsigned long long last_arrival;
+	unsigned long long last_queued;
+};
+
+struct plist_node {
+	int prio;
+	struct list_head prio_list;
+	struct list_head node_list;
+};
+
+typedef int __kernel_clockid_t;
+
+typedef __kernel_clockid_t clockid_t;
+
+enum timespec_type {
+	TT_NONE = 0,
+	TT_NATIVE = 1,
+	TT_COMPAT = 2,
+};
+
+struct __kernel_timespec;
+
+struct old_timespec32;
+
+struct pollfd;
+
+struct restart_block {
+	unsigned long arch_data;
+	long (*fn)(struct restart_block *);
+	union {
+		struct {
+			u32 __attribute__((btf_type_tag("user"))) *uaddr;
+			u32 val;
+			u32 flags;
+			u32 bitset;
+			u64 time;
+			u32 __attribute__((btf_type_tag("user"))) *uaddr2;
+		} futex;
+		struct {
+			clockid_t clockid;
+			enum timespec_type type;
+			union {
+				struct __kernel_timespec __attribute__((btf_type_tag("user"))) *rmtp;
+				struct old_timespec32 __attribute__((btf_type_tag("user"))) *compat_rmtp;
+			};
+			u64 expires;
+		} nanosleep;
+		struct {
+			struct pollfd __attribute__((btf_type_tag("user"))) *ufds;
+			int nfds;
+			int has_timeout;
+			unsigned long tv_sec;
+			unsigned long tv_nsec;
+		} poll;
+	};
+};
+
+typedef int __kernel_pid_t;
+
+typedef __kernel_pid_t pid_t;
+
+struct prev_cputime {
+	u64 utime;
+	u64 stime;
+	raw_spinlock_t lock;
+};
+
+struct timerqueue_head {
+	struct rb_root_cached rb_root;
+};
+
+struct posix_cputimer_base {
+	u64 nextevt;
+	struct timerqueue_head tqhead;
+};
+
+struct posix_cputimers {
+	struct posix_cputimer_base bases[3];
+	unsigned int timers_active;
+	unsigned int expiry_active;
+};
+
+struct posix_cputimers_work {
+	struct callback_head work;
+	struct mutex mutex;
+	unsigned int scheduled;
+};
+
+typedef struct {
+	unsigned long sig[1];
+} sigset_t;
+
+struct sigpending {
+	struct list_head list;
+	sigset_t signal;
+};
+
+struct seccomp_filter;
+
+struct seccomp {
+	int mode;
+	atomic_t filter_count;
+	struct seccomp_filter *filter;
+};
+
+struct syscall_user_dispatch {};
+
+struct wake_q_node {
+	struct wake_q_node *next;
+};
+
+struct task_io_accounting {
+	u64 rchar;
+	u64 wchar;
+	u64 syscr;
+	u64 syscw;
+	u64 syscfs;
+	u64 read_bytes;
+	u64 write_bytes;
+	u64 cancelled_write_bytes;
+};
+
+typedef struct {
+	unsigned long bits[1];
+} nodemask_t;
+
+struct arch_tlbflush_unmap_batch {};
+
+struct tlbflush_unmap_batch {
+	struct arch_tlbflush_unmap_batch arch;
+	bool flush_required;
+	bool writable;
+};
+
+struct page;
+
+struct page_frag {
+	struct page *page;
+	__u32 offset;
+	__u32 size;
+};
+
+struct kmap_ctrl {};
+
+struct timer_list {
+	struct hlist_node entry;
+	unsigned long expires;
+	void (*function)(struct timer_list *);
+	u32 flags;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct llist_head {
+	struct llist_node *first;
+};
+
+struct cpu_context {
+	unsigned long x19;
+	unsigned long x20;
+	unsigned long x21;
+	unsigned long x22;
+	unsigned long x23;
+	unsigned long x24;
+	unsigned long x25;
+	unsigned long x26;
+	unsigned long x27;
+	unsigned long x28;
+	unsigned long fp;
+	unsigned long sp;
+	unsigned long pc;
+};
+
+typedef unsigned __int128 __uint128_t;
+
+struct user_fpsimd_state {
+	__uint128_t vregs[32];
+	__u32 fpsr;
+	__u32 fpcr;
+	__u32 __reserved[2];
+};
+
+enum fp_type {
+	FP_STATE_CURRENT = 0,
+	FP_STATE_FPSIMD = 1,
+	FP_STATE_SVE = 2,
+};
+
+struct debug_info {
+	int suspended_step;
+	int bps_disabled;
+	int wps_disabled;
+	struct perf_event *hbp_break[16];
+	struct perf_event *hbp_watch[16];
+};
+
+struct ptrauth_key {
+	unsigned long lo;
+	unsigned long hi;
+};
+
+struct ptrauth_keys_user {
+	struct ptrauth_key apia;
+	struct ptrauth_key apib;
+	struct ptrauth_key apda;
+	struct ptrauth_key apdb;
+	struct ptrauth_key apga;
+};
+
+struct ptrauth_keys_kernel {
+	struct ptrauth_key apia;
+};
+
+struct thread_struct {
+	struct cpu_context cpu_context;
+	long: 64;
+	struct {
+		unsigned long tp_value;
+		unsigned long tp2_value;
+		struct user_fpsimd_state fpsimd_state;
+	} uw;
+	enum fp_type fp_type;
+	unsigned int fpsimd_cpu;
+	void *sve_state;
+	void *sme_state;
+	unsigned int vl[2];
+	unsigned int vl_onexec[2];
+	unsigned long fault_address;
+	unsigned long fault_code;
+	struct debug_info debug;
+	struct ptrauth_keys_user keys_user;
+	struct ptrauth_keys_kernel keys_kernel;
+	u64 mte_ctrl;
+	u64 sctlr_user;
+	u64 svcr;
+	u64 tpidr2_el0;
+	u64 android_vendor_data1;
+};
+
+struct sched_class;
+
+struct task_group;
+
+struct rcu_node;
+
+struct key;
+
+struct nameidata;
+
+struct fs_struct;
+
+struct files_struct;
+
+struct io_uring_task;
+
+struct nsproxy;
+
+struct signal_struct;
+
+struct sighand_struct;
+
+struct audit_context;
+
+struct rt_mutex_waiter;
+
+struct bio_list;
+
+struct blk_plug;
+
+struct reclaim_state;
+
+struct io_context;
+
+struct capture_control;
+
+struct kernel_siginfo;
+
+typedef struct kernel_siginfo kernel_siginfo_t;
+
+struct css_set;
+
+struct robust_list_head;
+
+struct compat_robust_list_head;
+
+struct futex_pi_state;
+
+struct task_delay_info;
+
+struct kunit;
+
+struct mem_cgroup;
+
+struct gendisk;
+
+struct uprobe_task;
+
+struct vm_struct;
+
+struct bpf_local_storage;
+
+struct bpf_run_ctx;
+
+struct task_struct {
+	struct thread_info thread_info;
+	unsigned int __state;
+	unsigned int saved_state;
+	void *stack;
+	refcount_t usage;
+	unsigned int flags;
+	unsigned int ptrace;
+	int on_cpu;
+	struct __call_single_node wake_entry;
+	unsigned int wakee_flips;
+	unsigned long wakee_flip_decay_ts;
+	struct task_struct *last_wakee;
+	int recent_used_cpu;
+	int wake_cpu;
+	int on_rq;
+	int prio;
+	int static_prio;
+	int normal_prio;
+	unsigned int rt_priority;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct sched_entity se;
+	struct sched_rt_entity rt;
+	struct sched_dl_entity dl;
+	const struct sched_class *sched_class;
+	struct task_group *sched_task_group;
+	struct uclamp_se uclamp_req[2];
+	struct uclamp_se uclamp[2];
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct sched_statistics stats;
+	struct hlist_head preempt_notifiers;
+	unsigned int policy;
+	int nr_cpus_allowed;
+	const cpumask_t *cpus_ptr;
+	cpumask_t *user_cpus_ptr;
+	cpumask_t cpus_mask;
+	void *migration_pending;
+	unsigned short migration_disabled;
+	unsigned short migration_flags;
+	int rcu_read_lock_nesting;
+	union rcu_special rcu_read_unlock_special;
+	struct list_head rcu_node_entry;
+	struct rcu_node *rcu_blocked_node;
+	unsigned long rcu_tasks_nvcsw;
+	u8 rcu_tasks_holdout;
+	u8 rcu_tasks_idx;
+	int rcu_tasks_idle_cpu;
+	struct list_head rcu_tasks_holdout_list;
+	int trc_reader_nesting;
+	int trc_ipi_to_cpu;
+	union rcu_special trc_reader_special;
+	struct list_head trc_holdout_list;
+	struct list_head trc_blkd_node;
+	int trc_blkd_cpu;
+	struct sched_info sched_info;
+	struct list_head tasks;
+	struct plist_node pushable_tasks;
+	struct rb_node pushable_dl_tasks;
+	struct mm_struct *mm;
+	struct mm_struct *active_mm;
+	int exit_state;
+	int exit_code;
+	int exit_signal;
+	int pdeath_signal;
+	unsigned long jobctl;
+	unsigned int personality;
+	unsigned int sched_reset_on_fork: 1;
+	unsigned int sched_contributes_to_load: 1;
+	unsigned int sched_migrated: 1;
+	long: 29;
+	unsigned int sched_remote_wakeup: 1;
+	unsigned int in_execve: 1;
+	unsigned int in_iowait: 1;
+	unsigned int in_user_fault: 1;
+	unsigned int in_lru_fault: 1;
+	unsigned int no_cgroup_migration: 1;
+	unsigned int frozen: 1;
+	unsigned int use_memdelay: 1;
+	unsigned int in_memstall: 1;
+	unsigned int in_page_owner: 1;
+	unsigned int in_eventfd: 1;
+	unsigned int in_thrashing: 1;
+	unsigned long atomic_flags;
+	struct restart_block restart_block;
+	pid_t pid;
+	pid_t tgid;
+	unsigned long stack_canary;
+	struct task_struct __attribute__((btf_type_tag("rcu"))) *real_parent;
+	struct task_struct __attribute__((btf_type_tag("rcu"))) *parent;
+	struct list_head children;
+	struct list_head sibling;
+	struct task_struct *group_leader;
+	struct list_head ptraced;
+	struct list_head ptrace_entry;
+	struct pid *thread_pid;
+	struct hlist_node pid_links[4];
+	struct list_head thread_group;
+	struct list_head thread_node;
+	struct completion *vfork_done;
+	int __attribute__((btf_type_tag("user"))) *set_child_tid;
+	int __attribute__((btf_type_tag("user"))) *clear_child_tid;
+	void *worker_private;
+	u64 utime;
+	u64 stime;
+	u64 gtime;
+	u64 *time_in_state;
+	unsigned int max_state;
+	struct prev_cputime prev_cputime;
+	unsigned long nvcsw;
+	unsigned long nivcsw;
+	u64 start_time;
+	u64 start_boottime;
+	unsigned long min_flt;
+	unsigned long maj_flt;
+	struct posix_cputimers posix_cputimers;
+	struct posix_cputimers_work posix_cputimers_work;
+	const struct cred __attribute__((btf_type_tag("rcu"))) *ptracer_cred;
+	const struct cred __attribute__((btf_type_tag("rcu"))) *real_cred;
+	const struct cred __attribute__((btf_type_tag("rcu"))) *cred;
+	struct key *cached_requested_key;
+	char comm[16];
+	struct nameidata *nameidata;
+	unsigned long last_switch_count;
+	unsigned long last_switch_time;
+	struct fs_struct *fs;
+	struct files_struct *files;
+	struct io_uring_task *io_uring;
+	struct nsproxy *nsproxy;
+	struct signal_struct *signal;
+	struct sighand_struct __attribute__((btf_type_tag("rcu"))) *sighand;
+	sigset_t blocked;
+	sigset_t real_blocked;
+	sigset_t saved_sigmask;
+	struct sigpending pending;
+	unsigned long sas_ss_sp;
+	size_t sas_ss_size;
+	unsigned int sas_ss_flags;
+	struct callback_head *task_works;
+	struct audit_context *audit_context;
+	kuid_t loginuid;
+	unsigned int sessionid;
+	struct seccomp seccomp;
+	struct syscall_user_dispatch syscall_dispatch;
+	u64 parent_exec_id;
+	u64 self_exec_id;
+	spinlock_t alloc_lock;
+	raw_spinlock_t pi_lock;
+	struct wake_q_node wake_q;
+	int wake_q_count;
+	struct rb_root_cached pi_waiters;
+	struct task_struct *pi_top_task;
+	struct rt_mutex_waiter *pi_blocked_on;
+	void *journal_info;
+	struct bio_list *bio_list;
+	struct blk_plug *plug;
+	struct reclaim_state *reclaim_state;
+	struct io_context *io_context;
+	struct capture_control *capture_control;
+	unsigned long ptrace_message;
+	kernel_siginfo_t *last_siginfo;
+	struct task_io_accounting ioac;
+	unsigned int psi_flags;
+	u64 acct_rss_mem1;
+	u64 acct_vm_mem1;
+	u64 acct_timexpd;
+	nodemask_t mems_allowed;
+	seqcount_spinlock_t mems_allowed_seq;
+	int cpuset_mem_spread_rotor;
+	int cpuset_slab_spread_rotor;
+	struct css_set __attribute__((btf_type_tag("rcu"))) *cgroups;
+	struct list_head cg_list;
+	struct robust_list_head __attribute__((btf_type_tag("user"))) *robust_list;
+	struct compat_robust_list_head __attribute__((btf_type_tag("user"))) *compat_robust_list;
+	struct list_head pi_state_list;
+	struct futex_pi_state *pi_state_cache;
+	struct mutex futex_exit_mutex;
+	unsigned int futex_state;
+	struct perf_event_context *perf_event_ctxp;
+	struct mutex perf_event_mutex;
+	struct list_head perf_event_list;
+	struct tlbflush_unmap_batch tlb_ubc;
+	struct pipe_inode_info *splice_pipe;
+	struct page_frag task_frag;
+	struct task_delay_info *delays;
+	int nr_dirtied;
+	int nr_dirtied_pause;
+	unsigned long dirty_paused_when;
+	u64 timer_slack_ns;
+	u64 default_timer_slack_ns;
+	struct kunit *kunit_test;
+	unsigned long trace_recursion;
+	struct mem_cgroup *memcg_in_oom;
+	gfp_t memcg_oom_gfp_mask;
+	int memcg_oom_order;
+	unsigned int memcg_nr_pages_over_high;
+	struct mem_cgroup *active_memcg;
+	struct gendisk *throttle_disk;
+	struct uprobe_task *utask;
+	struct kmap_ctrl kmap_ctrl;
+	struct callback_head rcu;
+	refcount_t rcu_users;
+	int pagefault_disabled;
+	struct task_struct *oom_reaper_list;
+	struct timer_list oom_reaper_timer;
+	struct vm_struct *stack_vm_area;
+	refcount_t stack_refcount;
+	void *security;
+	struct bpf_local_storage __attribute__((btf_type_tag("rcu"))) *bpf_storage;
+	struct bpf_run_ctx *bpf_ctx;
+	u64 android_vendor_data1[64];
+	u64 android_oem_data1[6];
+	struct llist_head kretprobe_instances;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+	u64 android_kabi_reserved5;
+	u64 android_kabi_reserved6;
+	u64 android_kabi_reserved7;
+	u64 android_kabi_reserved8;
+	long: 64;
+	struct thread_struct thread;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct seqcount_raw_spinlock {
+	seqcount_t seqcount;
+};
+
+typedef struct seqcount_raw_spinlock seqcount_raw_spinlock_t;
+
+struct hrtimer_cpu_base;
+
+struct hrtimer_clock_base {
+	struct hrtimer_cpu_base *cpu_base;
+	unsigned int index;
+	clockid_t clockid;
+	seqcount_raw_spinlock_t seq;
+	struct hrtimer *running;
+	struct timerqueue_head active;
+	ktime_t (*get_time)();
+	ktime_t offset;
+};
+
+struct hrtimer_cpu_base {
+	raw_spinlock_t lock;
+	unsigned int cpu;
+	unsigned int active_bases;
+	unsigned int clock_was_set_seq;
+	unsigned int hres_active: 1;
+	unsigned int in_hrtirq: 1;
+	unsigned int hang_detected: 1;
+	unsigned int softirq_activated: 1;
+	unsigned int online: 1;
+	unsigned int nr_events;
+	unsigned short nr_retries;
+	unsigned short nr_hangs;
+	unsigned int max_hang_time;
+	ktime_t expires_next;
+	struct hrtimer *next_timer;
+	ktime_t softirq_expires_next;
+	struct hrtimer *softirq_next_timer;
+	struct hrtimer_clock_base clock_base[8];
+};
+
+struct rq;
+
+struct rq_flags;
+
+struct affinity_context;
+
+struct sched_class {
+	int uclamp_enabled;
+	void (*enqueue_task)(struct rq *, struct task_struct *, int);
+	void (*dequeue_task)(struct rq *, struct task_struct *, int);
+	void (*yield_task)(struct rq *);
+	bool (*yield_to_task)(struct rq *, struct task_struct *);
+	void (*check_preempt_curr)(struct rq *, struct task_struct *, int);
+	struct task_struct * (*pick_next_task)(struct rq *);
+	void (*put_prev_task)(struct rq *, struct task_struct *);
+	void (*set_next_task)(struct rq *, struct task_struct *, bool);
+	int (*balance)(struct rq *, struct task_struct *, struct rq_flags *);
+	int (*select_task_rq)(struct task_struct *, int, int);
+	struct task_struct * (*pick_task)(struct rq *);
+	void (*migrate_task_rq)(struct task_struct *, int);
+	void (*task_woken)(struct rq *, struct task_struct *);
+	void (*set_cpus_allowed)(struct task_struct *, struct affinity_context *);
+	void (*rq_online)(struct rq *);
+	void (*rq_offline)(struct rq *);
+	struct rq * (*find_lock_rq)(struct task_struct *, struct rq *);
+	void (*task_tick)(struct rq *, struct task_struct *, int);
+	void (*task_fork)(struct task_struct *);
+	void (*task_dead)(struct task_struct *);
+	void (*switched_from)(struct rq *, struct task_struct *);
+	void (*switched_to)(struct rq *, struct task_struct *);
+	void (*prio_changed)(struct rq *, struct task_struct *, int);
+	unsigned int (*get_rr_interval)(struct rq *, struct task_struct *);
+	void (*update_curr)(struct rq *);
+	void (*task_change_group)(struct task_struct *);
+};
+
+typedef struct {} lockdep_map_p;
+
+struct maple_tree {
+	union {
+		spinlock_t ma_lock;
+		lockdep_map_p ma_external_lock;
+	};
+	unsigned int ma_flags;
+	void __attribute__((btf_type_tag("rcu"))) *ma_root;
+};
+
+typedef u64 pgdval_t;
+
+typedef struct {
+	pgdval_t pgd;
+} pgd_t;
+
+struct percpu_counter {
+	raw_spinlock_t lock;
+	s64 count;
+	struct list_head list;
+	s32 __attribute__((btf_type_tag("percpu"))) *counters;
+};
+
+typedef struct {
+	atomic64_t id;
+	void *sigpage;
+	refcount_t pinned;
+	void *vdso;
+	unsigned long flags;
+} mm_context_t;
+
+struct xol_area;
+
+struct uprobes_state {
+	struct xol_area *xol_area;
+};
+
+struct linux_binfmt;
+
+struct kioctx_table;
+
+struct mmu_notifier_subscriptions;
+
+struct mm_struct {
+	struct {
+		struct {
+			atomic_t mm_count;
+			long: 64;
+			long: 64;
+			long: 64;
+			long: 64;
+			long: 64;
+			long: 64;
+			long: 64;
+		};
+		struct maple_tree mm_mt;
+		unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long);
+		unsigned long mmap_base;
+		unsigned long mmap_legacy_base;
+		unsigned long task_size;
+		pgd_t *pgd;
+		atomic_t membarrier_state;
+		atomic_t mm_users;
+		atomic_long_t pgtables_bytes;
+		int map_count;
+		spinlock_t page_table_lock;
+		struct rw_semaphore mmap_lock;
+		struct list_head mmlist;
+		int mm_lock_seq;
+		unsigned long hiwater_rss;
+		unsigned long hiwater_vm;
+		unsigned long total_vm;
+		unsigned long locked_vm;
+		atomic64_t pinned_vm;
+		unsigned long data_vm;
+		unsigned long exec_vm;
+		unsigned long stack_vm;
+		unsigned long def_flags;
+		seqcount_t write_protect_seq;
+		spinlock_t arg_lock;
+		unsigned long start_code;
+		unsigned long end_code;
+		unsigned long start_data;
+		unsigned long end_data;
+		unsigned long start_brk;
+		unsigned long brk;
+		unsigned long start_stack;
+		unsigned long arg_start;
+		unsigned long arg_end;
+		unsigned long env_start;
+		unsigned long env_end;
+		unsigned long saved_auxv[50];
+		struct percpu_counter rss_stat[4];
+		struct linux_binfmt *binfmt;
+		mm_context_t context;
+		unsigned long flags;
+		spinlock_t ioctx_lock;
+		struct kioctx_table __attribute__((btf_type_tag("rcu"))) *ioctx_table;
+		struct task_struct __attribute__((btf_type_tag("rcu"))) *owner;
+		struct user_namespace *user_ns;
+		struct file __attribute__((btf_type_tag("rcu"))) *exe_file;
+		struct mmu_notifier_subscriptions *notifier_subscriptions;
+		atomic_t tlb_flush_pending;
+		atomic_t tlb_flush_batched;
+		struct uprobes_state uprobes_state;
+		struct work_struct async_put_work;
+		struct {
+			struct list_head list;
+			unsigned long bitmap;
+			struct mem_cgroup *memcg;
+		} lru_gen;
+		u64 android_kabi_reserved1;
+		u64 android_backport_reserved1;
+		long: 64;
+		long: 64;
+		long: 64;
+		long: 64;
+		long: 64;
+	};
+	unsigned long cpu_bitmap[0];
+};
+
+struct linux_binprm;
+
+struct coredump_params;
+
+struct linux_binfmt {
+	struct list_head lh;
+	struct module *module;
+	int (*load_binary)(struct linux_binprm *);
+	int (*load_shlib)(struct file *);
+	int (*core_dump)(struct coredump_params *);
+	unsigned long min_coredump;
+};
+
+struct rlimit {
+	__kernel_ulong_t rlim_cur;
+	__kernel_ulong_t rlim_max;
+};
+
+struct linux_binprm {
+	struct vm_area_struct *vma;
+	unsigned long vma_pages;
+	struct mm_struct *mm;
+	unsigned long p;
+	unsigned long argmin;
+	unsigned int have_execfd: 1;
+	unsigned int execfd_creds: 1;
+	unsigned int secureexec: 1;
+	unsigned int point_of_no_return: 1;
+	struct file *executable;
+	struct file *interpreter;
+	struct file *file;
+	struct cred *cred;
+	int unsafe;
+	unsigned int per_clear;
+	int argc;
+	int envc;
+	const char *filename;
+	const char *interp;
+	const char *fdpath;
+	unsigned int interp_flags;
+	int execfd;
+	unsigned long loader;
+	unsigned long exec;
+	struct rlimit rlim_stack;
+	char buf[256];
+};
+
+typedef unsigned long vm_flags_t;
+
+typedef u64 pteval_t;
+
+typedef struct {
+	pteval_t pgprot;
+} pgprot_t;
+
+struct userfaultfd_ctx;
+
+struct vm_userfaultfd_ctx {
+	struct userfaultfd_ctx *ctx;
+};
+
+struct vma_lock;
+
+struct anon_vma;
+
+struct vm_operations_struct;
+
+struct anon_vma_name;
+
+struct vm_area_struct {
+	union {
+		struct {
+			unsigned long vm_start;
+			unsigned long vm_end;
+		};
+		struct callback_head vm_rcu;
+	};
+	struct mm_struct *vm_mm;
+	pgprot_t vm_page_prot;
+	union {
+		const vm_flags_t vm_flags;
+		vm_flags_t __vm_flags;
+	};
+	bool detached;
+	int vm_lock_seq;
+	struct vma_lock *vm_lock;
+	struct {
+		struct rb_node rb;
+		unsigned long rb_subtree_last;
+	} shared;
+	struct list_head anon_vma_chain;
+	struct anon_vma *anon_vma;
+	const struct vm_operations_struct *vm_ops;
+	unsigned long vm_pgoff;
+	struct file *vm_file;
+	void *vm_private_data;
+	struct anon_vma_name *anon_name;
+	atomic_long_t swap_readahead_info;
+	struct vm_userfaultfd_ctx vm_userfaultfd_ctx;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct vma_lock {
+	struct rw_semaphore lock;
+};
+
+struct anon_vma {
+	struct anon_vma *root;
+	struct rw_semaphore rwsem;
+	atomic_t refcount;
+	unsigned long num_children;
+	unsigned long num_active_vmas;
+	struct anon_vma *parent;
+	struct rb_root_cached rb_root;
+};
+
+typedef unsigned int vm_fault_t;
+
+struct vm_fault;
+
+struct vm_operations_struct {
+	void (*open)(struct vm_area_struct *);
+	void (*close)(struct vm_area_struct *);
+	int (*may_split)(struct vm_area_struct *, unsigned long);
+	int (*mremap)(struct vm_area_struct *);
+	int (*mprotect)(struct vm_area_struct *, unsigned long, unsigned long, unsigned long);
+	vm_fault_t (*fault)(struct vm_fault *);
+	vm_fault_t (*huge_fault)(struct vm_fault *, unsigned int);
+	vm_fault_t (*map_pages)(struct vm_fault *, unsigned long, unsigned long);
+	unsigned long (*pagesize)(struct vm_area_struct *);
+	vm_fault_t (*page_mkwrite)(struct vm_fault *);
+	vm_fault_t (*pfn_mkwrite)(struct vm_fault *);
+	int (*access)(struct vm_area_struct *, unsigned long, void *, int, int);
+	const char * (*name)(struct vm_area_struct *);
+	struct page * (*find_special_page)(struct vm_area_struct *, unsigned long);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+typedef struct {
+	pteval_t pte;
+} pte_t;
+
+typedef u64 pmdval_t;
+
+typedef struct {
+	pmdval_t pmd;
+} pmd_t;
+
+enum fault_flag {
+	FAULT_FLAG_WRITE = 1,
+	FAULT_FLAG_MKWRITE = 2,
+	FAULT_FLAG_ALLOW_RETRY = 4,
+	FAULT_FLAG_RETRY_NOWAIT = 8,
+	FAULT_FLAG_KILLABLE = 16,
+	FAULT_FLAG_TRIED = 32,
+	FAULT_FLAG_USER = 64,
+	FAULT_FLAG_REMOTE = 128,
+	FAULT_FLAG_INSTRUCTION = 256,
+	FAULT_FLAG_INTERRUPTIBLE = 512,
+	FAULT_FLAG_UNSHARE = 1024,
+	FAULT_FLAG_ORIG_PTE_VALID = 2048,
+	FAULT_FLAG_VMA_LOCK = 4096,
+};
+
+typedef struct {
+	pgd_t pgd;
+} p4d_t;
+
+typedef struct {
+	p4d_t p4d;
+} pud_t;
+
+typedef struct page *pgtable_t;
+
+struct vm_fault {
+	struct {
+		struct vm_area_struct *vma;
+		gfp_t gfp_mask;
+		unsigned long pgoff;
+		unsigned long address;
+		unsigned long real_address;
+	};
+	enum fault_flag flags;
+	pmd_t *pmd;
+	pud_t *pud;
+	union {
+		pte_t orig_pte;
+		pmd_t orig_pmd;
+	};
+	struct page *cow_page;
+	struct page *page;
+	pte_t *pte;
+	spinlock_t *ptl;
+	pgtable_t prealloc_pte;
+};
+
+struct page_pool;
+
+struct dev_pagemap;
+
+struct page {
+	unsigned long flags;
+	union {
+		struct {
+			union {
+				struct list_head lru;
+				struct {
+					void *__filler;
+					unsigned int mlock_count;
+				};
+				struct list_head buddy_list;
+				struct list_head pcp_list;
+			};
+			struct address_space *mapping;
+			union {
+				unsigned long index;
+				unsigned long share;
+			};
+			unsigned long private;
+		};
+		struct {
+			unsigned long pp_magic;
+			struct page_pool *pp;
+			unsigned long _pp_mapping_pad;
+			unsigned long dma_addr;
+			union {
+				unsigned long dma_addr_upper;
+				atomic_long_t pp_frag_count;
+			};
+		};
+		struct {
+			unsigned long compound_head;
+		};
+		struct {
+			struct dev_pagemap *pgmap;
+			void *zone_device_data;
+		};
+		struct callback_head callback_head;
+	};
+	union {
+		atomic_t _mapcount;
+		unsigned int page_type;
+	};
+	atomic_t _refcount;
+	unsigned long memcg_data;
+};
+
+struct range {
+	u64 start;
+	u64 end;
+};
+
+struct vmem_altmap {
+	unsigned long base_pfn;
+	const unsigned long end_pfn;
+	const unsigned long reserve;
+	unsigned long free;
+	unsigned long align;
+	unsigned long alloc;
+};
+
+struct percpu_ref_data;
+
+struct percpu_ref {
+	unsigned long percpu_count_ptr;
+	struct percpu_ref_data *data;
+};
+
+struct swait_queue_head {
+	raw_spinlock_t lock;
+	struct list_head task_list;
+};
+
+struct completion {
+	unsigned int done;
+	struct swait_queue_head wait;
+};
+
+enum memory_type {
+	MEMORY_DEVICE_PRIVATE = 1,
+	MEMORY_DEVICE_COHERENT = 2,
+	MEMORY_DEVICE_FS_DAX = 3,
+	MEMORY_DEVICE_GENERIC = 4,
+	MEMORY_DEVICE_PCI_P2PDMA = 5,
+};
+
+struct dev_pagemap_ops;
+
+struct dev_pagemap {
+	struct vmem_altmap altmap;
+	struct percpu_ref ref;
+	struct completion done;
+	enum memory_type type;
+	unsigned int flags;
+	unsigned long vmemmap_shift;
+	const struct dev_pagemap_ops *ops;
+	void *owner;
+	int nr_range;
+	union {
+		struct range range;
+		struct {
+			struct {} __empty_ranges;
+			struct range ranges[0];
+		};
+	};
+};
+
+typedef void percpu_ref_func_t(struct percpu_ref *);
+
+struct percpu_ref_data {
+	atomic_long_t count;
+	percpu_ref_func_t *release;
+	percpu_ref_func_t *confirm_switch;
+	bool force_atomic: 1;
+	bool allow_reinit: 1;
+	struct callback_head rcu;
+	struct percpu_ref *ref;
+};
+
+struct dev_pagemap_ops {
+	void (*page_free)(struct page *);
+	vm_fault_t (*migrate_to_ram)(struct vm_fault *);
+	int (*memory_failure)(struct dev_pagemap *, unsigned long, unsigned long, int);
+};
+
+struct anon_vma_name {
+	struct kref kref;
+	char name[0];
+};
+
+struct userfaultfd_ctx {
+	wait_queue_head_t fault_pending_wqh;
+	wait_queue_head_t fault_wqh;
+	wait_queue_head_t fd_wqh;
+	wait_queue_head_t event_wqh;
+	seqcount_spinlock_t refile_seq;
+	refcount_t refcount;
+	unsigned int flags;
+	unsigned int features;
+	bool released;
+	struct rw_semaphore map_changing_lock;
+	atomic_t mmap_changing;
+	struct mm_struct *mm;
+};
+
+typedef struct {
+	u64 val;
+} kernel_cap_t;
+
+struct user_struct;
+
+struct group_info;
+
+struct cred {
+	atomic_long_t usage;
+	kuid_t uid;
+	kgid_t gid;
+	kuid_t suid;
+	kgid_t sgid;
+	kuid_t euid;
+	kgid_t egid;
+	kuid_t fsuid;
+	kgid_t fsgid;
+	unsigned int securebits;
+	kernel_cap_t cap_inheritable;
+	kernel_cap_t cap_permitted;
+	kernel_cap_t cap_effective;
+	kernel_cap_t cap_bset;
+	kernel_cap_t cap_ambient;
+	unsigned char jit_keyring;
+	struct key *session_keyring;
+	struct key *process_keyring;
+	struct key *thread_keyring;
+	struct key *request_key_auth;
+	void *security;
+	struct user_struct *user;
+	struct user_namespace *user_ns;
+	struct ucounts *ucounts;
+	struct group_info *group_info;
+	union {
+		int non_rcu;
+		struct callback_head rcu;
+	};
+};
+
+struct key_type;
+
+struct key_tag;
+
+struct keyring_index_key {
+	unsigned long hash;
+	union {
+		struct {
+			u16 desc_len;
+			char desc[6];
+		};
+		unsigned long x;
+	};
+	struct key_type *type;
+	struct key_tag *domain_tag;
+	const char *description;
+};
+
+struct assoc_array_ptr;
+
+struct assoc_array {
+	struct assoc_array_ptr *root;
+	unsigned long nr_leaves_on_tree;
+};
+
+union key_payload {
+	void __attribute__((btf_type_tag("rcu"))) *rcu_data0;
+	void *data[4];
+};
+
+typedef s32 int32_t;
+
+typedef int32_t key_serial_t;
+
+typedef u32 uint32_t;
+
+typedef uint32_t key_perm_t;
+
+struct key_user;
+
+struct key_restriction;
+
+struct key {
+	refcount_t usage;
+	key_serial_t serial;
+	union {
+		struct list_head graveyard_link;
+		struct rb_node serial_node;
+	};
+	struct rw_semaphore sem;
+	struct key_user *user;
+	void *security;
+	union {
+		time64_t expiry;
+		time64_t revoked_at;
+	};
+	time64_t last_used_at;
+	kuid_t uid;
+	kgid_t gid;
+	key_perm_t perm;
+	unsigned short quotalen;
+	unsigned short datalen;
+	short state;
+	unsigned long flags;
+	union {
+		struct keyring_index_key index_key;
+		struct {
+			unsigned long hash;
+			unsigned long len_desc;
+			struct key_type *type;
+			struct key_tag *domain_tag;
+			char *description;
+		};
+	};
+	union {
+		union key_payload payload;
+		struct {
+			struct list_head name_link;
+			struct assoc_array keys;
+		};
+	};
+	struct key_restriction *restrict_link;
+};
+
+struct key_tag {
+	struct callback_head rcu;
+	refcount_t usage;
+	bool removed;
+};
+
+typedef int (*key_restrict_link_func_t)(struct key *, const struct key_type *, const union key_payload *, struct key *);
+
+struct key_restriction {
+	key_restrict_link_func_t check;
+	struct key *key;
+	struct key_type *keytype;
+};
+
+typedef int (*request_key_actor_t)(struct key *, void *);
+
+struct key_preparsed_payload;
+
+struct key_match_data;
+
+struct seq_file;
+
+struct kernel_pkey_params;
+
+struct kernel_pkey_query;
+
+struct key_type {
+	const char *name;
+	size_t def_datalen;
+	unsigned int flags;
+	int (*vet_description)(const char *);
+	int (*preparse)(struct key_preparsed_payload *);
+	void (*free_preparse)(struct key_preparsed_payload *);
+	int (*instantiate)(struct key *, struct key_preparsed_payload *);
+	int (*update)(struct key *, struct key_preparsed_payload *);
+	int (*match_preparse)(struct key_match_data *);
+	void (*match_free)(struct key_match_data *);
+	void (*revoke)(struct key *);
+	void (*destroy)(struct key *);
+	void (*describe)(const struct key *, struct seq_file *);
+	long (*read)(const struct key *, char *, size_t);
+	request_key_actor_t request_key;
+	struct key_restriction * (*lookup_restriction)(const char *);
+	int (*asym_query)(const struct kernel_pkey_params *, struct kernel_pkey_query *);
+	int (*asym_eds_op)(struct kernel_pkey_params *, const void *, void *);
+	int (*asym_verify_signature)(struct kernel_pkey_params *, const void *, const void *);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	struct list_head link;
+	struct lock_class_key lock_class;
+};
+
+struct ratelimit_state {
+	raw_spinlock_t lock;
+	int interval;
+	int burst;
+	int printed;
+	int missed;
+	unsigned long begin;
+	unsigned long flags;
+};
+
+struct user_struct {
+	refcount_t __count;
+	struct percpu_counter epoll_watches;
+	unsigned long unix_inflight;
+	atomic_long_t pipe_bufs;
+	struct hlist_node uidhash_node;
+	kuid_t uid;
+	atomic_long_t locked_vm;
+	struct ratelimit_state ratelimit;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_oem_data1[2];
+};
+
+struct uid_gid_extent {
+	u32 first;
+	u32 lower_first;
+	u32 count;
+};
+
+struct uid_gid_map {
+	u32 nr_extents;
+	union {
+		struct uid_gid_extent extent[5];
+		struct {
+			struct uid_gid_extent *forward;
+			struct uid_gid_extent *reverse;
+		};
+	};
+};
+
+struct ctl_table;
+
+struct ctl_table_root;
+
+struct ctl_table_set;
+
+struct ctl_dir;
+
+struct ctl_node;
+
+struct ctl_table_header {
+	union {
+		struct {
+			struct ctl_table *ctl_table;
+			int ctl_table_size;
+			int used;
+			int count;
+			int nreg;
+		};
+		struct callback_head rcu;
+	};
+	struct completion *unregistering;
+	struct ctl_table *ctl_table_arg;
+	struct ctl_table_root *root;
+	struct ctl_table_set *set;
+	struct ctl_dir *parent;
+	struct ctl_node *node;
+	struct hlist_head inodes;
+};
+
+struct ctl_dir {
+	struct ctl_table_header header;
+	struct rb_root root;
+};
+
+struct ctl_table_set {
+	int (*is_seen)(struct ctl_table_set *);
+	struct ctl_dir dir;
+};
+
+struct user_namespace {
+	struct uid_gid_map uid_map;
+	struct uid_gid_map gid_map;
+	struct uid_gid_map projid_map;
+	struct user_namespace *parent;
+	int level;
+	kuid_t owner;
+	kgid_t group;
+	struct ns_common ns;
+	unsigned long flags;
+	bool parent_could_setfcap;
+	struct list_head keyring_name_list;
+	struct key *user_keyring_register;
+	struct rw_semaphore keyring_sem;
+	struct work_struct work;
+	struct ctl_table_set set;
+	struct ctl_table_header *sysctls;
+	struct ucounts *ucounts;
+	long ucount_max[10];
+	long rlimit_max[4];
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct nsset;
+
+struct proc_ns_operations {
+	const char *name;
+	const char *real_ns_name;
+	int type;
+	struct ns_common * (*get)(struct task_struct *);
+	void (*put)(struct ns_common *);
+	int (*install)(struct nsset *, struct ns_common *);
+	struct user_namespace * (*owner)(struct ns_common *);
+	struct ns_common * (*get_parent)(struct ns_common *);
+};
+
+struct nsset {
+	unsigned int flags;
+	struct nsproxy *nsproxy;
+	struct fs_struct *fs;
+	const struct cred *cred;
+};
+
+struct uts_namespace;
+
+struct ipc_namespace;
+
+struct mnt_namespace;
+
+struct time_namespace;
+
+struct cgroup_namespace;
+
+struct nsproxy {
+	refcount_t count;
+	struct uts_namespace *uts_ns;
+	struct ipc_namespace *ipc_ns;
+	struct mnt_namespace *mnt_ns;
+	struct pid_namespace *pid_ns_for_children;
+	struct net *net_ns;
+	struct time_namespace *time_ns;
+	struct time_namespace *time_ns_for_children;
+	struct cgroup_namespace *cgroup_ns;
+};
+
+struct new_utsname {
+	char sysname[65];
+	char nodename[65];
+	char release[65];
+	char version[65];
+	char machine[65];
+	char domainname[65];
+};
+
+struct uts_namespace {
+	struct new_utsname name;
+	struct user_namespace *user_ns;
+	struct ucounts *ucounts;
+	struct ns_common ns;
+};
+
+struct ucounts {
+	struct hlist_node node;
+	struct user_namespace *ns;
+	kuid_t uid;
+	atomic_t count;
+	atomic_long_t ucount[10];
+	atomic_long_t rlimit[4];
+};
+
+struct ref_tracker_dir {};
+
+struct notifier_block;
+
+struct raw_notifier_head {
+	struct notifier_block __attribute__((btf_type_tag("rcu"))) *head;
+};
+
+struct prot_inuse;
+
+struct netns_core {
+	struct ctl_table_header *sysctl_hdr;
+	int sysctl_somaxconn;
+	u8 sysctl_txrehash;
+	struct prot_inuse __attribute__((btf_type_tag("percpu"))) *prot_inuse;
+	struct cpumask *rps_default_mask;
+};
+
+struct ipstats_mib;
+
+struct tcp_mib;
+
+struct linux_mib;
+
+struct udp_mib;
+
+struct linux_xfrm_mib;
+
+struct icmp_mib;
+
+struct icmpmsg_mib;
+
+struct icmpv6_mib;
+
+struct icmpv6msg_mib;
+
+struct proc_dir_entry;
+
+struct netns_mib {
+	struct ipstats_mib __attribute__((btf_type_tag("percpu"))) *ip_statistics;
+	struct ipstats_mib __attribute__((btf_type_tag("percpu"))) *ipv6_statistics;
+	struct tcp_mib __attribute__((btf_type_tag("percpu"))) *tcp_statistics;
+	struct linux_mib __attribute__((btf_type_tag("percpu"))) *net_statistics;
+	struct udp_mib __attribute__((btf_type_tag("percpu"))) *udp_statistics;
+	struct udp_mib __attribute__((btf_type_tag("percpu"))) *udp_stats_in6;
+	struct linux_xfrm_mib __attribute__((btf_type_tag("percpu"))) *xfrm_statistics;
+	struct udp_mib __attribute__((btf_type_tag("percpu"))) *udplite_statistics;
+	struct udp_mib __attribute__((btf_type_tag("percpu"))) *udplite_stats_in6;
+	struct icmp_mib __attribute__((btf_type_tag("percpu"))) *icmp_statistics;
+	struct icmpmsg_mib *icmpmsg_statistics;
+	struct icmpv6_mib __attribute__((btf_type_tag("percpu"))) *icmpv6_statistics;
+	struct icmpv6msg_mib *icmpv6msg_statistics;
+	struct proc_dir_entry *proc_net_devsnmp6;
+};
+
+struct netns_packet {
+	struct mutex sklist_lock;
+	struct hlist_head sklist;
+};
+
+struct unix_table {
+	spinlock_t *locks;
+	struct hlist_head *buckets;
+};
+
+struct netns_unix {
+	struct unix_table table;
+	int sysctl_max_dgram_qlen;
+	struct ctl_table_header *ctl;
+};
+
+struct blocking_notifier_head {
+	struct rw_semaphore rwsem;
+	struct notifier_block __attribute__((btf_type_tag("rcu"))) *head;
+};
+
+struct netns_nexthop {
+	struct rb_root rb_root;
+	struct hlist_head *devhash;
+	unsigned int seq;
+	u32 last_id_allocated;
+	struct blocking_notifier_head notifier_chain;
+};
+
+struct inet_hashinfo;
+
+struct inet_timewait_death_row {
+	refcount_t tw_refcount;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct inet_hashinfo *hashinfo;
+	int sysctl_max_tw_buckets;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+typedef struct {
+	seqcount_spinlock_t seqcount;
+	spinlock_t lock;
+} seqlock_t;
+
+struct local_ports {
+	seqlock_t lock;
+	int range[2];
+	bool warned;
+};
+
+struct ping_group_range {
+	seqlock_t lock;
+	kgid_t range[2];
+};
+
+typedef struct {
+	u64 key[2];
+} siphash_key_t;
+
+struct udp_table;
+
+struct ipv4_devconf;
+
+struct ip_ra_chain;
+
+struct fib_rules_ops;
+
+struct fib_table;
+
+struct sock;
+
+struct inet_peer_base;
+
+struct fqdir;
+
+struct tcp_congestion_ops;
+
+struct tcp_fastopen_context;
+
+struct fib_notifier_ops;
+
+struct netns_ipv4 {
+	struct inet_timewait_death_row tcp_death_row;
+	struct udp_table *udp_table;
+	struct ctl_table_header *forw_hdr;
+	struct ctl_table_header *frags_hdr;
+	struct ctl_table_header *ipv4_hdr;
+	struct ctl_table_header *route_hdr;
+	struct ctl_table_header *xfrm4_hdr;
+	struct ipv4_devconf *devconf_all;
+	struct ipv4_devconf *devconf_dflt;
+	struct ip_ra_chain __attribute__((btf_type_tag("rcu"))) *ra_chain;
+	struct mutex ra_mutex;
+	struct fib_rules_ops *rules_ops;
+	struct fib_table __attribute__((btf_type_tag("rcu"))) *fib_main;
+	struct fib_table __attribute__((btf_type_tag("rcu"))) *fib_default;
+	unsigned int fib_rules_require_fldissect;
+	bool fib_has_custom_rules;
+	bool fib_has_custom_local_routes;
+	bool fib_offload_disabled;
+	u8 sysctl_tcp_shrink_window;
+	struct hlist_head *fib_table_hash;
+	struct sock *fibnl;
+	struct sock *mc_autojoin_sk;
+	struct inet_peer_base *peers;
+	struct fqdir *fqdir;
+	u8 sysctl_icmp_echo_ignore_all;
+	u8 sysctl_icmp_echo_enable_probe;
+	u8 sysctl_icmp_echo_ignore_broadcasts;
+	u8 sysctl_icmp_ignore_bogus_error_responses;
+	u8 sysctl_icmp_errors_use_inbound_ifaddr;
+	int sysctl_icmp_ratelimit;
+	int sysctl_icmp_ratemask;
+	u32 ip_rt_min_pmtu;
+	int ip_rt_mtu_expires;
+	int ip_rt_min_advmss;
+	struct local_ports ip_local_ports;
+	u8 sysctl_tcp_ecn;
+	u8 sysctl_tcp_ecn_fallback;
+	u8 sysctl_ip_default_ttl;
+	u8 sysctl_ip_no_pmtu_disc;
+	u8 sysctl_ip_fwd_use_pmtu;
+	u8 sysctl_ip_fwd_update_priority;
+	u8 sysctl_ip_nonlocal_bind;
+	u8 sysctl_ip_autobind_reuse;
+	u8 sysctl_ip_dynaddr;
+	u8 sysctl_ip_early_demux;
+	u8 sysctl_tcp_early_demux;
+	u8 sysctl_udp_early_demux;
+	u8 sysctl_nexthop_compat_mode;
+	u8 sysctl_fwmark_reflect;
+	u8 sysctl_tcp_fwmark_accept;
+	u8 sysctl_tcp_mtu_probing;
+	int sysctl_tcp_mtu_probe_floor;
+	int sysctl_tcp_base_mss;
+	int sysctl_tcp_min_snd_mss;
+	int sysctl_tcp_probe_threshold;
+	u32 sysctl_tcp_probe_interval;
+	int sysctl_tcp_keepalive_time;
+	int sysctl_tcp_keepalive_intvl;
+	u8 sysctl_tcp_keepalive_probes;
+	u8 sysctl_tcp_syn_retries;
+	u8 sysctl_tcp_synack_retries;
+	u8 sysctl_tcp_syncookies;
+	u8 sysctl_tcp_migrate_req;
+	u8 sysctl_tcp_comp_sack_nr;
+	int sysctl_tcp_reordering;
+	u8 sysctl_tcp_retries1;
+	u8 sysctl_tcp_retries2;
+	u8 sysctl_tcp_orphan_retries;
+	u8 sysctl_tcp_tw_reuse;
+	int sysctl_tcp_fin_timeout;
+	unsigned int sysctl_tcp_notsent_lowat;
+	u8 sysctl_tcp_sack;
+	u8 sysctl_tcp_window_scaling;
+	u8 sysctl_tcp_timestamps;
+	u8 sysctl_tcp_early_retrans;
+	u8 sysctl_tcp_recovery;
+	u8 sysctl_tcp_thin_linear_timeouts;
+	u8 sysctl_tcp_slow_start_after_idle;
+	u8 sysctl_tcp_retrans_collapse;
+	u8 sysctl_tcp_stdurg;
+	u8 sysctl_tcp_rfc1337;
+	u8 sysctl_tcp_abort_on_overflow;
+	u8 sysctl_tcp_fack;
+	int sysctl_tcp_max_reordering;
+	int sysctl_tcp_adv_win_scale;
+	u8 sysctl_tcp_dsack;
+	u8 sysctl_tcp_app_win;
+	u8 sysctl_tcp_frto;
+	u8 sysctl_tcp_nometrics_save;
+	u8 sysctl_tcp_no_ssthresh_metrics_save;
+	u8 sysctl_tcp_moderate_rcvbuf;
+	u8 sysctl_tcp_tso_win_divisor;
+	u8 sysctl_tcp_workaround_signed_windows;
+	int sysctl_tcp_limit_output_bytes;
+	int sysctl_tcp_challenge_ack_limit;
+	int sysctl_tcp_min_rtt_wlen;
+	u8 sysctl_tcp_min_tso_segs;
+	u8 sysctl_tcp_tso_rtt_log;
+	u8 sysctl_tcp_autocorking;
+	u8 sysctl_tcp_reflect_tos;
+	int sysctl_tcp_invalid_ratelimit;
+	int sysctl_tcp_pacing_ss_ratio;
+	int sysctl_tcp_pacing_ca_ratio;
+	int sysctl_tcp_wmem[3];
+	int sysctl_tcp_rmem[3];
+	unsigned int sysctl_tcp_child_ehash_entries;
+	unsigned long sysctl_tcp_comp_sack_delay_ns;
+	unsigned long sysctl_tcp_comp_sack_slack_ns;
+	int sysctl_max_syn_backlog;
+	int sysctl_tcp_fastopen;
+	const struct tcp_congestion_ops __attribute__((btf_type_tag("rcu"))) *tcp_congestion_control;
+	struct tcp_fastopen_context __attribute__((btf_type_tag("rcu"))) *tcp_fastopen_ctx;
+	unsigned int sysctl_tcp_fastopen_blackhole_timeout;
+	atomic_t tfo_active_disable_times;
+	unsigned long tfo_active_disable_stamp;
+	u32 tcp_challenge_timestamp;
+	u32 tcp_challenge_count;
+	u8 sysctl_tcp_plb_enabled;
+	u8 sysctl_tcp_plb_idle_rehash_rounds;
+	u8 sysctl_tcp_plb_rehash_rounds;
+	u8 sysctl_tcp_plb_suspend_rto_sec;
+	int sysctl_tcp_plb_cong_thresh;
+	int sysctl_udp_wmem_min;
+	int sysctl_udp_rmem_min;
+	u8 sysctl_fib_notify_on_flag_change;
+	u8 sysctl_tcp_syn_linear_timeouts;
+	u8 sysctl_igmp_llm_reports;
+	int sysctl_igmp_max_memberships;
+	int sysctl_igmp_max_msf;
+	int sysctl_igmp_qrv;
+	struct ping_group_range ping_group_range;
+	atomic_t dev_addr_genid;
+	unsigned int sysctl_udp_child_hash_entries;
+	unsigned long *sysctl_local_reserved_ports;
+	int sysctl_ip_prot_sock;
+	struct fib_notifier_ops *notifier_ops;
+	unsigned int fib_seq;
+	struct fib_notifier_ops *ipmr_notifier_ops;
+	unsigned int ipmr_seq;
+	atomic_t rt_genid;
+	siphash_key_t ip_id_key;
+	u64 android_kabi_reserved1;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct dst_entry;
+
+struct net_device;
+
+struct sk_buff;
+
+struct neighbour;
+
+struct dst_ops {
+	unsigned short family;
+	unsigned int gc_thresh;
+	void (*gc)(struct dst_ops *);
+	struct dst_entry * (*check)(struct dst_entry *, __u32);
+	unsigned int (*default_advmss)(const struct dst_entry *);
+	unsigned int (*mtu)(const struct dst_entry *);
+	u32 * (*cow_metrics)(struct dst_entry *, unsigned long);
+	void (*destroy)(struct dst_entry *);
+	void (*ifdown)(struct dst_entry *, struct net_device *);
+	struct dst_entry * (*negative_advice)(struct dst_entry *);
+	void (*link_failure)(struct sk_buff *);
+	void (*update_pmtu)(struct dst_entry *, struct sock *, struct sk_buff *, u32, bool);
+	void (*redirect)(struct dst_entry *, struct sock *, struct sk_buff *);
+	int (*local_out)(struct net *, struct sock *, struct sk_buff *);
+	struct neighbour * (*neigh_lookup)(const struct dst_entry *, struct sk_buff *, const void *);
+	void (*confirm_neigh)(const struct dst_entry *, const void *);
+	struct kmem_cache *kmem_cachep;
+	struct percpu_counter pcpuc_entries;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct netns_sysctl_ipv6 {
+	struct ctl_table_header *hdr;
+	struct ctl_table_header *route_hdr;
+	struct ctl_table_header *icmp_hdr;
+	struct ctl_table_header *frags_hdr;
+	struct ctl_table_header *xfrm6_hdr;
+	int flush_delay;
+	int ip6_rt_max_size;
+	int ip6_rt_gc_min_interval;
+	int ip6_rt_gc_timeout;
+	int ip6_rt_gc_interval;
+	int ip6_rt_gc_elasticity;
+	int ip6_rt_mtu_expires;
+	int ip6_rt_min_advmss;
+	u32 multipath_hash_fields;
+	u8 multipath_hash_policy;
+	u8 bindv6only;
+	u8 flowlabel_consistency;
+	u8 auto_flowlabels;
+	int icmpv6_time;
+	u8 icmpv6_echo_ignore_all;
+	u8 icmpv6_echo_ignore_multicast;
+	u8 icmpv6_echo_ignore_anycast;
+	unsigned long icmpv6_ratemask[4];
+	unsigned long *icmpv6_ratemask_ptr;
+	u8 anycast_src_echo_reply;
+	u8 ip_nonlocal_bind;
+	u8 fwmark_reflect;
+	u8 flowlabel_state_ranges;
+	int idgen_retries;
+	int idgen_delay;
+	int flowlabel_reflect;
+	int max_dst_opts_cnt;
+	int max_hbh_opts_cnt;
+	int max_dst_opts_len;
+	int max_hbh_opts_len;
+	int seg6_flowlabel;
+	u32 ioam6_id;
+	u64 ioam6_id_wide;
+	u8 skip_notify_on_dev_down;
+	u8 fib_notify_on_flag_change;
+	u8 icmpv6_error_anycast_as_unicast;
+	u64 android_kabi_reserved1;
+};
+
+struct delayed_work {
+	struct work_struct work;
+	struct timer_list timer;
+	struct workqueue_struct *wq;
+	int cpu;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct ipv6_devconf;
+
+struct fib6_info;
+
+struct rt6_info;
+
+struct rt6_statistics;
+
+struct fib6_table;
+
+struct seg6_pernet_data;
+
+struct ioam6_pernet_data;
+
+struct netns_ipv6 {
+	struct dst_ops ip6_dst_ops;
+	struct netns_sysctl_ipv6 sysctl;
+	struct ipv6_devconf *devconf_all;
+	struct ipv6_devconf *devconf_dflt;
+	struct inet_peer_base *peers;
+	struct fqdir *fqdir;
+	struct fib6_info *fib6_null_entry;
+	struct rt6_info *ip6_null_entry;
+	struct rt6_statistics *rt6_stats;
+	struct timer_list ip6_fib_timer;
+	struct hlist_head *fib_table_hash;
+	struct fib6_table *fib6_main_tbl;
+	struct list_head fib6_walkers;
+	rwlock_t fib6_walker_lock;
+	spinlock_t fib6_gc_lock;
+	atomic_t ip6_rt_gc_expire;
+	unsigned long ip6_rt_last_gc;
+	unsigned char flowlabel_has_excl;
+	bool fib6_has_custom_rules;
+	unsigned int fib6_rules_require_fldissect;
+	struct rt6_info *ip6_prohibit_entry;
+	struct rt6_info *ip6_blk_hole_entry;
+	struct fib6_table *fib6_local_tbl;
+	struct fib_rules_ops *fib6_rules_ops;
+	struct sock *ndisc_sk;
+	struct sock *tcp_sk;
+	struct sock *igmp_sk;
+	struct sock *mc_autojoin_sk;
+	struct hlist_head *inet6_addr_lst;
+	spinlock_t addrconf_hash_lock;
+	struct delayed_work addr_chk_work;
+	struct list_head mr6_tables;
+	struct fib_rules_ops *mr6_rules_ops;
+	atomic_t dev_addr_genid;
+	atomic_t fib6_sernum;
+	struct seg6_pernet_data *seg6_data;
+	struct fib_notifier_ops *notifier_ops;
+	struct fib_notifier_ops *ip6mr_notifier_ops;
+	unsigned int ipmr_seq;
+	struct {
+		struct hlist_head head;
+		spinlock_t lock;
+		u32 seq;
+	} ip6addrlbl_table;
+	struct ioam6_pernet_data *ioam6_data;
+	u64 android_kabi_reserved1;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct netns_sysctl_lowpan {
+	struct ctl_table_header *frags_hdr;
+};
+
+struct netns_ieee802154_lowpan {
+	struct netns_sysctl_lowpan sysctl;
+	struct fqdir *fqdir;
+};
+
+struct nf_logger;
+
+struct nf_hook_entries;
+
+struct netns_nf {
+	struct proc_dir_entry *proc_netfilter;
+	const struct nf_logger __attribute__((btf_type_tag("rcu"))) *nf_loggers[11];
+	struct ctl_table_header *nf_log_dir_header;
+	struct nf_hook_entries __attribute__((btf_type_tag("rcu"))) *hooks_ipv4[5];
+	struct nf_hook_entries __attribute__((btf_type_tag("rcu"))) *hooks_ipv6[5];
+	struct nf_hook_entries __attribute__((btf_type_tag("rcu"))) *hooks_arp[3];
+	unsigned int defrag_ipv4_users;
+	unsigned int defrag_ipv6_users;
+	u64 android_kabi_reserved1;
+};
+
+struct nf_generic_net {
+	unsigned int timeout;
+};
+
+struct nf_tcp_net {
+	unsigned int timeouts[14];
+	u8 tcp_loose;
+	u8 tcp_be_liberal;
+	u8 tcp_max_retrans;
+	u8 tcp_ignore_invalid_rst;
+};
+
+struct nf_udp_net {
+	unsigned int timeouts[2];
+};
+
+struct nf_icmp_net {
+	unsigned int timeout;
+};
+
+struct nf_dccp_net {
+	u8 dccp_loose;
+	unsigned int dccp_timeout[10];
+};
+
+struct nf_sctp_net {
+	unsigned int timeouts[10];
+};
+
+struct nf_gre_net {
+	struct list_head keymap_list;
+	unsigned int timeouts[2];
+};
+
+struct nf_ip_net {
+	struct nf_generic_net generic;
+	struct nf_tcp_net tcp;
+	struct nf_udp_net udp;
+	struct nf_icmp_net icmp;
+	struct nf_icmp_net icmpv6;
+	struct nf_dccp_net dccp;
+	struct nf_sctp_net sctp;
+	struct nf_gre_net gre;
+};
+
+struct ip_conntrack_stat;
+
+struct nf_ct_event_notifier;
+
+struct netns_ct {
+	bool ecache_dwork_pending;
+	u8 sysctl_log_invalid;
+	u8 sysctl_events;
+	u8 sysctl_acct;
+	u8 sysctl_tstamp;
+	u8 sysctl_checksum;
+	struct ip_conntrack_stat __attribute__((btf_type_tag("percpu"))) *stat;
+	struct nf_ct_event_notifier __attribute__((btf_type_tag("rcu"))) *nf_conntrack_event_cb;
+	struct nf_ip_net nf_ct_proto;
+};
+
+struct sk_buff_list {
+	struct sk_buff *next;
+	struct sk_buff *prev;
+};
+
+struct sk_buff_head {
+	union {
+		struct {
+			struct sk_buff *next;
+			struct sk_buff *prev;
+		};
+		struct sk_buff_list list;
+	};
+	__u32 qlen;
+	spinlock_t lock;
+};
+
+struct netns_bpf {
+	struct bpf_prog_array __attribute__((btf_type_tag("rcu"))) *run_array[2];
+	struct bpf_prog *progs[2];
+	struct list_head links[2];
+};
+
+struct xfrm_policy_hash {
+	struct hlist_head __attribute__((btf_type_tag("rcu"))) *table;
+	unsigned int hmask;
+	u8 dbits4;
+	u8 sbits4;
+	u8 dbits6;
+	u8 sbits6;
+};
+
+struct xfrm_policy_hthresh {
+	struct work_struct work;
+	seqlock_t lock;
+	u8 lbits4;
+	u8 rbits4;
+	u8 lbits6;
+	u8 rbits6;
+};
+
+struct netns_xfrm {
+	struct list_head state_all;
+	struct hlist_head __attribute__((btf_type_tag("rcu"))) *state_bydst;
+	struct hlist_head __attribute__((btf_type_tag("rcu"))) *state_bysrc;
+	struct hlist_head __attribute__((btf_type_tag("rcu"))) *state_byspi;
+	struct hlist_head __attribute__((btf_type_tag("rcu"))) *state_byseq;
+	unsigned int state_hmask;
+	unsigned int state_num;
+	struct work_struct state_hash_work;
+	struct list_head policy_all;
+	struct hlist_head *policy_byidx;
+	unsigned int policy_idx_hmask;
+	unsigned int idx_generator;
+	struct hlist_head policy_inexact[3];
+	struct xfrm_policy_hash policy_bydst[3];
+	unsigned int policy_count[6];
+	struct work_struct policy_hash_work;
+	struct xfrm_policy_hthresh policy_hthresh;
+	struct list_head inexact_bins;
+	struct sock *nlsk;
+	struct sock *nlsk_stash;
+	u32 sysctl_aevent_etime;
+	u32 sysctl_aevent_rseqth;
+	int sysctl_larval_drop;
+	u32 sysctl_acq_expires;
+	u8 policy_default[3];
+	struct ctl_table_header *sysctl_hdr;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct dst_ops xfrm4_dst_ops;
+	struct dst_ops xfrm6_dst_ops;
+	spinlock_t xfrm_state_lock;
+	seqcount_spinlock_t xfrm_state_hash_generation;
+	seqcount_spinlock_t xfrm_policy_hash_generation;
+	spinlock_t xfrm_policy_lock;
+	struct mutex xfrm_cfg_mutex;
+	u64 android_kabi_reserved1;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct can_dev_rcv_lists;
+
+struct can_pkg_stats;
+
+struct can_rcv_lists_stats;
+
+struct netns_can {
+	struct proc_dir_entry *proc_dir;
+	struct proc_dir_entry *pde_stats;
+	struct proc_dir_entry *pde_reset_stats;
+	struct proc_dir_entry *pde_rcvlist_all;
+	struct proc_dir_entry *pde_rcvlist_fil;
+	struct proc_dir_entry *pde_rcvlist_inv;
+	struct proc_dir_entry *pde_rcvlist_sff;
+	struct proc_dir_entry *pde_rcvlist_eff;
+	struct proc_dir_entry *pde_rcvlist_err;
+	struct proc_dir_entry *bcmproc_dir;
+	struct can_dev_rcv_lists *rx_alldev_list;
+	spinlock_t rcvlists_lock;
+	struct timer_list stattimer;
+	struct can_pkg_stats *pkg_stats;
+	struct can_rcv_lists_stats *rcv_lists_stats;
+	struct hlist_head cgw_list;
+	u64 android_kabi_reserved1;
+};
+
+struct netns_xdp {
+	struct mutex lock;
+	struct hlist_head list;
+};
+
+struct uevent_sock;
+
+struct net_generic;
+
+struct net {
+	refcount_t passive;
+	spinlock_t rules_mod_lock;
+	atomic_t dev_unreg_count;
+	unsigned int dev_base_seq;
+	u32 ifindex;
+	spinlock_t nsid_lock;
+	atomic_t fnhe_genid;
+	struct list_head list;
+	struct list_head exit_list;
+	struct llist_node cleanup_list;
+	struct key_tag *key_domain;
+	struct user_namespace *user_ns;
+	struct ucounts *ucounts;
+	struct idr netns_ids;
+	struct ns_common ns;
+	struct ref_tracker_dir refcnt_tracker;
+	struct ref_tracker_dir notrefcnt_tracker;
+	struct list_head dev_base_head;
+	struct proc_dir_entry *proc_net;
+	struct proc_dir_entry *proc_net_stat;
+	struct ctl_table_set sysctls;
+	struct sock *rtnl;
+	struct sock *genl_sock;
+	struct uevent_sock *uevent_sock;
+	struct hlist_head *dev_name_head;
+	struct hlist_head *dev_index_head;
+	struct xarray dev_by_index;
+	struct raw_notifier_head netdev_chain;
+	u32 hash_mix;
+	struct net_device *loopback_dev;
+	struct list_head rules_ops;
+	struct netns_core core;
+	struct netns_mib mib;
+	struct netns_packet packet;
+	struct netns_unix unx;
+	struct netns_nexthop nexthop;
+	long: 64;
+	struct netns_ipv4 ipv4;
+	struct netns_ipv6 ipv6;
+	struct netns_ieee802154_lowpan ieee802154_lowpan;
+	struct netns_nf nf;
+	struct netns_ct ct;
+	struct sk_buff_head wext_nlevents;
+	struct net_generic __attribute__((btf_type_tag("rcu"))) *gen;
+	struct netns_bpf bpf;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct netns_xfrm xfrm;
+	u64 net_cookie;
+	struct netns_can can;
+	struct netns_xdp xdp;
+	struct sock *diag_nlsk;
+};
+
+typedef int proc_handler(struct ctl_table *, int, void *, size_t *, loff_t *);
+
+struct ctl_table_poll;
+
+struct ctl_table {
+	const char *procname;
+	void *data;
+	int maxlen;
+	umode_t mode;
+	enum {
+		SYSCTL_TABLE_TYPE_DEFAULT = 0,
+		SYSCTL_TABLE_TYPE_PERMANENTLY_EMPTY = 1,
+	} type;
+	proc_handler *proc_handler;
+	struct ctl_table_poll *poll;
+	void *extra1;
+	void *extra2;
+};
+
+struct ctl_table_poll {
+	atomic_t event;
+	wait_queue_head_t wait;
+};
+
+struct ctl_table_root {
+	struct ctl_table_set default_set;
+	struct ctl_table_set * (*lookup)(struct ctl_table_root *);
+	void (*set_ownership)(struct ctl_table_header *, struct ctl_table *, kuid_t *, kgid_t *);
+	int (*permissions)(struct ctl_table_header *, struct ctl_table *);
+};
+
+struct ctl_node {
+	struct rb_node node;
+	struct ctl_table_header *header;
+};
+
+typedef int (*notifier_fn_t)(struct notifier_block *, unsigned long, void *);
+
+struct notifier_block {
+	notifier_fn_t notifier_call;
+	struct notifier_block __attribute__((btf_type_tag("rcu"))) *next;
+	int priority;
+};
+
+struct prot_inuse {
+	int all;
+	int val[64];
+};
+
+struct u64_stats_sync {};
+
+struct ipstats_mib {
+	u64 mibs[38];
+	struct u64_stats_sync syncp;
+};
+
+struct tcp_mib {
+	unsigned long mibs[16];
+};
+
+struct linux_mib {
+	unsigned long mibs[127];
+};
+
+struct udp_mib {
+	unsigned long mibs[10];
+};
+
+struct linux_xfrm_mib {
+	unsigned long mibs[29];
+};
+
+struct icmp_mib {
+	unsigned long mibs[30];
+};
+
+struct icmpmsg_mib {
+	atomic_long_t mibs[512];
+};
+
+struct icmpv6_mib {
+	unsigned long mibs[7];
+};
+
+struct icmpv6msg_mib {
+	atomic_long_t mibs[512];
+};
+
+struct ip_ra_chain {
+	struct ip_ra_chain __attribute__((btf_type_tag("rcu"))) *next;
+	struct sock *sk;
+	union {
+		void (*destructor)(struct sock *);
+		struct sock *saved_sk;
+	};
+	struct callback_head rcu;
+};
+
+struct fib_table {
+	struct hlist_node tb_hlist;
+	u32 tb_id;
+	int tb_num_default;
+	struct callback_head rcu;
+	unsigned long *tb_data;
+	unsigned long __data[0];
+};
+
+typedef u32 (*rht_hashfn_t)(const void *, u32, u32);
+
+typedef u32 (*rht_obj_hashfn_t)(const void *, u32, u32);
+
+struct rhashtable_compare_arg;
+
+typedef int (*rht_obj_cmpfn_t)(struct rhashtable_compare_arg *, const void *);
+
+struct rhashtable_params {
+	u16 nelem_hint;
+	u16 key_len;
+	u16 key_offset;
+	u16 head_offset;
+	unsigned int max_size;
+	u16 min_size;
+	bool automatic_shrinking;
+	rht_hashfn_t hashfn;
+	rht_obj_hashfn_t obj_hashfn;
+	rht_obj_cmpfn_t obj_cmpfn;
+};
+
+struct bucket_table;
+
+struct rhashtable {
+	struct bucket_table __attribute__((btf_type_tag("rcu"))) *tbl;
+	unsigned int key_len;
+	unsigned int max_elems;
+	struct rhashtable_params p;
+	bool rhlist;
+	struct work_struct run_work;
+	struct mutex mutex;
+	spinlock_t lock;
+	atomic_t nelems;
+};
+
+struct inet_frags;
+
+struct fqdir {
+	long high_thresh;
+	long low_thresh;
+	int timeout;
+	int max_dist;
+	struct inet_frags *f;
+	struct net *net;
+	bool dead;
+	long: 64;
+	long: 64;
+	struct rhashtable rhashtable;
+	long: 64;
+	long: 64;
+	long: 64;
+	atomic_long_t mem;
+	struct work_struct destroy_work;
+	struct llist_node free_list;
+};
+
+struct inet_frag_queue;
+
+struct inet_frags {
+	unsigned int qsize;
+	void (*constructor)(struct inet_frag_queue *, const void *);
+	void (*destructor)(struct inet_frag_queue *);
+	void (*frag_expire)(struct timer_list *);
+	struct kmem_cache *frags_cachep;
+	const char *frags_cache_name;
+	struct rhashtable_params rhash_params;
+	refcount_t refcnt;
+	struct completion completion;
+};
+
+typedef __u32 __be32;
+
+typedef __u16 __be16;
+
+struct frag_v4_compare_key {
+	__be32 saddr;
+	__be32 daddr;
+	u32 user;
+	u32 vif;
+	__be16 id;
+	u16 protocol;
+};
+
+struct in6_addr {
+	union {
+		__u8 u6_addr8[16];
+		__be16 u6_addr16[8];
+		__be32 u6_addr32[4];
+	} in6_u;
+};
+
+struct frag_v6_compare_key {
+	struct in6_addr saddr;
+	struct in6_addr daddr;
+	u32 user;
+	__be32 id;
+	u32 iif;
+};
+
+struct inet_frag_queue {
+	struct rhash_head node;
+	union {
+		struct frag_v4_compare_key v4;
+		struct frag_v6_compare_key v6;
+	} key;
+	struct timer_list timer;
+	spinlock_t lock;
+	refcount_t refcnt;
+	struct rb_root rb_fragments;
+	struct sk_buff *fragments_tail;
+	struct sk_buff *last_run_head;
+	ktime_t stamp;
+	int len;
+	int meat;
+	u8 mono_delivery_time;
+	__u8 flags;
+	u16 max_size;
+	struct fqdir *fqdir;
+	struct callback_head rcu;
+};
+
+typedef __u32 __wsum;
+
+typedef unsigned int sk_buff_data_t;
+
+struct skb_ext;
+
+struct sk_buff {
+	union {
+		struct {
+			struct sk_buff *next;
+			struct sk_buff *prev;
+			union {
+				struct net_device *dev;
+				unsigned long dev_scratch;
+			};
+		};
+		struct rb_node rbnode;
+		struct list_head list;
+		struct llist_node ll_node;
+	};
+	struct sock *sk;
+	union {
+		ktime_t tstamp;
+		u64 skb_mstamp_ns;
+	};
+	char cb[48];
+	union {
+		struct {
+			unsigned long _skb_refdst;
+			void (*destructor)(struct sk_buff *);
+		};
+		struct list_head tcp_tsorted_anchor;
+		unsigned long _sk_redir;
+	};
+	unsigned long _nfct;
+	unsigned int len;
+	unsigned int data_len;
+	__u16 mac_len;
+	__u16 hdr_len;
+	__u16 queue_mapping;
+	__u8 __cloned_offset[0];
+	__u8 cloned: 1;
+	__u8 nohdr: 1;
+	__u8 fclone: 2;
+	__u8 peeked: 1;
+	__u8 head_frag: 1;
+	__u8 pfmemalloc: 1;
+	__u8 pp_recycle: 1;
+	__u8 active_extensions;
+	union {
+		struct {
+			__u8 __pkt_type_offset[0];
+			__u8 pkt_type: 3;
+			__u8 ignore_df: 1;
+			__u8 dst_pending_confirm: 1;
+			__u8 ip_summed: 2;
+			__u8 ooo_okay: 1;
+			__u8 __mono_tc_offset[0];
+			__u8 mono_delivery_time: 1;
+			__u8 tc_at_ingress: 1;
+			__u8 tc_skip_classify: 1;
+			__u8 remcsum_offload: 1;
+			__u8 csum_complete_sw: 1;
+			__u8 csum_level: 2;
+			__u8 inner_protocol_type: 1;
+			__u8 l4_hash: 1;
+			__u8 sw_hash: 1;
+			__u8 wifi_acked_valid: 1;
+			__u8 wifi_acked: 1;
+			__u8 no_fcs: 1;
+			__u8 encapsulation: 1;
+			__u8 encap_hdr_csum: 1;
+			__u8 csum_valid: 1;
+			__u8 ndisc_nodetype: 2;
+			__u8 nf_trace: 1;
+			__u8 redirected: 1;
+			__u8 from_ingress: 1;
+			__u8 nf_skip_egress: 1;
+			__u8 slow_gro: 1;
+			__u16 tc_index;
+			u16 alloc_cpu;
+			union {
+				__wsum csum;
+				struct {
+					__u16 csum_start;
+					__u16 csum_offset;
+				};
+			};
+			__u32 priority;
+			int skb_iif;
+			__u32 hash;
+			union {
+				u32 vlan_all;
+				struct {
+					__be16 vlan_proto;
+					__u16 vlan_tci;
+				};
+			};
+			union {
+				unsigned int napi_id;
+				unsigned int sender_cpu;
+			};
+			__u32 secmark;
+			union {
+				__u32 mark;
+				__u32 reserved_tailroom;
+			};
+			union {
+				__be16 inner_protocol;
+				__u8 inner_ipproto;
+			};
+			__u16 inner_transport_header;
+			__u16 inner_network_header;
+			__u16 inner_mac_header;
+			__be16 protocol;
+			__u16 transport_header;
+			__u16 network_header;
+			__u16 mac_header;
+			u64 android_kabi_reserved1;
+			u64 android_kabi_reserved2;
+		};
+		struct {
+			__u8 __pkt_type_offset[0];
+			__u8 pkt_type: 3;
+			__u8 ignore_df: 1;
+			__u8 dst_pending_confirm: 1;
+			__u8 ip_summed: 2;
+			__u8 ooo_okay: 1;
+			__u8 __mono_tc_offset[0];
+			__u8 mono_delivery_time: 1;
+			__u8 tc_at_ingress: 1;
+			__u8 tc_skip_classify: 1;
+			__u8 remcsum_offload: 1;
+			__u8 csum_complete_sw: 1;
+			__u8 csum_level: 2;
+			__u8 inner_protocol_type: 1;
+			__u8 l4_hash: 1;
+			__u8 sw_hash: 1;
+			__u8 wifi_acked_valid: 1;
+			__u8 wifi_acked: 1;
+			__u8 no_fcs: 1;
+			__u8 encapsulation: 1;
+			__u8 encap_hdr_csum: 1;
+			__u8 csum_valid: 1;
+			__u8 ndisc_nodetype: 2;
+			__u8 nf_trace: 1;
+			__u8 redirected: 1;
+			__u8 from_ingress: 1;
+			__u8 nf_skip_egress: 1;
+			__u8 slow_gro: 1;
+			__u16 tc_index;
+			u16 alloc_cpu;
+			union {
+				__wsum csum;
+				struct {
+					__u16 csum_start;
+					__u16 csum_offset;
+				};
+			};
+			__u32 priority;
+			int skb_iif;
+			__u32 hash;
+			union {
+				u32 vlan_all;
+				struct {
+					__be16 vlan_proto;
+					__u16 vlan_tci;
+				};
+			};
+			union {
+				unsigned int napi_id;
+				unsigned int sender_cpu;
+			};
+			__u32 secmark;
+			union {
+				__u32 mark;
+				__u32 reserved_tailroom;
+			};
+			union {
+				__be16 inner_protocol;
+				__u8 inner_ipproto;
+			};
+			__u16 inner_transport_header;
+			__u16 inner_network_header;
+			__u16 inner_mac_header;
+			__be16 protocol;
+			__u16 transport_header;
+			__u16 network_header;
+			__u16 mac_header;
+			u64 android_kabi_reserved1;
+			u64 android_kabi_reserved2;
+		} headers;
+	};
+	sk_buff_data_t tail;
+	sk_buff_data_t end;
+	unsigned char *head;
+	unsigned char *data;
+	unsigned int truesize;
+	refcount_t users;
+	struct skb_ext *extensions;
+};
+
+struct skb_ext {
+	refcount_t refcnt;
+	u8 offset[1];
+	u8 chunks;
+	long: 0;
+	char data[0];
+};
+
+struct rhashtable_compare_arg {
+	struct rhashtable *ht;
+	const void *key;
+};
+
+struct lockdep_map {};
+
+struct rhash_lock_head;
+
+struct bucket_table {
+	unsigned int size;
+	unsigned int nest;
+	u32 hash_rnd;
+	struct list_head walkers;
+	struct callback_head rcu;
+	struct bucket_table __attribute__((btf_type_tag("rcu"))) *future_tbl;
+	struct lockdep_map dep_map;
+	long: 64;
+	struct rhash_lock_head __attribute__((btf_type_tag("rcu"))) *buckets[0];
+};
+
+enum tcp_ca_event {
+	CA_EVENT_TX_START = 0,
+	CA_EVENT_CWND_RESTART = 1,
+	CA_EVENT_COMPLETE_CWR = 2,
+	CA_EVENT_LOSS = 3,
+	CA_EVENT_ECN_NO_CE = 4,
+	CA_EVENT_ECN_IS_CE = 5,
+};
+
+struct ack_sample;
+
+struct rate_sample;
+
+union tcp_cc_info;
+
+struct tcp_congestion_ops {
+	u32 (*ssthresh)(struct sock *);
+	void (*cong_avoid)(struct sock *, u32, u32);
+	void (*set_state)(struct sock *, u8);
+	void (*cwnd_event)(struct sock *, enum tcp_ca_event);
+	void (*in_ack_event)(struct sock *, u32);
+	void (*pkts_acked)(struct sock *, const struct ack_sample *);
+	u32 (*min_tso_segs)(struct sock *);
+	void (*cong_control)(struct sock *, const struct rate_sample *);
+	u32 (*undo_cwnd)(struct sock *);
+	u32 (*sndbuf_expand)(struct sock *);
+	size_t (*get_info)(struct sock *, u32, int *, union tcp_cc_info *);
+	char name[16];
+	struct module *owner;
+	struct list_head list;
+	u32 key;
+	u32 flags;
+	void (*init)(struct sock *);
+	void (*release)(struct sock *);
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct tcp_fastopen_context {
+	siphash_key_t key[2];
+	int num;
+	struct callback_head rcu;
+};
+
+typedef struct {
+	atomic_t refcnt;
+} rcuref_t;
+
+typedef struct {} netdevice_tracker;
+
+struct xfrm_state;
+
+struct uncached_list;
+
+struct lwtunnel_state;
+
+struct dst_entry {
+	struct net_device *dev;
+	struct dst_ops *ops;
+	unsigned long _metrics;
+	unsigned long expires;
+	struct xfrm_state *xfrm;
+	int (*input)(struct sk_buff *);
+	int (*output)(struct net *, struct sock *, struct sk_buff *);
+	unsigned short flags;
+	short obsolete;
+	unsigned short header_len;
+	unsigned short trailer_len;
+	rcuref_t __rcuref;
+	int __use;
+	unsigned long lastuse;
+	struct callback_head callback_head;
+	short error;
+	short __pad;
+	__u32 tclassid;
+	netdevice_tracker dev_tracker;
+	struct list_head rt_uncached;
+	struct uncached_list *rt_uncached_list;
+	struct lwtunnel_state *lwtstate;
+};
+
+enum nf_log_type {
+	NF_LOG_TYPE_LOG = 0,
+	NF_LOG_TYPE_ULOG = 1,
+	NF_LOG_TYPE_MAX = 2,
+};
+
+typedef u8 u_int8_t;
+
+struct nf_loginfo;
+
+typedef void nf_logfn(struct net *, u_int8_t, unsigned int, const struct sk_buff *, const struct net_device *, const struct net_device *, const struct nf_loginfo *, const char *);
+
+struct nf_logger {
+	char *name;
+	enum nf_log_type type;
+	nf_logfn *logfn;
+	struct module *me;
+};
+
+struct nf_hook_state;
+
+typedef unsigned int nf_hookfn(void *, struct sk_buff *, const struct nf_hook_state *);
+
+struct nf_hook_entry {
+	nf_hookfn *hook;
+	void *priv;
+};
+
+struct nf_hook_entries {
+	u16 num_hook_entries;
+	struct nf_hook_entry hooks[0];
+};
+
+struct ip_conntrack_stat {
+	unsigned int found;
+	unsigned int invalid;
+	unsigned int insert;
+	unsigned int insert_failed;
+	unsigned int clash_resolve;
+	unsigned int drop;
+	unsigned int early_drop;
+	unsigned int error;
+	unsigned int expect_new;
+	unsigned int expect_create;
+	unsigned int expect_delete;
+	unsigned int search_restart;
+	unsigned int chaintoolong;
+};
+
+struct nf_ct_event;
+
+struct nf_exp_event;
+
+struct nf_ct_event_notifier {
+	int (*ct_event)(unsigned int, const struct nf_ct_event *);
+	int (*exp_event)(unsigned int, const struct nf_exp_event *);
+};
+
+struct net_generic {
+	union {
+		struct {
+			unsigned int len;
+			struct callback_head rcu;
+		} s;
+		struct {
+			struct {} __empty_ptr;
+			void *ptr[0];
+		};
+	};
+};
+
+struct cgroup_namespace {
+	struct ns_common ns;
+	struct user_namespace *user_ns;
+	struct ucounts *ucounts;
+	struct css_set *root_cset;
+};
+
+struct cgroup_subsys_state;
+
+struct cgroup;
+
+struct css_set {
+	struct cgroup_subsys_state *subsys[7];
+	refcount_t refcount;
+	struct css_set *dom_cset;
+	struct cgroup *dfl_cgrp;
+	int nr_tasks;
+	struct list_head tasks;
+	struct list_head mg_tasks;
+	struct list_head dying_tasks;
+	struct list_head task_iters;
+	struct list_head e_cset_node[7];
+	struct list_head threaded_csets;
+	struct list_head threaded_csets_node;
+	struct hlist_node hlist;
+	struct list_head cgrp_links;
+	struct list_head mg_src_preload_node;
+	struct list_head mg_dst_preload_node;
+	struct list_head mg_node;
+	struct cgroup *mg_src_cgrp;
+	struct cgroup *mg_dst_cgrp;
+	struct css_set *mg_dst_cset;
+	bool dead;
+	struct callback_head callback_head;
+};
+
+struct rcu_work {
+	struct work_struct work;
+	struct callback_head rcu;
+	struct workqueue_struct *wq;
+};
+
+struct cgroup_subsys;
+
+struct cgroup_subsys_state {
+	struct cgroup *cgroup;
+	struct cgroup_subsys *ss;
+	struct percpu_ref refcnt;
+	struct list_head sibling;
+	struct list_head children;
+	struct list_head rstat_css_node;
+	int id;
+	unsigned int flags;
+	u64 serial_nr;
+	atomic_t online_cnt;
+	struct work_struct destroy_work;
+	struct rcu_work destroy_rwork;
+	struct cgroup_subsys_state *parent;
+};
+
+struct cgroup_file {
+	struct kernfs_node *kn;
+	unsigned long notified_at;
+	struct timer_list notify_timer;
+};
+
+struct cacheline_padding {
+	char x[0];
+};
+
+struct task_cputime {
+	u64 stime;
+	u64 utime;
+	unsigned long long sum_exec_runtime;
+};
+
+struct cgroup_base_stat {
+	struct task_cputime cputime;
+};
+
+struct cgroup_bpf {
+	struct bpf_prog_array __attribute__((btf_type_tag("rcu"))) *effective[33];
+	struct hlist_head progs[33];
+	u8 flags[33];
+	struct list_head storages;
+	struct bpf_prog_array *inactive;
+	struct percpu_ref refcnt;
+	struct work_struct release_work;
+};
+
+struct cgroup_freezer_state {
+	bool freeze;
+	int e_freeze;
+	int nr_frozen_descendants;
+	int nr_frozen_tasks;
+};
+
+struct cgroup_root;
+
+struct cgroup_rstat_cpu;
+
+struct psi_group;
+
+struct cgroup {
+	struct cgroup_subsys_state self;
+	unsigned long flags;
+	int level;
+	int max_depth;
+	int nr_descendants;
+	int nr_dying_descendants;
+	int max_descendants;
+	int nr_populated_csets;
+	int nr_populated_domain_children;
+	int nr_populated_threaded_children;
+	int nr_threaded_children;
+	struct kernfs_node *kn;
+	struct cgroup_file procs_file;
+	struct cgroup_file events_file;
+	struct cgroup_file psi_files[4];
+	u16 subtree_control;
+	u16 subtree_ss_mask;
+	u16 old_subtree_control;
+	u16 old_subtree_ss_mask;
+	struct cgroup_subsys_state __attribute__((btf_type_tag("rcu"))) *subsys[7];
+	struct cgroup_root *root;
+	struct list_head cset_links;
+	struct list_head e_csets[7];
+	struct cgroup *dom_cgrp;
+	struct cgroup *old_dom_cgrp;
+	struct cgroup_rstat_cpu __attribute__((btf_type_tag("percpu"))) *rstat_cpu;
+	struct list_head rstat_css_list;
+	struct cacheline_padding _pad_;
+	struct cgroup *rstat_flush_next;
+	struct cgroup_base_stat last_bstat;
+	struct cgroup_base_stat bstat;
+	struct prev_cputime prev_cputime;
+	struct list_head pidlists;
+	struct mutex pidlist_mutex;
+	wait_queue_head_t offline_waitq;
+	struct work_struct release_agent_work;
+	struct psi_group *psi;
+	struct cgroup_bpf bpf;
+	atomic_t congestion_count;
+	struct cgroup_freezer_state freezer;
+	struct bpf_local_storage __attribute__((btf_type_tag("rcu"))) *bpf_cgrp_storage;
+	u64 android_backport_reserved1;
+	struct cgroup *ancestors[0];
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct kernfs_root;
+
+struct kernfs_elem_dir {
+	unsigned long subdirs;
+	struct rb_root children;
+	struct kernfs_root *root;
+	unsigned long rev;
+};
+
+struct kernfs_elem_symlink {
+	struct kernfs_node *target_kn;
+};
+
+struct kernfs_ops;
+
+struct kernfs_open_node;
+
+struct kernfs_elem_attr {
+	const struct kernfs_ops *ops;
+	struct kernfs_open_node __attribute__((btf_type_tag("rcu"))) *open;
+	loff_t size;
+	struct kernfs_node *notify_next;
+};
+
+struct kernfs_iattrs;
+
+struct kernfs_node {
+	atomic_t count;
+	atomic_t active;
+	struct kernfs_node *parent;
+	const char *name;
+	struct rb_node rb;
+	const void *ns;
+	unsigned int hash;
+	union {
+		struct kernfs_elem_dir dir;
+		struct kernfs_elem_symlink symlink;
+		struct kernfs_elem_attr attr;
+	};
+	void *priv;
+	u64 id;
+	unsigned short flags;
+	umode_t mode;
+	struct kernfs_iattrs *iattr;
+	struct callback_head rcu;
+	u64 android_kabi_reserved1;
+};
+
+typedef unsigned int __poll_t;
+
+struct kernfs_open_file;
+
+struct poll_table_struct;
+
+struct kernfs_ops {
+	int (*open)(struct kernfs_open_file *);
+	void (*release)(struct kernfs_open_file *);
+	int (*seq_show)(struct seq_file *, void *);
+	void * (*seq_start)(struct seq_file *, loff_t *);
+	void * (*seq_next)(struct seq_file *, void *, loff_t *);
+	void (*seq_stop)(struct seq_file *, void *);
+	ssize_t (*read)(struct kernfs_open_file *, char *, size_t, loff_t);
+	size_t atomic_write_len;
+	bool prealloc;
+	ssize_t (*write)(struct kernfs_open_file *, char *, size_t, loff_t);
+	__poll_t (*poll)(struct kernfs_open_file *, struct poll_table_struct *);
+	int (*mmap)(struct kernfs_open_file *, struct vm_area_struct *);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct kernfs_open_file {
+	struct kernfs_node *kn;
+	struct file *file;
+	struct seq_file *seq_file;
+	void *priv;
+	struct mutex mutex;
+	struct mutex prealloc_mutex;
+	int event;
+	struct list_head list;
+	char *prealloc_buf;
+	size_t atomic_write_len;
+	bool mmapped: 1;
+	bool released: 1;
+	const struct vm_operations_struct *vm_ops;
+	u64 android_kabi_reserved1;
+};
+
+struct seq_operations;
+
+struct seq_file {
+	char *buf;
+	size_t size;
+	size_t from;
+	size_t count;
+	size_t pad_until;
+	loff_t index;
+	loff_t read_pos;
+	struct mutex lock;
+	const struct seq_operations *op;
+	int poll_event;
+	const struct file *file;
+	void *private;
+};
+
+struct seq_operations {
+	void * (*start)(struct seq_file *, loff_t *);
+	void (*stop)(struct seq_file *, void *);
+	void * (*next)(struct seq_file *, void *, loff_t *);
+	int (*show)(struct seq_file *, void *);
+};
+
+typedef void (*poll_queue_proc)(struct file *, wait_queue_head_t *, struct poll_table_struct *);
+
+struct poll_table_struct {
+	poll_queue_proc _qproc;
+	__poll_t _key;
+};
+
+struct kernfs_open_node {
+	struct callback_head callback_head;
+	atomic_t event;
+	wait_queue_head_t poll;
+	struct list_head files;
+	unsigned int nr_mmapped;
+	unsigned int nr_to_release;
+};
+
+struct cgroup_root {
+	struct kernfs_root *kf_root;
+	unsigned int subsys_mask;
+	int hierarchy_id;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct cgroup cgrp;
+	struct cgroup *cgrp_ancestor_storage;
+	atomic_t nr_cgrps;
+	struct list_head root_list;
+	unsigned int flags;
+	char release_agent_path[4096];
+	char name[64];
+	long: 0;
+	u8 android_backport_reserved1[28];
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct cgroup_rstat_cpu {
+	struct u64_stats_sync bsync;
+	struct cgroup_base_stat bstat;
+	struct cgroup_base_stat last_bstat;
+	struct cgroup_base_stat subtree_bstat;
+	struct cgroup_base_stat last_subtree_bstat;
+	struct cgroup *updated_children;
+	struct cgroup *updated_next;
+};
+
+struct psi_group_cpu;
+
+struct psi_group {
+	struct psi_group *parent;
+	bool enabled;
+	struct mutex avgs_lock;
+	struct psi_group_cpu __attribute__((btf_type_tag("percpu"))) *pcpu;
+	u64 avg_total[7];
+	u64 avg_last_update;
+	u64 avg_next_update;
+	struct delayed_work avgs_work;
+	struct list_head avg_triggers;
+	u32 avg_nr_triggers[7];
+	u64 total[14];
+	unsigned long avg[21];
+	struct task_struct __attribute__((btf_type_tag("rcu"))) *rtpoll_task;
+	struct timer_list rtpoll_timer;
+	wait_queue_head_t rtpoll_wait;
+	atomic_t rtpoll_wakeup;
+	atomic_t rtpoll_scheduled;
+	struct mutex rtpoll_trigger_lock;
+	struct list_head rtpoll_triggers;
+	u32 rtpoll_nr_triggers[7];
+	u32 rtpoll_states;
+	u64 rtpoll_min_period;
+	u64 rtpoll_total[7];
+	u64 rtpoll_next_update;
+	u64 rtpoll_until;
+};
+
+struct psi_group_cpu {
+	seqcount_t seq;
+	unsigned int tasks[4];
+	u32 state_mask;
+	u32 times[8];
+	u64 state_start;
+	u32 times_prev[16];
+};
+
+struct bpf_local_storage_data;
+
+struct bpf_local_storage_map;
+
+struct bpf_local_storage {
+	struct bpf_local_storage_data __attribute__((btf_type_tag("rcu"))) *cache[16];
+	struct bpf_local_storage_map __attribute__((btf_type_tag("rcu"))) *smap;
+	struct hlist_head list;
+	void *owner;
+	struct callback_head rcu;
+	raw_spinlock_t lock;
+};
+
+struct cgroup_taskset;
+
+struct cftype;
+
+struct cgroup_subsys {
+	struct cgroup_subsys_state * (*css_alloc)(struct cgroup_subsys_state *);
+	int (*css_online)(struct cgroup_subsys_state *);
+	void (*css_offline)(struct cgroup_subsys_state *);
+	void (*css_released)(struct cgroup_subsys_state *);
+	void (*css_free)(struct cgroup_subsys_state *);
+	void (*css_reset)(struct cgroup_subsys_state *);
+	void (*css_rstat_flush)(struct cgroup_subsys_state *, int);
+	int (*css_extra_stat_show)(struct seq_file *, struct cgroup_subsys_state *);
+	int (*css_local_stat_show)(struct seq_file *, struct cgroup_subsys_state *);
+	int (*can_attach)(struct cgroup_taskset *);
+	void (*cancel_attach)(struct cgroup_taskset *);
+	void (*attach)(struct cgroup_taskset *);
+	void (*post_attach)();
+	int (*can_fork)(struct task_struct *, struct css_set *);
+	void (*cancel_fork)(struct task_struct *, struct css_set *);
+	void (*fork)(struct task_struct *);
+	void (*exit)(struct task_struct *);
+	void (*release)(struct task_struct *);
+	void (*bind)(struct cgroup_subsys_state *);
+	bool early_init: 1;
+	bool implicit_on_dfl: 1;
+	bool threaded: 1;
+	int id;
+	const char *name;
+	const char *legacy_name;
+	struct cgroup_root *root;
+	struct idr css_idr;
+	struct list_head cfts;
+	struct cftype *dfl_cftypes;
+	struct cftype *legacy_cftypes;
+	unsigned int depends_on;
+};
+
+struct cftype {
+	char name[64];
+	unsigned long private;
+	size_t max_write_len;
+	unsigned int flags;
+	unsigned int file_offset;
+	struct cgroup_subsys *ss;
+	struct list_head node;
+	struct kernfs_ops *kf_ops;
+	int (*open)(struct kernfs_open_file *);
+	void (*release)(struct kernfs_open_file *);
+	u64 (*read_u64)(struct cgroup_subsys_state *, struct cftype *);
+	s64 (*read_s64)(struct cgroup_subsys_state *, struct cftype *);
+	int (*seq_show)(struct seq_file *, void *);
+	void * (*seq_start)(struct seq_file *, loff_t *);
+	void * (*seq_next)(struct seq_file *, void *, loff_t *);
+	void (*seq_stop)(struct seq_file *, void *);
+	int (*write_u64)(struct cgroup_subsys_state *, struct cftype *, u64);
+	int (*write_s64)(struct cgroup_subsys_state *, struct cftype *, s64);
+	ssize_t (*write)(struct kernfs_open_file *, char *, size_t, loff_t);
+	__poll_t (*poll)(struct kernfs_open_file *, struct poll_table_struct *);
+};
+
+struct group_info {
+	atomic_t usage;
+	int ngroups;
+	kgid_t gid[0];
+};
+
+struct kioctx;
+
+struct kioctx_table {
+	struct callback_head rcu;
+	unsigned int nr;
+	struct kioctx __attribute__((btf_type_tag("rcu"))) *table[0];
+};
+
+struct page_counter {
+	atomic_long_t usage;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct cacheline_padding _pad1_;
+	unsigned long emin;
+	atomic_long_t min_usage;
+	atomic_long_t children_min_usage;
+	unsigned long elow;
+	atomic_long_t low_usage;
+	atomic_long_t children_low_usage;
+	unsigned long watermark;
+	unsigned long failcnt;
+	struct cacheline_padding _pad2_;
+	unsigned long min;
+	unsigned long low;
+	unsigned long high;
+	unsigned long max;
+	struct page_counter *parent;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct mem_cgroup_id {
+	int id;
+	refcount_t ref;
+};
+
+struct vmpressure {
+	unsigned long scanned;
+	unsigned long reclaimed;
+	unsigned long tree_scanned;
+	unsigned long tree_reclaimed;
+	spinlock_t sr_lock;
+	struct list_head events;
+	struct mutex events_lock;
+	struct work_struct work;
+};
+
+struct mem_cgroup_threshold_ary;
+
+struct mem_cgroup_thresholds {
+	struct mem_cgroup_threshold_ary *primary;
+	struct mem_cgroup_threshold_ary *spare;
+};
+
+struct fprop_global {
+	struct percpu_counter events;
+	unsigned int period;
+	seqcount_t sequence;
+};
+
+struct wb_domain {
+	spinlock_t lock;
+	struct fprop_global completions;
+	struct timer_list period_timer;
+	unsigned long period_time;
+	unsigned long dirty_limit_tstamp;
+	unsigned long dirty_limit;
+};
+
+struct wb_completion {
+	atomic_t cnt;
+	wait_queue_head_t *waitq;
+};
+
+struct memcg_cgwb_frn {
+	u64 bdi_id;
+	int memcg_id;
+	u64 at;
+	struct wb_completion done;
+};
+
+struct deferred_split {
+	spinlock_t split_queue_lock;
+	struct list_head split_queue;
+	unsigned long split_queue_len;
+};
+
+struct lru_gen_mm_list {
+	struct list_head fifo;
+	spinlock_t lock;
+};
+
+struct memcg_vmstats;
+
+struct obj_cgroup;
+
+struct memcg_vmstats_percpu;
+
+struct mem_cgroup_per_node;
+
+struct mem_cgroup {
+	struct cgroup_subsys_state css;
+	struct mem_cgroup_id id;
+	long: 64;
+	long: 64;
+	struct page_counter memory;
+	union {
+		struct page_counter swap;
+		struct page_counter memsw;
+	};
+	struct page_counter kmem;
+	struct page_counter tcpmem;
+	struct work_struct high_work;
+	unsigned long soft_limit;
+	struct vmpressure vmpressure;
+	bool oom_group;
+	bool oom_lock;
+	int under_oom;
+	int swappiness;
+	int oom_kill_disable;
+	struct cgroup_file events_file;
+	struct cgroup_file events_local_file;
+	struct cgroup_file swap_events_file;
+	struct mutex thresholds_lock;
+	struct mem_cgroup_thresholds thresholds;
+	struct mem_cgroup_thresholds memsw_thresholds;
+	struct list_head oom_notify;
+	unsigned long move_charge_at_immigrate;
+	spinlock_t move_lock;
+	unsigned long move_lock_flags;
+	long: 64;
+	long: 64;
+	struct cacheline_padding _pad1_;
+	struct memcg_vmstats *vmstats;
+	atomic_long_t memory_events[9];
+	atomic_long_t memory_events_local[9];
+	unsigned long socket_pressure;
+	bool tcpmem_active;
+	int tcpmem_pressure;
+	int kmemcg_id;
+	struct obj_cgroup __attribute__((btf_type_tag("rcu"))) *objcg;
+	struct list_head objcg_list;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct cacheline_padding _pad2_;
+	atomic_t moving_account;
+	struct task_struct *move_lock_task;
+	struct memcg_vmstats_percpu __attribute__((btf_type_tag("percpu"))) *vmstats_percpu;
+	struct list_head cgwb_list;
+	struct wb_domain cgwb_domain;
+	struct memcg_cgwb_frn cgwb_frn[4];
+	struct list_head event_list;
+	spinlock_t event_list_lock;
+	struct deferred_split deferred_split_queue;
+	struct lru_gen_mm_list mm_list;
+	u64 android_backport_reserved1;
+	u64 android_backport_reserved2;
+	u64 android_oem_data1[2];
+	struct mem_cgroup_per_node *nodeinfo[0];
+};
+
+struct eventfd_ctx;
+
+struct mem_cgroup_threshold {
+	struct eventfd_ctx *eventfd;
+	unsigned long threshold;
+};
+
+struct mem_cgroup_threshold_ary {
+	int current_threshold;
+	unsigned int size;
+	struct mem_cgroup_threshold entries[0];
+};
+
+struct obj_cgroup {
+	struct percpu_ref refcnt;
+	struct mem_cgroup *memcg;
+	atomic_t nr_charged_bytes;
+	union {
+		struct list_head list;
+		struct callback_head rcu;
+	};
+};
+
+struct memcg_vmstats_percpu {
+	unsigned int stats_updates;
+	struct memcg_vmstats_percpu *parent;
+	struct memcg_vmstats *vmstats;
+	long state[49];
+	unsigned long events[17];
+	long state_prev[49];
+	unsigned long events_prev[17];
+	unsigned long nr_page_events;
+	unsigned long targets[2];
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct hlist_nulls_node {
+	struct hlist_nulls_node *next;
+	struct hlist_nulls_node **pprev;
+};
+
+struct lru_gen_folio {
+	unsigned long max_seq;
+	unsigned long min_seq[2];
+	unsigned long timestamps[4];
+	struct list_head folios[40];
+	long nr_pages[40];
+	unsigned long avg_refaulted[8];
+	unsigned long avg_total[8];
+	unsigned long protected[6];
+	atomic_long_t evicted[8];
+	atomic_long_t refaulted[8];
+	bool enabled;
+	u8 gen;
+	u8 seg;
+	struct hlist_nulls_node list;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct lru_gen_mm_state {
+	unsigned long seq;
+	struct list_head *head;
+	struct list_head *tail;
+	unsigned long *filters[2];
+	unsigned long stats[6];
+	u64 android_kabi_reserved1;
+};
+
+struct pglist_data;
+
+struct lruvec {
+	struct list_head lists[5];
+	spinlock_t lru_lock;
+	unsigned long anon_cost;
+	unsigned long file_cost;
+	atomic_long_t nonresident_age;
+	unsigned long refaults[2];
+	unsigned long flags;
+	struct lru_gen_folio lrugen;
+	struct lru_gen_mm_state mm_state;
+	struct pglist_data *pgdat;
+};
+
+struct lruvec_stats {
+	long state[42];
+	long state_local[42];
+	long state_pending[42];
+};
+
+struct mem_cgroup_reclaim_iter {
+	struct mem_cgroup *position;
+	unsigned int generation;
+};
+
+struct lruvec_stats_percpu;
+
+struct shrinker_info;
+
+struct mem_cgroup_per_node {
+	struct lruvec lruvec;
+	struct lruvec_stats_percpu __attribute__((btf_type_tag("percpu"))) *lruvec_stats_percpu;
+	struct lruvec_stats lruvec_stats;
+	unsigned long lru_zone_size[25];
+	struct mem_cgroup_reclaim_iter iter;
+	struct shrinker_info __attribute__((btf_type_tag("rcu"))) *shrinker_info;
+	struct rb_node tree_node;
+	unsigned long usage_in_excess;
+	bool on_tree;
+	struct mem_cgroup *memcg;
+	u64 android_backport_reserved1;
+};
+
+struct free_area {
+	struct list_head free_list[6];
+	unsigned long nr_free;
+};
+
+struct per_cpu_pages;
+
+struct per_cpu_zonestat;
+
+struct zone {
+	unsigned long _watermark[4];
+	unsigned long watermark_boost;
+	unsigned long nr_reserved_highatomic;
+	long lowmem_reserve[5];
+	struct pglist_data *zone_pgdat;
+	struct per_cpu_pages __attribute__((btf_type_tag("percpu"))) *per_cpu_pageset;
+	struct per_cpu_zonestat __attribute__((btf_type_tag("percpu"))) *per_cpu_zonestats;
+	int pageset_high;
+	int pageset_batch;
+	unsigned long zone_start_pfn;
+	atomic_long_t managed_pages;
+	unsigned long spanned_pages;
+	unsigned long present_pages;
+	unsigned long present_early_pages;
+	unsigned long cma_pages;
+	const char *name;
+	unsigned long nr_isolate_pageblock;
+	seqlock_t span_seqlock;
+	int order;
+	int initialized;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct cacheline_padding _pad1_;
+	struct free_area free_area[11];
+	unsigned long flags;
+	spinlock_t lock;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct cacheline_padding _pad2_;
+	unsigned long percpu_drift_mark;
+	unsigned long compact_cached_free_pfn;
+	unsigned long compact_cached_migrate_pfn[2];
+	unsigned long compact_init_migrate_pfn;
+	unsigned long compact_init_free_pfn;
+	unsigned int compact_considered;
+	unsigned int compact_defer_shift;
+	int compact_order_failed;
+	bool compact_blockskip_flush;
+	bool contiguous;
+	long: 0;
+	struct cacheline_padding _pad3_;
+	atomic_long_t vm_stat[11];
+	atomic_long_t vm_numa_event[0];
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct zoneref {
+	struct zone *zone;
+	int zone_idx;
+};
+
+struct zonelist {
+	struct zoneref _zonerefs[6];
+};
+
+enum zone_type {
+	ZONE_DMA32 = 0,
+	ZONE_NORMAL = 1,
+	ZONE_MOVABLE = 2,
+	ZONE_NOSPLIT = 3,
+	ZONE_NOMERGE = 4,
+	__MAX_NR_ZONES = 5,
+	LAST_PHYS_ZONE = 1,
+	LAST_VIRT_ZONE = 4,
+};
+
+struct lru_gen_mm_walk {
+	struct lruvec *lruvec;
+	unsigned long max_seq;
+	unsigned long next_addr;
+	int nr_pages[40];
+	int mm_stats[6];
+	int batched;
+	bool can_swap;
+	bool force_scan;
+	u64 android_kabi_reserved1;
+};
+
+struct hlist_nulls_head {
+	struct hlist_nulls_node *first;
+};
+
+struct lru_gen_memcg {
+	unsigned long seq;
+	unsigned long nr_memcgs[3];
+	struct hlist_nulls_head fifo[24];
+	spinlock_t lock;
+};
+
+struct per_cpu_nodestat;
+
+struct pglist_data {
+	struct zone node_zones[5];
+	struct zonelist node_zonelists[1];
+	int nr_zones;
+	spinlock_t node_size_lock;
+	unsigned long node_start_pfn;
+	unsigned long node_present_pages;
+	unsigned long node_spanned_pages;
+	int node_id;
+	wait_queue_head_t kswapd_wait;
+	wait_queue_head_t pfmemalloc_wait;
+	wait_queue_head_t reclaim_wait[4];
+	atomic_t nr_writeback_throttled;
+	unsigned long nr_reclaim_start;
+	struct mutex kswapd_lock;
+	struct task_struct *kswapd;
+	int kswapd_order;
+	enum zone_type kswapd_highest_zoneidx;
+	int kswapd_failures;
+	u64 android_oem_data1;
+	int kcompactd_max_order;
+	enum zone_type kcompactd_highest_zoneidx;
+	wait_queue_head_t kcompactd_wait;
+	struct task_struct *kcompactd;
+	bool proactive_compact_trigger;
+	unsigned long totalreserve_pages;
+	long: 64;
+	long: 64;
+	struct cacheline_padding _pad1_;
+	struct deferred_split deferred_split_queue;
+	struct lruvec __lruvec;
+	unsigned long flags;
+	struct lru_gen_mm_walk mm_walk;
+	struct lru_gen_memcg memcg_lru;
+	long: 64;
+	long: 64;
+	struct cacheline_padding _pad2_;
+	struct per_cpu_nodestat __attribute__((btf_type_tag("percpu"))) *per_cpu_nodestats;
+	atomic_long_t vm_stat[42];
+	u64 android_kabi_reserved1;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct per_cpu_pages {
+	spinlock_t lock;
+	int count;
+	int high;
+	int batch;
+	short free_factor;
+	struct list_head lists[17];
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+typedef signed char __s8;
+
+typedef __s8 s8;
+
+struct per_cpu_zonestat {
+	s8 vm_stat_diff[11];
+	s8 stat_threshold;
+};
+
+struct per_cpu_nodestat {
+	s8 stat_threshold;
+	s8 vm_node_stat_diff[42];
+};
+
+struct lruvec_stats_percpu {
+	long state[42];
+	long state_prev[42];
+};
+
+struct shrinker_info {
+	struct callback_head rcu;
+	atomic_long_t *nr_deferred;
+	unsigned long *map;
+	int map_nr_max;
+};
+
+typedef long long __kernel_time64_t;
+
+struct __kernel_timespec {
+	__kernel_time64_t tv_sec;
+	long long tv_nsec;
+};
+
+typedef s32 old_time32_t;
+
+struct old_timespec32 {
+	old_time32_t tv_sec;
+	s32 tv_nsec;
+};
+
+struct pollfd {
+	int fd;
+	short events;
+	short revents;
+};
+
+struct cpu_itimer {
+	u64 expires;
+	u64 incr;
+};
+
+struct task_cputime_atomic {
+	atomic64_t utime;
+	atomic64_t stime;
+	atomic64_t sum_exec_runtime;
+};
+
+struct thread_group_cputimer {
+	struct task_cputime_atomic cputime_atomic;
+};
+
+struct core_state;
+
+struct tty_struct;
+
+struct taskstats;
+
+struct tty_audit_buf;
+
+struct signal_struct {
+	refcount_t sigcnt;
+	atomic_t live;
+	int nr_threads;
+	int quick_threads;
+	struct list_head thread_head;
+	wait_queue_head_t wait_chldexit;
+	struct task_struct *curr_target;
+	struct sigpending shared_pending;
+	struct hlist_head multiprocess;
+	int group_exit_code;
+	int notify_count;
+	struct task_struct *group_exec_task;
+	int group_stop_count;
+	unsigned int flags;
+	struct core_state *core_state;
+	unsigned int is_child_subreaper: 1;
+	unsigned int has_child_subreaper: 1;
+	unsigned int next_posix_timer_id;
+	struct list_head posix_timers;
+	struct hrtimer real_timer;
+	ktime_t it_real_incr;
+	struct cpu_itimer it[2];
+	struct thread_group_cputimer cputimer;
+	struct posix_cputimers posix_cputimers;
+	struct pid *pids[4];
+	struct pid *tty_old_pgrp;
+	int leader;
+	struct tty_struct *tty;
+	seqlock_t stats_lock;
+	u64 utime;
+	u64 stime;
+	u64 cutime;
+	u64 cstime;
+	u64 gtime;
+	u64 cgtime;
+	struct prev_cputime prev_cputime;
+	unsigned long nvcsw;
+	unsigned long nivcsw;
+	unsigned long cnvcsw;
+	unsigned long cnivcsw;
+	unsigned long min_flt;
+	unsigned long maj_flt;
+	unsigned long cmin_flt;
+	unsigned long cmaj_flt;
+	unsigned long inblock;
+	unsigned long oublock;
+	unsigned long cinblock;
+	unsigned long coublock;
+	unsigned long maxrss;
+	unsigned long cmaxrss;
+	struct task_io_accounting ioac;
+	unsigned long long sum_sched_runtime;
+	struct rlimit rlim[16];
+	struct taskstats *stats;
+	unsigned int audit_tty;
+	struct tty_audit_buf *tty_audit_buf;
+	bool oom_flag_origin;
+	short oom_score_adj;
+	short oom_score_adj_min;
+	struct mm_struct *oom_mm;
+	struct mutex cred_guard_mutex;
+	struct rw_semaphore exec_update_lock;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+	u64 android_oem_data1;
+};
+
+struct core_thread {
+	struct task_struct *task;
+	struct core_thread *next;
+};
+
+struct core_state {
+	atomic_t nr_threads;
+	struct core_thread dumper;
+	struct completion startup;
+};
+
+struct taskstats {
+	__u16 version;
+	__u32 ac_exitcode;
+	__u8 ac_flag;
+	__u8 ac_nice;
+	__u64 cpu_count;
+	__u64 cpu_delay_total;
+	__u64 blkio_count;
+	__u64 blkio_delay_total;
+	__u64 swapin_count;
+	__u64 swapin_delay_total;
+	__u64 cpu_run_real_total;
+	__u64 cpu_run_virtual_total;
+	char ac_comm[32];
+	__u8 ac_sched;
+	__u8 ac_pad[3];
+	long: 0;
+	__u32 ac_uid;
+	__u32 ac_gid;
+	__u32 ac_pid;
+	__u32 ac_ppid;
+	__u32 ac_btime;
+	__u64 ac_etime;
+	__u64 ac_utime;
+	__u64 ac_stime;
+	__u64 ac_minflt;
+	__u64 ac_majflt;
+	__u64 coremem;
+	__u64 virtmem;
+	__u64 hiwater_rss;
+	__u64 hiwater_vm;
+	__u64 read_char;
+	__u64 write_char;
+	__u64 read_syscalls;
+	__u64 write_syscalls;
+	__u64 read_bytes;
+	__u64 write_bytes;
+	__u64 cancelled_write_bytes;
+	__u64 nvcsw;
+	__u64 nivcsw;
+	__u64 ac_utimescaled;
+	__u64 ac_stimescaled;
+	__u64 cpu_scaled_run_real_total;
+	__u64 freepages_count;
+	__u64 freepages_delay_total;
+	__u64 thrashing_count;
+	__u64 thrashing_delay_total;
+	__u64 ac_btime64;
+	__u64 compact_count;
+	__u64 compact_delay_total;
+	__u32 ac_tgid;
+	__u64 ac_tgetime;
+	__u64 ac_exe_dev;
+	__u64 ac_exe_inode;
+	__u64 wpcopy_count;
+	__u64 wpcopy_delay_total;
+	__u64 irq_count;
+	__u64 irq_delay_total;
+};
+
+typedef void __signalfn_t(int);
+
+typedef __signalfn_t __attribute__((btf_type_tag("user"))) *__sighandler_t;
+
+typedef void __restorefn_t();
+
+typedef __restorefn_t __attribute__((btf_type_tag("user"))) *__sigrestore_t;
+
+struct sigaction {
+	__sighandler_t sa_handler;
+	unsigned long sa_flags;
+	__sigrestore_t sa_restorer;
+	sigset_t sa_mask;
+};
+
+struct k_sigaction {
+	struct sigaction sa;
+};
+
+struct sighand_struct {
+	spinlock_t siglock;
+	refcount_t count;
+	wait_queue_head_t signalfd_wqh;
+	struct k_sigaction action[64];
+};
+
+struct bio;
+
+struct bio_list {
+	struct bio *head;
+	struct bio *tail;
+};
+
+typedef __u32 blk_opf_t;
+
+typedef u8 blk_status_t;
+
+typedef u64 sector_t;
+
+struct bvec_iter {
+	sector_t bi_sector;
+	unsigned int bi_size;
+	unsigned int bi_idx;
+	unsigned int bi_bvec_done;
+} __attribute__((packed));
+
+typedef unsigned int blk_qc_t;
+
+typedef void bio_end_io_t(struct bio *);
+
+struct bio_issue {
+	u64 value;
+};
+
+struct bio_vec {
+	struct page *bv_page;
+	unsigned int bv_len;
+	unsigned int bv_offset;
+};
+
+struct blkcg_gq;
+
+struct bio_crypt_ctx;
+
+struct bio_set;
+
+struct bio {
+	struct bio *bi_next;
+	struct block_device *bi_bdev;
+	blk_opf_t bi_opf;
+	unsigned short bi_flags;
+	unsigned short bi_ioprio;
+	enum rw_hint bi_write_hint;
+	blk_status_t bi_status;
+	atomic_t __bi_remaining;
+	struct bvec_iter bi_iter;
+	blk_qc_t bi_cookie;
+	bio_end_io_t *bi_end_io;
+	void *bi_private;
+	struct blkcg_gq *bi_blkg;
+	struct bio_issue bi_issue;
+	u64 bi_iocost_cost;
+	struct bio_crypt_ctx *bi_crypt_context;
+	bool bi_skip_dm_default_key;
+	union {};
+	unsigned short bi_vcnt;
+	unsigned short bi_max_vecs;
+	atomic_t __bi_cnt;
+	struct bio_vec *bi_io_vec;
+	struct bio_set *bi_pool;
+	u64 android_oem_data1;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	struct bio_vec bi_inline_vecs[0];
+};
+
+enum dl_dev_state {
+	DL_DEV_NO_DRIVER = 0,
+	DL_DEV_PROBING = 1,
+	DL_DEV_DRIVER_BOUND = 2,
+	DL_DEV_UNBINDING = 3,
+};
+
+struct dev_links_info {
+	struct list_head suppliers;
+	struct list_head consumers;
+	struct list_head defer_sync;
+	enum dl_dev_state status;
+};
+
+struct pm_message {
+	int event;
+};
+
+typedef struct pm_message pm_message_t;
+
+enum rpm_request {
+	RPM_REQ_NONE = 0,
+	RPM_REQ_IDLE = 1,
+	RPM_REQ_SUSPEND = 2,
+	RPM_REQ_AUTOSUSPEND = 3,
+	RPM_REQ_RESUME = 4,
+};
+
+enum rpm_status {
+	RPM_INVALID = -1,
+	RPM_ACTIVE = 0,
+	RPM_RESUMING = 1,
+	RPM_SUSPENDED = 2,
+	RPM_SUSPENDING = 3,
+};
+
+struct wakeup_source;
+
+struct wake_irq;
+
+struct pm_subsys_data;
+
+struct dev_pm_qos;
+
+struct dev_pm_info {
+	pm_message_t power_state;
+	unsigned int can_wakeup: 1;
+	unsigned int async_suspend: 1;
+	bool in_dpm_list: 1;
+	bool is_prepared: 1;
+	bool is_suspended: 1;
+	bool is_noirq_suspended: 1;
+	bool is_late_suspended: 1;
+	bool no_pm: 1;
+	bool early_init: 1;
+	bool direct_complete: 1;
+	u32 driver_flags;
+	spinlock_t lock;
+	struct list_head entry;
+	struct completion completion;
+	struct wakeup_source *wakeup;
+	bool wakeup_path: 1;
+	bool syscore: 1;
+	bool no_pm_callbacks: 1;
+	unsigned int must_resume: 1;
+	unsigned int may_skip_resume: 1;
+	struct hrtimer suspend_timer;
+	u64 timer_expires;
+	struct work_struct work;
+	wait_queue_head_t wait_queue;
+	struct wake_irq *wakeirq;
+	atomic_t usage_count;
+	atomic_t child_count;
+	unsigned int disable_depth: 3;
+	unsigned int idle_notification: 1;
+	unsigned int request_pending: 1;
+	unsigned int deferred_resume: 1;
+	unsigned int needs_force_resume: 1;
+	unsigned int runtime_auto: 1;
+	bool ignore_children: 1;
+	unsigned int no_callbacks: 1;
+	unsigned int irq_safe: 1;
+	unsigned int use_autosuspend: 1;
+	unsigned int timer_autosuspends: 1;
+	unsigned int memalloc_noio: 1;
+	unsigned int links_count;
+	enum rpm_request request;
+	enum rpm_status runtime_status;
+	enum rpm_status last_status;
+	int runtime_error;
+	int autosuspend_delay;
+	u64 last_busy;
+	u64 active_time;
+	u64 suspended_time;
+	u64 accounting_timestamp;
+	struct pm_subsys_data *subsys_data;
+	void (*set_latency_tolerance)(struct device *, s32);
+	struct dev_pm_qos *qos;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct irq_domain;
+
+struct msi_device_data;
+
+struct dev_msi_info {
+	struct irq_domain *domain;
+	struct msi_device_data *data;
+};
+
+struct dev_archdata {};
+
+enum device_removable {
+	DEVICE_REMOVABLE_NOT_SUPPORTED = 0,
+	DEVICE_REMOVABLE_UNKNOWN = 1,
+	DEVICE_FIXED = 2,
+	DEVICE_REMOVABLE = 3,
+};
+
+struct device_private;
+
+struct device_type;
+
+struct bus_type;
+
+struct device_driver;
+
+struct dev_pm_domain;
+
+struct em_perf_domain;
+
+struct dev_pin_info;
+
+struct dma_map_ops;
+
+struct bus_dma_region;
+
+struct device_dma_parameters;
+
+struct dma_coherent_mem;
+
+struct cma;
+
+struct io_tlb_mem;
+
+struct device_node;
+
+struct fwnode_handle;
+
+struct class;
+
+struct iommu_group;
+
+struct dev_iommu;
+
+struct device_physical_location;
+
+struct device {
+	struct kobject kobj;
+	struct device *parent;
+	struct device_private *p;
+	const char *init_name;
+	const struct device_type *type;
+	const struct bus_type *bus;
+	struct device_driver *driver;
+	void *platform_data;
+	void *driver_data;
+	struct mutex mutex;
+	struct dev_links_info links;
+	struct dev_pm_info power;
+	struct dev_pm_domain *pm_domain;
+	struct em_perf_domain *em_pd;
+	struct dev_pin_info *pins;
+	struct dev_msi_info msi;
+	const struct dma_map_ops *dma_ops;
+	u64 *dma_mask;
+	u64 coherent_dma_mask;
+	u64 bus_dma_limit;
+	const struct bus_dma_region *dma_range_map;
+	struct device_dma_parameters *dma_parms;
+	struct list_head dma_pools;
+	struct dma_coherent_mem *dma_mem;
+	struct cma *cma_area;
+	struct io_tlb_mem *dma_io_tlb_mem;
+	struct list_head dma_io_tlb_pools;
+	spinlock_t dma_io_tlb_lock;
+	bool dma_uses_io_tlb;
+	struct dev_archdata archdata;
+	struct device_node *of_node;
+	struct fwnode_handle *fwnode;
+	dev_t devt;
+	u32 id;
+	spinlock_t devres_lock;
+	struct list_head devres_head;
+	const struct class *class;
+	const struct attribute_group **groups;
+	void (*release)(struct device *);
+	struct iommu_group *iommu_group;
+	struct dev_iommu *iommu;
+	struct device_physical_location *physical_location;
+	enum device_removable removable;
+	bool offline_disabled: 1;
+	bool offline: 1;
+	bool of_node_reused: 1;
+	bool state_synced: 1;
+	bool can_match: 1;
+	bool dma_coherent: 1;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+	u64 android_kabi_reserved5;
+	u64 android_kabi_reserved6;
+	u64 android_kabi_reserved7;
+	u64 android_kabi_reserved8;
+};
+
+struct request_queue;
+
+struct disk_stats;
+
+struct blk_holder_ops;
+
+struct partition_meta_info;
+
+struct block_device {
+	sector_t bd_start_sect;
+	sector_t bd_nr_sectors;
+	struct gendisk *bd_disk;
+	struct request_queue *bd_queue;
+	struct disk_stats __attribute__((btf_type_tag("percpu"))) *bd_stats;
+	unsigned long bd_stamp;
+	bool bd_read_only;
+	u8 bd_partno;
+	bool bd_write_holder;
+	bool bd_has_submit_bio;
+	dev_t bd_dev;
+	atomic_t bd_openers;
+	spinlock_t bd_size_lock;
+	struct inode *bd_inode;
+	void *bd_claiming;
+	void *bd_holder;
+	const struct blk_holder_ops *bd_holder_ops;
+	struct mutex bd_holder_lock;
+	int bd_fsfreeze_count;
+	int bd_holders;
+	struct kobject *bd_holder_dir;
+	struct mutex bd_fsfreeze_mutex;
+	struct super_block *bd_fsfreeze_sb;
+	struct partition_meta_info *bd_meta_info;
+	bool bd_ro_warned;
+	struct device bd_device;
+};
+
+typedef void *mempool_alloc_t(gfp_t, void *);
+
+typedef void mempool_free_t(void *, void *);
+
+struct mempool_s {
+	spinlock_t lock;
+	int min_nr;
+	int curr_nr;
+	void **elements;
+	void *pool_data;
+	mempool_alloc_t *alloc;
+	mempool_free_t *free;
+	wait_queue_head_t wait;
+};
+
+typedef struct mempool_s mempool_t;
+
+struct bio_alloc_cache;
+
+struct bio_set {
+	struct kmem_cache *bio_slab;
+	unsigned int front_pad;
+	struct bio_alloc_cache __attribute__((btf_type_tag("percpu"))) *cache;
+	mempool_t bio_pool;
+	mempool_t bvec_pool;
+	unsigned int back_pad;
+	spinlock_t rescue_lock;
+	struct bio_list rescue_list;
+	struct work_struct rescue_work;
+	struct workqueue_struct *rescue_workqueue;
+	struct hlist_node cpuhp_dead;
+};
+
+typedef unsigned int blk_mode_t;
+
+struct block_device_operations;
+
+struct timer_rand_state;
+
+struct disk_events;
+
+struct badblocks;
+
+struct blk_independent_access_ranges;
+
+struct gendisk {
+	int major;
+	int first_minor;
+	int minors;
+	char disk_name[32];
+	unsigned short events;
+	unsigned short event_flags;
+	struct xarray part_tbl;
+	struct block_device *part0;
+	const struct block_device_operations *fops;
+	struct request_queue *queue;
+	void *private_data;
+	struct bio_set bio_split;
+	int flags;
+	unsigned long state;
+	struct mutex open_mutex;
+	unsigned int open_partitions;
+	struct backing_dev_info *bdi;
+	struct kobject queue_kobj;
+	struct kobject *slave_dir;
+	struct list_head slave_bdevs;
+	struct timer_rand_state *random;
+	atomic_t sync_io;
+	struct disk_events *ev;
+	unsigned int nr_zones;
+	unsigned int max_open_zones;
+	unsigned int max_active_zones;
+	unsigned long *conv_zones_bitmap;
+	unsigned long *seq_zones_wlock;
+	int node_id;
+	struct badblocks *bb;
+	struct lockdep_map lockdep_map;
+	u64 diskseq;
+	blk_mode_t open_mode;
+	struct blk_independent_access_ranges *ia_ranges;
+	u64 android_oem_data1;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct blk_zone;
+
+typedef int (*report_zones_cb)(struct blk_zone *, unsigned int, void *);
+
+enum blk_unique_id {
+	BLK_UID_T10 = 1,
+	BLK_UID_EUI64 = 2,
+	BLK_UID_NAA = 3,
+};
+
+struct io_comp_batch;
+
+struct hd_geometry;
+
+struct pr_ops;
+
+struct block_device_operations {
+	void (*submit_bio)(struct bio *);
+	int (*poll_bio)(struct bio *, struct io_comp_batch *, unsigned int);
+	int (*open)(struct gendisk *, blk_mode_t);
+	void (*release)(struct gendisk *);
+	int (*ioctl)(struct block_device *, blk_mode_t, unsigned int, unsigned long);
+	int (*compat_ioctl)(struct block_device *, blk_mode_t, unsigned int, unsigned long);
+	unsigned int (*check_events)(struct gendisk *, unsigned int);
+	void (*unlock_native_capacity)(struct gendisk *);
+	int (*getgeo)(struct block_device *, struct hd_geometry *);
+	int (*set_read_only)(struct block_device *, bool);
+	void (*free_disk)(struct gendisk *);
+	void (*swap_slot_free_notify)(struct block_device *, unsigned long);
+	int (*report_zones)(struct gendisk *, sector_t, unsigned int, report_zones_cb, void *);
+	char * (*devnode)(struct gendisk *, umode_t *);
+	int (*get_unique_id)(struct gendisk *, u8 *, enum blk_unique_id);
+	struct module *owner;
+	const struct pr_ops *pr_ops;
+	int (*alternative_gpt_sector)(struct gendisk *, sector_t *);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct request;
+
+struct io_comp_batch {
+	struct request *req_list;
+	bool need_ts;
+	void (*complete)(struct io_comp_batch *);
+};
+
+struct blk_zone {
+	__u64 start;
+	__u64 len;
+	__u64 wp;
+	__u8 type;
+	__u8 cond;
+	__u8 non_seq;
+	__u8 reset;
+	__u8 resv[4];
+	__u64 capacity;
+	__u8 reserved[24];
+};
+
+enum pr_type {
+	PR_WRITE_EXCLUSIVE = 1,
+	PR_EXCLUSIVE_ACCESS = 2,
+	PR_WRITE_EXCLUSIVE_REG_ONLY = 3,
+	PR_EXCLUSIVE_ACCESS_REG_ONLY = 4,
+	PR_WRITE_EXCLUSIVE_ALL_REGS = 5,
+	PR_EXCLUSIVE_ACCESS_ALL_REGS = 6,
+};
+
+struct pr_keys;
+
+struct pr_held_reservation;
+
+struct pr_ops {
+	int (*pr_register)(struct block_device *, u64, u64, u32);
+	int (*pr_reserve)(struct block_device *, u64, enum pr_type, u32);
+	int (*pr_release)(struct block_device *, u64, enum pr_type);
+	int (*pr_preempt)(struct block_device *, u64, u64, enum pr_type, bool);
+	int (*pr_clear)(struct block_device *, u64);
+	int (*pr_read_keys)(struct block_device *, struct pr_keys *);
+	int (*pr_read_reservation)(struct block_device *, struct pr_held_reservation *);
+};
+
+enum blk_bounce {
+	BLK_BOUNCE_NONE = 0,
+	BLK_BOUNCE_HIGH = 1,
+};
+
+enum blk_zoned_model {
+	BLK_ZONED_NONE = 0,
+	BLK_ZONED_HA = 1,
+	BLK_ZONED_HM = 2,
+};
+
+struct queue_limits {
+	enum blk_bounce bounce;
+	unsigned long seg_boundary_mask;
+	unsigned long virt_boundary_mask;
+	unsigned int max_hw_sectors;
+	unsigned int max_dev_sectors;
+	unsigned int chunk_sectors;
+	unsigned int max_sectors;
+	unsigned int max_user_sectors;
+	unsigned int max_segment_size;
+	unsigned int physical_block_size;
+	unsigned int logical_block_size;
+	unsigned int alignment_offset;
+	unsigned int io_min;
+	unsigned int io_opt;
+	unsigned int max_discard_sectors;
+	unsigned int max_hw_discard_sectors;
+	unsigned int max_secure_erase_sectors;
+	unsigned int max_write_zeroes_sectors;
+	unsigned int max_zone_append_sectors;
+	unsigned int discard_granularity;
+	unsigned int discard_alignment;
+	unsigned int zone_write_granularity;
+	unsigned short max_segments;
+	unsigned short max_integrity_segments;
+	unsigned short max_discard_segments;
+	unsigned char misaligned;
+	unsigned char discard_misaligned;
+	unsigned char raid_partial_stripes_expensive;
+	bool sub_page_limits;
+	enum blk_zoned_model zoned;
+	unsigned int dma_alignment;
+	u64 android_oem_data1;
+	u64 android_kabi_reserved1;
+};
+
+struct elevator_queue;
+
+struct blk_queue_stats;
+
+struct rq_qos;
+
+struct blk_mq_ops;
+
+struct blk_mq_ctx;
+
+struct blk_crypto_profile;
+
+struct blk_mq_tags;
+
+struct blk_flush_queue;
+
+struct throtl_data;
+
+struct blk_mq_tag_set;
+
+struct request_queue {
+	struct request *last_merge;
+	struct elevator_queue *elevator;
+	struct percpu_ref q_usage_counter;
+	struct blk_queue_stats *stats;
+	struct rq_qos *rq_qos;
+	struct mutex rq_qos_mutex;
+	const struct blk_mq_ops *mq_ops;
+	struct blk_mq_ctx __attribute__((btf_type_tag("percpu"))) *queue_ctx;
+	unsigned int queue_depth;
+	struct xarray hctx_table;
+	unsigned int nr_hw_queues;
+	void *queuedata;
+	unsigned long queue_flags;
+	atomic_t pm_only;
+	int id;
+	spinlock_t queue_lock;
+	struct gendisk *disk;
+	refcount_t refs;
+	struct kobject *mq_kobj;
+	struct device *dev;
+	enum rpm_status rpm_status;
+	unsigned long nr_requests;
+	unsigned int dma_pad_mask;
+	struct blk_crypto_profile *crypto_profile;
+	struct kobject *crypto_kobject;
+	unsigned int rq_timeout;
+	struct timer_list timeout;
+	struct work_struct timeout_work;
+	atomic_t nr_active_requests_shared_tags;
+	struct blk_mq_tags *sched_shared_tags;
+	struct list_head icq_list;
+	unsigned long blkcg_pols[1];
+	struct blkcg_gq *root_blkg;
+	struct list_head blkg_list;
+	struct mutex blkcg_mutex;
+	struct queue_limits limits;
+	unsigned int required_elevator_features;
+	int node;
+	struct blk_flush_queue *fq;
+	struct list_head flush_list;
+	struct list_head requeue_list;
+	spinlock_t requeue_lock;
+	struct delayed_work requeue_work;
+	struct mutex sysfs_lock;
+	struct mutex sysfs_dir_lock;
+	struct list_head unused_hctx_list;
+	spinlock_t unused_hctx_lock;
+	int mq_freeze_depth;
+	struct throtl_data *td;
+	struct callback_head callback_head;
+	wait_queue_head_t mq_freeze_wq;
+	struct mutex mq_freeze_lock;
+	int quiesce_depth;
+	struct blk_mq_tag_set *tag_set;
+	struct list_head tag_set_list;
+	struct dentry *debugfs_dir;
+	struct dentry *sched_debugfs_dir;
+	struct dentry *rqos_debugfs_dir;
+	struct mutex debugfs_mutex;
+	bool mq_sysfs_init_done;
+	u64 android_oem_data1;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+enum blk_eh_timer_return {
+	BLK_EH_DONE = 0,
+	BLK_EH_RESET_TIMER = 1,
+};
+
+struct blk_mq_hw_ctx;
+
+struct blk_mq_queue_data;
+
+struct blk_mq_ops {
+	blk_status_t (*queue_rq)(struct blk_mq_hw_ctx *, const struct blk_mq_queue_data *);
+	void (*commit_rqs)(struct blk_mq_hw_ctx *);
+	void (*queue_rqs)(struct request **);
+	int (*get_budget)(struct request_queue *);
+	void (*put_budget)(struct request_queue *, int);
+	void (*set_rq_budget_token)(struct request *, int);
+	int (*get_rq_budget_token)(struct request *);
+	enum blk_eh_timer_return (*timeout)(struct request *);
+	int (*poll)(struct blk_mq_hw_ctx *, struct io_comp_batch *);
+	void (*complete)(struct request *);
+	int (*init_hctx)(struct blk_mq_hw_ctx *, void *, unsigned int);
+	void (*exit_hctx)(struct blk_mq_hw_ctx *, unsigned int);
+	int (*init_request)(struct blk_mq_tag_set *, struct request *, unsigned int, unsigned int);
+	void (*exit_request)(struct blk_mq_tag_set *, struct request *, unsigned int);
+	void (*cleanup_rq)(struct request *);
+	bool (*busy)(struct request_queue *);
+	void (*map_queues)(struct blk_mq_tag_set *);
+	void (*show_rq)(struct seq_file *, struct request *);
+	u64 android_kabi_reserved1;
+};
+
+struct blk_mq_ctxs;
+
+struct blk_mq_ctx {
+	struct {
+		spinlock_t lock;
+		struct list_head rq_lists[3];
+		long: 64;
+	};
+	unsigned int cpu;
+	unsigned short index_hw[3];
+	struct blk_mq_hw_ctx *hctxs[3];
+	struct request_queue *queue;
+	struct blk_mq_ctxs *ctxs;
+	struct kobject kobj;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct dev_pm_ops;
+
+struct device_type {
+	const char *name;
+	const struct attribute_group **groups;
+	int (*uevent)(const struct device *, struct kobj_uevent_env *);
+	char * (*devnode)(const struct device *, umode_t *, kuid_t *, kgid_t *);
+	void (*release)(struct device *);
+	const struct dev_pm_ops *pm;
+};
+
+struct dev_pm_ops {
+	int (*prepare)(struct device *);
+	void (*complete)(struct device *);
+	int (*suspend)(struct device *);
+	int (*resume)(struct device *);
+	int (*freeze)(struct device *);
+	int (*thaw)(struct device *);
+	int (*poweroff)(struct device *);
+	int (*restore)(struct device *);
+	int (*suspend_late)(struct device *);
+	int (*resume_early)(struct device *);
+	int (*freeze_late)(struct device *);
+	int (*thaw_early)(struct device *);
+	int (*poweroff_late)(struct device *);
+	int (*restore_early)(struct device *);
+	int (*suspend_noirq)(struct device *);
+	int (*resume_noirq)(struct device *);
+	int (*freeze_noirq)(struct device *);
+	int (*thaw_noirq)(struct device *);
+	int (*poweroff_noirq)(struct device *);
+	int (*restore_noirq)(struct device *);
+	int (*runtime_suspend)(struct device *);
+	int (*runtime_resume)(struct device *);
+	int (*runtime_idle)(struct device *);
+	u64 android_kabi_reserved1;
+};
+
+struct iommu_ops;
+
+struct bus_type {
+	const char *name;
+	const char *dev_name;
+	const struct attribute_group **bus_groups;
+	const struct attribute_group **dev_groups;
+	const struct attribute_group **drv_groups;
+	int (*match)(struct device *, struct device_driver *);
+	int (*uevent)(const struct device *, struct kobj_uevent_env *);
+	int (*probe)(struct device *);
+	void (*sync_state)(struct device *);
+	void (*remove)(struct device *);
+	void (*shutdown)(struct device *);
+	int (*online)(struct device *);
+	int (*offline)(struct device *);
+	int (*suspend)(struct device *, pm_message_t);
+	int (*resume)(struct device *);
+	int (*num_vf)(struct device *);
+	int (*dma_configure)(struct device *);
+	void (*dma_cleanup)(struct device *);
+	const struct dev_pm_ops *pm;
+	const struct iommu_ops *iommu_ops;
+	bool need_parent_lock;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+enum probe_type {
+	PROBE_DEFAULT_STRATEGY = 0,
+	PROBE_PREFER_ASYNCHRONOUS = 1,
+	PROBE_FORCE_SYNCHRONOUS = 2,
+};
+
+struct of_device_id;
+
+struct acpi_device_id;
+
+struct driver_private;
+
+struct device_driver {
+	const char *name;
+	const struct bus_type *bus;
+	struct module *owner;
+	const char *mod_name;
+	bool suppress_bind_attrs;
+	enum probe_type probe_type;
+	const struct of_device_id *of_match_table;
+	const struct acpi_device_id *acpi_match_table;
+	int (*probe)(struct device *);
+	void (*sync_state)(struct device *);
+	int (*remove)(struct device *);
+	void (*shutdown)(struct device *);
+	int (*suspend)(struct device *, pm_message_t);
+	int (*resume)(struct device *);
+	const struct attribute_group **groups;
+	const struct attribute_group **dev_groups;
+	const struct dev_pm_ops *pm;
+	void (*coredump)(struct device *);
+	struct driver_private *p;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct of_device_id {
+	char name[32];
+	char type[32];
+	char compatible[128];
+	const void *data;
+};
+
+typedef unsigned long kernel_ulong_t;
+
+struct acpi_device_id {
+	__u8 id[16];
+	kernel_ulong_t driver_data;
+	__u32 cls;
+	__u32 cls_msk;
+};
+
+enum iommu_cap {
+	IOMMU_CAP_CACHE_COHERENCY = 0,
+	IOMMU_CAP_NOEXEC = 1,
+	IOMMU_CAP_PRE_BOOT_PROTECTION = 2,
+	IOMMU_CAP_ENFORCE_CACHE_COHERENCY = 3,
+	IOMMU_CAP_DEFERRED_FLUSH = 4,
+};
+
+enum iommu_dev_features {
+	IOMMU_DEV_FEAT_SVA = 0,
+	IOMMU_DEV_FEAT_IOPF = 1,
+};
+
+typedef unsigned int ioasid_t;
+
+struct iommu_domain;
+
+struct iommu_device;
+
+struct of_phandle_args;
+
+struct iommu_fault_event;
+
+struct iommu_page_response;
+
+struct iommu_domain_ops;
+
+struct iommu_ops {
+	bool (*capable)(struct device *, enum iommu_cap);
+	void * (*hw_info)(struct device *, u32 *, u32 *);
+	struct iommu_domain * (*domain_alloc)(unsigned int);
+	struct iommu_device * (*probe_device)(struct device *);
+	void (*release_device)(struct device *);
+	void (*probe_finalize)(struct device *);
+	void (*set_platform_dma_ops)(struct device *);
+	struct iommu_group * (*device_group)(struct device *);
+	void (*get_resv_regions)(struct device *, struct list_head *);
+	int (*of_xlate)(struct device *, struct of_phandle_args *);
+	bool (*is_attach_deferred)(struct device *);
+	int (*dev_enable_feat)(struct device *, enum iommu_dev_features);
+	int (*dev_disable_feat)(struct device *, enum iommu_dev_features);
+	int (*page_response)(struct device *, struct iommu_fault_event *, struct iommu_page_response *);
+	int (*def_domain_type)(struct device *);
+	void (*remove_dev_pasid)(struct device *, ioasid_t);
+	const struct iommu_domain_ops *default_domain_ops;
+	unsigned long pgsize_bitmap;
+	struct module *owner;
+};
+
+struct wakeup_source {
+	const char *name;
+	int id;
+	struct list_head entry;
+	spinlock_t lock;
+	struct wake_irq *wakeirq;
+	struct timer_list timer;
+	unsigned long timer_expires;
+	ktime_t total_time;
+	ktime_t max_time;
+	ktime_t last_time;
+	ktime_t start_prevent_time;
+	ktime_t prevent_sleep_time;
+	unsigned long event_count;
+	unsigned long active_count;
+	unsigned long relax_count;
+	unsigned long expire_count;
+	unsigned long wakeup_count;
+	struct device *dev;
+	bool active: 1;
+	bool autosleep_enabled: 1;
+};
+
+struct pm_domain_data;
+
+struct pm_subsys_data {
+	spinlock_t lock;
+	unsigned int refcount;
+	unsigned int clock_op_might_sleep;
+	struct mutex clock_mutex;
+	struct list_head clock_list;
+	struct pm_domain_data *domain_data;
+};
+
+struct dev_pm_domain {
+	struct dev_pm_ops ops;
+	int (*start)(struct device *);
+	void (*detach)(struct device *, bool);
+	int (*activate)(struct device *);
+	void (*sync)(struct device *);
+	void (*dismiss)(struct device *);
+	int (*set_performance_state)(struct device *, unsigned int);
+	u64 android_kabi_reserved1;
+};
+
+struct em_perf_table;
+
+struct em_perf_domain {
+	struct em_perf_table __attribute__((btf_type_tag("rcu"))) *em_table;
+	int nr_perf_states;
+	int min_ps;
+	int max_ps;
+	unsigned long flags;
+	unsigned long cpus[0];
+};
+
+struct em_perf_state {
+	unsigned long performance;
+	unsigned long frequency;
+	unsigned long power;
+	unsigned long cost;
+	unsigned long flags;
+};
+
+struct em_perf_table {
+	struct callback_head rcu;
+	struct kref kref;
+	struct em_perf_state state[0];
+};
+
+typedef u64 dma_addr_t;
+
+enum dma_data_direction {
+	DMA_BIDIRECTIONAL = 0,
+	DMA_TO_DEVICE = 1,
+	DMA_FROM_DEVICE = 2,
+	DMA_NONE = 3,
+};
+
+typedef u64 phys_addr_t;
+
+struct sg_table;
+
+struct scatterlist;
+
+struct dma_map_ops {
+	unsigned int flags;
+	void * (*alloc)(struct device *, size_t, dma_addr_t *, gfp_t, unsigned long);
+	void (*free)(struct device *, size_t, void *, dma_addr_t, unsigned long);
+	struct page * (*alloc_pages)(struct device *, size_t, dma_addr_t *, enum dma_data_direction, gfp_t);
+	void (*free_pages)(struct device *, size_t, struct page *, dma_addr_t, enum dma_data_direction);
+	struct sg_table * (*alloc_noncontiguous)(struct device *, size_t, enum dma_data_direction, gfp_t, unsigned long);
+	void (*free_noncontiguous)(struct device *, size_t, struct sg_table *, enum dma_data_direction);
+	int (*mmap)(struct device *, struct vm_area_struct *, void *, dma_addr_t, size_t, unsigned long);
+	int (*get_sgtable)(struct device *, struct sg_table *, void *, dma_addr_t, size_t, unsigned long);
+	dma_addr_t (*map_page)(struct device *, struct page *, unsigned long, size_t, enum dma_data_direction, unsigned long);
+	void (*unmap_page)(struct device *, dma_addr_t, size_t, enum dma_data_direction, unsigned long);
+	int (*map_sg)(struct device *, struct scatterlist *, int, enum dma_data_direction, unsigned long);
+	void (*unmap_sg)(struct device *, struct scatterlist *, int, enum dma_data_direction, unsigned long);
+	dma_addr_t (*map_resource)(struct device *, phys_addr_t, size_t, enum dma_data_direction, unsigned long);
+	void (*unmap_resource)(struct device *, dma_addr_t, size_t, enum dma_data_direction, unsigned long);
+	void (*sync_single_for_cpu)(struct device *, dma_addr_t, size_t, enum dma_data_direction);
+	void (*sync_single_for_device)(struct device *, dma_addr_t, size_t, enum dma_data_direction);
+	void (*sync_sg_for_cpu)(struct device *, struct scatterlist *, int, enum dma_data_direction);
+	void (*sync_sg_for_device)(struct device *, struct scatterlist *, int, enum dma_data_direction);
+	void (*cache_sync)(struct device *, void *, size_t, enum dma_data_direction);
+	int (*dma_supported)(struct device *, u64);
+	u64 (*get_required_mask)(struct device *);
+	size_t (*max_mapping_size)(struct device *);
+	size_t (*opt_mapping_size)();
+	unsigned long (*get_merge_boundary)(struct device *);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct bus_dma_region {
+	phys_addr_t cpu_start;
+	dma_addr_t dma_start;
+	u64 size;
+	u64 offset;
+};
+
+struct device_dma_parameters {
+	unsigned int max_segment_size;
+	unsigned int min_align_mask;
+	unsigned long segment_boundary_mask;
+};
+
+typedef u32 phandle;
+
+struct fwnode_operations;
+
+struct fwnode_handle {
+	struct fwnode_handle *secondary;
+	const struct fwnode_operations *ops;
+	struct device *dev;
+	struct list_head suppliers;
+	struct list_head consumers;
+	u8 flags;
+	u64 android_kabi_reserved1;
+};
+
+struct property;
+
+struct device_node {
+	const char *name;
+	phandle phandle;
+	const char *full_name;
+	struct fwnode_handle fwnode;
+	struct property *properties;
+	struct property *deadprops;
+	struct device_node *parent;
+	struct device_node *child;
+	struct device_node *sibling;
+	struct kobject kobj;
+	unsigned long _flags;
+	void *data;
+};
+
+enum dev_dma_attr {
+	DEV_DMA_NOT_SUPPORTED = 0,
+	DEV_DMA_NON_COHERENT = 1,
+	DEV_DMA_COHERENT = 2,
+};
+
+struct fwnode_reference_args;
+
+struct fwnode_endpoint;
+
+struct fwnode_operations {
+	struct fwnode_handle * (*get)(struct fwnode_handle *);
+	void (*put)(struct fwnode_handle *);
+	bool (*device_is_available)(const struct fwnode_handle *);
+	const void * (*device_get_match_data)(const struct fwnode_handle *, const struct device *);
+	bool (*device_dma_supported)(const struct fwnode_handle *);
+	enum dev_dma_attr (*device_get_dma_attr)(const struct fwnode_handle *);
+	bool (*property_present)(const struct fwnode_handle *, const char *);
+	int (*property_read_int_array)(const struct fwnode_handle *, const char *, unsigned int, void *, size_t);
+	int (*property_read_string_array)(const struct fwnode_handle *, const char *, const char **, size_t);
+	const char * (*get_name)(const struct fwnode_handle *);
+	const char * (*get_name_prefix)(const struct fwnode_handle *);
+	struct fwnode_handle * (*get_parent)(const struct fwnode_handle *);
+	struct fwnode_handle * (*get_next_child_node)(const struct fwnode_handle *, struct fwnode_handle *);
+	struct fwnode_handle * (*get_named_child_node)(const struct fwnode_handle *, const char *);
+	int (*get_reference_args)(const struct fwnode_handle *, const char *, const char *, unsigned int, unsigned int, struct fwnode_reference_args *);
+	struct fwnode_handle * (*graph_get_next_endpoint)(const struct fwnode_handle *, struct fwnode_handle *);
+	struct fwnode_handle * (*graph_get_remote_endpoint)(const struct fwnode_handle *);
+	struct fwnode_handle * (*graph_get_port_parent)(struct fwnode_handle *);
+	int (*graph_parse_endpoint)(const struct fwnode_handle *, struct fwnode_endpoint *);
+	void * (*iomap)(struct fwnode_handle *, int);
+	int (*irq_get)(const struct fwnode_handle *, unsigned int);
+	int (*add_links)(struct fwnode_handle *);
+};
+
+struct fwnode_reference_args {
+	struct fwnode_handle *fwnode;
+	unsigned int nargs;
+	u64 args[8];
+};
+
+struct fwnode_endpoint {
+	unsigned int port;
+	unsigned int id;
+	const struct fwnode_handle *local_fwnode;
+};
+
+struct property {
+	char *name;
+	int length;
+	void *value;
+	struct property *next;
+	struct bin_attribute attr;
+};
+
+struct class {
+	const char *name;
+	const struct attribute_group **class_groups;
+	const struct attribute_group **dev_groups;
+	int (*dev_uevent)(const struct device *, struct kobj_uevent_env *);
+	char * (*devnode)(const struct device *, umode_t *);
+	void (*class_release)(const struct class *);
+	void (*dev_release)(struct device *);
+	int (*shutdown_pre)(struct device *);
+	const struct kobj_ns_type_operations *ns_type;
+	const void * (*namespace)(const struct device *);
+	void (*get_ownership)(const struct device *, kuid_t *, kgid_t *);
+	const struct dev_pm_ops *pm;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+enum kobj_ns_type {
+	KOBJ_NS_TYPE_NONE = 0,
+	KOBJ_NS_TYPE_NET = 1,
+	KOBJ_NS_TYPES = 2,
+};
+
+struct kobj_ns_type_operations {
+	enum kobj_ns_type type;
+	bool (*current_may_mount)();
+	void * (*grab_current_ns)();
+	const void * (*netlink_ns)(struct sock *);
+	const void * (*initial_ns)();
+	void (*drop_ns)(void *);
+};
+
+enum device_physical_location_panel {
+	DEVICE_PANEL_TOP = 0,
+	DEVICE_PANEL_BOTTOM = 1,
+	DEVICE_PANEL_LEFT = 2,
+	DEVICE_PANEL_RIGHT = 3,
+	DEVICE_PANEL_FRONT = 4,
+	DEVICE_PANEL_BACK = 5,
+	DEVICE_PANEL_UNKNOWN = 6,
+};
+
+enum device_physical_location_vertical_position {
+	DEVICE_VERT_POS_UPPER = 0,
+	DEVICE_VERT_POS_CENTER = 1,
+	DEVICE_VERT_POS_LOWER = 2,
+};
+
+enum device_physical_location_horizontal_position {
+	DEVICE_HORI_POS_LEFT = 0,
+	DEVICE_HORI_POS_CENTER = 1,
+	DEVICE_HORI_POS_RIGHT = 2,
+};
+
+struct device_physical_location {
+	enum device_physical_location_panel panel;
+	enum device_physical_location_vertical_position vertical_position;
+	enum device_physical_location_horizontal_position horizontal_position;
+	bool dock;
+	bool lid;
+};
+
+struct bio_alloc_cache {
+	struct bio *free_list;
+	struct bio *free_list_irq;
+	unsigned int nr;
+	unsigned int nr_irq;
+};
+
+struct fprop_local_percpu {
+	struct percpu_counter events;
+	unsigned int period;
+	raw_spinlock_t lock;
+};
+
+enum wb_reason {
+	WB_REASON_BACKGROUND = 0,
+	WB_REASON_VMSCAN = 1,
+	WB_REASON_SYNC = 2,
+	WB_REASON_PERIODIC = 3,
+	WB_REASON_LAPTOP_TIMER = 4,
+	WB_REASON_FS_FREE_SPACE = 5,
+	WB_REASON_FORKER_THREAD = 6,
+	WB_REASON_FOREIGN_FLUSH = 7,
+	WB_REASON_MAX = 8,
+};
+
+struct bdi_writeback {
+	struct backing_dev_info *bdi;
+	unsigned long state;
+	unsigned long last_old_flush;
+	struct list_head b_dirty;
+	struct list_head b_io;
+	struct list_head b_more_io;
+	struct list_head b_dirty_time;
+	spinlock_t list_lock;
+	atomic_t writeback_inodes;
+	struct percpu_counter stat[4];
+	unsigned long bw_time_stamp;
+	unsigned long dirtied_stamp;
+	unsigned long written_stamp;
+	unsigned long write_bandwidth;
+	unsigned long avg_write_bandwidth;
+	unsigned long dirty_ratelimit;
+	unsigned long balanced_dirty_ratelimit;
+	struct fprop_local_percpu completions;
+	int dirty_exceeded;
+	enum wb_reason start_all_reason;
+	spinlock_t work_lock;
+	struct list_head work_list;
+	struct delayed_work dwork;
+	struct delayed_work bw_dwork;
+	struct list_head bdi_node;
+	struct percpu_ref refcnt;
+	struct fprop_local_percpu memcg_completions;
+	struct cgroup_subsys_state *memcg_css;
+	struct cgroup_subsys_state *blkcg_css;
+	struct list_head memcg_node;
+	struct list_head blkcg_node;
+	struct list_head b_attached;
+	struct list_head offline_node;
+	union {
+		struct work_struct release_work;
+		struct callback_head rcu;
+	};
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_oem_data1[2];
+};
+
+struct backing_dev_info {
+	u64 id;
+	struct rb_node rb_node;
+	struct list_head bdi_list;
+	unsigned long ra_pages;
+	unsigned long io_pages;
+	struct kref refcnt;
+	unsigned int capabilities;
+	unsigned int min_ratio;
+	unsigned int max_ratio;
+	unsigned int max_prop_frac;
+	atomic_long_t tot_write_bandwidth;
+	unsigned long last_bdp_sleep;
+	struct bdi_writeback wb;
+	struct list_head wb_list;
+	struct xarray cgwb_tree;
+	struct mutex cgwb_release_mutex;
+	struct rw_semaphore wb_switch_rwsem;
+	wait_queue_head_t wb_waitq;
+	struct device *dev;
+	char dev_name[64];
+	struct device *owner;
+	struct timer_list laptop_mode_wb_timer;
+	struct dentry *debug_dir;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct blk_independent_access_range {
+	struct kobject kobj;
+	sector_t sector;
+	sector_t nr_sectors;
+};
+
+struct blk_independent_access_ranges {
+	struct kobject kobj;
+	bool sysfs_registered;
+	unsigned int nr_ia_ranges;
+	struct blk_independent_access_range ia_range[0];
+};
+
+struct disk_stats {
+	u64 nsecs[4];
+	unsigned long sectors[4];
+	unsigned long ios[4];
+	unsigned long merges[4];
+	unsigned long io_ticks;
+	local_t in_flight[2];
+};
+
+struct blk_holder_ops {
+	void (*mark_dead)(struct block_device *, bool);
+	void (*sync)(struct block_device *);
+};
+
+struct partition_meta_info {
+	char uuid[37];
+	u8 volname[64];
+};
+
+struct blk_plug {
+	struct request *mq_list;
+	struct request *cached_rq;
+	unsigned short nr_ios;
+	unsigned short rq_count;
+	bool multiple_queues;
+	bool has_elevator;
+	struct list_head cb_list;
+};
+
+struct reclaim_state {
+	unsigned long reclaimed;
+	struct lru_gen_mm_walk *mm_walk;
+};
+
+struct io_cq;
+
+struct io_context {
+	atomic_long_t refcount;
+	atomic_t active_ref;
+	unsigned short ioprio;
+	spinlock_t lock;
+	struct xarray icq_tree;
+	struct io_cq __attribute__((btf_type_tag("rcu"))) *icq_hint;
+	struct hlist_head icq_list;
+	struct work_struct release_work;
+};
+
+struct io_cq {
+	struct request_queue *q;
+	struct io_context *ioc;
+	union {
+		struct list_head q_node;
+		struct kmem_cache *__rcu_icq_cache;
+	};
+	union {
+		struct hlist_node ioc_node;
+		struct callback_head __rcu_head;
+	};
+	unsigned int flags;
+};
+
+typedef int __kernel_timer_t;
+
+union sigval {
+	int sival_int;
+	void __attribute__((btf_type_tag("user"))) *sival_ptr;
+};
+
+typedef union sigval sigval_t;
+
+typedef __kernel_long_t __kernel_clock_t;
+
+union __sifields {
+	struct {
+		__kernel_pid_t _pid;
+		__kernel_uid32_t _uid;
+	} _kill;
+	struct {
+		__kernel_timer_t _tid;
+		int _overrun;
+		sigval_t _sigval;
+		int _sys_private;
+	} _timer;
+	struct {
+		__kernel_pid_t _pid;
+		__kernel_uid32_t _uid;
+		sigval_t _sigval;
+	} _rt;
+	struct {
+		__kernel_pid_t _pid;
+		__kernel_uid32_t _uid;
+		int _status;
+		__kernel_clock_t _utime;
+		__kernel_clock_t _stime;
+	} _sigchld;
+	struct {
+		void __attribute__((btf_type_tag("user"))) *_addr;
+		union {
+			int _trapno;
+			short _addr_lsb;
+			struct {
+				char _dummy_bnd[8];
+				void __attribute__((btf_type_tag("user"))) *_lower;
+				void __attribute__((btf_type_tag("user"))) *_upper;
+			} _addr_bnd;
+			struct {
+				char _dummy_pkey[8];
+				__u32 _pkey;
+			} _addr_pkey;
+			struct {
+				unsigned long _data;
+				__u32 _type;
+				__u32 _flags;
+			} _perf;
+		};
+	} _sigfault;
+	struct {
+		long _band;
+		int _fd;
+	} _sigpoll;
+	struct {
+		void __attribute__((btf_type_tag("user"))) *_call_addr;
+		int _syscall;
+		unsigned int _arch;
+	} _sigsys;
+};
+
+struct kernel_siginfo {
+	struct {
+		int si_signo;
+		int si_errno;
+		int si_code;
+		union __sifields _sifields;
+	};
+};
+
+struct robust_list {
+	struct robust_list __attribute__((btf_type_tag("user"))) *next;
+};
+
+struct robust_list_head {
+	struct robust_list list;
+	long futex_offset;
+	struct robust_list __attribute__((btf_type_tag("user"))) *list_op_pending;
+};
+
+typedef u32 compat_uptr_t;
+
+struct compat_robust_list {
+	compat_uptr_t next;
+};
+
+typedef s32 compat_long_t;
+
+struct compat_robust_list_head {
+	struct compat_robust_list list;
+	compat_long_t futex_offset;
+	compat_uptr_t list_op_pending;
+};
+
+struct perf_event_groups {
+	struct rb_root tree;
+	u64 index;
+};
+
+struct perf_event_context {
+	raw_spinlock_t lock;
+	struct mutex mutex;
+	struct list_head pmu_ctx_list;
+	struct perf_event_groups pinned_groups;
+	struct perf_event_groups flexible_groups;
+	struct list_head event_list;
+	int nr_events;
+	int nr_user;
+	int is_active;
+	int nr_task_data;
+	int nr_stat;
+	int nr_freq;
+	int rotate_disable;
+	refcount_t refcount;
+	struct task_struct *task;
+	u64 time;
+	u64 timestamp;
+	u64 timeoffset;
+	struct perf_event_context *parent_ctx;
+	u64 parent_gen;
+	u64 generation;
+	int pin_count;
+	struct callback_head callback_head;
+	local_t nr_pending;
+};
+
+struct task_delay_info {
+	raw_spinlock_t lock;
+	u64 blkio_start;
+	u64 blkio_delay;
+	u64 swapin_start;
+	u64 swapin_delay;
+	u32 blkio_count;
+	u32 swapin_count;
+	u64 freepages_start;
+	u64 freepages_delay;
+	u64 thrashing_start;
+	u64 thrashing_delay;
+	u64 compact_start;
+	u64 compact_delay;
+	u64 wpcopy_start;
+	u64 wpcopy_delay;
+	u64 irq_delay;
+	u32 freepages_count;
+	u32 thrashing_count;
+	u32 compact_count;
+	u32 wpcopy_count;
+	u32 irq_count;
+};
+
+typedef void (*kunit_try_catch_func_t)(void *);
+
+struct kunit_try_catch {
+	struct kunit *test;
+	struct completion *try_completion;
+	int try_result;
+	kunit_try_catch_func_t try;
+	kunit_try_catch_func_t catch;
+	void *context;
+};
+
+enum kunit_status {
+	KUNIT_SUCCESS = 0,
+	KUNIT_FAILURE = 1,
+	KUNIT_SKIPPED = 2,
+};
+
+struct kunit {
+	void *priv;
+	const char *name;
+	char *log;
+	struct kunit_try_catch try_catch;
+	const void *param_value;
+	int param_index;
+	spinlock_t lock;
+	enum kunit_status status;
+	struct list_head resources;
+	char status_comment[256];
+};
+
+struct arch_uprobe_task {};
+
+enum uprobe_task_state {
+	UTASK_RUNNING = 0,
+	UTASK_SSTEP = 1,
+	UTASK_SSTEP_ACK = 2,
+	UTASK_SSTEP_TRAPPED = 3,
+};
+
+struct uprobe;
+
+struct return_instance;
+
+struct uprobe_task {
+	enum uprobe_task_state state;
+	union {
+		struct {
+			struct arch_uprobe_task autask;
+			unsigned long vaddr;
+		};
+		struct {
+			struct callback_head dup_xol_work;
+			unsigned long dup_xol_addr;
+		};
+	};
+	struct uprobe *active_uprobe;
+	unsigned long xol_vaddr;
+	struct return_instance *return_instances;
+	unsigned int depth;
+};
+
+struct return_instance {
+	struct uprobe *uprobe;
+	unsigned long func;
+	unsigned long stack;
+	unsigned long orig_ret_vaddr;
+	bool chained;
+	struct return_instance *next;
+};
+
+struct vm_struct {
+	struct vm_struct *next;
+	void *addr;
+	unsigned long size;
+	unsigned long flags;
+	struct page **pages;
+	unsigned int page_order;
+	unsigned int nr_pages;
+	phys_addr_t phys_addr;
+	const void *caller;
+	u64 android_oem_data1;
+};
+
+typedef void *fl_owner_t;
+
+struct kiocb;
+
+struct iov_iter;
+
+struct dir_context;
+
+struct file_lock;
+
+struct io_uring_cmd;
+
+struct file_operations {
+	struct module *owner;
+	loff_t (*llseek)(struct file *, loff_t, int);
+	ssize_t (*read)(struct file *, char __attribute__((btf_type_tag("user"))) *, size_t, loff_t *);
+	ssize_t (*write)(struct file *, const char __attribute__((btf_type_tag("user"))) *, size_t, loff_t *);
+	ssize_t (*read_iter)(struct kiocb *, struct iov_iter *);
+	ssize_t (*write_iter)(struct kiocb *, struct iov_iter *);
+	int (*iopoll)(struct kiocb *, struct io_comp_batch *, unsigned int);
+	int (*iterate_shared)(struct file *, struct dir_context *);
+	__poll_t (*poll)(struct file *, struct poll_table_struct *);
+	long (*unlocked_ioctl)(struct file *, unsigned int, unsigned long);
+	long (*compat_ioctl)(struct file *, unsigned int, unsigned long);
+	int (*mmap)(struct file *, struct vm_area_struct *);
+	unsigned long mmap_supported_flags;
+	int (*open)(struct inode *, struct file *);
+	int (*flush)(struct file *, fl_owner_t);
+	int (*release)(struct inode *, struct file *);
+	int (*fsync)(struct file *, loff_t, loff_t, int);
+	int (*fasync)(int, struct file *, int);
+	int (*lock)(struct file *, int, struct file_lock *);
+	unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long);
+	int (*check_flags)(int);
+	int (*flock)(struct file *, int, struct file_lock *);
+	ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, loff_t *, size_t, unsigned int);
+	ssize_t (*splice_read)(struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int);
+	void (*splice_eof)(struct file *);
+	int (*setlease)(struct file *, int, struct file_lock **, void **);
+	long (*fallocate)(struct file *, int, loff_t, loff_t);
+	void (*show_fdinfo)(struct seq_file *, struct file *);
+	ssize_t (*copy_file_range)(struct file *, loff_t, struct file *, loff_t, size_t, unsigned int);
+	loff_t (*remap_file_range)(struct file *, loff_t, struct file *, loff_t, loff_t, unsigned int);
+	int (*fadvise)(struct file *, loff_t, loff_t, int);
+	int (*uring_cmd)(struct io_uring_cmd *, unsigned int);
+	int (*uring_cmd_iopoll)(struct io_uring_cmd *, struct io_comp_batch *, unsigned int);
+};
+
+struct wait_page_queue;
+
+struct kiocb {
+	struct file *ki_filp;
+	loff_t ki_pos;
+	void (*ki_complete)(struct kiocb *, long);
+	void *private;
+	int ki_flags;
+	u16 ki_ioprio;
+	union {
+		struct wait_page_queue *ki_waitq;
+		ssize_t (*dio_complete)(void *);
+	};
+};
+
+struct wait_queue_entry;
+
+typedef int (*wait_queue_func_t)(struct wait_queue_entry *, unsigned int, int, void *);
+
+struct wait_queue_entry {
+	unsigned int flags;
+	void *private;
+	wait_queue_func_t func;
+	struct list_head entry;
+};
+
+typedef struct wait_queue_entry wait_queue_entry_t;
+
+struct folio;
+
+struct wait_page_queue {
+	struct folio *folio;
+	int bit_nr;
+	wait_queue_entry_t wait;
+};
+
+typedef struct {
+	unsigned long val;
+} swp_entry_t;
+
+struct folio {
+	union {
+		struct {
+			unsigned long flags;
+			union {
+				struct list_head lru;
+				struct {
+					void *__filler;
+					unsigned int mlock_count;
+				};
+			};
+			struct address_space *mapping;
+			unsigned long index;
+			union {
+				void *private;
+				swp_entry_t swap;
+			};
+			atomic_t _mapcount;
+			atomic_t _refcount;
+			unsigned long memcg_data;
+		};
+		struct page page;
+	};
+	union {
+		struct {
+			unsigned long _flags_1;
+			unsigned long _head_1;
+			atomic_t _entire_mapcount;
+			atomic_t _nr_pages_mapped;
+			atomic_t _pincount;
+			unsigned int __padding;
+			unsigned int _folio_nr_pages;
+			union {
+				unsigned long _private_1;
+				unsigned long *_dst_ul;
+				struct page **_dst_pp;
+			};
+		};
+		struct page __page_1;
+	};
+	union {
+		struct {
+			unsigned long _flags_2;
+			unsigned long _head_2;
+			void *_hugetlb_subpool;
+			void *_hugetlb_cgroup;
+			void *_hugetlb_cgroup_rsvd;
+			void *_hugetlb_hwpoison;
+		};
+		struct {
+			unsigned long _flags_2a;
+			unsigned long _head_2a;
+			struct list_head _deferred_list;
+		};
+		struct page __page_2;
+	};
+};
+
+struct iovec {
+	void __attribute__((btf_type_tag("user"))) *iov_base;
+	__kernel_size_t iov_len;
+};
+
+struct kvec;
+
+struct iov_iter {
+	u8 iter_type;
+	bool copy_mc;
+	bool nofault;
+	bool data_source;
+	bool user_backed;
+	union {
+		size_t iov_offset;
+		int last_offset;
+	};
+	union {
+		struct iovec __ubuf_iovec;
+		struct {
+			union {
+				const struct iovec *__iov;
+				const struct kvec *kvec;
+				const struct bio_vec *bvec;
+				struct xarray *xarray;
+				void __attribute__((btf_type_tag("user"))) *ubuf;
+			};
+			size_t count;
+		};
+	};
+	union {
+		unsigned long nr_segs;
+		loff_t xarray_start;
+	};
+};
+
+struct kvec {
+	void *iov_base;
+	size_t iov_len;
+};
+
+typedef bool (*filldir_t)(struct dir_context *, const char *, int, loff_t, u64, unsigned int);
+
+struct dir_context {
+	filldir_t actor;
+	loff_t pos;
+};
+
+struct fc_log {
+	refcount_t usage;
+	u8 head;
+	u8 tail;
+	u8 need_free;
+	struct module *owner;
+	char *buffer[8];
+};
+
+struct fs_parse_result;
+
+typedef int fs_param_type(struct p_log *, const struct fs_parameter_spec *, struct fs_parameter *, struct fs_parse_result *);
+
+struct fs_parameter_spec {
+	const char *name;
+	fs_param_type *type;
+	u8 opt;
+	unsigned short flags;
+	const void *data;
+};
+
+struct fs_parse_result {
+	bool negated;
+	union {
+		bool boolean;
+		int int_32;
+		unsigned int uint_32;
+		u64 uint_64;
+	};
+};
+
+enum freeze_holder {
+	FREEZE_HOLDER_KERNEL = 1,
+	FREEZE_HOLDER_USERSPACE = 2,
+};
+
+struct writeback_control;
+
+struct kstatfs;
+
+struct dquot;
+
+struct super_operations {
+	struct inode * (*alloc_inode)(struct super_block *);
+	void (*destroy_inode)(struct inode *);
+	void (*free_inode)(struct inode *);
+	void (*dirty_inode)(struct inode *, int);
+	int (*write_inode)(struct inode *, struct writeback_control *);
+	int (*drop_inode)(struct inode *);
+	void (*evict_inode)(struct inode *);
+	void (*put_super)(struct super_block *);
+	int (*sync_fs)(struct super_block *, int);
+	int (*freeze_super)(struct super_block *, enum freeze_holder);
+	int (*freeze_fs)(struct super_block *);
+	int (*thaw_super)(struct super_block *, enum freeze_holder);
+	int (*unfreeze_fs)(struct super_block *);
+	int (*statfs)(struct dentry *, struct kstatfs *);
+	int (*remount_fs)(struct super_block *, int *, char *);
+	void (*umount_begin)(struct super_block *);
+	int (*show_options)(struct seq_file *, struct dentry *);
+	int (*show_devname)(struct seq_file *, struct dentry *);
+	int (*show_path)(struct seq_file *, struct dentry *);
+	int (*show_stats)(struct seq_file *, struct dentry *);
+	ssize_t (*quota_read)(struct super_block *, int, char *, size_t, loff_t);
+	ssize_t (*quota_write)(struct super_block *, int, const char *, size_t, loff_t);
+	struct dquot __attribute__((btf_type_tag("rcu"))) ** (*get_dquots)(struct inode *);
+	long (*nr_cached_objects)(struct super_block *, struct shrink_control *);
+	long (*free_cached_objects)(struct super_block *, struct shrink_control *);
+	void (*shutdown)(struct super_block *);
+};
+
+enum writeback_sync_modes {
+	WB_SYNC_NONE = 0,
+	WB_SYNC_ALL = 1,
+};
+
+struct swap_iocb;
+
+struct writeback_control {
+	long nr_to_write;
+	long pages_skipped;
+	loff_t range_start;
+	loff_t range_end;
+	enum writeback_sync_modes sync_mode;
+	unsigned int for_kupdate: 1;
+	unsigned int for_background: 1;
+	unsigned int tagged_writepages: 1;
+	unsigned int for_reclaim: 1;
+	unsigned int range_cyclic: 1;
+	unsigned int for_sync: 1;
+	unsigned int unpinned_fscache_wb: 1;
+	unsigned int no_cgroup_owner: 1;
+	struct swap_iocb **swap_plug;
+	struct bdi_writeback *wb;
+	struct inode *inode;
+	int wb_id;
+	int wb_lcand_id;
+	int wb_tcand_id;
+	size_t wb_bytes;
+	size_t wb_lcand_bytes;
+	size_t wb_tcand_bytes;
+};
+
+typedef __kernel_uid32_t projid_t;
+
+typedef struct {
+	projid_t val;
+} kprojid_t;
+
+enum quota_type {
+	USRQUOTA = 0,
+	GRPQUOTA = 1,
+	PRJQUOTA = 2,
+};
+
+struct kqid {
+	union {
+		kuid_t uid;
+		kgid_t gid;
+		kprojid_t projid;
+	};
+	enum quota_type type;
+};
+
+struct mem_dqblk {
+	qsize_t dqb_bhardlimit;
+	qsize_t dqb_bsoftlimit;
+	qsize_t dqb_curspace;
+	qsize_t dqb_rsvspace;
+	qsize_t dqb_ihardlimit;
+	qsize_t dqb_isoftlimit;
+	qsize_t dqb_curinodes;
+	time64_t dqb_btime;
+	time64_t dqb_itime;
+};
+
+struct dquot {
+	struct hlist_node dq_hash;
+	struct list_head dq_inuse;
+	struct list_head dq_free;
+	struct list_head dq_dirty;
+	struct mutex dq_lock;
+	spinlock_t dq_dqb_lock;
+	atomic_t dq_count;
+	struct super_block *dq_sb;
+	struct kqid dq_id;
+	loff_t dq_off;
+	unsigned long dq_flags;
+	struct mem_dqblk dq_dqb;
+};
+
+struct shrink_control {
+	gfp_t gfp_mask;
+	int nid;
+	unsigned long nr_to_scan;
+	unsigned long nr_scanned;
+	struct mem_cgroup *memcg;
+};
+
+struct dquot_operations {
+	int (*write_dquot)(struct dquot *);
+	struct dquot * (*alloc_dquot)(struct super_block *, int);
+	void (*destroy_dquot)(struct dquot *);
+	int (*acquire_dquot)(struct dquot *);
+	int (*release_dquot)(struct dquot *);
+	int (*mark_dirty)(struct dquot *);
+	int (*write_info)(struct super_block *, int);
+	qsize_t * (*get_reserved_space)(struct inode *);
+	int (*get_projid)(struct inode *, kprojid_t *);
+	int (*get_inode_usage)(struct inode *, qsize_t *);
+	int (*get_next_id)(struct super_block *, struct kqid *);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct qc_info;
+
+struct qc_dqblk;
+
+struct qc_state;
+
+struct quotactl_ops {
+	int (*quota_on)(struct super_block *, int, int, const struct path *);
+	int (*quota_off)(struct super_block *, int);
+	int (*quota_enable)(struct super_block *, unsigned int);
+	int (*quota_disable)(struct super_block *, unsigned int);
+	int (*quota_sync)(struct super_block *, int);
+	int (*set_info)(struct super_block *, int, struct qc_info *);
+	int (*get_dqblk)(struct super_block *, struct kqid, struct qc_dqblk *);
+	int (*get_nextdqblk)(struct super_block *, struct kqid *, struct qc_dqblk *);
+	int (*set_dqblk)(struct super_block *, struct kqid, struct qc_dqblk *);
+	int (*get_state)(struct super_block *, struct qc_state *);
+	int (*rm_xquota)(struct super_block *, unsigned int);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct qc_info {
+	int i_fieldmask;
+	unsigned int i_flags;
+	unsigned int i_spc_timelimit;
+	unsigned int i_ino_timelimit;
+	unsigned int i_rt_spc_timelimit;
+	unsigned int i_spc_warnlimit;
+	unsigned int i_ino_warnlimit;
+	unsigned int i_rt_spc_warnlimit;
+};
+
+struct qc_dqblk {
+	int d_fieldmask;
+	u64 d_spc_hardlimit;
+	u64 d_spc_softlimit;
+	u64 d_ino_hardlimit;
+	u64 d_ino_softlimit;
+	u64 d_space;
+	u64 d_ino_count;
+	s64 d_ino_timer;
+	s64 d_spc_timer;
+	int d_ino_warns;
+	int d_spc_warns;
+	u64 d_rt_spc_hardlimit;
+	u64 d_rt_spc_softlimit;
+	u64 d_rt_space;
+	s64 d_rt_spc_timer;
+	int d_rt_spc_warns;
+};
+
+struct qc_type_state {
+	unsigned int flags;
+	unsigned int spc_timelimit;
+	unsigned int ino_timelimit;
+	unsigned int rt_spc_timelimit;
+	unsigned int spc_warnlimit;
+	unsigned int ino_warnlimit;
+	unsigned int rt_spc_warnlimit;
+	unsigned long long ino;
+	blkcnt_t blocks;
+	blkcnt_t nextents;
+};
+
+struct qc_state {
+	unsigned int s_incoredqs;
+	struct qc_type_state s_state[3];
+};
+
+struct fid;
+
+struct iomap;
+
+struct export_operations {
+	int (*encode_fh)(struct inode *, __u32 *, int *, struct inode *);
+	struct dentry * (*fh_to_dentry)(struct super_block *, struct fid *, int, int);
+	struct dentry * (*fh_to_parent)(struct super_block *, struct fid *, int, int);
+	int (*get_name)(struct dentry *, char *, struct dentry *);
+	struct dentry * (*get_parent)(struct dentry *);
+	int (*commit_metadata)(struct inode *);
+	int (*get_uuid)(struct super_block *, u8 *, u32 *, u64 *);
+	int (*map_blocks)(struct inode *, loff_t, u64, struct iomap *, bool, u32 *);
+	int (*commit_blocks)(struct inode *, struct iomap *, int, struct iattr *);
+	unsigned long flags;
+};
+
+struct xattr_handler {
+	const char *name;
+	const char *prefix;
+	int flags;
+	bool (*list)(struct dentry *);
+	int (*get)(const struct xattr_handler *, struct dentry *, struct inode *, const char *, void *, size_t);
+	int (*set)(const struct xattr_handler *, struct mnt_idmap *, struct dentry *, struct inode *, const char *, const void *, size_t, int);
+};
+
+union fscrypt_policy;
+
+struct fscrypt_operations {
+	unsigned int needs_bounce_pages: 1;
+	unsigned int has_32bit_inodes: 1;
+	unsigned int supports_subblock_data_units: 1;
+	const char *legacy_key_prefix;
+	int (*get_context)(struct inode *, void *, size_t);
+	int (*set_context)(struct inode *, const void *, size_t, void *);
+	const union fscrypt_policy * (*get_dummy_policy)(struct super_block *);
+	bool (*empty_dir)(struct inode *);
+	bool (*has_stable_inodes)(struct super_block *);
+	struct block_device ** (*get_devices)(struct super_block *, unsigned int *);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+	u64 android_oem_data1[4];
+};
+
+struct fsverity_operations {
+	int (*begin_enable_verity)(struct file *);
+	int (*end_enable_verity)(struct file *, const void *, size_t, u64);
+	int (*get_verity_descriptor)(struct inode *, void *, size_t);
+	struct page * (*read_merkle_tree_page)(struct inode *, unsigned long, unsigned long);
+	int (*write_merkle_tree_block)(struct inode *, const void *, u64, unsigned int);
+};
+
+struct quota_format_type {
+	int qf_fmt_id;
+	const struct quota_format_ops *qf_ops;
+	struct module *qf_owner;
+	struct quota_format_type *qf_next;
+};
+
+struct quota_format_ops {
+	int (*check_quota_file)(struct super_block *, int);
+	int (*read_file_info)(struct super_block *, int);
+	int (*write_file_info)(struct super_block *, int);
+	int (*free_file_info)(struct super_block *, int);
+	int (*read_dqblk)(struct dquot *);
+	int (*commit_dqblk)(struct dquot *);
+	int (*release_dqblk)(struct dquot *);
+	int (*get_next_id)(struct super_block *, struct kqid *);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+typedef struct {
+	int val[2];
+} __kernel_fsid_t;
+
+typedef struct fsnotify_mark_connector __attribute__((btf_type_tag("rcu"))) *fsnotify_connp_t;
+
+struct fsnotify_mark_connector {
+	spinlock_t lock;
+	unsigned short type;
+	unsigned short flags;
+	__kernel_fsid_t fsid;
+	union {
+		fsnotify_connp_t *obj;
+		struct fsnotify_mark_connector *destroy_next;
+	};
+	struct hlist_head list;
+};
+
+struct list_lru_one {
+	struct list_head list;
+	long nr_items;
+};
+
+struct list_lru_node {
+	spinlock_t lock;
+	struct list_lru_one lru;
+	long nr_items;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct delayed_call {
+	void (*fn)(void *);
+	void *arg;
+};
+
+typedef struct {
+	uid_t val;
+} vfsuid_t;
+
+typedef struct {
+	gid_t val;
+} vfsgid_t;
+
+struct iattr {
+	unsigned int ia_valid;
+	umode_t ia_mode;
+	union {
+		kuid_t ia_uid;
+		vfsuid_t ia_vfsuid;
+	};
+	union {
+		kgid_t ia_gid;
+		vfsgid_t ia_vfsgid;
+	};
+	loff_t ia_size;
+	struct timespec64 ia_atime;
+	struct timespec64 ia_mtime;
+	struct timespec64 ia_ctime;
+	struct file *ia_file;
+};
+
+struct kstat {
+	u32 result_mask;
+	umode_t mode;
+	unsigned int nlink;
+	uint32_t blksize;
+	u64 attributes;
+	u64 attributes_mask;
+	u64 ino;
+	dev_t dev;
+	dev_t rdev;
+	kuid_t uid;
+	kgid_t gid;
+	loff_t size;
+	struct timespec64 atime;
+	struct timespec64 mtime;
+	struct timespec64 ctime;
+	struct timespec64 btime;
+	u64 blocks;
+	u64 mnt_id;
+	u32 dio_mem_align;
+	u32 dio_offset_align;
+	u64 change_cookie;
+};
+
+struct offset_ctx {
+	struct xarray xa;
+	u32 next_offset;
+};
+
+struct cdev {
+	struct kobject kobj;
+	struct module *owner;
+	const struct file_operations *ops;
+	struct list_head list;
+	dev_t dev;
+	unsigned int count;
+};
+
+enum migrate_mode {
+	MIGRATE_ASYNC = 0,
+	MIGRATE_SYNC_LIGHT = 1,
+	MIGRATE_SYNC = 2,
+	MIGRATE_SYNC_NO_COPY = 3,
+};
+
+struct readahead_control;
+
+struct swap_info_struct;
+
+struct address_space_operations {
+	int (*writepage)(struct page *, struct writeback_control *);
+	int (*read_folio)(struct file *, struct folio *);
+	int (*writepages)(struct address_space *, struct writeback_control *);
+	bool (*dirty_folio)(struct address_space *, struct folio *);
+	void (*readahead)(struct readahead_control *);
+	int (*write_begin)(struct file *, struct address_space *, loff_t, unsigned int, struct page **, void **);
+	int (*write_end)(struct file *, struct address_space *, loff_t, unsigned int, unsigned int, struct page *, void *);
+	sector_t (*bmap)(struct address_space *, sector_t);
+	void (*invalidate_folio)(struct folio *, size_t, size_t);
+	bool (*release_folio)(struct folio *, gfp_t);
+	void (*free_folio)(struct folio *);
+	ssize_t (*direct_IO)(struct kiocb *, struct iov_iter *);
+	int (*migrate_folio)(struct address_space *, struct folio *, struct folio *, enum migrate_mode);
+	int (*launder_folio)(struct folio *);
+	bool (*is_partially_uptodate)(struct folio *, size_t, size_t);
+	void (*is_dirty_writeback)(struct folio *, bool *, bool *);
+	int (*error_remove_page)(struct address_space *, struct page *);
+	int (*swap_activate)(struct swap_info_struct *, struct file *, sector_t *);
+	void (*swap_deactivate)(struct file *);
+	int (*swap_rw)(struct kiocb *, struct iov_iter *);
+};
+
+struct readahead_control {
+	struct file *file;
+	struct address_space *mapping;
+	struct file_ra_state *ra;
+	unsigned long _index;
+	unsigned int _nr_pages;
+	unsigned int _batch_count;
+	bool _workingset;
+	unsigned long _pflags;
+	u64 android_oem_data1;
+};
+
+struct swap_cluster_info;
+
+struct percpu_cluster;
+
+struct swap_info_struct {
+	struct percpu_ref users;
+	unsigned long flags;
+	short prio;
+	struct plist_node list;
+	signed char type;
+	unsigned int max;
+	unsigned char *swap_map;
+	struct swap_cluster_info *cluster_info;
+	struct list_head free_clusters;
+	struct list_head nonfull_clusters[10];
+	unsigned int lowest_bit;
+	unsigned int highest_bit;
+	unsigned int pages;
+	unsigned int inuse_pages;
+	unsigned int cluster_next;
+	unsigned int cluster_nr;
+	unsigned int __attribute__((btf_type_tag("percpu"))) *cluster_next_cpu;
+	struct percpu_cluster __attribute__((btf_type_tag("percpu"))) *percpu_cluster;
+	struct rb_root swap_extent_root;
+	struct block_device *bdev;
+	struct file *swap_file;
+	unsigned int old_block_size;
+	struct completion comp;
+	spinlock_t lock;
+	spinlock_t cont_lock;
+	struct work_struct discard_work;
+	struct list_head discard_clusters;
+	struct plist_node avail_lists[0];
+};
+
+struct swap_cluster_info {
+	spinlock_t lock;
+	unsigned int count: 12;
+	unsigned int state: 3;
+	unsigned int order: 4;
+	unsigned int reserved: 1;
+	unsigned int flags: 4;
+	struct list_head list;
+};
+
+struct percpu_cluster {
+	unsigned int next[10];
+};
+
+struct module_attribute {
+	struct attribute attr;
+	ssize_t (*show)(struct module_attribute *, struct module_kobject *, char *);
+	ssize_t (*store)(struct module_attribute *, struct module_kobject *, const char *, size_t);
+	void (*setup)(struct module *, const char *);
+	int (*test)(struct module *);
+	void (*free)(struct module *);
+};
+
+struct kernel_symbol {
+	int value_offset;
+	int name_offset;
+	int namespace_offset;
+};
+
+struct kernel_param_ops;
+
+struct kparam_string;
+
+struct kparam_array;
+
+struct kernel_param {
+	const char *name;
+	struct module *mod;
+	const struct kernel_param_ops *ops;
+	const u16 perm;
+	s8 level;
+	u8 flags;
+	union {
+		void *arg;
+		const struct kparam_string *str;
+		const struct kparam_array *arr;
+	};
+};
+
+struct kernel_param_ops {
+	unsigned int flags;
+	int (*set)(const char *, const struct kernel_param *);
+	int (*get)(char *, const struct kernel_param *);
+	void (*free)(void *);
+};
+
+struct kparam_string {
+	unsigned int maxlen;
+	char *string;
+};
+
+struct kparam_array {
+	unsigned int max;
+	unsigned int elemsize;
+	unsigned int *num;
+	const struct kernel_param_ops *ops;
+	void *elem;
+};
+
+struct exception_table_entry {
+	int insn;
+	int fixup;
+	short type;
+	short data;
+};
+
+typedef __u32 __le32;
+
+struct plt_entry {
+	__le32 adrp;
+	__le32 add;
+	__le32 br;
+};
+
+enum kvm_pgtable_prot {
+	KVM_PGTABLE_PROT_X = 1ULL,
+	KVM_PGTABLE_PROT_W = 2ULL,
+	KVM_PGTABLE_PROT_R = 4ULL,
+	KVM_PGTABLE_PROT_DEVICE = 8ULL,
+	KVM_PGTABLE_PROT_NC = 16ULL,
+	KVM_PGTABLE_PROT_PXN = 32ULL,
+	KVM_PGTABLE_PROT_UXN = 64ULL,
+	KVM_PGTABLE_PROT_SW0 = 36028797018963968ULL,
+	KVM_PGTABLE_PROT_SW1 = 72057594037927936ULL,
+	KVM_PGTABLE_PROT_SW2 = 144115188075855872ULL,
+	KVM_PGTABLE_PROT_SW3 = 288230376151711744ULL,
+};
+
+typedef u64 kvm_pte_t;
+
+enum pkvm_psci_notification {
+	PKVM_PSCI_CPU_SUSPEND = 0,
+	PKVM_PSCI_SYSTEM_SUSPEND = 1,
+	PKVM_PSCI_CPU_ENTRY = 2,
+};
+
+struct user_pt_regs;
+
+struct kvm_hyp_req;
+
+struct kvm_hyp_iommu;
+
+struct kvm_hyp_iommu_domain;
+
+struct iommu_iotlb_gather;
+
+struct kvm_iommu_paddr_cache;
+
+struct pkvm_module_ops {
+	int (*create_private_mapping)(phys_addr_t, size_t, enum kvm_pgtable_prot, unsigned long *);
+	void * (*alloc_module_va)(u64);
+	int (*map_module_page)(u64, void *, enum kvm_pgtable_prot, bool);
+	int (*register_serial_driver)(void (*)(char));
+	void (*putc)(char);
+	void (*puts)(const char *);
+	void (*putx64)(u64);
+	void * (*fixmap_map)(phys_addr_t);
+	void (*fixmap_unmap)();
+	void * (*linear_map_early)(phys_addr_t, size_t, enum kvm_pgtable_prot);
+	void (*linear_unmap_early)(void *, size_t);
+	void (*flush_dcache_to_poc)(void *, size_t);
+	void (*update_hcr_el2)(unsigned long, unsigned long);
+	void (*update_hfgwtr_el2)(unsigned long, unsigned long);
+	int (*register_host_perm_fault_handler)(int (*)(struct user_pt_regs *, u64, u64));
+	int (*host_stage2_mod_prot)(u64, enum kvm_pgtable_prot, u64, bool);
+	int (*host_stage2_get_leaf)(phys_addr_t, kvm_pte_t *, u32 *);
+	int (*register_host_smc_handler)(bool (*)(struct user_pt_regs *));
+	int (*register_default_trap_handler)(bool (*)(struct user_pt_regs *));
+	int (*register_illegal_abt_notifier)(void (*)(struct user_pt_regs *));
+	int (*register_psci_notifier)(void (*)(enum pkvm_psci_notification, struct user_pt_regs *));
+	int (*register_hyp_panic_notifier)(void (*)(struct user_pt_regs *));
+	int (*register_unmask_serror)(bool (*)(), void (*)());
+	int (*host_donate_hyp)(u64, u64, bool);
+	int (*host_donate_hyp_prot)(u64, u64, bool, enum kvm_pgtable_prot);
+	int (*hyp_donate_host)(u64, u64);
+	int (*host_share_hyp)(u64);
+	int (*host_unshare_hyp)(u64);
+	int (*pin_shared_mem)(void *, void *);
+	void (*unpin_shared_mem)(void *, void *);
+	void * (*memcpy)(void *, const void *, size_t);
+	void * (*memset)(void *, int, size_t);
+	phys_addr_t (*hyp_pa)(void *);
+	void * (*hyp_va)(phys_addr_t);
+	unsigned long (*kern_hyp_va)(unsigned long);
+	void * (*hyp_alloc)(size_t);
+	int (*hyp_alloc_errno)();
+	void (*hyp_free)(void *);
+	void * (*iommu_donate_pages)(u8, bool);
+	void (*iommu_reclaim_pages)(void *, u8);
+	int (*iommu_request)(struct kvm_hyp_req *);
+	int (*iommu_init_device)(struct kvm_hyp_iommu *);
+	void (*udelay)(unsigned long);
+	u8 (*hyp_alloc_missing_donations)();
+	bool (*list_add_valid_or_report)(struct list_head *, struct list_head *, struct list_head *);
+	bool (*list_del_entry_valid_or_report)(struct list_head *);
+	void (*iommu_iotlb_gather_add_page)(struct kvm_hyp_iommu_domain *, struct iommu_iotlb_gather *, unsigned long, size_t);
+	int (*register_hyp_event_ids)(unsigned long, unsigned long);
+	void * (*tracing_reserve_entry)(unsigned long);
+	void (*tracing_commit_entry)();
+	void * (*iommu_donate_pages_atomic)(u8);
+	void (*iommu_reclaim_pages_atomic)(void *, u8);
+	int (*iommu_snapshot_host_stage2)(struct kvm_hyp_iommu_domain *);
+	int (*hyp_smp_processor_id)();
+	union {
+		void (*iommu_flush_unmap_cache)(struct kvm_iommu_paddr_cache *);
+		struct {
+			u64 android_kabi_reserved1;
+		};
+		union {};
+	};
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+	u64 android_kabi_reserved5;
+	u64 android_kabi_reserved6;
+	u64 android_kabi_reserved7;
+	u64 android_kabi_reserved8;
+	u64 android_kabi_reserved9;
+	u64 android_kabi_reserved10;
+	u64 android_kabi_reserved11;
+	u64 android_kabi_reserved12;
+	u64 android_kabi_reserved13;
+	u64 android_kabi_reserved14;
+	u64 android_kabi_reserved15;
+	u64 android_kabi_reserved16;
+	u64 android_kabi_reserved17;
+	u64 android_kabi_reserved18;
+	u64 android_kabi_reserved19;
+	u64 android_kabi_reserved20;
+	u64 android_kabi_reserved21;
+	u64 android_kabi_reserved22;
+	u64 android_kabi_reserved23;
+	u64 android_kabi_reserved24;
+	u64 android_kabi_reserved25;
+	u64 android_kabi_reserved26;
+	u64 android_kabi_reserved27;
+	u64 android_kabi_reserved28;
+	u64 android_kabi_reserved29;
+	u64 android_kabi_reserved30;
+	u64 android_kabi_reserved31;
+	u64 android_kabi_reserved32;
+};
+
+struct bug_entry {
+	int bug_addr_disp;
+	int file_disp;
+	unsigned short line;
+	unsigned short flags;
+};
+
+typedef __u32 Elf64_Word;
+
+typedef __u16 Elf64_Half;
+
+typedef __u64 Elf64_Addr;
+
+typedef __u64 Elf64_Xword;
+
+struct elf64_sym {
+	Elf64_Word st_name;
+	unsigned char st_info;
+	unsigned char st_other;
+	Elf64_Half st_shndx;
+	Elf64_Addr st_value;
+	Elf64_Xword st_size;
+};
+
+struct srcu_data;
+
+struct srcu_usage;
+
+struct srcu_struct {
+	unsigned int srcu_idx;
+	struct srcu_data __attribute__((btf_type_tag("percpu"))) *sda;
+	struct lockdep_map dep_map;
+	struct srcu_usage *srcu_sup;
+};
+
+struct rcu_segcblist {
+	struct callback_head *head;
+	struct callback_head **tails[4];
+	unsigned long gp_seq[4];
+	atomic_long_t len;
+	long seglen[4];
+	u8 flags;
+};
+
+struct srcu_node;
+
+struct srcu_data {
+	atomic_long_t srcu_lock_count[2];
+	atomic_long_t srcu_unlock_count[2];
+	int srcu_nmi_safety;
+	long: 64;
+	long: 64;
+	long: 64;
+	spinlock_t lock;
+	struct rcu_segcblist srcu_cblist;
+	unsigned long srcu_gp_seq_needed;
+	unsigned long srcu_gp_seq_needed_exp;
+	bool srcu_cblist_invoking;
+	struct timer_list delay_work;
+	struct work_struct work;
+	struct callback_head srcu_barrier_head;
+	struct srcu_node *mynode;
+	unsigned long grpmask;
+	int cpu;
+	struct srcu_struct *ssp;
+	long: 64;
+	long: 64;
+};
+
+struct srcu_node {
+	spinlock_t lock;
+	unsigned long srcu_have_cbs[4];
+	unsigned long srcu_data_have_cbs[4];
+	unsigned long srcu_gp_seq_needed_exp;
+	struct srcu_node *srcu_parent;
+	int grplo;
+	int grphi;
+};
+
+struct srcu_usage {
+	struct srcu_node *node;
+	struct srcu_node *level[3];
+	int srcu_size_state;
+	struct mutex srcu_cb_mutex;
+	spinlock_t lock;
+	struct mutex srcu_gp_mutex;
+	unsigned long srcu_gp_seq;
+	unsigned long srcu_gp_seq_needed;
+	unsigned long srcu_gp_seq_needed_exp;
+	unsigned long srcu_gp_start;
+	unsigned long srcu_last_gp_end;
+	unsigned long srcu_size_jiffies;
+	unsigned long srcu_n_lock_retries;
+	unsigned long srcu_n_exp_nodelay;
+	bool sda_is_static;
+	unsigned long srcu_barrier_seq;
+	struct mutex srcu_barrier_mutex;
+	struct completion srcu_barrier_completion;
+	atomic_t srcu_barrier_cpu_cnt;
+	unsigned long reschedule_jiffies;
+	unsigned long reschedule_count;
+	struct delayed_work work;
+	struct srcu_struct *srcu_ssp;
+};
+
+struct bpf_raw_event_map {
+	struct tracepoint *tp;
+	void *bpf_func;
+	u32 num_args;
+	u32 writable_size;
+	long: 64;
+};
+
+struct trace_eval_map {
+	const char *system;
+	const char *eval_string;
+	unsigned long eval_value;
+};
+
+enum kunit_speed {
+	KUNIT_SPEED_UNSET = 0,
+	KUNIT_SPEED_VERY_SLOW = 1,
+	KUNIT_SPEED_SLOW = 2,
+	KUNIT_SPEED_NORMAL = 3,
+	KUNIT_SPEED_MAX = 3,
+};
+
+struct kunit_attributes {
+	enum kunit_speed speed;
+};
+
+struct kunit_case;
+
+struct kunit_suite {
+	const char name[256];
+	int (*suite_init)(struct kunit_suite *);
+	void (*suite_exit)(struct kunit_suite *);
+	int (*init)(struct kunit *);
+	void (*exit)(struct kunit *);
+	struct kunit_case *test_cases;
+	struct kunit_attributes attr;
+	char status_comment[256];
+	struct dentry *debugfs;
+	char *log;
+	int suite_init_err;
+};
+
+struct kunit_case {
+	void (*run_case)(struct kunit *);
+	const char *name;
+	const void * (*generate_params)(const void *, char *);
+	struct kunit_attributes attr;
+	enum kunit_status status;
+	char *module_name;
+	char *log;
+};
+
+struct static_key_true {
+	struct static_key key;
+};
+
+struct static_key_false {
+	struct static_key key;
+};
+
+struct _ddebug {
+	const char *modname;
+	const char *function;
+	const char *filename;
+	const char *format;
+	unsigned int lineno: 18;
+	unsigned int class_id: 6;
+	unsigned int flags: 8;
+	union {
+		struct static_key_true dd_key_true;
+		struct static_key_false dd_key_false;
+	} key;
+};
+
+enum class_map_type {
+	DD_CLASS_TYPE_DISJOINT_BITS = 0,
+	DD_CLASS_TYPE_LEVEL_NUM = 1,
+	DD_CLASS_TYPE_DISJOINT_NAMES = 2,
+	DD_CLASS_TYPE_LEVEL_NAMES = 3,
+};
+
+struct ddebug_class_map {
+	struct list_head link;
+	struct module *mod;
+	const char *mod_name;
+	const char **class_names;
+	const int length;
+	const int base;
+	enum class_map_type map_type;
+};
+
+struct perf_event_pmu_context {
+	struct pmu *pmu;
+	struct perf_event_context *ctx;
+	struct list_head pmu_ctx_entry;
+	struct list_head pinned_active;
+	struct list_head flexible_active;
+	unsigned int embedded: 1;
+	unsigned int nr_events;
+	unsigned int nr_cgroups;
+	atomic_t refcount;
+	struct callback_head callback_head;
+	void *task_ctx_data;
+	int rotate_necessary;
+};
+
+struct perf_cpu_pmu_context {
+	struct perf_event_pmu_context epc;
+	struct perf_event_pmu_context *task_epc;
+	struct list_head sched_cb_entry;
+	int sched_cb_usage;
+	int active_oncpu;
+	int exclusive;
+	raw_spinlock_t hrtimer_lock;
+	struct hrtimer hrtimer;
+	ktime_t hrtimer_interval;
+	unsigned int hrtimer_active;
+};
+
+struct perf_output_handle {
+	struct perf_event *event;
+	struct perf_buffer *rb;
+	unsigned long wakeup;
+	unsigned long size;
+	u64 aux_flags;
+	union {
+		void *addr;
+		unsigned long head;
+	};
+	int page;
+};
+
+struct fasync_struct {
+	rwlock_t fa_lock;
+	int magic;
+	int fa_fd;
+	struct fasync_struct *fa_next;
+	struct file *fa_file;
+	struct callback_head fa_rcu;
+};
+
+struct perf_addr_filter_range {
+	unsigned long start;
+	unsigned long size;
+};
+
+union perf_sample_weight {
+	__u64 full;
+	struct {
+		__u32 var1_dw;
+		__u16 var2_w;
+		__u16 var3_w;
+	};
+};
+
+union perf_mem_data_src {
+	__u64 val;
+	struct {
+		__u64 mem_op: 5;
+		__u64 mem_lvl: 14;
+		__u64 mem_snoop: 5;
+		__u64 mem_lock: 2;
+		__u64 mem_dtlb: 7;
+		__u64 mem_lvl_num: 4;
+		__u64 mem_remote: 1;
+		__u64 mem_snoopx: 2;
+		__u64 mem_blk: 3;
+		__u64 mem_hops: 3;
+		__u64 mem_rsvd: 18;
+	};
+};
+
+struct perf_regs {
+	__u64 abi;
+	struct pt_regs *regs;
+};
+
+struct perf_callchain_entry;
+
+struct perf_raw_record;
+
+struct perf_branch_stack;
+
+struct perf_sample_data {
+	u64 sample_flags;
+	u64 period;
+	u64 dyn_size;
+	u64 type;
+	struct {
+		u32 pid;
+		u32 tid;
+	} tid_entry;
+	u64 time;
+	u64 id;
+	struct {
+		u32 cpu;
+		u32 reserved;
+	} cpu_entry;
+	u64 ip;
+	struct perf_callchain_entry *callchain;
+	struct perf_raw_record *raw;
+	struct perf_branch_stack *br_stack;
+	union perf_sample_weight weight;
+	union perf_mem_data_src data_src;
+	u64 txn;
+	struct perf_regs regs_user;
+	struct perf_regs regs_intr;
+	u64 stack_user_size;
+	u64 stream_id;
+	u64 cgroup;
+	u64 addr;
+	u64 phys_addr;
+	u64 data_page_size;
+	u64 code_page_size;
+	u64 aux_size;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct perf_callchain_entry {
+	__u64 nr;
+	__u64 ip[0];
+};
+
+typedef unsigned long (*perf_copy_f)(void *, const void *, unsigned long, unsigned long);
+
+struct perf_raw_frag {
+	union {
+		struct perf_raw_frag *next;
+		unsigned long pad;
+	};
+	perf_copy_f copy;
+	void *data;
+	u32 size;
+} __attribute__((packed));
+
+struct perf_raw_record {
+	struct perf_raw_frag frag;
+	u32 size;
+};
+
+struct perf_branch_entry {
+	__u64 from;
+	__u64 to;
+	__u64 mispred: 1;
+	__u64 predicted: 1;
+	__u64 in_tx: 1;
+	__u64 abort: 1;
+	__u64 cycles: 16;
+	__u64 type: 4;
+	__u64 spec: 2;
+	__u64 new_type: 4;
+	__u64 priv: 3;
+	__u64 reserved: 31;
+};
+
+struct perf_branch_stack {
+	__u64 nr;
+	__u64 hw_idx;
+	struct perf_branch_entry entries[0];
+};
+
+struct user_pt_regs {
+	__u64 regs[31];
+	__u64 sp;
+	__u64 pc;
+	__u64 pstate;
+};
+
+struct pt_regs {
+	union {
+		struct user_pt_regs user_regs;
+		struct {
+			u64 regs[31];
+			u64 sp;
+			u64 pc;
+			u64 pstate;
+		};
+	};
+	u64 orig_x0;
+	s32 syscallno;
+	u32 unused2;
+	u64 sdei_ttbr1;
+	u64 pmr_save;
+	u64 stackframe[2];
+	u64 lockdep_hardirqs;
+	u64 exit_rcu;
+};
+
+struct trace_event_fields {
+	const char *type;
+	union {
+		struct {
+			const char *name;
+			const int size;
+			const int align;
+			const int is_signed;
+			const int filter_type;
+			const int len;
+		};
+		int (*define_fields)(struct trace_event_call *);
+	};
+};
+
+typedef void (*btf_trace_initcall_level)(void *, const char *);
+
+typedef int (*initcall_t)();
+
+typedef void (*btf_trace_initcall_start)(void *, initcall_t);
+
+typedef void (*btf_trace_initcall_finish)(void *, initcall_t, int);
+
+struct obs_kernel_param {
+	const char *str;
+	int (*setup_func)(char *);
+	int early;
+};
+
+enum system_states {
+	SYSTEM_BOOTING = 0,
+	SYSTEM_SCHEDULING = 1,
+	SYSTEM_FREEING_INITMEM = 2,
+	SYSTEM_RUNNING = 3,
+	SYSTEM_HALT = 4,
+	SYSTEM_POWER_OFF = 5,
+	SYSTEM_RESTART = 6,
+	SYSTEM_SUSPEND = 7,
+};
+
+typedef int initcall_entry_t;
+
+enum cpuhp_state {
+	CPUHP_INVALID = -1,
+	CPUHP_OFFLINE = 0,
+	CPUHP_CREATE_THREADS = 1,
+	CPUHP_PERF_PREPARE = 2,
+	CPUHP_PERF_X86_PREPARE = 3,
+	CPUHP_PERF_X86_AMD_UNCORE_PREP = 4,
+	CPUHP_PERF_POWER = 5,
+	CPUHP_PERF_SUPERH = 6,
+	CPUHP_X86_HPET_DEAD = 7,
+	CPUHP_X86_APB_DEAD = 8,
+	CPUHP_X86_MCE_DEAD = 9,
+	CPUHP_VIRT_NET_DEAD = 10,
+	CPUHP_IBMVNIC_DEAD = 11,
+	CPUHP_SLUB_DEAD = 12,
+	CPUHP_DEBUG_OBJ_DEAD = 13,
+	CPUHP_MM_WRITEBACK_DEAD = 14,
+	CPUHP_MM_DEMOTION_DEAD = 15,
+	CPUHP_MM_VMSTAT_DEAD = 16,
+	CPUHP_SOFTIRQ_DEAD = 17,
+	CPUHP_NET_MVNETA_DEAD = 18,
+	CPUHP_CPUIDLE_DEAD = 19,
+	CPUHP_ARM64_FPSIMD_DEAD = 20,
+	CPUHP_ARM_OMAP_WAKE_DEAD = 21,
+	CPUHP_IRQ_POLL_DEAD = 22,
+	CPUHP_BLOCK_SOFTIRQ_DEAD = 23,
+	CPUHP_BIO_DEAD = 24,
+	CPUHP_ACPI_CPUDRV_DEAD = 25,
+	CPUHP_S390_PFAULT_DEAD = 26,
+	CPUHP_BLK_MQ_DEAD = 27,
+	CPUHP_FS_BUFF_DEAD = 28,
+	CPUHP_PRINTK_DEAD = 29,
+	CPUHP_MM_MEMCQ_DEAD = 30,
+	CPUHP_PERCPU_CNT_DEAD = 31,
+	CPUHP_RADIX_DEAD = 32,
+	CPUHP_PAGE_ALLOC = 33,
+	CPUHP_NET_DEV_DEAD = 34,
+	CPUHP_PCI_XGENE_DEAD = 35,
+	CPUHP_IOMMU_IOVA_DEAD = 36,
+	CPUHP_LUSTRE_CFS_DEAD = 37,
+	CPUHP_AP_ARM_CACHE_B15_RAC_DEAD = 38,
+	CPUHP_PADATA_DEAD = 39,
+	CPUHP_AP_DTPM_CPU_DEAD = 40,
+	CPUHP_RANDOM_PREPARE = 41,
+	CPUHP_WORKQUEUE_PREP = 42,
+	CPUHP_POWER_NUMA_PREPARE = 43,
+	CPUHP_HRTIMERS_PREPARE = 44,
+	CPUHP_PROFILE_PREPARE = 45,
+	CPUHP_X2APIC_PREPARE = 46,
+	CPUHP_SMPCFD_PREPARE = 47,
+	CPUHP_RELAY_PREPARE = 48,
+	CPUHP_SLAB_PREPARE = 49,
+	CPUHP_MD_RAID5_PREPARE = 50,
+	CPUHP_RCUTREE_PREP = 51,
+	CPUHP_CPUIDLE_COUPLED_PREPARE = 52,
+	CPUHP_POWERPC_PMAC_PREPARE = 53,
+	CPUHP_POWERPC_MMU_CTX_PREPARE = 54,
+	CPUHP_XEN_PREPARE = 55,
+	CPUHP_XEN_EVTCHN_PREPARE = 56,
+	CPUHP_ARM_SHMOBILE_SCU_PREPARE = 57,
+	CPUHP_SH_SH3X_PREPARE = 58,
+	CPUHP_NET_FLOW_PREPARE = 59,
+	CPUHP_TOPOLOGY_PREPARE = 60,
+	CPUHP_NET_IUCV_PREPARE = 61,
+	CPUHP_ARM_BL_PREPARE = 62,
+	CPUHP_TRACE_RB_PREPARE = 63,
+	CPUHP_MM_ZS_PREPARE = 64,
+	CPUHP_MM_ZSWP_MEM_PREPARE = 65,
+	CPUHP_MM_ZSWP_POOL_PREPARE = 66,
+	CPUHP_KVM_PPC_BOOK3S_PREPARE = 67,
+	CPUHP_ZCOMP_PREPARE = 68,
+	CPUHP_TIMERS_PREPARE = 69,
+	CPUHP_MIPS_SOC_PREPARE = 70,
+	CPUHP_BP_PREPARE_DYN = 71,
+	CPUHP_BP_PREPARE_DYN_END = 91,
+	CPUHP_BP_KICK_AP = 92,
+	CPUHP_BRINGUP_CPU = 93,
+	CPUHP_AP_IDLE_DEAD = 94,
+	CPUHP_AP_OFFLINE = 95,
+	CPUHP_AP_CACHECTRL_STARTING = 96,
+	CPUHP_AP_SCHED_STARTING = 97,
+	CPUHP_AP_RCUTREE_DYING = 98,
+	CPUHP_AP_CPU_PM_STARTING = 99,
+	CPUHP_AP_IRQ_GIC_STARTING = 100,
+	CPUHP_AP_IRQ_HIP04_STARTING = 101,
+	CPUHP_AP_IRQ_APPLE_AIC_STARTING = 102,
+	CPUHP_AP_IRQ_ARMADA_XP_STARTING = 103,
+	CPUHP_AP_IRQ_BCM2836_STARTING = 104,
+	CPUHP_AP_IRQ_MIPS_GIC_STARTING = 105,
+	CPUHP_AP_IRQ_RISCV_STARTING = 106,
+	CPUHP_AP_IRQ_LOONGARCH_STARTING = 107,
+	CPUHP_AP_IRQ_SIFIVE_PLIC_STARTING = 108,
+	CPUHP_AP_ARM_MVEBU_COHERENCY = 109,
+	CPUHP_AP_MICROCODE_LOADER = 110,
+	CPUHP_AP_PERF_X86_AMD_UNCORE_STARTING = 111,
+	CPUHP_AP_PERF_X86_STARTING = 112,
+	CPUHP_AP_PERF_X86_AMD_IBS_STARTING = 113,
+	CPUHP_AP_PERF_X86_CQM_STARTING = 114,
+	CPUHP_AP_PERF_X86_CSTATE_STARTING = 115,
+	CPUHP_AP_PERF_XTENSA_STARTING = 116,
+	CPUHP_AP_MIPS_OP_LOONGSON3_STARTING = 117,
+	CPUHP_AP_ARM_VFP_STARTING = 118,
+	CPUHP_AP_ARM64_DEBUG_MONITORS_STARTING = 119,
+	CPUHP_AP_PERF_ARM_HW_BREAKPOINT_STARTING = 120,
+	CPUHP_AP_PERF_ARM_ACPI_STARTING = 121,
+	CPUHP_AP_PERF_ARM_STARTING = 122,
+	CPUHP_AP_PERF_RISCV_STARTING = 123,
+	CPUHP_AP_ARM_L2X0_STARTING = 124,
+	CPUHP_AP_EXYNOS4_MCT_TIMER_STARTING = 125,
+	CPUHP_AP_ARM_ARCH_TIMER_STARTING = 126,
+	CPUHP_AP_ARM_GLOBAL_TIMER_STARTING = 127,
+	CPUHP_AP_JCORE_TIMER_STARTING = 128,
+	CPUHP_AP_ARM_TWD_STARTING = 129,
+	CPUHP_AP_QCOM_TIMER_STARTING = 130,
+	CPUHP_AP_TEGRA_TIMER_STARTING = 131,
+	CPUHP_AP_ARMADA_TIMER_STARTING = 132,
+	CPUHP_AP_MARCO_TIMER_STARTING = 133,
+	CPUHP_AP_MIPS_GIC_TIMER_STARTING = 134,
+	CPUHP_AP_ARC_TIMER_STARTING = 135,
+	CPUHP_AP_RISCV_TIMER_STARTING = 136,
+	CPUHP_AP_CLINT_TIMER_STARTING = 137,
+	CPUHP_AP_CSKY_TIMER_STARTING = 138,
+	CPUHP_AP_TI_GP_TIMER_STARTING = 139,
+	CPUHP_AP_HYPERV_TIMER_STARTING = 140,
+	CPUHP_AP_DUMMY_TIMER_STARTING = 141,
+	CPUHP_AP_ARM_XEN_STARTING = 142,
+	CPUHP_AP_ARM_XEN_RUNSTATE_STARTING = 143,
+	CPUHP_AP_ARM_CORESIGHT_STARTING = 144,
+	CPUHP_AP_ARM_CORESIGHT_CTI_STARTING = 145,
+	CPUHP_AP_ARM64_ISNDEP_STARTING = 146,
+	CPUHP_AP_SMPCFD_DYING = 147,
+	CPUHP_AP_HRTIMERS_DYING = 148,
+	CPUHP_AP_X86_TBOOT_DYING = 149,
+	CPUHP_AP_ARM_CACHE_B15_RAC_DYING = 150,
+	CPUHP_AP_ONLINE = 151,
+	CPUHP_TEARDOWN_CPU = 152,
+	CPUHP_AP_ONLINE_IDLE = 153,
+	CPUHP_AP_HYPERV_ONLINE = 154,
+	CPUHP_AP_KVM_ONLINE = 155,
+	CPUHP_AP_SCHED_WAIT_EMPTY = 156,
+	CPUHP_AP_SMPBOOT_THREADS = 157,
+	CPUHP_AP_X86_VDSO_VMA_ONLINE = 158,
+	CPUHP_AP_IRQ_AFFINITY_ONLINE = 159,
+	CPUHP_AP_BLK_MQ_ONLINE = 160,
+	CPUHP_AP_ARM_MVEBU_SYNC_CLOCKS = 161,
+	CPUHP_AP_X86_INTEL_EPB_ONLINE = 162,
+	CPUHP_AP_PERF_ONLINE = 163,
+	CPUHP_AP_PERF_X86_ONLINE = 164,
+	CPUHP_AP_PERF_X86_UNCORE_ONLINE = 165,
+	CPUHP_AP_PERF_X86_AMD_UNCORE_ONLINE = 166,
+	CPUHP_AP_PERF_X86_AMD_POWER_ONLINE = 167,
+	CPUHP_AP_PERF_X86_RAPL_ONLINE = 168,
+	CPUHP_AP_PERF_X86_CQM_ONLINE = 169,
+	CPUHP_AP_PERF_X86_CSTATE_ONLINE = 170,
+	CPUHP_AP_PERF_X86_IDXD_ONLINE = 171,
+	CPUHP_AP_PERF_S390_CF_ONLINE = 172,
+	CPUHP_AP_PERF_S390_SF_ONLINE = 173,
+	CPUHP_AP_PERF_ARM_CCI_ONLINE = 174,
+	CPUHP_AP_PERF_ARM_CCN_ONLINE = 175,
+	CPUHP_AP_PERF_ARM_HISI_CPA_ONLINE = 176,
+	CPUHP_AP_PERF_ARM_HISI_DDRC_ONLINE = 177,
+	CPUHP_AP_PERF_ARM_HISI_HHA_ONLINE = 178,
+	CPUHP_AP_PERF_ARM_HISI_L3_ONLINE = 179,
+	CPUHP_AP_PERF_ARM_HISI_PA_ONLINE = 180,
+	CPUHP_AP_PERF_ARM_HISI_SLLC_ONLINE = 181,
+	CPUHP_AP_PERF_ARM_HISI_PCIE_PMU_ONLINE = 182,
+	CPUHP_AP_PERF_ARM_HNS3_PMU_ONLINE = 183,
+	CPUHP_AP_PERF_ARM_L2X0_ONLINE = 184,
+	CPUHP_AP_PERF_ARM_QCOM_L2_ONLINE = 185,
+	CPUHP_AP_PERF_ARM_QCOM_L3_ONLINE = 186,
+	CPUHP_AP_PERF_ARM_APM_XGENE_ONLINE = 187,
+	CPUHP_AP_PERF_ARM_CAVIUM_TX2_UNCORE_ONLINE = 188,
+	CPUHP_AP_PERF_ARM_MARVELL_CN10K_DDR_ONLINE = 189,
+	CPUHP_AP_PERF_POWERPC_NEST_IMC_ONLINE = 190,
+	CPUHP_AP_PERF_POWERPC_CORE_IMC_ONLINE = 191,
+	CPUHP_AP_PERF_POWERPC_THREAD_IMC_ONLINE = 192,
+	CPUHP_AP_PERF_POWERPC_TRACE_IMC_ONLINE = 193,
+	CPUHP_AP_PERF_POWERPC_HV_24x7_ONLINE = 194,
+	CPUHP_AP_PERF_POWERPC_HV_GPCI_ONLINE = 195,
+	CPUHP_AP_PERF_CSKY_ONLINE = 196,
+	CPUHP_AP_WATCHDOG_ONLINE = 197,
+	CPUHP_AP_WORKQUEUE_ONLINE = 198,
+	CPUHP_AP_RANDOM_ONLINE = 199,
+	CPUHP_AP_RCUTREE_ONLINE = 200,
+	CPUHP_AP_BASE_CACHEINFO_ONLINE = 201,
+	CPUHP_AP_ONLINE_DYN = 202,
+	CPUHP_AP_ONLINE_DYN_END = 232,
+	CPUHP_AP_MM_DEMOTION_ONLINE = 233,
+	CPUHP_AP_X86_HPET_ONLINE = 234,
+	CPUHP_AP_X86_KVM_CLK_ONLINE = 235,
+	CPUHP_AP_ACTIVE = 236,
+	CPUHP_ONLINE = 237,
+};
+
+enum {
+	false = 0,
+	true = 1,
+};
+
+enum {
+	EVENT_FILE_FL_ENABLED = 1,
+	EVENT_FILE_FL_RECORDED_CMD = 2,
+	EVENT_FILE_FL_RECORDED_TGID = 4,
+	EVENT_FILE_FL_FILTERED = 8,
+	EVENT_FILE_FL_NO_SET_FILTER = 16,
+	EVENT_FILE_FL_SOFT_MODE = 32,
+	EVENT_FILE_FL_SOFT_DISABLED = 64,
+	EVENT_FILE_FL_TRIGGER_MODE = 128,
+	EVENT_FILE_FL_TRIGGER_COND = 256,
+	EVENT_FILE_FL_PID_FILTER = 512,
+	EVENT_FILE_FL_WAS_ENABLED = 1024,
+	EVENT_FILE_FL_FREED = 2048,
+};
+
+enum node_states {
+	N_POSSIBLE = 0,
+	N_ONLINE = 1,
+	N_NORMAL_MEMORY = 2,
+	N_HIGH_MEMORY = 2,
+	N_MEMORY = 3,
+	N_CPU = 4,
+	N_GENERIC_INITIATOR = 5,
+	NR_NODE_STATES = 6,
+};
+
+enum refcount_saturation_type {
+	REFCOUNT_ADD_NOT_ZERO_OVF = 0,
+	REFCOUNT_ADD_OVF = 1,
+	REFCOUNT_ADD_UAF = 2,
+	REFCOUNT_SUB_UAF = 3,
+	REFCOUNT_DEC_LEAK = 4,
+};
+
+enum kmalloc_cache_type {
+	KMALLOC_NORMAL = 0,
+	KMALLOC_DMA = 0,
+	KMALLOC_RANDOM_START = 0,
+	KMALLOC_RANDOM_END = 0,
+	KMALLOC_RECLAIM = 1,
+	KMALLOC_CGROUP = 2,
+	NR_KMALLOC_TYPES = 3,
+};
+
+struct trace_event_raw_initcall_level {
+	struct trace_entry ent;
+	u32 __data_loc_level;
+	char __data[0];
+};
+
+struct trace_event_raw_initcall_start {
+	struct trace_entry ent;
+	initcall_t func;
+	char __data[0];
+};
+
+struct trace_event_raw_initcall_finish {
+	struct trace_entry ent;
+	initcall_t func;
+	int ret;
+	char __data[0];
+};
+
+struct blacklist_entry {
+	struct list_head next;
+	char *buf;
+};
+
+struct eventfs_inode;
+
+struct trace_subsystem_dir;
+
+struct trace_event_file {
+	struct list_head list;
+	struct trace_event_call *event_call;
+	struct event_filter __attribute__((btf_type_tag("rcu"))) *filter;
+	struct eventfs_inode *ei;
+	struct trace_array *tr;
+	struct trace_subsystem_dir *system;
+	struct list_head triggers;
+	unsigned long flags;
+	atomic_t ref;
+	atomic_t sm_ref;
+	atomic_t tm_ref;
+};
+
+struct prog_entry;
+
+struct event_filter {
+	struct prog_entry __attribute__((btf_type_tag("rcu"))) *prog;
+	char *filter_string;
+};
+
+struct trace_event_data_offsets_initcall_level {
+	u32 level;
+};
+
+struct trace_buffer;
+
+struct ring_buffer_event;
+
+struct trace_event_buffer {
+	struct trace_buffer *buffer;
+	struct ring_buffer_event *event;
+	struct trace_event_file *trace_file;
+	void *entry;
+	unsigned int trace_ctx;
+	struct pt_regs *regs;
+};
+
+struct ring_buffer_event {
+	u32 type_len: 5;
+	u32 time_delta: 27;
+	u32 array[0];
+};
+
+typedef short __s16;
+
+typedef __s16 s16;
+
+typedef u16 uint16_t;
+
+struct xbc_node {
+	uint16_t next;
+	uint16_t child;
+	uint16_t parent;
+	uint16_t data;
+};
+
+struct trace_event_data_offsets_initcall_start {};
+
+struct trace_event_data_offsets_initcall_finish {};
+
+typedef __u32 Elf32_Word;
+
+struct elf32_note {
+	Elf32_Word n_namesz;
+	Elf32_Word n_descsz;
+	Elf32_Word n_type;
+};
+
+struct posix_acl_entry {
+	short e_tag;
+	unsigned short e_perm;
+	union {
+		kuid_t e_uid;
+		kgid_t e_gid;
+	};
+};
+
+struct posix_acl {
+	refcount_t a_refcount;
+	struct callback_head a_rcu;
+	unsigned int a_count;
+	struct posix_acl_entry a_entries[0];
+};
+
+typedef __u64 __addrpair;
+
+typedef __u32 __portpair;
+
+typedef struct {
+	struct net *net;
+} possible_net_t;
+
+struct proto;
+
+struct sock_common {
+	union {
+		__addrpair skc_addrpair;
+		struct {
+			__be32 skc_daddr;
+			__be32 skc_rcv_saddr;
+		};
+	};
+	union {
+		unsigned int skc_hash;
+		__u16 skc_u16hashes[2];
+	};
+	union {
+		__portpair skc_portpair;
+		struct {
+			__be16 skc_dport;
+			__u16 skc_num;
+		};
+	};
+	unsigned short skc_family;
+	volatile unsigned char skc_state;
+	unsigned char skc_reuse: 4;
+	unsigned char skc_reuseport: 1;
+	unsigned char skc_ipv6only: 1;
+	unsigned char skc_net_refcnt: 1;
+	int skc_bound_dev_if;
+	union {
+		struct hlist_node skc_bind_node;
+		struct hlist_node skc_portaddr_node;
+	};
+	struct proto *skc_prot;
+	possible_net_t skc_net;
+	struct in6_addr skc_v6_daddr;
+	struct in6_addr skc_v6_rcv_saddr;
+	atomic64_t skc_cookie;
+	union {
+		unsigned long skc_flags;
+		struct sock *skc_listener;
+		struct inet_timewait_death_row *skc_tw_dr;
+	};
+	int skc_dontcopy_begin[0];
+	union {
+		struct hlist_node skc_node;
+		struct hlist_nulls_node skc_nulls_node;
+	};
+	unsigned short skc_tx_queue_mapping;
+	unsigned short skc_rx_queue_mapping;
+	union {
+		int skc_incoming_cpu;
+		u32 skc_rcv_wnd;
+		u32 skc_tw_rcv_nxt;
+	};
+	refcount_t skc_refcnt;
+	int skc_dontcopy_end[0];
+	union {
+		u32 skc_rxhash;
+		u32 skc_window_clamp;
+		u32 skc_tw_snd_nxt;
+	};
+};
+
+typedef struct {
+	spinlock_t slock;
+	int owned;
+	wait_queue_head_t wq;
+} socket_lock_t;
+
+typedef u64 netdev_features_t;
+
+struct sock_cgroup_data {
+	struct cgroup *cgroup;
+	u16 prioidx;
+};
+
+typedef struct {} netns_tracker;
+
+struct sk_filter;
+
+struct socket_wq;
+
+struct xfrm_policy;
+
+struct socket;
+
+struct sock_reuseport;
+
+struct sock {
+	struct sock_common __sk_common;
+	struct dst_entry __attribute__((btf_type_tag("rcu"))) *sk_rx_dst;
+	int sk_rx_dst_ifindex;
+	u32 sk_rx_dst_cookie;
+	socket_lock_t sk_lock;
+	atomic_t sk_drops;
+	int sk_rcvlowat;
+	struct sk_buff_head sk_error_queue;
+	struct sk_buff_head sk_receive_queue;
+	struct {
+		atomic_t rmem_alloc;
+		int len;
+		struct sk_buff *head;
+		struct sk_buff *tail;
+	} sk_backlog;
+	int sk_forward_alloc;
+	u32 sk_reserved_mem;
+	unsigned int sk_ll_usec;
+	unsigned int sk_napi_id;
+	int sk_rcvbuf;
+	int sk_disconnects;
+	struct sk_filter __attribute__((btf_type_tag("rcu"))) *sk_filter;
+	union {
+		struct socket_wq __attribute__((btf_type_tag("rcu"))) *sk_wq;
+		struct socket_wq *sk_wq_raw;
+	};
+	struct xfrm_policy __attribute__((btf_type_tag("rcu"))) *sk_policy[2];
+	struct dst_entry __attribute__((btf_type_tag("rcu"))) *sk_dst_cache;
+	atomic_t sk_omem_alloc;
+	int sk_sndbuf;
+	int sk_wmem_queued;
+	refcount_t sk_wmem_alloc;
+	unsigned long sk_tsq_flags;
+	union {
+		struct sk_buff *sk_send_head;
+		struct rb_root tcp_rtx_queue;
+	};
+	struct sk_buff_head sk_write_queue;
+	__s32 sk_peek_off;
+	int sk_write_pending;
+	__u32 sk_dst_pending_confirm;
+	u32 sk_pacing_status;
+	long sk_sndtimeo;
+	struct timer_list sk_timer;
+	__u32 sk_priority;
+	__u32 sk_mark;
+	unsigned long sk_pacing_rate;
+	unsigned long sk_max_pacing_rate;
+	struct page_frag sk_frag;
+	netdev_features_t sk_route_caps;
+	int sk_gso_type;
+	unsigned int sk_gso_max_size;
+	gfp_t sk_allocation;
+	__u32 sk_txhash;
+	u8 sk_gso_disabled: 1;
+	u8 sk_kern_sock: 1;
+	u8 sk_no_check_tx: 1;
+	u8 sk_no_check_rx: 1;
+	u8 sk_userlocks: 4;
+	u8 sk_pacing_shift;
+	u16 sk_type;
+	u16 sk_protocol;
+	u16 sk_gso_max_segs;
+	unsigned long sk_lingertime;
+	struct proto *sk_prot_creator;
+	rwlock_t sk_callback_lock;
+	int sk_err;
+	int sk_err_soft;
+	u32 sk_ack_backlog;
+	u32 sk_max_ack_backlog;
+	kuid_t sk_uid;
+	u8 sk_txrehash;
+	u8 sk_prefer_busy_poll;
+	u16 sk_busy_poll_budget;
+	spinlock_t sk_peer_lock;
+	int sk_bind_phc;
+	struct pid *sk_peer_pid;
+	const struct cred *sk_peer_cred;
+	long sk_rcvtimeo;
+	ktime_t sk_stamp;
+	atomic_t sk_tskey;
+	atomic_t sk_zckey;
+	u32 sk_tsflags;
+	u8 sk_shutdown;
+	u8 sk_clockid;
+	u8 sk_txtime_deadline_mode: 1;
+	u8 sk_txtime_report_errors: 1;
+	u8 sk_txtime_unused: 6;
+	bool sk_use_task_frag;
+	struct socket *sk_socket;
+	void *sk_user_data;
+	void *sk_security;
+	struct sock_cgroup_data sk_cgrp_data;
+	struct mem_cgroup *sk_memcg;
+	void (*sk_state_change)(struct sock *);
+	void (*sk_data_ready)(struct sock *);
+	void (*sk_write_space)(struct sock *);
+	void (*sk_error_report)(struct sock *);
+	int (*sk_backlog_rcv)(struct sock *, struct sk_buff *);
+	void (*sk_destruct)(struct sock *);
+	struct sock_reuseport __attribute__((btf_type_tag("rcu"))) *sk_reuseport_cb;
+	struct bpf_local_storage __attribute__((btf_type_tag("rcu"))) *sk_bpf_storage;
+	struct callback_head sk_rcu;
+	netns_tracker ns_tracker;
+	struct hlist_node sk_bind2_node;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+	u64 android_kabi_reserved5;
+	u64 android_kabi_reserved6;
+	u64 android_kabi_reserved7;
+	u64 android_kabi_reserved8;
+	u64 android_oem_data1;
+};
+
+struct smc_hashinfo;
+
+typedef struct {
+	union {
+		void *kernel;
+		void __attribute__((btf_type_tag("user"))) *user;
+	};
+	bool is_kernel: 1;
+} sockptr_t;
+
+typedef unsigned int slab_flags_t;
+
+struct sockaddr;
+
+struct msghdr;
+
+struct sk_psock;
+
+struct request_sock_ops;
+
+struct timewait_sock_ops;
+
+struct raw_hashinfo;
+
+struct proto {
+	void (*close)(struct sock *, long);
+	int (*pre_connect)(struct sock *, struct sockaddr *, int);
+	int (*connect)(struct sock *, struct sockaddr *, int);
+	int (*disconnect)(struct sock *, int);
+	struct sock * (*accept)(struct sock *, int, int *, bool);
+	int (*ioctl)(struct sock *, int, int *);
+	int (*init)(struct sock *);
+	void (*destroy)(struct sock *);
+	void (*shutdown)(struct sock *, int);
+	int (*setsockopt)(struct sock *, int, int, sockptr_t, unsigned int);
+	int (*getsockopt)(struct sock *, int, int, char __attribute__((btf_type_tag("user"))) *, int __attribute__((btf_type_tag("user"))) *);
+	void (*keepalive)(struct sock *, int);
+	int (*compat_ioctl)(struct sock *, unsigned int, unsigned long);
+	int (*sendmsg)(struct sock *, struct msghdr *, size_t);
+	int (*recvmsg)(struct sock *, struct msghdr *, size_t, int, int *);
+	void (*splice_eof)(struct socket *);
+	int (*bind)(struct sock *, struct sockaddr *, int);
+	int (*bind_add)(struct sock *, struct sockaddr *, int);
+	int (*backlog_rcv)(struct sock *, struct sk_buff *);
+	bool (*bpf_bypass_getsockopt)(int, int);
+	void (*release_cb)(struct sock *);
+	int (*hash)(struct sock *);
+	void (*unhash)(struct sock *);
+	void (*rehash)(struct sock *);
+	int (*get_port)(struct sock *, unsigned short);
+	void (*put_port)(struct sock *);
+	int (*psock_update_sk_prot)(struct sock *, struct sk_psock *, bool);
+	unsigned int inuse_idx;
+	bool (*stream_memory_free)(const struct sock *, int);
+	bool (*sock_is_readable)(struct sock *);
+	void (*enter_memory_pressure)(struct sock *);
+	void (*leave_memory_pressure)(struct sock *);
+	atomic_long_t *memory_allocated;
+	int __attribute__((btf_type_tag("percpu"))) *per_cpu_fw_alloc;
+	struct percpu_counter *sockets_allocated;
+	unsigned long *memory_pressure;
+	long *sysctl_mem;
+	int *sysctl_wmem;
+	int *sysctl_rmem;
+	u32 sysctl_wmem_offset;
+	u32 sysctl_rmem_offset;
+	int max_header;
+	bool no_autobind;
+	struct kmem_cache *slab;
+	unsigned int obj_size;
+	unsigned int ipv6_pinfo_offset;
+	slab_flags_t slab_flags;
+	unsigned int useroffset;
+	unsigned int usersize;
+	unsigned int __attribute__((btf_type_tag("percpu"))) *orphan_count;
+	struct request_sock_ops *rsk_prot;
+	struct timewait_sock_ops *twsk_prot;
+	union {
+		struct inet_hashinfo *hashinfo;
+		struct udp_table *udp_table;
+		struct raw_hashinfo *raw_hash;
+		struct smc_hashinfo *smc_hash;
+	} h;
+	struct module *owner;
+	char name[32];
+	struct list_head node;
+	int (*diag_destroy)(struct sock *, int);
+};
+
+typedef unsigned short __kernel_sa_family_t;
+
+typedef __kernel_sa_family_t sa_family_t;
+
+struct sockaddr {
+	sa_family_t sa_family;
+	union {
+		char sa_data_min[14];
+		struct {
+			struct {} __empty_sa_data;
+			char sa_data[0];
+		};
+	};
+};
+
+struct ubuf_info;
+
+struct msghdr {
+	void *msg_name;
+	int msg_namelen;
+	int msg_inq;
+	struct iov_iter msg_iter;
+	union {
+		void *msg_control;
+		void __attribute__((btf_type_tag("user"))) *msg_control_user;
+	};
+	bool msg_control_is_user: 1;
+	bool msg_get_inq: 1;
+	unsigned int msg_flags;
+	__kernel_size_t msg_controllen;
+	struct kiocb *msg_iocb;
+	struct ubuf_info *msg_ubuf;
+	int (*sg_from_iter)(struct sock *, struct sk_buff *, struct iov_iter *, size_t);
+};
+
+struct ubuf_info {
+	void (*callback)(struct sk_buff *, struct ubuf_info *, bool);
+	refcount_t refcnt;
+	u8 flags;
+};
+
+typedef u32 xdp_features_t;
+
+struct net_device_stats {
+	union {
+		unsigned long rx_packets;
+		atomic_long_t __rx_packets;
+	};
+	union {
+		unsigned long tx_packets;
+		atomic_long_t __tx_packets;
+	};
+	union {
+		unsigned long rx_bytes;
+		atomic_long_t __rx_bytes;
+	};
+	union {
+		unsigned long tx_bytes;
+		atomic_long_t __tx_bytes;
+	};
+	union {
+		unsigned long rx_errors;
+		atomic_long_t __rx_errors;
+	};
+	union {
+		unsigned long tx_errors;
+		atomic_long_t __tx_errors;
+	};
+	union {
+		unsigned long rx_dropped;
+		atomic_long_t __rx_dropped;
+	};
+	union {
+		unsigned long tx_dropped;
+		atomic_long_t __tx_dropped;
+	};
+	union {
+		unsigned long multicast;
+		atomic_long_t __multicast;
+	};
+	union {
+		unsigned long collisions;
+		atomic_long_t __collisions;
+	};
+	union {
+		unsigned long rx_length_errors;
+		atomic_long_t __rx_length_errors;
+	};
+	union {
+		unsigned long rx_over_errors;
+		atomic_long_t __rx_over_errors;
+	};
+	union {
+		unsigned long rx_crc_errors;
+		atomic_long_t __rx_crc_errors;
+	};
+	union {
+		unsigned long rx_frame_errors;
+		atomic_long_t __rx_frame_errors;
+	};
+	union {
+		unsigned long rx_fifo_errors;
+		atomic_long_t __rx_fifo_errors;
+	};
+	union {
+		unsigned long rx_missed_errors;
+		atomic_long_t __rx_missed_errors;
+	};
+	union {
+		unsigned long tx_aborted_errors;
+		atomic_long_t __tx_aborted_errors;
+	};
+	union {
+		unsigned long tx_carrier_errors;
+		atomic_long_t __tx_carrier_errors;
+	};
+	union {
+		unsigned long tx_fifo_errors;
+		atomic_long_t __tx_fifo_errors;
+	};
+	union {
+		unsigned long tx_heartbeat_errors;
+		atomic_long_t __tx_heartbeat_errors;
+	};
+	union {
+		unsigned long tx_window_errors;
+		atomic_long_t __tx_window_errors;
+	};
+	union {
+		unsigned long rx_compressed;
+		atomic_long_t __rx_compressed;
+	};
+	union {
+		unsigned long tx_compressed;
+		atomic_long_t __tx_compressed;
+	};
+};
+
+struct netdev_hw_addr_list {
+	struct list_head list;
+	int count;
+	struct rb_root tree;
+};
+
+struct tipc_bearer;
+
+enum rx_handler_result {
+	RX_HANDLER_CONSUMED = 0,
+	RX_HANDLER_ANOTHER = 1,
+	RX_HANDLER_EXACT = 2,
+	RX_HANDLER_PASS = 3,
+};
+
+typedef enum rx_handler_result rx_handler_result_t;
+
+typedef rx_handler_result_t rx_handler_func_t(struct sk_buff **);
+
+enum netdev_ml_priv_type {
+	ML_PRIV_NONE = 0,
+	ML_PRIV_CAN = 1,
+};
+
+enum netdev_stat_type {
+	NETDEV_PCPU_STAT_NONE = 0,
+	NETDEV_PCPU_STAT_LSTATS = 1,
+	NETDEV_PCPU_STAT_TSTATS = 2,
+	NETDEV_PCPU_STAT_DSTATS = 3,
+};
+
+struct netdev_tc_txq {
+	u16 count;
+	u16 offset;
+};
+
+struct sfp_bus;
+
+struct bpf_xdp_link;
+
+struct bpf_xdp_entity {
+	struct bpf_prog *prog;
+	struct bpf_xdp_link *link;
+};
+
+struct netdev_name_node;
+
+struct dev_ifalias;
+
+struct net_device_ops;
+
+struct xdp_metadata_ops;
+
+struct net_device_core_stats;
+
+struct iw_handler_def;
+
+struct iw_public_data;
+
+struct ethtool_ops;
+
+struct ndisc_ops;
+
+struct header_ops;
+
+struct in_device;
+
+struct inet6_dev;
+
+struct vlan_info;
+
+struct wireless_dev;
+
+struct wpan_dev;
+
+struct netdev_rx_queue;
+
+struct bpf_mprog_entry;
+
+struct netdev_queue;
+
+struct cpu_rmap;
+
+struct Qdisc;
+
+struct xdp_dev_bulk_queue;
+
+struct xps_dev_maps;
+
+struct pcpu_lstats;
+
+struct pcpu_sw_netstats;
+
+struct pcpu_dstats;
+
+struct rtnl_link_ops;
+
+struct netprio_map;
+
+struct phy_device;
+
+struct macsec_ops;
+
+struct udp_tunnel_nic_info;
+
+struct udp_tunnel_nic;
+
+struct rtnl_hw_stats64;
+
+struct devlink_port;
+
+struct net_device {
+	char name[16];
+	struct netdev_name_node *name_node;
+	struct dev_ifalias __attribute__((btf_type_tag("rcu"))) *ifalias;
+	unsigned long mem_end;
+	unsigned long mem_start;
+	unsigned long base_addr;
+	unsigned long state;
+	struct list_head dev_list;
+	struct list_head napi_list;
+	struct list_head unreg_list;
+	struct list_head close_list;
+	struct list_head ptype_all;
+	struct list_head ptype_specific;
+	struct {
+		struct list_head upper;
+		struct list_head lower;
+	} adj_list;
+	unsigned int flags;
+	xdp_features_t xdp_features;
+	unsigned long long priv_flags;
+	const struct net_device_ops *netdev_ops;
+	const struct xdp_metadata_ops *xdp_metadata_ops;
+	int ifindex;
+	unsigned short gflags;
+	unsigned short hard_header_len;
+	unsigned int mtu;
+	unsigned short needed_headroom;
+	unsigned short needed_tailroom;
+	netdev_features_t features;
+	netdev_features_t hw_features;
+	netdev_features_t wanted_features;
+	netdev_features_t vlan_features;
+	netdev_features_t hw_enc_features;
+	netdev_features_t mpls_features;
+	netdev_features_t gso_partial_features;
+	unsigned int min_mtu;
+	unsigned int max_mtu;
+	unsigned short type;
+	unsigned char min_header_len;
+	unsigned char name_assign_type;
+	int group;
+	struct net_device_stats stats;
+	struct net_device_core_stats __attribute__((btf_type_tag("percpu"))) *core_stats;
+	atomic_t carrier_up_count;
+	atomic_t carrier_down_count;
+	const struct iw_handler_def *wireless_handlers;
+	struct iw_public_data *wireless_data;
+	const struct ethtool_ops *ethtool_ops;
+	const struct ndisc_ops *ndisc_ops;
+	const struct header_ops *header_ops;
+	unsigned char operstate;
+	unsigned char link_mode;
+	unsigned char if_port;
+	unsigned char dma;
+	unsigned char perm_addr[32];
+	unsigned char addr_assign_type;
+	unsigned char addr_len;
+	unsigned char upper_level;
+	unsigned char lower_level;
+	unsigned short neigh_priv_len;
+	unsigned short dev_id;
+	unsigned short dev_port;
+	unsigned short padded;
+	spinlock_t addr_list_lock;
+	int irq;
+	struct netdev_hw_addr_list uc;
+	struct netdev_hw_addr_list mc;
+	struct netdev_hw_addr_list dev_addrs;
+	struct kset *queues_kset;
+	unsigned int promiscuity;
+	unsigned int allmulti;
+	bool uc_promisc;
+	struct in_device __attribute__((btf_type_tag("rcu"))) *ip_ptr;
+	struct inet6_dev __attribute__((btf_type_tag("rcu"))) *ip6_ptr;
+	struct vlan_info __attribute__((btf_type_tag("rcu"))) *vlan_info;
+	struct tipc_bearer __attribute__((btf_type_tag("rcu"))) *tipc_ptr;
+	struct wireless_dev *ieee80211_ptr;
+	struct wpan_dev *ieee802154_ptr;
+	const unsigned char *dev_addr;
+	struct netdev_rx_queue *_rx;
+	unsigned int num_rx_queues;
+	unsigned int real_num_rx_queues;
+	struct bpf_prog __attribute__((btf_type_tag("rcu"))) *xdp_prog;
+	unsigned long gro_flush_timeout;
+	int napi_defer_hard_irqs;
+	unsigned int gro_max_size;
+	unsigned int gro_ipv4_max_size;
+	unsigned int xdp_zc_max_segs;
+	rx_handler_func_t __attribute__((btf_type_tag("rcu"))) *rx_handler;
+	void __attribute__((btf_type_tag("rcu"))) *rx_handler_data;
+	struct bpf_mprog_entry __attribute__((btf_type_tag("rcu"))) *tcx_ingress;
+	struct netdev_queue __attribute__((btf_type_tag("rcu"))) *ingress_queue;
+	struct nf_hook_entries __attribute__((btf_type_tag("rcu"))) *nf_hooks_ingress;
+	unsigned char broadcast[32];
+	struct cpu_rmap *rx_cpu_rmap;
+	struct hlist_node index_hlist;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct netdev_queue *_tx;
+	unsigned int num_tx_queues;
+	unsigned int real_num_tx_queues;
+	struct Qdisc __attribute__((btf_type_tag("rcu"))) *qdisc;
+	unsigned int tx_queue_len;
+	spinlock_t tx_global_lock;
+	struct xdp_dev_bulk_queue __attribute__((btf_type_tag("percpu"))) *xdp_bulkq;
+	struct xps_dev_maps __attribute__((btf_type_tag("rcu"))) *xps_maps[2];
+	struct bpf_mprog_entry __attribute__((btf_type_tag("rcu"))) *tcx_egress;
+	struct nf_hook_entries __attribute__((btf_type_tag("rcu"))) *nf_hooks_egress;
+	struct hlist_head qdisc_hash[16];
+	struct timer_list watchdog_timer;
+	int watchdog_timeo;
+	u32 proto_down_reason;
+	struct list_head todo_list;
+	int __attribute__((btf_type_tag("percpu"))) *pcpu_refcnt;
+	struct ref_tracker_dir refcnt_tracker;
+	struct list_head link_watch_list;
+	enum {
+		NETREG_UNINITIALIZED = 0,
+		NETREG_REGISTERED = 1,
+		NETREG_UNREGISTERING = 2,
+		NETREG_UNREGISTERED = 3,
+		NETREG_RELEASED = 4,
+		NETREG_DUMMY = 5,
+	} reg_state: 8;
+	bool dismantle;
+	enum {
+		RTNL_LINK_INITIALIZED = 0,
+		RTNL_LINK_INITIALIZING = 1,
+	} rtnl_link_state: 16;
+	bool needs_free_netdev;
+	void (*priv_destructor)(struct net_device *);
+	possible_net_t nd_net;
+	void *ml_priv;
+	enum netdev_ml_priv_type ml_priv_type;
+	enum netdev_stat_type pcpu_stat_type: 8;
+	union {
+		struct pcpu_lstats __attribute__((btf_type_tag("percpu"))) *lstats;
+		struct pcpu_sw_netstats __attribute__((btf_type_tag("percpu"))) *tstats;
+		struct pcpu_dstats __attribute__((btf_type_tag("percpu"))) *dstats;
+	};
+	struct device dev;
+	const struct attribute_group *sysfs_groups[4];
+	const struct attribute_group *sysfs_rx_queue_group;
+	const struct rtnl_link_ops *rtnl_link_ops;
+	unsigned int gso_max_size;
+	unsigned int tso_max_size;
+	u16 gso_max_segs;
+	u16 tso_max_segs;
+	unsigned int gso_ipv4_max_size;
+	s16 num_tc;
+	struct netdev_tc_txq tc_to_txq[16];
+	u8 prio_tc_map[16];
+	struct netprio_map __attribute__((btf_type_tag("rcu"))) *priomap;
+	struct phy_device *phydev;
+	struct sfp_bus *sfp_bus;
+	struct lock_class_key *qdisc_tx_busylock;
+	bool proto_down;
+	unsigned int wol_enabled: 1;
+	unsigned int threaded: 1;
+	struct list_head net_notifier_list;
+	const struct macsec_ops *macsec_ops;
+	const struct udp_tunnel_nic_info *udp_tunnel_nic_info;
+	struct udp_tunnel_nic *udp_tunnel_nic;
+	struct bpf_xdp_entity xdp_state[3];
+	u8 dev_addr_shadow[32];
+	netdevice_tracker linkwatch_dev_tracker;
+	netdevice_tracker watchdog_dev_tracker;
+	netdevice_tracker dev_registered_tracker;
+	struct rtnl_hw_stats64 *offload_xstats_l3;
+	struct devlink_port *devlink_port;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+	u64 android_kabi_reserved5;
+	u64 android_kabi_reserved6;
+	u64 android_kabi_reserved7;
+	u64 android_kabi_reserved8;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct dev_ifalias {
+	struct callback_head rcuhead;
+	char ifalias[0];
+};
+
+enum netdev_tx {
+	__NETDEV_TX_MIN = -2147483648,
+	NETDEV_TX_OK = 0,
+	NETDEV_TX_BUSY = 16,
+};
+
+typedef enum netdev_tx netdev_tx_t;
+
+enum tc_setup_type {
+	TC_QUERY_CAPS = 0,
+	TC_SETUP_QDISC_MQPRIO = 1,
+	TC_SETUP_CLSU32 = 2,
+	TC_SETUP_CLSFLOWER = 3,
+	TC_SETUP_CLSMATCHALL = 4,
+	TC_SETUP_CLSBPF = 5,
+	TC_SETUP_BLOCK = 6,
+	TC_SETUP_QDISC_CBS = 7,
+	TC_SETUP_QDISC_RED = 8,
+	TC_SETUP_QDISC_PRIO = 9,
+	TC_SETUP_QDISC_MQ = 10,
+	TC_SETUP_QDISC_ETF = 11,
+	TC_SETUP_ROOT_QDISC = 12,
+	TC_SETUP_QDISC_GRED = 13,
+	TC_SETUP_QDISC_TAPRIO = 14,
+	TC_SETUP_FT = 15,
+	TC_SETUP_QDISC_ETS = 16,
+	TC_SETUP_QDISC_TBF = 17,
+	TC_SETUP_QDISC_FIFO = 18,
+	TC_SETUP_QDISC_HTB = 19,
+	TC_SETUP_ACT = 20,
+};
+
+struct ifreq;
+
+struct if_settings;
+
+struct ifmap;
+
+struct neigh_parms;
+
+struct rtnl_link_stats64;
+
+struct ifla_vf_info;
+
+struct ifla_vf_stats;
+
+struct nlattr;
+
+struct ifla_vf_guid;
+
+struct netlink_ext_ack;
+
+struct ndmsg;
+
+struct netlink_callback;
+
+struct nlmsghdr;
+
+struct netdev_phys_item_id;
+
+struct netdev_bpf;
+
+struct xdp_frame;
+
+struct xdp_buff;
+
+struct ip_tunnel_parm;
+
+struct net_device_path_ctx;
+
+struct net_device_path;
+
+struct skb_shared_hwtstamps;
+
+struct kernel_hwtstamp_config;
+
+struct net_device_ops {
+	int (*ndo_init)(struct net_device *);
+	void (*ndo_uninit)(struct net_device *);
+	int (*ndo_open)(struct net_device *);
+	int (*ndo_stop)(struct net_device *);
+	netdev_tx_t (*ndo_start_xmit)(struct sk_buff *, struct net_device *);
+	netdev_features_t (*ndo_features_check)(struct sk_buff *, struct net_device *, netdev_features_t);
+	u16 (*ndo_select_queue)(struct net_device *, struct sk_buff *, struct net_device *);
+	void (*ndo_change_rx_flags)(struct net_device *, int);
+	void (*ndo_set_rx_mode)(struct net_device *);
+	int (*ndo_set_mac_address)(struct net_device *, void *);
+	int (*ndo_validate_addr)(struct net_device *);
+	int (*ndo_do_ioctl)(struct net_device *, struct ifreq *, int);
+	int (*ndo_eth_ioctl)(struct net_device *, struct ifreq *, int);
+	int (*ndo_siocbond)(struct net_device *, struct ifreq *, int);
+	int (*ndo_siocwandev)(struct net_device *, struct if_settings *);
+	int (*ndo_siocdevprivate)(struct net_device *, struct ifreq *, void __attribute__((btf_type_tag("user"))) *, int);
+	int (*ndo_set_config)(struct net_device *, struct ifmap *);
+	int (*ndo_change_mtu)(struct net_device *, int);
+	int (*ndo_neigh_setup)(struct net_device *, struct neigh_parms *);
+	void (*ndo_tx_timeout)(struct net_device *, unsigned int);
+	void (*ndo_get_stats64)(struct net_device *, struct rtnl_link_stats64 *);
+	bool (*ndo_has_offload_stats)(const struct net_device *, int);
+	int (*ndo_get_offload_stats)(int, const struct net_device *, void *);
+	struct net_device_stats * (*ndo_get_stats)(struct net_device *);
+	int (*ndo_vlan_rx_add_vid)(struct net_device *, __be16, u16);
+	int (*ndo_vlan_rx_kill_vid)(struct net_device *, __be16, u16);
+	int (*ndo_set_vf_mac)(struct net_device *, int, u8 *);
+	int (*ndo_set_vf_vlan)(struct net_device *, int, u16, u8, __be16);
+	int (*ndo_set_vf_rate)(struct net_device *, int, int, int);
+	int (*ndo_set_vf_spoofchk)(struct net_device *, int, bool);
+	int (*ndo_set_vf_trust)(struct net_device *, int, bool);
+	int (*ndo_get_vf_config)(struct net_device *, int, struct ifla_vf_info *);
+	int (*ndo_set_vf_link_state)(struct net_device *, int, int);
+	int (*ndo_get_vf_stats)(struct net_device *, int, struct ifla_vf_stats *);
+	int (*ndo_set_vf_port)(struct net_device *, int, struct nlattr **);
+	int (*ndo_get_vf_port)(struct net_device *, int, struct sk_buff *);
+	int (*ndo_get_vf_guid)(struct net_device *, int, struct ifla_vf_guid *, struct ifla_vf_guid *);
+	int (*ndo_set_vf_guid)(struct net_device *, int, u64, int);
+	int (*ndo_set_vf_rss_query_en)(struct net_device *, int, bool);
+	int (*ndo_setup_tc)(struct net_device *, enum tc_setup_type, void *);
+	int (*ndo_rx_flow_steer)(struct net_device *, const struct sk_buff *, u16, u32);
+	int (*ndo_add_slave)(struct net_device *, struct net_device *, struct netlink_ext_ack *);
+	int (*ndo_del_slave)(struct net_device *, struct net_device *);
+	struct net_device * (*ndo_get_xmit_slave)(struct net_device *, struct sk_buff *, bool);
+	struct net_device * (*ndo_sk_get_lower_dev)(struct net_device *, struct sock *);
+	netdev_features_t (*ndo_fix_features)(struct net_device *, netdev_features_t);
+	int (*ndo_set_features)(struct net_device *, netdev_features_t);
+	int (*ndo_neigh_construct)(struct net_device *, struct neighbour *);
+	void (*ndo_neigh_destroy)(struct net_device *, struct neighbour *);
+	int (*ndo_fdb_add)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16, u16, struct netlink_ext_ack *);
+	int (*ndo_fdb_del)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16, struct netlink_ext_ack *);
+	int (*ndo_fdb_del_bulk)(struct ndmsg *, struct nlattr **, struct net_device *, u16, struct netlink_ext_ack *);
+	int (*ndo_fdb_dump)(struct sk_buff *, struct netlink_callback *, struct net_device *, struct net_device *, int *);
+	int (*ndo_fdb_get)(struct sk_buff *, struct nlattr **, struct net_device *, const unsigned char *, u16, u32, u32, struct netlink_ext_ack *);
+	int (*ndo_mdb_add)(struct net_device *, struct nlattr **, u16, struct netlink_ext_ack *);
+	int (*ndo_mdb_del)(struct net_device *, struct nlattr **, struct netlink_ext_ack *);
+	int (*ndo_mdb_dump)(struct net_device *, struct sk_buff *, struct netlink_callback *);
+	int (*ndo_bridge_setlink)(struct net_device *, struct nlmsghdr *, u16, struct netlink_ext_ack *);
+	int (*ndo_bridge_getlink)(struct sk_buff *, u32, u32, struct net_device *, u32, int);
+	int (*ndo_bridge_dellink)(struct net_device *, struct nlmsghdr *, u16);
+	int (*ndo_change_carrier)(struct net_device *, bool);
+	int (*ndo_get_phys_port_id)(struct net_device *, struct netdev_phys_item_id *);
+	int (*ndo_get_port_parent_id)(struct net_device *, struct netdev_phys_item_id *);
+	int (*ndo_get_phys_port_name)(struct net_device *, char *, size_t);
+	void * (*ndo_dfwd_add_station)(struct net_device *, struct net_device *);
+	void (*ndo_dfwd_del_station)(struct net_device *, void *);
+	int (*ndo_set_tx_maxrate)(struct net_device *, int, u32);
+	int (*ndo_get_iflink)(const struct net_device *);
+	int (*ndo_fill_metadata_dst)(struct net_device *, struct sk_buff *);
+	void (*ndo_set_rx_headroom)(struct net_device *, int);
+	int (*ndo_bpf)(struct net_device *, struct netdev_bpf *);
+	int (*ndo_xdp_xmit)(struct net_device *, int, struct xdp_frame **, u32);
+	struct net_device * (*ndo_xdp_get_xmit_slave)(struct net_device *, struct xdp_buff *);
+	int (*ndo_xsk_wakeup)(struct net_device *, u32, u32);
+	int (*ndo_tunnel_ctl)(struct net_device *, struct ip_tunnel_parm *, int);
+	struct net_device * (*ndo_get_peer_dev)(struct net_device *);
+	int (*ndo_fill_forward_path)(struct net_device_path_ctx *, struct net_device_path *);
+	ktime_t (*ndo_get_tstamp)(struct net_device *, const struct skb_shared_hwtstamps *, bool);
+	int (*ndo_hwtstamp_get)(struct net_device *, struct kernel_hwtstamp_config *);
+	int (*ndo_hwtstamp_set)(struct net_device *, struct kernel_hwtstamp_config *, struct netlink_ext_ack *);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+	u64 android_kabi_reserved5;
+	u64 android_kabi_reserved6;
+	u64 android_kabi_reserved7;
+	u64 android_kabi_reserved8;
+};
+
+struct ifmap {
+	unsigned long mem_start;
+	unsigned long mem_end;
+	unsigned short base_addr;
+	unsigned char irq;
+	unsigned char dma;
+	unsigned char port;
+};
+
+typedef struct {
+	unsigned short encoding;
+	unsigned short parity;
+} raw_hdlc_proto;
+
+typedef struct {
+	unsigned int interval;
+	unsigned int timeout;
+} cisco_proto;
+
+typedef struct {
+	unsigned int t391;
+	unsigned int t392;
+	unsigned int n391;
+	unsigned int n392;
+	unsigned int n393;
+	unsigned short lmi;
+	unsigned short dce;
+} fr_proto;
+
+typedef struct {
+	unsigned int dlci;
+} fr_proto_pvc;
+
+typedef struct {
+	unsigned int dlci;
+	char master[16];
+} fr_proto_pvc_info;
+
+typedef struct {
+	unsigned short dce;
+	unsigned int modulo;
+	unsigned int window;
+	unsigned int t1;
+	unsigned int t2;
+	unsigned int n2;
+} x25_hdlc_proto;
+
+typedef struct {
+	unsigned int clock_rate;
+	unsigned int clock_type;
+	unsigned short loopback;
+} sync_serial_settings;
+
+typedef struct {
+	unsigned int clock_rate;
+	unsigned int clock_type;
+	unsigned short loopback;
+	unsigned int slot_map;
+} te1_settings;
+
+struct if_settings {
+	unsigned int type;
+	unsigned int size;
+	union {
+		raw_hdlc_proto __attribute__((btf_type_tag("user"))) *raw_hdlc;
+		cisco_proto __attribute__((btf_type_tag("user"))) *cisco;
+		fr_proto __attribute__((btf_type_tag("user"))) *fr;
+		fr_proto_pvc __attribute__((btf_type_tag("user"))) *fr_pvc;
+		fr_proto_pvc_info __attribute__((btf_type_tag("user"))) *fr_pvc_info;
+		x25_hdlc_proto __attribute__((btf_type_tag("user"))) *x25;
+		sync_serial_settings __attribute__((btf_type_tag("user"))) *sync;
+		te1_settings __attribute__((btf_type_tag("user"))) *te1;
+	} ifs_ifsu;
+};
+
+struct ifreq {
+	union {
+		char ifrn_name[16];
+	} ifr_ifrn;
+	union {
+		struct sockaddr ifru_addr;
+		struct sockaddr ifru_dstaddr;
+		struct sockaddr ifru_broadaddr;
+		struct sockaddr ifru_netmask;
+		struct sockaddr ifru_hwaddr;
+		short ifru_flags;
+		int ifru_ivalue;
+		int ifru_mtu;
+		struct ifmap ifru_map;
+		char ifru_slave[16];
+		char ifru_newname[16];
+		void __attribute__((btf_type_tag("user"))) *ifru_data;
+		struct if_settings ifru_settings;
+	} ifr_ifru;
+};
+
+struct neigh_table;
+
+struct neigh_parms {
+	possible_net_t net;
+	struct net_device *dev;
+	netdevice_tracker dev_tracker;
+	struct list_head list;
+	int (*neigh_setup)(struct neighbour *);
+	struct neigh_table *tbl;
+	void *sysctl_table;
+	int dead;
+	refcount_t refcnt;
+	struct callback_head callback_head;
+	int reachable_time;
+	u32 qlen;
+	int data[14];
+	unsigned long data_state[1];
+	u64 android_kabi_reserved1;
+};
+
+struct fib_rule;
+
+struct flowi;
+
+struct fib_lookup_arg;
+
+struct fib_rule_hdr;
+
+struct fib_rules_ops {
+	int family;
+	struct list_head list;
+	int rule_size;
+	int addr_size;
+	int unresolved_rules;
+	int nr_goto_rules;
+	unsigned int fib_rules_seq;
+	int (*action)(struct fib_rule *, struct flowi *, int, struct fib_lookup_arg *);
+	bool (*suppress)(struct fib_rule *, int, struct fib_lookup_arg *);
+	int (*match)(struct fib_rule *, struct flowi *, int);
+	int (*configure)(struct fib_rule *, struct sk_buff *, struct fib_rule_hdr *, struct nlattr **, struct netlink_ext_ack *);
+	int (*delete)(struct fib_rule *);
+	int (*compare)(struct fib_rule *, struct fib_rule_hdr *, struct nlattr **);
+	int (*fill)(struct fib_rule *, struct sk_buff *, struct fib_rule_hdr *);
+	size_t (*nlmsg_payload)(struct fib_rule *);
+	void (*flush_cache)(struct fib_rules_ops *);
+	int nlgroup;
+	struct list_head rules_list;
+	struct module *owner;
+	struct net *fro_net;
+	struct callback_head rcu;
+};
+
+typedef __u64 __be64;
+
+struct fib_kuid_range {
+	kuid_t start;
+	kuid_t end;
+};
+
+struct fib_rule_port_range {
+	__u16 start;
+	__u16 end;
+};
+
+struct fib_rule {
+	struct list_head list;
+	int iifindex;
+	int oifindex;
+	u32 mark;
+	u32 mark_mask;
+	u32 flags;
+	u32 table;
+	u8 action;
+	u8 l3mdev;
+	u8 proto;
+	u8 ip_proto;
+	u32 target;
+	__be64 tun_id;
+	struct fib_rule __attribute__((btf_type_tag("rcu"))) *ctarget;
+	struct net *fr_net;
+	refcount_t refcnt;
+	u32 pref;
+	int suppress_ifgroup;
+	int suppress_prefixlen;
+	char iifname[16];
+	char oifname[16];
+	struct fib_kuid_range uid_range;
+	struct fib_rule_port_range sport_range;
+	struct fib_rule_port_range dport_range;
+	struct callback_head rcu;
+};
+
+struct flowi_tunnel {
+	__be64 tun_id;
+};
+
+struct flowi_common {
+	int flowic_oif;
+	int flowic_iif;
+	int flowic_l3mdev;
+	__u32 flowic_mark;
+	__u8 flowic_tos;
+	__u8 flowic_scope;
+	__u8 flowic_proto;
+	__u8 flowic_flags;
+	__u32 flowic_secid;
+	kuid_t flowic_uid;
+	__u32 flowic_multipath_hash;
+	struct flowi_tunnel flowic_tun_key;
+};
+
+union flowi_uli {
+	struct {
+		__be16 dport;
+		__be16 sport;
+	} ports;
+	struct {
+		__u8 type;
+		__u8 code;
+	} icmpt;
+	__be32 gre_key;
+	struct {
+		__u8 type;
+	} mht;
+};
+
+struct flowi4 {
+	struct flowi_common __fl_common;
+	__be32 saddr;
+	__be32 daddr;
+	union flowi_uli uli;
+};
+
+struct flowi6 {
+	struct flowi_common __fl_common;
+	struct in6_addr daddr;
+	struct in6_addr saddr;
+	__be32 flowlabel;
+	union flowi_uli uli;
+	__u32 mp_hash;
+};
+
+struct flowi {
+	union {
+		struct flowi_common __fl_common;
+		struct flowi4 ip4;
+		struct flowi6 ip6;
+	} u;
+};
+
+struct fib_lookup_arg {
+	void *lookup_ptr;
+	const void *lookup_data;
+	void *result;
+	struct fib_rule *rule;
+	u32 table;
+	int flags;
+};
+
+struct fib_rule_hdr {
+	__u8 family;
+	__u8 dst_len;
+	__u8 src_len;
+	__u8 tos;
+	__u8 table;
+	__u8 res1;
+	__u8 res2;
+	__u8 action;
+	__u32 flags;
+};
+
+struct nlattr {
+	__u16 nla_len;
+	__u16 nla_type;
+};
+
+struct nla_policy;
+
+struct netlink_ext_ack {
+	const char *_msg;
+	const struct nlattr *bad_attr;
+	const struct nla_policy *policy;
+	const struct nlattr *miss_nest;
+	u16 miss_type;
+	u8 cookie[20];
+	u8 cookie_len;
+	char _msg_buf[80];
+};
+
+struct netlink_range_validation;
+
+struct netlink_range_validation_signed;
+
+struct nla_policy {
+	u8 type;
+	u8 validation_type;
+	u16 len;
+	union {
+		u16 strict_start_type;
+		const u32 bitfield32_valid;
+		const u32 mask;
+		const char *reject_message;
+		const struct nla_policy *nested_policy;
+		struct netlink_range_validation *range;
+		struct netlink_range_validation_signed *range_signed;
+		struct {
+			s16 min;
+			s16 max;
+		};
+		int (*validate)(const struct nlattr *, struct netlink_ext_ack *);
+	};
+};
+
+struct netlink_range_validation {
+	u64 min;
+	u64 max;
+};
+
+struct netlink_range_validation_signed {
+	s64 min;
+	s64 max;
+};
+
+struct fib_notifier_ops {
+	int family;
+	struct list_head list;
+	unsigned int (*fib_seq_read)(struct net *);
+	int (*fib_dump)(struct net *, struct notifier_block *, struct netlink_ext_ack *);
+	struct module *owner;
+	struct callback_head rcu;
+};
+
+struct hh_cache {
+	unsigned int hh_len;
+	seqlock_t hh_lock;
+	unsigned long hh_data[12];
+};
+
+struct neigh_ops;
+
+struct neighbour {
+	struct neighbour __attribute__((btf_type_tag("rcu"))) *next;
+	struct neigh_table *tbl;
+	struct neigh_parms *parms;
+	unsigned long confirmed;
+	unsigned long updated;
+	rwlock_t lock;
+	refcount_t refcnt;
+	unsigned int arp_queue_len_bytes;
+	struct sk_buff_head arp_queue;
+	struct timer_list timer;
+	unsigned long used;
+	atomic_t probes;
+	u8 nud_state;
+	u8 type;
+	u8 dead;
+	u8 protocol;
+	u32 flags;
+	seqlock_t ha_lock;
+	long: 0;
+	unsigned char ha[32];
+	struct hh_cache hh;
+	int (*output)(struct neighbour *, struct sk_buff *);
+	const struct neigh_ops *ops;
+	struct list_head gc_list;
+	struct list_head managed_list;
+	struct callback_head rcu;
+	struct net_device *dev;
+	netdevice_tracker dev_tracker;
+	u64 android_kabi_reserved1;
+	u8 primary_key[0];
+};
+
+struct pneigh_entry;
+
+struct neigh_statistics;
+
+struct neigh_hash_table;
+
+struct neigh_table {
+	int family;
+	unsigned int entry_size;
+	unsigned int key_len;
+	__be16 protocol;
+	__u32 (*hash)(const void *, const struct net_device *, __u32 *);
+	bool (*key_eq)(const struct neighbour *, const void *);
+	int (*constructor)(struct neighbour *);
+	int (*pconstructor)(struct pneigh_entry *);
+	void (*pdestructor)(struct pneigh_entry *);
+	void (*proxy_redo)(struct sk_buff *);
+	int (*is_multicast)(const void *);
+	bool (*allow_add)(const struct net_device *, struct netlink_ext_ack *);
+	char *id;
+	struct neigh_parms parms;
+	struct list_head parms_list;
+	int gc_interval;
+	int gc_thresh1;
+	int gc_thresh2;
+	int gc_thresh3;
+	unsigned long last_flush;
+	struct delayed_work gc_work;
+	struct delayed_work managed_work;
+	struct timer_list proxy_timer;
+	struct sk_buff_head proxy_queue;
+	atomic_t entries;
+	atomic_t gc_entries;
+	struct list_head gc_list;
+	struct list_head managed_list;
+	rwlock_t lock;
+	unsigned long last_rand;
+	struct neigh_statistics __attribute__((btf_type_tag("percpu"))) *stats;
+	struct neigh_hash_table __attribute__((btf_type_tag("rcu"))) *nht;
+	struct pneigh_entry **phash_buckets;
+	u64 android_kabi_reserved1;
+};
+
+struct pneigh_entry {
+	struct pneigh_entry *next;
+	possible_net_t net;
+	struct net_device *dev;
+	netdevice_tracker dev_tracker;
+	u32 flags;
+	u8 protocol;
+	u32 key[0];
+};
+
+struct neigh_statistics {
+	unsigned long allocs;
+	unsigned long destroys;
+	unsigned long hash_grows;
+	unsigned long res_failed;
+	unsigned long lookups;
+	unsigned long hits;
+	unsigned long rcv_probes_mcast;
+	unsigned long rcv_probes_ucast;
+	unsigned long periodic_gc_runs;
+	unsigned long forced_gc_runs;
+	unsigned long unres_discards;
+	unsigned long table_fulls;
+};
+
+struct neigh_hash_table {
+	struct neighbour __attribute__((btf_type_tag("rcu"))) **hash_buckets;
+	unsigned int hash_shift;
+	__u32 hash_rnd[4];
+	struct callback_head rcu;
+};
+
+struct neigh_ops {
+	int family;
+	void (*solicit)(struct neighbour *, struct sk_buff *);
+	void (*error_report)(struct neighbour *, struct sk_buff *);
+	int (*output)(struct neighbour *, struct sk_buff *);
+	int (*connected_output)(struct neighbour *, struct sk_buff *);
+};
+
+struct ipv6_stable_secret {
+	bool initialized;
+	struct in6_addr secret;
+};
+
+struct ipv6_devconf {
+	__s32 forwarding;
+	__s32 hop_limit;
+	__s32 mtu6;
+	__s32 accept_ra;
+	__s32 accept_redirects;
+	__s32 autoconf;
+	__s32 dad_transmits;
+	__s32 rtr_solicits;
+	__s32 rtr_solicit_interval;
+	__s32 rtr_solicit_max_interval;
+	__s32 rtr_solicit_delay;
+	__s32 force_mld_version;
+	__s32 mldv1_unsolicited_report_interval;
+	__s32 mldv2_unsolicited_report_interval;
+	__s32 use_tempaddr;
+	__s32 temp_valid_lft;
+	__s32 temp_prefered_lft;
+	__s32 regen_max_retry;
+	__s32 max_desync_factor;
+	__s32 max_addresses;
+	__s32 accept_ra_defrtr;
+	__u32 ra_defrtr_metric;
+	__s32 accept_ra_min_hop_limit;
+	__s32 accept_ra_min_lft;
+	__s32 accept_ra_pinfo;
+	__s32 ignore_routes_with_linkdown;
+	__s32 accept_ra_rtr_pref;
+	__s32 rtr_probe_interval;
+	__s32 accept_ra_rt_info_min_plen;
+	__s32 accept_ra_rt_info_max_plen;
+	__s32 accept_ra_rt_table;
+	__s32 proxy_ndp;
+	__s32 accept_source_route;
+	__s32 accept_ra_from_local;
+	__s32 optimistic_dad;
+	__s32 use_optimistic;
+	atomic_t mc_forwarding;
+	__s32 disable_ipv6;
+	__s32 drop_unicast_in_l2_multicast;
+	__s32 accept_dad;
+	__s32 force_tllao;
+	__s32 ndisc_notify;
+	__s32 suppress_frag_ndisc;
+	__s32 accept_ra_mtu;
+	__s32 drop_unsolicited_na;
+	__s32 accept_untracked_na;
+	struct ipv6_stable_secret stable_secret;
+	__s32 use_oif_addrs_only;
+	__s32 keep_addr_on_down;
+	__s32 seg6_enabled;
+	__u32 enhanced_dad;
+	__u32 addr_gen_mode;
+	__s32 disable_policy;
+	__s32 ndisc_tclass;
+	__s32 rpl_seg_enabled;
+	__u32 ioam6_id;
+	__u32 ioam6_id_wide;
+	__u8 ioam6_enabled;
+	__u8 ndisc_evict_nocarrier;
+	struct ctl_table_header *sysctl_header;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct rtnl_link_stats64 {
+	__u64 rx_packets;
+	__u64 tx_packets;
+	__u64 rx_bytes;
+	__u64 tx_bytes;
+	__u64 rx_errors;
+	__u64 tx_errors;
+	__u64 rx_dropped;
+	__u64 tx_dropped;
+	__u64 multicast;
+	__u64 collisions;
+	__u64 rx_length_errors;
+	__u64 rx_over_errors;
+	__u64 rx_crc_errors;
+	__u64 rx_frame_errors;
+	__u64 rx_fifo_errors;
+	__u64 rx_missed_errors;
+	__u64 tx_aborted_errors;
+	__u64 tx_carrier_errors;
+	__u64 tx_fifo_errors;
+	__u64 tx_heartbeat_errors;
+	__u64 tx_window_errors;
+	__u64 rx_compressed;
+	__u64 tx_compressed;
+	__u64 rx_nohandler;
+	__u64 rx_otherhost_dropped;
+};
+
+struct ifla_vf_info {
+	__u32 vf;
+	__u8 mac[32];
+	__u32 vlan;
+	__u32 qos;
+	__u32 spoofchk;
+	__u32 linkstate;
+	__u32 min_tx_rate;
+	__u32 max_tx_rate;
+	__u32 rss_query_en;
+	__u32 trusted;
+	__be16 vlan_proto;
+};
+
+struct ifla_vf_stats {
+	__u64 rx_packets;
+	__u64 tx_packets;
+	__u64 rx_bytes;
+	__u64 tx_bytes;
+	__u64 broadcast;
+	__u64 multicast;
+	__u64 rx_dropped;
+	__u64 tx_dropped;
+};
+
+struct ifla_vf_guid {
+	__u32 vf;
+	__u64 guid;
+};
+
+struct ndmsg {
+	__u8 ndm_family;
+	__u8 ndm_pad1;
+	__u16 ndm_pad2;
+	__s32 ndm_ifindex;
+	__u16 ndm_state;
+	__u8 ndm_flags;
+	__u8 ndm_type;
+};
+
+struct netlink_callback {
+	struct sk_buff *skb;
+	const struct nlmsghdr *nlh;
+	int (*dump)(struct sk_buff *, struct netlink_callback *);
+	int (*done)(struct netlink_callback *);
+	void *data;
+	struct module *module;
+	struct netlink_ext_ack *extack;
+	u16 family;
+	u16 answer_flags;
+	u32 min_dump_alloc;
+	unsigned int prev_seq;
+	unsigned int seq;
+	bool strict_check;
+	union {
+		u8 ctx[48];
+		long args[6];
+	};
+};
+
+struct nlmsghdr {
+	__u32 nlmsg_len;
+	__u16 nlmsg_type;
+	__u16 nlmsg_flags;
+	__u32 nlmsg_seq;
+	__u32 nlmsg_pid;
+};
+
+struct netdev_phys_item_id {
+	unsigned char id[32];
+	unsigned char id_len;
+};
+
+enum bpf_netdev_command {
+	XDP_SETUP_PROG = 0,
+	XDP_SETUP_PROG_HW = 1,
+	BPF_OFFLOAD_MAP_ALLOC = 2,
+	BPF_OFFLOAD_MAP_FREE = 3,
+	XDP_SETUP_XSK_POOL = 4,
+};
+
+struct bpf_offloaded_map;
+
+struct xsk_buff_pool;
+
+struct netdev_bpf {
+	enum bpf_netdev_command command;
+	union {
+		struct {
+			u32 flags;
+			struct bpf_prog *prog;
+			struct netlink_ext_ack *extack;
+		};
+		struct {
+			struct bpf_offloaded_map *offmap;
+		};
+		struct {
+			struct xsk_buff_pool *pool;
+			u16 queue_id;
+		} xsk;
+	};
+};
+
+struct net_device_path_ctx {
+	const struct net_device *dev;
+	u8 daddr[6];
+	int num_vlans;
+	struct {
+		u16 id;
+		__be16 proto;
+	} vlan[2];
+};
+
+enum net_device_path_type {
+	DEV_PATH_ETHERNET = 0,
+	DEV_PATH_VLAN = 1,
+	DEV_PATH_BRIDGE = 2,
+	DEV_PATH_PPPOE = 3,
+	DEV_PATH_DSA = 4,
+	DEV_PATH_MTK_WDMA = 5,
+};
+
+struct net_device_path {
+	enum net_device_path_type type;
+	const struct net_device *dev;
+	union {
+		struct {
+			u16 id;
+			__be16 proto;
+			u8 h_dest[6];
+		} encap;
+		struct {
+			enum {
+				DEV_PATH_BR_VLAN_KEEP = 0,
+				DEV_PATH_BR_VLAN_TAG = 1,
+				DEV_PATH_BR_VLAN_UNTAG = 2,
+				DEV_PATH_BR_VLAN_UNTAG_HW = 3,
+			} vlan_mode;
+			u16 vlan_id;
+			__be16 vlan_proto;
+		} bridge;
+		struct {
+			int port;
+			u16 proto;
+		} dsa;
+		struct {
+			u8 wdma_idx;
+			u8 queue;
+			u16 wcid;
+			u8 bss;
+		} mtk_wdma;
+	};
+};
+
+struct skb_shared_hwtstamps {
+	union {
+		ktime_t hwtstamp;
+		void *netdev_data;
+	};
+};
+
+enum hwtstamp_source {
+	HWTSTAMP_SOURCE_NETDEV = 0,
+	HWTSTAMP_SOURCE_PHYLIB = 1,
+};
+
+struct kernel_hwtstamp_config {
+	int flags;
+	int tx_type;
+	int rx_filter;
+	struct ifreq *ifr;
+	bool copied_to_user;
+	enum hwtstamp_source source;
+};
+
+enum xdp_rss_hash_type {
+	XDP_RSS_L3_IPV4 = 1,
+	XDP_RSS_L3_IPV6 = 2,
+	XDP_RSS_L3_DYNHDR = 4,
+	XDP_RSS_L4 = 8,
+	XDP_RSS_L4_TCP = 16,
+	XDP_RSS_L4_UDP = 32,
+	XDP_RSS_L4_SCTP = 64,
+	XDP_RSS_L4_IPSEC = 128,
+	XDP_RSS_TYPE_NONE = 0,
+	XDP_RSS_TYPE_L2 = 0,
+	XDP_RSS_TYPE_L3_IPV4 = 1,
+	XDP_RSS_TYPE_L3_IPV6 = 2,
+	XDP_RSS_TYPE_L3_IPV4_OPT = 5,
+	XDP_RSS_TYPE_L3_IPV6_EX = 6,
+	XDP_RSS_TYPE_L4_ANY = 8,
+	XDP_RSS_TYPE_L4_IPV4_TCP = 25,
+	XDP_RSS_TYPE_L4_IPV4_UDP = 41,
+	XDP_RSS_TYPE_L4_IPV4_SCTP = 73,
+	XDP_RSS_TYPE_L4_IPV4_IPSEC = 137,
+	XDP_RSS_TYPE_L4_IPV6_TCP = 26,
+	XDP_RSS_TYPE_L4_IPV6_UDP = 42,
+	XDP_RSS_TYPE_L4_IPV6_SCTP = 74,
+	XDP_RSS_TYPE_L4_IPV6_IPSEC = 138,
+	XDP_RSS_TYPE_L4_IPV6_TCP_EX = 30,
+	XDP_RSS_TYPE_L4_IPV6_UDP_EX = 46,
+	XDP_RSS_TYPE_L4_IPV6_SCTP_EX = 78,
+};
+
+struct xdp_md;
+
+struct xdp_metadata_ops {
+	int (*xmo_rx_timestamp)(const struct xdp_md *, u64 *);
+	int (*xmo_rx_hash)(const struct xdp_md *, u32 *, enum xdp_rss_hash_type *);
+};
+
+struct net_device_core_stats {
+	unsigned long rx_dropped;
+	unsigned long tx_dropped;
+	unsigned long rx_nohandler;
+	unsigned long rx_otherhost_dropped;
+};
+
+struct iw_request_info;
+
+union iwreq_data;
+
+typedef int (*iw_handler)(struct net_device *, struct iw_request_info *, union iwreq_data *, char *);
+
+struct iw_priv_args;
+
+struct iw_statistics;
+
+struct iw_handler_def {
+	const iw_handler *standard;
+	__u16 num_standard;
+	__u16 num_private;
+	__u16 num_private_args;
+	const iw_handler *private;
+	const struct iw_priv_args *private_args;
+	struct iw_statistics * (*get_wireless_stats)(struct net_device *);
+};
+
+enum ethtool_phys_id_state {
+	ETHTOOL_ID_INACTIVE = 0,
+	ETHTOOL_ID_ACTIVE = 1,
+	ETHTOOL_ID_ON = 2,
+	ETHTOOL_ID_OFF = 3,
+};
+
+struct ethtool_drvinfo;
+
+struct ethtool_regs;
+
+struct ethtool_wolinfo;
+
+struct ethtool_link_ext_state_info;
+
+struct ethtool_link_ext_stats;
+
+struct ethtool_eeprom;
+
+struct ethtool_coalesce;
+
+struct kernel_ethtool_coalesce;
+
+struct ethtool_ringparam;
+
+struct kernel_ethtool_ringparam;
+
+struct ethtool_pause_stats;
+
+struct ethtool_pauseparam;
+
+struct ethtool_test;
+
+struct ethtool_stats;
+
+struct ethtool_rxnfc;
+
+struct ethtool_flash;
+
+struct ethtool_channels;
+
+struct ethtool_dump;
+
+struct ethtool_ts_info;
+
+struct ethtool_modinfo;
+
+struct ethtool_eee;
+
+struct ethtool_tunable;
+
+struct ethtool_link_ksettings;
+
+struct ethtool_fec_stats;
+
+struct ethtool_fecparam;
+
+struct ethtool_module_eeprom;
+
+struct ethtool_eth_phy_stats;
+
+struct ethtool_eth_mac_stats;
+
+struct ethtool_eth_ctrl_stats;
+
+struct ethtool_rmon_stats;
+
+struct ethtool_rmon_hist_range;
+
+struct ethtool_module_power_mode_params;
+
+struct ethtool_mm_state;
+
+struct ethtool_mm_cfg;
+
+struct ethtool_mm_stats;
+
+struct ethtool_ops {
+	u32 cap_link_lanes_supported: 1;
+	u32 supported_coalesce_params;
+	u32 supported_ring_params;
+	void (*get_drvinfo)(struct net_device *, struct ethtool_drvinfo *);
+	int (*get_regs_len)(struct net_device *);
+	void (*get_regs)(struct net_device *, struct ethtool_regs *, void *);
+	void (*get_wol)(struct net_device *, struct ethtool_wolinfo *);
+	int (*set_wol)(struct net_device *, struct ethtool_wolinfo *);
+	u32 (*get_msglevel)(struct net_device *);
+	void (*set_msglevel)(struct net_device *, u32);
+	int (*nway_reset)(struct net_device *);
+	u32 (*get_link)(struct net_device *);
+	int (*get_link_ext_state)(struct net_device *, struct ethtool_link_ext_state_info *);
+	void (*get_link_ext_stats)(struct net_device *, struct ethtool_link_ext_stats *);
+	int (*get_eeprom_len)(struct net_device *);
+	int (*get_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
+	int (*set_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
+	int (*get_coalesce)(struct net_device *, struct ethtool_coalesce *, struct kernel_ethtool_coalesce *, struct netlink_ext_ack *);
+	int (*set_coalesce)(struct net_device *, struct ethtool_coalesce *, struct kernel_ethtool_coalesce *, struct netlink_ext_ack *);
+	void (*get_ringparam)(struct net_device *, struct ethtool_ringparam *, struct kernel_ethtool_ringparam *, struct netlink_ext_ack *);
+	int (*set_ringparam)(struct net_device *, struct ethtool_ringparam *, struct kernel_ethtool_ringparam *, struct netlink_ext_ack *);
+	void (*get_pause_stats)(struct net_device *, struct ethtool_pause_stats *);
+	void (*get_pauseparam)(struct net_device *, struct ethtool_pauseparam *);
+	int (*set_pauseparam)(struct net_device *, struct ethtool_pauseparam *);
+	void (*self_test)(struct net_device *, struct ethtool_test *, u64 *);
+	void (*get_strings)(struct net_device *, u32, u8 *);
+	int (*set_phys_id)(struct net_device *, enum ethtool_phys_id_state);
+	void (*get_ethtool_stats)(struct net_device *, struct ethtool_stats *, u64 *);
+	int (*begin)(struct net_device *);
+	void (*complete)(struct net_device *);
+	u32 (*get_priv_flags)(struct net_device *);
+	int (*set_priv_flags)(struct net_device *, u32);
+	int (*get_sset_count)(struct net_device *, int);
+	int (*get_rxnfc)(struct net_device *, struct ethtool_rxnfc *, u32 *);
+	int (*set_rxnfc)(struct net_device *, struct ethtool_rxnfc *);
+	int (*flash_device)(struct net_device *, struct ethtool_flash *);
+	int (*reset)(struct net_device *, u32 *);
+	u32 (*get_rxfh_key_size)(struct net_device *);
+	u32 (*get_rxfh_indir_size)(struct net_device *);
+	int (*get_rxfh)(struct net_device *, u32 *, u8 *, u8 *);
+	int (*set_rxfh)(struct net_device *, const u32 *, const u8 *, const u8);
+	int (*get_rxfh_context)(struct net_device *, u32 *, u8 *, u8 *, u32);
+	int (*set_rxfh_context)(struct net_device *, const u32 *, const u8 *, const u8, u32 *, bool);
+	void (*get_channels)(struct net_device *, struct ethtool_channels *);
+	int (*set_channels)(struct net_device *, struct ethtool_channels *);
+	int (*get_dump_flag)(struct net_device *, struct ethtool_dump *);
+	int (*get_dump_data)(struct net_device *, struct ethtool_dump *, void *);
+	int (*set_dump)(struct net_device *, struct ethtool_dump *);
+	int (*get_ts_info)(struct net_device *, struct ethtool_ts_info *);
+	int (*get_module_info)(struct net_device *, struct ethtool_modinfo *);
+	int (*get_module_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
+	int (*get_eee)(struct net_device *, struct ethtool_eee *);
+	int (*set_eee)(struct net_device *, struct ethtool_eee *);
+	int (*get_tunable)(struct net_device *, const struct ethtool_tunable *, void *);
+	int (*set_tunable)(struct net_device *, const struct ethtool_tunable *, const void *);
+	int (*get_per_queue_coalesce)(struct net_device *, u32, struct ethtool_coalesce *);
+	int (*set_per_queue_coalesce)(struct net_device *, u32, struct ethtool_coalesce *);
+	int (*get_link_ksettings)(struct net_device *, struct ethtool_link_ksettings *);
+	int (*set_link_ksettings)(struct net_device *, const struct ethtool_link_ksettings *);
+	void (*get_fec_stats)(struct net_device *, struct ethtool_fec_stats *);
+	int (*get_fecparam)(struct net_device *, struct ethtool_fecparam *);
+	int (*set_fecparam)(struct net_device *, struct ethtool_fecparam *);
+	void (*get_ethtool_phy_stats)(struct net_device *, struct ethtool_stats *, u64 *);
+	int (*get_phy_tunable)(struct net_device *, const struct ethtool_tunable *, void *);
+	int (*set_phy_tunable)(struct net_device *, const struct ethtool_tunable *, const void *);
+	int (*get_module_eeprom_by_page)(struct net_device *, const struct ethtool_module_eeprom *, struct netlink_ext_ack *);
+	void (*get_eth_phy_stats)(struct net_device *, struct ethtool_eth_phy_stats *);
+	void (*get_eth_mac_stats)(struct net_device *, struct ethtool_eth_mac_stats *);
+	void (*get_eth_ctrl_stats)(struct net_device *, struct ethtool_eth_ctrl_stats *);
+	void (*get_rmon_stats)(struct net_device *, struct ethtool_rmon_stats *, const struct ethtool_rmon_hist_range **);
+	int (*get_module_power_mode)(struct net_device *, struct ethtool_module_power_mode_params *, struct netlink_ext_ack *);
+	int (*set_module_power_mode)(struct net_device *, const struct ethtool_module_power_mode_params *, struct netlink_ext_ack *);
+	int (*get_mm)(struct net_device *, struct ethtool_mm_state *);
+	int (*set_mm)(struct net_device *, struct ethtool_mm_cfg *, struct netlink_ext_ack *);
+	void (*get_mm_stats)(struct net_device *, struct ethtool_mm_stats *);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct nd_opt_hdr;
+
+struct ndisc_options;
+
+struct prefix_info;
+
+struct ndisc_ops {
+	int (*is_useropt)(u8);
+	int (*parse_options)(const struct net_device *, struct nd_opt_hdr *, struct ndisc_options *);
+	void (*update)(const struct net_device *, struct neighbour *, u32, u8, const struct ndisc_options *);
+	int (*opt_addr_space)(const struct net_device *, u8, struct neighbour *, u8 *, u8 **);
+	void (*fill_addr_option)(const struct net_device *, struct sk_buff *, u8, const u8 *);
+	void (*prefix_rcv_add_addr)(struct net *, struct net_device *, const struct prefix_info *, struct inet6_dev *, struct in6_addr *, int, u32, bool, bool, __u32, u32, bool);
+};
+
+struct header_ops {
+	int (*create)(struct sk_buff *, struct net_device *, unsigned short, const void *, const void *, unsigned int);
+	int (*parse)(const struct sk_buff *, unsigned char *);
+	int (*cache)(const struct neighbour *, struct hh_cache *, __be16);
+	void (*cache_update)(struct hh_cache *, const struct net_device *, const unsigned char *);
+	bool (*validate)(const char *, unsigned int);
+	__be16 (*parse_protocol)(const struct sk_buff *);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct ipv4_devconf {
+	void *sysctl;
+	int data[33];
+	unsigned long state[1];
+};
+
+struct in_ifaddr;
+
+struct ip_mc_list;
+
+struct in_device {
+	struct net_device *dev;
+	netdevice_tracker dev_tracker;
+	refcount_t refcnt;
+	int dead;
+	struct in_ifaddr __attribute__((btf_type_tag("rcu"))) *ifa_list;
+	struct ip_mc_list __attribute__((btf_type_tag("rcu"))) *mc_list;
+	struct ip_mc_list __attribute__((btf_type_tag("rcu"))) * __attribute__((btf_type_tag("rcu"))) *mc_hash;
+	int mc_count;
+	spinlock_t mc_tomb_lock;
+	struct ip_mc_list *mc_tomb;
+	unsigned long mr_v1_seen;
+	unsigned long mr_v2_seen;
+	unsigned long mr_maxdelay;
+	unsigned long mr_qi;
+	unsigned long mr_qri;
+	unsigned char mr_qrv;
+	unsigned char mr_gq_running;
+	u32 mr_ifc_count;
+	struct timer_list mr_gq_timer;
+	struct timer_list mr_ifc_timer;
+	struct neigh_parms *arp_parms;
+	struct ipv4_devconf cnf;
+	struct callback_head callback_head;
+};
+
+struct icmpv6_mib_device;
+
+struct icmpv6msg_mib_device;
+
+struct ipv6_devstat {
+	struct proc_dir_entry *proc_dir_entry;
+	struct ipstats_mib __attribute__((btf_type_tag("percpu"))) *ipv6;
+	struct icmpv6_mib_device *icmpv6dev;
+	struct icmpv6msg_mib_device *icmpv6msgdev;
+};
+
+struct ifmcaddr6;
+
+struct ifacaddr6;
+
+struct inet6_dev {
+	struct net_device *dev;
+	netdevice_tracker dev_tracker;
+	struct list_head addr_list;
+	struct ifmcaddr6 __attribute__((btf_type_tag("rcu"))) *mc_list;
+	struct ifmcaddr6 __attribute__((btf_type_tag("rcu"))) *mc_tomb;
+	unsigned char mc_qrv;
+	unsigned char mc_gq_running;
+	unsigned char mc_ifc_count;
+	unsigned char mc_dad_count;
+	unsigned long mc_v1_seen;
+	unsigned long mc_qi;
+	unsigned long mc_qri;
+	unsigned long mc_maxdelay;
+	struct delayed_work mc_gq_work;
+	struct delayed_work mc_ifc_work;
+	struct delayed_work mc_dad_work;
+	struct delayed_work mc_query_work;
+	struct delayed_work mc_report_work;
+	struct sk_buff_head mc_query_queue;
+	struct sk_buff_head mc_report_queue;
+	spinlock_t mc_query_lock;
+	spinlock_t mc_report_lock;
+	struct mutex mc_lock;
+	struct ifacaddr6 *ac_list;
+	rwlock_t lock;
+	refcount_t refcnt;
+	__u32 if_flags;
+	int dead;
+	u32 desync_factor;
+	struct list_head tempaddr_list;
+	struct in6_addr token;
+	struct neigh_parms *nd_parms;
+	struct ipv6_devconf cnf;
+	struct ipv6_devstat stats;
+	struct timer_list rs_timer;
+	__s32 rs_interval;
+	__u8 rs_probes;
+	unsigned long tstamp;
+	struct callback_head rcu;
+	unsigned int ra_mtu;
+};
+
+struct ip6_sf_list;
+
+struct ifmcaddr6 {
+	struct in6_addr mca_addr;
+	struct inet6_dev *idev;
+	struct ifmcaddr6 __attribute__((btf_type_tag("rcu"))) *next;
+	struct ip6_sf_list __attribute__((btf_type_tag("rcu"))) *mca_sources;
+	struct ip6_sf_list __attribute__((btf_type_tag("rcu"))) *mca_tomb;
+	unsigned int mca_sfmode;
+	unsigned char mca_crcount;
+	unsigned long mca_sfcount[2];
+	struct delayed_work mca_work;
+	unsigned int mca_flags;
+	int mca_users;
+	refcount_t mca_refcnt;
+	unsigned long mca_cstamp;
+	unsigned long mca_tstamp;
+	struct callback_head rcu;
+};
+
+struct ip6_sf_list {
+	struct ip6_sf_list __attribute__((btf_type_tag("rcu"))) *sf_next;
+	struct in6_addr sf_addr;
+	unsigned long sf_count[2];
+	unsigned char sf_gsresp;
+	unsigned char sf_oldin;
+	unsigned char sf_crcount;
+	struct callback_head rcu;
+};
+
+struct ifacaddr6 {
+	struct in6_addr aca_addr;
+	struct fib6_info *aca_rt;
+	struct ifacaddr6 *aca_next;
+	struct hlist_node aca_addr_lst;
+	int aca_users;
+	refcount_t aca_refcnt;
+	unsigned long aca_cstamp;
+	unsigned long aca_tstamp;
+	struct callback_head rcu;
+};
+
+struct icmpv6_mib_device {
+	atomic_long_t mibs[7];
+};
+
+struct icmpv6msg_mib_device {
+	atomic_long_t mibs[512];
+};
+
+struct vlan_group {
+	unsigned int nr_vlan_devs;
+	struct hlist_node hlist;
+	struct net_device **vlan_devices_arrays[16];
+};
+
+struct vlan_info {
+	struct net_device *real_dev;
+	struct vlan_group grp;
+	struct list_head vid_list;
+	unsigned int nr_vids;
+	struct callback_head rcu;
+};
+
+enum bpf_prog_type {
+	BPF_PROG_TYPE_UNSPEC = 0,
+	BPF_PROG_TYPE_SOCKET_FILTER = 1,
+	BPF_PROG_TYPE_KPROBE = 2,
+	BPF_PROG_TYPE_SCHED_CLS = 3,
+	BPF_PROG_TYPE_SCHED_ACT = 4,
+	BPF_PROG_TYPE_TRACEPOINT = 5,
+	BPF_PROG_TYPE_XDP = 6,
+	BPF_PROG_TYPE_PERF_EVENT = 7,
+	BPF_PROG_TYPE_CGROUP_SKB = 8,
+	BPF_PROG_TYPE_CGROUP_SOCK = 9,
+	BPF_PROG_TYPE_LWT_IN = 10,
+	BPF_PROG_TYPE_LWT_OUT = 11,
+	BPF_PROG_TYPE_LWT_XMIT = 12,
+	BPF_PROG_TYPE_SOCK_OPS = 13,
+	BPF_PROG_TYPE_SK_SKB = 14,
+	BPF_PROG_TYPE_CGROUP_DEVICE = 15,
+	BPF_PROG_TYPE_SK_MSG = 16,
+	BPF_PROG_TYPE_RAW_TRACEPOINT = 17,
+	BPF_PROG_TYPE_CGROUP_SOCK_ADDR = 18,
+	BPF_PROG_TYPE_LWT_SEG6LOCAL = 19,
+	BPF_PROG_TYPE_LIRC_MODE2 = 20,
+	BPF_PROG_TYPE_SK_REUSEPORT = 21,
+	BPF_PROG_TYPE_FLOW_DISSECTOR = 22,
+	BPF_PROG_TYPE_CGROUP_SYSCTL = 23,
+	BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE = 24,
+	BPF_PROG_TYPE_CGROUP_SOCKOPT = 25,
+	BPF_PROG_TYPE_TRACING = 26,
+	BPF_PROG_TYPE_STRUCT_OPS = 27,
+	BPF_PROG_TYPE_EXT = 28,
+	BPF_PROG_TYPE_LSM = 29,
+	BPF_PROG_TYPE_SK_LOOKUP = 30,
+	BPF_PROG_TYPE_SYSCALL = 31,
+	BPF_PROG_TYPE_NETFILTER = 32,
+	BPF_PROG_TYPE_FUSE = 33,
+};
+
+enum bpf_attach_type {
+	BPF_CGROUP_INET_INGRESS = 0,
+	BPF_CGROUP_INET_EGRESS = 1,
+	BPF_CGROUP_INET_SOCK_CREATE = 2,
+	BPF_CGROUP_SOCK_OPS = 3,
+	BPF_SK_SKB_STREAM_PARSER = 4,
+	BPF_SK_SKB_STREAM_VERDICT = 5,
+	BPF_CGROUP_DEVICE = 6,
+	BPF_SK_MSG_VERDICT = 7,
+	BPF_CGROUP_INET4_BIND = 8,
+	BPF_CGROUP_INET6_BIND = 9,
+	BPF_CGROUP_INET4_CONNECT = 10,
+	BPF_CGROUP_INET6_CONNECT = 11,
+	BPF_CGROUP_INET4_POST_BIND = 12,
+	BPF_CGROUP_INET6_POST_BIND = 13,
+	BPF_CGROUP_UDP4_SENDMSG = 14,
+	BPF_CGROUP_UDP6_SENDMSG = 15,
+	BPF_LIRC_MODE2 = 16,
+	BPF_FLOW_DISSECTOR = 17,
+	BPF_CGROUP_SYSCTL = 18,
+	BPF_CGROUP_UDP4_RECVMSG = 19,
+	BPF_CGROUP_UDP6_RECVMSG = 20,
+	BPF_CGROUP_GETSOCKOPT = 21,
+	BPF_CGROUP_SETSOCKOPT = 22,
+	BPF_TRACE_RAW_TP = 23,
+	BPF_TRACE_FENTRY = 24,
+	BPF_TRACE_FEXIT = 25,
+	BPF_MODIFY_RETURN = 26,
+	BPF_LSM_MAC = 27,
+	BPF_TRACE_ITER = 28,
+	BPF_CGROUP_INET4_GETPEERNAME = 29,
+	BPF_CGROUP_INET6_GETPEERNAME = 30,
+	BPF_CGROUP_INET4_GETSOCKNAME = 31,
+	BPF_CGROUP_INET6_GETSOCKNAME = 32,
+	BPF_XDP_DEVMAP = 33,
+	BPF_CGROUP_INET_SOCK_RELEASE = 34,
+	BPF_XDP_CPUMAP = 35,
+	BPF_SK_LOOKUP = 36,
+	BPF_XDP = 37,
+	BPF_SK_SKB_VERDICT = 38,
+	BPF_SK_REUSEPORT_SELECT = 39,
+	BPF_SK_REUSEPORT_SELECT_OR_MIGRATE = 40,
+	BPF_PERF_EVENT = 41,
+	BPF_TRACE_KPROBE_MULTI = 42,
+	BPF_LSM_CGROUP = 43,
+	BPF_STRUCT_OPS = 44,
+	BPF_NETFILTER = 45,
+	BPF_TCX_INGRESS = 46,
+	BPF_TCX_EGRESS = 47,
+	BPF_TRACE_UPROBE_MULTI = 48,
+	__MAX_BPF_ATTACH_TYPE = 49,
+};
+
+struct sock_filter {
+	__u16 code;
+	__u8 jt;
+	__u8 jf;
+	__u32 k;
+};
+
+struct bpf_insn {
+	__u8 code;
+	__u8 dst_reg: 4;
+	__u8 src_reg: 4;
+	__s16 off;
+	__s32 imm;
+};
+
+struct bpf_prog_stats;
+
+struct bpf_prog_aux;
+
+struct sock_fprog_kern;
+
+struct bpf_prog {
+	u16 pages;
+	u16 jited: 1;
+	u16 jit_requested: 1;
+	u16 gpl_compatible: 1;
+	u16 cb_access: 1;
+	u16 dst_needed: 1;
+	u16 blinding_requested: 1;
+	u16 blinded: 1;
+	u16 is_func: 1;
+	u16 kprobe_override: 1;
+	u16 has_callchain_buf: 1;
+	u16 enforce_expected_attach_type: 1;
+	u16 call_get_stack: 1;
+	u16 call_get_func_ip: 1;
+	u16 tstamp_type_access: 1;
+	enum bpf_prog_type type;
+	enum bpf_attach_type expected_attach_type;
+	u32 len;
+	u32 jited_len;
+	u8 tag[8];
+	struct bpf_prog_stats __attribute__((btf_type_tag("percpu"))) *stats;
+	int __attribute__((btf_type_tag("percpu"))) *active;
+	unsigned int (*bpf_func)(const void *, const struct bpf_insn *);
+	struct bpf_prog_aux *aux;
+	struct sock_fprog_kern *orig_prog;
+	u64 android_kabi_reserved1;
+	union {
+		struct {
+			struct {} __empty_insns;
+			struct sock_filter insns[0];
+		};
+		struct {
+			struct {} __empty_insnsi;
+			struct bpf_insn insnsi[0];
+		};
+	};
+};
+
+struct bpf_mprog_fp {
+	struct bpf_prog *prog;
+};
+
+struct bpf_mprog_bundle;
+
+struct bpf_mprog_entry {
+	struct bpf_mprog_fp fp_items[64];
+	struct bpf_mprog_bundle *parent;
+};
+
+struct dql {
+	unsigned int num_queued;
+	unsigned int adj_limit;
+	unsigned int last_obj_cnt;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	unsigned int limit;
+	unsigned int num_completed;
+	unsigned int prev_ovlimit;
+	unsigned int prev_num_queued;
+	unsigned int prev_last_obj_cnt;
+	unsigned int lowest_slack;
+	unsigned long slack_start_time;
+	unsigned int max_limit;
+	unsigned int min_limit;
+	unsigned int slack_hold_time;
+	long: 64;
+	long: 64;
+};
+
+struct netdev_queue {
+	struct net_device *dev;
+	netdevice_tracker dev_tracker;
+	struct Qdisc __attribute__((btf_type_tag("rcu"))) *qdisc;
+	struct Qdisc __attribute__((btf_type_tag("rcu"))) *qdisc_sleeping;
+	struct kobject kobj;
+	unsigned long tx_maxrate;
+	atomic_long_t trans_timeout;
+	struct net_device *sb_dev;
+	struct xsk_buff_pool *pool;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	spinlock_t _xmit_lock;
+	int xmit_lock_owner;
+	unsigned long trans_start;
+	unsigned long state;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct dql dql;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct qdisc_skb_head {
+	struct sk_buff *head;
+	struct sk_buff *tail;
+	__u32 qlen;
+	spinlock_t lock;
+};
+
+typedef struct {
+	local64_t v;
+} u64_stats_t;
+
+struct gnet_stats_basic_sync {
+	u64_stats_t bytes;
+	u64_stats_t packets;
+	struct u64_stats_sync syncp;
+};
+
+struct gnet_stats_queue {
+	__u32 qlen;
+	__u32 backlog;
+	__u32 drops;
+	__u32 requeues;
+	__u32 overlimits;
+};
+
+struct Qdisc_ops;
+
+struct qdisc_size_table;
+
+struct net_rate_estimator;
+
+struct Qdisc {
+	int (*enqueue)(struct sk_buff *, struct Qdisc *, struct sk_buff **);
+	struct sk_buff * (*dequeue)(struct Qdisc *);
+	unsigned int flags;
+	u32 limit;
+	const struct Qdisc_ops *ops;
+	struct qdisc_size_table __attribute__((btf_type_tag("rcu"))) *stab;
+	struct hlist_node hash;
+	u32 handle;
+	u32 parent;
+	struct netdev_queue *dev_queue;
+	struct net_rate_estimator __attribute__((btf_type_tag("rcu"))) *rate_est;
+	struct gnet_stats_basic_sync __attribute__((btf_type_tag("percpu"))) *cpu_bstats;
+	struct gnet_stats_queue __attribute__((btf_type_tag("percpu"))) *cpu_qstats;
+	int pad;
+	refcount_t refcnt;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct sk_buff_head gso_skb;
+	struct qdisc_skb_head q;
+	struct gnet_stats_basic_sync bstats;
+	struct gnet_stats_queue qstats;
+	unsigned long state;
+	unsigned long state2;
+	struct Qdisc *next_sched;
+	struct sk_buff_head skb_bad_txq;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	spinlock_t busylock;
+	spinlock_t seqlock;
+	struct callback_head rcu;
+	netdevice_tracker dev_tracker;
+	u64 android_kabi_reserved1;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long privdata[0];
+};
+
+struct xdp_dev_bulk_queue {
+	struct xdp_frame *q[16];
+	struct list_head flush_node;
+	struct net_device *dev;
+	struct net_device *dev_rx;
+	struct bpf_prog *xdp_prog;
+	unsigned int count;
+};
+
+struct xps_map;
+
+struct xps_dev_maps {
+	struct callback_head rcu;
+	unsigned int nr_ids;
+	s16 num_tc;
+	struct xps_map __attribute__((btf_type_tag("rcu"))) *attr_map[0];
+};
+
+struct xps_map {
+	unsigned int len;
+	unsigned int alloc_len;
+	struct callback_head rcu;
+	u16 queues[0];
+};
+
+struct pcpu_lstats {
+	u64_stats_t packets;
+	u64_stats_t bytes;
+	struct u64_stats_sync syncp;
+};
+
+struct pcpu_sw_netstats {
+	u64_stats_t rx_packets;
+	u64_stats_t rx_bytes;
+	u64_stats_t tx_packets;
+	u64_stats_t tx_bytes;
+	struct u64_stats_sync syncp;
+};
+
+struct pcpu_dstats {
+	u64 rx_packets;
+	u64 rx_bytes;
+	u64 rx_drops;
+	u64 tx_packets;
+	u64 tx_bytes;
+	u64 tx_drops;
+	struct u64_stats_sync syncp;
+	long: 64;
+	long: 64;
+};
+
+struct rtnl_link_ops {
+	struct list_head list;
+	const char *kind;
+	size_t priv_size;
+	struct net_device * (*alloc)(struct nlattr **, const char *, unsigned char, unsigned int, unsigned int);
+	void (*setup)(struct net_device *);
+	bool netns_refund;
+	unsigned int maxtype;
+	const struct nla_policy *policy;
+	int (*validate)(struct nlattr **, struct nlattr **, struct netlink_ext_ack *);
+	int (*newlink)(struct net *, struct net_device *, struct nlattr **, struct nlattr **, struct netlink_ext_ack *);
+	int (*changelink)(struct net_device *, struct nlattr **, struct nlattr **, struct netlink_ext_ack *);
+	void (*dellink)(struct net_device *, struct list_head *);
+	size_t (*get_size)(const struct net_device *);
+	int (*fill_info)(struct sk_buff *, const struct net_device *);
+	size_t (*get_xstats_size)(const struct net_device *);
+	int (*fill_xstats)(struct sk_buff *, const struct net_device *);
+	unsigned int (*get_num_tx_queues)();
+	unsigned int (*get_num_rx_queues)();
+	unsigned int slave_maxtype;
+	const struct nla_policy *slave_policy;
+	int (*slave_changelink)(struct net_device *, struct net_device *, struct nlattr **, struct nlattr **, struct netlink_ext_ack *);
+	size_t (*get_slave_size)(const struct net_device *, const struct net_device *);
+	int (*fill_slave_info)(struct sk_buff *, const struct net_device *, const struct net_device *);
+	struct net * (*get_link_net)(const struct net_device *);
+	size_t (*get_linkxstats_size)(const struct net_device *, int);
+	int (*fill_linkxstats)(struct sk_buff *, const struct net_device *, int *, int);
+};
+
+struct netprio_map {
+	struct callback_head rcu;
+	u32 priomap_len;
+	u32 priomap[0];
+};
+
+struct macsec_context;
+
+struct macsec_ops {
+	int (*mdo_dev_open)(struct macsec_context *);
+	int (*mdo_dev_stop)(struct macsec_context *);
+	int (*mdo_add_secy)(struct macsec_context *);
+	int (*mdo_upd_secy)(struct macsec_context *);
+	int (*mdo_del_secy)(struct macsec_context *);
+	int (*mdo_add_rxsc)(struct macsec_context *);
+	int (*mdo_upd_rxsc)(struct macsec_context *);
+	int (*mdo_del_rxsc)(struct macsec_context *);
+	int (*mdo_add_rxsa)(struct macsec_context *);
+	int (*mdo_upd_rxsa)(struct macsec_context *);
+	int (*mdo_del_rxsa)(struct macsec_context *);
+	int (*mdo_add_txsa)(struct macsec_context *);
+	int (*mdo_upd_txsa)(struct macsec_context *);
+	int (*mdo_del_txsa)(struct macsec_context *);
+	int (*mdo_get_dev_stats)(struct macsec_context *);
+	int (*mdo_get_tx_sc_stats)(struct macsec_context *);
+	int (*mdo_get_tx_sa_stats)(struct macsec_context *);
+	int (*mdo_get_rx_sc_stats)(struct macsec_context *);
+	int (*mdo_get_rx_sa_stats)(struct macsec_context *);
+	bool rx_uses_md_dst;
+};
+
+struct udp_tunnel_nic_table_info {
+	unsigned int n_entries;
+	unsigned int tunnel_types;
+};
+
+struct udp_tunnel_info;
+
+struct udp_tunnel_nic_shared;
+
+struct udp_tunnel_nic_info {
+	int (*set_port)(struct net_device *, unsigned int, unsigned int, struct udp_tunnel_info *);
+	int (*unset_port)(struct net_device *, unsigned int, unsigned int, struct udp_tunnel_info *);
+	int (*sync_table)(struct net_device *, unsigned int);
+	struct udp_tunnel_nic_shared *shared;
+	unsigned int flags;
+	struct udp_tunnel_nic_table_info tables[4];
+};
+
+struct rtnl_hw_stats64 {
+	__u64 rx_packets;
+	__u64 tx_packets;
+	__u64 rx_bytes;
+	__u64 tx_bytes;
+	__u64 rx_errors;
+	__u64 tx_errors;
+	__u64 rx_dropped;
+	__u64 tx_dropped;
+	__u64 multicast;
+};
+
+typedef enum {
+	SS_FREE = 0,
+	SS_UNCONNECTED = 1,
+	SS_CONNECTING = 2,
+	SS_CONNECTED = 3,
+	SS_DISCONNECTING = 4,
+} socket_state;
+
+struct socket_wq {
+	wait_queue_head_t wait;
+	struct fasync_struct *fasync_list;
+	unsigned long flags;
+	struct callback_head rcu;
+	long: 64;
+};
+
+struct proto_ops;
+
+struct socket {
+	socket_state state;
+	short type;
+	unsigned long flags;
+	struct file *file;
+	struct sock *sk;
+	const struct proto_ops *ops;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct socket_wq wq;
+};
+
+typedef struct {
+	size_t written;
+	size_t count;
+	union {
+		char __attribute__((btf_type_tag("user"))) *buf;
+		void *data;
+	} arg;
+	int error;
+} read_descriptor_t;
+
+typedef int (*sk_read_actor_t)(read_descriptor_t *, struct sk_buff *, unsigned int, size_t);
+
+typedef int (*skb_read_actor_t)(struct sock *, struct sk_buff *);
+
+struct proto_ops {
+	int family;
+	struct module *owner;
+	int (*release)(struct socket *);
+	int (*bind)(struct socket *, struct sockaddr *, int);
+	int (*connect)(struct socket *, struct sockaddr *, int, int);
+	int (*socketpair)(struct socket *, struct socket *);
+	int (*accept)(struct socket *, struct socket *, int, bool);
+	int (*getname)(struct socket *, struct sockaddr *, int);
+	__poll_t (*poll)(struct file *, struct socket *, struct poll_table_struct *);
+	int (*ioctl)(struct socket *, unsigned int, unsigned long);
+	int (*compat_ioctl)(struct socket *, unsigned int, unsigned long);
+	int (*gettstamp)(struct socket *, void __attribute__((btf_type_tag("user"))) *, bool, bool);
+	int (*listen)(struct socket *, int);
+	int (*shutdown)(struct socket *, int);
+	int (*setsockopt)(struct socket *, int, int, sockptr_t, unsigned int);
+	int (*getsockopt)(struct socket *, int, int, char __attribute__((btf_type_tag("user"))) *, int __attribute__((btf_type_tag("user"))) *);
+	void (*show_fdinfo)(struct seq_file *, struct socket *);
+	int (*sendmsg)(struct socket *, struct msghdr *, size_t);
+	int (*recvmsg)(struct socket *, struct msghdr *, size_t, int);
+	int (*mmap)(struct file *, struct socket *, struct vm_area_struct *);
+	ssize_t (*splice_read)(struct socket *, loff_t *, struct pipe_inode_info *, size_t, unsigned int);
+	void (*splice_eof)(struct socket *);
+	int (*set_peek_off)(struct sock *, int);
+	int (*peek_len)(struct socket *);
+	int (*read_sock)(struct sock *, read_descriptor_t *, sk_read_actor_t);
+	int (*read_skb)(struct sock *, skb_read_actor_t);
+	int (*sendmsg_locked)(struct sock *, struct msghdr *, size_t);
+	int (*set_rcvlowat)(struct sock *, int);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct request_sock;
+
+struct request_sock_ops {
+	int family;
+	unsigned int obj_size;
+	struct kmem_cache *slab;
+	char *slab_name;
+	int (*rtx_syn_ack)(const struct sock *, struct request_sock *);
+	void (*send_ack)(const struct sock *, struct sk_buff *, struct request_sock *);
+	void (*send_reset)(const struct sock *, struct sk_buff *);
+	void (*destructor)(struct request_sock *);
+	void (*syn_ack_timeout)(const struct request_sock *);
+};
+
+struct saved_syn;
+
+struct request_sock {
+	struct sock_common __req_common;
+	struct request_sock *dl_next;
+	u16 mss;
+	u8 num_retrans;
+	u8 syncookie: 1;
+	u8 num_timeout: 7;
+	u32 ts_recent;
+	struct timer_list rsk_timer;
+	const struct request_sock_ops *rsk_ops;
+	struct sock *sk;
+	struct saved_syn *saved_syn;
+	u32 secid;
+	u32 peer_secid;
+	u32 timeout;
+};
+
+struct saved_syn {
+	u32 mac_hdrlen;
+	u32 network_hdrlen;
+	u32 tcp_hdrlen;
+	u8 data[0];
+};
+
+struct timewait_sock_ops {
+	struct kmem_cache *twsk_slab;
+	char *twsk_slab_name;
+	unsigned int twsk_obj_size;
+	int (*twsk_unique)(struct sock *, struct sock *, void *);
+	void (*twsk_destructor)(struct sock *);
+};
+
+struct sk_filter {
+	refcount_t refcnt;
+	struct callback_head rcu;
+	struct bpf_prog *prog;
+};
+
+struct xfrm_mark {
+	__u32 v;
+	__u32 m;
+};
+
+typedef union {
+	__be32 a4;
+	__be32 a6[4];
+	struct in6_addr in6;
+} xfrm_address_t;
+
+struct xfrm_selector {
+	xfrm_address_t daddr;
+	xfrm_address_t saddr;
+	__be16 dport;
+	__be16 dport_mask;
+	__be16 sport;
+	__be16 sport_mask;
+	__u16 family;
+	__u8 prefixlen_d;
+	__u8 prefixlen_s;
+	__u8 proto;
+	int ifindex;
+	__kernel_uid32_t user;
+};
+
+struct xfrm_lifetime_cfg {
+	__u64 soft_byte_limit;
+	__u64 hard_byte_limit;
+	__u64 soft_packet_limit;
+	__u64 hard_packet_limit;
+	__u64 soft_add_expires_seconds;
+	__u64 hard_add_expires_seconds;
+	__u64 soft_use_expires_seconds;
+	__u64 hard_use_expires_seconds;
+};
+
+struct xfrm_lifetime_cur {
+	__u64 bytes;
+	__u64 packets;
+	__u64 add_time;
+	__u64 use_time;
+};
+
+struct xfrm_policy_walk_entry {
+	struct list_head all;
+	u8 dead;
+};
+
+struct xfrm_policy_queue {
+	struct sk_buff_head hold_queue;
+	struct timer_list hold_timer;
+	unsigned long timeout;
+};
+
+struct xfrm_id {
+	xfrm_address_t daddr;
+	__be32 spi;
+	__u8 proto;
+};
+
+struct xfrm_tmpl {
+	struct xfrm_id id;
+	xfrm_address_t saddr;
+	unsigned short encap_family;
+	u32 reqid;
+	u8 mode;
+	u8 share;
+	u8 optional;
+	u8 allalgs;
+	u32 aalgos;
+	u32 ealgos;
+	u32 calgos;
+};
+
+struct xfrm_dev_offload {
+	struct net_device *dev;
+	netdevice_tracker dev_tracker;
+	struct net_device *real_dev;
+	unsigned long offload_handle;
+	u8 dir: 2;
+	u8 type: 2;
+	u8 flags: 2;
+};
+
+struct xfrm_sec_ctx;
+
+struct xfrm_policy {
+	possible_net_t xp_net;
+	struct hlist_node bydst;
+	struct hlist_node byidx;
+	rwlock_t lock;
+	refcount_t refcnt;
+	u32 pos;
+	struct timer_list timer;
+	atomic_t genid;
+	u32 priority;
+	u32 index;
+	u32 if_id;
+	struct xfrm_mark mark;
+	struct xfrm_selector selector;
+	struct xfrm_lifetime_cfg lft;
+	struct xfrm_lifetime_cur curlft;
+	struct xfrm_policy_walk_entry walk;
+	struct xfrm_policy_queue polq;
+	bool bydst_reinsert;
+	u8 type;
+	u8 action;
+	u8 flags;
+	u8 xfrm_nr;
+	u16 family;
+	struct xfrm_sec_ctx *security;
+	struct xfrm_tmpl xfrm_vec[6];
+	struct hlist_node bydst_inexact_list;
+	struct callback_head rcu;
+	struct xfrm_dev_offload xdo;
+};
+
+struct sock_reuseport {
+	struct callback_head rcu;
+	u16 max_socks;
+	u16 num_socks;
+	u16 num_closed_socks;
+	u16 incoming_cpu;
+	unsigned int synq_overflow_ts;
+	unsigned int reuseport_id;
+	unsigned int bind_inany: 1;
+	unsigned int has_conns: 1;
+	struct bpf_prog __attribute__((btf_type_tag("rcu"))) *prog;
+	struct sock *socks[0];
+};
+
+struct fs_struct {
+	int users;
+	spinlock_t lock;
+	seqcount_spinlock_t seq;
+	int umask;
+	int in_exec;
+	struct path root;
+	struct path pwd;
+};
+
+struct ld_semaphore {
+	atomic_long_t count;
+	raw_spinlock_t wait_lock;
+	unsigned int wait_readers;
+	struct list_head read_wait;
+	struct list_head write_wait;
+};
+
+typedef unsigned int tcflag_t;
+
+typedef unsigned char cc_t;
+
+typedef unsigned int speed_t;
+
+struct ktermios {
+	tcflag_t c_iflag;
+	tcflag_t c_oflag;
+	tcflag_t c_cflag;
+	tcflag_t c_lflag;
+	cc_t c_line;
+	cc_t c_cc[19];
+	speed_t c_ispeed;
+	speed_t c_ospeed;
+};
+
+struct winsize {
+	unsigned short ws_row;
+	unsigned short ws_col;
+	unsigned short ws_xpixel;
+	unsigned short ws_ypixel;
+};
+
+struct tty_driver;
+
+struct tty_port;
+
+struct tty_operations;
+
+struct tty_ldisc;
+
+struct tty_struct {
+	struct kref kref;
+	int index;
+	struct device *dev;
+	struct tty_driver *driver;
+	struct tty_port *port;
+	const struct tty_operations *ops;
+	struct tty_ldisc *ldisc;
+	struct ld_semaphore ldisc_sem;
+	struct mutex atomic_write_lock;
+	struct mutex legacy_mutex;
+	struct mutex throttle_mutex;
+	struct rw_semaphore termios_rwsem;
+	struct mutex winsize_mutex;
+	struct ktermios termios;
+	struct ktermios termios_locked;
+	char name[64];
+	unsigned long flags;
+	int count;
+	unsigned int receive_room;
+	struct winsize winsize;
+	struct {
+		spinlock_t lock;
+		bool stopped;
+		bool tco_stopped;
+		unsigned long unused[0];
+	} flow;
+	struct {
+		struct pid *pgrp;
+		struct pid *session;
+		spinlock_t lock;
+		unsigned char pktstatus;
+		bool packet;
+		unsigned long unused[0];
+	} ctrl;
+	bool hw_stopped;
+	bool closing;
+	int flow_change;
+	struct tty_struct *link;
+	struct fasync_struct *fasync;
+	wait_queue_head_t write_wait;
+	wait_queue_head_t read_wait;
+	struct work_struct hangup_work;
+	void *disc_data;
+	void *driver_data;
+	spinlock_t files_lock;
+	int write_cnt;
+	unsigned char *write_buf;
+	struct list_head tty_files;
+	struct work_struct SAK_work;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct tty_driver {
+	struct kref kref;
+	struct cdev **cdevs;
+	struct module *owner;
+	const char *driver_name;
+	const char *name;
+	int name_base;
+	int major;
+	int minor_start;
+	unsigned int num;
+	short type;
+	short subtype;
+	struct ktermios init_termios;
+	unsigned long flags;
+	struct proc_dir_entry *proc_entry;
+	struct tty_driver *other;
+	struct tty_struct **ttys;
+	struct tty_port **ports;
+	struct ktermios **termios;
+	void *driver_state;
+	const struct tty_operations *ops;
+	struct list_head tty_drivers;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct __kfifo {
+	unsigned int in;
+	unsigned int out;
+	unsigned int mask;
+	unsigned int esize;
+	void *data;
+};
+
+struct tty_buffer {
+	union {
+		struct tty_buffer *next;
+		struct llist_node free;
+	};
+	unsigned int used;
+	unsigned int size;
+	unsigned int commit;
+	unsigned int lookahead;
+	unsigned int read;
+	bool flags;
+	long: 0;
+	u8 data[0];
+};
+
+struct tty_bufhead {
+	struct tty_buffer *head;
+	struct work_struct work;
+	struct mutex lock;
+	atomic_t priority;
+	struct tty_buffer sentinel;
+	struct llist_head free;
+	atomic_t mem_used;
+	int mem_limit;
+	struct tty_buffer *tail;
+};
+
+struct tty_port_operations;
+
+struct tty_port_client_operations;
+
+struct tty_port {
+	struct tty_bufhead buf;
+	struct tty_struct *tty;
+	struct tty_struct *itty;
+	const struct tty_port_operations *ops;
+	const struct tty_port_client_operations *client_ops;
+	spinlock_t lock;
+	int blocked_open;
+	int count;
+	wait_queue_head_t open_wait;
+	wait_queue_head_t delta_msr_wait;
+	unsigned long flags;
+	unsigned long iflags;
+	unsigned char console: 1;
+	struct mutex mutex;
+	struct mutex buf_mutex;
+	unsigned char *xmit_buf;
+	struct {
+		union {
+			struct __kfifo kfifo;
+			unsigned char *type;
+			const unsigned char *const_type;
+			char (*rectype)[0];
+			unsigned char *ptr;
+			const unsigned char *ptr_const;
+		};
+		unsigned char buf[0];
+	} xmit_fifo;
+	unsigned int close_delay;
+	unsigned int closing_wait;
+	int drain_delay;
+	struct kref kref;
+	void *client_data;
+	u64 android_kabi_reserved1;
+};
+
+struct tty_port_operations {
+	bool (*carrier_raised)(struct tty_port *);
+	void (*dtr_rts)(struct tty_port *, bool);
+	void (*shutdown)(struct tty_port *);
+	int (*activate)(struct tty_port *, struct tty_struct *);
+	void (*destruct)(struct tty_port *);
+	u64 android_kabi_reserved1;
+};
+
+struct tty_port_client_operations {
+	size_t (*receive_buf)(struct tty_port *, const u8 *, const u8 *, size_t);
+	void (*lookahead_buf)(struct tty_port *, const u8 *, const u8 *, size_t);
+	void (*write_wakeup)(struct tty_port *);
+};
+
+struct serial_icounter_struct;
+
+struct serial_struct;
+
+struct tty_operations {
+	struct tty_struct * (*lookup)(struct tty_driver *, struct file *, int);
+	int (*install)(struct tty_driver *, struct tty_struct *);
+	void (*remove)(struct tty_driver *, struct tty_struct *);
+	int (*open)(struct tty_struct *, struct file *);
+	void (*close)(struct tty_struct *, struct file *);
+	void (*shutdown)(struct tty_struct *);
+	void (*cleanup)(struct tty_struct *);
+	ssize_t (*write)(struct tty_struct *, const u8 *, size_t);
+	int (*put_char)(struct tty_struct *, u8);
+	void (*flush_chars)(struct tty_struct *);
+	unsigned int (*write_room)(struct tty_struct *);
+	unsigned int (*chars_in_buffer)(struct tty_struct *);
+	int (*ioctl)(struct tty_struct *, unsigned int, unsigned long);
+	long (*compat_ioctl)(struct tty_struct *, unsigned int, unsigned long);
+	void (*set_termios)(struct tty_struct *, const struct ktermios *);
+	void (*throttle)(struct tty_struct *);
+	void (*unthrottle)(struct tty_struct *);
+	void (*stop)(struct tty_struct *);
+	void (*start)(struct tty_struct *);
+	void (*hangup)(struct tty_struct *);
+	int (*break_ctl)(struct tty_struct *, int);
+	void (*flush_buffer)(struct tty_struct *);
+	void (*set_ldisc)(struct tty_struct *);
+	void (*wait_until_sent)(struct tty_struct *, int);
+	void (*send_xchar)(struct tty_struct *, char);
+	int (*tiocmget)(struct tty_struct *);
+	int (*tiocmset)(struct tty_struct *, unsigned int, unsigned int);
+	int (*resize)(struct tty_struct *, struct winsize *);
+	int (*get_icount)(struct tty_struct *, struct serial_icounter_struct *);
+	int (*get_serial)(struct tty_struct *, struct serial_struct *);
+	int (*set_serial)(struct tty_struct *, struct serial_struct *);
+	void (*show_fdinfo)(struct tty_struct *, struct seq_file *);
+	int (*proc_show)(struct seq_file *, void *);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct tty_ldisc_ops;
+
+struct tty_ldisc {
+	struct tty_ldisc_ops *ops;
+	struct tty_struct *tty;
+};
+
+struct tty_ldisc_ops {
+	char *name;
+	int num;
+	int (*open)(struct tty_struct *);
+	void (*close)(struct tty_struct *);
+	void (*flush_buffer)(struct tty_struct *);
+	ssize_t (*read)(struct tty_struct *, struct file *, u8 *, size_t, void **, unsigned long);
+	ssize_t (*write)(struct tty_struct *, struct file *, const u8 *, size_t);
+	int (*ioctl)(struct tty_struct *, unsigned int, unsigned long);
+	int (*compat_ioctl)(struct tty_struct *, unsigned int, unsigned long);
+	void (*set_termios)(struct tty_struct *, const struct ktermios *);
+	__poll_t (*poll)(struct tty_struct *, struct file *, struct poll_table_struct *);
+	void (*hangup)(struct tty_struct *);
+	void (*receive_buf)(struct tty_struct *, const u8 *, const u8 *, size_t);
+	void (*write_wakeup)(struct tty_struct *);
+	void (*dcd_change)(struct tty_struct *, bool);
+	size_t (*receive_buf2)(struct tty_struct *, const u8 *, const u8 *, size_t);
+	void (*lookahead_buf)(struct tty_struct *, const u8 *, const u8 *, size_t);
+	struct module *owner;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+enum {
+	Root_NFS = 255,
+	Root_CIFS = 254,
+	Root_Generic = 253,
+	Root_RAM0 = 1048576,
+};
+
+struct minix_super_block {
+	__u16 s_ninodes;
+	__u16 s_nzones;
+	__u16 s_imap_blocks;
+	__u16 s_zmap_blocks;
+	__u16 s_firstdatazone;
+	__u16 s_log_zone_size;
+	__u32 s_max_size;
+	__u16 s_magic;
+	__u16 s_state;
+	__u32 s_zones;
+};
+
+struct romfs_super_block {
+	__be32 word0;
+	__be32 word1;
+	__be32 size;
+	__be32 checksum;
+	char name[0];
+};
+
+struct cramfs_info {
+	__u32 crc;
+	__u32 edition;
+	__u32 blocks;
+	__u32 files;
+};
+
+struct cramfs_inode {
+	__u32 mode: 16;
+	__u32 uid: 16;
+	__u32 size: 24;
+	__u32 gid: 8;
+	__u32 namelen: 6;
+	__u32 offset: 26;
+};
+
+struct cramfs_super {
+	__u32 magic;
+	__u32 size;
+	__u32 flags;
+	__u32 future;
+	__u8 signature[16];
+	struct cramfs_info fsid;
+	__u8 name[16];
+	struct cramfs_inode root;
+};
+
+typedef __u16 __le16;
+
+typedef __u64 __le64;
+
+struct squashfs_super_block {
+	__le32 s_magic;
+	__le32 inodes;
+	__le32 mkfs_time;
+	__le32 block_size;
+	__le32 fragments;
+	__le16 compression;
+	__le16 block_log;
+	__le16 flags;
+	__le16 no_ids;
+	__le16 s_major;
+	__le16 s_minor;
+	__le64 root_inode;
+	__le64 bytes_used;
+	__le64 id_table_start;
+	__le64 xattr_id_table_start;
+	__le64 inode_table_start;
+	__le64 directory_table_start;
+	__le64 fragment_table_start;
+	__le64 lookup_table_start;
+};
+
+typedef int (*decompress_fn)(unsigned char *, long, long (*)(void *, unsigned long), long (*)(void *, unsigned long), unsigned char *, long *, void (*)(char *));
+
+struct subprocess_info {
+	struct work_struct work;
+	struct completion *complete;
+	const char *path;
+	char **argv;
+	char **envp;
+	int wait;
+	int retval;
+	int (*init)(struct subprocess_info *, struct cred *);
+	void (*cleanup)(struct subprocess_info *);
+	void *data;
+};
+
+typedef u64 async_cookie_t;
+
+struct async_domain {
+	struct list_head pending;
+	unsigned int registered: 1;
+};
+
+enum state {
+	Start = 0,
+	Collect = 1,
+	GotHeader = 2,
+	SkipIt = 3,
+	GotName = 4,
+	CopyFile = 5,
+	GotSymlink = 6,
+	Reset = 7,
+};
+
+struct hash {
+	int ino;
+	int minor;
+	int major;
+	umode_t mode;
+	struct hash *next;
+	char name[4098];
+};
+
+enum umh_disable_depth {
+	UMH_ENABLED = 0,
+	UMH_FREEZING = 1,
+	UMH_DISABLED = 2,
+};
+
+struct dir_entry {
+	struct list_head list;
+	time64_t mtime;
+	char name[0];
+};
+
+typedef void (*async_func_t)(void *, async_cookie_t);
+
+enum dbg_active_el {
+	DBG_ACTIVE_EL0 = 0,
+	DBG_ACTIVE_EL1 = 1,
+};
+
+typedef unsigned long uintptr_t;
+
+struct step_hook {
+	struct list_head node;
+	int (*fn)(struct pt_regs *, unsigned long);
+};
+
+struct break_hook {
+	struct list_head node;
+	int (*fn)(struct pt_regs *, unsigned long);
+	u16 imm;
+	u16 mask;
+};
+
+struct nmi_ctx {
+	u64 hcr;
+	unsigned int cnt;
+};
+
+enum vec_type {
+	ARM64_VEC_SVE = 0,
+	ARM64_VEC_SME = 1,
+	ARM64_VEC_MAX = 2,
+};
+
+struct vl_info {
+	enum vec_type type;
+	const char *name;
+	int min_vl;
+	int max_vl;
+	int max_virtualisable_vl;
+	unsigned long vq_map[8];
+	unsigned long vq_partial_map[8];
+};
+
+struct cpu_fp_state {
+	struct user_fpsimd_state *st;
+	void *sve_state;
+	void *sme_state;
+	u64 *svcr;
+	unsigned int sve_vl;
+	unsigned int sme_vl;
+	enum fp_type *fp_type;
+	enum fp_type to_save;
+};
+
+struct vl_config {
+	int __default_vl;
+};
+
+enum cpu_pm_event {
+	CPU_PM_ENTER = 0,
+	CPU_PM_ENTER_FAILED = 1,
+	CPU_PM_EXIT = 2,
+	CPU_CLUSTER_PM_ENTER = 3,
+	CPU_CLUSTER_PM_ENTER_FAILED = 4,
+	CPU_CLUSTER_PM_EXIT = 5,
+};
+
+struct midr_range {
+	u32 model;
+	u32 rv_min;
+	u32 rv_max;
+};
+
+struct arm64_midr_revidr;
+
+struct arm64_cpu_capabilities {
+	const char *desc;
+	u16 capability;
+	u16 type;
+	bool (*matches)(const struct arm64_cpu_capabilities *, int);
+	void (*cpu_enable)(const struct arm64_cpu_capabilities *);
+	union {
+		struct {
+			struct midr_range midr_range;
+			const struct arm64_midr_revidr * const fixed_revs;
+		};
+		const struct midr_range *midr_range_list;
+		struct {
+			u32 sys_reg;
+			u8 field_pos;
+			u8 field_width;
+			u8 min_field_value;
+			u8 hwcap_type;
+			bool sign;
+			unsigned long hwcap;
+		};
+	};
+	const struct arm64_cpu_capabilities *match_list;
+};
+
+struct arm64_midr_revidr {
+	u32 midr_rv;
+	u32 revidr_mask;
+};
+
+enum arm64_hyp_spectre_vector {
+	HYP_VECTOR_DIRECT = 0,
+	HYP_VECTOR_SPECTRE_DIRECT = 1,
+	HYP_VECTOR_INDIRECT = 2,
+	HYP_VECTOR_SPECTRE_INDIRECT = 3,
+};
+
+typedef void (*bp_hardening_cb_t)();
+
+struct bp_hardening_data {
+	enum arm64_hyp_spectre_vector slot;
+	bp_hardening_cb_t fn;
+};
+
+struct stack_info {
+	unsigned long low;
+	unsigned long high;
+};
+
+struct plist_head {
+	struct list_head node_list;
+};
+
+enum pm_qos_type {
+	PM_QOS_UNITIALIZED = 0,
+	PM_QOS_MAX = 1,
+	PM_QOS_MIN = 2,
+};
+
+struct pm_qos_constraints {
+	struct plist_head list;
+	s32 target_value;
+	s32 default_value;
+	s32 no_constraint_value;
+	enum pm_qos_type type;
+	struct blocking_notifier_head *notifiers;
+};
+
+struct freq_constraints {
+	struct pm_qos_constraints min_freq;
+	struct blocking_notifier_head min_freq_notifiers;
+	struct pm_qos_constraints max_freq;
+	struct blocking_notifier_head max_freq_notifiers;
+};
+
+struct pm_qos_flags {
+	struct list_head list;
+	s32 effective_flags;
+};
+
+struct dev_pm_qos_request;
+
+struct dev_pm_qos {
+	struct pm_qos_constraints resume_latency;
+	struct pm_qos_constraints latency_tolerance;
+	struct freq_constraints freq;
+	struct pm_qos_flags flags;
+	struct dev_pm_qos_request *resume_latency_req;
+	struct dev_pm_qos_request *latency_tolerance_req;
+	struct dev_pm_qos_request *flags_req;
+};
+
+struct pm_qos_flags_request {
+	struct list_head node;
+	s32 flags;
+};
+
+enum freq_qos_req_type {
+	FREQ_QOS_MIN = 1,
+	FREQ_QOS_MAX = 2,
+};
+
+struct freq_qos_request {
+	enum freq_qos_req_type type;
+	struct plist_node pnode;
+	struct freq_constraints *qos;
+	u64 android_oem_data1;
+};
+
+enum dev_pm_qos_req_type {
+	DEV_PM_QOS_RESUME_LATENCY = 1,
+	DEV_PM_QOS_LATENCY_TOLERANCE = 2,
+	DEV_PM_QOS_MIN_FREQUENCY = 3,
+	DEV_PM_QOS_MAX_FREQUENCY = 4,
+	DEV_PM_QOS_FLAGS = 5,
+};
+
+struct dev_pm_qos_request {
+	enum dev_pm_qos_req_type type;
+	union {
+		struct plist_node pnode;
+		struct pm_qos_flags_request flr;
+		struct freq_qos_request freq;
+	} data;
+	struct device *dev;
+};
+
+enum reboot_mode {
+	REBOOT_UNDEFINED = -1,
+	REBOOT_COLD = 0,
+	REBOOT_WARM = 1,
+	REBOOT_HARD = 2,
+	REBOOT_SOFT = 3,
+	REBOOT_GPIO = 4,
+};
+
+enum {
+	UNAME26 = 131072,
+	ADDR_NO_RANDOMIZE = 262144,
+	FDPIC_FUNCPTRS = 524288,
+	MMAP_PAGE_ZERO = 1048576,
+	ADDR_COMPAT_LAYOUT = 2097152,
+	READ_IMPLIES_EXEC = 4194304,
+	ADDR_LIMIT_32BIT = 8388608,
+	SHORT_INODE = 16777216,
+	WHOLE_SECONDS = 33554432,
+	STICKY_TIMEOUTS = 67108864,
+	ADDR_LIMIT_3GB = 134217728,
+};
+
+typedef bool (*stack_trace_consume_fn)(void *, unsigned long);
+
+struct kernel_clone_args {
+	u64 flags;
+	int __attribute__((btf_type_tag("user"))) *pidfd;
+	int __attribute__((btf_type_tag("user"))) *child_tid;
+	int __attribute__((btf_type_tag("user"))) *parent_tid;
+	const char *name;
+	int exit_signal;
+	u32 kthread: 1;
+	u32 io_thread: 1;
+	u32 user_worker: 1;
+	u32 no_files: 1;
+	unsigned long stack;
+	unsigned long stack_size;
+	unsigned long tls;
+	pid_t *set_tid;
+	size_t set_tid_size;
+	int cgroup;
+	int idle;
+	int (*fn)(void *);
+	void *fn_arg;
+	struct cgroup *cgrp;
+	struct css_set *cset;
+};
+
+struct wchan_info {
+	unsigned long pc;
+	int count;
+};
+
+typedef __u16 Elf32_Half;
+
+typedef __u32 Elf32_Addr;
+
+typedef __u32 Elf32_Off;
+
+struct elf32_hdr {
+	unsigned char e_ident[16];
+	Elf32_Half e_type;
+	Elf32_Half e_machine;
+	Elf32_Word e_version;
+	Elf32_Addr e_entry;
+	Elf32_Off e_phoff;
+	Elf32_Off e_shoff;
+	Elf32_Word e_flags;
+	Elf32_Half e_ehsize;
+	Elf32_Half e_phentsize;
+	Elf32_Half e_phnum;
+	Elf32_Half e_shentsize;
+	Elf32_Half e_shnum;
+	Elf32_Half e_shstrndx;
+};
+
+struct arch_elf_state {
+	int flags;
+};
+
+typedef void (*btf_trace_sys_enter)(void *, struct pt_regs *, long);
+
+typedef void (*btf_trace_sys_exit)(void *, struct pt_regs *, long);
+
+struct pt_regs_offset {
+	const char *name;
+	int offset;
+};
+
+struct user_regset;
+
+struct user_regset_view {
+	const char *name;
+	const struct user_regset *regsets;
+	unsigned int n;
+	u32 e_flags;
+	u16 e_machine;
+	u8 ei_osabi;
+};
+
+struct membuf;
+
+typedef int user_regset_get2_fn(struct task_struct *, const struct user_regset *, struct membuf);
+
+typedef int user_regset_set_fn(struct task_struct *, const struct user_regset *, unsigned int, unsigned int, const void *, const void __attribute__((btf_type_tag("user"))) *);
+
+typedef int user_regset_active_fn(struct task_struct *, const struct user_regset *);
+
+typedef int user_regset_writeback_fn(struct task_struct *, const struct user_regset *, int);
+
+struct user_regset {
+	user_regset_get2_fn *regset_get;
+	user_regset_set_fn *set;
+	user_regset_active_fn *active;
+	user_regset_writeback_fn *writeback;
+	unsigned int n;
+	unsigned int size;
+	unsigned int align;
+	unsigned int bias;
+	unsigned int core_note_type;
+};
+
+struct membuf {
+	void *p;
+	size_t left;
+};
+
+enum compat_regset {
+	REGSET_COMPAT_GPR = 0,
+	REGSET_COMPAT_VFP = 1,
+};
+
+enum ptrace_syscall_dir {
+	PTRACE_SYSCALL_ENTER = 0,
+	PTRACE_SYSCALL_EXIT = 1,
+};
+
+enum {
+	TRACE_EVENT_FL_FILTERED = 1,
+	TRACE_EVENT_FL_CAP_ANY = 2,
+	TRACE_EVENT_FL_NO_SET_FILTER = 4,
+	TRACE_EVENT_FL_IGNORE_ENABLE = 8,
+	TRACE_EVENT_FL_TRACEPOINT = 16,
+	TRACE_EVENT_FL_DYNAMIC = 32,
+	TRACE_EVENT_FL_KPROBE = 64,
+	TRACE_EVENT_FL_UPROBE = 128,
+	TRACE_EVENT_FL_EPROBE = 256,
+	TRACE_EVENT_FL_FPROBE = 512,
+	TRACE_EVENT_FL_CUSTOM = 1024,
+};
+
+enum bp_type_idx {
+	TYPE_INST = 0,
+	TYPE_DATA = 1,
+	TYPE_MAX = 2,
+};
+
+enum {
+	HW_BREAKPOINT_EMPTY = 0,
+	HW_BREAKPOINT_R = 1,
+	HW_BREAKPOINT_W = 2,
+	HW_BREAKPOINT_RW = 3,
+	HW_BREAKPOINT_X = 4,
+	HW_BREAKPOINT_INVALID = 7,
+};
+
+enum {
+	HW_BREAKPOINT_LEN_1 = 1,
+	HW_BREAKPOINT_LEN_2 = 2,
+	HW_BREAKPOINT_LEN_3 = 3,
+	HW_BREAKPOINT_LEN_4 = 4,
+	HW_BREAKPOINT_LEN_5 = 5,
+	HW_BREAKPOINT_LEN_6 = 6,
+	HW_BREAKPOINT_LEN_7 = 7,
+	HW_BREAKPOINT_LEN_8 = 8,
+};
+
+enum perf_type_id {
+	PERF_TYPE_HARDWARE = 0,
+	PERF_TYPE_SOFTWARE = 1,
+	PERF_TYPE_TRACEPOINT = 2,
+	PERF_TYPE_HW_CACHE = 3,
+	PERF_TYPE_RAW = 4,
+	PERF_TYPE_BREAKPOINT = 5,
+	PERF_TYPE_MAX = 6,
+};
+
+typedef u32 compat_ulong_t;
+
+struct trace_event_raw_sys_enter {
+	struct trace_entry ent;
+	long id;
+	unsigned long args[6];
+	char __data[0];
+};
+
+struct trace_event_raw_sys_exit {
+	struct trace_entry ent;
+	long id;
+	long ret;
+	char __data[0];
+};
+
+struct seccomp_data {
+	int nr;
+	__u32 arch;
+	__u64 instruction_pointer;
+	__u64 args[6];
+};
+
+struct user_sve_header {
+	__u32 size;
+	__u32 max_size;
+	__u16 vl;
+	__u16 max_vl;
+	__u16 flags;
+	__u16 __reserved;
+};
+
+struct trace_event_data_offsets_sys_enter {};
+
+struct trace_event_data_offsets_sys_exit {};
+
+struct user_za_header {
+	__u32 size;
+	__u32 max_size;
+	__u16 vl;
+	__u16 max_vl;
+	__u16 flags;
+	__u16 __reserved;
+};
+
+struct user_pac_mask {
+	__u64 data_mask;
+	__u64 insn_mask;
+};
+
+struct hypervisor_ops {
+	void (*page_relinquish)(struct page *);
+	void (*post_page_relinquish_tlb_inv)();
+};
+
+struct mpidr_hash {
+	u64 mask;
+	u32 shift_aff[4];
+	u32 bits;
+};
+
+typedef phys_addr_t resource_size_t;
+
+struct resource {
+	resource_size_t start;
+	resource_size_t end;
+	const char *name;
+	unsigned long flags;
+	unsigned long desc;
+	struct resource *parent;
+	struct resource *sibling;
+	struct resource *child;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+enum memblock_flags {
+	MEMBLOCK_NONE = 0,
+	MEMBLOCK_HOTPLUG = 1,
+	MEMBLOCK_MIRROR = 2,
+	MEMBLOCK_NOMAP = 4,
+	MEMBLOCK_DRIVER_MANAGED = 8,
+};
+
+struct cpu {
+	int node_id;
+	int hotpluggable;
+	struct device dev;
+};
+
+struct memblock_region;
+
+struct memblock_type {
+	unsigned long cnt;
+	unsigned long max;
+	phys_addr_t total_size;
+	struct memblock_region *regions;
+	char *name;
+};
+
+struct memblock_region {
+	phys_addr_t base;
+	phys_addr_t size;
+	enum memblock_flags flags;
+};
+
+struct cpu_operations {
+	const char *name;
+	int (*cpu_init)(unsigned int);
+	int (*cpu_prepare)(unsigned int);
+	int (*cpu_boot)(unsigned int);
+	void (*cpu_postboot)();
+	bool (*cpu_can_disable)(unsigned int);
+	int (*cpu_disable)(unsigned int);
+	void (*cpu_die)(unsigned int);
+	int (*cpu_kill)(unsigned int);
+};
+
+struct atomic_notifier_head {
+	spinlock_t lock;
+	struct notifier_block __attribute__((btf_type_tag("rcu"))) *head;
+};
+
+struct siginfo {
+	union {
+		struct {
+			int si_signo;
+			int si_errno;
+			int si_code;
+			union __sifields _sifields;
+		};
+		int _si_pad[32];
+	};
+};
+
+struct sigaltstack {
+	void __attribute__((btf_type_tag("user"))) *ss_sp;
+	int ss_flags;
+	__kernel_size_t ss_size;
+};
+
+typedef struct sigaltstack stack_t;
+
+struct sigcontext {
+	__u64 fault_address;
+	__u64 regs[31];
+	__u64 sp;
+	__u64 pc;
+	__u64 pstate;
+	long: 64;
+	__u8 __reserved[4096];
+};
+
+struct ucontext {
+	unsigned long uc_flags;
+	struct ucontext *uc_link;
+	stack_t uc_stack;
+	sigset_t uc_sigmask;
+	__u8 __unused[120];
+	long: 64;
+	struct sigcontext uc_mcontext;
+};
+
+struct rt_sigframe {
+	struct siginfo info;
+	struct ucontext uc;
+};
+
+struct _aarch64_ctx {
+	__u32 magic;
+	__u32 size;
+};
+
+struct fpsimd_context {
+	struct _aarch64_ctx head;
+	__u32 fpsr;
+	__u32 fpcr;
+	__uint128_t vregs[32];
+};
+
+struct sve_context {
+	struct _aarch64_ctx head;
+	__u16 vl;
+	__u16 flags;
+	__u16 __reserved[2];
+};
+
+struct tpidr2_context {
+	struct _aarch64_ctx head;
+	__u64 tpidr2;
+};
+
+struct za_context {
+	struct _aarch64_ctx head;
+	__u16 vl;
+	__u16 __reserved[3];
+};
+
+struct zt_context {
+	struct _aarch64_ctx head;
+	__u16 nregs;
+	__u16 __reserved[3];
+};
+
+struct extra_context {
+	struct _aarch64_ctx head;
+	__u64 datap;
+	__u32 size;
+	__u32 __reserved[3];
+};
+
+struct frame_record {
+	u64 fp;
+	u64 lr;
+};
+
+struct user_ctxs {
+	struct fpsimd_context __attribute__((btf_type_tag("user"))) *fpsimd;
+	u32 fpsimd_size;
+	struct sve_context __attribute__((btf_type_tag("user"))) *sve;
+	u32 sve_size;
+	struct tpidr2_context __attribute__((btf_type_tag("user"))) *tpidr2;
+	u32 tpidr2_size;
+	struct za_context __attribute__((btf_type_tag("user"))) *za;
+	u32 za_size;
+	struct zt_context __attribute__((btf_type_tag("user"))) *zt;
+	u32 zt_size;
+};
+
+struct ksignal {
+	struct k_sigaction ka;
+	kernel_siginfo_t info;
+	int sig;
+};
+
+struct rt_sigframe_user_layout {
+	struct rt_sigframe __attribute__((btf_type_tag("user"))) *sigframe;
+	struct frame_record __attribute__((btf_type_tag("user"))) *next_frame;
+	unsigned long size;
+	unsigned long limit;
+	unsigned long fpsimd_offset;
+	unsigned long esr_offset;
+	unsigned long sve_offset;
+	unsigned long tpidr2_offset;
+	unsigned long za_offset;
+	unsigned long zt_offset;
+	unsigned long extra_offset;
+	unsigned long end_offset;
+};
+
+typedef struct siginfo siginfo_t;
+
+struct esr_context {
+	struct _aarch64_ctx head;
+	__u64 esr;
+};
+
+typedef long (*syscall_fn_t)(const struct pt_regs *);
+
+enum {
+	PER_LINUX = 0,
+	PER_LINUX_32BIT = 8388608,
+	PER_LINUX_FDPIC = 524288,
+	PER_SVR4 = 68157441,
+	PER_SVR3 = 83886082,
+	PER_SCOSVR3 = 117440515,
+	PER_OSR5 = 100663299,
+	PER_WYSEV386 = 83886084,
+	PER_ISCR4 = 67108869,
+	PER_BSD = 6,
+	PER_SUNOS = 67108870,
+	PER_XENIX = 83886087,
+	PER_LINUX32 = 8,
+	PER_LINUX32_3GB = 134217736,
+	PER_IRIX32 = 67108873,
+	PER_IRIXN32 = 67108874,
+	PER_IRIX64 = 67108875,
+	PER_RISCOS = 12,
+	PER_SOLARIS = 67108877,
+	PER_UW7 = 68157454,
+	PER_OSF4 = 15,
+	PER_HPUX = 16,
+	PER_MASK = 255,
+};
+
+struct frame_tail {
+	struct frame_tail __attribute__((btf_type_tag("user"))) *fp;
+	unsigned long lr;
+};
+
+struct compat_frame_tail {
+	compat_uptr_t fp;
+	u32 sp;
+	u32 lr;
+};
+
+struct unwind_state {
+	unsigned long fp;
+	unsigned long pc;
+	struct llist_node *kr_cur;
+	struct task_struct *task;
+	struct stack_info stack;
+	struct stack_info *stacks;
+	int nr_stacks;
+};
+
+typedef bool pstate_check_t(unsigned long);
+
+struct sys64_hook {
+	unsigned long esr_mask;
+	unsigned long esr_val;
+	void (*handler)(unsigned long, struct pt_regs *);
+};
+
+enum lockdep_ok {
+	LOCKDEP_STILL_OK = 0,
+	LOCKDEP_NOW_UNRELIABLE = 1,
+};
+
+enum siginfo_layout {
+	SIL_KILL = 0,
+	SIL_TIMER = 1,
+	SIL_POLL = 2,
+	SIL_FAULT = 3,
+	SIL_FAULT_TRAPNO = 4,
+	SIL_FAULT_MCEERR = 5,
+	SIL_FAULT_BNDERR = 6,
+	SIL_FAULT_PKUERR = 7,
+	SIL_FAULT_PERF_EVENT = 8,
+	SIL_CHLD = 9,
+	SIL_RT = 10,
+	SIL_SYS = 11,
+};
+
+enum die_val {
+	DIE_UNUSED = 0,
+	DIE_OOPS = 1,
+};
+
+enum ftr_type {
+	FTR_EXACT = 0,
+	FTR_LOWER_SAFE = 1,
+	FTR_HIGHER_SAFE = 2,
+	FTR_HIGHER_OR_ZERO_SAFE = 3,
+};
+
+enum bug_trap_type {
+	BUG_TRAP_TYPE_NONE = 0,
+	BUG_TRAP_TYPE_WARN = 1,
+	BUG_TRAP_TYPE_BUG = 2,
+};
+
+struct arm64_ftr_override;
+
+struct arm64_ftr_bits;
+
+struct arm64_ftr_reg {
+	const char *name;
+	u64 strict_mask;
+	u64 user_mask;
+	u64 sys_val;
+	u64 user_val;
+	struct arm64_ftr_override *override;
+	const struct arm64_ftr_bits *ftr_bits;
+};
+
+struct arm64_ftr_override {
+	u64 val;
+	u64 mask;
+};
+
+struct arm64_ftr_bits {
+	bool sign;
+	bool visible;
+	bool strict;
+	enum ftr_type type;
+	u8 shift;
+	u8 width;
+	s64 safe_val;
+};
+
+struct vdso_timestamp {
+	u64 sec;
+	u64 nsec;
+};
+
+struct timens_offset {
+	s64 sec;
+	u64 nsec;
+};
+
+struct arch_vdso_data {};
+
+struct vdso_data {
+	u32 seq;
+	s32 clock_mode;
+	u64 cycle_last;
+	u64 mask;
+	u32 mult;
+	u32 shift;
+	union {
+		struct vdso_timestamp basetime[12];
+		struct timens_offset offset[12];
+	};
+	s32 tz_minuteswest;
+	s32 tz_dsttime;
+	u32 hrtimer_res;
+	u32 __unused;
+	struct arch_vdso_data arch_data;
+};
+
+struct vm_special_mapping;
+
+struct vdso_abi_info {
+	const char *name;
+	const char *vdso_code_start;
+	const char *vdso_code_end;
+	unsigned long vdso_pages;
+	struct vm_special_mapping *dm;
+	struct vm_special_mapping *cm;
+};
+
+struct vm_special_mapping {
+	const char *name;
+	struct page **pages;
+	vm_fault_t (*fault)(const struct vm_special_mapping *, struct vm_area_struct *, struct vm_fault *);
+	int (*mremap)(const struct vm_special_mapping *, struct vm_area_struct *);
+};
+
+struct timens_offsets {
+	struct timespec64 monotonic;
+	struct timespec64 boottime;
+};
+
+struct time_namespace {
+	struct user_namespace *user_ns;
+	struct ucounts *ucounts;
+	struct ns_common ns;
+	struct timens_offsets offsets;
+	struct page *vvar_page;
+	bool frozen_offsets;
+};
+
+enum vdso_abi {
+	VDSO_ABI_AA64 = 0,
+	VDSO_ABI_AA32 = 1,
+};
+
+enum aarch32_map {
+	AA32_MAP_VECTORS = 0,
+	AA32_MAP_SIGPAGE = 1,
+	AA32_MAP_VVAR = 2,
+	AA32_MAP_VDSO = 3,
+};
+
+enum vvar_pages {
+	VVAR_DATA_PAGE_OFFSET = 0,
+	VVAR_TIMENS_PAGE_OFFSET = 1,
+	VVAR_NR_PAGES = 2,
+};
+
+enum vm_fault_reason {
+	VM_FAULT_OOM = 1,
+	VM_FAULT_SIGBUS = 2,
+	VM_FAULT_MAJOR = 4,
+	VM_FAULT_HWPOISON = 16,
+	VM_FAULT_HWPOISON_LARGE = 32,
+	VM_FAULT_SIGSEGV = 64,
+	VM_FAULT_NOPAGE = 256,
+	VM_FAULT_LOCKED = 512,
+	VM_FAULT_RETRY = 1024,
+	VM_FAULT_FALLBACK = 2048,
+	VM_FAULT_DONE_COW = 4096,
+	VM_FAULT_NEEDDSYNC = 8192,
+	VM_FAULT_COMPLETED = 16384,
+	VM_FAULT_HINDEX_MASK = 983040,
+};
+
+enum aarch64_map {
+	AA64_MAP_VVAR = 0,
+	AA64_MAP_VDSO = 1,
+};
+
+struct maple_enode;
+
+struct maple_alloc;
+
+struct ma_state {
+	struct maple_tree *tree;
+	unsigned long index;
+	unsigned long last;
+	struct maple_enode *node;
+	unsigned long min;
+	unsigned long max;
+	struct maple_alloc *alloc;
+	unsigned char depth;
+	unsigned char offset;
+	unsigned char mas_flags;
+};
+
+struct vma_iterator {
+	struct ma_state mas;
+};
+
+struct maple_alloc {
+	unsigned long total;
+	unsigned char node_count;
+	unsigned int request_count;
+	struct maple_alloc *slot[30];
+};
+
+typedef unsigned int zap_flags_t;
+
+struct zap_details {
+	struct folio *single_folio;
+	bool even_cows;
+	zap_flags_t zap_flags;
+};
+
+struct return_address_data {
+	unsigned int level;
+	void *addr;
+};
+
+struct cpuinfo_32bit {
+	u32 reg_id_dfr0;
+	u32 reg_id_dfr1;
+	u32 reg_id_isar0;
+	u32 reg_id_isar1;
+	u32 reg_id_isar2;
+	u32 reg_id_isar3;
+	u32 reg_id_isar4;
+	u32 reg_id_isar5;
+	u32 reg_id_isar6;
+	u32 reg_id_mmfr0;
+	u32 reg_id_mmfr1;
+	u32 reg_id_mmfr2;
+	u32 reg_id_mmfr3;
+	u32 reg_id_mmfr4;
+	u32 reg_id_mmfr5;
+	u32 reg_id_pfr0;
+	u32 reg_id_pfr1;
+	u32 reg_id_pfr2;
+	u32 reg_mvfr0;
+	u32 reg_mvfr1;
+	u32 reg_mvfr2;
+};
+
+struct cpuinfo_arm64 {
+	struct cpu cpu;
+	struct kobject kobj;
+	u64 reg_ctr;
+	u64 reg_cntfrq;
+	u64 reg_dczid;
+	u64 reg_midr;
+	u64 reg_revidr;
+	u64 reg_gmid;
+	u64 reg_smidr;
+	u64 reg_id_aa64dfr0;
+	u64 reg_id_aa64dfr1;
+	u64 reg_id_aa64isar0;
+	u64 reg_id_aa64isar1;
+	u64 reg_id_aa64isar2;
+	u64 reg_id_aa64mmfr0;
+	u64 reg_id_aa64mmfr1;
+	u64 reg_id_aa64mmfr2;
+	u64 reg_id_aa64mmfr3;
+	u64 reg_id_aa64pfr0;
+	u64 reg_id_aa64pfr1;
+	u64 reg_id_aa64zfr0;
+	u64 reg_id_aa64smfr0;
+	struct cpuinfo_32bit aarch32;
+	u64 reg_zcr;
+	u64 reg_smcr;
+};
+
+struct kobj_attribute {
+	struct attribute attr;
+	ssize_t (*show)(struct kobject *, struct kobj_attribute *, char *);
+	ssize_t (*store)(struct kobject *, struct kobj_attribute *, const char *, size_t);
+};
+
+struct __ftr_reg_entry {
+	u32 sys_id;
+	struct arm64_ftr_reg *reg;
+};
+
+struct device_attribute {
+	struct attribute attr;
+	ssize_t (*show)(struct device *, struct device_attribute *, char *);
+	ssize_t (*store)(struct device *, struct device_attribute *, const char *, size_t);
+};
+
+enum aarch64_insn_imm_type {
+	AARCH64_INSN_IMM_ADR = 0,
+	AARCH64_INSN_IMM_26 = 1,
+	AARCH64_INSN_IMM_19 = 2,
+	AARCH64_INSN_IMM_16 = 3,
+	AARCH64_INSN_IMM_14 = 4,
+	AARCH64_INSN_IMM_12 = 5,
+	AARCH64_INSN_IMM_9 = 6,
+	AARCH64_INSN_IMM_7 = 7,
+	AARCH64_INSN_IMM_6 = 8,
+	AARCH64_INSN_IMM_S = 9,
+	AARCH64_INSN_IMM_R = 10,
+	AARCH64_INSN_IMM_N = 11,
+	AARCH64_INSN_IMM_MAX = 12,
+};
+
+enum aarch64_insn_register_type {
+	AARCH64_INSN_REGTYPE_RT = 0,
+	AARCH64_INSN_REGTYPE_RN = 1,
+	AARCH64_INSN_REGTYPE_RT2 = 2,
+	AARCH64_INSN_REGTYPE_RM = 3,
+	AARCH64_INSN_REGTYPE_RD = 4,
+	AARCH64_INSN_REGTYPE_RA = 5,
+	AARCH64_INSN_REGTYPE_RS = 6,
+};
+
+enum mitigation_state {
+	SPECTRE_UNAFFECTED = 0,
+	SPECTRE_MITIGATED = 1,
+	SPECTRE_VULNERABLE = 2,
+};
+
+enum kvm_mode {
+	KVM_MODE_DEFAULT = 0,
+	KVM_MODE_PROTECTED = 1,
+	KVM_MODE_NV = 2,
+	KVM_MODE_NONE = 3,
+};
+
+enum arm64_bp_harden_el1_vectors {
+	EL1_VECTOR_BHB_LOOP = 0,
+	EL1_VECTOR_BHB_FW = 1,
+	EL1_VECTOR_BHB_CLEAR_INSN = 2,
+	EL1_VECTOR_KPTI = 3,
+};
+
+enum fixed_addresses {
+	FIX_HOLE = 0,
+	FIX_FDT_END = 1,
+	FIX_FDT = 514,
+	FIX_EARLYCON_MEM_BASE = 515,
+	FIX_TEXT_POKE0 = 516,
+	FIX_ENTRY_TRAMP_TEXT4 = 517,
+	FIX_ENTRY_TRAMP_TEXT3 = 518,
+	FIX_ENTRY_TRAMP_TEXT2 = 519,
+	FIX_ENTRY_TRAMP_TEXT1 = 520,
+	__end_of_permanent_fixed_addresses = 521,
+	FIX_BTMAP_END = 521,
+	FIX_BTMAP_BEGIN = 968,
+	FIX_PTE = 969,
+	FIX_PMD = 970,
+	FIX_PUD = 971,
+	FIX_PGD = 972,
+	__end_of_fixed_addresses = 973,
+};
+
+enum pageflags {
+	PG_locked = 0,
+	PG_writeback = 1,
+	PG_referenced = 2,
+	PG_uptodate = 3,
+	PG_dirty = 4,
+	PG_lru = 5,
+	PG_head = 6,
+	PG_waiters = 7,
+	PG_active = 8,
+	PG_workingset = 9,
+	PG_error = 10,
+	PG_slab = 11,
+	PG_owner_priv_1 = 12,
+	PG_arch_1 = 13,
+	PG_reserved = 14,
+	PG_private = 15,
+	PG_private_2 = 16,
+	PG_mappedtodisk = 17,
+	PG_reclaim = 18,
+	PG_swapbacked = 19,
+	PG_unevictable = 20,
+	PG_mlocked = 21,
+	PG_arch_2 = 22,
+	PG_arch_3 = 23,
+	PG_oem_reserved_1 = 24,
+	PG_oem_reserved_2 = 25,
+	PG_oem_reserved_3 = 26,
+	PG_oem_reserved_4 = 27,
+	__NR_PAGEFLAGS = 28,
+	PG_readahead = 18,
+	PG_anon_exclusive = 17,
+	PG_checked = 12,
+	PG_swapcache = 12,
+	PG_fscache = 16,
+	PG_pinned = 12,
+	PG_savepinned = 4,
+	PG_foreign = 12,
+	PG_xen_remapped = 12,
+	PG_isolated = 18,
+	PG_reported = 3,
+	PG_vmemmap_self_hosted = 12,
+	PG_has_hwpoisoned = 10,
+	PG_large_rmappable = 9,
+};
+
+enum {
+	CAP_HWCAP = 1,
+	CAP_COMPAT_HWCAP = 2,
+	CAP_COMPAT_HWCAP2 = 3,
+};
+
+typedef int (*cmp_func_t)(const void *, const void *);
+
+typedef void kpti_remap_fn(int, int, phys_addr_t, unsigned long);
+
+typedef void ttbr_replace_func(phys_addr_t);
+
+typedef int (*cpu_stop_fn_t)(void *);
+
+struct alt_instr;
+
+struct alt_region {
+	struct alt_instr *begin;
+	struct alt_instr *end;
+};
+
+struct alt_instr {
+	s32 orig_offset;
+	s32 alt_offset;
+	u16 cpucap;
+	u8 orig_len;
+	u8 alt_len;
+};
+
+enum aarch64_insn_hint_cr_op {
+	AARCH64_INSN_HINT_NOP = 0,
+	AARCH64_INSN_HINT_YIELD = 32,
+	AARCH64_INSN_HINT_WFE = 64,
+	AARCH64_INSN_HINT_WFI = 96,
+	AARCH64_INSN_HINT_SEV = 128,
+	AARCH64_INSN_HINT_SEVL = 160,
+	AARCH64_INSN_HINT_XPACLRI = 224,
+	AARCH64_INSN_HINT_PACIA_1716 = 256,
+	AARCH64_INSN_HINT_PACIB_1716 = 320,
+	AARCH64_INSN_HINT_AUTIA_1716 = 384,
+	AARCH64_INSN_HINT_AUTIB_1716 = 448,
+	AARCH64_INSN_HINT_PACIAZ = 768,
+	AARCH64_INSN_HINT_PACIASP = 800,
+	AARCH64_INSN_HINT_PACIBZ = 832,
+	AARCH64_INSN_HINT_PACIBSP = 864,
+	AARCH64_INSN_HINT_AUTIAZ = 896,
+	AARCH64_INSN_HINT_AUTIASP = 928,
+	AARCH64_INSN_HINT_AUTIBZ = 960,
+	AARCH64_INSN_HINT_AUTIBSP = 992,
+	AARCH64_INSN_HINT_ESB = 512,
+	AARCH64_INSN_HINT_PSB = 544,
+	AARCH64_INSN_HINT_TSB = 576,
+	AARCH64_INSN_HINT_CSDB = 640,
+	AARCH64_INSN_HINT_CLEARBHB = 704,
+	AARCH64_INSN_HINT_BTI = 1024,
+	AARCH64_INSN_HINT_BTIC = 1088,
+	AARCH64_INSN_HINT_BTIJ = 1152,
+	AARCH64_INSN_HINT_BTIJC = 1216,
+};
+
+typedef __u64 Elf64_Off;
+
+struct elf64_hdr {
+	unsigned char e_ident[16];
+	Elf64_Half e_type;
+	Elf64_Half e_machine;
+	Elf64_Word e_version;
+	Elf64_Addr e_entry;
+	Elf64_Off e_phoff;
+	Elf64_Off e_shoff;
+	Elf64_Word e_flags;
+	Elf64_Half e_ehsize;
+	Elf64_Half e_phentsize;
+	Elf64_Half e_phnum;
+	Elf64_Half e_shentsize;
+	Elf64_Half e_shnum;
+	Elf64_Half e_shstrndx;
+};
+
+struct elf64_shdr {
+	Elf64_Word sh_name;
+	Elf64_Word sh_type;
+	Elf64_Xword sh_flags;
+	Elf64_Addr sh_addr;
+	Elf64_Off sh_offset;
+	Elf64_Xword sh_size;
+	Elf64_Word sh_link;
+	Elf64_Word sh_info;
+	Elf64_Xword sh_addralign;
+	Elf64_Xword sh_entsize;
+};
+
+typedef struct elf64_shdr Elf64_Shdr;
+
+typedef struct elf64_hdr Elf64_Ehdr;
+
+typedef void (*alternative_cb_t)(struct alt_instr *, __le32 *, __le32 *, int);
+
+enum cache_type {
+	CACHE_TYPE_NOCACHE = 0,
+	CACHE_TYPE_INST = 1,
+	CACHE_TYPE_DATA = 2,
+	CACHE_TYPE_SEPARATE = 3,
+	CACHE_TYPE_UNIFIED = 4,
+};
+
+struct cacheinfo;
+
+struct cpu_cacheinfo {
+	struct cacheinfo *info_list;
+	unsigned int num_levels;
+	unsigned int num_leaves;
+	bool cpu_map_populated;
+	bool early_ci_levels;
+};
+
+struct cacheinfo {
+	unsigned int id;
+	enum cache_type type;
+	unsigned int level;
+	unsigned int coherency_line_size;
+	unsigned int number_of_sets;
+	unsigned int ways_of_associativity;
+	unsigned int physical_line_partition;
+	unsigned int size;
+	cpumask_t shared_cpu_map;
+	unsigned int attributes;
+	void *fw_token;
+	bool disable_sysfs;
+	void *priv;
+};
+
+struct secondary_data {
+	struct task_struct *task;
+	long status;
+};
+
+struct kvm_hyp_req {
+	u8 type;
+	union {
+		struct {
+			u8 dest;
+			int nr_pages;
+			int sz_alloc;
+		} mem;
+		struct {
+			unsigned long guest_ipa;
+			size_t size;
+		} map;
+	};
+};
+
+struct msi_dev_domain {
+	struct xarray store;
+	struct irq_domain *domain;
+};
+
+struct platform_msi_priv_data;
+
+struct msi_device_data {
+	unsigned long properties;
+	struct platform_msi_priv_data *platform_data;
+	struct mutex mutex;
+	struct msi_dev_domain __domains[2];
+	unsigned long __iter_idx;
+};
+
+struct msi_desc;
+
+struct irq_common_data {
+	unsigned int state_use_accessors;
+	void *handler_data;
+	struct msi_desc *msi_desc;
+	cpumask_var_t affinity;
+	cpumask_var_t effective_affinity;
+	unsigned int ipi_offset;
+};
+
+struct irq_chip;
+
+struct irq_data {
+	u32 mask;
+	unsigned int irq;
+	unsigned long hwirq;
+	struct irq_common_data *common;
+	struct irq_chip *chip;
+	struct irq_domain *domain;
+	struct irq_data *parent_data;
+	void *chip_data;
+};
+
+struct irq_desc;
+
+typedef void (*irq_flow_handler_t)(struct irq_desc *);
+
+struct irqaction;
+
+struct irq_affinity_notify;
+
+struct irq_desc {
+	struct irq_common_data irq_common_data;
+	struct irq_data irq_data;
+	unsigned int __attribute__((btf_type_tag("percpu"))) *kstat_irqs;
+	irq_flow_handler_t handle_irq;
+	struct irqaction *action;
+	unsigned int status_use_accessors;
+	unsigned int core_internal_state__do_not_mess_with_it;
+	unsigned int depth;
+	unsigned int wake_depth;
+	unsigned int tot_count;
+	unsigned int irq_count;
+	unsigned long last_unhandled;
+	unsigned int irqs_unhandled;
+	atomic_t threads_handled;
+	int threads_handled_last;
+	raw_spinlock_t lock;
+	struct cpumask *percpu_enabled;
+	const struct cpumask *percpu_affinity;
+	const struct cpumask *affinity_hint;
+	struct irq_affinity_notify *affinity_notify;
+	unsigned long threads_oneshot;
+	atomic_t threads_active;
+	wait_queue_head_t wait_for_threads;
+	unsigned int nr_actions;
+	unsigned int no_suspend_depth;
+	unsigned int cond_suspend_depth;
+	unsigned int force_resume_depth;
+	struct proc_dir_entry *dir;
+	struct callback_head rcu;
+	struct kobject kobj;
+	struct mutex request_mutex;
+	int parent_irq;
+	struct module *owner;
+	const char *name;
+	struct hlist_node resend_node;
+	u64 android_vendor_data1;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct pci_msi_desc {
+	union {
+		u32 msi_mask;
+		u32 msix_ctrl;
+	};
+	struct {
+		u8 is_msix: 1;
+		u8 multiple: 3;
+		u8 multi_cap: 3;
+		u8 can_mask: 1;
+		u8 is_64: 1;
+		u8 is_virtual: 1;
+		unsigned int default_irq;
+	} msi_attrib;
+	union {
+		u8 mask_pos;
+		void *mask_base;
+	};
+};
+
+union msi_domain_cookie {
+	u64 value;
+	void *ptr;
+	void *iobase;
+};
+
+union msi_instance_cookie {
+	u64 value;
+	void *ptr;
+};
+
+struct msi_desc_data {
+	union msi_domain_cookie dcookie;
+	union msi_instance_cookie icookie;
+};
+
+struct arch_msi_msg_addr_lo {
+	u32 address_lo;
+};
+
+typedef struct arch_msi_msg_addr_lo arch_msi_msg_addr_lo_t;
+
+struct arch_msi_msg_addr_hi {
+	u32 address_hi;
+};
+
+typedef struct arch_msi_msg_addr_hi arch_msi_msg_addr_hi_t;
+
+struct arch_msi_msg_data {
+	u32 data;
+};
+
+typedef struct arch_msi_msg_data arch_msi_msg_data_t;
+
+struct msi_msg {
+	union {
+		u32 address_lo;
+		arch_msi_msg_addr_lo_t arch_addr_lo;
+	};
+	union {
+		u32 address_hi;
+		arch_msi_msg_addr_hi_t arch_addr_hi;
+	};
+	union {
+		u32 data;
+		arch_msi_msg_data_t arch_data;
+	};
+};
+
+struct irq_affinity_desc;
+
+struct msi_desc {
+	unsigned int irq;
+	unsigned int nvec_used;
+	struct device *dev;
+	struct msi_msg msg;
+	struct irq_affinity_desc *affinity;
+	const void *iommu_cookie;
+	struct device_attribute *sysfs_attrs;
+	void (*write_msi_msg)(struct msi_desc *, void *);
+	void *write_msi_msg_data;
+	u16 msi_index;
+	union {
+		struct pci_msi_desc pci;
+		struct msi_desc_data data;
+	};
+};
+
+struct irq_affinity_desc {
+	struct cpumask mask;
+	unsigned int is_managed: 1;
+};
+
+enum irqchip_irq_state {
+	IRQCHIP_STATE_PENDING = 0,
+	IRQCHIP_STATE_ACTIVE = 1,
+	IRQCHIP_STATE_MASKED = 2,
+	IRQCHIP_STATE_LINE_LEVEL = 3,
+};
+
+struct irq_chip {
+	const char *name;
+	unsigned int (*irq_startup)(struct irq_data *);
+	void (*irq_shutdown)(struct irq_data *);
+	void (*irq_enable)(struct irq_data *);
+	void (*irq_disable)(struct irq_data *);
+	void (*irq_ack)(struct irq_data *);
+	void (*irq_mask)(struct irq_data *);
+	void (*irq_mask_ack)(struct irq_data *);
+	void (*irq_unmask)(struct irq_data *);
+	void (*irq_eoi)(struct irq_data *);
+	int (*irq_set_affinity)(struct irq_data *, const struct cpumask *, bool);
+	int (*irq_retrigger)(struct irq_data *);
+	int (*irq_set_type)(struct irq_data *, unsigned int);
+	int (*irq_set_wake)(struct irq_data *, unsigned int);
+	void (*irq_bus_lock)(struct irq_data *);
+	void (*irq_bus_sync_unlock)(struct irq_data *);
+	void (*irq_suspend)(struct irq_data *);
+	void (*irq_resume)(struct irq_data *);
+	void (*irq_pm_shutdown)(struct irq_data *);
+	void (*irq_calc_mask)(struct irq_data *);
+	void (*irq_print_chip)(struct irq_data *, struct seq_file *);
+	int (*irq_request_resources)(struct irq_data *);
+	void (*irq_release_resources)(struct irq_data *);
+	void (*irq_compose_msi_msg)(struct irq_data *, struct msi_msg *);
+	void (*irq_write_msi_msg)(struct irq_data *, struct msi_msg *);
+	int (*irq_get_irqchip_state)(struct irq_data *, enum irqchip_irq_state, bool *);
+	int (*irq_set_irqchip_state)(struct irq_data *, enum irqchip_irq_state, bool);
+	int (*irq_set_vcpu_affinity)(struct irq_data *, void *);
+	void (*ipi_send_single)(struct irq_data *, unsigned int);
+	void (*ipi_send_mask)(struct irq_data *, const struct cpumask *);
+	int (*irq_nmi_setup)(struct irq_data *);
+	void (*irq_nmi_teardown)(struct irq_data *);
+	unsigned long flags;
+};
+
+enum irqreturn {
+	IRQ_NONE = 0,
+	IRQ_HANDLED = 1,
+	IRQ_WAKE_THREAD = 2,
+};
+
+typedef enum irqreturn irqreturn_t;
+
+typedef irqreturn_t (*irq_handler_t)(int, void *);
+
+struct irqaction {
+	irq_handler_t handler;
+	void *dev_id;
+	void __attribute__((btf_type_tag("percpu"))) *percpu_dev_id;
+	struct irqaction *next;
+	irq_handler_t thread_fn;
+	struct task_struct *thread;
+	struct irqaction *secondary;
+	unsigned int irq;
+	unsigned int flags;
+	unsigned long thread_flags;
+	unsigned long thread_mask;
+	const char *name;
+	struct proc_dir_entry *dir;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct irq_affinity_notify {
+	unsigned int irq;
+	struct kref kref;
+	struct work_struct work;
+	void (*notify)(struct irq_affinity_notify *, const cpumask_t *);
+	void (*release)(struct kref *);
+};
+
+enum ipi_msg_type {
+	IPI_RESCHEDULE = 0,
+	IPI_CALL_FUNC = 1,
+	IPI_CPU_STOP = 2,
+	IPI_CPU_CRASH_STOP = 3,
+	IPI_TIMER = 4,
+	IPI_IRQ_WORK = 5,
+	IPI_WAKEUP = 6,
+	NR_IPI = 7,
+};
+
+enum {
+	IRQ_TYPE_NONE = 0,
+	IRQ_TYPE_EDGE_RISING = 1,
+	IRQ_TYPE_EDGE_FALLING = 2,
+	IRQ_TYPE_EDGE_BOTH = 3,
+	IRQ_TYPE_LEVEL_HIGH = 4,
+	IRQ_TYPE_LEVEL_LOW = 8,
+	IRQ_TYPE_LEVEL_MASK = 12,
+	IRQ_TYPE_SENSE_MASK = 15,
+	IRQ_TYPE_DEFAULT = 15,
+	IRQ_TYPE_PROBE = 16,
+	IRQ_LEVEL = 256,
+	IRQ_PER_CPU = 512,
+	IRQ_NOPROBE = 1024,
+	IRQ_NOREQUEST = 2048,
+	IRQ_NOAUTOEN = 4096,
+	IRQ_NO_BALANCING = 8192,
+	IRQ_MOVE_PCNTXT = 16384,
+	IRQ_NESTED_THREAD = 32768,
+	IRQ_NOTHREAD = 65536,
+	IRQ_PER_CPU_DEVID = 131072,
+	IRQ_IS_POLLED = 262144,
+	IRQ_DISABLE_UNLAZY = 524288,
+	IRQ_HIDDEN = 1048576,
+	IRQ_NO_DEBUG = 2097152,
+};
+
+enum scale_freq_source {
+	SCALE_FREQ_SOURCE_CPUFREQ = 0,
+	SCALE_FREQ_SOURCE_ARCH = 1,
+	SCALE_FREQ_SOURCE_CPPC = 2,
+	SCALE_FREQ_SOURCE_VIRT = 3,
+};
+
+struct scale_freq_data {
+	enum scale_freq_source source;
+	void (*set_freq_scale)();
+};
+
+enum cpufreq_table_sorting {
+	CPUFREQ_TABLE_UNSORTED = 0,
+	CPUFREQ_TABLE_SORTED_ASCENDING = 1,
+	CPUFREQ_TABLE_SORTED_DESCENDING = 2,
+};
+
+struct cpufreq_cpuinfo {
+	unsigned int max_freq;
+	unsigned int min_freq;
+	unsigned int transition_latency;
+};
+
+struct clk;
+
+struct cpufreq_governor;
+
+struct cpufreq_frequency_table;
+
+struct cpufreq_stats;
+
+struct thermal_cooling_device;
+
+struct cpufreq_policy {
+	cpumask_var_t cpus;
+	cpumask_var_t related_cpus;
+	cpumask_var_t real_cpus;
+	unsigned int shared_type;
+	unsigned int cpu;
+	struct clk *clk;
+	struct cpufreq_cpuinfo cpuinfo;
+	unsigned int min;
+	unsigned int max;
+	unsigned int cur;
+	unsigned int suspend_freq;
+	unsigned int policy;
+	unsigned int last_policy;
+	struct cpufreq_governor *governor;
+	void *governor_data;
+	char last_governor[16];
+	struct work_struct update;
+	struct freq_constraints constraints;
+	struct freq_qos_request *min_freq_req;
+	struct freq_qos_request *max_freq_req;
+	struct cpufreq_frequency_table *freq_table;
+	enum cpufreq_table_sorting freq_table_sorted;
+	struct list_head policy_list;
+	struct kobject kobj;
+	struct completion kobj_unregister;
+	struct rw_semaphore rwsem;
+	bool fast_switch_possible;
+	bool fast_switch_enabled;
+	bool strict_target;
+	bool efficiencies_available;
+	unsigned int transition_delay_us;
+	bool dvfs_possible_from_any_cpu;
+	bool boost_enabled;
+	unsigned int cached_target_freq;
+	unsigned int cached_resolved_idx;
+	bool transition_ongoing;
+	spinlock_t transition_lock;
+	wait_queue_head_t transition_wait;
+	struct task_struct *transition_task;
+	struct cpufreq_stats *stats;
+	void *driver_data;
+	struct thermal_cooling_device *cdev;
+	struct notifier_block nb_min;
+	struct notifier_block nb_max;
+};
+
+struct cpufreq_governor {
+	char name[16];
+	int (*init)(struct cpufreq_policy *);
+	void (*exit)(struct cpufreq_policy *);
+	int (*start)(struct cpufreq_policy *);
+	void (*stop)(struct cpufreq_policy *);
+	void (*limits)(struct cpufreq_policy *);
+	ssize_t (*show_setspeed)(struct cpufreq_policy *, char *);
+	int (*store_setspeed)(struct cpufreq_policy *, unsigned int);
+	struct list_head governor_list;
+	struct module *owner;
+	u8 flags;
+};
+
+struct cpufreq_frequency_table {
+	unsigned int flags;
+	unsigned int driver_data;
+	unsigned int frequency;
+};
+
+enum spectre_v4_policy {
+	SPECTRE_V4_POLICY_MITIGATION_DYNAMIC = 0,
+	SPECTRE_V4_POLICY_MITIGATION_ENABLED = 1,
+	SPECTRE_V4_POLICY_MITIGATION_DISABLED = 2,
+};
+
+struct spectre_v4_param {
+	const char *str;
+	enum spectre_v4_policy policy;
+};
+
+enum bpf_reg_type {
+	NOT_INIT = 0,
+	SCALAR_VALUE = 1,
+	PTR_TO_CTX = 2,
+	CONST_PTR_TO_MAP = 3,
+	PTR_TO_MAP_VALUE = 4,
+	PTR_TO_MAP_KEY = 5,
+	PTR_TO_STACK = 6,
+	PTR_TO_PACKET_META = 7,
+	PTR_TO_PACKET = 8,
+	PTR_TO_PACKET_END = 9,
+	PTR_TO_FLOW_KEYS = 10,
+	PTR_TO_SOCKET = 11,
+	PTR_TO_SOCK_COMMON = 12,
+	PTR_TO_TCP_SOCK = 13,
+	PTR_TO_TP_BUFFER = 14,
+	PTR_TO_XDP_SOCK = 15,
+	PTR_TO_BTF_ID = 16,
+	PTR_TO_MEM = 17,
+	PTR_TO_BUF = 18,
+	PTR_TO_FUNC = 19,
+	CONST_PTR_TO_DYNPTR = 20,
+	__BPF_REG_TYPE_MAX = 21,
+	PTR_TO_MAP_VALUE_OR_NULL = 260,
+	PTR_TO_SOCKET_OR_NULL = 267,
+	PTR_TO_SOCK_COMMON_OR_NULL = 268,
+	PTR_TO_TCP_SOCK_OR_NULL = 269,
+	PTR_TO_BTF_ID_OR_NULL = 272,
+	__BPF_REG_TYPE_LIMIT = 33554431,
+};
+
+enum bpf_cgroup_iter_order {
+	BPF_CGROUP_ITER_ORDER_UNSPEC = 0,
+	BPF_CGROUP_ITER_SELF_ONLY = 1,
+	BPF_CGROUP_ITER_DESCENDANTS_PRE = 2,
+	BPF_CGROUP_ITER_DESCENDANTS_POST = 3,
+	BPF_CGROUP_ITER_ANCESTORS_UP = 4,
+};
+
+enum bpf_iter_task_type {
+	BPF_TASK_ITER_ALL = 0,
+	BPF_TASK_ITER_TID = 1,
+	BPF_TASK_ITER_TGID = 2,
+};
+
+enum bpf_map_type {
+	BPF_MAP_TYPE_UNSPEC = 0,
+	BPF_MAP_TYPE_HASH = 1,
+	BPF_MAP_TYPE_ARRAY = 2,
+	BPF_MAP_TYPE_PROG_ARRAY = 3,
+	BPF_MAP_TYPE_PERF_EVENT_ARRAY = 4,
+	BPF_MAP_TYPE_PERCPU_HASH = 5,
+	BPF_MAP_TYPE_PERCPU_ARRAY = 6,
+	BPF_MAP_TYPE_STACK_TRACE = 7,
+	BPF_MAP_TYPE_CGROUP_ARRAY = 8,
+	BPF_MAP_TYPE_LRU_HASH = 9,
+	BPF_MAP_TYPE_LRU_PERCPU_HASH = 10,
+	BPF_MAP_TYPE_LPM_TRIE = 11,
+	BPF_MAP_TYPE_ARRAY_OF_MAPS = 12,
+	BPF_MAP_TYPE_HASH_OF_MAPS = 13,
+	BPF_MAP_TYPE_DEVMAP = 14,
+	BPF_MAP_TYPE_SOCKMAP = 15,
+	BPF_MAP_TYPE_CPUMAP = 16,
+	BPF_MAP_TYPE_XSKMAP = 17,
+	BPF_MAP_TYPE_SOCKHASH = 18,
+	BPF_MAP_TYPE_CGROUP_STORAGE_DEPRECATED = 19,
+	BPF_MAP_TYPE_CGROUP_STORAGE = 19,
+	BPF_MAP_TYPE_REUSEPORT_SOCKARRAY = 20,
+	BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE = 21,
+	BPF_MAP_TYPE_QUEUE = 22,
+	BPF_MAP_TYPE_STACK = 23,
+	BPF_MAP_TYPE_SK_STORAGE = 24,
+	BPF_MAP_TYPE_DEVMAP_HASH = 25,
+	BPF_MAP_TYPE_STRUCT_OPS = 26,
+	BPF_MAP_TYPE_RINGBUF = 27,
+	BPF_MAP_TYPE_INODE_STORAGE = 28,
+	BPF_MAP_TYPE_TASK_STORAGE = 29,
+	BPF_MAP_TYPE_BLOOM_FILTER = 30,
+	BPF_MAP_TYPE_USER_RINGBUF = 31,
+	BPF_MAP_TYPE_CGRP_STORAGE = 32,
+};
+
+enum btf_field_type {
+	BPF_SPIN_LOCK = 1,
+	BPF_TIMER = 2,
+	BPF_KPTR_UNREF = 4,
+	BPF_KPTR_REF = 8,
+	BPF_KPTR = 12,
+	BPF_LIST_HEAD = 16,
+	BPF_LIST_NODE = 32,
+	BPF_RB_ROOT = 64,
+	BPF_RB_NODE = 128,
+	BPF_GRAPH_NODE_OR_ROOT = 240,
+	BPF_REFCOUNT = 256,
+};
+
+enum arm_smccc_conduit {
+	SMCCC_CONDUIT_NONE = 0,
+	SMCCC_CONDUIT_SMC = 1,
+	SMCCC_CONDUIT_HVC = 2,
+};
+
+enum bhb_mitigation_bits {
+	BHB_LOOP = 0,
+	BHB_FW = 1,
+	BHB_HW = 2,
+	BHB_INSN = 3,
+};
+
+enum aarch64_insn_variant {
+	AARCH64_INSN_VARIANT_32BIT = 0,
+	AARCH64_INSN_VARIANT_64BIT = 1,
+};
+
+enum aarch64_insn_movewide_type {
+	AARCH64_INSN_MOVEWIDE_ZERO = 0,
+	AARCH64_INSN_MOVEWIDE_KEEP = 1,
+	AARCH64_INSN_MOVEWIDE_INVERSE = 2,
+};
+
+enum aarch64_insn_register {
+	AARCH64_INSN_REG_0 = 0,
+	AARCH64_INSN_REG_1 = 1,
+	AARCH64_INSN_REG_2 = 2,
+	AARCH64_INSN_REG_3 = 3,
+	AARCH64_INSN_REG_4 = 4,
+	AARCH64_INSN_REG_5 = 5,
+	AARCH64_INSN_REG_6 = 6,
+	AARCH64_INSN_REG_7 = 7,
+	AARCH64_INSN_REG_8 = 8,
+	AARCH64_INSN_REG_9 = 9,
+	AARCH64_INSN_REG_10 = 10,
+	AARCH64_INSN_REG_11 = 11,
+	AARCH64_INSN_REG_12 = 12,
+	AARCH64_INSN_REG_13 = 13,
+	AARCH64_INSN_REG_14 = 14,
+	AARCH64_INSN_REG_15 = 15,
+	AARCH64_INSN_REG_16 = 16,
+	AARCH64_INSN_REG_17 = 17,
+	AARCH64_INSN_REG_18 = 18,
+	AARCH64_INSN_REG_19 = 19,
+	AARCH64_INSN_REG_20 = 20,
+	AARCH64_INSN_REG_21 = 21,
+	AARCH64_INSN_REG_22 = 22,
+	AARCH64_INSN_REG_23 = 23,
+	AARCH64_INSN_REG_24 = 24,
+	AARCH64_INSN_REG_25 = 25,
+	AARCH64_INSN_REG_26 = 26,
+	AARCH64_INSN_REG_27 = 27,
+	AARCH64_INSN_REG_28 = 28,
+	AARCH64_INSN_REG_29 = 29,
+	AARCH64_INSN_REG_FP = 29,
+	AARCH64_INSN_REG_30 = 30,
+	AARCH64_INSN_REG_LR = 30,
+	AARCH64_INSN_REG_ZR = 31,
+	AARCH64_INSN_REG_SP = 31,
+};
+
+enum aarch64_insn_logic_type {
+	AARCH64_INSN_LOGIC_AND = 0,
+	AARCH64_INSN_LOGIC_BIC = 1,
+	AARCH64_INSN_LOGIC_ORR = 2,
+	AARCH64_INSN_LOGIC_ORN = 3,
+	AARCH64_INSN_LOGIC_EOR = 4,
+	AARCH64_INSN_LOGIC_EON = 5,
+	AARCH64_INSN_LOGIC_AND_SETFLAGS = 6,
+	AARCH64_INSN_LOGIC_BIC_SETFLAGS = 7,
+};
+
+struct bpf_prog_stats {
+	u64_stats_t cnt;
+	u64_stats_t nsecs;
+	u64_stats_t misses;
+	struct u64_stats_sync syncp;
+	long: 64;
+};
+
+struct bpf_ksym {
+	unsigned long start;
+	unsigned long end;
+	char name[512];
+	struct list_head lnode;
+	struct latch_tree_node tnode;
+	bool prog;
+};
+
+struct btf;
+
+struct bpf_ctx_arg_aux;
+
+struct bpf_trampoline;
+
+struct btf_type;
+
+struct bpf_jit_poke_descriptor;
+
+struct bpf_kfunc_desc_tab;
+
+struct bpf_kfunc_btf_tab;
+
+struct bpf_prog_ops;
+
+struct bpf_map;
+
+struct btf_mod_pair;
+
+struct bpf_prog_offload;
+
+struct bpf_func_info;
+
+struct bpf_func_info_aux;
+
+struct bpf_line_info;
+
+struct bpf_prog_aux {
+	atomic64_t refcnt;
+	u32 used_map_cnt;
+	u32 used_btf_cnt;
+	u32 max_ctx_offset;
+	u32 max_pkt_offset;
+	u32 max_tp_access;
+	u32 stack_depth;
+	u32 id;
+	u32 func_cnt;
+	u32 func_idx;
+	u32 attach_btf_id;
+	u32 ctx_arg_info_size;
+	u32 max_rdonly_access;
+	u32 max_rdwr_access;
+	struct btf *attach_btf;
+	const struct bpf_ctx_arg_aux *ctx_arg_info;
+	struct mutex dst_mutex;
+	struct bpf_prog *dst_prog;
+	struct bpf_trampoline *dst_trampoline;
+	enum bpf_prog_type saved_dst_prog_type;
+	enum bpf_attach_type saved_dst_attach_type;
+	bool verifier_zext;
+	bool dev_bound;
+	bool offload_requested;
+	bool attach_btf_trace;
+	bool func_proto_unreliable;
+	bool sleepable;
+	bool tail_call_reachable;
+	bool xdp_has_frags;
+	const struct btf_type *attach_func_proto;
+	const char *attach_func_name;
+	struct bpf_prog **func;
+	void *jit_data;
+	struct bpf_jit_poke_descriptor *poke_tab;
+	struct bpf_kfunc_desc_tab *kfunc_tab;
+	struct bpf_kfunc_btf_tab *kfunc_btf_tab;
+	u32 size_poke_tab;
+	struct bpf_ksym ksym;
+	const struct bpf_prog_ops *ops;
+	struct bpf_map **used_maps;
+	struct mutex used_maps_mutex;
+	struct btf_mod_pair *used_btfs;
+	struct bpf_prog *prog;
+	struct user_struct *user;
+	u64 load_time;
+	u32 verified_insns;
+	int cgroup_atype;
+	struct bpf_map *cgroup_storage[2];
+	char name[16];
+	void *security;
+	struct bpf_prog_offload *offload;
+	struct btf *btf;
+	struct bpf_func_info *func_info;
+	struct bpf_func_info_aux *func_info_aux;
+	struct bpf_line_info *linfo;
+	void **jited_linfo;
+	u32 func_info_cnt;
+	u32 nr_linfo;
+	u32 linfo_idx;
+	struct module *mod;
+	u32 num_exentries;
+	struct exception_table_entry *extable;
+	union {
+		struct work_struct work;
+		struct callback_head rcu;
+	};
+	u64 android_kabi_reserved1;
+};
+
+struct bpf_ctx_arg_aux {
+	u32 offset;
+	enum bpf_reg_type reg_type;
+	u32 btf_id;
+};
+
+struct btf_func_model {
+	u8 ret_size;
+	u8 ret_flags;
+	u8 nr_args;
+	u8 arg_size[12];
+	u8 arg_flags[12];
+};
+
+struct ftrace_ops;
+
+struct bpf_tramp_image;
+
+struct bpf_trampoline {
+	struct hlist_node hlist;
+	struct ftrace_ops *fops;
+	struct mutex mutex;
+	refcount_t refcnt;
+	u32 flags;
+	u64 key;
+	struct {
+		struct btf_func_model model;
+		void *addr;
+		bool ftrace_managed;
+	} func;
+	struct bpf_prog *extension_prog;
+	struct hlist_head progs_hlist[3];
+	int progs_cnt[3];
+	struct bpf_tramp_image *cur_image;
+	struct module *mod;
+	u64 android_kabi_reserved1;
+};
+
+struct bpf_tramp_image {
+	void *image;
+	struct bpf_ksym ksym;
+	struct percpu_ref pcref;
+	void *ip_after_call;
+	void *ip_epilogue;
+	union {
+		struct callback_head rcu;
+		struct work_struct work;
+	};
+};
+
+struct btf_type {
+	__u32 name_off;
+	__u32 info;
+	union {
+		__u32 size;
+		__u32 type;
+	};
+};
+
+struct bpf_jit_poke_descriptor {
+	void *tailcall_target;
+	void *tailcall_bypass;
+	void *bypass_addr;
+	void *aux;
+	union {
+		struct {
+			struct bpf_map *map;
+			u32 key;
+		} tail_call;
+	};
+	bool tailcall_target_stable;
+	u8 adj_off;
+	u16 reason;
+	u32 insn_idx;
+};
+
+struct bpf_map_ops;
+
+struct btf_record;
+
+struct bpf_map {
+	const struct bpf_map_ops *ops;
+	struct bpf_map *inner_map_meta;
+	void *security;
+	enum bpf_map_type map_type;
+	u32 key_size;
+	u32 value_size;
+	u32 max_entries;
+	u64 map_extra;
+	u32 map_flags;
+	u32 id;
+	struct btf_record *record;
+	int numa_node;
+	u32 btf_key_type_id;
+	u32 btf_value_type_id;
+	u32 btf_vmlinux_value_type_id;
+	struct btf *btf;
+	struct obj_cgroup *objcg;
+	char name[16];
+	long: 64;
+	long: 64;
+	atomic64_t refcnt;
+	atomic64_t usercnt;
+	union {
+		struct work_struct work;
+		struct callback_head rcu;
+	};
+	struct mutex freeze_mutex;
+	atomic64_t writecnt;
+	struct {
+		spinlock_t lock;
+		enum bpf_prog_type type;
+		bool jited;
+		bool xdp_has_frags;
+	} owner;
+	bool bypass_spec_v1;
+	bool frozen;
+	bool free_after_mult_rcu_gp;
+	s64 __attribute__((btf_type_tag("percpu"))) *elem_count;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+typedef u64 (*bpf_callback_t)(u64, u64, u64, u64, u64);
+
+union bpf_attr;
+
+struct bpf_verifier_env;
+
+struct bpf_func_state;
+
+struct bpf_iter_seq_info;
+
+struct bpf_map_ops {
+	int (*map_alloc_check)(union bpf_attr *);
+	struct bpf_map * (*map_alloc)(union bpf_attr *);
+	void (*map_release)(struct bpf_map *, struct file *);
+	void (*map_free)(struct bpf_map *);
+	int (*map_get_next_key)(struct bpf_map *, void *, void *);
+	void (*map_release_uref)(struct bpf_map *);
+	void * (*map_lookup_elem_sys_only)(struct bpf_map *, void *);
+	int (*map_lookup_batch)(struct bpf_map *, const union bpf_attr *, union bpf_attr __attribute__((btf_type_tag("user"))) *);
+	int (*map_lookup_and_delete_elem)(struct bpf_map *, void *, void *, u64);
+	int (*map_lookup_and_delete_batch)(struct bpf_map *, const union bpf_attr *, union bpf_attr __attribute__((btf_type_tag("user"))) *);
+	int (*map_update_batch)(struct bpf_map *, struct file *, const union bpf_attr *, union bpf_attr __attribute__((btf_type_tag("user"))) *);
+	int (*map_delete_batch)(struct bpf_map *, const union bpf_attr *, union bpf_attr __attribute__((btf_type_tag("user"))) *);
+	void * (*map_lookup_elem)(struct bpf_map *, void *);
+	long (*map_update_elem)(struct bpf_map *, void *, void *, u64);
+	long (*map_delete_elem)(struct bpf_map *, void *);
+	long (*map_push_elem)(struct bpf_map *, void *, u64);
+	long (*map_pop_elem)(struct bpf_map *, void *);
+	long (*map_peek_elem)(struct bpf_map *, void *);
+	void * (*map_lookup_percpu_elem)(struct bpf_map *, void *, u32);
+	void * (*map_fd_get_ptr)(struct bpf_map *, struct file *, int);
+	void (*map_fd_put_ptr)(struct bpf_map *, void *, bool);
+	int (*map_gen_lookup)(struct bpf_map *, struct bpf_insn *);
+	u32 (*map_fd_sys_lookup_elem)(void *);
+	void (*map_seq_show_elem)(struct bpf_map *, void *, struct seq_file *);
+	int (*map_check_btf)(const struct bpf_map *, const struct btf *, const struct btf_type *, const struct btf_type *);
+	int (*map_poke_track)(struct bpf_map *, struct bpf_prog_aux *);
+	void (*map_poke_untrack)(struct bpf_map *, struct bpf_prog_aux *);
+	void (*map_poke_run)(struct bpf_map *, u32, struct bpf_prog *, struct bpf_prog *);
+	int (*map_direct_value_addr)(const struct bpf_map *, u64 *, u32);
+	int (*map_direct_value_meta)(const struct bpf_map *, u64, u32 *);
+	int (*map_mmap)(struct bpf_map *, struct vm_area_struct *);
+	__poll_t (*map_poll)(struct bpf_map *, struct file *, struct poll_table_struct *);
+	int (*map_local_storage_charge)(struct bpf_local_storage_map *, void *, u32);
+	void (*map_local_storage_uncharge)(struct bpf_local_storage_map *, void *, u32);
+	struct bpf_local_storage __attribute__((btf_type_tag("rcu"))) ** (*map_owner_storage_ptr)(void *);
+	long (*map_redirect)(struct bpf_map *, u64, u64);
+	bool (*map_meta_equal)(const struct bpf_map *, const struct bpf_map *);
+	int (*map_set_for_each_callback_args)(struct bpf_verifier_env *, struct bpf_func_state *, struct bpf_func_state *);
+	long (*map_for_each_callback)(struct bpf_map *, bpf_callback_t, void *, u64);
+	u64 (*map_mem_usage)(const struct bpf_map *);
+	int *map_btf_id;
+	const struct bpf_iter_seq_info *iter_seq_info;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+union bpf_attr {
+	struct {
+		__u32 map_type;
+		__u32 key_size;
+		__u32 value_size;
+		__u32 max_entries;
+		__u32 map_flags;
+		__u32 inner_map_fd;
+		__u32 numa_node;
+		char map_name[16];
+		__u32 map_ifindex;
+		__u32 btf_fd;
+		__u32 btf_key_type_id;
+		__u32 btf_value_type_id;
+		__u32 btf_vmlinux_value_type_id;
+		__u64 map_extra;
+	};
+	struct {
+		__u32 map_fd;
+		__u64 key;
+		union {
+			__u64 value;
+			__u64 next_key;
+		};
+		__u64 flags;
+	};
+	struct {
+		__u64 in_batch;
+		__u64 out_batch;
+		__u64 keys;
+		__u64 values;
+		__u32 count;
+		__u32 map_fd;
+		__u64 elem_flags;
+		__u64 flags;
+	} batch;
+	struct {
+		__u32 prog_type;
+		__u32 insn_cnt;
+		__u64 insns;
+		__u64 license;
+		__u32 log_level;
+		__u32 log_size;
+		__u64 log_buf;
+		__u32 kern_version;
+		__u32 prog_flags;
+		char prog_name[16];
+		__u32 prog_ifindex;
+		__u32 expected_attach_type;
+		__u32 prog_btf_fd;
+		__u32 func_info_rec_size;
+		__u64 func_info;
+		__u32 func_info_cnt;
+		__u32 line_info_rec_size;
+		__u64 line_info;
+		__u32 line_info_cnt;
+		__u32 attach_btf_id;
+		union {
+			__u32 attach_prog_fd;
+			__u32 attach_btf_obj_fd;
+		};
+		__u32 core_relo_cnt;
+		__u64 fd_array;
+		__u64 core_relos;
+		__u32 core_relo_rec_size;
+		__u32 log_true_size;
+	};
+	struct {
+		__u64 pathname;
+		__u32 bpf_fd;
+		__u32 file_flags;
+		__s32 path_fd;
+	};
+	struct {
+		union {
+			__u32 target_fd;
+			__u32 target_ifindex;
+		};
+		__u32 attach_bpf_fd;
+		__u32 attach_type;
+		__u32 attach_flags;
+		__u32 replace_bpf_fd;
+		union {
+			__u32 relative_fd;
+			__u32 relative_id;
+		};
+		__u64 expected_revision;
+	};
+	struct {
+		__u32 prog_fd;
+		__u32 retval;
+		__u32 data_size_in;
+		__u32 data_size_out;
+		__u64 data_in;
+		__u64 data_out;
+		__u32 repeat;
+		__u32 duration;
+		__u32 ctx_size_in;
+		__u32 ctx_size_out;
+		__u64 ctx_in;
+		__u64 ctx_out;
+		__u32 flags;
+		__u32 cpu;
+		__u32 batch_size;
+	} test;
+	struct {
+		union {
+			__u32 start_id;
+			__u32 prog_id;
+			__u32 map_id;
+			__u32 btf_id;
+			__u32 link_id;
+		};
+		__u32 next_id;
+		__u32 open_flags;
+	};
+	struct {
+		__u32 bpf_fd;
+		__u32 info_len;
+		__u64 info;
+	} info;
+	struct {
+		union {
+			__u32 target_fd;
+			__u32 target_ifindex;
+		};
+		__u32 attach_type;
+		__u32 query_flags;
+		__u32 attach_flags;
+		__u64 prog_ids;
+		union {
+			__u32 prog_cnt;
+			__u32 count;
+		};
+		__u64 prog_attach_flags;
+		__u64 link_ids;
+		__u64 link_attach_flags;
+		__u64 revision;
+	} query;
+	struct {
+		__u64 name;
+		__u32 prog_fd;
+	} raw_tracepoint;
+	struct {
+		__u64 btf;
+		__u64 btf_log_buf;
+		__u32 btf_size;
+		__u32 btf_log_size;
+		__u32 btf_log_level;
+		__u32 btf_log_true_size;
+	};
+	struct {
+		__u32 pid;
+		__u32 fd;
+		__u32 flags;
+		__u32 buf_len;
+		__u64 buf;
+		__u32 prog_id;
+		__u32 fd_type;
+		__u64 probe_offset;
+		__u64 probe_addr;
+	} task_fd_query;
+	struct {
+		union {
+			__u32 prog_fd;
+			__u32 map_fd;
+		};
+		union {
+			__u32 target_fd;
+			__u32 target_ifindex;
+		};
+		__u32 attach_type;
+		__u32 flags;
+		union {
+			__u32 target_btf_id;
+			struct {
+				__u64 iter_info;
+				__u32 iter_info_len;
+			};
+			struct {
+				__u64 bpf_cookie;
+			} perf_event;
+			struct {
+				__u32 flags;
+				__u32 cnt;
+				__u64 syms;
+				__u64 addrs;
+				__u64 cookies;
+			} kprobe_multi;
+			struct {
+				__u32 target_btf_id;
+				__u64 cookie;
+			} tracing;
+			struct {
+				__u32 pf;
+				__u32 hooknum;
+				__s32 priority;
+				__u32 flags;
+			} netfilter;
+			struct {
+				union {
+					__u32 relative_fd;
+					__u32 relative_id;
+				};
+				__u64 expected_revision;
+			} tcx;
+			struct {
+				__u64 path;
+				__u64 offsets;
+				__u64 ref_ctr_offsets;
+				__u64 cookies;
+				__u32 cnt;
+				__u32 flags;
+				__u32 pid;
+			} uprobe_multi;
+		};
+	} link_create;
+	struct {
+		__u32 link_fd;
+		union {
+			__u32 new_prog_fd;
+			__u32 new_map_fd;
+		};
+		__u32 flags;
+		union {
+			__u32 old_prog_fd;
+			__u32 old_map_fd;
+		};
+	} link_update;
+	struct {
+		__u32 link_fd;
+	} link_detach;
+	struct {
+		__u32 type;
+	} enable_stats;
+	struct {
+		__u32 link_fd;
+		__u32 flags;
+	} iter_create;
+	struct {
+		__u32 prog_fd;
+		__u32 map_fd;
+		__u32 flags;
+	} prog_bind_map;
+};
+
+struct btf_header {
+	__u16 magic;
+	__u8 version;
+	__u8 flags;
+	__u32 hdr_len;
+	__u32 type_off;
+	__u32 type_len;
+	__u32 str_off;
+	__u32 str_len;
+};
+
+struct btf_kfunc_set_tab;
+
+struct btf_id_dtor_kfunc_tab;
+
+struct btf_struct_metas;
+
+struct btf {
+	void *data;
+	struct btf_type **types;
+	u32 *resolved_ids;
+	u32 *resolved_sizes;
+	const char *strings;
+	void *nohdr_data;
+	struct btf_header hdr;
+	u32 nr_types;
+	u32 types_size;
+	u32 data_size;
+	refcount_t refcnt;
+	u32 id;
+	struct callback_head rcu;
+	struct btf_kfunc_set_tab *kfunc_set_tab;
+	struct btf_id_dtor_kfunc_tab *dtor_kfunc_tab;
+	struct btf_struct_metas *struct_meta_tab;
+	struct btf *base_btf;
+	u32 start_id;
+	u32 start_str_off;
+	char name[56];
+	bool kernel_btf;
+};
+
+struct bpf_iter_aux_info;
+
+typedef int (*bpf_iter_init_seq_priv_t)(void *, struct bpf_iter_aux_info *);
+
+typedef void (*bpf_iter_fini_seq_priv_t)(void *);
+
+struct bpf_iter_seq_info {
+	const struct seq_operations *seq_ops;
+	bpf_iter_init_seq_priv_t init_seq_private;
+	bpf_iter_fini_seq_priv_t fini_seq_private;
+	u32 seq_priv_size;
+};
+
+struct bpf_iter_aux_info {
+	struct bpf_map *map;
+	struct {
+		struct cgroup *start;
+		enum bpf_cgroup_iter_order order;
+	} cgroup;
+	struct {
+		enum bpf_iter_task_type type;
+		u32 pid;
+	} task;
+};
+
+typedef void (*btf_dtor_kfunc_t)(void *);
+
+struct btf_field_kptr {
+	struct btf *btf;
+	struct module *module;
+	btf_dtor_kfunc_t dtor;
+	u32 btf_id;
+};
+
+struct btf_field_graph_root {
+	struct btf *btf;
+	u32 value_btf_id;
+	u32 node_offset;
+	struct btf_record *value_rec;
+};
+
+struct btf_field {
+	u32 offset;
+	u32 size;
+	enum btf_field_type type;
+	union {
+		struct btf_field_kptr kptr;
+		struct btf_field_graph_root graph_root;
+	};
+};
+
+struct btf_record {
+	u32 cnt;
+	u32 field_mask;
+	int spin_lock_off;
+	int timer_off;
+	int refcount_off;
+	struct btf_field fields[0];
+};
+
+struct bpf_prog_ops {
+	int (*test_run)(struct bpf_prog *, const union bpf_attr *, union bpf_attr __attribute__((btf_type_tag("user"))) *);
+};
+
+struct btf_mod_pair {
+	struct btf *btf;
+	struct module *module;
+};
+
+struct bpf_offload_dev;
+
+struct bpf_prog_offload {
+	struct bpf_prog *prog;
+	struct net_device *netdev;
+	struct bpf_offload_dev *offdev;
+	void *dev_priv;
+	struct list_head offloads;
+	bool dev_state;
+	bool opt_failed;
+	void *jited_image;
+	u32 jited_len;
+	u64 android_kabi_reserved1;
+};
+
+struct bpf_func_info {
+	__u32 insn_off;
+	__u32 type_id;
+};
+
+struct bpf_func_info_aux {
+	u16 linkage;
+	bool unreliable;
+};
+
+struct bpf_line_info {
+	__u32 insn_off;
+	__u32 file_name_off;
+	__u32 line_off;
+	__u32 line_col;
+};
+
+struct bpf_run_ctx {};
+
+struct arm_smccc_res {
+	unsigned long a0;
+	unsigned long a1;
+	unsigned long a2;
+	unsigned long a3;
+};
+
+struct ftr_set_desc {
+	char name[20];
+	struct arm64_ftr_override *override;
+	struct {
+		char name[10];
+		u8 shift;
+		u8 width;
+		bool (*filter)(u64);
+	} fields[0];
+};
+
+struct arm_cpuidle_irq_context {};
+
+struct aarch64_insn_patch {
+	void **text_addrs;
+	u32 *new_insns;
+	int insn_cnt;
+	atomic_t cpu_count;
+};
+
+typedef u32 compat_size_t;
+
+struct compat_statfs64 {
+	__u32 f_type;
+	__u32 f_bsize;
+	__u64 f_blocks;
+	__u64 f_bfree;
+	__u64 f_bavail;
+	__u64 f_files;
+	__u64 f_ffree;
+	__kernel_fsid_t f_fsid;
+	__u32 f_namelen;
+	__u32 f_frsize;
+	__u32 f_flags;
+	__u32 f_spare[4];
+} __attribute__((packed));
+
+struct compat_sigaltstack {
+	compat_uptr_t ss_sp;
+	int ss_flags;
+	compat_size_t ss_size;
+};
+
+typedef struct compat_sigaltstack compat_stack_t;
+
+struct compat_sigcontext {
+	compat_ulong_t trap_no;
+	compat_ulong_t error_code;
+	compat_ulong_t oldmask;
+	compat_ulong_t arm_r0;
+	compat_ulong_t arm_r1;
+	compat_ulong_t arm_r2;
+	compat_ulong_t arm_r3;
+	compat_ulong_t arm_r4;
+	compat_ulong_t arm_r5;
+	compat_ulong_t arm_r6;
+	compat_ulong_t arm_r7;
+	compat_ulong_t arm_r8;
+	compat_ulong_t arm_r9;
+	compat_ulong_t arm_r10;
+	compat_ulong_t arm_fp;
+	compat_ulong_t arm_ip;
+	compat_ulong_t arm_sp;
+	compat_ulong_t arm_lr;
+	compat_ulong_t arm_pc;
+	compat_ulong_t arm_cpsr;
+	compat_ulong_t fault_address;
+};
+
+typedef u32 compat_sigset_word;
+
+typedef struct {
+	compat_sigset_word sig[2];
+} compat_sigset_t;
+
+struct compat_ucontext {
+	compat_ulong_t uc_flags;
+	compat_uptr_t uc_link;
+	compat_stack_t uc_stack;
+	struct compat_sigcontext uc_mcontext;
+	compat_sigset_t uc_sigmask;
+	int __unused[30];
+	compat_ulong_t uc_regspace[128];
+};
+
+struct compat_sigframe {
+	struct compat_ucontext uc;
+	compat_ulong_t retcode[2];
+};
+
+typedef s32 compat_pid_t;
+
+typedef u32 __compat_uid32_t;
+
+typedef s32 compat_timer_t;
+
+typedef s32 compat_int_t;
+
+union compat_sigval {
+	compat_int_t sival_int;
+	compat_uptr_t sival_ptr;
+};
+
+typedef union compat_sigval compat_sigval_t;
+
+typedef s32 compat_clock_t;
+
+struct compat_siginfo {
+	int si_signo;
+	int si_errno;
+	int si_code;
+	union {
+		int _pad[29];
+		struct {
+			compat_pid_t _pid;
+			__compat_uid32_t _uid;
+		} _kill;
+		struct {
+			compat_timer_t _tid;
+			int _overrun;
+			compat_sigval_t _sigval;
+		} _timer;
+		struct {
+			compat_pid_t _pid;
+			__compat_uid32_t _uid;
+			compat_sigval_t _sigval;
+		} _rt;
+		struct {
+			compat_pid_t _pid;
+			__compat_uid32_t _uid;
+			int _status;
+			compat_clock_t _utime;
+			compat_clock_t _stime;
+		} _sigchld;
+		struct {
+			compat_uptr_t _addr;
+			union {
+				int _trapno;
+				short _addr_lsb;
+				struct {
+					char _dummy_bnd[4];
+					compat_uptr_t _lower;
+					compat_uptr_t _upper;
+				} _addr_bnd;
+				struct {
+					char _dummy_pkey[4];
+					u32 _pkey;
+				} _addr_pkey;
+				struct {
+					compat_ulong_t _data;
+					u32 _type;
+					u32 _flags;
+				} _perf;
+			};
+		} _sigfault;
+		struct {
+			compat_long_t _band;
+			int _fd;
+		} _sigpoll;
+		struct {
+			compat_uptr_t _call_addr;
+			int _syscall;
+			unsigned int _arch;
+		} _sigsys;
+	} _sifields;
+};
+
+struct compat_rt_sigframe {
+	struct compat_siginfo info;
+	struct compat_sigframe sig;
+};
+
+typedef u64 compat_u64;
+
+struct compat_user_vfp {
+	compat_u64 fpregs[32];
+	compat_ulong_t fpscr;
+};
+
+struct compat_user_vfp_exc {
+	compat_ulong_t fpexc;
+	compat_ulong_t fpinst;
+	compat_ulong_t fpinst2;
+};
+
+struct compat_vfp_sigframe {
+	compat_ulong_t magic;
+	compat_ulong_t size;
+	struct compat_user_vfp ufp;
+	struct compat_user_vfp_exc ufp_exc;
+};
+
+struct compat_aux_sigframe {
+	struct compat_vfp_sigframe vfp;
+	unsigned long end_magic;
+};
+
+union __fpsimd_vreg {
+	__uint128_t raw;
+	struct {
+		u64 lo;
+		u64 hi;
+	};
+};
+
+enum aarch64_reloc_op {
+	RELOC_OP_NONE = 0,
+	RELOC_OP_ABS = 1,
+	RELOC_OP_PREL = 2,
+	RELOC_OP_PAGE = 3,
+};
+
+enum aarch64_insn_movw_imm_type {
+	AARCH64_INSN_IMM_MOVNZ = 0,
+	AARCH64_INSN_IMM_MOVKZ = 1,
+};
+
+enum aarch64_insn_branch_type {
+	AARCH64_INSN_BRANCH_NOLINK = 0,
+	AARCH64_INSN_BRANCH_LINK = 1,
+	AARCH64_INSN_BRANCH_RETURN = 2,
+	AARCH64_INSN_BRANCH_COMP_ZERO = 3,
+	AARCH64_INSN_BRANCH_COMP_NONZERO = 4,
+};
+
+struct ht_iterator;
+
+struct hyp_event {
+	char name[32];
+	bool *enabled;
+	char *print_fmt;
+	struct trace_event_fields *fields;
+	void (*trace_func)(struct ht_iterator *);
+	int id;
+};
+
+struct hyp_trace_buffer;
+
+struct hyp_entry_hdr;
+
+struct ht_iterator {
+	struct hyp_trace_buffer *hyp_buffer;
+	int cpu;
+	struct hyp_entry_hdr *ent;
+	unsigned long lost_events;
+	int ent_cpu;
+	size_t ent_size;
+	u64 ts;
+	void *spare;
+	size_t copy_leftover;
+	struct trace_seq seq;
+	struct delayed_work poll_work;
+};
+
+struct hyp_entry_hdr {
+	unsigned short id;
+};
+
+typedef __s64 Elf64_Sxword;
+
+struct elf64_rela {
+	Elf64_Addr r_offset;
+	Elf64_Xword r_info;
+	Elf64_Sxword r_addend;
+};
+
+typedef struct elf64_rela Elf64_Rela;
+
+enum aarch64_insn_adr_type {
+	AARCH64_INSN_ADR_TYPE_ADRP = 0,
+	AARCH64_INSN_ADR_TYPE_ADR = 1,
+};
+
+enum aarch64_insn_adsb_type {
+	AARCH64_INSN_ADSB_ADD = 0,
+	AARCH64_INSN_ADSB_SUB = 1,
+	AARCH64_INSN_ADSB_ADD_SETFLAGS = 2,
+	AARCH64_INSN_ADSB_SUB_SETFLAGS = 3,
+};
+
+enum mod_mem_type {
+	MOD_TEXT = 0,
+	MOD_DATA = 1,
+	MOD_RODATA = 2,
+	MOD_RO_AFTER_INIT = 3,
+	MOD_INIT_TEXT = 4,
+	MOD_INIT_DATA = 5,
+	MOD_INIT_RODATA = 6,
+	MOD_MEM_NUM_TYPES = 7,
+	MOD_INVALID = -1,
+};
+
+typedef void (*swap_func_t)(void *, void *, int);
+
+enum perf_event_arm_regs {
+	PERF_REG_ARM64_X0 = 0,
+	PERF_REG_ARM64_X1 = 1,
+	PERF_REG_ARM64_X2 = 2,
+	PERF_REG_ARM64_X3 = 3,
+	PERF_REG_ARM64_X4 = 4,
+	PERF_REG_ARM64_X5 = 5,
+	PERF_REG_ARM64_X6 = 6,
+	PERF_REG_ARM64_X7 = 7,
+	PERF_REG_ARM64_X8 = 8,
+	PERF_REG_ARM64_X9 = 9,
+	PERF_REG_ARM64_X10 = 10,
+	PERF_REG_ARM64_X11 = 11,
+	PERF_REG_ARM64_X12 = 12,
+	PERF_REG_ARM64_X13 = 13,
+	PERF_REG_ARM64_X14 = 14,
+	PERF_REG_ARM64_X15 = 15,
+	PERF_REG_ARM64_X16 = 16,
+	PERF_REG_ARM64_X17 = 17,
+	PERF_REG_ARM64_X18 = 18,
+	PERF_REG_ARM64_X19 = 19,
+	PERF_REG_ARM64_X20 = 20,
+	PERF_REG_ARM64_X21 = 21,
+	PERF_REG_ARM64_X22 = 22,
+	PERF_REG_ARM64_X23 = 23,
+	PERF_REG_ARM64_X24 = 24,
+	PERF_REG_ARM64_X25 = 25,
+	PERF_REG_ARM64_X26 = 26,
+	PERF_REG_ARM64_X27 = 27,
+	PERF_REG_ARM64_X28 = 28,
+	PERF_REG_ARM64_X29 = 29,
+	PERF_REG_ARM64_LR = 30,
+	PERF_REG_ARM64_SP = 31,
+	PERF_REG_ARM64_PC = 32,
+	PERF_REG_ARM64_MAX = 33,
+	PERF_REG_ARM64_VG = 46,
+	PERF_REG_ARM64_EXTENDED_MAX = 47,
+};
+
+enum perf_sample_regs_abi {
+	PERF_SAMPLE_REGS_ABI_NONE = 0,
+	PERF_SAMPLE_REGS_ABI_32 = 1,
+	PERF_SAMPLE_REGS_ABI_64 = 2,
+};
+
+struct perf_guest_info_callbacks {
+	unsigned int (*state)();
+	unsigned long (*get_ip)();
+	unsigned int (*handle_intel_pt_intr)();
+};
+
+struct perf_callchain_entry_ctx {
+	struct perf_callchain_entry *entry;
+	u32 max_stack;
+	u32 nr;
+	short contexts;
+	bool contexts_maxed;
+};
+
+enum hw_breakpoint_ops {
+	HW_BREAKPOINT_INSTALL = 0,
+	HW_BREAKPOINT_UNINSTALL = 1,
+	HW_BREAKPOINT_RESTORE = 2,
+};
+
+struct cpu_suspend_ctx {
+	u64 ctx_regs[13];
+	u64 sp;
+};
+
+struct sleep_stack_data {
+	struct cpu_suspend_ctx system_regs;
+	unsigned long callee_saved_regs[12];
+};
+
+enum jump_label_type {
+	JUMP_LABEL_NOP = 0,
+	JUMP_LABEL_JMP = 1,
+};
+
+struct screen_info {
+	__u8 orig_x;
+	__u8 orig_y;
+	__u16 ext_mem_k;
+	__u16 orig_video_page;
+	__u8 orig_video_mode;
+	__u8 orig_video_cols;
+	__u8 flags;
+	__u8 unused2;
+	__u16 orig_video_ega_bx;
+	__u16 unused3;
+	__u8 orig_video_lines;
+	__u8 orig_video_isVGA;
+	__u16 orig_video_points;
+	__u16 lfb_width;
+	__u16 lfb_height;
+	__u16 lfb_depth;
+	__u32 lfb_base;
+	__u32 lfb_size;
+	__u16 cl_magic;
+	__u16 cl_offset;
+	__u16 lfb_linelength;
+	__u8 red_size;
+	__u8 red_pos;
+	__u8 green_size;
+	__u8 green_pos;
+	__u8 blue_size;
+	__u8 blue_pos;
+	__u8 rsvd_size;
+	__u8 rsvd_pos;
+	__u16 vesapm_seg;
+	__u16 vesapm_off;
+	__u16 pages;
+	__u16 vesa_attributes;
+	__u32 capabilities;
+	__u32 ext_lfb_base;
+	__u8 _reserved[2];
+} __attribute__((packed));
+
+typedef int (*pte_fn_t)(pte_t *, unsigned long, void *);
+
+typedef unsigned long efi_status_t;
+
+typedef struct {
+	u32 type;
+	u32 pad;
+	u64 phys_addr;
+	u64 virt_addr;
+	u64 num_pages;
+	u64 attribute;
+} efi_memory_desc_t;
+
+struct set_perm_data {
+	const efi_memory_desc_t *md;
+	bool has_bti;
+};
+
+typedef unsigned short pci_bus_flags_t;
+
+struct pci_dev;
+
+struct pci_ops;
+
+struct pci_bus {
+	struct list_head node;
+	struct pci_bus *parent;
+	struct list_head children;
+	struct list_head devices;
+	struct pci_dev *self;
+	struct list_head slots;
+	struct resource *resource[4];
+	struct list_head resources;
+	struct resource busn_res;
+	struct pci_ops *ops;
+	void *sysdata;
+	struct proc_dir_entry *procdir;
+	unsigned char number;
+	unsigned char primary;
+	unsigned char max_bus_speed;
+	unsigned char cur_bus_speed;
+	int domain_nr;
+	char name[48];
+	unsigned short bridge_ctl;
+	pci_bus_flags_t bus_flags;
+	struct device *bridge;
+	struct device dev;
+	struct bin_attribute *legacy_io;
+	struct bin_attribute *legacy_mem;
+	unsigned int is_added: 1;
+	unsigned int unsafe_warn: 1;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+typedef int pci_power_t;
+
+typedef unsigned int pci_channel_state_t;
+
+typedef unsigned short pci_dev_flags_t;
+
+struct pci_vpd {
+	struct mutex lock;
+	unsigned int len;
+	u8 cap;
+};
+
+struct pci_slot;
+
+struct aer_stats;
+
+struct rcec_ea;
+
+struct pci_driver;
+
+struct pcie_link_state;
+
+struct pci_sriov;
+
+struct pci_dev {
+	struct list_head bus_list;
+	struct pci_bus *bus;
+	struct pci_bus *subordinate;
+	void *sysdata;
+	struct proc_dir_entry *procent;
+	struct pci_slot *slot;
+	unsigned int devfn;
+	unsigned short vendor;
+	unsigned short device;
+	unsigned short subsystem_vendor;
+	unsigned short subsystem_device;
+	unsigned int class;
+	u8 revision;
+	u8 hdr_type;
+	u16 aer_cap;
+	struct aer_stats *aer_stats;
+	struct rcec_ea *rcec_ea;
+	struct pci_dev *rcec;
+	u32 devcap;
+	u8 pcie_cap;
+	u8 msi_cap;
+	u8 msix_cap;
+	u8 pcie_mpss: 3;
+	u8 rom_base_reg;
+	u8 pin;
+	u16 pcie_flags_reg;
+	unsigned long *dma_alias_mask;
+	struct pci_driver *driver;
+	u64 dma_mask;
+	struct device_dma_parameters dma_parms;
+	pci_power_t current_state;
+	u8 pm_cap;
+	unsigned int imm_ready: 1;
+	unsigned int pme_support: 5;
+	unsigned int pme_poll: 1;
+	unsigned int d1_support: 1;
+	unsigned int d2_support: 1;
+	unsigned int no_d1d2: 1;
+	unsigned int no_d3cold: 1;
+	unsigned int bridge_d3: 1;
+	unsigned int d3cold_allowed: 1;
+	unsigned int mmio_always_on: 1;
+	unsigned int wakeup_prepared: 1;
+	unsigned int skip_bus_pm: 1;
+	unsigned int ignore_hotplug: 1;
+	unsigned int hotplug_user_indicators: 1;
+	unsigned int clear_retrain_link: 1;
+	unsigned int d3hot_delay;
+	unsigned int d3cold_delay;
+	struct pcie_link_state *link_state;
+	u16 l1ss;
+	unsigned int ltr_path: 1;
+	unsigned int pasid_no_tlp: 1;
+	unsigned int eetlp_prefix_path: 1;
+	pci_channel_state_t error_state;
+	struct device dev;
+	int cfg_size;
+	unsigned int irq;
+	struct resource resource[17];
+	struct resource driver_exclusive_resource;
+	bool match_driver;
+	unsigned int transparent: 1;
+	unsigned int io_window: 1;
+	unsigned int pref_window: 1;
+	unsigned int pref_64_window: 1;
+	unsigned int multifunction: 1;
+	unsigned int is_busmaster: 1;
+	unsigned int no_msi: 1;
+	unsigned int no_64bit_msi: 1;
+	unsigned int block_cfg_access: 1;
+	unsigned int broken_parity_status: 1;
+	unsigned int irq_reroute_variant: 2;
+	unsigned int msi_enabled: 1;
+	unsigned int msix_enabled: 1;
+	unsigned int ari_enabled: 1;
+	unsigned int ats_enabled: 1;
+	unsigned int pasid_enabled: 1;
+	unsigned int pri_enabled: 1;
+	unsigned int is_managed: 1;
+	unsigned int is_msi_managed: 1;
+	unsigned int needs_freset: 1;
+	unsigned int state_saved: 1;
+	unsigned int is_physfn: 1;
+	unsigned int is_virtfn: 1;
+	unsigned int is_hotplug_bridge: 1;
+	unsigned int shpc_managed: 1;
+	unsigned int is_thunderbolt: 1;
+	unsigned int untrusted: 1;
+	unsigned int external_facing: 1;
+	unsigned int broken_intx_masking: 1;
+	unsigned int io_window_1k: 1;
+	unsigned int irq_managed: 1;
+	unsigned int non_compliant_bars: 1;
+	unsigned int is_probed: 1;
+	unsigned int link_active_reporting: 1;
+	unsigned int no_vf_scan: 1;
+	unsigned int no_command_memory: 1;
+	unsigned int rom_bar_overlap: 1;
+	unsigned int rom_attr_enabled: 1;
+	pci_dev_flags_t dev_flags;
+	atomic_t enable_cnt;
+	spinlock_t pcie_cap_lock;
+	u32 saved_config_space[16];
+	struct hlist_head saved_cap_space;
+	struct bin_attribute *res_attr[17];
+	struct bin_attribute *res_attr_wc[17];
+	void *msix_base;
+	raw_spinlock_t msi_lock;
+	struct pci_vpd vpd;
+	union {
+		struct pci_sriov *sriov;
+		struct pci_dev *physfn;
+	};
+	u16 ats_cap;
+	u8 ats_stu;
+	u16 acs_cap;
+	phys_addr_t rom;
+	size_t romlen;
+	const char *driver_override;
+	unsigned long priv_flags;
+	u8 reset_methods[7];
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct hotplug_slot;
+
+struct pci_slot {
+	struct pci_bus *bus;
+	struct list_head list;
+	struct hotplug_slot *hotplug;
+	unsigned char number;
+	struct kobject kobj;
+};
+
+struct pci_dynids {
+	spinlock_t lock;
+	struct list_head list;
+};
+
+struct pci_device_id;
+
+struct pci_error_handlers;
+
+struct pci_driver {
+	struct list_head node;
+	const char *name;
+	const struct pci_device_id *id_table;
+	int (*probe)(struct pci_dev *, const struct pci_device_id *);
+	void (*remove)(struct pci_dev *);
+	int (*suspend)(struct pci_dev *, pm_message_t);
+	int (*resume)(struct pci_dev *);
+	void (*shutdown)(struct pci_dev *);
+	int (*sriov_configure)(struct pci_dev *, int);
+	int (*sriov_set_msix_vec_count)(struct pci_dev *, int);
+	u32 (*sriov_get_vf_total_msix)(struct pci_dev *);
+	const struct pci_error_handlers *err_handler;
+	const struct attribute_group **groups;
+	const struct attribute_group **dev_groups;
+	struct device_driver driver;
+	struct pci_dynids dynids;
+	bool driver_managed_dma;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct pci_device_id {
+	__u32 vendor;
+	__u32 device;
+	__u32 subvendor;
+	__u32 subdevice;
+	__u32 class;
+	__u32 class_mask;
+	kernel_ulong_t driver_data;
+	__u32 override_only;
+};
+
+typedef unsigned int pci_ers_result_t;
+
+struct pci_error_handlers {
+	pci_ers_result_t (*error_detected)(struct pci_dev *, pci_channel_state_t);
+	pci_ers_result_t (*mmio_enabled)(struct pci_dev *);
+	pci_ers_result_t (*slot_reset)(struct pci_dev *);
+	void (*reset_prepare)(struct pci_dev *);
+	void (*reset_done)(struct pci_dev *);
+	void (*resume)(struct pci_dev *);
+	void (*cor_error_detected)(struct pci_dev *);
+	u64 android_kabi_reserved1;
+};
+
+struct pci_ops {
+	int (*add_bus)(struct pci_bus *);
+	void (*remove_bus)(struct pci_bus *);
+	void * (*map_bus)(struct pci_bus *, unsigned int, int);
+	int (*read)(struct pci_bus *, unsigned int, int, int, u32 *);
+	int (*write)(struct pci_bus *, unsigned int, int, int, u32);
+	u64 android_kabi_reserved1;
+};
+
+typedef void (*btf_trace_instruction_emulation)(void *, const char *, u64);
+
+enum legacy_insn_status {
+	INSN_DEPRECATED = 0,
+	INSN_OBSOLETE = 1,
+	INSN_UNAVAILABLE = 2,
+};
+
+struct insn_emulation {
+	const char *name;
+	enum legacy_insn_status status;
+	bool (*try_emulate)(struct pt_regs *, u32);
+	int (*set_hw_mode)(bool);
+	int current_mode;
+	int min;
+	int max;
+	struct ctl_table sysctl[2];
+};
+
+enum insn_emulation_mode {
+	INSN_UNDEF = 0,
+	INSN_EMULATE = 1,
+	INSN_HW = 2,
+};
+
+enum perf_sw_ids {
+	PERF_COUNT_SW_CPU_CLOCK = 0,
+	PERF_COUNT_SW_TASK_CLOCK = 1,
+	PERF_COUNT_SW_PAGE_FAULTS = 2,
+	PERF_COUNT_SW_CONTEXT_SWITCHES = 3,
+	PERF_COUNT_SW_CPU_MIGRATIONS = 4,
+	PERF_COUNT_SW_PAGE_FAULTS_MIN = 5,
+	PERF_COUNT_SW_PAGE_FAULTS_MAJ = 6,
+	PERF_COUNT_SW_ALIGNMENT_FAULTS = 7,
+	PERF_COUNT_SW_EMULATION_FAULTS = 8,
+	PERF_COUNT_SW_DUMMY = 9,
+	PERF_COUNT_SW_BPF_OUTPUT = 10,
+	PERF_COUNT_SW_CGROUP_SWITCHES = 11,
+	PERF_COUNT_SW_MAX = 12,
+};
+
+struct trace_event_raw_instruction_emulation {
+	struct trace_entry ent;
+	u32 __data_loc_instr;
+	u64 addr;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_instruction_emulation {
+	u32 instr;
+};
+
+typedef void (*smp_call_func_t)(void *);
+
+typedef bool (*smp_cond_func_t)(int, void *);
+
+struct pvclock_vcpu_stolen_time;
+
+struct pv_time_stolen_time_region {
+	struct pvclock_vcpu_stolen_time __attribute__((btf_type_tag("rcu"))) *kaddr;
+};
+
+struct pvclock_vcpu_stolen_time {
+	__le32 revision;
+	__le32 attributes;
+	__le64 stolen_time;
+	u8 padding[48];
+};
+
+enum {
+	MEMREMAP_WB = 1,
+	MEMREMAP_WT = 2,
+	MEMREMAP_WC = 4,
+	MEMREMAP_ENC = 8,
+	MEMREMAP_DEC = 16,
+};
+
+typedef __be64 fdt64_t;
+
+enum {
+	ASSUME_PERFECT = 255,
+	ASSUME_VALID_DTB = 1,
+	ASSUME_VALID_INPUT = 2,
+	ASSUME_LATEST = 4,
+	ASSUME_NO_ROLLBACK = 8,
+	ASSUME_LIBFDT_ORDER = 16,
+	ASSUME_LIBFDT_FLAWLESS = 32,
+};
+
+typedef __be32 fdt32_t;
+
+struct fdt_header {
+	fdt32_t magic;
+	fdt32_t totalsize;
+	fdt32_t off_dt_struct;
+	fdt32_t off_dt_strings;
+	fdt32_t off_mem_rsvmap;
+	fdt32_t version;
+	fdt32_t last_comp_version;
+	fdt32_t boot_cpuid_phys;
+	fdt32_t size_dt_strings;
+	fdt32_t size_dt_struct;
+};
+
+typedef u8 uint8_t;
+
+struct fdt_reserve_entry {
+	fdt64_t address;
+	fdt64_t size;
+};
+
+typedef u64 uint64_t;
+
+struct fdt_property {
+	fdt32_t tag;
+	fdt32_t len;
+	fdt32_t nameoff;
+	char data[0];
+};
+
+struct fdt_node_header {
+	fdt32_t tag;
+	char name[0];
+};
+
+struct core_vma_metadata {
+	unsigned long start;
+	unsigned long end;
+	unsigned long flags;
+	unsigned long dump_size;
+	unsigned long pgoff;
+	struct file *file;
+};
+
+struct coredump_params {
+	const kernel_siginfo_t *siginfo;
+	struct file *file;
+	unsigned long limit;
+	unsigned long mm_flags;
+	int cpu;
+	loff_t written;
+	loff_t pos;
+	loff_t to_skip;
+	int vma_count;
+	size_t vma_data_size;
+	struct core_vma_metadata *vma_meta;
+};
+
+struct elf64_phdr {
+	Elf64_Word p_type;
+	Elf64_Word p_flags;
+	Elf64_Off p_offset;
+	Elf64_Addr p_vaddr;
+	Elf64_Addr p_paddr;
+	Elf64_Xword p_filesz;
+	Elf64_Xword p_memsz;
+	Elf64_Xword p_align;
+};
+
+enum {
+	FOLL_WRITE = 1,
+	FOLL_GET = 2,
+	FOLL_DUMP = 4,
+	FOLL_FORCE = 8,
+	FOLL_NOWAIT = 16,
+	FOLL_NOFAULT = 32,
+	FOLL_HWPOISON = 64,
+	FOLL_ANON = 128,
+	FOLL_LONGTERM = 256,
+	FOLL_SPLIT_PMD = 512,
+	FOLL_PCI_P2PDMA = 1024,
+	FOLL_INTERRUPTIBLE = 2048,
+	FOLL_HONOR_NUMA_FAULT = 4096,
+};
+
+enum {
+	PACIASP = 3573752639,
+	AUTIASP = 3573752767,
+	SCS_PUSH = 4160783966,
+	SCS_POP = 4167011934,
+};
+
+struct eh_frame {
+	u32 size;
+	u32 cie_id_or_pointer;
+	union {
+		struct {
+			u8 version;
+			u8 augmentation_string[0];
+		};
+		struct {
+			s32 initial_loc;
+			s32 range;
+			u8 opcodes[0];
+		};
+	};
+};
+
+typedef u32 kprobe_opcode_t;
+
+struct kprobe;
+
+typedef int (*kprobe_pre_handler_t)(struct kprobe *, struct pt_regs *);
+
+typedef void (*kprobe_post_handler_t)(struct kprobe *, struct pt_regs *, unsigned long);
+
+typedef u32 probe_opcode_t;
+
+typedef void probes_handler_t(u32, long, struct pt_regs *);
+
+struct arch_probe_insn {
+	probe_opcode_t *insn;
+	pstate_check_t *pstate_cc;
+	probes_handler_t *handler;
+	unsigned long restore;
+};
+
+struct arch_specific_insn {
+	struct arch_probe_insn api;
+};
+
+struct kprobe {
+	struct hlist_node hlist;
+	struct list_head list;
+	unsigned long nmissed;
+	kprobe_opcode_t *addr;
+	const char *symbol_name;
+	unsigned int offset;
+	kprobe_pre_handler_t pre_handler;
+	kprobe_post_handler_t post_handler;
+	kprobe_opcode_t opcode;
+	struct arch_specific_insn ainsn;
+	u32 flags;
+};
+
+struct prev_kprobe {
+	struct kprobe *kp;
+	unsigned int status;
+};
+
+struct kprobe_ctlblk {
+	unsigned int kprobe_status;
+	unsigned long saved_irqflag;
+	struct prev_kprobe prev_kprobe;
+};
+
+enum probe_insn {
+	INSN_REJECTED = 0,
+	INSN_GOOD_NO_SLOT = 1,
+	INSN_GOOD = 2,
+};
+
+struct kprobe_insn_cache {
+	struct mutex mutex;
+	void * (*alloc)();
+	void (*free)(void *);
+	const char *sym;
+	struct list_head pages;
+	size_t insn_size;
+	int nr_garbage;
+};
+
+struct freelist_node {
+	atomic_t refs;
+	struct freelist_node *next;
+};
+
+struct kretprobe_holder;
+
+struct kretprobe_instance {
+	union {
+		struct freelist_node freelist;
+		struct callback_head rcu;
+	};
+	struct llist_node llist;
+	struct kretprobe_holder *rph;
+	kprobe_opcode_t *ret_addr;
+	void *fp;
+	char data[0];
+};
+
+struct kretprobe;
+
+struct kretprobe_holder {
+	struct kretprobe __attribute__((btf_type_tag("rcu"))) *rp;
+	refcount_t ref;
+};
+
+typedef int (*kretprobe_handler_t)(struct kretprobe_instance *, struct pt_regs *);
+
+struct freelist_head {
+	struct freelist_node *head;
+};
+
+struct kretprobe {
+	struct kprobe kp;
+	kretprobe_handler_t handler;
+	kretprobe_handler_t entry_handler;
+	int maxactive;
+	int nmissed;
+	size_t data_size;
+	struct freelist_head freelist;
+	struct kretprobe_holder *rph;
+};
+
+enum aarch64_insn_special_register {
+	AARCH64_INSN_SPCLREG_SPSR_EL1 = 49664,
+	AARCH64_INSN_SPCLREG_ELR_EL1 = 49665,
+	AARCH64_INSN_SPCLREG_SP_EL0 = 49672,
+	AARCH64_INSN_SPCLREG_SPSEL = 49680,
+	AARCH64_INSN_SPCLREG_CURRENTEL = 49682,
+	AARCH64_INSN_SPCLREG_DAIF = 55825,
+	AARCH64_INSN_SPCLREG_NZCV = 55824,
+	AARCH64_INSN_SPCLREG_FPCR = 55840,
+	AARCH64_INSN_SPCLREG_DSPSR_EL0 = 55848,
+	AARCH64_INSN_SPCLREG_DLR_EL0 = 55849,
+	AARCH64_INSN_SPCLREG_SPSR_EL2 = 57856,
+	AARCH64_INSN_SPCLREG_ELR_EL2 = 57857,
+	AARCH64_INSN_SPCLREG_SP_EL1 = 57864,
+	AARCH64_INSN_SPCLREG_SPSR_INQ = 57880,
+	AARCH64_INSN_SPCLREG_SPSR_ABT = 57881,
+	AARCH64_INSN_SPCLREG_SPSR_UND = 57882,
+	AARCH64_INSN_SPCLREG_SPSR_FIQ = 57883,
+	AARCH64_INSN_SPCLREG_SPSR_EL3 = 61952,
+	AARCH64_INSN_SPCLREG_ELR_EL3 = 61953,
+	AARCH64_INSN_SPCLREG_SP_EL2 = 61968,
+};
+
+enum rp_check {
+	RP_CHECK_CALL = 0,
+	RP_CHECK_CHAIN_CALL = 1,
+	RP_CHECK_RET = 2,
+};
+
+struct arch_uprobe {
+	union {
+		u8 insn[4];
+		u8 ixol[4];
+	};
+	struct arch_probe_insn api;
+	bool simulate;
+};
+
+enum iommu_page_response_code {
+	IOMMU_PAGE_RESP_SUCCESS = 0,
+	IOMMU_PAGE_RESP_INVALID = 1,
+	IOMMU_PAGE_RESP_FAILURE = 2,
+};
+
+typedef int (*iommu_fault_handler_t)(struct iommu_domain *, struct device *, unsigned long, int, void *);
+
+struct iommu_domain_geometry {
+	dma_addr_t aperture_start;
+	dma_addr_t aperture_end;
+	bool force_aperture;
+};
+
+struct iommu_dma_cookie;
+
+struct iommu_fault;
+
+struct iommu_domain {
+	unsigned int type;
+	const struct iommu_domain_ops *ops;
+	unsigned long pgsize_bitmap;
+	struct iommu_domain_geometry geometry;
+	struct iommu_dma_cookie *iova_cookie;
+	enum iommu_page_response_code (*iopf_handler)(struct iommu_fault *, void *);
+	void *fault_data;
+	union {
+		struct {
+			iommu_fault_handler_t handler;
+			void *handler_token;
+		};
+		struct {
+			struct mm_struct *mm;
+			int users;
+		};
+	};
+};
+
+struct iommu_domain_ops {
+	int (*attach_dev)(struct iommu_domain *, struct device *);
+	int (*set_dev_pasid)(struct iommu_domain *, struct device *, ioasid_t);
+	int (*map)(struct iommu_domain *, unsigned long, phys_addr_t, size_t, int, gfp_t);
+	int (*map_pages)(struct iommu_domain *, unsigned long, phys_addr_t, size_t, size_t, int, gfp_t, size_t *);
+	size_t (*unmap)(struct iommu_domain *, unsigned long, size_t, struct iommu_iotlb_gather *);
+	size_t (*unmap_pages)(struct iommu_domain *, unsigned long, size_t, size_t, struct iommu_iotlb_gather *);
+	void (*flush_iotlb_all)(struct iommu_domain *);
+	void (*iotlb_sync_map)(struct iommu_domain *, unsigned long, size_t);
+	void (*iotlb_sync)(struct iommu_domain *, struct iommu_iotlb_gather *);
+	phys_addr_t (*iova_to_phys)(struct iommu_domain *, dma_addr_t);
+	bool (*enforce_cache_coherency)(struct iommu_domain *);
+	int (*enable_nesting)(struct iommu_domain *);
+	int (*set_pgtable_quirks)(struct iommu_domain *, unsigned long);
+	void (*free)(struct iommu_domain *);
+};
+
+struct iommu_iotlb_gather {
+	unsigned long start;
+	unsigned long end;
+	size_t pgsize;
+	struct list_head freelist;
+	bool queued;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct iommu_fault_unrecoverable {
+	__u32 reason;
+	__u32 flags;
+	__u32 pasid;
+	__u32 perm;
+	__u64 addr;
+	__u64 fetch_addr;
+};
+
+struct iommu_fault_page_request {
+	__u32 flags;
+	__u32 pasid;
+	__u32 grpid;
+	__u32 perm;
+	__u64 addr;
+	__u64 private_data[2];
+};
+
+struct iommu_fault {
+	__u32 type;
+	__u32 padding;
+	union {
+		struct iommu_fault_unrecoverable event;
+		struct iommu_fault_page_request prm;
+		__u8 padding2[56];
+	};
+};
+
+struct iommu_device {
+	struct list_head list;
+	const struct iommu_ops *ops;
+	struct fwnode_handle *fwnode;
+	struct device *dev;
+	u32 max_pasids;
+};
+
+struct of_phandle_args {
+	struct device_node *np;
+	int args_count;
+	uint32_t args[16];
+};
+
+struct iommu_fault_event {
+	struct iommu_fault fault;
+	struct list_head list;
+};
+
+struct iommu_page_response {
+	__u32 argsz;
+	__u32 version;
+	__u32 flags;
+	__u32 pasid;
+	__u32 grpid;
+	__u32 code;
+};
+
+struct sg_table {
+	struct scatterlist *sgl;
+	unsigned int nents;
+	unsigned int orig_nents;
+};
+
+struct scatterlist {
+	unsigned long page_link;
+	unsigned int offset;
+	unsigned int length;
+	dma_addr_t dma_address;
+	unsigned int dma_length;
+	unsigned int dma_flags;
+};
+
+struct io_tlb_area;
+
+struct io_tlb_slot;
+
+struct io_tlb_pool {
+	phys_addr_t start;
+	phys_addr_t end;
+	void *vaddr;
+	unsigned long nslabs;
+	bool late_alloc;
+	unsigned int nareas;
+	unsigned int area_nslabs;
+	struct io_tlb_area *areas;
+	struct io_tlb_slot *slots;
+	struct list_head node;
+	struct callback_head rcu;
+	bool transient;
+};
+
+struct io_tlb_mem {
+	struct io_tlb_pool defpool;
+	unsigned long nslabs;
+	struct dentry *debugfs;
+	bool force_bounce;
+	bool for_alloc;
+	bool can_grow;
+	u64 phys_limit;
+	spinlock_t lock;
+	struct list_head pools;
+	struct work_struct dyn_alloc;
+	atomic_long_t total_used;
+	atomic_long_t used_hiwater;
+};
+
+struct iopf_device_param;
+
+struct iommu_fault_param;
+
+struct iommu_fwspec;
+
+struct dev_iommu {
+	struct mutex lock;
+	struct iommu_fault_param *fault_param;
+	struct iopf_device_param *iopf_param;
+	struct iommu_fwspec *fwspec;
+	struct iommu_device *iommu_dev;
+	void *priv;
+	u32 max_pasids;
+	u32 attach_deferred: 1;
+	u32 pci_32bit_workaround: 1;
+	u32 require_direct: 1;
+};
+
+typedef int (*iommu_dev_fault_handler_t)(struct iommu_fault *, void *);
+
+struct iommu_fault_param {
+	iommu_dev_fault_handler_t handler;
+	void *data;
+	struct list_head faults;
+	struct mutex lock;
+};
+
+struct iommu_fwspec {
+	const struct iommu_ops *ops;
+	struct fwnode_handle *iommu_fwnode;
+	u32 flags;
+	unsigned int num_ids;
+	u32 ids[0];
+};
+
+struct fault_info {
+	int (*fn)(unsigned long, unsigned long, struct pt_regs *);
+	int sig;
+	int code;
+	const char *name;
+};
+
+typedef u64 pudval_t;
+
+enum node_stat_item {
+	NR_LRU_BASE = 0,
+	NR_INACTIVE_ANON = 0,
+	NR_ACTIVE_ANON = 1,
+	NR_INACTIVE_FILE = 2,
+	NR_ACTIVE_FILE = 3,
+	NR_UNEVICTABLE = 4,
+	NR_SLAB_RECLAIMABLE_B = 5,
+	NR_SLAB_UNRECLAIMABLE_B = 6,
+	NR_ISOLATED_ANON = 7,
+	NR_ISOLATED_FILE = 8,
+	WORKINGSET_NODES = 9,
+	WORKINGSET_REFAULT_BASE = 10,
+	WORKINGSET_REFAULT_ANON = 10,
+	WORKINGSET_REFAULT_FILE = 11,
+	WORKINGSET_ACTIVATE_BASE = 12,
+	WORKINGSET_ACTIVATE_ANON = 12,
+	WORKINGSET_ACTIVATE_FILE = 13,
+	WORKINGSET_RESTORE_BASE = 14,
+	WORKINGSET_RESTORE_ANON = 14,
+	WORKINGSET_RESTORE_FILE = 15,
+	WORKINGSET_NODERECLAIM = 16,
+	NR_ANON_MAPPED = 17,
+	NR_FILE_MAPPED = 18,
+	NR_FILE_PAGES = 19,
+	NR_FILE_DIRTY = 20,
+	NR_WRITEBACK = 21,
+	NR_WRITEBACK_TEMP = 22,
+	NR_SHMEM = 23,
+	NR_SHMEM_THPS = 24,
+	NR_SHMEM_PMDMAPPED = 25,
+	NR_FILE_THPS = 26,
+	NR_FILE_PMDMAPPED = 27,
+	NR_ANON_THPS = 28,
+	NR_VMSCAN_WRITE = 29,
+	NR_VMSCAN_IMMEDIATE = 30,
+	NR_DIRTIED = 31,
+	NR_WRITTEN = 32,
+	NR_THROTTLED_WRITTEN = 33,
+	NR_KERNEL_MISC_RECLAIMABLE = 34,
+	NR_FOLL_PIN_ACQUIRED = 35,
+	NR_FOLL_PIN_RELEASED = 36,
+	NR_KERNEL_STACK_KB = 37,
+	NR_KERNEL_SCS_KB = 38,
+	NR_PAGETABLE = 39,
+	NR_SECONDARY_PAGETABLE = 40,
+	NR_SWAPCACHE = 41,
+	NR_VM_NODE_STAT_ITEMS = 42,
+};
+
+enum {
+	SECTION_MARKED_PRESENT_BIT = 0,
+	SECTION_HAS_MEM_MAP_BIT = 1,
+	SECTION_IS_ONLINE_BIT = 2,
+	SECTION_IS_EARLY_BIT = 3,
+	SECTION_MAP_LAST_BIT = 4,
+};
+
+typedef u64 p4dval_t;
+
+struct ptdesc {
+	unsigned long __page_flags;
+	union {
+		struct callback_head pt_rcu_head;
+		struct list_head pt_list;
+		struct {
+			unsigned long _pt_pad_1;
+			pgtable_t pmd_huge_pte;
+		};
+	};
+	unsigned long __page_mapping;
+	union {
+		struct mm_struct *pt_mm;
+		atomic_t pt_frag_refcount;
+	};
+	union {
+		unsigned long _pt_pad_2;
+		spinlock_t ptl;
+	};
+	unsigned int __page_type;
+	atomic_t _refcount;
+	unsigned long pt_memcg_data;
+};
+
+struct mhp_params {
+	struct vmem_altmap *altmap;
+	pgprot_t pgprot;
+	struct dev_pagemap *pgmap;
+};
+
+struct mem_section_usage;
+
+struct page_ext;
+
+struct mem_section {
+	unsigned long section_mem_map;
+	struct mem_section_usage *usage;
+	struct page_ext *page_ext;
+	unsigned long pad;
+};
+
+struct mem_section_usage {
+	struct callback_head rcu;
+	unsigned long subsection_map[1];
+	unsigned long pageblock_flags[0];
+};
+
+struct page_ext {
+	unsigned long flags;
+};
+
+struct memory_notify {
+	unsigned long start_pfn;
+	unsigned long nr_pages;
+	int status_change_nid_normal;
+	int status_change_nid;
+};
+
+struct page_change_data {
+	pgprot_t set_mask;
+	pgprot_t clear_mask;
+};
+
+typedef int cydp_t;
+
+struct prot_bits;
+
+struct pg_level {
+	const struct prot_bits *bits;
+	const char *name;
+	size_t num;
+	u64 mask;
+};
+
+struct prot_bits {
+	u64 mask;
+	u64 val;
+	const char *set;
+	const char *clear;
+};
+
+struct addr_marker {
+	unsigned long start_address;
+	char *name;
+};
+
+struct ptdump_info {
+	struct mm_struct *mm;
+	const struct addr_marker *markers;
+	unsigned long base_addr;
+};
+
+enum address_markers_idx {
+	PAGE_OFFSET_NR = 0,
+	PAGE_END_NR = 1,
+};
+
+struct ptdump_range;
+
+struct ptdump_state {
+	void (*note_page)(struct ptdump_state *, unsigned long, int, u64);
+	void (*effective_prot)(struct ptdump_state *, int, u64);
+	const struct ptdump_range *range;
+};
+
+struct pg_state {
+	struct ptdump_state ptdump;
+	struct pg_level *pg_level;
+	struct seq_file *seq;
+	const struct addr_marker *marker;
+	unsigned long start_address;
+	int level;
+	u64 current_prot;
+	bool check_wx;
+	unsigned long wx_pages;
+	unsigned long uxn_pages;
+};
+
+struct ptdump_range {
+	unsigned long start;
+	unsigned long end;
+};
+
+struct xa_node {
+	unsigned char shift;
+	unsigned char offset;
+	unsigned char count;
+	unsigned char nr_values;
+	struct xa_node __attribute__((btf_type_tag("rcu"))) *parent;
+	struct xarray *array;
+	union {
+		struct list_head private_list;
+		struct callback_head callback_head;
+	};
+	void __attribute__((btf_type_tag("rcu"))) *slots[64];
+	union {
+		unsigned long tags[3];
+		unsigned long marks[3];
+	};
+};
+
+typedef void (*xa_update_node_t)(struct xa_node *);
+
+struct xa_state {
+	struct xarray *xa;
+	unsigned long xa_index;
+	unsigned char xa_shift;
+	unsigned char xa_sibs;
+	unsigned char xa_offset;
+	unsigned char xa_pad;
+	struct xa_node *xa_node;
+	struct xa_node *xa_alloc;
+	xa_update_node_t xa_update;
+	struct list_lru *xa_lru;
+};
+
+struct sock_fprog_kern {
+	u16 len;
+	struct sock_filter *filter;
+};
+
+struct bpf_map_dev_ops;
+
+struct bpf_offloaded_map {
+	struct bpf_map map;
+	struct net_device *netdev;
+	const struct bpf_map_dev_ops *dev_ops;
+	void *dev_priv;
+	struct list_head offloads;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct bpf_map_dev_ops {
+	int (*map_get_next_key)(struct bpf_offloaded_map *, void *, void *);
+	int (*map_lookup_elem)(struct bpf_offloaded_map *, void *, void *);
+	int (*map_update_elem)(struct bpf_offloaded_map *, void *, void *, u64);
+	int (*map_delete_elem)(struct bpf_offloaded_map *, void *);
+	u64 android_kabi_reserved1;
+};
+
+struct Qdisc_class_ops;
+
+struct gnet_dump;
+
+struct Qdisc_ops {
+	struct Qdisc_ops *next;
+	const struct Qdisc_class_ops *cl_ops;
+	char id[16];
+	int priv_size;
+	unsigned int static_flags;
+	int (*enqueue)(struct sk_buff *, struct Qdisc *, struct sk_buff **);
+	struct sk_buff * (*dequeue)(struct Qdisc *);
+	struct sk_buff * (*peek)(struct Qdisc *);
+	int (*init)(struct Qdisc *, struct nlattr *, struct netlink_ext_ack *);
+	void (*reset)(struct Qdisc *);
+	void (*destroy)(struct Qdisc *);
+	int (*change)(struct Qdisc *, struct nlattr *, struct netlink_ext_ack *);
+	void (*attach)(struct Qdisc *);
+	int (*change_tx_queue_len)(struct Qdisc *, unsigned int);
+	void (*change_real_num_tx)(struct Qdisc *, unsigned int);
+	int (*dump)(struct Qdisc *, struct sk_buff *);
+	int (*dump_stats)(struct Qdisc *, struct gnet_dump *);
+	void (*ingress_block_set)(struct Qdisc *, u32);
+	void (*egress_block_set)(struct Qdisc *, u32);
+	u32 (*ingress_block_get)(struct Qdisc *);
+	u32 (*egress_block_get)(struct Qdisc *);
+	struct module *owner;
+	u64 android_kabi_reserved1;
+};
+
+struct tcmsg;
+
+struct qdisc_walker;
+
+struct tcf_block;
+
+struct Qdisc_class_ops {
+	unsigned int flags;
+	struct netdev_queue * (*select_queue)(struct Qdisc *, struct tcmsg *);
+	int (*graft)(struct Qdisc *, unsigned long, struct Qdisc *, struct Qdisc **, struct netlink_ext_ack *);
+	struct Qdisc * (*leaf)(struct Qdisc *, unsigned long);
+	void (*qlen_notify)(struct Qdisc *, unsigned long);
+	unsigned long (*find)(struct Qdisc *, u32);
+	int (*change)(struct Qdisc *, u32, u32, struct nlattr **, unsigned long *, struct netlink_ext_ack *);
+	int (*delete)(struct Qdisc *, unsigned long, struct netlink_ext_ack *);
+	void (*walk)(struct Qdisc *, struct qdisc_walker *);
+	struct tcf_block * (*tcf_block)(struct Qdisc *, unsigned long, struct netlink_ext_ack *);
+	unsigned long (*bind_tcf)(struct Qdisc *, unsigned long, u32);
+	void (*unbind_tcf)(struct Qdisc *, unsigned long);
+	int (*dump)(struct Qdisc *, unsigned long, struct sk_buff *, struct tcmsg *);
+	int (*dump_stats)(struct Qdisc *, unsigned long, struct gnet_dump *);
+	u64 android_kabi_reserved1;
+};
+
+struct tcmsg {
+	unsigned char tcm_family;
+	unsigned char tcm__pad1;
+	unsigned short tcm__pad2;
+	int tcm_ifindex;
+	__u32 tcm_handle;
+	__u32 tcm_parent;
+	__u32 tcm_info;
+};
+
+struct flow_block {
+	struct list_head cb_list;
+};
+
+struct tcf_chain;
+
+struct tcf_block {
+	struct mutex lock;
+	struct list_head chain_list;
+	u32 index;
+	u32 classid;
+	refcount_t refcnt;
+	struct net *net;
+	struct Qdisc *q;
+	struct rw_semaphore cb_lock;
+	struct flow_block flow_block;
+	struct list_head owner_list;
+	bool keep_dst;
+	atomic_t offloadcnt;
+	unsigned int nooffloaddevcnt;
+	unsigned int lockeddevcnt;
+	struct {
+		struct tcf_chain *chain;
+		struct list_head filter_chain_list;
+	} chain0;
+	struct callback_head rcu;
+	struct hlist_head proto_destroy_ht[128];
+	struct mutex proto_destroy_lock;
+};
+
+struct tcf_proto;
+
+struct tcf_proto_ops;
+
+struct tcf_chain {
+	struct mutex filter_chain_lock;
+	struct tcf_proto __attribute__((btf_type_tag("rcu"))) *filter_chain;
+	struct list_head list;
+	struct tcf_block *block;
+	u32 index;
+	unsigned int refcnt;
+	unsigned int action_refcnt;
+	bool explicitly_created;
+	bool flushing;
+	const struct tcf_proto_ops *tmplt_ops;
+	void *tmplt_priv;
+	struct callback_head rcu;
+};
+
+struct tcf_result;
+
+struct tcf_proto {
+	struct tcf_proto __attribute__((btf_type_tag("rcu"))) *next;
+	void __attribute__((btf_type_tag("rcu"))) *root;
+	int (*classify)(struct sk_buff *, const struct tcf_proto *, struct tcf_result *);
+	__be16 protocol;
+	u32 prio;
+	void *data;
+	const struct tcf_proto_ops *ops;
+	struct tcf_chain *chain;
+	spinlock_t lock;
+	bool deleting;
+	refcount_t refcnt;
+	struct callback_head rcu;
+	struct hlist_node destroy_ht_node;
+};
+
+struct tcf_result {
+	union {
+		struct {
+			unsigned long class;
+			u32 classid;
+		};
+		const struct tcf_proto *goto_tp;
+	};
+};
+
+typedef int flow_setup_cb_t(enum tc_setup_type, void *, void *);
+
+struct tcf_walker;
+
+struct tcf_exts;
+
+struct tcf_proto_ops {
+	struct list_head head;
+	char kind[16];
+	int (*classify)(struct sk_buff *, const struct tcf_proto *, struct tcf_result *);
+	int (*init)(struct tcf_proto *);
+	void (*destroy)(struct tcf_proto *, bool, struct netlink_ext_ack *);
+	void * (*get)(struct tcf_proto *, u32);
+	void (*put)(struct tcf_proto *, void *);
+	int (*change)(struct net *, struct sk_buff *, struct tcf_proto *, unsigned long, u32, struct nlattr **, void **, u32, struct netlink_ext_ack *);
+	int (*delete)(struct tcf_proto *, void *, bool *, bool, struct netlink_ext_ack *);
+	bool (*delete_empty)(struct tcf_proto *);
+	void (*walk)(struct tcf_proto *, struct tcf_walker *, bool);
+	int (*reoffload)(struct tcf_proto *, bool, flow_setup_cb_t *, void *, struct netlink_ext_ack *);
+	void (*hw_add)(struct tcf_proto *, void *);
+	void (*hw_del)(struct tcf_proto *, void *);
+	void (*bind_class)(void *, u32, unsigned long, void *, unsigned long);
+	void * (*tmplt_create)(struct net *, struct tcf_chain *, struct nlattr **, struct netlink_ext_ack *);
+	void (*tmplt_destroy)(void *);
+	void (*tmplt_reoffload)(struct tcf_chain *, bool, flow_setup_cb_t *, void *);
+	struct tcf_exts * (*get_exts)(const struct tcf_proto *, u32);
+	int (*dump)(struct net *, struct tcf_proto *, void *, struct sk_buff *, struct tcmsg *, bool);
+	int (*terse_dump)(struct net *, struct tcf_proto *, void *, struct sk_buff *, struct tcmsg *, bool);
+	int (*tmplt_dump)(struct sk_buff *, struct net *, void *);
+	struct module *owner;
+	int flags;
+};
+
+struct tc_stats {
+	__u64 bytes;
+	__u32 packets;
+	__u32 drops;
+	__u32 overlimits;
+	__u32 bps;
+	__u32 pps;
+	__u32 qlen;
+	__u32 backlog;
+};
+
+struct gnet_dump {
+	spinlock_t *lock;
+	struct sk_buff *skb;
+	struct nlattr *tail;
+	int compat_tc_stats;
+	int compat_xstats;
+	int padattr;
+	void *xstats;
+	int xstats_len;
+	struct tc_stats tc_stats;
+};
+
+struct tc_sizespec {
+	unsigned char cell_log;
+	unsigned char size_log;
+	short cell_align;
+	int overhead;
+	unsigned int linklayer;
+	unsigned int mpu;
+	unsigned int mtu;
+	unsigned int tsize;
+};
+
+struct qdisc_size_table {
+	struct callback_head rcu;
+	struct list_head list;
+	struct tc_sizespec szopts;
+	int refcnt;
+	u16 data[0];
+};
+
+struct net_rate_estimator {
+	struct gnet_stats_basic_sync *bstats;
+	spinlock_t *stats_lock;
+	bool running;
+	struct gnet_stats_basic_sync __attribute__((btf_type_tag("percpu"))) *cpu_bstats;
+	u8 ewma_log;
+	u8 intvl_log;
+	seqcount_t seq;
+	u64 last_packets;
+	u64 last_bytes;
+	u64 avpps;
+	u64 avbps;
+	unsigned long next_jiffies;
+	struct timer_list timer;
+	struct callback_head rcu;
+};
+
+enum bpf_link_type {
+	BPF_LINK_TYPE_UNSPEC = 0,
+	BPF_LINK_TYPE_RAW_TRACEPOINT = 1,
+	BPF_LINK_TYPE_TRACING = 2,
+	BPF_LINK_TYPE_CGROUP = 3,
+	BPF_LINK_TYPE_ITER = 4,
+	BPF_LINK_TYPE_NETNS = 5,
+	BPF_LINK_TYPE_XDP = 6,
+	BPF_LINK_TYPE_PERF_EVENT = 7,
+	BPF_LINK_TYPE_KPROBE_MULTI = 8,
+	BPF_LINK_TYPE_STRUCT_OPS = 9,
+	BPF_LINK_TYPE_NETFILTER = 10,
+	BPF_LINK_TYPE_TCX = 11,
+	BPF_LINK_TYPE_UPROBE_MULTI = 12,
+	MAX_BPF_LINK_TYPE = 13,
+};
+
+enum bpf_text_poke_type {
+	BPF_MOD_CALL = 0,
+	BPF_MOD_JUMP = 1,
+};
+
+enum {
+	BPF_REG_0 = 0,
+	BPF_REG_1 = 1,
+	BPF_REG_2 = 2,
+	BPF_REG_3 = 3,
+	BPF_REG_4 = 4,
+	BPF_REG_5 = 5,
+	BPF_REG_6 = 6,
+	BPF_REG_7 = 7,
+	BPF_REG_8 = 8,
+	BPF_REG_9 = 9,
+	BPF_REG_10 = 10,
+	__MAX_BPF_REG = 11,
+};
+
+enum aarch64_insn_ldst_type {
+	AARCH64_INSN_LDST_LOAD_REG_OFFSET = 0,
+	AARCH64_INSN_LDST_STORE_REG_OFFSET = 1,
+	AARCH64_INSN_LDST_LOAD_IMM_OFFSET = 2,
+	AARCH64_INSN_LDST_STORE_IMM_OFFSET = 3,
+	AARCH64_INSN_LDST_LOAD_PAIR_PRE_INDEX = 4,
+	AARCH64_INSN_LDST_STORE_PAIR_PRE_INDEX = 5,
+	AARCH64_INSN_LDST_LOAD_PAIR_POST_INDEX = 6,
+	AARCH64_INSN_LDST_STORE_PAIR_POST_INDEX = 7,
+	AARCH64_INSN_LDST_LOAD_EX = 8,
+	AARCH64_INSN_LDST_LOAD_ACQ_EX = 9,
+	AARCH64_INSN_LDST_STORE_EX = 10,
+	AARCH64_INSN_LDST_STORE_REL_EX = 11,
+	AARCH64_INSN_LDST_SIGNED_LOAD_IMM_OFFSET = 12,
+	AARCH64_INSN_LDST_SIGNED_LOAD_REG_OFFSET = 13,
+};
+
+enum aarch64_insn_bitfield_type {
+	AARCH64_INSN_BITFIELD_MOVE = 0,
+	AARCH64_INSN_BITFIELD_MOVE_UNSIGNED = 1,
+	AARCH64_INSN_BITFIELD_MOVE_SIGNED = 2,
+};
+
+enum aarch64_insn_data3_type {
+	AARCH64_INSN_DATA3_MADD = 0,
+	AARCH64_INSN_DATA3_MSUB = 1,
+};
+
+enum aarch64_insn_data2_type {
+	AARCH64_INSN_DATA2_UDIV = 0,
+	AARCH64_INSN_DATA2_SDIV = 1,
+	AARCH64_INSN_DATA2_LSLV = 2,
+	AARCH64_INSN_DATA2_LSRV = 3,
+	AARCH64_INSN_DATA2_ASRV = 4,
+	AARCH64_INSN_DATA2_RORV = 5,
+};
+
+enum aarch64_insn_data1_type {
+	AARCH64_INSN_DATA1_REVERSE_16 = 0,
+	AARCH64_INSN_DATA1_REVERSE_32 = 1,
+	AARCH64_INSN_DATA1_REVERSE_64 = 2,
+};
+
+enum aarch64_insn_condition {
+	AARCH64_INSN_COND_EQ = 0,
+	AARCH64_INSN_COND_NE = 1,
+	AARCH64_INSN_COND_CS = 2,
+	AARCH64_INSN_COND_CC = 3,
+	AARCH64_INSN_COND_MI = 4,
+	AARCH64_INSN_COND_PL = 5,
+	AARCH64_INSN_COND_VS = 6,
+	AARCH64_INSN_COND_VC = 7,
+	AARCH64_INSN_COND_HI = 8,
+	AARCH64_INSN_COND_LS = 9,
+	AARCH64_INSN_COND_GE = 10,
+	AARCH64_INSN_COND_LT = 11,
+	AARCH64_INSN_COND_GT = 12,
+	AARCH64_INSN_COND_LE = 13,
+	AARCH64_INSN_COND_AL = 14,
+};
+
+enum aarch64_insn_size_type {
+	AARCH64_INSN_SIZE_8 = 0,
+	AARCH64_INSN_SIZE_16 = 1,
+	AARCH64_INSN_SIZE_32 = 2,
+	AARCH64_INSN_SIZE_64 = 3,
+};
+
+enum aarch64_insn_mem_atomic_op {
+	AARCH64_INSN_MEM_ATOMIC_ADD = 0,
+	AARCH64_INSN_MEM_ATOMIC_CLR = 1,
+	AARCH64_INSN_MEM_ATOMIC_EOR = 2,
+	AARCH64_INSN_MEM_ATOMIC_SET = 3,
+	AARCH64_INSN_MEM_ATOMIC_SWP = 4,
+};
+
+enum aarch64_insn_mem_order_type {
+	AARCH64_INSN_MEM_ORDER_NONE = 0,
+	AARCH64_INSN_MEM_ORDER_ACQ = 1,
+	AARCH64_INSN_MEM_ORDER_REL = 2,
+	AARCH64_INSN_MEM_ORDER_ACQREL = 3,
+};
+
+enum aarch64_insn_mb_type {
+	AARCH64_INSN_MB_SY = 0,
+	AARCH64_INSN_MB_ST = 1,
+	AARCH64_INSN_MB_LD = 2,
+	AARCH64_INSN_MB_ISH = 3,
+	AARCH64_INSN_MB_ISHST = 4,
+	AARCH64_INSN_MB_ISHLD = 5,
+	AARCH64_INSN_MB_NSH = 6,
+	AARCH64_INSN_MB_NSHST = 7,
+	AARCH64_INSN_MB_NSHLD = 8,
+	AARCH64_INSN_MB_OSH = 9,
+	AARCH64_INSN_MB_OSHST = 10,
+	AARCH64_INSN_MB_OSHLD = 11,
+};
+
+enum {
+	DUMP_PREFIX_NONE = 0,
+	DUMP_PREFIX_ADDRESS = 1,
+	DUMP_PREFIX_OFFSET = 2,
+};
+
+enum bpf_tramp_prog_type {
+	BPF_TRAMP_FENTRY = 0,
+	BPF_TRAMP_FEXIT = 1,
+	BPF_TRAMP_MODIFY_RETURN = 2,
+	BPF_TRAMP_MAX = 3,
+	BPF_TRAMP_REPLACE = 4,
+};
+
+struct bpf_plt {
+	u32 insn_ldr;
+	u32 insn_br;
+	u64 target;
+};
+
+struct jit_ctx {
+	const struct bpf_prog *prog;
+	int idx;
+	int epilogue_offset;
+	int *offset;
+	int exentry_idx;
+	__le32 *image;
+	u32 stack_size;
+	int fpb_offset;
+};
+
+struct bpf_binary_header {
+	u32 size;
+	long: 0;
+	u8 image[0];
+};
+
+typedef void (*bpf_jit_fill_hole_t)(void *, unsigned int);
+
+typedef __kernel_long_t __kernel_off_t;
+
+typedef __kernel_off_t off_t;
+
+struct bpf_tramp_link;
+
+struct bpf_tramp_links {
+	struct bpf_tramp_link *links[38];
+	int nr_links;
+};
+
+struct bpf_link_ops;
+
+struct bpf_link {
+	atomic64_t refcnt;
+	u32 id;
+	enum bpf_link_type type;
+	const struct bpf_link_ops *ops;
+	struct bpf_prog *prog;
+	union {
+		struct callback_head rcu;
+		struct work_struct work;
+	};
+};
+
+struct bpf_tramp_link {
+	struct bpf_link link;
+	struct hlist_node tramp_hlist;
+	u64 cookie;
+};
+
+struct bpf_link_info;
+
+struct bpf_link_ops {
+	void (*release)(struct bpf_link *);
+	void (*dealloc)(struct bpf_link *);
+	void (*dealloc_deferred)(struct bpf_link *);
+	int (*detach)(struct bpf_link *);
+	int (*update_prog)(struct bpf_link *, struct bpf_prog *, struct bpf_prog *);
+	void (*show_fdinfo)(const struct bpf_link *, struct seq_file *);
+	int (*fill_link_info)(const struct bpf_link *, struct bpf_link_info *);
+	int (*update_map)(struct bpf_link *, struct bpf_map *, struct bpf_map *);
+	u64 android_kabi_reserved1;
+};
+
+struct bpf_link_info {
+	__u32 type;
+	__u32 id;
+	__u32 prog_id;
+	union {
+		struct {
+			__u64 tp_name;
+			__u32 tp_name_len;
+		} raw_tracepoint;
+		struct {
+			__u32 attach_type;
+			__u32 target_obj_id;
+			__u32 target_btf_id;
+		} tracing;
+		struct {
+			__u64 cgroup_id;
+			__u32 attach_type;
+		} cgroup;
+		struct {
+			__u64 target_name;
+			__u32 target_name_len;
+			union {
+				struct {
+					__u32 map_id;
+				} map;
+			};
+			union {
+				struct {
+					__u64 cgroup_id;
+					__u32 order;
+				} cgroup;
+				struct {
+					__u32 tid;
+					__u32 pid;
+				} task;
+			};
+		} iter;
+		struct {
+			__u32 netns_ino;
+			__u32 attach_type;
+		} netns;
+		struct {
+			__u32 ifindex;
+		} xdp;
+		struct {
+			__u32 map_id;
+		} struct_ops;
+		struct {
+			__u32 pf;
+			__u32 hooknum;
+			__s32 priority;
+			__u32 flags;
+		} netfilter;
+		struct {
+			__u64 addrs;
+			__u32 count;
+			__u32 flags;
+		} kprobe_multi;
+		struct {
+			__u32 type;
+			union {
+				struct {
+					__u64 file_name;
+					__u32 name_len;
+					__u32 offset;
+				} uprobe;
+				struct {
+					__u64 func_name;
+					__u32 name_len;
+					__u32 offset;
+					__u64 addr;
+				} kprobe;
+				struct {
+					__u64 tp_name;
+					__u32 name_len;
+				} tracepoint;
+				struct {
+					__u64 config;
+					__u32 type;
+				} event;
+			};
+		} perf_event;
+		struct {
+			__u32 ifindex;
+			__u32 attach_type;
+		} tcx;
+	};
+};
+
+struct bpf_tramp_run_ctx;
+
+typedef u64 (*bpf_trampoline_enter_t)(struct bpf_prog *, struct bpf_tramp_run_ctx *);
+
+struct bpf_tramp_run_ctx {
+	struct bpf_run_ctx run_ctx;
+	u64 bpf_cookie;
+	struct bpf_run_ctx *saved_run_ctx;
+};
+
+typedef void (*bpf_trampoline_exit_t)(struct bpf_prog *, u64, struct bpf_tramp_run_ctx *);
+
+struct arm64_jit_data {
+	struct bpf_binary_header *header;
+	u8 *image;
+	struct jit_ctx ctx;
+};
+
+typedef void (*btf_trace_kvm_userspace_exit)(void *, __u32, int);
+
+typedef void (*btf_trace_kvm_vcpu_wakeup)(void *, __u64, bool, bool);
+
+typedef void (*btf_trace_kvm_set_irq)(void *, unsigned int, int, int);
+
+typedef void (*btf_trace_kvm_ack_irq)(void *, unsigned int, unsigned int);
+
+typedef void (*btf_trace_kvm_mmio)(void *, int, int, u64, void *);
+
+typedef void (*btf_trace_kvm_fpu)(void *, int);
+
+typedef void (*btf_trace_kvm_halt_poll_ns)(void *, bool, unsigned int, unsigned int, unsigned int);
+
+struct kvm_dirty_ring;
+
+typedef void (*btf_trace_kvm_dirty_ring_push)(void *, struct kvm_dirty_ring *, u32, u64);
+
+struct kvm_dirty_gfn;
+
+struct kvm_dirty_ring {
+	u32 dirty_index;
+	u32 reset_index;
+	u32 size;
+	u32 soft_limit;
+	struct kvm_dirty_gfn *dirty_gfns;
+	int index;
+};
+
+struct kvm_dirty_gfn {
+	__u32 flags;
+	__u32 slot;
+	__u64 offset;
+};
+
+typedef void (*btf_trace_kvm_dirty_ring_reset)(void *, struct kvm_dirty_ring *);
+
+struct kvm_vcpu;
+
+typedef void (*btf_trace_kvm_dirty_ring_exit)(void *, struct kvm_vcpu *);
+
+struct preempt_ops;
+
+struct preempt_notifier {
+	struct hlist_node link;
+	struct preempt_ops *ops;
+};
+
+typedef u64 gpa_t;
+
+struct kvm_mmio_fragment {
+	gpa_t gpa;
+	void *data;
+	unsigned int len;
+};
+
+struct kvm_cpu_context {
+	struct user_pt_regs regs;
+	u64 spsr_abt;
+	u64 spsr_und;
+	u64 spsr_irq;
+	u64 spsr_fiq;
+	struct user_fpsimd_state fp_regs;
+	u64 sys_regs[167];
+	struct kvm_vcpu *__hyp_running_vcpu;
+};
+
+struct kvm_vcpu_fault_info {
+	u64 esr_el2;
+	u64 far_el2;
+	u64 hpfar_el2;
+	u64 disr_el1;
+};
+
+struct kvm_guest_debug_arch {
+	__u64 dbg_bcr[16];
+	__u64 dbg_bvr[16];
+	__u64 dbg_wcr[16];
+	__u64 dbg_wvr[16];
+};
+
+struct vgic_v2_cpu_if {
+	u32 vgic_hcr;
+	u32 vgic_vmcr;
+	u32 vgic_apr;
+	u32 vgic_lr[64];
+	unsigned int used_lrs;
+};
+
+typedef unsigned long irq_hw_number_t;
+
+struct its_vm;
+
+struct its_vpe {
+	struct page *vpt_page;
+	struct its_vm *its_vm;
+	atomic_t vlpi_count;
+	int irq;
+	irq_hw_number_t vpe_db_lpi;
+	bool resident;
+	bool ready;
+	union {
+		struct {
+			int vpe_proxy_event;
+			bool idai;
+		};
+		struct {
+			struct fwnode_handle *fwnode;
+			struct irq_domain *sgi_domain;
+			struct {
+				u8 priority;
+				bool enabled;
+				bool group;
+			} sgi_config[16];
+			atomic_t vmapp_count;
+		};
+	};
+	raw_spinlock_t vpe_lock;
+	u16 col_idx;
+	u16 vpe_id;
+	bool pending_last;
+};
+
+struct vgic_v3_cpu_if {
+	u32 vgic_hcr;
+	u32 vgic_vmcr;
+	u32 vgic_sre;
+	u32 vgic_ap0r[4];
+	u32 vgic_ap1r[4];
+	u64 vgic_lr[16];
+	struct its_vpe its_vpe;
+	unsigned int used_lrs;
+};
+
+enum vgic_irq_config {
+	VGIC_CONFIG_EDGE = 0,
+	VGIC_CONFIG_LEVEL = 1,
+};
+
+struct irq_ops;
+
+struct vgic_irq {
+	raw_spinlock_t irq_lock;
+	struct list_head lpi_list;
+	struct list_head ap_list;
+	struct kvm_vcpu *vcpu;
+	struct kvm_vcpu *target_vcpu;
+	u32 intid;
+	bool line_level;
+	bool pending_latch;
+	bool active;
+	bool enabled;
+	bool hw;
+	struct kref refcount;
+	u32 hwintid;
+	unsigned int host_irq;
+	union {
+		u8 targets;
+		u32 mpidr;
+	};
+	u8 source;
+	u8 active_source;
+	u8 priority;
+	u8 group;
+	enum vgic_irq_config config;
+	struct irq_ops *ops;
+	void *owner;
+};
+
+enum iodev_type {
+	IODEV_CPUIF = 0,
+	IODEV_DIST = 1,
+	IODEV_REDIST = 2,
+	IODEV_ITS = 3,
+};
+
+struct kvm_io_device_ops;
+
+struct kvm_io_device {
+	const struct kvm_io_device_ops *ops;
+};
+
+struct vgic_its;
+
+struct vgic_register_region;
+
+struct vgic_io_device {
+	gpa_t base_addr;
+	union {
+		struct kvm_vcpu *redist_vcpu;
+		struct vgic_its *its;
+	};
+	const struct vgic_register_region *regions;
+	enum iodev_type iodev_type;
+	int nr_regions;
+	struct kvm_io_device dev;
+};
+
+struct vgic_redist_region;
+
+struct vgic_cpu {
+	union {
+		struct vgic_v2_cpu_if vgic_v2;
+		struct vgic_v3_cpu_if vgic_v3;
+	};
+	struct vgic_irq private_irqs[32];
+	raw_spinlock_t ap_list_lock;
+	struct list_head ap_list_head;
+	struct vgic_io_device rd_iodev;
+	struct vgic_redist_region *rdreg;
+	u32 rdreg_index;
+	atomic_t syncr_busy;
+	u64 pendbaser;
+	atomic_t ctlr;
+	u32 num_pri_bits;
+	u32 num_id_bits;
+};
+
+struct arch_timer_offset {
+	u64 *vm_offset;
+	u64 *vcpu_offset;
+};
+
+struct arch_timer_context {
+	struct kvm_vcpu *vcpu;
+	struct hrtimer hrtimer;
+	u64 ns_frac;
+	struct arch_timer_offset offset;
+	bool loaded;
+	struct {
+		bool level;
+	} irq;
+	u32 host_timer_irq;
+};
+
+struct arch_timer_cpu {
+	struct arch_timer_context timers[4];
+	struct hrtimer bg_timer;
+	bool enabled;
+};
+
+struct kvm_pmu_events {
+	u32 events_host;
+	u32 events_guest;
+};
+
+struct kvm_pmc {
+	u8 idx;
+	struct perf_event *perf_event;
+};
+
+struct kvm_pmu {
+	struct irq_work overflow_work;
+	struct kvm_pmu_events events;
+	struct kvm_pmc pmc[32];
+	int irq_num;
+	bool created;
+	bool irq_level;
+};
+
+struct kvm_mp_state {
+	__u32 mp_state;
+};
+
+struct kvm_mmu_memory_cache {
+	gfp_t gfp_zero;
+	gfp_t gfp_custom;
+	struct kmem_cache *kmem_cache;
+	int capacity;
+	int nobjs;
+	void **objects;
+};
+
+struct kvm_hyp_memcache {
+	phys_addr_t head;
+	unsigned long nr_pages;
+	unsigned long flags;
+};
+
+struct vcpu_reset_state {
+	unsigned long pc;
+	unsigned long r0;
+	bool be;
+	bool reset;
+};
+
+struct kvm_s2_mmu;
+
+struct kvm_vcpu_arch {
+	struct kvm_cpu_context ctxt;
+	void *sve_state;
+	enum fp_type fp_type;
+	unsigned int sve_max_vl;
+	u64 svcr;
+	struct kvm_s2_mmu *hw_mmu;
+	u64 hcr_el2;
+	u64 mdcr_el2;
+	u64 cptr_el2;
+	u64 mdcr_el2_host;
+	struct kvm_vcpu_fault_info fault;
+	enum {
+		FP_STATE_FREE = 0,
+		FP_STATE_HOST_OWNED = 1,
+		FP_STATE_GUEST_OWNED = 2,
+	} fp_state;
+	u8 cflags;
+	u8 iflags;
+	u8 sflags;
+	bool pause;
+	struct kvm_guest_debug_arch *debug_ptr;
+	struct kvm_guest_debug_arch vcpu_debug_state;
+	struct kvm_guest_debug_arch external_debug_state;
+	struct user_fpsimd_state *host_fpsimd_state;
+	struct {
+		struct kvm_guest_debug_arch regs;
+		u64 pmscr_el1;
+		u64 trfcr_el1;
+	} host_debug_state;
+	struct vgic_cpu vgic_cpu;
+	struct arch_timer_cpu timer_cpu;
+	struct kvm_pmu pmu;
+	struct {
+		u32 mdscr_el1;
+		bool pstate_ss;
+	} guest_debug_preserved;
+	struct kvm_mp_state mp_state;
+	spinlock_t mp_state_lock;
+	union {
+		struct kvm_mmu_memory_cache mmu_page_cache;
+		struct kvm_hyp_memcache stage2_mc;
+	};
+	unsigned long features[1];
+	u64 vsesr_el2;
+	struct vcpu_reset_state reset_state;
+	struct {
+		u64 last_steal;
+		gpa_t base;
+	} steal;
+	u32 *ccsidr;
+	struct kvm_hyp_req *hyp_reqs;
+};
+
+struct kvm_vcpu_stat_generic {
+	u64 halt_successful_poll;
+	u64 halt_attempted_poll;
+	u64 halt_poll_invalid;
+	u64 halt_wakeup;
+	u64 halt_poll_success_ns;
+	u64 halt_poll_fail_ns;
+	u64 halt_wait_ns;
+	u64 halt_poll_success_hist[32];
+	u64 halt_poll_fail_hist[32];
+	u64 halt_wait_hist[32];
+	u64 blocking;
+};
+
+struct kvm_vcpu_stat {
+	struct kvm_vcpu_stat_generic generic;
+	u64 hvc_exit_stat;
+	u64 wfe_exit_stat;
+	u64 wfi_exit_stat;
+	u64 mmio_exit_user;
+	u64 mmio_exit_kernel;
+	u64 signal_exits;
+	u64 exits;
+};
+
+struct kvm;
+
+struct kvm_run;
+
+struct kvm_memory_slot;
+
+struct kvm_vcpu {
+	struct kvm *kvm;
+	struct preempt_notifier preempt_notifier;
+	int cpu;
+	int vcpu_id;
+	int vcpu_idx;
+	int ____srcu_idx;
+	int mode;
+	u64 requests;
+	unsigned long guest_debug;
+	struct mutex mutex;
+	struct kvm_run *run;
+	struct rcuwait wait;
+	struct pid __attribute__((btf_type_tag("rcu"))) *pid;
+	int sigset_active;
+	sigset_t sigset;
+	unsigned int halt_poll_ns;
+	bool valid_wakeup;
+	int mmio_needed;
+	int mmio_read_completed;
+	int mmio_is_write;
+	int mmio_cur_fragment;
+	int mmio_nr_fragments;
+	struct kvm_mmio_fragment mmio_fragments[2];
+	struct {
+		bool in_spin_loop;
+		bool dy_eligible;
+	} spin_loop;
+	bool preempted;
+	bool ready;
+	long: 64;
+	struct kvm_vcpu_arch arch;
+	struct kvm_vcpu_stat stat;
+	char stats_id[48];
+	struct kvm_dirty_ring dirty_ring;
+	struct kvm_memory_slot *last_used_slot;
+	u64 last_used_slot_gen;
+	long: 64;
+};
+
+struct kvm_memslots {
+	u64 generation;
+	atomic_long_t last_used_slot;
+	struct rb_root_cached hva_tree;
+	struct rb_root gfn_tree;
+	struct hlist_head id_hash[128];
+	int node_idx;
+};
+
+struct kvm_vm_stat_generic {
+	u64 remote_tlb_flush;
+	u64 remote_tlb_flush_requests;
+};
+
+struct kvm_vm_stat {
+	struct kvm_vm_stat_generic generic;
+	atomic64_t protected_hyp_mem;
+	atomic64_t protected_shared_mem;
+	atomic64_t protected_pgtable_mem;
+};
+
+struct kvm_vmid {
+	atomic64_t id;
+};
+
+struct kvm_pgtable;
+
+struct kvm_arch;
+
+struct kvm_s2_mmu {
+	struct kvm_vmid vmid;
+	phys_addr_t pgd_phys;
+	struct kvm_pgtable *pgt;
+	int __attribute__((btf_type_tag("percpu"))) *last_vcpu_ran;
+	struct kvm_mmu_memory_cache split_page_cache;
+	uint64_t split_page_chunk_size;
+	struct kvm_arch *arch;
+};
+
+struct its_vm {
+	struct fwnode_handle *fwnode;
+	struct irq_domain *domain;
+	struct page *vprop_page;
+	struct its_vpe **vpes;
+	int nr_vpes;
+	irq_hw_number_t db_lpi_base;
+	unsigned long *db_bitmap;
+	int nr_db_lpis;
+	u32 vlpi_count[16];
+};
+
+struct vgic_state_iter;
+
+struct vgic_dist {
+	bool in_kernel;
+	bool ready;
+	bool initialized;
+	u32 vgic_model;
+	u32 implementation_rev;
+	bool v2_groups_user_writable;
+	bool msis_require_devid;
+	int nr_spis;
+	gpa_t vgic_dist_base;
+	union {
+		gpa_t vgic_cpu_base;
+		struct list_head rd_regions;
+	};
+	bool enabled;
+	bool nassgireq;
+	struct vgic_irq *spis;
+	struct vgic_io_device dist_iodev;
+	bool has_its;
+	bool table_write_in_progress;
+	u64 propbaser;
+	raw_spinlock_t lpi_list_lock;
+	struct list_head lpi_list_head;
+	int lpi_list_count;
+	struct list_head lpi_translation_cache;
+	struct vgic_state_iter *iter;
+	struct its_vm its_vm;
+};
+
+struct arch_timer_vm_data {
+	u64 voffset;
+	u64 poffset;
+	u8 ppi[4];
+};
+
+struct kvm_smccc_features {
+	unsigned long std_bmap;
+	unsigned long std_hyp_bmap;
+	unsigned long vendor_hyp_bmap;
+};
+
+typedef unsigned int pkvm_handle_t;
+
+struct kvm_protected_vm {
+	pkvm_handle_t handle;
+	struct kvm_hyp_memcache stage2_teardown_mc;
+	struct maple_tree pinned_pages;
+	gpa_t pvmfw_load_addr;
+	bool enabled;
+};
+
+struct arm_pmu;
+
+struct kvm_arch {
+	struct kvm_s2_mmu mmu;
+	u64 vtcr;
+	struct vgic_dist vgic;
+	struct arch_timer_vm_data timer_data;
+	u32 psci_version;
+	struct mutex config_lock;
+	unsigned long flags;
+	unsigned long vcpu_features[1];
+	unsigned long *pmu_filter;
+	struct arm_pmu *arm_pmu;
+	cpumask_var_t supported_cpus;
+	struct kvm_smccc_features smccc_feat;
+	struct maple_tree smccc_filter;
+	u64 id_regs[56];
+	struct kvm_protected_vm pkvm;
+};
+
+struct mmu_notifier_ops;
+
+struct mmu_notifier {
+	struct hlist_node hlist;
+	const struct mmu_notifier_ops *ops;
+	struct mm_struct *mm;
+	struct callback_head rcu;
+	unsigned int users;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct kvm_io_bus;
+
+struct kvm_coalesced_mmio_ring;
+
+struct kvm_irq_routing_table;
+
+struct kvm_stat_data;
+
+struct kvm {
+	rwlock_t mmu_lock;
+	struct mutex slots_lock;
+	struct mutex slots_arch_lock;
+	struct mm_struct *mm;
+	unsigned long nr_memslot_pages;
+	struct kvm_memslots __memslots[2];
+	struct kvm_memslots __attribute__((btf_type_tag("rcu"))) *memslots[1];
+	struct xarray vcpu_array;
+	atomic_t nr_memslots_dirty_logging;
+	spinlock_t mn_invalidate_lock;
+	unsigned long mn_active_invalidate_count;
+	struct rcuwait mn_memslots_update_rcuwait;
+	spinlock_t gpc_lock;
+	struct list_head gpc_list;
+	atomic_t online_vcpus;
+	int max_vcpus;
+	int created_vcpus;
+	int last_boosted_vcpu;
+	struct list_head vm_list;
+	struct mutex lock;
+	struct kvm_io_bus __attribute__((btf_type_tag("rcu"))) *buses[4];
+	struct {
+		spinlock_t lock;
+		struct list_head items;
+		struct list_head resampler_list;
+		struct mutex resampler_lock;
+	} irqfds;
+	struct list_head ioeventfds;
+	struct kvm_vm_stat stat;
+	struct kvm_arch arch;
+	refcount_t users_count;
+	struct kvm_coalesced_mmio_ring *coalesced_mmio_ring;
+	spinlock_t ring_lock;
+	struct list_head coalesced_zones;
+	struct mutex irq_lock;
+	struct kvm_irq_routing_table __attribute__((btf_type_tag("rcu"))) *irq_routing;
+	struct hlist_head irq_ack_notifier_list;
+	struct mmu_notifier mmu_notifier;
+	unsigned long mmu_invalidate_seq;
+	long mmu_invalidate_in_progress;
+	unsigned long mmu_invalidate_range_start;
+	unsigned long mmu_invalidate_range_end;
+	struct list_head devices;
+	u64 manual_dirty_log_protect;
+	struct dentry *debugfs_dentry;
+	struct kvm_stat_data **debugfs_stat_data;
+	struct srcu_struct srcu;
+	struct srcu_struct irq_srcu;
+	pid_t userspace_pid;
+	bool override_halt_poll_ns;
+	unsigned int max_halt_poll_ns;
+	u32 dirty_ring_size;
+	bool dirty_ring_with_bitmap;
+	bool vm_bugged;
+	bool vm_dead;
+	char stats_id[48];
+};
+
+struct kvm_io_range {
+	gpa_t addr;
+	int len;
+	struct kvm_io_device *dev;
+};
+
+struct kvm_io_bus {
+	int dev_count;
+	int ioeventfd_count;
+	struct kvm_io_range range[0];
+};
+
+struct kvm_io_device_ops {
+	int (*read)(struct kvm_vcpu *, struct kvm_io_device *, gpa_t, int, void *);
+	int (*write)(struct kvm_vcpu *, struct kvm_io_device *, gpa_t, int, const void *);
+	void (*destructor)(struct kvm_io_device *);
+};
+
+struct irq_ops {
+	unsigned long flags;
+	bool (*get_input_level)(int);
+};
+
+struct kvm_device;
+
+struct vgic_its {
+	gpa_t vgic_its_base;
+	bool enabled;
+	struct vgic_io_device iodev;
+	struct kvm_device *dev;
+	u64 baser_device_table;
+	u64 baser_coll_table;
+	struct mutex cmd_lock;
+	u64 cbaser;
+	u32 creadr;
+	u32 cwriter;
+	u32 abi_rev;
+	struct mutex its_lock;
+	struct list_head device_list;
+	struct list_head collection_list;
+};
+
+struct kvm_device_ops;
+
+struct kvm_device {
+	const struct kvm_device_ops *ops;
+	struct kvm *kvm;
+	void *private;
+	struct list_head vm_node;
+};
+
+struct kvm_device_attr;
+
+struct kvm_device_ops {
+	const char *name;
+	int (*create)(struct kvm_device *, u32);
+	void (*init)(struct kvm_device *);
+	void (*destroy)(struct kvm_device *);
+	void (*release)(struct kvm_device *);
+	int (*set_attr)(struct kvm_device *, struct kvm_device_attr *);
+	int (*get_attr)(struct kvm_device *, struct kvm_device_attr *);
+	int (*has_attr)(struct kvm_device *, struct kvm_device_attr *);
+	long (*ioctl)(struct kvm_device *, unsigned int, unsigned long);
+	int (*mmap)(struct kvm_device *, struct vm_area_struct *);
+};
+
+struct kvm_device_attr {
+	__u32 flags;
+	__u32 group;
+	__u64 attr;
+	__u64 addr;
+};
+
+struct vgic_register_region {
+	unsigned int reg_offset;
+	unsigned int len;
+	unsigned int bits_per_irq;
+	unsigned int access_flags;
+	union {
+		unsigned long (*read)(struct kvm_vcpu *, gpa_t, unsigned int);
+		unsigned long (*its_read)(struct kvm *, struct vgic_its *, gpa_t, unsigned int);
+	};
+	union {
+		void (*write)(struct kvm_vcpu *, gpa_t, unsigned int, unsigned long);
+		void (*its_write)(struct kvm *, struct vgic_its *, gpa_t, unsigned int, unsigned long);
+	};
+	unsigned long (*uaccess_read)(struct kvm_vcpu *, gpa_t, unsigned int);
+	union {
+		int (*uaccess_write)(struct kvm_vcpu *, gpa_t, unsigned int, unsigned long);
+		int (*uaccess_its_write)(struct kvm *, struct vgic_its *, gpa_t, unsigned int, unsigned long);
+	};
+};
+
+struct kvm_coalesced_mmio {
+	__u64 phys_addr;
+	__u32 len;
+	union {
+		__u32 pad;
+		__u32 pio;
+	};
+	__u8 data[8];
+};
+
+struct kvm_coalesced_mmio_ring {
+	__u32 first;
+	__u32 last;
+	struct kvm_coalesced_mmio coalesced_mmio[0];
+};
+
+struct kvm_irq_routing_table {
+	int chip[988];
+	u32 nr_rt_entries;
+	struct hlist_head map[0];
+};
+
+struct mmu_notifier_range;
+
+struct mmu_notifier_ops {
+	void (*release)(struct mmu_notifier *, struct mm_struct *);
+	int (*clear_flush_young)(struct mmu_notifier *, struct mm_struct *, unsigned long, unsigned long);
+	int (*clear_young)(struct mmu_notifier *, struct mm_struct *, unsigned long, unsigned long);
+	int (*test_young)(struct mmu_notifier *, struct mm_struct *, unsigned long);
+	void (*change_pte)(struct mmu_notifier *, struct mm_struct *, unsigned long, pte_t);
+	int (*invalidate_range_start)(struct mmu_notifier *, const struct mmu_notifier_range *);
+	void (*invalidate_range_end)(struct mmu_notifier *, const struct mmu_notifier_range *);
+	void (*arch_invalidate_secondary_tlbs)(struct mmu_notifier *, struct mm_struct *, unsigned long, unsigned long);
+	struct mmu_notifier * (*alloc_notifier)(struct mm_struct *);
+	void (*free_notifier)(struct mmu_notifier *);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+enum mmu_notifier_event {
+	MMU_NOTIFY_UNMAP = 0,
+	MMU_NOTIFY_CLEAR = 1,
+	MMU_NOTIFY_PROTECTION_VMA = 2,
+	MMU_NOTIFY_PROTECTION_PAGE = 3,
+	MMU_NOTIFY_SOFT_DIRTY = 4,
+	MMU_NOTIFY_RELEASE = 5,
+	MMU_NOTIFY_MIGRATE = 6,
+	MMU_NOTIFY_EXCLUSIVE = 7,
+};
+
+struct mmu_notifier_range {
+	struct mm_struct *mm;
+	unsigned long start;
+	unsigned long end;
+	unsigned int flags;
+	enum mmu_notifier_event event;
+	void *owner;
+};
+
+enum kvm_stat_kind {
+	KVM_STAT_VM = 0,
+	KVM_STAT_VCPU = 1,
+};
+
+struct _kvm_stats_desc;
+
+struct kvm_stat_data {
+	struct kvm *kvm;
+	const struct _kvm_stats_desc *desc;
+	enum kvm_stat_kind kind;
+};
+
+struct kvm_stats_desc {
+	__u32 flags;
+	__s16 exponent;
+	__u16 size;
+	__u32 offset;
+	__u32 bucket_size;
+	char name[0];
+};
+
+struct _kvm_stats_desc {
+	struct kvm_stats_desc desc;
+	char name[48];
+};
+
+struct preempt_ops {
+	void (*sched_in)(struct preempt_notifier *, int);
+	void (*sched_out)(struct preempt_notifier *, struct task_struct *);
+};
+
+struct kvm_debug_exit_arch {
+	__u32 hsr;
+	__u32 hsr_high;
+	__u64 far;
+};
+
+struct kvm_hyperv_exit {
+	__u32 type;
+	__u32 pad1;
+	union {
+		struct {
+			__u32 msr;
+			__u32 pad2;
+			__u64 control;
+			__u64 evt_page;
+			__u64 msg_page;
+		} synic;
+		struct {
+			__u64 input;
+			__u64 result;
+			__u64 params[2];
+		} hcall;
+		struct {
+			__u32 msr;
+			__u32 pad2;
+			__u64 control;
+			__u64 status;
+			__u64 send_page;
+			__u64 recv_page;
+			__u64 pending_page;
+		} syndbg;
+	} u;
+};
+
+struct kvm_xen_exit {
+	__u32 type;
+	union {
+		struct {
+			__u32 longmode;
+			__u32 cpl;
+			__u64 input;
+			__u64 result;
+			__u64 params[6];
+		} hcall;
+	} u;
+};
+
+struct kvm_sync_regs {
+	__u64 device_irq_level;
+};
+
+struct kvm_run {
+	__u8 request_interrupt_window;
+	__u8 immediate_exit;
+	__u8 padding1[6];
+	__u32 exit_reason;
+	__u8 ready_for_interrupt_injection;
+	__u8 if_flag;
+	__u16 flags;
+	__u64 cr8;
+	__u64 apic_base;
+	union {
+		struct {
+			__u64 hardware_exit_reason;
+		} hw;
+		struct {
+			__u64 hardware_entry_failure_reason;
+			__u32 cpu;
+		} fail_entry;
+		struct {
+			__u32 exception;
+			__u32 error_code;
+		} ex;
+		struct {
+			__u8 direction;
+			__u8 size;
+			__u16 port;
+			__u32 count;
+			__u64 data_offset;
+		} io;
+		struct {
+			struct kvm_debug_exit_arch arch;
+		} debug;
+		struct {
+			__u64 phys_addr;
+			__u8 data[8];
+			__u32 len;
+			__u8 is_write;
+		} mmio;
+		struct {
+			__u64 nr;
+			__u64 args[6];
+			__u64 ret;
+			union {
+				__u64 flags;
+			};
+		} hypercall;
+		struct {
+			__u64 rip;
+			__u32 is_write;
+			__u32 pad;
+		} tpr_access;
+		struct {
+			__u8 icptcode;
+			__u16 ipa;
+			__u32 ipb;
+		} s390_sieic;
+		__u64 s390_reset_flags;
+		struct {
+			__u64 trans_exc_code;
+			__u32 pgm_code;
+		} s390_ucontrol;
+		struct {
+			__u32 dcrn;
+			__u32 data;
+			__u8 is_write;
+		} dcr;
+		struct {
+			__u32 suberror;
+			__u32 ndata;
+			__u64 data[16];
+		} internal;
+		struct {
+			__u32 suberror;
+			__u32 ndata;
+			__u64 flags;
+			union {
+				struct {
+					__u8 insn_size;
+					__u8 insn_bytes[15];
+				};
+			};
+		} emulation_failure;
+		struct {
+			__u64 gprs[32];
+		} osi;
+		struct {
+			__u64 nr;
+			__u64 ret;
+			__u64 args[9];
+		} papr_hcall;
+		struct {
+			__u16 subchannel_id;
+			__u16 subchannel_nr;
+			__u32 io_int_parm;
+			__u32 io_int_word;
+			__u32 ipb;
+			__u8 dequeued;
+		} s390_tsch;
+		struct {
+			__u32 epr;
+		} epr;
+		struct {
+			__u32 type;
+			__u32 ndata;
+			union {
+				__u64 data[16];
+			};
+		} system_event;
+		struct {
+			__u64 addr;
+			__u8 ar;
+			__u8 reserved;
+			__u8 fc;
+			__u8 sel1;
+			__u16 sel2;
+		} s390_stsi;
+		struct {
+			__u8 vector;
+		} eoi;
+		struct kvm_hyperv_exit hyperv;
+		struct {
+			__u64 esr_iss;
+			__u64 fault_ipa;
+		} arm_nisv;
+		struct {
+			__u8 error;
+			__u8 pad[7];
+			__u32 reason;
+			__u32 index;
+			__u64 data;
+		} msr;
+		struct kvm_xen_exit xen;
+		struct {
+			unsigned long extension_id;
+			unsigned long function_id;
+			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 {
+			__u32 flags;
+		} notify;
+		char padding[256];
+	};
+	__u64 kvm_valid_regs;
+	__u64 kvm_dirty_regs;
+	union {
+		struct kvm_sync_regs regs;
+		char padding[2048];
+	} s;
+};
+
+struct vgic_redist_region {
+	u32 index;
+	gpa_t base;
+	u32 count;
+	u32 free_index;
+	struct list_head list;
+};
+
+struct interval_tree_node {
+	struct rb_node rb;
+	unsigned long start;
+	unsigned long last;
+	unsigned long __subtree_last;
+};
+
+typedef u64 gfn_t;
+
+struct kvm_arch_memory_slot {};
+
+struct kvm_memory_slot {
+	struct hlist_node id_node[2];
+	struct interval_tree_node hva_node[2];
+	struct rb_node gfn_node[2];
+	gfn_t base_gfn;
+	unsigned long npages;
+	unsigned long *dirty_bitmap;
+	struct kvm_arch_memory_slot arch;
+	unsigned long userspace_addr;
+	u32 flags;
+	short id;
+	u16 as_id;
+};
+
+typedef void (*btf_trace_kvm_unmap_hva_range)(void *, unsigned long, unsigned long);
+
+typedef void (*btf_trace_kvm_set_spte_hva)(void *, unsigned long);
+
+typedef void (*btf_trace_kvm_age_hva)(void *, unsigned long, unsigned long);
+
+typedef void (*btf_trace_kvm_test_age_hva)(void *, unsigned long);
+
+struct trace_print_flags {
+	unsigned long mask;
+	const char *name;
+};
+
+struct syscore_ops {
+	struct list_head node;
+	int (*suspend)();
+	void (*resume)();
+	void (*shutdown)();
+};
+
+union kvm_mmu_notifier_arg {
+	pte_t pte;
+};
+
+struct miscdevice {
+	int minor;
+	const char *name;
+	const struct file_operations *fops;
+	struct list_head list;
+	struct device *parent;
+	struct device *this_device;
+	const struct attribute_group **groups;
+	const char *nodename;
+	umode_t mode;
+};
+
+enum kvm_mr_change {
+	KVM_MR_CREATE = 0,
+	KVM_MR_DELETE = 1,
+	KVM_MR_MOVE = 2,
+	KVM_MR_FLAGS_ONLY = 3,
+};
+
+enum {
+	OUTSIDE_GUEST_MODE = 0,
+	IN_GUEST_MODE = 1,
+	EXITING_GUEST_MODE = 2,
+	READING_SHADOW_PAGE_TABLES = 3,
+};
+
+enum kvm_bus {
+	KVM_MMIO_BUS = 0,
+	KVM_PIO_BUS = 1,
+	KVM_VIRTIO_CCW_NOTIFY_BUS = 2,
+	KVM_FAST_MMIO_BUS = 3,
+	KVM_NR_BUSES = 4,
+};
+
+enum kobject_action {
+	KOBJ_ADD = 0,
+	KOBJ_REMOVE = 1,
+	KOBJ_CHANGE = 2,
+	KOBJ_MOVE = 3,
+	KOBJ_ONLINE = 4,
+	KOBJ_OFFLINE = 5,
+	KOBJ_BIND = 6,
+	KOBJ_UNBIND = 7,
+};
+
+typedef unsigned int xa_mark_t;
+
+struct trace_event_raw_kvm_userspace_exit {
+	struct trace_entry ent;
+	__u32 reason;
+	int errno;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_vcpu_wakeup {
+	struct trace_entry ent;
+	__u64 ns;
+	bool waited;
+	bool valid;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_set_irq {
+	struct trace_entry ent;
+	unsigned int gsi;
+	int level;
+	int irq_source_id;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_ack_irq {
+	struct trace_entry ent;
+	unsigned int irqchip;
+	unsigned int pin;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_mmio {
+	struct trace_entry ent;
+	u32 type;
+	u32 len;
+	u64 gpa;
+	u64 val;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_fpu {
+	struct trace_entry ent;
+	u32 load;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_halt_poll_ns {
+	struct trace_entry ent;
+	bool grow;
+	unsigned int vcpu_id;
+	unsigned int new;
+	unsigned int old;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_dirty_ring_push {
+	struct trace_entry ent;
+	int index;
+	u32 dirty_index;
+	u32 reset_index;
+	u32 slot;
+	u64 offset;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_dirty_ring_reset {
+	struct trace_entry ent;
+	int index;
+	u32 dirty_index;
+	u32 reset_index;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_dirty_ring_exit {
+	struct trace_entry ent;
+	int vcpu_id;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_unmap_hva_range {
+	struct trace_entry ent;
+	unsigned long start;
+	unsigned long end;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_set_spte_hva {
+	struct trace_entry ent;
+	unsigned long hva;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_age_hva {
+	struct trace_entry ent;
+	unsigned long start;
+	unsigned long end;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_test_age_hva {
+	struct trace_entry ent;
+	unsigned long hva;
+	char __data[0];
+};
+
+typedef u64 hpa_t;
+
+struct kvm_userspace_memory_region {
+	__u32 slot;
+	__u32 flags;
+	__u64 guest_phys_addr;
+	__u64 memory_size;
+	__u64 userspace_addr;
+};
+
+struct kvm_memslot_iter {
+	struct kvm_memslots *slots;
+	struct rb_node *node;
+	struct kvm_memory_slot *slot;
+};
+
+typedef u64 hfn_t;
+
+typedef hfn_t kvm_pfn_t;
+
+typedef unsigned long hva_t;
+
+struct kvm_coalesced_mmio_zone {
+	__u64 addr;
+	__u32 size;
+	union {
+		__u32 pad;
+		__u32 pio;
+	};
+};
+
+struct kvm_irqfd {
+	__u32 fd;
+	__u32 gsi;
+	__u32 flags;
+	__u32 resamplefd;
+	__u8 pad[16];
+};
+
+struct kvm_irq_level {
+	union {
+		__u32 irq;
+		__s32 status;
+	};
+	__u32 level;
+};
+
+struct kvm_msi {
+	__u32 address_lo;
+	__u32 address_hi;
+	__u32 data;
+	__u32 flags;
+	__u32 devid;
+	__u8 pad[12];
+};
+
+struct kvm_ioeventfd {
+	__u64 datamatch;
+	__u64 addr;
+	__u32 len;
+	__s32 fd;
+	__u32 flags;
+	__u8 pad[36];
+};
+
+struct kvm_irq_routing_irqchip {
+	__u32 irqchip;
+	__u32 pin;
+};
+
+struct kvm_irq_routing_msi {
+	__u32 address_lo;
+	__u32 address_hi;
+	__u32 data;
+	union {
+		__u32 pad;
+		__u32 devid;
+	};
+};
+
+struct kvm_irq_routing_s390_adapter {
+	__u64 ind_addr;
+	__u64 summary_addr;
+	__u64 ind_offset;
+	__u32 summary_offset;
+	__u32 adapter_id;
+};
+
+struct kvm_irq_routing_hv_sint {
+	__u32 vcpu;
+	__u32 sint;
+};
+
+struct kvm_irq_routing_xen_evtchn {
+	__u32 port;
+	__u32 vcpu;
+	__u32 priority;
+};
+
+struct kvm_irq_routing_entry {
+	__u32 gsi;
+	__u32 type;
+	__u32 flags;
+	__u32 pad;
+	union {
+		struct kvm_irq_routing_irqchip irqchip;
+		struct kvm_irq_routing_msi msi;
+		struct kvm_irq_routing_s390_adapter adapter;
+		struct kvm_irq_routing_hv_sint hv_sint;
+		struct kvm_irq_routing_xen_evtchn xen_evtchn;
+		__u32 pad[8];
+	} u;
+};
+
+struct kvm_dirty_log {
+	__u32 slot;
+	__u32 padding1;
+	union {
+		void __attribute__((btf_type_tag("user"))) *dirty_bitmap;
+		__u64 padding2;
+	};
+};
+
+struct kvm_clear_dirty_log {
+	__u32 slot;
+	__u32 num_pages;
+	__u64 first_page;
+	union {
+		void __attribute__((btf_type_tag("user"))) *dirty_bitmap;
+		__u64 padding2;
+	};
+};
+
+struct kvm_sregs {};
+
+struct kvm_fpu {};
+
+struct kvm_regs {
+	struct user_pt_regs regs;
+	__u64 sp_el1;
+	__u64 elr_el1;
+	__u64 spsr[5];
+	long: 64;
+	struct user_fpsimd_state fp_regs;
+};
+
+struct kvm_translation {
+	__u64 linear_address;
+	__u64 physical_address;
+	__u8 valid;
+	__u8 writeable;
+	__u8 usermode;
+	__u8 pad[5];
+};
+
+struct kvm_guest_debug {
+	__u32 control;
+	__u32 pad;
+	struct kvm_guest_debug_arch arch;
+};
+
+struct kvm_stats_header {
+	__u32 flags;
+	__u32 name_size;
+	__u32 num_desc;
+	__u32 id_offset;
+	__u32 desc_offset;
+	__u32 data_offset;
+};
+
+struct kvm_gfn_range;
+
+typedef bool (*hva_handler_t)(struct kvm *, struct kvm_gfn_range *);
+
+typedef void (*on_lock_fn_t)(struct kvm *, unsigned long, unsigned long);
+
+typedef void (*on_unlock_fn_t)(struct kvm *);
+
+struct kvm_hva_range {
+	unsigned long start;
+	unsigned long end;
+	union kvm_mmu_notifier_arg arg;
+	hva_handler_t handler;
+	on_lock_fn_t on_lock;
+	on_unlock_fn_t on_unlock;
+	bool flush_on_ret;
+	bool may_block;
+};
+
+struct kvm_gfn_range {
+	struct kvm_memory_slot *slot;
+	gfn_t start;
+	gfn_t end;
+	union kvm_mmu_notifier_arg arg;
+	bool may_block;
+};
+
+struct trace_event_data_offsets_kvm_userspace_exit {};
+
+struct trace_event_data_offsets_kvm_vcpu_wakeup {};
+
+struct trace_event_data_offsets_kvm_set_irq {};
+
+struct trace_event_data_offsets_kvm_ack_irq {};
+
+struct trace_event_data_offsets_kvm_mmio {};
+
+struct trace_event_data_offsets_kvm_fpu {};
+
+struct trace_event_data_offsets_kvm_halt_poll_ns {};
+
+struct trace_event_data_offsets_kvm_dirty_ring_push {};
+
+struct trace_event_data_offsets_kvm_dirty_ring_reset {};
+
+struct trace_event_data_offsets_kvm_dirty_ring_exit {};
+
+struct trace_event_data_offsets_kvm_unmap_hva_range {};
+
+struct trace_event_data_offsets_kvm_set_spte_hva {};
+
+struct trace_event_data_offsets_kvm_age_hva {};
+
+struct trace_event_data_offsets_kvm_test_age_hva {};
+
+struct kvm_host_map {
+	struct page *page;
+	void *hva;
+	kvm_pfn_t pfn;
+	kvm_pfn_t gfn;
+};
+
+struct gfn_to_hva_cache {
+	u64 generation;
+	gpa_t gpa;
+	unsigned long hva;
+	unsigned long len;
+	struct kvm_memory_slot *memslot;
+};
+
+struct kvm_enable_cap {
+	__u32 cap;
+	__u32 flags;
+	__u64 args[4];
+	__u8 pad[64];
+};
+
+typedef int (*kvm_vm_thread_fn_t)(struct kvm *, uintptr_t);
+
+struct kvm_vm_worker_thread_context {
+	struct kvm *kvm;
+	struct task_struct *parent;
+	struct completion init_done;
+	kvm_vm_thread_fn_t thread_fn;
+	uintptr_t data;
+	int err;
+};
+
+struct kvm_irq_routing {
+	__u32 nr;
+	__u32 flags;
+	struct kvm_irq_routing_entry entries[0];
+};
+
+struct kvm_create_device {
+	__u32 type;
+	__u32 fd;
+	__u32 flags;
+};
+
+struct kvm_signal_mask {
+	__u32 len;
+	__u8 sigset[0];
+};
+
+enum {
+	kvm_ioeventfd_flag_nr_datamatch = 0,
+	kvm_ioeventfd_flag_nr_pio = 1,
+	kvm_ioeventfd_flag_nr_deassign = 2,
+	kvm_ioeventfd_flag_nr_virtio_ccw_notify = 3,
+	kvm_ioeventfd_flag_nr_fast_mmio = 4,
+	kvm_ioeventfd_flag_nr_max = 5,
+};
+
+enum {
+	WORK_STRUCT_PENDING_BIT = 0,
+	WORK_STRUCT_INACTIVE_BIT = 1,
+	WORK_STRUCT_PWQ_BIT = 2,
+	WORK_STRUCT_LINKED_BIT = 3,
+	WORK_STRUCT_COLOR_SHIFT = 4,
+	WORK_STRUCT_COLOR_BITS = 4,
+	WORK_STRUCT_PENDING = 1,
+	WORK_STRUCT_INACTIVE = 2,
+	WORK_STRUCT_PWQ = 4,
+	WORK_STRUCT_LINKED = 8,
+	WORK_STRUCT_STATIC = 0,
+	WORK_NR_COLORS = 16,
+	WORK_CPU_UNBOUND = 32,
+	WORK_STRUCT_FLAG_BITS = 8,
+	WORK_OFFQ_FLAG_BASE = 4,
+	__WORK_OFFQ_CANCELING = 4,
+	WORK_OFFQ_FLAG_BITS = 1,
+	WORK_OFFQ_POOL_SHIFT = 5,
+	WORK_OFFQ_LEFT = 59,
+	WORK_OFFQ_POOL_BITS = 31,
+	WORK_BUSY_PENDING = 1,
+	WORK_BUSY_RUNNING = 2,
+	WORKER_DESC_LEN = 24,
+};
+
+struct kvm_irq_ack_notifier {
+	struct hlist_node link;
+	unsigned int gsi;
+	void (*irq_acked)(struct kvm_irq_ack_notifier *);
+};
+
+struct kvm_s390_adapter_int {
+	u64 ind_addr;
+	u64 summary_addr;
+	u64 ind_offset;
+	u32 summary_offset;
+	u32 adapter_id;
+};
+
+struct kvm_hv_sint {
+	u32 vcpu;
+	u32 sint;
+};
+
+struct kvm_xen_evtchn {
+	u32 port;
+	u32 vcpu_id;
+	int vcpu_idx;
+	u32 priority;
+};
+
+struct kvm_kernel_irq_routing_entry {
+	u32 gsi;
+	u32 type;
+	int (*set)(struct kvm_kernel_irq_routing_entry *, struct kvm *, int, int, bool);
+	union {
+		struct {
+			unsigned int irqchip;
+			unsigned int pin;
+		} irqchip;
+		struct {
+			u32 address_lo;
+			u32 address_hi;
+			u32 data;
+			u32 flags;
+			u32 devid;
+		} msi;
+		struct kvm_s390_adapter_int adapter;
+		struct kvm_hv_sint hv_sint;
+		struct kvm_xen_evtchn xen_evtchn;
+	};
+	struct hlist_node link;
+};
+
+typedef struct poll_table_struct poll_table;
+
+struct irq_bypass_producer;
+
+struct irq_bypass_consumer {
+	struct list_head node;
+	void *token;
+	int (*add_producer)(struct irq_bypass_consumer *, struct irq_bypass_producer *);
+	void (*del_producer)(struct irq_bypass_consumer *, struct irq_bypass_producer *);
+	void (*stop)(struct irq_bypass_consumer *);
+	void (*start)(struct irq_bypass_consumer *);
+};
+
+struct kvm_kernel_irqfd_resampler;
+
+struct kvm_kernel_irqfd {
+	struct kvm *kvm;
+	wait_queue_entry_t wait;
+	struct kvm_kernel_irq_routing_entry irq_entry;
+	seqcount_spinlock_t irq_entry_sc;
+	int gsi;
+	struct work_struct inject;
+	struct kvm_kernel_irqfd_resampler *resampler;
+	struct eventfd_ctx *resamplefd;
+	struct list_head resampler_link;
+	struct eventfd_ctx *eventfd;
+	struct list_head list;
+	poll_table pt;
+	struct work_struct shutdown;
+	struct irq_bypass_consumer consumer;
+	struct irq_bypass_producer *producer;
+};
+
+struct kvm_kernel_irqfd_resampler {
+	struct kvm *kvm;
+	struct list_head list;
+	struct kvm_irq_ack_notifier notifier;
+	struct list_head link;
+};
+
+struct irq_bypass_producer {
+	struct list_head node;
+	void *token;
+	int irq;
+	int (*add_consumer)(struct irq_bypass_producer *, struct irq_bypass_consumer *);
+	void (*del_consumer)(struct irq_bypass_producer *, struct irq_bypass_consumer *);
+	void (*stop)(struct irq_bypass_producer *);
+	void (*start)(struct irq_bypass_producer *);
+};
+
+struct _ioeventfd {
+	struct list_head list;
+	u64 addr;
+	int length;
+	struct eventfd_ctx *eventfd;
+	u64 datamatch;
+	struct kvm_io_device dev;
+	u8 bus_idx;
+	bool wildcard;
+};
+
+struct fd {
+	struct file *file;
+	unsigned int flags;
+};
+
+enum kvm_device_type {
+	KVM_DEV_TYPE_FSL_MPIC_20 = 1,
+	KVM_DEV_TYPE_FSL_MPIC_42 = 2,
+	KVM_DEV_TYPE_XICS = 3,
+	KVM_DEV_TYPE_VFIO = 4,
+	KVM_DEV_TYPE_ARM_VGIC_V2 = 5,
+	KVM_DEV_TYPE_FLIC = 6,
+	KVM_DEV_TYPE_ARM_VGIC_V3 = 7,
+	KVM_DEV_TYPE_ARM_VGIC_ITS = 8,
+	KVM_DEV_TYPE_XIVE = 9,
+	KVM_DEV_TYPE_ARM_PV_TIME = 10,
+	KVM_DEV_TYPE_RISCV_AIA = 11,
+	KVM_DEV_TYPE_MAX = 12,
+};
+
+struct kvm_vfio_file {
+	struct list_head node;
+	struct file *file;
+};
+
+struct kvm_vfio {
+	struct list_head file_list;
+	struct mutex lock;
+	bool noncoherent;
+};
+
+struct kvm_coalesced_mmio_dev {
+	struct list_head list;
+	struct kvm_io_device dev;
+	struct kvm *kvm;
+	struct kvm_coalesced_mmio_zone zone;
+};
+
+typedef void (*btf_trace_kvm_entry)(void *, unsigned long);
+
+typedef void (*btf_trace_kvm_exit)(void *, int, unsigned int, unsigned long);
+
+typedef void (*btf_trace_kvm_guest_fault)(void *, unsigned long, unsigned long, unsigned long, unsigned long long);
+
+typedef void (*btf_trace_kvm_access_fault)(void *, unsigned long);
+
+typedef void (*btf_trace_kvm_irq_line)(void *, unsigned int, int, int, int);
+
+typedef void (*btf_trace_kvm_mmio_emulate)(void *, unsigned long, unsigned long, unsigned long);
+
+typedef void (*btf_trace_kvm_set_way_flush)(void *, unsigned long, bool);
+
+typedef void (*btf_trace_kvm_toggle_cache)(void *, unsigned long, bool, bool);
+
+typedef void (*btf_trace_kvm_timer_update_irq)(void *, unsigned long, __u32, int);
+
+struct timer_map;
+
+typedef void (*btf_trace_kvm_get_timer_map)(void *, unsigned long, struct timer_map *);
+
+struct timer_map {
+	struct arch_timer_context *direct_vtimer;
+	struct arch_timer_context *direct_ptimer;
+	struct arch_timer_context *emul_vtimer;
+	struct arch_timer_context *emul_ptimer;
+};
+
+typedef kvm_pte_t __attribute__((btf_type_tag("rcu"))) *kvm_pteref_t;
+
+enum kvm_pgtable_stage2_flags {
+	KVM_PGTABLE_S2_NOFWB = 1,
+	KVM_PGTABLE_S2_IDMAP = 2,
+	KVM_PGTABLE_S2_PREFAULT_BLOCK = 4,
+};
+
+struct kvm_pgtable_mm_ops;
+
+struct kvm_pgtable_pte_ops;
+
+struct kvm_pgtable {
+	u32 ia_bits;
+	u32 start_level;
+	kvm_pteref_t pgd;
+	struct kvm_pgtable_mm_ops *mm_ops;
+	struct kvm_s2_mmu *mmu;
+	enum kvm_pgtable_stage2_flags flags;
+	struct kvm_pgtable_pte_ops *pte_ops;
+};
+
+struct kvm_pgtable_mm_ops {
+	void * (*zalloc_page)(void *);
+	void * (*zalloc_pages_exact)(size_t);
+	void (*free_pages_exact)(void *, size_t);
+	void (*free_unlinked_table)(void *, u32);
+	void (*get_page)(void *);
+	void (*put_page)(void *);
+	int (*page_count)(void *);
+	void * (*phys_to_virt)(phys_addr_t);
+	phys_addr_t (*virt_to_phys)(void *);
+	void (*dcache_clean_inval_poc)(void *, size_t);
+	void (*icache_inval_pou)(void *, size_t);
+};
+
+typedef bool (*kvm_pgtable_force_pte_cb_t)(u64, u64, enum kvm_pgtable_prot);
+
+typedef bool (*kvm_pgtable_pte_is_counted_cb_t)(kvm_pte_t, u32);
+
+struct kvm_pgtable_pte_ops {
+	kvm_pgtable_force_pte_cb_t force_pte_cb;
+	kvm_pgtable_pte_is_counted_cb_t pte_is_counted_cb;
+};
+
+typedef void (*btf_trace_kvm_timer_save_state)(void *, struct arch_timer_context *);
+
+typedef void (*btf_trace_kvm_timer_restore_state)(void *, struct arch_timer_context *);
+
+typedef void (*btf_trace_kvm_timer_hrtimer_expire)(void *, struct arch_timer_context *);
+
+typedef void (*btf_trace_kvm_timer_emulate)(void *, struct arch_timer_context *, bool);
+
+typedef void (*btf_trace_kvm_nested_eret)(void *, struct kvm_vcpu *, unsigned long, unsigned long);
+
+typedef void (*btf_trace_kvm_inject_nested_exception)(void *, struct kvm_vcpu *, u64, int);
+
+typedef void (*btf_trace_kvm_forward_sysreg_trap)(void *, struct kvm_vcpu *, u32, bool);
+
+enum __kvm_host_smccc_func {
+	__KVM_HOST_SMCCC_FUNC___kvm_get_mdcr_el2 = 1,
+	__KVM_HOST_SMCCC_FUNC___pkvm_init = 2,
+	__KVM_HOST_SMCCC_FUNC___pkvm_create_private_mapping = 3,
+	__KVM_HOST_SMCCC_FUNC___pkvm_cpu_set_vector = 4,
+	__KVM_HOST_SMCCC_FUNC___kvm_enable_ssbs = 5,
+	__KVM_HOST_SMCCC_FUNC___vgic_v3_init_lrs = 6,
+	__KVM_HOST_SMCCC_FUNC___vgic_v3_get_gic_config = 7,
+	__KVM_HOST_SMCCC_FUNC___kvm_flush_vm_context = 8,
+	__KVM_HOST_SMCCC_FUNC___kvm_tlb_flush_vmid_ipa = 9,
+	__KVM_HOST_SMCCC_FUNC___kvm_tlb_flush_vmid_ipa_nsh = 10,
+	__KVM_HOST_SMCCC_FUNC___kvm_tlb_flush_vmid = 11,
+	__KVM_HOST_SMCCC_FUNC___kvm_tlb_flush_vmid_range = 12,
+	__KVM_HOST_SMCCC_FUNC___kvm_flush_cpu_context = 13,
+	__KVM_HOST_SMCCC_FUNC___pkvm_alloc_module_va = 14,
+	__KVM_HOST_SMCCC_FUNC___pkvm_map_module_page = 15,
+	__KVM_HOST_SMCCC_FUNC___pkvm_unmap_module_page = 16,
+	__KVM_HOST_SMCCC_FUNC___pkvm_init_module = 17,
+	__KVM_HOST_SMCCC_FUNC___pkvm_register_hcall = 18,
+	__KVM_HOST_SMCCC_FUNC___pkvm_iommu_init = 19,
+	__KVM_HOST_SMCCC_FUNC___pkvm_prot_finalize = 20,
+	__KVM_HOST_SMCCC_FUNC___pkvm_host_share_hyp = 21,
+	__KVM_HOST_SMCCC_FUNC___pkvm_host_unshare_hyp = 22,
+	__KVM_HOST_SMCCC_FUNC___pkvm_host_map_guest = 23,
+	__KVM_HOST_SMCCC_FUNC___pkvm_host_unmap_guest = 24,
+	__KVM_HOST_SMCCC_FUNC___pkvm_relax_perms = 25,
+	__KVM_HOST_SMCCC_FUNC___pkvm_wrprotect = 26,
+	__KVM_HOST_SMCCC_FUNC___pkvm_dirty_log = 27,
+	__KVM_HOST_SMCCC_FUNC___pkvm_tlb_flush_vmid = 28,
+	__KVM_HOST_SMCCC_FUNC___kvm_adjust_pc = 29,
+	__KVM_HOST_SMCCC_FUNC___kvm_vcpu_run = 30,
+	__KVM_HOST_SMCCC_FUNC___kvm_timer_set_cntvoff = 31,
+	__KVM_HOST_SMCCC_FUNC___vgic_v3_save_vmcr_aprs = 32,
+	__KVM_HOST_SMCCC_FUNC___vgic_v3_restore_vmcr_aprs = 33,
+	__KVM_HOST_SMCCC_FUNC___pkvm_init_vm = 34,
+	__KVM_HOST_SMCCC_FUNC___pkvm_init_vcpu = 35,
+	__KVM_HOST_SMCCC_FUNC___pkvm_start_teardown_vm = 36,
+	__KVM_HOST_SMCCC_FUNC___pkvm_finalize_teardown_vm = 37,
+	__KVM_HOST_SMCCC_FUNC___pkvm_reclaim_dying_guest_page = 38,
+	__KVM_HOST_SMCCC_FUNC___pkvm_vcpu_load = 39,
+	__KVM_HOST_SMCCC_FUNC___pkvm_vcpu_put = 40,
+	__KVM_HOST_SMCCC_FUNC___pkvm_vcpu_sync_state = 41,
+	__KVM_HOST_SMCCC_FUNC___pkvm_load_tracing = 42,
+	__KVM_HOST_SMCCC_FUNC___pkvm_teardown_tracing = 43,
+	__KVM_HOST_SMCCC_FUNC___pkvm_enable_tracing = 44,
+	__KVM_HOST_SMCCC_FUNC___pkvm_swap_reader_tracing = 45,
+	__KVM_HOST_SMCCC_FUNC___pkvm_enable_event = 46,
+	__KVM_HOST_SMCCC_FUNC___pkvm_hyp_alloc_mgt_refill = 47,
+	__KVM_HOST_SMCCC_FUNC___pkvm_hyp_alloc_mgt_reclaimable = 48,
+	__KVM_HOST_SMCCC_FUNC___pkvm_hyp_alloc_mgt_reclaim = 49,
+	__KVM_HOST_SMCCC_FUNC___pkvm_host_iommu_alloc_domain = 50,
+	__KVM_HOST_SMCCC_FUNC___pkvm_host_iommu_free_domain = 51,
+	__KVM_HOST_SMCCC_FUNC___pkvm_host_iommu_attach_dev = 52,
+	__KVM_HOST_SMCCC_FUNC___pkvm_host_iommu_detach_dev = 53,
+	__KVM_HOST_SMCCC_FUNC___pkvm_host_iommu_map_pages = 54,
+	__KVM_HOST_SMCCC_FUNC___pkvm_host_iommu_unmap_pages = 55,
+	__KVM_HOST_SMCCC_FUNC___pkvm_host_iommu_iova_to_phys = 56,
+	__KVM_HOST_SMCCC_FUNC___pkvm_host_hvc_pd = 57,
+	__KVM_HOST_SMCCC_FUNC___pkvm_stage2_snapshot = 58,
+	__KVM_HOST_SMCCC_FUNC___dynamic_hcalls = 128,
+};
+
+enum vcpu_sysreg {
+	__INVALID_SYSREG__ = 0,
+	MPIDR_EL1 = 1,
+	CLIDR_EL1 = 2,
+	CSSELR_EL1 = 3,
+	SCTLR_EL1 = 4,
+	ACTLR_EL1 = 5,
+	CPACR_EL1 = 6,
+	ZCR_EL1 = 7,
+	TTBR0_EL1 = 8,
+	TTBR1_EL1 = 9,
+	TCR_EL1 = 10,
+	TCR2_EL1 = 11,
+	ESR_EL1 = 12,
+	AFSR0_EL1 = 13,
+	AFSR1_EL1 = 14,
+	FAR_EL1 = 15,
+	MAIR_EL1 = 16,
+	VBAR_EL1 = 17,
+	CONTEXTIDR_EL1 = 18,
+	TPIDR_EL0 = 19,
+	TPIDRRO_EL0 = 20,
+	TPIDR_EL1 = 21,
+	AMAIR_EL1 = 22,
+	CNTKCTL_EL1 = 23,
+	PAR_EL1 = 24,
+	MDSCR_EL1 = 25,
+	MDCCINT_EL1 = 26,
+	OSLSR_EL1 = 27,
+	DISR_EL1 = 28,
+	PMCR_EL0 = 29,
+	PMSELR_EL0 = 30,
+	PMEVCNTR0_EL0 = 31,
+	PMEVCNTR30_EL0 = 61,
+	PMCCNTR_EL0 = 62,
+	PMEVTYPER0_EL0 = 63,
+	PMEVTYPER30_EL0 = 93,
+	PMCCFILTR_EL0 = 94,
+	PMCNTENSET_EL0 = 95,
+	PMINTENSET_EL1 = 96,
+	PMOVSSET_EL0 = 97,
+	PMUSERENR_EL0 = 98,
+	APIAKEYLO_EL1 = 99,
+	APIAKEYHI_EL1 = 100,
+	APIBKEYLO_EL1 = 101,
+	APIBKEYHI_EL1 = 102,
+	APDAKEYLO_EL1 = 103,
+	APDAKEYHI_EL1 = 104,
+	APDBKEYLO_EL1 = 105,
+	APDBKEYHI_EL1 = 106,
+	APGAKEYLO_EL1 = 107,
+	APGAKEYHI_EL1 = 108,
+	ELR_EL1 = 109,
+	SP_EL1 = 110,
+	SPSR_EL1 = 111,
+	CNTVOFF_EL2 = 112,
+	CNTV_CVAL_EL0 = 113,
+	CNTV_CTL_EL0 = 114,
+	CNTP_CVAL_EL0 = 115,
+	CNTP_CTL_EL0 = 116,
+	RGSR_EL1 = 117,
+	GCR_EL1 = 118,
+	TFSR_EL1 = 119,
+	TFSRE0_EL1 = 120,
+	PIR_EL1 = 121,
+	PIRE0_EL1 = 122,
+	DACR32_EL2 = 123,
+	IFSR32_EL2 = 124,
+	FPEXC32_EL2 = 125,
+	DBGVCR32_EL2 = 126,
+	VPIDR_EL2 = 127,
+	VMPIDR_EL2 = 128,
+	SCTLR_EL2 = 129,
+	ACTLR_EL2 = 130,
+	HCR_EL2 = 131,
+	MDCR_EL2 = 132,
+	CPTR_EL2 = 133,
+	HSTR_EL2 = 134,
+	HACR_EL2 = 135,
+	HCRX_EL2 = 136,
+	TTBR0_EL2 = 137,
+	TTBR1_EL2 = 138,
+	TCR_EL2 = 139,
+	VTTBR_EL2 = 140,
+	VTCR_EL2 = 141,
+	SPSR_EL2 = 142,
+	ELR_EL2 = 143,
+	AFSR0_EL2 = 144,
+	AFSR1_EL2 = 145,
+	ESR_EL2 = 146,
+	FAR_EL2 = 147,
+	HPFAR_EL2 = 148,
+	MAIR_EL2 = 149,
+	AMAIR_EL2 = 150,
+	VBAR_EL2 = 151,
+	RVBAR_EL2 = 152,
+	CONTEXTIDR_EL2 = 153,
+	TPIDR_EL2 = 154,
+	CNTHCTL_EL2 = 155,
+	SP_EL2 = 156,
+	HFGRTR_EL2 = 157,
+	HFGWTR_EL2 = 158,
+	HFGITR_EL2 = 159,
+	HDFGRTR_EL2 = 160,
+	HDFGWTR_EL2 = 161,
+	HAFGRTR_EL2 = 162,
+	CNTHP_CTL_EL2 = 163,
+	CNTHP_CVAL_EL2 = 164,
+	CNTHV_CTL_EL2 = 165,
+	CNTHV_CVAL_EL2 = 166,
+	NR_SYS_REGS = 167,
+};
+
+struct trace_event_raw_kvm_entry {
+	struct trace_entry ent;
+	unsigned long vcpu_pc;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_exit {
+	struct trace_entry ent;
+	int ret;
+	unsigned int esr_ec;
+	unsigned long vcpu_pc;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_guest_fault {
+	struct trace_entry ent;
+	unsigned long vcpu_pc;
+	unsigned long hsr;
+	unsigned long hxfar;
+	unsigned long long ipa;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_access_fault {
+	struct trace_entry ent;
+	unsigned long ipa;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_irq_line {
+	struct trace_entry ent;
+	unsigned int type;
+	int vcpu_idx;
+	int irq_num;
+	int level;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_mmio_emulate {
+	struct trace_entry ent;
+	unsigned long vcpu_pc;
+	unsigned long instr;
+	unsigned long cpsr;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_set_way_flush {
+	struct trace_entry ent;
+	unsigned long vcpu_pc;
+	bool cache;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_toggle_cache {
+	struct trace_entry ent;
+	unsigned long vcpu_pc;
+	bool was;
+	bool now;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_timer_update_irq {
+	struct trace_entry ent;
+	unsigned long vcpu_id;
+	__u32 irq;
+	int level;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_get_timer_map {
+	struct trace_entry ent;
+	unsigned long vcpu_id;
+	int direct_vtimer;
+	int direct_ptimer;
+	int emul_vtimer;
+	int emul_ptimer;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_timer_save_state {
+	struct trace_entry ent;
+	unsigned long ctl;
+	unsigned long long cval;
+	int timer_idx;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_timer_restore_state {
+	struct trace_entry ent;
+	unsigned long ctl;
+	unsigned long long cval;
+	int timer_idx;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_timer_hrtimer_expire {
+	struct trace_entry ent;
+	int timer_idx;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_timer_emulate {
+	struct trace_entry ent;
+	int timer_idx;
+	bool should_fire;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_nested_eret {
+	struct trace_entry ent;
+	struct kvm_vcpu *vcpu;
+	unsigned long elr_el2;
+	unsigned long spsr_el2;
+	unsigned long target_mode;
+	unsigned long hcr_el2;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_inject_nested_exception {
+	struct trace_entry ent;
+	struct kvm_vcpu *vcpu;
+	unsigned long esr_el2;
+	int type;
+	unsigned long spsr_el2;
+	unsigned long pc;
+	unsigned long source_mode;
+	unsigned long hcr_el2;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_forward_sysreg_trap {
+	struct trace_entry ent;
+	u64 pc;
+	u32 sysreg;
+	bool is_read;
+	char __data[0];
+};
+
+struct kvm_host_data {
+	struct kvm_cpu_context host_ctxt;
+};
+
+struct kvm_nvhe_init_params {
+	unsigned long mair_el2;
+	unsigned long tcr_el2;
+	unsigned long tpidr_el2;
+	unsigned long stack_hyp_va;
+	unsigned long stack_pa;
+	phys_addr_t pgd_pa;
+	unsigned long hcr_el2;
+	unsigned long hfgwtr_el2;
+	unsigned long vttbr;
+	unsigned long vtcr;
+};
+
+struct kvm_vcpu_init {
+	__u32 target;
+	__u32 features[7];
+};
+
+struct kvm_vcpu_events {
+	struct {
+		__u8 serror_pending;
+		__u8 serror_has_esr;
+		__u8 ext_dabt_pending;
+		__u8 pad[5];
+		__u64 serror_esr;
+	} exception;
+	__u32 reserved[12];
+};
+
+struct kvm_one_reg {
+	__u64 id;
+	__u64 addr;
+};
+
+struct kvm_arm_device_addr {
+	__u64 id;
+	__u64 addr;
+};
+
+struct kvm_arm_counter_offset {
+	__u64 counter_offset;
+	__u64 reserved;
+};
+
+struct kvm_arm_copy_mte_tags {
+	__u64 guest_ipa;
+	__u64 length;
+	void __attribute__((btf_type_tag("user"))) *addr;
+	__u64 flags;
+	__u64 reserved[2];
+};
+
+struct psci_0_1_function_ids {
+	u32 cpu_suspend;
+	u32 cpu_on;
+	u32 cpu_off;
+	u32 migrate;
+};
+
+struct trace_event_data_offsets_kvm_entry {};
+
+struct trace_event_data_offsets_kvm_exit {};
+
+struct trace_event_data_offsets_kvm_guest_fault {};
+
+struct trace_event_data_offsets_kvm_access_fault {};
+
+struct trace_event_data_offsets_kvm_irq_line {};
+
+struct trace_event_data_offsets_kvm_mmio_emulate {};
+
+struct trace_event_data_offsets_kvm_set_way_flush {};
+
+struct trace_event_data_offsets_kvm_toggle_cache {};
+
+struct trace_event_data_offsets_kvm_timer_update_irq {};
+
+struct trace_event_data_offsets_kvm_get_timer_map {};
+
+struct trace_event_data_offsets_kvm_timer_save_state {};
+
+struct trace_event_data_offsets_kvm_timer_restore_state {};
+
+struct trace_event_data_offsets_kvm_timer_hrtimer_expire {};
+
+struct trace_event_data_offsets_kvm_timer_emulate {};
+
+struct trace_event_data_offsets_kvm_nested_eret {};
+
+struct trace_event_data_offsets_kvm_inject_nested_exception {};
+
+struct trace_event_data_offsets_kvm_forward_sysreg_trap {};
+
+struct kvm_reg_list {
+	__u64 n;
+	__u64 reg[0];
+};
+
+enum kvm_pgtable_walk_flags {
+	KVM_PGTABLE_WALK_LEAF = 1,
+	KVM_PGTABLE_WALK_TABLE_PRE = 2,
+	KVM_PGTABLE_WALK_TABLE_POST = 4,
+	KVM_PGTABLE_WALK_SHARED = 8,
+	KVM_PGTABLE_WALK_HANDLE_FAULT = 16,
+	KVM_PGTABLE_WALK_SKIP_BBM_TLBI = 32,
+	KVM_PGTABLE_WALK_SKIP_CMO = 64,
+};
+
+struct hyp_shared_pfn {
+	u64 pfn;
+	int count;
+	struct rb_node node;
+};
+
+struct kvm_pinned_page {
+	struct page *page;
+	u64 ipa;
+	u8 order;
+	u16 pins;
+};
+
+typedef void (*rcu_callback_t)(struct callback_head *);
+
+enum kvm_smccc_filter_action {
+	KVM_SMCCC_FILTER_HANDLE = 0,
+	KVM_SMCCC_FILTER_DENY = 1,
+	KVM_SMCCC_FILTER_FWD_TO_USER = 2,
+	NR_SMCCC_FILTER_ACTIONS = 3,
+};
+
+enum {
+	KVM_REG_ARM_STD_HYP_BIT_PV_TIME = 0,
+	KVM_REG_ARM_STD_HYP_BMAP_BIT_COUNT = 1,
+};
+
+enum {
+	KVM_REG_ARM_STD_BIT_TRNG_V1_0 = 0,
+	KVM_REG_ARM_STD_BMAP_BIT_COUNT = 1,
+};
+
+enum {
+	KVM_REG_ARM_VENDOR_HYP_BIT_FUNC_FEAT = 0,
+	KVM_REG_ARM_VENDOR_HYP_BIT_PTP = 1,
+	KVM_REG_ARM_VENDOR_HYP_BMAP_BIT_COUNT = 2,
+};
+
+enum clocksource_ids {
+	CSID_GENERIC = 0,
+	CSID_ARM_ARCH_COUNTER = 1,
+	CSID_MAX = 2,
+};
+
+struct system_time_snapshot {
+	u64 cycles;
+	ktime_t real;
+	ktime_t boot;
+	ktime_t raw;
+	enum clocksource_ids cs_id;
+	unsigned int clock_was_set_seq;
+	u8 cs_was_changed_seq;
+	u32 mono_shift;
+	u32 mono_mult;
+};
+
+struct kvm_smccc_filter {
+	__u32 base;
+	__u32 nr_functions;
+	__u8 action;
+	__u8 pad[15];
+};
+
+typedef void (*btf_trace_kvm_wfx_arm64)(void *, unsigned long, bool);
+
+typedef void (*btf_trace_kvm_hvc_arm64)(void *, unsigned long, unsigned long, unsigned long);
+
+typedef void (*btf_trace_kvm_arm_setup_debug)(void *, struct kvm_vcpu *, __u32);
+
+typedef void (*btf_trace_kvm_arm_clear_debug)(void *, __u32);
+
+typedef void (*btf_trace_kvm_arm_set_dreg32)(void *, const char *, __u64);
+
+typedef void (*btf_trace_kvm_arm_set_regset)(void *, const char *, int, __u64 *, __u64 *);
+
+typedef void (*btf_trace_trap_reg)(void *, const char *, int, bool, u64);
+
+typedef void (*btf_trace_kvm_handle_sys_reg)(void *, unsigned long);
+
+struct sys_reg_params;
+
+struct sys_reg_desc;
+
+typedef void (*btf_trace_kvm_sys_access)(void *, unsigned long, struct sys_reg_params *, const struct sys_reg_desc *);
+
+struct sys_reg_params {
+	u8 Op0;
+	u8 Op1;
+	u8 CRn;
+	u8 CRm;
+	u8 Op2;
+	u64 regval;
+	bool is_write;
+};
+
+struct sys_reg_desc {
+	const char *name;
+	enum {
+		AA32_DIRECT = 0,
+		AA32_LO = 1,
+		AA32_HI = 2,
+	} aarch32_map;
+	u8 Op0;
+	u8 Op1;
+	u8 CRn;
+	u8 CRm;
+	u8 Op2;
+	bool (*access)(struct kvm_vcpu *, struct sys_reg_params *, const struct sys_reg_desc *);
+	u64 (*reset)(struct kvm_vcpu *, const struct sys_reg_desc *);
+	int reg;
+	u64 val;
+	int (*__get_user)(struct kvm_vcpu *, const struct sys_reg_desc *, u64 *);
+	int (*set_user)(struct kvm_vcpu *, const struct sys_reg_desc *, u64);
+	unsigned int (*visibility)(const struct kvm_vcpu *, const struct sys_reg_desc *);
+};
+
+typedef void (*btf_trace_kvm_set_guest_debug)(void *, struct kvm_vcpu *, __u32);
+
+typedef int (*exit_handle_fn)(struct kvm_vcpu *);
+
+struct trace_event_raw_kvm_wfx_arm64 {
+	struct trace_entry ent;
+	unsigned long vcpu_pc;
+	bool is_wfe;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_hvc_arm64 {
+	struct trace_entry ent;
+	unsigned long vcpu_pc;
+	unsigned long r0;
+	unsigned long imm;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_arm_setup_debug {
+	struct trace_entry ent;
+	struct kvm_vcpu *vcpu;
+	__u32 guest_debug;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_arm_clear_debug {
+	struct trace_entry ent;
+	__u32 guest_debug;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_arm_set_dreg32 {
+	struct trace_entry ent;
+	const char *name;
+	__u64 value;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_arm_set_regset {
+	struct trace_entry ent;
+	const char *name;
+	int len;
+	u64 ctrls[16];
+	u64 values[16];
+	char __data[0];
+};
+
+struct trace_event_raw_trap_reg {
+	struct trace_entry ent;
+	const char *fn;
+	int reg;
+	bool is_write;
+	u64 write_value;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_handle_sys_reg {
+	struct trace_entry ent;
+	unsigned long hsr;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_sys_access {
+	struct trace_entry ent;
+	unsigned long vcpu_pc;
+	bool is_write;
+	const char *name;
+	u8 Op0;
+	u8 Op1;
+	u8 CRn;
+	u8 CRm;
+	u8 Op2;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_set_guest_debug {
+	struct trace_entry ent;
+	struct kvm_vcpu *vcpu;
+	__u32 guest_debug;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_kvm_wfx_arm64 {};
+
+struct trace_event_data_offsets_kvm_hvc_arm64 {};
+
+struct trace_event_data_offsets_kvm_arm_setup_debug {};
+
+struct trace_event_data_offsets_kvm_arm_clear_debug {};
+
+struct trace_event_data_offsets_kvm_arm_set_dreg32 {};
+
+struct trace_event_data_offsets_kvm_arm_set_regset {};
+
+struct trace_event_data_offsets_trap_reg {};
+
+struct trace_event_data_offsets_kvm_handle_sys_reg {};
+
+struct trace_event_data_offsets_kvm_sys_access {};
+
+struct trace_event_data_offsets_kvm_set_guest_debug {};
+
+struct sve_state_reg_region {
+	unsigned int koffset;
+	unsigned int klen;
+	unsigned int upad;
+};
+
+enum kvm_arch_timers {
+	TIMER_PTIMER = 0,
+	TIMER_VTIMER = 1,
+	NR_KVM_EL0_TIMERS = 2,
+	TIMER_HVTIMER = 2,
+	TIMER_HPTIMER = 3,
+	NR_KVM_TIMERS = 4,
+};
+
+enum kvm_arch_timer_regs {
+	TIMER_REG_CNT = 0,
+	TIMER_REG_CVAL = 1,
+	TIMER_REG_TVAL = 2,
+	TIMER_REG_CTL = 3,
+	TIMER_REG_VOFF = 4,
+};
+
+enum vgic_type {
+	VGIC_V2 = 0,
+	VGIC_V3 = 1,
+};
+
+struct __va_list {
+	void *__stack;
+	void *__gr_top;
+	void *__vr_top;
+	int __gr_offs;
+	int __vr_offs;
+};
+
+typedef __builtin_va_list va_list;
+
+struct kvm_nvhe_stacktrace_info {
+	unsigned long stack_base;
+	unsigned long overflow_stack_base;
+	unsigned long fp;
+	unsigned long pc;
+};
+
+struct vgic_vmcr {
+	u32 grpen0;
+	u32 grpen1;
+	u32 ackctl;
+	u32 fiqen;
+	u32 cbpr;
+	u32 eoim;
+	u32 abpr;
+	u32 bpr;
+	u32 pmr;
+};
+
+enum pkvm_moveable_reg_type {
+	PKVM_MREG_MEMORY = 0,
+	PKVM_MREG_PROTECTED_RANGE = 1,
+};
+
+struct pkvm_moveable_reg {
+	phys_addr_t start;
+	u64 size;
+	enum pkvm_moveable_reg_type type;
+};
+
+struct reserved_mem_ops;
+
+struct reserved_mem {
+	const char *name;
+	unsigned long fdt_node;
+	unsigned long phandle;
+	const struct reserved_mem_ops *ops;
+	phys_addr_t base;
+	phys_addr_t size;
+	void *priv;
+};
+
+struct reserved_mem_ops {
+	int (*device_init)(struct reserved_mem *, struct device *);
+	void (*device_release)(struct reserved_mem *, struct device *);
+};
+
+struct pkvm_mod_sec_mapping {
+	struct pkvm_module_section *sec;
+	enum kvm_pgtable_prot prot;
+};
+
+struct hyp_event_id {
+	unsigned short id;
+	void *data;
+};
+
+struct kvm_protected_vm_info {
+	__u64 firmware_size;
+	__u64 __reserved[7];
+};
+
+struct cyclecounter;
+
+struct timecounter {
+	const struct cyclecounter *cc;
+	u64 cycle_last;
+	u64 nsec;
+	u64 mask;
+	u64 frac;
+};
+
+struct cyclecounter {
+	u64 (*read)(const struct cyclecounter *);
+	u64 mask;
+	u32 mult;
+	u32 shift;
+};
+
+enum irq_domain_bus_token {
+	DOMAIN_BUS_ANY = 0,
+	DOMAIN_BUS_WIRED = 1,
+	DOMAIN_BUS_GENERIC_MSI = 2,
+	DOMAIN_BUS_PCI_MSI = 3,
+	DOMAIN_BUS_PLATFORM_MSI = 4,
+	DOMAIN_BUS_NEXUS = 5,
+	DOMAIN_BUS_IPI = 6,
+	DOMAIN_BUS_FSL_MC_MSI = 7,
+	DOMAIN_BUS_TI_SCI_INTA_MSI = 8,
+	DOMAIN_BUS_WAKEUP = 9,
+	DOMAIN_BUS_VMD_MSI = 10,
+	DOMAIN_BUS_PCI_DEVICE_MSI = 11,
+	DOMAIN_BUS_PCI_DEVICE_MSIX = 12,
+	DOMAIN_BUS_DMAR = 13,
+	DOMAIN_BUS_AMDVI = 14,
+	DOMAIN_BUS_PCI_DEVICE_IMS = 15,
+};
+
+struct irq_fwspec;
+
+struct irq_domain_ops {
+	int (*match)(struct irq_domain *, struct device_node *, enum irq_domain_bus_token);
+	int (*select)(struct irq_domain *, struct irq_fwspec *, enum irq_domain_bus_token);
+	int (*map)(struct irq_domain *, unsigned int, irq_hw_number_t);
+	void (*unmap)(struct irq_domain *, unsigned int);
+	int (*xlate)(struct irq_domain *, struct device_node *, const u32 *, unsigned int, unsigned long *, unsigned int *);
+	int (*alloc)(struct irq_domain *, unsigned int, unsigned int, void *);
+	void (*free)(struct irq_domain *, unsigned int, unsigned int);
+	int (*activate)(struct irq_domain *, struct irq_data *, bool);
+	void (*deactivate)(struct irq_domain *, struct irq_data *);
+	int (*translate)(struct irq_domain *, struct irq_fwspec *, unsigned long *, unsigned int *);
+};
+
+struct irq_domain_chip_generic;
+
+struct msi_parent_ops;
+
+struct irq_domain {
+	struct list_head link;
+	const char *name;
+	const struct irq_domain_ops *ops;
+	void *host_data;
+	unsigned int flags;
+	unsigned int mapcount;
+	struct mutex mutex;
+	struct irq_domain *root;
+	struct fwnode_handle *fwnode;
+	enum irq_domain_bus_token bus_token;
+	struct irq_domain_chip_generic *gc;
+	struct device *dev;
+	struct device *pm_dev;
+	struct irq_domain *parent;
+	const struct msi_parent_ops *msi_parent_ops;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+	irq_hw_number_t hwirq_max;
+	unsigned int revmap_size;
+	struct xarray revmap_tree;
+	struct irq_data __attribute__((btf_type_tag("rcu"))) *revmap[0];
+};
+
+enum irq_gc_flags {
+	IRQ_GC_INIT_MASK_CACHE = 1,
+	IRQ_GC_INIT_NESTED_LOCK = 2,
+	IRQ_GC_MASK_CACHE_PER_TYPE = 4,
+	IRQ_GC_NO_MASK = 8,
+	IRQ_GC_BE_IO = 16,
+};
+
+struct irq_chip_generic;
+
+struct irq_domain_chip_generic {
+	unsigned int irqs_per_chip;
+	unsigned int num_chips;
+	unsigned int irq_flags_to_clear;
+	unsigned int irq_flags_to_set;
+	enum irq_gc_flags gc_flags;
+	struct irq_chip_generic *gc[0];
+};
+
+struct irq_chip_regs {
+	unsigned long enable;
+	unsigned long disable;
+	unsigned long mask;
+	unsigned long ack;
+	unsigned long eoi;
+	unsigned long type;
+	unsigned long polarity;
+};
+
+struct irq_chip_type {
+	struct irq_chip chip;
+	struct irq_chip_regs regs;
+	irq_flow_handler_t handler;
+	u32 type;
+	u32 mask_cache_priv;
+	u32 *mask_cache;
+};
+
+struct irq_chip_generic {
+	raw_spinlock_t lock;
+	void *reg_base;
+	u32 (*reg_readl)(void *);
+	void (*reg_writel)(u32, void *);
+	void (*suspend)(struct irq_chip_generic *);
+	void (*resume)(struct irq_chip_generic *);
+	unsigned int irq_base;
+	unsigned int irq_cnt;
+	u32 mask_cache;
+	u32 type_cache;
+	u32 polarity_cache;
+	u32 wake_enabled;
+	u32 wake_active;
+	unsigned int num_ct;
+	void *private;
+	unsigned long installed;
+	unsigned long unused;
+	struct irq_domain *domain;
+	struct list_head list;
+	struct irq_chip_type chip_types[0];
+};
+
+struct msi_domain_info;
+
+struct msi_parent_ops {
+	u32 supported_flags;
+	const char *prefix;
+	bool (*init_dev_msi_info)(struct device *, struct irq_domain *, struct irq_domain *, struct msi_domain_info *);
+};
+
+struct msi_domain_ops;
+
+struct msi_domain_info {
+	u32 flags;
+	enum irq_domain_bus_token bus_token;
+	unsigned int hwsize;
+	struct msi_domain_ops *ops;
+	struct irq_chip *chip;
+	void *chip_data;
+	irq_flow_handler_t handler;
+	void *handler_data;
+	const char *handler_name;
+	void *data;
+};
+
+struct msi_alloc_info;
+
+typedef struct msi_alloc_info msi_alloc_info_t;
+
+struct msi_domain_ops {
+	irq_hw_number_t (*get_hwirq)(struct msi_domain_info *, msi_alloc_info_t *);
+	int (*msi_init)(struct irq_domain *, struct msi_domain_info *, unsigned int, irq_hw_number_t, msi_alloc_info_t *);
+	void (*msi_free)(struct irq_domain *, struct msi_domain_info *, unsigned int);
+	int (*msi_prepare)(struct irq_domain *, struct device *, int, msi_alloc_info_t *);
+	void (*prepare_desc)(struct irq_domain *, msi_alloc_info_t *, struct msi_desc *);
+	void (*set_desc)(msi_alloc_info_t *, struct msi_desc *);
+	int (*domain_alloc_irqs)(struct irq_domain *, struct device *, int);
+	void (*domain_free_irqs)(struct irq_domain *, struct device *);
+	void (*msi_post_free)(struct irq_domain *, struct device *);
+};
+
+struct msi_alloc_info {
+	struct msi_desc *desc;
+	irq_hw_number_t hwirq;
+	unsigned long flags;
+	union {
+		unsigned long ul;
+		void *ptr;
+	} scratchpad[2];
+};
+
+struct irq_fwspec {
+	struct fwnode_handle *fwnode;
+	int param_count;
+	u32 param[16];
+};
+
+enum hrtimer_mode {
+	HRTIMER_MODE_ABS = 0,
+	HRTIMER_MODE_REL = 1,
+	HRTIMER_MODE_PINNED = 2,
+	HRTIMER_MODE_SOFT = 4,
+	HRTIMER_MODE_HARD = 8,
+	HRTIMER_MODE_ABS_PINNED = 2,
+	HRTIMER_MODE_REL_PINNED = 3,
+	HRTIMER_MODE_ABS_SOFT = 4,
+	HRTIMER_MODE_REL_SOFT = 5,
+	HRTIMER_MODE_ABS_PINNED_SOFT = 6,
+	HRTIMER_MODE_REL_PINNED_SOFT = 7,
+	HRTIMER_MODE_ABS_HARD = 8,
+	HRTIMER_MODE_REL_HARD = 9,
+	HRTIMER_MODE_ABS_PINNED_HARD = 10,
+	HRTIMER_MODE_REL_PINNED_HARD = 11,
+};
+
+enum {
+	IRQD_TRIGGER_MASK = 15,
+	IRQD_SETAFFINITY_PENDING = 256,
+	IRQD_ACTIVATED = 512,
+	IRQD_NO_BALANCING = 1024,
+	IRQD_PER_CPU = 2048,
+	IRQD_AFFINITY_SET = 4096,
+	IRQD_LEVEL = 8192,
+	IRQD_WAKEUP_STATE = 16384,
+	IRQD_MOVE_PCNTXT = 32768,
+	IRQD_IRQ_DISABLED = 65536,
+	IRQD_IRQ_MASKED = 131072,
+	IRQD_IRQ_INPROGRESS = 262144,
+	IRQD_WAKEUP_ARMED = 524288,
+	IRQD_FORWARDED_TO_VCPU = 1048576,
+	IRQD_AFFINITY_MANAGED = 2097152,
+	IRQD_IRQ_STARTED = 4194304,
+	IRQD_MANAGED_SHUTDOWN = 8388608,
+	IRQD_SINGLE_TARGET = 16777216,
+	IRQD_DEFAULT_TRIGGER_SET = 33554432,
+	IRQD_CAN_RESERVE = 67108864,
+	IRQD_HANDLE_ENFORCE_IRQCTX = 134217728,
+	IRQD_AFFINITY_ON_ACTIVATE = 268435456,
+	IRQD_IRQ_ENABLED_ON_SUSPEND = 536870912,
+	IRQD_RESEND_WHEN_IN_PROGRESS = 1073741824,
+};
+
+enum {
+	IRQCHIP_FWNODE_REAL = 0,
+	IRQCHIP_FWNODE_NAMED = 1,
+	IRQCHIP_FWNODE_NAMED_ID = 2,
+};
+
+struct arch_timer_kvm_info {
+	struct timecounter timecounter;
+	int virtual_irq;
+	int physical_irq;
+};
+
+union trap_config {
+	u64 val;
+	struct {
+		unsigned long cgt: 10;
+		unsigned long fgt: 4;
+		unsigned long bit: 6;
+		unsigned long pol: 1;
+		unsigned long fgf: 5;
+		unsigned long unused: 37;
+		unsigned long mbz: 1;
+	};
+};
+
+struct encoding_to_trap_config {
+	const u32 encoding;
+	const u32 end;
+	const union trap_config tc;
+	const unsigned int line;
+};
+
+enum cgt_group_id {
+	__RESERVED__ = 0,
+	CGT_HCR_TID1 = 1,
+	CGT_HCR_TID2 = 2,
+	CGT_HCR_TID3 = 3,
+	CGT_HCR_IMO = 4,
+	CGT_HCR_FMO = 5,
+	CGT_HCR_TIDCP = 6,
+	CGT_HCR_TACR = 7,
+	CGT_HCR_TSW = 8,
+	CGT_HCR_TPC = 9,
+	CGT_HCR_TPU = 10,
+	CGT_HCR_TTLB = 11,
+	CGT_HCR_TVM = 12,
+	CGT_HCR_TDZ = 13,
+	CGT_HCR_TRVM = 14,
+	CGT_HCR_TLOR = 15,
+	CGT_HCR_TERR = 16,
+	CGT_HCR_APK = 17,
+	CGT_HCR_NV = 18,
+	CGT_HCR_NV_nNV2 = 19,
+	CGT_HCR_NV1_nNV2 = 20,
+	CGT_HCR_AT = 21,
+	CGT_HCR_nFIEN = 22,
+	CGT_HCR_TID4 = 23,
+	CGT_HCR_TICAB = 24,
+	CGT_HCR_TOCU = 25,
+	CGT_HCR_ENSCXT = 26,
+	CGT_HCR_TTLBIS = 27,
+	CGT_HCR_TTLBOS = 28,
+	CGT_MDCR_TPMCR = 29,
+	CGT_MDCR_TPM = 30,
+	CGT_MDCR_TDE = 31,
+	CGT_MDCR_TDA = 32,
+	CGT_MDCR_TDOSA = 33,
+	CGT_MDCR_TDRA = 34,
+	CGT_MDCR_E2PB = 35,
+	CGT_MDCR_TPMS = 36,
+	CGT_MDCR_TTRF = 37,
+	CGT_MDCR_E2TB = 38,
+	CGT_MDCR_TDCC = 39,
+	__MULTIPLE_CONTROL_BITS__ = 40,
+	CGT_HCR_IMO_FMO = 40,
+	CGT_HCR_TID2_TID4 = 41,
+	CGT_HCR_TTLB_TTLBIS = 42,
+	CGT_HCR_TTLB_TTLBOS = 43,
+	CGT_HCR_TVM_TRVM = 44,
+	CGT_HCR_TPU_TICAB = 45,
+	CGT_HCR_TPU_TOCU = 46,
+	CGT_HCR_NV1_nNV2_ENSCXT = 47,
+	CGT_MDCR_TPM_TPMCR = 48,
+	CGT_MDCR_TDE_TDA = 49,
+	CGT_MDCR_TDE_TDOSA = 50,
+	CGT_MDCR_TDE_TDRA = 51,
+	CGT_MDCR_TDCC_TDE_TDA = 52,
+	__COMPLEX_CONDITIONS__ = 53,
+	CGT_CNTHCTL_EL1PCTEN = 53,
+	CGT_CNTHCTL_EL1PTEN = 54,
+	__NR_CGT_GROUP_IDS__ = 55,
+};
+
+enum trap_behaviour {
+	BEHAVE_HANDLE_LOCALLY = 0,
+	BEHAVE_FORWARD_READ = 1,
+	BEHAVE_FORWARD_WRITE = 2,
+	BEHAVE_FORWARD_ANY = 3,
+};
+
+struct trap_bits {
+	const enum vcpu_sysreg index;
+	const enum trap_behaviour behaviour;
+	const u64 value;
+	const u64 mask;
+};
+
+typedef enum trap_behaviour (*complex_condition_check)(struct kvm_vcpu *);
+
+enum fgt_group_id {
+	__NO_FGT_GROUP__ = 0,
+	HFGxTR_GROUP = 1,
+	HDFGRTR_GROUP = 2,
+	HDFGWTR_GROUP = 3,
+	HFGITR_GROUP = 4,
+	HAFGRTR_GROUP = 5,
+	__NR_FGT_GROUP_IDS__ = 6,
+};
+
+enum fg_filter_id {
+	__NO_FGF__ = 0,
+	HCRX_FGTnXS = 1,
+	__NR_FG_FILTER_IDS__ = 2,
+};
+
+enum exception_type {
+	except_type_sync = 0,
+	except_type_irq = 128,
+	except_type_fiq = 256,
+	except_type_serror = 384,
+};
+
+typedef void (*btf_trace_vgic_update_irq_pending)(void *, unsigned long, __u32, bool);
+
+struct vgic_global {
+	enum vgic_type type;
+	phys_addr_t vcpu_base;
+	void *vcpu_base_va;
+	void *vcpu_hyp_va;
+	void *vctrl_base;
+	void *vctrl_hyp;
+	int nr_lr;
+	unsigned int maint_irq;
+	int max_gic_vcpus;
+	bool can_emulate_gicv2;
+	bool has_gicv4;
+	bool has_gicv4_1;
+	bool no_hw_deactivation;
+	struct static_key_false gicv3_cpuif;
+	u32 ich_vtr_el2;
+};
+
+struct trace_event_raw_vgic_update_irq_pending {
+	struct trace_entry ent;
+	unsigned long vcpu_id;
+	__u32 irq;
+	bool level;
+	char __data[0];
+};
+
+typedef int (*list_cmp_func_t)(void *, const struct list_head *, const struct list_head *);
+
+struct trace_event_data_offsets_vgic_update_irq_pending {};
+
+enum gic_type {
+	GIC_V2 = 0,
+	GIC_V3 = 1,
+};
+
+struct gic_kvm_info {
+	enum gic_type type;
+	struct resource vcpu;
+	unsigned int maint_irq;
+	bool no_maint_irq_mask;
+	struct resource vctrl;
+	bool has_v4;
+	bool has_v4_1;
+	bool no_hw_deactivation;
+};
+
+struct its_vlpi_map {
+	struct its_vm *vm;
+	struct its_vpe *vpe;
+	u32 vintid;
+	u8 properties;
+	bool db_enabled;
+};
+
+struct vgic_reg_attr {
+	struct kvm_vcpu *vcpu;
+	gpa_t addr;
+};
+
+struct vgic_its_abi {
+	int cte_esz;
+	int dte_esz;
+	int ite_esz;
+	int (*save_tables)(struct vgic_its *);
+	int (*restore_tables)(struct vgic_its *);
+	int (*commit)(struct vgic_its *);
+};
+
+struct vgic_translation_cache_entry {
+	struct list_head entry;
+	phys_addr_t db;
+	u32 devid;
+	u32 eventid;
+	struct vgic_irq *irq;
+};
+
+struct its_device {
+	struct list_head dev_list;
+	struct list_head itt_head;
+	u32 num_eventid_bits;
+	gpa_t itt_addr;
+	u32 device_id;
+};
+
+struct its_collection;
+
+struct its_ite {
+	struct list_head ite_list;
+	struct vgic_irq *irq;
+	struct its_collection *collection;
+	u32 event_id;
+};
+
+struct its_collection {
+	struct list_head coll_list;
+	u32 collection_id;
+	u32 target_addr;
+};
+
+typedef int (*entry_fn_t)(struct vgic_its *, u32, void *, void *);
+
+struct vgic_state_iter {
+	int nr_cpus;
+	int nr_spis;
+	int nr_lpis;
+	int dist_id;
+	int vcpu_id;
+	int intid;
+	int lpi_idx;
+	u32 *lpi_array;
+};
+
+struct kvm_iommu_driver {
+	int (*init_driver)();
+	void (*remove_driver)();
+	pkvm_handle_t (*get_iommu_id)(struct device *);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+	u64 android_kabi_reserved5;
+	u64 android_kabi_reserved6;
+	u64 android_kabi_reserved7;
+	u64 android_kabi_reserved8;
+};
+
+enum kvm_power_domain_type {
+	KVM_POWER_DOMAIN_NONE = 0,
+	KVM_POWER_DOMAIN_HOST_HVC = 1,
+};
+
+struct kvm_power_domain {
+	enum kvm_power_domain_type type;
+	union {
+		u64 device_id;
+	};
+};
+
+struct kvm_hyp_iommu {
+	struct kvm_power_domain power_domain;
+	u32 lock;
+	bool power_is_off;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct kvm_hyp_iommu_domain {
+	atomic_t refs;
+	pkvm_handle_t domain_id;
+	void *priv;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct pmu_hw_events;
+
+struct platform_device;
+
+struct arm_pmu {
+	struct pmu pmu;
+	cpumask_t supported_cpus;
+	char *name;
+	int pmuver;
+	irqreturn_t (*handle_irq)(struct arm_pmu *);
+	void (*enable)(struct perf_event *);
+	void (*disable)(struct perf_event *);
+	int (*get_event_idx)(struct pmu_hw_events *, struct perf_event *);
+	void (*clear_event_idx)(struct pmu_hw_events *, struct perf_event *);
+	int (*set_event_filter)(struct hw_perf_event *, struct perf_event_attr *);
+	u64 (*read_counter)(struct perf_event *);
+	void (*write_counter)(struct perf_event *, u64);
+	void (*start)(struct arm_pmu *);
+	void (*stop)(struct arm_pmu *);
+	void (*reset)(void *);
+	int (*map_event)(struct perf_event *);
+	int num_events;
+	bool secure_access;
+	unsigned long pmceid_bitmap[1];
+	unsigned long pmceid_ext_bitmap[1];
+	struct platform_device *plat_device;
+	struct pmu_hw_events __attribute__((btf_type_tag("percpu"))) *hw_events;
+	struct hlist_node node;
+	struct notifier_block cpu_pm_nb;
+	const struct attribute_group *attr_groups[5];
+	u64 reg_pmmir;
+	unsigned long acpi_cpuid;
+};
+
+struct pmu_hw_events {
+	struct perf_event *events[32];
+	unsigned long used_mask[1];
+	raw_spinlock_t pmu_lock;
+	struct arm_pmu *percpu_pmu;
+	int irq;
+};
+
+struct pdev_archdata {};
+
+struct platform_device_id;
+
+struct mfd_cell;
+
+struct platform_device {
+	const char *name;
+	int id;
+	bool id_auto;
+	struct device dev;
+	u64 platform_dma_mask;
+	struct device_dma_parameters dma_parms;
+	u32 num_resources;
+	struct resource *resource;
+	const struct platform_device_id *id_entry;
+	const char *driver_override;
+	struct mfd_cell *mfd_cell;
+	struct pdev_archdata archdata;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct platform_device_id {
+	char name[20];
+	kernel_ulong_t driver_data;
+};
+
+struct kvm_pmu_event_filter {
+	__u16 base_event;
+	__u16 nevents;
+	__u8 action;
+	__u8 pad[3];
+};
+
+struct arm_pmu_entry {
+	struct list_head entry;
+	struct arm_pmu *arm_pmu;
+};
+
+struct kvm_pgtable_snapshot {
+	struct kvm_pgtable pgtable;
+	struct kvm_hyp_memcache mc;
+	void *pgd_hva;
+	size_t pgd_pages;
+	phys_addr_t *used_pages_hva;
+	size_t num_used_pages;
+	size_t used_pages_idx;
+};
+
+struct kvm_pgtable_visit_ctx;
+
+typedef int (*kvm_pgtable_visitor_fn_t)(const struct kvm_pgtable_visit_ctx *, enum kvm_pgtable_walk_flags);
+
+struct kvm_pgtable_walker {
+	const kvm_pgtable_visitor_fn_t cb;
+	void * const arg;
+	const enum kvm_pgtable_walk_flags flags;
+};
+
+struct kvm_pgtable_visit_ctx {
+	kvm_pte_t *ptep;
+	kvm_pte_t old;
+	void *arg;
+	struct kvm_pgtable_mm_ops *mm_ops;
+	u64 start;
+	struct kvm_pgtable_pte_ops *pte_ops;
+	u64 addr;
+	u64 end;
+	u32 level;
+	enum kvm_pgtable_walk_flags flags;
+};
+
+struct kvm_ptdump_guest_state {
+	union {
+		struct kvm *kvm;
+		struct kvm_pgtable_snapshot *snap;
+	};
+	struct pg_state parser_state;
+	struct addr_marker ipa_marker[2];
+	struct pg_level level[4];
+	struct ptdump_range range[2];
+};
+
+struct hyp_event_table;
+
+struct hyp_event_mod_tables {
+	struct hyp_event_table *tables;
+	unsigned long nr_tables;
+};
+
+struct hyp_event_table {
+	struct hyp_event *start;
+	unsigned long nr_events;
+};
+
+struct trace_hyp_format_hyp_enter {
+	struct hyp_entry_hdr hdr;
+};
+
+struct trace_hyp_format_hyp_exit {
+	struct hyp_entry_hdr hdr;
+};
+
+struct trace_hyp_format_host_hcall {
+	struct hyp_entry_hdr hdr;
+	unsigned int id;
+	u8 invalid;
+} __attribute__((packed));
+
+struct trace_hyp_format_host_smc {
+	struct hyp_entry_hdr hdr;
+	u64 id;
+	u8 forwarded;
+} __attribute__((packed));
+
+struct trace_hyp_format_host_mem_abort {
+	struct hyp_entry_hdr hdr;
+	u64 esr;
+	u64 addr;
+} __attribute__((packed));
+
+struct trace_hyp_format___hyp_printk {
+	struct hyp_entry_hdr hdr;
+	u8 fmt_id;
+	u64 a;
+	u64 b;
+	u64 c;
+	u64 d;
+} __attribute__((packed));
+
+struct trace_hyp_format_host_ffa_call {
+	struct hyp_entry_hdr hdr;
+	u64 func_id;
+	u64 res_a1;
+	u64 res_a2;
+	u64 res_a3;
+	u64 res_a4;
+	int handled;
+	int err;
+} __attribute__((packed));
+
+struct trace_hyp_format_psci_mem_protect {
+	struct hyp_entry_hdr hdr;
+	u64 count;
+	u64 was;
+} __attribute__((packed));
+
+struct trace_hyp_format_iommu_idmap {
+	struct hyp_entry_hdr hdr;
+	u64 from;
+	u64 to;
+	int prot;
+} __attribute__((packed));
+
+struct trace_page_desc;
+
+struct ring_buffer_writer {
+	struct trace_page_desc *pdesc;
+	int (*get_reader_page)(int);
+};
+
+struct hyp_trace_desc;
+
+struct hyp_trace_buffer {
+	struct hyp_trace_desc *desc;
+	struct ring_buffer_writer writer;
+	struct trace_buffer *trace_buffer;
+	size_t desc_size;
+	bool tracing_on;
+	int nr_readers;
+	struct mutex lock;
+	struct ht_iterator *printk_iter;
+	bool printk_on;
+};
+
+struct kvm_nvhe_clock_data {
+	u32 mult;
+	u32 shift;
+	u64 epoch_ns;
+	u64 epoch_cyc;
+};
+
+struct trace_page_desc {
+	int nr_cpus;
+	char __data[0];
+};
+
+struct hyp_trace_desc {
+	struct kvm_nvhe_clock_data clock_data;
+	struct trace_page_desc page_desc;
+};
+
+enum ring_buffer_flags {
+	RB_FL_OVERWRITE = 1,
+};
+
+struct rb_page_desc {
+	int cpu;
+	int nr_page_va;
+	unsigned long meta_va;
+	unsigned long page_va[0];
+};
+
+struct kvm_vcpu___2;
+
+struct kvm_cpu_context___2 {
+	struct user_pt_regs regs;
+	u64 spsr_abt;
+	u64 spsr_und;
+	u64 spsr_irq;
+	u64 spsr_fiq;
+	struct user_fpsimd_state fp_regs;
+	u64 sys_regs[167];
+	struct kvm_vcpu___2 *__hyp_running_vcpu;
+};
+
+struct vgic_irq___2 {
+	raw_spinlock_t irq_lock;
+	struct list_head lpi_list;
+	struct list_head ap_list;
+	struct kvm_vcpu___2 *vcpu;
+	struct kvm_vcpu___2 *target_vcpu;
+	u32 intid;
+	bool line_level;
+	bool pending_latch;
+	bool active;
+	bool enabled;
+	bool hw;
+	struct kref refcount;
+	u32 hwintid;
+	unsigned int host_irq;
+	union {
+		u8 targets;
+		u32 mpidr;
+	};
+	u8 source;
+	u8 active_source;
+	u8 priority;
+	u8 group;
+	enum vgic_irq_config config;
+	struct irq_ops *ops;
+	void *owner;
+};
+
+struct kvm_io_device_ops___2;
+
+struct kvm_io_device___2 {
+	const struct kvm_io_device_ops___2 *ops;
+};
+
+struct vgic_its___2;
+
+struct vgic_io_device___2 {
+	gpa_t base_addr;
+	union {
+		struct kvm_vcpu___2 *redist_vcpu;
+		struct vgic_its___2 *its;
+	};
+	const struct vgic_register_region *regions;
+	enum iodev_type iodev_type;
+	int nr_regions;
+	struct kvm_io_device___2 dev;
+};
+
+struct vgic_cpu___2 {
+	union {
+		struct vgic_v2_cpu_if vgic_v2;
+		struct vgic_v3_cpu_if vgic_v3;
+	};
+	struct vgic_irq___2 private_irqs[32];
+	raw_spinlock_t ap_list_lock;
+	struct list_head ap_list_head;
+	struct vgic_io_device___2 rd_iodev;
+	struct vgic_redist_region *rdreg;
+	u32 rdreg_index;
+	atomic_t syncr_busy;
+	u64 pendbaser;
+	atomic_t ctlr;
+	u32 num_pri_bits;
+	u32 num_id_bits;
+};
+
+struct arch_timer_context___2 {
+	struct kvm_vcpu___2 *vcpu;
+	struct hrtimer hrtimer;
+	u64 ns_frac;
+	struct arch_timer_offset offset;
+	bool loaded;
+	struct {
+		bool level;
+	} irq;
+	u32 host_timer_irq;
+};
+
+struct arch_timer_cpu___2 {
+	struct arch_timer_context___2 timers[4];
+	struct hrtimer bg_timer;
+	bool enabled;
+};
+
+struct kvm_s2_mmu___2;
+
+struct kvm_vcpu_arch___2 {
+	struct kvm_cpu_context___2 ctxt;
+	void *sve_state;
+	enum fp_type fp_type;
+	unsigned int sve_max_vl;
+	u64 svcr;
+	struct kvm_s2_mmu___2 *hw_mmu;
+	u64 hcr_el2;
+	u64 mdcr_el2;
+	u64 cptr_el2;
+	u64 mdcr_el2_host;
+	struct kvm_vcpu_fault_info fault;
+	enum {
+		FP_STATE_FREE___2 = 0,
+		FP_STATE_HOST_OWNED___2 = 1,
+		FP_STATE_GUEST_OWNED___2 = 2,
+	} fp_state;
+	u8 cflags;
+	u8 iflags;
+	u8 sflags;
+	bool pause;
+	struct kvm_guest_debug_arch *debug_ptr;
+	struct kvm_guest_debug_arch vcpu_debug_state;
+	struct kvm_guest_debug_arch external_debug_state;
+	struct user_fpsimd_state *host_fpsimd_state;
+	struct {
+		struct kvm_guest_debug_arch regs;
+		u64 pmscr_el1;
+		u64 trfcr_el1;
+	} host_debug_state;
+	struct vgic_cpu___2 vgic_cpu;
+	struct arch_timer_cpu___2 timer_cpu;
+	struct kvm_pmu pmu;
+	struct {
+		u32 mdscr_el1;
+		bool pstate_ss;
+	} guest_debug_preserved;
+	struct kvm_mp_state mp_state;
+	spinlock_t mp_state_lock;
+	union {
+		struct kvm_mmu_memory_cache mmu_page_cache;
+		struct kvm_hyp_memcache stage2_mc;
+	};
+	unsigned long features[1];
+	u64 vsesr_el2;
+	struct vcpu_reset_state reset_state;
+	struct {
+		u64 last_steal;
+		gpa_t base;
+	} steal;
+	u32 *ccsidr;
+	struct kvm_hyp_req *hyp_reqs;
+};
+
+struct kvm___2;
+
+struct kvm_vcpu___2 {
+	struct kvm___2 *kvm;
+	struct preempt_notifier preempt_notifier;
+	int cpu;
+	int vcpu_id;
+	int vcpu_idx;
+	int ____srcu_idx;
+	int mode;
+	u64 requests;
+	unsigned long guest_debug;
+	struct mutex mutex;
+	struct kvm_run *run;
+	struct rcuwait wait;
+	struct pid __attribute__((btf_type_tag("rcu"))) *pid;
+	int sigset_active;
+	sigset_t sigset;
+	unsigned int halt_poll_ns;
+	bool valid_wakeup;
+	int mmio_needed;
+	int mmio_read_completed;
+	int mmio_is_write;
+	int mmio_cur_fragment;
+	int mmio_nr_fragments;
+	struct kvm_mmio_fragment mmio_fragments[2];
+	struct {
+		bool in_spin_loop;
+		bool dy_eligible;
+	} spin_loop;
+	bool preempted;
+	bool ready;
+	long: 64;
+	struct kvm_vcpu_arch___2 arch;
+	struct kvm_vcpu_stat stat;
+	char stats_id[48];
+	struct kvm_dirty_ring dirty_ring;
+	struct kvm_memory_slot *last_used_slot;
+	u64 last_used_slot_gen;
+	long: 64;
+};
+
+struct kvm_pgtable___2;
+
+struct kvm_arch___2;
+
+struct kvm_s2_mmu___2 {
+	struct kvm_vmid vmid;
+	phys_addr_t pgd_phys;
+	struct kvm_pgtable___2 *pgt;
+	int __attribute__((btf_type_tag("percpu"))) *last_vcpu_ran;
+	struct kvm_mmu_memory_cache split_page_cache;
+	uint64_t split_page_chunk_size;
+	struct kvm_arch___2 *arch;
+};
+
+struct vgic_dist___2 {
+	bool in_kernel;
+	bool ready;
+	bool initialized;
+	u32 vgic_model;
+	u32 implementation_rev;
+	bool v2_groups_user_writable;
+	bool msis_require_devid;
+	int nr_spis;
+	gpa_t vgic_dist_base;
+	union {
+		gpa_t vgic_cpu_base;
+		struct list_head rd_regions;
+	};
+	bool enabled;
+	bool nassgireq;
+	struct vgic_irq___2 *spis;
+	struct vgic_io_device___2 dist_iodev;
+	bool has_its;
+	bool table_write_in_progress;
+	u64 propbaser;
+	raw_spinlock_t lpi_list_lock;
+	struct list_head lpi_list_head;
+	int lpi_list_count;
+	struct list_head lpi_translation_cache;
+	struct vgic_state_iter *iter;
+	struct its_vm its_vm;
+};
+
+struct kvm_arch___2 {
+	struct kvm_s2_mmu___2 mmu;
+	u64 vtcr;
+	struct vgic_dist___2 vgic;
+	struct arch_timer_vm_data timer_data;
+	u32 psci_version;
+	struct mutex config_lock;
+	unsigned long flags;
+	unsigned long vcpu_features[1];
+	unsigned long *pmu_filter;
+	struct arm_pmu *arm_pmu;
+	cpumask_var_t supported_cpus;
+	struct kvm_smccc_features smccc_feat;
+	struct maple_tree smccc_filter;
+	u64 id_regs[56];
+	struct kvm_protected_vm pkvm;
+};
+
+struct kvm_io_bus___2;
+
+struct kvm_stat_data___2;
+
+struct kvm___2 {
+	rwlock_t mmu_lock;
+	struct mutex slots_lock;
+	struct mutex slots_arch_lock;
+	struct mm_struct *mm;
+	unsigned long nr_memslot_pages;
+	struct kvm_memslots __memslots[2];
+	struct kvm_memslots __attribute__((btf_type_tag("rcu"))) *memslots[1];
+	struct xarray vcpu_array;
+	atomic_t nr_memslots_dirty_logging;
+	spinlock_t mn_invalidate_lock;
+	unsigned long mn_active_invalidate_count;
+	struct rcuwait mn_memslots_update_rcuwait;
+	spinlock_t gpc_lock;
+	struct list_head gpc_list;
+	atomic_t online_vcpus;
+	int max_vcpus;
+	int created_vcpus;
+	int last_boosted_vcpu;
+	struct list_head vm_list;
+	struct mutex lock;
+	struct kvm_io_bus___2 __attribute__((btf_type_tag("rcu"))) *buses[4];
+	struct {
+		spinlock_t lock;
+		struct list_head items;
+		struct list_head resampler_list;
+		struct mutex resampler_lock;
+	} irqfds;
+	struct list_head ioeventfds;
+	struct kvm_vm_stat stat;
+	struct kvm_arch___2 arch;
+	refcount_t users_count;
+	struct kvm_coalesced_mmio_ring *coalesced_mmio_ring;
+	spinlock_t ring_lock;
+	struct list_head coalesced_zones;
+	struct mutex irq_lock;
+	struct kvm_irq_routing_table __attribute__((btf_type_tag("rcu"))) *irq_routing;
+	struct hlist_head irq_ack_notifier_list;
+	struct mmu_notifier mmu_notifier;
+	unsigned long mmu_invalidate_seq;
+	long mmu_invalidate_in_progress;
+	unsigned long mmu_invalidate_range_start;
+	unsigned long mmu_invalidate_range_end;
+	struct list_head devices;
+	u64 manual_dirty_log_protect;
+	struct dentry *debugfs_dentry;
+	struct kvm_stat_data___2 **debugfs_stat_data;
+	struct srcu_struct srcu;
+	struct srcu_struct irq_srcu;
+	pid_t userspace_pid;
+	bool override_halt_poll_ns;
+	unsigned int max_halt_poll_ns;
+	u32 dirty_ring_size;
+	bool dirty_ring_with_bitmap;
+	bool vm_bugged;
+	bool vm_dead;
+	char stats_id[48];
+};
+
+struct kvm_io_range___2 {
+	gpa_t addr;
+	int len;
+	struct kvm_io_device___2 *dev;
+};
+
+struct kvm_io_bus___2 {
+	int dev_count;
+	int ioeventfd_count;
+	struct kvm_io_range___2 range[0];
+};
+
+struct kvm_io_device_ops___2 {
+	int (*read)(struct kvm_vcpu___2 *, struct kvm_io_device___2 *, gpa_t, int, void *);
+	int (*write)(struct kvm_vcpu___2 *, struct kvm_io_device___2 *, gpa_t, int, const void *);
+	void (*destructor)(struct kvm_io_device___2 *);
+};
+
+typedef kvm_pte_t *kvm_pteref_t___2;
+
+struct kvm_pgtable___2 {
+	u32 ia_bits;
+	u32 start_level;
+	kvm_pteref_t___2 pgd;
+	struct kvm_pgtable_mm_ops *mm_ops;
+	struct kvm_s2_mmu___2 *mmu;
+	enum kvm_pgtable_stage2_flags flags;
+	struct kvm_pgtable_pte_ops *pte_ops;
+};
+
+struct kvm_device___2;
+
+struct vgic_its___2 {
+	gpa_t vgic_its_base;
+	bool enabled;
+	struct vgic_io_device___2 iodev;
+	struct kvm_device___2 *dev;
+	u64 baser_device_table;
+	u64 baser_coll_table;
+	struct mutex cmd_lock;
+	u64 cbaser;
+	u32 creadr;
+	u32 cwriter;
+	u32 abi_rev;
+	struct mutex its_lock;
+	struct list_head device_list;
+	struct list_head collection_list;
+};
+
+struct kvm_device_ops___2;
+
+struct kvm_device___2 {
+	const struct kvm_device_ops___2 *ops;
+	struct kvm___2 *kvm;
+	void *private;
+	struct list_head vm_node;
+};
+
+struct kvm_device_ops___2 {
+	const char *name;
+	int (*create)(struct kvm_device___2 *, u32);
+	void (*init)(struct kvm_device___2 *);
+	void (*destroy)(struct kvm_device___2 *);
+	void (*release)(struct kvm_device___2 *);
+	int (*set_attr)(struct kvm_device___2 *, struct kvm_device_attr *);
+	int (*get_attr)(struct kvm_device___2 *, struct kvm_device_attr *);
+	int (*has_attr)(struct kvm_device___2 *, struct kvm_device_attr *);
+	long (*ioctl)(struct kvm_device___2 *, unsigned int, unsigned long);
+	int (*mmap)(struct kvm_device___2 *, struct vm_area_struct *);
+};
+
+struct kvm_stat_data___2 {
+	struct kvm___2 *kvm;
+	const struct _kvm_stats_desc *desc;
+	enum kvm_stat_kind kind;
+};
+
+struct kvm_host_data___2 {
+	struct kvm_cpu_context___2 host_ctxt;
+};
+
+typedef bool (*exit_handler_fn)(struct kvm_vcpu___2 *, u64 *);
+
+struct timer_map___2 {
+	struct arch_timer_context___2 *direct_vtimer;
+	struct arch_timer_context___2 *direct_ptimer;
+	struct arch_timer_context___2 *emul_vtimer;
+	struct arch_timer_context___2 *emul_ptimer;
+};
+
+struct kvm_exception_table_entry {
+	int insn;
+	int fixup;
+};
+
+struct tlb_inv_context {
+	unsigned long flags;
+	u64 tcr;
+	u64 sctlr;
+};
+
+struct kvm_host_sve_state {
+	u64 zcr_el1;
+	u32 fpsr;
+	u32 fpcr;
+	char sve_regs[0];
+};
+
+struct tlb_inv_context___2 {
+	struct kvm_s2_mmu___2 *mmu;
+	u64 tcr;
+	u64 sctlr;
+};
+
+struct kvm_iommu_ops {
+	int (*init)(unsigned long);
+	struct kvm_hyp_iommu * (*get_iommu_by_id)(pkvm_handle_t);
+	int (*alloc_domain)(struct kvm_hyp_iommu_domain *, u32);
+	void (*free_domain)(struct kvm_hyp_iommu_domain *);
+	int (*attach_dev)(struct kvm_hyp_iommu *, struct kvm_hyp_iommu_domain *, u32, u32, u32);
+	int (*detach_dev)(struct kvm_hyp_iommu *, struct kvm_hyp_iommu_domain *, u32, u32);
+	bool (*dabt_handler)(struct kvm_cpu_context___2 *, u64, u64);
+	int (*suspend)(struct kvm_hyp_iommu *);
+	int (*resume)(struct kvm_hyp_iommu *);
+	void (*iotlb_sync)(struct kvm_hyp_iommu_domain *, struct iommu_iotlb_gather *);
+	void (*host_stage2_idmap)(struct kvm_hyp_iommu_domain *, phys_addr_t, phys_addr_t, int);
+	int (*map_pages)(struct kvm_hyp_iommu_domain *, unsigned long, phys_addr_t, size_t, size_t, int, size_t *);
+	size_t (*unmap_pages)(struct kvm_hyp_iommu_domain *, unsigned long, size_t, size_t, struct iommu_iotlb_gather *, struct kvm_iommu_paddr_cache *);
+	phys_addr_t (*iova_to_phys)(struct kvm_hyp_iommu_domain *, unsigned long);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+	u64 android_kabi_reserved5;
+	u64 android_kabi_reserved6;
+	u64 android_kabi_reserved7;
+	u64 android_kabi_reserved8;
+};
+
+struct kvm_iommu_paddr_cache {
+	unsigned short ptr;
+	u64 paddr[511];
+	size_t pgsize[511];
+};
+
+typedef void (*hcall_t)(struct kvm_cpu_context___2 *);
+
+struct pkvm_hyp_vcpu;
+
+typedef void (*hyp_entry_exit_handler_fn)(struct pkvm_hyp_vcpu *);
+
+struct pkvm_hyp_vcpu {
+	struct kvm_vcpu___2 vcpu;
+	struct kvm_vcpu___2 *host_vcpu;
+	struct pkvm_hyp_vcpu **loaded_hyp_vcpu;
+	u32 exit_code;
+	int power_state;
+	long: 64;
+};
+
+union hyp_spinlock {
+	u32 __val;
+	struct {
+		u16 owner;
+		u16 next;
+	};
+};
+
+typedef union hyp_spinlock hyp_spinlock_t;
+
+struct hyp_pool {
+	hyp_spinlock_t lock;
+	struct list_head free_area[11];
+	phys_addr_t range_start;
+	phys_addr_t range_end;
+	u64 free_pages;
+	u8 max_order;
+};
+
+struct pkvm_hyp_vm {
+	struct kvm___2 kvm;
+	struct kvm___2 *host_kvm;
+	struct kvm_pgtable___2 pgt;
+	struct kvm_pgtable_mm_ops mm_ops;
+	struct hyp_pool pool;
+	hyp_spinlock_t pgtable_lock;
+	struct pkvm_hyp_vcpu *pvmfw_entry_vcpu;
+	unsigned short refcount;
+	unsigned int nr_vcpus;
+	hyp_spinlock_t vcpus_lock;
+	bool is_dying;
+	struct pkvm_hyp_vcpu *vcpus[0];
+};
+
+struct kvm_host_psci_config {
+	u32 version;
+	u32 smccc_version;
+	struct psci_0_1_function_ids function_ids_0_1;
+	bool psci_0_1_cpu_suspend_implemented;
+	bool psci_0_1_cpu_on_implemented;
+	bool psci_0_1_cpu_off_implemented;
+	bool psci_0_1_migrate_implemented;
+};
+
+struct psci_boot_args {
+	atomic_t lock;
+	unsigned long pc;
+	unsigned long r0;
+};
+
+struct hyp_mgt_allocator_ops {
+	int (*refill)(struct kvm_hyp_memcache *);
+	int (*reclaimable)();
+	void (*reclaim)(struct kvm_hyp_memcache *, int);
+};
+
+struct hyp_allocator {
+	struct list_head chunks;
+	unsigned long start;
+	u32 size;
+	hyp_spinlock_t lock;
+};
+
+struct chunk_hdr {
+	u32 alloc_size;
+	u32 mapped_size;
+	struct list_head node;
+	u32 hash;
+	long: 0;
+	char data;
+};
+
+enum pkvm_page_state {
+	PKVM_PAGE_OWNED = 0,
+	PKVM_PAGE_SHARED_OWNED = 1,
+	PKVM_PAGE_SHARED_BORROWED = 2,
+	PKVM_PAGE_MMIO_DMA = 3,
+	PKVM_MODULE_OWNED_PAGE = 4,
+	PKVM_NOPAGE = 8,
+	PKVM_PAGE_RESTRICTED_PROT = 16,
+	PKVM_MMIO = 32,
+};
+
+struct hyp_page {
+	unsigned short refcount;
+	u8 order;
+	enum pkvm_page_state host_state: 8;
+};
+
+enum pkvm_component_id {
+	PKVM_ID_HOST = 0,
+	PKVM_ID_HYP = 1,
+	PKVM_ID_FFA = 2,
+	PKVM_ID_GUEST = 3,
+	PKVM_ID_PROTECTED = 4,
+	PKVM_ID_MAX = 4,
+};
+
+struct hyp_fixmap_slot {
+	u64 addr;
+	kvm_pte_t *ptep;
+};
+
+struct host_mmu {
+	struct kvm_arch___2 arch;
+	struct kvm_pgtable___2 pgt;
+	struct kvm_pgtable_mm_ops mm_ops;
+	hyp_spinlock_t lock;
+};
+
+struct guest_request_walker_data {
+	unsigned long ipa_start;
+	phys_addr_t phys_start;
+	u64 size;
+	enum pkvm_page_state desired_state;
+	enum pkvm_page_state desired_mask;
+	int max_ptes;
+};
+
+struct kvm_mem_range {
+	u64 start;
+	u64 end;
+};
+
+struct pkvm_mem_transition;
+
+struct pkvm_checked_mem_transition {
+	const struct pkvm_mem_transition *tx;
+	u64 completer_addr;
+	u64 nr_pages;
+};
+
+struct pkvm_mem_transition {
+	u64 nr_pages;
+	struct {
+		enum pkvm_component_id id;
+		u64 addr;
+		union {
+			struct {
+				u64 completer_addr;
+			} host;
+			struct {
+				u64 completer_addr;
+			} hyp;
+			struct {
+				struct pkvm_hyp_vm *hyp_vm;
+				struct kvm_hyp_memcache *mc;
+			} guest;
+		};
+	} initiator;
+	struct {
+		enum pkvm_component_id id;
+		union {
+			struct {
+				struct pkvm_hyp_vm *hyp_vm;
+				struct kvm_hyp_memcache *mc;
+				phys_addr_t phys;
+			} guest;
+		};
+		const enum kvm_pgtable_prot prot;
+	} completer;
+};
+
+struct check_walk_data {
+	enum pkvm_page_state desired;
+	enum pkvm_page_state (*get_page_state)(kvm_pte_t, u64);
+};
+
+struct relinquish_data {
+	enum pkvm_page_state expected_state;
+	u64 pa;
+};
+
+struct sys_reg_desc_reset {
+	int reg;
+	void (*reset)(struct kvm_vcpu___2 *, const struct sys_reg_desc_reset *);
+	u64 value;
+};
+
+struct sys_reg_desc___2 {
+	const char *name;
+	enum {
+		AA32_DIRECT___2 = 0,
+		AA32_LO___2 = 1,
+		AA32_HI___2 = 2,
+	} aarch32_map;
+	u8 Op0;
+	u8 Op1;
+	u8 CRn;
+	u8 CRm;
+	u8 Op2;
+	bool (*access)(struct kvm_vcpu___2 *, struct sys_reg_params *, const struct sys_reg_desc___2 *);
+	u64 (*reset)(struct kvm_vcpu___2 *, const struct sys_reg_desc___2 *);
+	int reg;
+	u64 val;
+	int (*__get_user)(struct kvm_vcpu___2 *, const struct sys_reg_desc___2 *, u64 *);
+	int (*set_user)(struct kvm_vcpu___2 *, const struct sys_reg_desc___2 *, u64);
+	unsigned int (*visibility)(const struct kvm_vcpu___2 *, const struct sys_reg_desc___2 *);
+};
+
+typedef struct {
+	u32 __val;
+} hyp_rwlock_t;
+
+struct kvm_ffa_descriptor_buffer {
+	void *buf;
+	size_t len;
+};
+
+struct kvm_ffa_buffers {
+	hyp_spinlock_t lock;
+	void *tx;
+	void *rx;
+};
+
+struct ffa_mem_region {
+	u16 sender_id;
+	u16 attributes;
+	u32 flags;
+	u64 handle;
+	u64 tag;
+	u32 ep_mem_size;
+	u32 ep_count;
+	u32 ep_mem_offset;
+	u32 reserved[3];
+};
+
+struct ffa_mem_region_addr_range {
+	u64 address;
+	u32 pg_cnt;
+	u32 reserved;
+};
+
+struct ffa_composite_mem_region {
+	u32 total_pg_cnt;
+	u32 addr_range_cnt;
+	u64 reserved;
+	struct ffa_mem_region_addr_range constituents[0];
+};
+
+struct ffa_mem_region_attributes {
+	u16 receiver;
+	u8 attrs;
+	u8 flag;
+	u32 composite_off;
+	u64 reserved;
+};
+
+struct kvm_pgtable_walk_data {
+	struct kvm_pgtable_walker *walker;
+	const u64 start;
+	u64 addr;
+	const u64 end;
+};
+
+struct hyp_map_data {
+	const u64 phys;
+	kvm_pte_t attr;
+};
+
+struct stage2_map_data {
+	const u64 phys;
+	kvm_pte_t attr;
+	u64 annotation;
+	kvm_pte_t *anchor;
+	kvm_pte_t *childp;
+	struct kvm_s2_mmu___2 *mmu;
+	void *memcache;
+	bool force_pte;
+};
+
+struct leaf_walk_data {
+	kvm_pte_t pte;
+	u32 level;
+};
+
+struct stage2_attr_data {
+	kvm_pte_t attr_set;
+	kvm_pte_t attr_clr;
+	kvm_pte_t pte;
+	u32 level;
+};
+
+struct stage2_age_data {
+	bool mkold;
+	bool young;
+};
+
+struct kvm_power_domain_ops {
+	int (*power_on)(struct kvm_power_domain *);
+	int (*power_off)(struct kvm_power_domain *);
+};
+
+struct ring_buffer_meta;
+
+struct hyp_buffer_page;
+
+struct hyp_rb_per_cpu {
+	struct ring_buffer_meta *meta;
+	struct hyp_buffer_page *tail_page;
+	struct hyp_buffer_page *reader_page;
+	struct hyp_buffer_page *head_page;
+	struct hyp_buffer_page *bpages;
+	unsigned long nr_pages;
+	unsigned long last_overrun;
+	u64 write_stamp;
+	atomic_t status;
+};
+
+struct reader_page {
+	__u32 id;
+	__u32 read;
+	unsigned long lost_events;
+};
+
+struct ring_buffer_meta {
+	unsigned long entries;
+	unsigned long overrun;
+	unsigned long read;
+	unsigned long pages_touched;
+	unsigned long pages_lost;
+	unsigned long pages_read;
+	__u32 meta_page_size;
+	__u32 nr_data_pages;
+	struct reader_page reader_page;
+};
+
+struct buffer_data_page;
+
+struct hyp_buffer_page {
+	struct list_head list;
+	struct buffer_data_page *page;
+	unsigned long write;
+	unsigned long entries;
+	u32 id;
+};
+
+struct buffer_data_page {
+	u64 time_stamp;
+	local_t commit;
+	unsigned char data[0];
+};
+
+enum ring_buffer_type {
+	RINGBUF_TYPE_DATA_TYPE_LEN_MAX = 28,
+	RINGBUF_TYPE_PADDING = 29,
+	RINGBUF_TYPE_TIME_EXTEND = 30,
+	RINGBUF_TYPE_TIME_STAMP = 31,
+};
+
+typedef void (*dyn_hcall_t)(struct user_pt_regs *);
+
+struct hvc_power_domain {
+	struct kvm_power_domain *pd;
+	const struct kvm_power_domain_ops *ops;
+};
+
+struct stage2_map_data___2 {
+	const u64 phys;
+	kvm_pte_t attr;
+	u64 annotation;
+	kvm_pte_t *anchor;
+	kvm_pte_t *childp;
+	struct kvm_s2_mmu *mmu;
+	void *memcache;
+	bool force_pte;
+};
+
+enum gunyah_error {
+	GUNYAH_ERROR_OK = 0,
+	GUNYAH_ERROR_UNIMPLEMENTED = -1,
+	GUNYAH_ERROR_RETRY = -2,
+	GUNYAH_ERROR_ARG_INVAL = 1,
+	GUNYAH_ERROR_ARG_SIZE = 2,
+	GUNYAH_ERROR_ARG_ALIGN = 3,
+	GUNYAH_ERROR_NOMEM = 10,
+	GUNYAH_ERROR_ADDR_OVFL = 20,
+	GUNYAH_ERROR_ADDR_UNFL = 21,
+	GUNYAH_ERROR_ADDR_INVAL = 22,
+	GUNYAH_ERROR_DENIED = 30,
+	GUNYAH_ERROR_BUSY = 31,
+	GUNYAH_ERROR_IDLE = 32,
+	GUNYAH_ERROR_IRQ_BOUND = 40,
+	GUNYAH_ERROR_IRQ_UNBOUND = 41,
+	GUNYAH_ERROR_CSPACE_CAP_NULL = 50,
+	GUNYAH_ERROR_CSPACE_CAP_REVOKED = 51,
+	GUNYAH_ERROR_CSPACE_WRONG_OBJ_TYPE = 52,
+	GUNYAH_ERROR_CSPACE_INSUF_RIGHTS = 53,
+	GUNYAH_ERROR_CSPACE_FULL = 54,
+	GUNYAH_ERROR_MSGQUEUE_EMPTY = 60,
+	GUNYAH_ERROR_MSGQUEUE_FULL = 61,
+};
+
+struct gunyah_hypercall_vcpu_run_resp {
+	union {
+		enum {
+			GUNYAH_VCPU_STATE_READY = 0,
+			GUNYAH_VCPU_STATE_EXPECTS_WAKEUP = 1,
+			GUNYAH_VCPU_STATE_POWERED_OFF = 2,
+			GUNYAH_VCPU_STATE_BLOCKED = 3,
+			GUNYAH_VCPU_ADDRSPACE_VMMIO_READ = 4,
+			GUNYAH_VCPU_ADDRSPACE_VMMIO_WRITE = 5,
+			GUNYAH_VCPU_ADDRSPACE_PAGE_FAULT = 7,
+		} state;
+		u64 sized_state;
+	};
+	u64 state_data[3];
+};
+
+struct arm_smccc_1_2_regs {
+	unsigned long a0;
+	unsigned long a1;
+	unsigned long a2;
+	unsigned long a3;
+	unsigned long a4;
+	unsigned long a5;
+	unsigned long a6;
+	unsigned long a7;
+	unsigned long a8;
+	unsigned long a9;
+	unsigned long a10;
+	unsigned long a11;
+	unsigned long a12;
+	unsigned long a13;
+	unsigned long a14;
+	unsigned long a15;
+	unsigned long a16;
+	unsigned long a17;
+};
+
+struct gunyah_hypercall_hyp_identify_resp {
+	u64 api_info;
+	u64 flags[3];
+};
+
+typedef void (*exitcall_t)();
+
+struct crypto_tfm;
+
+struct cipher_alg {
+	unsigned int cia_min_keysize;
+	unsigned int cia_max_keysize;
+	int (*cia_setkey)(struct crypto_tfm *, const u8 *, unsigned int);
+	void (*cia_encrypt)(struct crypto_tfm *, u8 *, const u8 *);
+	void (*cia_decrypt)(struct crypto_tfm *, u8 *, const u8 *);
+};
+
+struct compress_alg {
+	int (*coa_compress)(struct crypto_tfm *, const u8 *, unsigned int, u8 *, unsigned int *);
+	int (*coa_decompress)(struct crypto_tfm *, const u8 *, unsigned int, u8 *, unsigned int *);
+};
+
+struct crypto_type;
+
+struct crypto_alg {
+	struct list_head cra_list;
+	struct list_head cra_users;
+	u32 cra_flags;
+	unsigned int cra_blocksize;
+	unsigned int cra_ctxsize;
+	unsigned int cra_alignmask;
+	int cra_priority;
+	refcount_t cra_refcnt;
+	char cra_name[128];
+	char cra_driver_name[128];
+	const struct crypto_type *cra_type;
+	union {
+		struct cipher_alg cipher;
+		struct compress_alg compress;
+	} cra_u;
+	int (*cra_init)(struct crypto_tfm *);
+	void (*cra_exit)(struct crypto_tfm *);
+	void (*cra_destroy)(struct crypto_alg *);
+	struct module *cra_module;
+};
+
+struct hash_alg_common {
+	unsigned int digestsize;
+	unsigned int statesize;
+	struct crypto_alg base;
+};
+
+struct shash_desc;
+
+struct crypto_shash;
+
+struct shash_alg {
+	int (*init)(struct shash_desc *);
+	int (*update)(struct shash_desc *, const u8 *, unsigned int);
+	int (*final)(struct shash_desc *, u8 *);
+	int (*finup)(struct shash_desc *, const u8 *, unsigned int, u8 *);
+	int (*digest)(struct shash_desc *, const u8 *, unsigned int, u8 *);
+	int (*export)(struct shash_desc *, void *);
+	int (*import)(struct shash_desc *, const void *);
+	int (*setkey)(struct crypto_shash *, const u8 *, unsigned int);
+	int (*init_tfm)(struct crypto_shash *);
+	void (*exit_tfm)(struct crypto_shash *);
+	int (*clone_tfm)(struct crypto_shash *, struct crypto_shash *);
+	unsigned int descsize;
+	union {
+		int (*finup_mb)(struct shash_desc *, const u8 * const *, unsigned int, u8 * const *, unsigned int);
+		struct {
+			u64 android_backport_reserved1;
+		};
+		union {};
+	};
+	union {
+		unsigned int mb_max_msgs;
+		struct {
+			u64 android_backport_reserved2;
+		};
+		union {};
+	};
+	union {
+		struct {
+			unsigned int digestsize;
+			unsigned int statesize;
+			struct crypto_alg base;
+		};
+		struct hash_alg_common halg;
+	};
+};
+
+struct shash_desc {
+	struct crypto_shash *tfm;
+	void *__ctx[0];
+};
+
+struct crypto_tfm {
+	refcount_t refcnt;
+	u32 crt_flags;
+	int node;
+	void (*exit)(struct crypto_tfm *);
+	struct crypto_alg *__crt_alg;
+	void *__crt_ctx[0];
+};
+
+struct crypto_shash {
+	unsigned int descsize;
+	struct crypto_tfm base;
+};
+
+struct crypto_instance;
+
+struct crypto_type {
+	unsigned int (*ctxsize)(struct crypto_alg *, u32, u32);
+	unsigned int (*extsize)(struct crypto_alg *);
+	int (*init_tfm)(struct crypto_tfm *);
+	void (*show)(struct seq_file *, struct crypto_alg *);
+	int (*report)(struct sk_buff *, struct crypto_alg *);
+	void (*free)(struct crypto_instance *);
+	unsigned int type;
+	unsigned int maskclear;
+	unsigned int maskset;
+	unsigned int tfmsize;
+};
+
+struct crypto_template;
+
+struct crypto_spawn;
+
+struct crypto_instance {
+	struct crypto_alg alg;
+	struct crypto_template *tmpl;
+	union {
+		struct hlist_node list;
+		struct crypto_spawn *spawns;
+	};
+	struct work_struct free_work;
+	void *__ctx[0];
+};
+
+struct rtattr;
+
+struct crypto_template {
+	struct list_head list;
+	struct hlist_head instances;
+	struct module *module;
+	int (*create)(struct crypto_template *, struct rtattr **);
+	char name[128];
+};
+
+struct crypto_spawn {
+	struct list_head list;
+	struct crypto_alg *alg;
+	union {
+		struct crypto_instance *inst;
+		struct crypto_spawn *next;
+	};
+	const struct crypto_type *frontend;
+	u32 mask;
+	bool dead;
+	bool registered;
+};
+
+struct sha256_state {
+	u32 state[8];
+	u64 count;
+	u8 buf[64];
+};
+
+struct sha256_ce_state {
+	struct sha256_state sst;
+	u32 finalize;
+};
+
+typedef void sha256_block_fn(struct sha256_state *, const u8 *, int);
+
+struct sha512_state;
+
+typedef void sha512_block_fn(struct sha512_state *, const u8 *, int);
+
+struct sha512_state {
+	u64 state[8];
+	u64 count[2];
+	u8 buf[128];
+};
+
+struct crypto_aead;
+
+struct aead_request;
+
+struct aead_alg {
+	int (*setkey)(struct crypto_aead *, const u8 *, unsigned int);
+	int (*setauthsize)(struct crypto_aead *, unsigned int);
+	int (*encrypt)(struct aead_request *);
+	int (*decrypt)(struct aead_request *);
+	int (*init)(struct crypto_aead *);
+	void (*exit)(struct crypto_aead *);
+	unsigned int ivsize;
+	unsigned int maxauthsize;
+	unsigned int chunksize;
+	struct crypto_alg base;
+};
+
+struct crypto_aead {
+	unsigned int authsize;
+	unsigned int reqsize;
+	struct crypto_tfm base;
+};
+
+typedef void (*crypto_completion_t)(void *, int);
+
+struct crypto_async_request {
+	struct list_head list;
+	crypto_completion_t complete;
+	void *data;
+	struct crypto_tfm *tfm;
+	u32 flags;
+};
+
+struct aead_request {
+	struct crypto_async_request base;
+	unsigned int assoclen;
+	unsigned int cryptlen;
+	u8 *iv;
+	struct scatterlist *src;
+	struct scatterlist *dst;
+	void *__ctx[0];
+};
+
+typedef struct {
+	__be64 a;
+	__be64 b;
+} be128;
+
+struct crypto_aes_ctx {
+	u32 key_enc[60];
+	u32 key_dec[60];
+	u32 key_length;
+};
+
+struct scatter_walk {
+	struct scatterlist *sg;
+	unsigned int offset;
+};
+
+struct skcipher_walk {
+	union {
+		struct {
+			struct page *page;
+			unsigned long offset;
+		} phys;
+		struct {
+			u8 *page;
+			void *addr;
+		} virt;
+	} src;
+	union {
+		struct {
+			struct page *page;
+			unsigned long offset;
+		} phys;
+		struct {
+			u8 *page;
+			void *addr;
+		} virt;
+	} dst;
+	struct scatter_walk in;
+	unsigned int nbytes;
+	struct scatter_walk out;
+	unsigned int total;
+	struct list_head buffers;
+	u8 *page;
+	u8 *buffer;
+	u8 *oiv;
+	void *iv;
+	unsigned int ivsize;
+	int flags;
+	unsigned int blocksize;
+	unsigned int stride;
+	unsigned int alignmask;
+};
+
+struct ghash_key {
+	be128 k;
+	u64 h[0];
+};
+
+struct gcm_aes_ctx {
+	struct crypto_aes_ctx aes_key;
+	u8 nonce[4];
+	struct ghash_key ghash_key;
+};
+
+struct ghash_desc_ctx {
+	u64 digest[2];
+	u8 buf[16];
+	u32 count;
+};
+
+struct polyval_tfm_ctx {
+	u8 key_powers[128];
+};
+
+struct polyval_desc_ctx {
+	u8 buffer[16];
+	u32 bytes;
+};
+
+struct aes_block {
+	u8 b[16];
+};
+
+struct crypto_skcipher;
+
+struct skcipher_request;
+
+struct skcipher_alg {
+	int (*setkey)(struct crypto_skcipher *, const u8 *, unsigned int);
+	int (*encrypt)(struct skcipher_request *);
+	int (*decrypt)(struct skcipher_request *);
+	int (*init)(struct crypto_skcipher *);
+	void (*exit)(struct crypto_skcipher *);
+	unsigned int min_keysize;
+	unsigned int max_keysize;
+	unsigned int ivsize;
+	unsigned int chunksize;
+	unsigned int walksize;
+	struct crypto_alg base;
+};
+
+struct crypto_skcipher {
+	unsigned int reqsize;
+	struct crypto_tfm base;
+};
+
+struct skcipher_request {
+	unsigned int cryptlen;
+	u8 *iv;
+	struct scatterlist *src;
+	struct scatterlist *dst;
+	struct crypto_async_request base;
+	void *__ctx[0];
+};
+
+struct mac_tfm_ctx {
+	struct crypto_aes_ctx key;
+	long: 0;
+	u8 consts[0];
+};
+
+struct crypto_aes_xts_ctx {
+	struct crypto_aes_ctx key1;
+	long: 0;
+	struct crypto_aes_ctx key2;
+	long: 0;
+};
+
+struct crypto_aes_essiv_cbc_ctx {
+	struct crypto_aes_ctx key1;
+	long: 0;
+	struct crypto_aes_ctx key2;
+	struct crypto_shash *hash;
+};
+
+struct mac_desc_ctx {
+	unsigned int len;
+	u8 dg[16];
+};
+
+enum chacha_constants {
+	CHACHA_CONSTANT_EXPA = 1634760805,
+	CHACHA_CONSTANT_ND_3 = 857760878,
+	CHACHA_CONSTANT_2_BY = 2036477234,
+	CHACHA_CONSTANT_TE_K = 1797285236,
+};
+
+struct chacha_ctx {
+	u32 key[8];
+	int nrounds;
+};
+
+struct poly1305_key {
+	union {
+		u32 r[5];
+		u64 r64[3];
+	};
+};
+
+struct poly1305_core_key {
+	struct poly1305_key key;
+	struct poly1305_key precomputed_s;
+};
+
+struct poly1305_state {
+	union {
+		u32 h[5];
+		u64 h64[3];
+	};
+};
+
+struct poly1305_desc_ctx {
+	u8 buf[16];
+	unsigned int buflen;
+	unsigned short rset;
+	bool sset;
+	u32 s[4];
+	struct poly1305_state h;
+	union {
+		struct poly1305_key opaque_r[9];
+		struct poly1305_core_key core_r;
+	};
+};
+
+struct fdtable {
+	unsigned int max_fds;
+	struct file __attribute__((btf_type_tag("rcu"))) **fd;
+	unsigned long *close_on_exec;
+	unsigned long *open_fds;
+	unsigned long *full_fds_bits;
+	struct callback_head rcu;
+};
+
+struct files_struct {
+	atomic_t count;
+	bool resize_in_progress;
+	wait_queue_head_t resize_wait;
+	struct fdtable __attribute__((btf_type_tag("rcu"))) *fdt;
+	struct fdtable fdtab;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	spinlock_t file_lock;
+	unsigned int next_fd;
+	unsigned long close_on_exec_init[1];
+	unsigned long open_fds_init[1];
+	unsigned long full_fds_bits_init[1];
+	struct file __attribute__((btf_type_tag("rcu"))) *fd_array[64];
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct io_uring_sqe;
+
+struct io_uring_cmd {
+	struct file *file;
+	const struct io_uring_sqe *sqe;
+	union {
+		void (*task_work_cb)(struct io_uring_cmd *, unsigned int);
+		void *cookie;
+	};
+	u32 cmd_op;
+	u32 flags;
+	u8 pdu[32];
+};
+
+typedef int __kernel_rwf_t;
+
+struct io_uring_sqe {
+	__u8 opcode;
+	__u8 flags;
+	__u16 ioprio;
+	__s32 fd;
+	union {
+		__u64 off;
+		__u64 addr2;
+		struct {
+			__u32 cmd_op;
+			__u32 __pad1;
+		};
+	};
+	union {
+		__u64 addr;
+		__u64 splice_off_in;
+	};
+	__u32 len;
+	union {
+		__kernel_rwf_t rw_flags;
+		__u32 fsync_flags;
+		__u16 poll_events;
+		__u32 poll32_events;
+		__u32 sync_range_flags;
+		__u32 msg_flags;
+		__u32 timeout_flags;
+		__u32 accept_flags;
+		__u32 cancel_flags;
+		__u32 open_flags;
+		__u32 statx_flags;
+		__u32 fadvise_advice;
+		__u32 splice_flags;
+		__u32 rename_flags;
+		__u32 unlink_flags;
+		__u32 hardlink_flags;
+		__u32 xattr_flags;
+		__u32 msg_ring_flags;
+		__u32 uring_cmd_flags;
+	};
+	__u64 user_data;
+	union {
+		__u16 buf_index;
+		__u16 buf_group;
+	};
+	__u16 personality;
+	union {
+		__s32 splice_fd_in;
+		__u32 file_index;
+		struct {
+			__u16 addr_len;
+			__u16 __pad3[1];
+		};
+	};
+	union {
+		struct {
+			__u64 addr3;
+			__u64 __pad2[1];
+		};
+		__u8 cmd[0];
+	};
+};
+
+typedef void (*btf_trace_task_newtask)(void *, struct task_struct *, unsigned long);
+
+typedef void (*btf_trace_task_rename)(void *, struct task_struct *, const char *);
+
+enum {
+	MM_FILEPAGES = 0,
+	MM_ANONPAGES = 1,
+	MM_SWAPENTS = 2,
+	MM_SHMEMPAGES = 3,
+	NR_MM_COUNTERS = 4,
+};
+
+enum ucount_type {
+	UCOUNT_USER_NAMESPACES = 0,
+	UCOUNT_PID_NAMESPACES = 1,
+	UCOUNT_UTS_NAMESPACES = 2,
+	UCOUNT_IPC_NAMESPACES = 3,
+	UCOUNT_NET_NAMESPACES = 4,
+	UCOUNT_MNT_NAMESPACES = 5,
+	UCOUNT_CGROUP_NAMESPACES = 6,
+	UCOUNT_TIME_NAMESPACES = 7,
+	UCOUNT_INOTIFY_INSTANCES = 8,
+	UCOUNT_INOTIFY_WATCHES = 9,
+	UCOUNT_COUNTS = 10,
+};
+
+enum rlimit_type {
+	UCOUNT_RLIMIT_NPROC = 0,
+	UCOUNT_RLIMIT_MSGQUEUE = 1,
+	UCOUNT_RLIMIT_SIGPENDING = 2,
+	UCOUNT_RLIMIT_MEMLOCK = 3,
+	UCOUNT_RLIMIT_COUNTS = 4,
+};
+
+enum {
+	TASK_COMM_LEN = 16,
+};
+
+enum proc_hidepid {
+	HIDEPID_OFF = 0,
+	HIDEPID_NO_ACCESS = 1,
+	HIDEPID_INVISIBLE = 2,
+	HIDEPID_NOT_PTRACEABLE = 4,
+};
+
+enum proc_pidonly {
+	PROC_PIDONLY_OFF = 0,
+	PROC_PIDONLY_ON = 1,
+};
+
+enum {
+	FUTEX_STATE_OK = 0,
+	FUTEX_STATE_EXITING = 1,
+	FUTEX_STATE_DEAD = 2,
+};
+
+enum tk_offsets {
+	TK_OFFS_REAL = 0,
+	TK_OFFS_BOOT = 1,
+	TK_OFFS_TAI = 2,
+	TK_OFFS_MAX = 3,
+};
+
+struct trace_event_raw_task_newtask {
+	struct trace_entry ent;
+	pid_t pid;
+	char comm[16];
+	unsigned long clone_flags;
+	short oom_score_adj;
+	char __data[0];
+};
+
+struct trace_event_raw_task_rename {
+	struct trace_entry ent;
+	pid_t pid;
+	char oldcomm[16];
+	char newcomm[16];
+	short oom_score_adj;
+	char __data[0];
+};
+
+struct vm_stack {
+	struct callback_head rcu;
+	struct vm_struct *stack_vm_area;
+};
+
+struct clone_args {
+	__u64 flags;
+	__u64 pidfd;
+	__u64 child_tid;
+	__u64 parent_tid;
+	__u64 exit_signal;
+	__u64 stack;
+	__u64 stack_size;
+	__u64 tls;
+	__u64 set_tid;
+	__u64 set_tid_size;
+	__u64 cgroup;
+};
+
+struct proc_fs_info {
+	struct pid_namespace *pid_ns;
+	struct dentry *proc_self;
+	struct dentry *proc_thread_self;
+	kgid_t pid_gid;
+	enum proc_hidepid hide_pid;
+	enum proc_pidonly pidonly;
+	struct callback_head rcu;
+};
+
+struct trace_event_data_offsets_task_newtask {};
+
+struct trace_event_data_offsets_task_rename {};
+
+struct multiprocess_signals {
+	sigset_t signal;
+	struct hlist_node node;
+};
+
+typedef int (*proc_visitor)(struct task_struct *, void *);
+
+struct taint_flag {
+	char c_true;
+	char c_false;
+	bool module;
+};
+
+enum kmsg_dump_reason {
+	KMSG_DUMP_UNDEF = 0,
+	KMSG_DUMP_PANIC = 1,
+	KMSG_DUMP_OOPS = 2,
+	KMSG_DUMP_EMERG = 3,
+	KMSG_DUMP_SHUTDOWN = 4,
+	KMSG_DUMP_MAX = 5,
+};
+
+enum con_flush_mode {
+	CONSOLE_FLUSH_PENDING = 0,
+	CONSOLE_REPLAY_ALL = 1,
+};
+
+enum error_detector {
+	ERROR_DETECTOR_KFENCE = 0,
+	ERROR_DETECTOR_KASAN = 1,
+	ERROR_DETECTOR_WARN = 2,
+};
+
+enum ftrace_dump_mode {
+	DUMP_NONE = 0,
+	DUMP_ALL = 1,
+	DUMP_ORIG = 2,
+};
+
+enum ctx_state {
+	CONTEXT_DISABLED = -1,
+	CONTEXT_KERNEL = 0,
+	CONTEXT_IDLE = 1,
+	CONTEXT_USER = 2,
+	CONTEXT_GUEST = 3,
+	CONTEXT_MAX = 4,
+};
+
+struct warn_args {
+	const char *fmt;
+	va_list args;
+};
+
+typedef void (*btf_trace_cpuhp_enter)(void *, unsigned int, int, int, int (*)(unsigned int));
+
+typedef void (*btf_trace_cpuhp_multi_enter)(void *, unsigned int, int, int, int (*)(unsigned int, struct hlist_node *), struct hlist_node *);
+
+typedef void (*btf_trace_cpuhp_exit)(void *, unsigned int, int, int, int);
+
+struct smp_hotplug_thread {
+	struct task_struct * __attribute__((btf_type_tag("percpu"))) *store;
+	struct list_head list;
+	int (*thread_should_run)(unsigned int);
+	void (*thread_fn)(unsigned int);
+	void (*create)(unsigned int);
+	void (*setup)(unsigned int);
+	void (*cleanup)(unsigned int, bool);
+	void (*park)(unsigned int);
+	void (*unpark)(unsigned int);
+	bool selfparking;
+	const char *thread_comm;
+};
+
+struct cpuhp_cpu_state {
+	enum cpuhp_state state;
+	enum cpuhp_state target;
+	enum cpuhp_state fail;
+	struct task_struct *thread;
+	bool should_run;
+	bool rollback;
+	bool single;
+	bool bringup;
+	struct hlist_node *node;
+	struct hlist_node *last;
+	enum cpuhp_state cb_state;
+	int result;
+	atomic_t ap_sync_state;
+	struct completion done_up;
+	struct completion done_down;
+};
+
+struct cpuhp_step {
+	const char *name;
+	union {
+		int (*single)(unsigned int);
+		int (*multi)(unsigned int, struct hlist_node *);
+	} startup;
+	union {
+		int (*single)(unsigned int);
+		int (*multi)(unsigned int, struct hlist_node *);
+	} teardown;
+	struct hlist_head list;
+	bool cant_stop;
+	bool multi_instance;
+};
+
+enum cpu_mitigations {
+	CPU_MITIGATIONS_OFF = 0,
+	CPU_MITIGATIONS_AUTO = 1,
+	CPU_MITIGATIONS_AUTO_NOSMT = 2,
+};
+
+enum cpuhp_sync_state {
+	SYNC_STATE_DEAD = 0,
+	SYNC_STATE_KICKED = 1,
+	SYNC_STATE_SHOULD_DIE = 2,
+	SYNC_STATE_ALIVE = 3,
+	SYNC_STATE_SHOULD_ONLINE = 4,
+	SYNC_STATE_ONLINE = 5,
+};
+
+enum hk_type {
+	HK_TYPE_TIMER = 0,
+	HK_TYPE_RCU = 1,
+	HK_TYPE_MISC = 2,
+	HK_TYPE_SCHED = 3,
+	HK_TYPE_TICK = 4,
+	HK_TYPE_DOMAIN = 5,
+	HK_TYPE_WQ = 6,
+	HK_TYPE_MANAGED_IRQ = 7,
+	HK_TYPE_KTHREAD = 8,
+	HK_TYPE_MAX = 9,
+};
+
+enum cc_attr {
+	CC_ATTR_MEM_ENCRYPT = 0,
+	CC_ATTR_HOST_MEM_ENCRYPT = 1,
+	CC_ATTR_GUEST_MEM_ENCRYPT = 2,
+	CC_ATTR_GUEST_STATE_ENCRYPT = 3,
+	CC_ATTR_GUEST_UNROLL_STRING_IO = 4,
+	CC_ATTR_GUEST_SEV_SNP = 5,
+	CC_ATTR_HOTPLUG_DISABLED = 6,
+};
+
+enum cpuhp_smt_control {
+	CPU_SMT_ENABLED = 0,
+	CPU_SMT_DISABLED = 1,
+	CPU_SMT_FORCE_DISABLED = 2,
+	CPU_SMT_NOT_SUPPORTED = 3,
+	CPU_SMT_NOT_IMPLEMENTED = 4,
+};
+
+struct trace_event_raw_cpuhp_enter {
+	struct trace_entry ent;
+	unsigned int cpu;
+	int target;
+	int idx;
+	void *fun;
+	char __data[0];
+};
+
+struct trace_event_raw_cpuhp_multi_enter {
+	struct trace_entry ent;
+	unsigned int cpu;
+	int target;
+	int idx;
+	void *fun;
+	char __data[0];
+};
+
+struct trace_event_raw_cpuhp_exit {
+	struct trace_entry ent;
+	unsigned int cpu;
+	int state;
+	int idx;
+	int ret;
+	char __data[0];
+};
+
+struct cpu_down_work {
+	unsigned int cpu;
+	enum cpuhp_state target;
+};
+
+struct trace_event_data_offsets_cpuhp_enter {};
+
+struct trace_event_data_offsets_cpuhp_multi_enter {};
+
+struct trace_event_data_offsets_cpuhp_exit {};
+
+struct pipe_buffer;
+
+struct pipe_inode_info {
+	struct mutex mutex;
+	wait_queue_head_t rd_wait;
+	wait_queue_head_t wr_wait;
+	unsigned int head;
+	unsigned int tail;
+	unsigned int max_usage;
+	unsigned int ring_size;
+	unsigned int nr_accounted;
+	unsigned int readers;
+	unsigned int writers;
+	unsigned int files;
+	unsigned int r_counter;
+	unsigned int w_counter;
+	bool poll_usage;
+	struct page *tmp_page;
+	struct fasync_struct *fasync_readers;
+	struct fasync_struct *fasync_writers;
+	struct pipe_buffer *bufs;
+	struct user_struct *user;
+};
+
+struct pipe_buf_operations;
+
+struct pipe_buffer {
+	struct page *page;
+	unsigned int offset;
+	unsigned int len;
+	const struct pipe_buf_operations *ops;
+	unsigned int flags;
+	unsigned long private;
+};
+
+struct pipe_buf_operations {
+	int (*confirm)(struct pipe_inode_info *, struct pipe_buffer *);
+	void (*release)(struct pipe_inode_info *, struct pipe_buffer *);
+	bool (*try_steal)(struct pipe_inode_info *, struct pipe_buffer *);
+	bool (*get)(struct pipe_inode_info *, struct pipe_buffer *);
+};
+
+struct __kernel_old_timeval {
+	__kernel_long_t tv_sec;
+	__kernel_long_t tv_usec;
+};
+
+struct rusage {
+	struct __kernel_old_timeval ru_utime;
+	struct __kernel_old_timeval ru_stime;
+	__kernel_long_t ru_maxrss;
+	__kernel_long_t ru_ixrss;
+	__kernel_long_t ru_idrss;
+	__kernel_long_t ru_isrss;
+	__kernel_long_t ru_minflt;
+	__kernel_long_t ru_majflt;
+	__kernel_long_t ru_nswap;
+	__kernel_long_t ru_inblock;
+	__kernel_long_t ru_oublock;
+	__kernel_long_t ru_msgsnd;
+	__kernel_long_t ru_msgrcv;
+	__kernel_long_t ru_nsignals;
+	__kernel_long_t ru_nvcsw;
+	__kernel_long_t ru_nivcsw;
+};
+
+struct waitid_info;
+
+struct wait_opts {
+	enum pid_type wo_type;
+	int wo_flags;
+	struct pid *wo_pid;
+	struct waitid_info *wo_info;
+	int wo_stat;
+	struct rusage *wo_rusage;
+	wait_queue_entry_t child_wait;
+	int notask_error;
+};
+
+struct waitid_info {
+	pid_t pid;
+	uid_t uid;
+	int status;
+	int cause;
+};
+
+typedef u32 compat_uint_t;
+
+struct old_timeval32 {
+	old_time32_t tv_sec;
+	s32 tv_usec;
+};
+
+struct compat_rusage {
+	struct old_timeval32 ru_utime;
+	struct old_timeval32 ru_stime;
+	compat_long_t ru_maxrss;
+	compat_long_t ru_ixrss;
+	compat_long_t ru_idrss;
+	compat_long_t ru_isrss;
+	compat_long_t ru_minflt;
+	compat_long_t ru_majflt;
+	compat_long_t ru_nswap;
+	compat_long_t ru_inblock;
+	compat_long_t ru_oublock;
+	compat_long_t ru_msgsnd;
+	compat_long_t ru_msgrcv;
+	compat_long_t ru_nsignals;
+	compat_long_t ru_nvcsw;
+	compat_long_t ru_nivcsw;
+};
+
+typedef void (*btf_trace_irq_handler_entry)(void *, int, struct irqaction *);
+
+typedef void (*btf_trace_irq_handler_exit)(void *, int, struct irqaction *, int);
+
+typedef void (*btf_trace_softirq_entry)(void *, unsigned int);
+
+typedef void (*btf_trace_softirq_exit)(void *, unsigned int);
+
+typedef void (*btf_trace_softirq_raise)(void *, unsigned int);
+
+struct tasklet_struct;
+
+typedef void (*btf_trace_tasklet_entry)(void *, struct tasklet_struct *, void *);
+
+struct tasklet_struct {
+	struct tasklet_struct *next;
+	unsigned long state;
+	atomic_t count;
+	bool use_callback;
+	union {
+		void (*func)(unsigned long);
+		void (*callback)(struct tasklet_struct *);
+	};
+	unsigned long data;
+};
+
+typedef void (*btf_trace_tasklet_exit)(void *, struct tasklet_struct *, void *);
+
+typedef struct {
+	unsigned int __softirq_pending;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+} irq_cpustat_t;
+
+struct softirq_action {
+	void (*action)(struct softirq_action *);
+};
+
+struct tasklet_head {
+	struct tasklet_struct *head;
+	struct tasklet_struct **tail;
+};
+
+enum {
+	HI_SOFTIRQ = 0,
+	TIMER_SOFTIRQ = 1,
+	NET_TX_SOFTIRQ = 2,
+	NET_RX_SOFTIRQ = 3,
+	BLOCK_SOFTIRQ = 4,
+	IRQ_POLL_SOFTIRQ = 5,
+	TASKLET_SOFTIRQ = 6,
+	SCHED_SOFTIRQ = 7,
+	HRTIMER_SOFTIRQ = 8,
+	RCU_SOFTIRQ = 9,
+	NR_SOFTIRQS = 10,
+};
+
+enum {
+	TASKLET_STATE_SCHED = 0,
+	TASKLET_STATE_RUN = 1,
+};
+
+struct trace_event_raw_irq_handler_entry {
+	struct trace_entry ent;
+	int irq;
+	u32 __data_loc_name;
+	char __data[0];
+};
+
+struct trace_event_raw_irq_handler_exit {
+	struct trace_entry ent;
+	int irq;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_softirq {
+	struct trace_entry ent;
+	unsigned int vec;
+	char __data[0];
+};
+
+struct trace_event_raw_tasklet {
+	struct trace_entry ent;
+	void *tasklet;
+	void *func;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_irq_handler_entry {
+	u32 name;
+};
+
+struct wait_bit_key {
+	void *flags;
+	int bit_nr;
+	unsigned long timeout;
+};
+
+struct wait_bit_queue_entry {
+	struct wait_bit_key key;
+	struct wait_queue_entry wq_entry;
+};
+
+struct trace_event_data_offsets_irq_handler_exit {};
+
+struct trace_event_data_offsets_softirq {};
+
+struct trace_event_data_offsets_tasklet {};
+
+enum {
+	IORES_DESC_NONE = 0,
+	IORES_DESC_CRASH_KERNEL = 1,
+	IORES_DESC_ACPI_TABLES = 2,
+	IORES_DESC_ACPI_NV_STORAGE = 3,
+	IORES_DESC_PERSISTENT_MEMORY = 4,
+	IORES_DESC_PERSISTENT_MEMORY_LEGACY = 5,
+	IORES_DESC_DEVICE_PRIVATE_MEMORY = 6,
+	IORES_DESC_RESERVED = 7,
+	IORES_DESC_SOFT_RESERVED = 8,
+	IORES_DESC_CXL = 9,
+};
+
+enum {
+	MAX_IORES_LEVEL = 5,
+};
+
+enum {
+	REGION_INTERSECTS = 0,
+	REGION_DISJOINT = 1,
+	REGION_MIXED = 2,
+};
+
+struct resource_entry {
+	struct list_head node;
+	struct resource *res;
+	resource_size_t offset;
+	struct resource __res;
+};
+
+struct resource_constraint {
+	resource_size_t min;
+	resource_size_t max;
+	resource_size_t align;
+	resource_size_t (*alignf)(void *, const struct resource *, resource_size_t, resource_size_t);
+	void *alignf_data;
+};
+
+typedef void (*dr_release_t)(struct device *, void *);
+
+typedef int (*dr_match_t)(struct device *, void *, void *);
+
+struct pseudo_fs_context {
+	const struct super_operations *ops;
+	const struct xattr_handler **xattr;
+	const struct dentry_operations *dops;
+	unsigned long magic;
+};
+
+struct region_devres {
+	struct resource *parent;
+	resource_size_t start;
+	resource_size_t n;
+};
+
+enum sysctl_writes_mode {
+	SYSCTL_WRITES_LEGACY = -1,
+	SYSCTL_WRITES_WARN = 0,
+	SYSCTL_WRITES_STRICT = 1,
+};
+
+typedef __kernel_clock_t clock_t;
+
+struct do_proc_dointvec_minmax_conv_param {
+	int *min;
+	int *max;
+};
+
+struct do_proc_douintvec_minmax_conv_param {
+	unsigned int *min;
+	unsigned int *max;
+};
+
+struct __user_cap_header_struct;
+
+typedef struct __user_cap_header_struct *cap_user_header_t;
+
+struct __user_cap_header_struct {
+	__u32 version;
+	int pid;
+};
+
+struct __user_cap_data_struct;
+
+typedef struct __user_cap_data_struct __attribute__((btf_type_tag("user"))) *cap_user_data_t;
+
+struct __user_cap_data_struct {
+	__u32 effective;
+	__u32 permitted;
+	__u32 inheritable;
+};
+
+struct compat_iovec {
+	compat_uptr_t iov_base;
+	compat_size_t iov_len;
+};
+
+struct sigqueue {
+	struct list_head list;
+	int flags;
+	kernel_siginfo_t info;
+	struct ucounts *ucounts;
+};
+
+struct ptrace_peeksiginfo_args {
+	__u64 off;
+	__u32 flags;
+	__s32 nr;
+};
+
+typedef struct compat_siginfo compat_siginfo_t;
+
+struct ptrace_syscall_info {
+	__u8 op;
+	__u8 pad[3];
+	__u32 arch;
+	__u64 instruction_pointer;
+	__u64 stack_pointer;
+	union {
+		struct {
+			__u64 nr;
+			__u64 args[6];
+		} entry;
+		struct {
+			__s64 rval;
+			__u8 is_error;
+		} exit;
+		struct {
+			__u64 nr;
+			__u64 args[6];
+			__u32 ret_data;
+		} seccomp;
+	};
+};
+
+typedef int wait_bit_action_f(struct wait_bit_key *, int);
+
+typedef void (*btf_trace_signal_generate)(void *, int, struct kernel_siginfo *, struct task_struct *, int, int);
+
+typedef void (*btf_trace_signal_deliver)(void *, int, struct kernel_siginfo *, struct k_sigaction *);
+
+enum sig_handler {
+	HANDLER_CURRENT = 0,
+	HANDLER_SIG_DFL = 1,
+	HANDLER_EXIT = 2,
+};
+
+enum {
+	TRACE_SIGNAL_DELIVERED = 0,
+	TRACE_SIGNAL_IGNORED = 1,
+	TRACE_SIGNAL_ALREADY_PENDING = 2,
+	TRACE_SIGNAL_OVERFLOW_FAIL = 3,
+	TRACE_SIGNAL_LOSE_INFO = 4,
+};
+
+struct trace_event_raw_signal_generate {
+	struct trace_entry ent;
+	int sig;
+	int errno;
+	int code;
+	char comm[16];
+	pid_t pid;
+	int group;
+	int result;
+	char __data[0];
+};
+
+struct trace_event_raw_signal_deliver {
+	struct trace_entry ent;
+	int sig;
+	int errno;
+	int code;
+	unsigned long sa_handler;
+	unsigned long sa_flags;
+	char __data[0];
+};
+
+typedef unsigned long old_sigset_t;
+
+typedef u32 compat_old_sigset_t;
+
+struct compat_sigaction {
+	compat_uptr_t sa_handler;
+	compat_ulong_t sa_flags;
+	compat_uptr_t sa_restorer;
+	compat_sigset_t sa_mask;
+};
+
+struct compat_old_sigaction {
+	compat_uptr_t sa_handler;
+	compat_old_sigset_t sa_mask;
+	compat_ulong_t sa_flags;
+	compat_uptr_t sa_restorer;
+};
+
+struct trace_event_data_offsets_signal_generate {};
+
+struct trace_event_data_offsets_signal_deliver {};
+
+enum uts_proc {
+	UTS_PROC_ARCH = 0,
+	UTS_PROC_OSTYPE = 1,
+	UTS_PROC_OSRELEASE = 2,
+	UTS_PROC_VERSION = 3,
+	UTS_PROC_HOSTNAME = 4,
+	UTS_PROC_DOMAINNAME = 5,
+};
+
+struct tms {
+	__kernel_clock_t tms_utime;
+	__kernel_clock_t tms_stime;
+	__kernel_clock_t tms_cutime;
+	__kernel_clock_t tms_cstime;
+};
+
+struct compat_tms {
+	compat_clock_t tms_utime;
+	compat_clock_t tms_stime;
+	compat_clock_t tms_cutime;
+	compat_clock_t tms_cstime;
+};
+
+struct compat_rlimit {
+	compat_ulong_t rlim_cur;
+	compat_ulong_t rlim_max;
+};
+
+struct rlimit64 {
+	__u64 rlim_cur;
+	__u64 rlim_max;
+};
+
+struct getcpu_cache {
+	unsigned long blob[16];
+};
+
+struct sysinfo {
+	__kernel_long_t uptime;
+	__kernel_ulong_t loads[3];
+	__kernel_ulong_t totalram;
+	__kernel_ulong_t freeram;
+	__kernel_ulong_t sharedram;
+	__kernel_ulong_t bufferram;
+	__kernel_ulong_t totalswap;
+	__kernel_ulong_t freeswap;
+	__u16 procs;
+	__u16 pad;
+	__kernel_ulong_t totalhigh;
+	__kernel_ulong_t freehigh;
+	__u32 mem_unit;
+	char _f[0];
+};
+
+struct compat_sysinfo {
+	s32 uptime;
+	u32 loads[3];
+	u32 totalram;
+	u32 freeram;
+	u32 sharedram;
+	u32 bufferram;
+	u32 totalswap;
+	u32 freeswap;
+	u16 procs;
+	u16 pad;
+	u32 totalhigh;
+	u32 freehigh;
+	u32 mem_unit;
+	char _f[8];
+};
+
+struct prctl_mm_map {
+	__u64 start_code;
+	__u64 end_code;
+	__u64 start_data;
+	__u64 end_data;
+	__u64 start_brk;
+	__u64 brk;
+	__u64 start_stack;
+	__u64 arg_start;
+	__u64 arg_end;
+	__u64 env_start;
+	__u64 env_end;
+	__u64 *auxv;
+	__u32 auxv_size;
+	__u32 exe_fd;
+};
+
+struct wq_flusher;
+
+struct worker;
+
+struct workqueue_attrs;
+
+struct pool_workqueue;
+
+struct wq_device;
+
+struct workqueue_struct {
+	struct list_head pwqs;
+	struct list_head list;
+	struct mutex mutex;
+	int work_color;
+	int flush_color;
+	atomic_t nr_pwqs_to_flush;
+	struct wq_flusher *first_flusher;
+	struct list_head flusher_queue;
+	struct list_head flusher_overflow;
+	struct list_head maydays;
+	struct worker *rescuer;
+	int nr_drainers;
+	int saved_max_active;
+	struct workqueue_attrs *unbound_attrs;
+	struct pool_workqueue *dfl_pwq;
+	struct wq_device *wq_dev;
+	char name[24];
+	struct callback_head rcu;
+	long: 64;
+	long: 64;
+	long: 64;
+	unsigned int flags;
+	struct pool_workqueue __attribute__((btf_type_tag("percpu"))) __attribute__((btf_type_tag("rcu"))) **cpu_pwq;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct wq_flusher {
+	struct list_head list;
+	int flush_color;
+	struct completion done;
+};
+
+struct worker_pool;
+
+struct worker {
+	union {
+		struct list_head entry;
+		struct hlist_node hentry;
+	};
+	struct work_struct *current_work;
+	work_func_t current_func;
+	struct pool_workqueue *current_pwq;
+	u64 current_at;
+	unsigned int current_color;
+	int sleeping;
+	work_func_t last_func;
+	struct list_head scheduled;
+	struct task_struct *task;
+	struct worker_pool *pool;
+	struct list_head node;
+	unsigned long last_active;
+	unsigned int flags;
+	int id;
+	char desc[24];
+	struct workqueue_struct *rescue_wq;
+};
+
+struct kthread_work;
+
+typedef void (*kthread_work_func_t)(struct kthread_work *);
+
+struct kthread_worker;
+
+struct kthread_work {
+	struct list_head node;
+	kthread_work_func_t func;
+	struct kthread_worker *worker;
+	int canceling;
+};
+
+struct pool_workqueue {
+	struct worker_pool *pool;
+	struct workqueue_struct *wq;
+	int work_color;
+	int flush_color;
+	int refcnt;
+	int nr_in_flight[16];
+	int nr_active;
+	int max_active;
+	struct list_head inactive_works;
+	struct list_head pwqs_node;
+	struct list_head mayday_node;
+	u64 stats[8];
+	struct kthread_work release_work;
+	struct callback_head rcu;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct ida {
+	struct xarray xa;
+};
+
+struct worker_pool {
+	raw_spinlock_t lock;
+	int cpu;
+	int node;
+	int id;
+	unsigned int flags;
+	unsigned long watchdog_ts;
+	bool cpu_stall;
+	int nr_running;
+	struct list_head worklist;
+	int nr_workers;
+	int nr_idle;
+	struct list_head idle_list;
+	struct timer_list idle_timer;
+	struct work_struct idle_cull_work;
+	struct timer_list mayday_timer;
+	struct hlist_head busy_hash[64];
+	struct worker *manager;
+	struct list_head workers;
+	struct list_head dying_workers;
+	struct completion *detach_completion;
+	struct ida worker_ida;
+	struct workqueue_attrs *attrs;
+	struct hlist_node hash_node;
+	int refcnt;
+	struct callback_head rcu;
+};
+
+enum wq_affn_scope {
+	WQ_AFFN_DFL = 0,
+	WQ_AFFN_CPU = 1,
+	WQ_AFFN_SMT = 2,
+	WQ_AFFN_CACHE = 3,
+	WQ_AFFN_NUMA = 4,
+	WQ_AFFN_SYSTEM = 5,
+	WQ_AFFN_NR_TYPES = 6,
+};
+
+struct workqueue_attrs {
+	int nice;
+	cpumask_var_t cpumask;
+	cpumask_var_t __pod_cpumask;
+	bool affn_strict;
+	enum wq_affn_scope affn_scope;
+	bool ordered;
+};
+
+struct kthread_worker {
+	unsigned int flags;
+	raw_spinlock_t lock;
+	struct list_head work_list;
+	struct list_head delayed_work_list;
+	struct task_struct *task;
+	struct kthread_work *current_work;
+};
+
+struct wq_device {
+	struct workqueue_struct *wq;
+	struct device dev;
+};
+
+typedef void (*btf_trace_workqueue_queue_work)(void *, int, struct pool_workqueue *, struct work_struct *);
+
+typedef void (*btf_trace_workqueue_activate_work)(void *, struct work_struct *);
+
+typedef void (*btf_trace_workqueue_execute_start)(void *, struct work_struct *);
+
+typedef void (*btf_trace_workqueue_execute_end)(void *, struct work_struct *, work_func_t);
+
+struct wq_pod_type {
+	int nr_pods;
+	cpumask_var_t *pod_cpus;
+	int *pod_node;
+	int *cpu_pod;
+};
+
+enum {
+	POOL_MANAGER_ACTIVE = 1,
+	POOL_DISASSOCIATED = 4,
+	WORKER_DIE = 2,
+	WORKER_IDLE = 4,
+	WORKER_PREP = 8,
+	WORKER_CPU_INTENSIVE = 64,
+	WORKER_UNBOUND = 128,
+	WORKER_REBOUND = 256,
+	WORKER_NOT_RUNNING = 456,
+	NR_STD_WORKER_POOLS = 2,
+	UNBOUND_POOL_HASH_ORDER = 6,
+	BUSY_WORKER_HASH_ORDER = 6,
+	MAX_IDLE_WORKERS_RATIO = 4,
+	IDLE_WORKER_TIMEOUT = 75000,
+	MAYDAY_INITIAL_TIMEOUT = 2,
+	MAYDAY_INTERVAL = 25,
+	CREATE_COOLDOWN = 250,
+	RESCUER_NICE_LEVEL = -20,
+	HIGHPRI_NICE_LEVEL = -20,
+	WQ_NAME_LEN = 24,
+};
+
+enum pool_workqueue_stats {
+	PWQ_STAT_STARTED = 0,
+	PWQ_STAT_COMPLETED = 1,
+	PWQ_STAT_CPU_TIME = 2,
+	PWQ_STAT_CPU_INTENSIVE = 3,
+	PWQ_STAT_CM_WAKEUP = 4,
+	PWQ_STAT_REPATRIATED = 5,
+	PWQ_STAT_MAYDAY = 6,
+	PWQ_STAT_RESCUED = 7,
+	PWQ_NR_STATS = 8,
+};
+
+enum {
+	WQ_UNBOUND = 2,
+	WQ_FREEZABLE = 4,
+	WQ_MEM_RECLAIM = 8,
+	WQ_HIGHPRI = 16,
+	WQ_CPU_INTENSIVE = 32,
+	WQ_SYSFS = 64,
+	WQ_POWER_EFFICIENT = 128,
+	__WQ_DESTROYING = 32768,
+	__WQ_DRAINING = 65536,
+	__WQ_ORDERED = 131072,
+	__WQ_LEGACY = 262144,
+	__WQ_ORDERED_EXPLICIT = 524288,
+	WQ_MAX_ACTIVE = 512,
+	WQ_UNBOUND_MAX_ACTIVE = 512,
+	WQ_DFL_ACTIVE = 256,
+};
+
+enum xa_lock_type {
+	XA_LOCK_IRQ = 1,
+	XA_LOCK_BH = 2,
+};
+
+struct trace_event_raw_workqueue_queue_work {
+	struct trace_entry ent;
+	void *work;
+	void *function;
+	u32 __data_loc_workqueue;
+	int req_cpu;
+	int cpu;
+	char __data[0];
+};
+
+struct trace_event_raw_workqueue_activate_work {
+	struct trace_entry ent;
+	void *work;
+	char __data[0];
+};
+
+struct trace_event_raw_workqueue_execute_start {
+	struct trace_entry ent;
+	void *work;
+	void *function;
+	char __data[0];
+};
+
+struct trace_event_raw_workqueue_execute_end {
+	struct trace_entry ent;
+	void *work;
+	void *function;
+	char __data[0];
+};
+
+struct wq_barrier {
+	struct work_struct work;
+	struct completion done;
+	struct task_struct *task;
+};
+
+struct cwt_wait {
+	wait_queue_entry_t wait;
+	struct work_struct *work;
+};
+
+struct __una_u32 {
+	u32 x;
+};
+
+struct work_for_cpu {
+	struct work_struct work;
+	long (*fn)(void *);
+	void *arg;
+	long ret;
+};
+
+struct apply_wqattrs_ctx {
+	struct workqueue_struct *wq;
+	struct workqueue_attrs *attrs;
+	struct list_head list;
+	struct pool_workqueue *dfl_pwq;
+	struct pool_workqueue *pwq_tbl[0];
+};
+
+struct trace_event_data_offsets_workqueue_queue_work {
+	u32 workqueue;
+};
+
+struct pr_cont_work_struct {
+	bool comma;
+	work_func_t func;
+	long ctr;
+};
+
+struct trace_event_data_offsets_workqueue_activate_work {};
+
+struct trace_event_data_offsets_workqueue_execute_start {};
+
+struct trace_event_data_offsets_workqueue_execute_end {};
+
+struct execute_work {
+	struct work_struct work;
+};
+
+typedef struct {} local_lock_t;
+
+enum task_work_notify_mode {
+	TWA_NONE = 0,
+	TWA_RESUME = 1,
+	TWA_SIGNAL = 2,
+	TWA_SIGNAL_NO_IPI = 3,
+};
+
+typedef void (*task_work_func_t)(struct callback_head *);
+
+struct param_attribute {
+	struct module_attribute mattr;
+	const struct kernel_param *param;
+};
+
+struct module_param_attrs {
+	unsigned int num;
+	struct attribute_group grp;
+	struct param_attribute attrs[0];
+};
+
+enum {
+	KERNEL_PARAM_OPS_FL_NOARG = 1,
+};
+
+enum {
+	KERNEL_PARAM_FL_UNSAFE = 1,
+	KERNEL_PARAM_FL_HWPARAM = 2,
+};
+
+enum lockdown_reason {
+	LOCKDOWN_NONE = 0,
+	LOCKDOWN_MODULE_SIGNATURE = 1,
+	LOCKDOWN_DEV_MEM = 2,
+	LOCKDOWN_EFI_TEST = 3,
+	LOCKDOWN_KEXEC = 4,
+	LOCKDOWN_HIBERNATION = 5,
+	LOCKDOWN_PCI_ACCESS = 6,
+	LOCKDOWN_IOPORT = 7,
+	LOCKDOWN_MSR = 8,
+	LOCKDOWN_ACPI_TABLES = 9,
+	LOCKDOWN_DEVICE_TREE = 10,
+	LOCKDOWN_PCMCIA_CIS = 11,
+	LOCKDOWN_TIOCSSERIAL = 12,
+	LOCKDOWN_MODULE_PARAMETERS = 13,
+	LOCKDOWN_MMIOTRACE = 14,
+	LOCKDOWN_DEBUGFS = 15,
+	LOCKDOWN_XMON_WR = 16,
+	LOCKDOWN_BPF_WRITE_USER = 17,
+	LOCKDOWN_DBG_WRITE_KERNEL = 18,
+	LOCKDOWN_RTAS_ERROR_INJECTION = 19,
+	LOCKDOWN_INTEGRITY_MAX = 20,
+	LOCKDOWN_KCORE = 21,
+	LOCKDOWN_KPROBES = 22,
+	LOCKDOWN_BPF_READ_KERNEL = 23,
+	LOCKDOWN_DBG_READ_KERNEL = 24,
+	LOCKDOWN_PERF = 25,
+	LOCKDOWN_TRACEFS = 26,
+	LOCKDOWN_XMON_RW = 27,
+	LOCKDOWN_XFRM_SECRET = 28,
+	LOCKDOWN_CONFIDENTIALITY_MAX = 29,
+};
+
+struct module_version_attribute {
+	struct module_attribute mattr;
+	const char *module_name;
+	const char *version;
+};
+
+struct kmalloced_param {
+	struct list_head list;
+	char val[0];
+};
+
+struct sched_param {
+	int sched_priority;
+};
+
+enum KTHREAD_BITS {
+	KTHREAD_IS_PER_CPU = 0,
+	KTHREAD_SHOULD_STOP = 1,
+	KTHREAD_SHOULD_PARK = 2,
+};
+
+enum {
+	KTW_FREEZABLE = 1,
+};
+
+enum {
+	CSS_NO_REF = 1,
+	CSS_ONLINE = 2,
+	CSS_RELEASED = 4,
+	CSS_VISIBLE = 8,
+	CSS_DYING = 16,
+};
+
+enum {
+	__PERCPU_REF_ATOMIC = 1,
+	__PERCPU_REF_DEAD = 2,
+	__PERCPU_REF_ATOMIC_DEAD = 3,
+	__PERCPU_REF_FLAG_BITS = 2,
+};
+
+struct kthread_create_info {
+	char *full_name;
+	int (*threadfn)(void *);
+	void *data;
+	int node;
+	struct task_struct *result;
+	struct completion *done;
+	struct list_head list;
+};
+
+struct kthread_delayed_work {
+	struct kthread_work work;
+	struct timer_list timer;
+};
+
+struct kthread_flush_work {
+	struct kthread_work work;
+	struct completion done;
+};
+
+struct kthread {
+	unsigned long flags;
+	unsigned int cpu;
+	int result;
+	int (*threadfn)(void *);
+	void *data;
+	struct completion parked;
+	struct completion exited;
+	struct cgroup_subsys_state *blkcg_css;
+	char *full_name;
+};
+
+struct ipc_ids {
+	int in_use;
+	unsigned short seq;
+	struct rw_semaphore rwsem;
+	struct idr ipcs_idr;
+	int max_idx;
+	int last_idx;
+	struct rhashtable key_ht;
+};
+
+struct ipc_namespace {
+	struct ipc_ids ids[3];
+	int sem_ctls[4];
+	int used_sems;
+	unsigned int msg_ctlmax;
+	unsigned int msg_ctlmnb;
+	unsigned int msg_ctlmni;
+	struct percpu_counter percpu_msg_bytes;
+	struct percpu_counter percpu_msg_hdrs;
+	size_t shm_ctlmax;
+	size_t shm_ctlall;
+	unsigned long shm_tot;
+	int shm_ctlmni;
+	int shm_rmid_forced;
+	struct notifier_block ipcns_nb;
+	struct vfsmount *mq_mnt;
+	unsigned int mq_queues_count;
+	unsigned int mq_queues_max;
+	unsigned int mq_msg_max;
+	unsigned int mq_msgsize_max;
+	unsigned int mq_msg_default;
+	unsigned int mq_msgsize_default;
+	struct ctl_table_set mq_set;
+	struct ctl_table_header *mq_sysctls;
+	struct ctl_table_set ipc_set;
+	struct ctl_table_header *ipc_sysctls;
+	struct user_namespace *user_ns;
+	struct ucounts *ucounts;
+	struct llist_node mnt_llist;
+	struct ns_common ns;
+};
+
+typedef void (*btf_trace_notifier_register)(void *, void *);
+
+typedef void (*btf_trace_notifier_unregister)(void *, void *);
+
+typedef void (*btf_trace_notifier_run)(void *, void *);
+
+struct trace_event_raw_notifier_info {
+	struct trace_entry ent;
+	void *cb;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_notifier_info {};
+
+struct srcu_notifier_head {
+	struct mutex mutex;
+	struct srcu_usage srcuu;
+	struct srcu_struct srcu;
+	struct notifier_block __attribute__((btf_type_tag("rcu"))) *head;
+};
+
+struct die_args {
+	struct pt_regs *regs;
+	const char *str;
+	long err;
+	int trapnr;
+	int signr;
+};
+
+enum proc_cn_event {
+	PROC_EVENT_NONE = 0,
+	PROC_EVENT_FORK = 1,
+	PROC_EVENT_EXEC = 2,
+	PROC_EVENT_UID = 4,
+	PROC_EVENT_GID = 64,
+	PROC_EVENT_SID = 128,
+	PROC_EVENT_PTRACE = 256,
+	PROC_EVENT_COMM = 512,
+	PROC_EVENT_NONZERO_EXIT = 536870912,
+	PROC_EVENT_COREDUMP = 1073741824,
+	PROC_EVENT_EXIT = 2147483648,
+};
+
+enum reboot_type {
+	BOOT_TRIPLE = 116,
+	BOOT_KBD = 107,
+	BOOT_BIOS = 98,
+	BOOT_ACPI = 97,
+	BOOT_EFI = 101,
+	BOOT_CF9_FORCE = 112,
+	BOOT_CF9_SAFE = 113,
+};
+
+enum sys_off_mode {
+	SYS_OFF_MODE_POWER_OFF_PREPARE = 0,
+	SYS_OFF_MODE_POWER_OFF = 1,
+	SYS_OFF_MODE_RESTART_PREPARE = 2,
+	SYS_OFF_MODE_RESTART = 3,
+};
+
+struct sys_off_data;
+
+struct sys_off_handler {
+	struct notifier_block nb;
+	int (*sys_off_cb)(struct sys_off_data *);
+	void *cb_data;
+	enum sys_off_mode mode;
+	bool blocking;
+	void *list;
+};
+
+struct sys_off_data {
+	int mode;
+	void *cb_data;
+	const char *cmd;
+};
+
+struct async_entry {
+	struct list_head domain_list;
+	struct list_head global_list;
+	struct work_struct work;
+	async_cookie_t cookie;
+	async_func_t func;
+	void *data;
+	struct async_domain *domain;
+};
+
+enum {
+	HP_THREAD_NONE = 0,
+	HP_THREAD_ACTIVE = 1,
+	HP_THREAD_PARKED = 2,
+};
+
+struct smpboot_thread_data {
+	unsigned int cpu;
+	unsigned int status;
+	struct smp_hotplug_thread *ht;
+};
+
+enum vhost_task_flags {
+	VHOST_TASK_FLAGS_STOP = 0,
+};
+
+struct vhost_task {
+	bool (*fn)(void *);
+	void *data;
+	struct completion exited;
+	unsigned long flags;
+	struct task_struct *task;
+};
+
+struct cfs_rq {
+	struct load_weight load;
+	unsigned int nr_running;
+	unsigned int h_nr_running;
+	unsigned int idle_nr_running;
+	unsigned int idle_h_nr_running;
+	s64 avg_vruntime;
+	u64 avg_load;
+	u64 exec_clock;
+	u64 min_vruntime;
+	struct rb_root_cached tasks_timeline;
+	struct sched_entity *curr;
+	struct sched_entity *next;
+	unsigned int nr_spread_over;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct sched_avg avg;
+	struct {
+		raw_spinlock_t lock;
+		int nr;
+		unsigned long load_avg;
+		unsigned long util_avg;
+		unsigned long runnable_avg;
+		long: 64;
+		long: 64;
+		long: 64;
+		long: 64;
+	} removed;
+	unsigned long tg_load_avg_contrib;
+	long propagate;
+	long prop_runnable_sum;
+	unsigned long h_load;
+	u64 last_h_load_update;
+	struct sched_entity *h_load_next;
+	bool decayed;
+	struct rq *rq;
+	int on_list;
+	struct list_head leaf_cfs_rq_list;
+	struct task_group *tg;
+	int idle;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct __call_single_data {
+	struct __call_single_node node;
+	smp_call_func_t func;
+	void *info;
+};
+
+typedef struct __call_single_data call_single_data_t;
+
+struct uclamp_bucket {
+	unsigned long value: 11;
+	unsigned long tasks: 53;
+};
+
+struct uclamp_rq {
+	unsigned int value;
+	struct uclamp_bucket bucket[20];
+};
+
+struct rt_prio_array {
+	unsigned long bitmap[2];
+	struct list_head queue[100];
+};
+
+struct rt_rq {
+	struct rt_prio_array active;
+	unsigned int rt_nr_running;
+	unsigned int rr_nr_running;
+	struct {
+		int curr;
+		int next;
+	} highest_prio;
+	unsigned int rt_nr_migratory;
+	unsigned int rt_nr_total;
+	int overloaded;
+	struct plist_head pushable_tasks;
+	int rt_queued;
+	int rt_throttled;
+	u64 rt_time;
+	u64 rt_runtime;
+	raw_spinlock_t rt_runtime_lock;
+};
+
+struct dl_rq {
+	struct rb_root_cached root;
+	unsigned int dl_nr_running;
+	struct {
+		u64 curr;
+		u64 next;
+	} earliest_dl;
+	unsigned int dl_nr_migratory;
+	int overloaded;
+	struct rb_root_cached pushable_dl_tasks_root;
+	u64 running_bw;
+	u64 this_bw;
+	u64 extra_bw;
+	u64 max_bw;
+	u64 bw_ratio;
+};
+
+struct cpu_stop_done;
+
+struct cpu_stop_work {
+	struct list_head list;
+	cpu_stop_fn_t fn;
+	unsigned long caller;
+	void *arg;
+	struct cpu_stop_done *done;
+};
+
+enum misfit_reason {
+	MISFIT_PERF = 0,
+};
+
+typedef enum misfit_reason misfit_reason_t;
+
+struct root_domain;
+
+struct sched_domain;
+
+struct balance_callback;
+
+struct cpuidle_state;
+
+struct rq {
+	raw_spinlock_t __lock;
+	unsigned int nr_running;
+	unsigned long last_blocked_load_update_tick;
+	unsigned int has_blocked_load;
+	long: 64;
+	call_single_data_t nohz_csd;
+	unsigned int nohz_tick_stopped;
+	atomic_t nohz_flags;
+	unsigned int ttwu_pending;
+	u64 nr_switches;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct uclamp_rq uclamp[2];
+	unsigned int uclamp_flags;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct cfs_rq cfs;
+	struct rt_rq rt;
+	struct dl_rq dl;
+	struct list_head leaf_cfs_rq_list;
+	struct list_head *tmp_alone_branch;
+	unsigned int nr_uninterruptible;
+	struct task_struct __attribute__((btf_type_tag("rcu"))) *curr;
+	struct task_struct *idle;
+	struct task_struct *stop;
+	unsigned long next_balance;
+	struct mm_struct *prev_mm;
+	unsigned int clock_update_flags;
+	u64 clock;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	u64 clock_task;
+	u64 clock_task_mult;
+	u64 clock_pelt;
+	unsigned long lost_idle_time;
+	u64 clock_pelt_idle;
+	u64 clock_idle;
+	atomic_t nr_iowait;
+	u64 last_seen_need_resched_ns;
+	int ticks_without_resched;
+	int membarrier_state;
+	struct root_domain *rd;
+	struct sched_domain __attribute__((btf_type_tag("rcu"))) *sd;
+	unsigned long cpu_capacity;
+	unsigned long cpu_capacity_orig;
+	struct balance_callback *balance_callback;
+	unsigned char nohz_idle_balance;
+	unsigned char idle_balance;
+	unsigned long misfit_task_load;
+	int active_balance;
+	int push_cpu;
+	struct cpu_stop_work active_balance_work;
+	int cpu;
+	int online;
+	struct list_head cfs_tasks;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct sched_avg avg_rt;
+	struct sched_avg avg_dl;
+	struct sched_avg avg_irq;
+	struct sched_avg avg_thermal;
+	u64 idle_stamp;
+	u64 avg_idle;
+	unsigned long wake_stamp;
+	u64 wake_avg_idle;
+	u64 max_idle_balance_cost;
+	struct rcuwait hotplug_wait;
+	u64 prev_irq_time;
+	u64 prev_steal_time;
+	u64 prev_steal_time_rq;
+	unsigned long calc_load_update;
+	long calc_load_active;
+	long: 64;
+	call_single_data_t hrtick_csd;
+	struct hrtimer hrtick_timer;
+	ktime_t hrtick_time;
+	struct sched_info rq_sched_info;
+	unsigned long long rq_cpu_time;
+	unsigned int yld_count;
+	unsigned int sched_count;
+	unsigned int sched_goidle;
+	unsigned int ttwu_count;
+	unsigned int ttwu_local;
+	struct cpuidle_state *idle_state;
+	unsigned int nr_pinned;
+	unsigned int push_busy;
+	struct cpu_stop_work push_work;
+	cpumask_var_t scratch_mask;
+	misfit_reason_t misfit_reason;
+	u64 android_oem_data1[16];
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct dl_bw {
+	raw_spinlock_t lock;
+	u64 bw;
+	u64 total_bw;
+};
+
+struct cpudl_item;
+
+struct cpudl {
+	raw_spinlock_t lock;
+	int size;
+	cpumask_var_t free_cpus;
+	struct cpudl_item *elements;
+};
+
+struct cpupri_vec {
+	atomic_t count;
+	cpumask_var_t mask;
+};
+
+struct cpupri {
+	struct cpupri_vec pri_to_cpu[101];
+	int *cpu_to_pri;
+};
+
+struct perf_domain;
+
+struct root_domain {
+	atomic_t refcount;
+	atomic_t rto_count;
+	struct callback_head rcu;
+	cpumask_var_t span;
+	cpumask_var_t online;
+	int overload;
+	int overutilized;
+	cpumask_var_t dlo_mask;
+	atomic_t dlo_count;
+	struct dl_bw dl_bw;
+	struct cpudl cpudl;
+	u64 visit_gen;
+	struct irq_work rto_push_work;
+	raw_spinlock_t rto_lock;
+	int rto_loop;
+	int rto_cpu;
+	atomic_t rto_loop_next;
+	atomic_t rto_loop_start;
+	cpumask_var_t rto_mask;
+	struct cpupri cpupri;
+	unsigned long max_cpu_capacity;
+	struct perf_domain __attribute__((btf_type_tag("rcu"))) *pd;
+	u64 android_vendor_data1;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct cpudl_item {
+	u64 dl;
+	int cpu;
+	int idx;
+};
+
+struct perf_domain {
+	struct em_perf_domain *em_pd;
+	struct perf_domain *next;
+	struct callback_head rcu;
+};
+
+struct sched_group;
+
+struct sched_domain_shared;
+
+struct sched_domain {
+	struct sched_domain __attribute__((btf_type_tag("rcu"))) *parent;
+	struct sched_domain __attribute__((btf_type_tag("rcu"))) *child;
+	struct sched_group *groups;
+	unsigned long min_interval;
+	unsigned long max_interval;
+	unsigned int busy_factor;
+	unsigned int imbalance_pct;
+	unsigned int cache_nice_tries;
+	unsigned int imb_numa_nr;
+	int nohz_idle;
+	int flags;
+	int level;
+	unsigned long last_balance;
+	unsigned int balance_interval;
+	unsigned int nr_balance_failed;
+	u64 max_newidle_lb_cost;
+	unsigned long last_decay_max_lb_cost;
+	u64 avg_scan_cost;
+	unsigned int lb_count[3];
+	unsigned int lb_failed[3];
+	unsigned int lb_balanced[3];
+	unsigned int lb_imbalance[3];
+	unsigned int lb_gained[3];
+	unsigned int lb_hot_gained[3];
+	unsigned int lb_nobusyg[3];
+	unsigned int lb_nobusyq[3];
+	unsigned int alb_count;
+	unsigned int alb_failed;
+	unsigned int alb_pushed;
+	unsigned int sbe_count;
+	unsigned int sbe_balanced;
+	unsigned int sbe_pushed;
+	unsigned int sbf_count;
+	unsigned int sbf_balanced;
+	unsigned int sbf_pushed;
+	unsigned int ttwu_wake_remote;
+	unsigned int ttwu_move_affine;
+	unsigned int ttwu_move_balance;
+	char *name;
+	union {
+		void *private;
+		struct callback_head rcu;
+	};
+	struct sched_domain_shared *shared;
+	unsigned int span_weight;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	unsigned long span[0];
+};
+
+struct sched_group_capacity;
+
+struct sched_group {
+	struct sched_group *next;
+	atomic_t ref;
+	unsigned int group_weight;
+	unsigned int cores;
+	struct sched_group_capacity *sgc;
+	int asym_prefer_cpu;
+	int flags;
+	unsigned long cpumask[0];
+};
+
+struct sched_group_capacity {
+	atomic_t ref;
+	unsigned long capacity;
+	unsigned long min_capacity;
+	unsigned long max_capacity;
+	unsigned long next_update;
+	int imbalance;
+	int id;
+	unsigned long cpumask[0];
+};
+
+struct sched_domain_shared {
+	atomic_t ref;
+	atomic_t nr_busy_cpus;
+	int has_idle_cores;
+	int nr_idle_scan;
+};
+
+struct balance_callback {
+	struct balance_callback *next;
+	void (*func)(struct rq *);
+};
+
+struct cfs_bandwidth {};
+
+struct task_group {
+	struct cgroup_subsys_state css;
+	struct sched_entity **se;
+	struct cfs_rq **cfs_rq;
+	unsigned long shares;
+	int idle;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	atomic_long_t load_avg;
+	struct callback_head rcu;
+	struct list_head list;
+	struct task_group *parent;
+	struct list_head siblings;
+	struct list_head children;
+	struct cfs_bandwidth cfs_bandwidth;
+	unsigned int uclamp_pct[2];
+	struct uclamp_se uclamp_req[2];
+	struct uclamp_se uclamp[2];
+	unsigned int latency_sensitive;
+	u64 android_vendor_data1[4];
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+	long: 64;
+	long: 64;
+};
+
+struct pin_cookie {};
+
+struct rq_flags {
+	unsigned long flags;
+	struct pin_cookie cookie;
+	unsigned int clock_update_flags;
+};
+
+struct affinity_context {
+	const struct cpumask *new_mask;
+	struct cpumask *user_mask;
+	unsigned int flags;
+};
+
+struct io_ring_ctx;
+
+struct io_wq;
+
+struct io_uring_task {
+	int cached_refs;
+	const struct io_ring_ctx *last;
+	struct io_wq *io_wq;
+	struct file *registered_rings[16];
+	struct xarray xa;
+	struct wait_queue_head wait;
+	atomic_t in_cancel;
+	atomic_t inflight_tracked;
+	struct percpu_counter inflight;
+	long: 64;
+	long: 64;
+	struct {
+		struct llist_head task_list;
+		struct callback_head task_work;
+		long: 64;
+		long: 64;
+		long: 64;
+		long: 64;
+		long: 64;
+	};
+};
+
+struct io_fixed_file;
+
+struct io_file_table {
+	struct io_fixed_file *files;
+	unsigned long *bitmap;
+	unsigned int alloc_hint;
+};
+
+struct io_wq_work_node {
+	struct io_wq_work_node *next;
+};
+
+struct io_wq_work_list {
+	struct io_wq_work_node *first;
+	struct io_wq_work_node *last;
+};
+
+struct io_kiocb;
+
+struct io_submit_link {
+	struct io_kiocb *head;
+	struct io_kiocb *last;
+};
+
+struct io_submit_state {
+	struct io_wq_work_node free_list;
+	struct io_wq_work_list compl_reqs;
+	struct io_submit_link link;
+	bool plug_started;
+	bool need_plug;
+	unsigned short submit_nr;
+	unsigned int cqes_count;
+	struct blk_plug plug;
+};
+
+struct io_hash_bucket;
+
+struct io_hash_table {
+	struct io_hash_bucket *hbs;
+	unsigned int hash_bits;
+};
+
+struct io_alloc_cache {
+	struct io_wq_work_node list;
+	unsigned int nr_cached;
+	unsigned int max_cached;
+	size_t elem_size;
+};
+
+struct io_uring_cqe {
+	__u64 user_data;
+	__s32 res;
+	__u32 flags;
+	__u64 big_cqe[0];
+};
+
+struct io_restriction {
+	unsigned long register_op[1];
+	unsigned long sqe_op[1];
+	u8 sqe_flags_allowed;
+	u8 sqe_flags_required;
+	bool registered;
+};
+
+struct io_rings;
+
+struct io_rsrc_node;
+
+struct io_mapped_ubuf;
+
+struct io_ev_fd;
+
+struct io_sq_data;
+
+struct io_rsrc_data;
+
+struct io_wq_hash;
+
+struct io_ring_ctx {
+	struct {
+		unsigned int flags;
+		unsigned int drain_next: 1;
+		unsigned int restricted: 1;
+		unsigned int off_timeout_used: 1;
+		unsigned int drain_active: 1;
+		unsigned int has_evfd: 1;
+		unsigned int task_complete: 1;
+		unsigned int lockless_cq: 1;
+		unsigned int syscall_iopoll: 1;
+		unsigned int poll_activated: 1;
+		unsigned int drain_disabled: 1;
+		unsigned int compat: 1;
+		struct task_struct *submitter_task;
+		struct io_rings *rings;
+		struct percpu_ref refs;
+		enum task_work_notify_mode notify_method;
+		long: 64;
+		long: 64;
+	};
+	struct {
+		struct mutex uring_lock;
+		u32 *sq_array;
+		struct io_uring_sqe *sq_sqes;
+		unsigned int cached_sq_head;
+		unsigned int sq_entries;
+		struct io_rsrc_node *rsrc_node;
+		atomic_t cancel_seq;
+		struct io_file_table file_table;
+		unsigned int nr_user_files;
+		unsigned int nr_user_bufs;
+		struct io_mapped_ubuf **user_bufs;
+		struct io_submit_state submit_state;
+		struct xarray io_bl_xa;
+		struct io_hash_table cancel_table_locked;
+		struct io_alloc_cache apoll_cache;
+		struct io_alloc_cache netmsg_cache;
+		struct io_wq_work_list iopoll_list;
+		bool poll_multi_queue;
+	};
+	struct {
+		struct io_uring_cqe *cqe_cached;
+		struct io_uring_cqe *cqe_sentinel;
+		unsigned int cached_cq_tail;
+		unsigned int cq_entries;
+		struct io_ev_fd __attribute__((btf_type_tag("rcu"))) *io_ev_fd;
+		unsigned int cq_extra;
+		long: 64;
+		long: 64;
+		long: 64;
+	};
+	struct {
+		struct llist_head work_llist;
+		unsigned long check_cq;
+		atomic_t cq_wait_nr;
+		atomic_t cq_timeouts;
+		struct wait_queue_head cq_wait;
+		long: 64;
+		long: 64;
+	};
+	struct {
+		spinlock_t timeout_lock;
+		struct list_head timeout_list;
+		struct list_head ltimeout_list;
+		unsigned int cq_last_tm_flush;
+		long: 64;
+		long: 64;
+	};
+	struct io_uring_cqe completion_cqes[16];
+	spinlock_t completion_lock;
+	struct io_wq_work_list locked_free_list;
+	unsigned int locked_free_nr;
+	struct list_head io_buffers_comp;
+	struct list_head cq_overflow_list;
+	struct io_hash_table cancel_table;
+	const struct cred *sq_creds;
+	struct io_sq_data *sq_data;
+	struct wait_queue_head sqo_sq_wait;
+	struct list_head sqd_list;
+	unsigned int file_alloc_start;
+	unsigned int file_alloc_end;
+	struct xarray personalities;
+	u32 pers_next;
+	struct list_head io_buffers_cache;
+	struct hlist_head io_buf_list;
+	struct wait_queue_head poll_wq;
+	struct io_restriction restrictions;
+	struct io_mapped_ubuf *dummy_ubuf;
+	struct io_rsrc_data *file_data;
+	struct io_rsrc_data *buf_data;
+	struct list_head rsrc_ref_list;
+	struct io_alloc_cache rsrc_node_cache;
+	struct wait_queue_head rsrc_quiesce_wq;
+	unsigned int rsrc_quiesce;
+	struct list_head io_buffers_pages;
+	struct io_wq_hash *hash_map;
+	struct user_struct *user;
+	struct mm_struct *mm_account;
+	struct llist_head fallback_llist;
+	struct delayed_work fallback_work;
+	struct work_struct exit_work;
+	struct list_head tctx_list;
+	struct completion ref_comp;
+	u32 iowq_limits[2];
+	bool iowq_limits_set;
+	struct callback_head poll_wq_task_work;
+	struct list_head defer_list;
+	unsigned int sq_thread_idle;
+	unsigned int evfd_last_cq_tail;
+	unsigned short n_ring_pages;
+	unsigned short n_sqe_pages;
+	struct page **ring_pages;
+	struct page **sqe_pages;
+	long: 64;
+};
+
+struct io_uring {
+	u32 head;
+	u32 tail;
+};
+
+struct io_rings {
+	struct io_uring sq;
+	struct io_uring cq;
+	u32 sq_ring_mask;
+	u32 cq_ring_mask;
+	u32 sq_ring_entries;
+	u32 cq_ring_entries;
+	u32 sq_dropped;
+	atomic_t sq_flags;
+	u32 cq_flags;
+	u32 cq_overflow;
+	long: 64;
+	long: 64;
+	struct io_uring_cqe cqes[0];
+};
+
+struct io_fixed_file {
+	unsigned long file_ptr;
+};
+
+struct io_cmd_data {
+	struct file *file;
+	__u8 data[56];
+};
+
+struct io_cqe {
+	__u64 user_data;
+	__s32 res;
+	union {
+		__u32 flags;
+		int fd;
+	};
+};
+
+struct io_tw_state;
+
+typedef void (*io_req_tw_func_t)(struct io_kiocb *, struct io_tw_state *);
+
+struct io_task_work {
+	struct llist_node node;
+	io_req_tw_func_t func;
+};
+
+struct io_wq_work {
+	struct io_wq_work_node list;
+	unsigned int flags;
+	int cancel_seq;
+};
+
+struct io_buffer;
+
+struct io_buffer_list;
+
+struct async_poll;
+
+struct io_kiocb {
+	union {
+		struct file *file;
+		struct io_cmd_data cmd;
+	};
+	u8 opcode;
+	u8 iopoll_completed;
+	u16 buf_index;
+	unsigned int flags;
+	struct io_cqe cqe;
+	struct io_ring_ctx *ctx;
+	struct task_struct *task;
+	struct io_rsrc_node *rsrc_node;
+	union {
+		struct io_mapped_ubuf *imu;
+		struct io_buffer *kbuf;
+		struct io_buffer_list *buf_list;
+	};
+	union {
+		struct io_wq_work_node comp_list;
+		__poll_t apoll_events;
+	};
+	atomic_t refs;
+	atomic_t poll_refs;
+	struct io_task_work io_task_work;
+	unsigned int nr_tw;
+	struct hlist_node hash_node;
+	struct async_poll *apoll;
+	void *async_data;
+	struct io_kiocb *link;
+	const struct cred *creds;
+	struct io_wq_work work;
+	struct {
+		u64 extra1;
+		u64 extra2;
+	} big_cqe;
+};
+
+struct io_tw_state {
+	bool locked;
+};
+
+struct io_hash_bucket {
+	spinlock_t lock;
+	struct hlist_head list;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct io_ev_fd {
+	struct eventfd_ctx *cq_ev_fd;
+	unsigned int eventfd_async: 1;
+	struct callback_head rcu;
+	atomic_t refs;
+	atomic_t ops;
+};
+
+struct io_wq_hash {
+	refcount_t refs;
+	unsigned long map;
+	struct wait_queue_head wait;
+};
+
+typedef void (*btf_trace_sched_kthread_stop)(void *, struct task_struct *);
+
+typedef void (*btf_trace_sched_kthread_stop_ret)(void *, int);
+
+typedef void (*btf_trace_sched_kthread_work_queue_work)(void *, struct kthread_worker *, struct kthread_work *);
+
+typedef void (*btf_trace_sched_kthread_work_execute_start)(void *, struct kthread_work *);
+
+typedef void (*btf_trace_sched_kthread_work_execute_end)(void *, struct kthread_work *, kthread_work_func_t);
+
+typedef void (*btf_trace_sched_waking)(void *, struct task_struct *);
+
+typedef void (*btf_trace_sched_wakeup)(void *, struct task_struct *);
+
+typedef void (*btf_trace_sched_wakeup_new)(void *, struct task_struct *);
+
+typedef void (*btf_trace_sched_switch)(void *, bool, struct task_struct *, struct task_struct *, unsigned int);
+
+typedef void (*btf_trace_sched_migrate_task)(void *, struct task_struct *, int);
+
+typedef void (*btf_trace_sched_process_free)(void *, struct task_struct *);
+
+typedef void (*btf_trace_sched_process_exit)(void *, struct task_struct *);
+
+typedef void (*btf_trace_sched_wait_task)(void *, struct task_struct *);
+
+typedef void (*btf_trace_sched_process_wait)(void *, struct pid *);
+
+typedef void (*btf_trace_sched_process_fork)(void *, struct task_struct *, struct task_struct *);
+
+typedef void (*btf_trace_sched_process_exec)(void *, struct task_struct *, pid_t, struct linux_binprm *);
+
+typedef void (*btf_trace_sched_stat_wait)(void *, struct task_struct *, u64);
+
+typedef void (*btf_trace_sched_stat_sleep)(void *, struct task_struct *, u64);
+
+typedef void (*btf_trace_sched_stat_iowait)(void *, struct task_struct *, u64);
+
+typedef void (*btf_trace_sched_stat_blocked)(void *, struct task_struct *, u64);
+
+typedef void (*btf_trace_sched_blocked_reason)(void *, struct task_struct *);
+
+typedef void (*btf_trace_sched_stat_runtime)(void *, struct task_struct *, u64, u64);
+
+typedef void (*btf_trace_sched_pi_setprio)(void *, struct task_struct *, struct task_struct *);
+
+typedef void (*btf_trace_sched_process_hang)(void *, struct task_struct *);
+
+typedef void (*btf_trace_sched_move_numa)(void *, struct task_struct *, int, int);
+
+typedef void (*btf_trace_sched_stick_numa)(void *, struct task_struct *, int, struct task_struct *, int);
+
+typedef void (*btf_trace_sched_swap_numa)(void *, struct task_struct *, int, struct task_struct *, int);
+
+typedef void (*btf_trace_sched_wake_idle_without_ipi)(void *, int);
+
+typedef void (*btf_trace_pelt_cfs_tp)(void *, struct cfs_rq *);
+
+typedef void (*btf_trace_pelt_rt_tp)(void *, struct rq *);
+
+typedef void (*btf_trace_pelt_dl_tp)(void *, struct rq *);
+
+typedef void (*btf_trace_pelt_thermal_tp)(void *, struct rq *);
+
+typedef void (*btf_trace_pelt_irq_tp)(void *, struct rq *);
+
+typedef void (*btf_trace_pelt_se_tp)(void *, struct sched_entity *);
+
+typedef void (*btf_trace_sched_cpu_capacity_tp)(void *, struct rq *);
+
+typedef void (*btf_trace_sched_overutilized_tp)(void *, struct root_domain *, bool);
+
+typedef void (*btf_trace_sched_util_est_cfs_tp)(void *, struct cfs_rq *);
+
+typedef void (*btf_trace_sched_util_est_se_tp)(void *, struct sched_entity *);
+
+typedef void (*btf_trace_sched_update_nr_running_tp)(void *, struct rq *, int);
+
+typedef void (*btf_trace_ipi_raise)(void *, const struct cpumask *, const char *);
+
+typedef void (*btf_trace_ipi_send_cpu)(void *, const unsigned int, unsigned long, void *);
+
+typedef void (*btf_trace_ipi_send_cpumask)(void *, const struct cpumask *, unsigned long, void *);
+
+typedef void (*btf_trace_ipi_entry)(void *, const char *);
+
+typedef void (*btf_trace_ipi_exit)(void *, const char *);
+
+struct kernel_stat {
+	unsigned long irqs_sum;
+	unsigned int softirqs[10];
+};
+
+struct kernel_cpustat {
+	u64 cpustat[10];
+};
+
+enum {
+	__SCHED_FEAT_PLACE_LAG = 0,
+	__SCHED_FEAT_PLACE_DEADLINE_INITIAL = 1,
+	__SCHED_FEAT_RUN_TO_PARITY = 2,
+	__SCHED_FEAT_NEXT_BUDDY = 3,
+	__SCHED_FEAT_CACHE_HOT_BUDDY = 4,
+	__SCHED_FEAT_WAKEUP_PREEMPTION = 5,
+	__SCHED_FEAT_HRTICK = 6,
+	__SCHED_FEAT_HRTICK_DL = 7,
+	__SCHED_FEAT_DOUBLE_TICK = 8,
+	__SCHED_FEAT_NONTASK_CAPACITY = 9,
+	__SCHED_FEAT_TTWU_QUEUE = 10,
+	__SCHED_FEAT_SIS_PROP = 11,
+	__SCHED_FEAT_SIS_UTIL = 12,
+	__SCHED_FEAT_WARN_DOUBLE_CLOCK = 13,
+	__SCHED_FEAT_RT_PUSH_IPI = 14,
+	__SCHED_FEAT_RT_RUNTIME_SHARE = 15,
+	__SCHED_FEAT_LB_MIN = 16,
+	__SCHED_FEAT_ATTACH_AGE_LOAD = 17,
+	__SCHED_FEAT_WA_IDLE = 18,
+	__SCHED_FEAT_WA_WEIGHT = 19,
+	__SCHED_FEAT_WA_BIAS = 20,
+	__SCHED_FEAT_UTIL_EST = 21,
+	__SCHED_FEAT_LATENCY_WARN = 22,
+	__SCHED_FEAT_HZ_BW = 23,
+	__SCHED_FEAT_NR = 24,
+};
+
+enum uclamp_id {
+	UCLAMP_MIN = 0,
+	UCLAMP_MAX = 1,
+	UCLAMP_CNT = 2,
+};
+
+enum {
+	cpuset = 0,
+	possible = 1,
+	fail = 2,
+};
+
+enum cgroup_subsys_id {
+	cpuset_cgrp_id = 0,
+	cpu_cgrp_id = 1,
+	cpuacct_cgrp_id = 2,
+	io_cgrp_id = 3,
+	memory_cgrp_id = 4,
+	freezer_cgrp_id = 5,
+	net_prio_cgrp_id = 6,
+	CGROUP_SUBSYS_COUNT = 7,
+};
+
+enum cpu_util_type {
+	FREQUENCY_UTIL = 0,
+	ENERGY_UTIL = 1,
+};
+
+enum psi_task_count {
+	NR_IOWAIT = 0,
+	NR_MEMSTALL = 1,
+	NR_RUNNING = 2,
+	NR_MEMSTALL_RUNNING = 3,
+	NR_PSI_TASK_COUNTS = 4,
+};
+
+enum {
+	CSD_FLAG_LOCK = 1,
+	IRQ_WORK_PENDING = 1,
+	IRQ_WORK_BUSY = 2,
+	IRQ_WORK_LAZY = 4,
+	IRQ_WORK_HARD_IRQ = 8,
+	IRQ_WORK_CLAIMED = 3,
+	CSD_TYPE_ASYNC = 0,
+	CSD_TYPE_SYNC = 16,
+	CSD_TYPE_IRQ_WORK = 32,
+	CSD_TYPE_TTWU = 48,
+	CSD_FLAG_TYPE_MASK = 240,
+};
+
+enum {
+	MEMBARRIER_STATE_PRIVATE_EXPEDITED_READY = 1,
+	MEMBARRIER_STATE_PRIVATE_EXPEDITED = 2,
+	MEMBARRIER_STATE_GLOBAL_EXPEDITED_READY = 4,
+	MEMBARRIER_STATE_GLOBAL_EXPEDITED = 8,
+	MEMBARRIER_STATE_PRIVATE_EXPEDITED_SYNC_CORE_READY = 16,
+	MEMBARRIER_STATE_PRIVATE_EXPEDITED_SYNC_CORE = 32,
+	MEMBARRIER_STATE_PRIVATE_EXPEDITED_RSEQ_READY = 64,
+	MEMBARRIER_STATE_PRIVATE_EXPEDITED_RSEQ = 128,
+};
+
+union cpumask_rcuhead {
+	cpumask_t cpumask;
+	struct callback_head rcu;
+};
+
+struct trace_event_raw_sched_kthread_stop {
+	struct trace_entry ent;
+	char comm[16];
+	pid_t pid;
+	char __data[0];
+};
+
+struct trace_event_raw_sched_kthread_stop_ret {
+	struct trace_entry ent;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_sched_kthread_work_queue_work {
+	struct trace_entry ent;
+	void *work;
+	void *function;
+	void *worker;
+	char __data[0];
+};
+
+struct trace_event_raw_sched_kthread_work_execute_start {
+	struct trace_entry ent;
+	void *work;
+	void *function;
+	char __data[0];
+};
+
+struct trace_event_raw_sched_kthread_work_execute_end {
+	struct trace_entry ent;
+	void *work;
+	void *function;
+	char __data[0];
+};
+
+struct trace_event_raw_sched_wakeup_template {
+	struct trace_entry ent;
+	char comm[16];
+	pid_t pid;
+	int prio;
+	int target_cpu;
+	char __data[0];
+};
+
+struct trace_event_raw_sched_switch {
+	struct trace_entry ent;
+	char prev_comm[16];
+	pid_t prev_pid;
+	int prev_prio;
+	long prev_state;
+	char next_comm[16];
+	pid_t next_pid;
+	int next_prio;
+	char __data[0];
+};
+
+struct trace_event_raw_sched_migrate_task {
+	struct trace_entry ent;
+	char comm[16];
+	pid_t pid;
+	int prio;
+	int orig_cpu;
+	int dest_cpu;
+	char __data[0];
+};
+
+struct trace_event_raw_sched_process_template {
+	struct trace_entry ent;
+	char comm[16];
+	pid_t pid;
+	int prio;
+	char __data[0];
+};
+
+struct trace_event_raw_sched_process_wait {
+	struct trace_entry ent;
+	char comm[16];
+	pid_t pid;
+	int prio;
+	char __data[0];
+};
+
+struct trace_event_raw_sched_process_fork {
+	struct trace_entry ent;
+	char parent_comm[16];
+	pid_t parent_pid;
+	char child_comm[16];
+	pid_t child_pid;
+	char __data[0];
+};
+
+struct trace_event_raw_sched_process_exec {
+	struct trace_entry ent;
+	u32 __data_loc_filename;
+	pid_t pid;
+	pid_t old_pid;
+	char __data[0];
+};
+
+struct trace_event_raw_sched_stat_template {
+	struct trace_entry ent;
+	char comm[16];
+	pid_t pid;
+	u64 delay;
+	char __data[0];
+};
+
+struct trace_event_raw_sched_blocked_reason {
+	struct trace_entry ent;
+	pid_t pid;
+	void *caller;
+	bool io_wait;
+	char __data[0];
+};
+
+struct trace_event_raw_sched_stat_runtime {
+	struct trace_entry ent;
+	char comm[16];
+	pid_t pid;
+	u64 runtime;
+	u64 vruntime;
+	char __data[0];
+};
+
+struct trace_event_raw_sched_pi_setprio {
+	struct trace_entry ent;
+	char comm[16];
+	pid_t pid;
+	int oldprio;
+	int newprio;
+	char __data[0];
+};
+
+struct trace_event_raw_sched_process_hang {
+	struct trace_entry ent;
+	char comm[16];
+	pid_t pid;
+	char __data[0];
+};
+
+struct trace_event_raw_sched_move_numa {
+	struct trace_entry ent;
+	pid_t pid;
+	pid_t tgid;
+	pid_t ngid;
+	int src_cpu;
+	int src_nid;
+	int dst_cpu;
+	int dst_nid;
+	char __data[0];
+};
+
+struct trace_event_raw_sched_numa_pair_template {
+	struct trace_entry ent;
+	pid_t src_pid;
+	pid_t src_tgid;
+	pid_t src_ngid;
+	int src_cpu;
+	int src_nid;
+	pid_t dst_pid;
+	pid_t dst_tgid;
+	pid_t dst_ngid;
+	int dst_cpu;
+	int dst_nid;
+	char __data[0];
+};
+
+struct trace_event_raw_sched_wake_idle_without_ipi {
+	struct trace_entry ent;
+	int cpu;
+	char __data[0];
+};
+
+struct trace_event_raw_ipi_raise {
+	struct trace_entry ent;
+	u32 __data_loc_target_cpus;
+	const char *reason;
+	char __data[0];
+};
+
+struct trace_event_raw_ipi_send_cpu {
+	struct trace_entry ent;
+	unsigned int cpu;
+	void *callsite;
+	void *callback;
+	char __data[0];
+};
+
+struct trace_event_raw_ipi_send_cpumask {
+	struct trace_entry ent;
+	u32 __data_loc_cpumask;
+	void *callsite;
+	void *callback;
+	char __data[0];
+};
+
+struct trace_event_raw_ipi_handler {
+	struct trace_entry ent;
+	const char *reason;
+	char __data[0];
+};
+
+struct irqtime {
+	u64 total;
+	u64 tick_delta;
+	u64 irq_start_time;
+	struct u64_stats_sync sync;
+};
+
+struct sched_attr {
+	__u32 size;
+	__u32 sched_policy;
+	__u64 sched_flags;
+	__s32 sched_nice;
+	__u32 sched_priority;
+	__u64 sched_runtime;
+	__u64 sched_deadline;
+	__u64 sched_period;
+	__u32 sched_util_min;
+	__u32 sched_util_max;
+};
+
+struct trace_event_data_offsets_sched_process_exec {
+	u32 filename;
+};
+
+struct trace_event_data_offsets_ipi_raise {
+	u32 target_cpus;
+};
+
+struct trace_event_data_offsets_ipi_send_cpumask {
+	u32 cpumask;
+};
+
+struct wake_q_head {
+	struct wake_q_node *first;
+	struct wake_q_node **lastp;
+	int count;
+};
+
+typedef struct {
+	void *lock;
+} class_rcu_t;
+
+typedef struct {
+	raw_spinlock_t *lock;
+	raw_spinlock_t *lock2;
+} class_double_raw_spinlock_t;
+
+typedef struct {
+	struct rq *lock;
+	struct rq *lock2;
+} class_double_rq_lock_t;
+
+typedef struct {
+	struct rq *lock;
+	struct rq_flags rf;
+} class_rq_lock_irqsave_t;
+
+typedef struct {
+	void *lock;
+} class_preempt_t;
+
+typedef struct {
+	raw_spinlock_t *lock;
+	unsigned long flags;
+} class_raw_spinlock_irqsave_t;
+
+struct sched_domain_attr {
+	int relax_domain_level;
+};
+
+struct rt_bandwidth {
+	raw_spinlock_t rt_runtime_lock;
+	ktime_t rt_period;
+	u64 rt_runtime;
+	struct hrtimer rt_period_timer;
+	unsigned int rt_period_active;
+};
+
+struct set_affinity_pending;
+
+struct migration_arg {
+	struct task_struct *task;
+	int dest_cpu;
+	struct set_affinity_pending *pending;
+};
+
+struct set_affinity_pending {
+	refcount_t refs;
+	unsigned int stop_pending;
+	struct completion done;
+	struct cpu_stop_work stop_work;
+	struct migration_arg arg;
+};
+
+struct css_task_iter {
+	struct cgroup_subsys *ss;
+	unsigned int flags;
+	struct list_head *cset_pos;
+	struct list_head *cset_head;
+	struct list_head *tcset_pos;
+	struct list_head *tcset_head;
+	struct list_head *task_pos;
+	struct list_head *cur_tasks_head;
+	struct css_set *cur_cset;
+	struct css_set *cur_dcset;
+	struct task_struct *cur_task;
+	struct list_head iters_node;
+	u64 android_kabi_reserved1;
+};
+
+struct uclamp_request {
+	s64 percent;
+	u64 util;
+	int ret;
+};
+
+struct trace_event_data_offsets_sched_kthread_stop {};
+
+struct trace_event_data_offsets_sched_kthread_stop_ret {};
+
+struct trace_event_data_offsets_sched_kthread_work_queue_work {};
+
+struct trace_event_data_offsets_sched_kthread_work_execute_start {};
+
+struct trace_event_data_offsets_sched_kthread_work_execute_end {};
+
+struct trace_event_data_offsets_sched_wakeup_template {};
+
+struct trace_event_data_offsets_sched_switch {};
+
+struct trace_event_data_offsets_sched_migrate_task {};
+
+struct trace_event_data_offsets_sched_process_template {};
+
+struct trace_event_data_offsets_sched_process_wait {};
+
+struct trace_event_data_offsets_sched_process_fork {};
+
+struct trace_event_data_offsets_sched_stat_template {};
+
+struct trace_event_data_offsets_sched_blocked_reason {};
+
+struct trace_event_data_offsets_sched_stat_runtime {};
+
+struct trace_event_data_offsets_sched_pi_setprio {};
+
+struct trace_event_data_offsets_sched_process_hang {};
+
+struct trace_event_data_offsets_sched_move_numa {};
+
+struct trace_event_data_offsets_sched_numa_pair_template {};
+
+struct trace_event_data_offsets_sched_wake_idle_without_ipi {};
+
+struct trace_event_data_offsets_ipi_send_cpu {};
+
+struct trace_event_data_offsets_ipi_handler {};
+
+typedef int (*tg_visitor)(struct task_group *, void *);
+
+struct migration_swap_arg {
+	struct task_struct *src_task;
+	struct task_struct *dst_task;
+	int src_cpu;
+	int dst_cpu;
+};
+
+typedef int (*task_call_f)(struct task_struct *, void *);
+
+typedef struct mutex *class_mutex_t;
+
+struct cpuidle_device;
+
+struct cpuidle_driver;
+
+struct cpuidle_state {
+	char name[16];
+	char desc[32];
+	s64 exit_latency_ns;
+	s64 target_residency_ns;
+	unsigned int flags;
+	unsigned int exit_latency;
+	int power_usage;
+	unsigned int target_residency;
+	int (*enter)(struct cpuidle_device *, struct cpuidle_driver *, int);
+	int (*enter_dead)(struct cpuidle_device *, int);
+	int (*enter_s2idle)(struct cpuidle_device *, struct cpuidle_driver *, int);
+};
+
+struct cpuidle_state_usage {
+	unsigned long long disable;
+	unsigned long long usage;
+	u64 time_ns;
+	unsigned long long above;
+	unsigned long long below;
+	unsigned long long rejected;
+	unsigned long long s2idle_usage;
+	unsigned long long s2idle_time;
+};
+
+struct cpuidle_state_kobj;
+
+struct cpuidle_driver_kobj;
+
+struct cpuidle_device_kobj;
+
+struct cpuidle_device {
+	unsigned int registered: 1;
+	unsigned int enabled: 1;
+	unsigned int poll_time_limit: 1;
+	unsigned int cpu;
+	ktime_t next_hrtimer;
+	int last_state_idx;
+	u64 last_residency_ns;
+	u64 poll_limit_ns;
+	u64 forced_idle_latency_limit_ns;
+	struct cpuidle_state_usage states_usage[10];
+	struct cpuidle_state_kobj *kobjs[10];
+	struct cpuidle_driver_kobj *kobj_driver;
+	struct cpuidle_device_kobj *kobj_dev;
+	struct list_head device_list;
+	u64 android_kabi_reserved1;
+};
+
+struct cpuidle_driver {
+	const char *name;
+	struct module *owner;
+	unsigned int bctimer: 1;
+	struct cpuidle_state states[10];
+	int state_count;
+	int safe_state_index;
+	struct cpumask *cpumask;
+	const char *governor;
+	u64 android_kabi_reserved1;
+};
+
+struct rb_augment_callbacks {
+	void (*propagate)(struct rb_node *, struct rb_node *);
+	void (*copy)(struct rb_node *, struct rb_node *);
+	void (*rotate)(struct rb_node *, struct rb_node *);
+};
+
+enum {
+	SD_BALANCE_NEWIDLE = 1,
+	SD_BALANCE_EXEC = 2,
+	SD_BALANCE_FORK = 4,
+	SD_BALANCE_WAKE = 8,
+	SD_WAKE_AFFINE = 16,
+	SD_ASYM_CPUCAPACITY = 32,
+	SD_ASYM_CPUCAPACITY_FULL = 64,
+	SD_SHARE_CPUCAPACITY = 128,
+	SD_SHARE_PKG_RESOURCES = 256,
+	SD_SERIALIZE = 512,
+	SD_ASYM_PACKING = 1024,
+	SD_PREFER_SIBLING = 2048,
+	SD_OVERLAP = 4096,
+	SD_NUMA = 8192,
+};
+
+enum sched_tunable_scaling {
+	SCHED_TUNABLESCALING_NONE = 0,
+	SCHED_TUNABLESCALING_LOG = 1,
+	SCHED_TUNABLESCALING_LINEAR = 2,
+	SCHED_TUNABLESCALING_END = 3,
+};
+
+enum cpu_idle_type {
+	CPU_IDLE = 0,
+	CPU_NOT_IDLE = 1,
+	CPU_NEWLY_IDLE = 2,
+	CPU_MAX_IDLE_TYPES = 3,
+};
+
+enum fbq_type {
+	regular = 0,
+	remote = 1,
+	all = 2,
+};
+
+enum migration_type {
+	migrate_load = 0,
+	migrate_util = 1,
+	migrate_task = 2,
+	migrate_misfit = 3,
+};
+
+enum group_type {
+	group_has_spare = 0,
+	group_fully_busy = 1,
+	group_misfit_task = 2,
+	group_smt_balance = 3,
+	group_asym_packing = 4,
+	group_imbalanced = 5,
+	group_overloaded = 6,
+};
+
+struct update_util_data {
+	void (*func)(struct update_util_data *, u64, unsigned int);
+};
+
+struct sched_entity_stats {
+	struct sched_entity se;
+	struct sched_statistics stats;
+};
+
+struct energy_env {
+	unsigned long task_busy_time;
+	unsigned long pd_busy_time;
+	unsigned long cpu_cap;
+	unsigned long pd_cap;
+};
+
+struct lb_env {
+	struct sched_domain *sd;
+	struct rq *src_rq;
+	int src_cpu;
+	int dst_cpu;
+	struct rq *dst_rq;
+	struct cpumask *dst_grpmask;
+	int new_dst_cpu;
+	enum cpu_idle_type idle;
+	long imbalance;
+	struct cpumask *cpus;
+	unsigned int flags;
+	unsigned int loop;
+	unsigned int loop_break;
+	unsigned int loop_max;
+	enum fbq_type fbq_type;
+	enum migration_type migration_type;
+	struct list_head tasks;
+	struct rq_flags *src_rq_rf;
+};
+
+struct sg_lb_stats {
+	unsigned long avg_load;
+	unsigned long group_load;
+	unsigned long group_capacity;
+	unsigned long group_util;
+	unsigned long group_runnable;
+	unsigned int sum_nr_running;
+	unsigned int sum_h_nr_running;
+	unsigned int idle_cpus;
+	unsigned int group_weight;
+	enum group_type group_type;
+	unsigned int group_asym_packing;
+	unsigned int group_smt_balance;
+	unsigned long group_misfit_task_load;
+	misfit_reason_t group_misfit_reason;
+};
+
+struct sd_lb_stats {
+	struct sched_group *busiest;
+	struct sched_group *local;
+	unsigned long total_load;
+	unsigned long total_capacity;
+	unsigned long avg_load;
+	unsigned int prefer_sibling;
+	struct sg_lb_stats busiest_stat;
+	struct sg_lb_stats local_stat;
+};
+
+enum cpu_usage_stat {
+	CPUTIME_USER = 0,
+	CPUTIME_NICE = 1,
+	CPUTIME_SYSTEM = 2,
+	CPUTIME_SOFTIRQ = 3,
+	CPUTIME_IRQ = 4,
+	CPUTIME_IDLE = 5,
+	CPUTIME_IOWAIT = 6,
+	CPUTIME_STEAL = 7,
+	CPUTIME_GUEST = 8,
+	CPUTIME_GUEST_NICE = 9,
+	NR_STATS = 10,
+};
+
+enum dl_bw_request {
+	dl_bw_req_check_overflow = 0,
+	dl_bw_req_alloc = 1,
+	dl_bw_req_free = 2,
+};
+
+enum s2idle_states {
+	S2IDLE_STATE_NONE = 0,
+	S2IDLE_STATE_ENTER = 1,
+	S2IDLE_STATE_WAKE = 2,
+};
+
+struct idle_timer {
+	struct hrtimer timer;
+	int done;
+};
+
+typedef struct rt_rq *rt_rq_iter_t;
+
+struct sd_flag_debug {
+	unsigned int meta_flags;
+	char *name;
+};
+
+typedef const struct cpumask * (*sched_domain_mask_f)(int);
+
+typedef int (*sched_domain_flags_f)();
+
+struct sd_data {
+	struct sched_domain * __attribute__((btf_type_tag("percpu"))) *sd;
+	struct sched_domain_shared * __attribute__((btf_type_tag("percpu"))) *sds;
+	struct sched_group * __attribute__((btf_type_tag("percpu"))) *sg;
+	struct sched_group_capacity * __attribute__((btf_type_tag("percpu"))) *sgc;
+};
+
+struct sched_domain_topology_level {
+	sched_domain_mask_f mask;
+	sched_domain_flags_f sd_flags;
+	int flags;
+	int numa_level;
+	struct sd_data data;
+	char *name;
+};
+
+struct housekeeping {
+	cpumask_var_t cpumasks[9];
+	unsigned long flags;
+};
+
+struct cpuacct {
+	struct cgroup_subsys_state css;
+	u64 __attribute__((btf_type_tag("percpu"))) *cpuusage;
+	struct kernel_cpustat __attribute__((btf_type_tag("percpu"))) *cpustat;
+};
+
+struct gov_attr_set {
+	struct kobject kobj;
+	struct list_head policy_list;
+	struct mutex update_lock;
+	int usage_count;
+};
+
+struct sugov_tunables {
+	struct gov_attr_set attr_set;
+	unsigned int rate_limit_us;
+};
+
+struct governor_attr {
+	struct attribute attr;
+	ssize_t (*show)(struct gov_attr_set *, char *);
+	ssize_t (*store)(struct gov_attr_set *, const char *, size_t);
+};
+
+struct sugov_policy;
+
+struct sugov_cpu {
+	struct update_util_data update_util;
+	struct sugov_policy *sg_policy;
+	unsigned int cpu;
+	bool iowait_boost_pending;
+	unsigned int iowait_boost;
+	u64 last_update;
+	unsigned long util;
+	unsigned long bw_dl;
+	unsigned long saved_idle_calls;
+};
+
+struct sugov_policy {
+	struct cpufreq_policy *policy;
+	struct sugov_tunables *tunables;
+	struct list_head tunables_hook;
+	raw_spinlock_t update_lock;
+	u64 last_freq_update_time;
+	s64 freq_update_delay_ns;
+	unsigned int next_freq;
+	unsigned int cached_raw_freq;
+	struct irq_work irq_work;
+	struct kthread_work work;
+	struct mutex work_lock;
+	struct kthread_worker worker;
+	struct task_struct *thread;
+	bool work_in_progress;
+	bool limits_changed;
+	bool need_freq_update;
+};
+
+struct proc_ops {
+	unsigned int proc_flags;
+	int (*proc_open)(struct inode *, struct file *);
+	ssize_t (*proc_read)(struct file *, char __attribute__((btf_type_tag("user"))) *, size_t, loff_t *);
+	ssize_t (*proc_read_iter)(struct kiocb *, struct iov_iter *);
+	ssize_t (*proc_write)(struct file *, const char __attribute__((btf_type_tag("user"))) *, size_t, loff_t *);
+	loff_t (*proc_lseek)(struct file *, loff_t, int);
+	int (*proc_release)(struct inode *, struct file *);
+	__poll_t (*proc_poll)(struct file *, struct poll_table_struct *);
+	long (*proc_ioctl)(struct file *, unsigned int, unsigned long);
+	long (*proc_compat_ioctl)(struct file *, unsigned int, unsigned long);
+	int (*proc_mmap)(struct file *, struct vm_area_struct *);
+	unsigned long (*proc_get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long);
+};
+
+enum psi_states {
+	PSI_IO_SOME = 0,
+	PSI_IO_FULL = 1,
+	PSI_MEM_SOME = 2,
+	PSI_MEM_FULL = 3,
+	PSI_CPU_SOME = 4,
+	PSI_CPU_FULL = 5,
+	PSI_IRQ_FULL = 6,
+	PSI_NONIDLE = 7,
+	NR_PSI_STATES = 8,
+};
+
+enum psi_res {
+	PSI_IO = 0,
+	PSI_MEM = 1,
+	PSI_CPU = 2,
+	PSI_IRQ = 3,
+	NR_PSI_RESOURCES = 4,
+};
+
+enum psi_aggregators {
+	PSI_AVGS = 0,
+	PSI_POLL = 1,
+	NR_PSI_AGGREGATORS = 2,
+};
+
+enum hk_flags {
+	HK_FLAG_TIMER = 1,
+	HK_FLAG_RCU = 2,
+	HK_FLAG_MISC = 4,
+	HK_FLAG_SCHED = 8,
+	HK_FLAG_TICK = 16,
+	HK_FLAG_DOMAIN = 32,
+	HK_FLAG_WQ = 64,
+	HK_FLAG_MANAGED_IRQ = 128,
+	HK_FLAG_KTHREAD = 256,
+};
+
+enum cpuacct_stat_index {
+	CPUACCT_STAT_USER = 0,
+	CPUACCT_STAT_SYSTEM = 1,
+	CPUACCT_STAT_NSTATS = 2,
+};
+
+enum {
+	__SD_BALANCE_NEWIDLE = 0,
+	__SD_BALANCE_EXEC = 1,
+	__SD_BALANCE_FORK = 2,
+	__SD_BALANCE_WAKE = 3,
+	__SD_WAKE_AFFINE = 4,
+	__SD_ASYM_CPUCAPACITY = 5,
+	__SD_ASYM_CPUCAPACITY_FULL = 6,
+	__SD_SHARE_CPUCAPACITY = 7,
+	__SD_SHARE_PKG_RESOURCES = 8,
+	__SD_SERIALIZE = 9,
+	__SD_ASYM_PACKING = 10,
+	__SD_PREFER_SIBLING = 11,
+	__SD_OVERLAP = 12,
+	__SD_NUMA = 13,
+	__SD_FLAG_CNT = 14,
+};
+
+enum s_alloc {
+	sa_rootdomain = 0,
+	sa_sd = 1,
+	sa_sd_storage = 2,
+	sa_none = 3,
+};
+
+enum membarrier_cmd {
+	MEMBARRIER_CMD_QUERY = 0,
+	MEMBARRIER_CMD_GLOBAL = 1,
+	MEMBARRIER_CMD_GLOBAL_EXPEDITED = 2,
+	MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED = 4,
+	MEMBARRIER_CMD_PRIVATE_EXPEDITED = 8,
+	MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED = 16,
+	MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE = 32,
+	MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE = 64,
+	MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ = 128,
+	MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_RSEQ = 256,
+	MEMBARRIER_CMD_GET_REGISTRATIONS = 512,
+	MEMBARRIER_CMD_SHARED = 1,
+};
+
+enum membarrier_cmd_flag {
+	MEMBARRIER_CMD_FLAG_CPU = 1,
+};
+
+enum {
+	MEMBARRIER_FLAG_SYNC_CORE = 1,
+	MEMBARRIER_FLAG_RSEQ = 2,
+};
+
+struct swait_queue {
+	struct task_struct *task;
+	struct list_head task_list;
+};
+
+struct psi_window {
+	u64 size;
+	u64 start_time;
+	u64 start_value;
+	u64 prev_growth;
+};
+
+struct psi_trigger {
+	enum psi_states state;
+	u64 threshold;
+	struct list_head node;
+	struct psi_group *group;
+	wait_queue_head_t event_wait;
+	struct kernfs_open_file *of;
+	int event;
+	struct psi_window win;
+	u64 last_event_time;
+	bool pending_event;
+	enum psi_aggregators aggregator;
+};
+
+struct asym_cap_data {
+	struct list_head link;
+	unsigned long capacity;
+	unsigned long cpus[0];
+};
+
+struct s_data {
+	struct sched_domain * __attribute__((btf_type_tag("percpu"))) *sd;
+	struct root_domain *rd;
+};
+
+typedef __kernel_ulong_t ino_t;
+
+typedef void (*btf_trace_contention_begin)(void *, void *, unsigned int);
+
+typedef void (*btf_trace_contention_end)(void *, void *, int);
+
+struct trace_event_raw_contention_begin {
+	struct trace_entry ent;
+	void *lock_addr;
+	unsigned int flags;
+	char __data[0];
+};
+
+struct trace_event_raw_contention_end {
+	struct trace_entry ent;
+	void *lock_addr;
+	int ret;
+	char __data[0];
+};
+
+struct ww_acquire_ctx;
+
+struct mutex_waiter {
+	struct list_head list;
+	struct task_struct *task;
+	struct ww_acquire_ctx *ww_ctx;
+};
+
+struct ww_acquire_ctx {
+	struct task_struct *task;
+	unsigned long stamp;
+	unsigned int acquired;
+	unsigned short wounded;
+	unsigned short is_wait_die;
+};
+
+struct ww_mutex {
+	struct mutex base;
+	struct ww_acquire_ctx *ctx;
+};
+
+struct trace_event_data_offsets_contention_begin {};
+
+struct trace_event_data_offsets_contention_end {};
+
+struct semaphore_waiter {
+	struct list_head list;
+	struct task_struct *task;
+	bool up;
+};
+
+struct semaphore {
+	raw_spinlock_t lock;
+	unsigned int count;
+	struct list_head wait_list;
+};
+
+enum rwsem_waiter_type {
+	RWSEM_WAITING_FOR_WRITE = 0,
+	RWSEM_WAITING_FOR_READ = 1,
+};
+
+enum rwsem_wake_type {
+	RWSEM_WAKE_ANY = 0,
+	RWSEM_WAKE_READERS = 1,
+	RWSEM_WAKE_READ_OWNED = 2,
+};
+
+enum owner_state {
+	OWNER_NULL = 1,
+	OWNER_WRITER = 2,
+	OWNER_READER = 4,
+	OWNER_NONSPINNABLE = 8,
+};
+
+struct rwsem_waiter {
+	struct list_head list;
+	struct task_struct *task;
+	enum rwsem_waiter_type type;
+	unsigned long timeout;
+	bool handoff_set;
+};
+
+struct optimistic_spin_node {
+	struct optimistic_spin_node *next;
+	struct optimistic_spin_node *prev;
+	int locked;
+	int cpu;
+};
+
+struct mcs_spinlock {
+	struct mcs_spinlock *next;
+	int locked;
+	int count;
+};
+
+struct qnode {
+	struct mcs_spinlock mcs;
+};
+
+enum rtmutex_chainwalk {
+	RT_MUTEX_MIN_CHAINWALK = 0,
+	RT_MUTEX_FULL_CHAINWALK = 1,
+};
+
+struct rt_waiter_node {
+	struct rb_node entry;
+	int prio;
+	u64 deadline;
+};
+
+struct rt_mutex_base;
+
+struct rt_mutex_waiter {
+	struct rt_waiter_node tree;
+	struct rt_waiter_node pi_tree;
+	struct task_struct *task;
+	struct rt_mutex_base *lock;
+	unsigned int wake_state;
+	struct ww_acquire_ctx *ww_ctx;
+};
+
+struct rt_mutex_base {
+	raw_spinlock_t wait_lock;
+	struct rb_root_cached waiters;
+	struct task_struct *owner;
+};
+
+struct rt_mutex {
+	struct rt_mutex_base rtmutex;
+};
+
+struct rt_wake_q_head {
+	struct wake_q_head head;
+	struct task_struct *rtlock_task;
+};
+
+struct hrtimer_sleeper {
+	struct hrtimer timer;
+	struct task_struct *task;
+};
+
+enum pm_qos_req_action {
+	PM_QOS_ADD_REQ = 0,
+	PM_QOS_UPDATE_REQ = 1,
+	PM_QOS_REMOVE_REQ = 2,
+};
+
+struct pm_qos_request {
+	struct plist_node node;
+	struct pm_qos_constraints *qos;
+};
+
+enum suspend_stat_step {
+	SUSPEND_FREEZE = 1,
+	SUSPEND_PREPARE = 2,
+	SUSPEND_SUSPEND = 3,
+	SUSPEND_SUSPEND_LATE = 4,
+	SUSPEND_SUSPEND_NOIRQ = 5,
+	SUSPEND_RESUME_NOIRQ = 6,
+	SUSPEND_RESUME_EARLY = 7,
+	SUSPEND_RESUME = 8,
+};
+
+enum {
+	TEST_NONE = 0,
+	TEST_CORE = 1,
+	TEST_CPUS = 2,
+	TEST_PLATFORM = 3,
+	TEST_DEVICES = 4,
+	TEST_FREEZER = 5,
+	__TEST_AFTER_LAST = 6,
+};
+
+typedef int suspend_state_t;
+
+struct platform_suspend_ops {
+	int (*valid)(suspend_state_t);
+	int (*begin)(suspend_state_t);
+	int (*prepare)();
+	int (*prepare_late)();
+	int (*enter)(suspend_state_t);
+	void (*wake)();
+	void (*finish)();
+	bool (*suspend_again)();
+	void (*end)();
+	void (*recover)();
+	u64 android_kabi_reserved1;
+};
+
+struct platform_s2idle_ops {
+	int (*begin)();
+	int (*prepare)();
+	int (*prepare_late)();
+	void (*check)();
+	bool (*wake)();
+	void (*restore_early)();
+	void (*restore)();
+	void (*end)();
+	u64 android_kabi_reserved1;
+};
+
+struct wakelock {
+	char *name;
+	struct rb_node node;
+	struct wakeup_source *ws;
+};
+
+struct sysrq_key_op {
+	void (* const handler)(u8);
+	const char * const help_msg;
+	const char * const action_msg;
+	const int enable_mask;
+};
+
+enum wakeup_reason_flag {
+	RESUME_NONE = 0,
+	RESUME_IRQ = 1,
+	RESUME_ABORT = 2,
+	RESUME_ABNORMAL = 3,
+};
+
+struct wakeup_irq_node {
+	struct list_head siblings;
+	int irq;
+	const char *irq_name;
+};
+
+struct em_data_callback {
+	int (*active_power)(struct device *, unsigned long *, unsigned long *);
+	int (*get_cost)(struct device *, unsigned long, unsigned long *);
+};
+
+struct em_dbg_info {
+	struct em_perf_domain *pd;
+	int ps_id;
+};
+
+typedef void (*btf_trace_console)(void *, const char *, size_t);
+
+struct prb_desc;
+
+struct printk_info;
+
+struct prb_desc_ring {
+	unsigned int count_bits;
+	struct prb_desc *descs;
+	struct printk_info *infos;
+	atomic_long_t head_id;
+	atomic_long_t tail_id;
+	atomic_long_t last_finalized_id;
+};
+
+struct prb_data_ring {
+	unsigned int size_bits;
+	char *data;
+	atomic_long_t head_lpos;
+	atomic_long_t tail_lpos;
+};
+
+struct printk_ringbuffer {
+	struct prb_desc_ring desc_ring;
+	struct prb_data_ring text_data_ring;
+	atomic_long_t fail;
+};
+
+struct prb_data_blk_lpos {
+	unsigned long begin;
+	unsigned long next;
+};
+
+struct prb_desc {
+	atomic_long_t state_var;
+	struct prb_data_blk_lpos text_blk_lpos;
+};
+
+struct dev_printk_info {
+	char subsystem[16];
+	char device[48];
+};
+
+struct printk_info {
+	u64 seq;
+	u64 ts_nsec;
+	u16 text_len;
+	u8 facility;
+	u8 flags: 5;
+	u8 level: 3;
+	u32 caller_id;
+	struct dev_printk_info dev_info;
+};
+
+struct console_cmdline {
+	char name[16];
+	int index;
+	bool user_specified;
+	char *options;
+};
+
+struct printk_buffers {
+	char outbuf[2048];
+	char scratchbuf[1024];
+};
+
+typedef struct {
+	seqcount_t seqcount;
+} seqcount_latch_t;
+
+struct latched_seq {
+	seqcount_latch_t latch;
+	u64 val[2];
+};
+
+enum devkmsg_log_masks {
+	DEVKMSG_LOG_MASK_ON = 1,
+	DEVKMSG_LOG_MASK_OFF = 2,
+	DEVKMSG_LOG_MASK_LOCK = 4,
+};
+
+enum printk_info_flags {
+	LOG_NEWLINE = 2,
+	LOG_CONT = 8,
+};
+
+enum cons_flags {
+	CON_PRINTBUFFER = 1,
+	CON_CONSDEV = 2,
+	CON_ENABLED = 4,
+	CON_BOOT = 8,
+	CON_ANYTIME = 16,
+	CON_BRL = 32,
+	CON_EXTENDED = 64,
+	CON_SUSPENDED = 128,
+};
+
+enum con_msg_format_flags {
+	MSG_FORMAT_DEFAULT = 0,
+	MSG_FORMAT_SYSLOG = 1,
+};
+
+typedef unsigned int uint;
+
+struct console {
+	char name[16];
+	void (*write)(struct console *, const char *, unsigned int);
+	int (*read)(struct console *, char *, unsigned int);
+	struct tty_driver * (*device)(struct console *, int *);
+	void (*unblank)();
+	int (*setup)(struct console *, char *);
+	int (*exit)(struct console *);
+	int (*match)(struct console *, char *, int, char *);
+	short flags;
+	short index;
+	int cflag;
+	uint ispeed;
+	uint ospeed;
+	u64 seq;
+	unsigned long dropped;
+	void *data;
+	struct hlist_node node;
+};
+
+struct kmsg_dumper {
+	struct list_head list;
+	void (*dump)(struct kmsg_dumper *, enum kmsg_dump_reason);
+	enum kmsg_dump_reason max_reason;
+	bool registered;
+};
+
+struct trace_event_raw_console {
+	struct trace_entry ent;
+	u32 __data_loc_msg;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_console {
+	u32 msg;
+};
+
+struct printk_record {
+	struct printk_info *info;
+	char *text_buf;
+	unsigned int text_buf_size;
+};
+
+struct prb_reserved_entry {
+	struct printk_ringbuffer *rb;
+	unsigned long irqflags;
+	unsigned long id;
+	unsigned int text_space;
+};
+
+struct printk_message {
+	struct printk_buffers *pbufs;
+	unsigned int outbuf_len;
+	u64 seq;
+	unsigned long dropped;
+};
+
+struct devkmsg_user {
+	atomic64_t seq;
+	struct ratelimit_state rs;
+	struct mutex lock;
+	struct printk_buffers pbufs;
+};
+
+struct kmsg_dump_iter {
+	u64 cur_seq;
+	u64 next_seq;
+};
+
+enum desc_state {
+	desc_miss = -1,
+	desc_reserved = 0,
+	desc_committed = 1,
+	desc_finalized = 2,
+	desc_reusable = 3,
+};
+
+struct prb_data_block {
+	unsigned long id;
+	char data[0];
+};
+
+enum {
+	IRQS_AUTODETECT = 1,
+	IRQS_SPURIOUS_DISABLED = 2,
+	IRQS_POLL_INPROGRESS = 8,
+	IRQS_ONESHOT = 32,
+	IRQS_REPLAY = 64,
+	IRQS_WAITING = 128,
+	IRQS_PENDING = 512,
+	IRQS_SUSPENDED = 2048,
+	IRQS_TIMINGS = 4096,
+	IRQS_NMI = 8192,
+	IRQS_SYSFS = 16384,
+};
+
+enum {
+	_IRQ_DEFAULT_INIT_FLAGS = 0,
+	_IRQ_PER_CPU = 512,
+	_IRQ_LEVEL = 256,
+	_IRQ_NOPROBE = 1024,
+	_IRQ_NOREQUEST = 2048,
+	_IRQ_NOTHREAD = 65536,
+	_IRQ_NOAUTOEN = 4096,
+	_IRQ_MOVE_PCNTXT = 16384,
+	_IRQ_NO_BALANCING = 8192,
+	_IRQ_NESTED_THREAD = 32768,
+	_IRQ_PER_CPU_DEVID = 131072,
+	_IRQ_IS_POLLED = 262144,
+	_IRQ_DISABLE_UNLAZY = 524288,
+	_IRQ_HIDDEN = 1048576,
+	_IRQ_NO_DEBUG = 2097152,
+	_IRQF_MODIFY_MASK = 2096911,
+};
+
+enum {
+	IRQTF_RUNTHREAD = 0,
+	IRQTF_WARNED = 1,
+	IRQTF_AFFINITY = 2,
+	IRQTF_FORCED_THREAD = 3,
+	IRQTF_READY = 4,
+};
+
+enum {
+	IRQ_SET_MASK_OK = 0,
+	IRQ_SET_MASK_OK_NOCOPY = 1,
+	IRQ_SET_MASK_OK_DONE = 2,
+};
+
+enum {
+	IRQCHIP_SET_TYPE_MASKED = 1,
+	IRQCHIP_EOI_IF_HANDLED = 2,
+	IRQCHIP_MASK_ON_SUSPEND = 4,
+	IRQCHIP_ONOFFLINE_ENABLED = 8,
+	IRQCHIP_SKIP_SET_WAKE = 16,
+	IRQCHIP_ONESHOT_SAFE = 32,
+	IRQCHIP_EOI_THREADED = 64,
+	IRQCHIP_SUPPORTS_LEVEL_MSI = 128,
+	IRQCHIP_SUPPORTS_NMI = 256,
+	IRQCHIP_ENABLE_WAKEUP_ON_SUSPEND = 512,
+	IRQCHIP_AFFINITY_PRE_STARTUP = 1024,
+	IRQCHIP_IMMUTABLE = 2048,
+};
+
+enum {
+	IRQC_IS_HARDIRQ = 0,
+	IRQC_IS_NESTED = 1,
+};
+
+enum {
+	IRQ_STARTUP_NORMAL = 0,
+	IRQ_STARTUP_MANAGED = 1,
+	IRQ_STARTUP_ABORT = 2,
+};
+
+struct irq_devres {
+	unsigned int irq;
+	void *dev_id;
+};
+
+struct irq_desc_devres {
+	unsigned int from;
+	unsigned int cnt;
+};
+
+struct irq_generic_chip_devres {
+	struct irq_chip_generic *gc;
+	u32 msk;
+	unsigned int clr;
+	unsigned int set;
+};
+
+enum {
+	IRQ_DOMAIN_FLAG_HIERARCHY = 1,
+	IRQ_DOMAIN_NAME_ALLOCATED = 2,
+	IRQ_DOMAIN_FLAG_IPI_PER_CPU = 4,
+	IRQ_DOMAIN_FLAG_IPI_SINGLE = 8,
+	IRQ_DOMAIN_FLAG_MSI = 16,
+	IRQ_DOMAIN_FLAG_ISOLATED_MSI = 32,
+	IRQ_DOMAIN_FLAG_NO_MAP = 64,
+	IRQ_DOMAIN_FLAG_MSI_PARENT = 256,
+	IRQ_DOMAIN_FLAG_MSI_DEVICE = 512,
+	IRQ_DOMAIN_FLAG_NONCORE = 65536,
+};
+
+struct irqchip_fwid {
+	struct fwnode_handle fwnode;
+	unsigned int type;
+	char *name;
+	phys_addr_t *pa;
+};
+
+enum {
+	AFFINITY = 0,
+	AFFINITY_LIST = 1,
+	EFFECTIVE = 2,
+	EFFECTIVE_LIST = 3,
+};
+
+enum msi_domain_ids {
+	MSI_DEFAULT_DOMAIN = 0,
+	MSI_SECONDARY_DOMAIN = 1,
+	MSI_MAX_DEVICE_IRQDOMAINS = 2,
+};
+
+enum msi_desc_filter {
+	MSI_DESC_ALL = 0,
+	MSI_DESC_NOTASSOCIATED = 1,
+	MSI_DESC_ASSOCIATED = 2,
+};
+
+enum {
+	MSI_FLAG_USE_DEF_DOM_OPS = 1,
+	MSI_FLAG_USE_DEF_CHIP_OPS = 2,
+	MSI_FLAG_ACTIVATE_EARLY = 4,
+	MSI_FLAG_MUST_REACTIVATE = 8,
+	MSI_FLAG_DEV_SYSFS = 16,
+	MSI_FLAG_ALLOC_SIMPLE_MSI_DESCS = 32,
+	MSI_FLAG_FREE_MSI_DESCS = 64,
+	MSI_GENERIC_FLAGS_MASK = 65535,
+	MSI_DOMAIN_FLAGS_MASK = 4294901760,
+	MSI_FLAG_MULTI_PCI_MSI = 65536,
+	MSI_FLAG_PCI_MSIX = 131072,
+	MSI_FLAG_LEVEL_CAPABLE = 262144,
+	MSI_FLAG_MSIX_CONTIGUOUS = 524288,
+	MSI_FLAG_PCI_MSIX_ALLOC_DYN = 1048576,
+	MSI_FLAG_PCI_IMS = 2097152,
+};
+
+struct msi_domain_template {
+	char name[48];
+	struct irq_chip chip;
+	struct msi_domain_ops ops;
+	struct msi_domain_info info;
+};
+
+struct xa_limit {
+	u32 max;
+	u32 min;
+};
+
+struct msi_ctrl {
+	unsigned int domid;
+	unsigned int first;
+	unsigned int last;
+	unsigned int nirqs;
+};
+
+struct msi_map {
+	int index;
+	int virq;
+};
+
+struct irq_affinity {
+	unsigned int pre_vectors;
+	unsigned int post_vectors;
+	unsigned int nr_sets;
+	unsigned int set_size[4];
+	void (*calc_sets)(struct irq_affinity *, unsigned int);
+	void *priv;
+};
+
+typedef void (*btf_trace_rcu_utilization)(void *, const char *);
+
+typedef void (*btf_trace_rcu_grace_period)(void *, const char *, unsigned long, const char *);
+
+typedef void (*btf_trace_rcu_future_grace_period)(void *, const char *, unsigned long, unsigned long, u8, int, int, const char *);
+
+typedef void (*btf_trace_rcu_grace_period_init)(void *, const char *, unsigned long, u8, int, int, unsigned long);
+
+typedef void (*btf_trace_rcu_exp_grace_period)(void *, const char *, unsigned long, const char *);
+
+typedef void (*btf_trace_rcu_exp_funnel_lock)(void *, const char *, u8, int, int, const char *);
+
+typedef void (*btf_trace_rcu_nocb_wake)(void *, const char *, int, const char *);
+
+typedef void (*btf_trace_rcu_preempt_task)(void *, const char *, int, unsigned long);
+
+typedef void (*btf_trace_rcu_unlock_preempted_task)(void *, const char *, unsigned long, int);
+
+typedef void (*btf_trace_rcu_quiescent_state_report)(void *, const char *, unsigned long, unsigned long, unsigned long, u8, int, int, int);
+
+typedef void (*btf_trace_rcu_fqs)(void *, const char *, unsigned long, int, const char *);
+
+typedef void (*btf_trace_rcu_stall_warning)(void *, const char *, const char *);
+
+typedef void (*btf_trace_rcu_dyntick)(void *, const char *, long, long, int);
+
+typedef void (*btf_trace_rcu_callback)(void *, const char *, struct callback_head *, long);
+
+typedef void (*btf_trace_rcu_segcb_stats)(void *, struct rcu_segcblist *, const char *);
+
+typedef void (*btf_trace_rcu_kvfree_callback)(void *, const char *, struct callback_head *, unsigned long, long);
+
+typedef void (*btf_trace_rcu_batch_start)(void *, const char *, long, long);
+
+typedef void (*btf_trace_rcu_invoke_callback)(void *, const char *, struct callback_head *);
+
+typedef void (*btf_trace_rcu_invoke_kvfree_callback)(void *, const char *, struct callback_head *, unsigned long);
+
+typedef void (*btf_trace_rcu_invoke_kfree_bulk_callback)(void *, const char *, unsigned long, void **);
+
+typedef void (*btf_trace_rcu_batch_end)(void *, const char *, int, char, char, char, char);
+
+typedef void (*btf_trace_rcu_torture_read)(void *, const char *, struct callback_head *, unsigned long, unsigned long, unsigned long);
+
+typedef void (*btf_trace_rcu_barrier)(void *, const char *, const char *, int, int, unsigned long);
+
+struct rcu_tasks;
+
+typedef void (*rcu_tasks_gp_func_t)(struct rcu_tasks *);
+
+typedef void (*pregp_func_t)(struct list_head *);
+
+typedef void (*pertask_func_t)(struct task_struct *, struct list_head *);
+
+typedef void (*postscan_func_t)(struct list_head *);
+
+typedef void (*holdouts_func_t)(struct list_head *, bool, bool *);
+
+typedef void (*postgp_func_t)(struct rcu_tasks *);
+
+typedef void (*call_rcu_func_t)(struct callback_head *, rcu_callback_t);
+
+struct rcu_tasks_percpu;
+
+struct rcu_tasks {
+	struct rcuwait cbs_wait;
+	raw_spinlock_t cbs_gbl_lock;
+	struct mutex tasks_gp_mutex;
+	int gp_state;
+	int gp_sleep;
+	int init_fract;
+	unsigned long gp_jiffies;
+	unsigned long gp_start;
+	unsigned long tasks_gp_seq;
+	unsigned long n_ipis;
+	unsigned long n_ipis_fails;
+	struct task_struct *kthread_ptr;
+	unsigned long lazy_jiffies;
+	rcu_tasks_gp_func_t gp_func;
+	pregp_func_t pregp_func;
+	pertask_func_t pertask_func;
+	postscan_func_t postscan_func;
+	holdouts_func_t holdouts_func;
+	postgp_func_t postgp_func;
+	call_rcu_func_t call_func;
+	struct rcu_tasks_percpu __attribute__((btf_type_tag("percpu"))) *rtpcpu;
+	int percpu_enqueue_shift;
+	int percpu_enqueue_lim;
+	int percpu_dequeue_lim;
+	unsigned long percpu_dequeue_gpseq;
+	struct mutex barrier_q_mutex;
+	atomic_t barrier_q_count;
+	struct completion barrier_q_completion;
+	unsigned long barrier_q_seq;
+	char *name;
+	char *kname;
+};
+
+struct rcu_tasks_percpu {
+	struct rcu_segcblist cblist;
+	raw_spinlock_t lock;
+	unsigned long rtp_jiffies;
+	unsigned long rtp_n_lock_retries;
+	struct timer_list lazy_timer;
+	unsigned int urgent_gp;
+	struct work_struct rtp_work;
+	struct irq_work rtp_irq_work;
+	struct callback_head barrier_q_head;
+	struct list_head rtp_blkd_tasks;
+	int cpu;
+	struct rcu_tasks *rtpp;
+};
+
+struct rcu_synchronize {
+	struct callback_head head;
+	struct completion completion;
+};
+
+struct trace_event_raw_rcu_utilization {
+	struct trace_entry ent;
+	const char *s;
+	char __data[0];
+};
+
+struct trace_event_raw_rcu_grace_period {
+	struct trace_entry ent;
+	const char *rcuname;
+	long gp_seq;
+	const char *gpevent;
+	char __data[0];
+};
+
+struct trace_event_raw_rcu_future_grace_period {
+	struct trace_entry ent;
+	const char *rcuname;
+	long gp_seq;
+	long gp_seq_req;
+	u8 level;
+	int grplo;
+	int grphi;
+	const char *gpevent;
+	char __data[0];
+};
+
+struct trace_event_raw_rcu_grace_period_init {
+	struct trace_entry ent;
+	const char *rcuname;
+	long gp_seq;
+	u8 level;
+	int grplo;
+	int grphi;
+	unsigned long qsmask;
+	char __data[0];
+};
+
+struct trace_event_raw_rcu_exp_grace_period {
+	struct trace_entry ent;
+	const char *rcuname;
+	long gpseq;
+	const char *gpevent;
+	char __data[0];
+};
+
+struct trace_event_raw_rcu_exp_funnel_lock {
+	struct trace_entry ent;
+	const char *rcuname;
+	u8 level;
+	int grplo;
+	int grphi;
+	const char *gpevent;
+	char __data[0];
+};
+
+struct trace_event_raw_rcu_nocb_wake {
+	struct trace_entry ent;
+	const char *rcuname;
+	int cpu;
+	const char *reason;
+	char __data[0];
+};
+
+struct trace_event_raw_rcu_preempt_task {
+	struct trace_entry ent;
+	const char *rcuname;
+	long gp_seq;
+	int pid;
+	char __data[0];
+};
+
+struct trace_event_raw_rcu_unlock_preempted_task {
+	struct trace_entry ent;
+	const char *rcuname;
+	long gp_seq;
+	int pid;
+	char __data[0];
+};
+
+struct trace_event_raw_rcu_quiescent_state_report {
+	struct trace_entry ent;
+	const char *rcuname;
+	long gp_seq;
+	unsigned long mask;
+	unsigned long qsmask;
+	u8 level;
+	int grplo;
+	int grphi;
+	u8 gp_tasks;
+	char __data[0];
+};
+
+struct trace_event_raw_rcu_fqs {
+	struct trace_entry ent;
+	const char *rcuname;
+	long gp_seq;
+	int cpu;
+	const char *qsevent;
+	char __data[0];
+};
+
+struct trace_event_raw_rcu_stall_warning {
+	struct trace_entry ent;
+	const char *rcuname;
+	const char *msg;
+	char __data[0];
+};
+
+struct trace_event_raw_rcu_dyntick {
+	struct trace_entry ent;
+	const char *polarity;
+	long oldnesting;
+	long newnesting;
+	int dynticks;
+	char __data[0];
+};
+
+struct trace_event_raw_rcu_callback {
+	struct trace_entry ent;
+	const char *rcuname;
+	void *rhp;
+	void *func;
+	long qlen;
+	char __data[0];
+};
+
+struct trace_event_raw_rcu_segcb_stats {
+	struct trace_entry ent;
+	const char *ctx;
+	unsigned long gp_seq[4];
+	long seglen[4];
+	char __data[0];
+};
+
+struct trace_event_raw_rcu_kvfree_callback {
+	struct trace_entry ent;
+	const char *rcuname;
+	void *rhp;
+	unsigned long offset;
+	long qlen;
+	char __data[0];
+};
+
+struct trace_event_raw_rcu_batch_start {
+	struct trace_entry ent;
+	const char *rcuname;
+	long qlen;
+	long blimit;
+	char __data[0];
+};
+
+struct trace_event_raw_rcu_invoke_callback {
+	struct trace_entry ent;
+	const char *rcuname;
+	void *rhp;
+	void *func;
+	char __data[0];
+};
+
+struct trace_event_raw_rcu_invoke_kvfree_callback {
+	struct trace_entry ent;
+	const char *rcuname;
+	void *rhp;
+	unsigned long offset;
+	char __data[0];
+};
+
+struct trace_event_raw_rcu_invoke_kfree_bulk_callback {
+	struct trace_entry ent;
+	const char *rcuname;
+	unsigned long nr_records;
+	void **p;
+	char __data[0];
+};
+
+struct trace_event_raw_rcu_batch_end {
+	struct trace_entry ent;
+	const char *rcuname;
+	int callbacks_invoked;
+	char cb;
+	char nr;
+	char iit;
+	char risk;
+	char __data[0];
+};
+
+struct trace_event_raw_rcu_torture_read {
+	struct trace_entry ent;
+	char rcutorturename[8];
+	struct callback_head *rhp;
+	unsigned long secs;
+	unsigned long c_old;
+	unsigned long c;
+	char __data[0];
+};
+
+struct trace_event_raw_rcu_barrier {
+	struct trace_entry ent;
+	const char *rcuname;
+	const char *s;
+	int cpu;
+	int cnt;
+	unsigned long done;
+	char __data[0];
+};
+
+struct rcu_cblist {
+	struct callback_head *head;
+	struct callback_head **tail;
+	long len;
+};
+
+struct trc_stall_chk_rdr {
+	int nesting;
+	int ipi_to_cpu;
+	u8 needqs;
+};
+
+struct trace_event_data_offsets_rcu_utilization {};
+
+struct trace_event_data_offsets_rcu_grace_period {};
+
+struct trace_event_data_offsets_rcu_future_grace_period {};
+
+struct trace_event_data_offsets_rcu_grace_period_init {};
+
+struct trace_event_data_offsets_rcu_exp_grace_period {};
+
+struct trace_event_data_offsets_rcu_exp_funnel_lock {};
+
+struct trace_event_data_offsets_rcu_nocb_wake {};
+
+struct trace_event_data_offsets_rcu_preempt_task {};
+
+struct trace_event_data_offsets_rcu_unlock_preempted_task {};
+
+struct trace_event_data_offsets_rcu_quiescent_state_report {};
+
+struct trace_event_data_offsets_rcu_fqs {};
+
+struct trace_event_data_offsets_rcu_stall_warning {};
+
+struct trace_event_data_offsets_rcu_dyntick {};
+
+struct trace_event_data_offsets_rcu_callback {};
+
+struct trace_event_data_offsets_rcu_segcb_stats {};
+
+struct trace_event_data_offsets_rcu_kvfree_callback {};
+
+struct trace_event_data_offsets_rcu_batch_start {};
+
+struct trace_event_data_offsets_rcu_invoke_callback {};
+
+struct trace_event_data_offsets_rcu_invoke_kvfree_callback {};
+
+struct trace_event_data_offsets_rcu_invoke_kfree_bulk_callback {};
+
+struct trace_event_data_offsets_rcu_batch_end {};
+
+struct trace_event_data_offsets_rcu_torture_read {};
+
+struct trace_event_data_offsets_rcu_barrier {};
+
+enum {
+	GP_IDLE = 0,
+	GP_ENTER = 1,
+	GP_PASSED = 2,
+	GP_EXIT = 3,
+	GP_REPLAY = 4,
+};
+
+typedef unsigned long ulong;
+
+enum rcutorture_type {
+	RCU_FLAVOR = 0,
+	RCU_TASKS_FLAVOR = 1,
+	RCU_TASKS_RUDE_FLAVOR = 2,
+	RCU_TASKS_TRACING_FLAVOR = 3,
+	RCU_TRIVIAL_FLAVOR = 4,
+	SRCU_FLAVOR = 5,
+	INVALID_RCU_FLAVOR = 6,
+};
+
+struct rcu_exp_work {
+	unsigned long rew_s;
+	struct kthread_work rew_work;
+};
+
+struct rcu_node {
+	raw_spinlock_t lock;
+	unsigned long gp_seq;
+	unsigned long gp_seq_needed;
+	unsigned long completedqs;
+	unsigned long qsmask;
+	unsigned long rcu_gp_init_mask;
+	unsigned long qsmaskinit;
+	unsigned long qsmaskinitnext;
+	unsigned long expmask;
+	unsigned long expmaskinit;
+	unsigned long expmaskinitnext;
+	unsigned long cbovldmask;
+	unsigned long ffmask;
+	unsigned long grpmask;
+	int grplo;
+	int grphi;
+	u8 grpnum;
+	u8 level;
+	bool wait_blkd_tasks;
+	struct rcu_node *parent;
+	struct list_head blkd_tasks;
+	struct list_head *gp_tasks;
+	struct list_head *exp_tasks;
+	struct list_head *boost_tasks;
+	struct rt_mutex boost_mtx;
+	unsigned long boost_time;
+	struct mutex boost_kthread_mutex;
+	struct task_struct *boost_kthread_task;
+	unsigned int boost_kthread_status;
+	unsigned long n_boosts;
+	struct swait_queue_head nocb_gp_wq[2];
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	raw_spinlock_t fqslock;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	spinlock_t exp_lock;
+	unsigned long exp_seq_rq;
+	wait_queue_head_t exp_wq[4];
+	struct rcu_exp_work rew;
+	bool exp_need_flush;
+	raw_spinlock_t exp_poll_lock;
+	unsigned long exp_seq_poll_rq;
+	struct work_struct exp_poll_wq;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+union rcu_noqs {
+	struct {
+		u8 norm;
+		u8 exp;
+	} b;
+	u16 s;
+};
+
+struct rcu_snap_record {
+	unsigned long gp_seq;
+	u64 cputime_irq;
+	u64 cputime_softirq;
+	u64 cputime_system;
+	unsigned long nr_hardirqs;
+	unsigned int nr_softirqs;
+	unsigned long long nr_csw;
+	unsigned long jiffies;
+};
+
+struct rcu_data {
+	unsigned long gp_seq;
+	unsigned long gp_seq_needed;
+	union rcu_noqs cpu_no_qs;
+	bool core_needs_qs;
+	bool beenonline;
+	bool gpwrap;
+	bool cpu_started;
+	struct rcu_node *mynode;
+	unsigned long grpmask;
+	unsigned long ticks_this_gp;
+	struct irq_work defer_qs_iw;
+	bool defer_qs_iw_pending;
+	struct work_struct strict_work;
+	struct rcu_segcblist cblist;
+	long qlen_last_fqs_check;
+	unsigned long n_cbs_invoked;
+	unsigned long n_force_qs_snap;
+	long blimit;
+	int dynticks_snap;
+	bool rcu_need_heavy_qs;
+	bool rcu_urgent_qs;
+	bool rcu_forced_tick;
+	bool rcu_forced_tick_exp;
+	unsigned long barrier_seq_snap;
+	struct callback_head barrier_head;
+	int exp_dynticks_snap;
+	struct swait_queue_head nocb_cb_wq;
+	struct swait_queue_head nocb_state_wq;
+	struct task_struct *nocb_gp_kthread;
+	raw_spinlock_t nocb_lock;
+	atomic_t nocb_lock_contended;
+	int nocb_defer_wakeup;
+	struct timer_list nocb_timer;
+	unsigned long nocb_gp_adv_time;
+	struct mutex nocb_gp_kthread_mutex;
+	raw_spinlock_t nocb_bypass_lock;
+	struct rcu_cblist nocb_bypass;
+	unsigned long nocb_bypass_first;
+	unsigned long nocb_nobypass_last;
+	int nocb_nobypass_count;
+	long: 64;
+	raw_spinlock_t nocb_gp_lock;
+	u8 nocb_gp_sleep;
+	u8 nocb_gp_bypass;
+	u8 nocb_gp_gp;
+	unsigned long nocb_gp_seq;
+	unsigned long nocb_gp_loops;
+	struct swait_queue_head nocb_gp_wq;
+	bool nocb_cb_sleep;
+	struct task_struct *nocb_cb_kthread;
+	struct list_head nocb_head_rdp;
+	struct list_head nocb_entry_rdp;
+	struct rcu_data *nocb_toggling_rdp;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct rcu_data *nocb_gp_rdp;
+	struct task_struct *rcu_cpu_kthread_task;
+	unsigned int rcu_cpu_kthread_status;
+	char rcu_cpu_has_work;
+	unsigned long rcuc_activity;
+	unsigned int softirq_snap;
+	struct irq_work rcu_iw;
+	bool rcu_iw_pending;
+	unsigned long rcu_iw_gp_seq;
+	unsigned long rcu_ofl_gp_seq;
+	short rcu_ofl_gp_flags;
+	unsigned long rcu_onl_gp_seq;
+	short rcu_onl_gp_flags;
+	unsigned long last_fqs_resched;
+	unsigned long last_sched_clock;
+	struct rcu_snap_record snap_record;
+	long lazy_len;
+	int cpu;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct rcu_state {
+	struct rcu_node node[3];
+	struct rcu_node *level[3];
+	int ncpus;
+	int n_online_cpus;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	unsigned long gp_seq;
+	unsigned long gp_max;
+	struct task_struct *gp_kthread;
+	struct swait_queue_head gp_wq;
+	short gp_flags;
+	short gp_state;
+	unsigned long gp_wake_time;
+	unsigned long gp_wake_seq;
+	unsigned long gp_seq_polled;
+	unsigned long gp_seq_polled_snap;
+	unsigned long gp_seq_polled_exp_snap;
+	struct mutex barrier_mutex;
+	atomic_t barrier_cpu_count;
+	struct completion barrier_completion;
+	unsigned long barrier_sequence;
+	raw_spinlock_t barrier_lock;
+	struct mutex exp_mutex;
+	struct mutex exp_wake_mutex;
+	unsigned long expedited_sequence;
+	atomic_t expedited_need_qs;
+	struct swait_queue_head expedited_wq;
+	int ncpus_snap;
+	u8 cbovld;
+	u8 cbovldnext;
+	unsigned long jiffies_force_qs;
+	unsigned long jiffies_kick_kthreads;
+	unsigned long n_force_qs;
+	unsigned long gp_start;
+	unsigned long gp_end;
+	unsigned long gp_activity;
+	unsigned long gp_req_activity;
+	unsigned long jiffies_stall;
+	int nr_fqs_jiffies_stall;
+	unsigned long jiffies_resched;
+	unsigned long n_force_qs_gpstart;
+	const char *name;
+	char abbr;
+	long: 0;
+	arch_spinlock_t ofl_lock;
+	int nocb_is_setup;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct rcu_gp_oldstate {
+	unsigned long rgos_norm;
+	unsigned long rgos_exp;
+};
+
+struct kfree_rcu_cpu;
+
+struct kfree_rcu_cpu_work {
+	struct rcu_work rcu_work;
+	struct callback_head *head_free;
+	struct rcu_gp_oldstate head_free_gp_snap;
+	struct list_head bulk_head_free[2];
+	struct kfree_rcu_cpu *krcp;
+};
+
+struct kfree_rcu_cpu {
+	struct callback_head *head;
+	unsigned long head_gp_snap;
+	atomic_t head_count;
+	struct list_head bulk_head[2];
+	atomic_t bulk_count[2];
+	struct kfree_rcu_cpu_work krw_arr[2];
+	raw_spinlock_t lock;
+	struct delayed_work monitor_work;
+	bool initialized;
+	struct delayed_work page_cache_work;
+	atomic_t backoff_page_cache_fill;
+	atomic_t work_in_progress;
+	struct hrtimer hrtimer;
+	struct llist_head bkvcache;
+	int nr_bkv_objs;
+};
+
+enum tick_dep_bits {
+	TICK_DEP_BIT_POSIX_TIMER = 0,
+	TICK_DEP_BIT_PERF_EVENTS = 1,
+	TICK_DEP_BIT_SCHED = 2,
+	TICK_DEP_BIT_CLOCK_UNSTABLE = 3,
+	TICK_DEP_BIT_RCU = 4,
+	TICK_DEP_BIT_RCU_EXP = 5,
+};
+
+struct context_tracking {
+	atomic_t state;
+	long dynticks_nesting;
+	long dynticks_nmi_nesting;
+};
+
+struct kvfree_rcu_bulk_data {
+	struct list_head list;
+	struct rcu_gp_oldstate gp_snap;
+	unsigned long nr_records;
+	void *records[0];
+};
+
+struct rcu_stall_chk_rdr {
+	int nesting;
+	union rcu_special rs;
+	bool on_blkd_list;
+};
+
+struct dma_sgt_handle {
+	struct sg_table sgt;
+	struct page **pages;
+};
+
+struct dma_devres {
+	size_t size;
+	void *vaddr;
+	dma_addr_t dma_handle;
+	unsigned long attrs;
+};
+
+enum pci_p2pdma_map_type {
+	PCI_P2PDMA_MAP_UNKNOWN = 0,
+	PCI_P2PDMA_MAP_NOT_SUPPORTED = 1,
+	PCI_P2PDMA_MAP_BUS_ADDR = 2,
+	PCI_P2PDMA_MAP_THRU_HOST_BRIDGE = 3,
+};
+
+typedef struct pglist_data pg_data_t;
+
+struct pci_p2pdma_map_state {
+	struct dev_pagemap *pgmap;
+	int map;
+	u64 bus_off;
+};
+
+struct debugfs_u32_array {
+	u32 *array;
+	u32 n_elements;
+};
+
+struct cma {
+	unsigned long base_pfn;
+	unsigned long count;
+	unsigned long *bitmap;
+	unsigned int order_per_bit;
+	spinlock_t lock;
+	struct hlist_head mem_head;
+	spinlock_t mem_head_lock;
+	struct debugfs_u32_array dfs_bitmap;
+	char name[64];
+	bool reserve_pages_on_error;
+};
+
+struct dma_coherent_mem {
+	void *virt_base;
+	dma_addr_t device_base;
+	unsigned long pfn_base;
+	int size;
+	unsigned long *bitmap;
+	spinlock_t spinlock;
+	bool use_dev_dma_pfn_offset;
+};
+
+struct io_tlb_area {
+	unsigned long used;
+	unsigned int index;
+	spinlock_t lock;
+};
+
+struct io_tlb_slot {
+	phys_addr_t orig_addr;
+	size_t alloc_size;
+	unsigned int list;
+};
+
+typedef void (*btf_trace_swiotlb_bounced)(void *, struct device *, dma_addr_t, size_t);
+
+struct trace_event_raw_swiotlb_bounced {
+	struct trace_entry ent;
+	u32 __data_loc_dev_name;
+	u64 dma_mask;
+	dma_addr_t dev_addr;
+	size_t size;
+	bool force;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_swiotlb_bounced {
+	u32 dev_name;
+};
+
+struct gen_pool;
+
+typedef unsigned long (*genpool_algo_t)(unsigned long *, unsigned long, unsigned long, unsigned int, void *, struct gen_pool *, unsigned long);
+
+struct gen_pool {
+	spinlock_t lock;
+	struct list_head chunks;
+	int min_alloc_order;
+	genpool_algo_t algo;
+	void *data;
+	const char *name;
+};
+
+typedef void (*btf_trace_module_load)(void *, struct module *);
+
+typedef void (*btf_trace_module_free)(void *, struct module *);
+
+typedef void (*btf_trace_module_get)(void *, struct module *, unsigned long);
+
+typedef void (*btf_trace_module_put)(void *, struct module *, unsigned long);
+
+typedef void (*btf_trace_module_request)(void *, char *, bool, unsigned long);
+
+struct latch_tree_root {
+	seqcount_latch_t seq;
+	struct rb_root tree[2];
+};
+
+struct mod_tree_root {
+	struct latch_tree_root root;
+	unsigned long addr_min;
+	unsigned long addr_max;
+};
+
+enum mod_license {
+	NOT_GPL_ONLY = 0,
+	GPL_ONLY = 1,
+};
+
+struct symsearch {
+	const struct kernel_symbol *start;
+	const struct kernel_symbol *stop;
+	const s32 *crcs;
+	enum mod_license license;
+};
+
+enum kernel_load_data_id {
+	LOADING_UNKNOWN = 0,
+	LOADING_FIRMWARE = 1,
+	LOADING_MODULE = 2,
+	LOADING_KEXEC_IMAGE = 3,
+	LOADING_KEXEC_INITRAMFS = 4,
+	LOADING_POLICY = 5,
+	LOADING_X509_CERTIFICATE = 6,
+	LOADING_MAX_ID = 7,
+};
+
+enum fail_dup_mod_reason {
+	FAIL_DUP_MOD_BECOMING = 0,
+	FAIL_DUP_MOD_LOAD = 1,
+};
+
+enum kernel_read_file_id {
+	READING_UNKNOWN = 0,
+	READING_FIRMWARE = 1,
+	READING_MODULE = 2,
+	READING_KEXEC_IMAGE = 3,
+	READING_KEXEC_INITRAMFS = 4,
+	READING_POLICY = 5,
+	READING_X509_CERTIFICATE = 6,
+	READING_MAX_ID = 7,
+};
+
+struct trace_event_raw_module_load {
+	struct trace_entry ent;
+	unsigned int taints;
+	u32 __data_loc_name;
+	char __data[0];
+};
+
+struct trace_event_raw_module_free {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	char __data[0];
+};
+
+struct trace_event_raw_module_refcnt {
+	struct trace_entry ent;
+	unsigned long ip;
+	int refcnt;
+	u32 __data_loc_name;
+	char __data[0];
+};
+
+struct trace_event_raw_module_request {
+	struct trace_entry ent;
+	unsigned long ip;
+	bool wait;
+	u32 __data_loc_name;
+	char __data[0];
+};
+
+struct module_use {
+	struct list_head source_list;
+	struct list_head target_list;
+	struct module *source;
+	struct module *target;
+};
+
+struct mod_initfree {
+	struct llist_node node;
+	void *init_text;
+	void *init_data;
+	void *init_rodata;
+};
+
+struct idempotent {
+	const void *cookie;
+	struct hlist_node entry;
+	struct completion complete;
+	int ret;
+};
+
+struct trace_event_data_offsets_module_load {
+	u32 name;
+};
+
+struct trace_event_data_offsets_module_free {
+	u32 name;
+};
+
+struct trace_event_data_offsets_module_refcnt {
+	u32 name;
+};
+
+struct trace_event_data_offsets_module_request {
+	u32 name;
+};
+
+struct find_symbol_arg {
+	const char *name;
+	bool gplok;
+	bool warn;
+	struct module *owner;
+	const s32 *crc;
+	const struct kernel_symbol *sym;
+	enum mod_license license;
+};
+
+struct load_info {
+	const char *name;
+	struct module *mod;
+	Elf64_Ehdr *hdr;
+	unsigned long len;
+	Elf64_Shdr *sechdrs;
+	char *secstrings;
+	char *strtab;
+	unsigned long symoffs;
+	unsigned long stroffs;
+	unsigned long init_typeoffs;
+	unsigned long core_typeoffs;
+	bool sig_ok;
+	unsigned long mod_kallsyms_init_off;
+	struct {
+		unsigned int sym;
+		unsigned int str;
+		unsigned int mod;
+		unsigned int vers;
+		unsigned int info;
+		unsigned int pcpu;
+	} index;
+};
+
+enum key_being_used_for {
+	VERIFYING_MODULE_SIGNATURE = 0,
+	VERIFYING_FIRMWARE_SIGNATURE = 1,
+	VERIFYING_KEXEC_PE_SIGNATURE = 2,
+	VERIFYING_KEY_SIGNATURE = 3,
+	VERIFYING_KEY_SELF_SIGNATURE = 4,
+	VERIFYING_UNSPECIFIED_SIGNATURE = 5,
+	NR__KEY_BEING_USED_FOR = 6,
+};
+
+struct module_signature {
+	u8 algo;
+	u8 hash;
+	u8 id_type;
+	u8 signer_len;
+	u8 key_id_len;
+	u8 __pad[3];
+	__be32 sig_len;
+};
+
+struct latch_tree_ops {
+	bool (*less)(struct latch_tree_node *, struct latch_tree_node *);
+	int (*comp)(void *, struct latch_tree_node *);
+};
+
+struct module_sect_attr {
+	struct bin_attribute battr;
+	unsigned long address;
+};
+
+struct module_sect_attrs {
+	struct attribute_group grp;
+	unsigned int nsections;
+	struct module_sect_attr attrs[0];
+};
+
+struct module_notes_attrs {
+	struct kobject *dir;
+	unsigned int notes;
+	struct bin_attribute attrs[0];
+};
+
+struct modversion_info {
+	unsigned long crc;
+	char name[56];
+};
+
+enum kcmp_type {
+	KCMP_FILE = 0,
+	KCMP_VM = 1,
+	KCMP_FILES = 2,
+	KCMP_FS = 3,
+	KCMP_SIGHAND = 4,
+	KCMP_IO = 5,
+	KCMP_SYSVSEM = 6,
+	KCMP_EPOLL_TFD = 7,
+	KCMP_TYPES = 8,
+};
+
+struct kcmp_epoll_slot {
+	__u32 efd;
+	__u32 tfd;
+	__u32 toff;
+};
+
+struct profile_hit {
+	u32 pc;
+	u32 hits;
+};
+
+enum profile_type {
+	PROFILE_TASK_EXIT = 0,
+	PROFILE_MUNMAP = 1,
+};
+
+struct stacktrace_cookie {
+	unsigned long *store;
+	unsigned int size;
+	unsigned int skip;
+	unsigned int len;
+};
+
+struct timezone {
+	int tz_minuteswest;
+	int tz_dsttime;
+};
+
+typedef __kernel_long_t __kernel_suseconds_t;
+
+typedef __kernel_suseconds_t suseconds_t;
+
+typedef __u64 timeu64_t;
+
+struct __kernel_timex_timeval {
+	__kernel_time64_t tv_sec;
+	long long tv_usec;
+};
+
+struct __kernel_timex {
+	unsigned int modes;
+	long long offset;
+	long long freq;
+	long long maxerror;
+	long long esterror;
+	int status;
+	long long constant;
+	long long precision;
+	long long tolerance;
+	struct __kernel_timex_timeval time;
+	long long tick;
+	long long ppsfreq;
+	long long jitter;
+	int shift;
+	long long stabil;
+	long long jitcnt;
+	long long calcnt;
+	long long errcnt;
+	long long stbcnt;
+	int tai;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct old_timex32 {
+	u32 modes;
+	s32 offset;
+	s32 freq;
+	s32 maxerror;
+	s32 esterror;
+	s32 status;
+	s32 constant;
+	s32 precision;
+	s32 tolerance;
+	struct old_timeval32 time;
+	s32 tick;
+	s32 ppsfreq;
+	s32 jitter;
+	s32 shift;
+	s32 stabil;
+	s32 jitcnt;
+	s32 calcnt;
+	s32 errcnt;
+	s32 stbcnt;
+	s32 tai;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct itimerspec64 {
+	struct timespec64 it_interval;
+	struct timespec64 it_value;
+};
+
+struct __kernel_itimerspec {
+	struct __kernel_timespec it_interval;
+	struct __kernel_timespec it_value;
+};
+
+struct old_itimerspec32 {
+	struct old_timespec32 it_interval;
+	struct old_timespec32 it_value;
+};
+
+typedef void (*btf_trace_timer_init)(void *, struct timer_list *);
+
+typedef void (*btf_trace_timer_start)(void *, struct timer_list *, unsigned long, unsigned int);
+
+typedef void (*btf_trace_timer_expire_entry)(void *, struct timer_list *, unsigned long);
+
+typedef void (*btf_trace_timer_expire_exit)(void *, struct timer_list *);
+
+typedef void (*btf_trace_timer_cancel)(void *, struct timer_list *);
+
+typedef void (*btf_trace_hrtimer_init)(void *, struct hrtimer *, clockid_t, enum hrtimer_mode);
+
+typedef void (*btf_trace_hrtimer_start)(void *, struct hrtimer *, enum hrtimer_mode);
+
+typedef void (*btf_trace_hrtimer_expire_entry)(void *, struct hrtimer *, ktime_t *);
+
+typedef void (*btf_trace_hrtimer_expire_exit)(void *, struct hrtimer *);
+
+typedef void (*btf_trace_hrtimer_cancel)(void *, struct hrtimer *);
+
+typedef void (*btf_trace_itimer_state)(void *, int, const struct itimerspec64 * const, unsigned long long);
+
+typedef void (*btf_trace_itimer_expire)(void *, int, struct pid *, unsigned long long);
+
+typedef void (*btf_trace_tick_stop)(void *, int, int);
+
+struct timer_base {
+	raw_spinlock_t lock;
+	struct timer_list *running_timer;
+	unsigned long clk;
+	unsigned long next_expiry;
+	unsigned int cpu;
+	bool next_expiry_recalc;
+	bool is_idle;
+	bool timers_pending;
+	unsigned long pending_map[9];
+	struct hlist_head vectors[576];
+	long: 64;
+	long: 64;
+};
+
+struct trace_event_raw_timer_class {
+	struct trace_entry ent;
+	void *timer;
+	char __data[0];
+};
+
+struct trace_event_raw_timer_start {
+	struct trace_entry ent;
+	void *timer;
+	void *function;
+	unsigned long expires;
+	unsigned long now;
+	unsigned int flags;
+	char __data[0];
+};
+
+struct trace_event_raw_timer_expire_entry {
+	struct trace_entry ent;
+	void *timer;
+	unsigned long now;
+	void *function;
+	unsigned long baseclk;
+	char __data[0];
+};
+
+struct trace_event_raw_hrtimer_init {
+	struct trace_entry ent;
+	void *hrtimer;
+	clockid_t clockid;
+	enum hrtimer_mode mode;
+	char __data[0];
+};
+
+struct trace_event_raw_hrtimer_start {
+	struct trace_entry ent;
+	void *hrtimer;
+	void *function;
+	s64 expires;
+	s64 softexpires;
+	enum hrtimer_mode mode;
+	char __data[0];
+};
+
+struct trace_event_raw_hrtimer_expire_entry {
+	struct trace_entry ent;
+	void *hrtimer;
+	s64 now;
+	void *function;
+	char __data[0];
+};
+
+struct trace_event_raw_hrtimer_class {
+	struct trace_entry ent;
+	void *hrtimer;
+	char __data[0];
+};
+
+struct trace_event_raw_itimer_state {
+	struct trace_entry ent;
+	int which;
+	unsigned long long expires;
+	long value_sec;
+	long value_nsec;
+	long interval_sec;
+	long interval_nsec;
+	char __data[0];
+};
+
+struct trace_event_raw_itimer_expire {
+	struct trace_entry ent;
+	int which;
+	pid_t pid;
+	unsigned long long now;
+	char __data[0];
+};
+
+struct trace_event_raw_tick_stop {
+	struct trace_entry ent;
+	int success;
+	int dependency;
+	char __data[0];
+};
+
+struct process_timer {
+	struct timer_list timer;
+	struct task_struct *task;
+};
+
+struct trace_event_data_offsets_timer_class {};
+
+struct trace_event_data_offsets_timer_start {};
+
+struct trace_event_data_offsets_timer_expire_entry {};
+
+struct trace_event_data_offsets_hrtimer_init {};
+
+struct trace_event_data_offsets_hrtimer_start {};
+
+struct trace_event_data_offsets_hrtimer_expire_entry {};
+
+struct trace_event_data_offsets_hrtimer_class {};
+
+struct trace_event_data_offsets_itimer_state {};
+
+struct trace_event_data_offsets_itimer_expire {};
+
+struct trace_event_data_offsets_tick_stop {};
+
+enum hrtimer_base_type {
+	HRTIMER_BASE_MONOTONIC = 0,
+	HRTIMER_BASE_REALTIME = 1,
+	HRTIMER_BASE_BOOTTIME = 2,
+	HRTIMER_BASE_TAI = 3,
+	HRTIMER_BASE_MONOTONIC_SOFT = 4,
+	HRTIMER_BASE_REALTIME_SOFT = 5,
+	HRTIMER_BASE_BOOTTIME_SOFT = 6,
+	HRTIMER_BASE_TAI_SOFT = 7,
+	HRTIMER_MAX_CLOCK_BASES = 8,
+};
+
+enum clock_event_state {
+	CLOCK_EVT_STATE_DETACHED = 0,
+	CLOCK_EVT_STATE_SHUTDOWN = 1,
+	CLOCK_EVT_STATE_PERIODIC = 2,
+	CLOCK_EVT_STATE_ONESHOT = 3,
+	CLOCK_EVT_STATE_ONESHOT_STOPPED = 4,
+};
+
+struct clock_event_device {
+	void (*event_handler)(struct clock_event_device *);
+	int (*set_next_event)(unsigned long, struct clock_event_device *);
+	int (*set_next_ktime)(ktime_t, struct clock_event_device *);
+	ktime_t next_event;
+	u64 max_delta_ns;
+	u64 min_delta_ns;
+	u32 mult;
+	u32 shift;
+	enum clock_event_state state_use_accessors;
+	unsigned int features;
+	unsigned long retries;
+	int (*set_state_periodic)(struct clock_event_device *);
+	int (*set_state_oneshot)(struct clock_event_device *);
+	int (*set_state_oneshot_stopped)(struct clock_event_device *);
+	int (*set_state_shutdown)(struct clock_event_device *);
+	int (*tick_resume)(struct clock_event_device *);
+	void (*broadcast)(const struct cpumask *);
+	void (*suspend)(struct clock_event_device *);
+	void (*resume)(struct clock_event_device *);
+	unsigned long min_delta_ticks;
+	unsigned long max_delta_ticks;
+	const char *name;
+	int rating;
+	int irq;
+	int bound_on;
+	const struct cpumask *cpumask;
+	struct list_head list;
+	struct module *owner;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct clocksource;
+
+struct tk_read_base {
+	struct clocksource *clock;
+	u64 mask;
+	u64 cycle_last;
+	u32 mult;
+	u32 shift;
+	u64 xtime_nsec;
+	ktime_t base;
+	u64 base_real;
+};
+
+struct tk_fast {
+	seqcount_latch_t seq;
+	struct tk_read_base base[2];
+};
+
+enum vdso_clock_mode {
+	VDSO_CLOCKMODE_NONE = 0,
+	VDSO_CLOCKMODE_ARCHTIMER = 1,
+	VDSO_CLOCKMODE_ARCHTIMER_NOCOMPAT = 2,
+	VDSO_CLOCKMODE_MAX = 3,
+	VDSO_CLOCKMODE_TIMENS = 2147483647,
+};
+
+struct clocksource {
+	u64 (*read)(struct clocksource *);
+	u64 mask;
+	u32 mult;
+	u32 shift;
+	u64 max_idle_ns;
+	u32 maxadj;
+	u32 uncertainty_margin;
+	u64 max_cycles;
+	const char *name;
+	struct list_head list;
+	int rating;
+	enum clocksource_ids id;
+	enum vdso_clock_mode vdso_clock_mode;
+	unsigned long flags;
+	int (*enable)(struct clocksource *);
+	void (*disable)(struct clocksource *);
+	void (*suspend)(struct clocksource *);
+	void (*resume)(struct clocksource *);
+	void (*mark_unstable)(struct clocksource *);
+	void (*tick_stable)(struct clocksource *);
+	struct module *owner;
+};
+
+struct timekeeper {
+	struct tk_read_base tkr_mono;
+	struct tk_read_base tkr_raw;
+	u64 xtime_sec;
+	unsigned long ktime_sec;
+	struct timespec64 wall_to_monotonic;
+	ktime_t offs_real;
+	ktime_t offs_boot;
+	ktime_t offs_tai;
+	s32 tai_offset;
+	unsigned int clock_was_set_seq;
+	u8 cs_was_changed_seq;
+	ktime_t next_leap_ktime;
+	u64 raw_sec;
+	struct timespec64 monotonic_to_boot;
+	u64 cycle_interval;
+	u64 xtime_interval;
+	s64 xtime_remainder;
+	u64 raw_interval;
+	u64 ntp_tick;
+	s64 ntp_error;
+	u32 ntp_error_shift;
+	u32 ntp_err_mult;
+	u32 skip_second_overflow;
+};
+
+enum timekeeping_adv_mode {
+	TK_ADV_TICK = 0,
+	TK_ADV_FREQ = 1,
+};
+
+struct system_device_crosststamp {
+	ktime_t device;
+	ktime_t sys_realtime;
+	ktime_t sys_monoraw;
+};
+
+struct audit_ntp_val {
+	long long oldval;
+	long long newval;
+};
+
+struct audit_ntp_data {
+	struct audit_ntp_val vals[6];
+};
+
+struct ktime_timestamps {
+	u64 mono;
+	u64 boot;
+	u64 real;
+};
+
+struct system_counterval_t {
+	u64 cycles;
+	struct clocksource *cs;
+};
+
+enum audit_ntp_type {
+	AUDIT_NTP_OFFSET = 0,
+	AUDIT_NTP_FREQ = 1,
+	AUDIT_NTP_STATUS = 2,
+	AUDIT_NTP_TAI = 3,
+	AUDIT_NTP_TICK = 4,
+	AUDIT_NTP_ADJUST = 5,
+	AUDIT_NTP_NVALS = 6,
+};
+
+struct rtc_device;
+
+struct rtc_timer {
+	struct timerqueue_node node;
+	ktime_t period;
+	void (*func)(struct rtc_device *);
+	struct rtc_device *rtc;
+	int enabled;
+};
+
+struct rtc_class_ops;
+
+struct rtc_device {
+	struct device dev;
+	struct module *owner;
+	int id;
+	const struct rtc_class_ops *ops;
+	struct mutex ops_lock;
+	struct cdev char_dev;
+	unsigned long flags;
+	unsigned long irq_data;
+	spinlock_t irq_lock;
+	wait_queue_head_t irq_queue;
+	struct fasync_struct *async_queue;
+	int irq_freq;
+	int max_user_freq;
+	struct timerqueue_head timerqueue;
+	struct rtc_timer aie_timer;
+	struct rtc_timer uie_rtctimer;
+	struct hrtimer pie_timer;
+	int pie_enabled;
+	struct work_struct irqwork;
+	unsigned long set_offset_nsec;
+	unsigned long features[1];
+	time64_t range_min;
+	timeu64_t range_max;
+	timeu64_t alarm_offset_max;
+	time64_t start_secs;
+	time64_t offset_secs;
+	bool set_start_time;
+	u64 android_kabi_reserved1;
+};
+
+struct rtc_time;
+
+struct rtc_wkalrm;
+
+struct rtc_param;
+
+struct rtc_class_ops {
+	int (*ioctl)(struct device *, unsigned int, unsigned long);
+	int (*read_time)(struct device *, struct rtc_time *);
+	int (*set_time)(struct device *, struct rtc_time *);
+	int (*read_alarm)(struct device *, struct rtc_wkalrm *);
+	int (*set_alarm)(struct device *, struct rtc_wkalrm *);
+	int (*proc)(struct device *, struct seq_file *);
+	int (*alarm_irq_enable)(struct device *, unsigned int);
+	int (*read_offset)(struct device *, long *);
+	int (*set_offset)(struct device *, long);
+	int (*param_get)(struct device *, struct rtc_param *);
+	int (*param_set)(struct device *, struct rtc_param *);
+	u64 android_kabi_reserved1;
+};
+
+struct rtc_time {
+	int tm_sec;
+	int tm_min;
+	int tm_hour;
+	int tm_mday;
+	int tm_mon;
+	int tm_year;
+	int tm_wday;
+	int tm_yday;
+	int tm_isdst;
+};
+
+struct rtc_wkalrm {
+	unsigned char enabled;
+	unsigned char pending;
+	struct rtc_time time;
+};
+
+struct rtc_param {
+	__u64 param;
+	union {
+		__u64 uvalue;
+		__s64 svalue;
+		__u64 ptr;
+	};
+	__u32 index;
+	__u32 __pad;
+};
+
+enum tick_device_mode {
+	TICKDEV_MODE_PERIODIC = 0,
+	TICKDEV_MODE_ONESHOT = 1,
+};
+
+enum tick_nohz_mode {
+	NOHZ_MODE_INACTIVE = 0,
+	NOHZ_MODE_LOWRES = 1,
+	NOHZ_MODE_HIGHRES = 2,
+};
+
+struct tick_device {
+	struct clock_event_device *evtdev;
+	enum tick_device_mode mode;
+};
+
+struct tick_sched {
+	unsigned int inidle: 1;
+	unsigned int tick_stopped: 1;
+	unsigned int idle_active: 1;
+	unsigned int do_timer_last: 1;
+	unsigned int got_idle_tick: 1;
+	unsigned int stalled_jiffies;
+	unsigned long last_tick_jiffies;
+	struct hrtimer sched_timer;
+	ktime_t last_tick;
+	ktime_t next_tick;
+	unsigned long idle_jiffies;
+	ktime_t idle_waketime;
+	seqcount_t idle_sleeptime_seq;
+	ktime_t idle_entrytime;
+	enum tick_nohz_mode nohz_mode;
+	unsigned long last_jiffies;
+	u64 timer_expires_base;
+	u64 timer_expires;
+	u64 next_timer;
+	ktime_t idle_expires;
+	unsigned long idle_calls;
+	unsigned long idle_sleeps;
+	ktime_t idle_exittime;
+	ktime_t idle_sleeptime;
+	ktime_t iowait_sleeptime;
+	atomic_t tick_dep_mask;
+	unsigned long check_clocks;
+};
+
+struct timer_list_iter {
+	int cpu;
+	bool second_pass;
+	u64 now;
+};
+
+struct tm {
+	int tm_sec;
+	int tm_min;
+	int tm_hour;
+	int tm_mday;
+	int tm_mon;
+	long tm_year;
+	int tm_wday;
+	int tm_yday;
+};
+
+typedef void (*btf_trace_alarmtimer_suspend)(void *, ktime_t, int);
+
+struct alarm;
+
+typedef void (*btf_trace_alarmtimer_fired)(void *, struct alarm *, ktime_t);
+
+enum alarmtimer_restart {
+	ALARMTIMER_NORESTART = 0,
+	ALARMTIMER_RESTART = 1,
+};
+
+enum alarmtimer_type {
+	ALARM_REALTIME = 0,
+	ALARM_BOOTTIME = 1,
+	ALARM_NUMTYPE = 2,
+	ALARM_REALTIME_FREEZER = 3,
+	ALARM_BOOTTIME_FREEZER = 4,
+};
+
+struct alarm {
+	struct timerqueue_node node;
+	struct hrtimer timer;
+	enum alarmtimer_restart (*function)(struct alarm *, ktime_t);
+	enum alarmtimer_type type;
+	int state;
+	void *data;
+};
+
+typedef void (*btf_trace_alarmtimer_start)(void *, struct alarm *, ktime_t);
+
+typedef void (*btf_trace_alarmtimer_cancel)(void *, struct alarm *, ktime_t);
+
+struct k_itimer;
+
+struct k_clock {
+	int (*clock_getres)(const clockid_t, struct timespec64 *);
+	int (*clock_set)(const clockid_t, const struct timespec64 *);
+	int (*clock_get_timespec)(const clockid_t, struct timespec64 *);
+	ktime_t (*clock_get_ktime)(const clockid_t);
+	int (*clock_adj)(const clockid_t, struct __kernel_timex *);
+	int (*timer_create)(struct k_itimer *);
+	int (*nsleep)(const clockid_t, int, const struct timespec64 *);
+	int (*timer_set)(struct k_itimer *, int, struct itimerspec64 *, struct itimerspec64 *);
+	int (*timer_del)(struct k_itimer *);
+	void (*timer_get)(struct k_itimer *, struct itimerspec64 *);
+	void (*timer_rearm)(struct k_itimer *);
+	s64 (*timer_forward)(struct k_itimer *, ktime_t);
+	ktime_t (*timer_remaining)(struct k_itimer *, ktime_t);
+	int (*timer_try_to_cancel)(struct k_itimer *);
+	void (*timer_arm)(struct k_itimer *, ktime_t, bool, bool);
+	void (*timer_wait_running)(struct k_itimer *);
+};
+
+struct cpu_timer {
+	struct timerqueue_node node;
+	struct timerqueue_head *head;
+	struct pid *pid;
+	struct list_head elist;
+	int firing;
+	struct task_struct __attribute__((btf_type_tag("rcu"))) *handling;
+};
+
+typedef __kernel_timer_t timer_t;
+
+struct k_itimer {
+	struct list_head list;
+	struct hlist_node t_hash;
+	spinlock_t it_lock;
+	const struct k_clock *kclock;
+	clockid_t it_clock;
+	timer_t it_id;
+	int it_active;
+	s64 it_overrun;
+	s64 it_overrun_last;
+	int it_requeue_pending;
+	int it_sigev_notify;
+	ktime_t it_interval;
+	struct signal_struct *it_signal;
+	union {
+		struct pid *it_pid;
+		struct task_struct *it_process;
+	};
+	struct sigqueue *sigq;
+	union {
+		struct {
+			struct hrtimer timer;
+		} real;
+		struct cpu_timer cpu;
+		struct {
+			struct alarm alarmtimer;
+		} alarm;
+	} it;
+	struct callback_head rcu;
+};
+
+struct alarm_base {
+	spinlock_t lock;
+	struct timerqueue_head timerqueue;
+	ktime_t (*get_ktime)();
+	void (*get_timespec)(struct timespec64 *);
+	clockid_t base_clockid;
+};
+
+struct class_interface {
+	struct list_head node;
+	const struct class *class;
+	int (*add_dev)(struct device *);
+	void (*remove_dev)(struct device *);
+};
+
+struct platform_driver {
+	int (*probe)(struct platform_device *);
+	int (*remove)(struct platform_device *);
+	void (*remove_new)(struct platform_device *);
+	void (*shutdown)(struct platform_device *);
+	int (*suspend)(struct platform_device *, pm_message_t);
+	int (*resume)(struct platform_device *);
+	struct device_driver driver;
+	const struct platform_device_id *id_table;
+	bool prevent_deferred_probe;
+	bool driver_managed_dma;
+	u64 android_kabi_reserved1;
+};
+
+struct trace_event_raw_alarmtimer_suspend {
+	struct trace_entry ent;
+	s64 expires;
+	unsigned char alarm_type;
+	char __data[0];
+};
+
+struct trace_event_raw_alarm_class {
+	struct trace_entry ent;
+	void *alarm;
+	unsigned char alarm_type;
+	s64 expires;
+	s64 now;
+	char __data[0];
+};
+
+struct property_entry;
+
+struct platform_device_info {
+	struct device *parent;
+	struct fwnode_handle *fwnode;
+	bool of_node_reused;
+	const char *name;
+	int id;
+	const struct resource *res;
+	unsigned int num_res;
+	const void *data;
+	size_t size_data;
+	u64 dma_mask;
+	const struct property_entry *properties;
+	u64 android_kabi_reserved1;
+};
+
+enum dev_prop_type {
+	DEV_PROP_U8 = 0,
+	DEV_PROP_U16 = 1,
+	DEV_PROP_U32 = 2,
+	DEV_PROP_U64 = 3,
+	DEV_PROP_STRING = 4,
+	DEV_PROP_REF = 5,
+};
+
+struct property_entry {
+	const char *name;
+	size_t length;
+	bool is_inline;
+	enum dev_prop_type type;
+	union {
+		const void *pointer;
+		union {
+			u8 u8_data[8];
+			u16 u16_data[4];
+			u32 u32_data[2];
+			u64 u64_data[1];
+			const char *str[1];
+		} value;
+	};
+};
+
+struct trace_event_data_offsets_alarmtimer_suspend {};
+
+struct trace_event_data_offsets_alarm_class {};
+
+struct sigevent {
+	sigval_t sigev_value;
+	int sigev_signo;
+	int sigev_notify;
+	union {
+		int _pad[12];
+		int _tid;
+		struct {
+			void (*_function)(sigval_t);
+			void *_attribute;
+		} _sigev_thread;
+	} _sigev_un;
+};
+
+struct compat_sigevent {
+	compat_sigval_t sigev_value;
+	compat_int_t sigev_signo;
+	compat_int_t sigev_notify;
+	union {
+		compat_int_t _pad[13];
+		compat_int_t _tid;
+		struct {
+			compat_uptr_t _function;
+			compat_uptr_t _attribute;
+		} _sigev_thread;
+	} _sigev_un;
+};
+
+typedef struct sigevent sigevent_t;
+
+struct posix_clock;
+
+struct posix_clock_operations {
+	struct module *owner;
+	int (*clock_adjtime)(struct posix_clock *, struct __kernel_timex *);
+	int (*clock_gettime)(struct posix_clock *, struct timespec64 *);
+	int (*clock_getres)(struct posix_clock *, struct timespec64 *);
+	int (*clock_settime)(struct posix_clock *, const struct timespec64 *);
+	long (*ioctl)(struct posix_clock *, unsigned int, unsigned long);
+	int (*open)(struct posix_clock *, fmode_t);
+	__poll_t (*poll)(struct posix_clock *, struct file *, poll_table *);
+	int (*release)(struct posix_clock *);
+	ssize_t (*read)(struct posix_clock *, uint, char __attribute__((btf_type_tag("user"))) *, size_t);
+};
+
+struct posix_clock {
+	struct posix_clock_operations ops;
+	struct cdev cdev;
+	struct device *dev;
+	struct rw_semaphore rwsem;
+	bool zombie;
+};
+
+struct posix_clock_desc {
+	struct file *fp;
+	struct posix_clock *clk;
+};
+
+struct __kernel_old_itimerval {
+	struct __kernel_old_timeval it_interval;
+	struct __kernel_old_timeval it_value;
+};
+
+struct old_itimerval32 {
+	struct old_timeval32 it_interval;
+	struct old_timeval32 it_value;
+};
+
+typedef s64 int64_t;
+
+struct ce_unbind {
+	struct clock_event_device *ce;
+	int res;
+};
+
+enum tick_broadcast_state {
+	TICK_BROADCAST_EXIT = 0,
+	TICK_BROADCAST_ENTER = 1,
+};
+
+enum tick_broadcast_mode {
+	TICK_BROADCAST_OFF = 0,
+	TICK_BROADCAST_ON = 1,
+	TICK_BROADCAST_FORCE = 2,
+};
+
+struct clock_read_data {
+	u64 epoch_ns;
+	u64 epoch_cyc;
+	u64 sched_clock_mask;
+	u64 (*read_sched_clock)();
+	u32 mult;
+	u32 shift;
+};
+
+struct clock_data {
+	seqcount_latch_t seq;
+	struct clock_read_data read_data[2];
+	ktime_t wrap_kt;
+	unsigned long rate;
+	u64 (*actual_read_sched_clock)();
+};
+
+struct proc_timens_offset {
+	int clockid;
+	struct timespec64 val;
+};
+
+struct futex_hash_bucket {
+	atomic_t waiters;
+	spinlock_t lock;
+	struct plist_head chain;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+enum futex_access {
+	FUTEX_READ = 0,
+	FUTEX_WRITE = 1,
+};
+
+union futex_key {
+	struct {
+		u64 i_seq;
+		unsigned long pgoff;
+		unsigned int offset;
+	} shared;
+	struct {
+		union {
+			struct mm_struct *mm;
+			u64 __tmp;
+		};
+		unsigned long address;
+		unsigned int offset;
+	} private;
+	struct {
+		u64 ptr;
+		unsigned long word;
+		unsigned int offset;
+	} both;
+};
+
+struct futex_pi_state {
+	struct list_head list;
+	struct rt_mutex_base pi_mutex;
+	struct task_struct *owner;
+	refcount_t refcount;
+	union futex_key key;
+};
+
+struct futex_q {
+	struct plist_node list;
+	struct task_struct *task;
+	spinlock_t *lock_ptr;
+	union futex_key key;
+	struct futex_pi_state *pi_state;
+	struct rt_mutex_waiter *rt_waiter;
+	union futex_key *requeue_pi_key;
+	u32 bitset;
+	atomic_t requeue_state;
+};
+
+struct futex_waitv {
+	__u64 val;
+	__u64 uaddr;
+	__u32 flags;
+	__u32 __reserved;
+};
+
+struct futex_vector {
+	struct futex_waitv w;
+	struct futex_q q;
+};
+
+enum {
+	Q_REQUEUE_PI_NONE = 0,
+	Q_REQUEUE_PI_IGNORE = 1,
+	Q_REQUEUE_PI_IN_PROGRESS = 2,
+	Q_REQUEUE_PI_WAIT = 3,
+	Q_REQUEUE_PI_DONE = 4,
+	Q_REQUEUE_PI_LOCKED = 5,
+};
+
+typedef void (*btf_trace_csd_queue_cpu)(void *, const unsigned int, unsigned long, smp_call_func_t, struct __call_single_data *);
+
+typedef void (*btf_trace_csd_function_entry)(void *, smp_call_func_t, struct __call_single_data *);
+
+typedef void (*btf_trace_csd_function_exit)(void *, smp_call_func_t, struct __call_single_data *);
+
+struct call_function_data {
+	call_single_data_t __attribute__((btf_type_tag("percpu"))) *csd;
+	cpumask_var_t cpumask;
+	cpumask_var_t cpumask_ipi;
+};
+
+struct trace_event_raw_csd_queue_cpu {
+	struct trace_entry ent;
+	unsigned int cpu;
+	void *callsite;
+	void *func;
+	void *csd;
+	char __data[0];
+};
+
+struct trace_event_raw_csd_function {
+	struct trace_entry ent;
+	void *func;
+	void *csd;
+	char __data[0];
+};
+
+struct smp_call_on_cpu_struct {
+	struct work_struct work;
+	struct completion done;
+	int (*func)(void *);
+	void *data;
+	int ret;
+	int cpu;
+};
+
+struct trace_event_data_offsets_csd_queue_cpu {};
+
+struct trace_event_data_offsets_csd_function {};
+
+typedef unsigned short __kernel_old_uid_t;
+
+typedef __kernel_old_uid_t old_uid_t;
+
+typedef unsigned short __kernel_old_gid_t;
+
+typedef __kernel_old_gid_t old_gid_t;
+
+enum pkey_id_type {
+	PKEY_ID_PGP = 0,
+	PKEY_ID_X509 = 1,
+	PKEY_ID_PKCS7 = 2,
+};
+
+union bpf_iter_link_info;
+
+typedef int (*bpf_iter_attach_target_t)(struct bpf_prog *, union bpf_iter_link_info *, struct bpf_iter_aux_info *);
+
+typedef void (*bpf_iter_detach_target_t)(struct bpf_iter_aux_info *);
+
+typedef void (*bpf_iter_show_fdinfo_t)(const struct bpf_iter_aux_info *, struct seq_file *);
+
+typedef int (*bpf_iter_fill_link_info_t)(const struct bpf_iter_aux_info *, struct bpf_link_info *);
+
+enum bpf_func_id {
+	BPF_FUNC_unspec = 0,
+	BPF_FUNC_map_lookup_elem = 1,
+	BPF_FUNC_map_update_elem = 2,
+	BPF_FUNC_map_delete_elem = 3,
+	BPF_FUNC_probe_read = 4,
+	BPF_FUNC_ktime_get_ns = 5,
+	BPF_FUNC_trace_printk = 6,
+	BPF_FUNC_get_prandom_u32 = 7,
+	BPF_FUNC_get_smp_processor_id = 8,
+	BPF_FUNC_skb_store_bytes = 9,
+	BPF_FUNC_l3_csum_replace = 10,
+	BPF_FUNC_l4_csum_replace = 11,
+	BPF_FUNC_tail_call = 12,
+	BPF_FUNC_clone_redirect = 13,
+	BPF_FUNC_get_current_pid_tgid = 14,
+	BPF_FUNC_get_current_uid_gid = 15,
+	BPF_FUNC_get_current_comm = 16,
+	BPF_FUNC_get_cgroup_classid = 17,
+	BPF_FUNC_skb_vlan_push = 18,
+	BPF_FUNC_skb_vlan_pop = 19,
+	BPF_FUNC_skb_get_tunnel_key = 20,
+	BPF_FUNC_skb_set_tunnel_key = 21,
+	BPF_FUNC_perf_event_read = 22,
+	BPF_FUNC_redirect = 23,
+	BPF_FUNC_get_route_realm = 24,
+	BPF_FUNC_perf_event_output = 25,
+	BPF_FUNC_skb_load_bytes = 26,
+	BPF_FUNC_get_stackid = 27,
+	BPF_FUNC_csum_diff = 28,
+	BPF_FUNC_skb_get_tunnel_opt = 29,
+	BPF_FUNC_skb_set_tunnel_opt = 30,
+	BPF_FUNC_skb_change_proto = 31,
+	BPF_FUNC_skb_change_type = 32,
+	BPF_FUNC_skb_under_cgroup = 33,
+	BPF_FUNC_get_hash_recalc = 34,
+	BPF_FUNC_get_current_task = 35,
+	BPF_FUNC_probe_write_user = 36,
+	BPF_FUNC_current_task_under_cgroup = 37,
+	BPF_FUNC_skb_change_tail = 38,
+	BPF_FUNC_skb_pull_data = 39,
+	BPF_FUNC_csum_update = 40,
+	BPF_FUNC_set_hash_invalid = 41,
+	BPF_FUNC_get_numa_node_id = 42,
+	BPF_FUNC_skb_change_head = 43,
+	BPF_FUNC_xdp_adjust_head = 44,
+	BPF_FUNC_probe_read_str = 45,
+	BPF_FUNC_get_socket_cookie = 46,
+	BPF_FUNC_get_socket_uid = 47,
+	BPF_FUNC_set_hash = 48,
+	BPF_FUNC_setsockopt = 49,
+	BPF_FUNC_skb_adjust_room = 50,
+	BPF_FUNC_redirect_map = 51,
+	BPF_FUNC_sk_redirect_map = 52,
+	BPF_FUNC_sock_map_update = 53,
+	BPF_FUNC_xdp_adjust_meta = 54,
+	BPF_FUNC_perf_event_read_value = 55,
+	BPF_FUNC_perf_prog_read_value = 56,
+	BPF_FUNC_getsockopt = 57,
+	BPF_FUNC_override_return = 58,
+	BPF_FUNC_sock_ops_cb_flags_set = 59,
+	BPF_FUNC_msg_redirect_map = 60,
+	BPF_FUNC_msg_apply_bytes = 61,
+	BPF_FUNC_msg_cork_bytes = 62,
+	BPF_FUNC_msg_pull_data = 63,
+	BPF_FUNC_bind = 64,
+	BPF_FUNC_xdp_adjust_tail = 65,
+	BPF_FUNC_skb_get_xfrm_state = 66,
+	BPF_FUNC_get_stack = 67,
+	BPF_FUNC_skb_load_bytes_relative = 68,
+	BPF_FUNC_fib_lookup = 69,
+	BPF_FUNC_sock_hash_update = 70,
+	BPF_FUNC_msg_redirect_hash = 71,
+	BPF_FUNC_sk_redirect_hash = 72,
+	BPF_FUNC_lwt_push_encap = 73,
+	BPF_FUNC_lwt_seg6_store_bytes = 74,
+	BPF_FUNC_lwt_seg6_adjust_srh = 75,
+	BPF_FUNC_lwt_seg6_action = 76,
+	BPF_FUNC_rc_repeat = 77,
+	BPF_FUNC_rc_keydown = 78,
+	BPF_FUNC_skb_cgroup_id = 79,
+	BPF_FUNC_get_current_cgroup_id = 80,
+	BPF_FUNC_get_local_storage = 81,
+	BPF_FUNC_sk_select_reuseport = 82,
+	BPF_FUNC_skb_ancestor_cgroup_id = 83,
+	BPF_FUNC_sk_lookup_tcp = 84,
+	BPF_FUNC_sk_lookup_udp = 85,
+	BPF_FUNC_sk_release = 86,
+	BPF_FUNC_map_push_elem = 87,
+	BPF_FUNC_map_pop_elem = 88,
+	BPF_FUNC_map_peek_elem = 89,
+	BPF_FUNC_msg_push_data = 90,
+	BPF_FUNC_msg_pop_data = 91,
+	BPF_FUNC_rc_pointer_rel = 92,
+	BPF_FUNC_spin_lock = 93,
+	BPF_FUNC_spin_unlock = 94,
+	BPF_FUNC_sk_fullsock = 95,
+	BPF_FUNC_tcp_sock = 96,
+	BPF_FUNC_skb_ecn_set_ce = 97,
+	BPF_FUNC_get_listener_sock = 98,
+	BPF_FUNC_skc_lookup_tcp = 99,
+	BPF_FUNC_tcp_check_syncookie = 100,
+	BPF_FUNC_sysctl_get_name = 101,
+	BPF_FUNC_sysctl_get_current_value = 102,
+	BPF_FUNC_sysctl_get_new_value = 103,
+	BPF_FUNC_sysctl_set_new_value = 104,
+	BPF_FUNC_strtol = 105,
+	BPF_FUNC_strtoul = 106,
+	BPF_FUNC_sk_storage_get = 107,
+	BPF_FUNC_sk_storage_delete = 108,
+	BPF_FUNC_send_signal = 109,
+	BPF_FUNC_tcp_gen_syncookie = 110,
+	BPF_FUNC_skb_output = 111,
+	BPF_FUNC_probe_read_user = 112,
+	BPF_FUNC_probe_read_kernel = 113,
+	BPF_FUNC_probe_read_user_str = 114,
+	BPF_FUNC_probe_read_kernel_str = 115,
+	BPF_FUNC_tcp_send_ack = 116,
+	BPF_FUNC_send_signal_thread = 117,
+	BPF_FUNC_jiffies64 = 118,
+	BPF_FUNC_read_branch_records = 119,
+	BPF_FUNC_get_ns_current_pid_tgid = 120,
+	BPF_FUNC_xdp_output = 121,
+	BPF_FUNC_get_netns_cookie = 122,
+	BPF_FUNC_get_current_ancestor_cgroup_id = 123,
+	BPF_FUNC_sk_assign = 124,
+	BPF_FUNC_ktime_get_boot_ns = 125,
+	BPF_FUNC_seq_printf = 126,
+	BPF_FUNC_seq_write = 127,
+	BPF_FUNC_sk_cgroup_id = 128,
+	BPF_FUNC_sk_ancestor_cgroup_id = 129,
+	BPF_FUNC_ringbuf_output = 130,
+	BPF_FUNC_ringbuf_reserve = 131,
+	BPF_FUNC_ringbuf_submit = 132,
+	BPF_FUNC_ringbuf_discard = 133,
+	BPF_FUNC_ringbuf_query = 134,
+	BPF_FUNC_csum_level = 135,
+	BPF_FUNC_skc_to_tcp6_sock = 136,
+	BPF_FUNC_skc_to_tcp_sock = 137,
+	BPF_FUNC_skc_to_tcp_timewait_sock = 138,
+	BPF_FUNC_skc_to_tcp_request_sock = 139,
+	BPF_FUNC_skc_to_udp6_sock = 140,
+	BPF_FUNC_get_task_stack = 141,
+	BPF_FUNC_load_hdr_opt = 142,
+	BPF_FUNC_store_hdr_opt = 143,
+	BPF_FUNC_reserve_hdr_opt = 144,
+	BPF_FUNC_inode_storage_get = 145,
+	BPF_FUNC_inode_storage_delete = 146,
+	BPF_FUNC_d_path = 147,
+	BPF_FUNC_copy_from_user = 148,
+	BPF_FUNC_snprintf_btf = 149,
+	BPF_FUNC_seq_printf_btf = 150,
+	BPF_FUNC_skb_cgroup_classid = 151,
+	BPF_FUNC_redirect_neigh = 152,
+	BPF_FUNC_per_cpu_ptr = 153,
+	BPF_FUNC_this_cpu_ptr = 154,
+	BPF_FUNC_redirect_peer = 155,
+	BPF_FUNC_task_storage_get = 156,
+	BPF_FUNC_task_storage_delete = 157,
+	BPF_FUNC_get_current_task_btf = 158,
+	BPF_FUNC_bprm_opts_set = 159,
+	BPF_FUNC_ktime_get_coarse_ns = 160,
+	BPF_FUNC_ima_inode_hash = 161,
+	BPF_FUNC_sock_from_file = 162,
+	BPF_FUNC_check_mtu = 163,
+	BPF_FUNC_for_each_map_elem = 164,
+	BPF_FUNC_snprintf = 165,
+	BPF_FUNC_sys_bpf = 166,
+	BPF_FUNC_btf_find_by_name_kind = 167,
+	BPF_FUNC_sys_close = 168,
+	BPF_FUNC_timer_init = 169,
+	BPF_FUNC_timer_set_callback = 170,
+	BPF_FUNC_timer_start = 171,
+	BPF_FUNC_timer_cancel = 172,
+	BPF_FUNC_get_func_ip = 173,
+	BPF_FUNC_get_attach_cookie = 174,
+	BPF_FUNC_task_pt_regs = 175,
+	BPF_FUNC_get_branch_snapshot = 176,
+	BPF_FUNC_trace_vprintk = 177,
+	BPF_FUNC_skc_to_unix_sock = 178,
+	BPF_FUNC_kallsyms_lookup_name = 179,
+	BPF_FUNC_find_vma = 180,
+	BPF_FUNC_loop = 181,
+	BPF_FUNC_strncmp = 182,
+	BPF_FUNC_get_func_arg = 183,
+	BPF_FUNC_get_func_ret = 184,
+	BPF_FUNC_get_func_arg_cnt = 185,
+	BPF_FUNC_get_retval = 186,
+	BPF_FUNC_set_retval = 187,
+	BPF_FUNC_xdp_get_buff_len = 188,
+	BPF_FUNC_xdp_load_bytes = 189,
+	BPF_FUNC_xdp_store_bytes = 190,
+	BPF_FUNC_copy_from_user_task = 191,
+	BPF_FUNC_skb_set_tstamp = 192,
+	BPF_FUNC_ima_file_hash = 193,
+	BPF_FUNC_kptr_xchg = 194,
+	BPF_FUNC_map_lookup_percpu_elem = 195,
+	BPF_FUNC_skc_to_mptcp_sock = 196,
+	BPF_FUNC_dynptr_from_mem = 197,
+	BPF_FUNC_ringbuf_reserve_dynptr = 198,
+	BPF_FUNC_ringbuf_submit_dynptr = 199,
+	BPF_FUNC_ringbuf_discard_dynptr = 200,
+	BPF_FUNC_dynptr_read = 201,
+	BPF_FUNC_dynptr_write = 202,
+	BPF_FUNC_dynptr_data = 203,
+	BPF_FUNC_tcp_raw_gen_syncookie_ipv4 = 204,
+	BPF_FUNC_tcp_raw_gen_syncookie_ipv6 = 205,
+	BPF_FUNC_tcp_raw_check_syncookie_ipv4 = 206,
+	BPF_FUNC_tcp_raw_check_syncookie_ipv6 = 207,
+	BPF_FUNC_ktime_get_tai_ns = 208,
+	BPF_FUNC_user_ringbuf_drain = 209,
+	BPF_FUNC_cgrp_storage_get = 210,
+	BPF_FUNC_cgrp_storage_delete = 211,
+	__BPF_FUNC_MAX_ID = 212,
+};
+
+struct bpf_func_proto;
+
+typedef const struct bpf_func_proto * (*bpf_iter_get_func_proto_t)(enum bpf_func_id, const struct bpf_prog *);
+
+struct bpf_iter_reg {
+	const char *target;
+	bpf_iter_attach_target_t attach_target;
+	bpf_iter_detach_target_t detach_target;
+	bpf_iter_show_fdinfo_t show_fdinfo;
+	bpf_iter_fill_link_info_t fill_link_info;
+	bpf_iter_get_func_proto_t get_func_proto;
+	u32 ctx_arg_info_size;
+	u32 feature;
+	struct bpf_ctx_arg_aux ctx_arg_info[2];
+	const struct bpf_iter_seq_info *seq_info;
+};
+
+union bpf_iter_link_info {
+	struct {
+		__u32 map_fd;
+	} map;
+	struct {
+		enum bpf_cgroup_iter_order order;
+		__u32 cgroup_fd;
+		__u64 cgroup_id;
+	} cgroup;
+	struct {
+		__u32 tid;
+		__u32 pid;
+		__u32 pid_fd;
+	} task;
+};
+
+enum bpf_return_type {
+	RET_INTEGER = 0,
+	RET_VOID = 1,
+	RET_PTR_TO_MAP_VALUE = 2,
+	RET_PTR_TO_SOCKET = 3,
+	RET_PTR_TO_TCP_SOCK = 4,
+	RET_PTR_TO_SOCK_COMMON = 5,
+	RET_PTR_TO_MEM = 6,
+	RET_PTR_TO_MEM_OR_BTF_ID = 7,
+	RET_PTR_TO_BTF_ID = 8,
+	__BPF_RET_TYPE_MAX = 9,
+	RET_PTR_TO_MAP_VALUE_OR_NULL = 258,
+	RET_PTR_TO_SOCKET_OR_NULL = 259,
+	RET_PTR_TO_TCP_SOCK_OR_NULL = 260,
+	RET_PTR_TO_SOCK_COMMON_OR_NULL = 261,
+	RET_PTR_TO_RINGBUF_MEM_OR_NULL = 1286,
+	RET_PTR_TO_DYNPTR_MEM_OR_NULL = 262,
+	RET_PTR_TO_BTF_ID_OR_NULL = 264,
+	RET_PTR_TO_BTF_ID_TRUSTED = 1048584,
+	__BPF_RET_TYPE_LIMIT = 33554431,
+};
+
+enum bpf_arg_type {
+	ARG_DONTCARE = 0,
+	ARG_CONST_MAP_PTR = 1,
+	ARG_PTR_TO_MAP_KEY = 2,
+	ARG_PTR_TO_MAP_VALUE = 3,
+	ARG_PTR_TO_MEM = 4,
+	ARG_CONST_SIZE = 5,
+	ARG_CONST_SIZE_OR_ZERO = 6,
+	ARG_PTR_TO_CTX = 7,
+	ARG_ANYTHING = 8,
+	ARG_PTR_TO_SPIN_LOCK = 9,
+	ARG_PTR_TO_SOCK_COMMON = 10,
+	ARG_PTR_TO_INT = 11,
+	ARG_PTR_TO_LONG = 12,
+	ARG_PTR_TO_SOCKET = 13,
+	ARG_PTR_TO_BTF_ID = 14,
+	ARG_PTR_TO_RINGBUF_MEM = 15,
+	ARG_CONST_ALLOC_SIZE_OR_ZERO = 16,
+	ARG_PTR_TO_BTF_ID_SOCK_COMMON = 17,
+	ARG_PTR_TO_PERCPU_BTF_ID = 18,
+	ARG_PTR_TO_FUNC = 19,
+	ARG_PTR_TO_STACK = 20,
+	ARG_PTR_TO_CONST_STR = 21,
+	ARG_PTR_TO_TIMER = 22,
+	ARG_PTR_TO_KPTR = 23,
+	ARG_PTR_TO_DYNPTR = 24,
+	__BPF_ARG_TYPE_MAX = 25,
+	ARG_PTR_TO_MAP_VALUE_OR_NULL = 259,
+	ARG_PTR_TO_MEM_OR_NULL = 260,
+	ARG_PTR_TO_CTX_OR_NULL = 263,
+	ARG_PTR_TO_SOCKET_OR_NULL = 269,
+	ARG_PTR_TO_STACK_OR_NULL = 276,
+	ARG_PTR_TO_BTF_ID_OR_NULL = 270,
+	ARG_PTR_TO_UNINIT_MEM = 32772,
+	ARG_PTR_TO_FIXED_SIZE_MEM = 262148,
+	__BPF_ARG_TYPE_LIMIT = 33554431,
+};
+
+struct bpf_func_proto {
+	u64 (*func)(u64, u64, u64, u64, u64);
+	bool gpl_only;
+	bool pkt_access;
+	bool might_sleep;
+	enum bpf_return_type ret_type;
+	union {
+		struct {
+			enum bpf_arg_type arg1_type;
+			enum bpf_arg_type arg2_type;
+			enum bpf_arg_type arg3_type;
+			enum bpf_arg_type arg4_type;
+			enum bpf_arg_type arg5_type;
+		};
+		enum bpf_arg_type arg_type[5];
+	};
+	union {
+		struct {
+			u32 *arg1_btf_id;
+			u32 *arg2_btf_id;
+			u32 *arg3_btf_id;
+			u32 *arg4_btf_id;
+			u32 *arg5_btf_id;
+		};
+		u32 *arg_btf_id[5];
+		struct {
+			size_t arg1_size;
+			size_t arg2_size;
+			size_t arg3_size;
+			size_t arg4_size;
+			size_t arg5_size;
+		};
+		size_t arg_size[5];
+	};
+	int *ret_btf_id;
+	bool (*allowed)(const struct bpf_prog *);
+};
+
+struct kallsym_iter {
+	loff_t pos;
+	loff_t pos_mod_end;
+	loff_t pos_ftrace_mod_end;
+	loff_t pos_bpf_end;
+	unsigned long value;
+	unsigned int nameoff;
+	char type;
+	char name[512];
+	char module_name[56];
+	int exported;
+	int show_value;
+};
+
+struct bpf_iter_meta;
+
+struct bpf_iter__ksym {
+	union {
+		struct bpf_iter_meta *meta;
+	};
+	union {
+		struct kallsym_iter *ksym;
+	};
+};
+
+struct bpf_iter_meta {
+	union {
+		struct seq_file *seq;
+	};
+	u64 session_id;
+	u64 seq_num;
+};
+
+struct cgroup_taskset {
+	struct list_head src_csets;
+	struct list_head dst_csets;
+	int nr_tasks;
+	int ssid;
+	struct list_head *csets;
+	struct css_set *cur_cset;
+	struct task_struct *cur_task;
+};
+
+struct bpf_cgroup_storage_key {
+	__u64 cgroup_inode_id;
+	__u32 attach_type;
+};
+
+struct bpf_storage_buffer;
+
+struct bpf_cgroup_storage_map;
+
+struct bpf_cgroup_storage {
+	union {
+		struct bpf_storage_buffer *buf;
+		void __attribute__((btf_type_tag("percpu"))) *percpu_buf;
+	};
+	struct bpf_cgroup_storage_map *map;
+	struct bpf_cgroup_storage_key key;
+	struct list_head list_map;
+	struct list_head list_cg;
+	struct rb_node node;
+	struct callback_head rcu;
+};
+
+struct bpf_storage_buffer {
+	struct callback_head rcu;
+	char data[0];
+};
+
+typedef void (*btf_trace_cgroup_setup_root)(void *, struct cgroup_root *);
+
+typedef void (*btf_trace_cgroup_destroy_root)(void *, struct cgroup_root *);
+
+typedef void (*btf_trace_cgroup_remount)(void *, struct cgroup_root *);
+
+typedef void (*btf_trace_cgroup_mkdir)(void *, struct cgroup *, const char *);
+
+typedef void (*btf_trace_cgroup_rmdir)(void *, struct cgroup *, const char *);
+
+typedef void (*btf_trace_cgroup_release)(void *, struct cgroup *, const char *);
+
+typedef void (*btf_trace_cgroup_rename)(void *, struct cgroup *, const char *);
+
+typedef void (*btf_trace_cgroup_freeze)(void *, struct cgroup *, const char *);
+
+typedef void (*btf_trace_cgroup_unfreeze)(void *, struct cgroup *, const char *);
+
+typedef void (*btf_trace_cgroup_attach_task)(void *, struct cgroup *, const char *, struct task_struct *, bool);
+
+typedef void (*btf_trace_cgroup_transfer_tasks)(void *, struct cgroup *, const char *, struct task_struct *, bool);
+
+typedef void (*btf_trace_cgroup_notify_populated)(void *, struct cgroup *, const char *, int);
+
+typedef void (*btf_trace_cgroup_notify_frozen)(void *, struct cgroup *, const char *, int);
+
+struct kernfs_fs_context {
+	struct kernfs_root *root;
+	void *ns_tag;
+	unsigned long magic;
+	bool new_sb_created;
+};
+
+struct cgroup_fs_context {
+	struct kernfs_fs_context kfc;
+	struct cgroup_root *root;
+	struct cgroup_namespace *ns;
+	unsigned int flags;
+	bool cpuset_clone_children;
+	bool none;
+	bool all_ss;
+	u16 subsys_mask;
+	char *name;
+	char *release_agent;
+};
+
+struct kernfs_syscall_ops {
+	int (*show_options)(struct seq_file *, struct kernfs_root *);
+	int (*mkdir)(struct kernfs_node *, const char *, umode_t);
+	int (*rmdir)(struct kernfs_node *);
+	int (*rename)(struct kernfs_node *, struct kernfs_node *, const char *);
+	int (*show_path)(struct seq_file *, struct kernfs_node *, struct kernfs_root *);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+enum {
+	CGRP_ROOT_NOPREFIX = 2,
+	CGRP_ROOT_XATTR = 4,
+	CGRP_ROOT_NS_DELEGATE = 8,
+	CGRP_ROOT_FAVOR_DYNMODS = 16,
+	CGRP_ROOT_CPUSET_V2_MODE = 65536,
+	CGRP_ROOT_MEMORY_LOCAL_EVENTS = 131072,
+	CGRP_ROOT_MEMORY_RECURSIVE_PROT = 262144,
+};
+
+enum kernfs_node_type {
+	KERNFS_DIR = 1,
+	KERNFS_FILE = 2,
+	KERNFS_LINK = 4,
+};
+
+enum {
+	CGRP_NOTIFY_ON_RELEASE = 0,
+	CGRP_CPUSET_CLONE_CHILDREN = 1,
+	CGRP_FREEZE = 2,
+	CGRP_FROZEN = 3,
+	CGRP_KILL = 4,
+};
+
+enum kernfs_root_flag {
+	KERNFS_ROOT_CREATE_DEACTIVATED = 1,
+	KERNFS_ROOT_EXTRA_OPEN_PERM_CHECK = 2,
+	KERNFS_ROOT_SUPPORT_EXPORTOP = 4,
+	KERNFS_ROOT_SUPPORT_USER_XATTR = 8,
+};
+
+enum cgroup_opt_features {
+	OPT_FEATURE_PRESSURE = 0,
+	OPT_FEATURE_COUNT = 1,
+};
+
+enum {
+	CFTYPE_ONLY_ON_ROOT = 1,
+	CFTYPE_NOT_ON_ROOT = 2,
+	CFTYPE_NS_DELEGATABLE = 4,
+	CFTYPE_NO_PREFIX = 8,
+	CFTYPE_WORLD_WRITABLE = 16,
+	CFTYPE_DEBUG = 32,
+	__CFTYPE_ONLY_ON_DFL = 65536,
+	__CFTYPE_NOT_ON_DFL = 131072,
+	__CFTYPE_ADDED = 262144,
+};
+
+enum cgroup2_param {
+	Opt_nsdelegate = 0,
+	Opt_favordynmods = 1,
+	Opt_memory_localevents = 2,
+	Opt_memory_recursiveprot = 3,
+	nr__cgroup2_params = 4,
+};
+
+struct cgrp_cset_link {
+	struct cgroup *cgrp;
+	struct css_set *cset;
+	struct list_head cset_link;
+	struct list_head cgrp_link;
+};
+
+struct trace_event_raw_cgroup_root {
+	struct trace_entry ent;
+	int root;
+	u16 ss_mask;
+	u32 __data_loc_name;
+	char __data[0];
+};
+
+struct trace_event_raw_cgroup {
+	struct trace_entry ent;
+	int root;
+	int level;
+	u64 id;
+	u32 __data_loc_path;
+	char __data[0];
+};
+
+struct trace_event_raw_cgroup_migrate {
+	struct trace_entry ent;
+	int dst_root;
+	int dst_level;
+	u64 dst_id;
+	int pid;
+	u32 __data_loc_dst_path;
+	u32 __data_loc_comm;
+	char __data[0];
+};
+
+struct trace_event_raw_cgroup_event {
+	struct trace_entry ent;
+	int root;
+	int level;
+	u64 id;
+	u32 __data_loc_path;
+	int val;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_cgroup_root {
+	u32 name;
+};
+
+struct trace_event_data_offsets_cgroup {
+	u32 path;
+};
+
+struct trace_event_data_offsets_cgroup_event {
+	u32 path;
+};
+
+struct cgroup_mgctx {
+	struct list_head preloaded_src_csets;
+	struct list_head preloaded_dst_csets;
+	struct cgroup_taskset tset;
+	u16 ss_mask;
+};
+
+struct cgroup_pidlist;
+
+struct cgroup_file_ctx {
+	struct cgroup_namespace *ns;
+	struct {
+		void *trigger;
+	} psi;
+	struct {
+		bool started;
+		struct css_task_iter iter;
+	} procs;
+	struct {
+		struct cgroup_pidlist *pidlist;
+	} procs1;
+};
+
+struct trace_event_data_offsets_cgroup_migrate {
+	u32 dst_path;
+	u32 comm;
+};
+
+typedef int (*btf_kfunc_filter_t)(const struct bpf_prog *, u32);
+
+struct btf_id_set8;
+
+struct btf_kfunc_id_set {
+	struct module *owner;
+	struct btf_id_set8 *set;
+	btf_kfunc_filter_t filter;
+};
+
+struct btf_id_set8 {
+	u32 cnt;
+	u32 flags;
+	struct {
+		u32 id;
+		u32 flags;
+	} pairs[0];
+};
+
+enum cgroup_filetype {
+	CGROUP_FILE_PROCS = 0,
+	CGROUP_FILE_TASKS = 1,
+};
+
+enum cgroup1_param {
+	Opt_all = 0,
+	Opt_clone_children = 1,
+	Opt_cpuset_v2_mode = 2,
+	Opt_name = 3,
+	Opt_none = 4,
+	Opt_noprefix = 5,
+	Opt_release_agent = 6,
+	Opt_xattr = 7,
+	Opt_favordynmods___2 = 8,
+	Opt_nofavordynmods = 9,
+};
+
+struct cgroup_pidlist {
+	struct {
+		enum cgroup_filetype type;
+		struct pid_namespace *ns;
+	} key;
+	pid_t *list;
+	int length;
+	struct list_head links;
+	struct cgroup *owner;
+	struct delayed_work destroy_dwork;
+};
+
+struct cgroupstats {
+	__u64 nr_sleeping;
+	__u64 nr_running;
+	__u64 nr_stopped;
+	__u64 nr_uninterruptible;
+	__u64 nr_io_wait;
+};
+
+enum freezer_state_flags {
+	CGROUP_FREEZER_ONLINE = 1,
+	CGROUP_FREEZING_SELF = 2,
+	CGROUP_FREEZING_PARENT = 4,
+	CGROUP_FROZEN = 8,
+	CGROUP_FREEZING = 6,
+};
+
+struct freezer {
+	struct cgroup_subsys_state css;
+	unsigned int state;
+};
+
+struct fmeter {
+	int cnt;
+	int val;
+	time64_t time;
+	spinlock_t lock;
+};
+
+enum prs_errcode {
+	PERR_NONE = 0,
+	PERR_INVCPUS = 1,
+	PERR_INVPARENT = 2,
+	PERR_NOTPART = 3,
+	PERR_NOTEXCL = 4,
+	PERR_NOCPUS = 5,
+	PERR_HOTPLUG = 6,
+	PERR_CPUSEMPTY = 7,
+};
+
+struct cpuset {
+	struct cgroup_subsys_state css;
+	unsigned long flags;
+	cpumask_var_t cpus_allowed;
+	cpumask_var_t cpus_requested;
+	nodemask_t mems_allowed;
+	cpumask_var_t effective_cpus;
+	nodemask_t effective_mems;
+	cpumask_var_t subparts_cpus;
+	nodemask_t old_mems_allowed;
+	struct fmeter fmeter;
+	int attach_in_progress;
+	int pn;
+	int relax_domain_level;
+	int nr_subparts_cpus;
+	int partition_root_state;
+	int use_parent_ecpus;
+	int child_ecpus_count;
+	int nr_deadline_tasks;
+	int nr_migrate_dl_tasks;
+	u64 sum_migrate_dl_bw;
+	enum prs_errcode prs_err;
+	struct cgroup_file partition_file;
+};
+
+enum subparts_cmd {
+	partcmd_enable = 0,
+	partcmd_disable = 1,
+	partcmd_update = 2,
+	partcmd_invalidate = 3,
+};
+
+enum {
+	ZONELIST_FALLBACK = 0,
+	MAX_ZONELISTS = 1,
+};
+
+struct cpuset_migrate_mm_work {
+	struct work_struct work;
+	struct mm_struct *mm;
+	nodemask_t from;
+	nodemask_t to;
+};
+
+struct tmpmasks {
+	cpumask_var_t addmask;
+	cpumask_var_t delmask;
+	cpumask_var_t new_cpus;
+};
+
+typedef enum {
+	CS_ONLINE = 0,
+	CS_CPU_EXCLUSIVE = 1,
+	CS_MEM_EXCLUSIVE = 2,
+	CS_MEM_HARDWALL = 3,
+	CS_MEMORY_MIGRATE = 4,
+	CS_SCHED_LOAD_BALANCE = 5,
+	CS_SPREAD_PAGE = 6,
+	CS_SPREAD_SLAB = 7,
+} cpuset_flagbits_t;
+
+typedef enum {
+	FILE_MEMORY_MIGRATE = 0,
+	FILE_CPULIST = 1,
+	FILE_MEMLIST = 2,
+	FILE_EFFECTIVE_CPULIST = 3,
+	FILE_EFFECTIVE_MEMLIST = 4,
+	FILE_SUBPARTS_CPULIST = 5,
+	FILE_CPU_EXCLUSIVE = 6,
+	FILE_MEM_EXCLUSIVE = 7,
+	FILE_MEM_HARDWALL = 8,
+	FILE_SCHED_LOAD_BALANCE = 9,
+	FILE_PARTITION_ROOT = 10,
+	FILE_SCHED_RELAX_DOMAIN_LEVEL = 11,
+	FILE_MEMORY_PRESSURE_ENABLED = 12,
+	FILE_MEMORY_PRESSURE = 13,
+	FILE_SPREAD_PAGE = 14,
+	FILE_SPREAD_SLAB = 15,
+} cpuset_filetype_t;
+
+struct cpu_stopper {
+	struct task_struct *thread;
+	raw_spinlock_t lock;
+	bool enabled;
+	struct list_head works;
+	struct cpu_stop_work stop_work;
+	unsigned long caller;
+	cpu_stop_fn_t fn;
+};
+
+struct cpu_stop_done {
+	atomic_t nr_todo;
+	int ret;
+	struct completion completion;
+};
+
+enum multi_stop_state {
+	MULTI_STOP_NONE = 0,
+	MULTI_STOP_PREPARE = 1,
+	MULTI_STOP_DISABLE_IRQ = 2,
+	MULTI_STOP_RUN = 3,
+	MULTI_STOP_EXIT = 4,
+};
+
+struct multi_stop_data {
+	cpu_stop_fn_t fn;
+	void *data;
+	unsigned int num_threads;
+	const struct cpumask *active_cpus;
+	enum multi_stop_state state;
+	atomic_t thread_ack;
+};
+
+struct auditd_connection {
+	struct pid *pid;
+	u32 portid;
+	struct net *net;
+	struct callback_head rcu;
+};
+
+typedef int __kernel_mqd_t;
+
+typedef __kernel_mqd_t mqd_t;
+
+struct mq_attr {
+	__kernel_long_t mq_flags;
+	__kernel_long_t mq_maxmsg;
+	__kernel_long_t mq_msgsize;
+	__kernel_long_t mq_curmsgs;
+	__kernel_long_t __reserved[4];
+};
+
+struct audit_cap_data {
+	kernel_cap_t permitted;
+	kernel_cap_t inheritable;
+	union {
+		unsigned int fE;
+		kernel_cap_t effective;
+	};
+	kernel_cap_t ambient;
+	kuid_t rootid;
+};
+
+struct open_how {
+	__u64 flags;
+	__u64 mode;
+	__u64 resolve;
+};
+
+enum audit_state {
+	AUDIT_STATE_DISABLED = 0,
+	AUDIT_STATE_BUILD = 1,
+	AUDIT_STATE_RECORD = 2,
+};
+
+struct audit_names {
+	struct list_head list;
+	struct filename *name;
+	int name_len;
+	bool hidden;
+	unsigned long ino;
+	dev_t dev;
+	umode_t mode;
+	kuid_t uid;
+	kgid_t gid;
+	dev_t rdev;
+	u32 osid;
+	struct audit_cap_data fcap;
+	unsigned int fcap_ver;
+	unsigned char type;
+	bool should_free;
+};
+
+struct audit_proctitle {
+	int len;
+	char *value;
+};
+
+struct audit_aux_data;
+
+struct __kernel_sockaddr_storage;
+
+struct audit_tree_refs;
+
+struct audit_context {
+	int dummy;
+	enum {
+		AUDIT_CTX_UNUSED = 0,
+		AUDIT_CTX_SYSCALL = 1,
+		AUDIT_CTX_URING = 2,
+	} context;
+	enum audit_state state;
+	enum audit_state current_state;
+	unsigned int serial;
+	int major;
+	int uring_op;
+	struct timespec64 ctime;
+	unsigned long argv[4];
+	long return_code;
+	u64 prio;
+	int return_valid;
+	struct audit_names preallocated_names[5];
+	int name_count;
+	struct list_head names_list;
+	char *filterkey;
+	struct path pwd;
+	struct audit_aux_data *aux;
+	struct audit_aux_data *aux_pids;
+	struct __kernel_sockaddr_storage *sockaddr;
+	size_t sockaddr_len;
+	pid_t ppid;
+	kuid_t uid;
+	kuid_t euid;
+	kuid_t suid;
+	kuid_t fsuid;
+	kgid_t gid;
+	kgid_t egid;
+	kgid_t sgid;
+	kgid_t fsgid;
+	unsigned long personality;
+	int arch;
+	pid_t target_pid;
+	kuid_t target_auid;
+	kuid_t target_uid;
+	unsigned int target_sessionid;
+	u32 target_sid;
+	char target_comm[16];
+	struct audit_tree_refs *trees;
+	struct audit_tree_refs *first_trees;
+	struct list_head killed_trees;
+	int tree_count;
+	int type;
+	union {
+		struct {
+			int nargs;
+			long args[6];
+		} socketcall;
+		struct {
+			kuid_t uid;
+			kgid_t gid;
+			umode_t mode;
+			u32 osid;
+			int has_perm;
+			uid_t perm_uid;
+			gid_t perm_gid;
+			umode_t perm_mode;
+			unsigned long qbytes;
+		} ipc;
+		struct {
+			mqd_t mqdes;
+			struct mq_attr mqstat;
+		} mq_getsetattr;
+		struct {
+			mqd_t mqdes;
+			int sigev_signo;
+		} mq_notify;
+		struct {
+			mqd_t mqdes;
+			size_t msg_len;
+			unsigned int msg_prio;
+			struct timespec64 abs_timeout;
+		} mq_sendrecv;
+		struct {
+			int oflag;
+			umode_t mode;
+			struct mq_attr attr;
+		} mq_open;
+		struct {
+			pid_t pid;
+			struct audit_cap_data cap;
+		} capset;
+		struct {
+			int fd;
+			int flags;
+		} mmap;
+		struct open_how openat2;
+		struct {
+			int argc;
+		} execve;
+		struct {
+			char *name;
+		} module;
+		struct {
+			struct audit_ntp_data ntp_data;
+			struct timespec64 tk_injoffset;
+		} time;
+	};
+	int fds[2];
+	struct audit_proctitle proctitle;
+};
+
+struct __kernel_sockaddr_storage {
+	union {
+		struct {
+			__kernel_sa_family_t ss_family;
+			char __data[126];
+		};
+		void *__align;
+	};
+};
+
+struct audit_ctl_mutex {
+	struct mutex lock;
+	void *owner;
+};
+
+struct pernet_operations {
+	struct list_head list;
+	int (*init)(struct net *);
+	void (*pre_exit)(struct net *);
+	void (*exit)(struct net *);
+	void (*exit_batch)(struct list_head *);
+	unsigned int *id;
+	size_t size;
+};
+
+struct audit_features {
+	__u32 vers;
+	__u32 mask;
+	__u32 features;
+	__u32 lock;
+};
+
+enum skb_drop_reason {
+	SKB_NOT_DROPPED_YET = 0,
+	SKB_CONSUMED = 1,
+	SKB_DROP_REASON_NOT_SPECIFIED = 2,
+	SKB_DROP_REASON_NO_SOCKET = 3,
+	SKB_DROP_REASON_PKT_TOO_SMALL = 4,
+	SKB_DROP_REASON_TCP_CSUM = 5,
+	SKB_DROP_REASON_SOCKET_FILTER = 6,
+	SKB_DROP_REASON_UDP_CSUM = 7,
+	SKB_DROP_REASON_NETFILTER_DROP = 8,
+	SKB_DROP_REASON_OTHERHOST = 9,
+	SKB_DROP_REASON_IP_CSUM = 10,
+	SKB_DROP_REASON_IP_INHDR = 11,
+	SKB_DROP_REASON_IP_RPFILTER = 12,
+	SKB_DROP_REASON_UNICAST_IN_L2_MULTICAST = 13,
+	SKB_DROP_REASON_XFRM_POLICY = 14,
+	SKB_DROP_REASON_IP_NOPROTO = 15,
+	SKB_DROP_REASON_SOCKET_RCVBUFF = 16,
+	SKB_DROP_REASON_PROTO_MEM = 17,
+	SKB_DROP_REASON_TCP_MD5NOTFOUND = 18,
+	SKB_DROP_REASON_TCP_MD5UNEXPECTED = 19,
+	SKB_DROP_REASON_TCP_MD5FAILURE = 20,
+	SKB_DROP_REASON_SOCKET_BACKLOG = 21,
+	SKB_DROP_REASON_TCP_FLAGS = 22,
+	SKB_DROP_REASON_TCP_ZEROWINDOW = 23,
+	SKB_DROP_REASON_TCP_OLD_DATA = 24,
+	SKB_DROP_REASON_TCP_OVERWINDOW = 25,
+	SKB_DROP_REASON_TCP_OFOMERGE = 26,
+	SKB_DROP_REASON_TCP_RFC7323_PAWS = 27,
+	SKB_DROP_REASON_TCP_OLD_SEQUENCE = 28,
+	SKB_DROP_REASON_TCP_INVALID_SEQUENCE = 29,
+	SKB_DROP_REASON_TCP_RESET = 30,
+	SKB_DROP_REASON_TCP_INVALID_SYN = 31,
+	SKB_DROP_REASON_TCP_CLOSE = 32,
+	SKB_DROP_REASON_TCP_FASTOPEN = 33,
+	SKB_DROP_REASON_TCP_OLD_ACK = 34,
+	SKB_DROP_REASON_TCP_TOO_OLD_ACK = 35,
+	SKB_DROP_REASON_TCP_ACK_UNSENT_DATA = 36,
+	SKB_DROP_REASON_TCP_OFO_QUEUE_PRUNE = 37,
+	SKB_DROP_REASON_TCP_OFO_DROP = 38,
+	SKB_DROP_REASON_IP_OUTNOROUTES = 39,
+	SKB_DROP_REASON_BPF_CGROUP_EGRESS = 40,
+	SKB_DROP_REASON_IPV6DISABLED = 41,
+	SKB_DROP_REASON_NEIGH_CREATEFAIL = 42,
+	SKB_DROP_REASON_NEIGH_FAILED = 43,
+	SKB_DROP_REASON_NEIGH_QUEUEFULL = 44,
+	SKB_DROP_REASON_NEIGH_DEAD = 45,
+	SKB_DROP_REASON_TC_EGRESS = 46,
+	SKB_DROP_REASON_QDISC_DROP = 47,
+	SKB_DROP_REASON_CPU_BACKLOG = 48,
+	SKB_DROP_REASON_XDP = 49,
+	SKB_DROP_REASON_TC_INGRESS = 50,
+	SKB_DROP_REASON_UNHANDLED_PROTO = 51,
+	SKB_DROP_REASON_SKB_CSUM = 52,
+	SKB_DROP_REASON_SKB_GSO_SEG = 53,
+	SKB_DROP_REASON_SKB_UCOPY_FAULT = 54,
+	SKB_DROP_REASON_DEV_HDR = 55,
+	SKB_DROP_REASON_DEV_READY = 56,
+	SKB_DROP_REASON_FULL_RING = 57,
+	SKB_DROP_REASON_NOMEM = 58,
+	SKB_DROP_REASON_HDR_TRUNC = 59,
+	SKB_DROP_REASON_TAP_FILTER = 60,
+	SKB_DROP_REASON_TAP_TXFILTER = 61,
+	SKB_DROP_REASON_ICMP_CSUM = 62,
+	SKB_DROP_REASON_INVALID_PROTO = 63,
+	SKB_DROP_REASON_IP_INADDRERRORS = 64,
+	SKB_DROP_REASON_IP_INNOROUTES = 65,
+	SKB_DROP_REASON_PKT_TOO_BIG = 66,
+	SKB_DROP_REASON_DUP_FRAG = 67,
+	SKB_DROP_REASON_FRAG_REASM_TIMEOUT = 68,
+	SKB_DROP_REASON_FRAG_TOO_FAR = 69,
+	SKB_DROP_REASON_TCP_MINTTL = 70,
+	SKB_DROP_REASON_IPV6_BAD_EXTHDR = 71,
+	SKB_DROP_REASON_IPV6_NDISC_FRAG = 72,
+	SKB_DROP_REASON_IPV6_NDISC_HOP_LIMIT = 73,
+	SKB_DROP_REASON_IPV6_NDISC_BAD_CODE = 74,
+	SKB_DROP_REASON_IPV6_NDISC_BAD_OPTIONS = 75,
+	SKB_DROP_REASON_IPV6_NDISC_NS_OTHERHOST = 76,
+	SKB_DROP_REASON_QUEUE_PURGE = 77,
+	SKB_DROP_REASON_MAX = 78,
+	SKB_DROP_REASON_SUBSYS_MASK = 4294901760,
+};
+
+enum audit_nlgrps {
+	AUDIT_NLGRP_NONE = 0,
+	AUDIT_NLGRP_READLOG = 1,
+	__AUDIT_NLGRP_MAX = 2,
+};
+
+struct scm_creds {
+	u32 pid;
+	kuid_t uid;
+	kgid_t gid;
+};
+
+struct netlink_skb_parms {
+	struct scm_creds creds;
+	__u32 portid;
+	__u32 dst_group;
+	__u32 flags;
+	struct sock *sk;
+	bool nsid_is_set;
+	int nsid;
+};
+
+struct audit_reply {
+	__u32 portid;
+	struct net *net;
+	struct sk_buff *skb;
+};
+
+struct audit_net {
+	struct sock *sk;
+};
+
+struct audit_buffer {
+	struct sk_buff *skb;
+	struct audit_context *ctx;
+	gfp_t gfp_mask;
+};
+
+struct netlink_kernel_cfg {
+	unsigned int groups;
+	unsigned int flags;
+	void (*input)(struct sk_buff *);
+	struct mutex *cb_mutex;
+	int (*bind)(struct net *, int);
+	void (*unbind)(struct net *, int);
+	void (*release)(struct sock *, unsigned long *);
+};
+
+struct audit_sig_info {
+	uid_t uid;
+	pid_t pid;
+	char ctx[0];
+};
+
+struct audit_tty_status {
+	__u32 enabled;
+	__u32 log_passwd;
+};
+
+struct audit_status {
+	__u32 mask;
+	__u32 enabled;
+	__u32 failure;
+	__u32 pid;
+	__u32 rate_limit;
+	__u32 backlog_limit;
+	__u32 lost;
+	__u32 backlog;
+	union {
+		__u32 version;
+		__u32 feature_bitmap;
+	};
+	__u32 backlog_wait_time;
+	__u32 backlog_wait_time_actual;
+};
+
+struct audit_netlink_list {
+	__u32 portid;
+	struct net *net;
+	struct sk_buff_head q;
+};
+
+enum {
+	Audit_equal = 0,
+	Audit_not_equal = 1,
+	Audit_bitmask = 2,
+	Audit_bittest = 3,
+	Audit_lt = 4,
+	Audit_gt = 5,
+	Audit_le = 6,
+	Audit_ge = 7,
+	Audit_bad = 8,
+};
+
+struct audit_field;
+
+struct audit_watch;
+
+struct audit_tree;
+
+struct audit_fsnotify_mark;
+
+struct audit_krule {
+	u32 pflags;
+	u32 flags;
+	u32 listnr;
+	u32 action;
+	u32 mask[64];
+	u32 buflen;
+	u32 field_count;
+	char *filterkey;
+	struct audit_field *fields;
+	struct audit_field *arch_f;
+	struct audit_field *inode_f;
+	struct audit_watch *watch;
+	struct audit_tree *tree;
+	struct audit_fsnotify_mark *exe;
+	struct list_head rlist;
+	struct list_head list;
+	u64 prio;
+};
+
+struct audit_entry {
+	struct list_head list;
+	struct callback_head rcu;
+	struct audit_krule rule;
+};
+
+struct audit_field {
+	u32 type;
+	union {
+		u32 val;
+		kuid_t uid;
+		kgid_t gid;
+		struct {
+			char *lsm_str;
+			void *lsm_rule;
+		};
+	};
+	u32 op;
+};
+
+struct audit_rule_data {
+	__u32 flags;
+	__u32 action;
+	__u32 field_count;
+	__u32 mask[64];
+	__u32 fields[64];
+	__u32 values[64];
+	__u32 fieldflags[64];
+	__u32 buflen;
+	char buf[0];
+};
+
+enum audit_nfcfgop {
+	AUDIT_XT_OP_REGISTER = 0,
+	AUDIT_XT_OP_REPLACE = 1,
+	AUDIT_XT_OP_UNREGISTER = 2,
+	AUDIT_NFT_OP_TABLE_REGISTER = 3,
+	AUDIT_NFT_OP_TABLE_UNREGISTER = 4,
+	AUDIT_NFT_OP_CHAIN_REGISTER = 5,
+	AUDIT_NFT_OP_CHAIN_UNREGISTER = 6,
+	AUDIT_NFT_OP_RULE_REGISTER = 7,
+	AUDIT_NFT_OP_RULE_UNREGISTER = 8,
+	AUDIT_NFT_OP_SET_REGISTER = 9,
+	AUDIT_NFT_OP_SET_UNREGISTER = 10,
+	AUDIT_NFT_OP_SETELEM_REGISTER = 11,
+	AUDIT_NFT_OP_SETELEM_UNREGISTER = 12,
+	AUDIT_NFT_OP_GEN_REGISTER = 13,
+	AUDIT_NFT_OP_OBJ_REGISTER = 14,
+	AUDIT_NFT_OP_OBJ_UNREGISTER = 15,
+	AUDIT_NFT_OP_OBJ_RESET = 16,
+	AUDIT_NFT_OP_FLOWTABLE_REGISTER = 17,
+	AUDIT_NFT_OP_FLOWTABLE_UNREGISTER = 18,
+	AUDIT_NFT_OP_SETELEM_RESET = 19,
+	AUDIT_NFT_OP_RULE_RESET = 20,
+	AUDIT_NFT_OP_INVALID = 21,
+};
+
+struct audit_nfcfgop_tab {
+	enum audit_nfcfgop op;
+	const char *s;
+};
+
+struct audit_aux_data {
+	struct audit_aux_data *next;
+	int type;
+};
+
+struct audit_chunk;
+
+struct audit_tree_refs {
+	struct audit_tree_refs *next;
+	struct audit_chunk *c[31];
+};
+
+enum auditsc_class_t {
+	AUDITSC_NATIVE = 0,
+	AUDITSC_COMPAT = 1,
+	AUDITSC_OPEN = 2,
+	AUDITSC_OPENAT = 3,
+	AUDITSC_SOCKETCALL = 4,
+	AUDITSC_EXECVE = 5,
+	AUDITSC_OPENAT2 = 6,
+	AUDITSC_NVALS = 7,
+};
+
+struct cpu_vfs_cap_data {
+	__u32 magic_etc;
+	kuid_t rootid;
+	kernel_cap_t permitted;
+	kernel_cap_t inheritable;
+};
+
+typedef int __kernel_key_t;
+
+typedef __kernel_key_t key_t;
+
+struct kern_ipc_perm {
+	spinlock_t lock;
+	bool deleted;
+	int id;
+	key_t key;
+	kuid_t uid;
+	kgid_t gid;
+	kuid_t cuid;
+	kgid_t cgid;
+	umode_t mode;
+	unsigned long seq;
+	void *security;
+	struct rhash_head khtnode;
+	struct callback_head rcu;
+	refcount_t refcount;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct audit_aux_data_bprm_fcaps {
+	struct audit_aux_data d;
+	struct audit_cap_data fcap;
+	unsigned int fcap_ver;
+	struct audit_cap_data old_pcap;
+	struct audit_cap_data new_pcap;
+};
+
+struct audit_aux_data_pids {
+	struct audit_aux_data d;
+	pid_t target_pid[16];
+	kuid_t target_auid[16];
+	kuid_t target_uid[16];
+	unsigned int target_sessionid[16];
+	u32 target_sid[16];
+	char target_comm[256];
+	int pid_count;
+};
+
+struct fanotify_response_info_header {
+	__u8 type;
+	__u8 pad;
+	__u16 len;
+};
+
+struct fanotify_response_info_audit_rule {
+	struct fanotify_response_info_header hdr;
+	__u32 rule_number;
+	__u32 subj_trust;
+	__u32 obj_trust;
+};
+
+struct inotify_group_private_data {
+	spinlock_t idr_lock;
+	struct idr idr;
+	struct ucounts *ucounts;
+};
+
+struct fsnotify_ops;
+
+struct fsnotify_event;
+
+struct fsnotify_group {
+	const struct fsnotify_ops *ops;
+	refcount_t refcnt;
+	spinlock_t notification_lock;
+	struct list_head notification_list;
+	wait_queue_head_t notification_waitq;
+	unsigned int q_len;
+	unsigned int max_events;
+	unsigned int priority;
+	bool shutdown;
+	int flags;
+	unsigned int owner_flags;
+	struct mutex mark_mutex;
+	atomic_t user_waits;
+	struct list_head marks_list;
+	struct fasync_struct *fsn_fa;
+	struct fsnotify_event *overflow_event;
+	struct mem_cgroup *memcg;
+	union {
+		void *private;
+		struct inotify_group_private_data inotify_data;
+	};
+};
+
+struct fsnotify_iter_info;
+
+struct fsnotify_mark;
+
+struct fsnotify_ops {
+	int (*handle_event)(struct fsnotify_group *, u32, const void *, int, struct inode *, const struct qstr *, u32, struct fsnotify_iter_info *);
+	int (*handle_inode_event)(struct fsnotify_mark *, u32, struct inode *, struct inode *, const struct qstr *, u32);
+	void (*free_group_priv)(struct fsnotify_group *);
+	void (*freeing_mark)(struct fsnotify_mark *, struct fsnotify_group *);
+	void (*free_event)(struct fsnotify_group *, struct fsnotify_event *);
+	void (*free_mark)(struct fsnotify_mark *);
+};
+
+struct fsnotify_iter_info {
+	struct fsnotify_mark *marks[5];
+	struct fsnotify_group *current_group;
+	unsigned int report_mask;
+	int srcu_idx;
+};
+
+struct fsnotify_mark {
+	__u32 mask;
+	refcount_t refcnt;
+	struct fsnotify_group *group;
+	struct list_head g_list;
+	spinlock_t lock;
+	struct hlist_node obj_list;
+	struct fsnotify_mark_connector *connector;
+	__u32 ignore_mask;
+	unsigned int flags;
+};
+
+struct fsnotify_event {
+	struct list_head list;
+};
+
+enum fsnotify_obj_type {
+	FSNOTIFY_OBJ_TYPE_ANY = -1,
+	FSNOTIFY_OBJ_TYPE_INODE = 0,
+	FSNOTIFY_OBJ_TYPE_VFSMOUNT = 1,
+	FSNOTIFY_OBJ_TYPE_SB = 2,
+	FSNOTIFY_OBJ_TYPE_COUNT = 3,
+	FSNOTIFY_OBJ_TYPE_DETACHED = 3,
+};
+
+struct audit_parent {
+	struct list_head watches;
+	struct fsnotify_mark mark;
+};
+
+struct audit_watch {
+	refcount_t count;
+	dev_t dev;
+	char *path;
+	unsigned long ino;
+	struct audit_parent *parent;
+	struct list_head wlist;
+	struct list_head rules;
+};
+
+struct audit_fsnotify_mark {
+	dev_t dev;
+	unsigned long ino;
+	char *path;
+	struct fsnotify_mark mark;
+	struct audit_krule *rule;
+};
+
+enum {
+	HASH_SIZE = 128,
+};
+
+struct audit_node {
+	struct list_head list;
+	struct audit_tree *owner;
+	unsigned int index;
+};
+
+struct audit_chunk {
+	struct list_head hash;
+	unsigned long key;
+	struct fsnotify_mark *mark;
+	struct list_head trees;
+	int count;
+	atomic_long_t refs;
+	struct callback_head head;
+	struct audit_node owners[0];
+};
+
+struct audit_tree {
+	refcount_t count;
+	int goner;
+	struct audit_chunk *root;
+	struct list_head chunks;
+	struct list_head rules;
+	struct list_head list;
+	struct list_head same_root;
+	struct callback_head head;
+	char pathname[0];
+};
+
+struct audit_tree_mark {
+	struct fsnotify_mark mark;
+	struct audit_chunk *chunk;
+};
+
+enum kprobe_slot_state {
+	SLOT_CLEAN = 0,
+	SLOT_DIRTY = 1,
+	SLOT_USED = 2,
+};
+
+enum perf_record_ksymbol_type {
+	PERF_RECORD_KSYMBOL_TYPE_UNKNOWN = 0,
+	PERF_RECORD_KSYMBOL_TYPE_BPF = 1,
+	PERF_RECORD_KSYMBOL_TYPE_OOL = 2,
+	PERF_RECORD_KSYMBOL_TYPE_MAX = 3,
+};
+
+struct kprobe_insn_page {
+	struct list_head list;
+	kprobe_opcode_t *insns;
+	struct kprobe_insn_cache *cache;
+	int nused;
+	int ngarbage;
+	char slot_used[0];
+};
+
+struct kprobe_blacklist_entry {
+	struct list_head list;
+	unsigned long start_addr;
+	unsigned long end_addr;
+};
+
+enum stats_per_group {
+	STATS_SYSTEM = 0,
+	STATS_SOFTIRQ = 1,
+	STATS_HARDIRQ = 2,
+	STATS_IDLE = 3,
+	NUM_STATS_PER_GROUP = 4,
+};
+
+struct action_cache {
+	unsigned long allow_native[8];
+	unsigned long allow_compat[8];
+};
+
+struct notification;
+
+struct seccomp_filter {
+	refcount_t refs;
+	refcount_t users;
+	bool log;
+	bool wait_killable_recv;
+	struct action_cache cache;
+	struct seccomp_filter *prev;
+	struct bpf_prog *prog;
+	struct notification *notif;
+	struct mutex notify_lock;
+	wait_queue_head_t wqh;
+};
+
+struct notification {
+	atomic_t requests;
+	u32 flags;
+	u64 next_id;
+	struct list_head notifications;
+};
+
+struct seccomp_log_name {
+	u32 log;
+	const char *name;
+};
+
+enum notify_state {
+	SECCOMP_NOTIFY_INIT = 0,
+	SECCOMP_NOTIFY_SENT = 1,
+	SECCOMP_NOTIFY_REPLIED = 2,
+};
+
+struct seccomp_kaddfd {
+	struct file *file;
+	int fd;
+	unsigned int flags;
+	__u32 ioctl_flags;
+	union {
+		bool setfd;
+		int ret;
+	};
+	struct completion completion;
+	struct list_head list;
+};
+
+struct seccomp_knotif {
+	struct task_struct *task;
+	u64 id;
+	const struct seccomp_data *data;
+	enum notify_state state;
+	int error;
+	long val;
+	u32 flags;
+	struct completion ready;
+	struct list_head list;
+	struct list_head addfd;
+};
+
+typedef unsigned int (*bpf_dispatcher_fn)(const void *, const struct bpf_insn *, unsigned int (*)(const void *, const struct bpf_insn *));
+
+typedef unsigned int (*bpf_func_t)(const void *, const struct bpf_insn *);
+
+struct seccomp_notif_sizes {
+	__u16 seccomp_notif;
+	__u16 seccomp_notif_resp;
+	__u16 seccomp_data;
+};
+
+struct sock_fprog {
+	unsigned short len;
+	struct sock_filter __attribute__((btf_type_tag("user"))) *filter;
+};
+
+struct compat_sock_fprog {
+	u16 len;
+	compat_uptr_t filter;
+};
+
+typedef int (*bpf_aux_classic_check_t)(struct sock_filter *, unsigned int);
+
+struct seccomp_notif {
+	__u64 id;
+	__u32 pid;
+	__u32 flags;
+	struct seccomp_data data;
+};
+
+struct seccomp_notif_resp {
+	__u64 id;
+	__s64 val;
+	__s32 error;
+	__u32 flags;
+};
+
+struct seccomp_notif_addfd {
+	__u64 id;
+	__u32 flags;
+	__u32 srcfd;
+	__u32 newfd;
+	__u32 newfd_flags;
+};
+
+struct listener_list {
+	struct rw_semaphore sem;
+	struct list_head list;
+};
+
+struct genl_split_ops;
+
+struct genl_info;
+
+struct genl_ops;
+
+struct genl_small_ops;
+
+struct genl_multicast_group;
+
+struct genl_family {
+	unsigned int hdrsize;
+	char name[16];
+	unsigned int version;
+	unsigned int maxattr;
+	u8 netnsok: 1;
+	u8 parallel_ops: 1;
+	u8 n_ops;
+	u8 n_small_ops;
+	u8 n_split_ops;
+	u8 n_mcgrps;
+	u8 resv_start_op;
+	const struct nla_policy *policy;
+	int (*pre_doit)(const struct genl_split_ops *, struct sk_buff *, struct genl_info *);
+	void (*post_doit)(const struct genl_split_ops *, struct sk_buff *, struct genl_info *);
+	const struct genl_ops *ops;
+	const struct genl_small_ops *small_ops;
+	const struct genl_split_ops *split_ops;
+	const struct genl_multicast_group *mcgrps;
+	struct module *module;
+	int id;
+	unsigned int mcgrp_offset;
+	u64 android_kabi_reserved1;
+};
+
+struct genl_split_ops {
+	union {
+		struct {
+			int (*pre_doit)(const struct genl_split_ops *, struct sk_buff *, struct genl_info *);
+			int (*doit)(struct sk_buff *, struct genl_info *);
+			void (*post_doit)(const struct genl_split_ops *, struct sk_buff *, struct genl_info *);
+		};
+		struct {
+			int (*start)(struct netlink_callback *);
+			int (*dumpit)(struct sk_buff *, struct netlink_callback *);
+			int (*done)(struct netlink_callback *);
+		};
+	};
+	const struct nla_policy *policy;
+	unsigned int maxattr;
+	u8 cmd;
+	u8 internal_flags;
+	u8 flags;
+	u8 validate;
+};
+
+struct genlmsghdr;
+
+struct genl_info {
+	u32 snd_seq;
+	u32 snd_portid;
+	const struct genl_family *family;
+	const struct nlmsghdr *nlhdr;
+	struct genlmsghdr *genlhdr;
+	struct nlattr **attrs;
+	possible_net_t _net;
+	void *user_ptr[2];
+	struct netlink_ext_ack *extack;
+};
+
+struct genlmsghdr {
+	__u8 cmd;
+	__u8 version;
+	__u16 reserved;
+};
+
+struct genl_ops {
+	int (*doit)(struct sk_buff *, struct genl_info *);
+	int (*start)(struct netlink_callback *);
+	int (*dumpit)(struct sk_buff *, struct netlink_callback *);
+	int (*done)(struct netlink_callback *);
+	const struct nla_policy *policy;
+	unsigned int maxattr;
+	u8 cmd;
+	u8 internal_flags;
+	u8 flags;
+	u8 validate;
+	u64 android_kabi_reserved1;
+};
+
+struct genl_small_ops {
+	int (*doit)(struct sk_buff *, struct genl_info *);
+	int (*dumpit)(struct sk_buff *, struct netlink_callback *);
+	u8 cmd;
+	u8 internal_flags;
+	u8 flags;
+	u8 validate;
+};
+
+struct genl_multicast_group {
+	char name[16];
+	u8 flags;
+	u8 cap_sys_admin: 1;
+};
+
+enum {
+	TASKSTATS_CMD_UNSPEC = 0,
+	TASKSTATS_CMD_GET = 1,
+	TASKSTATS_CMD_NEW = 2,
+	__TASKSTATS_CMD_MAX = 3,
+};
+
+enum {
+	TASKSTATS_TYPE_UNSPEC = 0,
+	TASKSTATS_TYPE_PID = 1,
+	TASKSTATS_TYPE_TGID = 2,
+	TASKSTATS_TYPE_STATS = 3,
+	TASKSTATS_TYPE_AGGR_PID = 4,
+	TASKSTATS_TYPE_AGGR_TGID = 5,
+	TASKSTATS_TYPE_NULL = 6,
+	__TASKSTATS_TYPE_MAX = 7,
+};
+
+enum {
+	TASKSTATS_CMD_ATTR_UNSPEC = 0,
+	TASKSTATS_CMD_ATTR_PID = 1,
+	TASKSTATS_CMD_ATTR_TGID = 2,
+	TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 3,
+	TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 4,
+	__TASKSTATS_CMD_ATTR_MAX = 5,
+};
+
+enum actions {
+	REGISTER = 0,
+	DEREGISTER = 1,
+	CPU_DONT_CARE = 2,
+};
+
+enum {
+	CGROUPSTATS_CMD_ATTR_UNSPEC = 0,
+	CGROUPSTATS_CMD_ATTR_FD = 1,
+	__CGROUPSTATS_CMD_ATTR_MAX = 2,
+};
+
+enum {
+	CGROUPSTATS_CMD_UNSPEC = 3,
+	CGROUPSTATS_CMD_GET = 4,
+	CGROUPSTATS_CMD_NEW = 5,
+	__CGROUPSTATS_CMD_MAX = 6,
+};
+
+enum {
+	CGROUPSTATS_TYPE_UNSPEC = 0,
+	CGROUPSTATS_TYPE_CGROUP_STATS = 1,
+	__CGROUPSTATS_TYPE_MAX = 2,
+};
+
+struct listener {
+	struct list_head list;
+	pid_t pid;
+	char valid;
+};
+
+struct tp_transition_snapshot {
+	unsigned long rcu;
+	unsigned long srcu;
+	bool ongoing;
+};
+
+enum tp_func_state {
+	TP_FUNC_0 = 0,
+	TP_FUNC_1 = 1,
+	TP_FUNC_2 = 2,
+	TP_FUNC_N = 3,
+};
+
+enum tp_transition_sync {
+	TP_TRANSITION_SYNC_1_0_1 = 0,
+	TP_TRANSITION_SYNC_N_2_1 = 1,
+	_NR_TP_TRANSITION_SYNC = 2,
+};
+
+struct tp_module {
+	struct list_head list;
+	struct module *mod;
+};
+
+struct tp_probes {
+	struct callback_head rcu;
+	struct tracepoint_func probes[0];
+};
+
+enum {
+	RB_LEN_TIME_EXTEND = 8,
+	RB_LEN_TIME_STAMP = 8,
+};
+
+enum {
+	RB_CTX_TRANSITION = 0,
+	RB_CTX_NMI = 1,
+	RB_CTX_IRQ = 2,
+	RB_CTX_SOFTIRQ = 3,
+	RB_CTX_NORMAL = 4,
+	RB_CTX_MAX = 5,
+};
+
+enum {
+	RB_ADD_STAMP_NONE = 0,
+	RB_ADD_STAMP_EXTEND = 2,
+	RB_ADD_STAMP_ABSOLUTE = 4,
+	RB_ADD_STAMP_FORCE = 8,
+};
+
+struct buffer_page {
+	struct list_head list;
+	local_t write;
+	unsigned int read;
+	local_t entries;
+	unsigned long real_end;
+	struct buffer_data_page *page;
+	u32 id;
+};
+
+struct ring_buffer_per_cpu;
+
+struct ring_buffer_iter {
+	struct ring_buffer_per_cpu *cpu_buffer;
+	unsigned long head;
+	unsigned long next_event;
+	struct buffer_page *head_page;
+	struct buffer_page *cache_reader_page;
+	unsigned long cache_read;
+	unsigned long cache_pages_removed;
+	u64 read_stamp;
+	u64 page_stamp;
+	struct ring_buffer_event *event;
+	int missed_events;
+};
+
+struct rb_time_struct {
+	local64_t time;
+};
+
+typedef struct rb_time_struct rb_time_t;
+
+struct rb_irq_work {
+	struct irq_work work;
+	wait_queue_head_t waiters;
+	wait_queue_head_t full_waiters;
+	bool waiters_pending;
+	bool full_waiters_pending;
+	bool wakeup_full;
+};
+
+struct ring_buffer_per_cpu {
+	int cpu;
+	atomic_t record_disabled;
+	atomic_t resize_disabled;
+	struct trace_buffer *buffer;
+	raw_spinlock_t reader_lock;
+	arch_spinlock_t lock;
+	struct lock_class_key lock_key;
+	struct buffer_data_page *free_page;
+	unsigned long nr_pages;
+	unsigned int current_context;
+	struct list_head *pages;
+	struct buffer_page *head_page;
+	struct buffer_page *tail_page;
+	struct buffer_page *commit_page;
+	struct buffer_page *reader_page;
+	unsigned long lost_events;
+	unsigned long last_overrun;
+	unsigned long nest;
+	local_t entries_bytes;
+	local_t entries;
+	local_t overrun;
+	local_t commit_overrun;
+	local_t dropped_events;
+	local_t committing;
+	local_t commits;
+	local_t pages_touched;
+	local_t pages_lost;
+	local_t pages_read;
+	long last_pages_touch;
+	size_t shortest_full;
+	unsigned long read;
+	unsigned long read_bytes;
+	rb_time_t write_stamp;
+	rb_time_t before_stamp;
+	u64 event_stamp[5];
+	u64 read_stamp;
+	unsigned long pages_removed;
+	int mapped;
+	struct mutex mapping_lock;
+	unsigned long *page_ids;
+	struct ring_buffer_meta *meta_page;
+	struct ring_buffer_writer *writer;
+	long nr_pages_to_update;
+	struct list_head new_pages;
+	struct work_struct update_pages_work;
+	struct completion update_done;
+	struct rb_irq_work irq_work;
+};
+
+struct trace_buffer {
+	unsigned int flags;
+	int cpus;
+	atomic_t record_disabled;
+	atomic_t resizing;
+	cpumask_var_t cpumask;
+	struct lock_class_key *reader_lock_key;
+	struct mutex mutex;
+	struct ring_buffer_per_cpu **buffers;
+	struct ring_buffer_writer *writer;
+	struct hlist_node node;
+	u64 (*clock)();
+	struct rb_irq_work irq_work;
+	bool time_stamp_abs;
+};
+
+struct rb_event_info {
+	u64 ts;
+	u64 delta;
+	u64 before;
+	u64 after;
+	unsigned long length;
+	struct buffer_page *tail_page;
+	int add_timestamp;
+};
+
+typedef bool (*ring_buffer_cond_fn)(void *);
+
+struct trace_array_cpu;
+
+struct array_buffer {
+	struct trace_array *tr;
+	struct trace_buffer *buffer;
+	struct trace_array_cpu __attribute__((btf_type_tag("percpu"))) *data;
+	u64 time_start;
+	int cpu;
+};
+
+struct trace_pid_list;
+
+struct trace_options;
+
+struct trace_func_repeats;
+
+struct trace_array {
+	struct list_head list;
+	char *name;
+	struct array_buffer array_buffer;
+	struct trace_pid_list __attribute__((btf_type_tag("rcu"))) *filtered_pids;
+	struct trace_pid_list __attribute__((btf_type_tag("rcu"))) *filtered_no_pids;
+	arch_spinlock_t max_lock;
+	int buffer_disabled;
+	int stop_count;
+	int clock_id;
+	int nr_topts;
+	bool clear_trace;
+	int buffer_percent;
+	unsigned int n_err_log_entries;
+	struct tracer *current_trace;
+	unsigned int trace_flags;
+	unsigned char trace_flags_index[32];
+	unsigned int flags;
+	raw_spinlock_t start_lock;
+	struct list_head err_log;
+	struct dentry *dir;
+	struct dentry *options;
+	struct dentry *percpu_dir;
+	struct eventfs_inode *event_dir;
+	struct trace_options *topts;
+	struct list_head systems;
+	struct list_head events;
+	struct trace_event_file *trace_marker_file;
+	cpumask_var_t tracing_cpumask;
+	cpumask_var_t pipe_cpumask;
+	int ref;
+	int trace_ref;
+	int no_filter_buffering_ref;
+	struct list_head hist_vars;
+	struct trace_func_repeats __attribute__((btf_type_tag("percpu"))) *last_func_repeats;
+};
+
+struct trace_array_cpu {
+	atomic_t disabled;
+	void *buffer_page;
+	unsigned long entries;
+	unsigned long saved_latency;
+	unsigned long critical_start;
+	unsigned long critical_end;
+	unsigned long critical_sequence;
+	unsigned long nice;
+	unsigned long policy;
+	unsigned long rt_priority;
+	unsigned long skipped_entries;
+	u64 preempt_timestamp;
+	pid_t pid;
+	kuid_t uid;
+	char comm[16];
+	bool ignore_pid;
+};
+
+union upper_chunk;
+
+union lower_chunk;
+
+struct trace_pid_list {
+	raw_spinlock_t lock;
+	struct irq_work refill_irqwork;
+	union upper_chunk *upper[256];
+	union upper_chunk *upper_list;
+	union lower_chunk *lower_list;
+	int free_upper_chunks;
+	int free_lower_chunks;
+};
+
+union upper_chunk {
+	union upper_chunk *next;
+	union lower_chunk *data[256];
+};
+
+union lower_chunk {
+	union lower_chunk *next;
+	unsigned long data[256];
+};
+
+struct tracer_flags;
+
+struct tracer {
+	const char *name;
+	int (*init)(struct trace_array *);
+	void (*reset)(struct trace_array *);
+	void (*start)(struct trace_array *);
+	void (*stop)(struct trace_array *);
+	int (*update_thresh)(struct trace_array *);
+	void (*open)(struct trace_iterator *);
+	void (*pipe_open)(struct trace_iterator *);
+	void (*close)(struct trace_iterator *);
+	void (*pipe_close)(struct trace_iterator *);
+	ssize_t (*read)(struct trace_iterator *, struct file *, char __attribute__((btf_type_tag("user"))) *, size_t, loff_t *);
+	ssize_t (*splice_read)(struct trace_iterator *, struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int);
+	void (*print_header)(struct seq_file *);
+	enum print_line_t (*print_line)(struct trace_iterator *);
+	int (*set_flag)(struct trace_array *, u32, u32, int);
+	int (*flag_changed)(struct trace_array *, u32, int);
+	struct tracer *next;
+	struct tracer_flags *flags;
+	int enabled;
+	bool print_max;
+	bool allow_instances;
+	bool noboot;
+};
+
+struct tracer_opt;
+
+struct tracer_flags {
+	u32 val;
+	struct tracer_opt *opts;
+	struct tracer *trace;
+};
+
+struct tracer_opt {
+	const char *name;
+	u32 bit;
+};
+
+struct trace_option_dentry;
+
+struct trace_options {
+	struct tracer *tracer;
+	struct trace_option_dentry *topts;
+};
+
+struct trace_option_dentry {
+	struct tracer_opt *opt;
+	struct tracer_flags *flags;
+	struct trace_array *tr;
+	struct dentry *entry;
+};
+
+struct filter_pred;
+
+struct prog_entry {
+	int target;
+	int when_to_branch;
+	struct filter_pred *pred;
+};
+
+struct event_subsystem;
+
+struct trace_subsystem_dir {
+	struct list_head list;
+	struct event_subsystem *subsystem;
+	struct trace_array *tr;
+	struct eventfs_inode *ei;
+	int ref_count;
+	int nr_events;
+};
+
+struct event_subsystem {
+	struct list_head list;
+	const char *name;
+	struct event_filter *filter;
+	int ref_count;
+};
+
+struct trace_func_repeats {
+	unsigned long ip;
+	unsigned long parent_ip;
+	unsigned long count;
+	u64 ts_last_call;
+};
+
+struct trace_export {
+	struct trace_export __attribute__((btf_type_tag("rcu"))) *next;
+	void (*write)(struct trace_export *, const void *, unsigned int);
+	int flags;
+};
+
+struct saved_cmdlines_buffer {
+	unsigned int map_pid_to_cmdline[32769];
+	unsigned int *map_cmdline_to_pid;
+	unsigned int cmdline_num;
+	int cmdline_idx;
+	char saved_cmdlines[0];
+};
+
+struct ftrace_stack {
+	unsigned long calls[1024];
+};
+
+struct ftrace_stacks {
+	struct ftrace_stack stacks[4];
+};
+
+struct trace_buffer_struct {
+	int nesting;
+	char buffer[4096];
+};
+
+enum trace_iterator_flags {
+	TRACE_ITER_PRINT_PARENT = 1,
+	TRACE_ITER_SYM_OFFSET = 2,
+	TRACE_ITER_SYM_ADDR = 4,
+	TRACE_ITER_VERBOSE = 8,
+	TRACE_ITER_RAW = 16,
+	TRACE_ITER_HEX = 32,
+	TRACE_ITER_BIN = 64,
+	TRACE_ITER_BLOCK = 128,
+	TRACE_ITER_FIELDS = 256,
+	TRACE_ITER_PRINTK = 512,
+	TRACE_ITER_ANNOTATE = 1024,
+	TRACE_ITER_USERSTACKTRACE = 2048,
+	TRACE_ITER_SYM_USEROBJ = 4096,
+	TRACE_ITER_PRINTK_MSGONLY = 8192,
+	TRACE_ITER_CONTEXT_INFO = 16384,
+	TRACE_ITER_LATENCY_FMT = 32768,
+	TRACE_ITER_RECORD_CMD = 65536,
+	TRACE_ITER_RECORD_TGID = 131072,
+	TRACE_ITER_OVERWRITE = 262144,
+	TRACE_ITER_STOP_ON_FREE = 524288,
+	TRACE_ITER_IRQ_INFO = 1048576,
+	TRACE_ITER_MARKERS = 2097152,
+	TRACE_ITER_EVENT_FORK = 4194304,
+	TRACE_ITER_PAUSE_ON_TRACE = 8388608,
+	TRACE_ITER_HASH_PTR = 16777216,
+	TRACE_ITER_STACKTRACE = 33554432,
+};
+
+enum trace_type {
+	__TRACE_FIRST_TYPE = 0,
+	TRACE_FN = 1,
+	TRACE_CTX = 2,
+	TRACE_WAKE = 3,
+	TRACE_STACK = 4,
+	TRACE_PRINT = 5,
+	TRACE_BPRINT = 6,
+	TRACE_MMIO_RW = 7,
+	TRACE_MMIO_MAP = 8,
+	TRACE_BRANCH = 9,
+	TRACE_GRAPH_RET = 10,
+	TRACE_GRAPH_ENT = 11,
+	TRACE_USER_STACK = 12,
+	TRACE_BLK = 13,
+	TRACE_BPUTS = 14,
+	TRACE_HWLAT = 15,
+	TRACE_OSNOISE = 16,
+	TRACE_TIMERLAT = 17,
+	TRACE_RAW_DATA = 18,
+	TRACE_FUNC_REPEATS = 19,
+	__TRACE_LAST_TYPE = 20,
+};
+
+enum trace_flag_type {
+	TRACE_FLAG_IRQS_OFF = 1,
+	TRACE_FLAG_IRQS_NOSUPPORT = 2,
+	TRACE_FLAG_NEED_RESCHED = 4,
+	TRACE_FLAG_HARDIRQ = 8,
+	TRACE_FLAG_SOFTIRQ = 16,
+	TRACE_FLAG_PREEMPT_RESCHED = 32,
+	TRACE_FLAG_NMI = 64,
+	TRACE_FLAG_BH_OFF = 128,
+};
+
+enum event_trigger_type {
+	ETT_NONE = 0,
+	ETT_TRACE_ONOFF = 1,
+	ETT_SNAPSHOT = 2,
+	ETT_STACKTRACE = 4,
+	ETT_EVENT_ENABLE = 8,
+	ETT_EVENT_HIST = 16,
+	ETT_HIST_ENABLE = 32,
+	ETT_EVENT_EPROBE = 64,
+};
+
+enum trace_iter_flags {
+	TRACE_FILE_LAT_FMT = 1,
+	TRACE_FILE_ANNOTATE = 2,
+	TRACE_FILE_TIME_IN_NS = 4,
+};
+
+enum {
+	EVENT_FILE_FL_ENABLED_BIT = 0,
+	EVENT_FILE_FL_RECORDED_CMD_BIT = 1,
+	EVENT_FILE_FL_RECORDED_TGID_BIT = 2,
+	EVENT_FILE_FL_FILTERED_BIT = 3,
+	EVENT_FILE_FL_NO_SET_FILTER_BIT = 4,
+	EVENT_FILE_FL_SOFT_MODE_BIT = 5,
+	EVENT_FILE_FL_SOFT_DISABLED_BIT = 6,
+	EVENT_FILE_FL_TRIGGER_MODE_BIT = 7,
+	EVENT_FILE_FL_TRIGGER_COND_BIT = 8,
+	EVENT_FILE_FL_PID_FILTER_BIT = 9,
+	EVENT_FILE_FL_WAS_ENABLED_BIT = 10,
+	EVENT_FILE_FL_FREED_BIT = 11,
+};
+
+enum {
+	TRACE_ARRAY_FL_GLOBAL = 1,
+};
+
+struct err_info {
+	const char **errs;
+	u8 type;
+	u16 pos;
+	u64 ts;
+};
+
+struct tracing_log_err {
+	struct list_head list;
+	struct err_info info;
+	char loc[128];
+	char *cmd;
+};
+
+struct buffer_ref {
+	struct trace_buffer *buffer;
+	void *page;
+	int cpu;
+	refcount_t refcount;
+};
+
+struct trace_parser {
+	bool cont;
+	char *buffer;
+	unsigned int idx;
+	unsigned int size;
+};
+
+struct userstack_entry {
+	struct trace_entry ent;
+	unsigned int tgid;
+	unsigned long caller[8];
+};
+
+struct func_repeats_entry {
+	struct trace_entry ent;
+	unsigned long ip;
+	unsigned long parent_ip;
+	u16 count;
+	u16 top_delta_ts;
+	u32 bottom_delta_ts;
+};
+
+typedef struct vfsmount * (*debugfs_automount_t)(struct dentry *, void *);
+
+struct partial_page;
+
+struct splice_pipe_desc {
+	struct page **pages;
+	struct partial_page *partial;
+	int nr_pages;
+	unsigned int nr_pages_max;
+	const struct pipe_buf_operations *ops;
+	void (*spd_release)(struct splice_pipe_desc *, unsigned int);
+};
+
+struct partial_page {
+	unsigned int offset;
+	unsigned int len;
+	unsigned long private;
+};
+
+struct print_entry {
+	struct trace_entry ent;
+	unsigned long ip;
+	char buf[0];
+};
+
+struct bputs_entry {
+	struct trace_entry ent;
+	unsigned long ip;
+	const char *str;
+};
+
+typedef bool (*cond_update_fn_t)(struct trace_array *, void *);
+
+struct ftrace_entry {
+	struct trace_entry ent;
+	unsigned long ip;
+	unsigned long parent_ip;
+};
+
+struct stack_entry {
+	struct trace_entry ent;
+	int size;
+	unsigned long caller[0];
+};
+
+struct bprint_entry {
+	struct trace_entry ent;
+	unsigned long ip;
+	const char *fmt;
+	u32 buf[0];
+};
+
+struct trace_min_max_param {
+	struct mutex *lock;
+	u64 *val;
+	u64 *min;
+	u64 *max;
+};
+
+struct raw_data_entry {
+	struct trace_entry ent;
+	unsigned int id;
+	char buf[0];
+};
+
+struct ftrace_buffer_info {
+	struct trace_iterator iter;
+	void *spare;
+	unsigned int spare_cpu;
+	unsigned int read;
+};
+
+struct trace_mark {
+	unsigned long long val;
+	char sym;
+};
+
+enum {
+	FILTER_OTHER = 0,
+	FILTER_STATIC_STRING = 1,
+	FILTER_DYN_STRING = 2,
+	FILTER_RDYN_STRING = 3,
+	FILTER_PTR_STRING = 4,
+	FILTER_TRACE_FN = 5,
+	FILTER_CPUMASK = 6,
+	FILTER_COMM = 7,
+	FILTER_CPU = 8,
+	FILTER_STACKTRACE = 9,
+};
+
+struct ftrace_event_field {
+	struct list_head link;
+	const char *name;
+	const char *type;
+	int filter_type;
+	int offset;
+	int size;
+	int is_signed;
+	int len;
+};
+
+struct ctx_switch_entry {
+	struct trace_entry ent;
+	unsigned int prev_pid;
+	unsigned int next_pid;
+	unsigned int next_cpu;
+	unsigned char prev_prio;
+	unsigned char prev_state;
+	unsigned char next_prio;
+	unsigned char next_state;
+};
+
+struct hwlat_entry {
+	struct trace_entry ent;
+	u64 duration;
+	u64 outer_duration;
+	u64 nmi_total_ts;
+	struct timespec64 timestamp;
+	unsigned int nmi_count;
+	unsigned int seqnum;
+	unsigned int count;
+};
+
+struct osnoise_entry {
+	struct trace_entry ent;
+	u64 noise;
+	u64 runtime;
+	u64 max_sample;
+	unsigned int hw_count;
+	unsigned int nmi_count;
+	unsigned int irq_count;
+	unsigned int softirq_count;
+	unsigned int thread_count;
+};
+
+struct timerlat_entry {
+	struct trace_entry ent;
+	unsigned int seqnum;
+	int context;
+	u64 timer_latency;
+};
+
+struct tracer_stat;
+
+struct stat_session {
+	struct list_head session_list;
+	struct tracer_stat *ts;
+	struct rb_root stat_root;
+	struct mutex stat_mutex;
+	struct dentry *file;
+};
+
+struct tracer_stat {
+	const char *name;
+	void * (*stat_start)(struct tracer_stat *);
+	void * (*stat_next)(void *, int);
+	cmp_func_t stat_cmp;
+	int (*stat_show)(struct seq_file *, void *);
+	void (*stat_release)(void *);
+	int (*stat_headers)(struct seq_file *);
+};
+
+struct stat_node {
+	struct rb_node node;
+	void *stat;
+};
+
+struct trace_bprintk_fmt {
+	struct list_head list;
+	const char *fmt;
+};
+
+struct tracing_map;
+
+struct tracing_map_field;
+
+struct tracing_map_elt {
+	struct tracing_map *map;
+	struct tracing_map_field *fields;
+	atomic64_t *vars;
+	bool *var_set;
+	void *key;
+	void *private_data;
+};
+
+typedef int (*tracing_map_cmp_fn_t)(void *, void *);
+
+struct tracing_map_field {
+	tracing_map_cmp_fn_t cmp_fn;
+	union {
+		atomic64_t sum;
+		unsigned int offset;
+	};
+};
+
+struct tracing_map_sort_key {
+	unsigned int field_idx;
+	bool descending;
+};
+
+struct tracing_map_array;
+
+struct tracing_map_ops;
+
+struct tracing_map {
+	unsigned int key_size;
+	unsigned int map_bits;
+	unsigned int map_size;
+	unsigned int max_elts;
+	atomic_t next_elt;
+	struct tracing_map_array *elts;
+	struct tracing_map_array *map;
+	const struct tracing_map_ops *ops;
+	void *private_data;
+	struct tracing_map_field fields[6];
+	unsigned int n_fields;
+	int key_idx[3];
+	unsigned int n_keys;
+	struct tracing_map_sort_key sort_key;
+	unsigned int n_vars;
+	atomic64_t hits;
+	atomic64_t drops;
+};
+
+struct tracing_map_array {
+	unsigned int entries_per_page;
+	unsigned int entry_size_shift;
+	unsigned int entry_shift;
+	unsigned int entry_mask;
+	unsigned int n_pages;
+	void **pages;
+};
+
+struct tracing_map_ops {
+	int (*elt_alloc)(struct tracing_map_elt *);
+	void (*elt_free)(struct tracing_map_elt *);
+	void (*elt_clear)(struct tracing_map_elt *);
+	void (*elt_init)(struct tracing_map_elt *);
+};
+
+struct tracing_map_entry {
+	u32 key;
+	struct tracing_map_elt *val;
+};
+
+struct tracing_map_sort_entry {
+	void *key;
+	struct tracing_map_elt *elt;
+	bool elt_copied;
+	bool dup;
+};
+
+enum {
+	TRACE_NOP_OPT_ACCEPT = 1,
+	TRACE_NOP_OPT_REFUSE = 2,
+};
+
+enum req_flag_bits {
+	__REQ_FAILFAST_DEV = 8,
+	__REQ_FAILFAST_TRANSPORT = 9,
+	__REQ_FAILFAST_DRIVER = 10,
+	__REQ_SYNC = 11,
+	__REQ_META = 12,
+	__REQ_PRIO = 13,
+	__REQ_NOMERGE = 14,
+	__REQ_IDLE = 15,
+	__REQ_INTEGRITY = 16,
+	__REQ_FUA = 17,
+	__REQ_PREFLUSH = 18,
+	__REQ_RAHEAD = 19,
+	__REQ_BACKGROUND = 20,
+	__REQ_NOWAIT = 21,
+	__REQ_POLLED = 22,
+	__REQ_ALLOC_CACHE = 23,
+	__REQ_SWAP = 24,
+	__REQ_DRV = 25,
+	__REQ_FS_PRIVATE = 26,
+	__REQ_NOUNMAP = 27,
+	__REQ_NR_BITS = 28,
+};
+
+enum req_op {
+	REQ_OP_READ = 0,
+	REQ_OP_WRITE = 1,
+	REQ_OP_FLUSH = 2,
+	REQ_OP_DISCARD = 3,
+	REQ_OP_SECURE_ERASE = 5,
+	REQ_OP_WRITE_ZEROES = 9,
+	REQ_OP_ZONE_OPEN = 10,
+	REQ_OP_ZONE_CLOSE = 11,
+	REQ_OP_ZONE_FINISH = 12,
+	REQ_OP_ZONE_APPEND = 13,
+	REQ_OP_ZONE_RESET = 15,
+	REQ_OP_ZONE_RESET_ALL = 17,
+	REQ_OP_DRV_IN = 34,
+	REQ_OP_DRV_OUT = 35,
+	REQ_OP_LAST = 36,
+};
+
+enum blk_crypto_mode_num {
+	BLK_ENCRYPTION_MODE_INVALID = 0,
+	BLK_ENCRYPTION_MODE_AES_256_XTS = 1,
+	BLK_ENCRYPTION_MODE_AES_128_CBC_ESSIV = 2,
+	BLK_ENCRYPTION_MODE_ADIANTUM = 3,
+	BLK_ENCRYPTION_MODE_SM4_XTS = 4,
+	BLK_ENCRYPTION_MODE_MAX = 5,
+};
+
+enum blk_crypto_key_type {
+	BLK_CRYPTO_KEY_TYPE_STANDARD = 1,
+	BLK_CRYPTO_KEY_TYPE_HW_WRAPPED = 2,
+};
+
+enum mq_rq_state {
+	MQ_RQ_IDLE = 0,
+	MQ_RQ_IN_FLIGHT = 1,
+	MQ_RQ_COMPLETE = 2,
+};
+
+enum rq_end_io_ret {
+	RQ_END_IO_NONE = 0,
+	RQ_END_IO_FREE = 1,
+};
+
+struct blk_crypto_key;
+
+struct bio_crypt_ctx {
+	const struct blk_crypto_key *bc_key;
+	u64 bc_dun[4];
+};
+
+struct blk_crypto_config {
+	enum blk_crypto_mode_num crypto_mode;
+	unsigned int data_unit_size;
+	unsigned int dun_bytes;
+	enum blk_crypto_key_type key_type;
+};
+
+struct blk_crypto_key {
+	struct blk_crypto_config crypto_cfg;
+	unsigned int data_unit_size_bits;
+	unsigned int size;
+	u8 raw[128];
+};
+
+typedef enum rq_end_io_ret rq_end_io_fn(struct request *, blk_status_t);
+
+typedef __u32 req_flags_t;
+
+struct blk_crypto_keyslot;
+
+struct request {
+	struct request_queue *q;
+	struct blk_mq_ctx *mq_ctx;
+	struct blk_mq_hw_ctx *mq_hctx;
+	blk_opf_t cmd_flags;
+	req_flags_t rq_flags;
+	int tag;
+	int internal_tag;
+	unsigned int timeout;
+	unsigned int __data_len;
+	sector_t __sector;
+	struct bio *bio;
+	struct bio *biotail;
+	union {
+		struct list_head queuelist;
+		struct request *rq_next;
+	};
+	struct block_device *part;
+	u64 alloc_time_ns;
+	u64 start_time_ns;
+	u64 io_start_time_ns;
+	unsigned short wbt_flags;
+	unsigned short stats_sectors;
+	unsigned short nr_phys_segments;
+	struct bio_crypt_ctx *crypt_ctx;
+	struct blk_crypto_keyslot *crypt_keyslot;
+	enum rw_hint write_hint;
+	unsigned short ioprio;
+	enum mq_rq_state state;
+	atomic_t ref;
+	unsigned long deadline;
+	union {
+		struct hlist_node hash;
+		struct llist_node ipi_list;
+	};
+	union {
+		struct rb_node rb_node;
+		struct bio_vec special_vec;
+	};
+	struct {
+		struct io_cq *icq;
+		void *priv[2];
+	} elv;
+	struct {
+		unsigned int seq;
+		rq_end_io_fn *saved_end_io;
+	} flush;
+	u64 fifo_time;
+	rq_end_io_fn *end_io;
+	void *end_io_data;
+	u64 android_oem_data1;
+	u64 android_kabi_reserved1;
+};
+
+struct sbitmap_word;
+
+struct sbitmap {
+	unsigned int depth;
+	unsigned int shift;
+	unsigned int map_nr;
+	bool round_robin;
+	struct sbitmap_word *map;
+	unsigned int __attribute__((btf_type_tag("percpu"))) *alloc_hint;
+};
+
+struct blk_mq_hw_ctx {
+	struct {
+		spinlock_t lock;
+		struct list_head dispatch;
+		unsigned long state;
+		long: 64;
+		long: 64;
+		long: 64;
+		long: 64;
+	};
+	struct delayed_work run_work;
+	cpumask_var_t cpumask;
+	int next_cpu;
+	int next_cpu_batch;
+	unsigned long flags;
+	void *sched_data;
+	struct request_queue *queue;
+	struct blk_flush_queue *fq;
+	void *driver_data;
+	struct sbitmap ctx_map;
+	struct blk_mq_ctx *dispatch_from;
+	unsigned int dispatch_busy;
+	unsigned short type;
+	unsigned short nr_ctx;
+	struct blk_mq_ctx **ctxs;
+	spinlock_t dispatch_wait_lock;
+	wait_queue_entry_t dispatch_wait;
+	atomic_t wait_index;
+	struct blk_mq_tags *tags;
+	struct blk_mq_tags *sched_tags;
+	unsigned long run;
+	unsigned int numa_node;
+	unsigned int queue_num;
+	atomic_t nr_active;
+	struct hlist_node cpuhp_online;
+	struct hlist_node cpuhp_dead;
+	struct kobject kobj;
+	struct dentry *debugfs_dir;
+	struct dentry *sched_debugfs_dir;
+	struct list_head hctx_list;
+	u64 android_kabi_reserved1;
+};
+
+struct blk_flush_queue {
+	spinlock_t mq_flush_lock;
+	unsigned int flush_pending_idx: 1;
+	unsigned int flush_running_idx: 1;
+	blk_status_t rq_status;
+	unsigned long flush_pending_since;
+	struct list_head flush_queue[2];
+	unsigned long flush_data_in_flight;
+	struct request *flush_rq;
+};
+
+struct sbitmap_word {
+	unsigned long word;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	unsigned long cleared;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct sbq_wait_state;
+
+struct sbitmap_queue {
+	struct sbitmap sb;
+	unsigned int wake_batch;
+	atomic_t wake_index;
+	struct sbq_wait_state *ws;
+	atomic_t ws_active;
+	unsigned int min_shallow_depth;
+	atomic_t completion_cnt;
+	atomic_t wakeup_cnt;
+};
+
+struct blk_mq_tags {
+	unsigned int nr_tags;
+	unsigned int nr_reserved_tags;
+	unsigned int active_queues;
+	struct sbitmap_queue bitmap_tags;
+	struct sbitmap_queue breserved_tags;
+	struct request **rqs;
+	struct request **static_rqs;
+	struct list_head page_list;
+	spinlock_t lock;
+	u64 android_oem_data1;
+};
+
+struct sbq_wait_state {
+	wait_queue_head_t wait;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct blk_mq_queue_data {
+	struct request *rq;
+	bool last;
+};
+
+struct blk_mq_queue_map {
+	unsigned int *mq_map;
+	unsigned int nr_queues;
+	unsigned int queue_offset;
+};
+
+struct blk_mq_tag_set {
+	const struct blk_mq_ops *ops;
+	struct blk_mq_queue_map map[3];
+	unsigned int nr_maps;
+	unsigned int nr_hw_queues;
+	unsigned int queue_depth;
+	unsigned int reserved_tags;
+	unsigned int cmd_size;
+	int numa_node;
+	unsigned int timeout;
+	unsigned int flags;
+	void *driver_data;
+	struct blk_mq_tags **tags;
+	struct blk_mq_tags *shared_tags;
+	struct mutex tag_list_lock;
+	struct list_head tag_list;
+	struct srcu_struct *srcu;
+	u64 android_kabi_reserved1;
+};
+
+struct boot_triggers {
+	const char *event;
+	char *trigger;
+};
+
+typedef int (*eventfs_callback)(const char *, umode_t *, void **, const struct file_operations **);
+
+struct eventfs_entry {
+	const char *name;
+	eventfs_callback callback;
+};
+
+enum {
+	TRACE_PIDS = 1,
+	TRACE_NO_PIDS = 2,
+};
+
+enum {
+	FORMAT_HEADER = 1,
+	FORMAT_FIELD_SEPERATOR = 2,
+	FORMAT_PRINTFMT = 3,
+};
+
+struct module_string {
+	struct list_head next;
+	struct module *module;
+	char *str;
+};
+
+enum perf_event_sample_format {
+	PERF_SAMPLE_IP = 1,
+	PERF_SAMPLE_TID = 2,
+	PERF_SAMPLE_TIME = 4,
+	PERF_SAMPLE_ADDR = 8,
+	PERF_SAMPLE_READ = 16,
+	PERF_SAMPLE_CALLCHAIN = 32,
+	PERF_SAMPLE_ID = 64,
+	PERF_SAMPLE_CPU = 128,
+	PERF_SAMPLE_PERIOD = 256,
+	PERF_SAMPLE_STREAM_ID = 512,
+	PERF_SAMPLE_RAW = 1024,
+	PERF_SAMPLE_BRANCH_STACK = 2048,
+	PERF_SAMPLE_REGS_USER = 4096,
+	PERF_SAMPLE_STACK_USER = 8192,
+	PERF_SAMPLE_WEIGHT = 16384,
+	PERF_SAMPLE_DATA_SRC = 32768,
+	PERF_SAMPLE_IDENTIFIER = 65536,
+	PERF_SAMPLE_TRANSACTION = 131072,
+	PERF_SAMPLE_REGS_INTR = 262144,
+	PERF_SAMPLE_PHYS_ADDR = 524288,
+	PERF_SAMPLE_AUX = 1048576,
+	PERF_SAMPLE_CGROUP = 2097152,
+	PERF_SAMPLE_DATA_PAGE_SIZE = 4194304,
+	PERF_SAMPLE_CODE_PAGE_SIZE = 8388608,
+	PERF_SAMPLE_WEIGHT_STRUCT = 16777216,
+	PERF_SAMPLE_MAX = 33554432,
+};
+
+typedef unsigned long perf_trace_t[1024];
+
+struct ustring_buffer {
+	char buffer[1024];
+};
+
+enum regex_type {
+	MATCH_FULL = 0,
+	MATCH_FRONT_ONLY = 1,
+	MATCH_MIDDLE_ONLY = 2,
+	MATCH_END_ONLY = 3,
+	MATCH_GLOB = 4,
+	MATCH_INDEX = 5,
+};
+
+enum filter_pred_fn {
+	FILTER_PRED_FN_NOP = 0,
+	FILTER_PRED_FN_64 = 1,
+	FILTER_PRED_FN_64_CPUMASK = 2,
+	FILTER_PRED_FN_S64 = 3,
+	FILTER_PRED_FN_U64 = 4,
+	FILTER_PRED_FN_32 = 5,
+	FILTER_PRED_FN_32_CPUMASK = 6,
+	FILTER_PRED_FN_S32 = 7,
+	FILTER_PRED_FN_U32 = 8,
+	FILTER_PRED_FN_16 = 9,
+	FILTER_PRED_FN_16_CPUMASK = 10,
+	FILTER_PRED_FN_S16 = 11,
+	FILTER_PRED_FN_U16 = 12,
+	FILTER_PRED_FN_8 = 13,
+	FILTER_PRED_FN_8_CPUMASK = 14,
+	FILTER_PRED_FN_S8 = 15,
+	FILTER_PRED_FN_U8 = 16,
+	FILTER_PRED_FN_COMM = 17,
+	FILTER_PRED_FN_STRING = 18,
+	FILTER_PRED_FN_STRLOC = 19,
+	FILTER_PRED_FN_STRRELLOC = 20,
+	FILTER_PRED_FN_PCHAR_USER = 21,
+	FILTER_PRED_FN_PCHAR = 22,
+	FILTER_PRED_FN_CPU = 23,
+	FILTER_PRED_FN_CPU_CPUMASK = 24,
+	FILTER_PRED_FN_CPUMASK = 25,
+	FILTER_PRED_FN_CPUMASK_CPU = 26,
+	FILTER_PRED_FN_FUNCTION = 27,
+	FILTER_PRED_FN_ = 28,
+	FILTER_PRED_TEST_VISITED = 29,
+};
+
+enum filter_op_ids {
+	OP_GLOB = 0,
+	OP_NE = 1,
+	OP_EQ = 2,
+	OP_LE = 3,
+	OP_LT = 4,
+	OP_GE = 5,
+	OP_GT = 6,
+	OP_BAND = 7,
+	OP_MAX = 8,
+};
+
+enum {
+	TOO_MANY_CLOSE = -1,
+	TOO_MANY_OPEN = -2,
+	MISSING_QUOTE = -3,
+};
+
+enum {
+	FILT_ERR_NONE = 0,
+	FILT_ERR_INVALID_OP = 1,
+	FILT_ERR_TOO_MANY_OPEN = 2,
+	FILT_ERR_TOO_MANY_CLOSE = 3,
+	FILT_ERR_MISSING_QUOTE = 4,
+	FILT_ERR_MISSING_BRACE_OPEN = 5,
+	FILT_ERR_MISSING_BRACE_CLOSE = 6,
+	FILT_ERR_OPERAND_TOO_LONG = 7,
+	FILT_ERR_EXPECT_STRING = 8,
+	FILT_ERR_EXPECT_DIGIT = 9,
+	FILT_ERR_ILLEGAL_FIELD_OP = 10,
+	FILT_ERR_FIELD_NOT_FOUND = 11,
+	FILT_ERR_ILLEGAL_INTVAL = 12,
+	FILT_ERR_BAD_SUBSYS_FILTER = 13,
+	FILT_ERR_TOO_MANY_PREDS = 14,
+	FILT_ERR_INVALID_FILTER = 15,
+	FILT_ERR_INVALID_CPULIST = 16,
+	FILT_ERR_IP_FIELD_ONLY = 17,
+	FILT_ERR_INVALID_VALUE = 18,
+	FILT_ERR_NO_FUNCTION = 19,
+	FILT_ERR_ERRNO = 20,
+	FILT_ERR_NO_FILTER = 21,
+};
+
+enum {
+	INVERT = 1,
+	PROCESS_AND = 2,
+	PROCESS_OR = 4,
+};
+
+struct regex;
+
+struct filter_pred {
+	struct regex *regex;
+	struct cpumask *mask;
+	unsigned short *ops;
+	struct ftrace_event_field *field;
+	u64 val;
+	u64 val2;
+	enum filter_pred_fn fn_num;
+	int offset;
+	int not;
+	int op;
+};
+
+typedef int (*regex_match_func)(char *, struct regex *, int);
+
+struct regex {
+	char pattern[256];
+	int len;
+	int field_len;
+	regex_match_func match;
+};
+
+struct filter_list {
+	struct list_head list;
+	struct event_filter *filter;
+};
+
+struct filter_parse_error {
+	int lasterr;
+	int lasterr_pos;
+};
+
+typedef int (*parse_pred_fn)(const char *, void *, int, struct filter_parse_error *, struct filter_pred **);
+
+struct event_trigger_data;
+
+struct event_trigger_ops;
+
+struct event_command {
+	struct list_head list;
+	char *name;
+	enum event_trigger_type trigger_type;
+	int flags;
+	int (*parse)(struct event_command *, struct trace_event_file *, char *, char *, char *);
+	int (*reg)(char *, struct event_trigger_data *, struct trace_event_file *);
+	void (*unreg)(char *, struct event_trigger_data *, struct trace_event_file *);
+	void (*unreg_all)(struct trace_event_file *);
+	int (*set_filter)(char *, struct event_trigger_data *, struct trace_event_file *);
+	struct event_trigger_ops * (*get_trigger_ops)(char *, char *);
+};
+
+struct event_trigger_data {
+	unsigned long count;
+	int ref;
+	int flags;
+	struct event_trigger_ops *ops;
+	struct event_command *cmd_ops;
+	struct event_filter __attribute__((btf_type_tag("rcu"))) *filter;
+	char *filter_str;
+	void *private_data;
+	bool paused;
+	bool paused_tmp;
+	struct list_head list;
+	char *name;
+	struct list_head named_list;
+	struct event_trigger_data *named_data;
+};
+
+struct event_trigger_ops {
+	void (*trigger)(struct event_trigger_data *, struct trace_buffer *, void *, struct ring_buffer_event *);
+	int (*init)(struct event_trigger_data *);
+	void (*free)(struct event_trigger_data *);
+	int (*print)(struct seq_file *, struct event_trigger_data *);
+};
+
+enum event_command_flags {
+	EVENT_CMD_FL_POST_TRIGGER = 1,
+	EVENT_CMD_FL_NEEDS_REC = 2,
+};
+
+enum {
+	EVENT_TRIGGER_FL_PROBE = 1,
+};
+
+struct enable_trigger_data {
+	struct trace_event_file *file;
+	bool enable;
+	bool hist;
+};
+
+struct dyn_event;
+
+struct dyn_event_operations {
+	struct list_head list;
+	int (*create)(const char *);
+	int (*show)(struct seq_file *, struct dyn_event *);
+	bool (*is_busy)(struct dyn_event *);
+	int (*free)(struct dyn_event *);
+	bool (*match)(const char *, const char *, int, const char **, struct dyn_event *);
+};
+
+struct dyn_event {
+	struct list_head list;
+	struct dyn_event_operations *ops;
+};
+
+enum fetch_op {
+	FETCH_OP_NOP = 0,
+	FETCH_OP_REG = 1,
+	FETCH_OP_STACK = 2,
+	FETCH_OP_STACKP = 3,
+	FETCH_OP_RETVAL = 4,
+	FETCH_OP_IMM = 5,
+	FETCH_OP_COMM = 6,
+	FETCH_OP_ARG = 7,
+	FETCH_OP_FOFFS = 8,
+	FETCH_OP_DATA = 9,
+	FETCH_OP_DEREF = 10,
+	FETCH_OP_UDEREF = 11,
+	FETCH_OP_ST_RAW = 12,
+	FETCH_OP_ST_MEM = 13,
+	FETCH_OP_ST_UMEM = 14,
+	FETCH_OP_ST_STRING = 15,
+	FETCH_OP_ST_USTRING = 16,
+	FETCH_OP_ST_SYMSTR = 17,
+	FETCH_OP_MOD_BF = 18,
+	FETCH_OP_LP_ARRAY = 19,
+	FETCH_OP_TP_ARG = 20,
+	FETCH_OP_END = 21,
+	FETCH_NOP_SYMBOL = 22,
+};
+
+enum {
+	TP_ERR_FILE_NOT_FOUND = 0,
+	TP_ERR_NO_REGULAR_FILE = 1,
+	TP_ERR_BAD_REFCNT = 2,
+	TP_ERR_REFCNT_OPEN_BRACE = 3,
+	TP_ERR_BAD_REFCNT_SUFFIX = 4,
+	TP_ERR_BAD_UPROBE_OFFS = 5,
+	TP_ERR_BAD_MAXACT_TYPE = 6,
+	TP_ERR_BAD_MAXACT = 7,
+	TP_ERR_MAXACT_TOO_BIG = 8,
+	TP_ERR_BAD_PROBE_ADDR = 9,
+	TP_ERR_NON_UNIQ_SYMBOL = 10,
+	TP_ERR_BAD_RETPROBE = 11,
+	TP_ERR_NO_TRACEPOINT = 12,
+	TP_ERR_BAD_ADDR_SUFFIX = 13,
+	TP_ERR_NO_GROUP_NAME = 14,
+	TP_ERR_GROUP_TOO_LONG = 15,
+	TP_ERR_BAD_GROUP_NAME = 16,
+	TP_ERR_NO_EVENT_NAME = 17,
+	TP_ERR_EVENT_TOO_LONG = 18,
+	TP_ERR_BAD_EVENT_NAME = 19,
+	TP_ERR_EVENT_EXIST = 20,
+	TP_ERR_RETVAL_ON_PROBE = 21,
+	TP_ERR_NO_RETVAL = 22,
+	TP_ERR_BAD_STACK_NUM = 23,
+	TP_ERR_BAD_ARG_NUM = 24,
+	TP_ERR_BAD_VAR = 25,
+	TP_ERR_BAD_REG_NAME = 26,
+	TP_ERR_BAD_MEM_ADDR = 27,
+	TP_ERR_BAD_IMM = 28,
+	TP_ERR_IMMSTR_NO_CLOSE = 29,
+	TP_ERR_FILE_ON_KPROBE = 30,
+	TP_ERR_BAD_FILE_OFFS = 31,
+	TP_ERR_SYM_ON_UPROBE = 32,
+	TP_ERR_TOO_MANY_OPS = 33,
+	TP_ERR_DEREF_NEED_BRACE = 34,
+	TP_ERR_BAD_DEREF_OFFS = 35,
+	TP_ERR_DEREF_OPEN_BRACE = 36,
+	TP_ERR_COMM_CANT_DEREF = 37,
+	TP_ERR_BAD_FETCH_ARG = 38,
+	TP_ERR_ARRAY_NO_CLOSE = 39,
+	TP_ERR_BAD_ARRAY_SUFFIX = 40,
+	TP_ERR_BAD_ARRAY_NUM = 41,
+	TP_ERR_ARRAY_TOO_BIG = 42,
+	TP_ERR_BAD_TYPE = 43,
+	TP_ERR_BAD_STRING = 44,
+	TP_ERR_BAD_SYMSTRING = 45,
+	TP_ERR_BAD_BITFIELD = 46,
+	TP_ERR_ARG_NAME_TOO_LONG = 47,
+	TP_ERR_NO_ARG_NAME = 48,
+	TP_ERR_BAD_ARG_NAME = 49,
+	TP_ERR_USED_ARG_NAME = 50,
+	TP_ERR_ARG_TOO_LONG = 51,
+	TP_ERR_NO_ARG_BODY = 52,
+	TP_ERR_BAD_INSN_BNDRY = 53,
+	TP_ERR_FAIL_REG_PROBE = 54,
+	TP_ERR_DIFF_PROBE_TYPE = 55,
+	TP_ERR_DIFF_ARG_TYPE = 56,
+	TP_ERR_SAME_PROBE = 57,
+	TP_ERR_NO_EVENT_INFO = 58,
+	TP_ERR_BAD_ATTACH_EVENT = 59,
+	TP_ERR_BAD_ATTACH_ARG = 60,
+	TP_ERR_NO_EP_FILTER = 61,
+	TP_ERR_NOSUP_BTFARG = 62,
+	TP_ERR_NO_BTFARG = 63,
+	TP_ERR_NO_BTF_ENTRY = 64,
+	TP_ERR_BAD_VAR_ARGS = 65,
+	TP_ERR_NOFENTRY_ARGS = 66,
+	TP_ERR_DOUBLE_ARGS = 67,
+	TP_ERR_ARGS_2LONG = 68,
+	TP_ERR_ARGIDX_2BIG = 69,
+	TP_ERR_NO_PTR_STRCT = 70,
+	TP_ERR_NOSUP_DAT_ARG = 71,
+	TP_ERR_BAD_HYPHEN = 72,
+	TP_ERR_NO_BTF_FIELD = 73,
+	TP_ERR_BAD_BTF_TID = 74,
+	TP_ERR_BAD_TYPE4STR = 75,
+	TP_ERR_NEED_STRING_TYPE = 76,
+};
+
+enum probe_print_type {
+	PROBE_PRINT_NORMAL = 0,
+	PROBE_PRINT_RETURN = 1,
+	PROBE_PRINT_EVENT = 2,
+};
+
+struct eprobe_trace_entry_head {
+	struct trace_entry ent;
+};
+
+struct fetch_insn;
+
+struct fetch_type;
+
+struct probe_arg {
+	struct fetch_insn *code;
+	bool dynamic;
+	unsigned int offset;
+	unsigned int count;
+	const char *name;
+	const char *comm;
+	char *fmt;
+	const struct fetch_type *type;
+};
+
+struct trace_probe_event;
+
+struct trace_probe {
+	struct list_head list;
+	struct trace_probe_event *event;
+	ssize_t size;
+	unsigned int nr_args;
+	struct probe_arg args[0];
+};
+
+struct trace_eprobe {
+	const char *event_system;
+	const char *event_name;
+	char *filter_str;
+	struct trace_event_call *event;
+	struct dyn_event devent;
+	struct trace_probe tp;
+};
+
+struct trace_uprobe_filter {
+	rwlock_t rwlock;
+	int nr_systemwide;
+	struct list_head perf_events;
+};
+
+struct trace_probe_event {
+	unsigned int flags;
+	struct trace_event_class class;
+	struct trace_event_call call;
+	struct list_head files;
+	struct list_head probes;
+	struct trace_uprobe_filter filter[0];
+};
+
+struct fetch_insn {
+	enum fetch_op op;
+	union {
+		unsigned int param;
+		struct {
+			unsigned int size;
+			int offset;
+		};
+		struct {
+			unsigned char basesize;
+			unsigned char lshift;
+			unsigned char rshift;
+		};
+		unsigned long immediate;
+		void *data;
+	};
+};
+
+typedef int (*print_type_func_t)(struct trace_seq *, void *, void *);
+
+struct fetch_type {
+	const char *name;
+	size_t size;
+	bool is_signed;
+	bool is_string;
+	print_type_func_t print;
+	const char *fmt;
+	const char *fmttype;
+};
+
+struct btf_param;
+
+struct traceprobe_parse_context {
+	struct trace_event_call *event;
+	const char *funcname;
+	const struct btf_type *proto;
+	const struct btf_param *params;
+	s32 nr_params;
+	struct btf *btf;
+	const struct btf_type *last_type;
+	u32 last_bitoffs;
+	u32 last_bitsize;
+	unsigned int flags;
+	int offset;
+};
+
+struct btf_param {
+	__u32 name_off;
+	__u32 type;
+};
+
+struct eprobe_data {
+	struct trace_event_file *file;
+	struct trace_eprobe *ep;
+};
+
+struct event_file_link {
+	struct trace_event_file *file;
+	struct list_head list;
+};
+
+enum dynevent_type {
+	DYNEVENT_TYPE_SYNTH = 1,
+	DYNEVENT_TYPE_KPROBE = 2,
+	DYNEVENT_TYPE_NONE = 3,
+};
+
+enum {
+	SYNTH_ERR_BAD_NAME = 0,
+	SYNTH_ERR_INVALID_CMD = 1,
+	SYNTH_ERR_INVALID_DYN_CMD = 2,
+	SYNTH_ERR_EVENT_EXISTS = 3,
+	SYNTH_ERR_TOO_MANY_FIELDS = 4,
+	SYNTH_ERR_INCOMPLETE_TYPE = 5,
+	SYNTH_ERR_INVALID_TYPE = 6,
+	SYNTH_ERR_INVALID_FIELD = 7,
+	SYNTH_ERR_INVALID_ARRAY_SPEC = 8,
+};
+
+struct trace_dynamic_info {
+	u16 offset;
+	u16 len;
+};
+
+union trace_synth_field {
+	u8 as_u8;
+	u16 as_u16;
+	u32 as_u32;
+	u64 as_u64;
+	struct trace_dynamic_info as_dynamic;
+};
+
+struct synth_trace_event {
+	struct trace_entry ent;
+	union trace_synth_field fields[0];
+};
+
+struct synth_field;
+
+struct synth_event {
+	struct dyn_event devent;
+	int ref;
+	char *name;
+	struct synth_field **fields;
+	unsigned int n_fields;
+	struct synth_field **dynamic_fields;
+	unsigned int n_dynamic_fields;
+	unsigned int n_u64;
+	struct trace_event_class class;
+	struct trace_event_call call;
+	struct tracepoint *tp;
+	struct module *mod;
+};
+
+struct synth_field {
+	char *type;
+	char *name;
+	size_t size;
+	unsigned int offset;
+	unsigned int field_pos;
+	bool is_signed;
+	bool is_string;
+	bool is_dynamic;
+	bool is_stack;
+};
+
+struct dynevent_arg_pair {
+	const char *lhs;
+	const char *rhs;
+	char operator;
+	char separator;
+};
+
+struct dynevent_cmd;
+
+typedef int (*dynevent_create_fn_t)(struct dynevent_cmd *);
+
+struct dynevent_cmd {
+	struct seq_buf seq;
+	const char *event_name;
+	unsigned int n_fields;
+	enum dynevent_type type;
+	dynevent_create_fn_t run_command;
+	void *private_data;
+};
+
+typedef int (*dynevent_check_arg_fn_t)(void *);
+
+struct dynevent_arg {
+	const char *str;
+	char separator;
+};
+
+struct synth_event_trace_state {
+	struct trace_event_buffer fbuffer;
+	struct synth_trace_event *entry;
+	struct trace_buffer *buffer;
+	struct synth_event *event;
+	unsigned int cur_field;
+	unsigned int n_u64;
+	bool disabled;
+	bool add_next;
+	bool add_name;
+};
+
+struct synth_field_desc {
+	const char *type;
+	const char *name;
+};
+
+enum hist_field_fn {
+	HIST_FIELD_FN_NOP = 0,
+	HIST_FIELD_FN_VAR_REF = 1,
+	HIST_FIELD_FN_COUNTER = 2,
+	HIST_FIELD_FN_CONST = 3,
+	HIST_FIELD_FN_LOG2 = 4,
+	HIST_FIELD_FN_BUCKET = 5,
+	HIST_FIELD_FN_TIMESTAMP = 6,
+	HIST_FIELD_FN_CPU = 7,
+	HIST_FIELD_FN_STRING = 8,
+	HIST_FIELD_FN_DYNSTRING = 9,
+	HIST_FIELD_FN_RELDYNSTRING = 10,
+	HIST_FIELD_FN_PSTRING = 11,
+	HIST_FIELD_FN_S64 = 12,
+	HIST_FIELD_FN_U64 = 13,
+	HIST_FIELD_FN_S32 = 14,
+	HIST_FIELD_FN_U32 = 15,
+	HIST_FIELD_FN_S16 = 16,
+	HIST_FIELD_FN_U16 = 17,
+	HIST_FIELD_FN_S8 = 18,
+	HIST_FIELD_FN_U8 = 19,
+	HIST_FIELD_FN_UMINUS = 20,
+	HIST_FIELD_FN_MINUS = 21,
+	HIST_FIELD_FN_PLUS = 22,
+	HIST_FIELD_FN_DIV = 23,
+	HIST_FIELD_FN_MULT = 24,
+	HIST_FIELD_FN_DIV_POWER2 = 25,
+	HIST_FIELD_FN_DIV_NOT_POWER2 = 26,
+	HIST_FIELD_FN_DIV_MULT_SHIFT = 27,
+	HIST_FIELD_FN_EXECNAME = 28,
+	HIST_FIELD_FN_STACK = 29,
+};
+
+enum field_op_id {
+	FIELD_OP_NONE = 0,
+	FIELD_OP_PLUS = 1,
+	FIELD_OP_MINUS = 2,
+	FIELD_OP_UNARY_MINUS = 3,
+	FIELD_OP_DIV = 4,
+	FIELD_OP_MULT = 5,
+};
+
+enum handler_id {
+	HANDLER_ONMATCH = 1,
+	HANDLER_ONMAX = 2,
+	HANDLER_ONCHANGE = 3,
+};
+
+enum action_id {
+	ACTION_SAVE = 1,
+	ACTION_TRACE = 2,
+	ACTION_SNAPSHOT = 3,
+};
+
+enum hist_field_flags {
+	HIST_FIELD_FL_HITCOUNT = 1,
+	HIST_FIELD_FL_KEY = 2,
+	HIST_FIELD_FL_STRING = 4,
+	HIST_FIELD_FL_HEX = 8,
+	HIST_FIELD_FL_SYM = 16,
+	HIST_FIELD_FL_SYM_OFFSET = 32,
+	HIST_FIELD_FL_EXECNAME = 64,
+	HIST_FIELD_FL_SYSCALL = 128,
+	HIST_FIELD_FL_STACKTRACE = 256,
+	HIST_FIELD_FL_LOG2 = 512,
+	HIST_FIELD_FL_TIMESTAMP = 1024,
+	HIST_FIELD_FL_TIMESTAMP_USECS = 2048,
+	HIST_FIELD_FL_VAR = 4096,
+	HIST_FIELD_FL_EXPR = 8192,
+	HIST_FIELD_FL_VAR_REF = 16384,
+	HIST_FIELD_FL_CPU = 32768,
+	HIST_FIELD_FL_ALIAS = 65536,
+	HIST_FIELD_FL_BUCKET = 131072,
+	HIST_FIELD_FL_CONST = 262144,
+	HIST_FIELD_FL_PERCENT = 524288,
+	HIST_FIELD_FL_GRAPH = 1048576,
+};
+
+enum {
+	HIST_ERR_NONE = 0,
+	HIST_ERR_DUPLICATE_VAR = 1,
+	HIST_ERR_VAR_NOT_UNIQUE = 2,
+	HIST_ERR_TOO_MANY_VARS = 3,
+	HIST_ERR_MALFORMED_ASSIGNMENT = 4,
+	HIST_ERR_NAMED_MISMATCH = 5,
+	HIST_ERR_TRIGGER_EEXIST = 6,
+	HIST_ERR_TRIGGER_ENOENT_CLEAR = 7,
+	HIST_ERR_SET_CLOCK_FAIL = 8,
+	HIST_ERR_BAD_FIELD_MODIFIER = 9,
+	HIST_ERR_TOO_MANY_SUBEXPR = 10,
+	HIST_ERR_TIMESTAMP_MISMATCH = 11,
+	HIST_ERR_TOO_MANY_FIELD_VARS = 12,
+	HIST_ERR_EVENT_FILE_NOT_FOUND = 13,
+	HIST_ERR_HIST_NOT_FOUND = 14,
+	HIST_ERR_HIST_CREATE_FAIL = 15,
+	HIST_ERR_SYNTH_VAR_NOT_FOUND = 16,
+	HIST_ERR_SYNTH_EVENT_NOT_FOUND = 17,
+	HIST_ERR_SYNTH_TYPE_MISMATCH = 18,
+	HIST_ERR_SYNTH_COUNT_MISMATCH = 19,
+	HIST_ERR_FIELD_VAR_PARSE_FAIL = 20,
+	HIST_ERR_VAR_CREATE_FIND_FAIL = 21,
+	HIST_ERR_ONX_NOT_VAR = 22,
+	HIST_ERR_ONX_VAR_NOT_FOUND = 23,
+	HIST_ERR_ONX_VAR_CREATE_FAIL = 24,
+	HIST_ERR_FIELD_VAR_CREATE_FAIL = 25,
+	HIST_ERR_TOO_MANY_PARAMS = 26,
+	HIST_ERR_PARAM_NOT_FOUND = 27,
+	HIST_ERR_INVALID_PARAM = 28,
+	HIST_ERR_ACTION_NOT_FOUND = 29,
+	HIST_ERR_NO_SAVE_PARAMS = 30,
+	HIST_ERR_TOO_MANY_SAVE_ACTIONS = 31,
+	HIST_ERR_ACTION_MISMATCH = 32,
+	HIST_ERR_NO_CLOSING_PAREN = 33,
+	HIST_ERR_SUBSYS_NOT_FOUND = 34,
+	HIST_ERR_INVALID_SUBSYS_EVENT = 35,
+	HIST_ERR_INVALID_REF_KEY = 36,
+	HIST_ERR_VAR_NOT_FOUND = 37,
+	HIST_ERR_FIELD_NOT_FOUND = 38,
+	HIST_ERR_EMPTY_ASSIGNMENT = 39,
+	HIST_ERR_INVALID_SORT_MODIFIER = 40,
+	HIST_ERR_EMPTY_SORT_FIELD = 41,
+	HIST_ERR_TOO_MANY_SORT_FIELDS = 42,
+	HIST_ERR_INVALID_SORT_FIELD = 43,
+	HIST_ERR_INVALID_STR_OPERAND = 44,
+	HIST_ERR_EXPECT_NUMBER = 45,
+	HIST_ERR_UNARY_MINUS_SUBEXPR = 46,
+	HIST_ERR_DIVISION_BY_ZERO = 47,
+	HIST_ERR_NEED_NOHC_VAL = 48,
+};
+
+struct hist_trigger_data;
+
+struct hist_var_data {
+	struct list_head list;
+	struct hist_trigger_data *hist_data;
+};
+
+struct hist_field;
+
+struct hist_trigger_attrs;
+
+struct action_data;
+
+struct field_var;
+
+struct field_var_hist;
+
+struct hist_trigger_data {
+	struct hist_field *fields[22];
+	unsigned int n_vals;
+	unsigned int n_keys;
+	unsigned int n_fields;
+	unsigned int n_vars;
+	unsigned int n_var_str;
+	unsigned int key_size;
+	struct tracing_map_sort_key sort_keys[2];
+	unsigned int n_sort_keys;
+	struct trace_event_file *event_file;
+	struct hist_trigger_attrs *attrs;
+	struct tracing_map *map;
+	bool enable_timestamps;
+	bool remove;
+	struct hist_field *var_refs[16];
+	unsigned int n_var_refs;
+	struct action_data *actions[8];
+	unsigned int n_actions;
+	struct field_var *field_vars[64];
+	unsigned int n_field_vars;
+	unsigned int n_field_var_str;
+	struct field_var_hist *field_var_hists[64];
+	unsigned int n_field_var_hists;
+	struct field_var *save_vars[64];
+	unsigned int n_save_vars;
+	unsigned int n_save_var_str;
+};
+
+struct hist_var {
+	char *name;
+	struct hist_trigger_data *hist_data;
+	unsigned int idx;
+};
+
+struct hist_field {
+	struct ftrace_event_field *field;
+	unsigned long flags;
+	unsigned long buckets;
+	const char *type;
+	struct hist_field *operands[2];
+	struct hist_trigger_data *hist_data;
+	enum hist_field_fn fn_num;
+	unsigned int ref;
+	unsigned int size;
+	unsigned int offset;
+	unsigned int is_signed;
+	struct hist_var var;
+	enum field_op_id operator;
+	char *system;
+	char *event_name;
+	char *name;
+	unsigned int var_ref_idx;
+	bool read_once;
+	unsigned int var_str_idx;
+	u64 constant;
+	u64 div_multiplier;
+};
+
+struct var_defs {
+	unsigned int n_vars;
+	char *name[16];
+	char *expr[16];
+};
+
+struct hist_trigger_attrs {
+	char *keys_str;
+	char *vals_str;
+	char *sort_key_str;
+	char *name;
+	char *clock;
+	bool pause;
+	bool cont;
+	bool clear;
+	bool ts_in_usecs;
+	bool no_hitcount;
+	unsigned int map_bits;
+	char *assignment_str[16];
+	unsigned int n_assignments;
+	char *action_str[8];
+	unsigned int n_actions;
+	struct var_defs var_defs;
+};
+
+typedef bool (*check_track_val_fn_t)(u64, u64);
+
+typedef void (*action_fn_t)(struct hist_trigger_data *, struct tracing_map_elt *, struct trace_buffer *, void *, struct ring_buffer_event *, void *, struct action_data *, u64 *);
+
+struct action_data {
+	enum handler_id handler;
+	enum action_id action;
+	char *action_name;
+	action_fn_t fn;
+	unsigned int n_params;
+	char *params[64];
+	unsigned int var_ref_idx[64];
+	struct synth_event *synth_event;
+	bool use_trace_keyword;
+	char *synth_event_name;
+	union {
+		struct {
+			char *event;
+			char *event_system;
+		} match_data;
+		struct {
+			char *var_str;
+			struct hist_field *var_ref;
+			struct hist_field *track_var;
+			check_track_val_fn_t check_val;
+			action_fn_t save_data;
+		} track_data;
+	};
+};
+
+struct field_var {
+	struct hist_field *var;
+	struct hist_field *val;
+};
+
+struct field_var_hist {
+	struct hist_trigger_data *hist_data;
+	char *cmd;
+};
+
+struct hist_val_stat {
+	u64 max;
+	u64 total;
+};
+
+struct hist_elt_data {
+	char *comm;
+	u64 *var_ref_vals;
+	char **field_var_str;
+	int n_field_var_str;
+};
+
+typedef void (*synth_probe_func_t)(void *, u64 *, unsigned int *);
+
+struct track_data {
+	u64 track_val;
+	bool updated;
+	unsigned int key_len;
+	void *key;
+	struct tracing_map_elt elt;
+	struct action_data *action_data;
+	struct hist_trigger_data *hist_data;
+};
+
+struct bpf_mem_caches;
+
+struct bpf_mem_cache;
+
+struct bpf_mem_alloc {
+	struct bpf_mem_caches __attribute__((btf_type_tag("percpu"))) *caches;
+	struct bpf_mem_cache __attribute__((btf_type_tag("percpu"))) *cache;
+	bool percpu;
+	struct work_struct work;
+};
+
+struct bpf_local_storage_map_bucket;
+
+struct bpf_local_storage_map {
+	struct bpf_map map;
+	struct bpf_local_storage_map_bucket *buckets;
+	u32 bucket_log;
+	u16 elem_size;
+	u16 cache_idx;
+	struct bpf_mem_alloc selem_ma;
+	struct bpf_mem_alloc storage_ma;
+	bool bpf_ma;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct bpf_local_storage_map_bucket {
+	struct hlist_head list;
+	raw_spinlock_t lock;
+};
+
+struct bpf_mem_cache {
+	struct llist_head free_llist;
+	local_t active;
+	struct llist_head free_llist_extra;
+	struct irq_work refill_work;
+	struct obj_cgroup *objcg;
+	int unit_size;
+	int free_cnt;
+	int low_watermark;
+	int high_watermark;
+	int batch;
+	int percpu_size;
+	bool draining;
+	struct bpf_mem_cache *tgt;
+	struct llist_head free_by_rcu;
+	struct llist_node *free_by_rcu_tail;
+	struct llist_head waiting_for_gp;
+	struct llist_node *waiting_for_gp_tail;
+	struct callback_head rcu;
+	atomic_t call_rcu_in_progress;
+	struct llist_head free_llist_extra_rcu;
+	struct llist_head free_by_rcu_ttrace;
+	struct llist_head waiting_for_gp_ttrace;
+	struct callback_head rcu_ttrace;
+	atomic_t call_rcu_ttrace_in_progress;
+};
+
+struct bpf_mem_caches {
+	struct bpf_mem_cache cache[11];
+};
+
+struct bpf_local_storage_data {
+	struct bpf_local_storage_map __attribute__((btf_type_tag("rcu"))) *smap;
+	u8 data[0];
+};
+
+struct bpf_id_pair {
+	u32 old;
+	u32 cur;
+};
+
+struct bpf_idmap {
+	u32 tmp_id_gen;
+	struct bpf_id_pair map[600];
+};
+
+struct bpf_idset {
+	u32 count;
+	u32 ids[600];
+};
+
+struct bpf_verifier_log {
+	u64 start_pos;
+	u64 end_pos;
+	char __attribute__((btf_type_tag("user"))) *ubuf;
+	u32 level;
+	u32 len_total;
+	u32 len_max;
+	char kbuf[1024];
+};
+
+struct bpf_subprog_info {
+	u32 start;
+	u32 linfo_idx;
+	u16 stack_depth;
+	bool has_tail_call;
+	bool tail_call_reachable;
+	bool has_ld_abs;
+	bool is_async_cb;
+	u64 android_kabi_reserved1;
+};
+
+struct backtrack_state {
+	struct bpf_verifier_env *env;
+	u32 frame;
+	u32 reg_masks[8];
+	u64 stack_masks[8];
+};
+
+typedef sockptr_t bpfptr_t;
+
+struct bpf_verifier_ops;
+
+struct bpf_verifier_stack_elem;
+
+struct bpf_verifier_state;
+
+struct bpf_verifier_state_list;
+
+struct bpf_insn_aux_data;
+
+struct bpf_verifier_env {
+	u32 insn_idx;
+	u32 prev_insn_idx;
+	struct bpf_prog *prog;
+	const struct bpf_verifier_ops *ops;
+	struct bpf_verifier_stack_elem *head;
+	int stack_size;
+	bool strict_alignment;
+	bool test_state_freq;
+	struct bpf_verifier_state *cur_state;
+	struct bpf_verifier_state_list **explored_states;
+	struct bpf_verifier_state_list *free_list;
+	struct bpf_map *used_maps[64];
+	struct btf_mod_pair used_btfs[64];
+	u32 used_map_cnt;
+	u32 used_btf_cnt;
+	u32 id_gen;
+	bool explore_alu_limits;
+	bool allow_ptr_leaks;
+	bool allow_uninit_stack;
+	bool bpf_capable;
+	bool bypass_spec_v1;
+	bool bypass_spec_v4;
+	bool seen_direct_write;
+	struct bpf_insn_aux_data *insn_aux_data;
+	const struct bpf_line_info *prev_linfo;
+	struct bpf_verifier_log log;
+	struct bpf_subprog_info subprog_info[257];
+	union {
+		struct bpf_idmap idmap_scratch;
+		struct bpf_idset idset_scratch;
+	};
+	struct {
+		int *insn_state;
+		int *insn_stack;
+		int cur_stack;
+	} cfg;
+	struct backtrack_state bt;
+	u32 pass_cnt;
+	u32 subprog_cnt;
+	u32 prev_insn_processed;
+	u32 insn_processed;
+	u32 prev_jmps_processed;
+	u32 jmps_processed;
+	u64 verification_time;
+	u32 max_states_per_insn;
+	u32 total_states;
+	u32 peak_states;
+	u32 longest_mark_read_walk;
+	bpfptr_t fd_array;
+	u32 scratched_regs;
+	u64 scratched_stack_slots;
+	u64 prev_log_pos;
+	u64 prev_insn_print_pos;
+	char tmp_str_buf[320];
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+enum bpf_access_type {
+	BPF_READ = 1,
+	BPF_WRITE = 2,
+};
+
+struct bpf_insn_access_aux;
+
+struct bpf_reg_state;
+
+struct bpf_verifier_ops {
+	const struct bpf_func_proto * (*get_func_proto)(enum bpf_func_id, const struct bpf_prog *);
+	bool (*is_valid_access)(int, int, enum bpf_access_type, const struct bpf_prog *, struct bpf_insn_access_aux *);
+	int (*gen_prologue)(struct bpf_insn *, bool, const struct bpf_prog *);
+	int (*gen_ld_abs)(const struct bpf_insn *, struct bpf_insn *);
+	u32 (*convert_ctx_access)(enum bpf_access_type, const struct bpf_insn *, struct bpf_insn *, struct bpf_prog *, u32 *);
+	int (*btf_struct_access)(struct bpf_verifier_log *, const struct bpf_reg_state *, int, int);
+	u64 android_kabi_reserved1;
+};
+
+struct bpf_insn_access_aux {
+	enum bpf_reg_type reg_type;
+	union {
+		int ctx_field_size;
+		struct {
+			struct btf *btf;
+			u32 btf_id;
+		};
+	};
+	struct bpf_verifier_log *log;
+};
+
+enum bpf_dynptr_type {
+	BPF_DYNPTR_TYPE_INVALID = 0,
+	BPF_DYNPTR_TYPE_LOCAL = 1,
+	BPF_DYNPTR_TYPE_RINGBUF = 2,
+	BPF_DYNPTR_TYPE_SKB = 3,
+	BPF_DYNPTR_TYPE_XDP = 4,
+};
+
+enum bpf_iter_state {
+	BPF_ITER_STATE_INVALID = 0,
+	BPF_ITER_STATE_ACTIVE = 1,
+	BPF_ITER_STATE_DRAINED = 2,
+};
+
+struct tnum {
+	u64 value;
+	u64 mask;
+};
+
+enum bpf_reg_liveness {
+	REG_LIVE_NONE = 0,
+	REG_LIVE_READ32 = 1,
+	REG_LIVE_READ64 = 2,
+	REG_LIVE_READ = 3,
+	REG_LIVE_WRITTEN = 4,
+	REG_LIVE_DONE = 8,
+};
+
+struct bpf_reg_state {
+	enum bpf_reg_type type;
+	s32 off;
+	union {
+		int range;
+		struct {
+			struct bpf_map *map_ptr;
+			u32 map_uid;
+		};
+		struct {
+			struct btf *btf;
+			u32 btf_id;
+		};
+		struct {
+			u32 mem_size;
+			u32 dynptr_id;
+		};
+		struct {
+			enum bpf_dynptr_type type;
+			bool first_slot;
+		} dynptr;
+		struct {
+			struct btf *btf;
+			u32 btf_id;
+			enum bpf_iter_state state: 2;
+			int depth: 30;
+		} iter;
+		struct {
+			unsigned long raw1;
+			unsigned long raw2;
+		} raw;
+		u32 subprogno;
+	};
+	struct tnum var_off;
+	s64 smin_value;
+	s64 smax_value;
+	u64 umin_value;
+	u64 umax_value;
+	s32 s32_min_value;
+	s32 s32_max_value;
+	u32 u32_min_value;
+	u32 u32_max_value;
+	u32 id;
+	u32 ref_obj_id;
+	struct bpf_reg_state *parent;
+	u32 frameno;
+	s32 subreg_def;
+	enum bpf_reg_liveness live;
+	bool precise;
+};
+
+struct bpf_active_lock {
+	void *ptr;
+	u32 id;
+};
+
+struct bpf_idx_pair;
+
+struct bpf_verifier_state {
+	struct bpf_func_state *frame[8];
+	struct bpf_verifier_state *parent;
+	u32 branches;
+	u32 insn_idx;
+	u32 curframe;
+	struct bpf_active_lock active_lock;
+	bool speculative;
+	bool active_rcu_lock;
+	bool used_as_loop_entry;
+	u32 first_insn_idx;
+	u32 last_insn_idx;
+	struct bpf_verifier_state *loop_entry;
+	struct bpf_idx_pair *jmp_history;
+	u32 jmp_history_cnt;
+	u32 dfs_depth;
+	u32 callback_unroll_depth;
+};
+
+struct bpf_reference_state;
+
+struct bpf_stack_state;
+
+struct bpf_func_state {
+	struct bpf_reg_state regs[11];
+	int callsite;
+	u32 frameno;
+	u32 subprogno;
+	u32 async_entry_cnt;
+	bool in_callback_fn;
+	struct tnum callback_ret_range;
+	bool in_async_callback_fn;
+	u32 callback_depth;
+	int acquired_refs;
+	struct bpf_reference_state *refs;
+	int allocated_stack;
+	struct bpf_stack_state *stack;
+};
+
+struct bpf_reference_state {
+	int id;
+	int insn_idx;
+	int callback_ref;
+};
+
+struct bpf_stack_state {
+	struct bpf_reg_state spilled_ptr;
+	u8 slot_type[8];
+};
+
+struct bpf_idx_pair {
+	u32 prev_idx;
+	u32 idx;
+};
+
+struct bpf_verifier_state_list {
+	struct bpf_verifier_state state;
+	struct bpf_verifier_state_list *next;
+	int miss_cnt;
+	int hit_cnt;
+};
+
+struct bpf_loop_inline_state {
+	unsigned int initialized: 1;
+	unsigned int fit_for_inline: 1;
+	u32 callback_subprogno;
+};
+
+struct btf_struct_meta;
+
+struct bpf_insn_aux_data {
+	union {
+		enum bpf_reg_type ptr_type;
+		unsigned long map_ptr_state;
+		s32 call_imm;
+		u32 alu_limit;
+		struct {
+			u32 map_index;
+			u32 map_off;
+		};
+		struct {
+			enum bpf_reg_type reg_type;
+			union {
+				struct {
+					struct btf *btf;
+					u32 btf_id;
+				};
+				u32 mem_size;
+			};
+		} btf_var;
+		struct bpf_loop_inline_state loop_inline_state;
+	};
+	union {
+		u64 obj_new_size;
+		u64 insert_off;
+	};
+	struct btf_struct_meta *kptr_struct_meta;
+	u64 map_key_state;
+	int ctx_field_size;
+	u32 seen;
+	bool sanitize_stack_spill;
+	bool zext_dst;
+	bool storage_get_func_atomic;
+	bool is_iter_next;
+	u8 alu_state;
+	unsigned int orig_idx;
+	bool jmp_point;
+	bool prune_point;
+	bool force_checkpoint;
+	bool calls_callback;
+};
+
+struct btf_struct_meta {
+	u32 btf_id;
+	struct btf_record *record;
+};
+
+typedef void (*btf_trace_bpf_trace_printk)(void *, const char *);
+
+struct bpf_nested_pt_regs {
+	struct pt_regs regs[3];
+};
+
+struct bpf_trace_sample_data {
+	struct perf_sample_data sds[3];
+};
+
+struct send_signal_irq_work {
+	struct irq_work irq_work;
+	struct task_struct *task;
+	u32 sig;
+	enum pid_type type;
+};
+
+struct bpf_raw_tp_regs {
+	struct pt_regs regs[3];
+};
+
+enum key_lookup_flag {
+	KEY_LOOKUP_CREATE = 1,
+	KEY_LOOKUP_PARTIAL = 2,
+	KEY_LOOKUP_ALL = 3,
+};
+
+enum key_need_perm {
+	KEY_NEED_UNSPECIFIED = 0,
+	KEY_NEED_VIEW = 1,
+	KEY_NEED_READ = 2,
+	KEY_NEED_WRITE = 3,
+	KEY_NEED_SEARCH = 4,
+	KEY_NEED_LINK = 5,
+	KEY_NEED_SETATTR = 6,
+	KEY_NEED_UNLINK = 7,
+	KEY_SYSADMIN_OVERRIDE = 8,
+	KEY_AUTHTOKEN_OVERRIDE = 9,
+	KEY_DEFER_PERM_CHECK = 10,
+};
+
+enum bpf_task_fd_type {
+	BPF_FD_TYPE_RAW_TRACEPOINT = 0,
+	BPF_FD_TYPE_TRACEPOINT = 1,
+	BPF_FD_TYPE_KPROBE = 2,
+	BPF_FD_TYPE_KRETPROBE = 3,
+	BPF_FD_TYPE_UPROBE = 4,
+	BPF_FD_TYPE_URETPROBE = 5,
+};
+
+enum uprobe_filter_ctx {
+	UPROBE_FILTER_REGISTER = 0,
+	UPROBE_FILTER_UNREGISTER = 1,
+	UPROBE_FILTER_MMAP = 2,
+};
+
+enum {
+	BPF_F_UPROBE_MULTI_RETURN = 1,
+};
+
+enum {
+	BTF_F_COMPACT = 1,
+	BTF_F_NONAME = 2,
+	BTF_F_PTR_RAW = 4,
+	BTF_F_ZERO = 8,
+};
+
+enum {
+	BPF_F_INDEX_MASK = 4294967295ULL,
+	BPF_F_CURRENT_CPU = 4294967295ULL,
+	BPF_F_CTXLEN_MASK = 4503595332403200ULL,
+};
+
+enum {
+	BPF_F_GET_BRANCH_RECORDS_SIZE = 1,
+};
+
+typedef u64 (*btf_bpf_probe_read_user)(void *, u32, const void __attribute__((btf_type_tag("user"))) *);
+
+typedef u64 (*btf_bpf_probe_read_user_str)(void *, u32, const void __attribute__((btf_type_tag("user"))) *);
+
+typedef u64 (*btf_bpf_probe_read_kernel)(void *, u32, const void *);
+
+typedef u64 (*btf_bpf_probe_read_kernel_str)(void *, u32, const void *);
+
+typedef u64 (*btf_bpf_probe_read_compat)(void *, u32, const void *);
+
+typedef u64 (*btf_bpf_probe_read_compat_str)(void *, u32, const void *);
+
+typedef u64 (*btf_bpf_probe_write_user)(void __attribute__((btf_type_tag("user"))) *, const void *, u32);
+
+typedef u64 (*btf_bpf_trace_printk)(char *, u32, u64, u64, u64);
+
+typedef u64 (*btf_bpf_trace_vprintk)(char *, u32, const void *, u32);
+
+typedef u64 (*btf_bpf_seq_printf)(struct seq_file *, char *, u32, const void *, u32);
+
+typedef u64 (*btf_bpf_seq_write)(struct seq_file *, const void *, u32);
+
+struct btf_ptr;
+
+typedef u64 (*btf_bpf_seq_printf_btf)(struct seq_file *, struct btf_ptr *, u32, u64);
+
+struct btf_ptr {
+	void *ptr;
+	__u32 type_id;
+	__u32 flags;
+};
+
+typedef u64 (*btf_bpf_perf_event_read)(struct bpf_map *, u64);
+
+struct bpf_perf_event_value;
+
+typedef u64 (*btf_bpf_perf_event_read_value)(struct bpf_map *, u64, struct bpf_perf_event_value *, u32);
+
+struct bpf_perf_event_value {
+	__u64 counter;
+	__u64 enabled;
+	__u64 running;
+};
+
+typedef u64 (*btf_bpf_perf_event_output)(struct pt_regs *, struct bpf_map *, u64, void *, u64);
+
+typedef u64 (*btf_bpf_get_current_task)();
+
+typedef u64 (*btf_bpf_get_current_task_btf)();
+
+typedef u64 (*btf_bpf_task_pt_regs)(struct task_struct *);
+
+typedef u64 (*btf_bpf_current_task_under_cgroup)(struct bpf_map *, u32);
+
+typedef u64 (*btf_bpf_send_signal)(u32);
+
+typedef u64 (*btf_bpf_send_signal_thread)(u32);
+
+typedef u64 (*btf_bpf_d_path)(struct path *, char *, u32);
+
+typedef u64 (*btf_bpf_snprintf_btf)(char *, u32, struct btf_ptr *, u32, u64);
+
+typedef u64 (*btf_bpf_get_func_ip_tracing)(void *);
+
+typedef u64 (*btf_bpf_get_func_ip_kprobe)(struct pt_regs *);
+
+typedef u64 (*btf_bpf_get_func_ip_kprobe_multi)(struct pt_regs *);
+
+typedef u64 (*btf_bpf_get_attach_cookie_kprobe_multi)(struct pt_regs *);
+
+typedef u64 (*btf_bpf_get_func_ip_uprobe_multi)(struct pt_regs *);
+
+typedef u64 (*btf_bpf_get_attach_cookie_uprobe_multi)(struct pt_regs *);
+
+typedef u64 (*btf_bpf_get_attach_cookie_trace)(void *);
+
+struct bpf_perf_event_data_kern;
+
+typedef u64 (*btf_bpf_get_attach_cookie_pe)(struct bpf_perf_event_data_kern *);
+
+typedef struct user_pt_regs bpf_user_pt_regs_t;
+
+struct bpf_perf_event_data_kern {
+	bpf_user_pt_regs_t *regs;
+	struct perf_sample_data *data;
+	struct perf_event *event;
+};
+
+typedef u64 (*btf_bpf_get_attach_cookie_tracing)(void *);
+
+typedef u64 (*btf_bpf_get_branch_snapshot)(void *, u32, u64);
+
+typedef u64 (*btf_get_func_arg)(void *, u32, u64 *);
+
+typedef u64 (*btf_get_func_ret)(void *, u64 *);
+
+typedef u64 (*btf_get_func_arg_cnt)(void *);
+
+typedef u64 (*btf_bpf_perf_event_output_tp)(void *, struct bpf_map *, u64, void *, u64);
+
+typedef u64 (*btf_bpf_get_stackid_tp)(void *, struct bpf_map *, u64);
+
+typedef u64 (*btf_bpf_get_stack_tp)(void *, void *, u32, u64);
+
+typedef u64 (*btf_bpf_perf_prog_read_value)(struct bpf_perf_event_data_kern *, struct bpf_perf_event_value *, u32);
+
+typedef u64 (*btf_bpf_read_branch_records)(struct bpf_perf_event_data_kern *, void *, u32, u64);
+
+struct bpf_raw_tracepoint_args;
+
+typedef u64 (*btf_bpf_perf_event_output_raw_tp)(struct bpf_raw_tracepoint_args *, struct bpf_map *, u64, void *, u64);
+
+struct bpf_raw_tracepoint_args {
+	__u64 args[0];
+};
+
+typedef u64 (*btf_bpf_get_stackid_raw_tp)(struct bpf_raw_tracepoint_args *, struct bpf_map *, u64);
+
+typedef u64 (*btf_bpf_get_stack_raw_tp)(struct bpf_raw_tracepoint_args *, void *, u32, u64);
+
+struct trace_event_raw_bpf_trace_printk {
+	struct trace_entry ent;
+	u32 __data_loc_bpf_string;
+	char __data[0];
+};
+
+struct bpf_array_aux;
+
+struct bpf_array {
+	struct bpf_map map;
+	u32 elem_size;
+	u32 index_mask;
+	struct bpf_array_aux *aux;
+	union {
+		struct {
+			struct {} __empty_value;
+			char value[0];
+		};
+		struct {
+			struct {} __empty_ptrs;
+			void *ptrs[0];
+		};
+		struct {
+			struct {} __empty_pptrs;
+			void __attribute__((btf_type_tag("percpu"))) *pptrs[0];
+		};
+	};
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct bpf_array_aux {
+	struct list_head poke_progs;
+	struct bpf_map *map;
+	struct mutex poke_mutex;
+	struct work_struct work;
+};
+
+struct bpf_trace_run_ctx {
+	struct bpf_run_ctx run_ctx;
+	u64 bpf_cookie;
+	bool is_uprobe;
+};
+
+struct trace_uprobe;
+
+struct uprobe_dispatch_data {
+	struct trace_uprobe *tu;
+	unsigned long bp_addr;
+};
+
+struct bpf_uprobe;
+
+struct bpf_uprobe_multi_run_ctx {
+	struct bpf_run_ctx run_ctx;
+	unsigned long entry_ip;
+	struct bpf_uprobe *uprobe;
+};
+
+struct uprobe_consumer {
+	int (*handler)(struct uprobe_consumer *, struct pt_regs *);
+	int (*ret_handler)(struct uprobe_consumer *, unsigned long, struct pt_regs *);
+	bool (*filter)(struct uprobe_consumer *, enum uprobe_filter_ctx, struct mm_struct *);
+	struct uprobe_consumer *next;
+};
+
+struct bpf_uprobe_multi_link;
+
+struct bpf_uprobe {
+	struct bpf_uprobe_multi_link *link;
+	loff_t offset;
+	u64 cookie;
+	struct uprobe_consumer consumer;
+};
+
+struct bpf_uprobe_multi_link {
+	struct path path;
+	struct bpf_link link;
+	u32 cnt;
+	struct bpf_uprobe *uprobes;
+	struct task_struct *task;
+};
+
+struct bpf_trace_module {
+	struct module *module;
+	struct list_head list;
+};
+
+struct trace_event_data_offsets_bpf_trace_printk {
+	u32 bpf_string;
+};
+
+typedef u32 (*bpf_prog_run_fn)(const struct bpf_prog *, const void *);
+
+struct bpf_bprintf_data {
+	u32 *bin_args;
+	char *buf;
+	bool get_bin_args;
+	bool get_buf;
+};
+
+struct bpf_event_entry {
+	struct perf_event *event;
+	struct file *perf_file;
+	struct file *map_file;
+	struct callback_head rcu;
+};
+
+struct __key_reference_with_attributes;
+
+typedef struct __key_reference_with_attributes *key_ref_t;
+
+struct bpf_dynptr_kern {
+	void *data;
+	u32 size;
+	u32 offset;
+};
+
+struct bpf_link_primer {
+	struct bpf_link *link;
+	struct file *file;
+	int fd;
+	u32 id;
+};
+
+struct btf_id_set {
+	u32 cnt;
+	u32 ids[0];
+};
+
+struct bpf_key {
+	struct key *key;
+	bool has_ref;
+};
+
+typedef unsigned long (*bpf_ctx_copy_t)(void *, const void *, unsigned long, unsigned long);
+
+struct perf_event_query_bpf {
+	__u32 ids_len;
+	__u32 prog_cnt;
+	__u32 ids[0];
+};
+
+struct trace_kprobe {
+	struct dyn_event devent;
+	struct kretprobe rp;
+	unsigned long __attribute__((btf_type_tag("percpu"))) *nhit;
+	const char *symbol;
+	struct trace_probe tp;
+};
+
+struct kretprobe_trace_entry_head {
+	struct trace_entry ent;
+	unsigned long func;
+	unsigned long ret_ip;
+};
+
+struct kprobe_trace_entry_head {
+	struct trace_entry ent;
+	unsigned long ip;
+};
+
+struct sym_count_ctx {
+	unsigned int count;
+	const char *name;
+};
+
+typedef void (*btf_trace_error_report_end)(void *, enum error_detector, unsigned long);
+
+struct trace_event_raw_error_report_template {
+	struct trace_entry ent;
+	enum error_detector error_detector;
+	unsigned long id;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_error_report_template {};
+
+typedef void (*btf_trace_cpu_idle)(void *, unsigned int, unsigned int);
+
+typedef void (*btf_trace_cpu_idle_miss)(void *, unsigned int, unsigned int, bool);
+
+typedef void (*btf_trace_powernv_throttle)(void *, int, const char *, int);
+
+typedef void (*btf_trace_pstate_sample)(void *, u32, u32, u32, u32, u64, u64, u64, u32, u32);
+
+typedef void (*btf_trace_cpu_frequency)(void *, unsigned int, unsigned int);
+
+typedef void (*btf_trace_cpu_frequency_limits)(void *, struct cpufreq_policy *);
+
+typedef void (*btf_trace_device_pm_callback_start)(void *, struct device *, const char *, int);
+
+typedef void (*btf_trace_device_pm_callback_end)(void *, struct device *, int);
+
+typedef void (*btf_trace_suspend_resume)(void *, const char *, int, bool);
+
+typedef void (*btf_trace_wakeup_source_activate)(void *, const char *, unsigned int);
+
+typedef void (*btf_trace_wakeup_source_deactivate)(void *, const char *, unsigned int);
+
+typedef void (*btf_trace_clock_enable)(void *, const char *, unsigned int, unsigned int);
+
+typedef void (*btf_trace_clock_disable)(void *, const char *, unsigned int, unsigned int);
+
+typedef void (*btf_trace_clock_set_rate)(void *, const char *, unsigned int, unsigned int);
+
+typedef void (*btf_trace_power_domain_target)(void *, const char *, unsigned int, unsigned int);
+
+typedef void (*btf_trace_pm_qos_add_request)(void *, s32);
+
+typedef void (*btf_trace_pm_qos_update_request)(void *, s32);
+
+typedef void (*btf_trace_pm_qos_remove_request)(void *, s32);
+
+typedef void (*btf_trace_pm_qos_update_target)(void *, enum pm_qos_req_action, int, int);
+
+typedef void (*btf_trace_pm_qos_update_flags)(void *, enum pm_qos_req_action, int, int);
+
+typedef void (*btf_trace_dev_pm_qos_add_request)(void *, const char *, enum dev_pm_qos_req_type, s32);
+
+typedef void (*btf_trace_dev_pm_qos_update_request)(void *, const char *, enum dev_pm_qos_req_type, s32);
+
+typedef void (*btf_trace_dev_pm_qos_remove_request)(void *, const char *, enum dev_pm_qos_req_type, s32);
+
+typedef void (*btf_trace_guest_halt_poll_ns)(void *, bool, unsigned int, unsigned int);
+
+struct trace_event_raw_cpu {
+	struct trace_entry ent;
+	u32 state;
+	u32 cpu_id;
+	char __data[0];
+};
+
+struct trace_event_raw_cpu_idle_miss {
+	struct trace_entry ent;
+	u32 cpu_id;
+	u32 state;
+	bool below;
+	char __data[0];
+};
+
+struct trace_event_raw_powernv_throttle {
+	struct trace_entry ent;
+	int chip_id;
+	u32 __data_loc_reason;
+	int pmax;
+	char __data[0];
+};
+
+struct trace_event_raw_pstate_sample {
+	struct trace_entry ent;
+	u32 core_busy;
+	u32 scaled_busy;
+	u32 from;
+	u32 to;
+	u64 mperf;
+	u64 aperf;
+	u64 tsc;
+	u32 freq;
+	u32 io_boost;
+	char __data[0];
+};
+
+struct trace_event_raw_cpu_frequency_limits {
+	struct trace_entry ent;
+	u32 min_freq;
+	u32 max_freq;
+	u32 cpu_id;
+	char __data[0];
+};
+
+struct trace_event_raw_device_pm_callback_start {
+	struct trace_entry ent;
+	u32 __data_loc_device;
+	u32 __data_loc_driver;
+	u32 __data_loc_parent;
+	u32 __data_loc_pm_ops;
+	int event;
+	char __data[0];
+};
+
+struct trace_event_raw_device_pm_callback_end {
+	struct trace_entry ent;
+	u32 __data_loc_device;
+	u32 __data_loc_driver;
+	int error;
+	char __data[0];
+};
+
+struct trace_event_raw_suspend_resume {
+	struct trace_entry ent;
+	const char *action;
+	int val;
+	bool start;
+	char __data[0];
+};
+
+struct trace_event_raw_wakeup_source {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	u64 state;
+	char __data[0];
+};
+
+struct trace_event_raw_clock {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	u64 state;
+	u64 cpu_id;
+	char __data[0];
+};
+
+struct trace_event_raw_power_domain {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	u64 state;
+	u64 cpu_id;
+	char __data[0];
+};
+
+struct trace_event_raw_cpu_latency_qos_request {
+	struct trace_entry ent;
+	s32 value;
+	char __data[0];
+};
+
+struct trace_event_raw_pm_qos_update {
+	struct trace_entry ent;
+	enum pm_qos_req_action action;
+	int prev_value;
+	int curr_value;
+	char __data[0];
+};
+
+struct trace_event_raw_dev_pm_qos_request {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	enum dev_pm_qos_req_type type;
+	s32 new_value;
+	char __data[0];
+};
+
+struct trace_event_raw_guest_halt_poll_ns {
+	struct trace_entry ent;
+	bool grow;
+	unsigned int new;
+	unsigned int old;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_powernv_throttle {
+	u32 reason;
+};
+
+struct trace_event_data_offsets_wakeup_source {
+	u32 name;
+};
+
+struct trace_event_data_offsets_clock {
+	u32 name;
+};
+
+struct trace_event_data_offsets_power_domain {
+	u32 name;
+};
+
+struct trace_event_data_offsets_dev_pm_qos_request {
+	u32 name;
+};
+
+struct trace_event_data_offsets_cpu {};
+
+struct trace_event_data_offsets_cpu_idle_miss {};
+
+struct trace_event_data_offsets_pstate_sample {};
+
+struct trace_event_data_offsets_cpu_frequency_limits {};
+
+struct trace_event_data_offsets_device_pm_callback_start {
+	u32 device;
+	u32 driver;
+	u32 parent;
+	u32 pm_ops;
+};
+
+struct trace_event_data_offsets_device_pm_callback_end {
+	u32 device;
+	u32 driver;
+};
+
+struct trace_event_data_offsets_suspend_resume {};
+
+struct trace_event_data_offsets_cpu_latency_qos_request {};
+
+struct trace_event_data_offsets_pm_qos_update {};
+
+struct trace_event_data_offsets_guest_halt_poll_ns {};
+
+typedef void (*btf_trace_rpm_suspend)(void *, struct device *, int);
+
+typedef void (*btf_trace_rpm_resume)(void *, struct device *, int);
+
+typedef void (*btf_trace_rpm_idle)(void *, struct device *, int);
+
+typedef void (*btf_trace_rpm_usage)(void *, struct device *, int);
+
+typedef void (*btf_trace_rpm_return_int)(void *, struct device *, unsigned long, int);
+
+typedef void (*btf_trace_rpm_status)(void *, struct device *, enum rpm_status);
+
+struct trace_event_raw_rpm_internal {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	int flags;
+	int usage_count;
+	int disable_depth;
+	int runtime_auto;
+	int request_pending;
+	int irq_safe;
+	int child_count;
+	char __data[0];
+};
+
+struct trace_event_raw_rpm_return_int {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	unsigned long ip;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_rpm_status {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	int status;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_rpm_internal {
+	u32 name;
+};
+
+struct trace_event_data_offsets_rpm_return_int {
+	u32 name;
+};
+
+struct trace_event_data_offsets_rpm_status {
+	u32 name;
+};
+
+struct trace_probe_log {
+	const char *subsystem;
+	const char **argv;
+	int argc;
+	int index;
+};
+
+enum {
+	BTF_KIND_UNKN = 0,
+	BTF_KIND_INT = 1,
+	BTF_KIND_PTR = 2,
+	BTF_KIND_ARRAY = 3,
+	BTF_KIND_STRUCT = 4,
+	BTF_KIND_UNION = 5,
+	BTF_KIND_ENUM = 6,
+	BTF_KIND_FWD = 7,
+	BTF_KIND_TYPEDEF = 8,
+	BTF_KIND_VOLATILE = 9,
+	BTF_KIND_CONST = 10,
+	BTF_KIND_RESTRICT = 11,
+	BTF_KIND_FUNC = 12,
+	BTF_KIND_FUNC_PROTO = 13,
+	BTF_KIND_VAR = 14,
+	BTF_KIND_DATASEC = 15,
+	BTF_KIND_FLOAT = 16,
+	BTF_KIND_DECL_TAG = 17,
+	BTF_KIND_TYPE_TAG = 18,
+	BTF_KIND_ENUM64 = 19,
+	NR_BTF_KINDS = 20,
+	BTF_KIND_MAX = 19,
+};
+
+struct btf_array {
+	__u32 type;
+	__u32 index_type;
+	__u32 nelems;
+};
+
+struct btf_member {
+	__u32 name_off;
+	__u32 type;
+	__u32 offset;
+};
+
+struct btf_anon_stack {
+	u32 tid;
+	u32 offset;
+};
+
+struct uprobe_cpu_buffer {
+	struct mutex mutex;
+	void *buf;
+};
+
+struct trace_uprobe {
+	struct dyn_event devent;
+	struct uprobe_consumer consumer;
+	struct path path;
+	struct inode *inode;
+	char *filename;
+	unsigned long offset;
+	unsigned long ref_ctr_offset;
+	unsigned long nhit;
+	struct trace_probe tp;
+};
+
+struct uprobe_trace_entry_head {
+	struct trace_entry ent;
+	unsigned long vaddr[0];
+};
+
+typedef bool (*filter_func_t)(struct uprobe_consumer *, enum uprobe_filter_ctx, struct mm_struct *);
+
+struct bpf_empty_prog_array {
+	struct bpf_prog_array hdr;
+	struct bpf_prog *null_prog;
+};
+
+struct xdp_mem_info {
+	u32 type;
+	u32 id;
+};
+
+struct xdp_frame {
+	void *data;
+	u16 len;
+	u16 headroom;
+	u32 metasize;
+	struct xdp_mem_info mem;
+	struct net_device *dev_rx;
+	u32 frame_sz;
+	u32 flags;
+};
+
+struct xdp_rxq_info;
+
+struct xdp_txq_info;
+
+struct xdp_buff {
+	void *data;
+	void *data_end;
+	void *data_meta;
+	void *data_hard_start;
+	struct xdp_rxq_info *rxq;
+	struct xdp_txq_info *txq;
+	u32 frame_sz;
+	u32 flags;
+};
+
+struct xdp_rxq_info {
+	struct net_device *dev;
+	u32 queue_index;
+	u32 reg_state;
+	struct xdp_mem_info mem;
+	unsigned int napi_id;
+	u32 frag_size;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct xdp_txq_info {
+	struct net_device *dev;
+};
+
+struct xdp_md {
+	__u32 data;
+	__u32 data_end;
+	__u32 data_meta;
+	__u32 ingress_ifindex;
+	__u32 rx_queue_index;
+	__u32 egress_ifindex;
+};
+
+struct rhash_lock_head {};
+
+typedef void (*btf_trace_xdp_exception)(void *, const struct net_device *, const struct bpf_prog *, u32);
+
+typedef void (*btf_trace_xdp_bulk_tx)(void *, const struct net_device *, int, int, int);
+
+typedef void (*btf_trace_xdp_redirect)(void *, const struct net_device *, const struct bpf_prog *, const void *, int, enum bpf_map_type, u32, u32);
+
+typedef void (*btf_trace_xdp_redirect_err)(void *, const struct net_device *, const struct bpf_prog *, const void *, int, enum bpf_map_type, u32, u32);
+
+typedef void (*btf_trace_xdp_redirect_map)(void *, const struct net_device *, const struct bpf_prog *, const void *, int, enum bpf_map_type, u32, u32);
+
+typedef void (*btf_trace_xdp_redirect_map_err)(void *, const struct net_device *, const struct bpf_prog *, const void *, int, enum bpf_map_type, u32, u32);
+
+struct xdp_cpumap_stats;
+
+typedef void (*btf_trace_xdp_cpumap_kthread)(void *, int, unsigned int, unsigned int, int, struct xdp_cpumap_stats *);
+
+struct xdp_cpumap_stats {
+	unsigned int redirect;
+	unsigned int pass;
+	unsigned int drop;
+};
+
+typedef void (*btf_trace_xdp_cpumap_enqueue)(void *, int, unsigned int, unsigned int, int);
+
+typedef void (*btf_trace_xdp_devmap_xmit)(void *, const struct net_device *, const struct net_device *, int, int, int);
+
+struct xdp_mem_allocator;
+
+typedef void (*btf_trace_mem_disconnect)(void *, const struct xdp_mem_allocator *);
+
+struct xdp_mem_allocator {
+	struct xdp_mem_info mem;
+	union {
+		void *allocator;
+		struct page_pool *page_pool;
+	};
+	struct rhash_head node;
+	struct callback_head rcu;
+};
+
+typedef void (*btf_trace_mem_connect)(void *, const struct xdp_mem_allocator *, const struct xdp_rxq_info *);
+
+typedef void (*btf_trace_mem_return_failed)(void *, const struct xdp_mem_info *, const struct page *);
+
+typedef void (*btf_trace_bpf_xdp_link_attach_failed)(void *, const char *);
+
+struct rnd_state {
+	__u32 s1;
+	__u32 s2;
+	__u32 s3;
+	__u32 s4;
+};
+
+struct bpf_prog_dummy {
+	struct bpf_prog prog;
+};
+
+enum cgroup_bpf_attach_type {
+	CGROUP_BPF_ATTACH_TYPE_INVALID = -1,
+	CGROUP_INET_INGRESS = 0,
+	CGROUP_INET_EGRESS = 1,
+	CGROUP_INET_SOCK_CREATE = 2,
+	CGROUP_SOCK_OPS = 3,
+	CGROUP_DEVICE = 4,
+	CGROUP_INET4_BIND = 5,
+	CGROUP_INET6_BIND = 6,
+	CGROUP_INET4_CONNECT = 7,
+	CGROUP_INET6_CONNECT = 8,
+	CGROUP_INET4_POST_BIND = 9,
+	CGROUP_INET6_POST_BIND = 10,
+	CGROUP_UDP4_SENDMSG = 11,
+	CGROUP_UDP6_SENDMSG = 12,
+	CGROUP_SYSCTL = 13,
+	CGROUP_UDP4_RECVMSG = 14,
+	CGROUP_UDP6_RECVMSG = 15,
+	CGROUP_GETSOCKOPT = 16,
+	CGROUP_SETSOCKOPT = 17,
+	CGROUP_INET4_GETPEERNAME = 18,
+	CGROUP_INET6_GETPEERNAME = 19,
+	CGROUP_INET4_GETSOCKNAME = 20,
+	CGROUP_INET6_GETSOCKNAME = 21,
+	CGROUP_INET_SOCK_RELEASE = 22,
+	CGROUP_LSM_START = 23,
+	CGROUP_LSM_END = 32,
+	MAX_CGROUP_BPF_ATTACH_TYPE = 33,
+};
+
+enum bpf_jit_poke_reason {
+	BPF_POKE_REASON_TAIL_CALL = 0,
+};
+
+enum xdp_action {
+	XDP_ABORTED = 0,
+	XDP_DROP = 1,
+	XDP_PASS = 2,
+	XDP_TX = 3,
+	XDP_REDIRECT = 4,
+};
+
+struct bpf_prog_pack {
+	struct list_head list;
+	void *ptr;
+	unsigned long bitmap[0];
+};
+
+typedef u64 (*btf_bpf_user_rnd_u32)();
+
+typedef u64 (*btf_bpf_get_raw_cpu_id)();
+
+struct trace_event_raw_xdp_exception {
+	struct trace_entry ent;
+	int prog_id;
+	u32 act;
+	int ifindex;
+	char __data[0];
+};
+
+struct trace_event_raw_xdp_bulk_tx {
+	struct trace_entry ent;
+	int ifindex;
+	u32 act;
+	int drops;
+	int sent;
+	int err;
+	char __data[0];
+};
+
+struct _bpf_dtab_netdev {
+	struct net_device *dev;
+};
+
+struct trace_event_raw_xdp_redirect_template {
+	struct trace_entry ent;
+	int prog_id;
+	u32 act;
+	int ifindex;
+	int err;
+	int to_ifindex;
+	u32 map_id;
+	int map_index;
+	char __data[0];
+};
+
+struct trace_event_raw_xdp_cpumap_kthread {
+	struct trace_entry ent;
+	int map_id;
+	u32 act;
+	int cpu;
+	unsigned int drops;
+	unsigned int processed;
+	int sched;
+	unsigned int xdp_pass;
+	unsigned int xdp_drop;
+	unsigned int xdp_redirect;
+	char __data[0];
+};
+
+struct trace_event_raw_xdp_cpumap_enqueue {
+	struct trace_entry ent;
+	int map_id;
+	u32 act;
+	int cpu;
+	unsigned int drops;
+	unsigned int processed;
+	int to_cpu;
+	char __data[0];
+};
+
+struct trace_event_raw_xdp_devmap_xmit {
+	struct trace_entry ent;
+	int from_ifindex;
+	u32 act;
+	int to_ifindex;
+	int drops;
+	int sent;
+	int err;
+	char __data[0];
+};
+
+struct trace_event_raw_mem_disconnect {
+	struct trace_entry ent;
+	const struct xdp_mem_allocator *xa;
+	u32 mem_id;
+	u32 mem_type;
+	const void *allocator;
+	char __data[0];
+};
+
+struct trace_event_raw_mem_connect {
+	struct trace_entry ent;
+	const struct xdp_mem_allocator *xa;
+	u32 mem_id;
+	u32 mem_type;
+	const void *allocator;
+	const struct xdp_rxq_info *rxq;
+	int ifindex;
+	char __data[0];
+};
+
+struct trace_event_raw_mem_return_failed {
+	struct trace_entry ent;
+	const struct page *page;
+	u32 mem_id;
+	u32 mem_type;
+	char __data[0];
+};
+
+struct trace_event_raw_bpf_xdp_link_attach_failed {
+	struct trace_entry ent;
+	u32 __data_loc_msg;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_bpf_xdp_link_attach_failed {
+	u32 msg;
+};
+
+struct trace_event_data_offsets_xdp_exception {};
+
+struct trace_event_data_offsets_xdp_bulk_tx {};
+
+struct trace_event_data_offsets_xdp_redirect_template {};
+
+struct trace_event_data_offsets_xdp_cpumap_kthread {};
+
+struct trace_event_data_offsets_xdp_cpumap_enqueue {};
+
+struct trace_event_data_offsets_xdp_devmap_xmit {};
+
+struct trace_event_data_offsets_mem_disconnect {};
+
+struct trace_event_data_offsets_mem_connect {};
+
+struct trace_event_data_offsets_mem_return_failed {};
+
+struct bpf_mprog_cp {
+	struct bpf_link *link;
+};
+
+struct bpf_mprog_bundle {
+	struct bpf_mprog_entry a;
+	struct bpf_mprog_entry b;
+	struct bpf_mprog_cp cp_items[64];
+	struct bpf_prog *ref;
+	atomic64_t revision;
+	u32 count;
+};
+
+enum {
+	BPF_F_NO_PREALLOC = 1,
+	BPF_F_NO_COMMON_LRU = 2,
+	BPF_F_NUMA_NODE = 4,
+	BPF_F_RDONLY = 8,
+	BPF_F_WRONLY = 16,
+	BPF_F_STACK_BUILD_ID = 32,
+	BPF_F_ZERO_SEED = 64,
+	BPF_F_RDONLY_PROG = 128,
+	BPF_F_WRONLY_PROG = 256,
+	BPF_F_CLONE = 512,
+	BPF_F_MMAPABLE = 1024,
+	BPF_F_PRESERVE_ELEMS = 2048,
+	BPF_F_INNER_MAP = 4096,
+	BPF_F_LINK = 8192,
+	BPF_F_PATH_FD = 16384,
+};
+
+enum {
+	BPF_ANY = 0,
+	BPF_NOEXIST = 1,
+	BPF_EXIST = 2,
+	BPF_F_LOCK = 4,
+};
+
+enum bpf_cmd {
+	BPF_MAP_CREATE = 0,
+	BPF_MAP_LOOKUP_ELEM = 1,
+	BPF_MAP_UPDATE_ELEM = 2,
+	BPF_MAP_DELETE_ELEM = 3,
+	BPF_MAP_GET_NEXT_KEY = 4,
+	BPF_PROG_LOAD = 5,
+	BPF_OBJ_PIN = 6,
+	BPF_OBJ_GET = 7,
+	BPF_PROG_ATTACH = 8,
+	BPF_PROG_DETACH = 9,
+	BPF_PROG_TEST_RUN = 10,
+	BPF_PROG_RUN = 10,
+	BPF_PROG_GET_NEXT_ID = 11,
+	BPF_MAP_GET_NEXT_ID = 12,
+	BPF_PROG_GET_FD_BY_ID = 13,
+	BPF_MAP_GET_FD_BY_ID = 14,
+	BPF_OBJ_GET_INFO_BY_FD = 15,
+	BPF_PROG_QUERY = 16,
+	BPF_RAW_TRACEPOINT_OPEN = 17,
+	BPF_BTF_LOAD = 18,
+	BPF_BTF_GET_FD_BY_ID = 19,
+	BPF_TASK_FD_QUERY = 20,
+	BPF_MAP_LOOKUP_AND_DELETE_ELEM = 21,
+	BPF_MAP_FREEZE = 22,
+	BPF_BTF_GET_NEXT_ID = 23,
+	BPF_MAP_LOOKUP_BATCH = 24,
+	BPF_MAP_LOOKUP_AND_DELETE_BATCH = 25,
+	BPF_MAP_UPDATE_BATCH = 26,
+	BPF_MAP_DELETE_BATCH = 27,
+	BPF_LINK_CREATE = 28,
+	BPF_LINK_UPDATE = 29,
+	BPF_LINK_GET_FD_BY_ID = 30,
+	BPF_LINK_GET_NEXT_ID = 31,
+	BPF_ENABLE_STATS = 32,
+	BPF_ITER_CREATE = 33,
+	BPF_LINK_DETACH = 34,
+	BPF_PROG_BIND_MAP = 35,
+};
+
+enum perf_bpf_event_type {
+	PERF_BPF_EVENT_UNKNOWN = 0,
+	PERF_BPF_EVENT_PROG_LOAD = 1,
+	PERF_BPF_EVENT_PROG_UNLOAD = 2,
+	PERF_BPF_EVENT_MAX = 3,
+};
+
+enum bpf_audit {
+	BPF_AUDIT_LOAD = 0,
+	BPF_AUDIT_UNLOAD = 1,
+	BPF_AUDIT_MAX = 2,
+};
+
+enum bpf_perf_event_type {
+	BPF_PERF_EVENT_UNSPEC = 0,
+	BPF_PERF_EVENT_UPROBE = 1,
+	BPF_PERF_EVENT_URETPROBE = 2,
+	BPF_PERF_EVENT_KPROBE = 3,
+	BPF_PERF_EVENT_KRETPROBE = 4,
+	BPF_PERF_EVENT_TRACEPOINT = 5,
+	BPF_PERF_EVENT_EVENT = 6,
+};
+
+enum bpf_stats_type {
+	BPF_STATS_RUN_TIME = 0,
+};
+
+typedef u64 (*btf_bpf_sys_bpf)(int, union bpf_attr *, u32);
+
+typedef u64 (*btf_bpf_sys_close)(u32);
+
+typedef u64 (*btf_bpf_kallsyms_lookup_name)(const char *, int, int, u64 *);
+
+struct bpf_tracing_link {
+	struct bpf_tramp_link link;
+	enum bpf_attach_type attach_type;
+	struct bpf_trampoline *trampoline;
+	struct bpf_prog *tgt_prog;
+};
+
+struct bpf_raw_tp_link {
+	struct bpf_link link;
+	struct bpf_raw_event_map *btp;
+};
+
+struct bpf_perf_link {
+	struct bpf_link link;
+	struct file *perf_file;
+};
+
+struct bpf_spin_lock {
+	__u32 val;
+};
+
+struct bpf_prog_kstats {
+	u64 nsecs;
+	u64 cnt;
+	u64 misses;
+};
+
+struct bpf_prog_info {
+	__u32 type;
+	__u32 id;
+	__u8 tag[8];
+	__u32 jited_prog_len;
+	__u32 xlated_prog_len;
+	__u64 jited_prog_insns;
+	__u64 xlated_prog_insns;
+	__u64 load_time;
+	__u32 created_by_uid;
+	__u32 nr_map_ids;
+	__u64 map_ids;
+	char name[16];
+	__u32 ifindex;
+	__u32 gpl_compatible: 1;
+	__u64 netns_dev;
+	__u64 netns_ino;
+	__u32 nr_jited_ksyms;
+	__u32 nr_jited_func_lens;
+	__u64 jited_ksyms;
+	__u64 jited_func_lens;
+	__u32 btf_id;
+	__u32 func_info_rec_size;
+	__u64 func_info;
+	__u32 nr_func_info;
+	__u32 nr_line_info;
+	__u64 line_info;
+	__u64 jited_line_info;
+	__u32 nr_jited_line_info;
+	__u32 line_info_rec_size;
+	__u32 jited_line_info_rec_size;
+	__u32 nr_prog_tags;
+	__u64 prog_tags;
+	__u64 run_time_ns;
+	__u64 run_cnt;
+	__u64 recursion_misses;
+	__u32 verified_insns;
+	__u32 attach_btf_obj_id;
+	__u32 attach_btf_id;
+};
+
+struct bpf_map_info {
+	__u32 type;
+	__u32 id;
+	__u32 key_size;
+	__u32 value_size;
+	__u32 max_entries;
+	__u32 map_flags;
+	char name[16];
+	__u32 ifindex;
+	__u32 btf_vmlinux_value_type_id;
+	__u64 netns_dev;
+	__u64 netns_ino;
+	__u32 btf_id;
+	__u32 btf_key_type_id;
+	__u32 btf_value_type_id;
+	__u64 map_extra;
+};
+
+struct bpf_btf_info {
+	__u64 btf;
+	__u32 btf_size;
+	__u32 id;
+	__u64 name;
+	__u32 name_len;
+	__u32 kernel_btf;
+};
+
+struct bpf_attach_target_info {
+	struct btf_func_model fmodel;
+	long tgt_addr;
+	struct module *tgt_mod;
+	const char *tgt_name;
+	const struct btf_type *tgt_type;
+};
+
+struct bpf_verifier_stack_elem {
+	struct bpf_verifier_state st;
+	int insn_idx;
+	int prev_insn_idx;
+	struct bpf_verifier_stack_elem *next;
+	u32 log_pos;
+};
+
+struct bpf_kfunc_desc {
+	struct btf_func_model func_model;
+	u32 func_id;
+	s32 imm;
+	u16 offset;
+	unsigned long addr;
+};
+
+struct bpf_kfunc_desc_tab {
+	struct bpf_kfunc_desc descs[256];
+	u32 nr_descs;
+};
+
+struct bpf_kfunc_btf {
+	struct btf *btf;
+	struct module *module;
+	u16 offset;
+};
+
+struct bpf_kfunc_btf_tab {
+	struct bpf_kfunc_btf descs[256];
+	u32 nr_descs;
+};
+
+struct bpf_reg_types {
+	const enum bpf_reg_type types[10];
+	u32 *btf_id;
+};
+
+enum btf_func_linkage {
+	BTF_FUNC_STATIC = 0,
+	BTF_FUNC_GLOBAL = 1,
+	BTF_FUNC_EXTERN = 2,
+};
+
+enum special_kfunc_type {
+	KF_bpf_obj_new_impl = 0,
+	KF_bpf_obj_drop_impl = 1,
+	KF_bpf_refcount_acquire_impl = 2,
+	KF_bpf_list_push_front_impl = 3,
+	KF_bpf_list_push_back_impl = 4,
+	KF_bpf_list_pop_front = 5,
+	KF_bpf_list_pop_back = 6,
+	KF_bpf_cast_to_kern_ctx = 7,
+	KF_bpf_rdonly_cast = 8,
+	KF_bpf_rcu_read_lock = 9,
+	KF_bpf_rcu_read_unlock = 10,
+	KF_bpf_rbtree_remove = 11,
+	KF_bpf_rbtree_add_impl = 12,
+	KF_bpf_rbtree_first = 13,
+	KF_bpf_dynptr_from_skb = 14,
+	KF_bpf_dynptr_from_xdp = 15,
+	KF_bpf_dynptr_slice = 16,
+	KF_bpf_dynptr_slice_rdwr = 17,
+	KF_bpf_dynptr_clone = 18,
+};
+
+enum bpf_stack_slot_type {
+	STACK_INVALID = 0,
+	STACK_SPILL = 1,
+	STACK_MISC = 2,
+	STACK_ZERO = 3,
+	STACK_DYNPTR = 4,
+	STACK_ITER = 5,
+};
+
+enum bpf_type_flag {
+	PTR_MAYBE_NULL = 256,
+	MEM_RDONLY = 512,
+	MEM_RINGBUF = 1024,
+	MEM_USER = 2048,
+	MEM_PERCPU = 4096,
+	OBJ_RELEASE = 8192,
+	PTR_UNTRUSTED = 16384,
+	MEM_UNINIT = 32768,
+	DYNPTR_TYPE_LOCAL = 65536,
+	DYNPTR_TYPE_RINGBUF = 131072,
+	MEM_FIXED_SIZE = 262144,
+	MEM_ALLOC = 524288,
+	PTR_TRUSTED = 1048576,
+	MEM_RCU = 2097152,
+	NON_OWN_REF = 4194304,
+	DYNPTR_TYPE_SKB = 8388608,
+	DYNPTR_TYPE_XDP = 16777216,
+	__BPF_TYPE_FLAG_MAX = 16777217,
+	__BPF_TYPE_LAST_FLAG = 16777216,
+};
+
+enum bpf_access_src {
+	ACCESS_DIRECT = 1,
+	ACCESS_HELPER = 2,
+};
+
+enum bpf_core_relo_kind {
+	BPF_CORE_FIELD_BYTE_OFFSET = 0,
+	BPF_CORE_FIELD_BYTE_SIZE = 1,
+	BPF_CORE_FIELD_EXISTS = 2,
+	BPF_CORE_FIELD_SIGNED = 3,
+	BPF_CORE_FIELD_LSHIFT_U64 = 4,
+	BPF_CORE_FIELD_RSHIFT_U64 = 5,
+	BPF_CORE_TYPE_ID_LOCAL = 6,
+	BPF_CORE_TYPE_ID_TARGET = 7,
+	BPF_CORE_TYPE_EXISTS = 8,
+	BPF_CORE_TYPE_SIZE = 9,
+	BPF_CORE_ENUMVAL_EXISTS = 10,
+	BPF_CORE_ENUMVAL_VALUE = 11,
+	BPF_CORE_TYPE_MATCHES = 12,
+};
+
+enum {
+	DISCOVERED = 16,
+	EXPLORED = 32,
+	FALLTHROUGH = 1,
+	BRANCH = 2,
+};
+
+enum {
+	DONE_EXPLORING = 0,
+	KEEP_EXPLORING = 1,
+};
+
+enum reg_arg_type {
+	SRC_OP = 0,
+	DST_OP = 1,
+	DST_OP_NO_MARK = 2,
+};
+
+enum {
+	REASON_BOUNDS = -1,
+	REASON_TYPE = -2,
+	REASON_PATHS = -3,
+	REASON_LIMIT = -4,
+	REASON_STACK = -5,
+};
+
+enum kfunc_ptr_arg_type {
+	KF_ARG_PTR_TO_CTX = 0,
+	KF_ARG_PTR_TO_ALLOC_BTF_ID = 1,
+	KF_ARG_PTR_TO_REFCOUNTED_KPTR = 2,
+	KF_ARG_PTR_TO_DYNPTR = 3,
+	KF_ARG_PTR_TO_ITER = 4,
+	KF_ARG_PTR_TO_LIST_HEAD = 5,
+	KF_ARG_PTR_TO_LIST_NODE = 6,
+	KF_ARG_PTR_TO_BTF_ID = 7,
+	KF_ARG_PTR_TO_MEM = 8,
+	KF_ARG_PTR_TO_MEM_SIZE = 9,
+	KF_ARG_PTR_TO_CALLBACK = 10,
+	KF_ARG_PTR_TO_RB_ROOT = 11,
+	KF_ARG_PTR_TO_RB_NODE = 12,
+};
+
+enum {
+	KF_ARG_DYNPTR_ID = 0,
+	KF_ARG_LIST_HEAD_ID = 1,
+	KF_ARG_LIST_NODE_ID = 2,
+	KF_ARG_RB_ROOT_ID = 3,
+	KF_ARG_RB_NODE_ID = 4,
+};
+
+enum {
+	BTF_TRACING_TYPE_TASK = 0,
+	BTF_TRACING_TYPE_FILE = 1,
+	BTF_TRACING_TYPE_VMA = 2,
+	MAX_BTF_TRACING_TYPE = 3,
+};
+
+enum sk_action {
+	SK_DROP = 0,
+	SK_PASS = 1,
+};
+
+enum {
+	AT_PKT_END = -1,
+	BEYOND_PKT_END = -2,
+};
+
+enum {
+	BPF_MAX_LOOPS = 8388608,
+};
+
+struct bpf_iter_meta__safe_trusted {
+	struct seq_file *seq;
+};
+
+struct bpf_iter__task__safe_trusted {
+	struct bpf_iter_meta *meta;
+	struct task_struct *task;
+};
+
+struct linux_binprm__safe_trusted {
+	struct file *file;
+};
+
+struct file__safe_trusted {
+	struct inode *f_inode;
+};
+
+struct dentry__safe_trusted {
+	struct inode *d_inode;
+};
+
+struct socket__safe_trusted {
+	struct sock *sk;
+};
+
+struct task_struct__safe_rcu {
+	const cpumask_t *cpus_ptr;
+	struct css_set __attribute__((btf_type_tag("rcu"))) *cgroups;
+	struct task_struct __attribute__((btf_type_tag("rcu"))) *real_parent;
+	struct task_struct *group_leader;
+};
+
+struct cgroup__safe_rcu {
+	struct kernfs_node *kn;
+};
+
+struct css_set__safe_rcu {
+	struct cgroup *dfl_cgrp;
+};
+
+struct mm_struct__safe_rcu_or_null {
+	struct file __attribute__((btf_type_tag("rcu"))) *exe_file;
+};
+
+struct sk_buff__safe_rcu_or_null {
+	struct sock *sk;
+};
+
+struct request_sock__safe_rcu_or_null {
+	struct sock *sk;
+};
+
+struct btf_var_secinfo {
+	__u32 type;
+	__u32 offset;
+	__u32 size;
+};
+
+struct bpf_iter;
+
+typedef void (*bpf_insn_print_t)(void *, const char *, ...);
+
+typedef const char * (*bpf_insn_revmap_call_t)(void *, const struct bpf_insn *);
+
+typedef const char * (*bpf_insn_print_imm_t)(void *, const struct bpf_insn *, __u64);
+
+struct bpf_insn_cbs {
+	bpf_insn_print_t cb_print;
+	bpf_insn_revmap_call_t cb_call;
+	bpf_insn_print_imm_t cb_imm;
+	void *private_data;
+};
+
+typedef u32 (*bpf_convert_ctx_access_t)(enum bpf_access_type, const struct bpf_insn *, struct bpf_insn *, struct bpf_prog *, u32 *);
+
+struct bpf_core_relo {
+	__u32 insn_off;
+	__u32 type_id;
+	__u32 access_str_off;
+	enum bpf_core_relo_kind kind;
+};
+
+struct bpf_core_ctx {
+	struct bpf_verifier_log *log;
+	const struct btf *btf;
+};
+
+struct bpf_struct_ops {
+	const struct bpf_verifier_ops *verifier_ops;
+	int (*init)(struct btf *);
+	int (*check_member)(const struct btf_type *, const struct btf_member *, const struct bpf_prog *);
+	int (*init_member)(const struct btf_type *, const struct btf_member *, void *, const void *);
+	int (*reg)(void *);
+	void (*unreg)(void *);
+	int (*update)(void *, void *);
+	int (*validate)(void *);
+	const struct btf_type *type;
+	const struct btf_type *value_type;
+	const char *name;
+	struct btf_func_model func_models[64];
+	u32 type_id;
+	u32 value_id;
+	u64 android_kabi_reserved1;
+};
+
+struct bpf_kfunc_call_arg_meta {
+	struct btf *btf;
+	u32 func_id;
+	u32 kfunc_flags;
+	const struct btf_type *func_proto;
+	const char *func_name;
+	u32 ref_obj_id;
+	u8 release_regno;
+	bool r0_rdonly;
+	u32 ret_btf_id;
+	u64 r0_size;
+	u32 subprogno;
+	struct {
+		u64 value;
+		bool found;
+	} arg_constant;
+	struct btf *arg_btf;
+	u32 arg_btf_id;
+	bool arg_owning_ref;
+	struct {
+		struct btf_field *field;
+	} arg_list_head;
+	struct {
+		struct btf_field *field;
+	} arg_rbtree_root;
+	struct {
+		enum bpf_dynptr_type type;
+		u32 id;
+		u32 ref_obj_id;
+	} initialized_dynptr;
+	struct {
+		u8 spi;
+		u8 frameno;
+	} iter;
+	u64 mem_size;
+};
+
+struct bpf_call_arg_meta {
+	struct bpf_map *map_ptr;
+	bool raw_mode;
+	bool pkt_access;
+	u8 release_regno;
+	int regno;
+	int access_size;
+	int mem_size;
+	u64 msize_max_value;
+	int ref_obj_id;
+	int dynptr_id;
+	int map_uid;
+	int func_id;
+	struct btf *btf;
+	u32 btf_id;
+	struct btf *ret_btf;
+	u32 ret_btf_id;
+	u32 subprogno;
+	struct btf_field *kptr_field;
+};
+
+struct bpf_sanitize_info {
+	struct bpf_insn_aux_data aux;
+	bool mask_to_left;
+};
+
+typedef int (*set_callee_state_fn)(struct bpf_verifier_env *, struct bpf_func_state *, struct bpf_func_state *, int);
+
+struct bpf_preload_info;
+
+struct bpf_preload_ops {
+	int (*preload)(struct bpf_preload_info *);
+	struct module *owner;
+};
+
+struct bpf_preload_info {
+	char link_name[16];
+	struct bpf_link *link;
+};
+
+struct tree_descr {
+	const char *name;
+	const struct file_operations *ops;
+	int mode;
+};
+
+enum bpf_type {
+	BPF_TYPE_UNSPEC = 0,
+	BPF_TYPE_PROG = 1,
+	BPF_TYPE_MAP = 2,
+	BPF_TYPE_LINK = 3,
+};
+
+enum {
+	OPT_MODE = 0,
+};
+
+struct map_iter {
+	void *key;
+	bool done;
+};
+
+struct bpf_mount_opts {
+	umode_t mode;
+};
+
+struct bpf_hrtimer {
+	struct hrtimer timer;
+	struct bpf_map *map;
+	struct bpf_prog *prog;
+	void __attribute__((btf_type_tag("rcu"))) *callback_fn;
+	void *value;
+	struct callback_head rcu;
+};
+
+struct bpf_bprintf_buffers {
+	char bin_args[512];
+	char buf[1024];
+};
+
+enum {
+	BPF_F_TIMER_ABS = 1,
+};
+
+typedef u64 (*btf_bpf_map_lookup_elem)(struct bpf_map *, void *);
+
+typedef u64 (*btf_bpf_map_update_elem)(struct bpf_map *, void *, void *, u64);
+
+typedef u64 (*btf_bpf_map_delete_elem)(struct bpf_map *, void *);
+
+typedef u64 (*btf_bpf_map_push_elem)(struct bpf_map *, void *, u64);
+
+typedef u64 (*btf_bpf_map_pop_elem)(struct bpf_map *, void *);
+
+typedef u64 (*btf_bpf_map_peek_elem)(struct bpf_map *, void *);
+
+typedef u64 (*btf_bpf_map_lookup_percpu_elem)(struct bpf_map *, void *, u32);
+
+typedef u64 (*btf_bpf_get_smp_processor_id)();
+
+typedef u64 (*btf_bpf_get_numa_node_id)();
+
+typedef u64 (*btf_bpf_ktime_get_ns)();
+
+typedef u64 (*btf_bpf_ktime_get_boot_ns)();
+
+typedef u64 (*btf_bpf_ktime_get_coarse_ns)();
+
+typedef u64 (*btf_bpf_ktime_get_tai_ns)();
+
+typedef u64 (*btf_bpf_get_current_pid_tgid)();
+
+typedef u64 (*btf_bpf_get_current_uid_gid)();
+
+typedef u64 (*btf_bpf_get_current_comm)(char *, u32);
+
+typedef u64 (*btf_bpf_spin_lock)(struct bpf_spin_lock *);
+
+typedef u64 (*btf_bpf_spin_unlock)(struct bpf_spin_lock *);
+
+typedef u64 (*btf_bpf_jiffies64)();
+
+typedef u64 (*btf_bpf_get_current_cgroup_id)();
+
+typedef u64 (*btf_bpf_get_current_ancestor_cgroup_id)(int);
+
+typedef u64 (*btf_bpf_strtol)(const char *, size_t, u64, long *);
+
+typedef u64 (*btf_bpf_strtoul)(const char *, size_t, u64, unsigned long *);
+
+typedef u64 (*btf_bpf_strncmp)(const char *, u32, const char *);
+
+struct bpf_pidns_info;
+
+typedef u64 (*btf_bpf_get_ns_current_pid_tgid)(u64, u64, struct bpf_pidns_info *, u32);
+
+struct bpf_pidns_info {
+	__u32 pid;
+	__u32 tgid;
+};
+
+typedef u64 (*btf_bpf_event_output_data)(void *, struct bpf_map *, u64, void *, u64);
+
+typedef u64 (*btf_bpf_copy_from_user)(void *, u32, const void __attribute__((btf_type_tag("user"))) *);
+
+typedef u64 (*btf_bpf_copy_from_user_task)(void *, u32, const void __attribute__((btf_type_tag("user"))) *, struct task_struct *, u64);
+
+typedef u64 (*btf_bpf_per_cpu_ptr)(const void *, u32);
+
+typedef u64 (*btf_bpf_this_cpu_ptr)(const void *);
+
+typedef u64 (*btf_bpf_snprintf)(char *, u32, char *, const void *, u32);
+
+struct bpf_timer_kern;
+
+typedef u64 (*btf_bpf_timer_init)(struct bpf_timer_kern *, struct bpf_map *, u64);
+
+struct bpf_timer_kern {
+	struct bpf_hrtimer *timer;
+	struct bpf_spin_lock lock;
+};
+
+typedef u64 (*btf_bpf_timer_set_callback)(struct bpf_timer_kern *, void *, struct bpf_prog_aux *);
+
+typedef u64 (*btf_bpf_timer_start)(struct bpf_timer_kern *, u64, u64);
+
+typedef u64 (*btf_bpf_timer_cancel)(struct bpf_timer_kern *);
+
+typedef u64 (*btf_bpf_kptr_xchg)(void *, void *);
+
+typedef u64 (*btf_bpf_dynptr_from_mem)(void *, u32, u64, struct bpf_dynptr_kern *);
+
+typedef u64 (*btf_bpf_dynptr_read)(void *, u32, const struct bpf_dynptr_kern *, u32, u64);
+
+typedef u64 (*btf_bpf_dynptr_write)(const struct bpf_dynptr_kern *, u32, void *, u32, u64);
+
+typedef u64 (*btf_bpf_dynptr_data)(const struct bpf_dynptr_kern *, u32, u32);
+
+struct bpf_refcount {
+	int: 32;
+};
+
+struct bpf_rb_node_kern {
+	struct rb_node rb_node;
+	void *owner;
+};
+
+struct bpf_rb_node {
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct bpf_timer {
+	long: 64;
+	long: 64;
+};
+
+struct bpf_dynptr {
+	long: 64;
+	long: 64;
+};
+
+struct bpf_list_node_kern {
+	struct list_head list_head;
+	void *owner;
+};
+
+struct bpf_list_node {
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct bpf_list_head {
+	long: 64;
+	long: 64;
+};
+
+struct bpf_rb_root {
+	long: 64;
+	long: 64;
+};
+
+struct btf_id_dtor_kfunc {
+	u32 btf_id;
+	u32 kfunc_btf_id;
+};
+
+enum bpf_iter_feature {
+	BPF_ITER_RESCHED = 1,
+};
+
+struct bpf_iter_target_info {
+	struct list_head list;
+	const struct bpf_iter_reg *reg_info;
+	u32 btf_id;
+};
+
+struct bpf_iter_link {
+	struct bpf_link link;
+	struct bpf_iter_aux_info aux;
+	struct bpf_iter_target_info *tinfo;
+};
+
+struct bpf_iter_priv_data {
+	struct bpf_iter_target_info *tinfo;
+	const struct bpf_iter_seq_info *seq_info;
+	struct bpf_prog *prog;
+	u64 session_id;
+	u64 seq_num;
+	bool done_stop;
+	long: 0;
+	u8 target_private[0];
+};
+
+typedef u64 (*btf_bpf_for_each_map_elem)(struct bpf_map *, void *, void *, u64);
+
+typedef u64 (*btf_bpf_loop)(u32, void *, void *, u64);
+
+struct btf_iter_num;
+
+struct bpf_iter_num {
+	__u64 __opaque[1];
+};
+
+struct bpf_iter_num_kern {
+	int cur;
+	int end;
+};
+
+struct bpf_iter__bpf_map {
+	union {
+		struct bpf_iter_meta *meta;
+	};
+	union {
+		struct bpf_map *map;
+	};
+};
+
+struct bpf_iter_seq_map_info {
+	u32 map_id;
+};
+
+struct mmap_unlock_irq_work {
+	struct irq_work irq_work;
+	struct mm_struct *mm;
+};
+
+enum bpf_task_vma_iter_find_op {
+	task_vma_iter_first_vma = 0,
+	task_vma_iter_next_vma = 1,
+	task_vma_iter_find_vma = 2,
+};
+
+typedef u64 (*btf_bpf_find_vma)(struct task_struct *, u64, bpf_callback_t, void *, u64);
+
+struct bpf_iter__task {
+	union {
+		struct bpf_iter_meta *meta;
+	};
+	union {
+		struct task_struct *task;
+	};
+};
+
+struct bpf_iter_seq_task_common {
+	struct pid_namespace *ns;
+	enum bpf_iter_task_type type;
+	u32 pid;
+	u32 pid_visiting;
+};
+
+struct bpf_iter__task_file {
+	union {
+		struct bpf_iter_meta *meta;
+	};
+	union {
+		struct task_struct *task;
+	};
+	u32 fd;
+	union {
+		struct file *file;
+	};
+};
+
+struct bpf_iter_seq_task_file_info {
+	struct bpf_iter_seq_task_common common;
+	struct task_struct *task;
+	u32 tid;
+	u32 fd;
+};
+
+struct bpf_iter__task_vma {
+	union {
+		struct bpf_iter_meta *meta;
+	};
+	union {
+		struct task_struct *task;
+	};
+	union {
+		struct vm_area_struct *vma;
+	};
+};
+
+struct bpf_iter_seq_task_vma_info {
+	struct bpf_iter_seq_task_common common;
+	struct task_struct *task;
+	struct mm_struct *mm;
+	struct vm_area_struct *vma;
+	u32 tid;
+	unsigned long prev_vm_start;
+	unsigned long prev_vm_end;
+};
+
+struct bpf_iter_seq_task_info {
+	struct bpf_iter_seq_task_common common;
+	u32 tid;
+};
+
+struct bpf_iter__bpf_prog {
+	union {
+		struct bpf_iter_meta *meta;
+	};
+	union {
+		struct bpf_prog *prog;
+	};
+};
+
+struct bpf_iter_seq_prog_info {
+	u32 prog_id;
+};
+
+struct bpf_iter__bpf_link {
+	union {
+		struct bpf_iter_meta *meta;
+	};
+	union {
+		struct bpf_link *link;
+	};
+};
+
+struct bpf_iter_seq_link_info {
+	u32 link_id;
+};
+
+struct pcpu_freelist_node;
+
+struct pcpu_freelist_head {
+	struct pcpu_freelist_node *first;
+	raw_spinlock_t lock;
+};
+
+struct pcpu_freelist {
+	struct pcpu_freelist_head __attribute__((btf_type_tag("percpu"))) *freelist;
+	struct pcpu_freelist_head extralist;
+};
+
+struct bpf_lru_list {
+	struct list_head lists[3];
+	unsigned int counts[2];
+	struct list_head *next_inactive_rotation;
+	raw_spinlock_t lock;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct bpf_lru_locallist;
+
+struct bpf_common_lru {
+	struct bpf_lru_list lru_list;
+	struct bpf_lru_locallist __attribute__((btf_type_tag("percpu"))) *local_list;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct bpf_lru_node;
+
+typedef bool (*del_from_htab_func)(void *, struct bpf_lru_node *);
+
+struct bpf_lru {
+	union {
+		struct bpf_common_lru common_lru;
+		struct bpf_lru_list __attribute__((btf_type_tag("percpu"))) *percpu_lru;
+	};
+	del_from_htab_func del_from_htab;
+	void *del_arg;
+	unsigned int hash_offset;
+	unsigned int nr_scans;
+	bool percpu;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct bucket;
+
+struct htab_elem;
+
+struct bpf_htab {
+	struct bpf_map map;
+	struct bpf_mem_alloc ma;
+	struct bpf_mem_alloc pcpu_ma;
+	struct bucket *buckets;
+	void *elems;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	union {
+		struct pcpu_freelist freelist;
+		struct bpf_lru lru;
+	};
+	struct htab_elem * __attribute__((btf_type_tag("percpu"))) *extra_elems;
+	struct percpu_counter pcount;
+	atomic_t count;
+	bool use_percpu_counter;
+	u32 n_buckets;
+	u32 elem_size;
+	u32 hashrnd;
+	struct lock_class_key lockdep_key;
+	int __attribute__((btf_type_tag("percpu"))) *map_locked[8];
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct bucket {
+	struct hlist_nulls_head head;
+	raw_spinlock_t raw_lock;
+};
+
+struct pcpu_freelist_node {
+	struct pcpu_freelist_node *next;
+};
+
+struct bpf_lru_locallist {
+	struct list_head lists[2];
+	u16 next_steal;
+	raw_spinlock_t lock;
+};
+
+struct bpf_lru_node {
+	struct list_head list;
+	u16 cpu;
+	u8 type;
+	u8 ref;
+};
+
+struct htab_elem {
+	union {
+		struct hlist_nulls_node hash_node;
+		struct {
+			void *padding;
+			union {
+				struct pcpu_freelist_node fnode;
+				struct htab_elem *batch_flink;
+			};
+		};
+	};
+	union {
+		void *ptr_to_pptr;
+		struct bpf_lru_node lru_node;
+	};
+	u32 hash;
+	long: 0;
+	char key[0];
+};
+
+struct bpf_iter_seq_hash_map_info {
+	struct bpf_map *map;
+	struct bpf_htab *htab;
+	void *percpu_value_buf;
+	u32 bucket_id;
+	u32 skip_elems;
+};
+
+struct bpf_iter__bpf_map_elem {
+	union {
+		struct bpf_iter_meta *meta;
+	};
+	union {
+		struct bpf_map *map;
+	};
+	union {
+		void *key;
+	};
+	union {
+		void *value;
+	};
+};
+
+struct prog_poke_elem {
+	struct list_head list;
+	struct bpf_prog_aux *aux;
+};
+
+struct bpf_iter_seq_array_map_info {
+	struct bpf_map *map;
+	void *percpu_value_buf;
+	u32 index;
+};
+
+enum bpf_lru_list_type {
+	BPF_LRU_LIST_T_ACTIVE = 0,
+	BPF_LRU_LIST_T_INACTIVE = 1,
+	BPF_LRU_LIST_T_FREE = 2,
+	BPF_LRU_LOCAL_LIST_T_FREE = 3,
+	BPF_LRU_LOCAL_LIST_T_PENDING = 4,
+};
+
+struct lpm_trie_node;
+
+struct lpm_trie {
+	struct bpf_map map;
+	struct lpm_trie_node __attribute__((btf_type_tag("rcu"))) *root;
+	size_t n_entries;
+	size_t max_prefixlen;
+	size_t data_size;
+	spinlock_t lock;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct lpm_trie_node {
+	struct callback_head rcu;
+	struct lpm_trie_node __attribute__((btf_type_tag("rcu"))) *child[2];
+	u32 prefixlen;
+	u32 flags;
+	u8 data[0];
+};
+
+struct bpf_lpm_trie_key {
+	__u32 prefixlen;
+	__u8 data[0];
+};
+
+struct bpf_bloom_filter {
+	struct bpf_map map;
+	u32 bitset_mask;
+	u32 hash_seed;
+	u32 nr_hash_funcs;
+	unsigned long bitset[0];
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct bpf_cgroup_storage_map {
+	struct bpf_map map;
+	spinlock_t lock;
+	struct rb_root root;
+	struct list_head list;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+enum bpf_cgroup_storage_type {
+	BPF_CGROUP_STORAGE_SHARED = 0,
+	BPF_CGROUP_STORAGE_PERCPU = 1,
+	__BPF_CGROUP_STORAGE_MAX = 2,
+};
+
+struct bpf_queue_stack {
+	struct bpf_map map;
+	raw_spinlock_t lock;
+	u32 head;
+	u32 tail;
+	u32 size;
+	char elements[0];
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+enum {
+	BPF_RINGBUF_BUSY_BIT = 2147483648,
+	BPF_RINGBUF_DISCARD_BIT = 1073741824,
+	BPF_RINGBUF_HDR_SZ = 8,
+};
+
+enum {
+	BPF_RB_NO_WAKEUP = 1,
+	BPF_RB_FORCE_WAKEUP = 2,
+};
+
+enum {
+	BPF_RB_AVAIL_DATA = 0,
+	BPF_RB_RING_SIZE = 1,
+	BPF_RB_CONS_POS = 2,
+	BPF_RB_PROD_POS = 3,
+};
+
+typedef u64 (*btf_bpf_ringbuf_reserve)(struct bpf_map *, u64, u64);
+
+typedef u64 (*btf_bpf_ringbuf_submit)(void *, u64);
+
+typedef u64 (*btf_bpf_ringbuf_discard)(void *, u64);
+
+typedef u64 (*btf_bpf_ringbuf_output)(struct bpf_map *, void *, u64, u64);
+
+typedef u64 (*btf_bpf_ringbuf_query)(struct bpf_map *, u64);
+
+typedef u64 (*btf_bpf_ringbuf_reserve_dynptr)(struct bpf_map *, u32, u64, struct bpf_dynptr_kern *);
+
+typedef u64 (*btf_bpf_ringbuf_submit_dynptr)(struct bpf_dynptr_kern *, u64);
+
+typedef u64 (*btf_bpf_ringbuf_discard_dynptr)(struct bpf_dynptr_kern *, u64);
+
+typedef u64 (*btf_bpf_user_ringbuf_drain)(struct bpf_map *, void *, void *, u64);
+
+struct bpf_ringbuf {
+	wait_queue_head_t waitq;
+	struct irq_work work;
+	u64 mask;
+	struct page **pages;
+	int nr_pages;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	spinlock_t spinlock;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	atomic_t busy;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	unsigned long consumer_pos;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	unsigned long producer_pos;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	char data[0];
+};
+
+struct bpf_ringbuf_map {
+	struct bpf_map map;
+	struct bpf_ringbuf *rb;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct bpf_ringbuf_hdr {
+	u32 len;
+	u32 pg_off;
+};
+
+struct bpf_local_storage_elem {
+	struct hlist_node map_node;
+	struct hlist_node snode;
+	struct bpf_local_storage __attribute__((btf_type_tag("rcu"))) *local_storage;
+	struct callback_head rcu;
+	long: 64;
+	struct bpf_local_storage_data sdata;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct bpf_local_storage_cache {
+	spinlock_t idx_lock;
+	u64 idx_usage_counts[16];
+};
+
+enum {
+	BPF_LOCAL_STORAGE_GET_F_CREATE = 1,
+	BPF_SK_STORAGE_GET_F_CREATE = 1,
+};
+
+typedef u64 (*btf_bpf_task_storage_get_recur)(struct bpf_map *, struct task_struct *, void *, u64, gfp_t);
+
+typedef u64 (*btf_bpf_task_storage_get)(struct bpf_map *, struct task_struct *, void *, u64, gfp_t);
+
+typedef u64 (*btf_bpf_task_storage_delete_recur)(struct bpf_map *, struct task_struct *);
+
+typedef u64 (*btf_bpf_task_storage_delete)(struct bpf_map *, struct task_struct *);
+
+typedef u64 (*btf_bpf_inode_storage_get)(struct bpf_map *, struct inode *, void *, u64, gfp_t);
+
+typedef u64 (*btf_bpf_inode_storage_delete)(struct bpf_map *, struct inode *);
+
+struct bpf_storage_blob {
+	struct bpf_local_storage __attribute__((btf_type_tag("rcu"))) *storage;
+};
+
+struct bpf_tuple {
+	struct bpf_prog *prog;
+	struct bpf_link *link;
+};
+
+enum {
+	BPF_MAX_TRAMP_LINKS = 38,
+};
+
+struct bpf_shim_tramp_link {
+	struct bpf_tramp_link link;
+	struct bpf_trampoline *trampoline;
+};
+
+struct btf_kfunc_hook_filter {
+	btf_kfunc_filter_t filters[16];
+	u32 nr_filters;
+};
+
+struct btf_kfunc_set_tab {
+	struct btf_id_set8 *sets[13];
+	struct btf_kfunc_hook_filter hook_filters[13];
+};
+
+struct btf_id_dtor_kfunc_tab {
+	u32 cnt;
+	struct btf_id_dtor_kfunc dtors[0];
+};
+
+struct btf_struct_metas {
+	u32 cnt;
+	struct btf_struct_meta types[0];
+};
+
+struct nd_opt_hdr {
+	__u8 nd_opt_type;
+	__u8 nd_opt_len;
+};
+
+struct ndisc_options {
+	struct nd_opt_hdr *nd_opt_array[15];
+	struct nd_opt_hdr *nd_opts_ri;
+	struct nd_opt_hdr *nd_opts_ri_end;
+	struct nd_opt_hdr *nd_useropts;
+	struct nd_opt_hdr *nd_useropts_end;
+	struct nd_opt_hdr *nd_802154_opt_array[3];
+};
+
+struct prefix_info {
+	__u8 type;
+	__u8 length;
+	__u8 prefix_len;
+	union {
+		__u8 flags;
+		struct {
+			__u8 reserved: 6;
+			__u8 autoconf: 1;
+			__u8 onlink: 1;
+		};
+	};
+	__be32 valid;
+	__be32 prefered;
+	__be32 reserved2;
+	struct in6_addr prefix;
+};
+
+struct inet_ehash_bucket;
+
+struct inet_bind_hashbucket;
+
+struct inet_listen_hashbucket;
+
+struct inet_hashinfo {
+	struct inet_ehash_bucket *ehash;
+	spinlock_t *ehash_locks;
+	unsigned int ehash_mask;
+	unsigned int ehash_locks_mask;
+	struct kmem_cache *bind_bucket_cachep;
+	struct inet_bind_hashbucket *bhash;
+	struct kmem_cache *bind2_bucket_cachep;
+	struct inet_bind_hashbucket *bhash2;
+	unsigned int bhash_size;
+	unsigned int lhash2_mask;
+	struct inet_listen_hashbucket *lhash2;
+	bool pernet;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct inet_ehash_bucket {
+	struct hlist_nulls_head chain;
+};
+
+struct inet_bind_hashbucket {
+	spinlock_t lock;
+	struct hlist_head chain;
+};
+
+struct inet_listen_hashbucket {
+	spinlock_t lock;
+	struct hlist_nulls_head nulls_head;
+};
+
+struct inet_peer_base {
+	struct rb_root rb_root;
+	seqlock_t lock;
+	int total;
+};
+
+struct ack_sample {
+	u32 pkts_acked;
+	s32 rtt_us;
+	u32 in_flight;
+};
+
+struct rate_sample {
+	u64 prior_mstamp;
+	u32 prior_delivered;
+	u32 prior_delivered_ce;
+	s32 delivered;
+	s32 delivered_ce;
+	long interval_us;
+	u32 snd_interval_us;
+	u32 rcv_interval_us;
+	long rtt_us;
+	int losses;
+	u32 acked_sacked;
+	u32 prior_in_flight;
+	u32 last_end_seq;
+	bool is_app_limited;
+	bool is_retrans;
+	bool is_ack_delayed;
+};
+
+struct lwtunnel_state {
+	__u16 type;
+	__u16 flags;
+	__u16 headroom;
+	atomic_t refcnt;
+	int (*orig_output)(struct net *, struct sock *, struct sk_buff *);
+	int (*orig_input)(struct sk_buff *);
+	struct callback_head rcu;
+	__u8 data[0];
+};
+
+struct sk_psock_progs {
+	struct bpf_prog *msg_parser;
+	struct bpf_prog *stream_parser;
+	struct bpf_prog *stream_verdict;
+	struct bpf_prog *skb_verdict;
+};
+
+struct sk_psock_work_state {
+	u32 len;
+	u32 off;
+};
+
+struct sk_msg;
+
+struct sk_psock {
+	struct sock *sk;
+	struct sock *sk_redir;
+	u32 apply_bytes;
+	u32 cork_bytes;
+	u32 eval;
+	bool redir_ingress;
+	struct sk_msg *cork;
+	struct sk_psock_progs progs;
+	struct sk_buff_head ingress_skb;
+	struct list_head ingress_msg;
+	spinlock_t ingress_lock;
+	unsigned long state;
+	struct list_head link;
+	spinlock_t link_lock;
+	refcount_t refcnt;
+	void (*saved_unhash)(struct sock *);
+	void (*saved_destroy)(struct sock *);
+	void (*saved_close)(struct sock *, long);
+	void (*saved_write_space)(struct sock *);
+	void (*saved_data_ready)(struct sock *);
+	int (*psock_update_sk_prot)(struct sock *, struct sk_psock *, bool);
+	struct proto *sk_proto;
+	struct mutex work_mutex;
+	struct sk_psock_work_state work_state;
+	struct delayed_work work;
+	struct sock *sk_pair;
+	struct rcu_work rwork;
+};
+
+struct sk_msg_sg {
+	u32 start;
+	u32 curr;
+	u32 end;
+	u32 size;
+	u32 copybreak;
+	unsigned long copy[1];
+	struct scatterlist data[19];
+};
+
+struct sk_msg {
+	struct sk_msg_sg sg;
+	void *data;
+	void *data_end;
+	u32 apply_bytes;
+	u32 cork_bytes;
+	u32 flags;
+	struct sk_buff *skb;
+	struct sock *sk_redir;
+	struct sock *sk;
+	struct list_head list;
+};
+
+struct bpf_flow_keys;
+
+struct bpf_sock;
+
+struct __sk_buff {
+	__u32 len;
+	__u32 pkt_type;
+	__u32 mark;
+	__u32 queue_mapping;
+	__u32 protocol;
+	__u32 vlan_present;
+	__u32 vlan_tci;
+	__u32 vlan_proto;
+	__u32 priority;
+	__u32 ingress_ifindex;
+	__u32 ifindex;
+	__u32 tc_index;
+	__u32 cb[5];
+	__u32 hash;
+	__u32 tc_classid;
+	__u32 data;
+	__u32 data_end;
+	__u32 napi_id;
+	__u32 family;
+	__u32 remote_ip4;
+	__u32 local_ip4;
+	__u32 remote_ip6[4];
+	__u32 local_ip6[4];
+	__u32 remote_port;
+	__u32 local_port;
+	__u32 data_meta;
+	union {
+		struct bpf_flow_keys *flow_keys;
+	};
+	__u64 tstamp;
+	__u32 wire_len;
+	__u32 gso_segs;
+	union {
+		struct bpf_sock *sk;
+	};
+	__u32 gso_size;
+	__u8 tstamp_type;
+	__u64 hwtstamp;
+};
+
+struct bpf_sock {
+	__u32 bound_dev_if;
+	__u32 family;
+	__u32 type;
+	__u32 protocol;
+	__u32 mark;
+	__u32 priority;
+	__u32 src_ip4;
+	__u32 src_ip6[4];
+	__u32 src_port;
+	__be16 dst_port;
+	__u32 dst_ip4;
+	__u32 dst_ip6[4];
+	__u32 state;
+	__s32 rx_queue_mapping;
+};
+
+struct bpf_sock_addr {
+	__u32 user_family;
+	__u32 user_ip4;
+	__u32 user_ip6[4];
+	__u32 user_port;
+	__u32 family;
+	__u32 type;
+	__u32 protocol;
+	__u32 msg_src_ip4;
+	__u32 msg_src_ip6[4];
+	union {
+		struct bpf_sock *sk;
+	};
+};
+
+struct bpf_sock_addr_kern {
+	struct sock *sk;
+	struct sockaddr *uaddr;
+	u64 tmp_reg;
+	void *t_ctx;
+	u32 uaddrlen;
+};
+
+struct bpf_sock_ops {
+	__u32 op;
+	union {
+		__u32 args[4];
+		__u32 reply;
+		__u32 replylong[4];
+	};
+	__u32 family;
+	__u32 remote_ip4;
+	__u32 local_ip4;
+	__u32 remote_ip6[4];
+	__u32 local_ip6[4];
+	__u32 remote_port;
+	__u32 local_port;
+	__u32 is_fullsock;
+	__u32 snd_cwnd;
+	__u32 srtt_us;
+	__u32 bpf_sock_ops_cb_flags;
+	__u32 state;
+	__u32 rtt_min;
+	__u32 snd_ssthresh;
+	__u32 rcv_nxt;
+	__u32 snd_nxt;
+	__u32 snd_una;
+	__u32 mss_cache;
+	__u32 ecn_flags;
+	__u32 rate_delivered;
+	__u32 rate_interval_us;
+	__u32 packets_out;
+	__u32 retrans_out;
+	__u32 total_retrans;
+	__u32 segs_in;
+	__u32 data_segs_in;
+	__u32 segs_out;
+	__u32 data_segs_out;
+	__u32 lost_out;
+	__u32 sacked_out;
+	__u32 sk_txhash;
+	__u64 bytes_received;
+	__u64 bytes_acked;
+	union {
+		struct bpf_sock *sk;
+	};
+	union {
+		void *skb_data;
+	};
+	union {
+		void *skb_data_end;
+	};
+	__u32 skb_len;
+	__u32 skb_tcp_flags;
+	__u64 skb_hwtstamp;
+};
+
+struct bpf_sock_ops_kern {
+	struct sock *sk;
+	union {
+		u32 args[4];
+		u32 reply;
+		u32 replylong[4];
+	};
+	struct sk_buff *syn_skb;
+	struct sk_buff *skb;
+	void *skb_data_end;
+	u8 op;
+	u8 is_fullsock;
+	u8 remaining_opt_len;
+	u64 temp;
+};
+
+struct sk_msg_md {
+	union {
+		void *data;
+	};
+	union {
+		void *data_end;
+	};
+	__u32 family;
+	__u32 remote_ip4;
+	__u32 local_ip4;
+	__u32 remote_ip6[4];
+	__u32 local_ip6[4];
+	__u32 remote_port;
+	__u32 local_port;
+	__u32 size;
+	union {
+		struct bpf_sock *sk;
+	};
+};
+
+struct bpf_flow_dissector {
+	struct bpf_flow_keys *flow_keys;
+	const struct sk_buff *skb;
+	const void *data;
+	const void *data_end;
+};
+
+struct bpf_perf_event_data {
+	bpf_user_pt_regs_t regs;
+	__u64 sample_period;
+	__u64 addr;
+};
+
+struct bpf_cgroup_dev_ctx {
+	__u32 access_type;
+	__u32 major;
+	__u32 minor;
+};
+
+struct bpf_sysctl {
+	__u32 write;
+	__u32 file_pos;
+};
+
+struct bpf_sysctl_kern {
+	struct ctl_table_header *head;
+	struct ctl_table *table;
+	void *cur_val;
+	size_t cur_len;
+	void *new_val;
+	size_t new_len;
+	int new_updated;
+	int write;
+	loff_t *ppos;
+	u64 tmp_reg;
+};
+
+struct bpf_sockopt {
+	union {
+		struct bpf_sock *sk;
+	};
+	union {
+		void *optval;
+	};
+	union {
+		void *optval_end;
+	};
+	__s32 level;
+	__s32 optname;
+	__s32 optlen;
+	__s32 retval;
+};
+
+struct bpf_sockopt_kern {
+	struct sock *sk;
+	u8 *optval;
+	u8 *optval_end;
+	s32 level;
+	s32 optname;
+	s32 optlen;
+	struct task_struct *current_task;
+	u64 tmp_reg;
+};
+
+struct sk_reuseport_md {
+	union {
+		void *data;
+	};
+	union {
+		void *data_end;
+	};
+	__u32 len;
+	__u32 eth_protocol;
+	__u32 ip_protocol;
+	__u32 bind_inany;
+	__u32 hash;
+	union {
+		struct bpf_sock *sk;
+	};
+	union {
+		struct bpf_sock *migrating_sk;
+	};
+};
+
+struct sk_reuseport_kern {
+	struct sk_buff *skb;
+	struct sock *sk;
+	struct sock *selected_sk;
+	struct sock *migrating_sk;
+	void *data_end;
+	u32 hash;
+	u32 reuseport_id;
+	bool bind_inany;
+};
+
+struct bpf_sk_lookup {
+	union {
+		union {
+			struct bpf_sock *sk;
+		};
+		__u64 cookie;
+	};
+	__u32 family;
+	__u32 protocol;
+	__u32 remote_ip4;
+	__u32 remote_ip6[4];
+	__be16 remote_port;
+	__u32 local_ip4;
+	__u32 local_ip6[4];
+	__u32 local_port;
+	__u32 ingress_ifindex;
+};
+
+struct bpf_sk_lookup_kern {
+	u16 family;
+	u16 protocol;
+	__be16 sport;
+	u16 dport;
+	struct {
+		__be32 saddr;
+		__be32 daddr;
+	} v4;
+	struct {
+		const struct in6_addr *saddr;
+		const struct in6_addr *daddr;
+	} v6;
+	struct sock *selected_sk;
+	u32 ingress_ifindex;
+	bool no_reuseport;
+};
+
+struct bpf_nf_ctx {
+	const struct nf_hook_state *state;
+	struct sk_buff *skb;
+};
+
+struct fuse_bpf_in_arg {
+	uint32_t size;
+	uint32_t padding;
+	union {
+		const void *value;
+		uint64_t padding2;
+	};
+	union {
+		const void *end_offset;
+		uint64_t padding3;
+	};
+};
+
+struct fuse_bpf_arg {
+	uint32_t size;
+	uint32_t padding;
+	union {
+		void *value;
+		uint64_t padding2;
+	};
+	union {
+		void *end_offset;
+		uint64_t padding3;
+	};
+};
+
+struct fuse_bpf_args {
+	uint64_t nodeid;
+	uint32_t opcode;
+	uint32_t error_in;
+	uint32_t in_numargs;
+	uint32_t out_numargs;
+	uint32_t flags;
+	uint32_t padding;
+	struct fuse_bpf_in_arg in_args[5];
+	struct fuse_bpf_arg out_args[3];
+};
+
+struct bpf_ctx_convert {
+	struct __sk_buff BPF_PROG_TYPE_SOCKET_FILTER_prog;
+	struct sk_buff BPF_PROG_TYPE_SOCKET_FILTER_kern;
+	struct __sk_buff BPF_PROG_TYPE_SCHED_CLS_prog;
+	struct sk_buff BPF_PROG_TYPE_SCHED_CLS_kern;
+	struct __sk_buff BPF_PROG_TYPE_SCHED_ACT_prog;
+	struct sk_buff BPF_PROG_TYPE_SCHED_ACT_kern;
+	struct xdp_md BPF_PROG_TYPE_XDP_prog;
+	struct xdp_buff BPF_PROG_TYPE_XDP_kern;
+	struct __sk_buff BPF_PROG_TYPE_CGROUP_SKB_prog;
+	struct sk_buff BPF_PROG_TYPE_CGROUP_SKB_kern;
+	struct bpf_sock BPF_PROG_TYPE_CGROUP_SOCK_prog;
+	struct sock BPF_PROG_TYPE_CGROUP_SOCK_kern;
+	struct bpf_sock_addr BPF_PROG_TYPE_CGROUP_SOCK_ADDR_prog;
+	struct bpf_sock_addr_kern BPF_PROG_TYPE_CGROUP_SOCK_ADDR_kern;
+	struct __sk_buff BPF_PROG_TYPE_LWT_IN_prog;
+	struct sk_buff BPF_PROG_TYPE_LWT_IN_kern;
+	struct __sk_buff BPF_PROG_TYPE_LWT_OUT_prog;
+	struct sk_buff BPF_PROG_TYPE_LWT_OUT_kern;
+	struct __sk_buff BPF_PROG_TYPE_LWT_XMIT_prog;
+	struct sk_buff BPF_PROG_TYPE_LWT_XMIT_kern;
+	struct __sk_buff BPF_PROG_TYPE_LWT_SEG6LOCAL_prog;
+	struct sk_buff BPF_PROG_TYPE_LWT_SEG6LOCAL_kern;
+	struct bpf_sock_ops BPF_PROG_TYPE_SOCK_OPS_prog;
+	struct bpf_sock_ops_kern BPF_PROG_TYPE_SOCK_OPS_kern;
+	struct __sk_buff BPF_PROG_TYPE_SK_SKB_prog;
+	struct sk_buff BPF_PROG_TYPE_SK_SKB_kern;
+	struct sk_msg_md BPF_PROG_TYPE_SK_MSG_prog;
+	struct sk_msg BPF_PROG_TYPE_SK_MSG_kern;
+	struct __sk_buff BPF_PROG_TYPE_FLOW_DISSECTOR_prog;
+	struct bpf_flow_dissector BPF_PROG_TYPE_FLOW_DISSECTOR_kern;
+	bpf_user_pt_regs_t BPF_PROG_TYPE_KPROBE_prog;
+	struct pt_regs BPF_PROG_TYPE_KPROBE_kern;
+	__u64 BPF_PROG_TYPE_TRACEPOINT_prog;
+	u64 BPF_PROG_TYPE_TRACEPOINT_kern;
+	struct bpf_perf_event_data BPF_PROG_TYPE_PERF_EVENT_prog;
+	struct bpf_perf_event_data_kern BPF_PROG_TYPE_PERF_EVENT_kern;
+	struct bpf_raw_tracepoint_args BPF_PROG_TYPE_RAW_TRACEPOINT_prog;
+	u64 BPF_PROG_TYPE_RAW_TRACEPOINT_kern;
+	struct bpf_raw_tracepoint_args BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE_prog;
+	u64 BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE_kern;
+	void *BPF_PROG_TYPE_TRACING_prog;
+	void *BPF_PROG_TYPE_TRACING_kern;
+	struct bpf_cgroup_dev_ctx BPF_PROG_TYPE_CGROUP_DEVICE_prog;
+	struct bpf_cgroup_dev_ctx BPF_PROG_TYPE_CGROUP_DEVICE_kern;
+	struct bpf_sysctl BPF_PROG_TYPE_CGROUP_SYSCTL_prog;
+	struct bpf_sysctl_kern BPF_PROG_TYPE_CGROUP_SYSCTL_kern;
+	struct bpf_sockopt BPF_PROG_TYPE_CGROUP_SOCKOPT_prog;
+	struct bpf_sockopt_kern BPF_PROG_TYPE_CGROUP_SOCKOPT_kern;
+	__u32 BPF_PROG_TYPE_LIRC_MODE2_prog;
+	u32 BPF_PROG_TYPE_LIRC_MODE2_kern;
+	struct sk_reuseport_md BPF_PROG_TYPE_SK_REUSEPORT_prog;
+	struct sk_reuseport_kern BPF_PROG_TYPE_SK_REUSEPORT_kern;
+	struct bpf_sk_lookup BPF_PROG_TYPE_SK_LOOKUP_prog;
+	struct bpf_sk_lookup_kern BPF_PROG_TYPE_SK_LOOKUP_kern;
+	void *BPF_PROG_TYPE_STRUCT_OPS_prog;
+	void *BPF_PROG_TYPE_STRUCT_OPS_kern;
+	void *BPF_PROG_TYPE_EXT_prog;
+	void *BPF_PROG_TYPE_EXT_kern;
+	void *BPF_PROG_TYPE_LSM_prog;
+	void *BPF_PROG_TYPE_LSM_kern;
+	void *BPF_PROG_TYPE_SYSCALL_prog;
+	void *BPF_PROG_TYPE_SYSCALL_kern;
+	struct bpf_nf_ctx BPF_PROG_TYPE_NETFILTER_prog;
+	struct bpf_nf_ctx BPF_PROG_TYPE_NETFILTER_kern;
+	struct fuse_bpf_args BPF_PROG_TYPE_FUSE_prog;
+	struct fuse_bpf_args BPF_PROG_TYPE_FUSE_kern;
+};
+
+struct bpf_flow_keys {
+	__u16 nhoff;
+	__u16 thoff;
+	__u16 addr_proto;
+	__u8 is_frag;
+	__u8 is_first_frag;
+	__u8 is_encap;
+	__u8 ip_proto;
+	__be16 n_proto;
+	__be16 sport;
+	__be16 dport;
+	union {
+		struct {
+			__be32 ipv4_src;
+			__be32 ipv4_dst;
+		};
+		struct {
+			__u32 ipv6_src[4];
+			__u32 ipv6_dst[4];
+		};
+	};
+	__u32 flags;
+	__be32 flow_label;
+};
+
+struct nf_hook_state {
+	u8 hook;
+	u8 pf;
+	struct net_device *in;
+	struct net_device *out;
+	struct sock *sk;
+	struct net *net;
+	int (*okfn)(struct net *, struct sock *, struct sk_buff *);
+};
+
+struct btf_verifier_env;
+
+struct resolve_vertex;
+
+struct btf_show;
+
+struct btf_kind_operations {
+	s32 (*check_meta)(struct btf_verifier_env *, const struct btf_type *, u32);
+	int (*resolve)(struct btf_verifier_env *, const struct resolve_vertex *);
+	int (*check_member)(struct btf_verifier_env *, const struct btf_type *, const struct btf_member *, const struct btf_type *);
+	int (*check_kflag_member)(struct btf_verifier_env *, const struct btf_type *, const struct btf_member *, const struct btf_type *);
+	void (*log_details)(struct btf_verifier_env *, const struct btf_type *);
+	void (*show)(const struct btf *, const struct btf_type *, u32, void *, u8, struct btf_show *);
+};
+
+struct resolve_vertex {
+	const struct btf_type *t;
+	u32 type_id;
+	u16 next_member;
+};
+
+enum verifier_phase {
+	CHECK_META = 0,
+	CHECK_TYPE = 1,
+};
+
+enum resolve_mode {
+	RESOLVE_TBD = 0,
+	RESOLVE_PTR = 1,
+	RESOLVE_STRUCT_OR_ARRAY = 2,
+};
+
+struct btf_verifier_env {
+	struct btf *btf;
+	u8 *visit_states;
+	struct resolve_vertex stack[32];
+	struct bpf_verifier_log log;
+	u32 log_type_id;
+	u32 top_stack;
+	enum verifier_phase phase;
+	enum resolve_mode resolve_mode;
+};
+
+struct btf_show {
+	u64 flags;
+	void *target;
+	void (*showfn)(struct btf_show *, const char *, va_list);
+	const struct btf *btf;
+	struct {
+		u8 depth;
+		u8 depth_to_show;
+		u8 depth_check;
+		u8 array_member: 1;
+		u8 array_terminated: 1;
+		u16 array_encoding;
+		u32 type_id;
+		int status;
+		const struct btf_type *type;
+		const struct btf_member *member;
+		char name[80];
+	} state;
+	struct {
+		u32 size;
+		void *head;
+		void *data;
+		u8 safe[32];
+	} obj;
+};
+
+struct bpf_cand_cache {
+	const char *name;
+	u32 name_len;
+	u16 kind;
+	u16 cnt;
+	struct {
+		const struct btf *btf;
+		u32 id;
+	} cands[0];
+};
+
+enum bpf_struct_walk_result {
+	WALK_SCALAR = 0,
+	WALK_PTR = 1,
+	WALK_STRUCT = 2,
+};
+
+enum {
+	BTF_MODULE_F_LIVE = 1,
+};
+
+enum btf_kfunc_hook {
+	BTF_KFUNC_HOOK_COMMON = 0,
+	BTF_KFUNC_HOOK_XDP = 1,
+	BTF_KFUNC_HOOK_TC = 2,
+	BTF_KFUNC_HOOK_STRUCT_OPS = 3,
+	BTF_KFUNC_HOOK_TRACING = 4,
+	BTF_KFUNC_HOOK_SYSCALL = 5,
+	BTF_KFUNC_HOOK_FMODRET = 6,
+	BTF_KFUNC_HOOK_CGROUP_SKB = 7,
+	BTF_KFUNC_HOOK_SCHED_ACT = 8,
+	BTF_KFUNC_HOOK_SK_SKB = 9,
+	BTF_KFUNC_HOOK_SOCKET_FILTER = 10,
+	BTF_KFUNC_HOOK_LWT = 11,
+	BTF_KFUNC_HOOK_NETFILTER = 12,
+	BTF_KFUNC_HOOK_MAX = 13,
+};
+
+enum {
+	BTF_KFUNC_SET_MAX_CNT = 256,
+	BTF_DTOR_KFUNC_MAX_CNT = 256,
+	BTF_KFUNC_FILTER_MAX_CNT = 16,
+};
+
+enum {
+	BTF_FIELD_IGNORE = 0,
+	BTF_FIELD_FOUND = 1,
+};
+
+enum visit_state {
+	NOT_VISITED = 0,
+	VISITED = 1,
+	RESOLVED = 2,
+};
+
+enum {
+	BTF_VAR_STATIC = 0,
+	BTF_VAR_GLOBAL_ALLOCATED = 1,
+	BTF_VAR_GLOBAL_EXTERN = 2,
+};
+
+struct btf_module {
+	struct list_head list;
+	struct module *module;
+	struct btf *btf;
+	struct bin_attribute *sysfs_attr;
+	int flags;
+};
+
+typedef u64 (*btf_bpf_btf_find_by_name_kind)(char *, int, u32, int);
+
+struct btf_decl_tag {
+	__s32 component_idx;
+};
+
+struct btf_sec_info {
+	u32 off;
+	u32 len;
+};
+
+struct btf_enum {
+	__u32 name_off;
+	__s32 val;
+};
+
+struct btf_var {
+	__u32 linkage;
+};
+
+struct btf_enum64 {
+	__u32 name_off;
+	__u32 val_lo32;
+	__u32 val_hi32;
+};
+
+struct btf_show_snprintf {
+	struct btf_show show;
+	int len_left;
+	int len;
+};
+
+struct btf_field_info {
+	enum btf_field_type type;
+	u32 off;
+	union {
+		struct {
+			u32 type_id;
+		} kptr;
+		struct {
+			const char *node_name;
+			u32 value_btf_id;
+		} graph_root;
+	};
+};
+
+typedef int (*cmp_r_func_t)(const void *, const void *, const void *);
+
+typedef void (*swap_r_func_t)(void *, void *, int, const void *);
+
+struct bpf_core_cand;
+
+struct bpf_core_cand_list {
+	struct bpf_core_cand *cands;
+	int len;
+};
+
+struct bpf_core_cand {
+	const struct btf *btf;
+	__u32 id;
+};
+
+struct bpf_core_accessor {
+	__u32 type_id;
+	__u32 idx;
+	const char *name;
+};
+
+struct bpf_core_spec {
+	const struct btf *btf;
+	struct bpf_core_accessor spec[64];
+	__u32 root_type_id;
+	enum bpf_core_relo_kind relo_kind;
+	int len;
+	int raw_spec[64];
+	int raw_len;
+	__u32 bit_offset;
+};
+
+struct bpf_core_relo_res {
+	__u64 orig_val;
+	__u64 new_val;
+	bool poison;
+	bool validate;
+	bool fail_memsz_adjust;
+	__u32 orig_sz;
+	__u32 orig_type_id;
+	__u32 new_sz;
+	__u32 new_type_id;
+};
+
+struct bpf_dispatcher_prog {
+	struct bpf_prog *prog;
+	refcount_t users;
+};
+
+struct bpf_dispatcher {
+	struct mutex mutex;
+	void *func;
+	struct bpf_dispatcher_prog progs[48];
+	int num_progs;
+	void *image;
+	void *rw_image;
+	u32 image_off;
+	struct bpf_ksym ksym;
+	u64 android_kabi_reserved1;
+};
+
+enum net_device_flags {
+	IFF_UP = 1,
+	IFF_BROADCAST = 2,
+	IFF_DEBUG = 4,
+	IFF_LOOPBACK = 8,
+	IFF_POINTOPOINT = 16,
+	IFF_NOTRAILERS = 32,
+	IFF_RUNNING = 64,
+	IFF_NOARP = 128,
+	IFF_PROMISC = 256,
+	IFF_ALLMULTI = 512,
+	IFF_MASTER = 1024,
+	IFF_SLAVE = 2048,
+	IFF_MULTICAST = 4096,
+	IFF_PORTSEL = 8192,
+	IFF_AUTOMEDIA = 16384,
+	IFF_DYNAMIC = 32768,
+	IFF_LOWER_UP = 65536,
+	IFF_DORMANT = 131072,
+	IFF_ECHO = 262144,
+};
+
+enum netdev_priv_flags {
+	IFF_802_1Q_VLAN = 1ULL,
+	IFF_EBRIDGE = 2ULL,
+	IFF_BONDING = 4ULL,
+	IFF_ISATAP = 8ULL,
+	IFF_WAN_HDLC = 16ULL,
+	IFF_XMIT_DST_RELEASE = 32ULL,
+	IFF_DONT_BRIDGE = 64ULL,
+	IFF_DISABLE_NETPOLL = 128ULL,
+	IFF_MACVLAN_PORT = 256ULL,
+	IFF_BRIDGE_PORT = 512ULL,
+	IFF_OVS_DATAPATH = 1024ULL,
+	IFF_TX_SKB_SHARING = 2048ULL,
+	IFF_UNICAST_FLT = 4096ULL,
+	IFF_TEAM_PORT = 8192ULL,
+	IFF_SUPP_NOFCS = 16384ULL,
+	IFF_LIVE_ADDR_CHANGE = 32768ULL,
+	IFF_MACVLAN = 65536ULL,
+	IFF_XMIT_DST_RELEASE_PERM = 131072ULL,
+	IFF_L3MDEV_MASTER = 262144ULL,
+	IFF_NO_QUEUE = 524288ULL,
+	IFF_OPENVSWITCH = 1048576ULL,
+	IFF_L3MDEV_SLAVE = 2097152ULL,
+	IFF_TEAM = 4194304ULL,
+	IFF_RXFH_CONFIGURED = 8388608ULL,
+	IFF_PHONY_HEADROOM = 16777216ULL,
+	IFF_MACSEC = 33554432ULL,
+	IFF_NO_RX_HANDLER = 67108864ULL,
+	IFF_FAILOVER = 134217728ULL,
+	IFF_FAILOVER_SLAVE = 268435456ULL,
+	IFF_L3MDEV_RX_HANDLER = 536870912ULL,
+	IFF_NO_ADDRCONF = 1073741824ULL,
+	IFF_TX_SKB_NO_LINEAR = 2147483648ULL,
+	IFF_CHANGE_PROTO_DOWN = 4294967296ULL,
+	IFF_SEE_ALL_HWTSTAMP_REQUESTS = 8589934592ULL,
+};
+
+enum netdev_xdp_act {
+	NETDEV_XDP_ACT_BASIC = 1,
+	NETDEV_XDP_ACT_REDIRECT = 2,
+	NETDEV_XDP_ACT_NDO_XMIT = 4,
+	NETDEV_XDP_ACT_XSK_ZEROCOPY = 8,
+	NETDEV_XDP_ACT_HW_OFFLOAD = 16,
+	NETDEV_XDP_ACT_RX_SG = 32,
+	NETDEV_XDP_ACT_NDO_XMIT_SG = 64,
+	NETDEV_XDP_ACT_MASK = 127,
+};
+
+enum xdp_buff_flags {
+	XDP_FLAGS_HAS_FRAGS = 1,
+	XDP_FLAGS_FRAGS_PF_MEMALLOC = 2,
+};
+
+enum {
+	BPF_F_BROADCAST = 8,
+	BPF_F_EXCLUDE_INGRESS = 16,
+};
+
+enum netdev_cmd {
+	NETDEV_UP = 1,
+	NETDEV_DOWN = 2,
+	NETDEV_REBOOT = 3,
+	NETDEV_CHANGE = 4,
+	NETDEV_REGISTER = 5,
+	NETDEV_UNREGISTER = 6,
+	NETDEV_CHANGEMTU = 7,
+	NETDEV_CHANGEADDR = 8,
+	NETDEV_PRE_CHANGEADDR = 9,
+	NETDEV_GOING_DOWN = 10,
+	NETDEV_CHANGENAME = 11,
+	NETDEV_FEAT_CHANGE = 12,
+	NETDEV_BONDING_FAILOVER = 13,
+	NETDEV_PRE_UP = 14,
+	NETDEV_PRE_TYPE_CHANGE = 15,
+	NETDEV_POST_TYPE_CHANGE = 16,
+	NETDEV_POST_INIT = 17,
+	NETDEV_PRE_UNINIT = 18,
+	NETDEV_RELEASE = 19,
+	NETDEV_NOTIFY_PEERS = 20,
+	NETDEV_JOIN = 21,
+	NETDEV_CHANGEUPPER = 22,
+	NETDEV_RESEND_IGMP = 23,
+	NETDEV_PRECHANGEMTU = 24,
+	NETDEV_CHANGEINFODATA = 25,
+	NETDEV_BONDING_INFO = 26,
+	NETDEV_PRECHANGEUPPER = 27,
+	NETDEV_CHANGELOWERSTATE = 28,
+	NETDEV_UDP_TUNNEL_PUSH_INFO = 29,
+	NETDEV_UDP_TUNNEL_DROP_INFO = 30,
+	NETDEV_CHANGE_TX_QUEUE_LEN = 31,
+	NETDEV_CVLAN_FILTER_PUSH_INFO = 32,
+	NETDEV_CVLAN_FILTER_DROP_INFO = 33,
+	NETDEV_SVLAN_FILTER_PUSH_INFO = 34,
+	NETDEV_SVLAN_FILTER_DROP_INFO = 35,
+	NETDEV_OFFLOAD_XSTATS_ENABLE = 36,
+	NETDEV_OFFLOAD_XSTATS_DISABLE = 37,
+	NETDEV_OFFLOAD_XSTATS_REPORT_USED = 38,
+	NETDEV_OFFLOAD_XSTATS_REPORT_DELTA = 39,
+	NETDEV_XDP_FEAT_CHANGE = 40,
+};
+
+struct bpf_dtab_netdev;
+
+struct bpf_dtab {
+	struct bpf_map map;
+	struct bpf_dtab_netdev __attribute__((btf_type_tag("rcu"))) **netdev_map;
+	struct list_head list;
+	struct hlist_head *dev_index_head;
+	spinlock_t index_lock;
+	unsigned int items;
+	u32 n_buckets;
+	long: 64;
+	long: 64;
+};
+
+struct bpf_devmap_val {
+	__u32 ifindex;
+	union {
+		int fd;
+		__u32 id;
+	} bpf_prog;
+};
+
+struct bpf_dtab_netdev {
+	struct net_device *dev;
+	struct hlist_node index_hlist;
+	struct bpf_prog *xdp_prog;
+	struct callback_head rcu;
+	unsigned int idx;
+	struct bpf_devmap_val val;
+};
+
+typedef struct bio_vec skb_frag_t;
+
+struct skb_shared_info {
+	__u8 flags;
+	__u8 meta_len;
+	__u8 nr_frags;
+	__u8 tx_flags;
+	unsigned short gso_size;
+	unsigned short gso_segs;
+	struct sk_buff *frag_list;
+	struct skb_shared_hwtstamps hwtstamps;
+	unsigned int gso_type;
+	u32 tskey;
+	atomic_t dataref;
+	unsigned int xdp_frags_size;
+	void *destructor_arg;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_oem_data1[3];
+	skb_frag_t frags[17];
+};
+
+struct bpf_nh_params {
+	u32 nh_family;
+	union {
+		u32 ipv4_nh;
+		struct in6_addr ipv6_nh;
+	};
+};
+
+struct bpf_redirect_info {
+	u64 tgt_index;
+	void *tgt_value;
+	struct bpf_map *map;
+	u32 flags;
+	u32 kern_flags;
+	u32 map_id;
+	enum bpf_map_type map_type;
+	struct bpf_nh_params nh;
+};
+
+struct netdev_notifier_info {
+	struct net_device *dev;
+	struct netlink_ext_ack *extack;
+};
+
+struct bpf_cpu_map_entry;
+
+struct xdp_bulk_queue {
+	void *q[8];
+	struct list_head flush_node;
+	struct bpf_cpu_map_entry *obj;
+	unsigned int count;
+};
+
+struct bpf_cpumap_val {
+	__u32 qsize;
+	union {
+		int fd;
+		__u32 id;
+	} bpf_prog;
+};
+
+struct ptr_ring;
+
+struct bpf_cpu_map_entry {
+	u32 cpu;
+	int map_id;
+	struct xdp_bulk_queue __attribute__((btf_type_tag("percpu"))) *bulkq;
+	struct ptr_ring *queue;
+	struct task_struct *kthread;
+	struct bpf_cpumap_val value;
+	struct bpf_prog *prog;
+	struct completion kthread_running;
+	struct rcu_work free_work;
+};
+
+struct ptr_ring {
+	int producer;
+	spinlock_t producer_lock;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	int consumer_head;
+	int consumer_tail;
+	spinlock_t consumer_lock;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	int size;
+	int batch;
+	void **queue;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct bpf_cpu_map {
+	struct bpf_map map;
+	struct bpf_cpu_map_entry __attribute__((btf_type_tag("rcu"))) **cpu_map;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct bpf_prog_offload_ops;
+
+struct bpf_offload_dev {
+	const struct bpf_prog_offload_ops *ops;
+	struct list_head netdevs;
+	void *priv;
+};
+
+struct bpf_prog_offload_ops {
+	int (*insn_hook)(struct bpf_verifier_env *, int, int);
+	int (*finalize)(struct bpf_verifier_env *);
+	int (*replace_insn)(struct bpf_verifier_env *, u32, struct bpf_insn *);
+	int (*remove_insns)(struct bpf_verifier_env *, u32, u32);
+	int (*prepare)(struct bpf_prog *);
+	int (*translate)(struct bpf_prog *);
+	void (*destroy)(struct bpf_prog *);
+	u64 android_kabi_reserved1;
+};
+
+enum {
+	XDP_METADATA_KFUNC_RX_TIMESTAMP = 0,
+	XDP_METADATA_KFUNC_RX_HASH = 1,
+	MAX_XDP_METADATA_KFUNC = 2,
+};
+
+struct bpf_offload_netdev {
+	struct rhash_head l;
+	struct net_device *netdev;
+	struct bpf_offload_dev *offdev;
+	struct list_head progs;
+	struct list_head maps;
+	struct list_head offdev_netdevs;
+};
+
+typedef struct ns_common *ns_get_path_helper_t(void *);
+
+struct ns_get_path_bpf_prog_args {
+	struct bpf_prog *prog;
+	struct bpf_prog_info *info;
+};
+
+struct ns_get_path_bpf_map_args {
+	struct bpf_offloaded_map *offmap;
+	struct bpf_map_info *info;
+};
+
+enum netns_bpf_attach_type {
+	NETNS_BPF_INVALID = -1,
+	NETNS_BPF_FLOW_DISSECTOR = 0,
+	NETNS_BPF_SK_LOOKUP = 1,
+	MAX_NETNS_BPF_ATTACH_TYPE = 2,
+};
+
+struct bpf_netns_link {
+	struct bpf_link link;
+	enum bpf_attach_type type;
+	enum netns_bpf_attach_type netns_type;
+	struct net *net;
+	struct list_head node;
+};
+
+struct mini_Qdisc;
+
+struct tcx_entry {
+	struct mini_Qdisc __attribute__((btf_type_tag("rcu"))) *miniq;
+	struct bpf_mprog_bundle bundle;
+	bool miniq_active;
+	struct callback_head rcu;
+};
+
+struct mini_Qdisc {
+	struct tcf_proto *filter_list;
+	struct tcf_block *block;
+	struct gnet_stats_basic_sync __attribute__((btf_type_tag("percpu"))) *cpu_bstats;
+	struct gnet_stats_queue __attribute__((btf_type_tag("percpu"))) *cpu_qstats;
+	unsigned long rcu_state;
+};
+
+struct tcx_link {
+	struct bpf_link link;
+	struct net_device *dev;
+	u32 location;
+};
+
+enum {
+	BPF_F_SKIP_FIELD_MASK = 255,
+	BPF_F_USER_STACK = 256,
+	BPF_F_FAST_STACK_CMP = 512,
+	BPF_F_REUSE_STACKID = 1024,
+	BPF_F_USER_BUILD_ID = 2048,
+};
+
+enum bpf_stack_build_id_status {
+	BPF_STACK_BUILD_ID_EMPTY = 0,
+	BPF_STACK_BUILD_ID_VALID = 1,
+	BPF_STACK_BUILD_ID_IP = 2,
+};
+
+enum perf_callchain_context {
+	PERF_CONTEXT_HV = 18446744073709551584ULL,
+	PERF_CONTEXT_KERNEL = 18446744073709551488ULL,
+	PERF_CONTEXT_USER = 18446744073709551104ULL,
+	PERF_CONTEXT_GUEST = 18446744073709549568ULL,
+	PERF_CONTEXT_GUEST_KERNEL = 18446744073709549440ULL,
+	PERF_CONTEXT_GUEST_USER = 18446744073709549056ULL,
+	PERF_CONTEXT_MAX = 18446744073709547521ULL,
+};
+
+typedef u64 (*btf_bpf_get_stackid)(struct pt_regs *, struct bpf_map *, u64);
+
+typedef u64 (*btf_bpf_get_stackid_pe)(struct bpf_perf_event_data_kern *, struct bpf_map *, u64);
+
+typedef u64 (*btf_bpf_get_stack)(struct pt_regs *, void *, u32, u64);
+
+typedef u64 (*btf_bpf_get_task_stack)(struct task_struct *, void *, u32, u64);
+
+typedef u64 (*btf_bpf_get_stack_pe)(struct bpf_perf_event_data_kern *, void *, u32, u64);
+
+struct stack_map_bucket;
+
+struct bpf_stack_map {
+	struct bpf_map map;
+	void *elems;
+	struct pcpu_freelist freelist;
+	u32 n_buckets;
+	struct stack_map_bucket *buckets[0];
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct stack_map_bucket {
+	struct pcpu_freelist_node fnode;
+	u32 hash;
+	u32 nr;
+	u64 data[0];
+};
+
+struct bpf_stack_build_id {
+	__s32 status;
+	unsigned char build_id[20];
+	union {
+		__u64 offset;
+		__u64 ip;
+	};
+};
+
+struct cgroup_iter_priv {
+	struct cgroup_subsys_state *start_css;
+	bool visited_all;
+	bool terminate;
+	int order;
+};
+
+struct bpf_iter__cgroup {
+	union {
+		struct bpf_iter_meta *meta;
+	};
+	union {
+		struct cgroup *cgroup;
+	};
+};
+
+typedef u64 (*btf_bpf_cgrp_storage_get)(struct bpf_map *, struct cgroup *, void *, u64, gfp_t);
+
+typedef u64 (*btf_bpf_cgrp_storage_delete)(struct bpf_map *, struct cgroup *);
+
+struct cgroup_lsm_atype {
+	u32 attach_btf_id;
+	int refcnt;
+};
+
+enum {
+	TCPF_ESTABLISHED = 2,
+	TCPF_SYN_SENT = 4,
+	TCPF_SYN_RECV = 8,
+	TCPF_FIN_WAIT1 = 16,
+	TCPF_FIN_WAIT2 = 32,
+	TCPF_TIME_WAIT = 64,
+	TCPF_CLOSE = 128,
+	TCPF_CLOSE_WAIT = 256,
+	TCPF_LAST_ACK = 512,
+	TCPF_LISTEN = 1024,
+	TCPF_CLOSING = 2048,
+	TCPF_NEW_SYN_RECV = 4096,
+};
+
+enum {
+	BPF_F_SYSCTL_BASE_NAME = 1,
+};
+
+typedef u64 (*btf_bpf_get_local_storage)(struct bpf_map *, u64);
+
+typedef u64 (*btf_bpf_get_retval)();
+
+typedef u64 (*btf_bpf_set_retval)(int);
+
+typedef u64 (*btf_bpf_sysctl_get_name)(struct bpf_sysctl_kern *, char *, size_t, u64);
+
+typedef u64 (*btf_bpf_sysctl_get_current_value)(struct bpf_sysctl_kern *, char *, size_t);
+
+typedef u64 (*btf_bpf_sysctl_get_new_value)(struct bpf_sysctl_kern *, char *, size_t);
+
+typedef u64 (*btf_bpf_sysctl_set_new_value)(struct bpf_sysctl_kern *, const char *, size_t);
+
+typedef u64 (*btf_bpf_get_netns_cookie_sockopt)(struct bpf_sockopt_kern *);
+
+struct bpf_cgroup_link;
+
+struct bpf_prog_list {
+	struct hlist_node node;
+	struct bpf_prog *prog;
+	struct bpf_cgroup_link *link;
+	struct bpf_cgroup_storage *storage[2];
+};
+
+struct bpf_cgroup_link {
+	struct bpf_link link;
+	struct cgroup *cgroup;
+	enum bpf_attach_type type;
+};
+
+struct qdisc_skb_cb {
+	struct {
+		unsigned int pkt_len;
+		u16 slave_dev_queue_mapping;
+		u16 tc_classid;
+	};
+	unsigned char data[20];
+};
+
+struct bpf_skb_data_end {
+	struct qdisc_skb_cb qdisc_cb;
+	void *data_meta;
+	void *data_end;
+};
+
+struct bpf_cg_run_ctx {
+	struct bpf_run_ctx run_ctx;
+	const struct bpf_prog_array_item *prog_item;
+	int retval;
+};
+
+struct bpf_sockopt_buf {
+	u8 data[32];
+};
+
+enum {
+	IPPROTO_IP = 0,
+	IPPROTO_ICMP = 1,
+	IPPROTO_IGMP = 2,
+	IPPROTO_IPIP = 4,
+	IPPROTO_TCP = 6,
+	IPPROTO_EGP = 8,
+	IPPROTO_PUP = 12,
+	IPPROTO_UDP = 17,
+	IPPROTO_IDP = 22,
+	IPPROTO_TP = 29,
+	IPPROTO_DCCP = 33,
+	IPPROTO_IPV6 = 41,
+	IPPROTO_RSVP = 46,
+	IPPROTO_GRE = 47,
+	IPPROTO_ESP = 50,
+	IPPROTO_AH = 51,
+	IPPROTO_MTP = 92,
+	IPPROTO_BEETPH = 94,
+	IPPROTO_ENCAP = 98,
+	IPPROTO_PIM = 103,
+	IPPROTO_COMP = 108,
+	IPPROTO_L2TP = 115,
+	IPPROTO_SCTP = 132,
+	IPPROTO_UDPLITE = 136,
+	IPPROTO_MPLS = 137,
+	IPPROTO_ETHERNET = 143,
+	IPPROTO_RAW = 255,
+	IPPROTO_MPTCP = 262,
+	IPPROTO_MAX = 263,
+};
+
+enum sock_type {
+	SOCK_STREAM = 1,
+	SOCK_DGRAM = 2,
+	SOCK_RAW = 3,
+	SOCK_RDM = 4,
+	SOCK_SEQPACKET = 5,
+	SOCK_DCCP = 6,
+	SOCK_PACKET = 10,
+};
+
+enum sock_flags {
+	SOCK_DEAD = 0,
+	SOCK_DONE = 1,
+	SOCK_URGINLINE = 2,
+	SOCK_KEEPOPEN = 3,
+	SOCK_LINGER = 4,
+	SOCK_DESTROY = 5,
+	SOCK_BROADCAST = 6,
+	SOCK_TIMESTAMP = 7,
+	SOCK_ZAPPED = 8,
+	SOCK_USE_WRITE_QUEUE = 9,
+	SOCK_DBG = 10,
+	SOCK_RCVTSTAMP = 11,
+	SOCK_RCVTSTAMPNS = 12,
+	SOCK_LOCALROUTE = 13,
+	SOCK_MEMALLOC = 14,
+	SOCK_TIMESTAMPING_RX_SOFTWARE = 15,
+	SOCK_FASYNC = 16,
+	SOCK_RXQ_OVFL = 17,
+	SOCK_ZEROCOPY = 18,
+	SOCK_WIFI_STATUS = 19,
+	SOCK_NOFCS = 20,
+	SOCK_FILTER_LOCKED = 21,
+	SOCK_SELECT_ERR_QUEUE = 22,
+	SOCK_RCU_FREE = 23,
+	SOCK_TXTIME = 24,
+	SOCK_XDP = 25,
+	SOCK_TSTAMP_NEW = 26,
+	SOCK_RCVMARK = 27,
+};
+
+struct reuseport_array {
+	struct bpf_map map;
+	struct sock __attribute__((btf_type_tag("rcu"))) *ptrs[0];
+};
+
+enum bpf_struct_ops_state {
+	BPF_STRUCT_OPS_STATE_INIT = 0,
+	BPF_STRUCT_OPS_STATE_INUSE = 1,
+	BPF_STRUCT_OPS_STATE_TOBEFREE = 2,
+	BPF_STRUCT_OPS_STATE_READY = 3,
+};
+
+struct bpf_dummy_ops_state;
+
+struct bpf_dummy_ops {
+	int (*test_1)(struct bpf_dummy_ops_state *);
+	int (*test_2)(struct bpf_dummy_ops_state *, int, unsigned short, char, unsigned long);
+	int (*test_sleepable)(struct bpf_dummy_ops_state *);
+};
+
+struct bpf_struct_ops_bpf_dummy_ops {
+	refcount_t refcnt;
+	enum bpf_struct_ops_state state;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct bpf_dummy_ops data;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct bpf_dummy_ops_state {
+	int val;
+};
+
+struct bpf_struct_ops_tcp_congestion_ops {
+	refcount_t refcnt;
+	enum bpf_struct_ops_state state;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct tcp_congestion_ops data;
+};
+
+struct bpf_struct_ops_value {
+	refcount_t refcnt;
+	enum bpf_struct_ops_state state;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	char data[0];
+};
+
+struct bpf_struct_ops_map {
+	struct bpf_map map;
+	struct callback_head rcu;
+	const struct bpf_struct_ops *st_ops;
+	struct mutex lock;
+	struct bpf_link **links;
+	void *image;
+	struct bpf_struct_ops_value *uvalue;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct bpf_struct_ops_value kvalue;
+};
+
+struct bpf_struct_ops_link {
+	struct bpf_link link;
+	struct bpf_map __attribute__((btf_type_tag("rcu"))) *map;
+};
+
+struct bpf_cpumask {
+	cpumask_t cpumask;
+	refcount_t usage;
+};
+
+enum {
+	BTF_SOCK_TYPE_INET = 0,
+	BTF_SOCK_TYPE_INET_CONN = 1,
+	BTF_SOCK_TYPE_INET_REQ = 2,
+	BTF_SOCK_TYPE_INET_TW = 3,
+	BTF_SOCK_TYPE_REQ = 4,
+	BTF_SOCK_TYPE_SOCK = 5,
+	BTF_SOCK_TYPE_SOCK_COMMON = 6,
+	BTF_SOCK_TYPE_TCP = 7,
+	BTF_SOCK_TYPE_TCP_REQ = 8,
+	BTF_SOCK_TYPE_TCP_TW = 9,
+	BTF_SOCK_TYPE_TCP6 = 10,
+	BTF_SOCK_TYPE_UDP = 11,
+	BTF_SOCK_TYPE_UDP6 = 12,
+	BTF_SOCK_TYPE_UNIX = 13,
+	BTF_SOCK_TYPE_MPTCP = 14,
+	BTF_SOCK_TYPE_SOCKET = 15,
+	MAX_BTF_SOCK_TYPE = 16,
+};
+
+enum {
+	BPF_F_BPRM_SECUREEXEC = 1,
+};
+
+typedef u64 (*btf_bpf_bprm_opts_set)(struct linux_binprm *, u64);
+
+typedef u64 (*btf_bpf_ima_inode_hash)(struct inode *, void *, u32);
+
+typedef u64 (*btf_bpf_ima_file_hash)(struct file *, void *, u32);
+
+typedef u64 (*btf_bpf_get_attach_cookie)(void *);
+
+struct xattr {
+	const char *name;
+	void *value;
+	size_t value_len;
+};
+
+struct sembuf {
+	unsigned short sem_num;
+	short sem_op;
+	short sem_flg;
+};
+
+typedef unsigned int kasan_vmalloc_flags_t;
+
+struct perf_event_mmap_page;
+
+struct perf_buffer {
+	refcount_t refcount;
+	struct callback_head callback_head;
+	int nr_pages;
+	int overwrite;
+	int paused;
+	atomic_t poll;
+	local_t head;
+	unsigned int nest;
+	local_t events;
+	local_t wakeup;
+	local_t lost;
+	long watermark;
+	long aux_watermark;
+	spinlock_t event_lock;
+	struct list_head event_list;
+	atomic_t mmap_count;
+	unsigned long mmap_locked;
+	struct user_struct *mmap_user;
+	long aux_head;
+	unsigned int aux_nest;
+	long aux_wakeup;
+	unsigned long aux_pgoff;
+	int aux_nr_pages;
+	int aux_overwrite;
+	atomic_t aux_mmap_count;
+	unsigned long aux_mmap_locked;
+	void (*free_aux)(void *);
+	refcount_t aux_refcount;
+	int aux_in_sampling;
+	void **aux_pages;
+	void *aux_priv;
+	struct perf_event_mmap_page *user_page;
+	void *data_pages[0];
+};
+
+struct perf_event_mmap_page {
+	__u32 version;
+	__u32 compat_version;
+	__u32 lock;
+	__u32 index;
+	__s64 offset;
+	__u64 time_enabled;
+	__u64 time_running;
+	union {
+		__u64 capabilities;
+		struct {
+			__u64 cap_bit0: 1;
+			__u64 cap_bit0_is_deprecated: 1;
+			__u64 cap_user_rdpmc: 1;
+			__u64 cap_user_time: 1;
+			__u64 cap_user_time_zero: 1;
+			__u64 cap_user_time_short: 1;
+			__u64 cap_____res: 58;
+		};
+	};
+	__u16 pmc_width;
+	__u16 time_shift;
+	__u32 time_mult;
+	__u64 time_offset;
+	__u64 time_zero;
+	__u32 size;
+	__u32 __reserved_1;
+	__u64 time_cycles;
+	__u64 time_mask;
+	__u8 __reserved[928];
+	__u64 data_head;
+	__u64 data_tail;
+	__u64 data_offset;
+	__u64 data_size;
+	__u64 aux_head;
+	__u64 aux_tail;
+	__u64 aux_offset;
+	__u64 aux_size;
+};
+
+struct perf_cpu_context {
+	struct perf_event_context ctx;
+	struct perf_event_context *task_ctx;
+	int online;
+	int heap_size;
+	struct perf_event **heap;
+	struct perf_event *heap_default[2];
+};
+
+struct swevent_hlist;
+
+struct swevent_htable {
+	struct swevent_hlist *swevent_hlist;
+	struct mutex hlist_mutex;
+	int hlist_refcount;
+	int recursion[4];
+};
+
+struct swevent_hlist {
+	struct hlist_head heads[256];
+	struct callback_head callback_head;
+};
+
+struct min_heap_callbacks {
+	int elem_size;
+	bool (*less)(const void *, const void *);
+	void (*swp)(void *, void *);
+};
+
+struct pmu_event_list {
+	raw_spinlock_t lock;
+	struct list_head list;
+};
+
+enum perf_addr_filter_action_t {
+	PERF_ADDR_FILTER_ACTION_STOP = 0,
+	PERF_ADDR_FILTER_ACTION_START = 1,
+	PERF_ADDR_FILTER_ACTION_FILTER = 2,
+};
+
+struct match_token {
+	int token;
+	const char *pattern;
+};
+
+enum event_type_t {
+	EVENT_FLEXIBLE = 1,
+	EVENT_PINNED = 2,
+	EVENT_TIME = 4,
+	EVENT_CPU = 8,
+	EVENT_CGROUP = 16,
+	EVENT_ALL = 3,
+};
+
+enum perf_event_type {
+	PERF_RECORD_MMAP = 1,
+	PERF_RECORD_LOST = 2,
+	PERF_RECORD_COMM = 3,
+	PERF_RECORD_EXIT = 4,
+	PERF_RECORD_THROTTLE = 5,
+	PERF_RECORD_UNTHROTTLE = 6,
+	PERF_RECORD_FORK = 7,
+	PERF_RECORD_READ = 8,
+	PERF_RECORD_SAMPLE = 9,
+	PERF_RECORD_MMAP2 = 10,
+	PERF_RECORD_AUX = 11,
+	PERF_RECORD_ITRACE_START = 12,
+	PERF_RECORD_LOST_SAMPLES = 13,
+	PERF_RECORD_SWITCH = 14,
+	PERF_RECORD_SWITCH_CPU_WIDE = 15,
+	PERF_RECORD_NAMESPACES = 16,
+	PERF_RECORD_KSYMBOL = 17,
+	PERF_RECORD_BPF_EVENT = 18,
+	PERF_RECORD_CGROUP = 19,
+	PERF_RECORD_TEXT_POKE = 20,
+	PERF_RECORD_AUX_OUTPUT_HW_ID = 21,
+	PERF_RECORD_MAX = 22,
+};
+
+enum {
+	NET_NS_INDEX = 0,
+	UTS_NS_INDEX = 1,
+	IPC_NS_INDEX = 2,
+	PID_NS_INDEX = 3,
+	USER_NS_INDEX = 4,
+	MNT_NS_INDEX = 5,
+	CGROUP_NS_INDEX = 6,
+	NR_NAMESPACES = 7,
+};
+
+enum perf_event_task_context {
+	perf_invalid_context = -1,
+	perf_hw_context = 0,
+	perf_sw_context = 1,
+	perf_nr_task_contexts = 2,
+};
+
+enum perf_event_read_format {
+	PERF_FORMAT_TOTAL_TIME_ENABLED = 1,
+	PERF_FORMAT_TOTAL_TIME_RUNNING = 2,
+	PERF_FORMAT_ID = 4,
+	PERF_FORMAT_GROUP = 8,
+	PERF_FORMAT_LOST = 16,
+	PERF_FORMAT_MAX = 32,
+};
+
+enum perf_branch_sample_type {
+	PERF_SAMPLE_BRANCH_USER = 1,
+	PERF_SAMPLE_BRANCH_KERNEL = 2,
+	PERF_SAMPLE_BRANCH_HV = 4,
+	PERF_SAMPLE_BRANCH_ANY = 8,
+	PERF_SAMPLE_BRANCH_ANY_CALL = 16,
+	PERF_SAMPLE_BRANCH_ANY_RETURN = 32,
+	PERF_SAMPLE_BRANCH_IND_CALL = 64,
+	PERF_SAMPLE_BRANCH_ABORT_TX = 128,
+	PERF_SAMPLE_BRANCH_IN_TX = 256,
+	PERF_SAMPLE_BRANCH_NO_TX = 512,
+	PERF_SAMPLE_BRANCH_COND = 1024,
+	PERF_SAMPLE_BRANCH_CALL_STACK = 2048,
+	PERF_SAMPLE_BRANCH_IND_JUMP = 4096,
+	PERF_SAMPLE_BRANCH_CALL = 8192,
+	PERF_SAMPLE_BRANCH_NO_FLAGS = 16384,
+	PERF_SAMPLE_BRANCH_NO_CYCLES = 32768,
+	PERF_SAMPLE_BRANCH_TYPE_SAVE = 65536,
+	PERF_SAMPLE_BRANCH_HW_INDEX = 131072,
+	PERF_SAMPLE_BRANCH_PRIV_SAVE = 262144,
+	PERF_SAMPLE_BRANCH_MAX = 524288,
+};
+
+enum perf_probe_config {
+	PERF_PROBE_CONFIG_IS_RETPROBE = 1,
+	PERF_UPROBE_REF_CTR_OFFSET_BITS = 32,
+	PERF_UPROBE_REF_CTR_OFFSET_SHIFT = 32,
+};
+
+enum perf_event_ioc_flags {
+	PERF_IOC_FLAG_GROUP = 1,
+};
+
+enum {
+	IF_STATE_ACTION = 0,
+	IF_STATE_SOURCE = 1,
+	IF_STATE_END = 2,
+};
+
+enum {
+	IF_ACT_NONE = -1,
+	IF_ACT_FILTER = 0,
+	IF_ACT_START = 1,
+	IF_ACT_STOP = 2,
+	IF_SRC_FILE = 3,
+	IF_SRC_KERNEL = 4,
+	IF_SRC_FILEADDR = 5,
+	IF_SRC_KERNELADDR = 6,
+};
+
+struct perf_pmu_events_attr {
+	struct device_attribute attr;
+	u64 id;
+	const char *event_str;
+};
+
+struct perf_addr_filter {
+	struct list_head entry;
+	struct path path;
+	unsigned long offset;
+	unsigned long size;
+	enum perf_addr_filter_action_t action;
+};
+
+typedef void (*event_f)(struct perf_event *, struct perf_cpu_context *, struct perf_event_context *, void *);
+
+struct perf_event_header {
+	__u32 type;
+	__u16 misc;
+	__u16 size;
+};
+
+struct perf_switch_event {
+	struct task_struct *task;
+	struct task_struct *next_prev;
+	struct {
+		struct perf_event_header header;
+		u32 next_prev_pid;
+		u32 next_prev_tid;
+	} event_id;
+};
+
+typedef void perf_iterate_f(struct perf_event *, void *);
+
+struct stop_event_data {
+	struct perf_event *event;
+	unsigned int restart;
+};
+
+typedef int (*remote_function_f)(void *);
+
+struct remote_function_call {
+	struct task_struct *p;
+	remote_function_f func;
+	void *info;
+	int ret;
+};
+
+struct perf_task_event {
+	struct task_struct *task;
+	struct perf_event_context *task_ctx;
+	struct {
+		struct perf_event_header header;
+		u32 pid;
+		u32 ppid;
+		u32 tid;
+		u32 ptid;
+		u64 time;
+	} event_id;
+};
+
+struct perf_ns_link_info {
+	__u64 dev;
+	__u64 ino;
+};
+
+struct perf_comm_event {
+	struct task_struct *task;
+	char *comm;
+	int comm_size;
+	struct {
+		struct perf_event_header header;
+		u32 pid;
+		u32 tid;
+	} event_id;
+};
+
+struct perf_mmap_event {
+	struct vm_area_struct *vma;
+	const char *file_name;
+	int file_size;
+	int maj;
+	int min;
+	u64 ino;
+	u64 ino_generation;
+	u32 prot;
+	u32 flags;
+	u8 build_id[20];
+	u32 build_id_size;
+	struct {
+		struct perf_event_header header;
+		u32 pid;
+		u32 tid;
+		u64 start;
+		u64 len;
+		u64 pgoff;
+	} event_id;
+};
+
+struct perf_aux_event {
+	struct perf_event_header header;
+	u64 offset;
+	u64 size;
+	u64 flags;
+};
+
+struct perf_aux_event___2 {
+	struct perf_event_header header;
+	u64 hw_id;
+};
+
+struct __group_key {
+	int cpu;
+	struct pmu *pmu;
+	struct cgroup *cgroup;
+};
+
+struct min_heap {
+	void *data;
+	int nr;
+	int size;
+};
+
+struct perf_aux_event___3 {
+	struct perf_event_header header;
+	u32 pid;
+	u32 tid;
+};
+
+struct perf_read_event {
+	struct perf_event_header header;
+	u32 pid;
+	u32 tid;
+};
+
+typedef struct {
+	char *from;
+	char *to;
+} substring_t;
+
+struct remote_output {
+	struct perf_buffer *rb;
+	int err;
+};
+
+struct perf_namespaces_event {
+	struct task_struct *task;
+	struct {
+		struct perf_event_header header;
+		u32 pid;
+		u32 tid;
+		u64 nr_namespaces;
+		struct perf_ns_link_info link_info[7];
+	} event_id;
+};
+
+struct perf_ksymbol_event {
+	const char *name;
+	int name_len;
+	struct {
+		struct perf_event_header header;
+		u64 addr;
+		u32 len;
+		u16 ksym_type;
+		u16 flags;
+	} event_id;
+};
+
+struct perf_bpf_event {
+	struct bpf_prog *prog;
+	struct {
+		struct perf_event_header header;
+		u16 type;
+		u16 flags;
+		u32 id;
+		u8 tag[8];
+	} event_id;
+};
+
+struct perf_text_poke_event {
+	const void *old_bytes;
+	const void *new_bytes;
+	size_t pad;
+	u16 old_len;
+	u16 new_len;
+	struct {
+		struct perf_event_header header;
+		u64 addr;
+	} event_id;
+};
+
+struct event_function_struct {
+	struct perf_event *event;
+	event_f func;
+	void *data;
+};
+
+struct perf_read_data {
+	struct perf_event *event;
+	bool group;
+	int ret;
+};
+
+struct callchain_cpus_entries {
+	struct callback_head callback_head;
+	struct perf_callchain_entry *cpu_entries[0];
+};
+
+struct bp_slots_histogram {
+	atomic_t *count;
+};
+
+struct rhltable {
+	struct rhashtable ht;
+};
+
+struct bp_cpuinfo {
+	unsigned int cpu_pinned;
+	struct bp_slots_histogram tsk_pinned;
+};
+
+struct xol_area {
+	wait_queue_head_t wq;
+	atomic_t slot_count;
+	unsigned long *bitmap;
+	struct vm_special_mapping xol_mapping;
+	struct page *pages[2];
+	unsigned long vaddr;
+};
+
+struct uprobe {
+	struct rb_node rb_node;
+	refcount_t ref;
+	struct rw_semaphore register_rwsem;
+	struct rw_semaphore consumer_rwsem;
+	struct list_head pending_list;
+	struct uprobe_consumer *consumers;
+	struct inode *inode;
+	loff_t offset;
+	loff_t ref_ctr_offset;
+	unsigned long flags;
+	struct arch_uprobe arch;
+};
+
+typedef __le32 uprobe_opcode_t;
+
+struct delayed_uprobe {
+	struct list_head list;
+	struct uprobe *uprobe;
+	struct mm_struct *mm;
+};
+
+struct page_vma_mapped_walk {
+	unsigned long pfn;
+	unsigned long nr_pages;
+	unsigned long pgoff;
+	struct vm_area_struct *vma;
+	unsigned long address;
+	pmd_t *pmd;
+	pte_t *pte;
+	spinlock_t *ptl;
+	unsigned int flags;
+};
+
+typedef unsigned int fgf_t;
+
+struct __uprobe_key {
+	struct inode *inode;
+	loff_t offset;
+};
+
+struct map_info {
+	struct map_info *next;
+	struct mm_struct *mm;
+	unsigned long vaddr;
+};
+
+typedef int filler_t(struct file *, struct folio *);
+
+struct static_key_deferred {
+	struct static_key key;
+	unsigned long timeout;
+	struct delayed_work work;
+};
+
+struct static_key_mod {
+	struct static_key_mod *next;
+	struct jump_entry *entries;
+	struct module *mod;
+};
+
+struct key_preparsed_payload {
+	const char *orig_description;
+	char *description;
+	union key_payload payload;
+	const void *data;
+	size_t datalen;
+	size_t quotalen;
+	time64_t expiry;
+};
+
+struct key_match_data {
+	bool (*cmp)(const struct key *, const struct key_match_data *);
+	const void *raw_data;
+	void *preparsed;
+	unsigned int lookup_type;
+};
+
+enum kernel_pkey_operation {
+	kernel_pkey_encrypt = 0,
+	kernel_pkey_decrypt = 1,
+	kernel_pkey_sign = 2,
+	kernel_pkey_verify = 3,
+};
+
+struct kernel_pkey_params {
+	struct key *key;
+	const char *encoding;
+	const char *hash_algo;
+	char *info;
+	__u32 in_len;
+	union {
+		__u32 out_len;
+		__u32 in2_len;
+	};
+	enum kernel_pkey_operation op: 8;
+};
+
+struct kernel_pkey_query {
+	__u32 supported_ops;
+	__u32 key_size;
+	__u16 max_data_size;
+	__u16 max_sig_size;
+	__u16 max_enc_size;
+	__u16 max_dec_size;
+};
+
+enum OID {
+	OID_id_dsa_with_sha1 = 0,
+	OID_id_dsa = 1,
+	OID_id_ecPublicKey = 2,
+	OID_id_prime192v1 = 3,
+	OID_id_prime256v1 = 4,
+	OID_id_ecdsa_with_sha1 = 5,
+	OID_id_ecdsa_with_sha224 = 6,
+	OID_id_ecdsa_with_sha256 = 7,
+	OID_id_ecdsa_with_sha384 = 8,
+	OID_id_ecdsa_with_sha512 = 9,
+	OID_rsaEncryption = 10,
+	OID_md2WithRSAEncryption = 11,
+	OID_md3WithRSAEncryption = 12,
+	OID_md4WithRSAEncryption = 13,
+	OID_sha1WithRSAEncryption = 14,
+	OID_sha256WithRSAEncryption = 15,
+	OID_sha384WithRSAEncryption = 16,
+	OID_sha512WithRSAEncryption = 17,
+	OID_sha224WithRSAEncryption = 18,
+	OID_data = 19,
+	OID_signed_data = 20,
+	OID_email_address = 21,
+	OID_contentType = 22,
+	OID_messageDigest = 23,
+	OID_signingTime = 24,
+	OID_smimeCapabilites = 25,
+	OID_smimeAuthenticatedAttrs = 26,
+	OID_md2 = 27,
+	OID_md4 = 28,
+	OID_md5 = 29,
+	OID_mskrb5 = 30,
+	OID_krb5 = 31,
+	OID_krb5u2u = 32,
+	OID_msIndirectData = 33,
+	OID_msStatementType = 34,
+	OID_msSpOpusInfo = 35,
+	OID_msPeImageDataObjId = 36,
+	OID_msIndividualSPKeyPurpose = 37,
+	OID_msOutlookExpress = 38,
+	OID_ntlmssp = 39,
+	OID_negoex = 40,
+	OID_spnego = 41,
+	OID_IAKerb = 42,
+	OID_PKU2U = 43,
+	OID_Scram = 44,
+	OID_certAuthInfoAccess = 45,
+	OID_sha1 = 46,
+	OID_id_ansip384r1 = 47,
+	OID_sha256 = 48,
+	OID_sha384 = 49,
+	OID_sha512 = 50,
+	OID_sha224 = 51,
+	OID_commonName = 52,
+	OID_surname = 53,
+	OID_countryName = 54,
+	OID_locality = 55,
+	OID_stateOrProvinceName = 56,
+	OID_organizationName = 57,
+	OID_organizationUnitName = 58,
+	OID_title = 59,
+	OID_description = 60,
+	OID_name = 61,
+	OID_givenName = 62,
+	OID_initials = 63,
+	OID_generationalQualifier = 64,
+	OID_subjectKeyIdentifier = 65,
+	OID_keyUsage = 66,
+	OID_subjectAltName = 67,
+	OID_issuerAltName = 68,
+	OID_basicConstraints = 69,
+	OID_crlDistributionPoints = 70,
+	OID_certPolicies = 71,
+	OID_authorityKeyIdentifier = 72,
+	OID_extKeyUsage = 73,
+	OID_NetlogonMechanism = 74,
+	OID_appleLocalKdcSupported = 75,
+	OID_gostCPSignA = 76,
+	OID_gostCPSignB = 77,
+	OID_gostCPSignC = 78,
+	OID_gost2012PKey256 = 79,
+	OID_gost2012PKey512 = 80,
+	OID_gost2012Digest256 = 81,
+	OID_gost2012Digest512 = 82,
+	OID_gost2012Signature256 = 83,
+	OID_gost2012Signature512 = 84,
+	OID_gostTC26Sign256A = 85,
+	OID_gostTC26Sign256B = 86,
+	OID_gostTC26Sign256C = 87,
+	OID_gostTC26Sign256D = 88,
+	OID_gostTC26Sign512A = 89,
+	OID_gostTC26Sign512B = 90,
+	OID_gostTC26Sign512C = 91,
+	OID_sm2 = 92,
+	OID_sm3 = 93,
+	OID_SM2_with_SM3 = 94,
+	OID_sm3WithRSAEncryption = 95,
+	OID_TPMLoadableKey = 96,
+	OID_TPMImportableKey = 97,
+	OID_TPMSealedData = 98,
+	OID__NR = 99,
+};
+
+struct x509_certificate;
+
+struct pkcs7_signed_info;
+
+struct pkcs7_message {
+	struct x509_certificate *certs;
+	struct x509_certificate *crl;
+	struct pkcs7_signed_info *signed_infos;
+	u8 version;
+	bool have_authattrs;
+	enum OID data_type;
+	size_t data_len;
+	size_t data_hdrlen;
+	const void *data;
+};
+
+struct compact_control;
+
+struct capture_control {
+	struct compact_control *cc;
+	struct page *page;
+};
+
+struct compact_control {
+	struct list_head freepages;
+	struct list_head migratepages;
+	unsigned int nr_freepages;
+	unsigned int nr_migratepages;
+	unsigned long free_pfn;
+	unsigned long migrate_pfn;
+	unsigned long fast_start_pfn;
+	struct zone *zone;
+	unsigned long total_migrate_scanned;
+	unsigned long total_free_scanned;
+	unsigned short fast_search_fail;
+	short search_order;
+	const gfp_t gfp_mask;
+	int order;
+	int migratetype;
+	const unsigned int alloc_flags;
+	const int highest_zoneidx;
+	enum migrate_mode mode;
+	bool ignore_skip_hint;
+	bool no_set_skip_hint;
+	bool ignore_block_suitable;
+	bool direct_compaction;
+	bool proactive_compaction;
+	bool whole_zone;
+	bool contended;
+	bool finish_pageblock;
+	bool alloc_contig;
+};
+
+struct fid {
+	union {
+		struct {
+			u32 ino;
+			u32 gen;
+			u32 parent_ino;
+			u32 parent_gen;
+		} i32;
+		struct {
+			u32 block;
+			u16 partref;
+			u16 parent_partref;
+			u32 generation;
+			u32 parent_block;
+			u32 parent_generation;
+		} udf;
+		struct {
+			struct {} __empty_raw;
+			__u32 raw[0];
+		};
+	};
+};
+
+typedef void (*btf_trace_mm_filemap_delete_from_page_cache)(void *, struct folio *);
+
+typedef void (*btf_trace_mm_filemap_add_to_page_cache)(void *, struct folio *);
+
+typedef void (*btf_trace_filemap_set_wb_err)(void *, struct address_space *, errseq_t);
+
+typedef void (*btf_trace_file_check_and_advance_wb_err)(void *, struct file *, errseq_t);
+
+enum mapping_flags {
+	AS_EIO = 0,
+	AS_ENOSPC = 1,
+	AS_MM_ALL_LOCKS = 2,
+	AS_UNEVICTABLE = 3,
+	AS_EXITING = 4,
+	AS_NO_WRITEBACK_TAGS = 5,
+	AS_LARGE_FOLIO_SUPPORT = 6,
+	AS_RELEASE_ALWAYS = 7,
+	AS_STABLE_WRITES = 8,
+};
+
+enum behavior {
+	EXCLUSIVE = 0,
+	SHARED = 1,
+	DROP = 2,
+};
+
+enum vm_event_item {
+	PGPGIN = 0,
+	PGPGOUT = 1,
+	PSWPIN = 2,
+	PSWPOUT = 3,
+	PGALLOC_DMA32 = 4,
+	PGALLOC_NORMAL = 5,
+	PGALLOC_MOVABLE = 6,
+	PGALLOC_NOSPLIT = 7,
+	PGALLOC_NOMERGE = 8,
+	ALLOCSTALL_DMA32 = 9,
+	ALLOCSTALL_NORMAL = 10,
+	ALLOCSTALL_MOVABLE = 11,
+	ALLOCSTALL_NOSPLIT = 12,
+	ALLOCSTALL_NOMERGE = 13,
+	PGSCAN_SKIP_DMA32 = 14,
+	PGSCAN_SKIP_NORMAL = 15,
+	PGSCAN_SKIP_MOVABLE = 16,
+	PGSCAN_SKIP_NOSPLIT = 17,
+	PGSCAN_SKIP_NOMERGE = 18,
+	PGFREE = 19,
+	PGACTIVATE = 20,
+	PGDEACTIVATE = 21,
+	PGLAZYFREE = 22,
+	PGFAULT = 23,
+	PGMAJFAULT = 24,
+	PGLAZYFREED = 25,
+	PGREFILL = 26,
+	PGREUSE = 27,
+	PGSTEAL_KSWAPD = 28,
+	PGSTEAL_DIRECT = 29,
+	PGSTEAL_KHUGEPAGED = 30,
+	PGDEMOTE_KSWAPD = 31,
+	PGDEMOTE_DIRECT = 32,
+	PGDEMOTE_KHUGEPAGED = 33,
+	PGSCAN_KSWAPD = 34,
+	PGSCAN_DIRECT = 35,
+	PGSCAN_KHUGEPAGED = 36,
+	PGSCAN_DIRECT_THROTTLE = 37,
+	PGSCAN_ANON = 38,
+	PGSCAN_FILE = 39,
+	PGSTEAL_ANON = 40,
+	PGSTEAL_FILE = 41,
+	PGINODESTEAL = 42,
+	SLABS_SCANNED = 43,
+	KSWAPD_INODESTEAL = 44,
+	KSWAPD_LOW_WMARK_HIT_QUICKLY = 45,
+	KSWAPD_HIGH_WMARK_HIT_QUICKLY = 46,
+	PAGEOUTRUN = 47,
+	PGROTATED = 48,
+	DROP_PAGECACHE = 49,
+	DROP_SLAB = 50,
+	OOM_KILL = 51,
+	PGMIGRATE_SUCCESS = 52,
+	PGMIGRATE_FAIL = 53,
+	THP_MIGRATION_SUCCESS = 54,
+	THP_MIGRATION_FAIL = 55,
+	THP_MIGRATION_SPLIT = 56,
+	COMPACTMIGRATE_SCANNED = 57,
+	COMPACTFREE_SCANNED = 58,
+	COMPACTISOLATED = 59,
+	COMPACTSTALL = 60,
+	COMPACTFAIL = 61,
+	COMPACTSUCCESS = 62,
+	KCOMPACTD_WAKE = 63,
+	KCOMPACTD_MIGRATE_SCANNED = 64,
+	KCOMPACTD_FREE_SCANNED = 65,
+	CMA_ALLOC_SUCCESS = 66,
+	CMA_ALLOC_FAIL = 67,
+	UNEVICTABLE_PGCULLED = 68,
+	UNEVICTABLE_PGSCANNED = 69,
+	UNEVICTABLE_PGRESCUED = 70,
+	UNEVICTABLE_PGMLOCKED = 71,
+	UNEVICTABLE_PGMUNLOCKED = 72,
+	UNEVICTABLE_PGCLEARED = 73,
+	UNEVICTABLE_PGSTRANDED = 74,
+	THP_FAULT_ALLOC = 75,
+	THP_FAULT_FALLBACK = 76,
+	THP_FAULT_FALLBACK_CHARGE = 77,
+	THP_COLLAPSE_ALLOC = 78,
+	THP_COLLAPSE_ALLOC_FAILED = 79,
+	THP_FILE_ALLOC = 80,
+	THP_FILE_FALLBACK = 81,
+	THP_FILE_FALLBACK_CHARGE = 82,
+	THP_FILE_MAPPED = 83,
+	THP_SPLIT_PAGE = 84,
+	THP_SPLIT_PAGE_FAILED = 85,
+	THP_DEFERRED_SPLIT_PAGE = 86,
+	THP_SPLIT_PMD = 87,
+	THP_SHATTER_PAGE = 88,
+	THP_SHATTER_PAGE_FAILED = 89,
+	THP_SHATTER_PAGE_DISCARDED = 90,
+	THP_SCAN_EXCEED_NONE_PTE = 91,
+	THP_SCAN_EXCEED_SWAP_PTE = 92,
+	THP_SCAN_EXCEED_SHARED_PTE = 93,
+	THP_ZERO_PAGE_ALLOC = 94,
+	THP_ZERO_PAGE_ALLOC_FAILED = 95,
+	THP_SWPOUT = 96,
+	THP_SWPOUT_FALLBACK = 97,
+	BALLOON_INFLATE = 98,
+	BALLOON_DEFLATE = 99,
+	BALLOON_MIGRATE = 100,
+	SWAP_RA = 101,
+	SWAP_RA_HIT = 102,
+	NR_VM_EVENT_ITEMS = 103,
+};
+
+enum positive_aop_returns {
+	AOP_WRITEPAGE_ACTIVATE = 524288,
+	AOP_TRUNCATED_PAGE = 524289,
+};
+
+enum {
+	SB_UNFROZEN = 0,
+	SB_FREEZE_WRITE = 1,
+	SB_FREEZE_PAGEFAULT = 2,
+	SB_FREEZE_FS = 3,
+	SB_FREEZE_COMPLETE = 4,
+};
+
+struct trace_event_raw_mm_filemap_op_page_cache {
+	struct trace_entry ent;
+	unsigned long pfn;
+	unsigned long i_ino;
+	unsigned long index;
+	dev_t s_dev;
+	unsigned char order;
+	char __data[0];
+};
+
+struct trace_event_raw_filemap_set_wb_err {
+	struct trace_entry ent;
+	unsigned long i_ino;
+	dev_t s_dev;
+	errseq_t errseq;
+	char __data[0];
+};
+
+struct trace_event_raw_file_check_and_advance_wb_err {
+	struct trace_entry ent;
+	struct file *file;
+	unsigned long i_ino;
+	dev_t s_dev;
+	errseq_t old;
+	errseq_t new;
+	char __data[0];
+};
+
+struct cachestat_range {
+	__u64 off;
+	__u64 len;
+};
+
+struct cachestat {
+	__u64 nr_cache;
+	__u64 nr_dirty;
+	__u64 nr_writeback;
+	__u64 nr_evicted;
+	__u64 nr_recently_evicted;
+};
+
+struct folio_batch {
+	unsigned char nr;
+	bool percpu_pvec_drained;
+	struct folio *folios[15];
+};
+
+struct wait_page_key {
+	struct folio *folio;
+	int bit_nr;
+	int page_match;
+};
+
+struct trace_event_data_offsets_mm_filemap_op_page_cache {};
+
+struct trace_event_data_offsets_filemap_set_wb_err {};
+
+struct trace_event_data_offsets_file_check_and_advance_wb_err {};
+
+struct reciprocal_value {
+	u32 m;
+	u8 sh1;
+	u8 sh2;
+};
+
+struct kmem_cache_order_objects {
+	unsigned int x;
+};
+
+struct kmem_cache_cpu;
+
+struct kmem_cache_node;
+
+struct kmem_cache {
+	struct kmem_cache_cpu __attribute__((btf_type_tag("percpu"))) *cpu_slab;
+	slab_flags_t flags;
+	unsigned long min_partial;
+	unsigned int size;
+	unsigned int object_size;
+	struct reciprocal_value reciprocal_size;
+	unsigned int offset;
+	unsigned int cpu_partial;
+	unsigned int cpu_partial_slabs;
+	struct kmem_cache_order_objects oo;
+	struct kmem_cache_order_objects min;
+	gfp_t allocflags;
+	int refcount;
+	void (*ctor)(void *);
+	unsigned int inuse;
+	unsigned int align;
+	unsigned int red_left_pad;
+	const char *name;
+	struct list_head list;
+	struct kobject kobj;
+	unsigned long random;
+	unsigned int *random_seq;
+	unsigned int useroffset;
+	unsigned int usersize;
+	struct kmem_cache_node *node[1];
+};
+
+typedef unsigned __int128 __u128;
+
+typedef __u128 u128;
+
+typedef u128 freelist_full_t;
+
+typedef union {
+	struct {
+		void *freelist;
+		unsigned long counter;
+	};
+	freelist_full_t full;
+} freelist_aba_t;
+
+struct slab;
+
+struct kmem_cache_cpu {
+	union {
+		struct {
+			void **freelist;
+			unsigned long tid;
+		};
+		freelist_aba_t freelist_tid;
+	};
+	struct slab *slab;
+	struct slab *partial;
+	local_lock_t lock;
+};
+
+struct slab {
+	unsigned long __page_flags;
+	struct kmem_cache *slab_cache;
+	union {
+		struct {
+			union {
+				struct list_head slab_list;
+				struct {
+					struct slab *next;
+					int slabs;
+				};
+			};
+			union {
+				struct {
+					void *freelist;
+					union {
+						unsigned long counters;
+						struct {
+							unsigned int inuse: 16;
+							unsigned int objects: 15;
+							unsigned int frozen: 1;
+						};
+					};
+				};
+				freelist_aba_t freelist_counter;
+			};
+		};
+		struct callback_head callback_head;
+	};
+	unsigned int __unused;
+	atomic_t __page_refcount;
+	unsigned long memcg_data;
+};
+
+struct kmem_cache_node {
+	spinlock_t list_lock;
+	unsigned long nr_partial;
+	struct list_head partial;
+	atomic_long_t nr_slabs;
+	atomic_long_t total_objects;
+	struct list_head full;
+};
+
+typedef void (*btf_trace_oom_score_adj_update)(void *, struct task_struct *);
+
+typedef void (*btf_trace_reclaim_retry_zone)(void *, struct zoneref *, int, unsigned long, unsigned long, unsigned long, int, bool);
+
+typedef void (*btf_trace_mark_victim)(void *, struct task_struct *, uid_t);
+
+typedef void (*btf_trace_wake_reaper)(void *, int);
+
+typedef void (*btf_trace_start_task_reaping)(void *, int);
+
+typedef void (*btf_trace_finish_task_reaping)(void *, int);
+
+typedef void (*btf_trace_skip_task_reaping)(void *, int);
+
+enum compact_priority {
+	COMPACT_PRIO_SYNC_FULL = 0,
+	MIN_COMPACT_PRIORITY = 0,
+	COMPACT_PRIO_SYNC_LIGHT = 1,
+	MIN_COMPACT_COSTLY_PRIORITY = 1,
+	DEF_COMPACT_PRIORITY = 1,
+	COMPACT_PRIO_ASYNC = 2,
+	INIT_COMPACT_PRIORITY = 2,
+};
+
+enum compact_result {
+	COMPACT_NOT_SUITABLE_ZONE = 0,
+	COMPACT_SKIPPED = 1,
+	COMPACT_DEFERRED = 2,
+	COMPACT_NO_SUITABLE_PAGE = 3,
+	COMPACT_CONTINUE = 4,
+	COMPACT_COMPLETE = 5,
+	COMPACT_PARTIAL_SKIPPED = 6,
+	COMPACT_CONTENDED = 7,
+	COMPACT_SUCCESS = 8,
+};
+
+typedef void (*btf_trace_compact_retry)(void *, int, enum compact_priority, enum compact_result, int, int, bool);
+
+enum oom_constraint {
+	CONSTRAINT_NONE = 0,
+	CONSTRAINT_CPUSET = 1,
+	CONSTRAINT_MEMORY_POLICY = 2,
+	CONSTRAINT_MEMCG = 3,
+};
+
+enum memcg_memory_event {
+	MEMCG_LOW = 0,
+	MEMCG_HIGH = 1,
+	MEMCG_MAX = 2,
+	MEMCG_OOM = 3,
+	MEMCG_OOM_KILL = 4,
+	MEMCG_OOM_GROUP_KILL = 5,
+	MEMCG_SWAP_HIGH = 6,
+	MEMCG_SWAP_MAX = 7,
+	MEMCG_SWAP_FAIL = 8,
+	MEMCG_NR_MEMORY_EVENTS = 9,
+};
+
+struct trace_event_raw_oom_score_adj_update {
+	struct trace_entry ent;
+	pid_t pid;
+	char comm[16];
+	short oom_score_adj;
+	char __data[0];
+};
+
+struct trace_event_raw_reclaim_retry_zone {
+	struct trace_entry ent;
+	int node;
+	int zone_idx;
+	int order;
+	unsigned long reclaimable;
+	unsigned long available;
+	unsigned long min_wmark;
+	int no_progress_loops;
+	bool wmark_check;
+	char __data[0];
+};
+
+struct trace_event_raw_mark_victim {
+	struct trace_entry ent;
+	int pid;
+	u32 __data_loc_comm;
+	unsigned long total_vm;
+	unsigned long anon_rss;
+	unsigned long file_rss;
+	unsigned long shmem_rss;
+	uid_t uid;
+	unsigned long pgtables;
+	short oom_score_adj;
+	char __data[0];
+};
+
+struct trace_event_raw_wake_reaper {
+	struct trace_entry ent;
+	int pid;
+	char __data[0];
+};
+
+struct trace_event_raw_start_task_reaping {
+	struct trace_entry ent;
+	int pid;
+	char __data[0];
+};
+
+struct trace_event_raw_finish_task_reaping {
+	struct trace_entry ent;
+	int pid;
+	char __data[0];
+};
+
+struct trace_event_raw_skip_task_reaping {
+	struct trace_entry ent;
+	int pid;
+	char __data[0];
+};
+
+struct trace_event_raw_compact_retry {
+	struct trace_entry ent;
+	int order;
+	int priority;
+	int result;
+	int retries;
+	int max_retries;
+	bool ret;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_mark_victim {
+	u32 comm;
+};
+
+struct oom_control {
+	struct zonelist *zonelist;
+	nodemask_t *nodemask;
+	struct mem_cgroup *memcg;
+	const gfp_t gfp_mask;
+	const int order;
+	unsigned long totalpages;
+	struct task_struct *chosen;
+	long chosen_points;
+	enum oom_constraint constraint;
+};
+
+struct encoded_page;
+
+struct mmu_gather_batch {
+	struct mmu_gather_batch *next;
+	unsigned int nr;
+	unsigned int max;
+	struct encoded_page *encoded_pages[0];
+};
+
+struct mmu_table_batch;
+
+struct mmu_gather {
+	struct mm_struct *mm;
+	struct mmu_table_batch *batch;
+	unsigned long start;
+	unsigned long end;
+	unsigned int fullmm: 1;
+	unsigned int need_flush_all: 1;
+	unsigned int freed_tables: 1;
+	unsigned int delayed_rmap: 1;
+	unsigned int cleared_ptes: 1;
+	unsigned int cleared_pmds: 1;
+	unsigned int cleared_puds: 1;
+	unsigned int cleared_p4ds: 1;
+	unsigned int vma_exec: 1;
+	unsigned int vma_huge: 1;
+	unsigned int vma_pfn: 1;
+	unsigned int batch_count;
+	struct mmu_gather_batch *active;
+	struct mmu_gather_batch local;
+	struct page *__pages[8];
+};
+
+struct mmu_table_batch {
+	struct callback_head rcu;
+	unsigned int nr;
+	void *tables[0];
+};
+
+struct trace_event_data_offsets_oom_score_adj_update {};
+
+struct trace_event_data_offsets_reclaim_retry_zone {};
+
+struct trace_event_data_offsets_wake_reaper {};
+
+struct trace_event_data_offsets_start_task_reaping {};
+
+struct trace_event_data_offsets_finish_task_reaping {};
+
+struct trace_event_data_offsets_skip_task_reaping {};
+
+struct trace_event_data_offsets_compact_retry {};
+
+enum wb_stat_item {
+	WB_RECLAIMABLE = 0,
+	WB_WRITEBACK = 1,
+	WB_DIRTIED = 2,
+	WB_WRITTEN = 3,
+	NR_WB_STAT_ITEMS = 4,
+};
+
+enum {
+	XA_CHECK_SCHED = 4096,
+};
+
+enum vmscan_throttle_state {
+	VMSCAN_THROTTLE_WRITEBACK = 0,
+	VMSCAN_THROTTLE_ISOLATED = 1,
+	VMSCAN_THROTTLE_NOPROGRESS = 2,
+	VMSCAN_THROTTLE_CONGESTED = 3,
+	NR_VMSCAN_THROTTLE = 4,
+};
+
+enum zone_stat_item {
+	NR_FREE_PAGES = 0,
+	NR_ZONE_LRU_BASE = 1,
+	NR_ZONE_INACTIVE_ANON = 1,
+	NR_ZONE_ACTIVE_ANON = 2,
+	NR_ZONE_INACTIVE_FILE = 3,
+	NR_ZONE_ACTIVE_FILE = 4,
+	NR_ZONE_UNEVICTABLE = 5,
+	NR_ZONE_WRITE_PENDING = 6,
+	NR_MLOCK = 7,
+	NR_BOUNCE = 8,
+	NR_ZSPAGES = 9,
+	NR_FREE_CMA_PAGES = 10,
+	NR_VM_ZONE_STAT_ITEMS = 11,
+};
+
+enum wb_state {
+	WB_registered = 0,
+	WB_writeback_running = 1,
+	WB_has_dirty_io = 2,
+	WB_start_all = 3,
+};
+
+enum page_memcg_data_flags {
+	MEMCG_DATA_OBJCGS = 1,
+	MEMCG_DATA_KMEM = 2,
+	__NR_MEMCG_DATA_FLAGS = 4,
+};
+
+struct dirty_throttle_control {
+	struct wb_domain *dom;
+	struct dirty_throttle_control *gdtc;
+	struct bdi_writeback *wb;
+	struct fprop_local_percpu *wb_completions;
+	unsigned long avail;
+	unsigned long dirty;
+	unsigned long thresh;
+	unsigned long bg_thresh;
+	unsigned long wb_dirty;
+	unsigned long wb_thresh;
+	unsigned long wb_bg_thresh;
+	unsigned long pos_ratio;
+};
+
+struct wb_lock_cookie {
+	bool locked;
+	unsigned long flags;
+};
+
+typedef int (*writepage_t)(struct folio *, struct writeback_control *, void *);
+
+typedef void (*btf_trace_mm_lru_insertion)(void *, struct folio *);
+
+typedef void (*btf_trace_mm_lru_activate)(void *, struct folio *);
+
+struct lru_rotate {
+	local_lock_t lock;
+	struct folio_batch fbatch;
+};
+
+struct cpu_fbatches {
+	local_lock_t lock;
+	struct folio_batch lru_add;
+	struct folio_batch lru_deactivate_file;
+	struct folio_batch lru_deactivate;
+	struct folio_batch lru_lazyfree;
+	struct folio_batch activate;
+};
+
+enum lru_list {
+	LRU_INACTIVE_ANON = 0,
+	LRU_ACTIVE_ANON = 1,
+	LRU_INACTIVE_FILE = 2,
+	LRU_ACTIVE_FILE = 3,
+	LRU_UNEVICTABLE = 4,
+	NR_LRU_LISTS = 5,
+};
+
+enum {
+	LRU_GEN_ANON = 0,
+	LRU_GEN_FILE = 1,
+};
+
+enum {
+	LRU_GEN_CORE = 0,
+	LRU_GEN_MM_WALK = 1,
+	LRU_GEN_NONLEAF_YOUNG = 2,
+	NR_LRU_GEN_CAPS = 3,
+};
+
+struct trace_event_raw_mm_lru_insertion {
+	struct trace_entry ent;
+	struct folio *folio;
+	unsigned long pfn;
+	enum lru_list lru;
+	unsigned long flags;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_lru_activate {
+	struct trace_entry ent;
+	struct folio *folio;
+	unsigned long pfn;
+	char __data[0];
+};
+
+typedef void (*move_fn_t)(struct lruvec *, struct folio *);
+
+struct trace_event_data_offsets_mm_lru_insertion {};
+
+struct trace_event_data_offsets_mm_lru_activate {};
+
+typedef union {
+	struct page **pages;
+	struct folio **folios;
+	struct encoded_page **encoded_pages;
+} release_pages_arg;
+
+typedef void (*btf_trace_mm_vmscan_kswapd_sleep)(void *, int);
+
+typedef void (*btf_trace_mm_vmscan_kswapd_wake)(void *, int, int, int);
+
+typedef void (*btf_trace_mm_vmscan_wakeup_kswapd)(void *, int, int, int, gfp_t);
+
+typedef void (*btf_trace_mm_vmscan_direct_reclaim_begin)(void *, int, gfp_t);
+
+typedef void (*btf_trace_mm_vmscan_memcg_reclaim_begin)(void *, int, gfp_t);
+
+typedef void (*btf_trace_mm_vmscan_memcg_softlimit_reclaim_begin)(void *, int, gfp_t);
+
+typedef void (*btf_trace_mm_vmscan_direct_reclaim_end)(void *, unsigned long);
+
+typedef void (*btf_trace_mm_vmscan_memcg_reclaim_end)(void *, unsigned long);
+
+typedef void (*btf_trace_mm_vmscan_memcg_softlimit_reclaim_end)(void *, unsigned long);
+
+typedef void (*btf_trace_mm_shrink_slab_start)(void *, struct shrinker *, struct shrink_control *, long, unsigned long, unsigned long long, unsigned long, int);
+
+typedef void (*btf_trace_mm_shrink_slab_end)(void *, struct shrinker *, int, int, long, long, long);
+
+typedef unsigned int isolate_mode_t;
+
+typedef void (*btf_trace_mm_vmscan_lru_isolate)(void *, int, int, unsigned long, unsigned long, unsigned long, unsigned long, isolate_mode_t, int);
+
+typedef void (*btf_trace_mm_vmscan_write_folio)(void *, struct folio *);
+
+struct reclaim_stat;
+
+typedef void (*btf_trace_mm_vmscan_lru_shrink_inactive)(void *, int, unsigned long, unsigned long, struct reclaim_stat *, int, int);
+
+struct reclaim_stat {
+	unsigned int nr_dirty;
+	unsigned int nr_unqueued_dirty;
+	unsigned int nr_congested;
+	unsigned int nr_writeback;
+	unsigned int nr_immediate;
+	unsigned int nr_pageout;
+	unsigned int nr_activate[2];
+	unsigned int nr_ref_keep;
+	unsigned int nr_unmap_fail;
+	unsigned int nr_lazyfree_fail;
+};
+
+typedef void (*btf_trace_mm_vmscan_lru_shrink_active)(void *, int, unsigned long, unsigned long, unsigned long, unsigned long, int, int);
+
+typedef void (*btf_trace_mm_vmscan_node_reclaim_begin)(void *, int, int, gfp_t);
+
+typedef void (*btf_trace_mm_vmscan_node_reclaim_end)(void *, unsigned long);
+
+typedef void (*btf_trace_mm_vmscan_throttled)(void *, int, int, int, int);
+
+enum page_walk_lock {
+	PGWALK_RDLOCK = 0,
+	PGWALK_WRLOCK = 1,
+	PGWALK_WRLOCK_VERIFY = 2,
+};
+
+struct mm_walk;
+
+struct mm_walk_ops {
+	int (*pgd_entry)(pgd_t *, unsigned long, unsigned long, struct mm_walk *);
+	int (*p4d_entry)(p4d_t *, unsigned long, unsigned long, struct mm_walk *);
+	int (*pud_entry)(pud_t *, unsigned long, unsigned long, struct mm_walk *);
+	int (*pmd_entry)(pmd_t *, unsigned long, unsigned long, struct mm_walk *);
+	int (*pte_entry)(pte_t *, unsigned long, unsigned long, struct mm_walk *);
+	int (*pte_hole)(unsigned long, unsigned long, int, struct mm_walk *);
+	int (*hugetlb_entry)(pte_t *, unsigned long, unsigned long, unsigned long, struct mm_walk *);
+	int (*test_walk)(unsigned long, unsigned long, struct mm_walk *);
+	int (*pre_vma)(unsigned long, unsigned long, struct mm_walk *);
+	void (*post_vma)(struct mm_walk *);
+	enum page_walk_lock walk_lock;
+};
+
+enum page_walk_action {
+	ACTION_SUBTREE = 0,
+	ACTION_CONTINUE = 1,
+	ACTION_AGAIN = 2,
+};
+
+struct mm_walk {
+	const struct mm_walk_ops *ops;
+	struct mm_struct *mm;
+	pgd_t *pgd;
+	struct vm_area_struct *vma;
+	enum page_walk_action action;
+	bool no_vma;
+	void *private;
+};
+
+enum {
+	MEMCG_LRU_NOP = 0,
+	MEMCG_LRU_HEAD = 1,
+	MEMCG_LRU_TAIL = 2,
+	MEMCG_LRU_OLD = 3,
+	MEMCG_LRU_YOUNG = 4,
+};
+
+enum folio_references {
+	FOLIOREF_RECLAIM = 0,
+	FOLIOREF_RECLAIM_CLEAN = 1,
+	FOLIOREF_KEEP = 2,
+	FOLIOREF_ACTIVATE = 3,
+};
+
+enum pgdat_flags {
+	PGDAT_DIRTY = 0,
+	PGDAT_WRITEBACK = 1,
+	PGDAT_RECLAIM_LOCKED = 2,
+};
+
+enum mthp_stat_item {
+	MTHP_STAT_ANON_FAULT_ALLOC = 0,
+	MTHP_STAT_ANON_FAULT_FALLBACK = 1,
+	MTHP_STAT_ANON_FAULT_FALLBACK_CHARGE = 2,
+	MTHP_STAT_SWPOUT = 3,
+	MTHP_STAT_SWPOUT_FALLBACK = 4,
+	__MTHP_STAT_COUNT = 5,
+};
+
+enum ttu_flags {
+	TTU_SPLIT_HUGE_PMD = 4,
+	TTU_IGNORE_MLOCK = 8,
+	TTU_SYNC = 16,
+	TTU_HWPOISON = 32,
+	TTU_BATCH_FLUSH = 64,
+	TTU_RMAP_LOCKED = 128,
+};
+
+enum {
+	SWP_USED = 1,
+	SWP_WRITEOK = 2,
+	SWP_DISCARDABLE = 4,
+	SWP_DISCARDING = 8,
+	SWP_SOLIDSTATE = 16,
+	SWP_CONTINUED = 32,
+	SWP_BLKDEV = 64,
+	SWP_ACTIVATED = 128,
+	SWP_FS_OPS = 256,
+	SWP_AREA_DISCARD = 512,
+	SWP_PAGE_DISCARD = 1024,
+	SWP_STABLE_WRITES = 2048,
+	SWP_SYNCHRONOUS_IO = 4096,
+	SWP_SCANNING = 16384,
+};
+
+enum migrate_reason {
+	MR_COMPACTION = 0,
+	MR_MEMORY_FAILURE = 1,
+	MR_MEMORY_HOTPLUG = 2,
+	MR_SYSCALL = 3,
+	MR_MEMPOLICY_MBIND = 4,
+	MR_NUMA_MISPLACED = 5,
+	MR_CONTIG_RANGE = 6,
+	MR_LONGTERM_PIN = 7,
+	MR_DEMOTION = 8,
+	MR_TYPES = 9,
+};
+
+enum {
+	MM_LEAF_TOTAL = 0,
+	MM_LEAF_OLD = 1,
+	MM_LEAF_YOUNG = 2,
+	MM_NONLEAF_TOTAL = 3,
+	MM_NONLEAF_FOUND = 4,
+	MM_NONLEAF_ADDED = 5,
+	NR_MM_STATS = 6,
+};
+
+enum migratetype {
+	MIGRATE_UNMOVABLE = 0,
+	MIGRATE_MOVABLE = 1,
+	MIGRATE_RECLAIMABLE = 2,
+	MIGRATE_FALLBACKS = 3,
+	MIGRATE_CMA = 3,
+	MIGRATE_PCPTYPES = 4,
+	MIGRATE_HIGHATOMIC = 4,
+	MIGRATE_ISOLATE = 5,
+	MIGRATE_TYPES = 6,
+};
+
+enum zone_watermarks {
+	WMARK_MIN = 0,
+	WMARK_LOW = 1,
+	WMARK_HIGH = 2,
+	WMARK_PROMO = 3,
+	NR_WMARK = 4,
+};
+
+enum lruvec_flags {
+	LRUVEC_CGROUP_CONGESTED = 0,
+	LRUVEC_NODE_CONGESTED = 1,
+};
+
+enum scan_balance {
+	SCAN_EQUAL = 0,
+	SCAN_FRACT = 1,
+	SCAN_ANON = 2,
+	SCAN_FILE = 3,
+};
+
+enum zone_flags {
+	ZONE_BOOSTED_WATERMARK = 0,
+	ZONE_RECLAIM_ACTIVE = 1,
+};
+
+struct trace_event_raw_mm_vmscan_kswapd_sleep {
+	struct trace_entry ent;
+	int nid;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_vmscan_kswapd_wake {
+	struct trace_entry ent;
+	int nid;
+	int zid;
+	int order;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_vmscan_wakeup_kswapd {
+	struct trace_entry ent;
+	int nid;
+	int zid;
+	int order;
+	unsigned long gfp_flags;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_vmscan_direct_reclaim_begin_template {
+	struct trace_entry ent;
+	int order;
+	unsigned long gfp_flags;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_vmscan_direct_reclaim_end_template {
+	struct trace_entry ent;
+	unsigned long nr_reclaimed;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_shrink_slab_start {
+	struct trace_entry ent;
+	struct shrinker *shr;
+	void *shrink;
+	int nid;
+	long nr_objects_to_shrink;
+	unsigned long gfp_flags;
+	unsigned long cache_items;
+	unsigned long long delta;
+	unsigned long total_scan;
+	int priority;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_shrink_slab_end {
+	struct trace_entry ent;
+	struct shrinker *shr;
+	int nid;
+	void *shrink;
+	long unused_scan;
+	long new_scan;
+	int retval;
+	long total_scan;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_vmscan_lru_isolate {
+	struct trace_entry ent;
+	int highest_zoneidx;
+	int order;
+	unsigned long nr_requested;
+	unsigned long nr_scanned;
+	unsigned long nr_skipped;
+	unsigned long nr_taken;
+	unsigned int isolate_mode;
+	int lru;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_vmscan_write_folio {
+	struct trace_entry ent;
+	unsigned long pfn;
+	int reclaim_flags;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_vmscan_lru_shrink_inactive {
+	struct trace_entry ent;
+	int nid;
+	unsigned long nr_scanned;
+	unsigned long nr_reclaimed;
+	unsigned long nr_dirty;
+	unsigned long nr_writeback;
+	unsigned long nr_congested;
+	unsigned long nr_immediate;
+	unsigned int nr_activate0;
+	unsigned int nr_activate1;
+	unsigned long nr_ref_keep;
+	unsigned long nr_unmap_fail;
+	int priority;
+	int reclaim_flags;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_vmscan_lru_shrink_active {
+	struct trace_entry ent;
+	int nid;
+	unsigned long nr_taken;
+	unsigned long nr_active;
+	unsigned long nr_deactivated;
+	unsigned long nr_referenced;
+	int priority;
+	int reclaim_flags;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_vmscan_node_reclaim_begin {
+	struct trace_entry ent;
+	int nid;
+	int order;
+	unsigned long gfp_flags;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_vmscan_throttled {
+	struct trace_entry ent;
+	int nid;
+	int usec_timeout;
+	int usec_delayed;
+	int reason;
+	char __data[0];
+};
+
+struct migration_target_control {
+	int nid;
+	nodemask_t *nmask;
+	gfp_t gfp_mask;
+};
+
+struct scan_control {
+	unsigned long nr_to_reclaim;
+	nodemask_t *nodemask;
+	struct mem_cgroup *target_mem_cgroup;
+	unsigned long anon_cost;
+	unsigned long file_cost;
+	unsigned int may_deactivate: 2;
+	unsigned int force_deactivate: 1;
+	unsigned int skipped_deactivate: 1;
+	unsigned int may_writepage: 1;
+	unsigned int may_unmap: 1;
+	unsigned int may_swap: 1;
+	unsigned int proactive: 1;
+	unsigned int memcg_low_reclaim: 1;
+	unsigned int memcg_low_skipped: 1;
+	unsigned int hibernation_mode: 1;
+	unsigned int compaction_ready: 1;
+	unsigned int cache_trim_mode: 1;
+	unsigned int file_is_tiny: 1;
+	unsigned int no_demotion: 1;
+	s8 order;
+	s8 priority;
+	s8 reclaim_idx;
+	gfp_t gfp_mask;
+	unsigned long nr_scanned;
+	unsigned long nr_reclaimed;
+	struct {
+		unsigned int dirty;
+		unsigned int unqueued_dirty;
+		unsigned int congested;
+		unsigned int writeback;
+		unsigned int immediate;
+		unsigned int file_taken;
+		unsigned int taken;
+	} nr;
+	struct reclaim_state reclaim_state;
+	u64 android_vendor_data1;
+};
+
+struct mem_cgroup_reclaim_cookie {
+	pg_data_t *pgdat;
+	unsigned int generation;
+};
+
+struct ctrl_pos {
+	unsigned long refaulted;
+	unsigned long total;
+	int gain;
+};
+
+typedef enum {
+	PAGE_KEEP = 0,
+	PAGE_ACTIVATE = 1,
+	PAGE_SUCCESS = 2,
+	PAGE_CLEAN = 3,
+} pageout_t;
+
+struct trace_event_data_offsets_mm_vmscan_kswapd_sleep {};
+
+struct trace_event_data_offsets_mm_vmscan_kswapd_wake {};
+
+struct trace_event_data_offsets_mm_vmscan_wakeup_kswapd {};
+
+struct trace_event_data_offsets_mm_vmscan_direct_reclaim_begin_template {};
+
+struct trace_event_data_offsets_mm_vmscan_direct_reclaim_end_template {};
+
+struct trace_event_data_offsets_mm_shrink_slab_start {};
+
+struct trace_event_data_offsets_mm_shrink_slab_end {};
+
+struct trace_event_data_offsets_mm_vmscan_lru_isolate {};
+
+struct trace_event_data_offsets_mm_vmscan_write_folio {};
+
+struct trace_event_data_offsets_mm_vmscan_lru_shrink_inactive {};
+
+struct trace_event_data_offsets_mm_vmscan_lru_shrink_active {};
+
+struct trace_event_data_offsets_mm_vmscan_node_reclaim_begin {};
+
+struct trace_event_data_offsets_mm_vmscan_throttled {};
+
+struct kstatfs {
+	long f_type;
+	long f_bsize;
+	u64 f_blocks;
+	u64 f_bfree;
+	u64 f_bavail;
+	u64 f_files;
+	u64 f_ffree;
+	__kernel_fsid_t f_fsid;
+	long f_namelen;
+	long f_frsize;
+	long f_flags;
+	long f_spare[4];
+};
+
+struct fileattr {
+	u32 flags;
+	u32 fsx_xflags;
+	u32 fsx_extsize;
+	u32 fsx_nextents;
+	u32 fsx_projid;
+	u32 fsx_cowextsize;
+	bool flags_valid: 1;
+	bool fsx_valid: 1;
+};
+
+struct constant_table {
+	const char *name;
+	int value;
+};
+
+enum sgp_type {
+	SGP_READ = 0,
+	SGP_NOALLOC = 1,
+	SGP_CACHE = 2,
+	SGP_WRITE = 3,
+	SGP_FALLOC = 4,
+};
+
+enum mfill_atomic_mode {
+	MFILL_ATOMIC_COPY = 0,
+	MFILL_ATOMIC_ZEROPAGE = 1,
+	MFILL_ATOMIC_CONTINUE = 2,
+	MFILL_ATOMIC_POISON = 3,
+	NR_MFILL_ATOMIC_MODES = 4,
+};
+
+enum shmem_param {
+	Opt_gid = 0,
+	Opt_huge = 1,
+	Opt_mode = 2,
+	Opt_mpol = 3,
+	Opt_nr_blocks = 4,
+	Opt_nr_inodes = 5,
+	Opt_size = 6,
+	Opt_uid = 7,
+	Opt_inode32 = 8,
+	Opt_inode64 = 9,
+	Opt_noswap = 10,
+	Opt_quota = 11,
+	Opt_usrquota = 12,
+	Opt_grpquota = 13,
+	Opt_usrquota_block_hardlimit = 14,
+	Opt_usrquota_inode_hardlimit = 15,
+	Opt_grpquota_block_hardlimit = 16,
+	Opt_grpquota_inode_hardlimit = 17,
+};
+
+enum fid_type {
+	FILEID_ROOT = 0,
+	FILEID_INO32_GEN = 1,
+	FILEID_INO32_GEN_PARENT = 2,
+	FILEID_BTRFS_WITHOUT_PARENT = 77,
+	FILEID_BTRFS_WITH_PARENT = 78,
+	FILEID_BTRFS_WITH_PARENT_ROOT = 79,
+	FILEID_UDF_WITHOUT_PARENT = 81,
+	FILEID_UDF_WITH_PARENT = 82,
+	FILEID_NILFS_WITHOUT_PARENT = 97,
+	FILEID_NILFS_WITH_PARENT = 98,
+	FILEID_FAT_WITHOUT_PARENT = 113,
+	FILEID_FAT_WITH_PARENT = 114,
+	FILEID_LUSTRE = 151,
+	FILEID_KERNFS = 254,
+	FILEID_INVALID = 255,
+};
+
+enum {
+	_DQUOT_USAGE_ENABLED = 0,
+	_DQUOT_LIMITS_ENABLED = 1,
+	_DQUOT_SUSPENDED = 2,
+	_DQUOT_STATE_FLAGS = 3,
+};
+
+struct shared_policy {};
+
+struct simple_xattrs {
+	struct rb_root rb_root;
+	rwlock_t lock;
+};
+
+struct shmem_inode_info {
+	spinlock_t lock;
+	unsigned int seals;
+	unsigned long flags;
+	unsigned long alloced;
+	unsigned long swapped;
+	unsigned long fallocend;
+	struct list_head shrinklist;
+	struct list_head swaplist;
+	struct shared_policy policy;
+	struct simple_xattrs xattrs;
+	atomic_t stop_eviction;
+	struct timespec64 i_crtime;
+	unsigned int fsflags;
+	struct offset_ctx dir_offsets;
+	struct inode vfs_inode;
+	u64 android_vendor_data1;
+};
+
+typedef unsigned int uffd_flags_t;
+
+struct shmem_quota_limits {
+	qsize_t usrquota_bhardlimit;
+	qsize_t usrquota_ihardlimit;
+	qsize_t grpquota_bhardlimit;
+	qsize_t grpquota_ihardlimit;
+};
+
+struct mempolicy;
+
+struct shmem_sb_info {
+	unsigned long max_blocks;
+	struct percpu_counter used_blocks;
+	unsigned long max_inodes;
+	unsigned long free_ispace;
+	raw_spinlock_t stat_lock;
+	umode_t mode;
+	unsigned char huge;
+	kuid_t uid;
+	kgid_t gid;
+	bool full_inums;
+	bool noswap;
+	ino_t next_ino;
+	ino_t __attribute__((btf_type_tag("percpu"))) *ino_batch;
+	struct mempolicy *mpol;
+	spinlock_t shrinklist_lock;
+	struct list_head shrinklist;
+	unsigned long shrinklist_len;
+	struct shmem_quota_limits qlimits;
+};
+
+struct mempolicy {};
+
+typedef int (*initxattrs)(struct inode *, const struct xattr *, void *);
+
+struct shmem_falloc {
+	wait_queue_head_t *waitq;
+	unsigned long start;
+	unsigned long next;
+	unsigned long nr_falloced;
+	unsigned long nr_unswapped;
+};
+
+struct shmem_options {
+	unsigned long long blocks;
+	unsigned long long inodes;
+	struct mempolicy *mpol;
+	kuid_t uid;
+	kgid_t gid;
+	umode_t mode;
+	bool full_inums;
+	int huge;
+	int seen;
+	bool noswap;
+	unsigned short quota_types;
+	struct shmem_quota_limits qlimits;
+};
+
+struct vm_event_state {
+	unsigned long event[103];
+};
+
+enum writeback_stat_item {
+	NR_DIRTY_THRESHOLD = 0,
+	NR_DIRTY_BG_THRESHOLD = 1,
+	NR_VM_WRITEBACK_STAT_ITEMS = 2,
+};
+
+struct contig_page_info {
+	unsigned long free_pages;
+	unsigned long free_blocks_total;
+	unsigned long free_blocks_suitable;
+};
+
+enum {
+	RADIX_TREE_ITER_TAG_MASK = 15,
+	RADIX_TREE_ITER_TAGGED = 16,
+	RADIX_TREE_ITER_CONTIG = 32,
+};
+
+struct radix_tree_iter {
+	unsigned long index;
+	unsigned long next_index;
+	unsigned long tags;
+	struct xa_node *node;
+};
+
+enum mminit_level {
+	MMINIT_WARNING = 0,
+	MMINIT_VERIFY = 1,
+	MMINIT_TRACE = 2,
+};
+
+enum meminit_context {
+	MEMINIT_EARLY = 0,
+	MEMINIT_HOTPLUG = 1,
+};
+
+typedef void (*btf_trace_percpu_alloc_percpu)(void *, unsigned long, bool, bool, size_t, size_t, void *, int, void __attribute__((btf_type_tag("percpu"))) *, size_t, gfp_t);
+
+typedef void (*btf_trace_percpu_free_percpu)(void *, void *, int, void __attribute__((btf_type_tag("percpu"))) *);
+
+typedef void (*btf_trace_percpu_alloc_percpu_fail)(void *, bool, bool, size_t, size_t);
+
+typedef void (*btf_trace_percpu_create_chunk)(void *, void *);
+
+typedef void (*btf_trace_percpu_destroy_chunk)(void *, void *);
+
+enum pcpu_fc {
+	PCPU_FC_AUTO = 0,
+	PCPU_FC_EMBED = 1,
+	PCPU_FC_PAGE = 2,
+	PCPU_FC_NR = 3,
+};
+
+struct pcpu_block_md {
+	int scan_hint;
+	int scan_hint_start;
+	int contig_hint;
+	int contig_hint_start;
+	int left_free;
+	int right_free;
+	int first_free;
+	int nr_bits;
+};
+
+struct pcpu_chunk {
+	struct list_head list;
+	int free_bytes;
+	struct pcpu_block_md chunk_md;
+	unsigned long *bound_map;
+	void *base_addr;
+	unsigned long *alloc_map;
+	struct pcpu_block_md *md_blocks;
+	void *data;
+	bool immutable;
+	bool isolated;
+	int start_offset;
+	int end_offset;
+	struct obj_cgroup **obj_cgroups;
+	int nr_pages;
+	int nr_populated;
+	int nr_empty_pop_pages;
+	unsigned long populated[0];
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+enum memcg_stat_item {
+	MEMCG_SWAP = 42,
+	MEMCG_SOCK = 43,
+	MEMCG_PERCPU_B = 44,
+	MEMCG_VMALLOC = 45,
+	MEMCG_KMEM = 46,
+	MEMCG_ZSWAP_B = 47,
+	MEMCG_ZSWAPPED = 48,
+	MEMCG_NR_STAT = 49,
+};
+
+struct trace_event_raw_percpu_alloc_percpu {
+	struct trace_entry ent;
+	unsigned long call_site;
+	bool reserved;
+	bool is_atomic;
+	size_t size;
+	size_t align;
+	void *base_addr;
+	int off;
+	void __attribute__((btf_type_tag("percpu"))) *ptr;
+	size_t bytes_alloc;
+	unsigned long gfp_flags;
+	char __data[0];
+};
+
+struct trace_event_raw_percpu_free_percpu {
+	struct trace_entry ent;
+	void *base_addr;
+	int off;
+	void __attribute__((btf_type_tag("percpu"))) *ptr;
+	char __data[0];
+};
+
+struct trace_event_raw_percpu_alloc_percpu_fail {
+	struct trace_entry ent;
+	bool reserved;
+	bool is_atomic;
+	size_t size;
+	size_t align;
+	char __data[0];
+};
+
+struct trace_event_raw_percpu_create_chunk {
+	struct trace_entry ent;
+	void *base_addr;
+	char __data[0];
+};
+
+struct trace_event_raw_percpu_destroy_chunk {
+	struct trace_entry ent;
+	void *base_addr;
+	char __data[0];
+};
+
+typedef int pcpu_fc_cpu_to_node_fn_t(int);
+
+struct pcpu_group_info {
+	int nr_units;
+	unsigned long base_offset;
+	unsigned int *cpu_map;
+};
+
+struct pcpu_alloc_info {
+	size_t static_size;
+	size_t reserved_size;
+	size_t dyn_size;
+	size_t unit_size;
+	size_t atom_size;
+	size_t alloc_size;
+	size_t __ai_size;
+	int nr_groups;
+	struct pcpu_group_info groups[0];
+};
+
+struct trace_event_data_offsets_percpu_alloc_percpu {};
+
+struct trace_event_data_offsets_percpu_free_percpu {};
+
+struct trace_event_data_offsets_percpu_alloc_percpu_fail {};
+
+struct trace_event_data_offsets_percpu_create_chunk {};
+
+struct trace_event_data_offsets_percpu_destroy_chunk {};
+
+typedef int pcpu_fc_cpu_distance_fn_t(unsigned int, unsigned int);
+
+typedef void (*btf_trace_kmem_cache_alloc)(void *, unsigned long, const void *, struct kmem_cache *, gfp_t, int);
+
+typedef void (*btf_trace_kmalloc)(void *, unsigned long, const void *, size_t, size_t, gfp_t, int);
+
+typedef void (*btf_trace_kfree)(void *, unsigned long, const void *);
+
+typedef void (*btf_trace_kmem_cache_free)(void *, unsigned long, const void *, const struct kmem_cache *);
+
+typedef void (*btf_trace_mm_page_free)(void *, struct page *, unsigned int);
+
+typedef void (*btf_trace_mm_page_free_batched)(void *, struct page *);
+
+typedef void (*btf_trace_mm_page_alloc)(void *, struct page *, unsigned int, gfp_t, int);
+
+typedef void (*btf_trace_mm_page_alloc_zone_locked)(void *, struct page *, unsigned int, int, int);
+
+typedef void (*btf_trace_mm_page_pcpu_drain)(void *, struct page *, unsigned int, int);
+
+typedef void (*btf_trace_mm_page_alloc_extfrag)(void *, struct page *, int, int, int, int);
+
+typedef void (*btf_trace_rss_stat)(void *, struct mm_struct *, int);
+
+struct kmalloc_info_struct {
+	const char *name[3];
+	unsigned int size;
+};
+
+enum slab_state {
+	DOWN = 0,
+	PARTIAL = 1,
+	PARTIAL_NODE = 2,
+	UP = 3,
+	FULL = 4,
+};
+
+struct trace_event_raw_kmem_cache_alloc {
+	struct trace_entry ent;
+	unsigned long call_site;
+	const void *ptr;
+	size_t bytes_req;
+	size_t bytes_alloc;
+	unsigned long gfp_flags;
+	int node;
+	bool accounted;
+	char __data[0];
+};
+
+struct trace_event_raw_kmalloc {
+	struct trace_entry ent;
+	unsigned long call_site;
+	const void *ptr;
+	size_t bytes_req;
+	size_t bytes_alloc;
+	unsigned long gfp_flags;
+	int node;
+	char __data[0];
+};
+
+struct trace_event_raw_kfree {
+	struct trace_entry ent;
+	unsigned long call_site;
+	const void *ptr;
+	char __data[0];
+};
+
+struct trace_event_raw_kmem_cache_free {
+	struct trace_entry ent;
+	unsigned long call_site;
+	const void *ptr;
+	u32 __data_loc_name;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_page_free {
+	struct trace_entry ent;
+	unsigned long pfn;
+	unsigned int order;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_page_free_batched {
+	struct trace_entry ent;
+	unsigned long pfn;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_page_alloc {
+	struct trace_entry ent;
+	unsigned long pfn;
+	unsigned int order;
+	unsigned long gfp_flags;
+	int migratetype;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_page {
+	struct trace_entry ent;
+	unsigned long pfn;
+	unsigned int order;
+	int migratetype;
+	int percpu_refill;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_page_pcpu_drain {
+	struct trace_entry ent;
+	unsigned long pfn;
+	unsigned int order;
+	int migratetype;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_page_alloc_extfrag {
+	struct trace_entry ent;
+	unsigned long pfn;
+	int alloc_order;
+	int fallback_order;
+	int alloc_migratetype;
+	int fallback_migratetype;
+	int change_ownership;
+	char __data[0];
+};
+
+struct trace_event_raw_rss_stat {
+	struct trace_entry ent;
+	unsigned int mm_id;
+	unsigned int curr;
+	int member;
+	long size;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_kmem_cache_free {
+	u32 name;
+};
+
+struct kmem_obj_info {
+	void *kp_ptr;
+	struct slab *kp_slab;
+	void *kp_objp;
+	unsigned long kp_data_offset;
+	struct kmem_cache *kp_slab_cache;
+	void *kp_ret;
+	void *kp_stack[16];
+	void *kp_free_stack[16];
+};
+
+struct slabinfo {
+	unsigned long active_objs;
+	unsigned long num_objs;
+	unsigned long active_slabs;
+	unsigned long num_slabs;
+	unsigned long shared_avail;
+	unsigned int limit;
+	unsigned int batchcount;
+	unsigned int shared;
+	unsigned int objects_per_slab;
+	unsigned int cache_order;
+};
+
+struct trace_event_data_offsets_kmem_cache_alloc {};
+
+struct trace_event_data_offsets_kmalloc {};
+
+struct trace_event_data_offsets_kfree {};
+
+struct trace_event_data_offsets_mm_page_free {};
+
+struct trace_event_data_offsets_mm_page_free_batched {};
+
+struct trace_event_data_offsets_mm_page_alloc {};
+
+struct trace_event_data_offsets_mm_page {};
+
+struct trace_event_data_offsets_mm_page_pcpu_drain {};
+
+struct trace_event_data_offsets_mm_page_alloc_extfrag {};
+
+struct trace_event_data_offsets_rss_stat {};
+
+typedef void (*btf_trace_mm_compaction_isolate_migratepages)(void *, unsigned long, unsigned long, unsigned long, unsigned long);
+
+typedef void (*btf_trace_mm_compaction_isolate_freepages)(void *, unsigned long, unsigned long, unsigned long, unsigned long);
+
+typedef void (*btf_trace_mm_compaction_fast_isolate_freepages)(void *, unsigned long, unsigned long, unsigned long, unsigned long);
+
+typedef void (*btf_trace_mm_compaction_migratepages)(void *, struct compact_control *, unsigned int);
+
+typedef void (*btf_trace_mm_compaction_begin)(void *, struct compact_control *, unsigned long, unsigned long, bool);
+
+typedef void (*btf_trace_mm_compaction_end)(void *, struct compact_control *, unsigned long, unsigned long, bool, int);
+
+typedef void (*btf_trace_mm_compaction_try_to_compact_pages)(void *, int, gfp_t, int);
+
+typedef void (*btf_trace_mm_compaction_finished)(void *, struct zone *, int, int);
+
+typedef void (*btf_trace_mm_compaction_suitable)(void *, struct zone *, int, int);
+
+typedef void (*btf_trace_mm_compaction_deferred)(void *, struct zone *, int);
+
+typedef void (*btf_trace_mm_compaction_defer_compaction)(void *, struct zone *, int);
+
+typedef void (*btf_trace_mm_compaction_defer_reset)(void *, struct zone *, int);
+
+typedef void (*btf_trace_mm_compaction_kcompactd_sleep)(void *, int);
+
+typedef void (*btf_trace_mm_compaction_wakeup_kcompactd)(void *, int, int, enum zone_type);
+
+typedef void (*btf_trace_mm_compaction_kcompactd_wake)(void *, int, int, enum zone_type);
+
+enum pageblock_bits {
+	PB_migrate = 0,
+	PB_migrate_end = 2,
+	PB_migrate_skip = 3,
+	NR_PAGEBLOCK_BITS = 4,
+};
+
+struct trace_event_raw_mm_compaction_isolate_template {
+	struct trace_entry ent;
+	unsigned long start_pfn;
+	unsigned long end_pfn;
+	unsigned long nr_scanned;
+	unsigned long nr_taken;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_compaction_migratepages {
+	struct trace_entry ent;
+	unsigned long nr_migrated;
+	unsigned long nr_failed;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_compaction_begin {
+	struct trace_entry ent;
+	unsigned long zone_start;
+	unsigned long migrate_pfn;
+	unsigned long free_pfn;
+	unsigned long zone_end;
+	bool sync;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_compaction_end {
+	struct trace_entry ent;
+	unsigned long zone_start;
+	unsigned long migrate_pfn;
+	unsigned long free_pfn;
+	unsigned long zone_end;
+	bool sync;
+	int status;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_compaction_try_to_compact_pages {
+	struct trace_entry ent;
+	int order;
+	unsigned long gfp_mask;
+	int prio;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_compaction_suitable_template {
+	struct trace_entry ent;
+	int nid;
+	enum zone_type idx;
+	int order;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_compaction_defer_template {
+	struct trace_entry ent;
+	int nid;
+	enum zone_type idx;
+	int order;
+	unsigned int considered;
+	unsigned int defer_shift;
+	int order_failed;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_compaction_kcompactd_sleep {
+	struct trace_entry ent;
+	int nid;
+	char __data[0];
+};
+
+struct trace_event_raw_kcompactd_wake_template {
+	struct trace_entry ent;
+	int nid;
+	int order;
+	enum zone_type highest_zoneidx;
+	char __data[0];
+};
+
+struct movable_operations {
+	bool (*isolate_page)(struct page *, isolate_mode_t);
+	int (*migrate_page)(struct page *, struct page *, enum migrate_mode);
+	void (*putback_page)(struct page *);
+};
+
+typedef enum {
+	ISOLATE_ABORT = 0,
+	ISOLATE_NONE = 1,
+	ISOLATE_SUCCESS = 2,
+} isolate_migrate_t;
+
+typedef struct folio *new_folio_t(struct folio *, unsigned long);
+
+typedef void free_folio_t(struct folio *, unsigned long);
+
+struct trace_event_data_offsets_mm_compaction_isolate_template {};
+
+struct trace_event_data_offsets_mm_compaction_migratepages {};
+
+struct trace_event_data_offsets_mm_compaction_begin {};
+
+struct trace_event_data_offsets_mm_compaction_end {};
+
+struct trace_event_data_offsets_mm_compaction_try_to_compact_pages {};
+
+struct trace_event_data_offsets_mm_compaction_suitable_template {};
+
+struct trace_event_data_offsets_mm_compaction_defer_template {};
+
+struct trace_event_data_offsets_mm_compaction_kcompactd_sleep {};
+
+struct trace_event_data_offsets_kcompactd_wake_template {};
+
+struct alloc_context {
+	struct zonelist *zonelist;
+	nodemask_t *nodemask;
+	struct zoneref *preferred_zoneref;
+	int migratetype;
+	enum zone_type highest_zoneidx;
+	bool spread_dirty_pages;
+};
+
+struct anon_vma_chain {
+	struct vm_area_struct *vma;
+	struct anon_vma *anon_vma;
+	struct list_head same_vma;
+	struct rb_node rb;
+	unsigned long rb_subtree_last;
+};
+
+enum lru_status {
+	LRU_REMOVED = 0,
+	LRU_REMOVED_RETRY = 1,
+	LRU_ROTATE = 2,
+	LRU_SKIP = 3,
+	LRU_RETRY = 4,
+};
+
+struct list_lru_memcg {
+	struct callback_head rcu;
+	struct list_lru_one node[0];
+};
+
+typedef enum lru_status (*list_lru_walk_cb)(struct list_head *, struct list_lru_one *, spinlock_t *, void *);
+
+struct list_lru_memcg_table {
+	struct list_lru_memcg *mlru;
+	struct mem_cgroup *memcg;
+};
+
+enum {
+	FOLL_TOUCH = 65536,
+	FOLL_TRIED = 131072,
+	FOLL_REMOTE = 262144,
+	FOLL_PIN = 524288,
+	FOLL_FAST_ONLY = 1048576,
+	FOLL_UNLOCKABLE = 2097152,
+	FOLL_MADV_POPULATE = 4194304,
+};
+
+struct follow_page_context {
+	struct dev_pagemap *pgmap;
+	unsigned int page_mask;
+};
+
+typedef void (*btf_trace_mmap_lock_start_locking)(void *, struct mm_struct *, const char *, bool);
+
+typedef void (*btf_trace_mmap_lock_released)(void *, struct mm_struct *, const char *, bool);
+
+typedef void (*btf_trace_mmap_lock_acquire_returned)(void *, struct mm_struct *, const char *, bool, bool);
+
+struct memcg_path {
+	local_lock_t lock;
+	char __attribute__((btf_type_tag("rcu"))) *buf;
+	local_t buf_idx;
+};
+
+struct trace_event_raw_mmap_lock {
+	struct trace_entry ent;
+	struct mm_struct *mm;
+	u32 __data_loc_memcg_path;
+	bool write;
+	char __data[0];
+};
+
+struct trace_event_raw_mmap_lock_acquire_returned {
+	struct trace_entry ent;
+	struct mm_struct *mm;
+	u32 __data_loc_memcg_path;
+	bool write;
+	bool success;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_mmap_lock {
+	u32 memcg_path;
+};
+
+struct trace_event_data_offsets_mmap_lock_acquire_returned {
+	u32 memcg_path;
+};
+
+typedef int (*show_pad_smaps_fn)(struct seq_file *, void *);
+
+typedef void (*show_pad_maps_fn)(struct seq_file *, struct vm_area_struct *);
+
+enum rmap_level {
+	RMAP_LEVEL_PTE = 0,
+	RMAP_LEVEL_PMD = 1,
+};
+
+enum transparent_hugepage_flag {
+	TRANSPARENT_HUGEPAGE_UNSUPPORTED = 0,
+	TRANSPARENT_HUGEPAGE_FLAG = 1,
+	TRANSPARENT_HUGEPAGE_REQ_MADV_FLAG = 2,
+	TRANSPARENT_HUGEPAGE_DEFRAG_DIRECT_FLAG = 3,
+	TRANSPARENT_HUGEPAGE_DEFRAG_KSWAPD_FLAG = 4,
+	TRANSPARENT_HUGEPAGE_DEFRAG_KSWAPD_OR_MADV_FLAG = 5,
+	TRANSPARENT_HUGEPAGE_DEFRAG_REQ_MADV_FLAG = 6,
+	TRANSPARENT_HUGEPAGE_DEFRAG_KHUGEPAGED_FLAG = 7,
+	TRANSPARENT_HUGEPAGE_USE_ZERO_PAGE_FLAG = 8,
+};
+
+typedef int rmap_t;
+
+typedef int fpb_t;
+
+typedef unsigned long pte_marker;
+
+typedef struct {
+	u64 val;
+} pfn_t;
+
+typedef unsigned int pgtbl_mod_mask;
+
+struct copy_subpage_arg {
+	struct page *dst;
+	struct page *src;
+	struct vm_area_struct *vma;
+};
+
+struct mlock_fbatch {
+	local_lock_t lock;
+	struct folio_batch fbatch;
+};
+
+struct vm_unmapped_area_info;
+
+typedef void (*btf_trace_vm_unmapped_area)(void *, unsigned long, struct vm_unmapped_area_info *);
+
+struct vm_unmapped_area_info {
+	unsigned long flags;
+	unsigned long length;
+	unsigned long low_limit;
+	unsigned long high_limit;
+	unsigned long align_mask;
+	unsigned long align_offset;
+};
+
+typedef void (*btf_trace_vma_mas_szero)(void *, struct maple_tree *, unsigned long, unsigned long);
+
+typedef void (*btf_trace_vma_store)(void *, struct maple_tree *, struct vm_area_struct *);
+
+typedef void (*btf_trace_exit_mmap)(void *, struct mm_struct *);
+
+enum {
+	HUGETLB_SHMFS_INODE = 1,
+	HUGETLB_ANONHUGE_INODE = 2,
+};
+
+struct trace_event_raw_vm_unmapped_area {
+	struct trace_entry ent;
+	unsigned long addr;
+	unsigned long total_vm;
+	unsigned long flags;
+	unsigned long length;
+	unsigned long low_limit;
+	unsigned long high_limit;
+	unsigned long align_mask;
+	unsigned long align_offset;
+	char __data[0];
+};
+
+struct trace_event_raw_vma_mas_szero {
+	struct trace_entry ent;
+	struct maple_tree *mt;
+	unsigned long start;
+	unsigned long end;
+	char __data[0];
+};
+
+struct trace_event_raw_vma_store {
+	struct trace_entry ent;
+	struct maple_tree *mt;
+	struct vm_area_struct *vma;
+	unsigned long vm_start;
+	unsigned long vm_end;
+	char __data[0];
+};
+
+struct trace_event_raw_exit_mmap {
+	struct trace_entry ent;
+	struct mm_struct *mm;
+	struct maple_tree *mt;
+	char __data[0];
+};
+
+struct vma_prepare {
+	struct vm_area_struct *vma;
+	struct vm_area_struct *adj_next;
+	struct file *file;
+	struct address_space *mapping;
+	struct anon_vma *anon_vma;
+	struct vm_area_struct *insert;
+	struct vm_area_struct *remove;
+	struct vm_area_struct *remove2;
+};
+
+struct trace_event_data_offsets_vm_unmapped_area {};
+
+struct trace_event_data_offsets_vma_mas_szero {};
+
+struct trace_event_data_offsets_vma_store {};
+
+struct trace_event_data_offsets_exit_mmap {};
+
+enum pgt_entry {
+	NORMAL_PMD = 0,
+	HPAGE_PMD = 1,
+	NORMAL_PUD = 2,
+	HPAGE_PUD = 3,
+};
+
+struct hstate {};
+
+typedef void (*btf_trace_tlb_flush)(void *, int, unsigned long);
+
+typedef void (*btf_trace_mm_migrate_pages)(void *, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, enum migrate_mode, int);
+
+typedef void (*btf_trace_mm_migrate_pages_start)(void *, enum migrate_mode, int);
+
+typedef void (*btf_trace_set_migration_pte)(void *, unsigned long, unsigned long, int);
+
+typedef void (*btf_trace_remove_migration_pte)(void *, unsigned long, unsigned long, int);
+
+struct trace_event_raw_tlb_flush {
+	struct trace_entry ent;
+	int reason;
+	unsigned long pages;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_migrate_pages {
+	struct trace_entry ent;
+	unsigned long succeeded;
+	unsigned long failed;
+	unsigned long thp_succeeded;
+	unsigned long thp_failed;
+	unsigned long thp_split;
+	enum migrate_mode mode;
+	int reason;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_migrate_pages_start {
+	struct trace_entry ent;
+	enum migrate_mode mode;
+	int reason;
+	char __data[0];
+};
+
+struct trace_event_raw_migration_pte {
+	struct trace_entry ent;
+	unsigned long addr;
+	unsigned long pte;
+	int order;
+	char __data[0];
+};
+
+struct rmap_walk_control {
+	void *arg;
+	bool try_lock;
+	bool contended;
+	bool (*rmap_one)(struct folio *, struct vm_area_struct *, unsigned long, void *);
+	int (*done)(struct folio *);
+	struct anon_vma * (*anon_lock)(struct folio *, struct rmap_walk_control *);
+	bool (*invalid_vma)(struct vm_area_struct *, void *);
+};
+
+struct trace_event_data_offsets_tlb_flush {};
+
+struct trace_event_data_offsets_mm_migrate_pages {};
+
+struct trace_event_data_offsets_mm_migrate_pages_start {};
+
+struct trace_event_data_offsets_migration_pte {};
+
+struct folio_referenced_arg {
+	int mapcount;
+	int referenced;
+	unsigned long vm_flags;
+	struct mem_cgroup *memcg;
+};
+
+typedef void (*btf_trace_alloc_vmap_area)(void *, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, int);
+
+typedef void (*btf_trace_purge_vmap_area_lazy)(void *, unsigned long, unsigned long, unsigned int);
+
+typedef void (*btf_trace_free_vmap_area_noflush)(void *, unsigned long, unsigned long, unsigned long);
+
+struct vfree_deferred {
+	struct llist_head list;
+	struct work_struct wq;
+};
+
+struct vmap_block_queue {
+	spinlock_t lock;
+	struct list_head free;
+	struct xarray vmap_blocks;
+};
+
+struct vmap_area {
+	unsigned long va_start;
+	unsigned long va_end;
+	struct rb_node rb_node;
+	struct list_head list;
+	union {
+		unsigned long subtree_max_size;
+		struct vm_struct *vm;
+	};
+	unsigned long flags;
+};
+
+enum fit_type {
+	NOTHING_FIT = 0,
+	FL_FIT_TYPE = 1,
+	LE_FIT_TYPE = 2,
+	RE_FIT_TYPE = 3,
+	NE_FIT_TYPE = 4,
+};
+
+struct trace_event_raw_alloc_vmap_area {
+	struct trace_entry ent;
+	unsigned long addr;
+	unsigned long size;
+	unsigned long align;
+	unsigned long vstart;
+	unsigned long vend;
+	int failed;
+	char __data[0];
+};
+
+struct trace_event_raw_purge_vmap_area_lazy {
+	struct trace_entry ent;
+	unsigned long start;
+	unsigned long end;
+	unsigned int npurged;
+	char __data[0];
+};
+
+struct trace_event_raw_free_vmap_area_noflush {
+	struct trace_entry ent;
+	unsigned long va_start;
+	unsigned long nr_lazy;
+	unsigned long nr_lazy_max;
+	char __data[0];
+};
+
+struct vmap_block {
+	spinlock_t lock;
+	struct vmap_area *va;
+	unsigned long free;
+	unsigned long dirty;
+	unsigned long used_map[16];
+	unsigned long dirty_min;
+	unsigned long dirty_max;
+	struct list_head free_list;
+	struct callback_head callback_head;
+	struct list_head purge;
+	unsigned int cpu;
+};
+
+struct trace_event_data_offsets_alloc_vmap_area {};
+
+struct trace_event_data_offsets_purge_vmap_area_lazy {};
+
+struct trace_event_data_offsets_free_vmap_area_noflush {};
+
+typedef int fpi_t;
+
+struct va_format {
+	const char *fmt;
+	va_list *va;
+};
+
+struct page_frag_cache {
+	void *va;
+	__u16 offset;
+	__u16 size;
+	unsigned int pagecnt_bias;
+	bool pfmemalloc;
+};
+
+struct memblock {
+	bool bottom_up;
+	phys_addr_t current_limit;
+	struct memblock_type memory;
+	struct memblock_type reserved;
+};
+
+enum memblock_memsize_state {
+	MEMBLOCK_MEMSIZE_NONE = 0,
+	MEMBLOCK_MEMSIZE_DEBUGFS = 1,
+	MEMBLOCK_MEMSIZE_PROCFS = 2,
+};
+
+struct memsize_rgn_struct {
+	phys_addr_t base;
+	long size;
+	bool nomap;
+	bool reusable;
+	char name[100];
+};
+
+typedef void (*online_page_callback_t)(struct page *, unsigned int);
+
+enum {
+	MMOP_OFFLINE = 0,
+	MMOP_ONLINE = 1,
+	MMOP_ONLINE_KERNEL = 2,
+	MMOP_ONLINE_MOVABLE = 3,
+};
+
+enum {
+	ONLINE_POLICY_CONTIG_ZONES = 0,
+	ONLINE_POLICY_AUTO_MOVABLE = 1,
+};
+
+enum {
+	MEMMAP_ON_MEMORY_DISABLE = 0,
+	MEMMAP_ON_MEMORY_ENABLE = 1,
+	MEMMAP_ON_MEMORY_FORCE = 2,
+};
+
+typedef int mhp_t;
+
+struct memory_group;
+
+struct memory_block {
+	unsigned long start_section_nr;
+	unsigned long state;
+	int online_type;
+	int nid;
+	struct zone *zone;
+	struct device dev;
+	struct vmem_altmap *altmap;
+	struct memory_group *group;
+	struct list_head group_next;
+};
+
+struct memory_group {
+	int nid;
+	struct list_head memory_blocks;
+	unsigned long present_kernel_pages;
+	unsigned long present_movable_pages;
+	bool is_dynamic;
+	union {
+		struct {
+			unsigned long max_pages;
+		} s;
+		struct {
+			unsigned long unit_pages;
+		} d;
+	};
+};
+
+struct auto_movable_group_stats {
+	unsigned long movable_pages;
+	unsigned long req_kernel_early_pages;
+};
+
+struct auto_movable_stats {
+	unsigned long kernel_early_pages;
+	unsigned long movable_pages;
+};
+
+typedef int (*walk_memory_groups_func_t)(struct memory_group *, void *);
+
+typedef int (*walk_memory_blocks_func_t)(struct memory_block *, void *);
+
+enum iter_type {
+	ITER_IOVEC = 0,
+	ITER_KVEC = 1,
+	ITER_BVEC = 2,
+	ITER_XARRAY = 3,
+	ITER_DISCARD = 4,
+	ITER_UBUF = 5,
+};
+
+struct madvise_walk_private {
+	struct mmu_gather *tlb;
+	bool pageout;
+};
+
+enum {
+	BIO_PAGE_PINNED = 0,
+	BIO_CLONED = 1,
+	BIO_BOUNCED = 2,
+	BIO_QUIET = 3,
+	BIO_CHAIN = 4,
+	BIO_REFFED = 5,
+	BIO_BPS_THROTTLED = 6,
+	BIO_TRACE_COMPLETION = 7,
+	BIO_CGROUP_ACCT = 8,
+	BIO_QOS_THROTTLED = 9,
+	BIO_QOS_MERGED = 10,
+	BIO_REMAPPED = 11,
+	BIO_ZONE_WRITE_LOCKED = 12,
+	BIO_FLAG_LAST = 13,
+};
+
+struct swap_iocb {
+	struct kiocb iocb;
+	struct bio_vec bvec[32];
+	int pages;
+	int len;
+};
+
+struct vma_swap_readahead {
+	unsigned short win;
+	unsigned short offset;
+	unsigned short nr_pte;
+};
+
+enum {
+	PERCPU_REF_INIT_ATOMIC = 1,
+	PERCPU_REF_INIT_DEAD = 2,
+	PERCPU_REF_ALLOW_REINIT = 4,
+};
+
+struct swap_extent {
+	struct rb_node rb_node;
+	unsigned long start_page;
+	unsigned long nr_pages;
+	sector_t start_block;
+};
+
+union swap_header {
+	struct {
+		char reserved[4086];
+		char magic[10];
+	} magic;
+	struct {
+		char bootbits[1024];
+		__u32 version;
+		__u32 last_page;
+		__u32 nr_badpages;
+		unsigned char sws_uuid[16];
+		unsigned char sws_volume[16];
+		__u32 padding[117];
+		__u32 badpages[1];
+	} info;
+};
+
+struct swap_slots_cache {
+	bool lock_initialized;
+	struct mutex alloc_lock;
+	swp_entry_t *slots;
+	int nr;
+	int cur;
+	spinlock_t free_lock;
+	swp_entry_t *slots_ret;
+	int n_ret;
+};
+
+struct dma_page {
+	struct list_head page_list;
+	void *vaddr;
+	dma_addr_t dma;
+};
+
+struct dma_block;
+
+struct dma_pool {
+	struct list_head page_list;
+	spinlock_t lock;
+	struct dma_block *next_block;
+	size_t nr_blocks;
+	size_t nr_active;
+	size_t nr_pages;
+	struct device *dev;
+	unsigned int size;
+	unsigned int allocation;
+	unsigned int boundary;
+	char name[32];
+	struct list_head pools;
+};
+
+struct dma_block {
+	struct dma_block *next_block;
+	dma_addr_t dma;
+};
+
+struct mmu_notifier_subscriptions {
+	struct hlist_head list;
+	bool has_itree;
+	spinlock_t lock;
+	unsigned long invalidate_seq;
+	unsigned long active_invalidate_ranges;
+	struct rb_root_cached itree;
+	wait_queue_head_t wq;
+	struct hlist_head deferred_list;
+};
+
+struct mmu_interval_notifier_ops;
+
+struct mmu_interval_notifier {
+	struct interval_tree_node interval_tree;
+	const struct mmu_interval_notifier_ops *ops;
+	struct mm_struct *mm;
+	struct hlist_node deferred_item;
+	unsigned long invalidate_seq;
+};
+
+struct mmu_interval_notifier_ops {
+	bool (*invalidate)(struct mmu_interval_notifier *, const struct mmu_notifier_range *, unsigned long);
+};
+
+struct slub_flush_work {
+	struct work_struct work;
+	struct kmem_cache *s;
+	bool skip;
+};
+
+struct slab_attribute {
+	struct attribute attr;
+	ssize_t (*show)(struct kmem_cache *, char *);
+	ssize_t (*store)(struct kmem_cache *, const char *, size_t);
+};
+
+struct saved_alias {
+	struct kmem_cache *s;
+	const char *name;
+	struct saved_alias *next;
+};
+
+enum track_item {
+	TRACK_ALLOC = 0,
+	TRACK_FREE = 1,
+};
+
+enum stat_item {
+	ALLOC_FASTPATH = 0,
+	ALLOC_SLOWPATH = 1,
+	FREE_FASTPATH = 2,
+	FREE_SLOWPATH = 3,
+	FREE_FROZEN = 4,
+	FREE_ADD_PARTIAL = 5,
+	FREE_REMOVE_PARTIAL = 6,
+	ALLOC_FROM_PARTIAL = 7,
+	ALLOC_SLAB = 8,
+	ALLOC_REFILL = 9,
+	ALLOC_NODE_MISMATCH = 10,
+	FREE_SLAB = 11,
+	CPUSLAB_FLUSH = 12,
+	DEACTIVATE_FULL = 13,
+	DEACTIVATE_EMPTY = 14,
+	DEACTIVATE_TO_HEAD = 15,
+	DEACTIVATE_TO_TAIL = 16,
+	DEACTIVATE_REMOTE_FREES = 17,
+	DEACTIVATE_BYPASS = 18,
+	ORDER_FALLBACK = 19,
+	CMPXCHG_DOUBLE_CPU_FAIL = 20,
+	CMPXCHG_DOUBLE_FAIL = 21,
+	CPU_PARTIAL_ALLOC = 22,
+	CPU_PARTIAL_FREE = 23,
+	CPU_PARTIAL_NODE = 24,
+	CPU_PARTIAL_DRAIN = 25,
+	NR_SLUB_STAT_ITEMS = 26,
+};
+
+enum slab_modes {
+	M_NONE = 0,
+	M_PARTIAL = 1,
+	M_FREE = 2,
+	M_FULL_NOLIST = 3,
+};
+
+enum slab_stat_type {
+	SL_ALL = 0,
+	SL_PARTIAL = 1,
+	SL_CPU = 2,
+	SL_OBJECTS = 3,
+	SL_TOTAL = 4,
+};
+
+typedef struct {
+	unsigned long v;
+} freeptr_t;
+
+struct kunit_resource;
+
+typedef void (*kunit_resource_free_t)(struct kunit_resource *);
+
+struct kunit_resource {
+	void *data;
+	const char *name;
+	kunit_resource_free_t free;
+	struct kref refcount;
+	struct list_head node;
+	bool should_kfree;
+};
+
+typedef u32 depot_stack_handle_t;
+
+struct location {
+	depot_stack_handle_t handle;
+	unsigned long count;
+	unsigned long addr;
+	unsigned long waste;
+	long long sum_time;
+	long min_time;
+	long max_time;
+	long min_pid;
+	long max_pid;
+	unsigned long cpus[1];
+	nodemask_t nodes;
+};
+
+struct track {
+	unsigned long addr;
+	depot_stack_handle_t handle;
+	int cpu;
+	int pid;
+	unsigned long when;
+};
+
+typedef freelist_full_t pcp_op_T__;
+
+union __u128_halves {
+	u128 full;
+	struct {
+		u64 low;
+		u64 high;
+	};
+};
+
+struct detached_freelist {
+	struct slab *slab;
+	void *tail;
+	void *freelist;
+	int cnt;
+	struct kmem_cache *s;
+};
+
+struct partial_context {
+	struct slab **slab;
+	gfp_t flags;
+	unsigned int orig_size;
+};
+
+typedef bool (*kunit_resource_match_t)(struct kunit *, struct kunit_resource *, void *);
+
+struct loc_track {
+	unsigned long max;
+	unsigned long count;
+	struct location *loc;
+	loff_t idx;
+};
+
+enum kasan_report_type {
+	KASAN_REPORT_ACCESS = 0,
+	KASAN_REPORT_INVALID_FREE = 1,
+	KASAN_REPORT_DOUBLE_FREE = 2,
+};
+
+struct kasan_track {
+	u32 pid;
+	depot_stack_handle_t stack;
+};
+
+enum kasan_arg_fault {
+	KASAN_ARG_FAULT_DEFAULT = 0,
+	KASAN_ARG_FAULT_REPORT = 1,
+	KASAN_ARG_FAULT_PANIC = 2,
+	KASAN_ARG_FAULT_PANIC_ON_WRITE = 3,
+};
+
+struct kasan_report_info {
+	enum kasan_report_type type;
+	const void *access_addr;
+	size_t access_size;
+	bool is_write;
+	unsigned long ip;
+	const void *first_bad_addr;
+	struct kmem_cache *cache;
+	void *object;
+	size_t alloc_size;
+	const char *bug_type;
+	struct kasan_track alloc_track;
+	struct kasan_track free_track;
+};
+
+enum kasan_arg {
+	KASAN_ARG_DEFAULT = 0,
+	KASAN_ARG_OFF = 1,
+	KASAN_ARG_ON = 2,
+};
+
+enum kasan_arg_mode {
+	KASAN_ARG_MODE_DEFAULT = 0,
+	KASAN_ARG_MODE_SYNC = 1,
+	KASAN_ARG_MODE_ASYNC = 2,
+	KASAN_ARG_MODE_ASYMM = 3,
+};
+
+enum kasan_arg_vmalloc {
+	KASAN_ARG_VMALLOC_DEFAULT = 0,
+	KASAN_ARG_VMALLOC_OFF = 1,
+	KASAN_ARG_VMALLOC_ON = 2,
+};
+
+enum kasan_mode {
+	KASAN_MODE_SYNC = 0,
+	KASAN_MODE_ASYNC = 1,
+	KASAN_MODE_ASYMM = 2,
+};
+
+struct kasan_stack_ring_entry;
+
+struct kasan_stack_ring {
+	rwlock_t lock;
+	size_t size;
+	atomic64_t pos;
+	struct kasan_stack_ring_entry *entries;
+};
+
+struct kasan_stack_ring_entry {
+	void *ptr;
+	size_t size;
+	u32 pid;
+	depot_stack_handle_t stack;
+	bool is_free;
+};
+
+enum kasan_arg_stacktrace {
+	KASAN_ARG_STACKTRACE_DEFAULT = 0,
+	KASAN_ARG_STACKTRACE_OFF = 1,
+	KASAN_ARG_STACKTRACE_ON = 2,
+};
+
+enum kfence_object_state {
+	KFENCE_OBJECT_UNUSED = 0,
+	KFENCE_OBJECT_ALLOCATED = 1,
+	KFENCE_OBJECT_FREED = 2,
+};
+
+struct kfence_track {
+	pid_t pid;
+	int cpu;
+	u64 ts_nsec;
+	int num_stack_entries;
+	unsigned long stack_entries[64];
+};
+
+struct kfence_metadata {
+	struct list_head list;
+	struct callback_head callback_head;
+	raw_spinlock_t lock;
+	enum kfence_object_state state;
+	unsigned long addr;
+	size_t size;
+	struct kmem_cache *cache;
+	unsigned long unprotected_page;
+	struct kfence_track alloc_track;
+	struct kfence_track free_track;
+	u32 alloc_stack_hash;
+	struct obj_cgroup *objcg;
+};
+
+enum kfence_counter_id {
+	KFENCE_COUNTER_ALLOCATED = 0,
+	KFENCE_COUNTER_ALLOCS = 1,
+	KFENCE_COUNTER_FREES = 2,
+	KFENCE_COUNTER_ZOMBIES = 3,
+	KFENCE_COUNTER_BUGS = 4,
+	KFENCE_COUNTER_SKIP_INCOMPAT = 5,
+	KFENCE_COUNTER_SKIP_CAPACITY = 6,
+	KFENCE_COUNTER_SKIP_COVERED = 7,
+	KFENCE_COUNTER_COUNT = 8,
+};
+
+enum kfence_error_type {
+	KFENCE_ERROR_OOB = 0,
+	KFENCE_ERROR_UAF = 1,
+	KFENCE_ERROR_CORRUPTION = 2,
+	KFENCE_ERROR_INVALID = 3,
+	KFENCE_ERROR_INVALID_FREE = 4,
+};
+
+struct kcsan_scoped_access {};
+
+typedef __kernel_long_t __kernel_ptrdiff_t;
+
+typedef __kernel_ptrdiff_t ptrdiff_t;
+
+enum bh_state_bits {
+	BH_Uptodate = 0,
+	BH_Dirty = 1,
+	BH_Lock = 2,
+	BH_Req = 3,
+	BH_Mapped = 4,
+	BH_New = 5,
+	BH_Async_Read = 6,
+	BH_Async_Write = 7,
+	BH_Delay = 8,
+	BH_Boundary = 9,
+	BH_Write_EIO = 10,
+	BH_Unwritten = 11,
+	BH_Quiet = 12,
+	BH_Meta = 13,
+	BH_Prio = 14,
+	BH_Defer_Completion = 15,
+	BH_PrivateStart = 16,
+};
+
+enum {
+	PAGE_WAS_MAPPED = 1,
+	PAGE_WAS_MLOCKED = 2,
+	PAGE_OLD_STATES = 3,
+};
+
+struct buffer_head;
+
+typedef void bh_end_io_t(struct buffer_head *, int);
+
+struct buffer_head {
+	unsigned long b_state;
+	struct buffer_head *b_this_page;
+	union {
+		struct page *b_page;
+		struct folio *b_folio;
+	};
+	sector_t b_blocknr;
+	size_t b_size;
+	char *b_data;
+	struct block_device *b_bdev;
+	bh_end_io_t *b_end_io;
+	void *b_private;
+	struct list_head b_assoc_buffers;
+	struct address_space *b_assoc_map;
+	atomic_t b_count;
+	spinlock_t b_uptodate_lock;
+};
+
+struct migrate_pages_stats {
+	int nr_succeeded;
+	int nr_failed_pages;
+	int nr_thp_succeeded;
+	int nr_thp_failed;
+	int nr_thp_split;
+};
+
+typedef void (*btf_trace_hugepage_set_pmd)(void *, unsigned long, unsigned long);
+
+typedef void (*btf_trace_hugepage_set_pud)(void *, unsigned long, unsigned long);
+
+typedef void (*btf_trace_hugepage_update_pmd)(void *, unsigned long, unsigned long, unsigned long, unsigned long);
+
+typedef void (*btf_trace_hugepage_update_pud)(void *, unsigned long, unsigned long, unsigned long, unsigned long);
+
+typedef void (*btf_trace_set_migration_pmd)(void *, unsigned long, unsigned long);
+
+typedef void (*btf_trace_remove_migration_pmd)(void *, unsigned long, unsigned long);
+
+struct mthp_stat {
+	unsigned long stats[50];
+};
+
+struct trace_event_raw_hugepage_set {
+	struct trace_entry ent;
+	unsigned long addr;
+	unsigned long pte;
+	char __data[0];
+};
+
+struct trace_event_raw_hugepage_update {
+	struct trace_entry ent;
+	unsigned long addr;
+	unsigned long pte;
+	unsigned long clr;
+	unsigned long set;
+	char __data[0];
+};
+
+struct trace_event_raw_migration_pmd {
+	struct trace_entry ent;
+	unsigned long addr;
+	unsigned long pmd;
+	char __data[0];
+};
+
+struct thpsize {
+	struct kobject kobj;
+	struct list_head node;
+	int order;
+};
+
+struct trace_event_data_offsets_hugepage_set {};
+
+struct trace_event_data_offsets_hugepage_update {};
+
+struct trace_event_data_offsets_migration_pmd {};
+
+typedef void (*btf_trace_mm_khugepaged_scan_pmd)(void *, struct mm_struct *, struct page *, bool, int, int, int, int);
+
+typedef void (*btf_trace_mm_collapse_huge_page)(void *, struct mm_struct *, int, int);
+
+typedef void (*btf_trace_mm_collapse_huge_page_isolate)(void *, struct page *, int, int, bool, int);
+
+typedef void (*btf_trace_mm_collapse_huge_page_swapin)(void *, struct mm_struct *, int, int, int);
+
+typedef void (*btf_trace_mm_khugepaged_scan_file)(void *, struct mm_struct *, struct page *, struct file *, int, int, int);
+
+typedef void (*btf_trace_mm_khugepaged_collapse_file)(void *, struct mm_struct *, struct page *, unsigned long, bool, unsigned long, struct file *, int, int);
+
+struct collapse_control {
+	bool is_khugepaged;
+	u32 node_load[1];
+	nodemask_t alloc_nmask;
+};
+
+struct khugepaged_mm_slot;
+
+struct khugepaged_scan {
+	struct list_head mm_head;
+	struct khugepaged_mm_slot *mm_slot;
+	unsigned long address;
+};
+
+struct mm_slot {
+	struct hlist_node hash;
+	struct list_head mm_node;
+	struct mm_struct *mm;
+};
+
+struct khugepaged_mm_slot {
+	struct mm_slot slot;
+};
+
+enum scan_result {
+	SCAN_FAIL = 0,
+	SCAN_SUCCEED = 1,
+	SCAN_PMD_NULL = 2,
+	SCAN_PMD_NONE = 3,
+	SCAN_PMD_MAPPED = 4,
+	SCAN_EXCEED_NONE_PTE = 5,
+	SCAN_EXCEED_SWAP_PTE = 6,
+	SCAN_EXCEED_SHARED_PTE = 7,
+	SCAN_PTE_NON_PRESENT = 8,
+	SCAN_PTE_UFFD_WP = 9,
+	SCAN_PTE_MAPPED_HUGEPAGE = 10,
+	SCAN_PAGE_RO = 11,
+	SCAN_LACK_REFERENCED_PAGE = 12,
+	SCAN_PAGE_NULL = 13,
+	SCAN_SCAN_ABORT = 14,
+	SCAN_PAGE_COUNT = 15,
+	SCAN_PAGE_LRU = 16,
+	SCAN_PAGE_LOCK = 17,
+	SCAN_PAGE_ANON = 18,
+	SCAN_PAGE_COMPOUND = 19,
+	SCAN_ANY_PROCESS = 20,
+	SCAN_VMA_NULL = 21,
+	SCAN_VMA_CHECK = 22,
+	SCAN_ADDRESS_RANGE = 23,
+	SCAN_DEL_PAGE_LRU = 24,
+	SCAN_ALLOC_HUGE_PAGE_FAIL = 25,
+	SCAN_CGROUP_CHARGE_FAIL = 26,
+	SCAN_TRUNCATED = 27,
+	SCAN_PAGE_HAS_PRIVATE = 28,
+	SCAN_STORE_FAILED = 29,
+	SCAN_COPY_MC = 30,
+	SCAN_PAGE_FILLED = 31,
+};
+
+struct trace_event_raw_mm_khugepaged_scan_pmd {
+	struct trace_entry ent;
+	struct mm_struct *mm;
+	unsigned long pfn;
+	bool writable;
+	int referenced;
+	int none_or_zero;
+	int status;
+	int unmapped;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_collapse_huge_page {
+	struct trace_entry ent;
+	struct mm_struct *mm;
+	int isolated;
+	int status;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_collapse_huge_page_isolate {
+	struct trace_entry ent;
+	unsigned long pfn;
+	int none_or_zero;
+	int referenced;
+	bool writable;
+	int status;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_collapse_huge_page_swapin {
+	struct trace_entry ent;
+	struct mm_struct *mm;
+	int swapped_in;
+	int referenced;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_khugepaged_scan_file {
+	struct trace_entry ent;
+	struct mm_struct *mm;
+	unsigned long pfn;
+	u32 __data_loc_filename;
+	int present;
+	int swap;
+	int result;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_khugepaged_collapse_file {
+	struct trace_entry ent;
+	struct mm_struct *mm;
+	unsigned long hpfn;
+	unsigned long index;
+	unsigned long addr;
+	bool is_shmem;
+	u32 __data_loc_filename;
+	int nr;
+	int result;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_mm_khugepaged_scan_file {
+	u32 filename;
+};
+
+struct trace_event_data_offsets_mm_khugepaged_collapse_file {
+	u32 filename;
+};
+
+struct trace_event_data_offsets_mm_khugepaged_scan_pmd {};
+
+struct trace_event_data_offsets_mm_collapse_huge_page {};
+
+struct trace_event_data_offsets_mm_collapse_huge_page_isolate {};
+
+struct trace_event_data_offsets_mm_collapse_huge_page_swapin {};
+
+struct memcg_vmstats {
+	long state[49];
+	unsigned long events[17];
+	long state_local[49];
+	unsigned long events_local[17];
+	long state_pending[49];
+	unsigned long events_pending[17];
+	atomic64_t stats_updates;
+};
+
+struct mem_cgroup_tree_per_node;
+
+struct mem_cgroup_tree {
+	struct mem_cgroup_tree_per_node *rb_tree_per_node[1];
+};
+
+struct mem_cgroup_tree_per_node {
+	struct rb_root rb_root;
+	struct rb_node *rb_rightmost;
+	spinlock_t lock;
+};
+
+struct memory_stat {
+	const char *name;
+	unsigned int idx;
+};
+
+struct move_charge_struct {
+	spinlock_t lock;
+	struct mm_struct *mm;
+	struct mem_cgroup *from;
+	struct mem_cgroup *to;
+	unsigned long flags;
+	unsigned long precharge;
+	unsigned long moved_charge;
+	unsigned long moved_swap;
+	struct task_struct *moving_task;
+	wait_queue_head_t waitq;
+};
+
+struct memcg_stock_pcp {
+	local_lock_t stock_lock;
+	struct mem_cgroup *cached;
+	unsigned int nr_pages;
+	struct obj_cgroup *cached_objcg;
+	struct pglist_data *cached_pgdat;
+	unsigned int nr_bytes;
+	int nr_slab_reclaimable_b;
+	int nr_slab_unreclaimable_b;
+	struct work_struct work;
+	unsigned long flags;
+};
+
+enum mem_cgroup_events_target {
+	MEM_CGROUP_TARGET_THRESH = 0,
+	MEM_CGROUP_TARGET_SOFTLIMIT = 1,
+	MEM_CGROUP_NTARGETS = 2,
+};
+
+enum mc_target_type {
+	MC_TARGET_NONE = 0,
+	MC_TARGET_PAGE = 1,
+	MC_TARGET_SWAP = 2,
+	MC_TARGET_DEVICE = 3,
+};
+
+enum res_type {
+	_MEM = 0,
+	_MEMSWAP = 1,
+	_KMEM = 2,
+	_TCP = 3,
+};
+
+enum {
+	RES_USAGE = 0,
+	RES_LIMIT = 1,
+	RES_MAX_USAGE = 2,
+	RES_FAILCNT = 3,
+	RES_SOFT_LIMIT = 4,
+};
+
+struct oom_wait_info {
+	struct mem_cgroup *memcg;
+	wait_queue_entry_t wait;
+};
+
+struct mem_cgroup_eventfd_list {
+	struct list_head list;
+	struct eventfd_ctx *eventfd;
+};
+
+struct mem_cgroup_event {
+	struct mem_cgroup *memcg;
+	struct eventfd_ctx *eventfd;
+	struct list_head list;
+	int (*register_event)(struct mem_cgroup *, struct eventfd_ctx *, const char *);
+	void (*unregister_event)(struct mem_cgroup *, struct eventfd_ctx *);
+	poll_table pt;
+	wait_queue_head_t *wqh;
+	wait_queue_entry_t wait;
+	struct work_struct remove;
+};
+
+struct uncharge_gather {
+	struct mem_cgroup *memcg;
+	unsigned long nr_memory;
+	unsigned long pgpgout;
+	unsigned long nr_kmem;
+	int nid;
+};
+
+union mc_target {
+	struct folio *folio;
+	swp_entry_t ent;
+};
+
+enum vmpressure_levels {
+	VMPRESSURE_LOW = 0,
+	VMPRESSURE_MEDIUM = 1,
+	VMPRESSURE_CRITICAL = 2,
+	VMPRESSURE_NUM_LEVELS = 3,
+};
+
+enum vmpressure_modes {
+	VMPRESSURE_NO_PASSTHROUGH = 0,
+	VMPRESSURE_HIERARCHY = 1,
+	VMPRESSURE_LOCAL = 2,
+	VMPRESSURE_NUM_MODES = 3,
+};
+
+struct vmpressure_event {
+	struct eventfd_ctx *efd;
+	enum vmpressure_levels level;
+	enum vmpressure_modes mode;
+	struct list_head node;
+};
+
+struct swap_cgroup_ctrl {
+	struct page **map;
+	unsigned long length;
+	spinlock_t lock;
+};
+
+struct swap_cgroup {
+	unsigned short id;
+};
+
+struct page_ext_operations {
+	size_t offset;
+	size_t size;
+	bool (*need)();
+	void (*init)();
+	bool need_shared_flags;
+};
+
+enum page_ext_flags {
+	PAGE_EXT_OWNER = 0,
+	PAGE_EXT_OWNER_ALLOCATED = 1,
+	PAGE_EXT_PINNER_MIGRATION_FAILED = 2,
+};
+
+struct page_owner {
+	unsigned short order;
+	short last_migrate_reason;
+	gfp_t gfp_mask;
+	depot_stack_handle_t handle;
+	depot_stack_handle_t free_handle;
+	u64 ts_nsec;
+	u64 free_ts_nsec;
+	char comm[16];
+	pid_t pid;
+	pid_t tgid;
+	pid_t free_pid;
+	pid_t free_tgid;
+};
+
+struct cleancache_filekey;
+
+struct cleancache_ops {
+	int (*init_fs)(size_t);
+	int (*init_shared_fs)(uuid_t *, size_t);
+	int (*get_page)(int, struct cleancache_filekey, unsigned long, struct page *);
+	void (*put_page)(int, struct cleancache_filekey, unsigned long, struct page *);
+	void (*invalidate_page)(int, struct cleancache_filekey, unsigned long);
+	void (*invalidate_inode)(int, struct cleancache_filekey);
+	void (*invalidate_fs)(int);
+};
+
+struct cleancache_filekey {
+	union {
+		ino_t ino;
+		__u32 fh[6];
+		u32 key[6];
+	} u;
+};
+
+struct captured_pinner;
+
+struct page_pinner_buffer {
+	spinlock_t lock;
+	unsigned long index;
+	struct captured_pinner *buffer;
+};
+
+enum pp_state {
+	PP_PUT = 0,
+	PP_FREE = 1,
+	PP_FAIL_DETECTED = 2,
+};
+
+struct captured_pinner {
+	depot_stack_handle_t handle;
+	union {
+		u64 ts_usec;
+		u64 elapsed;
+	};
+	unsigned long pfn;
+	int count;
+	int mapcount;
+	struct address_space *mapping;
+	unsigned long flags;
+	enum pp_state state;
+};
+
+struct page_pinner {
+	depot_stack_handle_t handle;
+	u64 ts_usec;
+	atomic_t count;
+};
+
+typedef void (*btf_trace_test_pages_isolated)(void *, unsigned long, unsigned long, unsigned long);
+
+struct trace_event_raw_test_pages_isolated {
+	struct trace_entry ent;
+	unsigned long start_pfn;
+	unsigned long end_pfn;
+	unsigned long fin_pfn;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_test_pages_isolated {};
+
+typedef void (*btf_trace_cma_release)(void *, const char *, unsigned long, const struct page *, unsigned long);
+
+typedef void (*btf_trace_cma_alloc_start)(void *, const char *, unsigned long, unsigned int);
+
+typedef void (*btf_trace_cma_alloc_finish)(void *, const char *, unsigned long, const struct page *, unsigned long, unsigned int, int);
+
+typedef void (*btf_trace_cma_alloc_busy_retry)(void *, const char *, unsigned long, const struct page *, unsigned long, unsigned int);
+
+struct trace_event_raw_cma_release {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	unsigned long pfn;
+	const struct page *page;
+	unsigned long count;
+	char __data[0];
+};
+
+struct trace_event_raw_cma_alloc_start {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	unsigned long count;
+	unsigned int align;
+	char __data[0];
+};
+
+struct trace_event_raw_cma_alloc_finish {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	unsigned long pfn;
+	const struct page *page;
+	unsigned long count;
+	unsigned int align;
+	int errorno;
+	char __data[0];
+};
+
+struct trace_event_raw_cma_alloc_busy_retry {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	unsigned long pfn;
+	const struct page *page;
+	unsigned long count;
+	unsigned int align;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_cma_release {
+	u32 name;
+};
+
+struct trace_event_data_offsets_cma_alloc_start {
+	u32 name;
+};
+
+struct trace_event_data_offsets_cma_alloc_finish {
+	u32 name;
+};
+
+struct trace_event_data_offsets_cma_alloc_busy_retry {
+	u32 name;
+};
+
+struct balloon_dev_info {
+	unsigned long isolated_pages;
+	spinlock_t pages_lock;
+	struct list_head pages;
+	int (*migratepage)(struct balloon_dev_info *, struct page *, struct page *, enum migrate_mode);
+};
+
+struct cma_mem {
+	struct hlist_node node;
+	struct page *p;
+	unsigned long n;
+};
+
+enum {
+	BAD_STACK = -1,
+	NOT_STACK = 0,
+	GOOD_FRAME = 1,
+	GOOD_STACK = 2,
+};
+
+struct page_reporting_dev_info {
+	int (*report)(struct page_reporting_dev_info *, struct scatterlist *, unsigned int);
+	struct delayed_work work;
+	atomic_t state;
+	unsigned int order;
+};
+
+enum {
+	PAGE_REPORTING_IDLE = 0,
+	PAGE_REPORTING_REQUESTED = 1,
+	PAGE_REPORTING_ACTIVE = 2,
+};
+
+struct file_lock_context {
+	spinlock_t flc_lock;
+	struct list_head flc_flock;
+	struct list_head flc_posix;
+	struct list_head flc_lease;
+};
+
+struct nlm_lockowner;
+
+struct nfs_lock_info {
+	u32 state;
+	struct nlm_lockowner *owner;
+	struct list_head list;
+};
+
+struct nfs4_lock_state;
+
+struct nfs4_lock_info {
+	struct nfs4_lock_state *owner;
+};
+
+struct file_lock_operations;
+
+struct lock_manager_operations;
+
+struct file_lock {
+	struct file_lock *fl_blocker;
+	struct list_head fl_list;
+	struct hlist_node fl_link;
+	struct list_head fl_blocked_requests;
+	struct list_head fl_blocked_member;
+	fl_owner_t fl_owner;
+	unsigned int fl_flags;
+	unsigned char fl_type;
+	unsigned int fl_pid;
+	int fl_link_cpu;
+	wait_queue_head_t fl_wait;
+	struct file *fl_file;
+	loff_t fl_start;
+	loff_t fl_end;
+	struct fasync_struct *fl_fasync;
+	unsigned long fl_break_time;
+	unsigned long fl_downgrade_time;
+	const struct file_lock_operations *fl_ops;
+	const struct lock_manager_operations *fl_lmops;
+	union {
+		struct nfs_lock_info nfs_fl;
+		struct nfs4_lock_info nfs4_fl;
+		struct {
+			struct list_head link;
+			int state;
+			unsigned int debug_id;
+		} afs;
+		struct {
+			struct inode *inode;
+		} ceph;
+	} fl_u;
+};
+
+struct file_lock_operations {
+	void (*fl_copy_lock)(struct file_lock *, struct file_lock *);
+	void (*fl_release_private)(struct file_lock *);
+};
+
+struct lock_manager_operations {
+	void *lm_mod_owner;
+	fl_owner_t (*lm_get_owner)(fl_owner_t);
+	void (*lm_put_owner)(fl_owner_t);
+	void (*lm_notify)(struct file_lock *);
+	int (*lm_grant)(struct file_lock *, int);
+	bool (*lm_break)(struct file_lock *);
+	int (*lm_change)(struct file_lock *, int, struct list_head *);
+	void (*lm_setup)(struct file_lock *, void **);
+	bool (*lm_breaker_owns_lease)(struct file_lock *);
+	bool (*lm_lock_expirable)(struct file_lock *);
+	void (*lm_expire_lock)();
+};
+
+enum fsnotify_data_type {
+	FSNOTIFY_EVENT_NONE = 0,
+	FSNOTIFY_EVENT_PATH = 1,
+	FSNOTIFY_EVENT_INODE = 2,
+	FSNOTIFY_EVENT_DENTRY = 3,
+	FSNOTIFY_EVENT_ERROR = 4,
+};
+
+typedef s32 compat_off_t;
+
+struct open_flags {
+	int open_flag;
+	umode_t mode;
+	int acc_mode;
+	int intent;
+	int lookup_flags;
+};
+
+typedef __kernel_rwf_t rwf_t;
+
+typedef s64 compat_loff_t;
+
+struct files_stat_struct {
+	unsigned long nr_files;
+	unsigned long nr_free_files;
+	unsigned long max_files;
+};
+
+struct backing_file {
+	struct file file;
+	struct path real_path;
+};
+
+struct fscrypt_policy_v1 {
+	__u8 version;
+	__u8 contents_encryption_mode;
+	__u8 filenames_encryption_mode;
+	__u8 flags;
+	__u8 master_key_descriptor[8];
+};
+
+struct fscrypt_policy_v2 {
+	__u8 version;
+	__u8 contents_encryption_mode;
+	__u8 filenames_encryption_mode;
+	__u8 flags;
+	__u8 log2_data_unit_size;
+	__u8 __reserved[3];
+	__u8 master_key_identifier[16];
+};
+
+union fscrypt_policy {
+	u8 version;
+	struct fscrypt_policy_v1 v1;
+	struct fscrypt_policy_v2 v2;
+};
+
+struct char_device_struct {
+	struct char_device_struct *next;
+	unsigned int major;
+	unsigned int baseminor;
+	int minorct;
+	char name[64];
+	struct cdev *cdev;
+};
+
+typedef struct kobject *kobj_probe_t(dev_t, int *, void *);
+
+struct mount;
+
+struct mnt_namespace {
+	struct ns_common ns;
+	struct mount *root;
+	struct list_head list;
+	spinlock_t ns_lock;
+	struct user_namespace *user_ns;
+	struct ucounts *ucounts;
+	u64 seq;
+	wait_queue_head_t poll;
+	u64 event;
+	unsigned int mounts;
+	unsigned int pending_mounts;
+};
+
+struct mnt_pcp;
+
+struct mountpoint;
+
+struct mount {
+	struct hlist_node mnt_hash;
+	struct mount *mnt_parent;
+	struct dentry *mnt_mountpoint;
+	struct vfsmount mnt;
+	union {
+		struct callback_head mnt_rcu;
+		struct llist_node mnt_llist;
+	};
+	struct mnt_pcp __attribute__((btf_type_tag("percpu"))) *mnt_pcp;
+	struct list_head mnt_mounts;
+	struct list_head mnt_child;
+	struct list_head mnt_instance;
+	const char *mnt_devname;
+	struct list_head mnt_list;
+	struct list_head mnt_expire;
+	struct list_head mnt_share;
+	struct list_head mnt_slave_list;
+	struct list_head mnt_slave;
+	struct mount *mnt_master;
+	struct mnt_namespace *mnt_ns;
+	struct mountpoint *mnt_mp;
+	union {
+		struct hlist_node mnt_mp_list;
+		struct hlist_node mnt_umount;
+	};
+	struct list_head mnt_umounting;
+	struct fsnotify_mark_connector __attribute__((btf_type_tag("rcu"))) *mnt_fsnotify_marks;
+	__u32 mnt_fsnotify_mask;
+	int mnt_id;
+	int mnt_group_id;
+	int mnt_expiry_mark;
+	struct hlist_head mnt_pins;
+	struct hlist_head mnt_stuck_children;
+};
+
+struct mnt_pcp {
+	int mnt_count;
+	int mnt_writers;
+};
+
+struct mountpoint {
+	struct hlist_node m_hash;
+	struct dentry *m_dentry;
+	struct hlist_head m_list;
+	int m_count;
+};
+
+struct stat {
+	unsigned long st_dev;
+	unsigned long st_ino;
+	unsigned int st_mode;
+	unsigned int st_nlink;
+	unsigned int st_uid;
+	unsigned int st_gid;
+	unsigned long st_rdev;
+	unsigned long __pad1;
+	long st_size;
+	int st_blksize;
+	int __pad2;
+	long st_blocks;
+	long st_atime;
+	unsigned long st_atime_nsec;
+	long st_mtime;
+	unsigned long st_mtime_nsec;
+	long st_ctime;
+	unsigned long st_ctime_nsec;
+	unsigned int __unused4;
+	unsigned int __unused5;
+};
+
+typedef s64 compat_s64;
+
+struct stat64 {
+	compat_u64 st_dev;
+	unsigned char __pad0[4];
+	compat_ulong_t __st_ino;
+	compat_uint_t st_mode;
+	compat_uint_t st_nlink;
+	compat_ulong_t st_uid;
+	compat_ulong_t st_gid;
+	compat_u64 st_rdev;
+	unsigned char __pad3[4];
+	compat_s64 st_size;
+	compat_ulong_t st_blksize;
+	compat_u64 st_blocks;
+	compat_ulong_t st_atime;
+	compat_ulong_t st_atime_nsec;
+	compat_ulong_t st_mtime;
+	compat_ulong_t st_mtime_nsec;
+	compat_ulong_t st_ctime;
+	compat_ulong_t st_ctime_nsec;
+	compat_u64 st_ino;
+};
+
+struct statx_timestamp {
+	__s64 tv_sec;
+	__u32 tv_nsec;
+	__s32 __reserved;
+};
+
+struct statx {
+	__u32 stx_mask;
+	__u32 stx_blksize;
+	__u64 stx_attributes;
+	__u32 stx_nlink;
+	__u32 stx_uid;
+	__u32 stx_gid;
+	__u16 stx_mode;
+	__u16 __spare0[1];
+	__u64 stx_ino;
+	__u64 stx_size;
+	__u64 stx_blocks;
+	__u64 stx_attributes_mask;
+	struct statx_timestamp stx_atime;
+	struct statx_timestamp stx_btime;
+	struct statx_timestamp stx_ctime;
+	struct statx_timestamp stx_mtime;
+	__u32 stx_rdev_major;
+	__u32 stx_rdev_minor;
+	__u32 stx_dev_major;
+	__u32 stx_dev_minor;
+	__u64 stx_mnt_id;
+	__u32 stx_dio_mem_align;
+	__u32 stx_dio_offset_align;
+	__u64 __spare3[12];
+};
+
+typedef u32 compat_dev_t;
+
+typedef u32 compat_ino_t;
+
+typedef u16 compat_mode_t;
+
+typedef u16 compat_ushort_t;
+
+typedef u16 __compat_uid16_t;
+
+typedef u16 __compat_gid16_t;
+
+struct compat_stat {
+	compat_dev_t st_dev;
+	compat_ino_t st_ino;
+	compat_mode_t st_mode;
+	compat_ushort_t st_nlink;
+	__compat_uid16_t st_uid;
+	__compat_gid16_t st_gid;
+	compat_dev_t st_rdev;
+	compat_off_t st_size;
+	compat_off_t st_blksize;
+	compat_off_t st_blocks;
+	old_time32_t st_atime;
+	compat_ulong_t st_atime_nsec;
+	old_time32_t st_mtime;
+	compat_ulong_t st_mtime_nsec;
+	old_time32_t st_ctime;
+	compat_ulong_t st_ctime_nsec;
+	compat_ulong_t __unused4[2];
+};
+
+typedef unsigned short ushort;
+
+struct user_arg_ptr {
+	bool is_compat;
+	union {
+		const char __attribute__((btf_type_tag("user"))) * const __attribute__((btf_type_tag("user"))) *native;
+		const compat_uptr_t __attribute__((btf_type_tag("user"))) *compat;
+	} ptr;
+};
+
+enum inode_i_mutex_lock_class {
+	I_MUTEX_NORMAL = 0,
+	I_MUTEX_PARENT = 1,
+	I_MUTEX_CHILD = 2,
+	I_MUTEX_XATTR = 3,
+	I_MUTEX_NONDIR2 = 4,
+	I_MUTEX_PARENT2 = 5,
+};
+
+struct saved {
+	struct path link;
+	struct delayed_call done;
+	const char *name;
+	unsigned int seq;
+};
+
+struct nameidata {
+	struct path path;
+	struct qstr last;
+	struct path root;
+	struct inode *inode;
+	unsigned int flags;
+	unsigned int state;
+	unsigned int seq;
+	unsigned int next_seq;
+	unsigned int m_seq;
+	unsigned int r_seq;
+	int last_type;
+	unsigned int depth;
+	int total_link_count;
+	struct saved *stack;
+	struct saved internal[2];
+	struct filename *name;
+	struct nameidata *saved;
+	unsigned int root_seq;
+	int dfd;
+	vfsuid_t dir_vfsuid;
+	umode_t dir_mode;
+};
+
+enum {
+	LAST_NORM = 0,
+	LAST_ROOT = 1,
+	LAST_DOT = 2,
+	LAST_DOTDOT = 3,
+};
+
+enum {
+	WALK_TRAILING = 1,
+	WALK_MORE = 2,
+	WALK_NOFOLLOW = 4,
+};
+
+struct word_at_a_time {
+	const unsigned long one_bits;
+	const unsigned long high_bits;
+};
+
+struct name_snapshot {
+	struct qstr name;
+	unsigned char inline_name[32];
+};
+
+struct renamedata {
+	struct mnt_idmap *old_mnt_idmap;
+	struct inode *old_dir;
+	struct dentry *old_dentry;
+	struct mnt_idmap *new_mnt_idmap;
+	struct inode *new_dir;
+	struct dentry *new_dentry;
+	struct inode **delegated_inode;
+	unsigned int flags;
+};
+
+struct f_owner_ex {
+	int type;
+	__kernel_pid_t pid;
+};
+
+struct flock {
+	short l_type;
+	short l_whence;
+	__kernel_off_t l_start;
+	__kernel_off_t l_len;
+	__kernel_pid_t l_pid;
+};
+
+struct compat_flock64 {
+	short l_type;
+	short l_whence;
+	compat_loff_t l_start;
+	compat_loff_t l_len;
+	compat_pid_t l_pid;
+};
+
+struct compat_flock {
+	short l_type;
+	short l_whence;
+	compat_off_t l_start;
+	compat_off_t l_len;
+	compat_pid_t l_pid;
+};
+
+struct fiemap_extent;
+
+struct fiemap_extent_info {
+	unsigned int fi_flags;
+	unsigned int fi_extents_mapped;
+	unsigned int fi_extents_max;
+	struct fiemap_extent __attribute__((btf_type_tag("user"))) *fi_extents_start;
+};
+
+struct fiemap_extent {
+	__u64 fe_logical;
+	__u64 fe_physical;
+	__u64 fe_length;
+	__u64 fe_reserved64[2];
+	__u32 fe_flags;
+	__u32 fe_reserved[3];
+};
+
+struct fsxattr {
+	__u32 fsx_xflags;
+	__u32 fsx_extsize;
+	__u32 fsx_nextents;
+	__u32 fsx_projid;
+	__u32 fsx_cowextsize;
+	unsigned char fsx_pad[8];
+};
+
+struct file_clone_range {
+	__s64 src_fd;
+	__u64 src_offset;
+	__u64 src_length;
+	__u64 dest_offset;
+};
+
+struct fiemap {
+	__u64 fm_start;
+	__u64 fm_length;
+	__u32 fm_flags;
+	__u32 fm_mapped_extents;
+	__u32 fm_extent_count;
+	__u32 fm_reserved;
+	struct fiemap_extent fm_extents[0];
+};
+
+struct file_dedupe_range_info {
+	__s64 dest_fd;
+	__u64 dest_offset;
+	__u64 bytes_deduped;
+	__s32 status;
+	__u32 reserved;
+};
+
+struct file_dedupe_range {
+	__u64 src_offset;
+	__u64 src_length;
+	__u16 dest_count;
+	__u16 reserved1;
+	__u32 reserved2;
+	struct file_dedupe_range_info info[0];
+};
+
+struct space_resv {
+	__s16 l_type;
+	__s16 l_whence;
+	__s64 l_start;
+	__s64 l_len;
+	__s32 l_sysid;
+	__u32 l_pid;
+	__s32 l_pad[4];
+};
+
+struct linux_dirent {
+	unsigned long d_ino;
+	unsigned long d_off;
+	unsigned short d_reclen;
+	char d_name[0];
+};
+
+struct getdents_callback {
+	struct dir_context ctx;
+	struct linux_dirent __attribute__((btf_type_tag("user"))) *current_dir;
+	int prev_reclen;
+	int count;
+	int error;
+};
+
+struct linux_dirent64 {
+	u64 d_ino;
+	s64 d_off;
+	unsigned short d_reclen;
+	unsigned char d_type;
+	char d_name[0];
+};
+
+struct getdents_callback64 {
+	struct dir_context ctx;
+	struct linux_dirent64 __attribute__((btf_type_tag("user"))) *current_dir;
+	int prev_reclen;
+	int count;
+	int error;
+};
+
+struct compat_old_linux_dirent {
+	compat_ulong_t d_ino;
+	compat_ulong_t d_offset;
+	unsigned short d_namlen;
+	char d_name[0];
+};
+
+struct compat_readdir_callback {
+	struct dir_context ctx;
+	struct compat_old_linux_dirent __attribute__((btf_type_tag("user"))) *dirent;
+	int result;
+};
+
+struct compat_linux_dirent {
+	compat_ulong_t d_ino;
+	compat_ulong_t d_off;
+	unsigned short d_reclen;
+	char d_name[0];
+};
+
+struct compat_getdents_callback {
+	struct dir_context ctx;
+	struct compat_linux_dirent __attribute__((btf_type_tag("user"))) *current_dir;
+	int prev_reclen;
+	int count;
+	int error;
+};
+
+enum poll_time_type {
+	PT_TIMEVAL = 0,
+	PT_OLD_TIMEVAL = 1,
+	PT_TIMESPEC = 2,
+	PT_OLD_TIMESPEC = 3,
+};
+
+struct poll_table_entry {
+	struct file *filp;
+	__poll_t key;
+	wait_queue_entry_t wait;
+	wait_queue_head_t *wait_address;
+};
+
+struct poll_table_page;
+
+struct poll_wqueues {
+	poll_table pt;
+	struct poll_table_page *table;
+	struct task_struct *polling_task;
+	int triggered;
+	int error;
+	int inline_index;
+	struct poll_table_entry inline_entries[9];
+};
+
+struct poll_table_page {
+	struct poll_table_page *next;
+	struct poll_table_entry *entry;
+	struct poll_table_entry entries[0];
+};
+
+typedef struct {
+	unsigned long fds_bits[16];
+} __kernel_fd_set;
+
+typedef __kernel_fd_set fd_set;
+
+struct poll_list {
+	struct poll_list *next;
+	int len;
+	struct pollfd entries[0];
+};
+
+struct compat_sel_arg_struct {
+	compat_ulong_t n;
+	compat_uptr_t inp;
+	compat_uptr_t outp;
+	compat_uptr_t exp;
+	compat_uptr_t tvp;
+};
+
+typedef struct {
+	unsigned long *in;
+	unsigned long *out;
+	unsigned long *ex;
+	unsigned long *res_in;
+	unsigned long *res_out;
+	unsigned long *res_ex;
+} fd_set_bits;
+
+struct sigset_argpack {
+	sigset_t __attribute__((btf_type_tag("user"))) *p;
+	size_t size;
+};
+
+struct compat_sigset_argpack {
+	compat_uptr_t p;
+	compat_size_t size;
+};
+
+struct dentry_stat_t {
+	long nr_dentry;
+	long nr_unused;
+	long age_limit;
+	long want_pages;
+	long nr_negative;
+	long dummy;
+};
+
+enum dentry_d_lock_class {
+	DENTRY_D_LOCK_NORMAL = 0,
+	DENTRY_D_LOCK_NESTED = 1,
+};
+
+enum d_walk_ret {
+	D_WALK_CONTINUE = 0,
+	D_WALK_QUIT = 1,
+	D_WALK_NORETRY = 2,
+	D_WALK_SKIP = 3,
+};
+
+struct external_name {
+	union {
+		atomic_t count;
+		struct callback_head head;
+	} u;
+	unsigned char name[0];
+};
+
+struct check_mount {
+	struct vfsmount *mnt;
+	unsigned int mounted;
+};
+
+struct select_data {
+	struct dentry *start;
+	union {
+		long found;
+		struct dentry *victim;
+	};
+	struct list_head dispose;
+};
+
+struct inodes_stat_t {
+	long nr_inodes;
+	long nr_unused;
+	long dummy[5];
+};
+
+enum file_time_flags {
+	S_ATIME = 1,
+	S_MTIME = 2,
+	S_CTIME = 4,
+	S_VERSION = 8,
+};
+
+enum umount_tree_flags {
+	UMOUNT_SYNC = 1,
+	UMOUNT_PROPAGATE = 2,
+	UMOUNT_CONNECTED = 4,
+};
+
+enum mnt_tree_flags_t {
+	MNT_TREE_MOVE = 1,
+	MNT_TREE_BENEATH = 2,
+};
+
+struct mount_attr {
+	__u64 attr_set;
+	__u64 attr_clr;
+	__u64 propagation;
+	__u64 userns_fd;
+};
+
+struct mount_kattr {
+	unsigned int attr_set;
+	unsigned int attr_clr;
+	unsigned int propagation;
+	unsigned int lookup_flags;
+	bool recurse;
+	struct user_namespace *mnt_userns;
+	struct mnt_idmap *mnt_idmap;
+};
+
+struct mnt_idmap {
+	struct user_namespace *owner;
+	refcount_t count;
+};
+
+struct proc_mounts {
+	struct mnt_namespace *ns;
+	struct path root;
+	int (*show)(struct seq_file *, struct vfsmount *);
+	struct mount cursor;
+};
+
+struct simple_xattr {
+	struct rb_node rb_node;
+	char *name;
+	size_t size;
+	char value[0];
+};
+
+struct xattr_name;
+
+struct xattr_ctx {
+	union {
+		const void __attribute__((btf_type_tag("user"))) *cvalue;
+		void __attribute__((btf_type_tag("user"))) *value;
+	};
+	void *kvalue;
+	size_t size;
+	struct xattr_name *kname;
+	unsigned int flags;
+};
+
+struct xattr_name {
+	char name[256];
+};
+
+struct utf8data;
+
+struct utf8data_table;
+
+struct unicode_map {
+	unsigned int version;
+	const struct utf8data *ntab[2];
+	const struct utf8data_table *tables;
+};
+
+struct utf8data {
+	unsigned int maxage;
+	unsigned int offset;
+};
+
+struct utf8data_table {
+	const unsigned int *utf8agetab;
+	int utf8agetab_size;
+	const struct utf8data *utf8nfdicfdata;
+	int utf8nfdicfdata_size;
+	const struct utf8data *utf8nfdidata;
+	int utf8nfdidata_size;
+	const unsigned char *utf8data;
+};
+
+struct simple_transaction_argresp {
+	ssize_t size;
+	char data[0];
+};
+
+struct simple_attr {
+	int (*get)(void *, u64 *);
+	int (*set)(void *, u64);
+	char get_buf[24];
+	char set_buf[24];
+	void *data;
+	const char *fmt;
+	struct mutex mutex;
+};
+
+typedef void (*btf_trace_writeback_dirty_folio)(void *, struct folio *, struct address_space *);
+
+typedef void (*btf_trace_folio_wait_writeback)(void *, struct folio *, struct address_space *);
+
+typedef void (*btf_trace_writeback_mark_inode_dirty)(void *, struct inode *, int);
+
+typedef void (*btf_trace_writeback_dirty_inode_start)(void *, struct inode *, int);
+
+typedef void (*btf_trace_writeback_dirty_inode)(void *, struct inode *, int);
+
+typedef void (*btf_trace_inode_foreign_history)(void *, struct inode *, struct writeback_control *, unsigned int);
+
+typedef void (*btf_trace_inode_switch_wbs)(void *, struct inode *, struct bdi_writeback *, struct bdi_writeback *);
+
+typedef void (*btf_trace_track_foreign_dirty)(void *, struct folio *, struct bdi_writeback *);
+
+typedef void (*btf_trace_flush_foreign)(void *, struct bdi_writeback *, unsigned int, unsigned int);
+
+typedef void (*btf_trace_writeback_write_inode_start)(void *, struct inode *, struct writeback_control *);
+
+typedef void (*btf_trace_writeback_write_inode)(void *, struct inode *, struct writeback_control *);
+
+struct wb_writeback_work;
+
+typedef void (*btf_trace_writeback_queue)(void *, struct bdi_writeback *, struct wb_writeback_work *);
+
+struct wb_writeback_work {
+	long nr_pages;
+	struct super_block *sb;
+	enum writeback_sync_modes sync_mode;
+	unsigned int tagged_writepages: 1;
+	unsigned int for_kupdate: 1;
+	unsigned int range_cyclic: 1;
+	unsigned int for_background: 1;
+	unsigned int for_sync: 1;
+	unsigned int auto_free: 1;
+	enum wb_reason reason;
+	struct list_head list;
+	struct wb_completion *done;
+};
+
+typedef void (*btf_trace_writeback_exec)(void *, struct bdi_writeback *, struct wb_writeback_work *);
+
+typedef void (*btf_trace_writeback_start)(void *, struct bdi_writeback *, struct wb_writeback_work *);
+
+typedef void (*btf_trace_writeback_written)(void *, struct bdi_writeback *, struct wb_writeback_work *);
+
+typedef void (*btf_trace_writeback_wait)(void *, struct bdi_writeback *, struct wb_writeback_work *);
+
+typedef void (*btf_trace_writeback_pages_written)(void *, long);
+
+typedef void (*btf_trace_writeback_wake_background)(void *, struct bdi_writeback *);
+
+typedef void (*btf_trace_writeback_bdi_register)(void *, struct backing_dev_info *);
+
+typedef void (*btf_trace_wbc_writepage)(void *, struct writeback_control *, struct backing_dev_info *);
+
+typedef void (*btf_trace_writeback_queue_io)(void *, struct bdi_writeback *, struct wb_writeback_work *, unsigned long, int);
+
+typedef void (*btf_trace_global_dirty_state)(void *, unsigned long, unsigned long);
+
+typedef void (*btf_trace_bdi_dirty_ratelimit)(void *, struct bdi_writeback *, unsigned long, unsigned long);
+
+typedef void (*btf_trace_balance_dirty_pages)(void *, struct bdi_writeback *, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, long, unsigned long);
+
+typedef void (*btf_trace_writeback_sb_inodes_requeue)(void *, struct inode *);
+
+typedef void (*btf_trace_writeback_single_inode_start)(void *, struct inode *, struct writeback_control *, unsigned long);
+
+typedef void (*btf_trace_writeback_single_inode)(void *, struct inode *, struct writeback_control *, unsigned long);
+
+typedef void (*btf_trace_writeback_lazytime)(void *, struct inode *);
+
+typedef void (*btf_trace_writeback_lazytime_iput)(void *, struct inode *);
+
+typedef void (*btf_trace_writeback_dirty_inode_enqueue)(void *, struct inode *);
+
+typedef void (*btf_trace_sb_mark_inode_writeback)(void *, struct inode *);
+
+typedef void (*btf_trace_sb_clear_inode_writeback)(void *, struct inode *);
+
+struct trace_event_raw_writeback_folio_template {
+	struct trace_entry ent;
+	char name[32];
+	ino_t ino;
+	unsigned long index;
+	char __data[0];
+};
+
+struct trace_event_raw_writeback_dirty_inode_template {
+	struct trace_entry ent;
+	char name[32];
+	ino_t ino;
+	unsigned long state;
+	unsigned long flags;
+	char __data[0];
+};
+
+struct trace_event_raw_inode_foreign_history {
+	struct trace_entry ent;
+	char name[32];
+	ino_t ino;
+	ino_t cgroup_ino;
+	unsigned int history;
+	char __data[0];
+};
+
+struct trace_event_raw_inode_switch_wbs {
+	struct trace_entry ent;
+	char name[32];
+	ino_t ino;
+	ino_t old_cgroup_ino;
+	ino_t new_cgroup_ino;
+	char __data[0];
+};
+
+struct trace_event_raw_track_foreign_dirty {
+	struct trace_entry ent;
+	char name[32];
+	u64 bdi_id;
+	ino_t ino;
+	unsigned int memcg_id;
+	ino_t cgroup_ino;
+	ino_t page_cgroup_ino;
+	char __data[0];
+};
+
+struct trace_event_raw_flush_foreign {
+	struct trace_entry ent;
+	char name[32];
+	ino_t cgroup_ino;
+	unsigned int frn_bdi_id;
+	unsigned int frn_memcg_id;
+	char __data[0];
+};
+
+struct trace_event_raw_writeback_write_inode_template {
+	struct trace_entry ent;
+	char name[32];
+	ino_t ino;
+	int sync_mode;
+	ino_t cgroup_ino;
+	char __data[0];
+};
+
+struct trace_event_raw_writeback_work_class {
+	struct trace_entry ent;
+	char name[32];
+	long nr_pages;
+	dev_t sb_dev;
+	int sync_mode;
+	int for_kupdate;
+	int range_cyclic;
+	int for_background;
+	int reason;
+	ino_t cgroup_ino;
+	char __data[0];
+};
+
+struct trace_event_raw_writeback_pages_written {
+	struct trace_entry ent;
+	long pages;
+	char __data[0];
+};
+
+struct trace_event_raw_writeback_class {
+	struct trace_entry ent;
+	char name[32];
+	ino_t cgroup_ino;
+	char __data[0];
+};
+
+struct trace_event_raw_writeback_bdi_register {
+	struct trace_entry ent;
+	char name[32];
+	char __data[0];
+};
+
+struct trace_event_raw_wbc_class {
+	struct trace_entry ent;
+	char name[32];
+	long nr_to_write;
+	long pages_skipped;
+	int sync_mode;
+	int for_kupdate;
+	int for_background;
+	int for_reclaim;
+	int range_cyclic;
+	long range_start;
+	long range_end;
+	ino_t cgroup_ino;
+	char __data[0];
+};
+
+struct trace_event_raw_writeback_queue_io {
+	struct trace_entry ent;
+	char name[32];
+	unsigned long older;
+	long age;
+	int moved;
+	int reason;
+	ino_t cgroup_ino;
+	char __data[0];
+};
+
+struct trace_event_raw_global_dirty_state {
+	struct trace_entry ent;
+	unsigned long nr_dirty;
+	unsigned long nr_writeback;
+	unsigned long background_thresh;
+	unsigned long dirty_thresh;
+	unsigned long dirty_limit;
+	unsigned long nr_dirtied;
+	unsigned long nr_written;
+	char __data[0];
+};
+
+struct trace_event_raw_bdi_dirty_ratelimit {
+	struct trace_entry ent;
+	char bdi[32];
+	unsigned long write_bw;
+	unsigned long avg_write_bw;
+	unsigned long dirty_rate;
+	unsigned long dirty_ratelimit;
+	unsigned long task_ratelimit;
+	unsigned long balanced_dirty_ratelimit;
+	ino_t cgroup_ino;
+	char __data[0];
+};
+
+struct trace_event_raw_balance_dirty_pages {
+	struct trace_entry ent;
+	char bdi[32];
+	unsigned long limit;
+	unsigned long setpoint;
+	unsigned long dirty;
+	unsigned long bdi_setpoint;
+	unsigned long bdi_dirty;
+	unsigned long dirty_ratelimit;
+	unsigned long task_ratelimit;
+	unsigned int dirtied;
+	unsigned int dirtied_pause;
+	unsigned long paused;
+	long pause;
+	unsigned long period;
+	long think;
+	ino_t cgroup_ino;
+	char __data[0];
+};
+
+struct trace_event_raw_writeback_sb_inodes_requeue {
+	struct trace_entry ent;
+	char name[32];
+	ino_t ino;
+	unsigned long state;
+	unsigned long dirtied_when;
+	ino_t cgroup_ino;
+	char __data[0];
+};
+
+struct trace_event_raw_writeback_single_inode_template {
+	struct trace_entry ent;
+	char name[32];
+	ino_t ino;
+	unsigned long state;
+	unsigned long dirtied_when;
+	unsigned long writeback_index;
+	long nr_to_write;
+	unsigned long wrote;
+	ino_t cgroup_ino;
+	char __data[0];
+};
+
+struct trace_event_raw_writeback_inode_template {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	unsigned long state;
+	__u16 mode;
+	unsigned long dirtied_when;
+	char __data[0];
+};
+
+struct inode_switch_wbs_context {
+	struct rcu_work work;
+	struct bdi_writeback *new_wb;
+	struct inode *inodes[0];
+};
+
+struct trace_event_data_offsets_writeback_folio_template {};
+
+struct trace_event_data_offsets_writeback_dirty_inode_template {};
+
+struct trace_event_data_offsets_inode_foreign_history {};
+
+struct trace_event_data_offsets_inode_switch_wbs {};
+
+struct trace_event_data_offsets_track_foreign_dirty {};
+
+struct trace_event_data_offsets_flush_foreign {};
+
+struct trace_event_data_offsets_writeback_write_inode_template {};
+
+struct trace_event_data_offsets_writeback_work_class {};
+
+struct trace_event_data_offsets_writeback_pages_written {};
+
+struct trace_event_data_offsets_writeback_class {};
+
+struct trace_event_data_offsets_writeback_bdi_register {};
+
+struct trace_event_data_offsets_wbc_class {};
+
+struct trace_event_data_offsets_writeback_queue_io {};
+
+struct trace_event_data_offsets_global_dirty_state {};
+
+struct trace_event_data_offsets_bdi_dirty_ratelimit {};
+
+struct trace_event_data_offsets_balance_dirty_pages {};
+
+struct trace_event_data_offsets_writeback_sb_inodes_requeue {};
+
+struct trace_event_data_offsets_writeback_single_inode_template {};
+
+struct trace_event_data_offsets_writeback_inode_template {};
+
+struct splice_desc {
+	size_t total_len;
+	unsigned int len;
+	unsigned int flags;
+	union {
+		void __attribute__((btf_type_tag("user"))) *userptr;
+		struct file *file;
+		void *data;
+	} u;
+	void (*splice_eof)(struct splice_desc *);
+	loff_t pos;
+	loff_t *opos;
+	size_t num_spliced;
+	bool need_wakeup;
+};
+
+typedef int splice_actor(struct pipe_inode_info *, struct pipe_buffer *, struct splice_desc *);
+
+typedef int splice_direct_actor(struct pipe_inode_info *, struct splice_desc *);
+
+struct old_utimbuf32 {
+	old_time32_t actime;
+	old_time32_t modtime;
+};
+
+struct prepend_buffer {
+	char *buf;
+	int len;
+};
+
+struct statfs {
+	__kernel_long_t f_type;
+	__kernel_long_t f_bsize;
+	__kernel_long_t f_blocks;
+	__kernel_long_t f_bfree;
+	__kernel_long_t f_bavail;
+	__kernel_long_t f_files;
+	__kernel_long_t f_ffree;
+	__kernel_fsid_t f_fsid;
+	__kernel_long_t f_namelen;
+	__kernel_long_t f_frsize;
+	__kernel_long_t f_flags;
+	__kernel_long_t f_spare[4];
+};
+
+struct statfs64 {
+	__kernel_long_t f_type;
+	__kernel_long_t f_bsize;
+	__u64 f_blocks;
+	__u64 f_bfree;
+	__u64 f_bavail;
+	__u64 f_files;
+	__u64 f_ffree;
+	__kernel_fsid_t f_fsid;
+	__kernel_long_t f_namelen;
+	__kernel_long_t f_frsize;
+	__kernel_long_t f_flags;
+	__kernel_long_t f_spare[4];
+};
+
+typedef int __kernel_daddr_t;
+
+struct ustat {
+	__kernel_daddr_t f_tfree;
+	unsigned long f_tinode;
+	char f_fname[6];
+	char f_fpack[6];
+};
+
+typedef __kernel_fsid_t compat_fsid_t;
+
+struct compat_statfs {
+	int f_type;
+	int f_bsize;
+	int f_blocks;
+	int f_bfree;
+	int f_bavail;
+	int f_files;
+	int f_ffree;
+	compat_fsid_t f_fsid;
+	int f_namelen;
+	int f_frsize;
+	int f_flags;
+	int f_spare[4];
+};
+
+typedef s32 compat_daddr_t;
+
+struct compat_ustat {
+	compat_daddr_t f_tfree;
+	compat_ino_t f_tinode;
+	char f_fname[6];
+	char f_fpack[6];
+};
+
+struct fs_pin {
+	wait_queue_head_t wait;
+	int done;
+	struct hlist_node s_list;
+	struct hlist_node m_list;
+	void (*kill)(struct fs_pin *);
+};
+
+struct ns_get_path_task_args {
+	const struct proc_ns_operations *ns_ops;
+	struct task_struct *task;
+};
+
+enum legacy_fs_param {
+	LEGACY_FS_UNSET_PARAMS = 0,
+	LEGACY_FS_MONOLITHIC_PARAMS = 1,
+	LEGACY_FS_INDIVIDUAL_PARAMS = 2,
+};
+
+struct legacy_fs_context {
+	char *legacy_data;
+	size_t data_size;
+	enum legacy_fs_param param_type;
+};
+
+enum fsconfig_command {
+	FSCONFIG_SET_FLAG = 0,
+	FSCONFIG_SET_STRING = 1,
+	FSCONFIG_SET_BINARY = 2,
+	FSCONFIG_SET_PATH = 3,
+	FSCONFIG_SET_PATH_EMPTY = 4,
+	FSCONFIG_SET_FD = 5,
+	FSCONFIG_CMD_CREATE = 6,
+	FSCONFIG_CMD_RECONFIGURE = 7,
+	FSCONFIG_CMD_CREATE_EXCL = 8,
+};
+
+struct iomap_ops {
+	int (*iomap_begin)(struct inode *, loff_t, loff_t, unsigned int, struct iomap *, struct iomap *);
+	int (*iomap_end)(struct inode *, loff_t, loff_t, ssize_t, unsigned int, struct iomap *);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct bh_lru {
+	struct buffer_head *bhs[16];
+};
+
+struct bh_accounting {
+	int nr;
+	int ratelimit;
+};
+
+struct postprocess_bh_ctx {
+	struct work_struct work;
+	struct buffer_head *bh;
+};
+
+struct dax_device;
+
+struct iomap_folio_ops;
+
+struct iomap {
+	u64 addr;
+	loff_t offset;
+	u64 length;
+	u16 type;
+	u16 flags;
+	struct block_device *bdev;
+	struct dax_device *dax_dev;
+	void *inline_data;
+	void *private;
+	const struct iomap_folio_ops *folio_ops;
+	u64 validity_cookie;
+	u64 android_kabi_reserved1;
+};
+
+struct iomap_iter;
+
+struct iomap_folio_ops {
+	struct folio * (*get_folio)(struct iomap_iter *, loff_t, unsigned int);
+	void (*put_folio)(struct inode *, loff_t, unsigned int, struct folio *);
+	bool (*iomap_valid)(struct inode *, const struct iomap *);
+};
+
+struct iomap_iter {
+	struct inode *inode;
+	loff_t pos;
+	u64 len;
+	s64 processed;
+	unsigned int flags;
+	struct iomap iomap;
+	struct iomap srcmap;
+	void *private;
+};
+
+typedef int get_block_t(struct inode *, sector_t, struct buffer_head *, int);
+
+struct folio_iter {
+	struct folio *folio;
+	size_t offset;
+	size_t length;
+	struct folio *_next;
+	size_t _seg_count;
+	int _i;
+};
+
+struct mpage_readpage_args {
+	struct bio *bio;
+	struct folio *folio;
+	unsigned int nr_pages;
+	bool is_readahead;
+	sector_t last_block_in_bio;
+	struct buffer_head map_bh;
+	unsigned long first_logical_block;
+	get_block_t *get_block;
+};
+
+struct mpage_data {
+	struct bio *bio;
+	sector_t last_block_in_bio;
+	get_block_t *get_block;
+};
+
+struct proc_fs_opts {
+	int flag;
+	const char *str;
+};
+
+union proc_op {
+	int (*proc_get_link)(struct dentry *, struct path *);
+	int (*proc_show)(struct seq_file *, struct pid_namespace *, struct pid *, struct task_struct *);
+	const char *lsm;
+};
+
+struct proc_inode {
+	struct pid *pid;
+	unsigned int fd;
+	union proc_op op;
+	struct proc_dir_entry *pde;
+	struct ctl_table_header *sysctl;
+	struct ctl_table *sysctl_entry;
+	struct hlist_node sibling_inodes;
+	const struct proc_ns_operations *ns_ops;
+	struct inode vfs_inode;
+};
+
+typedef int (*proc_write_t)(struct file *, char *, size_t);
+
+typedef u32 nlink_t;
+
+struct proc_dir_entry {
+	atomic_t in_use;
+	refcount_t refcnt;
+	struct list_head pde_openers;
+	spinlock_t pde_unload_lock;
+	struct completion *pde_unload_completion;
+	const struct inode_operations *proc_iops;
+	union {
+		const struct proc_ops *proc_ops;
+		const struct file_operations *proc_dir_ops;
+	};
+	const struct dentry_operations *proc_dops;
+	union {
+		const struct seq_operations *seq_ops;
+		int (*single_show)(struct seq_file *, void *);
+	};
+	proc_write_t write;
+	void *data;
+	unsigned int state_size;
+	unsigned int low_ino;
+	nlink_t nlink;
+	kuid_t uid;
+	kgid_t gid;
+	loff_t size;
+	struct proc_dir_entry *parent;
+	struct rb_root subdir;
+	struct rb_node subdir_node;
+	char *name;
+	umode_t mode;
+	u8 flags;
+	u8 namelen;
+	char inline_name[0];
+};
+
+enum {
+	DIO_LOCKING = 1,
+	DIO_SKIP_HOLES = 2,
+};
+
+typedef int dio_iodone_t(struct kiocb *, loff_t, ssize_t, void *);
+
+struct dio {
+	int flags;
+	blk_opf_t opf;
+	struct gendisk *bio_disk;
+	struct inode *inode;
+	loff_t i_size;
+	dio_iodone_t *end_io;
+	bool is_pinned;
+	void *private;
+	spinlock_t bio_lock;
+	int page_errors;
+	int is_async;
+	bool defer_completion;
+	bool should_dirty;
+	int io_error;
+	unsigned long refcount;
+	struct bio *bio_list;
+	struct task_struct *waiter;
+	struct kiocb *iocb;
+	ssize_t result;
+	union {
+		struct page *pages[64];
+		struct work_struct complete_work;
+	};
+	long: 64;
+};
+
+struct dio_submit {
+	struct bio *bio;
+	unsigned int blkbits;
+	unsigned int blkfactor;
+	unsigned int start_zero_done;
+	int pages_in_io;
+	sector_t block_in_file;
+	unsigned int blocks_available;
+	int reap_counter;
+	sector_t final_block_in_request;
+	int boundary;
+	get_block_t *get_block;
+	loff_t logical_offset_in_bio;
+	sector_t final_block_in_bio;
+	sector_t next_block_for_io;
+	struct page *cur_page;
+	unsigned int cur_page_offset;
+	unsigned int cur_page_len;
+	sector_t cur_page_block;
+	loff_t cur_page_fs_offset;
+	struct iov_iter *iter;
+	unsigned int head;
+	unsigned int tail;
+	size_t from;
+	size_t to;
+};
+
+typedef unsigned int iov_iter_extraction_t;
+
+enum fsnotify_iter_type {
+	FSNOTIFY_ITER_TYPE_INODE = 0,
+	FSNOTIFY_ITER_TYPE_VFSMOUNT = 1,
+	FSNOTIFY_ITER_TYPE_SB = 2,
+	FSNOTIFY_ITER_TYPE_PARENT = 3,
+	FSNOTIFY_ITER_TYPE_INODE2 = 4,
+	FSNOTIFY_ITER_TYPE_COUNT = 5,
+};
+
+struct fs_error_report {
+	int error;
+	struct inode *inode;
+	struct super_block *sb;
+};
+
+struct inotify_inode_mark {
+	struct fsnotify_mark fsn_mark;
+	int wd;
+};
+
+struct file_handle {
+	__u32 handle_bytes;
+	int handle_type;
+	unsigned char f_handle[0];
+};
+
+struct inotify_event_info {
+	struct fsnotify_event fse;
+	u32 mask;
+	int wd;
+	u32 sync_cookie;
+	int name_len;
+	char name[0];
+};
+
+struct inotify_event {
+	__s32 wd;
+	__u32 mask;
+	__u32 cookie;
+	__u32 len;
+	char name[0];
+};
+
+struct epitem;
+
+struct eventpoll {
+	struct mutex mtx;
+	wait_queue_head_t wq;
+	wait_queue_head_t poll_wait;
+	struct list_head rdllist;
+	rwlock_t lock;
+	struct rb_root_cached rbr;
+	struct epitem *ovflist;
+	struct wakeup_source *ws;
+	struct user_struct *user;
+	struct file *file;
+	u64 gen;
+	struct hlist_head refs;
+	refcount_t refcount;
+	unsigned int napi_id;
+};
+
+struct epoll_filefd {
+	struct file *file;
+	int fd;
+} __attribute__((packed));
+
+struct epoll_event {
+	__poll_t events;
+	__u64 data;
+};
+
+struct eppoll_entry;
+
+struct epitem {
+	union {
+		struct rb_node rbn;
+		struct callback_head rcu;
+	};
+	struct list_head rdllink;
+	struct epitem *next;
+	struct epoll_filefd ffd;
+	bool dying;
+	struct eppoll_entry *pwqlist;
+	struct eventpoll *ep;
+	struct hlist_node fllink;
+	struct wakeup_source __attribute__((btf_type_tag("rcu"))) *ws;
+	struct epoll_event event;
+};
+
+struct eppoll_entry {
+	struct eppoll_entry *next;
+	struct epitem *base;
+	wait_queue_entry_t wait;
+	wait_queue_head_t *whead;
+};
+
+struct epitems_head {
+	struct hlist_head epitems;
+	struct epitems_head *next;
+};
+
+struct ep_pqueue {
+	poll_table pt;
+	struct epitem *epi;
+};
+
+struct signalfd_siginfo {
+	__u32 ssi_signo;
+	__s32 ssi_errno;
+	__s32 ssi_code;
+	__u32 ssi_pid;
+	__u32 ssi_uid;
+	__s32 ssi_fd;
+	__u32 ssi_tid;
+	__u32 ssi_band;
+	__u32 ssi_overrun;
+	__u32 ssi_trapno;
+	__s32 ssi_status;
+	__s32 ssi_int;
+	__u64 ssi_ptr;
+	__u64 ssi_utime;
+	__u64 ssi_stime;
+	__u64 ssi_addr;
+	__u16 ssi_addr_lsb;
+	__u16 __pad2;
+	__s32 ssi_syscall;
+	__u64 ssi_call_addr;
+	__u32 ssi_arch;
+	__u8 __pad[28];
+};
+
+struct signalfd_ctx {
+	sigset_t sigmask;
+};
+
+struct timerfd_ctx {
+	union {
+		struct hrtimer tmr;
+		struct alarm alarm;
+	} t;
+	ktime_t tintv;
+	ktime_t moffs;
+	wait_queue_head_t wqh;
+	u64 ticks;
+	int clockid;
+	unsigned short expired;
+	unsigned short settime_flags;
+	struct callback_head rcu;
+	struct list_head clist;
+	spinlock_t cancel_lock;
+	bool might_cancel;
+};
+
+struct eventfd_ctx {
+	struct kref kref;
+	wait_queue_head_t wqh;
+	__u64 count;
+	unsigned int flags;
+	int id;
+};
+
+struct userfaultfd_fork_ctx {
+	struct userfaultfd_ctx *orig;
+	struct userfaultfd_ctx *new;
+	struct list_head list;
+};
+
+struct userfaultfd_unmap_ctx {
+	struct userfaultfd_ctx *ctx;
+	unsigned long start;
+	unsigned long end;
+	struct list_head list;
+};
+
+struct uffd_msg {
+	__u8 event;
+	__u8 reserved1;
+	__u16 reserved2;
+	__u32 reserved3;
+	union {
+		struct {
+			__u64 flags;
+			__u64 address;
+			union {
+				__u32 ptid;
+			} feat;
+		} pagefault;
+		struct {
+			__u32 ufd;
+		} fork;
+		struct {
+			__u64 from;
+			__u64 to;
+			__u64 len;
+		} remap;
+		struct {
+			__u64 start;
+			__u64 end;
+		} remove;
+		struct {
+			__u64 reserved1;
+			__u64 reserved2;
+			__u64 reserved3;
+		} reserved;
+	} arg;
+};
+
+struct userfaultfd_wait_queue {
+	struct uffd_msg msg;
+	wait_queue_entry_t wq;
+	struct userfaultfd_ctx *ctx;
+	bool waken;
+};
+
+struct uffdio_range {
+	__u64 start;
+	__u64 len;
+};
+
+struct uffdio_register {
+	struct uffdio_range range;
+	__u64 mode;
+	__u64 ioctls;
+};
+
+struct uffdio_copy {
+	__u64 dst;
+	__u64 src;
+	__u64 len;
+	__u64 mode;
+	__s64 copy;
+};
+
+struct uffdio_zeropage {
+	struct uffdio_range range;
+	__u64 mode;
+	__s64 zeropage;
+};
+
+struct uffdio_move {
+	__u64 dst;
+	__u64 src;
+	__u64 len;
+	__u64 mode;
+	__s64 move;
+};
+
+struct uffdio_writeprotect {
+	struct uffdio_range range;
+	__u64 mode;
+};
+
+struct uffdio_continue {
+	struct uffdio_range range;
+	__u64 mode;
+	__s64 mapped;
+};
+
+struct uffdio_poison {
+	struct uffdio_range range;
+	__u64 mode;
+	__s64 updated;
+};
+
+struct uffdio_api {
+	__u64 api;
+	__u64 features;
+	__u64 ioctls;
+};
+
+struct userfaultfd_wake_range {
+	unsigned long start;
+	unsigned long len;
+};
+
+struct kioctx_cpu;
+
+struct ctx_rq_wait;
+
+struct kioctx {
+	struct percpu_ref users;
+	atomic_t dead;
+	struct percpu_ref reqs;
+	unsigned long user_id;
+	struct kioctx_cpu *cpu;
+	unsigned int req_batch;
+	unsigned int max_reqs;
+	unsigned int nr_events;
+	unsigned long mmap_base;
+	unsigned long mmap_size;
+	struct page **ring_pages;
+	long nr_pages;
+	struct rcu_work free_rwork;
+	struct ctx_rq_wait *rq_wait;
+	long: 64;
+	struct {
+		atomic_t reqs_available;
+		long: 64;
+		long: 64;
+		long: 64;
+		long: 64;
+		long: 64;
+		long: 64;
+		long: 64;
+	};
+	struct {
+		spinlock_t ctx_lock;
+		struct list_head active_reqs;
+		long: 64;
+		long: 64;
+		long: 64;
+		long: 64;
+		long: 64;
+	};
+	struct {
+		struct mutex ring_lock;
+		wait_queue_head_t wait;
+		long: 64;
+		long: 64;
+		long: 64;
+		long: 64;
+		long: 64;
+		long: 64;
+		long: 64;
+	};
+	struct {
+		unsigned int tail;
+		unsigned int completed_events;
+		spinlock_t completion_lock;
+		long: 64;
+		long: 64;
+		long: 64;
+		long: 64;
+		long: 64;
+		long: 64;
+	};
+	struct page *internal_pages[8];
+	struct file *aio_ring_file;
+	unsigned int id;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct kioctx_cpu {
+	unsigned int reqs_available;
+};
+
+struct ctx_rq_wait {
+	struct completion comp;
+	atomic_t count;
+};
+
+enum {
+	IOCB_CMD_PREAD = 0,
+	IOCB_CMD_PWRITE = 1,
+	IOCB_CMD_FSYNC = 2,
+	IOCB_CMD_FDSYNC = 3,
+	IOCB_CMD_POLL = 5,
+	IOCB_CMD_NOOP = 6,
+	IOCB_CMD_PREADV = 7,
+	IOCB_CMD_PWRITEV = 8,
+};
+
+struct fsync_iocb {
+	struct file *file;
+	struct work_struct work;
+	bool datasync;
+	struct cred *creds;
+};
+
+struct poll_iocb {
+	struct file *file;
+	struct wait_queue_head *head;
+	__poll_t events;
+	bool cancelled;
+	bool work_scheduled;
+	bool work_need_resched;
+	struct wait_queue_entry wait;
+	struct work_struct work;
+};
+
+typedef int kiocb_cancel_fn(struct kiocb *);
+
+struct io_event {
+	__u64 data;
+	__u64 obj;
+	__s64 res;
+	__s64 res2;
+};
+
+struct aio_kiocb {
+	union {
+		struct file *ki_filp;
+		struct kiocb rw;
+		struct fsync_iocb fsync;
+		struct poll_iocb poll;
+	};
+	struct kioctx *ki_ctx;
+	kiocb_cancel_fn *ki_cancel;
+	struct io_event ki_res;
+	struct list_head ki_list;
+	refcount_t ki_refcnt;
+	struct eventfd_ctx *ki_eventfd;
+};
+
+typedef __kernel_ulong_t aio_context_t;
+
+struct iocb {
+	__u64 aio_data;
+	__u32 aio_key;
+	__kernel_rwf_t aio_rw_flags;
+	__u16 aio_lio_opcode;
+	__s16 aio_reqprio;
+	__u32 aio_fildes;
+	__u64 aio_buf;
+	__u64 aio_nbytes;
+	__s64 aio_offset;
+	__u64 aio_reserved2;
+	__u32 aio_flags;
+	__u32 aio_resfd;
+};
+
+struct aio_poll_table {
+	struct poll_table_struct pt;
+	struct aio_kiocb *iocb;
+	bool queued;
+	int error;
+};
+
+typedef u32 compat_aio_context_t;
+
+struct __aio_sigset {
+	const sigset_t __attribute__((btf_type_tag("user"))) *sigmask;
+	size_t sigsetsize;
+};
+
+struct __compat_aio_sigset {
+	compat_uptr_t sigmask;
+	compat_size_t sigsetsize;
+};
+
+struct aio_ring {
+	unsigned int id;
+	unsigned int nr;
+	unsigned int head;
+	unsigned int tail;
+	unsigned int magic;
+	unsigned int compat_features;
+	unsigned int incompat_features;
+	unsigned int header_length;
+	struct io_event io_events[0];
+};
+
+struct fscrypt_prepared_key {
+	struct crypto_skcipher *tfm;
+	struct blk_crypto_key *blk_key;
+};
+
+struct fscrypt_mode;
+
+struct fscrypt_master_key;
+
+struct fscrypt_direct_key;
+
+struct fscrypt_inode_info {
+	struct fscrypt_prepared_key ci_enc_key;
+	bool ci_owns_key;
+	bool ci_inlinecrypt;
+	u8 ci_data_unit_bits;
+	u8 ci_data_units_per_block_bits;
+	struct fscrypt_mode *ci_mode;
+	struct inode *ci_inode;
+	struct fscrypt_master_key *ci_master_key;
+	struct list_head ci_master_key_link;
+	struct fscrypt_direct_key *ci_direct_key;
+	siphash_key_t ci_dirhash_key;
+	bool ci_dirhash_key_initialized;
+	union fscrypt_policy ci_policy;
+	u8 ci_nonce[16];
+	u32 ci_hashed_ino;
+};
+
+struct fscrypt_mode {
+	const char *friendly_name;
+	const char *cipher_str;
+	int keysize;
+	int security_strength;
+	int ivsize;
+	int logged_cryptoapi_impl;
+	int logged_blk_crypto_native;
+	int logged_blk_crypto_fallback;
+	enum blk_crypto_mode_num blk_crypto_mode;
+};
+
+struct fscrypt_hkdf {
+	struct crypto_shash *hmac_tfm;
+};
+
+struct fscrypt_master_key_secret {
+	struct fscrypt_hkdf hkdf;
+	bool is_hw_wrapped;
+	u32 size;
+	u8 raw[128];
+};
+
+struct fscrypt_key_specifier {
+	__u32 type;
+	__u32 __reserved;
+	union {
+		__u8 __reserved[32];
+		__u8 descriptor[8];
+		__u8 identifier[16];
+	} u;
+};
+
+struct fscrypt_master_key {
+	struct hlist_node mk_node;
+	struct rw_semaphore mk_sem;
+	refcount_t mk_active_refs;
+	refcount_t mk_struct_refs;
+	struct callback_head mk_rcu_head;
+	struct fscrypt_master_key_secret mk_secret;
+	struct fscrypt_key_specifier mk_spec;
+	struct key *mk_users;
+	struct list_head mk_decrypted_inodes;
+	spinlock_t mk_decrypted_inodes_lock;
+	struct fscrypt_prepared_key mk_direct_keys[11];
+	struct fscrypt_prepared_key mk_iv_ino_lblk_64_keys[11];
+	struct fscrypt_prepared_key mk_iv_ino_lblk_32_keys[11];
+	siphash_key_t mk_ino_hash_key;
+	bool mk_ino_hash_key_initialized;
+	bool mk_present;
+};
+
+struct crypto_wait {
+	struct completion completion;
+	int err;
+};
+
+union fscrypt_iv {
+	struct {
+		__le64 index;
+		u8 nonce[16];
+	};
+	u8 raw[32];
+	__le64 dun[4];
+};
+
+typedef enum {
+	FS_DECRYPT = 0,
+	FS_ENCRYPT = 1,
+} fscrypt_direction_t;
+
+struct fscrypt_str {
+	unsigned char *name;
+	u32 len;
+};
+
+struct fscrypt_nokey_name {
+	u32 dirhash[2];
+	u8 bytes[149];
+	u8 sha256[32];
+};
+
+struct fscrypt_name {
+	const struct qstr *usr_fname;
+	struct fscrypt_str disk_name;
+	u32 hash;
+	u32 minor_hash;
+	struct fscrypt_str crypto_buf;
+	bool is_nokey_name;
+};
+
+struct fscrypt_symlink_data {
+	__le16 len;
+	char encrypted_path[0];
+};
+
+struct fscrypt_keyring {
+	spinlock_t lock;
+	struct hlist_head key_hashtable[128];
+};
+
+enum key_state {
+	KEY_IS_UNINSTANTIATED = 0,
+	KEY_IS_POSITIVE = 1,
+};
+
+struct fscrypt_add_key_arg {
+	struct fscrypt_key_specifier key_spec;
+	__u32 raw_size;
+	__u32 key_id;
+	__u32 __reserved[7];
+	__u32 __flags;
+	__u8 raw[0];
+};
+
+struct fscrypt_provisioning_key_payload {
+	__u32 type;
+	__u32 __reserved;
+	__u8 raw[0];
+};
+
+struct fscrypt_remove_key_arg {
+	struct fscrypt_key_specifier key_spec;
+	__u32 removal_status_flags;
+	__u32 __reserved[5];
+};
+
+struct fscrypt_get_key_status_arg {
+	struct fscrypt_key_specifier key_spec;
+	__u32 __reserved[6];
+	__u32 status;
+	__u32 status_flags;
+	__u32 user_count;
+	__u32 __out_reserved[13];
+};
+
+struct fscrypt_context_v1 {
+	u8 version;
+	u8 contents_encryption_mode;
+	u8 filenames_encryption_mode;
+	u8 flags;
+	u8 master_key_descriptor[8];
+	u8 nonce[16];
+};
+
+struct fscrypt_context_v2 {
+	u8 version;
+	u8 contents_encryption_mode;
+	u8 filenames_encryption_mode;
+	u8 flags;
+	u8 log2_data_unit_size;
+	u8 __reserved[3];
+	u8 master_key_identifier[16];
+	u8 nonce[16];
+};
+
+union fscrypt_context {
+	u8 version;
+	struct fscrypt_context_v1 v1;
+	struct fscrypt_context_v2 v2;
+};
+
+struct fscrypt_direct_key {
+	struct super_block *dk_sb;
+	struct hlist_node dk_node;
+	refcount_t dk_refcount;
+	const struct fscrypt_mode *dk_mode;
+	struct fscrypt_prepared_key dk_key;
+	u8 dk_descriptor[8];
+	u8 dk_raw[64];
+};
+
+struct fscrypt_key {
+	__u32 mode;
+	__u8 raw[64];
+	__u32 size;
+};
+
+struct user_key_payload {
+	struct callback_head rcu;
+	unsigned short datalen;
+	long: 0;
+	char data[0];
+};
+
+struct fscrypt_get_policy_ex_arg {
+	__u64 policy_size;
+	union {
+		__u8 version;
+		struct fscrypt_policy_v1 v1;
+		struct fscrypt_policy_v2 v2;
+	} policy;
+};
+
+struct fscrypt_dummy_policy {
+	const union fscrypt_policy *policy;
+};
+
+enum hash_algo {
+	HASH_ALGO_MD4 = 0,
+	HASH_ALGO_MD5 = 1,
+	HASH_ALGO_SHA1 = 2,
+	HASH_ALGO_RIPE_MD_160 = 3,
+	HASH_ALGO_SHA256 = 4,
+	HASH_ALGO_SHA384 = 5,
+	HASH_ALGO_SHA512 = 6,
+	HASH_ALGO_SHA224 = 7,
+	HASH_ALGO_RIPE_MD_128 = 8,
+	HASH_ALGO_RIPE_MD_256 = 9,
+	HASH_ALGO_RIPE_MD_320 = 10,
+	HASH_ALGO_WP_256 = 11,
+	HASH_ALGO_WP_384 = 12,
+	HASH_ALGO_WP_512 = 13,
+	HASH_ALGO_TGR_128 = 14,
+	HASH_ALGO_TGR_160 = 15,
+	HASH_ALGO_TGR_192 = 16,
+	HASH_ALGO_SM3_256 = 17,
+	HASH_ALGO_STREEBOG_256 = 18,
+	HASH_ALGO_STREEBOG_512 = 19,
+	HASH_ALGO__LAST = 20,
+};
+
+struct fsverity_hash_alg;
+
+struct merkle_tree_params {
+	const struct fsverity_hash_alg *hash_alg;
+	const u8 *hashstate;
+	unsigned int digest_size;
+	unsigned int block_size;
+	unsigned int hashes_per_block;
+	unsigned int blocks_per_page;
+	u8 log_digestsize;
+	u8 log_blocksize;
+	u8 log_arity;
+	u8 log_blocks_per_page;
+	unsigned int num_levels;
+	u64 tree_size;
+	unsigned long tree_pages;
+	unsigned long level_start[8];
+};
+
+struct fsverity_info {
+	struct merkle_tree_params tree_params;
+	u8 root_hash[64];
+	u8 file_digest[64];
+	const struct inode *inode;
+	unsigned long *hash_block_verified;
+};
+
+struct fsverity_hash_alg {
+	struct crypto_shash *tfm;
+	const char *name;
+	unsigned int digest_size;
+	unsigned int block_size;
+	enum hash_algo algo_id;
+	int mb_max_msgs;
+};
+
+struct block_buffer {
+	u32 filled;
+	bool is_root_hash;
+	u8 *data;
+};
+
+struct fsverity_descriptor {
+	__u8 version;
+	__u8 hash_algorithm;
+	__u8 log_blocksize;
+	__u8 salt_size;
+	__le32 sig_size;
+	__le64 data_size;
+	__u8 root_hash[64];
+	__u8 salt[32];
+	__u8 __reserved[144];
+	__u8 signature[0];
+};
+
+struct fsverity_enable_arg {
+	__u32 version;
+	__u32 hash_algorithm;
+	__u32 block_size;
+	__u32 salt_size;
+	__u64 salt_ptr;
+	__u32 sig_size;
+	__u32 __reserved1;
+	__u64 sig_ptr;
+	__u64 __reserved2[11];
+};
+
+struct fsverity_digest {
+	__u16 digest_algorithm;
+	__u16 digest_size;
+	__u8 digest[0];
+};
+
+struct fsverity_read_metadata_arg {
+	__u64 metadata_type;
+	__u64 offset;
+	__u64 length;
+	__u64 buf_ptr;
+	__u64 __reserved;
+};
+
+struct fsverity_pending_block {
+	const void *data;
+	u64 pos;
+	u8 real_hash[64];
+};
+
+struct fsverity_verification_context {
+	struct inode *inode;
+	struct fsverity_info *vi;
+	unsigned long max_ra_pages;
+	int num_pending;
+	struct fsverity_pending_block pending_blocks[2];
+};
+
+typedef void (*btf_trace_locks_get_lock_context)(void *, struct inode *, int, struct file_lock_context *);
+
+typedef void (*btf_trace_posix_lock_inode)(void *, struct inode *, struct file_lock *, int);
+
+typedef void (*btf_trace_fcntl_setlk)(void *, struct inode *, struct file_lock *, int);
+
+typedef void (*btf_trace_locks_remove_posix)(void *, struct inode *, struct file_lock *, int);
+
+typedef void (*btf_trace_flock_lock_inode)(void *, struct inode *, struct file_lock *, int);
+
+typedef void (*btf_trace_break_lease_noblock)(void *, struct inode *, struct file_lock *);
+
+typedef void (*btf_trace_break_lease_block)(void *, struct inode *, struct file_lock *);
+
+typedef void (*btf_trace_break_lease_unblock)(void *, struct inode *, struct file_lock *);
+
+typedef void (*btf_trace_generic_delete_lease)(void *, struct inode *, struct file_lock *);
+
+typedef void (*btf_trace_time_out_leases)(void *, struct inode *, struct file_lock *);
+
+typedef void (*btf_trace_generic_add_lease)(void *, struct inode *, struct file_lock *);
+
+typedef void (*btf_trace_leases_conflict)(void *, bool, struct file_lock *, struct file_lock *);
+
+struct file_lock_list_struct {
+	spinlock_t lock;
+	struct hlist_head hlist;
+};
+
+struct trace_event_raw_locks_get_lock_context {
+	struct trace_entry ent;
+	unsigned long i_ino;
+	dev_t s_dev;
+	unsigned char type;
+	struct file_lock_context *ctx;
+	char __data[0];
+};
+
+struct trace_event_raw_filelock_lock {
+	struct trace_entry ent;
+	struct file_lock *fl;
+	unsigned long i_ino;
+	dev_t s_dev;
+	struct file_lock *fl_blocker;
+	fl_owner_t fl_owner;
+	unsigned int fl_pid;
+	unsigned int fl_flags;
+	unsigned char fl_type;
+	loff_t fl_start;
+	loff_t fl_end;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_filelock_lease {
+	struct trace_entry ent;
+	struct file_lock *fl;
+	unsigned long i_ino;
+	dev_t s_dev;
+	struct file_lock *fl_blocker;
+	fl_owner_t fl_owner;
+	unsigned int fl_flags;
+	unsigned char fl_type;
+	unsigned long fl_break_time;
+	unsigned long fl_downgrade_time;
+	char __data[0];
+};
+
+struct trace_event_raw_generic_add_lease {
+	struct trace_entry ent;
+	unsigned long i_ino;
+	int wcount;
+	int rcount;
+	int icount;
+	dev_t s_dev;
+	fl_owner_t fl_owner;
+	unsigned int fl_flags;
+	unsigned char fl_type;
+	char __data[0];
+};
+
+struct trace_event_raw_leases_conflict {
+	struct trace_entry ent;
+	void *lease;
+	void *breaker;
+	unsigned int l_fl_flags;
+	unsigned int b_fl_flags;
+	unsigned char l_fl_type;
+	unsigned char b_fl_type;
+	bool conflict;
+	char __data[0];
+};
+
+struct flock64 {
+	short l_type;
+	short l_whence;
+	__kernel_loff_t l_start;
+	__kernel_loff_t l_len;
+	__kernel_pid_t l_pid;
+};
+
+struct trace_event_data_offsets_locks_get_lock_context {};
+
+struct trace_event_data_offsets_filelock_lock {};
+
+struct trace_event_data_offsets_filelock_lease {};
+
+struct trace_event_data_offsets_generic_add_lease {};
+
+struct trace_event_data_offsets_leases_conflict {};
+
+struct locks_iterator {
+	int li_cpu;
+	loff_t li_pos;
+};
+
+enum {
+	Enabled = 0,
+	Magic = 1,
+};
+
+typedef struct {
+	struct list_head list;
+	unsigned long flags;
+	int offset;
+	int size;
+	char *magic;
+	char *mask;
+	const char *interpreter;
+	char *name;
+	struct dentry *dentry;
+	struct file *interp_file;
+} Node;
+
+struct gnu_property {
+	u32 pr_type;
+	u32 pr_datasz;
+};
+
+struct elf64_note {
+	Elf64_Word n_namesz;
+	Elf64_Word n_descsz;
+	Elf64_Word n_type;
+};
+
+struct memelfnote {
+	const char *name;
+	int type;
+	unsigned int datasz;
+	void *data;
+};
+
+struct elf_thread_core_info;
+
+struct elf_note_info {
+	struct elf_thread_core_info *thread;
+	struct memelfnote psinfo;
+	struct memelfnote signote;
+	struct memelfnote auxv;
+	struct memelfnote files;
+	siginfo_t csigdata;
+	size_t size;
+	int thread_notes;
+};
+
+struct elf_siginfo {
+	int si_signo;
+	int si_code;
+	int si_errno;
+};
+
+struct elf_prstatus_common {
+	struct elf_siginfo pr_info;
+	short pr_cursig;
+	unsigned long pr_sigpend;
+	unsigned long pr_sighold;
+	pid_t pr_pid;
+	pid_t pr_ppid;
+	pid_t pr_pgrp;
+	pid_t pr_sid;
+	struct __kernel_old_timeval pr_utime;
+	struct __kernel_old_timeval pr_stime;
+	struct __kernel_old_timeval pr_cutime;
+	struct __kernel_old_timeval pr_cstime;
+};
+
+typedef unsigned long elf_greg_t;
+
+typedef elf_greg_t elf_gregset_t[34];
+
+struct elf_prstatus {
+	struct elf_prstatus_common common;
+	elf_gregset_t pr_reg;
+	int pr_fpvalid;
+};
+
+struct elf_thread_core_info {
+	struct elf_thread_core_info *next;
+	struct task_struct *task;
+	struct elf_prstatus prstatus;
+	struct memelfnote notes[0];
+};
+
+typedef unsigned int __kernel_uid_t;
+
+typedef unsigned int __kernel_gid_t;
+
+struct elf_prpsinfo {
+	char pr_state;
+	char pr_sname;
+	char pr_zomb;
+	char pr_nice;
+	unsigned long pr_flag;
+	__kernel_uid_t pr_uid;
+	__kernel_gid_t pr_gid;
+	pid_t pr_pid;
+	pid_t pr_ppid;
+	pid_t pr_pgrp;
+	pid_t pr_sid;
+	char pr_fname[16];
+	char pr_psargs[80];
+};
+
+struct elf32_phdr {
+	Elf32_Word p_type;
+	Elf32_Off p_offset;
+	Elf32_Addr p_vaddr;
+	Elf32_Addr p_paddr;
+	Elf32_Word p_filesz;
+	Elf32_Word p_memsz;
+	Elf32_Word p_flags;
+	Elf32_Word p_align;
+};
+
+struct elf_thread_core_info___2;
+
+struct elf_note_info___2 {
+	struct elf_thread_core_info___2 *thread;
+	struct memelfnote psinfo;
+	struct memelfnote signote;
+	struct memelfnote auxv;
+	struct memelfnote files;
+	compat_siginfo_t csigdata;
+	size_t size;
+	int thread_notes;
+};
+
+struct compat_elf_siginfo {
+	compat_int_t si_signo;
+	compat_int_t si_code;
+	compat_int_t si_errno;
+};
+
+struct compat_elf_prstatus_common {
+	struct compat_elf_siginfo pr_info;
+	short pr_cursig;
+	compat_ulong_t pr_sigpend;
+	compat_ulong_t pr_sighold;
+	compat_pid_t pr_pid;
+	compat_pid_t pr_ppid;
+	compat_pid_t pr_pgrp;
+	compat_pid_t pr_sid;
+	struct old_timeval32 pr_utime;
+	struct old_timeval32 pr_stime;
+	struct old_timeval32 pr_cutime;
+	struct old_timeval32 pr_cstime;
+};
+
+typedef unsigned int compat_elf_greg_t;
+
+typedef compat_elf_greg_t compat_elf_gregset_t[18];
+
+struct compat_elf_prstatus {
+	struct compat_elf_prstatus_common common;
+	compat_elf_gregset_t pr_reg;
+	compat_int_t pr_fpvalid;
+};
+
+struct elf_thread_core_info___2 {
+	struct elf_thread_core_info___2 *next;
+	struct task_struct *task;
+	struct compat_elf_prstatus prstatus;
+	struct memelfnote notes[0];
+};
+
+typedef u16 __compat_uid_t;
+
+typedef u16 __compat_gid_t;
+
+struct compat_elf_prpsinfo {
+	char pr_state;
+	char pr_sname;
+	char pr_zomb;
+	char pr_nice;
+	compat_ulong_t pr_flag;
+	__compat_uid_t pr_uid;
+	__compat_gid_t pr_gid;
+	compat_pid_t pr_pid;
+	compat_pid_t pr_ppid;
+	compat_pid_t pr_pgrp;
+	compat_pid_t pr_sid;
+	char pr_fname[16];
+	char pr_psargs[80];
+};
+
+struct elf32_shdr {
+	Elf32_Word sh_name;
+	Elf32_Word sh_type;
+	Elf32_Word sh_flags;
+	Elf32_Addr sh_addr;
+	Elf32_Off sh_offset;
+	Elf32_Word sh_size;
+	Elf32_Word sh_link;
+	Elf32_Word sh_info;
+	Elf32_Word sh_addralign;
+	Elf32_Word sh_entsize;
+};
+
+enum {
+	MBE_REFERENCED_B = 0,
+	MBE_REUSABLE_B = 1,
+};
+
+struct mb_cache_entry {
+	struct list_head e_list;
+	struct hlist_bl_node e_hash_list;
+	atomic_t e_refcnt;
+	u32 e_key;
+	unsigned long e_flags;
+	u64 e_value;
+};
+
+struct mb_cache {
+	struct hlist_bl_head *c_hash;
+	int c_bucket_bits;
+	unsigned long c_max_entries;
+	spinlock_t c_list_lock;
+	struct list_head c_list;
+	unsigned long c_entry_count;
+	struct shrinker c_shrink;
+	struct work_struct c_shrink_work;
+};
+
+struct posix_acl_xattr_header {
+	__le32 a_version;
+};
+
+struct posix_acl_xattr_entry {
+	__le16 e_tag;
+	__le16 e_perm;
+	__le32 e_id;
+};
+
+struct core_name {
+	char *corename;
+	int used;
+	int size;
+};
+
+typedef void (*btf_trace_iomap_readpage)(void *, struct inode *, int);
+
+typedef void (*btf_trace_iomap_readahead)(void *, struct inode *, int);
+
+typedef void (*btf_trace_iomap_writepage)(void *, struct inode *, loff_t, u64);
+
+typedef void (*btf_trace_iomap_release_folio)(void *, struct inode *, loff_t, u64);
+
+typedef void (*btf_trace_iomap_invalidate_folio)(void *, struct inode *, loff_t, u64);
+
+typedef void (*btf_trace_iomap_dio_invalidate_fail)(void *, struct inode *, loff_t, u64);
+
+typedef void (*btf_trace_iomap_dio_rw_queued)(void *, struct inode *, loff_t, u64);
+
+typedef void (*btf_trace_iomap_iter_dstmap)(void *, struct inode *, struct iomap *);
+
+typedef void (*btf_trace_iomap_iter_srcmap)(void *, struct inode *, struct iomap *);
+
+typedef void (*btf_trace_iomap_writepage_map)(void *, struct inode *, struct iomap *);
+
+typedef void (*btf_trace_iomap_iter)(void *, struct iomap_iter *, const void *, unsigned long);
+
+typedef void (*btf_trace_iomap_dio_rw_begin)(void *, struct kiocb *, struct iov_iter *, unsigned int, size_t);
+
+typedef void (*btf_trace_iomap_dio_complete)(void *, struct kiocb *, int, ssize_t);
+
+struct trace_event_raw_iomap_readpage_class {
+	struct trace_entry ent;
+	dev_t dev;
+	u64 ino;
+	int nr_pages;
+	char __data[0];
+};
+
+struct trace_event_raw_iomap_range_class {
+	struct trace_entry ent;
+	dev_t dev;
+	u64 ino;
+	loff_t size;
+	loff_t offset;
+	u64 length;
+	char __data[0];
+};
+
+struct trace_event_raw_iomap_class {
+	struct trace_entry ent;
+	dev_t dev;
+	u64 ino;
+	u64 addr;
+	loff_t offset;
+	u64 length;
+	u16 type;
+	u16 flags;
+	dev_t bdev;
+	char __data[0];
+};
+
+struct trace_event_raw_iomap_iter {
+	struct trace_entry ent;
+	dev_t dev;
+	u64 ino;
+	loff_t pos;
+	u64 length;
+	unsigned int flags;
+	const void *ops;
+	unsigned long caller;
+	char __data[0];
+};
+
+struct trace_event_raw_iomap_dio_rw_begin {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	loff_t isize;
+	loff_t pos;
+	size_t count;
+	size_t done_before;
+	int ki_flags;
+	unsigned int dio_flags;
+	bool aio;
+	char __data[0];
+};
+
+struct trace_event_raw_iomap_dio_complete {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	loff_t isize;
+	loff_t pos;
+	int ki_flags;
+	bool aio;
+	int error;
+	ssize_t ret;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_iomap_readpage_class {};
+
+struct trace_event_data_offsets_iomap_range_class {};
+
+struct trace_event_data_offsets_iomap_class {};
+
+struct trace_event_data_offsets_iomap_iter {};
+
+struct trace_event_data_offsets_iomap_dio_rw_begin {};
+
+struct trace_event_data_offsets_iomap_dio_complete {};
+
+enum {
+	BIOSET_NEED_BVECS = 1,
+	BIOSET_NEED_RESCUER = 2,
+	BIOSET_PERCPU_CACHE = 4,
+};
+
+struct iomap_ioend {
+	struct list_head io_list;
+	u16 io_type;
+	u16 io_flags;
+	u32 io_folios;
+	struct inode *io_inode;
+	size_t io_size;
+	loff_t io_offset;
+	sector_t io_sector;
+	struct bio *io_bio;
+	struct bio io_inline_bio;
+};
+
+struct iomap_readpage_ctx {
+	struct folio *cur_folio;
+	bool cur_folio_in_bio;
+	struct bio *bio;
+	struct readahead_control *rac;
+};
+
+struct iomap_folio_state {
+	atomic_t read_bytes_pending;
+	atomic_t write_bytes_pending;
+	spinlock_t state_lock;
+	unsigned long state[0];
+};
+
+typedef int (*iomap_punch_t)(struct inode *, loff_t, loff_t);
+
+struct iomap_writeback_ops;
+
+struct iomap_writepage_ctx {
+	struct iomap iomap;
+	struct iomap_ioend *ioend;
+	const struct iomap_writeback_ops *ops;
+};
+
+struct iomap_writeback_ops {
+	int (*map_blocks)(struct iomap_writepage_ctx *, struct inode *, loff_t);
+	int (*prepare_ioend)(struct iomap_ioend *, int);
+	void (*discard_folio)(struct folio *, loff_t);
+};
+
+struct iomap_dio_ops;
+
+struct iomap_dio {
+	struct kiocb *iocb;
+	const struct iomap_dio_ops *dops;
+	loff_t i_size;
+	loff_t size;
+	atomic_t ref;
+	unsigned int flags;
+	int error;
+	size_t done_before;
+	bool wait_for_completion;
+	union {
+		struct {
+			struct iov_iter *iter;
+			struct task_struct *waiter;
+		} submit;
+		struct {
+			struct work_struct work;
+		} aio;
+	};
+};
+
+struct iomap_dio_ops {
+	int (*end_io)(struct kiocb *, ssize_t, int, unsigned int);
+	void (*submit_io)(const struct iomap_iter *, struct bio *, loff_t);
+	struct bio_set *bio_set;
+};
+
+struct iomap_swapfile_info {
+	struct iomap iomap;
+	struct swap_info_struct *sis;
+	uint64_t lowest_ppage;
+	uint64_t highest_ppage;
+	unsigned long nr_pages;
+	int nr_extents;
+	struct file *file;
+};
+
+struct dqstats {
+	unsigned long stat[8];
+	struct percpu_counter counter[8];
+};
+
+struct quota_module_name {
+	int qm_fmt_id;
+	char *qm_mod_name;
+};
+
+enum {
+	DQF_INFO_DIRTY_B = 17,
+};
+
+enum {
+	DQST_LOOKUPS = 0,
+	DQST_DROPS = 1,
+	DQST_READS = 2,
+	DQST_WRITES = 3,
+	DQST_CACHE_HITS = 4,
+	DQST_ALLOC_DQUOTS = 5,
+	DQST_FREE_DQUOTS = 6,
+	DQST_SYNCS = 7,
+	_DQST_DQSTAT_LAST = 8,
+};
+
+enum {
+	DQF_ROOT_SQUASH_B = 0,
+	DQF_SYS_FILE_B = 16,
+	DQF_PRIVATE = 17,
+};
+
+enum {
+	QIF_BLIMITS_B = 0,
+	QIF_SPACE_B = 1,
+	QIF_ILIMITS_B = 2,
+	QIF_INODES_B = 3,
+	QIF_BTIME_B = 4,
+	QIF_ITIME_B = 5,
+};
+
+typedef __kernel_uid32_t qid_t;
+
+struct dquot_warn {
+	struct super_block *w_sb;
+	struct kqid w_dq_id;
+	short w_type;
+};
+
+struct qtree_fmt_operations {
+	void (*mem2disk_dqblk)(void *, struct dquot *);
+	void (*disk2mem_dqblk)(struct dquot *, void *);
+	int (*is_id)(void *, struct dquot *);
+};
+
+struct v2_disk_dqheader {
+	__le32 dqh_magic;
+	__le32 dqh_version;
+};
+
+struct qtree_mem_dqinfo {
+	struct super_block *dqi_sb;
+	int dqi_type;
+	unsigned int dqi_blocks;
+	unsigned int dqi_free_blk;
+	unsigned int dqi_free_entry;
+	unsigned int dqi_blocksize_bits;
+	unsigned int dqi_entry_size;
+	unsigned int dqi_usable_bs;
+	unsigned int dqi_qtree_depth;
+	const struct qtree_fmt_operations *dqi_ops;
+};
+
+struct v2_disk_dqinfo {
+	__le32 dqi_bgrace;
+	__le32 dqi_igrace;
+	__le32 dqi_flags;
+	__le32 dqi_blocks;
+	__le32 dqi_free_blk;
+	__le32 dqi_free_entry;
+};
+
+struct v2r0_disk_dqblk {
+	__le32 dqb_id;
+	__le32 dqb_ihardlimit;
+	__le32 dqb_isoftlimit;
+	__le32 dqb_curinodes;
+	__le32 dqb_bhardlimit;
+	__le32 dqb_bsoftlimit;
+	__le64 dqb_curspace;
+	__le64 dqb_btime;
+	__le64 dqb_itime;
+};
+
+struct v2r1_disk_dqblk {
+	__le32 dqb_id;
+	__le32 dqb_pad;
+	__le64 dqb_ihardlimit;
+	__le64 dqb_isoftlimit;
+	__le64 dqb_curinodes;
+	__le64 dqb_bhardlimit;
+	__le64 dqb_bsoftlimit;
+	__le64 dqb_curspace;
+	__le64 dqb_btime;
+	__le64 dqb_itime;
+};
+
+struct qt_disk_dqdbheader {
+	__le32 dqdh_next_free;
+	__le32 dqdh_prev_free;
+	__le16 dqdh_entries;
+	__le16 dqdh_pad1;
+	__le32 dqdh_pad2;
+};
+
+struct if_dqblk {
+	__u64 dqb_bhardlimit;
+	__u64 dqb_bsoftlimit;
+	__u64 dqb_curspace;
+	__u64 dqb_ihardlimit;
+	__u64 dqb_isoftlimit;
+	__u64 dqb_curinodes;
+	__u64 dqb_btime;
+	__u64 dqb_itime;
+	__u32 dqb_valid;
+};
+
+struct fs_qfilestat {
+	__u64 qfs_ino;
+	__u64 qfs_nblks;
+	__u32 qfs_nextents;
+};
+
+typedef struct fs_qfilestat fs_qfilestat_t;
+
+struct fs_quota_stat {
+	__s8 qs_version;
+	__u16 qs_flags;
+	__s8 qs_pad;
+	fs_qfilestat_t qs_uquota;
+	fs_qfilestat_t qs_gquota;
+	__u32 qs_incoredqs;
+	__s32 qs_btimelimit;
+	__s32 qs_itimelimit;
+	__s32 qs_rtbtimelimit;
+	__u16 qs_bwarnlimit;
+	__u16 qs_iwarnlimit;
+};
+
+struct fs_qfilestatv {
+	__u64 qfs_ino;
+	__u64 qfs_nblks;
+	__u32 qfs_nextents;
+	__u32 qfs_pad;
+};
+
+struct fs_quota_statv {
+	__s8 qs_version;
+	__u8 qs_pad1;
+	__u16 qs_flags;
+	__u32 qs_incoredqs;
+	struct fs_qfilestatv qs_uquota;
+	struct fs_qfilestatv qs_gquota;
+	struct fs_qfilestatv qs_pquota;
+	__s32 qs_btimelimit;
+	__s32 qs_itimelimit;
+	__s32 qs_rtbtimelimit;
+	__u16 qs_bwarnlimit;
+	__u16 qs_iwarnlimit;
+	__u16 qs_rtbwarnlimit;
+	__u16 qs_pad3;
+	__u32 qs_pad4;
+	__u64 qs_pad2[7];
+};
+
+struct fs_disk_quota {
+	__s8 d_version;
+	__s8 d_flags;
+	__u16 d_fieldmask;
+	__u32 d_id;
+	__u64 d_blk_hardlimit;
+	__u64 d_blk_softlimit;
+	__u64 d_ino_hardlimit;
+	__u64 d_ino_softlimit;
+	__u64 d_bcount;
+	__u64 d_icount;
+	__s32 d_itimer;
+	__s32 d_btimer;
+	__u16 d_iwarns;
+	__u16 d_bwarns;
+	__s8 d_itimer_hi;
+	__s8 d_btimer_hi;
+	__s8 d_rtbtimer_hi;
+	__s8 d_padding2;
+	__u64 d_rtb_hardlimit;
+	__u64 d_rtb_softlimit;
+	__u64 d_rtbcount;
+	__s32 d_rtbtimer;
+	__u16 d_rtbwarns;
+	__s16 d_padding3;
+	char d_padding4[8];
+};
+
+struct if_dqinfo {
+	__u64 dqi_bgrace;
+	__u64 dqi_igrace;
+	__u32 dqi_flags;
+	__u32 dqi_valid;
+};
+
+struct if_nextdqblk {
+	__u64 dqb_bhardlimit;
+	__u64 dqb_bsoftlimit;
+	__u64 dqb_curspace;
+	__u64 dqb_ihardlimit;
+	__u64 dqb_isoftlimit;
+	__u64 dqb_curinodes;
+	__u64 dqb_btime;
+	__u64 dqb_itime;
+	__u32 dqb_valid;
+	__u32 dqb_id;
+};
+
+enum clear_refs_types {
+	CLEAR_REFS_ALL = 1,
+	CLEAR_REFS_ANON = 2,
+	CLEAR_REFS_MAPPED = 3,
+	CLEAR_REFS_SOFT_DIRTY = 4,
+	CLEAR_REFS_MM_HIWATER_RSS = 5,
+	CLEAR_REFS_LAST = 6,
+};
+
+struct proc_maps_private {
+	struct inode *inode;
+	struct task_struct *task;
+	struct mm_struct *mm;
+	struct vma_iterator iter;
+};
+
+struct mem_size_stats {
+	unsigned long resident;
+	unsigned long shared_clean;
+	unsigned long shared_dirty;
+	unsigned long private_clean;
+	unsigned long private_dirty;
+	unsigned long referenced;
+	unsigned long anonymous;
+	unsigned long lazyfree;
+	unsigned long anonymous_thp;
+	unsigned long shmem_thp;
+	unsigned long file_thp;
+	unsigned long swap;
+	unsigned long swap_shared;
+	unsigned long writeback;
+	unsigned long same;
+	unsigned long huge;
+	unsigned long shared_hugetlb;
+	unsigned long private_hugetlb;
+	unsigned long ksm;
+	u64 pss;
+	u64 pss_anon;
+	u64 pss_file;
+	u64 pss_shmem;
+	u64 pss_dirty;
+	u64 pss_locked;
+	u64 swap_pss;
+};
+
+typedef struct {
+	u64 pme;
+} pagemap_entry_t;
+
+struct pagemapread {
+	int pos;
+	int len;
+	pagemap_entry_t *buffer;
+	bool show_pfn;
+};
+
+struct clear_refs_private {
+	enum clear_refs_types type;
+};
+
+enum {
+	BIAS = 2147483648,
+};
+
+enum {
+	PROC_ENTRY_PERMANENT = 1,
+};
+
+struct pde_opener {
+	struct list_head lh;
+	struct file *file;
+	bool closing;
+	struct completion *c;
+};
+
+enum proc_param {
+	Opt_gid___2 = 0,
+	Opt_hidepid = 1,
+	Opt_subset = 2,
+};
+
+struct proc_fs_context {
+	struct pid_namespace *pid_ns;
+	unsigned int mask;
+	enum proc_hidepid hidepid;
+	int gid;
+	enum proc_pidonly pidonly;
+};
+
+struct pid_entry {
+	const char *name;
+	unsigned int len;
+	umode_t mode;
+	const struct inode_operations *iop;
+	const struct file_operations *fop;
+	union proc_op op;
+};
+
+struct limit_names {
+	const char *name;
+	const char *unit;
+};
+
+struct map_files_info {
+	unsigned long start;
+	unsigned long end;
+	fmode_t mode;
+};
+
+struct syscall_info {
+	__u64 sp;
+	struct seccomp_data data;
+};
+
+struct genradix_root;
+
+struct __genradix {
+	struct genradix_root *root;
+};
+
+struct tgid_iter {
+	unsigned int tgid;
+	struct task_struct *task;
+};
+
+typedef struct dentry *instantiate_t(struct dentry *, struct task_struct *, const void *);
+
+struct fd_data {
+	fmode_t mode;
+	unsigned int fd;
+};
+
+struct sysctl_alias {
+	const char *kernel_param;
+	const char *sysctl_param;
+};
+
+struct seq_net_private {
+	struct net *net;
+	netns_tracker ns_tracker;
+};
+
+struct kernfs_root {
+	struct kernfs_node *kn;
+	unsigned int flags;
+	struct idr ino_idr;
+	u32 last_id_lowbits;
+	u32 id_highbits;
+	struct kernfs_syscall_ops *syscall_ops;
+	struct list_head supers;
+	wait_queue_head_t deactivate_waitq;
+	struct rw_semaphore kernfs_rwsem;
+	struct rw_semaphore kernfs_iattr_rwsem;
+	struct rw_semaphore kernfs_supers_rwsem;
+	struct callback_head rcu;
+};
+
+struct kernfs_iattrs {
+	kuid_t ia_uid;
+	kgid_t ia_gid;
+	struct timespec64 ia_atime;
+	struct timespec64 ia_mtime;
+	struct timespec64 ia_ctime;
+	struct simple_xattrs xattrs;
+	atomic_t nr_user_xattrs;
+	atomic_t user_xattr_size;
+};
+
+struct kernfs_global_locks {
+	struct mutex open_file_mutex[1024];
+};
+
+struct kernfs_super_info {
+	struct super_block *sb;
+	struct kernfs_root *root;
+	const void *ns;
+	struct list_head node;
+};
+
+enum kernfs_node_flag {
+	KERNFS_ACTIVATED = 16,
+	KERNFS_NS = 32,
+	KERNFS_HAS_SEQ_SHOW = 64,
+	KERNFS_HAS_MMAP = 128,
+	KERNFS_LOCKDEP = 256,
+	KERNFS_HIDDEN = 512,
+	KERNFS_SUICIDAL = 1024,
+	KERNFS_SUICIDED = 2048,
+	KERNFS_EMPTY_DIR = 4096,
+	KERNFS_HAS_RELEASE = 8192,
+	KERNFS_REMOVING = 16384,
+};
+
+struct configfs_fragment;
+
+struct configfs_dirent {
+	atomic_t s_count;
+	int s_dependent_count;
+	struct list_head s_sibling;
+	struct list_head s_children;
+	int s_links;
+	void *s_element;
+	int s_type;
+	umode_t s_mode;
+	struct dentry *s_dentry;
+	struct iattr *s_iattr;
+	struct configfs_fragment *s_frag;
+};
+
+struct configfs_fragment {
+	atomic_t frag_count;
+	struct rw_semaphore frag_sem;
+	bool frag_dead;
+};
+
+struct config_item;
+
+struct configfs_attribute {
+	const char *ca_name;
+	struct module *ca_owner;
+	umode_t ca_mode;
+	ssize_t (*show)(struct config_item *, char *);
+	ssize_t (*store)(struct config_item *, const char *, size_t);
+};
+
+struct config_group;
+
+struct config_item_type;
+
+struct config_item {
+	char *ci_name;
+	char ci_namebuf[20];
+	struct kref ci_kref;
+	struct list_head ci_entry;
+	struct config_item *ci_parent;
+	struct config_group *ci_group;
+	const struct config_item_type *ci_type;
+	struct dentry *ci_dentry;
+};
+
+struct configfs_subsystem;
+
+struct config_group {
+	struct config_item cg_item;
+	struct list_head cg_children;
+	struct configfs_subsystem *cg_subsys;
+	struct list_head default_groups;
+	struct list_head group_entry;
+};
+
+struct configfs_subsystem {
+	struct config_group su_group;
+	struct mutex su_mutex;
+};
+
+struct configfs_item_operations;
+
+struct configfs_group_operations;
+
+struct configfs_bin_attribute;
+
+struct config_item_type {
+	struct module *ct_owner;
+	struct configfs_item_operations *ct_item_ops;
+	struct configfs_group_operations *ct_group_ops;
+	struct configfs_attribute **ct_attrs;
+	struct configfs_bin_attribute **ct_bin_attrs;
+};
+
+struct configfs_item_operations {
+	void (*release)(struct config_item *);
+	int (*allow_link)(struct config_item *, struct config_item *);
+	void (*drop_link)(struct config_item *, struct config_item *);
+};
+
+struct configfs_group_operations {
+	struct config_item * (*make_item)(struct config_group *, const char *);
+	struct config_group * (*make_group)(struct config_group *, const char *);
+	void (*disconnect_notify)(struct config_group *, struct config_item *);
+	void (*drop_item)(struct config_group *, struct config_item *);
+};
+
+struct configfs_bin_attribute {
+	struct configfs_attribute cb_attr;
+	void *cb_private;
+	size_t cb_max_size;
+	ssize_t (*read)(struct config_item *, void *, size_t);
+	ssize_t (*write)(struct config_item *, const void *, size_t);
+};
+
+struct configfs_buffer {
+	size_t count;
+	loff_t pos;
+	char *page;
+	struct configfs_item_operations *ops;
+	struct mutex mutex;
+	int needs_read_fill;
+	bool read_in_progress;
+	bool write_in_progress;
+	char *bin_buffer;
+	int bin_buffer_size;
+	int cb_max_size;
+	struct config_item *item;
+	struct module *owner;
+	union {
+		struct configfs_attribute *attr;
+		struct configfs_bin_attribute *bin_attr;
+	};
+};
+
+enum {
+	Opt_uid___2 = 0,
+	Opt_gid___3 = 1,
+	Opt_mode___2 = 2,
+	Opt_ptmxmode = 3,
+	Opt_newinstance = 4,
+	Opt_max = 5,
+	Opt_err = 6,
+};
+
+struct pts_mount_opts {
+	int setuid;
+	int setgid;
+	kuid_t uid;
+	kgid_t gid;
+	umode_t mode;
+	umode_t ptmxmode;
+	int reserve;
+	int max;
+};
+
+struct pts_fs_info {
+	struct ida allocated_ptys;
+	struct pts_mount_opts mount_opts;
+	struct super_block *sb;
+	struct dentry *ptmx_dentry;
+};
+
+typedef unsigned int tid_t;
+
+struct transaction_chp_stats_s {
+	unsigned long cs_chp_time;
+	__u32 cs_forced_to_close;
+	__u32 cs_written;
+	__u32 cs_dropped;
+};
+
+struct journal_s;
+
+typedef struct journal_s journal_t;
+
+struct journal_head;
+
+struct transaction_s;
+
+typedef struct transaction_s transaction_t;
+
+struct transaction_s {
+	journal_t *t_journal;
+	tid_t t_tid;
+	enum {
+		T_RUNNING = 0,
+		T_LOCKED = 1,
+		T_SWITCH = 2,
+		T_FLUSH = 3,
+		T_COMMIT = 4,
+		T_COMMIT_DFLUSH = 5,
+		T_COMMIT_JFLUSH = 6,
+		T_COMMIT_CALLBACK = 7,
+		T_FINISHED = 8,
+	} t_state;
+	unsigned long t_log_start;
+	int t_nr_buffers;
+	struct journal_head *t_reserved_list;
+	struct journal_head *t_buffers;
+	struct journal_head *t_forget;
+	struct journal_head *t_checkpoint_list;
+	struct journal_head *t_shadow_list;
+	struct list_head t_inode_list;
+	unsigned long t_max_wait;
+	unsigned long t_start;
+	unsigned long t_requested;
+	struct transaction_chp_stats_s t_chp_stats;
+	atomic_t t_updates;
+	atomic_t t_outstanding_credits;
+	atomic_t t_outstanding_revokes;
+	atomic_t t_handle_count;
+	transaction_t *t_cpnext;
+	transaction_t *t_cpprev;
+	unsigned long t_expires;
+	ktime_t t_start_time;
+	unsigned int t_synchronous_commit: 1;
+	int t_need_data_flush;
+	struct list_head t_private_list;
+};
+
+struct transaction_run_stats_s {
+	unsigned long rs_wait;
+	unsigned long rs_request_delay;
+	unsigned long rs_running;
+	unsigned long rs_locked;
+	unsigned long rs_flushing;
+	unsigned long rs_logging;
+	__u32 rs_handle_count;
+	__u32 rs_blocks;
+	__u32 rs_blocks_logged;
+};
+
+struct transaction_stats_s {
+	unsigned long ts_tid;
+	unsigned long ts_requested;
+	struct transaction_run_stats_s run;
+};
+
+enum passtype {
+	PASS_SCAN = 0,
+	PASS_REVOKE = 1,
+	PASS_REPLAY = 2,
+};
+
+struct journal_superblock_s;
+
+typedef struct journal_superblock_s journal_superblock_t;
+
+struct jbd2_revoke_table_s;
+
+struct jbd2_inode;
+
+struct journal_s {
+	unsigned long j_flags;
+	unsigned long j_atomic_flags;
+	int j_errno;
+	struct mutex j_abort_mutex;
+	struct buffer_head *j_sb_buffer;
+	journal_superblock_t *j_superblock;
+	rwlock_t j_state_lock;
+	int j_barrier_count;
+	struct mutex j_barrier;
+	transaction_t *j_running_transaction;
+	transaction_t *j_committing_transaction;
+	transaction_t *j_checkpoint_transactions;
+	wait_queue_head_t j_wait_transaction_locked;
+	wait_queue_head_t j_wait_done_commit;
+	wait_queue_head_t j_wait_commit;
+	wait_queue_head_t j_wait_updates;
+	wait_queue_head_t j_wait_reserved;
+	wait_queue_head_t j_fc_wait;
+	struct mutex j_checkpoint_mutex;
+	struct buffer_head *j_chkpt_bhs[64];
+	struct shrinker j_shrinker;
+	struct percpu_counter j_checkpoint_jh_count;
+	transaction_t *j_shrink_transaction;
+	unsigned long j_head;
+	unsigned long j_tail;
+	unsigned long j_free;
+	unsigned long j_first;
+	unsigned long j_last;
+	unsigned long j_fc_first;
+	unsigned long j_fc_off;
+	unsigned long j_fc_last;
+	struct block_device *j_dev;
+	int j_blocksize;
+	unsigned long long j_blk_offset;
+	char j_devname[56];
+	struct block_device *j_fs_dev;
+	unsigned int j_total_len;
+	atomic_t j_reserved_credits;
+	spinlock_t j_list_lock;
+	struct inode *j_inode;
+	tid_t j_tail_sequence;
+	tid_t j_transaction_sequence;
+	tid_t j_commit_sequence;
+	tid_t j_commit_request;
+	__u8 j_uuid[16];
+	struct task_struct *j_task;
+	int j_max_transaction_buffers;
+	int j_revoke_records_per_block;
+	unsigned long j_commit_interval;
+	struct timer_list j_commit_timer;
+	spinlock_t j_revoke_lock;
+	struct jbd2_revoke_table_s *j_revoke;
+	struct jbd2_revoke_table_s *j_revoke_table[2];
+	struct buffer_head **j_wbuf;
+	struct buffer_head **j_fc_wbuf;
+	int j_wbufsize;
+	int j_fc_wbufsize;
+	pid_t j_last_sync_writer;
+	u64 j_average_commit_time;
+	u32 j_min_batch_time;
+	u32 j_max_batch_time;
+	void (*j_commit_callback)(journal_t *, transaction_t *);
+	int (*j_submit_inode_data_buffers)(struct jbd2_inode *);
+	int (*j_finish_inode_data_buffers)(struct jbd2_inode *);
+	spinlock_t j_history_lock;
+	struct proc_dir_entry *j_proc_entry;
+	struct transaction_stats_s j_stats;
+	unsigned int j_failed_commit;
+	void *j_private;
+	struct crypto_shash *j_chksum_driver;
+	__u32 j_csum_seed;
+	void (*j_fc_cleanup_callback)(struct journal_s *, int, tid_t);
+	int (*j_fc_replay_callback)(struct journal_s *, struct buffer_head *, enum passtype, int, tid_t);
+	int (*j_bmap)(struct journal_s *, sector_t *);
+};
+
+struct journal_header_s {
+	__be32 h_magic;
+	__be32 h_blocktype;
+	__be32 h_sequence;
+};
+
+typedef struct journal_header_s journal_header_t;
+
+struct journal_superblock_s {
+	journal_header_t s_header;
+	__be32 s_blocksize;
+	__be32 s_maxlen;
+	__be32 s_first;
+	__be32 s_sequence;
+	__be32 s_start;
+	__be32 s_errno;
+	__be32 s_feature_compat;
+	__be32 s_feature_incompat;
+	__be32 s_feature_ro_compat;
+	__u8 s_uuid[16];
+	__be32 s_nr_users;
+	__be32 s_dynsuper;
+	__be32 s_max_transaction;
+	__be32 s_max_trans_data;
+	__u8 s_checksum_type;
+	__u8 s_padding2[3];
+	__be32 s_num_fc_blks;
+	__be32 s_head;
+	__u32 s_padding[40];
+	__be32 s_checksum;
+	__u8 s_users[768];
+};
+
+struct jbd2_inode {
+	transaction_t *i_transaction;
+	transaction_t *i_next_transaction;
+	struct list_head i_list;
+	struct inode *i_vfs_inode;
+	unsigned long i_flags;
+	loff_t i_dirty_start;
+	loff_t i_dirty_end;
+};
+
+struct jbd2_buffer_trigger_type;
+
+struct journal_head {
+	struct buffer_head *b_bh;
+	spinlock_t b_state_lock;
+	int b_jcount;
+	unsigned int b_jlist;
+	unsigned int b_modified;
+	char *b_frozen_data;
+	char *b_committed_data;
+	transaction_t *b_transaction;
+	transaction_t *b_next_transaction;
+	struct journal_head *b_tnext;
+	struct journal_head *b_tprev;
+	transaction_t *b_cp_transaction;
+	struct journal_head *b_cpnext;
+	struct journal_head *b_cpprev;
+	struct jbd2_buffer_trigger_type *b_triggers;
+	struct jbd2_buffer_trigger_type *b_frozen_triggers;
+};
+
+struct jbd2_buffer_trigger_type {
+	void (*t_frozen)(struct jbd2_buffer_trigger_type *, struct buffer_head *, void *, size_t);
+	void (*t_abort)(struct jbd2_buffer_trigger_type *, struct buffer_head *);
+};
+
+enum ext4_li_mode {
+	EXT4_LI_MODE_PREFETCH_BBITMAP = 0,
+	EXT4_LI_MODE_ITABLE = 1,
+};
+
+enum jbd_state_bits {
+	BH_JBD = 16,
+	BH_JWrite = 17,
+	BH_Freed = 18,
+	BH_Revoked = 19,
+	BH_RevokeValid = 20,
+	BH_JBDDirty = 21,
+	BH_JournalHead = 22,
+	BH_Shadow = 23,
+	BH_Verified = 24,
+	BH_JBDPrivateStart = 25,
+};
+
+struct ext4_group_desc {
+	__le32 bg_block_bitmap_lo;
+	__le32 bg_inode_bitmap_lo;
+	__le32 bg_inode_table_lo;
+	__le16 bg_free_blocks_count_lo;
+	__le16 bg_free_inodes_count_lo;
+	__le16 bg_used_dirs_count_lo;
+	__le16 bg_flags;
+	__le32 bg_exclude_bitmap_lo;
+	__le16 bg_block_bitmap_csum_lo;
+	__le16 bg_inode_bitmap_csum_lo;
+	__le16 bg_itable_unused_lo;
+	__le16 bg_checksum;
+	__le32 bg_block_bitmap_hi;
+	__le32 bg_inode_bitmap_hi;
+	__le32 bg_inode_table_hi;
+	__le16 bg_free_blocks_count_hi;
+	__le16 bg_free_inodes_count_hi;
+	__le16 bg_used_dirs_count_hi;
+	__le16 bg_itable_unused_hi;
+	__le32 bg_exclude_bitmap_hi;
+	__le16 bg_block_bitmap_csum_hi;
+	__le16 bg_inode_bitmap_csum_hi;
+	__u32 bg_reserved;
+};
+
+typedef int ext4_grpblk_t;
+
+typedef unsigned int ext4_group_t;
+
+struct ext4_group_info {
+	unsigned long bb_state;
+	struct rb_root bb_free_root;
+	ext4_grpblk_t bb_first_free;
+	ext4_grpblk_t bb_free;
+	ext4_grpblk_t bb_fragments;
+	int bb_avg_fragment_size_order;
+	ext4_grpblk_t bb_largest_free_order;
+	ext4_group_t bb_group;
+	struct list_head bb_prealloc_list;
+	struct rw_semaphore alloc_sem;
+	struct list_head bb_avg_fragment_size_node;
+	struct list_head bb_largest_free_order_node;
+	ext4_grpblk_t bb_counters[0];
+};
+
+typedef unsigned long long ext4_fsblk_t;
+
+typedef __u32 ext4_lblk_t;
+
+struct extent_status;
+
+struct ext4_es_tree {
+	struct rb_root root;
+	struct extent_status *cache_es;
+};
+
+struct ext4_pending_tree {
+	struct rb_root root;
+};
+
+struct ext4_inode_info {
+	__le32 i_data[15];
+	__u32 i_dtime;
+	ext4_fsblk_t i_file_acl;
+	ext4_group_t i_block_group;
+	ext4_lblk_t i_dir_start_lookup;
+	unsigned long i_flags;
+	struct rw_semaphore xattr_sem;
+	union {
+		struct list_head i_orphan;
+		unsigned int i_orphan_idx;
+	};
+	struct list_head i_fc_dilist;
+	struct list_head i_fc_list;
+	ext4_lblk_t i_fc_lblk_start;
+	ext4_lblk_t i_fc_lblk_len;
+	atomic_t i_fc_updates;
+	wait_queue_head_t i_fc_wait;
+	struct mutex i_fc_lock;
+	loff_t i_disksize;
+	struct rw_semaphore i_data_sem;
+	struct inode vfs_inode;
+	struct jbd2_inode *jinode;
+	spinlock_t i_raw_lock;
+	struct timespec64 i_crtime;
+	atomic_t i_prealloc_active;
+	struct rb_root i_prealloc_node;
+	rwlock_t i_prealloc_lock;
+	struct ext4_es_tree i_es_tree;
+	rwlock_t i_es_lock;
+	struct list_head i_es_list;
+	unsigned int i_es_all_nr;
+	unsigned int i_es_shk_nr;
+	ext4_lblk_t i_es_shrink_lblk;
+	ext4_group_t i_last_alloc_group;
+	unsigned int i_reserved_data_blocks;
+	struct ext4_pending_tree i_pending_tree;
+	__u16 i_extra_isize;
+	u16 i_inline_off;
+	u16 i_inline_size;
+	qsize_t i_reserved_quota;
+	spinlock_t i_completed_io_lock;
+	struct list_head i_rsv_conversion_list;
+	struct work_struct i_rsv_conversion_work;
+	atomic_t i_unwritten;
+	spinlock_t i_block_reservation_lock;
+	tid_t i_sync_tid;
+	tid_t i_datasync_tid;
+	struct dquot __attribute__((btf_type_tag("rcu"))) *i_dquot[3];
+	__u32 i_csum_seed;
+	kprojid_t i_projid;
+};
+
+struct extent_status {
+	struct rb_node rb_node;
+	ext4_lblk_t es_lblk;
+	ext4_lblk_t es_len;
+	ext4_fsblk_t es_pblk;
+};
+
+struct ext4_orphan_block;
+
+struct ext4_orphan_info {
+	int of_blocks;
+	__u32 of_csum_seed;
+	struct ext4_orphan_block *of_binfo;
+};
+
+struct ext4_es_stats {
+	unsigned long es_stats_shrunk;
+	struct percpu_counter es_stats_cache_hits;
+	struct percpu_counter es_stats_cache_misses;
+	u64 es_stats_scan_time;
+	u64 es_stats_max_scan_time;
+	struct percpu_counter es_stats_all_cnt;
+	struct percpu_counter es_stats_shk_cnt;
+};
+
+struct ext4_journal_trigger {
+	struct jbd2_buffer_trigger_type tr_triggers;
+	struct super_block *sb;
+};
+
+struct ext4_fc_stats {
+	unsigned int fc_ineligible_reason_count[10];
+	unsigned long fc_num_commits;
+	unsigned long fc_ineligible_commits;
+	unsigned long fc_failed_commits;
+	unsigned long fc_skipped_commits;
+	unsigned long fc_numblks;
+	u64 s_fc_avg_commit_time;
+};
+
+struct ext4_fc_alloc_region;
+
+struct ext4_fc_replay_state {
+	int fc_replay_num_tags;
+	int fc_replay_expected_off;
+	int fc_current_pass;
+	int fc_cur_tag;
+	int fc_crc;
+	struct ext4_fc_alloc_region *fc_regions;
+	int fc_regions_size;
+	int fc_regions_used;
+	int fc_regions_valid;
+	int *fc_modified_inodes;
+	int fc_modified_inodes_used;
+	int fc_modified_inodes_size;
+};
+
+struct ext4_super_block;
+
+struct blockgroup_lock;
+
+struct ext4_system_blocks;
+
+struct ext4_locality_group;
+
+struct flex_groups;
+
+struct ext4_li_request;
+
+struct ext4_sb_info {
+	unsigned long s_desc_size;
+	unsigned long s_inodes_per_block;
+	unsigned long s_blocks_per_group;
+	unsigned long s_clusters_per_group;
+	unsigned long s_inodes_per_group;
+	unsigned long s_itb_per_group;
+	unsigned long s_gdb_count;
+	unsigned long s_desc_per_block;
+	ext4_group_t s_groups_count;
+	ext4_group_t s_blockfile_groups;
+	unsigned long s_overhead;
+	unsigned int s_cluster_ratio;
+	unsigned int s_cluster_bits;
+	loff_t s_bitmap_maxbytes;
+	struct buffer_head *s_sbh;
+	struct ext4_super_block *s_es;
+	struct buffer_head * __attribute__((btf_type_tag("rcu"))) *s_group_desc;
+	unsigned int s_mount_opt;
+	unsigned int s_mount_opt2;
+	unsigned long s_mount_flags;
+	unsigned int s_def_mount_opt;
+	unsigned int s_def_mount_opt2;
+	ext4_fsblk_t s_sb_block;
+	atomic64_t s_resv_clusters;
+	kuid_t s_resuid;
+	kgid_t s_resgid;
+	unsigned short s_mount_state;
+	unsigned short s_pad;
+	int s_addr_per_block_bits;
+	int s_desc_per_block_bits;
+	int s_inode_size;
+	int s_first_ino;
+	unsigned int s_inode_readahead_blks;
+	unsigned int s_inode_goal;
+	u32 s_hash_seed[4];
+	int s_def_hash_version;
+	int s_hash_unsigned;
+	struct percpu_counter s_freeclusters_counter;
+	struct percpu_counter s_freeinodes_counter;
+	struct percpu_counter s_dirs_counter;
+	struct percpu_counter s_dirtyclusters_counter;
+	struct percpu_counter s_sra_exceeded_retry_limit;
+	struct blockgroup_lock *s_blockgroup_lock;
+	struct proc_dir_entry *s_proc;
+	struct kobject s_kobj;
+	struct completion s_kobj_unregister;
+	struct super_block *s_sb;
+	struct buffer_head *s_mmp_bh;
+	struct journal_s *s_journal;
+	unsigned long s_ext4_flags;
+	struct mutex s_orphan_lock;
+	struct list_head s_orphan;
+	struct ext4_orphan_info s_orphan_info;
+	unsigned long s_commit_interval;
+	u32 s_max_batch_time;
+	u32 s_min_batch_time;
+	struct block_device *s_journal_bdev;
+	char __attribute__((btf_type_tag("rcu"))) *s_qf_names[3];
+	int s_jquota_fmt;
+	unsigned int s_want_extra_isize;
+	struct ext4_system_blocks __attribute__((btf_type_tag("rcu"))) *s_system_blks;
+	struct ext4_group_info ** __attribute__((btf_type_tag("rcu"))) *s_group_info;
+	struct inode *s_buddy_cache;
+	spinlock_t s_md_lock;
+	unsigned short *s_mb_offsets;
+	unsigned int *s_mb_maxs;
+	unsigned int s_group_info_size;
+	unsigned int s_mb_free_pending;
+	struct list_head s_freed_data_list;
+	struct list_head s_discard_list;
+	struct work_struct s_discard_work;
+	atomic_t s_retry_alloc_pending;
+	struct list_head *s_mb_avg_fragment_size;
+	rwlock_t *s_mb_avg_fragment_size_locks;
+	struct list_head *s_mb_largest_free_orders;
+	rwlock_t *s_mb_largest_free_orders_locks;
+	unsigned long s_stripe;
+	unsigned int s_mb_max_linear_groups;
+	unsigned int s_mb_stream_request;
+	unsigned int s_mb_max_to_scan;
+	unsigned int s_mb_min_to_scan;
+	unsigned int s_mb_stats;
+	unsigned int s_mb_order2_reqs;
+	unsigned int s_mb_group_prealloc;
+	unsigned int s_max_dir_size_kb;
+	unsigned long s_mb_last_group;
+	unsigned long s_mb_last_start;
+	unsigned int s_mb_prefetch;
+	unsigned int s_mb_prefetch_limit;
+	unsigned int s_mb_best_avail_max_trim_order;
+	atomic_t s_bal_reqs;
+	atomic_t s_bal_success;
+	atomic_t s_bal_allocated;
+	atomic_t s_bal_ex_scanned;
+	atomic_t s_bal_cX_ex_scanned[5];
+	atomic_t s_bal_groups_scanned;
+	atomic_t s_bal_goals;
+	atomic_t s_bal_len_goals;
+	atomic_t s_bal_breaks;
+	atomic_t s_bal_2orders;
+	atomic_t s_bal_p2_aligned_bad_suggestions;
+	atomic_t s_bal_goal_fast_bad_suggestions;
+	atomic_t s_bal_best_avail_bad_suggestions;
+	atomic64_t s_bal_cX_groups_considered[5];
+	atomic64_t s_bal_cX_hits[5];
+	atomic64_t s_bal_cX_failed[5];
+	atomic_t s_mb_buddies_generated;
+	atomic64_t s_mb_generation_time;
+	atomic_t s_mb_lost_chunks;
+	atomic_t s_mb_preallocated;
+	atomic_t s_mb_discarded;
+	atomic_t s_lock_busy;
+	struct ext4_locality_group __attribute__((btf_type_tag("percpu"))) *s_locality_groups;
+	unsigned long s_sectors_written_start;
+	u64 s_kbytes_written;
+	unsigned int s_extent_max_zeroout_kb;
+	unsigned int s_log_groups_per_flex;
+	struct flex_groups * __attribute__((btf_type_tag("rcu"))) *s_flex_groups;
+	ext4_group_t s_flex_groups_allocated;
+	struct workqueue_struct *rsv_conversion_wq;
+	struct timer_list s_err_report;
+	struct ext4_li_request *s_li_request;
+	unsigned int s_li_wait_mult;
+	struct task_struct *s_mmp_tsk;
+	unsigned long s_last_trim_minblks;
+	struct crypto_shash *s_chksum_driver;
+	__u32 s_csum_seed;
+	struct shrinker s_es_shrinker;
+	struct list_head s_es_list;
+	long s_es_nr_inode;
+	struct ext4_es_stats s_es_stats;
+	struct mb_cache *s_ea_block_cache;
+	struct mb_cache *s_ea_inode_cache;
+	long: 64;
+	long: 64;
+	spinlock_t s_es_lock;
+	struct ext4_journal_trigger s_journal_triggers[1];
+	struct ratelimit_state s_err_ratelimit_state;
+	struct ratelimit_state s_warning_ratelimit_state;
+	struct ratelimit_state s_msg_ratelimit_state;
+	atomic_t s_warning_count;
+	atomic_t s_msg_count;
+	struct fscrypt_dummy_policy s_dummy_enc_policy;
+	struct percpu_rw_semaphore s_writepages_rwsem;
+	struct dax_device *s_daxdev;
+	u64 s_dax_part_off;
+	errseq_t s_bdev_wb_err;
+	spinlock_t s_bdev_wb_lock;
+	spinlock_t s_error_lock;
+	int s_add_error_count;
+	int s_first_error_code;
+	__u32 s_first_error_line;
+	__u32 s_first_error_ino;
+	__u64 s_first_error_block;
+	const char *s_first_error_func;
+	time64_t s_first_error_time;
+	int s_last_error_code;
+	__u32 s_last_error_line;
+	__u32 s_last_error_ino;
+	__u64 s_last_error_block;
+	const char *s_last_error_func;
+	time64_t s_last_error_time;
+	struct work_struct s_sb_upd_work;
+	atomic_t s_fc_subtid;
+	struct list_head s_fc_q[2];
+	struct list_head s_fc_dentry_q[2];
+	unsigned int s_fc_bytes;
+	spinlock_t s_fc_lock;
+	struct buffer_head *s_fc_bh;
+	struct ext4_fc_stats s_fc_stats;
+	tid_t s_fc_ineligible_tid;
+	struct ext4_fc_replay_state s_fc_replay_state;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct ext4_super_block {
+	__le32 s_inodes_count;
+	__le32 s_blocks_count_lo;
+	__le32 s_r_blocks_count_lo;
+	__le32 s_free_blocks_count_lo;
+	__le32 s_free_inodes_count;
+	__le32 s_first_data_block;
+	__le32 s_log_block_size;
+	__le32 s_log_cluster_size;
+	__le32 s_blocks_per_group;
+	__le32 s_clusters_per_group;
+	__le32 s_inodes_per_group;
+	__le32 s_mtime;
+	__le32 s_wtime;
+	__le16 s_mnt_count;
+	__le16 s_max_mnt_count;
+	__le16 s_magic;
+	__le16 s_state;
+	__le16 s_errors;
+	__le16 s_minor_rev_level;
+	__le32 s_lastcheck;
+	__le32 s_checkinterval;
+	__le32 s_creator_os;
+	__le32 s_rev_level;
+	__le16 s_def_resuid;
+	__le16 s_def_resgid;
+	__le32 s_first_ino;
+	__le16 s_inode_size;
+	__le16 s_block_group_nr;
+	__le32 s_feature_compat;
+	__le32 s_feature_incompat;
+	__le32 s_feature_ro_compat;
+	__u8 s_uuid[16];
+	char s_volume_name[16];
+	char s_last_mounted[64];
+	__le32 s_algorithm_usage_bitmap;
+	__u8 s_prealloc_blocks;
+	__u8 s_prealloc_dir_blocks;
+	__le16 s_reserved_gdt_blocks;
+	__u8 s_journal_uuid[16];
+	__le32 s_journal_inum;
+	__le32 s_journal_dev;
+	__le32 s_last_orphan;
+	__le32 s_hash_seed[4];
+	__u8 s_def_hash_version;
+	__u8 s_jnl_backup_type;
+	__le16 s_desc_size;
+	__le32 s_default_mount_opts;
+	__le32 s_first_meta_bg;
+	__le32 s_mkfs_time;
+	__le32 s_jnl_blocks[17];
+	__le32 s_blocks_count_hi;
+	__le32 s_r_blocks_count_hi;
+	__le32 s_free_blocks_count_hi;
+	__le16 s_min_extra_isize;
+	__le16 s_want_extra_isize;
+	__le32 s_flags;
+	__le16 s_raid_stride;
+	__le16 s_mmp_update_interval;
+	__le64 s_mmp_block;
+	__le32 s_raid_stripe_width;
+	__u8 s_log_groups_per_flex;
+	__u8 s_checksum_type;
+	__u8 s_encryption_level;
+	__u8 s_reserved_pad;
+	__le64 s_kbytes_written;
+	__le32 s_snapshot_inum;
+	__le32 s_snapshot_id;
+	__le64 s_snapshot_r_blocks_count;
+	__le32 s_snapshot_list;
+	__le32 s_error_count;
+	__le32 s_first_error_time;
+	__le32 s_first_error_ino;
+	__le64 s_first_error_block;
+	__u8 s_first_error_func[32];
+	__le32 s_first_error_line;
+	__le32 s_last_error_time;
+	__le32 s_last_error_ino;
+	__le32 s_last_error_line;
+	__le64 s_last_error_block;
+	__u8 s_last_error_func[32];
+	__u8 s_mount_opts[64];
+	__le32 s_usr_quota_inum;
+	__le32 s_grp_quota_inum;
+	__le32 s_overhead_clusters;
+	__le32 s_backup_bgs[2];
+	__u8 s_encrypt_algos[4];
+	__u8 s_encrypt_pw_salt[16];
+	__le32 s_lpf_ino;
+	__le32 s_prj_quota_inum;
+	__le32 s_checksum_seed;
+	__u8 s_wtime_hi;
+	__u8 s_mtime_hi;
+	__u8 s_mkfs_time_hi;
+	__u8 s_lastcheck_hi;
+	__u8 s_first_error_time_hi;
+	__u8 s_last_error_time_hi;
+	__u8 s_first_error_errcode;
+	__u8 s_last_error_errcode;
+	__le16 s_encoding;
+	__le16 s_encoding_flags;
+	__le32 s_orphan_file_inum;
+	__le32 s_reserved[94];
+	__le32 s_checksum;
+};
+
+struct bgl_lock {
+	spinlock_t lock;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct blockgroup_lock {
+	struct bgl_lock locks[128];
+};
+
+struct ext4_orphan_block {
+	atomic_t ob_free_entries;
+	struct buffer_head *ob_bh;
+};
+
+struct ext4_system_blocks {
+	struct rb_root root;
+	struct callback_head rcu;
+};
+
+struct ext4_locality_group {
+	struct mutex lg_mutex;
+	struct list_head lg_prealloc_list[10];
+	spinlock_t lg_prealloc_lock;
+};
+
+struct flex_groups {
+	atomic64_t free_clusters;
+	atomic_t free_inodes;
+	atomic_t used_dirs;
+};
+
+struct ext4_li_request {
+	struct super_block *lr_super;
+	enum ext4_li_mode lr_mode;
+	ext4_group_t lr_first_not_zeroed;
+	ext4_group_t lr_next_group;
+	struct list_head lr_request;
+	unsigned long lr_next_sched;
+	unsigned long lr_timeout;
+};
+
+struct ext4_fc_alloc_region {
+	ext4_lblk_t lblk;
+	ext4_fsblk_t pblk;
+	int ino;
+	int len;
+};
+
+struct jbd2_journal_handle;
+
+typedef struct jbd2_journal_handle handle_t;
+
+struct jbd2_journal_handle {
+	union {
+		transaction_t *h_transaction;
+		journal_t *h_journal;
+	};
+	handle_t *h_rsv_handle;
+	int h_total_credits;
+	int h_revoke_credits;
+	int h_revoke_credits_requested;
+	int h_ref;
+	int h_err;
+	unsigned int h_sync: 1;
+	unsigned int h_jdata: 1;
+	unsigned int h_reserved: 1;
+	unsigned int h_aborted: 1;
+	unsigned int h_type: 8;
+	unsigned int h_line_no: 16;
+	unsigned long h_start_jiffies;
+	unsigned int h_requested_credits;
+	unsigned int saved_alloc_context;
+};
+
+struct ext4_allocation_request {
+	struct inode *inode;
+	unsigned int len;
+	ext4_lblk_t logical;
+	ext4_lblk_t lleft;
+	ext4_lblk_t lright;
+	ext4_fsblk_t goal;
+	ext4_fsblk_t pleft;
+	ext4_fsblk_t pright;
+	unsigned int flags;
+};
+
+struct ext4_system_zone {
+	struct rb_node node;
+	ext4_fsblk_t start_blk;
+	unsigned int count;
+	u32 ino;
+};
+
+struct ext4_map_blocks {
+	ext4_fsblk_t m_pblk;
+	ext4_lblk_t m_lblk;
+	unsigned int m_len;
+	unsigned int m_flags;
+};
+
+typedef enum {
+	EXT4_IGET_NORMAL = 0,
+	EXT4_IGET_SPECIAL = 1,
+	EXT4_IGET_HANDLE = 2,
+	EXT4_IGET_BAD = 4,
+	EXT4_IGET_EA_INODE = 8,
+} ext4_iget_flags;
+
+enum {
+	EXT4_INODE_SECRM = 0,
+	EXT4_INODE_UNRM = 1,
+	EXT4_INODE_COMPR = 2,
+	EXT4_INODE_SYNC = 3,
+	EXT4_INODE_IMMUTABLE = 4,
+	EXT4_INODE_APPEND = 5,
+	EXT4_INODE_NODUMP = 6,
+	EXT4_INODE_NOATIME = 7,
+	EXT4_INODE_DIRTY = 8,
+	EXT4_INODE_COMPRBLK = 9,
+	EXT4_INODE_NOCOMPR = 10,
+	EXT4_INODE_ENCRYPT = 11,
+	EXT4_INODE_INDEX = 12,
+	EXT4_INODE_IMAGIC = 13,
+	EXT4_INODE_JOURNAL_DATA = 14,
+	EXT4_INODE_NOTAIL = 15,
+	EXT4_INODE_DIRSYNC = 16,
+	EXT4_INODE_TOPDIR = 17,
+	EXT4_INODE_HUGE_FILE = 18,
+	EXT4_INODE_EXTENTS = 19,
+	EXT4_INODE_VERITY = 20,
+	EXT4_INODE_EA_INODE = 21,
+	EXT4_INODE_DAX = 25,
+	EXT4_INODE_INLINE_DATA = 28,
+	EXT4_INODE_PROJINHERIT = 29,
+	EXT4_INODE_CASEFOLD = 30,
+	EXT4_INODE_RESERVED = 31,
+};
+
+struct fname {
+	__u32 hash;
+	__u32 minor_hash;
+	struct rb_node rb_hash;
+	struct fname *next;
+	__u32 inode;
+	__u8 name_len;
+	__u8 file_type;
+	char name[0];
+};
+
+struct ext4_dir_entry_2 {
+	__le32 inode;
+	__le16 rec_len;
+	__u8 name_len;
+	__u8 file_type;
+	char name[255];
+};
+
+struct ext4_dir_entry_hash {
+	__le32 hash;
+	__le32 minor_hash;
+};
+
+struct dir_private_info {
+	struct rb_root root;
+	struct rb_node *curr_node;
+	struct fname *extra_fname;
+	loff_t last_pos;
+	__u32 curr_hash;
+	__u32 curr_minor_hash;
+	__u32 next_hash;
+};
+
+enum ext4_journal_trigger_type {
+	EXT4_JTR_ORPHAN_FILE = 0,
+	EXT4_JTR_NONE = 1,
+};
+
+enum {
+	EXT4_STATE_NEW = 0,
+	EXT4_STATE_XATTR = 1,
+	EXT4_STATE_NO_EXPAND = 2,
+	EXT4_STATE_DA_ALLOC_CLOSE = 3,
+	EXT4_STATE_EXT_MIGRATE = 4,
+	EXT4_STATE_NEWENTRY = 5,
+	EXT4_STATE_MAY_INLINE_DATA = 6,
+	EXT4_STATE_EXT_PRECACHED = 7,
+	EXT4_STATE_LUSTRE_EA_INODE = 8,
+	EXT4_STATE_VERITY_IN_PROGRESS = 9,
+	EXT4_STATE_FC_COMMITTING = 10,
+	EXT4_STATE_ORPHAN_FILE = 11,
+};
+
+struct partial_cluster {
+	ext4_fsblk_t pclu;
+	ext4_lblk_t lblk;
+	enum {
+		initial = 0,
+		tofree = 1,
+		nofree = 2,
+	} state;
+};
+
+enum {
+	ES_WRITTEN_B = 0,
+	ES_UNWRITTEN_B = 1,
+	ES_DELAYED_B = 2,
+	ES_HOLE_B = 3,
+	ES_REFERENCED_B = 4,
+	ES_FLAGS = 5,
+};
+
+enum {
+	EXT4_FC_REASON_XATTR = 0,
+	EXT4_FC_REASON_CROSS_RENAME = 1,
+	EXT4_FC_REASON_JOURNAL_FLAG_CHANGE = 2,
+	EXT4_FC_REASON_NOMEM = 3,
+	EXT4_FC_REASON_SWAP_BOOT = 4,
+	EXT4_FC_REASON_RESIZE = 5,
+	EXT4_FC_REASON_RENAME_DIR = 6,
+	EXT4_FC_REASON_FALLOC_RANGE = 7,
+	EXT4_FC_REASON_INODE_JOURNAL_DATA = 8,
+	EXT4_FC_REASON_ENCRYPTED_FILENAME = 9,
+	EXT4_FC_REASON_MAX = 10,
+};
+
+enum SHIFT_DIRECTION {
+	SHIFT_LEFT = 0,
+	SHIFT_RIGHT = 1,
+};
+
+struct ext4_extent_idx {
+	__le32 ei_block;
+	__le32 ei_leaf_lo;
+	__le16 ei_leaf_hi;
+	__u16 ei_unused;
+};
+
+struct ext4_extent {
+	__le32 ee_block;
+	__le16 ee_len;
+	__le16 ee_start_hi;
+	__le32 ee_start_lo;
+};
+
+struct ext4_io_end_vec {
+	struct list_head list;
+	loff_t offset;
+	ssize_t size;
+};
+
+struct ext4_extent_tail {
+	__le32 et_checksum;
+};
+
+struct ext4_extent_header {
+	__le16 eh_magic;
+	__le16 eh_entries;
+	__le16 eh_max;
+	__le16 eh_depth;
+	__le32 eh_generation;
+};
+
+struct ext4_ext_path {
+	ext4_fsblk_t p_block;
+	__u16 p_depth;
+	__u16 p_maxdepth;
+	struct ext4_extent *p_ext;
+	struct ext4_extent_idx *p_idx;
+	struct ext4_extent_header *p_hdr;
+	struct buffer_head *p_bh;
+};
+
+struct ext4_iloc {
+	struct buffer_head *bh;
+	unsigned long offset;
+	ext4_group_t block_group;
+};
+
+struct ext4_io_end {
+	struct list_head list;
+	handle_t *handle;
+	struct inode *inode;
+	struct bio *bio;
+	unsigned int flag;
+	refcount_t count;
+	struct list_head list_vec;
+};
+
+typedef struct ext4_io_end ext4_io_end_t;
+
+struct pending_reservation {
+	struct rb_node rb_node;
+	ext4_lblk_t lclu;
+};
+
+struct rsvd_count {
+	int ndelonly;
+	bool first_do_lblk_found;
+	ext4_lblk_t first_do_lblk;
+	ext4_lblk_t last_do_lblk;
+	struct extent_status *left_es;
+	bool partial;
+	ext4_lblk_t lclu;
+};
+
+enum {
+	EXT4_MF_MNTDIR_SAMPLED = 0,
+	EXT4_MF_FC_INELIGIBLE = 1,
+};
+
+struct ext4_fsmap {
+	struct list_head fmr_list;
+	dev_t fmr_device;
+	uint32_t fmr_flags;
+	uint64_t fmr_physical;
+	uint64_t fmr_owner;
+	uint64_t fmr_length;
+};
+
+typedef int (*ext4_mballoc_query_range_fn)(struct super_block *, ext4_group_t, ext4_grpblk_t, ext4_grpblk_t, void *);
+
+typedef int (*ext4_fsmap_format_t)(struct ext4_fsmap *, void *);
+
+struct ext4_fsmap_head;
+
+struct ext4_getfsmap_info {
+	struct ext4_fsmap_head *gfi_head;
+	ext4_fsmap_format_t gfi_formatter;
+	void *gfi_format_arg;
+	ext4_fsblk_t gfi_next_fsblk;
+	u32 gfi_dev;
+	ext4_group_t gfi_agno;
+	struct ext4_fsmap gfi_low;
+	struct ext4_fsmap gfi_high;
+	struct ext4_fsmap gfi_lastfree;
+	struct list_head gfi_meta_list;
+	bool gfi_last;
+};
+
+struct ext4_fsmap_head {
+	uint32_t fmh_iflags;
+	uint32_t fmh_oflags;
+	unsigned int fmh_count;
+	unsigned int fmh_entries;
+	struct ext4_fsmap fmh_keys[2];
+};
+
+struct fsmap {
+	__u32 fmr_device;
+	__u32 fmr_flags;
+	__u64 fmr_physical;
+	__u64 fmr_owner;
+	__u64 fmr_offset;
+	__u64 fmr_length;
+	__u64 fmr_reserved[3];
+};
+
+struct ext4_getfsmap_dev {
+	int (*gfd_fn)(struct super_block *, struct ext4_fsmap *, struct ext4_getfsmap_info *);
+	u32 gfd_dev;
+};
+
+struct dx_hash_info {
+	u32 hash;
+	u32 minor_hash;
+	int hash_version;
+	u32 *seed;
+};
+
+struct ext4_inode {
+	__le16 i_mode;
+	__le16 i_uid;
+	__le32 i_size_lo;
+	__le32 i_atime;
+	__le32 i_ctime;
+	__le32 i_mtime;
+	__le32 i_dtime;
+	__le16 i_gid;
+	__le16 i_links_count;
+	__le32 i_blocks_lo;
+	__le32 i_flags;
+	union {
+		struct {
+			__le32 l_i_version;
+		} linux1;
+		struct {
+			__u32 h_i_translator;
+		} hurd1;
+		struct {
+			__u32 m_i_reserved1;
+		} masix1;
+	} osd1;
+	__le32 i_block[15];
+	__le32 i_generation;
+	__le32 i_file_acl_lo;
+	__le32 i_size_high;
+	__le32 i_obso_faddr;
+	union {
+		struct {
+			__le16 l_i_blocks_high;
+			__le16 l_i_file_acl_high;
+			__le16 l_i_uid_high;
+			__le16 l_i_gid_high;
+			__le16 l_i_checksum_lo;
+			__le16 l_i_reserved;
+		} linux2;
+		struct {
+			__le16 h_i_reserved1;
+			__u16 h_i_mode_high;
+			__u16 h_i_uid_high;
+			__u16 h_i_gid_high;
+			__u32 h_i_author;
+		} hurd2;
+		struct {
+			__le16 h_i_reserved1;
+			__le16 m_i_file_acl_high;
+			__u32 m_i_reserved2[2];
+		} masix2;
+	} osd2;
+	__le16 i_extra_isize;
+	__le16 i_checksum_hi;
+	__le32 i_ctime_extra;
+	__le32 i_mtime_extra;
+	__le32 i_atime_extra;
+	__le32 i_crtime;
+	__le32 i_crtime_extra;
+	__le32 i_version_hi;
+	__le32 i_projid;
+};
+
+typedef unsigned int __kernel_mode_t;
+
+typedef __kernel_mode_t mode_t;
+
+struct orlov_stats {
+	__u64 free_clusters;
+	__u32 free_inodes;
+	__u32 used_dirs;
+};
+
+typedef struct {
+	__le32 *p;
+	__le32 key;
+	struct buffer_head *bh;
+} Indirect;
+
+struct ext4_xattr_ibody_header {
+	__le32 h_magic;
+};
+
+struct ext4_xattr_entry {
+	__u8 e_name_len;
+	__u8 e_name_index;
+	__le16 e_value_offs;
+	__le32 e_value_inum;
+	__le32 e_value_size;
+	__le32 e_hash;
+	char e_name[0];
+};
+
+struct ext4_xattr_info {
+	const char *name;
+	const void *value;
+	size_t value_len;
+	int name_index;
+	int in_inode;
+};
+
+struct ext4_xattr_search {
+	struct ext4_xattr_entry *first;
+	void *base;
+	void *end;
+	struct ext4_xattr_entry *here;
+	int not_found;
+};
+
+struct ext4_xattr_ibody_find {
+	struct ext4_xattr_search s;
+	struct ext4_iloc iloc;
+};
+
+struct ext4_filename {
+	const struct qstr *usr_fname;
+	struct fscrypt_str disk_name;
+	struct dx_hash_info hinfo;
+	struct fscrypt_str crypto_buf;
+	struct fscrypt_str cf_name;
+};
+
+typedef unsigned short __kernel_uid16_t;
+
+typedef __kernel_uid16_t uid16_t;
+
+typedef unsigned short __kernel_gid16_t;
+
+typedef __kernel_gid16_t gid16_t;
+
+struct ext4_xattr_inode_array {
+	unsigned int count;
+	struct inode *inodes[0];
+};
+
+struct ext4_io_submit {
+	struct writeback_control *io_wbc;
+	struct bio *io_bio;
+	ext4_io_end_t *io_end;
+	sector_t io_next_block;
+};
+
+struct mpage_da_data {
+	struct inode *inode;
+	struct writeback_control *wbc;
+	unsigned int can_map: 1;
+	unsigned long first_page;
+	unsigned long next_page;
+	unsigned long last_page;
+	struct ext4_map_blocks map;
+	struct ext4_io_submit io_submit;
+	unsigned int do_map: 1;
+	unsigned int scanned_until_end: 1;
+	unsigned int journalled_more_data: 1;
+};
+
+struct move_extent {
+	__u32 reserved;
+	__u32 donor_fd;
+	__u64 orig_start;
+	__u64 donor_start;
+	__u64 len;
+	__u64 moved_len;
+};
+
+struct ext4_new_group_input {
+	__u32 group;
+	__u64 block_bitmap;
+	__u64 inode_bitmap;
+	__u64 inode_table;
+	__u32 blocks_count;
+	__u16 reserved_blocks;
+	__u16 unused;
+};
+
+struct fstrim_range {
+	__u64 start;
+	__u64 len;
+	__u64 minlen;
+};
+
+struct ext4_new_group_data {
+	__u32 group;
+	__u64 block_bitmap;
+	__u64 inode_bitmap;
+	__u64 inode_table;
+	__u32 blocks_count;
+	__u16 reserved_blocks;
+	__u16 mdata_blocks;
+	__u32 free_clusters_count;
+};
+
+struct fsmap_head {
+	__u32 fmh_iflags;
+	__u32 fmh_oflags;
+	__u32 fmh_count;
+	__u32 fmh_entries;
+	__u64 fmh_reserved[6];
+	struct fsmap fmh_keys[2];
+	struct fsmap fmh_recs[0];
+};
+
+struct getfsmap_info {
+	struct super_block *gi_sb;
+	struct fsmap_head __attribute__((btf_type_tag("user"))) *gi_data;
+	unsigned int gi_idx;
+	__u32 gi_last_flags;
+};
+
+struct fsuuid {
+	__u32 fsu_len;
+	__u32 fsu_flags;
+	__u8 fsu_uuid[0];
+};
+
+typedef void ext4_update_sb_callback(struct ext4_super_block *, const void *);
+
+struct compat_ext4_new_group_input {
+	u32 group;
+	compat_u64 block_bitmap;
+	compat_u64 inode_bitmap;
+	compat_u64 inode_table;
+	u32 blocks_count;
+	u16 reserved_blocks;
+	u16 unused;
+};
+
+struct sg {
+	struct ext4_group_info info;
+	ext4_grpblk_t counters[18];
+};
+
+enum criteria {
+	CR_POWER2_ALIGNED = 0,
+	CR_GOAL_LEN_FAST = 1,
+	CR_BEST_AVAIL_LEN = 2,
+	CR_GOAL_LEN_SLOW = 3,
+	CR_ANY_FREE = 4,
+	EXT4_MB_NUM_CRS = 5,
+};
+
+enum {
+	MB_INODE_PA = 0,
+	MB_GROUP_PA = 1,
+};
+
+enum blk_default_limits {
+	BLK_MAX_SEGMENTS = 128,
+	BLK_SAFE_MAX_SECTORS = 255,
+	BLK_MAX_SEGMENT_SIZE = 65536,
+	BLK_SEG_BOUNDARY_MASK = 4294967295,
+};
+
+struct ext4_free_data {
+	struct list_head efd_list;
+	struct rb_node efd_node;
+	ext4_group_t efd_group;
+	ext4_grpblk_t efd_start_cluster;
+	ext4_grpblk_t efd_count;
+	tid_t efd_tid;
+};
+
+struct ext4_prealloc_space {
+	union {
+		struct rb_node inode_node;
+		struct list_head lg_list;
+	} pa_node;
+	struct list_head pa_group_list;
+	union {
+		struct list_head pa_tmp_list;
+		struct callback_head pa_rcu;
+	} u;
+	spinlock_t pa_lock;
+	atomic_t pa_count;
+	unsigned int pa_deleted;
+	ext4_fsblk_t pa_pstart;
+	ext4_lblk_t pa_lstart;
+	ext4_grpblk_t pa_len;
+	ext4_grpblk_t pa_free;
+	unsigned short pa_type;
+	union {
+		rwlock_t *inode_lock;
+		spinlock_t *lg_lock;
+	} pa_node_lock;
+	struct inode *pa_inode;
+};
+
+struct ext4_buddy {
+	struct page *bd_buddy_page;
+	void *bd_buddy;
+	struct page *bd_bitmap_page;
+	void *bd_bitmap;
+	struct ext4_group_info *bd_info;
+	struct super_block *bd_sb;
+	__u16 bd_blkbits;
+	ext4_group_t bd_group;
+};
+
+struct ext4_free_extent {
+	ext4_lblk_t fe_logical;
+	ext4_grpblk_t fe_start;
+	ext4_group_t fe_group;
+	ext4_grpblk_t fe_len;
+};
+
+struct ext4_allocation_context {
+	struct inode *ac_inode;
+	struct super_block *ac_sb;
+	struct ext4_free_extent ac_o_ex;
+	struct ext4_free_extent ac_g_ex;
+	struct ext4_free_extent ac_b_ex;
+	struct ext4_free_extent ac_f_ex;
+	ext4_grpblk_t ac_orig_goal_len;
+	__u32 ac_groups_considered;
+	__u32 ac_flags;
+	__u16 ac_groups_scanned;
+	__u16 ac_groups_linear_remaining;
+	__u16 ac_found;
+	__u16 ac_cX_found[5];
+	__u16 ac_tail;
+	__u16 ac_buddy;
+	__u8 ac_status;
+	__u8 ac_criteria;
+	__u8 ac_2order;
+	__u8 ac_op;
+	struct page *ac_bitmap_page;
+	struct page *ac_buddy_page;
+	struct ext4_prealloc_space *ac_pa;
+	struct ext4_locality_group *ac_lg;
+};
+
+struct migrate_struct {
+	ext4_lblk_t first_block;
+	ext4_lblk_t last_block;
+	ext4_lblk_t curr_block;
+	ext4_fsblk_t first_pblock;
+	ext4_fsblk_t last_pblock;
+};
+
+struct mmp_struct {
+	__le32 mmp_magic;
+	__le32 mmp_seq;
+	__le64 mmp_time;
+	char mmp_nodename[64];
+	char mmp_bdevname[32];
+	__le16 mmp_check_interval;
+	__le16 mmp_pad1;
+	__le32 mmp_pad2[226];
+	__le32 mmp_checksum;
+};
+
+struct ext4_dir_entry_tail {
+	__le32 det_reserved_zero1;
+	__le16 det_rec_len;
+	__u8 det_reserved_zero2;
+	__u8 det_reserved_ft;
+	__le32 det_checksum;
+};
+
+struct dx_entry;
+
+struct dx_frame {
+	struct buffer_head *bh;
+	struct dx_entry *entries;
+	struct dx_entry *at;
+};
+
+struct dx_entry {
+	__le32 hash;
+	__le32 block;
+};
+
+struct fake_dirent {
+	__le32 inode;
+	__le16 rec_len;
+	u8 name_len;
+	u8 file_type;
+};
+
+struct dx_root_info {
+	__le32 reserved_zero;
+	u8 hash_version;
+	u8 info_length;
+	u8 indirect_levels;
+	u8 unused_flags;
+};
+
+struct dx_root {
+	struct fake_dirent dot;
+	char dot_name[4];
+	struct fake_dirent dotdot;
+	char dotdot_name[4];
+	struct dx_root_info info;
+	struct dx_entry entries[0];
+};
+
+struct dx_node {
+	struct fake_dirent fake;
+	struct dx_entry entries[0];
+};
+
+struct dx_countlimit {
+	__le16 limit;
+	__le16 count;
+};
+
+struct ext4_dir_entry {
+	__le32 inode;
+	__le16 rec_len;
+	__le16 name_len;
+	char name[255];
+};
+
+struct dx_tail {
+	u32 dt_reserved;
+	__le32 dt_checksum;
+};
+
+struct dx_map_entry {
+	u32 hash;
+	u16 offs;
+	u16 size;
+};
+
+struct ext4_renament {
+	struct inode *dir;
+	struct dentry *dentry;
+	struct inode *inode;
+	bool is_dir;
+	int dir_nlink_delta;
+	struct buffer_head *bh;
+	struct ext4_dir_entry_2 *de;
+	int inlined;
+	struct buffer_head *dir_bh;
+	struct ext4_dir_entry_2 *parent_de;
+	int dir_inlined;
+};
+
+typedef enum {
+	EITHER = 0,
+	INDEX = 1,
+	DIRENT = 2,
+	DIRENT_HTREE = 3,
+} dirblock_type_t;
+
+enum bio_post_read_step {
+	STEP_INITIAL = 0,
+	STEP_DECRYPT = 1,
+	STEP_VERITY = 2,
+	STEP_MAX = 3,
+};
+
+struct bio_post_read_ctx {
+	struct bio *bio;
+	struct work_struct work;
+	unsigned int cur_step;
+	unsigned int enabled_steps;
+};
+
+enum {
+	BLOCK_BITMAP = 0,
+	INODE_BITMAP = 1,
+	INODE_TABLE = 2,
+	GROUP_TABLE_COUNT = 3,
+};
+
+struct ext4_rcu_ptr {
+	struct callback_head rcu;
+	void *ptr;
+};
+
+struct ext4_new_flex_group_data {
+	struct ext4_new_group_data *groups;
+	__u16 *bg_flags;
+	ext4_group_t resize_bg;
+	ext4_group_t count;
+};
+
+typedef void (*btf_trace_ext4_other_inode_update_time)(void *, struct inode *, ino_t);
+
+typedef void (*btf_trace_ext4_free_inode)(void *, struct inode *);
+
+typedef void (*btf_trace_ext4_request_inode)(void *, struct inode *, int);
+
+typedef void (*btf_trace_ext4_allocate_inode)(void *, struct inode *, struct inode *, int);
+
+typedef void (*btf_trace_ext4_evict_inode)(void *, struct inode *);
+
+typedef void (*btf_trace_ext4_drop_inode)(void *, struct inode *, int);
+
+typedef void (*btf_trace_ext4_nfs_commit_metadata)(void *, struct inode *);
+
+typedef void (*btf_trace_ext4_mark_inode_dirty)(void *, struct inode *, unsigned long);
+
+typedef void (*btf_trace_ext4_begin_ordered_truncate)(void *, struct inode *, loff_t);
+
+typedef void (*btf_trace_ext4_write_begin)(void *, struct inode *, loff_t, unsigned int);
+
+typedef void (*btf_trace_ext4_da_write_begin)(void *, struct inode *, loff_t, unsigned int);
+
+typedef void (*btf_trace_ext4_write_end)(void *, struct inode *, loff_t, unsigned int, unsigned int);
+
+typedef void (*btf_trace_ext4_journalled_write_end)(void *, struct inode *, loff_t, unsigned int, unsigned int);
+
+typedef void (*btf_trace_ext4_da_write_end)(void *, struct inode *, loff_t, unsigned int, unsigned int);
+
+typedef void (*btf_trace_ext4_writepages)(void *, struct inode *, struct writeback_control *);
+
+typedef void (*btf_trace_ext4_da_write_pages)(void *, struct inode *, unsigned long, struct writeback_control *);
+
+typedef void (*btf_trace_ext4_da_write_pages_extent)(void *, struct inode *, struct ext4_map_blocks *);
+
+typedef void (*btf_trace_ext4_writepages_result)(void *, struct inode *, struct writeback_control *, int, int);
+
+typedef void (*btf_trace_ext4_read_folio)(void *, struct inode *, struct folio *);
+
+typedef void (*btf_trace_ext4_release_folio)(void *, struct inode *, struct folio *);
+
+typedef void (*btf_trace_ext4_invalidate_folio)(void *, struct folio *, size_t, size_t);
+
+typedef void (*btf_trace_ext4_journalled_invalidate_folio)(void *, struct folio *, size_t, size_t);
+
+typedef void (*btf_trace_ext4_discard_blocks)(void *, struct super_block *, unsigned long long, unsigned long long);
+
+typedef void (*btf_trace_ext4_mb_new_inode_pa)(void *, struct ext4_allocation_context *, struct ext4_prealloc_space *);
+
+typedef void (*btf_trace_ext4_mb_new_group_pa)(void *, struct ext4_allocation_context *, struct ext4_prealloc_space *);
+
+typedef void (*btf_trace_ext4_mb_release_inode_pa)(void *, struct ext4_prealloc_space *, unsigned long long, unsigned int);
+
+typedef void (*btf_trace_ext4_mb_release_group_pa)(void *, struct super_block *, struct ext4_prealloc_space *);
+
+typedef void (*btf_trace_ext4_discard_preallocations)(void *, struct inode *, unsigned int, unsigned int);
+
+typedef void (*btf_trace_ext4_mb_discard_preallocations)(void *, struct super_block *, int);
+
+typedef void (*btf_trace_ext4_request_blocks)(void *, struct ext4_allocation_request *);
+
+typedef void (*btf_trace_ext4_allocate_blocks)(void *, struct ext4_allocation_request *, unsigned long long);
+
+typedef void (*btf_trace_ext4_free_blocks)(void *, struct inode *, __u64, unsigned long, int);
+
+typedef void (*btf_trace_ext4_sync_file_enter)(void *, struct file *, int);
+
+typedef void (*btf_trace_ext4_sync_file_exit)(void *, struct inode *, int);
+
+typedef void (*btf_trace_ext4_sync_fs)(void *, struct super_block *, int);
+
+typedef void (*btf_trace_ext4_alloc_da_blocks)(void *, struct inode *);
+
+typedef void (*btf_trace_ext4_mballoc_alloc)(void *, struct ext4_allocation_context *);
+
+typedef void (*btf_trace_ext4_mballoc_prealloc)(void *, struct ext4_allocation_context *);
+
+typedef void (*btf_trace_ext4_mballoc_discard)(void *, struct super_block *, struct inode *, ext4_group_t, ext4_grpblk_t, ext4_grpblk_t);
+
+typedef void (*btf_trace_ext4_mballoc_free)(void *, struct super_block *, struct inode *, ext4_group_t, ext4_grpblk_t, ext4_grpblk_t);
+
+typedef void (*btf_trace_ext4_forget)(void *, struct inode *, int, __u64);
+
+typedef void (*btf_trace_ext4_da_update_reserve_space)(void *, struct inode *, int, int);
+
+typedef void (*btf_trace_ext4_da_reserve_space)(void *, struct inode *);
+
+typedef void (*btf_trace_ext4_da_release_space)(void *, struct inode *, int);
+
+typedef void (*btf_trace_ext4_mb_bitmap_load)(void *, struct super_block *, unsigned long);
+
+typedef void (*btf_trace_ext4_mb_buddy_bitmap_load)(void *, struct super_block *, unsigned long);
+
+typedef void (*btf_trace_ext4_load_inode_bitmap)(void *, struct super_block *, unsigned long);
+
+typedef void (*btf_trace_ext4_read_block_bitmap_load)(void *, struct super_block *, unsigned long, bool);
+
+typedef void (*btf_trace_ext4_fallocate_enter)(void *, struct inode *, loff_t, loff_t, int);
+
+typedef void (*btf_trace_ext4_punch_hole)(void *, struct inode *, loff_t, loff_t, int);
+
+typedef void (*btf_trace_ext4_zero_range)(void *, struct inode *, loff_t, loff_t, int);
+
+typedef void (*btf_trace_ext4_fallocate_exit)(void *, struct inode *, loff_t, unsigned int, int);
+
+typedef void (*btf_trace_ext4_unlink_enter)(void *, struct inode *, struct dentry *);
+
+typedef void (*btf_trace_ext4_unlink_exit)(void *, struct dentry *, int);
+
+typedef void (*btf_trace_ext4_truncate_enter)(void *, struct inode *);
+
+typedef void (*btf_trace_ext4_truncate_exit)(void *, struct inode *);
+
+typedef void (*btf_trace_ext4_ext_convert_to_initialized_enter)(void *, struct inode *, struct ext4_map_blocks *, struct ext4_extent *);
+
+typedef void (*btf_trace_ext4_ext_convert_to_initialized_fastpath)(void *, struct inode *, struct ext4_map_blocks *, struct ext4_extent *, struct ext4_extent *);
+
+typedef void (*btf_trace_ext4_ext_map_blocks_enter)(void *, struct inode *, ext4_lblk_t, unsigned int, unsigned int);
+
+typedef void (*btf_trace_ext4_ind_map_blocks_enter)(void *, struct inode *, ext4_lblk_t, unsigned int, unsigned int);
+
+typedef void (*btf_trace_ext4_ext_map_blocks_exit)(void *, struct inode *, unsigned int, struct ext4_map_blocks *, int);
+
+typedef void (*btf_trace_ext4_ind_map_blocks_exit)(void *, struct inode *, unsigned int, struct ext4_map_blocks *, int);
+
+typedef void (*btf_trace_ext4_ext_load_extent)(void *, struct inode *, ext4_lblk_t, ext4_fsblk_t);
+
+typedef void (*btf_trace_ext4_load_inode)(void *, struct super_block *, unsigned long);
+
+typedef void (*btf_trace_ext4_journal_start_sb)(void *, struct super_block *, int, int, int, int, unsigned long);
+
+typedef void (*btf_trace_ext4_journal_start_inode)(void *, struct inode *, int, int, int, int, unsigned long);
+
+typedef void (*btf_trace_ext4_journal_start_reserved)(void *, struct super_block *, int, unsigned long);
+
+typedef void (*btf_trace_ext4_trim_extent)(void *, struct super_block *, ext4_group_t, ext4_grpblk_t, ext4_grpblk_t);
+
+typedef void (*btf_trace_ext4_trim_all_free)(void *, struct super_block *, ext4_group_t, ext4_grpblk_t, ext4_grpblk_t);
+
+typedef void (*btf_trace_ext4_ext_handle_unwritten_extents)(void *, struct inode *, struct ext4_map_blocks *, int, unsigned int, ext4_fsblk_t);
+
+typedef void (*btf_trace_ext4_get_implied_cluster_alloc_exit)(void *, struct super_block *, struct ext4_map_blocks *, int);
+
+typedef void (*btf_trace_ext4_ext_show_extent)(void *, struct inode *, ext4_lblk_t, ext4_fsblk_t, unsigned short);
+
+typedef void (*btf_trace_ext4_remove_blocks)(void *, struct inode *, struct ext4_extent *, ext4_lblk_t, ext4_fsblk_t, struct partial_cluster *);
+
+typedef void (*btf_trace_ext4_ext_rm_leaf)(void *, struct inode *, ext4_lblk_t, struct ext4_extent *, struct partial_cluster *);
+
+typedef void (*btf_trace_ext4_ext_rm_idx)(void *, struct inode *, ext4_fsblk_t);
+
+typedef void (*btf_trace_ext4_ext_remove_space)(void *, struct inode *, ext4_lblk_t, ext4_lblk_t, int);
+
+typedef void (*btf_trace_ext4_ext_remove_space_done)(void *, struct inode *, ext4_lblk_t, ext4_lblk_t, int, struct partial_cluster *, __le16);
+
+typedef void (*btf_trace_ext4_es_insert_extent)(void *, struct inode *, struct extent_status *);
+
+typedef void (*btf_trace_ext4_es_cache_extent)(void *, struct inode *, struct extent_status *);
+
+typedef void (*btf_trace_ext4_es_remove_extent)(void *, struct inode *, ext4_lblk_t, ext4_lblk_t);
+
+typedef void (*btf_trace_ext4_es_find_extent_range_enter)(void *, struct inode *, ext4_lblk_t);
+
+typedef void (*btf_trace_ext4_es_find_extent_range_exit)(void *, struct inode *, struct extent_status *);
+
+typedef void (*btf_trace_ext4_es_lookup_extent_enter)(void *, struct inode *, ext4_lblk_t);
+
+typedef void (*btf_trace_ext4_es_lookup_extent_exit)(void *, struct inode *, struct extent_status *, int);
+
+typedef void (*btf_trace_ext4_es_shrink_count)(void *, struct super_block *, int, int);
+
+typedef void (*btf_trace_ext4_es_shrink_scan_enter)(void *, struct super_block *, int, int);
+
+typedef void (*btf_trace_ext4_es_shrink_scan_exit)(void *, struct super_block *, int, int);
+
+typedef void (*btf_trace_ext4_collapse_range)(void *, struct inode *, loff_t, loff_t);
+
+typedef void (*btf_trace_ext4_insert_range)(void *, struct inode *, loff_t, loff_t);
+
+typedef void (*btf_trace_ext4_es_shrink)(void *, struct super_block *, int, u64, int, int);
+
+typedef void (*btf_trace_ext4_es_insert_delayed_block)(void *, struct inode *, struct extent_status *, bool);
+
+typedef void (*btf_trace_ext4_fsmap_low_key)(void *, struct super_block *, u32, u32, u64, u64, u64);
+
+typedef void (*btf_trace_ext4_fsmap_high_key)(void *, struct super_block *, u32, u32, u64, u64, u64);
+
+typedef void (*btf_trace_ext4_fsmap_mapping)(void *, struct super_block *, u32, u32, u64, u64, u64);
+
+typedef void (*btf_trace_ext4_getfsmap_low_key)(void *, struct super_block *, struct ext4_fsmap *);
+
+typedef void (*btf_trace_ext4_getfsmap_high_key)(void *, struct super_block *, struct ext4_fsmap *);
+
+typedef void (*btf_trace_ext4_getfsmap_mapping)(void *, struct super_block *, struct ext4_fsmap *);
+
+typedef void (*btf_trace_ext4_shutdown)(void *, struct super_block *, unsigned long);
+
+typedef void (*btf_trace_ext4_error)(void *, struct super_block *, const char *, unsigned int);
+
+typedef void (*btf_trace_ext4_prefetch_bitmaps)(void *, struct super_block *, ext4_group_t, ext4_group_t, unsigned int);
+
+typedef void (*btf_trace_ext4_lazy_itable_init)(void *, struct super_block *, ext4_group_t);
+
+typedef void (*btf_trace_ext4_fc_replay_scan)(void *, struct super_block *, int, int);
+
+typedef void (*btf_trace_ext4_fc_replay)(void *, struct super_block *, int, int, int, int);
+
+typedef void (*btf_trace_ext4_fc_commit_start)(void *, struct super_block *, tid_t);
+
+typedef void (*btf_trace_ext4_fc_commit_stop)(void *, struct super_block *, int, int, tid_t);
+
+typedef void (*btf_trace_ext4_fc_stats)(void *, struct super_block *);
+
+typedef void (*btf_trace_ext4_fc_track_create)(void *, handle_t *, struct inode *, struct dentry *, int);
+
+typedef void (*btf_trace_ext4_fc_track_link)(void *, handle_t *, struct inode *, struct dentry *, int);
+
+typedef void (*btf_trace_ext4_fc_track_unlink)(void *, handle_t *, struct inode *, struct dentry *, int);
+
+typedef void (*btf_trace_ext4_fc_track_inode)(void *, handle_t *, struct inode *, int);
+
+typedef void (*btf_trace_ext4_fc_track_range)(void *, handle_t *, struct inode *, long, long, int);
+
+typedef void (*btf_trace_ext4_fc_cleanup)(void *, journal_t *, int, tid_t);
+
+typedef void (*btf_trace_ext4_update_sb)(void *, struct super_block *, ext4_fsblk_t, unsigned int);
+
+struct ext4_lazy_init {
+	unsigned long li_state;
+	struct list_head li_request_list;
+	struct mutex li_list_mtx;
+};
+
+struct ext4_err_translation {
+	int code;
+	int errno;
+};
+
+struct mount_opts {
+	int token;
+	int mount_opt;
+	int flags;
+};
+
+struct ext4_sb_encodings {
+	__u16 magic;
+	char *name;
+	unsigned int version;
+};
+
+enum stat_group {
+	STAT_READ = 0,
+	STAT_WRITE = 1,
+	STAT_DISCARD = 2,
+	STAT_FLUSH = 3,
+	NR_STAT_GROUPS = 4,
+};
+
+enum {
+	Opt_bsd_df = 0,
+	Opt_minix_df = 1,
+	Opt_grpid = 2,
+	Opt_nogrpid = 3,
+	Opt_resgid = 4,
+	Opt_resuid = 5,
+	Opt_sb = 6,
+	Opt_nouid32 = 7,
+	Opt_debug = 8,
+	Opt_removed = 9,
+	Opt_user_xattr = 10,
+	Opt_acl = 11,
+	Opt_auto_da_alloc = 12,
+	Opt_noauto_da_alloc = 13,
+	Opt_noload = 14,
+	Opt_commit = 15,
+	Opt_min_batch_time = 16,
+	Opt_max_batch_time = 17,
+	Opt_journal_dev = 18,
+	Opt_journal_path = 19,
+	Opt_journal_checksum = 20,
+	Opt_journal_async_commit = 21,
+	Opt_abort = 22,
+	Opt_data_journal = 23,
+	Opt_data_ordered = 24,
+	Opt_data_writeback = 25,
+	Opt_data_err_abort = 26,
+	Opt_data_err_ignore = 27,
+	Opt_test_dummy_encryption = 28,
+	Opt_inlinecrypt = 29,
+	Opt_usrjquota = 30,
+	Opt_grpjquota = 31,
+	Opt_quota___2 = 32,
+	Opt_noquota = 33,
+	Opt_barrier = 34,
+	Opt_nobarrier = 35,
+	Opt_err___2 = 36,
+	Opt_usrquota___2 = 37,
+	Opt_grpquota___2 = 38,
+	Opt_prjquota = 39,
+	Opt_dax = 40,
+	Opt_dax_always = 41,
+	Opt_dax_inode = 42,
+	Opt_dax_never = 43,
+	Opt_stripe = 44,
+	Opt_delalloc = 45,
+	Opt_nodelalloc = 46,
+	Opt_warn_on_error = 47,
+	Opt_nowarn_on_error = 48,
+	Opt_mblk_io_submit = 49,
+	Opt_debug_want_extra_isize = 50,
+	Opt_nomblk_io_submit = 51,
+	Opt_block_validity = 52,
+	Opt_noblock_validity = 53,
+	Opt_inode_readahead_blks = 54,
+	Opt_journal_ioprio = 55,
+	Opt_dioread_nolock = 56,
+	Opt_dioread_lock = 57,
+	Opt_discard = 58,
+	Opt_nodiscard = 59,
+	Opt_init_itable = 60,
+	Opt_noinit_itable = 61,
+	Opt_max_dir_size_kb = 62,
+	Opt_nojournal_checksum = 63,
+	Opt_nombcache = 64,
+	Opt_no_prefetch_block_bitmaps = 65,
+	Opt_mb_optimize_scan = 66,
+	Opt_errors = 67,
+	Opt_data = 68,
+	Opt_data_err = 69,
+	Opt_jqfmt = 70,
+	Opt_dax_type = 71,
+};
+
+enum {
+	IOPRIO_CLASS_NONE = 0,
+	IOPRIO_CLASS_RT = 1,
+	IOPRIO_CLASS_BE = 2,
+	IOPRIO_CLASS_IDLE = 3,
+	IOPRIO_CLASS_INVALID = 7,
+};
+
+enum {
+	IOPRIO_HINT_NONE = 0,
+	IOPRIO_HINT_DEV_DURATION_LIMIT_1 = 1,
+	IOPRIO_HINT_DEV_DURATION_LIMIT_2 = 2,
+	IOPRIO_HINT_DEV_DURATION_LIMIT_3 = 3,
+	IOPRIO_HINT_DEV_DURATION_LIMIT_4 = 4,
+	IOPRIO_HINT_DEV_DURATION_LIMIT_5 = 5,
+	IOPRIO_HINT_DEV_DURATION_LIMIT_6 = 6,
+	IOPRIO_HINT_DEV_DURATION_LIMIT_7 = 7,
+};
+
+enum {
+	I_DATA_SEM_NORMAL = 0,
+	I_DATA_SEM_OTHER = 1,
+	I_DATA_SEM_QUOTA = 2,
+	I_DATA_SEM_EA = 3,
+};
+
+struct trace_event_raw_ext4_other_inode_update_time {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	ino_t orig_ino;
+	uid_t uid;
+	gid_t gid;
+	__u16 mode;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_free_inode {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	uid_t uid;
+	gid_t gid;
+	__u64 blocks;
+	__u16 mode;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_request_inode {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t dir;
+	__u16 mode;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_allocate_inode {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	ino_t dir;
+	__u16 mode;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_evict_inode {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	int nlink;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_drop_inode {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	int drop;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_nfs_commit_metadata {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_mark_inode_dirty {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	unsigned long ip;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_begin_ordered_truncate {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	loff_t new_size;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4__write_begin {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	loff_t pos;
+	unsigned int len;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4__write_end {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	loff_t pos;
+	unsigned int len;
+	unsigned int copied;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_writepages {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	long nr_to_write;
+	long pages_skipped;
+	loff_t range_start;
+	loff_t range_end;
+	unsigned long writeback_index;
+	int sync_mode;
+	char for_kupdate;
+	char range_cyclic;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_da_write_pages {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	unsigned long first_page;
+	long nr_to_write;
+	int sync_mode;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_da_write_pages_extent {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	__u64 lblk;
+	__u32 len;
+	__u32 flags;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_writepages_result {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	int ret;
+	int pages_written;
+	long pages_skipped;
+	unsigned long writeback_index;
+	int sync_mode;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4__folio_op {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	unsigned long index;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_invalidate_folio_op {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	unsigned long index;
+	size_t offset;
+	size_t length;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_discard_blocks {
+	struct trace_entry ent;
+	dev_t dev;
+	__u64 blk;
+	__u64 count;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4__mb_new_pa {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	__u64 pa_pstart;
+	__u64 pa_lstart;
+	__u32 pa_len;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_mb_release_inode_pa {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	__u64 block;
+	__u32 count;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_mb_release_group_pa {
+	struct trace_entry ent;
+	dev_t dev;
+	__u64 pa_pstart;
+	__u32 pa_len;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_discard_preallocations {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	unsigned int len;
+	unsigned int needed;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_mb_discard_preallocations {
+	struct trace_entry ent;
+	dev_t dev;
+	int needed;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_request_blocks {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	unsigned int len;
+	__u32 logical;
+	__u32 lleft;
+	__u32 lright;
+	__u64 goal;
+	__u64 pleft;
+	__u64 pright;
+	unsigned int flags;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_allocate_blocks {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	__u64 block;
+	unsigned int len;
+	__u32 logical;
+	__u32 lleft;
+	__u32 lright;
+	__u64 goal;
+	__u64 pleft;
+	__u64 pright;
+	unsigned int flags;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_free_blocks {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	__u64 block;
+	unsigned long count;
+	int flags;
+	__u16 mode;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_sync_file_enter {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	ino_t parent;
+	int datasync;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_sync_file_exit {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_sync_fs {
+	struct trace_entry ent;
+	dev_t dev;
+	int wait;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_alloc_da_blocks {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	unsigned int data_blocks;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_mballoc_alloc {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	__u32 orig_logical;
+	int orig_start;
+	__u32 orig_group;
+	int orig_len;
+	__u32 goal_logical;
+	int goal_start;
+	__u32 goal_group;
+	int goal_len;
+	__u32 result_logical;
+	int result_start;
+	__u32 result_group;
+	int result_len;
+	__u16 found;
+	__u16 groups;
+	__u16 buddy;
+	__u16 flags;
+	__u16 tail;
+	__u8 cr;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_mballoc_prealloc {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	__u32 orig_logical;
+	int orig_start;
+	__u32 orig_group;
+	int orig_len;
+	__u32 result_logical;
+	int result_start;
+	__u32 result_group;
+	int result_len;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4__mballoc {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	int result_start;
+	__u32 result_group;
+	int result_len;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_forget {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	__u64 block;
+	int is_metadata;
+	__u16 mode;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_da_update_reserve_space {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	__u64 i_blocks;
+	int used_blocks;
+	int reserved_data_blocks;
+	int quota_claim;
+	__u16 mode;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_da_reserve_space {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	__u64 i_blocks;
+	int reserved_data_blocks;
+	__u16 mode;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_da_release_space {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	__u64 i_blocks;
+	int freed_blocks;
+	int reserved_data_blocks;
+	__u16 mode;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4__bitmap_load {
+	struct trace_entry ent;
+	dev_t dev;
+	__u32 group;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_read_block_bitmap_load {
+	struct trace_entry ent;
+	dev_t dev;
+	__u32 group;
+	bool prefetch;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4__fallocate_mode {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	loff_t offset;
+	loff_t len;
+	int mode;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_fallocate_exit {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	loff_t pos;
+	unsigned int blocks;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_unlink_enter {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	ino_t parent;
+	loff_t size;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_unlink_exit {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4__truncate {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	__u64 blocks;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_ext_convert_to_initialized_enter {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	ext4_lblk_t m_lblk;
+	unsigned int m_len;
+	ext4_lblk_t u_lblk;
+	unsigned int u_len;
+	ext4_fsblk_t u_pblk;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_ext_convert_to_initialized_fastpath {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	ext4_lblk_t m_lblk;
+	unsigned int m_len;
+	ext4_lblk_t u_lblk;
+	unsigned int u_len;
+	ext4_fsblk_t u_pblk;
+	ext4_lblk_t i_lblk;
+	unsigned int i_len;
+	ext4_fsblk_t i_pblk;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4__map_blocks_enter {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	ext4_lblk_t lblk;
+	unsigned int len;
+	unsigned int flags;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4__map_blocks_exit {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	unsigned int flags;
+	ext4_fsblk_t pblk;
+	ext4_lblk_t lblk;
+	unsigned int len;
+	unsigned int mflags;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_ext_load_extent {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	ext4_fsblk_t pblk;
+	ext4_lblk_t lblk;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_load_inode {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_journal_start_sb {
+	struct trace_entry ent;
+	dev_t dev;
+	unsigned long ip;
+	int blocks;
+	int rsv_blocks;
+	int revoke_creds;
+	int type;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_journal_start_inode {
+	struct trace_entry ent;
+	unsigned long ino;
+	dev_t dev;
+	unsigned long ip;
+	int blocks;
+	int rsv_blocks;
+	int revoke_creds;
+	int type;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_journal_start_reserved {
+	struct trace_entry ent;
+	dev_t dev;
+	unsigned long ip;
+	int blocks;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4__trim {
+	struct trace_entry ent;
+	int dev_major;
+	int dev_minor;
+	__u32 group;
+	int start;
+	int len;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_ext_handle_unwritten_extents {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	int flags;
+	ext4_lblk_t lblk;
+	ext4_fsblk_t pblk;
+	unsigned int len;
+	unsigned int allocated;
+	ext4_fsblk_t newblk;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_get_implied_cluster_alloc_exit {
+	struct trace_entry ent;
+	dev_t dev;
+	unsigned int flags;
+	ext4_lblk_t lblk;
+	ext4_fsblk_t pblk;
+	unsigned int len;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_ext_show_extent {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	ext4_fsblk_t pblk;
+	ext4_lblk_t lblk;
+	unsigned short len;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_remove_blocks {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	ext4_lblk_t from;
+	ext4_lblk_t to;
+	ext4_fsblk_t ee_pblk;
+	ext4_lblk_t ee_lblk;
+	unsigned short ee_len;
+	ext4_fsblk_t pc_pclu;
+	ext4_lblk_t pc_lblk;
+	int pc_state;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_ext_rm_leaf {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	ext4_lblk_t start;
+	ext4_lblk_t ee_lblk;
+	ext4_fsblk_t ee_pblk;
+	short ee_len;
+	ext4_fsblk_t pc_pclu;
+	ext4_lblk_t pc_lblk;
+	int pc_state;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_ext_rm_idx {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	ext4_fsblk_t pblk;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_ext_remove_space {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	ext4_lblk_t start;
+	ext4_lblk_t end;
+	int depth;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_ext_remove_space_done {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	ext4_lblk_t start;
+	ext4_lblk_t end;
+	int depth;
+	ext4_fsblk_t pc_pclu;
+	ext4_lblk_t pc_lblk;
+	int pc_state;
+	unsigned short eh_entries;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4__es_extent {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	ext4_lblk_t lblk;
+	ext4_lblk_t len;
+	ext4_fsblk_t pblk;
+	char status;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_es_remove_extent {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	loff_t lblk;
+	loff_t len;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_es_find_extent_range_enter {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	ext4_lblk_t lblk;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_es_find_extent_range_exit {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	ext4_lblk_t lblk;
+	ext4_lblk_t len;
+	ext4_fsblk_t pblk;
+	char status;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_es_lookup_extent_enter {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	ext4_lblk_t lblk;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_es_lookup_extent_exit {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	ext4_lblk_t lblk;
+	ext4_lblk_t len;
+	ext4_fsblk_t pblk;
+	char status;
+	int found;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4__es_shrink_enter {
+	struct trace_entry ent;
+	dev_t dev;
+	int nr_to_scan;
+	int cache_cnt;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_es_shrink_scan_exit {
+	struct trace_entry ent;
+	dev_t dev;
+	int nr_shrunk;
+	int cache_cnt;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_collapse_range {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	loff_t offset;
+	loff_t len;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_insert_range {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	loff_t offset;
+	loff_t len;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_es_shrink {
+	struct trace_entry ent;
+	dev_t dev;
+	int nr_shrunk;
+	unsigned long long scan_time;
+	int nr_skipped;
+	int retried;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_es_insert_delayed_block {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	ext4_lblk_t lblk;
+	ext4_lblk_t len;
+	ext4_fsblk_t pblk;
+	char status;
+	bool allocated;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_fsmap_class {
+	struct trace_entry ent;
+	dev_t dev;
+	dev_t keydev;
+	u32 agno;
+	u64 bno;
+	u64 len;
+	u64 owner;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_getfsmap_class {
+	struct trace_entry ent;
+	dev_t dev;
+	dev_t keydev;
+	u64 block;
+	u64 len;
+	u64 owner;
+	u64 flags;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_shutdown {
+	struct trace_entry ent;
+	dev_t dev;
+	unsigned int flags;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_error {
+	struct trace_entry ent;
+	dev_t dev;
+	const char *function;
+	unsigned int line;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_prefetch_bitmaps {
+	struct trace_entry ent;
+	dev_t dev;
+	__u32 group;
+	__u32 next;
+	__u32 ios;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_lazy_itable_init {
+	struct trace_entry ent;
+	dev_t dev;
+	__u32 group;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_fc_replay_scan {
+	struct trace_entry ent;
+	dev_t dev;
+	int error;
+	int off;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_fc_replay {
+	struct trace_entry ent;
+	dev_t dev;
+	int tag;
+	int ino;
+	int priv1;
+	int priv2;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_fc_commit_start {
+	struct trace_entry ent;
+	dev_t dev;
+	tid_t tid;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_fc_commit_stop {
+	struct trace_entry ent;
+	dev_t dev;
+	int nblks;
+	int reason;
+	int num_fc;
+	int num_fc_ineligible;
+	int nblks_agg;
+	tid_t tid;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_fc_stats {
+	struct trace_entry ent;
+	dev_t dev;
+	unsigned int fc_ineligible_rc[10];
+	unsigned long fc_commits;
+	unsigned long fc_ineligible_commits;
+	unsigned long fc_numblks;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_fc_track_dentry {
+	struct trace_entry ent;
+	dev_t dev;
+	tid_t t_tid;
+	ino_t i_ino;
+	tid_t i_sync_tid;
+	int error;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_fc_track_inode {
+	struct trace_entry ent;
+	dev_t dev;
+	tid_t t_tid;
+	ino_t i_ino;
+	tid_t i_sync_tid;
+	int error;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_fc_track_range {
+	struct trace_entry ent;
+	dev_t dev;
+	tid_t t_tid;
+	ino_t i_ino;
+	tid_t i_sync_tid;
+	long start;
+	long end;
+	int error;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_fc_cleanup {
+	struct trace_entry ent;
+	dev_t dev;
+	int j_fc_off;
+	int full;
+	tid_t tid;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_update_sb {
+	struct trace_entry ent;
+	dev_t dev;
+	ext4_fsblk_t fsblk;
+	unsigned int flags;
+	char __data[0];
+};
+
+struct ext4_journal_cb_entry {
+	struct list_head jce_list;
+	void (*jce_func)(struct super_block *, struct ext4_journal_cb_entry *, int);
+};
+
+struct ext4_fs_context {
+	char *s_qf_names[3];
+	struct fscrypt_dummy_policy dummy_enc_policy;
+	int s_jquota_fmt;
+	unsigned short qname_spec;
+	unsigned long vals_s_flags;
+	unsigned long mask_s_flags;
+	unsigned long journal_devnum;
+	unsigned long s_commit_interval;
+	unsigned long s_stripe;
+	unsigned int s_inode_readahead_blks;
+	unsigned int s_want_extra_isize;
+	unsigned int s_li_wait_mult;
+	unsigned int s_max_dir_size_kb;
+	unsigned int journal_ioprio;
+	unsigned int vals_s_mount_opt;
+	unsigned int mask_s_mount_opt;
+	unsigned int vals_s_mount_opt2;
+	unsigned int mask_s_mount_opt2;
+	unsigned int opt_flags;
+	unsigned int spec;
+	u32 s_max_batch_time;
+	u32 s_min_batch_time;
+	kuid_t s_resuid;
+	kgid_t s_resgid;
+	ext4_fsblk_t s_sb_block;
+};
+
+struct ext4_mount_options {
+	unsigned long s_mount_opt;
+	unsigned long s_mount_opt2;
+	kuid_t s_resuid;
+	kgid_t s_resgid;
+	unsigned long s_commit_interval;
+	u32 s_min_batch_time;
+	u32 s_max_batch_time;
+	int s_jquota_fmt;
+	char *s_qf_names[3];
+};
+
+struct trace_event_data_offsets_ext4_other_inode_update_time {};
+
+struct trace_event_data_offsets_ext4_free_inode {};
+
+struct trace_event_data_offsets_ext4_request_inode {};
+
+struct trace_event_data_offsets_ext4_allocate_inode {};
+
+struct trace_event_data_offsets_ext4_evict_inode {};
+
+struct trace_event_data_offsets_ext4_drop_inode {};
+
+struct trace_event_data_offsets_ext4_nfs_commit_metadata {};
+
+struct trace_event_data_offsets_ext4_mark_inode_dirty {};
+
+struct trace_event_data_offsets_ext4_begin_ordered_truncate {};
+
+struct trace_event_data_offsets_ext4__write_begin {};
+
+struct trace_event_data_offsets_ext4__write_end {};
+
+struct trace_event_data_offsets_ext4_writepages {};
+
+struct trace_event_data_offsets_ext4_da_write_pages {};
+
+struct trace_event_data_offsets_ext4_da_write_pages_extent {};
+
+struct trace_event_data_offsets_ext4_writepages_result {};
+
+struct trace_event_data_offsets_ext4__folio_op {};
+
+struct trace_event_data_offsets_ext4_invalidate_folio_op {};
+
+struct trace_event_data_offsets_ext4_discard_blocks {};
+
+struct trace_event_data_offsets_ext4__mb_new_pa {};
+
+struct trace_event_data_offsets_ext4_mb_release_inode_pa {};
+
+struct trace_event_data_offsets_ext4_mb_release_group_pa {};
+
+struct trace_event_data_offsets_ext4_discard_preallocations {};
+
+struct trace_event_data_offsets_ext4_mb_discard_preallocations {};
+
+struct trace_event_data_offsets_ext4_request_blocks {};
+
+struct trace_event_data_offsets_ext4_allocate_blocks {};
+
+struct trace_event_data_offsets_ext4_free_blocks {};
+
+struct trace_event_data_offsets_ext4_sync_file_enter {};
+
+struct trace_event_data_offsets_ext4_sync_file_exit {};
+
+struct trace_event_data_offsets_ext4_sync_fs {};
+
+struct trace_event_data_offsets_ext4_alloc_da_blocks {};
+
+struct trace_event_data_offsets_ext4_mballoc_alloc {};
+
+struct trace_event_data_offsets_ext4_mballoc_prealloc {};
+
+struct trace_event_data_offsets_ext4__mballoc {};
+
+struct trace_event_data_offsets_ext4_forget {};
+
+struct trace_event_data_offsets_ext4_da_update_reserve_space {};
+
+struct trace_event_data_offsets_ext4_da_reserve_space {};
+
+struct trace_event_data_offsets_ext4_da_release_space {};
+
+struct trace_event_data_offsets_ext4__bitmap_load {};
+
+struct trace_event_data_offsets_ext4_read_block_bitmap_load {};
+
+struct trace_event_data_offsets_ext4__fallocate_mode {};
+
+struct trace_event_data_offsets_ext4_fallocate_exit {};
+
+struct trace_event_data_offsets_ext4_unlink_enter {};
+
+struct trace_event_data_offsets_ext4_unlink_exit {};
+
+struct trace_event_data_offsets_ext4__truncate {};
+
+struct trace_event_data_offsets_ext4_ext_convert_to_initialized_enter {};
+
+struct trace_event_data_offsets_ext4_ext_convert_to_initialized_fastpath {};
+
+struct trace_event_data_offsets_ext4__map_blocks_enter {};
+
+struct trace_event_data_offsets_ext4__map_blocks_exit {};
+
+struct trace_event_data_offsets_ext4_ext_load_extent {};
+
+struct trace_event_data_offsets_ext4_load_inode {};
+
+struct trace_event_data_offsets_ext4_journal_start_sb {};
+
+struct trace_event_data_offsets_ext4_journal_start_inode {};
+
+struct trace_event_data_offsets_ext4_journal_start_reserved {};
+
+struct trace_event_data_offsets_ext4__trim {};
+
+struct trace_event_data_offsets_ext4_ext_handle_unwritten_extents {};
+
+struct trace_event_data_offsets_ext4_get_implied_cluster_alloc_exit {};
+
+struct trace_event_data_offsets_ext4_ext_show_extent {};
+
+struct trace_event_data_offsets_ext4_remove_blocks {};
+
+struct trace_event_data_offsets_ext4_ext_rm_leaf {};
+
+struct trace_event_data_offsets_ext4_ext_rm_idx {};
+
+struct trace_event_data_offsets_ext4_ext_remove_space {};
+
+struct trace_event_data_offsets_ext4_ext_remove_space_done {};
+
+struct trace_event_data_offsets_ext4__es_extent {};
+
+struct trace_event_data_offsets_ext4_es_remove_extent {};
+
+struct trace_event_data_offsets_ext4_es_find_extent_range_enter {};
+
+struct trace_event_data_offsets_ext4_es_find_extent_range_exit {};
+
+struct trace_event_data_offsets_ext4_es_lookup_extent_enter {};
+
+struct trace_event_data_offsets_ext4_es_lookup_extent_exit {};
+
+struct trace_event_data_offsets_ext4__es_shrink_enter {};
+
+struct trace_event_data_offsets_ext4_es_shrink_scan_exit {};
+
+struct trace_event_data_offsets_ext4_collapse_range {};
+
+struct trace_event_data_offsets_ext4_insert_range {};
+
+struct trace_event_data_offsets_ext4_es_shrink {};
+
+struct trace_event_data_offsets_ext4_es_insert_delayed_block {};
+
+struct trace_event_data_offsets_ext4_fsmap_class {};
+
+struct trace_event_data_offsets_ext4_getfsmap_class {};
+
+struct trace_event_data_offsets_ext4_shutdown {};
+
+struct trace_event_data_offsets_ext4_error {};
+
+struct trace_event_data_offsets_ext4_prefetch_bitmaps {};
+
+struct trace_event_data_offsets_ext4_lazy_itable_init {};
+
+struct trace_event_data_offsets_ext4_fc_replay_scan {};
+
+struct trace_event_data_offsets_ext4_fc_replay {};
+
+struct trace_event_data_offsets_ext4_fc_commit_start {};
+
+struct trace_event_data_offsets_ext4_fc_commit_stop {};
+
+struct trace_event_data_offsets_ext4_fc_stats {};
+
+struct trace_event_data_offsets_ext4_fc_track_dentry {};
+
+struct trace_event_data_offsets_ext4_fc_track_inode {};
+
+struct trace_event_data_offsets_ext4_fc_track_range {};
+
+struct trace_event_data_offsets_ext4_fc_cleanup {};
+
+struct trace_event_data_offsets_ext4_update_sb {};
+
+struct ext4_attr {
+	struct attribute attr;
+	short attr_id;
+	short attr_ptr;
+	unsigned short attr_size;
+	union {
+		int offset;
+		void *explicit_ptr;
+	} u;
+};
+
+enum {
+	attr_noop = 0,
+	attr_delayed_allocation_blocks = 1,
+	attr_session_write_kbytes = 2,
+	attr_lifetime_write_kbytes = 3,
+	attr_reserved_clusters = 4,
+	attr_sra_exceeded_retry_limit = 5,
+	attr_inode_readahead = 6,
+	attr_trigger_test_error = 7,
+	attr_first_error_time = 8,
+	attr_last_error_time = 9,
+	attr_feature = 10,
+	attr_pointer_ui = 11,
+	attr_pointer_ul = 12,
+	attr_pointer_u64 = 13,
+	attr_pointer_u8 = 14,
+	attr_pointer_string = 15,
+	attr_pointer_atomic = 16,
+	attr_journal_task = 17,
+};
+
+enum {
+	ptr_explicit = 0,
+	ptr_ext4_sb_info_offset = 1,
+	ptr_ext4_super_block_offset = 2,
+};
+
+struct ext4_xattr_header {
+	__le32 h_magic;
+	__le32 h_refcount;
+	__le32 h_blocks;
+	__le32 h_hash;
+	__le32 h_checksum;
+	__u32 h_reserved[3];
+};
+
+struct ext4_xattr_block_find {
+	struct ext4_xattr_search s;
+	struct buffer_head *bh;
+};
+
+enum {
+	EXT4_FC_STATUS_OK = 0,
+	EXT4_FC_STATUS_INELIGIBLE = 1,
+	EXT4_FC_STATUS_SKIPPED = 2,
+	EXT4_FC_STATUS_FAILED = 3,
+};
+
+struct ext4_fc_dentry_update {
+	int fcd_op;
+	int fcd_parent;
+	int fcd_ino;
+	struct qstr fcd_name;
+	unsigned char fcd_iname[32];
+	struct list_head fcd_list;
+	struct list_head fcd_dilist;
+};
+
+struct __track_dentry_update_args {
+	struct dentry *dentry;
+	int op;
+};
+
+struct __track_range_args {
+	ext4_lblk_t start;
+	ext4_lblk_t end;
+};
+
+struct ext4_fc_tl {
+	__le16 fc_tag;
+	__le16 fc_len;
+};
+
+struct ext4_fc_head {
+	__le32 fc_features;
+	__le32 fc_tid;
+};
+
+struct ext4_fc_tail {
+	__le32 fc_tid;
+	__le32 fc_crc;
+};
+
+struct ext4_fc_tl_mem {
+	u16 fc_tag;
+	u16 fc_len;
+};
+
+struct ext4_fc_add_range {
+	__le32 fc_ino;
+	__u8 fc_ex[12];
+};
+
+struct ext4_fc_del_range {
+	__le32 fc_ino;
+	__le32 fc_lblk;
+	__le32 fc_len;
+};
+
+struct dentry_info_args {
+	int parent_ino;
+	int dname_len;
+	int ino;
+	int inode_len;
+	char *dname;
+};
+
+struct ext4_fc_dentry_info {
+	__le32 fc_parent_ino;
+	__le32 fc_ino;
+	__u8 fc_dname[0];
+};
+
+struct ext4_fc_inode {
+	__le32 fc_ino;
+	__u8 fc_raw_inode[0];
+};
+
+struct ext4_orphan_block_tail {
+	__le32 ob_magic;
+	__le32 ob_checksum;
+};
+
+typedef struct {
+	__le32 a_version;
+} ext4_acl_header;
+
+typedef struct {
+	__le16 e_tag;
+	__le16 e_perm;
+	__le32 e_id;
+} ext4_acl_entry;
+
+struct journal_block_tag_s {
+	__be32 t_blocknr;
+	__be16 t_checksum;
+	__be16 t_flags;
+	__be32 t_blocknr_high;
+};
+
+typedef struct journal_block_tag_s journal_block_tag_t;
+
+struct journal_block_tag3_s {
+	__be32 t_blocknr;
+	__be32 t_flags;
+	__be32 t_blocknr_high;
+	__be32 t_checksum;
+};
+
+typedef struct journal_block_tag3_s journal_block_tag3_t;
+
+struct commit_header {
+	__be32 h_magic;
+	__be32 h_blocktype;
+	__be32 h_sequence;
+	unsigned char h_chksum_type;
+	unsigned char h_chksum_size;
+	unsigned char h_padding[2];
+	__be32 h_chksum[8];
+	__be64 h_commit_sec;
+	__be32 h_commit_nsec;
+};
+
+struct jbd2_journal_block_tail {
+	__be32 t_checksum;
+};
+
+struct jbd2_journal_revoke_header_s {
+	journal_header_t r_header;
+	__be32 r_count;
+};
+
+typedef struct jbd2_journal_revoke_header_s jbd2_journal_revoke_header_t;
+
+struct recovery_info {
+	tid_t start_transaction;
+	tid_t end_transaction;
+	unsigned long head_block;
+	int nr_replays;
+	int nr_revokes;
+	int nr_revoke_hits;
+};
+
+enum shrink_type {
+	SHRINK_DESTROY = 0,
+	SHRINK_BUSY_STOP = 1,
+	SHRINK_BUSY_SKIP = 2,
+};
+
+struct jbd2_revoke_table_s {
+	int hash_size;
+	int hash_shift;
+	struct list_head *hash_table;
+};
+
+struct jbd2_revoke_record_s {
+	struct list_head hash;
+	tid_t sequence;
+	unsigned long long blocknr;
+};
+
+typedef void (*btf_trace_jbd2_checkpoint)(void *, journal_t *, int);
+
+typedef void (*btf_trace_jbd2_start_commit)(void *, journal_t *, transaction_t *);
+
+typedef void (*btf_trace_jbd2_commit_locking)(void *, journal_t *, transaction_t *);
+
+typedef void (*btf_trace_jbd2_commit_flushing)(void *, journal_t *, transaction_t *);
+
+typedef void (*btf_trace_jbd2_commit_logging)(void *, journal_t *, transaction_t *);
+
+typedef void (*btf_trace_jbd2_drop_transaction)(void *, journal_t *, transaction_t *);
+
+typedef void (*btf_trace_jbd2_end_commit)(void *, journal_t *, transaction_t *);
+
+typedef void (*btf_trace_jbd2_submit_inode_data)(void *, struct inode *);
+
+typedef void (*btf_trace_jbd2_handle_start)(void *, dev_t, tid_t, unsigned int, unsigned int, int);
+
+typedef void (*btf_trace_jbd2_handle_restart)(void *, dev_t, tid_t, unsigned int, unsigned int, int);
+
+typedef void (*btf_trace_jbd2_handle_extend)(void *, dev_t, tid_t, unsigned int, unsigned int, int, int);
+
+typedef void (*btf_trace_jbd2_handle_stats)(void *, dev_t, tid_t, unsigned int, unsigned int, int, int, int, int);
+
+typedef void (*btf_trace_jbd2_run_stats)(void *, dev_t, tid_t, struct transaction_run_stats_s *);
+
+typedef void (*btf_trace_jbd2_checkpoint_stats)(void *, dev_t, tid_t, struct transaction_chp_stats_s *);
+
+typedef void (*btf_trace_jbd2_update_log_tail)(void *, journal_t *, tid_t, unsigned long, unsigned long);
+
+typedef void (*btf_trace_jbd2_write_superblock)(void *, journal_t *, blk_opf_t);
+
+typedef void (*btf_trace_jbd2_lock_buffer_stall)(void *, dev_t, unsigned long);
+
+typedef void (*btf_trace_jbd2_shrink_count)(void *, journal_t *, unsigned long, unsigned long);
+
+typedef void (*btf_trace_jbd2_shrink_scan_enter)(void *, journal_t *, unsigned long, unsigned long);
+
+typedef void (*btf_trace_jbd2_shrink_scan_exit)(void *, journal_t *, unsigned long, unsigned long, unsigned long);
+
+typedef void (*btf_trace_jbd2_shrink_checkpoint_list)(void *, journal_t *, tid_t, tid_t, tid_t, unsigned long, tid_t);
+
+struct trace_event_raw_jbd2_checkpoint {
+	struct trace_entry ent;
+	dev_t dev;
+	int result;
+	char __data[0];
+};
+
+struct trace_event_raw_jbd2_commit {
+	struct trace_entry ent;
+	dev_t dev;
+	char sync_commit;
+	tid_t transaction;
+	char __data[0];
+};
+
+struct trace_event_raw_jbd2_end_commit {
+	struct trace_entry ent;
+	dev_t dev;
+	char sync_commit;
+	tid_t transaction;
+	tid_t head;
+	char __data[0];
+};
+
+struct trace_event_raw_jbd2_submit_inode_data {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	char __data[0];
+};
+
+struct trace_event_raw_jbd2_handle_start_class {
+	struct trace_entry ent;
+	dev_t dev;
+	tid_t tid;
+	unsigned int type;
+	unsigned int line_no;
+	int requested_blocks;
+	char __data[0];
+};
+
+struct trace_event_raw_jbd2_handle_extend {
+	struct trace_entry ent;
+	dev_t dev;
+	tid_t tid;
+	unsigned int type;
+	unsigned int line_no;
+	int buffer_credits;
+	int requested_blocks;
+	char __data[0];
+};
+
+struct trace_event_raw_jbd2_handle_stats {
+	struct trace_entry ent;
+	dev_t dev;
+	tid_t tid;
+	unsigned int type;
+	unsigned int line_no;
+	int interval;
+	int sync;
+	int requested_blocks;
+	int dirtied_blocks;
+	char __data[0];
+};
+
+struct trace_event_raw_jbd2_run_stats {
+	struct trace_entry ent;
+	dev_t dev;
+	tid_t tid;
+	unsigned long wait;
+	unsigned long request_delay;
+	unsigned long running;
+	unsigned long locked;
+	unsigned long flushing;
+	unsigned long logging;
+	__u32 handle_count;
+	__u32 blocks;
+	__u32 blocks_logged;
+	char __data[0];
+};
+
+struct trace_event_raw_jbd2_checkpoint_stats {
+	struct trace_entry ent;
+	dev_t dev;
+	tid_t tid;
+	unsigned long chp_time;
+	__u32 forced_to_close;
+	__u32 written;
+	__u32 dropped;
+	char __data[0];
+};
+
+struct trace_event_raw_jbd2_update_log_tail {
+	struct trace_entry ent;
+	dev_t dev;
+	tid_t tail_sequence;
+	tid_t first_tid;
+	unsigned long block_nr;
+	unsigned long freed;
+	char __data[0];
+};
+
+struct trace_event_raw_jbd2_write_superblock {
+	struct trace_entry ent;
+	dev_t dev;
+	blk_opf_t write_flags;
+	char __data[0];
+};
+
+struct trace_event_raw_jbd2_lock_buffer_stall {
+	struct trace_entry ent;
+	dev_t dev;
+	unsigned long stall_ms;
+	char __data[0];
+};
+
+struct trace_event_raw_jbd2_journal_shrink {
+	struct trace_entry ent;
+	dev_t dev;
+	unsigned long nr_to_scan;
+	unsigned long count;
+	char __data[0];
+};
+
+struct trace_event_raw_jbd2_shrink_scan_exit {
+	struct trace_entry ent;
+	dev_t dev;
+	unsigned long nr_to_scan;
+	unsigned long nr_shrunk;
+	unsigned long count;
+	char __data[0];
+};
+
+struct trace_event_raw_jbd2_shrink_checkpoint_list {
+	struct trace_entry ent;
+	dev_t dev;
+	tid_t first_tid;
+	tid_t tid;
+	tid_t last_tid;
+	unsigned long nr_freed;
+	tid_t next_tid;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_jbd2_checkpoint {};
+
+struct trace_event_data_offsets_jbd2_commit {};
+
+struct trace_event_data_offsets_jbd2_end_commit {};
+
+struct trace_event_data_offsets_jbd2_submit_inode_data {};
+
+struct trace_event_data_offsets_jbd2_handle_start_class {};
+
+struct trace_event_data_offsets_jbd2_handle_extend {};
+
+struct trace_event_data_offsets_jbd2_handle_stats {};
+
+struct trace_event_data_offsets_jbd2_run_stats {};
+
+struct trace_event_data_offsets_jbd2_checkpoint_stats {};
+
+struct trace_event_data_offsets_jbd2_update_log_tail {};
+
+struct trace_event_data_offsets_jbd2_write_superblock {};
+
+struct trace_event_data_offsets_jbd2_lock_buffer_stall {};
+
+struct trace_event_data_offsets_jbd2_journal_shrink {};
+
+struct trace_event_data_offsets_jbd2_shrink_scan_exit {};
+
+struct trace_event_data_offsets_jbd2_shrink_checkpoint_list {};
+
+struct jbd2_stats_proc_session {
+	journal_t *journal;
+	struct transaction_stats_s *stats;
+	int start;
+	int max;
+};
+
+enum ramfs_param {
+	Opt_mode___3 = 0,
+};
+
+struct ramfs_mount_opts {
+	umode_t mode;
+};
+
+struct ramfs_fs_info {
+	struct ramfs_mount_opts mount_opts;
+};
+
+struct fat_cache {
+	struct list_head cache_list;
+	int nr_contig;
+	int fcluster;
+	int dcluster;
+};
+
+struct msdos_inode_info {
+	spinlock_t cache_lru_lock;
+	struct list_head cache_lru;
+	int nr_caches;
+	unsigned int cache_valid_id;
+	loff_t mmu_private;
+	int i_start;
+	int i_logstart;
+	int i_attrs;
+	loff_t i_pos;
+	struct hlist_node i_fat_hash;
+	struct hlist_node i_dir_hash;
+	struct rw_semaphore truncate_lock;
+	struct timespec64 i_crtime;
+	struct inode vfs_inode;
+};
+
+struct fat_mount_options {
+	kuid_t fs_uid;
+	kgid_t fs_gid;
+	unsigned short fs_fmask;
+	unsigned short fs_dmask;
+	unsigned short codepage;
+	int time_offset;
+	char *iocharset;
+	unsigned short shortname;
+	unsigned char name_check;
+	unsigned char errors;
+	unsigned char nfs;
+	unsigned short allow_utime;
+	unsigned int quiet: 1;
+	unsigned int showexec: 1;
+	unsigned int sys_immutable: 1;
+	unsigned int dotsOK: 1;
+	unsigned int isvfat: 1;
+	unsigned int utf8: 1;
+	unsigned int unicode_xlate: 1;
+	unsigned int numtail: 1;
+	unsigned int flush: 1;
+	unsigned int nocase: 1;
+	unsigned int usefree: 1;
+	unsigned int tz_set: 1;
+	unsigned int rodir: 1;
+	unsigned int discard: 1;
+	unsigned int dos1xfloppy: 1;
+};
+
+struct nls_table;
+
+struct fatent_operations;
+
+struct msdos_sb_info {
+	unsigned short sec_per_clus;
+	unsigned short cluster_bits;
+	unsigned int cluster_size;
+	unsigned char fats;
+	unsigned char fat_bits;
+	unsigned short fat_start;
+	unsigned long fat_length;
+	unsigned long dir_start;
+	unsigned short dir_entries;
+	unsigned long data_start;
+	unsigned long max_cluster;
+	unsigned long root_cluster;
+	unsigned long fsinfo_sector;
+	struct mutex fat_lock;
+	struct mutex nfs_build_inode_lock;
+	struct mutex s_lock;
+	unsigned int prev_free;
+	unsigned int free_clusters;
+	unsigned int free_clus_valid;
+	struct fat_mount_options options;
+	struct nls_table *nls_disk;
+	struct nls_table *nls_io;
+	const void *dir_ops;
+	int dir_per_block;
+	int dir_per_block_bits;
+	unsigned int vol_id;
+	int fatent_shift;
+	const struct fatent_operations *fatent_ops;
+	struct inode *fat_inode;
+	struct inode *fsinfo_inode;
+	struct ratelimit_state ratelimit;
+	spinlock_t inode_hash_lock;
+	struct hlist_head inode_hashtable[256];
+	spinlock_t dir_hash_lock;
+	struct hlist_head dir_hashtable[256];
+	unsigned int dirty;
+	struct callback_head rcu;
+};
+
+typedef u16 wchar_t;
+
+struct nls_table {
+	const char *charset;
+	const char *alias;
+	int (*uni2char)(wchar_t, unsigned char *, int);
+	int (*char2uni)(const unsigned char *, int, wchar_t *);
+	const unsigned char *charset2lower;
+	const unsigned char *charset2upper;
+	struct module *owner;
+	struct nls_table *next;
+};
+
+struct fat_entry;
+
+struct fatent_operations {
+	void (*ent_blocknr)(struct super_block *, int, int *, sector_t *);
+	void (*ent_set_ptr)(struct fat_entry *, int);
+	int (*ent_bread)(struct super_block *, struct fat_entry *, int, sector_t);
+	int (*ent_get)(struct fat_entry *);
+	void (*ent_put)(struct fat_entry *, int);
+	int (*ent_next)(struct fat_entry *);
+};
+
+struct fat_cache_id {
+	unsigned int id;
+	int nr_contig;
+	int fcluster;
+	int dcluster;
+};
+
+struct fat_entry {
+	int entry;
+	union {
+		u8 *ent12_p[2];
+		__le16 *ent16_p;
+		__le32 *ent32_p;
+	} u;
+	int nr_bhs;
+	struct buffer_head *bhs[2];
+	struct inode *fat_inode;
+};
+
+enum {
+	PARSE_INVALID = 1,
+	PARSE_NOT_LONGNAME = 2,
+	PARSE_EOF = 3,
+};
+
+enum utf16_endian {
+	UTF16_HOST_ENDIAN = 0,
+	UTF16_LITTLE_ENDIAN = 1,
+	UTF16_BIG_ENDIAN = 2,
+};
+
+struct msdos_dir_entry {
+	__u8 name[11];
+	__u8 attr;
+	__u8 lcase;
+	__u8 ctime_cs;
+	__le16 ctime;
+	__le16 cdate;
+	__le16 adate;
+	__le16 starthi;
+	__le16 time;
+	__le16 date;
+	__le16 start;
+	__le32 size;
+};
+
+typedef unsigned long long llu;
+
+struct msdos_dir_slot {
+	__u8 id;
+	__u8 name0_4[10];
+	__u8 attr;
+	__u8 reserved;
+	__u8 alias_checksum;
+	__u8 name5_10[12];
+	__le16 start;
+	__u8 name11_12[4];
+};
+
+struct __fat_dirent {
+	long d_ino;
+	__kernel_off_t d_off;
+	unsigned short d_reclen;
+	char d_name[256];
+};
+
+struct fat_ioctl_filldir_callback {
+	struct dir_context ctx;
+	void __attribute__((btf_type_tag("user"))) *dirent;
+	int result;
+	const char *longname;
+	int long_len;
+	const char *shortname;
+	int short_len;
+};
+
+struct fat_slot_info {
+	loff_t i_pos;
+	loff_t slot_off;
+	int nr_slots;
+	struct msdos_dir_entry *de;
+	struct buffer_head *bh;
+};
+
+struct compat_dirent {
+	u32 d_ino;
+	compat_off_t d_off;
+	u16 d_reclen;
+	char d_name[256];
+};
+
+struct fatent_ra {
+	sector_t cur;
+	sector_t limit;
+	unsigned int ra_blocks;
+	sector_t ra_advance;
+	sector_t ra_next;
+	sector_t ra_limit;
+};
+
+struct fat_floppy_defaults {
+	unsigned int nr_sectors;
+	unsigned int sec_per_clus;
+	unsigned int dir_entries;
+	unsigned int media;
+	unsigned int fat_length;
+};
+
+enum {
+	Opt_check_n = 0,
+	Opt_check_r = 1,
+	Opt_check_s = 2,
+	Opt_uid___3 = 3,
+	Opt_gid___4 = 4,
+	Opt_umask = 5,
+	Opt_dmask = 6,
+	Opt_fmask = 7,
+	Opt_allow_utime = 8,
+	Opt_codepage = 9,
+	Opt_usefree = 10,
+	Opt_nocase = 11,
+	Opt_quiet = 12,
+	Opt_showexec = 13,
+	Opt_debug___2 = 14,
+	Opt_immutable = 15,
+	Opt_dots = 16,
+	Opt_nodots = 17,
+	Opt_charset = 18,
+	Opt_shortname_lower = 19,
+	Opt_shortname_win95 = 20,
+	Opt_shortname_winnt = 21,
+	Opt_shortname_mixed = 22,
+	Opt_utf8_no = 23,
+	Opt_utf8_yes = 24,
+	Opt_uni_xl_no = 25,
+	Opt_uni_xl_yes = 26,
+	Opt_nonumtail_no = 27,
+	Opt_nonumtail_yes = 28,
+	Opt_obsolete = 29,
+	Opt_flush = 30,
+	Opt_tz_utc = 31,
+	Opt_rodir = 32,
+	Opt_err_cont = 33,
+	Opt_err_panic = 34,
+	Opt_err_ro = 35,
+	Opt_discard___2 = 36,
+	Opt_nfs = 37,
+	Opt_time_offset = 38,
+	Opt_nfs_stale_rw = 39,
+	Opt_nfs_nostale_ro = 40,
+	Opt_err___3 = 41,
+	Opt_dos1xfloppy = 42,
+};
+
+struct fat_boot_sector {
+	__u8 ignored[3];
+	__u8 system_id[8];
+	__u8 sector_size[2];
+	__u8 sec_per_clus;
+	__le16 reserved;
+	__u8 fats;
+	__u8 dir_entries[2];
+	__u8 sectors[2];
+	__u8 media;
+	__le16 fat_length;
+	__le16 secs_track;
+	__le16 heads;
+	__le32 hidden;
+	__le32 total_sect;
+	union {
+		struct {
+			__u8 drive_number;
+			__u8 state;
+			__u8 signature;
+			__u8 vol_id[4];
+			__u8 vol_label[11];
+			__u8 fs_type[8];
+		} fat16;
+		struct {
+			__le32 length;
+			__le16 flags;
+			__u8 version[2];
+			__le32 root_cluster;
+			__le16 info_sector;
+			__le16 backup_boot;
+			__le16 reserved2[6];
+			__u8 drive_number;
+			__u8 state;
+			__u8 signature;
+			__u8 vol_id[4];
+			__u8 vol_label[11];
+			__u8 fs_type[8];
+		} fat32;
+	};
+};
+
+struct fat_boot_fsinfo {
+	__le32 signature1;
+	__le32 reserved1[120];
+	__le32 signature2;
+	__le32 free_clusters;
+	__le32 next_cluster;
+	__le32 reserved2[4];
+};
+
+struct fat_bios_param_block {
+	u16 fat_sector_size;
+	u8 fat_sec_per_clus;
+	u16 fat_reserved;
+	u8 fat_fats;
+	u16 fat_dir_entries;
+	u16 fat_sectors;
+	u16 fat_fat_length;
+	u32 fat_total_sect;
+	u8 fat16_state;
+	u32 fat16_vol_id;
+	u32 fat32_length;
+	u32 fat32_root_cluster;
+	u16 fat32_info_sector;
+	u8 fat32_state;
+	u32 fat32_vol_id;
+};
+
+struct fat_fid {
+	u32 i_gen;
+	u32 i_pos_low;
+	u16 i_pos_hi;
+	u16 parent_i_pos_hi;
+	u32 parent_i_pos_low;
+	u32 parent_i_gen;
+};
+
+struct shortname_info {
+	unsigned char lower: 1;
+	unsigned char upper: 1;
+	unsigned char valid: 1;
+};
+
+enum exfat_error_mode {
+	EXFAT_ERRORS_CONT = 0,
+	EXFAT_ERRORS_PANIC = 1,
+	EXFAT_ERRORS_RO = 2,
+};
+
+struct exfat_chain {
+	unsigned int dir;
+	unsigned int size;
+	unsigned char flags;
+};
+
+struct exfat_hint {
+	unsigned int clu;
+	union {
+		unsigned int off;
+		int eidx;
+	};
+};
+
+struct exfat_hint_femp {
+	int eidx;
+	int count;
+	struct exfat_chain cur;
+};
+
+struct exfat_inode_info {
+	struct exfat_chain dir;
+	int entry;
+	unsigned int type;
+	unsigned short attr;
+	unsigned int start_clu;
+	unsigned char flags;
+	unsigned int version;
+	struct exfat_hint hint_bmap;
+	struct exfat_hint hint_stat;
+	struct exfat_hint_femp hint_femp;
+	spinlock_t cache_lru_lock;
+	struct list_head cache_lru;
+	int nr_caches;
+	unsigned int cache_valid_id;
+	loff_t i_size_ondisk;
+	loff_t i_size_aligned;
+	loff_t i_pos;
+	struct hlist_node i_hash_fat;
+	struct rw_semaphore truncate_lock;
+	struct inode vfs_inode;
+	struct timespec64 i_crtime;
+};
+
+struct exfat_mount_options {
+	kuid_t fs_uid;
+	kgid_t fs_gid;
+	unsigned short fs_fmask;
+	unsigned short fs_dmask;
+	unsigned short allow_utime;
+	char *iocharset;
+	enum exfat_error_mode errors;
+	unsigned int utf8: 1;
+	unsigned int sys_tz: 1;
+	unsigned int discard: 1;
+	unsigned int keep_last_dots: 1;
+	int time_offset;
+};
+
+struct exfat_sb_info {
+	unsigned long long num_sectors;
+	unsigned int num_clusters;
+	unsigned int cluster_size;
+	unsigned int cluster_size_bits;
+	unsigned int sect_per_clus;
+	unsigned int sect_per_clus_bits;
+	unsigned long long FAT1_start_sector;
+	unsigned long long FAT2_start_sector;
+	unsigned long long data_start_sector;
+	unsigned int num_FAT_sectors;
+	unsigned int root_dir;
+	unsigned int dentries_per_clu;
+	unsigned int vol_flags;
+	unsigned int vol_flags_persistent;
+	struct buffer_head *boot_bh;
+	unsigned int map_clu;
+	unsigned int map_sectors;
+	struct buffer_head **vol_amap;
+	unsigned short *vol_utbl;
+	unsigned int clu_srch_ptr;
+	unsigned int used_clusters;
+	struct mutex s_lock;
+	struct mutex bitmap_lock;
+	struct exfat_mount_options options;
+	struct nls_table *nls_io;
+	struct ratelimit_state ratelimit;
+	spinlock_t inode_hash_lock;
+	struct hlist_head inode_hashtable[256];
+};
+
+struct exfat_entry_set_cache {
+	struct super_block *sb;
+	unsigned int start_off;
+	int num_bh;
+	struct buffer_head *__bh[3];
+	struct buffer_head **bh;
+	unsigned int num_entries;
+	bool modified;
+};
+
+struct exfat_dentry {
+	__u8 type;
+	union {
+		struct {
+			__u8 num_ext;
+			__le16 checksum;
+			__le16 attr;
+			__le16 reserved1;
+			__le16 create_time;
+			__le16 create_date;
+			__le16 modify_time;
+			__le16 modify_date;
+			__le16 access_time;
+			__le16 access_date;
+			__u8 create_time_cs;
+			__u8 modify_time_cs;
+			__u8 create_tz;
+			__u8 modify_tz;
+			__u8 access_tz;
+			__u8 reserved2[7];
+		} __attribute__((packed)) file;
+		struct {
+			__u8 flags;
+			__u8 reserved1;
+			__u8 name_len;
+			__le16 name_hash;
+			__le16 reserved2;
+			__le64 valid_size;
+			__le32 reserved3;
+			__le32 start_clu;
+			__le64 size;
+		} __attribute__((packed)) stream;
+		struct {
+			__u8 flags;
+			__le16 unicode_0_14[15];
+		} __attribute__((packed)) name;
+		struct {
+			__u8 flags;
+			__u8 reserved[18];
+			__le32 start_clu;
+			__le64 size;
+		} __attribute__((packed)) bitmap;
+		struct {
+			__u8 reserved1[3];
+			__le32 checksum;
+			__u8 reserved2[12];
+			__le32 start_clu;
+			__le64 size;
+		} __attribute__((packed)) upcase;
+		struct {
+			__u8 flags;
+			__u8 vendor_guid[16];
+			__u8 vendor_defined[14];
+		} vendor_ext;
+		struct {
+			__u8 flags;
+			__u8 vendor_guid[16];
+			__u8 vendor_defined[2];
+			__le32 start_clu;
+			__le64 size;
+		} __attribute__((packed)) vendor_alloc;
+		struct {
+			__u8 flags;
+			__u8 custom_defined[18];
+			__le32 start_clu;
+			__le64 size;
+		} __attribute__((packed)) generic_secondary;
+	} dentry;
+};
+
+struct exfat_dentry_namebuf {
+	char *lfn;
+	int lfnbuf_len;
+};
+
+struct exfat_dir_entry {
+	struct exfat_chain dir;
+	int entry;
+	unsigned int type;
+	unsigned int start_clu;
+	unsigned char flags;
+	unsigned short attr;
+	loff_t size;
+	unsigned int num_subdirs;
+	struct timespec64 atime;
+	struct timespec64 mtime;
+	struct timespec64 crtime;
+	struct exfat_dentry_namebuf namebuf;
+};
+
+enum {
+	NLS_NAME_NO_LOSSY = 0,
+	NLS_NAME_LOSSY = 1,
+	NLS_NAME_OVERLEN = 2,
+};
+
+typedef u32 unicode_t;
+
+struct exfat_uni_name {
+	unsigned short name[258];
+	u16 name_hash;
+	unsigned char name_len;
+};
+
+enum exfat_validate_dentry_mode {
+	ES_MODE_STARTED = 0,
+	ES_MODE_GET_FILE_ENTRY = 1,
+	ES_MODE_GET_STRM_ENTRY = 2,
+	ES_MODE_GET_NAME_ENTRY = 3,
+	ES_MODE_GET_CRITICAL_SEC_ENTRY = 4,
+	ES_MODE_GET_BENIGN_SEC_ENTRY = 5,
+};
+
+enum {
+	DIRENT_STEP_FILE = 0,
+	DIRENT_STEP_STRM = 1,
+	DIRENT_STEP_NAME = 2,
+	DIRENT_STEP_SECD = 3,
+};
+
+enum {
+	Opt_uid___4 = 0,
+	Opt_gid___5 = 1,
+	Opt_umask___2 = 2,
+	Opt_dmask___2 = 3,
+	Opt_fmask___2 = 4,
+	Opt_allow_utime___2 = 5,
+	Opt_charset___2 = 6,
+	Opt_errors___2 = 7,
+	Opt_discard___3 = 8,
+	Opt_keep_last_dots = 9,
+	Opt_sys_tz = 10,
+	Opt_time_offset___2 = 11,
+	Opt_utf8 = 12,
+	Opt_debug___3 = 13,
+	Opt_namecase = 14,
+	Opt_codepage___2 = 15,
+};
+
+struct boot_sector {
+	__u8 jmp_boot[3];
+	__u8 fs_name[8];
+	__u8 must_be_zero[53];
+	__le64 partition_offset;
+	__le64 vol_length;
+	__le32 fat_offset;
+	__le32 fat_length;
+	__le32 clu_offset;
+	__le32 clu_count;
+	__le32 root_cluster;
+	__le32 vol_serial;
+	__u8 fs_revision[2];
+	__le16 vol_flags;
+	__u8 sect_size_bits;
+	__u8 sect_per_clus_bits;
+	__u8 num_fats;
+	__u8 drv_sel;
+	__u8 percent_in_use;
+	__u8 reserved[7];
+	__u8 boot_code[390];
+	__le16 signature;
+};
+
+struct exfat_cache {
+	struct list_head cache_list;
+	unsigned int nr_contig;
+	unsigned int fcluster;
+	unsigned int dcluster;
+};
+
+struct exfat_cache_id {
+	unsigned int id;
+	unsigned int nr_contig;
+	unsigned int fcluster;
+	unsigned int dcluster;
+};
+
+struct getdents_callback___2 {
+	struct dir_context ctx;
+	char *name;
+	u64 ino;
+	int found;
+	int sequence;
+};
+
+struct utf8_table {
+	int cmask;
+	int cval;
+	int shift;
+	long lmask;
+	long lval;
+};
+
+enum utf8_normalization {
+	UTF8_NFDI = 0,
+	UTF8_NFDICF = 1,
+	UTF8_NMAX = 2,
+};
+
+typedef const unsigned char utf8leaf_t;
+
+typedef const unsigned char utf8trie_t;
+
+struct utf8cursor {
+	const struct unicode_map *um;
+	enum utf8_normalization n;
+	const char *s;
+	const char *p;
+	const char *ss;
+	const char *sp;
+	unsigned int len;
+	unsigned int slen;
+	short ccc;
+	short nccc;
+	unsigned char hangul[12];
+};
+
+struct fuse_iqueue;
+
+struct fuse_iqueue_ops {
+	void (*wake_forget_and_unlock)(struct fuse_iqueue *, bool);
+	void (*wake_interrupt_and_unlock)(struct fuse_iqueue *, bool);
+	void (*wake_pending_and_unlock)(struct fuse_iqueue *, bool);
+	void (*release)(struct fuse_iqueue *);
+};
+
+struct fuse_forget_one {
+	uint64_t nodeid;
+	uint64_t nlookup;
+};
+
+struct fuse_forget_link {
+	struct fuse_forget_one forget_one;
+	struct fuse_forget_link *next;
+};
+
+struct fuse_iqueue {
+	unsigned int connected;
+	spinlock_t lock;
+	wait_queue_head_t waitq;
+	u64 reqctr;
+	struct list_head pending;
+	struct list_head interrupts;
+	struct fuse_forget_link forget_list_head;
+	struct fuse_forget_link *forget_list_tail;
+	int forget_batch;
+	struct fasync_struct *fasync;
+	const struct fuse_iqueue_ops *ops;
+	void *priv;
+};
+
+enum fuse_req_flag {
+	FR_ISREPLY = 0,
+	FR_FORCE = 1,
+	FR_BACKGROUND = 2,
+	FR_WAITING = 3,
+	FR_ABORTED = 4,
+	FR_INTERRUPTED = 5,
+	FR_LOCKED = 6,
+	FR_PENDING = 7,
+	FR_SENT = 8,
+	FR_FINISHED = 9,
+	FR_PRIVATE = 10,
+	FR_ASYNC = 11,
+};
+
+enum fuse_opcode {
+	FUSE_LOOKUP = 1,
+	FUSE_FORGET = 2,
+	FUSE_GETATTR = 3,
+	FUSE_SETATTR = 4,
+	FUSE_READLINK = 5,
+	FUSE_SYMLINK = 6,
+	FUSE_MKNOD = 8,
+	FUSE_MKDIR = 9,
+	FUSE_UNLINK = 10,
+	FUSE_RMDIR = 11,
+	FUSE_RENAME = 12,
+	FUSE_LINK = 13,
+	FUSE_OPEN = 14,
+	FUSE_READ = 15,
+	FUSE_WRITE = 16,
+	FUSE_STATFS = 17,
+	FUSE_RELEASE = 18,
+	FUSE_FSYNC = 20,
+	FUSE_SETXATTR = 21,
+	FUSE_GETXATTR = 22,
+	FUSE_LISTXATTR = 23,
+	FUSE_REMOVEXATTR = 24,
+	FUSE_FLUSH = 25,
+	FUSE_INIT = 26,
+	FUSE_OPENDIR = 27,
+	FUSE_READDIR = 28,
+	FUSE_RELEASEDIR = 29,
+	FUSE_FSYNCDIR = 30,
+	FUSE_GETLK = 31,
+	FUSE_SETLK = 32,
+	FUSE_SETLKW = 33,
+	FUSE_ACCESS = 34,
+	FUSE_CREATE = 35,
+	FUSE_INTERRUPT = 36,
+	FUSE_BMAP = 37,
+	FUSE_DESTROY = 38,
+	FUSE_IOCTL = 39,
+	FUSE_POLL = 40,
+	FUSE_NOTIFY_REPLY = 41,
+	FUSE_BATCH_FORGET = 42,
+	FUSE_FALLOCATE = 43,
+	FUSE_READDIRPLUS = 44,
+	FUSE_RENAME2 = 45,
+	FUSE_LSEEK = 46,
+	FUSE_COPY_FILE_RANGE = 47,
+	FUSE_SETUPMAPPING = 48,
+	FUSE_REMOVEMAPPING = 49,
+	FUSE_SYNCFS = 50,
+	FUSE_TMPFILE = 51,
+	FUSE_STATX = 52,
+	FUSE_CANONICAL_PATH = 2016,
+	CUSE_INIT = 4096,
+	CUSE_INIT_BSWAP_RESERVED = 1048576,
+	FUSE_INIT_BSWAP_RESERVED = 436207616,
+};
+
+enum fuse_notify_code {
+	FUSE_NOTIFY_POLL = 1,
+	FUSE_NOTIFY_INVAL_INODE = 2,
+	FUSE_NOTIFY_INVAL_ENTRY = 3,
+	FUSE_NOTIFY_STORE = 4,
+	FUSE_NOTIFY_RETRIEVE = 5,
+	FUSE_NOTIFY_DELETE = 6,
+	FUSE_NOTIFY_CODE_MAX = 7,
+};
+
+struct fuse_pqueue {
+	unsigned int connected;
+	spinlock_t lock;
+	struct list_head *processing;
+	struct list_head io;
+};
+
+struct fuse_conn;
+
+struct fuse_dev {
+	struct fuse_conn *fc;
+	struct fuse_pqueue pq;
+	struct list_head entry;
+};
+
+struct fuse_sync_bucket;
+
+struct fuse_conn {
+	spinlock_t lock;
+	refcount_t count;
+	atomic_t dev_count;
+	struct callback_head rcu;
+	kuid_t user_id;
+	kgid_t group_id;
+	struct pid_namespace *pid_ns;
+	struct user_namespace *user_ns;
+	unsigned int max_read;
+	unsigned int max_write;
+	unsigned int max_pages;
+	unsigned int max_pages_limit;
+	struct fuse_iqueue iq;
+	atomic64_t khctr;
+	struct rb_root polled_files;
+	unsigned int max_background;
+	unsigned int congestion_threshold;
+	unsigned int num_background;
+	unsigned int active_background;
+	struct list_head bg_queue;
+	spinlock_t bg_lock;
+	int initialized;
+	int blocked;
+	wait_queue_head_t blocked_waitq;
+	unsigned int connected;
+	bool aborted;
+	unsigned int conn_error: 1;
+	unsigned int conn_init: 1;
+	unsigned int async_read: 1;
+	unsigned int abort_err: 1;
+	unsigned int atomic_o_trunc: 1;
+	unsigned int export_support: 1;
+	unsigned int writeback_cache: 1;
+	unsigned int parallel_dirops: 1;
+	unsigned int handle_killpriv: 1;
+	unsigned int cache_symlinks: 1;
+	unsigned int legacy_opts_show: 1;
+	unsigned int handle_killpriv_v2: 1;
+	unsigned int no_open: 1;
+	unsigned int no_opendir: 1;
+	unsigned int no_fsync: 1;
+	unsigned int no_fsyncdir: 1;
+	unsigned int no_flush: 1;
+	unsigned int no_setxattr: 1;
+	unsigned int setxattr_ext: 1;
+	unsigned int no_getxattr: 1;
+	unsigned int no_listxattr: 1;
+	unsigned int no_removexattr: 1;
+	unsigned int no_lock: 1;
+	unsigned int no_access: 1;
+	unsigned int no_create: 1;
+	unsigned int no_interrupt: 1;
+	unsigned int no_bmap: 1;
+	unsigned int no_poll: 1;
+	unsigned int big_writes: 1;
+	unsigned int dont_mask: 1;
+	unsigned int no_flock: 1;
+	unsigned int no_fallocate: 1;
+	unsigned int no_rename2: 1;
+	unsigned int auto_inval_data: 1;
+	unsigned int explicit_inval_data: 1;
+	unsigned int do_readdirplus: 1;
+	unsigned int readdirplus_auto: 1;
+	unsigned int async_dio: 1;
+	unsigned int no_lseek: 1;
+	unsigned int posix_acl: 1;
+	unsigned int default_permissions: 1;
+	unsigned int allow_other: 1;
+	unsigned int no_copy_file_range: 1;
+	unsigned int destroy: 1;
+	unsigned int delete_stale: 1;
+	unsigned int no_control: 1;
+	unsigned int no_force_umount: 1;
+	unsigned int auto_submounts: 1;
+	unsigned int passthrough: 1;
+	unsigned int sync_fs: 1;
+	unsigned int init_security: 1;
+	unsigned int create_supp_group: 1;
+	unsigned int inode_dax: 1;
+	unsigned int no_tmpfile: 1;
+	unsigned int direct_io_allow_mmap: 1;
+	unsigned int no_statx: 1;
+	unsigned int no_daemon: 1;
+	atomic_t num_waiting;
+	unsigned int minor;
+	struct list_head entry;
+	dev_t dev;
+	struct dentry *ctl_dentry[5];
+	int ctl_ndents;
+	u32 scramble_key[4];
+	atomic64_t attr_version;
+	void (*release)(struct fuse_conn *);
+	struct rw_semaphore killsb;
+	struct list_head devices;
+	struct list_head mounts;
+	struct fuse_sync_bucket __attribute__((btf_type_tag("rcu"))) *curr_bucket;
+	struct idr passthrough_req;
+	spinlock_t passthrough_req_lock;
+};
+
+struct fuse_sync_bucket {
+	atomic_t count;
+	wait_queue_head_t waitq;
+	struct callback_head rcu;
+};
+
+struct fuse_in_header {
+	uint32_t len;
+	uint32_t opcode;
+	uint64_t unique;
+	uint64_t nodeid;
+	uint32_t uid;
+	uint32_t gid;
+	uint32_t pid;
+	union {
+		struct {
+			uint16_t total_extlen;
+			uint16_t padding;
+		};
+		uint32_t error_in;
+	};
+};
+
+struct fuse_out_header {
+	uint32_t len;
+	int32_t error;
+	uint64_t unique;
+};
+
+struct fuse_args;
+
+struct fuse_mount;
+
+struct fuse_req {
+	struct list_head list;
+	struct list_head intr_entry;
+	struct fuse_args *args;
+	refcount_t count;
+	unsigned long flags;
+	struct {
+		struct fuse_in_header h;
+	} in;
+	struct {
+		struct fuse_out_header h;
+	} out;
+	wait_queue_head_t waitq;
+	void *argbuf;
+	struct fuse_mount *fm;
+};
+
+struct fuse_in_arg {
+	unsigned int size;
+	const void *value;
+};
+
+struct fuse_arg {
+	unsigned int size;
+	void *value;
+};
+
+struct fuse_args {
+	uint64_t nodeid;
+	uint32_t opcode;
+	uint32_t error_in;
+	uint8_t in_numargs;
+	uint8_t out_numargs;
+	uint8_t ext_idx;
+	bool force: 1;
+	bool noreply: 1;
+	bool nocreds: 1;
+	bool in_pages: 1;
+	bool out_pages: 1;
+	bool user_pages: 1;
+	bool out_argvar: 1;
+	bool page_zeroing: 1;
+	bool page_replace: 1;
+	bool may_block: 1;
+	bool is_ext: 1;
+	struct fuse_in_arg in_args[5];
+	struct fuse_arg out_args[3];
+	void (*end)(struct fuse_mount *, struct fuse_args *, int);
+	struct path *canonical_path;
+};
+
+struct fuse_mount {
+	struct fuse_conn *fc;
+	struct super_block *sb;
+	struct list_head fc_entry;
+};
+
+struct fuse_passthrough {
+	struct file *filp;
+	struct cred *cred;
+};
+
+struct fuse_release_args;
+
+struct fuse_file {
+	struct fuse_mount *fm;
+	struct fuse_release_args *release_args;
+	u64 kh;
+	u64 fh;
+	u64 nodeid;
+	refcount_t count;
+	u32 open_flags;
+	struct list_head write_entry;
+	struct {
+		struct mutex lock;
+		loff_t pos;
+		loff_t cache_off;
+		u64 version;
+	} readdir;
+	struct fuse_passthrough passthrough;
+	struct file *backing_file;
+	struct rb_node polled_node;
+	wait_queue_head_t poll_wait;
+	bool flock: 1;
+};
+
+struct fuse_page_desc;
+
+struct fuse_args_pages {
+	struct fuse_args args;
+	struct page **pages;
+	struct fuse_page_desc *descs;
+	unsigned int num_pages;
+};
+
+struct fuse_page_desc {
+	unsigned int length;
+	unsigned int offset;
+};
+
+struct fuse_entry_bpf_out {
+	uint64_t backing_action;
+	uint64_t backing_fd;
+	uint64_t bpf_action;
+	uint64_t bpf_fd;
+};
+
+struct fuse_entry_bpf {
+	struct fuse_entry_bpf_out out;
+	struct file *backing_file;
+	struct file *bpf_file;
+};
+
+struct fuse_notify_retrieve_in {
+	uint64_t dummy1;
+	uint64_t offset;
+	uint32_t size;
+	uint32_t dummy2;
+	uint64_t dummy3;
+	uint64_t dummy4;
+};
+
+struct fuse_retrieve_args {
+	struct fuse_args_pages ap;
+	struct fuse_notify_retrieve_in inarg;
+};
+
+struct fuse_copy_state {
+	int write;
+	struct fuse_req *req;
+	struct iov_iter *iter;
+	struct pipe_buffer *pipebufs;
+	struct pipe_buffer *currbuf;
+	struct pipe_inode_info *pipe;
+	unsigned long nr_segs;
+	struct page *pg;
+	unsigned int len;
+	unsigned int offset;
+	unsigned int move_pages: 1;
+};
+
+struct fuse_batch_forget_in {
+	uint32_t count;
+	uint32_t dummy;
+};
+
+struct fuse_forget_in {
+	uint64_t nlookup;
+};
+
+struct fuse_notify_poll_wakeup_out {
+	uint64_t kh;
+};
+
+struct fuse_notify_retrieve_out {
+	uint64_t notify_unique;
+	uint64_t nodeid;
+	uint64_t offset;
+	uint32_t size;
+	uint32_t padding;
+};
+
+struct fuse_notify_inval_entry_out {
+	uint64_t parent;
+	uint32_t namelen;
+	uint32_t flags;
+};
+
+struct fuse_notify_store_out {
+	uint64_t nodeid;
+	uint64_t offset;
+	uint32_t size;
+	uint32_t padding;
+};
+
+struct fuse_notify_inval_inode_out {
+	uint64_t ino;
+	int64_t off;
+	int64_t len;
+};
+
+struct fuse_notify_delete_out {
+	uint64_t parent;
+	uint64_t child;
+	uint32_t namelen;
+	uint32_t padding;
+};
+
+struct fuse_interrupt_in {
+	uint64_t unique;
+};
+
+enum {
+	FUSE_I_ADVISE_RDPLUS = 0,
+	FUSE_I_INIT_RDPLUS = 1,
+	FUSE_I_SIZE_UNSTABLE = 2,
+	FUSE_I_BAD = 3,
+	FUSE_I_BTIME = 4,
+};
+
+enum fuse_ext_type {
+	FUSE_MAX_NR_SECCTX = 31,
+	FUSE_EXT_GROUPS = 32,
+};
+
+struct fuse_dentry {
+	union {
+		u64 time;
+		struct callback_head rcu;
+	};
+	struct path backing_path;
+	struct bpf_prog *bpf;
+};
+
+struct fuse_submount_lookup;
+
+struct fuse_inode {
+	struct inode inode;
+	struct inode *backing_inode;
+	struct bpf_prog *bpf;
+	u64 nodeid;
+	u64 nlookup;
+	struct fuse_forget_link *forget;
+	u64 i_time;
+	u32 inval_mask;
+	umode_t orig_i_mode;
+	struct timespec64 i_btime;
+	u64 orig_ino;
+	u64 attr_version;
+	union {
+		struct {
+			struct list_head write_files;
+			struct list_head queued_writes;
+			int writectr;
+			wait_queue_head_t page_waitq;
+			struct rb_root writepages;
+		};
+		struct {
+			bool cached;
+			loff_t size;
+			loff_t pos;
+			u64 version;
+			struct timespec64 mtime;
+			u64 iversion;
+			spinlock_t lock;
+		} rdc;
+	};
+	unsigned long state;
+	struct mutex mutex;
+	spinlock_t lock;
+	struct fuse_submount_lookup *submount_lookup;
+};
+
+struct fuse_submount_lookup {
+	refcount_t count;
+	u64 nodeid;
+	struct fuse_forget_link *forget;
+};
+
+struct fuse_supp_groups {
+	uint32_t nr_groups;
+	uint32_t groups[0];
+};
+
+struct fuse_attr {
+	uint64_t ino;
+	uint64_t size;
+	uint64_t blocks;
+	uint64_t atime;
+	uint64_t mtime;
+	uint64_t ctime;
+	uint32_t atimensec;
+	uint32_t mtimensec;
+	uint32_t ctimensec;
+	uint32_t mode;
+	uint32_t nlink;
+	uint32_t uid;
+	uint32_t gid;
+	uint32_t rdev;
+	uint32_t blksize;
+	uint32_t flags;
+};
+
+struct fuse_entry_out {
+	uint64_t nodeid;
+	uint64_t generation;
+	uint64_t entry_valid;
+	uint64_t attr_valid;
+	uint32_t entry_valid_nsec;
+	uint32_t attr_valid_nsec;
+	struct fuse_attr attr;
+};
+
+struct fuse_sx_time {
+	int64_t tv_sec;
+	uint32_t tv_nsec;
+	int32_t __reserved;
+};
+
+struct fuse_statx {
+	uint32_t mask;
+	uint32_t blksize;
+	uint64_t attributes;
+	uint32_t nlink;
+	uint32_t uid;
+	uint32_t gid;
+	uint16_t mode;
+	uint16_t __spare0[1];
+	uint64_t ino;
+	uint64_t size;
+	uint64_t blocks;
+	uint64_t attributes_mask;
+	struct fuse_sx_time atime;
+	struct fuse_sx_time btime;
+	struct fuse_sx_time ctime;
+	struct fuse_sx_time mtime;
+	uint32_t rdev_major;
+	uint32_t rdev_minor;
+	uint32_t dev_major;
+	uint32_t dev_minor;
+	uint64_t __spare2[14];
+};
+
+struct fuse_dummy_io {
+	int unused;
+};
+
+struct fuse_statx_out {
+	uint64_t attr_valid;
+	uint32_t attr_valid_nsec;
+	uint32_t flags;
+	uint64_t spare[2];
+	struct fuse_statx stat;
+};
+
+struct fuse_statx_in {
+	uint32_t getattr_flags;
+	uint32_t reserved;
+	uint64_t fh;
+	uint32_t sx_flags;
+	uint32_t sx_mask;
+};
+
+struct fuse_getattr_in {
+	uint32_t getattr_flags;
+	uint32_t dummy;
+	uint64_t fh;
+};
+
+struct fuse_attr_out {
+	uint64_t attr_valid;
+	uint32_t attr_valid_nsec;
+	uint32_t dummy;
+	struct fuse_attr attr;
+};
+
+struct fuse_getattr_io {
+	struct fuse_getattr_in fgi;
+	struct fuse_attr_out fao;
+};
+
+struct fuse_setattr_in {
+	uint32_t valid;
+	uint32_t padding;
+	uint64_t fh;
+	uint64_t size;
+	uint64_t lock_owner;
+	uint64_t atime;
+	uint64_t mtime;
+	uint64_t ctime;
+	uint32_t atimensec;
+	uint32_t mtimensec;
+	uint32_t ctimensec;
+	uint32_t mode;
+	uint32_t unused4;
+	uint32_t uid;
+	uint32_t gid;
+	uint32_t unused5;
+};
+
+struct fuse_setattr_io {
+	struct fuse_setattr_in fsi;
+	struct fuse_attr_out fao;
+};
+
+struct fuse_access_in {
+	uint32_t mask;
+	uint32_t padding;
+};
+
+struct fuse_err_ret {
+	void *result;
+	bool ret;
+};
+
+struct fuse_lookup_io {
+	struct fuse_entry_out feo;
+	struct fuse_entry_bpf feb;
+};
+
+struct fuse_link_in {
+	uint64_t oldnodeid;
+};
+
+struct fuse_mkdir_in {
+	uint32_t mode;
+	uint32_t umask;
+};
+
+struct fuse_mknod_in {
+	uint32_t mode;
+	uint32_t rdev;
+	uint32_t umask;
+	uint32_t padding;
+};
+
+struct fuse_rename2_in {
+	uint64_t newdir;
+	uint32_t flags;
+	uint32_t padding;
+};
+
+struct fuse_rename_in {
+	uint64_t newdir;
+};
+
+struct fuse_secctx {
+	uint32_t size;
+	uint32_t padding;
+};
+
+struct fuse_secctx_header {
+	uint32_t size;
+	uint32_t nr_secctx;
+};
+
+struct fuse_ext_header {
+	uint32_t size;
+	uint32_t type;
+};
+
+struct fuse_create_in {
+	uint32_t flags;
+	uint32_t mode;
+	uint32_t umask;
+	uint32_t open_flags;
+};
+
+struct fuse_open_out {
+	uint64_t fh;
+	uint32_t open_flags;
+	uint32_t passthrough_fh;
+};
+
+struct fuse_create_open_io {
+	struct fuse_create_in fci;
+	struct fuse_entry_out feo;
+	struct fuse_open_out foo;
+};
+
+struct fuse_fsync_in {
+	uint64_t fh;
+	uint32_t fsync_flags;
+	uint32_t padding;
+};
+
+struct fuse_read_in {
+	uint64_t fh;
+	uint64_t offset;
+	uint32_t size;
+	uint32_t read_flags;
+	uint64_t lock_owner;
+	uint32_t flags;
+	uint32_t padding;
+};
+
+struct fuse_write_in {
+	uint64_t fh;
+	uint64_t offset;
+	uint32_t size;
+	uint32_t write_flags;
+	uint64_t lock_owner;
+	uint32_t flags;
+	uint32_t padding;
+};
+
+struct fuse_write_out {
+	uint32_t size;
+	uint32_t padding;
+};
+
+struct fuse_io_priv;
+
+struct fuse_io_args {
+	union {
+		struct {
+			struct fuse_read_in in;
+			u64 attr_ver;
+		} read;
+		struct {
+			struct fuse_write_in in;
+			struct fuse_write_out out;
+			bool page_locked;
+		} write;
+	};
+	struct fuse_args_pages ap;
+	struct fuse_io_priv *io;
+	struct fuse_file *ff;
+};
+
+struct fuse_writepage_args {
+	struct fuse_io_args ia;
+	struct rb_node writepages_entry;
+	struct list_head queue_entry;
+	struct fuse_writepage_args *next;
+	struct inode *inode;
+	struct fuse_sync_bucket *bucket;
+};
+
+struct fuse_io_priv {
+	struct kref refcnt;
+	int async;
+	spinlock_t lock;
+	unsigned int reqs;
+	ssize_t bytes;
+	size_t size;
+	__u64 offset;
+	bool write;
+	bool should_dirty;
+	int err;
+	struct kiocb *iocb;
+	struct completion *done;
+	bool blocking;
+};
+
+struct fuse_release_in {
+	uint64_t fh;
+	uint32_t flags;
+	uint32_t release_flags;
+	uint64_t lock_owner;
+};
+
+struct fuse_release_args {
+	struct fuse_args args;
+	struct fuse_release_in inarg;
+	struct inode *inode;
+};
+
+struct fuse_open_in {
+	uint32_t flags;
+	uint32_t open_flags;
+};
+
+struct fuse_open_io {
+	struct fuse_open_in foi;
+	struct fuse_open_out foo;
+};
+
+struct fuse_lseek_out {
+	uint64_t offset;
+};
+
+struct fuse_lseek_in {
+	uint64_t fh;
+	uint64_t offset;
+	uint32_t whence;
+	uint32_t padding;
+};
+
+struct fuse_lseek_io {
+	struct fuse_lseek_in fli;
+	struct fuse_lseek_out flo;
+};
+
+struct fuse_read_iter_out {
+	uint64_t ret;
+};
+
+struct fuse_file_read_iter_io {
+	struct fuse_read_in fri;
+	struct fuse_read_iter_out frio;
+};
+
+struct fuse_write_iter_out {
+	uint64_t ret;
+};
+
+struct fuse_file_write_iter_io {
+	struct fuse_write_in fwi;
+	struct fuse_write_out fwo;
+	struct fuse_write_iter_out fwio;
+};
+
+struct fuse_flush_in {
+	uint64_t fh;
+	uint32_t unused;
+	uint32_t padding;
+	uint64_t lock_owner;
+};
+
+struct fuse_file_lock {
+	uint64_t start;
+	uint64_t end;
+	uint32_t type;
+	uint32_t pid;
+};
+
+struct fuse_lk_out {
+	struct fuse_file_lock lk;
+};
+
+struct fuse_lk_in {
+	uint64_t fh;
+	uint64_t owner;
+	struct fuse_file_lock lk;
+	uint32_t lk_flags;
+	uint32_t padding;
+};
+
+struct fuse_fallocate_in {
+	uint64_t fh;
+	uint64_t offset;
+	uint64_t length;
+	uint32_t mode;
+	uint32_t padding;
+};
+
+struct fuse_copy_file_range_in {
+	uint64_t fh_in;
+	uint64_t off_in;
+	uint64_t nodeid_out;
+	uint64_t fh_out;
+	uint64_t off_out;
+	uint64_t len;
+	uint64_t flags;
+};
+
+struct fuse_copy_file_range_io {
+	struct fuse_copy_file_range_in fci;
+	struct fuse_write_out fwo;
+};
+
+struct fuse_fill_wb_data {
+	struct fuse_writepage_args *wpa;
+	struct fuse_file *ff;
+	struct inode *inode;
+	struct page **orig_pages;
+	unsigned int max_pages;
+};
+
+struct fuse_poll_out {
+	uint32_t revents;
+	uint32_t padding;
+};
+
+struct fuse_poll_in {
+	uint64_t fh;
+	uint64_t kh;
+	uint32_t flags;
+	uint32_t events;
+};
+
+struct fuse_bmap_out {
+	uint64_t block;
+};
+
+struct fuse_bmap_in {
+	uint64_t block;
+	uint32_t blocksize;
+	uint32_t padding;
+};
+
+enum fuse_dax_mode {
+	FUSE_DAX_INODE_DEFAULT = 0,
+	FUSE_DAX_ALWAYS = 1,
+	FUSE_DAX_NEVER = 2,
+	FUSE_DAX_INODE_USER = 3,
+};
+
+enum {
+	OPT_SOURCE = 0,
+	OPT_SUBTYPE = 1,
+	OPT_FD = 2,
+	OPT_ROOTMODE = 3,
+	OPT_USER_ID = 4,
+	OPT_GROUP_ID = 5,
+	OPT_DEFAULT_PERMISSIONS = 6,
+	OPT_ALLOW_OTHER = 7,
+	OPT_MAX_READ = 8,
+	OPT_BLKSIZE = 9,
+	OPT_ROOT_BPF = 10,
+	OPT_ROOT_DIR = 11,
+	OPT_NO_DAEMON = 12,
+	OPT_ERR = 13,
+};
+
+struct fuse_inode_identifier {
+	u64 nodeid;
+	struct inode *backing_inode;
+};
+
+struct fuse_init_in {
+	uint32_t major;
+	uint32_t minor;
+	uint32_t max_readahead;
+	uint32_t flags;
+	uint32_t flags2;
+	uint32_t unused[11];
+};
+
+struct fuse_init_out {
+	uint32_t major;
+	uint32_t minor;
+	uint32_t max_readahead;
+	uint32_t flags;
+	uint16_t max_background;
+	uint16_t congestion_threshold;
+	uint32_t max_write;
+	uint32_t time_gran;
+	uint16_t max_pages;
+	uint16_t map_alignment;
+	uint32_t flags2;
+	uint32_t unused[7];
+};
+
+struct fuse_init_args {
+	struct fuse_args args;
+	struct fuse_init_in in;
+	struct fuse_init_out out;
+};
+
+struct fuse_kstatfs {
+	uint64_t blocks;
+	uint64_t bfree;
+	uint64_t bavail;
+	uint64_t files;
+	uint64_t ffree;
+	uint32_t bsize;
+	uint32_t namelen;
+	uint32_t frsize;
+	uint32_t padding;
+	uint32_t spare[6];
+};
+
+struct fuse_statfs_out {
+	struct fuse_kstatfs st;
+};
+
+struct fuse_fs_context {
+	int fd;
+	struct file *file;
+	unsigned int rootmode;
+	kuid_t user_id;
+	kgid_t group_id;
+	bool is_bdev: 1;
+	bool fd_present: 1;
+	bool rootmode_present: 1;
+	bool user_id_present: 1;
+	bool group_id_present: 1;
+	bool default_permissions: 1;
+	bool allow_other: 1;
+	bool destroy: 1;
+	bool no_control: 1;
+	bool no_force_umount: 1;
+	bool legacy_opts_show: 1;
+	enum fuse_dax_mode dax_mode;
+	bool no_daemon: 1;
+	unsigned int max_read;
+	unsigned int blksize;
+	const char *subtype;
+	struct bpf_prog *root_bpf;
+	struct file *root_dir;
+	struct dax_device *dax_dev;
+	void **fudptr;
+};
+
+struct fuse_syncfs_in {
+	uint64_t padding;
+};
+
+struct fuse_inode_handle {
+	u64 nodeid;
+	u32 generation;
+};
+
+struct fuse_getxattr_in {
+	uint32_t size;
+	uint32_t padding;
+};
+
+struct fuse_getxattr_out {
+	uint32_t size;
+	uint32_t padding;
+};
+
+struct fuse_getxattr_io {
+	struct fuse_getxattr_in fgi;
+	struct fuse_getxattr_out fgo;
+};
+
+struct fuse_setxattr_in {
+	uint32_t size;
+	uint32_t flags;
+	uint32_t setxattr_flags;
+	uint32_t padding;
+};
+
+enum fuse_parse_result {
+	FOUND_ERR = -1,
+	FOUND_NONE = 0,
+	FOUND_SOME = 1,
+	FOUND_ALL = 2,
+};
+
+struct fuse_dirent {
+	uint64_t ino;
+	uint64_t off;
+	uint32_t namelen;
+	uint32_t type;
+	char name[0];
+};
+
+struct fuse_direntplus {
+	struct fuse_entry_out entry_out;
+	struct fuse_dirent dirent;
+};
+
+struct fuse_read_out {
+	uint64_t offset;
+	uint32_t again;
+	uint32_t padding;
+};
+
+struct fuse_read_io {
+	struct fuse_read_in fri;
+	struct fuse_read_out fro;
+};
+
+struct fuse_ioctl_out {
+	int32_t result;
+	uint32_t flags;
+	uint32_t in_iovs;
+	uint32_t out_iovs;
+};
+
+struct fuse_ioctl_iovec {
+	uint64_t base;
+	uint64_t len;
+};
+
+struct fuse_ioctl_in {
+	uint64_t fh;
+	uint32_t flags;
+	uint32_t cmd;
+	uint64_t arg;
+	uint32_t in_size;
+	uint32_t out_size;
+};
+
+struct fuse_aio_req {
+	struct kiocb iocb;
+	struct kiocb *iocb_fuse;
+};
+
+struct fuse_bpf_aio_req {
+	struct kiocb iocb;
+	refcount_t ref;
+	struct kiocb *iocb_orig;
+};
+
+struct extfuse_ctx {
+	struct dir_context ctx;
+	u8 *addr;
+	size_t offset;
+};
+
+struct virtio_device_id;
+
+struct virtio_device;
+
+struct virtio_driver {
+	struct device_driver driver;
+	const struct virtio_device_id *id_table;
+	const unsigned int *feature_table;
+	unsigned int feature_table_size;
+	const unsigned int *feature_table_legacy;
+	unsigned int feature_table_size_legacy;
+	int (*validate)(struct virtio_device *);
+	int (*probe)(struct virtio_device *);
+	void (*scan)(struct virtio_device *);
+	void (*remove)(struct virtio_device *);
+	void (*config_changed)(struct virtio_device *);
+	int (*freeze)(struct virtio_device *);
+	int (*restore)(struct virtio_device *);
+};
+
+struct virtio_device_id {
+	__u32 device;
+	__u32 vendor;
+};
+
+struct vringh_config_ops;
+
+struct virtio_config_ops;
+
+struct virtio_device {
+	int index;
+	bool failed;
+	bool config_enabled;
+	bool config_change_pending;
+	spinlock_t config_lock;
+	spinlock_t vqs_list_lock;
+	struct device dev;
+	struct virtio_device_id id;
+	const struct virtio_config_ops *config;
+	const struct vringh_config_ops *vringh_config;
+	struct list_head vqs;
+	u64 features;
+	void *priv;
+};
+
+struct virtqueue;
+
+typedef void vq_callback_t(struct virtqueue *);
+
+struct virtio_shm_region;
+
+struct virtio_config_ops {
+	void (*get)(struct virtio_device *, unsigned int, void *, unsigned int);
+	void (*set)(struct virtio_device *, unsigned int, const void *, unsigned int);
+	u32 (*generation)(struct virtio_device *);
+	u8 (*get_status)(struct virtio_device *);
+	void (*set_status)(struct virtio_device *, u8);
+	void (*reset)(struct virtio_device *);
+	int (*find_vqs)(struct virtio_device *, unsigned int, struct virtqueue **, vq_callback_t **, const char * const *, const bool *, struct irq_affinity *);
+	void (*del_vqs)(struct virtio_device *);
+	void (*synchronize_cbs)(struct virtio_device *);
+	u64 (*get_features)(struct virtio_device *);
+	int (*finalize_features)(struct virtio_device *);
+	const char * (*bus_name)(struct virtio_device *);
+	int (*set_vq_affinity)(struct virtqueue *, const struct cpumask *);
+	const struct cpumask * (*get_vq_affinity)(struct virtio_device *, int);
+	bool (*get_shm_region)(struct virtio_device *, struct virtio_shm_region *, u8);
+	int (*disable_vq_and_reset)(struct virtqueue *);
+	int (*enable_vq_after_reset)(struct virtqueue *);
+};
+
+struct virtqueue {
+	struct list_head list;
+	void (*callback)(struct virtqueue *);
+	const char *name;
+	struct virtio_device *vdev;
+	unsigned int index;
+	unsigned int num_free;
+	unsigned int num_max;
+	bool reset;
+	void *priv;
+};
+
+struct virtio_shm_region {
+	u64 addr;
+	u64 len;
+};
+
+enum {
+	OPT_DAX = 0,
+	OPT_DAX_ENUM = 1,
+};
+
+enum {
+	VQ_HIPRIO = 0,
+	VQ_REQUEST = 1,
+};
+
+struct virtio_fs_vq;
+
+struct virtio_fs {
+	struct kref refcount;
+	struct list_head list;
+	char *tag;
+	struct virtio_fs_vq *vqs;
+	unsigned int nvqs;
+	unsigned int num_request_queues;
+	struct dax_device *dax_dev;
+	void *window_kaddr;
+	phys_addr_t window_phys_addr;
+	size_t window_len;
+};
+
+struct virtio_fs_vq {
+	spinlock_t lock;
+	struct virtqueue *vq;
+	struct work_struct done_work;
+	struct list_head queued_reqs;
+	struct list_head end_reqs;
+	struct delayed_work dispatch_work;
+	struct fuse_dev *fud;
+	bool connected;
+	long in_flight;
+	struct completion in_flight_zero;
+	char name[24];
+	long: 64;
+};
+
+struct virtio_fs_req_work {
+	struct fuse_req *req;
+	struct virtio_fs_vq *fsvq;
+	struct work_struct done_work;
+};
+
+struct virtio_fs_forget_req {
+	struct fuse_in_header ih;
+	struct fuse_forget_in arg;
+};
+
+struct virtio_fs_forget {
+	struct list_head list;
+	struct virtio_fs_forget_req req;
+};
+
+enum {
+	OVL_XINO_OFF = 0,
+	OVL_XINO_AUTO = 1,
+	OVL_XINO_ON = 2,
+};
+
+enum {
+	OVL_UUID_OFF = 0,
+	OVL_UUID_NULL = 1,
+	OVL_UUID_AUTO = 2,
+	OVL_UUID_ON = 3,
+};
+
+enum ovl_path_type {
+	__OVL_PATH_UPPER = 1,
+	__OVL_PATH_MERGE = 2,
+	__OVL_PATH_ORIGIN = 4,
+};
+
+enum ovl_xattr {
+	OVL_XATTR_OPAQUE = 0,
+	OVL_XATTR_REDIRECT = 1,
+	OVL_XATTR_ORIGIN = 2,
+	OVL_XATTR_IMPURE = 3,
+	OVL_XATTR_NLINK = 4,
+	OVL_XATTR_UPPER = 5,
+	OVL_XATTR_UUID = 6,
+	OVL_XATTR_METACOPY = 7,
+	OVL_XATTR_PROTATTR = 8,
+};
+
+enum {
+	OVL_REDIRECT_OFF = 0,
+	OVL_REDIRECT_FOLLOW = 1,
+	OVL_REDIRECT_NOFOLLOW = 2,
+	OVL_REDIRECT_ON = 3,
+};
+
+enum ovl_inode_flag {
+	OVL_IMPURE = 0,
+	OVL_WHITEOUTS = 1,
+	OVL_INDEX = 2,
+	OVL_UPPERDATA = 3,
+	OVL_CONST_INO = 4,
+	OVL_HAS_DIGEST = 5,
+	OVL_VERIFIED_DIGEST = 6,
+};
+
+enum ovl_entry_flag {
+	OVL_E_UPPER_ALIAS = 0,
+	OVL_E_OPAQUE = 1,
+	OVL_E_CONNECTED = 2,
+};
+
+struct ovl_dir_cache;
+
+struct ovl_entry;
+
+struct ovl_inode {
+	union {
+		struct ovl_dir_cache *cache;
+		const char *lowerdata_redirect;
+	};
+	const char *redirect;
+	u64 version;
+	unsigned long flags;
+	struct inode vfs_inode;
+	struct dentry *__upperdentry;
+	struct ovl_entry *oe;
+	struct mutex lock;
+};
+
+struct ovl_layer;
+
+struct ovl_path {
+	const struct ovl_layer *layer;
+	struct dentry *dentry;
+};
+
+struct ovl_entry {
+	unsigned int __numlower;
+	struct ovl_path __lowerstack[0];
+};
+
+struct ovl_sb;
+
+struct ovl_layer {
+	struct vfsmount *mnt;
+	struct inode *trap;
+	struct ovl_sb *fs;
+	int idx;
+	int fsid;
+};
+
+struct ovl_sb {
+	struct super_block *sb;
+	dev_t pseudo_dev;
+	bool bad_uuid;
+	bool is_lower;
+};
+
+struct ovl_config {
+	char *upperdir;
+	char *workdir;
+	char **lowerdirs;
+	bool default_permissions;
+	int redirect_mode;
+	int verity_mode;
+	bool index;
+	int uuid;
+	bool nfs_export;
+	int xino;
+	bool metacopy;
+	bool userxattr;
+	bool ovl_volatile;
+	bool override_creds;
+};
+
+struct ovl_fs {
+	unsigned int numlayer;
+	unsigned int numfs;
+	unsigned int numdatalayer;
+	const struct ovl_layer *layers;
+	struct ovl_sb *fs;
+	struct dentry *workbasedir;
+	struct dentry *workdir;
+	struct dentry *indexdir;
+	long namelen;
+	struct ovl_config config;
+	const struct cred *creator_cred;
+	bool tmpfile;
+	bool noxattr;
+	bool nofh;
+	bool upperdir_locked;
+	bool workdir_locked;
+	struct inode *workbasedir_trap;
+	struct inode *workdir_trap;
+	struct inode *indexdir_trap;
+	int xino_mode;
+	atomic_long_t last_ino;
+	struct dentry *whiteout;
+	bool no_shared_whiteout;
+	errseq_t errseq;
+};
+
+struct ovl_opt_set {
+	bool metacopy;
+	bool redirect;
+	bool nfs_export;
+	bool index;
+};
+
+struct ovl_fs_context_layer;
+
+struct ovl_fs_context {
+	struct path upper;
+	struct path work;
+	size_t capacity;
+	size_t nr;
+	size_t nr_data;
+	struct ovl_opt_set set;
+	struct ovl_fs_context_layer *lower;
+	char *lowerdir_all;
+};
+
+struct ovl_fs_context_layer {
+	char *name;
+	struct path path;
+};
+
+struct ovl_cattr {
+	dev_t rdev;
+	umode_t mode;
+	const char *link;
+	struct dentry *hardlink;
+};
+
+struct ovl_inode_params {
+	struct inode *newinode;
+	struct dentry *upperdentry;
+	struct ovl_entry *oe;
+	bool index;
+	char *redirect;
+	char *lowerdata_redirect;
+};
+
+enum {
+	OVL_VERITY_OFF = 0,
+	OVL_VERITY_ON = 1,
+	OVL_VERITY_REQUIRE = 2,
+};
+
+struct ovl_fb {
+	u8 version;
+	u8 magic;
+	u8 len;
+	u8 flags;
+	u8 type;
+	uuid_t uuid;
+	u32 fid[0];
+} __attribute__((packed));
+
+struct ovl_fh {
+	u8 padding[3];
+	union {
+		struct ovl_fb fb;
+		struct {
+			struct {} __empty_buf;
+			u8 buf[0];
+		};
+	};
+};
+
+struct ovl_metacopy {
+	u8 version;
+	u8 len;
+	u8 flags;
+	u8 digest_algo;
+	u8 digest[64];
+};
+
+struct ovl_lookup_data {
+	struct super_block *sb;
+	struct vfsmount *mnt;
+	struct qstr name;
+	bool is_dir;
+	bool opaque;
+	bool stop;
+	bool last;
+	char *redirect;
+	int metacopy;
+	bool absolute_redirect;
+};
+
+enum ovl_copyop {
+	OVL_COPY = 0,
+	OVL_CLONE = 1,
+	OVL_DEDUPE = 2,
+};
+
+struct ovl_aio_req {
+	struct kiocb iocb;
+	refcount_t ref;
+	struct kiocb *orig_iocb;
+};
+
+struct ovl_cache_entry {
+	unsigned int len;
+	unsigned int type;
+	u64 real_ino;
+	u64 ino;
+	struct list_head l_node;
+	struct rb_node node;
+	struct ovl_cache_entry *next_maybe_whiteout;
+	bool is_upper;
+	bool is_whiteout;
+	char name[0];
+};
+
+struct ovl_dir_cache {
+	long refcount;
+	u64 version;
+	struct list_head entries;
+	struct rb_root root;
+};
+
+struct ovl_readdir_translate {
+	struct dir_context *orig_ctx;
+	struct ovl_dir_cache *cache;
+	struct dir_context ctx;
+	u64 parent_ino;
+	int fsid;
+	int xinobits;
+	bool xinowarn;
+};
+
+struct ovl_readdir_data {
+	struct dir_context ctx;
+	struct dentry *dentry;
+	bool is_lowest;
+	struct rb_root *root;
+	struct list_head *list;
+	struct list_head middle;
+	struct ovl_cache_entry *first_maybe_whiteout;
+	int count;
+	int err;
+	bool is_upper;
+	bool d_type_supported;
+};
+
+struct ovl_dir_file {
+	bool is_real;
+	bool is_upper;
+	struct ovl_dir_cache *cache;
+	struct list_head *cursor;
+	struct file *realfile;
+	struct file *upperfile;
+};
+
+struct ovl_copy_up_ctx {
+	struct dentry *parent;
+	struct dentry *dentry;
+	struct path lowerpath;
+	struct kstat stat;
+	struct kstat pstat;
+	const char *link;
+	struct dentry *destdir;
+	struct qstr destname;
+	struct dentry *workdir;
+	bool origin;
+	bool indexed;
+	bool metacopy;
+	bool metacopy_digest;
+};
+
+struct ovl_cu_creds {
+	const struct cred *old;
+	struct cred *new;
+};
+
+enum ovl_opt {
+	Opt_lowerdir = 0,
+	Opt_lowerdir_add = 1,
+	Opt_datadir_add = 2,
+	Opt_upperdir = 3,
+	Opt_workdir = 4,
+	Opt_default_permissions = 5,
+	Opt_redirect_dir = 6,
+	Opt_index = 7,
+	Opt_uuid = 8,
+	Opt_nfs_export = 9,
+	Opt_userxattr = 10,
+	Opt_xino = 11,
+	Opt_metacopy = 12,
+	Opt_verity = 13,
+	Opt_volatile = 14,
+	Opt_override_creds = 15,
+};
+
+enum LOG_RECORD_TYPE {
+	FULL___2 = 0,
+	SAME_FILE = 1,
+	SAME_FILE_CLOSE_BLOCK = 2,
+	SAME_FILE_CLOSE_BLOCK_SHORT = 3,
+	SAME_FILE_NEXT_BLOCK = 4,
+	SAME_FILE_NEXT_BLOCK_SHORT = 5,
+};
+
+enum incfs_hash_tree_algorithm {
+	INCFS_HASH_TREE_NONE = 0,
+	INCFS_HASH_TREE_SHA256 = 1,
+};
+
+enum incfs_file_header_flags {
+	INCFS_FILE_MAPPED = 2,
+};
+
+enum FILL_PERMISSION {
+	CANT_FILL = 0,
+	CAN_FILL = 1,
+};
+
+enum incfs_compression_alg {
+	COMPRESSION_NONE = 0,
+	COMPRESSION_LZ4 = 1,
+	COMPRESSION_ZSTD = 2,
+};
+
+enum incfs_block_map_entry_flags {
+	INCFS_BLOCK_COMPRESSED_LZ4 = 1,
+	INCFS_BLOCK_COMPRESSED_ZSTD = 2,
+	INCFS_BLOCK_COMPRESSED_MASK = 7,
+};
+
+enum incfs_block_flags {
+	INCFS_BLOCK_FLAGS_NONE = 0,
+	INCFS_BLOCK_FLAGS_HASH = 1,
+};
+
+typedef struct {
+	__u8 bytes[16];
+} incfs_uuid_t;
+
+struct pending_read {
+	incfs_uuid_t file_id;
+	s64 timestamp_us;
+	atomic_t done;
+	int block_index;
+	int serial_number;
+	uid_t uid;
+	struct list_head mi_reads_list;
+	struct list_head segment_reads_list;
+	struct callback_head rcu;
+};
+
+struct full_record {
+	enum LOG_RECORD_TYPE type: 3;
+	u32 block_index: 29;
+	incfs_uuid_t file_id;
+	u64 absolute_ts_us;
+	uid_t uid;
+} __attribute__((packed));
+
+struct read_log_state {
+	u32 generation_id;
+	u32 next_offset;
+	u32 current_pass_no;
+	struct full_record base_record;
+	u64 current_record_no;
+};
+
+struct read_log {
+	void *rl_ring_buf;
+	int rl_size;
+	struct read_log_state rl_head;
+	struct read_log_state rl_tail;
+	spinlock_t rl_lock;
+	wait_queue_head_t ml_notif_wq;
+	struct delayed_work ml_wakeup_work;
+};
+
+struct mount_options {
+	unsigned int read_timeout_ms;
+	unsigned int readahead_pages;
+	unsigned int read_log_pages;
+	unsigned int read_log_wakeup_count;
+	bool report_uid;
+	char *sysfs_name;
+};
+
+struct mem_range {
+	u8 *data;
+	size_t len;
+};
+
+struct incfs_per_uid_read_timeouts;
+
+struct ZSTD_DCtx_s;
+
+typedef struct ZSTD_DCtx_s ZSTD_DCtx;
+
+typedef ZSTD_DCtx ZSTD_DStream;
+
+struct incfs_sysfs_node;
+
+struct mount_info {
+	struct super_block *mi_sb;
+	struct path mi_backing_dir_path;
+	struct dentry *mi_index_dir;
+	bool mi_index_free;
+	struct dentry *mi_incomplete_dir;
+	bool mi_incomplete_free;
+	const struct cred *mi_owner;
+	struct mount_options mi_options;
+	struct mutex mi_dir_struct_mutex;
+	wait_queue_head_t mi_pending_reads_notif_wq;
+	spinlock_t pending_read_lock;
+	struct list_head mi_reads_list_head;
+	int mi_pending_reads_count;
+	int mi_last_pending_read_number;
+	struct read_log mi_log;
+	struct mem_range pseudo_file_xattr[3];
+	wait_queue_head_t mi_blocks_written_notif_wq;
+	atomic_t mi_blocks_written;
+	spinlock_t mi_per_uid_read_timeouts_lock;
+	struct incfs_per_uid_read_timeouts *mi_per_uid_read_timeouts;
+	int mi_per_uid_read_timeouts_size;
+	struct mutex mi_zstd_workspace_mutex;
+	void *mi_zstd_workspace;
+	ZSTD_DStream *mi_zstd_stream;
+	struct delayed_work mi_zstd_cleanup_work;
+	struct incfs_sysfs_node *mi_sysfs_node;
+	struct mutex mi_le_mutex;
+	incfs_uuid_t mi_le_file_id;
+	u64 mi_le_time_us;
+	u32 mi_le_page;
+	u32 mi_le_errno;
+	uid_t mi_le_uid;
+	u32 mi_reads_failed_timed_out;
+	u32 mi_reads_failed_hash_verification;
+	u32 mi_reads_failed_other;
+	u32 mi_reads_delayed_pending;
+	u64 mi_reads_delayed_pending_us;
+	u32 mi_reads_delayed_min;
+	u64 mi_reads_delayed_min_us;
+};
+
+struct incfs_per_uid_read_timeouts {
+	__u32 uid;
+	__u32 min_time_us;
+	__u32 min_pending_time_us;
+	__u32 max_pending_time_us;
+};
+
+typedef uint16_t U16;
+
+typedef uint8_t BYTE;
+
+typedef uint32_t U32;
+
+typedef struct {
+	U16 nextState;
+	BYTE nbAdditionalBits;
+	BYTE nbBits;
+	U32 baseValue;
+} ZSTD_seqSymbol;
+
+typedef U32 HUF_DTable;
+
+typedef struct {
+	ZSTD_seqSymbol LLTable[513];
+	ZSTD_seqSymbol OFTable[257];
+	ZSTD_seqSymbol MLTable[513];
+	HUF_DTable hufTable[4097];
+	U32 rep[3];
+	U32 workspace[157];
+} ZSTD_entropyDTables_t;
+
+typedef enum {
+	ZSTD_frame = 0,
+	ZSTD_skippableFrame = 1,
+} ZSTD_frameType_e;
+
+typedef struct {
+	unsigned long long frameContentSize;
+	unsigned long long windowSize;
+	unsigned int blockSizeMax;
+	ZSTD_frameType_e frameType;
+	unsigned int headerSize;
+	unsigned int dictID;
+	unsigned int checksumFlag;
+} ZSTD_frameHeader;
+
+typedef uint64_t U64;
+
+typedef enum {
+	bt_raw = 0,
+	bt_rle = 1,
+	bt_compressed = 2,
+	bt_reserved = 3,
+} blockType_e;
+
+typedef enum {
+	ZSTDds_getFrameHeaderSize = 0,
+	ZSTDds_decodeFrameHeader = 1,
+	ZSTDds_decodeBlockHeader = 2,
+	ZSTDds_decompressBlock = 3,
+	ZSTDds_decompressLastBlock = 4,
+	ZSTDds_checkChecksum = 5,
+	ZSTDds_decodeSkippableHeader = 6,
+	ZSTDds_skipFrame = 7,
+} ZSTD_dStage;
+
+struct xxh64_state {
+	uint64_t total_len;
+	uint64_t v1;
+	uint64_t v2;
+	uint64_t v3;
+	uint64_t v4;
+	uint64_t mem64[4];
+	uint32_t memsize;
+};
+
+typedef enum {
+	ZSTD_f_zstd1 = 0,
+	ZSTD_f_zstd1_magicless = 1,
+} ZSTD_format_e;
+
+typedef enum {
+	ZSTD_d_validateChecksum = 0,
+	ZSTD_d_ignoreChecksum = 1,
+} ZSTD_forceIgnoreChecksum_e;
+
+typedef void * (*ZSTD_allocFunction)(void *, size_t);
+
+typedef void (*ZSTD_freeFunction)(void *, void *);
+
+typedef struct {
+	ZSTD_allocFunction customAlloc;
+	ZSTD_freeFunction customFree;
+	void *opaque;
+} ZSTD_customMem;
+
+typedef enum {
+	ZSTD_use_indefinitely = -1,
+	ZSTD_dont_use = 0,
+	ZSTD_use_once = 1,
+} ZSTD_dictUses_e;
+
+struct ZSTD_DDict_s;
+
+typedef struct ZSTD_DDict_s ZSTD_DDict;
+
+typedef struct {
+	const ZSTD_DDict **ddictPtrTable;
+	size_t ddictPtrTableSize;
+	size_t ddictPtrCount;
+} ZSTD_DDictHashSet;
+
+typedef enum {
+	ZSTD_rmd_refSingleDDict = 0,
+	ZSTD_rmd_refMultipleDDicts = 1,
+} ZSTD_refMultipleDDicts_e;
+
+typedef enum {
+	zdss_init = 0,
+	zdss_loadHeader = 1,
+	zdss_read = 2,
+	zdss_load = 3,
+	zdss_flush = 4,
+} ZSTD_dStreamStage;
+
+typedef enum {
+	ZSTD_bm_buffered = 0,
+	ZSTD_bm_stable = 1,
+} ZSTD_bufferMode_e;
+
+struct ZSTD_outBuffer_s {
+	void *dst;
+	size_t size;
+	size_t pos;
+};
+
+typedef struct ZSTD_outBuffer_s ZSTD_outBuffer;
+
+typedef enum {
+	ZSTD_not_in_dst = 0,
+	ZSTD_in_dst = 1,
+	ZSTD_split = 2,
+} ZSTD_litLocation_e;
+
+struct ZSTD_DCtx_s {
+	const ZSTD_seqSymbol *LLTptr;
+	const ZSTD_seqSymbol *MLTptr;
+	const ZSTD_seqSymbol *OFTptr;
+	const HUF_DTable *HUFptr;
+	ZSTD_entropyDTables_t entropy;
+	U32 workspace[640];
+	const void *previousDstEnd;
+	const void *prefixStart;
+	const void *virtualStart;
+	const void *dictEnd;
+	size_t expected;
+	ZSTD_frameHeader fParams;
+	U64 processedCSize;
+	U64 decodedSize;
+	blockType_e bType;
+	ZSTD_dStage stage;
+	U32 litEntropy;
+	U32 fseEntropy;
+	struct xxh64_state xxhState;
+	size_t headerSize;
+	ZSTD_format_e format;
+	ZSTD_forceIgnoreChecksum_e forceIgnoreChecksum;
+	U32 validateChecksum;
+	const BYTE *litPtr;
+	ZSTD_customMem customMem;
+	size_t litSize;
+	size_t rleSize;
+	size_t staticSize;
+	ZSTD_DDict *ddictLocal;
+	const ZSTD_DDict *ddict;
+	U32 dictID;
+	int ddictIsCold;
+	ZSTD_dictUses_e dictUses;
+	ZSTD_DDictHashSet *ddictSet;
+	ZSTD_refMultipleDDicts_e refMultipleDDicts;
+	ZSTD_dStreamStage streamStage;
+	char *inBuff;
+	size_t inBuffSize;
+	size_t inPos;
+	size_t maxWindowSize;
+	char *outBuff;
+	size_t outBuffSize;
+	size_t outStart;
+	size_t outEnd;
+	size_t lhSize;
+	U32 hostageByte;
+	int noForwardProgress;
+	ZSTD_bufferMode_e outBufferMode;
+	ZSTD_outBuffer expectedOutBuffer;
+	BYTE *litBuffer;
+	const BYTE *litBufferEnd;
+	ZSTD_litLocation_e litBufferLocation;
+	BYTE litExtraBuffer[65568];
+	BYTE headerBuffer[18];
+	size_t oversizedDuration;
+};
+
+struct incfs_sysfs_node {
+	struct kobject isn_sysfs_node;
+	struct completion isn_completion;
+	struct mount_info *isn_mi;
+};
+
+struct data_file;
+
+struct inode_info {
+	struct mount_info *n_mount_info;
+	struct inode *n_backing_inode;
+	struct data_file *n_file;
+	struct inode n_vfs_inode;
+};
+
+struct data_file_segment {
+	wait_queue_head_t new_data_arrival_wq;
+	struct rw_semaphore rwsem;
+	struct list_head reads_list_head;
+};
+
+struct backing_file_context;
+
+struct mtree;
+
+struct incfs_df_signature;
+
+struct incfs_df_verity_signature;
+
+struct data_file {
+	struct backing_file_context *df_backing_file_context;
+	struct mount_info *df_mount_info;
+	incfs_uuid_t df_id;
+	struct data_file_segment df_segments[3];
+	loff_t df_metadata_off;
+	loff_t df_blockmap_off;
+	loff_t df_size;
+	u32 df_header_flags;
+	int df_data_block_count;
+	int df_total_block_count;
+	loff_t df_mapped_offset;
+	atomic_t df_data_blocks_written;
+	u32 df_initial_data_blocks_written;
+	atomic_t df_hash_blocks_written;
+	u32 df_initial_hash_blocks_written;
+	loff_t df_status_offset;
+	struct mutex df_enable_verity;
+	struct mtree *df_hash_tree;
+	struct incfs_df_signature *df_signature;
+	struct mem_range df_verity_file_digest;
+	struct incfs_df_verity_signature *df_verity_signature;
+};
+
+struct backing_file_context {
+	struct mutex bc_mutex;
+	struct file *bc_file;
+	loff_t bc_last_md_record_offset;
+	const struct cred *bc_cred;
+	bool bc_has_bad_block;
+};
+
+struct incfs_hash_alg;
+
+struct mtree {
+	struct incfs_hash_alg *alg;
+	u8 root_hash[32];
+	u32 hash_level_suboffset[8];
+	u32 hash_tree_area_size;
+	int depth;
+};
+
+struct incfs_hash_alg {
+	const char *name;
+	int digest_size;
+	enum incfs_hash_tree_algorithm id;
+	struct crypto_shash *shash;
+};
+
+struct incfs_df_signature {
+	u32 sig_size;
+	u64 sig_offset;
+	u32 hash_size;
+	u64 hash_offset;
+};
+
+struct incfs_df_verity_signature {
+	u32 size;
+	u64 offset;
+};
+
+struct same_file {
+	enum LOG_RECORD_TYPE type: 3;
+	u32 block_index: 29;
+	uid_t uid;
+	u16 relative_ts_us;
+} __attribute__((packed));
+
+struct same_file_close_block {
+	enum LOG_RECORD_TYPE type: 3;
+	u16 relative_ts_us: 13;
+	s16 block_index_delta;
+};
+
+struct same_file_close_block_short {
+	enum LOG_RECORD_TYPE type: 3;
+	u8 relative_ts_tens_us: 5;
+	s8 block_index_delta;
+} __attribute__((packed));
+
+struct same_file_next_block {
+	enum LOG_RECORD_TYPE type: 3;
+	u16 relative_ts_us: 13;
+} __attribute__((packed));
+
+struct same_file_next_block_short {
+	enum LOG_RECORD_TYPE type: 3;
+	u8 relative_ts_tens_us: 5;
+} __attribute__((packed));
+
+union log_record {
+	struct full_record full_record;
+	struct same_file same_file;
+	struct same_file_close_block same_file_close_block;
+	struct same_file_close_block_short same_file_close_block_short;
+	struct same_file_next_block same_file_next_block;
+	struct same_file_next_block_short same_file_next_block_short;
+};
+
+struct incfs_md_header {
+	__u8 h_md_entry_type;
+	__le16 h_record_size;
+	__le32 h_unused1;
+	__le64 h_next_md_offset;
+	__le64 h_unused2;
+} __attribute__((packed));
+
+struct incfs_blockmap {
+	struct incfs_md_header m_header;
+	__le64 m_base_offset;
+	__le32 m_block_count;
+} __attribute__((packed));
+
+struct incfs_file_signature {
+	struct incfs_md_header sg_header;
+	__le32 sg_sig_size;
+	__le64 sg_sig_offset;
+	__le32 sg_hash_tree_size;
+	__le64 sg_hash_tree_offset;
+} __attribute__((packed));
+
+struct incfs_status {
+	struct incfs_md_header is_header;
+	__le32 is_data_blocks_written;
+	__le32 is_hash_blocks_written;
+	__le32 is_dummy[6];
+} __attribute__((packed));
+
+struct incfs_file_verity_signature {
+	struct incfs_md_header vs_header;
+	__le32 vs_size;
+	__le64 vs_offset;
+} __attribute__((packed));
+
+struct metadata_handler {
+	loff_t md_record_offset;
+	loff_t md_prev_record_offset;
+	void *context;
+	union {
+		struct incfs_md_header md_header;
+		struct incfs_blockmap blockmap;
+		struct incfs_file_signature signature;
+		struct incfs_status status;
+		struct incfs_file_verity_signature verity_signature;
+	} md_buffer;
+	int (*handle_blockmap)(struct incfs_blockmap *, struct metadata_handler *);
+	int (*handle_signature)(struct incfs_file_signature *, struct metadata_handler *);
+	int (*handle_status)(struct incfs_status *, struct metadata_handler *);
+	int (*handle_verity_signature)(struct incfs_file_verity_signature *, struct metadata_handler *);
+};
+
+struct incfs_blockmap_entry {
+	__le32 me_data_offset_lo;
+	__le16 me_data_offset_hi;
+	__le16 me_data_size;
+	__le16 me_flags;
+} __attribute__((packed));
+
+struct data_file_block {
+	loff_t db_backing_file_data_offset;
+	size_t db_stored_size;
+	enum incfs_compression_alg db_comp_alg;
+};
+
+struct incfs_read_data_file_timeouts {
+	u32 min_time_us;
+	u32 min_pending_time_us;
+	u32 max_pending_time_us;
+};
+
+struct ZSTD_inBuffer_s {
+	const void *src;
+	size_t size;
+	size_t pos;
+};
+
+typedef struct ZSTD_inBuffer_s ZSTD_inBuffer;
+
+typedef ZSTD_DStream zstd_dstream;
+
+typedef ZSTD_outBuffer zstd_out_buffer;
+
+typedef ZSTD_inBuffer zstd_in_buffer;
+
+struct dir_file {
+	struct mount_info *mount_info;
+	struct file *backing_dir;
+};
+
+struct incfs_file_data {
+	enum FILL_PERMISSION fd_fill_permission;
+	int fd_get_block_pos;
+	int fd_filled_data_blocks;
+	int fd_filled_hash_blocks;
+};
+
+struct incfs_get_filled_blocks_args {
+	__u64 range_buffer;
+	__u32 range_buffer_size;
+	__u32 start_index;
+	__u32 end_index;
+	__u32 total_blocks_out;
+	__u32 data_blocks_out;
+	__u32 range_buffer_size_out;
+	__u32 index_out;
+};
+
+struct incfs_filled_range {
+	__u32 begin;
+	__u32 end;
+};
+
+struct incfs_fill_block {
+	__u32 block_index;
+	__u32 data_len;
+	__u64 data;
+	__u8 compression;
+	__u8 flags;
+	__u16 reserved1;
+	__u32 reserved2;
+	__u64 reserved3;
+};
+
+struct incfs_pending_read_info {
+	incfs_uuid_t file_id;
+	__u64 timestamp_us;
+	__u32 block_index;
+	__u32 serial_number;
+};
+
+struct incfs_pending_read_info2 {
+	incfs_uuid_t file_id;
+	__u64 timestamp_us;
+	__u32 block_index;
+	__u32 serial_number;
+	__u32 uid;
+	__u32 reserved;
+};
+
+enum incfs_metadata_type {
+	INCFS_MD_NONE = 0,
+	INCFS_MD_BLOCK_MAP = 1,
+	INCFS_MD_FILE_ATTR = 2,
+	INCFS_MD_SIGNATURE = 3,
+	INCFS_MD_STATUS = 4,
+	INCFS_MD_VERITY_SIGNATURE = 5,
+};
+
+struct incfs_file_header {
+	__le64 fh_magic;
+	__le64 fh_version;
+	__le16 fh_header_size;
+	__le16 fh_data_block_size;
+	__le32 fh_flags;
+	union {
+		struct {
+			__le64 fh_first_md_offset;
+			__le64 fh_file_size;
+			incfs_uuid_t fh_uuid;
+		};
+		struct {
+			__le64 fh_original_offset;
+			__le64 fh_mapped_file_size;
+			incfs_uuid_t fh_original_uuid;
+		};
+	};
+};
+
+struct signature_info {
+	u32 version;
+	enum incfs_hash_tree_algorithm hash_algorithm;
+	u8 log2_blocksize;
+	struct mem_range salt;
+	struct mem_range root_hash;
+};
+
+struct inode_search {
+	unsigned long ino;
+};
+
+struct incfs_new_file_args {
+	incfs_uuid_t file_id;
+	__u64 size;
+	__u16 mode;
+	__u16 reserved1;
+	__u32 reserved2;
+	__u64 directory_path;
+	__u64 file_name;
+	__u64 file_attr;
+	__u32 file_attr_len;
+	__u32 reserved4;
+	__u64 signature_info;
+	__u64 signature_size;
+	__u64 reserved6;
+};
+
+struct incfs_get_last_read_error_args {
+	incfs_uuid_t file_id_out;
+	__u64 time_us_out;
+	__u32 page_out;
+	__u32 errno_out;
+	__u32 uid_out;
+	__u32 reserved1;
+	__u64 reserved2;
+};
+
+struct incfs_get_read_timeouts_args {
+	__u64 timeouts_array;
+	__u32 timeouts_array_size;
+	__u32 timeouts_array_size_out;
+};
+
+struct incfs_permit_fill {
+	__u32 file_descriptor;
+};
+
+struct incfs_create_mapped_file_args {
+	__u64 size;
+	__u16 mode;
+	__u16 reserved1;
+	__u32 reserved2;
+	__u64 directory_path;
+	__u64 file_name;
+	incfs_uuid_t source_file_id;
+	__u64 source_offset;
+};
+
+struct incfs_set_read_timeouts_args {
+	__u64 timeouts_array;
+	__u32 timeouts_array_size;
+};
+
+struct pending_reads_state {
+	int last_pending_read_sn;
+};
+
+struct log_file_state {
+	struct read_log_state state;
+};
+
+struct blocks_written_file_state {
+	unsigned long blocks_written;
+};
+
+enum parse_parameter {
+	Opt_read_timeout = 0,
+	Opt_readahead_pages = 1,
+	Opt_rlog_pages = 2,
+	Opt_rlog_wakeup_cnt = 3,
+	Opt_report_uid = 4,
+	Opt_sysfs_name = 5,
+	Opt_err___4 = 6,
+};
+
+struct dentry_info {
+	struct path backing_path;
+};
+
+struct incfs_get_file_sig_args {
+	__u64 file_signature;
+	__u32 file_signature_buf_size;
+	__u32 file_signature_len_out;
+};
+
+struct incfs_get_block_count_args {
+	__u32 total_data_blocks_out;
+	__u32 filled_data_blocks_out;
+	__u32 total_hash_blocks_out;
+	__u32 filled_hash_blocks_out;
+};
+
+struct incfs_fill_blocks {
+	__u64 count;
+	__u64 fill_blocks;
+};
+
+struct inode_search___2 {
+	unsigned long ino;
+	struct dentry *backing_dentry;
+	size_t size;
+	bool verity;
+};
+
+enum {
+	Opt_uid___5 = 0,
+	Opt_gid___6 = 1,
+	Opt_mode___4 = 2,
+	Opt_err___5 = 3,
+};
+
+struct debugfs_fsdata {
+	const struct file_operations *real_fops;
+	union {
+		debugfs_automount_t automount;
+		struct {
+			refcount_t active_users;
+			struct completion active_users_drained;
+		};
+	};
+};
+
+struct debugfs_mount_opts {
+	kuid_t uid;
+	kgid_t gid;
+	umode_t mode;
+	unsigned int opts;
+};
+
+struct debugfs_fs_info {
+	struct debugfs_mount_opts mount_opts;
+};
+
+struct debugfs_reg32 {
+	char *name;
+	unsigned long offset;
+};
+
+struct debugfs_blob_wrapper {
+	void *data;
+	unsigned long size;
+};
+
+struct debugfs_regset32 {
+	const struct debugfs_reg32 *regs;
+	int nregs;
+	void *base;
+	struct device *dev;
+};
+
+struct debugfs_devm_entry {
+	int (*read)(struct seq_file *, void *);
+	struct device *dev;
+};
+
+struct tracefs_dir_ops {
+	int (*mkdir)(const char *);
+	int (*rmdir)(const char *);
+};
+
+enum {
+	TRACEFS_EVENT_INODE = 2,
+	TRACEFS_EVENT_TOP_INODE = 4,
+	TRACEFS_GID_PERM_SET = 8,
+	TRACEFS_UID_PERM_SET = 16,
+	TRACEFS_INSTANCE_INODE = 32,
+};
+
+struct tracefs_inode {
+	struct inode vfs_inode;
+	unsigned long flags;
+	void *private;
+};
+
+struct tracefs_mount_opts {
+	kuid_t uid;
+	kgid_t gid;
+	umode_t mode;
+	unsigned int opts;
+};
+
+struct tracefs_fs_info {
+	struct tracefs_mount_opts mount_opts;
+};
+
+struct eventfs_attr {
+	int mode;
+	kuid_t uid;
+	kgid_t gid;
+};
+
+struct eventfs_inode {
+	union {
+		struct list_head list;
+		struct callback_head rcu;
+	};
+	struct list_head children;
+	const struct eventfs_entry *entries;
+	const char *name;
+	struct dentry *events_dir;
+	struct eventfs_attr *entry_attrs;
+	void *data;
+	struct eventfs_attr attr;
+	struct kref kref;
+	unsigned int is_freed: 1;
+	unsigned int is_events: 1;
+	unsigned int nr_entries: 30;
+	unsigned int ino;
+};
+
+enum {
+	EVENTFS_SAVE_MODE = 65536,
+	EVENTFS_SAVE_UID = 131072,
+	EVENTFS_SAVE_GID = 262144,
+	EVENTFS_TOPLEVEL = 524288,
+};
+
+typedef __le32 f2fs_hash_t;
+
+enum page_type {
+	DATA = 0,
+	NODE = 1,
+	META = 2,
+	NR_PAGE_TYPE = 3,
+	META_FLUSH = 4,
+	IPU = 5,
+	OPU = 6,
+};
+
+enum temp_type {
+	HOT = 0,
+	WARM = 1,
+	COLD = 2,
+	NR_TEMP_TYPE = 3,
+};
+
+enum iostat_type {
+	APP_DIRECT_IO = 0,
+	APP_BUFFERED_IO = 1,
+	APP_WRITE_IO = 2,
+	APP_MAPPED_IO = 3,
+	APP_BUFFERED_CDATA_IO = 4,
+	APP_MAPPED_CDATA_IO = 5,
+	FS_DATA_IO = 6,
+	FS_CDATA_IO = 7,
+	FS_NODE_IO = 8,
+	FS_META_IO = 9,
+	FS_GC_DATA_IO = 10,
+	FS_GC_NODE_IO = 11,
+	FS_CP_DATA_IO = 12,
+	FS_CP_NODE_IO = 13,
+	FS_CP_META_IO = 14,
+	APP_DIRECT_READ_IO = 15,
+	APP_BUFFERED_READ_IO = 16,
+	APP_READ_IO = 17,
+	APP_MAPPED_READ_IO = 18,
+	APP_BUFFERED_CDATA_READ_IO = 19,
+	APP_MAPPED_CDATA_READ_IO = 20,
+	FS_DATA_READ_IO = 21,
+	FS_GDATA_READ_IO = 22,
+	FS_CDATA_READ_IO = 23,
+	FS_NODE_READ_IO = 24,
+	FS_META_READ_IO = 25,
+	FS_DISCARD_IO = 26,
+	FS_FLUSH_IO = 27,
+	FS_ZONE_RESET_IO = 28,
+	NR_IO_TYPE = 29,
+};
+
+enum {
+	FI_NEW_INODE = 0,
+	FI_DIRTY_INODE = 1,
+	FI_AUTO_RECOVER = 2,
+	FI_DIRTY_DIR = 3,
+	FI_INC_LINK = 4,
+	FI_ACL_MODE = 5,
+	FI_NO_ALLOC = 6,
+	FI_FREE_NID = 7,
+	FI_NO_EXTENT = 8,
+	FI_INLINE_XATTR = 9,
+	FI_INLINE_DATA = 10,
+	FI_INLINE_DENTRY = 11,
+	FI_APPEND_WRITE = 12,
+	FI_UPDATE_WRITE = 13,
+	FI_NEED_IPU = 14,
+	FI_ATOMIC_FILE = 15,
+	FI_DATA_EXIST = 16,
+	FI_INLINE_DOTS = 17,
+	FI_SKIP_WRITES = 18,
+	FI_OPU_WRITE = 19,
+	FI_DIRTY_FILE = 20,
+	FI_PREALLOCATED_ALL = 21,
+	FI_HOT_DATA = 22,
+	FI_EXTRA_ATTR = 23,
+	FI_PROJ_INHERIT = 24,
+	FI_PIN_FILE = 25,
+	FI_VERITY_IN_PROGRESS = 26,
+	FI_COMPRESSED_FILE = 27,
+	FI_COMPRESS_CORRUPT = 28,
+	FI_MMAP_FILE = 29,
+	FI_ENABLE_COMPRESS = 30,
+	FI_COMPRESS_RELEASED = 31,
+	FI_ALIGNED_WRITE = 32,
+	FI_COW_FILE = 33,
+	FI_ATOMIC_COMMITTED = 34,
+	FI_ATOMIC_REPLACE = 35,
+	FI_OPENED_FILE = 36,
+	FI_MAX = 37,
+};
+
+enum {
+	FAULT_KMALLOC = 0,
+	FAULT_KVMALLOC = 1,
+	FAULT_PAGE_ALLOC = 2,
+	FAULT_PAGE_GET = 3,
+	FAULT_ALLOC_BIO = 4,
+	FAULT_ALLOC_NID = 5,
+	FAULT_ORPHAN = 6,
+	FAULT_BLOCK = 7,
+	FAULT_DIR_DEPTH = 8,
+	FAULT_EVICT_INODE = 9,
+	FAULT_TRUNCATE = 10,
+	FAULT_READ_IO = 11,
+	FAULT_CHECKPOINT = 12,
+	FAULT_DISCARD = 13,
+	FAULT_WRITE_IO = 14,
+	FAULT_SLAB_ALLOC = 15,
+	FAULT_DQUOT_INIT = 16,
+	FAULT_LOCK_OP = 17,
+	FAULT_BLKADDR_VALIDITY = 18,
+	FAULT_BLKADDR_CONSISTENCE = 19,
+	FAULT_NO_SEGMENT = 20,
+	FAULT_MAX = 21,
+};
+
+enum {
+	CP_TIME = 0,
+	REQ_TIME = 1,
+	DISCARD_TIME = 2,
+	GC_TIME = 3,
+	DISABLE_TIME = 4,
+	UMOUNT_DISCARD_TIMEOUT = 5,
+	MAX_TIME = 6,
+};
+
+enum fsync_mode {
+	FSYNC_MODE_POSIX = 0,
+	FSYNC_MODE_STRICT = 1,
+	FSYNC_MODE_NOBARRIER = 2,
+};
+
+enum {
+	ORPHAN_INO = 0,
+	APPEND_INO = 1,
+	UPDATE_INO = 2,
+	TRANS_DIR_INO = 3,
+	FLUSH_INO = 4,
+	MAX_INO_ENTRY = 5,
+};
+
+enum {
+	SBI_IS_DIRTY = 0,
+	SBI_IS_CLOSE = 1,
+	SBI_NEED_FSCK = 2,
+	SBI_POR_DOING = 3,
+	SBI_NEED_SB_WRITE = 4,
+	SBI_NEED_CP = 5,
+	SBI_IS_SHUTDOWN = 6,
+	SBI_IS_RECOVERED = 7,
+	SBI_CP_DISABLED = 8,
+	SBI_CP_DISABLED_QUICK = 9,
+	SBI_QUOTA_NEED_FLUSH = 10,
+	SBI_QUOTA_SKIP_FLUSH = 11,
+	SBI_QUOTA_NEED_REPAIR = 12,
+	SBI_IS_RESIZEFS = 13,
+	SBI_IS_FREEZING = 14,
+	SBI_IS_WRITABLE = 15,
+	MAX_SBI_FLAG = 16,
+};
+
+enum f2fs_error {
+	ERROR_CORRUPTED_CLUSTER = 0,
+	ERROR_FAIL_DECOMPRESSION = 1,
+	ERROR_INVALID_BLKADDR = 2,
+	ERROR_CORRUPTED_DIRENT = 3,
+	ERROR_CORRUPTED_INODE = 4,
+	ERROR_INCONSISTENT_SUMMARY = 5,
+	ERROR_INCONSISTENT_FOOTER = 6,
+	ERROR_INCONSISTENT_SUM_TYPE = 7,
+	ERROR_CORRUPTED_JOURNAL = 8,
+	ERROR_INCONSISTENT_NODE_COUNT = 9,
+	ERROR_INCONSISTENT_BLOCK_COUNT = 10,
+	ERROR_INVALID_CURSEG = 11,
+	ERROR_INCONSISTENT_SIT = 12,
+	ERROR_CORRUPTED_VERITY_XATTR = 13,
+	ERROR_CORRUPTED_XATTR = 14,
+	ERROR_INVALID_NODE_REFERENCE = 15,
+	ERROR_INCONSISTENT_NAT = 16,
+	ERROR_MAX = 17,
+};
+
+enum extent_type {
+	EX_READ = 0,
+	EX_BLOCK_AGE = 1,
+	NR_EXTENT_CACHES = 2,
+};
+
+enum {
+	PAGE_PRIVATE_NOT_POINTER = 0,
+	PAGE_PRIVATE_ONGOING_MIGRATION = 1,
+	PAGE_PRIVATE_INLINE_INODE = 2,
+	PAGE_PRIVATE_REF_RESOURCE = 3,
+	PAGE_PRIVATE_MAX = 4,
+};
+
+enum count_type {
+	F2FS_DIRTY_DENTS = 0,
+	F2FS_DIRTY_DATA = 1,
+	F2FS_DIRTY_QDATA = 2,
+	F2FS_DIRTY_NODES = 3,
+	F2FS_DIRTY_META = 4,
+	F2FS_DIRTY_IMETA = 5,
+	F2FS_WB_CP_DATA = 6,
+	F2FS_WB_DATA = 7,
+	F2FS_RD_DATA = 8,
+	F2FS_RD_NODE = 9,
+	F2FS_RD_META = 10,
+	F2FS_DIO_WRITE = 11,
+	F2FS_DIO_READ = 12,
+	NR_COUNT_TYPE = 13,
+};
+
+struct f2fs_rwsem {
+	struct rw_semaphore internal_rwsem;
+	wait_queue_head_t read_waiters;
+};
+
+typedef u32 nid_t;
+
+struct extent_tree;
+
+struct f2fs_inode_info {
+	struct inode vfs_inode;
+	unsigned long i_flags;
+	unsigned char i_advise;
+	unsigned char i_dir_level;
+	union {
+		unsigned int i_current_depth;
+		unsigned short i_gc_failures;
+	};
+	unsigned int i_pino;
+	umode_t i_acl_mode;
+	unsigned long flags[1];
+	struct f2fs_rwsem i_sem;
+	atomic_t dirty_pages;
+	f2fs_hash_t chash;
+	unsigned int clevel;
+	struct task_struct *task;
+	struct task_struct *cp_task;
+	struct task_struct *wb_task;
+	nid_t i_xattr_nid;
+	loff_t last_disk_size;
+	spinlock_t i_size_lock;
+	struct dquot __attribute__((btf_type_tag("rcu"))) *i_dquot[3];
+	qsize_t i_reserved_quota;
+	struct list_head dirty_list;
+	struct list_head gdirty_list;
+	struct task_struct *atomic_write_task;
+	struct extent_tree *extent_tree[2];
+	union {
+		struct inode *cow_inode;
+		struct inode *atomic_inode;
+	};
+	struct f2fs_rwsem i_gc_rwsem[2];
+	struct f2fs_rwsem i_xattr_sem;
+	int i_extra_isize;
+	kprojid_t i_projid;
+	int i_inline_xattr_size;
+	struct timespec64 i_crtime;
+	struct timespec64 i_disk_time[3];
+	atomic_t i_compr_blocks;
+	unsigned char i_compress_algorithm;
+	unsigned char i_log_cluster_size;
+	unsigned char i_compress_level;
+	unsigned char i_compress_flag;
+	unsigned int i_cluster_size;
+	unsigned int atomic_write_cnt;
+	loff_t original_i_size;
+};
+
+typedef u32 block_t;
+
+struct extent_info {
+	unsigned int fofs;
+	unsigned int len;
+	union {
+		struct {
+			block_t blk;
+			unsigned int c_len;
+		};
+		struct {
+			unsigned long long age;
+			unsigned long long last_blocks;
+		};
+	};
+};
+
+struct extent_node;
+
+struct extent_tree {
+	nid_t ino;
+	enum extent_type type;
+	struct rb_root_cached root;
+	struct extent_node *cached_en;
+	struct list_head list;
+	rwlock_t lock;
+	atomic_t node_cnt;
+	bool largest_updated;
+	struct extent_info largest;
+};
+
+struct extent_node {
+	struct rb_node rb_node;
+	struct extent_info ei;
+	struct list_head list;
+	struct extent_tree *et;
+};
+
+struct f2fs_dir_entry {
+	__le32 hash_code;
+	__le32 ino;
+	__le16 name_len;
+	__u8 file_type;
+} __attribute__((packed));
+
+struct f2fs_dentry_block {
+	__u8 dentry_bitmap[27];
+	__u8 reserved[3];
+	struct f2fs_dir_entry dentry[214];
+	__u8 filename[1712];
+};
+
+struct f2fs_extent {
+	__le32 fofs;
+	__le32 blk;
+	__le32 len;
+};
+
+struct f2fs_inode {
+	__le16 i_mode;
+	__u8 i_advise;
+	__u8 i_inline;
+	__le32 i_uid;
+	__le32 i_gid;
+	__le32 i_links;
+	__le64 i_size;
+	__le64 i_blocks;
+	__le64 i_atime;
+	__le64 i_ctime;
+	__le64 i_mtime;
+	__le32 i_atime_nsec;
+	__le32 i_ctime_nsec;
+	__le32 i_mtime_nsec;
+	__le32 i_generation;
+	union {
+		__le32 i_current_depth;
+		__le16 i_gc_failures;
+	};
+	__le32 i_xattr_nid;
+	__le32 i_flags;
+	__le32 i_pino;
+	__le32 i_namelen;
+	__u8 i_name[255];
+	__u8 i_dir_level;
+	struct f2fs_extent i_ext;
+	union {
+		struct {
+			__le16 i_extra_isize;
+			__le16 i_inline_xattr_size;
+			__le32 i_projid;
+			__le32 i_inode_checksum;
+			__le64 i_crtime;
+			__le32 i_crtime_nsec;
+			__le64 i_compr_blocks;
+			__u8 i_compress_algorithm;
+			__u8 i_log_cluster_size;
+			__le16 i_compress_flag;
+			__le32 i_extra_end[0];
+		} __attribute__((packed));
+		__le32 i_addr[923];
+	};
+	__le32 i_nid[5];
+};
+
+struct direct_node {
+	__le32 addr[1018];
+};
+
+struct indirect_node {
+	__le32 nid[1018];
+};
+
+struct node_footer {
+	__le32 nid;
+	__le32 ino;
+	__le32 flag;
+	__le64 cp_ver;
+	__le32 next_blkaddr;
+} __attribute__((packed));
+
+struct f2fs_node {
+	union {
+		struct f2fs_inode i;
+		struct direct_node dn;
+		struct indirect_node in;
+	};
+	struct node_footer footer;
+};
+
+struct ckpt_req_control {
+	struct task_struct *f2fs_issue_ckpt;
+	int ckpt_thread_ioprio;
+	wait_queue_head_t ckpt_wait_queue;
+	atomic_t issued_ckpt;
+	atomic_t total_ckpt;
+	atomic_t queued_ckpt;
+	struct llist_head issue_list;
+	spinlock_t stat_lock;
+	unsigned int cur_time;
+	unsigned int peak_time;
+};
+
+struct inode_management {
+	struct xarray ino_root;
+	spinlock_t ino_lock;
+	struct list_head ino_list;
+	unsigned long ino_num;
+};
+
+struct extent_tree_info {
+	struct xarray extent_tree_root;
+	struct mutex extent_tree_lock;
+	struct list_head extent_list;
+	spinlock_t extent_lock;
+	atomic_t total_ext_tree;
+	struct list_head zombie_list;
+	atomic_t total_zombie_tree;
+	atomic_t total_ext_node;
+};
+
+struct f2fs_mount_info {
+	unsigned int opt;
+	block_t root_reserved_blocks;
+	kuid_t s_resuid;
+	kgid_t s_resgid;
+	int active_logs;
+	int inline_xattr_size;
+	char *s_qf_names[3];
+	int s_jquota_fmt;
+	int alloc_mode;
+	int fsync_mode;
+	int fs_mode;
+	int bggc_mode;
+	int memory_mode;
+	int errors;
+	int discard_unit;
+	struct fscrypt_dummy_policy dummy_enc_policy;
+	block_t unusable_cap_perc;
+	block_t unusable_cap;
+	unsigned char compress_algorithm;
+	unsigned char compress_log_size;
+	unsigned char compress_level;
+	bool compress_chksum;
+	unsigned char compress_ext_cnt;
+	unsigned char nocompress_ext_cnt;
+	int compress_mode;
+	unsigned char extensions[128];
+	unsigned char noextensions[128];
+};
+
+struct atgc_management {
+	bool atgc_enabled;
+	struct rb_root_cached root;
+	struct list_head victim_list;
+	unsigned int victim_count;
+	unsigned int candidate_ratio;
+	unsigned int max_candidate_count;
+	unsigned int age_weight;
+	unsigned long long age_threshold;
+};
+
+struct f2fs_super_block;
+
+struct f2fs_nm_info;
+
+struct f2fs_sm_info;
+
+struct f2fs_bio_info;
+
+struct f2fs_checkpoint;
+
+struct f2fs_gc_kthread;
+
+struct f2fs_stat_info;
+
+struct f2fs_dev_info;
+
+struct iostat_lat_info;
+
+struct f2fs_sb_info {
+	struct super_block *sb;
+	struct proc_dir_entry *s_proc;
+	struct f2fs_super_block *raw_super;
+	struct f2fs_rwsem sb_lock;
+	int valid_super_block;
+	unsigned long s_flag;
+	struct mutex writepages;
+	unsigned int blocks_per_blkz;
+	unsigned int max_open_zones;
+	struct f2fs_nm_info *nm_info;
+	struct inode *node_inode;
+	struct f2fs_sm_info *sm_info;
+	struct f2fs_bio_info *write_io[3];
+	struct f2fs_rwsem io_order_lock;
+	unsigned long page_eio_ofs[3];
+	int page_eio_cnt[3];
+	struct f2fs_checkpoint *ckpt;
+	int cur_cp_pack;
+	spinlock_t cp_lock;
+	struct inode *meta_inode;
+	struct f2fs_rwsem cp_global_sem;
+	struct f2fs_rwsem cp_rwsem;
+	struct f2fs_rwsem node_write;
+	struct f2fs_rwsem node_change;
+	wait_queue_head_t cp_wait;
+	unsigned long last_time[6];
+	long interval_time[6];
+	struct ckpt_req_control cprc_info;
+	struct inode_management im[5];
+	spinlock_t fsync_node_lock;
+	struct list_head fsync_node_list;
+	unsigned int fsync_seg_id;
+	unsigned int fsync_node_num;
+	unsigned int max_orphans;
+	struct list_head inode_list[3];
+	spinlock_t inode_lock[3];
+	struct mutex flush_lock;
+	struct extent_tree_info extent_tree[2];
+	atomic64_t allocated_data_blocks;
+	unsigned int hot_data_age_threshold;
+	unsigned int warm_data_age_threshold;
+	unsigned int last_age_weight;
+	unsigned int log_sectors_per_block;
+	unsigned int log_blocksize;
+	unsigned int blocksize;
+	unsigned int root_ino_num;
+	unsigned int node_ino_num;
+	unsigned int meta_ino_num;
+	unsigned int log_blocks_per_seg;
+	unsigned int blocks_per_seg;
+	unsigned int unusable_blocks_per_sec;
+	unsigned int segs_per_sec;
+	unsigned int secs_per_zone;
+	unsigned int total_sections;
+	unsigned int total_node_count;
+	unsigned int total_valid_node_count;
+	int dir_level;
+	bool readdir_ra;
+	u64 max_io_bytes;
+	block_t user_block_count;
+	block_t total_valid_block_count;
+	block_t discard_blks;
+	block_t last_valid_block_count;
+	block_t reserved_blocks;
+	block_t current_reserved_blocks;
+	block_t unusable_block_count;
+	unsigned int nquota_files;
+	struct f2fs_rwsem quota_sem;
+	atomic_t nr_pages[13];
+	struct percpu_counter alloc_valid_block_count;
+	struct percpu_counter rf_node_block_count;
+	atomic_t wb_sync_req[2];
+	struct percpu_counter total_valid_inode_count;
+	struct f2fs_mount_info mount_opt;
+	struct f2fs_rwsem gc_lock;
+	struct f2fs_gc_kthread *gc_thread;
+	struct atgc_management am;
+	unsigned int cur_victim_sec;
+	unsigned int gc_mode;
+	unsigned int next_victim_seg[2];
+	spinlock_t gc_remaining_trials_lock;
+	unsigned int gc_remaining_trials;
+	unsigned long long skipped_gc_rwsem;
+	unsigned short gc_pin_file_threshold;
+	struct f2fs_rwsem pin_sem;
+	unsigned int max_victim_search;
+	unsigned int migration_granularity;
+	struct f2fs_stat_info *stat_info;
+	atomic_t meta_count[4];
+	unsigned int segment_count[2];
+	unsigned int block_count[2];
+	atomic_t inplace_count;
+	atomic64_t total_hit_ext[2];
+	atomic64_t read_hit_rbtree[2];
+	atomic64_t read_hit_cached[2];
+	atomic64_t read_hit_largest;
+	atomic_t inline_xattr;
+	atomic_t inline_inode;
+	atomic_t inline_dir;
+	atomic_t compr_inode;
+	atomic64_t compr_blocks;
+	atomic_t swapfile_inode;
+	atomic_t atomic_files;
+	atomic_t max_aw_cnt;
+	unsigned int io_skip_bggc;
+	unsigned int other_skip_bggc;
+	unsigned int ndirty_inode[3];
+	atomic_t cp_call_count[2];
+	spinlock_t stat_lock;
+	unsigned int data_io_flag;
+	unsigned int node_io_flag;
+	struct kobject s_kobj;
+	struct completion s_kobj_unregister;
+	struct kobject s_stat_kobj;
+	struct completion s_stat_kobj_unregister;
+	struct kobject s_feature_list_kobj;
+	struct completion s_feature_list_kobj_unregister;
+	struct list_head s_list;
+	struct mutex umount_mutex;
+	unsigned int shrinker_run_no;
+	int s_ndevs;
+	struct f2fs_dev_info *devs;
+	unsigned int dirty_device;
+	spinlock_t dev_lock;
+	bool aligned_blksize;
+	u64 sectors_written_start;
+	u64 kbytes_written;
+	struct crypto_shash *s_chksum_driver;
+	__u32 s_chksum_seed;
+	struct workqueue_struct *post_read_wq;
+	struct work_struct s_error_work;
+	unsigned char errors[16];
+	unsigned char stop_reason[32];
+	spinlock_t error_lock;
+	bool error_dirty;
+	struct kmem_cache *inline_xattr_slab;
+	unsigned int inline_xattr_slab_size;
+	unsigned int gc_segment_mode;
+	unsigned int gc_reclaimed_segs[7];
+	unsigned long seq_file_ra_mul;
+	int max_fragment_chunk;
+	int max_fragment_hole;
+	atomic64_t current_atomic_write;
+	s64 peak_atomic_write;
+	u64 committed_atomic_block;
+	u64 revoked_atomic_block;
+	struct kmem_cache *page_array_slab;
+	unsigned int page_array_slab_size;
+	u64 compr_written_block;
+	u64 compr_saved_block;
+	u32 compr_new_inode;
+	struct inode *compress_inode;
+	unsigned int compress_percent;
+	unsigned int compress_watermark;
+	atomic_t compress_page_hit;
+	spinlock_t iostat_lock;
+	unsigned long long iostat_count[29];
+	unsigned long long iostat_bytes[29];
+	unsigned long long prev_iostat_bytes[29];
+	bool iostat_enable;
+	unsigned long iostat_next_period;
+	unsigned int iostat_period_ms;
+	spinlock_t iostat_lat_lock;
+	struct iostat_lat_info *iostat_io_lat;
+};
+
+struct f2fs_device {
+	__u8 path[64];
+	__le32 total_segments;
+};
+
+struct f2fs_super_block {
+	__le32 magic;
+	__le16 major_ver;
+	__le16 minor_ver;
+	__le32 log_sectorsize;
+	__le32 log_sectors_per_block;
+	__le32 log_blocksize;
+	__le32 log_blocks_per_seg;
+	__le32 segs_per_sec;
+	__le32 secs_per_zone;
+	__le32 checksum_offset;
+	__le64 block_count;
+	__le32 section_count;
+	__le32 segment_count;
+	__le32 segment_count_ckpt;
+	__le32 segment_count_sit;
+	__le32 segment_count_nat;
+	__le32 segment_count_ssa;
+	__le32 segment_count_main;
+	__le32 segment0_blkaddr;
+	__le32 cp_blkaddr;
+	__le32 sit_blkaddr;
+	__le32 nat_blkaddr;
+	__le32 ssa_blkaddr;
+	__le32 main_blkaddr;
+	__le32 root_ino;
+	__le32 node_ino;
+	__le32 meta_ino;
+	__u8 uuid[16];
+	__le16 volume_name[512];
+	__le32 extension_count;
+	__u8 extension_list[512];
+	__le32 cp_payload;
+	__u8 version[256];
+	__u8 init_version[256];
+	__le32 feature;
+	__u8 encryption_level;
+	__u8 encrypt_pw_salt[16];
+	struct f2fs_device devs[8];
+	__le32 qf_ino[3];
+	__u8 hot_ext_count;
+	__le16 s_encoding;
+	__le16 s_encoding_flags;
+	__u8 s_stop_reason[32];
+	__u8 s_errors[16];
+	__u8 reserved[258];
+	__le32 crc;
+} __attribute__((packed));
+
+struct f2fs_nm_info {
+	block_t nat_blkaddr;
+	nid_t max_nid;
+	nid_t available_nids;
+	nid_t next_scan_nid;
+	nid_t max_rf_node_blocks;
+	unsigned int ram_thresh;
+	unsigned int ra_nid_pages;
+	unsigned int dirty_nats_ratio;
+	struct xarray nat_root;
+	struct xarray nat_set_root;
+	struct f2fs_rwsem nat_tree_lock;
+	struct list_head nat_entries;
+	spinlock_t nat_list_lock;
+	unsigned int nat_cnt[3];
+	unsigned int nat_blocks;
+	struct xarray free_nid_root;
+	struct list_head free_nid_list;
+	unsigned int nid_cnt[2];
+	spinlock_t nid_list_lock;
+	struct mutex build_lock;
+	unsigned char **free_nid_bitmap;
+	unsigned char *nat_block_bitmap;
+	unsigned short *free_nid_count;
+	char *nat_bitmap;
+	unsigned int nat_bits_blocks;
+	unsigned char *nat_bits;
+	unsigned char *full_nat_bits;
+	unsigned char *empty_nat_bits;
+	int bitmap_size;
+};
+
+struct sit_info;
+
+struct free_segmap_info;
+
+struct dirty_seglist_info;
+
+struct curseg_info;
+
+struct flush_cmd_control;
+
+struct discard_cmd_control;
+
+struct f2fs_sm_info {
+	struct sit_info *sit_info;
+	struct free_segmap_info *free_info;
+	struct dirty_seglist_info *dirty_info;
+	struct curseg_info *curseg_array;
+	struct f2fs_rwsem curseg_lock;
+	block_t seg0_blkaddr;
+	block_t main_blkaddr;
+	block_t ssa_blkaddr;
+	unsigned int segment_count;
+	unsigned int main_segments;
+	unsigned int reserved_segments;
+	unsigned int additional_reserved_segments;
+	unsigned int ovp_segments;
+	unsigned int rec_prefree_segments;
+	struct list_head sit_entry_set;
+	unsigned int ipu_policy;
+	unsigned int min_ipu_util;
+	unsigned int min_fsync_blocks;
+	unsigned int min_seq_blocks;
+	unsigned int min_hot_blocks;
+	unsigned int min_ssr_sections;
+	struct flush_cmd_control *fcc_info;
+	struct discard_cmd_control *dcc_info;
+};
+
+struct flush_cmd_control {
+	struct task_struct *f2fs_issue_flush;
+	wait_queue_head_t flush_wait_queue;
+	atomic_t issued_flush;
+	atomic_t queued_flush;
+	struct llist_head issue_list;
+	struct llist_node *dispatch_list;
+};
+
+struct discard_cmd_control {
+	struct task_struct *f2fs_issue_discard;
+	struct list_head entry_list;
+	struct list_head pend_list[512];
+	struct list_head wait_list;
+	struct list_head fstrim_list;
+	wait_queue_head_t discard_wait_queue;
+	struct mutex cmd_lock;
+	unsigned int nr_discards;
+	unsigned int max_discards;
+	unsigned int max_discard_request;
+	unsigned int min_discard_issue_time;
+	unsigned int mid_discard_issue_time;
+	unsigned int max_discard_issue_time;
+	unsigned int discard_io_aware_gran;
+	unsigned int discard_urgent_util;
+	unsigned int discard_granularity;
+	unsigned int max_ordered_discard;
+	unsigned int discard_io_aware;
+	unsigned int undiscard_blks;
+	unsigned int next_pos;
+	atomic_t issued_discard;
+	atomic_t queued_discard;
+	atomic_t discard_cmd_cnt;
+	struct rb_root_cached root;
+	bool rbtree_check;
+	bool discard_wake;
+};
+
+struct f2fs_io_info {
+	struct f2fs_sb_info *sbi;
+	nid_t ino;
+	enum page_type type;
+	enum temp_type temp;
+	enum req_op op;
+	blk_opf_t op_flags;
+	block_t new_blkaddr;
+	block_t old_blkaddr;
+	struct page *page;
+	struct page *encrypted_page;
+	struct page *compressed_page;
+	struct list_head list;
+	unsigned int compr_blocks;
+	unsigned int need_lock: 8;
+	unsigned int version: 8;
+	unsigned int submitted: 1;
+	unsigned int in_list: 1;
+	unsigned int is_por: 1;
+	unsigned int encrypted: 1;
+	unsigned int meta_gc: 1;
+	enum iostat_type io_type;
+	struct writeback_control *io_wbc;
+	struct bio **bio;
+	sector_t *last_block;
+};
+
+struct f2fs_bio_info {
+	struct f2fs_sb_info *sbi;
+	struct bio *bio;
+	sector_t last_block_in_bio;
+	struct f2fs_io_info fio;
+	struct completion zone_wait;
+	struct bio *zone_pending_bio;
+	void *bi_private;
+	struct f2fs_rwsem io_rwsem;
+	spinlock_t io_lock;
+	struct list_head io_list;
+	struct list_head bio_list;
+	struct f2fs_rwsem bio_list_lock;
+};
+
+struct f2fs_checkpoint {
+	__le64 checkpoint_ver;
+	__le64 user_block_count;
+	__le64 valid_block_count;
+	__le32 rsvd_segment_count;
+	__le32 overprov_segment_count;
+	__le32 free_segment_count;
+	__le32 cur_node_segno[8];
+	__le16 cur_node_blkoff[8];
+	__le32 cur_data_segno[8];
+	__le16 cur_data_blkoff[8];
+	__le32 ckpt_flags;
+	__le32 cp_pack_total_block_count;
+	__le32 cp_pack_start_sum;
+	__le32 valid_node_count;
+	__le32 valid_inode_count;
+	__le32 next_free_nid;
+	__le32 sit_ver_bitmap_bytesize;
+	__le32 nat_ver_bitmap_bytesize;
+	__le32 checksum_offset;
+	__le64 elapsed_time;
+	unsigned char alloc_type[16];
+	unsigned char sit_nat_version_bitmap[0];
+};
+
+struct f2fs_stat_info {
+	struct list_head stat_list;
+	struct f2fs_sb_info *sbi;
+	int all_area_segs;
+	int sit_area_segs;
+	int nat_area_segs;
+	int ssa_area_segs;
+	int main_area_segs;
+	int main_area_sections;
+	int main_area_zones;
+	unsigned long long hit_cached[2];
+	unsigned long long hit_rbtree[2];
+	unsigned long long total_ext[2];
+	unsigned long long hit_total[2];
+	int ext_tree[2];
+	int zombie_tree[2];
+	int ext_node[2];
+	unsigned long long ext_mem[2];
+	unsigned long long hit_largest;
+	unsigned long long allocated_data_blocks;
+	int ndirty_node;
+	int ndirty_dent;
+	int ndirty_meta;
+	int ndirty_imeta;
+	int ndirty_data;
+	int ndirty_qdata;
+	unsigned int ndirty_dirs;
+	unsigned int ndirty_files;
+	unsigned int nquota_files;
+	unsigned int ndirty_all;
+	int nats;
+	int dirty_nats;
+	int sits;
+	int dirty_sits;
+	int free_nids;
+	int avail_nids;
+	int alloc_nids;
+	int total_count;
+	int utilization;
+	int nr_wb_cp_data;
+	int nr_wb_data;
+	int nr_rd_data;
+	int nr_rd_node;
+	int nr_rd_meta;
+	int nr_dio_read;
+	int nr_dio_write;
+	unsigned int io_skip_bggc;
+	unsigned int other_skip_bggc;
+	int nr_flushing;
+	int nr_flushed;
+	int flush_list_empty;
+	int nr_discarding;
+	int nr_discarded;
+	int nr_discard_cmd;
+	unsigned int undiscard_blks;
+	int nr_issued_ckpt;
+	int nr_total_ckpt;
+	int nr_queued_ckpt;
+	unsigned int cur_ckpt_time;
+	unsigned int peak_ckpt_time;
+	int inline_xattr;
+	int inline_inode;
+	int inline_dir;
+	int append;
+	int update;
+	int orphans;
+	int compr_inode;
+	int swapfile_inode;
+	unsigned long long compr_blocks;
+	int aw_cnt;
+	int max_aw_cnt;
+	unsigned int valid_count;
+	unsigned int valid_node_count;
+	unsigned int valid_inode_count;
+	unsigned int discard_blks;
+	unsigned int bimodal;
+	unsigned int avg_vblocks;
+	int util_free;
+	int util_valid;
+	int util_invalid;
+	int rsvd_segs;
+	int overp_segs;
+	int dirty_count;
+	int node_pages;
+	int meta_pages;
+	int compress_pages;
+	int compress_page_hit;
+	int prefree_count;
+	int free_segs;
+	int free_secs;
+	int cp_call_count[2];
+	int cp_count;
+	int gc_call_count[2];
+	int gc_segs[4];
+	int gc_secs[4];
+	int tot_blks;
+	int data_blks;
+	int node_blks;
+	int bg_data_blks;
+	int bg_node_blks;
+	int curseg[8];
+	int cursec[8];
+	int curzone[8];
+	unsigned int dirty_seg[8];
+	unsigned int full_seg[8];
+	unsigned int valid_blks[8];
+	unsigned int meta_count[4];
+	unsigned int segment_count[2];
+	unsigned int block_count[2];
+	unsigned int inplace_count;
+	unsigned long long base_mem;
+	unsigned long long cache_mem;
+	unsigned long long page_mem;
+};
+
+struct f2fs_dev_info {
+	struct block_device *bdev;
+	char path[64];
+	unsigned int total_segments;
+	block_t start_blk;
+	block_t end_blk;
+	unsigned int nr_blkz;
+	unsigned long *blkz_seq;
+};
+
+struct f2fs_filename {
+	const struct qstr *usr_fname;
+	struct fscrypt_str disk_name;
+	f2fs_hash_t hash;
+	struct fscrypt_str crypto_buf;
+	struct fscrypt_str cf_name;
+};
+
+struct f2fs_dentry_ptr {
+	struct inode *inode;
+	void *bitmap;
+	struct f2fs_dir_entry *dentry;
+	__u8 (*filename)[8];
+	int max;
+	int nr_bitmap;
+};
+
+enum {
+	META_CP = 0,
+	META_NAT = 1,
+	META_SIT = 2,
+	META_SSA = 3,
+	META_MAX = 4,
+	META_POR = 5,
+	DATA_GENERIC = 6,
+	DATA_GENERIC_ENHANCE = 7,
+	DATA_GENERIC_ENHANCE_READ = 8,
+	DATA_GENERIC_ENHANCE_UPDATE = 9,
+	META_GENERIC = 10,
+};
+
+enum {
+	ALLOC_NODE = 0,
+	LOOKUP_NODE = 1,
+	LOOKUP_NODE_RA = 2,
+};
+
+enum stop_cp_reason {
+	STOP_CP_REASON_SHUTDOWN = 0,
+	STOP_CP_REASON_FAULT_INJECT = 1,
+	STOP_CP_REASON_META_PAGE = 2,
+	STOP_CP_REASON_WRITE_FAIL = 3,
+	STOP_CP_REASON_CORRUPTED_SUMMARY = 4,
+	STOP_CP_REASON_UPDATE_INODE = 5,
+	STOP_CP_REASON_FLUSH_FAIL = 6,
+	STOP_CP_REASON_NO_SEGMENT = 7,
+	STOP_CP_REASON_MAX = 8,
+};
+
+enum {
+	CURSEG_HOT_DATA = 0,
+	CURSEG_WARM_DATA = 1,
+	CURSEG_COLD_DATA = 2,
+	CURSEG_HOT_NODE = 3,
+	CURSEG_WARM_NODE = 4,
+	CURSEG_COLD_NODE = 5,
+	NR_PERSISTENT_LOG = 6,
+	CURSEG_COLD_DATA_PINNED = 6,
+	CURSEG_ALL_DATA_ATGC = 7,
+	NO_CHECK_TYPE = 8,
+};
+
+enum {
+	F2FS_GET_BLOCK_DEFAULT = 0,
+	F2FS_GET_BLOCK_FIEMAP = 1,
+	F2FS_GET_BLOCK_BMAP = 2,
+	F2FS_GET_BLOCK_DIO = 3,
+	F2FS_GET_BLOCK_PRE_DIO = 4,
+	F2FS_GET_BLOCK_PRE_AIO = 5,
+	F2FS_GET_BLOCK_PRECACHE = 6,
+};
+
+enum cp_reason_type {
+	CP_NO_NEEDED = 0,
+	CP_NON_REGULAR = 1,
+	CP_COMPRESSED = 2,
+	CP_HARDLINK = 3,
+	CP_SB_NEED_CP = 4,
+	CP_WRONG_PINO = 5,
+	CP_NO_SPC_ROLL = 6,
+	CP_NODE_NEED_CP = 7,
+	CP_FASTBOOT_MODE = 8,
+	CP_SPEC_LOG_NUM = 9,
+	CP_RECOVER_DIR = 10,
+};
+
+enum inode_type {
+	DIR_INODE = 0,
+	FILE_INODE = 1,
+	DIRTY_META = 2,
+	NR_INODE_TYPE = 3,
+};
+
+enum {
+	COLD_BIT_SHIFT = 0,
+	FSYNC_BIT_SHIFT = 1,
+	DENT_BIT_SHIFT = 2,
+	OFFSET_BIT_SHIFT = 3,
+};
+
+enum compress_flag {
+	COMPRESS_CHKSUM = 0,
+	COMPRESS_MAX_FLAG = 1,
+};
+
+enum compress_algorithm_type {
+	COMPRESS_LZO = 0,
+	COMPRESS_LZ4 = 1,
+	COMPRESS_ZSTD = 2,
+	COMPRESS_LZORLE = 3,
+	COMPRESS_MAX = 4,
+};
+
+enum {
+	BG_GC = 0,
+	FG_GC = 1,
+};
+
+enum {
+	BACKGROUND = 0,
+	FOREGROUND = 1,
+	MAX_CALL_TYPE = 2,
+	TOTAL_CALL = 1,
+};
+
+enum {
+	FS_MODE_ADAPTIVE = 0,
+	FS_MODE_LFS = 1,
+	FS_MODE_FRAGMENT_SEG = 2,
+	FS_MODE_FRAGMENT_BLK = 3,
+};
+
+enum {
+	GC_CB = 0,
+	GC_GREEDY = 1,
+	GC_AT = 2,
+	ALLOC_NEXT = 3,
+	FLUSH_DEVICE = 4,
+	MAX_GC_POLICY = 5,
+};
+
+enum {
+	COMPR_MODE_FS = 0,
+	COMPR_MODE_USER = 1,
+};
+
+struct seg_entry;
+
+struct sec_entry;
+
+struct sit_info {
+	block_t sit_base_addr;
+	block_t sit_blocks;
+	block_t written_valid_blocks;
+	char *bitmap;
+	char *sit_bitmap;
+	unsigned int bitmap_size;
+	unsigned long *tmp_map;
+	unsigned long *dirty_sentries_bitmap;
+	unsigned int dirty_sentries;
+	unsigned int sents_per_block;
+	struct rw_semaphore sentry_lock;
+	struct seg_entry *sentries;
+	struct sec_entry *sec_entries;
+	unsigned long long elapsed_time;
+	unsigned long long mounted_time;
+	unsigned long long min_mtime;
+	unsigned long long max_mtime;
+	unsigned long long dirty_min_mtime;
+	unsigned long long dirty_max_mtime;
+	unsigned int last_victim[5];
+};
+
+struct seg_entry {
+	unsigned int type: 6;
+	unsigned int valid_blocks: 10;
+	unsigned int ckpt_valid_blocks: 10;
+	unsigned int padding: 6;
+	unsigned char *cur_valid_map;
+	unsigned char *ckpt_valid_map;
+	unsigned char *discard_map;
+	unsigned long long mtime;
+};
+
+struct sec_entry {
+	unsigned int valid_blocks;
+};
+
+struct free_segmap_info {
+	unsigned int start_segno;
+	unsigned int free_segments;
+	unsigned int free_sections;
+	spinlock_t segmap_lock;
+	unsigned long *free_segmap;
+	unsigned long *free_secmap;
+};
+
+struct dirty_seglist_info {
+	unsigned long *dirty_segmap[8];
+	unsigned long *dirty_secmap;
+	struct mutex seglist_lock;
+	int nr_dirty[8];
+	unsigned long *victim_secmap;
+	unsigned long *pinned_secmap;
+	unsigned int pinned_secmap_cnt;
+	bool enable_pin_section;
+};
+
+struct f2fs_summary_block;
+
+struct f2fs_journal;
+
+struct curseg_info {
+	struct mutex curseg_mutex;
+	struct f2fs_summary_block *sum_blk;
+	struct rw_semaphore journal_rwsem;
+	struct f2fs_journal *journal;
+	unsigned char alloc_type;
+	unsigned short seg_type;
+	unsigned int segno;
+	unsigned short next_blkoff;
+	unsigned int zone;
+	unsigned int next_segno;
+	int fragment_remained_chunk;
+	bool inited;
+};
+
+struct f2fs_summary {
+	__le32 nid;
+	union {
+		__u8 reserved[3];
+		struct {
+			__u8 version;
+			__le16 ofs_in_node;
+		} __attribute__((packed));
+	};
+} __attribute__((packed));
+
+struct f2fs_nat_entry {
+	__u8 version;
+	__le32 ino;
+	__le32 block_addr;
+} __attribute__((packed));
+
+struct nat_journal_entry {
+	__le32 nid;
+	struct f2fs_nat_entry ne;
+} __attribute__((packed));
+
+struct nat_journal {
+	struct nat_journal_entry entries[38];
+	__u8 reserved[11];
+};
+
+struct f2fs_sit_entry {
+	__le16 vblocks;
+	__u8 valid_map[64];
+	__le64 mtime;
+} __attribute__((packed));
+
+struct sit_journal_entry {
+	__le32 segno;
+	struct f2fs_sit_entry se;
+} __attribute__((packed));
+
+struct sit_journal {
+	struct sit_journal_entry entries[6];
+	__u8 reserved[37];
+};
+
+struct f2fs_extra_info {
+	__le64 kbytes_written;
+	__u8 reserved[497];
+} __attribute__((packed));
+
+struct f2fs_journal {
+	union {
+		__le16 n_nats;
+		__le16 n_sits;
+	};
+	union {
+		struct nat_journal nat_j;
+		struct sit_journal sit_j;
+		struct f2fs_extra_info info;
+	};
+} __attribute__((packed));
+
+struct summary_footer {
+	unsigned char entry_type;
+	__le32 check_sum;
+} __attribute__((packed));
+
+struct f2fs_summary_block {
+	struct f2fs_summary entries[512];
+	struct f2fs_journal journal;
+	struct summary_footer footer;
+};
+
+struct f2fs_gc_kthread {
+	struct task_struct *f2fs_gc_task;
+	wait_queue_head_t gc_wait_queue_head;
+	unsigned int urgent_sleep_time;
+	unsigned int min_sleep_time;
+	unsigned int max_sleep_time;
+	unsigned int no_gc_sleep_time;
+	bool gc_wake;
+	wait_queue_head_t fggc_wq;
+};
+
+struct iostat_lat_info {
+	unsigned long sum_lat[9];
+	unsigned long peak_lat[9];
+	unsigned int bio_cnt[9];
+};
+
+struct f2fs_gc_range {
+	__u32 sync;
+	__u64 start;
+	__u64 len;
+};
+
+struct f2fs_defragment {
+	__u64 start;
+	__u64 len;
+};
+
+struct f2fs_move_range {
+	__u32 dst_fd;
+	__u64 pos_in;
+	__u64 pos_out;
+	__u64 len;
+};
+
+struct f2fs_flush_device {
+	__u32 dev_num;
+	__u32 segments;
+};
+
+struct f2fs_sectrim_range {
+	__u64 start;
+	__u64 len;
+	__u64 flags;
+};
+
+struct f2fs_comp_option {
+	__u8 algorithm;
+	__u8 log_cluster_size;
+};
+
+struct dnode_of_data {
+	struct inode *inode;
+	struct page *inode_page;
+	struct page *node_page;
+	nid_t nid;
+	unsigned int ofs_in_node;
+	bool inode_page_locked;
+	bool node_changed;
+	char cur_level;
+	char max_level;
+	block_t data_blkaddr;
+};
+
+struct f2fs_map_blocks {
+	struct block_device *m_bdev;
+	block_t m_pblk;
+	block_t m_lblk;
+	unsigned int m_len;
+	unsigned int m_flags;
+	unsigned long *m_next_pgofs;
+	unsigned long *m_next_extent;
+	int m_seg_type;
+	bool m_may_create;
+	bool m_multidev_dio;
+};
+
+struct f2fs_gc_control {
+	unsigned int victim_segno;
+	int init_gc_type;
+	bool no_bg_gc;
+	bool should_migrate_blocks;
+	bool err_gc_skipped;
+	unsigned int nr_free_secs;
+};
+
+struct node_info {
+	nid_t nid;
+	nid_t ino;
+	block_t blk_addr;
+	unsigned char version;
+	unsigned char flag;
+};
+
+struct compat_f2fs_gc_range {
+	u32 sync;
+	compat_u64 start;
+	compat_u64 len;
+};
+
+struct compat_f2fs_move_range {
+	u32 dst_fd;
+	compat_u64 pos_in;
+	compat_u64 pos_out;
+	compat_u64 len;
+};
+
+typedef void (*btf_trace_f2fs_sync_file_enter)(void *, struct inode *);
+
+typedef void (*btf_trace_f2fs_sync_file_exit)(void *, struct inode *, int, int, int);
+
+typedef void (*btf_trace_f2fs_sync_fs)(void *, struct super_block *, int);
+
+typedef void (*btf_trace_f2fs_iget)(void *, struct inode *);
+
+typedef void (*btf_trace_f2fs_iget_exit)(void *, struct inode *, int);
+
+typedef void (*btf_trace_f2fs_evict_inode)(void *, struct inode *);
+
+typedef void (*btf_trace_f2fs_new_inode)(void *, struct inode *, int);
+
+typedef void (*btf_trace_f2fs_unlink_enter)(void *, struct inode *, struct dentry *);
+
+typedef void (*btf_trace_f2fs_unlink_exit)(void *, struct inode *, int);
+
+typedef void (*btf_trace_f2fs_drop_inode)(void *, struct inode *, int);
+
+typedef void (*btf_trace_f2fs_truncate)(void *, struct inode *);
+
+typedef void (*btf_trace_f2fs_truncate_data_blocks_range)(void *, struct inode *, nid_t, unsigned int, int);
+
+typedef void (*btf_trace_f2fs_truncate_blocks_enter)(void *, struct inode *, u64);
+
+typedef void (*btf_trace_f2fs_truncate_blocks_exit)(void *, struct inode *, int);
+
+typedef void (*btf_trace_f2fs_truncate_inode_blocks_enter)(void *, struct inode *, u64);
+
+typedef void (*btf_trace_f2fs_truncate_inode_blocks_exit)(void *, struct inode *, int);
+
+typedef void (*btf_trace_f2fs_truncate_nodes_enter)(void *, struct inode *, nid_t, block_t);
+
+typedef void (*btf_trace_f2fs_truncate_nodes_exit)(void *, struct inode *, int);
+
+typedef void (*btf_trace_f2fs_truncate_node)(void *, struct inode *, nid_t, block_t);
+
+typedef void (*btf_trace_f2fs_truncate_partial_nodes)(void *, struct inode *, nid_t *, int, int);
+
+typedef void (*btf_trace_f2fs_file_write_iter)(void *, struct inode *, loff_t, size_t, ssize_t);
+
+typedef void (*btf_trace_f2fs_map_blocks)(void *, struct inode *, struct f2fs_map_blocks *, int, int);
+
+typedef void (*btf_trace_f2fs_background_gc)(void *, struct super_block *, unsigned int, unsigned int, unsigned int);
+
+typedef void (*btf_trace_f2fs_gc_begin)(void *, struct super_block *, int, bool, unsigned int, long long, long long, long long, unsigned int, unsigned int, int, unsigned int);
+
+typedef void (*btf_trace_f2fs_gc_end)(void *, struct super_block *, int, int, int, long long, long long, long long, unsigned int, unsigned int, int, unsigned int);
+
+struct victim_sel_policy;
+
+typedef void (*btf_trace_f2fs_get_victim)(void *, struct super_block *, int, int, struct victim_sel_policy *, unsigned int, unsigned int, unsigned int);
+
+struct victim_sel_policy {
+	int alloc_mode;
+	int gc_mode;
+	unsigned long *dirty_bitmap;
+	unsigned int max_search;
+	unsigned int offset;
+	unsigned int ofs_unit;
+	unsigned int min_cost;
+	unsigned long long oldest_age;
+	unsigned int min_segno;
+	unsigned long long age;
+	unsigned long long age_threshold;
+};
+
+typedef void (*btf_trace_f2fs_lookup_start)(void *, struct inode *, struct dentry *, unsigned int);
+
+typedef void (*btf_trace_f2fs_lookup_end)(void *, struct inode *, struct dentry *, nid_t, int);
+
+typedef void (*btf_trace_f2fs_rename_start)(void *, struct inode *, struct dentry *, struct inode *, struct dentry *, unsigned int);
+
+typedef void (*btf_trace_f2fs_rename_end)(void *, struct dentry *, struct dentry *, unsigned int, int);
+
+typedef void (*btf_trace_f2fs_readdir)(void *, struct inode *, loff_t, loff_t, int);
+
+typedef void (*btf_trace_f2fs_fallocate)(void *, struct inode *, int, loff_t, loff_t, int);
+
+typedef void (*btf_trace_f2fs_direct_IO_enter)(void *, struct inode *, struct kiocb *, long, int);
+
+typedef void (*btf_trace_f2fs_direct_IO_exit)(void *, struct inode *, loff_t, unsigned long, int, int);
+
+typedef void (*btf_trace_f2fs_reserve_new_blocks)(void *, struct inode *, nid_t, unsigned int, blkcnt_t);
+
+typedef void (*btf_trace_f2fs_submit_page_bio)(void *, struct page *, struct f2fs_io_info *);
+
+typedef void (*btf_trace_f2fs_submit_page_write)(void *, struct page *, struct f2fs_io_info *);
+
+typedef void (*btf_trace_f2fs_prepare_write_bio)(void *, struct super_block *, int, struct bio *);
+
+typedef void (*btf_trace_f2fs_prepare_read_bio)(void *, struct super_block *, int, struct bio *);
+
+typedef void (*btf_trace_f2fs_submit_read_bio)(void *, struct super_block *, int, struct bio *);
+
+typedef void (*btf_trace_f2fs_submit_write_bio)(void *, struct super_block *, int, struct bio *);
+
+typedef void (*btf_trace_f2fs_write_begin)(void *, struct inode *, loff_t, unsigned int);
+
+typedef void (*btf_trace_f2fs_write_end)(void *, struct inode *, loff_t, unsigned int, unsigned int);
+
+typedef void (*btf_trace_f2fs_writepage)(void *, struct folio *, int);
+
+typedef void (*btf_trace_f2fs_do_write_data_page)(void *, struct folio *, int);
+
+typedef void (*btf_trace_f2fs_readpage)(void *, struct folio *, int);
+
+typedef void (*btf_trace_f2fs_set_page_dirty)(void *, struct folio *, int);
+
+typedef void (*btf_trace_f2fs_replace_atomic_write_block)(void *, struct inode *, struct inode *, unsigned long, block_t, block_t, bool);
+
+typedef void (*btf_trace_f2fs_filemap_fault)(void *, struct inode *, unsigned long, vm_flags_t, vm_fault_t);
+
+typedef void (*btf_trace_f2fs_vm_page_mkwrite)(void *, struct inode *, unsigned long, vm_flags_t, vm_fault_t);
+
+typedef void (*btf_trace_f2fs_writepages)(void *, struct inode *, struct writeback_control *, int);
+
+typedef void (*btf_trace_f2fs_readpages)(void *, struct inode *, unsigned long, unsigned int);
+
+typedef void (*btf_trace_f2fs_write_checkpoint)(void *, struct super_block *, int, const char *);
+
+typedef void (*btf_trace_f2fs_queue_discard)(void *, struct block_device *, block_t, block_t);
+
+typedef void (*btf_trace_f2fs_issue_discard)(void *, struct block_device *, block_t, block_t);
+
+typedef void (*btf_trace_f2fs_remove_discard)(void *, struct block_device *, block_t, block_t);
+
+typedef void (*btf_trace_f2fs_queue_reset_zone)(void *, struct block_device *, block_t);
+
+typedef void (*btf_trace_f2fs_issue_reset_zone)(void *, struct block_device *, block_t);
+
+typedef void (*btf_trace_f2fs_issue_flush)(void *, struct block_device *, unsigned int, unsigned int, int);
+
+typedef void (*btf_trace_f2fs_lookup_extent_tree_start)(void *, struct inode *, unsigned int, enum extent_type);
+
+typedef void (*btf_trace_f2fs_lookup_read_extent_tree_end)(void *, struct inode *, unsigned int, struct extent_info *);
+
+typedef void (*btf_trace_f2fs_lookup_age_extent_tree_end)(void *, struct inode *, unsigned int, struct extent_info *);
+
+typedef void (*btf_trace_f2fs_update_read_extent_tree_range)(void *, struct inode *, unsigned int, unsigned int, block_t, unsigned int);
+
+typedef void (*btf_trace_f2fs_update_age_extent_tree_range)(void *, struct inode *, unsigned int, unsigned int, unsigned long long, unsigned long long);
+
+typedef void (*btf_trace_f2fs_shrink_extent_tree)(void *, struct f2fs_sb_info *, unsigned int, unsigned int, enum extent_type);
+
+typedef void (*btf_trace_f2fs_destroy_extent_tree)(void *, struct inode *, unsigned int, enum extent_type);
+
+typedef void (*btf_trace_f2fs_sync_dirty_inodes_enter)(void *, struct super_block *, int, s64);
+
+typedef void (*btf_trace_f2fs_sync_dirty_inodes_exit)(void *, struct super_block *, int, s64);
+
+typedef void (*btf_trace_f2fs_shutdown)(void *, struct f2fs_sb_info *, unsigned int, int);
+
+typedef void (*btf_trace_f2fs_compress_pages_start)(void *, struct inode *, unsigned long, unsigned int, unsigned char);
+
+typedef void (*btf_trace_f2fs_decompress_pages_start)(void *, struct inode *, unsigned long, unsigned int, unsigned char);
+
+typedef void (*btf_trace_f2fs_compress_pages_end)(void *, struct inode *, unsigned long, unsigned int, int);
+
+typedef void (*btf_trace_f2fs_decompress_pages_end)(void *, struct inode *, unsigned long, unsigned int, int);
+
+typedef void (*btf_trace_f2fs_iostat)(void *, struct f2fs_sb_info *, unsigned long long *);
+
+struct f2fs_iostat_latency {
+	unsigned int peak_lat;
+	unsigned int avg_lat;
+	unsigned int cnt;
+};
+
+typedef void (*btf_trace_f2fs_iostat_latency)(void *, struct f2fs_sb_info *, struct f2fs_iostat_latency(*)[3]);
+
+typedef void (*btf_trace_f2fs_bmap)(void *, struct inode *, sector_t, sector_t);
+
+typedef void (*btf_trace_f2fs_fiemap)(void *, struct inode *, sector_t, sector_t, unsigned long long, unsigned int, int);
+
+typedef void (*btf_trace_f2fs_dataread_start)(void *, struct inode *, loff_t, int, pid_t, char *, char *);
+
+typedef void (*btf_trace_f2fs_dataread_end)(void *, struct inode *, loff_t, int);
+
+typedef void (*btf_trace_f2fs_datawrite_start)(void *, struct inode *, loff_t, int, pid_t, char *, char *);
+
+typedef void (*btf_trace_f2fs_datawrite_end)(void *, struct inode *, loff_t, int);
+
+struct f2fs_sb_encodings {
+	__u16 magic;
+	char *name;
+	unsigned int version;
+};
+
+enum errors_option {
+	MOUNT_ERRORS_READONLY = 0,
+	MOUNT_ERRORS_CONTINUE = 1,
+	MOUNT_ERRORS_PANIC = 2,
+};
+
+enum iostat_lat_type {
+	READ_IO = 0,
+	WRITE_SYNC_IO = 1,
+	WRITE_ASYNC_IO = 2,
+	MAX_IO_TYPE = 3,
+};
+
+enum {
+	BGGC_MODE_ON = 0,
+	BGGC_MODE_OFF = 1,
+	BGGC_MODE_SYNC = 2,
+};
+
+enum {
+	DISCARD_UNIT_BLOCK = 0,
+	DISCARD_UNIT_SEGMENT = 1,
+	DISCARD_UNIT_SECTION = 2,
+};
+
+enum {
+	ALLOC_MODE_DEFAULT = 0,
+	ALLOC_MODE_REUSE = 1,
+};
+
+enum {
+	MEMORY_MODE_NORMAL = 0,
+	MEMORY_MODE_LOW = 1,
+};
+
+enum {
+	Opt_gc_background = 0,
+	Opt_disable_roll_forward = 1,
+	Opt_norecovery = 2,
+	Opt_discard___4 = 3,
+	Opt_nodiscard___2 = 4,
+	Opt_noheap = 5,
+	Opt_heap = 6,
+	Opt_user_xattr___2 = 7,
+	Opt_nouser_xattr = 8,
+	Opt_acl___2 = 9,
+	Opt_noacl = 10,
+	Opt_active_logs = 11,
+	Opt_disable_ext_identify = 12,
+	Opt_inline_xattr = 13,
+	Opt_noinline_xattr = 14,
+	Opt_inline_xattr_size = 15,
+	Opt_inline_data = 16,
+	Opt_inline_dentry = 17,
+	Opt_noinline_dentry = 18,
+	Opt_flush_merge = 19,
+	Opt_noflush_merge = 20,
+	Opt_barrier___2 = 21,
+	Opt_nobarrier___2 = 22,
+	Opt_fastboot = 23,
+	Opt_extent_cache = 24,
+	Opt_noextent_cache = 25,
+	Opt_noinline_data = 26,
+	Opt_data_flush = 27,
+	Opt_reserve_root = 28,
+	Opt_resgid___2 = 29,
+	Opt_resuid___2 = 30,
+	Opt_mode___5 = 31,
+	Opt_fault_injection = 32,
+	Opt_fault_type = 33,
+	Opt_lazytime = 34,
+	Opt_nolazytime = 35,
+	Opt_quota___3 = 36,
+	Opt_noquota___2 = 37,
+	Opt_usrquota___3 = 38,
+	Opt_grpquota___3 = 39,
+	Opt_prjquota___2 = 40,
+	Opt_usrjquota___2 = 41,
+	Opt_grpjquota___2 = 42,
+	Opt_prjjquota = 43,
+	Opt_offusrjquota = 44,
+	Opt_offgrpjquota = 45,
+	Opt_offprjjquota = 46,
+	Opt_jqfmt_vfsold = 47,
+	Opt_jqfmt_vfsv0 = 48,
+	Opt_jqfmt_vfsv1 = 49,
+	Opt_alloc = 50,
+	Opt_fsync = 51,
+	Opt_test_dummy_encryption___2 = 52,
+	Opt_inlinecrypt___2 = 53,
+	Opt_checkpoint_disable = 54,
+	Opt_checkpoint_disable_cap = 55,
+	Opt_checkpoint_disable_cap_perc = 56,
+	Opt_checkpoint_enable = 57,
+	Opt_checkpoint_merge = 58,
+	Opt_nocheckpoint_merge = 59,
+	Opt_compress_algorithm = 60,
+	Opt_compress_log_size = 61,
+	Opt_compress_extension = 62,
+	Opt_nocompress_extension = 63,
+	Opt_compress_chksum = 64,
+	Opt_compress_mode = 65,
+	Opt_compress_cache = 66,
+	Opt_atgc = 67,
+	Opt_gc_merge = 68,
+	Opt_nogc_merge = 69,
+	Opt_discard_unit = 70,
+	Opt_memory_mode = 71,
+	Opt_age_extent_cache = 72,
+	Opt_errors___3 = 73,
+	Opt_err___6 = 74,
+};
+
+enum {
+	GC_NORMAL = 0,
+	GC_IDLE_CB = 1,
+	GC_IDLE_GREEDY = 2,
+	GC_IDLE_AT = 3,
+	GC_URGENT_HIGH = 4,
+	GC_URGENT_LOW = 5,
+	GC_URGENT_MID = 6,
+	MAX_GC_MODE = 7,
+};
+
+enum blk_zone_type {
+	BLK_ZONE_TYPE_CONVENTIONAL = 1,
+	BLK_ZONE_TYPE_SEQWRITE_REQ = 2,
+	BLK_ZONE_TYPE_SEQWRITE_PREF = 3,
+};
+
+enum {
+	F2FS_IPU_FORCE = 0,
+	F2FS_IPU_SSR = 1,
+	F2FS_IPU_UTIL = 2,
+	F2FS_IPU_SSR_UTIL = 3,
+	F2FS_IPU_FSYNC = 4,
+	F2FS_IPU_ASYNC = 5,
+	F2FS_IPU_NOCACHE = 6,
+	F2FS_IPU_HONOR_OPU_WRITE = 7,
+	F2FS_IPU_MAX = 8,
+};
+
+struct trace_event_raw_f2fs__inode {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	ino_t pino;
+	umode_t mode;
+	loff_t size;
+	unsigned int nlink;
+	blkcnt_t blocks;
+	__u8 advise;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_sync_file_exit {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	int cp_reason;
+	int datasync;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_sync_fs {
+	struct trace_entry ent;
+	dev_t dev;
+	int dirty;
+	int wait;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs__inode_exit {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	umode_t mode;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_unlink_enter {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	loff_t size;
+	blkcnt_t blocks;
+	u32 __data_loc_name;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_truncate_data_blocks_range {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	nid_t nid;
+	unsigned int ofs;
+	int free;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs__truncate_op {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	loff_t size;
+	blkcnt_t blocks;
+	u64 from;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs__truncate_node {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	nid_t nid;
+	block_t blk_addr;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_truncate_partial_nodes {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	nid_t nid[3];
+	int depth;
+	int err;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_file_write_iter {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	loff_t offset;
+	size_t length;
+	ssize_t ret;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_map_blocks {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	block_t m_lblk;
+	block_t m_pblk;
+	unsigned int m_len;
+	unsigned int m_flags;
+	int m_seg_type;
+	bool m_may_create;
+	bool m_multidev_dio;
+	int flag;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_background_gc {
+	struct trace_entry ent;
+	dev_t dev;
+	unsigned int wait_ms;
+	unsigned int prefree;
+	unsigned int free;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_gc_begin {
+	struct trace_entry ent;
+	dev_t dev;
+	int gc_type;
+	bool no_bg_gc;
+	unsigned int nr_free_secs;
+	long long dirty_nodes;
+	long long dirty_dents;
+	long long dirty_imeta;
+	unsigned int free_sec;
+	unsigned int free_seg;
+	int reserved_seg;
+	unsigned int prefree_seg;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_gc_end {
+	struct trace_entry ent;
+	dev_t dev;
+	int ret;
+	int seg_freed;
+	int sec_freed;
+	long long dirty_nodes;
+	long long dirty_dents;
+	long long dirty_imeta;
+	unsigned int free_sec;
+	unsigned int free_seg;
+	int reserved_seg;
+	unsigned int prefree_seg;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_get_victim {
+	struct trace_entry ent;
+	dev_t dev;
+	int type;
+	int gc_type;
+	int alloc_mode;
+	int gc_mode;
+	unsigned int victim;
+	unsigned int cost;
+	unsigned int ofs_unit;
+	unsigned int pre_victim;
+	unsigned int prefree;
+	unsigned int free;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_lookup_start {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	u32 __data_loc_name;
+	unsigned int flags;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_lookup_end {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	u32 __data_loc_name;
+	nid_t cino;
+	int err;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_rename_start {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	u32 __data_loc_old_name;
+	ino_t new_pino;
+	u32 __data_loc_new_name;
+	unsigned int flags;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_rename_end {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	u32 __data_loc_old_name;
+	u32 __data_loc_new_name;
+	unsigned int flags;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_readdir {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	loff_t start;
+	loff_t end;
+	int err;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_fallocate {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	int mode;
+	loff_t offset;
+	loff_t len;
+	loff_t size;
+	blkcnt_t blocks;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_direct_IO_enter {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	loff_t ki_pos;
+	int ki_flags;
+	u16 ki_ioprio;
+	unsigned long len;
+	int rw;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_direct_IO_exit {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	loff_t pos;
+	unsigned long len;
+	int rw;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_reserve_new_blocks {
+	struct trace_entry ent;
+	dev_t dev;
+	nid_t nid;
+	unsigned int ofs_in_node;
+	blkcnt_t count;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs__submit_page_bio {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	unsigned long index;
+	block_t old_blkaddr;
+	block_t new_blkaddr;
+	enum req_op op;
+	blk_opf_t op_flags;
+	int temp;
+	int type;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs__bio {
+	struct trace_entry ent;
+	dev_t dev;
+	dev_t target;
+	enum req_op op;
+	blk_opf_t op_flags;
+	int type;
+	sector_t sector;
+	unsigned int size;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_write_begin {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	loff_t pos;
+	unsigned int len;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_write_end {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	loff_t pos;
+	unsigned int len;
+	unsigned int copied;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs__folio {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	int type;
+	int dir;
+	unsigned long index;
+	int dirty;
+	int uptodate;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_replace_atomic_write_block {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	ino_t cow_ino;
+	unsigned long index;
+	block_t old_addr;
+	block_t new_addr;
+	bool recovery;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_mmap {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	unsigned long index;
+	vm_flags_t flags;
+	vm_fault_t ret;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_writepages {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	int type;
+	int dir;
+	long nr_to_write;
+	long pages_skipped;
+	loff_t range_start;
+	loff_t range_end;
+	unsigned long writeback_index;
+	int sync_mode;
+	char for_kupdate;
+	char for_background;
+	char tagged_writepages;
+	char for_reclaim;
+	char range_cyclic;
+	char for_sync;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_readpages {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	unsigned long start;
+	unsigned int nrpage;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_write_checkpoint {
+	struct trace_entry ent;
+	dev_t dev;
+	int reason;
+	u32 __data_loc_dest_msg;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_discard {
+	struct trace_entry ent;
+	dev_t dev;
+	block_t blkstart;
+	block_t blklen;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_reset_zone {
+	struct trace_entry ent;
+	dev_t dev;
+	block_t blkstart;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_issue_flush {
+	struct trace_entry ent;
+	dev_t dev;
+	unsigned int nobarrier;
+	unsigned int flush_merge;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_lookup_extent_tree_start {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	unsigned int pgofs;
+	enum extent_type type;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_lookup_read_extent_tree_end {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	unsigned int pgofs;
+	unsigned int fofs;
+	unsigned int len;
+	u32 blk;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_lookup_age_extent_tree_end {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	unsigned int pgofs;
+	unsigned int fofs;
+	unsigned int len;
+	unsigned long long age;
+	unsigned long long blocks;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_update_read_extent_tree_range {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	unsigned int pgofs;
+	u32 blk;
+	unsigned int len;
+	unsigned int c_len;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_update_age_extent_tree_range {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	unsigned int pgofs;
+	unsigned int len;
+	unsigned long long age;
+	unsigned long long blocks;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_shrink_extent_tree {
+	struct trace_entry ent;
+	dev_t dev;
+	unsigned int node_cnt;
+	unsigned int tree_cnt;
+	enum extent_type type;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_destroy_extent_tree {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	unsigned int node_cnt;
+	enum extent_type type;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_sync_dirty_inodes {
+	struct trace_entry ent;
+	dev_t dev;
+	int type;
+	s64 count;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_shutdown {
+	struct trace_entry ent;
+	dev_t dev;
+	unsigned int mode;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_zip_start {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	unsigned long idx;
+	unsigned int size;
+	unsigned int algtype;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_zip_end {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	unsigned long idx;
+	unsigned int size;
+	unsigned int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_iostat {
+	struct trace_entry ent;
+	dev_t dev;
+	unsigned long long app_dio;
+	unsigned long long app_bio;
+	unsigned long long app_wio;
+	unsigned long long app_mio;
+	unsigned long long app_bcdio;
+	unsigned long long app_mcdio;
+	unsigned long long fs_dio;
+	unsigned long long fs_cdio;
+	unsigned long long fs_nio;
+	unsigned long long fs_mio;
+	unsigned long long fs_gc_dio;
+	unsigned long long fs_gc_nio;
+	unsigned long long fs_cp_dio;
+	unsigned long long fs_cp_nio;
+	unsigned long long fs_cp_mio;
+	unsigned long long app_drio;
+	unsigned long long app_brio;
+	unsigned long long app_rio;
+	unsigned long long app_mrio;
+	unsigned long long app_bcrio;
+	unsigned long long app_mcrio;
+	unsigned long long fs_drio;
+	unsigned long long fs_gdrio;
+	unsigned long long fs_cdrio;
+	unsigned long long fs_nrio;
+	unsigned long long fs_mrio;
+	unsigned long long fs_discard;
+	unsigned long long fs_reset_zone;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_iostat_latency {
+	struct trace_entry ent;
+	dev_t dev;
+	unsigned int d_rd_peak;
+	unsigned int d_rd_avg;
+	unsigned int d_rd_cnt;
+	unsigned int n_rd_peak;
+	unsigned int n_rd_avg;
+	unsigned int n_rd_cnt;
+	unsigned int m_rd_peak;
+	unsigned int m_rd_avg;
+	unsigned int m_rd_cnt;
+	unsigned int d_wr_s_peak;
+	unsigned int d_wr_s_avg;
+	unsigned int d_wr_s_cnt;
+	unsigned int n_wr_s_peak;
+	unsigned int n_wr_s_avg;
+	unsigned int n_wr_s_cnt;
+	unsigned int m_wr_s_peak;
+	unsigned int m_wr_s_avg;
+	unsigned int m_wr_s_cnt;
+	unsigned int d_wr_as_peak;
+	unsigned int d_wr_as_avg;
+	unsigned int d_wr_as_cnt;
+	unsigned int n_wr_as_peak;
+	unsigned int n_wr_as_avg;
+	unsigned int n_wr_as_cnt;
+	unsigned int m_wr_as_peak;
+	unsigned int m_wr_as_avg;
+	unsigned int m_wr_as_cnt;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_bmap {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	sector_t lblock;
+	sector_t pblock;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_fiemap {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	sector_t lblock;
+	sector_t pblock;
+	unsigned long long len;
+	unsigned int flags;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs__rw_start {
+	struct trace_entry ent;
+	u32 __data_loc_pathbuf;
+	loff_t offset;
+	int bytes;
+	loff_t i_size;
+	u32 __data_loc_cmdline;
+	pid_t pid;
+	ino_t ino;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs__rw_end {
+	struct trace_entry ent;
+	ino_t ino;
+	loff_t offset;
+	int bytes;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_f2fs_unlink_enter {
+	u32 name;
+};
+
+struct trace_event_data_offsets_f2fs_lookup_start {
+	u32 name;
+};
+
+struct trace_event_data_offsets_f2fs_lookup_end {
+	u32 name;
+};
+
+struct trace_event_data_offsets_f2fs_write_checkpoint {
+	u32 dest_msg;
+};
+
+struct cp_control {
+	int reason;
+	__u64 trim_start;
+	__u64 trim_end;
+	__u64 trim_minlen;
+};
+
+struct f2fs_report_zones_args {
+	struct f2fs_sb_info *sbi;
+	struct f2fs_dev_info *dev;
+};
+
+struct trace_event_data_offsets_f2fs__inode {};
+
+struct trace_event_data_offsets_f2fs__inode_exit {};
+
+struct trace_event_data_offsets_f2fs_sync_file_exit {};
+
+struct trace_event_data_offsets_f2fs_sync_fs {};
+
+struct trace_event_data_offsets_f2fs_truncate_data_blocks_range {};
+
+struct trace_event_data_offsets_f2fs__truncate_op {};
+
+struct trace_event_data_offsets_f2fs__truncate_node {};
+
+struct trace_event_data_offsets_f2fs_truncate_partial_nodes {};
+
+struct trace_event_data_offsets_f2fs_file_write_iter {};
+
+struct trace_event_data_offsets_f2fs_map_blocks {};
+
+struct trace_event_data_offsets_f2fs_background_gc {};
+
+struct trace_event_data_offsets_f2fs_gc_begin {};
+
+struct trace_event_data_offsets_f2fs_gc_end {};
+
+struct trace_event_data_offsets_f2fs_get_victim {};
+
+struct trace_event_data_offsets_f2fs_rename_start {
+	u32 old_name;
+	u32 new_name;
+};
+
+struct trace_event_data_offsets_f2fs_rename_end {
+	u32 old_name;
+	u32 new_name;
+};
+
+struct trace_event_data_offsets_f2fs_readdir {};
+
+struct trace_event_data_offsets_f2fs_fallocate {};
+
+struct trace_event_data_offsets_f2fs_direct_IO_enter {};
+
+struct trace_event_data_offsets_f2fs_direct_IO_exit {};
+
+struct trace_event_data_offsets_f2fs_reserve_new_blocks {};
+
+struct trace_event_data_offsets_f2fs__submit_page_bio {};
+
+struct trace_event_data_offsets_f2fs__bio {};
+
+struct trace_event_data_offsets_f2fs_write_begin {};
+
+struct trace_event_data_offsets_f2fs_write_end {};
+
+struct trace_event_data_offsets_f2fs__folio {};
+
+struct trace_event_data_offsets_f2fs_replace_atomic_write_block {};
+
+struct trace_event_data_offsets_f2fs_mmap {};
+
+struct trace_event_data_offsets_f2fs_writepages {};
+
+struct trace_event_data_offsets_f2fs_readpages {};
+
+struct trace_event_data_offsets_f2fs_discard {};
+
+struct trace_event_data_offsets_f2fs_reset_zone {};
+
+struct trace_event_data_offsets_f2fs_issue_flush {};
+
+struct trace_event_data_offsets_f2fs_lookup_extent_tree_start {};
+
+struct trace_event_data_offsets_f2fs_lookup_read_extent_tree_end {};
+
+struct trace_event_data_offsets_f2fs_lookup_age_extent_tree_end {};
+
+struct trace_event_data_offsets_f2fs_update_read_extent_tree_range {};
+
+struct trace_event_data_offsets_f2fs_update_age_extent_tree_range {};
+
+struct trace_event_data_offsets_f2fs_shrink_extent_tree {};
+
+struct trace_event_data_offsets_f2fs_destroy_extent_tree {};
+
+struct trace_event_data_offsets_f2fs_sync_dirty_inodes {};
+
+struct trace_event_data_offsets_f2fs_shutdown {};
+
+struct trace_event_data_offsets_f2fs_zip_start {};
+
+struct trace_event_data_offsets_f2fs_zip_end {};
+
+struct trace_event_data_offsets_f2fs_iostat {};
+
+struct trace_event_data_offsets_f2fs_iostat_latency {};
+
+struct trace_event_data_offsets_f2fs_bmap {};
+
+struct trace_event_data_offsets_f2fs_fiemap {};
+
+struct trace_event_data_offsets_f2fs__rw_start {
+	u32 pathbuf;
+	u32 cmdline;
+};
+
+struct trace_event_data_offsets_f2fs__rw_end {};
+
+enum nat_state {
+	TOTAL_NAT = 0,
+	DIRTY_NAT = 1,
+	RECLAIMABLE_NAT = 2,
+	MAX_NAT_STATE = 3,
+};
+
+enum nid_state {
+	FREE_NID = 0,
+	PREALLOC_NID = 1,
+	MAX_NID_STATE = 2,
+};
+
+enum dirty_type {
+	DIRTY_HOT_DATA = 0,
+	DIRTY_WARM_DATA = 1,
+	DIRTY_COLD_DATA = 2,
+	DIRTY_HOT_NODE = 3,
+	DIRTY_WARM_NODE = 4,
+	DIRTY_COLD_NODE = 5,
+	DIRTY = 6,
+	PRE = 7,
+	NR_DIRTY_TYPE = 8,
+};
+
+enum {
+	NAT_BITMAP = 0,
+	SIT_BITMAP = 1,
+};
+
+struct ino_entry {
+	struct list_head list;
+	nid_t ino;
+	unsigned int dirty_device;
+};
+
+struct f2fs_orphan_block {
+	__le32 ino[1020];
+	__le32 reserved;
+	__le16 blk_addr;
+	__le16 blk_count;
+	__le32 entry_count;
+	__le32 check_sum;
+};
+
+struct free_nid {
+	struct list_head list;
+	nid_t nid;
+	int state;
+};
+
+struct ckpt_req {
+	struct completion wait;
+	struct llist_node llnode;
+	int ret;
+	ktime_t queue_time;
+};
+
+enum {
+	LFS = 0,
+	SSR = 1,
+	AT_SSR = 2,
+};
+
+enum need_lock_type {
+	LOCK_REQ = 0,
+	LOCK_DONE = 1,
+	LOCK_RETRY = 2,
+};
+
+struct victim_entry {
+	struct rb_node rb_node;
+	unsigned long long mtime;
+	unsigned int segno;
+	struct list_head list;
+};
+
+struct inode_entry {
+	struct list_head list;
+	struct inode *inode;
+};
+
+struct gc_inode_list {
+	struct list_head ilist;
+	struct xarray iroot;
+};
+
+enum bio_post_read_step___2 {
+	STEP_DECRYPT___2 = 1,
+	STEP_DECOMPRESS = 2,
+	STEP_VERITY___2 = 4,
+};
+
+enum mem_type {
+	FREE_NIDS = 0,
+	NAT_ENTRIES = 1,
+	DIRTY_DENTS = 2,
+	INO_ENTRIES = 3,
+	READ_EXTENT_CACHE = 4,
+	AGE_EXTENT_CACHE = 5,
+	DISCARD_CACHE = 6,
+	COMPRESS_PAGE = 7,
+	BASE_CHECK = 8,
+};
+
+struct bio_entry {
+	struct bio *bio;
+	struct list_head list;
+};
+
+struct bio_post_read_ctx___2 {
+	struct bio *bio;
+	struct f2fs_sb_info *sbi;
+	struct work_struct work;
+	unsigned int enabled_steps;
+	bool decompression_attempted;
+	block_t fs_blkaddr;
+};
+
+struct bio_iostat_ctx {
+	struct f2fs_sb_info *sbi;
+	unsigned long submit_ts;
+	enum page_type type;
+	struct bio_post_read_ctx___2 *post_read_ctx;
+};
+
+struct bvec_iter_all {
+	struct bio_vec bv;
+	int idx;
+	unsigned int done;
+};
+
+struct compress_data;
+
+struct compress_ctx {
+	struct inode *inode;
+	unsigned long cluster_idx;
+	unsigned int cluster_size;
+	unsigned int log_cluster_size;
+	struct page **rpages;
+	unsigned int nr_rpages;
+	struct page **cpages;
+	unsigned int nr_cpages;
+	unsigned int valid_nr_cpages;
+	void *rbuf;
+	struct compress_data *cbuf;
+	size_t rlen;
+	size_t clen;
+	void *private;
+	void *private2;
+};
+
+struct compress_data {
+	__le32 clen;
+	__le32 chksum;
+	__le32 reserved[4];
+	u8 cdata[0];
+};
+
+struct decompress_io_ctx {
+	u32 magic;
+	struct inode *inode;
+	unsigned long cluster_idx;
+	unsigned int cluster_size;
+	unsigned int log_cluster_size;
+	struct page **rpages;
+	unsigned int nr_rpages;
+	struct page **cpages;
+	unsigned int nr_cpages;
+	struct page **tpages;
+	void *rbuf;
+	struct compress_data *cbuf;
+	size_t rlen;
+	size_t clen;
+	atomic_t remaining_pages;
+	refcount_t refcnt;
+	bool failed;
+	bool need_verity;
+	void *private;
+	void *private2;
+	struct work_struct verity_work;
+	struct work_struct free_work;
+};
+
+enum {
+	IS_CHECKPOINTED = 0,
+	HAS_FSYNCED_INODE = 1,
+	HAS_LAST_FSYNC = 2,
+	IS_DIRTY = 3,
+	IS_PREALLOC = 4,
+};
+
+enum {
+	NAT_JOURNAL = 0,
+	SIT_JOURNAL = 1,
+};
+
+struct fsync_node_entry {
+	struct list_head list;
+	struct page *page;
+	unsigned int seq_id;
+};
+
+struct nat_entry {
+	struct list_head list;
+	struct node_info ni;
+};
+
+struct f2fs_nat_block {
+	struct f2fs_nat_entry entries[455];
+};
+
+struct nat_entry_set {
+	struct list_head set_list;
+	struct list_head entry_list;
+	nid_t set;
+	unsigned int entry_cnt;
+};
+
+enum {
+	DPOLICY_BG = 0,
+	DPOLICY_FORCE = 1,
+	DPOLICY_FSTRIM = 2,
+	DPOLICY_UMOUNT = 3,
+	MAX_DPOLICY = 4,
+};
+
+enum {
+	D_PREP = 0,
+	D_PARTIAL = 1,
+	D_SUBMIT = 2,
+	D_DONE = 3,
+};
+
+enum {
+	DPOLICY_IO_AWARE_DISABLE = 0,
+	DPOLICY_IO_AWARE_ENABLE = 1,
+	DPOLICY_IO_AWARE_MAX = 2,
+};
+
+enum blk_zone_cond {
+	BLK_ZONE_COND_NOT_WP = 0,
+	BLK_ZONE_COND_EMPTY = 1,
+	BLK_ZONE_COND_IMP_OPEN = 2,
+	BLK_ZONE_COND_EXP_OPEN = 3,
+	BLK_ZONE_COND_CLOSED = 4,
+	BLK_ZONE_COND_READONLY = 13,
+	BLK_ZONE_COND_FULL = 14,
+	BLK_ZONE_COND_OFFLINE = 15,
+};
+
+struct flush_cmd {
+	struct completion wait;
+	struct llist_node llnode;
+	nid_t ino;
+	int ret;
+};
+
+struct discard_entry {
+	struct list_head list;
+	block_t start_blkaddr;
+	unsigned char discard_map[64];
+};
+
+struct sit_entry_set {
+	struct list_head set_list;
+	unsigned int start_segno;
+	unsigned int entry_cnt;
+};
+
+struct revoke_entry {
+	struct list_head list;
+	block_t old_addr;
+	unsigned long index;
+};
+
+struct discard_info {
+	block_t lstart;
+	block_t len;
+	block_t start;
+};
+
+struct discard_cmd {
+	struct rb_node rb_node;
+	struct discard_info di;
+	struct list_head list;
+	struct completion wait;
+	struct block_device *bdev;
+	unsigned short ref;
+	unsigned char state;
+	unsigned char queued;
+	int error;
+	spinlock_t lock;
+	unsigned short bio_ref;
+};
+
+struct f2fs_sit_block {
+	struct f2fs_sit_entry entries[55];
+};
+
+struct check_zone_write_pointer_args {
+	struct f2fs_sb_info *sbi;
+	struct f2fs_dev_info *fdev;
+};
+
+struct discard_policy {
+	int type;
+	unsigned int min_interval;
+	unsigned int mid_interval;
+	unsigned int max_interval;
+	unsigned int max_requests;
+	unsigned int io_aware_gran;
+	bool io_aware;
+	bool sync;
+	bool ordered;
+	bool timeout;
+	unsigned int granularity;
+};
+
+struct fsync_inode_entry {
+	struct list_head list;
+	struct inode *inode;
+	block_t blkaddr;
+	block_t last_dentry;
+};
+
+struct f2fs_attr {
+	struct attribute attr;
+	ssize_t (*show)(struct f2fs_attr *, struct f2fs_sb_info *, char *);
+	ssize_t (*store)(struct f2fs_attr *, struct f2fs_sb_info *, const char *, size_t);
+	int struct_type;
+	int offset;
+	int id;
+};
+
+enum {
+	GC_THREAD = 0,
+	SM_INFO = 1,
+	DCC_INFO = 2,
+	NM_INFO = 3,
+	F2FS_SBI = 4,
+	STAT_INFO = 5,
+	RESERVED_BLOCKS = 6,
+	CPRC_INFO = 7,
+	ATGC_INFO = 8,
+};
+
+struct f2fs_xattr_entry {
+	__u8 e_name_index;
+	__u8 e_name_len;
+	__le16 e_value_size;
+	char e_name[0];
+};
+
+struct f2fs_xattr_header {
+	__le32 h_magic;
+	__le32 h_refcount;
+	__u32 h_reserved[4];
+};
+
+struct f2fs_acl_header {
+	__le32 a_version;
+};
+
+struct f2fs_acl_entry {
+	__le16 e_tag;
+	__le16 e_perm;
+	__le32 e_id;
+};
+
+struct fsverity_descriptor_location {
+	__le32 version;
+	__le32 size;
+	__le64 pos;
+};
+
+struct f2fs_compress_ops {
+	int (*init_compress_ctx)(struct compress_ctx *);
+	void (*destroy_compress_ctx)(struct compress_ctx *);
+	int (*compress_pages)(struct compress_ctx *);
+	int (*init_decompress_ctx)(struct decompress_io_ctx *);
+	void (*destroy_decompress_ctx)(struct decompress_io_ctx *);
+	int (*decompress_pages)(struct decompress_io_ctx *);
+	bool (*is_level_valid)(int);
+};
+
+struct compress_io_ctx {
+	u32 magic;
+	struct inode *inode;
+	struct page **rpages;
+	unsigned int nr_rpages;
+	atomic_t pending_pages;
+};
+
+typedef enum {
+	ZSTD_fast = 1,
+	ZSTD_dfast = 2,
+	ZSTD_greedy = 3,
+	ZSTD_lazy = 4,
+	ZSTD_lazy2 = 5,
+	ZSTD_btlazy2 = 6,
+	ZSTD_btopt = 7,
+	ZSTD_btultra = 8,
+	ZSTD_btultra2 = 9,
+} ZSTD_strategy;
+
+typedef struct {
+	unsigned int windowLog;
+	unsigned int chainLog;
+	unsigned int hashLog;
+	unsigned int searchLog;
+	unsigned int minMatch;
+	unsigned int targetLength;
+	ZSTD_strategy strategy;
+} ZSTD_compressionParameters;
+
+typedef struct {
+	int contentSizeFlag;
+	int checksumFlag;
+	int noDictIDFlag;
+} ZSTD_frameParameters;
+
+typedef struct {
+	ZSTD_compressionParameters cParams;
+	ZSTD_frameParameters fParams;
+} ZSTD_parameters;
+
+typedef ZSTD_parameters zstd_parameters;
+
+typedef ZSTD_compressionParameters zstd_compression_parameters;
+
+typedef enum {
+	ZSTDcs_created = 0,
+	ZSTDcs_init = 1,
+	ZSTDcs_ongoing = 2,
+	ZSTDcs_ending = 3,
+} ZSTD_compressionStage_e;
+
+typedef enum {
+	ZSTD_dictDefaultAttach = 0,
+	ZSTD_dictForceAttach = 1,
+	ZSTD_dictForceCopy = 2,
+	ZSTD_dictForceLoad = 3,
+} ZSTD_dictAttachPref_e;
+
+typedef enum {
+	ZSTD_ps_auto = 0,
+	ZSTD_ps_enable = 1,
+	ZSTD_ps_disable = 2,
+} ZSTD_paramSwitch_e;
+
+typedef struct {
+	ZSTD_paramSwitch_e enableLdm;
+	U32 hashLog;
+	U32 bucketSizeLog;
+	U32 minMatchLength;
+	U32 hashRateLog;
+	U32 windowLog;
+} ldmParams_t;
+
+typedef enum {
+	ZSTD_sf_noBlockDelimiters = 0,
+	ZSTD_sf_explicitBlockDelimiters = 1,
+} ZSTD_sequenceFormat_e;
+
+struct ZSTD_CCtx_params_s {
+	ZSTD_format_e format;
+	ZSTD_compressionParameters cParams;
+	ZSTD_frameParameters fParams;
+	int compressionLevel;
+	int forceWindow;
+	size_t targetCBlockSize;
+	int srcSizeHint;
+	ZSTD_dictAttachPref_e attachDictPref;
+	ZSTD_paramSwitch_e literalCompressionMode;
+	int nbWorkers;
+	size_t jobSize;
+	int overlapLog;
+	int rsyncable;
+	ldmParams_t ldmParams;
+	int enableDedicatedDictSearch;
+	ZSTD_bufferMode_e inBufferMode;
+	ZSTD_bufferMode_e outBufferMode;
+	ZSTD_sequenceFormat_e blockDelimiters;
+	int validateSequences;
+	ZSTD_paramSwitch_e useBlockSplitter;
+	ZSTD_paramSwitch_e useRowMatchFinder;
+	int deterministicRefPrefix;
+	ZSTD_customMem customMem;
+};
+
+typedef struct ZSTD_CCtx_params_s ZSTD_CCtx_params;
+
+typedef enum {
+	ZSTD_cwksp_alloc_objects = 0,
+	ZSTD_cwksp_alloc_buffers = 1,
+	ZSTD_cwksp_alloc_aligned = 2,
+} ZSTD_cwksp_alloc_phase_e;
+
+typedef enum {
+	ZSTD_cwksp_dynamic_alloc = 0,
+	ZSTD_cwksp_static_alloc = 1,
+} ZSTD_cwksp_static_alloc_e;
+
+typedef struct {
+	void *workspace;
+	void *workspaceEnd;
+	void *objectEnd;
+	void *tableEnd;
+	void *tableValidEnd;
+	void *allocStart;
+	BYTE allocFailed;
+	int workspaceOversizedDuration;
+	ZSTD_cwksp_alloc_phase_e phase;
+	ZSTD_cwksp_static_alloc_e isStatic;
+} ZSTD_cwksp;
+
+struct POOL_ctx_s;
+
+typedef struct POOL_ctx_s ZSTD_threadPool;
+
+typedef struct {
+	unsigned int offset;
+	unsigned int litLength;
+	unsigned int matchLength;
+	unsigned int rep;
+} ZSTD_Sequence;
+
+typedef struct {
+	int collectSequences;
+	ZSTD_Sequence *seqStart;
+	size_t seqIndex;
+	size_t maxSequences;
+} SeqCollector;
+
+typedef enum {
+	ZSTD_llt_none = 0,
+	ZSTD_llt_literalLength = 1,
+	ZSTD_llt_matchLength = 2,
+} ZSTD_longLengthType_e;
+
+struct seqDef_s;
+
+typedef struct seqDef_s seqDef;
+
+typedef struct {
+	seqDef *sequencesStart;
+	seqDef *sequences;
+	BYTE *litStart;
+	BYTE *lit;
+	BYTE *llCode;
+	BYTE *mlCode;
+	BYTE *ofCode;
+	size_t maxNbSeq;
+	size_t maxNbLit;
+	ZSTD_longLengthType_e longLengthType;
+	U32 longLengthPos;
+} seqStore_t;
+
+typedef struct {
+	const BYTE *nextSrc;
+	const BYTE *base;
+	const BYTE *dictBase;
+	U32 dictLimit;
+	U32 lowLimit;
+	U32 nbOverflowCorrections;
+} ZSTD_window_t;
+
+typedef struct {
+	U32 offset;
+	U32 checksum;
+} ldmEntry_t;
+
+typedef struct {
+	const BYTE *split;
+	U32 hash;
+	U32 checksum;
+	ldmEntry_t *bucket;
+} ldmMatchCandidate_t;
+
+typedef struct {
+	ZSTD_window_t window;
+	ldmEntry_t *hashTable;
+	U32 loadedDictEnd;
+	BYTE *bucketOffsets;
+	size_t splitIndices[64];
+	ldmMatchCandidate_t matchCandidates[64];
+} ldmState_t;
+
+typedef struct {
+	U32 offset;
+	U32 litLength;
+	U32 matchLength;
+} rawSeq;
+
+typedef struct {
+	rawSeq *seq;
+	size_t pos;
+	size_t posInSequence;
+	size_t size;
+	size_t capacity;
+} rawSeqStore_t;
+
+typedef size_t HUF_CElt;
+
+typedef enum {
+	HUF_repeat_none = 0,
+	HUF_repeat_check = 1,
+	HUF_repeat_valid = 2,
+} HUF_repeat;
+
+typedef struct {
+	HUF_CElt CTable[257];
+	HUF_repeat repeatMode;
+} ZSTD_hufCTables_t;
+
+typedef unsigned int FSE_CTable;
+
+typedef enum {
+	FSE_repeat_none = 0,
+	FSE_repeat_check = 1,
+	FSE_repeat_valid = 2,
+} FSE_repeat;
+
+typedef struct {
+	FSE_CTable offcodeCTable[193];
+	FSE_CTable matchlengthCTable[363];
+	FSE_CTable litlengthCTable[329];
+	FSE_repeat offcode_repeatMode;
+	FSE_repeat matchlength_repeatMode;
+	FSE_repeat litlength_repeatMode;
+} ZSTD_fseCTables_t;
+
+typedef struct {
+	ZSTD_hufCTables_t huf;
+	ZSTD_fseCTables_t fse;
+} ZSTD_entropyCTables_t;
+
+typedef struct {
+	ZSTD_entropyCTables_t entropy;
+	U32 rep[3];
+} ZSTD_compressedBlockState_t;
+
+typedef struct {
+	U32 off;
+	U32 len;
+} ZSTD_match_t;
+
+typedef struct {
+	int price;
+	U32 off;
+	U32 mlen;
+	U32 litlen;
+	U32 rep[3];
+} ZSTD_optimal_t;
+
+typedef enum {
+	zop_dynamic = 0,
+	zop_predef = 1,
+} ZSTD_OptPrice_e;
+
+typedef struct {
+	unsigned int *litFreq;
+	unsigned int *litLengthFreq;
+	unsigned int *matchLengthFreq;
+	unsigned int *offCodeFreq;
+	ZSTD_match_t *matchTable;
+	ZSTD_optimal_t *priceTable;
+	U32 litSum;
+	U32 litLengthSum;
+	U32 matchLengthSum;
+	U32 offCodeSum;
+	U32 litSumBasePrice;
+	U32 litLengthSumBasePrice;
+	U32 matchLengthSumBasePrice;
+	U32 offCodeSumBasePrice;
+	ZSTD_OptPrice_e priceType;
+	const ZSTD_entropyCTables_t *symbolCosts;
+	ZSTD_paramSwitch_e literalCompressionMode;
+} optState_t;
+
+struct ZSTD_matchState_t;
+
+typedef struct ZSTD_matchState_t ZSTD_matchState_t;
+
+struct ZSTD_matchState_t {
+	ZSTD_window_t window;
+	U32 loadedDictEnd;
+	U32 nextToUpdate;
+	U32 hashLog3;
+	U32 rowHashLog;
+	U16 *tagTable;
+	U32 hashCache[8];
+	U32 *hashTable;
+	U32 *hashTable3;
+	U32 *chainTable;
+	U32 forceNonContiguous;
+	int dedicatedDictSearch;
+	optState_t opt;
+	const ZSTD_matchState_t *dictMatchState;
+	ZSTD_compressionParameters cParams;
+	const rawSeqStore_t *ldmSeqStore;
+};
+
+typedef struct {
+	ZSTD_compressedBlockState_t *prevCBlock;
+	ZSTD_compressedBlockState_t *nextCBlock;
+	ZSTD_matchState_t matchState;
+} ZSTD_blockState_t;
+
+typedef enum {
+	ZSTDb_not_buffered = 0,
+	ZSTDb_buffered = 1,
+} ZSTD_buffered_policy_e;
+
+typedef enum {
+	zcss_init = 0,
+	zcss_load = 1,
+	zcss_flush = 2,
+} ZSTD_cStreamStage;
+
+typedef enum {
+	ZSTD_dct_auto = 0,
+	ZSTD_dct_rawContent = 1,
+	ZSTD_dct_fullDict = 2,
+} ZSTD_dictContentType_e;
+
+struct ZSTD_CDict_s;
+
+typedef struct ZSTD_CDict_s ZSTD_CDict;
+
+typedef struct {
+	void *dictBuffer;
+	const void *dict;
+	size_t dictSize;
+	ZSTD_dictContentType_e dictContentType;
+	ZSTD_CDict *cdict;
+} ZSTD_localDict;
+
+struct ZSTD_prefixDict_s {
+	const void *dict;
+	size_t dictSize;
+	ZSTD_dictContentType_e dictContentType;
+};
+
+typedef struct ZSTD_prefixDict_s ZSTD_prefixDict;
+
+typedef enum {
+	set_basic = 0,
+	set_rle = 1,
+	set_compressed = 2,
+	set_repeat = 3,
+} symbolEncodingType_e;
+
+typedef struct {
+	symbolEncodingType_e hType;
+	BYTE hufDesBuffer[128];
+	size_t hufDesSize;
+} ZSTD_hufCTablesMetadata_t;
+
+typedef struct {
+	symbolEncodingType_e llType;
+	symbolEncodingType_e ofType;
+	symbolEncodingType_e mlType;
+	BYTE fseTablesBuffer[133];
+	size_t fseTablesSize;
+	size_t lastCountSize;
+} ZSTD_fseCTablesMetadata_t;
+
+typedef struct {
+	ZSTD_hufCTablesMetadata_t hufMetadata;
+	ZSTD_fseCTablesMetadata_t fseMetadata;
+} ZSTD_entropyCTablesMetadata_t;
+
+typedef struct {
+	seqStore_t fullSeqStoreChunk;
+	seqStore_t firstHalfSeqStore;
+	seqStore_t secondHalfSeqStore;
+	seqStore_t currSeqStore;
+	seqStore_t nextSeqStore;
+	U32 partitions[196];
+	ZSTD_entropyCTablesMetadata_t entropyMetadata;
+} ZSTD_blockSplitCtx;
+
+struct ZSTD_CCtx_s {
+	ZSTD_compressionStage_e stage;
+	int cParamsChanged;
+	int bmi2;
+	ZSTD_CCtx_params requestedParams;
+	ZSTD_CCtx_params appliedParams;
+	ZSTD_CCtx_params simpleApiParams;
+	U32 dictID;
+	size_t dictContentSize;
+	ZSTD_cwksp workspace;
+	size_t blockSize;
+	unsigned long long pledgedSrcSizePlusOne;
+	unsigned long long consumedSrcSize;
+	unsigned long long producedCSize;
+	struct xxh64_state xxhState;
+	ZSTD_customMem customMem;
+	ZSTD_threadPool *pool;
+	size_t staticSize;
+	SeqCollector seqCollector;
+	int isFirstBlock;
+	int initialized;
+	seqStore_t seqStore;
+	ldmState_t ldmState;
+	rawSeq *ldmSequences;
+	size_t maxNbLdmSequences;
+	rawSeqStore_t externSeqStore;
+	ZSTD_blockState_t blockState;
+	U32 *entropyWorkspace;
+	ZSTD_buffered_policy_e bufferedPolicy;
+	char *inBuff;
+	size_t inBuffSize;
+	size_t inToCompress;
+	size_t inBuffPos;
+	size_t inBuffTarget;
+	char *outBuff;
+	size_t outBuffSize;
+	size_t outBuffContentSize;
+	size_t outBuffFlushedSize;
+	ZSTD_cStreamStage streamStage;
+	U32 frameEnded;
+	ZSTD_inBuffer expectedInBuffer;
+	size_t expectedOutBufferSize;
+	ZSTD_localDict localDict;
+	const ZSTD_CDict *cdict;
+	ZSTD_prefixDict prefixDict;
+	ZSTD_blockSplitCtx blockSplitCtx;
+};
+
+typedef struct ZSTD_CCtx_s ZSTD_CCtx;
+
+typedef ZSTD_CCtx ZSTD_CStream;
+
+typedef ZSTD_CStream zstd_cstream;
+
+typedef enum {
+	ZSTD_error_no_error = 0,
+	ZSTD_error_GENERIC = 1,
+	ZSTD_error_prefix_unknown = 10,
+	ZSTD_error_version_unsupported = 12,
+	ZSTD_error_frameParameter_unsupported = 14,
+	ZSTD_error_frameParameter_windowTooLarge = 16,
+	ZSTD_error_corruption_detected = 20,
+	ZSTD_error_checksum_wrong = 22,
+	ZSTD_error_dictionary_corrupted = 30,
+	ZSTD_error_dictionary_wrong = 32,
+	ZSTD_error_dictionaryCreation_failed = 34,
+	ZSTD_error_parameter_unsupported = 40,
+	ZSTD_error_parameter_outOfBound = 42,
+	ZSTD_error_tableLog_tooLarge = 44,
+	ZSTD_error_maxSymbolValue_tooLarge = 46,
+	ZSTD_error_maxSymbolValue_tooSmall = 48,
+	ZSTD_error_stage_wrong = 60,
+	ZSTD_error_init_missing = 62,
+	ZSTD_error_memory_allocation = 64,
+	ZSTD_error_workSpace_tooSmall = 66,
+	ZSTD_error_dstSize_tooSmall = 70,
+	ZSTD_error_srcSize_wrong = 72,
+	ZSTD_error_dstBuffer_null = 74,
+	ZSTD_error_frameIndex_tooLarge = 100,
+	ZSTD_error_seekableIO = 102,
+	ZSTD_error_dstBuffer_wrong = 104,
+	ZSTD_error_srcBuffer_wrong = 105,
+	ZSTD_error_maxCode = 120,
+} ZSTD_ErrorCode;
+
+typedef ZSTD_ErrorCode zstd_error_code;
+
+enum pstore_type_id {
+	PSTORE_TYPE_DMESG = 0,
+	PSTORE_TYPE_MCE = 1,
+	PSTORE_TYPE_CONSOLE = 2,
+	PSTORE_TYPE_FTRACE = 3,
+	PSTORE_TYPE_PPC_RTAS = 4,
+	PSTORE_TYPE_PPC_OF = 5,
+	PSTORE_TYPE_PPC_COMMON = 6,
+	PSTORE_TYPE_PMSG = 7,
+	PSTORE_TYPE_PPC_OPAL = 8,
+	PSTORE_TYPE_MAX = 9,
+};
+
+enum {
+	Opt_kmsg_bytes = 0,
+	Opt_err___7 = 1,
+};
+
+struct pstore_record;
+
+struct pstore_private {
+	struct list_head list;
+	struct dentry *dentry;
+	struct pstore_record *record;
+	size_t total_size;
+};
+
+struct pstore_info;
+
+struct pstore_record {
+	struct pstore_info *psi;
+	enum pstore_type_id type;
+	u64 id;
+	struct timespec64 time;
+	char *buf;
+	ssize_t size;
+	ssize_t ecc_notice_size;
+	void *priv;
+	int count;
+	enum kmsg_dump_reason reason;
+	unsigned int part;
+	bool compressed;
+};
+
+struct pstore_info {
+	struct module *owner;
+	const char *name;
+	spinlock_t buf_lock;
+	char *buf;
+	size_t bufsize;
+	struct mutex read_mutex;
+	int flags;
+	int max_reason;
+	void *data;
+	int (*open)(struct pstore_info *);
+	int (*close)(struct pstore_info *);
+	ssize_t (*read)(struct pstore_record *);
+	int (*write)(struct pstore_record *);
+	int (*write_user)(struct pstore_record *, const char __attribute__((btf_type_tag("user"))) *);
+	int (*erase)(struct pstore_record *);
+};
+
+struct pstore_ftrace_record {
+	unsigned long ip;
+	unsigned long parent_ip;
+	u64 ts;
+};
+
+struct pstore_ftrace_seq_data {
+	const void *ptr;
+	size_t off;
+	size_t size;
+};
+
+typedef unsigned char Byte;
+
+typedef unsigned long uLong;
+
+struct internal_state;
+
+struct z_stream_s {
+	const Byte *next_in;
+	uLong avail_in;
+	uLong total_in;
+	Byte *next_out;
+	uLong avail_out;
+	uLong total_out;
+	char *msg;
+	struct internal_state *state;
+	void *workspace;
+	int data_type;
+	uLong adler;
+	uLong reserved;
+};
+
+struct internal_state {
+	int dummy;
+};
+
+typedef struct z_stream_s z_stream;
+
+typedef z_stream *z_streamp;
+
+struct persistent_ram_ecc_info {
+	int block_size;
+	int ecc_size;
+	int symsize;
+	int poly;
+	uint16_t *par;
+};
+
+struct persistent_ram_zone;
+
+struct ramoops_context {
+	struct persistent_ram_zone **dprzs;
+	struct persistent_ram_zone *cprz;
+	struct persistent_ram_zone **fprzs;
+	struct persistent_ram_zone *mprz;
+	phys_addr_t phys_addr;
+	unsigned long size;
+	unsigned int memtype;
+	size_t record_size;
+	size_t console_size;
+	size_t ftrace_size;
+	size_t pmsg_size;
+	u32 flags;
+	struct persistent_ram_ecc_info ecc_info;
+	unsigned int max_dump_cnt;
+	unsigned int dump_write_cnt;
+	unsigned int dump_read_cnt;
+	unsigned int console_read_cnt;
+	unsigned int max_ftrace_cnt;
+	unsigned int ftrace_read_cnt;
+	unsigned int pmsg_read_cnt;
+	struct pstore_info pstore;
+};
+
+struct persistent_ram_buffer;
+
+struct rs_control;
+
+struct persistent_ram_zone {
+	phys_addr_t paddr;
+	size_t size;
+	void *vaddr;
+	char *label;
+	enum pstore_type_id type;
+	u32 flags;
+	raw_spinlock_t buffer_lock;
+	struct persistent_ram_buffer *buffer;
+	size_t buffer_size;
+	char *par_buffer;
+	char *par_header;
+	struct rs_control *rs_decoder;
+	int corrected_bytes;
+	int bad_blocks;
+	struct persistent_ram_ecc_info ecc_info;
+	char *old_log;
+	size_t old_log_size;
+};
+
+struct ramoops_platform_data {
+	unsigned long mem_size;
+	phys_addr_t mem_address;
+	unsigned int mem_type;
+	unsigned long record_size;
+	unsigned long console_size;
+	unsigned long ftrace_size;
+	unsigned long pmsg_size;
+	int max_reason;
+	u32 flags;
+	struct persistent_ram_ecc_info ecc_info;
+};
+
+struct persistent_ram_buffer {
+	uint32_t sig;
+	atomic_t start;
+	atomic_t size;
+	uint8_t data[0];
+};
+
+struct rs_codec;
+
+struct rs_control {
+	struct rs_codec *codec;
+	uint16_t buffers[0];
+};
+
+struct rs_codec {
+	int mm;
+	int nn;
+	uint16_t *alpha_to;
+	uint16_t *index_of;
+	uint16_t *genpoly;
+	int nroots;
+	int fcr;
+	int prim;
+	int iprim;
+	int gfpoly;
+	int (*gffunc)(int);
+	int users;
+	struct list_head list;
+};
+
+typedef void (*btf_trace_erofs_lookup)(void *, struct inode *, struct dentry *, unsigned int);
+
+typedef void (*btf_trace_erofs_fill_inode)(void *, struct inode *);
+
+typedef void (*btf_trace_erofs_read_folio)(void *, struct folio *, bool);
+
+typedef void (*btf_trace_erofs_readpages)(void *, struct inode *, unsigned long, unsigned int, bool);
+
+struct erofs_map_blocks;
+
+typedef void (*btf_trace_erofs_map_blocks_enter)(void *, struct inode *, struct erofs_map_blocks *, unsigned int);
+
+enum erofs_kmap_type {
+	EROFS_NO_KMAP = 0,
+	EROFS_KMAP = 1,
+};
+
+struct erofs_buf {
+	struct inode *inode;
+	struct page *page;
+	void *base;
+	enum erofs_kmap_type kmap_type;
+};
+
+typedef u64 erofs_off_t;
+
+struct erofs_map_blocks {
+	struct erofs_buf buf;
+	erofs_off_t m_pa;
+	erofs_off_t m_la;
+	u64 m_plen;
+	u64 m_llen;
+	unsigned short m_deviceid;
+	char m_algorithmformat;
+	unsigned int m_flags;
+};
+
+typedef void (*btf_trace_z_erofs_map_blocks_iter_enter)(void *, struct inode *, struct erofs_map_blocks *, unsigned int);
+
+typedef void (*btf_trace_erofs_map_blocks_exit)(void *, struct inode *, struct erofs_map_blocks *, unsigned int, int);
+
+typedef void (*btf_trace_z_erofs_map_blocks_iter_exit)(void *, struct inode *, struct erofs_map_blocks *, unsigned int, int);
+
+typedef void (*btf_trace_erofs_destroy_inode)(void *, struct inode *);
+
+enum {
+	EROFS_ZIP_CACHE_DISABLED = 0,
+	EROFS_ZIP_CACHE_READAHEAD = 1,
+	EROFS_ZIP_CACHE_READAROUND = 2,
+};
+
+enum {
+	EROFS_SYNC_DECOMPRESS_AUTO = 0,
+	EROFS_SYNC_DECOMPRESS_FORCE_ON = 1,
+	EROFS_SYNC_DECOMPRESS_FORCE_OFF = 2,
+};
+
+enum {
+	Opt_user_xattr___3 = 0,
+	Opt_acl___3 = 1,
+	Opt_cache_strategy = 2,
+	Opt_dax___2 = 3,
+	Opt_dax_enum = 4,
+	Opt_device = 5,
+	Opt_fsid = 6,
+	Opt_domain_id = 7,
+	Opt_err___8 = 8,
+};
+
+typedef u32 erofs_blk_t;
+
+typedef u64 erofs_nid_t;
+
+struct erofs_inode {
+	erofs_nid_t nid;
+	unsigned long flags;
+	unsigned char datalayout;
+	unsigned char inode_isize;
+	unsigned int xattr_isize;
+	unsigned int xattr_name_filter;
+	unsigned int xattr_shared_count;
+	unsigned int *xattr_shared_xattrs;
+	union {
+		erofs_blk_t raw_blkaddr;
+		struct {
+			unsigned short chunkformat;
+			unsigned char chunkbits;
+		};
+		struct {
+			unsigned short z_advise;
+			unsigned char z_algorithmtype[2];
+			unsigned char z_logical_clusterbits;
+			unsigned long z_tailextent_headlcn;
+			union {
+				struct {
+					erofs_off_t z_idataoff;
+					unsigned short z_idata_size;
+				};
+				erofs_off_t z_fragmentoff;
+			};
+		};
+	};
+	struct inode vfs_inode;
+};
+
+struct trace_event_raw_erofs_lookup {
+	struct trace_entry ent;
+	dev_t dev;
+	erofs_nid_t nid;
+	u32 __data_loc_name;
+	unsigned int flags;
+	char __data[0];
+};
+
+struct erofs_mount_opts {
+	unsigned char cache_strategy;
+	unsigned int sync_decompress;
+	unsigned int max_sync_decompress_pages;
+	unsigned int mount_opt;
+};
+
+struct erofs_sb_lz4_info {
+	u16 max_distance_pages;
+	u16 max_pclusterblks;
+};
+
+struct fscache_volume;
+
+struct erofs_dev_context;
+
+struct erofs_xattr_prefix_item;
+
+struct erofs_fscache;
+
+struct erofs_domain;
+
+struct erofs_sb_info {
+	struct erofs_mount_opts opt;
+	struct list_head list;
+	struct mutex umount_mutex;
+	struct xarray managed_pslots;
+	unsigned int shrinker_run_no;
+	u16 available_compr_algs;
+	struct inode *managed_cache;
+	struct erofs_sb_lz4_info lz4;
+	struct inode *packed_inode;
+	struct erofs_dev_context *devs;
+	struct dax_device *dax_dev;
+	u64 dax_part_off;
+	u64 total_blocks;
+	u32 primarydevice_blocks;
+	u32 meta_blkaddr;
+	u32 xattr_blkaddr;
+	u32 xattr_prefix_start;
+	u8 xattr_prefix_count;
+	struct erofs_xattr_prefix_item *xattr_prefixes;
+	unsigned int xattr_filter_reserved;
+	u16 device_id_mask;
+	unsigned char islotbits;
+	unsigned char blkszbits;
+	u32 sb_size;
+	u32 build_time_nsec;
+	u64 build_time;
+	erofs_nid_t root_nid;
+	erofs_nid_t packed_nid;
+	u64 inos;
+	u8 uuid[16];
+	u8 volume_name[16];
+	u32 feature_compat;
+	u32 feature_incompat;
+	struct kobject s_kobj;
+	struct completion s_kobj_unregister;
+	struct fscache_volume *volume;
+	struct erofs_fscache *s_fscache;
+	struct erofs_domain *domain;
+	char *fsid;
+	char *domain_id;
+};
+
+struct erofs_dev_context {
+	struct idr tree;
+	struct rw_semaphore rwsem;
+	unsigned int extra_devices;
+	bool flatdev;
+};
+
+struct erofs_xattr_long_prefix;
+
+struct erofs_xattr_prefix_item {
+	struct erofs_xattr_long_prefix *prefix;
+	u8 infix_len;
+};
+
+struct erofs_xattr_long_prefix {
+	__u8 base_index;
+	char infix[0];
+};
+
+struct fscache_cookie;
+
+struct erofs_fscache {
+	struct fscache_cookie *cookie;
+	struct inode *inode;
+	struct erofs_domain *domain;
+	struct list_head node;
+	refcount_t ref;
+	char *name;
+};
+
+struct erofs_domain {
+	refcount_t ref;
+	struct list_head list;
+	struct fscache_volume *volume;
+	char *domain_id;
+};
+
+struct trace_event_raw_erofs_fill_inode {
+	struct trace_entry ent;
+	dev_t dev;
+	erofs_nid_t nid;
+	erofs_blk_t blkaddr;
+	unsigned int ofs;
+	char __data[0];
+};
+
+struct trace_event_raw_erofs_read_folio {
+	struct trace_entry ent;
+	dev_t dev;
+	erofs_nid_t nid;
+	int dir;
+	unsigned long index;
+	int uptodate;
+	bool raw;
+	char __data[0];
+};
+
+struct trace_event_raw_erofs_readpages {
+	struct trace_entry ent;
+	dev_t dev;
+	erofs_nid_t nid;
+	unsigned long start;
+	unsigned int nrpage;
+	bool raw;
+	char __data[0];
+};
+
+struct trace_event_raw_erofs__map_blocks_enter {
+	struct trace_entry ent;
+	dev_t dev;
+	erofs_nid_t nid;
+	erofs_off_t la;
+	u64 llen;
+	unsigned int flags;
+	char __data[0];
+};
+
+struct trace_event_raw_erofs__map_blocks_exit {
+	struct trace_entry ent;
+	dev_t dev;
+	erofs_nid_t nid;
+	unsigned int flags;
+	erofs_off_t la;
+	erofs_off_t pa;
+	u64 llen;
+	u64 plen;
+	unsigned int mflags;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_erofs_destroy_inode {
+	struct trace_entry ent;
+	dev_t dev;
+	erofs_nid_t nid;
+	char __data[0];
+};
+
+struct erofs_super_block {
+	__le32 magic;
+	__le32 checksum;
+	__le32 feature_compat;
+	__u8 blkszbits;
+	__u8 sb_extslots;
+	__le16 root_nid;
+	__le64 inos;
+	__le64 build_time;
+	__le32 build_time_nsec;
+	__le32 blocks;
+	__le32 meta_blkaddr;
+	__le32 xattr_blkaddr;
+	__u8 uuid[16];
+	__u8 volume_name[16];
+	__le32 feature_incompat;
+	union {
+		__le16 available_compr_algs;
+		__le16 lz4_max_distance;
+	} u1;
+	__le16 extra_devices;
+	__le16 devt_slotoff;
+	__u8 dirblkbits;
+	__u8 xattr_prefix_count;
+	__le32 xattr_prefix_start;
+	__le64 packed_nid;
+	__u8 xattr_filter_reserved;
+	__u8 reserved2[23];
+};
+
+struct trace_event_data_offsets_erofs_lookup {
+	u32 name;
+};
+
+struct erofs_fs_context {
+	struct erofs_mount_opts opt;
+	struct erofs_dev_context *devs;
+	char *fsid;
+	char *domain_id;
+};
+
+struct bdev_handle {
+	struct block_device *bdev;
+	void *holder;
+};
+
+struct trace_event_data_offsets_erofs_fill_inode {};
+
+struct trace_event_data_offsets_erofs_read_folio {};
+
+struct trace_event_data_offsets_erofs_readpages {};
+
+struct trace_event_data_offsets_erofs__map_blocks_enter {};
+
+struct trace_event_data_offsets_erofs__map_blocks_exit {};
+
+struct trace_event_data_offsets_erofs_destroy_inode {};
+
+struct erofs_device_info {
+	char *path;
+	struct erofs_fscache *fscache;
+	struct bdev_handle *bdev_handle;
+	struct dax_device *dax_dev;
+	u64 dax_part_off;
+	u32 blocks;
+	u32 mapped_blkaddr;
+};
+
+struct erofs_deviceslot {
+	u8 tag[64];
+	__le32 blocks;
+	__le32 mapped_blkaddr;
+	u8 reserved[56];
+};
+
+enum {
+	EROFS_INODE_FLAT_PLAIN = 0,
+	EROFS_INODE_COMPRESSED_FULL = 1,
+	EROFS_INODE_FLAT_INLINE = 2,
+	EROFS_INODE_COMPRESSED_COMPACT = 3,
+	EROFS_INODE_CHUNK_BASED = 4,
+	EROFS_INODE_DATALAYOUT_MAX = 5,
+};
+
+struct erofs_inode_chunk_info {
+	__le16 format;
+	__le16 reserved;
+};
+
+union erofs_inode_i_u {
+	__le32 compressed_blocks;
+	__le32 raw_blkaddr;
+	__le32 rdev;
+	struct erofs_inode_chunk_info c;
+};
+
+struct erofs_inode_extended {
+	__le16 i_format;
+	__le16 i_xattr_icount;
+	__le16 i_mode;
+	__le16 i_reserved;
+	__le64 i_size;
+	union erofs_inode_i_u i_u;
+	__le32 i_ino;
+	__le32 i_uid;
+	__le32 i_gid;
+	__le64 i_mtime;
+	__le32 i_mtime_nsec;
+	__le32 i_nlink;
+	__u8 i_reserved2[16];
+};
+
+struct erofs_inode_compact {
+	__le16 i_format;
+	__le16 i_xattr_icount;
+	__le16 i_mode;
+	__le16 i_nlink;
+	__le32 i_size;
+	__le32 i_reserved;
+	union erofs_inode_i_u i_u;
+	__le32 i_ino;
+	__le16 i_uid;
+	__le16 i_gid;
+	__le32 i_reserved2;
+};
+
+struct erofs_inode_chunk_index {
+	__le16 advise;
+	__le16 device_id;
+	__le32 blkaddr;
+};
+
+struct erofs_map_dev {
+	struct erofs_fscache *m_fscache;
+	struct block_device *m_bdev;
+	struct dax_device *m_daxdev;
+	u64 m_dax_part_off;
+	erofs_off_t m_pa;
+	unsigned int m_deviceid;
+};
+
+struct erofs_dirent {
+	__le64 nid;
+	__le16 nameoff;
+	__u8 file_type;
+	__u8 reserved;
+} __attribute__((packed));
+
+struct erofs_qstr {
+	const unsigned char *name;
+	const unsigned char *end;
+};
+
+struct erofs_attr {
+	struct attribute attr;
+	short attr_id;
+	int struct_type;
+	int offset;
+};
+
+enum {
+	attr_feature___2 = 0,
+	attr_pointer_ui___2 = 1,
+	attr_pointer_bool = 2,
+};
+
+enum {
+	struct_erofs_sb_info = 0,
+	struct_erofs_mount_opts = 1,
+};
+
+struct erofs_xattr_entry {
+	__u8 e_name_len;
+	__u8 e_name_index;
+	__le16 e_value_size;
+	char e_name[0];
+};
+
+struct erofs_xattr_iter {
+	struct super_block *sb;
+	struct erofs_buf buf;
+	erofs_off_t pos;
+	void *kaddr;
+	char *buffer;
+	int buffer_size;
+	int buffer_ofs;
+	int index;
+	int infix_len;
+	struct qstr name;
+	struct dentry *dentry;
+};
+
+struct erofs_xattr_ibody_header {
+	__le32 h_name_filter;
+	__u8 h_shared_count;
+	__u8 h_reserved2[7];
+	__le32 h_shared_xattrs[0];
+};
+
+struct z_erofs_decompress_req;
+
+struct z_erofs_decompressor {
+	int (*config)(struct super_block *, struct erofs_super_block *, void *, int);
+	int (*decompress)(struct z_erofs_decompress_req *, struct page **);
+	char *name;
+};
+
+struct z_erofs_decompress_req {
+	struct super_block *sb;
+	struct page **in;
+	struct page **out;
+	unsigned short pageofs_in;
+	unsigned short pageofs_out;
+	unsigned int inputsize;
+	unsigned int outputsize;
+	unsigned int alg;
+	bool inplace_io;
+	bool partial_decoding;
+	bool fillgaps;
+	gfp_t gfp;
+};
+
+enum {
+	Z_EROFS_COMPRESSION_LZ4 = 0,
+	Z_EROFS_COMPRESSION_LZMA = 1,
+	Z_EROFS_COMPRESSION_DEFLATE = 2,
+	Z_EROFS_COMPRESSION_MAX = 3,
+};
+
+enum {
+	Z_EROFS_COMPRESSION_SHIFTED = 3,
+	Z_EROFS_COMPRESSION_INTERLACED = 4,
+	Z_EROFS_COMPRESSION_RUNTIME_MAX = 5,
+};
+
+struct z_erofs_lz4_decompress_ctx {
+	struct z_erofs_decompress_req *rq;
+	unsigned int inpages;
+	unsigned int outpages;
+	unsigned int oend;
+};
+
+struct z_erofs_lz4_cfgs {
+	__le16 max_distance;
+	__le16 max_pclusterblks;
+	u8 reserved[10];
+};
+
+enum {
+	Z_EROFS_LCLUSTER_TYPE_PLAIN = 0,
+	Z_EROFS_LCLUSTER_TYPE_HEAD1 = 1,
+	Z_EROFS_LCLUSTER_TYPE_NONHEAD = 2,
+	Z_EROFS_LCLUSTER_TYPE_HEAD2 = 3,
+	Z_EROFS_LCLUSTER_TYPE_MAX = 4,
+};
+
+struct z_erofs_map_header {
+	union {
+		__le32 h_fragmentoff;
+		struct {
+			__le16 h_reserved1;
+			__le16 h_idata_size;
+		};
+	};
+	__le16 h_advise;
+	__u8 h_algorithmtype;
+	__u8 h_clusterbits;
+};
+
+struct z_erofs_maprecorder {
+	struct inode *inode;
+	struct erofs_map_blocks *map;
+	void *kaddr;
+	unsigned long lcn;
+	u8 type;
+	u8 headtype;
+	u16 clusterofs;
+	u16 delta[2];
+	erofs_blk_t pblk;
+	erofs_blk_t compressedblks;
+	erofs_off_t nextpackoff;
+	bool partialref;
+};
+
+struct z_erofs_lcluster_index {
+	__le16 di_advise;
+	__le16 di_clusterofs;
+	union {
+		__le32 blkaddr;
+		__le16 delta[2];
+	} di_u;
+};
+
+struct z_erofs_pcluster_slab {
+	struct kmem_cache *slab;
+	unsigned int maxpages;
+	char name[48];
+};
+
+enum z_erofs_pclustermode {
+	Z_EROFS_PCLUSTER_INFLIGHT = 0,
+	Z_EROFS_PCLUSTER_FOLLOWED_NOINPLACE = 1,
+	Z_EROFS_PCLUSTER_FOLLOWED = 2,
+};
+
+enum {
+	JQ_BYPASS = 0,
+	JQ_SUBMIT = 1,
+	NR_JOBQUEUES = 2,
+};
+
+struct z_erofs_bvec {
+	struct page *page;
+	int offset;
+	unsigned int end;
+};
+
+struct z_erofs_bvset_inline {
+	struct page *nextpage;
+	struct z_erofs_bvec bvec[2];
+};
+
+struct erofs_workgroup {
+	unsigned long index;
+	struct lockref lockref;
+};
+
+typedef void *z_erofs_next_pcluster_t;
+
+struct z_erofs_pcluster {
+	struct erofs_workgroup obj;
+	struct mutex lock;
+	z_erofs_next_pcluster_t next;
+	unsigned int length;
+	unsigned int vcnt;
+	unsigned int pclustersize;
+	unsigned short pageofs_out;
+	unsigned short pageofs_in;
+	union {
+		struct z_erofs_bvset_inline bvset;
+		struct callback_head rcu;
+	};
+	unsigned char algorithmformat;
+	bool partial;
+	bool multibases;
+	bool besteffort;
+	struct z_erofs_bvec compressed_bvecs[0];
+};
+
+struct z_erofs_bvset {
+	struct page *nextpage;
+	struct z_erofs_bvec bvec[0];
+};
+
+struct z_erofs_decompressqueue {
+	struct super_block *sb;
+	atomic_t pending_bios;
+	z_erofs_next_pcluster_t head;
+	union {
+		struct completion done;
+		struct work_struct work;
+		struct kthread_work kthread_work;
+	} u;
+	bool eio;
+	bool sync;
+};
+
+struct z_erofs_bvec_item {
+	struct z_erofs_bvec bvec;
+	struct list_head list;
+};
+
+struct z_erofs_bvec_iter {
+	struct page *bvpage;
+	struct z_erofs_bvset *bvset;
+	unsigned int nr;
+	unsigned int cur;
+};
+
+struct z_erofs_decompress_frontend {
+	struct inode * const inode;
+	struct erofs_map_blocks map;
+	struct z_erofs_bvec_iter biter;
+	struct page *pagepool;
+	struct page *candidate_bvpage;
+	struct z_erofs_pcluster *pcl;
+	z_erofs_next_pcluster_t owned_head;
+	enum z_erofs_pclustermode mode;
+	erofs_off_t headoffset;
+	unsigned int icur;
+};
+
+struct z_erofs_decompress_backend {
+	struct page *onstack_pages[32];
+	struct super_block *sb;
+	struct z_erofs_pcluster *pcl;
+	struct page **decompressed_pages;
+	struct page **compressed_pages;
+	struct list_head decompressed_secondary_bvecs;
+	struct page **pagepool;
+	unsigned int onstack_used;
+	unsigned int nr_pages;
+};
+
+struct z_erofs_gbuf {
+	spinlock_t lock;
+	void *ptr;
+	struct page **pages;
+	unsigned int nrpages;
+};
+
+struct key_user {
+	struct rb_node node;
+	struct mutex cons_lock;
+	spinlock_t lock;
+	refcount_t usage;
+	atomic_t nkeys;
+	atomic_t nikeys;
+	kuid_t uid;
+	int qnkeys;
+	int qnbytes;
+};
+
+enum key_notification_subtype {
+	NOTIFY_KEY_INSTANTIATED = 0,
+	NOTIFY_KEY_UPDATED = 1,
+	NOTIFY_KEY_LINKED = 2,
+	NOTIFY_KEY_UNLINKED = 3,
+	NOTIFY_KEY_CLEARED = 4,
+	NOTIFY_KEY_REVOKED = 5,
+	NOTIFY_KEY_INVALIDATED = 6,
+	NOTIFY_KEY_SETATTR = 7,
+};
+
+struct assoc_array_ops {
+	unsigned long (*get_key_chunk)(const void *, int);
+	unsigned long (*get_object_key_chunk)(const void *, int);
+	bool (*compare_object)(const void *, const void *);
+	int (*diff_objects)(const void *, const void *);
+	void (*free_object)(void *);
+};
+
+struct assoc_array_shortcut {
+	struct assoc_array_ptr *back_pointer;
+	int parent_slot;
+	int skip_to_level;
+	struct assoc_array_ptr *next_node;
+	unsigned long index_key[0];
+};
+
+struct assoc_array_node {
+	struct assoc_array_ptr *back_pointer;
+	u8 parent_slot;
+	struct assoc_array_ptr *slots[16];
+	unsigned long nr_leaves_on_branch;
+};
+
+struct assoc_array_edit {
+	struct callback_head rcu;
+	struct assoc_array *array;
+	const struct assoc_array_ops *ops;
+	const struct assoc_array_ops *ops_for_excised_subtree;
+	struct assoc_array_ptr *leaf;
+	struct assoc_array_ptr **leaf_p;
+	struct assoc_array_ptr *dead_leaf;
+	struct assoc_array_ptr *new_meta[3];
+	struct assoc_array_ptr *excised_meta[1];
+	struct assoc_array_ptr *excised_subtree;
+	struct assoc_array_ptr **set_backpointers[16];
+	struct assoc_array_ptr *set_backpointers_to;
+	struct assoc_array_node *adjust_count_on;
+	long adjust_count_by;
+	struct {
+		struct assoc_array_ptr **ptr;
+		struct assoc_array_ptr *to;
+	} set[2];
+	struct {
+		u8 *p;
+		u8 to;
+	} set_parent_slot[1];
+	u8 segment_cache[17];
+};
+
+struct keyring_search_context {
+	struct keyring_index_key index_key;
+	const struct cred *cred;
+	struct key_match_data match_data;
+	unsigned int flags;
+	int (*iterator)(const void *, void *);
+	int skipped_ret;
+	bool possessed;
+	key_ref_t result;
+	time64_t now;
+};
+
+struct keyring_read_iterator_context {
+	size_t buflen;
+	size_t count;
+	key_serial_t *buffer;
+};
+
+struct keyctl_dh_params {
+	union {
+		__s32 private;
+		__s32 priv;
+	};
+	__s32 prime;
+	__s32 base;
+};
+
+struct keyctl_kdf_params {
+	char __attribute__((btf_type_tag("user"))) *hashname;
+	char __attribute__((btf_type_tag("user"))) *otherinfo;
+	__u32 otherinfolen;
+	__u32 __spare[8];
+};
+
+struct keyctl_pkey_query {
+	__u32 supported_ops;
+	__u32 key_size;
+	__u16 max_data_size;
+	__u16 max_sig_size;
+	__u16 max_enc_size;
+	__u16 max_dec_size;
+	__u32 __spare[10];
+};
+
+struct keyctl_pkey_params {
+	__s32 key_id;
+	__u32 in_len;
+	union {
+		__u32 out_len;
+		__u32 in2_len;
+	};
+	__u32 __spare[7];
+};
+
+struct request_key_auth {
+	struct callback_head rcu;
+	struct key *target_key;
+	struct key *dest_keyring;
+	const struct cred *cred;
+	void *callout_info;
+	size_t callout_len;
+	pid_t pid;
+	char op[8];
+};
+
+enum {
+	Opt_err___9 = 0,
+	Opt_enc = 1,
+	Opt_hash = 2,
+};
+
+enum lsm_order {
+	LSM_ORDER_FIRST = -1,
+	LSM_ORDER_MUTABLE = 0,
+	LSM_ORDER_LAST = 1,
+};
+
+struct lsm_blob_sizes;
+
+struct lsm_info {
+	const char *name;
+	enum lsm_order order;
+	unsigned long flags;
+	int *enabled;
+	int (*init)();
+	struct lsm_blob_sizes *blobs;
+};
+
+struct lsm_blob_sizes {
+	int lbs_cred;
+	int lbs_file;
+	int lbs_inode;
+	int lbs_superblock;
+	int lbs_ipc;
+	int lbs_msg_msg;
+	int lbs_task;
+	int lbs_xattr_count;
+};
+
+struct msg_msg;
+
+struct sctp_association;
+
+union security_list_options {
+	int (*binder_set_context_mgr)(const struct cred *);
+	int (*binder_transaction)(const struct cred *, const struct cred *);
+	int (*binder_transfer_binder)(const struct cred *, const struct cred *);
+	int (*binder_transfer_file)(const struct cred *, const struct cred *, const struct file *);
+	int (*ptrace_access_check)(struct task_struct *, unsigned int);
+	int (*ptrace_traceme)(struct task_struct *);
+	int (*capget)(const struct task_struct *, kernel_cap_t *, kernel_cap_t *, kernel_cap_t *);
+	int (*capset)(struct cred *, const struct cred *, const kernel_cap_t *, const kernel_cap_t *, const kernel_cap_t *);
+	int (*capable)(const struct cred *, struct user_namespace *, int, unsigned int);
+	int (*quotactl)(int, int, int, struct super_block *);
+	int (*quota_on)(struct dentry *);
+	int (*syslog)(int);
+	int (*settime)(const struct timespec64 *, const struct timezone *);
+	int (*vm_enough_memory)(struct mm_struct *, long);
+	int (*bprm_creds_for_exec)(struct linux_binprm *);
+	int (*bprm_creds_from_file)(struct linux_binprm *, struct file *);
+	int (*bprm_check_security)(struct linux_binprm *);
+	void (*bprm_committing_creds)(struct linux_binprm *);
+	void (*bprm_committed_creds)(struct linux_binprm *);
+	int (*fs_context_submount)(struct fs_context *, struct super_block *);
+	int (*fs_context_dup)(struct fs_context *, struct fs_context *);
+	int (*fs_context_parse_param)(struct fs_context *, struct fs_parameter *);
+	int (*sb_alloc_security)(struct super_block *);
+	void (*sb_delete)(struct super_block *);
+	void (*sb_free_security)(struct super_block *);
+	void (*sb_free_mnt_opts)(void *);
+	int (*sb_eat_lsm_opts)(char *, void **);
+	int (*sb_mnt_opts_compat)(struct super_block *, void *);
+	int (*sb_remount)(struct super_block *, void *);
+	int (*sb_kern_mount)(struct super_block *);
+	int (*sb_show_options)(struct seq_file *, struct super_block *);
+	int (*sb_statfs)(struct dentry *);
+	int (*sb_mount)(const char *, const struct path *, const char *, unsigned long, void *);
+	int (*sb_umount)(struct vfsmount *, int);
+	int (*sb_pivotroot)(const struct path *, const struct path *);
+	int (*sb_set_mnt_opts)(struct super_block *, void *, unsigned long, unsigned long *);
+	int (*sb_clone_mnt_opts)(const struct super_block *, struct super_block *, unsigned long, unsigned long *);
+	int (*move_mount)(const struct path *, const struct path *);
+	int (*dentry_init_security)(struct dentry *, int, const struct qstr *, const char **, void **, u32 *);
+	int (*dentry_create_files_as)(struct dentry *, int, struct qstr *, const struct cred *, struct cred *);
+	int (*path_notify)(const struct path *, u64, unsigned int);
+	int (*inode_alloc_security)(struct inode *);
+	void (*inode_free_security)(struct inode *);
+	int (*inode_init_security)(struct inode *, struct inode *, const struct qstr *, struct xattr *, int *);
+	int (*inode_init_security_anon)(struct inode *, const struct qstr *, const struct inode *);
+	int (*inode_create)(struct inode *, struct dentry *, umode_t);
+	int (*inode_link)(struct dentry *, struct inode *, struct dentry *);
+	int (*inode_unlink)(struct inode *, struct dentry *);
+	int (*inode_symlink)(struct inode *, struct dentry *, const char *);
+	int (*inode_mkdir)(struct inode *, struct dentry *, umode_t);
+	int (*inode_rmdir)(struct inode *, struct dentry *);
+	int (*inode_mknod)(struct inode *, struct dentry *, umode_t, dev_t);
+	int (*inode_rename)(struct inode *, struct dentry *, struct inode *, struct dentry *);
+	int (*inode_readlink)(struct dentry *);
+	int (*inode_follow_link)(struct dentry *, struct inode *, bool);
+	int (*inode_permission)(struct inode *, int);
+	int (*inode_setattr)(struct dentry *, struct iattr *);
+	int (*inode_getattr)(const struct path *);
+	int (*inode_setxattr)(struct mnt_idmap *, struct dentry *, const char *, const void *, size_t, int);
+	void (*inode_post_setxattr)(struct dentry *, const char *, const void *, size_t, int);
+	int (*inode_getxattr)(struct dentry *, const char *);
+	int (*inode_listxattr)(struct dentry *);
+	int (*inode_removexattr)(struct mnt_idmap *, struct dentry *, const char *);
+	int (*inode_set_acl)(struct mnt_idmap *, struct dentry *, const char *, struct posix_acl *);
+	int (*inode_get_acl)(struct mnt_idmap *, struct dentry *, const char *);
+	int (*inode_remove_acl)(struct mnt_idmap *, struct dentry *, const char *);
+	int (*inode_need_killpriv)(struct dentry *);
+	int (*inode_killpriv)(struct mnt_idmap *, struct dentry *);
+	int (*inode_getsecurity)(struct mnt_idmap *, struct inode *, const char *, void **, bool);
+	int (*inode_setsecurity)(struct inode *, const char *, const void *, size_t, int);
+	int (*inode_listsecurity)(struct inode *, char *, size_t);
+	void (*inode_getsecid)(struct inode *, u32 *);
+	int (*inode_copy_up)(struct dentry *, struct cred **);
+	int (*inode_copy_up_xattr)(const char *);
+	int (*kernfs_init_security)(struct kernfs_node *, struct kernfs_node *);
+	int (*file_permission)(struct file *, int);
+	int (*file_alloc_security)(struct file *);
+	void (*file_free_security)(struct file *);
+	int (*file_ioctl)(struct file *, unsigned int, unsigned long);
+	int (*file_ioctl_compat)(struct file *, unsigned int, unsigned long);
+	int (*mmap_addr)(unsigned long);
+	int (*mmap_file)(struct file *, unsigned long, unsigned long, unsigned long);
+	int (*file_mprotect)(struct vm_area_struct *, unsigned long, unsigned long);
+	int (*file_lock)(struct file *, unsigned int);
+	int (*file_fcntl)(struct file *, unsigned int, unsigned long);
+	void (*file_set_fowner)(struct file *);
+	int (*file_send_sigiotask)(struct task_struct *, struct fown_struct *, int);
+	int (*file_receive)(struct file *);
+	int (*file_open)(struct file *);
+	int (*file_truncate)(struct file *);
+	int (*task_alloc)(struct task_struct *, unsigned long);
+	void (*task_free)(struct task_struct *);
+	int (*cred_alloc_blank)(struct cred *, gfp_t);
+	void (*cred_free)(struct cred *);
+	int (*cred_prepare)(struct cred *, const struct cred *, gfp_t);
+	void (*cred_transfer)(struct cred *, const struct cred *);
+	void (*cred_getsecid)(const struct cred *, u32 *);
+	int (*kernel_act_as)(struct cred *, u32);
+	int (*kernel_create_files_as)(struct cred *, struct inode *);
+	int (*kernel_module_request)(char *);
+	int (*kernel_load_data)(enum kernel_load_data_id, bool);
+	int (*kernel_post_load_data)(char *, loff_t, enum kernel_load_data_id, char *);
+	int (*kernel_read_file)(struct file *, enum kernel_read_file_id, bool);
+	int (*kernel_post_read_file)(struct file *, char *, loff_t, enum kernel_read_file_id);
+	int (*task_fix_setuid)(struct cred *, const struct cred *, int);
+	int (*task_fix_setgid)(struct cred *, const struct cred *, int);
+	int (*task_fix_setgroups)(struct cred *, const struct cred *);
+	int (*task_setpgid)(struct task_struct *, pid_t);
+	int (*task_getpgid)(struct task_struct *);
+	int (*task_getsid)(struct task_struct *);
+	void (*current_getsecid_subj)(u32 *);
+	void (*task_getsecid_obj)(struct task_struct *, u32 *);
+	int (*task_setnice)(struct task_struct *, int);
+	int (*task_setioprio)(struct task_struct *, int);
+	int (*task_getioprio)(struct task_struct *);
+	int (*task_prlimit)(const struct cred *, const struct cred *, unsigned int);
+	int (*task_setrlimit)(struct task_struct *, unsigned int, struct rlimit *);
+	int (*task_setscheduler)(struct task_struct *);
+	int (*task_getscheduler)(struct task_struct *);
+	int (*task_movememory)(struct task_struct *);
+	int (*task_kill)(struct task_struct *, struct kernel_siginfo *, int, const struct cred *);
+	int (*task_prctl)(int, unsigned long, unsigned long, unsigned long, unsigned long);
+	void (*task_to_inode)(struct task_struct *, struct inode *);
+	int (*userns_create)(const struct cred *);
+	int (*ipc_permission)(struct kern_ipc_perm *, short);
+	void (*ipc_getsecid)(struct kern_ipc_perm *, u32 *);
+	int (*msg_msg_alloc_security)(struct msg_msg *);
+	void (*msg_msg_free_security)(struct msg_msg *);
+	int (*msg_queue_alloc_security)(struct kern_ipc_perm *);
+	void (*msg_queue_free_security)(struct kern_ipc_perm *);
+	int (*msg_queue_associate)(struct kern_ipc_perm *, int);
+	int (*msg_queue_msgctl)(struct kern_ipc_perm *, int);
+	int (*msg_queue_msgsnd)(struct kern_ipc_perm *, struct msg_msg *, int);
+	int (*msg_queue_msgrcv)(struct kern_ipc_perm *, struct msg_msg *, struct task_struct *, long, int);
+	int (*shm_alloc_security)(struct kern_ipc_perm *);
+	void (*shm_free_security)(struct kern_ipc_perm *);
+	int (*shm_associate)(struct kern_ipc_perm *, int);
+	int (*shm_shmctl)(struct kern_ipc_perm *, int);
+	int (*shm_shmat)(struct kern_ipc_perm *, char __attribute__((btf_type_tag("user"))) *, int);
+	int (*sem_alloc_security)(struct kern_ipc_perm *);
+	void (*sem_free_security)(struct kern_ipc_perm *);
+	int (*sem_associate)(struct kern_ipc_perm *, int);
+	int (*sem_semctl)(struct kern_ipc_perm *, int);
+	int (*sem_semop)(struct kern_ipc_perm *, struct sembuf *, unsigned int, int);
+	int (*netlink_send)(struct sock *, struct sk_buff *);
+	void (*d_instantiate)(struct dentry *, struct inode *);
+	int (*getprocattr)(struct task_struct *, const char *, char **);
+	int (*setprocattr)(const char *, void *, size_t);
+	int (*ismaclabel)(const char *);
+	int (*secid_to_secctx)(u32, char **, u32 *);
+	int (*secctx_to_secid)(const char *, u32, u32 *);
+	void (*release_secctx)(char *, u32);
+	void (*inode_invalidate_secctx)(struct inode *);
+	int (*inode_notifysecctx)(struct inode *, void *, u32);
+	int (*inode_setsecctx)(struct dentry *, void *, u32);
+	int (*inode_getsecctx)(struct inode *, void **, u32 *);
+	int (*unix_stream_connect)(struct sock *, struct sock *, struct sock *);
+	int (*unix_may_send)(struct socket *, struct socket *);
+	int (*socket_create)(int, int, int, int);
+	int (*socket_post_create)(struct socket *, int, int, int, int);
+	int (*socket_socketpair)(struct socket *, struct socket *);
+	int (*socket_bind)(struct socket *, struct sockaddr *, int);
+	int (*socket_connect)(struct socket *, struct sockaddr *, int);
+	int (*socket_listen)(struct socket *, int);
+	int (*socket_accept)(struct socket *, struct socket *);
+	int (*socket_sendmsg)(struct socket *, struct msghdr *, int);
+	int (*socket_recvmsg)(struct socket *, struct msghdr *, int, int);
+	int (*socket_getsockname)(struct socket *);
+	int (*socket_getpeername)(struct socket *);
+	int (*socket_getsockopt)(struct socket *, int, int);
+	int (*socket_setsockopt)(struct socket *, int, int);
+	int (*socket_shutdown)(struct socket *, int);
+	int (*socket_sock_rcv_skb)(struct sock *, struct sk_buff *);
+	int (*socket_getpeersec_stream)(struct socket *, sockptr_t, sockptr_t, unsigned int);
+	int (*socket_getpeersec_dgram)(struct socket *, struct sk_buff *, u32 *);
+	int (*sk_alloc_security)(struct sock *, int, gfp_t);
+	void (*sk_free_security)(struct sock *);
+	void (*sk_clone_security)(const struct sock *, struct sock *);
+	void (*sk_getsecid)(const struct sock *, u32 *);
+	void (*sock_graft)(struct sock *, struct socket *);
+	int (*inet_conn_request)(const struct sock *, struct sk_buff *, struct request_sock *);
+	void (*inet_csk_clone)(struct sock *, const struct request_sock *);
+	void (*inet_conn_established)(struct sock *, struct sk_buff *);
+	int (*secmark_relabel_packet)(u32);
+	void (*secmark_refcount_inc)();
+	void (*secmark_refcount_dec)();
+	void (*req_classify_flow)(const struct request_sock *, struct flowi_common *);
+	int (*tun_dev_alloc_security)(void **);
+	void (*tun_dev_free_security)(void *);
+	int (*tun_dev_create)();
+	int (*tun_dev_attach_queue)(void *);
+	int (*tun_dev_attach)(struct sock *, void *);
+	int (*tun_dev_open)(void *);
+	int (*sctp_assoc_request)(struct sctp_association *, struct sk_buff *);
+	int (*sctp_bind_connect)(struct sock *, int, struct sockaddr *, int);
+	void (*sctp_sk_clone)(struct sctp_association *, struct sock *, struct sock *);
+	int (*sctp_assoc_established)(struct sctp_association *, struct sk_buff *);
+	int (*mptcp_add_subflow)(struct sock *, struct sock *);
+	int (*key_alloc)(struct key *, const struct cred *, unsigned long);
+	void (*key_free)(struct key *);
+	int (*key_permission)(key_ref_t, const struct cred *, enum key_need_perm);
+	int (*key_getsecurity)(struct key *, char **);
+	int (*audit_rule_init)(u32, u32, char *, void **);
+	int (*audit_rule_known)(struct audit_krule *);
+	int (*audit_rule_match)(u32, u32, u32, void *);
+	void (*audit_rule_free)(void *);
+	int (*bpf)(int, union bpf_attr *, unsigned int);
+	int (*bpf_map)(struct bpf_map *, fmode_t);
+	int (*bpf_prog)(struct bpf_prog *);
+	int (*bpf_map_alloc_security)(struct bpf_map *);
+	void (*bpf_map_free_security)(struct bpf_map *);
+	int (*bpf_prog_alloc_security)(struct bpf_prog_aux *);
+	void (*bpf_prog_free_security)(struct bpf_prog_aux *);
+	int (*locked_down)(enum lockdown_reason);
+	int (*perf_event_open)(struct perf_event_attr *, int);
+	int (*perf_event_alloc)(struct perf_event *);
+	void (*perf_event_free)(struct perf_event *);
+	int (*perf_event_read)(struct perf_event *);
+	int (*perf_event_write)(struct perf_event *);
+	int (*uring_override_creds)(const struct cred *);
+	int (*uring_sqpoll)();
+	int (*uring_cmd)(struct io_uring_cmd *);
+};
+
+struct security_hook_list {
+	struct hlist_node list;
+	struct hlist_head *head;
+	union security_list_options hook;
+	const char *lsm;
+};
+
+struct vfs_cap_data {
+	__le32 magic_etc;
+	struct {
+		__le32 permitted;
+		__le32 inheritable;
+	} data[2];
+};
+
+struct vfs_ns_cap_data {
+	__le32 magic_etc;
+	struct {
+		__le32 permitted;
+		__le32 inheritable;
+	} data[2];
+	__le32 rootid;
+};
+
+struct security_hook_heads {
+	struct hlist_head binder_set_context_mgr;
+	struct hlist_head binder_transaction;
+	struct hlist_head binder_transfer_binder;
+	struct hlist_head binder_transfer_file;
+	struct hlist_head ptrace_access_check;
+	struct hlist_head ptrace_traceme;
+	struct hlist_head capget;
+	struct hlist_head capset;
+	struct hlist_head capable;
+	struct hlist_head quotactl;
+	struct hlist_head quota_on;
+	struct hlist_head syslog;
+	struct hlist_head settime;
+	struct hlist_head vm_enough_memory;
+	struct hlist_head bprm_creds_for_exec;
+	struct hlist_head bprm_creds_from_file;
+	struct hlist_head bprm_check_security;
+	struct hlist_head bprm_committing_creds;
+	struct hlist_head bprm_committed_creds;
+	struct hlist_head fs_context_submount;
+	struct hlist_head fs_context_dup;
+	struct hlist_head fs_context_parse_param;
+	struct hlist_head sb_alloc_security;
+	struct hlist_head sb_delete;
+	struct hlist_head sb_free_security;
+	struct hlist_head sb_free_mnt_opts;
+	struct hlist_head sb_eat_lsm_opts;
+	struct hlist_head sb_mnt_opts_compat;
+	struct hlist_head sb_remount;
+	struct hlist_head sb_kern_mount;
+	struct hlist_head sb_show_options;
+	struct hlist_head sb_statfs;
+	struct hlist_head sb_mount;
+	struct hlist_head sb_umount;
+	struct hlist_head sb_pivotroot;
+	struct hlist_head sb_set_mnt_opts;
+	struct hlist_head sb_clone_mnt_opts;
+	struct hlist_head move_mount;
+	struct hlist_head dentry_init_security;
+	struct hlist_head dentry_create_files_as;
+	struct hlist_head path_notify;
+	struct hlist_head inode_alloc_security;
+	struct hlist_head inode_free_security;
+	struct hlist_head inode_init_security;
+	struct hlist_head inode_init_security_anon;
+	struct hlist_head inode_create;
+	struct hlist_head inode_link;
+	struct hlist_head inode_unlink;
+	struct hlist_head inode_symlink;
+	struct hlist_head inode_mkdir;
+	struct hlist_head inode_rmdir;
+	struct hlist_head inode_mknod;
+	struct hlist_head inode_rename;
+	struct hlist_head inode_readlink;
+	struct hlist_head inode_follow_link;
+	struct hlist_head inode_permission;
+	struct hlist_head inode_setattr;
+	struct hlist_head inode_getattr;
+	struct hlist_head inode_setxattr;
+	struct hlist_head inode_post_setxattr;
+	struct hlist_head inode_getxattr;
+	struct hlist_head inode_listxattr;
+	struct hlist_head inode_removexattr;
+	struct hlist_head inode_set_acl;
+	struct hlist_head inode_get_acl;
+	struct hlist_head inode_remove_acl;
+	struct hlist_head inode_need_killpriv;
+	struct hlist_head inode_killpriv;
+	struct hlist_head inode_getsecurity;
+	struct hlist_head inode_setsecurity;
+	struct hlist_head inode_listsecurity;
+	struct hlist_head inode_getsecid;
+	struct hlist_head inode_copy_up;
+	struct hlist_head inode_copy_up_xattr;
+	struct hlist_head kernfs_init_security;
+	struct hlist_head file_permission;
+	struct hlist_head file_alloc_security;
+	struct hlist_head file_free_security;
+	struct hlist_head file_ioctl;
+	struct hlist_head file_ioctl_compat;
+	struct hlist_head mmap_addr;
+	struct hlist_head mmap_file;
+	struct hlist_head file_mprotect;
+	struct hlist_head file_lock;
+	struct hlist_head file_fcntl;
+	struct hlist_head file_set_fowner;
+	struct hlist_head file_send_sigiotask;
+	struct hlist_head file_receive;
+	struct hlist_head file_open;
+	struct hlist_head file_truncate;
+	struct hlist_head task_alloc;
+	struct hlist_head task_free;
+	struct hlist_head cred_alloc_blank;
+	struct hlist_head cred_free;
+	struct hlist_head cred_prepare;
+	struct hlist_head cred_transfer;
+	struct hlist_head cred_getsecid;
+	struct hlist_head kernel_act_as;
+	struct hlist_head kernel_create_files_as;
+	struct hlist_head kernel_module_request;
+	struct hlist_head kernel_load_data;
+	struct hlist_head kernel_post_load_data;
+	struct hlist_head kernel_read_file;
+	struct hlist_head kernel_post_read_file;
+	struct hlist_head task_fix_setuid;
+	struct hlist_head task_fix_setgid;
+	struct hlist_head task_fix_setgroups;
+	struct hlist_head task_setpgid;
+	struct hlist_head task_getpgid;
+	struct hlist_head task_getsid;
+	struct hlist_head current_getsecid_subj;
+	struct hlist_head task_getsecid_obj;
+	struct hlist_head task_setnice;
+	struct hlist_head task_setioprio;
+	struct hlist_head task_getioprio;
+	struct hlist_head task_prlimit;
+	struct hlist_head task_setrlimit;
+	struct hlist_head task_setscheduler;
+	struct hlist_head task_getscheduler;
+	struct hlist_head task_movememory;
+	struct hlist_head task_kill;
+	struct hlist_head task_prctl;
+	struct hlist_head task_to_inode;
+	struct hlist_head userns_create;
+	struct hlist_head ipc_permission;
+	struct hlist_head ipc_getsecid;
+	struct hlist_head msg_msg_alloc_security;
+	struct hlist_head msg_msg_free_security;
+	struct hlist_head msg_queue_alloc_security;
+	struct hlist_head msg_queue_free_security;
+	struct hlist_head msg_queue_associate;
+	struct hlist_head msg_queue_msgctl;
+	struct hlist_head msg_queue_msgsnd;
+	struct hlist_head msg_queue_msgrcv;
+	struct hlist_head shm_alloc_security;
+	struct hlist_head shm_free_security;
+	struct hlist_head shm_associate;
+	struct hlist_head shm_shmctl;
+	struct hlist_head shm_shmat;
+	struct hlist_head sem_alloc_security;
+	struct hlist_head sem_free_security;
+	struct hlist_head sem_associate;
+	struct hlist_head sem_semctl;
+	struct hlist_head sem_semop;
+	struct hlist_head netlink_send;
+	struct hlist_head d_instantiate;
+	struct hlist_head getprocattr;
+	struct hlist_head setprocattr;
+	struct hlist_head ismaclabel;
+	struct hlist_head secid_to_secctx;
+	struct hlist_head secctx_to_secid;
+	struct hlist_head release_secctx;
+	struct hlist_head inode_invalidate_secctx;
+	struct hlist_head inode_notifysecctx;
+	struct hlist_head inode_setsecctx;
+	struct hlist_head inode_getsecctx;
+	struct hlist_head unix_stream_connect;
+	struct hlist_head unix_may_send;
+	struct hlist_head socket_create;
+	struct hlist_head socket_post_create;
+	struct hlist_head socket_socketpair;
+	struct hlist_head socket_bind;
+	struct hlist_head socket_connect;
+	struct hlist_head socket_listen;
+	struct hlist_head socket_accept;
+	struct hlist_head socket_sendmsg;
+	struct hlist_head socket_recvmsg;
+	struct hlist_head socket_getsockname;
+	struct hlist_head socket_getpeername;
+	struct hlist_head socket_getsockopt;
+	struct hlist_head socket_setsockopt;
+	struct hlist_head socket_shutdown;
+	struct hlist_head socket_sock_rcv_skb;
+	struct hlist_head socket_getpeersec_stream;
+	struct hlist_head socket_getpeersec_dgram;
+	struct hlist_head sk_alloc_security;
+	struct hlist_head sk_free_security;
+	struct hlist_head sk_clone_security;
+	struct hlist_head sk_getsecid;
+	struct hlist_head sock_graft;
+	struct hlist_head inet_conn_request;
+	struct hlist_head inet_csk_clone;
+	struct hlist_head inet_conn_established;
+	struct hlist_head secmark_relabel_packet;
+	struct hlist_head secmark_refcount_inc;
+	struct hlist_head secmark_refcount_dec;
+	struct hlist_head req_classify_flow;
+	struct hlist_head tun_dev_alloc_security;
+	struct hlist_head tun_dev_free_security;
+	struct hlist_head tun_dev_create;
+	struct hlist_head tun_dev_attach_queue;
+	struct hlist_head tun_dev_attach;
+	struct hlist_head tun_dev_open;
+	struct hlist_head sctp_assoc_request;
+	struct hlist_head sctp_bind_connect;
+	struct hlist_head sctp_sk_clone;
+	struct hlist_head sctp_assoc_established;
+	struct hlist_head mptcp_add_subflow;
+	struct hlist_head key_alloc;
+	struct hlist_head key_free;
+	struct hlist_head key_permission;
+	struct hlist_head key_getsecurity;
+	struct hlist_head audit_rule_init;
+	struct hlist_head audit_rule_known;
+	struct hlist_head audit_rule_match;
+	struct hlist_head audit_rule_free;
+	struct hlist_head bpf;
+	struct hlist_head bpf_map;
+	struct hlist_head bpf_prog;
+	struct hlist_head bpf_map_alloc_security;
+	struct hlist_head bpf_map_free_security;
+	struct hlist_head bpf_prog_alloc_security;
+	struct hlist_head bpf_prog_free_security;
+	struct hlist_head locked_down;
+	struct hlist_head perf_event_open;
+	struct hlist_head perf_event_alloc;
+	struct hlist_head perf_event_free;
+	struct hlist_head perf_event_read;
+	struct hlist_head perf_event_write;
+	struct hlist_head uring_override_creds;
+	struct hlist_head uring_sqpoll;
+	struct hlist_head uring_cmd;
+};
+
+enum lsm_event {
+	LSM_POLICY_CHANGE = 0,
+};
+
+struct msg_msgseg;
+
+struct msg_msg {
+	struct list_head m_list;
+	long m_type;
+	size_t m_ts;
+	struct msg_msgseg *next;
+	void *security;
+};
+
+struct security_class_mapping {
+	const char *name;
+	const char *perms[33];
+};
+
+struct ethtool_drvinfo {
+	__u32 cmd;
+	char driver[32];
+	char version[32];
+	char fw_version[32];
+	char bus_info[32];
+	char erom_version[32];
+	char reserved2[12];
+	__u32 n_priv_flags;
+	__u32 n_stats;
+	__u32 testinfo_len;
+	__u32 eedump_len;
+	__u32 regdump_len;
+};
+
+struct ethtool_regs {
+	__u32 cmd;
+	__u32 version;
+	__u32 len;
+	__u8 data[0];
+};
+
+struct ethtool_wolinfo {
+	__u32 cmd;
+	__u32 supported;
+	__u32 wolopts;
+	__u8 sopass[6];
+};
+
+enum ethtool_link_ext_substate_autoneg {
+	ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_PARTNER_DETECTED = 1,
+	ETHTOOL_LINK_EXT_SUBSTATE_AN_ACK_NOT_RECEIVED = 2,
+	ETHTOOL_LINK_EXT_SUBSTATE_AN_NEXT_PAGE_EXCHANGE_FAILED = 3,
+	ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_PARTNER_DETECTED_FORCE_MODE = 4,
+	ETHTOOL_LINK_EXT_SUBSTATE_AN_FEC_MISMATCH_DURING_OVERRIDE = 5,
+	ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_HCD = 6,
+};
+
+enum ethtool_link_ext_substate_link_training {
+	ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_FRAME_LOCK_NOT_ACQUIRED = 1,
+	ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_LINK_INHIBIT_TIMEOUT = 2,
+	ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_LINK_PARTNER_DID_NOT_SET_RECEIVER_READY = 3,
+	ETHTOOL_LINK_EXT_SUBSTATE_LT_REMOTE_FAULT = 4,
+};
+
+enum ethtool_link_ext_substate_link_logical_mismatch {
+	ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_ACQUIRE_BLOCK_LOCK = 1,
+	ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_ACQUIRE_AM_LOCK = 2,
+	ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_GET_ALIGN_STATUS = 3,
+	ETHTOOL_LINK_EXT_SUBSTATE_LLM_FC_FEC_IS_NOT_LOCKED = 4,
+	ETHTOOL_LINK_EXT_SUBSTATE_LLM_RS_FEC_IS_NOT_LOCKED = 5,
+};
+
+enum ethtool_link_ext_substate_bad_signal_integrity {
+	ETHTOOL_LINK_EXT_SUBSTATE_BSI_LARGE_NUMBER_OF_PHYSICAL_ERRORS = 1,
+	ETHTOOL_LINK_EXT_SUBSTATE_BSI_UNSUPPORTED_RATE = 2,
+	ETHTOOL_LINK_EXT_SUBSTATE_BSI_SERDES_REFERENCE_CLOCK_LOST = 3,
+	ETHTOOL_LINK_EXT_SUBSTATE_BSI_SERDES_ALOS = 4,
+};
+
+enum ethtool_link_ext_substate_cable_issue {
+	ETHTOOL_LINK_EXT_SUBSTATE_CI_UNSUPPORTED_CABLE = 1,
+	ETHTOOL_LINK_EXT_SUBSTATE_CI_CABLE_TEST_FAILURE = 2,
+};
+
+enum ethtool_link_ext_substate_module {
+	ETHTOOL_LINK_EXT_SUBSTATE_MODULE_CMIS_NOT_READY = 1,
+};
+
+enum ethtool_link_ext_state {
+	ETHTOOL_LINK_EXT_STATE_AUTONEG = 0,
+	ETHTOOL_LINK_EXT_STATE_LINK_TRAINING_FAILURE = 1,
+	ETHTOOL_LINK_EXT_STATE_LINK_LOGICAL_MISMATCH = 2,
+	ETHTOOL_LINK_EXT_STATE_BAD_SIGNAL_INTEGRITY = 3,
+	ETHTOOL_LINK_EXT_STATE_NO_CABLE = 4,
+	ETHTOOL_LINK_EXT_STATE_CABLE_ISSUE = 5,
+	ETHTOOL_LINK_EXT_STATE_EEPROM_ISSUE = 6,
+	ETHTOOL_LINK_EXT_STATE_CALIBRATION_FAILURE = 7,
+	ETHTOOL_LINK_EXT_STATE_POWER_BUDGET_EXCEEDED = 8,
+	ETHTOOL_LINK_EXT_STATE_OVERHEAT = 9,
+	ETHTOOL_LINK_EXT_STATE_MODULE = 10,
+};
+
+struct ethtool_link_ext_state_info {
+	enum ethtool_link_ext_state link_ext_state;
+	union {
+		enum ethtool_link_ext_substate_autoneg autoneg;
+		enum ethtool_link_ext_substate_link_training link_training;
+		enum ethtool_link_ext_substate_link_logical_mismatch link_logical_mismatch;
+		enum ethtool_link_ext_substate_bad_signal_integrity bad_signal_integrity;
+		enum ethtool_link_ext_substate_cable_issue cable_issue;
+		enum ethtool_link_ext_substate_module module;
+		u32 __link_ext_substate;
+	};
+};
+
+struct ethtool_link_ext_stats {
+	u64 link_down_events;
+};
+
+struct ethtool_eeprom {
+	__u32 cmd;
+	__u32 magic;
+	__u32 offset;
+	__u32 len;
+	__u8 data[0];
+};
+
+struct ethtool_coalesce {
+	__u32 cmd;
+	__u32 rx_coalesce_usecs;
+	__u32 rx_max_coalesced_frames;
+	__u32 rx_coalesce_usecs_irq;
+	__u32 rx_max_coalesced_frames_irq;
+	__u32 tx_coalesce_usecs;
+	__u32 tx_max_coalesced_frames;
+	__u32 tx_coalesce_usecs_irq;
+	__u32 tx_max_coalesced_frames_irq;
+	__u32 stats_block_coalesce_usecs;
+	__u32 use_adaptive_rx_coalesce;
+	__u32 use_adaptive_tx_coalesce;
+	__u32 pkt_rate_low;
+	__u32 rx_coalesce_usecs_low;
+	__u32 rx_max_coalesced_frames_low;
+	__u32 tx_coalesce_usecs_low;
+	__u32 tx_max_coalesced_frames_low;
+	__u32 pkt_rate_high;
+	__u32 rx_coalesce_usecs_high;
+	__u32 rx_max_coalesced_frames_high;
+	__u32 tx_coalesce_usecs_high;
+	__u32 tx_max_coalesced_frames_high;
+	__u32 rate_sample_interval;
+};
+
+struct kernel_ethtool_coalesce {
+	u8 use_cqe_mode_tx;
+	u8 use_cqe_mode_rx;
+	u32 tx_aggr_max_bytes;
+	u32 tx_aggr_max_frames;
+	u32 tx_aggr_time_usecs;
+};
+
+struct ethtool_ringparam {
+	__u32 cmd;
+	__u32 rx_max_pending;
+	__u32 rx_mini_max_pending;
+	__u32 rx_jumbo_max_pending;
+	__u32 tx_max_pending;
+	__u32 rx_pending;
+	__u32 rx_mini_pending;
+	__u32 rx_jumbo_pending;
+	__u32 tx_pending;
+};
+
+struct kernel_ethtool_ringparam {
+	u32 rx_buf_len;
+	u8 tcp_data_split;
+	u8 tx_push;
+	u8 rx_push;
+	u32 cqe_size;
+	u32 tx_push_buf_len;
+	u32 tx_push_buf_max_len;
+};
+
+enum ethtool_mac_stats_src {
+	ETHTOOL_MAC_STATS_SRC_AGGREGATE = 0,
+	ETHTOOL_MAC_STATS_SRC_EMAC = 1,
+	ETHTOOL_MAC_STATS_SRC_PMAC = 2,
+};
+
+struct ethtool_pause_stats {
+	enum ethtool_mac_stats_src src;
+	union {
+		struct {
+			u64 tx_pause_frames;
+			u64 rx_pause_frames;
+		};
+		struct {
+			u64 tx_pause_frames;
+			u64 rx_pause_frames;
+		} stats;
+	};
+};
+
+struct ethtool_pauseparam {
+	__u32 cmd;
+	__u32 autoneg;
+	__u32 rx_pause;
+	__u32 tx_pause;
+};
+
+struct ethtool_test {
+	__u32 cmd;
+	__u32 flags;
+	__u32 reserved;
+	__u32 len;
+	__u64 data[0];
+};
+
+struct ethtool_stats {
+	__u32 cmd;
+	__u32 n_stats;
+	__u64 data[0];
+};
+
+struct ethtool_tcpip4_spec {
+	__be32 ip4src;
+	__be32 ip4dst;
+	__be16 psrc;
+	__be16 pdst;
+	__u8 tos;
+};
+
+struct ethtool_ah_espip4_spec {
+	__be32 ip4src;
+	__be32 ip4dst;
+	__be32 spi;
+	__u8 tos;
+};
+
+struct ethtool_usrip4_spec {
+	__be32 ip4src;
+	__be32 ip4dst;
+	__be32 l4_4_bytes;
+	__u8 tos;
+	__u8 ip_ver;
+	__u8 proto;
+};
+
+struct ethtool_tcpip6_spec {
+	__be32 ip6src[4];
+	__be32 ip6dst[4];
+	__be16 psrc;
+	__be16 pdst;
+	__u8 tclass;
+};
+
+struct ethtool_ah_espip6_spec {
+	__be32 ip6src[4];
+	__be32 ip6dst[4];
+	__be32 spi;
+	__u8 tclass;
+};
+
+struct ethtool_usrip6_spec {
+	__be32 ip6src[4];
+	__be32 ip6dst[4];
+	__be32 l4_4_bytes;
+	__u8 tclass;
+	__u8 l4_proto;
+};
+
+struct ethhdr {
+	unsigned char h_dest[6];
+	unsigned char h_source[6];
+	__be16 h_proto;
+};
+
+union ethtool_flow_union {
+	struct ethtool_tcpip4_spec tcp_ip4_spec;
+	struct ethtool_tcpip4_spec udp_ip4_spec;
+	struct ethtool_tcpip4_spec sctp_ip4_spec;
+	struct ethtool_ah_espip4_spec ah_ip4_spec;
+	struct ethtool_ah_espip4_spec esp_ip4_spec;
+	struct ethtool_usrip4_spec usr_ip4_spec;
+	struct ethtool_tcpip6_spec tcp_ip6_spec;
+	struct ethtool_tcpip6_spec udp_ip6_spec;
+	struct ethtool_tcpip6_spec sctp_ip6_spec;
+	struct ethtool_ah_espip6_spec ah_ip6_spec;
+	struct ethtool_ah_espip6_spec esp_ip6_spec;
+	struct ethtool_usrip6_spec usr_ip6_spec;
+	struct ethhdr ether_spec;
+	__u8 hdata[52];
+};
+
+struct ethtool_flow_ext {
+	__u8 padding[2];
+	unsigned char h_dest[6];
+	__be16 vlan_etype;
+	__be16 vlan_tci;
+	__be32 data[2];
+};
+
+struct ethtool_rx_flow_spec {
+	__u32 flow_type;
+	union ethtool_flow_union h_u;
+	struct ethtool_flow_ext h_ext;
+	union ethtool_flow_union m_u;
+	struct ethtool_flow_ext m_ext;
+	__u64 ring_cookie;
+	__u32 location;
+};
+
+struct ethtool_rxnfc {
+	__u32 cmd;
+	__u32 flow_type;
+	__u64 data;
+	struct ethtool_rx_flow_spec fs;
+	union {
+		__u32 rule_cnt;
+		__u32 rss_context;
+	};
+	__u32 rule_locs[0];
+};
+
+struct ethtool_flash {
+	__u32 cmd;
+	__u32 region;
+	char data[128];
+};
+
+struct ethtool_channels {
+	__u32 cmd;
+	__u32 max_rx;
+	__u32 max_tx;
+	__u32 max_other;
+	__u32 max_combined;
+	__u32 rx_count;
+	__u32 tx_count;
+	__u32 other_count;
+	__u32 combined_count;
+};
+
+struct ethtool_dump {
+	__u32 cmd;
+	__u32 version;
+	__u32 flag;
+	__u32 len;
+	__u8 data[0];
+};
+
+struct ethtool_ts_info {
+	__u32 cmd;
+	__u32 so_timestamping;
+	__s32 phc_index;
+	__u32 tx_types;
+	__u32 tx_reserved[3];
+	__u32 rx_filters;
+	__u32 rx_reserved[3];
+};
+
+struct ethtool_modinfo {
+	__u32 cmd;
+	__u32 type;
+	__u32 eeprom_len;
+	__u32 reserved[8];
+};
+
+struct ethtool_eee {
+	__u32 cmd;
+	__u32 supported;
+	__u32 advertised;
+	__u32 lp_advertised;
+	__u32 eee_active;
+	__u32 eee_enabled;
+	__u32 tx_lpi_enabled;
+	__u32 tx_lpi_timer;
+	__u32 reserved[2];
+};
+
+struct ethtool_tunable {
+	__u32 cmd;
+	__u32 id;
+	__u32 type_id;
+	__u32 len;
+	void *data[0];
+};
+
+struct ethtool_link_settings {
+	__u32 cmd;
+	__u32 speed;
+	__u8 duplex;
+	__u8 port;
+	__u8 phy_address;
+	__u8 autoneg;
+	__u8 mdio_support;
+	__u8 eth_tp_mdix;
+	__u8 eth_tp_mdix_ctrl;
+	__s8 link_mode_masks_nwords;
+	__u8 transceiver;
+	__u8 master_slave_cfg;
+	__u8 master_slave_state;
+	__u8 rate_matching;
+	__u32 reserved[7];
+	__u32 link_mode_masks[0];
+};
+
+struct ethtool_link_ksettings {
+	struct ethtool_link_settings base;
+	struct {
+		unsigned long supported[2];
+		unsigned long advertising[2];
+		unsigned long lp_advertising[2];
+	} link_modes;
+	u32 lanes;
+};
+
+struct ethtool_fec_stat {
+	u64 total;
+	u64 lanes[8];
+};
+
+struct ethtool_fec_stats {
+	struct ethtool_fec_stat corrected_blocks;
+	struct ethtool_fec_stat uncorrectable_blocks;
+	struct ethtool_fec_stat corrected_bits;
+};
+
+struct ethtool_fecparam {
+	__u32 cmd;
+	__u32 active_fec;
+	__u32 fec;
+	__u32 reserved;
+};
+
+struct ethtool_module_eeprom {
+	u32 offset;
+	u32 length;
+	u8 page;
+	u8 bank;
+	u8 i2c_address;
+	u8 *data;
+};
+
+struct ethtool_eth_phy_stats {
+	enum ethtool_mac_stats_src src;
+	union {
+		struct {
+			u64 SymbolErrorDuringCarrier;
+		};
+		struct {
+			u64 SymbolErrorDuringCarrier;
+		} stats;
+	};
+};
+
+struct ethtool_eth_mac_stats {
+	enum ethtool_mac_stats_src src;
+	union {
+		struct {
+			u64 FramesTransmittedOK;
+			u64 SingleCollisionFrames;
+			u64 MultipleCollisionFrames;
+			u64 FramesReceivedOK;
+			u64 FrameCheckSequenceErrors;
+			u64 AlignmentErrors;
+			u64 OctetsTransmittedOK;
+			u64 FramesWithDeferredXmissions;
+			u64 LateCollisions;
+			u64 FramesAbortedDueToXSColls;
+			u64 FramesLostDueToIntMACXmitError;
+			u64 CarrierSenseErrors;
+			u64 OctetsReceivedOK;
+			u64 FramesLostDueToIntMACRcvError;
+			u64 MulticastFramesXmittedOK;
+			u64 BroadcastFramesXmittedOK;
+			u64 FramesWithExcessiveDeferral;
+			u64 MulticastFramesReceivedOK;
+			u64 BroadcastFramesReceivedOK;
+			u64 InRangeLengthErrors;
+			u64 OutOfRangeLengthField;
+			u64 FrameTooLongErrors;
+		};
+		struct {
+			u64 FramesTransmittedOK;
+			u64 SingleCollisionFrames;
+			u64 MultipleCollisionFrames;
+			u64 FramesReceivedOK;
+			u64 FrameCheckSequenceErrors;
+			u64 AlignmentErrors;
+			u64 OctetsTransmittedOK;
+			u64 FramesWithDeferredXmissions;
+			u64 LateCollisions;
+			u64 FramesAbortedDueToXSColls;
+			u64 FramesLostDueToIntMACXmitError;
+			u64 CarrierSenseErrors;
+			u64 OctetsReceivedOK;
+			u64 FramesLostDueToIntMACRcvError;
+			u64 MulticastFramesXmittedOK;
+			u64 BroadcastFramesXmittedOK;
+			u64 FramesWithExcessiveDeferral;
+			u64 MulticastFramesReceivedOK;
+			u64 BroadcastFramesReceivedOK;
+			u64 InRangeLengthErrors;
+			u64 OutOfRangeLengthField;
+			u64 FrameTooLongErrors;
+		} stats;
+	};
+};
+
+struct ethtool_eth_ctrl_stats {
+	enum ethtool_mac_stats_src src;
+	union {
+		struct {
+			u64 MACControlFramesTransmitted;
+			u64 MACControlFramesReceived;
+			u64 UnsupportedOpcodesReceived;
+		};
+		struct {
+			u64 MACControlFramesTransmitted;
+			u64 MACControlFramesReceived;
+			u64 UnsupportedOpcodesReceived;
+		} stats;
+	};
+};
+
+struct ethtool_rmon_stats {
+	enum ethtool_mac_stats_src src;
+	union {
+		struct {
+			u64 undersize_pkts;
+			u64 oversize_pkts;
+			u64 fragments;
+			u64 jabbers;
+			u64 hist[10];
+			u64 hist_tx[10];
+		};
+		struct {
+			u64 undersize_pkts;
+			u64 oversize_pkts;
+			u64 fragments;
+			u64 jabbers;
+			u64 hist[10];
+			u64 hist_tx[10];
+		} stats;
+	};
+};
+
+struct ethtool_rmon_hist_range {
+	u16 low;
+	u16 high;
+};
+
+enum ethtool_module_power_mode_policy {
+	ETHTOOL_MODULE_POWER_MODE_POLICY_HIGH = 1,
+	ETHTOOL_MODULE_POWER_MODE_POLICY_AUTO = 2,
+};
+
+enum ethtool_module_power_mode {
+	ETHTOOL_MODULE_POWER_MODE_LOW = 1,
+	ETHTOOL_MODULE_POWER_MODE_HIGH = 2,
+};
+
+struct ethtool_module_power_mode_params {
+	enum ethtool_module_power_mode_policy policy;
+	enum ethtool_module_power_mode mode;
+};
+
+enum ethtool_mm_verify_status {
+	ETHTOOL_MM_VERIFY_STATUS_UNKNOWN = 0,
+	ETHTOOL_MM_VERIFY_STATUS_INITIAL = 1,
+	ETHTOOL_MM_VERIFY_STATUS_VERIFYING = 2,
+	ETHTOOL_MM_VERIFY_STATUS_SUCCEEDED = 3,
+	ETHTOOL_MM_VERIFY_STATUS_FAILED = 4,
+	ETHTOOL_MM_VERIFY_STATUS_DISABLED = 5,
+};
+
+struct ethtool_mm_state {
+	u32 verify_time;
+	u32 max_verify_time;
+	enum ethtool_mm_verify_status verify_status;
+	bool tx_enabled;
+	bool tx_active;
+	bool pmac_enabled;
+	bool verify_enabled;
+	u32 tx_min_frag_size;
+	u32 rx_min_frag_size;
+};
+
+struct ethtool_mm_cfg {
+	u32 verify_time;
+	bool verify_enabled;
+	bool tx_enabled;
+	bool pmac_enabled;
+	u32 tx_min_frag_size;
+};
+
+struct ethtool_mm_stats {
+	u64 MACMergeFrameAssErrorCount;
+	u64 MACMergeFrameSmdErrorCount;
+	u64 MACMergeFrameAssOkCount;
+	u64 MACMergeFragCountRx;
+	u64 MACMergeFragCountTx;
+	u64 MACMergeHoldCount;
+};
+
+struct selinux_audit_data;
+
+typedef void (*btf_trace_selinux_audited)(void *, struct selinux_audit_data *, char *, char *, const char *);
+
+struct selinux_audit_data {
+	u32 ssid;
+	u32 tsid;
+	u16 tclass;
+	u32 requested;
+	u32 audited;
+	u32 denied;
+	int result;
+};
+
+struct avc_cache_stats {
+	unsigned int lookups;
+	unsigned int misses;
+	unsigned int allocations;
+	unsigned int reclaims;
+	unsigned int frees;
+};
+
+struct avc_cache {
+	struct hlist_head slots[512];
+	spinlock_t slots_lock[512];
+	atomic_t lru_hint;
+	atomic_t active_nodes;
+	u32 latest_notif;
+};
+
+struct selinux_avc {
+	unsigned int avc_cache_threshold;
+	struct avc_cache avc_cache;
+};
+
+struct avc_callback_node {
+	int (*callback)(u32);
+	u32 events;
+	struct avc_callback_node *next;
+};
+
+struct av_decision {
+	u32 allowed;
+	u32 auditallow;
+	u32 auditdeny;
+	u32 seqno;
+	u32 flags;
+};
+
+struct avc_xperms_node;
+
+struct avc_entry {
+	u32 ssid;
+	u32 tsid;
+	u16 tclass;
+	struct av_decision avd;
+	struct avc_xperms_node *xp_node;
+};
+
+struct avc_node {
+	struct avc_entry ae;
+	struct hlist_node list;
+	struct callback_head rhead;
+};
+
+struct extended_perms_data {
+	u32 p[8];
+};
+
+struct extended_perms {
+	u16 len;
+	struct extended_perms_data drivers;
+};
+
+struct avc_xperms_node {
+	struct extended_perms xp;
+	struct list_head xpd_head;
+};
+
+struct trace_event_raw_selinux_audited {
+	struct trace_entry ent;
+	u32 requested;
+	u32 denied;
+	u32 audited;
+	int result;
+	u32 __data_loc_scontext;
+	u32 __data_loc_tcontext;
+	u32 __data_loc_tclass;
+	char __data[0];
+};
+
+struct extended_perms_decision {
+	u8 used;
+	u8 driver;
+	struct extended_perms_data *allowed;
+	struct extended_perms_data *auditallow;
+	struct extended_perms_data *dontaudit;
+};
+
+struct avc_xperms_decision_node {
+	struct extended_perms_decision xpd;
+	struct list_head xpd_list;
+};
+
+struct lsm_network_audit;
+
+struct lsm_ioctlop_audit;
+
+struct lsm_ibpkey_audit;
+
+struct lsm_ibendport_audit;
+
+struct common_audit_data {
+	char type;
+	union {
+		struct path path;
+		struct dentry *dentry;
+		struct inode *inode;
+		struct lsm_network_audit *net;
+		int cap;
+		int ipc_id;
+		struct task_struct *tsk;
+		struct {
+			key_serial_t key;
+			char *key_desc;
+		} key_struct;
+		char *kmod_name;
+		struct lsm_ioctlop_audit *op;
+		struct file *file;
+		struct lsm_ibpkey_audit *ibpkey;
+		struct lsm_ibendport_audit *ibendport;
+		int reason;
+		const char *anonclass;
+	} u;
+	union {
+		struct selinux_audit_data *selinux_audit_data;
+	};
+};
+
+struct lsm_network_audit {
+	int netif;
+	const struct sock *sk;
+	u16 family;
+	__be16 dport;
+	__be16 sport;
+	union {
+		struct {
+			__be32 daddr;
+			__be32 saddr;
+		} v4;
+		struct {
+			struct in6_addr daddr;
+			struct in6_addr saddr;
+		} v6;
+	} fam;
+};
+
+struct lsm_ioctlop_audit {
+	struct path path;
+	u16 cmd;
+};
+
+struct lsm_ibpkey_audit {
+	u64 subnet_prefix;
+	u16 pkey;
+};
+
+struct lsm_ibendport_audit {
+	const char *dev_name;
+	u8 port;
+};
+
+struct trace_event_data_offsets_selinux_audited {
+	u32 scontext;
+	u32 tcontext;
+	u32 tclass;
+};
+
+struct selinux_policy;
+
+struct selinux_state {
+	bool enforcing;
+	bool initialized;
+	bool policycap[8];
+	bool android_netlink_route;
+	bool android_netlink_getneigh;
+	struct page *status_page;
+	struct mutex status_lock;
+	struct selinux_policy __attribute__((btf_type_tag("rcu"))) *policy;
+	struct mutex policy_mutex;
+};
+
+struct xfrm_address_filter;
+
+struct xfrm_state_walk {
+	struct list_head all;
+	u8 state;
+	u8 dying;
+	u8 proto;
+	u32 seq;
+	struct xfrm_address_filter *filter;
+};
+
+struct xfrm_replay_state {
+	__u32 oseq;
+	__u32 seq;
+	__u32 bitmap;
+};
+
+enum xfrm_replay_mode {
+	XFRM_REPLAY_MODE_LEGACY = 0,
+	XFRM_REPLAY_MODE_BMP = 1,
+	XFRM_REPLAY_MODE_ESN = 2,
+};
+
+struct xfrm_stats {
+	__u32 replay_window;
+	__u32 replay;
+	__u32 integrity_failed;
+};
+
+struct xfrm_mode {
+	u8 encap;
+	u8 family;
+	u8 flags;
+};
+
+struct xfrm_algo_auth;
+
+struct xfrm_algo;
+
+struct xfrm_algo_aead;
+
+struct xfrm_encap_tmpl;
+
+struct xfrm_replay_state_esn;
+
+struct xfrm_type;
+
+struct xfrm_type_offload;
+
+struct xfrm_state {
+	possible_net_t xs_net;
+	union {
+		struct hlist_node gclist;
+		struct hlist_node bydst;
+	};
+	struct hlist_node bysrc;
+	struct hlist_node byspi;
+	struct hlist_node byseq;
+	refcount_t refcnt;
+	spinlock_t lock;
+	struct xfrm_id id;
+	struct xfrm_selector sel;
+	struct xfrm_mark mark;
+	u32 if_id;
+	u32 tfcpad;
+	u32 genid;
+	struct xfrm_state_walk km;
+	struct {
+		u32 reqid;
+		u8 mode;
+		u8 replay_window;
+		u8 aalgo;
+		u8 ealgo;
+		u8 calgo;
+		u8 flags;
+		u16 family;
+		xfrm_address_t saddr;
+		int header_len;
+		int trailer_len;
+		u32 extra_flags;
+		struct xfrm_mark smark;
+	} props;
+	struct xfrm_lifetime_cfg lft;
+	struct xfrm_algo_auth *aalg;
+	struct xfrm_algo *ealg;
+	struct xfrm_algo *calg;
+	struct xfrm_algo_aead *aead;
+	const char *geniv;
+	__be16 new_mapping_sport;
+	u32 new_mapping;
+	u32 mapping_maxage;
+	struct xfrm_encap_tmpl *encap;
+	struct sock __attribute__((btf_type_tag("rcu"))) *encap_sk;
+	xfrm_address_t *coaddr;
+	struct xfrm_state *tunnel;
+	atomic_t tunnel_users;
+	struct xfrm_replay_state replay;
+	struct xfrm_replay_state_esn *replay_esn;
+	struct xfrm_replay_state preplay;
+	struct xfrm_replay_state_esn *preplay_esn;
+	enum xfrm_replay_mode repl_mode;
+	u32 xflags;
+	u32 replay_maxage;
+	u32 replay_maxdiff;
+	struct timer_list rtimer;
+	struct xfrm_stats stats;
+	struct xfrm_lifetime_cur curlft;
+	struct hrtimer mtimer;
+	struct xfrm_dev_offload xso;
+	long saved_tmo;
+	time64_t lastused;
+	struct page_frag xfrag;
+	const struct xfrm_type *type;
+	struct xfrm_mode inner_mode;
+	struct xfrm_mode inner_mode_iaf;
+	struct xfrm_mode outer_mode;
+	const struct xfrm_type_offload *type_offload;
+	struct xfrm_sec_ctx *security;
+	void *data;
+};
+
+struct xfrm_address_filter {
+	xfrm_address_t saddr;
+	xfrm_address_t daddr;
+	__u16 family;
+	__u8 splen;
+	__u8 dplen;
+};
+
+struct xfrm_algo_auth {
+	char alg_name[64];
+	unsigned int alg_key_len;
+	unsigned int alg_trunc_len;
+	char alg_key[0];
+};
+
+struct xfrm_algo {
+	char alg_name[64];
+	unsigned int alg_key_len;
+	char alg_key[0];
+};
+
+struct xfrm_algo_aead {
+	char alg_name[64];
+	unsigned int alg_key_len;
+	unsigned int alg_icv_len;
+	char alg_key[0];
+};
+
+struct xfrm_encap_tmpl {
+	__u16 encap_type;
+	__be16 encap_sport;
+	__be16 encap_dport;
+	xfrm_address_t encap_oa;
+};
+
+struct xfrm_replay_state_esn {
+	unsigned int bmp_len;
+	__u32 oseq;
+	__u32 seq;
+	__u32 oseq_hi;
+	__u32 seq_hi;
+	__u32 replay_window;
+	__u32 bmp[0];
+};
+
+struct xfrm_type {
+	struct module *owner;
+	u8 proto;
+	u8 flags;
+	int (*init_state)(struct xfrm_state *, struct netlink_ext_ack *);
+	void (*destructor)(struct xfrm_state *);
+	int (*input)(struct xfrm_state *, struct sk_buff *);
+	int (*output)(struct xfrm_state *, struct sk_buff *);
+	int (*reject)(struct xfrm_state *, struct sk_buff *, const struct flowi *);
+};
+
+struct xfrm_type_offload {
+	struct module *owner;
+	u8 proto;
+	void (*encap)(struct xfrm_state *, struct sk_buff *);
+	int (*input_tail)(struct xfrm_state *, struct sk_buff *);
+	int (*xmit)(struct xfrm_state *, struct sk_buff *, netdev_features_t);
+};
+
+struct xfrm_sec_ctx {
+	__u8 ctx_doi;
+	__u8 ctx_alg;
+	__u16 ctx_len;
+	__u32 ctx_sid;
+	char ctx_str[0];
+};
+
+struct rt6key {
+	struct in6_addr addr;
+	int plen;
+};
+
+struct rtable;
+
+struct fnhe_hash_bucket;
+
+struct fib_nh_common {
+	struct net_device *nhc_dev;
+	netdevice_tracker nhc_dev_tracker;
+	int nhc_oif;
+	unsigned char nhc_scope;
+	u8 nhc_family;
+	u8 nhc_gw_family;
+	unsigned char nhc_flags;
+	struct lwtunnel_state *nhc_lwtstate;
+	union {
+		__be32 ipv4;
+		struct in6_addr ipv6;
+	} nhc_gw;
+	int nhc_weight;
+	atomic_t nhc_upper_bound;
+	struct rtable __attribute__((btf_type_tag("rcu"))) * __attribute__((btf_type_tag("percpu"))) *nhc_pcpu_rth_output;
+	struct rtable __attribute__((btf_type_tag("rcu"))) *nhc_rth_input;
+	struct fnhe_hash_bucket __attribute__((btf_type_tag("rcu"))) *nhc_exceptions;
+};
+
+struct rt6_exception_bucket;
+
+struct fib6_nh {
+	struct fib_nh_common nh_common;
+	unsigned long last_probe;
+	struct rt6_info * __attribute__((btf_type_tag("percpu"))) *rt6i_pcpu;
+	struct rt6_exception_bucket __attribute__((btf_type_tag("rcu"))) *rt6i_exception_bucket;
+};
+
+struct fib6_node;
+
+struct dst_metrics;
+
+struct nexthop;
+
+struct fib6_info {
+	struct fib6_table *fib6_table;
+	struct fib6_info __attribute__((btf_type_tag("rcu"))) *fib6_next;
+	struct fib6_node __attribute__((btf_type_tag("rcu"))) *fib6_node;
+	union {
+		struct list_head fib6_siblings;
+		struct list_head nh_list;
+	};
+	unsigned int fib6_nsiblings;
+	refcount_t fib6_ref;
+	unsigned long expires;
+	struct dst_metrics *fib6_metrics;
+	struct rt6key fib6_dst;
+	u32 fib6_flags;
+	struct rt6key fib6_src;
+	struct rt6key fib6_prefsrc;
+	u32 fib6_metric;
+	u8 fib6_protocol;
+	u8 fib6_type;
+	u8 offload;
+	u8 trap;
+	u8 offload_failed;
+	u8 should_flush: 1;
+	u8 dst_nocount: 1;
+	u8 dst_nopolicy: 1;
+	u8 fib6_destroying: 1;
+	u8 unused: 4;
+	struct callback_head rcu;
+	struct nexthop *nh;
+	u64 android_kabi_reserved1;
+	struct fib6_nh fib6_nh[0];
+};
+
+struct fib6_node {
+	struct fib6_node __attribute__((btf_type_tag("rcu"))) *parent;
+	struct fib6_node __attribute__((btf_type_tag("rcu"))) *left;
+	struct fib6_node __attribute__((btf_type_tag("rcu"))) *right;
+	struct fib6_info __attribute__((btf_type_tag("rcu"))) *leaf;
+	__u16 fn_bit;
+	__u16 fn_flags;
+	int fn_sernum;
+	struct fib6_info __attribute__((btf_type_tag("rcu"))) *rr_ptr;
+	struct callback_head rcu;
+	u64 android_kabi_reserved1;
+};
+
+struct fib6_table {
+	struct hlist_node tb6_hlist;
+	u32 tb6_id;
+	spinlock_t tb6_lock;
+	struct fib6_node tb6_root;
+	struct inet_peer_base tb6_peers;
+	unsigned int flags;
+	unsigned int fib_seq;
+};
+
+struct dst_metrics {
+	u32 metrics[17];
+	refcount_t refcnt;
+};
+
+struct rtable {
+	struct dst_entry dst;
+	int rt_genid;
+	unsigned int rt_flags;
+	__u16 rt_type;
+	__u8 rt_is_input;
+	__u8 rt_uses_gateway;
+	int rt_iif;
+	u8 rt_gw_family;
+	union {
+		__be32 rt_gw4;
+		struct in6_addr rt_gw6;
+	};
+	u32 rt_mtu_locked: 1;
+	u32 rt_pmtu: 31;
+};
+
+struct fib_nh_exception;
+
+struct fnhe_hash_bucket {
+	struct fib_nh_exception __attribute__((btf_type_tag("rcu"))) *chain;
+};
+
+struct fib_nh_exception {
+	struct fib_nh_exception __attribute__((btf_type_tag("rcu"))) *fnhe_next;
+	int fnhe_genid;
+	__be32 fnhe_daddr;
+	u32 fnhe_pmtu;
+	bool fnhe_mtu_locked;
+	__be32 fnhe_gw;
+	unsigned long fnhe_expires;
+	struct rtable __attribute__((btf_type_tag("rcu"))) *fnhe_rth_input;
+	struct rtable __attribute__((btf_type_tag("rcu"))) *fnhe_rth_output;
+	unsigned long fnhe_stamp;
+	struct callback_head rcu;
+};
+
+struct rt6_info {
+	struct dst_entry dst;
+	struct fib6_info __attribute__((btf_type_tag("rcu"))) *from;
+	int sernum;
+	struct rt6key rt6i_dst;
+	struct rt6key rt6i_src;
+	struct in6_addr rt6i_gateway;
+	struct inet6_dev *rt6i_idev;
+	u32 rt6i_flags;
+	unsigned short rt6i_nfheader_len;
+	u64 android_kabi_reserved1;
+};
+
+struct rt6_exception_bucket {
+	struct hlist_head chain;
+	int depth;
+};
+
+struct rt6_statistics {
+	__u32 fib_nodes;
+	__u32 fib_route_nodes;
+	__u32 fib_rt_entries;
+	__u32 fib_rt_cache;
+	__u32 fib_discarded_routes;
+	atomic_t fib_rt_alloc;
+};
+
+struct hashtab_node;
+
+struct hashtab {
+	struct hashtab_node **htable;
+	u32 size;
+	u32 nel;
+};
+
+struct symtab {
+	struct hashtab table;
+	u32 nprim;
+};
+
+struct avtab_node;
+
+struct avtab {
+	struct avtab_node **htable;
+	u32 nel;
+	u32 nslot;
+	u32 mask;
+};
+
+struct ebitmap_node;
+
+struct ebitmap {
+	struct ebitmap_node *node;
+	u32 highbit;
+};
+
+struct class_datum;
+
+struct role_datum;
+
+struct user_datum;
+
+struct type_datum;
+
+struct cond_bool_datum;
+
+struct cond_node;
+
+struct role_allow;
+
+struct ocontext;
+
+struct genfs;
+
+struct policydb {
+	int mls_enabled;
+	int android_netlink_route;
+	int android_netlink_getneigh;
+	struct symtab symtab[8];
+	char **sym_val_to_name[8];
+	struct class_datum **class_val_to_struct;
+	struct role_datum **role_val_to_struct;
+	struct user_datum **user_val_to_struct;
+	struct type_datum **type_val_to_struct;
+	struct avtab te_avtab;
+	struct hashtab role_tr;
+	struct ebitmap filename_trans_ttypes;
+	struct hashtab filename_trans;
+	u32 compat_filename_trans_count;
+	struct cond_bool_datum **bool_val_to_struct;
+	struct avtab te_cond_avtab;
+	struct cond_node *cond_list;
+	u32 cond_list_len;
+	struct role_allow *role_allow;
+	struct ocontext *ocontexts[9];
+	struct genfs *genfs;
+	struct hashtab range_tr;
+	struct ebitmap *type_attr_map_array;
+	struct ebitmap policycaps;
+	struct ebitmap permissive_map;
+	size_t len;
+	unsigned int policyvers;
+	unsigned int reject_unknown: 1;
+	unsigned int allow_unknown: 1;
+	u16 process_class;
+	u32 process_trans_perms;
+};
+
+struct selinux_mapping;
+
+struct selinux_map {
+	struct selinux_mapping *mapping;
+	u16 size;
+};
+
+struct sidtab;
+
+struct selinux_policy {
+	struct sidtab *sidtab;
+	struct policydb policydb;
+	struct selinux_map map;
+	u32 latest_granting;
+};
+
+struct in_addr {
+	__be32 s_addr;
+};
+
+struct sockaddr_in {
+	__kernel_sa_family_t sin_family;
+	__be16 sin_port;
+	struct in_addr sin_addr;
+	unsigned char __pad[8];
+};
+
+struct sockaddr_in6 {
+	unsigned short sin6_family;
+	__be16 sin6_port;
+	__be32 sin6_flowinfo;
+	struct in6_addr sin6_addr;
+	__u32 sin6_scope_id;
+};
+
+union sctp_addr {
+	struct sockaddr_in v4;
+	struct sockaddr_in6 v6;
+	struct sockaddr sa;
+};
+
+struct sctp_tsnmap {
+	unsigned long *tsn_map;
+	__u32 base_tsn;
+	__u32 cumulative_tsn_ack_point;
+	__u32 max_tsn_seen;
+	__u16 len;
+	__u16 pending_data;
+	__u16 num_dup_tsns;
+	__be32 dup_tsns[16];
+};
+
+struct sctp_inithdr_host {
+	__u32 init_tag;
+	__u32 a_rwnd;
+	__u16 num_outbound_streams;
+	__u16 num_inbound_streams;
+	__u32 initial_tsn;
+};
+
+enum sctp_endpoint_type {
+	SCTP_EP_TYPE_SOCKET = 0,
+	SCTP_EP_TYPE_ASSOCIATION = 1,
+};
+
+struct sctp_chunk;
+
+struct sctp_inq {
+	struct list_head in_chunk_list;
+	struct sctp_chunk *in_progress;
+	struct work_struct immediate;
+};
+
+struct sctp_bind_addr {
+	__u16 port;
+	struct list_head address_list;
+};
+
+struct sctp_ep_common {
+	enum sctp_endpoint_type type;
+	refcount_t refcnt;
+	bool dead;
+	struct sock *sk;
+	struct net *net;
+	struct sctp_inq inqueue;
+	struct sctp_bind_addr bind_addr;
+};
+
+typedef __s32 sctp_assoc_t;
+
+struct sctp_cookie {
+	__u32 my_vtag;
+	__u32 peer_vtag;
+	__u32 my_ttag;
+	__u32 peer_ttag;
+	ktime_t expiration;
+	__u16 sinit_num_ostreams;
+	__u16 sinit_max_instreams;
+	__u32 initial_tsn;
+	union sctp_addr peer_addr;
+	__u16 my_port;
+	__u8 prsctp_capable;
+	__u8 padding;
+	__u32 adaptation_ind;
+	__u8 auth_random[36];
+	__u8 auth_hmacs[10];
+	__u8 auth_chunks[20];
+	__u32 raw_addr_list_len;
+};
+
+enum sctp_state {
+	SCTP_STATE_CLOSED = 0,
+	SCTP_STATE_COOKIE_WAIT = 1,
+	SCTP_STATE_COOKIE_ECHOED = 2,
+	SCTP_STATE_ESTABLISHED = 3,
+	SCTP_STATE_SHUTDOWN_PENDING = 4,
+	SCTP_STATE_SHUTDOWN_SENT = 5,
+	SCTP_STATE_SHUTDOWN_RECEIVED = 6,
+	SCTP_STATE_SHUTDOWN_ACK_SENT = 7,
+};
+
+struct sctp_stream_out_ext;
+
+struct sctp_stream_out {
+	union {
+		__u32 mid;
+		__u16 ssn;
+	};
+	__u32 mid_uo;
+	struct sctp_stream_out_ext *ext;
+	__u8 state;
+};
+
+struct sctp_stream_in {
+	union {
+		__u32 mid;
+		__u16 ssn;
+	};
+	__u32 mid_uo;
+	__u32 fsn;
+	__u32 fsn_uo;
+	char pd_mode;
+	char pd_mode_uo;
+};
+
+struct sctp_stream_interleave;
+
+struct sctp_stream {
+	struct {
+		struct __genradix tree;
+		struct sctp_stream_out type[0];
+	} out;
+	struct {
+		struct __genradix tree;
+		struct sctp_stream_in type[0];
+	} in;
+	__u16 outcnt;
+	__u16 incnt;
+	struct sctp_stream_out *out_curr;
+	union {
+		struct {
+			struct list_head prio_list;
+		};
+		struct {
+			struct list_head rr_list;
+			struct sctp_stream_out_ext *rr_next;
+		};
+		struct {
+			struct list_head fc_list;
+		};
+	};
+	struct sctp_stream_interleave *si;
+};
+
+struct sctp_sched_ops;
+
+struct sctp_outq {
+	struct sctp_association *asoc;
+	struct list_head out_chunk_list;
+	struct sctp_sched_ops *sched;
+	unsigned int out_qlen;
+	unsigned int error;
+	struct list_head control_chunk_list;
+	struct list_head sacked;
+	struct list_head retransmit;
+	struct list_head abandoned;
+	__u32 outstanding_bytes;
+	char fast_rtx;
+	char cork;
+};
+
+struct sctp_ulpq {
+	char pd_mode;
+	struct sctp_association *asoc;
+	struct sk_buff_head reasm;
+	struct sk_buff_head reasm_uo;
+	struct sk_buff_head lobby;
+};
+
+struct sctp_priv_assoc_stats {
+	struct __kernel_sockaddr_storage obs_rto_ipaddr;
+	__u64 max_obs_rto;
+	__u64 isacks;
+	__u64 osacks;
+	__u64 opackets;
+	__u64 ipackets;
+	__u64 rtxchunks;
+	__u64 outofseqtsns;
+	__u64 idupchunks;
+	__u64 gapcnt;
+	__u64 ouodchunks;
+	__u64 iuodchunks;
+	__u64 oodchunks;
+	__u64 iodchunks;
+	__u64 octrlchunks;
+	__u64 ictrlchunks;
+};
+
+struct sctp_endpoint;
+
+struct sctp_transport;
+
+struct sctp_random_param;
+
+struct sctp_chunks_param;
+
+struct sctp_hmac_algo_param;
+
+struct sctp_auth_bytes;
+
+struct sctp_shared_key;
+
+struct sctp_association {
+	struct sctp_ep_common base;
+	struct list_head asocs;
+	sctp_assoc_t assoc_id;
+	struct sctp_endpoint *ep;
+	struct sctp_cookie c;
+	struct {
+		struct list_head transport_addr_list;
+		__u32 rwnd;
+		__u16 transport_count;
+		__u16 port;
+		struct sctp_transport *primary_path;
+		union sctp_addr primary_addr;
+		struct sctp_transport *active_path;
+		struct sctp_transport *retran_path;
+		struct sctp_transport *last_sent_to;
+		struct sctp_transport *last_data_from;
+		struct sctp_tsnmap tsn_map;
+		__be16 addip_disabled_mask;
+		__u16 ecn_capable: 1;
+		__u16 ipv4_address: 1;
+		__u16 ipv6_address: 1;
+		__u16 asconf_capable: 1;
+		__u16 prsctp_capable: 1;
+		__u16 reconf_capable: 1;
+		__u16 intl_capable: 1;
+		__u16 auth_capable: 1;
+		__u16 sack_needed: 1;
+		__u16 sack_generation: 1;
+		__u16 zero_window_announced: 1;
+		__u32 sack_cnt;
+		__u32 adaptation_ind;
+		struct sctp_inithdr_host i;
+		void *cookie;
+		int cookie_len;
+		__u32 addip_serial;
+		struct sctp_random_param *peer_random;
+		struct sctp_chunks_param *peer_chunks;
+		struct sctp_hmac_algo_param *peer_hmacs;
+	} peer;
+	enum sctp_state state;
+	int overall_error_count;
+	ktime_t cookie_life;
+	unsigned long rto_initial;
+	unsigned long rto_max;
+	unsigned long rto_min;
+	int max_burst;
+	int max_retrans;
+	__u16 pf_retrans;
+	__u16 ps_retrans;
+	__u16 max_init_attempts;
+	__u16 init_retries;
+	unsigned long max_init_timeo;
+	unsigned long hbinterval;
+	unsigned long probe_interval;
+	__be16 encap_port;
+	__u16 pathmaxrxt;
+	__u32 flowlabel;
+	__u8 dscp;
+	__u8 pmtu_pending;
+	__u32 pathmtu;
+	__u32 param_flags;
+	__u32 sackfreq;
+	unsigned long sackdelay;
+	unsigned long timeouts[12];
+	struct timer_list timers[12];
+	struct sctp_transport *shutdown_last_sent_to;
+	struct sctp_transport *init_last_sent_to;
+	int shutdown_retries;
+	__u32 next_tsn;
+	__u32 ctsn_ack_point;
+	__u32 adv_peer_ack_point;
+	__u32 highest_sacked;
+	__u32 fast_recovery_exit;
+	__u8 fast_recovery;
+	__u16 unack_data;
+	__u32 rtx_data_chunks;
+	__u32 rwnd;
+	__u32 a_rwnd;
+	__u32 rwnd_over;
+	__u32 rwnd_press;
+	int sndbuf_used;
+	atomic_t rmem_alloc;
+	wait_queue_head_t wait;
+	__u32 frag_point;
+	__u32 user_frag;
+	int init_err_counter;
+	int init_cycle;
+	__u16 default_stream;
+	__u16 default_flags;
+	__u32 default_ppid;
+	__u32 default_context;
+	__u32 default_timetolive;
+	__u32 default_rcv_context;
+	struct sctp_stream stream;
+	struct sctp_outq outqueue;
+	struct sctp_ulpq ulpq;
+	__u32 last_ecne_tsn;
+	__u32 last_cwr_tsn;
+	int numduptsns;
+	struct sctp_chunk *addip_last_asconf;
+	struct list_head asconf_ack_list;
+	struct list_head addip_chunk_list;
+	__u32 addip_serial;
+	int src_out_of_asoc_ok;
+	union sctp_addr *asconf_addr_del_pending;
+	struct sctp_transport *new_transport;
+	struct list_head endpoint_shared_keys;
+	struct sctp_auth_bytes *asoc_shared_key;
+	struct sctp_shared_key *shkey;
+	__u16 default_hmac_id;
+	__u16 active_key_id;
+	__u8 need_ecne: 1;
+	__u8 temp: 1;
+	__u8 pf_expose: 2;
+	__u8 force_delay: 1;
+	__u8 strreset_enable;
+	__u8 strreset_outstanding;
+	__u32 strreset_outseq;
+	__u32 strreset_inseq;
+	__u32 strreset_result[2];
+	struct sctp_chunk *strreset_chunk;
+	struct sctp_priv_assoc_stats stats;
+	int sent_cnt_removable;
+	__u16 subscribe;
+	__u64 abandoned_unsent[3];
+	__u64 abandoned_sent[3];
+	u32 secid;
+	u32 peer_secid;
+	struct callback_head rcu;
+};
+
+struct sctp_paramhdr;
+
+struct sctp_cookie_preserve_param;
+
+struct sctp_hostname_param;
+
+struct sctp_cookie_param;
+
+struct sctp_supported_addrs_param;
+
+struct sctp_ipv4addr_param;
+
+struct sctp_ipv6addr_param;
+
+union sctp_addr_param;
+
+struct sctp_adaptation_ind_param;
+
+struct sctp_supported_ext_param;
+
+struct sctp_addip_param;
+
+union sctp_params {
+	void *v;
+	struct sctp_paramhdr *p;
+	struct sctp_cookie_preserve_param *life;
+	struct sctp_hostname_param *dns;
+	struct sctp_cookie_param *cookie;
+	struct sctp_supported_addrs_param *sat;
+	struct sctp_ipv4addr_param *v4;
+	struct sctp_ipv6addr_param *v6;
+	union sctp_addr_param *addr;
+	struct sctp_adaptation_ind_param *aind;
+	struct sctp_supported_ext_param *ext;
+	struct sctp_random_param *random;
+	struct sctp_chunks_param *chunks;
+	struct sctp_hmac_algo_param *hmac_algo;
+	struct sctp_addip_param *addip;
+};
+
+struct sctp_sndrcvinfo {
+	__u16 sinfo_stream;
+	__u16 sinfo_ssn;
+	__u16 sinfo_flags;
+	__u32 sinfo_ppid;
+	__u32 sinfo_context;
+	__u32 sinfo_timetolive;
+	__u32 sinfo_tsn;
+	__u32 sinfo_cumtsn;
+	sctp_assoc_t sinfo_assoc_id;
+};
+
+struct sctp_datahdr;
+
+struct sctp_inithdr;
+
+struct sctp_sackhdr;
+
+struct sctp_heartbeathdr;
+
+struct sctp_sender_hb_info;
+
+struct sctp_shutdownhdr;
+
+struct sctp_signed_cookie;
+
+struct sctp_ecnehdr;
+
+struct sctp_cwrhdr;
+
+struct sctp_errhdr;
+
+struct sctp_addiphdr;
+
+struct sctp_fwdtsn_hdr;
+
+struct sctp_authhdr;
+
+struct sctp_idatahdr;
+
+struct sctp_ifwdtsn_hdr;
+
+struct sctp_chunkhdr;
+
+struct sctphdr;
+
+struct sctp_datamsg;
+
+struct sctp_chunk {
+	struct list_head list;
+	refcount_t refcnt;
+	int sent_count;
+	union {
+		struct list_head transmitted_list;
+		struct list_head stream_list;
+	};
+	struct list_head frag_list;
+	struct sk_buff *skb;
+	union {
+		struct sk_buff *head_skb;
+		struct sctp_shared_key *shkey;
+	};
+	union sctp_params param_hdr;
+	union {
+		__u8 *v;
+		struct sctp_datahdr *data_hdr;
+		struct sctp_inithdr *init_hdr;
+		struct sctp_sackhdr *sack_hdr;
+		struct sctp_heartbeathdr *hb_hdr;
+		struct sctp_sender_hb_info *hbs_hdr;
+		struct sctp_shutdownhdr *shutdown_hdr;
+		struct sctp_signed_cookie *cookie_hdr;
+		struct sctp_ecnehdr *ecne_hdr;
+		struct sctp_cwrhdr *ecn_cwr_hdr;
+		struct sctp_errhdr *err_hdr;
+		struct sctp_addiphdr *addip_hdr;
+		struct sctp_fwdtsn_hdr *fwdtsn_hdr;
+		struct sctp_authhdr *auth_hdr;
+		struct sctp_idatahdr *idata_hdr;
+		struct sctp_ifwdtsn_hdr *ifwdtsn_hdr;
+	} subh;
+	__u8 *chunk_end;
+	struct sctp_chunkhdr *chunk_hdr;
+	struct sctphdr *sctp_hdr;
+	struct sctp_sndrcvinfo sinfo;
+	struct sctp_association *asoc;
+	struct sctp_ep_common *rcvr;
+	unsigned long sent_at;
+	union sctp_addr source;
+	union sctp_addr dest;
+	struct sctp_datamsg *msg;
+	struct sctp_transport *transport;
+	struct sk_buff *auth_chunk;
+	__u16 rtt_in_progress: 1;
+	__u16 has_tsn: 1;
+	__u16 has_ssn: 1;
+	__u16 singleton: 1;
+	__u16 end_of_packet: 1;
+	__u16 ecn_ce_done: 1;
+	__u16 pdiscard: 1;
+	__u16 tsn_gap_acked: 1;
+	__u16 data_accepted: 1;
+	__u16 auth: 1;
+	__u16 has_asconf: 1;
+	__u16 pmtu_probe: 1;
+	__u16 tsn_missing_report: 2;
+	__u16 fast_retransmit: 2;
+};
+
+struct sctp_shared_key {
+	struct list_head key_list;
+	struct sctp_auth_bytes *key;
+	refcount_t refcnt;
+	__u16 key_id;
+	__u8 deactivated;
+};
+
+struct sctp_auth_bytes {
+	refcount_t refcnt;
+	__u32 len;
+	__u8 data[0];
+};
+
+struct sctp_paramhdr {
+	__be16 type;
+	__be16 length;
+};
+
+struct sctp_cookie_preserve_param {
+	struct sctp_paramhdr param_hdr;
+	__be32 lifespan_increment;
+};
+
+struct sctp_hostname_param {
+	struct sctp_paramhdr param_hdr;
+	uint8_t hostname[0];
+};
+
+struct sctp_cookie_param {
+	struct sctp_paramhdr p;
+	__u8 body[0];
+};
+
+struct sctp_supported_addrs_param {
+	struct sctp_paramhdr param_hdr;
+	__be16 types[0];
+};
+
+struct sctp_ipv4addr_param {
+	struct sctp_paramhdr param_hdr;
+	struct in_addr addr;
+};
+
+struct sctp_ipv6addr_param {
+	struct sctp_paramhdr param_hdr;
+	struct in6_addr addr;
+};
+
+union sctp_addr_param {
+	struct sctp_paramhdr p;
+	struct sctp_ipv4addr_param v4;
+	struct sctp_ipv6addr_param v6;
+};
+
+struct sctp_adaptation_ind_param {
+	struct sctp_paramhdr param_hdr;
+	__be32 adaptation_ind;
+};
+
+struct sctp_supported_ext_param {
+	struct sctp_paramhdr param_hdr;
+	__u8 chunks[0];
+};
+
+struct sctp_random_param {
+	struct sctp_paramhdr param_hdr;
+	__u8 random_val[0];
+};
+
+struct sctp_chunks_param {
+	struct sctp_paramhdr param_hdr;
+	__u8 chunks[0];
+};
+
+struct sctp_hmac_algo_param {
+	struct sctp_paramhdr param_hdr;
+	__be16 hmac_ids[0];
+};
+
+struct sctp_addip_param {
+	struct sctp_paramhdr param_hdr;
+	__be32 crr_id;
+};
+
+struct sctp_datahdr {
+	__be32 tsn;
+	__be16 stream;
+	__be16 ssn;
+	__u32 ppid;
+};
+
+struct sctp_inithdr {
+	__be32 init_tag;
+	__be32 a_rwnd;
+	__be16 num_outbound_streams;
+	__be16 num_inbound_streams;
+	__be32 initial_tsn;
+};
+
+struct sctp_sackhdr {
+	__be32 cum_tsn_ack;
+	__be32 a_rwnd;
+	__be16 num_gap_ack_blocks;
+	__be16 num_dup_tsns;
+};
+
+struct sctp_heartbeathdr {
+	struct sctp_paramhdr info;
+};
+
+struct sctp_sender_hb_info {
+	struct sctp_paramhdr param_hdr;
+	union sctp_addr daddr;
+	unsigned long sent_at;
+	__u64 hb_nonce;
+	__u32 probe_size;
+};
+
+struct sctp_shutdownhdr {
+	__be32 cum_tsn_ack;
+};
+
+struct sctp_signed_cookie {
+	__u8 signature[32];
+	__u32 __pad;
+	struct sctp_cookie c;
+} __attribute__((packed));
+
+struct sctp_ecnehdr {
+	__be32 lowest_tsn;
+};
+
+struct sctp_cwrhdr {
+	__be32 lowest_tsn;
+};
+
+struct sctp_errhdr {
+	__be16 cause;
+	__be16 length;
+};
+
+struct sctp_addiphdr {
+	__be32 serial;
+};
+
+struct sctp_fwdtsn_hdr {
+	__be32 new_cum_tsn;
+};
+
+struct sctp_authhdr {
+	__be16 shkey_id;
+	__be16 hmac_id;
+};
+
+struct sctp_idatahdr {
+	__be32 tsn;
+	__be16 stream;
+	__be16 reserved;
+	__be32 mid;
+	union {
+		__u32 ppid;
+		__be32 fsn;
+	};
+	__u8 payload[0];
+};
+
+struct sctp_ifwdtsn_hdr {
+	__be32 new_cum_tsn;
+};
+
+struct sctp_chunkhdr {
+	__u8 type;
+	__u8 flags;
+	__be16 length;
+};
+
+struct sctphdr {
+	__be16 source;
+	__be16 dest;
+	__be32 vtag;
+	__le32 checksum;
+};
+
+struct sctp_datamsg {
+	struct list_head chunks;
+	refcount_t refcnt;
+	unsigned long expires_at;
+	int send_error;
+	u8 send_failed: 1;
+	u8 can_delay: 1;
+	u8 abandoned: 1;
+};
+
+struct sctp_packet {
+	__u16 source_port;
+	__u16 destination_port;
+	__u32 vtag;
+	struct list_head chunk_list;
+	size_t overhead;
+	size_t size;
+	size_t max_size;
+	struct sctp_transport *transport;
+	struct sctp_chunk *auth;
+	u8 has_cookie_echo: 1;
+	u8 has_sack: 1;
+	u8 has_auth: 1;
+	u8 has_data: 1;
+	u8 ipfragok: 1;
+};
+
+struct sctp_af;
+
+struct sctp_transport {
+	struct list_head transports;
+	struct rhlist_head node;
+	refcount_t refcnt;
+	__u32 rto_pending: 1;
+	__u32 hb_sent: 1;
+	__u32 pmtu_pending: 1;
+	__u32 dst_pending_confirm: 1;
+	__u32 sack_generation: 1;
+	u32 dst_cookie;
+	struct flowi fl;
+	union sctp_addr ipaddr;
+	struct sctp_af *af_specific;
+	struct sctp_association *asoc;
+	unsigned long rto;
+	__u32 rtt;
+	__u32 rttvar;
+	__u32 srtt;
+	__u32 cwnd;
+	__u32 ssthresh;
+	__u32 partial_bytes_acked;
+	__u32 flight_size;
+	__u32 burst_limited;
+	struct dst_entry *dst;
+	union sctp_addr saddr;
+	unsigned long hbinterval;
+	unsigned long probe_interval;
+	unsigned long sackdelay;
+	__u32 sackfreq;
+	atomic_t mtu_info;
+	ktime_t last_time_heard;
+	unsigned long last_time_sent;
+	unsigned long last_time_ecne_reduced;
+	__be16 encap_port;
+	__u16 pathmaxrxt;
+	__u32 flowlabel;
+	__u8 dscp;
+	__u16 pf_retrans;
+	__u16 ps_retrans;
+	__u32 pathmtu;
+	__u32 param_flags;
+	int init_sent_count;
+	int state;
+	unsigned short error_count;
+	struct timer_list T3_rtx_timer;
+	struct timer_list hb_timer;
+	struct timer_list proto_unreach_timer;
+	struct timer_list reconf_timer;
+	struct timer_list probe_timer;
+	struct list_head transmitted;
+	struct sctp_packet packet;
+	struct list_head send_ready;
+	struct {
+		__u32 next_tsn_at_change;
+		char changeover_active;
+		char cycling_changeover;
+		char cacc_saw_newack;
+	} cacc;
+	struct {
+		__u16 pmtu;
+		__u16 probe_size;
+		__u16 probe_high;
+		__u8 probe_count;
+		__u8 state;
+	} pl;
+	__u64 hb_nonce;
+	struct callback_head rcu;
+};
+
+enum sctp_scope {
+	SCTP_SCOPE_GLOBAL = 0,
+	SCTP_SCOPE_PRIVATE = 1,
+	SCTP_SCOPE_LINK = 2,
+	SCTP_SCOPE_LOOPBACK = 3,
+	SCTP_SCOPE_UNUSABLE = 4,
+};
+
+struct sctp_sock;
+
+struct sctp_af {
+	int (*sctp_xmit)(struct sk_buff *, struct sctp_transport *);
+	int (*setsockopt)(struct sock *, int, int, sockptr_t, unsigned int);
+	int (*getsockopt)(struct sock *, int, int, char __attribute__((btf_type_tag("user"))) *, int __attribute__((btf_type_tag("user"))) *);
+	void (*get_dst)(struct sctp_transport *, union sctp_addr *, struct flowi *, struct sock *);
+	void (*get_saddr)(struct sctp_sock *, struct sctp_transport *, struct flowi *);
+	void (*copy_addrlist)(struct list_head *, struct net_device *);
+	int (*cmp_addr)(const union sctp_addr *, const union sctp_addr *);
+	void (*addr_copy)(union sctp_addr *, union sctp_addr *);
+	void (*from_skb)(union sctp_addr *, struct sk_buff *, int);
+	void (*from_sk)(union sctp_addr *, struct sock *);
+	bool (*from_addr_param)(union sctp_addr *, union sctp_addr_param *, __be16, int);
+	int (*to_addr_param)(const union sctp_addr *, union sctp_addr_param *);
+	int (*addr_valid)(union sctp_addr *, struct sctp_sock *, const struct sk_buff *);
+	enum sctp_scope (*scope)(union sctp_addr *);
+	void (*inaddr_any)(union sctp_addr *, __be16);
+	int (*is_any)(const union sctp_addr *);
+	int (*available)(union sctp_addr *, struct sctp_sock *);
+	int (*skb_iif)(const struct sk_buff *);
+	int (*skb_sdif)(const struct sk_buff *);
+	int (*is_ce)(const struct sk_buff *);
+	void (*seq_dump_addr)(struct seq_file *, union sctp_addr *);
+	void (*ecn_capable)(struct sock *);
+	__u16 net_header_len;
+	int sockaddr_len;
+	int (*ip_options_len)(struct sock *);
+	sa_family_t sa_family;
+	struct list_head list;
+};
+
+struct ip_options;
+
+struct inet_cork {
+	unsigned int flags;
+	__be32 addr;
+	struct ip_options *opt;
+	unsigned int fragsize;
+	int length;
+	struct dst_entry *dst;
+	u8 tx_flags;
+	__u8 ttl;
+	__s16 tos;
+	char priority;
+	__u16 gso_size;
+	u64 transmit_time;
+	u32 mark;
+};
+
+struct inet_cork_full {
+	struct inet_cork base;
+	struct flowi fl;
+};
+
+struct ipv6_pinfo;
+
+struct ip_options_rcu;
+
+struct ip_mc_socklist;
+
+struct inet_sock {
+	struct sock sk;
+	struct ipv6_pinfo *pinet6;
+	unsigned long inet_flags;
+	__be32 inet_saddr;
+	__s16 uc_ttl;
+	__be16 inet_sport;
+	struct ip_options_rcu __attribute__((btf_type_tag("rcu"))) *inet_opt;
+	atomic_t inet_id;
+	__u8 tos;
+	__u8 min_ttl;
+	__u8 mc_ttl;
+	__u8 pmtudisc;
+	__u8 rcv_tos;
+	__u8 convert_csum;
+	int uc_index;
+	int mc_index;
+	__be32 mc_addr;
+	struct {
+		__u16 lo;
+		__u16 hi;
+	} local_port_range;
+	struct ip_mc_socklist __attribute__((btf_type_tag("rcu"))) *mc_list;
+	struct inet_cork_full cork;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+enum sctp_socket_type {
+	SCTP_SOCKET_UDP = 0,
+	SCTP_SOCKET_UDP_HIGH_BANDWIDTH = 1,
+	SCTP_SOCKET_TCP = 2,
+};
+
+struct sctp_rtoinfo {
+	sctp_assoc_t srto_assoc_id;
+	__u32 srto_initial;
+	__u32 srto_max;
+	__u32 srto_min;
+};
+
+struct sctp_paddrparams {
+	sctp_assoc_t spp_assoc_id;
+	struct __kernel_sockaddr_storage spp_address;
+	__u32 spp_hbinterval;
+	__u16 spp_pathmaxrxt;
+	__u32 spp_pathmtu;
+	__u32 spp_sackdelay;
+	__u32 spp_flags;
+	__u32 spp_ipv6_flowlabel;
+	__u8 spp_dscp;
+	int: 0;
+} __attribute__((packed));
+
+struct sctp_assocparams {
+	sctp_assoc_t sasoc_assoc_id;
+	__u16 sasoc_asocmaxrxt;
+	__u16 sasoc_number_peer_destinations;
+	__u32 sasoc_peer_rwnd;
+	__u32 sasoc_local_rwnd;
+	__u32 sasoc_cookie_life;
+};
+
+struct sctp_initmsg {
+	__u16 sinit_num_ostreams;
+	__u16 sinit_max_instreams;
+	__u16 sinit_max_attempts;
+	__u16 sinit_max_init_timeo;
+};
+
+struct sctp_pf;
+
+struct sctp_bind_bucket;
+
+struct sctp_sock {
+	struct inet_sock inet;
+	enum sctp_socket_type type;
+	struct sctp_pf *pf;
+	struct crypto_shash *hmac;
+	char *sctp_hmac_alg;
+	struct sctp_endpoint *ep;
+	struct sctp_bind_bucket *bind_hash;
+	__u16 default_stream;
+	__u32 default_ppid;
+	__u16 default_flags;
+	__u32 default_context;
+	__u32 default_timetolive;
+	__u32 default_rcv_context;
+	int max_burst;
+	__u32 hbinterval;
+	__u32 probe_interval;
+	__be16 udp_port;
+	__be16 encap_port;
+	__u16 pathmaxrxt;
+	__u32 flowlabel;
+	__u8 dscp;
+	__u16 pf_retrans;
+	__u16 ps_retrans;
+	__u32 pathmtu;
+	__u32 sackdelay;
+	__u32 sackfreq;
+	__u32 param_flags;
+	__u32 default_ss;
+	struct sctp_rtoinfo rtoinfo;
+	struct sctp_paddrparams paddrparam;
+	struct sctp_assocparams assocparams;
+	__u16 subscribe;
+	struct sctp_initmsg initmsg;
+	int user_frag;
+	__u32 autoclose;
+	__u32 adaptation_ind;
+	__u32 pd_point;
+	__u16 nodelay: 1;
+	__u16 pf_expose: 2;
+	__u16 reuse: 1;
+	__u16 disable_fragments: 1;
+	__u16 v4mapped: 1;
+	__u16 frag_interleave: 1;
+	__u16 recvrcvinfo: 1;
+	__u16 recvnxtinfo: 1;
+	__u16 data_ready_signalled: 1;
+	atomic_t pd_mode;
+	struct sk_buff_head pd_lobby;
+	struct list_head auto_asconf_list;
+	int do_auto_asconf;
+};
+
+struct in6_pktinfo {
+	struct in6_addr ipi6_addr;
+	int ipi6_ifindex;
+};
+
+struct ipv6_txoptions;
+
+struct inet6_cork {
+	struct ipv6_txoptions *opt;
+	u8 hop_limit;
+	u8 tclass;
+};
+
+struct ipv6_mc_socklist;
+
+struct ipv6_ac_socklist;
+
+struct ipv6_fl_socklist;
+
+struct ipv6_pinfo {
+	struct in6_addr saddr;
+	struct in6_pktinfo sticky_pktinfo;
+	const struct in6_addr *daddr_cache;
+	__be32 flow_label;
+	__u32 frag_size;
+	__u16 __unused_1: 7;
+	__s16 hop_limit: 9;
+	__u16 mc_loop: 1;
+	__u16 __unused_2: 6;
+	__s16 mcast_hops: 9;
+	int ucast_oif;
+	int mcast_oif;
+	union {
+		struct {
+			__u16 srcrt: 1;
+			__u16 osrcrt: 1;
+			__u16 rxinfo: 1;
+			__u16 rxoinfo: 1;
+			__u16 rxhlim: 1;
+			__u16 rxohlim: 1;
+			__u16 hopopts: 1;
+			__u16 ohopopts: 1;
+			__u16 dstopts: 1;
+			__u16 odstopts: 1;
+			__u16 rxflow: 1;
+			__u16 rxtclass: 1;
+			__u16 rxpmtu: 1;
+			__u16 rxorigdstaddr: 1;
+			__u16 recvfragsize: 1;
+		} bits;
+		__u16 all;
+	} rxopt;
+	__u16 recverr: 1;
+	__u16 sndflow: 1;
+	__u16 repflow: 1;
+	__u16 pmtudisc: 3;
+	__u16 padding: 1;
+	__u16 srcprefs: 3;
+	__u16 dontfrag: 1;
+	__u16 autoflowlabel: 1;
+	__u16 autoflowlabel_set: 1;
+	__u16 mc_all: 1;
+	__u16 recverr_rfc4884: 1;
+	__u16 rtalert_isolate: 1;
+	__u8 min_hopcount;
+	__u8 tclass;
+	__be32 rcv_flowinfo;
+	__u32 dst_cookie;
+	struct ipv6_mc_socklist __attribute__((btf_type_tag("rcu"))) *ipv6_mc_list;
+	struct ipv6_ac_socklist *ipv6_ac_list;
+	struct ipv6_fl_socklist __attribute__((btf_type_tag("rcu"))) *ipv6_fl_list;
+	struct ipv6_txoptions __attribute__((btf_type_tag("rcu"))) *opt;
+	struct sk_buff *pktoptions;
+	struct sk_buff *rxpmtu;
+	struct inet6_cork cork;
+};
+
+struct ip6_sf_socklist;
+
+struct ipv6_mc_socklist {
+	struct in6_addr addr;
+	int ifindex;
+	unsigned int sfmode;
+	struct ipv6_mc_socklist __attribute__((btf_type_tag("rcu"))) *next;
+	struct ip6_sf_socklist __attribute__((btf_type_tag("rcu"))) *sflist;
+	struct callback_head rcu;
+};
+
+struct ip6_sf_socklist {
+	unsigned int sl_max;
+	unsigned int sl_count;
+	struct callback_head rcu;
+	struct in6_addr sl_addr[0];
+};
+
+struct ipv6_ac_socklist {
+	struct in6_addr acl_addr;
+	int acl_ifindex;
+	struct ipv6_ac_socklist *acl_next;
+};
+
+struct ip6_flowlabel;
+
+struct ipv6_fl_socklist {
+	struct ipv6_fl_socklist __attribute__((btf_type_tag("rcu"))) *next;
+	struct ip6_flowlabel *fl;
+	struct callback_head rcu;
+};
+
+struct ip6_flowlabel {
+	struct ip6_flowlabel __attribute__((btf_type_tag("rcu"))) *next;
+	__be32 label;
+	atomic_t users;
+	struct in6_addr dst;
+	struct ipv6_txoptions *opt;
+	unsigned long linger;
+	struct callback_head rcu;
+	u8 share;
+	union {
+		struct pid *pid;
+		kuid_t uid;
+	} owner;
+	unsigned long lastuse;
+	unsigned long expires;
+	struct net *fl_net;
+};
+
+struct ipv6_opt_hdr;
+
+struct ipv6_rt_hdr;
+
+struct ipv6_txoptions {
+	refcount_t refcnt;
+	int tot_len;
+	__u16 opt_flen;
+	__u16 opt_nflen;
+	struct ipv6_opt_hdr *hopopt;
+	struct ipv6_opt_hdr *dst0opt;
+	struct ipv6_rt_hdr *srcrt;
+	struct ipv6_opt_hdr *dst1opt;
+	struct callback_head rcu;
+};
+
+struct ipv6_opt_hdr {
+	__u8 nexthdr;
+	__u8 hdrlen;
+};
+
+struct ipv6_rt_hdr {
+	__u8 nexthdr;
+	__u8 hdrlen;
+	__u8 type;
+	__u8 segments_left;
+};
+
+struct ip_options {
+	__be32 faddr;
+	__be32 nexthop;
+	unsigned char optlen;
+	unsigned char srr;
+	unsigned char rr;
+	unsigned char ts;
+	unsigned char is_strictroute: 1;
+	unsigned char srr_is_hit: 1;
+	unsigned char is_changed: 1;
+	unsigned char rr_needaddr: 1;
+	unsigned char ts_needtime: 1;
+	unsigned char ts_needaddr: 1;
+	unsigned char router_alert;
+	unsigned char cipso;
+	unsigned char __pad2;
+	unsigned char __data[0];
+};
+
+struct ip_options_rcu {
+	struct callback_head rcu;
+	struct ip_options opt;
+};
+
+struct ip_mreqn {
+	struct in_addr imr_multiaddr;
+	struct in_addr imr_address;
+	int imr_ifindex;
+};
+
+struct ip_sf_socklist;
+
+struct ip_mc_socklist {
+	struct ip_mc_socklist __attribute__((btf_type_tag("rcu"))) *next_rcu;
+	struct ip_mreqn multi;
+	unsigned int sfmode;
+	struct ip_sf_socklist __attribute__((btf_type_tag("rcu"))) *sflist;
+	struct callback_head rcu;
+};
+
+struct sctp_ulpevent;
+
+struct sctp_pf {
+	void (*event_msgname)(struct sctp_ulpevent *, char *, int *);
+	void (*skb_msgname)(struct sk_buff *, char *, int *);
+	int (*af_supported)(sa_family_t, struct sctp_sock *);
+	int (*cmp_addr)(const union sctp_addr *, const union sctp_addr *, struct sctp_sock *);
+	int (*bind_verify)(struct sctp_sock *, union sctp_addr *);
+	int (*send_verify)(struct sctp_sock *, union sctp_addr *);
+	int (*supported_addrs)(const struct sctp_sock *, __be16 *);
+	struct sock * (*create_accept_sk)(struct sock *, struct sctp_association *, bool);
+	int (*addr_to_user)(struct sctp_sock *, union sctp_addr *);
+	void (*to_sk_saddr)(union sctp_addr *, struct sock *);
+	void (*to_sk_daddr)(union sctp_addr *, struct sock *);
+	void (*copy_ip_options)(struct sock *, struct sock *);
+	struct sctp_af *af;
+};
+
+struct sctp_ulpevent {
+	struct sctp_association *asoc;
+	struct sctp_chunk *chunk;
+	unsigned int rmem_len;
+	union {
+		__u32 mid;
+		__u16 ssn;
+	};
+	union {
+		__u32 ppid;
+		__u32 fsn;
+	};
+	__u32 tsn;
+	__u32 cumtsn;
+	__u16 stream;
+	__u16 flags;
+	__u16 msg_flags;
+} __attribute__((packed));
+
+struct sctp_endpoint {
+	struct sctp_ep_common base;
+	struct hlist_node node;
+	int hashent;
+	struct list_head asocs;
+	__u8 secret_key[32];
+	__u8 *digest;
+	__u32 sndbuf_policy;
+	__u32 rcvbuf_policy;
+	struct crypto_shash **auth_hmacs;
+	struct sctp_hmac_algo_param *auth_hmacs_list;
+	struct sctp_chunks_param *auth_chunk_list;
+	struct list_head endpoint_shared_keys;
+	__u16 active_key_id;
+	__u8 ecn_enable: 1;
+	__u8 auth_enable: 1;
+	__u8 intl_enable: 1;
+	__u8 prsctp_enable: 1;
+	__u8 asconf_enable: 1;
+	__u8 reconf_enable: 1;
+	__u8 strreset_enable;
+	struct callback_head rcu;
+};
+
+struct sctp_bind_bucket {
+	unsigned short port;
+	signed char fastreuse;
+	signed char fastreuseport;
+	kuid_t fastuid;
+	struct hlist_node node;
+	struct hlist_head owner;
+	struct net *net;
+};
+
+struct sctp_stream_priorities;
+
+struct sctp_stream_out_ext {
+	__u64 abandoned_unsent[3];
+	__u64 abandoned_sent[3];
+	struct list_head outq;
+	union {
+		struct {
+			struct list_head prio_list;
+			struct sctp_stream_priorities *prio_head;
+		};
+		struct {
+			struct list_head rr_list;
+		};
+		struct {
+			struct list_head fc_list;
+			__u32 fc_length;
+			__u16 fc_weight;
+		};
+	};
+};
+
+struct sctp_stream_priorities {
+	struct list_head prio_sched;
+	struct list_head active;
+	struct sctp_stream_out_ext *next;
+	__u16 prio;
+	__u16 users;
+};
+
+struct sctp_stream_interleave {
+	__u16 data_chunk_len;
+	__u16 ftsn_chunk_len;
+	struct sctp_chunk * (*make_datafrag)(const struct sctp_association *, const struct sctp_sndrcvinfo *, int, __u8, gfp_t);
+	void (*assign_number)(struct sctp_chunk *);
+	bool (*validate_data)(struct sctp_chunk *);
+	int (*ulpevent_data)(struct sctp_ulpq *, struct sctp_chunk *, gfp_t);
+	int (*enqueue_event)(struct sctp_ulpq *, struct sctp_ulpevent *);
+	void (*renege_events)(struct sctp_ulpq *, struct sctp_chunk *, gfp_t);
+	void (*start_pd)(struct sctp_ulpq *, gfp_t);
+	void (*abort_pd)(struct sctp_ulpq *, gfp_t);
+	void (*generate_ftsn)(struct sctp_outq *, __u32);
+	bool (*validate_ftsn)(struct sctp_chunk *);
+	void (*report_ftsn)(struct sctp_ulpq *, __u32);
+	void (*handle_ftsn)(struct sctp_ulpq *, struct sctp_chunk *);
+};
+
+enum nf_hook_ops_type {
+	NF_HOOK_OP_UNDEFINED = 0,
+	NF_HOOK_OP_NF_TABLES = 1,
+	NF_HOOK_OP_BPF = 2,
+};
+
+struct nf_hook_ops {
+	nf_hookfn *hook;
+	struct net_device *dev;
+	void *priv;
+	u8 pf;
+	enum nf_hook_ops_type hook_ops_type: 8;
+	unsigned int hooknum;
+	int priority;
+};
+
+enum label_initialized {
+	LABEL_INVALID = 0,
+	LABEL_INITIALIZED = 1,
+	LABEL_PENDING = 2,
+};
+
+enum {
+	POLICYDB_CAP_NETPEER = 0,
+	POLICYDB_CAP_OPENPERM = 1,
+	POLICYDB_CAP_EXTSOCKCLASS = 2,
+	POLICYDB_CAP_ALWAYSNETWORK = 3,
+	POLICYDB_CAP_CGROUPSECLABEL = 4,
+	POLICYDB_CAP_NNP_NOSUID_TRANSITION = 5,
+	POLICYDB_CAP_GENFS_SECLABEL_SYMLINKS = 6,
+	POLICYDB_CAP_IOCTL_SKIP_CLOEXEC = 7,
+	__POLICYDB_CAP_MAX = 8,
+};
+
+struct sk_security_struct {
+	u32 sid;
+	u32 peer_sid;
+	u16 sclass;
+	enum {
+		SCTP_ASSOC_UNSET = 0,
+		SCTP_ASSOC_SET = 1,
+	} sctp_assoc_state;
+};
+
+enum {
+	Opt_error = -1,
+	Opt_context = 0,
+	Opt_defcontext = 1,
+	Opt_fscontext = 2,
+	Opt_rootcontext = 3,
+	Opt_seclabel = 4,
+};
+
+enum {
+	TCP_ESTABLISHED = 1,
+	TCP_SYN_SENT = 2,
+	TCP_SYN_RECV = 3,
+	TCP_FIN_WAIT1 = 4,
+	TCP_FIN_WAIT2 = 5,
+	TCP_TIME_WAIT = 6,
+	TCP_CLOSE = 7,
+	TCP_CLOSE_WAIT = 8,
+	TCP_LAST_ACK = 9,
+	TCP_LISTEN = 10,
+	TCP_CLOSING = 11,
+	TCP_NEW_SYN_RECV = 12,
+	TCP_MAX_STATES = 13,
+};
+
+struct inode_security_struct {
+	struct inode *inode;
+	struct list_head list;
+	u32 task_sid;
+	u32 sid;
+	u16 sclass;
+	unsigned char initialized;
+	spinlock_t lock;
+};
+
+struct tty_file_private {
+	struct tty_struct *tty;
+	struct file *file;
+	struct list_head list;
+};
+
+struct socket_alloc {
+	struct socket socket;
+	struct inode vfs_inode;
+};
+
+struct inet_skb_parm {
+	int iif;
+	struct ip_options opt;
+	u16 flags;
+	u16 frag_max_size;
+};
+
+struct inet6_skb_parm {
+	int iif;
+	__be16 ra;
+	__u16 dst0;
+	__u16 srcrt;
+	__u16 dst1;
+	__u16 lastopt;
+	__u16 nhoff;
+	__u16 flags;
+	__u16 dsthao;
+	__u16 frag_max_size;
+	__u16 srhoff;
+};
+
+struct task_security_struct {
+	u32 osid;
+	u32 sid;
+	u32 exec_sid;
+	u32 create_sid;
+	u32 keycreate_sid;
+	u32 sockcreate_sid;
+};
+
+struct superblock_security_struct {
+	u32 sid;
+	u32 def_sid;
+	u32 mntpoint_sid;
+	unsigned short behavior;
+	unsigned short flags;
+	struct mutex lock;
+	struct list_head isec_head;
+	spinlock_t isec_lock;
+};
+
+struct file_security_struct {
+	u32 sid;
+	u32 fown_sid;
+	u32 isid;
+	u32 pseqno;
+};
+
+struct bpf_security_struct {
+	u32 sid;
+};
+
+struct ipc_security_struct {
+	u16 sclass;
+	u32 sid;
+};
+
+struct msg_security_struct {
+	u32 sid;
+};
+
+typedef __u16 __sum16;
+
+struct iphdr {
+	__u8 ihl: 4;
+	__u8 version: 4;
+	__u8 tos;
+	__be16 tot_len;
+	__be16 id;
+	__be16 frag_off;
+	__u8 ttl;
+	__u8 protocol;
+	__sum16 check;
+	union {
+		struct {
+			__be32 saddr;
+			__be32 daddr;
+		};
+		struct {
+			__be32 saddr;
+			__be32 daddr;
+		} addrs;
+	};
+};
+
+struct tcphdr {
+	__be16 source;
+	__be16 dest;
+	__be32 seq;
+	__be32 ack_seq;
+	__u16 res1: 4;
+	__u16 doff: 4;
+	__u16 fin: 1;
+	__u16 syn: 1;
+	__u16 rst: 1;
+	__u16 psh: 1;
+	__u16 ack: 1;
+	__u16 urg: 1;
+	__u16 ece: 1;
+	__u16 cwr: 1;
+	__be16 window;
+	__sum16 check;
+	__be16 urg_ptr;
+};
+
+struct dccp_hdr {
+	__be16 dccph_sport;
+	__be16 dccph_dport;
+	__u8 dccph_doff;
+	__u8 dccph_cscov: 4;
+	__u8 dccph_ccval: 4;
+	__sum16 dccph_checksum;
+	__u8 dccph_x: 1;
+	__u8 dccph_type: 4;
+	__u8 dccph_reserved: 3;
+	__u8 dccph_seq2;
+	__be16 dccph_seq;
+};
+
+struct udphdr {
+	__be16 source;
+	__be16 dest;
+	__be16 len;
+	__sum16 check;
+};
+
+struct ipv6hdr {
+	__u8 priority: 4;
+	__u8 version: 4;
+	__u8 flow_lbl[3];
+	__be16 payload_len;
+	__u8 nexthdr;
+	__u8 hop_limit;
+	union {
+		struct {
+			struct in6_addr saddr;
+			struct in6_addr daddr;
+		};
+		struct {
+			struct in6_addr saddr;
+			struct in6_addr daddr;
+		} addrs;
+	};
+};
+
+struct selinux_mnt_opts {
+	u32 fscontext_sid;
+	u32 context_sid;
+	u32 rootcontext_sid;
+	u32 defcontext_sid;
+};
+
+struct tun_security_struct {
+	u32 sid;
+};
+
+struct key_security_struct {
+	u32 sid;
+};
+
+struct perf_event_security_struct {
+	u32 sid;
+};
+
+enum sel_inos {
+	SEL_ROOT_INO = 2,
+	SEL_LOAD = 3,
+	SEL_ENFORCE = 4,
+	SEL_CONTEXT = 5,
+	SEL_ACCESS = 6,
+	SEL_CREATE = 7,
+	SEL_RELABEL = 8,
+	SEL_USER = 9,
+	SEL_POLICYVERS = 10,
+	SEL_COMMIT_BOOLS = 11,
+	SEL_MLS = 12,
+	SEL_DISABLE = 13,
+	SEL_MEMBER = 14,
+	SEL_CHECKREQPROT = 15,
+	SEL_COMPAT_NET = 16,
+	SEL_REJECT_UNKNOWN = 17,
+	SEL_DENY_UNKNOWN = 18,
+	SEL_STATUS = 19,
+	SEL_POLICY = 20,
+	SEL_VALIDATE_TRANS = 21,
+	SEL_INO_NEXT = 22,
+};
+
+struct selinux_fs_info {
+	struct dentry *bool_dir;
+	unsigned int bool_num;
+	char **bool_pending_names;
+	int *bool_pending_values;
+	struct dentry *class_dir;
+	unsigned long last_class_ino;
+	bool policy_opened;
+	struct dentry *policycap_dir;
+	unsigned long last_ino;
+	struct super_block *sb;
+};
+
+struct selinux_policy_convert_data;
+
+struct selinux_load_state {
+	struct selinux_policy *policy;
+	struct selinux_policy_convert_data *convert_data;
+};
+
+struct policy_load_memory {
+	size_t len;
+	void *data;
+};
+
+enum {
+	SELNL_MSG_SETENFORCE = 16,
+	SELNL_MSG_POLICYLOAD = 17,
+	SELNL_MSG_MAX = 18,
+};
+
+enum selinux_nlgroups {
+	SELNLGRP_NONE = 0,
+	SELNLGRP_AVC = 1,
+	__SELNLGRP_MAX = 2,
+};
+
+struct selnl_msg_setenforce {
+	__s32 val;
+};
+
+struct selnl_msg_policyload {
+	__u32 seqno;
+};
+
+struct nlmsg_perm {
+	u16 nlmsg_type;
+	u32 perm;
+};
+
+enum {
+	RTM_BASE = 16,
+	RTM_NEWLINK = 16,
+	RTM_DELLINK = 17,
+	RTM_GETLINK = 18,
+	RTM_SETLINK = 19,
+	RTM_NEWADDR = 20,
+	RTM_DELADDR = 21,
+	RTM_GETADDR = 22,
+	RTM_NEWROUTE = 24,
+	RTM_DELROUTE = 25,
+	RTM_GETROUTE = 26,
+	RTM_NEWNEIGH = 28,
+	RTM_DELNEIGH = 29,
+	RTM_GETNEIGH = 30,
+	RTM_NEWRULE = 32,
+	RTM_DELRULE = 33,
+	RTM_GETRULE = 34,
+	RTM_NEWQDISC = 36,
+	RTM_DELQDISC = 37,
+	RTM_GETQDISC = 38,
+	RTM_NEWTCLASS = 40,
+	RTM_DELTCLASS = 41,
+	RTM_GETTCLASS = 42,
+	RTM_NEWTFILTER = 44,
+	RTM_DELTFILTER = 45,
+	RTM_GETTFILTER = 46,
+	RTM_NEWACTION = 48,
+	RTM_DELACTION = 49,
+	RTM_GETACTION = 50,
+	RTM_NEWPREFIX = 52,
+	RTM_GETMULTICAST = 58,
+	RTM_GETANYCAST = 62,
+	RTM_NEWNEIGHTBL = 64,
+	RTM_GETNEIGHTBL = 66,
+	RTM_SETNEIGHTBL = 67,
+	RTM_NEWNDUSEROPT = 68,
+	RTM_NEWADDRLABEL = 72,
+	RTM_DELADDRLABEL = 73,
+	RTM_GETADDRLABEL = 74,
+	RTM_GETDCB = 78,
+	RTM_SETDCB = 79,
+	RTM_NEWNETCONF = 80,
+	RTM_DELNETCONF = 81,
+	RTM_GETNETCONF = 82,
+	RTM_NEWMDB = 84,
+	RTM_DELMDB = 85,
+	RTM_GETMDB = 86,
+	RTM_NEWNSID = 88,
+	RTM_DELNSID = 89,
+	RTM_GETNSID = 90,
+	RTM_NEWSTATS = 92,
+	RTM_GETSTATS = 94,
+	RTM_SETSTATS = 95,
+	RTM_NEWCACHEREPORT = 96,
+	RTM_NEWCHAIN = 100,
+	RTM_DELCHAIN = 101,
+	RTM_GETCHAIN = 102,
+	RTM_NEWNEXTHOP = 104,
+	RTM_DELNEXTHOP = 105,
+	RTM_GETNEXTHOP = 106,
+	RTM_NEWLINKPROP = 108,
+	RTM_DELLINKPROP = 109,
+	RTM_GETLINKPROP = 110,
+	RTM_NEWVLAN = 112,
+	RTM_DELVLAN = 113,
+	RTM_GETVLAN = 114,
+	RTM_NEWNEXTHOPBUCKET = 116,
+	RTM_DELNEXTHOPBUCKET = 117,
+	RTM_GETNEXTHOPBUCKET = 118,
+	RTM_NEWTUNNEL = 120,
+	RTM_DELTUNNEL = 121,
+	RTM_GETTUNNEL = 122,
+	__RTM_MAX = 123,
+};
+
+struct netif_security_struct {
+	struct net *ns;
+	int ifindex;
+	u32 sid;
+};
+
+struct sel_netif {
+	struct list_head list;
+	struct netif_security_struct nsec;
+	struct callback_head callback_head;
+};
+
+struct sel_netnode_bkt {
+	unsigned int size;
+	struct list_head list;
+};
+
+struct netnode_security_struct {
+	union {
+		__be32 ipv4;
+		struct in6_addr ipv6;
+	} addr;
+	u32 sid;
+	u16 family;
+};
+
+struct sel_netnode {
+	struct netnode_security_struct nsec;
+	struct list_head list;
+	struct callback_head rcu;
+};
+
+struct sel_netport_bkt {
+	int size;
+	struct list_head list;
+};
+
+struct netport_security_struct {
+	u32 sid;
+	u16 port;
+	u8 protocol;
+};
+
+struct sel_netport {
+	struct netport_security_struct psec;
+	struct list_head list;
+	struct callback_head rcu;
+};
+
+struct selinux_kernel_status {
+	u32 version;
+	u32 sequence;
+	u32 enforcing;
+	u32 policyload;
+	u32 deny_unknown;
+};
+
+struct ebitmap_node {
+	struct ebitmap_node *next;
+	unsigned long maps[6];
+	u32 startbit;
+};
+
+struct policy_file {
+	char *data;
+	size_t len;
+};
+
+struct hashtab_node {
+	void *key;
+	void *datum;
+	struct hashtab_node *next;
+};
+
+struct hashtab_key_params {
+	u32 (*hash)(const void *);
+	int (*cmp)(const void *, const void *);
+};
+
+struct mls_level {
+	u32 sens;
+	struct ebitmap cat;
+};
+
+struct mls_range {
+	struct mls_level level[2];
+};
+
+struct context {
+	u32 user;
+	u32 role;
+	u32 type;
+	u32 len;
+	struct mls_range range;
+	char *str;
+};
+
+struct sidtab_str_cache;
+
+struct sidtab_entry {
+	u32 sid;
+	u32 hash;
+	struct context context;
+	struct sidtab_str_cache __attribute__((btf_type_tag("rcu"))) *cache;
+	struct hlist_node list;
+};
+
+struct sidtab_str_cache {
+	struct callback_head rcu_member;
+	struct list_head lru_member;
+	struct sidtab_entry *parent;
+	u32 len;
+	char str[0];
+};
+
+struct sidtab_node_inner;
+
+struct sidtab_node_leaf;
+
+union sidtab_entry_inner {
+	struct sidtab_node_inner *ptr_inner;
+	struct sidtab_node_leaf *ptr_leaf;
+};
+
+struct sidtab_isid_entry {
+	int set;
+	struct sidtab_entry entry;
+};
+
+struct sidtab_convert_params;
+
+struct sidtab {
+	union sidtab_entry_inner roots[4];
+	u32 count;
+	struct sidtab_convert_params *convert;
+	bool frozen;
+	spinlock_t lock;
+	u32 cache_free_slots;
+	struct list_head cache_lru_list;
+	spinlock_t cache_lock;
+	struct sidtab_isid_entry isids[27];
+	struct hlist_head context_to_sid[512];
+};
+
+struct sidtab_node_inner {
+	union sidtab_entry_inner entries[512];
+};
+
+struct sidtab_node_leaf {
+	struct sidtab_entry entries[39];
+};
+
+struct convert_context_args;
+
+struct sidtab_convert_params {
+	struct convert_context_args *args;
+	struct sidtab *target;
+};
+
+struct convert_context_args {
+	struct policydb *oldp;
+	struct policydb *newp;
+};
+
+struct common_datum;
+
+struct constraint_node;
+
+struct class_datum {
+	u32 value;
+	char *comkey;
+	struct common_datum *comdatum;
+	struct symtab permissions;
+	struct constraint_node *constraints;
+	struct constraint_node *validatetrans;
+	char default_user;
+	char default_role;
+	char default_type;
+	char default_range;
+};
+
+struct common_datum {
+	u32 value;
+	struct symtab permissions;
+};
+
+struct constraint_expr;
+
+struct constraint_node {
+	u32 permissions;
+	struct constraint_expr *expr;
+	struct constraint_node *next;
+};
+
+struct type_set;
+
+struct constraint_expr {
+	u32 expr_type;
+	u32 attr;
+	u32 op;
+	struct ebitmap names;
+	struct type_set *type_names;
+	struct constraint_expr *next;
+};
+
+struct type_set {
+	struct ebitmap types;
+	struct ebitmap negset;
+	u32 flags;
+};
+
+struct role_datum {
+	u32 value;
+	u32 bounds;
+	struct ebitmap dominates;
+	struct ebitmap types;
+};
+
+struct user_datum {
+	u32 value;
+	u32 bounds;
+	struct ebitmap roles;
+	struct mls_range range;
+	struct mls_level dfltlevel;
+};
+
+struct type_datum {
+	u32 value;
+	u32 bounds;
+	unsigned char primary;
+	unsigned char attribute;
+};
+
+struct avtab_key {
+	u16 source_type;
+	u16 target_type;
+	u16 target_class;
+	u16 specified;
+};
+
+struct avtab_extended_perms;
+
+struct avtab_datum {
+	union {
+		u32 data;
+		struct avtab_extended_perms *xperms;
+	} u;
+};
+
+struct avtab_node {
+	struct avtab_key key;
+	struct avtab_datum datum;
+	struct avtab_node *next;
+};
+
+struct avtab_extended_perms {
+	u8 specified;
+	u8 driver;
+	struct extended_perms_data perms;
+};
+
+struct cond_bool_datum {
+	__u32 value;
+	int state;
+};
+
+struct role_allow {
+	u32 role;
+	u32 new_role;
+	struct role_allow *next;
+};
+
+struct ocontext {
+	union {
+		char *name;
+		struct {
+			u8 protocol;
+			u16 low_port;
+			u16 high_port;
+		} port;
+		struct {
+			u32 addr;
+			u32 mask;
+		} node;
+		struct {
+			u32 addr[4];
+			u32 mask[4];
+		} node6;
+		struct {
+			u64 subnet_prefix;
+			u16 low_pkey;
+			u16 high_pkey;
+		} ibpkey;
+		struct {
+			char *dev_name;
+			u8 port;
+		} ibendport;
+	} u;
+	union {
+		u32 sclass;
+		u32 behavior;
+	} v;
+	struct context context[2];
+	u32 sid[2];
+	struct ocontext *next;
+};
+
+struct genfs {
+	char *fstype;
+	struct ocontext *head;
+	struct genfs *next;
+};
+
+struct policydb_compat_info {
+	unsigned int version;
+	unsigned int sym_num;
+	unsigned int ocon_num;
+};
+
+struct cond_expr_node;
+
+struct cond_expr {
+	struct cond_expr_node *nodes;
+	u32 len;
+};
+
+struct cond_av_list {
+	struct avtab_node **nodes;
+	u32 len;
+};
+
+struct cond_node {
+	int cur_state;
+	struct cond_expr expr;
+	struct cond_av_list true_list;
+	struct cond_av_list false_list;
+};
+
+struct cond_expr_node {
+	u32 expr_type;
+	u32 boolean;
+};
+
+struct filename_trans_key {
+	u32 ttype;
+	u16 tclass;
+	const char *name;
+};
+
+struct range_trans {
+	u32 source_type;
+	u32 target_type;
+	u32 target_class;
+};
+
+struct role_trans_key {
+	u32 role;
+	u32 type;
+	u32 tclass;
+};
+
+struct filename_trans_datum {
+	struct ebitmap stypes;
+	u32 otype;
+	struct filename_trans_datum *next;
+};
+
+struct level_datum {
+	struct mls_level *level;
+	unsigned char isalias;
+};
+
+struct role_trans_datum {
+	u32 new_role;
+};
+
+struct perm_datum {
+	u32 value;
+};
+
+struct policy_data {
+	struct policydb *p;
+	void *fp;
+};
+
+struct cat_datum {
+	u32 value;
+	unsigned char isalias;
+};
+
+struct selinux_mapping {
+	u16 value;
+	u16 num_perms;
+	u32 perms[32];
+};
+
+struct selinux_audit_rule {
+	u32 au_seqno;
+	struct context au_ctxt;
+};
+
+struct selinux_policy_convert_data {
+	struct convert_context_args args;
+	struct sidtab_convert_params sidtab_params;
+};
+
+struct cond_insertf_data {
+	struct policydb *p;
+	struct avtab_node **dst;
+	struct cond_av_list *other;
+};
+
+struct scm_stat {
+	atomic_t nr_fds;
+};
+
+struct unix_address;
+
+struct unix_sock {
+	struct sock sk;
+	struct unix_address *addr;
+	struct path path;
+	struct mutex iolock;
+	struct mutex bindlock;
+	struct sock *peer;
+	struct list_head link;
+	unsigned long inflight;
+	spinlock_t lock;
+	unsigned long gc_flags;
+	struct socket_wq peer_wq;
+	wait_queue_entry_t peer_wake;
+	struct scm_stat scm_stat;
+	struct sk_buff *oob_skb;
+	long: 64;
+};
+
+struct sockaddr_un {
+	__kernel_sa_family_t sun_family;
+	char sun_path[108];
+};
+
+struct unix_address {
+	refcount_t refcnt;
+	int len;
+	struct sockaddr_un name[0];
+};
+
+enum integrity_status {
+	INTEGRITY_PASS = 0,
+	INTEGRITY_PASS_IMMUTABLE = 1,
+	INTEGRITY_FAIL = 2,
+	INTEGRITY_FAIL_IMMUTABLE = 3,
+	INTEGRITY_NOLABEL = 4,
+	INTEGRITY_NOXATTRS = 5,
+	INTEGRITY_UNKNOWN = 6,
+};
+
+struct ima_digest_data;
+
+struct integrity_iint_cache {
+	struct rb_node rb_node;
+	struct mutex mutex;
+	struct inode *inode;
+	u64 version;
+	unsigned long flags;
+	unsigned long measured_pcrs;
+	unsigned long atomic_flags;
+	unsigned long real_ino;
+	dev_t real_dev;
+	enum integrity_status ima_file_status: 4;
+	enum integrity_status ima_mmap_status: 4;
+	enum integrity_status ima_bprm_status: 4;
+	enum integrity_status ima_read_status: 4;
+	enum integrity_status ima_creds_status: 4;
+	enum integrity_status evm_status: 4;
+	struct ima_digest_data *ima_hash;
+};
+
+struct ima_digest_data {
+	u8 algo;
+	u8 length;
+	union {
+		struct {
+			u8 unused;
+			u8 type;
+		} sha1;
+		struct {
+			u8 type;
+			u8 algo;
+		} ng;
+		u8 data[2];
+	} xattr;
+	u8 digest[0];
+};
+
+enum {
+	CRYPTO_MSG_ALG_REQUEST = 0,
+	CRYPTO_MSG_ALG_REGISTER = 1,
+	CRYPTO_MSG_ALG_LOADED = 2,
+};
+
+struct crypto_larval {
+	struct crypto_alg alg;
+	struct crypto_alg *adult;
+	struct completion completion;
+	u32 mask;
+	bool test_started;
+};
+
+struct crypto_cipher {
+	struct crypto_tfm base;
+};
+
+struct crypto_comp {
+	struct crypto_tfm base;
+};
+
+struct crypto_queue {
+	struct list_head list;
+	struct list_head *backlog;
+	unsigned int qlen;
+	unsigned int max_qlen;
+};
+
+struct crypto_engine {
+	char name[30];
+	bool idling;
+	bool busy;
+	bool running;
+	bool retry_support;
+	struct list_head list;
+	spinlock_t queue_lock;
+	struct crypto_queue queue;
+	struct device *dev;
+	bool rt;
+	int (*prepare_crypt_hardware)(struct crypto_engine *);
+	int (*unprepare_crypt_hardware)(struct crypto_engine *);
+	int (*do_batch_requests)(struct crypto_engine *);
+	struct kthread_worker *kworker;
+	struct kthread_work pump_requests;
+	void *priv_data;
+	struct crypto_async_request *cur_req;
+};
+
+struct crypto_engine_op {
+	int (*do_one_request)(struct crypto_engine *, void *);
+};
+
+struct crypto_engine_alg {
+	struct crypto_alg base;
+	struct crypto_engine_op op;
+};
+
+struct aead_engine_alg {
+	struct aead_alg base;
+	struct crypto_engine_op op;
+};
+
+struct ahash_request;
+
+struct crypto_ahash;
+
+struct ahash_alg {
+	int (*init)(struct ahash_request *);
+	int (*update)(struct ahash_request *);
+	int (*final)(struct ahash_request *);
+	int (*finup)(struct ahash_request *);
+	int (*digest)(struct ahash_request *);
+	int (*export)(struct ahash_request *, void *);
+	int (*import)(struct ahash_request *, const void *);
+	int (*setkey)(struct crypto_ahash *, const u8 *, unsigned int);
+	int (*init_tfm)(struct crypto_ahash *);
+	void (*exit_tfm)(struct crypto_ahash *);
+	int (*clone_tfm)(struct crypto_ahash *, struct crypto_ahash *);
+	struct hash_alg_common halg;
+};
+
+struct ahash_request {
+	struct crypto_async_request base;
+	unsigned int nbytes;
+	struct scatterlist *src;
+	u8 *result;
+	void *priv;
+	void *__ctx[0];
+};
+
+struct crypto_ahash {
+	int (*init)(struct ahash_request *);
+	int (*update)(struct ahash_request *);
+	int (*final)(struct ahash_request *);
+	int (*finup)(struct ahash_request *);
+	int (*digest)(struct ahash_request *);
+	int (*export)(struct ahash_request *, void *);
+	int (*import)(struct ahash_request *, const void *);
+	int (*setkey)(struct crypto_ahash *, const u8 *, unsigned int);
+	unsigned int statesize;
+	unsigned int reqsize;
+	struct crypto_tfm base;
+};
+
+struct ahash_engine_alg {
+	struct ahash_alg base;
+	struct crypto_engine_op op;
+};
+
+struct akcipher_request;
+
+struct crypto_akcipher;
+
+struct akcipher_alg {
+	int (*sign)(struct akcipher_request *);
+	int (*verify)(struct akcipher_request *);
+	int (*encrypt)(struct akcipher_request *);
+	int (*decrypt)(struct akcipher_request *);
+	int (*set_pub_key)(struct crypto_akcipher *, const void *, unsigned int);
+	int (*set_priv_key)(struct crypto_akcipher *, const void *, unsigned int);
+	unsigned int (*max_size)(struct crypto_akcipher *);
+	int (*init)(struct crypto_akcipher *);
+	void (*exit)(struct crypto_akcipher *);
+	struct crypto_alg base;
+};
+
+struct akcipher_request {
+	struct crypto_async_request base;
+	struct scatterlist *src;
+	struct scatterlist *dst;
+	unsigned int src_len;
+	unsigned int dst_len;
+	void *__ctx[0];
+};
+
+struct crypto_akcipher {
+	unsigned int reqsize;
+	struct crypto_tfm base;
+};
+
+struct crypto_kpp;
+
+struct kpp_request;
+
+struct kpp_alg {
+	int (*set_secret)(struct crypto_kpp *, const void *, unsigned int);
+	int (*generate_public_key)(struct kpp_request *);
+	int (*compute_shared_secret)(struct kpp_request *);
+	unsigned int (*max_size)(struct crypto_kpp *);
+	int (*init)(struct crypto_kpp *);
+	void (*exit)(struct crypto_kpp *);
+	struct crypto_alg base;
+};
+
+struct crypto_kpp {
+	unsigned int reqsize;
+	struct crypto_tfm base;
+};
+
+struct kpp_request {
+	struct crypto_async_request base;
+	struct scatterlist *src;
+	struct scatterlist *dst;
+	unsigned int src_len;
+	unsigned int dst_len;
+	void *__ctx[0];
+};
+
+struct skcipher_engine_alg {
+	struct skcipher_alg base;
+	struct crypto_engine_op op;
+};
+
+struct akcipher_engine_alg {
+	struct akcipher_alg base;
+	struct crypto_engine_op op;
+};
+
+struct kpp_engine_alg {
+	struct kpp_alg base;
+	struct crypto_engine_op op;
+};
+
+enum {
+	CRYPTOA_UNSPEC = 0,
+	CRYPTOA_ALG = 1,
+	CRYPTOA_TYPE = 2,
+	__CRYPTOA_MAX = 3,
+};
+
+struct rtattr {
+	unsigned short rta_len;
+	unsigned short rta_type;
+};
+
+struct crypto_attr_type {
+	u32 type;
+	u32 mask;
+};
+
+struct crypto_attr_alg {
+	char name[128];
+};
+
+struct aead_instance {
+	void (*free)(struct aead_instance *);
+	union {
+		struct {
+			char head[64];
+			struct crypto_instance base;
+		} s;
+		struct aead_alg alg;
+	};
+};
+
+struct crypto_istat_aead {
+	atomic64_t encrypt_cnt;
+	atomic64_t encrypt_tlen;
+	atomic64_t decrypt_cnt;
+	atomic64_t decrypt_tlen;
+	atomic64_t err_cnt;
+};
+
+struct crypto_aead_spawn {
+	struct crypto_spawn base;
+};
+
+struct crypto_rng;
+
+struct rng_alg {
+	int (*generate)(struct crypto_rng *, const u8 *, unsigned int, u8 *, unsigned int);
+	int (*seed)(struct crypto_rng *, const u8 *, unsigned int);
+	void (*set_ent)(struct crypto_rng *, const u8 *, unsigned int);
+	unsigned int seedsize;
+	struct crypto_alg base;
+};
+
+struct crypto_rng {
+	struct crypto_tfm base;
+};
+
+struct crypto_sync_skcipher;
+
+struct aead_geniv_ctx {
+	spinlock_t lock;
+	struct crypto_aead *child;
+	struct crypto_sync_skcipher *sknull;
+	u8 salt[0];
+};
+
+enum {
+	SKCIPHER_WALK_PHYS = 1,
+	SKCIPHER_WALK_SLOW = 2,
+	SKCIPHER_WALK_COPY = 4,
+	SKCIPHER_WALK_DIFF = 8,
+	SKCIPHER_WALK_SLEEP = 16,
+};
+
+struct skcipher_walk_buffer {
+	struct list_head entry;
+	struct scatter_walk dst;
+	unsigned int len;
+	u8 *data;
+	u8 buffer[0];
+};
+
+struct crypto_sync_skcipher {
+	struct crypto_skcipher base;
+};
+
+struct skcipher_instance {
+	void (*free)(struct skcipher_instance *);
+	union {
+		struct {
+			char head[64];
+			struct crypto_instance base;
+		} s;
+		struct skcipher_alg alg;
+	};
+};
+
+struct crypto_istat_cipher {
+	atomic64_t encrypt_cnt;
+	atomic64_t encrypt_tlen;
+	atomic64_t decrypt_cnt;
+	atomic64_t decrypt_tlen;
+	atomic64_t err_cnt;
+};
+
+struct crypto_cipher_spawn {
+	struct crypto_spawn base;
+};
+
+struct skcipher_ctx_simple {
+	struct crypto_cipher *cipher;
+};
+
+struct crypto_skcipher_spawn {
+	struct crypto_spawn base;
+};
+
+struct ahash_instance {
+	void (*free)(struct ahash_instance *);
+	union {
+		struct {
+			char head[96];
+			struct crypto_instance base;
+		} s;
+		struct ahash_alg alg;
+	};
+};
+
+struct crypto_hash_walk {
+	char *data;
+	unsigned int offset;
+	unsigned int alignmask;
+	struct page *pg;
+	unsigned int entrylen;
+	unsigned int total;
+	struct scatterlist *sg;
+	unsigned int flags;
+};
+
+struct crypto_ahash_spawn {
+	struct crypto_spawn base;
+};
+
+struct shash_instance {
+	void (*free)(struct shash_instance *);
+	union {
+		struct {
+			char head[120];
+			struct crypto_instance base;
+		} s;
+		struct shash_alg alg;
+	};
+};
+
+struct crypto_istat_hash {
+	atomic64_t hash_cnt;
+	atomic64_t hash_tlen;
+	atomic64_t err_cnt;
+};
+
+struct crypto_shash_spawn {
+	struct crypto_spawn base;
+};
+
+struct akcipher_instance {
+	void (*free)(struct akcipher_instance *);
+	union {
+		struct {
+			char head[72];
+			struct crypto_instance base;
+		} s;
+		struct akcipher_alg alg;
+	};
+};
+
+struct crypto_istat_akcipher {
+	atomic64_t encrypt_cnt;
+	atomic64_t encrypt_tlen;
+	atomic64_t decrypt_cnt;
+	atomic64_t decrypt_tlen;
+	atomic64_t verify_cnt;
+	atomic64_t sign_cnt;
+	atomic64_t err_cnt;
+};
+
+struct crypto_akcipher_sync_data {
+	struct crypto_akcipher *tfm;
+	const void *src;
+	void *dst;
+	unsigned int slen;
+	unsigned int dlen;
+	struct akcipher_request *req;
+	struct crypto_wait cwait;
+	struct scatterlist sg;
+	u8 *buf;
+};
+
+struct crypto_akcipher_spawn {
+	struct crypto_spawn base;
+};
+
+struct crypto_sig {
+	struct crypto_tfm base;
+};
+
+struct kpp_instance {
+	void (*free)(struct kpp_instance *);
+	union {
+		struct {
+			char head[48];
+			struct crypto_instance base;
+		} s;
+		struct kpp_alg alg;
+	};
+};
+
+struct crypto_istat_kpp {
+	atomic64_t setsecret_cnt;
+	atomic64_t generate_public_key_cnt;
+	atomic64_t compute_shared_secret_cnt;
+	atomic64_t err_cnt;
+};
+
+struct crypto_kpp_spawn {
+	struct crypto_spawn base;
+};
+
+typedef int (*asn1_action_t)(void *, size_t, unsigned char, const void *, size_t);
+
+struct asn1_decoder {
+	const unsigned char *machine;
+	size_t machlen;
+	const asn1_action_t *actions;
+};
+
+struct gcry_mpi;
+
+typedef struct gcry_mpi *MPI;
+
+struct rsa_mpi_key {
+	MPI n;
+	MPI e;
+	MPI d;
+	MPI p;
+	MPI q;
+	MPI dp;
+	MPI dq;
+	MPI qinv;
+};
+
+typedef unsigned long mpi_limb_t;
+
+struct gcry_mpi {
+	int alloced;
+	int nlimbs;
+	int nbits;
+	int sign;
+	unsigned int flags;
+	mpi_limb_t *d;
+};
+
+struct rsa_key {
+	const u8 *n;
+	const u8 *e;
+	const u8 *d;
+	const u8 *p;
+	const u8 *q;
+	const u8 *dp;
+	const u8 *dq;
+	const u8 *qinv;
+	size_t n_sz;
+	size_t e_sz;
+	size_t d_sz;
+	size_t p_sz;
+	size_t q_sz;
+	size_t dp_sz;
+	size_t dq_sz;
+	size_t qinv_sz;
+};
+
+struct rsa_asn1_template {
+	const char *name;
+	const u8 *data;
+	size_t size;
+};
+
+struct pkcs1pad_inst_ctx {
+	struct crypto_akcipher_spawn spawn;
+	const struct rsa_asn1_template *digest_info;
+};
+
+struct pkcs1pad_ctx {
+	struct crypto_akcipher *child;
+	unsigned int key_size;
+};
+
+struct pkcs1pad_request {
+	struct scatterlist in_sg[2];
+	struct scatterlist out_sg[1];
+	uint8_t *in_buf;
+	uint8_t *out_buf;
+	struct akcipher_request child_req;
+};
+
+struct acomp_req;
+
+struct crypto_acomp {
+	int (*compress)(struct acomp_req *);
+	int (*decompress)(struct acomp_req *);
+	void (*dst_free)(struct scatterlist *);
+	unsigned int reqsize;
+	struct crypto_tfm base;
+};
+
+struct acomp_req {
+	struct crypto_async_request base;
+	struct scatterlist *src;
+	struct scatterlist *dst;
+	unsigned int slen;
+	unsigned int dlen;
+	u32 flags;
+	void *__ctx[0];
+};
+
+struct comp_alg_common {
+	struct crypto_alg base;
+};
+
+struct acomp_alg {
+	int (*compress)(struct acomp_req *);
+	int (*decompress)(struct acomp_req *);
+	void (*dst_free)(struct scatterlist *);
+	int (*init)(struct crypto_acomp *);
+	void (*exit)(struct crypto_acomp *);
+	unsigned int reqsize;
+	union {
+		struct {
+			struct crypto_alg base;
+		};
+		struct comp_alg_common calg;
+	};
+};
+
+struct crypto_istat_compress {
+	atomic64_t compress_cnt;
+	atomic64_t compress_tlen;
+	atomic64_t decompress_cnt;
+	atomic64_t decompress_tlen;
+	atomic64_t err_cnt;
+};
+
+struct scomp_scratch {
+	spinlock_t lock;
+	void *src;
+	void *dst;
+};
+
+struct crypto_scomp;
+
+struct scomp_alg {
+	void * (*alloc_ctx)(struct crypto_scomp *);
+	void (*free_ctx)(struct crypto_scomp *, void *);
+	int (*compress)(struct crypto_scomp *, const u8 *, unsigned int, u8 *, unsigned int *, void *);
+	int (*decompress)(struct crypto_scomp *, const u8 *, unsigned int, u8 *, unsigned int *, void *);
+	union {
+		struct {
+			struct crypto_alg base;
+		};
+		struct comp_alg_common calg;
+	};
+};
+
+struct crypto_scomp {
+	struct crypto_tfm base;
+};
+
+struct cryptomgr_param {
+	struct rtattr *tb[34];
+	struct {
+		struct rtattr attr;
+		struct crypto_attr_type data;
+	} type;
+	struct {
+		struct rtattr attr;
+		struct crypto_attr_alg data;
+	} attrs[32];
+	char template[128];
+	struct crypto_larval *larval;
+	u32 otype;
+	u32 omask;
+};
+
+struct cmac_desc_ctx {
+	unsigned int len;
+	u8 ctx[0];
+};
+
+struct cmac_tfm_ctx {
+	struct crypto_cipher *child;
+	u8 ctx[0];
+};
+
+struct hmac_ctx {
+	struct crypto_shash *hash;
+};
+
+typedef u32 u_int32_t;
+
+struct xcbc_tfm_ctx {
+	struct crypto_cipher *child;
+	u8 ctx[0];
+};
+
+struct xcbc_desc_ctx {
+	unsigned int len;
+	u8 ctx[0];
+};
+
+struct md5_state {
+	u32 hash[4];
+	u32 block[16];
+	u64 byte_count;
+};
+
+struct sha1_state;
+
+typedef void sha1_block_fn(struct sha1_state *, const u8 *, int);
+
+struct sha1_state {
+	u32 state[5];
+	u64 count;
+	u8 buffer[64];
+};
+
+struct sha3_state {
+	u64 st[25];
+	unsigned int rsiz;
+	unsigned int rsizw;
+	unsigned int partial;
+	u8 buf[144];
+};
+
+enum blake2b_lengths {
+	BLAKE2B_BLOCK_SIZE = 128,
+	BLAKE2B_HASH_SIZE = 64,
+	BLAKE2B_KEY_SIZE = 64,
+	BLAKE2B_160_HASH_SIZE = 20,
+	BLAKE2B_256_HASH_SIZE = 32,
+	BLAKE2B_384_HASH_SIZE = 48,
+	BLAKE2B_512_HASH_SIZE = 64,
+};
+
+enum blake2b_iv {
+	BLAKE2B_IV0 = 7640891576956012808ULL,
+	BLAKE2B_IV1 = 13503953896175478587ULL,
+	BLAKE2B_IV2 = 4354685564936845355ULL,
+	BLAKE2B_IV3 = 11912009170470909681ULL,
+	BLAKE2B_IV4 = 5840696475078001361ULL,
+	BLAKE2B_IV5 = 11170449401992604703ULL,
+	BLAKE2B_IV6 = 2270897969802886507ULL,
+	BLAKE2B_IV7 = 6620516959819538809ULL,
+};
+
+struct blake2b_state {
+	u64 h[8];
+	u64 t[2];
+	u64 f[2];
+	u8 buf[128];
+	unsigned int buflen;
+	unsigned int outlen;
+};
+
+typedef void (*blake2b_compress_t)(struct blake2b_state *, const u8 *, size_t, u32);
+
+struct blake2b_tfm_ctx {
+	u8 key[64];
+	unsigned int keylen;
+};
+
+struct crypto_cts_reqctx {
+	struct scatterlist sg[2];
+	unsigned int offset;
+	struct skcipher_request subreq;
+};
+
+struct crypto_cts_ctx {
+	struct crypto_skcipher *child;
+};
+
+struct xts_instance_ctx {
+	struct crypto_skcipher_spawn spawn;
+	struct crypto_cipher_spawn tweak_spawn;
+};
+
+typedef struct {
+	__le64 b;
+	__le64 a;
+} le128;
+
+struct xts_request_ctx {
+	le128 t;
+	struct scatterlist *tail;
+	struct scatterlist sg[2];
+	struct skcipher_request subreq;
+};
+
+struct xts_tfm_ctx {
+	struct crypto_skcipher *child;
+	struct crypto_cipher *tweak;
+};
+
+struct crypto_rfc3686_ctx {
+	struct crypto_skcipher *child;
+	u8 nonce[4];
+};
+
+struct crypto_rfc3686_req_ctx {
+	u8 iv[16];
+	struct skcipher_request subreq;
+};
+
+struct hctr2_instance_ctx {
+	struct crypto_cipher_spawn blockcipher_spawn;
+	struct crypto_skcipher_spawn xctr_spawn;
+	struct crypto_shash_spawn polyval_spawn;
+};
+
+struct hctr2_tfm_ctx {
+	struct crypto_cipher *blockcipher;
+	struct crypto_skcipher *xctr;
+	struct crypto_shash *polyval;
+	u8 L[16];
+	int hashed_tweak_offset;
+};
+
+struct hctr2_request_ctx {
+	u8 first_block[16];
+	u8 xctr_iv[16];
+	struct scatterlist *bulk_part_dst;
+	struct scatterlist *bulk_part_src;
+	struct scatterlist sg_src[2];
+	struct scatterlist sg_dst[2];
+	union {
+		struct shash_desc hash_desc;
+		struct skcipher_request xctr_req;
+	} u;
+};
+
+struct sg_page_iter {
+	struct scatterlist *sg;
+	unsigned int sg_pgoffset;
+	unsigned int __nents;
+	int __pg_advance;
+};
+
+struct sg_mapping_iter {
+	struct page *page;
+	void *addr;
+	size_t length;
+	size_t consumed;
+	struct sg_page_iter piter;
+	unsigned int __offset;
+	unsigned int __remaining;
+	unsigned int __flags;
+};
+
+struct adiantum_instance_ctx {
+	struct crypto_skcipher_spawn streamcipher_spawn;
+	struct crypto_cipher_spawn blockcipher_spawn;
+	struct crypto_shash_spawn hash_spawn;
+};
+
+struct adiantum_request_ctx {
+	union {
+		u8 bytes[32];
+		__le32 words[8];
+		le128 bignum;
+	} rbuf;
+	bool enc;
+	le128 header_hash;
+	union {
+		struct shash_desc hash_desc;
+		struct skcipher_request streamcipher_req;
+	} u;
+};
+
+struct adiantum_tfm_ctx {
+	struct crypto_skcipher *streamcipher;
+	struct crypto_cipher *blockcipher;
+	struct crypto_shash *hash;
+	struct poly1305_core_key header_hash_key;
+};
+
+struct nhpoly1305_state {
+	struct poly1305_state poly_state;
+	u8 buffer[16];
+	unsigned int buflen;
+	unsigned int nh_remaining;
+	__le64 nh_hash[4];
+};
+
+struct nhpoly1305_key {
+	struct poly1305_core_key poly_key;
+	u32 nh_key[268];
+};
+
+typedef void (*nh_t)(const u32 *, const u8 *, size_t, __le64 *);
+
+struct crypto_rfc4543_instance_ctx {
+	struct crypto_aead_spawn aead;
+};
+
+struct gcm_instance_ctx {
+	struct crypto_skcipher_spawn ctr;
+	struct crypto_ahash_spawn ghash;
+};
+
+struct crypto_gcm_ghash_ctx {
+	unsigned int cryptlen;
+	struct scatterlist *src;
+	int (*complete)(struct aead_request *, u32);
+};
+
+struct crypto_gcm_req_priv_ctx {
+	u8 iv[16];
+	u8 auth_tag[16];
+	u8 iauth_tag[16];
+	struct scatterlist src[3];
+	struct scatterlist dst[3];
+	struct scatterlist sg;
+	struct crypto_gcm_ghash_ctx ghash_ctx;
+	union {
+		struct ahash_request ahreq;
+		struct skcipher_request skreq;
+	} u;
+};
+
+struct crypto_gcm_ctx {
+	struct crypto_skcipher *ctr;
+	struct crypto_ahash *ghash;
+};
+
+struct crypto_rfc4543_ctx {
+	struct crypto_aead *child;
+	struct crypto_sync_skcipher *null;
+	u8 nonce[4];
+};
+
+struct crypto_rfc4106_ctx {
+	struct crypto_aead *child;
+	u8 nonce[4];
+};
+
+struct crypto_rfc4106_req_ctx {
+	struct scatterlist src[3];
+	struct scatterlist dst[3];
+	struct aead_request subreq;
+};
+
+struct crypto_rfc4543_req_ctx {
+	struct aead_request subreq;
+};
+
+struct ccm_instance_ctx {
+	struct crypto_skcipher_spawn ctr;
+	struct crypto_ahash_spawn mac;
+};
+
+struct crypto_ccm_req_priv_ctx {
+	u8 odata[16];
+	u8 idata[16];
+	u8 auth_tag[16];
+	u32 flags;
+	struct scatterlist src[3];
+	struct scatterlist dst[3];
+	union {
+		struct ahash_request ahreq;
+		struct skcipher_request skreq;
+	};
+};
+
+struct cbcmac_tfm_ctx {
+	struct crypto_cipher *child;
+};
+
+struct cbcmac_desc_ctx {
+	unsigned int len;
+};
+
+struct crypto_ccm_ctx {
+	struct crypto_ahash *mac;
+	struct crypto_skcipher *ctr;
+};
+
+struct crypto_rfc4309_ctx {
+	struct crypto_aead *child;
+	u8 nonce[3];
+};
+
+struct crypto_rfc4309_req_ctx {
+	struct scatterlist src[3];
+	struct scatterlist dst[3];
+	struct aead_request subreq;
+};
+
+struct chachapoly_instance_ctx {
+	struct crypto_skcipher_spawn chacha;
+	struct crypto_ahash_spawn poly;
+	unsigned int saltlen;
+};
+
+struct chacha_req {
+	u8 iv[16];
+	struct scatterlist src[1];
+	struct skcipher_request req;
+};
+
+struct poly_req {
+	u8 pad[16];
+	struct {
+		__le64 assoclen;
+		__le64 cryptlen;
+	} tail;
+	struct scatterlist src[1];
+	struct ahash_request req;
+};
+
+struct chachapoly_req_ctx {
+	struct scatterlist src[2];
+	struct scatterlist dst[2];
+	u8 key[32];
+	u8 tag[16];
+	unsigned int cryptlen;
+	unsigned int assoclen;
+	u32 flags;
+	union {
+		struct poly_req poly;
+		struct chacha_req chacha;
+	} u;
+};
+
+struct chachapoly_ctx {
+	struct crypto_skcipher *chacha;
+	struct crypto_ahash *poly;
+	unsigned int saltlen;
+	u8 salt[0];
+};
+
+struct des_ctx {
+	u32 expkey[32];
+};
+
+struct des3_ede_ctx {
+	u32 expkey[96];
+};
+
+struct deflate_ctx {
+	struct z_stream_s comp_stream;
+	struct z_stream_s decomp_stream;
+};
+
+struct chksum_desc_ctx {
+	u32 crc;
+};
+
+struct chksum_ctx {
+	u32 key;
+};
+
+enum {
+	CRYPTO_AUTHENC_KEYA_UNSPEC = 0,
+	CRYPTO_AUTHENC_KEYA_PARAM = 1,
+};
+
+struct authenc_instance_ctx {
+	struct crypto_ahash_spawn auth;
+	struct crypto_skcipher_spawn enc;
+	unsigned int reqoff;
+};
+
+struct crypto_authenc_keys {
+	const u8 *authkey;
+	const u8 *enckey;
+	unsigned int authkeylen;
+	unsigned int enckeylen;
+};
+
+struct crypto_authenc_key_param {
+	__be32 enckeylen;
+};
+
+struct crypto_authenc_ctx {
+	struct crypto_ahash *auth;
+	struct crypto_skcipher *enc;
+	struct crypto_sync_skcipher *null;
+};
+
+struct authenc_request_ctx {
+	struct scatterlist src[2];
+	struct scatterlist dst[2];
+	char tail[0];
+};
+
+struct authenc_esn_instance_ctx {
+	struct crypto_ahash_spawn auth;
+	struct crypto_skcipher_spawn enc;
+};
+
+struct crypto_authenc_esn_ctx {
+	unsigned int reqoff;
+	struct crypto_ahash *auth;
+	struct crypto_skcipher *enc;
+	struct crypto_sync_skcipher *null;
+};
+
+struct authenc_esn_request_ctx {
+	struct scatterlist src[2];
+	struct scatterlist dst[2];
+	char tail[0];
+};
+
+struct lzo_ctx {
+	void *lzo_comp_mem;
+};
+
+struct lzorle_ctx {
+	void *lzorle_comp_mem;
+};
+
+struct lz4_ctx {
+	void *lz4_comp_mem;
+};
+
+struct crypto_istat_rng {
+	atomic64_t generate_cnt;
+	atomic64_t generate_tlen;
+	atomic64_t seed_cnt;
+	atomic64_t err_cnt;
+};
+
+struct prng_context {
+	spinlock_t prng_lock;
+	unsigned char rand_data[16];
+	unsigned char last_rand_data[16];
+	unsigned char DT[16];
+	unsigned char I[16];
+	unsigned char V[16];
+	u32 rand_data_valid;
+	struct crypto_cipher *tfm;
+	u32 flags;
+};
+
+struct drbg_state;
+
+struct drbg_state_ops {
+	int (*update)(struct drbg_state *, struct list_head *, int);
+	int (*generate)(struct drbg_state *, unsigned char *, unsigned int, struct list_head *);
+	int (*crypto_init)(struct drbg_state *);
+	int (*crypto_fini)(struct drbg_state *);
+};
+
+enum drbg_seed_state {
+	DRBG_SEED_STATE_UNSEEDED = 0,
+	DRBG_SEED_STATE_PARTIAL = 1,
+	DRBG_SEED_STATE_FULL = 2,
+};
+
+struct drbg_string {
+	const unsigned char *buf;
+	size_t len;
+	struct list_head list;
+};
+
+struct drbg_core;
+
+struct drbg_state {
+	struct mutex drbg_mutex;
+	unsigned char *V;
+	unsigned char *Vbuf;
+	unsigned char *C;
+	unsigned char *Cbuf;
+	size_t reseed_ctr;
+	size_t reseed_threshold;
+	unsigned char *scratchpad;
+	unsigned char *scratchpadbuf;
+	void *priv_data;
+	struct crypto_skcipher *ctr_handle;
+	struct skcipher_request *ctr_req;
+	__u8 *outscratchpadbuf;
+	__u8 *outscratchpad;
+	struct crypto_wait ctr_wait;
+	struct scatterlist sg_in;
+	struct scatterlist sg_out;
+	enum drbg_seed_state seeded;
+	unsigned long last_seed_time;
+	bool pr;
+	bool fips_primed;
+	unsigned char *prev;
+	struct crypto_rng *jent;
+	const struct drbg_state_ops *d_ops;
+	const struct drbg_core *core;
+	struct drbg_string test_data;
+};
+
+typedef uint32_t drbg_flag_t;
+
+struct drbg_core {
+	drbg_flag_t flags;
+	__u8 statelen;
+	__u8 blocklen_bytes;
+	char cra_name[128];
+	char backend_cra_name[128];
+};
+
+enum drbg_prefixes {
+	DRBG_PREFIX0 = 0,
+	DRBG_PREFIX1 = 1,
+	DRBG_PREFIX2 = 2,
+	DRBG_PREFIX3 = 3,
+};
+
+struct sdesc {
+	struct shash_desc shash;
+	char ctx[0];
+};
+
+typedef unsigned char u8___2;
+
+struct rand_data {
+	void *hash_state;
+	__u64 prev_time;
+	__u64 last_delta;
+	__s64 last_delta2;
+	unsigned int osr;
+	unsigned char *mem;
+	unsigned int memlocation;
+	unsigned int memblocks;
+	unsigned int memblocksize;
+	unsigned int memaccessloops;
+	unsigned int rct_count;
+	unsigned int apt_observations;
+	unsigned int apt_count;
+	unsigned int apt_base;
+	unsigned int apt_base_set: 1;
+};
+
+struct jitterentropy {
+	spinlock_t jent_lock;
+	struct rand_data *entropy_collector;
+	struct crypto_shash *tfm;
+	struct shash_desc *sdesc;
+};
+
+struct gf128mul_4k {
+	be128 t[256];
+};
+
+struct ghash_ctx {
+	struct gf128mul_4k *gf128;
+};
+
+struct ghash_desc_ctx___2 {
+	u8 buffer[16];
+	u32 bytes;
+};
+
+struct polyval_desc_ctx___2 {
+	union {
+		u8 buffer[16];
+		be128 buffer128;
+	};
+	u32 bytes;
+};
+
+struct polyval_tfm_ctx___2 {
+	struct gf128mul_4k *gf128;
+};
+
+typedef ZSTD_CCtx zstd_cctx;
+
+typedef ZSTD_DCtx zstd_dctx;
+
+struct zstd_ctx {
+	zstd_cctx *cctx;
+	zstd_dctx *dctx;
+	void *cwksp;
+	void *dwksp;
+};
+
+struct ecc_point {
+	u64 *x;
+	u64 *y;
+	u8 ndigits;
+};
+
+struct ecc_curve {
+	char *name;
+	struct ecc_point g;
+	u64 *p;
+	u64 *n;
+	u64 *a;
+	u64 *b;
+};
+
+typedef struct {
+	u64 m_low;
+	u64 m_high;
+} uint128_t;
+
+struct essiv_tfm_ctx {
+	union {
+		struct crypto_skcipher *skcipher;
+		struct crypto_aead *aead;
+	} u;
+	struct crypto_cipher *essiv_cipher;
+	struct crypto_shash *hash;
+	int ivoffset;
+};
+
+struct essiv_instance_ctx {
+	union {
+		struct crypto_skcipher_spawn skcipher_spawn;
+		struct crypto_aead_spawn aead_spawn;
+	} u;
+	char essiv_cipher_name[128];
+	char shash_driver_name[128];
+};
+
+struct essiv_aead_request_ctx {
+	struct scatterlist sg[4];
+	u8 *assoc;
+	struct aead_request aead_req;
+};
+
+struct ecdh {
+	char *key;
+	unsigned short key_size;
+};
+
+struct ecdh_ctx {
+	unsigned int curve_id;
+	unsigned int ndigits;
+	u64 private_key[8];
+};
+
+enum {
+	CRYPTO_KPP_SECRET_TYPE_UNKNOWN = 0,
+	CRYPTO_KPP_SECRET_TYPE_DH = 1,
+	CRYPTO_KPP_SECRET_TYPE_ECDH = 2,
+};
+
+struct kpp_secret {
+	unsigned short type;
+	unsigned short len;
+};
+
+enum asymmetric_payload_bits {
+	asym_crypto = 0,
+	asym_subtype = 1,
+	asym_key_ids = 2,
+	asym_auth = 3,
+};
+
+struct asymmetric_key_parser {
+	struct list_head link;
+	struct module *owner;
+	const char *name;
+	int (*parse)(struct key_preparsed_payload *);
+};
+
+struct asymmetric_key_ids {
+	void *id[3];
+};
+
+struct asymmetric_key_id {
+	unsigned short len;
+	unsigned char data[0];
+};
+
+struct public_key_signature;
+
+struct asymmetric_key_subtype {
+	struct module *owner;
+	const char *name;
+	unsigned short name_len;
+	void (*describe)(const struct key *, struct seq_file *);
+	void (*destroy)(void *, void *);
+	int (*query)(const struct kernel_pkey_params *, struct kernel_pkey_query *);
+	int (*eds_op)(struct kernel_pkey_params *, const void *, void *);
+	int (*verify_signature)(const struct key *, const struct public_key_signature *);
+};
+
+struct public_key_signature {
+	struct asymmetric_key_id *auth_ids[3];
+	u8 *s;
+	u8 *digest;
+	u32 s_size;
+	u32 digest_size;
+	const char *pkey_algo;
+	const char *hash_algo;
+	const char *encoding;
+};
+
+struct public_key {
+	void *key;
+	u32 keylen;
+	enum OID algo;
+	void *params;
+	u32 paramlen;
+	bool key_is_private;
+	const char *id_type;
+	const char *pkey_algo;
+	unsigned long key_eflags;
+};
+
+enum asn1_tag {
+	ASN1_EOC = 0,
+	ASN1_BOOL = 1,
+	ASN1_INT = 2,
+	ASN1_BTS = 3,
+	ASN1_OTS = 4,
+	ASN1_NULL = 5,
+	ASN1_OID = 6,
+	ASN1_ODE = 7,
+	ASN1_EXT = 8,
+	ASN1_REAL = 9,
+	ASN1_ENUM = 10,
+	ASN1_EPDV = 11,
+	ASN1_UTF8STR = 12,
+	ASN1_RELOID = 13,
+	ASN1_SEQ = 16,
+	ASN1_SET = 17,
+	ASN1_NUMSTR = 18,
+	ASN1_PRNSTR = 19,
+	ASN1_TEXSTR = 20,
+	ASN1_VIDSTR = 21,
+	ASN1_IA5STR = 22,
+	ASN1_UNITIM = 23,
+	ASN1_GENTIM = 24,
+	ASN1_GRASTR = 25,
+	ASN1_VISSTR = 26,
+	ASN1_GENSTR = 27,
+	ASN1_UNISTR = 28,
+	ASN1_CHRSTR = 29,
+	ASN1_BMPSTR = 30,
+	ASN1_LONG_TAG = 31,
+};
+
+struct x509_certificate {
+	struct x509_certificate *next;
+	struct x509_certificate *signer;
+	struct public_key *pub;
+	struct public_key_signature *sig;
+	char *issuer;
+	char *subject;
+	struct asymmetric_key_id *id;
+	struct asymmetric_key_id *skid;
+	time64_t valid_from;
+	time64_t valid_to;
+	const void *tbs;
+	unsigned int tbs_size;
+	unsigned int raw_sig_size;
+	const void *raw_sig;
+	const void *raw_serial;
+	unsigned int raw_serial_size;
+	unsigned int raw_issuer_size;
+	const void *raw_issuer;
+	const void *raw_subject;
+	unsigned int raw_subject_size;
+	unsigned int raw_skid_size;
+	const void *raw_skid;
+	unsigned int index;
+	bool seen;
+	bool verified;
+	bool self_signed;
+	bool unsupported_sig;
+	bool blacklisted;
+};
+
+struct x509_parse_context {
+	struct x509_certificate *cert;
+	unsigned long data;
+	const void *key;
+	size_t key_size;
+	const void *params;
+	size_t params_size;
+	enum OID key_algo;
+	enum OID last_oid;
+	enum OID sig_algo;
+	u8 o_size;
+	u8 cn_size;
+	u8 email_size;
+	u16 o_offset;
+	u16 cn_offset;
+	u16 email_offset;
+	unsigned int raw_akid_size;
+	const void *raw_akid;
+	const void *akid_raw_issuer;
+	unsigned int akid_raw_issuer_size;
+};
+
+enum blacklist_hash_type {
+	BLACKLIST_HASH_X509_TBS = 1,
+	BLACKLIST_HASH_BINARY = 2,
+};
+
+enum asn1_class {
+	ASN1_UNIV = 0,
+	ASN1_APPL = 1,
+	ASN1_CONT = 2,
+	ASN1_PRIV = 3,
+};
+
+struct pkcs7_signed_info {
+	struct pkcs7_signed_info *next;
+	struct x509_certificate *signer;
+	unsigned int index;
+	bool unsupported_crypto;
+	bool blacklisted;
+	const void *msgdigest;
+	unsigned int msgdigest_len;
+	unsigned int authattrs_len;
+	const void *authattrs;
+	unsigned long aa_set;
+	time64_t signing_time;
+	struct public_key_signature *sig;
+};
+
+struct pkcs7_parse_context {
+	struct pkcs7_message *msg;
+	struct pkcs7_signed_info *sinfo;
+	struct pkcs7_signed_info **ppsinfo;
+	struct x509_certificate *certs;
+	struct x509_certificate **ppcerts;
+	unsigned long data;
+	enum OID last_oid;
+	unsigned int x509_index;
+	unsigned int sinfo_index;
+	const void *raw_serial;
+	unsigned int raw_serial_size;
+	unsigned int raw_issuer_size;
+	const void *raw_issuer;
+	const void *raw_skid;
+	unsigned int raw_skid_size;
+	bool expect_skid;
+};
+
+enum {
+	DISK_EVENT_FLAG_POLL = 1,
+	DISK_EVENT_FLAG_UEVENT = 2,
+	DISK_EVENT_FLAG_BLOCK_ON_EXCL_WRITE = 4,
+};
+
+enum {
+	DISK_EVENT_MEDIA_CHANGE = 1,
+	DISK_EVENT_EJECT_REQUEST = 2,
+};
+
+struct bdev_inode {
+	struct block_device bdev;
+	struct inode vfs_inode;
+};
+
+enum {
+	DIO_SHOULD_DIRTY = 1,
+	DIO_IS_SYNC = 2,
+};
+
+struct blkdev_dio {
+	union {
+		struct kiocb *iocb;
+		struct task_struct *waiter;
+	};
+	size_t size;
+	atomic_t ref;
+	unsigned int flags;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct bio bio;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+enum rq_qos_id {
+	RQ_QOS_WBT = 0,
+	RQ_QOS_LATENCY = 1,
+	RQ_QOS_COST = 2,
+};
+
+struct rq_qos_ops;
+
+struct rq_qos {
+	const struct rq_qos_ops *ops;
+	struct gendisk *disk;
+	enum rq_qos_id id;
+	struct rq_qos *next;
+	struct dentry *debugfs_dir;
+};
+
+struct blk_mq_debugfs_attr;
+
+struct rq_qos_ops {
+	void (*throttle)(struct rq_qos *, struct bio *);
+	void (*track)(struct rq_qos *, struct request *, struct bio *);
+	void (*merge)(struct rq_qos *, struct request *, struct bio *);
+	void (*issue)(struct rq_qos *, struct request *);
+	void (*requeue)(struct rq_qos *, struct request *);
+	void (*done)(struct rq_qos *, struct request *);
+	void (*done_bio)(struct rq_qos *, struct bio *);
+	void (*cleanup)(struct rq_qos *, struct bio *);
+	void (*queue_depth_changed)(struct rq_qos *);
+	void (*exit)(struct rq_qos *);
+	const struct blk_mq_debugfs_attr *debugfs_attrs;
+};
+
+struct blk_mq_debugfs_attr {
+	const char *name;
+	umode_t mode;
+	int (*show)(void *, struct seq_file *);
+	ssize_t (*write)(void *, const char __attribute__((btf_type_tag("user"))) *, size_t, loff_t *);
+	const struct seq_operations *seq_ops;
+};
+
+struct blkg_iostat {
+	u64 bytes[3];
+	u64 ios[3];
+};
+
+struct blkg_iostat_set {
+	struct u64_stats_sync sync;
+	struct blkcg_gq *blkg;
+	struct llist_node lnode;
+	int lqueued;
+	struct blkg_iostat cur;
+	struct blkg_iostat last;
+};
+
+struct blkcg;
+
+struct blkg_policy_data;
+
+struct blkcg_gq {
+	struct request_queue *q;
+	struct list_head q_node;
+	struct hlist_node blkcg_node;
+	struct blkcg *blkcg;
+	struct blkcg_gq *parent;
+	struct percpu_ref refcnt;
+	bool online;
+	struct blkg_iostat_set __attribute__((btf_type_tag("percpu"))) *iostat_cpu;
+	struct blkg_iostat_set iostat;
+	struct blkg_policy_data *pd[6];
+	union {
+		struct work_struct async_bio_work;
+		struct work_struct free_work;
+	};
+	atomic_t use_delay;
+	atomic64_t delay_nsec;
+	atomic64_t delay_start;
+	u64 last_delay;
+	int last_use;
+	struct callback_head callback_head;
+	u64 android_oem_data1;
+};
+
+struct blkcg_policy_data;
+
+struct blkcg {
+	struct cgroup_subsys_state css;
+	spinlock_t lock;
+	refcount_t online_pin;
+	struct xarray blkg_tree;
+	struct blkcg_gq __attribute__((btf_type_tag("rcu"))) *blkg_hint;
+	struct hlist_head blkg_list;
+	struct blkcg_policy_data *cpd[6];
+	struct list_head all_blkcgs_node;
+	struct llist_head __attribute__((btf_type_tag("percpu"))) *lhead;
+	struct list_head cgwb_list;
+	u64 android_oem_data1;
+};
+
+struct blkcg_policy_data {
+	struct blkcg *blkcg;
+	int plid;
+};
+
+struct blkg_policy_data {
+	struct blkcg_gq *blkg;
+	int plid;
+	bool online;
+};
+
+struct biovec_slab {
+	int nr_vecs;
+	char *name;
+	struct kmem_cache *slab;
+};
+
+struct bio_slab {
+	struct kmem_cache *slab;
+	unsigned int slab_ref;
+	unsigned int slab_size;
+	char name[8];
+};
+
+struct elevator_type;
+
+struct elevator_queue {
+	struct elevator_type *type;
+	void *elevator_data;
+	struct kobject kobj;
+	struct mutex sysfs_lock;
+	unsigned long flags;
+	struct hlist_head hash[64];
+};
+
+enum elv_merge {
+	ELEVATOR_NO_MERGE = 0,
+	ELEVATOR_FRONT_MERGE = 1,
+	ELEVATOR_BACK_MERGE = 2,
+	ELEVATOR_DISCARD_MERGE = 3,
+};
+
+typedef unsigned int blk_insert_t;
+
+struct blk_mq_alloc_data;
+
+struct elevator_mq_ops {
+	int (*init_sched)(struct request_queue *, struct elevator_type *);
+	void (*exit_sched)(struct elevator_queue *);
+	int (*init_hctx)(struct blk_mq_hw_ctx *, unsigned int);
+	void (*exit_hctx)(struct blk_mq_hw_ctx *, unsigned int);
+	void (*depth_updated)(struct blk_mq_hw_ctx *);
+	bool (*allow_merge)(struct request_queue *, struct request *, struct bio *);
+	bool (*bio_merge)(struct request_queue *, struct bio *, unsigned int);
+	int (*request_merge)(struct request_queue *, struct request **, struct bio *);
+	void (*request_merged)(struct request_queue *, struct request *, enum elv_merge);
+	void (*requests_merged)(struct request_queue *, struct request *, struct request *);
+	void (*limit_depth)(blk_opf_t, struct blk_mq_alloc_data *);
+	void (*prepare_request)(struct request *);
+	void (*finish_request)(struct request *);
+	void (*insert_requests)(struct blk_mq_hw_ctx *, struct list_head *, blk_insert_t);
+	struct request * (*dispatch_request)(struct blk_mq_hw_ctx *);
+	bool (*has_work)(struct blk_mq_hw_ctx *);
+	void (*completed_request)(struct request *, u64);
+	void (*requeue_request)(struct request *);
+	struct request * (*former_request)(struct request_queue *, struct request *);
+	struct request * (*next_request)(struct request_queue *, struct request *);
+	void (*init_icq)(struct io_cq *);
+	void (*exit_icq)(struct io_cq *);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct elv_fs_entry;
+
+struct elevator_type {
+	struct kmem_cache *icq_cache;
+	struct elevator_mq_ops ops;
+	size_t icq_size;
+	size_t icq_align;
+	struct elv_fs_entry *elevator_attrs;
+	const char *elevator_name;
+	const char *elevator_alias;
+	const unsigned int elevator_features;
+	struct module *elevator_owner;
+	const struct blk_mq_debugfs_attr *queue_debugfs_attrs;
+	const struct blk_mq_debugfs_attr *hctx_debugfs_attrs;
+	char icq_cache_name[22];
+	struct list_head list;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct blk_mq_ctxs {
+	struct kobject kobj;
+	struct blk_mq_ctx __attribute__((btf_type_tag("percpu"))) *queue_ctx;
+};
+
+typedef __u32 blk_mq_req_flags_t;
+
+struct blk_mq_alloc_data {
+	struct request_queue *q;
+	blk_mq_req_flags_t flags;
+	unsigned int shallow_depth;
+	blk_opf_t cmd_flags;
+	req_flags_t rq_flags;
+	unsigned int nr_tags;
+	struct request **cached_rq;
+	struct blk_mq_ctx *ctx;
+	struct blk_mq_hw_ctx *hctx;
+};
+
+struct elv_fs_entry {
+	struct attribute attr;
+	ssize_t (*show)(struct elevator_queue *, char *);
+	ssize_t (*store)(struct elevator_queue *, const char *, size_t);
+};
+
+enum {
+	BLK_MQ_F_SHOULD_MERGE = 1,
+	BLK_MQ_F_TAG_QUEUE_SHARED = 2,
+	BLK_MQ_F_STACKING = 4,
+	BLK_MQ_F_TAG_HCTX_SHARED = 8,
+	BLK_MQ_F_BLOCKING = 32,
+	BLK_MQ_F_NO_SCHED = 64,
+	BLK_MQ_F_NO_SCHED_BY_DEFAULT = 128,
+	BLK_MQ_F_ALLOC_POLICY_START_BIT = 8,
+	BLK_MQ_F_ALLOC_POLICY_BITS = 1,
+	BLK_MQ_S_STOPPED = 0,
+	BLK_MQ_S_TAG_ACTIVE = 1,
+	BLK_MQ_S_SCHED_RESTART = 2,
+	BLK_MQ_S_INACTIVE = 3,
+	BLK_MQ_MAX_DEPTH = 10240,
+	BLK_MQ_CPU_WORK_BATCH = 8,
+};
+
+typedef void (*btf_trace_block_touch_buffer)(void *, struct buffer_head *);
+
+typedef void (*btf_trace_block_dirty_buffer)(void *, struct buffer_head *);
+
+typedef void (*btf_trace_block_rq_requeue)(void *, struct request *);
+
+typedef void (*btf_trace_block_rq_complete)(void *, struct request *, blk_status_t, unsigned int);
+
+typedef void (*btf_trace_block_rq_error)(void *, struct request *, blk_status_t, unsigned int);
+
+typedef void (*btf_trace_block_rq_insert)(void *, struct request *);
+
+typedef void (*btf_trace_block_rq_issue)(void *, struct request *);
+
+typedef void (*btf_trace_block_rq_merge)(void *, struct request *);
+
+typedef void (*btf_trace_block_io_start)(void *, struct request *);
+
+typedef void (*btf_trace_block_io_done)(void *, struct request *);
+
+typedef void (*btf_trace_block_bio_complete)(void *, struct request_queue *, struct bio *);
+
+typedef void (*btf_trace_block_bio_bounce)(void *, struct bio *);
+
+typedef void (*btf_trace_block_bio_backmerge)(void *, struct bio *);
+
+typedef void (*btf_trace_block_bio_frontmerge)(void *, struct bio *);
+
+typedef void (*btf_trace_block_bio_queue)(void *, struct bio *);
+
+typedef void (*btf_trace_block_getrq)(void *, struct bio *);
+
+typedef void (*btf_trace_block_plug)(void *, struct request_queue *);
+
+typedef void (*btf_trace_block_unplug)(void *, struct request_queue *, unsigned int, bool);
+
+typedef void (*btf_trace_block_split)(void *, struct bio *, unsigned int);
+
+typedef void (*btf_trace_block_bio_remap)(void *, struct bio *, dev_t, sector_t);
+
+typedef void (*btf_trace_block_rq_remap)(void *, struct request *, dev_t, sector_t);
+
+enum {
+	BLK_MQ_REQ_NOWAIT = 1,
+	BLK_MQ_REQ_RESERVED = 2,
+	BLK_MQ_REQ_PM = 4,
+};
+
+enum blkg_rwstat_type {
+	BLKG_RWSTAT_READ = 0,
+	BLKG_RWSTAT_WRITE = 1,
+	BLKG_RWSTAT_SYNC = 2,
+	BLKG_RWSTAT_ASYNC = 3,
+	BLKG_RWSTAT_DISCARD = 4,
+	BLKG_RWSTAT_NR = 5,
+	BLKG_RWSTAT_TOTAL = 5,
+};
+
+struct blk_plug_cb;
+
+typedef void (*blk_plug_cb_fn)(struct blk_plug_cb *, bool);
+
+struct blk_plug_cb {
+	struct list_head list;
+	blk_plug_cb_fn callback;
+	void *data;
+};
+
+struct trace_event_raw_block_buffer {
+	struct trace_entry ent;
+	dev_t dev;
+	sector_t sector;
+	size_t size;
+	char __data[0];
+};
+
+struct trace_event_raw_block_rq_requeue {
+	struct trace_entry ent;
+	dev_t dev;
+	sector_t sector;
+	unsigned int nr_sector;
+	unsigned short ioprio;
+	char rwbs[10];
+	u32 __data_loc_cmd;
+	char __data[0];
+};
+
+struct trace_event_raw_block_rq_completion {
+	struct trace_entry ent;
+	dev_t dev;
+	sector_t sector;
+	unsigned int nr_sector;
+	int error;
+	unsigned short ioprio;
+	char rwbs[10];
+	u32 __data_loc_cmd;
+	char __data[0];
+};
+
+struct trace_event_raw_block_rq {
+	struct trace_entry ent;
+	dev_t dev;
+	sector_t sector;
+	unsigned int nr_sector;
+	unsigned int bytes;
+	unsigned short ioprio;
+	char rwbs[10];
+	char comm[16];
+	u32 __data_loc_cmd;
+	char __data[0];
+};
+
+struct trace_event_raw_block_bio_complete {
+	struct trace_entry ent;
+	dev_t dev;
+	sector_t sector;
+	unsigned int nr_sector;
+	int error;
+	char rwbs[10];
+	char __data[0];
+};
+
+struct trace_event_raw_block_bio {
+	struct trace_entry ent;
+	dev_t dev;
+	sector_t sector;
+	unsigned int nr_sector;
+	char rwbs[10];
+	char comm[16];
+	char __data[0];
+};
+
+struct trace_event_raw_block_plug {
+	struct trace_entry ent;
+	char comm[16];
+	char __data[0];
+};
+
+struct trace_event_raw_block_unplug {
+	struct trace_entry ent;
+	int nr_rq;
+	char comm[16];
+	char __data[0];
+};
+
+struct trace_event_raw_block_split {
+	struct trace_entry ent;
+	dev_t dev;
+	sector_t sector;
+	sector_t new_sector;
+	char rwbs[10];
+	char comm[16];
+	char __data[0];
+};
+
+struct trace_event_raw_block_bio_remap {
+	struct trace_entry ent;
+	dev_t dev;
+	sector_t sector;
+	unsigned int nr_sector;
+	dev_t old_dev;
+	sector_t old_sector;
+	char rwbs[10];
+	char __data[0];
+};
+
+struct trace_event_raw_block_rq_remap {
+	struct trace_entry ent;
+	dev_t dev;
+	sector_t sector;
+	unsigned int nr_sector;
+	dev_t old_dev;
+	sector_t old_sector;
+	unsigned int nr_bios;
+	char rwbs[10];
+	char __data[0];
+};
+
+struct throtl_service_queue {
+	struct throtl_service_queue *parent_sq;
+	struct list_head queued[2];
+	unsigned int nr_queued[2];
+	struct rb_root_cached pending_tree;
+	unsigned int nr_pending;
+	unsigned long first_pending_disptime;
+	struct timer_list pending_timer;
+};
+
+struct throtl_grp;
+
+struct throtl_qnode {
+	struct list_head node;
+	struct bio_list bios;
+	struct throtl_grp *tg;
+};
+
+struct blkg_rwstat {
+	struct percpu_counter cpu_cnt[5];
+	atomic64_t aux_cnt[5];
+};
+
+struct throtl_grp {
+	struct blkg_policy_data pd;
+	struct rb_node rb_node;
+	struct throtl_data *td;
+	struct throtl_service_queue service_queue;
+	struct throtl_qnode qnode_on_self[2];
+	struct throtl_qnode qnode_on_parent[2];
+	unsigned long disptime;
+	unsigned int flags;
+	bool has_rules_bps[2];
+	bool has_rules_iops[2];
+	uint64_t bps[4];
+	uint64_t bps_conf[4];
+	unsigned int iops[4];
+	unsigned int iops_conf[4];
+	uint64_t bytes_disp[2];
+	unsigned int io_disp[2];
+	unsigned long last_low_overflow_time[2];
+	uint64_t last_bytes_disp[2];
+	unsigned int last_io_disp[2];
+	long long carryover_bytes[2];
+	int carryover_ios[2];
+	unsigned long last_check_time;
+	unsigned long latency_target;
+	unsigned long latency_target_conf;
+	unsigned long slice_start[2];
+	unsigned long slice_end[2];
+	unsigned long last_finish_time;
+	unsigned long checked_last_finish_time;
+	unsigned long avg_idletime;
+	unsigned long idletime_threshold;
+	unsigned long idletime_threshold_conf;
+	unsigned int bio_cnt;
+	unsigned int bad_bio_cnt;
+	unsigned long bio_cnt_reset_time;
+	struct blkg_rwstat stat_bytes;
+	struct blkg_rwstat stat_ios;
+};
+
+typedef struct blkcg_policy_data *blkcg_pol_alloc_cpd_fn(gfp_t);
+
+typedef void blkcg_pol_free_cpd_fn(struct blkcg_policy_data *);
+
+typedef struct blkg_policy_data *blkcg_pol_alloc_pd_fn(struct gendisk *, struct blkcg *, gfp_t);
+
+typedef void blkcg_pol_init_pd_fn(struct blkg_policy_data *);
+
+typedef void blkcg_pol_online_pd_fn(struct blkg_policy_data *);
+
+typedef void blkcg_pol_offline_pd_fn(struct blkg_policy_data *);
+
+typedef void blkcg_pol_free_pd_fn(struct blkg_policy_data *);
+
+typedef void blkcg_pol_reset_pd_stats_fn(struct blkg_policy_data *);
+
+typedef void blkcg_pol_stat_pd_fn(struct blkg_policy_data *, struct seq_file *);
+
+struct blkcg_policy {
+	int plid;
+	struct cftype *dfl_cftypes;
+	struct cftype *legacy_cftypes;
+	blkcg_pol_alloc_cpd_fn *cpd_alloc_fn;
+	blkcg_pol_free_cpd_fn *cpd_free_fn;
+	blkcg_pol_alloc_pd_fn *pd_alloc_fn;
+	blkcg_pol_init_pd_fn *pd_init_fn;
+	blkcg_pol_online_pd_fn *pd_online_fn;
+	blkcg_pol_offline_pd_fn *pd_offline_fn;
+	blkcg_pol_free_pd_fn *pd_free_fn;
+	blkcg_pol_reset_pd_stats_fn *pd_reset_stats_fn;
+	blkcg_pol_stat_pd_fn *pd_stat_fn;
+};
+
+struct trace_event_data_offsets_block_buffer {};
+
+struct trace_event_data_offsets_block_rq_requeue {
+	u32 cmd;
+};
+
+struct trace_event_data_offsets_block_rq_completion {
+	u32 cmd;
+};
+
+struct trace_event_data_offsets_block_rq {
+	u32 cmd;
+};
+
+struct trace_event_data_offsets_block_bio_complete {};
+
+struct trace_event_data_offsets_block_bio {};
+
+struct trace_event_data_offsets_block_plug {};
+
+struct trace_event_data_offsets_block_unplug {};
+
+struct trace_event_data_offsets_block_split {};
+
+struct trace_event_data_offsets_block_bio_remap {};
+
+struct trace_event_data_offsets_block_rq_remap {};
+
+struct queue_sysfs_entry {
+	struct attribute attr;
+	ssize_t (*show)(struct request_queue *, char *);
+	ssize_t (*store)(struct request_queue *, const char *, size_t);
+};
+
+enum {
+	REQ_FSEQ_PREFLUSH = 1,
+	REQ_FSEQ_DATA = 2,
+	REQ_FSEQ_POSTFLUSH = 4,
+	REQ_FSEQ_DONE = 8,
+	REQ_FSEQ_ACTIONS = 7,
+	FLUSH_PENDING_TIMEOUT = 1250,
+};
+
+enum {
+	BLK_MQ_NO_TAG = 4294967295,
+	BLK_MQ_TAG_MIN = 1,
+	BLK_MQ_TAG_MAX = 4294967294,
+};
+
+enum hctx_type {
+	HCTX_TYPE_DEFAULT = 0,
+	HCTX_TYPE_READ = 1,
+	HCTX_TYPE_POLL = 2,
+	HCTX_MAX_TYPES = 3,
+};
+
+enum {
+	ICQ_EXITED = 4,
+	ICQ_DESTROYED = 8,
+};
+
+struct rq_map_data {
+	struct page **pages;
+	unsigned long offset;
+	unsigned short page_order;
+	unsigned short nr_entries;
+	bool null_mapped;
+	bool from_user;
+};
+
+struct bio_map_data {
+	bool is_our_pages: 1;
+	bool is_null_mapped: 1;
+	struct iov_iter iter;
+	struct iovec iov[0];
+};
+
+enum bio_merge_status {
+	BIO_MERGE_OK = 0,
+	BIO_MERGE_NONE = 1,
+	BIO_MERGE_FAILED = 2,
+};
+
+struct req_iterator {
+	struct bvec_iter iter;
+	struct bio *bio;
+};
+
+enum prep_dispatch {
+	PREP_DISPATCH_OK = 0,
+	PREP_DISPATCH_NO_TAG = 1,
+	PREP_DISPATCH_NO_BUDGET = 2,
+};
+
+struct blk_mq_qe_pair {
+	struct list_head node;
+	struct request_queue *q;
+	struct elevator_type *type;
+};
+
+typedef bool busy_tag_iter_fn(struct request *, void *);
+
+typedef bool (*sb_for_each_fn)(struct sbitmap *, unsigned int, void *);
+
+struct flush_busy_ctx_data {
+	struct blk_mq_hw_ctx *hctx;
+	struct list_head *list;
+};
+
+struct dispatch_rq_data {
+	struct blk_mq_hw_ctx *hctx;
+	struct request *rq;
+};
+
+struct blk_expired_data {
+	bool has_timedout_rq;
+	unsigned long next;
+	unsigned long timeout_start;
+};
+
+struct rq_iter_data {
+	struct blk_mq_hw_ctx *hctx;
+	bool has_rq;
+};
+
+struct mq_inflight {
+	struct block_device *part;
+	unsigned int inflight[2];
+};
+
+struct blk_rq_wait {
+	struct completion done;
+	blk_status_t ret;
+};
+
+enum {
+	BLK_MQ_UNIQUE_TAG_BITS = 16,
+	BLK_MQ_UNIQUE_TAG_MASK = 65535,
+};
+
+struct sbq_wait {
+	struct sbitmap_queue *sbq;
+	struct wait_queue_entry wait;
+};
+
+struct bt_iter_data {
+	struct blk_mq_hw_ctx *hctx;
+	struct request_queue *q;
+	busy_tag_iter_fn *fn;
+	void *data;
+	bool reserved;
+};
+
+struct bt_tags_iter_data {
+	struct blk_mq_tags *tags;
+	busy_tag_iter_fn *fn;
+	void *data;
+	unsigned int flags;
+};
+
+struct blk_rq_stat;
+
+struct blk_stat_callback {
+	struct list_head list;
+	struct timer_list timer;
+	struct blk_rq_stat __attribute__((btf_type_tag("percpu"))) *cpu_stat;
+	int (*bucket_fn)(const struct request *);
+	unsigned int buckets;
+	struct blk_rq_stat *stat;
+	void (*timer_fn)(struct blk_stat_callback *);
+	void *data;
+	struct callback_head rcu;
+};
+
+struct blk_rq_stat {
+	u64 mean;
+	u64 min;
+	u64 max;
+	u32 nr_samples;
+	u64 batch;
+};
+
+struct blk_queue_stats {
+	struct list_head callbacks;
+	spinlock_t lock;
+	int accounting;
+};
+
+struct blk_mq_hw_ctx_sysfs_entry {
+	struct attribute attr;
+	ssize_t (*show)(struct blk_mq_hw_ctx *, char *);
+};
+
+struct hd_geometry {
+	unsigned char heads;
+	unsigned char sectors;
+	unsigned short cylinders;
+	unsigned long start;
+};
+
+struct pr_keys {
+	u32 generation;
+	u32 num_keys;
+	u64 keys[0];
+};
+
+struct pr_held_reservation {
+	u64 key;
+	u32 generation;
+	enum pr_type type;
+};
+
+struct blkpg_partition {
+	long long start;
+	long long length;
+	int pno;
+	char devname[64];
+	char volname[64];
+};
+
+typedef u32 compat_caddr_t;
+
+struct blkpg_ioctl_arg {
+	int op;
+	int flags;
+	int datalen;
+	void __attribute__((btf_type_tag("user"))) *data;
+};
+
+struct pr_preempt {
+	__u64 old_key;
+	__u64 new_key;
+	__u32 type;
+	__u32 flags;
+};
+
+struct pr_clear {
+	__u64 key;
+	__u32 flags;
+	__u32 __pad;
+};
+
+struct pr_reservation {
+	__u64 key;
+	__u32 type;
+	__u32 flags;
+};
+
+struct pr_registration {
+	__u64 old_key;
+	__u64 new_key;
+	__u32 flags;
+	__u32 __pad;
+};
+
+struct compat_hd_geometry {
+	unsigned char heads;
+	unsigned char sectors;
+	unsigned short cylinders;
+	u32 start;
+};
+
+struct compat_blkpg_ioctl_arg {
+	compat_int_t op;
+	compat_int_t flags;
+	compat_int_t datalen;
+	compat_caddr_t data;
+};
+
+struct badblocks {
+	struct device *dev;
+	int count;
+	int unacked_exist;
+	int shift;
+	u64 *page;
+	int changed;
+	seqlock_t lock;
+	sector_t sector;
+	sector_t size;
+};
+
+struct blk_major_name {
+	struct blk_major_name *next;
+	int major;
+	char name[16];
+	void (*probe)(dev_t);
+};
+
+enum {
+	GENHD_FL_REMOVABLE = 1,
+	GENHD_FL_HIDDEN = 2,
+	GENHD_FL_NO_PART = 4,
+};
+
+struct klist;
+
+struct klist_node;
+
+struct klist_iter {
+	struct klist *i_klist;
+	struct klist_node *i_cur;
+};
+
+struct subsys_private;
+
+struct class_dev_iter {
+	struct klist_iter ki;
+	const struct device_type *type;
+	struct subsys_private *sp;
+};
+
+struct klist {
+	spinlock_t k_lock;
+	struct list_head k_list;
+	void (*get)(struct klist_node *);
+	void (*put)(struct klist_node *);
+};
+
+struct klist_node {
+	void *n_klist;
+	struct list_head n_node;
+	struct kref n_ref;
+};
+
+enum {
+	IOPRIO_WHO_PROCESS = 1,
+	IOPRIO_WHO_PGRP = 2,
+	IOPRIO_WHO_USER = 3,
+};
+
+struct parsed_partitions {
+	struct gendisk *disk;
+	char name[32];
+	struct {
+		sector_t from;
+		sector_t size;
+		int flags;
+		bool has_info;
+		struct partition_meta_info info;
+	} *parts;
+	int next;
+	int limit;
+	bool access_beyond_eod;
+	char *pp_buf;
+};
+
+typedef struct {
+	struct folio *v;
+} Sector;
+
+enum msdos_sys_ind {
+	DOS_EXTENDED_PARTITION = 5,
+	LINUX_EXTENDED_PARTITION = 133,
+	WIN98_EXTENDED_PARTITION = 15,
+	LINUX_DATA_PARTITION = 131,
+	LINUX_LVM_PARTITION = 142,
+	LINUX_RAID_PARTITION = 253,
+	SOLARIS_X86_PARTITION = 130,
+	NEW_SOLARIS_X86_PARTITION = 191,
+	DM6_AUX1PARTITION = 81,
+	DM6_AUX3PARTITION = 83,
+	DM6_PARTITION = 84,
+	EZD_PARTITION = 85,
+	FREEBSD_PARTITION = 165,
+	OPENBSD_PARTITION = 166,
+	NETBSD_PARTITION = 169,
+	BSDI_PARTITION = 183,
+	MINIX_PARTITION = 129,
+	UNIXWARE_PARTITION = 99,
+};
+
+struct msdos_partition {
+	u8 boot_ind;
+	u8 head;
+	u8 sector;
+	u8 cyl;
+	u8 sys_ind;
+	u8 end_head;
+	u8 end_sector;
+	u8 end_cyl;
+	__le32 start_sect;
+	__le32 nr_sects;
+};
+
+typedef struct {
+	__u8 b[16];
+} guid_t;
+
+typedef guid_t efi_guid_t;
+
+struct _gpt_header {
+	__le64 signature;
+	__le32 revision;
+	__le32 header_size;
+	__le32 header_crc32;
+	__le32 reserved1;
+	__le64 my_lba;
+	__le64 alternate_lba;
+	__le64 first_usable_lba;
+	__le64 last_usable_lba;
+	efi_guid_t disk_guid;
+	__le64 partition_entry_lba;
+	__le32 num_partition_entries;
+	__le32 sizeof_partition_entry;
+	__le32 partition_entry_array_crc32;
+} __attribute__((packed));
+
+typedef struct _gpt_header gpt_header;
+
+struct _gpt_entry_attributes {
+	u64 required_to_function: 1;
+	u64 reserved: 47;
+	u64 type_guid_specific: 16;
+};
+
+typedef struct _gpt_entry_attributes gpt_entry_attributes;
+
+struct _gpt_entry {
+	efi_guid_t partition_type_guid;
+	efi_guid_t unique_partition_guid;
+	__le64 starting_lba;
+	__le64 ending_lba;
+	gpt_entry_attributes attributes;
+	__le16 partition_name[36];
+};
+
+typedef struct _gpt_entry gpt_entry;
+
+struct _gpt_mbr_record {
+	u8 boot_indicator;
+	u8 start_head;
+	u8 start_sector;
+	u8 start_track;
+	u8 os_type;
+	u8 end_head;
+	u8 end_sector;
+	u8 end_track;
+	__le32 starting_lba;
+	__le32 size_in_lba;
+};
+
+typedef struct _gpt_mbr_record gpt_mbr_record;
+
+struct _legacy_mbr {
+	u8 boot_code[440];
+	__le32 unique_mbr_signature;
+	__le16 unknown;
+	gpt_mbr_record partition_record[4];
+	__le16 signature;
+} __attribute__((packed));
+
+typedef struct _legacy_mbr legacy_mbr;
+
+struct rq_wait;
+
+typedef bool acquire_inflight_cb_t(struct rq_wait *, void *);
+
+struct rq_qos_wait_data {
+	struct wait_queue_entry wq;
+	struct task_struct *task;
+	struct rq_wait *rqw;
+	acquire_inflight_cb_t *cb;
+	void *private_data;
+	bool got_token;
+};
+
+struct rq_wait {
+	wait_queue_head_t wait;
+	atomic_t inflight;
+};
+
+struct rq_depth {
+	unsigned int max_depth;
+	int scale_step;
+	bool scaled_max;
+	unsigned int queue_depth;
+	unsigned int default_depth;
+};
+
+typedef void cleanup_cb_t(struct rq_wait *, void *);
+
+struct disk_events {
+	struct list_head node;
+	struct gendisk *disk;
+	spinlock_t lock;
+	struct mutex block_mutex;
+	int block;
+	unsigned int pending;
+	unsigned int clearing;
+	long poll_msecs;
+	struct delayed_work dwork;
+};
+
+struct blk_ia_range_sysfs_entry {
+	struct attribute attr;
+	ssize_t (*show)(struct blk_independent_access_range *, char *);
+};
+
+struct uuidcmp {
+	const char *uuid;
+	int len;
+};
+
+struct sg_io_v4;
+
+typedef int bsg_sg_io_fn(struct request_queue *, struct sg_io_v4 *, bool, unsigned int);
+
+struct bsg_device {
+	struct request_queue *queue;
+	struct device device;
+	struct cdev cdev;
+	int max_queue;
+	unsigned int timeout;
+	unsigned int reserved_size;
+	bsg_sg_io_fn *sg_io_fn;
+};
+
+struct sg_io_v4 {
+	__s32 guard;
+	__u32 protocol;
+	__u32 subprotocol;
+	__u32 request_len;
+	__u64 request;
+	__u64 request_tag;
+	__u32 request_attr;
+	__u32 request_priority;
+	__u32 request_extra;
+	__u32 max_response_len;
+	__u64 response;
+	__u32 dout_iovec_count;
+	__u32 dout_xfer_len;
+	__u32 din_iovec_count;
+	__u32 din_xfer_len;
+	__u64 dout_xferp;
+	__u64 din_xferp;
+	__u32 timeout;
+	__u32 flags;
+	__u64 usr_ptr;
+	__u32 spare_in;
+	__u32 driver_status;
+	__u32 transport_status;
+	__u32 device_status;
+	__u32 retry_delay;
+	__u32 info;
+	__u32 duration;
+	__u32 response_len;
+	__s32 din_resid;
+	__s32 dout_resid;
+	__u64 generated_tag;
+	__u32 spare_out;
+	__u32 padding;
+};
+
+struct bsg_job;
+
+typedef int bsg_job_fn(struct bsg_job *);
+
+typedef enum blk_eh_timer_return bsg_timeout_fn(struct request *);
+
+struct bsg_set {
+	struct blk_mq_tag_set tag_set;
+	struct bsg_device *bd;
+	bsg_job_fn *job_fn;
+	bsg_timeout_fn *timeout_fn;
+};
+
+struct bsg_buffer {
+	unsigned int payload_len;
+	int sg_cnt;
+	struct scatterlist *sg_list;
+};
+
+struct bsg_job {
+	struct device *dev;
+	struct kref kref;
+	unsigned int timeout;
+	void *request;
+	void *reply;
+	unsigned int request_len;
+	unsigned int reply_len;
+	struct bsg_buffer request_payload;
+	struct bsg_buffer reply_payload;
+	int result;
+	unsigned int reply_payload_rcv_len;
+	struct request *bidi_rq;
+	struct bio *bidi_bio;
+	void *dd_data;
+};
+
+enum blkg_iostat_type {
+	BLKG_IOSTAT_READ = 0,
+	BLKG_IOSTAT_WRITE = 1,
+	BLKG_IOSTAT_DISCARD = 2,
+	BLKG_IOSTAT_NR = 3,
+};
+
+struct blkg_conf_ctx {
+	char *input;
+	char *body;
+	struct block_device *bdev;
+	struct blkcg_gq *blkg;
+};
+
+struct blkg_rwstat_sample {
+	u64 cnt[5];
+};
+
+struct latency_bucket {
+	unsigned long total_latency;
+	int samples;
+};
+
+struct avg_latency_bucket {
+	unsigned long latency;
+	bool valid;
+};
+
+struct throtl_data {
+	struct throtl_service_queue service_queue;
+	struct request_queue *queue;
+	unsigned int nr_queued[2];
+	unsigned int throtl_slice;
+	struct work_struct dispatch_work;
+	unsigned int limit_index;
+	bool limit_valid[2];
+	unsigned long low_upgrade_time;
+	unsigned long low_downgrade_time;
+	unsigned int scale;
+	struct latency_bucket tmp_buckets[18];
+	struct avg_latency_bucket avg_buckets[18];
+	struct latency_bucket __attribute__((btf_type_tag("percpu"))) *latency_buckets[2];
+	unsigned long last_calculate_time;
+	unsigned long filtered_latency;
+	bool track_bio_latency;
+};
+
+enum tg_state_flags {
+	THROTL_TG_PENDING = 1,
+	THROTL_TG_WAS_EMPTY = 2,
+	THROTL_TG_CANCELING = 4,
+};
+
+enum {
+	LIMIT_LOW = 0,
+	LIMIT_MAX = 1,
+	LIMIT_CNT = 2,
+};
+
+enum prio_policy {
+	POLICY_NO_CHANGE = 0,
+	POLICY_PROMOTE_TO_RT = 1,
+	POLICY_RESTRICT_TO_BE = 2,
+	POLICY_ALL_TO_IDLE = 3,
+	POLICY_NONE_TO_RT = 4,
+};
+
+struct ioprio_blkcg {
+	struct blkcg_policy_data cpd;
+	enum prio_policy prio_policy;
+};
+
+struct ioprio_blkg {
+	struct blkg_policy_data pd;
+};
+
+struct ioc_gq;
+
+struct ioc_now;
+
+typedef void (*btf_trace_iocost_iocg_activate)(void *, struct ioc_gq *, const char *, struct ioc_now *, u64, u64, u64);
+
+struct iocg_stat {
+	u64 usage_us;
+	u64 wait_us;
+	u64 indebt_us;
+	u64 indelay_us;
+};
+
+struct ioc;
+
+struct iocg_pcpu_stat;
+
+struct ioc_gq {
+	struct blkg_policy_data pd;
+	struct ioc *ioc;
+	u32 cfg_weight;
+	u32 weight;
+	u32 active;
+	u32 inuse;
+	u32 last_inuse;
+	s64 saved_margin;
+	sector_t cursor;
+	atomic64_t vtime;
+	atomic64_t done_vtime;
+	u64 abs_vdebt;
+	u64 delay;
+	u64 delay_at;
+	atomic64_t active_period;
+	struct list_head active_list;
+	u64 child_active_sum;
+	u64 child_inuse_sum;
+	u64 child_adjusted_sum;
+	int hweight_gen;
+	u32 hweight_active;
+	u32 hweight_inuse;
+	u32 hweight_donating;
+	u32 hweight_after_donation;
+	struct list_head walk_list;
+	struct list_head surplus_list;
+	struct wait_queue_head waitq;
+	struct hrtimer waitq_timer;
+	u64 activated_at;
+	struct iocg_pcpu_stat __attribute__((btf_type_tag("percpu"))) *pcpu_stat;
+	struct iocg_stat stat;
+	struct iocg_stat last_stat;
+	u64 last_stat_abs_vusage;
+	u64 usage_delta_us;
+	u64 wait_since;
+	u64 indebt_since;
+	u64 indelay_since;
+	int level;
+	struct ioc_gq *ancestors[0];
+};
+
+struct ioc_params {
+	u32 qos[6];
+	u64 i_lcoefs[6];
+	u64 lcoefs[6];
+	u32 too_fast_vrate_pct;
+	u32 too_slow_vrate_pct;
+};
+
+struct ioc_margins {
+	s64 min;
+	s64 low;
+	s64 target;
+};
+
+enum ioc_running {
+	IOC_IDLE = 0,
+	IOC_RUNNING = 1,
+	IOC_STOP = 2,
+};
+
+struct ioc_pcpu_stat;
+
+struct ioc {
+	struct rq_qos rqos;
+	bool enabled;
+	struct ioc_params params;
+	struct ioc_margins margins;
+	u32 period_us;
+	u32 timer_slack_ns;
+	u64 vrate_min;
+	u64 vrate_max;
+	spinlock_t lock;
+	struct timer_list timer;
+	struct list_head active_iocgs;
+	struct ioc_pcpu_stat __attribute__((btf_type_tag("percpu"))) *pcpu_stat;
+	enum ioc_running running;
+	atomic64_t vtime_rate;
+	u64 vtime_base_rate;
+	s64 vtime_err;
+	seqcount_spinlock_t period_seqcount;
+	u64 period_at;
+	u64 period_at_vtime;
+	atomic64_t cur_period;
+	int busy_level;
+	bool weights_updated;
+	atomic_t hweight_gen;
+	u64 dfgv_period_at;
+	u64 dfgv_period_rem;
+	u64 dfgv_usage_us_sum;
+	u64 autop_too_fast_at;
+	u64 autop_too_slow_at;
+	int autop_idx;
+	bool user_qos_params: 1;
+	bool user_cost_model: 1;
+};
+
+struct ioc_missed {
+	local_t nr_met;
+	local_t nr_missed;
+	u32 last_met;
+	u32 last_missed;
+};
+
+struct ioc_pcpu_stat {
+	struct ioc_missed missed[2];
+	local64_t rq_wait_ns;
+	u64 last_rq_wait_ns;
+};
+
+struct iocg_pcpu_stat {
+	local64_t abs_vusage;
+};
+
+struct ioc_now {
+	u64 now_ns;
+	u64 now;
+	u64 vnow;
+};
+
+typedef void (*btf_trace_iocost_iocg_idle)(void *, struct ioc_gq *, const char *, struct ioc_now *, u64, u64, u64);
+
+typedef void (*btf_trace_iocost_inuse_shortage)(void *, struct ioc_gq *, const char *, struct ioc_now *, u32, u32, u64, u64);
+
+typedef void (*btf_trace_iocost_inuse_transfer)(void *, struct ioc_gq *, const char *, struct ioc_now *, u32, u32, u64, u64);
+
+typedef void (*btf_trace_iocost_inuse_adjust)(void *, struct ioc_gq *, const char *, struct ioc_now *, u32, u32, u64, u64);
+
+typedef void (*btf_trace_iocost_ioc_vrate_adj)(void *, struct ioc *, u64, u32 *, u32, int, int);
+
+typedef void (*btf_trace_iocost_iocg_forgive_debt)(void *, struct ioc_gq *, const char *, struct ioc_now *, u32, u64, u64, u64, u64);
+
+enum {
+	MILLION = 1000000,
+	MIN_PERIOD = 1000,
+	MAX_PERIOD = 1000000,
+	MARGIN_MIN_PCT = 10,
+	MARGIN_LOW_PCT = 20,
+	MARGIN_TARGET_PCT = 50,
+	INUSE_ADJ_STEP_PCT = 25,
+	TIMER_SLACK_PCT = 1,
+	WEIGHT_ONE = 65536,
+};
+
+enum {
+	QOS_RPPM = 0,
+	QOS_RLAT = 1,
+	QOS_WPPM = 2,
+	QOS_WLAT = 3,
+	QOS_MIN = 4,
+	QOS_MAX = 5,
+	NR_QOS_PARAMS = 6,
+};
+
+enum {
+	QOS_ENABLE = 0,
+	QOS_CTRL = 1,
+	NR_QOS_CTRL_PARAMS = 2,
+};
+
+enum {
+	VTIME_PER_SEC_SHIFT = 37ULL,
+	VTIME_PER_SEC = 137438953472ULL,
+	VTIME_PER_USEC = 137438ULL,
+	VTIME_PER_NSEC = 137ULL,
+	VRATE_MIN_PPM = 10000ULL,
+	VRATE_MAX_PPM = 100000000ULL,
+	VRATE_MIN = 1374ULL,
+	VRATE_CLAMP_ADJ_PCT = 4ULL,
+	AUTOP_CYCLE_NSEC = 10000000000ULL,
+};
+
+enum {
+	AUTOP_INVALID = 0,
+	AUTOP_HDD = 1,
+	AUTOP_SSD_QD1 = 2,
+	AUTOP_SSD_DFL = 3,
+	AUTOP_SSD_FAST = 4,
+};
+
+enum {
+	RQ_WAIT_BUSY_PCT = 5,
+	UNBUSY_THR_PCT = 75,
+	MIN_DELAY_THR_PCT = 500,
+	MAX_DELAY_THR_PCT = 25000,
+	MIN_DELAY = 250,
+	MAX_DELAY = 250000,
+	DFGV_USAGE_PCT = 50,
+	DFGV_PERIOD = 100000,
+	MAX_LAGGING_PERIODS = 10,
+	IOC_PAGE_SHIFT = 12,
+	IOC_PAGE_SIZE = 4096,
+	IOC_SECT_TO_PAGE_SHIFT = 3,
+	LCOEF_RANDIO_PAGES = 4096,
+};
+
+enum {
+	I_LCOEF_RBPS = 0,
+	I_LCOEF_RSEQIOPS = 1,
+	I_LCOEF_RRANDIOPS = 2,
+	I_LCOEF_WBPS = 3,
+	I_LCOEF_WSEQIOPS = 4,
+	I_LCOEF_WRANDIOPS = 5,
+	NR_I_LCOEFS = 6,
+};
+
+enum {
+	LCOEF_RPAGE = 0,
+	LCOEF_RSEQIO = 1,
+	LCOEF_RRANDIO = 2,
+	LCOEF_WPAGE = 3,
+	LCOEF_WSEQIO = 4,
+	LCOEF_WRANDIO = 5,
+	NR_LCOEFS = 6,
+};
+
+enum {
+	COST_CTRL = 0,
+	COST_MODEL = 1,
+	NR_COST_CTRL_PARAMS = 2,
+};
+
+struct trace_event_raw_iocost_iocg_state {
+	struct trace_entry ent;
+	u32 __data_loc_devname;
+	u32 __data_loc_cgroup;
+	u64 now;
+	u64 vnow;
+	u64 vrate;
+	u64 last_period;
+	u64 cur_period;
+	u64 vtime;
+	u32 weight;
+	u32 inuse;
+	u64 hweight_active;
+	u64 hweight_inuse;
+	char __data[0];
+};
+
+struct trace_event_raw_iocg_inuse_update {
+	struct trace_entry ent;
+	u32 __data_loc_devname;
+	u32 __data_loc_cgroup;
+	u64 now;
+	u32 old_inuse;
+	u32 new_inuse;
+	u64 old_hweight_inuse;
+	u64 new_hweight_inuse;
+	char __data[0];
+};
+
+struct trace_event_raw_iocost_ioc_vrate_adj {
+	struct trace_entry ent;
+	u32 __data_loc_devname;
+	u64 old_vrate;
+	u64 new_vrate;
+	int busy_level;
+	u32 read_missed_ppm;
+	u32 write_missed_ppm;
+	u32 rq_wait_pct;
+	int nr_lagging;
+	int nr_shortages;
+	char __data[0];
+};
+
+struct trace_event_raw_iocost_iocg_forgive_debt {
+	struct trace_entry ent;
+	u32 __data_loc_devname;
+	u32 __data_loc_cgroup;
+	u64 now;
+	u64 vnow;
+	u32 usage_pct;
+	u64 old_debt;
+	u64 new_debt;
+	u64 old_delay;
+	u64 new_delay;
+	char __data[0];
+};
+
+struct ioc_cgrp {
+	struct blkcg_policy_data cpd;
+	unsigned int dfl_weight;
+};
+
+struct iocg_wait {
+	struct wait_queue_entry wait;
+	struct bio *bio;
+	u64 abs_cost;
+	bool committed;
+};
+
+struct trace_event_data_offsets_iocost_ioc_vrate_adj {
+	u32 devname;
+};
+
+struct trace_event_data_offsets_iocost_iocg_state {
+	u32 devname;
+	u32 cgroup;
+};
+
+struct trace_event_data_offsets_iocg_inuse_update {
+	u32 devname;
+	u32 cgroup;
+};
+
+struct trace_event_data_offsets_iocost_iocg_forgive_debt {
+	u32 devname;
+	u32 cgroup;
+};
+
+struct iocg_wake_ctx {
+	struct ioc_gq *iocg;
+	u32 hw_inuse;
+	s64 vbudget;
+};
+
+enum dd_prio {
+	DD_RT_PRIO = 0,
+	DD_BE_PRIO = 1,
+	DD_IDLE_PRIO = 2,
+	DD_PRIO_MAX = 2,
+};
+
+enum dd_data_dir {
+	DD_READ = 0,
+	DD_WRITE = 1,
+};
+
+struct io_stats_per_prio {
+	uint32_t inserted;
+	uint32_t merged;
+	uint32_t dispatched;
+	atomic_t completed;
+};
+
+struct dd_per_prio {
+	struct list_head dispatch;
+	struct rb_root sort_list[2];
+	struct list_head fifo_list[2];
+	sector_t latest_pos[2];
+	struct io_stats_per_prio stats;
+};
+
+struct deadline_data {
+	struct dd_per_prio per_prio[3];
+	enum dd_data_dir last_dir;
+	unsigned int batching;
+	unsigned int starved;
+	int fifo_expire[2];
+	int fifo_batch;
+	int writes_starved;
+	int front_merges;
+	u32 async_depth;
+	int prio_aging_expire;
+	spinlock_t lock;
+	spinlock_t zone_lock;
+};
+
+typedef void (*btf_trace_kyber_latency)(void *, dev_t, const char *, const char *, unsigned int, unsigned int, unsigned int, unsigned int);
+
+typedef void (*btf_trace_kyber_adjust)(void *, dev_t, const char *, unsigned int);
+
+typedef void (*btf_trace_kyber_throttled)(void *, dev_t, const char *);
+
+enum {
+	KYBER_READ = 0,
+	KYBER_WRITE = 1,
+	KYBER_DISCARD = 2,
+	KYBER_OTHER = 3,
+	KYBER_NUM_DOMAINS = 4,
+};
+
+enum {
+	KYBER_TOTAL_LATENCY = 0,
+	KYBER_IO_LATENCY = 1,
+};
+
+enum {
+	KYBER_LATENCY_SHIFT = 2,
+	KYBER_GOOD_BUCKETS = 4,
+	KYBER_LATENCY_BUCKETS = 8,
+};
+
+enum {
+	KYBER_ASYNC_PERCENT = 75,
+};
+
+struct trace_event_raw_kyber_latency {
+	struct trace_entry ent;
+	dev_t dev;
+	char domain[16];
+	char type[8];
+	u8 percentile;
+	u8 numerator;
+	u8 denominator;
+	unsigned int samples;
+	char __data[0];
+};
+
+struct trace_event_raw_kyber_adjust {
+	struct trace_entry ent;
+	dev_t dev;
+	char domain[16];
+	unsigned int depth;
+	char __data[0];
+};
+
+struct trace_event_raw_kyber_throttled {
+	struct trace_entry ent;
+	dev_t dev;
+	char domain[16];
+	char __data[0];
+};
+
+struct kyber_cpu_latency {
+	atomic_t buckets[48];
+};
+
+struct kyber_queue_data {
+	struct request_queue *q;
+	dev_t dev;
+	struct sbitmap_queue domain_tokens[4];
+	unsigned int async_depth;
+	struct kyber_cpu_latency __attribute__((btf_type_tag("percpu"))) *cpu_latency;
+	struct timer_list timer;
+	unsigned int latency_buckets[48];
+	unsigned long latency_timeout[3];
+	int domain_p99[3];
+	u64 latency_targets[3];
+};
+
+struct kyber_ctx_queue {
+	spinlock_t lock;
+	struct list_head rq_list[4];
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct kyber_hctx_data {
+	spinlock_t lock;
+	struct list_head rqs[4];
+	unsigned int cur_domain;
+	unsigned int batching;
+	struct kyber_ctx_queue *kcqs;
+	struct sbitmap kcq_map[4];
+	struct sbq_wait domain_wait[4];
+	struct sbq_wait_state *domain_ws[4];
+	atomic_t wait_index[4];
+};
+
+struct flush_kcq_data {
+	struct kyber_hctx_data *khd;
+	unsigned int sched_domain;
+	struct list_head *list;
+};
+
+struct trace_event_data_offsets_kyber_latency {};
+
+struct trace_event_data_offsets_kyber_adjust {};
+
+struct trace_event_data_offsets_kyber_throttled {};
+
+enum bfqq_state_flags {
+	BFQQF_just_created = 0,
+	BFQQF_busy = 1,
+	BFQQF_wait_request = 2,
+	BFQQF_non_blocking_wait_rq = 3,
+	BFQQF_fifo_expire = 4,
+	BFQQF_has_short_ttime = 5,
+	BFQQF_sync = 6,
+	BFQQF_IO_bound = 7,
+	BFQQF_in_large_burst = 8,
+	BFQQF_softrt_update = 9,
+	BFQQF_coop = 10,
+	BFQQF_split_coop = 11,
+};
+
+enum bfqq_expiration {
+	BFQQE_TOO_IDLE = 0,
+	BFQQE_BUDGET_TIMEOUT = 1,
+	BFQQE_BUDGET_EXHAUSTED = 2,
+	BFQQE_NO_MORE_REQUESTS = 3,
+	BFQQE_PREEMPTED = 4,
+};
+
+struct bfq_weight_counter {
+	unsigned int weight;
+	unsigned int num_active;
+	struct rb_node weights_node;
+};
+
+struct bfq_sched_data;
+
+struct bfq_queue;
+
+struct bfq_entity {
+	struct rb_node rb_node;
+	bool on_st_or_in_serv;
+	u64 start;
+	u64 finish;
+	struct rb_root *tree;
+	u64 min_start;
+	int service;
+	int budget;
+	int allocated;
+	int dev_weight;
+	int weight;
+	int new_weight;
+	int orig_weight;
+	struct bfq_entity *parent;
+	struct bfq_sched_data *my_sched_data;
+	struct bfq_sched_data *sched_data;
+	int prio_changed;
+	bool in_groups_with_pending_reqs;
+	struct bfq_queue *last_bfqq_created;
+};
+
+struct bfq_ttime {
+	u64 last_end_request;
+	u64 ttime_total;
+	unsigned long ttime_samples;
+	u64 ttime_mean;
+};
+
+struct bfq_data;
+
+struct bfq_io_cq;
+
+struct bfq_queue {
+	int ref;
+	int stable_ref;
+	struct bfq_data *bfqd;
+	unsigned short ioprio;
+	unsigned short ioprio_class;
+	unsigned short new_ioprio;
+	unsigned short new_ioprio_class;
+	u64 last_serv_time_ns;
+	unsigned int inject_limit;
+	unsigned long decrease_time_jif;
+	struct bfq_queue *new_bfqq;
+	struct rb_node pos_node;
+	struct rb_root *pos_root;
+	struct rb_root sort_list;
+	struct request *next_rq;
+	int queued[2];
+	int meta_pending;
+	struct list_head fifo;
+	struct bfq_entity entity;
+	struct bfq_weight_counter *weight_counter;
+	int max_budget;
+	unsigned long budget_timeout;
+	int dispatched;
+	unsigned long flags;
+	struct list_head bfqq_list;
+	struct bfq_ttime ttime;
+	u64 io_start_time;
+	u64 tot_idle_time;
+	u32 seek_history;
+	struct hlist_node burst_list_node;
+	sector_t last_request_pos;
+	unsigned int requests_within_timer;
+	pid_t pid;
+	struct bfq_io_cq *bic;
+	unsigned long wr_cur_max_time;
+	unsigned long soft_rt_next_start;
+	unsigned long last_wr_start_finish;
+	unsigned int wr_coeff;
+	unsigned long last_idle_bklogged;
+	unsigned long service_from_backlogged;
+	unsigned long service_from_wr;
+	unsigned long wr_start_at_switch_to_srt;
+	unsigned long split_time;
+	unsigned long first_IO_time;
+	unsigned long creation_time;
+	struct bfq_queue *waker_bfqq;
+	struct bfq_queue *tentative_waker_bfqq;
+	unsigned int num_waker_detections;
+	u64 waker_detection_started;
+	struct hlist_node woken_list_node;
+	struct hlist_head woken_list;
+	unsigned int actuator_idx;
+};
+
+struct bfq_group;
+
+struct bfq_data {
+	struct request_queue *queue;
+	struct list_head dispatch;
+	struct bfq_group *root_group;
+	struct rb_root_cached queue_weights_tree;
+	unsigned int num_groups_with_pending_reqs;
+	unsigned int busy_queues[3];
+	int wr_busy_queues;
+	int queued;
+	int tot_rq_in_driver;
+	int rq_in_driver[8];
+	bool nonrot_with_queueing;
+	int max_rq_in_driver;
+	int hw_tag_samples;
+	int hw_tag;
+	int budgets_assigned;
+	struct hrtimer idle_slice_timer;
+	struct bfq_queue *in_service_queue;
+	sector_t last_position;
+	sector_t in_serv_last_pos;
+	u64 last_completion;
+	struct bfq_queue *last_completed_rq_bfqq;
+	struct bfq_queue *last_bfqq_created;
+	u64 last_empty_occupied_ns;
+	bool wait_dispatch;
+	struct request *waited_rq;
+	bool rqs_injected;
+	u64 first_dispatch;
+	u64 last_dispatch;
+	ktime_t last_budget_start;
+	ktime_t last_idling_start;
+	unsigned long last_idling_start_jiffies;
+	int peak_rate_samples;
+	u32 sequential_samples;
+	u64 tot_sectors_dispatched;
+	u32 last_rq_max_size;
+	u64 delta_from_first;
+	u32 peak_rate;
+	int bfq_max_budget;
+	struct list_head active_list[8];
+	struct list_head idle_list;
+	u64 bfq_fifo_expire[2];
+	unsigned int bfq_back_penalty;
+	unsigned int bfq_back_max;
+	u32 bfq_slice_idle;
+	int bfq_user_max_budget;
+	unsigned int bfq_timeout;
+	bool strict_guarantees;
+	unsigned long last_ins_in_burst;
+	unsigned long bfq_burst_interval;
+	int burst_size;
+	struct bfq_entity *burst_parent_entity;
+	unsigned long bfq_large_burst_thresh;
+	bool large_burst;
+	struct hlist_head burst_list;
+	bool low_latency;
+	unsigned int bfq_wr_coeff;
+	unsigned int bfq_wr_rt_max_time;
+	unsigned int bfq_wr_min_idle_time;
+	unsigned long bfq_wr_min_inter_arr_async;
+	unsigned int bfq_wr_max_softrt_rate;
+	u64 rate_dur_prod;
+	struct bfq_queue oom_bfqq;
+	spinlock_t lock;
+	struct bfq_io_cq *bio_bic;
+	struct bfq_queue *bio_bfqq;
+	unsigned int word_depths[4];
+	unsigned int full_depth_shift;
+	unsigned int num_actuators;
+	sector_t sector[8];
+	sector_t nr_sectors[8];
+	struct blk_independent_access_range ia_ranges[8];
+	unsigned int actuator_load_threshold;
+};
+
+struct bfq_service_tree {
+	struct rb_root active;
+	struct rb_root idle;
+	struct bfq_entity *first_idle;
+	struct bfq_entity *last_idle;
+	u64 vtime;
+	unsigned long wsum;
+};
+
+struct bfq_sched_data {
+	struct bfq_entity *in_service_entity;
+	struct bfq_entity *next_in_service;
+	struct bfq_service_tree service_tree[3];
+	unsigned long bfq_class_idle_last_service;
+};
+
+struct bfqg_stats {
+	struct blkg_rwstat bytes;
+	struct blkg_rwstat ios;
+};
+
+struct bfq_group {
+	struct blkg_policy_data pd;
+	char blkg_path[128];
+	refcount_t ref;
+	struct bfq_entity entity;
+	struct bfq_sched_data sched_data;
+	struct bfq_data *bfqd;
+	struct bfq_queue *async_bfqq[128];
+	struct bfq_queue *async_idle_bfqq[8];
+	struct bfq_entity *my_entity;
+	int active_entities;
+	int num_queues_with_pending_reqs;
+	struct rb_root rq_pos_tree;
+	struct bfqg_stats stats;
+};
+
+struct bfq_iocq_bfqq_data {
+	bool saved_has_short_ttime;
+	bool saved_IO_bound;
+	u64 saved_io_start_time;
+	u64 saved_tot_idle_time;
+	bool saved_in_large_burst;
+	bool was_in_burst_list;
+	unsigned int saved_weight;
+	unsigned long saved_wr_coeff;
+	unsigned long saved_last_wr_start_finish;
+	unsigned long saved_service_from_wr;
+	unsigned long saved_wr_start_at_switch_to_srt;
+	unsigned int saved_wr_cur_max_time;
+	struct bfq_ttime saved_ttime;
+	u64 saved_last_serv_time_ns;
+	unsigned int saved_inject_limit;
+	unsigned long saved_decrease_time_jif;
+	struct bfq_queue *stable_merge_bfqq;
+	bool stably_merged;
+};
+
+struct bfq_io_cq {
+	struct io_cq icq;
+	struct bfq_queue *bfqq[16];
+	int ioprio;
+	uint64_t blkcg_serial_nr;
+	struct bfq_iocq_bfqq_data bfqq_data[8];
+	unsigned int requests;
+};
+
+struct bfq_group_data {
+	struct blkcg_policy_data pd;
+	unsigned int weight;
+};
+
+enum blk_zone_report_flags {
+	BLK_ZONE_REP_CAPACITY = 1,
+};
+
+struct blk_zone_report {
+	__u64 sector;
+	__u32 nr_zones;
+	__u32 flags;
+	struct blk_zone zones[0];
+};
+
+struct zone_report_args {
+	struct blk_zone __attribute__((btf_type_tag("user"))) *zones;
+};
+
+struct blk_zone_range {
+	__u64 sector;
+	__u64 nr_sectors;
+};
+
+struct blk_revalidate_zone_args {
+	struct gendisk *disk;
+	unsigned long *conv_zones_bitmap;
+	unsigned long *seq_zones_wlock;
+	unsigned int nr_zones;
+	sector_t zone_sectors;
+	sector_t sector;
+};
+
+typedef void (*btf_trace_wbt_stat)(void *, struct backing_dev_info *, struct blk_rq_stat *);
+
+typedef void (*btf_trace_wbt_lat)(void *, struct backing_dev_info *, unsigned long);
+
+typedef void (*btf_trace_wbt_step)(void *, struct backing_dev_info *, const char *, int, unsigned long, unsigned int, unsigned int, unsigned int);
+
+typedef void (*btf_trace_wbt_timer)(void *, struct backing_dev_info *, unsigned int, int, unsigned int);
+
+enum {
+	WBT_STATE_ON_DEFAULT = 1,
+	WBT_STATE_ON_MANUAL = 2,
+	WBT_STATE_OFF_DEFAULT = 3,
+	WBT_STATE_OFF_MANUAL = 4,
+};
+
+enum {
+	WBT_RWQ_BG = 0,
+	WBT_RWQ_KSWAPD = 1,
+	WBT_RWQ_DISCARD = 2,
+	WBT_NUM_RWQ = 3,
+};
+
+enum {
+	RWB_DEF_DEPTH = 16,
+	RWB_WINDOW_NSEC = 100000000,
+	RWB_MIN_WRITE_SAMPLES = 3,
+	RWB_UNKNOWN_BUMP = 5,
+};
+
+enum {
+	LAT_OK = 1,
+	LAT_UNKNOWN = 2,
+	LAT_UNKNOWN_WRITES = 3,
+	LAT_EXCEEDED = 4,
+};
+
+enum wbt_flags {
+	WBT_TRACKED = 1,
+	WBT_READ = 2,
+	WBT_KSWAPD = 4,
+	WBT_DISCARD = 8,
+	WBT_NR_BITS = 4,
+};
+
+struct trace_event_raw_wbt_stat {
+	struct trace_entry ent;
+	char name[32];
+	s64 rmean;
+	u64 rmin;
+	u64 rmax;
+	s64 rnr_samples;
+	s64 rtime;
+	s64 wmean;
+	u64 wmin;
+	u64 wmax;
+	s64 wnr_samples;
+	s64 wtime;
+	char __data[0];
+};
+
+struct trace_event_raw_wbt_lat {
+	struct trace_entry ent;
+	char name[32];
+	unsigned long lat;
+	char __data[0];
+};
+
+struct trace_event_raw_wbt_step {
+	struct trace_entry ent;
+	char name[32];
+	const char *msg;
+	int step;
+	unsigned long window;
+	unsigned int bg;
+	unsigned int normal;
+	unsigned int max;
+	char __data[0];
+};
+
+struct trace_event_raw_wbt_timer {
+	struct trace_entry ent;
+	char name[32];
+	unsigned int status;
+	int step;
+	unsigned int inflight;
+	char __data[0];
+};
+
+struct rq_wb {
+	unsigned int wb_background;
+	unsigned int wb_normal;
+	short enable_state;
+	unsigned int unknown_cnt;
+	u64 win_nsec;
+	u64 cur_win_nsec;
+	struct blk_stat_callback *cb;
+	u64 sync_issue;
+	void *sync_cookie;
+	unsigned int wc;
+	unsigned long last_issue;
+	unsigned long last_comp;
+	unsigned long min_lat_nsec;
+	struct rq_qos rqos;
+	struct rq_wait rq_wait[3];
+	struct rq_depth rq_depth;
+};
+
+struct wbt_wait_data {
+	struct rq_wb *rwb;
+	enum wbt_flags wb_acct;
+	blk_opf_t opf;
+};
+
+struct trace_event_data_offsets_wbt_stat {};
+
+struct trace_event_data_offsets_wbt_lat {};
+
+struct trace_event_data_offsets_wbt_step {};
+
+struct trace_event_data_offsets_wbt_timer {};
+
+struct show_busy_params {
+	struct seq_file *m;
+	struct blk_mq_hw_ctx *hctx;
+};
+
+struct blk_crypto_mode {
+	const char *name;
+	const char *cipher_str;
+	unsigned int keysize;
+	unsigned int security_strength;
+	unsigned int ivsize;
+};
+
+struct blk_crypto_ll_ops {
+	int (*keyslot_program)(struct blk_crypto_profile *, const struct blk_crypto_key *, unsigned int);
+	int (*keyslot_evict)(struct blk_crypto_profile *, const struct blk_crypto_key *, unsigned int);
+	int (*derive_sw_secret)(struct blk_crypto_profile *, const u8 *, size_t, u8 *);
+};
+
+struct blk_crypto_profile {
+	struct blk_crypto_ll_ops ll_ops;
+	unsigned int max_dun_bytes_supported;
+	unsigned int key_types_supported;
+	unsigned int modes_supported[5];
+	struct device *dev;
+	unsigned int num_slots;
+	struct rw_semaphore lock;
+	struct lock_class_key lockdep_key;
+	wait_queue_head_t idle_slots_wait_queue;
+	struct list_head idle_slots;
+	spinlock_t idle_slots_lock;
+	struct hlist_head *slot_hashtable;
+	unsigned int log_slot_ht_size;
+	struct blk_crypto_keyslot *slots;
+};
+
+struct blk_crypto_keyslot {
+	atomic_t slot_refs;
+	struct list_head idle_slot_node;
+	struct hlist_node hash_node;
+	const struct blk_crypto_key *key;
+	struct blk_crypto_profile *profile;
+};
+
+struct blk_crypto_attr {
+	struct attribute attr;
+	ssize_t (*show)(struct blk_crypto_profile *, struct blk_crypto_attr *, char *);
+};
+
+struct blk_crypto_kobj {
+	struct kobject kobj;
+	struct blk_crypto_profile *profile;
+};
+
+struct blk_crypto_fallback_keyslot {
+	enum blk_crypto_mode_num crypto_mode;
+	struct crypto_skcipher *tfms[5];
+};
+
+struct bio_fallback_crypt_ctx {
+	struct bio_crypt_ctx crypt_ctx;
+	struct bvec_iter crypt_iter;
+	union {
+		struct {
+			struct work_struct work;
+			struct bio *bio;
+		};
+		struct {
+			void *bi_private_orig;
+			bio_end_io_t *bi_end_io_orig;
+		};
+	};
+};
+
+union blk_crypto_iv {
+	__le64 dun[4];
+	u8 bytes[32];
+};
+
+struct bd_holder_disk {
+	struct list_head list;
+	struct kobject *holder_dir;
+	int refcnt;
+};
+
+struct io_cache_entry {
+	struct io_wq_work_node node;
+};
+
+struct io_rsrc_put {
+	u64 tag;
+	union {
+		void *rsrc;
+		struct file *file;
+		struct io_mapped_ubuf *buf;
+	};
+};
+
+struct io_rsrc_node {
+	union {
+		struct io_cache_entry cache;
+		struct io_ring_ctx *ctx;
+	};
+	int refs;
+	bool empty;
+	u16 type;
+	struct list_head node;
+	struct io_rsrc_put item;
+};
+
+struct io_mapped_ubuf {
+	u64 ubuf;
+	u64 ubuf_end;
+	unsigned int nr_bvecs;
+	unsigned long acct_pages;
+	struct bio_vec bvec[0];
+};
+
+struct io_buffer {
+	struct list_head list;
+	__u64 addr;
+	__u32 len;
+	__u16 bid;
+	__u16 bgid;
+};
+
+struct io_uring_buf_ring;
+
+struct io_buffer_list {
+	union {
+		struct list_head buf_list;
+		struct {
+			struct page **buf_pages;
+			struct io_uring_buf_ring *buf_ring;
+		};
+		struct callback_head rcu;
+	};
+	__u16 bgid;
+	__u16 buf_nr_pages;
+	__u16 nr_entries;
+	__u16 head;
+	__u16 mask;
+	atomic_t refs;
+	__u8 is_mapped;
+	__u8 is_mmap;
+};
+
+struct io_uring_buf {
+	__u64 addr;
+	__u32 len;
+	__u16 bid;
+	__u16 resv;
+};
+
+struct io_uring_buf_ring {
+	union {
+		struct {
+			__u64 resv1;
+			__u32 resv2;
+			__u16 resv3;
+			__u16 tail;
+		};
+		struct {
+			struct {} __empty_bufs;
+			struct io_uring_buf bufs[0];
+		};
+	};
+};
+
+struct io_poll {
+	struct file *file;
+	struct wait_queue_head *head;
+	__poll_t events;
+	int retries;
+	struct wait_queue_entry wait;
+};
+
+struct async_poll {
+	union {
+		struct io_poll poll;
+		struct io_cache_entry cache;
+	};
+	struct io_poll *double_poll;
+};
+
+struct io_sq_data {
+	refcount_t refs;
+	atomic_t park_pending;
+	struct mutex lock;
+	struct list_head ctx_list;
+	struct task_struct *thread;
+	struct wait_queue_head wait;
+	unsigned int sq_thread_idle;
+	int sq_cpu;
+	pid_t task_pid;
+	pid_t task_tgid;
+	unsigned long state;
+	struct completion exited;
+};
+
+struct io_rsrc_data {
+	struct io_ring_ctx *ctx;
+	u64 **tags;
+	unsigned int nr;
+	u16 rsrc_type;
+	bool quiesce;
+};
+
+typedef void (*btf_trace_io_uring_create)(void *, int, void *, u32, u32, u32);
+
+typedef void (*btf_trace_io_uring_register)(void *, void *, unsigned int, unsigned int, unsigned int, long);
+
+typedef void (*btf_trace_io_uring_file_get)(void *, struct io_kiocb *, int);
+
+typedef void (*btf_trace_io_uring_queue_async_work)(void *, struct io_kiocb *, int);
+
+typedef void (*btf_trace_io_uring_defer)(void *, struct io_kiocb *);
+
+typedef void (*btf_trace_io_uring_link)(void *, struct io_kiocb *, struct io_kiocb *);
+
+typedef void (*btf_trace_io_uring_cqring_wait)(void *, void *, int);
+
+typedef void (*btf_trace_io_uring_fail_link)(void *, struct io_kiocb *, struct io_kiocb *);
+
+typedef void (*btf_trace_io_uring_complete)(void *, void *, void *, u64, int, unsigned int, u64, u64);
+
+typedef void (*btf_trace_io_uring_submit_req)(void *, struct io_kiocb *);
+
+typedef void (*btf_trace_io_uring_poll_arm)(void *, struct io_kiocb *, int, int);
+
+typedef void (*btf_trace_io_uring_task_add)(void *, struct io_kiocb *, int);
+
+typedef void (*btf_trace_io_uring_req_failed)(void *, const struct io_uring_sqe *, struct io_kiocb *, int);
+
+typedef void (*btf_trace_io_uring_cqe_overflow)(void *, void *, unsigned long long, s32, u32, void *);
+
+typedef void (*btf_trace_io_uring_task_work_run)(void *, void *, unsigned int, unsigned int);
+
+typedef void (*btf_trace_io_uring_short_write)(void *, void *, u64, u64, u64);
+
+typedef void (*btf_trace_io_uring_local_work_run)(void *, void *, int, unsigned int);
+
+struct creds;
+
+enum {
+	REQ_F_FIXED_FILE = 1,
+	REQ_F_IO_DRAIN = 2,
+	REQ_F_LINK = 4,
+	REQ_F_HARDLINK = 8,
+	REQ_F_FORCE_ASYNC = 16,
+	REQ_F_BUFFER_SELECT = 32,
+	REQ_F_CQE_SKIP = 64,
+	REQ_F_FAIL = 256,
+	REQ_F_INFLIGHT = 512,
+	REQ_F_CUR_POS = 1024,
+	REQ_F_NOWAIT = 2048,
+	REQ_F_LINK_TIMEOUT = 4096,
+	REQ_F_NEED_CLEANUP = 8192,
+	REQ_F_POLLED = 16384,
+	REQ_F_BUFFER_SELECTED = 32768,
+	REQ_F_BUFFER_RING = 65536,
+	REQ_F_REISSUE = 131072,
+	REQ_F_SUPPORT_NOWAIT = 536870912,
+	REQ_F_ISREG = 1073741824,
+	REQ_F_CREDS = 262144,
+	REQ_F_REFCOUNT = 524288,
+	REQ_F_ARM_LTIMEOUT = 1048576,
+	REQ_F_ASYNC_DATA = 2097152,
+	REQ_F_SKIP_LINK_CQES = 4194304,
+	REQ_F_SINGLE_POLL = 8388608,
+	REQ_F_DOUBLE_POLL = 16777216,
+	REQ_F_PARTIAL_IO = 33554432,
+	REQ_F_APOLL_MULTISHOT = 67108864,
+	REQ_F_CLEAR_POLLIN = 134217728,
+	REQ_F_HASH_LOCKED = 268435456,
+};
+
+enum {
+	IO_WQ_WORK_CANCEL = 1,
+	IO_WQ_WORK_HASHED = 2,
+	IO_WQ_WORK_UNBOUND = 4,
+	IO_WQ_WORK_CONCURRENT = 16,
+	IO_WQ_HASH_SHIFT = 24,
+};
+
+enum {
+	IO_CHECK_CQ_OVERFLOW_BIT = 0,
+	IO_CHECK_CQ_DROPPED_BIT = 1,
+};
+
+enum io_uring_cmd_flags {
+	IO_URING_F_COMPLETE_DEFER = 1,
+	IO_URING_F_UNLOCKED = 2,
+	IO_URING_F_MULTISHOT = 4,
+	IO_URING_F_IOWQ = 8,
+	IO_URING_F_NONBLOCK = -2147483648,
+	IO_URING_F_SQE128 = 256,
+	IO_URING_F_CQE32 = 512,
+	IO_URING_F_IOPOLL = 1024,
+};
+
+enum {
+	IO_APOLL_OK = 0,
+	IO_APOLL_ABORTED = 1,
+	IO_APOLL_READY = 2,
+};
+
+enum {
+	IO_EVENTFD_OP_SIGNAL_BIT = 0,
+	IO_EVENTFD_OP_FREE_BIT = 1,
+};
+
+enum {
+	IORING_CQE_BUFFER_SHIFT = 16,
+};
+
+enum {
+	IOU_F_TWQ_LAZY_WAKE = 1,
+};
+
+enum {
+	IOU_OK = 0,
+	IOU_ISSUE_SKIP_COMPLETE = -529,
+	IOU_REQUEUE = -3072,
+	IOU_STOP_MULTISHOT = -125,
+};
+
+enum {
+	REQ_F_FIXED_FILE_BIT = 0,
+	REQ_F_IO_DRAIN_BIT = 1,
+	REQ_F_LINK_BIT = 2,
+	REQ_F_HARDLINK_BIT = 3,
+	REQ_F_FORCE_ASYNC_BIT = 4,
+	REQ_F_BUFFER_SELECT_BIT = 5,
+	REQ_F_CQE_SKIP_BIT = 6,
+	REQ_F_FAIL_BIT = 8,
+	REQ_F_INFLIGHT_BIT = 9,
+	REQ_F_CUR_POS_BIT = 10,
+	REQ_F_NOWAIT_BIT = 11,
+	REQ_F_LINK_TIMEOUT_BIT = 12,
+	REQ_F_NEED_CLEANUP_BIT = 13,
+	REQ_F_POLLED_BIT = 14,
+	REQ_F_BUFFER_SELECTED_BIT = 15,
+	REQ_F_BUFFER_RING_BIT = 16,
+	REQ_F_REISSUE_BIT = 17,
+	REQ_F_CREDS_BIT = 18,
+	REQ_F_REFCOUNT_BIT = 19,
+	REQ_F_ARM_LTIMEOUT_BIT = 20,
+	REQ_F_ASYNC_DATA_BIT = 21,
+	REQ_F_SKIP_LINK_CQES_BIT = 22,
+	REQ_F_SINGLE_POLL_BIT = 23,
+	REQ_F_DOUBLE_POLL_BIT = 24,
+	REQ_F_PARTIAL_IO_BIT = 25,
+	REQ_F_APOLL_MULTISHOT_BIT = 26,
+	REQ_F_CLEAR_POLLIN_BIT = 27,
+	REQ_F_HASH_LOCKED_BIT = 28,
+	REQ_F_SUPPORT_NOWAIT_BIT = 29,
+	REQ_F_ISREG_BIT = 30,
+	__REQ_F_LAST_BIT = 31,
+};
+
+enum io_uring_op {
+	IORING_OP_NOP = 0,
+	IORING_OP_READV = 1,
+	IORING_OP_WRITEV = 2,
+	IORING_OP_FSYNC = 3,
+	IORING_OP_READ_FIXED = 4,
+	IORING_OP_WRITE_FIXED = 5,
+	IORING_OP_POLL_ADD = 6,
+	IORING_OP_POLL_REMOVE = 7,
+	IORING_OP_SYNC_FILE_RANGE = 8,
+	IORING_OP_SENDMSG = 9,
+	IORING_OP_RECVMSG = 10,
+	IORING_OP_TIMEOUT = 11,
+	IORING_OP_TIMEOUT_REMOVE = 12,
+	IORING_OP_ACCEPT = 13,
+	IORING_OP_ASYNC_CANCEL = 14,
+	IORING_OP_LINK_TIMEOUT = 15,
+	IORING_OP_CONNECT = 16,
+	IORING_OP_FALLOCATE = 17,
+	IORING_OP_OPENAT = 18,
+	IORING_OP_CLOSE = 19,
+	IORING_OP_FILES_UPDATE = 20,
+	IORING_OP_STATX = 21,
+	IORING_OP_READ = 22,
+	IORING_OP_WRITE = 23,
+	IORING_OP_FADVISE = 24,
+	IORING_OP_MADVISE = 25,
+	IORING_OP_SEND = 26,
+	IORING_OP_RECV = 27,
+	IORING_OP_OPENAT2 = 28,
+	IORING_OP_EPOLL_CTL = 29,
+	IORING_OP_SPLICE = 30,
+	IORING_OP_PROVIDE_BUFFERS = 31,
+	IORING_OP_REMOVE_BUFFERS = 32,
+	IORING_OP_TEE = 33,
+	IORING_OP_SHUTDOWN = 34,
+	IORING_OP_RENAMEAT = 35,
+	IORING_OP_UNLINKAT = 36,
+	IORING_OP_MKDIRAT = 37,
+	IORING_OP_SYMLINKAT = 38,
+	IORING_OP_LINKAT = 39,
+	IORING_OP_MSG_RING = 40,
+	IORING_OP_FSETXATTR = 41,
+	IORING_OP_SETXATTR = 42,
+	IORING_OP_FGETXATTR = 43,
+	IORING_OP_GETXATTR = 44,
+	IORING_OP_SOCKET = 45,
+	IORING_OP_URING_CMD = 46,
+	IORING_OP_SEND_ZC = 47,
+	IORING_OP_SENDMSG_ZC = 48,
+	IORING_OP_LAST = 49,
+};
+
+enum {
+	IOSQE_FIXED_FILE_BIT = 0,
+	IOSQE_IO_DRAIN_BIT = 1,
+	IOSQE_IO_LINK_BIT = 2,
+	IOSQE_IO_HARDLINK_BIT = 3,
+	IOSQE_ASYNC_BIT = 4,
+	IOSQE_BUFFER_SELECT_BIT = 5,
+	IOSQE_CQE_SKIP_SUCCESS_BIT = 6,
+};
+
+enum io_wq_cancel {
+	IO_WQ_CANCEL_OK = 0,
+	IO_WQ_CANCEL_RUNNING = 1,
+	IO_WQ_CANCEL_NOTFOUND = 2,
+};
+
+enum {
+	IORING_REGISTER_BUFFERS = 0,
+	IORING_UNREGISTER_BUFFERS = 1,
+	IORING_REGISTER_FILES = 2,
+	IORING_UNREGISTER_FILES = 3,
+	IORING_REGISTER_EVENTFD = 4,
+	IORING_UNREGISTER_EVENTFD = 5,
+	IORING_REGISTER_FILES_UPDATE = 6,
+	IORING_REGISTER_EVENTFD_ASYNC = 7,
+	IORING_REGISTER_PROBE = 8,
+	IORING_REGISTER_PERSONALITY = 9,
+	IORING_UNREGISTER_PERSONALITY = 10,
+	IORING_REGISTER_RESTRICTIONS = 11,
+	IORING_REGISTER_ENABLE_RINGS = 12,
+	IORING_REGISTER_FILES2 = 13,
+	IORING_REGISTER_FILES_UPDATE2 = 14,
+	IORING_REGISTER_BUFFERS2 = 15,
+	IORING_REGISTER_BUFFERS_UPDATE = 16,
+	IORING_REGISTER_IOWQ_AFF = 17,
+	IORING_UNREGISTER_IOWQ_AFF = 18,
+	IORING_REGISTER_IOWQ_MAX_WORKERS = 19,
+	IORING_REGISTER_RING_FDS = 20,
+	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 = 26,
+	IORING_REGISTER_USE_REGISTERED_RING = 2147483648,
+};
+
+enum {
+	IORING_RSRC_FILE = 0,
+	IORING_RSRC_BUFFER = 1,
+};
+
+enum {
+	IORING_RESTRICTION_REGISTER_OP = 0,
+	IORING_RESTRICTION_SQE_OP = 1,
+	IORING_RESTRICTION_SQE_FLAGS_ALLOWED = 2,
+	IORING_RESTRICTION_SQE_FLAGS_REQUIRED = 3,
+	IORING_RESTRICTION_LAST = 4,
+};
+
+struct trace_event_raw_io_uring_create {
+	struct trace_entry ent;
+	int fd;
+	void *ctx;
+	u32 sq_entries;
+	u32 cq_entries;
+	u32 flags;
+	char __data[0];
+};
+
+struct trace_event_raw_io_uring_register {
+	struct trace_entry ent;
+	void *ctx;
+	unsigned int opcode;
+	unsigned int nr_files;
+	unsigned int nr_bufs;
+	long ret;
+	char __data[0];
+};
+
+struct trace_event_raw_io_uring_file_get {
+	struct trace_entry ent;
+	void *ctx;
+	void *req;
+	u64 user_data;
+	int fd;
+	char __data[0];
+};
+
+struct trace_event_raw_io_uring_queue_async_work {
+	struct trace_entry ent;
+	void *ctx;
+	void *req;
+	u64 user_data;
+	u8 opcode;
+	unsigned int flags;
+	struct io_wq_work *work;
+	int rw;
+	u32 __data_loc_op_str;
+	char __data[0];
+};
+
+struct trace_event_raw_io_uring_defer {
+	struct trace_entry ent;
+	void *ctx;
+	void *req;
+	unsigned long long data;
+	u8 opcode;
+	u32 __data_loc_op_str;
+	char __data[0];
+};
+
+struct trace_event_raw_io_uring_link {
+	struct trace_entry ent;
+	void *ctx;
+	void *req;
+	void *target_req;
+	char __data[0];
+};
+
+struct trace_event_raw_io_uring_cqring_wait {
+	struct trace_entry ent;
+	void *ctx;
+	int min_events;
+	char __data[0];
+};
+
+struct trace_event_raw_io_uring_fail_link {
+	struct trace_entry ent;
+	void *ctx;
+	void *req;
+	unsigned long long user_data;
+	u8 opcode;
+	void *link;
+	u32 __data_loc_op_str;
+	char __data[0];
+};
+
+struct trace_event_raw_io_uring_complete {
+	struct trace_entry ent;
+	void *ctx;
+	void *req;
+	u64 user_data;
+	int res;
+	unsigned int cflags;
+	u64 extra1;
+	u64 extra2;
+	char __data[0];
+};
+
+struct trace_event_raw_io_uring_submit_req {
+	struct trace_entry ent;
+	void *ctx;
+	void *req;
+	unsigned long long user_data;
+	u8 opcode;
+	u32 flags;
+	bool sq_thread;
+	u32 __data_loc_op_str;
+	char __data[0];
+};
+
+struct trace_event_raw_io_uring_poll_arm {
+	struct trace_entry ent;
+	void *ctx;
+	void *req;
+	unsigned long long user_data;
+	u8 opcode;
+	int mask;
+	int events;
+	u32 __data_loc_op_str;
+	char __data[0];
+};
+
+struct trace_event_raw_io_uring_task_add {
+	struct trace_entry ent;
+	void *ctx;
+	void *req;
+	unsigned long long user_data;
+	u8 opcode;
+	int mask;
+	u32 __data_loc_op_str;
+	char __data[0];
+};
+
+struct trace_event_raw_io_uring_req_failed {
+	struct trace_entry ent;
+	void *ctx;
+	void *req;
+	unsigned long long user_data;
+	u8 opcode;
+	u8 flags;
+	u8 ioprio;
+	u64 off;
+	u64 addr;
+	u32 len;
+	u32 op_flags;
+	u16 buf_index;
+	u16 personality;
+	u32 file_index;
+	u64 pad1;
+	u64 addr3;
+	int error;
+	u32 __data_loc_op_str;
+	char __data[0];
+};
+
+struct trace_event_raw_io_uring_cqe_overflow {
+	struct trace_entry ent;
+	void *ctx;
+	unsigned long long user_data;
+	s32 res;
+	u32 cflags;
+	void *ocqe;
+	char __data[0];
+};
+
+struct trace_event_raw_io_uring_task_work_run {
+	struct trace_entry ent;
+	void *tctx;
+	unsigned int count;
+	unsigned int loops;
+	char __data[0];
+};
+
+struct trace_event_raw_io_uring_short_write {
+	struct trace_entry ent;
+	void *ctx;
+	u64 fpos;
+	u64 wanted;
+	u64 got;
+	char __data[0];
+};
+
+struct trace_event_raw_io_uring_local_work_run {
+	struct trace_entry ent;
+	void *ctx;
+	int count;
+	unsigned int loops;
+	char __data[0];
+};
+
+struct io_defer_entry {
+	struct list_head list;
+	struct io_kiocb *req;
+	u32 seq;
+};
+
+struct io_tctx_node {
+	struct list_head ctx_node;
+	struct task_struct *task;
+	struct io_ring_ctx *ctx;
+};
+
+struct io_overflow_cqe {
+	struct list_head list;
+	struct io_uring_cqe cqe;
+};
+
+struct io_wait_queue {
+	struct wait_queue_entry wq;
+	struct io_ring_ctx *ctx;
+	unsigned int cq_tail;
+	unsigned int nr_timeouts;
+	ktime_t timeout;
+};
+
+struct io_tctx_exit {
+	struct callback_head task_work;
+	struct completion completion;
+	struct io_ring_ctx *ctx;
+};
+
+struct io_sqring_offsets {
+	__u32 head;
+	__u32 tail;
+	__u32 ring_mask;
+	__u32 ring_entries;
+	__u32 flags;
+	__u32 dropped;
+	__u32 array;
+	__u32 resv1;
+	__u64 user_addr;
+};
+
+struct io_cqring_offsets {
+	__u32 head;
+	__u32 tail;
+	__u32 ring_mask;
+	__u32 ring_entries;
+	__u32 overflow;
+	__u32 cqes;
+	__u32 flags;
+	__u32 resv1;
+	__u64 user_addr;
+};
+
+struct io_uring_params {
+	__u32 sq_entries;
+	__u32 cq_entries;
+	__u32 flags;
+	__u32 sq_thread_cpu;
+	__u32 sq_thread_idle;
+	__u32 features;
+	__u32 wq_fd;
+	__u32 resv[3];
+	struct io_sqring_offsets sq_off;
+	struct io_cqring_offsets cq_off;
+};
+
+struct trace_event_data_offsets_io_uring_queue_async_work {
+	u32 op_str;
+};
+
+struct trace_event_data_offsets_io_uring_defer {
+	u32 op_str;
+};
+
+struct trace_event_data_offsets_io_uring_fail_link {
+	u32 op_str;
+};
+
+struct trace_event_data_offsets_io_uring_submit_req {
+	u32 op_str;
+};
+
+struct trace_event_data_offsets_io_uring_poll_arm {
+	u32 op_str;
+};
+
+struct trace_event_data_offsets_io_uring_task_add {
+	u32 op_str;
+};
+
+struct trace_event_data_offsets_io_uring_req_failed {
+	u32 op_str;
+};
+
+struct io_cold_def {
+	unsigned short async_size;
+	const char *name;
+	int (*prep_async)(struct io_kiocb *);
+	void (*cleanup)(struct io_kiocb *);
+	void (*fail)(struct io_kiocb *);
+};
+
+struct io_issue_def {
+	unsigned int needs_file: 1;
+	unsigned int plug: 1;
+	unsigned int hash_reg_file: 1;
+	unsigned int unbound_nonreg_file: 1;
+	unsigned int pollin: 1;
+	unsigned int pollout: 1;
+	unsigned int poll_exclusive: 1;
+	unsigned int buffer_select: 1;
+	unsigned int not_supported: 1;
+	unsigned int audit_skip: 1;
+	unsigned int ioprio: 1;
+	unsigned int iopoll: 1;
+	unsigned int iopoll_queue: 1;
+	unsigned int manual_alloc: 1;
+	int (*issue)(struct io_kiocb *, unsigned int);
+	int (*prep)(struct io_kiocb *, const struct io_uring_sqe *);
+};
+
+typedef bool work_cancel_fn(struct io_wq_work *, void *);
+
+struct io_uring_getevents_arg {
+	__u64 sigmask;
+	__u32 sigmask_sz;
+	__u32 pad;
+	__u64 ts;
+};
+
+struct io_uring_file_index_range {
+	__u32 off;
+	__u32 len;
+	__u64 resv;
+};
+
+struct trace_event_data_offsets_io_uring_create {};
+
+struct trace_event_data_offsets_io_uring_register {};
+
+struct trace_event_data_offsets_io_uring_file_get {};
+
+struct trace_event_data_offsets_io_uring_link {};
+
+struct trace_event_data_offsets_io_uring_cqring_wait {};
+
+struct trace_event_data_offsets_io_uring_complete {};
+
+struct trace_event_data_offsets_io_uring_cqe_overflow {};
+
+struct trace_event_data_offsets_io_uring_task_work_run {};
+
+struct trace_event_data_offsets_io_uring_short_write {};
+
+struct trace_event_data_offsets_io_uring_local_work_run {};
+
+struct io_task_cancel {
+	struct task_struct *task;
+	bool all;
+};
+
+struct io_uring_probe_op {
+	__u8 op;
+	__u8 resv;
+	__u16 flags;
+	__u32 resv2;
+};
+
+struct io_uring_probe {
+	__u8 last_op;
+	__u8 ops_len;
+	__u16 resv;
+	__u32 resv2[3];
+	struct io_uring_probe_op ops[0];
+};
+
+struct io_uring_restriction {
+	__u16 opcode;
+	union {
+		__u8 register_op;
+		__u8 sqe_op;
+		__u8 sqe_flags;
+	};
+	__u8 resv;
+	__u32 resv2[3];
+};
+
+struct io_xattr {
+	struct file *file;
+	struct xattr_ctx ctx;
+	struct filename *filename;
+};
+
+struct io_rename {
+	struct file *file;
+	int old_dfd;
+	int new_dfd;
+	struct filename *oldpath;
+	struct filename *newpath;
+	int flags;
+};
+
+struct io_unlink {
+	struct file *file;
+	int dfd;
+	int flags;
+	struct filename *filename;
+};
+
+struct io_mkdir {
+	struct file *file;
+	int dfd;
+	umode_t mode;
+	struct filename *filename;
+};
+
+struct io_link {
+	struct file *file;
+	int old_dfd;
+	int new_dfd;
+	struct filename *oldpath;
+	struct filename *newpath;
+	int flags;
+};
+
+struct io_splice {
+	struct file *file_out;
+	loff_t off_out;
+	loff_t off_in;
+	u64 len;
+	int splice_fd_in;
+	unsigned int flags;
+};
+
+struct io_sync {
+	struct file *file;
+	loff_t len;
+	loff_t off;
+	int flags;
+	int mode;
+};
+
+struct io_madvise {
+	struct file *file;
+	u64 addr;
+	u32 len;
+	u32 advice;
+};
+
+struct io_fadvise {
+	struct file *file;
+	u64 offset;
+	u32 len;
+	u32 advice;
+};
+
+struct io_open {
+	struct file *file;
+	int dfd;
+	u32 file_slot;
+	struct filename *filename;
+	struct open_how how;
+	unsigned long nofile;
+};
+
+struct io_close {
+	struct file *file;
+	int fd;
+	u32 file_slot;
+};
+
+enum {
+	SOCKET_URING_OP_SIOCINQ = 0,
+	SOCKET_URING_OP_SIOCOUTQ = 1,
+};
+
+struct io_epoll {
+	struct file *file;
+	int epfd;
+	int op;
+	int fd;
+	struct epoll_event event;
+};
+
+struct io_statx {
+	struct file *file;
+	int dfd;
+	unsigned int mask;
+	unsigned int flags;
+	struct filename *filename;
+	struct statx __attribute__((btf_type_tag("user"))) *buffer;
+};
+
+enum {
+	SKBFL_ZEROCOPY_ENABLE = 1,
+	SKBFL_SHARED_FRAG = 2,
+	SKBFL_PURE_ZEROCOPY = 4,
+	SKBFL_DONT_ORPHAN = 8,
+	SKBFL_MANAGED_FRAG_REFS = 16,
+};
+
+struct io_shutdown {
+	struct file *file;
+	int how;
+};
+
+struct compat_msghdr;
+
+struct user_msghdr;
+
+struct io_sr_msg {
+	struct file *file;
+	union {
+		struct compat_msghdr __attribute__((btf_type_tag("user"))) *umsg_compat;
+		struct user_msghdr __attribute__((btf_type_tag("user"))) *umsg;
+		void __attribute__((btf_type_tag("user"))) *buf;
+	};
+	unsigned int len;
+	unsigned int done_io;
+	unsigned int msg_flags;
+	unsigned int nr_multishot_loops;
+	u16 flags;
+	u16 addr_len;
+	u16 buf_group;
+	void __attribute__((btf_type_tag("user"))) *addr;
+	void __attribute__((btf_type_tag("user"))) *msg_control;
+	struct io_kiocb *notif;
+};
+
+struct compat_msghdr {
+	compat_uptr_t msg_name;
+	compat_int_t msg_namelen;
+	compat_uptr_t msg_iov;
+	compat_size_t msg_iovlen;
+	compat_uptr_t msg_control;
+	compat_size_t msg_controllen;
+	compat_uint_t msg_flags;
+};
+
+struct user_msghdr {
+	void __attribute__((btf_type_tag("user"))) *msg_name;
+	int msg_namelen;
+	struct iovec __attribute__((btf_type_tag("user"))) *msg_iov;
+	__kernel_size_t msg_iovlen;
+	void __attribute__((btf_type_tag("user"))) *msg_control;
+	__kernel_size_t msg_controllen;
+	unsigned int msg_flags;
+};
+
+struct io_accept {
+	struct file *file;
+	struct sockaddr __attribute__((btf_type_tag("user"))) *addr;
+	int __attribute__((btf_type_tag("user"))) *addr_len;
+	int flags;
+	u32 file_slot;
+	unsigned long nofile;
+};
+
+struct io_socket {
+	struct file *file;
+	int domain;
+	int type;
+	int protocol;
+	int flags;
+	u32 file_slot;
+	unsigned long nofile;
+};
+
+struct io_connect {
+	struct file *file;
+	struct sockaddr __attribute__((btf_type_tag("user"))) *addr;
+	int addr_len;
+	bool in_progress;
+	bool seen_econnaborted;
+};
+
+struct io_async_msghdr {
+	union {
+		struct iovec fast_iov[8];
+		struct {
+			struct iovec fast_iov_one;
+			__kernel_size_t controllen;
+			int namelen;
+			__kernel_size_t payloadlen;
+		};
+		struct io_cache_entry cache;
+	};
+	struct iovec *free_iov;
+	struct sockaddr __attribute__((btf_type_tag("user"))) *uaddr;
+	struct msghdr msg;
+	struct __kernel_sockaddr_storage addr;
+};
+
+typedef s32 compat_ssize_t;
+
+struct io_notif_data {
+	struct file *file;
+	struct ubuf_info uarg;
+	unsigned long account_pages;
+	bool zc_report;
+	bool zc_used;
+	bool zc_copied;
+};
+
+struct io_uring_recvmsg_out {
+	__u32 namelen;
+	__u32 controllen;
+	__u32 payloadlen;
+	__u32 flags;
+};
+
+struct io_recvmsg_multishot_hdr {
+	struct io_uring_recvmsg_out msg;
+	struct __kernel_sockaddr_storage addr;
+};
+
+struct io_async_connect {
+	struct __kernel_sockaddr_storage address;
+};
+
+enum {
+	IORING_MSG_DATA = 0,
+	IORING_MSG_SEND_FD = 1,
+};
+
+struct io_msg {
+	struct file *file;
+	struct file *src_file;
+	struct callback_head tw;
+	u64 user_data;
+	u32 len;
+	u32 cmd;
+	u32 src_fd;
+	union {
+		u32 dst_fd;
+		u32 cqe_flags;
+	};
+	u32 flags;
+};
+
+struct io_timeout {
+	struct file *file;
+	u32 off;
+	u32 target_seq;
+	u32 repeats;
+	struct list_head list;
+	struct io_kiocb *head;
+	struct io_kiocb *prev;
+};
+
+struct io_timeout_rem {
+	struct file *file;
+	u64 addr;
+	struct timespec64 ts;
+	u32 flags;
+	bool ltimeout;
+};
+
+struct io_timeout_data {
+	struct io_kiocb *req;
+	struct hrtimer timer;
+	struct timespec64 ts;
+	enum hrtimer_mode mode;
+	u32 flags;
+};
+
+struct io_cancel_data {
+	struct io_ring_ctx *ctx;
+	union {
+		u64 data;
+		struct file *file;
+	};
+	u8 opcode;
+	u32 flags;
+	int seq;
+};
+
+enum {
+	IO_SQ_THREAD_SHOULD_STOP = 0,
+	IO_SQ_THREAD_SHOULD_PARK = 1,
+};
+
+typedef void io_wq_work_fn(struct io_wq_work *);
+
+typedef struct io_wq_work *free_work_fn(struct io_wq_work *);
+
+struct io_wq_data {
+	struct io_wq_hash *hash;
+	struct task_struct *task;
+	io_wq_work_fn *do_work;
+	free_work_fn *free_work;
+};
+
+struct io_uring_rsrc_update {
+	__u32 offset;
+	__u32 resv;
+	__u64 data;
+};
+
+enum {
+	IOU_POLL_DONE = 0,
+	IOU_POLL_NO_ACTION = 1,
+	IOU_POLL_REMOVE_POLL_USE_RES = 2,
+	IOU_POLL_REISSUE = 3,
+	IOU_POLL_REQUEUE = 4,
+};
+
+struct io_poll_update {
+	struct file *file;
+	u64 old_user_data;
+	u64 new_user_data;
+	__poll_t events;
+	bool update_events;
+	bool update_user_data;
+};
+
+struct io_poll_table {
+	struct poll_table_struct pt;
+	struct io_kiocb *req;
+	int nr_entries;
+	int error;
+	bool owning;
+	__poll_t result_mask;
+};
+
+struct io_cancel {
+	struct file *file;
+	u64 addr;
+	u32 flags;
+	s32 fd;
+	u8 opcode;
+};
+
+struct io_uring_sync_cancel_reg {
+	__u64 addr;
+	__s32 fd;
+	__u32 flags;
+	struct __kernel_timespec timeout;
+	__u8 opcode;
+	__u8 pad[7];
+	__u64 pad2[3];
+};
+
+enum {
+	IOU_PBUF_RING_MMAP = 1,
+};
+
+struct io_provide_buf {
+	struct file *file;
+	__u64 addr;
+	__u32 len;
+	__u32 bgid;
+	__u32 nbufs;
+	__u16 bid;
+};
+
+struct io_buf_free {
+	struct hlist_node list;
+	void *mem;
+	size_t size;
+	int inuse;
+};
+
+struct io_uring_buf_reg {
+	__u64 ring_addr;
+	__u32 ring_entries;
+	__u16 bgid;
+	__u16 flags;
+	__u64 resv[3];
+};
+
+struct io_rsrc_update {
+	struct file *file;
+	u64 arg;
+	u32 nr_args;
+	u32 offset;
+};
+
+struct io_uring_rsrc_update2 {
+	__u32 offset;
+	__u32 resv;
+	__u64 data;
+	__u64 tags;
+	__u32 nr;
+	__u32 resv2;
+};
+
+struct io_uring_rsrc_register {
+	__u32 nr;
+	__u32 flags;
+	__u64 resv2;
+	__u64 data;
+	__u64 tags;
+};
+
+struct io_rw {
+	struct kiocb kiocb;
+	u64 addr;
+	u32 len;
+	rwf_t flags;
+};
+
+struct iov_iter_state {
+	size_t iov_offset;
+	size_t count;
+	unsigned long nr_segs;
+};
+
+struct io_rw_state {
+	struct iov_iter iter;
+	struct iov_iter_state iter_state;
+	struct iovec fast_iov[8];
+};
+
+struct io_async_rw {
+	struct io_rw_state s;
+	const struct iovec *free_iovec;
+	size_t bytes_done;
+	struct wait_page_queue wpq;
+};
+
+enum {
+	IO_WQ_BIT_EXIT = 0,
+};
+
+enum {
+	IO_WORKER_F_UP = 1,
+	IO_WORKER_F_RUNNING = 2,
+	IO_WORKER_F_FREE = 4,
+	IO_WORKER_F_BOUND = 8,
+};
+
+enum {
+	IO_ACCT_STALLED_BIT = 0,
+};
+
+enum {
+	IO_WQ_ACCT_BOUND = 0,
+	IO_WQ_ACCT_UNBOUND = 1,
+	IO_WQ_ACCT_NR = 2,
+};
+
+struct io_wq_acct {
+	unsigned int nr_workers;
+	unsigned int max_workers;
+	int index;
+	atomic_t nr_running;
+	raw_spinlock_t lock;
+	struct io_wq_work_list work_list;
+	unsigned long flags;
+};
+
+struct io_wq {
+	unsigned long state;
+	free_work_fn *free_work;
+	io_wq_work_fn *do_work;
+	struct io_wq_hash *hash;
+	atomic_t worker_refs;
+	struct completion worker_done;
+	struct hlist_node cpuhp_node;
+	struct task_struct *task;
+	struct io_wq_acct acct[2];
+	raw_spinlock_t lock;
+	struct hlist_nulls_head free_list;
+	struct list_head all_list;
+	struct wait_queue_entry wait;
+	struct io_wq_work *hash_tail[64];
+	cpumask_var_t cpu_mask;
+};
+
+struct io_worker {
+	refcount_t ref;
+	unsigned int flags;
+	struct hlist_nulls_node nulls_node;
+	struct list_head all_list;
+	struct task_struct *task;
+	struct io_wq *wq;
+	struct io_wq_work *cur_work;
+	struct io_wq_work *next_work;
+	raw_spinlock_t lock;
+	struct completion ref_done;
+	unsigned long create_state;
+	struct callback_head create_work;
+	int create_index;
+	union {
+		struct callback_head rcu;
+		struct work_struct work;
+	};
+};
+
+struct io_cb_cancel_data {
+	work_cancel_fn *fn;
+	void *data;
+	int nr_running;
+	int nr_pending;
+	bool cancel_all;
+};
+
+struct online_data {
+	unsigned int cpu;
+	bool online;
+};
+
+struct wrapper {
+	cmp_func_t cmp;
+	swap_func_t swap;
+};
+
+enum {
+	MAX_OPT_ARGS = 3,
+};
+
+enum {
+	REG_OP_ISFREE = 0,
+	REG_OP_ALLOC = 1,
+	REG_OP_RELEASE = 2,
+};
+
+struct region {
+	unsigned int start;
+	unsigned int off;
+	unsigned int group_len;
+	unsigned int end;
+	unsigned int nbits;
+};
+
+typedef void sg_free_fn(struct scatterlist *, unsigned int);
+
+struct sg_append_table {
+	struct sg_table sgt;
+	struct scatterlist *prv;
+	unsigned int total_nents;
+};
+
+typedef struct scatterlist *sg_alloc_fn(unsigned int, gfp_t);
+
+struct sg_dma_page_iter {
+	struct sg_page_iter base;
+};
+
+struct csum_state {
+	__wsum csum;
+	size_t off;
+};
+
+union nested_table {
+	union nested_table __attribute__((btf_type_tag("rcu"))) *table;
+	struct rhash_lock_head __attribute__((btf_type_tag("rcu"))) *bucket;
+};
+
+struct rhashtable_walker {
+	struct list_head list;
+	struct bucket_table *tbl;
+};
+
+struct rhashtable_iter {
+	struct rhashtable *ht;
+	struct rhash_head *p;
+	struct rhlist_head *list;
+	struct rhashtable_walker walker;
+	unsigned int slot;
+	unsigned int skip;
+	bool end_of_table;
+};
+
+struct once_work {
+	struct work_struct work;
+	struct static_key_true *key;
+	struct module *module;
+};
+
+struct genradix_node {
+	union {
+		struct genradix_node *children[512];
+		u8 data[4096];
+	};
+};
+
+struct genradix_iter {
+	size_t offset;
+	size_t pos;
+};
+
+enum string_size_units {
+	STRING_UNITS_10 = 0,
+	STRING_UNITS_2 = 1,
+};
+
+struct strarray {
+	char **array;
+	size_t n;
+};
+
+struct kunit_hooks_table {
+	void (*fail_current_test)(const char *, int, const char *, ...);
+	void * (*get_static_stub_address)(struct kunit *, void *);
+};
+
+struct reciprocal_value_adv {
+	u32 m;
+	u8 sh;
+	u8 exp;
+	bool is_wide_m;
+};
+
+struct gf128mul_64k {
+	struct gf128mul_4k *t[16];
+};
+
+enum blake2s_lengths {
+	BLAKE2S_BLOCK_SIZE = 64,
+	BLAKE2S_HASH_SIZE = 32,
+	BLAKE2S_KEY_SIZE = 32,
+	BLAKE2S_128_HASH_SIZE = 16,
+	BLAKE2S_160_HASH_SIZE = 20,
+	BLAKE2S_224_HASH_SIZE = 28,
+	BLAKE2S_256_HASH_SIZE = 32,
+};
+
+struct blake2s_state {
+	u32 h[8];
+	u32 t[2];
+	u32 f[2];
+	u8 buf[64];
+	unsigned int buflen;
+	unsigned int outlen;
+};
+
+enum blake2s_iv {
+	BLAKE2S_IV0 = 1779033703,
+	BLAKE2S_IV1 = 3144134277,
+	BLAKE2S_IV2 = 1013904242,
+	BLAKE2S_IV3 = 2773480762,
+	BLAKE2S_IV4 = 1359893119,
+	BLAKE2S_IV5 = 2600822924,
+	BLAKE2S_IV6 = 528734635,
+	BLAKE2S_IV7 = 1541459225,
+};
+
+typedef mpi_limb_t *mpi_ptr_t;
+
+typedef int mpi_size_t;
+
+typedef mpi_limb_t UWtype;
+
+typedef unsigned int UHWtype;
+
+struct mpi_ec_ctx;
+
+struct field_table {
+	const char *p;
+	void (*addm)(MPI, MPI, MPI, struct mpi_ec_ctx *);
+	void (*subm)(MPI, MPI, MPI, struct mpi_ec_ctx *);
+	void (*mulm)(MPI, MPI, MPI, struct mpi_ec_ctx *);
+	void (*mul2)(MPI, MPI, struct mpi_ec_ctx *);
+	void (*pow2)(MPI, const MPI, struct mpi_ec_ctx *);
+};
+
+struct barrett_ctx_s;
+
+typedef struct barrett_ctx_s *mpi_barrett_t;
+
+enum gcry_mpi_ec_models {
+	MPI_EC_WEIERSTRASS = 0,
+	MPI_EC_MONTGOMERY = 1,
+	MPI_EC_EDWARDS = 2,
+};
+
+enum ecc_dialects {
+	ECC_DIALECT_STANDARD = 0,
+	ECC_DIALECT_ED25519 = 1,
+	ECC_DIALECT_SAFECURVE = 2,
+};
+
+struct gcry_mpi_point;
+
+typedef struct gcry_mpi_point *MPI_POINT;
+
+struct mpi_ec_ctx {
+	enum gcry_mpi_ec_models model;
+	enum ecc_dialects dialect;
+	int flags;
+	unsigned int nbits;
+	MPI p;
+	MPI a;
+	MPI b;
+	MPI_POINT G;
+	MPI n;
+	unsigned int h;
+	MPI_POINT Q;
+	MPI d;
+	const char *name;
+	struct {
+		struct {
+			unsigned int a_is_pminus3: 1;
+			unsigned int two_inv_p: 1;
+		} valid;
+		int a_is_pminus3;
+		MPI two_inv_p;
+		mpi_barrett_t p_barrett;
+		MPI scratch[11];
+	} t;
+	void (*addm)(MPI, MPI, MPI, struct mpi_ec_ctx *);
+	void (*subm)(MPI, MPI, MPI, struct mpi_ec_ctx *);
+	void (*mulm)(MPI, MPI, MPI, struct mpi_ec_ctx *);
+	void (*pow2)(MPI, const MPI, struct mpi_ec_ctx *);
+	void (*mul2)(MPI, MPI, struct mpi_ec_ctx *);
+};
+
+struct gcry_mpi_point {
+	MPI x;
+	MPI y;
+	MPI z;
+};
+
+enum gcry_mpi_constants {
+	MPI_C_ZERO = 0,
+	MPI_C_ONE = 1,
+	MPI_C_TWO = 2,
+	MPI_C_THREE = 3,
+	MPI_C_FOUR = 4,
+	MPI_C_EIGHT = 5,
+};
+
+enum gcry_mpi_format {
+	GCRYMPI_FMT_NONE = 0,
+	GCRYMPI_FMT_STD = 1,
+	GCRYMPI_FMT_PGP = 2,
+	GCRYMPI_FMT_SSH = 3,
+	GCRYMPI_FMT_HEX = 4,
+	GCRYMPI_FMT_USG = 5,
+	GCRYMPI_FMT_OPAQUE = 8,
+};
+
+struct barrett_ctx_s {
+	MPI m;
+	int m_copied;
+	int k;
+	MPI y;
+	MPI r1;
+	MPI r2;
+	MPI r3;
+};
+
+struct karatsuba_ctx {
+	struct karatsuba_ctx *next;
+	mpi_ptr_t tspace;
+	mpi_size_t tspace_size;
+	mpi_ptr_t tp;
+	mpi_size_t tp_size;
+};
+
+typedef long mpi_limb_signed_t;
+
+enum devm_ioremap_type {
+	DEVM_IOREMAP = 0,
+	DEVM_IOREMAP_UC = 1,
+	DEVM_IOREMAP_WC = 2,
+	DEVM_IOREMAP_NP = 3,
+};
+
+enum {
+	PCI_STD_RESOURCES = 0,
+	PCI_STD_RESOURCE_END = 5,
+	PCI_ROM_RESOURCE = 6,
+	PCI_IOV_RESOURCES = 7,
+	PCI_IOV_RESOURCE_END = 12,
+	PCI_BRIDGE_RESOURCES = 13,
+	PCI_BRIDGE_RESOURCE_END = 16,
+	PCI_NUM_RESOURCES = 17,
+	DEVICE_COUNT_RESOURCE = 17,
+};
+
+struct pcim_iomap_devres {
+	void *table[6];
+};
+
+struct arch_io_reserve_memtype_wc_devres {
+	resource_size_t start;
+	resource_size_t size;
+};
+
+typedef void (*btf_trace_rwmmio_write)(void *, unsigned long, unsigned long, u64, u8, volatile void *);
+
+typedef void (*btf_trace_rwmmio_post_write)(void *, unsigned long, unsigned long, u64, u8, volatile void *);
+
+typedef void (*btf_trace_rwmmio_read)(void *, unsigned long, unsigned long, u8, volatile const void *);
+
+typedef void (*btf_trace_rwmmio_post_read)(void *, unsigned long, unsigned long, u64, u8, volatile const void *);
+
+struct trace_event_raw_rwmmio_rw_template {
+	struct trace_entry ent;
+	unsigned long caller;
+	unsigned long caller0;
+	unsigned long addr;
+	u64 val;
+	u8 width;
+	char __data[0];
+};
+
+struct trace_event_raw_rwmmio_read {
+	struct trace_entry ent;
+	unsigned long caller;
+	unsigned long caller0;
+	unsigned long addr;
+	u8 width;
+	char __data[0];
+};
+
+struct trace_event_raw_rwmmio_post_read {
+	struct trace_entry ent;
+	unsigned long caller;
+	unsigned long caller0;
+	unsigned long addr;
+	u64 val;
+	u8 width;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_rwmmio_rw_template {};
+
+struct trace_event_data_offsets_rwmmio_read {};
+
+struct trace_event_data_offsets_rwmmio_post_read {};
+
+enum assoc_array_walk_status {
+	assoc_array_walk_tree_empty = 0,
+	assoc_array_walk_found_terminal_node = 1,
+	assoc_array_walk_found_wrong_shortcut = 2,
+};
+
+struct assoc_array_walk_result {
+	struct {
+		struct assoc_array_node *node;
+		int level;
+		int slot;
+	} terminal_node;
+	struct {
+		struct assoc_array_shortcut *shortcut;
+		int level;
+		int sc_level;
+		unsigned long sc_segments;
+		unsigned long dissimilarity;
+	} wrong_shortcut;
+};
+
+struct assoc_array_delete_collapse_context {
+	struct assoc_array_node *node;
+	const void *skip_leaf;
+	int slot;
+};
+
+struct linear_range {
+	unsigned int min;
+	unsigned int min_sel;
+	unsigned int max_sel;
+	unsigned int step;
+};
+
+struct xxh32_state {
+	uint32_t total_len_32;
+	uint32_t large_len;
+	uint32_t v1;
+	uint32_t v2;
+	uint32_t v3;
+	uint32_t v4;
+	uint32_t mem32[4];
+	uint32_t memsize;
+};
+
+struct gen_pool_chunk {
+	struct list_head next_chunk;
+	atomic_long_t avail;
+	phys_addr_t phys_addr;
+	void *owner;
+	unsigned long start_addr;
+	unsigned long end_addr;
+	unsigned long bits[0];
+};
+
+struct genpool_data_align {
+	int align;
+};
+
+struct genpool_data_fixed {
+	unsigned long offset;
+};
+
+typedef enum {
+	HEAD = 0,
+	FLAGS = 1,
+	TIME = 2,
+	OS = 3,
+	EXLEN = 4,
+	EXTRA = 5,
+	NAME = 6,
+	COMMENT = 7,
+	HCRC = 8,
+	DICTID = 9,
+	DICT = 10,
+	TYPE = 11,
+	TYPEDO = 12,
+	STORED = 13,
+	COPY = 14,
+	TABLE = 15,
+	LENLENS = 16,
+	CODELENS = 17,
+	LEN = 18,
+	LENEXT = 19,
+	DIST = 20,
+	DISTEXT = 21,
+	MATCH = 22,
+	LIT = 23,
+	CHECK = 24,
+	LENGTH = 25,
+	DONE = 26,
+	BAD = 27,
+	MEM = 28,
+	SYNC = 29,
+} inflate_mode;
+
+typedef struct {
+	unsigned char op;
+	unsigned char bits;
+	unsigned short val;
+} code;
+
+struct inflate_state {
+	inflate_mode mode;
+	int last;
+	int wrap;
+	int havedict;
+	int flags;
+	unsigned int dmax;
+	unsigned long check;
+	unsigned long total;
+	unsigned int wbits;
+	unsigned int wsize;
+	unsigned int whave;
+	unsigned int write;
+	unsigned char *window;
+	unsigned long hold;
+	unsigned int bits;
+	unsigned int length;
+	unsigned int offset;
+	unsigned int extra;
+	const code *lencode;
+	const code *distcode;
+	unsigned int lenbits;
+	unsigned int distbits;
+	unsigned int ncode;
+	unsigned int nlen;
+	unsigned int ndist;
+	unsigned int have;
+	code *next;
+	unsigned short lens[320];
+	unsigned short work[288];
+	code codes[2048];
+};
+
+struct inflate_workspace {
+	struct inflate_state inflate_state;
+	unsigned char working_window[32768];
+};
+
+typedef enum {
+	CODES = 0,
+	LENS = 1,
+	DISTS = 2,
+} codetype;
+
+typedef unsigned int uInt;
+
+typedef unsigned short ush;
+
+typedef enum {
+	need_more = 0,
+	block_done = 1,
+	finish_started = 2,
+	finish_done = 3,
+} block_state;
+
+struct deflate_state;
+
+typedef struct deflate_state deflate_state;
+
+typedef block_state (*compress_func)(deflate_state *, int);
+
+struct config_s {
+	ush good_length;
+	ush max_lazy;
+	ush nice_length;
+	ush max_chain;
+	compress_func func;
+};
+
+typedef struct config_s config;
+
+typedef unsigned long ulg;
+
+typedef ush Pos;
+
+typedef unsigned int IPos;
+
+struct ct_data_s {
+	union {
+		ush freq;
+		ush code;
+	} fc;
+	union {
+		ush dad;
+		ush len;
+	} dl;
+};
+
+typedef struct ct_data_s ct_data;
+
+struct static_tree_desc_s;
+
+typedef struct static_tree_desc_s static_tree_desc;
+
+struct tree_desc_s {
+	ct_data *dyn_tree;
+	int max_code;
+	static_tree_desc *stat_desc;
+};
+
+typedef unsigned char uch;
+
+struct deflate_state {
+	z_streamp strm;
+	int status;
+	Byte *pending_buf;
+	ulg pending_buf_size;
+	Byte *pending_out;
+	int pending;
+	int noheader;
+	Byte data_type;
+	Byte method;
+	int last_flush;
+	uInt w_size;
+	uInt w_bits;
+	uInt w_mask;
+	Byte *window;
+	ulg window_size;
+	Pos *prev;
+	Pos *head;
+	uInt ins_h;
+	uInt hash_size;
+	uInt hash_bits;
+	uInt hash_mask;
+	uInt hash_shift;
+	long block_start;
+	uInt match_length;
+	IPos prev_match;
+	int match_available;
+	uInt strstart;
+	uInt match_start;
+	uInt lookahead;
+	uInt prev_length;
+	uInt max_chain_length;
+	uInt max_lazy_match;
+	int level;
+	int strategy;
+	uInt good_match;
+	int nice_match;
+	struct ct_data_s dyn_ltree[573];
+	struct ct_data_s dyn_dtree[61];
+	struct ct_data_s bl_tree[39];
+	struct tree_desc_s l_desc;
+	struct tree_desc_s d_desc;
+	struct tree_desc_s bl_desc;
+	ush bl_count[16];
+	int heap[573];
+	int heap_len;
+	int heap_max;
+	uch depth[573];
+	uch *l_buf;
+	uInt lit_bufsize;
+	uInt last_lit;
+	ush *d_buf;
+	ulg opt_len;
+	ulg static_len;
+	ulg compressed_len;
+	uInt matches;
+	int last_eob_len;
+	ush bi_buf;
+	int bi_valid;
+};
+
+struct static_tree_desc_s {
+	const ct_data *static_tree;
+	const int *extra_bits;
+	int extra_base;
+	int elems;
+	int max_length;
+};
+
+struct deflate_workspace {
+	deflate_state deflate_memory;
+	Byte *window_memory;
+	Pos *prev_memory;
+	Pos *head_memory;
+	char *overlay_memory;
+};
+
+typedef struct deflate_workspace deflate_workspace;
+
+typedef struct tree_desc_s tree_desc;
+
+enum {
+	RS_DECODE_LAMBDA = 0,
+	RS_DECODE_SYN = 1,
+	RS_DECODE_B = 2,
+	RS_DECODE_T = 3,
+	RS_DECODE_OMEGA = 4,
+	RS_DECODE_ROOT = 5,
+	RS_DECODE_REG = 6,
+	RS_DECODE_LOC = 7,
+	RS_DECODE_NUM_BUFFERS = 8,
+};
+
+typedef struct {
+	uint32_t hashTable[4096];
+	uint32_t currentOffset;
+	uint32_t initCheck;
+	const uint8_t *dictionary;
+	uint8_t *bufferStart;
+	uint32_t dictSize;
+} LZ4_stream_t_internal;
+
+typedef union {
+	unsigned long long table[2052];
+	LZ4_stream_t_internal internal_donotuse;
+} LZ4_stream_t;
+
+typedef uintptr_t uptrval;
+
+typedef enum {
+	noLimit = 0,
+	limitedOutput = 1,
+} limitedOutput_directive;
+
+typedef enum {
+	byPtr = 0,
+	byU32 = 1,
+	byU16 = 2,
+} tableType_t;
+
+typedef enum {
+	noDict = 0,
+	withPrefix64k = 1,
+	usingExtDict = 2,
+} dict_directive;
+
+typedef enum {
+	noDictIssue = 0,
+	dictSmall = 1,
+} dictIssue_directive;
+
+typedef struct {
+	unsigned int hashTable[32768];
+	unsigned short chainTable[65536];
+	const unsigned char *end;
+	const unsigned char *base;
+	const unsigned char *dictBase;
+	unsigned int dictLimit;
+	unsigned int lowLimit;
+	unsigned int nextToUpdate;
+	unsigned int compressionLevel;
+} LZ4HC_CCtx_internal;
+
+typedef union {
+	size_t table[32774];
+	LZ4HC_CCtx_internal internal_donotuse;
+} LZ4_streamHC_t;
+
+typedef enum {
+	endOnOutputSize = 0,
+	endOnInputSize = 1,
+} endCondition_directive;
+
+typedef enum {
+	decode_full_block = 0,
+	partial_decode = 1,
+} earlyEnd_directive;
+
+typedef struct {
+	const uint8_t *externalDict;
+	size_t extDictSize;
+	const uint8_t *prefixEnd;
+	size_t prefixSize;
+} LZ4_streamDecode_t_internal;
+
+typedef union {
+	unsigned long long table[4];
+	LZ4_streamDecode_t_internal internal_donotuse;
+} LZ4_streamDecode_t;
+
+typedef enum {
+	ZSTD_reset_session_only = 1,
+	ZSTD_reset_parameters = 2,
+	ZSTD_reset_session_and_parameters = 3,
+} ZSTD_ResetDirective;
+
+typedef enum {
+	ZSTD_c_compressionLevel = 100,
+	ZSTD_c_windowLog = 101,
+	ZSTD_c_hashLog = 102,
+	ZSTD_c_chainLog = 103,
+	ZSTD_c_searchLog = 104,
+	ZSTD_c_minMatch = 105,
+	ZSTD_c_targetLength = 106,
+	ZSTD_c_strategy = 107,
+	ZSTD_c_enableLongDistanceMatching = 160,
+	ZSTD_c_ldmHashLog = 161,
+	ZSTD_c_ldmMinMatch = 162,
+	ZSTD_c_ldmBucketSizeLog = 163,
+	ZSTD_c_ldmHashRateLog = 164,
+	ZSTD_c_contentSizeFlag = 200,
+	ZSTD_c_checksumFlag = 201,
+	ZSTD_c_dictIDFlag = 202,
+	ZSTD_c_nbWorkers = 400,
+	ZSTD_c_jobSize = 401,
+	ZSTD_c_overlapLog = 402,
+	ZSTD_c_experimentalParam1 = 500,
+	ZSTD_c_experimentalParam2 = 10,
+	ZSTD_c_experimentalParam3 = 1000,
+	ZSTD_c_experimentalParam4 = 1001,
+	ZSTD_c_experimentalParam5 = 1002,
+	ZSTD_c_experimentalParam6 = 1003,
+	ZSTD_c_experimentalParam7 = 1004,
+	ZSTD_c_experimentalParam8 = 1005,
+	ZSTD_c_experimentalParam9 = 1006,
+	ZSTD_c_experimentalParam10 = 1007,
+	ZSTD_c_experimentalParam11 = 1008,
+	ZSTD_c_experimentalParam12 = 1009,
+	ZSTD_c_experimentalParam13 = 1010,
+	ZSTD_c_experimentalParam14 = 1011,
+	ZSTD_c_experimentalParam15 = 1012,
+} ZSTD_cParameter;
+
+typedef struct {
+	int deltaFindState;
+	U32 deltaNbBits;
+} FSE_symbolCompressionTransform;
+
+typedef struct {
+	ptrdiff_t value;
+	const void *stateTable;
+	const void *symbolTT;
+	unsigned int stateLog;
+} FSE_CState_t;
+
+typedef struct {
+	size_t bitContainer;
+	unsigned int bitPos;
+	char *startPtr;
+	char *ptr;
+	char *endPtr;
+} BIT_CStream_t;
+
+typedef enum {
+	trustInput = 0,
+	checkMaxSymbolValue = 1,
+} HIST_checkInput_e;
+
+typedef s16 int16_t;
+
+typedef int16_t S16;
+
+typedef struct {
+	FSE_CTable CTable[59];
+	U32 scratchBuffer[41];
+	unsigned int count[13];
+	S16 norm[13];
+} HUF_CompressWeightsWksp;
+
+typedef struct {
+	HUF_CompressWeightsWksp wksp;
+	BYTE bitsToWeight[13];
+	BYTE huffWeight[255];
+} HUF_WriteCTableWksp;
+
+struct nodeElt_s {
+	U32 count;
+	U16 parent;
+	BYTE byte;
+	BYTE nbBits;
+};
+
+typedef struct nodeElt_s nodeElt;
+
+typedef nodeElt huffNodeTable[512];
+
+typedef struct {
+	U16 base;
+	U16 curr;
+} rankPos;
+
+typedef struct {
+	huffNodeTable huffNodeTbl;
+	rankPos rankPosition[192];
+} HUF_buildCTable_wksp_tables;
+
+typedef struct {
+	unsigned int count[256];
+	HUF_CElt CTable[257];
+	union {
+		HUF_buildCTable_wksp_tables buildCTable_wksp;
+		HUF_WriteCTableWksp writeCTable_wksp;
+		U32 hist_wksp[1024];
+	} wksps;
+} HUF_compress_tables_t;
+
+typedef struct {
+	size_t bitContainer[2];
+	size_t bitPos[2];
+	BYTE *startPtr;
+	BYTE *ptr;
+	BYTE *endPtr;
+} HUF_CStream_t;
+
+typedef enum {
+	HUF_singleStream = 0,
+	HUF_fourStreams = 1,
+} HUF_nbStreams_e;
+
+typedef size_t (*ZSTD_blockCompressor)(ZSTD_matchState_t *, seqStore_t *, U32 *, const void *, size_t);
+
+struct seqDef_s {
+	U32 offBase;
+	U16 litLength;
+	U16 mlBase;
+};
+
+typedef uint8_t U8;
+
+enum {
+	ZSTDbss_compress = 0,
+	ZSTDbss_noCompress = 1,
+};
+
+struct ZSTD_CDict_s {
+	const void *dictContent;
+	size_t dictContentSize;
+	ZSTD_dictContentType_e dictContentType;
+	U32 *entropyWorkspace;
+	ZSTD_cwksp workspace;
+	ZSTD_matchState_t matchState;
+	ZSTD_compressedBlockState_t cBlockState;
+	ZSTD_customMem customMem;
+	U32 dictID;
+	int compressionLevel;
+	ZSTD_paramSwitch_e useRowMatchFinder;
+};
+
+typedef struct {
+	size_t error;
+	int lowerBound;
+	int upperBound;
+} ZSTD_bounds;
+
+typedef enum {
+	ZSTD_dlm_byCopy = 0,
+	ZSTD_dlm_byRef = 1,
+} ZSTD_dictLoadMethod_e;
+
+typedef enum {
+	ZSTD_cpm_noAttachDict = 0,
+	ZSTD_cpm_attachDict = 1,
+	ZSTD_cpm_createCDict = 2,
+	ZSTD_cpm_unknown = 3,
+} ZSTD_cParamMode_e;
+
+typedef enum {
+	ZSTD_e_continue = 0,
+	ZSTD_e_flush = 1,
+	ZSTD_e_end = 2,
+} ZSTD_EndDirective;
+
+typedef struct {
+	U32 LLtype;
+	U32 Offtype;
+	U32 MLtype;
+	size_t size;
+	size_t lastCountSize;
+} ZSTD_symbolEncodingTypeStats_t;
+
+struct repcodes_s {
+	U32 rep[3];
+};
+
+typedef struct repcodes_s repcodes_t;
+
+typedef struct {
+	U32 *splitLocations;
+	size_t idx;
+} seqStoreSplits;
+
+typedef enum {
+	ZSTD_dtlm_fast = 0,
+	ZSTD_dtlm_full = 1,
+} ZSTD_dictTableLoadMethod_e;
+
+typedef struct {
+	U32 idx;
+	U32 posInSequence;
+	size_t posInSrc;
+} ZSTD_sequencePosition;
+
+typedef size_t (*ZSTD_sequenceCopier)(ZSTD_CCtx *, ZSTD_sequencePosition *, const ZSTD_Sequence * const, size_t, const void *, size_t);
+
+typedef enum {
+	ZSTD_defaultDisallowed = 0,
+	ZSTD_defaultAllowed = 1,
+} ZSTD_defaultPolicy_e;
+
+typedef enum {
+	ZSTD_noDict = 0,
+	ZSTD_extDict = 1,
+	ZSTD_dictMatchState = 2,
+	ZSTD_dedicatedDictSearch = 3,
+} ZSTD_dictMode_e;
+
+typedef enum {
+	ZSTD_no_overlap = 0,
+	ZSTD_overlap_src_before_dst = 1,
+} ZSTD_overlap_e;
+
+typedef struct {
+	unsigned long long ingested;
+	unsigned long long consumed;
+	unsigned long long produced;
+	unsigned long long flushed;
+	unsigned int currentJobID;
+	unsigned int nbActiveWorkers;
+} ZSTD_frameProgression;
+
+typedef enum {
+	ZSTDcrp_makeClean = 0,
+	ZSTDcrp_leaveDirty = 1,
+} ZSTD_compResetPolicy_e;
+
+typedef enum {
+	ZSTDirp_continue = 0,
+	ZSTDirp_reset = 1,
+} ZSTD_indexResetPolicy_e;
+
+typedef enum {
+	ZSTD_resetTarget_CDict = 0,
+	ZSTD_resetTarget_CCtx = 1,
+} ZSTD_resetTarget_e;
+
+typedef struct {
+	S16 norm[53];
+	U32 wksp[285];
+} ZSTD_BuildCTableWksp;
+
+typedef struct {
+	U32 litLength;
+	U32 matchLength;
+} ZSTD_sequenceLength;
+
+typedef enum {
+	search_hashChain = 0,
+	search_binaryTree = 1,
+	search_rowHash = 2,
+} searchMethod_e;
+
+typedef U64 ZSTD_VecMask;
+
+typedef struct {
+	U64 rolling;
+	U64 stopMask;
+} ldmRollingHashState_t;
+
+typedef U32 (*ZSTD_getAllMatchesFn)(ZSTD_match_t *, ZSTD_matchState_t *, U32 *, const BYTE *, const BYTE *, const U32 *, const U32, const U32);
+
+typedef struct {
+	rawSeqStore_t seqStore;
+	U32 startPosInBlock;
+	U32 endPosInBlock;
+	U32 offset;
+} ZSTD_optLdm_t;
+
+typedef ZSTD_frameHeader zstd_frame_header;
+
+typedef struct {
+	U32 tableTime;
+	U32 decode256Time;
+} algo_time_t;
+
+typedef struct {
+	BYTE nbBits;
+	BYTE byte;
+} HUF_DEltX1;
+
+typedef struct {
+	U32 rankVal[13];
+	U32 rankStart[13];
+	U32 statsWksp[218];
+	BYTE symbols[256];
+	BYTE huffWeight[256];
+} HUF_ReadDTableX1_Workspace;
+
+typedef struct {
+	U16 sequence;
+	BYTE nbBits;
+	BYTE length;
+} HUF_DEltX2;
+
+typedef U32 rankValCol_t[13];
+
+typedef struct {
+	BYTE symbol;
+} sortedSymbol_t;
+
+typedef struct {
+	rankValCol_t rankVal[12];
+	U32 rankStats[13];
+	U32 rankStart0[15];
+	sortedSymbol_t sortedSymbol[256];
+	BYTE weightList[256];
+	U32 calleeWksp[218];
+} HUF_ReadDTableX2_Workspace;
+
+typedef struct {
+	BYTE maxTableLog;
+	BYTE tableType;
+	BYTE tableLog;
+	BYTE reserved;
+} DTableDesc;
+
+typedef struct {
+	size_t bitContainer;
+	unsigned int bitsConsumed;
+	const char *ptr;
+	const char *start;
+	const char *limitPtr;
+} BIT_DStream_t;
+
+typedef enum {
+	BIT_DStream_unfinished = 0,
+	BIT_DStream_endOfBuffer = 1,
+	BIT_DStream_completed = 2,
+	BIT_DStream_overflow = 3,
+} BIT_DStream_status;
+
+struct ZSTD_DDict_s {
+	void *dictBuffer;
+	const void *dictContent;
+	size_t dictSize;
+	ZSTD_entropyDTables_t entropy;
+	U32 dictID;
+	U32 entropyPresent;
+	ZSTD_customMem cMem;
+};
+
+typedef struct {
+	size_t compressedSize;
+	unsigned long long decompressedBound;
+} ZSTD_frameSizeInfo;
+
+typedef struct {
+	blockType_e blockType;
+	U32 lastBlock;
+	U32 origSize;
+} blockProperties_t;
+
+typedef enum {
+	not_streaming = 0,
+	is_streaming = 1,
+} streaming_operation;
+
+typedef enum {
+	ZSTD_d_windowLogMax = 100,
+	ZSTD_d_experimentalParam1 = 1000,
+	ZSTD_d_experimentalParam2 = 1001,
+	ZSTD_d_experimentalParam3 = 1002,
+	ZSTD_d_experimentalParam4 = 1003,
+} ZSTD_dParameter;
+
+typedef enum {
+	ZSTDnit_frameHeader = 0,
+	ZSTDnit_blockHeader = 1,
+	ZSTDnit_block = 2,
+	ZSTDnit_lastBlock = 3,
+	ZSTDnit_checksum = 4,
+	ZSTDnit_skippableFrame = 5,
+} ZSTD_nextInputType_e;
+
+typedef enum {
+	ZSTD_lo_isRegularOffset = 0,
+	ZSTD_lo_isLongOffset = 1,
+} ZSTD_longOffset_e;
+
+typedef struct {
+	U32 fastMode;
+	U32 tableLog;
+} ZSTD_seqSymbol_header;
+
+typedef struct {
+	size_t litLength;
+	size_t matchLength;
+	size_t offset;
+} seq_t;
+
+typedef struct {
+	size_t state;
+	const ZSTD_seqSymbol *table;
+} ZSTD_fseState;
+
+typedef struct {
+	BIT_DStream_t DStream;
+	ZSTD_fseState stateLL;
+	ZSTD_fseState stateOffb;
+	ZSTD_fseState stateML;
+	size_t prevOffset[3];
+} seqState_t;
+
+typedef ZSTD_ErrorCode ERR_enum;
+
+typedef unsigned int FSE_DTable;
+
+typedef struct {
+	U16 tableLog;
+	U16 fastMode;
+} FSE_DTableHeader;
+
+typedef struct {
+	unsigned short newState;
+	unsigned char symbol;
+	unsigned char nbBits;
+} FSE_decode_t;
+
+typedef struct {
+	short ncount[256];
+	FSE_DTable dtable[0];
+} FSE_DecompressWksp;
+
+typedef struct {
+	size_t state;
+	const void *table;
+} FSE_DState_t;
+
+enum xz_ret {
+	XZ_OK = 0,
+	XZ_STREAM_END = 1,
+	XZ_UNSUPPORTED_CHECK = 2,
+	XZ_MEM_ERROR = 3,
+	XZ_MEMLIMIT_ERROR = 4,
+	XZ_FORMAT_ERROR = 5,
+	XZ_OPTIONS_ERROR = 6,
+	XZ_DATA_ERROR = 7,
+	XZ_BUF_ERROR = 8,
+};
+
+typedef uint64_t vli_type;
+
+struct xz_dec_hash {
+	vli_type unpadded;
+	vli_type uncompressed;
+	uint32_t crc32;
+};
+
+enum xz_check {
+	XZ_CHECK_NONE = 0,
+	XZ_CHECK_CRC32 = 1,
+	XZ_CHECK_CRC64 = 4,
+	XZ_CHECK_SHA256 = 10,
+};
+
+enum xz_mode {
+	XZ_SINGLE = 0,
+	XZ_PREALLOC = 1,
+	XZ_DYNALLOC = 2,
+};
+
+struct xz_dec_lzma2;
+
+struct xz_dec_bcj;
+
+struct xz_dec {
+	enum {
+		SEQ_STREAM_HEADER = 0,
+		SEQ_BLOCK_START = 1,
+		SEQ_BLOCK_HEADER = 2,
+		SEQ_BLOCK_UNCOMPRESS = 3,
+		SEQ_BLOCK_PADDING = 4,
+		SEQ_BLOCK_CHECK = 5,
+		SEQ_INDEX = 6,
+		SEQ_INDEX_PADDING = 7,
+		SEQ_INDEX_CRC32 = 8,
+		SEQ_STREAM_FOOTER = 9,
+	} sequence;
+	uint32_t pos;
+	vli_type vli;
+	size_t in_start;
+	size_t out_start;
+	uint32_t crc32;
+	enum xz_check check_type;
+	enum xz_mode mode;
+	bool allow_buf_error;
+	struct {
+		vli_type compressed;
+		vli_type uncompressed;
+		uint32_t size;
+	} block_header;
+	struct {
+		vli_type compressed;
+		vli_type uncompressed;
+		vli_type count;
+		struct xz_dec_hash hash;
+	} block;
+	struct {
+		enum {
+			SEQ_INDEX_COUNT = 0,
+			SEQ_INDEX_UNPADDED = 1,
+			SEQ_INDEX_UNCOMPRESSED = 2,
+		} sequence;
+		vli_type size;
+		vli_type count;
+		struct xz_dec_hash hash;
+	} index;
+	struct {
+		size_t pos;
+		size_t size;
+		uint8_t buf[1024];
+	} temp;
+	struct xz_dec_lzma2 *lzma2;
+	struct xz_dec_bcj *bcj;
+	bool bcj_active;
+};
+
+struct xz_buf {
+	const uint8_t *in;
+	size_t in_pos;
+	size_t in_size;
+	uint8_t *out;
+	size_t out_pos;
+	size_t out_size;
+};
+
+enum lzma2_seq {
+	SEQ_CONTROL = 0,
+	SEQ_UNCOMPRESSED_1 = 1,
+	SEQ_UNCOMPRESSED_2 = 2,
+	SEQ_COMPRESSED_0 = 3,
+	SEQ_COMPRESSED_1 = 4,
+	SEQ_PROPERTIES = 5,
+	SEQ_LZMA_PREPARE = 6,
+	SEQ_LZMA_RUN = 7,
+	SEQ_COPY = 8,
+};
+
+enum lzma_state {
+	STATE_LIT_LIT = 0,
+	STATE_MATCH_LIT_LIT = 1,
+	STATE_REP_LIT_LIT = 2,
+	STATE_SHORTREP_LIT_LIT = 3,
+	STATE_MATCH_LIT = 4,
+	STATE_REP_LIT = 5,
+	STATE_SHORTREP_LIT = 6,
+	STATE_LIT_MATCH = 7,
+	STATE_LIT_LONGREP = 8,
+	STATE_LIT_SHORTREP = 9,
+	STATE_NONLIT_MATCH = 10,
+	STATE_NONLIT_REP = 11,
+};
+
+struct rc_dec {
+	uint32_t range;
+	uint32_t code;
+	uint32_t init_bytes_left;
+	const uint8_t *in;
+	size_t in_pos;
+	size_t in_limit;
+};
+
+struct dictionary {
+	uint8_t *buf;
+	size_t start;
+	size_t pos;
+	size_t full;
+	size_t limit;
+	size_t end;
+	uint32_t size;
+	uint32_t size_max;
+	uint32_t allocated;
+	enum xz_mode mode;
+};
+
+struct lzma2_dec {
+	enum lzma2_seq sequence;
+	enum lzma2_seq next_sequence;
+	uint32_t uncompressed;
+	uint32_t compressed;
+	bool need_dict_reset;
+	bool need_props;
+};
+
+struct lzma_len_dec {
+	uint16_t choice;
+	uint16_t choice2;
+	uint16_t low[128];
+	uint16_t mid[128];
+	uint16_t high[256];
+};
+
+struct lzma_dec {
+	uint32_t rep0;
+	uint32_t rep1;
+	uint32_t rep2;
+	uint32_t rep3;
+	enum lzma_state state;
+	uint32_t len;
+	uint32_t lc;
+	uint32_t literal_pos_mask;
+	uint32_t pos_mask;
+	uint16_t is_match[192];
+	uint16_t is_rep[12];
+	uint16_t is_rep0[12];
+	uint16_t is_rep1[12];
+	uint16_t is_rep2[12];
+	uint16_t is_rep0_long[192];
+	uint16_t dist_slot[256];
+	uint16_t dist_special[114];
+	uint16_t dist_align[16];
+	struct lzma_len_dec match_len_dec;
+	struct lzma_len_dec rep_len_dec;
+	uint16_t literal[12288];
+};
+
+struct xz_dec_lzma2 {
+	struct rc_dec rc;
+	struct dictionary dict;
+	struct lzma2_dec lzma2;
+	struct lzma_dec lzma;
+	struct {
+		uint32_t size;
+		uint8_t buf[63];
+	} temp;
+};
+
+struct xz_dec_bcj {
+	enum {
+		BCJ_X86 = 4,
+		BCJ_POWERPC = 5,
+		BCJ_IA64 = 6,
+		BCJ_ARM = 7,
+		BCJ_ARMTHUMB = 8,
+		BCJ_SPARC = 9,
+	} type;
+	enum xz_ret ret;
+	bool single_call;
+	uint32_t pos;
+	uint32_t x86_prev_mask;
+	uint8_t *out;
+	size_t out_pos;
+	size_t out_size;
+	struct {
+		size_t filtered;
+		size_t size;
+		uint8_t buf[16];
+	} temp;
+};
+
+struct ts_config;
+
+struct ts_state;
+
+struct ts_ops {
+	const char *name;
+	struct ts_config * (*init)(const void *, unsigned int, gfp_t, int);
+	unsigned int (*find)(struct ts_config *, struct ts_state *);
+	void (*destroy)(struct ts_config *);
+	void * (*get_pattern)(struct ts_config *);
+	unsigned int (*get_pattern_len)(struct ts_config *);
+	struct module *owner;
+	struct list_head list;
+};
+
+struct ts_config {
+	struct ts_ops *ops;
+	int flags;
+	unsigned int (*get_next_block)(unsigned int, const u8 **, struct ts_config *, struct ts_state *);
+	void (*finish)(struct ts_config *, struct ts_state *);
+};
+
+struct ts_state {
+	unsigned int offset;
+	char cb[48];
+};
+
+struct ts_linear_state {
+	unsigned int len;
+	const void *data;
+};
+
+struct ts_kmp {
+	u8 *pattern;
+	unsigned int pattern_len;
+	unsigned int prefix_tbl[0];
+};
+
+struct ts_bm {
+	u8 *pattern;
+	unsigned int patlen;
+	unsigned int bad_shift[256];
+	unsigned int good_shift[0];
+};
+
+enum {
+	TS_FSM_SPECIFIC = 0,
+	TS_FSM_WILDCARD = 1,
+	TS_FSM_DIGIT = 2,
+	TS_FSM_XDIGIT = 3,
+	TS_FSM_PRINT = 4,
+	TS_FSM_ALPHA = 5,
+	TS_FSM_ALNUM = 6,
+	TS_FSM_ASCII = 7,
+	TS_FSM_CNTRL = 8,
+	TS_FSM_GRAPH = 9,
+	TS_FSM_LOWER = 10,
+	TS_FSM_UPPER = 11,
+	TS_FSM_PUNCT = 12,
+	TS_FSM_SPACE = 13,
+	__TS_FSM_TYPE_MAX = 14,
+};
+
+enum {
+	TS_FSM_SINGLE = 0,
+	TS_FSM_PERHAPS = 1,
+	TS_FSM_ANY = 2,
+	TS_FSM_MULTI = 3,
+	TS_FSM_HEAD_IGNORE = 4,
+	__TS_FSM_RECUR_MAX = 5,
+};
+
+struct ts_fsm_token {
+	__u16 type;
+	__u8 recur;
+	__u8 value;
+};
+
+struct ts_fsm {
+	unsigned int ntokens;
+	struct ts_fsm_token tokens[0];
+};
+
+struct ddebug_table {
+	struct list_head link;
+	struct list_head maps;
+	const char *mod_name;
+	unsigned int num_ddebugs;
+	struct _ddebug *ddebugs;
+};
+
+struct ddebug_class_param {
+	union {
+		unsigned long *bits;
+		unsigned int *lvl;
+	};
+	char flags[8];
+	const struct ddebug_class_map *map;
+};
+
+struct ddebug_query {
+	const char *filename;
+	const char *module;
+	const char *function;
+	const char *format;
+	const char *class_string;
+	unsigned int first_lineno;
+	unsigned int last_lineno;
+};
+
+struct flag_settings {
+	unsigned int flags;
+	unsigned int mask;
+};
+
+struct flagsbuf {
+	char buf[8];
+};
+
+struct ddebug_iter {
+	struct ddebug_table *table;
+	int idx;
+};
+
+enum nla_policy_validation {
+	NLA_VALIDATE_NONE = 0,
+	NLA_VALIDATE_RANGE = 1,
+	NLA_VALIDATE_RANGE_WARN_TOO_LONG = 2,
+	NLA_VALIDATE_MIN = 3,
+	NLA_VALIDATE_MAX = 4,
+	NLA_VALIDATE_MASK = 5,
+	NLA_VALIDATE_RANGE_PTR = 6,
+	NLA_VALIDATE_FUNCTION = 7,
+};
+
+enum {
+	NLA_UNSPEC = 0,
+	NLA_U8 = 1,
+	NLA_U16 = 2,
+	NLA_U32 = 3,
+	NLA_U64 = 4,
+	NLA_STRING = 5,
+	NLA_FLAG = 6,
+	NLA_MSECS = 7,
+	NLA_NESTED = 8,
+	NLA_NESTED_ARRAY = 9,
+	NLA_NUL_STRING = 10,
+	NLA_BINARY = 11,
+	NLA_S8 = 12,
+	NLA_S16 = 13,
+	NLA_S32 = 14,
+	NLA_S64 = 15,
+	NLA_BITFIELD32 = 16,
+	NLA_REJECT = 17,
+	NLA_BE16 = 18,
+	NLA_BE32 = 19,
+	__NLA_TYPE_MAX = 20,
+};
+
+enum netlink_validation {
+	NL_VALIDATE_LIBERAL = 0,
+	NL_VALIDATE_TRAILING = 1,
+	NL_VALIDATE_MAXTYPE = 2,
+	NL_VALIDATE_UNSPEC = 4,
+	NL_VALIDATE_STRICT_ATTRS = 8,
+	NL_VALIDATE_NESTED = 16,
+};
+
+struct nla_bitfield32 {
+	__u32 value;
+	__u32 selector;
+};
+
+struct cpu_rmap {
+	struct kref refcount;
+	u16 size;
+	void **obj;
+	struct {
+		u16 index;
+		u16 dist;
+	} near[0];
+};
+
+struct irq_glue {
+	struct irq_affinity_notify notify;
+	struct cpu_rmap *rmap;
+	u16 index;
+};
+
+struct sg_pool {
+	size_t size;
+	char *name;
+	struct kmem_cache *slab;
+	mempool_t *pool;
+};
+
+union handle_parts {
+	depot_stack_handle_t handle;
+	struct {
+		u32 pool_index: 16;
+		u32 offset: 10;
+		u32 valid: 1;
+		u32 extra: 5;
+	};
+};
+
+struct stack_record {
+	struct stack_record *next;
+	u32 hash;
+	u32 size;
+	union handle_parts handle;
+	unsigned long entries[0];
+};
+
+enum asn1_opcode {
+	ASN1_OP_MATCH = 0,
+	ASN1_OP_MATCH_OR_SKIP = 1,
+	ASN1_OP_MATCH_ACT = 2,
+	ASN1_OP_MATCH_ACT_OR_SKIP = 3,
+	ASN1_OP_MATCH_JUMP = 4,
+	ASN1_OP_MATCH_JUMP_OR_SKIP = 5,
+	ASN1_OP_MATCH_ANY = 8,
+	ASN1_OP_MATCH_ANY_OR_SKIP = 9,
+	ASN1_OP_MATCH_ANY_ACT = 10,
+	ASN1_OP_MATCH_ANY_ACT_OR_SKIP = 11,
+	ASN1_OP_COND_MATCH_OR_SKIP = 17,
+	ASN1_OP_COND_MATCH_ACT_OR_SKIP = 19,
+	ASN1_OP_COND_MATCH_JUMP_OR_SKIP = 21,
+	ASN1_OP_COND_MATCH_ANY = 24,
+	ASN1_OP_COND_MATCH_ANY_OR_SKIP = 25,
+	ASN1_OP_COND_MATCH_ANY_ACT = 26,
+	ASN1_OP_COND_MATCH_ANY_ACT_OR_SKIP = 27,
+	ASN1_OP_COND_FAIL = 28,
+	ASN1_OP_COMPLETE = 29,
+	ASN1_OP_ACT = 30,
+	ASN1_OP_MAYBE_ACT = 31,
+	ASN1_OP_END_SEQ = 32,
+	ASN1_OP_END_SET = 33,
+	ASN1_OP_END_SEQ_OF = 34,
+	ASN1_OP_END_SET_OF = 35,
+	ASN1_OP_END_SEQ_ACT = 36,
+	ASN1_OP_END_SET_ACT = 37,
+	ASN1_OP_END_SEQ_OF_ACT = 38,
+	ASN1_OP_END_SET_OF_ACT = 39,
+	ASN1_OP_RETURN = 40,
+	ASN1_OP__NR = 41,
+};
+
+enum asn1_method {
+	ASN1_PRIM = 0,
+	ASN1_CONS = 1,
+};
+
+struct font_desc {
+	int idx;
+	const char *name;
+	unsigned int width;
+	unsigned int height;
+	unsigned int charcount;
+	const void *data;
+	int pref;
+};
+
+struct font_data {
+	unsigned int extra[4];
+	const unsigned char data[0];
+};
+
+typedef u16 ucs2_char_t;
+
+enum ubsan_checks {
+	ubsan_add_overflow = 0,
+	ubsan_builtin_unreachable = 1,
+	ubsan_cfi_check_fail = 2,
+	ubsan_divrem_overflow = 3,
+	ubsan_dynamic_type_cache_miss = 4,
+	ubsan_float_cast_overflow = 5,
+	ubsan_function_type_mismatch = 6,
+	ubsan_implicit_conversion = 7,
+	ubsan_invalid_builtin = 8,
+	ubsan_invalid_objc_cast = 9,
+	ubsan_load_invalid_value = 10,
+	ubsan_missing_return = 11,
+	ubsan_mul_overflow = 12,
+	ubsan_negate_overflow = 13,
+	ubsan_nullability_arg = 14,
+	ubsan_nullability_return = 15,
+	ubsan_nonnull_arg = 16,
+	ubsan_nonnull_return = 17,
+	ubsan_out_of_bounds = 18,
+	ubsan_pointer_overflow = 19,
+	ubsan_shift_out_of_bounds = 20,
+	ubsan_sub_overflow = 21,
+	ubsan_type_mismatch = 22,
+	ubsan_alignment_assumption = 23,
+	ubsan_vla_bound_not_positive = 24,
+};
+
+struct node_groups {
+	unsigned int id;
+	union {
+		unsigned int ngroups;
+		unsigned int ncpus;
+	};
+};
+
+typedef int (*of_irq_init_cb_t)(struct device_node *, struct device_node *);
+
+struct tegra_ictlr_soc {
+	unsigned int num_ictlrs;
+};
+
+struct tegra_ictlr_info {
+	void *base[6];
+	u32 cop_ier[6];
+	u32 cop_iep[6];
+	u32 cpu_ier[6];
+	u32 cpu_iep[6];
+	u32 ictlr_wake_mask[6];
+};
+
+struct sun6i_r_intc_variant {
+	u32 first_mux_irq;
+	u32 nr_mux_irqs;
+	u32 mux_valid[4];
+};
+
+struct sunxi_sc_nmi_reg_offs {
+	u32 ctrl;
+	u32 pend;
+	u32 enable;
+};
+
+enum {
+	SUNXI_SRC_TYPE_LEVEL_LOW = 0,
+	SUNXI_SRC_TYPE_EDGE_FALLING = 1,
+	SUNXI_SRC_TYPE_LEVEL_HIGH = 2,
+	SUNXI_SRC_TYPE_EDGE_RISING = 3,
+};
+
+union gic_base {
+	void *common_base;
+	void __attribute__((btf_type_tag("percpu"))) **percpu_base;
+};
+
+struct gic_chip_data {
+	union gic_base dist_base;
+	union gic_base cpu_base;
+	void *raw_dist_base;
+	void *raw_cpu_base;
+	u32 percpu_offset;
+	u32 saved_spi_enable[32];
+	u32 saved_spi_active[32];
+	u32 saved_spi_conf[64];
+	u32 saved_spi_target[255];
+	u32 __attribute__((btf_type_tag("percpu"))) *saved_ppi_enable;
+	u32 __attribute__((btf_type_tag("percpu"))) *saved_ppi_active;
+	u32 __attribute__((btf_type_tag("percpu"))) *saved_ppi_conf;
+	struct irq_domain *domain;
+	unsigned int gic_irqs;
+};
+
+struct gic_quirk {
+	const char *desc;
+	const char *compatible;
+	const char *property;
+	bool (*init)(void *);
+	u32 iidr;
+	u32 mask;
+};
+
+struct gic_clk_data {
+	unsigned int num_clocks;
+	const char * const *clocks;
+};
+
+struct clk_bulk_data {
+	const char *id;
+	struct clk *clk;
+};
+
+struct gic_chip_data;
+
+struct gic_chip_pm {
+	struct gic_chip_data *chip_data;
+	const struct gic_clk_data *clk_data;
+	struct clk_bulk_data *clks;
+};
+
+struct v2m_data {
+	struct list_head entry;
+	struct fwnode_handle *fwnode;
+	struct resource res;
+	void *base;
+	u32 spi_start;
+	u32 nr_spis;
+	u32 spi_offset;
+	unsigned long *bm;
+	u32 flags;
+};
+
+struct rdists {
+	struct {
+		raw_spinlock_t rd_lock;
+		void *rd_base;
+		struct page *pend_page;
+		phys_addr_t phys_base;
+		u64 flags;
+		cpumask_t *vpe_table_mask;
+		void *vpe_l1_base;
+	} *rdist;
+	phys_addr_t prop_table_pa;
+	void *prop_table_va;
+	u64 flags;
+	u32 gicd_typer;
+	u32 gicd_typer2;
+	int cpuhp_memreserve_state;
+	bool has_vlpis;
+	bool has_rvpeid;
+	bool has_direct_lpi;
+	bool has_vpend_valid_dirty;
+};
+
+struct redist_region;
+
+struct partition_desc;
+
+struct gic_chip_data___2 {
+	struct fwnode_handle *fwnode;
+	phys_addr_t dist_phys_base;
+	void *dist_base;
+	struct redist_region *redist_regions;
+	struct rdists rdists;
+	struct irq_domain *domain;
+	u64 redist_stride;
+	u32 nr_redist_regions;
+	u64 flags;
+	bool has_rss;
+	unsigned int ppi_nr;
+	struct partition_desc **ppi_descs;
+};
+
+struct redist_region {
+	void *redist_base;
+	phys_addr_t phys_base;
+	bool single_redist;
+};
+
+enum gic_intid_range {
+	SGI_RANGE = 0,
+	PPI_RANGE = 1,
+	SPI_RANGE = 2,
+	EPPI_RANGE = 3,
+	ESPI_RANGE = 4,
+	LPI_RANGE = 5,
+	__INVALID_RANGE__ = 6,
+};
+
+struct partition_affinity {
+	cpumask_t mask;
+	void *partition_id;
+};
+
+struct mbi_range {
+	u32 spi_start;
+	u32 nr_spis;
+	unsigned long *bm;
+};
+
+struct event_lpi_map {
+	unsigned long *lpi_map;
+	u16 *col_map;
+	irq_hw_number_t lpi_base;
+	int nr_lpis;
+	raw_spinlock_t vlpi_lock;
+	struct its_vm *vm;
+	struct its_vlpi_map *vlpi_maps;
+	int nr_vlpis;
+};
+
+struct its_node;
+
+struct its_device___2 {
+	struct list_head entry;
+	struct its_node *its;
+	struct event_lpi_map event_map;
+	void *itt;
+	u32 nr_ites;
+	u32 device_id;
+	bool shared;
+};
+
+struct its_baser {
+	void *base;
+	u64 val;
+	u32 order;
+	u32 psz;
+};
+
+struct its_cmd_block;
+
+struct its_collection___2;
+
+struct its_node {
+	raw_spinlock_t lock;
+	struct mutex dev_alloc_lock;
+	struct list_head entry;
+	void *base;
+	void *sgir_base;
+	phys_addr_t phys_base;
+	struct its_cmd_block *cmd_base;
+	struct its_cmd_block *cmd_write;
+	struct its_baser tables[8];
+	struct its_collection___2 *collections;
+	struct fwnode_handle *fwnode_handle;
+	u64 (*get_msi_base)(struct its_device___2 *);
+	u64 typer;
+	u64 cbaser_save;
+	u32 ctlr_save;
+	u32 mpidr;
+	struct list_head its_device_list;
+	u64 flags;
+	unsigned long list_nr;
+	int numa_node;
+	unsigned int msi_domain_flags;
+	u32 pre_its_base;
+	int vlpi_redist_offset;
+};
+
+struct its_cmd_block {
+	union {
+		u64 raw_cmd[4];
+		__le64 raw_cmd_le[4];
+	};
+};
+
+struct its_collection___2 {
+	u64 target_address;
+	u16 col_id;
+};
+
+struct cpu_lpi_count {
+	atomic_t managed;
+	atomic_t unmanaged;
+};
+
+enum its_vcpu_info_cmd_type {
+	MAP_VLPI = 0,
+	GET_VLPI = 1,
+	PROP_UPDATE_VLPI = 2,
+	PROP_UPDATE_AND_INV_VLPI = 3,
+	SCHEDULE_VPE = 4,
+	DESCHEDULE_VPE = 5,
+	COMMIT_VPE = 6,
+	INVALL_VPE = 7,
+	PROP_UPDATE_VSGI = 8,
+};
+
+struct lpi_range {
+	struct list_head entry;
+	u32 base_id;
+	u32 span;
+};
+
+struct its_cmd_desc {
+	union {
+		struct {
+			struct its_device___2 *dev;
+			u32 event_id;
+		} its_inv_cmd;
+		struct {
+			struct its_device___2 *dev;
+			u32 event_id;
+		} its_clear_cmd;
+		struct {
+			struct its_device___2 *dev;
+			u32 event_id;
+		} its_int_cmd;
+		struct {
+			struct its_device___2 *dev;
+			int valid;
+		} its_mapd_cmd;
+		struct {
+			struct its_collection___2 *col;
+			int valid;
+		} its_mapc_cmd;
+		struct {
+			struct its_device___2 *dev;
+			u32 phys_id;
+			u32 event_id;
+		} its_mapti_cmd;
+		struct {
+			struct its_device___2 *dev;
+			struct its_collection___2 *col;
+			u32 event_id;
+		} its_movi_cmd;
+		struct {
+			struct its_device___2 *dev;
+			u32 event_id;
+		} its_discard_cmd;
+		struct {
+			struct its_collection___2 *col;
+		} its_invall_cmd;
+		struct {
+			struct its_vpe *vpe;
+		} its_vinvall_cmd;
+		struct {
+			struct its_vpe *vpe;
+			struct its_collection___2 *col;
+			bool valid;
+		} its_vmapp_cmd;
+		struct {
+			struct its_vpe *vpe;
+			struct its_device___2 *dev;
+			u32 virt_id;
+			u32 event_id;
+			bool db_enabled;
+		} its_vmapti_cmd;
+		struct {
+			struct its_vpe *vpe;
+			struct its_device___2 *dev;
+			u32 event_id;
+			bool db_enabled;
+		} its_vmovi_cmd;
+		struct {
+			struct its_vpe *vpe;
+			struct its_collection___2 *col;
+			u16 seq_num;
+			u16 its_list;
+		} its_vmovp_cmd;
+		struct {
+			struct its_vpe *vpe;
+		} its_invdb_cmd;
+		struct {
+			struct its_vpe *vpe;
+			u8 sgi;
+			u8 priority;
+			bool enable;
+			bool group;
+			bool clear;
+		} its_vsgi_cmd;
+	};
+};
+
+struct its_cmd_info {
+	enum its_vcpu_info_cmd_type cmd_type;
+	union {
+		struct its_vlpi_map *map;
+		u8 config;
+		bool req_db;
+		struct {
+			bool g0en;
+			bool g1en;
+		};
+		struct {
+			u8 priority;
+			bool group;
+		};
+	};
+};
+
+typedef struct its_collection___2 * (*its_cmd_builder_t)(struct its_node *, struct its_cmd_block *, struct its_cmd_desc *);
+
+typedef struct its_vpe * (*its_cmd_vbuilder_t)(struct its_node *, struct its_cmd_block *, struct its_cmd_desc *);
+
+struct partition_desc {
+	int nr_parts;
+	struct partition_affinity *parts;
+	struct irq_domain *domain;
+	struct irq_desc *chained_desc;
+	unsigned long *bitmap;
+	struct irq_domain_ops ops;
+};
+
+struct mbigen_device {
+	struct platform_device *pdev;
+	void *base;
+};
+
+typedef void (*irq_write_msi_msg_t)(struct msi_desc *, struct msi_msg *);
+
+struct cs_data {
+	u32 enable_mask;
+	u16 slow_cfg;
+	u16 fast_cfg;
+};
+
+struct ebi2_xmem_prop {
+	const char *prop;
+	u32 max;
+	bool slowreg;
+	u16 shift;
+};
+
+struct of_dev_auxdata {
+	char *compatible;
+	resource_size_t phys_addr;
+	char *name;
+	void *platform_data;
+};
+
+struct simple_pm_bus {
+	struct clk_bulk_data *clks;
+	int num_clks;
+};
+
+enum phy_mode {
+	PHY_MODE_INVALID = 0,
+	PHY_MODE_USB_HOST = 1,
+	PHY_MODE_USB_HOST_LS = 2,
+	PHY_MODE_USB_HOST_FS = 3,
+	PHY_MODE_USB_HOST_HS = 4,
+	PHY_MODE_USB_HOST_SS = 5,
+	PHY_MODE_USB_DEVICE = 6,
+	PHY_MODE_USB_DEVICE_LS = 7,
+	PHY_MODE_USB_DEVICE_FS = 8,
+	PHY_MODE_USB_DEVICE_HS = 9,
+	PHY_MODE_USB_DEVICE_SS = 10,
+	PHY_MODE_USB_OTG = 11,
+	PHY_MODE_UFS_HS_A = 12,
+	PHY_MODE_UFS_HS_B = 13,
+	PHY_MODE_PCIE = 14,
+	PHY_MODE_ETHERNET = 15,
+	PHY_MODE_MIPI_DPHY = 16,
+	PHY_MODE_SATA = 17,
+	PHY_MODE_LVDS = 18,
+	PHY_MODE_DP = 19,
+};
+
+enum phy_media {
+	PHY_MEDIA_DEFAULT = 0,
+	PHY_MEDIA_SR = 1,
+	PHY_MEDIA_DAC = 2,
+};
+
+enum device_link_state {
+	DL_STATE_NONE = -1,
+	DL_STATE_DORMANT = 0,
+	DL_STATE_AVAILABLE = 1,
+	DL_STATE_CONSUMER_PROBE = 2,
+	DL_STATE_ACTIVE = 3,
+	DL_STATE_SUPPLIER_UNBIND = 4,
+};
+
+struct phy;
+
+struct phy_lookup {
+	struct list_head node;
+	const char *dev_id;
+	const char *con_id;
+	struct phy *phy;
+};
+
+struct phy_attrs {
+	u32 bus_width;
+	u32 max_link_rate;
+	enum phy_mode mode;
+};
+
+struct phy_ops;
+
+struct regulator;
+
+struct phy {
+	struct device dev;
+	int id;
+	const struct phy_ops *ops;
+	struct mutex mutex;
+	int init_count;
+	int power_count;
+	struct phy_attrs attrs;
+	struct regulator *pwr;
+	struct dentry *debugfs;
+};
+
+union phy_configure_opts;
+
+struct phy_ops {
+	int (*init)(struct phy *);
+	int (*exit)(struct phy *);
+	int (*power_on)(struct phy *);
+	int (*power_off)(struct phy *);
+	int (*set_mode)(struct phy *, enum phy_mode, int);
+	int (*set_media)(struct phy *, enum phy_media);
+	int (*set_speed)(struct phy *, int);
+	int (*configure)(struct phy *, union phy_configure_opts *);
+	int (*validate)(struct phy *, enum phy_mode, int, union phy_configure_opts *);
+	int (*reset)(struct phy *);
+	int (*calibrate)(struct phy *);
+	void (*release)(struct phy *);
+	struct module *owner;
+};
+
+struct phy_configure_opts_mipi_dphy {
+	unsigned int clk_miss;
+	unsigned int clk_post;
+	unsigned int clk_pre;
+	unsigned int clk_prepare;
+	unsigned int clk_settle;
+	unsigned int clk_term_en;
+	unsigned int clk_trail;
+	unsigned int clk_zero;
+	unsigned int d_term_en;
+	unsigned int eot;
+	unsigned int hs_exit;
+	unsigned int hs_prepare;
+	unsigned int hs_settle;
+	unsigned int hs_skip;
+	unsigned int hs_trail;
+	unsigned int hs_zero;
+	unsigned int init;
+	unsigned int lpx;
+	unsigned int ta_get;
+	unsigned int ta_go;
+	unsigned int ta_sure;
+	unsigned int wakeup;
+	unsigned long hs_clk_rate;
+	unsigned long lp_clk_rate;
+	unsigned char lanes;
+};
+
+struct phy_configure_opts_dp {
+	unsigned int link_rate;
+	unsigned int lanes;
+	unsigned int voltage[4];
+	unsigned int pre[4];
+	u8 ssc: 1;
+	u8 set_rate: 1;
+	u8 set_lanes: 1;
+	u8 set_voltages: 1;
+};
+
+struct phy_configure_opts_lvds {
+	unsigned int bits_per_lane_and_dclk_cycle;
+	unsigned long differential_clk_rate;
+	unsigned int lanes;
+	bool is_slave;
+};
+
+union phy_configure_opts {
+	struct phy_configure_opts_mipi_dphy mipi_dphy;
+	struct phy_configure_opts_dp dp;
+	struct phy_configure_opts_lvds lvds;
+};
+
+struct phy_provider {
+	struct device *dev;
+	struct device_node *children;
+	struct module *owner;
+	struct list_head list;
+	struct phy * (*of_xlate)(struct device *, struct of_phandle_args *);
+};
+
+struct device_link {
+	struct device *supplier;
+	struct list_head s_node;
+	struct device *consumer;
+	struct list_head c_node;
+	struct device link_dev;
+	enum device_link_state status;
+	u32 flags;
+	refcount_t rpm_active;
+	struct kref kref;
+	struct work_struct rm_work;
+	bool supplier_preactivated;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+enum pinctrl_map_type {
+	PIN_MAP_TYPE_INVALID = 0,
+	PIN_MAP_TYPE_DUMMY_STATE = 1,
+	PIN_MAP_TYPE_MUX_GROUP = 2,
+	PIN_MAP_TYPE_CONFIGS_PIN = 3,
+	PIN_MAP_TYPE_CONFIGS_GROUP = 4,
+};
+
+enum pin_config_param {
+	PIN_CONFIG_BIAS_BUS_HOLD = 0,
+	PIN_CONFIG_BIAS_DISABLE = 1,
+	PIN_CONFIG_BIAS_HIGH_IMPEDANCE = 2,
+	PIN_CONFIG_BIAS_PULL_DOWN = 3,
+	PIN_CONFIG_BIAS_PULL_PIN_DEFAULT = 4,
+	PIN_CONFIG_BIAS_PULL_UP = 5,
+	PIN_CONFIG_DRIVE_OPEN_DRAIN = 6,
+	PIN_CONFIG_DRIVE_OPEN_SOURCE = 7,
+	PIN_CONFIG_DRIVE_PUSH_PULL = 8,
+	PIN_CONFIG_DRIVE_STRENGTH = 9,
+	PIN_CONFIG_DRIVE_STRENGTH_UA = 10,
+	PIN_CONFIG_INPUT_DEBOUNCE = 11,
+	PIN_CONFIG_INPUT_ENABLE = 12,
+	PIN_CONFIG_INPUT_SCHMITT = 13,
+	PIN_CONFIG_INPUT_SCHMITT_ENABLE = 14,
+	PIN_CONFIG_MODE_LOW_POWER = 15,
+	PIN_CONFIG_MODE_PWM = 16,
+	PIN_CONFIG_OUTPUT = 17,
+	PIN_CONFIG_OUTPUT_ENABLE = 18,
+	PIN_CONFIG_OUTPUT_IMPEDANCE_OHMS = 19,
+	PIN_CONFIG_PERSIST_STATE = 20,
+	PIN_CONFIG_POWER_SOURCE = 21,
+	PIN_CONFIG_SKEW_DELAY = 22,
+	PIN_CONFIG_SLEEP_HARDWARE_STATE = 23,
+	PIN_CONFIG_SLEW_RATE = 24,
+	PIN_CONFIG_END = 127,
+	PIN_CONFIG_MAX = 255,
+};
+
+struct pinctrl_desc;
+
+struct pinctrl;
+
+struct pinctrl_state;
+
+struct pinctrl_dev {
+	struct list_head node;
+	struct pinctrl_desc *desc;
+	struct xarray pin_desc_tree;
+	struct xarray pin_group_tree;
+	unsigned int num_groups;
+	struct xarray pin_function_tree;
+	unsigned int num_functions;
+	struct list_head gpio_ranges;
+	struct device *dev;
+	struct module *owner;
+	void *driver_data;
+	struct pinctrl *p;
+	struct pinctrl_state *hog_default;
+	struct pinctrl_state *hog_sleep;
+	struct mutex mutex;
+	struct dentry *device_root;
+};
+
+struct pinctrl_pin_desc;
+
+struct pinctrl_ops;
+
+struct pinmux_ops;
+
+struct pinconf_ops;
+
+struct pinconf_generic_params;
+
+struct pin_config_item;
+
+struct pinctrl_desc {
+	const char *name;
+	const struct pinctrl_pin_desc *pins;
+	unsigned int npins;
+	const struct pinctrl_ops *pctlops;
+	const struct pinmux_ops *pmxops;
+	const struct pinconf_ops *confops;
+	struct module *owner;
+	unsigned int num_custom_params;
+	const struct pinconf_generic_params *custom_params;
+	const struct pin_config_item *custom_conf_items;
+	bool link_consumers;
+};
+
+struct pinctrl_pin_desc {
+	unsigned int number;
+	const char *name;
+	void *drv_data;
+};
+
+struct pinctrl_map;
+
+struct pinctrl_ops {
+	int (*get_groups_count)(struct pinctrl_dev *);
+	const char * (*get_group_name)(struct pinctrl_dev *, unsigned int);
+	int (*get_group_pins)(struct pinctrl_dev *, unsigned int, const unsigned int **, unsigned int *);
+	void (*pin_dbg_show)(struct pinctrl_dev *, struct seq_file *, unsigned int);
+	int (*dt_node_to_map)(struct pinctrl_dev *, struct device_node *, struct pinctrl_map **, unsigned int *);
+	void (*dt_free_map)(struct pinctrl_dev *, struct pinctrl_map *, unsigned int);
+};
+
+struct dev_pin_info {
+	struct pinctrl *p;
+	struct pinctrl_state *default_state;
+	struct pinctrl_state *init_state;
+	struct pinctrl_state *sleep_state;
+	struct pinctrl_state *idle_state;
+};
+
+struct pinctrl {
+	struct list_head node;
+	struct device *dev;
+	struct list_head states;
+	struct pinctrl_state *state;
+	struct list_head dt_maps;
+	struct kref users;
+};
+
+struct pinctrl_state {
+	struct list_head node;
+	const char *name;
+	struct list_head settings;
+};
+
+struct pinctrl_map_mux {
+	const char *group;
+	const char *function;
+};
+
+struct pinctrl_map_configs {
+	const char *group_or_pin;
+	unsigned long *configs;
+	unsigned int num_configs;
+};
+
+struct pinctrl_map {
+	const char *dev_name;
+	const char *name;
+	enum pinctrl_map_type type;
+	const char *ctrl_dev_name;
+	union {
+		struct pinctrl_map_mux mux;
+		struct pinctrl_map_configs configs;
+	} data;
+};
+
+struct pinctrl_gpio_range;
+
+struct pinmux_ops {
+	int (*request)(struct pinctrl_dev *, unsigned int);
+	int (*free)(struct pinctrl_dev *, unsigned int);
+	int (*get_functions_count)(struct pinctrl_dev *);
+	const char * (*get_function_name)(struct pinctrl_dev *, unsigned int);
+	int (*get_function_groups)(struct pinctrl_dev *, unsigned int, const char * const **, unsigned int *);
+	int (*set_mux)(struct pinctrl_dev *, unsigned int, unsigned int);
+	int (*gpio_request_enable)(struct pinctrl_dev *, struct pinctrl_gpio_range *, unsigned int);
+	void (*gpio_disable_free)(struct pinctrl_dev *, struct pinctrl_gpio_range *, unsigned int);
+	int (*gpio_set_direction)(struct pinctrl_dev *, struct pinctrl_gpio_range *, unsigned int, bool);
+	bool strict;
+};
+
+struct pinconf_ops {
+	bool is_generic;
+	int (*pin_config_get)(struct pinctrl_dev *, unsigned int, unsigned long *);
+	int (*pin_config_set)(struct pinctrl_dev *, unsigned int, unsigned long *, unsigned int);
+	int (*pin_config_group_get)(struct pinctrl_dev *, unsigned int, unsigned long *);
+	int (*pin_config_group_set)(struct pinctrl_dev *, unsigned int, unsigned long *, unsigned int);
+	void (*pin_config_dbg_show)(struct pinctrl_dev *, struct seq_file *, unsigned int);
+	void (*pin_config_group_dbg_show)(struct pinctrl_dev *, struct seq_file *, unsigned int);
+	void (*pin_config_config_dbg_show)(struct pinctrl_dev *, struct seq_file *, unsigned long);
+};
+
+struct pinconf_generic_params {
+	const char * const property;
+	enum pin_config_param param;
+	u32 default_value;
+};
+
+struct pin_config_item {
+	const enum pin_config_param param;
+	const char * const display;
+	const char * const format;
+	bool has_arg;
+};
+
+struct gpio_chip;
+
+struct pinctrl_gpio_range {
+	struct list_head node;
+	const char *name;
+	unsigned int id;
+	unsigned int base;
+	unsigned int pin_base;
+	unsigned int npins;
+	const unsigned int *pins;
+	struct gpio_chip *gc;
+};
+
+union gpio_irq_fwspec;
+
+struct gpio_irq_chip {
+	struct irq_chip *chip;
+	struct irq_domain *domain;
+	struct fwnode_handle *fwnode;
+	struct irq_domain *parent_domain;
+	int (*child_to_parent_hwirq)(struct gpio_chip *, unsigned int, unsigned int, unsigned int *, unsigned int *);
+	int (*populate_parent_alloc_arg)(struct gpio_chip *, union gpio_irq_fwspec *, unsigned int, unsigned int);
+	unsigned int (*child_offset_to_irq)(struct gpio_chip *, unsigned int);
+	struct irq_domain_ops child_irq_domain_ops;
+	irq_flow_handler_t handler;
+	unsigned int default_type;
+	struct lock_class_key *lock_key;
+	struct lock_class_key *request_key;
+	irq_flow_handler_t parent_handler;
+	union {
+		void *parent_handler_data;
+		void **parent_handler_data_array;
+	};
+	unsigned int num_parents;
+	unsigned int *parents;
+	unsigned int *map;
+	bool threaded;
+	bool per_parent_data;
+	bool initialized;
+	bool domain_is_allocated_externally;
+	int (*init_hw)(struct gpio_chip *);
+	void (*init_valid_mask)(struct gpio_chip *, unsigned long *, unsigned int);
+	unsigned long *valid_mask;
+	unsigned int first;
+	void (*irq_enable)(struct irq_data *);
+	void (*irq_disable)(struct irq_data *);
+	void (*irq_unmask)(struct irq_data *);
+	void (*irq_mask)(struct irq_data *);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct gpio_device;
+
+struct gpio_chip {
+	const char *label;
+	struct gpio_device *gpiodev;
+	struct device *parent;
+	struct fwnode_handle *fwnode;
+	struct module *owner;
+	int (*request)(struct gpio_chip *, unsigned int);
+	void (*free)(struct gpio_chip *, unsigned int);
+	int (*get_direction)(struct gpio_chip *, unsigned int);
+	int (*direction_input)(struct gpio_chip *, unsigned int);
+	int (*direction_output)(struct gpio_chip *, unsigned int, int);
+	int (*get)(struct gpio_chip *, unsigned int);
+	int (*get_multiple)(struct gpio_chip *, unsigned long *, unsigned long *);
+	void (*set)(struct gpio_chip *, unsigned int, int);
+	void (*set_multiple)(struct gpio_chip *, unsigned long *, unsigned long *);
+	int (*set_config)(struct gpio_chip *, unsigned int, unsigned long);
+	int (*to_irq)(struct gpio_chip *, unsigned int);
+	void (*dbg_show)(struct seq_file *, struct gpio_chip *);
+	int (*init_valid_mask)(struct gpio_chip *, unsigned long *, unsigned int);
+	int (*add_pin_ranges)(struct gpio_chip *);
+	int (*en_hw_timestamp)(struct gpio_chip *, u32, unsigned long);
+	int (*dis_hw_timestamp)(struct gpio_chip *, u32, unsigned long);
+	int base;
+	u16 ngpio;
+	u16 offset;
+	const char * const *names;
+	bool can_sleep;
+	unsigned long (*read_reg)(void *);
+	void (*write_reg)(void *, unsigned long);
+	bool be_bits;
+	void *reg_dat;
+	void *reg_set;
+	void *reg_clr;
+	void *reg_dir_out;
+	void *reg_dir_in;
+	bool bgpio_dir_unreadable;
+	int bgpio_bits;
+	raw_spinlock_t bgpio_lock;
+	unsigned long bgpio_data;
+	unsigned long bgpio_dir;
+	struct gpio_irq_chip irq;
+	unsigned long *valid_mask;
+	unsigned int of_gpio_n_cells;
+	int (*of_xlate)(struct gpio_chip *, const struct of_phandle_args *, u32 *);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct gpio_desc;
+
+struct gpio_device {
+	struct device dev;
+	struct cdev chrdev;
+	int id;
+	struct device *mockdev;
+	struct module *owner;
+	struct gpio_chip *chip;
+	struct gpio_desc *descs;
+	int base;
+	u16 ngpio;
+	const char *label;
+	void *data;
+	struct list_head list;
+	struct blocking_notifier_head line_state_notifier;
+	struct blocking_notifier_head device_notifier;
+	struct rw_semaphore sem;
+	struct list_head pin_ranges;
+	u64 android_kabi_reserved1;
+};
+
+struct gpio_desc {
+	struct gpio_device *gdev;
+	unsigned long flags;
+	const char *label;
+	const char *name;
+	unsigned int debounce_period_us;
+	u64 android_kabi_reserved1;
+};
+
+union gpio_irq_fwspec {
+	struct irq_fwspec fwspec;
+	msi_alloc_info_t msiinfo;
+};
+
+struct pinctrl_maps {
+	struct list_head node;
+	const struct pinctrl_map *maps;
+	unsigned int num_maps;
+};
+
+struct pinctrl_setting_mux {
+	unsigned int group;
+	unsigned int func;
+};
+
+struct pinctrl_setting_configs {
+	unsigned int group_or_pin;
+	unsigned long *configs;
+	unsigned int num_configs;
+};
+
+struct pinctrl_setting {
+	struct list_head node;
+	enum pinctrl_map_type type;
+	struct pinctrl_dev *pctldev;
+	const char *dev_name;
+	union {
+		struct pinctrl_setting_mux mux;
+		struct pinctrl_setting_configs configs;
+	} data;
+};
+
+struct pin_desc {
+	struct pinctrl_dev *pctldev;
+	const char *name;
+	bool dynamic_name;
+	void *drv_data;
+	unsigned int mux_usecount;
+	const char *mux_owner;
+	const struct pinctrl_setting_mux *mux_setting;
+	const char *gpio_owner;
+};
+
+struct pctldev;
+
+struct group_desc {
+	const char *name;
+	int *pins;
+	int num_pins;
+	void *data;
+};
+
+struct function_desc {
+	const char *name;
+	const char * const *group_names;
+	int num_group_names;
+	void *data;
+};
+
+struct pinctrl_dt_map {
+	struct list_head node;
+	struct pinctrl_dev *pctldev;
+	struct pinctrl_map *map;
+	unsigned int num_maps;
+};
+
+struct pcs_conf_type {
+	const char *name;
+	enum pin_config_param param;
+};
+
+struct pcs_soc_data {
+	unsigned int flags;
+	int irq;
+	unsigned int irq_enable_mask;
+	unsigned int irq_status_mask;
+	void (*rearm)();
+};
+
+struct pcs_gpiofunc_range {
+	unsigned int offset;
+	unsigned int npins;
+	unsigned int gpiofunc;
+	struct list_head node;
+};
+
+struct pcs_data {
+	struct pinctrl_pin_desc *pa;
+	int cur;
+};
+
+struct pcs_device {
+	struct resource *res;
+	void *base;
+	void *saved_vals;
+	unsigned int size;
+	struct device *dev;
+	struct device_node *np;
+	struct pinctrl_dev *pctl;
+	unsigned int flags;
+	struct property *missing_nr_pinctrl_cells;
+	struct pcs_soc_data socdata;
+	raw_spinlock_t lock;
+	struct mutex mutex;
+	unsigned int width;
+	unsigned int fmask;
+	unsigned int fshift;
+	unsigned int foff;
+	unsigned int fmax;
+	bool bits_per_mux;
+	unsigned int bits_per_pin;
+	struct pcs_data pins;
+	struct list_head gpiofuncs;
+	struct list_head irqs;
+	struct irq_chip chip;
+	struct irq_domain *domain;
+	struct pinctrl_desc desc;
+	unsigned int (*read)(void *);
+	void (*write)(unsigned int, void *);
+};
+
+struct pcs_interrupt {
+	void *reg;
+	irq_hw_number_t hwirq;
+	unsigned int irq;
+	struct list_head node;
+};
+
+struct pcs_func_vals {
+	void *reg;
+	unsigned int val;
+	unsigned int mask;
+};
+
+struct pcs_conf_vals;
+
+struct pcs_function {
+	const char *name;
+	struct pcs_func_vals *vals;
+	unsigned int nvals;
+	const char **pgnames;
+	int npgnames;
+	struct pcs_conf_vals *conf;
+	int nconfs;
+	struct list_head node;
+};
+
+struct pcs_conf_vals {
+	enum pin_config_param param;
+	unsigned int val;
+	unsigned int enable;
+	unsigned int disable;
+	unsigned int mask;
+};
+
+struct pcs_pdata {
+	int irq;
+	void (*rearm)();
+};
+
+enum tegra_pinconf_param {
+	TEGRA_PINCONF_PARAM_PULL = 0,
+	TEGRA_PINCONF_PARAM_TRISTATE = 1,
+	TEGRA_PINCONF_PARAM_ENABLE_INPUT = 2,
+	TEGRA_PINCONF_PARAM_OPEN_DRAIN = 3,
+	TEGRA_PINCONF_PARAM_LOCK = 4,
+	TEGRA_PINCONF_PARAM_IORESET = 5,
+	TEGRA_PINCONF_PARAM_RCV_SEL = 6,
+	TEGRA_PINCONF_PARAM_HIGH_SPEED_MODE = 7,
+	TEGRA_PINCONF_PARAM_SCHMITT = 8,
+	TEGRA_PINCONF_PARAM_LOW_POWER_MODE = 9,
+	TEGRA_PINCONF_PARAM_DRIVE_DOWN_STRENGTH = 10,
+	TEGRA_PINCONF_PARAM_DRIVE_UP_STRENGTH = 11,
+	TEGRA_PINCONF_PARAM_SLEW_RATE_FALLING = 12,
+	TEGRA_PINCONF_PARAM_SLEW_RATE_RISING = 13,
+	TEGRA_PINCONF_PARAM_DRIVE_TYPE = 14,
+};
+
+struct cfg_param {
+	const char *property;
+	enum tegra_pinconf_param param;
+};
+
+struct tegra_pinctrl_soc_data;
+
+struct tegra_function;
+
+struct tegra_pmx {
+	struct device *dev;
+	struct pinctrl_dev *pctl;
+	const struct tegra_pinctrl_soc_data *soc;
+	struct tegra_function *functions;
+	const char **group_pins;
+	struct pinctrl_gpio_range gpio_range;
+	struct pinctrl_desc desc;
+	int nbanks;
+	void **regs;
+	u32 *backup_regs;
+};
+
+struct tegra_pingroup;
+
+struct tegra_pinctrl_soc_data {
+	unsigned int ngpios;
+	const char *gpio_compatible;
+	const struct pinctrl_pin_desc *pins;
+	unsigned int npins;
+	const char * const *functions;
+	unsigned int nfunctions;
+	const struct tegra_pingroup *groups;
+	unsigned int ngroups;
+	bool hsm_in_mux;
+	bool schmitt_in_mux;
+	bool drvtype_in_mux;
+	bool sfsel_in_mux;
+};
+
+struct tegra_pingroup {
+	const char *name;
+	const unsigned int *pins;
+	u8 npins;
+	u8 funcs[4];
+	s32 mux_reg;
+	s32 pupd_reg;
+	s32 tri_reg;
+	s32 drv_reg;
+	u32 mux_bank: 2;
+	u32 pupd_bank: 2;
+	u32 tri_bank: 2;
+	u32 drv_bank: 2;
+	s32 mux_bit: 6;
+	s32 pupd_bit: 6;
+	s32 tri_bit: 6;
+	s32 einput_bit: 6;
+	s32 odrain_bit: 6;
+	s32 lock_bit: 6;
+	s32 ioreset_bit: 6;
+	s32 rcv_sel_bit: 6;
+	s32 hsm_bit: 6;
+	long: 2;
+	s32 sfsel_bit: 6;
+	s32 schmitt_bit: 6;
+	s32 lpmd_bit: 6;
+	s32 drvdn_bit: 6;
+	s32 drvup_bit: 6;
+	int: 2;
+	s32 slwr_bit: 6;
+	s32 slwf_bit: 6;
+	s32 lpdr_bit: 6;
+	s32 drvtype_bit: 6;
+	s32 drvdn_width: 6;
+	long: 2;
+	s32 drvup_width: 6;
+	s32 slwr_width: 6;
+	s32 slwf_width: 6;
+	u32 parked_bitmask;
+};
+
+struct tegra_function {
+	const char *name;
+	const char **groups;
+	unsigned int ngroups;
+};
+
+struct tegra_xusb_padctl_function;
+
+struct tegra_xusb_padctl_lane;
+
+struct tegra_xusb_padctl_soc {
+	const struct pinctrl_pin_desc *pins;
+	unsigned int num_pins;
+	const struct tegra_xusb_padctl_function *functions;
+	unsigned int num_functions;
+	const struct tegra_xusb_padctl_lane *lanes;
+	unsigned int num_lanes;
+};
+
+struct tegra_xusb_padctl_function {
+	const char *name;
+	const char * const *groups;
+	unsigned int num_groups;
+};
+
+struct tegra_xusb_padctl_lane {
+	const char *name;
+	unsigned int offset;
+	unsigned int shift;
+	unsigned int mask;
+	unsigned int iddq;
+	const unsigned int *funcs;
+	unsigned int num_funcs;
+};
+
+enum tegra_xusb_padctl_param {
+	TEGRA_XUSB_PADCTL_IDDQ = 0,
+};
+
+struct tegra_xusb_padctl_property {
+	const char *name;
+	enum tegra_xusb_padctl_param param;
+};
+
+struct reset_control;
+
+struct tegra_xusb_padctl {
+	struct device *dev;
+	void *regs;
+	struct mutex lock;
+	struct reset_control *rst;
+	const struct tegra_xusb_padctl_soc *soc;
+	struct pinctrl_dev *pinctrl;
+	struct pinctrl_desc desc;
+	struct phy_provider *provider;
+	struct phy *phys[2];
+	unsigned int enable;
+};
+
+typedef void (*btf_trace_gpio_direction)(void *, unsigned int, int, int);
+
+typedef void (*btf_trace_gpio_value)(void *, unsigned int, int, int);
+
+enum gpio_lookup_flags {
+	GPIO_ACTIVE_HIGH = 0,
+	GPIO_ACTIVE_LOW = 1,
+	GPIO_OPEN_DRAIN = 2,
+	GPIO_OPEN_SOURCE = 4,
+	GPIO_PERSISTENT = 0,
+	GPIO_TRANSITORY = 8,
+	GPIO_PULL_UP = 16,
+	GPIO_PULL_DOWN = 32,
+	GPIO_PULL_DISABLE = 64,
+	GPIO_LOOKUP_FLAGS_DEFAULT = 0,
+};
+
+enum gpiod_flags {
+	GPIOD_ASIS = 0,
+	GPIOD_IN = 1,
+	GPIOD_OUT_LOW = 3,
+	GPIOD_OUT_HIGH = 7,
+	GPIOD_OUT_LOW_OPEN_DRAIN = 11,
+	GPIOD_OUT_HIGH_OPEN_DRAIN = 15,
+};
+
+enum {
+	GPIOLINE_CHANGED_REQUESTED = 1,
+	GPIOLINE_CHANGED_RELEASED = 2,
+	GPIOLINE_CHANGED_CONFIG = 3,
+};
+
+struct gpio_pin_range {
+	struct list_head node;
+	struct pinctrl_dev *pctldev;
+	struct pinctrl_gpio_range range;
+};
+
+struct trace_event_raw_gpio_direction {
+	struct trace_entry ent;
+	unsigned int gpio;
+	int in;
+	int err;
+	char __data[0];
+};
+
+struct trace_event_raw_gpio_value {
+	struct trace_entry ent;
+	unsigned int gpio;
+	int get;
+	int value;
+	char __data[0];
+};
+
+struct gpiod_hog {
+	struct list_head list;
+	const char *chip_label;
+	u16 chip_hwnum;
+	const char *line_name;
+	unsigned long lflags;
+	int dflags;
+};
+
+struct gpiod_lookup {
+	const char *key;
+	u16 chip_hwnum;
+	const char *con_id;
+	unsigned int idx;
+	unsigned long flags;
+};
+
+struct gpiod_lookup_table {
+	struct list_head list;
+	const char *dev_id;
+	struct gpiod_lookup table[0];
+};
+
+typedef struct {
+	spinlock_t *lock;
+	unsigned long flags;
+} class_spinlock_irqsave_t;
+
+struct gpio_array;
+
+struct gpio_descs {
+	struct gpio_array *info;
+	unsigned int ndescs;
+	struct gpio_desc *desc[0];
+};
+
+struct gpio_array {
+	struct gpio_desc **desc;
+	unsigned int size;
+	struct gpio_chip *chip;
+	unsigned long *get_mask;
+	unsigned long *set_mask;
+	u64 android_kabi_reserved1;
+	unsigned long invert_mask[0];
+};
+
+struct trace_event_data_offsets_gpio_direction {};
+
+struct trace_event_data_offsets_gpio_value {};
+
+struct gpio {
+	unsigned int gpio;
+	unsigned long flags;
+	const char *label;
+};
+
+enum of_gpio_flags {
+	OF_GPIO_ACTIVE_LOW = 1,
+	OF_GPIO_SINGLE_ENDED = 2,
+	OF_GPIO_OPEN_DRAIN = 4,
+	OF_GPIO_TRANSITORY = 8,
+	OF_GPIO_PULL_UP = 16,
+	OF_GPIO_PULL_DOWN = 32,
+	OF_GPIO_PULL_DISABLE = 64,
+};
+
+typedef struct gpio_desc * (*of_find_gpio_quirk)(struct device_node *, const char *, unsigned int, enum of_gpio_flags *);
+
+struct of_rename_gpio {
+	const char *con_id;
+	const char *legacy_id;
+	const char *compatible;
+};
+
+enum gpio_v2_line_flag {
+	GPIO_V2_LINE_FLAG_USED = 1,
+	GPIO_V2_LINE_FLAG_ACTIVE_LOW = 2,
+	GPIO_V2_LINE_FLAG_INPUT = 4,
+	GPIO_V2_LINE_FLAG_OUTPUT = 8,
+	GPIO_V2_LINE_FLAG_EDGE_RISING = 16,
+	GPIO_V2_LINE_FLAG_EDGE_FALLING = 32,
+	GPIO_V2_LINE_FLAG_OPEN_DRAIN = 64,
+	GPIO_V2_LINE_FLAG_OPEN_SOURCE = 128,
+	GPIO_V2_LINE_FLAG_BIAS_PULL_UP = 256,
+	GPIO_V2_LINE_FLAG_BIAS_PULL_DOWN = 512,
+	GPIO_V2_LINE_FLAG_BIAS_DISABLED = 1024,
+	GPIO_V2_LINE_FLAG_EVENT_CLOCK_REALTIME = 2048,
+	GPIO_V2_LINE_FLAG_EVENT_CLOCK_HTE = 4096,
+};
+
+enum gpio_v2_line_changed_type {
+	GPIO_V2_LINE_CHANGED_REQUESTED = 1,
+	GPIO_V2_LINE_CHANGED_RELEASED = 2,
+	GPIO_V2_LINE_CHANGED_CONFIG = 3,
+};
+
+enum gpio_v2_line_attr_id {
+	GPIO_V2_LINE_ATTR_ID_FLAGS = 1,
+	GPIO_V2_LINE_ATTR_ID_OUTPUT_VALUES = 2,
+	GPIO_V2_LINE_ATTR_ID_DEBOUNCE = 3,
+};
+
+enum gpio_v2_line_event_id {
+	GPIO_V2_LINE_EVENT_RISING_EDGE = 1,
+	GPIO_V2_LINE_EVENT_FALLING_EDGE = 2,
+};
+
+struct gpioevent_data {
+	__u64 timestamp;
+	__u32 id;
+};
+
+struct lineevent_state {
+	struct gpio_device *gdev;
+	const char *label;
+	struct gpio_desc *desc;
+	u32 eflags;
+	int irq;
+	wait_queue_head_t wait;
+	struct notifier_block device_unregistered_nb;
+	struct {
+		union {
+			struct __kfifo kfifo;
+			struct gpioevent_data *type;
+			const struct gpioevent_data *const_type;
+			char (*rectype)[0];
+			struct gpioevent_data *ptr;
+			const struct gpioevent_data *ptr_const;
+		};
+		struct gpioevent_data buf[16];
+	} events;
+	u64 timestamp;
+};
+
+struct linereq;
+
+struct line {
+	struct gpio_desc *desc;
+	struct linereq *req;
+	unsigned int irq;
+	u64 edflags;
+	u64 timestamp_ns;
+	u32 req_seqno;
+	u32 line_seqno;
+	struct delayed_work work;
+	unsigned int sw_debounced;
+	unsigned int level;
+};
+
+struct gpio_v2_line_event {
+	__u64 timestamp_ns;
+	__u32 id;
+	__u32 offset;
+	__u32 seqno;
+	__u32 line_seqno;
+	__u32 padding[6];
+};
+
+struct linereq {
+	struct gpio_device *gdev;
+	const char *label;
+	u32 num_lines;
+	wait_queue_head_t wait;
+	struct notifier_block device_unregistered_nb;
+	u32 event_buffer_size;
+	struct {
+		union {
+			struct __kfifo kfifo;
+			struct gpio_v2_line_event *type;
+			const struct gpio_v2_line_event *const_type;
+			char (*rectype)[0];
+			struct gpio_v2_line_event *ptr;
+			const struct gpio_v2_line_event *ptr_const;
+		};
+		struct gpio_v2_line_event buf[0];
+	} events;
+	atomic_t seqno;
+	struct mutex config_mutex;
+	struct line lines[0];
+};
+
+struct gpio_v2_line_attribute {
+	__u32 id;
+	__u32 padding;
+	union {
+		__u64 flags;
+		__u64 values;
+		__u32 debounce_period_us;
+	};
+};
+
+struct gpio_v2_line_info {
+	char name[32];
+	char consumer[32];
+	__u32 offset;
+	__u32 num_attrs;
+	__u64 flags;
+	struct gpio_v2_line_attribute attrs[10];
+	__u32 padding[4];
+};
+
+struct gpio_v2_line_info_changed {
+	struct gpio_v2_line_info info;
+	__u64 timestamp_ns;
+	__u32 event_type;
+	__u32 padding[5];
+};
+
+struct gpio_chardev_data {
+	struct gpio_device *gdev;
+	wait_queue_head_t wait;
+	struct {
+		union {
+			struct __kfifo kfifo;
+			struct gpio_v2_line_info_changed *type;
+			const struct gpio_v2_line_info_changed *const_type;
+			char (*rectype)[0];
+			struct gpio_v2_line_info_changed *ptr;
+			const struct gpio_v2_line_info_changed *ptr_const;
+		};
+		struct gpio_v2_line_info_changed buf[32];
+	} events;
+	struct notifier_block lineinfo_changed_nb;
+	struct notifier_block device_unregistered_nb;
+	unsigned long *watched_lines;
+	atomic_t watch_abi_version;
+};
+
+typedef ssize_t (*read_fn)(struct file *, char __attribute__((btf_type_tag("user"))) *, size_t, loff_t *);
+
+struct gpioline_info {
+	__u32 line_offset;
+	__u32 flags;
+	char name[32];
+	char consumer[32];
+};
+
+struct gpioline_info_changed {
+	struct gpioline_info info;
+	__u64 timestamp;
+	__u32 event_type;
+	__u32 padding[5];
+};
+
+typedef __poll_t (*poll_fn)(struct file *, struct poll_table_struct *);
+
+typedef long (*ioctl_fn)(struct file *, unsigned int, unsigned long);
+
+struct gpio_v2_line_config_attribute {
+	struct gpio_v2_line_attribute attr;
+	__u64 mask;
+};
+
+struct gpio_v2_line_config {
+	__u64 flags;
+	__u32 num_attrs;
+	__u32 padding[5];
+	struct gpio_v2_line_config_attribute attrs[10];
+};
+
+struct gpio_v2_line_request {
+	__u32 offsets[64];
+	char consumer[32];
+	struct gpio_v2_line_config config;
+	__u32 num_lines;
+	__u32 event_buffer_size;
+	__u32 padding[5];
+	__s32 fd;
+};
+
+struct gpiochip_info {
+	char name[32];
+	char label[32];
+	__u32 lines;
+};
+
+struct gpioevent_request {
+	__u32 lineoffset;
+	__u32 handleflags;
+	__u32 eventflags;
+	char consumer_label[32];
+	int fd;
+};
+
+struct gpiohandle_request {
+	__u32 lineoffsets[64];
+	__u32 flags;
+	__u8 default_values[64];
+	char consumer_label[32];
+	__u32 lines;
+	int fd;
+};
+
+struct linehandle_state {
+	struct gpio_device *gdev;
+	const char *label;
+	struct gpio_desc *descs[64];
+	u32 num_descs;
+};
+
+struct gpiohandle_data {
+	__u8 values[64];
+};
+
+struct gpiohandle_config {
+	__u32 flags;
+	__u8 default_values[64];
+	__u32 padding[4];
+};
+
+struct gpio_v2_line_values {
+	__u64 bits;
+	__u64 mask;
+};
+
+struct software_node {
+	const char *name;
+	const struct software_node *parent;
+	const struct property_entry *properties;
+};
+
+struct bgpio_pdata {
+	const char *label;
+	int base;
+	int ngpio;
+};
+
+struct amba_device;
+
+struct amba_id;
+
+struct amba_driver {
+	struct device_driver drv;
+	int (*probe)(struct amba_device *, const struct amba_id *);
+	void (*remove)(struct amba_device *);
+	void (*shutdown)(struct amba_device *);
+	const struct amba_id *id_table;
+	bool driver_managed_dma;
+	u64 android_kabi_reserved1;
+};
+
+struct amba_cs_uci_id {
+	unsigned int devarch;
+	unsigned int devarch_mask;
+	unsigned int devtype;
+	void *data;
+};
+
+struct amba_device {
+	struct device dev;
+	struct resource res;
+	struct clk *pclk;
+	struct device_dma_parameters dma_parms;
+	unsigned int periphid;
+	struct mutex periphid_lock;
+	unsigned int cid;
+	struct amba_cs_uci_id uci;
+	unsigned int irq[9];
+	const char *driver_override;
+	u64 android_kabi_reserved1;
+};
+
+struct amba_id {
+	unsigned int id;
+	unsigned int mask;
+	void *data;
+};
+
+struct pl061_context_save_regs {
+	u8 gpio_data;
+	u8 gpio_dir;
+	u8 gpio_is;
+	u8 gpio_ibe;
+	u8 gpio_iev;
+	u8 gpio_ie;
+};
+
+struct pl061 {
+	raw_spinlock_t lock;
+	void *base;
+	struct gpio_chip gc;
+	int parent_irq;
+	struct pl061_context_save_regs csave_regs;
+};
+
+struct pwm_device;
+
+struct pwm_state;
+
+typedef void (*btf_trace_pwm_apply)(void *, struct pwm_device *, const struct pwm_state *, int);
+
+enum pwm_polarity {
+	PWM_POLARITY_NORMAL = 0,
+	PWM_POLARITY_INVERSED = 1,
+};
+
+struct pwm_args {
+	u64 period;
+	enum pwm_polarity polarity;
+};
+
+struct pwm_state {
+	u64 period;
+	u64 duty_cycle;
+	enum pwm_polarity polarity;
+	bool enabled;
+	bool usage_power;
+};
+
+struct pwm_chip;
+
+struct pwm_device {
+	const char *label;
+	unsigned long flags;
+	unsigned int hwpwm;
+	unsigned int pwm;
+	struct pwm_chip *chip;
+	void *chip_data;
+	struct pwm_args args;
+	struct pwm_state state;
+	struct pwm_state last;
+	u64 android_kabi_reserved1;
+};
+
+struct pwm_ops;
+
+struct pwm_chip {
+	struct device *dev;
+	const struct pwm_ops *ops;
+	int base;
+	unsigned int npwm;
+	struct pwm_device * (*of_xlate)(struct pwm_chip *, const struct of_phandle_args *);
+	unsigned int of_pwm_n_cells;
+	struct list_head list;
+	struct pwm_device *pwms;
+	u64 android_kabi_reserved1;
+};
+
+struct pwm_capture;
+
+struct pwm_ops {
+	int (*request)(struct pwm_chip *, struct pwm_device *);
+	void (*free)(struct pwm_chip *, struct pwm_device *);
+	int (*capture)(struct pwm_chip *, struct pwm_device *, struct pwm_capture *, unsigned long);
+	int (*apply)(struct pwm_chip *, struct pwm_device *, const struct pwm_state *);
+	int (*get_state)(struct pwm_chip *, struct pwm_device *, struct pwm_state *);
+	struct module *owner;
+	u64 android_kabi_reserved1;
+};
+
+struct pwm_capture {
+	unsigned int period;
+	unsigned int duty_cycle;
+};
+
+typedef void (*btf_trace_pwm_get)(void *, struct pwm_device *, const struct pwm_state *, int);
+
+enum {
+	PWMF_REQUESTED = 0,
+	PWMF_EXPORTED = 1,
+};
+
+struct pwm_lookup {
+	struct list_head list;
+	const char *provider;
+	unsigned int index;
+	const char *dev_id;
+	const char *con_id;
+	unsigned int period;
+	enum pwm_polarity polarity;
+	const char *module;
+};
+
+struct trace_event_raw_pwm {
+	struct trace_entry ent;
+	struct pwm_device *pwm;
+	u64 period;
+	u64 duty_cycle;
+	enum pwm_polarity polarity;
+	bool enabled;
+	int err;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_pwm {};
+
+struct pwm_export {
+	struct device child;
+	struct pwm_device *pwm;
+	struct mutex lock;
+	struct pwm_state suspend;
+};
+
+enum {
+	pci_channel_io_normal = 1,
+	pci_channel_io_frozen = 2,
+	pci_channel_io_perm_failure = 3,
+};
+
+struct rcec_ea {
+	u8 nextbusn;
+	u8 lastbusn;
+	u32 bitmap;
+};
+
+struct pci_sriov {
+	int pos;
+	int nres;
+	u32 cap;
+	u16 ctrl;
+	u16 total_VFs;
+	u16 initial_VFs;
+	u16 num_VFs;
+	u16 offset;
+	u16 stride;
+	u16 vf_device;
+	u32 pgsz;
+	u8 link;
+	u8 max_VF_buses;
+	u16 driver_max_VFs;
+	struct pci_dev *dev;
+	struct pci_dev *self;
+	u32 class;
+	u8 hdr_type;
+	u16 subsystem_vendor;
+	u16 subsystem_device;
+	resource_size_t barsz[6];
+	bool drivers_autoprobe;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+typedef u64 pci_bus_addr_t;
+
+struct pci_bus_region {
+	pci_bus_addr_t start;
+	pci_bus_addr_t end;
+};
+
+enum pci_fixup_pass {
+	pci_fixup_early = 0,
+	pci_fixup_header = 1,
+	pci_fixup_final = 2,
+	pci_fixup_enable = 3,
+	pci_fixup_resume = 4,
+	pci_fixup_suspend = 5,
+	pci_fixup_resume_early = 6,
+	pci_fixup_suspend_late = 7,
+};
+
+struct pci_bus_resource {
+	struct list_head list;
+	struct resource *res;
+	unsigned int flags;
+};
+
+enum pci_bar_type {
+	pci_bar_unknown = 0,
+	pci_bar_io = 1,
+	pci_bar_mem32 = 2,
+	pci_bar_mem64 = 3,
+};
+
+enum pci_bus_speed {
+	PCI_SPEED_33MHz = 0,
+	PCI_SPEED_66MHz = 1,
+	PCI_SPEED_66MHz_PCIX = 2,
+	PCI_SPEED_100MHz_PCIX = 3,
+	PCI_SPEED_133MHz_PCIX = 4,
+	PCI_SPEED_66MHz_PCIX_ECC = 5,
+	PCI_SPEED_100MHz_PCIX_ECC = 6,
+	PCI_SPEED_133MHz_PCIX_ECC = 7,
+	PCI_SPEED_66MHz_PCIX_266 = 9,
+	PCI_SPEED_100MHz_PCIX_266 = 10,
+	PCI_SPEED_133MHz_PCIX_266 = 11,
+	AGP_UNKNOWN = 12,
+	AGP_1X = 13,
+	AGP_2X = 14,
+	AGP_4X = 15,
+	AGP_8X = 16,
+	PCI_SPEED_66MHz_PCIX_533 = 17,
+	PCI_SPEED_100MHz_PCIX_533 = 18,
+	PCI_SPEED_133MHz_PCIX_533 = 19,
+	PCIE_SPEED_2_5GT = 20,
+	PCIE_SPEED_5_0GT = 21,
+	PCIE_SPEED_8_0GT = 22,
+	PCIE_SPEED_16_0GT = 23,
+	PCIE_SPEED_32_0GT = 24,
+	PCIE_SPEED_64_0GT = 25,
+	PCI_SPEED_UNKNOWN = 255,
+};
+
+enum pci_bus_flags {
+	PCI_BUS_FLAGS_NO_MSI = 1,
+	PCI_BUS_FLAGS_NO_MMRBC = 2,
+	PCI_BUS_FLAGS_NO_AERSID = 4,
+	PCI_BUS_FLAGS_NO_EXTCFG = 8,
+};
+
+enum pcie_bus_config_types {
+	PCIE_BUS_TUNE_OFF = 0,
+	PCIE_BUS_DEFAULT = 1,
+	PCIE_BUS_SAFE = 2,
+	PCIE_BUS_PERFORMANCE = 3,
+	PCIE_BUS_PEER2PEER = 4,
+};
+
+enum {
+	PCI_REASSIGN_ALL_RSRC = 1,
+	PCI_REASSIGN_ALL_BUS = 2,
+	PCI_PROBE_ONLY = 4,
+	PCI_CAN_SKIP_ISA_ALIGN = 8,
+	PCI_ENABLE_PROC_DOMAINS = 16,
+	PCI_COMPAT_DOMAIN_0 = 32,
+	PCI_SCAN_ALL_PCIE_DEVS = 64,
+};
+
+enum pci_dev_flags {
+	PCI_DEV_FLAGS_MSI_INTX_DISABLE_BUG = 1,
+	PCI_DEV_FLAGS_NO_D3 = 2,
+	PCI_DEV_FLAGS_ASSIGNED = 4,
+	PCI_DEV_FLAGS_ACS_ENABLED_QUIRK = 8,
+	PCI_DEV_FLAG_PCIE_BRIDGE_ALIAS = 32,
+	PCI_DEV_FLAGS_NO_BUS_RESET = 64,
+	PCI_DEV_FLAGS_NO_PM_RESET = 128,
+	PCI_DEV_FLAGS_VPD_REF_F0 = 256,
+	PCI_DEV_FLAGS_BRIDGE_XLATE_ROOT = 512,
+	PCI_DEV_FLAGS_NO_FLR_RESET = 1024,
+	PCI_DEV_FLAGS_NO_RELAXED_ORDERING = 2048,
+	PCI_DEV_FLAGS_HAS_MSI_MASKING = 4096,
+};
+
+struct hotplug_slot_ops;
+
+struct hotplug_slot {
+	const struct hotplug_slot_ops *ops;
+	struct list_head slot_list;
+	struct pci_slot *pci_slot;
+	struct module *owner;
+	const char *mod_name;
+};
+
+struct hotplug_slot_ops {
+	int (*enable_slot)(struct hotplug_slot *);
+	int (*disable_slot)(struct hotplug_slot *);
+	int (*set_attention_status)(struct hotplug_slot *, u8);
+	int (*hardware_test)(struct hotplug_slot *, u32);
+	int (*get_power_status)(struct hotplug_slot *, u8 *);
+	int (*get_attention_status)(struct hotplug_slot *, u8 *);
+	int (*get_latch_status)(struct hotplug_slot *, u8 *);
+	int (*get_adapter_status)(struct hotplug_slot *, u8 *);
+	int (*reset_slot)(struct hotplug_slot *, bool);
+};
+
+struct pci_host_bridge {
+	struct device dev;
+	struct pci_bus *bus;
+	struct pci_ops *ops;
+	struct pci_ops *child_ops;
+	void *sysdata;
+	int busnr;
+	int domain_nr;
+	struct list_head windows;
+	struct list_head dma_ranges;
+	u8 (*swizzle_irq)(struct pci_dev *, u8 *);
+	int (*map_irq)(const struct pci_dev *, u8, u8);
+	void (*release_fn)(struct pci_host_bridge *);
+	void *release_data;
+	unsigned int ignore_reset_delay: 1;
+	unsigned int no_ext_tags: 1;
+	unsigned int no_inc_mrrs: 1;
+	unsigned int native_aer: 1;
+	unsigned int native_pcie_hotplug: 1;
+	unsigned int native_shpc_hotplug: 1;
+	unsigned int native_pme: 1;
+	unsigned int native_ltr: 1;
+	unsigned int native_dpc: 1;
+	unsigned int native_cxl_error: 1;
+	unsigned int preserve_config: 1;
+	unsigned int size_windows: 1;
+	unsigned int msi_domain: 1;
+	resource_size_t (*align_resource)(struct pci_dev *, const struct resource *, resource_size_t, resource_size_t, resource_size_t);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	long: 64;
+	long: 64;
+	unsigned long private[0];
+};
+
+struct pci_domain_busn_res {
+	struct list_head list;
+	struct resource res;
+	int domain_nr;
+};
+
+typedef int (*arch_set_vga_state_t)(struct pci_dev *, bool, unsigned int, u32);
+
+struct dmi_strmatch {
+	unsigned char slot: 7;
+	unsigned char exact_match: 1;
+	char substr[79];
+};
+
+struct dmi_system_id {
+	int (*callback)(const struct dmi_system_id *);
+	const char *ident;
+	struct dmi_strmatch matches[4];
+	void *driver_data;
+};
+
+struct pci_reset_fn_method {
+	int (*reset_fn)(struct pci_dev *, bool);
+	char *name;
+};
+
+struct bus_attribute {
+	struct attribute attr;
+	ssize_t (*show)(const struct bus_type *, char *);
+	ssize_t (*store)(const struct bus_type *, const char *, size_t);
+};
+
+enum pcie_reset_state {
+	pcie_deassert_reset = 1,
+	pcie_warm_reset = 2,
+	pcie_hot_reset = 3,
+};
+
+enum {
+	LOGIC_PIO_INDIRECT = 0,
+	LOGIC_PIO_CPU_MMIO = 1,
+};
+
+enum pcie_link_width {
+	PCIE_LNK_WIDTH_RESRV = 0,
+	PCIE_LNK_X1 = 1,
+	PCIE_LNK_X2 = 2,
+	PCIE_LNK_X4 = 4,
+	PCIE_LNK_X8 = 8,
+	PCIE_LNK_X12 = 12,
+	PCIE_LNK_X16 = 16,
+	PCIE_LNK_X32 = 32,
+	PCIE_LNK_WIDTH_UNKNOWN = 255,
+};
+
+struct pci_cap_saved_data {
+	u16 cap_nr;
+	bool cap_extended;
+	unsigned int size;
+	u32 data[0];
+};
+
+struct pci_cap_saved_state {
+	struct hlist_node next;
+	struct pci_cap_saved_data cap;
+};
+
+struct pci_pme_device {
+	struct list_head list;
+	struct pci_dev *dev;
+};
+
+struct pci_devres {
+	unsigned int enabled: 1;
+	unsigned int pinned: 1;
+	unsigned int orig_intx: 1;
+	unsigned int restore_intx: 1;
+	unsigned int mwi: 1;
+	u32 region_mask;
+};
+
+struct logic_pio_host_ops;
+
+struct logic_pio_hwaddr {
+	struct list_head list;
+	struct fwnode_handle *fwnode;
+	resource_size_t hw_start;
+	resource_size_t io_start;
+	resource_size_t size;
+	unsigned long flags;
+	void *hostdata;
+	const struct logic_pio_host_ops *ops;
+};
+
+struct logic_pio_host_ops {
+	u32 (*in)(void *, unsigned long, size_t);
+	void (*out)(void *, unsigned long, u32, size_t);
+	u32 (*ins)(void *, unsigned long, void *, size_t, unsigned int);
+	void (*outs)(void *, unsigned long, const void *, size_t, unsigned int);
+};
+
+struct pci_saved_state {
+	u32 config_space[16];
+	struct pci_cap_saved_data cap[0];
+};
+
+struct driver_attribute {
+	struct attribute attr;
+	ssize_t (*show)(struct device_driver *, char *);
+	ssize_t (*store)(struct device_driver *, const char *, size_t);
+};
+
+enum pci_ers_result {
+	PCI_ERS_RESULT_NONE = 1,
+	PCI_ERS_RESULT_CAN_RECOVER = 2,
+	PCI_ERS_RESULT_NEED_RESET = 3,
+	PCI_ERS_RESULT_DISCONNECT = 4,
+	PCI_ERS_RESULT_RECOVERED = 5,
+	PCI_ERS_RESULT_NO_AER_DRIVER = 6,
+};
+
+struct pci_dynid {
+	struct list_head node;
+	struct pci_device_id id;
+};
+
+struct pcie_device {
+	int irq;
+	struct pci_dev *port;
+	u32 service;
+	void *priv_data;
+	struct device device;
+};
+
+struct pcie_port_service_driver {
+	const char *name;
+	int (*probe)(struct pcie_device *);
+	void (*remove)(struct pcie_device *);
+	int (*suspend)(struct pcie_device *);
+	int (*resume_noirq)(struct pcie_device *);
+	int (*resume)(struct pcie_device *);
+	int (*runtime_suspend)(struct pcie_device *);
+	int (*runtime_resume)(struct pcie_device *);
+	int (*slot_reset)(struct pcie_device *);
+	int port_type;
+	u32 service;
+	struct device_driver driver;
+};
+
+struct drv_dev_and_id {
+	struct pci_driver *drv;
+	struct pci_dev *dev;
+	const struct pci_device_id *id;
+};
+
+enum pci_mmap_api {
+	PCI_MMAP_SYSFS = 0,
+	PCI_MMAP_PROCFS = 1,
+};
+
+enum pci_mmap_state {
+	pci_mmap_io = 0,
+	pci_mmap_mem = 1,
+};
+
+enum enable_type {
+	undefined = -1,
+	user_disabled = 0,
+	auto_disabled = 1,
+	user_enabled = 2,
+	auto_enabled = 3,
+};
+
+enum release_type {
+	leaf_only = 0,
+	whole_subtree = 1,
+};
+
+struct pci_dev_resource {
+	struct list_head list;
+	struct resource *res;
+	struct pci_dev *dev;
+	resource_size_t start;
+	resource_size_t end;
+	resource_size_t add_size;
+	resource_size_t min_align;
+	unsigned long flags;
+};
+
+enum support_mode {
+	ALLOW_LEGACY = 0,
+	DENY_LEGACY = 1,
+};
+
+struct msix_entry {
+	u32 vector;
+	u16 entry;
+};
+
+struct portdrv_service_data {
+	struct pcie_port_service_driver *drv;
+	struct device *dev;
+	u32 service;
+};
+
+typedef int (*pcie_callback_t)(struct pcie_device *);
+
+struct walk_rcec_data {
+	struct pci_dev *rcec;
+	int (*user_callback)(struct pci_dev *, void *);
+	void *user_data;
+};
+
+struct pcie_link_state {
+	struct pci_dev *pdev;
+	struct pci_dev *downstream;
+	struct pcie_link_state *root;
+	struct pcie_link_state *parent;
+	struct list_head sibling;
+	u32 aspm_support: 7;
+	u32 aspm_enabled: 7;
+	u32 aspm_capable: 7;
+	u32 aspm_default: 7;
+	int: 4;
+	u32 aspm_disable: 7;
+	u32 clkpm_capable: 1;
+	u32 clkpm_enabled: 1;
+	u32 clkpm_default: 1;
+	u32 clkpm_disable: 1;
+};
+
+struct aer_stats {
+	u64 dev_cor_errs[16];
+	u64 dev_fatal_errs[27];
+	u64 dev_nonfatal_errs[27];
+	u64 dev_total_cor_errs;
+	u64 dev_total_fatal_errs;
+	u64 dev_total_nonfatal_errs;
+	u64 rootport_total_cor_errs;
+	u64 rootport_total_fatal_errs;
+	u64 rootport_total_nonfatal_errs;
+};
+
+struct aer_err_source {
+	unsigned int status;
+	unsigned int id;
+};
+
+struct aer_header_log_regs {
+	unsigned int dw0;
+	unsigned int dw1;
+	unsigned int dw2;
+	unsigned int dw3;
+};
+
+struct aer_err_info {
+	struct pci_dev *dev[5];
+	int error_dev_num;
+	unsigned int id: 16;
+	unsigned int severity: 2;
+	unsigned int __pad1: 5;
+	unsigned int multi_error_valid: 1;
+	unsigned int first_error: 5;
+	unsigned int __pad2: 2;
+	unsigned int tlp_header_valid: 1;
+	unsigned int status;
+	unsigned int mask;
+	struct aer_header_log_regs tlp;
+};
+
+struct aer_rpc {
+	struct pci_dev *rpd;
+	struct {
+		union {
+			struct __kfifo kfifo;
+			struct aer_err_source *type;
+			const struct aer_err_source *const_type;
+			char (*rectype)[0];
+			struct aer_err_source *ptr;
+			const struct aer_err_source *ptr_const;
+		};
+		struct aer_err_source buf[128];
+	} aer_fifo;
+};
+
+struct pcie_pme_service_data {
+	spinlock_t lock;
+	struct pcie_device *srv;
+	struct work_struct work;
+	bool noirq;
+};
+
+struct pci_slot_attribute {
+	struct attribute attr;
+	ssize_t (*show)(struct pci_slot *, char *);
+	ssize_t (*store)(struct pci_slot *, const char *, size_t);
+};
+
+struct of_bus;
+
+struct of_pci_range_parser {
+	struct device_node *node;
+	struct of_bus *bus;
+	const __be32 *range;
+	const __be32 *end;
+	int na;
+	int ns;
+	int pna;
+	bool dma;
+};
+
+struct of_pci_range {
+	union {
+		u64 pci_addr;
+		u64 bus_addr;
+	};
+	u64 cpu_addr;
+	u64 size;
+	u32 flags;
+};
+
+struct pci_dev_reset_methods {
+	u16 vendor;
+	u16 device;
+	int (*reset)(struct pci_dev *, bool);
+};
+
+struct pci_dev_acs_enabled {
+	u16 vendor;
+	u16 device;
+	int (*acs_enabled)(struct pci_dev *, u16);
+};
+
+struct pci_dev_acs_ops {
+	u16 vendor;
+	u16 device;
+	int (*enable_acs)(struct pci_dev *);
+	int (*disable_acs_redir)(struct pci_dev *);
+};
+
+enum dmi_field {
+	DMI_NONE = 0,
+	DMI_BIOS_VENDOR = 1,
+	DMI_BIOS_VERSION = 2,
+	DMI_BIOS_DATE = 3,
+	DMI_BIOS_RELEASE = 4,
+	DMI_EC_FIRMWARE_RELEASE = 5,
+	DMI_SYS_VENDOR = 6,
+	DMI_PRODUCT_NAME = 7,
+	DMI_PRODUCT_VERSION = 8,
+	DMI_PRODUCT_SERIAL = 9,
+	DMI_PRODUCT_UUID = 10,
+	DMI_PRODUCT_SKU = 11,
+	DMI_PRODUCT_FAMILY = 12,
+	DMI_BOARD_VENDOR = 13,
+	DMI_BOARD_NAME = 14,
+	DMI_BOARD_VERSION = 15,
+	DMI_BOARD_SERIAL = 16,
+	DMI_BOARD_ASSET_TAG = 17,
+	DMI_CHASSIS_VENDOR = 18,
+	DMI_CHASSIS_TYPE = 19,
+	DMI_CHASSIS_VERSION = 20,
+	DMI_CHASSIS_SERIAL = 21,
+	DMI_CHASSIS_ASSET_TAG = 22,
+	DMI_STRING_MAX = 23,
+	DMI_OEM_STRING = 24,
+};
+
+enum {
+	NVME_REG_CAP = 0,
+	NVME_REG_VS = 8,
+	NVME_REG_INTMS = 12,
+	NVME_REG_INTMC = 16,
+	NVME_REG_CC = 20,
+	NVME_REG_CSTS = 28,
+	NVME_REG_NSSR = 32,
+	NVME_REG_AQA = 36,
+	NVME_REG_ASQ = 40,
+	NVME_REG_ACQ = 48,
+	NVME_REG_CMBLOC = 56,
+	NVME_REG_CMBSZ = 60,
+	NVME_REG_BPINFO = 64,
+	NVME_REG_BPRSEL = 68,
+	NVME_REG_BPMBL = 72,
+	NVME_REG_CMBMSC = 80,
+	NVME_REG_CRTO = 104,
+	NVME_REG_PMRCAP = 3584,
+	NVME_REG_PMRCTL = 3588,
+	NVME_REG_PMRSTS = 3592,
+	NVME_REG_PMREBS = 3596,
+	NVME_REG_PMRSWTP = 3600,
+	NVME_REG_DBS = 4096,
+};
+
+enum {
+	NVME_CC_ENABLE = 1,
+	NVME_CC_EN_SHIFT = 0,
+	NVME_CC_CSS_SHIFT = 4,
+	NVME_CC_MPS_SHIFT = 7,
+	NVME_CC_AMS_SHIFT = 11,
+	NVME_CC_SHN_SHIFT = 14,
+	NVME_CC_IOSQES_SHIFT = 16,
+	NVME_CC_IOCQES_SHIFT = 20,
+	NVME_CC_CSS_NVM = 0,
+	NVME_CC_CSS_CSI = 96,
+	NVME_CC_CSS_MASK = 112,
+	NVME_CC_AMS_RR = 0,
+	NVME_CC_AMS_WRRU = 2048,
+	NVME_CC_AMS_VS = 14336,
+	NVME_CC_SHN_NONE = 0,
+	NVME_CC_SHN_NORMAL = 16384,
+	NVME_CC_SHN_ABRUPT = 32768,
+	NVME_CC_SHN_MASK = 49152,
+	NVME_CC_IOSQES = 393216,
+	NVME_CC_IOCQES = 4194304,
+	NVME_CC_CRIME = 16777216,
+};
+
+enum {
+	NVME_CSTS_RDY = 1,
+	NVME_CSTS_CFS = 2,
+	NVME_CSTS_NSSRO = 16,
+	NVME_CSTS_PP = 32,
+	NVME_CSTS_SHST_NORMAL = 0,
+	NVME_CSTS_SHST_OCCUR = 4,
+	NVME_CSTS_SHST_CMPLT = 8,
+	NVME_CSTS_SHST_MASK = 12,
+};
+
+enum {
+	SWITCHTEC_GAS_MRPC_OFFSET = 0,
+	SWITCHTEC_GAS_TOP_CFG_OFFSET = 4096,
+	SWITCHTEC_GAS_SW_EVENT_OFFSET = 6144,
+	SWITCHTEC_GAS_SYS_INFO_OFFSET = 8192,
+	SWITCHTEC_GAS_FLASH_INFO_OFFSET = 8704,
+	SWITCHTEC_GAS_PART_CFG_OFFSET = 16384,
+	SWITCHTEC_GAS_NTB_OFFSET = 65536,
+	SWITCHTEC_GAS_PFF_CSR_OFFSET = 1261568,
+};
+
+enum {
+	SWITCHTEC_NTB_REG_INFO_OFFSET = 0,
+	SWITCHTEC_NTB_REG_CTRL_OFFSET = 16384,
+	SWITCHTEC_NTB_REG_DBMSG_OFFSET = 409600,
+};
+
+struct pci_fixup {
+	u16 vendor;
+	u16 device;
+	u32 class;
+	unsigned int class_shift;
+	int hook_offset;
+};
+
+struct ntb_ctrl_regs {
+	u32 partition_status;
+	u32 partition_op;
+	u32 partition_ctrl;
+	u32 bar_setup;
+	u32 bar_error;
+	u16 lut_table_entries;
+	u16 lut_table_offset;
+	u32 lut_error;
+	u16 req_id_table_size;
+	u16 req_id_table_offset;
+	u32 req_id_error;
+	u32 reserved1[7];
+	struct {
+		u32 ctl;
+		u32 win_size;
+		u64 xlate_addr;
+	} bar_entry[6];
+	struct {
+		u32 win_size;
+		u32 reserved[3];
+	} bar_ext_entry[6];
+	u32 reserved2[192];
+	u32 req_id_table[512];
+	u32 reserved3[256];
+	u64 lut_entry[512];
+};
+
+struct nt_partition_info {
+	u32 xlink_enabled;
+	u32 target_part_low;
+	u32 target_part_high;
+	u32 reserved;
+};
+
+struct ntb_info_regs {
+	u8 partition_count;
+	u8 partition_id;
+	u16 reserved1;
+	u64 ep_map;
+	u16 requester_id;
+	u16 reserved2;
+	u32 reserved3[4];
+	struct nt_partition_info ntp_info[48];
+} __attribute__((packed));
+
+struct pci_config_window;
+
+struct pci_ecam_ops {
+	unsigned int bus_shift;
+	struct pci_ops pci_ops;
+	int (*init)(struct pci_config_window *);
+};
+
+struct pci_config_window {
+	struct resource res;
+	struct resource busr;
+	unsigned int bus_shift;
+	void *priv;
+	const struct pci_ecam_ops *ops;
+	union {
+		void *win;
+		void **winp;
+	};
+	struct device *parent;
+};
+
+enum pci_interrupt_pin {
+	PCI_INTERRUPT_UNKNOWN = 0,
+	PCI_INTERRUPT_INTA = 1,
+	PCI_INTERRUPT_INTB = 2,
+	PCI_INTERRUPT_INTC = 3,
+	PCI_INTERRUPT_INTD = 4,
+};
+
+enum pci_barno {
+	NO_BAR = -1,
+	BAR_0 = 0,
+	BAR_1 = 1,
+	BAR_2 = 2,
+	BAR_3 = 3,
+	BAR_4 = 4,
+	BAR_5 = 5,
+};
+
+enum pci_epc_irq_type {
+	PCI_EPC_IRQ_UNKNOWN = 0,
+	PCI_EPC_IRQ_LEGACY = 1,
+	PCI_EPC_IRQ_MSI = 2,
+	PCI_EPC_IRQ_MSIX = 3,
+};
+
+enum pci_epc_interface_type {
+	UNKNOWN_INTERFACE = -1,
+	PRIMARY_INTERFACE = 0,
+	SECONDARY_INTERFACE = 1,
+};
+
+struct pci_epc_ops;
+
+struct pci_epc_mem;
+
+struct pci_epc {
+	struct device dev;
+	struct list_head pci_epf;
+	struct mutex list_lock;
+	const struct pci_epc_ops *ops;
+	struct pci_epc_mem **windows;
+	struct pci_epc_mem *mem;
+	unsigned int num_windows;
+	u8 max_functions;
+	u8 *max_vfs;
+	struct config_group *group;
+	struct mutex lock;
+	unsigned long function_num_map;
+};
+
+struct pci_epf_header;
+
+struct pci_epf_bar;
+
+struct pci_epc_features;
+
+struct pci_epc_ops {
+	int (*write_header)(struct pci_epc *, u8, u8, struct pci_epf_header *);
+	int (*set_bar)(struct pci_epc *, u8, u8, struct pci_epf_bar *);
+	void (*clear_bar)(struct pci_epc *, u8, u8, struct pci_epf_bar *);
+	int (*map_addr)(struct pci_epc *, u8, u8, phys_addr_t, u64, size_t);
+	void (*unmap_addr)(struct pci_epc *, u8, u8, phys_addr_t);
+	int (*set_msi)(struct pci_epc *, u8, u8, u8);
+	int (*get_msi)(struct pci_epc *, u8, u8);
+	int (*set_msix)(struct pci_epc *, u8, u8, u16, enum pci_barno, u32);
+	int (*get_msix)(struct pci_epc *, u8, u8);
+	int (*raise_irq)(struct pci_epc *, u8, u8, enum pci_epc_irq_type, u16);
+	int (*map_msi_irq)(struct pci_epc *, u8, u8, phys_addr_t, u8, u32, u32 *, u32 *);
+	int (*start)(struct pci_epc *);
+	void (*stop)(struct pci_epc *);
+	const struct pci_epc_features * (*get_features)(struct pci_epc *, u8, u8);
+	struct module *owner;
+};
+
+struct pci_epf_header {
+	u16 vendorid;
+	u16 deviceid;
+	u8 revid;
+	u8 progif_code;
+	u8 subclass_code;
+	u8 baseclass_code;
+	u8 cache_line_size;
+	u16 subsys_vendor_id;
+	u16 subsys_id;
+	enum pci_interrupt_pin interrupt_pin;
+};
+
+struct pci_epf_bar {
+	dma_addr_t phys_addr;
+	void *addr;
+	size_t size;
+	enum pci_barno barno;
+	int flags;
+};
+
+struct pci_epc_features {
+	unsigned int linkup_notifier: 1;
+	unsigned int core_init_notifier: 1;
+	unsigned int msi_capable: 1;
+	unsigned int msix_capable: 1;
+	u8 reserved_bar;
+	u8 bar_fixed_64bit;
+	u64 bar_fixed_size[6];
+	size_t align;
+};
+
+struct pci_epc_mem_window {
+	phys_addr_t phys_base;
+	size_t size;
+	size_t page_size;
+};
+
+struct pci_epc_mem {
+	struct pci_epc_mem_window window;
+	unsigned long *bitmap;
+	int pages;
+	struct mutex lock;
+};
+
+struct pci_epf_driver;
+
+struct pci_epf_device_id;
+
+struct pci_epc_event_ops;
+
+struct pci_epf {
+	struct device dev;
+	const char *name;
+	struct pci_epf_header *header;
+	struct pci_epf_bar bar[6];
+	u8 msi_interrupts;
+	u16 msix_interrupts;
+	u8 func_no;
+	u8 vfunc_no;
+	struct pci_epc *epc;
+	struct pci_epf *epf_pf;
+	struct pci_epf_driver *driver;
+	const struct pci_epf_device_id *id;
+	struct list_head list;
+	struct mutex lock;
+	struct pci_epc *sec_epc;
+	struct list_head sec_epc_list;
+	struct pci_epf_bar sec_epc_bar[6];
+	u8 sec_epc_func_no;
+	struct config_group *group;
+	unsigned int is_bound;
+	unsigned int is_vf;
+	unsigned long vfunction_num_map;
+	struct list_head pci_vepf;
+	const struct pci_epc_event_ops *event_ops;
+};
+
+struct pci_epf_ops;
+
+struct pci_epf_driver {
+	int (*probe)(struct pci_epf *, const struct pci_epf_device_id *);
+	void (*remove)(struct pci_epf *);
+	struct device_driver driver;
+	struct pci_epf_ops *ops;
+	struct module *owner;
+	struct list_head epf_group;
+	const struct pci_epf_device_id *id_table;
+};
+
+struct pci_epf_device_id {
+	char name[20];
+	kernel_ulong_t driver_data;
+};
+
+struct pci_epf_ops {
+	int (*bind)(struct pci_epf *);
+	void (*unbind)(struct pci_epf *);
+	struct config_group * (*add_cfs)(struct pci_epf *, struct config_group *);
+};
+
+struct pci_epc_event_ops {
+	int (*core_init)(struct pci_epf *);
+	int (*link_up)(struct pci_epf *);
+	int (*link_down)(struct pci_epf *);
+	int (*bme)(struct pci_epf *);
+};
+
+struct dw_edma_plat_ops {
+	int (*irq_vector)(struct device *, unsigned int);
+	u64 (*pci_address)(struct device *, phys_addr_t);
+};
+
+enum dw_pcie_ltssm {
+	DW_PCIE_LTSSM_DETECT_QUIET = 0,
+	DW_PCIE_LTSSM_DETECT_ACT = 1,
+	DW_PCIE_LTSSM_L0 = 17,
+	DW_PCIE_LTSSM_L2_IDLE = 21,
+	DW_PCIE_LTSSM_UNKNOWN = 4294967295,
+};
+
+enum dw_edma_map_format {
+	EDMA_MF_EDMA_LEGACY = 0,
+	EDMA_MF_EDMA_UNROLL = 1,
+	EDMA_MF_HDMA_COMPAT = 5,
+	EDMA_MF_HDMA_NATIVE = 7,
+};
+
+enum dw_pcie_app_clk {
+	DW_PCIE_DBI_CLK = 0,
+	DW_PCIE_MSTR_CLK = 1,
+	DW_PCIE_SLV_CLK = 2,
+	DW_PCIE_NUM_APP_CLKS = 3,
+};
+
+enum dw_pcie_core_clk {
+	DW_PCIE_PIPE_CLK = 0,
+	DW_PCIE_CORE_CLK = 1,
+	DW_PCIE_AUX_CLK = 2,
+	DW_PCIE_REF_CLK = 3,
+	DW_PCIE_NUM_CORE_CLKS = 4,
+};
+
+enum dw_pcie_app_rst {
+	DW_PCIE_DBI_RST = 0,
+	DW_PCIE_MSTR_RST = 1,
+	DW_PCIE_SLV_RST = 2,
+	DW_PCIE_NUM_APP_RSTS = 3,
+};
+
+enum dw_pcie_core_rst {
+	DW_PCIE_NON_STICKY_RST = 0,
+	DW_PCIE_STICKY_RST = 1,
+	DW_PCIE_CORE_RST = 2,
+	DW_PCIE_PIPE_RST = 3,
+	DW_PCIE_PHY_RST = 4,
+	DW_PCIE_HOT_RST = 5,
+	DW_PCIE_PWR_RST = 6,
+	DW_PCIE_NUM_CORE_RSTS = 7,
+};
+
+enum dw_edma_chip_flags {
+	DW_EDMA_CHIP_LOCAL = 1,
+};
+
+struct dw_pcie_host_ops;
+
+struct dw_pcie_rp {
+	bool has_msi_ctrl: 1;
+	bool cfg0_io_shared: 1;
+	u64 cfg0_base;
+	void *va_cfg0_base;
+	u32 cfg0_size;
+	resource_size_t io_base;
+	phys_addr_t io_bus_addr;
+	u32 io_size;
+	int irq;
+	const struct dw_pcie_host_ops *ops;
+	int msi_irq[8];
+	struct irq_domain *irq_domain;
+	struct irq_domain *msi_domain;
+	dma_addr_t msi_data;
+	struct irq_chip *msi_irq_chip;
+	u32 num_vectors;
+	u32 irq_mask[8];
+	struct pci_host_bridge *bridge;
+	raw_spinlock_t lock;
+	unsigned long msi_irq_in_use[4];
+};
+
+struct dw_pcie_ep_ops;
+
+struct dw_pcie_ep {
+	struct pci_epc *epc;
+	struct list_head func_list;
+	const struct dw_pcie_ep_ops *ops;
+	phys_addr_t phys_base;
+	size_t addr_size;
+	size_t page_size;
+	u8 bar_to_atu[6];
+	phys_addr_t *outbound_addr;
+	unsigned long *ib_window_map;
+	unsigned long *ob_window_map;
+	void *msi_mem;
+	phys_addr_t msi_mem_phys;
+	struct pci_epf_bar *epf_bar[6];
+};
+
+struct dw_edma_region {
+	u64 paddr;
+	union {
+		void *mem;
+		void *io;
+	} vaddr;
+	size_t sz;
+};
+
+struct dw_edma;
+
+struct dw_edma_chip {
+	struct device *dev;
+	int nr_irqs;
+	const struct dw_edma_plat_ops *ops;
+	u32 flags;
+	void *reg_base;
+	u16 ll_wr_cnt;
+	u16 ll_rd_cnt;
+	struct dw_edma_region ll_region_wr[8];
+	struct dw_edma_region ll_region_rd[8];
+	struct dw_edma_region dt_region_wr[8];
+	struct dw_edma_region dt_region_rd[8];
+	enum dw_edma_map_format mf;
+	struct dw_edma *dw;
+};
+
+struct reset_control_bulk_data {
+	const char *id;
+	struct reset_control *rstc;
+};
+
+struct dw_pcie_ops;
+
+struct dw_pcie {
+	struct device *dev;
+	void *dbi_base;
+	void *dbi_base2;
+	void *atu_base;
+	size_t atu_size;
+	u32 num_ib_windows;
+	u32 num_ob_windows;
+	u32 region_align;
+	u64 region_limit;
+	struct dw_pcie_rp pp;
+	struct dw_pcie_ep ep;
+	const struct dw_pcie_ops *ops;
+	u32 version;
+	u32 type;
+	unsigned long caps;
+	int num_lanes;
+	int link_gen;
+	u8 n_fts[2];
+	struct dw_edma_chip edma;
+	struct clk_bulk_data app_clks[3];
+	struct clk_bulk_data core_clks[4];
+	struct reset_control_bulk_data app_rsts[3];
+	struct reset_control_bulk_data core_rsts[7];
+	struct gpio_desc *pe_rst;
+	bool suspended;
+};
+
+struct dw_pcie_host_ops {
+	int (*host_init)(struct dw_pcie_rp *);
+	void (*host_deinit)(struct dw_pcie_rp *);
+	int (*msi_host_init)(struct dw_pcie_rp *);
+	void (*pme_turn_off)(struct dw_pcie_rp *);
+};
+
+struct dw_pcie_ep_ops {
+	void (*ep_init)(struct dw_pcie_ep *);
+	int (*raise_irq)(struct dw_pcie_ep *, u8, enum pci_epc_irq_type, u16);
+	const struct pci_epc_features * (*get_features)(struct dw_pcie_ep *);
+	unsigned int (*func_conf_select)(struct dw_pcie_ep *, u8);
+};
+
+struct dw_pcie_ops {
+	u64 (*cpu_addr_fixup)(struct dw_pcie *, u64);
+	u32 (*read_dbi)(struct dw_pcie *, void *, u32, size_t);
+	void (*write_dbi)(struct dw_pcie *, void *, u32, size_t, u32);
+	void (*write_dbi2)(struct dw_pcie *, void *, u32, size_t, u32);
+	int (*link_up)(struct dw_pcie *);
+	enum dw_pcie_ltssm (*get_ltssm)(struct dw_pcie *);
+	int (*start_link)(struct dw_pcie *);
+	void (*stop_link)(struct dw_pcie *);
+};
+
+struct dw_pcie_ep_func {
+	struct list_head list;
+	u8 func_no;
+	u8 msi_cap;
+	u8 msix_cap;
+};
+
+struct pci_epf_msix_tbl {
+	u64 msg_addr;
+	u32 msg_data;
+	u32 vector_ctrl;
+};
+
+enum dw_pcie_device_mode {
+	DW_PCIE_UNKNOWN_TYPE = 0,
+	DW_PCIE_EP_TYPE = 1,
+	DW_PCIE_LEG_EP_TYPE = 2,
+	DW_PCIE_RC_TYPE = 3,
+};
+
+struct dw_plat_pcie_of_data {
+	enum dw_pcie_device_mode mode;
+};
+
+struct dw_plat_pcie {
+	struct dw_pcie *pci;
+	enum dw_pcie_device_mode mode;
+};
+
+struct qcom_pcie_ops;
+
+struct qcom_pcie_cfg {
+	const struct qcom_pcie_ops *ops;
+};
+
+struct qcom_pcie;
+
+struct qcom_pcie_ops {
+	int (*get_resources)(struct qcom_pcie *);
+	int (*init)(struct qcom_pcie *);
+	int (*post_init)(struct qcom_pcie *);
+	void (*deinit)(struct qcom_pcie *);
+	void (*ltssm_enable)(struct qcom_pcie *);
+	int (*config_sid)(struct qcom_pcie *);
+};
+
+struct qcom_pcie_resources_1_0_0 {
+	struct clk_bulk_data clks[4];
+	struct reset_control *core;
+	struct regulator *vdda;
+};
+
+struct regulator_bulk_data {
+	const char *supply;
+	int init_load_uA;
+	struct regulator *consumer;
+	int ret;
+};
+
+struct qcom_pcie_resources_2_1_0 {
+	struct clk_bulk_data clks[5];
+	struct reset_control_bulk_data resets[6];
+	int num_resets;
+	struct regulator_bulk_data supplies[3];
+};
+
+struct qcom_pcie_resources_2_3_2 {
+	struct clk_bulk_data clks[4];
+	struct regulator_bulk_data supplies[2];
+};
+
+struct qcom_pcie_resources_2_3_3 {
+	struct clk_bulk_data clks[5];
+	struct reset_control_bulk_data rst[7];
+};
+
+struct qcom_pcie_resources_2_4_0 {
+	struct clk_bulk_data clks[4];
+	int num_clks;
+	struct reset_control_bulk_data resets[12];
+	int num_resets;
+};
+
+struct qcom_pcie_resources_2_7_0 {
+	struct clk_bulk_data clks[15];
+	int num_clks;
+	struct regulator_bulk_data supplies[2];
+	struct reset_control *rst;
+};
+
+struct qcom_pcie_resources_2_9_0 {
+	struct clk_bulk_data clks[5];
+	struct reset_control *rst;
+};
+
+union qcom_pcie_resources {
+	struct qcom_pcie_resources_1_0_0 v1_0_0;
+	struct qcom_pcie_resources_2_1_0 v2_1_0;
+	struct qcom_pcie_resources_2_3_2 v2_3_2;
+	struct qcom_pcie_resources_2_3_3 v2_3_3;
+	struct qcom_pcie_resources_2_4_0 v2_4_0;
+	struct qcom_pcie_resources_2_7_0 v2_7_0;
+	struct qcom_pcie_resources_2_9_0 v2_9_0;
+};
+
+struct icc_path;
+
+struct qcom_pcie {
+	struct dw_pcie *pci;
+	void *parf;
+	void *elbi;
+	void *mhi;
+	union qcom_pcie_resources res;
+	struct phy *phy;
+	struct gpio_desc *reset;
+	struct icc_path *icc_mem;
+	const struct qcom_pcie_cfg *cfg;
+	struct dentry *debugfs;
+	bool suspended;
+};
+
+typedef void (*regmap_lock)(void *);
+
+typedef void (*regmap_unlock)(void *);
+
+enum regcache_type {
+	REGCACHE_NONE = 0,
+	REGCACHE_RBTREE = 1,
+	REGCACHE_FLAT = 2,
+	REGCACHE_MAPLE = 3,
+};
+
+enum regmap_endian {
+	REGMAP_ENDIAN_DEFAULT = 0,
+	REGMAP_ENDIAN_BIG = 1,
+	REGMAP_ENDIAN_LITTLE = 2,
+	REGMAP_ENDIAN_NATIVE = 3,
+};
+
+struct regmap_access_table;
+
+struct reg_default;
+
+struct regmap_range_cfg;
+
+struct regmap_config {
+	const char *name;
+	int reg_bits;
+	int reg_stride;
+	int reg_shift;
+	unsigned int reg_base;
+	int pad_bits;
+	int val_bits;
+	bool (*writeable_reg)(struct device *, unsigned int);
+	bool (*readable_reg)(struct device *, unsigned int);
+	bool (*volatile_reg)(struct device *, unsigned int);
+	bool (*precious_reg)(struct device *, unsigned int);
+	bool (*writeable_noinc_reg)(struct device *, unsigned int);
+	bool (*readable_noinc_reg)(struct device *, unsigned int);
+	bool disable_locking;
+	regmap_lock lock;
+	regmap_unlock unlock;
+	void *lock_arg;
+	int (*reg_read)(void *, unsigned int, unsigned int *);
+	int (*reg_write)(void *, unsigned int, unsigned int);
+	int (*reg_update_bits)(void *, unsigned int, unsigned int, unsigned int);
+	int (*read)(void *, const void *, size_t, void *, size_t);
+	int (*write)(void *, const void *, size_t);
+	size_t max_raw_read;
+	size_t max_raw_write;
+	bool fast_io;
+	bool io_port;
+	unsigned int max_register;
+	const struct regmap_access_table *wr_table;
+	const struct regmap_access_table *rd_table;
+	const struct regmap_access_table *volatile_table;
+	const struct regmap_access_table *precious_table;
+	const struct regmap_access_table *wr_noinc_table;
+	const struct regmap_access_table *rd_noinc_table;
+	const struct reg_default *reg_defaults;
+	unsigned int num_reg_defaults;
+	enum regcache_type cache_type;
+	const void *reg_defaults_raw;
+	unsigned int num_reg_defaults_raw;
+	unsigned long read_flag_mask;
+	unsigned long write_flag_mask;
+	bool zero_flag_mask;
+	bool use_single_read;
+	bool use_single_write;
+	bool use_relaxed_mmio;
+	bool can_multi_write;
+	enum regmap_endian reg_format_endian;
+	enum regmap_endian val_format_endian;
+	const struct regmap_range_cfg *ranges;
+	unsigned int num_ranges;
+	bool use_hwlock;
+	bool use_raw_spinlock;
+	unsigned int hwlock_id;
+	unsigned int hwlock_mode;
+	bool can_sleep;
+	u64 android_kabi_reserved1;
+};
+
+struct regmap_range;
+
+struct regmap_access_table {
+	const struct regmap_range *yes_ranges;
+	unsigned int n_yes_ranges;
+	const struct regmap_range *no_ranges;
+	unsigned int n_no_ranges;
+};
+
+struct regmap_range {
+	unsigned int range_min;
+	unsigned int range_max;
+};
+
+struct reg_default {
+	unsigned int reg;
+	unsigned int def;
+};
+
+struct regmap_range_cfg {
+	const char *name;
+	unsigned int range_min;
+	unsigned int range_max;
+	unsigned int selector_reg;
+	unsigned int selector_mask;
+	int selector_shift;
+	unsigned int window_start;
+	unsigned int window_len;
+	u64 android_kabi_reserved1;
+};
+
+enum pcie_kirin_phy_type {
+	PCIE_KIRIN_INTERNAL_PHY = 0,
+	PCIE_KIRIN_EXTERNAL_PHY = 1,
+};
+
+struct kirin_pcie_data {
+	enum pcie_kirin_phy_type phy_type;
+};
+
+struct regmap;
+
+struct kirin_pcie {
+	enum pcie_kirin_phy_type type;
+	struct dw_pcie *pci;
+	struct regmap *apb;
+	struct phy *phy;
+	void *phy_priv;
+	int gpio_id_dwc_perst;
+	int num_slots;
+	int gpio_id_reset[3];
+	const char *reset_names[3];
+	int n_gpio_clkreq;
+	int gpio_id_clkreq[3];
+	const char *clkreq_names[3];
+};
+
+struct hi3660_pcie_phy {
+	struct device *dev;
+	void *base;
+	struct regmap *crgctrl;
+	struct regmap *sysctrl;
+	struct clk *apb_sys_clk;
+	struct clk *apb_phy_clk;
+	struct clk *phy_ref_clk;
+	struct clk *aclk;
+	struct clk *aux_clk;
+};
+
+enum hdmi_infoframe_type {
+	HDMI_INFOFRAME_TYPE_VENDOR = 129,
+	HDMI_INFOFRAME_TYPE_AVI = 130,
+	HDMI_INFOFRAME_TYPE_SPD = 131,
+	HDMI_INFOFRAME_TYPE_AUDIO = 132,
+	HDMI_INFOFRAME_TYPE_DRM = 135,
+};
+
+enum hdmi_colorspace {
+	HDMI_COLORSPACE_RGB = 0,
+	HDMI_COLORSPACE_YUV422 = 1,
+	HDMI_COLORSPACE_YUV444 = 2,
+	HDMI_COLORSPACE_YUV420 = 3,
+	HDMI_COLORSPACE_RESERVED4 = 4,
+	HDMI_COLORSPACE_RESERVED5 = 5,
+	HDMI_COLORSPACE_RESERVED6 = 6,
+	HDMI_COLORSPACE_IDO_DEFINED = 7,
+};
+
+enum hdmi_scan_mode {
+	HDMI_SCAN_MODE_NONE = 0,
+	HDMI_SCAN_MODE_OVERSCAN = 1,
+	HDMI_SCAN_MODE_UNDERSCAN = 2,
+	HDMI_SCAN_MODE_RESERVED = 3,
+};
+
+enum hdmi_colorimetry {
+	HDMI_COLORIMETRY_NONE = 0,
+	HDMI_COLORIMETRY_ITU_601 = 1,
+	HDMI_COLORIMETRY_ITU_709 = 2,
+	HDMI_COLORIMETRY_EXTENDED = 3,
+};
+
+enum hdmi_picture_aspect {
+	HDMI_PICTURE_ASPECT_NONE = 0,
+	HDMI_PICTURE_ASPECT_4_3 = 1,
+	HDMI_PICTURE_ASPECT_16_9 = 2,
+	HDMI_PICTURE_ASPECT_64_27 = 3,
+	HDMI_PICTURE_ASPECT_256_135 = 4,
+	HDMI_PICTURE_ASPECT_RESERVED = 5,
+};
+
+enum hdmi_active_aspect {
+	HDMI_ACTIVE_ASPECT_16_9_TOP = 2,
+	HDMI_ACTIVE_ASPECT_14_9_TOP = 3,
+	HDMI_ACTIVE_ASPECT_16_9_CENTER = 4,
+	HDMI_ACTIVE_ASPECT_PICTURE = 8,
+	HDMI_ACTIVE_ASPECT_4_3 = 9,
+	HDMI_ACTIVE_ASPECT_16_9 = 10,
+	HDMI_ACTIVE_ASPECT_14_9 = 11,
+	HDMI_ACTIVE_ASPECT_4_3_SP_14_9 = 13,
+	HDMI_ACTIVE_ASPECT_16_9_SP_14_9 = 14,
+	HDMI_ACTIVE_ASPECT_16_9_SP_4_3 = 15,
+};
+
+enum hdmi_extended_colorimetry {
+	HDMI_EXTENDED_COLORIMETRY_XV_YCC_601 = 0,
+	HDMI_EXTENDED_COLORIMETRY_XV_YCC_709 = 1,
+	HDMI_EXTENDED_COLORIMETRY_S_YCC_601 = 2,
+	HDMI_EXTENDED_COLORIMETRY_OPYCC_601 = 3,
+	HDMI_EXTENDED_COLORIMETRY_OPRGB = 4,
+	HDMI_EXTENDED_COLORIMETRY_BT2020_CONST_LUM = 5,
+	HDMI_EXTENDED_COLORIMETRY_BT2020 = 6,
+	HDMI_EXTENDED_COLORIMETRY_RESERVED = 7,
+};
+
+enum hdmi_quantization_range {
+	HDMI_QUANTIZATION_RANGE_DEFAULT = 0,
+	HDMI_QUANTIZATION_RANGE_LIMITED = 1,
+	HDMI_QUANTIZATION_RANGE_FULL = 2,
+	HDMI_QUANTIZATION_RANGE_RESERVED = 3,
+};
+
+enum hdmi_nups {
+	HDMI_NUPS_UNKNOWN = 0,
+	HDMI_NUPS_HORIZONTAL = 1,
+	HDMI_NUPS_VERTICAL = 2,
+	HDMI_NUPS_BOTH = 3,
+};
+
+enum hdmi_ycc_quantization_range {
+	HDMI_YCC_QUANTIZATION_RANGE_LIMITED = 0,
+	HDMI_YCC_QUANTIZATION_RANGE_FULL = 1,
+};
+
+enum hdmi_content_type {
+	HDMI_CONTENT_TYPE_GRAPHICS = 0,
+	HDMI_CONTENT_TYPE_PHOTO = 1,
+	HDMI_CONTENT_TYPE_CINEMA = 2,
+	HDMI_CONTENT_TYPE_GAME = 3,
+};
+
+enum hdmi_spd_sdi {
+	HDMI_SPD_SDI_UNKNOWN = 0,
+	HDMI_SPD_SDI_DSTB = 1,
+	HDMI_SPD_SDI_DVDP = 2,
+	HDMI_SPD_SDI_DVHS = 3,
+	HDMI_SPD_SDI_HDDVR = 4,
+	HDMI_SPD_SDI_DVC = 5,
+	HDMI_SPD_SDI_DSC = 6,
+	HDMI_SPD_SDI_VCD = 7,
+	HDMI_SPD_SDI_GAME = 8,
+	HDMI_SPD_SDI_PC = 9,
+	HDMI_SPD_SDI_BD = 10,
+	HDMI_SPD_SDI_SACD = 11,
+	HDMI_SPD_SDI_HDDVD = 12,
+	HDMI_SPD_SDI_PMP = 13,
+};
+
+enum hdmi_audio_coding_type {
+	HDMI_AUDIO_CODING_TYPE_STREAM = 0,
+	HDMI_AUDIO_CODING_TYPE_PCM = 1,
+	HDMI_AUDIO_CODING_TYPE_AC3 = 2,
+	HDMI_AUDIO_CODING_TYPE_MPEG1 = 3,
+	HDMI_AUDIO_CODING_TYPE_MP3 = 4,
+	HDMI_AUDIO_CODING_TYPE_MPEG2 = 5,
+	HDMI_AUDIO_CODING_TYPE_AAC_LC = 6,
+	HDMI_AUDIO_CODING_TYPE_DTS = 7,
+	HDMI_AUDIO_CODING_TYPE_ATRAC = 8,
+	HDMI_AUDIO_CODING_TYPE_DSD = 9,
+	HDMI_AUDIO_CODING_TYPE_EAC3 = 10,
+	HDMI_AUDIO_CODING_TYPE_DTS_HD = 11,
+	HDMI_AUDIO_CODING_TYPE_MLP = 12,
+	HDMI_AUDIO_CODING_TYPE_DST = 13,
+	HDMI_AUDIO_CODING_TYPE_WMA_PRO = 14,
+	HDMI_AUDIO_CODING_TYPE_CXT = 15,
+};
+
+enum hdmi_audio_sample_size {
+	HDMI_AUDIO_SAMPLE_SIZE_STREAM = 0,
+	HDMI_AUDIO_SAMPLE_SIZE_16 = 1,
+	HDMI_AUDIO_SAMPLE_SIZE_20 = 2,
+	HDMI_AUDIO_SAMPLE_SIZE_24 = 3,
+};
+
+enum hdmi_audio_sample_frequency {
+	HDMI_AUDIO_SAMPLE_FREQUENCY_STREAM = 0,
+	HDMI_AUDIO_SAMPLE_FREQUENCY_32000 = 1,
+	HDMI_AUDIO_SAMPLE_FREQUENCY_44100 = 2,
+	HDMI_AUDIO_SAMPLE_FREQUENCY_48000 = 3,
+	HDMI_AUDIO_SAMPLE_FREQUENCY_88200 = 4,
+	HDMI_AUDIO_SAMPLE_FREQUENCY_96000 = 5,
+	HDMI_AUDIO_SAMPLE_FREQUENCY_176400 = 6,
+	HDMI_AUDIO_SAMPLE_FREQUENCY_192000 = 7,
+};
+
+enum hdmi_audio_coding_type_ext {
+	HDMI_AUDIO_CODING_TYPE_EXT_CT = 0,
+	HDMI_AUDIO_CODING_TYPE_EXT_HE_AAC = 1,
+	HDMI_AUDIO_CODING_TYPE_EXT_HE_AAC_V2 = 2,
+	HDMI_AUDIO_CODING_TYPE_EXT_MPEG_SURROUND = 3,
+	HDMI_AUDIO_CODING_TYPE_EXT_MPEG4_HE_AAC = 4,
+	HDMI_AUDIO_CODING_TYPE_EXT_MPEG4_HE_AAC_V2 = 5,
+	HDMI_AUDIO_CODING_TYPE_EXT_MPEG4_AAC_LC = 6,
+	HDMI_AUDIO_CODING_TYPE_EXT_DRA = 7,
+	HDMI_AUDIO_CODING_TYPE_EXT_MPEG4_HE_AAC_SURROUND = 8,
+	HDMI_AUDIO_CODING_TYPE_EXT_MPEG4_AAC_LC_SURROUND = 10,
+};
+
+enum hdmi_3d_structure {
+	HDMI_3D_STRUCTURE_INVALID = -1,
+	HDMI_3D_STRUCTURE_FRAME_PACKING = 0,
+	HDMI_3D_STRUCTURE_FIELD_ALTERNATIVE = 1,
+	HDMI_3D_STRUCTURE_LINE_ALTERNATIVE = 2,
+	HDMI_3D_STRUCTURE_SIDE_BY_SIDE_FULL = 3,
+	HDMI_3D_STRUCTURE_L_DEPTH = 4,
+	HDMI_3D_STRUCTURE_L_DEPTH_GFX_GFX_DEPTH = 5,
+	HDMI_3D_STRUCTURE_TOP_AND_BOTTOM = 6,
+	HDMI_3D_STRUCTURE_SIDE_BY_SIDE_HALF = 8,
+};
+
+enum hdmi_eotf {
+	HDMI_EOTF_TRADITIONAL_GAMMA_SDR = 0,
+	HDMI_EOTF_TRADITIONAL_GAMMA_HDR = 1,
+	HDMI_EOTF_SMPTE_ST2084 = 2,
+	HDMI_EOTF_BT_2100_HLG = 3,
+};
+
+enum hdmi_metadata_type {
+	HDMI_STATIC_METADATA_TYPE1 = 0,
+};
+
+struct hdmi_any_infoframe {
+	enum hdmi_infoframe_type type;
+	unsigned char version;
+	unsigned char length;
+};
+
+struct hdmi_avi_infoframe {
+	enum hdmi_infoframe_type type;
+	unsigned char version;
+	unsigned char length;
+	bool itc;
+	unsigned char pixel_repeat;
+	enum hdmi_colorspace colorspace;
+	enum hdmi_scan_mode scan_mode;
+	enum hdmi_colorimetry colorimetry;
+	enum hdmi_picture_aspect picture_aspect;
+	enum hdmi_active_aspect active_aspect;
+	enum hdmi_extended_colorimetry extended_colorimetry;
+	enum hdmi_quantization_range quantization_range;
+	enum hdmi_nups nups;
+	unsigned char video_code;
+	enum hdmi_ycc_quantization_range ycc_quantization_range;
+	enum hdmi_content_type content_type;
+	unsigned short top_bar;
+	unsigned short bottom_bar;
+	unsigned short left_bar;
+	unsigned short right_bar;
+};
+
+struct hdmi_spd_infoframe {
+	enum hdmi_infoframe_type type;
+	unsigned char version;
+	unsigned char length;
+	char vendor[8];
+	char product[16];
+	enum hdmi_spd_sdi sdi;
+};
+
+struct hdmi_audio_infoframe {
+	enum hdmi_infoframe_type type;
+	unsigned char version;
+	unsigned char length;
+	unsigned char channels;
+	enum hdmi_audio_coding_type coding_type;
+	enum hdmi_audio_sample_size sample_size;
+	enum hdmi_audio_sample_frequency sample_frequency;
+	enum hdmi_audio_coding_type_ext coding_type_ext;
+	unsigned char channel_allocation;
+	unsigned char level_shift_value;
+	bool downmix_inhibit;
+};
+
+struct hdmi_vendor_infoframe {
+	enum hdmi_infoframe_type type;
+	unsigned char version;
+	unsigned char length;
+	unsigned int oui;
+	u8 vic;
+	enum hdmi_3d_structure s3d_struct;
+	unsigned int s3d_ext_data;
+};
+
+struct hdmi_drm_infoframe {
+	enum hdmi_infoframe_type type;
+	unsigned char version;
+	unsigned char length;
+	enum hdmi_eotf eotf;
+	enum hdmi_metadata_type metadata_type;
+	struct {
+		u16 x;
+		u16 y;
+	} display_primaries[3];
+	struct {
+		u16 x;
+		u16 y;
+	} white_point;
+	u16 max_display_mastering_luminance;
+	u16 min_display_mastering_luminance;
+	u16 max_cll;
+	u16 max_fall;
+};
+
+union hdmi_vendor_any_infoframe {
+	struct {
+		enum hdmi_infoframe_type type;
+		unsigned char version;
+		unsigned char length;
+		unsigned int oui;
+	} any;
+	struct hdmi_vendor_infoframe hdmi;
+};
+
+struct dp_sdp_header {
+	u8 HB0;
+	u8 HB1;
+	u8 HB2;
+	u8 HB3;
+};
+
+struct dp_sdp {
+	struct dp_sdp_header sdp_header;
+	u8 db[32];
+};
+
+union hdmi_infoframe {
+	struct hdmi_any_infoframe any;
+	struct hdmi_avi_infoframe avi;
+	struct hdmi_spd_infoframe spd;
+	union hdmi_vendor_any_infoframe vendor;
+	struct hdmi_audio_infoframe audio;
+	struct hdmi_drm_infoframe drm;
+};
+
+enum backlight_type {
+	BACKLIGHT_RAW = 1,
+	BACKLIGHT_PLATFORM = 2,
+	BACKLIGHT_FIRMWARE = 3,
+	BACKLIGHT_TYPE_MAX = 4,
+};
+
+enum backlight_scale {
+	BACKLIGHT_SCALE_UNKNOWN = 0,
+	BACKLIGHT_SCALE_LINEAR = 1,
+	BACKLIGHT_SCALE_NON_LINEAR = 2,
+};
+
+enum backlight_update_reason {
+	BACKLIGHT_UPDATE_HOTKEY = 0,
+	BACKLIGHT_UPDATE_SYSFS = 1,
+};
+
+enum backlight_notification {
+	BACKLIGHT_REGISTERED = 0,
+	BACKLIGHT_UNREGISTERED = 1,
+};
+
+struct backlight_properties {
+	int brightness;
+	int max_brightness;
+	int power;
+	int fb_blank;
+	enum backlight_type type;
+	unsigned int state;
+	enum backlight_scale scale;
+};
+
+struct backlight_ops;
+
+struct backlight_device {
+	struct backlight_properties props;
+	struct mutex update_lock;
+	struct mutex ops_lock;
+	const struct backlight_ops *ops;
+	struct notifier_block fb_notif;
+	struct list_head entry;
+	struct device dev;
+	bool fb_bl_on[32];
+	int use_count;
+};
+
+struct fb_info;
+
+struct backlight_ops {
+	unsigned int options;
+	int (*update_status)(struct backlight_device *);
+	int (*get_brightness)(struct backlight_device *);
+	int (*check_fb)(struct backlight_device *, struct fb_info *);
+};
+
+struct fb_bitfield {
+	__u32 offset;
+	__u32 length;
+	__u32 msb_right;
+};
+
+struct fb_var_screeninfo {
+	__u32 xres;
+	__u32 yres;
+	__u32 xres_virtual;
+	__u32 yres_virtual;
+	__u32 xoffset;
+	__u32 yoffset;
+	__u32 bits_per_pixel;
+	__u32 grayscale;
+	struct fb_bitfield red;
+	struct fb_bitfield green;
+	struct fb_bitfield blue;
+	struct fb_bitfield transp;
+	__u32 nonstd;
+	__u32 activate;
+	__u32 height;
+	__u32 width;
+	__u32 accel_flags;
+	__u32 pixclock;
+	__u32 left_margin;
+	__u32 right_margin;
+	__u32 upper_margin;
+	__u32 lower_margin;
+	__u32 hsync_len;
+	__u32 vsync_len;
+	__u32 sync;
+	__u32 vmode;
+	__u32 rotate;
+	__u32 colorspace;
+	__u32 reserved[4];
+};
+
+struct fb_fix_screeninfo {
+	char id[16];
+	unsigned long smem_start;
+	__u32 smem_len;
+	__u32 type;
+	__u32 type_aux;
+	__u32 visual;
+	__u16 xpanstep;
+	__u16 ypanstep;
+	__u16 ywrapstep;
+	__u32 line_length;
+	unsigned long mmio_start;
+	__u32 mmio_len;
+	__u32 accel;
+	__u16 capabilities;
+	__u16 reserved[2];
+};
+
+struct fb_chroma {
+	__u32 redx;
+	__u32 greenx;
+	__u32 bluex;
+	__u32 whitex;
+	__u32 redy;
+	__u32 greeny;
+	__u32 bluey;
+	__u32 whitey;
+};
+
+struct fb_videomode;
+
+struct fb_monspecs {
+	struct fb_chroma chroma;
+	struct fb_videomode *modedb;
+	__u8 manufacturer[4];
+	__u8 monitor[14];
+	__u8 serial_no[14];
+	__u8 ascii[14];
+	__u32 modedb_len;
+	__u32 model;
+	__u32 serial;
+	__u32 year;
+	__u32 week;
+	__u32 hfmin;
+	__u32 hfmax;
+	__u32 dclkmin;
+	__u32 dclkmax;
+	__u16 input;
+	__u16 dpms;
+	__u16 signal;
+	__u16 vfmin;
+	__u16 vfmax;
+	__u16 gamma;
+	__u16 gtf: 1;
+	__u16 misc;
+	__u8 version;
+	__u8 revision;
+	__u8 max_x;
+	__u8 max_y;
+};
+
+struct fb_pixmap {
+	u8 *addr;
+	u32 size;
+	u32 offset;
+	u32 buf_align;
+	u32 scan_align;
+	u32 access_align;
+	u32 flags;
+	u32 blit_x;
+	u32 blit_y;
+	void (*writeio)(struct fb_info *, void *, void *, unsigned int);
+	void (*readio)(struct fb_info *, void *, void *, unsigned int);
+};
+
+struct fb_cmap {
+	__u32 start;
+	__u32 len;
+	__u16 *red;
+	__u16 *green;
+	__u16 *blue;
+	__u16 *transp;
+};
+
+struct fb_ops;
+
+struct fb_info {
+	refcount_t count;
+	int node;
+	int flags;
+	int fbcon_rotate_hint;
+	struct mutex lock;
+	struct mutex mm_lock;
+	struct fb_var_screeninfo var;
+	struct fb_fix_screeninfo fix;
+	struct fb_monspecs monspecs;
+	struct fb_pixmap pixmap;
+	struct fb_pixmap sprite;
+	struct fb_cmap cmap;
+	struct list_head modelist;
+	struct fb_videomode *mode;
+	const struct fb_ops *fbops;
+	struct device *device;
+	struct device *dev;
+	int class_flag;
+	union {
+		char *screen_base;
+		char *screen_buffer;
+	};
+	unsigned long screen_size;
+	void *pseudo_palette;
+	u32 state;
+	void *fbcon_par;
+	void *par;
+	bool skip_vt_switch;
+};
+
+struct fb_videomode {
+	const char *name;
+	u32 refresh;
+	u32 xres;
+	u32 yres;
+	u32 pixclock;
+	u32 left_margin;
+	u32 right_margin;
+	u32 upper_margin;
+	u32 lower_margin;
+	u32 hsync_len;
+	u32 vsync_len;
+	u32 sync;
+	u32 vmode;
+	u32 flag;
+};
+
+struct fb_fillrect;
+
+struct fb_copyarea;
+
+struct fb_image;
+
+struct fb_cursor;
+
+struct fb_blit_caps;
+
+struct fb_ops {
+	struct module *owner;
+	int (*fb_open)(struct fb_info *, int);
+	int (*fb_release)(struct fb_info *, int);
+	ssize_t (*fb_read)(struct fb_info *, char __attribute__((btf_type_tag("user"))) *, size_t, loff_t *);
+	ssize_t (*fb_write)(struct fb_info *, const char __attribute__((btf_type_tag("user"))) *, size_t, loff_t *);
+	int (*fb_check_var)(struct fb_var_screeninfo *, struct fb_info *);
+	int (*fb_set_par)(struct fb_info *);
+	int (*fb_setcolreg)(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, struct fb_info *);
+	int (*fb_setcmap)(struct fb_cmap *, struct fb_info *);
+	int (*fb_blank)(int, struct fb_info *);
+	int (*fb_pan_display)(struct fb_var_screeninfo *, struct fb_info *);
+	void (*fb_fillrect)(struct fb_info *, const struct fb_fillrect *);
+	void (*fb_copyarea)(struct fb_info *, const struct fb_copyarea *);
+	void (*fb_imageblit)(struct fb_info *, const struct fb_image *);
+	int (*fb_cursor)(struct fb_info *, struct fb_cursor *);
+	int (*fb_sync)(struct fb_info *);
+	int (*fb_ioctl)(struct fb_info *, unsigned int, unsigned long);
+	int (*fb_compat_ioctl)(struct fb_info *, unsigned int, unsigned long);
+	int (*fb_mmap)(struct fb_info *, struct vm_area_struct *);
+	void (*fb_get_caps)(struct fb_info *, struct fb_blit_caps *, struct fb_var_screeninfo *);
+	void (*fb_destroy)(struct fb_info *);
+	int (*fb_debug_enter)(struct fb_info *);
+	int (*fb_debug_leave)(struct fb_info *);
+};
+
+struct fb_fillrect {
+	__u32 dx;
+	__u32 dy;
+	__u32 width;
+	__u32 height;
+	__u32 color;
+	__u32 rop;
+};
+
+struct fb_copyarea {
+	__u32 dx;
+	__u32 dy;
+	__u32 width;
+	__u32 height;
+	__u32 sx;
+	__u32 sy;
+};
+
+struct fb_image {
+	__u32 dx;
+	__u32 dy;
+	__u32 width;
+	__u32 height;
+	__u32 fg_color;
+	__u32 bg_color;
+	__u8 depth;
+	const char *data;
+	struct fb_cmap cmap;
+};
+
+struct fbcurpos {
+	__u16 x;
+	__u16 y;
+};
+
+struct fb_cursor {
+	__u16 set;
+	__u16 enable;
+	__u16 rop;
+	const char *mask;
+	struct fbcurpos hot;
+	struct fb_image image;
+};
+
+struct fb_blit_caps {
+	u32 x;
+	u32 y;
+	u32 len;
+	u32 flags;
+};
+
+enum display_flags {
+	DISPLAY_FLAGS_HSYNC_LOW = 1,
+	DISPLAY_FLAGS_HSYNC_HIGH = 2,
+	DISPLAY_FLAGS_VSYNC_LOW = 4,
+	DISPLAY_FLAGS_VSYNC_HIGH = 8,
+	DISPLAY_FLAGS_DE_LOW = 16,
+	DISPLAY_FLAGS_DE_HIGH = 32,
+	DISPLAY_FLAGS_PIXDATA_POSEDGE = 64,
+	DISPLAY_FLAGS_PIXDATA_NEGEDGE = 128,
+	DISPLAY_FLAGS_INTERLACED = 256,
+	DISPLAY_FLAGS_DOUBLESCAN = 512,
+	DISPLAY_FLAGS_DOUBLECLK = 1024,
+	DISPLAY_FLAGS_SYNC_POSEDGE = 2048,
+	DISPLAY_FLAGS_SYNC_NEGEDGE = 4096,
+};
+
+struct display_timing;
+
+struct display_timings {
+	unsigned int num_timings;
+	unsigned int native_mode;
+	struct display_timing **timings;
+};
+
+struct timing_entry {
+	u32 min;
+	u32 typ;
+	u32 max;
+};
+
+struct display_timing {
+	struct timing_entry pixelclock;
+	struct timing_entry hactive;
+	struct timing_entry hfront_porch;
+	struct timing_entry hback_porch;
+	struct timing_entry hsync_len;
+	struct timing_entry vactive;
+	struct timing_entry vfront_porch;
+	struct timing_entry vback_porch;
+	struct timing_entry vsync_len;
+	enum display_flags flags;
+};
+
+struct videomode {
+	unsigned long pixelclock;
+	u32 hactive;
+	u32 hfront_porch;
+	u32 hback_porch;
+	u32 hsync_len;
+	u32 vactive;
+	u32 vfront_porch;
+	u32 vback_porch;
+	u32 vsync_len;
+	enum display_flags flags;
+};
+
+struct pm_domain_data {
+	struct list_head list_node;
+	struct device *dev;
+};
+
+struct devm_clk_state {
+	struct clk *clk;
+	void (*exit)(struct clk *);
+};
+
+struct clk_bulk_devres {
+	struct clk_bulk_data *clks;
+	int num_clks;
+};
+
+struct clk_hw;
+
+struct clk_lookup {
+	struct list_head node;
+	const char *dev_id;
+	const char *con_id;
+	struct clk *clk;
+	struct clk_hw *clk_hw;
+};
+
+struct clk_core;
+
+struct clk_init_data;
+
+struct clk_hw {
+	struct clk_core *core;
+	struct clk *clk;
+	const struct clk_init_data *init;
+};
+
+struct clk_ops;
+
+struct clk_parent_data;
+
+struct clk_init_data {
+	const char *name;
+	const struct clk_ops *ops;
+	const char * const *parent_names;
+	const struct clk_parent_data *parent_data;
+	const struct clk_hw **parent_hws;
+	u8 num_parents;
+	unsigned long flags;
+};
+
+struct clk_rate_request;
+
+struct clk_duty;
+
+struct clk_ops {
+	int (*prepare)(struct clk_hw *);
+	void (*unprepare)(struct clk_hw *);
+	int (*is_prepared)(struct clk_hw *);
+	void (*unprepare_unused)(struct clk_hw *);
+	int (*enable)(struct clk_hw *);
+	void (*disable)(struct clk_hw *);
+	int (*is_enabled)(struct clk_hw *);
+	void (*disable_unused)(struct clk_hw *);
+	int (*save_context)(struct clk_hw *);
+	void (*restore_context)(struct clk_hw *);
+	unsigned long (*recalc_rate)(struct clk_hw *, unsigned long);
+	long (*round_rate)(struct clk_hw *, unsigned long, unsigned long *);
+	int (*determine_rate)(struct clk_hw *, struct clk_rate_request *);
+	int (*set_parent)(struct clk_hw *, u8);
+	u8 (*get_parent)(struct clk_hw *);
+	int (*set_rate)(struct clk_hw *, unsigned long, unsigned long);
+	int (*set_rate_and_parent)(struct clk_hw *, unsigned long, unsigned long, u8);
+	unsigned long (*recalc_accuracy)(struct clk_hw *, unsigned long);
+	int (*get_phase)(struct clk_hw *);
+	int (*set_phase)(struct clk_hw *, int);
+	int (*get_duty_cycle)(struct clk_hw *, struct clk_duty *);
+	int (*set_duty_cycle)(struct clk_hw *, struct clk_duty *);
+	int (*init)(struct clk_hw *);
+	void (*terminate)(struct clk_hw *);
+	void (*debug_init)(struct clk_hw *, struct dentry *);
+	int (*pre_rate_change)(struct clk_hw *, unsigned long, unsigned long);
+	int (*post_rate_change)(struct clk_hw *, unsigned long, unsigned long);
+};
+
+struct clk_rate_request {
+	struct clk_core *core;
+	unsigned long rate;
+	unsigned long min_rate;
+	unsigned long max_rate;
+	unsigned long best_parent_rate;
+	struct clk_hw *best_parent_hw;
+};
+
+struct clk_duty {
+	unsigned int num;
+	unsigned int den;
+};
+
+struct clk_parent_data {
+	const struct clk_hw *hw;
+	const char *fw_name;
+	const char *name;
+	int index;
+};
+
+struct clk_lookup_alloc {
+	struct clk_lookup cl;
+	char dev_id[20];
+	char con_id[16];
+};
+
+typedef void (*btf_trace_clk_enable)(void *, struct clk_core *);
+
+struct clk_parent_map;
+
+struct clk_core {
+	const char *name;
+	const struct clk_ops *ops;
+	struct clk_hw *hw;
+	struct module *owner;
+	struct device *dev;
+	struct hlist_node rpm_node;
+	struct device_node *of_node;
+	struct clk_core *parent;
+	struct clk_parent_map *parents;
+	u8 num_parents;
+	u8 new_parent_index;
+	unsigned long rate;
+	unsigned long req_rate;
+	unsigned long new_rate;
+	struct clk_core *new_parent;
+	struct clk_core *new_child;
+	unsigned long flags;
+	bool orphan;
+	bool rpm_enabled;
+	bool need_sync;
+	bool boot_enabled;
+	unsigned int enable_count;
+	unsigned int prepare_count;
+	unsigned int protect_count;
+	unsigned long min_rate;
+	unsigned long max_rate;
+	unsigned long accuracy;
+	int phase;
+	struct clk_duty duty;
+	struct hlist_head children;
+	struct hlist_node child_node;
+	struct hlist_head clks;
+	unsigned int notifier_count;
+	struct dentry *dentry;
+	struct hlist_node debug_node;
+	struct kref ref;
+};
+
+struct clk {
+	struct clk_core *core;
+	struct device *dev;
+	const char *dev_id;
+	const char *con_id;
+	unsigned long min_rate;
+	unsigned long max_rate;
+	unsigned int exclusive_count;
+	struct hlist_node clks_node;
+};
+
+struct clk_parent_map {
+	const struct clk_hw *hw;
+	struct clk_core *core;
+	const char *fw_name;
+	const char *name;
+	int index;
+};
+
+typedef void (*btf_trace_clk_enable_complete)(void *, struct clk_core *);
+
+typedef void (*btf_trace_clk_disable)(void *, struct clk_core *);
+
+typedef void (*btf_trace_clk_disable_complete)(void *, struct clk_core *);
+
+typedef void (*btf_trace_clk_prepare)(void *, struct clk_core *);
+
+typedef void (*btf_trace_clk_prepare_complete)(void *, struct clk_core *);
+
+typedef void (*btf_trace_clk_unprepare)(void *, struct clk_core *);
+
+typedef void (*btf_trace_clk_unprepare_complete)(void *, struct clk_core *);
+
+typedef void (*btf_trace_clk_set_rate)(void *, struct clk_core *, unsigned long);
+
+typedef void (*btf_trace_clk_set_rate_complete)(void *, struct clk_core *, unsigned long);
+
+typedef void (*btf_trace_clk_set_min_rate)(void *, struct clk_core *, unsigned long);
+
+typedef void (*btf_trace_clk_set_max_rate)(void *, struct clk_core *, unsigned long);
+
+typedef void (*btf_trace_clk_set_rate_range)(void *, struct clk_core *, unsigned long, unsigned long);
+
+typedef void (*btf_trace_clk_set_parent)(void *, struct clk_core *, struct clk_core *);
+
+typedef void (*btf_trace_clk_set_parent_complete)(void *, struct clk_core *, struct clk_core *);
+
+typedef void (*btf_trace_clk_set_phase)(void *, struct clk_core *, int);
+
+typedef void (*btf_trace_clk_set_phase_complete)(void *, struct clk_core *, int);
+
+typedef void (*btf_trace_clk_set_duty_cycle)(void *, struct clk_core *, struct clk_duty *);
+
+typedef void (*btf_trace_clk_set_duty_cycle_complete)(void *, struct clk_core *, struct clk_duty *);
+
+typedef void (*btf_trace_clk_rate_request_start)(void *, struct clk_rate_request *);
+
+typedef void (*btf_trace_clk_rate_request_done)(void *, struct clk_rate_request *);
+
+struct clk_notifier {
+	struct clk *clk;
+	struct srcu_notifier_head notifier_head;
+	struct list_head node;
+};
+
+struct of_clk_provider {
+	struct list_head link;
+	struct device_node *node;
+	struct clk * (*get)(struct of_phandle_args *, void *);
+	struct clk_hw * (*get_hw)(struct of_phandle_args *, void *);
+	void *data;
+};
+
+struct clock_provider {
+	void (*clk_init_cb)(struct device_node *);
+	struct device_node *np;
+	struct list_head node;
+};
+
+struct trace_event_raw_clk {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	char __data[0];
+};
+
+struct trace_event_raw_clk_rate {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	unsigned long rate;
+	char __data[0];
+};
+
+struct trace_event_raw_clk_rate_range {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	unsigned long min;
+	unsigned long max;
+	char __data[0];
+};
+
+struct trace_event_raw_clk_parent {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	u32 __data_loc_pname;
+	char __data[0];
+};
+
+struct trace_event_raw_clk_phase {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	int phase;
+	char __data[0];
+};
+
+struct trace_event_raw_clk_duty_cycle {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	unsigned int num;
+	unsigned int den;
+	char __data[0];
+};
+
+struct trace_event_raw_clk_rate_request {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	u32 __data_loc_pname;
+	unsigned long min;
+	unsigned long max;
+	unsigned long prate;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_clk {
+	u32 name;
+};
+
+struct trace_event_data_offsets_clk_rate {
+	u32 name;
+};
+
+struct trace_event_data_offsets_clk_rate_range {
+	u32 name;
+};
+
+struct trace_event_data_offsets_clk_phase {
+	u32 name;
+};
+
+struct trace_event_data_offsets_clk_duty_cycle {
+	u32 name;
+};
+
+struct clk_notifier_data {
+	struct clk *clk;
+	unsigned long old_rate;
+	unsigned long new_rate;
+};
+
+struct trace_event_data_offsets_clk_parent {
+	u32 name;
+	u32 pname;
+};
+
+struct trace_event_data_offsets_clk_rate_request {
+	u32 name;
+	u32 pname;
+};
+
+struct clk_notifier_devres {
+	struct clk *clk;
+	struct notifier_block *nb;
+};
+
+struct clk_onecell_data {
+	struct clk **clks;
+	unsigned int clk_num;
+};
+
+struct clk_hw_onecell_data {
+	unsigned int num;
+	struct clk_hw *hws[0];
+};
+
+struct clk_div_table;
+
+struct clk_divider {
+	struct clk_hw hw;
+	void *reg;
+	u8 shift;
+	u8 width;
+	u8 flags;
+	const struct clk_div_table *table;
+	spinlock_t *lock;
+};
+
+struct clk_div_table {
+	unsigned int val;
+	unsigned int div;
+};
+
+struct clk_fixed_factor {
+	struct clk_hw hw;
+	unsigned int mult;
+	unsigned int div;
+};
+
+struct clk_fixed_rate {
+	struct clk_hw hw;
+	unsigned long fixed_rate;
+	unsigned long fixed_accuracy;
+	unsigned long flags;
+};
+
+struct clk_gate {
+	struct clk_hw hw;
+	void *reg;
+	u8 bit_idx;
+	u8 flags;
+	spinlock_t *lock;
+};
+
+struct clk_multiplier {
+	struct clk_hw hw;
+	void *reg;
+	u8 shift;
+	u8 width;
+	u8 flags;
+	spinlock_t *lock;
+};
+
+struct clk_mux {
+	struct clk_hw hw;
+	void *reg;
+	const u32 *table;
+	u32 mask;
+	u8 shift;
+	u8 flags;
+	spinlock_t *lock;
+};
+
+struct clk_composite {
+	struct clk_hw hw;
+	struct clk_ops ops;
+	struct clk_hw *mux_hw;
+	struct clk_hw *rate_hw;
+	struct clk_hw *gate_hw;
+	const struct clk_ops *mux_ops;
+	const struct clk_ops *rate_ops;
+	const struct clk_ops *gate_ops;
+};
+
+struct clk_fractional_divider {
+	struct clk_hw hw;
+	void *reg;
+	u8 mshift;
+	u8 mwidth;
+	u8 nshift;
+	u8 nwidth;
+	u8 flags;
+	void (*approximation)(struct clk_hw *, unsigned long, unsigned long *, unsigned long *, unsigned long *);
+	spinlock_t *lock;
+};
+
+struct u32_fract {
+	__u32 numerator;
+	__u32 denominator;
+};
+
+struct clk_gpio {
+	struct clk_hw hw;
+	struct gpio_desc *gpiod;
+};
+
+struct scpi_dvfs_info;
+
+struct scpi_ops;
+
+struct scpi_clk {
+	u32 id;
+	struct clk_hw hw;
+	struct scpi_dvfs_info *info;
+	struct scpi_ops *scpi_ops;
+};
+
+struct scpi_opp;
+
+struct scpi_dvfs_info {
+	unsigned int count;
+	unsigned int latency;
+	struct scpi_opp *opps;
+};
+
+struct scpi_opp {
+	u32 freq;
+	u32 m_volt;
+};
+
+struct scpi_sensor_info;
+
+struct scpi_ops {
+	u32 (*get_version)();
+	int (*clk_get_range)(u16, unsigned long *, unsigned long *);
+	unsigned long (*clk_get_val)(u16);
+	int (*clk_set_val)(u16, unsigned long);
+	int (*dvfs_get_idx)(u8);
+	int (*dvfs_set_idx)(u8, u8);
+	struct scpi_dvfs_info * (*dvfs_get_info)(u8);
+	int (*device_domain_id)(struct device *);
+	int (*get_transition_latency)(struct device *);
+	int (*add_opps_to_device)(struct device *);
+	int (*sensor_get_capability)(u16 *);
+	int (*sensor_get_info)(u16, struct scpi_sensor_info *);
+	int (*sensor_get_value)(u16, u64 *);
+	int (*device_get_power_state)(u16);
+	int (*device_set_power_state)(u16, u8);
+};
+
+struct scpi_sensor_info {
+	u16 sensor_id;
+	u8 class;
+	u8 trigger_type;
+	char name[20];
+};
+
+struct scpi_clk_data {
+	struct scpi_clk **clk;
+	unsigned int clk_num;
+};
+
+struct hisi_phase_clock {
+	unsigned int id;
+	const char *name;
+	const char *parent_names;
+	unsigned long flags;
+	unsigned long offset;
+	u8 shift;
+	u8 width;
+	u32 *phase_degrees;
+	u32 *phase_regvals;
+	u8 phase_num;
+};
+
+struct hisi_clock_data {
+	struct clk_onecell_data clk_data;
+	void *base;
+};
+
+struct hisi_fixed_rate_clock {
+	unsigned int id;
+	char *name;
+	const char *parent_name;
+	unsigned long flags;
+	unsigned long fixed_rate;
+};
+
+struct hisi_fixed_factor_clock {
+	unsigned int id;
+	char *name;
+	const char *parent_name;
+	unsigned long mult;
+	unsigned long div;
+	unsigned long flags;
+};
+
+struct hisi_mux_clock {
+	unsigned int id;
+	const char *name;
+	const char * const *parent_names;
+	u8 num_parents;
+	unsigned long flags;
+	unsigned long offset;
+	u8 shift;
+	u8 width;
+	u8 mux_flags;
+	const u32 *table;
+	const char *alias;
+};
+
+struct hisi_divider_clock {
+	unsigned int id;
+	const char *name;
+	const char *parent_name;
+	unsigned long flags;
+	unsigned long offset;
+	u8 shift;
+	u8 width;
+	u8 div_flags;
+	struct clk_div_table *table;
+	const char *alias;
+};
+
+struct hisi_gate_clock {
+	unsigned int id;
+	const char *name;
+	const char *parent_name;
+	unsigned long flags;
+	unsigned long offset;
+	u8 bit_idx;
+	u8 gate_flags;
+	const char *alias;
+};
+
+struct hi6220_divider_clock {
+	unsigned int id;
+	const char *name;
+	const char *parent_name;
+	unsigned long flags;
+	unsigned long offset;
+	u8 shift;
+	u8 width;
+	u32 mask_bit;
+	const char *alias;
+};
+
+struct clkgate_separated {
+	struct clk_hw hw;
+	void *enable;
+	u8 bit_idx;
+	u8 flags;
+	spinlock_t *lock;
+};
+
+struct hi6220_clk_divider {
+	struct clk_hw hw;
+	void *reg;
+	u8 shift;
+	u8 width;
+	u32 mask;
+	const struct clk_div_table *table;
+	spinlock_t *lock;
+};
+
+struct clk_hisi_phase {
+	struct clk_hw hw;
+	void *reg;
+	u32 *phase_degrees;
+	u32 *phase_regvals;
+	u8 phase_num;
+	u32 mask;
+	u8 shift;
+	u8 flags;
+	spinlock_t *lock;
+};
+
+struct hisi_crg_funcs {
+	struct hisi_clock_data * (*register_clks)(struct platform_device *);
+	void (*unregister_clks)(struct platform_device *);
+};
+
+struct hisi_reset_controller;
+
+struct hisi_crg_dev {
+	struct hisi_clock_data *clk_data;
+	struct hisi_reset_controller *rstc;
+	const struct hisi_crg_funcs *funcs;
+};
+
+struct hi3519_crg_data {
+	struct hisi_clock_data *clk_data;
+	struct hisi_reset_controller *rstc;
+};
+
+struct hi3559av100_pll_clock {
+	u32 id;
+	const char *name;
+	const char *parent_name;
+	const u32 ctrl_reg1;
+	const u8 frac_shift;
+	const u8 frac_width;
+	const u8 postdiv1_shift;
+	const u8 postdiv1_width;
+	const u8 postdiv2_shift;
+	const u8 postdiv2_width;
+	const u32 ctrl_reg2;
+	const u8 fbdiv_shift;
+	const u8 fbdiv_width;
+	const u8 refdiv_shift;
+	const u8 refdiv_width;
+};
+
+struct hi3559av100_clk_pll {
+	struct clk_hw hw;
+	u32 id;
+	void *ctrl_reg1;
+	u8 frac_shift;
+	u8 frac_width;
+	u8 postdiv1_shift;
+	u8 postdiv1_width;
+	u8 postdiv2_shift;
+	u8 postdiv2_width;
+	void *ctrl_reg2;
+	u8 fbdiv_shift;
+	u8 fbdiv_width;
+	u8 refdiv_shift;
+	u8 refdiv_width;
+};
+
+struct reset_controller_dev;
+
+struct reset_control_ops {
+	int (*reset)(struct reset_controller_dev *, unsigned long);
+	int (*assert)(struct reset_controller_dev *, unsigned long);
+	int (*deassert)(struct reset_controller_dev *, unsigned long);
+	int (*status)(struct reset_controller_dev *, unsigned long);
+};
+
+struct reset_controller_dev {
+	const struct reset_control_ops *ops;
+	struct module *owner;
+	struct list_head list;
+	struct list_head reset_control_head;
+	struct device *dev;
+	struct device_node *of_node;
+	int of_reset_n_cells;
+	int (*of_xlate)(struct reset_controller_dev *, const struct of_phandle_args *);
+	unsigned int nr_resets;
+};
+
+struct hisi_reset_controller {
+	spinlock_t lock;
+	void *membase;
+	struct reset_controller_dev rcdev;
+};
+
+struct mbox_client {
+	struct device *dev;
+	bool tx_block;
+	unsigned long tx_tout;
+	bool knows_txdone;
+	void (*rx_callback)(struct mbox_client *, void *);
+	void (*tx_prepare)(struct mbox_client *, void *);
+	void (*tx_done)(struct mbox_client *, void *, int);
+};
+
+struct mbox_chan;
+
+struct hi6220_stub_clk {
+	u32 id;
+	struct device *dev;
+	struct clk_hw hw;
+	struct regmap *dfs_map;
+	struct mbox_client cl;
+	struct mbox_chan *mbox;
+};
+
+struct hi6220_mbox_msg {
+	unsigned char type;
+	unsigned char cmd;
+	unsigned char obj;
+	unsigned char src;
+	unsigned char para[4];
+};
+
+union hi6220_mbox_data {
+	unsigned int data[8];
+	struct hi6220_mbox_msg msg;
+};
+
+struct hi3660_stub_clk_chan {
+	struct mbox_client cl;
+	struct mbox_chan *mbox;
+};
+
+struct hi3660_stub_clk {
+	unsigned int id;
+	struct clk_hw hw;
+	unsigned int cmd;
+	unsigned int msg[8];
+	unsigned int rate;
+};
+
+struct tegra_cpu_car_ops {
+	void (*wait_for_reset)(u32);
+	void (*put_in_reset)(u32);
+	void (*out_of_reset)(u32);
+	void (*enable_clock)(u32);
+	void (*disable_clock)(u32);
+	bool (*rail_off_ready)();
+	void (*suspend)();
+	void (*resume)();
+};
+
+typedef void (*tegra_clk_apply_init_table_func)();
+
+struct tegra_clk_periph_regs {
+	u32 enb_reg;
+	u32 enb_set_reg;
+	u32 enb_clr_reg;
+	u32 rst_reg;
+	u32 rst_set_reg;
+	u32 rst_clr_reg;
+};
+
+struct tegra_clk_duplicate {
+	int clk_id;
+	struct clk_lookup lookup;
+};
+
+struct tegra_clk_init_table {
+	unsigned int clk_id;
+	unsigned int parent_id;
+	unsigned long rate;
+	int state;
+};
+
+struct tegra_devclk {
+	int dt_id;
+	char *dev_id;
+	char *con_id;
+};
+
+struct tegra_clk {
+	int dt_id;
+	bool present;
+};
+
+struct tegra_clk_sync_source {
+	struct clk_hw hw;
+	unsigned long rate;
+	unsigned long max_rate;
+};
+
+struct tegra_clk_device {
+	struct notifier_block clk_nb;
+	struct device *dev;
+	struct clk_hw *hw;
+	struct mutex lock;
+};
+
+struct tegra_core_opp_params {
+	bool init_state;
+};
+
+enum dfll_ctrl_mode {
+	DFLL_UNINITIALIZED = 0,
+	DFLL_DISABLED = 1,
+	DFLL_OPEN_LOOP = 2,
+	DFLL_CLOSED_LOOP = 3,
+};
+
+enum dfll_tune_range {
+	DFLL_TUNE_UNINITIALIZED = 0,
+	DFLL_TUNE_LOW = 1,
+};
+
+enum tegra_dfll_pmu_if {
+	TEGRA_DFLL_PMU_I2C = 0,
+	TEGRA_DFLL_PMU_PWM = 1,
+};
+
+struct i2c_adapter;
+
+struct i2c_client {
+	unsigned short flags;
+	unsigned short addr;
+	char name[20];
+	struct i2c_adapter *adapter;
+	struct device dev;
+	int init_irq;
+	int irq;
+	struct list_head detected;
+	void *devres_group_id;
+};
+
+struct i2c_algorithm;
+
+struct i2c_lock_operations;
+
+struct i2c_bus_recovery_info;
+
+struct i2c_adapter_quirks;
+
+struct i2c_adapter {
+	struct module *owner;
+	unsigned int class;
+	const struct i2c_algorithm *algo;
+	void *algo_data;
+	const struct i2c_lock_operations *lock_ops;
+	struct rt_mutex bus_lock;
+	struct rt_mutex mux_lock;
+	int timeout;
+	int retries;
+	struct device dev;
+	unsigned long locked_flags;
+	int nr;
+	char name[48];
+	struct completion dev_released;
+	struct mutex userspace_clients_lock;
+	struct list_head userspace_clients;
+	struct i2c_bus_recovery_info *bus_recovery_info;
+	const struct i2c_adapter_quirks *quirks;
+	struct irq_domain *host_notify_domain;
+	struct regulator *bus_regulator;
+};
+
+struct i2c_msg;
+
+union i2c_smbus_data;
+
+struct i2c_algorithm {
+	int (*master_xfer)(struct i2c_adapter *, struct i2c_msg *, int);
+	int (*master_xfer_atomic)(struct i2c_adapter *, struct i2c_msg *, int);
+	int (*smbus_xfer)(struct i2c_adapter *, u16, unsigned short, char, u8, int, union i2c_smbus_data *);
+	int (*smbus_xfer_atomic)(struct i2c_adapter *, u16, unsigned short, char, u8, int, union i2c_smbus_data *);
+	u32 (*functionality)(struct i2c_adapter *);
+};
+
+struct i2c_msg {
+	__u16 addr;
+	__u16 flags;
+	__u16 len;
+	__u8 *buf;
+};
+
+union i2c_smbus_data {
+	__u8 byte;
+	__u16 word;
+	__u8 block[34];
+};
+
+struct i2c_lock_operations {
+	void (*lock_bus)(struct i2c_adapter *, unsigned int);
+	int (*trylock_bus)(struct i2c_adapter *, unsigned int);
+	void (*unlock_bus)(struct i2c_adapter *, unsigned int);
+};
+
+struct i2c_bus_recovery_info {
+	int (*recover_bus)(struct i2c_adapter *);
+	int (*get_scl)(struct i2c_adapter *);
+	void (*set_scl)(struct i2c_adapter *, int);
+	int (*get_sda)(struct i2c_adapter *);
+	void (*set_sda)(struct i2c_adapter *, int);
+	int (*get_bus_free)(struct i2c_adapter *);
+	void (*prepare_recovery)(struct i2c_adapter *);
+	void (*unprepare_recovery)(struct i2c_adapter *);
+	struct gpio_desc *scl_gpiod;
+	struct gpio_desc *sda_gpiod;
+	struct pinctrl *pinctrl;
+	struct pinctrl_state *pins_default;
+	struct pinctrl_state *pins_gpio;
+};
+
+struct i2c_adapter_quirks {
+	u64 flags;
+	int max_num_msgs;
+	u16 max_write_len;
+	u16 max_read_len;
+	u16 max_comb_1st_msg_len;
+	u16 max_comb_2nd_msg_len;
+};
+
+struct dfll_rate_req {
+	unsigned long rate;
+	unsigned long dvco_target_rate;
+	int lut_index;
+	u8 mult_bits;
+	u8 scale_bits;
+};
+
+struct tegra_dfll_soc_data;
+
+struct tegra_dfll {
+	struct device *dev;
+	struct tegra_dfll_soc_data *soc;
+	void *base;
+	void *i2c_base;
+	void *i2c_controller_base;
+	void *lut_base;
+	struct regulator *vdd_reg;
+	struct clk *soc_clk;
+	struct clk *ref_clk;
+	struct clk *i2c_clk;
+	struct clk *dfll_clk;
+	struct reset_control *dfll_rst;
+	struct reset_control *dvco_rst;
+	unsigned long ref_rate;
+	unsigned long i2c_clk_rate;
+	unsigned long dvco_rate_min;
+	enum dfll_ctrl_mode mode;
+	enum dfll_tune_range tune_range;
+	struct dentry *debugfs_dir;
+	struct clk_hw dfll_clk_hw;
+	const char *output_clock_name;
+	struct dfll_rate_req last_req;
+	unsigned long last_unrounded_rate;
+	u32 droop_ctrl;
+	u32 sample_rate;
+	u32 force_mode;
+	u32 cf;
+	u32 ci;
+	u32 cg;
+	bool cg_scale;
+	u32 i2c_fs_rate;
+	u32 i2c_reg;
+	u32 i2c_slave_addr;
+	unsigned int lut[33];
+	unsigned long lut_uv[33];
+	int lut_size;
+	u8 lut_bottom;
+	u8 lut_min;
+	u8 lut_max;
+	u8 lut_safe;
+	enum tegra_dfll_pmu_if pmu_if;
+	unsigned long pwm_rate;
+	struct pinctrl *pwm_pin;
+	struct pinctrl_state *pwm_enable_state;
+	struct pinctrl_state *pwm_disable_state;
+	u32 reg_init_uV;
+};
+
+struct rail_alignment {
+	int offset_uv;
+	int step_uv;
+};
+
+struct cvb_table;
+
+struct tegra_dfll_soc_data {
+	struct device *dev;
+	unsigned long max_freq;
+	const struct cvb_table *cvb;
+	struct rail_alignment alignment;
+	void (*init_clock_trimmers)();
+	void (*set_clock_trimmers_high)();
+	void (*set_clock_trimmers_low)();
+};
+
+struct cvb_coefficients {
+	int c0;
+	int c1;
+	int c2;
+};
+
+struct cvb_table_freq_entry {
+	unsigned long freq;
+	struct cvb_coefficients coefficients;
+};
+
+struct cvb_cpu_dfll_data {
+	u32 tune0_low;
+	u32 tune0_high;
+	u32 tune1;
+	unsigned int tune_high_min_millivolts;
+};
+
+struct cvb_table {
+	int speedo_id;
+	int process_id;
+	int min_millivolts;
+	int max_millivolts;
+	int speedo_scale;
+	int voltage_scale;
+	struct cvb_table_freq_entry entries[40];
+	struct cvb_cpu_dfll_data cpu_dfll_data;
+};
+
+struct tegra_clk_frac_div {
+	struct clk_hw hw;
+	void *reg;
+	u8 flags;
+	u8 shift;
+	u8 width;
+	u8 frac_width;
+	spinlock_t *lock;
+};
+
+struct tegra_clk_periph_gate {
+	u32 magic;
+	struct clk_hw hw;
+	void *clk_base;
+	u8 flags;
+	int clk_num;
+	int *enable_refcnt;
+	const struct tegra_clk_periph_regs *regs;
+};
+
+struct tegra_clk_periph {
+	u32 magic;
+	struct clk_hw hw;
+	struct clk_mux mux;
+	struct tegra_clk_frac_div divider;
+	struct tegra_clk_periph_gate gate;
+	const struct clk_ops *mux_ops;
+	const struct clk_ops *div_ops;
+	const struct clk_ops *gate_ops;
+};
+
+struct tegra_periph_init_data {
+	const char *name;
+	int clk_id;
+	union {
+		const char * const *parent_names;
+		const char *parent_name;
+	} p;
+	int num_parents;
+	struct tegra_clk_periph periph;
+	u32 offset;
+	const char *con_id;
+	const char *dev_id;
+	unsigned long flags;
+};
+
+struct tegra_clk_periph_fixed {
+	struct clk_hw hw;
+	void *base;
+	const struct tegra_clk_periph_regs *regs;
+	unsigned int mul;
+	unsigned int div;
+	unsigned int num;
+};
+
+struct div_nmp {
+	u8 divn_shift;
+	u8 divn_width;
+	u8 divm_shift;
+	u8 divm_width;
+	u8 divp_shift;
+	u8 divp_width;
+	u8 override_divn_shift;
+	u8 override_divm_shift;
+	u8 override_divp_shift;
+};
+
+struct utmi_clk_param {
+	u32 osc_frequency;
+	u8 enable_delay_count;
+	u8 stable_count;
+	u8 active_delay_count;
+	u8 xtal_freq_count;
+};
+
+struct tegra_clk_pll_params;
+
+struct tegra_clk_pll {
+	struct clk_hw hw;
+	void *clk_base;
+	void *pmc;
+	spinlock_t *lock;
+	struct tegra_clk_pll_params *params;
+};
+
+struct pdiv_map;
+
+struct tegra_clk_pll_freq_table;
+
+struct tegra_clk_pll_params {
+	unsigned long input_min;
+	unsigned long input_max;
+	unsigned long cf_min;
+	unsigned long cf_max;
+	unsigned long vco_min;
+	unsigned long vco_max;
+	u32 base_reg;
+	u32 misc_reg;
+	u32 lock_reg;
+	u32 lock_mask;
+	u32 lock_enable_bit_idx;
+	u32 iddq_reg;
+	u32 iddq_bit_idx;
+	u32 reset_reg;
+	u32 reset_bit_idx;
+	u32 sdm_din_reg;
+	u32 sdm_din_mask;
+	u32 sdm_ctrl_reg;
+	u32 sdm_ctrl_en_mask;
+	u32 ssc_ctrl_reg;
+	u32 ssc_ctrl_en_mask;
+	u32 aux_reg;
+	u32 dyn_ramp_reg;
+	u32 ext_misc_reg[6];
+	u32 pmc_divnm_reg;
+	u32 pmc_divp_reg;
+	u32 flags;
+	int stepa_shift;
+	int stepb_shift;
+	int lock_delay;
+	int max_p;
+	bool defaults_set;
+	const struct pdiv_map *pdiv_tohw;
+	struct div_nmp *div_nmp;
+	struct tegra_clk_pll_freq_table *freq_table;
+	unsigned long fixed_rate;
+	u16 mdiv_default;
+	u32 (*round_p_to_pdiv)(u32, u32 *);
+	void (*set_gain)(struct tegra_clk_pll_freq_table *);
+	int (*calc_rate)(struct clk_hw *, struct tegra_clk_pll_freq_table *, unsigned long, unsigned long);
+	unsigned long (*adjust_vco)(struct tegra_clk_pll_params *, unsigned long);
+	void (*set_defaults)(struct tegra_clk_pll *);
+	int (*dyn_ramp)(struct tegra_clk_pll *, struct tegra_clk_pll_freq_table *);
+	int (*pre_rate_change)();
+	void (*post_rate_change)();
+};
+
+struct pdiv_map {
+	u8 pdiv;
+	u8 hw_val;
+};
+
+struct tegra_clk_pll_freq_table {
+	unsigned long input_rate;
+	unsigned long output_rate;
+	u32 n;
+	u32 m;
+	u8 p;
+	u8 cpcon;
+	u16 sdm_data;
+};
+
+struct tegra_clk_pll_out {
+	struct clk_hw hw;
+	void *reg;
+	u8 enb_bit_idx;
+	u8 rst_bit_idx;
+	spinlock_t *lock;
+	u8 flags;
+};
+
+struct tegra_sdmmc_mux {
+	struct clk_hw hw;
+	void *reg;
+	spinlock_t *lock;
+	const struct clk_ops *gate_ops;
+	struct tegra_clk_periph_gate gate;
+	u8 div_flags;
+};
+
+struct tegra_clk_super_mux {
+	struct clk_hw hw;
+	void *reg;
+	struct tegra_clk_frac_div frac_div;
+	const struct clk_ops *div_ops;
+	u8 width;
+	u8 flags;
+	u8 div2_index;
+	u8 pllx_index;
+	spinlock_t *lock;
+};
+
+struct tegra_sync_source_initdata {
+	char *name;
+	unsigned long rate;
+	unsigned long max_rate;
+	int clk_id;
+};
+
+struct tegra_audio_clk_initdata {
+	char *gate_name;
+	char *mux_name;
+	u32 offset;
+	int gate_clk_id;
+	int mux_clk_id;
+};
+
+struct tegra_audio2x_clk_initdata {
+	char *parent;
+	char *gate_name;
+	char *name_2x;
+	char *div_name;
+	int clk_id;
+	int clk_num;
+	u8 div_offset;
+};
+
+enum clk_id {
+	tegra_clk_actmon = 0,
+	tegra_clk_adx = 1,
+	tegra_clk_adx1 = 2,
+	tegra_clk_afi = 3,
+	tegra_clk_amx = 4,
+	tegra_clk_amx1 = 5,
+	tegra_clk_apb2ape = 6,
+	tegra_clk_ahbdma = 7,
+	tegra_clk_apbdma = 8,
+	tegra_clk_apbif = 9,
+	tegra_clk_ape = 10,
+	tegra_clk_audio0 = 11,
+	tegra_clk_audio0_2x = 12,
+	tegra_clk_audio0_mux = 13,
+	tegra_clk_audio1 = 14,
+	tegra_clk_audio1_2x = 15,
+	tegra_clk_audio1_mux = 16,
+	tegra_clk_audio2 = 17,
+	tegra_clk_audio2_2x = 18,
+	tegra_clk_audio2_mux = 19,
+	tegra_clk_audio3 = 20,
+	tegra_clk_audio3_2x = 21,
+	tegra_clk_audio3_mux = 22,
+	tegra_clk_audio4 = 23,
+	tegra_clk_audio4_2x = 24,
+	tegra_clk_audio4_mux = 25,
+	tegra_clk_bsea = 26,
+	tegra_clk_bsev = 27,
+	tegra_clk_cclk_g = 28,
+	tegra_clk_cclk_lp = 29,
+	tegra_clk_cilab = 30,
+	tegra_clk_cilcd = 31,
+	tegra_clk_cile = 32,
+	tegra_clk_clk_32k = 33,
+	tegra_clk_clk72Mhz = 34,
+	tegra_clk_clk72Mhz_8 = 35,
+	tegra_clk_clk_m = 36,
+	tegra_clk_osc = 37,
+	tegra_clk_osc_div2 = 38,
+	tegra_clk_osc_div4 = 39,
+	tegra_clk_cml0 = 40,
+	tegra_clk_cml1 = 41,
+	tegra_clk_csi = 42,
+	tegra_clk_csite = 43,
+	tegra_clk_csite_8 = 44,
+	tegra_clk_csus = 45,
+	tegra_clk_cve = 46,
+	tegra_clk_dam0 = 47,
+	tegra_clk_dam1 = 48,
+	tegra_clk_dam2 = 49,
+	tegra_clk_d_audio = 50,
+	tegra_clk_dbgapb = 51,
+	tegra_clk_dds = 52,
+	tegra_clk_dfll_ref = 53,
+	tegra_clk_dfll_soc = 54,
+	tegra_clk_disp1 = 55,
+	tegra_clk_disp1_8 = 56,
+	tegra_clk_disp2 = 57,
+	tegra_clk_disp2_8 = 58,
+	tegra_clk_dp2 = 59,
+	tegra_clk_dpaux = 60,
+	tegra_clk_dpaux1 = 61,
+	tegra_clk_dsialp = 62,
+	tegra_clk_dsia_mux = 63,
+	tegra_clk_dsiblp = 64,
+	tegra_clk_dsib_mux = 65,
+	tegra_clk_dtv = 66,
+	tegra_clk_emc = 67,
+	tegra_clk_entropy = 68,
+	tegra_clk_entropy_8 = 69,
+	tegra_clk_epp = 70,
+	tegra_clk_epp_8 = 71,
+	tegra_clk_extern1 = 72,
+	tegra_clk_extern2 = 73,
+	tegra_clk_extern3 = 74,
+	tegra_clk_fuse = 75,
+	tegra_clk_fuse_burn = 76,
+	tegra_clk_gpu = 77,
+	tegra_clk_gr2d = 78,
+	tegra_clk_gr2d_8 = 79,
+	tegra_clk_gr3d = 80,
+	tegra_clk_gr3d_8 = 81,
+	tegra_clk_hclk = 82,
+	tegra_clk_hda = 83,
+	tegra_clk_hda_8 = 84,
+	tegra_clk_hda2codec_2x = 85,
+	tegra_clk_hda2codec_2x_8 = 86,
+	tegra_clk_hda2hdmi = 87,
+	tegra_clk_hdmi = 88,
+	tegra_clk_hdmi_audio = 89,
+	tegra_clk_host1x = 90,
+	tegra_clk_host1x_8 = 91,
+	tegra_clk_host1x_9 = 92,
+	tegra_clk_hsic_trk = 93,
+	tegra_clk_i2c1 = 94,
+	tegra_clk_i2c2 = 95,
+	tegra_clk_i2c3 = 96,
+	tegra_clk_i2c4 = 97,
+	tegra_clk_i2c5 = 98,
+	tegra_clk_i2c6 = 99,
+	tegra_clk_i2cslow = 100,
+	tegra_clk_i2s0 = 101,
+	tegra_clk_i2s0_sync = 102,
+	tegra_clk_i2s1 = 103,
+	tegra_clk_i2s1_sync = 104,
+	tegra_clk_i2s2 = 105,
+	tegra_clk_i2s2_sync = 106,
+	tegra_clk_i2s3 = 107,
+	tegra_clk_i2s3_sync = 108,
+	tegra_clk_i2s4 = 109,
+	tegra_clk_i2s4_sync = 110,
+	tegra_clk_isp = 111,
+	tegra_clk_isp_8 = 112,
+	tegra_clk_isp_9 = 113,
+	tegra_clk_ispb = 114,
+	tegra_clk_kbc = 115,
+	tegra_clk_kfuse = 116,
+	tegra_clk_la = 117,
+	tegra_clk_maud = 118,
+	tegra_clk_mipi = 119,
+	tegra_clk_mipibif = 120,
+	tegra_clk_mipi_cal = 121,
+	tegra_clk_mpe = 122,
+	tegra_clk_mselect = 123,
+	tegra_clk_msenc = 124,
+	tegra_clk_ndflash = 125,
+	tegra_clk_ndflash_8 = 126,
+	tegra_clk_ndspeed = 127,
+	tegra_clk_ndspeed_8 = 128,
+	tegra_clk_nor = 129,
+	tegra_clk_nvdec = 130,
+	tegra_clk_nvenc = 131,
+	tegra_clk_nvjpg = 132,
+	tegra_clk_owr = 133,
+	tegra_clk_owr_8 = 134,
+	tegra_clk_pcie = 135,
+	tegra_clk_pclk = 136,
+	tegra_clk_pll_a = 137,
+	tegra_clk_pll_a_out0 = 138,
+	tegra_clk_pll_a1 = 139,
+	tegra_clk_pll_c = 140,
+	tegra_clk_pll_c2 = 141,
+	tegra_clk_pll_c3 = 142,
+	tegra_clk_pll_c4 = 143,
+	tegra_clk_pll_c4_out0 = 144,
+	tegra_clk_pll_c4_out1 = 145,
+	tegra_clk_pll_c4_out2 = 146,
+	tegra_clk_pll_c4_out3 = 147,
+	tegra_clk_pll_c_out1 = 148,
+	tegra_clk_pll_d = 149,
+	tegra_clk_pll_d2 = 150,
+	tegra_clk_pll_d2_out0 = 151,
+	tegra_clk_pll_d_out0 = 152,
+	tegra_clk_pll_dp = 153,
+	tegra_clk_pll_e_out0 = 154,
+	tegra_clk_pll_g_ref = 155,
+	tegra_clk_pll_m = 156,
+	tegra_clk_pll_m_out1 = 157,
+	tegra_clk_pll_mb = 158,
+	tegra_clk_pll_p = 159,
+	tegra_clk_pll_p_out1 = 160,
+	tegra_clk_pll_p_out2 = 161,
+	tegra_clk_pll_p_out2_int = 162,
+	tegra_clk_pll_p_out3 = 163,
+	tegra_clk_pll_p_out4 = 164,
+	tegra_clk_pll_p_out4_cpu = 165,
+	tegra_clk_pll_p_out5 = 166,
+	tegra_clk_pll_p_out_hsio = 167,
+	tegra_clk_pll_p_out_xusb = 168,
+	tegra_clk_pll_p_out_cpu = 169,
+	tegra_clk_pll_p_out_adsp = 170,
+	tegra_clk_pll_ref = 171,
+	tegra_clk_pll_re_out = 172,
+	tegra_clk_pll_re_vco = 173,
+	tegra_clk_pll_u = 174,
+	tegra_clk_pll_u_out = 175,
+	tegra_clk_pll_u_out1 = 176,
+	tegra_clk_pll_u_out2 = 177,
+	tegra_clk_pll_u_12m = 178,
+	tegra_clk_pll_u_480m = 179,
+	tegra_clk_pll_u_48m = 180,
+	tegra_clk_pll_u_60m = 181,
+	tegra_clk_pll_x = 182,
+	tegra_clk_pll_x_out0 = 183,
+	tegra_clk_pwm = 184,
+	tegra_clk_qspi = 185,
+	tegra_clk_rtc = 186,
+	tegra_clk_sata = 187,
+	tegra_clk_sata_8 = 188,
+	tegra_clk_sata_cold = 189,
+	tegra_clk_sata_oob = 190,
+	tegra_clk_sata_oob_8 = 191,
+	tegra_clk_sbc1 = 192,
+	tegra_clk_sbc1_8 = 193,
+	tegra_clk_sbc1_9 = 194,
+	tegra_clk_sbc2 = 195,
+	tegra_clk_sbc2_8 = 196,
+	tegra_clk_sbc2_9 = 197,
+	tegra_clk_sbc3 = 198,
+	tegra_clk_sbc3_8 = 199,
+	tegra_clk_sbc3_9 = 200,
+	tegra_clk_sbc4 = 201,
+	tegra_clk_sbc4_8 = 202,
+	tegra_clk_sbc4_9 = 203,
+	tegra_clk_sbc5 = 204,
+	tegra_clk_sbc5_8 = 205,
+	tegra_clk_sbc6 = 206,
+	tegra_clk_sbc6_8 = 207,
+	tegra_clk_sclk = 208,
+	tegra_clk_sdmmc_legacy = 209,
+	tegra_clk_sdmmc1 = 210,
+	tegra_clk_sdmmc1_8 = 211,
+	tegra_clk_sdmmc1_9 = 212,
+	tegra_clk_sdmmc2 = 213,
+	tegra_clk_sdmmc2_8 = 214,
+	tegra_clk_sdmmc3 = 215,
+	tegra_clk_sdmmc3_8 = 216,
+	tegra_clk_sdmmc3_9 = 217,
+	tegra_clk_sdmmc4 = 218,
+	tegra_clk_sdmmc4_8 = 219,
+	tegra_clk_se = 220,
+	tegra_clk_se_10 = 221,
+	tegra_clk_soc_therm = 222,
+	tegra_clk_soc_therm_8 = 223,
+	tegra_clk_sor0 = 224,
+	tegra_clk_sor0_out = 225,
+	tegra_clk_sor1 = 226,
+	tegra_clk_sor1_out = 227,
+	tegra_clk_spdif = 228,
+	tegra_clk_spdif_2x = 229,
+	tegra_clk_spdif_in = 230,
+	tegra_clk_spdif_in_8 = 231,
+	tegra_clk_spdif_in_sync = 232,
+	tegra_clk_spdif_mux = 233,
+	tegra_clk_spdif_out = 234,
+	tegra_clk_timer = 235,
+	tegra_clk_trace = 236,
+	tegra_clk_tsec = 237,
+	tegra_clk_tsec_8 = 238,
+	tegra_clk_tsecb = 239,
+	tegra_clk_tsensor = 240,
+	tegra_clk_tvdac = 241,
+	tegra_clk_tvo = 242,
+	tegra_clk_uarta = 243,
+	tegra_clk_uarta_8 = 244,
+	tegra_clk_uartb = 245,
+	tegra_clk_uartb_8 = 246,
+	tegra_clk_uartc = 247,
+	tegra_clk_uartc_8 = 248,
+	tegra_clk_uartd = 249,
+	tegra_clk_uartd_8 = 250,
+	tegra_clk_uarte = 251,
+	tegra_clk_uarte_8 = 252,
+	tegra_clk_uartape = 253,
+	tegra_clk_usb2 = 254,
+	tegra_clk_usb2_hsic_trk = 255,
+	tegra_clk_usb2_trk = 256,
+	tegra_clk_usb3 = 257,
+	tegra_clk_usbd = 258,
+	tegra_clk_vcp = 259,
+	tegra_clk_vde = 260,
+	tegra_clk_vde_8 = 261,
+	tegra_clk_vfir = 262,
+	tegra_clk_vi = 263,
+	tegra_clk_vi_8 = 264,
+	tegra_clk_vi_9 = 265,
+	tegra_clk_vi_10 = 266,
+	tegra_clk_vi_i2c = 267,
+	tegra_clk_vic03 = 268,
+	tegra_clk_vic03_8 = 269,
+	tegra_clk_vim2_clk = 270,
+	tegra_clk_vimclk_sync = 271,
+	tegra_clk_vi_sensor = 272,
+	tegra_clk_vi_sensor_8 = 273,
+	tegra_clk_vi_sensor_9 = 274,
+	tegra_clk_vi_sensor2 = 275,
+	tegra_clk_vi_sensor2_8 = 276,
+	tegra_clk_xusb_dev = 277,
+	tegra_clk_xusb_dev_src = 278,
+	tegra_clk_xusb_dev_src_8 = 279,
+	tegra_clk_xusb_falcon_src = 280,
+	tegra_clk_xusb_falcon_src_8 = 281,
+	tegra_clk_xusb_fs_src = 282,
+	tegra_clk_xusb_gate = 283,
+	tegra_clk_xusb_host = 284,
+	tegra_clk_xusb_host_src = 285,
+	tegra_clk_xusb_host_src_8 = 286,
+	tegra_clk_xusb_hs_src = 287,
+	tegra_clk_xusb_hs_src_4 = 288,
+	tegra_clk_xusb_ss = 289,
+	tegra_clk_xusb_ss_src = 290,
+	tegra_clk_xusb_ss_src_8 = 291,
+	tegra_clk_xusb_ss_div2 = 292,
+	tegra_clk_xusb_ssp_src = 293,
+	tegra_clk_sclk_mux = 294,
+	tegra_clk_sor_safe = 295,
+	tegra_clk_cec = 296,
+	tegra_clk_ispa = 297,
+	tegra_clk_dmic1 = 298,
+	tegra_clk_dmic2 = 299,
+	tegra_clk_dmic3 = 300,
+	tegra_clk_dmic1_sync_clk = 301,
+	tegra_clk_dmic2_sync_clk = 302,
+	tegra_clk_dmic3_sync_clk = 303,
+	tegra_clk_dmic1_sync_clk_mux = 304,
+	tegra_clk_dmic2_sync_clk_mux = 305,
+	tegra_clk_dmic3_sync_clk_mux = 306,
+	tegra_clk_iqc1 = 307,
+	tegra_clk_iqc2 = 308,
+	tegra_clk_pll_a_out_adsp = 309,
+	tegra_clk_pll_a_out0_out_adsp = 310,
+	tegra_clk_adsp = 311,
+	tegra_clk_adsp_neon = 312,
+	tegra_clk_max = 313,
+};
+
+struct tegra_audio_clk_info {
+	char *name;
+	struct tegra_clk_pll_params *pll_params;
+	int clk_id;
+	char *parent;
+};
+
+struct pll_out_data {
+	char *div_name;
+	char *pll_out_name;
+	u32 offset;
+	int clk_id;
+	u8 div_shift;
+	u8 div_flags;
+	u8 rst_shift;
+	spinlock_t *lock;
+};
+
+enum tegra_super_gen {
+	gen4 = 4,
+	gen5 = 5,
+};
+
+struct tegra_super_gen_info {
+	enum tegra_super_gen gen;
+	const char **sclk_parents;
+	const char **cclk_g_parents;
+	const char **cclk_lp_parents;
+	int num_sclk_parents;
+	int num_cclk_g_parents;
+	int num_cclk_lp_parents;
+};
+
+enum {
+	DOWN___2 = 0,
+	UP___2 = 1,
+};
+
+struct dev_pm_opp_data {
+	unsigned int level;
+	unsigned long freq;
+	unsigned long u_volt;
+};
+
+enum gpd_status {
+	GENPD_STATE_ON = 0,
+	GENPD_STATE_OFF = 1,
+};
+
+enum {
+	CMD_CLK_GET_RATE = 1,
+	CMD_CLK_SET_RATE = 2,
+	CMD_CLK_ROUND_RATE = 3,
+	CMD_CLK_GET_PARENT = 4,
+	CMD_CLK_SET_PARENT = 5,
+	CMD_CLK_IS_ENABLED = 6,
+	CMD_CLK_ENABLE = 7,
+	CMD_CLK_DISABLE = 8,
+	CMD_CLK_PROPERTIES = 9,
+	CMD_CLK_POSSIBLE_PARENTS = 10,
+	CMD_CLK_NUM_POSSIBLE_PARENTS = 11,
+	CMD_CLK_GET_POSSIBLE_PARENT = 12,
+	CMD_CLK_RESET_REFCOUNTS = 13,
+	CMD_CLK_GET_ALL_INFO = 14,
+	CMD_CLK_GET_MAX_CLK_ID = 15,
+	CMD_CLK_GET_FMAX_AT_VMIN = 16,
+	CMD_CLK_MAX = 17,
+};
+
+struct tegra_bpmp;
+
+struct tegra_bpmp_clk {
+	struct clk_hw hw;
+	struct tegra_bpmp *bpmp;
+	unsigned int id;
+	unsigned int num_parents;
+	unsigned int *parents;
+};
+
+struct generic_pm_domain;
+
+typedef struct generic_pm_domain * (*genpd_xlate_t)(struct of_phandle_args *, void *);
+
+struct genpd_onecell_data {
+	struct generic_pm_domain **domains;
+	unsigned int num_domains;
+	genpd_xlate_t xlate;
+};
+
+struct tegra_bpmp_soc;
+
+struct tegra_bpmp_channel;
+
+struct tegra_bpmp {
+	const struct tegra_bpmp_soc *soc;
+	struct device *dev;
+	void *priv;
+	struct {
+		struct mbox_client client;
+		struct mbox_chan *channel;
+	} mbox;
+	spinlock_t atomic_tx_lock;
+	struct tegra_bpmp_channel *tx_channel;
+	struct tegra_bpmp_channel *rx_channel;
+	struct tegra_bpmp_channel *threaded_channels;
+	struct {
+		unsigned long *allocated;
+		unsigned long *busy;
+		unsigned int count;
+		struct semaphore lock;
+	} threaded;
+	struct list_head mrqs;
+	spinlock_t lock;
+	struct tegra_bpmp_clk **clocks;
+	unsigned int num_clocks;
+	struct reset_controller_dev rstc;
+	struct genpd_onecell_data genpd;
+	struct dentry *debugfs_mirror;
+	bool suspended;
+};
+
+struct tegra_bpmp_ops;
+
+struct tegra_bpmp_soc {
+	struct {
+		struct {
+			unsigned int offset;
+			unsigned int count;
+			unsigned int timeout;
+		} cpu_tx;
+		struct {
+			unsigned int offset;
+			unsigned int count;
+			unsigned int timeout;
+		} thread;
+		struct {
+			unsigned int offset;
+			unsigned int count;
+			unsigned int timeout;
+		} cpu_rx;
+	} channels;
+	const struct tegra_bpmp_ops *ops;
+	unsigned int num_resets;
+};
+
+struct tegra_bpmp_ops {
+	int (*init)(struct tegra_bpmp *);
+	void (*deinit)(struct tegra_bpmp *);
+	bool (*is_response_ready)(struct tegra_bpmp_channel *);
+	bool (*is_request_ready)(struct tegra_bpmp_channel *);
+	int (*ack_response)(struct tegra_bpmp_channel *);
+	int (*ack_request)(struct tegra_bpmp_channel *);
+	bool (*is_response_channel_free)(struct tegra_bpmp_channel *);
+	bool (*is_request_channel_free)(struct tegra_bpmp_channel *);
+	int (*post_response)(struct tegra_bpmp_channel *);
+	int (*post_request)(struct tegra_bpmp_channel *);
+	int (*ring_doorbell)(struct tegra_bpmp *);
+	int (*resume)(struct tegra_bpmp *);
+};
+
+struct iosys_map {
+	union {
+		void *vaddr_iomem;
+		void *vaddr;
+	};
+	bool is_iomem;
+};
+
+struct tegra_ivc;
+
+struct tegra_bpmp_channel {
+	struct tegra_bpmp *bpmp;
+	struct iosys_map ib;
+	struct iosys_map ob;
+	struct completion completion;
+	struct tegra_ivc *ivc;
+	unsigned int index;
+};
+
+struct gpd_dev_ops {
+	int (*start)(struct device *);
+	int (*stop)(struct device *);
+};
+
+struct dev_power_governor;
+
+struct genpd_governor_data;
+
+struct opp_table;
+
+struct dev_pm_opp;
+
+struct genpd_power_state;
+
+struct genpd_lock_ops;
+
+struct generic_pm_domain {
+	struct device dev;
+	struct dev_pm_domain domain;
+	struct list_head gpd_list_node;
+	struct list_head parent_links;
+	struct list_head child_links;
+	struct list_head dev_list;
+	struct dev_power_governor *gov;
+	struct genpd_governor_data *gd;
+	struct work_struct power_off_work;
+	struct fwnode_handle *provider;
+	bool has_provider;
+	const char *name;
+	atomic_t sd_count;
+	enum gpd_status status;
+	unsigned int device_count;
+	unsigned int suspended_count;
+	unsigned int prepared_count;
+	unsigned int performance_state;
+	cpumask_var_t cpus;
+	bool synced_poweroff;
+	int (*power_off)(struct generic_pm_domain *);
+	int (*power_on)(struct generic_pm_domain *);
+	struct raw_notifier_head power_notifiers;
+	struct opp_table *opp_table;
+	unsigned int (*opp_to_performance_state)(struct generic_pm_domain *, struct dev_pm_opp *);
+	int (*set_performance_state)(struct generic_pm_domain *, unsigned int);
+	struct gpd_dev_ops dev_ops;
+	int (*attach_dev)(struct generic_pm_domain *, struct device *);
+	void (*detach_dev)(struct generic_pm_domain *, struct device *);
+	unsigned int flags;
+	struct genpd_power_state *states;
+	void (*free_states)(struct genpd_power_state *, unsigned int);
+	unsigned int state_count;
+	unsigned int state_idx;
+	u64 on_time;
+	u64 accounting_time;
+	const struct genpd_lock_ops *lock_ops;
+	union {
+		struct mutex mlock;
+		struct {
+			spinlock_t slock;
+			unsigned long lock_flags;
+		};
+	};
+};
+
+struct dev_power_governor {
+	bool (*power_down_ok)(struct dev_pm_domain *);
+	bool (*suspend_ok)(struct device *);
+};
+
+struct genpd_governor_data {
+	s64 max_off_time_ns;
+	bool max_off_time_changed;
+	ktime_t next_wakeup;
+	ktime_t next_hrtimer;
+	bool cached_power_down_ok;
+	bool cached_power_down_state_idx;
+};
+
+struct genpd_power_state {
+	s64 power_off_latency_ns;
+	s64 power_on_latency_ns;
+	s64 residency_ns;
+	u64 usage;
+	u64 rejected;
+	struct fwnode_handle *fwnode;
+	u64 idle_time;
+	void *data;
+};
+
+struct genpd_lock_ops {
+	void (*lock)(struct generic_pm_domain *);
+	void (*lock_nested)(struct generic_pm_domain *, int);
+	int (*lock_interruptible)(struct generic_pm_domain *);
+	void (*unlock)(struct generic_pm_domain *);
+};
+
+struct tegra_bpmp_clk_message {
+	unsigned int cmd;
+	unsigned int id;
+	struct {
+		const void *data;
+		size_t size;
+	} tx;
+	struct {
+		void *data;
+		size_t size;
+		int ret;
+	} rx;
+};
+
+struct tegra_bpmp_message {
+	unsigned int mrq;
+	struct {
+		const void *data;
+		size_t size;
+	} tx;
+	struct {
+		void *data;
+		size_t size;
+		int ret;
+	} rx;
+	unsigned long flags;
+};
+
+struct cmd_clk_get_rate_request {};
+
+struct cmd_clk_set_rate_request {
+	int32_t unused;
+	int64_t rate;
+} __attribute__((packed));
+
+struct cmd_clk_round_rate_request {
+	int32_t unused;
+	int64_t rate;
+} __attribute__((packed));
+
+struct cmd_clk_get_parent_request {};
+
+struct cmd_clk_set_parent_request {
+	uint32_t parent_id;
+};
+
+struct cmd_clk_enable_request {};
+
+struct cmd_clk_disable_request {};
+
+struct cmd_clk_is_enabled_request {};
+
+struct cmd_clk_properties_request {};
+
+struct cmd_clk_possible_parents_request {};
+
+struct cmd_clk_num_possible_parents_request {};
+
+struct cmd_clk_get_possible_parent_request {
+	uint8_t parent_idx;
+};
+
+struct cmd_clk_get_all_info_request {};
+
+struct cmd_clk_get_max_clk_id_request {};
+
+struct cmd_clk_get_fmax_at_vmin_request {};
+
+struct mrq_clk_request {
+	uint32_t cmd_and_id;
+	union {
+		struct cmd_clk_get_rate_request clk_get_rate;
+		struct cmd_clk_set_rate_request clk_set_rate;
+		struct cmd_clk_round_rate_request clk_round_rate;
+		struct cmd_clk_get_parent_request clk_get_parent;
+		struct cmd_clk_set_parent_request clk_set_parent;
+		struct cmd_clk_enable_request clk_enable;
+		struct cmd_clk_disable_request clk_disable;
+		struct cmd_clk_is_enabled_request clk_is_enabled;
+		struct cmd_clk_properties_request clk_properties;
+		struct cmd_clk_possible_parents_request clk_possible_parents;
+		struct cmd_clk_num_possible_parents_request clk_num_possible_parents;
+		struct cmd_clk_get_possible_parent_request clk_get_possible_parent;
+		struct cmd_clk_get_all_info_request clk_get_all_info;
+		struct cmd_clk_get_max_clk_id_request clk_get_max_clk_id;
+		struct cmd_clk_get_fmax_at_vmin_request clk_get_fmax_at_vmin;
+	};
+};
+
+struct cmd_clk_get_max_clk_id_response {
+	uint32_t max_id;
+};
+
+struct tegra_bpmp_clk_info {
+	unsigned int id;
+	char name[40];
+	unsigned int parents[16];
+	unsigned int num_parents;
+	unsigned long flags;
+};
+
+struct cmd_clk_get_all_info_response {
+	uint32_t flags;
+	uint32_t parent;
+	uint32_t parents[16];
+	uint8_t num_parents;
+	uint8_t name[40];
+} __attribute__((packed));
+
+struct cmd_clk_get_rate_response {
+	int64_t rate;
+};
+
+struct cmd_clk_get_parent_response {
+	uint32_t parent_id;
+};
+
+struct cmd_clk_is_enabled_response {
+	int32_t state;
+};
+
+struct cmd_clk_round_rate_response {
+	int64_t rate;
+};
+
+struct cmd_clk_set_parent_response {
+	uint32_t parent_id;
+};
+
+struct cmd_clk_set_rate_response {
+	int64_t rate;
+};
+
+struct dma_chan;
+
+struct dma_chan_tbl_ent {
+	struct dma_chan *chan;
+};
+
+typedef s32 dma_cookie_t;
+
+struct dma_device;
+
+struct dma_chan_dev;
+
+struct dma_chan_percpu;
+
+struct dma_router;
+
+struct dma_chan {
+	struct dma_device *device;
+	struct device *slave;
+	dma_cookie_t cookie;
+	dma_cookie_t completed_cookie;
+	int chan_id;
+	struct dma_chan_dev *dev;
+	const char *name;
+	char *dbg_client_name;
+	struct list_head device_node;
+	struct dma_chan_percpu __attribute__((btf_type_tag("percpu"))) *local;
+	int client_count;
+	int table_count;
+	struct dma_router *router;
+	void *route_data;
+	void *private;
+};
+
+typedef bool (*dma_filter_fn)(struct dma_chan *, void *);
+
+struct dma_slave_map;
+
+struct dma_filter {
+	dma_filter_fn fn;
+	int mapcnt;
+	const struct dma_slave_map *map;
+};
+
+typedef struct {
+	unsigned long bits[1];
+} dma_cap_mask_t;
+
+enum dma_desc_metadata_mode {
+	DESC_METADATA_NONE = 0,
+	DESC_METADATA_CLIENT = 1,
+	DESC_METADATA_ENGINE = 2,
+};
+
+enum dmaengine_alignment {
+	DMAENGINE_ALIGN_1_BYTE = 0,
+	DMAENGINE_ALIGN_2_BYTES = 1,
+	DMAENGINE_ALIGN_4_BYTES = 2,
+	DMAENGINE_ALIGN_8_BYTES = 3,
+	DMAENGINE_ALIGN_16_BYTES = 4,
+	DMAENGINE_ALIGN_32_BYTES = 5,
+	DMAENGINE_ALIGN_64_BYTES = 6,
+	DMAENGINE_ALIGN_128_BYTES = 7,
+	DMAENGINE_ALIGN_256_BYTES = 8,
+};
+
+enum dma_residue_granularity {
+	DMA_RESIDUE_GRANULARITY_DESCRIPTOR = 0,
+	DMA_RESIDUE_GRANULARITY_SEGMENT = 1,
+	DMA_RESIDUE_GRANULARITY_BURST = 2,
+};
+
+enum sum_check_flags {
+	SUM_CHECK_P_RESULT = 1,
+	SUM_CHECK_Q_RESULT = 2,
+};
+
+enum dma_transfer_direction {
+	DMA_MEM_TO_MEM = 0,
+	DMA_MEM_TO_DEV = 1,
+	DMA_DEV_TO_MEM = 2,
+	DMA_DEV_TO_DEV = 3,
+	DMA_TRANS_NONE = 4,
+};
+
+enum dma_status {
+	DMA_COMPLETE = 0,
+	DMA_IN_PROGRESS = 1,
+	DMA_PAUSED = 2,
+	DMA_ERROR = 3,
+	DMA_OUT_OF_ORDER = 4,
+};
+
+struct dma_async_tx_descriptor;
+
+struct dma_interleaved_template;
+
+struct dma_slave_caps;
+
+struct dma_slave_config;
+
+struct dma_tx_state;
+
+struct dma_device {
+	struct kref ref;
+	unsigned int chancnt;
+	unsigned int privatecnt;
+	struct list_head channels;
+	struct list_head global_node;
+	struct dma_filter filter;
+	dma_cap_mask_t cap_mask;
+	enum dma_desc_metadata_mode desc_metadata_modes;
+	unsigned short max_xor;
+	unsigned short max_pq;
+	enum dmaengine_alignment copy_align;
+	enum dmaengine_alignment xor_align;
+	enum dmaengine_alignment pq_align;
+	enum dmaengine_alignment fill_align;
+	int dev_id;
+	struct device *dev;
+	struct module *owner;
+	struct ida chan_ida;
+	u32 src_addr_widths;
+	u32 dst_addr_widths;
+	u32 directions;
+	u32 min_burst;
+	u32 max_burst;
+	u32 max_sg_burst;
+	bool descriptor_reuse;
+	enum dma_residue_granularity residue_granularity;
+	int (*device_alloc_chan_resources)(struct dma_chan *);
+	int (*device_router_config)(struct dma_chan *);
+	void (*device_free_chan_resources)(struct dma_chan *);
+	struct dma_async_tx_descriptor * (*device_prep_dma_memcpy)(struct dma_chan *, dma_addr_t, dma_addr_t, size_t, unsigned long);
+	struct dma_async_tx_descriptor * (*device_prep_dma_xor)(struct dma_chan *, dma_addr_t, dma_addr_t *, unsigned int, size_t, unsigned long);
+	struct dma_async_tx_descriptor * (*device_prep_dma_xor_val)(struct dma_chan *, dma_addr_t *, unsigned int, size_t, enum sum_check_flags *, unsigned long);
+	struct dma_async_tx_descriptor * (*device_prep_dma_pq)(struct dma_chan *, dma_addr_t *, dma_addr_t *, unsigned int, const unsigned char *, size_t, unsigned long);
+	struct dma_async_tx_descriptor * (*device_prep_dma_pq_val)(struct dma_chan *, dma_addr_t *, dma_addr_t *, unsigned int, const unsigned char *, size_t, enum sum_check_flags *, unsigned long);
+	struct dma_async_tx_descriptor * (*device_prep_dma_memset)(struct dma_chan *, dma_addr_t, int, size_t, unsigned long);
+	struct dma_async_tx_descriptor * (*device_prep_dma_memset_sg)(struct dma_chan *, struct scatterlist *, unsigned int, int, unsigned long);
+	struct dma_async_tx_descriptor * (*device_prep_dma_interrupt)(struct dma_chan *, unsigned long);
+	struct dma_async_tx_descriptor * (*device_prep_slave_sg)(struct dma_chan *, struct scatterlist *, unsigned int, enum dma_transfer_direction, unsigned long, void *);
+	struct dma_async_tx_descriptor * (*device_prep_dma_cyclic)(struct dma_chan *, dma_addr_t, size_t, size_t, enum dma_transfer_direction, unsigned long);
+	struct dma_async_tx_descriptor * (*device_prep_interleaved_dma)(struct dma_chan *, struct dma_interleaved_template *, unsigned long);
+	struct dma_async_tx_descriptor * (*device_prep_dma_imm_data)(struct dma_chan *, dma_addr_t, u64, unsigned long);
+	void (*device_caps)(struct dma_chan *, struct dma_slave_caps *);
+	int (*device_config)(struct dma_chan *, struct dma_slave_config *);
+	int (*device_pause)(struct dma_chan *);
+	int (*device_resume)(struct dma_chan *);
+	int (*device_terminate_all)(struct dma_chan *);
+	void (*device_synchronize)(struct dma_chan *);
+	enum dma_status (*device_tx_status)(struct dma_chan *, dma_cookie_t, struct dma_tx_state *);
+	void (*device_issue_pending)(struct dma_chan *);
+	void (*device_release)(struct dma_device *);
+	void (*dbg_summary_show)(struct seq_file *, struct dma_device *);
+	struct dentry *dbg_dev_root;
+};
+
+struct dma_slave_map {
+	const char *devname;
+	const char *slave;
+	void *param;
+};
+
+enum dma_ctrl_flags {
+	DMA_PREP_INTERRUPT = 1,
+	DMA_CTRL_ACK = 2,
+	DMA_PREP_PQ_DISABLE_P = 4,
+	DMA_PREP_PQ_DISABLE_Q = 8,
+	DMA_PREP_CONTINUE = 16,
+	DMA_PREP_FENCE = 32,
+	DMA_CTRL_REUSE = 64,
+	DMA_PREP_CMD = 128,
+	DMA_PREP_REPEAT = 256,
+	DMA_PREP_LOAD_EOT = 512,
+};
+
+typedef void (*dma_async_tx_callback)(void *);
+
+struct dmaengine_result;
+
+typedef void (*dma_async_tx_callback_result)(void *, const struct dmaengine_result *);
+
+struct dmaengine_unmap_data;
+
+struct dma_descriptor_metadata_ops;
+
+struct dma_async_tx_descriptor {
+	dma_cookie_t cookie;
+	enum dma_ctrl_flags flags;
+	dma_addr_t phys;
+	struct dma_chan *chan;
+	dma_cookie_t (*tx_submit)(struct dma_async_tx_descriptor *);
+	int (*desc_free)(struct dma_async_tx_descriptor *);
+	dma_async_tx_callback callback;
+	dma_async_tx_callback_result callback_result;
+	void *callback_param;
+	struct dmaengine_unmap_data *unmap;
+	enum dma_desc_metadata_mode desc_metadata_mode;
+	struct dma_descriptor_metadata_ops *metadata_ops;
+	struct dma_async_tx_descriptor *next;
+	struct dma_async_tx_descriptor *parent;
+	spinlock_t lock;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+enum dmaengine_tx_result {
+	DMA_TRANS_NOERROR = 0,
+	DMA_TRANS_READ_FAILED = 1,
+	DMA_TRANS_WRITE_FAILED = 2,
+	DMA_TRANS_ABORTED = 3,
+};
+
+struct dmaengine_result {
+	enum dmaengine_tx_result result;
+	u32 residue;
+};
+
+struct dmaengine_unmap_data {
+	u8 map_cnt;
+	u8 to_cnt;
+	u8 from_cnt;
+	u8 bidi_cnt;
+	struct device *dev;
+	struct kref kref;
+	size_t len;
+	dma_addr_t addr[0];
+};
+
+struct dma_descriptor_metadata_ops {
+	int (*attach)(struct dma_async_tx_descriptor *, void *, size_t);
+	void * (*get_ptr)(struct dma_async_tx_descriptor *, size_t *, size_t *);
+	int (*set_len)(struct dma_async_tx_descriptor *, size_t);
+};
+
+struct data_chunk {
+	size_t size;
+	size_t icg;
+	size_t dst_icg;
+	size_t src_icg;
+};
+
+struct dma_interleaved_template {
+	dma_addr_t src_start;
+	dma_addr_t dst_start;
+	enum dma_transfer_direction dir;
+	bool src_inc;
+	bool dst_inc;
+	bool src_sgl;
+	bool dst_sgl;
+	size_t numf;
+	size_t frame_size;
+	struct data_chunk sgl[0];
+};
+
+struct dma_slave_caps {
+	u32 src_addr_widths;
+	u32 dst_addr_widths;
+	u32 directions;
+	u32 min_burst;
+	u32 max_burst;
+	u32 max_sg_burst;
+	bool cmd_pause;
+	bool cmd_resume;
+	bool cmd_terminate;
+	enum dma_residue_granularity residue_granularity;
+	bool descriptor_reuse;
+};
+
+enum dma_slave_buswidth {
+	DMA_SLAVE_BUSWIDTH_UNDEFINED = 0,
+	DMA_SLAVE_BUSWIDTH_1_BYTE = 1,
+	DMA_SLAVE_BUSWIDTH_2_BYTES = 2,
+	DMA_SLAVE_BUSWIDTH_3_BYTES = 3,
+	DMA_SLAVE_BUSWIDTH_4_BYTES = 4,
+	DMA_SLAVE_BUSWIDTH_8_BYTES = 8,
+	DMA_SLAVE_BUSWIDTH_16_BYTES = 16,
+	DMA_SLAVE_BUSWIDTH_32_BYTES = 32,
+	DMA_SLAVE_BUSWIDTH_64_BYTES = 64,
+	DMA_SLAVE_BUSWIDTH_128_BYTES = 128,
+};
+
+struct dma_slave_config {
+	enum dma_transfer_direction direction;
+	phys_addr_t src_addr;
+	phys_addr_t dst_addr;
+	enum dma_slave_buswidth src_addr_width;
+	enum dma_slave_buswidth dst_addr_width;
+	u32 src_maxburst;
+	u32 dst_maxburst;
+	u32 src_port_window_size;
+	u32 dst_port_window_size;
+	bool device_fc;
+	void *peripheral_config;
+	size_t peripheral_size;
+};
+
+struct dma_tx_state {
+	dma_cookie_t last;
+	dma_cookie_t used;
+	u32 residue;
+	u32 in_flight_bytes;
+};
+
+struct dma_chan_dev {
+	struct dma_chan *chan;
+	struct device device;
+	int dev_id;
+	bool chan_dma_dev;
+};
+
+struct dma_chan_percpu {
+	unsigned long memcpy_count;
+	unsigned long bytes_transferred;
+};
+
+struct dma_router {
+	struct device *dev;
+	void (*route_free)(struct device *, void *);
+};
+
+struct dmaengine_unmap_pool {
+	struct kmem_cache *cache;
+	const char *name;
+	mempool_t *pool;
+	size_t size;
+};
+
+enum dma_transaction_type {
+	DMA_MEMCPY = 0,
+	DMA_XOR = 1,
+	DMA_PQ = 2,
+	DMA_XOR_VAL = 3,
+	DMA_PQ_VAL = 4,
+	DMA_MEMSET = 5,
+	DMA_MEMSET_SG = 6,
+	DMA_INTERRUPT = 7,
+	DMA_PRIVATE = 8,
+	DMA_ASYNC_TX = 9,
+	DMA_SLAVE = 10,
+	DMA_CYCLIC = 11,
+	DMA_INTERLEAVE = 12,
+	DMA_COMPLETION_NO_ORDER = 13,
+	DMA_REPEAT = 14,
+	DMA_LOAD_EOT = 15,
+	DMA_TX_TYPE_END = 16,
+};
+
+struct virt_dma_desc {
+	struct dma_async_tx_descriptor tx;
+	struct dmaengine_result tx_result;
+	struct list_head node;
+};
+
+struct virt_dma_chan {
+	struct dma_chan chan;
+	struct tasklet_struct task;
+	void (*desc_free)(struct virt_dma_desc *);
+	spinlock_t lock;
+	struct list_head desc_allocated;
+	struct list_head desc_submitted;
+	struct list_head desc_issued;
+	struct list_head desc_completed;
+	struct list_head desc_terminated;
+	struct virt_dma_desc *cyclic;
+};
+
+struct dmaengine_desc_callback {
+	dma_async_tx_callback callback;
+	dma_async_tx_callback_result callback_result;
+	void *callback_param;
+};
+
+struct of_dma {
+	struct list_head of_dma_controllers;
+	struct device_node *of_node;
+	struct dma_chan * (*of_dma_xlate)(struct of_phandle_args *, struct of_dma *);
+	void * (*of_dma_route_allocate)(struct of_phandle_args *, struct of_dma *);
+	struct dma_router *dma_router;
+	void *of_dma_data;
+};
+
+struct of_dma_filter_info {
+	dma_cap_mask_t dma_cap;
+	dma_filter_fn filter_fn;
+};
+
+struct geni_se_desc {
+	unsigned int num_clks;
+	const char * const *clks;
+};
+
+enum geni_se_xfer_mode {
+	GENI_SE_INVALID = 0,
+	GENI_SE_FIFO = 1,
+	GENI_SE_DMA = 2,
+	GENI_GPI_DMA = 3,
+};
+
+enum geni_se_protocol_type {
+	GENI_SE_NONE = 0,
+	GENI_SE_SPI = 1,
+	GENI_SE_UART = 2,
+	GENI_SE_I2C = 3,
+	GENI_SE_I3C = 4,
+	GENI_SE_SPI_SLAVE = 5,
+};
+
+struct geni_icc_path {
+	struct icc_path *path;
+	unsigned int avg_bw;
+};
+
+struct geni_wrapper;
+
+struct geni_se {
+	void *base;
+	struct device *dev;
+	struct geni_wrapper *wrapper;
+	struct clk *clk;
+	unsigned int num_clk_levels;
+	unsigned long *clk_perf_tbl;
+	struct geni_icc_path icc_paths[3];
+};
+
+struct geni_wrapper {
+	struct device *dev;
+	void *base;
+	struct clk_bulk_data clks[2];
+	unsigned int num_clks;
+};
+
+struct qcom_smem_state_ops {
+	int (*update_bits)(void *, u32, u32);
+};
+
+struct qcom_smem_state {
+	struct kref refcount;
+	bool orphan;
+	struct list_head list;
+	struct device_node *of_node;
+	void *priv;
+	struct qcom_smem_state_ops ops;
+};
+
+enum bus_notifier_event {
+	BUS_NOTIFY_ADD_DEVICE = 0,
+	BUS_NOTIFY_DEL_DEVICE = 1,
+	BUS_NOTIFY_REMOVED_DEVICE = 2,
+	BUS_NOTIFY_BIND_DRIVER = 3,
+	BUS_NOTIFY_BOUND_DRIVER = 4,
+	BUS_NOTIFY_UNBIND_DRIVER = 5,
+	BUS_NOTIFY_UNBOUND_DRIVER = 6,
+	BUS_NOTIFY_DRIVER_NOT_BOUND = 7,
+};
+
+struct sunxi_sram_func;
+
+struct sunxi_sram_data {
+	char *name;
+	u8 reg;
+	u8 offset;
+	u8 width;
+	struct sunxi_sram_func *func;
+	struct list_head list;
+};
+
+struct sunxi_sram_desc {
+	struct sunxi_sram_data data;
+	bool claimed;
+};
+
+struct sunxi_sram_func {
+	char *func;
+	u8 val;
+	u32 reg_val;
+};
+
+struct sunxi_sramc_variant {
+	int num_emac_clocks;
+	bool has_ldo_ctrl;
+};
+
+enum tegra_revision {
+	TEGRA_REVISION_UNKNOWN = 0,
+	TEGRA_REVISION_A01 = 1,
+	TEGRA_REVISION_A02 = 2,
+	TEGRA_REVISION_A03 = 3,
+	TEGRA_REVISION_A03p = 4,
+	TEGRA_REVISION_A04 = 5,
+	TEGRA_REVISION_MAX = 6,
+};
+
+enum tegra_platform {
+	TEGRA_PLATFORM_SILICON = 0,
+	TEGRA_PLATFORM_QT = 1,
+	TEGRA_PLATFORM_SYSTEM_FPGA = 2,
+	TEGRA_PLATFORM_UNIT_FPGA = 3,
+	TEGRA_PLATFORM_ASIM_QT = 4,
+	TEGRA_PLATFORM_ASIM_LINSIM = 5,
+	TEGRA_PLATFORM_DSIM_ASIM_LINSIM = 6,
+	TEGRA_PLATFORM_VERIFICATION_SIMULATION = 7,
+	TEGRA_PLATFORM_VDK = 8,
+	TEGRA_PLATFORM_VSP = 9,
+	TEGRA_PLATFORM_MAX = 10,
+};
+
+struct tegra_sku_info {
+	int sku_id;
+	int cpu_process_id;
+	int cpu_speedo_id;
+	int cpu_speedo_value;
+	int cpu_iddq_value;
+	int soc_process_id;
+	int soc_speedo_id;
+	int soc_speedo_value;
+	int gpu_process_id;
+	int gpu_speedo_id;
+	int gpu_speedo_value;
+	enum tegra_revision revision;
+	enum tegra_platform platform;
+};
+
+struct tegra_fuse_soc;
+
+struct nvmem_device;
+
+struct nvmem_cell_lookup;
+
+struct tegra_fuse {
+	struct device *dev;
+	void *base;
+	phys_addr_t phys;
+	struct clk *clk;
+	struct reset_control *rst;
+	u32 (*read_early)(struct tegra_fuse *, unsigned int);
+	u32 (*read)(struct tegra_fuse *, unsigned int);
+	const struct tegra_fuse_soc *soc;
+	struct {
+		struct mutex lock;
+		struct completion wait;
+		struct dma_chan *chan;
+		struct dma_slave_config config;
+		dma_addr_t phys;
+		u32 *virt;
+	} apbdma;
+	struct nvmem_device *nvmem;
+	struct nvmem_cell_lookup *lookups;
+};
+
+struct tegra_fuse_info;
+
+struct nvmem_cell_info;
+
+struct nvmem_keepout;
+
+struct tegra_fuse_soc {
+	void (*init)(struct tegra_fuse *);
+	void (*speedo_init)(struct tegra_sku_info *);
+	int (*probe)(struct tegra_fuse *);
+	const struct tegra_fuse_info *info;
+	const struct nvmem_cell_lookup *lookups;
+	unsigned int num_lookups;
+	const struct nvmem_cell_info *cells;
+	unsigned int num_cells;
+	const struct nvmem_keepout *keepouts;
+	unsigned int num_keepouts;
+	const struct attribute_group *soc_attr_group;
+	bool clk_suspend_on;
+};
+
+struct tegra_fuse_info {
+	u32 (*read)(struct tegra_fuse *, unsigned int);
+	unsigned int size;
+	unsigned int spare;
+};
+
+struct nvmem_cell_lookup {
+	const char *nvmem_name;
+	const char *cell_name;
+	const char *dev_id;
+	const char *con_id;
+	struct list_head node;
+};
+
+typedef int (*nvmem_cell_post_process_t)(void *, const char *, int, unsigned int, void *, size_t);
+
+struct nvmem_cell_info {
+	const char *name;
+	unsigned int offset;
+	size_t raw_len;
+	unsigned int bytes;
+	unsigned int bit_offset;
+	unsigned int nbits;
+	struct device_node *np;
+	nvmem_cell_post_process_t read_post_process;
+	void *priv;
+};
+
+struct nvmem_keepout {
+	unsigned int start;
+	unsigned int end;
+	unsigned char value;
+};
+
+enum nvmem_type {
+	NVMEM_TYPE_UNKNOWN = 0,
+	NVMEM_TYPE_EEPROM = 1,
+	NVMEM_TYPE_OTP = 2,
+	NVMEM_TYPE_BATTERY_BACKED = 3,
+	NVMEM_TYPE_FRAM = 4,
+};
+
+struct soc_device_attribute {
+	const char *machine;
+	const char *family;
+	const char *revision;
+	const char *serial_number;
+	const char *soc_id;
+	const void *data;
+	const struct attribute_group *custom_attr_group;
+};
+
+typedef int (*nvmem_reg_read_t)(void *, unsigned int, void *, size_t);
+
+typedef int (*nvmem_reg_write_t)(void *, unsigned int, void *, size_t);
+
+struct nvmem_layout;
+
+struct nvmem_config {
+	struct device *dev;
+	const char *name;
+	int id;
+	struct module *owner;
+	const struct nvmem_cell_info *cells;
+	int ncells;
+	bool add_legacy_fixed_of_cells;
+	const struct nvmem_keepout *keepout;
+	unsigned int nkeepout;
+	enum nvmem_type type;
+	bool read_only;
+	bool root_only;
+	bool ignore_wp;
+	struct nvmem_layout *layout;
+	struct device_node *of_node;
+	bool no_of_node;
+	nvmem_reg_read_t reg_read;
+	nvmem_reg_write_t reg_write;
+	int size;
+	int word_size;
+	int stride;
+	void *priv;
+	bool compat;
+	struct device *base_dev;
+};
+
+struct nvmem_layout {
+	const char *name;
+	const struct of_device_id *of_match_table;
+	int (*add_cells)(struct device *, struct nvmem_device *, struct nvmem_layout *);
+	void (*fixup_cell_info)(struct nvmem_device *, struct nvmem_layout *, struct nvmem_cell_info *);
+	struct module *owner;
+	struct list_head node;
+};
+
+struct tegra_cbb_ops;
+
+struct tegra_cbb {
+	struct device *dev;
+	const struct tegra_cbb_ops *ops;
+	struct list_head node;
+};
+
+struct tegra_cbb_ops {
+	int (*debugfs_show)(struct tegra_cbb *, struct seq_file *, void *);
+	int (*interrupt_enable)(struct tegra_cbb *);
+	void (*error_enable)(struct tegra_cbb *);
+	void (*fault_enable)(struct tegra_cbb *);
+	void (*stall_enable)(struct tegra_cbb *);
+	void (*error_clear)(struct tegra_cbb *);
+	u32 (*get_status)(struct tegra_cbb *);
+};
+
+struct tegra234_cbb_fabric;
+
+struct tegra234_cbb_acpi_uid {
+	const char *hid;
+	const char *uid;
+	const struct tegra234_cbb_fabric *fabric;
+};
+
+struct tegra_cbb_error;
+
+struct tegra234_slave_lookup;
+
+struct tegra234_cbb_fabric {
+	const char *name;
+	phys_addr_t off_mask_erd;
+	phys_addr_t firewall_base;
+	unsigned int firewall_ctl;
+	unsigned int firewall_wr_ctl;
+	const char * const *master_id;
+	unsigned int notifier_offset;
+	const struct tegra_cbb_error *errors;
+	const int max_errors;
+	const struct tegra234_slave_lookup *slave_map;
+	const int max_slaves;
+};
+
+struct tegra_cbb_error {
+	const char *code;
+	const char *source;
+	const char *desc;
+};
+
+struct tegra234_slave_lookup {
+	const char *name;
+	unsigned int offset;
+};
+
+enum tegra234_cbb_fabric_ids {
+	CBB_FAB_ID = 0,
+	SCE_FAB_ID = 1,
+	RCE_FAB_ID = 2,
+	DCE_FAB_ID = 3,
+	AON_FAB_ID = 4,
+	PSC_FAB_ID = 5,
+	BPMP_FAB_ID = 6,
+	FSI_FAB_ID = 7,
+	MAX_FAB_ID = 8,
+};
+
+struct tegra234_cbb {
+	struct tegra_cbb base;
+	const struct tegra234_cbb_fabric *fabric;
+	struct resource *res;
+	void *regs;
+	int num_intr;
+	int sec_irq;
+	void *mon;
+	unsigned int type;
+	u32 mask;
+	u64 access;
+	u32 mn_attr0;
+	u32 mn_attr1;
+	u32 mn_attr2;
+	u32 mn_user_bits;
+};
+
+typedef int (*config_clks_t)(struct device *, struct opp_table *, struct dev_pm_opp *, void *, bool);
+
+typedef int (*config_regulators_t)(struct device *, struct dev_pm_opp *, struct dev_pm_opp *, struct regulator **, unsigned int);
+
+struct dev_pm_opp_config {
+	const char * const *clk_names;
+	config_clks_t config_clks;
+	const char *prop_name;
+	config_regulators_t config_regulators;
+	const unsigned int *supported_hw;
+	unsigned int supported_hw_count;
+	const char * const *regulator_names;
+	const char * const *genpd_names;
+	struct device ***virt_devs;
+};
+
+enum tegra_suspend_mode {
+	TEGRA_SUSPEND_NONE = 0,
+	TEGRA_SUSPEND_LP2 = 1,
+	TEGRA_SUSPEND_LP1 = 2,
+	TEGRA_SUSPEND_LP0 = 3,
+	TEGRA_MAX_SUSPEND_MODE = 4,
+	TEGRA_SUSPEND_NOT_READY = 5,
+};
+
+struct tegra_pmc_soc;
+
+struct tegra_pmc {
+	struct device *dev;
+	void *base;
+	void *wake;
+	void *aotag;
+	void *scratch;
+	struct clk *clk;
+	const struct tegra_pmc_soc *soc;
+	bool tz_only;
+	unsigned long rate;
+	enum tegra_suspend_mode suspend_mode;
+	u32 cpu_good_time;
+	u32 cpu_off_time;
+	u32 core_osc_time;
+	u32 core_pmu_time;
+	u32 core_off_time;
+	bool corereq_high;
+	bool sysclkreq_high;
+	bool combined_req;
+	bool cpu_pwr_good_en;
+	u32 lp0_vec_phys;
+	u32 lp0_vec_size;
+	unsigned long powergates_available[1];
+	struct mutex powergates_lock;
+	struct pinctrl_dev *pctl_dev;
+	struct irq_domain *domain;
+	struct irq_chip irq;
+	struct notifier_block clk_nb;
+	bool core_domain_state_synced;
+	bool core_domain_registered;
+	unsigned long *wake_type_level_map;
+	unsigned long *wake_type_dual_edge_map;
+	unsigned long *wake_sw_status_map;
+	unsigned long *wake_cntrl_level_map;
+	struct syscore_ops syscore;
+};
+
+struct tegra_io_pad_soc;
+
+struct tegra_pmc_regs;
+
+struct tegra_wake_event;
+
+struct pmc_clk_init_data;
+
+struct tegra_pmc_soc {
+	unsigned int num_powergates;
+	const char * const *powergates;
+	unsigned int num_cpu_powergates;
+	const u8 *cpu_powergates;
+	bool has_tsense_reset;
+	bool has_gpu_clamps;
+	bool needs_mbist_war;
+	bool has_impl_33v_pwr;
+	bool maybe_tz_only;
+	const struct tegra_io_pad_soc *io_pads;
+	unsigned int num_io_pads;
+	const struct pinctrl_pin_desc *pin_descs;
+	unsigned int num_pin_descs;
+	const struct tegra_pmc_regs *regs;
+	void (*init)(struct tegra_pmc *);
+	void (*setup_irq_polarity)(struct tegra_pmc *, struct device_node *, bool);
+	void (*set_wake_filters)(struct tegra_pmc *);
+	int (*irq_set_wake)(struct irq_data *, unsigned int);
+	int (*irq_set_type)(struct irq_data *, unsigned int);
+	int (*powergate_set)(struct tegra_pmc *, unsigned int, bool);
+	const char * const *reset_sources;
+	unsigned int num_reset_sources;
+	const char * const *reset_levels;
+	unsigned int num_reset_levels;
+	const struct tegra_wake_event *wake_events;
+	unsigned int num_wake_events;
+	unsigned int max_wake_events;
+	unsigned int max_wake_vectors;
+	const struct pmc_clk_init_data *pmc_clks_data;
+	unsigned int num_pmc_clks;
+	bool has_blink_output;
+	bool has_usb_sleepwalk;
+	bool supports_core_domain;
+};
+
+enum tegra_io_pad {
+	TEGRA_IO_PAD_AUDIO = 0,
+	TEGRA_IO_PAD_AUDIO_HV = 1,
+	TEGRA_IO_PAD_BB = 2,
+	TEGRA_IO_PAD_CAM = 3,
+	TEGRA_IO_PAD_COMP = 4,
+	TEGRA_IO_PAD_CONN = 5,
+	TEGRA_IO_PAD_CSIA = 6,
+	TEGRA_IO_PAD_CSIB = 7,
+	TEGRA_IO_PAD_CSIC = 8,
+	TEGRA_IO_PAD_CSID = 9,
+	TEGRA_IO_PAD_CSIE = 10,
+	TEGRA_IO_PAD_CSIF = 11,
+	TEGRA_IO_PAD_CSIG = 12,
+	TEGRA_IO_PAD_CSIH = 13,
+	TEGRA_IO_PAD_DAP3 = 14,
+	TEGRA_IO_PAD_DAP5 = 15,
+	TEGRA_IO_PAD_DBG = 16,
+	TEGRA_IO_PAD_DEBUG_NONAO = 17,
+	TEGRA_IO_PAD_DMIC = 18,
+	TEGRA_IO_PAD_DMIC_HV = 19,
+	TEGRA_IO_PAD_DP = 20,
+	TEGRA_IO_PAD_DSI = 21,
+	TEGRA_IO_PAD_DSIB = 22,
+	TEGRA_IO_PAD_DSIC = 23,
+	TEGRA_IO_PAD_DSID = 24,
+	TEGRA_IO_PAD_EDP = 25,
+	TEGRA_IO_PAD_EMMC = 26,
+	TEGRA_IO_PAD_EMMC2 = 27,
+	TEGRA_IO_PAD_EQOS = 28,
+	TEGRA_IO_PAD_GPIO = 29,
+	TEGRA_IO_PAD_GP_PWM2 = 30,
+	TEGRA_IO_PAD_GP_PWM3 = 31,
+	TEGRA_IO_PAD_HDMI = 32,
+	TEGRA_IO_PAD_HDMI_DP0 = 33,
+	TEGRA_IO_PAD_HDMI_DP1 = 34,
+	TEGRA_IO_PAD_HDMI_DP2 = 35,
+	TEGRA_IO_PAD_HDMI_DP3 = 36,
+	TEGRA_IO_PAD_HSIC = 37,
+	TEGRA_IO_PAD_HV = 38,
+	TEGRA_IO_PAD_LVDS = 39,
+	TEGRA_IO_PAD_MIPI_BIAS = 40,
+	TEGRA_IO_PAD_NAND = 41,
+	TEGRA_IO_PAD_PEX_BIAS = 42,
+	TEGRA_IO_PAD_PEX_CLK_BIAS = 43,
+	TEGRA_IO_PAD_PEX_CLK1 = 44,
+	TEGRA_IO_PAD_PEX_CLK2 = 45,
+	TEGRA_IO_PAD_PEX_CLK3 = 46,
+	TEGRA_IO_PAD_PEX_CLK_2_BIAS = 47,
+	TEGRA_IO_PAD_PEX_CLK_2 = 48,
+	TEGRA_IO_PAD_PEX_CNTRL = 49,
+	TEGRA_IO_PAD_PEX_CTL2 = 50,
+	TEGRA_IO_PAD_PEX_L0_RST = 51,
+	TEGRA_IO_PAD_PEX_L1_RST = 52,
+	TEGRA_IO_PAD_PEX_L5_RST = 53,
+	TEGRA_IO_PAD_PWR_CTL = 54,
+	TEGRA_IO_PAD_SDMMC1 = 55,
+	TEGRA_IO_PAD_SDMMC1_HV = 56,
+	TEGRA_IO_PAD_SDMMC2 = 57,
+	TEGRA_IO_PAD_SDMMC2_HV = 58,
+	TEGRA_IO_PAD_SDMMC3 = 59,
+	TEGRA_IO_PAD_SDMMC3_HV = 60,
+	TEGRA_IO_PAD_SDMMC4 = 61,
+	TEGRA_IO_PAD_SOC_GPIO10 = 62,
+	TEGRA_IO_PAD_SOC_GPIO12 = 63,
+	TEGRA_IO_PAD_SOC_GPIO13 = 64,
+	TEGRA_IO_PAD_SOC_GPIO53 = 65,
+	TEGRA_IO_PAD_SPI = 66,
+	TEGRA_IO_PAD_SPI_HV = 67,
+	TEGRA_IO_PAD_SYS_DDC = 68,
+	TEGRA_IO_PAD_UART = 69,
+	TEGRA_IO_PAD_UART4 = 70,
+	TEGRA_IO_PAD_UART5 = 71,
+	TEGRA_IO_PAD_UFS = 72,
+	TEGRA_IO_PAD_USB0 = 73,
+	TEGRA_IO_PAD_USB1 = 74,
+	TEGRA_IO_PAD_USB2 = 75,
+	TEGRA_IO_PAD_USB3 = 76,
+	TEGRA_IO_PAD_USB_BIAS = 77,
+	TEGRA_IO_PAD_AO_HV = 78,
+};
+
+struct tegra_io_pad_soc {
+	enum tegra_io_pad id;
+	unsigned int dpd;
+	unsigned int request;
+	unsigned int status;
+	unsigned int voltage;
+	const char *name;
+};
+
+struct tegra_pmc_regs {
+	unsigned int scratch0;
+	unsigned int rst_status;
+	unsigned int rst_source_shift;
+	unsigned int rst_source_mask;
+	unsigned int rst_level_shift;
+	unsigned int rst_level_mask;
+};
+
+struct tegra_wake_event {
+	const char *name;
+	unsigned int id;
+	unsigned int irq;
+	struct {
+		unsigned int instance;
+		unsigned int pin;
+	} gpio;
+};
+
+struct pmc_clk_init_data {
+	char *name;
+	const char * const *parents;
+	int num_parents;
+	int clk_id;
+	u8 mux_shift;
+	u8 force_en_shift;
+};
+
+struct tegra_powergate {
+	struct generic_pm_domain genpd;
+	struct tegra_pmc *pmc;
+	unsigned int id;
+	struct clk **clks;
+	unsigned int num_clks;
+	unsigned long *clk_rates;
+	struct reset_control *reset;
+};
+
+struct pmc_clk {
+	struct clk_hw hw;
+	unsigned long offs;
+	u32 mux_shift;
+	u32 force_en_shift;
+};
+
+struct pmc_clk_gate {
+	struct clk_hw hw;
+	unsigned long offs;
+	u32 shift;
+};
+
+struct arm_smccc_quirk {
+	int id;
+	union {
+		unsigned long a6;
+	} state;
+};
+
+typedef int (*regmap_hw_write)(void *, const void *, size_t);
+
+typedef int (*regmap_hw_gather_write)(void *, const void *, size_t, const void *, size_t);
+
+struct regmap_async;
+
+typedef int (*regmap_hw_async_write)(void *, const void *, size_t, const void *, size_t, struct regmap_async *);
+
+typedef int (*regmap_hw_reg_write)(void *, unsigned int, unsigned int);
+
+typedef int (*regmap_hw_reg_noinc_write)(void *, unsigned int, const void *, size_t);
+
+typedef int (*regmap_hw_reg_update_bits)(void *, unsigned int, unsigned int, unsigned int);
+
+typedef int (*regmap_hw_read)(void *, const void *, size_t, void *, size_t);
+
+typedef int (*regmap_hw_reg_read)(void *, unsigned int, unsigned int *);
+
+typedef int (*regmap_hw_reg_noinc_read)(void *, unsigned int, void *, size_t);
+
+typedef void (*regmap_hw_free_context)(void *);
+
+typedef struct regmap_async * (*regmap_hw_async_alloc)();
+
+struct regmap_bus {
+	bool fast_io;
+	bool free_on_exit;
+	regmap_hw_write write;
+	regmap_hw_gather_write gather_write;
+	regmap_hw_async_write async_write;
+	regmap_hw_reg_write reg_write;
+	regmap_hw_reg_noinc_write reg_noinc_write;
+	regmap_hw_reg_update_bits reg_update_bits;
+	regmap_hw_read read;
+	regmap_hw_reg_read reg_read;
+	regmap_hw_reg_noinc_read reg_noinc_read;
+	regmap_hw_free_context free_context;
+	regmap_hw_async_alloc async_alloc;
+	u8 read_flag_mask;
+	enum regmap_endian reg_format_endian_default;
+	enum regmap_endian val_format_endian_default;
+	size_t max_raw_read;
+	size_t max_raw_write;
+	u64 android_kabi_reserved1;
+};
+
+struct scmi_device;
+
+struct scmi_device_id;
+
+struct scmi_driver {
+	const char *name;
+	int (*probe)(struct scmi_device *);
+	void (*remove)(struct scmi_device *);
+	const struct scmi_device_id *id_table;
+	struct device_driver driver;
+};
+
+struct scmi_handle;
+
+struct scmi_device {
+	u32 id;
+	u8 protocol_id;
+	const char *name;
+	struct device dev;
+	struct scmi_handle *handle;
+	u64 android_kabi_reserved1;
+};
+
+struct scmi_revision_info;
+
+struct scmi_protocol_handle;
+
+struct scmi_notify_ops;
+
+struct scmi_handle {
+	struct device *dev;
+	struct scmi_revision_info *version;
+	int (*devm_protocol_acquire)(struct scmi_device *, u8);
+	const void * (*devm_protocol_get)(struct scmi_device *, u8, struct scmi_protocol_handle **);
+	void (*devm_protocol_put)(struct scmi_device *, u8);
+	bool (*is_transport_atomic)(const struct scmi_handle *, unsigned int *);
+	const struct scmi_notify_ops *notify_ops;
+	u64 android_kabi_reserved1;
+};
+
+struct scmi_revision_info {
+	u16 major_ver;
+	u16 minor_ver;
+	u8 num_protocols;
+	u8 num_agents;
+	u32 impl_ver;
+	char vendor_id[16];
+	char sub_vendor_id[16];
+};
+
+struct scmi_notify_ops {
+	int (*devm_event_notifier_register)(struct scmi_device *, u8, u8, const u32 *, struct notifier_block *);
+	int (*devm_event_notifier_unregister)(struct scmi_device *, u8, u8, const u32 *, struct notifier_block *);
+	int (*event_notifier_register)(const struct scmi_handle *, u8, u8, const u32 *, struct notifier_block *);
+	int (*event_notifier_unregister)(const struct scmi_handle *, u8, u8, const u32 *, struct notifier_block *);
+};
+
+struct scmi_device_id {
+	u8 protocol_id;
+	const char *name;
+};
+
+enum scmi_power_scale {
+	SCMI_POWER_BOGOWATTS = 0,
+	SCMI_POWER_MILLIWATTS = 1,
+	SCMI_POWER_MICROWATTS = 2,
+};
+
+enum scmi_std_protocol {
+	SCMI_PROTOCOL_BASE = 16,
+	SCMI_PROTOCOL_POWER = 17,
+	SCMI_PROTOCOL_SYSTEM = 18,
+	SCMI_PROTOCOL_PERF = 19,
+	SCMI_PROTOCOL_CLOCK = 20,
+	SCMI_PROTOCOL_SENSOR = 21,
+	SCMI_PROTOCOL_RESET = 22,
+	SCMI_PROTOCOL_VOLTAGE = 23,
+	SCMI_PROTOCOL_POWERCAP = 24,
+	SCMI_PROTOCOL_PINCTRL = 25,
+};
+
+struct scmi_perf_proto_ops;
+
+struct scmi_perf_domain_info;
+
+struct scmi_perf_domain {
+	struct generic_pm_domain genpd;
+	const struct scmi_perf_proto_ops *perf_ops;
+	const struct scmi_protocol_handle *ph;
+	const struct scmi_perf_domain_info *info;
+	u32 domain_id;
+};
+
+struct scmi_perf_proto_ops {
+	int (*num_domains_get)(const struct scmi_protocol_handle *);
+	const struct scmi_perf_domain_info * (*info_get)(const struct scmi_protocol_handle *, u32);
+	int (*limits_set)(const struct scmi_protocol_handle *, u32, u32, u32);
+	int (*limits_get)(const struct scmi_protocol_handle *, u32, u32 *, u32 *);
+	int (*level_set)(const struct scmi_protocol_handle *, u32, u32, bool);
+	int (*level_get)(const struct scmi_protocol_handle *, u32, u32 *, bool);
+	int (*transition_latency_get)(const struct scmi_protocol_handle *, u32);
+	int (*device_opps_add)(const struct scmi_protocol_handle *, struct device *, u32);
+	int (*freq_set)(const struct scmi_protocol_handle *, u32, unsigned long, bool);
+	int (*freq_get)(const struct scmi_protocol_handle *, u32, unsigned long *, bool);
+	int (*est_power_get)(const struct scmi_protocol_handle *, u32, unsigned long *, unsigned long *);
+	bool (*fast_switch_possible)(const struct scmi_protocol_handle *, u32);
+	enum scmi_power_scale (*power_scale_get)(const struct scmi_protocol_handle *);
+	u64 android_kabi_reserved1;
+};
+
+struct scmi_xfer_ops;
+
+struct scmi_proto_helpers_ops;
+
+struct scmi_protocol_handle {
+	struct device *dev;
+	const struct scmi_xfer_ops *xops;
+	const struct scmi_proto_helpers_ops *hops;
+	int (*set_priv)(const struct scmi_protocol_handle *, void *, u32);
+	void * (*get_priv)(const struct scmi_protocol_handle *);
+};
+
+struct scmi_perf_domain_info {
+	char name[64];
+	bool set_perf;
+};
+
+enum mrq_pg_cmd {
+	CMD_PG_QUERY_ABI = 0,
+	CMD_PG_SET_STATE = 1,
+	CMD_PG_GET_STATE = 2,
+	CMD_PG_GET_NAME = 3,
+	CMD_PG_GET_MAX_ID = 4,
+};
+
+enum pg_states {
+	PG_STATE_OFF = 0,
+	PG_STATE_ON = 1,
+	PG_STATE_RUNNING = 2,
+};
+
+struct tegra_powergate___2 {
+	struct generic_pm_domain genpd;
+	struct tegra_bpmp *bpmp;
+	unsigned int id;
+};
+
+struct cmd_pg_query_abi_request {
+	uint32_t type;
+};
+
+struct cmd_pg_set_state_request {
+	uint32_t state;
+};
+
+struct mrq_pg_request {
+	uint32_t cmd;
+	uint32_t id;
+	union {
+		struct cmd_pg_query_abi_request query_abi;
+		struct cmd_pg_set_state_request set_state;
+	};
+};
+
+struct cmd_pg_get_state_response {
+	uint32_t state;
+};
+
+struct cmd_pg_get_name_response {
+	uint8_t name[40];
+};
+
+struct cmd_pg_get_max_id_response {
+	uint32_t max_id;
+};
+
+struct mrq_pg_response {
+	union {
+		struct cmd_pg_get_state_response get_state;
+		struct cmd_pg_get_name_response get_name;
+		struct cmd_pg_get_max_id_response get_max_id;
+	};
+};
+
+struct tegra_powergate_info {
+	unsigned int id;
+	char *name;
+};
+
+struct vring_desc;
+
+typedef struct vring_desc vring_desc_t;
+
+struct vring_avail;
+
+typedef struct vring_avail vring_avail_t;
+
+struct vring_used;
+
+typedef struct vring_used vring_used_t;
+
+struct vring {
+	unsigned int num;
+	vring_desc_t *desc;
+	vring_avail_t *avail;
+	vring_used_t *used;
+};
+
+struct vring_desc_state_split;
+
+struct vring_desc_extra;
+
+struct vring_virtqueue_split {
+	struct vring vring;
+	u16 avail_flags_shadow;
+	u16 avail_idx_shadow;
+	struct vring_desc_state_split *desc_state;
+	struct vring_desc_extra *desc_extra;
+	dma_addr_t queue_dma_addr;
+	size_t queue_size_in_bytes;
+	u32 vring_align;
+	bool may_reduce_num;
+};
+
+struct vring_packed_desc;
+
+struct vring_packed_desc_event;
+
+struct vring_desc_state_packed;
+
+struct vring_virtqueue_packed {
+	struct {
+		unsigned int num;
+		struct vring_packed_desc *desc;
+		struct vring_packed_desc_event *driver;
+		struct vring_packed_desc_event *device;
+	} vring;
+	bool avail_wrap_counter;
+	u16 avail_used_flags;
+	u16 next_avail_idx;
+	u16 event_flags_shadow;
+	struct vring_desc_state_packed *desc_state;
+	struct vring_desc_extra *desc_extra;
+	dma_addr_t ring_dma_addr;
+	dma_addr_t driver_event_dma_addr;
+	dma_addr_t device_event_dma_addr;
+	size_t ring_size_in_bytes;
+	size_t event_size_in_bytes;
+};
+
+struct vring_virtqueue {
+	struct virtqueue vq;
+	bool packed_ring;
+	bool use_dma_api;
+	bool weak_barriers;
+	bool broken;
+	bool indirect;
+	bool event;
+	bool premapped;
+	bool do_unmap;
+	unsigned int free_head;
+	unsigned int num_added;
+	u16 last_used_idx;
+	bool event_triggered;
+	union {
+		struct vring_virtqueue_split split;
+		struct vring_virtqueue_packed packed;
+	};
+	bool (*notify)(struct virtqueue *);
+	bool we_own_ring;
+	struct device *dma_dev;
+};
+
+typedef __u64 __virtio64;
+
+typedef __u32 __virtio32;
+
+typedef __u16 __virtio16;
+
+struct vring_desc {
+	__virtio64 addr;
+	__virtio32 len;
+	__virtio16 flags;
+	__virtio16 next;
+};
+
+struct vring_avail {
+	__virtio16 flags;
+	__virtio16 idx;
+	__virtio16 ring[0];
+};
+
+struct vring_used_elem {
+	__virtio32 id;
+	__virtio32 len;
+};
+
+typedef struct vring_used_elem vring_used_elem_t;
+
+struct vring_used {
+	__virtio16 flags;
+	__virtio16 idx;
+	vring_used_elem_t ring[0];
+};
+
+struct vring_desc_state_split {
+	void *data;
+	struct vring_desc *indir_desc;
+};
+
+struct vring_desc_extra {
+	dma_addr_t addr;
+	u32 len;
+	u16 flags;
+	u16 next;
+};
+
+struct vring_packed_desc {
+	__le64 addr;
+	__le32 len;
+	__le16 id;
+	__le16 flags;
+};
+
+struct vring_packed_desc_event {
+	__le16 off_wrap;
+	__le16 flags;
+};
+
+struct vring_desc_state_packed {
+	void *data;
+	struct vring_packed_desc *indir_desc;
+	u16 num;
+	u16 last;
+};
+
+typedef void (*btf_trace_regulator_enable)(void *, const char *);
+
+typedef void (*btf_trace_regulator_enable_delay)(void *, const char *);
+
+typedef void (*btf_trace_regulator_enable_complete)(void *, const char *);
+
+typedef void (*btf_trace_regulator_disable)(void *, const char *);
+
+typedef void (*btf_trace_regulator_disable_complete)(void *, const char *);
+
+typedef void (*btf_trace_regulator_bypass_enable)(void *, const char *);
+
+typedef void (*btf_trace_regulator_bypass_enable_complete)(void *, const char *);
+
+typedef void (*btf_trace_regulator_bypass_disable)(void *, const char *);
+
+typedef void (*btf_trace_regulator_bypass_disable_complete)(void *, const char *);
+
+typedef void (*btf_trace_regulator_set_voltage)(void *, const char *, int, int);
+
+typedef void (*btf_trace_regulator_set_voltage_complete)(void *, const char *, unsigned int);
+
+struct ww_class {
+	atomic_long_t stamp;
+	struct lock_class_key acquire_key;
+	struct lock_class_key mutex_key;
+	const char *acquire_name;
+	const char *mutex_name;
+	unsigned int is_wait_die;
+};
+
+struct regulator_dev;
+
+struct regulator_coupler {
+	struct list_head list;
+	int (*attach_regulator)(struct regulator_coupler *, struct regulator_dev *);
+	int (*detach_regulator)(struct regulator_coupler *, struct regulator_dev *);
+	int (*balance_voltage)(struct regulator_coupler *, struct regulator_dev *, suspend_state_t);
+};
+
+struct coupling_desc {
+	struct regulator_dev **coupled_rdevs;
+	struct regulator_coupler *coupler;
+	int n_resolved;
+	int n_coupled;
+};
+
+struct regulator_desc;
+
+struct regulation_constraints;
+
+struct regulator_enable_gpio;
+
+struct regulator_dev {
+	const struct regulator_desc *desc;
+	int exclusive;
+	u32 use_count;
+	u32 open_count;
+	u32 bypass_count;
+	struct list_head list;
+	struct list_head consumer_list;
+	struct coupling_desc coupling_desc;
+	struct blocking_notifier_head notifier;
+	struct ww_mutex mutex;
+	struct task_struct *mutex_owner;
+	int ref_cnt;
+	struct module *owner;
+	struct device dev;
+	struct regulation_constraints *constraints;
+	struct regulator *supply;
+	const char *supply_name;
+	struct regmap *regmap;
+	struct delayed_work disable_work;
+	void *reg_data;
+	struct dentry *debugfs;
+	struct regulator_enable_gpio *ena_pin;
+	unsigned int ena_gpio_state: 1;
+	unsigned int is_switch: 1;
+	ktime_t last_off;
+	int cached_err;
+	bool use_cached_err;
+	spinlock_t err_lock;
+	u64 android_kabi_reserved1;
+};
+
+enum regulator_type {
+	REGULATOR_VOLTAGE = 0,
+	REGULATOR_CURRENT = 1,
+};
+
+struct regulator_config;
+
+struct regulator_ops;
+
+struct regulator_desc {
+	const char *name;
+	const char *supply_name;
+	const char *of_match;
+	bool of_match_full_name;
+	const char *regulators_node;
+	int (*of_parse_cb)(struct device_node *, const struct regulator_desc *, struct regulator_config *);
+	int id;
+	unsigned int continuous_voltage_range: 1;
+	unsigned int n_voltages;
+	unsigned int n_current_limits;
+	const struct regulator_ops *ops;
+	int irq;
+	enum regulator_type type;
+	struct module *owner;
+	unsigned int min_uV;
+	unsigned int uV_step;
+	unsigned int linear_min_sel;
+	int fixed_uV;
+	unsigned int ramp_delay;
+	int min_dropout_uV;
+	const struct linear_range *linear_ranges;
+	const unsigned int *linear_range_selectors_bitfield;
+	int n_linear_ranges;
+	const unsigned int *volt_table;
+	const unsigned int *curr_table;
+	unsigned int vsel_range_reg;
+	unsigned int vsel_range_mask;
+	unsigned int vsel_reg;
+	unsigned int vsel_mask;
+	unsigned int vsel_step;
+	unsigned int csel_reg;
+	unsigned int csel_mask;
+	unsigned int apply_reg;
+	unsigned int apply_bit;
+	unsigned int enable_reg;
+	unsigned int enable_mask;
+	unsigned int enable_val;
+	unsigned int disable_val;
+	bool enable_is_inverted;
+	unsigned int bypass_reg;
+	unsigned int bypass_mask;
+	unsigned int bypass_val_on;
+	unsigned int bypass_val_off;
+	unsigned int active_discharge_on;
+	unsigned int active_discharge_off;
+	unsigned int active_discharge_mask;
+	unsigned int active_discharge_reg;
+	unsigned int soft_start_reg;
+	unsigned int soft_start_mask;
+	unsigned int soft_start_val_on;
+	unsigned int pull_down_reg;
+	unsigned int pull_down_mask;
+	unsigned int pull_down_val_on;
+	unsigned int ramp_reg;
+	unsigned int ramp_mask;
+	const unsigned int *ramp_delay_table;
+	unsigned int n_ramp_values;
+	unsigned int enable_time;
+	unsigned int off_on_delay;
+	unsigned int poll_enabled_time;
+	unsigned int (*of_map_mode)(unsigned int);
+	u64 android_kabi_reserved1;
+};
+
+struct regulator_init_data;
+
+struct regulator_config {
+	struct device *dev;
+	const struct regulator_init_data *init_data;
+	void *driver_data;
+	struct device_node *of_node;
+	struct regmap *regmap;
+	struct gpio_desc *ena_gpiod;
+};
+
+struct regulator_state {
+	int uV;
+	int min_uV;
+	int max_uV;
+	unsigned int mode;
+	int enabled;
+	bool changeable;
+};
+
+struct notification_limit {
+	int prot;
+	int err;
+	int warn;
+};
+
+struct regulation_constraints {
+	const char *name;
+	int min_uV;
+	int max_uV;
+	int uV_offset;
+	int min_uA;
+	int max_uA;
+	int ilim_uA;
+	int system_load;
+	u32 *max_spread;
+	int max_uV_step;
+	unsigned int valid_modes_mask;
+	unsigned int valid_ops_mask;
+	int input_uV;
+	struct regulator_state state_disk;
+	struct regulator_state state_mem;
+	struct regulator_state state_standby;
+	struct notification_limit over_curr_limits;
+	struct notification_limit over_voltage_limits;
+	struct notification_limit under_voltage_limits;
+	struct notification_limit temp_limits;
+	suspend_state_t initial_state;
+	unsigned int initial_mode;
+	unsigned int ramp_delay;
+	unsigned int settling_time;
+	unsigned int settling_time_up;
+	unsigned int settling_time_down;
+	unsigned int enable_time;
+	unsigned int active_discharge;
+	unsigned int always_on: 1;
+	unsigned int boot_on: 1;
+	unsigned int apply_uV: 1;
+	unsigned int ramp_disable: 1;
+	unsigned int soft_start: 1;
+	unsigned int pull_down: 1;
+	unsigned int over_current_protection: 1;
+	unsigned int over_current_detection: 1;
+	unsigned int over_voltage_detection: 1;
+	unsigned int under_voltage_detection: 1;
+	unsigned int over_temp_detection: 1;
+};
+
+struct regulator_consumer_supply;
+
+struct regulator_init_data {
+	const char *supply_regulator;
+	struct regulation_constraints constraints;
+	int num_consumer_supplies;
+	struct regulator_consumer_supply *consumer_supplies;
+	int (*regulator_init)(void *);
+	void *driver_data;
+};
+
+struct regulator_consumer_supply {
+	const char *dev_name;
+	const char *supply;
+};
+
+struct regulator_ops {
+	int (*list_voltage)(struct regulator_dev *, unsigned int);
+	int (*set_voltage)(struct regulator_dev *, int, int, unsigned int *);
+	int (*map_voltage)(struct regulator_dev *, int, int);
+	int (*set_voltage_sel)(struct regulator_dev *, unsigned int);
+	int (*get_voltage)(struct regulator_dev *);
+	int (*get_voltage_sel)(struct regulator_dev *);
+	int (*set_current_limit)(struct regulator_dev *, int, int);
+	int (*get_current_limit)(struct regulator_dev *);
+	int (*set_input_current_limit)(struct regulator_dev *, int);
+	int (*set_over_current_protection)(struct regulator_dev *, int, int, bool);
+	int (*set_over_voltage_protection)(struct regulator_dev *, int, int, bool);
+	int (*set_under_voltage_protection)(struct regulator_dev *, int, int, bool);
+	int (*set_thermal_protection)(struct regulator_dev *, int, int, bool);
+	int (*set_active_discharge)(struct regulator_dev *, bool);
+	int (*enable)(struct regulator_dev *);
+	int (*disable)(struct regulator_dev *);
+	int (*is_enabled)(struct regulator_dev *);
+	int (*set_mode)(struct regulator_dev *, unsigned int);
+	unsigned int (*get_mode)(struct regulator_dev *);
+	int (*get_error_flags)(struct regulator_dev *, unsigned int *);
+	int (*enable_time)(struct regulator_dev *);
+	int (*set_ramp_delay)(struct regulator_dev *, int);
+	int (*set_voltage_time)(struct regulator_dev *, int, int);
+	int (*set_voltage_time_sel)(struct regulator_dev *, unsigned int, unsigned int);
+	int (*set_soft_start)(struct regulator_dev *);
+	int (*get_status)(struct regulator_dev *);
+	unsigned int (*get_optimum_mode)(struct regulator_dev *, int, int, int);
+	int (*set_load)(struct regulator_dev *, int);
+	int (*set_bypass)(struct regulator_dev *, bool);
+	int (*get_bypass)(struct regulator_dev *, bool *);
+	int (*set_suspend_voltage)(struct regulator_dev *, int);
+	int (*set_suspend_enable)(struct regulator_dev *);
+	int (*set_suspend_disable)(struct regulator_dev *);
+	int (*set_suspend_mode)(struct regulator_dev *, unsigned int);
+	int (*resume)(struct regulator_dev *);
+	int (*set_pull_down)(struct regulator_dev *);
+	u64 android_kabi_reserved1;
+};
+
+struct regulator_voltage {
+	int min_uV;
+	int max_uV;
+};
+
+struct regulator {
+	struct device *dev;
+	struct list_head list;
+	unsigned int always_on: 1;
+	unsigned int bypass: 1;
+	unsigned int device_link: 1;
+	int uA_load;
+	unsigned int enable_count;
+	unsigned int deferred_disables;
+	struct regulator_voltage voltage[5];
+	const char *supply_name;
+	struct device_attribute dev_attr;
+	struct regulator_dev *rdev;
+	struct dentry *debugfs;
+};
+
+struct regulator_enable_gpio {
+	struct list_head list;
+	struct gpio_desc *gpiod;
+	u32 enable_count;
+	u32 request_count;
+};
+
+enum regulator_get_type {
+	NORMAL_GET = 0,
+	EXCLUSIVE_GET = 1,
+	OPTIONAL_GET = 2,
+	MAX_GET_TYPE = 3,
+};
+
+enum regulator_status {
+	REGULATOR_STATUS_OFF = 0,
+	REGULATOR_STATUS_ON = 1,
+	REGULATOR_STATUS_ERROR = 2,
+	REGULATOR_STATUS_FAST = 3,
+	REGULATOR_STATUS_NORMAL = 4,
+	REGULATOR_STATUS_IDLE = 5,
+	REGULATOR_STATUS_STANDBY = 6,
+	REGULATOR_STATUS_BYPASS = 7,
+	REGULATOR_STATUS_UNDEFINED = 8,
+};
+
+enum regulator_detection_severity {
+	REGULATOR_SEVERITY_PROT = 0,
+	REGULATOR_SEVERITY_ERR = 1,
+	REGULATOR_SEVERITY_WARN = 2,
+};
+
+enum regulator_active_discharge {
+	REGULATOR_ACTIVE_DISCHARGE_DEFAULT = 0,
+	REGULATOR_ACTIVE_DISCHARGE_DISABLE = 1,
+	REGULATOR_ACTIVE_DISCHARGE_ENABLE = 2,
+};
+
+struct trace_event_raw_regulator_basic {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	char __data[0];
+};
+
+struct trace_event_raw_regulator_range {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	int min;
+	int max;
+	char __data[0];
+};
+
+struct trace_event_raw_regulator_value {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	unsigned int val;
+	char __data[0];
+};
+
+struct regulator_map {
+	struct list_head list;
+	const char *dev_name;
+	const char *supply;
+	struct regulator_dev *regulator;
+};
+
+struct regulator_supply_alias {
+	struct list_head list;
+	struct device *src_dev;
+	const char *src_supply;
+	struct device *alias_dev;
+	const char *alias_supply;
+};
+
+struct trace_event_data_offsets_regulator_basic {
+	u32 name;
+};
+
+struct trace_event_data_offsets_regulator_range {
+	u32 name;
+};
+
+struct trace_event_data_offsets_regulator_value {
+	u32 name;
+};
+
+struct pre_voltage_change_data {
+	unsigned long old_uV;
+	unsigned long min_uV;
+	unsigned long max_uV;
+};
+
+struct summary_lock_data {
+	struct ww_acquire_ctx *ww_ctx;
+	struct regulator_dev **new_contended_rdev;
+	struct regulator_dev **old_contended_rdev;
+};
+
+struct summary_data {
+	struct seq_file *s;
+	struct regulator_dev *parent;
+	int level;
+};
+
+struct fixed_voltage_config {
+	const char *supply_name;
+	const char *input_supply;
+	int microvolts;
+	unsigned int startup_delay;
+	unsigned int off_on_delay;
+	unsigned int enabled_at_boot: 1;
+	struct regulator_init_data *init_data;
+};
+
+struct fixed_regulator_data {
+	struct fixed_voltage_config cfg;
+	struct regulator_init_data init_data;
+	struct platform_device pdev;
+};
+
+struct regulator_bulk_devres {
+	struct regulator_bulk_data *consumers;
+	int num_consumers;
+};
+
+struct regulator_supply_alias_match {
+	struct device *dev;
+	const char *id;
+};
+
+struct regulator_irq_data;
+
+struct regulator_irq_desc {
+	const char *name;
+	int fatal_cnt;
+	int reread_ms;
+	int irq_off_ms;
+	bool skip_off;
+	bool high_prio;
+	void *data;
+	int (*die)(struct regulator_irq_data *);
+	int (*map_event)(int, struct regulator_irq_data *, unsigned long *);
+	int (*renable)(struct regulator_irq_data *);
+};
+
+struct regulator_err_state;
+
+struct regulator_irq_data {
+	struct regulator_err_state *states;
+	int num_states;
+	void *data;
+	long opaque;
+};
+
+struct regulator_err_state {
+	struct regulator_dev *rdev;
+	unsigned long notifs;
+	unsigned long errors;
+	int possible_errs;
+};
+
+struct regulator_notifier_match {
+	struct regulator *regulator;
+	struct notifier_block *nb;
+};
+
+enum {
+	REGULATOR_ERROR_CLEARED = 0,
+	REGULATOR_FAILED_RETRY = 1,
+	REGULATOR_ERROR_ON = 2,
+};
+
+struct regulator_irq {
+	struct regulator_irq_data rdata;
+	struct regulator_irq_desc desc;
+	int irq;
+	int retry_cnt;
+	struct delayed_work isr_work;
+};
+
+struct of_regulator_match {
+	const char *name;
+	void *driver_data;
+	struct regulator_init_data *init_data;
+	struct device_node *of_node;
+	const struct regulator_desc *desc;
+};
+
+struct devm_of_regulator_matches {
+	struct of_regulator_match *matches;
+	unsigned int num_matches;
+};
+
+struct fixed_dev_type {
+	bool has_enable_clock;
+	bool has_performance_state;
+};
+
+struct fixed_voltage_data {
+	struct regulator_desc desc;
+	struct regulator_dev *dev;
+	struct clk *enable_clock;
+	unsigned int enable_counter;
+	int performance_state;
+};
+
+struct reset_control {
+	struct reset_controller_dev *rcdev;
+	struct list_head list;
+	unsigned int id;
+	struct kref refcnt;
+	bool acquired;
+	bool shared;
+	bool array;
+	atomic_t deassert_count;
+	atomic_t triggered_count;
+};
+
+struct reset_control_array {
+	struct reset_control base;
+	unsigned int num_rstcs;
+	struct reset_control *rstc[0];
+};
+
+struct reset_control_lookup {
+	struct list_head list;
+	const char *provider;
+	unsigned int index;
+	const char *dev_id;
+	const char *con_id;
+};
+
+struct reset_control_bulk_devres {
+	int num_rstcs;
+	struct reset_control_bulk_data *rstcs;
+};
+
+enum hi6220_reset_ctrl_type {
+	PERIPHERAL = 0,
+	MEDIA = 1,
+	AO = 2,
+};
+
+struct hi6220_reset_data {
+	struct reset_controller_dev rc_dev;
+	struct regmap *regmap;
+};
+
+struct hi3660_reset_controller {
+	struct reset_controller_dev rst;
+	struct regmap *map;
+};
+
+enum mrq_reset_commands {
+	CMD_RESET_ASSERT = 1,
+	CMD_RESET_DEASSERT = 2,
+	CMD_RESET_MODULE = 3,
+	CMD_RESET_GET_MAX_ID = 4,
+	CMD_RESET_MAX = 5,
+};
+
+struct mrq_reset_request {
+	uint32_t cmd;
+	uint32_t reset_id;
+};
+
+struct scmi_reset_proto_ops {
+	int (*num_domains_get)(const struct scmi_protocol_handle *);
+	const char * (*name_get)(const struct scmi_protocol_handle *, u32);
+	int (*latency_get)(const struct scmi_protocol_handle *, u32);
+	int (*reset)(const struct scmi_protocol_handle *, u32);
+	int (*assert)(const struct scmi_protocol_handle *, u32);
+	int (*deassert)(const struct scmi_protocol_handle *, u32);
+	u64 android_kabi_reserved1;
+};
+
+struct scmi_reset_data {
+	struct reset_controller_dev rcdev;
+	const struct scmi_protocol_handle *ph;
+};
+
+struct reset_simple_devdata {
+	u32 reg_offset;
+	u32 nr_resets;
+	bool active_low;
+	bool status_active_low;
+};
+
+struct reset_simple_data {
+	spinlock_t lock;
+	void *membase;
+	struct reset_controller_dev rcdev;
+	bool active_low;
+	bool status_active_low;
+	unsigned int reset_us;
+};
+
+struct serial_icounter_struct {
+	int cts;
+	int dsr;
+	int rng;
+	int dcd;
+	int rx;
+	int tx;
+	int frame;
+	int overrun;
+	int parity;
+	int brk;
+	int buf_overrun;
+	int reserved[9];
+};
+
+struct serial_struct {
+	int type;
+	int line;
+	unsigned int port;
+	int irq;
+	int flags;
+	int xmit_fifo_size;
+	int custom_divisor;
+	int baud_base;
+	unsigned short close_delay;
+	char io_type;
+	char reserved_char[1];
+	int hub6;
+	unsigned short closing_wait;
+	unsigned short closing_wait2;
+	unsigned char *iomem_base;
+	unsigned short iomem_reg_shift;
+	unsigned int port_high;
+	unsigned long iomap_base;
+};
+
+struct serial_struct32 {
+	compat_int_t type;
+	compat_int_t line;
+	compat_uint_t port;
+	compat_int_t irq;
+	compat_int_t flags;
+	compat_int_t xmit_fifo_size;
+	compat_int_t custom_divisor;
+	compat_int_t baud_base;
+	unsigned short close_delay;
+	char io_type;
+	char reserved_char;
+	compat_int_t hub6;
+	unsigned short closing_wait;
+	unsigned short closing_wait2;
+	compat_uint_t iomem_base;
+	unsigned short iomem_reg_shift;
+	unsigned int port_high;
+	compat_int_t reserved;
+};
+
+enum {
+	ERASE = 0,
+	WERASE = 1,
+	KILL = 2,
+};
+
+struct n_tty_data {
+	size_t read_head;
+	size_t commit_head;
+	size_t canon_head;
+	size_t echo_head;
+	size_t echo_commit;
+	size_t echo_mark;
+	unsigned long char_map[4];
+	unsigned long overrun_time;
+	unsigned int num_overrun;
+	bool no_room;
+	unsigned char lnext: 1;
+	unsigned char erasing: 1;
+	unsigned char raw: 1;
+	unsigned char real_raw: 1;
+	unsigned char icanon: 1;
+	unsigned char push: 1;
+	u8 read_buf[4096];
+	unsigned long read_flags[64];
+	u8 echo_buf[4096];
+	size_t read_tail;
+	size_t line_start;
+	size_t lookahead_count;
+	unsigned int column;
+	unsigned int canon_column;
+	size_t echo_tail;
+	struct mutex atomic_read_lock;
+	struct mutex output_lock;
+};
+
+struct termios {
+	tcflag_t c_iflag;
+	tcflag_t c_oflag;
+	tcflag_t c_cflag;
+	tcflag_t c_lflag;
+	cc_t c_line;
+	cc_t c_cc[19];
+};
+
+struct termios2 {
+	tcflag_t c_iflag;
+	tcflag_t c_oflag;
+	tcflag_t c_cflag;
+	tcflag_t c_lflag;
+	cc_t c_line;
+	cc_t c_cc[19];
+	speed_t c_ispeed;
+	speed_t c_ospeed;
+};
+
+struct termio {
+	unsigned short c_iflag;
+	unsigned short c_oflag;
+	unsigned short c_cflag;
+	unsigned short c_lflag;
+	unsigned char c_line;
+	unsigned char c_cc[8];
+};
+
+struct ldsem_waiter {
+	struct list_head list;
+	struct task_struct *task;
+};
+
+struct tty_audit_buf {
+	struct mutex mutex;
+	dev_t dev;
+	bool icanon;
+	size_t valid;
+	u8 *data;
+};
+
+struct input_handle;
+
+struct input_value;
+
+struct input_dev;
+
+struct input_device_id;
+
+struct input_handler {
+	void *private;
+	void (*event)(struct input_handle *, unsigned int, unsigned int, int);
+	void (*events)(struct input_handle *, const struct input_value *, unsigned int);
+	bool (*filter)(struct input_handle *, unsigned int, unsigned int, int);
+	bool (*match)(struct input_handler *, struct input_dev *);
+	int (*connect)(struct input_handler *, struct input_dev *, const struct input_device_id *);
+	void (*disconnect)(struct input_handle *);
+	void (*start)(struct input_handle *);
+	bool legacy_minors;
+	int minor;
+	const char *name;
+	const struct input_device_id *id_table;
+	struct list_head h_list;
+	struct list_head node;
+	u64 android_kabi_reserved1;
+};
+
+struct input_handle {
+	void *private;
+	int open;
+	const char *name;
+	struct input_dev *dev;
+	struct input_handler *handler;
+	struct list_head d_node;
+	struct list_head h_node;
+	u64 android_kabi_reserved1;
+};
+
+struct input_id {
+	__u16 bustype;
+	__u16 vendor;
+	__u16 product;
+	__u16 version;
+};
+
+struct input_keymap_entry;
+
+struct ff_device;
+
+struct input_dev_poller;
+
+struct input_mt;
+
+struct input_absinfo;
+
+struct input_dev {
+	const char *name;
+	const char *phys;
+	const char *uniq;
+	struct input_id id;
+	unsigned long propbit[1];
+	unsigned long evbit[1];
+	unsigned long keybit[12];
+	unsigned long relbit[1];
+	unsigned long absbit[1];
+	unsigned long mscbit[1];
+	unsigned long ledbit[1];
+	unsigned long sndbit[1];
+	unsigned long ffbit[2];
+	unsigned long swbit[1];
+	unsigned int hint_events_per_packet;
+	unsigned int keycodemax;
+	unsigned int keycodesize;
+	void *keycode;
+	int (*setkeycode)(struct input_dev *, const struct input_keymap_entry *, unsigned int *);
+	int (*getkeycode)(struct input_dev *, struct input_keymap_entry *);
+	struct ff_device *ff;
+	struct input_dev_poller *poller;
+	unsigned int repeat_key;
+	struct timer_list timer;
+	int rep[2];
+	struct input_mt *mt;
+	struct input_absinfo *absinfo;
+	unsigned long key[12];
+	unsigned long led[1];
+	unsigned long snd[1];
+	unsigned long sw[1];
+	int (*open)(struct input_dev *);
+	void (*close)(struct input_dev *);
+	int (*flush)(struct input_dev *, struct file *);
+	int (*event)(struct input_dev *, unsigned int, unsigned int, int);
+	struct input_handle __attribute__((btf_type_tag("rcu"))) *grab;
+	spinlock_t event_lock;
+	struct mutex mutex;
+	unsigned int users;
+	bool going_away;
+	struct device dev;
+	struct list_head h_list;
+	struct list_head node;
+	unsigned int num_vals;
+	unsigned int max_vals;
+	struct input_value *vals;
+	bool devres_managed;
+	ktime_t timestamp[3];
+	bool inhibited;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct input_keymap_entry {
+	__u8 flags;
+	__u8 len;
+	__u16 index;
+	__u32 keycode;
+	__u8 scancode[32];
+};
+
+struct ff_effect;
+
+struct ff_device {
+	int (*upload)(struct input_dev *, struct ff_effect *, struct ff_effect *);
+	int (*erase)(struct input_dev *, int);
+	int (*playback)(struct input_dev *, int, int);
+	void (*set_gain)(struct input_dev *, u16);
+	void (*set_autocenter)(struct input_dev *, u16);
+	void (*destroy)(struct ff_device *);
+	void *private;
+	unsigned long ffbit[2];
+	struct mutex mutex;
+	int max_effects;
+	struct ff_effect *effects;
+	u64 android_kabi_reserved1;
+	struct file *effect_owners[0];
+};
+
+struct ff_envelope {
+	__u16 attack_length;
+	__u16 attack_level;
+	__u16 fade_length;
+	__u16 fade_level;
+};
+
+struct ff_constant_effect {
+	__s16 level;
+	struct ff_envelope envelope;
+};
+
+struct ff_ramp_effect {
+	__s16 start_level;
+	__s16 end_level;
+	struct ff_envelope envelope;
+};
+
+struct ff_periodic_effect {
+	__u16 waveform;
+	__u16 period;
+	__s16 magnitude;
+	__s16 offset;
+	__u16 phase;
+	struct ff_envelope envelope;
+	__u32 custom_len;
+	__s16 __attribute__((btf_type_tag("user"))) *custom_data;
+};
+
+struct ff_condition_effect {
+	__u16 right_saturation;
+	__u16 left_saturation;
+	__s16 right_coeff;
+	__s16 left_coeff;
+	__u16 deadband;
+	__s16 center;
+};
+
+struct ff_rumble_effect {
+	__u16 strong_magnitude;
+	__u16 weak_magnitude;
+};
+
+struct ff_trigger {
+	__u16 button;
+	__u16 interval;
+};
+
+struct ff_replay {
+	__u16 length;
+	__u16 delay;
+};
+
+struct ff_effect {
+	__u16 type;
+	__s16 id;
+	__u16 direction;
+	struct ff_trigger trigger;
+	struct ff_replay replay;
+	union {
+		struct ff_constant_effect constant;
+		struct ff_ramp_effect ramp;
+		struct ff_periodic_effect periodic;
+		struct ff_condition_effect condition[2];
+		struct ff_rumble_effect rumble;
+	} u;
+};
+
+struct input_absinfo {
+	__s32 value;
+	__s32 minimum;
+	__s32 maximum;
+	__s32 fuzz;
+	__s32 flat;
+	__s32 resolution;
+};
+
+struct input_value {
+	__u16 type;
+	__u16 code;
+	__s32 value;
+};
+
+struct input_device_id {
+	kernel_ulong_t flags;
+	__u16 bustype;
+	__u16 vendor;
+	__u16 product;
+	__u16 version;
+	kernel_ulong_t evbit[1];
+	kernel_ulong_t keybit[12];
+	kernel_ulong_t relbit[1];
+	kernel_ulong_t absbit[1];
+	kernel_ulong_t mscbit[1];
+	kernel_ulong_t ledbit[1];
+	kernel_ulong_t sndbit[1];
+	kernel_ulong_t ffbit[2];
+	kernel_ulong_t swbit[1];
+	kernel_ulong_t propbit[1];
+	kernel_ulong_t driver_info;
+};
+
+struct sysrq_state {
+	struct input_handle handle;
+	struct work_struct reinject_work;
+	unsigned long key_down[12];
+	unsigned int alt;
+	unsigned int alt_use;
+	unsigned int shift;
+	unsigned int shift_use;
+	bool active;
+	bool need_reinject;
+	bool reinjecting;
+	bool reset_canceled;
+	bool reset_requested;
+	unsigned long reset_keybit[12];
+	int reset_seq_len;
+	int reset_seq_cnt;
+	int reset_seq_version;
+	struct timer_list keyreset_timer;
+};
+
+struct earlycon_device;
+
+struct earlycon_id {
+	char name[15];
+	char name_term;
+	char compatible[128];
+	int (*setup)(struct earlycon_device *, const char *);
+};
+
+struct uart_icount {
+	__u32 cts;
+	__u32 dsr;
+	__u32 rng;
+	__u32 dcd;
+	__u32 rx;
+	__u32 tx;
+	__u32 frame;
+	__u32 overrun;
+	__u32 parity;
+	__u32 brk;
+	__u32 buf_overrun;
+};
+
+typedef u64 upf_t;
+
+typedef unsigned int upstat_t;
+
+struct serial_rs485 {
+	__u32 flags;
+	__u32 delay_rts_before_send;
+	__u32 delay_rts_after_send;
+	union {
+		__u32 padding[5];
+		struct {
+			__u8 addr_recv;
+			__u8 addr_dest;
+			__u8 padding0[2];
+			__u32 padding1[4];
+		};
+	};
+};
+
+struct serial_iso7816 {
+	__u32 flags;
+	__u32 tg;
+	__u32 sc_fi;
+	__u32 sc_di;
+	__u32 clk;
+	__u32 reserved[5];
+};
+
+struct uart_state;
+
+struct uart_ops;
+
+struct serial_port_device;
+
+struct uart_port {
+	spinlock_t lock;
+	unsigned long iobase;
+	unsigned char *membase;
+	unsigned int (*serial_in)(struct uart_port *, int);
+	void (*serial_out)(struct uart_port *, int, int);
+	void (*set_termios)(struct uart_port *, struct ktermios *, const struct ktermios *);
+	void (*set_ldisc)(struct uart_port *, struct ktermios *);
+	unsigned int (*get_mctrl)(struct uart_port *);
+	void (*set_mctrl)(struct uart_port *, unsigned int);
+	unsigned int (*get_divisor)(struct uart_port *, unsigned int, unsigned int *);
+	void (*set_divisor)(struct uart_port *, unsigned int, unsigned int, unsigned int);
+	int (*startup)(struct uart_port *);
+	void (*shutdown)(struct uart_port *);
+	void (*throttle)(struct uart_port *);
+	void (*unthrottle)(struct uart_port *);
+	int (*handle_irq)(struct uart_port *);
+	void (*pm)(struct uart_port *, unsigned int, unsigned int);
+	void (*handle_break)(struct uart_port *);
+	int (*rs485_config)(struct uart_port *, struct ktermios *, struct serial_rs485 *);
+	int (*iso7816_config)(struct uart_port *, struct serial_iso7816 *);
+	unsigned int ctrl_id;
+	unsigned int port_id;
+	unsigned int irq;
+	unsigned long irqflags;
+	unsigned int uartclk;
+	unsigned int fifosize;
+	unsigned char x_char;
+	unsigned char regshift;
+	unsigned char iotype;
+	unsigned char quirks;
+	unsigned int read_status_mask;
+	unsigned int ignore_status_mask;
+	struct uart_state *state;
+	struct uart_icount icount;
+	struct console *cons;
+	upf_t flags;
+	upstat_t status;
+	bool hw_stopped;
+	unsigned int mctrl;
+	unsigned int frame_time;
+	unsigned int type;
+	const struct uart_ops *ops;
+	unsigned int custom_divisor;
+	unsigned int line;
+	unsigned int minor;
+	resource_size_t mapbase;
+	resource_size_t mapsize;
+	struct device *dev;
+	struct serial_port_device *port_dev;
+	unsigned long sysrq;
+	u8 sysrq_ch;
+	unsigned char has_sysrq;
+	unsigned char sysrq_seq;
+	unsigned char hub6;
+	unsigned char suspended;
+	unsigned char console_reinit;
+	const char *name;
+	struct attribute_group *attr_group;
+	const struct attribute_group **tty_groups;
+	struct serial_rs485 rs485;
+	struct serial_rs485 rs485_supported;
+	struct gpio_desc *rs485_term_gpio;
+	struct gpio_desc *rs485_rx_during_tx_gpio;
+	struct serial_iso7816 iso7816;
+	void *private_data;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct earlycon_device {
+	struct console *con;
+	struct uart_port port;
+	char options[32];
+	unsigned int baud;
+};
+
+enum uart_pm_state {
+	UART_PM_STATE_ON = 0,
+	UART_PM_STATE_OFF = 3,
+	UART_PM_STATE_UNDEFINED = 4,
+};
+
+struct circ_buf {
+	char *buf;
+	int head;
+	int tail;
+};
+
+struct uart_state {
+	struct tty_port port;
+	enum uart_pm_state pm_state;
+	struct circ_buf xmit;
+	atomic_t refcount;
+	wait_queue_head_t remove_wait;
+	struct uart_port *uart_port;
+};
+
+struct uart_ops {
+	unsigned int (*tx_empty)(struct uart_port *);
+	void (*set_mctrl)(struct uart_port *, unsigned int);
+	unsigned int (*get_mctrl)(struct uart_port *);
+	void (*stop_tx)(struct uart_port *);
+	void (*start_tx)(struct uart_port *);
+	void (*throttle)(struct uart_port *);
+	void (*unthrottle)(struct uart_port *);
+	void (*send_xchar)(struct uart_port *, char);
+	void (*stop_rx)(struct uart_port *);
+	void (*start_rx)(struct uart_port *);
+	void (*enable_ms)(struct uart_port *);
+	void (*break_ctl)(struct uart_port *, int);
+	int (*startup)(struct uart_port *);
+	void (*shutdown)(struct uart_port *);
+	void (*flush_buffer)(struct uart_port *);
+	void (*set_termios)(struct uart_port *, struct ktermios *, const struct ktermios *);
+	void (*set_ldisc)(struct uart_port *, struct ktermios *);
+	void (*pm)(struct uart_port *, unsigned int, unsigned int);
+	const char * (*type)(struct uart_port *);
+	void (*release_port)(struct uart_port *);
+	int (*request_port)(struct uart_port *);
+	void (*config_port)(struct uart_port *, int);
+	int (*verify_port)(struct uart_port *, struct serial_struct *);
+	int (*ioctl)(struct uart_port *, unsigned int, unsigned long);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct hvc_struct;
+
+struct hv_ops {
+	int (*get_chars)(uint32_t, char *, int);
+	int (*put_chars)(uint32_t, const char *, int);
+	int (*flush)(uint32_t, bool);
+	int (*notifier_add)(struct hvc_struct *, int);
+	void (*notifier_del)(struct hvc_struct *, int);
+	void (*notifier_hangup)(struct hvc_struct *, int);
+	int (*tiocmget)(struct hvc_struct *);
+	int (*tiocmset)(struct hvc_struct *, unsigned int, unsigned int);
+	void (*dtr_rts)(struct hvc_struct *, bool);
+};
+
+struct hvc_struct {
+	struct tty_port port;
+	spinlock_t lock;
+	int index;
+	int do_wakeup;
+	char *outbuf;
+	int outbuf_size;
+	int n_outbuf;
+	uint32_t vtermno;
+	const struct hv_ops *ops;
+	int irq_requested;
+	int data;
+	struct winsize ws;
+	struct work_struct tty_resize;
+	struct list_head next;
+	unsigned long flags;
+};
+
+struct serial_port_device {
+	struct device dev;
+	struct uart_port *port;
+	unsigned int tx_enabled: 1;
+};
+
+struct serial_ctrl_device {
+	struct device dev;
+	struct ida port_ida;
+};
+
+struct uart_driver {
+	struct module *owner;
+	const char *driver_name;
+	const char *dev_name;
+	int major;
+	int minor;
+	int nr;
+	struct console *cons;
+	struct uart_state *state;
+	struct tty_driver *tty_driver;
+	u64 android_kabi_reserved1;
+};
+
+struct uart_match {
+	struct uart_port *port;
+	struct uart_driver *driver;
+};
+
+struct mctrl_gpios;
+
+struct uart_8250_dma;
+
+struct uart_8250_ops;
+
+struct uart_8250_em485;
+
+struct uart_8250_port {
+	struct uart_port port;
+	struct timer_list timer;
+	struct list_head list;
+	u32 capabilities;
+	u16 bugs;
+	unsigned int tx_loadsz;
+	unsigned char acr;
+	unsigned char fcr;
+	unsigned char ier;
+	unsigned char lcr;
+	unsigned char mcr;
+	unsigned char cur_iotype;
+	unsigned int rpm_tx_active;
+	unsigned char canary;
+	unsigned char probe;
+	struct mctrl_gpios *gpios;
+	u16 lsr_saved_flags;
+	u16 lsr_save_mask;
+	unsigned char msr_saved_flags;
+	struct uart_8250_dma *dma;
+	const struct uart_8250_ops *ops;
+	u32 (*dl_read)(struct uart_8250_port *);
+	void (*dl_write)(struct uart_8250_port *, u32);
+	struct uart_8250_em485 *em485;
+	void (*rs485_start_tx)(struct uart_8250_port *);
+	void (*rs485_stop_tx)(struct uart_8250_port *);
+	struct delayed_work overrun_backoff;
+	u32 overrun_backoff_time_ms;
+};
+
+struct uart_8250_dma {
+	int (*tx_dma)(struct uart_8250_port *);
+	int (*rx_dma)(struct uart_8250_port *);
+	void (*prepare_tx_dma)(struct uart_8250_port *);
+	void (*prepare_rx_dma)(struct uart_8250_port *);
+	dma_filter_fn fn;
+	void *rx_param;
+	void *tx_param;
+	struct dma_slave_config rxconf;
+	struct dma_slave_config txconf;
+	struct dma_chan *rxchan;
+	struct dma_chan *txchan;
+	phys_addr_t rx_dma_addr;
+	phys_addr_t tx_dma_addr;
+	dma_addr_t rx_addr;
+	dma_addr_t tx_addr;
+	dma_cookie_t rx_cookie;
+	dma_cookie_t tx_cookie;
+	void *rx_buf;
+	size_t rx_size;
+	size_t tx_size;
+	unsigned char tx_running;
+	unsigned char tx_err;
+	unsigned char rx_running;
+};
+
+struct uart_8250_ops {
+	int (*setup_irq)(struct uart_8250_port *);
+	void (*release_irq)(struct uart_8250_port *);
+	void (*setup_timer)(struct uart_8250_port *);
+};
+
+struct uart_8250_em485 {
+	struct hrtimer start_tx_timer;
+	struct hrtimer stop_tx_timer;
+	struct hrtimer *active_timer;
+	struct uart_8250_port *port;
+	unsigned int tx_stopped: 1;
+};
+
+struct old_serial_port {
+	unsigned int uart;
+	unsigned int baud_base;
+	unsigned int port;
+	unsigned int irq;
+	upf_t flags;
+	unsigned char io_type;
+	unsigned char *iomem_base;
+	unsigned short iomem_reg_shift;
+};
+
+enum {
+	PLAT8250_DEV_LEGACY = -1,
+	PLAT8250_DEV_PLATFORM = 0,
+	PLAT8250_DEV_PLATFORM1 = 1,
+	PLAT8250_DEV_PLATFORM2 = 2,
+	PLAT8250_DEV_FOURPORT = 3,
+	PLAT8250_DEV_ACCENT = 4,
+	PLAT8250_DEV_BOCA = 5,
+	PLAT8250_DEV_EXAR_ST16C554 = 6,
+	PLAT8250_DEV_HUB6 = 7,
+	PLAT8250_DEV_AU1X00 = 8,
+	PLAT8250_DEV_SM501 = 9,
+};
+
+struct irq_info {
+	struct hlist_node node;
+	int irq;
+	spinlock_t lock;
+	struct list_head *head;
+};
+
+struct plat_serial8250_port {
+	unsigned long iobase;
+	void *membase;
+	resource_size_t mapbase;
+	resource_size_t mapsize;
+	unsigned int uartclk;
+	unsigned int irq;
+	unsigned long irqflags;
+	void *private_data;
+	unsigned char regshift;
+	unsigned char iotype;
+	unsigned char hub6;
+	unsigned char has_sysrq;
+	unsigned int type;
+	upf_t flags;
+	u16 bugs;
+	unsigned int (*serial_in)(struct uart_port *, int);
+	void (*serial_out)(struct uart_port *, int, int);
+	u32 (*dl_read)(struct uart_8250_port *);
+	void (*dl_write)(struct uart_8250_port *, u32);
+	void (*set_termios)(struct uart_port *, struct ktermios *, const struct ktermios *);
+	void (*set_ldisc)(struct uart_port *, struct ktermios *);
+	unsigned int (*get_mctrl)(struct uart_port *);
+	int (*handle_irq)(struct uart_port *);
+	void (*pm)(struct uart_port *, unsigned int, unsigned int);
+	void (*handle_break)(struct uart_port *);
+};
+
+struct serial8250_config {
+	const char *name;
+	unsigned short fifo_size;
+	unsigned short tx_loadsz;
+	unsigned char fcr;
+	unsigned char rxtrig_bytes[4];
+	unsigned int flags;
+};
+
+struct dw8250_port_data {
+	int line;
+	struct uart_8250_dma dma;
+	u8 dlf_size;
+	bool hw_rs485_support;
+};
+
+struct dw8250_platform_data;
+
+struct dw8250_data {
+	struct dw8250_port_data data;
+	const struct dw8250_platform_data *pdata;
+	int msr_mask_on;
+	int msr_mask_off;
+	struct clk *clk;
+	struct clk *pclk;
+	struct notifier_block clk_notifier;
+	struct work_struct clk_work;
+	struct reset_control *rst;
+	unsigned int skip_autocfg: 1;
+	unsigned int uart_16550_compatible: 1;
+};
+
+struct dw8250_platform_data {
+	u8 usr_reg;
+	u32 cpr_val;
+	unsigned int quirks;
+};
+
+struct serial_private;
+
+struct pciserial_board;
+
+struct pci_serial_quirk {
+	u32 vendor;
+	u32 device;
+	u32 subvendor;
+	u32 subdevice;
+	int (*probe)(struct pci_dev *);
+	int (*init)(struct pci_dev *);
+	int (*setup)(struct serial_private *, const struct pciserial_board *, struct uart_8250_port *, int);
+	void (*exit)(struct pci_dev *);
+};
+
+struct serial_private {
+	struct pci_dev *dev;
+	unsigned int nr;
+	struct pci_serial_quirk *quirk;
+	const struct pciserial_board *board;
+	int line[0];
+};
+
+struct pciserial_board {
+	unsigned int flags;
+	unsigned int num_ports;
+	unsigned int base_baud;
+	unsigned int uart_offset;
+	unsigned int reg_shift;
+	unsigned int first_offset;
+};
+
+struct timedia_struct {
+	int num;
+	const unsigned short *ids;
+};
+
+enum pci_board_num_t {
+	pbn_default = 0,
+	pbn_b0_1_115200 = 1,
+	pbn_b0_2_115200 = 2,
+	pbn_b0_4_115200 = 3,
+	pbn_b0_5_115200 = 4,
+	pbn_b0_8_115200 = 5,
+	pbn_b0_1_921600 = 6,
+	pbn_b0_2_921600 = 7,
+	pbn_b0_4_921600 = 8,
+	pbn_b0_2_1130000 = 9,
+	pbn_b0_4_1152000 = 10,
+	pbn_b0_4_1250000 = 11,
+	pbn_b0_2_1843200 = 12,
+	pbn_b0_4_1843200 = 13,
+	pbn_b0_1_15625000 = 14,
+	pbn_b0_bt_1_115200 = 15,
+	pbn_b0_bt_2_115200 = 16,
+	pbn_b0_bt_4_115200 = 17,
+	pbn_b0_bt_8_115200 = 18,
+	pbn_b0_bt_1_460800 = 19,
+	pbn_b0_bt_2_460800 = 20,
+	pbn_b0_bt_4_460800 = 21,
+	pbn_b0_bt_1_921600 = 22,
+	pbn_b0_bt_2_921600 = 23,
+	pbn_b0_bt_4_921600 = 24,
+	pbn_b0_bt_8_921600 = 25,
+	pbn_b1_1_115200 = 26,
+	pbn_b1_2_115200 = 27,
+	pbn_b1_4_115200 = 28,
+	pbn_b1_8_115200 = 29,
+	pbn_b1_16_115200 = 30,
+	pbn_b1_1_921600 = 31,
+	pbn_b1_2_921600 = 32,
+	pbn_b1_4_921600 = 33,
+	pbn_b1_8_921600 = 34,
+	pbn_b1_2_1250000 = 35,
+	pbn_b1_bt_1_115200 = 36,
+	pbn_b1_bt_2_115200 = 37,
+	pbn_b1_bt_4_115200 = 38,
+	pbn_b1_bt_2_921600 = 39,
+	pbn_b1_1_1382400 = 40,
+	pbn_b1_2_1382400 = 41,
+	pbn_b1_4_1382400 = 42,
+	pbn_b1_8_1382400 = 43,
+	pbn_b2_1_115200 = 44,
+	pbn_b2_2_115200 = 45,
+	pbn_b2_4_115200 = 46,
+	pbn_b2_8_115200 = 47,
+	pbn_b2_1_460800 = 48,
+	pbn_b2_4_460800 = 49,
+	pbn_b2_8_460800 = 50,
+	pbn_b2_16_460800 = 51,
+	pbn_b2_1_921600 = 52,
+	pbn_b2_4_921600 = 53,
+	pbn_b2_8_921600 = 54,
+	pbn_b2_8_1152000 = 55,
+	pbn_b2_bt_1_115200 = 56,
+	pbn_b2_bt_2_115200 = 57,
+	pbn_b2_bt_4_115200 = 58,
+	pbn_b2_bt_2_921600 = 59,
+	pbn_b2_bt_4_921600 = 60,
+	pbn_b3_2_115200 = 61,
+	pbn_b3_4_115200 = 62,
+	pbn_b3_8_115200 = 63,
+	pbn_b4_bt_2_921600 = 64,
+	pbn_b4_bt_4_921600 = 65,
+	pbn_b4_bt_8_921600 = 66,
+	pbn_panacom = 67,
+	pbn_panacom2 = 68,
+	pbn_panacom4 = 69,
+	pbn_plx_romulus = 70,
+	pbn_oxsemi = 71,
+	pbn_oxsemi_1_15625000 = 72,
+	pbn_oxsemi_2_15625000 = 73,
+	pbn_oxsemi_4_15625000 = 74,
+	pbn_oxsemi_8_15625000 = 75,
+	pbn_intel_i960 = 76,
+	pbn_sgi_ioc3 = 77,
+	pbn_computone_4 = 78,
+	pbn_computone_6 = 79,
+	pbn_computone_8 = 80,
+	pbn_sbsxrsio = 81,
+	pbn_pasemi_1682M = 82,
+	pbn_ni8430_2 = 83,
+	pbn_ni8430_4 = 84,
+	pbn_ni8430_8 = 85,
+	pbn_ni8430_16 = 86,
+	pbn_ADDIDATA_PCIe_1_3906250 = 87,
+	pbn_ADDIDATA_PCIe_2_3906250 = 88,
+	pbn_ADDIDATA_PCIe_4_3906250 = 89,
+	pbn_ADDIDATA_PCIe_8_3906250 = 90,
+	pbn_ce4100_1_115200 = 91,
+	pbn_omegapci = 92,
+	pbn_NETMOS9900_2s_115200 = 93,
+	pbn_brcm_trumanage = 94,
+	pbn_fintek_4 = 95,
+	pbn_fintek_8 = 96,
+	pbn_fintek_12 = 97,
+	pbn_fintek_F81504A = 98,
+	pbn_fintek_F81508A = 99,
+	pbn_fintek_F81512A = 100,
+	pbn_wch382_2 = 101,
+	pbn_wch384_4 = 102,
+	pbn_wch384_8 = 103,
+	pbn_sunix_pci_1s = 104,
+	pbn_sunix_pci_2s = 105,
+	pbn_sunix_pci_4s = 106,
+	pbn_sunix_pci_8s = 107,
+	pbn_sunix_pci_16s = 108,
+	pbn_titan_1_4000000 = 109,
+	pbn_titan_2_4000000 = 110,
+	pbn_titan_4_4000000 = 111,
+	pbn_titan_8_4000000 = 112,
+	pbn_moxa8250_2p = 113,
+	pbn_moxa8250_4p = 114,
+	pbn_moxa8250_8p = 115,
+};
+
+struct f815xxa_data {
+	spinlock_t lock;
+	int idx;
+};
+
+struct pericom8250 {
+	void *virt;
+	unsigned int nr;
+	int line[0];
+};
+
+struct of_serial_info {
+	struct clk *clk;
+	struct reset_control *rst;
+	int type;
+	int line;
+};
+
+struct pl011_dmabuf {
+	dma_addr_t dma;
+	size_t len;
+	char *buf;
+};
+
+struct pl011_dmarx_data {
+	struct dma_chan *chan;
+	struct completion complete;
+	bool use_buf_b;
+	struct pl011_dmabuf dbuf_a;
+	struct pl011_dmabuf dbuf_b;
+	dma_cookie_t cookie;
+	bool running;
+	struct timer_list timer;
+	unsigned int last_residue;
+	unsigned long last_jiffies;
+	bool auto_poll_rate;
+	unsigned int poll_rate;
+	unsigned int poll_timeout;
+};
+
+struct pl011_dmatx_data {
+	struct dma_chan *chan;
+	dma_addr_t dma;
+	size_t len;
+	char *buf;
+	bool queued;
+};
+
+struct vendor_data;
+
+struct uart_amba_port {
+	struct uart_port port;
+	const u16 *reg_offset;
+	struct clk *clk;
+	const struct vendor_data *vendor;
+	unsigned int dmacr;
+	unsigned int im;
+	unsigned int old_status;
+	unsigned int fifosize;
+	unsigned int fixed_baud;
+	char type[12];
+	bool rs485_tx_started;
+	unsigned int rs485_tx_drain_interval;
+	bool using_tx_dma;
+	bool using_rx_dma;
+	struct pl011_dmarx_data dmarx;
+	struct pl011_dmatx_data dmatx;
+	bool dma_probed;
+};
+
+struct vendor_data {
+	const u16 *reg_offset;
+	unsigned int ifls;
+	unsigned int fr_busy;
+	unsigned int fr_dsr;
+	unsigned int fr_cts;
+	unsigned int fr_ri;
+	unsigned int inv_fr;
+	bool access_32b;
+	bool oversampling;
+	bool dma_threshold;
+	bool cts_event_workaround;
+	bool always_enabled;
+	bool fixed_options;
+	unsigned int (*get_fifosize)(struct amba_device *);
+};
+
+enum {
+	REG_DR = 0,
+	REG_ST_DMAWM = 1,
+	REG_ST_TIMEOUT = 2,
+	REG_FR = 3,
+	REG_LCRH_RX = 4,
+	REG_LCRH_TX = 5,
+	REG_IBRD = 6,
+	REG_FBRD = 7,
+	REG_CR = 8,
+	REG_IFLS = 9,
+	REG_IMSC = 10,
+	REG_RIS = 11,
+	REG_MIS = 12,
+	REG_ICR = 13,
+	REG_DMACR = 14,
+	REG_ST_XFCR = 15,
+	REG_ST_XON1 = 16,
+	REG_ST_XON2 = 17,
+	REG_ST_XOFF1 = 18,
+	REG_ST_XOFF2 = 19,
+	REG_ST_ITCR = 20,
+	REG_ST_ITIP = 21,
+	REG_ST_ABCR = 22,
+	REG_ST_ABIMSC = 23,
+	REG_ARRAY_SIZE = 24,
+};
+
+struct amba_pl011_data {
+	bool (*dma_filter)(struct dma_chan *, void *);
+	void *dma_rx_param;
+	void *dma_tx_param;
+	bool dma_rx_poll_enable;
+	unsigned int dma_rx_poll_rate;
+	unsigned int dma_rx_poll_timeout;
+	void (*init)();
+	void (*exit)();
+};
+
+struct s3c24xx_uart_info;
+
+struct s3c24xx_serial_drv_data;
+
+struct s3c2410_uartcfg;
+
+struct s3c24xx_uart_dma;
+
+struct s3c24xx_uart_port {
+	unsigned char rx_claimed;
+	unsigned char tx_claimed;
+	unsigned char rx_enabled;
+	unsigned char tx_enabled;
+	unsigned int pm_level;
+	unsigned long baudclk_rate;
+	unsigned int min_dma_size;
+	unsigned int rx_irq;
+	unsigned int tx_irq;
+	unsigned int tx_in_progress;
+	unsigned int tx_mode;
+	unsigned int rx_mode;
+	const struct s3c24xx_uart_info *info;
+	struct clk *clk;
+	struct clk *baudclk;
+	struct uart_port port;
+	const struct s3c24xx_serial_drv_data *drv_data;
+	const struct s3c2410_uartcfg *cfg;
+	struct s3c24xx_uart_dma *dma;
+};
+
+enum s3c24xx_port_type {
+	TYPE_S3C24XX = 0,
+	TYPE_S3C6400 = 1,
+	TYPE_APPLE_S5L = 2,
+};
+
+struct s3c24xx_uart_info {
+	const char *name;
+	enum s3c24xx_port_type type;
+	unsigned int port_type;
+	unsigned int fifosize;
+	unsigned long rx_fifomask;
+	unsigned long rx_fifoshift;
+	unsigned long rx_fifofull;
+	unsigned long tx_fifomask;
+	unsigned long tx_fifoshift;
+	unsigned long tx_fifofull;
+	unsigned int def_clk_sel;
+	unsigned long num_clks;
+	unsigned long clksel_mask;
+	unsigned long clksel_shift;
+	unsigned long ucon_mask;
+	unsigned int has_divslot: 1;
+};
+
+struct s3c2410_uartcfg {
+	unsigned char hwport;
+	unsigned char unused;
+	unsigned short flags;
+	upf_t uart_flags;
+	unsigned int clk_sel;
+	unsigned int has_fracval;
+	unsigned long ucon;
+	unsigned long ulcon;
+	unsigned long ufcon;
+};
+
+struct s3c24xx_serial_drv_data {
+	const struct s3c24xx_uart_info info;
+	const struct s3c2410_uartcfg def_cfg;
+	const unsigned int fifosize[12];
+};
+
+struct s3c24xx_uart_dma {
+	unsigned int rx_chan_id;
+	unsigned int tx_chan_id;
+	struct dma_slave_config rx_conf;
+	struct dma_slave_config tx_conf;
+	struct dma_chan *rx_chan;
+	struct dma_chan *tx_chan;
+	dma_addr_t rx_addr;
+	dma_addr_t tx_addr;
+	dma_cookie_t rx_cookie;
+	dma_cookie_t tx_cookie;
+	char *rx_buf;
+	dma_addr_t tx_transfer_addr;
+	size_t rx_size;
+	size_t tx_size;
+	struct dma_async_tx_descriptor *tx_desc;
+	struct dma_async_tx_descriptor *rx_desc;
+	int tx_bytes_requested;
+	int rx_bytes_requested;
+};
+
+struct samsung_early_console_data {
+	u32 txfull_mask;
+	u32 rxfifo_mask;
+};
+
+struct qcom_geni_private_data {
+	struct uart_driver *drv;
+	u32 poll_cached_bytes;
+	unsigned int poll_cached_bytes_cnt;
+	u32 write_cached_bytes;
+	unsigned int write_cached_bytes_cnt;
+};
+
+struct qcom_geni_device_data;
+
+struct qcom_geni_serial_port {
+	struct uart_port uport;
+	struct geni_se se;
+	const char *name;
+	u32 tx_fifo_depth;
+	u32 tx_fifo_width;
+	u32 rx_fifo_depth;
+	dma_addr_t tx_dma_addr;
+	dma_addr_t rx_dma_addr;
+	bool setup;
+	unsigned int baud;
+	unsigned long clk_rate;
+	void *rx_buf;
+	u32 loopback;
+	bool brk;
+	unsigned int tx_remaining;
+	int wakeup_irq;
+	bool rx_tx_swap;
+	bool cts_rts_swap;
+	struct qcom_geni_private_data private_data;
+	const struct qcom_geni_device_data *dev_data;
+};
+
+struct qcom_geni_device_data {
+	bool console;
+	enum geni_se_xfer_mode mode;
+};
+
+enum geni_icc_path_index {
+	GENI_TO_CORE = 0,
+	CPU_TO_GENI = 1,
+	GENI_TO_DDR = 2,
+};
+
+struct tegra_tcu {
+	struct uart_driver driver;
+	struct console console;
+	struct uart_port port;
+	struct mbox_client tx_client;
+	struct mbox_client rx_client;
+	struct mbox_chan *tx;
+	struct mbox_chan *rx;
+};
+
+struct sprd_uart_dma {
+	struct dma_chan *chn;
+	unsigned char *virt;
+	dma_addr_t phys_addr;
+	dma_cookie_t cookie;
+	u32 trans_len;
+	bool enable;
+};
+
+struct sprd_uart_port {
+	struct uart_port port;
+	char name[16];
+	struct clk *clk;
+	struct sprd_uart_dma tx_dma;
+	struct sprd_uart_dma rx_dma;
+	dma_addr_t pos;
+	unsigned char *rx_buf_tail;
+};
+
+enum sprd_dma_chn_mode {
+	SPRD_DMA_CHN_MODE_NONE = 0,
+	SPRD_DMA_SRC_CHN0 = 1,
+	SPRD_DMA_SRC_CHN1 = 2,
+	SPRD_DMA_DST_CHN0 = 3,
+	SPRD_DMA_DST_CHN1 = 4,
+};
+
+enum sprd_dma_trg_mode {
+	SPRD_DMA_NO_TRG = 0,
+	SPRD_DMA_FRAG_DONE_TRG = 1,
+	SPRD_DMA_BLOCK_DONE_TRG = 2,
+	SPRD_DMA_TRANS_DONE_TRG = 3,
+	SPRD_DMA_LIST_DONE_TRG = 4,
+};
+
+enum sprd_dma_req_mode {
+	SPRD_DMA_FRAG_REQ = 0,
+	SPRD_DMA_BLK_REQ = 1,
+	SPRD_DMA_TRANS_REQ = 2,
+	SPRD_DMA_LIST_REQ = 3,
+};
+
+enum sprd_dma_int_type {
+	SPRD_DMA_NO_INT = 0,
+	SPRD_DMA_FRAG_INT = 1,
+	SPRD_DMA_BLK_INT = 2,
+	SPRD_DMA_BLK_FRAG_INT = 3,
+	SPRD_DMA_TRANS_INT = 4,
+	SPRD_DMA_TRANS_FRAG_INT = 5,
+	SPRD_DMA_TRANS_BLK_INT = 6,
+	SPRD_DMA_LIST_INT = 7,
+	SPRD_DMA_CFGERR_INT = 8,
+};
+
+enum mctrl_gpio_idx {
+	UART_GPIO_CTS = 0,
+	UART_GPIO_DSR = 1,
+	UART_GPIO_DCD = 2,
+	UART_GPIO_RNG = 3,
+	UART_GPIO_RI = 3,
+	UART_GPIO_RTS = 4,
+	UART_GPIO_DTR = 5,
+	UART_GPIO_MAX = 6,
+};
+
+struct mctrl_gpios {
+	struct uart_port *port;
+	struct gpio_desc *gpio[6];
+	int irq[6];
+	unsigned int mctrl_prev;
+	bool mctrl_on;
+};
+
+enum serdev_parity {
+	SERDEV_PARITY_NONE = 0,
+	SERDEV_PARITY_EVEN = 1,
+	SERDEV_PARITY_ODD = 2,
+};
+
+struct serdev_controller;
+
+struct serdev_device_ops;
+
+struct serdev_device {
+	struct device dev;
+	int nr;
+	struct serdev_controller *ctrl;
+	const struct serdev_device_ops *ops;
+	struct completion write_comp;
+	struct mutex write_lock;
+};
+
+struct serdev_controller_ops;
+
+struct serdev_controller {
+	struct device dev;
+	unsigned int nr;
+	struct serdev_device *serdev;
+	const struct serdev_controller_ops *ops;
+};
+
+struct serdev_controller_ops {
+	int (*write_buf)(struct serdev_controller *, const unsigned char *, size_t);
+	void (*write_flush)(struct serdev_controller *);
+	int (*write_room)(struct serdev_controller *);
+	int (*open)(struct serdev_controller *);
+	void (*close)(struct serdev_controller *);
+	void (*set_flow_control)(struct serdev_controller *, bool);
+	int (*set_parity)(struct serdev_controller *, enum serdev_parity);
+	unsigned int (*set_baudrate)(struct serdev_controller *, unsigned int);
+	void (*wait_until_sent)(struct serdev_controller *, long);
+	int (*get_tiocm)(struct serdev_controller *);
+	int (*set_tiocm)(struct serdev_controller *, unsigned int, unsigned int);
+	int (*break_ctl)(struct serdev_controller *, unsigned int);
+};
+
+struct serdev_device_ops {
+	int (*receive_buf)(struct serdev_device *, const unsigned char *, size_t);
+	void (*write_wakeup)(struct serdev_device *);
+};
+
+struct serdev_device_driver {
+	struct device_driver driver;
+	int (*probe)(struct serdev_device *);
+	void (*remove)(struct serdev_device *);
+};
+
+struct serport {
+	struct tty_port *port;
+	struct tty_struct *tty;
+	struct tty_driver *tty_drv;
+	int tty_idx;
+	unsigned long flags;
+};
+
+struct memdev {
+	const char *name;
+	const struct file_operations *fops;
+	fmode_t fmode;
+	umode_t mode;
+};
+
+struct timer_rand_state {
+	unsigned long last_time;
+	long last_delta;
+	long last_delta2;
+};
+
+enum {
+	CRNG_EMPTY = 0,
+	CRNG_EARLY = 1,
+	CRNG_READY = 2,
+};
+
+struct batch_u8 {
+	u8 entropy[96];
+	local_lock_t lock;
+	unsigned long generation;
+	unsigned int position;
+};
+
+struct batch_u16 {
+	u16 entropy[48];
+	local_lock_t lock;
+	unsigned long generation;
+	unsigned int position;
+};
+
+struct batch_u32 {
+	u32 entropy[24];
+	local_lock_t lock;
+	unsigned long generation;
+	unsigned int position;
+};
+
+struct batch_u64 {
+	u64 entropy[12];
+	local_lock_t lock;
+	unsigned long generation;
+	unsigned int position;
+};
+
+struct crng {
+	u8 key[32];
+	unsigned long generation;
+	local_lock_t lock;
+};
+
+struct fast_pool {
+	unsigned long pool[4];
+	unsigned long last;
+	unsigned int count;
+	struct timer_list mix;
+};
+
+enum {
+	MIX_INFLIGHT = 2147483648,
+};
+
+enum {
+	POOL_BITS = 256,
+	POOL_READY_BITS = 256,
+	POOL_EARLY_BITS = 128,
+};
+
+enum {
+	CRNG_RESEED_START_INTERVAL = 250,
+	CRNG_RESEED_INTERVAL = 15000,
+};
+
+enum {
+	NUM_TRIAL_SAMPLES = 8192,
+	MAX_SAMPLES_PER_BIT = 16,
+};
+
+struct entropy_timer_state {
+	unsigned long entropy;
+	struct timer_list timer;
+	atomic_t samples;
+	unsigned int samples_per_bit;
+};
+
+struct hwrng {
+	const char *name;
+	int (*init)(struct hwrng *);
+	void (*cleanup)(struct hwrng *);
+	int (*data_present)(struct hwrng *, int);
+	int (*data_read)(struct hwrng *, u32 *);
+	int (*read)(struct hwrng *, void *, size_t, bool);
+	unsigned long priv;
+	unsigned short quality;
+	struct list_head list;
+	struct kref ref;
+	struct completion cleanup_done;
+	struct completion dying;
+};
+
+struct hisi_rng {
+	void *base;
+	struct hwrng rng;
+};
+
+struct histb_rng_priv {
+	struct hwrng rng;
+	void *base;
+};
+
+struct cn10k_rng {
+	void *reg_base;
+	struct hwrng ops;
+	struct pci_dev *pdev;
+	bool extended_trng_regs;
+};
+
+struct iommu_group {
+	struct kobject kobj;
+	struct kobject *devices_kobj;
+	struct list_head devices;
+	struct xarray pasid_array;
+	struct mutex mutex;
+	void *iommu_data;
+	void (*iommu_data_release)(void *);
+	char *name;
+	int id;
+	struct iommu_domain *default_domain;
+	struct iommu_domain *blocking_domain;
+	struct iommu_domain *domain;
+	struct list_head entry;
+	unsigned int owner_cnt;
+	void *owner;
+};
+
+struct iommu_group_attribute {
+	struct attribute attr;
+	ssize_t (*show)(struct iommu_group *, char *);
+	ssize_t (*store)(struct iommu_group *, const char *, size_t);
+};
+
+enum iommu_fault_type {
+	IOMMU_FAULT_DMA_UNRECOV = 1,
+	IOMMU_FAULT_PAGE_REQ = 2,
+};
+
+enum fsl_mc_pool_type {
+	FSL_MC_POOL_DPMCP = 0,
+	FSL_MC_POOL_DPBP = 1,
+	FSL_MC_POOL_DPCON = 2,
+	FSL_MC_POOL_IRQ = 3,
+	FSL_MC_NUM_POOL_TYPES = 4,
+};
+
+enum iommu_resv_type {
+	IOMMU_RESV_DIRECT = 0,
+	IOMMU_RESV_DIRECT_RELAXABLE = 1,
+	IOMMU_RESV_RESERVED = 2,
+	IOMMU_RESV_MSI = 3,
+	IOMMU_RESV_SW_MSI = 4,
+};
+
+enum {
+	IOMMU_SET_DOMAIN_MUST_SUCCEED = 1,
+};
+
+struct group_device {
+	struct list_head list;
+	struct device *dev;
+	char *name;
+};
+
+struct fsl_mc_obj_desc {
+	char type[16];
+	int id;
+	u16 vendor;
+	u16 ver_major;
+	u16 ver_minor;
+	u8 irq_count;
+	u8 region_count;
+	u32 state;
+	char label[16];
+	u16 flags;
+};
+
+struct fsl_mc_io;
+
+struct fsl_mc_device_irq;
+
+struct fsl_mc_resource;
+
+struct fsl_mc_device {
+	struct device dev;
+	u64 dma_mask;
+	u16 flags;
+	u32 icid;
+	u16 mc_handle;
+	struct fsl_mc_io *mc_io;
+	struct fsl_mc_obj_desc obj_desc;
+	struct resource *regions;
+	struct fsl_mc_device_irq **irqs;
+	struct fsl_mc_resource *resource;
+	struct device_link *consumer_link;
+	const char *driver_override;
+};
+
+struct fsl_mc_io {
+	struct device *dev;
+	u16 flags;
+	u32 portal_size;
+	phys_addr_t portal_phys_addr;
+	void *portal_virt_addr;
+	struct fsl_mc_device *dpmcp_dev;
+	union {
+		struct mutex mutex;
+		raw_spinlock_t spinlock;
+	};
+};
+
+struct fsl_mc_resource_pool;
+
+struct fsl_mc_resource {
+	enum fsl_mc_pool_type type;
+	s32 id;
+	void *data;
+	struct fsl_mc_resource_pool *parent_pool;
+	struct list_head node;
+};
+
+struct fsl_mc_device_irq {
+	unsigned int virq;
+	struct fsl_mc_device *mc_dev;
+	u8 dev_irq_index;
+	struct fsl_mc_resource resource;
+};
+
+struct iommu_resv_region {
+	struct list_head list;
+	phys_addr_t start;
+	size_t length;
+	int prot;
+	enum iommu_resv_type type;
+	void (*free)(struct device *, struct iommu_resv_region *);
+};
+
+struct group_for_pci_data {
+	struct pci_dev *pdev;
+	struct iommu_group *group;
+};
+
+typedef void (*btf_trace_add_device_to_group)(void *, int, struct device *);
+
+typedef void (*btf_trace_remove_device_from_group)(void *, int, struct device *);
+
+typedef void (*btf_trace_attach_device_to_domain)(void *, struct device *);
+
+typedef void (*btf_trace_map)(void *, unsigned long, phys_addr_t, size_t);
+
+typedef void (*btf_trace_unmap)(void *, unsigned long, size_t, size_t);
+
+typedef void (*btf_trace_io_page_fault)(void *, struct device *, unsigned long, int);
+
+struct trace_event_raw_iommu_group_event {
+	struct trace_entry ent;
+	int gid;
+	u32 __data_loc_device;
+	char __data[0];
+};
+
+struct trace_event_raw_iommu_device_event {
+	struct trace_entry ent;
+	u32 __data_loc_device;
+	char __data[0];
+};
+
+struct trace_event_raw_map {
+	struct trace_entry ent;
+	u64 iova;
+	u64 paddr;
+	size_t size;
+	char __data[0];
+};
+
+struct trace_event_raw_unmap {
+	struct trace_entry ent;
+	u64 iova;
+	size_t size;
+	size_t unmapped_size;
+	char __data[0];
+};
+
+struct trace_event_raw_iommu_error {
+	struct trace_entry ent;
+	u32 __data_loc_device;
+	u32 __data_loc_driver;
+	u64 iova;
+	int flags;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_iommu_group_event {
+	u32 device;
+};
+
+struct trace_event_data_offsets_iommu_device_event {
+	u32 device;
+};
+
+struct trace_event_data_offsets_map {};
+
+struct trace_event_data_offsets_unmap {};
+
+struct trace_event_data_offsets_iommu_error {
+	u32 device;
+	u32 driver;
+};
+
+struct iova {
+	struct rb_node node;
+	unsigned long pfn_hi;
+	unsigned long pfn_lo;
+};
+
+struct iova_rcache;
+
+struct iova_domain {
+	spinlock_t iova_rbtree_lock;
+	struct rb_root rbroot;
+	struct rb_node *cached_node;
+	struct rb_node *cached32_node;
+	unsigned long granule;
+	unsigned long start_pfn;
+	unsigned long dma_32bit_pfn;
+	unsigned long max32_alloc_size;
+	struct iova anchor;
+	struct iova_rcache *rcaches;
+	struct hlist_node cpuhp_dead;
+	u64 android_vendor_data1;
+};
+
+enum iommu_dma_cookie_type {
+	IOMMU_DMA_IOVA_COOKIE = 0,
+	IOMMU_DMA_MSI_COOKIE = 1,
+};
+
+struct iova_fq;
+
+struct iommu_dma_cookie {
+	enum iommu_dma_cookie_type type;
+	union {
+		struct {
+			struct iova_domain iovad;
+			struct iova_fq __attribute__((btf_type_tag("percpu"))) *fq;
+			atomic64_t fq_flush_start_cnt;
+			atomic64_t fq_flush_finish_cnt;
+			struct timer_list fq_timer;
+			atomic_t fq_timer_on;
+		};
+		dma_addr_t msi_iova;
+	};
+	struct list_head msi_page_list;
+	struct iommu_domain *fq_domain;
+	struct mutex mutex;
+};
+
+struct iova_fq_entry {
+	unsigned long iova_pfn;
+	unsigned long pages;
+	struct list_head freelist;
+	u64 counter;
+};
+
+struct iova_fq {
+	struct iova_fq_entry entries[256];
+	unsigned int head;
+	unsigned int tail;
+	spinlock_t lock;
+};
+
+struct iommu_dma_msi_page {
+	struct list_head list;
+	dma_addr_t iova;
+	phys_addr_t phys;
+};
+
+struct io_pgtable;
+
+struct io_pgtable_cfg;
+
+struct io_pgtable_init_fns {
+	struct io_pgtable * (*alloc)(struct io_pgtable_cfg *, void *);
+	void (*free)(struct io_pgtable *);
+	int (*configure)(struct io_pgtable_cfg *, size_t *);
+};
+
+enum io_pgtable_fmt {
+	ARM_32_LPAE_S1 = 0,
+	ARM_32_LPAE_S2 = 1,
+	ARM_64_LPAE_S1 = 2,
+	ARM_64_LPAE_S2 = 3,
+	ARM_V7S = 4,
+	ARM_MALI_LPAE = 5,
+	AMD_IOMMU_V1 = 6,
+	AMD_IOMMU_V2 = 7,
+	APPLE_DART = 8,
+	APPLE_DART2 = 9,
+	IO_PGTABLE_NUM_FMTS = 10,
+};
+
+struct iommu_flush_ops;
+
+struct io_pgtable_cfg {
+	enum io_pgtable_fmt fmt;
+	unsigned long quirks;
+	unsigned long pgsize_bitmap;
+	unsigned int ias;
+	unsigned int oas;
+	bool coherent_walk;
+	const struct iommu_flush_ops *tlb;
+	struct device *iommu_dev;
+	union {
+		struct {
+			u64 ttbr;
+			struct {
+				u32 ips: 3;
+				u32 tg: 2;
+				u32 sh: 2;
+				u32 orgn: 2;
+				u32 irgn: 2;
+				u32 tsz: 6;
+			} tcr;
+			u64 mair;
+		} arm_lpae_s1_cfg;
+		struct {
+			u64 vttbr;
+			struct {
+				u32 ps: 3;
+				u32 tg: 2;
+				u32 sh: 2;
+				u32 orgn: 2;
+				u32 irgn: 2;
+				u32 sl: 2;
+				u32 tsz: 6;
+			} vtcr;
+		} arm_lpae_s2_cfg;
+		struct {
+			u32 ttbr;
+			u32 tcr;
+			u32 nmrr;
+			u32 prrr;
+		} arm_v7s_cfg;
+		struct {
+			u64 transtab;
+			u64 memattr;
+		} arm_mali_lpae_cfg;
+		struct {
+			u64 ttbr[4];
+			u32 n_ttbrs;
+		} apple_dart_cfg;
+	};
+};
+
+struct io_pgtable_walker;
+
+struct io_pgtable_ops {
+	int (*map_pages)(struct io_pgtable_ops *, unsigned long, phys_addr_t, size_t, size_t, int, gfp_t, size_t *);
+	size_t (*unmap_pages)(struct io_pgtable_ops *, unsigned long, size_t, size_t, struct iommu_iotlb_gather *);
+	size_t (*unmap_pages_walk)(struct io_pgtable_ops *, unsigned long, size_t, size_t, struct iommu_iotlb_gather *, struct io_pgtable_walker *);
+	phys_addr_t (*iova_to_phys)(struct io_pgtable_ops *, unsigned long);
+};
+
+struct io_pgtable {
+	enum io_pgtable_fmt fmt;
+	void *cookie;
+	struct io_pgtable_cfg cfg;
+	struct io_pgtable_ops ops;
+};
+
+struct iommu_flush_ops {
+	void (*tlb_flush_all)(void *);
+	void (*tlb_flush_walk)(unsigned long, size_t, size_t, void *);
+	void (*tlb_add_page)(struct iommu_iotlb_gather *, unsigned long, size_t, void *);
+};
+
+struct io_pgtable_ctxt;
+
+struct io_pgtable_walker {
+	void (*cb)(struct io_pgtable_ctxt *);
+	void * const arg;
+};
+
+struct io_pgtable_ctxt {
+	void *arg;
+	u64 addr;
+	size_t size;
+};
+
+typedef u32 arm_v7s_iopte;
+
+struct arm_v7s_io_pgtable {
+	struct io_pgtable iop;
+	arm_v7s_iopte *pgd;
+	struct kmem_cache *l2_tables;
+	spinlock_t split_lock;
+};
+
+struct arm_lpae_io_pgtable {
+	struct io_pgtable iop;
+	int pgd_bits;
+	int start_level;
+	int bits_per_level;
+	void *pgd;
+	bool idmapped;
+};
+
+typedef u64 arm_lpae_iopte;
+
+struct iova_magazine;
+
+struct iova_cpu_rcache {
+	spinlock_t lock;
+	struct iova_magazine *loaded;
+	struct iova_magazine *prev;
+};
+
+struct iova_magazine {
+	unsigned long size;
+	unsigned long pfns[127];
+};
+
+struct iova_rcache {
+	spinlock_t lock;
+	unsigned long depot_size;
+	struct iova_magazine *depot[32];
+	struct iova_cpu_rcache __attribute__((btf_type_tag("percpu"))) *cpu_rcaches;
+};
+
+struct of_phandle_iterator {
+	const char *cells_name;
+	int cell_count;
+	const struct device_node *parent;
+	const __be32 *list_end;
+	const __be32 *phandle_end;
+	const __be32 *cur;
+	uint32_t cur_count;
+	phandle phandle;
+	struct device_node *node;
+};
+
+struct of_pci_iommu_alias_info {
+	struct device *dev;
+	struct device_node *np;
+};
+
+enum switch_power_state {
+	DRM_SWITCH_POWER_ON = 0,
+	DRM_SWITCH_POWER_OFF = 1,
+	DRM_SWITCH_POWER_CHANGING = 2,
+	DRM_SWITCH_POWER_DYNAMIC_OFF = 3,
+};
+
+struct drm_modeset_lock {
+	struct ww_mutex mutex;
+	struct list_head head;
+};
+
+struct drm_modeset_acquire_ctx;
+
+struct drm_mode_config_funcs;
+
+struct drm_property;
+
+struct drm_atomic_state;
+
+struct drm_mode_config_helper_funcs;
+
+struct drm_mode_config {
+	struct mutex mutex;
+	struct drm_modeset_lock connection_mutex;
+	struct drm_modeset_acquire_ctx *acquire_ctx;
+	struct mutex idr_mutex;
+	struct idr object_idr;
+	struct idr tile_idr;
+	struct mutex fb_lock;
+	int num_fb;
+	struct list_head fb_list;
+	spinlock_t connector_list_lock;
+	int num_connector;
+	struct ida connector_ida;
+	struct list_head connector_list;
+	struct llist_head connector_free_list;
+	struct work_struct connector_free_work;
+	int num_encoder;
+	struct list_head encoder_list;
+	int num_total_plane;
+	struct list_head plane_list;
+	int num_crtc;
+	struct list_head crtc_list;
+	struct list_head property_list;
+	struct list_head privobj_list;
+	int min_width;
+	int min_height;
+	int max_width;
+	int max_height;
+	const struct drm_mode_config_funcs *funcs;
+	bool poll_enabled;
+	bool poll_running;
+	bool delayed_event;
+	struct delayed_work output_poll_work;
+	struct mutex blob_lock;
+	struct list_head property_blob_list;
+	struct drm_property *edid_property;
+	struct drm_property *dpms_property;
+	struct drm_property *path_property;
+	struct drm_property *tile_property;
+	struct drm_property *link_status_property;
+	struct drm_property *plane_type_property;
+	struct drm_property *prop_src_x;
+	struct drm_property *prop_src_y;
+	struct drm_property *prop_src_w;
+	struct drm_property *prop_src_h;
+	struct drm_property *prop_crtc_x;
+	struct drm_property *prop_crtc_y;
+	struct drm_property *prop_crtc_w;
+	struct drm_property *prop_crtc_h;
+	struct drm_property *prop_fb_id;
+	struct drm_property *prop_in_fence_fd;
+	struct drm_property *prop_out_fence_ptr;
+	struct drm_property *prop_crtc_id;
+	struct drm_property *prop_fb_damage_clips;
+	struct drm_property *prop_active;
+	struct drm_property *prop_mode_id;
+	struct drm_property *prop_vrr_enabled;
+	struct drm_property *dvi_i_subconnector_property;
+	struct drm_property *dvi_i_select_subconnector_property;
+	struct drm_property *dp_subconnector_property;
+	struct drm_property *tv_subconnector_property;
+	struct drm_property *tv_select_subconnector_property;
+	struct drm_property *legacy_tv_mode_property;
+	struct drm_property *tv_mode_property;
+	struct drm_property *tv_left_margin_property;
+	struct drm_property *tv_right_margin_property;
+	struct drm_property *tv_top_margin_property;
+	struct drm_property *tv_bottom_margin_property;
+	struct drm_property *tv_brightness_property;
+	struct drm_property *tv_contrast_property;
+	struct drm_property *tv_flicker_reduction_property;
+	struct drm_property *tv_overscan_property;
+	struct drm_property *tv_saturation_property;
+	struct drm_property *tv_hue_property;
+	struct drm_property *scaling_mode_property;
+	struct drm_property *aspect_ratio_property;
+	struct drm_property *content_type_property;
+	struct drm_property *degamma_lut_property;
+	struct drm_property *degamma_lut_size_property;
+	struct drm_property *ctm_property;
+	struct drm_property *gamma_lut_property;
+	struct drm_property *gamma_lut_size_property;
+	struct drm_property *suggested_x_property;
+	struct drm_property *suggested_y_property;
+	struct drm_property *non_desktop_property;
+	struct drm_property *panel_orientation_property;
+	struct drm_property *writeback_fb_id_property;
+	struct drm_property *writeback_pixel_formats_property;
+	struct drm_property *writeback_out_fence_ptr_property;
+	struct drm_property *hdr_output_metadata_property;
+	struct drm_property *content_protection_property;
+	struct drm_property *hdcp_content_type_property;
+	uint32_t preferred_depth;
+	uint32_t prefer_shadow;
+	bool quirk_addfb_prefer_xbgr_30bpp;
+	bool quirk_addfb_prefer_host_byte_order;
+	bool async_page_flip;
+	bool fb_modifiers_not_supported;
+	bool normalize_zpos;
+	struct drm_property *modifiers_property;
+	uint32_t cursor_width;
+	uint32_t cursor_height;
+	struct drm_atomic_state *suspend_state;
+	const struct drm_mode_config_helper_funcs *helper_private;
+};
+
+struct drm_vram_mm;
+
+struct drm_driver;
+
+struct drm_minor;
+
+struct drm_master;
+
+struct drm_vblank_crtc;
+
+struct drm_vma_offset_manager;
+
+struct drm_fb_helper;
+
+struct drm_device {
+	int if_version;
+	struct kref ref;
+	struct device *dev;
+	struct {
+		struct list_head resources;
+		void *final_kfree;
+		spinlock_t lock;
+	} managed;
+	const struct drm_driver *driver;
+	void *dev_private;
+	struct drm_minor *primary;
+	struct drm_minor *render;
+	struct drm_minor *accel;
+	bool registered;
+	struct drm_master *master;
+	u32 driver_features;
+	bool unplugged;
+	struct inode *anon_inode;
+	char *unique;
+	struct mutex struct_mutex;
+	struct mutex master_mutex;
+	atomic_t open_count;
+	struct mutex filelist_mutex;
+	struct list_head filelist;
+	struct list_head filelist_internal;
+	struct mutex clientlist_mutex;
+	struct list_head clientlist;
+	bool vblank_disable_immediate;
+	struct drm_vblank_crtc *vblank;
+	spinlock_t vblank_time_lock;
+	spinlock_t vbl_lock;
+	u32 max_vblank_count;
+	struct list_head vblank_event_list;
+	spinlock_t event_lock;
+	unsigned int num_crtcs;
+	struct drm_mode_config mode_config;
+	struct mutex object_name_lock;
+	struct idr object_name_idr;
+	struct drm_vma_offset_manager *vma_offset_manager;
+	struct drm_vram_mm *vram_mm;
+	enum switch_power_state switch_power_state;
+	struct drm_fb_helper *fb_helper;
+	struct mutex debugfs_mutex;
+	struct list_head debugfs_list;
+};
+
+struct drm_file;
+
+struct drm_gem_object;
+
+struct dma_buf;
+
+struct dma_buf_attachment;
+
+struct drm_mode_create_dumb;
+
+struct drm_printer;
+
+struct drm_ioctl_desc;
+
+struct drm_driver {
+	int (*load)(struct drm_device *, unsigned long);
+	int (*open)(struct drm_device *, struct drm_file *);
+	void (*postclose)(struct drm_device *, struct drm_file *);
+	void (*lastclose)(struct drm_device *);
+	void (*unload)(struct drm_device *);
+	void (*release)(struct drm_device *);
+	void (*master_set)(struct drm_device *, struct drm_file *, bool);
+	void (*master_drop)(struct drm_device *, struct drm_file *);
+	void (*debugfs_init)(struct drm_minor *);
+	struct drm_gem_object * (*gem_create_object)(struct drm_device *, size_t);
+	int (*prime_handle_to_fd)(struct drm_device *, struct drm_file *, uint32_t, uint32_t, int *);
+	int (*prime_fd_to_handle)(struct drm_device *, struct drm_file *, int, uint32_t *);
+	struct drm_gem_object * (*gem_prime_import)(struct drm_device *, struct dma_buf *);
+	struct drm_gem_object * (*gem_prime_import_sg_table)(struct drm_device *, struct dma_buf_attachment *, struct sg_table *);
+	int (*dumb_create)(struct drm_file *, struct drm_device *, struct drm_mode_create_dumb *);
+	int (*dumb_map_offset)(struct drm_file *, struct drm_device *, uint32_t, uint64_t *);
+	void (*show_fdinfo)(struct drm_printer *, struct drm_file *);
+	int major;
+	int minor;
+	int patchlevel;
+	char *name;
+	char *desc;
+	char *date;
+	u32 driver_features;
+	const struct drm_ioctl_desc *ioctls;
+	int num_ioctls;
+	const struct file_operations *fops;
+};
+
+struct drm_mode_create_dumb {
+	__u32 height;
+	__u32 width;
+	__u32 bpp;
+	__u32 flags;
+	__u32 handle;
+	__u32 pitch;
+	__u64 size;
+};
+
+struct drm_printer {
+	void (*printfn)(struct drm_printer *, struct va_format *);
+	void (*puts)(struct drm_printer *, const char *);
+	void *arg;
+	const char *prefix;
+};
+
+enum drm_ioctl_flags {
+	DRM_AUTH = 1,
+	DRM_MASTER = 2,
+	DRM_ROOT_ONLY = 4,
+	DRM_UNLOCKED = 16,
+	DRM_RENDER_ALLOW = 32,
+};
+
+typedef int drm_ioctl_t(struct drm_device *, void *, struct drm_file *);
+
+struct drm_ioctl_desc {
+	unsigned int cmd;
+	enum drm_ioctl_flags flags;
+	drm_ioctl_t *func;
+	const char *name;
+};
+
+struct drm_master {
+	struct kref refcount;
+	struct drm_device *dev;
+	char *unique;
+	int unique_len;
+	struct idr magic_map;
+	void *driver_priv;
+	struct drm_master *lessor;
+	int lessee_id;
+	struct list_head lessee_list;
+	struct list_head lessees;
+	struct idr leases;
+	struct idr lessee_idr;
+};
+
+struct drm_modeset_acquire_ctx {
+	struct ww_acquire_ctx ww_ctx;
+	struct drm_modeset_lock *contended;
+	depot_stack_handle_t stack_depot;
+	struct list_head locked;
+	bool trylock_only;
+	bool interruptible;
+};
+
+enum drm_mode_status {
+	MODE_OK = 0,
+	MODE_HSYNC = 1,
+	MODE_VSYNC = 2,
+	MODE_H_ILLEGAL = 3,
+	MODE_V_ILLEGAL = 4,
+	MODE_BAD_WIDTH = 5,
+	MODE_NOMODE = 6,
+	MODE_NO_INTERLACE = 7,
+	MODE_NO_DBLESCAN = 8,
+	MODE_NO_VSCAN = 9,
+	MODE_MEM = 10,
+	MODE_VIRTUAL_X = 11,
+	MODE_VIRTUAL_Y = 12,
+	MODE_MEM_VIRT = 13,
+	MODE_NOCLOCK = 14,
+	MODE_CLOCK_HIGH = 15,
+	MODE_CLOCK_LOW = 16,
+	MODE_CLOCK_RANGE = 17,
+	MODE_BAD_HVALUE = 18,
+	MODE_BAD_VVALUE = 19,
+	MODE_BAD_VSCAN = 20,
+	MODE_HSYNC_NARROW = 21,
+	MODE_HSYNC_WIDE = 22,
+	MODE_HBLANK_NARROW = 23,
+	MODE_HBLANK_WIDE = 24,
+	MODE_VSYNC_NARROW = 25,
+	MODE_VSYNC_WIDE = 26,
+	MODE_VBLANK_NARROW = 27,
+	MODE_VBLANK_WIDE = 28,
+	MODE_PANEL = 29,
+	MODE_INTERLACE_WIDTH = 30,
+	MODE_ONE_WIDTH = 31,
+	MODE_ONE_HEIGHT = 32,
+	MODE_ONE_SIZE = 33,
+	MODE_NO_REDUCED = 34,
+	MODE_NO_STEREO = 35,
+	MODE_NO_420 = 36,
+	MODE_STALE = -3,
+	MODE_BAD = -2,
+	MODE_ERROR = -1,
+};
+
+struct drm_framebuffer;
+
+struct drm_mode_fb_cmd2;
+
+struct drm_format_info;
+
+struct drm_display_mode;
+
+struct drm_mode_config_funcs {
+	struct drm_framebuffer * (*fb_create)(struct drm_device *, struct drm_file *, const struct drm_mode_fb_cmd2 *);
+	const struct drm_format_info * (*get_format_info)(const struct drm_mode_fb_cmd2 *);
+	void (*output_poll_changed)(struct drm_device *);
+	enum drm_mode_status (*mode_valid)(struct drm_device *, const struct drm_display_mode *);
+	int (*atomic_check)(struct drm_device *, struct drm_atomic_state *);
+	int (*atomic_commit)(struct drm_device *, struct drm_atomic_state *, bool);
+	struct drm_atomic_state * (*atomic_state_alloc)(struct drm_device *);
+	void (*atomic_state_clear)(struct drm_atomic_state *);
+	void (*atomic_state_free)(struct drm_atomic_state *);
+};
+
+struct drm_mode_fb_cmd2 {
+	__u32 fb_id;
+	__u32 width;
+	__u32 height;
+	__u32 pixel_format;
+	__u32 flags;
+	__u32 handles[4];
+	__u32 pitches[4];
+	__u32 offsets[4];
+	__u64 modifier[4];
+};
+
+struct drm_format_info {
+	u32 format;
+	u8 depth;
+	u8 num_planes;
+	union {
+		u8 cpp[4];
+		u8 char_per_block[4];
+	};
+	u8 block_w[4];
+	u8 block_h[4];
+	u8 hsub;
+	u8 vsub;
+	bool has_alpha;
+	bool is_yuv;
+	bool is_color_indexed;
+};
+
+struct drm_display_mode {
+	int clock;
+	u16 hdisplay;
+	u16 hsync_start;
+	u16 hsync_end;
+	u16 htotal;
+	u16 hskew;
+	u16 vdisplay;
+	u16 vsync_start;
+	u16 vsync_end;
+	u16 vtotal;
+	u16 vscan;
+	u32 flags;
+	int crtc_clock;
+	u16 crtc_hdisplay;
+	u16 crtc_hblank_start;
+	u16 crtc_hblank_end;
+	u16 crtc_hsync_start;
+	u16 crtc_hsync_end;
+	u16 crtc_htotal;
+	u16 crtc_hskew;
+	u16 crtc_vdisplay;
+	u16 crtc_vblank_start;
+	u16 crtc_vblank_end;
+	u16 crtc_vsync_start;
+	u16 crtc_vsync_end;
+	u16 crtc_vtotal;
+	u16 width_mm;
+	u16 height_mm;
+	u8 type;
+	bool expose_to_userspace;
+	struct list_head head;
+	char name[32];
+	enum drm_mode_status status;
+	enum hdmi_picture_aspect picture_aspect_ratio;
+};
+
+struct drm_mode_config_helper_funcs {
+	void (*atomic_commit_tail)(struct drm_atomic_state *);
+	int (*atomic_commit_setup)(struct drm_atomic_state *);
+};
+
+struct drm_debugfs_info {
+	const char *name;
+	int (*show)(struct seq_file *, void *);
+	u32 driver_features;
+	void *data;
+};
+
+enum drm_gem_object_status {
+	DRM_GEM_OBJECT_RESIDENT = 1,
+	DRM_GEM_OBJECT_PURGEABLE = 2,
+};
+
+enum drm_color_encoding {
+	DRM_COLOR_YCBCR_BT601 = 0,
+	DRM_COLOR_YCBCR_BT709 = 1,
+	DRM_COLOR_YCBCR_BT2020 = 2,
+	DRM_COLOR_ENCODING_MAX = 3,
+};
+
+enum drm_color_range {
+	DRM_COLOR_YCBCR_LIMITED_RANGE = 0,
+	DRM_COLOR_YCBCR_FULL_RANGE = 1,
+	DRM_COLOR_RANGE_MAX = 2,
+};
+
+enum drm_scaling_filter {
+	DRM_SCALING_FILTER_DEFAULT = 0,
+	DRM_SCALING_FILTER_NEAREST_NEIGHBOR = 1,
+};
+
+enum drm_plane_type {
+	DRM_PLANE_TYPE_OVERLAY = 0,
+	DRM_PLANE_TYPE_PRIMARY = 1,
+	DRM_PLANE_TYPE_CURSOR = 2,
+};
+
+enum drm_connector_registration_state {
+	DRM_CONNECTOR_INITIALIZING = 0,
+	DRM_CONNECTOR_REGISTERED = 1,
+	DRM_CONNECTOR_UNREGISTERED = 2,
+};
+
+enum drm_connector_status {
+	connector_status_connected = 1,
+	connector_status_disconnected = 2,
+	connector_status_unknown = 3,
+};
+
+enum subpixel_order {
+	SubPixelUnknown = 0,
+	SubPixelHorizontalRGB = 1,
+	SubPixelHorizontalBGR = 2,
+	SubPixelVerticalRGB = 3,
+	SubPixelVerticalBGR = 4,
+	SubPixelNone = 5,
+};
+
+enum drm_link_status {
+	DRM_LINK_STATUS_GOOD = 0,
+	DRM_LINK_STATUS_BAD = 1,
+};
+
+enum drm_mode_subconnector {
+	DRM_MODE_SUBCONNECTOR_Automatic = 0,
+	DRM_MODE_SUBCONNECTOR_Unknown = 0,
+	DRM_MODE_SUBCONNECTOR_VGA = 1,
+	DRM_MODE_SUBCONNECTOR_DVID = 3,
+	DRM_MODE_SUBCONNECTOR_DVIA = 4,
+	DRM_MODE_SUBCONNECTOR_Composite = 5,
+	DRM_MODE_SUBCONNECTOR_SVIDEO = 6,
+	DRM_MODE_SUBCONNECTOR_Component = 8,
+	DRM_MODE_SUBCONNECTOR_SCART = 9,
+	DRM_MODE_SUBCONNECTOR_DisplayPort = 10,
+	DRM_MODE_SUBCONNECTOR_HDMIA = 11,
+	DRM_MODE_SUBCONNECTOR_Native = 15,
+	DRM_MODE_SUBCONNECTOR_Wireless = 18,
+};
+
+enum drm_colorspace {
+	DRM_MODE_COLORIMETRY_DEFAULT = 0,
+	DRM_MODE_COLORIMETRY_NO_DATA = 0,
+	DRM_MODE_COLORIMETRY_SMPTE_170M_YCC = 1,
+	DRM_MODE_COLORIMETRY_BT709_YCC = 2,
+	DRM_MODE_COLORIMETRY_XVYCC_601 = 3,
+	DRM_MODE_COLORIMETRY_XVYCC_709 = 4,
+	DRM_MODE_COLORIMETRY_SYCC_601 = 5,
+	DRM_MODE_COLORIMETRY_OPYCC_601 = 6,
+	DRM_MODE_COLORIMETRY_OPRGB = 7,
+	DRM_MODE_COLORIMETRY_BT2020_CYCC = 8,
+	DRM_MODE_COLORIMETRY_BT2020_RGB = 9,
+	DRM_MODE_COLORIMETRY_BT2020_YCC = 10,
+	DRM_MODE_COLORIMETRY_DCI_P3_RGB_D65 = 11,
+	DRM_MODE_COLORIMETRY_DCI_P3_RGB_THEATER = 12,
+	DRM_MODE_COLORIMETRY_RGB_WIDE_FIXED = 13,
+	DRM_MODE_COLORIMETRY_RGB_WIDE_FLOAT = 14,
+	DRM_MODE_COLORIMETRY_BT601_YCC = 15,
+	DRM_MODE_COLORIMETRY_COUNT = 16,
+};
+
+enum drm_privacy_screen_status {
+	PRIVACY_SCREEN_DISABLED = 0,
+	PRIVACY_SCREEN_ENABLED = 1,
+	PRIVACY_SCREEN_DISABLED_LOCKED = 2,
+	PRIVACY_SCREEN_ENABLED_LOCKED = 3,
+};
+
+enum drm_connector_force {
+	DRM_FORCE_UNSPECIFIED = 0,
+	DRM_FORCE_OFF = 1,
+	DRM_FORCE_ON = 2,
+	DRM_FORCE_ON_DIGITAL = 3,
+};
+
+enum drm_panel_orientation {
+	DRM_MODE_PANEL_ORIENTATION_UNKNOWN = -1,
+	DRM_MODE_PANEL_ORIENTATION_NORMAL = 0,
+	DRM_MODE_PANEL_ORIENTATION_BOTTOM_UP = 1,
+	DRM_MODE_PANEL_ORIENTATION_LEFT_UP = 2,
+	DRM_MODE_PANEL_ORIENTATION_RIGHT_UP = 3,
+};
+
+enum drm_connector_tv_mode {
+	DRM_MODE_TV_MODE_NTSC = 0,
+	DRM_MODE_TV_MODE_NTSC_443 = 1,
+	DRM_MODE_TV_MODE_NTSC_J = 2,
+	DRM_MODE_TV_MODE_PAL = 3,
+	DRM_MODE_TV_MODE_PAL_M = 4,
+	DRM_MODE_TV_MODE_PAL_N = 5,
+	DRM_MODE_TV_MODE_SECAM = 6,
+	DRM_MODE_TV_MODE_MAX = 7,
+};
+
+enum drm_debug_category {
+	DRM_UT_CORE = 0,
+	DRM_UT_DRIVER = 1,
+	DRM_UT_KMS = 2,
+	DRM_UT_PRIME = 3,
+	DRM_UT_ATOMIC = 4,
+	DRM_UT_VBL = 5,
+	DRM_UT_STATE = 6,
+	DRM_UT_LEASE = 7,
+	DRM_UT_DP = 8,
+	DRM_UT_DRMRES = 9,
+};
+
+enum drm_bridge_attach_flags {
+	DRM_BRIDGE_ATTACH_NO_CONNECTOR = 1,
+};
+
+enum drm_bridge_ops {
+	DRM_BRIDGE_OP_DETECT = 1,
+	DRM_BRIDGE_OP_EDID = 2,
+	DRM_BRIDGE_OP_HPD = 4,
+	DRM_BRIDGE_OP_MODES = 8,
+};
+
+enum drm_driver_feature {
+	DRIVER_GEM = 1,
+	DRIVER_MODESET = 2,
+	DRIVER_RENDER = 8,
+	DRIVER_ATOMIC = 16,
+	DRIVER_SYNCOBJ = 32,
+	DRIVER_SYNCOBJ_TIMELINE = 64,
+	DRIVER_COMPUTE_ACCEL = 128,
+	DRIVER_GEM_GPUVA = 256,
+	DRIVER_CURSOR_HOTSPOT = 512,
+	DRIVER_USE_AGP = 33554432,
+	DRIVER_LEGACY = 67108864,
+	DRIVER_PCI_DMA = 134217728,
+	DRIVER_SG = 268435456,
+	DRIVER_HAVE_DMA = 536870912,
+	DRIVER_HAVE_IRQ = 1073741824,
+};
+
+struct drm_crtc;
+
+struct drm_pending_vblank_event;
+
+struct drm_crtc_commit {
+	struct drm_crtc *crtc;
+	struct kref ref;
+	struct completion flip_done;
+	struct completion hw_done;
+	struct completion cleanup_done;
+	struct list_head commit_entry;
+	struct drm_pending_vblank_event *event;
+	bool abort_completion;
+};
+
+struct drm_object_properties;
+
+struct drm_mode_object {
+	uint32_t id;
+	uint32_t type;
+	struct drm_object_properties *properties;
+	struct kref refcount;
+	void (*free_cb)(struct kref *);
+};
+
+struct drm_object_properties {
+	int count;
+	struct drm_property *properties[96];
+	uint64_t values[96];
+};
+
+struct drm_crtc_crc_entry;
+
+struct drm_crtc_crc {
+	spinlock_t lock;
+	const char *source;
+	bool opened;
+	bool overflow;
+	struct drm_crtc_crc_entry *entries;
+	int head;
+	int tail;
+	size_t values_cnt;
+	wait_queue_head_t wq;
+};
+
+struct drm_plane;
+
+struct drm_crtc_funcs;
+
+struct drm_crtc_helper_funcs;
+
+struct drm_crtc_state;
+
+struct drm_self_refresh_data;
+
+struct drm_crtc {
+	struct drm_device *dev;
+	struct device_node *port;
+	struct list_head head;
+	char *name;
+	struct drm_modeset_lock mutex;
+	struct drm_mode_object base;
+	struct drm_plane *primary;
+	struct drm_plane *cursor;
+	unsigned int index;
+	int cursor_x;
+	int cursor_y;
+	bool enabled;
+	struct drm_display_mode mode;
+	struct drm_display_mode hwmode;
+	int x;
+	int y;
+	const struct drm_crtc_funcs *funcs;
+	uint32_t gamma_size;
+	uint16_t *gamma_store;
+	const struct drm_crtc_helper_funcs *helper_private;
+	struct drm_object_properties properties;
+	struct drm_property *scaling_filter_property;
+	struct drm_crtc_state *state;
+	struct list_head commit_list;
+	spinlock_t commit_lock;
+	struct dentry *debugfs_entry;
+	struct drm_crtc_crc crc;
+	unsigned int fence_context;
+	spinlock_t fence_lock;
+	unsigned long fence_seqno;
+	char timeline_name[32];
+	struct drm_self_refresh_data *self_refresh_data;
+};
+
+typedef unsigned int drm_magic_t;
+
+struct drm_prime_file_private {
+	struct mutex lock;
+	struct rb_root dmabufs;
+	struct rb_root handles;
+};
+
+struct drm_file {
+	bool authenticated;
+	bool stereo_allowed;
+	bool universal_planes;
+	bool atomic;
+	bool aspect_ratio_allowed;
+	bool writeback_connectors;
+	bool was_master;
+	bool is_master;
+	bool supports_virtualized_cursor_plane;
+	struct drm_master *master;
+	spinlock_t master_lookup_lock;
+	struct pid __attribute__((btf_type_tag("rcu"))) *pid;
+	u64 client_id;
+	drm_magic_t magic;
+	struct list_head lhead;
+	struct drm_minor *minor;
+	struct idr object_idr;
+	spinlock_t table_lock;
+	struct idr syncobj_idr;
+	spinlock_t syncobj_table_lock;
+	struct file *filp;
+	void *driver_priv;
+	struct list_head fbs;
+	struct mutex fbs_lock;
+	struct list_head blobs;
+	wait_queue_head_t event_wait;
+	struct list_head pending_event_list;
+	struct list_head event_list;
+	int event_space;
+	struct mutex event_read_lock;
+	struct drm_prime_file_private prime;
+};
+
+struct drm_minor {
+	int index;
+	int type;
+	struct device *kdev;
+	struct drm_device *dev;
+	struct dentry *debugfs_root;
+	struct list_head debugfs_list;
+	struct mutex debugfs_lock;
+};
+
+struct drm_mm;
+
+struct drm_mm_node {
+	unsigned long color;
+	u64 start;
+	u64 size;
+	struct drm_mm *mm;
+	struct list_head node_list;
+	struct list_head hole_stack;
+	struct rb_node rb;
+	struct rb_node rb_hole_size;
+	struct rb_node rb_hole_addr;
+	u64 __subtree_last;
+	u64 hole_size;
+	u64 subtree_max_hole;
+	unsigned long flags;
+};
+
+struct drm_vma_offset_node {
+	rwlock_t vm_lock;
+	struct drm_mm_node vm_node;
+	struct rb_root vm_files;
+	void *driver_private;
+};
+
+struct dma_resv_list;
+
+struct dma_resv {
+	struct ww_mutex lock;
+	struct dma_resv_list __attribute__((btf_type_tag("rcu"))) *fences;
+};
+
+struct drm_gem_object_funcs;
+
+struct drm_gem_lru;
+
+struct drm_gem_object {
+	struct kref refcount;
+	unsigned int handle_count;
+	struct drm_device *dev;
+	struct file *filp;
+	struct drm_vma_offset_node vma_node;
+	size_t size;
+	int name;
+	struct dma_buf *dma_buf;
+	struct dma_buf_attachment *import_attach;
+	struct dma_resv *resv;
+	struct dma_resv _resv;
+	struct {
+		struct list_head list;
+	} gpuva;
+	const struct drm_gem_object_funcs *funcs;
+	struct list_head lru_node;
+	struct drm_gem_lru *lru;
+};
+
+struct drm_mm {
+	void (*color_adjust)(const struct drm_mm_node *, unsigned long, u64 *, u64 *);
+	struct list_head hole_stack;
+	struct drm_mm_node head_node;
+	struct rb_root_cached interval_tree;
+	struct rb_root_cached holes_size;
+	struct rb_root holes_addr;
+	unsigned long scan_active;
+};
+
+struct dma_fence;
+
+struct dma_resv_list {
+	struct callback_head rcu;
+	u32 num_fences;
+	u32 max_fences;
+	struct dma_fence __attribute__((btf_type_tag("rcu"))) *table[0];
+};
+
+struct drm_gem_object_funcs {
+	void (*free)(struct drm_gem_object *);
+	int (*open)(struct drm_gem_object *, struct drm_file *);
+	void (*close)(struct drm_gem_object *, struct drm_file *);
+	void (*print_info)(struct drm_printer *, unsigned int, const struct drm_gem_object *);
+	struct dma_buf * (*export)(struct drm_gem_object *, int);
+	int (*pin)(struct drm_gem_object *);
+	void (*unpin)(struct drm_gem_object *);
+	struct sg_table * (*get_sg_table)(struct drm_gem_object *);
+	int (*vmap)(struct drm_gem_object *, struct iosys_map *);
+	void (*vunmap)(struct drm_gem_object *, struct iosys_map *);
+	int (*mmap)(struct drm_gem_object *, struct vm_area_struct *);
+	int (*evict)(struct drm_gem_object *);
+	enum drm_gem_object_status (*status)(struct drm_gem_object *);
+	const struct vm_operations_struct *vm_ops;
+};
+
+struct drm_gem_lru {
+	struct mutex *lock;
+	long count;
+	struct list_head list;
+};
+
+struct drm_vblank_crtc {
+	struct drm_device *dev;
+	wait_queue_head_t queue;
+	struct timer_list disable_timer;
+	seqlock_t seqlock;
+	atomic64_t count;
+	ktime_t time;
+	atomic_t refcount;
+	u32 last;
+	u32 max_vblank_count;
+	unsigned int inmodeset;
+	unsigned int pipe;
+	int framedur_ns;
+	int linedur_ns;
+	struct drm_display_mode hwmode;
+	bool enabled;
+	struct kthread_worker *worker;
+	struct list_head pending_work;
+	wait_queue_head_t work_wait_queue;
+};
+
+struct drm_framebuffer_funcs;
+
+struct drm_framebuffer {
+	struct drm_device *dev;
+	struct list_head head;
+	struct drm_mode_object base;
+	char comm[16];
+	const struct drm_format_info *format;
+	const struct drm_framebuffer_funcs *funcs;
+	unsigned int pitches[4];
+	unsigned int offsets[4];
+	uint64_t modifier;
+	unsigned int width;
+	unsigned int height;
+	int flags;
+	int hot_x;
+	int hot_y;
+	struct list_head filp_head;
+	struct drm_gem_object *obj[4];
+};
+
+struct drm_property {
+	struct list_head head;
+	struct drm_mode_object base;
+	uint32_t flags;
+	char name[32];
+	uint32_t num_values;
+	uint64_t *values;
+	struct drm_device *dev;
+	struct list_head enum_list;
+};
+
+struct drm_clip_rect;
+
+struct drm_framebuffer_funcs {
+	void (*destroy)(struct drm_framebuffer *);
+	int (*create_handle)(struct drm_framebuffer *, struct drm_file *, unsigned int *);
+	int (*dirty)(struct drm_framebuffer *, struct drm_file *, unsigned int, unsigned int, struct drm_clip_rect *, unsigned int);
+};
+
+struct drm_clip_rect {
+	unsigned short x1;
+	unsigned short y1;
+	unsigned short x2;
+	unsigned short y2;
+};
+
+struct __drm_planes_state;
+
+struct __drm_crtcs_state;
+
+struct __drm_connnectors_state;
+
+struct __drm_private_objs_state;
+
+struct drm_atomic_state {
+	struct kref ref;
+	struct drm_device *dev;
+	bool allow_modeset: 1;
+	bool legacy_cursor_update: 1;
+	bool async_update: 1;
+	bool duplicated: 1;
+	struct __drm_planes_state *planes;
+	struct __drm_crtcs_state *crtcs;
+	int num_connector;
+	struct __drm_connnectors_state *connectors;
+	int num_private_objs;
+	struct __drm_private_objs_state *private_objs;
+	struct drm_modeset_acquire_ctx *acquire_ctx;
+	struct drm_crtc_commit *fake_commit;
+	struct work_struct commit_work;
+};
+
+struct drm_plane_state;
+
+struct __drm_planes_state {
+	struct drm_plane *ptr;
+	struct drm_plane_state *state;
+	struct drm_plane_state *old_state;
+	struct drm_plane_state *new_state;
+};
+
+struct drm_plane_funcs;
+
+struct drm_plane_helper_funcs;
+
+struct drm_plane {
+	struct drm_device *dev;
+	struct list_head head;
+	char *name;
+	struct drm_modeset_lock mutex;
+	struct drm_mode_object base;
+	uint32_t possible_crtcs;
+	uint32_t *format_types;
+	unsigned int format_count;
+	bool format_default;
+	uint64_t *modifiers;
+	unsigned int modifier_count;
+	struct drm_crtc *crtc;
+	struct drm_framebuffer *fb;
+	struct drm_framebuffer *old_fb;
+	const struct drm_plane_funcs *funcs;
+	struct drm_object_properties properties;
+	enum drm_plane_type type;
+	unsigned int index;
+	const struct drm_plane_helper_funcs *helper_private;
+	struct drm_plane_state *state;
+	struct drm_property *alpha_property;
+	struct drm_property *zpos_property;
+	struct drm_property *rotation_property;
+	struct drm_property *blend_mode_property;
+	struct drm_property *color_encoding_property;
+	struct drm_property *color_range_property;
+	struct drm_property *scaling_filter_property;
+};
+
+struct drm_plane_funcs {
+	int (*update_plane)(struct drm_plane *, struct drm_crtc *, struct drm_framebuffer *, int, int, unsigned int, unsigned int, uint32_t, uint32_t, uint32_t, uint32_t, struct drm_modeset_acquire_ctx *);
+	int (*disable_plane)(struct drm_plane *, struct drm_modeset_acquire_ctx *);
+	void (*destroy)(struct drm_plane *);
+	void (*reset)(struct drm_plane *);
+	int (*set_property)(struct drm_plane *, struct drm_property *, uint64_t);
+	struct drm_plane_state * (*atomic_duplicate_state)(struct drm_plane *);
+	void (*atomic_destroy_state)(struct drm_plane *, struct drm_plane_state *);
+	int (*atomic_set_property)(struct drm_plane *, struct drm_plane_state *, struct drm_property *, uint64_t);
+	int (*atomic_get_property)(struct drm_plane *, const struct drm_plane_state *, struct drm_property *, uint64_t *);
+	int (*late_register)(struct drm_plane *);
+	void (*early_unregister)(struct drm_plane *);
+	void (*atomic_print_state)(struct drm_printer *, const struct drm_plane_state *);
+	bool (*format_mod_supported)(struct drm_plane *, uint32_t, uint64_t);
+};
+
+struct drm_rect {
+	int x1;
+	int y1;
+	int x2;
+	int y2;
+};
+
+struct drm_property_blob;
+
+struct drm_plane_state {
+	struct drm_plane *plane;
+	struct drm_crtc *crtc;
+	struct drm_framebuffer *fb;
+	struct dma_fence *fence;
+	int32_t crtc_x;
+	int32_t crtc_y;
+	uint32_t crtc_w;
+	uint32_t crtc_h;
+	uint32_t src_x;
+	uint32_t src_y;
+	uint32_t src_h;
+	uint32_t src_w;
+	u16 alpha;
+	uint16_t pixel_blend_mode;
+	unsigned int rotation;
+	unsigned int zpos;
+	unsigned int normalized_zpos;
+	enum drm_color_encoding color_encoding;
+	enum drm_color_range color_range;
+	struct drm_property_blob *fb_damage_clips;
+	bool ignore_damage_clips;
+	struct drm_rect src;
+	struct drm_rect dst;
+	bool visible;
+	enum drm_scaling_filter scaling_filter;
+	struct drm_crtc_commit *commit;
+	struct drm_atomic_state *state;
+};
+
+struct dma_fence_ops;
+
+struct dma_fence {
+	spinlock_t *lock;
+	const struct dma_fence_ops *ops;
+	union {
+		struct list_head cb_list;
+		ktime_t timestamp;
+		struct callback_head rcu;
+	};
+	u64 context;
+	u64 seqno;
+	unsigned long flags;
+	struct kref refcount;
+	int error;
+};
+
+struct dma_fence_ops {
+	bool use_64bit_seqno;
+	const char * (*get_driver_name)(struct dma_fence *);
+	const char * (*get_timeline_name)(struct dma_fence *);
+	bool (*enable_signaling)(struct dma_fence *);
+	bool (*signaled)(struct dma_fence *);
+	long (*wait)(struct dma_fence *, bool, long);
+	void (*release)(struct dma_fence *);
+	void (*fence_value_str)(struct dma_fence *, char *, int);
+	void (*timeline_value_str)(struct dma_fence *, char *, int);
+	void (*set_deadline)(struct dma_fence *, ktime_t);
+};
+
+struct drm_property_blob {
+	struct drm_mode_object base;
+	struct drm_device *dev;
+	struct list_head head_global;
+	struct list_head head_file;
+	size_t length;
+	void *data;
+};
+
+struct drm_plane_helper_funcs {
+	int (*prepare_fb)(struct drm_plane *, struct drm_plane_state *);
+	void (*cleanup_fb)(struct drm_plane *, struct drm_plane_state *);
+	int (*begin_fb_access)(struct drm_plane *, struct drm_plane_state *);
+	void (*end_fb_access)(struct drm_plane *, struct drm_plane_state *);
+	int (*atomic_check)(struct drm_plane *, struct drm_atomic_state *);
+	void (*atomic_update)(struct drm_plane *, struct drm_atomic_state *);
+	void (*atomic_enable)(struct drm_plane *, struct drm_atomic_state *);
+	void (*atomic_disable)(struct drm_plane *, struct drm_atomic_state *);
+	int (*atomic_async_check)(struct drm_plane *, struct drm_atomic_state *);
+	void (*atomic_async_update)(struct drm_plane *, struct drm_atomic_state *);
+};
+
+struct __drm_crtcs_state {
+	struct drm_crtc *ptr;
+	struct drm_crtc_state *state;
+	struct drm_crtc_state *old_state;
+	struct drm_crtc_state *new_state;
+	struct drm_crtc_commit *commit;
+	s32 __attribute__((btf_type_tag("user"))) *out_fence_ptr;
+	u64 last_vblank_count;
+};
+
+struct drm_crtc_state {
+	struct drm_crtc *crtc;
+	bool enable;
+	bool active;
+	bool planes_changed: 1;
+	bool mode_changed: 1;
+	bool active_changed: 1;
+	bool connectors_changed: 1;
+	bool zpos_changed: 1;
+	bool color_mgmt_changed: 1;
+	bool no_vblank: 1;
+	u32 plane_mask;
+	u32 connector_mask;
+	u32 encoder_mask;
+	struct drm_display_mode adjusted_mode;
+	struct drm_display_mode mode;
+	struct drm_property_blob *mode_blob;
+	struct drm_property_blob *degamma_lut;
+	struct drm_property_blob *ctm;
+	struct drm_property_blob *gamma_lut;
+	u32 target_vblank;
+	bool async_flip;
+	bool vrr_enabled;
+	bool self_refresh_active;
+	enum drm_scaling_filter scaling_filter;
+	struct drm_pending_vblank_event *event;
+	struct drm_crtc_commit *commit;
+	struct drm_atomic_state *state;
+};
+
+struct drm_event {
+	__u32 type;
+	__u32 length;
+};
+
+struct drm_event_vblank {
+	struct drm_event base;
+	__u64 user_data;
+	__u32 tv_sec;
+	__u32 tv_usec;
+	__u32 sequence;
+	__u32 crtc_id;
+};
+
+struct drm_event_crtc_sequence {
+	struct drm_event base;
+	__u64 user_data;
+	__s64 time_ns;
+	__u64 sequence;
+};
+
+struct drm_pending_event {
+	struct completion *completion;
+	void (*completion_release)(struct completion *);
+	struct drm_event *event;
+	struct dma_fence *fence;
+	struct drm_file *file_priv;
+	struct list_head link;
+	struct list_head pending_link;
+};
+
+struct drm_pending_vblank_event {
+	struct drm_pending_event base;
+	unsigned int pipe;
+	u64 sequence;
+	union {
+		struct drm_event base;
+		struct drm_event_vblank vbl;
+		struct drm_event_crtc_sequence seq;
+	} event;
+};
+
+struct drm_connector;
+
+struct drm_connector_state;
+
+struct __drm_connnectors_state {
+	struct drm_connector *ptr;
+	struct drm_connector_state *state;
+	struct drm_connector_state *old_state;
+	struct drm_connector_state *new_state;
+	s32 __attribute__((btf_type_tag("user"))) *out_fence_ptr;
+};
+
+struct drm_scrambling {
+	bool supported;
+	bool low_rates;
+};
+
+struct drm_scdc {
+	bool supported;
+	bool read_request;
+	struct drm_scrambling scrambling;
+};
+
+struct drm_hdmi_dsc_cap {
+	bool v_1p2;
+	bool native_420;
+	bool all_bpp;
+	u8 bpc_supported;
+	u8 max_slices;
+	int clk_per_slice;
+	u8 max_lanes;
+	u8 max_frl_rate_per_lane;
+	u8 total_chunk_kbytes;
+};
+
+struct drm_hdmi_info {
+	struct drm_scdc scdc;
+	unsigned long y420_vdb_modes[4];
+	unsigned long y420_cmdb_modes[4];
+	u8 y420_dc_modes;
+	u8 max_frl_rate_per_lane;
+	u8 max_lanes;
+	struct drm_hdmi_dsc_cap dsc_cap;
+};
+
+struct drm_monitor_range_info {
+	u16 min_vfreq;
+	u16 max_vfreq;
+};
+
+struct drm_luminance_range_info {
+	u32 min_luminance;
+	u32 max_luminance;
+};
+
+struct drm_display_info {
+	unsigned int width_mm;
+	unsigned int height_mm;
+	unsigned int bpc;
+	enum subpixel_order subpixel_order;
+	int panel_orientation;
+	u32 color_formats;
+	const u32 *bus_formats;
+	unsigned int num_bus_formats;
+	u32 bus_flags;
+	int max_tmds_clock;
+	bool dvi_dual;
+	bool is_hdmi;
+	bool has_audio;
+	bool has_hdmi_infoframe;
+	bool rgb_quant_range_selectable;
+	u8 edid_hdmi_rgb444_dc_modes;
+	u8 edid_hdmi_ycbcr444_dc_modes;
+	u8 cea_rev;
+	struct drm_hdmi_info hdmi;
+	bool non_desktop;
+	struct drm_monitor_range_info monitor_range;
+	struct drm_luminance_range_info luminance_range;
+	u8 mso_stream_count;
+	u8 mso_pixel_overlap;
+	u32 max_dsc_bpp;
+	u8 *vics;
+	int vics_len;
+	u32 quirks;
+};
+
+struct drm_privacy_screen;
+
+struct drm_connector_tv_margins {
+	unsigned int bottom;
+	unsigned int left;
+	unsigned int right;
+	unsigned int top;
+};
+
+struct drm_cmdline_mode {
+	char name[32];
+	bool specified;
+	bool refresh_specified;
+	bool bpp_specified;
+	unsigned int pixel_clock;
+	int xres;
+	int yres;
+	int bpp;
+	int refresh;
+	bool rb;
+	bool interlace;
+	bool cvt;
+	bool margins;
+	enum drm_connector_force force;
+	unsigned int rotation_reflection;
+	enum drm_panel_orientation panel_orientation;
+	struct drm_connector_tv_margins tv_margins;
+	enum drm_connector_tv_mode tv_mode;
+	bool tv_mode_specified;
+};
+
+struct hdr_static_metadata {
+	__u8 eotf;
+	__u8 metadata_type;
+	__u16 max_cll;
+	__u16 max_fall;
+	__u16 min_cll;
+};
+
+struct hdr_sink_metadata {
+	__u32 metadata_type;
+	union {
+		struct hdr_static_metadata hdmi_type1;
+	};
+};
+
+struct drm_connector_funcs;
+
+struct drm_connector_helper_funcs;
+
+struct drm_edid;
+
+struct drm_encoder;
+
+struct drm_tile_group;
+
+struct drm_connector {
+	struct drm_device *dev;
+	struct device *kdev;
+	struct device_attribute *attr;
+	struct fwnode_handle *fwnode;
+	struct list_head head;
+	struct list_head global_connector_list_entry;
+	struct drm_mode_object base;
+	char *name;
+	struct mutex mutex;
+	unsigned int index;
+	int connector_type;
+	int connector_type_id;
+	bool interlace_allowed;
+	bool doublescan_allowed;
+	bool stereo_allowed;
+	bool ycbcr_420_allowed;
+	enum drm_connector_registration_state registration_state;
+	struct list_head modes;
+	enum drm_connector_status status;
+	struct list_head probed_modes;
+	struct drm_display_info display_info;
+	const struct drm_connector_funcs *funcs;
+	struct drm_property_blob *edid_blob_ptr;
+	struct drm_object_properties properties;
+	struct drm_property *scaling_mode_property;
+	struct drm_property *vrr_capable_property;
+	struct drm_property *colorspace_property;
+	struct drm_property_blob *path_blob_ptr;
+	struct drm_property *max_bpc_property;
+	struct drm_privacy_screen *privacy_screen;
+	struct notifier_block privacy_screen_notifier;
+	struct drm_property *privacy_screen_sw_state_property;
+	struct drm_property *privacy_screen_hw_state_property;
+	uint8_t polled;
+	int dpms;
+	const struct drm_connector_helper_funcs *helper_private;
+	struct drm_cmdline_mode cmdline_mode;
+	enum drm_connector_force force;
+	const struct drm_edid *edid_override;
+	struct mutex edid_override_mutex;
+	u64 epoch_counter;
+	u32 possible_encoders;
+	struct drm_encoder *encoder;
+	uint8_t eld[128];
+	bool latency_present[2];
+	int video_latency[2];
+	int audio_latency[2];
+	struct i2c_adapter *ddc;
+	int null_edid_counter;
+	unsigned int bad_edid_counter;
+	bool edid_corrupt;
+	u8 real_edid_checksum;
+	struct dentry *debugfs_entry;
+	struct drm_connector_state *state;
+	struct drm_property_blob *tile_blob_ptr;
+	bool has_tile;
+	struct drm_tile_group *tile_group;
+	bool tile_is_single_monitor;
+	uint8_t num_h_tile;
+	uint8_t num_v_tile;
+	uint8_t tile_h_loc;
+	uint8_t tile_v_loc;
+	uint16_t tile_h_size;
+	uint16_t tile_v_size;
+	struct llist_node free_node;
+	struct hdr_sink_metadata hdr_sink_metadata;
+};
+
+struct drm_connector_funcs {
+	int (*dpms)(struct drm_connector *, int);
+	void (*reset)(struct drm_connector *);
+	enum drm_connector_status (*detect)(struct drm_connector *, bool);
+	void (*force)(struct drm_connector *);
+	int (*fill_modes)(struct drm_connector *, uint32_t, uint32_t);
+	int (*set_property)(struct drm_connector *, struct drm_property *, uint64_t);
+	int (*late_register)(struct drm_connector *);
+	void (*early_unregister)(struct drm_connector *);
+	void (*destroy)(struct drm_connector *);
+	struct drm_connector_state * (*atomic_duplicate_state)(struct drm_connector *);
+	void (*atomic_destroy_state)(struct drm_connector *, struct drm_connector_state *);
+	int (*atomic_set_property)(struct drm_connector *, struct drm_connector_state *, struct drm_property *, uint64_t);
+	int (*atomic_get_property)(struct drm_connector *, const struct drm_connector_state *, struct drm_property *, uint64_t *);
+	void (*atomic_print_state)(struct drm_printer *, const struct drm_connector_state *);
+	void (*oob_hotplug_event)(struct drm_connector *);
+	void (*debugfs_init)(struct drm_connector *, struct dentry *);
+};
+
+struct drm_tv_connector_state {
+	enum drm_mode_subconnector select_subconnector;
+	enum drm_mode_subconnector subconnector;
+	struct drm_connector_tv_margins margins;
+	unsigned int legacy_mode;
+	unsigned int mode;
+	unsigned int brightness;
+	unsigned int contrast;
+	unsigned int flicker_reduction;
+	unsigned int overscan;
+	unsigned int saturation;
+	unsigned int hue;
+};
+
+struct drm_writeback_job;
+
+struct drm_connector_state {
+	struct drm_connector *connector;
+	struct drm_crtc *crtc;
+	struct drm_encoder *best_encoder;
+	enum drm_link_status link_status;
+	struct drm_atomic_state *state;
+	struct drm_crtc_commit *commit;
+	struct drm_tv_connector_state tv;
+	bool self_refresh_aware;
+	enum hdmi_picture_aspect picture_aspect_ratio;
+	unsigned int content_type;
+	unsigned int hdcp_content_type;
+	unsigned int scaling_mode;
+	unsigned int content_protection;
+	enum drm_colorspace colorspace;
+	struct drm_writeback_job *writeback_job;
+	u8 max_requested_bpc;
+	u8 max_bpc;
+	enum drm_privacy_screen_status privacy_screen_sw_state;
+	struct drm_property_blob *hdr_output_metadata;
+};
+
+struct drm_encoder_funcs;
+
+struct drm_encoder_helper_funcs;
+
+struct drm_encoder {
+	struct drm_device *dev;
+	struct list_head head;
+	struct drm_mode_object base;
+	char *name;
+	int encoder_type;
+	unsigned int index;
+	uint32_t possible_crtcs;
+	uint32_t possible_clones;
+	struct drm_crtc *crtc;
+	struct list_head bridge_chain;
+	const struct drm_encoder_funcs *funcs;
+	const struct drm_encoder_helper_funcs *helper_private;
+};
+
+struct drm_encoder_funcs {
+	void (*reset)(struct drm_encoder *);
+	void (*destroy)(struct drm_encoder *);
+	int (*late_register)(struct drm_encoder *);
+	void (*early_unregister)(struct drm_encoder *);
+};
+
+struct drm_encoder_helper_funcs {
+	void (*dpms)(struct drm_encoder *, int);
+	enum drm_mode_status (*mode_valid)(struct drm_encoder *, const struct drm_display_mode *);
+	bool (*mode_fixup)(struct drm_encoder *, const struct drm_display_mode *, struct drm_display_mode *);
+	void (*prepare)(struct drm_encoder *);
+	void (*commit)(struct drm_encoder *);
+	void (*mode_set)(struct drm_encoder *, struct drm_display_mode *, struct drm_display_mode *);
+	void (*atomic_mode_set)(struct drm_encoder *, struct drm_crtc_state *, struct drm_connector_state *);
+	enum drm_connector_status (*detect)(struct drm_encoder *, struct drm_connector *);
+	void (*atomic_disable)(struct drm_encoder *, struct drm_atomic_state *);
+	void (*atomic_enable)(struct drm_encoder *, struct drm_atomic_state *);
+	void (*disable)(struct drm_encoder *);
+	void (*enable)(struct drm_encoder *);
+	int (*atomic_check)(struct drm_encoder *, struct drm_crtc_state *, struct drm_connector_state *);
+};
+
+struct drm_writeback_connector;
+
+struct drm_writeback_job {
+	struct drm_writeback_connector *connector;
+	bool prepared;
+	struct work_struct cleanup_work;
+	struct list_head list_entry;
+	struct drm_framebuffer *fb;
+	struct dma_fence *out_fence;
+	void *priv;
+};
+
+struct drm_writeback_connector {
+	struct drm_connector base;
+	struct drm_encoder encoder;
+	struct drm_property_blob *pixel_formats_blob_ptr;
+	spinlock_t job_lock;
+	struct list_head job_queue;
+	unsigned int fence_context;
+	spinlock_t fence_lock;
+	unsigned long fence_seqno;
+	char timeline_name[32];
+};
+
+struct drm_connector_helper_funcs {
+	int (*get_modes)(struct drm_connector *);
+	int (*detect_ctx)(struct drm_connector *, struct drm_modeset_acquire_ctx *, bool);
+	enum drm_mode_status (*mode_valid)(struct drm_connector *, struct drm_display_mode *);
+	int (*mode_valid_ctx)(struct drm_connector *, struct drm_display_mode *, struct drm_modeset_acquire_ctx *, enum drm_mode_status *);
+	struct drm_encoder * (*best_encoder)(struct drm_connector *);
+	struct drm_encoder * (*atomic_best_encoder)(struct drm_connector *, struct drm_atomic_state *);
+	int (*atomic_check)(struct drm_connector *, struct drm_atomic_state *);
+	void (*atomic_commit)(struct drm_connector *, struct drm_atomic_state *);
+	int (*prepare_writeback_job)(struct drm_writeback_connector *, struct drm_writeback_job *);
+	void (*cleanup_writeback_job)(struct drm_writeback_connector *, struct drm_writeback_job *);
+	void (*enable_hpd)(struct drm_connector *);
+	void (*disable_hpd)(struct drm_connector *);
+};
+
+struct edid;
+
+struct drm_edid {
+	size_t size;
+	const struct edid *edid;
+};
+
+struct drm_tile_group {
+	struct kref refcount;
+	struct drm_device *dev;
+	int id;
+	u8 group_data[8];
+};
+
+struct drm_private_obj;
+
+struct drm_private_state;
+
+struct __drm_private_objs_state {
+	struct drm_private_obj *ptr;
+	struct drm_private_state *state;
+	struct drm_private_state *old_state;
+	struct drm_private_state *new_state;
+};
+
+struct drm_private_state_funcs;
+
+struct drm_private_obj {
+	struct list_head head;
+	struct drm_modeset_lock lock;
+	struct drm_private_state *state;
+	const struct drm_private_state_funcs *funcs;
+};
+
+struct drm_private_state {
+	struct drm_atomic_state *state;
+	struct drm_private_obj *obj;
+};
+
+struct drm_private_state_funcs {
+	struct drm_private_state * (*atomic_duplicate_state)(struct drm_private_obj *);
+	void (*atomic_destroy_state)(struct drm_private_obj *, struct drm_private_state *);
+	void (*atomic_print_state)(struct drm_printer *, const struct drm_private_state *);
+};
+
+struct drm_vma_offset_manager {
+	rwlock_t vm_lock;
+	struct drm_mm vm_addr_space_mm;
+};
+
+struct drm_mode_set;
+
+struct drm_crtc_funcs {
+	void (*reset)(struct drm_crtc *);
+	int (*cursor_set)(struct drm_crtc *, struct drm_file *, uint32_t, uint32_t, uint32_t);
+	int (*cursor_set2)(struct drm_crtc *, struct drm_file *, uint32_t, uint32_t, uint32_t, int32_t, int32_t);
+	int (*cursor_move)(struct drm_crtc *, int, int);
+	int (*gamma_set)(struct drm_crtc *, u16 *, u16 *, u16 *, uint32_t, struct drm_modeset_acquire_ctx *);
+	void (*destroy)(struct drm_crtc *);
+	int (*set_config)(struct drm_mode_set *, struct drm_modeset_acquire_ctx *);
+	int (*page_flip)(struct drm_crtc *, struct drm_framebuffer *, struct drm_pending_vblank_event *, uint32_t, struct drm_modeset_acquire_ctx *);
+	int (*page_flip_target)(struct drm_crtc *, struct drm_framebuffer *, struct drm_pending_vblank_event *, uint32_t, uint32_t, struct drm_modeset_acquire_ctx *);
+	int (*set_property)(struct drm_crtc *, struct drm_property *, uint64_t);
+	struct drm_crtc_state * (*atomic_duplicate_state)(struct drm_crtc *);
+	void (*atomic_destroy_state)(struct drm_crtc *, struct drm_crtc_state *);
+	int (*atomic_set_property)(struct drm_crtc *, struct drm_crtc_state *, struct drm_property *, uint64_t);
+	int (*atomic_get_property)(struct drm_crtc *, const struct drm_crtc_state *, struct drm_property *, uint64_t *);
+	int (*late_register)(struct drm_crtc *);
+	void (*early_unregister)(struct drm_crtc *);
+	int (*set_crc_source)(struct drm_crtc *, const char *);
+	int (*verify_crc_source)(struct drm_crtc *, const char *, size_t *);
+	const char * const * (*get_crc_sources)(struct drm_crtc *, size_t *);
+	void (*atomic_print_state)(struct drm_printer *, const struct drm_crtc_state *);
+	u32 (*get_vblank_counter)(struct drm_crtc *);
+	int (*enable_vblank)(struct drm_crtc *);
+	void (*disable_vblank)(struct drm_crtc *);
+	bool (*get_vblank_timestamp)(struct drm_crtc *, int *, ktime_t *, bool);
+};
+
+struct drm_mode_set {
+	struct drm_framebuffer *fb;
+	struct drm_crtc *crtc;
+	struct drm_display_mode *mode;
+	uint32_t x;
+	uint32_t y;
+	struct drm_connector **connectors;
+	size_t num_connectors;
+};
+
+enum mode_set_atomic {
+	LEAVE_ATOMIC_MODE_SET = 0,
+	ENTER_ATOMIC_MODE_SET = 1,
+};
+
+struct drm_crtc_helper_funcs {
+	void (*dpms)(struct drm_crtc *, int);
+	void (*prepare)(struct drm_crtc *);
+	void (*commit)(struct drm_crtc *);
+	enum drm_mode_status (*mode_valid)(struct drm_crtc *, const struct drm_display_mode *);
+	bool (*mode_fixup)(struct drm_crtc *, const struct drm_display_mode *, struct drm_display_mode *);
+	int (*mode_set)(struct drm_crtc *, struct drm_display_mode *, struct drm_display_mode *, int, int, struct drm_framebuffer *);
+	void (*mode_set_nofb)(struct drm_crtc *);
+	int (*mode_set_base)(struct drm_crtc *, int, int, struct drm_framebuffer *);
+	int (*mode_set_base_atomic)(struct drm_crtc *, struct drm_framebuffer *, int, int, enum mode_set_atomic);
+	void (*disable)(struct drm_crtc *);
+	int (*atomic_check)(struct drm_crtc *, struct drm_atomic_state *);
+	void (*atomic_begin)(struct drm_crtc *, struct drm_atomic_state *);
+	void (*atomic_flush)(struct drm_crtc *, struct drm_atomic_state *);
+	void (*atomic_enable)(struct drm_crtc *, struct drm_atomic_state *);
+	void (*atomic_disable)(struct drm_crtc *, struct drm_atomic_state *);
+	bool (*get_scanout_position)(struct drm_crtc *, bool, int *, int *, ktime_t *, ktime_t *, const struct drm_display_mode *);
+};
+
+struct drm_crtc_crc_entry {
+	bool has_frame_counter;
+	uint32_t frame;
+	uint32_t crcs[10];
+};
+
+struct drm_bridge_timings;
+
+struct drm_bridge_funcs;
+
+struct drm_bridge {
+	struct drm_private_obj base;
+	struct drm_device *dev;
+	struct drm_encoder *encoder;
+	struct list_head chain_node;
+	struct device_node *of_node;
+	struct list_head list;
+	const struct drm_bridge_timings *timings;
+	const struct drm_bridge_funcs *funcs;
+	void *driver_private;
+	enum drm_bridge_ops ops;
+	int type;
+	bool interlace_allowed;
+	bool pre_enable_prev_first;
+	struct i2c_adapter *ddc;
+	struct mutex hpd_mutex;
+	void (*hpd_cb)(void *, enum drm_connector_status);
+	void *hpd_data;
+};
+
+struct drm_bridge_timings {
+	u32 input_bus_flags;
+	u32 setup_time_ps;
+	u32 hold_time_ps;
+	bool dual_link;
+};
+
+struct drm_bridge_state;
+
+struct drm_bridge_funcs {
+	int (*attach)(struct drm_bridge *, enum drm_bridge_attach_flags);
+	void (*detach)(struct drm_bridge *);
+	enum drm_mode_status (*mode_valid)(struct drm_bridge *, const struct drm_display_info *, const struct drm_display_mode *);
+	bool (*mode_fixup)(struct drm_bridge *, const struct drm_display_mode *, struct drm_display_mode *);
+	void (*disable)(struct drm_bridge *);
+	void (*post_disable)(struct drm_bridge *);
+	void (*mode_set)(struct drm_bridge *, const struct drm_display_mode *, const struct drm_display_mode *);
+	void (*pre_enable)(struct drm_bridge *);
+	void (*enable)(struct drm_bridge *);
+	void (*atomic_pre_enable)(struct drm_bridge *, struct drm_bridge_state *);
+	void (*atomic_enable)(struct drm_bridge *, struct drm_bridge_state *);
+	void (*atomic_disable)(struct drm_bridge *, struct drm_bridge_state *);
+	void (*atomic_post_disable)(struct drm_bridge *, struct drm_bridge_state *);
+	struct drm_bridge_state * (*atomic_duplicate_state)(struct drm_bridge *);
+	void (*atomic_destroy_state)(struct drm_bridge *, struct drm_bridge_state *);
+	u32 * (*atomic_get_output_bus_fmts)(struct drm_bridge *, struct drm_bridge_state *, struct drm_crtc_state *, struct drm_connector_state *, unsigned int *);
+	u32 * (*atomic_get_input_bus_fmts)(struct drm_bridge *, struct drm_bridge_state *, struct drm_crtc_state *, struct drm_connector_state *, u32, unsigned int *);
+	int (*atomic_check)(struct drm_bridge *, struct drm_bridge_state *, struct drm_crtc_state *, struct drm_connector_state *);
+	struct drm_bridge_state * (*atomic_reset)(struct drm_bridge *);
+	enum drm_connector_status (*detect)(struct drm_bridge *);
+	int (*get_modes)(struct drm_bridge *, struct drm_connector *);
+	const struct drm_edid * (*edid_read)(struct drm_bridge *, struct drm_connector *);
+	struct edid * (*get_edid)(struct drm_bridge *, struct drm_connector *);
+	void (*hpd_notify)(struct drm_bridge *, enum drm_connector_status);
+	void (*hpd_enable)(struct drm_bridge *);
+	void (*hpd_disable)(struct drm_bridge *);
+	void (*debugfs_init)(struct drm_bridge *, struct dentry *);
+};
+
+struct drm_bus_cfg {
+	u32 format;
+	u32 flags;
+};
+
+struct drm_bridge_state {
+	struct drm_private_state base;
+	struct drm_bridge *bridge;
+	struct drm_bus_cfg input_bus_cfg;
+	struct drm_bus_cfg output_bus_cfg;
+};
+
+struct drm_connector_list_iter {
+	struct drm_device *dev;
+	struct drm_connector *conn;
+};
+
+struct drm_mode_rect {
+	__s32 x1;
+	__s32 y1;
+	__s32 x2;
+	__s32 y2;
+};
+
+struct drm_debugfs_entry {
+	struct drm_device *dev;
+	struct drm_debugfs_info file;
+	struct list_head list;
+};
+
+struct drm_mode_modeinfo {
+	__u32 clock;
+	__u16 hdisplay;
+	__u16 hsync_start;
+	__u16 hsync_end;
+	__u16 htotal;
+	__u16 hskew;
+	__u16 vdisplay;
+	__u16 vsync_start;
+	__u16 vsync_end;
+	__u16 vtotal;
+	__u16 vscan;
+	__u32 vrefresh;
+	__u32 flags;
+	__u32 type;
+	char name[32];
+};
+
+struct dma_fence_cb;
+
+typedef void (*dma_fence_func_t)(struct dma_fence *, struct dma_fence_cb *);
+
+struct dma_fence_cb {
+	struct list_head node;
+	dma_fence_func_t func;
+};
+
+struct sync_file {
+	struct file *file;
+	char user_name[32];
+	struct list_head sync_file_list;
+	wait_queue_head_t wq;
+	unsigned long flags;
+	struct dma_fence *fence;
+	struct dma_fence_cb cb;
+};
+
+struct drm_out_fence_state {
+	s32 __attribute__((btf_type_tag("user"))) *out_fence_ptr;
+	struct sync_file *sync_file;
+	int fd;
+};
+
+struct drm_mode_atomic {
+	__u32 flags;
+	__u32 count_objs;
+	__u64 objs_ptr;
+	__u64 count_props_ptr;
+	__u64 props_ptr;
+	__u64 prop_values_ptr;
+	__u64 reserved;
+	__u64 user_data;
+};
+
+struct drm_auth {
+	drm_magic_t magic;
+};
+
+struct drm_prop_enum_list {
+	int type;
+	const char *name;
+};
+
+struct est_timings {
+	u8 t1;
+	u8 t2;
+	u8 mfg_rsvd;
+};
+
+struct std_timing {
+	u8 hsize;
+	u8 vfreq_aspect;
+};
+
+struct detailed_pixel_timing {
+	u8 hactive_lo;
+	u8 hblank_lo;
+	u8 hactive_hblank_hi;
+	u8 vactive_lo;
+	u8 vblank_lo;
+	u8 vactive_vblank_hi;
+	u8 hsync_offset_lo;
+	u8 hsync_pulse_width_lo;
+	u8 vsync_offset_pulse_width_lo;
+	u8 hsync_vsync_offset_pulse_width_hi;
+	u8 width_mm_lo;
+	u8 height_mm_lo;
+	u8 width_height_mm_hi;
+	u8 hborder;
+	u8 vborder;
+	u8 misc;
+};
+
+struct detailed_data_string {
+	u8 str[13];
+};
+
+struct detailed_data_monitor_range {
+	u8 min_vfreq;
+	u8 max_vfreq;
+	u8 min_hfreq_khz;
+	u8 max_hfreq_khz;
+	u8 pixel_clock_mhz;
+	u8 flags;
+	union {
+		struct {
+			u8 reserved;
+			u8 hfreq_start_khz;
+			u8 c;
+			__le16 m;
+			u8 k;
+			u8 j;
+		} __attribute__((packed)) gtf2;
+		struct {
+			u8 version;
+			u8 data1;
+			u8 data2;
+			u8 supported_aspects;
+			u8 flags;
+			u8 supported_scalings;
+			u8 preferred_refresh;
+		} cvt;
+	} formula;
+};
+
+struct detailed_data_wpindex {
+	u8 white_yx_lo;
+	u8 white_x_hi;
+	u8 white_y_hi;
+	u8 gamma;
+};
+
+struct cvt_timing {
+	u8 code[3];
+};
+
+struct detailed_non_pixel {
+	u8 pad1;
+	u8 type;
+	u8 pad2;
+	union {
+		struct detailed_data_string str;
+		struct detailed_data_monitor_range range;
+		struct detailed_data_wpindex color;
+		struct std_timing timings[6];
+		struct cvt_timing cvt[4];
+	} data;
+};
+
+struct detailed_timing {
+	__le16 pixel_clock;
+	union {
+		struct detailed_pixel_timing pixel_data;
+		struct detailed_non_pixel other_data;
+	} data;
+};
+
+struct edid {
+	u8 header[8];
+	u8 mfg_id[2];
+	u8 prod_code[2];
+	u32 serial;
+	u8 mfg_week;
+	u8 mfg_year;
+	u8 version;
+	u8 revision;
+	u8 input;
+	u8 width_cm;
+	u8 height_cm;
+	u8 gamma;
+	u8 features;
+	u8 red_green_lo;
+	u8 blue_white_lo;
+	u8 red_x;
+	u8 red_y;
+	u8 green_x;
+	u8 green_y;
+	u8 blue_x;
+	u8 blue_y;
+	u8 white_x;
+	u8 white_y;
+	struct est_timings established_timings;
+	struct std_timing standard_timings[8];
+	struct detailed_timing detailed_timings[4];
+	u8 extensions;
+	u8 checksum;
+};
+
+struct drm_client_funcs;
+
+struct drm_client_dev {
+	struct drm_device *dev;
+	const char *name;
+	struct list_head list;
+	const struct drm_client_funcs *funcs;
+	struct drm_file *file;
+	struct mutex modeset_mutex;
+	struct drm_mode_set *modesets;
+	bool hotplug_failed;
+};
+
+struct drm_client_funcs {
+	struct module *owner;
+	void (*unregister)(struct drm_client_dev *);
+	int (*restore)(struct drm_client_dev *);
+	int (*hotplug)(struct drm_client_dev *);
+};
+
+struct drm_client_buffer {
+	struct drm_client_dev *client;
+	u32 pitch;
+	struct drm_gem_object *gem;
+	struct iosys_map map;
+	struct drm_framebuffer *fb;
+};
+
+struct drm_mode_fb_cmd {
+	__u32 fb_id;
+	__u32 width;
+	__u32 height;
+	__u32 pitch;
+	__u32 bpp;
+	__u32 depth;
+	__u32 handle;
+};
+
+struct drm_client_offset {
+	int x;
+	int y;
+};
+
+enum drm_color_lut_tests {
+	DRM_COLOR_LUT_EQUAL_CHANNELS = 1,
+	DRM_COLOR_LUT_NON_DECREASING = 2,
+};
+
+struct drm_color_lut {
+	__u16 red;
+	__u16 green;
+	__u16 blue;
+	__u16 reserved;
+};
+
+struct drm_mode_crtc_lut {
+	__u32 crtc_id;
+	__u32 gamma_size;
+	__u64 red;
+	__u64 green;
+	__u64 blue;
+};
+
+struct drm_conn_prop_enum_list {
+	int type;
+	const char *name;
+	struct ida ida;
+};
+
+typedef void (*drmres_release_t)(struct drm_device *, void *);
+
+struct drm_panel_funcs;
+
+struct drm_panel {
+	struct device *dev;
+	struct backlight_device *backlight;
+	const struct drm_panel_funcs *funcs;
+	int connector_type;
+	struct list_head list;
+	struct list_head followers;
+	struct mutex follower_lock;
+	bool prepare_prev_first;
+	bool prepared;
+	bool enabled;
+};
+
+struct drm_panel_funcs {
+	int (*prepare)(struct drm_panel *);
+	int (*enable)(struct drm_panel *);
+	int (*disable)(struct drm_panel *);
+	int (*unprepare)(struct drm_panel *);
+	int (*get_modes)(struct drm_panel *, struct drm_connector *);
+	enum drm_panel_orientation (*get_orientation)(struct drm_panel *);
+	int (*get_timings)(struct drm_panel *, unsigned int, struct display_timing *);
+	void (*debugfs_init)(struct drm_panel *, struct dentry *);
+};
+
+struct drm_mode_connector_set_property {
+	__u64 value;
+	__u32 prop_id;
+	__u32 connector_id;
+};
+
+struct drm_mode_obj_set_property {
+	__u64 value;
+	__u32 prop_id;
+	__u32 obj_id;
+	__u32 obj_type;
+};
+
+struct drm_mode_get_connector {
+	__u64 encoders_ptr;
+	__u64 modes_ptr;
+	__u64 props_ptr;
+	__u64 prop_values_ptr;
+	__u32 count_modes;
+	__u32 count_props;
+	__u32 count_encoders;
+	__u32 encoder_id;
+	__u32 connector_id;
+	__u32 connector_type;
+	__u32 connector_type_id;
+	__u32 connection;
+	__u32 mm_width;
+	__u32 mm_height;
+	__u32 subpixel;
+	__u32 pad;
+};
+
+struct drm_mode_crtc {
+	__u64 set_connectors_ptr;
+	__u32 count_connectors;
+	__u32 crtc_id;
+	__u32 fb_id;
+	__u32 x;
+	__u32 y;
+	__u32 gamma_size;
+	__u32 mode_valid;
+	struct drm_mode_modeinfo mode;
+};
+
+struct displayid_block {
+	u8 tag;
+	u8 rev;
+	u8 num_bytes;
+};
+
+struct displayid_header {
+	u8 rev;
+	u8 bytes;
+	u8 prod_id;
+	u8 ext_count;
+};
+
+struct displayid_iter {
+	const struct drm_edid *drm_edid;
+	const u8 *section;
+	int length;
+	int idx;
+	int ext_index;
+	u8 version;
+	u8 primary_use;
+};
+
+enum drm_minor_type {
+	DRM_MINOR_PRIMARY = 0,
+	DRM_MINOR_CONTROL = 1,
+	DRM_MINOR_RENDER = 2,
+	DRM_MINOR_ACCEL = 32,
+};
+
+struct drm_mode_map_dumb {
+	__u32 handle;
+	__u32 pad;
+	__u64 offset;
+};
+
+struct drm_mode_destroy_dumb {
+	__u32 handle;
+};
+
+struct edid_quirk {
+	u32 panel_id;
+	u32 quirks;
+};
+
+struct minimode {
+	short w;
+	short h;
+	short r;
+	short rb;
+};
+
+struct stereo_mandatory_mode {
+	int width;
+	int height;
+	int vrefresh;
+	unsigned int flags;
+};
+
+enum edid_block_status {
+	EDID_BLOCK_OK = 0,
+	EDID_BLOCK_READ_FAIL = 1,
+	EDID_BLOCK_NULL = 2,
+	EDID_BLOCK_ZERO = 3,
+	EDID_BLOCK_HEADER_CORRUPT = 4,
+	EDID_BLOCK_HEADER_REPAIR = 5,
+	EDID_BLOCK_HEADER_FIXED = 6,
+	EDID_BLOCK_CHECKSUM = 7,
+	EDID_BLOCK_VERSION = 8,
+};
+
+struct cea_db {
+	u8 tag_length;
+	u8 data[0];
+};
+
+struct displayid_vesa_vendor_specific_block {
+	struct displayid_block base;
+	u8 oui[3];
+	u8 data_structure_type;
+	u8 mso;
+};
+
+struct displayid_detailed_timings_1 {
+	u8 pixel_clock[3];
+	u8 flags;
+	u8 hactive[2];
+	u8 hblank[2];
+	u8 hsync[2];
+	u8 hsw[2];
+	u8 vactive[2];
+	u8 vblank[2];
+	u8 vsync[2];
+	u8 vsw[2];
+};
+
+struct displayid_detailed_timing_block {
+	struct displayid_block base;
+	struct displayid_detailed_timings_1 timings[0];
+};
+
+struct displayid_tiled_block {
+	struct displayid_block base;
+	u8 tile_cap;
+	u8 topo[3];
+	u8 tile_size[4];
+	u8 tile_pixel_bezel[5];
+	u8 topology_id[8];
+};
+
+typedef void detailed_cb(const struct detailed_timing *, void *);
+
+struct drm_edid_iter {
+	const struct drm_edid *drm_edid;
+	int index;
+};
+
+struct cea_db_iter {
+	struct drm_edid_iter edid_iter;
+	struct displayid_iter displayid_iter;
+	const u8 *collection;
+	int index;
+	int end;
+};
+
+struct cea_sad {
+	u8 format;
+	u8 channels;
+	u8 freq;
+	u8 byte2;
+};
+
+struct detailed_mode_closure {
+	struct drm_connector *connector;
+	const struct drm_edid *drm_edid;
+	bool preferred;
+	int modes;
+};
+
+typedef int read_block_fn(void *, u8 *, unsigned int, size_t);
+
+struct drm_mode_get_encoder {
+	__u32 encoder_id;
+	__u32 encoder_type;
+	__u32 crtc_id;
+	__u32 possible_crtcs;
+	__u32 possible_clones;
+};
+
+enum dma_resv_usage {
+	DMA_RESV_USAGE_KERNEL = 0,
+	DMA_RESV_USAGE_WRITE = 1,
+	DMA_RESV_USAGE_READ = 2,
+	DMA_RESV_USAGE_BOOKKEEP = 3,
+};
+
+struct drm_memory_stats {
+	u64 shared;
+	u64 private;
+	u64 resident;
+	u64 purgeable;
+	u64 active;
+};
+
+struct drm_mode_rmfb_work {
+	struct work_struct work;
+	struct list_head fbs;
+};
+
+struct drm_mode_fb_dirty_cmd {
+	__u32 fb_id;
+	__u32 flags;
+	__u32 color;
+	__u32 num_clips;
+	__u64 clips_ptr;
+};
+
+struct dma_buf_poll_cb_t {
+	struct dma_fence_cb cb;
+	wait_queue_head_t *poll;
+	__poll_t active;
+};
+
+struct dma_buf_ops;
+
+struct dma_buf_sysfs_entry;
+
+struct dma_buf {
+	size_t size;
+	struct file *file;
+	struct list_head attachments;
+	const struct dma_buf_ops *ops;
+	unsigned int vmapping_counter;
+	struct iosys_map vmap_ptr;
+	const char *exp_name;
+	const char *name;
+	spinlock_t name_lock;
+	struct module *owner;
+	struct list_head list_node;
+	void *priv;
+	struct dma_resv *resv;
+	wait_queue_head_t poll;
+	struct dma_buf_poll_cb_t cb_in;
+	struct dma_buf_poll_cb_t cb_out;
+	struct dma_buf_sysfs_entry *sysfs_entry;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct dma_buf_ops {
+	bool cache_sgt_mapping;
+	int (*attach)(struct dma_buf *, struct dma_buf_attachment *);
+	void (*detach)(struct dma_buf *, struct dma_buf_attachment *);
+	int (*pin)(struct dma_buf_attachment *);
+	void (*unpin)(struct dma_buf_attachment *);
+	struct sg_table * (*map_dma_buf)(struct dma_buf_attachment *, enum dma_data_direction);
+	void (*unmap_dma_buf)(struct dma_buf_attachment *, struct sg_table *, enum dma_data_direction);
+	void (*release)(struct dma_buf *);
+	int (*begin_cpu_access)(struct dma_buf *, enum dma_data_direction);
+	int (*begin_cpu_access_partial)(struct dma_buf *, enum dma_data_direction, unsigned int, unsigned int);
+	int (*end_cpu_access)(struct dma_buf *, enum dma_data_direction);
+	int (*end_cpu_access_partial)(struct dma_buf *, enum dma_data_direction, unsigned int, unsigned int);
+	int (*mmap)(struct dma_buf *, struct vm_area_struct *);
+	int (*vmap)(struct dma_buf *, struct iosys_map *);
+	void (*vunmap)(struct dma_buf *, struct iosys_map *);
+	int (*get_flags)(struct dma_buf *, unsigned long *);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct dma_buf_attach_ops;
+
+struct dma_buf_attachment {
+	struct dma_buf *dmabuf;
+	struct device *dev;
+	struct list_head node;
+	struct sg_table *sgt;
+	enum dma_data_direction dir;
+	bool peer2peer;
+	const struct dma_buf_attach_ops *importer_ops;
+	void *importer_priv;
+	void *priv;
+	unsigned long dma_map_attrs;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct dma_buf_attach_ops {
+	bool allow_peer2peer;
+	void (*move_notify)(struct dma_buf_attachment *);
+	u64 android_kabi_reserved1;
+};
+
+struct dma_buf_sysfs_entry {
+	union {
+		struct kobject kobj;
+		struct work_struct sysfs_add_work;
+	};
+	struct dma_buf *dmabuf;
+};
+
+struct drm_gem_close {
+	__u32 handle;
+	__u32 pad;
+};
+
+struct drm_gem_flink {
+	__u32 handle;
+	__u32 name;
+};
+
+struct drm_gem_open {
+	__u32 name;
+	__u32 handle;
+	__u64 size;
+};
+
+enum drm_stat_type {
+	_DRM_STAT_LOCK = 0,
+	_DRM_STAT_OPENS = 1,
+	_DRM_STAT_CLOSES = 2,
+	_DRM_STAT_IOCTLS = 3,
+	_DRM_STAT_LOCKS = 4,
+	_DRM_STAT_UNLOCKS = 5,
+	_DRM_STAT_VALUE = 6,
+	_DRM_STAT_BYTE = 7,
+	_DRM_STAT_COUNT = 8,
+	_DRM_STAT_IRQ = 9,
+	_DRM_STAT_PRIMARY = 10,
+	_DRM_STAT_SECONDARY = 11,
+	_DRM_STAT_DMA = 12,
+	_DRM_STAT_SPECIAL = 13,
+	_DRM_STAT_MISSED = 14,
+};
+
+struct drm_unique {
+	__kernel_size_t unique_len;
+	char __attribute__((btf_type_tag("user"))) *unique;
+};
+
+struct drm_client {
+	int idx;
+	int auth;
+	unsigned long pid;
+	unsigned long uid;
+	unsigned long magic;
+	unsigned long iocs;
+};
+
+struct drm_version {
+	int version_major;
+	int version_minor;
+	int version_patchlevel;
+	__kernel_size_t name_len;
+	char __attribute__((btf_type_tag("user"))) *name;
+	__kernel_size_t date_len;
+	char __attribute__((btf_type_tag("user"))) *date;
+	__kernel_size_t desc_len;
+	char __attribute__((btf_type_tag("user"))) *desc;
+};
+
+struct drm_stats {
+	unsigned long count;
+	struct {
+		unsigned long value;
+		enum drm_stat_type type;
+	} data[15];
+};
+
+struct drm_set_version {
+	int drm_di_major;
+	int drm_di_minor;
+	int drm_dd_major;
+	int drm_dd_minor;
+};
+
+struct drm_get_cap {
+	__u64 capability;
+	__u64 value;
+};
+
+struct drm_set_client_cap {
+	__u64 capability;
+	__u64 value;
+};
+
+struct drm_mode_create_lease {
+	__u64 object_ids;
+	__u32 object_count;
+	__u32 flags;
+	__u32 lessee_id;
+	__u32 fd;
+};
+
+struct drm_mode_list_lessees {
+	__u32 count_lessees;
+	__u32 pad;
+	__u64 lessees_ptr;
+};
+
+struct drm_mode_get_lease {
+	__u32 count_objects;
+	__u32 pad;
+	__u64 objects_ptr;
+};
+
+struct drm_mode_revoke_lease {
+	__u32 lessee_id;
+};
+
+struct drmres_node {
+	struct list_head entry;
+	drmres_release_t release;
+	const char *name;
+	size_t size;
+};
+
+struct drmres {
+	struct drmres_node node;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	u8 data[0];
+};
+
+enum drm_mm_insert_mode {
+	DRM_MM_INSERT_BEST = 0,
+	DRM_MM_INSERT_LOW = 1,
+	DRM_MM_INSERT_HIGH = 2,
+	DRM_MM_INSERT_EVICT = 3,
+	DRM_MM_INSERT_ONCE = 2147483648,
+	DRM_MM_INSERT_HIGHEST = 2147483650,
+	DRM_MM_INSERT_LOWEST = 2147483649,
+};
+
+struct drm_mm_scan {
+	struct drm_mm *mm;
+	u64 size;
+	u64 alignment;
+	u64 remainder_mask;
+	u64 range_start;
+	u64 range_end;
+	u64 hit_start;
+	u64 hit_end;
+	unsigned long color;
+	enum drm_mm_insert_mode mode;
+};
+
+struct drm_mode_card_res {
+	__u64 fb_id_ptr;
+	__u64 crtc_id_ptr;
+	__u64 connector_id_ptr;
+	__u64 encoder_id_ptr;
+	__u32 count_fbs;
+	__u32 count_crtcs;
+	__u32 count_connectors;
+	__u32 count_encoders;
+	__u32 min_width;
+	__u32 max_width;
+	__u32 min_height;
+	__u32 max_height;
+};
+
+struct drm_mode_obj_get_properties {
+	__u64 props_ptr;
+	__u64 prop_values_ptr;
+	__u32 count_props;
+	__u32 obj_id;
+	__u32 obj_type;
+};
+
+struct analog_param_range {
+	unsigned int min;
+	unsigned int typ;
+	unsigned int max;
+};
+
+struct analog_param_field {
+	unsigned int even;
+	unsigned int odd;
+};
+
+struct analog_parameters {
+	unsigned int num_lines;
+	unsigned int line_duration_ns;
+	struct analog_param_range hact_ns;
+	struct analog_param_range hfp_ns;
+	struct analog_param_range hslen_ns;
+	struct analog_param_range hbp_ns;
+	struct analog_param_range hblk_ns;
+	unsigned int bt601_hfp;
+	struct analog_param_field vfp_lines;
+	struct analog_param_field vslen_lines;
+	struct analog_param_field vbp_lines;
+};
+
+struct drm_named_mode {
+	const char *name;
+	unsigned int pixel_clock_khz;
+	unsigned int xres;
+	unsigned int yres;
+	unsigned int flags;
+	unsigned int tv_mode;
+};
+
+enum drm_mode_analog {
+	DRM_MODE_ANALOG_NTSC = 0,
+	DRM_MODE_ANALOG_PAL = 1,
+};
+
+enum drm_bus_flags {
+	DRM_BUS_FLAG_DE_LOW = 1,
+	DRM_BUS_FLAG_DE_HIGH = 2,
+	DRM_BUS_FLAG_PIXDATA_DRIVE_POSEDGE = 4,
+	DRM_BUS_FLAG_PIXDATA_DRIVE_NEGEDGE = 8,
+	DRM_BUS_FLAG_PIXDATA_SAMPLE_POSEDGE = 8,
+	DRM_BUS_FLAG_PIXDATA_SAMPLE_NEGEDGE = 4,
+	DRM_BUS_FLAG_DATA_MSB_TO_LSB = 16,
+	DRM_BUS_FLAG_DATA_LSB_TO_MSB = 32,
+	DRM_BUS_FLAG_SYNC_DRIVE_POSEDGE = 64,
+	DRM_BUS_FLAG_SYNC_DRIVE_NEGEDGE = 128,
+	DRM_BUS_FLAG_SYNC_SAMPLE_POSEDGE = 128,
+	DRM_BUS_FLAG_SYNC_SAMPLE_NEGEDGE = 64,
+	DRM_BUS_FLAG_SHARP_SIGNALS = 256,
+};
+
+struct drm_format_modifier {
+	__u64 formats;
+	__u32 offset;
+	__u32 pad;
+	__u64 modifier;
+};
+
+struct drm_format_modifier_blob {
+	__u32 version;
+	__u32 flags;
+	__u32 count_formats;
+	__u32 formats_offset;
+	__u32 count_modifiers;
+	__u32 modifiers_offset;
+};
+
+struct drm_mode_cursor2 {
+	__u32 flags;
+	__u32 crtc_id;
+	__s32 x;
+	__s32 y;
+	__u32 width;
+	__u32 height;
+	__u32 handle;
+	__s32 hot_x;
+	__s32 hot_y;
+};
+
+struct drm_mode_get_plane_res {
+	__u64 plane_id_ptr;
+	__u32 count_planes;
+};
+
+struct drm_mode_get_plane {
+	__u32 plane_id;
+	__u32 crtc_id;
+	__u32 fb_id;
+	__u32 possible_crtcs;
+	__u32 gamma_size;
+	__u32 count_format_types;
+	__u64 format_type_ptr;
+};
+
+struct drm_mode_set_plane {
+	__u32 plane_id;
+	__u32 crtc_id;
+	__u32 fb_id;
+	__u32 flags;
+	__s32 crtc_x;
+	__s32 crtc_y;
+	__u32 crtc_w;
+	__u32 crtc_h;
+	__u32 src_x;
+	__u32 src_y;
+	__u32 src_h;
+	__u32 src_w;
+};
+
+struct drm_mode_cursor {
+	__u32 flags;
+	__u32 crtc_id;
+	__s32 x;
+	__s32 y;
+	__u32 width;
+	__u32 height;
+	__u32 handle;
+};
+
+struct drm_mode_crtc_page_flip_target {
+	__u32 crtc_id;
+	__u32 fb_id;
+	__u32 flags;
+	__u32 sequence;
+	__u64 user_data;
+};
+
+struct drm_prime_member {
+	struct dma_buf *dma_buf;
+	uint32_t handle;
+	struct rb_node dmabuf_rb;
+	struct rb_node handle_rb;
+};
+
+struct dma_buf_export_info {
+	const char *exp_name;
+	struct module *owner;
+	const struct dma_buf_ops *ops;
+	size_t size;
+	int flags;
+	struct dma_resv *resv;
+	void *priv;
+	unsigned long dma_map_attrs;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct drm_prime_handle {
+	__u32 handle;
+	__u32 flags;
+	__s32 fd;
+};
+
+struct drm_print_iterator {
+	void *data;
+	ssize_t start;
+	ssize_t remain;
+	ssize_t offset;
+};
+
+struct drm_property_enum {
+	uint64_t value;
+	struct list_head head;
+	char name[32];
+};
+
+struct drm_mode_get_property {
+	__u64 values_ptr;
+	__u64 enum_blob_ptr;
+	__u32 prop_id;
+	__u32 flags;
+	char name[32];
+	__u32 count_values;
+	__u32 count_enum_blobs;
+};
+
+struct drm_mode_property_enum {
+	__u64 value;
+	char name[32];
+};
+
+struct drm_mode_get_blob {
+	__u32 blob_id;
+	__u32 length;
+	__u64 data;
+};
+
+struct drm_mode_create_blob {
+	__u64 data;
+	__u32 length;
+	__u32 blob_id;
+};
+
+struct drm_mode_destroy_blob {
+	__u32 blob_id;
+};
+
+enum dma_fence_flag_bits {
+	DMA_FENCE_FLAG_SIGNALED_BIT = 0,
+	DMA_FENCE_FLAG_TIMESTAMP_BIT = 1,
+	DMA_FENCE_FLAG_ENABLE_SIGNAL_BIT = 2,
+	DMA_FENCE_FLAG_USER_BITS = 3,
+};
+
+struct syncobj_wait_entry {
+	struct list_head node;
+	struct task_struct *task;
+	struct dma_fence *fence;
+	struct dma_fence_cb fence_cb;
+	u64 point;
+};
+
+struct drm_syncobj;
+
+struct syncobj_eventfd_entry {
+	struct list_head node;
+	struct dma_fence *fence;
+	struct dma_fence_cb fence_cb;
+	struct drm_syncobj *syncobj;
+	struct eventfd_ctx *ev_fd_ctx;
+	u64 point;
+	u32 flags;
+};
+
+struct drm_syncobj {
+	struct kref refcount;
+	struct dma_fence __attribute__((btf_type_tag("rcu"))) *fence;
+	struct list_head cb_list;
+	struct list_head ev_fd_list;
+	spinlock_t lock;
+	struct file *file;
+};
+
+struct dma_fence_chain {
+	struct dma_fence base;
+	struct dma_fence __attribute__((btf_type_tag("rcu"))) *prev;
+	u64 prev_seqno;
+	struct dma_fence *fence;
+	union {
+		struct dma_fence_cb cb;
+		struct irq_work work;
+	};
+	spinlock_t lock;
+};
+
+struct drm_syncobj_transfer {
+	__u32 src_handle;
+	__u32 dst_handle;
+	__u64 src_point;
+	__u64 dst_point;
+	__u32 flags;
+	__u32 pad;
+};
+
+struct dma_fence_unwrap {
+	struct dma_fence *chain;
+	struct dma_fence *array;
+	unsigned int index;
+};
+
+struct drm_syncobj_wait {
+	__u64 handles;
+	__s64 timeout_nsec;
+	__u32 count_handles;
+	__u32 flags;
+	__u32 first_signaled;
+	__u32 pad;
+};
+
+struct drm_syncobj_timeline_wait {
+	__u64 handles;
+	__u64 points;
+	__s64 timeout_nsec;
+	__u32 count_handles;
+	__u32 flags;
+	__u32 first_signaled;
+	__u32 pad;
+};
+
+struct drm_syncobj_create {
+	__u32 handle;
+	__u32 flags;
+};
+
+struct drm_syncobj_destroy {
+	__u32 handle;
+	__u32 pad;
+};
+
+struct drm_syncobj_handle {
+	__u32 handle;
+	__u32 flags;
+	__s32 fd;
+	__u32 pad;
+};
+
+struct drm_syncobj_eventfd {
+	__u32 handle;
+	__u32 flags;
+	__u64 point;
+	__s32 fd;
+	__u32 pad;
+};
+
+struct drm_syncobj_array {
+	__u64 handles;
+	__u32 count_handles;
+	__u32 pad;
+};
+
+struct drm_syncobj_timeline_array {
+	__u64 handles;
+	__u64 points;
+	__u32 count_handles;
+	__u32 flags;
+};
+
+struct class_attribute {
+	struct attribute attr;
+	ssize_t (*show)(const struct class *, const struct class_attribute *, char *);
+	ssize_t (*store)(const struct class *, const struct class_attribute *, const char *, size_t);
+};
+
+struct class_attribute_string {
+	struct class_attribute attr;
+	char *str;
+};
+
+struct component_ops {
+	int (*bind)(struct device *, struct device *, void *);
+	void (*unbind)(struct device *, struct device *, void *);
+};
+
+typedef void (*btf_trace_drm_vblank_event)(void *, int, unsigned int, ktime_t, bool);
+
+typedef void (*btf_trace_drm_vblank_event_queued)(void *, struct drm_file *, int, unsigned int);
+
+typedef void (*btf_trace_drm_vblank_event_delivered)(void *, struct drm_file *, int, unsigned int);
+
+struct trace_event_raw_drm_vblank_event {
+	struct trace_entry ent;
+	int crtc;
+	unsigned int seq;
+	ktime_t time;
+	bool high_prec;
+	char __data[0];
+};
+
+struct trace_event_raw_drm_vblank_event_queued {
+	struct trace_entry ent;
+	struct drm_file *file;
+	int crtc;
+	unsigned int seq;
+	char __data[0];
+};
+
+struct trace_event_raw_drm_vblank_event_delivered {
+	struct trace_entry ent;
+	struct drm_file *file;
+	int crtc;
+	unsigned int seq;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_drm_vblank_event {};
+
+struct trace_event_data_offsets_drm_vblank_event_queued {};
+
+struct trace_event_data_offsets_drm_vblank_event_delivered {};
+
+enum drm_vblank_seq_type {
+	_DRM_VBLANK_ABSOLUTE = 0,
+	_DRM_VBLANK_RELATIVE = 1,
+	_DRM_VBLANK_HIGH_CRTC_MASK = 62,
+	_DRM_VBLANK_EVENT = 67108864,
+	_DRM_VBLANK_FLIP = 134217728,
+	_DRM_VBLANK_NEXTONMISS = 268435456,
+	_DRM_VBLANK_SECONDARY = 536870912,
+	_DRM_VBLANK_SIGNAL = 1073741824,
+};
+
+struct drm_wait_vblank_request {
+	enum drm_vblank_seq_type type;
+	unsigned int sequence;
+	unsigned long signal;
+};
+
+struct drm_wait_vblank_reply {
+	enum drm_vblank_seq_type type;
+	unsigned int sequence;
+	long tval_sec;
+	long tval_usec;
+};
+
+union drm_wait_vblank {
+	struct drm_wait_vblank_request request;
+	struct drm_wait_vblank_reply reply;
+};
+
+typedef bool (*drm_vblank_get_scanout_position_func)(struct drm_crtc *, bool, int *, int *, ktime_t *, ktime_t *, const struct drm_display_mode *);
+
+struct drm_modeset_ctl {
+	__u32 crtc;
+	__u32 cmd;
+};
+
+struct drm_crtc_get_sequence {
+	__u32 crtc_id;
+	__u32 active;
+	__u64 sequence;
+	__s64 sequence_ns;
+};
+
+struct drm_crtc_queue_sequence {
+	__u32 crtc_id;
+	__u32 flags;
+	__u64 sequence;
+	__u64 user_data;
+};
+
+struct drm_vblank_work {
+	struct kthread_work base;
+	struct drm_vblank_crtc *vblank;
+	u64 count;
+	int cancelling;
+	struct list_head node;
+};
+
+struct drm_vma_offset_file {
+	struct rb_node vm_rb;
+	struct drm_file *vm_tag;
+	unsigned long vm_count;
+};
+
+struct drm_gpuva_op;
+
+struct drm_gpuva_fn_ops {
+	struct drm_gpuva_op * (*op_alloc)();
+	void (*op_free)(struct drm_gpuva_op *);
+	int (*sm_step_map)(struct drm_gpuva_op *, void *);
+	int (*sm_step_remap)(struct drm_gpuva_op *, void *);
+	int (*sm_step_unmap)(struct drm_gpuva_op *, void *);
+};
+
+struct drm_gpuva_op_map {
+	struct {
+		u64 addr;
+		u64 range;
+	} va;
+	struct {
+		u64 offset;
+		struct drm_gem_object *obj;
+	} gem;
+};
+
+struct drm_gpuva_op_unmap;
+
+struct drm_gpuva_op_remap {
+	struct drm_gpuva_op_map *prev;
+	struct drm_gpuva_op_map *next;
+	struct drm_gpuva_op_unmap *unmap;
+};
+
+struct drm_gpuva;
+
+struct drm_gpuva_op_unmap {
+	struct drm_gpuva *va;
+	bool keep;
+};
+
+struct drm_gpuva_op_prefetch {
+	struct drm_gpuva *va;
+};
+
+enum drm_gpuva_op_type {
+	DRM_GPUVA_OP_MAP = 0,
+	DRM_GPUVA_OP_REMAP = 1,
+	DRM_GPUVA_OP_UNMAP = 2,
+	DRM_GPUVA_OP_PREFETCH = 3,
+};
+
+struct drm_gpuva_op {
+	struct list_head entry;
+	enum drm_gpuva_op_type op;
+	union {
+		struct drm_gpuva_op_map map;
+		struct drm_gpuva_op_remap remap;
+		struct drm_gpuva_op_unmap unmap;
+		struct drm_gpuva_op_prefetch prefetch;
+	};
+};
+
+enum drm_gpuva_flags {
+	DRM_GPUVA_INVALIDATED = 1,
+	DRM_GPUVA_SPARSE = 2,
+	DRM_GPUVA_USERBITS = 4,
+};
+
+struct drm_gpuva_manager;
+
+struct drm_gpuva {
+	struct drm_gpuva_manager *mgr;
+	enum drm_gpuva_flags flags;
+	struct {
+		u64 addr;
+		u64 range;
+	} va;
+	struct {
+		u64 offset;
+		struct drm_gem_object *obj;
+		struct list_head entry;
+	} gem;
+	struct {
+		struct rb_node node;
+		struct list_head entry;
+		u64 __subtree_last;
+	} rb;
+};
+
+struct drm_gpuva_manager {
+	const char *name;
+	u64 mm_start;
+	u64 mm_range;
+	struct {
+		struct rb_root_cached tree;
+		struct list_head list;
+	} rb;
+	struct drm_gpuva kernel_alloc_node;
+	const struct drm_gpuva_fn_ops *ops;
+};
+
+struct drm_gpuva_ops {
+	struct list_head list;
+};
+
+typedef int drm_ioctl_compat_t(struct file *, unsigned int, unsigned long);
+
+struct drm_version_32 {
+	int version_major;
+	int version_minor;
+	int version_patchlevel;
+	u32 name_len;
+	u32 name;
+	u32 date_len;
+	u32 date;
+	u32 desc_len;
+	u32 desc;
+};
+
+typedef struct drm_version_32 drm_version32_t;
+
+struct drm_unique32 {
+	u32 unique_len;
+	u32 unique;
+};
+
+typedef struct drm_unique32 drm_unique32_t;
+
+struct drm_client32 {
+	int idx;
+	int auth;
+	u32 pid;
+	u32 uid;
+	u32 magic;
+	u32 iocs;
+};
+
+typedef struct drm_client32 drm_client32_t;
+
+struct drm_stats32 {
+	u32 count;
+	struct {
+		u32 value;
+		enum drm_stat_type type;
+	} data[15];
+};
+
+typedef struct drm_stats32 drm_stats32_t;
+
+struct drm_wait_vblank_request32 {
+	enum drm_vblank_seq_type type;
+	unsigned int sequence;
+	u32 signal;
+};
+
+struct drm_wait_vblank_reply32 {
+	enum drm_vblank_seq_type type;
+	unsigned int sequence;
+	s32 tval_sec;
+	s32 tval_usec;
+};
+
+union drm_wait_vblank32 {
+	struct drm_wait_vblank_request32 request;
+	struct drm_wait_vblank_reply32 reply;
+};
+
+typedef union drm_wait_vblank32 drm_wait_vblank32_t;
+
+enum {
+	FB_BLANK_UNBLANK = 0,
+	FB_BLANK_NORMAL = 1,
+	FB_BLANK_VSYNC_SUSPEND = 2,
+	FB_BLANK_HSYNC_SUSPEND = 3,
+	FB_BLANK_POWERDOWN = 4,
+};
+
+struct drm_panel_follower_funcs;
+
+struct drm_panel_follower {
+	const struct drm_panel_follower_funcs *funcs;
+	struct list_head list;
+	struct drm_panel *panel;
+};
+
+struct drm_panel_follower_funcs {
+	int (*panel_prepared)(struct drm_panel_follower *);
+	int (*panel_unpreparing)(struct drm_panel_follower *);
+};
+
+enum drm_of_lvds_pixels {
+	DRM_OF_LVDS_EVEN = 1,
+	DRM_OF_LVDS_ODD = 2,
+};
+
+enum drm_lvds_dual_link_pixels {
+	DRM_LVDS_DUAL_LINK_EVEN_ODD_PIXELS = 0,
+	DRM_LVDS_DUAL_LINK_ODD_EVEN_PIXELS = 1,
+};
+
+enum mipi_dsi_pixel_format {
+	MIPI_DSI_FMT_RGB888 = 0,
+	MIPI_DSI_FMT_RGB666 = 1,
+	MIPI_DSI_FMT_RGB666_PACKED = 2,
+	MIPI_DSI_FMT_RGB565 = 3,
+};
+
+struct component_master_ops {
+	int (*bind)(struct device *);
+	void (*unbind)(struct device *);
+};
+
+struct of_endpoint {
+	unsigned int port;
+	unsigned int id;
+	const struct device_node *local_node;
+};
+
+struct mipi_dsi_host_ops;
+
+struct mipi_dsi_host {
+	struct device *dev;
+	const struct mipi_dsi_host_ops *ops;
+	struct list_head list;
+};
+
+struct mipi_dsi_device;
+
+struct mipi_dsi_msg;
+
+struct mipi_dsi_host_ops {
+	int (*attach)(struct mipi_dsi_host *, struct mipi_dsi_device *);
+	int (*detach)(struct mipi_dsi_host *, struct mipi_dsi_device *);
+	ssize_t (*transfer)(struct mipi_dsi_host *, const struct mipi_dsi_msg *);
+};
+
+struct drm_dsc_config;
+
+struct mipi_dsi_device {
+	struct mipi_dsi_host *host;
+	struct device dev;
+	bool attached;
+	char name[20];
+	unsigned int channel;
+	unsigned int lanes;
+	enum mipi_dsi_pixel_format format;
+	unsigned long mode_flags;
+	unsigned long hs_rate;
+	unsigned long lp_rate;
+	struct drm_dsc_config *dsc;
+};
+
+struct mipi_dsi_msg {
+	u8 channel;
+	u8 type;
+	u16 flags;
+	size_t tx_len;
+	const void *tx_buf;
+	size_t rx_len;
+	void *rx_buf;
+};
+
+struct drm_info_list;
+
+struct drm_info_node {
+	struct drm_minor *minor;
+	const struct drm_info_list *info_ent;
+	struct list_head list;
+	struct dentry *dent;
+};
+
+struct drm_info_list {
+	const char *name;
+	int (*show)(struct seq_file *, void *);
+	u32 driver_features;
+	void *data;
+};
+
+struct drm_gem_shmem_object {
+	struct drm_gem_object base;
+	struct page **pages;
+	unsigned int pages_use_count;
+	int madv;
+	struct list_head madv_list;
+	struct sg_table *sgt;
+	void *vaddr;
+	unsigned int vmap_use_count;
+	bool pages_mark_dirty_on_put: 1;
+	bool pages_mark_accessed_on_put: 1;
+	bool map_wc: 1;
+};
+
+struct drm_bridge_connector {
+	struct drm_connector base;
+	struct drm_encoder *encoder;
+	struct drm_bridge *bridge_edid;
+	struct drm_bridge *bridge_hpd;
+	struct drm_bridge *bridge_detect;
+	struct drm_bridge *bridge_modes;
+};
+
+struct drm_atomic_helper_damage_iter {
+	struct drm_rect plane_src;
+	const struct drm_rect *clips;
+	uint32_t num_clips;
+	uint32_t curr_clip;
+	bool full_update;
+};
+
+enum i2c_alert_protocol {
+	I2C_PROTOCOL_SMBUS_ALERT = 0,
+	I2C_PROTOCOL_SMBUS_HOST_NOTIFY = 1,
+};
+
+struct i2c_device_id;
+
+struct i2c_board_info;
+
+struct i2c_driver {
+	unsigned int class;
+	int (*probe)(struct i2c_client *);
+	void (*remove)(struct i2c_client *);
+	void (*shutdown)(struct i2c_client *);
+	void (*alert)(struct i2c_client *, enum i2c_alert_protocol, unsigned int);
+	int (*command)(struct i2c_client *, unsigned int, void *);
+	struct device_driver driver;
+	const struct i2c_device_id *id_table;
+	int (*detect)(struct i2c_client *, struct i2c_board_info *);
+	const unsigned short *address_list;
+	struct list_head clients;
+	u32 flags;
+};
+
+struct i2c_device_id {
+	char name[20];
+	kernel_ulong_t driver_data;
+};
+
+struct i2c_board_info {
+	char type[20];
+	unsigned short flags;
+	unsigned short addr;
+	const char *dev_name;
+	void *platform_data;
+	struct device_node *of_node;
+	struct fwnode_handle *fwnode;
+	const struct software_node *swnode;
+	const struct resource *resources;
+	unsigned int num_resources;
+	int irq;
+};
+
+struct drm_encoder_slave;
+
+struct drm_i2c_encoder_driver {
+	struct i2c_driver i2c_driver;
+	int (*encoder_init)(struct i2c_client *, struct drm_device *, struct drm_encoder_slave *);
+};
+
+struct drm_encoder_slave_funcs;
+
+struct drm_encoder_slave {
+	struct drm_encoder base;
+	const struct drm_encoder_slave_funcs *slave_funcs;
+	void *slave_priv;
+	void *bus_priv;
+};
+
+struct drm_encoder_slave_funcs {
+	void (*set_config)(struct drm_encoder *, void *);
+	void (*destroy)(struct drm_encoder *);
+	void (*dpms)(struct drm_encoder *, int);
+	void (*save)(struct drm_encoder *);
+	void (*restore)(struct drm_encoder *);
+	bool (*mode_fixup)(struct drm_encoder *, const struct drm_display_mode *, struct drm_display_mode *);
+	int (*mode_valid)(struct drm_encoder *, struct drm_display_mode *);
+	void (*mode_set)(struct drm_encoder *, struct drm_display_mode *, struct drm_display_mode *);
+	enum drm_connector_status (*detect)(struct drm_encoder *, struct drm_connector *);
+	int (*get_modes)(struct drm_encoder *, struct drm_connector *);
+	int (*create_resources)(struct drm_encoder *, struct drm_connector *);
+	int (*set_property)(struct drm_encoder *, struct drm_connector *, struct drm_property *, uint64_t);
+};
+
+struct drm_flip_work;
+
+typedef void (*drm_flip_func_t)(struct drm_flip_work *, void *);
+
+struct drm_flip_work {
+	const char *name;
+	drm_flip_func_t func;
+	struct work_struct worker;
+	struct list_head queued;
+	struct list_head commited;
+	spinlock_t lock;
+};
+
+struct drm_flip_task {
+	struct list_head node;
+	void *data;
+};
+
+struct drm_shadow_plane_state {
+	struct drm_plane_state base;
+	struct iosys_map map[4];
+	struct iosys_map data[4];
+};
+
+struct drm_simple_display_pipe_funcs;
+
+struct drm_simple_display_pipe {
+	struct drm_crtc crtc;
+	struct drm_plane plane;
+	struct drm_encoder encoder;
+	struct drm_connector *connector;
+	const struct drm_simple_display_pipe_funcs *funcs;
+};
+
+struct drm_simple_display_pipe_funcs {
+	enum drm_mode_status (*mode_valid)(struct drm_simple_display_pipe *, const struct drm_display_mode *);
+	void (*enable)(struct drm_simple_display_pipe *, struct drm_crtc_state *, struct drm_plane_state *);
+	void (*disable)(struct drm_simple_display_pipe *);
+	int (*check)(struct drm_simple_display_pipe *, struct drm_plane_state *, struct drm_crtc_state *);
+	void (*update)(struct drm_simple_display_pipe *, struct drm_plane_state *);
+	int (*prepare_fb)(struct drm_simple_display_pipe *, struct drm_plane_state *);
+	void (*cleanup_fb)(struct drm_simple_display_pipe *, struct drm_plane_state *);
+	int (*begin_fb_access)(struct drm_simple_display_pipe *, struct drm_plane_state *);
+	void (*end_fb_access)(struct drm_simple_display_pipe *, struct drm_plane_state *);
+	int (*enable_vblank)(struct drm_simple_display_pipe *);
+	void (*disable_vblank)(struct drm_simple_display_pipe *);
+	void (*reset_crtc)(struct drm_simple_display_pipe *);
+	struct drm_crtc_state * (*duplicate_crtc_state)(struct drm_simple_display_pipe *);
+	void (*destroy_crtc_state)(struct drm_simple_display_pipe *, struct drm_crtc_state *);
+	void (*reset_plane)(struct drm_simple_display_pipe *);
+	struct drm_plane_state * (*duplicate_plane_state)(struct drm_simple_display_pipe *);
+	void (*destroy_plane_state)(struct drm_simple_display_pipe *, struct drm_plane_state *);
+};
+
+struct drm_afbc_framebuffer {
+	struct drm_framebuffer base;
+	u32 block_width;
+	u32 block_height;
+	u32 aligned_width;
+	u32 aligned_height;
+	u32 offset;
+	u32 afbc_size;
+};
+
+struct drm_fb_helper_funcs;
+
+struct drm_fb_helper {
+	struct drm_client_dev client;
+	struct drm_client_buffer *buffer;
+	struct drm_framebuffer *fb;
+	struct drm_device *dev;
+	const struct drm_fb_helper_funcs *funcs;
+	struct fb_info *info;
+	u32 pseudo_palette[17];
+	struct drm_clip_rect damage_clip;
+	spinlock_t damage_lock;
+	struct work_struct damage_work;
+	struct work_struct resume_work;
+	struct mutex lock;
+	struct list_head kernel_fb_list;
+	bool delayed_hotplug;
+	bool deferred_setup;
+	int preferred_bpp;
+};
+
+struct drm_fb_helper_surface_size;
+
+struct drm_fb_helper_funcs {
+	int (*fb_probe)(struct drm_fb_helper *, struct drm_fb_helper_surface_size *);
+	int (*fb_dirty)(struct drm_fb_helper *, struct drm_clip_rect *);
+};
+
+struct drm_fb_helper_surface_size {
+	u32 fb_width;
+	u32 fb_height;
+	u32 surface_width;
+	u32 surface_height;
+	u32 surface_bpp;
+	u32 surface_depth;
+};
+
+struct ewma_psr_time {
+	unsigned long internal;
+};
+
+struct drm_self_refresh_data {
+	struct drm_crtc *crtc;
+	struct delayed_work entry_work;
+	struct mutex avg_mutex;
+	struct ewma_psr_time entry_avg_ms;
+	struct ewma_psr_time exit_avg_ms;
+};
+
+struct panel_bridge {
+	struct drm_bridge bridge;
+	struct drm_connector connector;
+	struct drm_panel *panel;
+	u32 connector_type;
+};
+
+enum {
+	MIPI_DSI_V_SYNC_START = 1,
+	MIPI_DSI_V_SYNC_END = 17,
+	MIPI_DSI_H_SYNC_START = 33,
+	MIPI_DSI_H_SYNC_END = 49,
+	MIPI_DSI_COMPRESSION_MODE = 7,
+	MIPI_DSI_END_OF_TRANSMISSION = 8,
+	MIPI_DSI_COLOR_MODE_OFF = 2,
+	MIPI_DSI_COLOR_MODE_ON = 18,
+	MIPI_DSI_SHUTDOWN_PERIPHERAL = 34,
+	MIPI_DSI_TURN_ON_PERIPHERAL = 50,
+	MIPI_DSI_GENERIC_SHORT_WRITE_0_PARAM = 3,
+	MIPI_DSI_GENERIC_SHORT_WRITE_1_PARAM = 19,
+	MIPI_DSI_GENERIC_SHORT_WRITE_2_PARAM = 35,
+	MIPI_DSI_GENERIC_READ_REQUEST_0_PARAM = 4,
+	MIPI_DSI_GENERIC_READ_REQUEST_1_PARAM = 20,
+	MIPI_DSI_GENERIC_READ_REQUEST_2_PARAM = 36,
+	MIPI_DSI_DCS_SHORT_WRITE = 5,
+	MIPI_DSI_DCS_SHORT_WRITE_PARAM = 21,
+	MIPI_DSI_DCS_READ = 6,
+	MIPI_DSI_EXECUTE_QUEUE = 22,
+	MIPI_DSI_SET_MAXIMUM_RETURN_PACKET_SIZE = 55,
+	MIPI_DSI_NULL_PACKET = 9,
+	MIPI_DSI_BLANKING_PACKET = 25,
+	MIPI_DSI_GENERIC_LONG_WRITE = 41,
+	MIPI_DSI_DCS_LONG_WRITE = 57,
+	MIPI_DSI_PICTURE_PARAMETER_SET = 10,
+	MIPI_DSI_COMPRESSED_PIXEL_STREAM = 11,
+	MIPI_DSI_LOOSELY_PACKED_PIXEL_STREAM_YCBCR20 = 12,
+	MIPI_DSI_PACKED_PIXEL_STREAM_YCBCR24 = 28,
+	MIPI_DSI_PACKED_PIXEL_STREAM_YCBCR16 = 44,
+	MIPI_DSI_PACKED_PIXEL_STREAM_30 = 13,
+	MIPI_DSI_PACKED_PIXEL_STREAM_36 = 29,
+	MIPI_DSI_PACKED_PIXEL_STREAM_YCBCR12 = 61,
+	MIPI_DSI_PACKED_PIXEL_STREAM_16 = 14,
+	MIPI_DSI_PACKED_PIXEL_STREAM_18 = 30,
+	MIPI_DSI_PIXEL_STREAM_3BYTE_18 = 46,
+	MIPI_DSI_PACKED_PIXEL_STREAM_24 = 62,
+};
+
+enum {
+	MIPI_DCS_NOP = 0,
+	MIPI_DCS_SOFT_RESET = 1,
+	MIPI_DCS_GET_COMPRESSION_MODE = 3,
+	MIPI_DCS_GET_DISPLAY_ID = 4,
+	MIPI_DCS_GET_ERROR_COUNT_ON_DSI = 5,
+	MIPI_DCS_GET_RED_CHANNEL = 6,
+	MIPI_DCS_GET_GREEN_CHANNEL = 7,
+	MIPI_DCS_GET_BLUE_CHANNEL = 8,
+	MIPI_DCS_GET_DISPLAY_STATUS = 9,
+	MIPI_DCS_GET_POWER_MODE = 10,
+	MIPI_DCS_GET_ADDRESS_MODE = 11,
+	MIPI_DCS_GET_PIXEL_FORMAT = 12,
+	MIPI_DCS_GET_DISPLAY_MODE = 13,
+	MIPI_DCS_GET_SIGNAL_MODE = 14,
+	MIPI_DCS_GET_DIAGNOSTIC_RESULT = 15,
+	MIPI_DCS_ENTER_SLEEP_MODE = 16,
+	MIPI_DCS_EXIT_SLEEP_MODE = 17,
+	MIPI_DCS_ENTER_PARTIAL_MODE = 18,
+	MIPI_DCS_ENTER_NORMAL_MODE = 19,
+	MIPI_DCS_GET_IMAGE_CHECKSUM_RGB = 20,
+	MIPI_DCS_GET_IMAGE_CHECKSUM_CT = 21,
+	MIPI_DCS_EXIT_INVERT_MODE = 32,
+	MIPI_DCS_ENTER_INVERT_MODE = 33,
+	MIPI_DCS_SET_GAMMA_CURVE = 38,
+	MIPI_DCS_SET_DISPLAY_OFF = 40,
+	MIPI_DCS_SET_DISPLAY_ON = 41,
+	MIPI_DCS_SET_COLUMN_ADDRESS = 42,
+	MIPI_DCS_SET_PAGE_ADDRESS = 43,
+	MIPI_DCS_WRITE_MEMORY_START = 44,
+	MIPI_DCS_WRITE_LUT = 45,
+	MIPI_DCS_READ_MEMORY_START = 46,
+	MIPI_DCS_SET_PARTIAL_ROWS = 48,
+	MIPI_DCS_SET_PARTIAL_COLUMNS = 49,
+	MIPI_DCS_SET_SCROLL_AREA = 51,
+	MIPI_DCS_SET_TEAR_OFF = 52,
+	MIPI_DCS_SET_TEAR_ON = 53,
+	MIPI_DCS_SET_ADDRESS_MODE = 54,
+	MIPI_DCS_SET_SCROLL_START = 55,
+	MIPI_DCS_EXIT_IDLE_MODE = 56,
+	MIPI_DCS_ENTER_IDLE_MODE = 57,
+	MIPI_DCS_SET_PIXEL_FORMAT = 58,
+	MIPI_DCS_WRITE_MEMORY_CONTINUE = 60,
+	MIPI_DCS_SET_3D_CONTROL = 61,
+	MIPI_DCS_READ_MEMORY_CONTINUE = 62,
+	MIPI_DCS_GET_3D_CONTROL = 63,
+	MIPI_DCS_SET_VSYNC_TIMING = 64,
+	MIPI_DCS_SET_TEAR_SCANLINE = 68,
+	MIPI_DCS_GET_SCANLINE = 69,
+	MIPI_DCS_SET_DISPLAY_BRIGHTNESS = 81,
+	MIPI_DCS_GET_DISPLAY_BRIGHTNESS = 82,
+	MIPI_DCS_WRITE_CONTROL_DISPLAY = 83,
+	MIPI_DCS_GET_CONTROL_DISPLAY = 84,
+	MIPI_DCS_WRITE_POWER_SAVE = 85,
+	MIPI_DCS_GET_POWER_SAVE = 86,
+	MIPI_DCS_SET_CABC_MIN_BRIGHTNESS = 94,
+	MIPI_DCS_GET_CABC_MIN_BRIGHTNESS = 95,
+	MIPI_DCS_READ_DDB_START = 161,
+	MIPI_DCS_READ_PPS_START = 162,
+	MIPI_DCS_READ_DDB_CONTINUE = 168,
+	MIPI_DCS_READ_PPS_CONTINUE = 169,
+};
+
+enum mipi_dsi_dcs_tear_mode {
+	MIPI_DSI_DCS_TEAR_MODE_VBLANK = 0,
+	MIPI_DSI_DCS_TEAR_MODE_VHBLANK = 1,
+};
+
+struct drm_dsc_rc_range_parameters {
+	u8 range_min_qp;
+	u8 range_max_qp;
+	u8 range_bpg_offset;
+};
+
+struct drm_dsc_config {
+	u8 line_buf_depth;
+	u8 bits_per_component;
+	bool convert_rgb;
+	u8 slice_count;
+	u16 slice_width;
+	u16 slice_height;
+	bool simple_422;
+	u16 pic_width;
+	u16 pic_height;
+	u8 rc_tgt_offset_high;
+	u8 rc_tgt_offset_low;
+	u16 bits_per_pixel;
+	u8 rc_edge_factor;
+	u8 rc_quant_incr_limit1;
+	u8 rc_quant_incr_limit0;
+	u16 initial_xmit_delay;
+	u16 initial_dec_delay;
+	bool block_pred_enable;
+	u8 first_line_bpg_offset;
+	u16 initial_offset;
+	u16 rc_buf_thresh[14];
+	struct drm_dsc_rc_range_parameters rc_range_params[15];
+	u16 rc_model_size;
+	u8 flatness_min_qp;
+	u8 flatness_max_qp;
+	u8 initial_scale_value;
+	u16 scale_decrement_interval;
+	u16 scale_increment_interval;
+	u16 nfl_bpg_offset;
+	u16 slice_bpg_offset;
+	u16 final_offset;
+	bool vbr_enable;
+	u8 mux_word_size;
+	u16 slice_chunk_size;
+	u16 rc_bits;
+	u8 dsc_version_minor;
+	u8 dsc_version_major;
+	bool native_422;
+	bool native_420;
+	u8 second_line_bpg_offset;
+	u16 nsl_bpg_offset;
+	u16 second_line_offset_adj;
+};
+
+struct mipi_dsi_driver {
+	struct device_driver driver;
+	int (*probe)(struct mipi_dsi_device *);
+	void (*remove)(struct mipi_dsi_device *);
+	void (*shutdown)(struct mipi_dsi_device *);
+};
+
+struct mipi_dsi_device_info {
+	char type[20];
+	u32 channel;
+	struct device_node *node;
+};
+
+struct mipi_dsi_packet {
+	size_t size;
+	u8 header[4];
+	size_t payload_length;
+	const u8 *payload;
+};
+
+struct drm_dsc_picture_parameter_set {
+	u8 dsc_version;
+	u8 pps_identifier;
+	u8 pps_reserved;
+	u8 pps_3;
+	u8 pps_4;
+	u8 bits_per_pixel_low;
+	__be16 pic_height;
+	__be16 pic_width;
+	__be16 slice_height;
+	__be16 slice_width;
+	__be16 chunk_size;
+	u8 initial_xmit_delay_high;
+	u8 initial_xmit_delay_low;
+	__be16 initial_dec_delay;
+	u8 pps20_reserved;
+	u8 initial_scale_value;
+	__be16 scale_increment_interval;
+	u8 scale_decrement_interval_high;
+	u8 scale_decrement_interval_low;
+	u8 pps26_reserved;
+	u8 first_line_bpg_offset;
+	__be16 nfl_bpg_offset;
+	__be16 slice_bpg_offset;
+	__be16 initial_offset;
+	__be16 final_offset;
+	u8 flatness_min_qp;
+	u8 flatness_max_qp;
+	__be16 rc_model_size;
+	u8 rc_edge_factor;
+	u8 rc_quant_incr_limit0;
+	u8 rc_quant_incr_limit1;
+	u8 rc_tgt_offset;
+	u8 rc_buf_thresh[14];
+	__be16 rc_range_parameters[15];
+	u8 native_422_420;
+	u8 second_line_bpg_offset;
+	__be16 nsl_bpg_offset;
+	__be16 second_line_offset_adj;
+	u32 pps_long_94_reserved;
+	u32 pps_long_98_reserved;
+	u32 pps_long_102_reserved;
+	u32 pps_long_106_reserved;
+	u32 pps_long_110_reserved;
+	u32 pps_long_114_reserved;
+	u32 pps_long_118_reserved;
+	u32 pps_long_122_reserved;
+	__be16 pps_short_126_reserved;
+} __attribute__((packed));
+
+struct ttm_kmap_iter;
+
+struct ttm_kmap_iter_ops {
+	void (*map_local)(struct ttm_kmap_iter *, struct iosys_map *, unsigned long);
+	void (*unmap_local)(struct ttm_kmap_iter *, struct iosys_map *);
+	bool maps_tt;
+};
+
+struct ttm_kmap_iter {
+	const struct ttm_kmap_iter_ops *ops;
+};
+
+enum ttm_caching {
+	ttm_uncached = 0,
+	ttm_write_combined = 1,
+	ttm_cached = 2,
+};
+
+enum ttm_bo_type {
+	ttm_bo_type_device = 0,
+	ttm_bo_type_kernel = 1,
+	ttm_bo_type_sg = 2,
+};
+
+struct ttm_tt;
+
+struct ttm_kmap_iter_tt {
+	struct ttm_kmap_iter base;
+	struct ttm_tt *tt;
+	pgprot_t prot;
+};
+
+struct ttm_tt {
+	struct page **pages;
+	uint32_t page_flags;
+	uint32_t num_pages;
+	struct sg_table *sg;
+	dma_addr_t *dma_address;
+	struct file *swap_storage;
+	enum ttm_caching caching;
+};
+
+struct ttm_device;
+
+struct ttm_resource;
+
+struct ttm_lru_bulk_move;
+
+struct ttm_buffer_object {
+	struct drm_gem_object base;
+	struct ttm_device *bdev;
+	enum ttm_bo_type type;
+	uint32_t page_alignment;
+	void (*destroy)(struct ttm_buffer_object *);
+	struct kref kref;
+	struct ttm_resource *resource;
+	struct ttm_tt *ttm;
+	bool deleted;
+	struct ttm_lru_bulk_move *bulk_move;
+	unsigned int priority;
+	unsigned int pin_count;
+	struct work_struct delayed_delete;
+	struct sg_table *sg;
+};
+
+struct ttm_resource_manager_func;
+
+struct ttm_resource_manager {
+	bool use_type;
+	bool use_tt;
+	struct ttm_device *bdev;
+	uint64_t size;
+	const struct ttm_resource_manager_func *func;
+	spinlock_t move_lock;
+	struct dma_fence *move;
+	struct list_head lru[4];
+	uint64_t usage;
+};
+
+struct ttm_pool;
+
+struct ttm_pool_type {
+	struct ttm_pool *pool;
+	unsigned int order;
+	enum ttm_caching caching;
+	struct list_head shrinker_list;
+	spinlock_t lock;
+	struct list_head pages;
+};
+
+struct ttm_pool {
+	struct device *dev;
+	int nid;
+	bool use_dma_alloc;
+	bool use_dma32;
+	struct {
+		struct ttm_pool_type orders[11];
+	} caching[3];
+};
+
+struct ttm_device_funcs;
+
+struct ttm_device {
+	struct list_head device_list;
+	const struct ttm_device_funcs *funcs;
+	struct ttm_resource_manager sysman;
+	struct ttm_resource_manager *man_drv[8];
+	struct drm_vma_offset_manager *vma_manager;
+	struct ttm_pool pool;
+	spinlock_t lru_lock;
+	struct list_head pinned;
+	struct address_space *dev_mapping;
+	struct workqueue_struct *wq;
+};
+
+struct ttm_operation_ctx;
+
+struct ttm_place;
+
+struct ttm_placement;
+
+struct ttm_device_funcs {
+	struct ttm_tt * (*ttm_tt_create)(struct ttm_buffer_object *, uint32_t);
+	int (*ttm_tt_populate)(struct ttm_device *, struct ttm_tt *, struct ttm_operation_ctx *);
+	void (*ttm_tt_unpopulate)(struct ttm_device *, struct ttm_tt *);
+	void (*ttm_tt_destroy)(struct ttm_device *, struct ttm_tt *);
+	bool (*eviction_valuable)(struct ttm_buffer_object *, const struct ttm_place *);
+	void (*evict_flags)(struct ttm_buffer_object *, struct ttm_placement *);
+	int (*move)(struct ttm_buffer_object *, bool, struct ttm_operation_ctx *, struct ttm_resource *, struct ttm_place *);
+	void (*delete_mem_notify)(struct ttm_buffer_object *);
+	void (*swap_notify)(struct ttm_buffer_object *);
+	int (*io_mem_reserve)(struct ttm_device *, struct ttm_resource *);
+	void (*io_mem_free)(struct ttm_device *, struct ttm_resource *);
+	unsigned long (*io_mem_pfn)(struct ttm_buffer_object *, unsigned long);
+	int (*access_memory)(struct ttm_buffer_object *, unsigned long, void *, int, int);
+	void (*release_notify)(struct ttm_buffer_object *);
+};
+
+struct ttm_operation_ctx {
+	bool interruptible;
+	bool no_wait_gpu;
+	bool gfp_retry_mayfail;
+	bool allow_res_evict;
+	bool force_alloc;
+	struct dma_resv *resv;
+	uint64_t bytes_moved;
+};
+
+struct ttm_place {
+	unsigned int fpfn;
+	unsigned int lpfn;
+	uint32_t mem_type;
+	uint32_t flags;
+};
+
+struct ttm_bus_placement {
+	void *addr;
+	phys_addr_t offset;
+	bool is_iomem;
+	enum ttm_caching caching;
+};
+
+struct ttm_resource {
+	unsigned long start;
+	size_t size;
+	uint32_t mem_type;
+	uint32_t placement;
+	struct ttm_bus_placement bus;
+	struct ttm_buffer_object *bo;
+	struct list_head lru;
+};
+
+struct ttm_resource_manager_func {
+	int (*alloc)(struct ttm_resource_manager *, struct ttm_buffer_object *, const struct ttm_place *, struct ttm_resource **);
+	void (*free)(struct ttm_resource_manager *, struct ttm_resource *);
+	bool (*intersects)(struct ttm_resource_manager *, struct ttm_resource *, const struct ttm_place *, size_t);
+	bool (*compatible)(struct ttm_resource_manager *, struct ttm_resource *, const struct ttm_place *, size_t);
+	void (*debug)(struct ttm_resource_manager *, struct drm_printer *);
+};
+
+struct ttm_lru_bulk_move_pos {
+	struct ttm_resource *first;
+	struct ttm_resource *last;
+};
+
+struct ttm_lru_bulk_move {
+	struct ttm_lru_bulk_move_pos pos[32];
+};
+
+struct ttm_placement {
+	unsigned int num_placement;
+	const struct ttm_place *placement;
+	unsigned int num_busy_placement;
+	const struct ttm_place *busy_placement;
+};
+
+struct dma_resv_iter {
+	struct dma_resv *obj;
+	enum dma_resv_usage usage;
+	struct dma_fence *fence;
+	enum dma_resv_usage fence_usage;
+	unsigned int index;
+	struct dma_resv_list *fences;
+	unsigned int num_fences;
+	bool is_restarted;
+};
+
+struct ttm_resource_cursor {
+	unsigned int priority;
+};
+
+struct ttm_bo_kmap_obj {
+	void *virtual;
+	struct page *page;
+	enum {
+		ttm_bo_map_iomap = 129,
+		ttm_bo_map_vmap = 2,
+		ttm_bo_map_kmap = 3,
+		ttm_bo_map_premapped = 132,
+	} bo_kmap_type;
+	struct ttm_buffer_object *bo;
+};
+
+struct ttm_transfer_obj {
+	struct ttm_buffer_object base;
+	struct ttm_buffer_object *bo;
+};
+
+struct ttm_kmap_iter_linear_io {
+	struct ttm_kmap_iter base;
+	struct iosys_map dmap;
+	bool needs_unmap;
+};
+
+struct ttm_validate_buffer {
+	struct list_head head;
+	struct ttm_buffer_object *bo;
+	unsigned int num_shared;
+};
+
+struct ttm_range_mgr_node {
+	struct ttm_resource base;
+	struct drm_mm_node mm_nodes[0];
+};
+
+struct ttm_range_manager {
+	struct ttm_resource_manager manager;
+	struct drm_mm mm;
+	spinlock_t lock;
+};
+
+struct io_mapping;
+
+struct ttm_kmap_iter_iomap {
+	struct ttm_kmap_iter base;
+	struct io_mapping *iomap;
+	struct sg_table *st;
+	resource_size_t start;
+	struct {
+		struct scatterlist *sg;
+		unsigned long i;
+		unsigned long end;
+		unsigned long offs;
+	} cache;
+};
+
+struct io_mapping {
+	resource_size_t base;
+	unsigned long size;
+	pgprot_t prot;
+	void *iomem;
+};
+
+struct ttm_pool_dma {
+	dma_addr_t addr;
+	unsigned long vaddr;
+};
+
+struct ttm_global {
+	struct page *dummy_read_page;
+	struct list_head device_list;
+	atomic_t bo_count;
+};
+
+typedef void (*btf_trace_gpu_mem_total)(void *, uint32_t, uint32_t, uint64_t);
+
+struct trace_event_raw_gpu_mem_total {
+	struct trace_entry ent;
+	uint32_t gpu_id;
+	uint32_t pid;
+	uint64_t size;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_gpu_mem_total {};
+
+struct aggregate_device;
+
+struct component {
+	struct list_head node;
+	struct aggregate_device *adev;
+	bool bound;
+	const struct component_ops *ops;
+	int subcomponent;
+	struct device *dev;
+};
+
+struct component_match;
+
+struct aggregate_device {
+	struct list_head node;
+	bool bound;
+	const struct component_master_ops *ops;
+	struct device *parent;
+	struct component_match *match;
+};
+
+struct component_match_array;
+
+struct component_match {
+	size_t alloc;
+	size_t num;
+	struct component_match_array *compare;
+};
+
+struct component_match_array {
+	void *data;
+	int (*compare)(struct device *, void *);
+	int (*compare_typed)(struct device *, int, void *);
+	void (*release)(struct device *, void *);
+	struct component *component;
+	bool duplicate;
+};
+
+struct device_private {
+	struct klist klist_children;
+	struct klist_node knode_parent;
+	struct klist_node knode_driver;
+	struct klist_node knode_bus;
+	struct klist_node knode_class;
+	struct list_head deferred_probe;
+	struct device_driver *async_driver;
+	char *deferred_probe_reason;
+	struct device *device;
+	u8 dead: 1;
+};
+
+struct driver_private {
+	struct kobject kobj;
+	struct klist klist_devices;
+	struct klist_node knode_bus;
+	struct module_kobject *mkobj;
+	struct device_driver *driver;
+};
+
+struct wake_irq {
+	struct device *dev;
+	unsigned int status;
+	int irq;
+	const char *name;
+};
+
+enum dpm_order {
+	DPM_ORDER_NONE = 0,
+	DPM_ORDER_DEV_AFTER_PARENT = 1,
+	DPM_ORDER_PARENT_BEFORE_DEV = 2,
+	DPM_ORDER_DEV_LAST = 3,
+};
+
+struct dev_ext_attribute {
+	struct device_attribute attr;
+	void *var;
+};
+
+struct fwnode_link {
+	struct fwnode_handle *supplier;
+	struct list_head s_hook;
+	struct fwnode_handle *consumer;
+	struct list_head c_hook;
+	u8 flags;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+};
+
+struct class_dir {
+	struct kobject kobj;
+	const struct class *class;
+};
+
+struct root_device {
+	struct device dev;
+	struct module *owner;
+};
+
+struct subsys_private {
+	struct kset subsys;
+	struct kset *devices_kset;
+	struct list_head interfaces;
+	struct mutex mutex;
+	struct kset *drivers_kset;
+	struct klist klist_devices;
+	struct klist klist_drivers;
+	struct blocking_notifier_head bus_notifier;
+	unsigned int drivers_autoprobe: 1;
+	const struct bus_type *bus;
+	struct device *dev_root;
+	struct kset glue_dirs;
+	const struct class *class;
+	struct lock_class_key lock_key;
+};
+
+union device_attr_group_devres {
+	const struct attribute_group *group;
+	const struct attribute_group **groups;
+};
+
+struct subsys_interface {
+	const char *name;
+	struct bus_type *subsys;
+	struct list_head node;
+	int (*add_dev)(struct device *, struct subsys_interface *);
+	void (*remove_dev)(struct device *, struct subsys_interface *);
+};
+
+struct subsys_dev_iter {
+	struct klist_iter ki;
+	const struct device_type *type;
+};
+
+struct device_attach_data {
+	struct device *dev;
+	bool check_async;
+	bool want_async;
+	bool have_async;
+};
+
+struct class_compat {
+	struct kobject *kobj;
+};
+
+struct platform_object {
+	struct platform_device pdev;
+	char name[0];
+};
+
+struct irq_affinity_devres {
+	unsigned int count;
+	unsigned int irq[0];
+};
+
+struct cpu_attr {
+	struct device_attribute attr;
+	const struct cpumask * const map;
+};
+
+struct probe;
+
+struct kobj_map {
+	struct probe *probes[255];
+	struct mutex *lock;
+};
+
+struct probe {
+	struct probe *next;
+	dev_t dev;
+	unsigned long range;
+	struct module *owner;
+	kobj_probe_t *get;
+	int (*lock)(dev_t, void *);
+	void *data;
+};
+
+struct devres_node {
+	struct list_head entry;
+	dr_release_t release;
+	const char *name;
+	size_t size;
+};
+
+struct devres {
+	struct devres_node node;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	u8 data[0];
+};
+
+struct devres_group {
+	struct devres_node node[2];
+	void *id;
+	int color;
+};
+
+struct action_devres {
+	void *data;
+	void (*action)(void *);
+};
+
+struct pages_devres {
+	unsigned long addr;
+	unsigned int order;
+};
+
+struct attribute_container;
+
+struct internal_container {
+	struct klist_node node;
+	struct attribute_container *cont;
+	struct device classdev;
+};
+
+struct attribute_container {
+	struct list_head node;
+	struct klist containers;
+	struct class *class;
+	const struct attribute_group *grp;
+	struct device_attribute **attrs;
+	int (*match)(struct attribute_container *, struct device *);
+	unsigned long flags;
+};
+
+struct transport_container;
+
+struct transport_class {
+	struct class class;
+	int (*setup)(struct transport_container *, struct device *, struct device *);
+	int (*configure)(struct transport_container *, struct device *, struct device *);
+	int (*remove)(struct transport_container *, struct device *, struct device *);
+};
+
+struct transport_container {
+	struct attribute_container ac;
+	const struct attribute_group *statistics;
+};
+
+struct anon_transport_class {
+	struct transport_class tclass;
+	struct attribute_container container;
+};
+
+struct container_dev {
+	struct device dev;
+	int (*offline)(struct container_dev *);
+};
+
+typedef enum {
+	PHY_INTERFACE_MODE_NA = 0,
+	PHY_INTERFACE_MODE_INTERNAL = 1,
+	PHY_INTERFACE_MODE_MII = 2,
+	PHY_INTERFACE_MODE_GMII = 3,
+	PHY_INTERFACE_MODE_SGMII = 4,
+	PHY_INTERFACE_MODE_TBI = 5,
+	PHY_INTERFACE_MODE_REVMII = 6,
+	PHY_INTERFACE_MODE_RMII = 7,
+	PHY_INTERFACE_MODE_REVRMII = 8,
+	PHY_INTERFACE_MODE_RGMII = 9,
+	PHY_INTERFACE_MODE_RGMII_ID = 10,
+	PHY_INTERFACE_MODE_RGMII_RXID = 11,
+	PHY_INTERFACE_MODE_RGMII_TXID = 12,
+	PHY_INTERFACE_MODE_RTBI = 13,
+	PHY_INTERFACE_MODE_SMII = 14,
+	PHY_INTERFACE_MODE_XGMII = 15,
+	PHY_INTERFACE_MODE_XLGMII = 16,
+	PHY_INTERFACE_MODE_MOCA = 17,
+	PHY_INTERFACE_MODE_PSGMII = 18,
+	PHY_INTERFACE_MODE_QSGMII = 19,
+	PHY_INTERFACE_MODE_TRGMII = 20,
+	PHY_INTERFACE_MODE_100BASEX = 21,
+	PHY_INTERFACE_MODE_1000BASEX = 22,
+	PHY_INTERFACE_MODE_2500BASEX = 23,
+	PHY_INTERFACE_MODE_5GBASER = 24,
+	PHY_INTERFACE_MODE_RXAUI = 25,
+	PHY_INTERFACE_MODE_XAUI = 26,
+	PHY_INTERFACE_MODE_10GBASER = 27,
+	PHY_INTERFACE_MODE_25GBASER = 28,
+	PHY_INTERFACE_MODE_USXGMII = 29,
+	PHY_INTERFACE_MODE_10GKR = 30,
+	PHY_INTERFACE_MODE_QUSGMII = 31,
+	PHY_INTERFACE_MODE_1000BASEKX = 32,
+	PHY_INTERFACE_MODE_MAX = 33,
+} phy_interface_t;
+
+typedef void * (*devcon_match_fn_t)(const struct fwnode_handle *, const char *, void *);
+
+struct cache_type_info {
+	const char *size_prop;
+	const char *line_size_props[2];
+	const char *nr_sets_prop;
+};
+
+struct swnode {
+	struct kobject kobj;
+	struct fwnode_handle fwnode;
+	const struct software_node *node;
+	int id;
+	struct ida child_ids;
+	struct list_head entry;
+	struct list_head children;
+	struct swnode *parent;
+	unsigned int allocated: 1;
+	unsigned int managed: 1;
+};
+
+struct software_node_ref_args {
+	const struct software_node *node;
+	unsigned int nargs;
+	u64 args[8];
+};
+
+struct auxiliary_device;
+
+struct auxiliary_device_id;
+
+struct auxiliary_driver {
+	int (*probe)(struct auxiliary_device *, const struct auxiliary_device_id *);
+	void (*remove)(struct auxiliary_device *);
+	void (*shutdown)(struct auxiliary_device *);
+	int (*suspend)(struct auxiliary_device *, pm_message_t);
+	int (*resume)(struct auxiliary_device *);
+	const char *name;
+	struct device_driver driver;
+	const struct auxiliary_device_id *id_table;
+};
+
+struct auxiliary_device {
+	struct device dev;
+	const char *name;
+	u32 id;
+};
+
+struct auxiliary_device_id {
+	char name[32];
+	kernel_ulong_t driver_data;
+};
+
+struct dev_pm_domain_attach_data {
+	const char * const *pd_names;
+	const u32 num_pd_names;
+	const u32 pd_flags;
+};
+
+struct dev_pm_domain_list {
+	struct device **pd_devs;
+	struct device_link **pd_links;
+	u32 num_pds;
+};
+
+enum pm_qos_flags_status {
+	PM_QOS_FLAGS_UNDEFINED = -1,
+	PM_QOS_FLAGS_NONE = 0,
+	PM_QOS_FLAGS_SOME = 1,
+	PM_QOS_FLAGS_ALL = 2,
+};
+
+typedef int (*pm_callback_t)(struct device *);
+
+struct suspend_stats {
+	int success;
+	int fail;
+	int failed_freeze;
+	int failed_prepare;
+	int failed_suspend;
+	int failed_suspend_late;
+	int failed_suspend_noirq;
+	int failed_resume;
+	int failed_resume_early;
+	int failed_resume_noirq;
+	int last_failed_dev;
+	char failed_devs[80];
+	int last_failed_errno;
+	int errno[2];
+	int last_failed_step;
+	u64 last_hw_sleep;
+	u64 total_hw_sleep;
+	u64 max_hw_sleep;
+	enum suspend_stat_step failed_steps[2];
+};
+
+enum genpd_notication {
+	GENPD_NOTIFY_PRE_OFF = 0,
+	GENPD_NOTIFY_OFF = 1,
+	GENPD_NOTIFY_PRE_ON = 2,
+	GENPD_NOTIFY_ON = 3,
+};
+
+struct gpd_link {
+	struct generic_pm_domain *parent;
+	struct list_head parent_node;
+	struct generic_pm_domain *child;
+	struct list_head child_node;
+	unsigned int performance_state;
+	unsigned int prev_performance_state;
+};
+
+struct of_genpd_provider {
+	struct list_head link;
+	struct device_node *node;
+	genpd_xlate_t xlate;
+	void *data;
+};
+
+struct gpd_timing_data;
+
+struct generic_pm_domain_data {
+	struct pm_domain_data base;
+	struct gpd_timing_data *td;
+	struct notifier_block nb;
+	struct notifier_block *power_nb;
+	int cpu;
+	unsigned int performance_state;
+	unsigned int default_pstate;
+	unsigned int rpm_pstate;
+	void *data;
+};
+
+struct gpd_timing_data {
+	s64 suspend_latency_ns;
+	s64 resume_latency_ns;
+	s64 effective_constraint_ns;
+	ktime_t next_wakeup;
+	bool constraint_changed;
+	bool cached_suspend_ok;
+};
+
+enum pce_status {
+	PCE_STATUS_NONE = 0,
+	PCE_STATUS_ACQUIRED = 1,
+	PCE_STATUS_PREPARED = 2,
+	PCE_STATUS_ENABLED = 3,
+	PCE_STATUS_ERROR = 4,
+};
+
+struct pm_clock_entry {
+	struct list_head node;
+	char *con_id;
+	struct clk *clk;
+	enum pce_status status;
+	bool enabled_when_prepared;
+};
+
+struct pm_clk_notifier_block {
+	struct notifier_block nb;
+	struct dev_pm_domain *pm_domain;
+	char *con_ids[0];
+};
+
+struct firmware_fallback_config {
+	unsigned int force_sysfs_fallback;
+	unsigned int ignore_sysfs_fallback;
+	int old_timeout;
+	int loading_timeout;
+};
+
+struct firmware_cache {
+	spinlock_t lock;
+	struct list_head head;
+	int state;
+};
+
+enum fw_status {
+	FW_STATUS_UNKNOWN = 0,
+	FW_STATUS_LOADING = 1,
+	FW_STATUS_DONE = 2,
+	FW_STATUS_ABORTED = 3,
+};
+
+enum fw_opt {
+	FW_OPT_UEVENT = 1,
+	FW_OPT_NOWAIT = 2,
+	FW_OPT_USERHELPER = 4,
+	FW_OPT_NO_WARN = 8,
+	FW_OPT_NOCACHE = 16,
+	FW_OPT_NOFALLBACK_SYSFS = 32,
+	FW_OPT_FALLBACK_PLATFORM = 64,
+	FW_OPT_PARTIAL = 128,
+};
+
+struct fw_state {
+	struct completion completion;
+	enum fw_status status;
+};
+
+struct fw_priv {
+	struct kref ref;
+	struct list_head list;
+	struct firmware_cache *fwc;
+	struct fw_state fw_st;
+	void *data;
+	size_t size;
+	size_t allocated_size;
+	size_t offset;
+	u32 opt_flags;
+	bool is_paged_buf;
+	struct page **pages;
+	int nr_pages;
+	int page_array_size;
+	bool need_uevent;
+	struct list_head pending_list;
+	const char *fw_name;
+};
+
+struct firmware;
+
+struct firmware_work {
+	struct work_struct work;
+	struct module *module;
+	const char *name;
+	struct device *device;
+	void *context;
+	void (*cont)(const struct firmware *, void *);
+	u32 opt_flags;
+};
+
+struct firmware {
+	size_t size;
+	const u8 *data;
+	void *priv;
+};
+
+struct fw_sysfs {
+	bool nowait;
+	struct device dev;
+	struct fw_priv *fw_priv;
+	struct firmware *fw;
+	void *fw_upload_priv;
+};
+
+struct builtin_fw {
+	char *name;
+	void *data;
+	unsigned long size;
+};
+
+struct for_each_memory_block_cb_data {
+	walk_memory_blocks_func_t func;
+	void *arg;
+};
+
+typedef void (*btf_trace_regmap_reg_write)(void *, struct regmap *, unsigned int, unsigned int);
+
+struct regmap_format {
+	size_t buf_size;
+	size_t reg_bytes;
+	size_t pad_bytes;
+	size_t val_bytes;
+	s8 reg_shift;
+	void (*format_write)(struct regmap *, unsigned int, unsigned int);
+	void (*format_reg)(void *, unsigned int, unsigned int);
+	void (*format_val)(void *, unsigned int, unsigned int);
+	unsigned int (*parse_val)(const void *);
+	void (*parse_inplace)(void *);
+};
+
+struct regcache_ops;
+
+struct reg_sequence;
+
+struct hwspinlock;
+
+struct regmap {
+	union {
+		struct mutex mutex;
+		struct {
+			spinlock_t spinlock;
+			unsigned long spinlock_flags;
+		};
+		struct {
+			raw_spinlock_t raw_spinlock;
+			unsigned long raw_spinlock_flags;
+		};
+	};
+	regmap_lock lock;
+	regmap_unlock unlock;
+	void *lock_arg;
+	gfp_t alloc_flags;
+	unsigned int reg_base;
+	struct device *dev;
+	void *work_buf;
+	struct regmap_format format;
+	const struct regmap_bus *bus;
+	void *bus_context;
+	const char *name;
+	bool async;
+	spinlock_t async_lock;
+	wait_queue_head_t async_waitq;
+	struct list_head async_list;
+	struct list_head async_free;
+	int async_ret;
+	bool debugfs_disable;
+	struct dentry *debugfs;
+	const char *debugfs_name;
+	unsigned int debugfs_reg_len;
+	unsigned int debugfs_val_len;
+	unsigned int debugfs_tot_len;
+	struct list_head debugfs_off_cache;
+	struct mutex cache_lock;
+	unsigned int max_register;
+	bool (*writeable_reg)(struct device *, unsigned int);
+	bool (*readable_reg)(struct device *, unsigned int);
+	bool (*volatile_reg)(struct device *, unsigned int);
+	bool (*precious_reg)(struct device *, unsigned int);
+	bool (*writeable_noinc_reg)(struct device *, unsigned int);
+	bool (*readable_noinc_reg)(struct device *, unsigned int);
+	const struct regmap_access_table *wr_table;
+	const struct regmap_access_table *rd_table;
+	const struct regmap_access_table *volatile_table;
+	const struct regmap_access_table *precious_table;
+	const struct regmap_access_table *wr_noinc_table;
+	const struct regmap_access_table *rd_noinc_table;
+	int (*reg_read)(void *, unsigned int, unsigned int *);
+	int (*reg_write)(void *, unsigned int, unsigned int);
+	int (*reg_update_bits)(void *, unsigned int, unsigned int, unsigned int);
+	int (*read)(void *, const void *, size_t, void *, size_t);
+	int (*write)(void *, const void *, size_t);
+	bool defer_caching;
+	unsigned long read_flag_mask;
+	unsigned long write_flag_mask;
+	int reg_shift;
+	int reg_stride;
+	int reg_stride_order;
+	bool force_write_field;
+	const struct regcache_ops *cache_ops;
+	enum regcache_type cache_type;
+	unsigned int cache_size_raw;
+	unsigned int cache_word_size;
+	unsigned int num_reg_defaults;
+	unsigned int num_reg_defaults_raw;
+	bool cache_only;
+	bool cache_bypass;
+	bool cache_free;
+	struct reg_default *reg_defaults;
+	const void *reg_defaults_raw;
+	void *cache;
+	bool cache_dirty;
+	bool no_sync_defaults;
+	struct reg_sequence *patch;
+	int patch_regs;
+	bool use_single_read;
+	bool use_single_write;
+	bool can_multi_write;
+	size_t max_raw_read;
+	size_t max_raw_write;
+	struct rb_root range_tree;
+	void *selector_work_buf;
+	struct hwspinlock *hwlock;
+	bool can_sleep;
+};
+
+struct regmap_async {
+	struct list_head list;
+	struct regmap *map;
+	void *work_buf;
+};
+
+struct regcache_ops {
+	const char *name;
+	enum regcache_type type;
+	int (*init)(struct regmap *);
+	int (*exit)(struct regmap *);
+	void (*debugfs_init)(struct regmap *);
+	int (*read)(struct regmap *, unsigned int, unsigned int *);
+	int (*write)(struct regmap *, unsigned int, unsigned int);
+	int (*sync)(struct regmap *, unsigned int, unsigned int);
+	int (*drop)(struct regmap *, unsigned int, unsigned int);
+};
+
+struct reg_sequence {
+	unsigned int reg;
+	unsigned int def;
+	unsigned int delay_us;
+};
+
+typedef void (*btf_trace_regmap_reg_read)(void *, struct regmap *, unsigned int, unsigned int);
+
+typedef void (*btf_trace_regmap_reg_read_cache)(void *, struct regmap *, unsigned int, unsigned int);
+
+typedef void (*btf_trace_regmap_bulk_write)(void *, struct regmap *, unsigned int, const void *, int);
+
+typedef void (*btf_trace_regmap_bulk_read)(void *, struct regmap *, unsigned int, const void *, int);
+
+typedef void (*btf_trace_regmap_hw_read_start)(void *, struct regmap *, unsigned int, int);
+
+typedef void (*btf_trace_regmap_hw_read_done)(void *, struct regmap *, unsigned int, int);
+
+typedef void (*btf_trace_regmap_hw_write_start)(void *, struct regmap *, unsigned int, int);
+
+typedef void (*btf_trace_regmap_hw_write_done)(void *, struct regmap *, unsigned int, int);
+
+typedef void (*btf_trace_regcache_sync)(void *, struct regmap *, const char *, const char *);
+
+typedef void (*btf_trace_regmap_cache_only)(void *, struct regmap *, bool);
+
+typedef void (*btf_trace_regmap_cache_bypass)(void *, struct regmap *, bool);
+
+typedef void (*btf_trace_regmap_async_write_start)(void *, struct regmap *, unsigned int, int);
+
+typedef void (*btf_trace_regmap_async_io_complete)(void *, struct regmap *);
+
+typedef void (*btf_trace_regmap_async_complete_start)(void *, struct regmap *);
+
+typedef void (*btf_trace_regmap_async_complete_done)(void *, struct regmap *);
+
+typedef void (*btf_trace_regcache_drop_region)(void *, struct regmap *, unsigned int, unsigned int);
+
+struct trace_event_raw_regmap_reg {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	unsigned int reg;
+	unsigned int val;
+	char __data[0];
+};
+
+struct trace_event_raw_regmap_bulk {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	unsigned int reg;
+	u32 __data_loc_buf;
+	int val_len;
+	char __data[0];
+};
+
+struct trace_event_raw_regmap_block {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	unsigned int reg;
+	int count;
+	char __data[0];
+};
+
+struct trace_event_raw_regcache_sync {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	u32 __data_loc_status;
+	u32 __data_loc_type;
+	char __data[0];
+};
+
+struct trace_event_raw_regmap_bool {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	int flag;
+	char __data[0];
+};
+
+struct trace_event_raw_regmap_async {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	char __data[0];
+};
+
+struct trace_event_raw_regcache_drop_region {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	unsigned int from;
+	unsigned int to;
+	char __data[0];
+};
+
+struct regmap_range_node {
+	struct rb_node node;
+	const char *name;
+	struct regmap *map;
+	unsigned int range_min;
+	unsigned int range_max;
+	unsigned int selector_reg;
+	unsigned int selector_mask;
+	int selector_shift;
+	unsigned int window_start;
+	unsigned int window_len;
+};
+
+struct trace_event_data_offsets_regmap_reg {
+	u32 name;
+};
+
+struct trace_event_data_offsets_regmap_bulk {
+	u32 name;
+	u32 buf;
+};
+
+struct trace_event_data_offsets_regmap_block {
+	u32 name;
+};
+
+struct trace_event_data_offsets_regmap_bool {
+	u32 name;
+};
+
+struct trace_event_data_offsets_regmap_async {
+	u32 name;
+};
+
+struct trace_event_data_offsets_regcache_drop_region {
+	u32 name;
+};
+
+struct regmap_field {
+	struct regmap *regmap;
+	unsigned int mask;
+	unsigned int shift;
+	unsigned int reg;
+	unsigned int id_size;
+	unsigned int id_offset;
+};
+
+struct reg_field {
+	unsigned int reg;
+	unsigned int lsb;
+	unsigned int msb;
+	unsigned int id_size;
+	unsigned int id_offset;
+};
+
+struct trace_event_data_offsets_regcache_sync {
+	u32 name;
+	u32 status;
+	u32 type;
+};
+
+struct regcache_rbtree_node {
+	void *block;
+	unsigned long *cache_present;
+	unsigned int base_reg;
+	unsigned int blklen;
+	struct rb_node node;
+};
+
+struct regcache_rbtree_ctx {
+	struct rb_root root;
+	struct regcache_rbtree_node *cached_rbnode;
+};
+
+struct regmap_debugfs_node {
+	struct regmap *map;
+	struct list_head link;
+};
+
+struct regmap_debugfs_off_cache {
+	struct list_head list;
+	off_t min;
+	off_t max;
+	unsigned int base_reg;
+	unsigned int max_reg;
+};
+
+struct spi_delay {
+	u16 value;
+	u8 unit;
+};
+
+struct spi_controller;
+
+struct spi_statistics;
+
+struct spi_device {
+	struct device dev;
+	struct spi_controller *controller;
+	struct spi_controller *master;
+	u32 max_speed_hz;
+	u8 chip_select;
+	u8 bits_per_word;
+	bool rt;
+	u32 mode;
+	int irq;
+	void *controller_state;
+	void *controller_data;
+	char modalias[32];
+	const char *driver_override;
+	struct gpio_desc *cs_gpiod;
+	struct spi_delay word_delay;
+	struct spi_delay cs_setup;
+	struct spi_delay cs_hold;
+	struct spi_delay cs_inactive;
+	struct spi_statistics __attribute__((btf_type_tag("percpu"))) *pcpu_statistics;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct spi_message;
+
+struct spi_transfer;
+
+struct spi_controller_mem_ops;
+
+struct spi_controller_mem_caps;
+
+struct spi_controller {
+	struct device dev;
+	struct list_head list;
+	s16 bus_num;
+	u16 num_chipselect;
+	u16 dma_alignment;
+	u32 mode_bits;
+	u32 buswidth_override_bits;
+	u32 bits_per_word_mask;
+	u32 min_speed_hz;
+	u32 max_speed_hz;
+	u16 flags;
+	bool devm_allocated;
+	union {
+		bool slave;
+		bool target;
+	};
+	size_t (*max_transfer_size)(struct spi_device *);
+	size_t (*max_message_size)(struct spi_device *);
+	struct mutex io_mutex;
+	struct mutex add_lock;
+	spinlock_t bus_lock_spinlock;
+	struct mutex bus_lock_mutex;
+	bool bus_lock_flag;
+	int (*setup)(struct spi_device *);
+	int (*set_cs_timing)(struct spi_device *);
+	int (*transfer)(struct spi_device *, struct spi_message *);
+	void (*cleanup)(struct spi_device *);
+	bool (*can_dma)(struct spi_controller *, struct spi_device *, struct spi_transfer *);
+	struct device *dma_map_dev;
+	struct device *cur_rx_dma_dev;
+	struct device *cur_tx_dma_dev;
+	bool queued;
+	struct kthread_worker *kworker;
+	struct kthread_work pump_messages;
+	spinlock_t queue_lock;
+	struct list_head queue;
+	struct spi_message *cur_msg;
+	struct completion cur_msg_completion;
+	bool cur_msg_incomplete;
+	bool cur_msg_need_completion;
+	bool busy;
+	bool running;
+	bool rt;
+	bool auto_runtime_pm;
+	bool cur_msg_mapped;
+	char last_cs;
+	bool last_cs_mode_high;
+	bool fallback;
+	struct completion xfer_completion;
+	size_t max_dma_len;
+	int (*prepare_transfer_hardware)(struct spi_controller *);
+	int (*transfer_one_message)(struct spi_controller *, struct spi_message *);
+	int (*unprepare_transfer_hardware)(struct spi_controller *);
+	int (*prepare_message)(struct spi_controller *, struct spi_message *);
+	int (*unprepare_message)(struct spi_controller *, struct spi_message *);
+	union {
+		int (*slave_abort)(struct spi_controller *);
+		int (*target_abort)(struct spi_controller *);
+	};
+	void (*set_cs)(struct spi_device *, bool);
+	int (*transfer_one)(struct spi_controller *, struct spi_device *, struct spi_transfer *);
+	void (*handle_err)(struct spi_controller *, struct spi_message *);
+	const struct spi_controller_mem_ops *mem_ops;
+	const struct spi_controller_mem_caps *mem_caps;
+	struct gpio_desc **cs_gpiods;
+	bool use_gpio_descriptors;
+	s8 unused_native_cs;
+	s8 max_native_cs;
+	struct spi_statistics __attribute__((btf_type_tag("percpu"))) *pcpu_statistics;
+	struct dma_chan *dma_tx;
+	struct dma_chan *dma_rx;
+	void *dummy_rx;
+	void *dummy_tx;
+	int (*fw_translate_cs)(struct spi_controller *, unsigned int);
+	bool ptp_sts_supported;
+	unsigned long irq_flags;
+	bool queue_empty;
+	bool must_async;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct ptp_system_timestamp;
+
+struct spi_transfer {
+	const void *tx_buf;
+	void *rx_buf;
+	unsigned int len;
+	u16 error;
+	dma_addr_t tx_dma;
+	dma_addr_t rx_dma;
+	struct sg_table tx_sg;
+	struct sg_table rx_sg;
+	unsigned int dummy_data: 1;
+	unsigned int cs_off: 1;
+	unsigned int cs_change: 1;
+	unsigned int tx_nbits: 3;
+	unsigned int rx_nbits: 3;
+	unsigned int timestamped: 1;
+	u8 bits_per_word;
+	struct spi_delay delay;
+	struct spi_delay cs_change_delay;
+	struct spi_delay word_delay;
+	u32 speed_hz;
+	u32 effective_speed_hz;
+	unsigned int ptp_sts_word_pre;
+	unsigned int ptp_sts_word_post;
+	struct ptp_system_timestamp *ptp_sts;
+	struct list_head transfer_list;
+	u64 android_kabi_reserved1;
+};
+
+struct spi_message {
+	struct list_head transfers;
+	struct spi_device *spi;
+	unsigned int is_dma_mapped: 1;
+	bool prepared;
+	int status;
+	void (*complete)(void *);
+	void *context;
+	unsigned int frame_length;
+	unsigned int actual_length;
+	struct list_head queue;
+	void *state;
+	struct list_head resources;
+	u64 android_kabi_reserved1;
+	struct spi_transfer t[0];
+};
+
+struct spi_mem;
+
+struct spi_mem_op;
+
+struct spi_mem_dirmap_desc;
+
+struct spi_controller_mem_ops {
+	int (*adjust_op_size)(struct spi_mem *, struct spi_mem_op *);
+	bool (*supports_op)(struct spi_mem *, const struct spi_mem_op *);
+	int (*exec_op)(struct spi_mem *, const struct spi_mem_op *);
+	const char * (*get_name)(struct spi_mem *);
+	int (*dirmap_create)(struct spi_mem_dirmap_desc *);
+	void (*dirmap_destroy)(struct spi_mem_dirmap_desc *);
+	ssize_t (*dirmap_read)(struct spi_mem_dirmap_desc *, u64, size_t, void *);
+	ssize_t (*dirmap_write)(struct spi_mem_dirmap_desc *, u64, size_t, const void *);
+	int (*poll_status)(struct spi_mem *, const struct spi_mem_op *, u16, u16, unsigned long, unsigned long, unsigned long);
+};
+
+struct spi_controller_mem_caps {
+	bool dtr;
+	bool ecc;
+};
+
+struct spi_statistics {
+	struct u64_stats_sync syncp;
+	u64_stats_t messages;
+	u64_stats_t transfers;
+	u64_stats_t errors;
+	u64_stats_t timedout;
+	u64_stats_t spi_sync;
+	u64_stats_t spi_sync_immediate;
+	u64_stats_t spi_async;
+	u64_stats_t bytes;
+	u64_stats_t bytes_rx;
+	u64_stats_t bytes_tx;
+	u64_stats_t transfer_bytes_histo[17];
+	u64_stats_t transfers_split_maxsize;
+};
+
+struct regmap_async_spi {
+	struct regmap_async core;
+	struct spi_message m;
+	struct spi_transfer t[2];
+};
+
+struct spmi_controller;
+
+struct spmi_device {
+	struct device dev;
+	struct spmi_controller *ctrl;
+	u8 usid;
+};
+
+struct spmi_controller {
+	struct device dev;
+	unsigned int nr;
+	int (*cmd)(struct spmi_controller *, u8, u8);
+	int (*read_cmd)(struct spmi_controller *, u8, u8, u16, u8 *, size_t);
+	int (*write_cmd)(struct spmi_controller *, u8, u8, u16, const u8 *, size_t);
+	u64 android_kabi_reserved1;
+};
+
+struct regmap_mmio_context {
+	void *regs;
+	unsigned int val_bytes;
+	bool big_endian;
+	bool attached_clk;
+	struct clk *clk;
+	void (*reg_write)(struct regmap_mmio_context *, unsigned int, unsigned int);
+	unsigned int (*reg_read)(struct regmap_mmio_context *, unsigned int);
+};
+
+struct regmap_irq_chip;
+
+struct regmap_irq_chip_data {
+	struct mutex lock;
+	struct irq_chip irq_chip;
+	struct regmap *map;
+	const struct regmap_irq_chip *chip;
+	int irq_base;
+	struct irq_domain *domain;
+	int irq;
+	int wake_count;
+	void *status_reg_buf;
+	unsigned int *main_status_buf;
+	unsigned int *status_buf;
+	unsigned int *mask_buf;
+	unsigned int *mask_buf_def;
+	unsigned int *wake_buf;
+	unsigned int *type_buf;
+	unsigned int *type_buf_def;
+	unsigned int **config_buf;
+	unsigned int irq_reg_stride;
+	unsigned int (*get_irq_reg)(struct regmap_irq_chip_data *, unsigned int, int);
+	unsigned int clear_status: 1;
+};
+
+struct regmap_irq_sub_irq_map;
+
+struct regmap_irq;
+
+struct regmap_irq_chip {
+	const char *name;
+	unsigned int main_status;
+	unsigned int num_main_status_bits;
+	struct regmap_irq_sub_irq_map *sub_reg_offsets;
+	int num_main_regs;
+	unsigned int status_base;
+	unsigned int mask_base;
+	unsigned int unmask_base;
+	unsigned int ack_base;
+	unsigned int wake_base;
+	const unsigned int *config_base;
+	unsigned int irq_reg_stride;
+	unsigned int init_ack_masked: 1;
+	unsigned int mask_unmask_non_inverted: 1;
+	unsigned int use_ack: 1;
+	unsigned int ack_invert: 1;
+	unsigned int clear_ack: 1;
+	unsigned int status_invert: 1;
+	unsigned int wake_invert: 1;
+	unsigned int type_in_mask: 1;
+	unsigned int clear_on_unmask: 1;
+	unsigned int runtime_pm: 1;
+	unsigned int no_status: 1;
+	int num_regs;
+	const struct regmap_irq *irqs;
+	int num_irqs;
+	int num_config_bases;
+	int num_config_regs;
+	int (*handle_pre_irq)(void *);
+	int (*handle_post_irq)(void *);
+	int (*handle_mask_sync)(int, unsigned int, unsigned int, void *);
+	int (*set_type_config)(unsigned int **, unsigned int, const struct regmap_irq *, int, void *);
+	unsigned int (*get_irq_reg)(struct regmap_irq_chip_data *, unsigned int, int);
+	void *irq_drv_data;
+};
+
+struct regmap_irq_sub_irq_map {
+	unsigned int num_regs;
+	unsigned int *offset;
+};
+
+struct regmap_irq_type {
+	unsigned int type_reg_offset;
+	unsigned int type_reg_mask;
+	unsigned int type_rising_val;
+	unsigned int type_falling_val;
+	unsigned int type_level_low_val;
+	unsigned int type_level_high_val;
+	unsigned int types_supported;
+};
+
+struct regmap_irq {
+	unsigned int reg_offset;
+	unsigned int mask;
+	struct regmap_irq_type type;
+};
+
+struct soc_device {
+	struct device dev;
+	struct soc_device_attribute *attr;
+	int soc_dev_num;
+};
+
+struct devcd_entry {
+	struct device devcd_dev;
+	void *data;
+	size_t datalen;
+	struct mutex mutex;
+	bool delete_work;
+	struct module *owner;
+	ssize_t (*read)(char *, loff_t, size_t, void *, size_t);
+	void (*free)(void *);
+	struct delayed_work del_wk;
+	struct device *failing_dev;
+};
+
+struct platform_msi_priv_data {
+	struct device *dev;
+	void *host_data;
+	msi_alloc_info_t arg;
+	irq_write_msi_msg_t write_msg;
+	int devid;
+};
+
+typedef void (*btf_trace_thermal_pressure_update)(void *, int, unsigned long);
+
+struct cpu_topology {
+	int thread_id;
+	int core_id;
+	int cluster_id;
+	int package_id;
+	cpumask_t thread_sibling;
+	cpumask_t core_sibling;
+	cpumask_t cluster_sibling;
+	cpumask_t llc_sibling;
+};
+
+struct trace_event_raw_thermal_pressure_update {
+	struct trace_entry ent;
+	unsigned long thermal_pressure;
+	int cpu;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_thermal_pressure_update {};
+
+typedef void (*btf_trace_devres_log)(void *, struct device *, const char *, void *, const char *, size_t);
+
+struct trace_event_raw_devres {
+	struct trace_entry ent;
+	u32 __data_loc_devname;
+	struct device *dev;
+	const char *op;
+	void *node;
+	const char *name;
+	size_t size;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_devres {
+	u32 devname;
+};
+
+struct brd_device {
+	int brd_number;
+	struct gendisk *brd_disk;
+	struct list_head brd_list;
+	struct xarray brd_pages;
+	u64 brd_nr_pages;
+};
+
+enum {
+	Lo_unbound = 0,
+	Lo_bound = 1,
+	Lo_rundown = 2,
+	Lo_deleting = 3,
+};
+
+enum {
+	LO_FLAGS_READ_ONLY = 1,
+	LO_FLAGS_AUTOCLEAR = 4,
+	LO_FLAGS_PARTSCAN = 8,
+	LO_FLAGS_DIRECT_IO = 16,
+};
+
+struct loop_device {
+	int lo_number;
+	loff_t lo_offset;
+	loff_t lo_sizelimit;
+	int lo_flags;
+	char lo_file_name[64];
+	struct file *lo_backing_file;
+	struct block_device *lo_device;
+	gfp_t old_gfp_mask;
+	spinlock_t lo_lock;
+	int lo_state;
+	spinlock_t lo_work_lock;
+	struct workqueue_struct *workqueue;
+	struct work_struct rootcg_work;
+	struct list_head rootcg_cmd_list;
+	struct list_head idle_worker_list;
+	struct rb_root worker_tree;
+	struct timer_list timer;
+	bool use_dio;
+	bool sysfs_inited;
+	struct request_queue *lo_queue;
+	struct blk_mq_tag_set tag_set;
+	struct gendisk *lo_disk;
+	struct mutex lo_mutex;
+	bool idr_visible;
+};
+
+struct loop_worker {
+	struct rb_node rb_node;
+	struct work_struct work;
+	struct list_head cmd_list;
+	struct list_head idle_list;
+	struct loop_device *lo;
+	struct cgroup_subsys_state *blkcg_css;
+	unsigned long last_ran_at;
+};
+
+struct loop_cmd {
+	struct list_head list_entry;
+	bool use_aio;
+	atomic_t ref;
+	long ret;
+	struct kiocb iocb;
+	struct bio_vec *bvec;
+	struct cgroup_subsys_state *blkcg_css;
+	struct cgroup_subsys_state *memcg_css;
+};
+
+struct compat_loop_info {
+	compat_int_t lo_number;
+	compat_dev_t lo_device;
+	compat_ulong_t lo_inode;
+	compat_dev_t lo_rdevice;
+	compat_int_t lo_offset;
+	compat_int_t lo_encrypt_type;
+	compat_int_t lo_encrypt_key_size;
+	compat_int_t lo_flags;
+	char lo_name[64];
+	unsigned char lo_encrypt_key[32];
+	compat_ulong_t lo_init[2];
+	char reserved[4];
+};
+
+typedef unsigned int __kernel_old_dev_t;
+
+struct loop_info {
+	int lo_number;
+	__kernel_old_dev_t lo_device;
+	unsigned long lo_inode;
+	__kernel_old_dev_t lo_rdevice;
+	int lo_offset;
+	int lo_encrypt_type;
+	int lo_encrypt_key_size;
+	int lo_flags;
+	char lo_name[64];
+	unsigned char lo_encrypt_key[32];
+	unsigned long lo_init[2];
+	char reserved[4];
+};
+
+struct loop_info64 {
+	__u64 lo_device;
+	__u64 lo_inode;
+	__u64 lo_rdevice;
+	__u64 lo_offset;
+	__u64 lo_sizelimit;
+	__u32 lo_number;
+	__u32 lo_encrypt_type;
+	__u32 lo_encrypt_key_size;
+	__u32 lo_flags;
+	__u8 lo_file_name[64];
+	__u8 lo_crypt_name[64];
+	__u8 lo_encrypt_key[32];
+	__u64 lo_init[2];
+};
+
+struct loop_config {
+	__u32 fd;
+	__u32 block_size;
+	struct loop_info64 info;
+	__u64 __reserved[8];
+};
+
+struct ublk_io {
+	__u64 addr;
+	unsigned int flags;
+	int res;
+	struct io_uring_cmd *cmd;
+};
+
+struct ublk_device;
+
+struct ublk_queue {
+	int q_id;
+	int q_depth;
+	unsigned long flags;
+	struct task_struct *ubq_daemon;
+	char *io_cmd_buf;
+	struct llist_head io_cmds;
+	unsigned long io_addr;
+	unsigned int max_io_sz;
+	bool force_abort;
+	bool timeout;
+	unsigned short nr_io_ready;
+	spinlock_t cancel_lock;
+	struct ublk_device *dev;
+	struct ublk_io ios[0];
+};
+
+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;
+	__u32 owner_uid;
+	__u32 owner_gid;
+	__u64 reserved1;
+	__u64 reserved2;
+};
+
+struct ublk_param_basic {
+	__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_param_devt {
+	__u32 char_major;
+	__u32 char_minor;
+	__u32 disk_major;
+	__u32 disk_minor;
+};
+
+struct ublk_param_zoned {
+	__u32 max_open_zones;
+	__u32 max_active_zones;
+	__u32 max_zone_append_sectors;
+	__u8 reserved[20];
+};
+
+struct ublk_params {
+	__u32 len;
+	__u32 types;
+	struct ublk_param_basic basic;
+	struct ublk_param_discard discard;
+	struct ublk_param_devt devt;
+	struct ublk_param_zoned zoned;
+};
+
+struct ublk_device {
+	struct gendisk *ub_disk;
+	char *__queues;
+	unsigned int queue_size;
+	struct ublksrv_ctrl_dev_info dev_info;
+	struct blk_mq_tag_set tag_set;
+	struct cdev cdev;
+	struct device cdev_dev;
+	unsigned long state;
+	int ub_number;
+	struct mutex mutex;
+	spinlock_t mm_lock;
+	struct mm_struct *mm;
+	struct ublk_params params;
+	struct completion completion;
+	unsigned int nr_queues_ready;
+	unsigned int nr_privileged_daemon;
+	struct delayed_work monitor_work;
+	struct work_struct quiesce_work;
+	struct work_struct stop_work;
+};
+
+struct ublksrv_ctrl_cmd {
+	__u32 dev_id;
+	__u16 queue_id;
+	__u16 len;
+	__u64 addr;
+	__u64 data[1];
+	__u16 dev_path_len;
+	__u16 pad;
+	__u32 reserved;
+};
+
+struct ublk_rq_data {
+	struct llist_node node;
+	struct kref ref;
+	__u64 sector;
+	__u32 operation;
+	__u32 nr_zones;
+};
+
+struct ublksrv_io_desc {
+	__u32 op_flags;
+	union {
+		__u32 nr_sectors;
+		__u32 nr_zones;
+	};
+	__u64 start_sector;
+	__u64 addr;
+};
+
+struct ublk_uring_cmd_pdu {
+	struct ublk_queue *ubq;
+};
+
+struct ublk_io_iter {
+	struct page *pages[32];
+	struct bio *bio;
+	struct bvec_iter iter;
+};
+
+struct ublksrv_io_cmd {
+	__u16 q_id;
+	__u16 tag;
+	__s32 result;
+	union {
+		__u64 addr;
+		__u64 zone_append_lba;
+	};
+};
+
+struct ublk_params_header {
+	__u32 len;
+	__u32 types;
+};
+
+struct sram_config {
+	int (*init)();
+	bool map_only_reserved;
+};
+
+struct sram_reserve {
+	struct list_head list;
+	u32 start;
+	u32 size;
+	struct resource res;
+	bool export;
+	bool pool;
+	bool protect_exec;
+	const char *label;
+};
+
+struct sram_partition {
+	void *base;
+	struct gen_pool *pool;
+	struct bin_attribute battr;
+	struct mutex lock;
+	struct list_head list;
+};
+
+struct sram_dev {
+	const struct sram_config *config;
+	struct device *dev;
+	void *virt_base;
+	bool no_memory_wc;
+	struct gen_pool *pool;
+	struct sram_partition *partition;
+	u32 partitions;
+};
+
+struct io_stats {
+	u64 read_bytes;
+	u64 write_bytes;
+	u64 rchar;
+	u64 wchar;
+	u64 fsync;
+};
+
+struct uid_entry {
+	uid_t uid;
+	u64 utime;
+	u64 stime;
+	int state;
+	struct io_stats io[4];
+	struct hlist_node hash;
+};
+
+struct update_stats_work {
+	uid_t uid;
+	struct task_io_accounting ioac;
+	u64 utime;
+	u64 stime;
+	struct llist_node node;
+};
+
+struct task_entry {
+	char comm[256];
+	pid_t pid;
+	struct io_stats io[4];
+	struct hlist_node hash;
+};
+
+struct mfd_cell_acpi_match;
+
+struct mfd_cell {
+	const char *name;
+	int id;
+	int level;
+	int (*suspend)(struct platform_device *);
+	int (*resume)(struct platform_device *);
+	void *platform_data;
+	size_t pdata_size;
+	const struct mfd_cell_acpi_match *acpi_match;
+	const struct software_node *swnode;
+	const char *of_compatible;
+	u64 of_reg;
+	bool use_of_reg;
+	int num_resources;
+	const struct resource *resources;
+	bool ignore_resource_conflicts;
+	bool pm_runtime_no_callbacks;
+	int num_parent_supplies;
+	const char * const *parent_supplies;
+};
+
+struct mfd_cell_acpi_match {
+	const char *pnpid;
+	const unsigned long long adr;
+};
+
+struct mfd_of_node_entry {
+	struct list_head list;
+	struct device *dev;
+	struct device_node *np;
+};
+
+struct syscon {
+	struct device_node *np;
+	struct regmap *regmap;
+	struct reset_control *reset;
+	struct list_head list;
+};
+
+struct syscon_platform_data {
+	const char *label;
+};
+
+enum nvdimm_passphrase_type {
+	NVDIMM_USER = 0,
+	NVDIMM_MASTER = 1,
+};
+
+enum nvdimm_fwa_state {
+	NVDIMM_FWA_INVALID = 0,
+	NVDIMM_FWA_IDLE = 1,
+	NVDIMM_FWA_ARMED = 2,
+	NVDIMM_FWA_BUSY = 3,
+	NVDIMM_FWA_ARM_OVERFLOW = 4,
+};
+
+enum nvdimm_fwa_result {
+	NVDIMM_FWA_RESULT_INVALID = 0,
+	NVDIMM_FWA_RESULT_NONE = 1,
+	NVDIMM_FWA_RESULT_SUCCESS = 2,
+	NVDIMM_FWA_RESULT_NOTSTAGED = 3,
+	NVDIMM_FWA_RESULT_NEEDRESET = 4,
+	NVDIMM_FWA_RESULT_FAIL = 5,
+};
+
+enum nvdimm_fwa_trigger {
+	NVDIMM_FWA_ARM = 0,
+	NVDIMM_FWA_DISARM = 1,
+};
+
+enum nvdimm_fwa_capability {
+	NVDIMM_FWA_CAP_INVALID = 0,
+	NVDIMM_FWA_CAP_NONE = 1,
+	NVDIMM_FWA_CAP_QUIESCE = 2,
+	NVDIMM_FWA_CAP_LIVE = 3,
+};
+
+enum {
+	ND_CMD_IMPLEMENTED = 0,
+	ND_CMD_ARS_CAP = 1,
+	ND_CMD_ARS_START = 2,
+	ND_CMD_ARS_STATUS = 3,
+	ND_CMD_CLEAR_ERROR = 4,
+	ND_CMD_SMART = 1,
+	ND_CMD_SMART_THRESHOLD = 2,
+	ND_CMD_DIMM_FLAGS = 3,
+	ND_CMD_GET_CONFIG_SIZE = 4,
+	ND_CMD_GET_CONFIG_DATA = 5,
+	ND_CMD_SET_CONFIG_DATA = 6,
+	ND_CMD_VENDOR_EFFECT_LOG_SIZE = 7,
+	ND_CMD_VENDOR_EFFECT_LOG = 8,
+	ND_CMD_VENDOR = 9,
+	ND_CMD_CALL = 10,
+};
+
+struct nvdimm_bus;
+
+struct nvdimm_map {
+	struct nvdimm_bus *nvdimm_bus;
+	struct list_head list;
+	resource_size_t offset;
+	unsigned long flags;
+	size_t size;
+	union {
+		void *mem;
+		void *iomem;
+	};
+	struct kref kref;
+};
+
+struct badrange {
+	struct list_head list;
+	spinlock_t lock;
+};
+
+struct nvdimm_bus_descriptor;
+
+struct nvdimm_bus {
+	struct nvdimm_bus_descriptor *nd_desc;
+	wait_queue_head_t wait;
+	struct list_head list;
+	struct device dev;
+	int id;
+	int probe_active;
+	atomic_t ioctl_active;
+	struct list_head mapping_list;
+	struct mutex reconfig_mutex;
+	struct badrange badrange;
+};
+
+struct nvdimm;
+
+typedef int (*ndctl_fn)(struct nvdimm_bus_descriptor *, struct nvdimm *, unsigned int, void *, unsigned int, int *);
+
+struct nvdimm_bus_fw_ops;
+
+struct nvdimm_bus_descriptor {
+	const struct attribute_group **attr_groups;
+	unsigned long cmd_mask;
+	unsigned long dimm_family_mask;
+	unsigned long bus_family_mask;
+	struct module *module;
+	char *provider_name;
+	struct device_node *of_node;
+	ndctl_fn ndctl;
+	int (*flush_probe)(struct nvdimm_bus_descriptor *);
+	int (*clear_to_send)(struct nvdimm_bus_descriptor *, struct nvdimm *, unsigned int, void *);
+	const struct nvdimm_bus_fw_ops *fw_ops;
+};
+
+struct nvdimm_security_ops;
+
+struct nvdimm_fw_ops;
+
+struct nvdimm {
+	unsigned long flags;
+	void *provider_data;
+	unsigned long cmd_mask;
+	struct device dev;
+	atomic_t busy;
+	int id;
+	int num_flush;
+	struct resource *flush_wpq;
+	const char *dimm_id;
+	struct {
+		const struct nvdimm_security_ops *ops;
+		unsigned long flags;
+		unsigned long ext_flags;
+		unsigned int overwrite_tmo;
+		struct kernfs_node *overwrite_state;
+	} sec;
+	struct delayed_work dwork;
+	const struct nvdimm_fw_ops *fw_ops;
+};
+
+struct nvdimm_key_data;
+
+struct nvdimm_security_ops {
+	unsigned long (*get_flags)(struct nvdimm *, enum nvdimm_passphrase_type);
+	int (*freeze)(struct nvdimm *);
+	int (*change_key)(struct nvdimm *, const struct nvdimm_key_data *, const struct nvdimm_key_data *, enum nvdimm_passphrase_type);
+	int (*unlock)(struct nvdimm *, const struct nvdimm_key_data *);
+	int (*disable)(struct nvdimm *, const struct nvdimm_key_data *);
+	int (*erase)(struct nvdimm *, const struct nvdimm_key_data *, enum nvdimm_passphrase_type);
+	int (*overwrite)(struct nvdimm *, const struct nvdimm_key_data *);
+	int (*query_overwrite)(struct nvdimm *);
+	int (*disable_master)(struct nvdimm *, const struct nvdimm_key_data *);
+};
+
+struct nvdimm_key_data {
+	u8 data[32];
+};
+
+struct nvdimm_fw_ops {
+	enum nvdimm_fwa_state (*activate_state)(struct nvdimm *);
+	enum nvdimm_fwa_result (*activate_result)(struct nvdimm *);
+	int (*arm)(struct nvdimm *, enum nvdimm_fwa_trigger);
+};
+
+struct nvdimm_bus_fw_ops {
+	enum nvdimm_fwa_state (*activate_state)(struct nvdimm_bus_descriptor *);
+	enum nvdimm_fwa_capability (*capability)(struct nvdimm_bus_descriptor *);
+	int (*activate)(struct nvdimm_bus_descriptor *);
+};
+
+struct nd_cmd_desc {
+	int in_num;
+	int out_num;
+	u32 in_sizes[5];
+	int out_sizes[5];
+};
+
+enum nvdimm_event {
+	NVDIMM_REVALIDATE_POISON = 0,
+	NVDIMM_REVALIDATE_REGION = 1,
+};
+
+struct nd_device_driver {
+	struct device_driver drv;
+	unsigned long type;
+	int (*probe)(struct device *);
+	void (*remove)(struct device *);
+	void (*shutdown)(struct device *);
+	void (*notify)(struct device *, enum nvdimm_event);
+};
+
+enum nd_async_mode {
+	ND_SYNC = 0,
+	ND_ASYNC = 1,
+};
+
+enum nd_ioctl_mode {
+	BUS_IOCTL = 0,
+	DIMM_IOCTL = 1,
+};
+
+enum {
+	NDD_UNARMED = 1,
+	NDD_LOCKED = 2,
+	NDD_SECURITY_OVERWRITE = 3,
+	NDD_WORK_PENDING = 4,
+	NDD_LABELING = 6,
+	NDD_INCOHERENT = 7,
+	NDD_REGISTER_SYNC = 8,
+	ND_IOCTL_MAX_BUFLEN = 4194304,
+	ND_CMD_MAX_ELEM = 5,
+	ND_CMD_MAX_ENVELOPE = 256,
+	ND_MAX_MAPPINGS = 32,
+	ND_REGION_PAGEMAP = 0,
+	ND_REGION_PERSIST_CACHE = 1,
+	ND_REGION_PERSIST_MEMCTRL = 2,
+	ND_REGION_ASYNC = 3,
+	ND_REGION_CXL = 4,
+	DPA_RESOURCE_ADJUSTED = 1,
+};
+
+enum nvdimm_claim_class {
+	NVDIMM_CCLASS_NONE = 0,
+	NVDIMM_CCLASS_BTT = 1,
+	NVDIMM_CCLASS_BTT2 = 2,
+	NVDIMM_CCLASS_PFN = 3,
+	NVDIMM_CCLASS_DAX = 4,
+	NVDIMM_CCLASS_UNKNOWN = 5,
+};
+
+enum nd_pfn_mode {
+	PFN_MODE_NONE = 0,
+	PFN_MODE_RAM = 1,
+	PFN_MODE_PMEM = 2,
+};
+
+struct nd_cmd_pkg {
+	__u64 nd_family;
+	__u64 nd_command;
+	__u32 nd_size_in;
+	__u32 nd_size_out;
+	__u32 nd_reserved2[9];
+	__u32 nd_fw_size;
+	unsigned char nd_payload[0];
+};
+
+struct nd_cmd_clear_error {
+	__u64 address;
+	__u64 length;
+	__u32 status;
+	__u8 reserved[4];
+	__u64 cleared;
+};
+
+struct nd_namespace_common {
+	int force_raw;
+	struct device dev;
+	struct device *claim;
+	enum nvdimm_claim_class claim_class;
+	int (*rw_bytes)(struct nd_namespace_common *, resource_size_t, void *, size_t, int, unsigned long);
+};
+
+struct nd_namespace_io {
+	struct nd_namespace_common common;
+	struct resource res;
+	resource_size_t size;
+	void *addr;
+	struct badblocks bb;
+};
+
+struct badrange_entry {
+	u64 start;
+	u64 length;
+	struct list_head list;
+};
+
+struct clear_badblocks_context {
+	resource_size_t phys;
+	resource_size_t cleared;
+};
+
+struct nvdimm_drvdata;
+
+struct nd_mapping {
+	struct nvdimm *nvdimm;
+	u64 start;
+	u64 size;
+	int position;
+	struct list_head labels;
+	struct mutex lock;
+	struct nvdimm_drvdata *ndd;
+};
+
+struct nd_interleave_set;
+
+struct nd_percpu_lane;
+
+struct nd_region {
+	struct device dev;
+	struct ida ns_ida;
+	struct ida btt_ida;
+	struct ida pfn_ida;
+	struct ida dax_ida;
+	unsigned long flags;
+	struct device *ns_seed;
+	struct device *btt_seed;
+	struct device *pfn_seed;
+	struct device *dax_seed;
+	unsigned long align;
+	u16 ndr_mappings;
+	u64 ndr_size;
+	u64 ndr_start;
+	int id;
+	int num_lanes;
+	int ro;
+	int numa_node;
+	int target_node;
+	void *provider_data;
+	struct kernfs_node *bb_state;
+	struct badblocks bb;
+	struct nd_interleave_set *nd_set;
+	struct nd_percpu_lane __attribute__((btf_type_tag("percpu"))) *lane;
+	int (*flush)(struct nd_region *, struct bio *);
+	struct nd_mapping mapping[0];
+};
+
+struct nd_interleave_set {
+	u64 cookie1;
+	u64 cookie2;
+	u64 altcookie;
+	guid_t type_guid;
+};
+
+struct nd_percpu_lane {
+	int count;
+	spinlock_t lock;
+};
+
+struct nd_cmd_get_config_size {
+	__u32 status;
+	__u32 config_size;
+	__u32 max_xfer;
+};
+
+struct nvdimm_drvdata {
+	struct device *dev;
+	int nslabel_size;
+	struct nd_cmd_get_config_size nsarea;
+	void *data;
+	bool cxl;
+	int ns_current;
+	int ns_next;
+	struct resource dpa;
+	struct kref kref;
+};
+
+struct nd_cmd_vendor_hdr {
+	__u32 opcode;
+	__u32 in_length;
+	__u8 in_buf[0];
+};
+
+struct nd_cmd_set_config_hdr {
+	__u32 in_offset;
+	__u32 in_length;
+	__u8 in_buf[0];
+};
+
+struct btt;
+
+struct nd_btt {
+	struct device dev;
+	struct nd_namespace_common *ndns;
+	struct btt *btt;
+	unsigned long lbasize;
+	u64 size;
+	uuid_t *uuid;
+	int id;
+	int initial_offset;
+	u16 version_major;
+	u16 version_minor;
+};
+
+struct nd_cmd_ars_cap {
+	__u64 address;
+	__u64 length;
+	__u32 status;
+	__u32 max_ars_out;
+	__u32 clear_err_unit;
+	__u16 flags;
+	__u16 reserved;
+};
+
+struct nd_pfn_sb;
+
+struct nd_pfn {
+	int id;
+	uuid_t *uuid;
+	struct device dev;
+	unsigned long align;
+	unsigned long npfns;
+	enum nd_pfn_mode mode;
+	struct nd_pfn_sb *pfn_sb;
+	struct nd_namespace_common *ndns;
+};
+
+struct nd_pfn_sb {
+	u8 signature[16];
+	u8 uuid[16];
+	u8 parent_uuid[16];
+	__le32 flags;
+	__le16 version_major;
+	__le16 version_minor;
+	__le64 dataoff;
+	__le64 npfns;
+	__le32 mode;
+	__le32 start_pad;
+	__le32 end_trunc;
+	__le32 align;
+	__le32 page_size;
+	__le16 page_struct_size;
+	u8 padding[3994];
+	__le64 checksum;
+};
+
+struct nd_dax {
+	struct nd_pfn nd_pfn;
+};
+
+enum nvdimm_security_bits {
+	NVDIMM_SECURITY_DISABLED = 0,
+	NVDIMM_SECURITY_UNLOCKED = 1,
+	NVDIMM_SECURITY_LOCKED = 2,
+	NVDIMM_SECURITY_FROZEN = 3,
+	NVDIMM_SECURITY_OVERWRITE = 4,
+};
+
+struct nd_cmd_get_config_data_hdr {
+	__u32 in_offset;
+	__u32 in_length;
+	__u32 status;
+	__u8 out_buf[0];
+};
+
+struct nd_label_id {
+	char id[50];
+};
+
+struct nvdimm_pmu {
+	struct pmu pmu;
+	struct device *dev;
+	int cpu;
+	struct hlist_node node;
+	enum cpuhp_state cpuhp_state;
+	struct cpumask arch_cpumask;
+};
+
+enum {
+	ND_MAX_LANES = 256,
+	INT_LBASIZE_ALIGNMENT = 64,
+	NVDIMM_IO_ATOMIC = 1,
+};
+
+struct nd_namespace_label;
+
+struct nd_label_ent {
+	struct list_head list;
+	unsigned long flags;
+	struct nd_namespace_label *label;
+};
+
+struct nvdimm_cxl_label {
+	u8 type[16];
+	u8 uuid[16];
+	u8 name[64];
+	__le32 flags;
+	__le16 nrange;
+	__le16 position;
+	__le64 dpa;
+	__le64 rawsize;
+	__le32 slot;
+	__le32 align;
+	u8 region_uuid[16];
+	u8 abstraction_uuid[16];
+	__le16 lbasize;
+	u8 reserved[86];
+	__le64 checksum;
+};
+
+struct nvdimm_efi_label {
+	u8 uuid[16];
+	u8 name[64];
+	__le32 flags;
+	__le16 nlabel;
+	__le16 position;
+	__le64 isetcookie;
+	__le64 lbasize;
+	__le64 dpa;
+	__le64 rawsize;
+	__le32 slot;
+	u8 align;
+	u8 reserved[3];
+	guid_t type_guid;
+	guid_t abstraction_guid;
+	u8 reserved2[88];
+	__le64 checksum;
+};
+
+struct nd_namespace_label {
+	union {
+		struct nvdimm_cxl_label cxl;
+		struct nvdimm_efi_label efi;
+	};
+};
+
+struct nd_region_data {
+	int ns_count;
+	int ns_active;
+	unsigned int hints_shift;
+	void *flush_wpq[0];
+};
+
+struct nd_namespace_index {
+	u8 sig[16];
+	u8 flags[3];
+	u8 labelsize;
+	__le32 seq;
+	__le64 myoff;
+	__le64 mysize;
+	__le64 otheroff;
+	__le64 labeloff;
+	__le32 nslot;
+	__le16 major;
+	__le16 minor;
+	__le64 checksum;
+	u8 free[0];
+};
+
+struct nd_mapping_desc;
+
+struct nd_region_desc {
+	struct resource *res;
+	struct nd_mapping_desc *mapping;
+	u16 num_mappings;
+	const struct attribute_group **attr_groups;
+	struct nd_interleave_set *nd_set;
+	void *provider_data;
+	int num_lanes;
+	int numa_node;
+	int target_node;
+	unsigned long flags;
+	int memregion;
+	struct device_node *of_node;
+	int (*flush)(struct nd_region *, struct bio *);
+};
+
+struct nd_mapping_desc {
+	struct nvdimm *nvdimm;
+	u64 start;
+	u64 size;
+	int position;
+};
+
+struct conflict_context {
+	struct nd_region *nd_region;
+	resource_size_t start;
+	resource_size_t size;
+};
+
+enum {
+	ND_MIN_NAMESPACE_SIZE = 4096,
+};
+
+enum alloc_loc {
+	ALLOC_ERR = 0,
+	ALLOC_BEFORE = 1,
+	ALLOC_MID = 2,
+	ALLOC_AFTER = 3,
+};
+
+enum nd_label_flags {
+	ND_LABEL_REAP = 0,
+};
+
+enum {
+	NSINDEX_SIG_LEN = 16,
+	NSINDEX_ALIGN = 256,
+	NSINDEX_SEQ_MASK = 3,
+	NSLABEL_UUID_LEN = 16,
+	NSLABEL_NAME_LEN = 64,
+	NSLABEL_FLAG_ROLABEL = 1,
+	NSLABEL_FLAG_LOCAL = 2,
+	NSLABEL_FLAG_BTT = 4,
+	NSLABEL_FLAG_UPDATING = 8,
+	BTT_ALIGN = 4096,
+	BTTINFO_SIG_LEN = 16,
+	BTTINFO_UUID_LEN = 16,
+	BTTINFO_FLAG_ERROR = 1,
+	BTTINFO_MAJOR_VERSION = 1,
+	ND_LABEL_MIN_SIZE = 1024,
+	ND_LABEL_ID_SIZE = 50,
+	ND_NSINDEX_INIT = 1,
+};
+
+struct nd_namespace_pmem {
+	struct nd_namespace_io nsio;
+	unsigned long lbasize;
+	char *alt_name;
+	uuid_t *uuid;
+	int id;
+};
+
+struct btt {
+	struct gendisk *btt_disk;
+	struct list_head arena_list;
+	struct dentry *debugfs_dir;
+	struct nd_btt *nd_btt;
+	u64 nlba;
+	unsigned long long rawsize;
+	u32 lbasize;
+	u32 sector_size;
+	struct nd_region *nd_region;
+	struct mutex init_lock;
+	int init_state;
+	int num_arenas;
+	struct badblocks *phys_bb;
+};
+
+struct nd_gen_sb {
+	char reserved[4088];
+	__le64 checksum;
+};
+
+struct btt_sb {
+	u8 signature[16];
+	u8 uuid[16];
+	u8 parent_uuid[16];
+	__le32 flags;
+	__le16 version_major;
+	__le16 version_minor;
+	__le32 external_lbasize;
+	__le32 external_nlba;
+	__le32 internal_lbasize;
+	__le32 internal_nlba;
+	__le32 nfree;
+	__le32 infosize;
+	__le64 nextoff;
+	__le64 dataoff;
+	__le64 mapoff;
+	__le64 logoff;
+	__le64 info2off;
+	u8 padding[3968];
+	__le64 checksum;
+};
+
+enum dax_access_mode {
+	DAX_ACCESS = 0,
+	DAX_RECOVERY_WRITE = 1,
+};
+
+struct dax_operations {
+	long (*direct_access)(struct dax_device *, unsigned long, long, enum dax_access_mode, void **, pfn_t *);
+	bool (*dax_supported)(struct dax_device *, struct block_device *, int, sector_t, sector_t);
+	int (*zero_page_range)(struct dax_device *, unsigned long, size_t);
+	size_t (*recovery_write)(struct dax_device *, unsigned long, void *, size_t, struct iov_iter *);
+};
+
+struct pmem_device {
+	phys_addr_t phys_addr;
+	phys_addr_t data_offset;
+	u64 pfn_flags;
+	void *virt_addr;
+	size_t size;
+	u32 pfn_pad;
+	struct kernfs_node *bb_state;
+	struct badblocks bb;
+	struct dax_device *dax_dev;
+	struct gendisk *disk;
+	struct dev_pagemap pgmap;
+};
+
+enum btt_init_state {
+	INIT_UNCHECKED = 0,
+	INIT_NOTFOUND = 1,
+	INIT_READY = 2,
+};
+
+enum log_ent_request {
+	LOG_NEW_ENT = 0,
+	LOG_OLD_ENT = 1,
+};
+
+struct free_entry;
+
+struct aligned_lock;
+
+struct arena_info {
+	u64 size;
+	u64 external_lba_start;
+	u32 internal_nlba;
+	u32 internal_lbasize;
+	u32 external_nlba;
+	u32 external_lbasize;
+	u32 nfree;
+	u16 version_major;
+	u16 version_minor;
+	u32 sector_size;
+	u64 nextoff;
+	u64 infooff;
+	u64 dataoff;
+	u64 mapoff;
+	u64 logoff;
+	u64 info2off;
+	struct free_entry *freelist;
+	u32 *rtt;
+	struct aligned_lock *map_locks;
+	struct nd_btt *nd_btt;
+	struct list_head list;
+	struct dentry *debugfs_dir;
+	u32 flags;
+	struct mutex err_lock;
+	int log_index[2];
+};
+
+struct free_entry {
+	u32 block;
+	u8 sub;
+	u8 seq;
+	u8 has_err;
+};
+
+struct aligned_lock {
+	union {
+		spinlock_t lock;
+		u8 cacheline_padding[64];
+	};
+};
+
+struct log_entry {
+	__le32 lba;
+	__le32 old_map;
+	__le32 new_map;
+	__le32 seq;
+};
+
+struct log_group {
+	struct log_entry ent[4];
+};
+
+struct bio_integrity_payload {
+	struct bio *bip_bio;
+	struct bvec_iter bip_iter;
+	unsigned short bip_vcnt;
+	unsigned short bip_max_vcnt;
+	unsigned short bip_flags;
+	int: 0;
+	struct bvec_iter bio_iter;
+	struct work_struct bip_work;
+	struct bio_vec *bip_vec;
+	struct bio_vec bip_inline_vecs[0];
+};
+
+struct of_pmem_private {
+	struct nvdimm_bus_descriptor bus_desc;
+	struct nvdimm_bus *bus;
+};
+
+enum dax_device_flags {
+	DAXDEV_ALIVE = 0,
+	DAXDEV_WRITE_CACHE = 1,
+	DAXDEV_SYNC = 2,
+	DAXDEV_NOCACHE = 3,
+	DAXDEV_NOMC = 4,
+};
+
+struct dax_holder_operations;
+
+struct dax_device {
+	struct inode inode;
+	struct cdev cdev;
+	void *private;
+	unsigned long flags;
+	const struct dax_operations *ops;
+	void *holder_data;
+	const struct dax_holder_operations *holder_ops;
+};
+
+struct dax_holder_operations {
+	int (*notify_failure)(struct dax_device *, u64, u64, int);
+};
+
+enum dax_driver_type {
+	DAXDRV_KMEM_TYPE = 0,
+	DAXDRV_DEVICE_TYPE = 1,
+};
+
+enum id_action {
+	ID_REMOVE = 0,
+	ID_ADD = 1,
+};
+
+struct dax_id {
+	struct list_head list;
+	char dev_name[30];
+};
+
+struct dax_region;
+
+struct dev_dax_range;
+
+struct dev_dax {
+	struct dax_region *region;
+	struct dax_device *dax_dev;
+	unsigned int align;
+	int target_node;
+	bool dyn_id;
+	int id;
+	struct ida ida;
+	struct device dev;
+	struct dev_pagemap *pgmap;
+	int nr_range;
+	struct dev_dax_range *ranges;
+};
+
+struct dax_region {
+	int id;
+	int target_node;
+	struct kref kref;
+	struct device *dev;
+	unsigned int align;
+	struct ida ida;
+	struct resource res;
+	struct device *seed;
+	struct device *youngest;
+};
+
+struct dax_mapping;
+
+struct dev_dax_range {
+	unsigned long pgoff;
+	struct range range;
+	struct dax_mapping *mapping;
+};
+
+struct dax_mapping {
+	struct device dev;
+	int range_id;
+	int id;
+};
+
+struct dax_device_driver {
+	struct device_driver drv;
+	struct list_head ids;
+	enum dax_driver_type type;
+	int (*probe)(struct dev_dax *);
+	void (*remove)(struct dev_dax *);
+};
+
+struct dev_dax_data {
+	struct dax_region *dax_region;
+	struct dev_pagemap *pgmap;
+	resource_size_t size;
+	int id;
+};
+
+struct dma_buf_list {
+	struct list_head head;
+	struct mutex lock;
+};
+
+struct dma_buf_import_sync_file {
+	__u32 flags;
+	__s32 fd;
+};
+
+struct dma_buf_export_sync_file {
+	__u32 flags;
+	__s32 fd;
+};
+
+struct dma_buf_sync {
+	__u64 flags;
+};
+
+typedef void (*btf_trace_dma_fence_emit)(void *, struct dma_fence *);
+
+typedef void (*btf_trace_dma_fence_init)(void *, struct dma_fence *);
+
+typedef void (*btf_trace_dma_fence_destroy)(void *, struct dma_fence *);
+
+typedef void (*btf_trace_dma_fence_enable_signal)(void *, struct dma_fence *);
+
+typedef void (*btf_trace_dma_fence_signaled)(void *, struct dma_fence *);
+
+typedef void (*btf_trace_dma_fence_wait_start)(void *, struct dma_fence *);
+
+typedef void (*btf_trace_dma_fence_wait_end)(void *, struct dma_fence *);
+
+struct trace_event_raw_dma_fence {
+	struct trace_entry ent;
+	u32 __data_loc_driver;
+	u32 __data_loc_timeline;
+	unsigned int context;
+	unsigned int seqno;
+	char __data[0];
+};
+
+struct default_wait_cb {
+	struct dma_fence_cb base;
+	struct task_struct *task;
+};
+
+struct trace_event_data_offsets_dma_fence {
+	u32 driver;
+	u32 timeline;
+};
+
+struct dma_fence_array;
+
+struct dma_fence_array_cb {
+	struct dma_fence_cb cb;
+	struct dma_fence_array *array;
+};
+
+struct dma_fence_array {
+	struct dma_fence base;
+	spinlock_t lock;
+	unsigned int num_fences;
+	atomic_t num_pending;
+	struct dma_fence **fences;
+	struct irq_work work;
+};
+
+struct dma_heap_ops;
+
+struct dma_heap {
+	const char *name;
+	const struct dma_heap_ops *ops;
+	void *priv;
+	dev_t heap_devt;
+	struct list_head list;
+	struct cdev heap_cdev;
+	struct kref refcount;
+	struct device *heap_dev;
+};
+
+struct dma_heap_ops {
+	struct dma_buf * (*allocate)(struct dma_heap *, unsigned long, u32, u64);
+	long (*get_pool_size)(struct dma_heap *);
+};
+
+struct dma_heap_allocation_data {
+	__u64 len;
+	__u32 fd;
+	__u32 fd_flags;
+	__u64 heap_flags;
+};
+
+struct dma_heap_export_info {
+	const char *name;
+	const struct dma_heap_ops *ops;
+	void *priv;
+};
+
+enum df_reason {
+	DF_NORMAL = 0,
+	DF_UNDER_PRESSURE = 1,
+};
+
+struct deferred_freelist_item {
+	size_t nr_pages;
+	void (*free)(struct deferred_freelist_item *, enum df_reason);
+	struct list_head list;
+};
+
+enum {
+	POOL_LOWPAGE = 0,
+	POOL_HIGHPAGE = 1,
+	POOL_TYPE_SIZE = 2,
+};
+
+struct dmabuf_page_pool {
+	int count[2];
+	struct list_head items[2];
+	spinlock_t lock;
+	gfp_t gfp_mask;
+	unsigned int order;
+	struct list_head list;
+};
+
+struct sync_merge_data {
+	char name[32];
+	__s32 fd2;
+	__s32 fence;
+	__u32 flags;
+	__u32 pad;
+};
+
+struct sync_file_info {
+	char name[32];
+	__s32 status;
+	__u32 flags;
+	__u32 num_fences;
+	__u32 pad;
+	__u64 sync_fence_info;
+};
+
+struct sync_fence_info {
+	char obj_name[32];
+	char driver_name[32];
+	__s32 status;
+	__u32 flags;
+	__u64 timestamp_ns;
+};
+
+struct dma_buf_stats_attribute {
+	struct attribute attr;
+	ssize_t (*show)(struct dma_buf *, struct dma_buf_stats_attribute *, char *);
+};
+
+struct scsi_cmnd;
+
+typedef void (*btf_trace_scsi_dispatch_cmd_start)(void *, struct scsi_cmnd *);
+
+enum scsi_cmnd_submitter {
+	SUBMITTED_BY_BLOCK_LAYER = 0,
+	SUBMITTED_BY_SCSI_ERROR_HANDLER = 1,
+	SUBMITTED_BY_SCSI_RESET_IOCTL = 2,
+} __attribute__((mode(byte)));
+
+struct scsi_data_buffer {
+	struct sg_table table;
+	unsigned int length;
+};
+
+struct scsi_device;
+
+struct scsi_cmnd {
+	struct scsi_device *device;
+	struct list_head eh_entry;
+	struct delayed_work abort_work;
+	struct callback_head rcu;
+	int eh_eflags;
+	int budget_token;
+	unsigned long jiffies_at_alloc;
+	int retries;
+	int allowed;
+	unsigned char prot_op;
+	unsigned char prot_type;
+	unsigned char prot_flags;
+	enum scsi_cmnd_submitter submitter;
+	unsigned short cmd_len;
+	enum dma_data_direction sc_data_direction;
+	unsigned char cmnd[32];
+	struct scsi_data_buffer sdb;
+	struct scsi_data_buffer *prot_sdb;
+	unsigned int underflow;
+	unsigned int transfersize;
+	unsigned int resid_len;
+	unsigned int sense_len;
+	unsigned char *sense_buffer;
+	int flags;
+	unsigned long state;
+	unsigned int extra_len;
+	unsigned char *host_scribble;
+	int result;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+typedef __u64 blist_flags_t;
+
+enum scsi_device_state {
+	SDEV_CREATED = 1,
+	SDEV_RUNNING = 2,
+	SDEV_CANCEL = 3,
+	SDEV_DEL = 4,
+	SDEV_QUIESCE = 5,
+	SDEV_OFFLINE = 6,
+	SDEV_TRANSPORT_OFFLINE = 7,
+	SDEV_BLOCK = 8,
+	SDEV_CREATED_BLOCK = 9,
+};
+
+struct Scsi_Host;
+
+struct scsi_vpd;
+
+struct scsi_target;
+
+struct scsi_device_handler;
+
+struct scsi_device {
+	struct Scsi_Host *host;
+	struct request_queue *request_queue;
+	struct list_head siblings;
+	struct list_head same_target_siblings;
+	struct sbitmap budget_map;
+	atomic_t device_blocked;
+	atomic_t restarts;
+	spinlock_t list_lock;
+	struct list_head starved_entry;
+	unsigned short queue_depth;
+	unsigned short max_queue_depth;
+	unsigned short last_queue_full_depth;
+	unsigned short last_queue_full_count;
+	unsigned long last_queue_full_time;
+	unsigned long queue_ramp_up_period;
+	unsigned long last_queue_ramp_up;
+	unsigned int id;
+	unsigned int channel;
+	u64 lun;
+	unsigned int manufacturer;
+	unsigned int sector_size;
+	void *hostdata;
+	unsigned char type;
+	char scsi_level;
+	char inq_periph_qual;
+	struct mutex inquiry_mutex;
+	unsigned char inquiry_len;
+	unsigned char *inquiry;
+	const char *vendor;
+	const char *model;
+	const char *rev;
+	struct scsi_vpd __attribute__((btf_type_tag("rcu"))) *vpd_pg0;
+	struct scsi_vpd __attribute__((btf_type_tag("rcu"))) *vpd_pg83;
+	struct scsi_vpd __attribute__((btf_type_tag("rcu"))) *vpd_pg80;
+	struct scsi_vpd __attribute__((btf_type_tag("rcu"))) *vpd_pg89;
+	struct scsi_vpd __attribute__((btf_type_tag("rcu"))) *vpd_pgb0;
+	struct scsi_vpd __attribute__((btf_type_tag("rcu"))) *vpd_pgb1;
+	struct scsi_vpd __attribute__((btf_type_tag("rcu"))) *vpd_pgb2;
+	struct scsi_target *sdev_target;
+	blist_flags_t sdev_bflags;
+	unsigned int eh_timeout;
+	unsigned int manage_system_start_stop: 1;
+	unsigned int manage_runtime_start_stop: 1;
+	unsigned int manage_shutdown: 1;
+	unsigned int force_runtime_start_on_system_start: 1;
+	unsigned int removable: 1;
+	unsigned int changed: 1;
+	unsigned int busy: 1;
+	unsigned int lockable: 1;
+	unsigned int locked: 1;
+	unsigned int borken: 1;
+	unsigned int disconnect: 1;
+	unsigned int soft_reset: 1;
+	unsigned int sdtr: 1;
+	unsigned int wdtr: 1;
+	unsigned int ppr: 1;
+	unsigned int tagged_supported: 1;
+	unsigned int simple_tags: 1;
+	unsigned int was_reset: 1;
+	unsigned int expecting_cc_ua: 1;
+	unsigned int use_10_for_rw: 1;
+	unsigned int use_10_for_ms: 1;
+	unsigned int set_dbd_for_ms: 1;
+	unsigned int read_before_ms: 1;
+	unsigned int no_report_opcodes: 1;
+	unsigned int no_write_same: 1;
+	unsigned int use_16_for_rw: 1;
+	unsigned int use_16_for_sync: 1;
+	unsigned int skip_ms_page_8: 1;
+	unsigned int skip_ms_page_3f: 1;
+	unsigned int skip_vpd_pages: 1;
+	unsigned int try_vpd_pages: 1;
+	unsigned int use_192_bytes_for_3f: 1;
+	unsigned int no_start_on_add: 1;
+	unsigned int allow_restart: 1;
+	unsigned int no_start_on_resume: 1;
+	unsigned int start_stop_pwr_cond: 1;
+	unsigned int no_uld_attach: 1;
+	unsigned int select_no_atn: 1;
+	unsigned int fix_capacity: 1;
+	unsigned int guess_capacity: 1;
+	unsigned int retry_hwerror: 1;
+	unsigned int last_sector_bug: 1;
+	unsigned int no_read_disc_info: 1;
+	unsigned int no_read_capacity_16: 1;
+	unsigned int try_rc_10_first: 1;
+	unsigned int security_supported: 1;
+	unsigned int is_visible: 1;
+	unsigned int wce_default_on: 1;
+	unsigned int no_dif: 1;
+	unsigned int broken_fua: 1;
+	unsigned int lun_in_cdb: 1;
+	unsigned int unmap_limit_for_ws: 1;
+	unsigned int rpm_autosuspend: 1;
+	unsigned int ignore_media_change: 1;
+	unsigned int silence_suspend: 1;
+	unsigned int no_vpd_size: 1;
+	unsigned int cdl_supported: 1;
+	unsigned int cdl_enable: 1;
+	unsigned int queue_stopped;
+	bool offline_already;
+	atomic_t disk_events_disable_depth;
+	unsigned long supported_events[1];
+	unsigned long pending_events[1];
+	struct list_head event_list;
+	struct work_struct event_work;
+	unsigned int max_device_blocked;
+	atomic_t iorequest_cnt;
+	atomic_t iodone_cnt;
+	atomic_t ioerr_cnt;
+	atomic_t iotmo_cnt;
+	struct device sdev_gendev;
+	struct device sdev_dev;
+	struct work_struct requeue_work;
+	struct scsi_device_handler *handler;
+	void *handler_data;
+	size_t dma_drain_len;
+	void *dma_drain_buf;
+	unsigned int sg_timeout;
+	unsigned int sg_reserved_size;
+	struct bsg_device *bsg_dev;
+	unsigned char access_state;
+	struct mutex state_mutex;
+	enum scsi_device_state sdev_state;
+	struct task_struct *quiesced_by;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+	unsigned long sdev_data[0];
+};
+
+enum scsi_host_state {
+	SHOST_CREATED = 1,
+	SHOST_RUNNING = 2,
+	SHOST_CANCEL = 3,
+	SHOST_DEL = 4,
+	SHOST_RECOVERY = 5,
+	SHOST_CANCEL_RECOVERY = 6,
+	SHOST_DEL_RECOVERY = 7,
+};
+
+struct scsi_host_template;
+
+struct scsi_transport_template;
+
+struct Scsi_Host {
+	struct list_head __devices;
+	struct list_head __targets;
+	struct list_head starved_list;
+	spinlock_t default_lock;
+	spinlock_t *host_lock;
+	struct mutex scan_mutex;
+	struct list_head eh_abort_list;
+	struct list_head eh_cmd_q;
+	struct task_struct *ehandler;
+	struct completion *eh_action;
+	wait_queue_head_t host_wait;
+	const struct scsi_host_template *hostt;
+	struct scsi_transport_template *transportt;
+	struct kref tagset_refcnt;
+	struct completion tagset_freed;
+	struct blk_mq_tag_set tag_set;
+	atomic_t host_blocked;
+	unsigned int host_failed;
+	unsigned int host_eh_scheduled;
+	unsigned int host_no;
+	int eh_deadline;
+	unsigned long last_reset;
+	unsigned int max_channel;
+	unsigned int max_id;
+	u64 max_lun;
+	unsigned int unique_id;
+	unsigned short max_cmd_len;
+	int this_id;
+	int can_queue;
+	short cmd_per_lun;
+	unsigned short sg_tablesize;
+	unsigned short sg_prot_tablesize;
+	unsigned int max_sectors;
+	unsigned int opt_sectors;
+	unsigned int max_segment_size;
+	unsigned long dma_boundary;
+	unsigned long virt_boundary_mask;
+	unsigned int nr_hw_queues;
+	unsigned int nr_maps;
+	unsigned int active_mode: 2;
+	unsigned int host_self_blocked: 1;
+	unsigned int reverse_ordering: 1;
+	unsigned int tmf_in_progress: 1;
+	unsigned int async_scan: 1;
+	unsigned int eh_noresume: 1;
+	unsigned int no_write_same: 1;
+	unsigned int host_tagset: 1;
+	unsigned int queuecommand_may_block: 1;
+	unsigned int short_inquiry: 1;
+	unsigned int no_scsi2_lun_in_cdb: 1;
+	char work_q_name[20];
+	struct workqueue_struct *work_q;
+	struct workqueue_struct *tmf_work_q;
+	unsigned int max_host_blocked;
+	unsigned int prot_capabilities;
+	unsigned char prot_guard_type;
+	unsigned long base;
+	unsigned long io_port;
+	unsigned char n_io_port;
+	unsigned char dma_channel;
+	unsigned int irq;
+	enum scsi_host_state shost_state;
+	struct device shost_gendev;
+	struct device shost_dev;
+	void *shost_data;
+	struct device *dma_dev;
+	int rpm_autosuspend_delay;
+	u64 android_kabi_reserved1;
+	unsigned long hostdata[0];
+};
+
+enum scsi_timeout_action {
+	SCSI_EH_DONE = 0,
+	SCSI_EH_RESET_TIMER = 1,
+	SCSI_EH_NOT_HANDLED = 2,
+};
+
+struct scsi_host_template {
+	unsigned int cmd_size;
+	int (*queuecommand)(struct Scsi_Host *, struct scsi_cmnd *);
+	void (*commit_rqs)(struct Scsi_Host *, u16);
+	struct module *module;
+	const char *name;
+	const char * (*info)(struct Scsi_Host *);
+	int (*ioctl)(struct scsi_device *, unsigned int, void __attribute__((btf_type_tag("user"))) *);
+	int (*compat_ioctl)(struct scsi_device *, unsigned int, void __attribute__((btf_type_tag("user"))) *);
+	int (*init_cmd_priv)(struct Scsi_Host *, struct scsi_cmnd *);
+	int (*exit_cmd_priv)(struct Scsi_Host *, struct scsi_cmnd *);
+	int (*eh_abort_handler)(struct scsi_cmnd *);
+	int (*eh_device_reset_handler)(struct scsi_cmnd *);
+	int (*eh_target_reset_handler)(struct scsi_cmnd *);
+	int (*eh_bus_reset_handler)(struct scsi_cmnd *);
+	int (*eh_host_reset_handler)(struct scsi_cmnd *);
+	int (*slave_alloc)(struct scsi_device *);
+	int (*slave_configure)(struct scsi_device *);
+	void (*slave_destroy)(struct scsi_device *);
+	int (*target_alloc)(struct scsi_target *);
+	void (*target_destroy)(struct scsi_target *);
+	int (*scan_finished)(struct Scsi_Host *, unsigned long);
+	void (*scan_start)(struct Scsi_Host *);
+	int (*change_queue_depth)(struct scsi_device *, int);
+	void (*map_queues)(struct Scsi_Host *);
+	int (*mq_poll)(struct Scsi_Host *, unsigned int);
+	bool (*dma_need_drain)(struct request *);
+	int (*bios_param)(struct scsi_device *, struct block_device *, sector_t, int *);
+	void (*unlock_native_capacity)(struct scsi_device *);
+	int (*show_info)(struct seq_file *, struct Scsi_Host *);
+	int (*write_info)(struct Scsi_Host *, char *, int);
+	enum scsi_timeout_action (*eh_timed_out)(struct scsi_cmnd *);
+	bool (*eh_should_retry_cmd)(struct scsi_cmnd *);
+	int (*host_reset)(struct Scsi_Host *, int);
+	const char *proc_name;
+	int can_queue;
+	int this_id;
+	unsigned short sg_tablesize;
+	unsigned short sg_prot_tablesize;
+	unsigned int max_sectors;
+	unsigned int max_segment_size;
+	unsigned long dma_boundary;
+	unsigned long virt_boundary_mask;
+	short cmd_per_lun;
+	int tag_alloc_policy;
+	unsigned int track_queue_depth: 1;
+	unsigned int supported_mode: 2;
+	unsigned int emulated: 1;
+	unsigned int skip_settle_delay: 1;
+	unsigned int no_write_same: 1;
+	unsigned int host_tagset: 1;
+	unsigned int queuecommand_may_block: 1;
+	unsigned int max_host_blocked;
+	const struct attribute_group **shost_groups;
+	const struct attribute_group **sdev_groups;
+	u64 vendor_id;
+	u64 android_oem_data1;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+enum scsi_target_state {
+	STARGET_CREATED = 1,
+	STARGET_RUNNING = 2,
+	STARGET_REMOVE = 3,
+	STARGET_CREATED_REMOVE = 4,
+	STARGET_DEL = 5,
+};
+
+struct scsi_target {
+	struct scsi_device *starget_sdev_user;
+	struct list_head siblings;
+	struct list_head devices;
+	struct device dev;
+	struct kref reap_ref;
+	unsigned int channel;
+	unsigned int id;
+	unsigned int create: 1;
+	unsigned int single_lun: 1;
+	unsigned int pdt_1f_for_no_lun: 1;
+	unsigned int no_report_luns: 1;
+	unsigned int expecting_lun_change: 1;
+	atomic_t target_busy;
+	atomic_t target_blocked;
+	unsigned int can_queue;
+	unsigned int max_target_blocked;
+	char scsi_level;
+	enum scsi_target_state state;
+	void *hostdata;
+	unsigned long starget_data[0];
+};
+
+struct scsi_vpd {
+	struct callback_head rcu;
+	int len;
+	unsigned char data[0];
+};
+
+typedef void (*btf_trace_scsi_dispatch_cmd_error)(void *, struct scsi_cmnd *, int);
+
+typedef void (*btf_trace_scsi_dispatch_cmd_done)(void *, struct scsi_cmnd *);
+
+typedef void (*btf_trace_scsi_dispatch_cmd_timeout)(void *, struct scsi_cmnd *);
+
+typedef void (*btf_trace_scsi_eh_wakeup)(void *, struct Scsi_Host *);
+
+enum scsi_vpd_parameters {
+	SCSI_VPD_HEADER_SIZE = 4,
+	SCSI_VPD_LIST_SIZE = 36,
+};
+
+struct trace_event_raw_scsi_dispatch_cmd_start {
+	struct trace_entry ent;
+	unsigned int host_no;
+	unsigned int channel;
+	unsigned int id;
+	unsigned int lun;
+	unsigned int opcode;
+	unsigned int cmd_len;
+	int driver_tag;
+	int scheduler_tag;
+	unsigned int data_sglen;
+	unsigned int prot_sglen;
+	unsigned char prot_op;
+	u32 __data_loc_cmnd;
+	char __data[0];
+};
+
+struct trace_event_raw_scsi_dispatch_cmd_error {
+	struct trace_entry ent;
+	unsigned int host_no;
+	unsigned int channel;
+	unsigned int id;
+	unsigned int lun;
+	int rtn;
+	unsigned int opcode;
+	unsigned int cmd_len;
+	int driver_tag;
+	int scheduler_tag;
+	unsigned int data_sglen;
+	unsigned int prot_sglen;
+	unsigned char prot_op;
+	u32 __data_loc_cmnd;
+	char __data[0];
+};
+
+struct trace_event_raw_scsi_cmd_done_timeout_template {
+	struct trace_entry ent;
+	unsigned int host_no;
+	unsigned int channel;
+	unsigned int id;
+	unsigned int lun;
+	int result;
+	unsigned int opcode;
+	unsigned int cmd_len;
+	int driver_tag;
+	int scheduler_tag;
+	unsigned int data_sglen;
+	unsigned int prot_sglen;
+	unsigned char prot_op;
+	u32 __data_loc_cmnd;
+	u8 sense_key;
+	u8 asc;
+	u8 ascq;
+	char __data[0];
+};
+
+struct trace_event_raw_scsi_eh_wakeup {
+	struct trace_entry ent;
+	unsigned int host_no;
+	char __data[0];
+};
+
+struct scsi_driver {
+	struct device_driver gendrv;
+	int (*resume)(struct device *);
+	void (*rescan)(struct device *);
+	blk_status_t (*init_command)(struct scsi_cmnd *);
+	void (*uninit_command)(struct scsi_cmnd *);
+	int (*done)(struct scsi_cmnd *);
+	int (*eh_action)(struct scsi_cmnd *, int);
+	void (*eh_reset)(struct scsi_cmnd *);
+};
+
+struct trace_event_data_offsets_scsi_dispatch_cmd_start {
+	u32 cmnd;
+};
+
+struct trace_event_data_offsets_scsi_dispatch_cmd_error {
+	u32 cmnd;
+};
+
+struct trace_event_data_offsets_scsi_cmd_done_timeout_template {
+	u32 cmnd;
+};
+
+struct scsi_sense_hdr {
+	u8 response_code;
+	u8 sense_key;
+	u8 asc;
+	u8 ascq;
+	u8 byte4;
+	u8 byte5;
+	u8 byte6;
+	u8 additional_length;
+};
+
+struct scsi_exec_args {
+	unsigned char *sense;
+	unsigned int sense_len;
+	struct scsi_sense_hdr *sshdr;
+	blk_mq_req_flags_t req_flags;
+	int scmd_flags;
+	int *resid;
+};
+
+struct scsi_mode_data {
+	__u32 length;
+	__u16 block_descriptor_length;
+	__u8 medium_type;
+	__u8 device_specific;
+	__u8 header_length;
+	__u8 longlba: 1;
+};
+
+struct trace_event_data_offsets_scsi_eh_wakeup {};
+
+enum scsi_host_status {
+	DID_OK = 0,
+	DID_NO_CONNECT = 1,
+	DID_BUS_BUSY = 2,
+	DID_TIME_OUT = 3,
+	DID_BAD_TARGET = 4,
+	DID_ABORT = 5,
+	DID_PARITY = 6,
+	DID_ERROR = 7,
+	DID_RESET = 8,
+	DID_BAD_INTR = 9,
+	DID_PASSTHROUGH = 10,
+	DID_SOFT_ERROR = 11,
+	DID_IMM_RETRY = 12,
+	DID_REQUEUE = 13,
+	DID_TRANSPORT_DISRUPTED = 14,
+	DID_TRANSPORT_FAILFAST = 15,
+	DID_TRANSPORT_MARGINAL = 20,
+};
+
+struct scsi_transport_template {
+	struct transport_container host_attrs;
+	struct transport_container target_attrs;
+	struct transport_container device_attrs;
+	int (*user_scan)(struct Scsi_Host *, uint, uint, u64);
+	int device_size;
+	int device_private_offset;
+	int target_size;
+	int target_private_offset;
+	int host_size;
+	unsigned int create_work_queue: 1;
+	void (*eh_strategy_handler)(struct Scsi_Host *);
+};
+
+struct scsi_host_busy_iter_data {
+	bool (*fn)(struct scsi_cmnd *, void *);
+	void *priv;
+};
+
+enum scsi_msg_byte {
+	COMMAND_COMPLETE = 0,
+	EXTENDED_MESSAGE = 1,
+	SAVE_POINTERS = 2,
+	RESTORE_POINTERS = 3,
+	DISCONNECT = 4,
+	INITIATOR_ERROR = 5,
+	ABORT_TASK_SET = 6,
+	MESSAGE_REJECT = 7,
+	NOP = 8,
+	MSG_PARITY_ERROR = 9,
+	LINKED_CMD_COMPLETE = 10,
+	LINKED_FLG_CMD_COMPLETE = 11,
+	TARGET_RESET = 12,
+	ABORT_TASK = 13,
+	CLEAR_TASK_SET = 14,
+	INITIATE_RECOVERY = 15,
+	RELEASE_RECOVERY = 16,
+	TERMINATE_IO_PROC = 17,
+	CLEAR_ACA = 22,
+	LOGICAL_UNIT_RESET = 23,
+	SIMPLE_QUEUE_TAG = 32,
+	HEAD_OF_QUEUE_TAG = 33,
+	ORDERED_QUEUE_TAG = 34,
+	IGNORE_WIDE_RESIDUE = 35,
+	ACA = 36,
+	QAS_REQUEST = 85,
+	BUS_DEVICE_RESET = 12,
+	ABORT = 6,
+};
+
+enum sam_status {
+	SAM_STAT_GOOD = 0,
+	SAM_STAT_CHECK_CONDITION = 2,
+	SAM_STAT_CONDITION_MET = 4,
+	SAM_STAT_BUSY = 8,
+	SAM_STAT_INTERMEDIATE = 16,
+	SAM_STAT_INTERMEDIATE_CONDITION_MET = 20,
+	SAM_STAT_RESERVATION_CONFLICT = 24,
+	SAM_STAT_COMMAND_TERMINATED = 34,
+	SAM_STAT_TASK_SET_FULL = 40,
+	SAM_STAT_ACA_ACTIVE = 48,
+	SAM_STAT_TASK_ABORTED = 64,
+};
+
+struct request_sense;
+
+struct cdrom_generic_command {
+	unsigned char cmd[12];
+	unsigned char __attribute__((btf_type_tag("user"))) *buffer;
+	unsigned int buflen;
+	int stat;
+	struct request_sense __attribute__((btf_type_tag("user"))) *sense;
+	unsigned char data_direction;
+	int quiet;
+	int timeout;
+	union {
+		void __attribute__((btf_type_tag("user"))) *reserved[1];
+		void __attribute__((btf_type_tag("user"))) *unused;
+	};
+};
+
+struct request_sense {
+	__u8 error_code: 7;
+	__u8 valid: 1;
+	__u8 segment_number;
+	__u8 sense_key: 4;
+	__u8 reserved2: 1;
+	__u8 ili: 1;
+	__u8 reserved1: 2;
+	__u8 information[4];
+	__u8 add_sense_len;
+	__u8 command_info[4];
+	__u8 asc;
+	__u8 ascq;
+	__u8 fruc;
+	__u8 sks[3];
+	__u8 asb[46];
+};
+
+struct scsi_ioctl_command {
+	unsigned int inlen;
+	unsigned int outlen;
+	unsigned char data[0];
+};
+
+struct scsi_idlun {
+	__u32 dev_id;
+	__u32 host_unique_id;
+};
+
+struct sg_io_hdr {
+	int interface_id;
+	int dxfer_direction;
+	unsigned char cmd_len;
+	unsigned char mx_sb_len;
+	unsigned short iovec_count;
+	unsigned int dxfer_len;
+	void __attribute__((btf_type_tag("user"))) *dxferp;
+	unsigned char __attribute__((btf_type_tag("user"))) *cmdp;
+	void __attribute__((btf_type_tag("user"))) *sbp;
+	unsigned int timeout;
+	unsigned int flags;
+	int pack_id;
+	void __attribute__((btf_type_tag("user"))) *usr_ptr;
+	unsigned char status;
+	unsigned char masked_status;
+	unsigned char msg_status;
+	unsigned char sb_len_wr;
+	unsigned short host_status;
+	unsigned short driver_status;
+	int resid;
+	unsigned int duration;
+	unsigned int info;
+};
+
+struct compat_cdrom_generic_command {
+	unsigned char cmd[12];
+	compat_caddr_t buffer;
+	compat_uint_t buflen;
+	compat_int_t stat;
+	compat_caddr_t sense;
+	unsigned char data_direction;
+	unsigned char pad[3];
+	compat_int_t quiet;
+	compat_int_t timeout;
+	compat_caddr_t unused;
+};
+
+struct compat_sg_io_hdr {
+	compat_int_t interface_id;
+	compat_int_t dxfer_direction;
+	unsigned char cmd_len;
+	unsigned char mx_sb_len;
+	unsigned short iovec_count;
+	compat_uint_t dxfer_len;
+	compat_uint_t dxferp;
+	compat_uptr_t cmdp;
+	compat_uptr_t sbp;
+	compat_uint_t timeout;
+	compat_uint_t flags;
+	compat_int_t pack_id;
+	compat_uptr_t usr_ptr;
+	unsigned char status;
+	unsigned char masked_status;
+	unsigned char msg_status;
+	unsigned char sb_len_wr;
+	unsigned short host_status;
+	unsigned short driver_status;
+	compat_int_t resid;
+	compat_uint_t duration;
+	compat_uint_t info;
+};
+
+enum scsi_disposition {
+	NEEDS_RETRY = 8193,
+	SUCCESS = 8194,
+	FAILED = 8195,
+	QUEUED = 8196,
+	SOFT_ERROR = 8197,
+	ADD_TO_MLQUEUE = 8198,
+	TIMEOUT_ERROR = 8199,
+	SCSI_RETURN_NOT_HANDLED = 8200,
+	FAST_IO_FAIL = 8201,
+};
+
+enum scsi_ml_status {
+	SCSIML_STAT_OK = 0,
+	SCSIML_STAT_RESV_CONFLICT = 1,
+	SCSIML_STAT_NOSPC = 2,
+	SCSIML_STAT_MED_ERROR = 3,
+	SCSIML_STAT_TGT_FAILURE = 4,
+	SCSIML_STAT_DL_TIMEOUT = 5,
+};
+
+enum scsi_prot_operations {
+	SCSI_PROT_NORMAL = 0,
+	SCSI_PROT_READ_INSERT = 1,
+	SCSI_PROT_WRITE_STRIP = 2,
+	SCSI_PROT_READ_STRIP = 3,
+	SCSI_PROT_WRITE_INSERT = 4,
+	SCSI_PROT_READ_PASS = 5,
+	SCSI_PROT_WRITE_PASS = 6,
+};
+
+enum scsi_device_event {
+	SDEV_EVT_MEDIA_CHANGE = 1,
+	SDEV_EVT_INQUIRY_CHANGE_REPORTED = 2,
+	SDEV_EVT_CAPACITY_CHANGE_REPORTED = 3,
+	SDEV_EVT_SOFT_THRESHOLD_REACHED_REPORTED = 4,
+	SDEV_EVT_MODE_PARAMETER_CHANGE_REPORTED = 5,
+	SDEV_EVT_LUN_CHANGE_REPORTED = 6,
+	SDEV_EVT_ALUA_STATE_CHANGE_REPORTED = 7,
+	SDEV_EVT_POWER_ON_RESET_OCCURRED = 8,
+	SDEV_EVT_FIRST = 1,
+	SDEV_EVT_LAST = 8,
+	SDEV_EVT_MAXBITS = 9,
+};
+
+typedef void (*activate_complete)(void *, int);
+
+struct scsi_device_handler {
+	struct list_head list;
+	struct module *module;
+	const char *name;
+	enum scsi_disposition (*check_sense)(struct scsi_device *, struct scsi_sense_hdr *);
+	int (*attach)(struct scsi_device *);
+	void (*detach)(struct scsi_device *);
+	int (*activate)(struct scsi_device *, activate_complete, void *);
+	blk_status_t (*prep_fn)(struct scsi_device *, struct request *);
+	int (*set_params)(struct scsi_device *, const char *);
+	void (*rescan)(struct scsi_device *);
+};
+
+struct scsi_eh_save {
+	int result;
+	unsigned int resid_len;
+	int eh_eflags;
+	enum dma_data_direction data_direction;
+	unsigned int underflow;
+	unsigned char cmd_len;
+	unsigned char prot_op;
+	unsigned char cmnd[32];
+	struct scsi_data_buffer sdb;
+	struct scatterlist sense_sgl;
+};
+
+enum {
+	ACTION_FAIL = 0,
+	ACTION_REPREP = 1,
+	ACTION_DELAYED_REPREP = 2,
+	ACTION_RETRY = 3,
+	ACTION_DELAYED_RETRY = 4,
+};
+
+enum scsi_host_prot_capabilities {
+	SHOST_DIF_TYPE1_PROTECTION = 1,
+	SHOST_DIF_TYPE2_PROTECTION = 2,
+	SHOST_DIF_TYPE3_PROTECTION = 4,
+	SHOST_DIX_TYPE0_PROTECTION = 8,
+	SHOST_DIX_TYPE1_PROTECTION = 16,
+	SHOST_DIX_TYPE2_PROTECTION = 32,
+	SHOST_DIX_TYPE3_PROTECTION = 64,
+};
+
+struct scsi_event {
+	enum scsi_device_event evt_type;
+	struct list_head node;
+};
+
+enum scsi_scan_mode {
+	SCSI_SCAN_INITIAL = 0,
+	SCSI_SCAN_RESCAN = 1,
+	SCSI_SCAN_MANUAL = 2,
+};
+
+enum scsi_timeouts {
+	SCSI_DEFAULT_EH_TIMEOUT = 2500,
+};
+
+struct async_scan_data {
+	struct list_head list;
+	struct Scsi_Host *shost;
+	struct completion prev_finished;
+};
+
+struct scsi_lun {
+	__u8 scsi_lun[8];
+};
+
+enum scsi_devinfo_key {
+	SCSI_DEVINFO_GLOBAL = 0,
+	SCSI_DEVINFO_SPI = 1,
+};
+
+struct scsi_dev_info_list {
+	struct list_head dev_info_list;
+	char vendor[8];
+	char model[16];
+	blist_flags_t flags;
+	unsigned int compatible;
+};
+
+struct scsi_dev_info_list_table {
+	struct list_head node;
+	struct list_head scsi_dev_info_list;
+	const char *name;
+	int key;
+};
+
+struct scsi_varlen_cdb_hdr {
+	__u8 opcode;
+	__u8 control;
+	__u8 misc[5];
+	__u8 additional_cdb_length;
+	__be16 service_action;
+};
+
+enum scsi_pr_type {
+	SCSI_PR_WRITE_EXCLUSIVE = 1,
+	SCSI_PR_EXCLUSIVE_ACCESS = 3,
+	SCSI_PR_WRITE_EXCLUSIVE_REG_ONLY = 5,
+	SCSI_PR_EXCLUSIVE_ACCESS_REG_ONLY = 6,
+	SCSI_PR_WRITE_EXCLUSIVE_ALL_REGS = 7,
+	SCSI_PR_EXCLUSIVE_ACCESS_ALL_REGS = 8,
+};
+
+enum pr_status {
+	PR_STS_SUCCESS = 0,
+	PR_STS_IOERR = 2,
+	PR_STS_RESERVATION_CONFLICT = 24,
+	PR_STS_RETRY_PATH_FAILURE = 917504,
+	PR_STS_PATH_FAST_FAILED = 983040,
+	PR_STS_PATH_FAILED = 65536,
+};
+
+enum {
+	SD_DEF_XFER_BLOCKS = 65535,
+	SD_MAX_XFER_BLOCKS = 4294967295,
+	SD_MAX_WS10_BLOCKS = 65535,
+	SD_MAX_WS16_BLOCKS = 8388607,
+};
+
+enum {
+	SD_LBP_FULL = 0,
+	SD_LBP_UNMAP = 1,
+	SD_LBP_WS16 = 2,
+	SD_LBP_WS10 = 3,
+	SD_LBP_ZERO = 4,
+	SD_LBP_DISABLE = 5,
+};
+
+enum t10_dif_type {
+	T10_PI_TYPE0_PROTECTION = 0,
+	T10_PI_TYPE1_PROTECTION = 1,
+	T10_PI_TYPE2_PROTECTION = 2,
+	T10_PI_TYPE3_PROTECTION = 3,
+};
+
+enum {
+	SD_ZERO_WRITE = 0,
+	SD_ZERO_WS = 1,
+	SD_ZERO_WS16_UNMAP = 2,
+	SD_ZERO_WS10_UNMAP = 3,
+};
+
+enum bip_flags {
+	BIP_BLOCK_INTEGRITY = 1,
+	BIP_MAPPED_INTEGRITY = 2,
+	BIP_CTRL_NOCHECK = 4,
+	BIP_DISK_NOCHECK = 8,
+	BIP_IP_CHECKSUM = 16,
+};
+
+enum scsi_prot_flags {
+	SCSI_PROT_TRANSFER_PI = 1,
+	SCSI_PROT_GUARD_CHECK = 2,
+	SCSI_PROT_REF_CHECK = 4,
+	SCSI_PROT_REF_INCREMENT = 8,
+	SCSI_PROT_IP_CHECKSUM = 16,
+};
+
+enum {
+	SD_EXT_CDB_SIZE = 32,
+	SD_MEMPOOL_SIZE = 2,
+};
+
+struct opal_dev;
+
+struct zoned_disk_info {
+	u32 nr_zones;
+	u32 zone_blocks;
+};
+
+struct scsi_disk {
+	struct scsi_device *device;
+	struct device disk_dev;
+	struct gendisk *disk;
+	struct opal_dev *opal_dev;
+	struct zoned_disk_info early_zone_info;
+	struct zoned_disk_info zone_info;
+	u32 zones_optimal_open;
+	u32 zones_optimal_nonseq;
+	u32 zones_max_open;
+	u32 zone_starting_lba_gran;
+	u32 *zones_wp_offset;
+	spinlock_t zones_wp_offset_lock;
+	u32 *rev_wp_offset;
+	struct mutex rev_mutex;
+	struct work_struct zone_wp_offset_work;
+	char *zone_wp_update_buf;
+	atomic_t openers;
+	sector_t capacity;
+	int max_retries;
+	u32 min_xfer_blocks;
+	u32 max_xfer_blocks;
+	u32 opt_xfer_blocks;
+	u32 max_ws_blocks;
+	u32 max_unmap_blocks;
+	u32 unmap_granularity;
+	u32 unmap_alignment;
+	u32 index;
+	unsigned int physical_block_size;
+	unsigned int max_medium_access_timeouts;
+	unsigned int medium_access_timed_out;
+	u8 media_present;
+	u8 write_prot;
+	u8 protection_type;
+	u8 provisioning_mode;
+	u8 zeroing_mode;
+	u8 nr_actuators;
+	bool suspended;
+	unsigned int ATO: 1;
+	unsigned int cache_override: 1;
+	unsigned int WCE: 1;
+	unsigned int RCD: 1;
+	unsigned int DPOFUA: 1;
+	unsigned int first_scan: 1;
+	unsigned int lbpme: 1;
+	unsigned int lbprz: 1;
+	unsigned int lbpu: 1;
+	unsigned int lbpws: 1;
+	unsigned int lbpws10: 1;
+	unsigned int lbpvpd: 1;
+	unsigned int ws10: 1;
+	unsigned int ws16: 1;
+	unsigned int rc_basis: 2;
+	unsigned int zoned: 2;
+	unsigned int urswrz: 1;
+	unsigned int security: 1;
+	unsigned int ignore_medium_access_errors: 1;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+typedef void (*btf_trace_scsi_prepare_zone_append)(void *, struct scsi_cmnd *, sector_t, unsigned int);
+
+typedef void (*btf_trace_scsi_zone_wp_update)(void *, struct scsi_cmnd *, sector_t, unsigned int, unsigned int);
+
+enum zbc_zone_type {
+	ZBC_ZONE_TYPE_CONV = 1,
+	ZBC_ZONE_TYPE_SEQWRITE_REQ = 2,
+	ZBC_ZONE_TYPE_SEQWRITE_PREF = 3,
+	ZBC_ZONE_TYPE_SEQ_OR_BEFORE_REQ = 4,
+	ZBC_ZONE_TYPE_GAP = 5,
+};
+
+enum zbc_zone_cond {
+	ZBC_ZONE_COND_NO_WP = 0,
+	ZBC_ZONE_COND_EMPTY = 1,
+	ZBC_ZONE_COND_IMP_OPEN = 2,
+	ZBC_ZONE_COND_EXP_OPEN = 3,
+	ZBC_ZONE_COND_CLOSED = 4,
+	ZBC_ZONE_COND_READONLY = 13,
+	ZBC_ZONE_COND_FULL = 14,
+	ZBC_ZONE_COND_OFFLINE = 15,
+};
+
+enum zbc_zone_alignment_method {
+	ZBC_CONSTANT_ZONE_LENGTH = 1,
+	ZBC_CONSTANT_ZONE_START_OFFSET = 8,
+};
+
+struct trace_event_raw_scsi_prepare_zone_append {
+	struct trace_entry ent;
+	unsigned int host_no;
+	unsigned int channel;
+	unsigned int id;
+	unsigned int lun;
+	sector_t lba;
+	unsigned int wp_offset;
+	char __data[0];
+};
+
+struct trace_event_raw_scsi_zone_wp_update {
+	struct trace_entry ent;
+	unsigned int host_no;
+	unsigned int channel;
+	unsigned int id;
+	unsigned int lun;
+	sector_t rq_sector;
+	unsigned int wp_offset;
+	unsigned int good_bytes;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_scsi_prepare_zone_append {};
+
+struct trace_event_data_offsets_scsi_zone_wp_update {};
+
+struct nvme_command;
+
+typedef void (*btf_trace_nvme_setup_cmd)(void *, struct request *, struct nvme_command *);
+
+struct nvme_sgl_desc {
+	__le64 addr;
+	__le32 length;
+	__u8 rsvd[3];
+	__u8 type;
+};
+
+struct nvme_keyed_sgl_desc {
+	__le64 addr;
+	__u8 length[3];
+	__u8 key[4];
+	__u8 type;
+};
+
+union nvme_data_ptr {
+	struct {
+		__le64 prp1;
+		__le64 prp2;
+	};
+	struct nvme_sgl_desc sgl;
+	struct nvme_keyed_sgl_desc ksgl;
+};
+
+struct nvme_common_command {
+	__u8 opcode;
+	__u8 flags;
+	__u16 command_id;
+	__le32 nsid;
+	__le32 cdw2[2];
+	__le64 metadata;
+	union nvme_data_ptr dptr;
+	union {
+		struct {
+			__le32 cdw10;
+			__le32 cdw11;
+			__le32 cdw12;
+			__le32 cdw13;
+			__le32 cdw14;
+			__le32 cdw15;
+		};
+		struct {
+			__le32 cdw10;
+			__le32 cdw11;
+			__le32 cdw12;
+			__le32 cdw13;
+			__le32 cdw14;
+			__le32 cdw15;
+		} cdws;
+	};
+};
+
+struct nvme_rw_command {
+	__u8 opcode;
+	__u8 flags;
+	__u16 command_id;
+	__le32 nsid;
+	__le32 cdw2;
+	__le32 cdw3;
+	__le64 metadata;
+	union nvme_data_ptr dptr;
+	__le64 slba;
+	__le16 length;
+	__le16 control;
+	__le32 dsmgmt;
+	__le32 reftag;
+	__le16 apptag;
+	__le16 appmask;
+};
+
+struct nvme_identify {
+	__u8 opcode;
+	__u8 flags;
+	__u16 command_id;
+	__le32 nsid;
+	__u64 rsvd2[2];
+	union nvme_data_ptr dptr;
+	__u8 cns;
+	__u8 rsvd3;
+	__le16 ctrlid;
+	__u8 rsvd11[3];
+	__u8 csi;
+	__u32 rsvd12[4];
+};
+
+struct nvme_features {
+	__u8 opcode;
+	__u8 flags;
+	__u16 command_id;
+	__le32 nsid;
+	__u64 rsvd2[2];
+	union nvme_data_ptr dptr;
+	__le32 fid;
+	__le32 dword11;
+	__le32 dword12;
+	__le32 dword13;
+	__le32 dword14;
+	__le32 dword15;
+};
+
+struct nvme_create_cq {
+	__u8 opcode;
+	__u8 flags;
+	__u16 command_id;
+	__u32 rsvd1[5];
+	__le64 prp1;
+	__u64 rsvd8;
+	__le16 cqid;
+	__le16 qsize;
+	__le16 cq_flags;
+	__le16 irq_vector;
+	__u32 rsvd12[4];
+};
+
+struct nvme_create_sq {
+	__u8 opcode;
+	__u8 flags;
+	__u16 command_id;
+	__u32 rsvd1[5];
+	__le64 prp1;
+	__u64 rsvd8;
+	__le16 sqid;
+	__le16 qsize;
+	__le16 sq_flags;
+	__le16 cqid;
+	__u32 rsvd12[4];
+};
+
+struct nvme_delete_queue {
+	__u8 opcode;
+	__u8 flags;
+	__u16 command_id;
+	__u32 rsvd1[9];
+	__le16 qid;
+	__u16 rsvd10;
+	__u32 rsvd11[5];
+};
+
+struct nvme_download_firmware {
+	__u8 opcode;
+	__u8 flags;
+	__u16 command_id;
+	__u32 rsvd1[5];
+	union nvme_data_ptr dptr;
+	__le32 numd;
+	__le32 offset;
+	__u32 rsvd12[4];
+};
+
+struct nvme_format_cmd {
+	__u8 opcode;
+	__u8 flags;
+	__u16 command_id;
+	__le32 nsid;
+	__u64 rsvd2[4];
+	__le32 cdw10;
+	__u32 rsvd11[5];
+};
+
+struct nvme_dsm_cmd {
+	__u8 opcode;
+	__u8 flags;
+	__u16 command_id;
+	__le32 nsid;
+	__u64 rsvd2[2];
+	union nvme_data_ptr dptr;
+	__le32 nr;
+	__le32 attributes;
+	__u32 rsvd12[4];
+};
+
+struct nvme_write_zeroes_cmd {
+	__u8 opcode;
+	__u8 flags;
+	__u16 command_id;
+	__le32 nsid;
+	__u64 rsvd2;
+	__le64 metadata;
+	union nvme_data_ptr dptr;
+	__le64 slba;
+	__le16 length;
+	__le16 control;
+	__le32 dsmgmt;
+	__le32 reftag;
+	__le16 apptag;
+	__le16 appmask;
+};
+
+struct nvme_zone_mgmt_send_cmd {
+	__u8 opcode;
+	__u8 flags;
+	__u16 command_id;
+	__le32 nsid;
+	__le32 cdw2[2];
+	__le64 metadata;
+	union nvme_data_ptr dptr;
+	__le64 slba;
+	__le32 cdw12;
+	__u8 zsa;
+	__u8 select_all;
+	__u8 rsvd13[2];
+	__le32 cdw14[2];
+};
+
+struct nvme_zone_mgmt_recv_cmd {
+	__u8 opcode;
+	__u8 flags;
+	__u16 command_id;
+	__le32 nsid;
+	__le64 rsvd2[2];
+	union nvme_data_ptr dptr;
+	__le64 slba;
+	__le32 numd;
+	__u8 zra;
+	__u8 zrasf;
+	__u8 pr;
+	__u8 rsvd13;
+	__le32 cdw14[2];
+};
+
+struct nvme_abort_cmd {
+	__u8 opcode;
+	__u8 flags;
+	__u16 command_id;
+	__u32 rsvd1[9];
+	__le16 sqid;
+	__u16 cid;
+	__u32 rsvd11[5];
+};
+
+struct nvme_get_log_page_command {
+	__u8 opcode;
+	__u8 flags;
+	__u16 command_id;
+	__le32 nsid;
+	__u64 rsvd2[2];
+	union nvme_data_ptr dptr;
+	__u8 lid;
+	__u8 lsp;
+	__le16 numdl;
+	__le16 numdu;
+	__u16 rsvd11;
+	union {
+		struct {
+			__le32 lpol;
+			__le32 lpou;
+		};
+		__le64 lpo;
+	};
+	__u8 rsvd14[3];
+	__u8 csi;
+	__u32 rsvd15;
+};
+
+struct nvmf_common_command {
+	__u8 opcode;
+	__u8 resv1;
+	__u16 command_id;
+	__u8 fctype;
+	__u8 resv2[35];
+	__u8 ts[24];
+};
+
+struct nvmf_connect_command {
+	__u8 opcode;
+	__u8 resv1;
+	__u16 command_id;
+	__u8 fctype;
+	__u8 resv2[19];
+	union nvme_data_ptr dptr;
+	__le16 recfmt;
+	__le16 qid;
+	__le16 sqsize;
+	__u8 cattr;
+	__u8 resv3;
+	__le32 kato;
+	__u8 resv4[12];
+};
+
+struct nvmf_property_set_command {
+	__u8 opcode;
+	__u8 resv1;
+	__u16 command_id;
+	__u8 fctype;
+	__u8 resv2[35];
+	__u8 attrib;
+	__u8 resv3[3];
+	__le32 offset;
+	__le64 value;
+	__u8 resv4[8];
+};
+
+struct nvmf_property_get_command {
+	__u8 opcode;
+	__u8 resv1;
+	__u16 command_id;
+	__u8 fctype;
+	__u8 resv2[35];
+	__u8 attrib;
+	__u8 resv3[3];
+	__le32 offset;
+	__u8 resv4[16];
+};
+
+struct nvmf_auth_common_command {
+	__u8 opcode;
+	__u8 resv1;
+	__u16 command_id;
+	__u8 fctype;
+	__u8 resv2[19];
+	union nvme_data_ptr dptr;
+	__u8 resv3;
+	__u8 spsp0;
+	__u8 spsp1;
+	__u8 secp;
+	__le32 al_tl;
+	__u8 resv4[16];
+};
+
+struct nvmf_auth_send_command {
+	__u8 opcode;
+	__u8 resv1;
+	__u16 command_id;
+	__u8 fctype;
+	__u8 resv2[19];
+	union nvme_data_ptr dptr;
+	__u8 resv3;
+	__u8 spsp0;
+	__u8 spsp1;
+	__u8 secp;
+	__le32 tl;
+	__u8 resv4[16];
+};
+
+struct nvmf_auth_receive_command {
+	__u8 opcode;
+	__u8 resv1;
+	__u16 command_id;
+	__u8 fctype;
+	__u8 resv2[19];
+	union nvme_data_ptr dptr;
+	__u8 resv3;
+	__u8 spsp0;
+	__u8 spsp1;
+	__u8 secp;
+	__le32 al;
+	__u8 resv4[16];
+};
+
+struct nvme_dbbuf {
+	__u8 opcode;
+	__u8 flags;
+	__u16 command_id;
+	__u32 rsvd1[5];
+	__le64 prp1;
+	__le64 prp2;
+	__u32 rsvd12[6];
+};
+
+struct nvme_directive_cmd {
+	__u8 opcode;
+	__u8 flags;
+	__u16 command_id;
+	__le32 nsid;
+	__u64 rsvd2[2];
+	union nvme_data_ptr dptr;
+	__le32 numd;
+	__u8 doper;
+	__u8 dtype;
+	__le16 dspec;
+	__u8 endir;
+	__u8 tdtype;
+	__u16 rsvd15;
+	__u32 rsvd16[3];
+};
+
+struct nvme_command {
+	union {
+		struct nvme_common_command common;
+		struct nvme_rw_command rw;
+		struct nvme_identify identify;
+		struct nvme_features features;
+		struct nvme_create_cq create_cq;
+		struct nvme_create_sq create_sq;
+		struct nvme_delete_queue delete_queue;
+		struct nvme_download_firmware dlfw;
+		struct nvme_format_cmd format;
+		struct nvme_dsm_cmd dsm;
+		struct nvme_write_zeroes_cmd write_zeroes;
+		struct nvme_zone_mgmt_send_cmd zms;
+		struct nvme_zone_mgmt_recv_cmd zmr;
+		struct nvme_abort_cmd abort;
+		struct nvme_get_log_page_command get_log_page;
+		struct nvmf_common_command fabrics;
+		struct nvmf_connect_command connect;
+		struct nvmf_property_set_command prop_set;
+		struct nvmf_property_get_command prop_get;
+		struct nvmf_auth_common_command auth_common;
+		struct nvmf_auth_send_command auth_send;
+		struct nvmf_auth_receive_command auth_receive;
+		struct nvme_dbbuf dbbuf;
+		struct nvme_directive_cmd directive;
+	};
+};
+
+typedef void (*btf_trace_nvme_complete_rq)(void *, struct request *);
+
+struct nvme_ctrl;
+
+typedef void (*btf_trace_nvme_async_event)(void *, struct nvme_ctrl *, u32);
+
+enum nvme_ctrl_state {
+	NVME_CTRL_NEW = 0,
+	NVME_CTRL_LIVE = 1,
+	NVME_CTRL_RESETTING = 2,
+	NVME_CTRL_CONNECTING = 3,
+	NVME_CTRL_DELETING = 4,
+	NVME_CTRL_DELETING_NOIO = 5,
+	NVME_CTRL_DEAD = 6,
+};
+
+struct nvme_id_power_state {
+	__le16 max_power;
+	__u8 rsvd2;
+	__u8 flags;
+	__le32 entry_lat;
+	__le32 exit_lat;
+	__u8 read_tput;
+	__u8 read_lat;
+	__u8 write_tput;
+	__u8 write_lat;
+	__le16 idle_power;
+	__u8 idle_scale;
+	__u8 rsvd19;
+	__le16 active_power;
+	__u8 active_work_scale;
+	__u8 rsvd23[9];
+};
+
+struct nvme_fault_inject {};
+
+enum nvme_ctrl_type {
+	NVME_CTRL_IO = 1,
+	NVME_CTRL_DISC = 2,
+	NVME_CTRL_ADMIN = 3,
+};
+
+enum nvme_dctype {
+	NVME_DCTYPE_NOT_REPORTED = 0,
+	NVME_DCTYPE_DDC = 1,
+	NVME_DCTYPE_CDC = 2,
+};
+
+struct nvme_ctrl_ops;
+
+struct nvme_subsystem;
+
+struct nvme_effects_log;
+
+struct nvme_ana_rsp_hdr;
+
+struct nvmf_ctrl_options;
+
+struct nvme_ctrl {
+	bool comp_seen;
+	bool identified;
+	enum nvme_ctrl_state state;
+	spinlock_t lock;
+	struct mutex scan_lock;
+	const struct nvme_ctrl_ops *ops;
+	struct request_queue *admin_q;
+	struct request_queue *connect_q;
+	struct request_queue *fabrics_q;
+	struct device *dev;
+	int instance;
+	int numa_node;
+	struct blk_mq_tag_set *tagset;
+	struct blk_mq_tag_set *admin_tagset;
+	struct list_head namespaces;
+	struct rw_semaphore namespaces_rwsem;
+	struct device ctrl_device;
+	struct device *device;
+	struct cdev cdev;
+	struct work_struct reset_work;
+	struct work_struct delete_work;
+	wait_queue_head_t state_wq;
+	struct nvme_subsystem *subsys;
+	struct list_head subsys_entry;
+	struct opal_dev *opal_dev;
+	char name[12];
+	u16 cntlid;
+	u16 mtfa;
+	u32 ctrl_config;
+	u32 queue_count;
+	u64 cap;
+	u32 max_hw_sectors;
+	u32 max_segments;
+	u32 max_integrity_segments;
+	u32 max_discard_sectors;
+	u32 max_discard_segments;
+	u32 max_zeroes_sectors;
+	u32 max_zone_append;
+	u16 crdt[3];
+	u16 oncs;
+	u32 dmrsl;
+	u16 oacs;
+	u16 sqsize;
+	u32 max_namespaces;
+	atomic_t abort_limit;
+	u8 vwc;
+	u32 vs;
+	u32 sgls;
+	u16 kas;
+	u8 npss;
+	u8 apsta;
+	u16 wctemp;
+	u16 cctemp;
+	u32 oaes;
+	u32 aen_result;
+	u32 ctratt;
+	unsigned int shutdown_timeout;
+	unsigned int kato;
+	bool subsystem;
+	unsigned long quirks;
+	struct nvme_id_power_state psd[32];
+	struct nvme_effects_log *effects;
+	struct xarray cels;
+	struct work_struct scan_work;
+	struct work_struct async_event_work;
+	struct delayed_work ka_work;
+	struct delayed_work failfast_work;
+	struct nvme_command ka_cmd;
+	unsigned long ka_last_check_time;
+	struct work_struct fw_act_work;
+	unsigned long events;
+	u8 anacap;
+	u8 anatt;
+	u32 anagrpmax;
+	u32 nanagrpid;
+	struct mutex ana_lock;
+	struct nvme_ana_rsp_hdr *ana_log_buf;
+	size_t ana_log_size;
+	struct timer_list anatt_timer;
+	struct work_struct ana_work;
+	u64 ps_max_latency_us;
+	bool apst_enabled;
+	u16 hmmaxd;
+	u32 hmpre;
+	u32 hmmin;
+	u32 hmminds;
+	u32 ioccsz;
+	u32 iorcsz;
+	u16 icdoff;
+	u16 maxcmd;
+	int nr_reconnects;
+	unsigned long flags;
+	struct nvmf_ctrl_options *opts;
+	struct page *discard_page;
+	unsigned long discard_page_busy;
+	struct nvme_fault_inject fault_inject;
+	enum nvme_ctrl_type cntrltype;
+	enum nvme_dctype dctype;
+};
+
+struct nvme_ctrl_ops {
+	const char *name;
+	struct module *module;
+	unsigned int flags;
+	const struct attribute_group **dev_attr_groups;
+	int (*reg_read32)(struct nvme_ctrl *, u32, u32 *);
+	int (*reg_write32)(struct nvme_ctrl *, u32, u32);
+	int (*reg_read64)(struct nvme_ctrl *, u32, u64 *);
+	void (*free_ctrl)(struct nvme_ctrl *);
+	void (*submit_async_event)(struct nvme_ctrl *);
+	void (*delete_ctrl)(struct nvme_ctrl *);
+	void (*stop_ctrl)(struct nvme_ctrl *);
+	int (*get_address)(struct nvme_ctrl *, char *, int);
+	void (*print_device_info)(struct nvme_ctrl *);
+	bool (*supports_pci_p2pdma)(struct nvme_ctrl *);
+};
+
+enum nvme_subsys_type {
+	NVME_NQN_DISC = 1,
+	NVME_NQN_NVME = 2,
+	NVME_NQN_CURR = 3,
+};
+
+enum nvme_iopolicy {
+	NVME_IOPOLICY_NUMA = 0,
+	NVME_IOPOLICY_RR = 1,
+};
+
+struct nvme_subsystem {
+	int instance;
+	struct device dev;
+	struct kref ref;
+	struct list_head entry;
+	struct mutex lock;
+	struct list_head ctrls;
+	struct list_head nsheads;
+	char subnqn[223];
+	char serial[20];
+	char model[40];
+	char firmware_rev[8];
+	u8 cmic;
+	enum nvme_subsys_type subtype;
+	u16 vendor_id;
+	u16 awupf;
+	struct ida ns_ida;
+	enum nvme_iopolicy iopolicy;
+};
+
+struct nvme_effects_log {
+	__le32 acs[256];
+	__le32 iocs[256];
+	__u8 resv[2048];
+};
+
+struct nvme_ana_rsp_hdr {
+	__le64 chgcnt;
+	__le16 ngrps;
+	__le16 rsvd10[3];
+};
+
+struct nvmf_host;
+
+struct nvmf_ctrl_options {
+	unsigned int mask;
+	int max_reconnects;
+	char *transport;
+	char *subsysnqn;
+	char *traddr;
+	char *trsvcid;
+	char *host_traddr;
+	char *host_iface;
+	size_t queue_size;
+	unsigned int nr_io_queues;
+	unsigned int reconnect_delay;
+	bool discovery_nqn;
+	bool duplicate_connect;
+	unsigned int kato;
+	struct nvmf_host *host;
+	char *dhchap_secret;
+	char *dhchap_ctrl_secret;
+	bool disable_sqflow;
+	bool hdr_digest;
+	bool data_digest;
+	unsigned int nr_write_queues;
+	unsigned int nr_poll_queues;
+	int tos;
+	int fast_io_fail_tmo;
+};
+
+struct nvmf_host {
+	struct kref ref;
+	struct list_head list;
+	char nqn[223];
+	uuid_t id;
+};
+
+typedef void (*btf_trace_nvme_sq)(void *, struct request *, __le16, int);
+
+struct nvme_core_quirk_entry {
+	u16 vid;
+	const char *mn;
+	const char *fr;
+	unsigned long quirks;
+};
+
+enum nvme_disposition {
+	COMPLETE = 0,
+	RETRY = 1,
+	FAILOVER = 2,
+	AUTHENTICATE = 3,
+};
+
+enum {
+	NVME_SC_SUCCESS = 0,
+	NVME_SC_INVALID_OPCODE = 1,
+	NVME_SC_INVALID_FIELD = 2,
+	NVME_SC_CMDID_CONFLICT = 3,
+	NVME_SC_DATA_XFER_ERROR = 4,
+	NVME_SC_POWER_LOSS = 5,
+	NVME_SC_INTERNAL = 6,
+	NVME_SC_ABORT_REQ = 7,
+	NVME_SC_ABORT_QUEUE = 8,
+	NVME_SC_FUSED_FAIL = 9,
+	NVME_SC_FUSED_MISSING = 10,
+	NVME_SC_INVALID_NS = 11,
+	NVME_SC_CMD_SEQ_ERROR = 12,
+	NVME_SC_SGL_INVALID_LAST = 13,
+	NVME_SC_SGL_INVALID_COUNT = 14,
+	NVME_SC_SGL_INVALID_DATA = 15,
+	NVME_SC_SGL_INVALID_METADATA = 16,
+	NVME_SC_SGL_INVALID_TYPE = 17,
+	NVME_SC_CMB_INVALID_USE = 18,
+	NVME_SC_PRP_INVALID_OFFSET = 19,
+	NVME_SC_ATOMIC_WU_EXCEEDED = 20,
+	NVME_SC_OP_DENIED = 21,
+	NVME_SC_SGL_INVALID_OFFSET = 22,
+	NVME_SC_RESERVED = 23,
+	NVME_SC_HOST_ID_INCONSIST = 24,
+	NVME_SC_KA_TIMEOUT_EXPIRED = 25,
+	NVME_SC_KA_TIMEOUT_INVALID = 26,
+	NVME_SC_ABORTED_PREEMPT_ABORT = 27,
+	NVME_SC_SANITIZE_FAILED = 28,
+	NVME_SC_SANITIZE_IN_PROGRESS = 29,
+	NVME_SC_SGL_INVALID_GRANULARITY = 30,
+	NVME_SC_CMD_NOT_SUP_CMB_QUEUE = 31,
+	NVME_SC_NS_WRITE_PROTECTED = 32,
+	NVME_SC_CMD_INTERRUPTED = 33,
+	NVME_SC_TRANSIENT_TR_ERR = 34,
+	NVME_SC_ADMIN_COMMAND_MEDIA_NOT_READY = 36,
+	NVME_SC_INVALID_IO_CMD_SET = 44,
+	NVME_SC_LBA_RANGE = 128,
+	NVME_SC_CAP_EXCEEDED = 129,
+	NVME_SC_NS_NOT_READY = 130,
+	NVME_SC_RESERVATION_CONFLICT = 131,
+	NVME_SC_FORMAT_IN_PROGRESS = 132,
+	NVME_SC_CQ_INVALID = 256,
+	NVME_SC_QID_INVALID = 257,
+	NVME_SC_QUEUE_SIZE = 258,
+	NVME_SC_ABORT_LIMIT = 259,
+	NVME_SC_ABORT_MISSING = 260,
+	NVME_SC_ASYNC_LIMIT = 261,
+	NVME_SC_FIRMWARE_SLOT = 262,
+	NVME_SC_FIRMWARE_IMAGE = 263,
+	NVME_SC_INVALID_VECTOR = 264,
+	NVME_SC_INVALID_LOG_PAGE = 265,
+	NVME_SC_INVALID_FORMAT = 266,
+	NVME_SC_FW_NEEDS_CONV_RESET = 267,
+	NVME_SC_INVALID_QUEUE = 268,
+	NVME_SC_FEATURE_NOT_SAVEABLE = 269,
+	NVME_SC_FEATURE_NOT_CHANGEABLE = 270,
+	NVME_SC_FEATURE_NOT_PER_NS = 271,
+	NVME_SC_FW_NEEDS_SUBSYS_RESET = 272,
+	NVME_SC_FW_NEEDS_RESET = 273,
+	NVME_SC_FW_NEEDS_MAX_TIME = 274,
+	NVME_SC_FW_ACTIVATE_PROHIBITED = 275,
+	NVME_SC_OVERLAPPING_RANGE = 276,
+	NVME_SC_NS_INSUFFICIENT_CAP = 277,
+	NVME_SC_NS_ID_UNAVAILABLE = 278,
+	NVME_SC_NS_ALREADY_ATTACHED = 280,
+	NVME_SC_NS_IS_PRIVATE = 281,
+	NVME_SC_NS_NOT_ATTACHED = 282,
+	NVME_SC_THIN_PROV_NOT_SUPP = 283,
+	NVME_SC_CTRL_LIST_INVALID = 284,
+	NVME_SC_SELT_TEST_IN_PROGRESS = 285,
+	NVME_SC_BP_WRITE_PROHIBITED = 286,
+	NVME_SC_CTRL_ID_INVALID = 287,
+	NVME_SC_SEC_CTRL_STATE_INVALID = 288,
+	NVME_SC_CTRL_RES_NUM_INVALID = 289,
+	NVME_SC_RES_ID_INVALID = 290,
+	NVME_SC_PMR_SAN_PROHIBITED = 291,
+	NVME_SC_ANA_GROUP_ID_INVALID = 292,
+	NVME_SC_ANA_ATTACH_FAILED = 293,
+	NVME_SC_BAD_ATTRIBUTES = 384,
+	NVME_SC_INVALID_PI = 385,
+	NVME_SC_READ_ONLY = 386,
+	NVME_SC_ONCS_NOT_SUPPORTED = 387,
+	NVME_SC_CONNECT_FORMAT = 384,
+	NVME_SC_CONNECT_CTRL_BUSY = 385,
+	NVME_SC_CONNECT_INVALID_PARAM = 386,
+	NVME_SC_CONNECT_RESTART_DISC = 387,
+	NVME_SC_CONNECT_INVALID_HOST = 388,
+	NVME_SC_DISCOVERY_RESTART = 400,
+	NVME_SC_AUTH_REQUIRED = 401,
+	NVME_SC_ZONE_BOUNDARY_ERROR = 440,
+	NVME_SC_ZONE_FULL = 441,
+	NVME_SC_ZONE_READ_ONLY = 442,
+	NVME_SC_ZONE_OFFLINE = 443,
+	NVME_SC_ZONE_INVALID_WRITE = 444,
+	NVME_SC_ZONE_TOO_MANY_ACTIVE = 445,
+	NVME_SC_ZONE_TOO_MANY_OPEN = 446,
+	NVME_SC_ZONE_INVALID_TRANSITION = 447,
+	NVME_SC_WRITE_FAULT = 640,
+	NVME_SC_READ_ERROR = 641,
+	NVME_SC_GUARD_CHECK = 642,
+	NVME_SC_APPTAG_CHECK = 643,
+	NVME_SC_REFTAG_CHECK = 644,
+	NVME_SC_COMPARE_FAILED = 645,
+	NVME_SC_ACCESS_DENIED = 646,
+	NVME_SC_UNWRITTEN_BLOCK = 647,
+	NVME_SC_INTERNAL_PATH_ERROR = 768,
+	NVME_SC_ANA_PERSISTENT_LOSS = 769,
+	NVME_SC_ANA_INACCESSIBLE = 770,
+	NVME_SC_ANA_TRANSITION = 771,
+	NVME_SC_CTRL_PATH_ERROR = 864,
+	NVME_SC_HOST_PATH_ERROR = 880,
+	NVME_SC_HOST_ABORTED_CMD = 881,
+	NVME_SC_CRD = 6144,
+	NVME_SC_MORE = 8192,
+	NVME_SC_DNR = 16384,
+};
+
+enum {
+	NVME_REQ_CANCELLED = 1,
+	NVME_REQ_USERCMD = 2,
+	NVME_MPATH_IO_STATS = 4,
+};
+
+enum nvme_ana_state {
+	NVME_ANA_OPTIMIZED = 1,
+	NVME_ANA_NONOPTIMIZED = 2,
+	NVME_ANA_INACCESSIBLE = 3,
+	NVME_ANA_PERSISTENT_LOSS = 4,
+	NVME_ANA_CHANGE = 15,
+};
+
+enum {
+	NVME_CMD_FUSE_FIRST = 1,
+	NVME_CMD_FUSE_SECOND = 2,
+	NVME_CMD_SGL_METABUF = 64,
+	NVME_CMD_SGL_METASEG = 128,
+	NVME_CMD_SGL_ALL = 192,
+};
+
+enum nvme_ctrl_flags {
+	NVME_CTRL_FAILFAST_EXPIRED = 0,
+	NVME_CTRL_ADMIN_Q_STOPPED = 1,
+	NVME_CTRL_STARTED_ONCE = 2,
+	NVME_CTRL_STOPPED = 3,
+	NVME_CTRL_SKIP_ID_CNS_CS = 4,
+	NVME_CTRL_DIRTY_CAPABILITY = 5,
+	NVME_CTRL_FROZEN = 6,
+};
+
+enum nvmf_capsule_command {
+	nvme_fabrics_type_property_set = 0,
+	nvme_fabrics_type_connect = 1,
+	nvme_fabrics_type_property_get = 4,
+	nvme_fabrics_type_auth_send = 5,
+	nvme_fabrics_type_auth_receive = 6,
+};
+
+enum nvme_zone_mgmt_action {
+	NVME_ZONE_CLOSE = 1,
+	NVME_ZONE_FINISH = 2,
+	NVME_ZONE_OPEN = 3,
+	NVME_ZONE_RESET = 4,
+	NVME_ZONE_OFFLINE = 5,
+	NVME_ZONE_SET_DESC_EXT = 16,
+};
+
+enum nvme_opcode {
+	nvme_cmd_flush = 0,
+	nvme_cmd_write = 1,
+	nvme_cmd_read = 2,
+	nvme_cmd_write_uncor = 4,
+	nvme_cmd_compare = 5,
+	nvme_cmd_write_zeroes = 8,
+	nvme_cmd_dsm = 9,
+	nvme_cmd_verify = 12,
+	nvme_cmd_resv_register = 13,
+	nvme_cmd_resv_report = 14,
+	nvme_cmd_resv_acquire = 17,
+	nvme_cmd_resv_release = 21,
+	nvme_cmd_zone_mgmt_send = 121,
+	nvme_cmd_zone_mgmt_recv = 122,
+	nvme_cmd_zone_append = 125,
+	nvme_cmd_vendor_start = 128,
+};
+
+enum {
+	NVME_CMD_EFFECTS_CSUPP = 1,
+	NVME_CMD_EFFECTS_LBCC = 2,
+	NVME_CMD_EFFECTS_NCC = 4,
+	NVME_CMD_EFFECTS_NIC = 8,
+	NVME_CMD_EFFECTS_CCC = 16,
+	NVME_CMD_EFFECTS_CSE_MASK = 458752,
+	NVME_CMD_EFFECTS_UUID_SEL = 524288,
+	NVME_CMD_EFFECTS_SCOPE_MASK = 4293918720,
+};
+
+enum nvme_admin_opcode {
+	nvme_admin_delete_sq = 0,
+	nvme_admin_create_sq = 1,
+	nvme_admin_get_log_page = 2,
+	nvme_admin_delete_cq = 4,
+	nvme_admin_create_cq = 5,
+	nvme_admin_identify = 6,
+	nvme_admin_abort_cmd = 8,
+	nvme_admin_set_features = 9,
+	nvme_admin_get_features = 10,
+	nvme_admin_async_event = 12,
+	nvme_admin_ns_mgmt = 13,
+	nvme_admin_activate_fw = 16,
+	nvme_admin_download_fw = 17,
+	nvme_admin_dev_self_test = 20,
+	nvme_admin_ns_attach = 21,
+	nvme_admin_keep_alive = 24,
+	nvme_admin_directive_send = 25,
+	nvme_admin_directive_recv = 26,
+	nvme_admin_virtual_mgmt = 28,
+	nvme_admin_nvme_mi_send = 29,
+	nvme_admin_nvme_mi_recv = 30,
+	nvme_admin_dbbuf = 124,
+	nvme_admin_format_nvm = 128,
+	nvme_admin_security_send = 129,
+	nvme_admin_security_recv = 130,
+	nvme_admin_sanitize_nvm = 132,
+	nvme_admin_get_lba_status = 134,
+	nvme_admin_vendor_start = 192,
+};
+
+enum {
+	NVME_QUEUE_PHYS_CONTIG = 1,
+	NVME_CQ_IRQ_ENABLED = 2,
+	NVME_SQ_PRIO_URGENT = 0,
+	NVME_SQ_PRIO_HIGH = 2,
+	NVME_SQ_PRIO_MEDIUM = 4,
+	NVME_SQ_PRIO_LOW = 6,
+	NVME_FEAT_ARBITRATION = 1,
+	NVME_FEAT_POWER_MGMT = 2,
+	NVME_FEAT_LBA_RANGE = 3,
+	NVME_FEAT_TEMP_THRESH = 4,
+	NVME_FEAT_ERR_RECOVERY = 5,
+	NVME_FEAT_VOLATILE_WC = 6,
+	NVME_FEAT_NUM_QUEUES = 7,
+	NVME_FEAT_IRQ_COALESCE = 8,
+	NVME_FEAT_IRQ_CONFIG = 9,
+	NVME_FEAT_WRITE_ATOMIC = 10,
+	NVME_FEAT_ASYNC_EVENT = 11,
+	NVME_FEAT_AUTO_PST = 12,
+	NVME_FEAT_HOST_MEM_BUF = 13,
+	NVME_FEAT_TIMESTAMP = 14,
+	NVME_FEAT_KATO = 15,
+	NVME_FEAT_HCTM = 16,
+	NVME_FEAT_NOPSC = 17,
+	NVME_FEAT_RRL = 18,
+	NVME_FEAT_PLM_CONFIG = 19,
+	NVME_FEAT_PLM_WINDOW = 20,
+	NVME_FEAT_HOST_BEHAVIOR = 22,
+	NVME_FEAT_SANITIZE = 23,
+	NVME_FEAT_SW_PROGRESS = 128,
+	NVME_FEAT_HOST_ID = 129,
+	NVME_FEAT_RESV_MASK = 130,
+	NVME_FEAT_RESV_PERSIST = 131,
+	NVME_FEAT_WRITE_PROTECT = 132,
+	NVME_FEAT_VENDOR_START = 192,
+	NVME_FEAT_VENDOR_END = 255,
+	NVME_LOG_ERROR = 1,
+	NVME_LOG_SMART = 2,
+	NVME_LOG_FW_SLOT = 3,
+	NVME_LOG_CHANGED_NS = 4,
+	NVME_LOG_CMD_EFFECTS = 5,
+	NVME_LOG_DEVICE_SELF_TEST = 6,
+	NVME_LOG_TELEMETRY_HOST = 7,
+	NVME_LOG_TELEMETRY_CTRL = 8,
+	NVME_LOG_ENDURANCE_GROUP = 9,
+	NVME_LOG_ANA = 12,
+	NVME_LOG_DISC = 112,
+	NVME_LOG_RESERVATION = 128,
+	NVME_FWACT_REPL = 0,
+	NVME_FWACT_REPL_ACTV = 8,
+	NVME_FWACT_ACTV = 16,
+};
+
+enum nvme_quirks {
+	NVME_QUIRK_STRIPE_SIZE = 1,
+	NVME_QUIRK_IDENTIFY_CNS = 2,
+	NVME_QUIRK_DEALLOCATE_ZEROES = 4,
+	NVME_QUIRK_DELAY_BEFORE_CHK_RDY = 8,
+	NVME_QUIRK_NO_APST = 16,
+	NVME_QUIRK_NO_DEEPEST_PS = 32,
+	NVME_QUIRK_MEDIUM_PRIO_SQ = 128,
+	NVME_QUIRK_IGNORE_DEV_SUBNQN = 256,
+	NVME_QUIRK_DISABLE_WRITE_ZEROES = 512,
+	NVME_QUIRK_SIMPLE_SUSPEND = 1024,
+	NVME_QUIRK_SINGLE_VECTOR = 2048,
+	NVME_QUIRK_128_BYTES_SQES = 4096,
+	NVME_QUIRK_SHARED_TAGS = 8192,
+	NVME_QUIRK_NO_TEMP_THRESH_CHANGE = 16384,
+	NVME_QUIRK_NO_NS_DESC_LIST = 32768,
+	NVME_QUIRK_DMA_ADDRESS_BITS_48 = 65536,
+	NVME_QUIRK_SKIP_CID_GEN = 131072,
+	NVME_QUIRK_BOGUS_NID = 262144,
+	NVME_QUIRK_NO_SECONDARY_TEMP_THRESH = 524288,
+	NVME_QUIRK_FORCE_NO_SIMPLE_SUSPEND = 1048576,
+};
+
+enum {
+	NVME_CAP_CSS_NVM = 1,
+	NVME_CAP_CSS_CSI = 64,
+};
+
+enum {
+	NVME_CAP_CRMS_CRWMS = 576460752303423488ULL,
+	NVME_CAP_CRMS_CRIMS = 1152921504606846976ULL,
+};
+
+enum {
+	NVME_AER_ERROR = 0,
+	NVME_AER_SMART = 1,
+	NVME_AER_NOTICE = 2,
+	NVME_AER_CSS = 6,
+	NVME_AER_VS = 7,
+};
+
+enum {
+	NVME_AER_ERROR_PERSIST_INT_ERR = 3,
+};
+
+enum nvmf_fabrics_opcode {
+	nvme_fabrics_command = 127,
+};
+
+enum nvme_ns_features {
+	NVME_NS_EXT_LBAS = 1,
+	NVME_NS_METADATA_SUPPORTED = 2,
+	NVME_NS_DEAC = 3,
+};
+
+enum {
+	NVME_RW_LR = 32768,
+	NVME_RW_FUA = 16384,
+	NVME_RW_APPEND_PIREMAP = 512,
+	NVME_RW_DSM_FREQ_UNSPEC = 0,
+	NVME_RW_DSM_FREQ_TYPICAL = 1,
+	NVME_RW_DSM_FREQ_RARE = 2,
+	NVME_RW_DSM_FREQ_READS = 3,
+	NVME_RW_DSM_FREQ_WRITES = 4,
+	NVME_RW_DSM_FREQ_RW = 5,
+	NVME_RW_DSM_FREQ_ONCE = 6,
+	NVME_RW_DSM_FREQ_PREFETCH = 7,
+	NVME_RW_DSM_FREQ_TEMP = 8,
+	NVME_RW_DSM_LATENCY_NONE = 0,
+	NVME_RW_DSM_LATENCY_IDLE = 16,
+	NVME_RW_DSM_LATENCY_NORM = 32,
+	NVME_RW_DSM_LATENCY_LOW = 48,
+	NVME_RW_DSM_SEQ_REQ = 64,
+	NVME_RW_DSM_COMPRESSED = 128,
+	NVME_RW_PRINFO_PRCHK_REF = 1024,
+	NVME_RW_PRINFO_PRCHK_APP = 2048,
+	NVME_RW_PRINFO_PRCHK_GUARD = 4096,
+	NVME_RW_PRINFO_PRACT = 8192,
+	NVME_RW_DTYPE_STREAMS = 16,
+	NVME_WZ_DEAC = 512,
+};
+
+enum {
+	NVME_NS_FEAT_THIN = 1,
+	NVME_NS_FEAT_ATOMICS = 2,
+	NVME_NS_FEAT_IO_OPT = 16,
+	NVME_NS_ATTR_RO = 1,
+	NVME_NS_FLBAS_LBA_MASK = 15,
+	NVME_NS_FLBAS_LBA_UMASK = 96,
+	NVME_NS_FLBAS_LBA_SHIFT = 1,
+	NVME_NS_FLBAS_META_EXT = 16,
+	NVME_NS_NMIC_SHARED = 1,
+	NVME_LBAF_RP_BEST = 0,
+	NVME_LBAF_RP_BETTER = 1,
+	NVME_LBAF_RP_GOOD = 2,
+	NVME_LBAF_RP_DEGRADED = 3,
+	NVME_NS_DPC_PI_LAST = 16,
+	NVME_NS_DPC_PI_FIRST = 8,
+	NVME_NS_DPC_PI_TYPE3 = 4,
+	NVME_NS_DPC_PI_TYPE2 = 2,
+	NVME_NS_DPC_PI_TYPE1 = 1,
+	NVME_NS_DPS_PI_FIRST = 8,
+	NVME_NS_DPS_PI_MASK = 7,
+	NVME_NS_DPS_PI_TYPE1 = 1,
+	NVME_NS_DPS_PI_TYPE2 = 2,
+	NVME_NS_DPS_PI_TYPE3 = 3,
+};
+
+enum {
+	NVME_NVM_NS_16B_GUARD = 0,
+	NVME_NVM_NS_32B_GUARD = 1,
+	NVME_NVM_NS_64B_GUARD = 2,
+};
+
+enum {
+	NVME_DSMGMT_IDR = 1,
+	NVME_DSMGMT_IDW = 2,
+	NVME_DSMGMT_AD = 4,
+};
+
+enum {
+	NVME_ID_CNS_NS = 0,
+	NVME_ID_CNS_CTRL = 1,
+	NVME_ID_CNS_NS_ACTIVE_LIST = 2,
+	NVME_ID_CNS_NS_DESC_LIST = 3,
+	NVME_ID_CNS_CS_NS = 5,
+	NVME_ID_CNS_CS_CTRL = 6,
+	NVME_ID_CNS_NS_CS_INDEP = 8,
+	NVME_ID_CNS_NS_PRESENT_LIST = 16,
+	NVME_ID_CNS_NS_PRESENT = 17,
+	NVME_ID_CNS_CTRL_NS_LIST = 18,
+	NVME_ID_CNS_CTRL_LIST = 19,
+	NVME_ID_CNS_SCNDRY_CTRL_LIST = 21,
+	NVME_ID_CNS_NS_GRANULARITY = 22,
+	NVME_ID_CNS_UUID_LIST = 23,
+};
+
+enum {
+	NVME_CTRL_CMIC_MULTI_PORT = 1,
+	NVME_CTRL_CMIC_MULTI_CTRL = 2,
+	NVME_CTRL_CMIC_ANA = 8,
+	NVME_CTRL_ONCS_COMPARE = 1,
+	NVME_CTRL_ONCS_WRITE_UNCORRECTABLE = 2,
+	NVME_CTRL_ONCS_DSM = 4,
+	NVME_CTRL_ONCS_WRITE_ZEROES = 8,
+	NVME_CTRL_ONCS_RESERVATIONS = 32,
+	NVME_CTRL_ONCS_TIMESTAMP = 64,
+	NVME_CTRL_VWC_PRESENT = 1,
+	NVME_CTRL_OACS_SEC_SUPP = 1,
+	NVME_CTRL_OACS_NS_MNGT_SUPP = 8,
+	NVME_CTRL_OACS_DIRECTIVES = 32,
+	NVME_CTRL_OACS_DBBUF_SUPP = 256,
+	NVME_CTRL_LPA_CMD_EFFECTS_LOG = 2,
+	NVME_CTRL_CTRATT_128_ID = 1,
+	NVME_CTRL_CTRATT_NON_OP_PSP = 2,
+	NVME_CTRL_CTRATT_NVM_SETS = 4,
+	NVME_CTRL_CTRATT_READ_RECV_LVLS = 8,
+	NVME_CTRL_CTRATT_ENDURANCE_GROUPS = 16,
+	NVME_CTRL_CTRATT_PREDICTABLE_LAT = 32,
+	NVME_CTRL_CTRATT_NAMESPACE_GRANULARITY = 128,
+	NVME_CTRL_CTRATT_UUID_LIST = 512,
+};
+
+enum {
+	NVME_CSI_NVM = 0,
+	NVME_CSI_ZNS = 2,
+};
+
+enum {
+	NVME_PS_FLAGS_MAX_POWER_SCALE = 1,
+	NVME_PS_FLAGS_NON_OP_STATE = 2,
+};
+
+enum {
+	NVME_ENABLE_ACRE = 1,
+	NVME_ENABLE_LBAFEE = 1,
+};
+
+enum nvme_ctrl_attr {
+	NVME_CTRL_ATTR_HID_128_BIT = 1,
+	NVME_CTRL_ATTR_TBKAS = 64,
+	NVME_CTRL_ATTR_ELBAS = 32768,
+};
+
+enum {
+	NVME_AER_NOTICE_NS_CHANGED = 0,
+	NVME_AER_NOTICE_FW_ACT_STARTING = 1,
+	NVME_AER_NOTICE_ANA = 3,
+	NVME_AER_NOTICE_DISC_CHANGED = 240,
+};
+
+enum {
+	NVME_AEN_CFG_NS_ATTR = 256,
+	NVME_AEN_CFG_FW_ACT = 512,
+	NVME_AEN_CFG_ANA_CHANGE = 2048,
+	NVME_AEN_CFG_DISC_CHANGE = -2147483648,
+};
+
+enum {
+	NVME_NIDT_EUI64 = 1,
+	NVME_NIDT_NGUID = 2,
+	NVME_NIDT_UUID = 3,
+	NVME_NIDT_CSI = 4,
+};
+
+enum {
+	NVME_NSTAT_NRDY = 1,
+};
+
+enum {
+	NVME_ID_NS_NVM_STS_MASK = 127,
+	NVME_ID_NS_NVM_GUARD_SHIFT = 7,
+	NVME_ID_NS_NVM_GUARD_MASK = 3,
+};
+
+struct nvme_ns_head;
+
+struct nvme_ns {
+	struct list_head list;
+	struct nvme_ctrl *ctrl;
+	struct request_queue *queue;
+	struct gendisk *disk;
+	enum nvme_ana_state ana_state;
+	u32 ana_grpid;
+	struct list_head siblings;
+	struct kref kref;
+	struct nvme_ns_head *head;
+	int lba_shift;
+	u16 ms;
+	u16 pi_size;
+	u16 sgs;
+	u32 sws;
+	u8 pi_type;
+	u8 guard_type;
+	u64 zsze;
+	unsigned long features;
+	unsigned long flags;
+	struct cdev cdev;
+	struct device cdev_device;
+	struct nvme_fault_inject fault_inject;
+};
+
+struct nvme_ns_ids {
+	u8 eui64[8];
+	u8 nguid[16];
+	uuid_t uuid;
+	u8 csi;
+};
+
+struct nvme_ns_head {
+	struct list_head list;
+	struct srcu_struct srcu;
+	struct nvme_subsystem *subsys;
+	unsigned int ns_id;
+	struct nvme_ns_ids ids;
+	struct list_head entry;
+	struct kref ref;
+	bool shared;
+	int instance;
+	struct nvme_effects_log *effects;
+	struct cdev cdev;
+	struct device cdev_device;
+	struct gendisk *disk;
+	struct bio_list requeue_list;
+	spinlock_t requeue_lock;
+	struct work_struct requeue_work;
+	struct mutex lock;
+	unsigned long flags;
+	struct nvme_ns __attribute__((btf_type_tag("rcu"))) *current_path[0];
+};
+
+struct trace_event_raw_nvme_setup_cmd {
+	struct trace_entry ent;
+	char disk[32];
+	int ctrl_id;
+	int qid;
+	u8 opcode;
+	u8 flags;
+	u8 fctype;
+	u16 cid;
+	u32 nsid;
+	bool metadata;
+	u8 cdw10[24];
+	char __data[0];
+};
+
+struct trace_event_raw_nvme_complete_rq {
+	struct trace_entry ent;
+	char disk[32];
+	int ctrl_id;
+	int qid;
+	int cid;
+	u64 result;
+	u8 retries;
+	u8 flags;
+	u16 status;
+	char __data[0];
+};
+
+struct trace_event_raw_nvme_async_event {
+	struct trace_entry ent;
+	int ctrl_id;
+	u32 result;
+	char __data[0];
+};
+
+struct trace_event_raw_nvme_sq {
+	struct trace_entry ent;
+	int ctrl_id;
+	char disk[32];
+	int qid;
+	u16 sq_head;
+	u16 sq_tail;
+	char __data[0];
+};
+
+union nvme_result {
+	__le16 u16;
+	__le32 u32;
+	__le64 u64;
+};
+
+struct nvme_id_ctrl {
+	__le16 vid;
+	__le16 ssvid;
+	char sn[20];
+	char mn[40];
+	char fr[8];
+	__u8 rab;
+	__u8 ieee[3];
+	__u8 cmic;
+	__u8 mdts;
+	__le16 cntlid;
+	__le32 ver;
+	__le32 rtd3r;
+	__le32 rtd3e;
+	__le32 oaes;
+	__le32 ctratt;
+	__u8 rsvd100[11];
+	__u8 cntrltype;
+	__u8 fguid[16];
+	__le16 crdt1;
+	__le16 crdt2;
+	__le16 crdt3;
+	__u8 rsvd134[122];
+	__le16 oacs;
+	__u8 acl;
+	__u8 aerl;
+	__u8 frmw;
+	__u8 lpa;
+	__u8 elpe;
+	__u8 npss;
+	__u8 avscc;
+	__u8 apsta;
+	__le16 wctemp;
+	__le16 cctemp;
+	__le16 mtfa;
+	__le32 hmpre;
+	__le32 hmmin;
+	__u8 tnvmcap[16];
+	__u8 unvmcap[16];
+	__le32 rpmbs;
+	__le16 edstt;
+	__u8 dsto;
+	__u8 fwug;
+	__le16 kas;
+	__le16 hctma;
+	__le16 mntmt;
+	__le16 mxtmt;
+	__le32 sanicap;
+	__le32 hmminds;
+	__le16 hmmaxd;
+	__u8 rsvd338[4];
+	__u8 anatt;
+	__u8 anacap;
+	__le32 anagrpmax;
+	__le32 nanagrpid;
+	__u8 rsvd352[160];
+	__u8 sqes;
+	__u8 cqes;
+	__le16 maxcmd;
+	__le32 nn;
+	__le16 oncs;
+	__le16 fuses;
+	__u8 fna;
+	__u8 vwc;
+	__le16 awun;
+	__le16 awupf;
+	__u8 nvscc;
+	__u8 nwpc;
+	__le16 acwu;
+	__u8 rsvd534[2];
+	__le32 sgls;
+	__le32 mnan;
+	__u8 rsvd544[224];
+	char subnqn[256];
+	__u8 rsvd1024[768];
+	__le32 ioccsz;
+	__le32 iorcsz;
+	__le16 icdoff;
+	__u8 ctrattr;
+	__u8 msdbd;
+	__u8 rsvd1804[2];
+	__u8 dctype;
+	__u8 rsvd1807[241];
+	struct nvme_id_power_state psd[32];
+	__u8 vs[1024];
+};
+
+struct nvme_feat_host_behavior {
+	__u8 acre;
+	__u8 etdas;
+	__u8 lbafee;
+	__u8 resv1[509];
+};
+
+struct nvme_id_ctrl_nvm {
+	__u8 vsl;
+	__u8 wzsl;
+	__u8 wusl;
+	__u8 dmrl;
+	__le32 dmrsl;
+	__le64 dmsl;
+	__u8 rsvd16[4080];
+};
+
+struct nvme_fw_slot_info_log {
+	__u8 afi;
+	__u8 rsvd1[7];
+	__le64 frs[7];
+	__u8 rsvd64[448];
+};
+
+struct nvme_ns_info {
+	struct nvme_ns_ids ids;
+	u32 nsid;
+	__le32 anagrpid;
+	bool is_shared;
+	bool is_readonly;
+	bool is_ready;
+	bool is_removed;
+};
+
+struct nvme_ns_id_desc {
+	__u8 nidt;
+	__u8 nidl;
+	__le16 reserved;
+};
+
+struct nvme_lbaf {
+	__le16 ms;
+	__u8 ds;
+	__u8 rp;
+};
+
+struct nvme_id_ns {
+	__le64 nsze;
+	__le64 ncap;
+	__le64 nuse;
+	__u8 nsfeat;
+	__u8 nlbaf;
+	__u8 flbas;
+	__u8 mc;
+	__u8 dpc;
+	__u8 dps;
+	__u8 nmic;
+	__u8 rescap;
+	__u8 fpi;
+	__u8 dlfeat;
+	__le16 nawun;
+	__le16 nawupf;
+	__le16 nacwu;
+	__le16 nabsn;
+	__le16 nabo;
+	__le16 nabspf;
+	__le16 noiob;
+	__u8 nvmcap[16];
+	__le16 npwg;
+	__le16 npwa;
+	__le16 npdg;
+	__le16 npda;
+	__le16 nows;
+	__u8 rsvd74[18];
+	__le32 anagrpid;
+	__u8 rsvd96[3];
+	__u8 nsattr;
+	__le16 nvmsetid;
+	__le16 endgid;
+	__u8 nguid[16];
+	__u8 eui64[8];
+	struct nvme_lbaf lbaf[64];
+	__u8 vs[3712];
+};
+
+struct nvme_id_ns_cs_indep {
+	__u8 nsfeat;
+	__u8 nmic;
+	__u8 rescap;
+	__u8 fpi;
+	__le32 anagrpid;
+	__u8 nsattr;
+	__u8 rsvd9;
+	__le16 nvmsetid;
+	__le16 endgid;
+	__u8 nstat;
+	__u8 rsvd15[4081];
+};
+
+struct nvme_id_ns_nvm {
+	__le64 lbstm;
+	__u8 pic;
+	__u8 rsvd9[3];
+	__le32 elbaf[64];
+	__u8 rsvd268[3828];
+};
+
+struct trace_event_data_offsets_nvme_setup_cmd {};
+
+struct trace_event_data_offsets_nvme_complete_rq {};
+
+struct trace_event_data_offsets_nvme_async_event {};
+
+struct trace_event_data_offsets_nvme_sq {};
+
+struct nvme_request {
+	struct nvme_command *cmd;
+	union nvme_result result;
+	u8 genctr;
+	u8 retries;
+	u8 flags;
+	u16 status;
+	unsigned long start_time;
+	struct nvme_ctrl *ctrl;
+};
+
+struct nvme_dsm_range {
+	__le32 cattr;
+	__le32 nlb;
+	__le64 slba;
+};
+
+struct nvme_feat_auto_pst {
+	__le64 entries[32];
+};
+
+enum {
+	NVME_IOCTL_VEC = 1,
+	NVME_IOCTL_PARTITION = 2,
+};
+
+struct nvme_uring_cmd_pdu {
+	union {
+		struct bio *bio;
+		struct request *req;
+	};
+	u32 meta_len;
+	u32 nvme_status;
+	union {
+		struct {
+			void *meta;
+			void __attribute__((btf_type_tag("user"))) *meta_buffer;
+		};
+		u64 result;
+	} u;
+};
+
+struct nvme_user_io {
+	__u8 opcode;
+	__u8 flags;
+	__u16 control;
+	__u16 nblocks;
+	__u16 rsvd;
+	__u64 metadata;
+	__u64 addr;
+	__u64 slba;
+	__u32 dsmgmt;
+	__u32 reftag;
+	__u16 apptag;
+	__u16 appmask;
+};
+
+struct nvme_uring_cmd {
+	__u8 opcode;
+	__u8 flags;
+	__u16 rsvd1;
+	__u32 nsid;
+	__u32 cdw2;
+	__u32 cdw3;
+	__u64 metadata;
+	__u64 addr;
+	__u32 metadata_len;
+	__u32 data_len;
+	__u32 cdw10;
+	__u32 cdw11;
+	__u32 cdw12;
+	__u32 cdw13;
+	__u32 cdw14;
+	__u32 cdw15;
+	__u32 timeout_ms;
+	__u32 rsvd2;
+};
+
+struct nvme_uring_data {
+	__u64 metadata;
+	__u64 addr;
+	__u32 data_len;
+	__u32 metadata_len;
+	__u32 timeout_ms;
+};
+
+struct nvme_passthru_cmd {
+	__u8 opcode;
+	__u8 flags;
+	__u16 rsvd1;
+	__u32 nsid;
+	__u32 cdw2;
+	__u32 cdw3;
+	__u64 metadata;
+	__u64 addr;
+	__u32 metadata_len;
+	__u32 data_len;
+	__u32 cdw10;
+	__u32 cdw11;
+	__u32 cdw12;
+	__u32 cdw13;
+	__u32 cdw14;
+	__u32 cdw15;
+	__u32 timeout_ms;
+	__u32 result;
+};
+
+struct nvme_passthru_cmd64 {
+	__u8 opcode;
+	__u8 flags;
+	__u16 rsvd1;
+	__u32 nsid;
+	__u32 cdw2;
+	__u32 cdw3;
+	__u64 metadata;
+	__u64 addr;
+	__u32 metadata_len;
+	union {
+		__u32 data_len;
+		__u32 vec_cnt;
+	};
+	__u32 cdw10;
+	__u32 cdw11;
+	__u32 cdw12;
+	__u32 cdw13;
+	__u32 cdw14;
+	__u32 cdw15;
+	__u32 timeout_ms;
+	__u32 rsvd2;
+	__u64 result;
+};
+
+enum nvme_pr_type {
+	NVME_PR_WRITE_EXCLUSIVE = 1,
+	NVME_PR_EXCLUSIVE_ACCESS = 2,
+	NVME_PR_WRITE_EXCLUSIVE_REG_ONLY = 3,
+	NVME_PR_EXCLUSIVE_ACCESS_REG_ONLY = 4,
+	NVME_PR_WRITE_EXCLUSIVE_ALL_REGS = 5,
+	NVME_PR_EXCLUSIVE_ACCESS_ALL_REGS = 6,
+};
+
+enum nvme_eds {
+	NVME_EXTENDED_DATA_STRUCT = 1,
+};
+
+struct nvme_registered_ctrl {
+	__le16 cntlid;
+	__u8 rcsts;
+	__u8 rsvd3[5];
+	__le64 hostid;
+	__le64 rkey;
+};
+
+struct nvme_reservation_status {
+	__le32 gen;
+	__u8 rtype;
+	__u8 regctl[2];
+	__u8 resv5[2];
+	__u8 ptpls;
+	__u8 resv10[14];
+	struct nvme_registered_ctrl regctl_ds[0];
+};
+
+struct nvme_registered_ctrl_ext {
+	__le16 cntlid;
+	__u8 rcsts;
+	__u8 rsvd3[5];
+	__le64 rkey;
+	__u8 hostid[16];
+	__u8 rsvd32[32];
+};
+
+struct nvme_reservation_status_ext {
+	__le32 gen;
+	__u8 rtype;
+	__u8 regctl[2];
+	__u8 resv5[2];
+	__u8 ptpls;
+	__u8 resv10[14];
+	__u8 rsvd24[40];
+	struct nvme_registered_ctrl_ext regctl_eds[0];
+};
+
+struct nvme_ana_group_desc {
+	__le32 grpid;
+	__le32 nnsids;
+	__le64 chgcnt;
+	__u8 state;
+	__u8 rsvd17[15];
+	__le32 nsids[0];
+};
+
+enum {
+	NVME_ZRA_ZONE_REPORT = 0,
+	NVME_ZRASF_ZONE_REPORT_ALL = 0,
+	NVME_ZRASF_ZONE_STATE_EMPTY = 1,
+	NVME_ZRASF_ZONE_STATE_IMP_OPEN = 2,
+	NVME_ZRASF_ZONE_STATE_EXP_OPEN = 3,
+	NVME_ZRASF_ZONE_STATE_CLOSED = 4,
+	NVME_ZRASF_ZONE_STATE_READONLY = 5,
+	NVME_ZRASF_ZONE_STATE_FULL = 6,
+	NVME_ZRASF_ZONE_STATE_OFFLINE = 7,
+	NVME_REPORT_ZONE_PARTIAL = 1,
+};
+
+enum {
+	NVME_ZONE_TYPE_SEQWRITE_REQ = 2,
+};
+
+struct nvme_id_ctrl_zns {
+	__u8 zasl;
+	__u8 rsvd1[4095];
+};
+
+struct nvme_zone_descriptor {
+	__u8 zt;
+	__u8 zs;
+	__u8 za;
+	__u8 rsvd3[5];
+	__le64 zcap;
+	__le64 zslba;
+	__le64 wp;
+	__u8 rsvd32[32];
+};
+
+struct nvme_zns_lbafe {
+	__le64 zsze;
+	__u8 zdes;
+	__u8 rsvd9[7];
+};
+
+struct nvme_id_ns_zns {
+	__le16 zoc;
+	__le16 ozcs;
+	__le32 mar;
+	__le32 mor;
+	__le32 rrl;
+	__le32 frl;
+	__u8 rsvd20[2796];
+	struct nvme_zns_lbafe lbafe[64];
+	__u8 vs[256];
+};
+
+struct nvme_zone_report {
+	__le64 nr_zones;
+	__u8 resv8[56];
+	struct nvme_zone_descriptor entries[0];
+};
+
+enum {
+	NVME_HOST_MEM_ENABLE = 1,
+	NVME_HOST_MEM_RETURN = 2,
+};
+
+enum {
+	NVME_CMBMSC_CRE = 1,
+	NVME_CMBMSC_CMSE = 2,
+};
+
+enum {
+	NVME_CMBSZ_SQS = 1,
+	NVME_CMBSZ_CQS = 2,
+	NVME_CMBSZ_LISTS = 4,
+	NVME_CMBSZ_RDS = 8,
+	NVME_CMBSZ_WDS = 16,
+	NVME_CMBSZ_SZ_SHIFT = 12,
+	NVME_CMBSZ_SZ_MASK = 1048575,
+	NVME_CMBSZ_SZU_SHIFT = 8,
+	NVME_CMBSZ_SZU_MASK = 15,
+};
+
+enum {
+	NVME_SGL_FMT_DATA_DESC = 0,
+	NVME_SGL_FMT_SEG_DESC = 2,
+	NVME_SGL_FMT_LAST_SEG_DESC = 3,
+	NVME_KEY_SGL_FMT_DATA_DESC = 4,
+	NVME_TRANSPORT_SGL_DATA_DESC = 5,
+};
+
+struct nvme_queue;
+
+struct nvme_host_mem_buf_desc;
+
+struct nvme_dev {
+	struct nvme_queue *queues;
+	struct blk_mq_tag_set tagset;
+	struct blk_mq_tag_set admin_tagset;
+	u32 *dbs;
+	struct device *dev;
+	struct dma_pool *prp_page_pool;
+	struct dma_pool *prp_small_pool;
+	unsigned int online_queues;
+	unsigned int max_qid;
+	unsigned int io_queues[3];
+	unsigned int num_vecs;
+	u32 q_depth;
+	int io_sqes;
+	u32 db_stride;
+	void *bar;
+	unsigned long bar_mapped_size;
+	struct mutex shutdown_lock;
+	bool subsystem;
+	u64 cmb_size;
+	bool cmb_use_sqes;
+	u32 cmbsz;
+	u32 cmbloc;
+	struct nvme_ctrl ctrl;
+	u32 last_ps;
+	bool hmb;
+	mempool_t *iod_mempool;
+	__le32 *dbbuf_dbs;
+	dma_addr_t dbbuf_dbs_dma_addr;
+	__le32 *dbbuf_eis;
+	dma_addr_t dbbuf_eis_dma_addr;
+	u64 host_mem_size;
+	u32 nr_host_mem_descs;
+	dma_addr_t host_mem_descs_dma;
+	struct nvme_host_mem_buf_desc *host_mem_descs;
+	void **host_mem_desc_bufs;
+	unsigned int nr_allocated_queues;
+	unsigned int nr_write_queues;
+	unsigned int nr_poll_queues;
+};
+
+struct nvme_completion;
+
+struct nvme_queue {
+	struct nvme_dev *dev;
+	spinlock_t sq_lock;
+	void *sq_cmds;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	spinlock_t cq_poll_lock;
+	struct nvme_completion *cqes;
+	dma_addr_t sq_dma_addr;
+	dma_addr_t cq_dma_addr;
+	u32 *q_db;
+	u32 q_depth;
+	u16 cq_vector;
+	u16 sq_tail;
+	u16 last_sq_tail;
+	u16 cq_head;
+	u16 qid;
+	u8 cq_phase;
+	u8 sqes;
+	unsigned long flags;
+	__le32 *dbbuf_sq_db;
+	__le32 *dbbuf_cq_db;
+	__le32 *dbbuf_sq_ei;
+	__le32 *dbbuf_cq_ei;
+	struct completion delete_done;
+};
+
+struct nvme_completion {
+	union nvme_result result;
+	__le16 sq_head;
+	__le16 sq_id;
+	__u16 command_id;
+	__le16 status;
+};
+
+struct nvme_host_mem_buf_desc {
+	__le64 addr;
+	__le32 size;
+	__u32 rsvd;
+};
+
+union nvme_descriptor {
+	struct nvme_sgl_desc *sg_list;
+	__le64 *prp_list;
+};
+
+struct nvme_iod {
+	struct nvme_request req;
+	struct nvme_command cmd;
+	bool aborted;
+	s8 nr_allocations;
+	unsigned int dma_len;
+	dma_addr_t first_dma;
+	dma_addr_t meta_dma;
+	struct sg_table sgt;
+	union nvme_descriptor list[5];
+};
+
+typedef void (*btf_trace_spi_controller_idle)(void *, struct spi_controller *);
+
+struct ptp_system_timestamp {
+	struct timespec64 pre_ts;
+	struct timespec64 post_ts;
+};
+
+struct spi_mem {
+	struct spi_device *spi;
+	void *drvpriv;
+	const char *name;
+};
+
+enum spi_mem_data_dir {
+	SPI_MEM_NO_DATA = 0,
+	SPI_MEM_DATA_IN = 1,
+	SPI_MEM_DATA_OUT = 2,
+};
+
+struct spi_mem_op {
+	struct {
+		u8 nbytes;
+		u8 buswidth;
+		u8 dtr: 1;
+		u8 __pad: 7;
+		u16 opcode;
+	} cmd;
+	struct {
+		u8 nbytes;
+		u8 buswidth;
+		u8 dtr: 1;
+		u8 __pad: 7;
+		u64 val;
+	} addr;
+	struct {
+		u8 nbytes;
+		u8 buswidth;
+		u8 dtr: 1;
+		u8 __pad: 7;
+	} dummy;
+	struct {
+		u8 buswidth;
+		u8 dtr: 1;
+		u8 ecc: 1;
+		u8 __pad: 6;
+		enum spi_mem_data_dir dir;
+		unsigned int nbytes;
+		union {
+			void *in;
+			const void *out;
+		} buf;
+	} data;
+};
+
+struct spi_mem_dirmap_info {
+	struct spi_mem_op op_tmpl;
+	u64 offset;
+	u64 length;
+};
+
+struct spi_mem_dirmap_desc {
+	struct spi_mem *mem;
+	struct spi_mem_dirmap_info info;
+	unsigned int nodirmap;
+	void *priv;
+};
+
+typedef void (*btf_trace_spi_controller_busy)(void *, struct spi_controller *);
+
+typedef void (*btf_trace_spi_setup)(void *, struct spi_device *, int);
+
+typedef void (*btf_trace_spi_set_cs)(void *, struct spi_device *, bool);
+
+typedef void (*btf_trace_spi_message_submit)(void *, struct spi_message *);
+
+typedef void (*btf_trace_spi_message_start)(void *, struct spi_message *);
+
+typedef void (*btf_trace_spi_message_done)(void *, struct spi_message *);
+
+typedef void (*btf_trace_spi_transfer_start)(void *, struct spi_message *, struct spi_transfer *);
+
+typedef void (*btf_trace_spi_transfer_stop)(void *, struct spi_message *, struct spi_transfer *);
+
+struct spi_board_info {
+	char modalias[32];
+	const void *platform_data;
+	const struct software_node *swnode;
+	void *controller_data;
+	int irq;
+	u32 max_speed_hz;
+	u16 bus_num;
+	u16 chip_select;
+	u32 mode;
+	u64 android_kabi_reserved1;
+};
+
+struct boardinfo {
+	struct list_head list;
+	struct spi_board_info board_info;
+};
+
+struct trace_event_raw_spi_controller {
+	struct trace_entry ent;
+	int bus_num;
+	char __data[0];
+};
+
+struct trace_event_raw_spi_setup {
+	struct trace_entry ent;
+	int bus_num;
+	int chip_select;
+	unsigned long mode;
+	unsigned int bits_per_word;
+	unsigned int max_speed_hz;
+	int status;
+	char __data[0];
+};
+
+struct trace_event_raw_spi_set_cs {
+	struct trace_entry ent;
+	int bus_num;
+	int chip_select;
+	unsigned long mode;
+	bool enable;
+	char __data[0];
+};
+
+struct trace_event_raw_spi_message {
+	struct trace_entry ent;
+	int bus_num;
+	int chip_select;
+	struct spi_message *msg;
+	char __data[0];
+};
+
+struct trace_event_raw_spi_message_done {
+	struct trace_entry ent;
+	int bus_num;
+	int chip_select;
+	struct spi_message *msg;
+	unsigned int frame;
+	unsigned int actual;
+	char __data[0];
+};
+
+struct trace_event_raw_spi_transfer {
+	struct trace_entry ent;
+	int bus_num;
+	int chip_select;
+	struct spi_transfer *xfer;
+	int len;
+	u32 __data_loc_rx_buf;
+	u32 __data_loc_tx_buf;
+	char __data[0];
+};
+
+struct spi_device_id;
+
+struct spi_driver {
+	const struct spi_device_id *id_table;
+	int (*probe)(struct spi_device *);
+	void (*remove)(struct spi_device *);
+	void (*shutdown)(struct spi_device *);
+	struct device_driver driver;
+	u64 android_kabi_reserved1;
+};
+
+struct spi_device_id {
+	char name[32];
+	kernel_ulong_t driver_data;
+};
+
+typedef void (*spi_res_release_t)(struct spi_controller *, struct spi_message *, void *);
+
+struct spi_res {
+	struct list_head entry;
+	spi_res_release_t release;
+	unsigned long long data[0];
+};
+
+struct trace_event_data_offsets_spi_transfer {
+	u32 rx_buf;
+	u32 tx_buf;
+};
+
+struct acpi_device;
+
+struct spi_replaced_transfers;
+
+typedef void (*spi_replaced_release_t)(struct spi_controller *, struct spi_message *, struct spi_replaced_transfers *);
+
+struct spi_replaced_transfers {
+	spi_replaced_release_t release;
+	void *extradata;
+	struct list_head replaced_transfers;
+	struct list_head *replaced_after;
+	size_t inserted;
+	struct spi_transfer inserted_transfers[0];
+};
+
+struct trace_event_data_offsets_spi_controller {};
+
+struct trace_event_data_offsets_spi_setup {};
+
+struct trace_event_data_offsets_spi_set_cs {};
+
+struct trace_event_data_offsets_spi_message {};
+
+struct trace_event_data_offsets_spi_message_done {};
+
+struct spi_mem_driver {
+	struct spi_driver spidrv;
+	int (*probe)(struct spi_mem *);
+	int (*remove)(struct spi_mem *);
+	void (*shutdown)(struct spi_mem *);
+};
+
+typedef void (*btf_trace_spmi_write_begin)(void *, u8, u8, u16, u8, const u8 *);
+
+typedef void (*btf_trace_spmi_write_end)(void *, u8, u8, u16, int);
+
+typedef void (*btf_trace_spmi_read_begin)(void *, u8, u8, u16);
+
+typedef void (*btf_trace_spmi_read_end)(void *, u8, u8, u16, int, u8, const u8 *);
+
+typedef void (*btf_trace_spmi_cmd)(void *, u8, u8, int);
+
+struct trace_event_raw_spmi_write_begin {
+	struct trace_entry ent;
+	u8 opcode;
+	u8 sid;
+	u16 addr;
+	u8 len;
+	u32 __data_loc_buf;
+	char __data[0];
+};
+
+struct trace_event_raw_spmi_write_end {
+	struct trace_entry ent;
+	u8 opcode;
+	u8 sid;
+	u16 addr;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_spmi_read_begin {
+	struct trace_entry ent;
+	u8 opcode;
+	u8 sid;
+	u16 addr;
+	char __data[0];
+};
+
+struct trace_event_raw_spmi_read_end {
+	struct trace_entry ent;
+	u8 opcode;
+	u8 sid;
+	u16 addr;
+	int ret;
+	u8 len;
+	u32 __data_loc_buf;
+	char __data[0];
+};
+
+struct trace_event_raw_spmi_cmd {
+	struct trace_entry ent;
+	u8 opcode;
+	u8 sid;
+	int ret;
+	char __data[0];
+};
+
+struct spmi_driver {
+	struct device_driver driver;
+	int (*probe)(struct spmi_device *);
+	void (*remove)(struct spmi_device *);
+	void (*shutdown)(struct spmi_device *);
+	u64 android_kabi_reserved1;
+};
+
+struct trace_event_data_offsets_spmi_write_begin {
+	u32 buf;
+};
+
+struct trace_event_data_offsets_spmi_read_end {
+	u32 buf;
+};
+
+struct trace_event_data_offsets_spmi_write_end {};
+
+struct trace_event_data_offsets_spmi_read_begin {};
+
+struct trace_event_data_offsets_spmi_cmd {};
+
+enum {
+	NETIF_F_SG_BIT = 0,
+	NETIF_F_IP_CSUM_BIT = 1,
+	__UNUSED_NETIF_F_1 = 2,
+	NETIF_F_HW_CSUM_BIT = 3,
+	NETIF_F_IPV6_CSUM_BIT = 4,
+	NETIF_F_HIGHDMA_BIT = 5,
+	NETIF_F_FRAGLIST_BIT = 6,
+	NETIF_F_HW_VLAN_CTAG_TX_BIT = 7,
+	NETIF_F_HW_VLAN_CTAG_RX_BIT = 8,
+	NETIF_F_HW_VLAN_CTAG_FILTER_BIT = 9,
+	NETIF_F_VLAN_CHALLENGED_BIT = 10,
+	NETIF_F_GSO_BIT = 11,
+	NETIF_F_LLTX_BIT = 12,
+	NETIF_F_NETNS_LOCAL_BIT = 13,
+	NETIF_F_GRO_BIT = 14,
+	NETIF_F_LRO_BIT = 15,
+	NETIF_F_GSO_SHIFT = 16,
+	NETIF_F_TSO_BIT = 16,
+	NETIF_F_GSO_ROBUST_BIT = 17,
+	NETIF_F_TSO_ECN_BIT = 18,
+	NETIF_F_TSO_MANGLEID_BIT = 19,
+	NETIF_F_TSO6_BIT = 20,
+	NETIF_F_FSO_BIT = 21,
+	NETIF_F_GSO_GRE_BIT = 22,
+	NETIF_F_GSO_GRE_CSUM_BIT = 23,
+	NETIF_F_GSO_IPXIP4_BIT = 24,
+	NETIF_F_GSO_IPXIP6_BIT = 25,
+	NETIF_F_GSO_UDP_TUNNEL_BIT = 26,
+	NETIF_F_GSO_UDP_TUNNEL_CSUM_BIT = 27,
+	NETIF_F_GSO_PARTIAL_BIT = 28,
+	NETIF_F_GSO_TUNNEL_REMCSUM_BIT = 29,
+	NETIF_F_GSO_SCTP_BIT = 30,
+	NETIF_F_GSO_ESP_BIT = 31,
+	NETIF_F_GSO_UDP_BIT = 32,
+	NETIF_F_GSO_UDP_L4_BIT = 33,
+	NETIF_F_GSO_FRAGLIST_BIT = 34,
+	NETIF_F_GSO_LAST = 34,
+	NETIF_F_FCOE_CRC_BIT = 35,
+	NETIF_F_SCTP_CRC_BIT = 36,
+	NETIF_F_FCOE_MTU_BIT = 37,
+	NETIF_F_NTUPLE_BIT = 38,
+	NETIF_F_RXHASH_BIT = 39,
+	NETIF_F_RXCSUM_BIT = 40,
+	NETIF_F_NOCACHE_COPY_BIT = 41,
+	NETIF_F_LOOPBACK_BIT = 42,
+	NETIF_F_RXFCS_BIT = 43,
+	NETIF_F_RXALL_BIT = 44,
+	NETIF_F_HW_VLAN_STAG_TX_BIT = 45,
+	NETIF_F_HW_VLAN_STAG_RX_BIT = 46,
+	NETIF_F_HW_VLAN_STAG_FILTER_BIT = 47,
+	NETIF_F_HW_L2FW_DOFFLOAD_BIT = 48,
+	NETIF_F_HW_TC_BIT = 49,
+	NETIF_F_HW_ESP_BIT = 50,
+	NETIF_F_HW_ESP_TX_CSUM_BIT = 51,
+	NETIF_F_RX_UDP_TUNNEL_PORT_BIT = 52,
+	NETIF_F_HW_TLS_TX_BIT = 53,
+	NETIF_F_HW_TLS_RX_BIT = 54,
+	NETIF_F_GRO_HW_BIT = 55,
+	NETIF_F_HW_TLS_RECORD_BIT = 56,
+	NETIF_F_GRO_FRAGLIST_BIT = 57,
+	NETIF_F_HW_MACSEC_BIT = 58,
+	NETIF_F_GRO_UDP_FWD_BIT = 59,
+	NETIF_F_HW_HSR_TAG_INS_BIT = 60,
+	NETIF_F_HW_HSR_TAG_RM_BIT = 61,
+	NETIF_F_HW_HSR_FWD_BIT = 62,
+	NETIF_F_HW_HSR_DUP_BIT = 63,
+	NETDEV_FEATURE_COUNT = 64,
+};
+
+enum {
+	SKBTX_HW_TSTAMP = 1,
+	SKBTX_SW_TSTAMP = 2,
+	SKBTX_IN_PROGRESS = 4,
+	SKBTX_HW_TSTAMP_USE_CYCLES = 8,
+	SKBTX_WIFI_STATUS = 16,
+	SKBTX_HW_TSTAMP_NETDEV = 32,
+	SKBTX_SCHED_TSTAMP = 64,
+};
+
+enum {
+	IFLA_UNSPEC = 0,
+	IFLA_ADDRESS = 1,
+	IFLA_BROADCAST = 2,
+	IFLA_IFNAME = 3,
+	IFLA_MTU = 4,
+	IFLA_LINK = 5,
+	IFLA_QDISC = 6,
+	IFLA_STATS = 7,
+	IFLA_COST = 8,
+	IFLA_PRIORITY = 9,
+	IFLA_MASTER = 10,
+	IFLA_WIRELESS = 11,
+	IFLA_PROTINFO = 12,
+	IFLA_TXQLEN = 13,
+	IFLA_MAP = 14,
+	IFLA_WEIGHT = 15,
+	IFLA_OPERSTATE = 16,
+	IFLA_LINKMODE = 17,
+	IFLA_LINKINFO = 18,
+	IFLA_NET_NS_PID = 19,
+	IFLA_IFALIAS = 20,
+	IFLA_NUM_VF = 21,
+	IFLA_VFINFO_LIST = 22,
+	IFLA_STATS64 = 23,
+	IFLA_VF_PORTS = 24,
+	IFLA_PORT_SELF = 25,
+	IFLA_AF_SPEC = 26,
+	IFLA_GROUP = 27,
+	IFLA_NET_NS_FD = 28,
+	IFLA_EXT_MASK = 29,
+	IFLA_PROMISCUITY = 30,
+	IFLA_NUM_TX_QUEUES = 31,
+	IFLA_NUM_RX_QUEUES = 32,
+	IFLA_CARRIER = 33,
+	IFLA_PHYS_PORT_ID = 34,
+	IFLA_CARRIER_CHANGES = 35,
+	IFLA_PHYS_SWITCH_ID = 36,
+	IFLA_LINK_NETNSID = 37,
+	IFLA_PHYS_PORT_NAME = 38,
+	IFLA_PROTO_DOWN = 39,
+	IFLA_GSO_MAX_SEGS = 40,
+	IFLA_GSO_MAX_SIZE = 41,
+	IFLA_PAD = 42,
+	IFLA_XDP = 43,
+	IFLA_EVENT = 44,
+	IFLA_NEW_NETNSID = 45,
+	IFLA_IF_NETNSID = 46,
+	IFLA_TARGET_NETNSID = 46,
+	IFLA_CARRIER_UP_COUNT = 47,
+	IFLA_CARRIER_DOWN_COUNT = 48,
+	IFLA_NEW_IFINDEX = 49,
+	IFLA_MIN_MTU = 50,
+	IFLA_MAX_MTU = 51,
+	IFLA_PROP_LIST = 52,
+	IFLA_ALT_IFNAME = 53,
+	IFLA_PERM_ADDRESS = 54,
+	IFLA_PROTO_DOWN_REASON = 55,
+	IFLA_PARENT_DEV_NAME = 56,
+	IFLA_PARENT_DEV_BUS_NAME = 57,
+	IFLA_GRO_MAX_SIZE = 58,
+	IFLA_TSO_MAX_SIZE = 59,
+	IFLA_TSO_MAX_SEGS = 60,
+	IFLA_ALLMULTI = 61,
+	IFLA_DEVLINK_PORT = 62,
+	IFLA_GSO_IPV4_MAX_SIZE = 63,
+	IFLA_GRO_IPV4_MAX_SIZE = 64,
+	__IFLA_MAX = 65,
+};
+
+struct ip_tunnel_parm {
+	char name[16];
+	int link;
+	__be16 i_flags;
+	__be16 o_flags;
+	__be32 i_key;
+	__be32 o_key;
+	struct iphdr iph;
+};
+
+struct nh_info;
+
+struct nh_group;
+
+struct nexthop {
+	struct rb_node rb_node;
+	struct list_head fi_list;
+	struct list_head f6i_list;
+	struct list_head fdb_list;
+	struct list_head grp_list;
+	struct net *net;
+	u32 id;
+	u8 protocol;
+	u8 nh_flags;
+	bool is_group;
+	refcount_t refcnt;
+	struct callback_head rcu;
+	union {
+		struct nh_info __attribute__((btf_type_tag("rcu"))) *nh_info;
+		struct nh_group __attribute__((btf_type_tag("rcu"))) *nh_grp;
+	};
+};
+
+struct fib_info;
+
+struct fib_nh {
+	struct fib_nh_common nh_common;
+	struct hlist_node nh_hash;
+	struct fib_info *nh_parent;
+	__be32 nh_saddr;
+	int nh_saddr_genid;
+};
+
+struct nh_info {
+	struct hlist_node dev_hash;
+	struct nexthop *nh_parent;
+	u8 family;
+	bool reject_nh;
+	bool fdb_nh;
+	union {
+		struct fib_nh_common fib_nhc;
+		struct fib_nh fib_nh;
+		struct fib6_nh fib6_nh;
+	};
+};
+
+struct fib_info {
+	struct hlist_node fib_hash;
+	struct hlist_node fib_lhash;
+	struct list_head nh_list;
+	struct net *fib_net;
+	refcount_t fib_treeref;
+	refcount_t fib_clntref;
+	unsigned int fib_flags;
+	unsigned char fib_dead;
+	unsigned char fib_protocol;
+	unsigned char fib_scope;
+	unsigned char fib_type;
+	__be32 fib_prefsrc;
+	u32 fib_tb_id;
+	u32 fib_priority;
+	struct dst_metrics *fib_metrics;
+	int fib_nhs;
+	bool fib_nh_is_v6;
+	bool nh_updated;
+	bool pfsrc_removed;
+	struct nexthop *nh;
+	struct callback_head rcu;
+	struct fib_nh fib_nh[0];
+};
+
+struct nh_grp_entry {
+	struct nexthop *nh;
+	u8 weight;
+	union {
+		struct {
+			atomic_t upper_bound;
+		} hthr;
+		struct {
+			struct list_head uw_nh_entry;
+			u16 count_buckets;
+			u16 wants_buckets;
+		} res;
+	};
+	struct list_head nh_list;
+	struct nexthop *nh_parent;
+};
+
+struct nh_res_table;
+
+struct nh_group {
+	struct nh_group *spare;
+	u16 num_nh;
+	bool is_multipath;
+	bool hash_threshold;
+	bool resilient;
+	bool fdb_nh;
+	bool has_v4;
+	struct nh_res_table __attribute__((btf_type_tag("rcu"))) *res_table;
+	struct nh_grp_entry nh_entries[0];
+};
+
+struct nh_res_bucket {
+	struct nh_grp_entry __attribute__((btf_type_tag("rcu"))) *nh_entry;
+	atomic_long_t used_time;
+	unsigned long migrated_time;
+	bool occupied;
+	u8 nh_flags;
+};
+
+struct nh_res_table {
+	struct net *net;
+	u32 nhg_id;
+	struct delayed_work upkeep_dw;
+	struct list_head uw_nh_entries;
+	unsigned long unbalanced_since;
+	u32 idle_timer;
+	u32 unbalanced_timer;
+	u16 num_nh_buckets;
+	struct nh_res_bucket nh_buckets[0];
+};
+
+enum noise_lengths {
+	NOISE_PUBLIC_KEY_LEN = 32,
+	NOISE_SYMMETRIC_KEY_LEN = 32,
+	NOISE_TIMESTAMP_LEN = 12,
+	NOISE_AUTHTAG_LEN = 16,
+	NOISE_HASH_LEN = 32,
+};
+
+enum index_hashtable_type {
+	INDEX_HASHTABLE_HANDSHAKE = 1,
+	INDEX_HASHTABLE_KEYPAIR = 2,
+};
+
+enum noise_handshake_state {
+	HANDSHAKE_ZEROED = 0,
+	HANDSHAKE_CREATED_INITIATION = 1,
+	HANDSHAKE_CONSUMED_INITIATION = 2,
+	HANDSHAKE_CREATED_RESPONSE = 3,
+	HANDSHAKE_CONSUMED_RESPONSE = 4,
+};
+
+enum message_type {
+	MESSAGE_INVALID = 0,
+	MESSAGE_HANDSHAKE_INITIATION = 1,
+	MESSAGE_HANDSHAKE_RESPONSE = 2,
+	MESSAGE_HANDSHAKE_COOKIE = 3,
+	MESSAGE_DATA = 4,
+};
+
+enum limits {
+	REKEY_AFTER_MESSAGES = 1152921504606846976ULL,
+	REJECT_AFTER_MESSAGES = 18446744073709543486ULL,
+	REKEY_TIMEOUT = 5ULL,
+	REKEY_TIMEOUT_JITTER_MAX_JIFFIES = 83ULL,
+	REKEY_AFTER_TIME = 120ULL,
+	REJECT_AFTER_TIME = 180ULL,
+	INITIATIONS_PER_SECOND = 50ULL,
+	MAX_PEERS_PER_DEVICE = 1048576ULL,
+	KEEPALIVE_TIMEOUT = 10ULL,
+	MAX_TIMER_HANDSHAKES = 18ULL,
+	MAX_QUEUED_INCOMING_HANDSHAKES = 4096ULL,
+	MAX_STAGED_PACKETS = 128ULL,
+	MAX_QUEUED_PACKETS = 1024ULL,
+};
+
+enum curve25519_lengths {
+	CURVE25519_KEY_SIZE = 32,
+};
+
+struct wg_peer;
+
+struct index_hashtable_entry {
+	struct wg_peer *peer;
+	struct hlist_node index_hash;
+	enum index_hashtable_type type;
+	__le32 index;
+};
+
+struct noise_symmetric_key {
+	u8 key[32];
+	u64 birthdate;
+	bool is_valid;
+};
+
+struct noise_replay_counter {
+	u64 counter;
+	spinlock_t lock;
+	unsigned long backtrack[128];
+};
+
+struct noise_keypair {
+	struct index_hashtable_entry entry;
+	struct noise_symmetric_key sending;
+	atomic64_t sending_counter;
+	struct noise_symmetric_key receiving;
+	struct noise_replay_counter receiving_counter;
+	__le32 remote_index;
+	bool i_am_the_initiator;
+	struct kref refcount;
+	struct callback_head rcu;
+	u64 internal_id;
+};
+
+struct prev_queue {
+	struct sk_buff *head;
+	struct sk_buff *tail;
+	struct sk_buff *peeked;
+	struct {
+		struct sk_buff *next;
+		struct sk_buff *prev;
+	} empty;
+	atomic_t count;
+};
+
+struct noise_keypairs {
+	struct noise_keypair __attribute__((btf_type_tag("rcu"))) *current_keypair;
+	struct noise_keypair __attribute__((btf_type_tag("rcu"))) *previous_keypair;
+	struct noise_keypair __attribute__((btf_type_tag("rcu"))) *next_keypair;
+	spinlock_t keypair_update_lock;
+};
+
+struct endpoint {
+	union {
+		struct sockaddr addr;
+		struct sockaddr_in addr4;
+		struct sockaddr_in6 addr6;
+	};
+	union {
+		struct {
+			struct in_addr src4;
+			int src_if4;
+		};
+		struct in6_addr src6;
+	};
+};
+
+struct dst_cache_pcpu;
+
+struct dst_cache {
+	struct dst_cache_pcpu __attribute__((btf_type_tag("percpu"))) *cache;
+	unsigned long reset_ts;
+};
+
+struct noise_static_identity;
+
+struct noise_handshake {
+	struct index_hashtable_entry entry;
+	enum noise_handshake_state state;
+	u64 last_initiation_consumption;
+	struct noise_static_identity *static_identity;
+	u8 ephemeral_private[32];
+	u8 remote_static[32];
+	u8 remote_ephemeral[32];
+	u8 precomputed_static_static[32];
+	u8 preshared_key[32];
+	u8 hash[32];
+	u8 chaining_key[32];
+	u8 latest_timestamp[12];
+	__le32 remote_index;
+	struct rw_semaphore lock;
+};
+
+struct cookie {
+	u64 birthdate;
+	bool is_valid;
+	u8 cookie[16];
+	bool have_sent_mac1;
+	u8 last_mac1_sent[16];
+	u8 cookie_decryption_key[32];
+	u8 message_mac1_key[32];
+	struct rw_semaphore lock;
+};
+
+struct gro_list {
+	struct list_head list;
+	int count;
+};
+
+struct napi_struct {
+	struct list_head poll_list;
+	unsigned long state;
+	int weight;
+	int defer_hard_irqs_count;
+	unsigned long gro_bitmask;
+	int (*poll)(struct napi_struct *, int);
+	int list_owner;
+	struct net_device *dev;
+	struct gro_list gro_hash[8];
+	struct sk_buff *skb;
+	struct list_head rx_list;
+	int rx_count;
+	unsigned int napi_id;
+	struct hrtimer timer;
+	struct task_struct *thread;
+	struct list_head dev_list;
+	struct hlist_node napi_hash_node;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct wg_device;
+
+struct wg_peer {
+	struct wg_device *device;
+	struct prev_queue tx_queue;
+	struct prev_queue rx_queue;
+	struct sk_buff_head staged_packet_queue;
+	int serial_work_cpu;
+	bool is_dead;
+	struct noise_keypairs keypairs;
+	struct endpoint endpoint;
+	struct dst_cache endpoint_cache;
+	rwlock_t endpoint_lock;
+	struct noise_handshake handshake;
+	atomic64_t last_sent_handshake;
+	struct work_struct transmit_handshake_work;
+	struct work_struct clear_peer_work;
+	struct work_struct transmit_packet_work;
+	struct cookie latest_cookie;
+	struct hlist_node pubkey_hash;
+	u64 rx_bytes;
+	u64 tx_bytes;
+	struct timer_list timer_retransmit_handshake;
+	struct timer_list timer_send_keepalive;
+	struct timer_list timer_new_handshake;
+	struct timer_list timer_zero_key_material;
+	struct timer_list timer_persistent_keepalive;
+	unsigned int timer_handshake_attempts;
+	u16 persistent_keepalive_interval;
+	bool timer_need_another_keepalive;
+	bool sent_lastminute_handshake;
+	struct timespec64 walltime_last_handshake;
+	struct kref refcount;
+	struct callback_head rcu;
+	struct list_head peer_list;
+	struct list_head allowedips_list;
+	struct napi_struct napi;
+	u64 internal_id;
+};
+
+struct multicore_worker;
+
+struct crypt_queue {
+	struct ptr_ring ring;
+	struct multicore_worker __attribute__((btf_type_tag("percpu"))) *worker;
+	int last_cpu;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct noise_static_identity {
+	u8 static_public[32];
+	u8 static_private[32];
+	struct rw_semaphore lock;
+	bool has_identity;
+};
+
+struct cookie_checker {
+	u8 secret[32];
+	u8 cookie_encryption_key[32];
+	u8 message_mac1_key[32];
+	u64 secret_birthdate;
+	struct rw_semaphore secret_lock;
+	struct wg_device *device;
+};
+
+struct allowedips_node;
+
+struct allowedips {
+	struct allowedips_node __attribute__((btf_type_tag("rcu"))) *root4;
+	struct allowedips_node __attribute__((btf_type_tag("rcu"))) *root6;
+	u64 seq;
+};
+
+struct pubkey_hashtable;
+
+struct index_hashtable;
+
+struct wg_device {
+	struct net_device *dev;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct crypt_queue encrypt_queue;
+	struct crypt_queue decrypt_queue;
+	struct crypt_queue handshake_queue;
+	struct sock __attribute__((btf_type_tag("rcu"))) *sock4;
+	struct sock __attribute__((btf_type_tag("rcu"))) *sock6;
+	struct net __attribute__((btf_type_tag("rcu"))) *creating_net;
+	struct noise_static_identity static_identity;
+	struct workqueue_struct *packet_crypt_wq;
+	struct workqueue_struct *handshake_receive_wq;
+	struct workqueue_struct *handshake_send_wq;
+	struct cookie_checker cookie_checker;
+	struct pubkey_hashtable *peer_hashtable;
+	struct index_hashtable *index_hashtable;
+	struct allowedips peer_allowedips;
+	struct mutex device_update_lock;
+	struct mutex socket_update_lock;
+	struct list_head device_list;
+	struct list_head peer_list;
+	atomic_t handshake_queue_len;
+	unsigned int num_peers;
+	unsigned int device_update_gen;
+	u32 fwmark;
+	u16 incoming_port;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct multicore_worker {
+	void *ptr;
+	struct work_struct work;
+};
+
+struct pubkey_hashtable {
+	struct hlist_head hashtable[2048];
+	siphash_key_t key;
+	struct mutex lock;
+};
+
+struct index_hashtable {
+	struct hlist_head hashtable[8192];
+	spinlock_t lock;
+};
+
+struct allowedips_node {
+	struct wg_peer __attribute__((btf_type_tag("rcu"))) *peer;
+	struct allowedips_node __attribute__((btf_type_tag("rcu"))) *bit[2];
+	u8 cidr;
+	u8 bit_at_a;
+	u8 bit_at_b;
+	u8 bitlen;
+	long: 0;
+	u8 bits[16];
+	unsigned long parent_bit_packed;
+	union {
+		struct list_head peer_list;
+		struct callback_head rcu;
+	};
+};
+
+struct dst_cache_pcpu {
+	unsigned long refresh_ts;
+	struct dst_entry *dst;
+	u32 cookie;
+	union {
+		struct in_addr in_saddr;
+		struct in6_addr in6_saddr;
+	};
+};
+
+struct message_header {
+	__le32 type;
+};
+
+struct message_macs {
+	u8 mac1[16];
+	u8 mac2[16];
+};
+
+struct message_handshake_initiation {
+	struct message_header header;
+	__le32 sender_index;
+	u8 unencrypted_ephemeral[32];
+	u8 encrypted_static[48];
+	u8 encrypted_timestamp[28];
+	struct message_macs macs;
+};
+
+struct message_handshake_response {
+	struct message_header header;
+	__le32 sender_index;
+	__le32 receiver_index;
+	u8 unencrypted_ephemeral[32];
+	u8 encrypted_nothing[16];
+	struct message_macs macs;
+};
+
+struct in_ifaddr {
+	struct hlist_node hash;
+	struct in_ifaddr __attribute__((btf_type_tag("rcu"))) *ifa_next;
+	struct in_device *ifa_dev;
+	struct callback_head callback_head;
+	__be32 ifa_local;
+	__be32 ifa_address;
+	__be32 ifa_mask;
+	__u32 ifa_rt_priority;
+	__be32 ifa_broadcast;
+	unsigned char ifa_scope;
+	unsigned char ifa_prefixlen;
+	unsigned char ifa_proto;
+	__u32 ifa_flags;
+	char ifa_label[16];
+	__u32 ifa_valid_lft;
+	__u32 ifa_preferred_lft;
+	unsigned long ifa_cstamp;
+	unsigned long ifa_tstamp;
+};
+
+struct ip_sf_list;
+
+struct ip_mc_list {
+	struct in_device *interface;
+	__be32 multiaddr;
+	unsigned int sfmode;
+	struct ip_sf_list *sources;
+	struct ip_sf_list *tomb;
+	unsigned long sfcount[2];
+	union {
+		struct ip_mc_list *next;
+		struct ip_mc_list __attribute__((btf_type_tag("rcu"))) *next_rcu;
+	};
+	struct ip_mc_list __attribute__((btf_type_tag("rcu"))) *next_hash;
+	struct timer_list timer;
+	int users;
+	refcount_t refcnt;
+	spinlock_t lock;
+	char tm_running;
+	char reporter;
+	char unsolicit_count;
+	char loaded;
+	unsigned char gsquery;
+	unsigned char crcount;
+	struct callback_head rcu;
+};
+
+enum macsec_offload {
+	MACSEC_OFFLOAD_OFF = 0,
+	MACSEC_OFFLOAD_PHY = 1,
+	MACSEC_OFFLOAD_MAC = 2,
+	__MACSEC_OFFLOAD_END = 3,
+	MACSEC_OFFLOAD_MAX = 2,
+};
+
+struct macsec_secy;
+
+struct macsec_rx_sc;
+
+struct macsec_rx_sa;
+
+struct macsec_tx_sa;
+
+struct macsec_tx_sc_stats;
+
+struct macsec_tx_sa_stats;
+
+struct macsec_rx_sc_stats;
+
+struct macsec_rx_sa_stats;
+
+struct macsec_dev_stats;
+
+struct macsec_context {
+	union {
+		struct net_device *netdev;
+		struct phy_device *phydev;
+	};
+	enum macsec_offload offload;
+	struct macsec_secy *secy;
+	struct macsec_rx_sc *rx_sc;
+	struct {
+		bool update_pn;
+		unsigned char assoc_num;
+		u8 key[128];
+		union {
+			struct macsec_rx_sa *rx_sa;
+			struct macsec_tx_sa *tx_sa;
+		};
+	} sa;
+	union {
+		struct macsec_tx_sc_stats *tx_sc_stats;
+		struct macsec_tx_sa_stats *tx_sa_stats;
+		struct macsec_rx_sc_stats *rx_sc_stats;
+		struct macsec_rx_sa_stats *rx_sa_stats;
+		struct macsec_dev_stats *dev_stats;
+	} stats;
+};
+
+typedef u64 sci_t;
+
+enum macsec_validation_type {
+	MACSEC_VALIDATE_DISABLED = 0,
+	MACSEC_VALIDATE_CHECK = 1,
+	MACSEC_VALIDATE_STRICT = 2,
+	__MACSEC_VALIDATE_END = 3,
+	MACSEC_VALIDATE_MAX = 2,
+};
+
+struct pcpu_tx_sc_stats;
+
+struct metadata_dst;
+
+struct macsec_tx_sc {
+	bool active;
+	u8 encoding_sa;
+	bool encrypt;
+	bool send_sci;
+	bool end_station;
+	bool scb;
+	struct macsec_tx_sa __attribute__((btf_type_tag("rcu"))) *sa[4];
+	struct pcpu_tx_sc_stats __attribute__((btf_type_tag("percpu"))) *stats;
+	struct metadata_dst *md_dst;
+};
+
+struct macsec_secy {
+	struct net_device *netdev;
+	unsigned int n_rx_sc;
+	sci_t sci;
+	u16 key_len;
+	u16 icv_len;
+	enum macsec_validation_type validate_frames;
+	bool xpn;
+	bool operational;
+	bool protect_frames;
+	bool replay_protect;
+	u32 replay_window;
+	struct macsec_tx_sc tx_sc;
+	struct macsec_rx_sc __attribute__((btf_type_tag("rcu"))) *rx_sc;
+};
+
+union salt {
+	struct {
+		u32 ssci;
+		u64 pn;
+	} __attribute__((packed));
+	u8 bytes[12];
+};
+
+typedef union salt salt_t;
+
+struct macsec_key {
+	u8 id[16];
+	struct crypto_aead *tfm;
+	salt_t salt;
+};
+
+typedef u32 ssci_t;
+
+union pn {
+	struct {
+		u32 lower;
+		u32 upper;
+	};
+	u64 full64;
+};
+
+typedef union pn pn_t;
+
+struct macsec_tx_sa {
+	struct macsec_key key;
+	ssci_t ssci;
+	spinlock_t lock;
+	union {
+		pn_t next_pn_halves;
+		u64 next_pn;
+	};
+	refcount_t refcnt;
+	bool active;
+	struct macsec_tx_sa_stats __attribute__((btf_type_tag("percpu"))) *stats;
+	struct callback_head rcu;
+};
+
+struct macsec_tx_sa_stats {
+	__u32 OutPktsProtected;
+	__u32 OutPktsEncrypted;
+};
+
+struct macsec_tx_sc_stats {
+	__u64 OutPktsProtected;
+	__u64 OutPktsEncrypted;
+	__u64 OutOctetsProtected;
+	__u64 OutOctetsEncrypted;
+};
+
+struct pcpu_tx_sc_stats {
+	struct macsec_tx_sc_stats stats;
+	struct u64_stats_sync syncp;
+};
+
+struct ip_tunnel_key {
+	__be64 tun_id;
+	union {
+		struct {
+			__be32 src;
+			__be32 dst;
+		} ipv4;
+		struct {
+			struct in6_addr src;
+			struct in6_addr dst;
+		} ipv6;
+	} u;
+	__be16 tun_flags;
+	u8 tos;
+	u8 ttl;
+	__be32 label;
+	u32 nhid;
+	__be16 tp_src;
+	__be16 tp_dst;
+	__u8 flow_flags;
+};
+
+struct ip_tunnel_encap {
+	u16 type;
+	u16 flags;
+	__be16 sport;
+	__be16 dport;
+};
+
+struct ip_tunnel_info {
+	struct ip_tunnel_key key;
+	struct ip_tunnel_encap encap;
+	struct dst_cache dst_cache;
+	u8 options_len;
+	u8 mode;
+};
+
+struct hw_port_info {
+	struct net_device *lower_dev;
+	u32 port_id;
+};
+
+struct macsec_info {
+	sci_t sci;
+};
+
+struct xfrm_md_info {
+	u32 if_id;
+	int link;
+	struct dst_entry *dst_orig;
+};
+
+enum metadata_type {
+	METADATA_IP_TUNNEL = 0,
+	METADATA_HW_PORT_MUX = 1,
+	METADATA_MACSEC = 2,
+	METADATA_XFRM = 3,
+};
+
+struct metadata_dst {
+	struct dst_entry dst;
+	enum metadata_type type;
+	union {
+		struct ip_tunnel_info tun_info;
+		struct hw_port_info port_info;
+		struct macsec_info macsec_info;
+		struct xfrm_md_info xfrm_info;
+	} u;
+};
+
+struct pcpu_rx_sc_stats;
+
+struct macsec_rx_sc {
+	struct macsec_rx_sc __attribute__((btf_type_tag("rcu"))) *next;
+	sci_t sci;
+	bool active;
+	struct macsec_rx_sa __attribute__((btf_type_tag("rcu"))) *sa[4];
+	struct pcpu_rx_sc_stats __attribute__((btf_type_tag("percpu"))) *stats;
+	refcount_t refcnt;
+	struct callback_head callback_head;
+};
+
+struct macsec_rx_sa {
+	struct macsec_key key;
+	ssci_t ssci;
+	spinlock_t lock;
+	union {
+		pn_t next_pn_halves;
+		u64 next_pn;
+	};
+	refcount_t refcnt;
+	bool active;
+	struct macsec_rx_sa_stats __attribute__((btf_type_tag("percpu"))) *stats;
+	struct macsec_rx_sc *sc;
+	struct callback_head rcu;
+};
+
+struct macsec_rx_sa_stats {
+	__u32 InPktsOK;
+	__u32 InPktsInvalid;
+	__u32 InPktsNotValid;
+	__u32 InPktsNotUsingSA;
+	__u32 InPktsUnusedSA;
+};
+
+struct macsec_rx_sc_stats {
+	__u64 InOctetsValidated;
+	__u64 InOctetsDecrypted;
+	__u64 InPktsUnchecked;
+	__u64 InPktsDelayed;
+	__u64 InPktsOK;
+	__u64 InPktsInvalid;
+	__u64 InPktsLate;
+	__u64 InPktsNotValid;
+	__u64 InPktsNotUsingSA;
+	__u64 InPktsUnusedSA;
+};
+
+struct pcpu_rx_sc_stats {
+	struct macsec_rx_sc_stats stats;
+	struct u64_stats_sync syncp;
+};
+
+struct macsec_dev_stats {
+	__u64 OutPktsUntagged;
+	__u64 InPktsUntagged;
+	__u64 OutPktsTooLong;
+	__u64 InPktsNoTag;
+	__u64 InPktsBadTag;
+	__u64 InPktsUnknownSCI;
+	__u64 InPktsNoSCI;
+	__u64 InPktsOverrun;
+};
+
+enum message_alignments {
+	MESSAGE_PADDING_MULTIPLE = 16,
+	MESSAGE_MINIMUM_LENGTH = 32,
+};
+
+enum {
+	WG_NETDEV_FEATURES = 1126357076009ULL,
+};
+
+enum {
+	IPV4_DEVCONF_FORWARDING = 1,
+	IPV4_DEVCONF_MC_FORWARDING = 2,
+	IPV4_DEVCONF_PROXY_ARP = 3,
+	IPV4_DEVCONF_ACCEPT_REDIRECTS = 4,
+	IPV4_DEVCONF_SECURE_REDIRECTS = 5,
+	IPV4_DEVCONF_SEND_REDIRECTS = 6,
+	IPV4_DEVCONF_SHARED_MEDIA = 7,
+	IPV4_DEVCONF_RP_FILTER = 8,
+	IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE = 9,
+	IPV4_DEVCONF_BOOTP_RELAY = 10,
+	IPV4_DEVCONF_LOG_MARTIANS = 11,
+	IPV4_DEVCONF_TAG = 12,
+	IPV4_DEVCONF_ARPFILTER = 13,
+	IPV4_DEVCONF_MEDIUM_ID = 14,
+	IPV4_DEVCONF_NOXFRM = 15,
+	IPV4_DEVCONF_NOPOLICY = 16,
+	IPV4_DEVCONF_FORCE_IGMP_VERSION = 17,
+	IPV4_DEVCONF_ARP_ANNOUNCE = 18,
+	IPV4_DEVCONF_ARP_IGNORE = 19,
+	IPV4_DEVCONF_PROMOTE_SECONDARIES = 20,
+	IPV4_DEVCONF_ARP_ACCEPT = 21,
+	IPV4_DEVCONF_ARP_NOTIFY = 22,
+	IPV4_DEVCONF_ACCEPT_LOCAL = 23,
+	IPV4_DEVCONF_SRC_VMARK = 24,
+	IPV4_DEVCONF_PROXY_ARP_PVLAN = 25,
+	IPV4_DEVCONF_ROUTE_LOCALNET = 26,
+	IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL = 27,
+	IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL = 28,
+	IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 29,
+	IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 30,
+	IPV4_DEVCONF_DROP_GRATUITOUS_ARP = 31,
+	IPV4_DEVCONF_BC_FORWARDING = 32,
+	IPV4_DEVCONF_ARP_EVICT_NOCARRIER = 33,
+	__IPV4_DEVCONF_MAX = 34,
+};
+
+enum in6_addr_gen_mode {
+	IN6_ADDR_GEN_MODE_EUI64 = 0,
+	IN6_ADDR_GEN_MODE_NONE = 1,
+	IN6_ADDR_GEN_MODE_STABLE_PRIVACY = 2,
+	IN6_ADDR_GEN_MODE_RANDOM = 3,
+};
+
+struct packet_cb {
+	u64 nonce;
+	struct noise_keypair *keypair;
+	atomic_t state;
+	u32 mtu;
+	u8 ds;
+};
+
+enum {
+	NAPI_STATE_SCHED = 0,
+	NAPI_STATE_MISSED = 1,
+	NAPI_STATE_DISABLE = 2,
+	NAPI_STATE_NPSVC = 3,
+	NAPI_STATE_LISTED = 4,
+	NAPI_STATE_NO_BUSY_POLL = 5,
+	NAPI_STATE_IN_BUSY_POLL = 6,
+	NAPI_STATE_PREFER_BUSY_POLL = 7,
+	NAPI_STATE_THREADED = 8,
+	NAPI_STATE_SCHED_THREADED = 9,
+};
+
+enum netdev_state_t {
+	__LINK_STATE_START = 0,
+	__LINK_STATE_PRESENT = 1,
+	__LINK_STATE_NOCARRIER = 2,
+	__LINK_STATE_LINKWATCH_PENDING = 3,
+	__LINK_STATE_DORMANT = 4,
+	__LINK_STATE_TESTING = 5,
+};
+
+struct udp_hslot;
+
+struct udp_table {
+	struct udp_hslot *hash;
+	struct udp_hslot *hash2;
+	unsigned int mask;
+	unsigned int log;
+};
+
+struct udp_hslot {
+	struct hlist_head head;
+	int count;
+	spinlock_t lock;
+};
+
+enum {
+	HANDSHAKE_DSCP = 136,
+};
+
+enum packet_state {
+	PACKET_STATE_UNCRYPTED = 0,
+	PACKET_STATE_CRYPTED = 1,
+	PACKET_STATE_DEAD = 2,
+};
+
+enum {
+	INET_ECN_NOT_ECT = 0,
+	INET_ECN_ECT_1 = 1,
+	INET_ECN_ECT_0 = 2,
+	INET_ECN_CE = 3,
+	INET_ECN_MASK = 3,
+};
+
+struct message_data {
+	struct message_header header;
+	__le32 key_idx;
+	__le64 counter;
+	u8 encrypted_data[0];
+};
+
+struct message_handshake_cookie {
+	struct message_header header;
+	__le32 receiver_index;
+	u8 nonce[24];
+	u8 encrypted_cookie[32];
+};
+
+struct vlan_hdr {
+	__be16 h_vlan_TCI;
+	__be16 h_vlan_encapsulated_proto;
+};
+
+struct flow_dissector_key_control {
+	u16 thoff;
+	u16 addr_type;
+	u32 flags;
+};
+
+struct flow_dissector_key_basic {
+	__be16 n_proto;
+	u8 ip_proto;
+	u8 padding;
+};
+
+struct flow_keys_basic {
+	struct flow_dissector_key_control control;
+	struct flow_dissector_key_basic basic;
+};
+
+struct flow_dissector {
+	unsigned long long used_keys;
+	unsigned short offset[33];
+};
+
+enum cookie_mac_state {
+	INVALID_MAC = 0,
+	VALID_MAC_BUT_NO_COOKIE = 1,
+	VALID_MAC_WITH_COOKIE_BUT_RATELIMITED = 2,
+	VALID_MAC_WITH_COOKIE = 3,
+};
+
+enum counter_values {
+	COUNTER_BITS_TOTAL = 8192,
+	COUNTER_REDUNDANT_BITS = 64,
+	COUNTER_WINDOW_SIZE = 8128,
+};
+
+enum gro_result {
+	GRO_MERGED = 0,
+	GRO_MERGED_FREE = 1,
+	GRO_HELD = 2,
+	GRO_NORMAL = 3,
+	GRO_CONSUMED = 4,
+};
+
+typedef enum gro_result gro_result_t;
+
+struct udp_tunnel_info {
+	unsigned short type;
+	sa_family_t sa_family;
+	__be16 port;
+	u8 hw_priv;
+};
+
+struct udp_tunnel_nic_shared {
+	struct udp_tunnel_nic *udp_tunnel_nic_info;
+	struct list_head devices;
+};
+
+enum rt_scope_t {
+	RT_SCOPE_UNIVERSE = 0,
+	RT_SCOPE_SITE = 200,
+	RT_SCOPE_LINK = 253,
+	RT_SCOPE_HOST = 254,
+	RT_SCOPE_NOWHERE = 255,
+};
+
+enum {
+	RTAX_UNSPEC = 0,
+	RTAX_LOCK = 1,
+	RTAX_MTU = 2,
+	RTAX_WINDOW = 3,
+	RTAX_RTT = 4,
+	RTAX_RTTVAR = 5,
+	RTAX_SSTHRESH = 6,
+	RTAX_CWND = 7,
+	RTAX_ADVMSS = 8,
+	RTAX_REORDERING = 9,
+	RTAX_HOPLIMIT = 10,
+	RTAX_INITCWND = 11,
+	RTAX_FEATURES = 12,
+	RTAX_RTO_MIN = 13,
+	RTAX_INITRWND = 14,
+	RTAX_QUICKACK = 15,
+	RTAX_CC_ALGO = 16,
+	RTAX_FASTOPEN_NO_COOKIE = 17,
+	__RTAX_MAX = 18,
+};
+
+struct udp_port_cfg {
+	u8 family;
+	union {
+		struct in_addr local_ip;
+		struct in6_addr local_ip6;
+	};
+	union {
+		struct in_addr peer_ip;
+		struct in6_addr peer_ip6;
+	};
+	__be16 local_udp_port;
+	__be16 peer_udp_port;
+	int bind_ifindex;
+	unsigned int use_udp_checksums: 1;
+	unsigned int use_udp6_tx_checksums: 1;
+	unsigned int use_udp6_rx_checksums: 1;
+	unsigned int ipv6_v6only: 1;
+};
+
+typedef int (*udp_tunnel_encap_rcv_t)(struct sock *, struct sk_buff *);
+
+typedef int (*udp_tunnel_encap_err_lookup_t)(struct sock *, struct sk_buff *);
+
+typedef void (*udp_tunnel_encap_err_rcv_t)(struct sock *, struct sk_buff *, int, __be16, u32, u8 *);
+
+typedef void (*udp_tunnel_encap_destroy_t)(struct sock *);
+
+typedef struct sk_buff * (*udp_tunnel_gro_receive_t)(struct sock *, struct list_head *, struct sk_buff *);
+
+typedef int (*udp_tunnel_gro_complete_t)(struct sock *, struct sk_buff *, int);
+
+struct udp_tunnel_sock_cfg {
+	void *sk_user_data;
+	__u8 encap_type;
+	udp_tunnel_encap_rcv_t encap_rcv;
+	udp_tunnel_encap_err_lookup_t encap_err_lookup;
+	udp_tunnel_encap_err_rcv_t encap_err_rcv;
+	udp_tunnel_encap_destroy_t encap_destroy;
+	udp_tunnel_gro_receive_t gro_receive;
+	udp_tunnel_gro_complete_t gro_complete;
+};
+
+typedef struct {
+	unsigned long key[2];
+} hsiphash_key_t;
+
+enum {
+	PACKETS_PER_SECOND = 20,
+	PACKETS_BURSTABLE = 5,
+	PACKET_COST = 50000000,
+	TOKEN_MAX = 250000000,
+};
+
+struct ratelimiter_entry {
+	u64 last_time_ns;
+	u64 tokens;
+	u64 ip;
+	void *net;
+	spinlock_t lock;
+	struct hlist_node hash;
+	struct callback_head rcu;
+};
+
+enum cookie_values {
+	COOKIE_SECRET_MAX_AGE = 120,
+	COOKIE_SECRET_LATENCY = 5,
+	COOKIE_NONCE_LEN = 24,
+	COOKIE_LEN = 16,
+};
+
+enum {
+	COOKIE_KEY_LABEL_LEN = 8,
+};
+
+enum wgdevice_attribute {
+	WGDEVICE_A_UNSPEC = 0,
+	WGDEVICE_A_IFINDEX = 1,
+	WGDEVICE_A_IFNAME = 2,
+	WGDEVICE_A_PRIVATE_KEY = 3,
+	WGDEVICE_A_PUBLIC_KEY = 4,
+	WGDEVICE_A_FLAGS = 5,
+	WGDEVICE_A_LISTEN_PORT = 6,
+	WGDEVICE_A_FWMARK = 7,
+	WGDEVICE_A_PEERS = 8,
+	__WGDEVICE_A_LAST = 9,
+};
+
+enum wg_cmd {
+	WG_CMD_GET_DEVICE = 0,
+	WG_CMD_SET_DEVICE = 1,
+	__WG_CMD_MAX = 2,
+};
+
+enum wgpeer_attribute {
+	WGPEER_A_UNSPEC = 0,
+	WGPEER_A_PUBLIC_KEY = 1,
+	WGPEER_A_PRESHARED_KEY = 2,
+	WGPEER_A_FLAGS = 3,
+	WGPEER_A_ENDPOINT = 4,
+	WGPEER_A_PERSISTENT_KEEPALIVE_INTERVAL = 5,
+	WGPEER_A_LAST_HANDSHAKE_TIME = 6,
+	WGPEER_A_RX_BYTES = 7,
+	WGPEER_A_TX_BYTES = 8,
+	WGPEER_A_ALLOWEDIPS = 9,
+	WGPEER_A_PROTOCOL_VERSION = 10,
+	__WGPEER_A_LAST = 11,
+};
+
+enum wgallowedip_attribute {
+	WGALLOWEDIP_A_UNSPEC = 0,
+	WGALLOWEDIP_A_FAMILY = 1,
+	WGALLOWEDIP_A_IPADDR = 2,
+	WGALLOWEDIP_A_CIDR_MASK = 3,
+	__WGALLOWEDIP_A_LAST = 4,
+};
+
+enum wgdevice_flag {
+	WGDEVICE_F_REPLACE_PEERS = 1,
+	__WGDEVICE_F_ALL = 1,
+};
+
+enum wgpeer_flag {
+	WGPEER_F_REMOVE_ME = 1,
+	WGPEER_F_REPLACE_ALLOWEDIPS = 2,
+	WGPEER_F_UPDATE_ONLY = 4,
+	__WGPEER_F_ALL = 7,
+};
+
+struct dump_ctx {
+	struct wg_device *wg;
+	struct wg_peer *next_peer;
+	u64 allowedips_seq;
+	struct allowedips_node *next_allowedip;
+};
+
+struct genl_dumpit_info {
+	struct genl_split_ops op;
+	struct genl_info info;
+};
+
+struct qdisc_walker {
+	int stop;
+	int skip;
+	int count;
+	int (*fn)(struct Qdisc *, unsigned long, struct qdisc_walker *);
+};
+
+struct ifb_q_stats_desc {
+	char desc[32];
+	size_t offset;
+};
+
+enum netdev_queue_state_t {
+	__QUEUE_STATE_DRV_XOFF = 0,
+	__QUEUE_STATE_STACK_XOFF = 1,
+	__QUEUE_STATE_FROZEN = 2,
+};
+
+enum ethtool_stringset {
+	ETH_SS_TEST = 0,
+	ETH_SS_STATS = 1,
+	ETH_SS_PRIV_FLAGS = 2,
+	ETH_SS_NTUPLE_FILTERS = 3,
+	ETH_SS_FEATURES = 4,
+	ETH_SS_RSS_HASH_FUNCS = 5,
+	ETH_SS_TUNABLES = 6,
+	ETH_SS_PHY_STATS = 7,
+	ETH_SS_PHY_TUNABLES = 8,
+	ETH_SS_LINK_MODES = 9,
+	ETH_SS_MSG_CLASSES = 10,
+	ETH_SS_WOL_MODES = 11,
+	ETH_SS_SOF_TIMESTAMPING = 12,
+	ETH_SS_TS_TX_TYPES = 13,
+	ETH_SS_TS_RX_FILTERS = 14,
+	ETH_SS_UDP_TUNNEL_TYPES = 15,
+	ETH_SS_STATS_STD = 16,
+	ETH_SS_STATS_ETH_PHY = 17,
+	ETH_SS_STATS_ETH_MAC = 18,
+	ETH_SS_STATS_ETH_CTRL = 19,
+	ETH_SS_STATS_RMON = 20,
+	ETH_SS_COUNT = 21,
+};
+
+struct ifb_q_stats {
+	u64 packets;
+	u64 bytes;
+	struct u64_stats_sync sync;
+};
+
+struct ifb_q_private {
+	struct net_device *dev;
+	struct tasklet_struct ifb_tasklet;
+	int tasklet_pending;
+	int txqnum;
+	struct sk_buff_head rq;
+	struct sk_buff_head tq;
+	struct ifb_q_stats rx_stats;
+	struct ifb_q_stats tx_stats;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct ifb_dev_private {
+	struct ifb_q_private *tx_private;
+};
+
+struct mdio_bus_stats {
+	u64_stats_t transfers;
+	u64_stats_t errors;
+	u64_stats_t writes;
+	u64_stats_t reads;
+	struct u64_stats_sync syncp;
+};
+
+struct mdio_device;
+
+struct phy_package_shared;
+
+struct mii_bus {
+	struct module *owner;
+	const char *name;
+	char id[61];
+	void *priv;
+	int (*read)(struct mii_bus *, int, int);
+	int (*write)(struct mii_bus *, int, int, u16);
+	int (*read_c45)(struct mii_bus *, int, int, int);
+	int (*write_c45)(struct mii_bus *, int, int, int, u16);
+	int (*reset)(struct mii_bus *);
+	struct mdio_bus_stats stats[32];
+	struct mutex mdio_lock;
+	struct device *parent;
+	enum {
+		MDIOBUS_ALLOCATED = 1,
+		MDIOBUS_REGISTERED = 2,
+		MDIOBUS_UNREGISTERED = 3,
+		MDIOBUS_RELEASED = 4,
+	} state;
+	struct device dev;
+	struct mdio_device *mdio_map[32];
+	u32 phy_mask;
+	u32 phy_ignore_ta_mask;
+	int irq[32];
+	int reset_delay_us;
+	int reset_post_delay_us;
+	struct gpio_desc *reset_gpiod;
+	struct mutex shared_lock;
+	struct phy_package_shared *shared[32];
+};
+
+struct mdio_device {
+	struct device dev;
+	struct mii_bus *bus;
+	char modalias[32];
+	int (*bus_match)(struct device *, struct device_driver *);
+	void (*device_free)(struct mdio_device *);
+	void (*device_remove)(struct mdio_device *);
+	int addr;
+	int flags;
+	struct gpio_desc *reset_gpio;
+	struct reset_control *reset_ctrl;
+	unsigned int reset_assert_delay;
+	unsigned int reset_deassert_delay;
+};
+
+struct phy_package_shared {
+	int addr;
+	refcount_t refcnt;
+	unsigned long flags;
+	size_t priv_size;
+	void *priv;
+};
+
+struct mdio_board_info {
+	const char *bus_id;
+	char modalias[32];
+	int mdio_addr;
+	const void *platform_data;
+};
+
+struct mdio_board_entry {
+	struct list_head list;
+	struct mdio_board_info board_info;
+};
+
+struct phylib_stubs {
+	int (*hwtstamp_get)(struct phy_device *, struct kernel_hwtstamp_config *);
+	int (*hwtstamp_set)(struct phy_device *, struct kernel_hwtstamp_config *, struct netlink_ext_ack *);
+};
+
+struct mdiobus_devres {
+	struct mii_bus *mii;
+};
+
+struct sfp_eeprom_id;
+
+struct sfp_upstream_ops {
+	void (*attach)(void *, struct sfp_bus *);
+	void (*detach)(void *, struct sfp_bus *);
+	int (*module_insert)(void *, const struct sfp_eeprom_id *);
+	void (*module_remove)(void *);
+	int (*module_start)(void *);
+	void (*module_stop)(void *);
+	void (*link_down)(void *);
+	void (*link_up)(void *);
+	int (*connect_phy)(void *, struct phy_device *);
+	void (*disconnect_phy)(void *);
+};
+
+struct sfp_eeprom_base {
+	u8 phys_id;
+	u8 phys_ext_id;
+	u8 connector;
+	u8 if_1x_copper_passive: 1;
+	u8 if_1x_copper_active: 1;
+	u8 if_1x_lx: 1;
+	u8 if_1x_sx: 1;
+	u8 e10g_base_sr: 1;
+	u8 e10g_base_lr: 1;
+	u8 e10g_base_lrm: 1;
+	u8 e10g_base_er: 1;
+	u8 sonet_oc3_short_reach: 1;
+	u8 sonet_oc3_smf_intermediate_reach: 1;
+	u8 sonet_oc3_smf_long_reach: 1;
+	u8 unallocated_5_3: 1;
+	u8 sonet_oc12_short_reach: 1;
+	u8 sonet_oc12_smf_intermediate_reach: 1;
+	u8 sonet_oc12_smf_long_reach: 1;
+	u8 unallocated_5_7: 1;
+	u8 sonet_oc48_short_reach: 1;
+	u8 sonet_oc48_intermediate_reach: 1;
+	u8 sonet_oc48_long_reach: 1;
+	u8 sonet_reach_bit2: 1;
+	u8 sonet_reach_bit1: 1;
+	u8 sonet_oc192_short_reach: 1;
+	u8 escon_smf_1310_laser: 1;
+	u8 escon_mmf_1310_led: 1;
+	u8 e1000_base_sx: 1;
+	u8 e1000_base_lx: 1;
+	u8 e1000_base_cx: 1;
+	u8 e1000_base_t: 1;
+	u8 e100_base_lx: 1;
+	u8 e100_base_fx: 1;
+	u8 e_base_bx10: 1;
+	u8 e_base_px: 1;
+	u8 fc_tech_electrical_inter_enclosure: 1;
+	u8 fc_tech_lc: 1;
+	u8 fc_tech_sa: 1;
+	u8 fc_ll_m: 1;
+	u8 fc_ll_l: 1;
+	u8 fc_ll_i: 1;
+	u8 fc_ll_s: 1;
+	u8 fc_ll_v: 1;
+	u8 unallocated_8_0: 1;
+	u8 unallocated_8_1: 1;
+	u8 sfp_ct_passive: 1;
+	u8 sfp_ct_active: 1;
+	u8 fc_tech_ll: 1;
+	u8 fc_tech_sl: 1;
+	u8 fc_tech_sn: 1;
+	u8 fc_tech_electrical_intra_enclosure: 1;
+	u8 fc_media_sm: 1;
+	u8 unallocated_9_1: 1;
+	u8 fc_media_m5: 1;
+	u8 fc_media_m6: 1;
+	u8 fc_media_tv: 1;
+	u8 fc_media_mi: 1;
+	u8 fc_media_tp: 1;
+	u8 fc_media_tw: 1;
+	u8 fc_speed_100: 1;
+	u8 unallocated_10_1: 1;
+	u8 fc_speed_200: 1;
+	u8 fc_speed_3200: 1;
+	u8 fc_speed_400: 1;
+	u8 fc_speed_1600: 1;
+	u8 fc_speed_800: 1;
+	u8 fc_speed_1200: 1;
+	u8 encoding;
+	u8 br_nominal;
+	u8 rate_id;
+	u8 link_len[6];
+	char vendor_name[16];
+	u8 extended_cc;
+	char vendor_oui[3];
+	char vendor_pn[16];
+	char vendor_rev[4];
+	union {
+		__be16 optical_wavelength;
+		__be16 cable_compliance;
+		struct {
+			u8 sff8431_app_e: 1;
+			u8 fc_pi_4_app_h: 1;
+			u8 reserved60_2: 6;
+			u8 reserved61: 8;
+		} passive;
+		struct {
+			u8 sff8431_app_e: 1;
+			u8 fc_pi_4_app_h: 1;
+			u8 sff8431_lim: 1;
+			u8 fc_pi_4_lim: 1;
+			u8 reserved60_4: 4;
+			u8 reserved61: 8;
+		} active;
+	};
+	u8 reserved62;
+	u8 cc_base;
+};
+
+struct sfp_eeprom_ext {
+	__be16 options;
+	u8 br_max;
+	u8 br_min;
+	char vendor_sn[16];
+	char datecode[8];
+	u8 diagmon;
+	u8 enhopts;
+	u8 sff8472_compliance;
+	u8 cc_ext;
+};
+
+struct sfp_eeprom_id {
+	struct sfp_eeprom_base base;
+	struct sfp_eeprom_ext ext;
+};
+
+struct phy_c45_device_ids {
+	u32 devices_in_package;
+	u32 mmds_present;
+	u32 device_ids[32];
+};
+
+enum phy_state {
+	PHY_DOWN = 0,
+	PHY_READY = 1,
+	PHY_HALTED = 2,
+	PHY_ERROR = 3,
+	PHY_UP = 4,
+	PHY_RUNNING = 5,
+	PHY_NOLINK = 6,
+	PHY_CABLETEST = 7,
+};
+
+struct pse_control;
+
+struct phy_driver;
+
+struct phy_led_trigger;
+
+struct phylink;
+
+struct mii_timestamper;
+
+struct phy_device {
+	struct mdio_device mdio;
+	struct phy_driver *drv;
+	struct device_link *devlink;
+	u32 phy_id;
+	struct phy_c45_device_ids c45_ids;
+	unsigned int is_c45: 1;
+	unsigned int is_internal: 1;
+	unsigned int is_pseudo_fixed_link: 1;
+	unsigned int is_gigabit_capable: 1;
+	unsigned int has_fixups: 1;
+	unsigned int suspended: 1;
+	unsigned int suspended_by_mdio_bus: 1;
+	unsigned int sysfs_links: 1;
+	unsigned int loopback_enabled: 1;
+	unsigned int downshifted_rate: 1;
+	unsigned int is_on_sfp_module: 1;
+	unsigned int mac_managed_pm: 1;
+	unsigned int wol_enabled: 1;
+	unsigned int autoneg: 1;
+	unsigned int link: 1;
+	unsigned int autoneg_complete: 1;
+	unsigned int interrupts: 1;
+	unsigned int irq_suspended: 1;
+	unsigned int irq_rerun: 1;
+	int rate_matching;
+	enum phy_state state;
+	u32 dev_flags;
+	phy_interface_t interface;
+	int speed;
+	int duplex;
+	int port;
+	int pause;
+	int asym_pause;
+	u8 master_slave_get;
+	u8 master_slave_set;
+	u8 master_slave_state;
+	unsigned long supported[2];
+	unsigned long advertising[2];
+	unsigned long lp_advertising[2];
+	unsigned long adv_old[2];
+	unsigned long supported_eee[2];
+	unsigned long advertising_eee[2];
+	bool eee_enabled;
+	unsigned long host_interfaces[1];
+	u32 eee_broken_modes;
+	struct phy_led_trigger *phy_led_triggers;
+	unsigned int phy_num_led_triggers;
+	struct phy_led_trigger *last_triggered;
+	struct phy_led_trigger *led_link_trigger;
+	struct list_head leds;
+	int irq;
+	void *priv;
+	struct phy_package_shared *shared;
+	struct sk_buff *skb;
+	void *ehdr;
+	struct nlattr *nest;
+	struct delayed_work state_queue;
+	struct mutex lock;
+	bool sfp_bus_attached;
+	struct sfp_bus *sfp_bus;
+	struct phylink *phylink;
+	struct net_device *attached_dev;
+	struct mii_timestamper *mii_ts;
+	struct pse_control *psec;
+	u8 mdix;
+	u8 mdix_ctrl;
+	int pma_extable;
+	unsigned int link_down_events;
+	void (*phy_link_change)(struct phy_device *, bool);
+	void (*adjust_link)(struct net_device *);
+	const struct macsec_ops *macsec_ops;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct mdio_driver_common {
+	struct device_driver driver;
+	int flags;
+};
+
+enum led_brightness {
+	LED_OFF = 0,
+	LED_ON = 1,
+	LED_HALF = 127,
+	LED_FULL = 255,
+};
+
+struct phy_tdr_config;
+
+struct phy_plca_cfg;
+
+struct phy_plca_status;
+
+struct phy_driver {
+	struct mdio_driver_common mdiodrv;
+	u32 phy_id;
+	char *name;
+	u32 phy_id_mask;
+	const unsigned long * const features;
+	u32 flags;
+	const void *driver_data;
+	int (*soft_reset)(struct phy_device *);
+	int (*config_init)(struct phy_device *);
+	int (*probe)(struct phy_device *);
+	int (*get_features)(struct phy_device *);
+	int (*get_rate_matching)(struct phy_device *, phy_interface_t);
+	int (*suspend)(struct phy_device *);
+	int (*resume)(struct phy_device *);
+	int (*config_aneg)(struct phy_device *);
+	int (*aneg_done)(struct phy_device *);
+	int (*read_status)(struct phy_device *);
+	int (*config_intr)(struct phy_device *);
+	irqreturn_t (*handle_interrupt)(struct phy_device *);
+	void (*remove)(struct phy_device *);
+	int (*match_phy_device)(struct phy_device *);
+	int (*set_wol)(struct phy_device *, struct ethtool_wolinfo *);
+	void (*get_wol)(struct phy_device *, struct ethtool_wolinfo *);
+	void (*link_change_notify)(struct phy_device *);
+	int (*read_mmd)(struct phy_device *, int, u16);
+	int (*write_mmd)(struct phy_device *, int, u16, u16);
+	int (*read_page)(struct phy_device *);
+	int (*write_page)(struct phy_device *, int);
+	int (*module_info)(struct phy_device *, struct ethtool_modinfo *);
+	int (*module_eeprom)(struct phy_device *, struct ethtool_eeprom *, u8 *);
+	int (*cable_test_start)(struct phy_device *);
+	int (*cable_test_tdr_start)(struct phy_device *, const struct phy_tdr_config *);
+	int (*cable_test_get_status)(struct phy_device *, bool *);
+	int (*get_sset_count)(struct phy_device *);
+	void (*get_strings)(struct phy_device *, u8 *);
+	void (*get_stats)(struct phy_device *, struct ethtool_stats *, u64 *);
+	int (*get_tunable)(struct phy_device *, struct ethtool_tunable *, void *);
+	int (*set_tunable)(struct phy_device *, struct ethtool_tunable *, const void *);
+	int (*set_loopback)(struct phy_device *, bool);
+	int (*get_sqi)(struct phy_device *);
+	int (*get_sqi_max)(struct phy_device *);
+	int (*get_plca_cfg)(struct phy_device *, struct phy_plca_cfg *);
+	int (*set_plca_cfg)(struct phy_device *, const struct phy_plca_cfg *);
+	int (*get_plca_status)(struct phy_device *, struct phy_plca_status *);
+	int (*led_brightness_set)(struct phy_device *, u8, enum led_brightness);
+	int (*led_blink_set)(struct phy_device *, u8, unsigned long *, unsigned long *);
+	int (*led_hw_is_supported)(struct phy_device *, u8, unsigned long);
+	int (*led_hw_control_set)(struct phy_device *, u8, unsigned long);
+	int (*led_hw_control_get)(struct phy_device *, u8, unsigned long *);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct phy_tdr_config {
+	u32 first;
+	u32 last;
+	u32 step;
+	s8 pair;
+};
+
+struct phy_plca_cfg {
+	int version;
+	int enabled;
+	int node_id;
+	int node_cnt;
+	int to_tmr;
+	int burst_cnt;
+	int burst_tmr;
+};
+
+struct phy_plca_status {
+	bool pst;
+};
+
+struct phylink_link_state {
+	unsigned long advertising[2];
+	unsigned long lp_advertising[2];
+	phy_interface_t interface;
+	int speed;
+	int duplex;
+	int pause;
+	int rate_matching;
+	unsigned int link: 1;
+	unsigned int an_complete: 1;
+};
+
+struct phylink_mac_ops;
+
+struct phylink_config;
+
+struct phylink_pcs;
+
+struct phylink {
+	struct net_device *netdev;
+	const struct phylink_mac_ops *mac_ops;
+	struct phylink_config *config;
+	struct phylink_pcs *pcs;
+	struct device *dev;
+	unsigned int old_link_state: 1;
+	unsigned long phylink_disable_state;
+	struct phy_device *phydev;
+	phy_interface_t link_interface;
+	u8 cfg_link_an_mode;
+	u8 cur_link_an_mode;
+	u8 link_port;
+	unsigned long supported[2];
+	struct phylink_link_state link_config;
+	phy_interface_t cur_interface;
+	struct gpio_desc *link_gpio;
+	unsigned int link_irq;
+	struct timer_list link_poll;
+	void (*get_fixed_state)(struct net_device *, struct phylink_link_state *);
+	struct mutex state_mutex;
+	struct phylink_link_state phy_state;
+	struct work_struct resolve;
+	unsigned int pcs_neg_mode;
+	unsigned int pcs_state;
+	bool mac_link_dropped;
+	bool using_mac_select_pcs;
+	struct sfp_bus *sfp_bus;
+	bool sfp_may_have_phy;
+	unsigned long sfp_interfaces[1];
+	unsigned long sfp_support[2];
+	u8 sfp_port;
+};
+
+struct phylink_mac_ops {
+	void (*validate)(struct phylink_config *, unsigned long *, struct phylink_link_state *);
+	struct phylink_pcs * (*mac_select_pcs)(struct phylink_config *, phy_interface_t);
+	int (*mac_prepare)(struct phylink_config *, unsigned int, phy_interface_t);
+	void (*mac_config)(struct phylink_config *, unsigned int, const struct phylink_link_state *);
+	int (*mac_finish)(struct phylink_config *, unsigned int, phy_interface_t);
+	void (*mac_link_down)(struct phylink_config *, unsigned int, phy_interface_t);
+	void (*mac_link_up)(struct phylink_config *, struct phy_device *, unsigned int, phy_interface_t, int, int, bool, bool);
+};
+
+enum phylink_op_type {
+	PHYLINK_NETDEV = 0,
+	PHYLINK_DEV = 1,
+};
+
+struct phylink_config {
+	struct device *dev;
+	enum phylink_op_type type;
+	bool poll_fixed_state;
+	bool mac_managed_pm;
+	bool ovr_an_inband;
+	void (*get_fixed_state)(struct phylink_config *, struct phylink_link_state *);
+	unsigned long supported_interfaces[1];
+	unsigned long mac_capabilities;
+};
+
+struct phylink_pcs_ops;
+
+struct phylink_pcs {
+	const struct phylink_pcs_ops *ops;
+	struct phylink *phylink;
+	bool neg_mode;
+	bool poll;
+};
+
+struct phylink_pcs_ops {
+	int (*pcs_validate)(struct phylink_pcs *, unsigned long *, const struct phylink_link_state *);
+	int (*pcs_enable)(struct phylink_pcs *);
+	void (*pcs_disable)(struct phylink_pcs *);
+	void (*pcs_pre_config)(struct phylink_pcs *, phy_interface_t);
+	int (*pcs_post_config)(struct phylink_pcs *, phy_interface_t);
+	void (*pcs_get_state)(struct phylink_pcs *, struct phylink_link_state *);
+	int (*pcs_config)(struct phylink_pcs *, unsigned int, phy_interface_t, const unsigned long *, bool);
+	void (*pcs_an_restart)(struct phylink_pcs *);
+	void (*pcs_link_up)(struct phylink_pcs *, unsigned int, phy_interface_t, int, int);
+};
+
+struct mii_timestamper {
+	bool (*rxtstamp)(struct mii_timestamper *, struct sk_buff *, int);
+	void (*txtstamp)(struct mii_timestamper *, struct sk_buff *, int);
+	int (*hwtstamp)(struct mii_timestamper *, struct ifreq *);
+	void (*link_state)(struct mii_timestamper *, struct phy_device *);
+	int (*ts_info)(struct mii_timestamper *, struct ethtool_ts_info *);
+	struct device *device;
+};
+
+enum ethtool_link_mode_bit_indices {
+	ETHTOOL_LINK_MODE_10baseT_Half_BIT = 0,
+	ETHTOOL_LINK_MODE_10baseT_Full_BIT = 1,
+	ETHTOOL_LINK_MODE_100baseT_Half_BIT = 2,
+	ETHTOOL_LINK_MODE_100baseT_Full_BIT = 3,
+	ETHTOOL_LINK_MODE_1000baseT_Half_BIT = 4,
+	ETHTOOL_LINK_MODE_1000baseT_Full_BIT = 5,
+	ETHTOOL_LINK_MODE_Autoneg_BIT = 6,
+	ETHTOOL_LINK_MODE_TP_BIT = 7,
+	ETHTOOL_LINK_MODE_AUI_BIT = 8,
+	ETHTOOL_LINK_MODE_MII_BIT = 9,
+	ETHTOOL_LINK_MODE_FIBRE_BIT = 10,
+	ETHTOOL_LINK_MODE_BNC_BIT = 11,
+	ETHTOOL_LINK_MODE_10000baseT_Full_BIT = 12,
+	ETHTOOL_LINK_MODE_Pause_BIT = 13,
+	ETHTOOL_LINK_MODE_Asym_Pause_BIT = 14,
+	ETHTOOL_LINK_MODE_2500baseX_Full_BIT = 15,
+	ETHTOOL_LINK_MODE_Backplane_BIT = 16,
+	ETHTOOL_LINK_MODE_1000baseKX_Full_BIT = 17,
+	ETHTOOL_LINK_MODE_10000baseKX4_Full_BIT = 18,
+	ETHTOOL_LINK_MODE_10000baseKR_Full_BIT = 19,
+	ETHTOOL_LINK_MODE_10000baseR_FEC_BIT = 20,
+	ETHTOOL_LINK_MODE_20000baseMLD2_Full_BIT = 21,
+	ETHTOOL_LINK_MODE_20000baseKR2_Full_BIT = 22,
+	ETHTOOL_LINK_MODE_40000baseKR4_Full_BIT = 23,
+	ETHTOOL_LINK_MODE_40000baseCR4_Full_BIT = 24,
+	ETHTOOL_LINK_MODE_40000baseSR4_Full_BIT = 25,
+	ETHTOOL_LINK_MODE_40000baseLR4_Full_BIT = 26,
+	ETHTOOL_LINK_MODE_56000baseKR4_Full_BIT = 27,
+	ETHTOOL_LINK_MODE_56000baseCR4_Full_BIT = 28,
+	ETHTOOL_LINK_MODE_56000baseSR4_Full_BIT = 29,
+	ETHTOOL_LINK_MODE_56000baseLR4_Full_BIT = 30,
+	ETHTOOL_LINK_MODE_25000baseCR_Full_BIT = 31,
+	ETHTOOL_LINK_MODE_25000baseKR_Full_BIT = 32,
+	ETHTOOL_LINK_MODE_25000baseSR_Full_BIT = 33,
+	ETHTOOL_LINK_MODE_50000baseCR2_Full_BIT = 34,
+	ETHTOOL_LINK_MODE_50000baseKR2_Full_BIT = 35,
+	ETHTOOL_LINK_MODE_100000baseKR4_Full_BIT = 36,
+	ETHTOOL_LINK_MODE_100000baseSR4_Full_BIT = 37,
+	ETHTOOL_LINK_MODE_100000baseCR4_Full_BIT = 38,
+	ETHTOOL_LINK_MODE_100000baseLR4_ER4_Full_BIT = 39,
+	ETHTOOL_LINK_MODE_50000baseSR2_Full_BIT = 40,
+	ETHTOOL_LINK_MODE_1000baseX_Full_BIT = 41,
+	ETHTOOL_LINK_MODE_10000baseCR_Full_BIT = 42,
+	ETHTOOL_LINK_MODE_10000baseSR_Full_BIT = 43,
+	ETHTOOL_LINK_MODE_10000baseLR_Full_BIT = 44,
+	ETHTOOL_LINK_MODE_10000baseLRM_Full_BIT = 45,
+	ETHTOOL_LINK_MODE_10000baseER_Full_BIT = 46,
+	ETHTOOL_LINK_MODE_2500baseT_Full_BIT = 47,
+	ETHTOOL_LINK_MODE_5000baseT_Full_BIT = 48,
+	ETHTOOL_LINK_MODE_FEC_NONE_BIT = 49,
+	ETHTOOL_LINK_MODE_FEC_RS_BIT = 50,
+	ETHTOOL_LINK_MODE_FEC_BASER_BIT = 51,
+	ETHTOOL_LINK_MODE_50000baseKR_Full_BIT = 52,
+	ETHTOOL_LINK_MODE_50000baseSR_Full_BIT = 53,
+	ETHTOOL_LINK_MODE_50000baseCR_Full_BIT = 54,
+	ETHTOOL_LINK_MODE_50000baseLR_ER_FR_Full_BIT = 55,
+	ETHTOOL_LINK_MODE_50000baseDR_Full_BIT = 56,
+	ETHTOOL_LINK_MODE_100000baseKR2_Full_BIT = 57,
+	ETHTOOL_LINK_MODE_100000baseSR2_Full_BIT = 58,
+	ETHTOOL_LINK_MODE_100000baseCR2_Full_BIT = 59,
+	ETHTOOL_LINK_MODE_100000baseLR2_ER2_FR2_Full_BIT = 60,
+	ETHTOOL_LINK_MODE_100000baseDR2_Full_BIT = 61,
+	ETHTOOL_LINK_MODE_200000baseKR4_Full_BIT = 62,
+	ETHTOOL_LINK_MODE_200000baseSR4_Full_BIT = 63,
+	ETHTOOL_LINK_MODE_200000baseLR4_ER4_FR4_Full_BIT = 64,
+	ETHTOOL_LINK_MODE_200000baseDR4_Full_BIT = 65,
+	ETHTOOL_LINK_MODE_200000baseCR4_Full_BIT = 66,
+	ETHTOOL_LINK_MODE_100baseT1_Full_BIT = 67,
+	ETHTOOL_LINK_MODE_1000baseT1_Full_BIT = 68,
+	ETHTOOL_LINK_MODE_400000baseKR8_Full_BIT = 69,
+	ETHTOOL_LINK_MODE_400000baseSR8_Full_BIT = 70,
+	ETHTOOL_LINK_MODE_400000baseLR8_ER8_FR8_Full_BIT = 71,
+	ETHTOOL_LINK_MODE_400000baseDR8_Full_BIT = 72,
+	ETHTOOL_LINK_MODE_400000baseCR8_Full_BIT = 73,
+	ETHTOOL_LINK_MODE_FEC_LLRS_BIT = 74,
+	ETHTOOL_LINK_MODE_100000baseKR_Full_BIT = 75,
+	ETHTOOL_LINK_MODE_100000baseSR_Full_BIT = 76,
+	ETHTOOL_LINK_MODE_100000baseLR_ER_FR_Full_BIT = 77,
+	ETHTOOL_LINK_MODE_100000baseCR_Full_BIT = 78,
+	ETHTOOL_LINK_MODE_100000baseDR_Full_BIT = 79,
+	ETHTOOL_LINK_MODE_200000baseKR2_Full_BIT = 80,
+	ETHTOOL_LINK_MODE_200000baseSR2_Full_BIT = 81,
+	ETHTOOL_LINK_MODE_200000baseLR2_ER2_FR2_Full_BIT = 82,
+	ETHTOOL_LINK_MODE_200000baseDR2_Full_BIT = 83,
+	ETHTOOL_LINK_MODE_200000baseCR2_Full_BIT = 84,
+	ETHTOOL_LINK_MODE_400000baseKR4_Full_BIT = 85,
+	ETHTOOL_LINK_MODE_400000baseSR4_Full_BIT = 86,
+	ETHTOOL_LINK_MODE_400000baseLR4_ER4_FR4_Full_BIT = 87,
+	ETHTOOL_LINK_MODE_400000baseDR4_Full_BIT = 88,
+	ETHTOOL_LINK_MODE_400000baseCR4_Full_BIT = 89,
+	ETHTOOL_LINK_MODE_100baseFX_Half_BIT = 90,
+	ETHTOOL_LINK_MODE_100baseFX_Full_BIT = 91,
+	ETHTOOL_LINK_MODE_10baseT1L_Full_BIT = 92,
+	ETHTOOL_LINK_MODE_800000baseCR8_Full_BIT = 93,
+	ETHTOOL_LINK_MODE_800000baseKR8_Full_BIT = 94,
+	ETHTOOL_LINK_MODE_800000baseDR8_Full_BIT = 95,
+	ETHTOOL_LINK_MODE_800000baseDR8_2_Full_BIT = 96,
+	ETHTOOL_LINK_MODE_800000baseSR8_Full_BIT = 97,
+	ETHTOOL_LINK_MODE_800000baseVR8_Full_BIT = 98,
+	ETHTOOL_LINK_MODE_10baseT1S_Full_BIT = 99,
+	ETHTOOL_LINK_MODE_10baseT1S_Half_BIT = 100,
+	ETHTOOL_LINK_MODE_10baseT1S_P2MP_Half_BIT = 101,
+	__ETHTOOL_LINK_MODE_MASK_NBITS = 102,
+};
+
+enum {
+	MLO_PAUSE_NONE = 0,
+	MLO_PAUSE_RX = 1,
+	MLO_PAUSE_TX = 2,
+	MLO_PAUSE_TXRX_MASK = 3,
+	MLO_PAUSE_AN = 4,
+	MLO_AN_PHY = 0,
+	MLO_AN_FIXED = 1,
+	MLO_AN_INBAND = 2,
+	PHYLINK_PCS_NEG_NONE = 0,
+	PHYLINK_PCS_NEG_ENABLED = 16,
+	PHYLINK_PCS_NEG_OUTBAND = 32,
+	PHYLINK_PCS_NEG_INBAND = 64,
+	PHYLINK_PCS_NEG_INBAND_DISABLED = 64,
+	PHYLINK_PCS_NEG_INBAND_ENABLED = 80,
+	MAC_SYM_PAUSE = 1,
+	MAC_ASYM_PAUSE = 2,
+	MAC_10HD = 4,
+	MAC_10FD = 8,
+	MAC_10 = 12,
+	MAC_100HD = 16,
+	MAC_100FD = 32,
+	MAC_100 = 48,
+	MAC_1000HD = 64,
+	MAC_1000FD = 128,
+	MAC_1000 = 192,
+	MAC_2500FD = 256,
+	MAC_5000FD = 512,
+	MAC_10000FD = 1024,
+	MAC_20000FD = 2048,
+	MAC_25000FD = 4096,
+	MAC_40000FD = 8192,
+	MAC_50000FD = 16384,
+	MAC_56000FD = 32768,
+	MAC_100000FD = 65536,
+	MAC_200000FD = 131072,
+	MAC_400000FD = 262144,
+};
+
+enum {
+	PHYLINK_DISABLE_STOPPED = 0,
+	PHYLINK_DISABLE_LINK = 1,
+	PHYLINK_DISABLE_MAC_WOL = 2,
+	PCS_STATE_DOWN = 0,
+	PCS_STATE_STARTING = 1,
+	PCS_STATE_STARTED = 2,
+};
+
+struct mii_ioctl_data {
+	__u16 phy_id;
+	__u16 reg_num;
+	__u16 val_in;
+	__u16 val_out;
+};
+
+struct phy_setting {
+	u32 speed;
+	u8 duplex;
+	u8 bit;
+};
+
+struct fixed_phy_status {
+	int link;
+	int speed;
+	int duplex;
+	int pause;
+	int asym_pause;
+};
+
+struct led_classdev;
+
+struct led_hw_trigger_type;
+
+struct led_trigger {
+	const char *name;
+	int (*activate)(struct led_classdev *);
+	void (*deactivate)(struct led_classdev *);
+	struct led_hw_trigger_type *trigger_type;
+	spinlock_t leddev_list_lock;
+	struct list_head led_cdevs;
+	struct list_head next_trig;
+	const struct attribute_group **groups;
+};
+
+struct phy_led_trigger {
+	struct led_trigger trigger;
+	char name[76];
+	unsigned int speed;
+};
+
+struct led_pattern;
+
+struct led_classdev {
+	const char *name;
+	unsigned int brightness;
+	unsigned int max_brightness;
+	unsigned int color;
+	int flags;
+	unsigned long work_flags;
+	void (*brightness_set)(struct led_classdev *, enum led_brightness);
+	int (*brightness_set_blocking)(struct led_classdev *, enum led_brightness);
+	enum led_brightness (*brightness_get)(struct led_classdev *);
+	int (*blink_set)(struct led_classdev *, unsigned long *, unsigned long *);
+	int (*pattern_set)(struct led_classdev *, struct led_pattern *, u32, int);
+	int (*pattern_clear)(struct led_classdev *);
+	struct device *dev;
+	const struct attribute_group **groups;
+	struct list_head node;
+	const char *default_trigger;
+	unsigned long blink_delay_on;
+	unsigned long blink_delay_off;
+	struct timer_list blink_timer;
+	int blink_brightness;
+	int new_blink_brightness;
+	void (*flash_resume)(struct led_classdev *);
+	struct work_struct set_brightness_work;
+	int delayed_set_value;
+	unsigned long delayed_delay_on;
+	unsigned long delayed_delay_off;
+	struct rw_semaphore trigger_lock;
+	struct led_trigger *trigger;
+	struct list_head trig_list;
+	void *trigger_data;
+	bool activated;
+	struct led_hw_trigger_type *trigger_type;
+	const char *hw_control_trigger;
+	int (*hw_control_is_supported)(struct led_classdev *, unsigned long);
+	int (*hw_control_set)(struct led_classdev *, unsigned long);
+	int (*hw_control_get)(struct led_classdev *, unsigned long *);
+	struct device * (*hw_control_get_device)(struct led_classdev *);
+	struct mutex led_access;
+};
+
+struct led_pattern {
+	u32 delta_t;
+	int brightness;
+};
+
+struct led_hw_trigger_type {
+	int dummy;
+};
+
+enum {
+	ETHTOOL_MSG_KERNEL_NONE = 0,
+	ETHTOOL_MSG_STRSET_GET_REPLY = 1,
+	ETHTOOL_MSG_LINKINFO_GET_REPLY = 2,
+	ETHTOOL_MSG_LINKINFO_NTF = 3,
+	ETHTOOL_MSG_LINKMODES_GET_REPLY = 4,
+	ETHTOOL_MSG_LINKMODES_NTF = 5,
+	ETHTOOL_MSG_LINKSTATE_GET_REPLY = 6,
+	ETHTOOL_MSG_DEBUG_GET_REPLY = 7,
+	ETHTOOL_MSG_DEBUG_NTF = 8,
+	ETHTOOL_MSG_WOL_GET_REPLY = 9,
+	ETHTOOL_MSG_WOL_NTF = 10,
+	ETHTOOL_MSG_FEATURES_GET_REPLY = 11,
+	ETHTOOL_MSG_FEATURES_SET_REPLY = 12,
+	ETHTOOL_MSG_FEATURES_NTF = 13,
+	ETHTOOL_MSG_PRIVFLAGS_GET_REPLY = 14,
+	ETHTOOL_MSG_PRIVFLAGS_NTF = 15,
+	ETHTOOL_MSG_RINGS_GET_REPLY = 16,
+	ETHTOOL_MSG_RINGS_NTF = 17,
+	ETHTOOL_MSG_CHANNELS_GET_REPLY = 18,
+	ETHTOOL_MSG_CHANNELS_NTF = 19,
+	ETHTOOL_MSG_COALESCE_GET_REPLY = 20,
+	ETHTOOL_MSG_COALESCE_NTF = 21,
+	ETHTOOL_MSG_PAUSE_GET_REPLY = 22,
+	ETHTOOL_MSG_PAUSE_NTF = 23,
+	ETHTOOL_MSG_EEE_GET_REPLY = 24,
+	ETHTOOL_MSG_EEE_NTF = 25,
+	ETHTOOL_MSG_TSINFO_GET_REPLY = 26,
+	ETHTOOL_MSG_CABLE_TEST_NTF = 27,
+	ETHTOOL_MSG_CABLE_TEST_TDR_NTF = 28,
+	ETHTOOL_MSG_TUNNEL_INFO_GET_REPLY = 29,
+	ETHTOOL_MSG_FEC_GET_REPLY = 30,
+	ETHTOOL_MSG_FEC_NTF = 31,
+	ETHTOOL_MSG_MODULE_EEPROM_GET_REPLY = 32,
+	ETHTOOL_MSG_STATS_GET_REPLY = 33,
+	ETHTOOL_MSG_PHC_VCLOCKS_GET_REPLY = 34,
+	ETHTOOL_MSG_MODULE_GET_REPLY = 35,
+	ETHTOOL_MSG_MODULE_NTF = 36,
+	ETHTOOL_MSG_PSE_GET_REPLY = 37,
+	ETHTOOL_MSG_RSS_GET_REPLY = 38,
+	ETHTOOL_MSG_PLCA_GET_CFG_REPLY = 39,
+	ETHTOOL_MSG_PLCA_GET_STATUS_REPLY = 40,
+	ETHTOOL_MSG_PLCA_NTF = 41,
+	ETHTOOL_MSG_MM_GET_REPLY = 42,
+	ETHTOOL_MSG_MM_NTF = 43,
+	__ETHTOOL_MSG_KERNEL_CNT = 44,
+	ETHTOOL_MSG_KERNEL_MAX = 43,
+};
+
+struct ethtool_phy_ops {
+	int (*get_sset_count)(struct phy_device *);
+	int (*get_strings)(struct phy_device *, u8 *);
+	int (*get_stats)(struct phy_device *, struct ethtool_stats *, u64 *);
+	int (*get_plca_cfg)(struct phy_device *, struct phy_plca_cfg *);
+	int (*set_plca_cfg)(struct phy_device *, const struct phy_plca_cfg *, struct netlink_ext_ack *);
+	int (*get_plca_status)(struct phy_device *, struct phy_plca_status *);
+	int (*start_cable_test)(struct phy_device *, struct netlink_ext_ack *);
+	int (*start_cable_test_tdr)(struct phy_device *, struct netlink_ext_ack *, const struct phy_tdr_config *);
+};
+
+struct phy_fixup {
+	struct list_head list;
+	char bus_id[64];
+	u32 phy_uid;
+	u32 phy_uid_mask;
+	int (*run)(struct phy_device *);
+};
+
+struct phy_led {
+	struct list_head list;
+	struct phy_device *phydev;
+	struct led_classdev led_cdev;
+	u8 index;
+};
+
+struct led_init_data {
+	struct fwnode_handle *fwnode;
+	const char *default_label;
+	const char *devicename;
+	bool devname_mandatory;
+};
+
+typedef void (*btf_trace_mdio_access)(void *, struct mii_bus *, char, u8, unsigned int, u16, int);
+
+struct trace_event_raw_mdio_access {
+	struct trace_entry ent;
+	char busid[61];
+	char read;
+	u8 addr;
+	u16 val;
+	unsigned int regnum;
+	char __data[0];
+};
+
+struct mdio_driver {
+	struct mdio_driver_common mdiodrv;
+	int (*probe)(struct mdio_device *);
+	void (*remove)(struct mdio_device *);
+	void (*shutdown)(struct mdio_device *);
+};
+
+struct trace_event_data_offsets_mdio_access {};
+
+struct mdio_bus_stat_attr {
+	int addr;
+	unsigned int field_offset;
+};
+
+struct swmii_regs {
+	u16 bmsr;
+	u16 lpa;
+	u16 lpagb;
+	u16 estat;
+};
+
+enum {
+	SWMII_SPEED_10 = 0,
+	SWMII_SPEED_100 = 1,
+	SWMII_SPEED_1000 = 2,
+	SWMII_DUPLEX_HALF = 0,
+	SWMII_DUPLEX_FULL = 1,
+};
+
+struct fixed_mdio_bus {
+	struct mii_bus *mii_bus;
+	struct list_head phys;
+};
+
+struct fixed_phy {
+	int addr;
+	struct phy_device *phydev;
+	struct fixed_phy_status status;
+	bool no_carrier;
+	int (*link_update)(struct net_device *, struct fixed_phy_status *);
+	struct list_head node;
+	struct gpio_desc *link_gpiod;
+};
+
+struct wpan_phy;
+
+struct wpan_dev_header_ops;
+
+struct wpan_dev {
+	struct wpan_phy *wpan_phy;
+	int iftype;
+	struct list_head list;
+	struct net_device *netdev;
+	const struct wpan_dev_header_ops *header_ops;
+	struct net_device *lowpan_dev;
+	u32 identifier;
+	__le16 pan_id;
+	__le16 short_addr;
+	__le64 extended_addr;
+	atomic_t bsn;
+	atomic_t dsn;
+	u8 min_be;
+	u8 max_be;
+	u8 csma_retries;
+	s8 frame_retries;
+	bool lbt;
+	bool ackreq;
+};
+
+enum nl802154_supported_bool_states {
+	NL802154_SUPPORTED_BOOL_FALSE = 0,
+	NL802154_SUPPORTED_BOOL_TRUE = 1,
+	__NL802154_SUPPORTED_BOOL_INVALD = 2,
+	NL802154_SUPPORTED_BOOL_BOTH = 3,
+	__NL802154_SUPPORTED_BOOL_AFTER_LAST = 4,
+	NL802154_SUPPORTED_BOOL_MAX = 3,
+};
+
+struct wpan_phy_supported {
+	u32 channels[32];
+	u32 cca_modes;
+	u32 cca_opts;
+	u32 iftypes;
+	enum nl802154_supported_bool_states lbt;
+	u8 min_minbe;
+	u8 max_minbe;
+	u8 min_maxbe;
+	u8 max_maxbe;
+	u8 min_csma_backoffs;
+	u8 max_csma_backoffs;
+	s8 min_frame_retries;
+	s8 max_frame_retries;
+	size_t tx_powers_size;
+	size_t cca_ed_levels_size;
+	const s32 *tx_powers;
+	const s32 *cca_ed_levels;
+};
+
+enum nl802154_cca_modes {
+	__NL802154_CCA_INVALID = 0,
+	NL802154_CCA_ENERGY = 1,
+	NL802154_CCA_CARRIER = 2,
+	NL802154_CCA_ENERGY_CARRIER = 3,
+	NL802154_CCA_ALOHA = 4,
+	NL802154_CCA_UWB_SHR = 5,
+	NL802154_CCA_UWB_MULTIPLEXED = 6,
+	__NL802154_CCA_ATTR_AFTER_LAST = 7,
+	NL802154_CCA_ATTR_MAX = 6,
+};
+
+enum nl802154_cca_opts {
+	NL802154_CCA_OPT_ENERGY_CARRIER_AND = 0,
+	NL802154_CCA_OPT_ENERGY_CARRIER_OR = 1,
+	__NL802154_CCA_OPT_ATTR_AFTER_LAST = 2,
+	NL802154_CCA_OPT_ATTR_MAX = 1,
+};
+
+struct wpan_phy_cca {
+	enum nl802154_cca_modes mode;
+	enum nl802154_cca_opts opt;
+};
+
+enum ieee802154_filtering_level {
+	IEEE802154_FILTERING_NONE = 0,
+	IEEE802154_FILTERING_1_FCS = 1,
+	IEEE802154_FILTERING_2_PROMISCUOUS = 2,
+	IEEE802154_FILTERING_3_SCAN = 3,
+	IEEE802154_FILTERING_4_FRAME_FIELDS = 4,
+};
+
+struct wpan_phy {
+	const void *privid;
+	unsigned long flags;
+	u8 current_channel;
+	u8 current_page;
+	struct wpan_phy_supported supported;
+	s32 transmit_power;
+	struct wpan_phy_cca cca;
+	__le64 perm_extended_addr;
+	s32 cca_ed_level;
+	u32 symbol_duration;
+	u16 lifs_period;
+	u16 sifs_period;
+	struct device dev;
+	possible_net_t _net;
+	spinlock_t queue_lock;
+	atomic_t ongoing_txs;
+	atomic_t hold_txs;
+	wait_queue_head_t sync_txq;
+	enum ieee802154_filtering_level filtering;
+	long: 64;
+	char priv[0];
+};
+
+struct ieee802154_addr;
+
+struct wpan_dev_header_ops {
+	int (*create)(struct sk_buff *, struct net_device *, const struct ieee802154_addr *, const struct ieee802154_addr *, unsigned int);
+};
+
+struct ieee802154_addr {
+	u8 mode;
+	__le16 pan_id;
+	union {
+		__le16 short_addr;
+		__le64 extended_addr;
+	};
+};
+
+enum {
+	NETIF_MSG_DRV_BIT = 0,
+	NETIF_MSG_PROBE_BIT = 1,
+	NETIF_MSG_LINK_BIT = 2,
+	NETIF_MSG_TIMER_BIT = 3,
+	NETIF_MSG_IFDOWN_BIT = 4,
+	NETIF_MSG_IFUP_BIT = 5,
+	NETIF_MSG_RX_ERR_BIT = 6,
+	NETIF_MSG_TX_ERR_BIT = 7,
+	NETIF_MSG_TX_QUEUED_BIT = 8,
+	NETIF_MSG_INTR_BIT = 9,
+	NETIF_MSG_TX_DONE_BIT = 10,
+	NETIF_MSG_RX_STATUS_BIT = 11,
+	NETIF_MSG_PKTDATA_BIT = 12,
+	NETIF_MSG_HW_BIT = 13,
+	NETIF_MSG_WOL_BIT = 14,
+	NETIF_MSG_CLASS_COUNT = 15,
+};
+
+enum {
+	IFLA_TUN_UNSPEC = 0,
+	IFLA_TUN_OWNER = 1,
+	IFLA_TUN_GROUP = 2,
+	IFLA_TUN_TYPE = 3,
+	IFLA_TUN_PI = 4,
+	IFLA_TUN_VNET_HDR = 5,
+	IFLA_TUN_PERSIST = 6,
+	IFLA_TUN_MULTI_QUEUE = 7,
+	IFLA_TUN_NUM_QUEUES = 8,
+	IFLA_TUN_NUM_DISABLED_QUEUES = 9,
+	__IFLA_TUN_MAX = 10,
+};
+
+enum {
+	SKB_GSO_TCPV4 = 1,
+	SKB_GSO_DODGY = 2,
+	SKB_GSO_TCP_ECN = 4,
+	SKB_GSO_TCP_FIXEDID = 8,
+	SKB_GSO_TCPV6 = 16,
+	SKB_GSO_FCOE = 32,
+	SKB_GSO_GRE = 64,
+	SKB_GSO_GRE_CSUM = 128,
+	SKB_GSO_IPXIP4 = 256,
+	SKB_GSO_IPXIP6 = 512,
+	SKB_GSO_UDP_TUNNEL = 1024,
+	SKB_GSO_UDP_TUNNEL_CSUM = 2048,
+	SKB_GSO_PARTIAL = 4096,
+	SKB_GSO_TUNNEL_REMCSUM = 8192,
+	SKB_GSO_SCTP = 16384,
+	SKB_GSO_ESP = 32768,
+	SKB_GSO_UDP = 65536,
+	SKB_GSO_UDP_L4 = 131072,
+	SKB_GSO_FRAGLIST = 262144,
+};
+
+enum xdp_mem_type {
+	MEM_TYPE_PAGE_SHARED = 0,
+	MEM_TYPE_PAGE_ORDER0 = 1,
+	MEM_TYPE_PAGE_POOL = 2,
+	MEM_TYPE_XSK_BUFF_POOL = 3,
+	MEM_TYPE_MAX = 4,
+};
+
+struct tun_struct;
+
+struct tun_flow_entry {
+	struct hlist_node hash_link;
+	struct callback_head rcu;
+	struct tun_struct *tun;
+	u32 rxhash;
+	u32 rps_rxhash;
+	int queue_index;
+	long: 64;
+	unsigned long updated;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct tap_filter {
+	unsigned int count;
+	u32 mask[2];
+	unsigned char addr[48];
+};
+
+struct tun_file;
+
+struct tun_prog;
+
+struct tun_struct {
+	struct tun_file __attribute__((btf_type_tag("rcu"))) *tfiles[256];
+	unsigned int numqueues;
+	unsigned int flags;
+	kuid_t owner;
+	kgid_t group;
+	struct net_device *dev;
+	netdev_features_t set_features;
+	int align;
+	int vnet_hdr_sz;
+	int sndbuf;
+	struct tap_filter txflt;
+	struct sock_fprog fprog;
+	bool filter_attached;
+	u32 msg_enable;
+	spinlock_t lock;
+	struct hlist_head flows[1024];
+	struct timer_list flow_gc_timer;
+	unsigned long ageing_time;
+	unsigned int numdisabled;
+	struct list_head disabled;
+	void *security;
+	u32 flow_count;
+	u32 rx_batched;
+	atomic_long_t rx_frame_errors;
+	struct bpf_prog __attribute__((btf_type_tag("rcu"))) *xdp_prog;
+	struct tun_prog __attribute__((btf_type_tag("rcu"))) *steering_prog;
+	struct tun_prog __attribute__((btf_type_tag("rcu"))) *filter_prog;
+	struct ethtool_link_ksettings link_ksettings;
+	struct file *file;
+	struct ifreq *ifr;
+};
+
+struct tun_file {
+	struct sock sk;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct socket socket;
+	struct tun_struct __attribute__((btf_type_tag("rcu"))) *tun;
+	struct fasync_struct *fasync;
+	unsigned int flags;
+	union {
+		u16 queue_index;
+		unsigned int ifindex;
+	};
+	struct napi_struct napi;
+	bool napi_enabled;
+	bool napi_frags_enabled;
+	struct mutex napi_mutex;
+	struct list_head next;
+	struct tun_struct *detached;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct ptr_ring tx_ring;
+	struct xdp_rxq_info xdp_rxq;
+};
+
+struct tun_prog {
+	struct callback_head rcu;
+	struct bpf_prog *prog;
+};
+
+struct rps_sock_flow_table {
+	u32 mask;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	u32 ents[0];
+};
+
+struct tun_pi {
+	__u16 flags;
+	__be16 proto;
+};
+
+struct virtio_net_hdr {
+	__u8 flags;
+	__u8 gso_type;
+	__virtio16 hdr_len;
+	__virtio16 gso_size;
+	__virtio16 csum_start;
+	__virtio16 csum_offset;
+};
+
+struct veth {
+	__be16 h_vlan_proto;
+	__be16 h_vlan_TCI;
+};
+
+struct nf_conntrack {
+	refcount_t use;
+};
+
+struct tun_page {
+	struct page *page;
+	int count;
+};
+
+struct tun_xdp_hdr {
+	int buflen;
+	struct virtio_net_hdr gso;
+};
+
+struct tun_filter {
+	__u16 flags;
+	__u16 count;
+	__u8 addr[0];
+};
+
+struct tun_msg_ctl {
+	unsigned short type;
+	unsigned short num;
+	void *ptr;
+};
+
+struct page_pool_params {
+	unsigned int flags;
+	unsigned int order;
+	unsigned int pool_size;
+	int nid;
+	struct device *dev;
+	struct napi_struct *napi;
+	enum dma_data_direction dma_dir;
+	unsigned int max_len;
+	unsigned int offset;
+	void (*init_callback)(struct page *, void *);
+	void *init_arg;
+};
+
+struct pp_alloc_cache {
+	u32 count;
+	struct page *cache[128];
+};
+
+struct page_pool {
+	struct page_pool_params p;
+	long frag_users;
+	struct page *frag_page;
+	unsigned int frag_offset;
+	u32 pages_state_hold_cnt;
+	struct delayed_work release_dw;
+	void (*disconnect)(void *);
+	unsigned long defer_start;
+	unsigned long defer_warn;
+	u32 xdp_mem_id;
+	struct pp_alloc_cache alloc;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct ptr_ring ring;
+	atomic_t pages_state_release_cnt;
+	refcount_t user_cnt;
+	u64 destroy_cnt;
+	u64 android_kabi_reserved1;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct veth_q_stat_desc {
+	char desc[32];
+	size_t offset;
+};
+
+enum {
+	VETH_INFO_UNSPEC = 0,
+	VETH_INFO_PEER = 1,
+	__VETH_INFO_MAX = 2,
+};
+
+struct veth_stats {
+	u64 rx_drops;
+	u64 xdp_packets;
+	u64 xdp_bytes;
+	u64 xdp_redirect;
+	u64 xdp_drops;
+	u64 xdp_tx;
+	u64 xdp_tx_err;
+	u64 peer_tq_xdp_xmit;
+	u64 peer_tq_xdp_xmit_err;
+};
+
+struct veth_rq_stats {
+	struct veth_stats vs;
+	struct u64_stats_sync syncp;
+};
+
+struct veth_rq {
+	struct napi_struct xdp_napi;
+	struct napi_struct __attribute__((btf_type_tag("rcu"))) *napi;
+	struct net_device *dev;
+	struct bpf_prog __attribute__((btf_type_tag("rcu"))) *xdp_prog;
+	struct xdp_mem_info xdp_mem;
+	struct veth_rq_stats stats;
+	bool rx_notify_masked;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct ptr_ring xdp_ring;
+	struct xdp_rxq_info xdp_rxq;
+	struct page_pool *page_pool;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct ifinfomsg {
+	unsigned char ifi_family;
+	unsigned char __ifi_pad;
+	unsigned short ifi_type;
+	int ifi_index;
+	unsigned int ifi_flags;
+	unsigned int ifi_change;
+};
+
+struct veth_priv {
+	struct net_device __attribute__((btf_type_tag("rcu"))) *peer;
+	atomic64_t dropped;
+	struct bpf_prog *_xdp_prog;
+	struct veth_rq *rq;
+	unsigned int requested_headroom;
+};
+
+struct veth_xdp_tx_bq {
+	struct xdp_frame *q[16];
+	unsigned int count;
+};
+
+struct veth_xdp_buff {
+	struct xdp_buff xdp;
+	struct sk_buff *skb;
+};
+
+struct uio_mem;
+
+struct map_sysfs_entry {
+	struct attribute attr;
+	ssize_t (*show)(struct uio_mem *, char *);
+	ssize_t (*store)(struct uio_mem *, const char *, size_t);
+};
+
+struct uio_map;
+
+struct uio_mem {
+	const char *name;
+	phys_addr_t addr;
+	unsigned long offs;
+	resource_size_t size;
+	int memtype;
+	void *internal_addr;
+	struct uio_map *map;
+};
+
+struct uio_map {
+	struct kobject kobj;
+	struct uio_mem *mem;
+};
+
+struct uio_port;
+
+struct portio_sysfs_entry {
+	struct attribute attr;
+	ssize_t (*show)(struct uio_port *, char *);
+	ssize_t (*store)(struct uio_port *, const char *, size_t);
+};
+
+struct uio_portio;
+
+struct uio_port {
+	const char *name;
+	unsigned long start;
+	unsigned long size;
+	int porttype;
+	struct uio_portio *portio;
+};
+
+struct uio_portio {
+	struct kobject kobj;
+	struct uio_port *port;
+};
+
+struct uio_info;
+
+struct uio_device {
+	struct module *owner;
+	struct device dev;
+	int minor;
+	atomic_t event;
+	struct fasync_struct *async_queue;
+	wait_queue_head_t wait;
+	struct uio_info *info;
+	struct mutex info_lock;
+	struct kobject *map_dir;
+	struct kobject *portio_dir;
+	u64 android_kabi_reserved1;
+};
+
+struct uio_info {
+	struct uio_device *uio_dev;
+	const char *name;
+	const char *version;
+	struct uio_mem mem[5];
+	struct uio_port port[5];
+	long irq;
+	unsigned long irq_flags;
+	void *priv;
+	irqreturn_t (*handler)(int, struct uio_info *);
+	int (*mmap)(struct uio_info *, struct vm_area_struct *);
+	int (*open)(struct uio_info *, struct inode *);
+	int (*release)(struct uio_info *, struct inode *);
+	int (*irqcontrol)(struct uio_info *, s32);
+	u64 android_kabi_reserved1;
+};
+
+struct uio_listener {
+	struct uio_device *dev;
+	s32 event_count;
+};
+
+enum usb_otg_state {
+	OTG_STATE_UNDEFINED = 0,
+	OTG_STATE_B_IDLE = 1,
+	OTG_STATE_B_SRP_INIT = 2,
+	OTG_STATE_B_PERIPHERAL = 3,
+	OTG_STATE_B_WAIT_ACON = 4,
+	OTG_STATE_B_HOST = 5,
+	OTG_STATE_A_IDLE = 6,
+	OTG_STATE_A_WAIT_VRISE = 7,
+	OTG_STATE_A_WAIT_BCON = 8,
+	OTG_STATE_A_HOST = 9,
+	OTG_STATE_A_SUSPEND = 10,
+	OTG_STATE_A_PERIPHERAL = 11,
+	OTG_STATE_A_WAIT_VFALL = 12,
+	OTG_STATE_A_VBUS_ERR = 13,
+};
+
+enum usb_device_speed {
+	USB_SPEED_UNKNOWN = 0,
+	USB_SPEED_LOW = 1,
+	USB_SPEED_FULL = 2,
+	USB_SPEED_HIGH = 3,
+	USB_SPEED_WIRELESS = 4,
+	USB_SPEED_SUPER = 5,
+	USB_SPEED_SUPER_PLUS = 6,
+};
+
+enum usb_ssp_rate {
+	USB_SSP_GEN_UNKNOWN = 0,
+	USB_SSP_GEN_2x1 = 1,
+	USB_SSP_GEN_1x2 = 2,
+	USB_SSP_GEN_2x2 = 3,
+};
+
+enum usb_device_state {
+	USB_STATE_NOTATTACHED = 0,
+	USB_STATE_ATTACHED = 1,
+	USB_STATE_POWERED = 2,
+	USB_STATE_RECONNECTING = 3,
+	USB_STATE_UNAUTHENTICATED = 4,
+	USB_STATE_DEFAULT = 5,
+	USB_STATE_ADDRESS = 6,
+	USB_STATE_CONFIGURED = 7,
+	USB_STATE_SUSPENDED = 8,
+};
+
+enum usb_dr_mode {
+	USB_DR_MODE_UNKNOWN = 0,
+	USB_DR_MODE_HOST = 1,
+	USB_DR_MODE_PERIPHERAL = 2,
+	USB_DR_MODE_OTG = 3,
+};
+
+struct usb_endpoint_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bEndpointAddress;
+	__u8 bmAttributes;
+	__le16 wMaxPacketSize;
+	__u8 bInterval;
+	__u8 bRefresh;
+	__u8 bSynchAddress;
+} __attribute__((packed));
+
+struct usb_otg_caps {
+	u16 otg_rev;
+	bool hnp_support;
+	bool srp_support;
+	bool adp_support;
+};
+
+enum usb_interface_condition {
+	USB_INTERFACE_UNBOUND = 0,
+	USB_INTERFACE_BINDING = 1,
+	USB_INTERFACE_BOUND = 2,
+	USB_INTERFACE_UNBINDING = 3,
+};
+
+enum usb_wireless_status {
+	USB_WIRELESS_STATUS_NA = 0,
+	USB_WIRELESS_STATUS_DISCONNECTED = 1,
+	USB_WIRELESS_STATUS_CONNECTED = 2,
+};
+
+enum usb3_link_state {
+	USB3_LPM_U0 = 0,
+	USB3_LPM_U1 = 1,
+	USB3_LPM_U2 = 2,
+	USB3_LPM_U3 = 3,
+};
+
+enum usb_phy_type {
+	USB_PHY_TYPE_UNDEFINED = 0,
+	USB_PHY_TYPE_USB2 = 1,
+	USB_PHY_TYPE_USB3 = 2,
+};
+
+enum usb_phy_events {
+	USB_EVENT_NONE = 0,
+	USB_EVENT_VBUS = 1,
+	USB_EVENT_ID = 2,
+	USB_EVENT_CHARGER = 3,
+	USB_EVENT_ENUMERATED = 4,
+};
+
+enum usb_charger_type {
+	UNKNOWN_TYPE = 0,
+	SDP_TYPE = 1,
+	DCP_TYPE = 2,
+	CDP_TYPE = 3,
+	ACA_TYPE = 4,
+};
+
+enum usb_charger_state {
+	USB_CHARGER_DEFAULT = 0,
+	USB_CHARGER_PRESENT = 1,
+	USB_CHARGER_ABSENT = 2,
+};
+
+enum usb_dev_authorize_policy {
+	USB_DEVICE_AUTHORIZE_NONE = 0,
+	USB_DEVICE_AUTHORIZE_ALL = 1,
+	USB_DEVICE_AUTHORIZE_INTERNAL = 2,
+};
+
+enum usb_port_connect_type {
+	USB_PORT_CONNECT_TYPE_UNKNOWN = 0,
+	USB_PORT_CONNECT_TYPE_HOT_PLUG = 1,
+	USB_PORT_CONNECT_TYPE_HARD_WIRED = 2,
+	USB_PORT_NOT_USED = 3,
+};
+
+struct usb_host_interface;
+
+struct usb_interface_assoc_descriptor;
+
+struct usb_interface {
+	struct usb_host_interface *altsetting;
+	struct usb_host_interface *cur_altsetting;
+	unsigned int num_altsetting;
+	struct usb_interface_assoc_descriptor *intf_assoc;
+	int minor;
+	enum usb_interface_condition condition;
+	unsigned int sysfs_files_created: 1;
+	unsigned int ep_devs_created: 1;
+	unsigned int unregistering: 1;
+	unsigned int needs_remote_wakeup: 1;
+	unsigned int needs_altsetting0: 1;
+	unsigned int needs_binding: 1;
+	unsigned int resetting_device: 1;
+	unsigned int authorized: 1;
+	enum usb_wireless_status wireless_status;
+	struct work_struct wireless_status_work;
+	struct device dev;
+	struct device *usb_dev;
+	struct work_struct reset_ws;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct usb_interface_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bInterfaceNumber;
+	__u8 bAlternateSetting;
+	__u8 bNumEndpoints;
+	__u8 bInterfaceClass;
+	__u8 bInterfaceSubClass;
+	__u8 bInterfaceProtocol;
+	__u8 iInterface;
+};
+
+struct usb_host_endpoint;
+
+struct usb_host_interface {
+	struct usb_interface_descriptor desc;
+	int extralen;
+	unsigned char *extra;
+	struct usb_host_endpoint *endpoint;
+	char *string;
+};
+
+struct usb_ss_ep_comp_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bMaxBurst;
+	__u8 bmAttributes;
+	__le16 wBytesPerInterval;
+};
+
+struct usb_ssp_isoc_ep_comp_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__le16 wReseved;
+	__le32 dwBytesPerInterval;
+};
+
+struct ep_device;
+
+struct usb_host_endpoint {
+	struct usb_endpoint_descriptor desc;
+	struct usb_ss_ep_comp_descriptor ss_ep_comp;
+	struct usb_ssp_isoc_ep_comp_descriptor ssp_isoc_ep_comp;
+	long: 0;
+	struct list_head urb_list;
+	void *hcpriv;
+	struct ep_device *ep_dev;
+	unsigned char *extra;
+	int extralen;
+	int enabled;
+	int streams;
+	long: 0;
+} __attribute__((packed));
+
+struct usb_interface_assoc_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bFirstInterface;
+	__u8 bInterfaceCount;
+	__u8 bFunctionClass;
+	__u8 bFunctionSubClass;
+	__u8 bFunctionProtocol;
+	__u8 iFunction;
+};
+
+struct usb_descriptor_header {
+	__u8 bLength;
+	__u8 bDescriptorType;
+};
+
+struct usb_device;
+
+struct each_dev_arg {
+	void *data;
+	int (*fn)(struct usb_device *, void *);
+};
+
+struct usb_device_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__le16 bcdUSB;
+	__u8 bDeviceClass;
+	__u8 bDeviceSubClass;
+	__u8 bDeviceProtocol;
+	__u8 bMaxPacketSize0;
+	__le16 idVendor;
+	__le16 idProduct;
+	__le16 bcdDevice;
+	__u8 iManufacturer;
+	__u8 iProduct;
+	__u8 iSerialNumber;
+	__u8 bNumConfigurations;
+};
+
+struct usb2_lpm_parameters {
+	unsigned int besl;
+	int timeout;
+};
+
+struct usb3_lpm_parameters {
+	unsigned int mel;
+	unsigned int pel;
+	unsigned int sel;
+	int timeout;
+};
+
+struct usb_tt;
+
+struct usb_bus;
+
+struct usb_host_bos;
+
+struct usb_host_config;
+
+struct usb_device {
+	int devnum;
+	char devpath[16];
+	u32 route;
+	enum usb_device_state state;
+	enum usb_device_speed speed;
+	unsigned int rx_lanes;
+	unsigned int tx_lanes;
+	enum usb_ssp_rate ssp_rate;
+	struct usb_tt *tt;
+	int ttport;
+	unsigned int toggle[2];
+	struct usb_device *parent;
+	struct usb_bus *bus;
+	struct usb_host_endpoint ep0;
+	struct device dev;
+	struct usb_device_descriptor descriptor;
+	struct usb_host_bos *bos;
+	struct usb_host_config *config;
+	struct usb_host_config *actconfig;
+	struct usb_host_endpoint *ep_in[16];
+	struct usb_host_endpoint *ep_out[16];
+	char **rawdescriptors;
+	unsigned short bus_mA;
+	u8 portnum;
+	u8 level;
+	u8 devaddr;
+	unsigned int can_submit: 1;
+	unsigned int persist_enabled: 1;
+	unsigned int reset_in_progress: 1;
+	unsigned int have_langid: 1;
+	unsigned int authorized: 1;
+	unsigned int authenticated: 1;
+	unsigned int lpm_capable: 1;
+	unsigned int lpm_devinit_allow: 1;
+	unsigned int usb2_hw_lpm_capable: 1;
+	unsigned int usb2_hw_lpm_besl_capable: 1;
+	unsigned int usb2_hw_lpm_enabled: 1;
+	unsigned int usb2_hw_lpm_allowed: 1;
+	unsigned int usb3_lpm_u1_enabled: 1;
+	unsigned int usb3_lpm_u2_enabled: 1;
+	int string_langid;
+	char *product;
+	char *manufacturer;
+	char *serial;
+	struct list_head filelist;
+	int maxchild;
+	u32 quirks;
+	atomic_t urbnum;
+	unsigned long active_duration;
+	unsigned long connect_time;
+	unsigned int do_remote_wakeup: 1;
+	unsigned int reset_resume: 1;
+	unsigned int port_is_suspended: 1;
+	int slot_id;
+	struct usb2_lpm_parameters l1_params;
+	struct usb3_lpm_parameters u1_params;
+	struct usb3_lpm_parameters u2_params;
+	unsigned int lpm_disable_count;
+	u16 hub_delay;
+	unsigned int use_generic_driver: 1;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct usb_tt {
+	struct usb_device *hub;
+	int multi;
+	unsigned int think_time;
+	void *hcpriv;
+	spinlock_t lock;
+	struct list_head clear_list;
+	struct work_struct clear_work;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct usb_devmap {
+	unsigned long devicemap[2];
+};
+
+struct mon_bus;
+
+struct usb_bus {
+	struct device *controller;
+	struct device *sysdev;
+	int busnum;
+	const char *bus_name;
+	u8 uses_pio_for_control;
+	u8 otg_port;
+	unsigned int is_b_host: 1;
+	unsigned int b_hnp_enable: 1;
+	unsigned int no_stop_on_short: 1;
+	unsigned int no_sg_constraint: 1;
+	unsigned int sg_tablesize;
+	int devnum_next;
+	struct mutex devnum_next_mutex;
+	struct usb_devmap devmap;
+	struct usb_device *root_hub;
+	struct usb_bus *hs_companion;
+	int bandwidth_allocated;
+	int bandwidth_int_reqs;
+	int bandwidth_isoc_reqs;
+	unsigned int resuming_ports;
+	struct mon_bus *mon_bus;
+	int monitored;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct usb_bos_descriptor;
+
+struct usb_ext_cap_descriptor;
+
+struct usb_ss_cap_descriptor;
+
+struct usb_ssp_cap_descriptor;
+
+struct usb_ss_container_id_descriptor;
+
+struct usb_ptm_cap_descriptor;
+
+struct usb_host_bos {
+	struct usb_bos_descriptor *desc;
+	struct usb_ext_cap_descriptor *ext_cap;
+	struct usb_ss_cap_descriptor *ss_cap;
+	struct usb_ssp_cap_descriptor *ssp_cap;
+	struct usb_ss_container_id_descriptor *ss_id;
+	struct usb_ptm_cap_descriptor *ptm_cap;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct usb_bos_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__le16 wTotalLength;
+	__u8 bNumDeviceCaps;
+} __attribute__((packed));
+
+struct usb_ext_cap_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDevCapabilityType;
+	__le32 bmAttributes;
+} __attribute__((packed));
+
+struct usb_ss_cap_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDevCapabilityType;
+	__u8 bmAttributes;
+	__le16 wSpeedSupported;
+	__u8 bFunctionalitySupport;
+	__u8 bU1devExitLat;
+	__le16 bU2DevExitLat;
+};
+
+struct usb_ssp_cap_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDevCapabilityType;
+	__u8 bReserved;
+	__le32 bmAttributes;
+	__le16 wFunctionalitySupport;
+	__le16 wReserved;
+	union {
+		__le32 legacy_padding;
+		struct {
+			struct {} __empty_bmSublinkSpeedAttr;
+			__le32 bmSublinkSpeedAttr[0];
+		};
+	};
+};
+
+struct usb_ss_container_id_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDevCapabilityType;
+	__u8 bReserved;
+	__u8 ContainerID[16];
+};
+
+struct usb_ptm_cap_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDevCapabilityType;
+};
+
+struct usb_config_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__le16 wTotalLength;
+	__u8 bNumInterfaces;
+	__u8 bConfigurationValue;
+	__u8 iConfiguration;
+	__u8 bmAttributes;
+	__u8 bMaxPower;
+} __attribute__((packed));
+
+struct usb_interface_cache;
+
+struct usb_host_config {
+	struct usb_config_descriptor desc;
+	char *string;
+	struct usb_interface_assoc_descriptor *intf_assoc[16];
+	struct usb_interface *interface[32];
+	struct usb_interface_cache *intf_cache[32];
+	unsigned char *extra;
+	int extralen;
+};
+
+struct usb_interface_cache {
+	unsigned int num_altsetting;
+	struct kref ref;
+	struct usb_host_interface altsetting[0];
+};
+
+struct giveback_urb_bh {
+	bool running;
+	bool high_prio;
+	spinlock_t lock;
+	struct list_head head;
+	struct tasklet_struct bh;
+	struct usb_host_endpoint *completing_ep;
+};
+
+struct urb;
+
+struct hc_driver;
+
+struct usb_phy;
+
+struct usb_phy_roothub;
+
+struct usb_hcd {
+	struct usb_bus self;
+	struct kref kref;
+	const char *product_desc;
+	int speed;
+	char irq_descr[24];
+	struct timer_list rh_timer;
+	struct urb *status_urb;
+	struct work_struct wakeup_work;
+	struct work_struct died_work;
+	const struct hc_driver *driver;
+	struct usb_phy *usb_phy;
+	struct usb_phy_roothub *phy_roothub;
+	unsigned long flags;
+	enum usb_dev_authorize_policy dev_policy;
+	unsigned int rh_registered: 1;
+	unsigned int rh_pollable: 1;
+	unsigned int msix_enabled: 1;
+	unsigned int msi_enabled: 1;
+	unsigned int skip_phy_initialization: 1;
+	unsigned int uses_new_polling: 1;
+	unsigned int has_tt: 1;
+	unsigned int amd_resume_bug: 1;
+	unsigned int can_do_streams: 1;
+	unsigned int tpl_support: 1;
+	unsigned int cant_recv_wakeups: 1;
+	unsigned int irq;
+	void *regs;
+	resource_size_t rsrc_start;
+	resource_size_t rsrc_len;
+	unsigned int power_budget;
+	struct giveback_urb_bh high_prio_bh;
+	struct giveback_urb_bh low_prio_bh;
+	struct mutex *address0_mutex;
+	struct mutex *bandwidth_mutex;
+	struct usb_hcd *shared_hcd;
+	struct usb_hcd *primary_hcd;
+	struct dma_pool *pool[4];
+	int state;
+	struct gen_pool *localmem_pool;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+	unsigned long hcd_priv[0];
+};
+
+typedef void (*usb_complete_t)(struct urb *);
+
+struct usb_iso_packet_descriptor {
+	unsigned int offset;
+	unsigned int length;
+	unsigned int actual_length;
+	int status;
+};
+
+struct usb_anchor;
+
+struct urb {
+	struct kref kref;
+	int unlinked;
+	void *hcpriv;
+	atomic_t use_count;
+	atomic_t reject;
+	struct list_head urb_list;
+	struct list_head anchor_list;
+	struct usb_anchor *anchor;
+	struct usb_device *dev;
+	struct usb_host_endpoint *ep;
+	unsigned int pipe;
+	unsigned int stream_id;
+	int status;
+	unsigned int transfer_flags;
+	void *transfer_buffer;
+	dma_addr_t transfer_dma;
+	struct scatterlist *sg;
+	int num_mapped_sgs;
+	int num_sgs;
+	u32 transfer_buffer_length;
+	u32 actual_length;
+	unsigned char *setup_packet;
+	dma_addr_t setup_dma;
+	int start_frame;
+	int number_of_packets;
+	int interval;
+	int error_count;
+	void *context;
+	usb_complete_t complete;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+	struct usb_iso_packet_descriptor iso_frame_desc[0];
+};
+
+struct usb_anchor {
+	struct list_head urb_list;
+	wait_queue_head_t wait;
+	spinlock_t lock;
+	atomic_t suspend_wakeups;
+	unsigned int poisoned: 1;
+};
+
+struct hc_driver {
+	const char *description;
+	const char *product_desc;
+	size_t hcd_priv_size;
+	irqreturn_t (*irq)(struct usb_hcd *);
+	int flags;
+	int (*reset)(struct usb_hcd *);
+	int (*start)(struct usb_hcd *);
+	int (*pci_suspend)(struct usb_hcd *, bool);
+	int (*pci_resume)(struct usb_hcd *, pm_message_t);
+	int (*pci_poweroff_late)(struct usb_hcd *, bool);
+	void (*stop)(struct usb_hcd *);
+	void (*shutdown)(struct usb_hcd *);
+	int (*get_frame_number)(struct usb_hcd *);
+	int (*urb_enqueue)(struct usb_hcd *, struct urb *, gfp_t);
+	int (*urb_dequeue)(struct usb_hcd *, struct urb *, int);
+	int (*map_urb_for_dma)(struct usb_hcd *, struct urb *, gfp_t);
+	void (*unmap_urb_for_dma)(struct usb_hcd *, struct urb *);
+	void (*endpoint_disable)(struct usb_hcd *, struct usb_host_endpoint *);
+	void (*endpoint_reset)(struct usb_hcd *, struct usb_host_endpoint *);
+	int (*hub_status_data)(struct usb_hcd *, char *);
+	int (*hub_control)(struct usb_hcd *, u16, u16, u16, char *, u16);
+	int (*bus_suspend)(struct usb_hcd *);
+	int (*bus_resume)(struct usb_hcd *);
+	int (*start_port_reset)(struct usb_hcd *, unsigned int);
+	unsigned long (*get_resuming_ports)(struct usb_hcd *);
+	void (*relinquish_port)(struct usb_hcd *, int);
+	int (*port_handed_over)(struct usb_hcd *, int);
+	void (*clear_tt_buffer_complete)(struct usb_hcd *, struct usb_host_endpoint *);
+	int (*alloc_dev)(struct usb_hcd *, struct usb_device *);
+	void (*free_dev)(struct usb_hcd *, struct usb_device *);
+	int (*alloc_streams)(struct usb_hcd *, struct usb_device *, struct usb_host_endpoint **, unsigned int, unsigned int, gfp_t);
+	int (*free_streams)(struct usb_hcd *, struct usb_device *, struct usb_host_endpoint **, unsigned int, gfp_t);
+	int (*add_endpoint)(struct usb_hcd *, struct usb_device *, struct usb_host_endpoint *);
+	int (*drop_endpoint)(struct usb_hcd *, struct usb_device *, struct usb_host_endpoint *);
+	int (*check_bandwidth)(struct usb_hcd *, struct usb_device *);
+	void (*reset_bandwidth)(struct usb_hcd *, struct usb_device *);
+	int (*address_device)(struct usb_hcd *, struct usb_device *, unsigned int);
+	int (*enable_device)(struct usb_hcd *, struct usb_device *);
+	int (*update_hub_device)(struct usb_hcd *, struct usb_device *, struct usb_tt *, gfp_t);
+	int (*reset_device)(struct usb_hcd *, struct usb_device *);
+	int (*update_device)(struct usb_hcd *, struct usb_device *);
+	int (*set_usb2_hw_lpm)(struct usb_hcd *, struct usb_device *, int);
+	int (*enable_usb3_lpm_timeout)(struct usb_hcd *, struct usb_device *, enum usb3_link_state);
+	int (*disable_usb3_lpm_timeout)(struct usb_hcd *, struct usb_device *, enum usb3_link_state);
+	int (*find_raw_port_number)(struct usb_hcd *, int);
+	int (*port_power)(struct usb_hcd *, int, bool);
+	int (*submit_single_step_set_feature)(struct usb_hcd *, struct urb *, int);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct usb_charger_current {
+	unsigned int sdp_min;
+	unsigned int sdp_max;
+	unsigned int dcp_min;
+	unsigned int dcp_max;
+	unsigned int cdp_min;
+	unsigned int cdp_max;
+	unsigned int aca_min;
+	unsigned int aca_max;
+};
+
+struct usb_otg;
+
+struct usb_phy_io_ops;
+
+struct extcon_dev;
+
+struct usb_phy {
+	struct device *dev;
+	const char *label;
+	unsigned int flags;
+	enum usb_phy_type type;
+	enum usb_phy_events last_event;
+	struct usb_otg *otg;
+	struct device *io_dev;
+	struct usb_phy_io_ops *io_ops;
+	void *io_priv;
+	struct extcon_dev *edev;
+	struct extcon_dev *id_edev;
+	struct notifier_block vbus_nb;
+	struct notifier_block id_nb;
+	struct notifier_block type_nb;
+	enum usb_charger_type chg_type;
+	enum usb_charger_state chg_state;
+	struct usb_charger_current chg_cur;
+	struct work_struct chg_work;
+	struct atomic_notifier_head notifier;
+	u16 port_status;
+	u16 port_change;
+	struct list_head head;
+	int (*init)(struct usb_phy *);
+	void (*shutdown)(struct usb_phy *);
+	int (*set_vbus)(struct usb_phy *, int);
+	int (*set_power)(struct usb_phy *, unsigned int);
+	int (*set_suspend)(struct usb_phy *, int);
+	int (*set_wakeup)(struct usb_phy *, bool);
+	int (*notify_connect)(struct usb_phy *, enum usb_device_speed);
+	int (*notify_disconnect)(struct usb_phy *, enum usb_device_speed);
+	enum usb_charger_type (*charger_detect)(struct usb_phy *);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct usb_gadget;
+
+struct usb_otg {
+	u8 default_a;
+	struct phy *phy;
+	struct usb_phy *usb_phy;
+	struct usb_bus *host;
+	struct usb_gadget *gadget;
+	enum usb_otg_state state;
+	int (*set_host)(struct usb_otg *, struct usb_bus *);
+	int (*set_peripheral)(struct usb_otg *, struct usb_gadget *);
+	int (*set_vbus)(struct usb_otg *, bool);
+	int (*start_srp)(struct usb_otg *);
+	int (*start_hnp)(struct usb_otg *);
+	u64 android_kabi_reserved1;
+};
+
+struct usb_phy_io_ops {
+	int (*read)(struct usb_phy *, u32);
+	int (*write)(struct usb_phy *, u32, u32);
+};
+
+struct usb_hub_status {
+	__le16 wHubStatus;
+	__le16 wHubChange;
+};
+
+struct usb_port_status {
+	__le16 wPortStatus;
+	__le16 wPortChange;
+	__le32 dwExtPortStatus;
+};
+
+struct usb_hub_descriptor;
+
+struct usb_port;
+
+struct usb_hub {
+	struct device *intfdev;
+	struct usb_device *hdev;
+	struct kref kref;
+	struct urb *urb;
+	u8 (*buffer)[8];
+	union {
+		struct usb_hub_status hub;
+		struct usb_port_status port;
+	} *status;
+	struct mutex status_mutex;
+	int error;
+	int nerrors;
+	unsigned long event_bits[1];
+	unsigned long change_bits[1];
+	unsigned long removed_bits[1];
+	unsigned long wakeup_bits[1];
+	unsigned long power_bits[1];
+	unsigned long child_usage_bits[1];
+	unsigned long warm_reset_bits[1];
+	struct usb_hub_descriptor *descriptor;
+	struct usb_tt tt;
+	unsigned int mA_per_port;
+	unsigned int wakeup_enabled_descendants;
+	unsigned int limited_power: 1;
+	unsigned int quiescing: 1;
+	unsigned int disconnected: 1;
+	unsigned int in_reset: 1;
+	unsigned int quirk_disable_autosuspend: 1;
+	unsigned int quirk_check_port_auto_suspend: 1;
+	unsigned int has_indicators: 1;
+	u8 indicator[31];
+	struct delayed_work leds;
+	struct delayed_work init_work;
+	struct work_struct events;
+	spinlock_t irq_urb_lock;
+	struct timer_list irq_urb_retry;
+	struct usb_port **ports;
+	struct list_head onboard_hub_devs;
+};
+
+struct usb_hub_descriptor {
+	__u8 bDescLength;
+	__u8 bDescriptorType;
+	__u8 bNbrPorts;
+	__le16 wHubCharacteristics;
+	__u8 bPwrOn2PwrGood;
+	__u8 bHubContrCurrent;
+	union {
+		struct {
+			__u8 DeviceRemovable[4];
+			__u8 PortPwrCtrlMask[4];
+		} hs;
+		struct {
+			__u8 bHubHdrDecLat;
+			__le16 wHubDelay;
+			__le16 DeviceRemovable;
+		} __attribute__((packed)) ss;
+	} u;
+} __attribute__((packed));
+
+typedef u32 usb_port_location_t;
+
+struct usb_dev_state;
+
+struct usb_port {
+	struct usb_device *child;
+	struct device dev;
+	struct usb_dev_state *port_owner;
+	struct usb_port *peer;
+	struct dev_pm_qos_request *req;
+	enum usb_port_connect_type connect_type;
+	enum usb_device_state state;
+	struct kernfs_node *state_kn;
+	usb_port_location_t location;
+	struct mutex status_lock;
+	u32 over_current_count;
+	u8 portnum;
+	u32 quirks;
+	unsigned int early_stop: 1;
+	unsigned int ignore_event: 1;
+	unsigned int is_superspeed: 1;
+	unsigned int usb3_lpm_u1_permit: 1;
+	unsigned int usb3_lpm_u2_permit: 1;
+};
+
+struct usbdrv_wrap {
+	struct device_driver driver;
+	int for_devices;
+};
+
+struct usb_device_id;
+
+struct usb_device_driver {
+	const char *name;
+	bool (*match)(struct usb_device *);
+	int (*probe)(struct usb_device *);
+	void (*disconnect)(struct usb_device *);
+	int (*suspend)(struct usb_device *, pm_message_t);
+	int (*resume)(struct usb_device *, pm_message_t);
+	const struct attribute_group **dev_groups;
+	struct usbdrv_wrap drvwrap;
+	const struct usb_device_id *id_table;
+	unsigned int supports_autosuspend: 1;
+	unsigned int generic_subclass: 1;
+};
+
+struct usb_device_id {
+	__u16 match_flags;
+	__u16 idVendor;
+	__u16 idProduct;
+	__u16 bcdDevice_lo;
+	__u16 bcdDevice_hi;
+	__u8 bDeviceClass;
+	__u8 bDeviceSubClass;
+	__u8 bDeviceProtocol;
+	__u8 bInterfaceClass;
+	__u8 bInterfaceSubClass;
+	__u8 bInterfaceProtocol;
+	__u8 bInterfaceNumber;
+	kernel_ulong_t driver_info;
+};
+
+struct usb_dynids {
+	spinlock_t lock;
+	struct list_head list;
+};
+
+struct usb_driver {
+	const char *name;
+	int (*probe)(struct usb_interface *, const struct usb_device_id *);
+	void (*disconnect)(struct usb_interface *);
+	int (*unlocked_ioctl)(struct usb_interface *, unsigned int, void *);
+	int (*suspend)(struct usb_interface *, pm_message_t);
+	int (*resume)(struct usb_interface *);
+	int (*reset_resume)(struct usb_interface *);
+	int (*pre_reset)(struct usb_interface *);
+	int (*post_reset)(struct usb_interface *);
+	const struct usb_device_id *id_table;
+	const struct attribute_group **dev_groups;
+	struct usb_dynids dynids;
+	struct usbdrv_wrap drvwrap;
+	unsigned int no_dynamic_id: 1;
+	unsigned int supports_autosuspend: 1;
+	unsigned int disable_hub_initiated_lpm: 1;
+	unsigned int soft_unbind: 1;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct find_interface_arg {
+	int minor;
+	struct device_driver *drv;
+};
+
+enum hub_led_mode {
+	INDICATOR_AUTO = 0,
+	INDICATOR_CYCLE = 1,
+	INDICATOR_GREEN_BLINK = 2,
+	INDICATOR_GREEN_BLINK_OFF = 3,
+	INDICATOR_AMBER_BLINK = 4,
+	INDICATOR_AMBER_BLINK_OFF = 5,
+	INDICATOR_ALT_BLINK = 6,
+	INDICATOR_ALT_BLINK_OFF = 7,
+} __attribute__((mode(byte)));
+
+enum hub_quiescing_type {
+	HUB_DISCONNECT = 0,
+	HUB_PRE_RESET = 1,
+	HUB_SUSPEND = 2,
+};
+
+enum hub_activation_type {
+	HUB_INIT = 0,
+	HUB_INIT2 = 1,
+	HUB_INIT3 = 2,
+	HUB_POST_RESET = 3,
+	HUB_RESUME = 4,
+	HUB_RESET_RESUME = 5,
+};
+
+struct usb_tt_clear {
+	struct list_head clear_list;
+	unsigned int tt;
+	u16 devinfo;
+	struct usb_hcd *hcd;
+	struct usb_host_endpoint *ep;
+};
+
+struct usb_otg_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bmAttributes;
+};
+
+struct usb_qualifier_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__le16 bcdUSB;
+	__u8 bDeviceClass;
+	__u8 bDeviceSubClass;
+	__u8 bDeviceProtocol;
+	__u8 bMaxPacketSize0;
+	__u8 bNumConfigurations;
+	__u8 bRESERVED;
+};
+
+struct usbdevfs_hub_portinfo {
+	char nports;
+	char port[127];
+};
+
+struct usb_set_sel_req {
+	__u8 u1_sel;
+	__u8 u1_pel;
+	__le16 u2_sel;
+	__le16 u2_pel;
+};
+
+struct usb_mon_operations {
+	void (*urb_submit)(struct usb_bus *, struct urb *);
+	void (*urb_submit_error)(struct usb_bus *, struct urb *, int);
+	void (*urb_complete)(struct usb_bus *, struct urb *, int);
+};
+
+enum usb_led_event {
+	USB_LED_EVENT_HOST = 0,
+	USB_LED_EVENT_GADGET = 1,
+};
+
+struct usb_ctrlrequest {
+	__u8 bRequestType;
+	__u8 bRequest;
+	__le16 wValue;
+	__le16 wIndex;
+	__le16 wLength;
+};
+
+struct usb_cdc_union_desc {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubType;
+	__u8 bMasterInterface0;
+	__u8 bSlaveInterface0;
+};
+
+struct usb_cdc_country_functional_desc {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubType;
+	__u8 iCountryCodeRelDate;
+	__le16 wCountyCode0;
+};
+
+struct usb_cdc_header_desc {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubType;
+	__le16 bcdCDC;
+} __attribute__((packed));
+
+struct usb_cdc_acm_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubType;
+	__u8 bmCapabilities;
+};
+
+struct usb_cdc_ether_desc {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubType;
+	__u8 iMACAddress;
+	__le32 bmEthernetStatistics;
+	__le16 wMaxSegmentSize;
+	__le16 wNumberMCFilters;
+	__u8 bNumberPowerFilters;
+} __attribute__((packed));
+
+struct usb_cdc_call_mgmt_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubType;
+	__u8 bmCapabilities;
+	__u8 bDataInterface;
+};
+
+struct usb_cdc_dmm_desc {
+	__u8 bFunctionLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u16 bcdVersion;
+	__le16 wMaxCommand;
+} __attribute__((packed));
+
+struct usb_cdc_mdlm_desc {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubType;
+	__le16 bcdVersion;
+	__u8 bGUID[16];
+} __attribute__((packed));
+
+struct usb_cdc_mdlm_detail_desc {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubType;
+	__u8 bGuidDescriptorType;
+	__u8 bDetailData[0];
+};
+
+struct usb_cdc_ncm_desc {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubType;
+	__le16 bcdNcmVersion;
+	__u8 bmNetworkCapabilities;
+} __attribute__((packed));
+
+struct usb_cdc_mbim_desc {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubType;
+	__le16 bcdMBIMVersion;
+	__le16 wMaxControlMessage;
+	__u8 bNumberFilters;
+	__u8 bMaxFilterSize;
+	__le16 wMaxSegmentSize;
+	__u8 bmNetworkCapabilities;
+} __attribute__((packed));
+
+struct usb_cdc_mbim_extended_desc {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubType;
+	__le16 bcdMBIMExtendedVersion;
+	__u8 bMaxOutstandingCommandMessages;
+	__le16 wMTU;
+} __attribute__((packed));
+
+struct set_config_request {
+	struct usb_device *udev;
+	int config;
+	struct work_struct work;
+	struct list_head node;
+};
+
+struct usb_sg_request {
+	int status;
+	size_t bytes;
+	spinlock_t lock;
+	struct usb_device *dev;
+	int pipe;
+	int entries;
+	struct urb **urbs;
+	int count;
+	struct completion complete;
+};
+
+struct api_context {
+	struct completion done;
+	int status;
+};
+
+struct usb_cdc_network_terminal_desc;
+
+struct usb_cdc_obex_desc;
+
+struct usb_cdc_parsed_header {
+	struct usb_cdc_union_desc *usb_cdc_union_desc;
+	struct usb_cdc_header_desc *usb_cdc_header_desc;
+	struct usb_cdc_call_mgmt_descriptor *usb_cdc_call_mgmt_descriptor;
+	struct usb_cdc_acm_descriptor *usb_cdc_acm_descriptor;
+	struct usb_cdc_country_functional_desc *usb_cdc_country_functional_desc;
+	struct usb_cdc_network_terminal_desc *usb_cdc_network_terminal_desc;
+	struct usb_cdc_ether_desc *usb_cdc_ether_desc;
+	struct usb_cdc_dmm_desc *usb_cdc_dmm_desc;
+	struct usb_cdc_mdlm_desc *usb_cdc_mdlm_desc;
+	struct usb_cdc_mdlm_detail_desc *usb_cdc_mdlm_detail_desc;
+	struct usb_cdc_obex_desc *usb_cdc_obex_desc;
+	struct usb_cdc_ncm_desc *usb_cdc_ncm_desc;
+	struct usb_cdc_mbim_desc *usb_cdc_mbim_desc;
+	struct usb_cdc_mbim_extended_desc *usb_cdc_mbim_extended_desc;
+	bool phonet_magic_present;
+};
+
+struct usb_cdc_network_terminal_desc {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubType;
+	__u8 bEntityId;
+	__u8 iName;
+	__u8 bChannelIndex;
+	__u8 bPhysicalInterface;
+};
+
+struct usb_cdc_obex_desc {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubType;
+	__le16 bcdVersion;
+} __attribute__((packed));
+
+struct usb_dynid {
+	struct list_head node;
+	struct usb_device_id id;
+};
+
+struct usb_dev_cap_header {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDevCapabilityType;
+};
+
+struct usb_class_driver {
+	char *name;
+	char * (*devnode)(const struct device *, umode_t *);
+	const struct file_operations *fops;
+	int minor_base;
+};
+
+struct ep_device {
+	struct usb_endpoint_descriptor *desc;
+	struct usb_device *udev;
+	struct device dev;
+};
+
+enum snoop_when {
+	SUBMIT = 0,
+	COMPLETE___2 = 1,
+};
+
+struct usb_dev_state {
+	struct list_head list;
+	struct usb_device *dev;
+	struct file *file;
+	spinlock_t lock;
+	struct list_head async_pending;
+	struct list_head async_completed;
+	struct list_head memory_list;
+	wait_queue_head_t wait;
+	wait_queue_head_t wait_for_resume;
+	unsigned int discsignr;
+	struct pid *disc_pid;
+	const struct cred *cred;
+	sigval_t disccontext;
+	unsigned long ifclaimed;
+	u32 disabled_bulk_eps;
+	unsigned long interface_allowed_mask;
+	int not_yet_resumed;
+	bool suspend_allowed;
+	bool privileges_dropped;
+};
+
+struct usb_memory;
+
+struct async {
+	struct list_head asynclist;
+	struct usb_dev_state *ps;
+	struct pid *pid;
+	const struct cred *cred;
+	unsigned int signr;
+	unsigned int ifnum;
+	void __attribute__((btf_type_tag("user"))) *userbuffer;
+	void __attribute__((btf_type_tag("user"))) *userurb;
+	sigval_t userurb_sigval;
+	struct urb *urb;
+	struct usb_memory *usbm;
+	unsigned int mem_usage;
+	int status;
+	u8 bulk_addr;
+	u8 bulk_status;
+};
+
+struct usb_memory {
+	struct list_head memlist;
+	int vma_use_count;
+	int urb_use_count;
+	u32 size;
+	void *mem;
+	dma_addr_t dma_handle;
+	unsigned long vm_start;
+	struct usb_dev_state *ps;
+};
+
+struct usbdevfs_iso_packet_desc {
+	unsigned int length;
+	unsigned int actual_length;
+	unsigned int status;
+};
+
+struct usbdevfs_urb {
+	unsigned char type;
+	unsigned char endpoint;
+	int status;
+	unsigned int flags;
+	void __attribute__((btf_type_tag("user"))) *buffer;
+	int buffer_length;
+	int actual_length;
+	int start_frame;
+	union {
+		int number_of_packets;
+		unsigned int stream_id;
+	};
+	int error_count;
+	unsigned int signr;
+	void __attribute__((btf_type_tag("user"))) *usercontext;
+	struct usbdevfs_iso_packet_desc iso_frame_desc[0];
+};
+
+struct usbdevfs_urb32 {
+	unsigned char type;
+	unsigned char endpoint;
+	compat_int_t status;
+	compat_uint_t flags;
+	compat_caddr_t buffer;
+	compat_int_t buffer_length;
+	compat_int_t actual_length;
+	compat_int_t start_frame;
+	compat_int_t number_of_packets;
+	compat_int_t error_count;
+	compat_uint_t signr;
+	compat_caddr_t usercontext;
+	struct usbdevfs_iso_packet_desc iso_frame_desc[0];
+};
+
+struct usbdevfs_setinterface {
+	unsigned int interface;
+	unsigned int altsetting;
+};
+
+struct usbdevfs_bulktransfer32 {
+	compat_uint_t ep;
+	compat_uint_t len;
+	compat_uint_t timeout;
+	compat_caddr_t data;
+};
+
+struct usbdevfs_bulktransfer {
+	unsigned int ep;
+	unsigned int len;
+	unsigned int timeout;
+	void __attribute__((btf_type_tag("user"))) *data;
+};
+
+struct usbdevfs_getdriver {
+	unsigned int interface;
+	char driver[256];
+};
+
+struct usbdevfs_disconnect_claim {
+	unsigned int interface;
+	unsigned int flags;
+	char driver[256];
+};
+
+struct usbdevfs_disconnectsignal32 {
+	compat_int_t signr;
+	compat_caddr_t context;
+};
+
+struct usbdevfs_ctrltransfer32 {
+	u8 bRequestType;
+	u8 bRequest;
+	u16 wValue;
+	u16 wIndex;
+	u16 wLength;
+	u32 timeout;
+	compat_caddr_t data;
+};
+
+struct usbdevfs_ctrltransfer {
+	__u8 bRequestType;
+	__u8 bRequest;
+	__u16 wValue;
+	__u16 wIndex;
+	__u16 wLength;
+	__u32 timeout;
+	void __attribute__((btf_type_tag("user"))) *data;
+};
+
+struct usbdevfs_disconnectsignal {
+	unsigned int signr;
+	void __attribute__((btf_type_tag("user"))) *context;
+};
+
+struct usbdevfs_ioctl32 {
+	s32 ifno;
+	s32 ioctl_code;
+	compat_caddr_t data;
+};
+
+struct usbdevfs_ioctl {
+	int ifno;
+	int ioctl_code;
+	void __attribute__((btf_type_tag("user"))) *data;
+};
+
+struct usbdevfs_connectinfo {
+	unsigned int devnum;
+	unsigned char slow;
+};
+
+struct usbdevfs_conninfo_ex {
+	__u32 size;
+	__u32 busnum;
+	__u32 devnum;
+	__u32 speed;
+	__u8 num_ports;
+	__u8 ports[7];
+};
+
+struct usbdevfs_streams {
+	unsigned int num_streams;
+	unsigned int num_eps;
+	unsigned char eps[0];
+};
+
+struct quirk_entry {
+	u16 vid;
+	u16 pid;
+	u32 flags;
+};
+
+struct class_info {
+	int class;
+	char *class_name;
+};
+
+struct usb_phy_roothub {
+	struct phy *phy;
+	struct list_head list;
+};
+
+typedef void (*companion_fn)(struct pci_dev *, struct usb_hcd *, struct pci_dev *, struct usb_hcd *);
+
+struct phy_devm {
+	struct usb_phy *phy;
+	struct notifier_block *nb;
+};
+
+enum usb_phy_interface {
+	USBPHY_INTERFACE_MODE_UNKNOWN = 0,
+	USBPHY_INTERFACE_MODE_UTMI = 1,
+	USBPHY_INTERFACE_MODE_UTMIW = 2,
+	USBPHY_INTERFACE_MODE_ULPI = 3,
+	USBPHY_INTERFACE_MODE_SERIAL = 4,
+	USBPHY_INTERFACE_MODE_HSIC = 5,
+};
+
+struct usb_ep;
+
+struct usb_request {
+	void *buf;
+	unsigned int length;
+	dma_addr_t dma;
+	struct scatterlist *sg;
+	unsigned int num_sgs;
+	unsigned int num_mapped_sgs;
+	unsigned int stream_id: 16;
+	unsigned int is_last: 1;
+	unsigned int no_interrupt: 1;
+	unsigned int zero: 1;
+	unsigned int short_not_ok: 1;
+	unsigned int dma_mapped: 1;
+	void (*complete)(struct usb_ep *, struct usb_request *);
+	void *context;
+	struct list_head list;
+	unsigned int frame_number;
+	int status;
+	unsigned int actual;
+	u64 android_kabi_reserved1;
+};
+
+struct dwc3_ep;
+
+struct dwc3_trb;
+
+struct dwc3_request {
+	struct usb_request request;
+	struct list_head list;
+	struct dwc3_ep *dep;
+	struct scatterlist *sg;
+	struct scatterlist *start_sg;
+	unsigned int num_pending_sgs;
+	unsigned int num_queued_sgs;
+	unsigned int remaining;
+	unsigned int status;
+	u8 epnum;
+	struct dwc3_trb *trb;
+	dma_addr_t trb_dma;
+	unsigned int num_trbs;
+	unsigned int needs_extra_trb: 1;
+	unsigned int direction: 1;
+	unsigned int mapped: 1;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct ulpi;
+
+enum dwc3_ep0_next {
+	DWC3_EP0_UNKNOWN = 0,
+	DWC3_EP0_COMPLETE = 1,
+	DWC3_EP0_NRDY_DATA = 2,
+	DWC3_EP0_NRDY_STATUS = 3,
+};
+
+enum dwc3_ep0_state {
+	EP0_UNCONNECTED = 0,
+	EP0_SETUP_PHASE = 1,
+	EP0_DATA_PHASE = 2,
+	EP0_STATUS_PHASE = 3,
+};
+
+enum dwc3_link_state {
+	DWC3_LINK_STATE_U0 = 0,
+	DWC3_LINK_STATE_U1 = 1,
+	DWC3_LINK_STATE_U2 = 2,
+	DWC3_LINK_STATE_U3 = 3,
+	DWC3_LINK_STATE_SS_DIS = 4,
+	DWC3_LINK_STATE_RX_DET = 5,
+	DWC3_LINK_STATE_SS_INACT = 6,
+	DWC3_LINK_STATE_POLL = 7,
+	DWC3_LINK_STATE_RECOV = 8,
+	DWC3_LINK_STATE_HRESET = 9,
+	DWC3_LINK_STATE_CMPLY = 10,
+	DWC3_LINK_STATE_LPBK = 11,
+	DWC3_LINK_STATE_RESET = 14,
+	DWC3_LINK_STATE_RESUME = 15,
+	DWC3_LINK_STATE_MASK = 15,
+};
+
+struct dwc3_hwparams {
+	u32 hwparams0;
+	u32 hwparams1;
+	u32 hwparams2;
+	u32 hwparams3;
+	u32 hwparams4;
+	u32 hwparams5;
+	u32 hwparams6;
+	u32 hwparams7;
+	u32 hwparams8;
+	u32 hwparams9;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct dwc3_event_buffer;
+
+struct usb_gadget_driver;
+
+struct usb_role_switch;
+
+struct power_supply;
+
+struct dwc3 {
+	struct work_struct drd_work;
+	struct dwc3_trb *ep0_trb;
+	void *bounce;
+	u8 *setup_buf;
+	dma_addr_t ep0_trb_addr;
+	dma_addr_t bounce_addr;
+	struct dwc3_request ep0_usb_req;
+	struct completion ep0_in_setup;
+	spinlock_t lock;
+	struct mutex mutex;
+	struct device *dev;
+	struct device *sysdev;
+	struct platform_device *xhci;
+	struct resource xhci_resources[2];
+	struct dwc3_event_buffer *ev_buf;
+	struct dwc3_ep *eps[32];
+	struct usb_gadget *gadget;
+	struct usb_gadget_driver *gadget_driver;
+	struct clk *bus_clk;
+	struct clk *ref_clk;
+	struct clk *susp_clk;
+	struct reset_control *reset;
+	struct usb_phy *usb2_phy;
+	struct usb_phy *usb3_phy;
+	struct phy *usb2_generic_phy;
+	struct phy *usb3_generic_phy;
+	bool phys_ready;
+	struct ulpi *ulpi;
+	bool ulpi_ready;
+	void *regs;
+	size_t regs_size;
+	enum usb_dr_mode dr_mode;
+	u32 current_dr_role;
+	u32 desired_dr_role;
+	struct extcon_dev *edev;
+	struct notifier_block edev_nb;
+	enum usb_phy_interface hsphy_mode;
+	struct usb_role_switch *role_sw;
+	enum usb_dr_mode role_switch_default_mode;
+	struct power_supply *usb_psy;
+	u32 fladj;
+	u32 ref_clk_per;
+	u32 irq_gadget;
+	u32 otg_irq;
+	u32 current_otg_role;
+	u32 desired_otg_role;
+	bool otg_restart_host;
+	u32 u1u2;
+	u32 maximum_speed;
+	u32 gadget_max_speed;
+	enum usb_ssp_rate max_ssp_rate;
+	enum usb_ssp_rate gadget_ssp_rate;
+	u32 ip;
+	u32 revision;
+	u32 version_type;
+	enum dwc3_ep0_next ep0_next_event;
+	enum dwc3_ep0_state ep0state;
+	enum dwc3_link_state link_state;
+	u16 u2sel;
+	u16 u2pel;
+	u8 u1sel;
+	u8 u1pel;
+	u8 speed;
+	u8 num_eps;
+	struct dwc3_hwparams hwparams;
+	struct debugfs_regset32 *regset;
+	u32 dbg_lsp_select;
+	u8 test_mode;
+	u8 test_mode_nr;
+	u8 lpm_nyet_threshold;
+	u8 hird_threshold;
+	u8 rx_thr_num_pkt;
+	u8 rx_max_burst;
+	u8 tx_thr_num_pkt;
+	u8 tx_max_burst;
+	u8 rx_thr_num_pkt_prd;
+	u8 rx_max_burst_prd;
+	u8 tx_thr_num_pkt_prd;
+	u8 tx_max_burst_prd;
+	u8 tx_fifo_resize_max_num;
+	u8 clear_stall_protocol;
+	u16 num_hc_interrupters;
+	const char *hsphy_interface;
+	unsigned int connected: 1;
+	unsigned int softconnect: 1;
+	unsigned int delayed_status: 1;
+	unsigned int ep0_bounced: 1;
+	unsigned int ep0_expect_in: 1;
+	unsigned int sysdev_is_parent: 1;
+	unsigned int has_lpm_erratum: 1;
+	unsigned int is_utmi_l1_suspend: 1;
+	unsigned int is_fpga: 1;
+	unsigned int pending_events: 1;
+	unsigned int do_fifo_resize: 1;
+	unsigned int pullups_connected: 1;
+	unsigned int setup_packet_pending: 1;
+	unsigned int three_stage_setup: 1;
+	unsigned int dis_start_transfer_quirk: 1;
+	unsigned int usb3_lpm_capable: 1;
+	unsigned int usb2_lpm_disable: 1;
+	unsigned int usb2_gadget_lpm_disable: 1;
+	unsigned int disable_scramble_quirk: 1;
+	unsigned int u2exit_lfps_quirk: 1;
+	unsigned int u2ss_inp3_quirk: 1;
+	unsigned int req_p1p2p3_quirk: 1;
+	unsigned int del_p1p2p3_quirk: 1;
+	unsigned int del_phy_power_chg_quirk: 1;
+	unsigned int lfps_filter_quirk: 1;
+	unsigned int rx_detect_poll_quirk: 1;
+	unsigned int dis_u3_susphy_quirk: 1;
+	unsigned int dis_u2_susphy_quirk: 1;
+	unsigned int dis_enblslpm_quirk: 1;
+	unsigned int dis_u1_entry_quirk: 1;
+	unsigned int dis_u2_entry_quirk: 1;
+	unsigned int dis_rxdet_inp3_quirk: 1;
+	unsigned int dis_u2_freeclk_exists_quirk: 1;
+	unsigned int dis_del_phy_power_chg_quirk: 1;
+	unsigned int dis_tx_ipgap_linecheck_quirk: 1;
+	unsigned int resume_hs_terminations: 1;
+	unsigned int ulpi_ext_vbus_drv: 1;
+	unsigned int parkmode_disable_ss_quirk: 1;
+	unsigned int parkmode_disable_hs_quirk: 1;
+	unsigned int gfladj_refclk_lpm_sel: 1;
+	unsigned int tx_de_emphasis_quirk: 1;
+	unsigned int tx_de_emphasis: 2;
+	unsigned int dis_metastability_quirk: 1;
+	unsigned int dis_split_quirk: 1;
+	unsigned int async_callbacks: 1;
+	unsigned int sys_wakeup: 1;
+	unsigned int wakeup_configured: 1;
+	unsigned int suspended: 1;
+	u16 imod_interval;
+	int max_cfg_eps;
+	int last_fifo_depth;
+	int num_ep_resized;
+	struct dentry *debug_root;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct dwc3_trb {
+	u32 bpl;
+	u32 bph;
+	u32 size;
+	u32 ctrl;
+};
+
+struct usb_ep_caps {
+	unsigned int type_control: 1;
+	unsigned int type_iso: 1;
+	unsigned int type_bulk: 1;
+	unsigned int type_int: 1;
+	unsigned int dir_in: 1;
+	unsigned int dir_out: 1;
+};
+
+struct usb_ep_ops;
+
+struct usb_ep {
+	void *driver_data;
+	const char *name;
+	const struct usb_ep_ops *ops;
+	struct list_head ep_list;
+	struct usb_ep_caps caps;
+	bool claimed;
+	bool enabled;
+	unsigned int maxpacket: 16;
+	unsigned int maxpacket_limit: 16;
+	unsigned int max_streams: 16;
+	unsigned int mult: 2;
+	unsigned int maxburst: 5;
+	u8 address;
+	const struct usb_endpoint_descriptor *desc;
+	const struct usb_ss_ep_comp_descriptor *comp_desc;
+	u64 android_kabi_reserved1;
+};
+
+struct usb_ep_ops {
+	int (*enable)(struct usb_ep *, const struct usb_endpoint_descriptor *);
+	int (*disable)(struct usb_ep *);
+	void (*dispose)(struct usb_ep *);
+	struct usb_request * (*alloc_request)(struct usb_ep *, gfp_t);
+	void (*free_request)(struct usb_ep *, struct usb_request *);
+	int (*queue)(struct usb_ep *, struct usb_request *, gfp_t);
+	int (*dequeue)(struct usb_ep *, struct usb_request *);
+	int (*set_halt)(struct usb_ep *, int);
+	int (*set_wedge)(struct usb_ep *);
+	int (*fifo_status)(struct usb_ep *);
+	void (*fifo_flush)(struct usb_ep *);
+	u64 android_kabi_reserved1;
+};
+
+struct dwc3_ep {
+	struct usb_ep endpoint;
+	struct list_head cancelled_list;
+	struct list_head pending_list;
+	struct list_head started_list;
+	void *regs;
+	struct dwc3_trb *trb_pool;
+	dma_addr_t trb_pool_dma;
+	struct dwc3 *dwc;
+	u32 saved_state;
+	unsigned int flags;
+	u8 trb_enqueue;
+	u8 trb_dequeue;
+	u8 number;
+	u8 type;
+	u8 resource_index;
+	u32 frame_number;
+	u32 interval;
+	char name[20];
+	unsigned int direction: 1;
+	unsigned int stream_capable: 1;
+	u8 combo_num;
+	int start_cmd_status;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct dwc3_event_buffer {
+	void *buf;
+	void *cache;
+	unsigned int length;
+	unsigned int lpos;
+	unsigned int count;
+	unsigned int flags;
+	dma_addr_t dma;
+	struct dwc3 *dwc;
+	u64 android_kabi_reserved1;
+};
+
+struct usb_udc;
+
+struct usb_gadget_ops;
+
+struct usb_gadget {
+	struct work_struct work;
+	struct usb_udc *udc;
+	const struct usb_gadget_ops *ops;
+	struct usb_ep *ep0;
+	struct list_head ep_list;
+	enum usb_device_speed speed;
+	enum usb_device_speed max_speed;
+	enum usb_ssp_rate ssp_rate;
+	enum usb_ssp_rate max_ssp_rate;
+	enum usb_device_state state;
+	const char *name;
+	struct device dev;
+	unsigned int isoch_delay;
+	unsigned int out_epnum;
+	unsigned int in_epnum;
+	unsigned int mA;
+	struct usb_otg_caps *otg_caps;
+	unsigned int sg_supported: 1;
+	unsigned int is_otg: 1;
+	unsigned int is_a_peripheral: 1;
+	unsigned int b_hnp_enable: 1;
+	unsigned int a_hnp_support: 1;
+	unsigned int a_alt_hnp_support: 1;
+	unsigned int hnp_polling_support: 1;
+	unsigned int host_request_flag: 1;
+	unsigned int quirk_ep_out_aligned_size: 1;
+	unsigned int quirk_altset_not_supp: 1;
+	unsigned int quirk_stall_not_supp: 1;
+	unsigned int quirk_zlp_not_supp: 1;
+	unsigned int quirk_avoids_skb_reserve: 1;
+	unsigned int is_selfpowered: 1;
+	unsigned int deactivated: 1;
+	unsigned int connected: 1;
+	unsigned int lpm_capable: 1;
+	unsigned int wakeup_capable: 1;
+	unsigned int wakeup_armed: 1;
+	int irq;
+	int id_number;
+};
+
+struct usb_dcd_config_params;
+
+struct usb_gadget_ops {
+	int (*get_frame)(struct usb_gadget *);
+	int (*wakeup)(struct usb_gadget *);
+	int (*func_wakeup)(struct usb_gadget *, int);
+	int (*set_remote_wakeup)(struct usb_gadget *, int);
+	int (*set_selfpowered)(struct usb_gadget *, int);
+	int (*vbus_session)(struct usb_gadget *, int);
+	int (*vbus_draw)(struct usb_gadget *, unsigned int);
+	int (*pullup)(struct usb_gadget *, int);
+	int (*ioctl)(struct usb_gadget *, unsigned int, unsigned long);
+	void (*get_config_params)(struct usb_gadget *, struct usb_dcd_config_params *);
+	int (*udc_start)(struct usb_gadget *, struct usb_gadget_driver *);
+	int (*udc_stop)(struct usb_gadget *);
+	void (*udc_set_speed)(struct usb_gadget *, enum usb_device_speed);
+	void (*udc_set_ssp_rate)(struct usb_gadget *, enum usb_ssp_rate);
+	void (*udc_async_callbacks)(struct usb_gadget *, bool);
+	struct usb_ep * (*match_ep)(struct usb_gadget *, struct usb_endpoint_descriptor *, struct usb_ss_ep_comp_descriptor *);
+	int (*check_config)(struct usb_gadget *);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct usb_dcd_config_params {
+	__u8 bU1devExitLat;
+	__le16 bU2DevExitLat;
+	__u8 besl_baseline;
+	__u8 besl_deep;
+};
+
+struct usb_gadget_driver {
+	char *function;
+	enum usb_device_speed max_speed;
+	int (*bind)(struct usb_gadget *, struct usb_gadget_driver *);
+	void (*unbind)(struct usb_gadget *);
+	int (*setup)(struct usb_gadget *, const struct usb_ctrlrequest *);
+	void (*disconnect)(struct usb_gadget *);
+	void (*suspend)(struct usb_gadget *);
+	void (*resume)(struct usb_gadget *);
+	void (*reset)(struct usb_gadget *);
+	struct device_driver driver;
+	char *udc_name;
+	unsigned int match_existing_only: 1;
+	bool is_bound: 1;
+};
+
+struct power_supply_desc;
+
+struct power_supply_battery_info;
+
+struct thermal_zone_device;
+
+struct power_supply {
+	const struct power_supply_desc *desc;
+	char **supplied_to;
+	size_t num_supplicants;
+	char **supplied_from;
+	size_t num_supplies;
+	struct device_node *of_node;
+	void *drv_data;
+	struct device dev;
+	struct work_struct changed_work;
+	struct delayed_work deferred_register_work;
+	spinlock_t changed_lock;
+	bool changed;
+	bool initialized;
+	bool removing;
+	atomic_t use_cnt;
+	struct power_supply_battery_info *battery_info;
+	struct thermal_zone_device *tzd;
+	struct thermal_cooling_device *tcd;
+	struct led_trigger *charging_full_trig;
+	char *charging_full_trig_name;
+	struct led_trigger *charging_trig;
+	char *charging_trig_name;
+	struct led_trigger *full_trig;
+	char *full_trig_name;
+	struct led_trigger *online_trig;
+	char *online_trig_name;
+	struct led_trigger *charging_blink_full_solid_trig;
+	char *charging_blink_full_solid_trig_name;
+	u64 android_kabi_reserved1;
+};
+
+enum power_supply_type {
+	POWER_SUPPLY_TYPE_UNKNOWN = 0,
+	POWER_SUPPLY_TYPE_BATTERY = 1,
+	POWER_SUPPLY_TYPE_UPS = 2,
+	POWER_SUPPLY_TYPE_MAINS = 3,
+	POWER_SUPPLY_TYPE_USB = 4,
+	POWER_SUPPLY_TYPE_USB_DCP = 5,
+	POWER_SUPPLY_TYPE_USB_CDP = 6,
+	POWER_SUPPLY_TYPE_USB_ACA = 7,
+	POWER_SUPPLY_TYPE_USB_TYPE_C = 8,
+	POWER_SUPPLY_TYPE_USB_PD = 9,
+	POWER_SUPPLY_TYPE_USB_PD_DRP = 10,
+	POWER_SUPPLY_TYPE_APPLE_BRICK_ID = 11,
+	POWER_SUPPLY_TYPE_WIRELESS = 12,
+};
+
+enum power_supply_usb_type {
+	POWER_SUPPLY_USB_TYPE_UNKNOWN = 0,
+	POWER_SUPPLY_USB_TYPE_SDP = 1,
+	POWER_SUPPLY_USB_TYPE_DCP = 2,
+	POWER_SUPPLY_USB_TYPE_CDP = 3,
+	POWER_SUPPLY_USB_TYPE_ACA = 4,
+	POWER_SUPPLY_USB_TYPE_C = 5,
+	POWER_SUPPLY_USB_TYPE_PD = 6,
+	POWER_SUPPLY_USB_TYPE_PD_DRP = 7,
+	POWER_SUPPLY_USB_TYPE_PD_PPS = 8,
+	POWER_SUPPLY_USB_TYPE_APPLE_BRICK_ID = 9,
+};
+
+enum power_supply_property {
+	POWER_SUPPLY_PROP_STATUS = 0,
+	POWER_SUPPLY_PROP_CHARGE_TYPE = 1,
+	POWER_SUPPLY_PROP_HEALTH = 2,
+	POWER_SUPPLY_PROP_PRESENT = 3,
+	POWER_SUPPLY_PROP_ONLINE = 4,
+	POWER_SUPPLY_PROP_AUTHENTIC = 5,
+	POWER_SUPPLY_PROP_TECHNOLOGY = 6,
+	POWER_SUPPLY_PROP_CYCLE_COUNT = 7,
+	POWER_SUPPLY_PROP_VOLTAGE_MAX = 8,
+	POWER_SUPPLY_PROP_VOLTAGE_MIN = 9,
+	POWER_SUPPLY_PROP_VOLTAGE_MAX_DESIGN = 10,
+	POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN = 11,
+	POWER_SUPPLY_PROP_VOLTAGE_NOW = 12,
+	POWER_SUPPLY_PROP_VOLTAGE_AVG = 13,
+	POWER_SUPPLY_PROP_VOLTAGE_OCV = 14,
+	POWER_SUPPLY_PROP_VOLTAGE_BOOT = 15,
+	POWER_SUPPLY_PROP_CURRENT_MAX = 16,
+	POWER_SUPPLY_PROP_CURRENT_NOW = 17,
+	POWER_SUPPLY_PROP_CURRENT_AVG = 18,
+	POWER_SUPPLY_PROP_CURRENT_BOOT = 19,
+	POWER_SUPPLY_PROP_POWER_NOW = 20,
+	POWER_SUPPLY_PROP_POWER_AVG = 21,
+	POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN = 22,
+	POWER_SUPPLY_PROP_CHARGE_EMPTY_DESIGN = 23,
+	POWER_SUPPLY_PROP_CHARGE_FULL = 24,
+	POWER_SUPPLY_PROP_CHARGE_EMPTY = 25,
+	POWER_SUPPLY_PROP_CHARGE_NOW = 26,
+	POWER_SUPPLY_PROP_CHARGE_AVG = 27,
+	POWER_SUPPLY_PROP_CHARGE_COUNTER = 28,
+	POWER_SUPPLY_PROP_CONSTANT_CHARGE_CURRENT = 29,
+	POWER_SUPPLY_PROP_CONSTANT_CHARGE_CURRENT_MAX = 30,
+	POWER_SUPPLY_PROP_CONSTANT_CHARGE_VOLTAGE = 31,
+	POWER_SUPPLY_PROP_CONSTANT_CHARGE_VOLTAGE_MAX = 32,
+	POWER_SUPPLY_PROP_CHARGE_CONTROL_LIMIT = 33,
+	POWER_SUPPLY_PROP_CHARGE_CONTROL_LIMIT_MAX = 34,
+	POWER_SUPPLY_PROP_CHARGE_CONTROL_START_THRESHOLD = 35,
+	POWER_SUPPLY_PROP_CHARGE_CONTROL_END_THRESHOLD = 36,
+	POWER_SUPPLY_PROP_CHARGE_BEHAVIOUR = 37,
+	POWER_SUPPLY_PROP_INPUT_CURRENT_LIMIT = 38,
+	POWER_SUPPLY_PROP_INPUT_VOLTAGE_LIMIT = 39,
+	POWER_SUPPLY_PROP_INPUT_POWER_LIMIT = 40,
+	POWER_SUPPLY_PROP_ENERGY_FULL_DESIGN = 41,
+	POWER_SUPPLY_PROP_ENERGY_EMPTY_DESIGN = 42,
+	POWER_SUPPLY_PROP_ENERGY_FULL = 43,
+	POWER_SUPPLY_PROP_ENERGY_EMPTY = 44,
+	POWER_SUPPLY_PROP_ENERGY_NOW = 45,
+	POWER_SUPPLY_PROP_ENERGY_AVG = 46,
+	POWER_SUPPLY_PROP_CAPACITY = 47,
+	POWER_SUPPLY_PROP_CAPACITY_ALERT_MIN = 48,
+	POWER_SUPPLY_PROP_CAPACITY_ALERT_MAX = 49,
+	POWER_SUPPLY_PROP_CAPACITY_ERROR_MARGIN = 50,
+	POWER_SUPPLY_PROP_CAPACITY_LEVEL = 51,
+	POWER_SUPPLY_PROP_TEMP = 52,
+	POWER_SUPPLY_PROP_TEMP_MAX = 53,
+	POWER_SUPPLY_PROP_TEMP_MIN = 54,
+	POWER_SUPPLY_PROP_TEMP_ALERT_MIN = 55,
+	POWER_SUPPLY_PROP_TEMP_ALERT_MAX = 56,
+	POWER_SUPPLY_PROP_TEMP_AMBIENT = 57,
+	POWER_SUPPLY_PROP_TEMP_AMBIENT_ALERT_MIN = 58,
+	POWER_SUPPLY_PROP_TEMP_AMBIENT_ALERT_MAX = 59,
+	POWER_SUPPLY_PROP_TIME_TO_EMPTY_NOW = 60,
+	POWER_SUPPLY_PROP_TIME_TO_EMPTY_AVG = 61,
+	POWER_SUPPLY_PROP_TIME_TO_FULL_NOW = 62,
+	POWER_SUPPLY_PROP_TIME_TO_FULL_AVG = 63,
+	POWER_SUPPLY_PROP_TYPE = 64,
+	POWER_SUPPLY_PROP_USB_TYPE = 65,
+	POWER_SUPPLY_PROP_SCOPE = 66,
+	POWER_SUPPLY_PROP_PRECHARGE_CURRENT = 67,
+	POWER_SUPPLY_PROP_CHARGE_TERM_CURRENT = 68,
+	POWER_SUPPLY_PROP_CALIBRATE = 69,
+	POWER_SUPPLY_PROP_MANUFACTURE_YEAR = 70,
+	POWER_SUPPLY_PROP_MANUFACTURE_MONTH = 71,
+	POWER_SUPPLY_PROP_MANUFACTURE_DAY = 72,
+	POWER_SUPPLY_PROP_MODEL_NAME = 73,
+	POWER_SUPPLY_PROP_MANUFACTURER = 74,
+	POWER_SUPPLY_PROP_SERIAL_NUMBER = 75,
+};
+
+union power_supply_propval;
+
+struct power_supply_desc {
+	const char *name;
+	enum power_supply_type type;
+	const enum power_supply_usb_type *usb_types;
+	size_t num_usb_types;
+	const enum power_supply_property *properties;
+	size_t num_properties;
+	int (*get_property)(struct power_supply *, enum power_supply_property, union power_supply_propval *);
+	int (*set_property)(struct power_supply *, enum power_supply_property, const union power_supply_propval *);
+	int (*property_is_writeable)(struct power_supply *, enum power_supply_property);
+	void (*external_power_changed)(struct power_supply *);
+	void (*set_charged)(struct power_supply *);
+	bool no_thermal;
+	int use_for_apm;
+	u64 android_kabi_reserved1;
+};
+
+union power_supply_propval {
+	int intval;
+	const char *strval;
+};
+
+struct power_supply_maintenance_charge_table;
+
+struct power_supply_battery_ocv_table;
+
+struct power_supply_resistance_temp_table;
+
+struct power_supply_vbat_ri_table;
+
+struct power_supply_battery_info {
+	unsigned int technology;
+	int energy_full_design_uwh;
+	int charge_full_design_uah;
+	int voltage_min_design_uv;
+	int voltage_max_design_uv;
+	int tricklecharge_current_ua;
+	int precharge_current_ua;
+	int precharge_voltage_max_uv;
+	int charge_term_current_ua;
+	int charge_restart_voltage_uv;
+	int overvoltage_limit_uv;
+	int constant_charge_current_max_ua;
+	int constant_charge_voltage_max_uv;
+	struct power_supply_maintenance_charge_table *maintenance_charge;
+	int maintenance_charge_size;
+	int alert_low_temp_charge_current_ua;
+	int alert_low_temp_charge_voltage_uv;
+	int alert_high_temp_charge_current_ua;
+	int alert_high_temp_charge_voltage_uv;
+	int factory_internal_resistance_uohm;
+	int factory_internal_resistance_charging_uohm;
+	int ocv_temp[20];
+	int temp_ambient_alert_min;
+	int temp_ambient_alert_max;
+	int temp_alert_min;
+	int temp_alert_max;
+	int temp_min;
+	int temp_max;
+	struct power_supply_battery_ocv_table *ocv_table[20];
+	int ocv_table_size[20];
+	struct power_supply_resistance_temp_table *resist_table;
+	int resist_table_size;
+	struct power_supply_vbat_ri_table *vbat2ri_discharging;
+	int vbat2ri_discharging_size;
+	struct power_supply_vbat_ri_table *vbat2ri_charging;
+	int vbat2ri_charging_size;
+	int bti_resistance_ohm;
+	int bti_resistance_tolerance;
+	u64 android_kabi_reserved1;
+};
+
+struct power_supply_maintenance_charge_table {
+	int charge_current_max_ua;
+	int charge_voltage_max_uv;
+	int charge_safety_timer_minutes;
+};
+
+struct power_supply_battery_ocv_table {
+	int ocv;
+	int capacity;
+};
+
+struct power_supply_resistance_temp_table {
+	int temp;
+	int resistance;
+};
+
+struct power_supply_vbat_ri_table {
+	int vbat_uv;
+	int ri_uohm;
+};
+
+typedef void (*btf_trace_dwc3_readl)(void *, void *, u32, u32);
+
+typedef void (*btf_trace_dwc3_writel)(void *, void *, u32, u32);
+
+typedef void (*btf_trace_dwc3_event)(void *, u32, struct dwc3 *);
+
+typedef void (*btf_trace_dwc3_ctrl_req)(void *, struct usb_ctrlrequest *);
+
+typedef void (*btf_trace_dwc3_alloc_request)(void *, struct dwc3_request *);
+
+typedef void (*btf_trace_dwc3_free_request)(void *, struct dwc3_request *);
+
+typedef void (*btf_trace_dwc3_ep_queue)(void *, struct dwc3_request *);
+
+typedef void (*btf_trace_dwc3_ep_dequeue)(void *, struct dwc3_request *);
+
+typedef void (*btf_trace_dwc3_gadget_giveback)(void *, struct dwc3_request *);
+
+typedef void (*btf_trace_dwc3_gadget_generic_cmd)(void *, unsigned int, u32, int);
+
+struct dwc3_gadget_ep_cmd_params;
+
+typedef void (*btf_trace_dwc3_gadget_ep_cmd)(void *, struct dwc3_ep *, unsigned int, struct dwc3_gadget_ep_cmd_params *, int);
+
+struct dwc3_gadget_ep_cmd_params {
+	u32 param2;
+	u32 param1;
+	u32 param0;
+};
+
+typedef void (*btf_trace_dwc3_prepare_trb)(void *, struct dwc3_ep *, struct dwc3_trb *);
+
+typedef void (*btf_trace_dwc3_complete_trb)(void *, struct dwc3_ep *, struct dwc3_trb *);
+
+typedef void (*btf_trace_dwc3_gadget_ep_enable)(void *, struct dwc3_ep *);
+
+typedef void (*btf_trace_dwc3_gadget_ep_disable)(void *, struct dwc3_ep *);
+
+struct trace_event_raw_dwc3_log_io {
+	struct trace_entry ent;
+	void *base;
+	u32 offset;
+	u32 value;
+	char __data[0];
+};
+
+struct trace_event_raw_dwc3_log_event {
+	struct trace_entry ent;
+	u32 event;
+	u32 ep0state;
+	char __data[0];
+};
+
+struct trace_event_raw_dwc3_log_ctrl {
+	struct trace_entry ent;
+	__u8 bRequestType;
+	__u8 bRequest;
+	__u16 wValue;
+	__u16 wIndex;
+	__u16 wLength;
+	char __data[0];
+};
+
+struct trace_event_raw_dwc3_log_request {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	struct dwc3_request *req;
+	unsigned int actual;
+	unsigned int length;
+	int status;
+	int zero;
+	int short_not_ok;
+	int no_interrupt;
+	char __data[0];
+};
+
+struct trace_event_raw_dwc3_log_generic_cmd {
+	struct trace_entry ent;
+	unsigned int cmd;
+	u32 param;
+	int status;
+	char __data[0];
+};
+
+struct trace_event_raw_dwc3_log_gadget_ep_cmd {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	unsigned int cmd;
+	u32 param0;
+	u32 param1;
+	u32 param2;
+	int cmd_status;
+	char __data[0];
+};
+
+struct trace_event_raw_dwc3_log_trb {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	struct dwc3_trb *trb;
+	u32 bpl;
+	u32 bph;
+	u32 size;
+	u32 ctrl;
+	u32 type;
+	u32 enqueue;
+	u32 dequeue;
+	char __data[0];
+};
+
+struct trace_event_raw_dwc3_log_ep {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	unsigned int maxpacket;
+	unsigned int maxpacket_limit;
+	unsigned int max_streams;
+	unsigned int maxburst;
+	unsigned int flags;
+	unsigned int direction;
+	u8 trb_enqueue;
+	u8 trb_dequeue;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_dwc3_log_request {
+	u32 name;
+};
+
+struct trace_event_data_offsets_dwc3_log_gadget_ep_cmd {
+	u32 name;
+};
+
+struct trace_event_data_offsets_dwc3_log_trb {
+	u32 name;
+};
+
+struct trace_event_data_offsets_dwc3_log_ep {
+	u32 name;
+};
+
+struct dwc3_event_type {
+	u32 is_devspec: 1;
+	u32 type: 7;
+	u32 reserved8_31: 24;
+};
+
+struct dwc3_event_depevt {
+	u32 one_bit: 1;
+	u32 endpoint_number: 5;
+	u32 endpoint_event: 4;
+	u32 reserved11_10: 2;
+	u32 status: 4;
+	u32 parameters: 16;
+};
+
+struct dwc3_event_devt {
+	u32 one_bit: 1;
+	u32 device_event: 7;
+	u32 type: 4;
+	u32 reserved15_12: 4;
+	u32 event_info: 9;
+	u32 reserved31_25: 7;
+};
+
+struct dwc3_event_gevt {
+	u32 one_bit: 1;
+	u32 device_event: 7;
+	u32 phy_port_number: 4;
+	u32 reserved31_12: 20;
+};
+
+union dwc3_event {
+	u32 raw;
+	struct dwc3_event_type type;
+	struct dwc3_event_depevt depevt;
+	struct dwc3_event_devt devt;
+	struct dwc3_event_gevt gevt;
+};
+
+struct trace_event_data_offsets_dwc3_log_io {};
+
+struct trace_event_data_offsets_dwc3_log_event {};
+
+struct trace_event_data_offsets_dwc3_log_ctrl {};
+
+struct trace_event_data_offsets_dwc3_log_generic_cmd {};
+
+struct timing {
+	u8 u1sel;
+	u8 u1pel;
+	__le16 u2sel;
+	__le16 u2pel;
+};
+
+enum usb_role {
+	USB_ROLE_NONE = 0,
+	USB_ROLE_HOST = 1,
+	USB_ROLE_DEVICE = 2,
+};
+
+typedef int (*usb_role_switch_set_t)(struct usb_role_switch *, enum usb_role);
+
+typedef enum usb_role (*usb_role_switch_get_t)(struct usb_role_switch *);
+
+struct usb_role_switch_desc {
+	struct fwnode_handle *fwnode;
+	struct device *usb2_port;
+	struct device *usb3_port;
+	struct device *udc;
+	usb_role_switch_set_t set;
+	usb_role_switch_get_t get;
+	bool allow_userspace_control;
+	void *driver_data;
+	const char *name;
+};
+
+struct dwc3_ep_file_map {
+	const char name[25];
+	const struct file_operations * const fops;
+};
+
+struct dwc3_haps {
+	struct platform_device *dwc3;
+	struct pci_dev *pci;
+};
+
+struct dwc3_of_simple {
+	struct device *dev;
+	struct clk_bulk_data *clks;
+	int num_clocks;
+	struct reset_control *resets;
+	bool need_reset;
+};
+
+struct dwc3_acpi_pdata;
+
+struct dwc3_qcom {
+	struct device *dev;
+	void *qscratch_base;
+	struct platform_device *dwc3;
+	struct platform_device *urs_usb;
+	struct clk **clks;
+	int num_clocks;
+	struct reset_control *resets;
+	int hs_phy_irq;
+	int dp_hs_phy_irq;
+	int dm_hs_phy_irq;
+	int ss_phy_irq;
+	enum usb_device_speed usb2_speed;
+	struct extcon_dev *edev;
+	struct extcon_dev *host_edev;
+	struct notifier_block vbus_nb;
+	struct notifier_block host_nb;
+	const struct dwc3_acpi_pdata *acpi_pdata;
+	enum usb_dr_mode mode;
+	bool is_suspended;
+	bool pm_suspended;
+	struct icc_path *icc_path_ddr;
+	struct icc_path *icc_path_apps;
+};
+
+struct dwc3_acpi_pdata {
+	u32 qscratch_base_offset;
+	u32 qscratch_base_size;
+	u32 dwc3_core_base_size;
+	int hs_phy_irq_index;
+	int dp_hs_phy_irq_index;
+	int dm_hs_phy_irq_index;
+	int ss_phy_irq_index;
+	bool is_urs;
+};
+
+enum amd_chipset_gen {
+	NOT_AMD_CHIPSET = 0,
+	AMD_CHIPSET_SB600 = 1,
+	AMD_CHIPSET_SB700 = 2,
+	AMD_CHIPSET_SB800 = 3,
+	AMD_CHIPSET_HUDSON2 = 4,
+	AMD_CHIPSET_BOLTON = 5,
+	AMD_CHIPSET_YANGTZE = 6,
+	AMD_CHIPSET_TAISHAN = 7,
+	AMD_CHIPSET_UNKNOWN = 8,
+};
+
+struct amd_chipset_type {
+	enum amd_chipset_gen gen;
+	u8 rev;
+};
+
+struct amd_chipset_info {
+	struct pci_dev *nb_dev;
+	struct pci_dev *smbus_dev;
+	int nb_type;
+	struct amd_chipset_type sb_type;
+	int isoc_reqs;
+	int probe_count;
+	bool need_pll_quirk;
+};
+
+enum ehci_hrtimer_event {
+	EHCI_HRTIMER_POLL_ASS = 0,
+	EHCI_HRTIMER_POLL_PSS = 1,
+	EHCI_HRTIMER_POLL_DEAD = 2,
+	EHCI_HRTIMER_UNLINK_INTR = 3,
+	EHCI_HRTIMER_FREE_ITDS = 4,
+	EHCI_HRTIMER_ACTIVE_UNLINK = 5,
+	EHCI_HRTIMER_START_UNLINK_INTR = 6,
+	EHCI_HRTIMER_ASYNC_UNLINKS = 7,
+	EHCI_HRTIMER_IAA_WATCHDOG = 8,
+	EHCI_HRTIMER_DISABLE_PERIODIC = 9,
+	EHCI_HRTIMER_DISABLE_ASYNC = 10,
+	EHCI_HRTIMER_IO_WATCHDOG = 11,
+	EHCI_HRTIMER_NUM_EVENTS = 12,
+};
+
+enum ehci_rh_state {
+	EHCI_RH_HALTED = 0,
+	EHCI_RH_SUSPENDED = 1,
+	EHCI_RH_RUNNING = 2,
+	EHCI_RH_STOPPING = 3,
+};
+
+struct ehci_caps;
+
+struct ehci_regs;
+
+struct ehci_dbg_port;
+
+struct ehci_qh;
+
+union ehci_shadow;
+
+struct ehci_itd;
+
+struct ehci_sitd;
+
+struct ehci_hcd {
+	enum ehci_hrtimer_event next_hrtimer_event;
+	unsigned int enabled_hrtimer_events;
+	ktime_t hr_timeouts[12];
+	struct hrtimer hrtimer;
+	int PSS_poll_count;
+	int ASS_poll_count;
+	int died_poll_count;
+	struct ehci_caps *caps;
+	struct ehci_regs *regs;
+	struct ehci_dbg_port *debug;
+	__u32 hcs_params;
+	spinlock_t lock;
+	enum ehci_rh_state rh_state;
+	bool scanning: 1;
+	bool need_rescan: 1;
+	bool intr_unlinking: 1;
+	bool iaa_in_progress: 1;
+	bool async_unlinking: 1;
+	bool shutdown: 1;
+	struct ehci_qh *qh_scan_next;
+	struct ehci_qh *async;
+	struct ehci_qh *dummy;
+	struct list_head async_unlink;
+	struct list_head async_idle;
+	unsigned int async_unlink_cycle;
+	unsigned int async_count;
+	__le32 old_current;
+	__le32 old_token;
+	unsigned int periodic_size;
+	__le32 *periodic;
+	dma_addr_t periodic_dma;
+	struct list_head intr_qh_list;
+	unsigned int i_thresh;
+	union ehci_shadow *pshadow;
+	struct list_head intr_unlink_wait;
+	struct list_head intr_unlink;
+	unsigned int intr_unlink_wait_cycle;
+	unsigned int intr_unlink_cycle;
+	unsigned int now_frame;
+	unsigned int last_iso_frame;
+	unsigned int intr_count;
+	unsigned int isoc_count;
+	unsigned int periodic_count;
+	unsigned int uframe_periodic_max;
+	struct list_head cached_itd_list;
+	struct ehci_itd *last_itd_to_free;
+	struct list_head cached_sitd_list;
+	struct ehci_sitd *last_sitd_to_free;
+	unsigned long reset_done[15];
+	unsigned long bus_suspended;
+	unsigned long companion_ports;
+	unsigned long owned_ports;
+	unsigned long port_c_suspend;
+	unsigned long suspended_ports;
+	unsigned long resuming_ports;
+	struct dma_pool *qh_pool;
+	struct dma_pool *qtd_pool;
+	struct dma_pool *itd_pool;
+	struct dma_pool *sitd_pool;
+	unsigned int random_frame;
+	unsigned long next_statechange;
+	ktime_t last_periodic_enable;
+	u32 command;
+	unsigned int no_selective_suspend: 1;
+	unsigned int has_fsl_port_bug: 1;
+	unsigned int has_fsl_hs_errata: 1;
+	unsigned int has_fsl_susp_errata: 1;
+	unsigned int has_ci_pec_bug: 1;
+	unsigned int big_endian_mmio: 1;
+	unsigned int big_endian_desc: 1;
+	unsigned int big_endian_capbase: 1;
+	unsigned int has_amcc_usb23: 1;
+	unsigned int need_io_watchdog: 1;
+	unsigned int amd_pll_fix: 1;
+	unsigned int use_dummy_qh: 1;
+	unsigned int has_synopsys_hc_bug: 1;
+	unsigned int frame_index_bug: 1;
+	unsigned int need_oc_pp_cycle: 1;
+	unsigned int imx28_write_fix: 1;
+	unsigned int spurious_oc: 1;
+	unsigned int is_aspeed: 1;
+	unsigned int zx_wakeup_clear_needed: 1;
+	__le32 *ohci_hcctrl_reg;
+	unsigned int has_hostpc: 1;
+	unsigned int has_tdi_phy_lpm: 1;
+	unsigned int has_ppcd: 1;
+	u8 sbrn;
+	u8 bandwidth[64];
+	u8 tt_budget[64];
+	struct list_head tt_list;
+	unsigned long priv[0];
+};
+
+struct ehci_caps {
+	u32 hc_capbase;
+	u32 hcs_params;
+	u32 hcc_params;
+	u8 portroute[8];
+};
+
+struct ehci_regs {
+	u32 command;
+	u32 status;
+	u32 intr_enable;
+	u32 frame_index;
+	u32 segment;
+	u32 frame_list;
+	u32 async_next;
+	u32 reserved1[2];
+	u32 txfill_tuning;
+	u32 reserved2[6];
+	u32 configured_flag;
+	union {
+		u32 port_status[15];
+		struct {
+			u32 reserved3[9];
+			u32 usbmode;
+		};
+	};
+	union {
+		struct {
+			u32 reserved4;
+			u32 hostpc[15];
+		};
+		u32 brcm_insnreg[4];
+	};
+	u32 reserved5[2];
+	u32 usbmode_ex;
+};
+
+struct ehci_dbg_port {
+	u32 control;
+	u32 pids;
+	u32 data03;
+	u32 data47;
+	u32 address;
+};
+
+struct ehci_fstn;
+
+union ehci_shadow {
+	struct ehci_qh *qh;
+	struct ehci_itd *itd;
+	struct ehci_sitd *sitd;
+	struct ehci_fstn *fstn;
+	__le32 *hw_next;
+	void *ptr;
+};
+
+struct ehci_per_sched {
+	struct usb_device *udev;
+	struct usb_host_endpoint *ep;
+	struct list_head ps_list;
+	u16 tt_usecs;
+	u16 cs_mask;
+	u16 period;
+	u16 phase;
+	u8 bw_phase;
+	u8 phase_uf;
+	u8 usecs;
+	u8 c_usecs;
+	u8 bw_uperiod;
+	u8 bw_period;
+};
+
+struct ehci_qh_hw;
+
+struct ehci_qtd;
+
+struct ehci_qh {
+	struct ehci_qh_hw *hw;
+	dma_addr_t qh_dma;
+	union ehci_shadow qh_next;
+	struct list_head qtd_list;
+	struct list_head intr_node;
+	struct ehci_qtd *dummy;
+	struct list_head unlink_node;
+	struct ehci_per_sched ps;
+	unsigned int unlink_cycle;
+	u8 qh_state;
+	u8 xacterrs;
+	u8 unlink_reason;
+	u8 gap_uf;
+	unsigned int is_out: 1;
+	unsigned int clearing_tt: 1;
+	unsigned int dequeue_during_giveback: 1;
+	unsigned int should_be_inactive: 1;
+};
+
+struct ehci_qh_hw {
+	__le32 hw_next;
+	__le32 hw_info1;
+	__le32 hw_info2;
+	__le32 hw_current;
+	__le32 hw_qtd_next;
+	__le32 hw_alt_next;
+	__le32 hw_token;
+	__le32 hw_buf[5];
+	__le32 hw_buf_hi[5];
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct ehci_iso_stream;
+
+struct ehci_itd {
+	__le32 hw_next;
+	__le32 hw_transaction[8];
+	__le32 hw_bufp[7];
+	__le32 hw_bufp_hi[7];
+	dma_addr_t itd_dma;
+	union ehci_shadow itd_next;
+	struct urb *urb;
+	struct ehci_iso_stream *stream;
+	struct list_head itd_list;
+	unsigned int frame;
+	unsigned int pg;
+	unsigned int index[8];
+	long: 64;
+};
+
+struct ehci_iso_stream {
+	struct ehci_qh_hw *hw;
+	u8 bEndpointAddress;
+	u8 highspeed;
+	struct list_head td_list;
+	struct list_head free_list;
+	struct ehci_per_sched ps;
+	unsigned int next_uframe;
+	__le32 splits;
+	u16 uperiod;
+	u16 maxp;
+	unsigned int bandwidth;
+	__le32 buf0;
+	__le32 buf1;
+	__le32 buf2;
+	__le32 address;
+};
+
+struct ehci_sitd {
+	__le32 hw_next;
+	__le32 hw_fullspeed_ep;
+	__le32 hw_uframe;
+	__le32 hw_results;
+	__le32 hw_buf[2];
+	__le32 hw_backpointer;
+	__le32 hw_buf_hi[2];
+	dma_addr_t sitd_dma;
+	union ehci_shadow sitd_next;
+	struct urb *urb;
+	struct ehci_iso_stream *stream;
+	struct list_head sitd_list;
+	unsigned int frame;
+	unsigned int index;
+};
+
+struct ehci_fstn {
+	__le32 hw_next;
+	__le32 hw_prev;
+	dma_addr_t fstn_dma;
+	union ehci_shadow fstn_next;
+	long: 64;
+};
+
+struct ehci_qtd {
+	__le32 hw_next;
+	__le32 hw_alt_next;
+	__le32 hw_token;
+	__le32 hw_buf[5];
+	__le32 hw_buf_hi[5];
+	dma_addr_t qtd_dma;
+	struct list_head qtd_list;
+	struct urb *urb;
+	size_t length;
+};
+
+struct ehci_tt {
+	u16 bandwidth[8];
+	struct list_head tt_list;
+	struct list_head ps_list;
+	struct usb_tt *usb_tt;
+	int tt_port;
+};
+
+struct ehci_iso_packet {
+	u64 bufp;
+	__le32 transaction;
+	u8 cross;
+	u32 buf1;
+};
+
+struct ehci_iso_sched {
+	struct list_head td_list;
+	unsigned int span;
+	unsigned int first_packet;
+	struct ehci_iso_packet packet[0];
+};
+
+struct ehci_driver_overrides {
+	size_t extra_priv_size;
+	int (*reset)(struct usb_hcd *);
+	int (*port_power)(struct usb_hcd *, int, bool);
+};
+
+struct usb_ehci_pdata {
+	int caps_offset;
+	unsigned int has_tt: 1;
+	unsigned int has_synopsys_hc_bug: 1;
+	unsigned int big_endian_desc: 1;
+	unsigned int big_endian_mmio: 1;
+	unsigned int no_io_watchdog: 1;
+	unsigned int reset_on_resume: 1;
+	unsigned int dma_mask_64: 1;
+	unsigned int spurious_oc: 1;
+	int (*power_on)(struct platform_device *);
+	void (*power_off)(struct platform_device *);
+	void (*power_suspend)(struct platform_device *);
+	int (*pre_setup)(struct usb_hcd *);
+};
+
+struct ehci_platform_priv {
+	struct clk *clks[4];
+	struct reset_control *rsts;
+	bool reset_on_resume;
+	bool quirk_poll;
+	struct timer_list poll_timer;
+	struct delayed_work poll_work;
+};
+
+enum xhci_ring_type {
+	TYPE_CTRL = 0,
+	TYPE_ISOC = 1,
+	TYPE_BULK = 2,
+	TYPE_INTR = 3,
+	TYPE_STREAM = 4,
+	TYPE_COMMAND = 5,
+	TYPE_EVENT = 6,
+};
+
+enum xhci_overhead_type {
+	LS_OVERHEAD_TYPE = 0,
+	FS_OVERHEAD_TYPE = 1,
+	HS_OVERHEAD_TYPE = 2,
+};
+
+enum xhci_cancelled_td_status {
+	TD_DIRTY = 0,
+	TD_HALTED = 1,
+	TD_CLEARING_CACHE = 2,
+	TD_CLEARED = 3,
+};
+
+enum xhci_setup_dev {
+	SETUP_CONTEXT_ONLY = 0,
+	SETUP_CONTEXT_ADDRESS = 1,
+};
+
+struct s3_save {
+	u32 command;
+	u32 dev_nt;
+	u64 dcbaa_ptr;
+	u32 config_reg;
+};
+
+struct xhci_bus_state {
+	unsigned long bus_suspended;
+	unsigned long next_statechange;
+	u32 port_c_suspend;
+	u32 suspended_ports;
+	u32 port_remote_wakeup;
+	unsigned long resuming_ports;
+};
+
+struct xhci_port;
+
+struct xhci_hub {
+	struct xhci_port **ports;
+	unsigned int num_ports;
+	struct usb_hcd *hcd;
+	struct xhci_bus_state bus_state;
+	u8 maj_rev;
+	u8 min_rev;
+};
+
+struct xhci_cap_regs;
+
+struct xhci_op_regs;
+
+struct xhci_run_regs;
+
+struct xhci_doorbell_array;
+
+struct xhci_device_context_array;
+
+struct xhci_interrupter;
+
+struct xhci_ring;
+
+struct xhci_command;
+
+struct xhci_scratchpad;
+
+struct xhci_virt_device;
+
+struct xhci_root_port_bw_info;
+
+struct xhci_port_cap;
+
+struct xhci_hcd {
+	struct usb_hcd *main_hcd;
+	struct usb_hcd *shared_hcd;
+	struct xhci_cap_regs *cap_regs;
+	struct xhci_op_regs *op_regs;
+	struct xhci_run_regs *run_regs;
+	struct xhci_doorbell_array *dba;
+	__u32 hcs_params1;
+	__u32 hcs_params2;
+	__u32 hcs_params3;
+	__u32 hcc_params;
+	__u32 hcc_params2;
+	spinlock_t lock;
+	u8 sbrn;
+	u16 hci_version;
+	u8 max_slots;
+	u16 max_interrupters;
+	u8 max_ports;
+	u8 isoc_threshold;
+	u32 imod_interval;
+	int event_ring_max;
+	int page_size;
+	int page_shift;
+	int msix_count;
+	struct clk *clk;
+	struct clk *reg_clk;
+	struct reset_control *reset;
+	struct xhci_device_context_array *dcbaa;
+	struct xhci_interrupter **interrupters;
+	struct xhci_ring *cmd_ring;
+	unsigned int cmd_ring_state;
+	struct list_head cmd_list;
+	unsigned int cmd_ring_reserved_trbs;
+	struct delayed_work cmd_timer;
+	struct completion cmd_ring_stop_completion;
+	struct xhci_command *current_cmd;
+	struct xhci_scratchpad *scratchpad;
+	struct mutex mutex;
+	struct xhci_virt_device *devs[256];
+	struct xhci_root_port_bw_info *rh_bw;
+	struct dma_pool *device_pool;
+	struct dma_pool *segment_pool;
+	struct dma_pool *small_streams_pool;
+	struct dma_pool *medium_streams_pool;
+	unsigned int xhc_state;
+	unsigned long run_graceperiod;
+	struct s3_save s3;
+	unsigned long long quirks;
+	unsigned int num_active_eps;
+	unsigned int limit_active_eps;
+	struct xhci_port *hw_ports;
+	struct xhci_hub usb2_rhub;
+	struct xhci_hub usb3_rhub;
+	unsigned int hw_lpm_support: 1;
+	unsigned int broken_suspend: 1;
+	unsigned int allow_single_roothub: 1;
+	u32 *ext_caps;
+	unsigned int num_ext_caps;
+	struct xhci_port_cap *port_caps;
+	unsigned int num_port_caps;
+	struct timer_list comp_mode_recovery_timer;
+	u32 port_status_u0;
+	u16 test_mode;
+	struct dentry *debugfs_root;
+	struct dentry *debugfs_slots;
+	struct list_head regset_list;
+	void *dbc;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+	unsigned long priv[0];
+};
+
+struct xhci_cap_regs {
+	__le32 hc_capbase;
+	__le32 hcs_params1;
+	__le32 hcs_params2;
+	__le32 hcs_params3;
+	__le32 hcc_params;
+	__le32 db_off;
+	__le32 run_regs_off;
+	__le32 hcc_params2;
+};
+
+struct xhci_op_regs {
+	__le32 command;
+	__le32 status;
+	__le32 page_size;
+	__le32 reserved1;
+	__le32 reserved2;
+	__le32 dev_notification;
+	__le64 cmd_ring;
+	__le32 reserved3[4];
+	__le64 dcbaa_ptr;
+	__le32 config_reg;
+	__le32 reserved4[241];
+	__le32 port_status_base;
+	__le32 port_power_base;
+	__le32 port_link_base;
+	__le32 reserved5;
+	__le32 reserved6[1016];
+};
+
+struct xhci_intr_reg {
+	__le32 irq_pending;
+	__le32 irq_control;
+	__le32 erst_size;
+	__le32 rsvd;
+	__le64 erst_base;
+	__le64 erst_dequeue;
+};
+
+struct xhci_run_regs {
+	__le32 microframe_index;
+	__le32 rsvd[7];
+	struct xhci_intr_reg ir_set[128];
+};
+
+struct xhci_doorbell_array {
+	__le32 doorbell[256];
+};
+
+struct xhci_device_context_array {
+	__le64 dev_context_ptrs[256];
+	dma_addr_t dma;
+};
+
+struct xhci_erst_entry;
+
+struct xhci_erst {
+	struct xhci_erst_entry *entries;
+	unsigned int num_entries;
+	dma_addr_t erst_dma_addr;
+	unsigned int erst_size;
+	u64 android_kabi_reserved1;
+};
+
+struct xhci_interrupter {
+	struct xhci_ring *event_ring;
+	struct xhci_erst erst;
+	struct xhci_intr_reg *ir_set;
+	unsigned int intr_num;
+	bool ip_autoclear;
+	bool skip_events;
+	u32 isoc_bei_interval;
+	u32 s3_irq_pending;
+	u32 s3_irq_control;
+	u32 s3_erst_size;
+	u64 s3_erst_base;
+	u64 s3_erst_dequeue;
+};
+
+struct xhci_segment;
+
+union xhci_trb;
+
+struct xhci_ring {
+	struct xhci_segment *first_seg;
+	struct xhci_segment *last_seg;
+	union xhci_trb *enqueue;
+	struct xhci_segment *enq_seg;
+	union xhci_trb *dequeue;
+	struct xhci_segment *deq_seg;
+	struct list_head td_list;
+	u32 cycle_state;
+	unsigned int stream_id;
+	unsigned int num_segs;
+	unsigned int num_trbs_free;
+	unsigned int bounce_buf_len;
+	enum xhci_ring_type type;
+	bool last_td_was_short;
+	struct xarray *trb_address_map;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct xhci_segment {
+	union xhci_trb *trbs;
+	struct xhci_segment *next;
+	unsigned int num;
+	dma_addr_t dma;
+	dma_addr_t bounce_dma;
+	void *bounce_buf;
+	unsigned int bounce_offs;
+	unsigned int bounce_len;
+	u64 android_kabi_reserved1;
+};
+
+struct xhci_link_trb {
+	__le64 segment_ptr;
+	__le32 intr_target;
+	__le32 control;
+};
+
+struct xhci_transfer_event {
+	__le64 buffer;
+	__le32 transfer_len;
+	__le32 flags;
+};
+
+struct xhci_event_cmd {
+	__le64 cmd_trb;
+	__le32 status;
+	__le32 flags;
+};
+
+struct xhci_generic_trb {
+	__le32 field[4];
+};
+
+union xhci_trb {
+	struct xhci_link_trb link;
+	struct xhci_transfer_event trans_event;
+	struct xhci_event_cmd event_cmd;
+	struct xhci_generic_trb generic;
+};
+
+struct xhci_erst_entry {
+	__le64 seg_addr;
+	__le32 seg_size;
+	__le32 rsvd;
+};
+
+struct xhci_container_ctx;
+
+struct xhci_command {
+	struct xhci_container_ctx *in_ctx;
+	u32 status;
+	int slot_id;
+	struct completion *completion;
+	union xhci_trb *command_trb;
+	struct list_head cmd_list;
+	unsigned int timeout_ms;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct xhci_container_ctx {
+	unsigned int type;
+	int size;
+	u8 *bytes;
+	dma_addr_t dma;
+};
+
+struct xhci_scratchpad {
+	u64 *sp_array;
+	dma_addr_t sp_dma;
+	void **sp_buffers;
+};
+
+struct xhci_bw_info {
+	unsigned int ep_interval;
+	unsigned int mult;
+	unsigned int num_packets;
+	unsigned int max_packet_size;
+	unsigned int max_esit_payload;
+	unsigned int type;
+};
+
+struct xhci_sideband;
+
+struct xhci_stream_info;
+
+struct xhci_virt_ep {
+	struct xhci_virt_device *vdev;
+	unsigned int ep_index;
+	struct xhci_ring *ring;
+	struct xhci_stream_info *stream_info;
+	struct xhci_ring *new_ring;
+	unsigned int err_count;
+	unsigned int ep_state;
+	struct list_head cancelled_td_list;
+	struct xhci_hcd *xhci;
+	struct xhci_segment *queued_deq_seg;
+	union xhci_trb *queued_deq_ptr;
+	bool skip;
+	struct xhci_bw_info bw_info;
+	struct list_head bw_endpoint_list;
+	int next_frame_id;
+	bool use_extended_tbc;
+	struct xhci_sideband *sideband;
+};
+
+struct xhci_interval_bw_table;
+
+struct xhci_tt_bw_info;
+
+struct xhci_virt_device {
+	int slot_id;
+	struct usb_device *udev;
+	struct xhci_container_ctx *out_ctx;
+	struct xhci_container_ctx *in_ctx;
+	struct xhci_virt_ep eps[31];
+	u8 fake_port;
+	u8 real_port;
+	struct xhci_interval_bw_table *bw_table;
+	struct xhci_tt_bw_info *tt_info;
+	unsigned long flags;
+	u16 current_mel;
+	void *debugfs_private;
+	struct xhci_sideband *sideband;
+};
+
+struct xhci_stream_ctx;
+
+struct xhci_stream_info {
+	struct xhci_ring **stream_rings;
+	unsigned int num_streams;
+	struct xhci_stream_ctx *stream_ctx_array;
+	unsigned int num_stream_ctxs;
+	dma_addr_t ctx_array_dma;
+	struct xarray trb_address_map;
+	struct xhci_command *free_streams_command;
+};
+
+struct xhci_stream_ctx {
+	__le64 stream_ring;
+	__le32 reserved[2];
+};
+
+struct xhci_interval_bw {
+	unsigned int num_packets;
+	struct list_head endpoints;
+	unsigned int overhead[3];
+};
+
+struct xhci_interval_bw_table {
+	unsigned int interval0_esit_payload;
+	struct xhci_interval_bw interval_bw[16];
+	unsigned int bw_used;
+	unsigned int ss_bw_in;
+	unsigned int ss_bw_out;
+};
+
+struct xhci_tt_bw_info {
+	struct list_head tt_list;
+	int slot_id;
+	int ttport;
+	struct xhci_interval_bw_table bw_table;
+	int active_eps;
+};
+
+struct xhci_root_port_bw_info {
+	struct list_head tts;
+	unsigned int num_active_tts;
+	struct xhci_interval_bw_table bw_table;
+};
+
+struct xhci_port {
+	__le32 *addr;
+	int hw_portnum;
+	int hcd_portnum;
+	struct xhci_hub *rhub;
+	struct xhci_port_cap *port_cap;
+	unsigned int lpm_incapable: 1;
+	unsigned long resume_timestamp;
+	bool rexit_active;
+	struct completion rexit_done;
+	struct completion u3exit_done;
+};
+
+struct xhci_port_cap {
+	u32 *psi;
+	u8 psi_count;
+	u8 psi_uid_count;
+	u8 maj_rev;
+	u8 min_rev;
+};
+
+struct xhci_input_control_ctx {
+	__le32 drop_flags;
+	__le32 add_flags;
+	__le32 rsvd2[6];
+};
+
+struct xhci_ep_ctx {
+	__le32 ep_info;
+	__le32 ep_info2;
+	__le64 deq;
+	__le32 tx_info;
+	__le32 reserved[3];
+};
+
+struct xhci_slot_ctx {
+	__le32 dev_info;
+	__le32 dev_info2;
+	__le32 tt_info;
+	__le32 dev_state;
+	__le32 reserved[4];
+};
+
+struct xhci_td {
+	struct list_head td_list;
+	struct list_head cancelled_td_list;
+	int status;
+	enum xhci_cancelled_td_status cancel_status;
+	struct urb *urb;
+	struct xhci_segment *start_seg;
+	union xhci_trb *first_trb;
+	union xhci_trb *last_trb;
+	struct xhci_segment *last_trb_seg;
+	struct xhci_segment *bounce_seg;
+	bool urb_length_set;
+	bool error_mid_td;
+	unsigned int num_trbs;
+};
+
+struct urb_priv {
+	int num_tds;
+	int num_tds_done;
+	struct xhci_td td[0];
+};
+
+typedef void (*xhci_get_quirks_t)(struct device *, struct xhci_hcd *);
+
+struct xhci_driver_overrides {
+	size_t extra_priv_size;
+	int (*reset)(struct usb_hcd *);
+	int (*start)(struct usb_hcd *);
+	int (*add_endpoint)(struct usb_hcd *, struct usb_device *, struct usb_host_endpoint *);
+	int (*drop_endpoint)(struct usb_hcd *, struct usb_device *, struct usb_host_endpoint *);
+	int (*check_bandwidth)(struct usb_hcd *, struct usb_device *);
+	void (*reset_bandwidth)(struct usb_hcd *, struct usb_device *);
+	int (*update_hub_device)(struct usb_hcd *, struct usb_device *, struct usb_tt *, gfp_t);
+	int (*hub_control)(struct usb_hcd *, u16, u16, u16, char *, u16);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+enum xhci_ep_reset_type {
+	EP_HARD_RESET = 0,
+	EP_SOFT_RESET = 1,
+};
+
+typedef void (*btf_trace_xhci_dbg_address)(void *, struct va_format *);
+
+typedef void (*btf_trace_xhci_dbg_context_change)(void *, struct va_format *);
+
+typedef void (*btf_trace_xhci_dbg_quirks)(void *, struct va_format *);
+
+typedef void (*btf_trace_xhci_dbg_reset_ep)(void *, struct va_format *);
+
+typedef void (*btf_trace_xhci_dbg_cancel_urb)(void *, struct va_format *);
+
+typedef void (*btf_trace_xhci_dbg_init)(void *, struct va_format *);
+
+typedef void (*btf_trace_xhci_dbg_ring_expansion)(void *, struct va_format *);
+
+typedef void (*btf_trace_xhci_address_ctx)(void *, struct xhci_hcd *, struct xhci_container_ctx *, unsigned int);
+
+typedef void (*btf_trace_xhci_handle_event)(void *, struct xhci_ring *, struct xhci_generic_trb *);
+
+typedef void (*btf_trace_xhci_handle_command)(void *, struct xhci_ring *, struct xhci_generic_trb *);
+
+typedef void (*btf_trace_xhci_handle_transfer)(void *, struct xhci_ring *, struct xhci_generic_trb *);
+
+typedef void (*btf_trace_xhci_queue_trb)(void *, struct xhci_ring *, struct xhci_generic_trb *);
+
+typedef void (*btf_trace_xhci_dbc_handle_event)(void *, struct xhci_ring *, struct xhci_generic_trb *);
+
+typedef void (*btf_trace_xhci_dbc_handle_transfer)(void *, struct xhci_ring *, struct xhci_generic_trb *);
+
+typedef void (*btf_trace_xhci_dbc_gadget_ep_queue)(void *, struct xhci_ring *, struct xhci_generic_trb *);
+
+typedef void (*btf_trace_xhci_free_virt_device)(void *, struct xhci_virt_device *);
+
+typedef void (*btf_trace_xhci_alloc_virt_device)(void *, struct xhci_virt_device *);
+
+typedef void (*btf_trace_xhci_setup_device)(void *, struct xhci_virt_device *);
+
+typedef void (*btf_trace_xhci_setup_addressable_virt_device)(void *, struct xhci_virt_device *);
+
+typedef void (*btf_trace_xhci_stop_device)(void *, struct xhci_virt_device *);
+
+typedef void (*btf_trace_xhci_urb_enqueue)(void *, struct urb *);
+
+typedef void (*btf_trace_xhci_urb_giveback)(void *, struct urb *);
+
+typedef void (*btf_trace_xhci_urb_dequeue)(void *, struct urb *);
+
+typedef void (*btf_trace_xhci_handle_cmd_stop_ep)(void *, struct xhci_ep_ctx *);
+
+typedef void (*btf_trace_xhci_handle_cmd_set_deq_ep)(void *, struct xhci_ep_ctx *);
+
+typedef void (*btf_trace_xhci_handle_cmd_reset_ep)(void *, struct xhci_ep_ctx *);
+
+typedef void (*btf_trace_xhci_handle_cmd_config_ep)(void *, struct xhci_ep_ctx *);
+
+typedef void (*btf_trace_xhci_add_endpoint)(void *, struct xhci_ep_ctx *);
+
+typedef void (*btf_trace_xhci_alloc_dev)(void *, struct xhci_slot_ctx *);
+
+typedef void (*btf_trace_xhci_free_dev)(void *, struct xhci_slot_ctx *);
+
+typedef void (*btf_trace_xhci_handle_cmd_disable_slot)(void *, struct xhci_slot_ctx *);
+
+typedef void (*btf_trace_xhci_discover_or_reset_device)(void *, struct xhci_slot_ctx *);
+
+typedef void (*btf_trace_xhci_setup_device_slot)(void *, struct xhci_slot_ctx *);
+
+typedef void (*btf_trace_xhci_handle_cmd_addr_dev)(void *, struct xhci_slot_ctx *);
+
+typedef void (*btf_trace_xhci_handle_cmd_reset_dev)(void *, struct xhci_slot_ctx *);
+
+typedef void (*btf_trace_xhci_handle_cmd_set_deq)(void *, struct xhci_slot_ctx *);
+
+typedef void (*btf_trace_xhci_configure_endpoint)(void *, struct xhci_slot_ctx *);
+
+typedef void (*btf_trace_xhci_address_ctrl_ctx)(void *, struct xhci_input_control_ctx *);
+
+typedef void (*btf_trace_xhci_configure_endpoint_ctrl_ctx)(void *, struct xhci_input_control_ctx *);
+
+typedef void (*btf_trace_xhci_ring_alloc)(void *, struct xhci_ring *);
+
+typedef void (*btf_trace_xhci_ring_free)(void *, struct xhci_ring *);
+
+typedef void (*btf_trace_xhci_ring_expansion)(void *, struct xhci_ring *);
+
+typedef void (*btf_trace_xhci_inc_enq)(void *, struct xhci_ring *);
+
+typedef void (*btf_trace_xhci_inc_deq)(void *, struct xhci_ring *);
+
+typedef void (*btf_trace_xhci_handle_port_status)(void *, u32, u32);
+
+typedef void (*btf_trace_xhci_get_port_status)(void *, u32, u32);
+
+typedef void (*btf_trace_xhci_hub_status_data)(void *, u32, u32);
+
+typedef void (*btf_trace_xhci_ring_ep_doorbell)(void *, u32, u32);
+
+typedef void (*btf_trace_xhci_ring_host_doorbell)(void *, u32, u32);
+
+struct dbc_request;
+
+typedef void (*btf_trace_xhci_dbc_alloc_request)(void *, struct dbc_request *);
+
+struct xhci_dbc;
+
+struct dbc_request {
+	void *buf;
+	unsigned int length;
+	dma_addr_t dma;
+	void (*complete)(struct xhci_dbc *, struct dbc_request *);
+	struct list_head list_pool;
+	int status;
+	unsigned int actual;
+	struct xhci_dbc *dbc;
+	struct list_head list_pending;
+	dma_addr_t trb_dma;
+	union xhci_trb *trb;
+	unsigned int direction: 1;
+};
+
+enum dbc_state {
+	DS_DISABLED = 0,
+	DS_INITIALIZED = 1,
+	DS_ENABLED = 2,
+	DS_CONNECTED = 3,
+	DS_CONFIGURED = 4,
+	DS_STALLED = 5,
+};
+
+struct dbc_ep {
+	struct xhci_dbc *dbc;
+	struct list_head list_pending;
+	struct xhci_ring *ring;
+	unsigned int direction: 1;
+};
+
+struct dbc_regs;
+
+struct dbc_str_descs;
+
+struct dbc_driver;
+
+struct xhci_dbc {
+	spinlock_t lock;
+	struct device *dev;
+	struct xhci_hcd *xhci;
+	struct dbc_regs *regs;
+	struct xhci_ring *ring_evt;
+	struct xhci_ring *ring_in;
+	struct xhci_ring *ring_out;
+	struct xhci_erst erst;
+	struct xhci_container_ctx *ctx;
+	struct dbc_str_descs *string;
+	dma_addr_t string_dma;
+	size_t string_size;
+	u16 idVendor;
+	u16 idProduct;
+	u16 bcdDevice;
+	u8 bInterfaceProtocol;
+	enum dbc_state state;
+	struct delayed_work event_work;
+	unsigned int resume_required: 1;
+	struct dbc_ep eps[2];
+	const struct dbc_driver *driver;
+	void *priv;
+};
+
+struct dbc_regs {
+	__le32 capability;
+	__le32 doorbell;
+	__le32 ersts;
+	__le32 __reserved_0;
+	__le64 erstba;
+	__le64 erdp;
+	__le32 control;
+	__le32 status;
+	__le32 portsc;
+	__le32 __reserved_1;
+	__le64 dccp;
+	__le32 devinfo1;
+	__le32 devinfo2;
+};
+
+struct dbc_str_descs {
+	char string0[64];
+	char manufacturer[64];
+	char product[64];
+	char serial[64];
+};
+
+struct dbc_driver {
+	int (*configure)(struct xhci_dbc *);
+	void (*disconnect)(struct xhci_dbc *);
+};
+
+typedef void (*btf_trace_xhci_dbc_free_request)(void *, struct dbc_request *);
+
+typedef void (*btf_trace_xhci_dbc_queue_request)(void *, struct dbc_request *);
+
+typedef void (*btf_trace_xhci_dbc_giveback_request)(void *, struct dbc_request *);
+
+struct trace_event_raw_xhci_log_msg {
+	struct trace_entry ent;
+	u32 __data_loc_msg;
+	char __data[0];
+};
+
+struct trace_event_raw_xhci_log_ctx {
+	struct trace_entry ent;
+	int ctx_64;
+	unsigned int ctx_type;
+	dma_addr_t ctx_dma;
+	u8 *ctx_va;
+	unsigned int ctx_ep_num;
+	u32 __data_loc_ctx_data;
+	char __data[0];
+};
+
+struct trace_event_raw_xhci_log_trb {
+	struct trace_entry ent;
+	u32 type;
+	u32 field0;
+	u32 field1;
+	u32 field2;
+	u32 field3;
+	char __data[0];
+};
+
+struct trace_event_raw_xhci_log_free_virt_dev {
+	struct trace_entry ent;
+	void *vdev;
+	unsigned long long out_ctx;
+	unsigned long long in_ctx;
+	u8 fake_port;
+	u8 real_port;
+	u16 current_mel;
+	char __data[0];
+};
+
+struct trace_event_raw_xhci_log_virt_dev {
+	struct trace_entry ent;
+	void *vdev;
+	unsigned long long out_ctx;
+	unsigned long long in_ctx;
+	int devnum;
+	int state;
+	int speed;
+	u8 portnum;
+	u8 level;
+	int slot_id;
+	char __data[0];
+};
+
+struct trace_event_raw_xhci_log_urb {
+	struct trace_entry ent;
+	void *urb;
+	unsigned int pipe;
+	unsigned int stream;
+	int status;
+	unsigned int flags;
+	int num_mapped_sgs;
+	int num_sgs;
+	int length;
+	int actual;
+	int epnum;
+	int dir_in;
+	int type;
+	int slot_id;
+	char __data[0];
+};
+
+struct trace_event_raw_xhci_log_ep_ctx {
+	struct trace_entry ent;
+	u32 info;
+	u32 info2;
+	u64 deq;
+	u32 tx_info;
+	char __data[0];
+};
+
+struct trace_event_raw_xhci_log_slot_ctx {
+	struct trace_entry ent;
+	u32 info;
+	u32 info2;
+	u32 tt_info;
+	u32 state;
+	char __data[0];
+};
+
+struct trace_event_raw_xhci_log_ctrl_ctx {
+	struct trace_entry ent;
+	u32 drop;
+	u32 add;
+	char __data[0];
+};
+
+struct trace_event_raw_xhci_log_ring {
+	struct trace_entry ent;
+	u32 type;
+	void *ring;
+	dma_addr_t enq;
+	dma_addr_t deq;
+	dma_addr_t enq_seg;
+	dma_addr_t deq_seg;
+	unsigned int num_segs;
+	unsigned int stream_id;
+	unsigned int cycle_state;
+	unsigned int bounce_buf_len;
+	char __data[0];
+};
+
+struct trace_event_raw_xhci_log_portsc {
+	struct trace_entry ent;
+	u32 portnum;
+	u32 portsc;
+	char __data[0];
+};
+
+struct trace_event_raw_xhci_log_doorbell {
+	struct trace_entry ent;
+	u32 slot;
+	u32 doorbell;
+	char __data[0];
+};
+
+struct trace_event_raw_xhci_dbc_log_request {
+	struct trace_entry ent;
+	struct dbc_request *req;
+	bool dir;
+	unsigned int actual;
+	unsigned int length;
+	int status;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_xhci_log_msg {
+	u32 msg;
+};
+
+struct trace_event_data_offsets_xhci_log_ctx {
+	u32 ctx_data;
+};
+
+struct trace_event_data_offsets_xhci_log_trb {};
+
+struct trace_event_data_offsets_xhci_log_free_virt_dev {};
+
+struct trace_event_data_offsets_xhci_log_virt_dev {};
+
+struct trace_event_data_offsets_xhci_log_urb {};
+
+struct trace_event_data_offsets_xhci_log_ep_ctx {};
+
+struct trace_event_data_offsets_xhci_log_slot_ctx {};
+
+struct trace_event_data_offsets_xhci_log_ctrl_ctx {};
+
+struct trace_event_data_offsets_xhci_log_ring {};
+
+struct trace_event_data_offsets_xhci_log_portsc {};
+
+struct trace_event_data_offsets_xhci_log_doorbell {};
+
+struct trace_event_data_offsets_xhci_dbc_log_request {};
+
+struct xhci_file_map {
+	const char *name;
+	int (*show)(struct seq_file *, void *);
+};
+
+struct xhci_regset {
+	char name[32];
+	struct debugfs_regset32 regset;
+	size_t nregs;
+	struct list_head list;
+};
+
+struct xhci_ep_priv;
+
+struct xhci_slot_priv {
+	char name[32];
+	struct dentry *root;
+	struct xhci_ep_priv *eps[31];
+	struct xhci_virt_device *dev;
+};
+
+struct xhci_ep_priv {
+	char name[32];
+	struct dentry *root;
+	struct xhci_stream_info *stream_info;
+	struct xhci_ring *show_ring;
+	unsigned int stream_id;
+};
+
+struct xhci_driver_data {
+	u64 quirks;
+	const char *firmware;
+};
+
+struct xhci_plat_priv {
+	const char *firmware_name;
+	unsigned long long quirks;
+	void (*plat_start)(struct usb_hcd *);
+	int (*init_quirk)(struct usb_hcd *);
+	int (*suspend_quirk)(struct usb_hcd *);
+	int (*resume_quirk)(struct usb_hcd *);
+};
+
+enum {
+	US_FL_SINGLE_LUN = 1,
+	US_FL_NEED_OVERRIDE = 2,
+	US_FL_SCM_MULT_TARG = 4,
+	US_FL_FIX_INQUIRY = 8,
+	US_FL_FIX_CAPACITY = 16,
+	US_FL_IGNORE_RESIDUE = 32,
+	US_FL_BULK32 = 64,
+	US_FL_NOT_LOCKABLE = 128,
+	US_FL_GO_SLOW = 256,
+	US_FL_NO_WP_DETECT = 512,
+	US_FL_MAX_SECTORS_64 = 1024,
+	US_FL_IGNORE_DEVICE = 2048,
+	US_FL_CAPACITY_HEURISTICS = 4096,
+	US_FL_MAX_SECTORS_MIN = 8192,
+	US_FL_BULK_IGNORE_TAG = 16384,
+	US_FL_SANE_SENSE = 32768,
+	US_FL_CAPACITY_OK = 65536,
+	US_FL_BAD_SENSE = 131072,
+	US_FL_NO_READ_DISC_INFO = 262144,
+	US_FL_NO_READ_CAPACITY_16 = 524288,
+	US_FL_INITIAL_READ10 = 1048576,
+	US_FL_WRITE_CACHE = 2097152,
+	US_FL_NEEDS_CAP16 = 4194304,
+	US_FL_IGNORE_UAS = 8388608,
+	US_FL_BROKEN_FUA = 16777216,
+	US_FL_NO_ATA_1X = 33554432,
+	US_FL_NO_REPORT_OPCODES = 67108864,
+	US_FL_MAX_SECTORS_240 = 134217728,
+	US_FL_NO_REPORT_LUNS = 268435456,
+	US_FL_ALWAYS_SYNC = 536870912,
+	US_FL_NO_SAME = 1073741824,
+	US_FL_SENSE_AFTER_SYNC = 2147483648,
+};
+
+enum {
+	SUBMIT_STATUS_URB = 2,
+	ALLOC_DATA_IN_URB = 4,
+	SUBMIT_DATA_IN_URB = 8,
+	ALLOC_DATA_OUT_URB = 16,
+	SUBMIT_DATA_OUT_URB = 32,
+	ALLOC_CMD_URB = 64,
+	SUBMIT_CMD_URB = 128,
+	COMMAND_INFLIGHT = 256,
+	DATA_IN_URB_INFLIGHT = 512,
+	DATA_OUT_URB_INFLIGHT = 1024,
+	COMMAND_ABORTED = 2048,
+	IS_IN_WORK_LIST = 4096,
+};
+
+enum {
+	IU_ID_COMMAND = 1,
+	IU_ID_STATUS = 3,
+	IU_ID_RESPONSE = 4,
+	IU_ID_TASK_MGMT = 5,
+	IU_ID_READ_READY = 6,
+	IU_ID_WRITE_READY = 7,
+};
+
+enum {
+	RC_TMF_COMPLETE = 0,
+	RC_INVALID_INFO_UNIT = 2,
+	RC_TMF_NOT_SUPPORTED = 4,
+	RC_TMF_FAILED = 5,
+	RC_TMF_SUCCEEDED = 8,
+	RC_INCORRECT_LUN = 9,
+	RC_OVERLAPPED_TAG = 10,
+};
+
+enum {
+	CMD_PIPE_ID = 1,
+	STATUS_PIPE_ID = 2,
+	DATA_IN_PIPE_ID = 3,
+	DATA_OUT_PIPE_ID = 4,
+	UAS_SIMPLE_TAG = 0,
+	UAS_HEAD_TAG = 1,
+	UAS_ORDERED_TAG = 2,
+	UAS_ACA = 4,
+};
+
+struct uas_dev_info {
+	struct usb_interface *intf;
+	struct usb_device *udev;
+	struct usb_anchor cmd_urbs;
+	struct usb_anchor sense_urbs;
+	struct usb_anchor data_urbs;
+	unsigned long flags;
+	int qdepth;
+	int resetting;
+	unsigned int cmd_pipe;
+	unsigned int status_pipe;
+	unsigned int data_in_pipe;
+	unsigned int data_out_pipe;
+	unsigned int use_streams: 1;
+	unsigned int shutdown: 1;
+	struct scsi_cmnd *cmnd[256];
+	spinlock_t lock;
+	struct work_struct work;
+	struct work_struct scan_work;
+};
+
+struct response_iu {
+	__u8 iu_id;
+	__u8 rsvd1;
+	__be16 tag;
+	__u8 add_response_info[3];
+	__u8 response_code;
+};
+
+struct uas_cmd_info {
+	unsigned int state;
+	unsigned int uas_tag;
+	struct urb *cmd_urb;
+	struct urb *data_in_urb;
+	struct urb *data_out_urb;
+};
+
+struct sense_iu {
+	__u8 iu_id;
+	__u8 rsvd1;
+	__be16 tag;
+	__be16 status_qual;
+	__u8 status;
+	__u8 rsvd7[7];
+	__be16 len;
+	__u8 sense[96];
+};
+
+struct command_iu {
+	__u8 iu_id;
+	__u8 rsvd1;
+	__be16 tag;
+	__u8 prio_attr;
+	__u8 rsvd5;
+	__u8 len;
+	__u8 rsvd7;
+	struct scsi_lun lun;
+	__u8 cdb[16];
+};
+
+struct iu {
+	__u8 iu_id;
+	__u8 rsvd1;
+	__be16 tag;
+};
+
+struct us_data;
+
+typedef int (*trans_cmnd)(struct scsi_cmnd *, struct us_data *);
+
+typedef int (*trans_reset)(struct us_data *);
+
+typedef void (*proto_cmnd)(struct scsi_cmnd *, struct us_data *);
+
+typedef void (*extra_data_destructor)(void *);
+
+typedef void (*pm_hook)(struct us_data *, int);
+
+struct us_unusual_dev;
+
+struct us_data {
+	struct mutex dev_mutex;
+	struct usb_device *pusb_dev;
+	struct usb_interface *pusb_intf;
+	const struct us_unusual_dev *unusual_dev;
+	unsigned long fflags;
+	unsigned long dflags;
+	unsigned int send_bulk_pipe;
+	unsigned int recv_bulk_pipe;
+	unsigned int send_ctrl_pipe;
+	unsigned int recv_ctrl_pipe;
+	unsigned int recv_intr_pipe;
+	char *transport_name;
+	char *protocol_name;
+	__le32 bcs_signature;
+	u8 subclass;
+	u8 protocol;
+	u8 max_lun;
+	u8 ifnum;
+	u8 ep_bInterval;
+	trans_cmnd transport;
+	trans_reset transport_reset;
+	proto_cmnd proto_handler;
+	struct scsi_cmnd *srb;
+	unsigned int tag;
+	char scsi_name[32];
+	struct urb *current_urb;
+	struct usb_ctrlrequest *cr;
+	struct usb_sg_request current_sg;
+	unsigned char *iobuf;
+	dma_addr_t iobuf_dma;
+	struct task_struct *ctl_thread;
+	struct completion cmnd_ready;
+	struct completion notify;
+	wait_queue_head_t delay_wait;
+	struct delayed_work scan_dwork;
+	void *extra;
+	extra_data_destructor extra_destructor;
+	pm_hook suspend_resume_hook;
+	int use_last_sector_hacks;
+	int last_sector_retries;
+};
+
+struct us_unusual_dev {
+	const char *vendorName;
+	const char *productName;
+	__u8 useProtocol;
+	__u8 useTransport;
+	int (*initFunction)(struct us_data *);
+};
+
+enum xfer_buf_dir {
+	TO_XFER_BUF = 0,
+	FROM_XFER_BUF = 1,
+};
+
+struct bulk_cb_wrap {
+	__le32 Signature;
+	__u32 Tag;
+	__le32 DataTransferLength;
+	__u8 Flags;
+	__u8 Lun;
+	__u8 Length;
+	__u8 CDB[16];
+};
+
+struct bulk_cs_wrap {
+	__le32 Signature;
+	__u32 Tag;
+	__le32 Residue;
+	__u8 Status;
+};
+
+struct swoc_info {
+	__u8 rev;
+	__u8 reserved[8];
+	__u16 LinuxSKU;
+	__u16 LinuxVer;
+	__u8 reserved2[47];
+} __attribute__((packed));
+
+struct ignore_entry {
+	u16 vid;
+	u16 pid;
+	u16 bcdmin;
+	u16 bcdmax;
+};
+
+struct usb_string;
+
+struct usb_gadget_strings {
+	u16 language;
+	struct usb_string *strings;
+};
+
+struct usb_string {
+	u8 id;
+	const char *s;
+};
+
+struct usb_otg20_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bmAttributes;
+	__le16 bcdOTG;
+} __attribute__((packed));
+
+struct usb_configuration;
+
+struct usb_os_desc_table;
+
+struct usb_function_instance;
+
+struct usb_function {
+	const char *name;
+	struct usb_gadget_strings **strings;
+	struct usb_descriptor_header **fs_descriptors;
+	struct usb_descriptor_header **hs_descriptors;
+	struct usb_descriptor_header **ss_descriptors;
+	struct usb_descriptor_header **ssp_descriptors;
+	struct usb_configuration *config;
+	struct usb_os_desc_table *os_desc_table;
+	unsigned int os_desc_n;
+	int (*bind)(struct usb_configuration *, struct usb_function *);
+	void (*unbind)(struct usb_configuration *, struct usb_function *);
+	void (*free_func)(struct usb_function *);
+	struct module *mod;
+	int (*set_alt)(struct usb_function *, unsigned int, unsigned int);
+	int (*get_alt)(struct usb_function *, unsigned int);
+	void (*disable)(struct usb_function *);
+	int (*setup)(struct usb_function *, const struct usb_ctrlrequest *);
+	bool (*req_match)(struct usb_function *, const struct usb_ctrlrequest *, bool);
+	void (*suspend)(struct usb_function *);
+	void (*resume)(struct usb_function *);
+	int (*get_status)(struct usb_function *);
+	int (*func_suspend)(struct usb_function *, u8);
+	bool func_suspended;
+	bool func_wakeup_armed;
+	struct list_head list;
+	unsigned long endpoints[1];
+	const struct usb_function_instance *fi;
+	unsigned int bind_deactivated: 1;
+};
+
+struct usb_composite_dev;
+
+struct usb_configuration {
+	const char *label;
+	struct usb_gadget_strings **strings;
+	const struct usb_descriptor_header **descriptors;
+	void (*unbind)(struct usb_configuration *);
+	int (*setup)(struct usb_configuration *, const struct usb_ctrlrequest *);
+	u8 bConfigurationValue;
+	u8 iConfiguration;
+	u8 bmAttributes;
+	u16 MaxPower;
+	struct usb_composite_dev *cdev;
+	struct list_head list;
+	struct list_head functions;
+	u8 next_interface_id;
+	unsigned int superspeed: 1;
+	unsigned int highspeed: 1;
+	unsigned int fullspeed: 1;
+	unsigned int superspeed_plus: 1;
+	struct usb_function *interface[16];
+};
+
+struct android_uevent_opts {
+	struct device *dev;
+	int device_id;
+	bool connected;
+	bool configured;
+	bool sw_connected;
+	struct work_struct work;
+	struct ida function_ida;
+};
+
+struct usb_composite_driver;
+
+struct usb_composite_dev {
+	struct usb_gadget *gadget;
+	struct usb_request *req;
+	struct usb_request *os_desc_req;
+	struct usb_configuration *config;
+	u8 qw_sign[14];
+	u8 b_vendor_code;
+	struct usb_configuration *os_desc_config;
+	unsigned int use_os_string: 1;
+	u16 bcd_webusb_version;
+	u8 b_webusb_vendor_code;
+	char landing_page[260];
+	unsigned int use_webusb: 1;
+	unsigned int suspended: 1;
+	struct usb_device_descriptor desc;
+	struct list_head configs;
+	struct list_head gstrings;
+	struct usb_composite_driver *driver;
+	u8 next_string_id;
+	char *def_manufacturer;
+	struct usb_string *usb_strings;
+	unsigned int deactivations;
+	int delayed_status;
+	spinlock_t lock;
+	struct android_uevent_opts android_opts;
+	unsigned int setup_pending: 1;
+	unsigned int os_desc_pending: 1;
+};
+
+struct usb_composite_driver {
+	const char *name;
+	const struct usb_device_descriptor *dev;
+	struct usb_gadget_strings **strings;
+	enum usb_device_speed max_speed;
+	unsigned int needs_serial: 1;
+	int (*bind)(struct usb_composite_dev *);
+	int (*unbind)(struct usb_composite_dev *);
+	void (*disconnect)(struct usb_composite_dev *);
+	void (*suspend)(struct usb_composite_dev *);
+	void (*resume)(struct usb_composite_dev *);
+	struct usb_gadget_driver gadget_driver;
+};
+
+struct usb_os_desc;
+
+struct usb_os_desc_table {
+	int if_id;
+	struct usb_os_desc *os_desc;
+};
+
+struct usb_os_desc {
+	char *ext_compat_id;
+	struct list_head ext_prop;
+	int ext_prop_len;
+	int ext_prop_count;
+	struct mutex *opts_mutex;
+	struct config_group group;
+	struct module *owner;
+};
+
+struct usb_function_driver;
+
+struct usb_function_instance {
+	struct config_group group;
+	struct list_head cfs_list;
+	struct usb_function_driver *fd;
+	int (*set_inst_name)(struct usb_function_instance *, const char *);
+	void (*free_func_inst)(struct usb_function_instance *);
+};
+
+struct usb_function_driver {
+	const char *name;
+	struct module *mod;
+	struct list_head list;
+	struct usb_function_instance * (*alloc_inst)();
+	struct usb_function * (*alloc_func)(struct usb_function_instance *);
+};
+
+enum {
+	USB_GADGET_MANUFACTURER_IDX = 0,
+	USB_GADGET_PRODUCT_IDX = 1,
+	USB_GADGET_SERIAL_IDX = 2,
+	USB_GADGET_FIRST_AVAIL_IDX = 3,
+};
+
+struct webusb_url_descriptor {
+	u8 bLength;
+	u8 bDescriptorType;
+	u8 bScheme;
+	u8 URL[252];
+};
+
+struct usb_gadget_string_container {
+	struct list_head list;
+	u8 *stash[0];
+};
+
+struct usb_webusb_cap_data {
+	__le16 bcdVersion;
+	u8 bVendorCode;
+	u8 iLandingPage;
+};
+
+struct usb_os_desc_ext_prop {
+	struct list_head entry;
+	u8 type;
+	int name_len;
+	char *name;
+	int data_len;
+	char *data;
+	struct config_item item;
+};
+
+struct usb_os_string {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 qwSignature[14];
+	__u8 bMS_VendorCode;
+	__u8 bPad;
+};
+
+struct usb_string_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	union {
+		__le16 legacy_padding;
+		struct {
+			struct {} __empty_wData;
+			__le16 wData[0];
+		};
+	};
+};
+
+struct usb_plat_dev_cap_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDevCapabilityType;
+	__u8 bReserved;
+	__u8 UUID[16];
+	__u8 CapabilityData[0];
+};
+
+struct usb_composite_overwrite {
+	u16 idVendor;
+	u16 idProduct;
+	u16 bcdDevice;
+	char *serial_number;
+	char *manufacturer;
+	char *product;
+};
+
+struct gadget_info {
+	struct config_group group;
+	struct config_group functions_group;
+	struct config_group configs_group;
+	struct config_group strings_group;
+	struct config_group os_desc_group;
+	struct config_group webusb_group;
+	struct mutex lock;
+	struct usb_gadget_strings *gstrings[3];
+	struct list_head string_list;
+	struct list_head available_func;
+	struct usb_composite_driver composite;
+	struct usb_composite_dev cdev;
+	bool use_os_desc;
+	char b_vendor_code;
+	char qw_sign[14];
+	bool use_webusb;
+	u16 bcd_webusb_version;
+	u8 b_webusb_vendor_code;
+	char landing_page[260];
+	spinlock_t spinlock;
+	bool unbind;
+};
+
+struct config_usb_cfg {
+	struct config_group group;
+	struct config_group strings_group;
+	struct list_head string_list;
+	struct usb_configuration c;
+	struct list_head func_list;
+	struct usb_gadget_strings *gstrings[3];
+};
+
+struct gadget_config_name {
+	struct usb_gadget_strings stringtab_dev;
+	struct usb_string strings;
+	char *configuration;
+	struct config_group group;
+	struct list_head list;
+};
+
+struct gadget_language {
+	struct usb_gadget_strings stringtab_dev;
+	struct usb_string strings[3];
+	char *manufacturer;
+	char *product;
+	char *serialnumber;
+	struct config_group group;
+	struct list_head list;
+	struct list_head gadget_strings;
+	unsigned int nstrings;
+};
+
+struct gadget_string {
+	struct config_item item;
+	struct list_head list;
+	char string[126];
+	struct usb_string usb_string;
+};
+
+struct usb_udc {
+	struct usb_gadget_driver *driver;
+	struct usb_gadget *gadget;
+	struct device dev;
+	struct list_head list;
+	bool vbus;
+	bool started;
+	bool allow_connect;
+	struct work_struct vbus_work;
+	struct mutex connect_lock;
+};
+
+typedef void (*btf_trace_usb_gadget_frame_number)(void *, struct usb_gadget *, int);
+
+typedef void (*btf_trace_usb_gadget_wakeup)(void *, struct usb_gadget *, int);
+
+typedef void (*btf_trace_usb_gadget_set_remote_wakeup)(void *, struct usb_gadget *, int);
+
+typedef void (*btf_trace_usb_gadget_set_selfpowered)(void *, struct usb_gadget *, int);
+
+typedef void (*btf_trace_usb_gadget_clear_selfpowered)(void *, struct usb_gadget *, int);
+
+typedef void (*btf_trace_usb_gadget_vbus_connect)(void *, struct usb_gadget *, int);
+
+typedef void (*btf_trace_usb_gadget_vbus_draw)(void *, struct usb_gadget *, int);
+
+typedef void (*btf_trace_usb_gadget_vbus_disconnect)(void *, struct usb_gadget *, int);
+
+typedef void (*btf_trace_usb_gadget_connect)(void *, struct usb_gadget *, int);
+
+typedef void (*btf_trace_usb_gadget_disconnect)(void *, struct usb_gadget *, int);
+
+typedef void (*btf_trace_usb_gadget_deactivate)(void *, struct usb_gadget *, int);
+
+typedef void (*btf_trace_usb_gadget_activate)(void *, struct usb_gadget *, int);
+
+typedef void (*btf_trace_usb_ep_set_maxpacket_limit)(void *, struct usb_ep *, int);
+
+typedef void (*btf_trace_usb_ep_enable)(void *, struct usb_ep *, int);
+
+typedef void (*btf_trace_usb_ep_disable)(void *, struct usb_ep *, int);
+
+typedef void (*btf_trace_usb_ep_set_halt)(void *, struct usb_ep *, int);
+
+typedef void (*btf_trace_usb_ep_clear_halt)(void *, struct usb_ep *, int);
+
+typedef void (*btf_trace_usb_ep_set_wedge)(void *, struct usb_ep *, int);
+
+typedef void (*btf_trace_usb_ep_fifo_status)(void *, struct usb_ep *, int);
+
+typedef void (*btf_trace_usb_ep_fifo_flush)(void *, struct usb_ep *, int);
+
+typedef void (*btf_trace_usb_ep_alloc_request)(void *, struct usb_ep *, struct usb_request *, int);
+
+typedef void (*btf_trace_usb_ep_free_request)(void *, struct usb_ep *, struct usb_request *, int);
+
+typedef void (*btf_trace_usb_ep_queue)(void *, struct usb_ep *, struct usb_request *, int);
+
+typedef void (*btf_trace_usb_ep_dequeue)(void *, struct usb_ep *, struct usb_request *, int);
+
+typedef void (*btf_trace_usb_gadget_giveback_request)(void *, struct usb_ep *, struct usb_request *, int);
+
+struct trace_event_raw_udc_log_gadget {
+	struct trace_entry ent;
+	enum usb_device_speed speed;
+	enum usb_device_speed max_speed;
+	enum usb_device_state state;
+	unsigned int mA;
+	unsigned int sg_supported;
+	unsigned int is_otg;
+	unsigned int is_a_peripheral;
+	unsigned int b_hnp_enable;
+	unsigned int a_hnp_support;
+	unsigned int hnp_polling_support;
+	unsigned int host_request_flag;
+	unsigned int quirk_ep_out_aligned_size;
+	unsigned int quirk_altset_not_supp;
+	unsigned int quirk_stall_not_supp;
+	unsigned int quirk_zlp_not_supp;
+	unsigned int is_selfpowered;
+	unsigned int deactivated;
+	unsigned int connected;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_udc_log_ep {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	unsigned int maxpacket;
+	unsigned int maxpacket_limit;
+	unsigned int max_streams;
+	unsigned int mult;
+	unsigned int maxburst;
+	u8 address;
+	bool claimed;
+	bool enabled;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_udc_log_req {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	unsigned int length;
+	unsigned int actual;
+	unsigned int num_sgs;
+	unsigned int num_mapped_sgs;
+	unsigned int stream_id;
+	unsigned int no_interrupt;
+	unsigned int zero;
+	unsigned int short_not_ok;
+	int status;
+	int ret;
+	struct usb_request *req;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_udc_log_ep {
+	u32 name;
+};
+
+struct trace_event_data_offsets_udc_log_req {
+	u32 name;
+};
+
+struct trace_event_data_offsets_udc_log_gadget {};
+
+struct f_serial_opts {
+	struct usb_function_instance func_inst;
+	u8 port_num;
+};
+
+struct usb_cdc_line_coding {
+	__le32 dwDTERate;
+	__u8 bCharFormat;
+	__u8 bParityType;
+	__u8 bDataBits;
+} __attribute__((packed));
+
+struct gs_port;
+
+struct gserial {
+	struct usb_function func;
+	struct gs_port *ioport;
+	struct usb_ep *in;
+	struct usb_ep *out;
+	struct usb_cdc_line_coding port_line_coding;
+	void (*connect)(struct gserial *);
+	void (*disconnect)(struct gserial *);
+	int (*send_break)(struct gserial *, int);
+};
+
+struct f_acm {
+	struct gserial port;
+	u8 ctrl_id;
+	u8 data_id;
+	u8 port_num;
+	u8 pending;
+	spinlock_t lock;
+	struct usb_ep *notify;
+	struct usb_request *notify_req;
+	struct usb_cdc_line_coding port_line_coding;
+	u16 port_handshake_bits;
+	u16 serial_state;
+};
+
+struct usb_cdc_notification {
+	__u8 bmRequestType;
+	__u8 bNotificationType;
+	__le16 wValue;
+	__le16 wIndex;
+	__le16 wLength;
+};
+
+struct portmaster {
+	struct mutex lock;
+	struct gs_port *port;
+};
+
+struct kfifo {
+	union {
+		struct __kfifo kfifo;
+		unsigned char *type;
+		const unsigned char *const_type;
+		char (*rectype)[0];
+		void *ptr;
+		const void *ptr_const;
+	};
+	unsigned char buf[0];
+};
+
+struct gs_port {
+	struct tty_port port;
+	spinlock_t port_lock;
+	struct gserial *port_usb;
+	u8 port_num;
+	struct list_head read_pool;
+	int read_started;
+	int read_allocated;
+	struct list_head read_queue;
+	unsigned int n_read;
+	struct delayed_work push;
+	struct list_head write_pool;
+	int write_started;
+	int write_allocated;
+	struct kfifo port_write_buf;
+	wait_queue_head_t drain_wait;
+	bool write_busy;
+	wait_queue_head_t close_wait;
+	bool suspended;
+	bool start_delayed;
+	struct usb_cdc_line_coding port_line_coding;
+};
+
+struct f_gser {
+	struct gserial port;
+	u8 data_id;
+	u8 port_num;
+};
+
+struct gether;
+
+struct eth_dev {
+	spinlock_t lock;
+	struct gether *port_usb;
+	struct net_device *net;
+	struct usb_gadget *gadget;
+	spinlock_t req_lock;
+	struct list_head tx_reqs;
+	struct list_head rx_reqs;
+	atomic_t tx_qlen;
+	struct sk_buff_head rx_frames;
+	unsigned int qmult;
+	unsigned int header_len;
+	struct sk_buff * (*wrap)(struct gether *, struct sk_buff *);
+	int (*unwrap)(struct gether *, struct sk_buff *, struct sk_buff_head *);
+	struct work_struct work;
+	unsigned long todo;
+	bool zlp;
+	bool no_skb_reserve;
+	bool ifname_set;
+	u8 host_mac[6];
+	u8 dev_mac[6];
+};
+
+struct gether {
+	struct usb_function func;
+	struct eth_dev *ioport;
+	struct usb_ep *in_ep;
+	struct usb_ep *out_ep;
+	bool is_zlp_ok;
+	u16 cdc_filter;
+	u32 header_len;
+	bool is_fixed;
+	u32 fixed_out_len;
+	u32 fixed_in_len;
+	bool supports_multi_frame;
+	struct sk_buff * (*wrap)(struct gether *, struct sk_buff *);
+	int (*unwrap)(struct gether *, struct sk_buff *, struct sk_buff_head *);
+	void (*open)(struct gether *);
+	void (*close)(struct gether *);
+	bool is_suspend;
+};
+
+struct ndp_parser_opts {
+	u32 nth_sign;
+	u32 ndp_sign;
+	unsigned int nth_size;
+	unsigned int ndp_size;
+	unsigned int dpe_size;
+	unsigned int ndplen_align;
+	unsigned int dgram_item_len;
+	unsigned int block_length;
+	unsigned int ndp_index;
+	unsigned int reserved1;
+	unsigned int reserved2;
+	unsigned int next_ndp_index;
+};
+
+struct usb_cdc_ncm_ntb_parameters {
+	__le16 wLength;
+	__le16 bmNtbFormatsSupported;
+	__le32 dwNtbInMaxSize;
+	__le16 wNdpInDivisor;
+	__le16 wNdpInPayloadRemainder;
+	__le16 wNdpInAlignment;
+	__le16 wPadding1;
+	__le32 dwNtbOutMaxSize;
+	__le16 wNdpOutDivisor;
+	__le16 wNdpOutPayloadRemainder;
+	__le16 wNdpOutAlignment;
+	__le16 wNtbOutMaxDatagrams;
+};
+
+enum ncm_notify_state {
+	NCM_NOTIFY_NONE = 0,
+	NCM_NOTIFY_CONNECT = 1,
+	NCM_NOTIFY_SPEED = 2,
+};
+
+struct f_ncm_opts {
+	struct usb_function_instance func_inst;
+	struct net_device *net;
+	bool bound;
+	struct config_group *ncm_interf_group;
+	struct usb_os_desc ncm_os_desc;
+	char ncm_ext_compat_id[16];
+	struct mutex lock;
+	int refcnt;
+};
+
+struct f_ncm {
+	struct gether port;
+	u8 ctrl_id;
+	u8 data_id;
+	char ethaddr[14];
+	struct usb_ep *notify;
+	struct usb_request *notify_req;
+	u8 notify_state;
+	atomic_t notify_count;
+	bool is_open;
+	const struct ndp_parser_opts *parser_opts;
+	bool is_crc;
+	u32 ndp_sign;
+	spinlock_t lock;
+	struct net_device *netdev;
+	struct sk_buff *skb_tx_data;
+	struct sk_buff *skb_tx_ndp;
+	u16 ndp_dgram_count;
+	struct hrtimer task_timer;
+};
+
+enum ecm_notify_state {
+	ECM_NOTIFY_NONE = 0,
+	ECM_NOTIFY_CONNECT = 1,
+	ECM_NOTIFY_SPEED = 2,
+};
+
+struct f_ecm_opts {
+	struct usb_function_instance func_inst;
+	struct net_device *net;
+	bool bound;
+	struct mutex lock;
+	int refcnt;
+};
+
+struct f_ecm {
+	struct gether port;
+	u8 ctrl_id;
+	u8 data_id;
+	char ethaddr[14];
+	struct usb_ep *notify;
+	struct usb_request *notify_req;
+	u8 notify_state;
+	atomic_t notify_count;
+	bool is_open;
+};
+
+struct f_eem_opts {
+	struct usb_function_instance func_inst;
+	struct net_device *net;
+	bool bound;
+	struct mutex lock;
+	int refcnt;
+};
+
+struct f_eem {
+	struct gether port;
+	u8 ctrl_id;
+};
+
+struct in_context {
+	struct sk_buff *skb;
+	struct usb_ep *ep;
+};
+
+enum fsg_buffer_state {
+	BUF_STATE_SENDING = -2,
+	BUF_STATE_RECEIVING = -1,
+	BUF_STATE_EMPTY = 0,
+	BUF_STATE_FULL = 1,
+};
+
+enum fsg_state {
+	FSG_STATE_NORMAL = 0,
+	FSG_STATE_ABORT_BULK_OUT = 1,
+	FSG_STATE_PROTOCOL_RESET = 2,
+	FSG_STATE_CONFIG_CHANGE = 3,
+	FSG_STATE_EXIT = 4,
+	FSG_STATE_TERMINATED = 5,
+};
+
+enum data_direction {
+	DATA_DIR_UNKNOWN = 0,
+	DATA_DIR_FROM_HOST = 1,
+	DATA_DIR_TO_HOST = 2,
+	DATA_DIR_NONE = 3,
+};
+
+enum {
+	FSG_STRING_INTERFACE = 0,
+};
+
+struct fsg_lun {
+	struct file *filp;
+	loff_t file_length;
+	loff_t num_sectors;
+	unsigned int initially_ro: 1;
+	unsigned int ro: 1;
+	unsigned int removable: 1;
+	unsigned int cdrom: 1;
+	unsigned int prevent_medium_removal: 1;
+	unsigned int registered: 1;
+	unsigned int info_valid: 1;
+	unsigned int nofua: 1;
+	u32 sense_data;
+	u32 sense_data_info;
+	u32 unit_attention_data;
+	unsigned int blkbits;
+	unsigned int blksize;
+	struct device dev;
+	const char *name;
+	const char **name_pfx;
+	char inquiry_string[29];
+};
+
+struct fsg_lun_opts {
+	struct config_group group;
+	struct fsg_lun *lun;
+	int lun_id;
+};
+
+struct fsg_common;
+
+struct fsg_opts {
+	struct fsg_common *common;
+	struct usb_function_instance func_inst;
+	struct fsg_lun_opts lun0;
+	struct config_group *default_groups[2];
+	bool no_configfs;
+	struct mutex lock;
+	int refcnt;
+};
+
+struct fsg_dev;
+
+struct fsg_buffhd;
+
+struct fsg_common {
+	struct usb_gadget *gadget;
+	struct usb_composite_dev *cdev;
+	struct fsg_dev *fsg;
+	wait_queue_head_t io_wait;
+	wait_queue_head_t fsg_wait;
+	struct rw_semaphore filesem;
+	spinlock_t lock;
+	struct usb_ep *ep0;
+	struct usb_request *ep0req;
+	unsigned int ep0_req_tag;
+	struct fsg_buffhd *next_buffhd_to_fill;
+	struct fsg_buffhd *next_buffhd_to_drain;
+	struct fsg_buffhd *buffhds;
+	unsigned int fsg_num_buffers;
+	int cmnd_size;
+	u8 cmnd[16];
+	unsigned int lun;
+	struct fsg_lun *luns[16];
+	struct fsg_lun *curlun;
+	unsigned int bulk_out_maxpacket;
+	enum fsg_state state;
+	unsigned int exception_req_tag;
+	void *exception_arg;
+	enum data_direction data_dir;
+	u32 data_size;
+	u32 data_size_from_cmnd;
+	u32 tag;
+	u32 residue;
+	u32 usb_amount_left;
+	unsigned int can_stall: 1;
+	unsigned int free_storage_on_release: 1;
+	unsigned int phase_error: 1;
+	unsigned int short_packet_received: 1;
+	unsigned int bad_lun_okay: 1;
+	unsigned int running: 1;
+	unsigned int sysfs: 1;
+	struct completion thread_notifier;
+	struct task_struct *thread_task;
+	void *private_data;
+	char inquiry_string[29];
+};
+
+struct fsg_dev {
+	struct usb_function function;
+	struct usb_gadget *gadget;
+	struct fsg_common *common;
+	u16 interface_number;
+	unsigned int bulk_in_enabled: 1;
+	unsigned int bulk_out_enabled: 1;
+	unsigned long atomic_bitflags;
+	struct usb_ep *bulk_in;
+	struct usb_ep *bulk_out;
+};
+
+struct fsg_buffhd {
+	void *buf;
+	enum fsg_buffer_state state;
+	struct fsg_buffhd *next;
+	unsigned int bulk_out_intended_length;
+	struct usb_request *inreq;
+	struct usb_request *outreq;
+};
+
+struct fsg_lun_config {
+	const char *filename;
+	char ro;
+	char removable;
+	char cdrom;
+	char nofua;
+	char inquiry_string[29];
+};
+
+struct fsg_operations;
+
+struct fsg_config {
+	unsigned int nluns;
+	struct fsg_lun_config luns[16];
+	const struct fsg_operations *ops;
+	void *private_data;
+	const char *vendor_name;
+	const char *product_name;
+	char can_stall;
+	unsigned int fsg_num_buffers;
+};
+
+struct fsg_module_parameters {
+	char *file[16];
+	bool ro[16];
+	bool removable[16];
+	bool cdrom[16];
+	bool nofua[16];
+	unsigned int file_count;
+	unsigned int ro_count;
+	unsigned int removable_count;
+	unsigned int cdrom_count;
+	unsigned int nofua_count;
+	unsigned int luns;
+	bool stall;
+};
+
+enum ffs_state {
+	FFS_READ_DESCRIPTORS = 0,
+	FFS_READ_STRINGS = 1,
+	FFS_ACTIVE = 2,
+	FFS_DEACTIVATED = 3,
+	FFS_CLOSING = 4,
+};
+
+enum ffs_setup_state {
+	FFS_NO_SETUP = 0,
+	FFS_SETUP_PENDING = 1,
+	FFS_SETUP_CANCELLED = 2,
+};
+
+enum {
+	Opt_no_disconnect = 0,
+	Opt_rmode = 1,
+	Opt_fmode = 2,
+	Opt_mode___6 = 3,
+	Opt_uid___6 = 4,
+	Opt_gid___7 = 5,
+};
+
+enum usb_functionfs_event_type {
+	FUNCTIONFS_BIND = 0,
+	FUNCTIONFS_UNBIND = 1,
+	FUNCTIONFS_ENABLE = 2,
+	FUNCTIONFS_DISABLE = 3,
+	FUNCTIONFS_SETUP = 4,
+	FUNCTIONFS_SUSPEND = 5,
+	FUNCTIONFS_RESUME = 6,
+};
+
+enum {
+	FUNCTIONFS_DESCRIPTORS_MAGIC = 1,
+	FUNCTIONFS_STRINGS_MAGIC = 2,
+	FUNCTIONFS_DESCRIPTORS_MAGIC_V2 = 3,
+};
+
+enum functionfs_flags {
+	FUNCTIONFS_HAS_FS_DESC = 1,
+	FUNCTIONFS_HAS_HS_DESC = 2,
+	FUNCTIONFS_HAS_SS_DESC = 4,
+	FUNCTIONFS_HAS_MS_OS_DESC = 8,
+	FUNCTIONFS_VIRTUAL_ADDR = 16,
+	FUNCTIONFS_EVENTFD = 32,
+	FUNCTIONFS_ALL_CTRL_RECIP = 64,
+	FUNCTIONFS_CONFIG0_SETUP = 128,
+};
+
+enum ffs_entity_type {
+	FFS_DESCRIPTOR = 0,
+	FFS_INTERFACE = 1,
+	FFS_STRING = 2,
+	FFS_ENDPOINT = 3,
+};
+
+enum ffs_os_desc_type {
+	FFS_OS_DESC = 0,
+	FFS_OS_DESC_EXT_COMPAT = 1,
+	FFS_OS_DESC_EXT_PROP = 2,
+};
+
+struct ffs_data;
+
+struct f_fs_opts;
+
+struct ffs_dev {
+	struct ffs_data *ffs_data;
+	struct f_fs_opts *opts;
+	struct list_head entry;
+	char name[41];
+	bool mounted;
+	bool desc_ready;
+	bool single;
+	int (*ffs_ready_callback)(struct ffs_data *);
+	void (*ffs_closed_callback)(struct ffs_data *);
+	void * (*ffs_acquire_dev_callback)(struct ffs_dev *);
+	void (*ffs_release_dev_callback)(struct ffs_dev *);
+};
+
+struct ffs_file_perms {
+	umode_t mode;
+	kuid_t uid;
+	kgid_t gid;
+};
+
+struct ffs_function;
+
+struct ffs_epfile;
+
+struct ffs_data {
+	struct usb_gadget *gadget;
+	struct mutex mutex;
+	spinlock_t eps_lock;
+	struct usb_request *ep0req;
+	struct completion ep0req_completion;
+	refcount_t ref;
+	atomic_t opened;
+	enum ffs_state state;
+	enum ffs_setup_state setup_state;
+	struct {
+		u8 types[4];
+		unsigned short count;
+		unsigned short can_stall;
+		struct usb_ctrlrequest setup;
+		wait_queue_head_t waitq;
+	} ev;
+	unsigned long flags;
+	wait_queue_head_t wait;
+	struct ffs_function *func;
+	const char *dev_name;
+	void *private_data;
+	const void *raw_descs_data;
+	const void *raw_descs;
+	unsigned int raw_descs_length;
+	unsigned int fs_descs_count;
+	unsigned int hs_descs_count;
+	unsigned int ss_descs_count;
+	unsigned int ms_os_descs_count;
+	unsigned int ms_os_descs_ext_prop_count;
+	unsigned int ms_os_descs_ext_prop_name_len;
+	unsigned int ms_os_descs_ext_prop_data_len;
+	void *ms_os_descs_ext_prop_avail;
+	void *ms_os_descs_ext_prop_name_avail;
+	void *ms_os_descs_ext_prop_data_avail;
+	unsigned int user_flags;
+	u8 eps_addrmap[31];
+	unsigned short strings_count;
+	unsigned short interfaces_count;
+	unsigned short eps_count;
+	unsigned short _pad1;
+	const void *raw_strings;
+	struct usb_gadget_strings **stringtabs;
+	struct super_block *sb;
+	struct ffs_file_perms file_perms;
+	struct eventfd_ctx *ffs_eventfd;
+	struct workqueue_struct *io_completion_wq;
+	bool no_disconnect;
+	struct work_struct reset_work;
+	struct ffs_epfile *epfiles;
+};
+
+struct ffs_ep;
+
+struct ffs_function {
+	struct usb_configuration *conf;
+	struct usb_gadget *gadget;
+	struct ffs_data *ffs;
+	struct ffs_ep *eps;
+	u8 eps_revmap[16];
+	short *interfaces_nums;
+	struct usb_function function;
+};
+
+struct ffs_ep {
+	struct usb_ep *ep;
+	struct usb_request *req;
+	struct usb_endpoint_descriptor *descs[3];
+	u8 num;
+};
+
+struct ffs_buffer;
+
+struct ffs_epfile {
+	struct mutex mutex;
+	struct ffs_data *ffs;
+	struct ffs_ep *ep;
+	struct dentry *dentry;
+	struct ffs_buffer *read_buffer;
+	char name[5];
+	unsigned char in;
+	unsigned char isoc;
+	unsigned char _pad;
+};
+
+struct ffs_buffer {
+	size_t length;
+	char *data;
+	char storage[0];
+};
+
+struct f_fs_opts {
+	struct usb_function_instance func_inst;
+	struct ffs_dev *dev;
+	unsigned int refcnt;
+	bool no_configfs;
+};
+
+struct ffs_io_data {
+	bool aio;
+	bool read;
+	struct kiocb *kiocb;
+	struct iov_iter data;
+	const void *to_free;
+	char *buf;
+	struct mm_struct *mm;
+	struct work_struct work;
+	struct usb_ep *ep;
+	struct usb_request *req;
+	struct sg_table sgt;
+	bool use_sg;
+	struct ffs_data *ffs;
+	int status;
+	struct completion done;
+};
+
+typedef int (*ffs_entity_callback)(enum ffs_entity_type, u8 *, struct usb_descriptor_header *, void *);
+
+struct ffs_desc_helper {
+	struct ffs_data *ffs;
+	unsigned int interfaces_count;
+	unsigned int eps_count;
+};
+
+struct usb_os_desc_header {
+	__u8 interface;
+	__le32 dwLength;
+	__le16 bcdVersion;
+	__le16 wIndex;
+	union {
+		struct {
+			__u8 bCount;
+			__u8 Reserved;
+		};
+		__le16 wCount;
+	};
+} __attribute__((packed));
+
+typedef int (*ffs_os_desc_callback)(enum ffs_os_desc_type, struct usb_os_desc_header *, void *, unsigned int, void *);
+
+struct usb_ext_compat_desc {
+	__u8 bFirstInterfaceNumber;
+	__u8 Reserved1;
+	__u8 CompatibleID[8];
+	__u8 SubCompatibleID[8];
+	__u8 Reserved2[6];
+};
+
+struct usb_ext_prop_desc {
+	__le32 dwSize;
+	__le32 dwPropertyDataType;
+	__le16 wPropertyNameLength;
+} __attribute__((packed));
+
+struct ffs_sb_fill_data {
+	struct ffs_file_perms perms;
+	umode_t root_mode;
+	const char *dev_name;
+	bool no_disconnect;
+	struct ffs_data *ffs_data;
+};
+
+struct usb_functionfs_event {
+	union {
+		struct usb_ctrlrequest setup;
+	} u;
+	__u8 type;
+	__u8 _pad[3];
+};
+
+typedef unsigned long snd_pcm_uframes_t;
+
+struct snd_pcm_substream;
+
+struct snd_pcm_hw_params;
+
+struct snd_pcm_audio_tstamp_config;
+
+struct snd_pcm_audio_tstamp_report;
+
+struct snd_pcm_ops {
+	int (*open)(struct snd_pcm_substream *);
+	int (*close)(struct snd_pcm_substream *);
+	int (*ioctl)(struct snd_pcm_substream *, unsigned int, void *);
+	int (*hw_params)(struct snd_pcm_substream *, struct snd_pcm_hw_params *);
+	int (*hw_free)(struct snd_pcm_substream *);
+	int (*prepare)(struct snd_pcm_substream *);
+	int (*trigger)(struct snd_pcm_substream *, int);
+	int (*sync_stop)(struct snd_pcm_substream *);
+	snd_pcm_uframes_t (*pointer)(struct snd_pcm_substream *);
+	int (*get_time_info)(struct snd_pcm_substream *, struct timespec64 *, struct timespec64 *, struct snd_pcm_audio_tstamp_config *, struct snd_pcm_audio_tstamp_report *);
+	int (*fill_silence)(struct snd_pcm_substream *, int, unsigned long, unsigned long);
+	int (*copy)(struct snd_pcm_substream *, int, unsigned long, struct iov_iter *, unsigned long);
+	struct page * (*page)(struct snd_pcm_substream *, unsigned long);
+	int (*mmap)(struct snd_pcm_substream *, struct vm_area_struct *);
+	int (*ack)(struct snd_pcm_substream *);
+	u64 android_kabi_reserved1;
+};
+
+struct snd_dma_device {
+	int type;
+	enum dma_data_direction dir;
+	bool need_sync;
+	struct device *dev;
+};
+
+struct snd_dma_buffer {
+	struct snd_dma_device dev;
+	unsigned char *area;
+	dma_addr_t addr;
+	size_t bytes;
+	void *private_data;
+};
+
+struct snd_pcm_group {
+	spinlock_t lock;
+	struct mutex mutex;
+	struct list_head substreams;
+	refcount_t refs;
+};
+
+struct snd_pcm;
+
+struct snd_pcm_str;
+
+struct snd_pcm_runtime;
+
+struct snd_timer;
+
+struct snd_pcm_substream {
+	struct snd_pcm *pcm;
+	struct snd_pcm_str *pstr;
+	void *private_data;
+	int number;
+	char name[32];
+	int stream;
+	struct pm_qos_request latency_pm_qos_req;
+	size_t buffer_bytes_max;
+	struct snd_dma_buffer dma_buffer;
+	size_t dma_max;
+	const struct snd_pcm_ops *ops;
+	struct snd_pcm_runtime *runtime;
+	struct snd_timer *timer;
+	unsigned int timer_running: 1;
+	long wait_time;
+	struct snd_pcm_substream *next;
+	struct list_head link_list;
+	struct snd_pcm_group self_group;
+	struct snd_pcm_group *group;
+	int ref_count;
+	atomic_t mmap_count;
+	unsigned int f_flags;
+	void (*pcm_release)(struct snd_pcm_substream *);
+	struct pid *pid;
+	unsigned int hw_opened: 1;
+	unsigned int managed_buffer_alloc: 1;
+	u64 android_kabi_reserved1;
+};
+
+struct snd_kcontrol;
+
+struct snd_pcm_str {
+	int stream;
+	struct snd_pcm *pcm;
+	unsigned int substream_count;
+	unsigned int substream_opened;
+	struct snd_pcm_substream *substream;
+	struct snd_kcontrol *chmap_kctl;
+	struct device *dev;
+	u64 android_kabi_reserved1;
+};
+
+struct snd_card;
+
+struct snd_pcm {
+	struct snd_card *card;
+	struct list_head list;
+	int device;
+	unsigned int info_flags;
+	unsigned short dev_class;
+	unsigned short dev_subclass;
+	char id[64];
+	char name[80];
+	struct snd_pcm_str streams[2];
+	struct mutex open_mutex;
+	wait_queue_head_t open_wait;
+	void *private_data;
+	void (*private_free)(struct snd_pcm *);
+	bool internal;
+	bool nonatomic;
+	bool no_device_suspend;
+	u64 android_kabi_reserved1;
+};
+
+struct snd_shutdown_f_ops;
+
+struct snd_info_entry;
+
+struct snd_card {
+	int number;
+	char id[16];
+	char driver[16];
+	char shortname[32];
+	char longname[80];
+	char irq_descr[32];
+	char mixername[80];
+	char components[128];
+	struct module *module;
+	void *private_data;
+	void (*private_free)(struct snd_card *);
+	struct list_head devices;
+	struct device *ctl_dev;
+	unsigned int last_numid;
+	struct rw_semaphore controls_rwsem;
+	rwlock_t ctl_files_rwlock;
+	int controls_count;
+	size_t user_ctl_alloc_size;
+	struct list_head controls;
+	struct list_head ctl_files;
+	struct xarray ctl_numids;
+	struct xarray ctl_hash;
+	bool ctl_hash_collision;
+	struct snd_info_entry *proc_root;
+	struct proc_dir_entry *proc_root_link;
+	struct list_head files_list;
+	struct snd_shutdown_f_ops *s_f_ops;
+	spinlock_t files_lock;
+	int shutdown;
+	struct completion *release_completion;
+	struct device *dev;
+	struct device card_dev;
+	const struct attribute_group *dev_groups[4];
+	bool registered;
+	bool managed;
+	bool releasing;
+	int sync_irq;
+	wait_queue_head_t remove_sleep;
+	size_t total_pcm_alloc_bytes;
+	struct mutex memory_mutex;
+	unsigned int power_state;
+	atomic_t power_ref;
+	wait_queue_head_t power_sleep;
+	wait_queue_head_t power_ref_sleep;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+typedef int snd_kcontrol_tlv_rw_t(struct snd_kcontrol *, int, unsigned int, unsigned int __attribute__((btf_type_tag("user"))) *);
+
+typedef int snd_ctl_elem_iface_t;
+
+struct snd_ctl_elem_id {
+	unsigned int numid;
+	snd_ctl_elem_iface_t iface;
+	unsigned int device;
+	unsigned int subdevice;
+	unsigned char name[44];
+	unsigned int index;
+};
+
+struct snd_ctl_elem_info;
+
+typedef int snd_kcontrol_info_t(struct snd_kcontrol *, struct snd_ctl_elem_info *);
+
+struct snd_ctl_elem_value;
+
+typedef int snd_kcontrol_get_t(struct snd_kcontrol *, struct snd_ctl_elem_value *);
+
+typedef int snd_kcontrol_put_t(struct snd_kcontrol *, struct snd_ctl_elem_value *);
+
+struct snd_ctl_file;
+
+struct snd_kcontrol_volatile {
+	struct snd_ctl_file *owner;
+	unsigned int access;
+};
+
+struct snd_kcontrol {
+	struct list_head list;
+	struct snd_ctl_elem_id id;
+	unsigned int count;
+	snd_kcontrol_info_t *info;
+	snd_kcontrol_get_t *get;
+	snd_kcontrol_put_t *put;
+	union {
+		snd_kcontrol_tlv_rw_t *c;
+		const unsigned int *p;
+	} tlv;
+	unsigned long private_value;
+	void *private_data;
+	void (*private_free)(struct snd_kcontrol *);
+	struct snd_kcontrol_volatile vd[0];
+};
+
+typedef int snd_ctl_elem_type_t;
+
+struct snd_ctl_elem_info {
+	struct snd_ctl_elem_id id;
+	snd_ctl_elem_type_t type;
+	unsigned int access;
+	unsigned int count;
+	__kernel_pid_t owner;
+	union {
+		struct {
+			long min;
+			long max;
+			long step;
+		} integer;
+		struct {
+			long long min;
+			long long max;
+			long long step;
+		} integer64;
+		struct {
+			unsigned int items;
+			unsigned int item;
+			char name[64];
+			__u64 names_ptr;
+			unsigned int names_length;
+		} enumerated;
+		unsigned char reserved[128];
+	} value;
+	unsigned char reserved[64];
+};
+
+struct snd_aes_iec958 {
+	unsigned char status[24];
+	unsigned char subcode[147];
+	unsigned char pad;
+	unsigned char dig_subframe[4];
+};
+
+struct snd_ctl_elem_value {
+	struct snd_ctl_elem_id id;
+	unsigned int indirect: 1;
+	union {
+		union {
+			long value[128];
+			long *value_ptr;
+		} integer;
+		union {
+			long long value[64];
+			long long *value_ptr;
+		} integer64;
+		union {
+			unsigned int item[128];
+			unsigned int *item_ptr;
+		} enumerated;
+		union {
+			unsigned char data[512];
+			unsigned char *data_ptr;
+		} bytes;
+		struct snd_aes_iec958 iec958;
+	} value;
+	unsigned char reserved[128];
+};
+
+struct snd_fasync;
+
+struct snd_ctl_file {
+	struct list_head list;
+	struct snd_card *card;
+	struct pid *pid;
+	int preferred_subdevice[2];
+	wait_queue_head_t change_sleep;
+	spinlock_t read_lock;
+	struct snd_fasync *fasync;
+	int subscribed;
+	struct list_head events;
+};
+
+typedef int snd_pcm_state_t;
+
+typedef long snd_pcm_sframes_t;
+
+typedef int snd_pcm_access_t;
+
+typedef int snd_pcm_format_t;
+
+typedef int snd_pcm_subformat_t;
+
+union snd_pcm_sync_id {
+	unsigned char id[16];
+	unsigned short id16[8];
+	unsigned int id32[4];
+};
+
+struct snd_pcm_hardware {
+	unsigned int info;
+	u64 formats;
+	unsigned int rates;
+	unsigned int rate_min;
+	unsigned int rate_max;
+	unsigned int channels_min;
+	unsigned int channels_max;
+	size_t buffer_bytes_max;
+	size_t period_bytes_min;
+	size_t period_bytes_max;
+	unsigned int periods_min;
+	unsigned int periods_max;
+	size_t fifo_size;
+};
+
+struct snd_mask {
+	__u32 bits[8];
+};
+
+struct snd_interval {
+	unsigned int min;
+	unsigned int max;
+	unsigned int openmin: 1;
+	unsigned int openmax: 1;
+	unsigned int integer: 1;
+	unsigned int empty: 1;
+};
+
+struct snd_pcm_hw_rule;
+
+struct snd_pcm_hw_constraints {
+	struct snd_mask masks[3];
+	struct snd_interval intervals[12];
+	unsigned int rules_num;
+	unsigned int rules_all;
+	struct snd_pcm_hw_rule *rules;
+};
+
+struct snd_pcm_audio_tstamp_config {
+	u32 type_requested: 4;
+	u32 report_delay: 1;
+};
+
+struct snd_pcm_audio_tstamp_report {
+	u32 valid: 1;
+	u32 actual_type: 4;
+	u32 accuracy_report: 1;
+	u32 accuracy;
+};
+
+struct snd_pcm_mmap_status;
+
+struct snd_pcm_mmap_control;
+
+struct snd_pcm_runtime {
+	snd_pcm_state_t state;
+	snd_pcm_state_t suspended_state;
+	struct snd_pcm_substream *trigger_master;
+	struct timespec64 trigger_tstamp;
+	bool trigger_tstamp_latched;
+	int overrange;
+	snd_pcm_uframes_t avail_max;
+	snd_pcm_uframes_t hw_ptr_base;
+	snd_pcm_uframes_t hw_ptr_interrupt;
+	unsigned long hw_ptr_jiffies;
+	unsigned long hw_ptr_buffer_jiffies;
+	snd_pcm_sframes_t delay;
+	u64 hw_ptr_wrap;
+	snd_pcm_access_t access;
+	snd_pcm_format_t format;
+	snd_pcm_subformat_t subformat;
+	unsigned int rate;
+	unsigned int channels;
+	snd_pcm_uframes_t period_size;
+	unsigned int periods;
+	snd_pcm_uframes_t buffer_size;
+	snd_pcm_uframes_t min_align;
+	size_t byte_align;
+	unsigned int frame_bits;
+	unsigned int sample_bits;
+	unsigned int info;
+	unsigned int rate_num;
+	unsigned int rate_den;
+	unsigned int no_period_wakeup: 1;
+	int tstamp_mode;
+	unsigned int period_step;
+	snd_pcm_uframes_t start_threshold;
+	snd_pcm_uframes_t stop_threshold;
+	snd_pcm_uframes_t silence_threshold;
+	snd_pcm_uframes_t silence_size;
+	snd_pcm_uframes_t boundary;
+	snd_pcm_uframes_t silence_start;
+	snd_pcm_uframes_t silence_filled;
+	union snd_pcm_sync_id sync;
+	struct snd_pcm_mmap_status *status;
+	struct snd_pcm_mmap_control *control;
+	snd_pcm_uframes_t twake;
+	wait_queue_head_t sleep;
+	wait_queue_head_t tsleep;
+	struct snd_fasync *fasync;
+	bool stop_operating;
+	struct mutex buffer_mutex;
+	atomic_t buffer_accessing;
+	void *private_data;
+	void (*private_free)(struct snd_pcm_runtime *);
+	struct snd_pcm_hardware hw;
+	struct snd_pcm_hw_constraints hw_constraints;
+	unsigned int timer_resolution;
+	int tstamp_type;
+	unsigned char *dma_area;
+	dma_addr_t dma_addr;
+	size_t dma_bytes;
+	struct snd_dma_buffer *dma_buffer_p;
+	unsigned int buffer_changed: 1;
+	struct snd_pcm_audio_tstamp_config audio_tstamp_config;
+	struct snd_pcm_audio_tstamp_report audio_tstamp_report;
+	struct timespec64 driver_tstamp;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+typedef char __pad_before_uframe[0];
+
+typedef char __pad_after_uframe[0];
+
+struct snd_pcm_mmap_status {
+	snd_pcm_state_t state;
+	__u32 pad1;
+	__pad_before_uframe __pad1;
+	snd_pcm_uframes_t hw_ptr;
+	__pad_after_uframe __pad2;
+	struct __kernel_timespec tstamp;
+	snd_pcm_state_t suspended_state;
+	__u32 pad3;
+	struct __kernel_timespec audio_tstamp;
+};
+
+struct snd_pcm_mmap_control {
+	__pad_before_uframe __pad1;
+	snd_pcm_uframes_t appl_ptr;
+	__pad_before_uframe __pad2;
+	__pad_before_uframe __pad3;
+	snd_pcm_uframes_t avail_min;
+	__pad_after_uframe __pad4;
+};
+
+typedef int (*snd_pcm_hw_rule_func_t)(struct snd_pcm_hw_params *, struct snd_pcm_hw_rule *);
+
+struct snd_pcm_hw_rule {
+	unsigned int cond;
+	int var;
+	int deps[5];
+	snd_pcm_hw_rule_func_t func;
+	void *private;
+};
+
+struct snd_pcm_hw_params {
+	unsigned int flags;
+	struct snd_mask masks[3];
+	struct snd_mask mres[5];
+	struct snd_interval intervals[12];
+	struct snd_interval ires[9];
+	unsigned int rmask;
+	unsigned int cmask;
+	unsigned int info;
+	unsigned int msbits;
+	unsigned int rate_num;
+	unsigned int rate_den;
+	snd_pcm_uframes_t fifo_size;
+	unsigned char reserved[64];
+};
+
+struct snd_kcontrol_new {
+	snd_ctl_elem_iface_t iface;
+	unsigned int device;
+	unsigned int subdevice;
+	const char *name;
+	unsigned int index;
+	unsigned int access;
+	unsigned int count;
+	snd_kcontrol_info_t *info;
+	snd_kcontrol_get_t *get;
+	snd_kcontrol_put_t *put;
+	union {
+		snd_kcontrol_tlv_rw_t *c;
+		const unsigned int *p;
+	} tlv;
+	unsigned long private_value;
+};
+
+enum {
+	SNDRV_PCM_STREAM_PLAYBACK = 0,
+	SNDRV_PCM_STREAM_CAPTURE = 1,
+	SNDRV_PCM_STREAM_LAST = 1,
+};
+
+enum {
+	UAC_FBACK_CTRL = 0,
+	UAC_P_PITCH_CTRL = 1,
+	UAC_MUTE_CTRL = 2,
+	UAC_VOLUME_CTRL = 3,
+	UAC_RATE_CTRL = 4,
+};
+
+struct snd_uac_chip;
+
+struct uac_rtd_params {
+	struct snd_uac_chip *uac;
+	bool ep_enabled;
+	struct snd_pcm_substream *ss;
+	ssize_t hw_ptr;
+	void *rbuf;
+	unsigned int pitch;
+	unsigned int max_psize;
+	struct usb_request **reqs;
+	struct usb_request *req_fback;
+	bool fb_ep_enabled;
+	int fu_id;
+	struct snd_kcontrol *snd_kctl_volume;
+	struct snd_kcontrol *snd_kctl_mute;
+	s16 volume_min;
+	s16 volume_max;
+	s16 volume_res;
+	s16 volume;
+	int mute;
+	struct snd_kcontrol *snd_kctl_rate;
+	int srate;
+	int active;
+	spinlock_t lock;
+};
+
+struct g_audio;
+
+struct snd_uac_chip {
+	struct g_audio *audio_dev;
+	struct uac_rtd_params p_prm;
+	struct uac_rtd_params c_prm;
+	struct snd_card *card;
+	struct snd_pcm *pcm;
+	unsigned long long p_residue_mil;
+	unsigned int p_interval;
+	unsigned int p_framesize;
+};
+
+struct uac_fu_params {
+	int id;
+	bool mute_present;
+	bool volume_present;
+	s16 volume_min;
+	s16 volume_max;
+	s16 volume_res;
+};
+
+struct uac_params {
+	int p_chmask;
+	int p_srates[10];
+	int p_ssize;
+	struct uac_fu_params p_fu;
+	int c_chmask;
+	int c_srates[10];
+	int c_ssize;
+	struct uac_fu_params c_fu;
+	int req_number;
+	int fb_max;
+};
+
+struct g_audio {
+	struct usb_function func;
+	struct usb_gadget *gadget;
+	struct usb_ep *in_ep;
+	struct usb_ep *out_ep;
+	struct usb_ep *in_ep_fback;
+	unsigned int in_ep_maxpsize;
+	unsigned int out_ep_maxpsize;
+	int (*notify)(struct g_audio *, int, int);
+	struct snd_uac_chip *uac;
+	struct uac_params params;
+};
+
+typedef int snd_pcm_hw_param_t;
+
+struct uac2_feature_unit_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bUnitID;
+	__u8 bSourceID;
+	__u8 bmaControls[0];
+};
+
+struct uac_clock_source_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bClockID;
+	__u8 bmAttributes;
+	__u8 bmControls;
+	__u8 bAssocTerminal;
+	__u8 iClockSource;
+};
+
+struct uac2_input_terminal_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bTerminalID;
+	__le16 wTerminalType;
+	__u8 bAssocTerminal;
+	__u8 bCSourceID;
+	__u8 bNrChannels;
+	__le32 bmChannelConfig;
+	__u8 iChannelNames;
+	__le16 bmControls;
+	__u8 iTerminal;
+} __attribute__((packed));
+
+struct uac2_output_terminal_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bTerminalID;
+	__le16 wTerminalType;
+	__u8 bAssocTerminal;
+	__u8 bSourceID;
+	__u8 bCSourceID;
+	__le16 bmControls;
+	__u8 iTerminal;
+} __attribute__((packed));
+
+struct uac2_as_header_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bTerminalLink;
+	__u8 bmControls;
+	__u8 bFormatType;
+	__le32 bmFormats;
+	__u8 bNrChannels;
+	__le32 bmChannelConfig;
+	__u8 iChannelNames;
+} __attribute__((packed));
+
+struct uac2_format_type_i_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bFormatType;
+	__u8 bSubslotSize;
+	__u8 bBitResolution;
+};
+
+struct uac2_ac_header_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__le16 bcdADC;
+	__u8 bCategory;
+	__le16 wTotalLength;
+	__u8 bmControls;
+} __attribute__((packed));
+
+struct uac2_iso_endpoint_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bmAttributes;
+	__u8 bmControls;
+	__u8 bLockDelayUnits;
+	__le16 wLockDelay;
+};
+
+enum {
+	STR_ASSOC = 0,
+	STR_IF_CTRL = 1,
+	STR_CLKSRC_IN = 2,
+	STR_CLKSRC_OUT = 3,
+	STR_USB_IT = 4,
+	STR_IO_IT = 5,
+	STR_USB_OT = 6,
+	STR_IO_OT = 7,
+	STR_FU_IN = 8,
+	STR_FU_OUT = 9,
+	STR_AS_OUT_ALT0 = 10,
+	STR_AS_OUT_ALT1 = 11,
+	STR_AS_IN_ALT0 = 12,
+	STR_AS_IN_ALT1 = 13,
+};
+
+struct f_uac2_opts {
+	struct usb_function_instance func_inst;
+	int p_chmask;
+	int p_srates[10];
+	int p_ssize;
+	u8 p_hs_bint;
+	int c_chmask;
+	int c_srates[10];
+	int c_ssize;
+	int c_sync;
+	u8 c_hs_bint;
+	bool p_mute_present;
+	bool p_volume_present;
+	s16 p_volume_min;
+	s16 p_volume_max;
+	s16 p_volume_res;
+	bool c_mute_present;
+	bool c_volume_present;
+	s16 c_volume_min;
+	s16 c_volume_max;
+	s16 c_volume_res;
+	int req_number;
+	int fb_max;
+	bool bound;
+	char function_name[32];
+	struct mutex lock;
+	int refcnt;
+};
+
+struct f_uac2 {
+	struct g_audio g_audio;
+	u8 ac_intf;
+	u8 as_in_intf;
+	u8 as_out_intf;
+	u8 ac_alt;
+	u8 as_in_alt;
+	u8 as_out_alt;
+	struct usb_ctrlrequest setup_cr;
+	struct usb_ep *int_ep;
+	atomic_t int_count;
+	int clock_id;
+};
+
+struct cntrl_cur_lay2 {
+	__le16 wCUR;
+};
+
+struct cntrl_cur_lay3 {
+	__le32 dCUR;
+};
+
+struct cntrl_range_lay2 {
+	__le16 wNumSubRanges;
+	__le16 wMIN;
+	__le16 wMAX;
+	__le16 wRES;
+};
+
+struct cntrl_subrange_lay3 {
+	__le32 dMIN;
+	__le32 dMAX;
+	__le32 dRES;
+};
+
+struct cntrl_ranges_lay3_srates {
+	__le16 wNumSubRanges;
+	struct cntrl_subrange_lay3 r[10];
+} __attribute__((packed));
+
+struct uac2_interrupt_data_msg {
+	__u8 bInfo;
+	__u8 bAttribute;
+	__le16 wValue;
+	__le16 wIndex;
+};
+
+struct uvc_control_endpoint_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubType;
+	__le16 wMaxTransferSize;
+} __attribute__((packed));
+
+enum media_pad_signal_type {
+	PAD_SIGNAL_DEFAULT = 0,
+	PAD_SIGNAL_ANALOG = 1,
+	PAD_SIGNAL_DV = 2,
+	PAD_SIGNAL_AUDIO = 3,
+};
+
+enum media_request_state {
+	MEDIA_REQUEST_STATE_IDLE = 0,
+	MEDIA_REQUEST_STATE_VALIDATING = 1,
+	MEDIA_REQUEST_STATE_QUEUED = 2,
+	MEDIA_REQUEST_STATE_COMPLETE = 3,
+	MEDIA_REQUEST_STATE_CLEANING = 4,
+	MEDIA_REQUEST_STATE_UPDATING = 5,
+	NR_OF_MEDIA_REQUEST_STATE = 6,
+};
+
+enum media_entity_type {
+	MEDIA_ENTITY_TYPE_BASE = 0,
+	MEDIA_ENTITY_TYPE_VIDEO_DEVICE = 1,
+	MEDIA_ENTITY_TYPE_V4L2_SUBDEV = 2,
+};
+
+enum v4l2_priority {
+	V4L2_PRIORITY_UNSET = 0,
+	V4L2_PRIORITY_BACKGROUND = 1,
+	V4L2_PRIORITY_INTERACTIVE = 2,
+	V4L2_PRIORITY_RECORD = 3,
+	V4L2_PRIORITY_DEFAULT = 2,
+};
+
+enum v4l2_subdev_ir_mode {
+	V4L2_SUBDEV_IR_MODE_PULSE_WIDTH = 0,
+};
+
+enum v4l2_mbus_frame_desc_type {
+	V4L2_MBUS_FRAME_DESC_TYPE_UNDEFINED = 0,
+	V4L2_MBUS_FRAME_DESC_TYPE_PARALLEL = 1,
+	V4L2_MBUS_FRAME_DESC_TYPE_CSI2 = 2,
+};
+
+enum v4l2_mbus_frame_desc_flags {
+	V4L2_MBUS_FRAME_DESC_FL_LEN_MAX = 1,
+	V4L2_MBUS_FRAME_DESC_FL_BLOB = 2,
+};
+
+enum v4l2_mbus_type {
+	V4L2_MBUS_UNKNOWN = 0,
+	V4L2_MBUS_PARALLEL = 1,
+	V4L2_MBUS_BT656 = 2,
+	V4L2_MBUS_CSI1 = 3,
+	V4L2_MBUS_CCP2 = 4,
+	V4L2_MBUS_CSI2_DPHY = 5,
+	V4L2_MBUS_CSI2_CPHY = 6,
+	V4L2_MBUS_DPI = 7,
+	V4L2_MBUS_INVALID = 8,
+};
+
+enum v4l2_subdev_format_whence {
+	V4L2_SUBDEV_FORMAT_TRY = 0,
+	V4L2_SUBDEV_FORMAT_ACTIVE = 1,
+};
+
+enum v4l2_async_match_type {
+	V4L2_ASYNC_MATCH_TYPE_I2C = 0,
+	V4L2_ASYNC_MATCH_TYPE_FWNODE = 1,
+};
+
+enum vb2_buffer_state {
+	VB2_BUF_STATE_DEQUEUED = 0,
+	VB2_BUF_STATE_IN_REQUEST = 1,
+	VB2_BUF_STATE_PREPARING = 2,
+	VB2_BUF_STATE_QUEUED = 3,
+	VB2_BUF_STATE_ACTIVE = 4,
+	VB2_BUF_STATE_DONE = 5,
+	VB2_BUF_STATE_ERROR = 6,
+};
+
+enum vfl_devnode_type {
+	VFL_TYPE_VIDEO = 0,
+	VFL_TYPE_VBI = 1,
+	VFL_TYPE_RADIO = 2,
+	VFL_TYPE_SUBDEV = 3,
+	VFL_TYPE_SDR = 4,
+	VFL_TYPE_TOUCH = 5,
+	VFL_TYPE_MAX = 6,
+};
+
+enum vfl_devnode_direction {
+	VFL_DIR_RX = 0,
+	VFL_DIR_TX = 1,
+	VFL_DIR_M2M = 2,
+};
+
+enum uvc_state {
+	UVC_STATE_DISCONNECTED = 0,
+	UVC_STATE_CONNECTED = 1,
+	UVC_STATE_STREAMING = 2,
+};
+
+enum uvc_buffer_state {
+	UVC_BUF_STATE_IDLE = 0,
+	UVC_BUF_STATE_QUEUED = 1,
+	UVC_BUF_STATE_ACTIVE = 2,
+	UVC_BUF_STATE_DONE = 3,
+	UVC_BUF_STATE_ERROR = 4,
+};
+
+struct uvc_descriptor_header {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubType;
+};
+
+struct uvc_camera_terminal_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubType;
+	__u8 bTerminalID;
+	__le16 wTerminalType;
+	__u8 bAssocTerminal;
+	__u8 iTerminal;
+	__le16 wObjectiveFocalLengthMin;
+	__le16 wObjectiveFocalLengthMax;
+	__le16 wOcularFocalLength;
+	__u8 bControlSize;
+	__u8 bmControls[3];
+};
+
+struct uvc_processing_unit_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubType;
+	__u8 bUnitID;
+	__u8 bSourceID;
+	__le16 wMaxMultiplier;
+	__u8 bControlSize;
+	__u8 bmControls[2];
+	__u8 iProcessing;
+	__u8 bmVideoStandards;
+} __attribute__((packed));
+
+struct uvc_output_terminal_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubType;
+	__u8 bTerminalID;
+	__le16 wTerminalType;
+	__u8 bAssocTerminal;
+	__u8 bSourceID;
+	__u8 iTerminal;
+} __attribute__((packed));
+
+struct uvcg_streaming_header;
+
+struct f_uvc_opts {
+	struct usb_function_instance func_inst;
+	unsigned int streaming_interval;
+	unsigned int streaming_maxpacket;
+	unsigned int streaming_maxburst;
+	unsigned int control_interface;
+	unsigned int streaming_interface;
+	char function_name[32];
+	unsigned int last_unit_id;
+	bool enable_interrupt_ep;
+	const struct uvc_descriptor_header * const *fs_control;
+	const struct uvc_descriptor_header * const *ss_control;
+	const struct uvc_descriptor_header * const *fs_streaming;
+	const struct uvc_descriptor_header * const *hs_streaming;
+	const struct uvc_descriptor_header * const *ss_streaming;
+	struct uvc_camera_terminal_descriptor uvc_camera_terminal;
+	struct uvc_processing_unit_descriptor uvc_processing;
+	struct uvc_output_terminal_descriptor uvc_output_terminal;
+	struct uvc_descriptor_header *uvc_fs_control_cls[5];
+	struct uvc_descriptor_header *uvc_ss_control_cls[5];
+	struct list_head extension_units;
+	struct uvc_descriptor_header **uvc_fs_streaming_cls;
+	struct uvc_descriptor_header **uvc_hs_streaming_cls;
+	struct uvc_descriptor_header **uvc_ss_streaming_cls;
+	u8 iad_index;
+	u8 vs0_index;
+	u8 vs1_index;
+	struct mutex lock;
+	int refcnt;
+	struct uvcg_streaming_header *header;
+};
+
+struct uvc_input_header_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubType;
+	__u8 bNumFormats;
+	__le16 wTotalLength;
+	__u8 bEndpointAddress;
+	__u8 bmInfo;
+	__u8 bTerminalLink;
+	__u8 bStillCaptureMethod;
+	__u8 bTriggerSupport;
+	__u8 bTriggerUsage;
+	__u8 bControlSize;
+	__u8 bmaControls[0];
+} __attribute__((packed));
+
+struct uvcg_streaming_header {
+	struct config_item item;
+	struct uvc_input_header_descriptor desc;
+	unsigned int linked;
+	struct list_head formats;
+	unsigned int num_fmt;
+};
+
+struct uvcg_extension_unit_descriptor {
+	u8 bLength;
+	u8 bDescriptorType;
+	u8 bDescriptorSubType;
+	u8 bUnitID;
+	u8 guidExtensionCode[16];
+	u8 bNumControls;
+	u8 bNrInPins;
+	u8 *baSourceID;
+	u8 bControlSize;
+	u8 *bmControls;
+	u8 iExtension;
+} __attribute__((packed));
+
+struct uvcg_extension {
+	struct config_item item;
+	struct list_head list;
+	u8 string_descriptor_index;
+	struct uvcg_extension_unit_descriptor desc;
+};
+
+struct media_device;
+
+struct media_gobj {
+	struct media_device *mdev;
+	u32 id;
+	struct list_head list;
+};
+
+struct media_pad;
+
+struct media_entity_operations;
+
+struct media_entity {
+	struct media_gobj graph_obj;
+	const char *name;
+	enum media_entity_type obj_type;
+	u32 function;
+	unsigned long flags;
+	u16 num_pads;
+	u16 num_links;
+	u16 num_backlinks;
+	int internal_idx;
+	struct media_pad *pads;
+	struct list_head links;
+	const struct media_entity_operations *ops;
+	int use_count;
+	union {
+		struct {
+			u32 major;
+			u32 minor;
+		} dev;
+	} info;
+};
+
+struct media_pipeline {
+	bool allocated;
+	struct media_device *mdev;
+	struct list_head pads;
+	int start_count;
+};
+
+typedef __u64 v4l2_std_id;
+
+struct media_intf_devnode;
+
+struct v4l2_file_operations;
+
+struct v4l2_device;
+
+struct v4l2_ctrl_handler;
+
+struct vb2_queue;
+
+struct v4l2_prio_state;
+
+struct v4l2_ioctl_ops;
+
+struct video_device {
+	struct media_entity entity;
+	struct media_intf_devnode *intf_devnode;
+	struct media_pipeline pipe;
+	const struct v4l2_file_operations *fops;
+	u32 device_caps;
+	struct device dev;
+	struct cdev *cdev;
+	struct v4l2_device *v4l2_dev;
+	struct device *dev_parent;
+	struct v4l2_ctrl_handler *ctrl_handler;
+	struct vb2_queue *queue;
+	struct v4l2_prio_state *prio;
+	char name[32];
+	enum vfl_devnode_type vfl_type;
+	enum vfl_devnode_direction vfl_dir;
+	int minor;
+	u16 num;
+	unsigned long flags;
+	int index;
+	spinlock_t fh_lock;
+	struct list_head fh_list;
+	int dev_debug;
+	v4l2_std_id tvnorms;
+	void (*release)(struct video_device *);
+	const struct v4l2_ioctl_ops *ioctl_ops;
+	unsigned long valid_ioctls[3];
+	struct mutex *lock;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct v4l2_prio_state {
+	atomic_t prios[4];
+};
+
+struct v4l2_subdev;
+
+struct v4l2_device {
+	struct device *dev;
+	struct media_device *mdev;
+	struct list_head subdevs;
+	spinlock_t lock;
+	char name[36];
+	void (*notify)(struct v4l2_subdev *, unsigned int, void *);
+	struct v4l2_ctrl_handler *ctrl_handler;
+	struct v4l2_prio_state prio;
+	struct kref ref;
+	void (*release)(struct v4l2_device *);
+};
+
+struct vb2_ops;
+
+struct vb2_mem_ops;
+
+struct vb2_buf_ops;
+
+struct vb2_buffer;
+
+struct vb2_fileio_data;
+
+struct vb2_threadio_data;
+
+struct vb2_queue {
+	unsigned int type;
+	unsigned int io_modes;
+	struct device *dev;
+	unsigned long dma_attrs;
+	unsigned int bidirectional: 1;
+	unsigned int fileio_read_once: 1;
+	unsigned int fileio_write_immediately: 1;
+	unsigned int allow_zero_bytesused: 1;
+	unsigned int quirk_poll_must_check_waiting_for_buffers: 1;
+	unsigned int supports_requests: 1;
+	unsigned int requires_requests: 1;
+	unsigned int uses_qbuf: 1;
+	unsigned int uses_requests: 1;
+	unsigned int allow_cache_hints: 1;
+	unsigned int non_coherent_mem: 1;
+	struct mutex *lock;
+	void *owner;
+	const struct vb2_ops *ops;
+	const struct vb2_mem_ops *mem_ops;
+	const struct vb2_buf_ops *buf_ops;
+	void *drv_priv;
+	u32 subsystem_flags;
+	unsigned int buf_struct_size;
+	u32 timestamp_flags;
+	gfp_t gfp_flags;
+	u32 min_buffers_needed;
+	struct device *alloc_devs[8];
+	struct mutex mmap_lock;
+	unsigned int memory;
+	enum dma_data_direction dma_dir;
+	struct vb2_buffer *bufs[64];
+	unsigned int num_buffers;
+	struct list_head queued_list;
+	unsigned int queued_count;
+	atomic_t owned_by_drv_count;
+	struct list_head done_list;
+	spinlock_t done_lock;
+	wait_queue_head_t done_wq;
+	unsigned int streaming: 1;
+	unsigned int start_streaming_called: 1;
+	unsigned int error: 1;
+	unsigned int waiting_for_buffers: 1;
+	unsigned int waiting_in_dqbuf: 1;
+	unsigned int is_multiplanar: 1;
+	unsigned int is_output: 1;
+	unsigned int copy_timestamp: 1;
+	unsigned int last_buffer_dequeued: 1;
+	struct vb2_fileio_data *fileio;
+	struct vb2_threadio_data *threadio;
+	char name[32];
+};
+
+struct uvc_video_queue {
+	struct vb2_queue queue;
+	unsigned int flags;
+	__u32 sequence;
+	unsigned int buf_used;
+	bool use_sg;
+	spinlock_t irqlock;
+	struct list_head irqqueue;
+};
+
+struct uvc_device;
+
+struct uvc_buffer;
+
+struct uvc_video {
+	struct uvc_device *uvc;
+	struct usb_ep *ep;
+	struct work_struct pump;
+	struct workqueue_struct *async_wq;
+	u8 bpp;
+	u32 fcc;
+	unsigned int width;
+	unsigned int height;
+	unsigned int imagesize;
+	struct mutex mutex;
+	unsigned int uvc_num_requests;
+	bool is_enabled;
+	unsigned int req_size;
+	struct list_head ureqs;
+	struct list_head req_free;
+	struct list_head req_ready;
+	spinlock_t req_lock;
+	unsigned int req_int_count;
+	void (*encode)(struct usb_request *, struct uvc_video *, struct uvc_buffer *);
+	__u32 payload_size;
+	__u32 max_payload_size;
+	struct uvc_video_queue queue;
+	unsigned int fid;
+};
+
+struct uvc_device {
+	struct video_device vdev;
+	struct v4l2_device v4l2_dev;
+	enum uvc_state state;
+	struct usb_function func;
+	struct uvc_video video;
+	bool func_connected;
+	wait_queue_head_t func_connected_queue;
+	struct uvcg_streaming_header *header;
+	struct {
+		const struct uvc_descriptor_header * const *fs_control;
+		const struct uvc_descriptor_header * const *ss_control;
+		const struct uvc_descriptor_header * const *fs_streaming;
+		const struct uvc_descriptor_header * const *hs_streaming;
+		const struct uvc_descriptor_header * const *ss_streaming;
+		struct list_head *extension_units;
+	} desc;
+	unsigned int control_intf;
+	struct usb_ep *interrupt_ep;
+	struct usb_request *control_req;
+	void *control_buf;
+	bool enable_interrupt_ep;
+	unsigned int streaming_intf;
+	unsigned int event_length;
+	unsigned int event_setup_out: 1;
+};
+
+struct media_entity_enum {
+	unsigned long *bmap;
+	int idx_max;
+};
+
+struct media_graph {
+	struct {
+		struct media_entity *entity;
+		struct list_head *link;
+	} stack[16];
+	struct media_entity_enum ent_enum;
+	int top;
+};
+
+struct media_devnode;
+
+struct media_device_ops;
+
+struct media_device {
+	struct device *dev;
+	struct media_devnode *devnode;
+	char model[32];
+	char driver_name[32];
+	char serial[40];
+	char bus_info[32];
+	u32 hw_revision;
+	u64 topology_version;
+	u32 id;
+	struct ida entity_internal_idx;
+	int entity_internal_idx_max;
+	struct list_head entities;
+	struct list_head interfaces;
+	struct list_head pads;
+	struct list_head links;
+	struct list_head entity_notify;
+	struct mutex graph_mutex;
+	struct media_graph pm_count_walk;
+	void *source_priv;
+	int (*enable_source)(struct media_entity *, struct media_pipeline *);
+	void (*disable_source)(struct media_entity *);
+	const struct media_device_ops *ops;
+	struct mutex req_queue_mutex;
+	atomic_t request_id;
+};
+
+struct media_file_operations;
+
+struct media_devnode {
+	struct media_device *media_dev;
+	const struct media_file_operations *fops;
+	struct device dev;
+	struct cdev cdev;
+	struct device *parent;
+	int minor;
+	unsigned long flags;
+	void (*release)(struct media_devnode *);
+};
+
+struct media_file_operations {
+	struct module *owner;
+	ssize_t (*read)(struct file *, char __attribute__((btf_type_tag("user"))) *, size_t, loff_t *);
+	ssize_t (*write)(struct file *, const char __attribute__((btf_type_tag("user"))) *, size_t, loff_t *);
+	__poll_t (*poll)(struct file *, struct poll_table_struct *);
+	long (*ioctl)(struct file *, unsigned int, unsigned long);
+	long (*compat_ioctl)(struct file *, unsigned int, unsigned long);
+	int (*open)(struct file *);
+	int (*release)(struct file *);
+};
+
+struct media_link;
+
+struct media_request;
+
+struct media_device_ops {
+	int (*link_notify)(struct media_link *, u32, unsigned int);
+	struct media_request * (*req_alloc)(struct media_device *);
+	void (*req_free)(struct media_request *);
+	int (*req_validate)(struct media_request *);
+	void (*req_queue)(struct media_request *);
+};
+
+struct media_interface;
+
+struct media_link {
+	struct media_gobj graph_obj;
+	struct list_head list;
+	union {
+		struct media_gobj *gobj0;
+		struct media_pad *source;
+		struct media_interface *intf;
+	};
+	union {
+		struct media_gobj *gobj1;
+		struct media_pad *sink;
+		struct media_entity *entity;
+	};
+	struct media_link *reverse;
+	unsigned long flags;
+	bool is_backlink;
+};
+
+struct media_pad {
+	struct media_gobj graph_obj;
+	struct media_entity *entity;
+	u16 index;
+	u16 num_links;
+	enum media_pad_signal_type sig_type;
+	unsigned long flags;
+	struct media_pipeline *pipe;
+};
+
+struct media_interface {
+	struct media_gobj graph_obj;
+	struct list_head links;
+	u32 type;
+	u32 flags;
+};
+
+struct media_request {
+	struct media_device *mdev;
+	struct kref kref;
+	char debug_str[27];
+	enum media_request_state state;
+	unsigned int updating_count;
+	unsigned int access_count;
+	struct list_head objects;
+	unsigned int num_incomplete_objects;
+	wait_queue_head_t poll_wait;
+	spinlock_t lock;
+};
+
+struct media_entity_operations {
+	int (*get_fwnode_pad)(struct media_entity *, struct fwnode_endpoint *);
+	int (*link_setup)(struct media_entity *, const struct media_pad *, const struct media_pad *, u32);
+	int (*link_validate)(struct media_link *);
+	bool (*has_pad_interdep)(struct media_entity *, unsigned int, unsigned int);
+};
+
+struct media_intf_devnode {
+	struct media_interface intf;
+	u32 major;
+	u32 minor;
+};
+
+struct v4l2_file_operations {
+	struct module *owner;
+	ssize_t (*read)(struct file *, char __attribute__((btf_type_tag("user"))) *, size_t, loff_t *);
+	ssize_t (*write)(struct file *, const char __attribute__((btf_type_tag("user"))) *, size_t, loff_t *);
+	__poll_t (*poll)(struct file *, struct poll_table_struct *);
+	long (*unlocked_ioctl)(struct file *, unsigned int, unsigned long);
+	long (*compat_ioctl32)(struct file *, unsigned int, unsigned long);
+	unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long);
+	int (*mmap)(struct file *, struct vm_area_struct *);
+	int (*open)(struct file *);
+	int (*release)(struct file *);
+	u64 android_kabi_reserved1;
+};
+
+struct v4l2_subdev_ops;
+
+struct v4l2_subdev_internal_ops;
+
+struct v4l2_async_notifier;
+
+struct v4l2_subdev_platform_data;
+
+struct v4l2_subdev_state;
+
+struct v4l2_subdev {
+	struct media_entity entity;
+	struct list_head list;
+	struct module *owner;
+	bool owner_v4l2_dev;
+	u32 flags;
+	struct v4l2_device *v4l2_dev;
+	const struct v4l2_subdev_ops *ops;
+	const struct v4l2_subdev_internal_ops *internal_ops;
+	struct v4l2_ctrl_handler *ctrl_handler;
+	char name[32];
+	u32 grp_id;
+	void *dev_priv;
+	void *host_priv;
+	struct video_device *devnode;
+	struct device *dev;
+	struct fwnode_handle *fwnode;
+	struct list_head async_list;
+	struct list_head async_subdev_endpoint_list;
+	struct v4l2_async_notifier *subdev_notifier;
+	struct list_head asc_list;
+	struct v4l2_subdev_platform_data *pdata;
+	struct mutex *state_lock;
+	struct led_classdev *privacy_led;
+	struct v4l2_subdev_state *active_state;
+	u64 enabled_streams;
+};
+
+struct v4l2_subdev_core_ops;
+
+struct v4l2_subdev_tuner_ops;
+
+struct v4l2_subdev_audio_ops;
+
+struct v4l2_subdev_video_ops;
+
+struct v4l2_subdev_vbi_ops;
+
+struct v4l2_subdev_ir_ops;
+
+struct v4l2_subdev_sensor_ops;
+
+struct v4l2_subdev_pad_ops;
+
+struct v4l2_subdev_ops {
+	const struct v4l2_subdev_core_ops *core;
+	const struct v4l2_subdev_tuner_ops *tuner;
+	const struct v4l2_subdev_audio_ops *audio;
+	const struct v4l2_subdev_video_ops *video;
+	const struct v4l2_subdev_vbi_ops *vbi;
+	const struct v4l2_subdev_ir_ops *ir;
+	const struct v4l2_subdev_sensor_ops *sensor;
+	const struct v4l2_subdev_pad_ops *pad;
+};
+
+struct v4l2_subdev_io_pin_config;
+
+struct v4l2_fh;
+
+struct v4l2_event_subscription;
+
+struct v4l2_subdev_core_ops {
+	int (*log_status)(struct v4l2_subdev *);
+	int (*s_io_pin_config)(struct v4l2_subdev *, size_t, struct v4l2_subdev_io_pin_config *);
+	int (*init)(struct v4l2_subdev *, u32);
+	int (*load_fw)(struct v4l2_subdev *);
+	int (*reset)(struct v4l2_subdev *, u32);
+	int (*s_gpio)(struct v4l2_subdev *, u32);
+	long (*command)(struct v4l2_subdev *, unsigned int, void *);
+	long (*ioctl)(struct v4l2_subdev *, unsigned int, void *);
+	long (*compat_ioctl32)(struct v4l2_subdev *, unsigned int, unsigned long);
+	int (*s_power)(struct v4l2_subdev *, int);
+	int (*interrupt_service_routine)(struct v4l2_subdev *, u32, bool *);
+	int (*subscribe_event)(struct v4l2_subdev *, struct v4l2_fh *, struct v4l2_event_subscription *);
+	int (*unsubscribe_event)(struct v4l2_subdev *, struct v4l2_fh *, struct v4l2_event_subscription *);
+};
+
+struct v4l2_subdev_io_pin_config {
+	u32 flags;
+	u8 pin;
+	u8 function;
+	u8 value;
+	u8 strength;
+};
+
+struct v4l2_m2m_ctx;
+
+struct v4l2_fh {
+	struct list_head list;
+	struct video_device *vdev;
+	struct v4l2_ctrl_handler *ctrl_handler;
+	enum v4l2_priority prio;
+	wait_queue_head_t wait;
+	struct mutex subscribe_lock;
+	struct list_head subscribed;
+	struct list_head available;
+	unsigned int navailable;
+	u32 sequence;
+	struct v4l2_m2m_ctx *m2m_ctx;
+};
+
+struct v4l2_event_subscription {
+	__u32 type;
+	__u32 id;
+	__u32 flags;
+	__u32 reserved[5];
+};
+
+struct tuner_setup;
+
+struct v4l2_frequency;
+
+struct v4l2_frequency_band;
+
+struct v4l2_tuner;
+
+struct v4l2_modulator;
+
+struct v4l2_priv_tun_config;
+
+struct v4l2_subdev_tuner_ops {
+	int (*standby)(struct v4l2_subdev *);
+	int (*s_radio)(struct v4l2_subdev *);
+	int (*s_frequency)(struct v4l2_subdev *, const struct v4l2_frequency *);
+	int (*g_frequency)(struct v4l2_subdev *, struct v4l2_frequency *);
+	int (*enum_freq_bands)(struct v4l2_subdev *, struct v4l2_frequency_band *);
+	int (*g_tuner)(struct v4l2_subdev *, struct v4l2_tuner *);
+	int (*s_tuner)(struct v4l2_subdev *, const struct v4l2_tuner *);
+	int (*g_modulator)(struct v4l2_subdev *, struct v4l2_modulator *);
+	int (*s_modulator)(struct v4l2_subdev *, const struct v4l2_modulator *);
+	int (*s_type_addr)(struct v4l2_subdev *, struct tuner_setup *);
+	int (*s_config)(struct v4l2_subdev *, const struct v4l2_priv_tun_config *);
+};
+
+struct v4l2_frequency {
+	__u32 tuner;
+	__u32 type;
+	__u32 frequency;
+	__u32 reserved[8];
+};
+
+struct v4l2_frequency_band {
+	__u32 tuner;
+	__u32 type;
+	__u32 index;
+	__u32 capability;
+	__u32 rangelow;
+	__u32 rangehigh;
+	__u32 modulation;
+	__u32 reserved[9];
+};
+
+struct v4l2_tuner {
+	__u32 index;
+	__u8 name[32];
+	__u32 type;
+	__u32 capability;
+	__u32 rangelow;
+	__u32 rangehigh;
+	__u32 rxsubchans;
+	__u32 audmode;
+	__s32 signal;
+	__s32 afc;
+	__u32 reserved[4];
+};
+
+struct v4l2_modulator {
+	__u32 index;
+	__u8 name[32];
+	__u32 capability;
+	__u32 rangelow;
+	__u32 rangehigh;
+	__u32 txsubchans;
+	__u32 type;
+	__u32 reserved[3];
+};
+
+struct v4l2_priv_tun_config {
+	int tuner;
+	void *priv;
+};
+
+struct v4l2_subdev_audio_ops {
+	int (*s_clock_freq)(struct v4l2_subdev *, u32);
+	int (*s_i2s_clock_freq)(struct v4l2_subdev *, u32);
+	int (*s_routing)(struct v4l2_subdev *, u32, u32, u32);
+	int (*s_stream)(struct v4l2_subdev *, int);
+};
+
+struct v4l2_fract;
+
+struct v4l2_subdev_frame_interval;
+
+struct v4l2_dv_timings;
+
+struct v4l2_subdev_video_ops {
+	int (*s_routing)(struct v4l2_subdev *, u32, u32, u32);
+	int (*s_crystal_freq)(struct v4l2_subdev *, u32, u32);
+	int (*g_std)(struct v4l2_subdev *, v4l2_std_id *);
+	int (*s_std)(struct v4l2_subdev *, v4l2_std_id);
+	int (*s_std_output)(struct v4l2_subdev *, v4l2_std_id);
+	int (*g_std_output)(struct v4l2_subdev *, v4l2_std_id *);
+	int (*querystd)(struct v4l2_subdev *, v4l2_std_id *);
+	int (*g_tvnorms)(struct v4l2_subdev *, v4l2_std_id *);
+	int (*g_tvnorms_output)(struct v4l2_subdev *, v4l2_std_id *);
+	int (*g_input_status)(struct v4l2_subdev *, u32 *);
+	int (*s_stream)(struct v4l2_subdev *, int);
+	int (*g_pixelaspect)(struct v4l2_subdev *, struct v4l2_fract *);
+	int (*g_frame_interval)(struct v4l2_subdev *, struct v4l2_subdev_frame_interval *);
+	int (*s_frame_interval)(struct v4l2_subdev *, struct v4l2_subdev_frame_interval *);
+	int (*s_dv_timings)(struct v4l2_subdev *, struct v4l2_dv_timings *);
+	int (*g_dv_timings)(struct v4l2_subdev *, struct v4l2_dv_timings *);
+	int (*query_dv_timings)(struct v4l2_subdev *, struct v4l2_dv_timings *);
+	int (*s_rx_buffer)(struct v4l2_subdev *, void *, unsigned int *);
+	int (*pre_streamon)(struct v4l2_subdev *, u32);
+	int (*post_streamoff)(struct v4l2_subdev *);
+};
+
+struct v4l2_fract {
+	__u32 numerator;
+	__u32 denominator;
+};
+
+struct v4l2_subdev_frame_interval {
+	__u32 pad;
+	struct v4l2_fract interval;
+	__u32 stream;
+	__u32 reserved[8];
+};
+
+struct v4l2_bt_timings {
+	__u32 width;
+	__u32 height;
+	__u32 interlaced;
+	__u32 polarities;
+	__u64 pixelclock;
+	__u32 hfrontporch;
+	__u32 hsync;
+	__u32 hbackporch;
+	__u32 vfrontporch;
+	__u32 vsync;
+	__u32 vbackporch;
+	__u32 il_vfrontporch;
+	__u32 il_vsync;
+	__u32 il_vbackporch;
+	__u32 standards;
+	__u32 flags;
+	struct v4l2_fract picture_aspect;
+	__u8 cea861_vic;
+	__u8 hdmi_vic;
+	__u8 reserved[46];
+} __attribute__((packed));
+
+struct v4l2_dv_timings {
+	__u32 type;
+	union {
+		struct v4l2_bt_timings bt;
+		__u32 reserved[32];
+	};
+};
+
+struct v4l2_decode_vbi_line;
+
+struct v4l2_sliced_vbi_data;
+
+struct v4l2_sliced_vbi_cap;
+
+struct v4l2_vbi_format;
+
+struct v4l2_sliced_vbi_format;
+
+struct v4l2_subdev_vbi_ops {
+	int (*decode_vbi_line)(struct v4l2_subdev *, struct v4l2_decode_vbi_line *);
+	int (*s_vbi_data)(struct v4l2_subdev *, const struct v4l2_sliced_vbi_data *);
+	int (*g_vbi_data)(struct v4l2_subdev *, struct v4l2_sliced_vbi_data *);
+	int (*g_sliced_vbi_cap)(struct v4l2_subdev *, struct v4l2_sliced_vbi_cap *);
+	int (*s_raw_fmt)(struct v4l2_subdev *, struct v4l2_vbi_format *);
+	int (*g_sliced_fmt)(struct v4l2_subdev *, struct v4l2_sliced_vbi_format *);
+	int (*s_sliced_fmt)(struct v4l2_subdev *, struct v4l2_sliced_vbi_format *);
+};
+
+struct v4l2_decode_vbi_line {
+	u32 is_second_field;
+	u8 *p;
+	u32 line;
+	u32 type;
+};
+
+struct v4l2_sliced_vbi_data {
+	__u32 id;
+	__u32 field;
+	__u32 line;
+	__u32 reserved;
+	__u8 data[48];
+};
+
+struct v4l2_sliced_vbi_cap {
+	__u16 service_set;
+	__u16 service_lines[48];
+	__u32 type;
+	__u32 reserved[3];
+};
+
+struct v4l2_vbi_format {
+	__u32 sampling_rate;
+	__u32 offset;
+	__u32 samples_per_line;
+	__u32 sample_format;
+	__s32 start[2];
+	__u32 count[2];
+	__u32 flags;
+	__u32 reserved[2];
+};
+
+struct v4l2_sliced_vbi_format {
+	__u16 service_set;
+	__u16 service_lines[48];
+	__u32 io_size;
+	__u32 reserved[2];
+};
+
+struct v4l2_subdev_ir_parameters;
+
+struct v4l2_subdev_ir_ops {
+	int (*rx_read)(struct v4l2_subdev *, u8 *, size_t, ssize_t *);
+	int (*rx_g_parameters)(struct v4l2_subdev *, struct v4l2_subdev_ir_parameters *);
+	int (*rx_s_parameters)(struct v4l2_subdev *, struct v4l2_subdev_ir_parameters *);
+	int (*tx_write)(struct v4l2_subdev *, u8 *, size_t, ssize_t *);
+	int (*tx_g_parameters)(struct v4l2_subdev *, struct v4l2_subdev_ir_parameters *);
+	int (*tx_s_parameters)(struct v4l2_subdev *, struct v4l2_subdev_ir_parameters *);
+};
+
+struct v4l2_subdev_ir_parameters {
+	unsigned int bytes_per_data_element;
+	enum v4l2_subdev_ir_mode mode;
+	bool enable;
+	bool interrupt_enable;
+	bool shutdown;
+	bool modulation;
+	u32 max_pulse_width;
+	unsigned int carrier_freq;
+	unsigned int duty_cycle;
+	bool invert_level;
+	bool invert_carrier_sense;
+	u32 noise_filter_min_width;
+	unsigned int carrier_range_lower;
+	unsigned int carrier_range_upper;
+	u32 resolution;
+};
+
+struct v4l2_subdev_sensor_ops {
+	int (*g_skip_top_lines)(struct v4l2_subdev *, u32 *);
+	int (*g_skip_frames)(struct v4l2_subdev *, u32 *);
+};
+
+struct v4l2_subdev_mbus_code_enum;
+
+struct v4l2_subdev_frame_size_enum;
+
+struct v4l2_subdev_frame_interval_enum;
+
+struct v4l2_subdev_format;
+
+struct v4l2_subdev_selection;
+
+struct v4l2_edid;
+
+struct v4l2_dv_timings_cap;
+
+struct v4l2_enum_dv_timings;
+
+struct v4l2_mbus_frame_desc;
+
+struct v4l2_mbus_config;
+
+struct v4l2_subdev_krouting;
+
+struct v4l2_subdev_pad_ops {
+	int (*init_cfg)(struct v4l2_subdev *, struct v4l2_subdev_state *);
+	int (*enum_mbus_code)(struct v4l2_subdev *, struct v4l2_subdev_state *, struct v4l2_subdev_mbus_code_enum *);
+	int (*enum_frame_size)(struct v4l2_subdev *, struct v4l2_subdev_state *, struct v4l2_subdev_frame_size_enum *);
+	int (*enum_frame_interval)(struct v4l2_subdev *, struct v4l2_subdev_state *, struct v4l2_subdev_frame_interval_enum *);
+	int (*get_fmt)(struct v4l2_subdev *, struct v4l2_subdev_state *, struct v4l2_subdev_format *);
+	int (*set_fmt)(struct v4l2_subdev *, struct v4l2_subdev_state *, struct v4l2_subdev_format *);
+	int (*get_selection)(struct v4l2_subdev *, struct v4l2_subdev_state *, struct v4l2_subdev_selection *);
+	int (*set_selection)(struct v4l2_subdev *, struct v4l2_subdev_state *, struct v4l2_subdev_selection *);
+	int (*get_edid)(struct v4l2_subdev *, struct v4l2_edid *);
+	int (*set_edid)(struct v4l2_subdev *, struct v4l2_edid *);
+	int (*dv_timings_cap)(struct v4l2_subdev *, struct v4l2_dv_timings_cap *);
+	int (*enum_dv_timings)(struct v4l2_subdev *, struct v4l2_enum_dv_timings *);
+	int (*link_validate)(struct v4l2_subdev *, struct media_link *, struct v4l2_subdev_format *, struct v4l2_subdev_format *);
+	int (*get_frame_desc)(struct v4l2_subdev *, unsigned int, struct v4l2_mbus_frame_desc *);
+	int (*set_frame_desc)(struct v4l2_subdev *, unsigned int, struct v4l2_mbus_frame_desc *);
+	int (*get_mbus_config)(struct v4l2_subdev *, unsigned int, struct v4l2_mbus_config *);
+	int (*set_routing)(struct v4l2_subdev *, struct v4l2_subdev_state *, enum v4l2_subdev_format_whence, struct v4l2_subdev_krouting *);
+	int (*enable_streams)(struct v4l2_subdev *, struct v4l2_subdev_state *, u32, u64);
+	int (*disable_streams)(struct v4l2_subdev *, struct v4l2_subdev_state *, u32, u64);
+};
+
+struct v4l2_subdev_route;
+
+struct v4l2_subdev_krouting {
+	unsigned int num_routes;
+	struct v4l2_subdev_route *routes;
+};
+
+struct v4l2_subdev_stream_config;
+
+struct v4l2_subdev_stream_configs {
+	u32 num_configs;
+	struct v4l2_subdev_stream_config *configs;
+};
+
+struct v4l2_subdev_pad_config;
+
+struct v4l2_subdev_state {
+	struct mutex _lock;
+	struct mutex *lock;
+	struct v4l2_subdev_pad_config *pads;
+	struct v4l2_subdev_krouting routing;
+	struct v4l2_subdev_stream_configs stream_configs;
+};
+
+struct v4l2_mbus_framefmt {
+	__u32 width;
+	__u32 height;
+	__u32 code;
+	__u32 field;
+	__u32 colorspace;
+	union {
+		__u16 ycbcr_enc;
+		__u16 hsv_enc;
+	};
+	__u16 quantization;
+	__u16 xfer_func;
+	__u16 flags;
+	__u16 reserved[10];
+};
+
+struct v4l2_rect {
+	__s32 left;
+	__s32 top;
+	__u32 width;
+	__u32 height;
+};
+
+struct v4l2_subdev_pad_config {
+	struct v4l2_mbus_framefmt try_fmt;
+	struct v4l2_rect try_crop;
+	struct v4l2_rect try_compose;
+};
+
+struct v4l2_subdev_route {
+	__u32 sink_pad;
+	__u32 sink_stream;
+	__u32 source_pad;
+	__u32 source_stream;
+	__u32 flags;
+	__u32 reserved[5];
+};
+
+struct v4l2_subdev_stream_config {
+	u32 pad;
+	u32 stream;
+	bool enabled;
+	struct v4l2_mbus_framefmt fmt;
+	struct v4l2_rect crop;
+	struct v4l2_rect compose;
+};
+
+struct v4l2_subdev_mbus_code_enum {
+	__u32 pad;
+	__u32 index;
+	__u32 code;
+	__u32 which;
+	__u32 flags;
+	__u32 stream;
+	__u32 reserved[6];
+};
+
+struct v4l2_subdev_frame_size_enum {
+	__u32 index;
+	__u32 pad;
+	__u32 code;
+	__u32 min_width;
+	__u32 max_width;
+	__u32 min_height;
+	__u32 max_height;
+	__u32 which;
+	__u32 stream;
+	__u32 reserved[7];
+};
+
+struct v4l2_subdev_frame_interval_enum {
+	__u32 index;
+	__u32 pad;
+	__u32 code;
+	__u32 width;
+	__u32 height;
+	struct v4l2_fract interval;
+	__u32 which;
+	__u32 stream;
+	__u32 reserved[7];
+};
+
+struct v4l2_subdev_format {
+	__u32 which;
+	__u32 pad;
+	struct v4l2_mbus_framefmt format;
+	__u32 stream;
+	__u32 reserved[7];
+};
+
+struct v4l2_subdev_selection {
+	__u32 which;
+	__u32 pad;
+	__u32 target;
+	__u32 flags;
+	struct v4l2_rect r;
+	__u32 stream;
+	__u32 reserved[7];
+};
+
+struct v4l2_edid {
+	__u32 pad;
+	__u32 start_block;
+	__u32 blocks;
+	__u32 reserved[5];
+	__u8 *edid;
+};
+
+struct v4l2_bt_timings_cap {
+	__u32 min_width;
+	__u32 max_width;
+	__u32 min_height;
+	__u32 max_height;
+	__u64 min_pixelclock;
+	__u64 max_pixelclock;
+	__u32 standards;
+	__u32 capabilities;
+	__u32 reserved[16];
+};
+
+struct v4l2_dv_timings_cap {
+	__u32 type;
+	__u32 pad;
+	__u32 reserved[2];
+	union {
+		struct v4l2_bt_timings_cap bt;
+		__u32 raw_data[32];
+	};
+};
+
+struct v4l2_enum_dv_timings {
+	__u32 index;
+	__u32 pad;
+	__u32 reserved[2];
+	struct v4l2_dv_timings timings;
+};
+
+struct v4l2_mbus_frame_desc_entry_csi2 {
+	u8 vc;
+	u8 dt;
+};
+
+struct v4l2_mbus_frame_desc_entry {
+	enum v4l2_mbus_frame_desc_flags flags;
+	u32 stream;
+	u32 pixelcode;
+	u32 length;
+	union {
+		struct v4l2_mbus_frame_desc_entry_csi2 csi2;
+	} bus;
+};
+
+struct v4l2_mbus_frame_desc {
+	enum v4l2_mbus_frame_desc_type type;
+	struct v4l2_mbus_frame_desc_entry entry[8];
+	unsigned short num_entries;
+};
+
+struct v4l2_mbus_config_parallel {
+	unsigned int flags;
+	unsigned char bus_width;
+	unsigned char data_shift;
+};
+
+struct v4l2_mbus_config_mipi_csi1 {
+	unsigned char clock_inv: 1;
+	unsigned char strobe: 1;
+	bool lane_polarity[2];
+	unsigned char data_lane;
+	unsigned char clock_lane;
+};
+
+struct v4l2_mbus_config_mipi_csi2 {
+	unsigned int flags;
+	unsigned char data_lanes[8];
+	unsigned char clock_lane;
+	unsigned char num_data_lanes;
+	bool lane_polarities[9];
+};
+
+struct v4l2_mbus_config {
+	enum v4l2_mbus_type type;
+	union {
+		struct v4l2_mbus_config_parallel parallel;
+		struct v4l2_mbus_config_mipi_csi1 mipi_csi1;
+		struct v4l2_mbus_config_mipi_csi2 mipi_csi2;
+	} bus;
+};
+
+struct v4l2_subdev_fh;
+
+struct v4l2_subdev_internal_ops {
+	int (*registered)(struct v4l2_subdev *);
+	void (*unregistered)(struct v4l2_subdev *);
+	int (*open)(struct v4l2_subdev *, struct v4l2_subdev_fh *);
+	int (*close)(struct v4l2_subdev *, struct v4l2_subdev_fh *);
+	void (*release)(struct v4l2_subdev *);
+};
+
+struct v4l2_subdev_fh {
+	struct v4l2_fh vfh;
+	struct module *owner;
+	struct v4l2_subdev_state *state;
+	u64 client_caps;
+};
+
+struct v4l2_async_notifier_operations;
+
+struct v4l2_async_notifier {
+	const struct v4l2_async_notifier_operations *ops;
+	struct v4l2_device *v4l2_dev;
+	struct v4l2_subdev *sd;
+	struct v4l2_async_notifier *parent;
+	struct list_head waiting_list;
+	struct list_head done_list;
+	struct list_head notifier_entry;
+};
+
+struct v4l2_async_connection;
+
+struct v4l2_async_notifier_operations {
+	int (*bound)(struct v4l2_async_notifier *, struct v4l2_subdev *, struct v4l2_async_connection *);
+	int (*complete)(struct v4l2_async_notifier *);
+	void (*unbind)(struct v4l2_async_notifier *, struct v4l2_subdev *, struct v4l2_async_connection *);
+	void (*destroy)(struct v4l2_async_connection *);
+};
+
+struct v4l2_async_match_desc {
+	enum v4l2_async_match_type type;
+	union {
+		struct fwnode_handle *fwnode;
+		struct {
+			int adapter_id;
+			unsigned short address;
+		} i2c;
+	};
+};
+
+struct v4l2_async_connection {
+	struct v4l2_async_match_desc match;
+	struct v4l2_async_notifier *notifier;
+	struct list_head asc_entry;
+	struct list_head asc_subdev_entry;
+	struct v4l2_subdev *sd;
+};
+
+struct v4l2_subdev_platform_data {
+	struct regulator_bulk_data *regulators;
+	int num_regulators;
+	void *host_priv;
+};
+
+struct vb2_ops {
+	int (*queue_setup)(struct vb2_queue *, unsigned int *, unsigned int *, unsigned int *, struct device **);
+	void (*wait_prepare)(struct vb2_queue *);
+	void (*wait_finish)(struct vb2_queue *);
+	int (*buf_out_validate)(struct vb2_buffer *);
+	int (*buf_init)(struct vb2_buffer *);
+	int (*buf_prepare)(struct vb2_buffer *);
+	void (*buf_finish)(struct vb2_buffer *);
+	void (*buf_cleanup)(struct vb2_buffer *);
+	int (*prepare_streaming)(struct vb2_queue *);
+	int (*start_streaming)(struct vb2_queue *, unsigned int);
+	void (*stop_streaming)(struct vb2_queue *);
+	void (*unprepare_streaming)(struct vb2_queue *);
+	void (*buf_queue)(struct vb2_buffer *);
+	void (*buf_request_complete)(struct vb2_buffer *);
+};
+
+struct media_request_object_ops;
+
+struct media_request_object {
+	const struct media_request_object_ops *ops;
+	void *priv;
+	struct media_request *req;
+	struct list_head list;
+	struct kref kref;
+	bool completed;
+};
+
+struct vb2_plane {
+	void *mem_priv;
+	struct dma_buf *dbuf;
+	unsigned int dbuf_mapped;
+	unsigned int bytesused;
+	unsigned int length;
+	unsigned int min_length;
+	union {
+		unsigned int offset;
+		unsigned long userptr;
+		int fd;
+	} m;
+	unsigned int data_offset;
+};
+
+struct vb2_buffer {
+	struct vb2_queue *vb2_queue;
+	unsigned int index;
+	unsigned int type;
+	unsigned int memory;
+	unsigned int num_planes;
+	u64 timestamp;
+	struct media_request *request;
+	struct media_request_object req_obj;
+	enum vb2_buffer_state state;
+	unsigned int synced: 1;
+	unsigned int prepared: 1;
+	unsigned int copied_timestamp: 1;
+	unsigned int skip_cache_sync_on_prepare: 1;
+	unsigned int skip_cache_sync_on_finish: 1;
+	struct vb2_plane planes[8];
+	struct list_head queued_entry;
+	struct list_head done_entry;
+};
+
+struct media_request_object_ops {
+	int (*prepare)(struct media_request_object *);
+	void (*unprepare)(struct media_request_object *);
+	void (*queue)(struct media_request_object *);
+	void (*unbind)(struct media_request_object *);
+	void (*release)(struct media_request_object *);
+};
+
+struct vb2_mem_ops {
+	void * (*alloc)(struct vb2_buffer *, struct device *, unsigned long);
+	void (*put)(void *);
+	struct dma_buf * (*get_dmabuf)(struct vb2_buffer *, void *, unsigned long);
+	void * (*get_userptr)(struct vb2_buffer *, struct device *, unsigned long, unsigned long);
+	void (*put_userptr)(void *);
+	void (*prepare)(void *);
+	void (*finish)(void *);
+	void * (*attach_dmabuf)(struct vb2_buffer *, struct device *, struct dma_buf *, unsigned long);
+	void (*detach_dmabuf)(void *);
+	int (*map_dmabuf)(void *);
+	void (*unmap_dmabuf)(void *);
+	void * (*vaddr)(struct vb2_buffer *, void *);
+	void * (*cookie)(struct vb2_buffer *, void *);
+	unsigned int (*num_users)(void *);
+	int (*mmap)(void *, struct vm_area_struct *);
+};
+
+struct vb2_buf_ops {
+	int (*verify_planes_array)(struct vb2_buffer *, const void *);
+	void (*init_buffer)(struct vb2_buffer *);
+	void (*fill_user_buffer)(struct vb2_buffer *, void *);
+	int (*fill_vb2_buffer)(struct vb2_buffer *, struct vb2_plane *);
+	void (*copy_timestamp)(struct vb2_buffer *, const void *);
+};
+
+enum v4l2_buf_type {
+	V4L2_BUF_TYPE_VIDEO_CAPTURE = 1,
+	V4L2_BUF_TYPE_VIDEO_OUTPUT = 2,
+	V4L2_BUF_TYPE_VIDEO_OVERLAY = 3,
+	V4L2_BUF_TYPE_VBI_CAPTURE = 4,
+	V4L2_BUF_TYPE_VBI_OUTPUT = 5,
+	V4L2_BUF_TYPE_SLICED_VBI_CAPTURE = 6,
+	V4L2_BUF_TYPE_SLICED_VBI_OUTPUT = 7,
+	V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY = 8,
+	V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE = 9,
+	V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE = 10,
+	V4L2_BUF_TYPE_SDR_CAPTURE = 11,
+	V4L2_BUF_TYPE_SDR_OUTPUT = 12,
+	V4L2_BUF_TYPE_META_CAPTURE = 13,
+	V4L2_BUF_TYPE_META_OUTPUT = 14,
+	V4L2_BUF_TYPE_PRIVATE = 128,
+};
+
+struct v4l2_capability;
+
+struct v4l2_fmtdesc;
+
+struct v4l2_format;
+
+struct v4l2_requestbuffers;
+
+struct v4l2_buffer;
+
+struct v4l2_exportbuffer;
+
+struct v4l2_create_buffers;
+
+struct v4l2_framebuffer;
+
+struct v4l2_input;
+
+struct v4l2_output;
+
+struct v4l2_queryctrl;
+
+struct v4l2_query_ext_ctrl;
+
+struct v4l2_control;
+
+struct v4l2_ext_controls;
+
+struct v4l2_querymenu;
+
+struct v4l2_audio;
+
+struct v4l2_audioout;
+
+struct v4l2_selection;
+
+struct v4l2_jpegcompression;
+
+struct v4l2_enc_idx;
+
+struct v4l2_encoder_cmd;
+
+struct v4l2_decoder_cmd;
+
+struct v4l2_streamparm;
+
+struct v4l2_hw_freq_seek;
+
+struct v4l2_frmsizeenum;
+
+struct v4l2_frmivalenum;
+
+struct v4l2_ioctl_ops {
+	int (*vidioc_querycap)(struct file *, void *, struct v4l2_capability *);
+	int (*vidioc_enum_fmt_vid_cap)(struct file *, void *, struct v4l2_fmtdesc *);
+	int (*vidioc_enum_fmt_vid_overlay)(struct file *, void *, struct v4l2_fmtdesc *);
+	int (*vidioc_enum_fmt_vid_out)(struct file *, void *, struct v4l2_fmtdesc *);
+	int (*vidioc_enum_fmt_sdr_cap)(struct file *, void *, struct v4l2_fmtdesc *);
+	int (*vidioc_enum_fmt_sdr_out)(struct file *, void *, struct v4l2_fmtdesc *);
+	int (*vidioc_enum_fmt_meta_cap)(struct file *, void *, struct v4l2_fmtdesc *);
+	int (*vidioc_enum_fmt_meta_out)(struct file *, void *, struct v4l2_fmtdesc *);
+	int (*vidioc_g_fmt_vid_cap)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_g_fmt_vid_overlay)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_g_fmt_vid_out)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_g_fmt_vid_out_overlay)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_g_fmt_vbi_cap)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_g_fmt_vbi_out)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_g_fmt_sliced_vbi_cap)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_g_fmt_sliced_vbi_out)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_g_fmt_vid_cap_mplane)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_g_fmt_vid_out_mplane)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_g_fmt_sdr_cap)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_g_fmt_sdr_out)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_g_fmt_meta_cap)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_g_fmt_meta_out)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_s_fmt_vid_cap)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_s_fmt_vid_overlay)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_s_fmt_vid_out)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_s_fmt_vid_out_overlay)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_s_fmt_vbi_cap)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_s_fmt_vbi_out)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_s_fmt_sliced_vbi_cap)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_s_fmt_sliced_vbi_out)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_s_fmt_vid_cap_mplane)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_s_fmt_vid_out_mplane)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_s_fmt_sdr_cap)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_s_fmt_sdr_out)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_s_fmt_meta_cap)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_s_fmt_meta_out)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_try_fmt_vid_cap)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_try_fmt_vid_overlay)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_try_fmt_vid_out)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_try_fmt_vid_out_overlay)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_try_fmt_vbi_cap)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_try_fmt_vbi_out)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_try_fmt_sliced_vbi_cap)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_try_fmt_sliced_vbi_out)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_try_fmt_vid_cap_mplane)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_try_fmt_vid_out_mplane)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_try_fmt_sdr_cap)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_try_fmt_sdr_out)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_try_fmt_meta_cap)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_try_fmt_meta_out)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_reqbufs)(struct file *, void *, struct v4l2_requestbuffers *);
+	int (*vidioc_querybuf)(struct file *, void *, struct v4l2_buffer *);
+	int (*vidioc_qbuf)(struct file *, void *, struct v4l2_buffer *);
+	int (*vidioc_expbuf)(struct file *, void *, struct v4l2_exportbuffer *);
+	int (*vidioc_dqbuf)(struct file *, void *, struct v4l2_buffer *);
+	int (*vidioc_create_bufs)(struct file *, void *, struct v4l2_create_buffers *);
+	int (*vidioc_prepare_buf)(struct file *, void *, struct v4l2_buffer *);
+	int (*vidioc_overlay)(struct file *, void *, unsigned int);
+	int (*vidioc_g_fbuf)(struct file *, void *, struct v4l2_framebuffer *);
+	int (*vidioc_s_fbuf)(struct file *, void *, const struct v4l2_framebuffer *);
+	int (*vidioc_streamon)(struct file *, void *, enum v4l2_buf_type);
+	int (*vidioc_streamoff)(struct file *, void *, enum v4l2_buf_type);
+	int (*vidioc_g_std)(struct file *, void *, v4l2_std_id *);
+	int (*vidioc_s_std)(struct file *, void *, v4l2_std_id);
+	int (*vidioc_querystd)(struct file *, void *, v4l2_std_id *);
+	int (*vidioc_enum_input)(struct file *, void *, struct v4l2_input *);
+	int (*vidioc_g_input)(struct file *, void *, unsigned int *);
+	int (*vidioc_s_input)(struct file *, void *, unsigned int);
+	int (*vidioc_enum_output)(struct file *, void *, struct v4l2_output *);
+	int (*vidioc_g_output)(struct file *, void *, unsigned int *);
+	int (*vidioc_s_output)(struct file *, void *, unsigned int);
+	int (*vidioc_queryctrl)(struct file *, void *, struct v4l2_queryctrl *);
+	int (*vidioc_query_ext_ctrl)(struct file *, void *, struct v4l2_query_ext_ctrl *);
+	int (*vidioc_g_ctrl)(struct file *, void *, struct v4l2_control *);
+	int (*vidioc_s_ctrl)(struct file *, void *, struct v4l2_control *);
+	int (*vidioc_g_ext_ctrls)(struct file *, void *, struct v4l2_ext_controls *);
+	int (*vidioc_s_ext_ctrls)(struct file *, void *, struct v4l2_ext_controls *);
+	int (*vidioc_try_ext_ctrls)(struct file *, void *, struct v4l2_ext_controls *);
+	int (*vidioc_querymenu)(struct file *, void *, struct v4l2_querymenu *);
+	int (*vidioc_enumaudio)(struct file *, void *, struct v4l2_audio *);
+	int (*vidioc_g_audio)(struct file *, void *, struct v4l2_audio *);
+	int (*vidioc_s_audio)(struct file *, void *, const struct v4l2_audio *);
+	int (*vidioc_enumaudout)(struct file *, void *, struct v4l2_audioout *);
+	int (*vidioc_g_audout)(struct file *, void *, struct v4l2_audioout *);
+	int (*vidioc_s_audout)(struct file *, void *, const struct v4l2_audioout *);
+	int (*vidioc_g_modulator)(struct file *, void *, struct v4l2_modulator *);
+	int (*vidioc_s_modulator)(struct file *, void *, const struct v4l2_modulator *);
+	int (*vidioc_g_pixelaspect)(struct file *, void *, int, struct v4l2_fract *);
+	int (*vidioc_g_selection)(struct file *, void *, struct v4l2_selection *);
+	int (*vidioc_s_selection)(struct file *, void *, struct v4l2_selection *);
+	int (*vidioc_g_jpegcomp)(struct file *, void *, struct v4l2_jpegcompression *);
+	int (*vidioc_s_jpegcomp)(struct file *, void *, const struct v4l2_jpegcompression *);
+	int (*vidioc_g_enc_index)(struct file *, void *, struct v4l2_enc_idx *);
+	int (*vidioc_encoder_cmd)(struct file *, void *, struct v4l2_encoder_cmd *);
+	int (*vidioc_try_encoder_cmd)(struct file *, void *, struct v4l2_encoder_cmd *);
+	int (*vidioc_decoder_cmd)(struct file *, void *, struct v4l2_decoder_cmd *);
+	int (*vidioc_try_decoder_cmd)(struct file *, void *, struct v4l2_decoder_cmd *);
+	int (*vidioc_g_parm)(struct file *, void *, struct v4l2_streamparm *);
+	int (*vidioc_s_parm)(struct file *, void *, struct v4l2_streamparm *);
+	int (*vidioc_g_tuner)(struct file *, void *, struct v4l2_tuner *);
+	int (*vidioc_s_tuner)(struct file *, void *, const struct v4l2_tuner *);
+	int (*vidioc_g_frequency)(struct file *, void *, struct v4l2_frequency *);
+	int (*vidioc_s_frequency)(struct file *, void *, const struct v4l2_frequency *);
+	int (*vidioc_enum_freq_bands)(struct file *, void *, struct v4l2_frequency_band *);
+	int (*vidioc_g_sliced_vbi_cap)(struct file *, void *, struct v4l2_sliced_vbi_cap *);
+	int (*vidioc_log_status)(struct file *, void *);
+	int (*vidioc_s_hw_freq_seek)(struct file *, void *, const struct v4l2_hw_freq_seek *);
+	int (*vidioc_enum_framesizes)(struct file *, void *, struct v4l2_frmsizeenum *);
+	int (*vidioc_enum_frameintervals)(struct file *, void *, struct v4l2_frmivalenum *);
+	int (*vidioc_s_dv_timings)(struct file *, void *, struct v4l2_dv_timings *);
+	int (*vidioc_g_dv_timings)(struct file *, void *, struct v4l2_dv_timings *);
+	int (*vidioc_query_dv_timings)(struct file *, void *, struct v4l2_dv_timings *);
+	int (*vidioc_enum_dv_timings)(struct file *, void *, struct v4l2_enum_dv_timings *);
+	int (*vidioc_dv_timings_cap)(struct file *, void *, struct v4l2_dv_timings_cap *);
+	int (*vidioc_g_edid)(struct file *, void *, struct v4l2_edid *);
+	int (*vidioc_s_edid)(struct file *, void *, struct v4l2_edid *);
+	int (*vidioc_subscribe_event)(struct v4l2_fh *, const struct v4l2_event_subscription *);
+	int (*vidioc_unsubscribe_event)(struct v4l2_fh *, const struct v4l2_event_subscription *);
+	long (*vidioc_default)(struct file *, void *, bool, unsigned int, void *);
+};
+
+struct v4l2_timecode {
+	__u32 type;
+	__u32 flags;
+	__u8 frames;
+	__u8 seconds;
+	__u8 minutes;
+	__u8 hours;
+	__u8 userbits[4];
+};
+
+struct vb2_v4l2_buffer {
+	struct vb2_buffer vb2_buf;
+	__u32 flags;
+	__u32 field;
+	struct v4l2_timecode timecode;
+	__u32 sequence;
+	__s32 request_fd;
+	bool is_held;
+	struct vb2_plane planes[8];
+	u64 android_kabi_reserved1;
+};
+
+struct uvc_buffer {
+	struct vb2_v4l2_buffer buf;
+	struct list_head queue;
+	enum uvc_buffer_state state;
+	void *mem;
+	struct sg_table *sgt;
+	struct scatterlist *sg;
+	unsigned int offset;
+	unsigned int length;
+	unsigned int bytesused;
+};
+
+struct v4l2_event_vsync {
+	__u8 field;
+};
+
+struct v4l2_event_ctrl {
+	__u32 changes;
+	__u32 type;
+	union {
+		__s32 value;
+		__s64 value64;
+	};
+	__u32 flags;
+	__s32 minimum;
+	__s32 maximum;
+	__s32 step;
+	__s32 default_value;
+};
+
+struct v4l2_event_frame_sync {
+	__u32 frame_sequence;
+};
+
+struct v4l2_event_src_change {
+	__u32 changes;
+};
+
+struct v4l2_event_motion_det {
+	__u32 flags;
+	__u32 frame_sequence;
+	__u32 region_mask;
+};
+
+struct v4l2_event {
+	__u32 type;
+	union {
+		struct v4l2_event_vsync vsync;
+		struct v4l2_event_ctrl ctrl;
+		struct v4l2_event_frame_sync frame_sync;
+		struct v4l2_event_src_change src_change;
+		struct v4l2_event_motion_det motion_det;
+		__u8 data[64];
+	} u;
+	__u32 pending;
+	__u32 sequence;
+	struct __kernel_timespec timestamp;
+	__u32 id;
+	__u32 reserved[8];
+};
+
+struct uvc_request_data {
+	__s32 length;
+	__u8 data[60];
+};
+
+struct uvc_event {
+	union {
+		enum usb_device_speed speed;
+		struct usb_ctrlrequest req;
+		struct uvc_request_data data;
+	};
+};
+
+struct uvc_header_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubType;
+	__le16 bcdUVC;
+	__le16 wTotalLength;
+	__le32 dwClockFrequency;
+	__u8 bInCollection;
+	__u8 baInterfaceNr[0];
+} __attribute__((packed));
+
+enum vb2_io_modes {
+	VB2_MMAP = 1,
+	VB2_USERPTR = 2,
+	VB2_READ = 4,
+	VB2_WRITE = 8,
+	VB2_DMABUF = 16,
+};
+
+enum v4l2_field {
+	V4L2_FIELD_ANY = 0,
+	V4L2_FIELD_NONE = 1,
+	V4L2_FIELD_TOP = 2,
+	V4L2_FIELD_BOTTOM = 3,
+	V4L2_FIELD_INTERLACED = 4,
+	V4L2_FIELD_SEQ_TB = 5,
+	V4L2_FIELD_SEQ_BT = 6,
+	V4L2_FIELD_ALTERNATE = 7,
+	V4L2_FIELD_INTERLACED_TB = 8,
+	V4L2_FIELD_INTERLACED_BT = 9,
+};
+
+struct v4l2_requestbuffers {
+	__u32 count;
+	__u32 type;
+	__u32 memory;
+	__u32 capabilities;
+	__u8 flags;
+	__u8 reserved[3];
+};
+
+struct __kernel_v4l2_timeval {
+	long long tv_sec;
+	long long tv_usec;
+};
+
+struct v4l2_plane;
+
+struct v4l2_buffer {
+	__u32 index;
+	__u32 type;
+	__u32 bytesused;
+	__u32 flags;
+	__u32 field;
+	struct __kernel_v4l2_timeval timestamp;
+	struct v4l2_timecode timecode;
+	__u32 sequence;
+	__u32 memory;
+	union {
+		__u32 offset;
+		unsigned long userptr;
+		struct v4l2_plane *planes;
+		__s32 fd;
+	} m;
+	__u32 length;
+	__u32 reserved2;
+	union {
+		__s32 request_fd;
+		__u32 reserved;
+	};
+};
+
+struct v4l2_plane {
+	__u32 bytesused;
+	__u32 length;
+	union {
+		__u32 mem_offset;
+		unsigned long userptr;
+		__s32 fd;
+	} m;
+	__u32 data_offset;
+	__u32 reserved[11];
+};
+
+struct v4l2_capability {
+	__u8 driver[16];
+	__u8 card[32];
+	__u8 bus_info[32];
+	__u32 version;
+	__u32 capabilities;
+	__u32 device_caps;
+	__u32 reserved[3];
+};
+
+struct v4l2_fmtdesc {
+	__u32 index;
+	__u32 type;
+	__u32 flags;
+	__u8 description[32];
+	__u32 pixelformat;
+	__u32 mbus_code;
+	__u32 reserved[3];
+};
+
+struct v4l2_pix_format {
+	__u32 width;
+	__u32 height;
+	__u32 pixelformat;
+	__u32 field;
+	__u32 bytesperline;
+	__u32 sizeimage;
+	__u32 colorspace;
+	__u32 priv;
+	__u32 flags;
+	union {
+		__u32 ycbcr_enc;
+		__u32 hsv_enc;
+	};
+	__u32 quantization;
+	__u32 xfer_func;
+};
+
+struct v4l2_plane_pix_format {
+	__u32 sizeimage;
+	__u32 bytesperline;
+	__u16 reserved[6];
+};
+
+struct v4l2_pix_format_mplane {
+	__u32 width;
+	__u32 height;
+	__u32 pixelformat;
+	__u32 field;
+	__u32 colorspace;
+	struct v4l2_plane_pix_format plane_fmt[8];
+	__u8 num_planes;
+	__u8 flags;
+	union {
+		__u8 ycbcr_enc;
+		__u8 hsv_enc;
+	};
+	__u8 quantization;
+	__u8 xfer_func;
+	__u8 reserved[7];
+};
+
+struct v4l2_clip;
+
+struct v4l2_window {
+	struct v4l2_rect w;
+	__u32 field;
+	__u32 chromakey;
+	struct v4l2_clip *clips;
+	__u32 clipcount;
+	void __attribute__((btf_type_tag("user"))) *bitmap;
+	__u8 global_alpha;
+};
+
+struct v4l2_sdr_format {
+	__u32 pixelformat;
+	__u32 buffersize;
+	__u8 reserved[24];
+};
+
+struct v4l2_meta_format {
+	__u32 dataformat;
+	__u32 buffersize;
+};
+
+struct v4l2_format {
+	__u32 type;
+	union {
+		struct v4l2_pix_format pix;
+		struct v4l2_pix_format_mplane pix_mp;
+		struct v4l2_window win;
+		struct v4l2_vbi_format vbi;
+		struct v4l2_sliced_vbi_format sliced;
+		struct v4l2_sdr_format sdr;
+		struct v4l2_meta_format meta;
+		__u8 raw_data[200];
+	} fmt;
+};
+
+struct v4l2_clip {
+	struct v4l2_rect c;
+	struct v4l2_clip __attribute__((btf_type_tag("user"))) *next;
+};
+
+struct v4l2_exportbuffer {
+	__u32 type;
+	__u32 index;
+	__u32 plane;
+	__u32 flags;
+	__s32 fd;
+	__u32 reserved[11];
+};
+
+struct v4l2_create_buffers {
+	__u32 index;
+	__u32 count;
+	__u32 memory;
+	struct v4l2_format format;
+	__u32 capabilities;
+	__u32 flags;
+	__u32 reserved[6];
+};
+
+struct v4l2_framebuffer {
+	__u32 capability;
+	__u32 flags;
+	void *base;
+	struct {
+		__u32 width;
+		__u32 height;
+		__u32 pixelformat;
+		__u32 field;
+		__u32 bytesperline;
+		__u32 sizeimage;
+		__u32 colorspace;
+		__u32 priv;
+	} fmt;
+};
+
+struct v4l2_input {
+	__u32 index;
+	__u8 name[32];
+	__u32 type;
+	__u32 audioset;
+	__u32 tuner;
+	v4l2_std_id std;
+	__u32 status;
+	__u32 capabilities;
+	__u32 reserved[3];
+};
+
+struct v4l2_output {
+	__u32 index;
+	__u8 name[32];
+	__u32 type;
+	__u32 audioset;
+	__u32 modulator;
+	v4l2_std_id std;
+	__u32 capabilities;
+	__u32 reserved[3];
+};
+
+struct v4l2_queryctrl {
+	__u32 id;
+	__u32 type;
+	__u8 name[32];
+	__s32 minimum;
+	__s32 maximum;
+	__s32 step;
+	__s32 default_value;
+	__u32 flags;
+	__u32 reserved[2];
+};
+
+struct v4l2_query_ext_ctrl {
+	__u32 id;
+	__u32 type;
+	char name[32];
+	__s64 minimum;
+	__s64 maximum;
+	__u64 step;
+	__s64 default_value;
+	__u32 flags;
+	__u32 elem_size;
+	__u32 elems;
+	__u32 nr_of_dims;
+	__u32 dims[4];
+	__u32 reserved[32];
+};
+
+struct v4l2_control {
+	__u32 id;
+	__s32 value;
+};
+
+struct v4l2_ext_control;
+
+struct v4l2_ext_controls {
+	union {
+		__u32 which;
+	};
+	__u32 count;
+	__u32 error_idx;
+	__s32 request_fd;
+	__u32 reserved[1];
+	struct v4l2_ext_control *controls;
+};
+
+struct v4l2_area;
+
+struct v4l2_ctrl_h264_sps;
+
+struct v4l2_ctrl_h264_pps;
+
+struct v4l2_ctrl_h264_scaling_matrix;
+
+struct v4l2_ctrl_h264_pred_weights;
+
+struct v4l2_ctrl_h264_slice_params;
+
+struct v4l2_ctrl_h264_decode_params;
+
+struct v4l2_ctrl_fwht_params;
+
+struct v4l2_ctrl_vp8_frame;
+
+struct v4l2_ctrl_mpeg2_sequence;
+
+struct v4l2_ctrl_mpeg2_picture;
+
+struct v4l2_ctrl_mpeg2_quantisation;
+
+struct v4l2_ctrl_vp9_compressed_hdr;
+
+struct v4l2_ctrl_vp9_frame;
+
+struct v4l2_ctrl_hevc_sps;
+
+struct v4l2_ctrl_hevc_pps;
+
+struct v4l2_ctrl_hevc_slice_params;
+
+struct v4l2_ctrl_hevc_scaling_matrix;
+
+struct v4l2_ctrl_hevc_decode_params;
+
+struct v4l2_ctrl_av1_sequence;
+
+struct v4l2_ctrl_av1_tile_group_entry;
+
+struct v4l2_ctrl_av1_frame;
+
+struct v4l2_ctrl_av1_film_grain;
+
+struct v4l2_ext_control {
+	__u32 id;
+	__u32 size;
+	__u32 reserved2[1];
+	union {
+		__s32 value;
+		__s64 value64;
+		char __attribute__((btf_type_tag("user"))) *string;
+		__u8 __attribute__((btf_type_tag("user"))) *p_u8;
+		__u16 __attribute__((btf_type_tag("user"))) *p_u16;
+		__u32 __attribute__((btf_type_tag("user"))) *p_u32;
+		__s32 __attribute__((btf_type_tag("user"))) *p_s32;
+		__s64 __attribute__((btf_type_tag("user"))) *p_s64;
+		struct v4l2_area __attribute__((btf_type_tag("user"))) *p_area;
+		struct v4l2_ctrl_h264_sps __attribute__((btf_type_tag("user"))) *p_h264_sps;
+		struct v4l2_ctrl_h264_pps *p_h264_pps;
+		struct v4l2_ctrl_h264_scaling_matrix __attribute__((btf_type_tag("user"))) *p_h264_scaling_matrix;
+		struct v4l2_ctrl_h264_pred_weights __attribute__((btf_type_tag("user"))) *p_h264_pred_weights;
+		struct v4l2_ctrl_h264_slice_params __attribute__((btf_type_tag("user"))) *p_h264_slice_params;
+		struct v4l2_ctrl_h264_decode_params __attribute__((btf_type_tag("user"))) *p_h264_decode_params;
+		struct v4l2_ctrl_fwht_params __attribute__((btf_type_tag("user"))) *p_fwht_params;
+		struct v4l2_ctrl_vp8_frame __attribute__((btf_type_tag("user"))) *p_vp8_frame;
+		struct v4l2_ctrl_mpeg2_sequence __attribute__((btf_type_tag("user"))) *p_mpeg2_sequence;
+		struct v4l2_ctrl_mpeg2_picture __attribute__((btf_type_tag("user"))) *p_mpeg2_picture;
+		struct v4l2_ctrl_mpeg2_quantisation __attribute__((btf_type_tag("user"))) *p_mpeg2_quantisation;
+		struct v4l2_ctrl_vp9_compressed_hdr __attribute__((btf_type_tag("user"))) *p_vp9_compressed_hdr_probs;
+		struct v4l2_ctrl_vp9_frame __attribute__((btf_type_tag("user"))) *p_vp9_frame;
+		struct v4l2_ctrl_hevc_sps __attribute__((btf_type_tag("user"))) *p_hevc_sps;
+		struct v4l2_ctrl_hevc_pps __attribute__((btf_type_tag("user"))) *p_hevc_pps;
+		struct v4l2_ctrl_hevc_slice_params __attribute__((btf_type_tag("user"))) *p_hevc_slice_params;
+		struct v4l2_ctrl_hevc_scaling_matrix __attribute__((btf_type_tag("user"))) *p_hevc_scaling_matrix;
+		struct v4l2_ctrl_hevc_decode_params __attribute__((btf_type_tag("user"))) *p_hevc_decode_params;
+		struct v4l2_ctrl_av1_sequence __attribute__((btf_type_tag("user"))) *p_av1_sequence;
+		struct v4l2_ctrl_av1_tile_group_entry __attribute__((btf_type_tag("user"))) *p_av1_tile_group_entry;
+		struct v4l2_ctrl_av1_frame __attribute__((btf_type_tag("user"))) *p_av1_frame;
+		struct v4l2_ctrl_av1_film_grain __attribute__((btf_type_tag("user"))) *p_av1_film_grain;
+		void __attribute__((btf_type_tag("user"))) *ptr;
+	};
+} __attribute__((packed));
+
+struct v4l2_area {
+	__u32 width;
+	__u32 height;
+};
+
+struct v4l2_ctrl_h264_sps {
+	__u8 profile_idc;
+	__u8 constraint_set_flags;
+	__u8 level_idc;
+	__u8 seq_parameter_set_id;
+	__u8 chroma_format_idc;
+	__u8 bit_depth_luma_minus8;
+	__u8 bit_depth_chroma_minus8;
+	__u8 log2_max_frame_num_minus4;
+	__u8 pic_order_cnt_type;
+	__u8 log2_max_pic_order_cnt_lsb_minus4;
+	__u8 max_num_ref_frames;
+	__u8 num_ref_frames_in_pic_order_cnt_cycle;
+	__s32 offset_for_ref_frame[255];
+	__s32 offset_for_non_ref_pic;
+	__s32 offset_for_top_to_bottom_field;
+	__u16 pic_width_in_mbs_minus1;
+	__u16 pic_height_in_map_units_minus1;
+	__u32 flags;
+};
+
+struct v4l2_ctrl_h264_pps {
+	__u8 pic_parameter_set_id;
+	__u8 seq_parameter_set_id;
+	__u8 num_slice_groups_minus1;
+	__u8 num_ref_idx_l0_default_active_minus1;
+	__u8 num_ref_idx_l1_default_active_minus1;
+	__u8 weighted_bipred_idc;
+	__s8 pic_init_qp_minus26;
+	__s8 pic_init_qs_minus26;
+	__s8 chroma_qp_index_offset;
+	__s8 second_chroma_qp_index_offset;
+	__u16 flags;
+};
+
+struct v4l2_ctrl_h264_scaling_matrix {
+	__u8 scaling_list_4x4[96];
+	__u8 scaling_list_8x8[384];
+};
+
+struct v4l2_h264_weight_factors {
+	__s16 luma_weight[32];
+	__s16 luma_offset[32];
+	__s16 chroma_weight[64];
+	__s16 chroma_offset[64];
+};
+
+struct v4l2_ctrl_h264_pred_weights {
+	__u16 luma_log2_weight_denom;
+	__u16 chroma_log2_weight_denom;
+	struct v4l2_h264_weight_factors weight_factors[2];
+};
+
+struct v4l2_h264_reference {
+	__u8 fields;
+	__u8 index;
+};
+
+struct v4l2_ctrl_h264_slice_params {
+	__u32 header_bit_size;
+	__u32 first_mb_in_slice;
+	__u8 slice_type;
+	__u8 colour_plane_id;
+	__u8 redundant_pic_cnt;
+	__u8 cabac_init_idc;
+	__s8 slice_qp_delta;
+	__s8 slice_qs_delta;
+	__u8 disable_deblocking_filter_idc;
+	__s8 slice_alpha_c0_offset_div2;
+	__s8 slice_beta_offset_div2;
+	__u8 num_ref_idx_l0_active_minus1;
+	__u8 num_ref_idx_l1_active_minus1;
+	__u8 reserved;
+	struct v4l2_h264_reference ref_pic_list0[32];
+	struct v4l2_h264_reference ref_pic_list1[32];
+	__u32 flags;
+};
+
+struct v4l2_h264_dpb_entry {
+	__u64 reference_ts;
+	__u32 pic_num;
+	__u16 frame_num;
+	__u8 fields;
+	__u8 reserved[5];
+	__s32 top_field_order_cnt;
+	__s32 bottom_field_order_cnt;
+	__u32 flags;
+};
+
+struct v4l2_ctrl_h264_decode_params {
+	struct v4l2_h264_dpb_entry dpb[16];
+	__u16 nal_ref_idc;
+	__u16 frame_num;
+	__s32 top_field_order_cnt;
+	__s32 bottom_field_order_cnt;
+	__u16 idr_pic_id;
+	__u16 pic_order_cnt_lsb;
+	__s32 delta_pic_order_cnt_bottom;
+	__s32 delta_pic_order_cnt0;
+	__s32 delta_pic_order_cnt1;
+	__u32 dec_ref_pic_marking_bit_size;
+	__u32 pic_order_cnt_bit_size;
+	__u32 slice_group_change_cycle;
+	__u32 reserved;
+	__u32 flags;
+};
+
+struct v4l2_ctrl_fwht_params {
+	__u64 backward_ref_ts;
+	__u32 version;
+	__u32 width;
+	__u32 height;
+	__u32 flags;
+	__u32 colorspace;
+	__u32 xfer_func;
+	__u32 ycbcr_enc;
+	__u32 quantization;
+};
+
+struct v4l2_vp8_segment {
+	__s8 quant_update[4];
+	__s8 lf_update[4];
+	__u8 segment_probs[3];
+	__u8 padding;
+	__u32 flags;
+};
+
+struct v4l2_vp8_loop_filter {
+	__s8 ref_frm_delta[4];
+	__s8 mb_mode_delta[4];
+	__u8 sharpness_level;
+	__u8 level;
+	__u16 padding;
+	__u32 flags;
+};
+
+struct v4l2_vp8_quantization {
+	__u8 y_ac_qi;
+	__s8 y_dc_delta;
+	__s8 y2_dc_delta;
+	__s8 y2_ac_delta;
+	__s8 uv_dc_delta;
+	__s8 uv_ac_delta;
+	__u16 padding;
+};
+
+struct v4l2_vp8_entropy {
+	__u8 coeff_probs[1056];
+	__u8 y_mode_probs[4];
+	__u8 uv_mode_probs[3];
+	__u8 mv_probs[38];
+	__u8 padding[3];
+};
+
+struct v4l2_vp8_entropy_coder_state {
+	__u8 range;
+	__u8 value;
+	__u8 bit_count;
+	__u8 padding;
+};
+
+struct v4l2_ctrl_vp8_frame {
+	struct v4l2_vp8_segment segment;
+	struct v4l2_vp8_loop_filter lf;
+	struct v4l2_vp8_quantization quant;
+	struct v4l2_vp8_entropy entropy;
+	struct v4l2_vp8_entropy_coder_state coder_state;
+	__u16 width;
+	__u16 height;
+	__u8 horizontal_scale;
+	__u8 vertical_scale;
+	__u8 version;
+	__u8 prob_skip_false;
+	__u8 prob_intra;
+	__u8 prob_last;
+	__u8 prob_gf;
+	__u8 num_dct_parts;
+	__u32 first_part_size;
+	__u32 first_part_header_bits;
+	__u32 dct_part_sizes[8];
+	__u64 last_frame_ts;
+	__u64 golden_frame_ts;
+	__u64 alt_frame_ts;
+	__u64 flags;
+};
+
+struct v4l2_ctrl_mpeg2_sequence {
+	__u16 horizontal_size;
+	__u16 vertical_size;
+	__u32 vbv_buffer_size;
+	__u16 profile_and_level_indication;
+	__u8 chroma_format;
+	__u8 flags;
+};
+
+struct v4l2_ctrl_mpeg2_picture {
+	__u64 backward_ref_ts;
+	__u64 forward_ref_ts;
+	__u32 flags;
+	__u8 f_code[4];
+	__u8 picture_coding_type;
+	__u8 picture_structure;
+	__u8 intra_dc_precision;
+	__u8 reserved[5];
+};
+
+struct v4l2_ctrl_mpeg2_quantisation {
+	__u8 intra_quantiser_matrix[64];
+	__u8 non_intra_quantiser_matrix[64];
+	__u8 chroma_intra_quantiser_matrix[64];
+	__u8 chroma_non_intra_quantiser_matrix[64];
+};
+
+struct v4l2_vp9_mv_probs {
+	__u8 joint[3];
+	__u8 sign[2];
+	__u8 classes[20];
+	__u8 class0_bit[2];
+	__u8 bits[20];
+	__u8 class0_fr[12];
+	__u8 fr[6];
+	__u8 class0_hp[2];
+	__u8 hp[2];
+};
+
+struct v4l2_ctrl_vp9_compressed_hdr {
+	__u8 tx_mode;
+	__u8 tx8[2];
+	__u8 tx16[4];
+	__u8 tx32[6];
+	__u8 coef[1728];
+	__u8 skip[3];
+	__u8 inter_mode[21];
+	__u8 interp_filter[8];
+	__u8 is_inter[4];
+	__u8 comp_mode[5];
+	__u8 single_ref[10];
+	__u8 comp_ref[5];
+	__u8 y_mode[36];
+	__u8 uv_mode[90];
+	__u8 partition[48];
+	struct v4l2_vp9_mv_probs mv;
+};
+
+struct v4l2_vp9_loop_filter {
+	__s8 ref_deltas[4];
+	__s8 mode_deltas[2];
+	__u8 level;
+	__u8 sharpness;
+	__u8 flags;
+	__u8 reserved[7];
+};
+
+struct v4l2_vp9_quantization {
+	__u8 base_q_idx;
+	__s8 delta_q_y_dc;
+	__s8 delta_q_uv_dc;
+	__s8 delta_q_uv_ac;
+	__u8 reserved[4];
+};
+
+struct v4l2_vp9_segmentation {
+	__s16 feature_data[32];
+	__u8 feature_enabled[8];
+	__u8 tree_probs[7];
+	__u8 pred_probs[3];
+	__u8 flags;
+	__u8 reserved[5];
+};
+
+struct v4l2_ctrl_vp9_frame {
+	struct v4l2_vp9_loop_filter lf;
+	struct v4l2_vp9_quantization quant;
+	struct v4l2_vp9_segmentation seg;
+	__u32 flags;
+	__u16 compressed_header_size;
+	__u16 uncompressed_header_size;
+	__u16 frame_width_minus_1;
+	__u16 frame_height_minus_1;
+	__u16 render_width_minus_1;
+	__u16 render_height_minus_1;
+	__u64 last_frame_ts;
+	__u64 golden_frame_ts;
+	__u64 alt_frame_ts;
+	__u8 ref_frame_sign_bias;
+	__u8 reset_frame_context;
+	__u8 frame_context_idx;
+	__u8 profile;
+	__u8 bit_depth;
+	__u8 interpolation_filter;
+	__u8 tile_cols_log2;
+	__u8 tile_rows_log2;
+	__u8 reference_mode;
+	__u8 reserved[7];
+};
+
+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;
+};
+
+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;
+};
+
+struct v4l2_hevc_pred_weight_table {
+	__s8 delta_luma_weight_l0[16];
+	__s8 luma_offset_l0[16];
+	__s8 delta_chroma_weight_l0[32];
+	__s8 chroma_offset_l0[32];
+	__s8 delta_luma_weight_l1[16];
+	__s8 luma_offset_l1[16];
+	__s8 delta_chroma_weight_l1[32];
+	__s8 chroma_offset_l1[32];
+	__u8 luma_log2_weight_denom;
+	__s8 delta_chroma_log2_weight_denom;
+};
+
+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[16];
+	__u8 ref_idx_l1[16];
+	__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;
+};
+
+struct v4l2_ctrl_hevc_scaling_matrix {
+	__u8 scaling_list_4x4[96];
+	__u8 scaling_list_8x8[384];
+	__u8 scaling_list_16x16[384];
+	__u8 scaling_list_32x32[128];
+	__u8 scaling_list_dc_coef_16x16[6];
+	__u8 scaling_list_dc_coef_32x32[2];
+};
+
+struct v4l2_hevc_dpb_entry {
+	__u64 timestamp;
+	__u8 flags;
+	__u8 field_pic;
+	__u16 reserved;
+	__s32 pic_order_cnt_val;
+};
+
+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[16];
+	__u8 poc_st_curr_after[16];
+	__u8 poc_lt_curr[16];
+	__u8 num_delta_pocs_of_ref_rps_idx;
+	__u8 reserved[3];
+	struct v4l2_hevc_dpb_entry dpb[16];
+	__u64 flags;
+};
+
+struct v4l2_ctrl_av1_sequence {
+	__u32 flags;
+	__u8 seq_profile;
+	__u8 order_hint_bits;
+	__u8 bit_depth;
+	__u8 reserved;
+	__u16 max_frame_width_minus_1;
+	__u16 max_frame_height_minus_1;
+};
+
+struct v4l2_ctrl_av1_tile_group_entry {
+	__u32 tile_offset;
+	__u32 tile_size;
+	__u32 tile_row;
+	__u32 tile_col;
+};
+
+struct v4l2_av1_tile_info {
+	__u8 flags;
+	__u8 context_update_tile_id;
+	__u8 tile_cols;
+	__u8 tile_rows;
+	__u32 mi_col_starts[65];
+	__u32 mi_row_starts[65];
+	__u32 width_in_sbs_minus_1[64];
+	__u32 height_in_sbs_minus_1[64];
+	__u8 tile_size_bytes;
+	__u8 reserved[3];
+};
+
+struct v4l2_av1_quantization {
+	__u8 flags;
+	__u8 base_q_idx;
+	__s8 delta_q_y_dc;
+	__s8 delta_q_u_dc;
+	__s8 delta_q_u_ac;
+	__s8 delta_q_v_dc;
+	__s8 delta_q_v_ac;
+	__u8 qm_y;
+	__u8 qm_u;
+	__u8 qm_v;
+	__u8 delta_q_res;
+};
+
+struct v4l2_av1_segmentation {
+	__u8 flags;
+	__u8 last_active_seg_id;
+	__u8 feature_enabled[8];
+	__s16 feature_data[64];
+};
+
+struct v4l2_av1_loop_filter {
+	__u8 flags;
+	__u8 level[4];
+	__u8 sharpness;
+	__s8 ref_deltas[8];
+	__s8 mode_deltas[2];
+	__u8 delta_lf_res;
+};
+
+struct v4l2_av1_cdef {
+	__u8 damping_minus_3;
+	__u8 bits;
+	__u8 y_pri_strength[8];
+	__u8 y_sec_strength[8];
+	__u8 uv_pri_strength[8];
+	__u8 uv_sec_strength[8];
+};
+
+enum v4l2_av1_frame_restoration_type {
+	V4L2_AV1_FRAME_RESTORE_NONE = 0,
+	V4L2_AV1_FRAME_RESTORE_WIENER = 1,
+	V4L2_AV1_FRAME_RESTORE_SGRPROJ = 2,
+	V4L2_AV1_FRAME_RESTORE_SWITCHABLE = 3,
+};
+
+struct v4l2_av1_loop_restoration {
+	__u8 flags;
+	__u8 lr_unit_shift;
+	__u8 lr_uv_shift;
+	__u8 reserved;
+	enum v4l2_av1_frame_restoration_type frame_restoration_type[3];
+	__u32 loop_restoration_size[3];
+};
+
+enum v4l2_av1_warp_model {
+	V4L2_AV1_WARP_MODEL_IDENTITY = 0,
+	V4L2_AV1_WARP_MODEL_TRANSLATION = 1,
+	V4L2_AV1_WARP_MODEL_ROTZOOM = 2,
+	V4L2_AV1_WARP_MODEL_AFFINE = 3,
+};
+
+struct v4l2_av1_global_motion {
+	__u8 flags[8];
+	enum v4l2_av1_warp_model type[8];
+	__s32 params[48];
+	__u8 invalid;
+	__u8 reserved[3];
+};
+
+enum v4l2_av1_frame_type {
+	V4L2_AV1_KEY_FRAME = 0,
+	V4L2_AV1_INTER_FRAME = 1,
+	V4L2_AV1_INTRA_ONLY_FRAME = 2,
+	V4L2_AV1_SWITCH_FRAME = 3,
+};
+
+enum v4l2_av1_interpolation_filter {
+	V4L2_AV1_INTERPOLATION_FILTER_EIGHTTAP = 0,
+	V4L2_AV1_INTERPOLATION_FILTER_EIGHTTAP_SMOOTH = 1,
+	V4L2_AV1_INTERPOLATION_FILTER_EIGHTTAP_SHARP = 2,
+	V4L2_AV1_INTERPOLATION_FILTER_BILINEAR = 3,
+	V4L2_AV1_INTERPOLATION_FILTER_SWITCHABLE = 4,
+};
+
+enum v4l2_av1_tx_mode {
+	V4L2_AV1_TX_MODE_ONLY_4X4 = 0,
+	V4L2_AV1_TX_MODE_LARGEST = 1,
+	V4L2_AV1_TX_MODE_SELECT = 2,
+};
+
+struct v4l2_ctrl_av1_frame {
+	struct v4l2_av1_tile_info tile_info;
+	struct v4l2_av1_quantization quantization;
+	__u8 superres_denom;
+	struct v4l2_av1_segmentation segmentation;
+	struct v4l2_av1_loop_filter loop_filter;
+	struct v4l2_av1_cdef cdef;
+	__u8 skip_mode_frame[2];
+	__u8 primary_ref_frame;
+	struct v4l2_av1_loop_restoration loop_restoration;
+	struct v4l2_av1_global_motion global_motion;
+	__u32 flags;
+	enum v4l2_av1_frame_type frame_type;
+	__u32 order_hint;
+	__u32 upscaled_width;
+	enum v4l2_av1_interpolation_filter interpolation_filter;
+	enum v4l2_av1_tx_mode tx_mode;
+	__u32 frame_width_minus_1;
+	__u32 frame_height_minus_1;
+	__u16 render_width_minus_1;
+	__u16 render_height_minus_1;
+	__u32 current_frame_id;
+	__u32 buffer_removal_time[32];
+	__u8 reserved[4];
+	__u32 order_hints[8];
+	__u64 reference_frame_ts[8];
+	__s8 ref_frame_idx[7];
+	__u8 refresh_frame_flags;
+};
+
+struct v4l2_ctrl_av1_film_grain {
+	__u8 flags;
+	__u8 cr_mult;
+	__u16 grain_seed;
+	__u8 film_grain_params_ref_idx;
+	__u8 num_y_points;
+	__u8 point_y_value[16];
+	__u8 point_y_scaling[16];
+	__u8 num_cb_points;
+	__u8 point_cb_value[16];
+	__u8 point_cb_scaling[16];
+	__u8 num_cr_points;
+	__u8 point_cr_value[16];
+	__u8 point_cr_scaling[16];
+	__u8 grain_scaling_minus_8;
+	__u8 ar_coeff_lag;
+	__u8 ar_coeffs_y_plus_128[25];
+	__u8 ar_coeffs_cb_plus_128[25];
+	__u8 ar_coeffs_cr_plus_128[25];
+	__u8 ar_coeff_shift_minus_6;
+	__u8 grain_scale_shift;
+	__u8 cb_mult;
+	__u8 cb_luma_mult;
+	__u8 cr_luma_mult;
+	__u16 cb_offset;
+	__u16 cr_offset;
+	__u8 reserved[4];
+};
+
+struct v4l2_querymenu {
+	__u32 id;
+	__u32 index;
+	union {
+		__u8 name[32];
+		__s64 value;
+	};
+	__u32 reserved;
+} __attribute__((packed));
+
+struct v4l2_audio {
+	__u32 index;
+	__u8 name[32];
+	__u32 capability;
+	__u32 mode;
+	__u32 reserved[2];
+};
+
+struct v4l2_audioout {
+	__u32 index;
+	__u8 name[32];
+	__u32 capability;
+	__u32 mode;
+	__u32 reserved[2];
+};
+
+struct v4l2_selection {
+	__u32 type;
+	__u32 target;
+	__u32 flags;
+	struct v4l2_rect r;
+	__u32 reserved[9];
+};
+
+struct v4l2_jpegcompression {
+	int quality;
+	int APPn;
+	int APP_len;
+	char APP_data[60];
+	int COM_len;
+	char COM_data[60];
+	__u32 jpeg_markers;
+};
+
+struct v4l2_enc_idx_entry {
+	__u64 offset;
+	__u64 pts;
+	__u32 length;
+	__u32 flags;
+	__u32 reserved[2];
+};
+
+struct v4l2_enc_idx {
+	__u32 entries;
+	__u32 entries_cap;
+	__u32 reserved[4];
+	struct v4l2_enc_idx_entry entry[64];
+};
+
+struct v4l2_encoder_cmd {
+	__u32 cmd;
+	__u32 flags;
+	union {
+		struct {
+			__u32 data[8];
+		} raw;
+	};
+};
+
+struct v4l2_decoder_cmd {
+	__u32 cmd;
+	__u32 flags;
+	union {
+		struct {
+			__u64 pts;
+		} stop;
+		struct {
+			__s32 speed;
+			__u32 format;
+		} start;
+		struct {
+			__u32 data[16];
+		} raw;
+	};
+};
+
+struct v4l2_captureparm {
+	__u32 capability;
+	__u32 capturemode;
+	struct v4l2_fract timeperframe;
+	__u32 extendedmode;
+	__u32 readbuffers;
+	__u32 reserved[4];
+};
+
+struct v4l2_outputparm {
+	__u32 capability;
+	__u32 outputmode;
+	struct v4l2_fract timeperframe;
+	__u32 extendedmode;
+	__u32 writebuffers;
+	__u32 reserved[4];
+};
+
+struct v4l2_streamparm {
+	__u32 type;
+	union {
+		struct v4l2_captureparm capture;
+		struct v4l2_outputparm output;
+		__u8 raw_data[200];
+	} parm;
+};
+
+struct v4l2_hw_freq_seek {
+	__u32 tuner;
+	__u32 type;
+	__u32 seek_upward;
+	__u32 wrap_around;
+	__u32 spacing;
+	__u32 rangelow;
+	__u32 rangehigh;
+	__u32 reserved[5];
+};
+
+struct v4l2_frmsize_discrete {
+	__u32 width;
+	__u32 height;
+};
+
+struct v4l2_frmsize_stepwise {
+	__u32 min_width;
+	__u32 max_width;
+	__u32 step_width;
+	__u32 min_height;
+	__u32 max_height;
+	__u32 step_height;
+};
+
+struct v4l2_frmsizeenum {
+	__u32 index;
+	__u32 pixel_format;
+	__u32 type;
+	union {
+		struct v4l2_frmsize_discrete discrete;
+		struct v4l2_frmsize_stepwise stepwise;
+	};
+	__u32 reserved[2];
+};
+
+struct v4l2_frmival_stepwise {
+	struct v4l2_fract min;
+	struct v4l2_fract max;
+	struct v4l2_fract step;
+};
+
+struct v4l2_frmivalenum {
+	__u32 index;
+	__u32 pixel_format;
+	__u32 width;
+	__u32 height;
+	__u32 type;
+	union {
+		struct v4l2_fract discrete;
+		struct v4l2_frmival_stepwise stepwise;
+	};
+	__u32 reserved[2];
+};
+
+enum uvcg_format_type {
+	UVCG_UNCOMPRESSED = 0,
+	UVCG_MJPEG = 1,
+};
+
+enum v4l2_colorspace {
+	V4L2_COLORSPACE_DEFAULT = 0,
+	V4L2_COLORSPACE_SMPTE170M = 1,
+	V4L2_COLORSPACE_SMPTE240M = 2,
+	V4L2_COLORSPACE_REC709 = 3,
+	V4L2_COLORSPACE_BT878 = 4,
+	V4L2_COLORSPACE_470_SYSTEM_M = 5,
+	V4L2_COLORSPACE_470_SYSTEM_BG = 6,
+	V4L2_COLORSPACE_JPEG = 7,
+	V4L2_COLORSPACE_SRGB = 8,
+	V4L2_COLORSPACE_OPRGB = 9,
+	V4L2_COLORSPACE_BT2020 = 10,
+	V4L2_COLORSPACE_RAW = 11,
+	V4L2_COLORSPACE_DCI_P3 = 12,
+	V4L2_COLORSPACE_LAST = 13,
+};
+
+enum v4l2_frmsizetypes {
+	V4L2_FRMSIZE_TYPE_DISCRETE = 1,
+	V4L2_FRMSIZE_TYPE_CONTINUOUS = 2,
+	V4L2_FRMSIZE_TYPE_STEPWISE = 3,
+};
+
+enum v4l2_frmivaltypes {
+	V4L2_FRMIVAL_TYPE_DISCRETE = 1,
+	V4L2_FRMIVAL_TYPE_CONTINUOUS = 2,
+	V4L2_FRMIVAL_TYPE_STEPWISE = 3,
+};
+
+struct uvcg_format;
+
+struct uvcg_format_ptr {
+	struct uvcg_format *fmt;
+	struct list_head entry;
+};
+
+struct uvcg_color_matching;
+
+struct uvcg_format {
+	struct config_group group;
+	enum uvcg_format_type type;
+	unsigned int linked;
+	struct list_head frames;
+	unsigned int num_frames;
+	__u8 bmaControls[1];
+	struct uvcg_color_matching *color_matching;
+};
+
+struct uvc_color_matching_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubType;
+	__u8 bColorPrimaries;
+	__u8 bTransferCharacteristics;
+	__u8 bMatrixCoefficients;
+};
+
+struct uvcg_color_matching {
+	struct config_group group;
+	struct uvc_color_matching_descriptor desc;
+	unsigned int refcnt;
+};
+
+struct uvc_format_uncompressed {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubType;
+	__u8 bFormatIndex;
+	__u8 bNumFrameDescriptors;
+	__u8 guidFormat[16];
+	__u8 bBitsPerPixel;
+	__u8 bDefaultFrameIndex;
+	__u8 bAspectRatioX;
+	__u8 bAspectRatioY;
+	__u8 bmInterlaceFlags;
+	__u8 bCopyProtect;
+};
+
+struct uvcg_uncompressed {
+	struct uvcg_format fmt;
+	struct uvc_format_uncompressed desc;
+};
+
+struct uvcg_frame;
+
+struct uvcg_frame_ptr {
+	struct uvcg_frame *frm;
+	struct list_head entry;
+};
+
+struct uvcg_frame {
+	struct config_item item;
+	enum uvcg_format_type fmt_type;
+	struct {
+		u8 b_length;
+		u8 b_descriptor_type;
+		u8 b_descriptor_subtype;
+		u8 b_frame_index;
+		u8 bm_capabilities;
+		u16 w_width;
+		u16 w_height;
+		u32 dw_min_bit_rate;
+		u32 dw_max_bit_rate;
+		u32 dw_max_video_frame_buffer_size;
+		u32 dw_default_frame_interval;
+		u8 b_frame_interval_type;
+	} __attribute__((packed)) frame;
+	u32 *dw_frame_interval;
+};
+
+struct uvc_file_handle {
+	struct v4l2_fh vfh;
+	struct uvc_video *device;
+	bool is_uvc_app_handle;
+};
+
+struct uvc_format_desc {
+	u8 guid[16];
+	u32 fcc;
+};
+
+struct v4l2_subscribed_event;
+
+struct v4l2_subscribed_event_ops {
+	int (*add)(struct v4l2_subscribed_event *, unsigned int);
+	void (*del)(struct v4l2_subscribed_event *);
+	void (*replace)(struct v4l2_event *, const struct v4l2_event *);
+	void (*merge)(const struct v4l2_event *, struct v4l2_event *);
+};
+
+struct v4l2_kevent {
+	struct list_head list;
+	struct v4l2_subscribed_event *sev;
+	struct v4l2_event event;
+	u64 ts;
+};
+
+struct v4l2_subscribed_event {
+	struct list_head list;
+	u32 type;
+	u32 id;
+	u32 flags;
+	struct v4l2_fh *fh;
+	struct list_head node;
+	const struct v4l2_subscribed_event_ops *ops;
+	unsigned int elems;
+	unsigned int first;
+	unsigned int in_use;
+	struct v4l2_kevent events[0];
+};
+
+struct uvc_request {
+	struct usb_request *req;
+	u8 *req_buffer;
+	struct uvc_video *video;
+	struct sg_table sgt;
+	u8 header[12];
+	struct uvc_buffer *last_buf;
+	struct list_head list;
+};
+
+struct uvcg_config_group_type {
+	struct config_item_type type;
+	const char *name;
+	const struct uvcg_config_group_type **children;
+	int (*create_children)(struct config_group *);
+};
+
+enum uvc_color_primaries_values {
+	UVC_COLOR_PRIMARIES_UNSPECIFIED = 0,
+	UVC_COLOR_PRIMARIES_BT_709_SRGB = 1,
+	UVC_COLOR_PRIMARIES_BT_470_2_M = 2,
+	UVC_COLOR_PRIMARIES_BT_470_2_B_G = 3,
+	UVC_COLOR_PRIMARIES_SMPTE_170M = 4,
+	UVC_COLOR_PRIMARIES_SMPTE_240M = 5,
+};
+
+enum uvc_transfer_characteristics_values {
+	UVC_TRANSFER_CHARACTERISTICS_UNSPECIFIED = 0,
+	UVC_TRANSFER_CHARACTERISTICS_BT_709 = 1,
+	UVC_TRANSFER_CHARACTERISTICS_BT_470_2_M = 2,
+	UVC_TRANSFER_CHARACTERISTICS_BT_470_2_B_G = 3,
+	UVC_TRANSFER_CHARACTERISTICS_SMPTE_170M = 4,
+	UVC_TRANSFER_CHARACTERISTICS_SMPTE_240M = 5,
+	UVC_TRANSFER_CHARACTERISTICS_LINEAR = 6,
+	UVC_TRANSFER_CHARACTERISTICS_SRGB = 7,
+};
+
+enum uvc_matrix_coefficients {
+	UVC_MATRIX_COEFFICIENTS_UNSPECIFIED = 0,
+	UVC_MATRIX_COEFFICIENTS_BT_709 = 1,
+	UVC_MATRIX_COEFFICIENTS_FCC = 2,
+	UVC_MATRIX_COEFFICIENTS_BT_470_2_B_G = 3,
+	UVC_MATRIX_COEFFICIENTS_SMPTE_170M = 4,
+	UVC_MATRIX_COEFFICIENTS_SMPTE_240M = 5,
+};
+
+enum uvcg_strm_type {
+	UVCG_HEADER = 0,
+	UVCG_FORMAT = 1,
+	UVCG_FRAME = 2,
+	UVCG_COLOR_MATCHING = 3,
+};
+
+struct uvc_header_descriptor_1 {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubType;
+	__le16 bcdUVC;
+	__le16 wTotalLength;
+	__le32 dwClockFrequency;
+	__u8 bInCollection;
+	__u8 baInterfaceNr[1];
+} __attribute__((packed));
+
+struct uvcg_control_header {
+	struct config_item item;
+	struct uvc_header_descriptor_1 desc;
+	unsigned int linked;
+};
+
+struct uvcg_control_class_group {
+	struct config_group group;
+	const char *name;
+};
+
+struct uvc_format_mjpeg {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubType;
+	__u8 bFormatIndex;
+	__u8 bNumFrameDescriptors;
+	__u8 bmFlags;
+	__u8 bDefaultFrameIndex;
+	__u8 bAspectRatioX;
+	__u8 bAspectRatioY;
+	__u8 bmInterlaceFlags;
+	__u8 bCopyProtect;
+};
+
+struct uvcg_mjpeg {
+	struct uvcg_format fmt;
+	struct uvc_format_mjpeg desc;
+};
+
+struct uvcg_streaming_class_group {
+	struct config_group group;
+	const char *name;
+};
+
+struct snd_device;
+
+struct snd_device_ops {
+	int (*dev_free)(struct snd_device *);
+	int (*dev_register)(struct snd_device *);
+	int (*dev_disconnect)(struct snd_device *);
+	u64 android_kabi_reserved1;
+};
+
+enum snd_device_state {
+	SNDRV_DEV_BUILD = 0,
+	SNDRV_DEV_REGISTERED = 1,
+	SNDRV_DEV_DISCONNECTED = 2,
+};
+
+enum snd_device_type {
+	SNDRV_DEV_LOWLEVEL = 0,
+	SNDRV_DEV_INFO = 1,
+	SNDRV_DEV_BUS = 2,
+	SNDRV_DEV_CODEC = 3,
+	SNDRV_DEV_PCM = 4,
+	SNDRV_DEV_COMPRESS = 5,
+	SNDRV_DEV_RAWMIDI = 6,
+	SNDRV_DEV_TIMER = 7,
+	SNDRV_DEV_SEQUENCER = 8,
+	SNDRV_DEV_HWDEP = 9,
+	SNDRV_DEV_JACK = 10,
+	SNDRV_DEV_CONTROL = 11,
+};
+
+struct snd_device {
+	struct list_head list;
+	struct snd_card *card;
+	enum snd_device_state state;
+	enum snd_device_type type;
+	void *device_data;
+	const struct snd_device_ops *ops;
+	u64 android_kabi_reserved1;
+};
+
+struct snd_info_buffer;
+
+struct snd_info_entry_text {
+	void (*read)(struct snd_info_entry *, struct snd_info_buffer *);
+	void (*write)(struct snd_info_entry *, struct snd_info_buffer *);
+};
+
+struct snd_info_entry_ops;
+
+struct snd_info_entry {
+	const char *name;
+	umode_t mode;
+	long size;
+	unsigned short content;
+	union {
+		struct snd_info_entry_text text;
+		const struct snd_info_entry_ops *ops;
+	} c;
+	struct snd_info_entry *parent;
+	struct module *module;
+	void *private_data;
+	void (*private_free)(struct snd_info_entry *);
+	struct proc_dir_entry *p;
+	struct mutex access;
+	struct list_head children;
+	struct list_head list;
+	u64 android_kabi_reserved1;
+};
+
+struct snd_info_buffer {
+	char *buffer;
+	unsigned int curr;
+	unsigned int size;
+	unsigned int len;
+	int stop;
+	int error;
+};
+
+struct snd_info_entry_ops {
+	int (*open)(struct snd_info_entry *, unsigned short, void **);
+	int (*release)(struct snd_info_entry *, unsigned short, void *);
+	ssize_t (*read)(struct snd_info_entry *, void *, struct file *, char __attribute__((btf_type_tag("user"))) *, size_t, loff_t);
+	ssize_t (*write)(struct snd_info_entry *, void *, struct file *, const char __attribute__((btf_type_tag("user"))) *, size_t, loff_t);
+	loff_t (*llseek)(struct snd_info_entry *, void *, struct file *, loff_t, int);
+	__poll_t (*poll)(struct snd_info_entry *, void *, struct file *, poll_table *);
+	int (*ioctl)(struct snd_info_entry *, void *, struct file *, unsigned int, unsigned long);
+	int (*mmap)(struct snd_info_entry *, void *, struct inode *, struct file *, struct vm_area_struct *);
+	u64 android_kabi_reserved1;
+};
+
+struct snd_rawmidi_substream;
+
+struct snd_rawmidi_ops {
+	int (*open)(struct snd_rawmidi_substream *);
+	int (*close)(struct snd_rawmidi_substream *);
+	void (*trigger)(struct snd_rawmidi_substream *, int);
+	void (*drain)(struct snd_rawmidi_substream *);
+};
+
+struct snd_rawmidi;
+
+struct snd_rawmidi_str;
+
+struct snd_rawmidi_runtime;
+
+struct snd_rawmidi_substream {
+	struct list_head list;
+	int stream;
+	int number;
+	bool opened;
+	bool append;
+	bool active_sensing;
+	unsigned int framing;
+	unsigned int clock_type;
+	int use_count;
+	size_t bytes;
+	spinlock_t lock;
+	struct snd_rawmidi *rmidi;
+	struct snd_rawmidi_str *pstr;
+	char name[32];
+	struct snd_rawmidi_runtime *runtime;
+	struct pid *pid;
+	const struct snd_rawmidi_ops *ops;
+};
+
+struct snd_rawmidi_str {
+	unsigned int substream_count;
+	unsigned int substream_opened;
+	struct list_head substreams;
+};
+
+struct snd_rawmidi_global_ops;
+
+struct snd_rawmidi {
+	struct snd_card *card;
+	struct list_head list;
+	unsigned int device;
+	unsigned int info_flags;
+	char id[64];
+	char name[80];
+	const struct snd_rawmidi_global_ops *ops;
+	struct snd_rawmidi_str streams[2];
+	void *private_data;
+	void (*private_free)(struct snd_rawmidi *);
+	struct mutex open_mutex;
+	wait_queue_head_t open_wait;
+	struct device *dev;
+	struct snd_info_entry *proc_entry;
+};
+
+struct snd_seq_port_info;
+
+struct snd_rawmidi_global_ops {
+	int (*dev_register)(struct snd_rawmidi *);
+	int (*dev_unregister)(struct snd_rawmidi *);
+	void (*get_port_info)(struct snd_rawmidi *, int, struct snd_seq_port_info *);
+	long (*ioctl)(struct snd_rawmidi *, unsigned int, void __attribute__((btf_type_tag("user"))) *);
+	void (*proc_read)(struct snd_info_entry *, struct snd_info_buffer *);
+};
+
+struct snd_rawmidi_runtime {
+	struct snd_rawmidi_substream *substream;
+	unsigned int drain: 1;
+	unsigned int oss: 1;
+	unsigned char *buffer;
+	size_t buffer_size;
+	size_t appl_ptr;
+	size_t hw_ptr;
+	size_t avail_min;
+	size_t avail;
+	size_t xruns;
+	size_t align;
+	int buffer_ref;
+	wait_queue_head_t sleep;
+	void (*event)(struct snd_rawmidi_substream *);
+	struct work_struct event_work;
+	void *private_data;
+	void (*private_free)(struct snd_rawmidi_substream *);
+};
+
+struct uac1_ac_header_descriptor_1 {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__le16 bcdADC;
+	__le16 wTotalLength;
+	__u8 bInCollection;
+	__u8 baInterfaceNr[1];
+} __attribute__((packed));
+
+struct usb_ms_header_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__le16 bcdMSC;
+	__le16 wTotalLength;
+} __attribute__((packed));
+
+struct usb_ms_endpoint_descriptor_16 {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bNumEmbMIDIJack;
+	__u8 baAssocJackID[16];
+};
+
+enum {
+	STATE_INITIAL = 0,
+	STATE_1PARAM = 1,
+	STATE_2PARAM_1 = 2,
+	STATE_2PARAM_2 = 3,
+	STATE_SYSEX_0 = 4,
+	STATE_SYSEX_1 = 5,
+	STATE_SYSEX_2 = 6,
+	STATE_REAL_TIME = 7,
+	STATE_FINISHED = 8,
+};
+
+enum {
+	SNDRV_RAWMIDI_STREAM_OUTPUT = 0,
+	SNDRV_RAWMIDI_STREAM_INPUT = 1,
+	SNDRV_RAWMIDI_STREAM_LAST = 1,
+};
+
+struct f_midi_info {
+	struct device *dev;
+	int card_number;
+	u32 rmidi_device;
+	bool configured;
+	spinlock_t lock;
+};
+
+struct f_midi_opts {
+	struct usb_function_instance func_inst;
+	int index;
+	char *id;
+	bool id_allocated;
+	unsigned int in_ports;
+	unsigned int out_ports;
+	unsigned int buflen;
+	unsigned int qlen;
+	struct mutex lock;
+	int refcnt;
+	struct f_midi_info android_midi_info;
+};
+
+struct gmidi_in_port {
+	struct snd_rawmidi_substream *substream;
+	int active;
+	uint8_t cable;
+	uint8_t state;
+	uint8_t data[2];
+};
+
+struct f_midi {
+	struct usb_function func;
+	struct usb_gadget *gadget;
+	struct usb_ep *in_ep;
+	struct usb_ep *out_ep;
+	struct snd_card *card;
+	struct snd_rawmidi *rmidi;
+	u8 ms_id;
+	struct snd_rawmidi_substream *out_substream[16];
+	unsigned long out_triggered;
+	struct work_struct work;
+	unsigned int in_ports;
+	unsigned int out_ports;
+	int index;
+	char *id;
+	unsigned int buflen;
+	unsigned int qlen;
+	struct {
+		union {
+			struct __kfifo kfifo;
+			struct usb_request **type;
+			const struct usb_request **const_type;
+			char (*rectype)[0];
+			struct usb_request **ptr;
+			struct usb_request * const *ptr_const;
+		};
+		struct usb_request *buf[0];
+	} in_req_fifo;
+	spinlock_t transmit_lock;
+	unsigned int in_last_port;
+	unsigned char free_ref;
+	struct gmidi_in_port in_ports_array[0];
+};
+
+struct usb_midi_in_jack_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bJackType;
+	__u8 bJackID;
+	__u8 iJack;
+};
+
+struct usb_midi_source_pin {
+	__u8 baSourceID;
+	__u8 baSourcePin;
+};
+
+struct usb_midi_out_jack_descriptor_1 {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bJackType;
+	__u8 bJackID;
+	__u8 bNrInputPins;
+	struct usb_midi_source_pin pins[1];
+	__u8 iJack;
+};
+
+struct hid_class_descriptor {
+	__u8 bDescriptorType;
+	__le16 wDescriptorLength;
+} __attribute__((packed));
+
+struct hid_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__le16 bcdHID;
+	__u8 bCountryCode;
+	__u8 bNumDescriptors;
+	struct hid_class_descriptor desc[1];
+} __attribute__((packed));
+
+struct f_hid_opts {
+	struct usb_function_instance func_inst;
+	int minor;
+	unsigned char subclass;
+	unsigned char protocol;
+	unsigned char no_out_endpoint;
+	unsigned short report_length;
+	unsigned short report_desc_length;
+	unsigned char *report_desc;
+	bool report_desc_alloc;
+	struct mutex lock;
+	int refcnt;
+};
+
+struct f_hidg {
+	unsigned char bInterfaceSubClass;
+	unsigned char bInterfaceProtocol;
+	unsigned char protocol;
+	unsigned char idle;
+	unsigned short report_desc_length;
+	char *report_desc;
+	unsigned short report_length;
+	bool use_out_ep;
+	spinlock_t read_spinlock;
+	wait_queue_head_t read_queue;
+	struct list_head completed_out_req;
+	unsigned int qlen;
+	char *set_report_buf;
+	unsigned int set_report_length;
+	spinlock_t write_spinlock;
+	bool write_pending;
+	wait_queue_head_t write_queue;
+	struct usb_request *req;
+	struct device dev;
+	struct cdev cdev;
+	struct usb_function func;
+	struct usb_ep *in_ep;
+	struct usb_ep *out_ep;
+};
+
+struct f_hidg_req_list {
+	struct usb_request *req;
+	unsigned int pos;
+	struct list_head list;
+};
+
+struct acc_dev {
+	struct usb_function function;
+	struct usb_composite_dev *cdev;
+	spinlock_t lock;
+	struct kref kref;
+	struct usb_ep *ep_in;
+	struct usb_ep *ep_out;
+	bool online;
+	bool disconnected;
+	char manufacturer[256];
+	char model[256];
+	char description[256];
+	char version[256];
+	char uri[256];
+	char serial[256];
+	int string_index;
+	int start_requested;
+	int audio_mode;
+	struct list_head tx_idle;
+	wait_queue_head_t read_wq;
+	wait_queue_head_t write_wq;
+	struct usb_request *rx_req[2];
+	int rx_done;
+	struct delayed_work start_work;
+	struct work_struct getprotocol_work;
+	struct work_struct sendstring_work;
+	struct work_struct hid_work;
+	struct list_head hid_list;
+	struct list_head new_hid_list;
+	struct list_head dead_hid_list;
+};
+
+struct hid_device;
+
+struct hid_report;
+
+struct hid_ll_driver {
+	int (*start)(struct hid_device *);
+	void (*stop)(struct hid_device *);
+	int (*open)(struct hid_device *);
+	void (*close)(struct hid_device *);
+	int (*power)(struct hid_device *, int);
+	int (*parse)(struct hid_device *);
+	void (*request)(struct hid_device *, struct hid_report *, int);
+	int (*wait)(struct hid_device *);
+	int (*raw_request)(struct hid_device *, unsigned char, __u8 *, size_t, unsigned char, int);
+	int (*output_report)(struct hid_device *, __u8 *, size_t);
+	int (*idle)(struct hid_device *, int, int, int);
+	bool (*may_wakeup)(struct hid_device *);
+	unsigned int max_buffer_size;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+enum hid_type {
+	HID_TYPE_OTHER = 0,
+	HID_TYPE_USBMOUSE = 1,
+	HID_TYPE_USBNONE = 2,
+};
+
+struct hid_report_enum {
+	unsigned int numbered;
+	struct list_head report_list;
+	struct hid_report *report_id_hash[256];
+};
+
+enum hid_battery_status {
+	HID_BATTERY_UNKNOWN = 0,
+	HID_BATTERY_QUERIED = 1,
+	HID_BATTERY_REPORTED = 2,
+};
+
+struct hid_bpf_prog_list;
+
+struct hid_bpf {
+	u8 *device_data;
+	u32 allocated_data;
+	struct hid_bpf_prog_list __attribute__((btf_type_tag("rcu"))) *progs[2];
+	bool destroyed;
+	spinlock_t progs_lock;
+};
+
+struct hid_collection;
+
+struct hid_driver;
+
+struct hid_field;
+
+struct hid_usage;
+
+struct hid_device {
+	__u8 *dev_rdesc;
+	unsigned int dev_rsize;
+	__u8 *rdesc;
+	unsigned int rsize;
+	struct hid_collection *collection;
+	unsigned int collection_size;
+	unsigned int maxcollection;
+	unsigned int maxapplication;
+	__u16 bus;
+	__u16 group;
+	__u32 vendor;
+	__u32 product;
+	__u32 version;
+	enum hid_type type;
+	unsigned int country;
+	struct hid_report_enum report_enum[3];
+	struct work_struct led_work;
+	struct semaphore driver_input_lock;
+	struct device dev;
+	struct hid_driver *driver;
+	void *devres_group_id;
+	const struct hid_ll_driver *ll_driver;
+	struct mutex ll_open_lock;
+	unsigned int ll_open_count;
+	struct power_supply *battery;
+	__s32 battery_capacity;
+	__s32 battery_min;
+	__s32 battery_max;
+	__s32 battery_report_type;
+	__s32 battery_report_id;
+	__s32 battery_charge_status;
+	enum hid_battery_status battery_status;
+	bool battery_avoid_query;
+	ktime_t battery_ratelimit_time;
+	unsigned long status;
+	unsigned int claimed;
+	unsigned int quirks;
+	unsigned int initial_quirks;
+	bool io_started;
+	struct list_head inputs;
+	void *hiddev;
+	void *hidraw;
+	char name[128];
+	char phys[64];
+	char uniq[64];
+	void *driver_data;
+	int (*ff_init)(struct hid_device *);
+	int (*hiddev_connect)(struct hid_device *, unsigned int);
+	void (*hiddev_disconnect)(struct hid_device *);
+	void (*hiddev_hid_event)(struct hid_device *, struct hid_field *, struct hid_usage *, __s32);
+	void (*hiddev_report_event)(struct hid_device *, struct hid_report *);
+	unsigned short debug;
+	struct dentry *debug_dir;
+	struct dentry *debug_rdesc;
+	struct dentry *debug_events;
+	struct list_head debug_list;
+	spinlock_t debug_list_lock;
+	wait_queue_head_t debug_wait;
+	struct kref ref;
+	unsigned int id;
+	struct hid_bpf bpf;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct hid_collection {
+	int parent_idx;
+	unsigned int type;
+	unsigned int usage;
+	unsigned int level;
+};
+
+enum hid_report_type {
+	HID_INPUT_REPORT = 0,
+	HID_OUTPUT_REPORT = 1,
+	HID_FEATURE_REPORT = 2,
+	HID_REPORT_TYPES = 3,
+};
+
+struct hid_field_entry;
+
+struct hid_report {
+	struct list_head list;
+	struct list_head hidinput_list;
+	struct list_head field_entry_list;
+	unsigned int id;
+	enum hid_report_type type;
+	unsigned int application;
+	struct hid_field *field[256];
+	struct hid_field_entry *field_entries;
+	unsigned int maxfield;
+	unsigned int size;
+	struct hid_device *device;
+	bool tool_active;
+	unsigned int tool;
+	u64 android_kabi_reserved1;
+};
+
+struct hid_input;
+
+struct hid_field {
+	unsigned int physical;
+	unsigned int logical;
+	unsigned int application;
+	struct hid_usage *usage;
+	unsigned int maxusage;
+	unsigned int flags;
+	unsigned int report_offset;
+	unsigned int report_size;
+	unsigned int report_count;
+	unsigned int report_type;
+	__s32 *value;
+	__s32 *new_value;
+	__s32 *usages_priorities;
+	__s32 logical_minimum;
+	__s32 logical_maximum;
+	__s32 physical_minimum;
+	__s32 physical_maximum;
+	__s32 unit_exponent;
+	unsigned int unit;
+	bool ignored;
+	struct hid_report *report;
+	unsigned int index;
+	struct hid_input *hidinput;
+	__u16 dpad;
+	unsigned int slot_idx;
+};
+
+struct hid_usage {
+	unsigned int hid;
+	unsigned int collection_index;
+	unsigned int usage_index;
+	__s8 resolution_multiplier;
+	__s8 wheel_factor;
+	__u16 code;
+	__u8 type;
+	__s8 hat_min;
+	__s8 hat_max;
+	__s8 hat_dir;
+	__s16 wheel_accumulated;
+};
+
+struct hid_input {
+	struct list_head list;
+	struct hid_report *report;
+	struct input_dev *input;
+	const char *name;
+	struct list_head reports;
+	unsigned int application;
+	bool registered;
+	u64 android_kabi_reserved1;
+};
+
+struct hid_field_entry {
+	struct list_head list;
+	struct hid_field *field;
+	unsigned int index;
+	__s32 priority;
+};
+
+struct hid_device_id;
+
+struct hid_report_id;
+
+struct hid_usage_id;
+
+struct hid_driver {
+	char *name;
+	const struct hid_device_id *id_table;
+	struct list_head dyn_list;
+	spinlock_t dyn_lock;
+	bool (*match)(struct hid_device *, bool);
+	int (*probe)(struct hid_device *, const struct hid_device_id *);
+	void (*remove)(struct hid_device *);
+	const struct hid_report_id *report_table;
+	int (*raw_event)(struct hid_device *, struct hid_report *, u8 *, int);
+	const struct hid_usage_id *usage_table;
+	int (*event)(struct hid_device *, struct hid_field *, struct hid_usage *, __s32);
+	void (*report)(struct hid_device *, struct hid_report *);
+	__u8 * (*report_fixup)(struct hid_device *, __u8 *, unsigned int *);
+	int (*input_mapping)(struct hid_device *, struct hid_input *, struct hid_field *, struct hid_usage *, unsigned long **, int *);
+	int (*input_mapped)(struct hid_device *, struct hid_input *, struct hid_field *, struct hid_usage *, unsigned long **, int *);
+	int (*input_configured)(struct hid_device *, struct hid_input *);
+	void (*feature_mapping)(struct hid_device *, struct hid_field *, struct hid_usage *);
+	int (*suspend)(struct hid_device *, pm_message_t);
+	int (*resume)(struct hid_device *);
+	int (*reset_resume)(struct hid_device *);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	struct device_driver driver;
+};
+
+struct hid_device_id {
+	__u16 bus;
+	__u16 group;
+	__u32 vendor;
+	__u32 product;
+	kernel_ulong_t driver_data;
+};
+
+struct hid_report_id {
+	__u32 report_type;
+};
+
+struct hid_usage_id {
+	__u32 usage_hid;
+	__u32 usage_type;
+	__u32 usage_code;
+};
+
+struct hid_bpf_prog_list {
+	u16 prog_idx[64];
+	u8 prog_cnt;
+};
+
+struct acc_hid_dev {
+	struct list_head list;
+	struct hid_device *hid;
+	struct acc_dev *dev;
+	int id;
+	u8 *report_desc;
+	int report_desc_len;
+	int report_desc_offset;
+};
+
+struct acc_instance {
+	struct usb_function_instance func_inst;
+	const char *name;
+};
+
+enum typec_data_role {
+	TYPEC_DEVICE = 0,
+	TYPEC_HOST = 1,
+};
+
+enum typec_role {
+	TYPEC_SINK = 0,
+	TYPEC_SOURCE = 1,
+};
+
+enum typec_pwr_opmode {
+	TYPEC_PWR_MODE_USB = 0,
+	TYPEC_PWR_MODE_1_5A = 1,
+	TYPEC_PWR_MODE_3_0A = 2,
+	TYPEC_PWR_MODE_PD = 3,
+};
+
+enum typec_port_type {
+	TYPEC_PORT_SRC = 0,
+	TYPEC_PORT_SNK = 1,
+	TYPEC_PORT_DRP = 2,
+};
+
+enum typec_orientation {
+	TYPEC_ORIENTATION_NONE = 0,
+	TYPEC_ORIENTATION_NORMAL = 1,
+	TYPEC_ORIENTATION_REVERSE = 2,
+};
+
+enum typec_port_data {
+	TYPEC_PORT_DFP = 0,
+	TYPEC_PORT_UFP = 1,
+	TYPEC_PORT_DRD = 2,
+};
+
+enum usb_pd_svdm_ver {
+	SVDM_VER_1_0 = 0,
+	SVDM_VER_2_0 = 1,
+	SVDM_VER_MAX = 1,
+};
+
+enum typec_accessory {
+	TYPEC_ACCESSORY_NONE = 0,
+	TYPEC_ACCESSORY_AUDIO = 1,
+	TYPEC_ACCESSORY_DEBUG = 2,
+};
+
+enum typec_plug_index {
+	TYPEC_PLUG_SOP_P = 0,
+	TYPEC_PLUG_SOP_PP = 1,
+};
+
+enum typec_plug_type {
+	USB_PLUG_NONE = 0,
+	USB_PLUG_TYPE_A = 1,
+	USB_PLUG_TYPE_B = 2,
+	USB_PLUG_TYPE_C = 3,
+	USB_PLUG_CAPTIVE = 4,
+};
+
+struct usb_power_delivery;
+
+struct typec_switch;
+
+struct typec_mux;
+
+struct typec_retimer;
+
+struct typec_capability;
+
+struct typec_operations;
+
+struct typec_port {
+	unsigned int id;
+	struct device dev;
+	struct ida mode_ids;
+	struct usb_power_delivery *pd;
+	int prefer_role;
+	enum typec_data_role data_role;
+	enum typec_role pwr_role;
+	enum typec_role vconn_role;
+	enum typec_pwr_opmode pwr_opmode;
+	enum typec_port_type port_type;
+	struct mutex port_type_lock;
+	enum typec_orientation orientation;
+	struct typec_switch *sw;
+	struct typec_mux *mux;
+	struct typec_retimer *retimer;
+	const struct typec_capability *cap;
+	const struct typec_operations *ops;
+	u64 android_kabi_reserved1;
+};
+
+struct usb_power_delivery {
+	struct device dev;
+	int id;
+	u16 revision;
+	u16 version;
+};
+
+struct typec_capability {
+	enum typec_port_type type;
+	enum typec_port_data data;
+	u16 revision;
+	u16 pd_revision;
+	enum usb_pd_svdm_ver svdm_version;
+	int prefer_role;
+	enum typec_accessory accessory[3];
+	unsigned int orientation_aware: 1;
+	struct fwnode_handle *fwnode;
+	void *driver_data;
+	struct usb_power_delivery *pd;
+	const struct typec_operations *ops;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct typec_operations {
+	int (*try_role)(struct typec_port *, int);
+	int (*dr_set)(struct typec_port *, enum typec_data_role);
+	int (*pr_set)(struct typec_port *, enum typec_role);
+	int (*vconn_set)(struct typec_port *, enum typec_role);
+	int (*port_type_set)(struct typec_port *, enum typec_port_type);
+	struct usb_power_delivery ** (*pd_get)(struct typec_port *);
+	int (*pd_set)(struct typec_port *, struct usb_power_delivery *);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct typec_altmode_ops;
+
+struct typec_altmode {
+	struct device dev;
+	u16 svid;
+	int mode;
+	u32 vdo;
+	unsigned int active: 1;
+	char *desc;
+	const struct typec_altmode_ops *ops;
+	u64 android_kabi_reserved1;
+};
+
+struct altmode {
+	unsigned int id;
+	struct typec_altmode adev;
+	struct typec_mux *mux;
+	struct typec_retimer *retimer;
+	enum typec_port_data roles;
+	struct attribute *attrs[5];
+	char group_name[8];
+	struct attribute_group group;
+	const struct attribute_group *groups[2];
+	struct altmode *partner;
+	struct altmode *plug[2];
+	u64 android_kabi_reserved1;
+};
+
+struct typec_altmode_ops {
+	int (*enter)(struct typec_altmode *, u32 *);
+	int (*exit)(struct typec_altmode *);
+	void (*attention)(struct typec_altmode *, u32);
+	int (*vdm)(struct typec_altmode *, const u32, const u32 *, int);
+	int (*notify)(struct typec_altmode *, unsigned long, void *);
+	int (*activate)(struct typec_altmode *, int);
+	u64 android_kabi_reserved1;
+};
+
+struct usb_pd_identity;
+
+struct typec_cable {
+	struct device dev;
+	enum typec_plug_type type;
+	struct usb_pd_identity *identity;
+	unsigned int active: 1;
+	u16 pd_revision;
+	u64 android_kabi_reserved1;
+};
+
+struct usb_pd_identity {
+	u32 id_header;
+	u32 cert_stat;
+	u32 product;
+	u32 vdo[3];
+};
+
+struct typec_partner {
+	struct device dev;
+	unsigned int usb_pd: 1;
+	struct usb_pd_identity *identity;
+	enum typec_accessory accessory;
+	struct ida mode_ids;
+	int num_altmodes;
+	u16 pd_revision;
+	enum usb_pd_svdm_ver svdm_version;
+	struct usb_power_delivery *pd;
+	u64 android_kabi_reserved1;
+};
+
+struct typec_plug {
+	struct device dev;
+	enum typec_plug_index index;
+	struct ida mode_ids;
+	int num_altmodes;
+	u64 android_kabi_reserved1;
+};
+
+struct typec_device_id {
+	__u16 svid;
+	__u8 mode;
+	kernel_ulong_t driver_data;
+};
+
+struct usb_power_delivery_desc {
+	u16 revision;
+	u16 version;
+};
+
+struct typec_mux_state {
+	struct typec_altmode *alt;
+	unsigned long mode;
+	void *data;
+};
+
+struct typec_altmode_desc {
+	u16 svid;
+	u8 mode;
+	u32 vdo;
+	enum typec_port_data roles;
+};
+
+struct typec_partner_desc {
+	unsigned int usb_pd: 1;
+	enum typec_accessory accessory;
+	struct usb_pd_identity *identity;
+	u16 pd_revision;
+};
+
+struct typec_plug_desc {
+	enum typec_plug_index index;
+};
+
+struct typec_cable_desc {
+	enum typec_plug_type type;
+	unsigned int active: 1;
+	struct usb_pd_identity *identity;
+	u16 pd_revision;
+};
+
+struct typec_switch_dev;
+
+typedef int (*typec_switch_set_fn_t)(struct typec_switch_dev *, enum typec_orientation);
+
+struct typec_switch_dev {
+	struct device dev;
+	typec_switch_set_fn_t set;
+	u64 android_kabi_reserved1;
+};
+
+struct typec_mux_dev;
+
+typedef int (*typec_mux_set_fn_t)(struct typec_mux_dev *, struct typec_mux_state *);
+
+struct typec_mux_dev {
+	struct device dev;
+	typec_mux_set_fn_t set;
+	u64 android_kabi_reserved1;
+};
+
+struct typec_switch {
+	struct typec_switch_dev *sw_devs[3];
+	unsigned int num_sw_devs;
+};
+
+struct typec_mux {
+	struct typec_mux_dev *mux_devs[3];
+	unsigned int num_mux_devs;
+};
+
+struct typec_switch_desc {
+	struct fwnode_handle *fwnode;
+	typec_switch_set_fn_t set;
+	const char *name;
+	void *drvdata;
+};
+
+struct typec_mux_desc {
+	struct fwnode_handle *fwnode;
+	typec_mux_set_fn_t set;
+	const char *name;
+	void *drvdata;
+};
+
+enum {
+	TYPEC_STATE_SAFE = 0,
+	TYPEC_STATE_USB = 1,
+	TYPEC_STATE_MODAL = 2,
+};
+
+struct typec_retimer_state;
+
+typedef int (*typec_retimer_set_fn_t)(struct typec_retimer *, struct typec_retimer_state *);
+
+struct typec_retimer {
+	struct device dev;
+	typec_retimer_set_fn_t set;
+};
+
+struct typec_retimer_state {
+	struct typec_altmode *alt;
+	unsigned long mode;
+	void *data;
+};
+
+struct typec_altmode_driver {
+	const struct typec_device_id *id_table;
+	int (*probe)(struct typec_altmode *);
+	void (*remove)(struct typec_altmode *);
+	struct device_driver driver;
+};
+
+enum pd_pdo_type {
+	PDO_TYPE_FIXED = 0,
+	PDO_TYPE_BATT = 1,
+	PDO_TYPE_VAR = 2,
+	PDO_TYPE_APDO = 3,
+};
+
+enum pd_apdo_type {
+	APDO_TYPE_PPS = 0,
+};
+
+struct usb_power_delivery_capabilities {
+	struct device dev;
+	struct usb_power_delivery *pd;
+	enum typec_role role;
+};
+
+struct pdo {
+	struct device dev;
+	int object_position;
+	u32 pdo;
+};
+
+struct usb_power_delivery_capabilities_desc {
+	u32 pdo[7];
+	enum typec_role role;
+};
+
+struct typec_retimer_desc {
+	struct fwnode_handle *fwnode;
+	typec_retimer_set_fn_t set;
+	const char *name;
+	void *drvdata;
+};
+
+enum dp_state {
+	DP_STATE_IDLE = 0,
+	DP_STATE_ENTER = 1,
+	DP_STATE_UPDATE = 2,
+	DP_STATE_CONFIGURE = 3,
+	DP_STATE_EXIT = 4,
+};
+
+enum {
+	DP_PIN_ASSIGN_A = 0,
+	DP_PIN_ASSIGN_B = 1,
+	DP_PIN_ASSIGN_C = 2,
+	DP_PIN_ASSIGN_D = 3,
+	DP_PIN_ASSIGN_E = 4,
+	DP_PIN_ASSIGN_F = 5,
+};
+
+enum {
+	DP_CONF_USB = 0,
+	DP_CONF_DFP_D = 1,
+	DP_CONF_UFP_D = 2,
+	DP_CONF_DUAL_D = 3,
+};
+
+struct typec_displayport_data {
+	u32 status;
+	u32 conf;
+};
+
+struct dp_altmode {
+	struct typec_displayport_data data;
+	enum dp_state state;
+	bool hpd;
+	bool pending_hpd;
+	struct mutex lock;
+	struct work_struct work;
+	struct typec_altmode *alt;
+	const struct typec_altmode *port;
+	struct fwnode_handle *connector_fwnode;
+};
+
+enum typec_cc_status {
+	TYPEC_CC_OPEN = 0,
+	TYPEC_CC_RA = 1,
+	TYPEC_CC_RD = 2,
+	TYPEC_CC_RP_DEF = 3,
+	TYPEC_CC_RP_1_5 = 4,
+	TYPEC_CC_RP_3_0 = 5,
+};
+
+enum typec_cc_polarity {
+	TYPEC_POLARITY_CC1 = 0,
+	TYPEC_POLARITY_CC2 = 1,
+};
+
+enum tcpm_transmit_type {
+	TCPC_TX_SOP = 0,
+	TCPC_TX_SOP_PRIME = 1,
+	TCPC_TX_SOP_PRIME_PRIME = 2,
+	TCPC_TX_SOP_DEBUG_PRIME = 3,
+	TCPC_TX_SOP_DEBUG_PRIME_PRIME = 4,
+	TCPC_TX_HARD_RESET = 5,
+	TCPC_TX_CABLE_RESET = 6,
+	TCPC_TX_BIST_MODE_2 = 7,
+};
+
+enum pd_msg_request {
+	PD_MSG_NONE = 0,
+	PD_MSG_CTRL_REJECT = 1,
+	PD_MSG_CTRL_WAIT = 2,
+	PD_MSG_CTRL_NOT_SUPP = 3,
+	PD_MSG_DATA_SINK_CAP = 4,
+	PD_MSG_DATA_SOURCE_CAP = 5,
+};
+
+enum tcpm_state {
+	INVALID_STATE = 0,
+	TOGGLING = 1,
+	CHECK_CONTAMINANT = 2,
+	SRC_UNATTACHED = 3,
+	SRC_ATTACH_WAIT = 4,
+	SRC_ATTACHED = 5,
+	SRC_STARTUP = 6,
+	SRC_SEND_CAPABILITIES = 7,
+	SRC_SEND_CAPABILITIES_TIMEOUT = 8,
+	SRC_NEGOTIATE_CAPABILITIES = 9,
+	SRC_TRANSITION_SUPPLY = 10,
+	SRC_READY = 11,
+	SRC_WAIT_NEW_CAPABILITIES = 12,
+	SNK_UNATTACHED = 13,
+	SNK_ATTACH_WAIT = 14,
+	SNK_DEBOUNCED = 15,
+	SNK_ATTACHED = 16,
+	SNK_STARTUP = 17,
+	SNK_DISCOVERY = 18,
+	SNK_DISCOVERY_DEBOUNCE = 19,
+	SNK_DISCOVERY_DEBOUNCE_DONE = 20,
+	SNK_WAIT_CAPABILITIES = 21,
+	SNK_NEGOTIATE_CAPABILITIES = 22,
+	SNK_NEGOTIATE_PPS_CAPABILITIES = 23,
+	SNK_TRANSITION_SINK = 24,
+	SNK_TRANSITION_SINK_VBUS = 25,
+	SNK_READY = 26,
+	ACC_UNATTACHED = 27,
+	DEBUG_ACC_ATTACHED = 28,
+	AUDIO_ACC_ATTACHED = 29,
+	AUDIO_ACC_DEBOUNCE = 30,
+	HARD_RESET_SEND = 31,
+	HARD_RESET_START = 32,
+	SRC_HARD_RESET_VBUS_OFF = 33,
+	SRC_HARD_RESET_VBUS_ON = 34,
+	SNK_HARD_RESET_SINK_OFF = 35,
+	SNK_HARD_RESET_WAIT_VBUS = 36,
+	SNK_HARD_RESET_SINK_ON = 37,
+	SOFT_RESET = 38,
+	SRC_SOFT_RESET_WAIT_SNK_TX = 39,
+	SNK_SOFT_RESET = 40,
+	SOFT_RESET_SEND = 41,
+	DR_SWAP_ACCEPT = 42,
+	DR_SWAP_SEND = 43,
+	DR_SWAP_SEND_TIMEOUT = 44,
+	DR_SWAP_CANCEL = 45,
+	DR_SWAP_CHANGE_DR = 46,
+	PR_SWAP_ACCEPT = 47,
+	PR_SWAP_SEND = 48,
+	PR_SWAP_SEND_TIMEOUT = 49,
+	PR_SWAP_CANCEL = 50,
+	PR_SWAP_START = 51,
+	PR_SWAP_SRC_SNK_TRANSITION_OFF = 52,
+	PR_SWAP_SRC_SNK_SOURCE_OFF = 53,
+	PR_SWAP_SRC_SNK_SOURCE_OFF_CC_DEBOUNCED = 54,
+	PR_SWAP_SRC_SNK_SINK_ON = 55,
+	PR_SWAP_SNK_SRC_SINK_OFF = 56,
+	PR_SWAP_SNK_SRC_SOURCE_ON = 57,
+	PR_SWAP_SNK_SRC_SOURCE_ON_VBUS_RAMPED_UP = 58,
+	VCONN_SWAP_ACCEPT = 59,
+	VCONN_SWAP_SEND = 60,
+	VCONN_SWAP_SEND_TIMEOUT = 61,
+	VCONN_SWAP_CANCEL = 62,
+	VCONN_SWAP_START = 63,
+	VCONN_SWAP_WAIT_FOR_VCONN = 64,
+	VCONN_SWAP_TURN_ON_VCONN = 65,
+	VCONN_SWAP_TURN_OFF_VCONN = 66,
+	FR_SWAP_SEND = 67,
+	FR_SWAP_SEND_TIMEOUT = 68,
+	FR_SWAP_SNK_SRC_TRANSITION_TO_OFF = 69,
+	FR_SWAP_SNK_SRC_NEW_SINK_READY = 70,
+	FR_SWAP_SNK_SRC_SOURCE_VBUS_APPLIED = 71,
+	FR_SWAP_CANCEL = 72,
+	SNK_TRY = 73,
+	SNK_TRY_WAIT = 74,
+	SNK_TRY_WAIT_DEBOUNCE = 75,
+	SNK_TRY_WAIT_DEBOUNCE_CHECK_VBUS = 76,
+	SRC_TRYWAIT = 77,
+	SRC_TRYWAIT_DEBOUNCE = 78,
+	SRC_TRYWAIT_UNATTACHED = 79,
+	SRC_TRY = 80,
+	SRC_TRY_WAIT = 81,
+	SRC_TRY_DEBOUNCE = 82,
+	SNK_TRYWAIT = 83,
+	SNK_TRYWAIT_DEBOUNCE = 84,
+	SNK_TRYWAIT_VBUS = 85,
+	BIST_RX = 86,
+	GET_STATUS_SEND = 87,
+	GET_STATUS_SEND_TIMEOUT = 88,
+	GET_PPS_STATUS_SEND = 89,
+	GET_PPS_STATUS_SEND_TIMEOUT = 90,
+	GET_SINK_CAP = 91,
+	GET_SINK_CAP_TIMEOUT = 92,
+	ERROR_RECOVERY = 93,
+	PORT_RESET = 94,
+	PORT_RESET_WAIT_OFF = 95,
+	AMS_START = 96,
+	CHUNK_NOT_SUPP = 97,
+};
+
+enum tcpm_transmit_status {
+	TCPC_TX_SUCCESS = 0,
+	TCPC_TX_DISCARDED = 1,
+	TCPC_TX_FAILED = 2,
+};
+
+enum vdm_states {
+	VDM_STATE_ERR_BUSY = -3,
+	VDM_STATE_ERR_SEND = -2,
+	VDM_STATE_ERR_TMOUT = -1,
+	VDM_STATE_DONE = 0,
+	VDM_STATE_READY = 1,
+	VDM_STATE_BUSY = 2,
+	VDM_STATE_WAIT_RSP_BUSY = 3,
+	VDM_STATE_SEND_MESSAGE = 4,
+};
+
+enum frs_typec_current {
+	FRS_NOT_SUPPORTED = 0,
+	FRS_DEFAULT_POWER = 1,
+	FRS_5V_1P5A = 2,
+	FRS_5V_3A = 3,
+};
+
+enum tcpm_ams {
+	NONE_AMS = 0,
+	POWER_NEGOTIATION = 1,
+	GOTOMIN = 2,
+	SOFT_RESET_AMS = 3,
+	HARD_RESET = 4,
+	CABLE_RESET = 5,
+	GET_SOURCE_CAPABILITIES = 6,
+	GET_SINK_CAPABILITIES = 7,
+	POWER_ROLE_SWAP = 8,
+	FAST_ROLE_SWAP = 9,
+	DATA_ROLE_SWAP = 10,
+	VCONN_SWAP = 11,
+	SOURCE_ALERT = 12,
+	GETTING_SOURCE_EXTENDED_CAPABILITIES = 13,
+	GETTING_SOURCE_SINK_STATUS = 14,
+	GETTING_BATTERY_CAPABILITIES = 15,
+	GETTING_BATTERY_STATUS = 16,
+	GETTING_MANUFACTURER_INFORMATION = 17,
+	SECURITY = 18,
+	FIRMWARE_UPDATE = 19,
+	DISCOVER_IDENTITY = 20,
+	SOURCE_STARTUP_CABLE_PLUG_DISCOVER_IDENTITY = 21,
+	DISCOVER_SVIDS = 22,
+	DISCOVER_MODES = 23,
+	DFP_TO_UFP_ENTER_MODE = 24,
+	DFP_TO_UFP_EXIT_MODE = 25,
+	DFP_TO_CABLE_PLUG_ENTER_MODE = 26,
+	DFP_TO_CABLE_PLUG_EXIT_MODE = 27,
+	ATTENTION = 28,
+	BIST = 29,
+	UNSTRUCTURED_VDMS = 30,
+	STRUCTURED_VDMS = 31,
+	COUNTRY_INFO = 32,
+	COUNTRY_CODES = 33,
+};
+
+enum pd_ctrl_msg_type {
+	PD_CTRL_GOOD_CRC = 1,
+	PD_CTRL_GOTO_MIN = 2,
+	PD_CTRL_ACCEPT = 3,
+	PD_CTRL_REJECT = 4,
+	PD_CTRL_PING = 5,
+	PD_CTRL_PS_RDY = 6,
+	PD_CTRL_GET_SOURCE_CAP = 7,
+	PD_CTRL_GET_SINK_CAP = 8,
+	PD_CTRL_DR_SWAP = 9,
+	PD_CTRL_PR_SWAP = 10,
+	PD_CTRL_VCONN_SWAP = 11,
+	PD_CTRL_WAIT = 12,
+	PD_CTRL_SOFT_RESET = 13,
+	PD_CTRL_NOT_SUPP = 16,
+	PD_CTRL_GET_SOURCE_CAP_EXT = 17,
+	PD_CTRL_GET_STATUS = 18,
+	PD_CTRL_FR_SWAP = 19,
+	PD_CTRL_GET_PPS_STATUS = 20,
+	PD_CTRL_GET_COUNTRY_CODES = 21,
+};
+
+enum pd_ext_msg_type {
+	PD_EXT_SOURCE_CAP_EXT = 1,
+	PD_EXT_STATUS = 2,
+	PD_EXT_GET_BATT_CAP = 3,
+	PD_EXT_GET_BATT_STATUS = 4,
+	PD_EXT_BATT_CAP = 5,
+	PD_EXT_GET_MANUFACTURER_INFO = 6,
+	PD_EXT_MANUFACTURER_INFO = 7,
+	PD_EXT_SECURITY_REQUEST = 8,
+	PD_EXT_SECURITY_RESPONSE = 9,
+	PD_EXT_FW_UPDATE_REQUEST = 10,
+	PD_EXT_FW_UPDATE_RESPONSE = 11,
+	PD_EXT_PPS_STATUS = 12,
+	PD_EXT_COUNTRY_INFO = 13,
+	PD_EXT_COUNTRY_CODES = 14,
+};
+
+enum pd_data_msg_type {
+	PD_DATA_SOURCE_CAP = 1,
+	PD_DATA_REQUEST = 2,
+	PD_DATA_BIST = 3,
+	PD_DATA_SINK_CAP = 4,
+	PD_DATA_BATT_STATUS = 5,
+	PD_DATA_ALERT = 6,
+	PD_DATA_GET_COUNTRY_INFO = 7,
+	PD_DATA_ENTER_USB = 8,
+	PD_DATA_VENDOR_DEF = 15,
+};
+
+enum pdo_err {
+	PDO_NO_ERR = 0,
+	PDO_ERR_NO_VSAFE5V = 1,
+	PDO_ERR_VSAFE5V_NOT_FIRST = 2,
+	PDO_ERR_PDO_TYPE_NOT_IN_ORDER = 3,
+	PDO_ERR_FIXED_NOT_SORTED = 4,
+	PDO_ERR_VARIABLE_BATT_NOT_SORTED = 5,
+	PDO_ERR_DUPE_PDO = 6,
+	PDO_ERR_PPS_APDO_NOT_SORTED = 7,
+	PDO_ERR_DUPE_PPS_APDO = 8,
+};
+
+enum adev_actions {
+	ADEV_NONE = 0,
+	ADEV_NOTIFY_USB_AND_QUEUE_VDM = 1,
+	ADEV_QUEUE_VDM = 2,
+	ADEV_QUEUE_VDM_SEND_EXIT_MODE_ON_FAIL = 3,
+	ADEV_ATTENTION = 4,
+};
+
+enum tcpm_psy_online_states {
+	TCPM_PSY_OFFLINE = 0,
+	TCPM_PSY_FIXED_ONLINE = 1,
+	TCPM_PSY_PROG_ONLINE = 2,
+};
+
+struct pd_chunked_ext_message_data {
+	__le16 header;
+	u8 data[26];
+};
+
+struct pd_message {
+	__le16 header;
+	union {
+		__le32 payload[7];
+		struct pd_chunked_ext_message_data ext_msg;
+	};
+} __attribute__((packed));
+
+struct tcpm_port;
+
+struct pd_rx_event {
+	struct kthread_work work;
+	struct tcpm_port *port;
+	struct pd_message msg;
+};
+
+struct pd_pps_data {
+	u32 min_volt;
+	u32 req_min_volt;
+	u32 max_volt;
+	u32 req_max_volt;
+	u32 max_curr;
+	u32 req_max_curr;
+	u32 req_out_volt;
+	u32 req_op_curr;
+	bool supported;
+	bool active;
+};
+
+struct pd_mode_data {
+	int svid_index;
+	int nsvids;
+	u16 svids[16];
+	int altmodes;
+	struct typec_altmode_desc altmode_desc[96];
+};
+
+struct tcpc_dev;
+
+struct pd_data;
+
+struct tcpm_port {
+	struct device *dev;
+	struct mutex lock;
+	struct kthread_worker *wq;
+	struct typec_capability typec_caps;
+	struct typec_port *typec_port;
+	struct tcpc_dev *tcpc;
+	struct usb_role_switch *role_sw;
+	enum typec_role vconn_role;
+	enum typec_role pwr_role;
+	enum typec_data_role data_role;
+	enum typec_pwr_opmode pwr_opmode;
+	struct usb_pd_identity partner_ident;
+	struct typec_partner_desc partner_desc;
+	struct typec_partner *partner;
+	enum typec_cc_status cc_req;
+	enum typec_cc_status src_rp;
+	enum typec_cc_status cc1;
+	enum typec_cc_status cc2;
+	enum typec_cc_polarity polarity;
+	bool attached;
+	bool connected;
+	bool registered;
+	bool pd_supported;
+	enum typec_port_type port_type;
+	bool vbus_present;
+	bool vbus_vsafe0v;
+	bool vbus_never_low;
+	bool vbus_source;
+	bool vbus_charge;
+	bool send_discover;
+	bool op_vsafe5v;
+	int try_role;
+	int try_snk_count;
+	int try_src_count;
+	enum pd_msg_request queued_message;
+	enum tcpm_state enter_state;
+	enum tcpm_state prev_state;
+	enum tcpm_state state;
+	enum tcpm_state delayed_state;
+	ktime_t delayed_runtime;
+	unsigned long delay_ms;
+	spinlock_t pd_event_lock;
+	u32 pd_events;
+	struct kthread_work event_work;
+	struct hrtimer state_machine_timer;
+	struct kthread_work state_machine;
+	struct hrtimer vdm_state_machine_timer;
+	struct kthread_work vdm_state_machine;
+	struct hrtimer enable_frs_timer;
+	struct kthread_work enable_frs;
+	struct hrtimer send_discover_timer;
+	struct kthread_work send_discover_work;
+	bool state_machine_running;
+	bool vdm_sm_running;
+	struct completion tx_complete;
+	enum tcpm_transmit_status tx_status;
+	struct mutex swap_lock;
+	bool swap_pending;
+	bool non_pd_role_swap;
+	struct completion swap_complete;
+	int swap_status;
+	unsigned int negotiated_rev;
+	unsigned int message_id;
+	unsigned int caps_count;
+	unsigned int hard_reset_count;
+	bool pd_capable;
+	bool explicit_contract;
+	unsigned int rx_msgid;
+	struct usb_power_delivery **pds;
+	struct pd_data **pd_list;
+	struct usb_power_delivery_capabilities *port_source_caps;
+	struct usb_power_delivery_capabilities *port_sink_caps;
+	struct usb_power_delivery *partner_pd;
+	struct usb_power_delivery_capabilities *partner_source_caps;
+	struct usb_power_delivery_capabilities *partner_sink_caps;
+	struct usb_power_delivery *selected_pd;
+	u32 sink_request;
+	u32 source_caps[7];
+	unsigned int nr_source_caps;
+	u32 sink_caps[7];
+	unsigned int nr_sink_caps;
+	unsigned int pd_count;
+	u32 src_pdo[7];
+	unsigned int nr_src_pdo;
+	u32 snk_pdo[7];
+	unsigned int nr_snk_pdo;
+	u32 snk_vdo_v1[6];
+	unsigned int nr_snk_vdo_v1;
+	u32 snk_vdo[6];
+	unsigned int nr_snk_vdo;
+	unsigned int operating_snk_mw;
+	bool update_sink_caps;
+	u32 req_current_limit;
+	u32 req_supply_voltage;
+	u32 current_limit;
+	u32 supply_voltage;
+	struct power_supply *psy;
+	struct power_supply_desc psy_desc;
+	enum power_supply_usb_type usb_type;
+	u32 bist_request;
+	enum vdm_states vdm_state;
+	u32 vdm_retries;
+	u32 vdo_data[7];
+	u8 vdo_count;
+	u32 vdo_retry;
+	struct pd_pps_data pps_data;
+	struct completion pps_complete;
+	bool pps_pending;
+	int pps_status;
+	struct pd_mode_data mode_data;
+	struct typec_altmode *partner_altmode[96];
+	struct typec_altmode *port_altmode[96];
+	unsigned long max_wait;
+	bool self_powered;
+	enum frs_typec_current new_source_frs_current;
+	bool sink_cap_done;
+	enum tcpm_state upcoming_state;
+	enum tcpm_ams ams;
+	enum tcpm_ams next_ams;
+	bool in_ams;
+	bool auto_vbus_discharge_enabled;
+	bool slow_charger_loop;
+	bool potential_contaminant;
+	struct dentry *dentry;
+	struct mutex logbuffer_lock;
+	int logbuffer_head;
+	int logbuffer_tail;
+	u8 *logbuffer[1024];
+};
+
+struct tcpc_dev {
+	struct fwnode_handle *fwnode;
+	int (*init)(struct tcpc_dev *);
+	int (*get_vbus)(struct tcpc_dev *);
+	int (*get_current_limit)(struct tcpc_dev *);
+	int (*set_cc)(struct tcpc_dev *, enum typec_cc_status);
+	int (*apply_rc)(struct tcpc_dev *, enum typec_cc_status, enum typec_cc_polarity);
+	int (*get_cc)(struct tcpc_dev *, enum typec_cc_status *, enum typec_cc_status *);
+	int (*set_polarity)(struct tcpc_dev *, enum typec_cc_polarity);
+	int (*set_vconn)(struct tcpc_dev *, bool);
+	int (*set_vbus)(struct tcpc_dev *, bool, bool);
+	int (*set_current_limit)(struct tcpc_dev *, u32, u32);
+	int (*set_pd_rx)(struct tcpc_dev *, bool);
+	int (*set_roles)(struct tcpc_dev *, bool, enum typec_role, enum typec_data_role);
+	int (*start_toggling)(struct tcpc_dev *, enum typec_port_type, enum typec_cc_status);
+	int (*try_role)(struct tcpc_dev *, int);
+	int (*pd_transmit)(struct tcpc_dev *, enum tcpm_transmit_type, const struct pd_message *, unsigned int);
+	int (*set_bist_data)(struct tcpc_dev *, bool);
+	int (*enable_frs)(struct tcpc_dev *, bool);
+	void (*frs_sourcing_vbus)(struct tcpc_dev *);
+	int (*enable_auto_vbus_discharge)(struct tcpc_dev *, bool);
+	int (*set_auto_vbus_discharge_threshold)(struct tcpc_dev *, enum typec_pwr_opmode, bool, u32);
+	bool (*is_vbus_vsafe0v)(struct tcpc_dev *);
+	void (*set_partner_usb_comm_capable)(struct tcpc_dev *, bool);
+	void (*check_contaminant)(struct tcpc_dev *);
+};
+
+struct pd_data {
+	struct usb_power_delivery *pd;
+	struct usb_power_delivery_capabilities *source_cap;
+	struct usb_power_delivery_capabilities_desc source_desc;
+	struct usb_power_delivery_capabilities *sink_cap;
+	struct usb_power_delivery_capabilities_desc sink_desc;
+	unsigned int operating_snk_mw;
+};
+
+struct power_supply_config {
+	struct device_node *of_node;
+	struct fwnode_handle *fwnode;
+	void *drv_data;
+	const struct attribute_group **attr_grp;
+	char **supplied_to;
+	size_t num_supplicants;
+	u64 android_kabi_reserved1;
+};
+
+struct tcpci_data;
+
+struct tcpci {
+	struct device *dev;
+	struct tcpm_port *port;
+	struct regmap *regmap;
+	unsigned int alert_mask;
+	bool controls_vbus;
+	struct tcpc_dev tcpc;
+	struct tcpci_data *data;
+};
+
+struct tcpci_data {
+	struct regmap *regmap;
+	unsigned char TX_BUF_BYTE_x_hidden: 1;
+	unsigned char auto_discharge_disconnect: 1;
+	unsigned char vbus_vsafe0v: 1;
+	int (*init)(struct tcpci *, struct tcpci_data *);
+	int (*set_vconn)(struct tcpci *, struct tcpci_data *, bool);
+	int (*start_drp_toggling)(struct tcpci *, struct tcpci_data *, enum typec_cc_status);
+	int (*set_vbus)(struct tcpci *, struct tcpci_data *, bool, bool);
+	void (*frs_sourcing_vbus)(struct tcpci *, struct tcpci_data *);
+	void (*set_partner_usb_comm_capable)(struct tcpci *, struct tcpci_data *, bool);
+	void (*check_contaminant)(struct tcpci *, struct tcpci_data *);
+};
+
+struct tcpci_chip {
+	struct tcpci *tcpci;
+	struct tcpci_data data;
+};
+
+enum {
+	TYPEC_MODE_USB2 = 2,
+	TYPEC_MODE_USB3 = 3,
+	TYPEC_MODE_USB4 = 4,
+	TYPEC_MODE_AUDIO = 5,
+	TYPEC_MODE_DEBUG = 6,
+};
+
+struct ucsi_connector;
+
+struct ucsi_work {
+	struct delayed_work work;
+	struct list_head node;
+	unsigned long delay;
+	unsigned int count;
+	struct ucsi_connector *con;
+	int (*cb)(struct ucsi_connector *);
+};
+
+struct ucsi_connector_status {
+	u16 change;
+	u16 flags;
+	u32 request_data_obj;
+	u8 pwr_status;
+} __attribute__((packed));
+
+struct ucsi_connector_capability {
+	u8 op_mode;
+	u8 flags;
+};
+
+struct ucsi;
+
+struct ucsi_connector {
+	int num;
+	struct ucsi *ucsi;
+	struct mutex lock;
+	struct work_struct work;
+	struct completion complete;
+	struct workqueue_struct *wq;
+	struct list_head partner_tasks;
+	struct typec_port *port;
+	struct typec_partner *partner;
+	struct typec_altmode *port_altmode[30];
+	struct typec_altmode *partner_altmode[30];
+	struct typec_capability typec_cap;
+	struct ucsi_connector_status status;
+	struct ucsi_connector_capability cap;
+	struct power_supply *psy;
+	struct power_supply_desc psy_desc;
+	u32 rdo;
+	u32 src_pdos[7];
+	int num_pdos;
+	struct usb_power_delivery *pd;
+	struct usb_power_delivery_capabilities *port_source_caps;
+	struct usb_power_delivery_capabilities *port_sink_caps;
+	struct usb_power_delivery *partner_pd;
+	struct usb_power_delivery_capabilities *partner_source_caps;
+	struct usb_power_delivery_capabilities *partner_sink_caps;
+	struct usb_role_switch *usb_role_sw;
+};
+
+struct driver_data;
+
+struct ucsi_capability {
+	u32 attributes;
+	u8 num_connectors;
+	u8 features;
+	u16 reserved_1;
+	u8 num_alt_modes;
+	u8 reserved_2;
+	u16 bc_version;
+	u16 pd_version;
+	u16 typec_version;
+};
+
+struct ucsi_operations;
+
+struct ucsi_debugfs_entry;
+
+struct ucsi {
+	u16 version;
+	struct device *dev;
+	struct driver_data *driver_data;
+	const struct ucsi_operations *ops;
+	struct ucsi_capability cap;
+	struct ucsi_connector *connector;
+	struct ucsi_debugfs_entry *debugfs;
+	struct work_struct resume_work;
+	struct delayed_work work;
+	int work_count;
+	struct mutex ppm_lock;
+	u64 ntfy;
+	unsigned long flags;
+};
+
+struct ucsi_altmode;
+
+struct ucsi_operations {
+	int (*read)(struct ucsi *, unsigned int, void *, size_t);
+	int (*sync_write)(struct ucsi *, unsigned int, const void *, size_t);
+	int (*async_write)(struct ucsi *, unsigned int, const void *, size_t);
+	bool (*update_altmodes)(struct ucsi *, struct ucsi_altmode *, struct ucsi_altmode *);
+};
+
+struct ucsi_altmode {
+	u16 svid;
+	u32 mid;
+} __attribute__((packed));
+
+struct ucsi_data {
+	u64 low;
+	u64 high;
+};
+
+struct ucsi_debugfs_entry {
+	u64 command;
+	struct ucsi_data response;
+	u32 status;
+	struct dentry *dentry;
+};
+
+typedef void (*btf_trace_ucsi_run_command)(void *, u64, int);
+
+typedef void (*btf_trace_ucsi_reset_ppm)(void *, u64, int);
+
+typedef void (*btf_trace_ucsi_connector_change)(void *, int, struct ucsi_connector_status *);
+
+typedef void (*btf_trace_ucsi_register_port)(void *, int, struct ucsi_connector_status *);
+
+typedef void (*btf_trace_ucsi_register_altmode)(void *, u8, struct typec_altmode *);
+
+struct trace_event_raw_ucsi_log_command {
+	struct trace_entry ent;
+	u64 ctrl;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_ucsi_log_connector_status {
+	struct trace_entry ent;
+	int port;
+	u16 change;
+	u8 opmode;
+	u8 connected;
+	u8 pwr_dir;
+	u8 partner_flags;
+	u8 partner_type;
+	u32 request_data_obj;
+	u8 bc_status;
+	char __data[0];
+};
+
+struct trace_event_raw_ucsi_log_register_altmode {
+	struct trace_entry ent;
+	u8 recipient;
+	u16 svid;
+	u8 mode;
+	u32 vdo;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_ucsi_log_command {};
+
+struct trace_event_data_offsets_ucsi_log_connector_status {};
+
+struct trace_event_data_offsets_ucsi_log_register_altmode {};
+
+enum ucsi_psy_online_states {
+	UCSI_PSY_OFFLINE = 0,
+	UCSI_PSY_FIXED_ONLINE = 1,
+	UCSI_PSY_PROG_ONLINE = 2,
+};
+
+enum {
+	POWER_SUPPLY_SCOPE_UNKNOWN = 0,
+	POWER_SUPPLY_SCOPE_SYSTEM = 1,
+	POWER_SUPPLY_SCOPE_DEVICE = 2,
+};
+
+struct ucsi_dp {
+	struct typec_displayport_data data;
+	struct ucsi_connector *con;
+	struct typec_altmode *alt;
+	struct work_struct work;
+	int offset;
+	bool override;
+	bool initialized;
+	u32 header;
+	u32 *vdo_data;
+	u8 vdo_size;
+};
+
+struct usb_role_switch {
+	struct device dev;
+	struct mutex lock;
+	struct module *module;
+	enum usb_role role;
+	bool registered;
+	struct device *usb2_port;
+	struct device *usb3_port;
+	struct device *udc;
+	usb_role_switch_set_t set;
+	usb_role_switch_get_t get;
+	bool allow_userspace_control;
+};
+
+enum serio_event_type {
+	SERIO_RESCAN_PORT = 0,
+	SERIO_RECONNECT_PORT = 1,
+	SERIO_RECONNECT_SUBTREE = 2,
+	SERIO_REGISTER_PORT = 3,
+	SERIO_ATTACH_DRIVER = 4,
+};
+
+struct serio_device_id {
+	__u8 type;
+	__u8 extra;
+	__u8 id;
+	__u8 proto;
+};
+
+struct serio_driver;
+
+struct serio {
+	void *port_data;
+	char name[32];
+	char phys[32];
+	char firmware_id[128];
+	bool manual_bind;
+	struct serio_device_id id;
+	spinlock_t lock;
+	int (*write)(struct serio *, unsigned char);
+	int (*open)(struct serio *);
+	void (*close)(struct serio *);
+	int (*start)(struct serio *);
+	void (*stop)(struct serio *);
+	struct serio *parent;
+	struct list_head child_node;
+	struct list_head children;
+	unsigned int depth;
+	struct serio_driver *drv;
+	struct mutex drv_mutex;
+	struct device dev;
+	struct list_head node;
+	struct mutex *ps2_cmd_mutex;
+	u64 android_kabi_reserved1;
+};
+
+struct serio_driver {
+	const char *description;
+	const struct serio_device_id *id_table;
+	bool manual_bind;
+	void (*write_wakeup)(struct serio *);
+	irqreturn_t (*interrupt)(struct serio *, unsigned char, unsigned int);
+	int (*connect)(struct serio *, struct serio_driver *);
+	int (*reconnect)(struct serio *);
+	int (*fast_reconnect)(struct serio *);
+	void (*disconnect)(struct serio *);
+	void (*cleanup)(struct serio *);
+	struct device_driver driver;
+	u64 android_kabi_reserved1;
+};
+
+struct serio_event {
+	enum serio_event_type type;
+	void *object;
+	struct module *owner;
+	struct list_head node;
+};
+
+struct serport___2 {
+	struct tty_struct *tty;
+	wait_queue_head_t wait;
+	struct serio *serio;
+	struct serio_device_id id;
+	spinlock_t lock;
+	unsigned long flags;
+};
+
+enum ps2_disposition {
+	PS2_PROCESS = 0,
+	PS2_IGNORE = 1,
+	PS2_ERROR = 2,
+};
+
+struct ps2dev;
+
+typedef enum ps2_disposition (*ps2_pre_receive_handler_t)(struct ps2dev *, u8, unsigned int);
+
+typedef void (*ps2_receive_handler_t)(struct ps2dev *, u8);
+
+struct ps2dev {
+	struct serio *serio;
+	struct mutex cmd_mutex;
+	wait_queue_head_t wait;
+	unsigned long flags;
+	u8 cmdbuf[8];
+	u8 cmdcnt;
+	u8 nak;
+	ps2_pre_receive_handler_t pre_receive_handler;
+	ps2_receive_handler_t receive_handler;
+};
+
+enum input_clock_type {
+	INPUT_CLK_REAL = 0,
+	INPUT_CLK_MONO = 1,
+	INPUT_CLK_BOOT = 2,
+	INPUT_CLK_MAX = 3,
+};
+
+struct input_mt_slot {
+	int abs[14];
+	unsigned int frame;
+	unsigned int key;
+};
+
+struct input_mt {
+	int trkid;
+	int num_slots;
+	int slot;
+	unsigned int flags;
+	unsigned int frame;
+	int *red;
+	struct input_mt_slot slots[0];
+};
+
+union input_seq_state {
+	struct {
+		unsigned short pos;
+		bool mutex_acquired;
+	};
+	void *p;
+};
+
+struct input_devres {
+	struct input_dev *input;
+};
+
+struct ff_periodic_effect_compat {
+	__u16 waveform;
+	__u16 period;
+	__s16 magnitude;
+	__s16 offset;
+	__u16 phase;
+	struct ff_envelope envelope;
+	__u32 custom_len;
+	compat_uptr_t custom_data;
+};
+
+struct ff_effect_compat {
+	__u16 type;
+	__s16 id;
+	__u16 direction;
+	struct ff_trigger trigger;
+	struct ff_replay replay;
+	union {
+		struct ff_constant_effect constant;
+		struct ff_ramp_effect ramp;
+		struct ff_periodic_effect_compat periodic;
+		struct ff_condition_effect condition[2];
+		struct ff_rumble_effect rumble;
+	} u;
+};
+
+struct input_event_compat {
+	compat_ulong_t sec;
+	compat_ulong_t usec;
+	__u16 type;
+	__u16 code;
+	__s32 value;
+};
+
+struct input_event {
+	__kernel_ulong_t __sec;
+	__kernel_ulong_t __usec;
+	__u16 type;
+	__u16 code;
+	__s32 value;
+};
+
+struct input_mt_pos {
+	s16 x;
+	s16 y;
+};
+
+struct input_dev_poller {
+	void (*poll)(struct input_dev *);
+	unsigned int poll_interval;
+	unsigned int poll_interval_max;
+	unsigned int poll_interval_min;
+	struct input_dev *input;
+	struct delayed_work work;
+};
+
+struct touchscreen_properties {
+	unsigned int max_x;
+	unsigned int max_y;
+	bool invert_x;
+	bool invert_y;
+	bool swap_x_y;
+};
+
+struct ml_effect_state {
+	struct ff_effect *effect;
+	unsigned long flags;
+	int count;
+	unsigned long play_at;
+	unsigned long stop_at;
+	unsigned long adj_at;
+};
+
+struct ml_device {
+	void *private;
+	struct ml_effect_state states[16];
+	int gain;
+	struct timer_list timer;
+	struct input_dev *dev;
+	int (*play_effect)(struct input_dev *, void *, struct ff_effect *);
+};
+
+struct vivaldi_data {
+	u32 function_row_physmap[24];
+	unsigned int num_function_row_keys;
+};
+
+struct input_led {
+	struct led_classdev cdev;
+	struct input_handle *handle;
+	unsigned int code;
+};
+
+struct input_leds {
+	struct input_handle handle;
+	unsigned int num_leds;
+	struct input_led leds[0];
+};
+
+struct evdev;
+
+struct evdev_client {
+	unsigned int head;
+	unsigned int tail;
+	unsigned int packet_head;
+	spinlock_t buffer_lock;
+	wait_queue_head_t wait;
+	struct fasync_struct *fasync;
+	struct evdev *evdev;
+	struct list_head node;
+	enum input_clock_type clk_type;
+	bool revoked;
+	unsigned long *evmasks[32];
+	unsigned int bufsize;
+	struct input_event buffer[0];
+};
+
+struct evdev {
+	int open;
+	struct input_handle handle;
+	struct evdev_client __attribute__((btf_type_tag("rcu"))) *grab;
+	struct list_head client_list;
+	spinlock_t client_lock;
+	struct mutex mutex;
+	struct device dev;
+	struct cdev cdev;
+	bool exist;
+};
+
+struct input_mask {
+	__u32 type;
+	__u32 codes_size;
+	__u64 codes_ptr;
+};
+
+struct atkbd {
+	struct ps2dev ps2dev;
+	struct input_dev *dev;
+	char name[64];
+	char phys[32];
+	unsigned short id;
+	unsigned short keycode[512];
+	unsigned long force_release_mask[8];
+	unsigned char set;
+	bool translated;
+	bool extra;
+	bool write;
+	bool softrepeat;
+	bool softraw;
+	bool scroll;
+	bool enabled;
+	unsigned char emul;
+	bool resend;
+	bool release;
+	unsigned long xl_bit;
+	unsigned int last;
+	unsigned long time;
+	unsigned long err_count;
+	struct delayed_work event_work;
+	unsigned long event_jiffies;
+	unsigned long event_mask;
+	struct mutex mutex;
+	struct vivaldi_data vdata;
+};
+
+struct gpio_keys_button {
+	unsigned int code;
+	int gpio;
+	int active_low;
+	const char *desc;
+	unsigned int type;
+	int wakeup;
+	int wakeup_event_action;
+	int debounce_interval;
+	bool can_disable;
+	int value;
+	unsigned int irq;
+};
+
+struct gpio_button_data {
+	const struct gpio_keys_button *button;
+	struct input_dev *input;
+	struct gpio_desc *gpiod;
+	unsigned short *code;
+	struct hrtimer release_timer;
+	unsigned int release_delay;
+	struct delayed_work work;
+	struct hrtimer debounce_timer;
+	unsigned int software_debounce;
+	unsigned int irq;
+	unsigned int wakeup_trigger_type;
+	spinlock_t lock;
+	bool disabled;
+	bool key_pressed;
+	bool suspended;
+	bool debounce_use_hrtimer;
+};
+
+struct gpio_keys_platform_data;
+
+struct gpio_keys_drvdata {
+	const struct gpio_keys_platform_data *pdata;
+	struct input_dev *input;
+	struct mutex disable_lock;
+	unsigned short *keymap;
+	struct gpio_button_data data[0];
+};
+
+struct gpio_keys_platform_data {
+	const struct gpio_keys_button *buttons;
+	int nbuttons;
+	unsigned int poll_interval;
+	unsigned int rep: 1;
+	int (*enable)(struct device *);
+	void (*disable)(struct device *);
+	const char *name;
+};
+
+struct xpad_device {
+	u16 idVendor;
+	u16 idProduct;
+	char *name;
+	u8 mapping;
+	u8 xtype;
+};
+
+struct xboxone_init_packet {
+	u16 idVendor;
+	u16 idProduct;
+	const u8 *data;
+	u8 len;
+};
+
+struct xpad_output_packet {
+	u8 data[64];
+	u8 len;
+	bool pending;
+};
+
+struct usb_xpad {
+	struct input_dev *dev;
+	struct input_dev __attribute__((btf_type_tag("rcu"))) *x360w_dev;
+	struct usb_device *udev;
+	struct usb_interface *intf;
+	bool pad_present;
+	bool input_created;
+	struct urb *irq_in;
+	unsigned char *idata;
+	dma_addr_t idata_dma;
+	struct urb *irq_out;
+	struct usb_anchor irq_out_anchor;
+	bool irq_out_active;
+	u8 odata_serial;
+	unsigned char *odata;
+	dma_addr_t odata_dma;
+	spinlock_t odata_lock;
+	struct xpad_output_packet out_packets[1];
+	int last_out_packet;
+	int init_seq;
+	char phys[64];
+	int mapping;
+	int xtype;
+	int packet_type;
+	int pad_nr;
+	const char *name;
+	struct work_struct work;
+	time64_t mode_btn_down_ts;
+};
+
+enum uinput_state {
+	UIST_NEW_DEVICE = 0,
+	UIST_SETUP_COMPLETE = 1,
+	UIST_CREATED = 2,
+};
+
+struct uinput_request;
+
+struct uinput_device {
+	struct input_dev *dev;
+	struct mutex mutex;
+	enum uinput_state state;
+	wait_queue_head_t waitq;
+	unsigned char ready;
+	unsigned char head;
+	unsigned char tail;
+	struct input_event buff[16];
+	unsigned int ff_effects_max;
+	struct uinput_request *requests[16];
+	wait_queue_head_t requests_waitq;
+	spinlock_t requests_lock;
+};
+
+struct uinput_request {
+	unsigned int id;
+	unsigned int code;
+	int retval;
+	struct completion done;
+	union {
+		unsigned int effect_id;
+		struct {
+			struct ff_effect *effect;
+			struct ff_effect *old;
+		} upload;
+	} u;
+};
+
+struct uinput_user_dev {
+	char name[80];
+	struct input_id id;
+	__u32 ff_effects_max;
+	__s32 absmax[64];
+	__s32 absmin[64];
+	__s32 absfuzz[64];
+	__s32 absflat[64];
+};
+
+struct uinput_ff_upload {
+	__u32 request_id;
+	__s32 retval;
+	struct ff_effect effect;
+	struct ff_effect old;
+};
+
+struct uinput_ff_erase {
+	__u32 request_id;
+	__s32 retval;
+	__u32 effect_id;
+};
+
+struct uinput_setup {
+	struct input_id id;
+	char name[80];
+	__u32 ff_effects_max;
+};
+
+struct uinput_ff_upload_compat {
+	__u32 request_id;
+	__s32 retval;
+	struct ff_effect_compat effect;
+	struct ff_effect_compat old;
+};
+
+struct uinput_abs_setup {
+	__u16 code;
+	struct input_absinfo absinfo;
+};
+
+typedef void (*btf_trace_rtc_set_time)(void *, time64_t, int);
+
+typedef void (*btf_trace_rtc_read_time)(void *, time64_t, int);
+
+typedef void (*btf_trace_rtc_set_alarm)(void *, time64_t, int);
+
+typedef void (*btf_trace_rtc_read_alarm)(void *, time64_t, int);
+
+typedef void (*btf_trace_rtc_irq_set_freq)(void *, int, int);
+
+typedef void (*btf_trace_rtc_irq_set_state)(void *, int, int);
+
+typedef void (*btf_trace_rtc_alarm_irq_enable)(void *, unsigned int, int);
+
+typedef void (*btf_trace_rtc_set_offset)(void *, long, int);
+
+typedef void (*btf_trace_rtc_read_offset)(void *, long, int);
+
+typedef void (*btf_trace_rtc_timer_enqueue)(void *, struct rtc_timer *);
+
+typedef void (*btf_trace_rtc_timer_dequeue)(void *, struct rtc_timer *);
+
+typedef void (*btf_trace_rtc_timer_fired)(void *, struct rtc_timer *);
+
+enum {
+	none = 0,
+	day = 1,
+	month = 2,
+	year = 3,
+};
+
+struct trace_event_raw_rtc_time_alarm_class {
+	struct trace_entry ent;
+	time64_t secs;
+	int err;
+	char __data[0];
+};
+
+struct trace_event_raw_rtc_irq_set_freq {
+	struct trace_entry ent;
+	int freq;
+	int err;
+	char __data[0];
+};
+
+struct trace_event_raw_rtc_irq_set_state {
+	struct trace_entry ent;
+	int enabled;
+	int err;
+	char __data[0];
+};
+
+struct trace_event_raw_rtc_alarm_irq_enable {
+	struct trace_entry ent;
+	unsigned int enabled;
+	int err;
+	char __data[0];
+};
+
+struct trace_event_raw_rtc_offset_class {
+	struct trace_entry ent;
+	long offset;
+	int err;
+	char __data[0];
+};
+
+struct trace_event_raw_rtc_timer_class {
+	struct trace_entry ent;
+	struct rtc_timer *timer;
+	ktime_t expires;
+	ktime_t period;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_rtc_time_alarm_class {};
+
+struct trace_event_data_offsets_rtc_irq_set_freq {};
+
+struct trace_event_data_offsets_rtc_irq_set_state {};
+
+struct trace_event_data_offsets_rtc_alarm_irq_enable {};
+
+struct trace_event_data_offsets_rtc_offset_class {};
+
+struct trace_event_data_offsets_rtc_timer_class {};
+
+struct pl030_rtc {
+	struct rtc_device *rtc;
+	void *base;
+};
+
+struct pl031_vendor_data {
+	struct rtc_class_ops ops;
+	bool clockwatch;
+	bool st_weekday;
+	unsigned long irqflags;
+	time64_t range_min;
+	timeu64_t range_max;
+};
+
+struct pl031_local {
+	struct pl031_vendor_data *vendor;
+	struct rtc_device *rtc;
+	void *base;
+};
+
+struct i2c_devinfo {
+	struct list_head list;
+	int busnum;
+	struct i2c_board_info board_info;
+};
+
+typedef void (*btf_trace_i2c_write)(void *, const struct i2c_adapter *, const struct i2c_msg *, int);
+
+typedef void (*btf_trace_i2c_read)(void *, const struct i2c_adapter *, const struct i2c_msg *, int);
+
+typedef void (*btf_trace_i2c_reply)(void *, const struct i2c_adapter *, const struct i2c_msg *, int);
+
+typedef void (*btf_trace_i2c_result)(void *, const struct i2c_adapter *, int, int);
+
+struct trace_event_raw_i2c_write {
+	struct trace_entry ent;
+	int adapter_nr;
+	__u16 msg_nr;
+	__u16 addr;
+	__u16 flags;
+	__u16 len;
+	u32 __data_loc_buf;
+	char __data[0];
+};
+
+struct trace_event_raw_i2c_read {
+	struct trace_entry ent;
+	int adapter_nr;
+	__u16 msg_nr;
+	__u16 addr;
+	__u16 flags;
+	__u16 len;
+	char __data[0];
+};
+
+struct trace_event_raw_i2c_reply {
+	struct trace_entry ent;
+	int adapter_nr;
+	__u16 msg_nr;
+	__u16 addr;
+	__u16 flags;
+	__u16 len;
+	u32 __data_loc_buf;
+	char __data[0];
+};
+
+struct trace_event_raw_i2c_result {
+	struct trace_entry ent;
+	int adapter_nr;
+	__u16 nr_msgs;
+	__s16 ret;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_i2c_write {
+	u32 buf;
+};
+
+struct trace_event_data_offsets_i2c_reply {
+	u32 buf;
+};
+
+struct trace_event_data_offsets_i2c_read {};
+
+struct trace_event_data_offsets_i2c_result {};
+
+struct i2c_timings {
+	u32 bus_freq_hz;
+	u32 scl_rise_ns;
+	u32 scl_fall_ns;
+	u32 scl_int_delay_ns;
+	u32 sda_fall_ns;
+	u32 sda_hold_ns;
+	u32 digital_filter_width_ns;
+	u32 analog_filter_cutoff_freq_hz;
+};
+
+struct i2c_cmd_arg {
+	unsigned int cmd;
+	void *arg;
+};
+
+struct i2c_device_identity {
+	u16 manufacturer_id;
+	u16 part_id;
+	u8 die_revision;
+};
+
+typedef void (*btf_trace_smbus_write)(void *, const struct i2c_adapter *, u16, unsigned short, char, u8, int, const union i2c_smbus_data *);
+
+typedef void (*btf_trace_smbus_read)(void *, const struct i2c_adapter *, u16, unsigned short, char, u8, int);
+
+typedef void (*btf_trace_smbus_reply)(void *, const struct i2c_adapter *, u16, unsigned short, char, u8, int, const union i2c_smbus_data *, int);
+
+typedef void (*btf_trace_smbus_result)(void *, const struct i2c_adapter *, u16, unsigned short, char, u8, int, int);
+
+struct trace_event_raw_smbus_write {
+	struct trace_entry ent;
+	int adapter_nr;
+	__u16 addr;
+	__u16 flags;
+	__u8 command;
+	__u8 len;
+	__u32 protocol;
+	__u8 buf[34];
+	char __data[0];
+};
+
+struct trace_event_raw_smbus_read {
+	struct trace_entry ent;
+	int adapter_nr;
+	__u16 flags;
+	__u16 addr;
+	__u8 command;
+	__u32 protocol;
+	__u8 buf[34];
+	char __data[0];
+};
+
+struct trace_event_raw_smbus_reply {
+	struct trace_entry ent;
+	int adapter_nr;
+	__u16 addr;
+	__u16 flags;
+	__u8 command;
+	__u8 len;
+	__u32 protocol;
+	__u8 buf[34];
+	char __data[0];
+};
+
+struct trace_event_raw_smbus_result {
+	struct trace_entry ent;
+	int adapter_nr;
+	__u16 addr;
+	__u16 flags;
+	__u8 read_write;
+	__u8 command;
+	__s16 res;
+	__u32 protocol;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_smbus_write {};
+
+struct trace_event_data_offsets_smbus_read {};
+
+struct trace_event_data_offsets_smbus_reply {};
+
+struct trace_event_data_offsets_smbus_result {};
+
+struct i2c_smbus_alert_setup {
+	int irq;
+};
+
+enum i3c_error_code {
+	I3C_ERROR_UNKNOWN = 0,
+	I3C_ERROR_M0 = 1,
+	I3C_ERROR_M1 = 2,
+	I3C_ERROR_M2 = 3,
+};
+
+enum i3c_bus_mode {
+	I3C_BUS_MODE_PURE = 0,
+	I3C_BUS_MODE_MIXED_FAST = 1,
+	I3C_BUS_MODE_MIXED_LIMITED = 2,
+	I3C_BUS_MODE_MIXED_SLOW = 3,
+};
+
+struct i3c_dev_desc;
+
+struct i3c_bus {
+	struct i3c_dev_desc *cur_master;
+	int id;
+	unsigned long addrslots[4];
+	enum i3c_bus_mode mode;
+	struct {
+		unsigned long i3c;
+		unsigned long i2c;
+	} scl_rate;
+	struct {
+		struct list_head i3c;
+		struct list_head i2c;
+	} devs;
+	struct rw_semaphore lock;
+};
+
+struct i3c_master_controller;
+
+struct i3c_i2c_dev_desc {
+	struct list_head node;
+	struct i3c_master_controller *master;
+	void *master_priv;
+};
+
+struct i3c_device_info {
+	u64 pid;
+	u8 bcr;
+	u8 dcr;
+	u8 static_addr;
+	u8 dyn_addr;
+	u8 hdr_cap;
+	u8 max_read_ds;
+	u8 max_write_ds;
+	u8 max_ibi_len;
+	u32 max_read_turnaround;
+	u16 max_read_len;
+	u16 max_write_len;
+};
+
+struct i3c_device_ibi_info;
+
+struct i3c_device;
+
+struct i3c_dev_boardinfo;
+
+struct i3c_dev_desc {
+	struct i3c_i2c_dev_desc common;
+	struct i3c_device_info info;
+	struct mutex ibi_lock;
+	struct i3c_device_ibi_info *ibi;
+	struct i3c_device *dev;
+	const struct i3c_dev_boardinfo *boardinfo;
+};
+
+struct i3c_master_controller_ops;
+
+struct i3c_master_controller {
+	struct device dev;
+	struct i3c_dev_desc *this;
+	struct i2c_adapter i2c;
+	const struct i3c_master_controller_ops *ops;
+	unsigned int secondary: 1;
+	unsigned int init_done: 1;
+	struct {
+		struct list_head i3c;
+		struct list_head i2c;
+	} boardinfo;
+	struct i3c_bus bus;
+	struct workqueue_struct *wq;
+};
+
+struct i3c_ccc_cmd;
+
+struct i3c_priv_xfer;
+
+struct i2c_dev_desc;
+
+struct i3c_ibi_setup;
+
+struct i3c_ibi_slot;
+
+struct i3c_master_controller_ops {
+	int (*bus_init)(struct i3c_master_controller *);
+	void (*bus_cleanup)(struct i3c_master_controller *);
+	int (*attach_i3c_dev)(struct i3c_dev_desc *);
+	int (*reattach_i3c_dev)(struct i3c_dev_desc *, u8);
+	void (*detach_i3c_dev)(struct i3c_dev_desc *);
+	int (*do_daa)(struct i3c_master_controller *);
+	bool (*supports_ccc_cmd)(struct i3c_master_controller *, const struct i3c_ccc_cmd *);
+	int (*send_ccc_cmd)(struct i3c_master_controller *, struct i3c_ccc_cmd *);
+	int (*priv_xfers)(struct i3c_dev_desc *, struct i3c_priv_xfer *, int);
+	int (*attach_i2c_dev)(struct i2c_dev_desc *);
+	void (*detach_i2c_dev)(struct i2c_dev_desc *);
+	int (*i2c_xfers)(struct i2c_dev_desc *, const struct i2c_msg *, int);
+	int (*request_ibi)(struct i3c_dev_desc *, const struct i3c_ibi_setup *);
+	void (*free_ibi)(struct i3c_dev_desc *);
+	int (*enable_ibi)(struct i3c_dev_desc *);
+	int (*disable_ibi)(struct i3c_dev_desc *);
+	void (*recycle_ibi_slot)(struct i3c_dev_desc *, struct i3c_ibi_slot *);
+};
+
+struct i3c_ccc_cmd_dest;
+
+struct i3c_ccc_cmd {
+	u8 rnw;
+	u8 id;
+	unsigned int ndests;
+	struct i3c_ccc_cmd_dest *dests;
+	enum i3c_error_code err;
+};
+
+struct i3c_ccc_cmd_payload {
+	u16 len;
+	void *data;
+};
+
+struct i3c_ccc_cmd_dest {
+	u8 addr;
+	struct i3c_ccc_cmd_payload payload;
+};
+
+struct i3c_priv_xfer {
+	u8 rnw;
+	u16 len;
+	union {
+		void *in;
+		const void *out;
+	} data;
+	enum i3c_error_code err;
+};
+
+struct i2c_dev_desc {
+	struct i3c_i2c_dev_desc common;
+	struct i2c_client *dev;
+	u16 addr;
+	u8 lvr;
+};
+
+struct i3c_ibi_payload;
+
+struct i3c_ibi_setup {
+	unsigned int max_payload_len;
+	unsigned int num_slots;
+	void (*handler)(struct i3c_device *, const struct i3c_ibi_payload *);
+};
+
+struct i3c_device {
+	struct device dev;
+	struct i3c_dev_desc *desc;
+	struct i3c_bus *bus;
+};
+
+struct i3c_ibi_payload {
+	unsigned int len;
+	const void *data;
+};
+
+struct i3c_ibi_slot {
+	struct work_struct work;
+	struct i3c_dev_desc *dev;
+	unsigned int len;
+	void *data;
+};
+
+struct i3c_device_ibi_info {
+	struct completion all_ibis_handled;
+	atomic_t pending_ibis;
+	unsigned int max_payload_len;
+	unsigned int num_slots;
+	unsigned int enabled;
+	void (*handler)(struct i3c_device *, const struct i3c_ibi_payload *);
+};
+
+struct i3c_dev_boardinfo {
+	struct list_head node;
+	u8 init_dyn_addr;
+	u8 static_addr;
+	u64 pid;
+	struct device_node *of_node;
+};
+
+struct i3c_device_id {
+	__u8 match_flags;
+	__u8 dcr;
+	__u16 manuf_id;
+	__u16 part_id;
+	__u16 extra_info;
+	const void *data;
+};
+
+struct i3c_driver {
+	struct device_driver driver;
+	int (*probe)(struct i3c_device *);
+	void (*remove)(struct i3c_device *);
+	const struct i3c_device_id *id_table;
+};
+
+enum i3c_addr_slot_status {
+	I3C_ADDR_SLOT_FREE = 0,
+	I3C_ADDR_SLOT_RSVD = 1,
+	I3C_ADDR_SLOT_I2C_DEV = 2,
+	I3C_ADDR_SLOT_I3C_DEV = 3,
+	I3C_ADDR_SLOT_STATUS_MASK = 3,
+};
+
+struct i3c_generic_ibi_slot {
+	struct list_head node;
+	struct i3c_ibi_slot base;
+};
+
+struct i2c_dev_boardinfo {
+	struct list_head node;
+	struct i2c_board_info base;
+	u8 lvr;
+};
+
+struct i3c_ccc_getpid {
+	u8 pid[6];
+};
+
+struct i3c_ccc_getbcr {
+	u8 bcr;
+};
+
+struct i3c_ccc_getdcr {
+	u8 dcr;
+};
+
+struct i3c_generic_ibi_pool {
+	spinlock_t lock;
+	unsigned int num_slots;
+	struct i3c_generic_ibi_slot *slots;
+	void *payload_buf;
+	struct list_head free_slots;
+	struct list_head pending;
+};
+
+struct i3c_ccc_events {
+	u8 events;
+};
+
+struct i3c_ccc_dev_desc {
+	u8 dyn_addr;
+	union {
+		u8 dcr;
+		u8 lvr;
+	};
+	u8 bcr;
+	u8 static_addr;
+};
+
+struct i3c_ccc_defslvs {
+	u8 count;
+	struct i3c_ccc_dev_desc master;
+	struct i3c_ccc_dev_desc slaves[0];
+};
+
+struct i3c_ccc_getmxds {
+	u8 maxwr;
+	u8 maxrd;
+	u8 maxrdturn[3];
+};
+
+struct i3c_ccc_mrl {
+	__be16 read_len;
+	u8 ibi_len;
+} __attribute__((packed));
+
+struct i3c_ccc_mwl {
+	__be16 len;
+};
+
+struct i3c_ccc_gethdrcap {
+	u8 modes;
+};
+
+struct i3c_ccc_setda {
+	u8 addr;
+};
+
+enum rc_proto {
+	RC_PROTO_UNKNOWN = 0,
+	RC_PROTO_OTHER = 1,
+	RC_PROTO_RC5 = 2,
+	RC_PROTO_RC5X_20 = 3,
+	RC_PROTO_RC5_SZ = 4,
+	RC_PROTO_JVC = 5,
+	RC_PROTO_SONY12 = 6,
+	RC_PROTO_SONY15 = 7,
+	RC_PROTO_SONY20 = 8,
+	RC_PROTO_NEC = 9,
+	RC_PROTO_NECX = 10,
+	RC_PROTO_NEC32 = 11,
+	RC_PROTO_SANYO = 12,
+	RC_PROTO_MCIR2_KBD = 13,
+	RC_PROTO_MCIR2_MSE = 14,
+	RC_PROTO_RC6_0 = 15,
+	RC_PROTO_RC6_6A_20 = 16,
+	RC_PROTO_RC6_6A_24 = 17,
+	RC_PROTO_RC6_6A_32 = 18,
+	RC_PROTO_RC6_MCE = 19,
+	RC_PROTO_SHARP = 20,
+	RC_PROTO_XMP = 21,
+	RC_PROTO_CEC = 22,
+	RC_PROTO_IMON = 23,
+	RC_PROTO_RCMM12 = 24,
+	RC_PROTO_RCMM24 = 25,
+	RC_PROTO_RCMM32 = 26,
+	RC_PROTO_XBOX_DVD = 27,
+	RC_PROTO_MAX = 27,
+};
+
+enum rc_driver_type {
+	RC_DRIVER_SCANCODE = 0,
+	RC_DRIVER_IR_RAW = 1,
+	RC_DRIVER_IR_RAW_TX = 2,
+};
+
+enum ir_kbd_get_key_fn {
+	IR_KBD_GET_KEY_CUSTOM = 0,
+	IR_KBD_GET_KEY_PIXELVIEW = 1,
+	IR_KBD_GET_KEY_HAUP = 2,
+	IR_KBD_GET_KEY_KNC1 = 3,
+	IR_KBD_GET_KEY_GENIATECH = 4,
+	IR_KBD_GET_KEY_FUSIONHDTV = 5,
+	IR_KBD_GET_KEY_HAUP_XVR = 6,
+	IR_KBD_GET_KEY_AVERMEDIA_CARDBUS = 7,
+};
+
+struct rc_dev;
+
+struct IR_i2c {
+	char *ir_codes;
+	struct i2c_client *c;
+	struct rc_dev *rc;
+	unsigned char old;
+	u32 polling_interval;
+	struct delayed_work work;
+	char phys[32];
+	int (*get_key)(struct IR_i2c *, enum rc_proto *, u32 *, u8 *);
+	struct i2c_client *tx_c;
+	struct mutex lock;
+	unsigned int carrier;
+	unsigned int duty_cycle;
+};
+
+struct rc_map_table;
+
+struct rc_map {
+	struct rc_map_table *scan;
+	unsigned int size;
+	unsigned int len;
+	unsigned int alloc;
+	enum rc_proto rc_proto;
+	const char *name;
+	spinlock_t lock;
+};
+
+struct rc_scancode_filter {
+	u32 data;
+	u32 mask;
+};
+
+struct ir_raw_event_ctrl;
+
+struct rc_dev {
+	struct device dev;
+	bool managed_alloc;
+	const struct attribute_group *sysfs_groups[5];
+	const char *device_name;
+	const char *input_phys;
+	struct input_id input_id;
+	const char *driver_name;
+	const char *map_name;
+	struct rc_map rc_map;
+	struct mutex lock;
+	unsigned int minor;
+	struct ir_raw_event_ctrl *raw;
+	struct input_dev *input_dev;
+	enum rc_driver_type driver_type;
+	bool idle;
+	bool encode_wakeup;
+	u64 allowed_protocols;
+	u64 enabled_protocols;
+	u64 allowed_wakeup_protocols;
+	enum rc_proto wakeup_protocol;
+	struct rc_scancode_filter scancode_filter;
+	struct rc_scancode_filter scancode_wakeup_filter;
+	u32 scancode_mask;
+	u32 users;
+	void *priv;
+	spinlock_t keylock;
+	bool keypressed;
+	unsigned long keyup_jiffies;
+	struct timer_list timer_keyup;
+	struct timer_list timer_repeat;
+	u32 last_keycode;
+	enum rc_proto last_protocol;
+	u64 last_scancode;
+	u8 last_toggle;
+	u32 timeout;
+	u32 min_timeout;
+	u32 max_timeout;
+	u32 rx_resolution;
+	u32 tx_resolution;
+	struct device lirc_dev;
+	struct cdev lirc_cdev;
+	ktime_t gap_start;
+	spinlock_t lirc_fh_lock;
+	struct list_head lirc_fh;
+	bool registered;
+	int (*change_protocol)(struct rc_dev *, u64 *);
+	int (*open)(struct rc_dev *);
+	void (*close)(struct rc_dev *);
+	int (*s_tx_mask)(struct rc_dev *, u32);
+	int (*s_tx_carrier)(struct rc_dev *, u32);
+	int (*s_tx_duty_cycle)(struct rc_dev *, u32);
+	int (*s_rx_carrier_range)(struct rc_dev *, u32, u32);
+	int (*tx_ir)(struct rc_dev *, unsigned int *, unsigned int);
+	void (*s_idle)(struct rc_dev *, bool);
+	int (*s_wideband_receiver)(struct rc_dev *, int);
+	int (*s_carrier_report)(struct rc_dev *, int);
+	int (*s_filter)(struct rc_dev *, struct rc_scancode_filter *);
+	int (*s_wakeup_filter)(struct rc_dev *, struct rc_scancode_filter *);
+	int (*s_timeout)(struct rc_dev *, unsigned int);
+};
+
+struct rc_map_table {
+	u64 scancode;
+	u32 keycode;
+};
+
+struct code_block {
+	u8 length;
+	u16 pulse[7];
+	u8 carrier_pulse;
+	u8 carrier_space;
+	u16 space[8];
+	u8 codes[61];
+	u8 csum[2];
+} __attribute__((packed));
+
+struct IR_i2c_init_data {
+	char *ir_codes;
+	const char *name;
+	u64 type;
+	u32 polling_interval;
+	int (*get_key)(struct IR_i2c *, enum rc_proto *, u32 *, u8 *);
+	enum ir_kbd_get_key_fn internal_get_key_func;
+	struct rc_dev *rc_dev;
+};
+
+struct media_ioctl_info {
+	unsigned int cmd;
+	unsigned short flags;
+	long (*fn)(struct media_device *, void *);
+	long (*arg_from_user)(void *, void __attribute__((btf_type_tag("user"))) *, unsigned int);
+	long (*arg_to_user)(void __attribute__((btf_type_tag("user"))) *, void *, unsigned int);
+};
+
+enum media_gobj_type {
+	MEDIA_GRAPH_ENTITY = 0,
+	MEDIA_GRAPH_PAD = 1,
+	MEDIA_GRAPH_LINK = 2,
+	MEDIA_GRAPH_INTF_DEVNODE = 3,
+};
+
+struct media_entity_notify {
+	struct list_head list;
+	void *notify_data;
+	void (*notify)(struct media_entity *, void *);
+};
+
+struct media_links_enum32 {
+	__u32 entity;
+	compat_uptr_t pads;
+	compat_uptr_t links;
+	__u32 reserved[4];
+};
+
+struct media_pad_desc;
+
+struct media_link_desc;
+
+struct media_links_enum {
+	__u32 entity;
+	struct media_pad_desc __attribute__((btf_type_tag("user"))) *pads;
+	struct media_link_desc __attribute__((btf_type_tag("user"))) *links;
+	__u32 reserved[4];
+};
+
+struct media_pad_desc {
+	__u32 entity;
+	__u16 index;
+	__u32 flags;
+	__u32 reserved[2];
+};
+
+struct media_link_desc {
+	struct media_pad_desc source;
+	struct media_pad_desc sink;
+	__u32 flags;
+	__u32 reserved[2];
+};
+
+struct media_device_info {
+	char driver[16];
+	char model[32];
+	char serial[40];
+	char bus_info[32];
+	__u32 media_version;
+	__u32 hw_revision;
+	__u32 driver_version;
+	__u32 reserved[31];
+};
+
+struct media_entity_desc {
+	__u32 id;
+	char name[32];
+	__u32 type;
+	__u32 revision;
+	__u32 flags;
+	__u32 group_id;
+	__u16 pads;
+	__u16 links;
+	__u32 reserved[4];
+	union {
+		struct {
+			__u32 major;
+			__u32 minor;
+		} dev;
+		__u8 raw[184];
+	};
+};
+
+struct media_v2_entity {
+	__u32 id;
+	char name[64];
+	__u32 function;
+	__u32 flags;
+	__u32 reserved[5];
+};
+
+struct media_v2_intf_devnode {
+	__u32 major;
+	__u32 minor;
+};
+
+struct media_v2_interface {
+	__u32 id;
+	__u32 intf_type;
+	__u32 flags;
+	__u32 reserved[9];
+	union {
+		struct media_v2_intf_devnode devnode;
+		__u32 raw[16];
+	};
+};
+
+struct media_v2_pad {
+	__u32 id;
+	__u32 entity_id;
+	__u32 flags;
+	__u32 index;
+	__u32 reserved[4];
+};
+
+struct media_v2_link {
+	__u32 id;
+	__u32 source_id;
+	__u32 sink_id;
+	__u32 flags;
+	__u32 reserved[6];
+};
+
+struct media_v2_topology {
+	__u64 topology_version;
+	__u32 num_entities;
+	__u32 reserved1;
+	__u64 ptr_entities;
+	__u32 num_interfaces;
+	__u32 reserved2;
+	__u64 ptr_interfaces;
+	__u32 num_pads;
+	__u32 reserved3;
+	__u64 ptr_pads;
+	__u32 num_links;
+	__u32 reserved4;
+	__u64 ptr_links;
+};
+
+struct media_pipeline_pad {
+	struct list_head list;
+	struct media_pipeline *pipe;
+	struct media_pad *pad;
+};
+
+struct media_pipeline_walk_entry;
+
+struct media_pipeline_walk {
+	struct media_device *mdev;
+	struct {
+		unsigned int size;
+		int top;
+		struct media_pipeline_walk_entry *entries;
+	} stack;
+};
+
+struct media_pipeline_walk_entry {
+	struct media_pad *pad;
+	struct list_head *links;
+};
+
+struct media_pipeline_pad_iter {
+	struct list_head *cursor;
+};
+
+struct media_pipeline_entity_iter {
+	struct media_entity_enum ent_enum;
+	struct list_head *cursor;
+};
+
+struct media_device_instance {
+	struct media_device mdev;
+	struct module *owner;
+	struct list_head list;
+	struct kref refcount;
+};
+
+struct v4l2_async_subdev_endpoint {
+	struct list_head async_subdev_endpoint_entry;
+	struct fwnode_handle *endpoint;
+};
+
+enum v4l2_fwnode_bus_type {
+	V4L2_FWNODE_BUS_TYPE_GUESS = 0,
+	V4L2_FWNODE_BUS_TYPE_CSI2_CPHY = 1,
+	V4L2_FWNODE_BUS_TYPE_CSI1 = 2,
+	V4L2_FWNODE_BUS_TYPE_CCP2 = 3,
+	V4L2_FWNODE_BUS_TYPE_CSI2_DPHY = 4,
+	V4L2_FWNODE_BUS_TYPE_PARALLEL = 5,
+	V4L2_FWNODE_BUS_TYPE_BT656 = 6,
+	V4L2_FWNODE_BUS_TYPE_DPI = 7,
+	NR_OF_V4L2_FWNODE_BUS_TYPE = 8,
+};
+
+struct v4l2_fwnode_bus_conv {
+	enum v4l2_fwnode_bus_type fwnode_bus_type;
+	enum v4l2_mbus_type mbus_type;
+	const char *name;
+};
+
+enum v4l2_connector_type {
+	V4L2_CONN_UNKNOWN = 0,
+	V4L2_CONN_COMPOSITE = 1,
+	V4L2_CONN_SVIDEO = 2,
+};
+
+struct v4l2_fwnode_connector_conv {
+	enum v4l2_connector_type type;
+	const char *compatible;
+};
+
+struct v4l2_fwnode_int_props {
+	const char *name;
+	const char * const *props;
+	unsigned int nprops;
+};
+
+enum v4l2_fwnode_orientation {
+	V4L2_FWNODE_ORIENTATION_FRONT = 0,
+	V4L2_FWNODE_ORIENTATION_BACK = 1,
+	V4L2_FWNODE_ORIENTATION_EXTERNAL = 2,
+};
+
+struct v4l2_fwnode_link {
+	struct fwnode_handle *local_node;
+	unsigned int local_port;
+	unsigned int local_id;
+	struct fwnode_handle *remote_node;
+	unsigned int remote_port;
+	unsigned int remote_id;
+};
+
+struct v4l2_connector_link {
+	struct list_head head;
+	struct v4l2_fwnode_link fwnode_link;
+};
+
+struct v4l2_fwnode_endpoint {
+	struct fwnode_endpoint base;
+	enum v4l2_mbus_type bus_type;
+	struct {
+		struct v4l2_mbus_config_parallel parallel;
+		struct v4l2_mbus_config_mipi_csi1 mipi_csi1;
+		struct v4l2_mbus_config_mipi_csi2 mipi_csi2;
+	} bus;
+	u64 *link_frequencies;
+	unsigned int nr_of_link_frequencies;
+};
+
+struct v4l2_fwnode_connector_analog {
+	v4l2_std_id sdtv_stds;
+};
+
+struct v4l2_fwnode_connector {
+	const char *name;
+	const char *label;
+	enum v4l2_connector_type type;
+	struct list_head links;
+	unsigned int nr_of_links;
+	union {
+		struct v4l2_fwnode_connector_analog analog;
+	} connector;
+};
+
+struct v4l2_fwnode_device_properties {
+	enum v4l2_fwnode_orientation orientation;
+	unsigned int rotation;
+};
+
+enum v4l2_video_device_flags {
+	V4L2_FL_REGISTERED = 0,
+	V4L2_FL_USES_V4L2_FH = 1,
+	V4L2_FL_QUIRK_INVERTED_CROP = 2,
+	V4L2_FL_SUBDEV_RO_DEVNODE = 3,
+};
+
+enum v4l2_m2m_entity_type {
+	MEM2MEM_ENT_TYPE_SOURCE = 0,
+	MEM2MEM_ENT_TYPE_SINK = 1,
+	MEM2MEM_ENT_TYPE_PROC = 2,
+};
+
+enum v4l2_memory {
+	V4L2_MEMORY_MMAP = 1,
+	V4L2_MEMORY_USERPTR = 2,
+	V4L2_MEMORY_OVERLAY = 3,
+	V4L2_MEMORY_DMABUF = 4,
+};
+
+struct v4l2_m2m_buffer {
+	struct vb2_v4l2_buffer vb;
+	struct list_head list;
+};
+
+struct v4l2_m2m_queue_ctx {
+	struct vb2_queue q;
+	struct list_head rdy_queue;
+	spinlock_t rdy_spinlock;
+	u8 num_rdy;
+	bool buffered;
+};
+
+struct v4l2_m2m_dev;
+
+struct v4l2_m2m_ctx {
+	struct mutex *q_lock;
+	bool new_frame;
+	bool is_draining;
+	struct vb2_v4l2_buffer *last_src_buf;
+	bool next_buf_last;
+	bool has_stopped;
+	struct v4l2_m2m_dev *m2m_dev;
+	struct v4l2_m2m_queue_ctx cap_q_ctx;
+	struct v4l2_m2m_queue_ctx out_q_ctx;
+	struct list_head queue;
+	unsigned long job_flags;
+	wait_queue_head_t finished;
+	void *priv;
+};
+
+struct v4l2_m2m_ops;
+
+struct v4l2_m2m_dev {
+	struct v4l2_m2m_ctx *curr_ctx;
+	struct media_entity *source;
+	struct media_pad source_pad;
+	struct media_entity sink;
+	struct media_pad sink_pad;
+	struct media_entity proc;
+	struct media_pad proc_pads[2];
+	struct media_intf_devnode *intf_devnode;
+	struct list_head job_queue;
+	spinlock_t job_spinlock;
+	struct work_struct job_work;
+	unsigned long job_queue_flags;
+	const struct v4l2_m2m_ops *m2m_ops;
+};
+
+struct v4l2_m2m_ops {
+	void (*device_run)(void *);
+	int (*job_ready)(void *);
+	void (*job_abort)(void *);
+};
+
+enum v4l2_ycbcr_encoding {
+	V4L2_YCBCR_ENC_DEFAULT = 0,
+	V4L2_YCBCR_ENC_601 = 1,
+	V4L2_YCBCR_ENC_709 = 2,
+	V4L2_YCBCR_ENC_XV601 = 3,
+	V4L2_YCBCR_ENC_XV709 = 4,
+	V4L2_YCBCR_ENC_BT2020 = 6,
+	V4L2_YCBCR_ENC_BT2020_CONST_LUM = 7,
+	V4L2_YCBCR_ENC_SMPTE240M = 8,
+	V4L2_YCBCR_ENC_LAST = 9,
+};
+
+enum v4l2_quantization {
+	V4L2_QUANTIZATION_DEFAULT = 0,
+	V4L2_QUANTIZATION_FULL_RANGE = 1,
+	V4L2_QUANTIZATION_LIM_RANGE = 2,
+};
+
+enum v4l2_xfer_func {
+	V4L2_XFER_FUNC_DEFAULT = 0,
+	V4L2_XFER_FUNC_709 = 1,
+	V4L2_XFER_FUNC_SRGB = 2,
+	V4L2_XFER_FUNC_OPRGB = 3,
+	V4L2_XFER_FUNC_SMPTE240M = 4,
+	V4L2_XFER_FUNC_NONE = 5,
+	V4L2_XFER_FUNC_DCI_P3 = 6,
+	V4L2_XFER_FUNC_SMPTE2084 = 7,
+	V4L2_XFER_FUNC_LAST = 8,
+};
+
+struct v4l2_hdmi_colorimetry {
+	enum v4l2_colorspace colorspace;
+	enum v4l2_ycbcr_encoding ycbcr_enc;
+	enum v4l2_quantization quantization;
+	enum v4l2_xfer_func xfer_func;
+};
+
+typedef bool v4l2_check_dv_timings_fnc(const struct v4l2_dv_timings *, void *);
+
+struct std_descr {
+	v4l2_std_id std;
+	const char *descr;
+};
+
+struct v4l2_ioctl_info {
+	unsigned int ioctl;
+	u32 flags;
+	const char * const name;
+	int (*func)(const struct v4l2_ioctl_ops *, struct file *, void *, void *);
+	void (*debug)(const void *, bool);
+};
+
+struct v4l2_ctrl;
+
+typedef void (*v4l2_ctrl_notify_fnc)(struct v4l2_ctrl *, void *);
+
+struct v4l2_ctrl_ref;
+
+struct v4l2_ctrl_handler {
+	struct mutex _lock;
+	struct mutex *lock;
+	struct list_head ctrls;
+	struct list_head ctrl_refs;
+	struct v4l2_ctrl_ref *cached;
+	struct v4l2_ctrl_ref **buckets;
+	v4l2_ctrl_notify_fnc notify;
+	void *notify_priv;
+	u16 nr_of_buckets;
+	int error;
+	bool request_is_queued;
+	struct list_head requests;
+	struct list_head requests_queued;
+	struct media_request_object req_obj;
+	u64 android_kabi_reserved1;
+};
+
+struct v4l2_ctrl_hdr10_cll_info;
+
+struct v4l2_ctrl_hdr10_mastering_display;
+
+union v4l2_ctrl_ptr {
+	s32 *p_s32;
+	s64 *p_s64;
+	u8 *p_u8;
+	u16 *p_u16;
+	u32 *p_u32;
+	char *p_char;
+	struct v4l2_ctrl_mpeg2_sequence *p_mpeg2_sequence;
+	struct v4l2_ctrl_mpeg2_picture *p_mpeg2_picture;
+	struct v4l2_ctrl_mpeg2_quantisation *p_mpeg2_quantisation;
+	struct v4l2_ctrl_fwht_params *p_fwht_params;
+	struct v4l2_ctrl_h264_sps *p_h264_sps;
+	struct v4l2_ctrl_h264_pps *p_h264_pps;
+	struct v4l2_ctrl_h264_scaling_matrix *p_h264_scaling_matrix;
+	struct v4l2_ctrl_h264_slice_params *p_h264_slice_params;
+	struct v4l2_ctrl_h264_decode_params *p_h264_decode_params;
+	struct v4l2_ctrl_h264_pred_weights *p_h264_pred_weights;
+	struct v4l2_ctrl_vp8_frame *p_vp8_frame;
+	struct v4l2_ctrl_hevc_sps *p_hevc_sps;
+	struct v4l2_ctrl_hevc_pps *p_hevc_pps;
+	struct v4l2_ctrl_hevc_slice_params *p_hevc_slice_params;
+	struct v4l2_ctrl_vp9_compressed_hdr *p_vp9_compressed_hdr_probs;
+	struct v4l2_ctrl_vp9_frame *p_vp9_frame;
+	struct v4l2_ctrl_hdr10_cll_info *p_hdr10_cll;
+	struct v4l2_ctrl_hdr10_mastering_display *p_hdr10_mastering;
+	struct v4l2_area *p_area;
+	struct v4l2_ctrl_av1_sequence *p_av1_sequence;
+	struct v4l2_ctrl_av1_tile_group_entry *p_av1_tile_group_entry;
+	struct v4l2_ctrl_av1_frame *p_av1_frame;
+	struct v4l2_ctrl_av1_film_grain *p_av1_film_grain;
+	void *p;
+	const void *p_const;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct v4l2_ctrl_helper;
+
+struct v4l2_ctrl_ref {
+	struct list_head node;
+	struct v4l2_ctrl_ref *next;
+	struct v4l2_ctrl *ctrl;
+	struct v4l2_ctrl_helper *helper;
+	bool from_other_dev;
+	bool req_done;
+	bool p_req_valid;
+	bool p_req_array_enomem;
+	u32 p_req_array_alloc_elems;
+	u32 p_req_elems;
+	union v4l2_ctrl_ptr p_req;
+	u64 android_kabi_reserved1;
+};
+
+enum v4l2_ctrl_type {
+	V4L2_CTRL_TYPE_INTEGER = 1,
+	V4L2_CTRL_TYPE_BOOLEAN = 2,
+	V4L2_CTRL_TYPE_MENU = 3,
+	V4L2_CTRL_TYPE_BUTTON = 4,
+	V4L2_CTRL_TYPE_INTEGER64 = 5,
+	V4L2_CTRL_TYPE_CTRL_CLASS = 6,
+	V4L2_CTRL_TYPE_STRING = 7,
+	V4L2_CTRL_TYPE_BITMASK = 8,
+	V4L2_CTRL_TYPE_INTEGER_MENU = 9,
+	V4L2_CTRL_COMPOUND_TYPES = 256,
+	V4L2_CTRL_TYPE_U8 = 256,
+	V4L2_CTRL_TYPE_U16 = 257,
+	V4L2_CTRL_TYPE_U32 = 258,
+	V4L2_CTRL_TYPE_AREA = 262,
+	V4L2_CTRL_TYPE_HDR10_CLL_INFO = 272,
+	V4L2_CTRL_TYPE_HDR10_MASTERING_DISPLAY = 273,
+	V4L2_CTRL_TYPE_H264_SPS = 512,
+	V4L2_CTRL_TYPE_H264_PPS = 513,
+	V4L2_CTRL_TYPE_H264_SCALING_MATRIX = 514,
+	V4L2_CTRL_TYPE_H264_SLICE_PARAMS = 515,
+	V4L2_CTRL_TYPE_H264_DECODE_PARAMS = 516,
+	V4L2_CTRL_TYPE_H264_PRED_WEIGHTS = 517,
+	V4L2_CTRL_TYPE_FWHT_PARAMS = 544,
+	V4L2_CTRL_TYPE_VP8_FRAME = 576,
+	V4L2_CTRL_TYPE_MPEG2_QUANTISATION = 592,
+	V4L2_CTRL_TYPE_MPEG2_SEQUENCE = 593,
+	V4L2_CTRL_TYPE_MPEG2_PICTURE = 594,
+	V4L2_CTRL_TYPE_VP9_COMPRESSED_HDR = 608,
+	V4L2_CTRL_TYPE_VP9_FRAME = 609,
+	V4L2_CTRL_TYPE_HEVC_SPS = 624,
+	V4L2_CTRL_TYPE_HEVC_PPS = 625,
+	V4L2_CTRL_TYPE_HEVC_SLICE_PARAMS = 626,
+	V4L2_CTRL_TYPE_HEVC_SCALING_MATRIX = 627,
+	V4L2_CTRL_TYPE_HEVC_DECODE_PARAMS = 628,
+	V4L2_CTRL_TYPE_AV1_SEQUENCE = 640,
+	V4L2_CTRL_TYPE_AV1_TILE_GROUP_ENTRY = 641,
+	V4L2_CTRL_TYPE_AV1_FRAME = 642,
+	V4L2_CTRL_TYPE_AV1_FILM_GRAIN = 643,
+};
+
+struct v4l2_ctrl_ops;
+
+struct v4l2_ctrl_type_ops;
+
+struct v4l2_ctrl {
+	struct list_head node;
+	struct list_head ev_subs;
+	struct v4l2_ctrl_handler *handler;
+	struct v4l2_ctrl **cluster;
+	unsigned int ncontrols;
+	unsigned int done: 1;
+	unsigned int is_new: 1;
+	unsigned int has_changed: 1;
+	unsigned int is_private: 1;
+	unsigned int is_auto: 1;
+	unsigned int is_int: 1;
+	unsigned int is_string: 1;
+	unsigned int is_ptr: 1;
+	unsigned int is_array: 1;
+	unsigned int is_dyn_array: 1;
+	unsigned int has_volatiles: 1;
+	unsigned int call_notify: 1;
+	unsigned int manual_mode_value: 8;
+	const struct v4l2_ctrl_ops *ops;
+	const struct v4l2_ctrl_type_ops *type_ops;
+	u32 id;
+	const char *name;
+	enum v4l2_ctrl_type type;
+	s64 minimum;
+	s64 maximum;
+	s64 default_value;
+	u32 elems;
+	u32 elem_size;
+	u32 new_elems;
+	u32 dims[4];
+	u32 nr_of_dims;
+	union {
+		u64 step;
+		u64 menu_skip_mask;
+	};
+	union {
+		const char * const *qmenu;
+		const s64 *qmenu_int;
+	};
+	unsigned long flags;
+	void *priv;
+	void *p_array;
+	u32 p_array_alloc_elems;
+	s32 val;
+	struct {
+		s32 val;
+	} cur;
+	union v4l2_ctrl_ptr p_def;
+	union v4l2_ctrl_ptr p_new;
+	union v4l2_ctrl_ptr p_cur;
+	u64 android_kabi_reserved1;
+};
+
+struct v4l2_ctrl_ops {
+	int (*g_volatile_ctrl)(struct v4l2_ctrl *);
+	int (*try_ctrl)(struct v4l2_ctrl *);
+	int (*s_ctrl)(struct v4l2_ctrl *);
+	u64 android_kabi_reserved1;
+};
+
+struct v4l2_ctrl_type_ops {
+	bool (*equal)(const struct v4l2_ctrl *, union v4l2_ctrl_ptr, union v4l2_ctrl_ptr);
+	void (*init)(const struct v4l2_ctrl *, u32, union v4l2_ctrl_ptr);
+	void (*log)(const struct v4l2_ctrl *);
+	int (*validate)(const struct v4l2_ctrl *, union v4l2_ctrl_ptr);
+	u64 android_kabi_reserved1;
+};
+
+struct v4l2_ctrl_hdr10_cll_info {
+	__u16 max_content_light_level;
+	__u16 max_pic_average_light_level;
+};
+
+struct v4l2_ctrl_hdr10_mastering_display {
+	__u16 display_primaries_x[3];
+	__u16 display_primaries_y[3];
+	__u16 white_point_x;
+	__u16 white_point_y;
+	__u32 max_display_mastering_luminance;
+	__u32 min_display_mastering_luminance;
+};
+
+enum v4l2_hsv_encoding {
+	V4L2_HSV_ENC_180 = 128,
+	V4L2_HSV_ENC_256 = 129,
+};
+
+enum v4l2_tuner_type {
+	V4L2_TUNER_RADIO = 1,
+	V4L2_TUNER_ANALOG_TV = 2,
+	V4L2_TUNER_DIGITAL_TV = 3,
+	V4L2_TUNER_SDR = 4,
+	V4L2_TUNER_RF = 5,
+};
+
+struct v4l2_subdev_routing {
+	__u32 which;
+	__u32 num_routes;
+	__u64 routes;
+	__u32 reserved[6];
+};
+
+struct v4l2_standard {
+	__u32 index;
+	v4l2_std_id id;
+	__u8 name[24];
+	struct v4l2_fract frameperiod;
+	__u32 framelines;
+	__u32 reserved[4];
+};
+
+typedef long (*v4l2_kioctl)(struct file *, unsigned int, void *);
+
+struct v4l2_cropcap {
+	__u32 type;
+	struct v4l2_rect bounds;
+	struct v4l2_rect defrect;
+	struct v4l2_fract pixelaspect;
+};
+
+struct v4l2_crop {
+	__u32 type;
+	struct v4l2_rect c;
+};
+
+struct v4l2_dbg_match {
+	__u32 type;
+	union {
+		__u32 addr;
+		char name[32];
+	};
+};
+
+struct v4l2_dbg_register {
+	struct v4l2_dbg_match match;
+	__u32 size;
+	__u64 reg;
+	__u64 val;
+};
+
+struct v4l2_dbg_chip_info {
+	struct v4l2_dbg_match match;
+	char name[32];
+	__u32 flags;
+	__u32 reserved[32];
+};
+
+typedef bool (*v4l2_ctrl_filter)(const struct v4l2_ctrl *);
+
+enum v4l2_subdev_routing_restriction {
+	V4L2_SUBDEV_ROUTING_NO_1_TO_N = 1,
+	V4L2_SUBDEV_ROUTING_NO_N_TO_1 = 2,
+	V4L2_SUBDEV_ROUTING_NO_SINK_STREAM_MIX = 4,
+	V4L2_SUBDEV_ROUTING_NO_SOURCE_STREAM_MIX = 8,
+	V4L2_SUBDEV_ROUTING_NO_SINK_MULTIPLEXING = 16,
+	V4L2_SUBDEV_ROUTING_NO_SOURCE_MULTIPLEXING = 32,
+	V4L2_SUBDEV_ROUTING_ONLY_1_TO_1 = 3,
+	V4L2_SUBDEV_ROUTING_NO_STREAM_MIX = 12,
+	V4L2_SUBDEV_ROUTING_NO_MULTIPLEXING = 48,
+};
+
+struct v4l2_subdev_crop {
+	__u32 which;
+	__u32 pad;
+	struct v4l2_rect rect;
+	__u32 stream;
+	__u32 reserved[7];
+};
+
+struct v4l2_subdev_client_capability {
+	__u64 capabilities;
+};
+
+struct v4l2_subdev_capability {
+	__u32 version;
+	__u32 capabilities;
+	__u32 reserved[14];
+};
+
+struct v4l2_format_info {
+	u32 format;
+	u8 pixel_enc;
+	u8 mem_planes;
+	u8 comp_planes;
+	u8 bpp[4];
+	u8 bpp_div[4];
+	u8 hdiv;
+	u8 vdiv;
+	u8 block_w[4];
+	u8 block_h[4];
+};
+
+struct v4l2_ctrl_config {
+	const struct v4l2_ctrl_ops *ops;
+	const struct v4l2_ctrl_type_ops *type_ops;
+	u32 id;
+	const char *name;
+	enum v4l2_ctrl_type type;
+	s64 min;
+	s64 max;
+	u64 step;
+	s64 def;
+	union v4l2_ctrl_ptr p_def;
+	u32 dims[4];
+	u32 elem_size;
+	u32 flags;
+	u64 menu_skip_mask;
+	const char * const *qmenu;
+	const s64 *qmenu_int;
+	unsigned int is_private: 1;
+	u64 android_kabi_reserved1;
+};
+
+struct v4l2_ctrl_helper {
+	struct v4l2_ctrl_ref *mref;
+	struct v4l2_ctrl_ref *ref;
+	u32 next;
+};
+
+struct v4l2_ext_controls32 {
+	__u32 which;
+	__u32 count;
+	__u32 error_idx;
+	__s32 request_fd;
+	__u32 reserved[1];
+	compat_caddr_t controls;
+};
+
+struct v4l2_input32 {
+	__u32 index;
+	__u8 name[32];
+	__u32 type;
+	__u32 audioset;
+	__u32 tuner;
+	compat_u64 std;
+	__u32 status;
+	__u32 capabilities;
+	__u32 reserved[3];
+};
+
+struct v4l2_standard32 {
+	__u32 index;
+	compat_u64 id;
+	__u8 name[24];
+	struct v4l2_fract frameperiod;
+	__u32 framelines;
+	__u32 reserved[4];
+};
+
+struct v4l2_buffer32_time32 {
+	__u32 index;
+	__u32 type;
+	__u32 bytesused;
+	__u32 flags;
+	__u32 field;
+	struct old_timeval32 timestamp;
+	struct v4l2_timecode timecode;
+	__u32 sequence;
+	__u32 memory;
+	union {
+		__u32 offset;
+		compat_long_t userptr;
+		compat_caddr_t planes;
+		__s32 fd;
+	} m;
+	__u32 length;
+	__u32 reserved2;
+	__s32 request_fd;
+};
+
+struct v4l2_framebuffer32 {
+	__u32 capability;
+	__u32 flags;
+	compat_caddr_t base;
+	struct {
+		__u32 width;
+		__u32 height;
+		__u32 pixelformat;
+		__u32 field;
+		__u32 bytesperline;
+		__u32 sizeimage;
+		__u32 colorspace;
+		__u32 priv;
+	} fmt;
+};
+
+struct v4l2_edid32 {
+	__u32 pad;
+	__u32 start_block;
+	__u32 blocks;
+	__u32 reserved[5];
+	compat_caddr_t edid;
+};
+
+struct v4l2_buffer32 {
+	__u32 index;
+	__u32 type;
+	__u32 bytesused;
+	__u32 flags;
+	__u32 field;
+	struct {
+		compat_s64 tv_sec;
+		compat_s64 tv_usec;
+	} timestamp;
+	struct v4l2_timecode timecode;
+	__u32 sequence;
+	__u32 memory;
+	union {
+		__u32 offset;
+		compat_long_t userptr;
+		compat_caddr_t planes;
+		__s32 fd;
+	} m;
+	__u32 length;
+	__u32 reserved2;
+	__s32 request_fd;
+};
+
+struct v4l2_window32 {
+	struct v4l2_rect w;
+	__u32 field;
+	__u32 chromakey;
+	compat_caddr_t clips;
+	__u32 clipcount;
+	compat_caddr_t bitmap;
+	__u8 global_alpha;
+};
+
+struct v4l2_format32 {
+	__u32 type;
+	union {
+		struct v4l2_pix_format pix;
+		struct v4l2_pix_format_mplane pix_mp;
+		struct v4l2_window32 win;
+		struct v4l2_vbi_format vbi;
+		struct v4l2_sliced_vbi_format sliced;
+		struct v4l2_sdr_format sdr;
+		struct v4l2_meta_format meta;
+		__u8 raw_data[200];
+	} fmt;
+};
+
+struct v4l2_create_buffers32 {
+	__u32 index;
+	__u32 count;
+	__u32 memory;
+	struct v4l2_format32 format;
+	__u32 capabilities;
+	__u32 flags;
+	__u32 reserved[6];
+};
+
+struct v4l2_event32_time32 {
+	__u32 type;
+	union {
+		compat_s64 value64;
+		__u8 data[64];
+	} u;
+	__u32 pending;
+	__u32 sequence;
+	struct old_timespec32 timestamp;
+	__u32 id;
+	__u32 reserved[8];
+};
+
+struct v4l2_plane32 {
+	__u32 bytesused;
+	__u32 length;
+	union {
+		__u32 mem_offset;
+		compat_long_t userptr;
+		__s32 fd;
+	} m;
+	__u32 data_offset;
+	__u32 reserved[11];
+};
+
+struct v4l2_ext_control32 {
+	__u32 id;
+	__u32 size;
+	__u32 reserved2[1];
+	union {
+		__s32 value;
+		__s64 value64;
+		compat_caddr_t string;
+	};
+} __attribute__((packed));
+
+typedef void (*btf_trace_v4l2_dqbuf)(void *, int, struct v4l2_buffer *);
+
+typedef void (*btf_trace_v4l2_qbuf)(void *, int, struct v4l2_buffer *);
+
+typedef void (*btf_trace_vb2_v4l2_buf_done)(void *, struct vb2_queue *, struct vb2_buffer *);
+
+typedef void (*btf_trace_vb2_v4l2_buf_queue)(void *, struct vb2_queue *, struct vb2_buffer *);
+
+typedef void (*btf_trace_vb2_v4l2_dqbuf)(void *, struct vb2_queue *, struct vb2_buffer *);
+
+typedef void (*btf_trace_vb2_v4l2_qbuf)(void *, struct vb2_queue *, struct vb2_buffer *);
+
+struct trace_event_raw_v4l2_event_class {
+	struct trace_entry ent;
+	int minor;
+	u32 index;
+	u32 type;
+	u32 bytesused;
+	u32 flags;
+	u32 field;
+	s64 timestamp;
+	u32 timecode_type;
+	u32 timecode_flags;
+	u8 timecode_frames;
+	u8 timecode_seconds;
+	u8 timecode_minutes;
+	u8 timecode_hours;
+	u8 timecode_userbits0;
+	u8 timecode_userbits1;
+	u8 timecode_userbits2;
+	u8 timecode_userbits3;
+	u32 sequence;
+	char __data[0];
+};
+
+struct trace_event_raw_vb2_v4l2_event_class {
+	struct trace_entry ent;
+	int minor;
+	u32 flags;
+	u32 field;
+	u64 timestamp;
+	u32 timecode_type;
+	u32 timecode_flags;
+	u8 timecode_frames;
+	u8 timecode_seconds;
+	u8 timecode_minutes;
+	u8 timecode_hours;
+	u8 timecode_userbits0;
+	u8 timecode_userbits1;
+	u8 timecode_userbits2;
+	u8 timecode_userbits3;
+	u32 sequence;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_v4l2_event_class {};
+
+struct trace_event_data_offsets_vb2_v4l2_event_class {};
+
+enum v4l2_i2c_tuner_type {
+	ADDRS_RADIO = 0,
+	ADDRS_DEMOD = 1,
+	ADDRS_TV = 2,
+	ADDRS_TV_WITH_DEMOD = 3,
+};
+
+enum rc_filter_type {
+	RC_FILTER_NORMAL = 0,
+	RC_FILTER_WAKEUP = 1,
+	RC_FILTER_MAX = 2,
+};
+
+struct rc_filter_attribute {
+	struct device_attribute attr;
+	enum rc_filter_type type;
+	bool mask;
+};
+
+struct rc_map_list {
+	struct list_head list;
+	struct rc_map map;
+};
+
+struct ir_raw_event {
+	union {
+		u32 duration;
+		u32 carrier;
+	};
+	u8 duty_cycle;
+	unsigned int pulse: 1;
+	unsigned int overflow: 1;
+	unsigned int timeout: 1;
+	unsigned int carrier_report: 1;
+};
+
+struct ir_raw_event_ctrl {
+	struct list_head list;
+	struct task_struct *thread;
+	struct {
+		union {
+			struct __kfifo kfifo;
+			struct ir_raw_event *type;
+			const struct ir_raw_event *const_type;
+			char (*rectype)[0];
+			struct ir_raw_event *ptr;
+			const struct ir_raw_event *ptr_const;
+		};
+		struct ir_raw_event buf[512];
+	} kfifo;
+	ktime_t last_event;
+	struct rc_dev *dev;
+	spinlock_t edge_spinlock;
+	struct timer_list edge_handle;
+	struct ir_raw_event prev_ev;
+	struct ir_raw_event this_ev;
+	u32 bpf_sample;
+	struct bpf_prog_array __attribute__((btf_type_tag("rcu"))) *progs;
+};
+
+struct lirc_scancode {
+	__u64 timestamp;
+	__u16 flags;
+	__u16 rc_proto;
+	__u32 keycode;
+	__u64 scancode;
+};
+
+struct ir_raw_handler {
+	struct list_head list;
+	u64 protocols;
+	int (*decode)(struct rc_dev *, struct ir_raw_event);
+	int (*encode)(enum rc_proto, u32, struct ir_raw_event *, unsigned int);
+	u32 carrier;
+	u32 min_timeout;
+	int (*raw_register)(struct rc_dev *);
+	int (*raw_unregister)(struct rc_dev *);
+};
+
+struct ir_raw_timings_manchester {
+	unsigned int leader_pulse;
+	unsigned int leader_space;
+	unsigned int clock;
+	unsigned int invert: 1;
+	unsigned int trailer_space;
+};
+
+struct ir_raw_timings_pd {
+	unsigned int header_pulse;
+	unsigned int header_space;
+	unsigned int bit_pulse;
+	unsigned int bit_space[2];
+	unsigned int trailer_pulse;
+	unsigned int trailer_space;
+	unsigned int msb_first: 1;
+};
+
+struct ir_raw_timings_pl {
+	unsigned int header_pulse;
+	unsigned int bit_space;
+	unsigned int bit_pulse[2];
+	unsigned int trailer_space;
+	unsigned int msb_first: 1;
+};
+
+struct lirc_fh {
+	struct list_head list;
+	struct rc_dev *rc;
+	int carrier_low;
+	struct {
+		union {
+			struct __kfifo kfifo;
+			unsigned int *type;
+			const unsigned int *const_type;
+			char (*rectype)[0];
+			unsigned int *ptr;
+			const unsigned int *ptr_const;
+		};
+		unsigned int buf[0];
+	} rawir;
+	struct {
+		union {
+			struct __kfifo kfifo;
+			struct lirc_scancode *type;
+			const struct lirc_scancode *const_type;
+			char (*rectype)[0];
+			struct lirc_scancode *ptr;
+			const struct lirc_scancode *ptr_const;
+		};
+		struct lirc_scancode buf[0];
+	} scancodes;
+	wait_queue_head_t wait_poll;
+	u8 send_mode;
+	u8 rec_mode;
+};
+
+typedef u64 (*btf_bpf_rc_repeat)(u32 *);
+
+typedef u64 (*btf_bpf_rc_keydown)(u32 *, u32, u64, u32);
+
+typedef u64 (*btf_bpf_rc_pointer_rel)(u32 *, s32, s32);
+
+struct cec_devnode {
+	struct device dev;
+	struct cdev cdev;
+	int minor;
+	struct mutex lock;
+	bool registered;
+	bool unregistered;
+	struct mutex lock_fhs;
+	struct list_head fhs;
+};
+
+struct cec_log_addrs {
+	__u8 log_addr[4];
+	__u16 log_addr_mask;
+	__u8 cec_version;
+	__u8 num_log_addrs;
+	__u32 vendor_id;
+	__u32 flags;
+	char osd_name[15];
+	__u8 primary_device_type[4];
+	__u8 log_addr_type[4];
+	__u8 all_device_types[4];
+	__u8 features[48];
+};
+
+struct cec_drm_connector_info {
+	__u32 card_no;
+	__u32 connector_id;
+};
+
+struct cec_connector_info {
+	__u32 type;
+	union {
+		struct cec_drm_connector_info drm;
+		__u32 raw[16];
+	};
+};
+
+struct cec_data;
+
+struct cec_adap_ops;
+
+struct cec_fh;
+
+struct cec_notifier;
+
+struct cec_pin;
+
+struct cec_adapter {
+	struct module *owner;
+	char name[32];
+	struct cec_devnode devnode;
+	struct mutex lock;
+	struct rc_dev *rc;
+	struct list_head transmit_queue;
+	unsigned int transmit_queue_sz;
+	struct list_head wait_queue;
+	struct cec_data *transmitting;
+	bool transmit_in_progress;
+	bool transmit_in_progress_aborted;
+	unsigned int xfer_timeout_ms;
+	struct task_struct *kthread_config;
+	struct completion config_completion;
+	struct task_struct *kthread;
+	wait_queue_head_t kthread_waitq;
+	const struct cec_adap_ops *ops;
+	void *priv;
+	u32 capabilities;
+	u8 available_log_addrs;
+	u16 phys_addr;
+	bool needs_hpd;
+	bool is_enabled;
+	bool is_configuring;
+	bool must_reconfigure;
+	bool is_configured;
+	bool cec_pin_is_high;
+	bool adap_controls_phys_addr;
+	u8 last_initiator;
+	u32 monitor_all_cnt;
+	u32 monitor_pin_cnt;
+	u32 follower_cnt;
+	struct cec_fh *cec_follower;
+	struct cec_fh *cec_initiator;
+	bool passthrough;
+	struct cec_log_addrs log_addrs;
+	struct cec_connector_info conn_info;
+	u32 tx_timeouts;
+	struct cec_notifier *notifier;
+	struct cec_pin *pin;
+	struct dentry *cec_dir;
+	u32 sequence;
+	char input_phys[32];
+};
+
+struct cec_msg {
+	__u64 tx_ts;
+	__u64 rx_ts;
+	__u32 len;
+	__u32 timeout;
+	__u32 sequence;
+	__u32 flags;
+	__u8 msg[16];
+	__u8 reply;
+	__u8 rx_status;
+	__u8 tx_status;
+	__u8 tx_arb_lost_cnt;
+	__u8 tx_nack_cnt;
+	__u8 tx_low_drive_cnt;
+	__u8 tx_error_cnt;
+};
+
+struct cec_data {
+	struct list_head list;
+	struct list_head xfer_list;
+	struct cec_adapter *adap;
+	struct cec_msg msg;
+	struct cec_fh *fh;
+	struct delayed_work work;
+	struct completion c;
+	u8 attempts;
+	bool blocking;
+	bool completed;
+};
+
+struct cec_event_state_change {
+	__u16 phys_addr;
+	__u16 log_addr_mask;
+	__u16 have_conn_info;
+};
+
+struct cec_event_lost_msgs {
+	__u32 lost_msgs;
+};
+
+struct cec_event {
+	__u64 ts;
+	__u32 event;
+	__u32 flags;
+	union {
+		struct cec_event_state_change state_change;
+		struct cec_event_lost_msgs lost_msgs;
+		__u32 raw[16];
+	};
+};
+
+struct cec_event_entry {
+	struct list_head list;
+	struct cec_event ev;
+};
+
+struct cec_fh {
+	struct list_head list;
+	struct list_head xfer_list;
+	struct cec_adapter *adap;
+	u8 mode_initiator;
+	u8 mode_follower;
+	wait_queue_head_t wait;
+	struct mutex lock;
+	struct list_head events[8];
+	u16 queued_events[8];
+	unsigned int total_queued_events;
+	struct cec_event_entry core_events[2];
+	struct list_head msgs;
+	unsigned int queued_msgs;
+};
+
+struct cec_adap_ops {
+	int (*adap_enable)(struct cec_adapter *, bool);
+	int (*adap_monitor_all_enable)(struct cec_adapter *, bool);
+	int (*adap_monitor_pin_enable)(struct cec_adapter *, bool);
+	int (*adap_log_addr)(struct cec_adapter *, u8);
+	void (*adap_unconfigured)(struct cec_adapter *);
+	int (*adap_transmit)(struct cec_adapter *, u8, u32, struct cec_msg *);
+	void (*adap_nb_transmit_canceled)(struct cec_adapter *, const struct cec_msg *);
+	void (*adap_status)(struct cec_adapter *, struct seq_file *);
+	void (*adap_free)(struct cec_adapter *);
+	int (*error_inj_show)(struct cec_adapter *, struct seq_file *);
+	bool (*error_inj_parse_line)(struct cec_adapter *, char *);
+	void (*configured)(struct cec_adapter *);
+	int (*received)(struct cec_adapter *, struct cec_msg *);
+};
+
+struct cec_msg_entry {
+	struct list_head list;
+	struct cec_msg msg;
+};
+
+enum cec_pin_state {
+	CEC_ST_OFF = 0,
+	CEC_ST_IDLE = 1,
+	CEC_ST_TX_WAIT = 2,
+	CEC_ST_TX_WAIT_FOR_HIGH = 3,
+	CEC_ST_TX_START_BIT_LOW = 4,
+	CEC_ST_TX_START_BIT_HIGH = 5,
+	CEC_ST_TX_START_BIT_HIGH_SHORT = 6,
+	CEC_ST_TX_START_BIT_HIGH_LONG = 7,
+	CEC_ST_TX_START_BIT_LOW_CUSTOM = 8,
+	CEC_ST_TX_START_BIT_HIGH_CUSTOM = 9,
+	CEC_ST_TX_DATA_BIT_0_LOW = 10,
+	CEC_ST_TX_DATA_BIT_0_HIGH = 11,
+	CEC_ST_TX_DATA_BIT_0_HIGH_SHORT = 12,
+	CEC_ST_TX_DATA_BIT_0_HIGH_LONG = 13,
+	CEC_ST_TX_DATA_BIT_1_LOW = 14,
+	CEC_ST_TX_DATA_BIT_1_HIGH = 15,
+	CEC_ST_TX_DATA_BIT_1_HIGH_SHORT = 16,
+	CEC_ST_TX_DATA_BIT_1_HIGH_LONG = 17,
+	CEC_ST_TX_DATA_BIT_1_HIGH_PRE_SAMPLE = 18,
+	CEC_ST_TX_DATA_BIT_1_HIGH_POST_SAMPLE = 19,
+	CEC_ST_TX_DATA_BIT_1_HIGH_POST_SAMPLE_SHORT = 20,
+	CEC_ST_TX_DATA_BIT_1_HIGH_POST_SAMPLE_LONG = 21,
+	CEC_ST_TX_DATA_BIT_LOW_CUSTOM = 22,
+	CEC_ST_TX_DATA_BIT_HIGH_CUSTOM = 23,
+	CEC_ST_TX_PULSE_LOW_CUSTOM = 24,
+	CEC_ST_TX_PULSE_HIGH_CUSTOM = 25,
+	CEC_ST_TX_LOW_DRIVE = 26,
+	CEC_ST_RX_START_BIT_LOW = 27,
+	CEC_ST_RX_START_BIT_HIGH = 28,
+	CEC_ST_RX_DATA_SAMPLE = 29,
+	CEC_ST_RX_DATA_POST_SAMPLE = 30,
+	CEC_ST_RX_DATA_WAIT_FOR_LOW = 31,
+	CEC_ST_RX_ACK_LOW = 32,
+	CEC_ST_RX_ACK_LOW_POST = 33,
+	CEC_ST_RX_ACK_HIGH_POST = 34,
+	CEC_ST_RX_ACK_FINISH = 35,
+	CEC_ST_RX_LOW_DRIVE = 36,
+	CEC_ST_RX_IRQ = 37,
+	CEC_PIN_STATES = 38,
+};
+
+struct cec_pin_ops;
+
+struct cec_pin {
+	struct cec_adapter *adap;
+	const struct cec_pin_ops *ops;
+	struct task_struct *kthread;
+	wait_queue_head_t kthread_waitq;
+	struct hrtimer timer;
+	ktime_t ts;
+	unsigned int wait_usecs;
+	u16 la_mask;
+	bool monitor_all;
+	bool rx_eom;
+	bool enabled_irq;
+	bool enable_irq_failed;
+	enum cec_pin_state state;
+	struct cec_msg tx_msg;
+	u32 tx_bit;
+	bool tx_nacked;
+	u32 tx_signal_free_time;
+	bool tx_toggle;
+	struct cec_msg rx_msg;
+	u32 rx_bit;
+	bool rx_toggle;
+	u32 rx_start_bit_low_too_short_cnt;
+	u64 rx_start_bit_low_too_short_ts;
+	u32 rx_start_bit_low_too_short_delta;
+	u32 rx_start_bit_too_short_cnt;
+	u64 rx_start_bit_too_short_ts;
+	u32 rx_start_bit_too_short_delta;
+	u32 rx_start_bit_too_long_cnt;
+	u32 rx_data_bit_too_short_cnt;
+	u64 rx_data_bit_too_short_ts;
+	u32 rx_data_bit_too_short_delta;
+	u32 rx_data_bit_too_long_cnt;
+	u32 rx_low_drive_cnt;
+	struct cec_msg work_rx_msg;
+	u8 work_tx_status;
+	ktime_t work_tx_ts;
+	atomic_t work_irq_change;
+	atomic_t work_pin_num_events;
+	unsigned int work_pin_events_wr;
+	unsigned int work_pin_events_rd;
+	ktime_t work_pin_ts[128];
+	u8 work_pin_events[128];
+	bool work_pin_events_dropped;
+	u32 work_pin_events_dropped_cnt;
+	ktime_t timer_ts;
+	u32 timer_cnt;
+	u32 timer_100us_overruns;
+	u32 timer_300us_overruns;
+	u32 timer_max_overrun;
+	u32 timer_sum_overrun;
+	u32 tx_custom_low_usecs;
+	u32 tx_custom_high_usecs;
+	bool tx_ignore_nack_until_eom;
+	bool tx_custom_pulse;
+	bool tx_generated_poll;
+	bool tx_post_eom;
+	u8 tx_extra_bytes;
+	u32 tx_low_drive_cnt;
+};
+
+struct cec_pin_ops {
+	int (*read)(struct cec_adapter *);
+	void (*low)(struct cec_adapter *);
+	void (*high)(struct cec_adapter *);
+	bool (*enable_irq)(struct cec_adapter *);
+	void (*disable_irq)(struct cec_adapter *);
+	void (*free)(struct cec_adapter *);
+	void (*status)(struct cec_adapter *, struct seq_file *);
+	int (*read_hpd)(struct cec_adapter *);
+	int (*read_5v)(struct cec_adapter *);
+	int (*received)(struct cec_adapter *, struct cec_msg *);
+};
+
+struct cec_caps {
+	char driver[32];
+	char name[32];
+	__u32 available_log_addrs;
+	__u32 capabilities;
+	__u32 version;
+};
+
+struct cec_notifier {
+	struct mutex lock;
+	struct list_head head;
+	struct kref kref;
+	struct device *hdmi_dev;
+	struct cec_connector_info conn_info;
+	const char *port_name;
+	struct cec_adapter *cec_adap;
+	u16 phys_addr;
+};
+
+struct cec_state {
+	const char * const name;
+	unsigned int usecs;
+};
+
+enum vb2_memory {
+	VB2_MEMORY_UNKNOWN = 0,
+	VB2_MEMORY_MMAP = 1,
+	VB2_MEMORY_USERPTR = 2,
+	VB2_MEMORY_DMABUF = 4,
+};
+
+struct vb2_fileio_buf {
+	void *vaddr;
+	unsigned int size;
+	unsigned int pos;
+	unsigned int queued: 1;
+};
+
+struct vb2_fileio_data {
+	unsigned int count;
+	unsigned int type;
+	unsigned int memory;
+	struct vb2_fileio_buf bufs[64];
+	unsigned int cur_index;
+	unsigned int initial_index;
+	unsigned int q_count;
+	unsigned int dq_count;
+	unsigned int read_once: 1;
+	unsigned int write_immediately: 1;
+};
+
+typedef int (*vb2_thread_fnc)(struct vb2_buffer *, void *);
+
+struct vb2_threadio_data {
+	struct task_struct *thread;
+	vb2_thread_fnc fnc;
+	void *priv;
+	bool stop;
+};
+
+struct frame_vector {
+	unsigned int nr_allocated;
+	unsigned int nr_frames;
+	bool got_ref;
+	bool is_pfns;
+	void *ptrs[0];
+};
+
+typedef void (*btf_trace_vb2_buf_done)(void *, struct vb2_queue *, struct vb2_buffer *);
+
+typedef void (*btf_trace_vb2_buf_queue)(void *, struct vb2_queue *, struct vb2_buffer *);
+
+typedef void (*btf_trace_vb2_dqbuf)(void *, struct vb2_queue *, struct vb2_buffer *);
+
+typedef void (*btf_trace_vb2_qbuf)(void *, struct vb2_queue *, struct vb2_buffer *);
+
+struct trace_event_raw_vb2_event_class {
+	struct trace_entry ent;
+	void *owner;
+	u32 queued_count;
+	int owned_by_drv_count;
+	u32 index;
+	u32 type;
+	u32 bytesused;
+	u64 timestamp;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_vb2_event_class {};
+
+struct vb2_vmarea_handler {
+	refcount_t *refcount;
+	void (*put)(void *);
+	void *arg;
+};
+
+struct vb2_dc_buf {
+	struct device *dev;
+	void *vaddr;
+	unsigned long size;
+	void *cookie;
+	dma_addr_t dma_addr;
+	unsigned long attrs;
+	enum dma_data_direction dma_dir;
+	struct sg_table *dma_sgt;
+	struct frame_vector *vec;
+	struct vb2_vmarea_handler handler;
+	refcount_t refcount;
+	struct sg_table *sgt_base;
+	struct dma_buf_attachment *db_attach;
+	struct vb2_buffer *vb;
+	bool non_coherent_mem;
+};
+
+struct vb2_dc_attachment {
+	struct sg_table sgt;
+	enum dma_data_direction dma_dir;
+};
+
+struct vb2_dma_sg_buf {
+	struct device *dev;
+	void *vaddr;
+	struct page **pages;
+	struct frame_vector *vec;
+	int offset;
+	enum dma_data_direction dma_dir;
+	struct sg_table sg_table;
+	struct sg_table *dma_sgt;
+	size_t size;
+	unsigned int num_pages;
+	refcount_t refcount;
+	struct vb2_vmarea_handler handler;
+	struct dma_buf_attachment *db_attach;
+	struct vb2_buffer *vb;
+};
+
+struct vb2_dma_sg_attachment {
+	struct sg_table sgt;
+	enum dma_data_direction dma_dir;
+};
+
+struct vb2_vmalloc_buf {
+	void *vaddr;
+	struct frame_vector *vec;
+	enum dma_data_direction dma_dir;
+	unsigned long size;
+	refcount_t refcount;
+	struct vb2_vmarea_handler handler;
+	struct dma_buf *dbuf;
+};
+
+struct vb2_vmalloc_attachment {
+	struct sg_table sgt;
+	enum dma_data_direction dma_dir;
+};
+
+enum gspca_packet_type {
+	DISCARD_PACKET = 0,
+	FIRST_PACKET = 1,
+	INTER_PACKET = 2,
+	LAST_PACKET = 3,
+};
+
+struct gspca_buffer {
+	struct vb2_v4l2_buffer vb;
+	struct list_head list;
+};
+
+struct framerates;
+
+struct cam {
+	const struct v4l2_pix_format *cam_mode;
+	const struct framerates *mode_framerates;
+	u32 bulk_size;
+	u32 input_flags;
+	u8 nmodes;
+	u8 no_urb_create;
+	u8 bulk_nurbs;
+	u8 bulk;
+	u8 npkt;
+	u8 needs_full_bandwidth;
+};
+
+struct sd_desc;
+
+struct gspca_dev {
+	struct video_device vdev;
+	struct module *module;
+	struct v4l2_device v4l2_dev;
+	struct usb_device *dev;
+	struct input_dev *input_dev;
+	char phys[64];
+	struct cam cam;
+	const struct sd_desc *sd_desc;
+	struct v4l2_ctrl_handler ctrl_handler;
+	struct {
+		struct v4l2_ctrl *autogain;
+		struct v4l2_ctrl *exposure;
+		struct v4l2_ctrl *gain;
+		int exp_too_low_cnt;
+		int exp_too_high_cnt;
+	};
+	__u8 *usb_buf;
+	struct urb *urb[4];
+	struct urb *int_urb;
+	u8 *image;
+	u32 image_len;
+	__u8 last_packet_type;
+	__s8 empty_packet;
+	bool streaming;
+	__u8 curr_mode;
+	struct v4l2_pix_format pixfmt;
+	__u32 sequence;
+	struct vb2_queue queue;
+	spinlock_t qlock;
+	struct list_head buf_list;
+	wait_queue_head_t wq;
+	struct mutex usb_lock;
+	int usb_err;
+	u16 pkt_size;
+	char frozen;
+	bool present;
+	char memory;
+	__u8 iface;
+	__u8 alt;
+	int xfer_ep;
+	u8 audio;
+};
+
+struct framerates {
+	const u8 *rates;
+	int nrates;
+};
+
+typedef int (*cam_cf_op)(struct gspca_dev *, const struct usb_device_id *);
+
+typedef int (*cam_op)(struct gspca_dev *);
+
+typedef void (*cam_v_op)(struct gspca_dev *);
+
+typedef void (*cam_pkt_op)(struct gspca_dev *, u8 *, int);
+
+typedef int (*cam_get_jpg_op)(struct gspca_dev *, struct v4l2_jpegcompression *);
+
+typedef int (*cam_set_jpg_op)(struct gspca_dev *, const struct v4l2_jpegcompression *);
+
+typedef void (*cam_streamparm_op)(struct gspca_dev *, struct v4l2_streamparm *);
+
+typedef void (*cam_format_op)(struct gspca_dev *, struct v4l2_format *);
+
+typedef int (*cam_frmsize_op)(struct gspca_dev *, struct v4l2_frmsizeenum *);
+
+typedef int (*cam_int_pkt_op)(struct gspca_dev *, u8 *, int);
+
+struct sd_desc {
+	const char *name;
+	cam_cf_op config;
+	cam_op init;
+	cam_op init_controls;
+	cam_v_op probe_error;
+	cam_op start;
+	cam_pkt_op pkt_scan;
+	cam_op isoc_init;
+	cam_op isoc_nego;
+	cam_v_op stopN;
+	cam_v_op stop0;
+	cam_v_op dq_callback;
+	cam_get_jpg_op get_jcomp;
+	cam_set_jpg_op set_jcomp;
+	cam_streamparm_op get_streamparm;
+	cam_streamparm_op set_streamparm;
+	cam_format_op try_fmt;
+	cam_frmsize_op enum_framesizes;
+	cam_int_pkt_op int_pkt_scan;
+	u8 other_input;
+};
+
+struct ep_tb_s {
+	u32 alt;
+	u32 bandwidth;
+};
+
+struct uvc_driver {
+	struct usb_driver driver;
+};
+
+struct uvc_control_mapping;
+
+struct uvc_device_info {
+	u32 quirks;
+	u32 meta_format;
+	u16 uvc_version;
+	const struct uvc_control_mapping **mappings;
+};
+
+struct uvc_control_mapping {
+	struct list_head list;
+	struct list_head ev_subs;
+	u32 id;
+	char *name;
+	u8 entity[16];
+	u8 selector;
+	u8 size;
+	u8 offset;
+	enum v4l2_ctrl_type v4l2_type;
+	u32 data_type;
+	const u32 *menu_mapping;
+	const char (*menu_names)[32];
+	unsigned long menu_mask;
+	u32 master_id;
+	s32 master_manual;
+	u32 slave_ids[2];
+	s32 (*get)(struct uvc_control_mapping *, u8, const u8 *);
+	void (*set)(struct uvc_control_mapping *, s32, u8 *);
+};
+
+enum uvc_buffer_state___2 {
+	UVC_BUF_STATE_IDLE___2 = 0,
+	UVC_BUF_STATE_QUEUED___2 = 1,
+	UVC_BUF_STATE_ACTIVE___2 = 2,
+	UVC_BUF_STATE_READY = 3,
+	UVC_BUF_STATE_DONE___2 = 4,
+	UVC_BUF_STATE_ERROR___2 = 5,
+};
+
+enum uvc_handle_state {
+	UVC_HANDLE_PASSIVE = 0,
+	UVC_HANDLE_ACTIVE = 1,
+};
+
+struct uvc_device___2;
+
+struct uvc_control;
+
+struct uvc_entity {
+	struct list_head list;
+	struct list_head chain;
+	unsigned int flags;
+	u16 id;
+	u16 type;
+	char name[64];
+	u8 guid[16];
+	struct video_device *vdev;
+	struct v4l2_subdev subdev;
+	unsigned int num_pads;
+	unsigned int num_links;
+	struct media_pad *pads;
+	union {
+		struct {
+			u16 wObjectiveFocalLengthMin;
+			u16 wObjectiveFocalLengthMax;
+			u16 wOcularFocalLength;
+			u8 bControlSize;
+			u8 *bmControls;
+		} camera;
+		struct {
+			u8 bControlSize;
+			u8 *bmControls;
+			u8 bTransportModeSize;
+			u8 *bmTransportModes;
+		} media;
+		struct {} output;
+		struct {
+			u16 wMaxMultiplier;
+			u8 bControlSize;
+			u8 *bmControls;
+			u8 bmVideoStandards;
+		} processing;
+		struct {} selector;
+		struct {
+			u8 bNumControls;
+			u8 bControlSize;
+			u8 *bmControls;
+			u8 *bmControlsType;
+		} extension;
+		struct {
+			u8 bControlSize;
+			u8 *bmControls;
+			struct gpio_desc *gpio_privacy;
+			int irq;
+		} gpio;
+	};
+	u8 bNrInPins;
+	u8 *baSourceID;
+	int (*get_info)(struct uvc_device___2 *, struct uvc_entity *, u8, u8 *);
+	int (*get_cur)(struct uvc_device___2 *, struct uvc_entity *, u8, void *, u16);
+	unsigned int ncontrols;
+	struct uvc_control *controls;
+};
+
+struct uvc_video_chain;
+
+struct uvc_ctrl_work {
+	struct work_struct work;
+	struct urb *urb;
+	struct uvc_video_chain *chain;
+	struct uvc_control *ctrl;
+	const void *data;
+};
+
+struct uvc_status;
+
+struct uvc_device___2 {
+	struct usb_device *udev;
+	struct usb_interface *intf;
+	unsigned long warnings;
+	u32 quirks;
+	int intfnum;
+	char name[32];
+	const struct uvc_device_info *info;
+	struct mutex lock;
+	unsigned int users;
+	atomic_t nmappings;
+	struct media_device mdev;
+	struct v4l2_device vdev;
+	u16 uvc_version;
+	u32 clock_frequency;
+	struct list_head entities;
+	struct list_head chains;
+	struct list_head streams;
+	struct kref ref;
+	struct usb_host_endpoint *int_ep;
+	struct urb *int_urb;
+	struct uvc_status *status;
+	bool flush_status;
+	struct input_dev *input;
+	char input_phys[64];
+	struct uvc_ctrl_work async_ctrl;
+	struct uvc_entity *gpio_unit;
+};
+
+struct uvc_status_control {
+	u8 bSelector;
+	u8 bAttribute;
+	u8 bValue[11];
+};
+
+struct uvc_status_streaming {
+	u8 button;
+};
+
+struct uvc_status {
+	u8 bStatusType;
+	u8 bOriginator;
+	u8 bEvent;
+	union {
+		struct uvc_status_control control;
+		struct uvc_status_streaming streaming;
+	};
+};
+
+struct uvc_video_chain {
+	struct uvc_device___2 *dev;
+	struct list_head list;
+	struct list_head entities;
+	struct uvc_entity *processing;
+	struct uvc_entity *selector;
+	struct mutex ctrl_mutex;
+	struct v4l2_prio_state prio;
+	u32 caps;
+	u8 ctrl_class_bitmap;
+};
+
+struct uvc_control_info {
+	struct list_head mappings;
+	u8 entity[16];
+	u8 index;
+	u8 selector;
+	u16 size;
+	u32 flags;
+};
+
+struct uvc_fh;
+
+struct uvc_control {
+	struct uvc_entity *entity;
+	struct uvc_control_info info;
+	u8 index;
+	u8 dirty: 1;
+	u8 loaded: 1;
+	u8 modified: 1;
+	u8 cached: 1;
+	u8 initialized: 1;
+	u8 *uvc_data;
+	struct uvc_fh *handle;
+};
+
+struct uvc_streaming;
+
+struct uvc_fh {
+	struct v4l2_fh vfh;
+	struct uvc_video_chain *chain;
+	struct uvc_streaming *stream;
+	enum uvc_handle_state state;
+};
+
+struct uvc_video_queue___2 {
+	struct vb2_queue queue;
+	struct mutex mutex;
+	unsigned int flags;
+	unsigned int buf_used;
+	spinlock_t irqlock;
+	struct list_head irqqueue;
+};
+
+struct uvc_stats_frame {
+	unsigned int size;
+	unsigned int first_data;
+	unsigned int nb_packets;
+	unsigned int nb_empty;
+	unsigned int nb_invalid;
+	unsigned int nb_errors;
+	unsigned int nb_pts;
+	unsigned int nb_pts_diffs;
+	unsigned int last_pts_diff;
+	bool has_initial_pts;
+	bool has_early_pts;
+	u32 pts;
+	unsigned int nb_scr;
+	unsigned int nb_scr_diffs;
+	u16 scr_sof;
+	u32 scr_stc;
+};
+
+struct uvc_stats_stream {
+	ktime_t start_ts;
+	ktime_t stop_ts;
+	unsigned int nb_frames;
+	unsigned int nb_packets;
+	unsigned int nb_empty;
+	unsigned int nb_invalid;
+	unsigned int nb_errors;
+	unsigned int nb_pts_constant;
+	unsigned int nb_pts_early;
+	unsigned int nb_pts_initial;
+	unsigned int nb_scr_count_ok;
+	unsigned int nb_scr_diffs_ok;
+	unsigned int scr_sof_count;
+	unsigned int scr_sof;
+	unsigned int min_sof;
+	unsigned int max_sof;
+};
+
+struct uvc_streaming_header {
+	u8 bNumFormats;
+	u8 bEndpointAddress;
+	u8 bTerminalLink;
+	u8 bControlSize;
+	u8 *bmaControls;
+	u8 bmInfo;
+	u8 bStillCaptureMethod;
+	u8 bTriggerSupport;
+	u8 bTriggerUsage;
+};
+
+struct uvc_streaming_control {
+	__u16 bmHint;
+	__u8 bFormatIndex;
+	__u8 bFrameIndex;
+	__u32 dwFrameInterval;
+	__u16 wKeyFrameRate;
+	__u16 wPFrameRate;
+	__u16 wCompQuality;
+	__u16 wCompWindowSize;
+	__u16 wDelay;
+	__u32 dwMaxVideoFrameSize;
+	__u32 dwMaxPayloadTransferSize;
+	__u32 dwClockFrequency;
+	__u8 bmFramingInfo;
+	__u8 bPreferedVersion;
+	__u8 bMinVersion;
+	__u8 bMaxVersion;
+} __attribute__((packed));
+
+struct uvc_buffer___2;
+
+struct uvc_copy_op {
+	struct uvc_buffer___2 *buf;
+	void *dst;
+	const __u8 *src;
+	size_t len;
+};
+
+struct uvc_urb {
+	struct urb *urb;
+	struct uvc_streaming *stream;
+	char *buffer;
+	dma_addr_t dma;
+	struct sg_table *sgt;
+	unsigned int async_operations;
+	struct uvc_copy_op copy_operations[32];
+	struct work_struct work;
+};
+
+struct uvc_clock_sample;
+
+struct uvc_clock {
+	struct uvc_clock_sample *samples;
+	unsigned int head;
+	unsigned int count;
+	unsigned int size;
+	u16 last_sof;
+	u16 sof_offset;
+	u8 last_scr[6];
+	spinlock_t lock;
+};
+
+struct uvc_format;
+
+struct uvc_frame;
+
+struct uvc_streaming {
+	struct list_head list;
+	struct uvc_device___2 *dev;
+	struct video_device vdev;
+	struct uvc_video_chain *chain;
+	atomic_t active;
+	struct usb_interface *intf;
+	int intfnum;
+	u16 maxpsize;
+	struct uvc_streaming_header header;
+	enum v4l2_buf_type type;
+	unsigned int nformats;
+	const struct uvc_format *formats;
+	struct uvc_streaming_control ctrl;
+	const struct uvc_format *def_format;
+	const struct uvc_format *cur_format;
+	const struct uvc_frame *cur_frame;
+	struct mutex mutex;
+	unsigned int frozen: 1;
+	struct uvc_video_queue___2 queue;
+	struct workqueue_struct *async_wq;
+	void (*decode)(struct uvc_urb *, struct uvc_buffer___2 *, struct uvc_buffer___2 *);
+	struct {
+		struct video_device vdev;
+		struct uvc_video_queue___2 queue;
+		u32 format;
+	} meta;
+	struct {
+		u8 header[256];
+		unsigned int header_size;
+		int skip_payload;
+		u32 payload_size;
+		u32 max_payload_size;
+	} bulk;
+	struct uvc_urb uvc_urb[5];
+	unsigned int urb_size;
+	u32 sequence;
+	u8 last_fid;
+	struct dentry *debugfs_dir;
+	struct {
+		struct uvc_stats_frame frame;
+		struct uvc_stats_stream stream;
+	} stats;
+	struct uvc_clock clock;
+};
+
+struct uvc_format {
+	u8 type;
+	u8 index;
+	u8 bpp;
+	enum v4l2_colorspace colorspace;
+	enum v4l2_xfer_func xfer_func;
+	enum v4l2_ycbcr_encoding ycbcr_enc;
+	u32 fcc;
+	u32 flags;
+	unsigned int nframes;
+	const struct uvc_frame *frames;
+};
+
+struct uvc_frame {
+	u8 bFrameIndex;
+	u8 bmCapabilities;
+	u16 wWidth;
+	u16 wHeight;
+	u32 dwMinBitRate;
+	u32 dwMaxBitRate;
+	u32 dwMaxVideoFrameBufferSize;
+	u8 bFrameIntervalType;
+	u32 dwDefaultFrameInterval;
+	const u32 *dwFrameInterval;
+};
+
+struct uvc_buffer___2 {
+	struct vb2_v4l2_buffer buf;
+	struct list_head queue;
+	enum uvc_buffer_state___2 state;
+	unsigned int error;
+	void *mem;
+	unsigned int length;
+	unsigned int bytesused;
+	u32 pts;
+	struct kref ref;
+};
+
+struct uvc_clock_sample {
+	u32 dev_stc;
+	u16 dev_sof;
+	u16 host_sof;
+	ktime_t host_time;
+};
+
+struct uvc_xu_control_query {
+	__u8 unit;
+	__u8 selector;
+	__u8 query;
+	__u16 size;
+	__u8 __attribute__((btf_type_tag("user"))) *data;
+};
+
+struct uvc_menu_info;
+
+struct uvc_xu_control_mapping {
+	__u32 id;
+	__u8 name[32];
+	__u8 entity[16];
+	__u8 selector;
+	__u8 size;
+	__u8 offset;
+	__u32 v4l2_type;
+	__u32 data_type;
+	struct uvc_menu_info __attribute__((btf_type_tag("user"))) *menu_info;
+	__u32 menu_count;
+	__u32 reserved[4];
+};
+
+struct uvc_menu_info {
+	__u32 value;
+	__u8 name[32];
+};
+
+struct uvc_xu_control_mapping32 {
+	u32 id;
+	u8 name[32];
+	u8 entity[16];
+	u8 selector;
+	u8 size;
+	u8 offset;
+	u32 v4l2_type;
+	u32 data_type;
+	compat_caddr_t menu_info;
+	u32 menu_count;
+	u32 reserved[4];
+};
+
+struct uvc_xu_control_query32 {
+	u8 unit;
+	u8 selector;
+	u8 query;
+	u16 size;
+	compat_caddr_t data;
+};
+
+struct uvc_meta_buf {
+	__u64 ns;
+	__u16 sof;
+	__u8 length;
+	__u8 flags;
+	__u8 buf[0];
+} __attribute__((packed));
+
+struct uvc_ctrl_fixup {
+	struct usb_device_id id;
+	u8 entity;
+	u8 selector;
+	u8 flags;
+};
+
+struct uvc_ctrl_blacklist {
+	struct usb_device_id id;
+	u8 index;
+};
+
+struct uvc_debugfs_buffer {
+	size_t count;
+	char data[1024];
+};
+
+struct syscon_reboot_context {
+	struct regmap *map;
+	u32 offset;
+	u32 value;
+	u32 mask;
+	struct notifier_block restart_handler;
+};
+
+enum thermal_device_mode {
+	THERMAL_DEVICE_DISABLED = 0,
+	THERMAL_DEVICE_ENABLED = 1,
+};
+
+enum thermal_trend {
+	THERMAL_TREND_STABLE = 0,
+	THERMAL_TREND_RAISING = 1,
+	THERMAL_TREND_DROPPING = 2,
+};
+
+struct thermal_trip;
+
+struct thermal_zone_device_ops {
+	int (*bind)(struct thermal_zone_device *, struct thermal_cooling_device *);
+	int (*unbind)(struct thermal_zone_device *, struct thermal_cooling_device *);
+	int (*get_temp)(struct thermal_zone_device *, int *);
+	int (*set_trips)(struct thermal_zone_device *, int, int);
+	int (*change_mode)(struct thermal_zone_device *, enum thermal_device_mode);
+	int (*set_trip_temp)(struct thermal_zone_device *, int, int);
+	int (*set_trip_hyst)(struct thermal_zone_device *, int, int);
+	int (*get_crit_temp)(struct thermal_zone_device *, int *);
+	int (*set_emul_temp)(struct thermal_zone_device *, int);
+	int (*get_trend)(struct thermal_zone_device *, const struct thermal_trip *, enum thermal_trend *);
+	void (*hot)(struct thermal_zone_device *);
+	void (*critical)(struct thermal_zone_device *);
+	u64 android_kabi_reserved1;
+};
+
+enum thermal_notify_event {
+	THERMAL_EVENT_UNSPECIFIED = 0,
+	THERMAL_EVENT_TEMP_SAMPLE = 1,
+	THERMAL_TRIP_VIOLATED = 2,
+	THERMAL_TRIP_CHANGED = 3,
+	THERMAL_DEVICE_DOWN = 4,
+	THERMAL_DEVICE_UP = 5,
+	THERMAL_DEVICE_POWER_CAPABILITY_CHANGED = 6,
+	THERMAL_TABLE_CHANGED = 7,
+	THERMAL_EVENT_KEEP_ALIVE = 8,
+};
+
+struct thermal_attr;
+
+struct thermal_zone_params;
+
+struct thermal_governor;
+
+struct thermal_zone_device {
+	int id;
+	char type[20];
+	struct device device;
+	struct attribute_group trips_attribute_group;
+	struct thermal_attr *trip_temp_attrs;
+	struct thermal_attr *trip_type_attrs;
+	struct thermal_attr *trip_hyst_attrs;
+	enum thermal_device_mode mode;
+	void *devdata;
+	struct thermal_trip *trips;
+	int num_trips;
+	unsigned long trips_disabled;
+	unsigned long passive_delay_jiffies;
+	unsigned long polling_delay_jiffies;
+	int temperature;
+	int last_temperature;
+	int emul_temperature;
+	int passive;
+	int prev_low_trip;
+	int prev_high_trip;
+	atomic_t need_update;
+	struct thermal_zone_device_ops *ops;
+	struct thermal_zone_params *tzp;
+	struct thermal_governor *governor;
+	void *governor_data;
+	struct list_head thermal_instances;
+	struct ida ida;
+	struct mutex lock;
+	struct list_head node;
+	struct delayed_work poll_queue;
+	enum thermal_notify_event notify_event;
+	bool suspended;
+	u64 android_kabi_reserved1;
+};
+
+enum thermal_trip_type {
+	THERMAL_TRIP_ACTIVE = 0,
+	THERMAL_TRIP_PASSIVE = 1,
+	THERMAL_TRIP_HOT = 2,
+	THERMAL_TRIP_CRITICAL = 3,
+};
+
+struct thermal_trip {
+	int temperature;
+	int hysteresis;
+	enum thermal_trip_type type;
+	void *priv;
+};
+
+struct thermal_zone_params {
+	char governor_name[20];
+	bool no_hwmon;
+	u32 sustainable_power;
+	s32 k_po;
+	s32 k_pu;
+	s32 k_i;
+	s32 k_d;
+	s32 integral_cutoff;
+	int slope;
+	int offset;
+	u64 android_kabi_reserved1;
+};
+
+struct thermal_governor {
+	char name[20];
+	int (*bind_to_tz)(struct thermal_zone_device *);
+	void (*unbind_from_tz)(struct thermal_zone_device *);
+	int (*throttle)(struct thermal_zone_device *, int);
+	struct list_head governor_list;
+	u64 android_kabi_reserved1;
+};
+
+struct thermal_cooling_device_ops;
+
+struct thermal_cooling_device {
+	int id;
+	char *type;
+	unsigned long max_state;
+	struct device device;
+	struct device_node *np;
+	void *devdata;
+	void *stats;
+	const struct thermal_cooling_device_ops *ops;
+	bool updated;
+	struct mutex lock;
+	struct list_head thermal_instances;
+	struct list_head node;
+	u64 android_kabi_reserved1;
+};
+
+struct thermal_cooling_device_ops {
+	int (*get_max_state)(struct thermal_cooling_device *, unsigned long *);
+	int (*get_cur_state)(struct thermal_cooling_device *, unsigned long *);
+	int (*set_cur_state)(struct thermal_cooling_device *, unsigned long);
+	int (*get_requested_power)(struct thermal_cooling_device *, u32 *);
+	int (*state2power)(struct thermal_cooling_device *, unsigned long, u32 *);
+	int (*power2state)(struct thermal_cooling_device *, u32, unsigned long *);
+	u64 android_kabi_reserved1;
+};
+
+enum {
+	POWER_SUPPLY_TECHNOLOGY_UNKNOWN = 0,
+	POWER_SUPPLY_TECHNOLOGY_NiMH = 1,
+	POWER_SUPPLY_TECHNOLOGY_LION = 2,
+	POWER_SUPPLY_TECHNOLOGY_LIPO = 3,
+	POWER_SUPPLY_TECHNOLOGY_LiFe = 4,
+	POWER_SUPPLY_TECHNOLOGY_NiCd = 5,
+	POWER_SUPPLY_TECHNOLOGY_LiMn = 6,
+};
+
+enum power_supply_notifier_events {
+	PSY_EVENT_PROP_CHANGED = 0,
+};
+
+struct match_device_node_array_param {
+	struct device_node *parent_of_node;
+	struct power_supply **psy;
+	ssize_t psy_size;
+	ssize_t psy_count;
+};
+
+struct psy_am_i_supplied_data {
+	struct power_supply *psy;
+	unsigned int count;
+};
+
+struct psy_get_supplier_prop_data {
+	struct power_supply *psy;
+	enum power_supply_property psp;
+	union power_supply_propval *val;
+};
+
+struct power_supply_attr {
+	const char *prop_name;
+	char attr_name[31];
+	struct device_attribute dev_attr;
+	const char * const *text_values;
+	int text_values_len;
+};
+
+enum power_supply_charge_behaviour {
+	POWER_SUPPLY_CHARGE_BEHAVIOUR_AUTO = 0,
+	POWER_SUPPLY_CHARGE_BEHAVIOUR_INHIBIT_CHARGE = 1,
+	POWER_SUPPLY_CHARGE_BEHAVIOUR_FORCE_DISCHARGE = 2,
+};
+
+enum {
+	POWER_SUPPLY_STATUS_UNKNOWN = 0,
+	POWER_SUPPLY_STATUS_CHARGING = 1,
+	POWER_SUPPLY_STATUS_DISCHARGING = 2,
+	POWER_SUPPLY_STATUS_NOT_CHARGING = 3,
+	POWER_SUPPLY_STATUS_FULL = 4,
+};
+
+typedef void (*btf_trace_thermal_temperature)(void *, struct thermal_zone_device *);
+
+struct thermal_attr {
+	struct device_attribute attr;
+	char name[20];
+};
+
+typedef void (*btf_trace_cdev_update)(void *, struct thermal_cooling_device *, unsigned long);
+
+typedef void (*btf_trace_thermal_zone_trip)(void *, struct thermal_zone_device *, int, enum thermal_trip_type);
+
+typedef void (*btf_trace_thermal_power_cpu_get_power_simple)(void *, int, u32);
+
+typedef void (*btf_trace_thermal_power_cpu_limit)(void *, const struct cpumask *, unsigned int, unsigned long, u32);
+
+struct devfreq_dev_status;
+
+typedef void (*btf_trace_thermal_power_devfreq_get_power)(void *, struct thermal_cooling_device *, struct devfreq_dev_status *, unsigned long, u32);
+
+struct devfreq_dev_status {
+	unsigned long total_time;
+	unsigned long busy_time;
+	unsigned long current_frequency;
+	void *private_data;
+};
+
+typedef void (*btf_trace_thermal_power_devfreq_limit)(void *, struct thermal_cooling_device *, unsigned long, unsigned long, u32);
+
+struct thermal_instance {
+	int id;
+	char name[20];
+	struct thermal_zone_device *tz;
+	struct thermal_cooling_device *cdev;
+	const struct thermal_trip *trip;
+	bool initialized;
+	unsigned long upper;
+	unsigned long lower;
+	unsigned long target;
+	char attr_name[20];
+	struct device_attribute attr;
+	char weight_attr_name[20];
+	struct device_attribute weight_attr;
+	struct list_head tz_node;
+	struct list_head cdev_node;
+	unsigned int weight;
+	bool upper_no_limit;
+};
+
+struct trace_event_raw_thermal_temperature {
+	struct trace_entry ent;
+	u32 __data_loc_thermal_zone;
+	int id;
+	int temp_prev;
+	int temp;
+	char __data[0];
+};
+
+struct trace_event_raw_cdev_update {
+	struct trace_entry ent;
+	u32 __data_loc_type;
+	unsigned long target;
+	char __data[0];
+};
+
+struct trace_event_raw_thermal_zone_trip {
+	struct trace_entry ent;
+	u32 __data_loc_thermal_zone;
+	int id;
+	int trip;
+	enum thermal_trip_type trip_type;
+	char __data[0];
+};
+
+struct trace_event_raw_thermal_power_cpu_get_power_simple {
+	struct trace_entry ent;
+	int cpu;
+	u32 power;
+	char __data[0];
+};
+
+struct trace_event_raw_thermal_power_cpu_limit {
+	struct trace_entry ent;
+	u32 __data_loc_cpumask;
+	unsigned int freq;
+	unsigned long cdev_state;
+	u32 power;
+	char __data[0];
+};
+
+struct trace_event_raw_thermal_power_devfreq_get_power {
+	struct trace_entry ent;
+	u32 __data_loc_type;
+	unsigned long freq;
+	u32 busy_time;
+	u32 total_time;
+	u32 power;
+	char __data[0];
+};
+
+struct trace_event_raw_thermal_power_devfreq_limit {
+	struct trace_entry ent;
+	u32 __data_loc_type;
+	unsigned int freq;
+	unsigned long cdev_state;
+	u32 power;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_thermal_temperature {
+	u32 thermal_zone;
+};
+
+struct trace_event_data_offsets_cdev_update {
+	u32 type;
+};
+
+struct trace_event_data_offsets_thermal_zone_trip {
+	u32 thermal_zone;
+};
+
+struct trace_event_data_offsets_thermal_power_cpu_limit {
+	u32 cpumask;
+};
+
+struct trace_event_data_offsets_thermal_power_devfreq_get_power {
+	u32 type;
+};
+
+struct trace_event_data_offsets_thermal_power_devfreq_limit {
+	u32 type;
+};
+
+struct trace_event_data_offsets_thermal_power_cpu_get_power_simple {};
+
+struct cooling_dev_stats {
+	spinlock_t lock;
+	unsigned int total_trans;
+	unsigned long state;
+	ktime_t last_time;
+	ktime_t *time_in_state;
+	unsigned int *trans_table;
+};
+
+struct param;
+
+typedef int (*cb_t)(struct param *);
+
+struct thermal_genl_cpu_caps;
+
+struct param {
+	struct nlattr **attrs;
+	struct sk_buff *msg;
+	const char *name;
+	int tz_id;
+	int cdev_id;
+	int trip_id;
+	int trip_temp;
+	int trip_type;
+	int trip_hyst;
+	int temp;
+	int cdev_state;
+	int cdev_max_state;
+	struct thermal_genl_cpu_caps *cpu_capabilities;
+	int cpu_capabilities_count;
+};
+
+struct thermal_genl_cpu_caps {
+	int cpu;
+	int performance;
+	int efficiency;
+};
+
+enum thermal_genl_sampling {
+	THERMAL_GENL_SAMPLING_TEMP = 0,
+	__THERMAL_GENL_SAMPLING_MAX = 1,
+};
+
+enum thermal_genl_attr {
+	THERMAL_GENL_ATTR_UNSPEC = 0,
+	THERMAL_GENL_ATTR_TZ = 1,
+	THERMAL_GENL_ATTR_TZ_ID = 2,
+	THERMAL_GENL_ATTR_TZ_TEMP = 3,
+	THERMAL_GENL_ATTR_TZ_TRIP = 4,
+	THERMAL_GENL_ATTR_TZ_TRIP_ID = 5,
+	THERMAL_GENL_ATTR_TZ_TRIP_TYPE = 6,
+	THERMAL_GENL_ATTR_TZ_TRIP_TEMP = 7,
+	THERMAL_GENL_ATTR_TZ_TRIP_HYST = 8,
+	THERMAL_GENL_ATTR_TZ_MODE = 9,
+	THERMAL_GENL_ATTR_TZ_NAME = 10,
+	THERMAL_GENL_ATTR_TZ_CDEV_WEIGHT = 11,
+	THERMAL_GENL_ATTR_TZ_GOV = 12,
+	THERMAL_GENL_ATTR_TZ_GOV_NAME = 13,
+	THERMAL_GENL_ATTR_CDEV = 14,
+	THERMAL_GENL_ATTR_CDEV_ID = 15,
+	THERMAL_GENL_ATTR_CDEV_CUR_STATE = 16,
+	THERMAL_GENL_ATTR_CDEV_MAX_STATE = 17,
+	THERMAL_GENL_ATTR_CDEV_NAME = 18,
+	THERMAL_GENL_ATTR_GOV_NAME = 19,
+	THERMAL_GENL_ATTR_CPU_CAPABILITY = 20,
+	THERMAL_GENL_ATTR_CPU_CAPABILITY_ID = 21,
+	THERMAL_GENL_ATTR_CPU_CAPABILITY_PERFORMANCE = 22,
+	THERMAL_GENL_ATTR_CPU_CAPABILITY_EFFICIENCY = 23,
+	__THERMAL_GENL_ATTR_MAX = 24,
+};
+
+enum thermal_genl_event {
+	THERMAL_GENL_EVENT_UNSPEC = 0,
+	THERMAL_GENL_EVENT_TZ_CREATE = 1,
+	THERMAL_GENL_EVENT_TZ_DELETE = 2,
+	THERMAL_GENL_EVENT_TZ_DISABLE = 3,
+	THERMAL_GENL_EVENT_TZ_ENABLE = 4,
+	THERMAL_GENL_EVENT_TZ_TRIP_UP = 5,
+	THERMAL_GENL_EVENT_TZ_TRIP_DOWN = 6,
+	THERMAL_GENL_EVENT_TZ_TRIP_CHANGE = 7,
+	THERMAL_GENL_EVENT_TZ_TRIP_ADD = 8,
+	THERMAL_GENL_EVENT_TZ_TRIP_DELETE = 9,
+	THERMAL_GENL_EVENT_CDEV_ADD = 10,
+	THERMAL_GENL_EVENT_CDEV_DELETE = 11,
+	THERMAL_GENL_EVENT_CDEV_STATE_UPDATE = 12,
+	THERMAL_GENL_EVENT_TZ_GOV_CHANGE = 13,
+	THERMAL_GENL_EVENT_CPU_CAPABILITY_CHANGE = 14,
+	__THERMAL_GENL_EVENT_MAX = 15,
+};
+
+typedef void (*btf_trace_thermal_power_allocator)(void *, struct thermal_zone_device *, u32 *, u32, u32 *, u32, size_t, u32, u32, int, s32);
+
+typedef void (*btf_trace_thermal_power_allocator_pid)(void *, struct thermal_zone_device *, s32, s32, s64, s64, s64, s32);
+
+struct trace_event_raw_thermal_power_allocator {
+	struct trace_entry ent;
+	int tz_id;
+	u32 __data_loc_req_power;
+	u32 total_req_power;
+	u32 __data_loc_granted_power;
+	u32 total_granted_power;
+	size_t num_actors;
+	u32 power_range;
+	u32 max_allocatable_power;
+	int current_temp;
+	s32 delta_temp;
+	char __data[0];
+};
+
+struct trace_event_raw_thermal_power_allocator_pid {
+	struct trace_entry ent;
+	int tz_id;
+	s32 err;
+	s32 err_integral;
+	s64 p;
+	s64 i;
+	s64 d;
+	s32 output;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_thermal_power_allocator {
+	u32 req_power;
+	u32 granted_power;
+};
+
+struct power_allocator_params {
+	bool allocated_tzp;
+	s64 err_integral;
+	s32 prev_err;
+	int trip_switch_on;
+	int trip_max_desired_temperature;
+	u32 sustainable_power;
+};
+
+struct trace_event_data_offsets_thermal_power_allocator_pid {};
+
+struct cpufreq_cooling_device {
+	u32 last_load;
+	unsigned int cpufreq_state;
+	unsigned int max_level;
+	struct em_perf_domain *em;
+	struct cpufreq_policy *policy;
+	struct thermal_cooling_device_ops cooling_ops;
+	struct freq_qos_request qos_req;
+};
+
+struct idle_inject_device;
+
+struct cpuidle_cooling_device {
+	struct idle_inject_device *ii_dev;
+	unsigned long state;
+};
+
+enum devfreq_timer {
+	DEVFREQ_TIMER_DEFERRABLE = 0,
+	DEVFREQ_TIMER_DELAYED = 1,
+	DEVFREQ_TIMER_NUM = 2,
+};
+
+struct devfreq;
+
+struct devfreq_cooling_power;
+
+struct devfreq_cooling_device {
+	struct thermal_cooling_device *cdev;
+	struct thermal_cooling_device_ops cooling_ops;
+	struct devfreq *devfreq;
+	unsigned long cooling_state;
+	u32 *freq_table;
+	size_t max_state;
+	struct devfreq_cooling_power *power_ops;
+	u32 res_util;
+	int capped_state;
+	struct dev_pm_qos_request req_max_freq;
+	struct em_perf_domain *em_pd;
+};
+
+struct devfreq_stats {
+	unsigned int total_trans;
+	unsigned int *trans_table;
+	u64 *time_in_state;
+	u64 last_update;
+};
+
+struct devfreq_dev_profile;
+
+struct devfreq_governor;
+
+struct devfreq {
+	struct list_head node;
+	struct mutex lock;
+	struct device dev;
+	struct devfreq_dev_profile *profile;
+	const struct devfreq_governor *governor;
+	struct opp_table *opp_table;
+	struct notifier_block nb;
+	struct delayed_work work;
+	unsigned long *freq_table;
+	unsigned int max_state;
+	unsigned long previous_freq;
+	struct devfreq_dev_status last_status;
+	void *data;
+	void *governor_data;
+	struct dev_pm_qos_request user_min_freq_req;
+	struct dev_pm_qos_request user_max_freq_req;
+	unsigned long scaling_min_freq;
+	unsigned long scaling_max_freq;
+	bool stop_polling;
+	unsigned long suspend_freq;
+	unsigned long resume_freq;
+	atomic_t suspend_count;
+	struct devfreq_stats stats;
+	struct srcu_notifier_head transition_notifier_list;
+	struct thermal_cooling_device *cdev;
+	struct notifier_block nb_min;
+	struct notifier_block nb_max;
+};
+
+struct devfreq_dev_profile {
+	unsigned long initial_freq;
+	unsigned int polling_ms;
+	enum devfreq_timer timer;
+	int (*target)(struct device *, unsigned long *, u32);
+	int (*get_dev_status)(struct device *, struct devfreq_dev_status *);
+	int (*get_cur_freq)(struct device *, unsigned long *);
+	void (*exit)(struct device *);
+	unsigned long *freq_table;
+	unsigned int max_state;
+	bool is_cooling_device;
+};
+
+struct devfreq_governor {
+	struct list_head node;
+	const char name[16];
+	const u64 attrs;
+	const u64 flags;
+	int (*get_target_freq)(struct devfreq *, unsigned long *);
+	int (*event_handler)(struct devfreq *, unsigned int, void *);
+};
+
+struct devfreq_cooling_power {
+	int (*get_real_power)(struct devfreq *, u32 *, unsigned long, unsigned long);
+};
+
+struct hisi_thermal_sensor;
+
+struct hisi_thermal_data;
+
+struct hisi_thermal_ops {
+	int (*get_temp)(struct hisi_thermal_sensor *);
+	int (*enable_sensor)(struct hisi_thermal_sensor *);
+	int (*disable_sensor)(struct hisi_thermal_sensor *);
+	int (*irq_handler)(struct hisi_thermal_sensor *);
+	int (*probe)(struct hisi_thermal_data *);
+};
+
+struct hisi_thermal_sensor {
+	struct hisi_thermal_data *data;
+	struct thermal_zone_device *tzd;
+	const char *irq_name;
+	uint32_t id;
+	uint32_t thres_temp;
+};
+
+struct hisi_thermal_data {
+	const struct hisi_thermal_ops *ops;
+	struct hisi_thermal_sensor *sensor;
+	struct platform_device *pdev;
+	struct clk *clk;
+	void *regs;
+	int nr_sensors;
+};
+
+struct watchdog_device;
+
+typedef void (*btf_trace_watchdog_start)(void *, struct watchdog_device *, int);
+
+struct watchdog_info;
+
+struct watchdog_ops;
+
+struct watchdog_governor;
+
+struct watchdog_core_data;
+
+struct watchdog_device {
+	int id;
+	struct device *parent;
+	const struct attribute_group **groups;
+	const struct watchdog_info *info;
+	const struct watchdog_ops *ops;
+	const struct watchdog_governor *gov;
+	unsigned int bootstatus;
+	unsigned int timeout;
+	unsigned int pretimeout;
+	unsigned int min_timeout;
+	unsigned int max_timeout;
+	unsigned int min_hw_heartbeat_ms;
+	unsigned int max_hw_heartbeat_ms;
+	struct notifier_block reboot_nb;
+	struct notifier_block restart_nb;
+	struct notifier_block pm_nb;
+	void *driver_data;
+	struct watchdog_core_data *wd_data;
+	unsigned long status;
+	struct list_head deferred;
+};
+
+struct watchdog_info {
+	__u32 options;
+	__u32 firmware_version;
+	__u8 identity[32];
+};
+
+struct watchdog_ops {
+	struct module *owner;
+	int (*start)(struct watchdog_device *);
+	int (*stop)(struct watchdog_device *);
+	int (*ping)(struct watchdog_device *);
+	unsigned int (*status)(struct watchdog_device *);
+	int (*set_timeout)(struct watchdog_device *, unsigned int);
+	int (*set_pretimeout)(struct watchdog_device *, unsigned int);
+	unsigned int (*get_timeleft)(struct watchdog_device *);
+	int (*restart)(struct watchdog_device *, unsigned long, void *);
+	long (*ioctl)(struct watchdog_device *, unsigned int, unsigned long);
+};
+
+struct watchdog_governor {
+	const char name[20];
+	void (*pretimeout)(struct watchdog_device *);
+};
+
+struct watchdog_core_data {
+	struct device dev;
+	struct cdev cdev;
+	struct watchdog_device *wdd;
+	struct mutex lock;
+	ktime_t last_keepalive;
+	ktime_t last_hw_keepalive;
+	ktime_t open_deadline;
+	struct hrtimer timer;
+	struct kthread_work work;
+	unsigned long status;
+};
+
+typedef void (*btf_trace_watchdog_ping)(void *, struct watchdog_device *, int);
+
+typedef void (*btf_trace_watchdog_stop)(void *, struct watchdog_device *, int);
+
+typedef void (*btf_trace_watchdog_set_timeout)(void *, struct watchdog_device *, unsigned int, int);
+
+struct trace_event_raw_watchdog_template {
+	struct trace_entry ent;
+	int id;
+	int err;
+	char __data[0];
+};
+
+struct trace_event_raw_watchdog_set_timeout {
+	struct trace_entry ent;
+	int id;
+	unsigned int timeout;
+	int err;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_watchdog_template {};
+
+struct trace_event_data_offsets_watchdog_set_timeout {};
+
+enum dm_uevent_type {
+	DM_UEVENT_PATH_FAILED = 0,
+	DM_UEVENT_PATH_REINSTATED = 1,
+};
+
+struct mapped_device;
+
+struct dm_uevent {
+	struct mapped_device *md;
+	enum kobject_action action;
+	struct kobj_uevent_env ku_env;
+	struct list_head elist;
+	char name[128];
+	char uuid[129];
+};
+
+struct dm_table;
+
+struct target_type;
+
+struct dm_target {
+	struct dm_table *table;
+	struct target_type *type;
+	sector_t begin;
+	sector_t len;
+	uint32_t max_io_len;
+	unsigned int num_flush_bios;
+	unsigned int num_discard_bios;
+	unsigned int num_secure_erase_bios;
+	unsigned int num_write_zeroes_bios;
+	unsigned int per_io_data_size;
+	void *private;
+	char *error;
+	bool flush_supported: 1;
+	bool discards_supported: 1;
+	bool max_discard_granularity: 1;
+	bool max_secure_erase_granularity: 1;
+	bool max_write_zeroes_granularity: 1;
+	bool limit_swap_bios: 1;
+	bool emulate_zone_append: 1;
+	bool accounts_remapped_io: 1;
+	bool needs_bio_set_dev: 1;
+	bool flush_bypasses_map: 1;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+typedef int (*dm_ctr_fn)(struct dm_target *, unsigned int, char **);
+
+typedef void (*dm_dtr_fn)(struct dm_target *);
+
+typedef int (*dm_map_fn)(struct dm_target *, struct bio *);
+
+union map_info___2;
+
+typedef int (*dm_clone_and_map_request_fn)(struct dm_target *, struct request *, union map_info___2 *, struct request **);
+
+typedef void (*dm_release_clone_request_fn)(struct request *, union map_info___2 *);
+
+typedef int (*dm_endio_fn)(struct dm_target *, struct bio *, blk_status_t *);
+
+typedef int (*dm_request_endio_fn)(struct dm_target *, struct request *, blk_status_t, union map_info___2 *);
+
+typedef void (*dm_presuspend_fn)(struct dm_target *);
+
+typedef void (*dm_presuspend_undo_fn)(struct dm_target *);
+
+typedef void (*dm_postsuspend_fn)(struct dm_target *);
+
+typedef int (*dm_preresume_fn)(struct dm_target *);
+
+typedef void (*dm_resume_fn)(struct dm_target *);
+
+typedef enum {
+	STATUSTYPE_INFO = 0,
+	STATUSTYPE_TABLE = 1,
+	STATUSTYPE_IMA = 2,
+} status_type_t;
+
+typedef void (*dm_status_fn)(struct dm_target *, status_type_t, unsigned int, char *, unsigned int);
+
+typedef int (*dm_message_fn)(struct dm_target *, unsigned int, char **, char *, unsigned int);
+
+typedef int (*dm_prepare_ioctl_fn)(struct dm_target *, struct block_device **);
+
+struct dm_report_zones_args;
+
+typedef int (*dm_report_zones_fn)(struct dm_target *, struct dm_report_zones_args *, unsigned int);
+
+typedef int (*dm_busy_fn)(struct dm_target *);
+
+struct dm_dev;
+
+typedef int (*iterate_devices_callout_fn)(struct dm_target *, struct dm_dev *, sector_t, sector_t, void *);
+
+typedef int (*dm_iterate_devices_fn)(struct dm_target *, iterate_devices_callout_fn, void *);
+
+typedef void (*dm_io_hints_fn)(struct dm_target *, struct queue_limits *);
+
+typedef long (*dm_dax_direct_access_fn)(struct dm_target *, unsigned long, long, enum dax_access_mode, void **, pfn_t *);
+
+typedef int (*dm_dax_zero_page_range_fn)(struct dm_target *, unsigned long, size_t);
+
+typedef size_t (*dm_dax_recovery_write_fn)(struct dm_target *, unsigned long, void *, size_t, struct iov_iter *);
+
+struct target_type {
+	uint64_t features;
+	const char *name;
+	struct module *module;
+	unsigned int version[3];
+	dm_ctr_fn ctr;
+	dm_dtr_fn dtr;
+	dm_map_fn map;
+	dm_clone_and_map_request_fn clone_and_map_rq;
+	dm_release_clone_request_fn release_clone_rq;
+	dm_endio_fn end_io;
+	dm_request_endio_fn rq_end_io;
+	dm_presuspend_fn presuspend;
+	dm_presuspend_undo_fn presuspend_undo;
+	dm_postsuspend_fn postsuspend;
+	dm_preresume_fn preresume;
+	dm_resume_fn resume;
+	dm_status_fn status;
+	dm_message_fn message;
+	dm_prepare_ioctl_fn prepare_ioctl;
+	dm_report_zones_fn report_zones;
+	dm_busy_fn busy;
+	dm_iterate_devices_fn iterate_devices;
+	dm_io_hints_fn io_hints;
+	dm_dax_direct_access_fn direct_access;
+	dm_dax_zero_page_range_fn dax_zero_page_range;
+	dm_dax_recovery_write_fn dax_recovery_write;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	struct list_head list;
+};
+
+union map_info___2 {
+	void *ptr;
+};
+
+struct dm_report_zones_args {
+	struct dm_target *tgt;
+	sector_t next_sector;
+	void *orig_data;
+	report_zones_cb orig_cb;
+	unsigned int zone_idx;
+	sector_t start;
+};
+
+struct dm_dev {
+	struct block_device *bdev;
+	struct dax_device *dax_dev;
+	blk_mode_t mode;
+	char name[16];
+};
+
+enum dm_queue_mode {
+	DM_TYPE_NONE = 0,
+	DM_TYPE_BIO_BASED = 1,
+	DM_TYPE_REQUEST_BASED = 2,
+	DM_TYPE_DAX_BIO_BASED = 3,
+};
+
+struct dm_stats_last_position;
+
+struct dm_stats {
+	struct mutex mutex;
+	struct list_head list;
+	struct dm_stats_last_position __attribute__((btf_type_tag("percpu"))) *last;
+	bool precise_timestamps;
+};
+
+struct dm_kobject_holder {
+	struct kobject kobj;
+	struct completion completion;
+};
+
+struct dm_io;
+
+struct dm_md_mempools;
+
+struct mapped_device {
+	struct mutex suspend_lock;
+	struct mutex table_devices_lock;
+	struct list_head table_devices;
+	void __attribute__((btf_type_tag("rcu"))) *map;
+	unsigned long flags;
+	struct mutex type_lock;
+	enum dm_queue_mode type;
+	int numa_node_id;
+	struct request_queue *queue;
+	atomic_t holders;
+	atomic_t open_count;
+	struct dm_target *immutable_target;
+	struct target_type *immutable_target_type;
+	char name[16];
+	struct gendisk *disk;
+	struct dax_device *dax_dev;
+	wait_queue_head_t wait;
+	unsigned long __attribute__((btf_type_tag("percpu"))) *pending_io;
+	struct hd_geometry geometry;
+	struct workqueue_struct *wq;
+	struct work_struct work;
+	spinlock_t deferred_lock;
+	struct bio_list deferred;
+	struct work_struct requeue_work;
+	struct dm_io *requeue_list;
+	void *interface_ptr;
+	wait_queue_head_t eventq;
+	atomic_t event_nr;
+	atomic_t uevent_seq;
+	struct list_head uevent_list;
+	spinlock_t uevent_lock;
+	bool init_tio_pdu: 1;
+	struct blk_mq_tag_set *tag_set;
+	struct dm_stats stats;
+	unsigned int internal_suspend_count;
+	int swap_bios;
+	struct semaphore swap_bios_semaphore;
+	struct mutex swap_bios_lock;
+	struct dm_md_mempools *mempools;
+	struct dm_kobject_holder kobj_holder;
+	struct srcu_struct io_barrier;
+	unsigned int nr_zones;
+	unsigned int *zwp_offset;
+};
+
+struct dm_table {
+	struct mapped_device *md;
+	enum dm_queue_mode type;
+	unsigned int depth;
+	unsigned int counts[16];
+	sector_t *index[16];
+	unsigned int num_targets;
+	unsigned int num_allocated;
+	sector_t *highs;
+	struct dm_target *targets;
+	struct target_type *immutable_target_type;
+	bool integrity_supported: 1;
+	bool singleton: 1;
+	bool integrity_added: 1;
+	bool flush_bypasses_map: 1;
+	blk_mode_t mode;
+	struct list_head devices;
+	struct rw_semaphore devices_lock;
+	void (*event_fn)(void *);
+	void *event_context;
+	struct dm_md_mempools *mempools;
+	struct blk_crypto_profile *crypto_profile;
+};
+
+struct dm_md_mempools {
+	struct bio_set bs;
+	struct bio_set io_bs;
+};
+
+typedef u16 blk_short_t;
+
+struct dm_stats_aux {
+	bool merged;
+	unsigned long long duration_ns;
+};
+
+struct dm_target_io {
+	unsigned short magic;
+	blk_short_t flags;
+	unsigned int target_bio_nr;
+	struct dm_io *io;
+	struct dm_target *ti;
+	unsigned int *len_ptr;
+	sector_t old_sector;
+	struct bio clone;
+};
+
+struct dm_io {
+	unsigned short magic;
+	blk_short_t flags;
+	spinlock_t lock;
+	unsigned long start_time;
+	void *data;
+	struct dm_io *next;
+	struct dm_stats_aux stats_aux;
+	blk_status_t status;
+	atomic_t io_count;
+	struct mapped_device *md;
+	struct bio *orig_bio;
+	unsigned int sector_offset;
+	unsigned int sectors;
+	struct dm_target_io tio;
+};
+
+struct dm_stats_last_position {
+	sector_t last_sector;
+	unsigned int last_rw;
+};
+
+struct orig_bio_details {
+	enum req_op op;
+	unsigned int nr_sectors;
+};
+
+enum {
+	DM_TIO_INSIDE_DM_IO = 0,
+	DM_TIO_IS_DUPLICATE_BIO = 1,
+};
+
+enum {
+	DM_IO_ACCOUNTED = 0,
+	DM_IO_WAS_SPLIT = 1,
+	DM_IO_BLK_STAT = 2,
+};
+
+struct table_device {
+	struct list_head list;
+	refcount_t count;
+	struct dm_dev dm_dev;
+};
+
+struct dm_dev_internal {
+	struct list_head list;
+	refcount_t count;
+	struct dm_dev *dm_dev;
+};
+
+struct clone_info {
+	struct dm_table *map;
+	struct bio *bio;
+	struct dm_io *io;
+	sector_t sector;
+	unsigned int sector_count;
+	bool is_abnormal_io: 1;
+	bool submit_as_polled: 1;
+};
+
+struct dm_pr {
+	u64 old_key;
+	u64 new_key;
+	u32 flags;
+	bool abort;
+	bool fail_early;
+	int ret;
+	enum pr_type type;
+	struct pr_keys *read_keys;
+	struct pr_held_reservation *rsv;
+};
+
+enum suspend_mode {
+	PRESUSPEND = 0,
+	PRESUSPEND_UNDO = 1,
+	POSTSUSPEND = 2,
+};
+
+struct dm_crypto_profile {
+	struct blk_crypto_profile profile;
+	struct mapped_device *md;
+};
+
+struct dm_arg_set {
+	unsigned int argc;
+	char **argv;
+};
+
+struct dm_arg {
+	unsigned int min;
+	unsigned int max;
+	char *error;
+};
+
+struct dm_derive_sw_secret_args {
+	const u8 *eph_key;
+	size_t eph_key_size;
+	u8 *sw_secret;
+	int err;
+};
+
+struct linear_c {
+	struct dm_dev *dev;
+	sector_t start;
+};
+
+struct stripe {
+	struct dm_dev *dev;
+	sector_t physical_start;
+	atomic_t error_count;
+};
+
+struct stripe_c {
+	uint32_t stripes;
+	int stripes_shift;
+	sector_t stripe_width;
+	uint32_t chunk_size;
+	int chunk_size_shift;
+	struct dm_target *ti;
+	struct work_struct trigger_event;
+	struct stripe stripe[0];
+};
+
+struct dm_ioctl;
+
+typedef int (*ioctl_fn___2)(struct file *, struct dm_ioctl *, size_t);
+
+struct dm_ioctl {
+	__u32 version[3];
+	__u32 data_size;
+	__u32 data_start;
+	__u32 target_count;
+	__s32 open_count;
+	__u32 flags;
+	__u32 event_nr;
+	__u32 padding;
+	__u64 dev;
+	char name[128];
+	char uuid[129];
+	char data[7];
+};
+
+enum {
+	DM_VERSION_CMD = 0,
+	DM_REMOVE_ALL_CMD = 1,
+	DM_LIST_DEVICES_CMD = 2,
+	DM_DEV_CREATE_CMD = 3,
+	DM_DEV_REMOVE_CMD = 4,
+	DM_DEV_RENAME_CMD = 5,
+	DM_DEV_SUSPEND_CMD = 6,
+	DM_DEV_STATUS_CMD = 7,
+	DM_DEV_WAIT_CMD = 8,
+	DM_TABLE_LOAD_CMD = 9,
+	DM_TABLE_CLEAR_CMD = 10,
+	DM_TABLE_DEPS_CMD = 11,
+	DM_TABLE_STATUS_CMD = 12,
+	DM_LIST_VERSIONS_CMD = 13,
+	DM_TARGET_MSG_CMD = 14,
+	DM_DEV_SET_GEOMETRY_CMD = 15,
+	DM_DEV_ARM_POLL_CMD = 16,
+	DM_GET_TARGET_VERSION_CMD = 17,
+};
+
+struct hash_cell {
+	struct rb_node name_node;
+	struct rb_node uuid_node;
+	bool name_set;
+	bool uuid_set;
+	char *name;
+	char *uuid;
+	struct mapped_device *md;
+	struct dm_table *new_map;
+};
+
+struct dm_target_spec {
+	__u64 sector_start;
+	__u64 length;
+	__s32 status;
+	__u32 next;
+	char target_type[16];
+};
+
+struct dm_target_msg {
+	__u64 sector;
+	char message[0];
+};
+
+struct dm_target_deps {
+	__u32 count;
+	__u32 padding;
+	__u64 dev[0];
+};
+
+struct dm_target_versions;
+
+struct vers_iter {
+	size_t param_size;
+	struct dm_target_versions *vers;
+	struct dm_target_versions *old_vers;
+	char *end;
+	uint32_t flags;
+};
+
+struct dm_target_versions {
+	__u32 next;
+	__u32 version[3];
+	char name[0];
+};
+
+struct dm_file {
+	volatile unsigned int global_event_nr;
+};
+
+struct dm_name_list {
+	__u64 dev;
+	__u32 next;
+	char name[0];
+};
+
+enum dm_io_mem_type {
+	DM_IO_PAGE_LIST = 0,
+	DM_IO_BIO = 1,
+	DM_IO_VMA = 2,
+	DM_IO_KMEM = 3,
+};
+
+struct page_list;
+
+struct dm_io_memory {
+	enum dm_io_mem_type type;
+	unsigned int offset;
+	union {
+		struct page_list *pl;
+		struct bio *bio;
+		void *vma;
+		void *addr;
+	} ptr;
+};
+
+typedef void (*io_notify_fn)(unsigned long, void *);
+
+struct dm_io_notify {
+	io_notify_fn fn;
+	void *context;
+};
+
+struct dm_io_client;
+
+struct dm_io_request {
+	blk_opf_t bi_opf;
+	struct dm_io_memory mem;
+	struct dm_io_notify notify;
+	struct dm_io_client *client;
+};
+
+struct page_list {
+	struct page_list *next;
+	struct page *page;
+};
+
+struct dm_io_client {
+	mempool_t pool;
+	struct bio_set bios;
+};
+
+struct dpages {
+	void (*get_page)(struct dpages *, struct page **, unsigned long *, unsigned int *);
+	void (*next_page)(struct dpages *);
+	union {
+		unsigned int context_u;
+		struct bvec_iter context_bi;
+	};
+	void *context_ptr;
+	void *vma_invalidate_address;
+	unsigned long vma_invalidate_size;
+};
+
+struct dm_io_region {
+	struct block_device *bdev;
+	sector_t sector;
+	sector_t count;
+};
+
+struct io {
+	unsigned long error_bits;
+	atomic_t count;
+	struct dm_io_client *client;
+	io_notify_fn callback;
+	void *context;
+	void *vma_invalidate_address;
+	unsigned long vma_invalidate_size;
+	long: 64;
+};
+
+struct sync_io {
+	unsigned long error_bits;
+	struct completion wait;
+};
+
+struct dm_kcopyd_throttle;
+
+struct dm_kcopyd_client {
+	struct page_list *pages;
+	unsigned int nr_reserved_pages;
+	unsigned int nr_free_pages;
+	unsigned int sub_job_size;
+	struct dm_io_client *io_client;
+	wait_queue_head_t destroyq;
+	mempool_t job_pool;
+	struct workqueue_struct *kcopyd_wq;
+	struct work_struct kcopyd_work;
+	struct dm_kcopyd_throttle *throttle;
+	atomic_t nr_jobs;
+	spinlock_t job_lock;
+	struct list_head callback_jobs;
+	struct list_head complete_jobs;
+	struct list_head io_jobs;
+	struct list_head pages_jobs;
+};
+
+struct dm_kcopyd_throttle {
+	unsigned int throttle;
+	unsigned int num_io_jobs;
+	unsigned int io_period;
+	unsigned int total_period;
+	unsigned int last_jiffies;
+};
+
+typedef void (*dm_kcopyd_notify_fn)(int, unsigned long, void *);
+
+struct kcopyd_job {
+	struct dm_kcopyd_client *kc;
+	struct list_head list;
+	unsigned int flags;
+	int read_err;
+	unsigned long write_err;
+	enum req_op op;
+	struct dm_io_region source;
+	unsigned int num_dests;
+	struct dm_io_region dests[8];
+	struct page_list *pages;
+	dm_kcopyd_notify_fn fn;
+	void *context;
+	struct mutex lock;
+	atomic_t sub_jobs;
+	sector_t progress;
+	sector_t write_offset;
+	struct kcopyd_job *master_job;
+};
+
+struct dm_sysfs_attr {
+	struct attribute attr;
+	ssize_t (*show)(struct mapped_device *, char *);
+	ssize_t (*store)(struct mapped_device *, const char *, size_t);
+};
+
+struct dm_stat_percpu {
+	unsigned long long sectors[2];
+	unsigned long long ios[2];
+	unsigned long long merges[2];
+	unsigned long long ticks[2];
+	unsigned long long io_ticks[2];
+	unsigned long long io_ticks_total;
+	unsigned long long time_in_queue;
+	unsigned long long *histogram;
+};
+
+struct dm_stat_shared {
+	atomic_t in_flight[2];
+	unsigned long long stamp;
+	struct dm_stat_percpu tmp;
+};
+
+struct dm_stat {
+	struct list_head list_entry;
+	int id;
+	unsigned int stat_flags;
+	size_t n_entries;
+	sector_t start;
+	sector_t end;
+	sector_t step;
+	unsigned int n_histogram_entries;
+	unsigned long long *histogram_boundaries;
+	const char *program_id;
+	const char *aux_data;
+	struct callback_head callback_head;
+	size_t shared_alloc_size;
+	size_t percpu_alloc_size;
+	size_t histogram_alloc_size;
+	struct dm_stat_percpu *stat_percpu[32];
+	struct dm_stat_shared stat_shared[0];
+};
+
+struct dm_rq_target_io;
+
+struct dm_rq_clone_bio_info {
+	struct bio *orig;
+	struct dm_rq_target_io *tio;
+	struct bio clone;
+};
+
+struct dm_rq_target_io {
+	struct mapped_device *md;
+	struct dm_target *ti;
+	struct request *orig;
+	struct request *clone;
+	struct kthread_work work;
+	blk_status_t error;
+	union map_info___2 info;
+	struct dm_stats_aux stats_aux;
+	unsigned long duration_jiffies;
+	unsigned int n_sectors;
+	unsigned int completed;
+};
+
+enum new_flag {
+	NF_FRESH = 0,
+	NF_READ = 1,
+	NF_GET = 2,
+	NF_PREFETCH = 3,
+};
+
+enum evict_result {
+	ER_EVICT = 0,
+	ER_DONT_EVICT = 1,
+	ER_STOP = 2,
+};
+
+enum data_mode {
+	DATA_MODE_SLAB = 0,
+	DATA_MODE_GET_FREE_PAGES = 1,
+	DATA_MODE_VMALLOC = 2,
+	DATA_MODE_LIMIT = 3,
+};
+
+enum it_action {
+	IT_NEXT = 0,
+	IT_COMPLETE = 1,
+};
+
+struct lru_entry {
+	struct list_head list;
+	atomic_t referenced;
+};
+
+struct dm_bufio_client;
+
+struct dm_buffer {
+	struct rb_node node;
+	sector_t block;
+	void *data;
+	unsigned char data_mode;
+	atomic_t hold_count;
+	unsigned long last_accessed;
+	unsigned long state;
+	struct lru_entry lru;
+	unsigned char list_mode;
+	blk_status_t read_error;
+	blk_status_t write_error;
+	unsigned int dirty_start;
+	unsigned int dirty_end;
+	unsigned int write_start;
+	unsigned int write_end;
+	struct list_head write_list;
+	struct dm_bufio_client *c;
+	void (*end_io)(struct dm_buffer *, blk_status_t);
+};
+
+struct lru {
+	struct list_head *cursor;
+	unsigned long count;
+	struct list_head iterators;
+};
+
+struct buffer_tree {
+	union {
+		struct rw_semaphore lock;
+		rwlock_t spinlock;
+	} u;
+	struct rb_root root;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct dm_buffer_cache {
+	struct lru lru[2];
+	unsigned int num_locks;
+	bool no_sleep;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct buffer_tree trees[0];
+};
+
+struct dm_bufio_client {
+	struct block_device *bdev;
+	unsigned int block_size;
+	s8 sectors_per_block_bits;
+	bool no_sleep;
+	struct mutex lock;
+	spinlock_t spinlock;
+	int async_write_error;
+	void (*alloc_callback)(struct dm_buffer *);
+	void (*write_callback)(struct dm_buffer *);
+	struct kmem_cache *slab_buffer;
+	struct kmem_cache *slab_cache;
+	struct dm_io_client *dm_io;
+	struct list_head reserved_buffers;
+	unsigned int need_reserved_buffers;
+	unsigned int minimum_buffers;
+	sector_t start;
+	struct shrinker shrinker;
+	struct work_struct shrink_work;
+	atomic_long_t need_shrink;
+	wait_queue_head_t free_buffer_wait;
+	struct list_head client_list;
+	unsigned long oldest_buffer;
+	long: 64;
+	struct dm_buffer_cache cache;
+};
+
+struct lru_iter {
+	struct lru *lru;
+	struct list_head list;
+	struct lru_entry *stop;
+	struct lru_entry *e;
+};
+
+struct lock_history {
+	struct dm_buffer_cache *cache;
+	bool write;
+	unsigned int previous;
+	unsigned int no_previous;
+};
+
+typedef enum evict_result (*b_predicate)(struct dm_buffer *, void *);
+
+struct evict_wrapper {
+	struct lock_history *lh;
+	b_predicate pred;
+	void *context;
+};
+
+typedef bool (*iter_predicate)(struct lru_entry *, void *);
+
+typedef void (*b_release)(struct dm_buffer *);
+
+typedef enum it_action (*iter_fn)(struct dm_buffer *, void *);
+
+struct evict_params {
+	gfp_t gfp;
+	unsigned long age_hz;
+	unsigned long last_accessed;
+};
+
+struct write_context {
+	int no_wait;
+	struct list_head *write_list;
+};
+
+typedef enum evict_result (*le_predicate)(struct lru_entry *, void *);
+
+struct crypt_config;
+
+struct dm_crypt_request;
+
+struct crypt_iv_operations {
+	int (*ctr)(struct crypt_config *, struct dm_target *, const char *);
+	void (*dtr)(struct crypt_config *);
+	int (*init)(struct crypt_config *);
+	int (*wipe)(struct crypt_config *);
+	int (*generator)(struct crypt_config *, u8 *, struct dm_crypt_request *);
+	int (*post)(struct crypt_config *, u8 *, struct dm_crypt_request *);
+};
+
+struct iv_benbi_private {
+	int shift;
+};
+
+struct iv_lmk_private {
+	struct crypto_shash *hash_tfm;
+	u8 *seed;
+};
+
+struct iv_tcw_private {
+	struct crypto_shash *crc32_tfm;
+	u8 *iv_seed;
+	u8 *whitening;
+};
+
+struct iv_elephant_private {
+	struct crypto_skcipher *tfm;
+};
+
+struct crypt_config {
+	struct dm_dev *dev;
+	sector_t start;
+	struct percpu_counter n_allocated_pages;
+	struct workqueue_struct *io_queue;
+	struct workqueue_struct *crypt_queue;
+	spinlock_t write_thread_lock;
+	struct task_struct *write_thread;
+	struct rb_root write_tree;
+	char *cipher_string;
+	char *cipher_auth;
+	char *key_string;
+	const struct crypt_iv_operations *iv_gen_ops;
+	union {
+		struct iv_benbi_private benbi;
+		struct iv_lmk_private lmk;
+		struct iv_tcw_private tcw;
+		struct iv_elephant_private elephant;
+	} iv_gen_private;
+	u64 iv_offset;
+	unsigned int iv_size;
+	unsigned short sector_size;
+	unsigned char sector_shift;
+	union {
+		struct crypto_skcipher **tfms;
+		struct crypto_aead **tfms_aead;
+	} cipher_tfm;
+	unsigned int tfms_count;
+	unsigned long cipher_flags;
+	unsigned int dmreq_start;
+	unsigned int per_bio_data_size;
+	unsigned long flags;
+	unsigned int key_size;
+	unsigned int key_parts;
+	unsigned int key_extra_size;
+	unsigned int key_mac_size;
+	unsigned int integrity_tag_size;
+	unsigned int integrity_iv_size;
+	unsigned int on_disk_tag_size;
+	unsigned int tag_pool_max_sectors;
+	mempool_t tag_pool;
+	mempool_t req_pool;
+	mempool_t page_pool;
+	struct bio_set bs;
+	struct mutex bio_alloc_lock;
+	u8 *authenc_key;
+	u8 key[0];
+};
+
+struct convert_context;
+
+struct dm_crypt_request {
+	struct convert_context *ctx;
+	struct scatterlist sg_in[4];
+	struct scatterlist sg_out[4];
+	u64 iv_sector;
+};
+
+struct convert_context {
+	struct completion restart;
+	struct bio *bio_in;
+	struct bvec_iter iter_in;
+	struct bio *bio_out;
+	struct bvec_iter iter_out;
+	atomic_t cc_pending;
+	u64 cc_sector;
+	union {
+		struct skcipher_request *req;
+		struct aead_request *req_aead;
+	} r;
+	bool aead_recheck;
+	bool aead_failed;
+};
+
+enum flags {
+	DM_CRYPT_SUSPENDED = 0,
+	DM_CRYPT_KEY_VALID = 1,
+	DM_CRYPT_SAME_CPU = 2,
+	DM_CRYPT_NO_OFFLOAD = 3,
+	DM_CRYPT_NO_READ_WORKQUEUE = 4,
+	DM_CRYPT_NO_WRITE_WORKQUEUE = 5,
+	DM_CRYPT_WRITE_INLINE = 6,
+};
+
+enum cipher_flags {
+	CRYPT_MODE_INTEGRITY_AEAD = 0,
+	CRYPT_IV_LARGE_SECTORS = 1,
+	CRYPT_ENCRYPT_PREPROCESS = 2,
+};
+
+struct dm_crypt_io {
+	struct crypt_config *cc;
+	struct bio *base_bio;
+	u8 *integrity_metadata;
+	bool integrity_metadata_from_pool: 1;
+	struct work_struct work;
+	struct convert_context ctx;
+	atomic_t io_pending;
+	blk_status_t error;
+	sector_t sector;
+	struct bvec_iter saved_bi_iter;
+	struct rb_node rb_node;
+};
+
+struct dm_default_key_cipher {
+	const char *name;
+	enum blk_crypto_mode_num mode_num;
+	int key_size;
+};
+
+struct default_key_c {
+	struct dm_dev *dev;
+	sector_t start;
+	const char *cipher_string;
+	u64 iv_offset;
+	unsigned int sector_size;
+	unsigned int sector_bits;
+	struct blk_crypto_key key;
+	enum blk_crypto_key_type key_type;
+	u64 max_dun;
+};
+
+struct dm_exception_table {
+	uint32_t hash_mask;
+	unsigned int hash_shift;
+	struct hlist_bl_head *table;
+};
+
+typedef sector_t chunk_t;
+
+struct dm_exception_store;
+
+struct dm_snapshot {
+	struct rw_semaphore lock;
+	struct dm_dev *origin;
+	struct dm_dev *cow;
+	struct dm_target *ti;
+	struct list_head list;
+	int valid;
+	int snapshot_overflowed;
+	int active;
+	atomic_t pending_exceptions_count;
+	spinlock_t pe_allocation_lock;
+	sector_t exception_start_sequence;
+	sector_t exception_complete_sequence;
+	struct rb_root out_of_order_tree;
+	mempool_t pending_pool;
+	struct dm_exception_table pending;
+	struct dm_exception_table complete;
+	spinlock_t pe_lock;
+	spinlock_t tracked_chunk_lock;
+	struct hlist_head tracked_chunk_hash[16];
+	struct dm_exception_store *store;
+	unsigned int in_progress;
+	struct wait_queue_head in_progress_wait;
+	struct dm_kcopyd_client *kcopyd_client;
+	unsigned long state_bits;
+	chunk_t first_merging_chunk;
+	int num_merging_chunks;
+	bool merge_failed: 1;
+	bool discard_zeroes_cow: 1;
+	bool discard_passdown_origin: 1;
+	struct bio_list bios_queued_during_merge;
+};
+
+struct dm_exception_store_type;
+
+struct dm_exception_store {
+	struct dm_exception_store_type *type;
+	struct dm_snapshot *snap;
+	unsigned int chunk_size;
+	unsigned int chunk_mask;
+	unsigned int chunk_shift;
+	void *context;
+	bool userspace_supports_overflow;
+};
+
+struct dm_exception;
+
+struct dm_exception_store_type {
+	const char *name;
+	struct module *module;
+	int (*ctr)(struct dm_exception_store *, char *);
+	void (*dtr)(struct dm_exception_store *);
+	int (*read_metadata)(struct dm_exception_store *, int (*)(void *, chunk_t, chunk_t), void *);
+	int (*prepare_exception)(struct dm_exception_store *, struct dm_exception *);
+	void (*commit_exception)(struct dm_exception_store *, struct dm_exception *, int, void (*)(void *, int), void *);
+	int (*prepare_merge)(struct dm_exception_store *, chunk_t *, chunk_t *);
+	int (*commit_merge)(struct dm_exception_store *, int);
+	void (*drop_snapshot)(struct dm_exception_store *);
+	unsigned int (*status)(struct dm_exception_store *, status_type_t, char *, unsigned int);
+	void (*usage)(struct dm_exception_store *, sector_t *, sector_t *, sector_t *);
+	struct list_head list;
+};
+
+struct dm_exception {
+	struct hlist_bl_node hash_list;
+	chunk_t old_chunk;
+	chunk_t new_chunk;
+};
+
+struct origin {
+	struct block_device *bdev;
+	struct list_head hash_list;
+	struct list_head snapshots;
+};
+
+struct dm_snap_pending_exception {
+	struct dm_exception e;
+	struct bio_list origin_bios;
+	struct bio_list snapshot_bios;
+	struct dm_snapshot *snap;
+	int started;
+	int copy_error;
+	sector_t exception_sequence;
+	struct rb_node out_of_order_node;
+	struct bio *full_bio;
+	bio_end_io_t *full_bio_end_io;
+};
+
+struct dm_snap_tracked_chunk {
+	struct hlist_node node;
+	chunk_t chunk;
+};
+
+struct dm_origin {
+	struct dm_dev *dev;
+	struct dm_target *ti;
+	unsigned int split_boundary;
+	struct list_head hash_list;
+};
+
+struct dm_exception_table_lock {
+	struct hlist_bl_head *complete_slot;
+	struct hlist_bl_head *pending_slot;
+};
+
+struct transient_c {
+	sector_t next_free;
+};
+
+struct mdata_req {
+	struct dm_io_region *where;
+	struct dm_io_request *io_req;
+	struct work_struct work;
+	int result;
+};
+
+struct disk_exception {
+	__le64 old_chunk;
+	__le64 new_chunk;
+};
+
+struct commit_callback;
+
+struct pstore {
+	struct dm_exception_store *store;
+	int version;
+	int valid;
+	uint32_t exceptions_per_area;
+	void *area;
+	void *zero_area;
+	void *header_area;
+	chunk_t current_area;
+	chunk_t next_free;
+	uint32_t current_committed;
+	atomic_t pending_count;
+	uint32_t callback_count;
+	struct commit_callback *callbacks;
+	struct dm_io_client *io_client;
+	struct workqueue_struct *metadata_wq;
+};
+
+struct commit_callback {
+	void (*callback)(void *, int);
+	void *context;
+};
+
+struct disk_header {
+	__le32 magic;
+	__le32 valid;
+	__le32 version;
+	__le32 chunk_size;
+};
+
+struct core_exception {
+	uint64_t old_chunk;
+	uint64_t new_chunk;
+};
+
+enum verity_mode {
+	DM_VERITY_MODE_EIO = 0,
+	DM_VERITY_MODE_LOGGING = 1,
+	DM_VERITY_MODE_RESTART = 2,
+	DM_VERITY_MODE_PANIC = 3,
+};
+
+enum verity_block_type {
+	DM_VERITY_BLOCK_TYPE_DATA = 0,
+	DM_VERITY_BLOCK_TYPE_METADATA = 1,
+};
+
+struct dm_verity_fec_io {
+	struct rs_control *rs;
+	int erasures[253];
+	u8 *bufs[256];
+	unsigned int nbufs;
+	u8 *output;
+	unsigned int level;
+};
+
+struct dm_verity_fec;
+
+struct dm_verity {
+	struct dm_dev *data_dev;
+	struct dm_dev *hash_dev;
+	struct dm_target *ti;
+	struct dm_bufio_client *bufio;
+	char *alg_name;
+	struct crypto_ahash *ahash_tfm;
+	struct crypto_shash *shash_tfm;
+	u8 *root_digest;
+	u8 *salt;
+	u8 *initial_hashstate;
+	u8 *zero_digest;
+	unsigned int salt_size;
+	sector_t data_start;
+	sector_t hash_start;
+	sector_t data_blocks;
+	sector_t hash_blocks;
+	unsigned char data_dev_block_bits;
+	unsigned char hash_dev_block_bits;
+	unsigned char hash_per_block_bits;
+	unsigned char levels;
+	unsigned char version;
+	bool hash_failed: 1;
+	bool use_tasklet: 1;
+	unsigned char mb_max_msgs;
+	unsigned int digest_size;
+	unsigned int hash_reqsize;
+	enum verity_mode mode;
+	unsigned int corrupted_errs;
+	struct workqueue_struct *verify_wq;
+	sector_t hash_level_block[63];
+	struct dm_verity_fec *fec;
+	unsigned long *validated_blocks;
+	char *signature_key_desc;
+	struct dm_io_client *io;
+	mempool_t recheck_pool;
+};
+
+struct dm_verity_fec {
+	struct dm_dev *dev;
+	struct dm_bufio_client *data_bufio;
+	struct dm_bufio_client *bufio;
+	size_t io_size;
+	sector_t start;
+	sector_t blocks;
+	sector_t rounds;
+	sector_t hash_blocks;
+	unsigned char roots;
+	unsigned char rsn;
+	mempool_t rs_pool;
+	mempool_t prealloc_pool;
+	mempool_t extra_pool;
+	mempool_t output_pool;
+	struct kmem_cache *cache;
+};
+
+struct pending_block {
+	void *data;
+	sector_t blkno;
+	u8 want_digest[64];
+	u8 real_digest[64];
+};
+
+struct dm_verity_io {
+	struct dm_verity *v;
+	bio_end_io_t *orig_bi_end_io;
+	struct bvec_iter iter;
+	sector_t block;
+	unsigned int n_blocks;
+	bool in_tasklet;
+	struct work_struct work;
+	u8 tmp_digest[64];
+	int num_pending;
+	struct pending_block pending_blocks[2];
+};
+
+struct dm_verity_prefetch_work {
+	struct work_struct work;
+	struct dm_verity *v;
+	unsigned short ioprio;
+	sector_t block;
+	unsigned int n_blocks;
+};
+
+struct buffer_aux {
+	int hash_verified;
+};
+
+struct dm_verity_sig_opts {
+	unsigned int sig_size;
+	u8 *sig;
+};
+
+struct dm_user_message {
+	__u64 seq;
+	__u64 type;
+	__u64 flags;
+	__u64 sector;
+	__u64 len;
+	__u8 buf[0];
+};
+
+struct target;
+
+struct message {
+	struct dm_user_message msg;
+	struct bio *bio;
+	size_t posn_to_user;
+	size_t total_to_user;
+	size_t posn_from_user;
+	size_t total_from_user;
+	struct list_head from_user;
+	struct list_head to_user;
+	u64 return_type;
+	u64 return_flags;
+	struct delayed_work work;
+	bool delayed;
+	struct target *t;
+};
+
+struct target {
+	struct mutex lock;
+	struct wait_queue_head wq;
+	mempool_t message_pool;
+	u64 next_seq_to_map;
+	u64 next_seq_to_user;
+	struct list_head to_user;
+	struct miscdevice miscdev;
+	struct kref references;
+	int dm_destroyed;
+	bool daemon_terminated;
+};
+
+struct channel {
+	struct target *target;
+	struct mutex lock;
+	struct message *cur_to_user;
+	struct message *cur_from_user;
+	ssize_t to_user_error;
+	ssize_t from_user_error;
+	struct list_head from_user;
+	struct message scratch_message_from_user;
+};
+
+enum scrub_type {
+	SCRUB_UNKNOWN = 0,
+	SCRUB_NONE = 1,
+	SCRUB_SW_PROG = 2,
+	SCRUB_SW_SRC = 3,
+	SCRUB_SW_PROG_SRC = 4,
+	SCRUB_SW_TUNABLE = 5,
+	SCRUB_HW_PROG = 6,
+	SCRUB_HW_SRC = 7,
+	SCRUB_HW_PROG_SRC = 8,
+	SCRUB_HW_TUNABLE = 9,
+};
+
+enum edac_mc_layer_type {
+	EDAC_MC_LAYER_BRANCH = 0,
+	EDAC_MC_LAYER_CHANNEL = 1,
+	EDAC_MC_LAYER_SLOT = 2,
+	EDAC_MC_LAYER_CHIP_SELECT = 3,
+	EDAC_MC_LAYER_ALL_MEM = 4,
+};
+
+enum hw_event_mc_err_type {
+	HW_EVENT_ERR_CORRECTED = 0,
+	HW_EVENT_ERR_UNCORRECTED = 1,
+	HW_EVENT_ERR_DEFERRED = 2,
+	HW_EVENT_ERR_FATAL = 3,
+	HW_EVENT_ERR_INFO = 4,
+};
+
+enum dev_type {
+	DEV_UNKNOWN = 0,
+	DEV_X1 = 1,
+	DEV_X2 = 2,
+	DEV_X4 = 3,
+	DEV_X8 = 4,
+	DEV_X16 = 5,
+	DEV_X32 = 6,
+	DEV_X64 = 7,
+};
+
+enum mem_type___2 {
+	MEM_EMPTY = 0,
+	MEM_RESERVED = 1,
+	MEM_UNKNOWN = 2,
+	MEM_FPM = 3,
+	MEM_EDO = 4,
+	MEM_BEDO = 5,
+	MEM_SDR = 6,
+	MEM_RDR = 7,
+	MEM_DDR = 8,
+	MEM_RDDR = 9,
+	MEM_RMBS = 10,
+	MEM_DDR2 = 11,
+	MEM_FB_DDR2 = 12,
+	MEM_RDDR2 = 13,
+	MEM_XDR = 14,
+	MEM_DDR3 = 15,
+	MEM_RDDR3 = 16,
+	MEM_LRDDR3 = 17,
+	MEM_LPDDR3 = 18,
+	MEM_DDR4 = 19,
+	MEM_RDDR4 = 20,
+	MEM_LRDDR4 = 21,
+	MEM_LPDDR4 = 22,
+	MEM_DDR5 = 23,
+	MEM_RDDR5 = 24,
+	MEM_LRDDR5 = 25,
+	MEM_NVDIMM = 26,
+	MEM_WIO2 = 27,
+	MEM_HBM2 = 28,
+};
+
+enum edac_type {
+	EDAC_UNKNOWN = 0,
+	EDAC_NONE = 1,
+	EDAC_RESERVED = 2,
+	EDAC_PARITY = 3,
+	EDAC_EC = 4,
+	EDAC_SECDED = 5,
+	EDAC_S2ECD2ED = 6,
+	EDAC_S4ECD4ED = 7,
+	EDAC_S8ECD8ED = 8,
+	EDAC_S16ECD16ED = 9,
+};
+
+struct mcidev_sysfs_attribute;
+
+struct edac_raw_error_desc {
+	char location[256];
+	char label[296];
+	long grain;
+	u16 error_count;
+	enum hw_event_mc_err_type type;
+	int top_layer;
+	int mid_layer;
+	int low_layer;
+	unsigned long page_frame_number;
+	unsigned long offset_in_page;
+	unsigned long syndrome;
+	const char *msg;
+	const char *other_detail;
+};
+
+struct csrow_info;
+
+struct edac_mc_layer;
+
+struct dimm_info;
+
+struct mem_ctl_info {
+	struct device dev;
+	struct bus_type *bus;
+	struct list_head link;
+	struct module *owner;
+	unsigned long mtype_cap;
+	unsigned long edac_ctl_cap;
+	unsigned long edac_cap;
+	unsigned long scrub_cap;
+	enum scrub_type scrub_mode;
+	int (*set_sdram_scrub_rate)(struct mem_ctl_info *, u32);
+	int (*get_sdram_scrub_rate)(struct mem_ctl_info *);
+	void (*edac_check)(struct mem_ctl_info *);
+	unsigned long (*ctl_page_to_phys)(struct mem_ctl_info *, unsigned long);
+	int mc_idx;
+	struct csrow_info **csrows;
+	unsigned int nr_csrows;
+	unsigned int num_cschannel;
+	unsigned int n_layers;
+	struct edac_mc_layer *layers;
+	bool csbased;
+	unsigned int tot_dimms;
+	struct dimm_info **dimms;
+	struct device *pdev;
+	const char *mod_name;
+	const char *ctl_name;
+	const char *dev_name;
+	void *pvt_info;
+	unsigned long start_time;
+	u32 ce_noinfo_count;
+	u32 ue_noinfo_count;
+	u32 ue_mc;
+	u32 ce_mc;
+	struct completion complete;
+	const struct mcidev_sysfs_attribute *mc_driver_sysfs_attributes;
+	struct delayed_work work;
+	struct edac_raw_error_desc error_desc;
+	int op_state;
+	struct dentry *debugfs;
+	u8 fake_inject_layer[3];
+	bool fake_inject_ue;
+	u16 fake_inject_count;
+};
+
+struct rank_info;
+
+struct csrow_info {
+	struct device dev;
+	unsigned long first_page;
+	unsigned long last_page;
+	unsigned long page_mask;
+	int csrow_idx;
+	u32 ue_count;
+	u32 ce_count;
+	struct mem_ctl_info *mci;
+	u32 nr_channels;
+	struct rank_info **channels;
+};
+
+struct rank_info {
+	int chan_idx;
+	struct csrow_info *csrow;
+	struct dimm_info *dimm;
+	u32 ce_count;
+};
+
+struct dimm_info {
+	struct device dev;
+	char label[32];
+	unsigned int location[3];
+	struct mem_ctl_info *mci;
+	unsigned int idx;
+	u32 grain;
+	enum dev_type dtype;
+	enum mem_type___2 mtype;
+	enum edac_type edac_mode;
+	u32 nr_pages;
+	unsigned int csrow;
+	unsigned int cschannel;
+	u16 smbios_handle;
+	u32 ce_count;
+	u32 ue_count;
+};
+
+struct edac_mc_layer {
+	enum edac_mc_layer_type type;
+	unsigned int size;
+	bool is_virt_csrow;
+};
+
+struct edac_device_counter {
+	u32 ue_count;
+	u32 ce_count;
+};
+
+struct edac_dev_sysfs_attribute;
+
+struct edac_device_instance;
+
+struct edac_device_block;
+
+struct edac_dev_sysfs_block_attribute;
+
+struct edac_device_ctl_info {
+	struct list_head link;
+	struct module *owner;
+	int dev_idx;
+	int log_ue;
+	int log_ce;
+	int panic_on_ue;
+	unsigned int poll_msec;
+	unsigned long delay;
+	struct edac_dev_sysfs_attribute *sysfs_attributes;
+	struct bus_type *edac_subsys;
+	int op_state;
+	struct delayed_work work;
+	void (*edac_check)(struct edac_device_ctl_info *);
+	struct device *dev;
+	const char *mod_name;
+	const char *ctl_name;
+	const char *dev_name;
+	void *pvt_info;
+	unsigned long start_time;
+	struct completion removal_complete;
+	char name[32];
+	u32 nr_instances;
+	struct edac_device_instance *instances;
+	struct edac_device_block *blocks;
+	struct edac_dev_sysfs_block_attribute *attribs;
+	struct edac_device_counter counters;
+	struct kobject kobj;
+};
+
+struct edac_dev_sysfs_attribute {
+	struct attribute attr;
+	ssize_t (*show)(struct edac_device_ctl_info *, char *);
+	ssize_t (*store)(struct edac_device_ctl_info *, const char *, size_t);
+};
+
+struct edac_device_instance {
+	struct edac_device_ctl_info *ctl;
+	char name[35];
+	struct edac_device_counter counters;
+	u32 nr_blocks;
+	struct edac_device_block *blocks;
+	struct kobject kobj;
+};
+
+struct edac_device_block {
+	struct edac_device_instance *instance;
+	char name[32];
+	struct edac_device_counter counters;
+	int nr_attribs;
+	struct edac_dev_sysfs_block_attribute *block_attributes;
+	struct kobject kobj;
+};
+
+struct edac_dev_sysfs_block_attribute {
+	struct attribute attr;
+	ssize_t (*show)(struct kobject *, struct attribute *, char *);
+	ssize_t (*store)(struct kobject *, struct attribute *, const char *, size_t);
+	struct edac_device_block *block;
+	unsigned int value;
+};
+
+struct dev_ch_attribute {
+	struct device_attribute attr;
+	unsigned int channel;
+};
+
+struct ctl_info_attribute {
+	struct attribute attr;
+	ssize_t (*show)(struct edac_device_ctl_info *, char *);
+	ssize_t (*store)(struct edac_device_ctl_info *, const char *, size_t);
+};
+
+struct instance_attribute {
+	struct attribute attr;
+	ssize_t (*show)(struct edac_device_instance *, char *);
+	ssize_t (*store)(struct edac_device_instance *, const char *, size_t);
+};
+
+struct edac_pci_counter {
+	atomic_t pe_count;
+	atomic_t npe_count;
+};
+
+struct edac_pci_ctl_info {
+	struct list_head link;
+	int pci_idx;
+	struct bus_type *edac_subsys;
+	int op_state;
+	struct delayed_work work;
+	void (*edac_check)(struct edac_pci_ctl_info *);
+	struct device *dev;
+	const char *mod_name;
+	const char *ctl_name;
+	const char *dev_name;
+	void *pvt_info;
+	unsigned long start_time;
+	struct completion complete;
+	char name[32];
+	struct edac_pci_counter counters;
+	struct kobject kobj;
+};
+
+struct edac_pci_gen_data {
+	int edac_idx;
+};
+
+struct edac_pci_dev_attribute {
+	struct attribute attr;
+	void *value;
+	ssize_t (*show)(void *, char *);
+	ssize_t (*store)(void *, const char *, size_t);
+};
+
+struct instance_attribute___2 {
+	struct attribute attr;
+	ssize_t (*show)(struct edac_pci_ctl_info *, char *);
+	ssize_t (*store)(struct edac_pci_ctl_info *, const char *, size_t);
+};
+
+typedef void (*pci_parity_check_fn_t)(struct pci_dev *);
+
+enum opp_table_access {
+	OPP_TABLE_ACCESS_UNKNOWN = 0,
+	OPP_TABLE_ACCESS_EXCLUSIVE = 1,
+	OPP_TABLE_ACCESS_SHARED = 2,
+};
+
+enum dev_pm_opp_event {
+	OPP_EVENT_ADD = 0,
+	OPP_EVENT_REMOVE = 1,
+	OPP_EVENT_ENABLE = 2,
+	OPP_EVENT_DISABLE = 3,
+	OPP_EVENT_ADJUST_VOLTAGE = 4,
+};
+
+struct dev_pm_opp_supply;
+
+struct dev_pm_opp_icc_bw;
+
+struct dev_pm_opp {
+	struct list_head node;
+	struct kref kref;
+	bool available;
+	bool dynamic;
+	bool turbo;
+	bool suspend;
+	bool removed;
+	unsigned long *rates;
+	unsigned int level;
+	struct dev_pm_opp_supply *supplies;
+	struct dev_pm_opp_icc_bw *bandwidth;
+	unsigned long clock_latency_ns;
+	struct dev_pm_opp **required_opps;
+	struct opp_table *opp_table;
+	struct device_node *np;
+	struct dentry *dentry;
+	const char *of_name;
+};
+
+struct dev_pm_opp_supply {
+	unsigned long u_volt;
+	unsigned long u_volt_min;
+	unsigned long u_volt_max;
+	unsigned long u_amp;
+	unsigned long u_watt;
+};
+
+struct dev_pm_opp_icc_bw {
+	u32 avg;
+	u32 peak;
+};
+
+struct opp_table {
+	struct list_head node;
+	struct list_head lazy;
+	struct blocking_notifier_head head;
+	struct list_head dev_list;
+	struct list_head opp_list;
+	struct kref kref;
+	struct mutex lock;
+	struct device_node *np;
+	unsigned long clock_latency_ns_max;
+	unsigned int voltage_tolerance_v1;
+	unsigned int parsed_static_opps;
+	enum opp_table_access shared_opp;
+	unsigned long rate_clk_single;
+	struct dev_pm_opp *current_opp;
+	struct dev_pm_opp *suspend_opp;
+	struct mutex genpd_virt_dev_lock;
+	struct device **genpd_virt_devs;
+	struct opp_table **required_opp_tables;
+	unsigned int required_opp_count;
+	unsigned int *supported_hw;
+	unsigned int supported_hw_count;
+	const char *prop_name;
+	config_clks_t config_clks;
+	struct clk **clks;
+	struct clk *clk;
+	int clk_count;
+	config_regulators_t config_regulators;
+	struct regulator **regulators;
+	int regulator_count;
+	struct icc_path **paths;
+	unsigned int path_count;
+	bool enabled;
+	bool is_genpd;
+	int (*set_required_opps)(struct device *, struct opp_table *, struct dev_pm_opp *, bool);
+	struct dentry *dentry;
+	char dentry_name[255];
+};
+
+struct opp_device {
+	struct list_head node;
+	const struct device *dev;
+	struct dentry *dentry;
+};
+
+struct opp_config_data {
+	struct opp_table *opp_table;
+	unsigned int flags;
+};
+
+struct cpufreq_policy_data;
+
+struct freq_attr;
+
+struct cpufreq_driver {
+	char name[16];
+	u16 flags;
+	void *driver_data;
+	int (*init)(struct cpufreq_policy *);
+	int (*verify)(struct cpufreq_policy_data *);
+	int (*setpolicy)(struct cpufreq_policy *);
+	int (*target)(struct cpufreq_policy *, unsigned int, unsigned int);
+	int (*target_index)(struct cpufreq_policy *, unsigned int);
+	unsigned int (*fast_switch)(struct cpufreq_policy *, unsigned int);
+	void (*adjust_perf)(unsigned int, unsigned long, unsigned long, unsigned long);
+	unsigned int (*get_intermediate)(struct cpufreq_policy *, unsigned int);
+	int (*target_intermediate)(struct cpufreq_policy *, unsigned int);
+	unsigned int (*get)(unsigned int);
+	void (*update_limits)(unsigned int);
+	int (*bios_limit)(int, unsigned int *);
+	int (*online)(struct cpufreq_policy *);
+	int (*offline)(struct cpufreq_policy *);
+	int (*exit)(struct cpufreq_policy *);
+	int (*suspend)(struct cpufreq_policy *);
+	int (*resume)(struct cpufreq_policy *);
+	void (*ready)(struct cpufreq_policy *);
+	struct freq_attr **attr;
+	bool boost_enabled;
+	int (*set_boost)(struct cpufreq_policy *, int);
+	void (*register_em)(struct cpufreq_policy *);
+};
+
+struct cpufreq_policy_data {
+	struct cpufreq_cpuinfo cpuinfo;
+	struct cpufreq_frequency_table *freq_table;
+	unsigned int cpu;
+	unsigned int min;
+	unsigned int max;
+};
+
+struct freq_attr {
+	struct attribute attr;
+	ssize_t (*show)(struct cpufreq_policy *, char *);
+	ssize_t (*store)(struct cpufreq_policy *, const char *, size_t);
+};
+
+struct cpufreq_freqs {
+	struct cpufreq_policy *policy;
+	unsigned int old;
+	unsigned int new;
+	u8 flags;
+};
+
+struct cpufreq_stats {
+	unsigned int total_trans;
+	unsigned long long last_time;
+	unsigned int max_state;
+	unsigned int state_num;
+	unsigned int last_index;
+	u64 *time_in_state;
+	unsigned int *freq_table;
+	unsigned int *trans_table;
+	unsigned int reset_pending;
+	unsigned long long reset_time;
+};
+
+struct cpu_freqs {
+	unsigned int offset;
+	unsigned int max_state;
+	unsigned int last_index;
+	unsigned int freq_table[0];
+};
+
+struct dbs_data;
+
+struct policy_dbs_info;
+
+struct dbs_governor {
+	struct cpufreq_governor gov;
+	struct kobj_type kobj_type;
+	struct dbs_data *gdbs_data;
+	unsigned int (*gov_dbs_update)(struct cpufreq_policy *);
+	struct policy_dbs_info * (*alloc)();
+	void (*free)(struct policy_dbs_info *);
+	int (*init)(struct dbs_data *);
+	void (*exit)(struct dbs_data *);
+	void (*start)(struct cpufreq_policy *);
+};
+
+struct dbs_data {
+	struct gov_attr_set attr_set;
+	struct dbs_governor *gov;
+	void *tuners;
+	unsigned int ignore_nice_load;
+	unsigned int sampling_rate;
+	unsigned int sampling_down_factor;
+	unsigned int up_threshold;
+	unsigned int io_is_busy;
+};
+
+struct policy_dbs_info {
+	struct cpufreq_policy *policy;
+	struct mutex update_mutex;
+	u64 last_sample_time;
+	s64 sample_delay_ns;
+	atomic_t work_count;
+	struct irq_work irq_work;
+	struct work_struct work;
+	struct dbs_data *dbs_data;
+	struct list_head list;
+	unsigned int rate_mult;
+	unsigned int idle_periods;
+	bool is_shared;
+	bool work_in_progress;
+};
+
+struct cs_policy_dbs_info {
+	struct policy_dbs_info policy_dbs;
+	unsigned int down_skip;
+	unsigned int requested_freq;
+};
+
+struct cs_dbs_tuners {
+	unsigned int down_threshold;
+	unsigned int freq_step;
+};
+
+struct cpu_dbs_info {
+	u64 prev_cpu_idle;
+	u64 prev_update_time;
+	u64 prev_cpu_nice;
+	unsigned int prev_load;
+	struct update_util_data update_util;
+	struct policy_dbs_info *policy_dbs;
+};
+
+struct scmi_data {
+	int domain_id;
+	int nr_opp;
+	struct device *cpu_dev;
+	cpumask_var_t opp_shared_cpus;
+};
+
+struct scpi_data {
+	struct clk *clk;
+	struct device *cpu_dev;
+};
+
+struct cpuidle_governor {
+	char name[16];
+	struct list_head governor_list;
+	unsigned int rating;
+	int (*enable)(struct cpuidle_driver *, struct cpuidle_device *);
+	void (*disable)(struct cpuidle_driver *, struct cpuidle_device *);
+	int (*select)(struct cpuidle_driver *, struct cpuidle_device *, bool *);
+	void (*reflect)(struct cpuidle_device *, int);
+};
+
+struct cpuidle_state_attr {
+	struct attribute attr;
+	ssize_t (*show)(struct cpuidle_state *, struct cpuidle_state_usage *, char *);
+	ssize_t (*store)(struct cpuidle_state *, struct cpuidle_state_usage *, const char *, size_t);
+};
+
+struct cpuidle_state_kobj {
+	struct cpuidle_state *state;
+	struct cpuidle_state_usage *state_usage;
+	struct completion kobj_unregister;
+	struct kobject kobj;
+	struct cpuidle_device *device;
+};
+
+struct cpuidle_driver_kobj {
+	struct cpuidle_driver *drv;
+	struct completion kobj_unregister;
+	struct kobject kobj;
+};
+
+struct cpuidle_device_kobj {
+	struct cpuidle_device *dev;
+	struct completion kobj_unregister;
+	struct kobject kobj;
+};
+
+struct cpuidle_driver_attr {
+	struct attribute attr;
+	ssize_t (*show)(struct cpuidle_driver *, char *);
+	ssize_t (*store)(struct cpuidle_driver *, const char *, size_t);
+};
+
+struct cpuidle_attr {
+	struct attribute attr;
+	ssize_t (*show)(struct cpuidle_device *, char *);
+	ssize_t (*store)(struct cpuidle_device *, const char *, size_t);
+};
+
+struct menu_device {
+	int needs_update;
+	int tick_wakeup;
+	u64 next_timer_ns;
+	unsigned int bucket;
+	unsigned int correction_factor[12];
+	unsigned int intervals[8];
+	int interval_ptr;
+};
+
+struct teo_bin {
+	unsigned int intercepts;
+	unsigned int hits;
+	unsigned int recent;
+};
+
+struct teo_cpu {
+	s64 time_span_ns;
+	s64 sleep_length_ns;
+	struct teo_bin state_bins[10];
+	unsigned int total;
+	int next_recent_idx;
+	int recent_idx[9];
+	unsigned int tick_hits;
+	unsigned long util_threshold;
+};
+
+struct psci_cpuidle_data {
+	u32 *psci_states;
+	struct device *dev;
+};
+
+struct psci_pd_provider {
+	struct list_head link;
+	struct device_node *node;
+};
+
+struct mmc_host;
+
+struct mmc_request;
+
+typedef void (*btf_trace_mmc_request_start)(void *, struct mmc_host *, struct mmc_request *);
+
+typedef unsigned int mmc_pm_flag_t;
+
+struct mmc_ios {
+	unsigned int clock;
+	unsigned short vdd;
+	unsigned int power_delay_ms;
+	unsigned char bus_mode;
+	unsigned char chip_select;
+	unsigned char power_mode;
+	unsigned char bus_width;
+	unsigned char timing;
+	unsigned char signal_voltage;
+	unsigned char drv_type;
+	bool enhanced_strobe;
+};
+
+struct mmc_ctx {
+	struct task_struct *task;
+};
+
+struct mmc_slot {
+	int cd_irq;
+	bool cd_wake_enabled;
+	void *handler_priv;
+};
+
+struct mmc_supply {
+	struct regulator *vmmc;
+	struct regulator *vqmmc;
+};
+
+struct mmc_host_ops;
+
+struct mmc_pwrseq;
+
+struct mmc_card;
+
+struct mmc_bus_ops;
+
+struct mmc_cqe_ops;
+
+struct mmc_host {
+	struct device *parent;
+	struct device class_dev;
+	int index;
+	const struct mmc_host_ops *ops;
+	struct mmc_pwrseq *pwrseq;
+	unsigned int f_min;
+	unsigned int f_max;
+	unsigned int f_init;
+	u32 ocr_avail;
+	u32 ocr_avail_sdio;
+	u32 ocr_avail_sd;
+	u32 ocr_avail_mmc;
+	struct wakeup_source *ws;
+	u32 max_current_330;
+	u32 max_current_300;
+	u32 max_current_180;
+	u32 caps;
+	u32 caps2;
+	int fixed_drv_type;
+	mmc_pm_flag_t pm_caps;
+	unsigned int max_seg_size;
+	unsigned short max_segs;
+	unsigned short unused;
+	unsigned int max_req_size;
+	unsigned int max_blk_size;
+	unsigned int max_blk_count;
+	unsigned int max_busy_timeout;
+	spinlock_t lock;
+	struct mmc_ios ios;
+	unsigned int use_spi_crc: 1;
+	unsigned int claimed: 1;
+	unsigned int doing_init_tune: 1;
+	unsigned int can_retune: 1;
+	unsigned int doing_retune: 1;
+	unsigned int retune_now: 1;
+	unsigned int retune_paused: 1;
+	unsigned int retune_crc_disable: 1;
+	unsigned int can_dma_map_merge: 1;
+	unsigned int vqmmc_enabled: 1;
+	int rescan_disable;
+	int rescan_entered;
+	int need_retune;
+	int hold_retune;
+	unsigned int retune_period;
+	struct timer_list retune_timer;
+	bool trigger_card_event;
+	struct mmc_card *card;
+	wait_queue_head_t wq;
+	struct mmc_ctx *claimer;
+	int claim_cnt;
+	struct mmc_ctx default_ctx;
+	struct delayed_work detect;
+	int detect_change;
+	struct mmc_slot slot;
+	const struct mmc_bus_ops *bus_ops;
+	unsigned int sdio_irqs;
+	struct task_struct *sdio_irq_thread;
+	struct work_struct sdio_irq_work;
+	bool sdio_irq_pending;
+	atomic_t sdio_irq_thread_abort;
+	mmc_pm_flag_t pm_flags;
+	struct led_trigger *led;
+	bool regulator_enabled;
+	struct mmc_supply supply;
+	struct dentry *debugfs_root;
+	struct mmc_request *ongoing_mrq;
+	unsigned int actual_clock;
+	unsigned int slotno;
+	int dsr_req;
+	u32 dsr;
+	const struct mmc_cqe_ops *cqe_ops;
+	void *cqe_private;
+	int cqe_qdepth;
+	bool cqe_enabled;
+	bool cqe_on;
+	bool cqe_recovery_reset_always;
+	struct blk_crypto_profile crypto_profile;
+	bool hsq_enabled;
+	int hsq_depth;
+	u32 err_stats[15];
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	unsigned long private[0];
+};
+
+struct mmc_host_ops {
+	void (*post_req)(struct mmc_host *, struct mmc_request *, int);
+	void (*pre_req)(struct mmc_host *, struct mmc_request *);
+	void (*request)(struct mmc_host *, struct mmc_request *);
+	int (*request_atomic)(struct mmc_host *, struct mmc_request *);
+	void (*set_ios)(struct mmc_host *, struct mmc_ios *);
+	int (*get_ro)(struct mmc_host *);
+	int (*get_cd)(struct mmc_host *);
+	void (*enable_sdio_irq)(struct mmc_host *, int);
+	void (*ack_sdio_irq)(struct mmc_host *);
+	void (*init_card)(struct mmc_host *, struct mmc_card *);
+	int (*start_signal_voltage_switch)(struct mmc_host *, struct mmc_ios *);
+	int (*card_busy)(struct mmc_host *);
+	int (*execute_tuning)(struct mmc_host *, u32);
+	int (*prepare_hs400_tuning)(struct mmc_host *, struct mmc_ios *);
+	int (*execute_hs400_tuning)(struct mmc_host *, struct mmc_card *);
+	int (*prepare_sd_hs_tuning)(struct mmc_host *, struct mmc_card *);
+	int (*execute_sd_hs_tuning)(struct mmc_host *, struct mmc_card *);
+	int (*hs400_prepare_ddr)(struct mmc_host *);
+	void (*hs400_downgrade)(struct mmc_host *);
+	void (*hs400_complete)(struct mmc_host *);
+	void (*hs400_enhanced_strobe)(struct mmc_host *, struct mmc_ios *);
+	int (*select_drive_strength)(struct mmc_card *, unsigned int, int, int, int *);
+	void (*card_hw_reset)(struct mmc_host *);
+	void (*card_event)(struct mmc_host *);
+	int (*multi_io_quirk)(struct mmc_card *, unsigned int, int);
+	int (*init_sd_express)(struct mmc_host *, struct mmc_ios *);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct mmc_command;
+
+struct mmc_data;
+
+struct mmc_request {
+	struct mmc_command *sbc;
+	struct mmc_command *cmd;
+	struct mmc_data *data;
+	struct mmc_command *stop;
+	struct completion completion;
+	struct completion cmd_completion;
+	void (*done)(struct mmc_request *);
+	void (*recovery_notifier)(struct mmc_request *);
+	struct mmc_host *host;
+	bool cap_cmd_during_tfr;
+	int tag;
+	const struct bio_crypt_ctx *crypto_ctx;
+	int crypto_key_slot;
+};
+
+struct mmc_command {
+	u32 opcode;
+	u32 arg;
+	u32 resp[4];
+	unsigned int flags;
+	unsigned int retries;
+	int error;
+	unsigned int busy_timeout;
+	struct mmc_data *data;
+	struct mmc_request *mrq;
+};
+
+struct mmc_data {
+	unsigned int timeout_ns;
+	unsigned int timeout_clks;
+	unsigned int blksz;
+	unsigned int blocks;
+	unsigned int blk_addr;
+	int error;
+	unsigned int flags;
+	unsigned int bytes_xfered;
+	struct mmc_command *stop;
+	struct mmc_request *mrq;
+	unsigned int sg_len;
+	int sg_count;
+	struct scatterlist *sg;
+	s32 host_cookie;
+};
+
+struct mmc_cid {
+	unsigned int manfid;
+	char prod_name[8];
+	unsigned char prv;
+	unsigned int serial;
+	unsigned short oemid;
+	unsigned short year;
+	unsigned char hwrev;
+	unsigned char fwrev;
+	unsigned char month;
+};
+
+struct mmc_csd {
+	unsigned char structure;
+	unsigned char mmca_vsn;
+	unsigned short cmdclass;
+	unsigned short taac_clks;
+	unsigned int taac_ns;
+	unsigned int c_size;
+	unsigned int r2w_factor;
+	unsigned int max_dtr;
+	unsigned int erase_size;
+	unsigned int read_blkbits;
+	unsigned int write_blkbits;
+	unsigned int capacity;
+	unsigned int read_partial: 1;
+	unsigned int read_misalign: 1;
+	unsigned int write_partial: 1;
+	unsigned int write_misalign: 1;
+	unsigned int dsr_imp: 1;
+};
+
+struct mmc_ext_csd {
+	u8 rev;
+	u8 erase_group_def;
+	u8 sec_feature_support;
+	u8 rel_sectors;
+	u8 rel_param;
+	bool enhanced_rpmb_supported;
+	u8 part_config;
+	u8 cache_ctrl;
+	u8 rst_n_function;
+	u8 max_packed_writes;
+	u8 max_packed_reads;
+	u8 packed_event_en;
+	unsigned int part_time;
+	unsigned int sa_timeout;
+	unsigned int generic_cmd6_time;
+	unsigned int power_off_longtime;
+	u8 power_off_notification;
+	unsigned int hs_max_dtr;
+	unsigned int hs200_max_dtr;
+	unsigned int sectors;
+	unsigned int hc_erase_size;
+	unsigned int hc_erase_timeout;
+	unsigned int sec_trim_mult;
+	unsigned int sec_erase_mult;
+	unsigned int trim_timeout;
+	bool partition_setting_completed;
+	unsigned long long enhanced_area_offset;
+	unsigned int enhanced_area_size;
+	unsigned int cache_size;
+	bool hpi_en;
+	bool hpi;
+	unsigned int hpi_cmd;
+	bool bkops;
+	bool man_bkops_en;
+	bool auto_bkops_en;
+	unsigned int data_sector_size;
+	unsigned int data_tag_unit_size;
+	unsigned int boot_ro_lock;
+	bool boot_ro_lockable;
+	bool ffu_capable;
+	bool cmdq_en;
+	bool cmdq_support;
+	unsigned int cmdq_depth;
+	u8 fwrev[8];
+	u8 raw_exception_status;
+	u8 raw_partition_support;
+	u8 raw_rpmb_size_mult;
+	u8 raw_erased_mem_count;
+	u8 strobe_support;
+	u8 raw_ext_csd_structure;
+	u8 raw_card_type;
+	u8 raw_driver_strength;
+	u8 out_of_int_time;
+	u8 raw_pwr_cl_52_195;
+	u8 raw_pwr_cl_26_195;
+	u8 raw_pwr_cl_52_360;
+	u8 raw_pwr_cl_26_360;
+	u8 raw_s_a_timeout;
+	u8 raw_hc_erase_gap_size;
+	u8 raw_erase_timeout_mult;
+	u8 raw_hc_erase_grp_size;
+	u8 raw_boot_mult;
+	u8 raw_sec_trim_mult;
+	u8 raw_sec_erase_mult;
+	u8 raw_sec_feature_support;
+	u8 raw_trim_mult;
+	u8 raw_pwr_cl_200_195;
+	u8 raw_pwr_cl_200_360;
+	u8 raw_pwr_cl_ddr_52_195;
+	u8 raw_pwr_cl_ddr_52_360;
+	u8 raw_pwr_cl_ddr_200_360;
+	u8 raw_bkops_status;
+	u8 raw_sectors[4];
+	u8 pre_eol_info;
+	u8 device_life_time_est_typ_a;
+	u8 device_life_time_est_typ_b;
+	unsigned int feature_support;
+};
+
+struct sd_scr {
+	unsigned char sda_vsn;
+	unsigned char sda_spec3;
+	unsigned char sda_spec4;
+	unsigned char sda_specx;
+	unsigned char bus_widths;
+	unsigned char cmds;
+};
+
+struct sd_ssr {
+	unsigned int au;
+	unsigned int erase_timeout;
+	unsigned int erase_offset;
+};
+
+struct sd_switch_caps {
+	unsigned int hs_max_dtr;
+	unsigned int uhs_max_dtr;
+	unsigned int sd3_bus_mode;
+	unsigned int sd3_drv_type;
+	unsigned int sd3_curr_limit;
+};
+
+struct sd_ext_reg {
+	u8 fno;
+	u8 page;
+	u16 offset;
+	u8 rev;
+	u8 feature_enabled;
+	u8 feature_support;
+};
+
+struct sdio_cccr {
+	unsigned int sdio_vsn;
+	unsigned int sd_vsn;
+	unsigned int multi_block: 1;
+	unsigned int low_speed: 1;
+	unsigned int wide_bus: 1;
+	unsigned int high_power: 1;
+	unsigned int high_speed: 1;
+	unsigned int disable_cd: 1;
+	unsigned int enable_async_irq: 1;
+};
+
+struct sdio_cis {
+	unsigned short vendor;
+	unsigned short device;
+	unsigned short blksize;
+	unsigned int max_dtr;
+};
+
+struct mmc_part {
+	u64 size;
+	unsigned int part_cfg;
+	char name[20];
+	bool force_ro;
+	unsigned int area_type;
+	u64 android_kabi_reserved1;
+};
+
+struct sdio_func;
+
+struct sdio_func_tuple;
+
+struct mmc_card {
+	struct mmc_host *host;
+	struct device dev;
+	u32 ocr;
+	unsigned int rca;
+	unsigned int type;
+	unsigned int state;
+	unsigned int quirks;
+	unsigned int quirk_max_rate;
+	bool written_flag;
+	bool reenable_cmdq;
+	unsigned int erase_size;
+	unsigned int erase_shift;
+	unsigned int pref_erase;
+	unsigned int eg_boundary;
+	unsigned int erase_arg;
+	u8 erased_byte;
+	u32 raw_cid[4];
+	u32 raw_csd[4];
+	u32 raw_scr[2];
+	u32 raw_ssr[16];
+	struct mmc_cid cid;
+	struct mmc_csd csd;
+	struct mmc_ext_csd ext_csd;
+	struct sd_scr scr;
+	struct sd_ssr ssr;
+	struct sd_switch_caps sw_caps;
+	struct sd_ext_reg ext_power;
+	struct sd_ext_reg ext_perf;
+	unsigned int sdio_funcs;
+	atomic_t sdio_funcs_probed;
+	struct sdio_cccr cccr;
+	struct sdio_cis cis;
+	struct sdio_func *sdio_func[7];
+	struct sdio_func *sdio_single_irq;
+	u8 major_rev;
+	u8 minor_rev;
+	unsigned int num_info;
+	const char **info;
+	struct sdio_func_tuple *tuples;
+	unsigned int sd_bus_speed;
+	unsigned int mmc_avail_type;
+	unsigned int drive_strength;
+	struct dentry *debugfs_root;
+	struct mmc_part part[7];
+	unsigned int nr_parts;
+	struct workqueue_struct *complete_wq;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct mmc_pwrseq_ops;
+
+struct mmc_pwrseq {
+	const struct mmc_pwrseq_ops *ops;
+	struct device *dev;
+	struct list_head pwrseq_node;
+	struct module *owner;
+};
+
+struct mmc_pwrseq_ops {
+	void (*pre_power_on)(struct mmc_host *);
+	void (*post_power_on)(struct mmc_host *);
+	void (*power_off)(struct mmc_host *);
+	void (*reset)(struct mmc_host *);
+};
+
+struct mmc_bus_ops {
+	void (*remove)(struct mmc_host *);
+	void (*detect)(struct mmc_host *);
+	int (*pre_suspend)(struct mmc_host *);
+	int (*suspend)(struct mmc_host *);
+	int (*resume)(struct mmc_host *);
+	int (*runtime_suspend)(struct mmc_host *);
+	int (*runtime_resume)(struct mmc_host *);
+	int (*alive)(struct mmc_host *);
+	int (*shutdown)(struct mmc_host *);
+	int (*hw_reset)(struct mmc_host *);
+	int (*sw_reset)(struct mmc_host *);
+	bool (*cache_enabled)(struct mmc_host *);
+	int (*flush_cache)(struct mmc_host *);
+};
+
+struct mmc_cqe_ops {
+	int (*cqe_enable)(struct mmc_host *, struct mmc_card *);
+	void (*cqe_disable)(struct mmc_host *);
+	int (*cqe_request)(struct mmc_host *, struct mmc_request *);
+	void (*cqe_post_req)(struct mmc_host *, struct mmc_request *);
+	void (*cqe_off)(struct mmc_host *);
+	int (*cqe_wait_for_idle)(struct mmc_host *);
+	bool (*cqe_timeout)(struct mmc_host *, struct mmc_request *, bool *);
+	void (*cqe_recovery_start)(struct mmc_host *);
+	void (*cqe_recovery_finish)(struct mmc_host *);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+typedef void (*btf_trace_mmc_request_done)(void *, struct mmc_host *, struct mmc_request *);
+
+enum mmc_busy_cmd {
+	MMC_BUSY_CMD6 = 0,
+	MMC_BUSY_ERASE = 1,
+	MMC_BUSY_HPI = 2,
+	MMC_BUSY_EXTR_SINGLE = 3,
+	MMC_BUSY_IO = 4,
+};
+
+enum mmc_err_stat {
+	MMC_ERR_CMD_TIMEOUT = 0,
+	MMC_ERR_CMD_CRC = 1,
+	MMC_ERR_DAT_TIMEOUT = 2,
+	MMC_ERR_DAT_CRC = 3,
+	MMC_ERR_AUTO_CMD = 4,
+	MMC_ERR_ADMA = 5,
+	MMC_ERR_TUNING = 6,
+	MMC_ERR_CMDQ_RED = 7,
+	MMC_ERR_CMDQ_GCE = 8,
+	MMC_ERR_CMDQ_ICCE = 9,
+	MMC_ERR_REQ_TIMEOUT = 10,
+	MMC_ERR_CMDQ_REQ_TIMEOUT = 11,
+	MMC_ERR_ICE_CFG = 12,
+	MMC_ERR_CTRL_TIMEOUT = 13,
+	MMC_ERR_UNEXPECTED_IRQ = 14,
+	MMC_ERR_MAX = 15,
+};
+
+struct trace_event_raw_mmc_request_start {
+	struct trace_entry ent;
+	u32 cmd_opcode;
+	u32 cmd_arg;
+	unsigned int cmd_flags;
+	unsigned int cmd_retries;
+	u32 stop_opcode;
+	u32 stop_arg;
+	unsigned int stop_flags;
+	unsigned int stop_retries;
+	u32 sbc_opcode;
+	u32 sbc_arg;
+	unsigned int sbc_flags;
+	unsigned int sbc_retries;
+	unsigned int blocks;
+	unsigned int blk_addr;
+	unsigned int blksz;
+	unsigned int data_flags;
+	int tag;
+	unsigned int can_retune;
+	unsigned int doing_retune;
+	unsigned int retune_now;
+	int need_retune;
+	int hold_retune;
+	unsigned int retune_period;
+	struct mmc_request *mrq;
+	u32 __data_loc_name;
+	char __data[0];
+};
+
+struct trace_event_raw_mmc_request_done {
+	struct trace_entry ent;
+	u32 cmd_opcode;
+	int cmd_err;
+	u32 cmd_resp[4];
+	unsigned int cmd_retries;
+	u32 stop_opcode;
+	int stop_err;
+	u32 stop_resp[4];
+	unsigned int stop_retries;
+	u32 sbc_opcode;
+	int sbc_err;
+	u32 sbc_resp[4];
+	unsigned int sbc_retries;
+	unsigned int bytes_xfered;
+	int data_err;
+	int tag;
+	unsigned int can_retune;
+	unsigned int doing_retune;
+	unsigned int retune_now;
+	int need_retune;
+	int hold_retune;
+	unsigned int retune_period;
+	struct mmc_request *mrq;
+	u32 __data_loc_name;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_mmc_request_start {
+	u32 name;
+};
+
+struct trace_event_data_offsets_mmc_request_done {
+	u32 name;
+};
+
+struct mmc_driver {
+	struct device_driver drv;
+	int (*probe)(struct mmc_card *);
+	void (*remove)(struct mmc_card *);
+	void (*shutdown)(struct mmc_card *);
+};
+
+struct mmc_clk_phase {
+	bool valid;
+	u16 in_deg;
+	u16 out_deg;
+};
+
+struct mmc_clk_phase_map {
+	struct mmc_clk_phase phase[11];
+};
+
+struct mmc_fixup {
+	const char *name;
+	u64 rev_start;
+	u64 rev_end;
+	unsigned int manfid;
+	unsigned short oemid;
+	unsigned short year;
+	unsigned char month;
+	u16 cis_vendor;
+	u16 cis_device;
+	unsigned int ext_csd_rev;
+	const char *of_compatible;
+	void (*vendor_fixup)(struct mmc_card *, int);
+	int data;
+};
+
+struct mmc_op_cond_busy_data {
+	struct mmc_host *host;
+	u32 ocr;
+	struct mmc_command *cmd;
+};
+
+struct mmc_busy_data {
+	struct mmc_card *card;
+	bool retry_crc_err;
+	enum mmc_busy_cmd busy_cmd;
+};
+
+struct sd_busy_data {
+	struct mmc_card *card;
+	u8 *reg_buf;
+};
+
+typedef void sdio_irq_handler_t(struct sdio_func *);
+
+struct sdio_func {
+	struct mmc_card *card;
+	struct device dev;
+	sdio_irq_handler_t *irq_handler;
+	unsigned int num;
+	unsigned char class;
+	unsigned short vendor;
+	unsigned short device;
+	unsigned int max_blksize;
+	unsigned int cur_blksize;
+	unsigned int enable_timeout;
+	unsigned int state;
+	u8 *tmpbuf;
+	u8 major_rev;
+	u8 minor_rev;
+	unsigned int num_info;
+	const char **info;
+	struct sdio_func_tuple *tuples;
+};
+
+struct sdio_func_tuple {
+	struct sdio_func_tuple *next;
+	unsigned char code;
+	unsigned char size;
+	unsigned char data[0];
+};
+
+struct sdio_device_id;
+
+struct sdio_driver {
+	char *name;
+	const struct sdio_device_id *id_table;
+	int (*probe)(struct sdio_func *, const struct sdio_device_id *);
+	void (*remove)(struct sdio_func *);
+	struct device_driver drv;
+};
+
+struct sdio_device_id {
+	__u8 class;
+	__u16 vendor;
+	__u16 device;
+	kernel_ulong_t driver_data;
+};
+
+typedef int tpl_parse_t(struct mmc_card *, struct sdio_func *, const unsigned char *, unsigned int);
+
+struct cis_tpl {
+	unsigned char code;
+	unsigned char min_size;
+	tpl_parse_t *parse;
+};
+
+struct mmc_gpio {
+	struct gpio_desc *ro_gpio;
+	struct gpio_desc *cd_gpio;
+	irqreturn_t (*cd_gpio_isr)(int, void *);
+	char *ro_label;
+	char *cd_label;
+	u32 cd_debounce_delay_ms;
+	int cd_irq;
+};
+
+enum mmc_drv_op {
+	MMC_DRV_OP_IOCTL = 0,
+	MMC_DRV_OP_IOCTL_RPMB = 1,
+	MMC_DRV_OP_BOOT_WP = 2,
+	MMC_DRV_OP_GET_CARD_STATUS = 3,
+	MMC_DRV_OP_GET_EXT_CSD = 4,
+};
+
+struct mmc_blk_request {
+	struct mmc_request mrq;
+	struct mmc_command sbc;
+	struct mmc_command cmd;
+	struct mmc_command stop;
+	struct mmc_data data;
+};
+
+struct mmc_queue_req {
+	struct mmc_blk_request brq;
+	struct scatterlist *sg;
+	enum mmc_drv_op drv_op;
+	int drv_op_result;
+	void *drv_op_data;
+	unsigned int ioc_count;
+	int retries;
+};
+
+enum mmc_issued {
+	MMC_REQ_STARTED = 0,
+	MMC_REQ_BUSY = 1,
+	MMC_REQ_FAILED_TO_START = 2,
+	MMC_REQ_FINISHED = 3,
+};
+
+enum mmc_issue_type {
+	MMC_ISSUE_SYNC = 0,
+	MMC_ISSUE_DCMD = 1,
+	MMC_ISSUE_ASYNC = 2,
+	MMC_ISSUE_MAX = 3,
+};
+
+struct mmc_blk_data;
+
+struct mmc_queue {
+	struct mmc_card *card;
+	struct mmc_ctx ctx;
+	struct blk_mq_tag_set tag_set;
+	struct mmc_blk_data *blkdata;
+	struct request_queue *queue;
+	spinlock_t lock;
+	int in_flight[3];
+	unsigned int cqe_busy;
+	bool busy;
+	bool recovery_needed;
+	bool in_recovery;
+	bool rw_wait;
+	bool waiting;
+	struct work_struct recovery_work;
+	wait_queue_head_t wait;
+	struct request *recovery_req;
+	struct request *complete_req;
+	struct mutex complete_lock;
+	struct work_struct complete_work;
+};
+
+struct mmc_blk_data {
+	struct device *parent;
+	struct gendisk *disk;
+	struct mmc_queue queue;
+	struct list_head part;
+	struct list_head rpmbs;
+	unsigned int flags;
+	struct kref kref;
+	unsigned int read_only;
+	unsigned int part_type;
+	unsigned int reset_done;
+	unsigned int part_curr;
+	int area_type;
+	struct dentry *status_dentry;
+	struct dentry *ext_csd_dentry;
+};
+
+struct mmc_ioc_cmd {
+	int write_flag;
+	int is_acmd;
+	__u32 opcode;
+	__u32 arg;
+	__u32 response[4];
+	unsigned int flags;
+	unsigned int blksz;
+	unsigned int blocks;
+	unsigned int postsleep_min_us;
+	unsigned int postsleep_max_us;
+	unsigned int data_timeout_ns;
+	unsigned int cmd_timeout_ms;
+	__u32 __pad;
+	__u64 data_ptr;
+};
+
+struct mmc_ioc_multi_cmd {
+	__u64 num_of_cmds;
+	struct mmc_ioc_cmd cmds[0];
+};
+
+struct mmc_rpmb_data {
+	struct device dev;
+	struct cdev chrdev;
+	int id;
+	unsigned int part_index;
+	struct mmc_blk_data *md;
+	struct list_head node;
+};
+
+struct mmc_blk_busy_data {
+	struct mmc_card *card;
+	u32 status;
+};
+
+struct mmc_blk_ioc_data {
+	struct mmc_ioc_cmd ic;
+	unsigned char *buf;
+	u64 buf_bytes;
+	unsigned int flags;
+	struct mmc_rpmb_data *rpmb;
+};
+
+enum sdhci_reset_reason {
+	SDHCI_RESET_FOR_INIT = 0,
+	SDHCI_RESET_FOR_REQUEST_ERROR = 1,
+	SDHCI_RESET_FOR_REQUEST_ERROR_DATA_ONLY = 2,
+	SDHCI_RESET_FOR_TUNING_ABORT = 3,
+	SDHCI_RESET_FOR_CARD_REMOVED = 4,
+	SDHCI_RESET_FOR_CQE_RECOVERY = 5,
+};
+
+enum sdhci_cookie {
+	COOKIE_UNMAPPED = 0,
+	COOKIE_PRE_MAPPED = 1,
+	COOKIE_MAPPED = 2,
+};
+
+struct sdhci_ops;
+
+struct sdhci_host {
+	const char *hw_name;
+	unsigned int quirks;
+	unsigned int quirks2;
+	int irq;
+	void *ioaddr;
+	phys_addr_t mapbase;
+	char *bounce_buffer;
+	dma_addr_t bounce_addr;
+	unsigned int bounce_buffer_size;
+	const struct sdhci_ops *ops;
+	struct mmc_host *mmc;
+	struct mmc_host_ops mmc_host_ops;
+	u64 dma_mask;
+	struct led_classdev led;
+	char led_name[32];
+	spinlock_t lock;
+	int flags;
+	unsigned int version;
+	unsigned int max_clk;
+	unsigned int timeout_clk;
+	u8 max_timeout_count;
+	unsigned int clk_mul;
+	unsigned int clock;
+	u8 pwr;
+	u8 drv_type;
+	bool reinit_uhs;
+	bool runtime_suspended;
+	bool bus_on;
+	bool preset_enabled;
+	bool pending_reset;
+	bool irq_wake_enabled;
+	bool v4_mode;
+	bool use_external_dma;
+	bool always_defer_done;
+	struct mmc_request *mrqs_done[2];
+	struct mmc_command *cmd;
+	struct mmc_command *data_cmd;
+	struct mmc_command *deferred_cmd;
+	struct mmc_data *data;
+	unsigned int data_early: 1;
+	struct sg_mapping_iter sg_miter;
+	unsigned int blocks;
+	int sg_count;
+	int max_adma;
+	void *adma_table;
+	void *align_buffer;
+	size_t adma_table_sz;
+	size_t align_buffer_sz;
+	dma_addr_t adma_addr;
+	dma_addr_t align_addr;
+	unsigned int desc_sz;
+	unsigned int alloc_desc_sz;
+	struct workqueue_struct *complete_wq;
+	struct work_struct complete_work;
+	struct timer_list timer;
+	struct timer_list data_timer;
+	u32 caps;
+	u32 caps1;
+	bool read_caps;
+	bool sdhci_core_to_disable_vqmmc;
+	unsigned int ocr_avail_sdio;
+	unsigned int ocr_avail_sd;
+	unsigned int ocr_avail_mmc;
+	u32 ocr_mask;
+	unsigned int timing;
+	u32 thread_isr;
+	u32 ier;
+	bool cqe_on;
+	u32 cqe_ier;
+	u32 cqe_err_ier;
+	wait_queue_head_t buf_ready_int;
+	unsigned int tuning_done;
+	unsigned int tuning_count;
+	unsigned int tuning_mode;
+	unsigned int tuning_err;
+	int tuning_delay;
+	int tuning_loop_count;
+	u32 sdma_boundary;
+	u32 adma_table_cnt;
+	u64 data_timeout;
+	u64 android_kabi_reserved1;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	unsigned long private[0];
+};
+
+struct sdhci_ops {
+	u32 (*read_l)(struct sdhci_host *, int);
+	u16 (*read_w)(struct sdhci_host *, int);
+	u8 (*read_b)(struct sdhci_host *, int);
+	void (*write_l)(struct sdhci_host *, u32, int);
+	void (*write_w)(struct sdhci_host *, u16, int);
+	void (*write_b)(struct sdhci_host *, u8, int);
+	void (*set_clock)(struct sdhci_host *, unsigned int);
+	void (*set_power)(struct sdhci_host *, unsigned char, unsigned short);
+	u32 (*irq)(struct sdhci_host *, u32);
+	int (*set_dma_mask)(struct sdhci_host *);
+	int (*enable_dma)(struct sdhci_host *);
+	unsigned int (*get_max_clock)(struct sdhci_host *);
+	unsigned int (*get_min_clock)(struct sdhci_host *);
+	unsigned int (*get_timeout_clock)(struct sdhci_host *);
+	unsigned int (*get_max_timeout_count)(struct sdhci_host *);
+	void (*set_timeout)(struct sdhci_host *, struct mmc_command *);
+	void (*set_bus_width)(struct sdhci_host *, int);
+	void (*platform_send_init_74_clocks)(struct sdhci_host *, u8);
+	unsigned int (*get_ro)(struct sdhci_host *);
+	void (*reset)(struct sdhci_host *, u8);
+	int (*platform_execute_tuning)(struct sdhci_host *, u32);
+	void (*set_uhs_signaling)(struct sdhci_host *, unsigned int);
+	void (*hw_reset)(struct sdhci_host *);
+	void (*adma_workaround)(struct sdhci_host *, u32);
+	void (*card_event)(struct sdhci_host *);
+	void (*voltage_switch)(struct sdhci_host *);
+	void (*adma_write_desc)(struct sdhci_host *, void **, dma_addr_t, int, unsigned int);
+	void (*copy_to_bounce_buffer)(struct sdhci_host *, struct mmc_data *, unsigned int);
+	void (*request_done)(struct sdhci_host *, struct mmc_request *);
+	void (*dump_vendor_regs)(struct sdhci_host *);
+	u64 android_kabi_reserved1;
+};
+
+struct sdhci_adma2_64_desc {
+	__le16 cmd;
+	__le16 len;
+	__le32 addr_lo;
+	__le32 addr_hi;
+};
+
+struct sdhci_pltfm_host {
+	struct clk *clk;
+	unsigned int clock;
+	u16 xfer_mode_shadow;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	unsigned long private[0];
+};
+
+struct sdhci_pltfm_data {
+	const struct sdhci_ops *ops;
+	unsigned int quirks;
+	unsigned int quirks2;
+};
+
+typedef void (*btf_trace_ufshcd_clk_gating)(void *, const char *, int);
+
+typedef void (*btf_trace_ufshcd_clk_scaling)(void *, const char *, const char *, const char *, u32, u32);
+
+typedef void (*btf_trace_ufshcd_auto_bkops_state)(void *, const char *, const char *);
+
+typedef void (*btf_trace_ufshcd_profile_hibern8)(void *, const char *, const char *, s64, int);
+
+typedef void (*btf_trace_ufshcd_profile_clk_gating)(void *, const char *, const char *, s64, int);
+
+typedef void (*btf_trace_ufshcd_profile_clk_scaling)(void *, const char *, const char *, s64, int);
+
+typedef void (*btf_trace_ufshcd_system_suspend)(void *, const char *, int, s64, int, int);
+
+typedef void (*btf_trace_ufshcd_system_resume)(void *, const char *, int, s64, int, int);
+
+typedef void (*btf_trace_ufshcd_runtime_suspend)(void *, const char *, int, s64, int, int);
+
+typedef void (*btf_trace_ufshcd_runtime_resume)(void *, const char *, int, s64, int, int);
+
+typedef void (*btf_trace_ufshcd_init)(void *, const char *, int, s64, int, int);
+
+typedef void (*btf_trace_ufshcd_wl_suspend)(void *, const char *, int, s64, int, int);
+
+typedef void (*btf_trace_ufshcd_wl_resume)(void *, const char *, int, s64, int, int);
+
+typedef void (*btf_trace_ufshcd_wl_runtime_suspend)(void *, const char *, int, s64, int, int);
+
+typedef void (*btf_trace_ufshcd_wl_runtime_resume)(void *, const char *, int, s64, int, int);
+
+enum ufs_trace_str_t {
+	UFS_CMD_SEND = 0,
+	UFS_CMD_COMP = 1,
+	UFS_DEV_COMP = 2,
+	UFS_QUERY_SEND = 3,
+	UFS_QUERY_COMP = 4,
+	UFS_QUERY_ERR = 5,
+	UFS_TM_SEND = 6,
+	UFS_TM_COMP = 7,
+	UFS_TM_ERR = 8,
+};
+
+typedef void (*btf_trace_ufshcd_command)(void *, const char *, enum ufs_trace_str_t, unsigned int, u32, u32, int, u32, u64, u8, u8);
+
+typedef void (*btf_trace_ufshcd_uic_command)(void *, const char *, enum ufs_trace_str_t, u32, u32, u32, u32);
+
+enum ufs_trace_tsf_t {
+	UFS_TSF_CDB = 0,
+	UFS_TSF_OSF = 1,
+	UFS_TSF_TM_INPUT = 2,
+	UFS_TSF_TM_OUTPUT = 3,
+};
+
+typedef void (*btf_trace_ufshcd_upiu)(void *, const char *, enum ufs_trace_str_t, void *, void *, enum ufs_trace_tsf_t);
+
+typedef void (*btf_trace_ufshcd_exception_event)(void *, const char *, u16);
+
+enum ufs_dev_pwr_mode {
+	UFS_ACTIVE_PWR_MODE = 1,
+	UFS_SLEEP_PWR_MODE = 2,
+	UFS_POWERDOWN_PWR_MODE = 3,
+	UFS_DEEPSLEEP_PWR_MODE = 4,
+};
+
+enum uic_link_state {
+	UIC_LINK_OFF_STATE = 0,
+	UIC_LINK_ACTIVE_STATE = 1,
+	UIC_LINK_HIBERN8_STATE = 2,
+	UIC_LINK_BROKEN_STATE = 3,
+};
+
+struct ufs_pm_lvl_states {
+	enum ufs_dev_pwr_mode dev_state;
+	enum uic_link_state link_state;
+};
+
+struct ufs_dev_quirk {
+	u16 wmanufacturerid;
+	const u8 *model;
+	unsigned int quirk;
+};
+
+enum ufs_ref_clk_freq {
+	REF_CLK_FREQ_19_2_MHZ = 0,
+	REF_CLK_FREQ_26_MHZ = 1,
+	REF_CLK_FREQ_38_4_MHZ = 2,
+	REF_CLK_FREQ_52_MHZ = 3,
+	REF_CLK_FREQ_INVAL = -1,
+};
+
+struct ufs_ref_clk {
+	unsigned long freq_hz;
+	enum ufs_ref_clk_freq val;
+};
+
+struct devfreq_simple_ondemand_data {
+	unsigned int upthreshold;
+	unsigned int downdifferential;
+};
+
+struct ufs_hba_variant_params {
+	struct devfreq_dev_profile devfreq_profile;
+	struct devfreq_simple_ondemand_data ondemand_data;
+	u16 hba_enable_delay_us;
+	u32 wb_flush_threshold;
+};
+
+enum ufs_pm_level {
+	UFS_PM_LVL_0 = 0,
+	UFS_PM_LVL_1 = 1,
+	UFS_PM_LVL_2 = 2,
+	UFS_PM_LVL_3 = 3,
+	UFS_PM_LVL_4 = 4,
+	UFS_PM_LVL_5 = 5,
+	UFS_PM_LVL_6 = 6,
+	UFS_PM_LVL_MAX = 7,
+};
+
+enum ufs_notify_change_status {
+	PRE_CHANGE = 0,
+	POST_CHANGE = 1,
+};
+
+enum uic_cmd_dme {
+	UIC_CMD_DME_GET = 1,
+	UIC_CMD_DME_SET = 2,
+	UIC_CMD_DME_PEER_GET = 3,
+	UIC_CMD_DME_PEER_SET = 4,
+	UIC_CMD_DME_POWERON = 16,
+	UIC_CMD_DME_POWEROFF = 17,
+	UIC_CMD_DME_ENABLE = 18,
+	UIC_CMD_DME_RESET = 20,
+	UIC_CMD_DME_END_PT_RST = 21,
+	UIC_CMD_DME_LINK_STARTUP = 22,
+	UIC_CMD_DME_HIBER_ENTER = 23,
+	UIC_CMD_DME_HIBER_EXIT = 24,
+	UIC_CMD_DME_TEST_MODE = 26,
+};
+
+enum ufs_pm_op {
+	UFS_RUNTIME_PM = 0,
+	UFS_SYSTEM_PM = 1,
+	UFS_SHUTDOWN_PM = 2,
+};
+
+enum ufs_event_type {
+	UFS_EVT_PA_ERR = 0,
+	UFS_EVT_DL_ERR = 1,
+	UFS_EVT_NL_ERR = 2,
+	UFS_EVT_TL_ERR = 3,
+	UFS_EVT_DME_ERR = 4,
+	UFS_EVT_AUTO_HIBERN8_ERR = 5,
+	UFS_EVT_FATAL_ERR = 6,
+	UFS_EVT_LINK_STARTUP_FAIL = 7,
+	UFS_EVT_RESUME_ERR = 8,
+	UFS_EVT_SUSPEND_ERR = 9,
+	UFS_EVT_WL_SUSP_ERR = 10,
+	UFS_EVT_WL_RES_ERR = 11,
+	UFS_EVT_DEV_RESET = 12,
+	UFS_EVT_HOST_RESET = 13,
+	UFS_EVT_ABORT = 14,
+	UFS_EVT_CNT = 15,
+};
+
+enum ufshcd_state {
+	UFSHCD_STATE_RESET = 0,
+	UFSHCD_STATE_OPERATIONAL = 1,
+	UFSHCD_STATE_EH_SCHEDULED_NON_FATAL = 2,
+	UFSHCD_STATE_EH_SCHEDULED_FATAL = 3,
+	UFSHCD_STATE_ERROR = 4,
+};
+
+enum dev_cmd_type {
+	DEV_CMD_TYPE_NOP = 0,
+	DEV_CMD_TYPE_QUERY = 1,
+	DEV_CMD_TYPE_RPMB = 2,
+};
+
+enum clk_gating_state {
+	CLKS_OFF = 0,
+	CLKS_ON = 1,
+	REQ_CLKS_OFF = 2,
+	REQ_CLKS_ON = 3,
+};
+
+enum bkops_status {
+	BKOPS_STATUS_NO_OP = 0,
+	BKOPS_STATUS_NON_CRITICAL = 1,
+	BKOPS_STATUS_PERF_IMPACT = 2,
+	BKOPS_STATUS_CRITICAL = 3,
+	BKOPS_STATUS_MAX = 3,
+};
+
+enum {
+	REG_CONTROLLER_CAPABILITIES = 0,
+	REG_MCQCAP = 4,
+	REG_UFS_VERSION = 8,
+	REG_CONTROLLER_DEV_ID = 16,
+	REG_CONTROLLER_PROD_ID = 20,
+	REG_AUTO_HIBERNATE_IDLE_TIMER = 24,
+	REG_INTERRUPT_STATUS = 32,
+	REG_INTERRUPT_ENABLE = 36,
+	REG_CONTROLLER_STATUS = 48,
+	REG_CONTROLLER_ENABLE = 52,
+	REG_UIC_ERROR_CODE_PHY_ADAPTER_LAYER = 56,
+	REG_UIC_ERROR_CODE_DATA_LINK_LAYER = 60,
+	REG_UIC_ERROR_CODE_NETWORK_LAYER = 64,
+	REG_UIC_ERROR_CODE_TRANSPORT_LAYER = 68,
+	REG_UIC_ERROR_CODE_DME = 72,
+	REG_UTP_TRANSFER_REQ_INT_AGG_CONTROL = 76,
+	REG_UTP_TRANSFER_REQ_LIST_BASE_L = 80,
+	REG_UTP_TRANSFER_REQ_LIST_BASE_H = 84,
+	REG_UTP_TRANSFER_REQ_DOOR_BELL = 88,
+	REG_UTP_TRANSFER_REQ_LIST_CLEAR = 92,
+	REG_UTP_TRANSFER_REQ_LIST_RUN_STOP = 96,
+	REG_UTP_TASK_REQ_LIST_BASE_L = 112,
+	REG_UTP_TASK_REQ_LIST_BASE_H = 116,
+	REG_UTP_TASK_REQ_DOOR_BELL = 120,
+	REG_UTP_TASK_REQ_LIST_CLEAR = 124,
+	REG_UTP_TASK_REQ_LIST_RUN_STOP = 128,
+	REG_UIC_COMMAND = 144,
+	REG_UIC_COMMAND_ARG_1 = 148,
+	REG_UIC_COMMAND_ARG_2 = 152,
+	REG_UIC_COMMAND_ARG_3 = 156,
+	UFSHCI_REG_SPACE_SIZE = 160,
+	REG_UFS_CCAP = 256,
+	REG_UFS_CRYPTOCAP = 260,
+	REG_UFS_MEM_CFG = 768,
+	REG_UFS_MCQ_CFG = 896,
+	REG_UFS_ESILBA = 900,
+	REG_UFS_ESIUBA = 904,
+	UFSHCI_CRYPTO_REG_SPACE_SIZE = 1024,
+};
+
+enum ufs_unipro_ver {
+	UFS_UNIPRO_VER_RESERVED = 0,
+	UFS_UNIPRO_VER_1_40 = 1,
+	UFS_UNIPRO_VER_1_41 = 2,
+	UFS_UNIPRO_VER_1_6 = 3,
+	UFS_UNIPRO_VER_1_61 = 4,
+	UFS_UNIPRO_VER_1_8 = 5,
+	UFS_UNIPRO_VER_MAX = 6,
+	UFS_UNIPRO_VER_MASK = 15,
+};
+
+enum ufshcd_quirks {
+	UFSHCD_QUIRK_BROKEN_INTR_AGGR = 1,
+	UFSHCD_QUIRK_DELAY_BEFORE_DME_CMDS = 2,
+	UFSHCD_QUIRK_BROKEN_LCC = 4,
+	UFSHCD_QUIRK_BROKEN_PA_RXHSUNTERMCAP = 8,
+	UFSHCD_QUIRK_DME_PEER_ACCESS_AUTO_MODE = 16,
+	UFSHCD_QUIRK_BROKEN_UFS_HCI_VERSION = 32,
+	UFSHCI_QUIRK_BROKEN_REQ_LIST_CLR = 64,
+	UFSHCI_QUIRK_SKIP_RESET_INTR_AGGR = 128,
+	UFSHCI_QUIRK_BROKEN_HCE = 256,
+	UFSHCD_QUIRK_PRDT_BYTE_GRAN = 512,
+	UFSHCD_QUIRK_BROKEN_OCS_FATAL_ERROR = 1024,
+	UFSHCD_QUIRK_BROKEN_AUTO_HIBERN8 = 2048,
+	UFSHCI_QUIRK_SKIP_MANUAL_WB_FLUSH_CTRL = 4096,
+	UFSHCD_QUIRK_SKIP_DEF_UNIPRO_TIMEOUT_SETTING = 8192,
+	UFSHCD_QUIRK_BROKEN_UIC_CMD = 32768,
+	UFSHCD_QUIRK_SKIP_PH_CONFIGURATION = 65536,
+	UFSHCD_QUIRK_BROKEN_64BIT_ADDRESS = 131072,
+	UFSHCD_QUIRK_HIBERN_FASTAUTO = 262144,
+	UFSHCD_QUIRK_REINIT_AFTER_MAX_GEAR_SWITCH = 524288,
+	UFSHCD_QUIRK_MCQ_BROKEN_INTR = 1048576,
+	UFSHCD_QUIRK_MCQ_BROKEN_RTC = 2097152,
+};
+
+enum query_opcode {
+	UPIU_QUERY_OPCODE_NOP = 0,
+	UPIU_QUERY_OPCODE_READ_DESC = 1,
+	UPIU_QUERY_OPCODE_WRITE_DESC = 2,
+	UPIU_QUERY_OPCODE_READ_ATTR = 3,
+	UPIU_QUERY_OPCODE_WRITE_ATTR = 4,
+	UPIU_QUERY_OPCODE_READ_FLAG = 5,
+	UPIU_QUERY_OPCODE_SET_FLAG = 6,
+	UPIU_QUERY_OPCODE_CLEAR_FLAG = 7,
+	UPIU_QUERY_OPCODE_TOGGLE_FLAG = 8,
+};
+
+enum flag_idn {
+	QUERY_FLAG_IDN_FDEVICEINIT = 1,
+	QUERY_FLAG_IDN_PERMANENT_WPE = 2,
+	QUERY_FLAG_IDN_PWR_ON_WPE = 3,
+	QUERY_FLAG_IDN_BKOPS_EN = 4,
+	QUERY_FLAG_IDN_LIFE_SPAN_MODE_ENABLE = 5,
+	QUERY_FLAG_IDN_PURGE_ENABLE = 6,
+	QUERY_FLAG_IDN_RESERVED2 = 7,
+	QUERY_FLAG_IDN_FPHYRESOURCEREMOVAL = 8,
+	QUERY_FLAG_IDN_BUSY_RTC = 9,
+	QUERY_FLAG_IDN_RESERVED3 = 10,
+	QUERY_FLAG_IDN_PERMANENTLY_DISABLE_FW_UPDATE = 11,
+	QUERY_FLAG_IDN_WB_EN = 14,
+	QUERY_FLAG_IDN_WB_BUFF_FLUSH_EN = 15,
+	QUERY_FLAG_IDN_WB_BUFF_FLUSH_DURING_HIBERN8 = 16,
+	QUERY_FLAG_IDN_HPB_RESET = 17,
+	QUERY_FLAG_IDN_HPB_EN = 18,
+};
+
+enum {
+	UPIU_QUERY_FUNC_STANDARD_READ_REQUEST = 1,
+	UPIU_QUERY_FUNC_STANDARD_WRITE_REQUEST = 129,
+};
+
+enum attr_idn {
+	QUERY_ATTR_IDN_BOOT_LU_EN = 0,
+	QUERY_ATTR_IDN_MAX_HPB_SINGLE_CMD = 1,
+	QUERY_ATTR_IDN_POWER_MODE = 2,
+	QUERY_ATTR_IDN_ACTIVE_ICC_LVL = 3,
+	QUERY_ATTR_IDN_OOO_DATA_EN = 4,
+	QUERY_ATTR_IDN_BKOPS_STATUS = 5,
+	QUERY_ATTR_IDN_PURGE_STATUS = 6,
+	QUERY_ATTR_IDN_MAX_DATA_IN = 7,
+	QUERY_ATTR_IDN_MAX_DATA_OUT = 8,
+	QUERY_ATTR_IDN_DYN_CAP_NEEDED = 9,
+	QUERY_ATTR_IDN_REF_CLK_FREQ = 10,
+	QUERY_ATTR_IDN_CONF_DESC_LOCK = 11,
+	QUERY_ATTR_IDN_MAX_NUM_OF_RTT = 12,
+	QUERY_ATTR_IDN_EE_CONTROL = 13,
+	QUERY_ATTR_IDN_EE_STATUS = 14,
+	QUERY_ATTR_IDN_SECONDS_PASSED = 15,
+	QUERY_ATTR_IDN_CNTX_CONF = 16,
+	QUERY_ATTR_IDN_CORR_PRG_BLK_NUM = 17,
+	QUERY_ATTR_IDN_RESERVED2 = 18,
+	QUERY_ATTR_IDN_RESERVED3 = 19,
+	QUERY_ATTR_IDN_FFU_STATUS = 20,
+	QUERY_ATTR_IDN_PSA_STATE = 21,
+	QUERY_ATTR_IDN_PSA_DATA_SIZE = 22,
+	QUERY_ATTR_IDN_REF_CLK_GATING_WAIT_TIME = 23,
+	QUERY_ATTR_IDN_CASE_ROUGH_TEMP = 24,
+	QUERY_ATTR_IDN_HIGH_TEMP_BOUND = 25,
+	QUERY_ATTR_IDN_LOW_TEMP_BOUND = 26,
+	QUERY_ATTR_IDN_WB_FLUSH_STATUS = 28,
+	QUERY_ATTR_IDN_AVAIL_WB_BUFF_SIZE = 29,
+	QUERY_ATTR_IDN_WB_BUFF_LIFE_TIME_EST = 30,
+	QUERY_ATTR_IDN_CURR_WB_BUFF_SIZE = 31,
+	QUERY_ATTR_IDN_EXT_IID_EN = 42,
+	QUERY_ATTR_IDN_TIMESTAMP = 48,
+};
+
+enum desc_idn {
+	QUERY_DESC_IDN_DEVICE = 0,
+	QUERY_DESC_IDN_CONFIGURATION = 1,
+	QUERY_DESC_IDN_UNIT = 2,
+	QUERY_DESC_IDN_RFU_0 = 3,
+	QUERY_DESC_IDN_INTERCONNECT = 4,
+	QUERY_DESC_IDN_STRING = 5,
+	QUERY_DESC_IDN_RFU_1 = 6,
+	QUERY_DESC_IDN_GEOMETRY = 7,
+	QUERY_DESC_IDN_POWER = 8,
+	QUERY_DESC_IDN_HEALTH = 9,
+	QUERY_DESC_IDN_MAX = 10,
+};
+
+enum desc_header_offset {
+	QUERY_DESC_LENGTH_OFFSET = 0,
+	QUERY_DESC_DESC_TYPE_OFFSET = 1,
+};
+
+enum ufs_hs_gear_tag {
+	UFS_HS_DONT_CHANGE = 0,
+	UFS_HS_G1 = 1,
+	UFS_HS_G2 = 2,
+	UFS_HS_G3 = 3,
+	UFS_HS_G4 = 4,
+	UFS_HS_G5 = 5,
+};
+
+enum {
+	FAST_MODE = 1,
+	SLOW_MODE = 2,
+	FASTAUTO_MODE = 4,
+	SLOWAUTO_MODE = 5,
+	UNCHANGED = 7,
+};
+
+enum {
+	UFSHCD_EH_IN_PROGRESS = 1,
+};
+
+enum utp_ocs {
+	OCS_SUCCESS = 0,
+	OCS_INVALID_CMD_TABLE_ATTR = 1,
+	OCS_INVALID_PRDT_ATTR = 2,
+	OCS_MISMATCH_DATA_BUF_SIZE = 3,
+	OCS_MISMATCH_RESP_UPIU_SIZE = 4,
+	OCS_PEER_COMM_FAILURE = 5,
+	OCS_ABORTED = 6,
+	OCS_FATAL_ERROR = 7,
+	OCS_DEVICE_FATAL_ERROR = 8,
+	OCS_INVALID_CRYPTO_CONFIG = 9,
+	OCS_GENERAL_CRYPTO_ERROR = 10,
+	OCS_INVALID_COMMAND_STATUS = 15,
+};
+
+enum {
+	UTP_CMD_TYPE_SCSI = 0,
+	UTP_CMD_TYPE_UFS = 1,
+	UTP_CMD_TYPE_DEV_MANAGE = 2,
+};
+
+enum {
+	UTP_CMD_TYPE_UFS_STORAGE = 1,
+};
+
+enum {
+	MASK_OCS = 15,
+};
+
+enum upiu_request_transaction {
+	UPIU_TRANSACTION_NOP_OUT = 0,
+	UPIU_TRANSACTION_COMMAND = 1,
+	UPIU_TRANSACTION_DATA_OUT = 2,
+	UPIU_TRANSACTION_TASK_REQ = 4,
+	UPIU_TRANSACTION_QUERY_REQ = 22,
+};
+
+enum {
+	UFS_UPIU_REPORT_LUNS_WLUN = 129,
+	UFS_UPIU_UFS_DEVICE_WLUN = 208,
+	UFS_UPIU_BOOT_WLUN = 176,
+	UFS_UPIU_RPMB_WLUN = 196,
+};
+
+enum {
+	MASK_TRANSFER_REQUESTS_SLOTS = 31,
+	MASK_TASK_MANAGEMENT_REQUEST_SLOTS = 458752,
+	MASK_EHSLUTRD_SUPPORTED = 4194304,
+	MASK_AUTO_HIBERN8_SUPPORT = 8388608,
+	MASK_64_ADDRESSING_SUPPORT = 16777216,
+	MASK_OUT_OF_ORDER_DATA_DELIVERY_SUPPORT = 33554432,
+	MASK_UIC_DME_TEST_MODE_SUPPORT = 67108864,
+	MASK_CRYPTO_SUPPORT = 268435456,
+	MASK_MCQ_SUPPORT = 1073741824,
+};
+
+enum {
+	UFS_ABORT_TASK = 1,
+	UFS_ABORT_TASK_SET = 2,
+	UFS_CLEAR_TASK_SET = 4,
+	UFS_LOGICAL_RESET = 8,
+	UFS_QUERY_TASK = 128,
+	UFS_QUERY_TASK_SET = 129,
+};
+
+enum {
+	UPIU_TASK_MANAGEMENT_FUNC_COMPL = 0,
+	UPIU_TASK_MANAGEMENT_FUNC_NOT_SUPPORTED = 4,
+	UPIU_TASK_MANAGEMENT_FUNC_SUCCEEDED = 8,
+	UPIU_TASK_MANAGEMENT_FUNC_FAILED = 5,
+	UPIU_INCORRECT_LOGICAL_UNIT_NO = 9,
+};
+
+enum {
+	UFSHCD_MAX_CHANNEL = 0,
+	UFSHCD_MAX_ID = 1,
+	UFSHCD_CMD_PER_LUN = 31,
+	UFSHCD_CAN_QUEUE = 31,
+};
+
+enum ufshcd_caps {
+	UFSHCD_CAP_CLK_GATING = 1,
+	UFSHCD_CAP_HIBERN8_WITH_CLK_GATING = 2,
+	UFSHCD_CAP_CLK_SCALING = 4,
+	UFSHCD_CAP_AUTO_BKOPS_SUSPEND = 8,
+	UFSHCD_CAP_INTR_AGGR = 16,
+	UFSHCD_CAP_KEEP_AUTO_BKOPS_ENABLED_EXCEPT_SUSPEND = 32,
+	UFSHCD_CAP_RPM_AUTOSUSPEND = 64,
+	UFSHCD_CAP_WB_EN = 128,
+	UFSHCD_CAP_CRYPTO = 256,
+	UFSHCD_CAP_AGGR_POWER_COLLAPSE = 512,
+	UFSHCD_CAP_DEEPSLEEP = 1024,
+	UFSHCD_CAP_TEMP_NOTIF = 2048,
+	UFSHCD_CAP_WB_WITH_CLK_SCALING = 4096,
+};
+
+enum {
+	UIC_CMD_TIMEOUT_DEFAULT = 500,
+	UIC_CMD_TIMEOUT_MAX = 2000,
+};
+
+enum {
+	PWR_OK = 0,
+	PWR_LOCAL = 1,
+	PWR_REMOTE = 2,
+	PWR_BUSY = 3,
+	PWR_ERROR_CAP = 4,
+	PWR_FATAL_ERROR = 5,
+};
+
+enum {
+	INTERRUPT_MASK_ALL_VER_10 = 200703,
+	INTERRUPT_MASK_RW_VER_10 = 196608,
+	INTERRUPT_MASK_ALL_VER_11 = 204799,
+	INTERRUPT_MASK_ALL_VER_21 = 466943,
+};
+
+enum ufshcd_android_quirks {
+	UFSHCD_ANDROID_QUIRK_CUSTOM_CRYPTO_PROFILE = 1,
+	UFSHCD_ANDROID_QUIRK_BROKEN_CRYPTO_ENABLE = 2,
+	UFSHCD_ANDROID_QUIRK_KEYS_IN_PRDT = 4,
+};
+
+enum {
+	UPIU_RSP_FLAG_UNDERFLOW = 32,
+	UPIU_RSP_FLAG_OVERFLOW = 64,
+};
+
+enum upiu_response_transaction {
+	UPIU_TRANSACTION_NOP_IN = 32,
+	UPIU_TRANSACTION_RESPONSE = 33,
+	UPIU_TRANSACTION_DATA_IN = 34,
+	UPIU_TRANSACTION_TASK_RSP = 36,
+	UPIU_TRANSACTION_READY_XFER = 49,
+	UPIU_TRANSACTION_QUERY_RSP = 54,
+	UPIU_TRANSACTION_REJECT_UPIU = 63,
+};
+
+enum {
+	MASK_EE_STATUS = 65535,
+	MASK_EE_DYNCAP_EVENT = 1,
+	MASK_EE_SYSPOOL_EVENT = 2,
+	MASK_EE_URGENT_BKOPS = 4,
+	MASK_EE_TOO_HIGH_TEMP = 8,
+	MASK_EE_TOO_LOW_TEMP = 16,
+	MASK_EE_WRITEBOOSTER_EVENT = 32,
+	MASK_EE_PERFORMANCE_THROTTLING = 64,
+};
+
+enum {
+	WB_BUF_MODE_LU_DEDICATED = 0,
+	WB_BUF_MODE_SHARED = 1,
+};
+
+enum {
+	UFSHCD_POLL_FROM_INTERRUPT_CONTEXT = -1,
+};
+
+enum {
+	UFSHCD_UIC_DL_PA_INIT_ERROR = 1,
+	UFSHCD_UIC_DL_NAC_RECEIVED_ERROR = 2,
+	UFSHCD_UIC_DL_TCx_REPLAY_ERROR = 4,
+	UFSHCD_UIC_NL_ERROR = 8,
+	UFSHCD_UIC_TL_ERROR = 16,
+	UFSHCD_UIC_DME_ERROR = 32,
+	UFSHCD_UIC_PA_GENERIC_ERROR = 64,
+};
+
+enum utp_data_direction {
+	UTP_NO_DATA_TRANSFER = 0,
+	UTP_HOST_TO_DEVICE = 1,
+	UTP_DEVICE_TO_HOST = 2,
+};
+
+enum {
+	UPIU_CMD_FLAGS_NONE = 0,
+	UPIU_CMD_FLAGS_WRITE = 32,
+	UPIU_CMD_FLAGS_READ = 64,
+};
+
+enum {
+	MASK_TM_SERVICE_RESP = 255,
+};
+
+enum ufs_pwm_gear_tag {
+	UFS_PWM_DONT_CHANGE = 0,
+	UFS_PWM_G1 = 1,
+	UFS_PWM_G2 = 2,
+	UFS_PWM_G3 = 3,
+	UFS_PWM_G4 = 4,
+	UFS_PWM_G5 = 5,
+	UFS_PWM_G6 = 6,
+	UFS_PWM_G7 = 7,
+};
+
+enum ufs_lanes {
+	UFS_LANE_DONT_CHANGE = 0,
+	UFS_LANE_1 = 1,
+	UFS_LANE_2 = 2,
+};
+
+enum geometry_desc_param {
+	GEOMETRY_DESC_PARAM_LEN = 0,
+	GEOMETRY_DESC_PARAM_TYPE = 1,
+	GEOMETRY_DESC_PARAM_DEV_CAP = 4,
+	GEOMETRY_DESC_PARAM_MAX_NUM_LUN = 12,
+	GEOMETRY_DESC_PARAM_SEG_SIZE = 13,
+	GEOMETRY_DESC_PARAM_ALLOC_UNIT_SIZE = 17,
+	GEOMETRY_DESC_PARAM_MIN_BLK_SIZE = 18,
+	GEOMETRY_DESC_PARAM_OPT_RD_BLK_SIZE = 19,
+	GEOMETRY_DESC_PARAM_OPT_WR_BLK_SIZE = 20,
+	GEOMETRY_DESC_PARAM_MAX_IN_BUF_SIZE = 21,
+	GEOMETRY_DESC_PARAM_MAX_OUT_BUF_SIZE = 22,
+	GEOMETRY_DESC_PARAM_RPMB_RW_SIZE = 23,
+	GEOMETRY_DESC_PARAM_DYN_CAP_RSRC_PLC = 24,
+	GEOMETRY_DESC_PARAM_DATA_ORDER = 25,
+	GEOMETRY_DESC_PARAM_MAX_NUM_CTX = 26,
+	GEOMETRY_DESC_PARAM_TAG_UNIT_SIZE = 27,
+	GEOMETRY_DESC_PARAM_TAG_RSRC_SIZE = 28,
+	GEOMETRY_DESC_PARAM_SEC_RM_TYPES = 29,
+	GEOMETRY_DESC_PARAM_MEM_TYPES = 30,
+	GEOMETRY_DESC_PARAM_SCM_MAX_NUM_UNITS = 32,
+	GEOMETRY_DESC_PARAM_SCM_CAP_ADJ_FCTR = 36,
+	GEOMETRY_DESC_PARAM_NPM_MAX_NUM_UNITS = 38,
+	GEOMETRY_DESC_PARAM_NPM_CAP_ADJ_FCTR = 42,
+	GEOMETRY_DESC_PARAM_ENM1_MAX_NUM_UNITS = 44,
+	GEOMETRY_DESC_PARAM_ENM1_CAP_ADJ_FCTR = 48,
+	GEOMETRY_DESC_PARAM_ENM2_MAX_NUM_UNITS = 50,
+	GEOMETRY_DESC_PARAM_ENM2_CAP_ADJ_FCTR = 54,
+	GEOMETRY_DESC_PARAM_ENM3_MAX_NUM_UNITS = 56,
+	GEOMETRY_DESC_PARAM_ENM3_CAP_ADJ_FCTR = 60,
+	GEOMETRY_DESC_PARAM_ENM4_MAX_NUM_UNITS = 62,
+	GEOMETRY_DESC_PARAM_ENM4_CAP_ADJ_FCTR = 66,
+	GEOMETRY_DESC_PARAM_OPT_LOG_BLK_SIZE = 68,
+	GEOMETRY_DESC_PARAM_HPB_REGION_SIZE = 72,
+	GEOMETRY_DESC_PARAM_HPB_NUMBER_LU = 73,
+	GEOMETRY_DESC_PARAM_HPB_SUBREGION_SIZE = 74,
+	GEOMETRY_DESC_PARAM_HPB_MAX_ACTIVE_REGS = 75,
+	GEOMETRY_DESC_PARAM_WB_MAX_ALLOC_UNITS = 79,
+	GEOMETRY_DESC_PARAM_WB_MAX_WB_LUNS = 83,
+	GEOMETRY_DESC_PARAM_WB_BUFF_CAP_ADJ = 84,
+	GEOMETRY_DESC_PARAM_WB_SUP_RED_TYPE = 85,
+	GEOMETRY_DESC_PARAM_WB_SUP_WB_TYPE = 86,
+};
+
+enum device_desc_param {
+	DEVICE_DESC_PARAM_LEN = 0,
+	DEVICE_DESC_PARAM_TYPE = 1,
+	DEVICE_DESC_PARAM_DEVICE_TYPE = 2,
+	DEVICE_DESC_PARAM_DEVICE_CLASS = 3,
+	DEVICE_DESC_PARAM_DEVICE_SUB_CLASS = 4,
+	DEVICE_DESC_PARAM_PRTCL = 5,
+	DEVICE_DESC_PARAM_NUM_LU = 6,
+	DEVICE_DESC_PARAM_NUM_WLU = 7,
+	DEVICE_DESC_PARAM_BOOT_ENBL = 8,
+	DEVICE_DESC_PARAM_DESC_ACCSS_ENBL = 9,
+	DEVICE_DESC_PARAM_INIT_PWR_MODE = 10,
+	DEVICE_DESC_PARAM_HIGH_PR_LUN = 11,
+	DEVICE_DESC_PARAM_SEC_RMV_TYPE = 12,
+	DEVICE_DESC_PARAM_SEC_LU = 13,
+	DEVICE_DESC_PARAM_BKOP_TERM_LT = 14,
+	DEVICE_DESC_PARAM_ACTVE_ICC_LVL = 15,
+	DEVICE_DESC_PARAM_SPEC_VER = 16,
+	DEVICE_DESC_PARAM_MANF_DATE = 18,
+	DEVICE_DESC_PARAM_MANF_NAME = 20,
+	DEVICE_DESC_PARAM_PRDCT_NAME = 21,
+	DEVICE_DESC_PARAM_SN = 22,
+	DEVICE_DESC_PARAM_OEM_ID = 23,
+	DEVICE_DESC_PARAM_MANF_ID = 24,
+	DEVICE_DESC_PARAM_UD_OFFSET = 26,
+	DEVICE_DESC_PARAM_UD_LEN = 27,
+	DEVICE_DESC_PARAM_RTT_CAP = 28,
+	DEVICE_DESC_PARAM_FRQ_RTC = 29,
+	DEVICE_DESC_PARAM_UFS_FEAT = 31,
+	DEVICE_DESC_PARAM_FFU_TMT = 32,
+	DEVICE_DESC_PARAM_Q_DPTH = 33,
+	DEVICE_DESC_PARAM_DEV_VER = 34,
+	DEVICE_DESC_PARAM_NUM_SEC_WPA = 36,
+	DEVICE_DESC_PARAM_PSA_MAX_DATA = 37,
+	DEVICE_DESC_PARAM_PSA_TMT = 41,
+	DEVICE_DESC_PARAM_PRDCT_REV = 42,
+	DEVICE_DESC_PARAM_HPB_VER = 64,
+	DEVICE_DESC_PARAM_HPB_CONTROL = 66,
+	DEVICE_DESC_PARAM_EXT_UFS_FEATURE_SUP = 79,
+	DEVICE_DESC_PARAM_WB_PRESRV_USRSPC_EN = 83,
+	DEVICE_DESC_PARAM_WB_TYPE = 84,
+	DEVICE_DESC_PARAM_WB_SHARED_ALLOC_UNITS = 85,
+};
+
+enum {
+	UFS_DEV_LOW_TEMP_NOTIF = 16,
+	UFS_DEV_HIGH_TEMP_NOTIF = 32,
+	UFS_DEV_EXT_TEMP_NOTIF = 64,
+	UFS_DEV_HPB_SUPPORT = 128,
+	UFS_DEV_WRITE_BOOSTER_SUP = 256,
+	UFS_DEV_EXT_IID_SUP = 65536,
+};
+
+enum unit_desc_param {
+	UNIT_DESC_PARAM_LEN = 0,
+	UNIT_DESC_PARAM_TYPE = 1,
+	UNIT_DESC_PARAM_UNIT_INDEX = 2,
+	UNIT_DESC_PARAM_LU_ENABLE = 3,
+	UNIT_DESC_PARAM_BOOT_LUN_ID = 4,
+	UNIT_DESC_PARAM_LU_WR_PROTECT = 5,
+	UNIT_DESC_PARAM_LU_Q_DEPTH = 6,
+	UNIT_DESC_PARAM_PSA_SENSITIVE = 7,
+	UNIT_DESC_PARAM_MEM_TYPE = 8,
+	UNIT_DESC_PARAM_DATA_RELIABILITY = 9,
+	UNIT_DESC_PARAM_LOGICAL_BLK_SIZE = 10,
+	UNIT_DESC_PARAM_LOGICAL_BLK_COUNT = 11,
+	UNIT_DESC_PARAM_ERASE_BLK_SIZE = 19,
+	UNIT_DESC_PARAM_PROVISIONING_TYPE = 23,
+	UNIT_DESC_PARAM_PHY_MEM_RSRC_CNT = 24,
+	UNIT_DESC_PARAM_CTX_CAPABILITIES = 32,
+	UNIT_DESC_PARAM_LARGE_UNIT_SIZE_M1 = 34,
+	UNIT_DESC_PARAM_HPB_LU_MAX_ACTIVE_RGNS = 35,
+	UNIT_DESC_PARAM_HPB_PIN_RGN_START_OFF = 37,
+	UNIT_DESC_PARAM_HPB_NUM_PIN_RGNS = 39,
+	UNIT_DESC_PARAM_WB_BUF_ALLOC_UNITS = 41,
+};
+
+enum {
+	PA_HS_MODE_A = 1,
+	PA_HS_MODE_B = 2,
+};
+
+enum power_desc_param_offset {
+	PWR_DESC_LEN = 0,
+	PWR_DESC_TYPE = 1,
+	PWR_DESC_ACTIVE_LVLS_VCC_0 = 2,
+	PWR_DESC_ACTIVE_LVLS_VCCQ_0 = 34,
+	PWR_DESC_ACTIVE_LVLS_VCCQ2_0 = 66,
+};
+
+enum {
+	UFSHCD_NANO_AMP = 0,
+	UFSHCD_MICRO_AMP = 1,
+	UFSHCD_MILI_AMP = 2,
+	UFSHCD_AMP = 3,
+};
+
+enum {
+	UPIU_COMMAND_SET_TYPE_SCSI = 0,
+	UPIU_COMMAND_SET_TYPE_UFS = 1,
+	UPIU_COMMAND_SET_TYPE_QUERY = 2,
+};
+
+enum ufs_lu_wp_type {
+	UFS_LU_NO_WP = 0,
+	UFS_LU_POWER_ON_WP = 1,
+	UFS_LU_PERM_WP = 2,
+};
+
+enum rpmb_unit_desc_param {
+	RPMB_UNIT_DESC_PARAM_LEN = 0,
+	RPMB_UNIT_DESC_PARAM_TYPE = 1,
+	RPMB_UNIT_DESC_PARAM_UNIT_INDEX = 2,
+	RPMB_UNIT_DESC_PARAM_LU_ENABLE = 3,
+	RPMB_UNIT_DESC_PARAM_BOOT_LUN_ID = 4,
+	RPMB_UNIT_DESC_PARAM_LU_WR_PROTECT = 5,
+	RPMB_UNIT_DESC_PARAM_LU_Q_DEPTH = 6,
+	RPMB_UNIT_DESC_PARAM_PSA_SENSITIVE = 7,
+	RPMB_UNIT_DESC_PARAM_MEM_TYPE = 8,
+	RPMB_UNIT_DESC_PARAM_REGION_EN = 9,
+	RPMB_UNIT_DESC_PARAM_LOGICAL_BLK_SIZE = 10,
+	RPMB_UNIT_DESC_PARAM_LOGICAL_BLK_COUNT = 11,
+	RPMB_UNIT_DESC_PARAM_REGION0_SIZE = 19,
+	RPMB_UNIT_DESC_PARAM_REGION1_SIZE = 20,
+	RPMB_UNIT_DESC_PARAM_REGION2_SIZE = 21,
+	RPMB_UNIT_DESC_PARAM_REGION3_SIZE = 22,
+	RPMB_UNIT_DESC_PARAM_PROVISIONING_TYPE = 23,
+	RPMB_UNIT_DESC_PARAM_PHY_MEM_RSRC_CNT = 24,
+};
+
+enum {
+	MASK_EXT_IID_SUPPORT = 1024,
+};
+
+enum {
+	TASK_REQ_UPIU_SIZE_DWORDS = 8,
+	TASK_RSP_UPIU_SIZE_DWORDS = 8,
+	ALIGNED_UPIU_SIZE = 512,
+};
+
+struct trace_event_raw_ufshcd_clk_gating {
+	struct trace_entry ent;
+	u32 __data_loc_dev_name;
+	int state;
+	char __data[0];
+};
+
+struct trace_event_raw_ufshcd_clk_scaling {
+	struct trace_entry ent;
+	u32 __data_loc_dev_name;
+	u32 __data_loc_state;
+	u32 __data_loc_clk;
+	u32 prev_state;
+	u32 curr_state;
+	char __data[0];
+};
+
+struct trace_event_raw_ufshcd_auto_bkops_state {
+	struct trace_entry ent;
+	u32 __data_loc_dev_name;
+	u32 __data_loc_state;
+	char __data[0];
+};
+
+struct trace_event_raw_ufshcd_profiling_template {
+	struct trace_entry ent;
+	u32 __data_loc_dev_name;
+	u32 __data_loc_profile_info;
+	s64 time_us;
+	int err;
+	char __data[0];
+};
+
+struct trace_event_raw_ufshcd_template {
+	struct trace_entry ent;
+	s64 usecs;
+	int err;
+	u32 __data_loc_dev_name;
+	int dev_state;
+	int link_state;
+	char __data[0];
+};
+
+struct trace_event_raw_ufshcd_command {
+	struct trace_entry ent;
+	u32 __data_loc_dev_name;
+	enum ufs_trace_str_t str_t;
+	unsigned int tag;
+	u32 doorbell;
+	u32 hwq_id;
+	u32 intr;
+	u64 lba;
+	int transfer_len;
+	u8 opcode;
+	u8 group_id;
+	char __data[0];
+};
+
+struct trace_event_raw_ufshcd_uic_command {
+	struct trace_entry ent;
+	u32 __data_loc_dev_name;
+	enum ufs_trace_str_t str_t;
+	u32 cmd;
+	u32 arg1;
+	u32 arg2;
+	u32 arg3;
+	char __data[0];
+};
+
+struct trace_event_raw_ufshcd_upiu {
+	struct trace_entry ent;
+	u32 __data_loc_dev_name;
+	enum ufs_trace_str_t str_t;
+	unsigned char hdr[12];
+	unsigned char tsf[16];
+	enum ufs_trace_tsf_t tsf_t;
+	char __data[0];
+};
+
+struct trace_event_raw_ufshcd_exception_event {
+	struct trace_entry ent;
+	u32 __data_loc_dev_name;
+	u16 status;
+	char __data[0];
+};
+
+struct utp_upiu_cmd {
+	__be32 exp_data_transfer_len;
+	__u8 cdb[16];
+};
+
+struct utp_upiu_query {
+	__u8 opcode;
+	__u8 idn;
+	__u8 index;
+	__u8 selector;
+	__be16 reserved_osf;
+	__be16 length;
+	__be32 value;
+	__be32 reserved[2];
+};
+
+struct utp_upiu_header {
+	union {
+		struct {
+			__be32 dword_0;
+			__be32 dword_1;
+			__be32 dword_2;
+		};
+		struct {
+			__u8 transaction_code;
+			__u8 flags;
+			__u8 lun;
+			__u8 task_tag;
+			__u8 command_set_type: 4;
+			__u8 iid: 4;
+			union {
+				__u8 tm_function;
+				__u8 query_function;
+			};
+			__u8 response;
+			__u8 status;
+			__u8 ehs_length;
+			__u8 device_information;
+			__be16 data_segment_length;
+		};
+	};
+};
+
+struct utp_upiu_req {
+	struct utp_upiu_header header;
+	union {
+		struct utp_upiu_cmd sc;
+		struct utp_upiu_query qr;
+		struct utp_upiu_query uc;
+	};
+};
+
+struct ufs_clk_info {
+	struct list_head list;
+	struct clk *clk;
+	const char *name;
+	u32 max_freq;
+	u32 min_freq;
+	u32 curr_freq;
+	bool keep_link_active;
+	bool enabled;
+};
+
+struct utp_upiu_query_v4_0 {
+	__u8 opcode;
+	__u8 idn;
+	__u8 index;
+	__u8 selector;
+	__u8 osf3;
+	__u8 osf4;
+	__be16 osf5;
+	__be32 osf6;
+	__be32 osf7;
+	__be32 reserved;
+};
+
+struct utp_cmd_rsp {
+	__be32 residual_transfer_count;
+	__be32 reserved[4];
+	__be16 sense_data_len;
+	u8 sense_data[18];
+};
+
+struct utp_upiu_rsp {
+	struct utp_upiu_header header;
+	union {
+		struct utp_cmd_rsp sr;
+		struct utp_upiu_query qr;
+	};
+};
+
+struct ufshcd_sg_entry {
+	__le64 addr;
+	__le32 reserved;
+	__le32 size;
+};
+
+struct ufs_event_hist {
+	int pos;
+	u32 val[8];
+	u64 tstamp[8];
+	unsigned long long cnt;
+};
+
+struct ufs_stats {
+	u32 last_intr_status;
+	u64 last_intr_ts;
+	u32 hibern8_exit_cnt;
+	u64 last_hibern8_exit_tstamp;
+	struct ufs_event_hist event[15];
+};
+
+struct ufs_query_req {
+	u8 query_func;
+	struct utp_upiu_query upiu_req;
+};
+
+struct ufs_query_res {
+	struct utp_upiu_query upiu_res;
+};
+
+struct ufs_query {
+	struct ufs_query_req request;
+	u8 *descriptor;
+	struct ufs_query_res response;
+};
+
+struct ufs_dev_cmd {
+	enum dev_cmd_type type;
+	struct mutex lock;
+	struct completion *complete;
+	struct ufs_query query;
+};
+
+struct ufs_dev_info {
+	bool f_power_on_wp_en;
+	bool is_lu_power_on_wp;
+	u8 max_lu_supported;
+	u16 wmanufacturerid;
+	u8 *model;
+	u16 wspecversion;
+	u32 clk_gating_wait_us;
+	u8 bqueuedepth;
+	bool wb_enabled;
+	bool wb_buf_flush_enabled;
+	u8 wb_dedicated_lu;
+	u8 wb_buffer_type;
+	bool b_rpm_dev_flush_capable;
+	u8 b_presrv_uspc_en;
+	bool b_advanced_rpmb_en;
+	bool b_ext_iid_en;
+	u64 android_oem_data1;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct ufs_vreg;
+
+struct ufs_vreg_info {
+	struct ufs_vreg *vcc;
+	struct ufs_vreg *vccq;
+	struct ufs_vreg *vccq2;
+	struct ufs_vreg *vdd_hba;
+};
+
+struct ufs_pa_layer_attr {
+	u32 gear_rx;
+	u32 gear_tx;
+	u32 lane_rx;
+	u32 lane_tx;
+	u32 pwr_rx;
+	u32 pwr_tx;
+	u32 hs_rate;
+};
+
+struct ufs_pwr_mode_info {
+	bool is_valid;
+	struct ufs_pa_layer_attr info;
+};
+
+struct ufs_clk_gating {
+	struct delayed_work gate_work;
+	struct work_struct ungate_work;
+	enum clk_gating_state state;
+	unsigned long delay_ms;
+	bool is_suspended;
+	struct device_attribute delay_attr;
+	struct device_attribute enable_attr;
+	bool is_enabled;
+	bool is_initialized;
+	int active_reqs;
+	struct workqueue_struct *clk_gating_workq;
+	u64 android_kabi_reserved1;
+};
+
+struct ufs_clk_scaling {
+	int active_reqs;
+	unsigned long tot_busy_t;
+	ktime_t window_start_t;
+	ktime_t busy_start_t;
+	struct device_attribute enable_attr;
+	struct ufs_pa_layer_attr saved_pwr_info;
+	struct workqueue_struct *workq;
+	struct work_struct suspend_work;
+	struct work_struct resume_work;
+	u32 min_gear;
+	bool is_enabled;
+	bool is_allowed;
+	bool is_initialized;
+	bool is_busy_started;
+	bool is_suspended;
+	bool suspend_on_no_request;
+	u64 android_kabi_reserved1;
+};
+
+struct ufs_hba_monitor {
+	unsigned long chunk_size;
+	unsigned long nr_sec_rw[2];
+	ktime_t total_busy[2];
+	unsigned long nr_req[2];
+	ktime_t lat_sum[2];
+	ktime_t lat_max[2];
+	ktime_t lat_min[2];
+	u32 nr_queued[2];
+	ktime_t busy_start_ts[2];
+	ktime_t enabled_ts;
+	bool enabled;
+};
+
+union ufs_crypto_capabilities {
+	__le32 reg_val;
+	struct {
+		u8 num_crypto_cap;
+		u8 config_count;
+		u8 reserved;
+		u8 config_array_ptr;
+	};
+};
+
+struct ufshcd_res_info {
+	const char *name;
+	struct resource *resource;
+	void *base;
+};
+
+struct ufshcd_mcq_opr_info_t {
+	unsigned long offset;
+	unsigned long stride;
+	void *base;
+};
+
+struct utp_transfer_cmd_desc;
+
+struct utp_transfer_req_desc;
+
+struct utp_task_req_desc;
+
+struct ufshcd_lrb;
+
+struct ufs_hba_variant_ops;
+
+struct uic_command;
+
+union ufs_crypto_cap_entry;
+
+struct ufs_hw_queue;
+
+struct ufs_hba {
+	void *mmio_base;
+	struct utp_transfer_cmd_desc *ucdl_base_addr;
+	struct utp_transfer_req_desc *utrdl_base_addr;
+	struct utp_task_req_desc *utmrdl_base_addr;
+	dma_addr_t ucdl_dma_addr;
+	dma_addr_t utrdl_dma_addr;
+	dma_addr_t utmrdl_dma_addr;
+	struct Scsi_Host *host;
+	struct device *dev;
+	struct scsi_device *ufs_device_wlun;
+	enum ufs_dev_pwr_mode curr_dev_pwr_mode;
+	enum uic_link_state uic_link_state;
+	enum ufs_pm_level rpm_lvl;
+	enum ufs_pm_level spm_lvl;
+	int pm_op_in_progress;
+	u32 ahit;
+	struct ufshcd_lrb *lrb;
+	unsigned long outstanding_tasks;
+	spinlock_t outstanding_lock;
+	unsigned long outstanding_reqs;
+	u32 capabilities;
+	int nutrs;
+	u32 mcq_capabilities;
+	int nutmrs;
+	u32 reserved_slot;
+	u32 ufs_version;
+	const struct ufs_hba_variant_ops *vops;
+	struct ufs_hba_variant_params *vps;
+	void *priv;
+	size_t sg_entry_size;
+	unsigned int irq;
+	bool is_irq_enabled;
+	enum ufs_ref_clk_freq dev_ref_clk_freq;
+	unsigned int quirks;
+	unsigned int android_quirks;
+	unsigned int dev_quirks;
+	struct blk_mq_tag_set tmf_tag_set;
+	struct request_queue *tmf_queue;
+	struct request **tmf_rqs;
+	struct uic_command *active_uic_cmd;
+	struct mutex uic_cmd_mutex;
+	struct completion *uic_async_done;
+	enum ufshcd_state ufshcd_state;
+	u32 eh_flags;
+	u32 intr_mask;
+	u16 ee_ctrl_mask;
+	u16 ee_drv_mask;
+	u16 ee_usr_mask;
+	struct mutex ee_ctrl_mutex;
+	bool is_powered;
+	bool shutting_down;
+	struct semaphore host_sem;
+	struct workqueue_struct *eh_wq;
+	struct work_struct eh_work;
+	struct work_struct eeh_work;
+	u32 errors;
+	u32 uic_error;
+	u32 saved_err;
+	u32 saved_uic_err;
+	struct ufs_stats ufs_stats;
+	bool force_reset;
+	bool force_pmc;
+	bool silence_err_logs;
+	struct ufs_dev_cmd dev_cmd;
+	ktime_t last_dme_cmd_tstamp;
+	int nop_out_timeout;
+	struct ufs_dev_info dev_info;
+	bool auto_bkops_enabled;
+	struct ufs_vreg_info vreg_info;
+	struct list_head clk_list_head;
+	int req_abort_count;
+	u32 lanes_per_direction;
+	struct ufs_pa_layer_attr pwr_info;
+	struct ufs_pwr_mode_info max_pwr_info;
+	struct ufs_clk_gating clk_gating;
+	u32 caps;
+	struct devfreq *devfreq;
+	struct ufs_clk_scaling clk_scaling;
+	bool system_suspending;
+	bool is_sys_suspended;
+	enum bkops_status urgent_bkops_lvl;
+	bool is_urgent_bkops_lvl_checked;
+	struct mutex wb_mutex;
+	struct rw_semaphore clk_scaling_lock;
+	atomic_t scsi_block_reqs_cnt;
+	struct device bsg_dev;
+	struct request_queue *bsg_queue;
+	struct delayed_work rpm_dev_flush_recheck_work;
+	struct ufs_hba_monitor monitor;
+	union ufs_crypto_capabilities crypto_capabilities;
+	union ufs_crypto_cap_entry *crypto_cap_array;
+	u32 crypto_cfg_register;
+	struct blk_crypto_profile crypto_profile;
+	struct dentry *debugfs_root;
+	struct delayed_work debugfs_ee_work;
+	u32 debugfs_ee_rate_limit_ms;
+	u32 luns_avail;
+	unsigned int nr_hw_queues;
+	unsigned int nr_queues[3];
+	bool complete_put;
+	bool ext_iid_sup;
+	bool scsi_host_added;
+	bool mcq_sup;
+	bool mcq_enabled;
+	struct ufshcd_res_info res[7];
+	void *mcq_base;
+	struct ufs_hw_queue *uhq;
+	struct ufs_hw_queue *dev_cmd_queue;
+	struct ufshcd_mcq_opr_info_t mcq_opr[4];
+	u64 android_oem_data1;
+};
+
+struct utp_transfer_cmd_desc {
+	u8 command_upiu[512];
+	u8 response_upiu[512];
+	u8 prd_table[0];
+};
+
+struct request_desc_header {
+	u8 cci;
+	u8 ehs_length;
+	u8 reserved2: 7;
+	u8 enable_crypto: 1;
+	u8 interrupt: 1;
+	u8 data_direction: 2;
+	u8 reserved1: 1;
+	u8 command_type: 4;
+	__le32 dunl;
+	u8 ocs;
+	u8 cds;
+	__le16 ldbc;
+	__le32 dunu;
+};
+
+struct utp_transfer_req_desc {
+	struct request_desc_header header;
+	__le64 command_desc_base_addr;
+	__le16 response_upiu_length;
+	__le16 response_upiu_offset;
+	__le16 prd_table_length;
+	__le16 prd_table_offset;
+};
+
+struct utp_task_req_desc {
+	struct request_desc_header header;
+	struct {
+		struct utp_upiu_header req_header;
+		__be32 input_param1;
+		__be32 input_param2;
+		__be32 input_param3;
+		__be32 __reserved1[2];
+	} upiu_req;
+	struct {
+		struct utp_upiu_header rsp_header;
+		__be32 output_param1;
+		__be32 output_param2;
+		__be32 __reserved2[3];
+	} upiu_rsp;
+};
+
+struct ufshcd_lrb {
+	struct utp_transfer_req_desc *utr_descriptor_ptr;
+	struct utp_upiu_req *ucd_req_ptr;
+	struct utp_upiu_rsp *ucd_rsp_ptr;
+	struct ufshcd_sg_entry *ucd_prdt_ptr;
+	dma_addr_t utrd_dma_addr;
+	dma_addr_t ucd_req_dma_addr;
+	dma_addr_t ucd_rsp_dma_addr;
+	dma_addr_t ucd_prdt_dma_addr;
+	struct scsi_cmnd *cmd;
+	int scsi_status;
+	int command_type;
+	int task_tag;
+	u8 lun;
+	bool intr_cmd;
+	ktime_t issue_time_stamp;
+	u64 issue_time_stamp_local_clock;
+	ktime_t compl_time_stamp;
+	u64 compl_time_stamp_local_clock;
+	int crypto_key_slot;
+	u64 data_unit_num;
+	bool req_abort_skip;
+	u64 android_kabi_reserved1;
+};
+
+union ufs_crypto_cfg_entry;
+
+struct ufs_hba_variant_ops {
+	const char *name;
+	int (*init)(struct ufs_hba *);
+	void (*exit)(struct ufs_hba *);
+	u32 (*get_ufs_hci_version)(struct ufs_hba *);
+	int (*clk_scale_notify)(struct ufs_hba *, bool, enum ufs_notify_change_status);
+	int (*setup_clocks)(struct ufs_hba *, bool, enum ufs_notify_change_status);
+	int (*hce_enable_notify)(struct ufs_hba *, enum ufs_notify_change_status);
+	int (*link_startup_notify)(struct ufs_hba *, enum ufs_notify_change_status);
+	int (*pwr_change_notify)(struct ufs_hba *, enum ufs_notify_change_status, struct ufs_pa_layer_attr *, struct ufs_pa_layer_attr *);
+	void (*setup_xfer_req)(struct ufs_hba *, int, bool);
+	void (*setup_task_mgmt)(struct ufs_hba *, int, u8);
+	void (*hibern8_notify)(struct ufs_hba *, enum uic_cmd_dme, enum ufs_notify_change_status);
+	int (*apply_dev_quirks)(struct ufs_hba *);
+	void (*fixup_dev_quirks)(struct ufs_hba *);
+	int (*suspend)(struct ufs_hba *, enum ufs_pm_op, enum ufs_notify_change_status);
+	int (*resume)(struct ufs_hba *, enum ufs_pm_op);
+	void (*dbg_register_dump)(struct ufs_hba *);
+	int (*phy_initialization)(struct ufs_hba *);
+	int (*device_reset)(struct ufs_hba *);
+	void (*config_scaling_param)(struct ufs_hba *, struct devfreq_dev_profile *, struct devfreq_simple_ondemand_data *);
+	int (*program_key)(struct ufs_hba *, const union ufs_crypto_cfg_entry *, int);
+	void (*event_notify)(struct ufs_hba *, enum ufs_event_type, void *);
+	void (*reinit_notify)(struct ufs_hba *);
+	int (*mcq_config_resource)(struct ufs_hba *);
+	int (*get_hba_mac)(struct ufs_hba *);
+	int (*op_runtime_config)(struct ufs_hba *);
+	int (*get_outstanding_cqs)(struct ufs_hba *, unsigned long *);
+	int (*config_esi)(struct ufs_hba *);
+	void (*config_scsi_dev)(struct scsi_device *);
+};
+
+union ufs_crypto_cfg_entry {
+	__le32 reg_val[32];
+	struct {
+		u8 crypto_key[64];
+		u8 data_unit_size;
+		u8 crypto_cap_idx;
+		u8 reserved_1;
+		u8 config_enable;
+		u8 reserved_multi_host;
+		u8 reserved_2;
+		u8 vsb[2];
+		u8 reserved_3[56];
+	};
+};
+
+struct uic_command {
+	u32 command;
+	u32 argument1;
+	u32 argument2;
+	u32 argument3;
+	int cmd_active;
+	struct completion done;
+};
+
+struct ufs_vreg {
+	struct regulator *reg;
+	const char *name;
+	bool always_on;
+	bool enabled;
+	int max_uA;
+};
+
+union ufs_crypto_cap_entry {
+	__le32 reg_val;
+	struct {
+		u8 algorithm_id;
+		u8 sdus_mask;
+		u8 key_size;
+		u8 reserved;
+	};
+};
+
+struct cq_entry;
+
+struct ufs_hw_queue {
+	void *mcq_sq_head;
+	void *mcq_sq_tail;
+	void *mcq_cq_head;
+	void *mcq_cq_tail;
+	struct utp_transfer_req_desc *sqe_base_addr;
+	dma_addr_t sqe_dma_addr;
+	struct cq_entry *cqe_base_addr;
+	dma_addr_t cqe_dma_addr;
+	u32 max_entries;
+	u32 id;
+	u32 sq_tail_slot;
+	spinlock_t sq_lock;
+	u32 cq_tail_slot;
+	u32 cq_head_slot;
+	spinlock_t cq_lock;
+	struct mutex sq_mutex;
+};
+
+struct cq_entry {
+	__le64 command_desc_base_addr;
+	__le16 response_upiu_length;
+	__le16 response_upiu_offset;
+	__le16 prd_table_length;
+	__le16 prd_table_offset;
+	__le32 status;
+	__le32 reserved[3];
+};
+
+struct trace_event_data_offsets_ufshcd_clk_gating {
+	u32 dev_name;
+};
+
+struct trace_event_data_offsets_ufshcd_template {
+	u32 dev_name;
+};
+
+struct trace_event_data_offsets_ufshcd_command {
+	u32 dev_name;
+};
+
+struct trace_event_data_offsets_ufshcd_uic_command {
+	u32 dev_name;
+};
+
+struct trace_event_data_offsets_ufshcd_upiu {
+	u32 dev_name;
+};
+
+struct trace_event_data_offsets_ufshcd_exception_event {
+	u32 dev_name;
+};
+
+struct trace_event_data_offsets_ufshcd_clk_scaling {
+	u32 dev_name;
+	u32 state;
+	u32 clk;
+};
+
+struct trace_event_data_offsets_ufshcd_auto_bkops_state {
+	u32 dev_name;
+	u32 state;
+};
+
+struct trace_event_data_offsets_ufshcd_profiling_template {
+	u32 dev_name;
+	u32 profile_info;
+};
+
+struct uc_string_id {
+	u8 len;
+	u8 type;
+	wchar_t uc[0];
+};
+
+struct ufs_arpmb_meta {
+	__be16 req_resp_type;
+	__u8 nonce[16];
+	__be32 write_counter;
+	__be16 addr_lun;
+	__be16 block_count;
+	__be16 result;
+} __attribute__((packed));
+
+struct ufs_ehs {
+	__u8 length;
+	__u8 ehs_type;
+	__be16 ehssub_type;
+	struct ufs_arpmb_meta meta;
+	__u8 mac_key[32];
+};
+
+enum interconnect_desc_param {
+	INTERCONNECT_DESC_PARAM_LEN = 0,
+	INTERCONNECT_DESC_PARAM_TYPE = 1,
+	INTERCONNECT_DESC_PARAM_UNIPRO_VER = 2,
+	INTERCONNECT_DESC_PARAM_MPHY_VER = 4,
+};
+
+enum health_desc_param {
+	HEALTH_DESC_PARAM_LEN = 0,
+	HEALTH_DESC_PARAM_TYPE = 1,
+	HEALTH_DESC_PARAM_EOL_INFO = 2,
+	HEALTH_DESC_PARAM_LIFE_TIME_EST_A = 3,
+	HEALTH_DESC_PARAM_LIFE_TIME_EST_B = 4,
+};
+
+enum ufshcd_mcq_opr {
+	OPR_SQD = 0,
+	OPR_SQIS = 1,
+	OPR_CQD = 2,
+	OPR_CQIS = 3,
+	OPR_MAX = 4,
+};
+
+enum {
+	REG_CQIS = 0,
+	REG_CQIE = 4,
+};
+
+enum {
+	REG_SQATTR = 0,
+	REG_SQLBA = 4,
+	REG_SQUBA = 8,
+	REG_SQDAO = 12,
+	REG_SQISAO = 16,
+	REG_CQATTR = 32,
+	REG_CQLBA = 36,
+	REG_CQUBA = 40,
+	REG_CQDAO = 44,
+	REG_CQISAO = 48,
+};
+
+enum {
+	REG_SQHP = 0,
+	REG_SQTP = 4,
+	REG_SQRTC = 8,
+	REG_SQCTI = 12,
+	REG_SQRTS = 16,
+};
+
+enum {
+	REG_CQHP = 0,
+	REG_CQTP = 4,
+};
+
+enum {
+	SQ_START = 0,
+	SQ_STOP = 1,
+	SQ_ICU = 2,
+};
+
+enum {
+	SQ_STS = 1,
+	SQ_CUS = 2,
+};
+
+struct ufs_debugfs_attr {
+	const char *name;
+	mode_t mode;
+	const struct file_operations *fops;
+};
+
+enum ufs_bsg_msg_code {
+	UPIU_TRANSACTION_UIC_CMD = 31,
+	UPIU_TRANSACTION_ARPMB_CMD = 32,
+};
+
+enum ufs_rpmb_op_type {
+	UFS_RPMB_WRITE_KEY = 1,
+	UFS_RPMB_READ_CNT = 2,
+	UFS_RPMB_WRITE = 3,
+	UFS_RPMB_READ = 4,
+	UFS_RPMB_READ_RESP = 5,
+	UFS_RPMB_SEC_CONF_WRITE = 6,
+	UFS_RPMB_SEC_CONF_READ = 7,
+	UFS_RPMB_PURGE_ENABLE = 8,
+	UFS_RPMB_PURGE_STATUS_READ = 9,
+};
+
+struct ufs_bsg_request {
+	__u32 msgcode;
+	struct utp_upiu_req upiu_req;
+};
+
+struct ufs_rpmb_request {
+	struct ufs_bsg_request bsg_request;
+	struct ufs_ehs ehs_req;
+};
+
+struct ufs_bsg_reply {
+	int result;
+	__u32 reply_payload_rcv_len;
+	struct utp_upiu_req upiu_rsp;
+};
+
+struct ufs_rpmb_reply {
+	struct ufs_bsg_reply bsg_reply;
+	struct ufs_ehs ehs_rsp;
+};
+
+enum ufs_crypto_alg {
+	UFS_CRYPTO_ALG_AES_XTS = 0,
+	UFS_CRYPTO_ALG_BITLOCKER_AES_CBC = 1,
+	UFS_CRYPTO_ALG_AES_ECB = 2,
+	UFS_CRYPTO_ALG_ESSIV_AES_CBC = 3,
+};
+
+enum ufs_crypto_key_size {
+	UFS_CRYPTO_KEY_SIZE_INVALID = 0,
+	UFS_CRYPTO_KEY_SIZE_128 = 1,
+	UFS_CRYPTO_KEY_SIZE_192 = 2,
+	UFS_CRYPTO_KEY_SIZE_256 = 3,
+	UFS_CRYPTO_KEY_SIZE_512 = 4,
+};
+
+struct ufs_crypto_alg_entry {
+	enum ufs_crypto_alg ufs_alg;
+	enum ufs_crypto_key_size ufs_key_size;
+};
+
+struct ufshcd_dme_attr_val {
+	u32 attr_sel;
+	u32 mib_val;
+	u8 peer;
+};
+
+enum clk_div_values {
+	DWC_UFS_REG_HCLKDIV_DIV_62_5 = 62,
+	DWC_UFS_REG_HCLKDIV_DIV_125 = 125,
+	DWC_UFS_REG_HCLKDIV_DIV_200 = 200,
+};
+
+enum dwc_specific_registers {
+	DWC_UFS_REG_HCLKDIV = 252,
+};
+
+enum link_status {
+	UFSHCD_LINK_IS_DOWN = 1,
+	UFSHCD_LINK_IS_UP = 2,
+};
+
+enum intel_ufs_dsm_func_id {
+	INTEL_DSM_FNS = 0,
+	INTEL_DSM_RESET = 1,
+};
+
+struct ufs_host {
+	void (*late_init)(struct ufs_hba *);
+};
+
+struct intel_host {
+	struct ufs_host ufs_host;
+	u32 dsm_fns;
+	u32 active_ltr;
+	u32 idle_ltr;
+	struct dentry *debugfs_root;
+	struct gpio_desc *reset_gpio;
+};
+
+struct ufs_dev_params {
+	u32 pwm_rx_gear;
+	u32 pwm_tx_gear;
+	u32 hs_rx_gear;
+	u32 hs_tx_gear;
+	u32 rx_lanes;
+	u32 tx_lanes;
+	u32 rx_pwr_pwm;
+	u32 tx_pwr_pwm;
+	u32 rx_pwr_hs;
+	u32 tx_pwr_hs;
+	u32 hs_rate;
+	u32 desired_working_mode;
+};
+
+enum {
+	UFS_REG_OCPTHRTL = 192,
+	UFS_REG_OOCPR = 196,
+	UFS_REG_CDACFG = 208,
+	UFS_REG_CDATX1 = 212,
+	UFS_REG_CDATX2 = 216,
+	UFS_REG_CDARX1 = 220,
+	UFS_REG_CDARX2 = 224,
+	UFS_REG_CDASTA = 228,
+	UFS_REG_LBMCFG = 240,
+	UFS_REG_LBMSTA = 244,
+	UFS_REG_UFSMODE = 248,
+	UFS_REG_HCLKDIV = 252,
+};
+
+struct ufs_hisi_host {
+	struct ufs_hba *hba;
+	void *ufs_sys_ctrl;
+	struct reset_control *rst;
+	uint64_t caps;
+	bool in_suspend;
+};
+
+enum led_default_state {
+	LEDS_DEFSTATE_OFF = 0,
+	LEDS_DEFSTATE_ON = 1,
+	LEDS_DEFSTATE_KEEP = 2,
+};
+
+struct led_properties {
+	u32 color;
+	bool color_present;
+	const char *function;
+	u32 func_enum;
+	bool func_enum_present;
+	const char *label;
+};
+
+struct led_lookup_data {
+	struct list_head list;
+	const char *provider;
+	const char *dev_id;
+	const char *con_id;
+};
+
+struct led_flash_setting {
+	u32 min;
+	u32 max;
+	u32 step;
+	u32 val;
+};
+
+struct led_flash_ops;
+
+struct led_classdev_flash {
+	struct led_classdev led_cdev;
+	const struct led_flash_ops *ops;
+	struct led_flash_setting brightness;
+	struct led_flash_setting timeout;
+	const struct attribute_group *sysfs_groups[5];
+};
+
+struct led_flash_ops {
+	int (*flash_brightness_set)(struct led_classdev_flash *, u32);
+	int (*flash_brightness_get)(struct led_classdev_flash *, u32 *);
+	int (*strobe_set)(struct led_classdev_flash *, bool);
+	int (*strobe_get)(struct led_classdev_flash *, bool *);
+	int (*timeout_set)(struct led_classdev_flash *, u32);
+	int (*fault_get)(struct led_classdev_flash *, u32 *);
+};
+
+struct mc_subled;
+
+struct led_classdev_mc {
+	struct led_classdev led_cdev;
+	unsigned int num_colors;
+	struct mc_subled *subled_info;
+};
+
+struct mc_subled {
+	unsigned int color_index;
+	unsigned int brightness;
+	unsigned int intensity;
+	unsigned int channel;
+};
+
+struct transient_trig_data {
+	int activate;
+	int state;
+	int restore_state;
+	unsigned long duration;
+	struct timer_list timer;
+	struct led_classdev *led_cdev;
+};
+
+struct scpi_chan;
+
+struct scpi_drvinfo {
+	u32 protocol_version;
+	u32 firmware_version;
+	bool is_legacy;
+	int num_chans;
+	int *commands;
+	unsigned long cmd_priority[1];
+	atomic_t next_chan;
+	struct scpi_ops *scpi_ops;
+	struct scpi_chan *channels;
+	struct scpi_dvfs_info *dvfs[8];
+};
+
+struct scpi_xfer;
+
+struct scpi_chan {
+	struct mbox_client cl;
+	struct mbox_chan *chan;
+	void *tx_payload;
+	void *rx_payload;
+	struct list_head rx_pending;
+	struct list_head xfers_list;
+	struct scpi_xfer *xfers;
+	spinlock_t rx_lock;
+	struct mutex xfers_lock;
+	u8 token;
+};
+
+struct scpi_xfer {
+	u32 slot;
+	u32 cmd;
+	u32 status;
+	const void *tx_buf;
+	void *rx_buf;
+	unsigned int tx_len;
+	unsigned int rx_len;
+	struct list_head node;
+	struct completion done;
+};
+
+enum scpi_drv_cmds {
+	CMD_SCPI_CAPABILITIES = 0,
+	CMD_GET_CLOCK_INFO = 1,
+	CMD_GET_CLOCK_VALUE = 2,
+	CMD_SET_CLOCK_VALUE = 3,
+	CMD_GET_DVFS = 4,
+	CMD_SET_DVFS = 5,
+	CMD_GET_DVFS_INFO = 6,
+	CMD_SENSOR_CAPABILITIES = 7,
+	CMD_SENSOR_INFO = 8,
+	CMD_SENSOR_VALUE = 9,
+	CMD_SET_DEVICE_PWR_STATE = 10,
+	CMD_GET_DEVICE_PWR_STATE = 11,
+	CMD_MAX_COUNT = 12,
+};
+
+enum scpi_error_codes {
+	SCPI_SUCCESS = 0,
+	SCPI_ERR_PARAM = 1,
+	SCPI_ERR_ALIGN = 2,
+	SCPI_ERR_SIZE = 3,
+	SCPI_ERR_HANDLER = 4,
+	SCPI_ERR_ACCESS = 5,
+	SCPI_ERR_RANGE = 6,
+	SCPI_ERR_TIMEOUT = 7,
+	SCPI_ERR_NOMEM = 8,
+	SCPI_ERR_PWRSTATE = 9,
+	SCPI_ERR_SUPPORT = 10,
+	SCPI_ERR_DEVICE = 11,
+	SCPI_ERR_BUSY = 12,
+	SCPI_ERR_MAX = 13,
+};
+
+struct scpi_shared_mem {
+	__le32 command;
+	__le32 status;
+	u8 payload[0];
+};
+
+struct legacy_clk_set_value {
+	__le32 rate;
+	__le16 id;
+	__le16 reserved;
+};
+
+struct scp_capabilities {
+	__le32 protocol_version;
+	__le32 event_version;
+	__le32 platform_version;
+	__le32 commands[4];
+};
+
+struct legacy_scpi_shared_mem {
+	__le32 status;
+	u8 payload[0];
+};
+
+struct clk_get_info {
+	__le16 id;
+	__le16 flags;
+	__le32 min_rate;
+	__le32 max_rate;
+	u8 name[20];
+};
+
+struct clk_set_value {
+	__le16 id;
+	__le16 reserved;
+	__le32 rate;
+};
+
+struct dvfs_set {
+	u8 domain;
+	u8 index;
+};
+
+struct dvfs_info {
+	u8 domain;
+	u8 opp_count;
+	__le16 latency;
+	struct {
+		__le32 freq;
+		__le32 m_volt;
+	} opps[16];
+};
+
+struct _scpi_sensor_info {
+	__le16 sensor_id;
+	u8 class;
+	u8 trigger_type;
+	char name[20];
+};
+
+struct dev_pstate_set {
+	__le16 dev_id;
+	u8 pstate;
+} __attribute__((packed));
+
+struct scmi_requested_dev {
+	const struct scmi_device_id *id_table;
+	struct list_head node;
+};
+
+struct scmi_xfer;
+
+struct scmi_xfer_ops {
+	int (*version_get)(const struct scmi_protocol_handle *, u32 *);
+	int (*xfer_get_init)(const struct scmi_protocol_handle *, u8, size_t, size_t, struct scmi_xfer **);
+	void (*reset_rx_to_maxsz)(const struct scmi_protocol_handle *, struct scmi_xfer *);
+	int (*do_xfer)(const struct scmi_protocol_handle *, struct scmi_xfer *);
+	int (*do_xfer_with_response)(const struct scmi_protocol_handle *, struct scmi_xfer *);
+	void (*xfer_put)(const struct scmi_protocol_handle *, struct scmi_xfer *);
+};
+
+struct scmi_msg_hdr {
+	u8 id;
+	u8 protocol_id;
+	u8 type;
+	u16 seq;
+	u32 status;
+	bool poll_completion;
+};
+
+struct scmi_msg {
+	void *buf;
+	size_t len;
+};
+
+struct scmi_xfer {
+	int transfer_id;
+	struct scmi_msg_hdr hdr;
+	struct scmi_msg tx;
+	struct scmi_msg rx;
+	struct completion done;
+	struct completion *async_done;
+	bool pending;
+	struct hlist_node node;
+	refcount_t users;
+	atomic_t busy;
+	int state;
+	int flags;
+	spinlock_t lock;
+	void *priv;
+};
+
+struct scmi_iterator_ops;
+
+struct scmi_fc_db_info;
+
+struct scmi_proto_helpers_ops {
+	int (*extended_name_get)(const struct scmi_protocol_handle *, u8, u32, u32 *, char *, size_t);
+	void * (*iter_response_init)(const struct scmi_protocol_handle *, struct scmi_iterator_ops *, unsigned int, u8, size_t, void *);
+	int (*iter_response_run)(void *);
+	void (*fastchannel_init)(const struct scmi_protocol_handle *, u8, u32, u32, u32, void **, struct scmi_fc_db_info **);
+	void (*fastchannel_db_ring)(struct scmi_fc_db_info *);
+	int (*get_max_msg_size)(const struct scmi_protocol_handle *);
+};
+
+struct scmi_iterator_state;
+
+struct scmi_iterator_ops {
+	void (*prepare_message)(void *, unsigned int, const void *);
+	int (*update_state)(struct scmi_iterator_state *, const void *, void *);
+	int (*process_response)(const struct scmi_protocol_handle *, const void *, struct scmi_iterator_state *, void *);
+};
+
+struct scmi_iterator_state {
+	unsigned int desc_index;
+	unsigned int num_returned;
+	unsigned int num_remaining;
+	unsigned int max_resources;
+	unsigned int loop_idx;
+	size_t rx_len;
+	void *priv;
+};
+
+struct scmi_fc_db_info {
+	int width;
+	u64 set;
+	u64 mask;
+	void *addr;
+};
+
+typedef void (*btf_trace_scmi_fc_call)(void *, u8, u8, u32, u32, u32);
+
+typedef void (*btf_trace_scmi_xfer_begin)(void *, int, u8, u8, u16, bool);
+
+typedef void (*btf_trace_scmi_xfer_response_wait)(void *, int, u8, u8, u16, u32, bool);
+
+typedef void (*btf_trace_scmi_xfer_end)(void *, int, u8, u8, u16, int);
+
+typedef void (*btf_trace_scmi_rx_done)(void *, int, u8, u8, u16, u8);
+
+typedef void (*btf_trace_scmi_msg_dump)(void *, int, u8, u8, u8, unsigned char *, u16, int, void *, size_t);
+
+enum scmi_error_codes {
+	SCMI_SUCCESS = 0,
+	SCMI_ERR_SUPPORT = -1,
+	SCMI_ERR_PARAMS = -2,
+	SCMI_ERR_ACCESS = -3,
+	SCMI_ERR_ENTRY = -4,
+	SCMI_ERR_RANGE = -5,
+	SCMI_ERR_BUSY = -6,
+	SCMI_ERR_COMMS = -7,
+	SCMI_ERR_GENERIC = -8,
+	SCMI_ERR_HARDWARE = -9,
+	SCMI_ERR_PROTOCOL = -10,
+};
+
+enum scmi_common_cmd {
+	PROTOCOL_VERSION = 0,
+	PROTOCOL_ATTRIBUTES = 1,
+	PROTOCOL_MESSAGE_ATTRIBUTES = 2,
+};
+
+struct scmi_xfers_info {
+	unsigned long *xfer_alloc_table;
+	spinlock_t xfer_lock;
+	int max_msg;
+	struct hlist_head free_xfers;
+	struct hlist_head pending_xfers[512];
+};
+
+struct scmi_desc;
+
+struct scmi_debug_info;
+
+struct scmi_info {
+	int id;
+	struct device *dev;
+	const struct scmi_desc *desc;
+	struct scmi_revision_info version;
+	struct scmi_handle handle;
+	struct scmi_xfers_info tx_minfo;
+	struct scmi_xfers_info rx_minfo;
+	struct idr tx_idr;
+	struct idr rx_idr;
+	struct idr protocols;
+	struct mutex protocols_mtx;
+	u8 *protocols_imp;
+	struct idr active_protocols;
+	unsigned int atomic_threshold;
+	void *notify_priv;
+	struct list_head node;
+	int users;
+	struct notifier_block bus_nb;
+	struct notifier_block dev_req_nb;
+	struct mutex devreq_mtx;
+	struct scmi_debug_info *dbg;
+	void *raw;
+};
+
+struct scmi_transport_ops;
+
+struct scmi_desc {
+	int (*transport_init)();
+	void (*transport_exit)();
+	const struct scmi_transport_ops *ops;
+	int max_rx_timeout_ms;
+	int max_msg;
+	int max_msg_size;
+	const bool force_polling;
+	const bool sync_cmds_completed_on_ret;
+	const bool atomic_enabled;
+};
+
+struct scmi_chan_info;
+
+struct scmi_transport_ops {
+	int (*link_supplier)(struct device *);
+	bool (*chan_available)(struct device_node *, int);
+	int (*chan_setup)(struct scmi_chan_info *, struct device *, bool);
+	int (*chan_free)(int, void *, void *);
+	unsigned int (*get_max_msg)(struct scmi_chan_info *);
+	int (*send_message)(struct scmi_chan_info *, struct scmi_xfer *);
+	void (*mark_txdone)(struct scmi_chan_info *, int, struct scmi_xfer *);
+	void (*fetch_response)(struct scmi_chan_info *, struct scmi_xfer *);
+	void (*fetch_notification)(struct scmi_chan_info *, size_t, struct scmi_xfer *);
+	void (*clear_channel)(struct scmi_chan_info *);
+	bool (*poll_done)(struct scmi_chan_info *, struct scmi_xfer *);
+};
+
+struct scmi_chan_info {
+	int id;
+	struct device *dev;
+	unsigned int rx_timeout_ms;
+	struct scmi_handle *handle;
+	bool no_completion_irq;
+	void *transport_info;
+};
+
+struct scmi_debug_info {
+	struct dentry *top_dentry;
+	const char *name;
+	const char *type;
+	bool is_atomic;
+};
+
+struct scmi_protocol;
+
+struct scmi_protocol_instance {
+	const struct scmi_handle *handle;
+	const struct scmi_protocol *proto;
+	void *gid;
+	refcount_t users;
+	void *priv;
+	unsigned int version;
+	struct scmi_protocol_handle ph;
+};
+
+typedef int (*scmi_prot_init_ph_fn_t)(const struct scmi_protocol_handle *);
+
+struct scmi_protocol_events;
+
+struct scmi_protocol {
+	const u8 id;
+	struct module *owner;
+	const scmi_prot_init_ph_fn_t instance_init;
+	const scmi_prot_init_ph_fn_t instance_deinit;
+	const void *ops;
+	const struct scmi_protocol_events *events;
+	unsigned int supported_version;
+};
+
+struct scmi_event_ops;
+
+struct scmi_event;
+
+struct scmi_protocol_events {
+	size_t queue_sz;
+	const struct scmi_event_ops *ops;
+	const struct scmi_event *evts;
+	unsigned int num_events;
+	unsigned int num_sources;
+};
+
+struct scmi_event_ops {
+	int (*get_num_sources)(const struct scmi_protocol_handle *);
+	int (*set_notify_enabled)(const struct scmi_protocol_handle *, u8, u32, bool);
+	void * (*fill_custom_report)(const struct scmi_protocol_handle *, u8, ktime_t, const void *, size_t, void *, u32 *);
+};
+
+struct scmi_event {
+	u8 id;
+	size_t max_payld_sz;
+	size_t max_report_sz;
+};
+
+struct trace_event_raw_scmi_fc_call {
+	struct trace_entry ent;
+	u8 protocol_id;
+	u8 msg_id;
+	u32 res_id;
+	u32 val1;
+	u32 val2;
+	char __data[0];
+};
+
+struct trace_event_raw_scmi_xfer_begin {
+	struct trace_entry ent;
+	int transfer_id;
+	u8 msg_id;
+	u8 protocol_id;
+	u16 seq;
+	bool poll;
+	char __data[0];
+};
+
+struct trace_event_raw_scmi_xfer_response_wait {
+	struct trace_entry ent;
+	int transfer_id;
+	u8 msg_id;
+	u8 protocol_id;
+	u16 seq;
+	u32 timeout;
+	bool poll;
+	char __data[0];
+};
+
+struct trace_event_raw_scmi_xfer_end {
+	struct trace_entry ent;
+	int transfer_id;
+	u8 msg_id;
+	u8 protocol_id;
+	u16 seq;
+	int status;
+	char __data[0];
+};
+
+struct trace_event_raw_scmi_rx_done {
+	struct trace_entry ent;
+	int transfer_id;
+	u8 msg_id;
+	u8 protocol_id;
+	u16 seq;
+	u8 msg_type;
+	char __data[0];
+};
+
+struct trace_event_raw_scmi_msg_dump {
+	struct trace_entry ent;
+	int id;
+	u8 channel_id;
+	u8 protocol_id;
+	u8 msg_id;
+	char tag[5];
+	u16 seq;
+	int status;
+	size_t len;
+	u32 __data_loc_cmd;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_scmi_msg_dump {
+	u32 cmd;
+};
+
+struct scmi_protocol_devres {
+	const struct scmi_handle *handle;
+	u8 protocol_id;
+};
+
+struct trace_event_data_offsets_scmi_fc_call {};
+
+struct trace_event_data_offsets_scmi_xfer_begin {};
+
+struct trace_event_data_offsets_scmi_xfer_response_wait {};
+
+struct trace_event_data_offsets_scmi_xfer_end {};
+
+struct trace_event_data_offsets_scmi_rx_done {};
+
+struct scmi_msg_resp_domain_name_get {
+	__le32 flags;
+	u8 name[64];
+};
+
+struct scmi_iterator {
+	void *msg;
+	void *resp;
+	struct scmi_xfer *t;
+	const struct scmi_protocol_handle *ph;
+	struct scmi_iterator_ops *ops;
+	struct scmi_iterator_state state;
+	void *priv;
+};
+
+struct scmi_msg_resp_desc_fc {
+	__le32 attr;
+	__le32 rate_limit;
+	__le32 chan_addr_low;
+	__le32 chan_addr_high;
+	__le32 chan_size;
+	__le32 db_addr_low;
+	__le32 db_addr_high;
+	__le32 db_set_lmask;
+	__le32 db_set_hmask;
+	__le32 db_preserve_lmask;
+	__le32 db_preserve_hmask;
+};
+
+struct scmi_msg_get_fc_info {
+	__le32 domain;
+	__le32 message_id;
+};
+
+struct events_queue {
+	size_t sz;
+	struct kfifo kfifo;
+	struct work_struct notify_work;
+	struct workqueue_struct *wq;
+};
+
+struct scmi_notify_instance;
+
+struct scmi_event_header;
+
+struct scmi_registered_event;
+
+struct scmi_registered_events_desc {
+	u8 id;
+	const struct scmi_event_ops *ops;
+	struct events_queue equeue;
+	struct scmi_notify_instance *ni;
+	struct scmi_event_header *eh;
+	size_t eh_sz;
+	void *in_flight;
+	int num_events;
+	struct scmi_registered_event **registered_events;
+	struct mutex registered_mtx;
+	const struct scmi_protocol_handle *ph;
+	struct hlist_head registered_events_handlers[64];
+};
+
+struct scmi_notify_instance {
+	void *gid;
+	struct scmi_handle *handle;
+	struct work_struct init_work;
+	struct workqueue_struct *notify_wq;
+	struct mutex pending_mtx;
+	struct scmi_registered_events_desc **registered_protocols;
+	struct hlist_head pending_events_handlers[16];
+};
+
+struct scmi_event_header {
+	ktime_t timestamp;
+	size_t payld_sz;
+	unsigned char evt_id;
+	unsigned char payld[0];
+};
+
+struct scmi_registered_event {
+	struct scmi_registered_events_desc *proto;
+	const struct scmi_event *evt;
+	void *report;
+	u32 num_sources;
+	refcount_t *sources;
+	struct mutex sources_mtx;
+};
+
+struct scmi_event_handler {
+	u32 key;
+	refcount_t users;
+	struct scmi_registered_event *r_evt;
+	struct blocking_notifier_head chain;
+	struct hlist_node hash;
+	bool enabled;
+};
+
+struct scmi_notifier_devres {
+	const struct scmi_handle *handle;
+	u8 proto_id;
+	u8 evt_id;
+	u32 __src_id;
+	u32 *src_id;
+	struct notifier_block *nb;
+};
+
+enum scmi_base_protocol_cmd {
+	BASE_DISCOVER_VENDOR = 3,
+	BASE_DISCOVER_SUB_VENDOR = 4,
+	BASE_DISCOVER_IMPLEMENT_VERSION = 5,
+	BASE_DISCOVER_LIST_PROTOCOLS = 6,
+	BASE_DISCOVER_AGENT = 7,
+	BASE_NOTIFY_ERRORS = 8,
+	BASE_SET_DEVICE_PERMISSIONS = 9,
+	BASE_SET_PROTOCOL_PERMISSIONS = 10,
+	BASE_RESET_AGENT_CONFIGURATION = 11,
+};
+
+enum scmi_notification_events {
+	SCMI_EVENT_POWER_STATE_CHANGED = 0,
+	SCMI_EVENT_CLOCK_RATE_CHANGED = 0,
+	SCMI_EVENT_CLOCK_RATE_CHANGE_REQUESTED = 1,
+	SCMI_EVENT_PERFORMANCE_LIMITS_CHANGED = 0,
+	SCMI_EVENT_PERFORMANCE_LEVEL_CHANGED = 1,
+	SCMI_EVENT_SENSOR_TRIP_POINT_EVENT = 0,
+	SCMI_EVENT_SENSOR_UPDATE = 1,
+	SCMI_EVENT_RESET_ISSUED = 0,
+	SCMI_EVENT_BASE_ERROR_EVENT = 0,
+	SCMI_EVENT_SYSTEM_POWER_STATE_NOTIFIER = 0,
+	SCMI_EVENT_POWERCAP_CAP_CHANGED = 0,
+	SCMI_EVENT_POWERCAP_MEASUREMENTS_CHANGED = 1,
+};
+
+struct scmi_msg_resp_base_attributes {
+	u8 num_protocols;
+	u8 num_agents;
+	__le16 reserved;
+};
+
+struct scmi_msg_resp_base_discover_agent {
+	__le32 agent_id;
+	u8 name[16];
+};
+
+struct scmi_msg_base_error_notify {
+	__le32 event_control;
+};
+
+struct scmi_base_error_notify_payld {
+	__le32 agent_id;
+	__le32 error_status;
+	__le64 msg_reports[1024];
+};
+
+struct scmi_base_error_report {
+	ktime_t timestamp;
+	unsigned int agent_id;
+	bool fatal;
+	unsigned int cmd_count;
+	unsigned long long reports[0];
+};
+
+struct scmi_clock_info;
+
+struct scmi_clk_proto_ops {
+	int (*count_get)(const struct scmi_protocol_handle *);
+	const struct scmi_clock_info * (*info_get)(const struct scmi_protocol_handle *, u32);
+	int (*rate_get)(const struct scmi_protocol_handle *, u32, u64 *);
+	int (*rate_set)(const struct scmi_protocol_handle *, u32, u64);
+	int (*enable)(const struct scmi_protocol_handle *, u32, bool);
+	int (*disable)(const struct scmi_protocol_handle *, u32, bool);
+	int (*state_get)(const struct scmi_protocol_handle *, u32, bool *, bool);
+	int (*config_oem_get)(const struct scmi_protocol_handle *, u32, u8, u32 *, u32 *, bool);
+	int (*config_oem_set)(const struct scmi_protocol_handle *, u32, u8, u32, bool);
+	int (*parent_get)(const struct scmi_protocol_handle *, u32, u32 *);
+	int (*parent_set)(const struct scmi_protocol_handle *, u32, u32);
+	u64 android_kabi_reserved1;
+};
+
+struct scmi_clock_info {
+	char name[64];
+	unsigned int enable_latency;
+	bool rate_discrete;
+	bool rate_changed_notifications;
+	bool rate_change_requested_notifications;
+	bool state_ctrl_forbidden;
+	bool rate_ctrl_forbidden;
+	bool parent_ctrl_forbidden;
+	union {
+		struct {
+			int num_rates;
+			u64 rates[16];
+		} list;
+		struct {
+			u64 min_rate;
+			u64 max_rate;
+			u64 step_size;
+		} range;
+	};
+	int num_parents;
+	u32 *parents;
+};
+
+enum scmi_clock_protocol_cmd {
+	CLOCK_ATTRIBUTES = 3,
+	CLOCK_DESCRIBE_RATES = 4,
+	CLOCK_RATE_SET = 5,
+	CLOCK_RATE_GET = 6,
+	CLOCK_CONFIG_SET = 7,
+	CLOCK_NAME_GET = 8,
+	CLOCK_RATE_NOTIFY = 9,
+	CLOCK_RATE_CHANGE_REQUESTED_NOTIFY = 10,
+	CLOCK_CONFIG_GET = 11,
+	CLOCK_POSSIBLE_PARENTS_GET = 12,
+	CLOCK_PARENT_SET = 13,
+	CLOCK_PARENT_GET = 14,
+	CLOCK_GET_PERMISSIONS = 15,
+};
+
+enum clk_state {
+	CLK_STATE_DISABLE = 0,
+	CLK_STATE_ENABLE = 1,
+	CLK_STATE_RESERVED = 2,
+	CLK_STATE_UNCHANGED = 3,
+};
+
+struct scmi_clk_ipriv {
+	struct device *dev;
+	u32 clk_id;
+	struct scmi_clock_info *clk;
+};
+
+struct clock_info {
+	u32 version;
+	int num_clocks;
+	int max_async_req;
+	atomic_t cur_async_req;
+	struct scmi_clock_info *clk;
+	int (*clock_config_set)(const struct scmi_protocol_handle *, u32, enum clk_state, u8, u32, bool);
+	int (*clock_config_get)(const struct scmi_protocol_handle *, u32, u8, u32 *, bool *, u32 *, bool);
+};
+
+struct scmi_msg_resp_clock_protocol_attributes {
+	__le16 num_clocks;
+	u8 max_async_req;
+	u8 reserved;
+};
+
+struct scmi_msg_resp_clock_attributes {
+	__le32 attributes;
+	u8 name[16];
+	__le32 clock_enable_latency;
+};
+
+struct scmi_msg_clock_rate_notify {
+	__le32 clk_id;
+	__le32 notify_enable;
+};
+
+struct scmi_msg_clock_config_set_v2 {
+	__le32 id;
+	__le32 attributes;
+	__le32 oem_config_val;
+};
+
+struct scmi_msg_clock_config_get {
+	__le32 id;
+	__le32 flags;
+};
+
+struct scmi_msg_resp_clock_config_get {
+	__le32 attributes;
+	__le32 config;
+	__le32 oem_config_val;
+};
+
+struct scmi_msg_clock_config_set {
+	__le32 id;
+	__le32 attributes;
+};
+
+struct scmi_msg_clock_possible_parents {
+	__le32 id;
+	__le32 skip_parents;
+};
+
+struct scmi_msg_resp_clock_possible_parents {
+	__le32 num_parent_flags;
+	__le32 possible_parents[0];
+};
+
+struct scmi_msg_clock_describe_rates {
+	__le32 id;
+	__le32 rate_index;
+};
+
+struct scmi_msg_resp_clock_describe_rates {
+	__le32 num_rates_flags;
+	struct {
+		__le32 value_low;
+		__le32 value_high;
+	} rate[0];
+};
+
+struct scmi_clock_set_rate {
+	__le32 flags;
+	__le32 id;
+	__le32 value_low;
+	__le32 value_high;
+};
+
+struct scmi_msg_resp_set_rate_complete {
+	__le32 id;
+	__le32 rate_low;
+	__le32 rate_high;
+};
+
+struct scmi_msg_clock_set_parent {
+	__le32 id;
+	__le32 parent_id;
+};
+
+struct scmi_clock_rate_notify_payld {
+	__le32 agent_id;
+	__le32 clock_id;
+	__le32 rate_low;
+	__le32 rate_high;
+};
+
+struct scmi_clock_rate_notif_report {
+	ktime_t timestamp;
+	unsigned int agent_id;
+	unsigned int clock_id;
+	unsigned long long rate;
+};
+
+enum scmi_performance_protocol_cmd {
+	PERF_DOMAIN_ATTRIBUTES = 3,
+	PERF_DESCRIBE_LEVELS = 4,
+	PERF_LIMITS_SET = 5,
+	PERF_LIMITS_GET = 6,
+	PERF_LEVEL_SET = 7,
+	PERF_LEVEL_GET = 8,
+	PERF_NOTIFY_LIMITS = 9,
+	PERF_NOTIFY_LEVEL = 10,
+	PERF_DESCRIBE_FASTCHANNEL = 11,
+	PERF_DOMAIN_NAME_GET = 12,
+};
+
+enum {
+	PERF_FC_LEVEL = 0,
+	PERF_FC_LIMIT = 1,
+	PERF_FC_MAX = 2,
+};
+
+struct scmi_opp {
+	u32 perf;
+	u32 power;
+	u32 trans_latency_us;
+	u32 indicative_freq;
+	u32 level_index;
+	struct hlist_node hash;
+};
+
+struct perf_dom_info;
+
+struct scmi_perf_info {
+	u32 version;
+	u16 num_domains;
+	enum scmi_power_scale power_scale;
+	u64 stats_addr;
+	u32 stats_size;
+	struct perf_dom_info *dom_info;
+};
+
+struct scmi_fc_info;
+
+struct perf_dom_info {
+	u32 id;
+	bool set_limits;
+	bool perf_limit_notify;
+	bool perf_level_notify;
+	bool perf_fastchannels;
+	bool level_indexing_mode;
+	u32 opp_count;
+	u32 sustained_freq_khz;
+	u32 sustained_perf_level;
+	unsigned long mult_factor;
+	struct scmi_perf_domain_info info;
+	struct scmi_opp opp[32];
+	struct scmi_fc_info *fc_info;
+	struct xarray opps_by_idx;
+	struct xarray opps_by_lvl;
+	struct hlist_head opps_by_freq[32];
+};
+
+struct scmi_fc_info {
+	void *set_addr;
+	void *get_addr;
+	struct scmi_fc_db_info *set_db;
+};
+
+struct scmi_msg_resp_perf_attributes {
+	__le16 num_domains;
+	__le16 flags;
+	__le32 stats_addr_low;
+	__le32 stats_addr_high;
+	__le32 stats_size;
+};
+
+struct scmi_msg_resp_perf_domain_attributes {
+	__le32 flags;
+	__le32 rate_limit_us;
+	__le32 sustained_freq_khz;
+	__le32 sustained_perf_level;
+	u8 name[16];
+};
+
+struct scmi_perf_ipriv {
+	u32 version;
+	struct perf_dom_info *perf_dom;
+};
+
+struct scmi_msg_resp_perf_describe_levels {
+	__le16 num_returned;
+	__le16 num_remaining;
+	struct {
+		__le32 perf_val;
+		__le32 power;
+		__le16 transition_latency_us;
+		__le16 reserved;
+	} opp[0];
+};
+
+struct scmi_msg_resp_perf_describe_levels_v4 {
+	__le16 num_returned;
+	__le16 num_remaining;
+	struct {
+		__le32 perf_val;
+		__le32 power;
+		__le16 transition_latency_us;
+		__le16 reserved;
+		__le32 indicative_freq;
+		__le32 level_index;
+	} opp[0];
+};
+
+struct scmi_perf_set_limits {
+	__le32 domain;
+	__le32 max_level;
+	__le32 min_level;
+};
+
+struct scmi_perf_get_limits {
+	__le32 max_level;
+	__le32 min_level;
+};
+
+struct scmi_perf_set_level {
+	__le32 domain;
+	__le32 level;
+};
+
+struct scmi_perf_notify_level_or_limits {
+	__le32 domain;
+	__le32 notify_enable;
+};
+
+struct scmi_msg_perf_describe_levels {
+	__le32 domain;
+	__le32 level_index;
+};
+
+struct scmi_perf_limits_notify_payld {
+	__le32 agent_id;
+	__le32 domain_id;
+	__le32 range_max;
+	__le32 range_min;
+};
+
+struct scmi_perf_limits_report {
+	ktime_t timestamp;
+	unsigned int agent_id;
+	unsigned int domain_id;
+	unsigned int range_max;
+	unsigned int range_min;
+};
+
+struct scmi_perf_level_notify_payld {
+	__le32 agent_id;
+	__le32 domain_id;
+	__le32 performance_level;
+};
+
+struct scmi_perf_level_report {
+	ktime_t timestamp;
+	unsigned int agent_id;
+	unsigned int domain_id;
+	unsigned int performance_level;
+};
+
+struct scmi_power_proto_ops {
+	int (*num_domains_get)(const struct scmi_protocol_handle *);
+	const char * (*name_get)(const struct scmi_protocol_handle *, u32);
+	int (*state_set)(const struct scmi_protocol_handle *, u32, u32);
+	int (*state_get)(const struct scmi_protocol_handle *, u32, u32 *);
+	u64 android_kabi_reserved1;
+};
+
+enum scmi_power_protocol_cmd {
+	POWER_DOMAIN_ATTRIBUTES = 3,
+	POWER_STATE_SET = 4,
+	POWER_STATE_GET = 5,
+	POWER_STATE_NOTIFY = 6,
+	POWER_DOMAIN_NAME_GET = 8,
+};
+
+struct power_dom_info;
+
+struct scmi_power_info {
+	u32 version;
+	int num_domains;
+	u64 stats_addr;
+	u32 stats_size;
+	struct power_dom_info *dom_info;
+};
+
+struct power_dom_info {
+	bool state_set_sync;
+	bool state_set_async;
+	bool state_set_notify;
+	char name[64];
+};
+
+struct scmi_msg_resp_power_attributes {
+	__le16 num_domains;
+	__le16 reserved;
+	__le32 stats_addr_low;
+	__le32 stats_addr_high;
+	__le32 stats_size;
+};
+
+struct scmi_msg_resp_power_domain_attributes {
+	__le32 flags;
+	u8 name[16];
+};
+
+struct scmi_power_state_notify {
+	__le32 domain;
+	__le32 notify_enable;
+};
+
+struct scmi_power_set_state {
+	__le32 flags;
+	__le32 domain;
+	__le32 state;
+};
+
+struct scmi_power_state_notify_payld {
+	__le32 agent_id;
+	__le32 domain_id;
+	__le32 power_state;
+};
+
+struct scmi_power_state_changed_report {
+	ktime_t timestamp;
+	unsigned int agent_id;
+	unsigned int domain_id;
+	unsigned int power_state;
+};
+
+enum scmi_reset_protocol_cmd {
+	RESET_DOMAIN_ATTRIBUTES = 3,
+	RESET = 4,
+	RESET_NOTIFY = 5,
+	RESET_DOMAIN_NAME_GET = 6,
+};
+
+struct reset_dom_info;
+
+struct scmi_reset_info {
+	u32 version;
+	int num_domains;
+	struct reset_dom_info *dom_info;
+};
+
+struct reset_dom_info {
+	bool async_reset;
+	bool reset_notify;
+	u32 latency_us;
+	char name[64];
+};
+
+struct scmi_msg_resp_reset_domain_attributes {
+	__le32 attributes;
+	__le32 latency;
+	u8 name[16];
+};
+
+struct scmi_msg_reset_domain_reset {
+	__le32 domain_id;
+	__le32 flags;
+	__le32 reset_state;
+};
+
+struct scmi_msg_reset_notify {
+	__le32 id;
+	__le32 event_control;
+};
+
+struct scmi_reset_issued_notify_payld {
+	__le32 agent_id;
+	__le32 domain_id;
+	__le32 reset_state;
+};
+
+struct scmi_reset_issued_report {
+	ktime_t timestamp;
+	unsigned int agent_id;
+	unsigned int domain_id;
+	unsigned int reset_state;
+};
+
+struct scmi_sensor_info;
+
+struct scmi_sensor_reading;
+
+struct scmi_sensor_proto_ops {
+	int (*count_get)(const struct scmi_protocol_handle *);
+	const struct scmi_sensor_info * (*info_get)(const struct scmi_protocol_handle *, u32);
+	int (*trip_point_config)(const struct scmi_protocol_handle *, u32, u8, u64);
+	int (*reading_get)(const struct scmi_protocol_handle *, u32, u64 *);
+	int (*reading_get_timestamped)(const struct scmi_protocol_handle *, u32, u8, struct scmi_sensor_reading *);
+	int (*config_get)(const struct scmi_protocol_handle *, u32, u32 *);
+	int (*config_set)(const struct scmi_protocol_handle *, u32, u32);
+	u64 android_kabi_reserved1;
+};
+
+struct scmi_sensor_intervals_info {
+	bool segmented;
+	unsigned int count;
+	unsigned int *desc;
+	unsigned int prealloc_pool[16];
+};
+
+struct scmi_range_attrs {
+	long long min_range;
+	long long max_range;
+};
+
+struct scmi_sensor_axis_info;
+
+struct scmi_sensor_info {
+	unsigned int id;
+	unsigned int type;
+	int scale;
+	unsigned int num_trip_points;
+	bool async;
+	bool update;
+	bool timestamped;
+	int tstamp_scale;
+	unsigned int num_axis;
+	struct scmi_sensor_axis_info *axis;
+	struct scmi_sensor_intervals_info intervals;
+	unsigned int sensor_config;
+	char name[64];
+	bool extended_scalar_attrs;
+	unsigned int sensor_power;
+	unsigned int resolution;
+	int exponent;
+	struct scmi_range_attrs scalar_attrs;
+	u64 android_kabi_reserved1;
+};
+
+struct scmi_sensor_axis_info {
+	unsigned int id;
+	unsigned int type;
+	int scale;
+	char name[64];
+	bool extended_attrs;
+	unsigned int resolution;
+	int exponent;
+	struct scmi_range_attrs attrs;
+};
+
+struct scmi_sensor_reading {
+	long long value;
+	unsigned long long timestamp;
+};
+
+enum scmi_sensor_protocol_cmd {
+	SENSOR_DESCRIPTION_GET = 3,
+	SENSOR_TRIP_POINT_NOTIFY = 4,
+	SENSOR_TRIP_POINT_CONFIG = 5,
+	SENSOR_READING_GET = 6,
+	SENSOR_AXIS_DESCRIPTION_GET = 7,
+	SENSOR_LIST_UPDATE_INTERVALS = 8,
+	SENSOR_CONFIG_GET = 9,
+	SENSOR_CONFIG_SET = 10,
+	SENSOR_CONTINUOUS_UPDATE_NOTIFY = 11,
+	SENSOR_NAME_GET = 12,
+	SENSOR_AXIS_NAME_GET = 13,
+};
+
+struct scmi_sens_ipriv {
+	void *priv;
+	struct device *dev;
+};
+
+struct sensors_info {
+	u32 version;
+	int num_sensors;
+	int max_requests;
+	u64 reg_addr;
+	u32 reg_size;
+	struct scmi_sensor_info *sensors;
+};
+
+struct scmi_msg_resp_sensor_attributes {
+	__le16 num_sensors;
+	u8 max_requests;
+	u8 reserved;
+	__le32 reg_addr_low;
+	__le32 reg_addr_high;
+	__le32 reg_size;
+};
+
+struct scmi_apriv {
+	bool any_axes_support_extended_names;
+	struct scmi_sensor_info *s;
+};
+
+struct scmi_msg_resp_attrs {
+	__le32 min_range_low;
+	__le32 min_range_high;
+	__le32 max_range_low;
+	__le32 max_range_high;
+};
+
+struct scmi_sensor_reading_resp {
+	__le32 sensor_value_low;
+	__le32 sensor_value_high;
+	__le32 timestamp_low;
+	__le32 timestamp_high;
+};
+
+struct scmi_msg_sensor_request_notify {
+	__le32 id;
+	__le32 event_control;
+};
+
+struct scmi_msg_sensor_description {
+	__le32 desc_index;
+};
+
+struct scmi_sensor_descriptor {
+	__le32 id;
+	__le32 attributes_low;
+	__le32 attributes_high;
+	u8 name[16];
+	__le32 power;
+	__le32 resolution;
+	struct scmi_msg_resp_attrs scalar_attrs;
+};
+
+struct scmi_msg_resp_sensor_description {
+	__le16 num_returned;
+	__le16 num_remaining;
+	struct scmi_sensor_descriptor desc[0];
+};
+
+struct scmi_msg_sensor_list_update_intervals {
+	__le32 id;
+	__le32 index;
+};
+
+struct scmi_msg_resp_sensor_list_update_intervals {
+	__le32 num_intervals_flags;
+	__le32 intervals[0];
+};
+
+struct scmi_msg_sensor_axis_description_get {
+	__le32 id;
+	__le32 axis_desc_index;
+};
+
+struct scmi_axis_descriptor {
+	__le32 id;
+	__le32 attributes_low;
+	__le32 attributes_high;
+	u8 name[16];
+	__le32 resolution;
+	struct scmi_msg_resp_attrs attrs;
+};
+
+struct scmi_msg_resp_sensor_axis_description {
+	__le32 num_axis_flags;
+	struct scmi_axis_descriptor desc[0];
+};
+
+struct scmi_sensor_axis_name_descriptor {
+	__le32 axis_id;
+	u8 name[64];
+};
+
+struct scmi_msg_resp_sensor_axis_names_description {
+	__le32 num_axis_flags;
+	struct scmi_sensor_axis_name_descriptor desc[0];
+};
+
+struct scmi_msg_set_sensor_trip_point {
+	__le32 id;
+	__le32 event_control;
+	__le32 value_low;
+	__le32 value_high;
+};
+
+struct scmi_msg_sensor_reading_get {
+	__le32 id;
+	__le32 flags;
+};
+
+struct scmi_resp_sensor_reading_complete {
+	__le32 id;
+	__le32 readings_low;
+	__le32 readings_high;
+};
+
+struct scmi_resp_sensor_reading_complete_v3 {
+	__le32 id;
+	struct scmi_sensor_reading_resp readings[0];
+};
+
+struct scmi_msg_sensor_config_set {
+	__le32 id;
+	__le32 sensor_config;
+};
+
+struct scmi_sensor_trip_notify_payld {
+	__le32 agent_id;
+	__le32 sensor_id;
+	__le32 trip_point_desc;
+};
+
+struct scmi_sensor_trip_point_report {
+	ktime_t timestamp;
+	unsigned int agent_id;
+	unsigned int sensor_id;
+	unsigned int trip_point_desc;
+};
+
+struct scmi_sensor_update_notify_payld {
+	__le32 agent_id;
+	__le32 sensor_id;
+	struct scmi_sensor_reading_resp readings[0];
+};
+
+struct scmi_sensor_update_report {
+	ktime_t timestamp;
+	unsigned int agent_id;
+	unsigned int sensor_id;
+	unsigned int readings_count;
+	struct scmi_sensor_reading readings[0];
+};
+
+enum scmi_system_protocol_cmd {
+	SYSTEM_POWER_STATE_NOTIFY = 5,
+};
+
+enum scmi_system_events {
+	SCMI_SYSTEM_SHUTDOWN = 0,
+	SCMI_SYSTEM_COLDRESET = 1,
+	SCMI_SYSTEM_WARMRESET = 2,
+	SCMI_SYSTEM_POWERUP = 3,
+	SCMI_SYSTEM_SUSPEND = 4,
+	SCMI_SYSTEM_MAX = 5,
+};
+
+struct scmi_system_power_state_notify {
+	__le32 notify_enable;
+};
+
+struct scmi_system_info {
+	u32 version;
+	bool graceful_timeout_supported;
+};
+
+struct scmi_system_power_state_notifier_payld {
+	__le32 agent_id;
+	__le32 flags;
+	__le32 system_state;
+	__le32 timeout;
+};
+
+struct scmi_system_power_state_notifier_report {
+	ktime_t timestamp;
+	unsigned int agent_id;
+	unsigned int flags;
+	unsigned int system_state;
+	unsigned int timeout;
+};
+
+enum scmi_voltage_level_mode {
+	SCMI_VOLTAGE_LEVEL_SET_AUTO = 0,
+	SCMI_VOLTAGE_LEVEL_SET_SYNC = 1,
+};
+
+struct scmi_voltage_info;
+
+struct scmi_voltage_proto_ops {
+	int (*num_domains_get)(const struct scmi_protocol_handle *);
+	const struct scmi_voltage_info * (*info_get)(const struct scmi_protocol_handle *, u32);
+	int (*config_set)(const struct scmi_protocol_handle *, u32, u32);
+	int (*config_get)(const struct scmi_protocol_handle *, u32, u32 *);
+	int (*level_set)(const struct scmi_protocol_handle *, u32, enum scmi_voltage_level_mode, s32);
+	int (*level_get)(const struct scmi_protocol_handle *, u32, s32 *);
+};
+
+struct scmi_voltage_info {
+	unsigned int id;
+	bool segmented;
+	bool negative_volts_allowed;
+	bool async_level_set;
+	char name[64];
+	unsigned int num_levels;
+	int *levels_uv;
+};
+
+enum scmi_voltage_protocol_cmd {
+	VOLTAGE_DOMAIN_ATTRIBUTES = 3,
+	VOLTAGE_DESCRIBE_LEVELS = 4,
+	VOLTAGE_CONFIG_SET = 5,
+	VOLTAGE_CONFIG_GET = 6,
+	VOLTAGE_LEVEL_SET = 7,
+	VOLTAGE_LEVEL_GET = 8,
+	VOLTAGE_DOMAIN_NAME_GET = 9,
+};
+
+struct voltage_info {
+	unsigned int version;
+	unsigned int num_domains;
+	struct scmi_voltage_info *domains;
+};
+
+struct scmi_msg_resp_domain_attributes {
+	__le32 attr;
+	u8 name[16];
+};
+
+struct scmi_volt_ipriv {
+	struct device *dev;
+	struct scmi_voltage_info *v;
+};
+
+struct scmi_msg_cmd_describe_levels {
+	__le32 domain_id;
+	__le32 level_index;
+};
+
+struct scmi_msg_resp_describe_levels {
+	__le32 flags;
+	__le32 voltage[0];
+};
+
+struct scmi_msg_cmd_config_set {
+	__le32 domain_id;
+	__le32 config;
+};
+
+struct scmi_msg_cmd_level_set {
+	__le32 domain_id;
+	__le32 flags;
+	__le32 voltage_level;
+};
+
+struct scmi_resp_voltage_level_set_complete {
+	__le32 domain_id;
+	__le32 voltage_level;
+};
+
+struct scmi_powercap_info;
+
+struct scmi_powercap_proto_ops {
+	int (*num_domains_get)(const struct scmi_protocol_handle *);
+	const struct scmi_powercap_info * (*info_get)(const struct scmi_protocol_handle *, u32);
+	int (*cap_get)(const struct scmi_protocol_handle *, u32, u32 *);
+	int (*cap_set)(const struct scmi_protocol_handle *, u32, u32, bool);
+	int (*cap_enable_set)(const struct scmi_protocol_handle *, u32, bool);
+	int (*cap_enable_get)(const struct scmi_protocol_handle *, u32, bool *);
+	int (*pai_get)(const struct scmi_protocol_handle *, u32, u32 *);
+	int (*pai_set)(const struct scmi_protocol_handle *, u32, u32);
+	int (*measurements_get)(const struct scmi_protocol_handle *, u32, u32 *, u32 *);
+	int (*measurements_threshold_set)(const struct scmi_protocol_handle *, u32, u32, u32);
+	int (*measurements_threshold_get)(const struct scmi_protocol_handle *, u32, u32 *, u32 *);
+};
+
+struct scmi_powercap_info {
+	unsigned int id;
+	bool notify_powercap_cap_change;
+	bool notify_powercap_measurement_change;
+	bool async_powercap_cap_set;
+	bool powercap_cap_config;
+	bool powercap_monitoring;
+	bool powercap_pai_config;
+	bool powercap_scale_mw;
+	bool powercap_scale_uw;
+	bool fastchannels;
+	char name[64];
+	unsigned int min_pai;
+	unsigned int max_pai;
+	unsigned int pai_step;
+	unsigned int min_power_cap;
+	unsigned int max_power_cap;
+	unsigned int power_cap_step;
+	unsigned int sustainable_power;
+	unsigned int accuracy;
+	unsigned int parent_id;
+	struct scmi_fc_info *fc_info;
+};
+
+enum scmi_powercap_protocol_cmd {
+	POWERCAP_DOMAIN_ATTRIBUTES = 3,
+	POWERCAP_CAP_GET = 4,
+	POWERCAP_CAP_SET = 5,
+	POWERCAP_PAI_GET = 6,
+	POWERCAP_PAI_SET = 7,
+	POWERCAP_DOMAIN_NAME_GET = 8,
+	POWERCAP_MEASUREMENTS_GET = 9,
+	POWERCAP_CAP_NOTIFY = 10,
+	POWERCAP_MEASUREMENTS_NOTIFY = 11,
+	POWERCAP_DESCRIBE_FASTCHANNEL = 12,
+};
+
+enum {
+	POWERCAP_FC_CAP = 0,
+	POWERCAP_FC_PAI = 1,
+	POWERCAP_FC_MAX = 2,
+};
+
+struct scmi_powercap_state;
+
+struct powercap_info {
+	u32 version;
+	int num_domains;
+	struct scmi_powercap_state *states;
+	struct scmi_powercap_info *powercaps;
+};
+
+struct scmi_powercap_state {
+	bool enabled;
+	u32 last_pcap;
+	bool meas_notif_enabled;
+	u64 thresholds;
+};
+
+struct scmi_msg_resp_powercap_domain_attributes {
+	__le32 attributes;
+	u8 name[16];
+	__le32 min_pai;
+	__le32 max_pai;
+	__le32 pai_step;
+	__le32 min_power_cap;
+	__le32 max_power_cap;
+	__le32 power_cap_step;
+	__le32 sustainable_power;
+	__le32 accuracy;
+	__le32 parent_id;
+};
+
+struct scmi_msg_powercap_set_cap_or_pai {
+	__le32 domain;
+	__le32 flags;
+	__le32 value;
+};
+
+struct scmi_msg_resp_powercap_cap_set_complete {
+	__le32 domain;
+	__le32 power_cap;
+};
+
+struct scmi_msg_resp_powercap_meas_get {
+	__le32 power;
+	__le32 pai;
+};
+
+struct scmi_msg_powercap_notify_cap {
+	__le32 domain;
+	__le32 notify_enable;
+};
+
+struct scmi_msg_powercap_notify_thresh {
+	__le32 domain;
+	__le32 notify_enable;
+	__le32 power_thresh_low;
+	__le32 power_thresh_high;
+};
+
+struct scmi_powercap_cap_changed_notify_payld {
+	__le32 agent_id;
+	__le32 domain_id;
+	__le32 power_cap;
+	__le32 pai;
+};
+
+struct scmi_powercap_cap_changed_report {
+	ktime_t timestamp;
+	unsigned int agent_id;
+	unsigned int domain_id;
+	unsigned int power_cap;
+	unsigned int pai;
+};
+
+struct scmi_powercap_meas_changed_notify_payld {
+	__le32 agent_id;
+	__le32 domain_id;
+	__le32 power;
+};
+
+struct scmi_powercap_meas_changed_report {
+	ktime_t timestamp;
+	unsigned int agent_id;
+	unsigned int domain_id;
+	unsigned int power;
+};
+
+enum scmi_pinctrl_selector_type {
+	PIN_TYPE = 0,
+	GROUP_TYPE = 1,
+	FUNCTION_TYPE = 2,
+};
+
+enum scmi_pinctrl_conf_type {
+	SCMI_PIN_DEFAULT = 0,
+	SCMI_PIN_BIAS_BUS_HOLD = 1,
+	SCMI_PIN_BIAS_DISABLE = 2,
+	SCMI_PIN_BIAS_HIGH_IMPEDANCE = 3,
+	SCMI_PIN_BIAS_PULL_UP = 4,
+	SCMI_PIN_BIAS_PULL_DEFAULT = 5,
+	SCMI_PIN_BIAS_PULL_DOWN = 6,
+	SCMI_PIN_DRIVE_OPEN_DRAIN = 7,
+	SCMI_PIN_DRIVE_OPEN_SOURCE = 8,
+	SCMI_PIN_DRIVE_PUSH_PULL = 9,
+	SCMI_PIN_DRIVE_STRENGTH = 10,
+	SCMI_PIN_INPUT_DEBOUNCE = 11,
+	SCMI_PIN_INPUT_MODE = 12,
+	SCMI_PIN_PULL_MODE = 13,
+	SCMI_PIN_INPUT_VALUE = 14,
+	SCMI_PIN_INPUT_SCHMITT = 15,
+	SCMI_PIN_LOW_POWER_MODE = 16,
+	SCMI_PIN_OUTPUT_MODE = 17,
+	SCMI_PIN_OUTPUT_VALUE = 18,
+	SCMI_PIN_POWER_SOURCE = 19,
+	SCMI_PIN_SLEW_RATE = 20,
+	SCMI_PIN_OEM_START = 192,
+	SCMI_PIN_OEM_END = 255,
+};
+
+struct scmi_pinctrl_proto_ops {
+	int (*count_get)(const struct scmi_protocol_handle *, enum scmi_pinctrl_selector_type);
+	int (*name_get)(const struct scmi_protocol_handle *, u32, enum scmi_pinctrl_selector_type, const char **);
+	int (*group_pins_get)(const struct scmi_protocol_handle *, u32, const unsigned int **, unsigned int *);
+	int (*function_groups_get)(const struct scmi_protocol_handle *, u32, unsigned int *, const unsigned int **);
+	int (*mux_set)(const struct scmi_protocol_handle *, u32, u32);
+	int (*settings_get_one)(const struct scmi_protocol_handle *, u32, enum scmi_pinctrl_selector_type, enum scmi_pinctrl_conf_type, u32 *);
+	int (*settings_get_all)(const struct scmi_protocol_handle *, u32, enum scmi_pinctrl_selector_type, unsigned int *, enum scmi_pinctrl_conf_type *, u32 *);
+	int (*settings_conf)(const struct scmi_protocol_handle *, u32, enum scmi_pinctrl_selector_type, unsigned int, enum scmi_pinctrl_conf_type *, u32 *);
+	int (*pin_request)(const struct scmi_protocol_handle *, u32);
+	int (*pin_free)(const struct scmi_protocol_handle *, u32);
+};
+
+enum scmi_pinctrl_protocol_cmd {
+	PINCTRL_ATTRIBUTES = 3,
+	PINCTRL_LIST_ASSOCIATIONS = 4,
+	PINCTRL_SETTINGS_GET = 5,
+	PINCTRL_SETTINGS_CONFIGURE = 6,
+	PINCTRL_REQUEST = 7,
+	PINCTRL_RELEASE = 8,
+	PINCTRL_NAME_GET = 9,
+	PINCTRL_SET_PERMISSIONS = 10,
+};
+
+struct scmi_group_info;
+
+struct scmi_function_info;
+
+struct scmi_pin_info;
+
+struct scmi_pinctrl_info {
+	u32 version;
+	int nr_groups;
+	int nr_functions;
+	int nr_pins;
+	struct scmi_group_info *groups;
+	struct scmi_function_info *functions;
+	struct scmi_pin_info *pins;
+};
+
+struct scmi_group_info {
+	char name[64];
+	bool present;
+	u32 *group_pins;
+	u32 nr_pins;
+};
+
+struct scmi_function_info {
+	char name[64];
+	bool present;
+	u32 *groups;
+	u32 nr_groups;
+};
+
+struct scmi_pin_info {
+	char name[64];
+	bool present;
+};
+
+struct scmi_msg_pinctrl_protocol_attributes {
+	__le32 attributes_low;
+	__le32 attributes_high;
+};
+
+struct scmi_msg_settings_conf {
+	__le32 identifier;
+	__le32 function_id;
+	__le32 attributes;
+	__le32 configs[0];
+};
+
+struct scmi_settings_get_ipriv {
+	u32 selector;
+	enum scmi_pinctrl_selector_type type;
+	bool get_all;
+	unsigned int *nr_configs;
+	enum scmi_pinctrl_conf_type *config_types;
+	u32 *config_values;
+};
+
+struct scmi_msg_request {
+	__le32 identifier;
+	__le32 flags;
+};
+
+struct scmi_pinctrl_ipriv {
+	u32 selector;
+	enum scmi_pinctrl_selector_type type;
+	u32 *array;
+};
+
+struct scmi_resp_pinctrl_attributes {
+	__le32 attributes;
+	u8 name[16];
+};
+
+struct scmi_msg_pinctrl_attributes {
+	__le32 identifier;
+	__le32 flags;
+};
+
+struct scmi_msg_pinctrl_list_assoc {
+	__le32 identifier;
+	__le32 flags;
+	__le32 index;
+};
+
+struct scmi_resp_pinctrl_list_assoc {
+	__le32 flags;
+	__le16 array[0];
+};
+
+struct scmi_msg_settings_get {
+	__le32 identifier;
+	__le32 attributes;
+};
+
+struct scmi_resp_settings_get {
+	__le32 function_selected;
+	__le32 num_configs;
+	__le32 configs[0];
+};
+
+struct scmi_shared_mem {
+	__le32 reserved;
+	__le32 channel_status;
+	__le32 reserved1[2];
+	__le32 flags;
+	__le32 length;
+	__le32 msg_header;
+	u8 msg_payload[0];
+};
+
+struct scmi_mailbox {
+	struct mbox_client cl;
+	struct mbox_chan *chan;
+	struct mbox_chan *chan_receiver;
+	struct mbox_chan *chan_platform_receiver;
+	struct scmi_chan_info *cinfo;
+	struct scmi_shared_mem *shmem;
+};
+
+struct scmi_smc {
+	int irq;
+	struct scmi_chan_info *cinfo;
+	struct scmi_shared_mem *shmem;
+	struct mutex shmem_lock;
+	atomic_t inflight;
+	u32 func_id;
+	u32 param_page;
+	u32 param_offset;
+};
+
+struct scmi_msg_payld {
+	__le32 msg_header;
+	__le32 msg_payload[0];
+};
+
+enum poll_states {
+	VIO_MSG_NOT_POLLED = 0,
+	VIO_MSG_POLL_TIMEOUT = 1,
+	VIO_MSG_POLLING = 2,
+	VIO_MSG_POLL_DONE = 3,
+};
+
+struct scmi_vio_channel {
+	struct virtqueue *vqueue;
+	struct scmi_chan_info *cinfo;
+	spinlock_t free_lock;
+	struct list_head free_list;
+	spinlock_t pending_lock;
+	struct list_head pending_cmds_list;
+	struct work_struct deferred_tx_work;
+	struct workqueue_struct *deferred_tx_wq;
+	bool is_rx;
+	unsigned int max_msg;
+	spinlock_t lock;
+	struct completion *shutdown_done;
+	refcount_t users;
+};
+
+struct scmi_vio_msg {
+	struct scmi_msg_payld *request;
+	struct scmi_msg_payld *input;
+	struct list_head list;
+	unsigned int rx_len;
+	unsigned int poll_idx;
+	enum poll_states poll_status;
+	spinlock_t poll_lock;
+	refcount_t users;
+};
+
+typedef struct {
+	u64 signature;
+	u32 revision;
+	u32 headersize;
+	u32 crc32;
+	u32 reserved;
+} efi_table_hdr_t;
+
+typedef struct {
+	u16 year;
+	u8 month;
+	u8 day;
+	u8 hour;
+	u8 minute;
+	u8 second;
+	u8 pad1;
+	u32 nanosecond;
+	s16 timezone;
+	u8 daylight;
+	u8 pad2;
+} efi_time_t;
+
+typedef struct {
+	u32 resolution;
+	u32 accuracy;
+	u8 sets_to_zero;
+} efi_time_cap_t;
+
+typedef efi_status_t efi_get_time_t(efi_time_t *, efi_time_cap_t *);
+
+typedef efi_status_t efi_set_time_t(efi_time_t *);
+
+typedef u8 efi_bool_t;
+
+typedef efi_status_t efi_get_wakeup_time_t(efi_bool_t *, efi_bool_t *, efi_time_t *);
+
+typedef efi_status_t efi_set_wakeup_time_t(efi_bool_t, efi_time_t *);
+
+typedef efi_status_t efi_set_virtual_address_map_t(unsigned long, unsigned long, u32, efi_memory_desc_t *);
+
+typedef u16 efi_char16_t;
+
+typedef efi_status_t efi_get_variable_t(efi_char16_t *, efi_guid_t *, u32 *, unsigned long *, void *);
+
+typedef efi_status_t efi_get_next_variable_t(unsigned long *, efi_char16_t *, efi_guid_t *);
+
+typedef efi_status_t efi_set_variable_t(efi_char16_t *, efi_guid_t *, u32, unsigned long, void *);
+
+typedef efi_status_t efi_get_next_high_mono_count_t(u32 *);
+
+typedef void efi_reset_system_t(int, efi_status_t, unsigned long, efi_char16_t *);
+
+typedef struct {
+	efi_guid_t guid;
+	u32 headersize;
+	u32 flags;
+	u32 imagesize;
+} efi_capsule_header_t;
+
+typedef efi_status_t efi_update_capsule_t(efi_capsule_header_t **, unsigned long, unsigned long);
+
+typedef efi_status_t efi_query_capsule_caps_t(efi_capsule_header_t **, unsigned long, u64 *, int *);
+
+typedef efi_status_t efi_query_variable_info_t(u32, u64 *, u64 *, u64 *);
+
+typedef struct {
+	efi_table_hdr_t hdr;
+	u32 get_time;
+	u32 set_time;
+	u32 get_wakeup_time;
+	u32 set_wakeup_time;
+	u32 set_virtual_address_map;
+	u32 convert_pointer;
+	u32 get_variable;
+	u32 get_next_variable;
+	u32 set_variable;
+	u32 get_next_high_mono_count;
+	u32 reset_system;
+	u32 update_capsule;
+	u32 query_capsule_caps;
+	u32 query_variable_info;
+} efi_runtime_services_32_t;
+
+typedef union {
+	struct {
+		efi_table_hdr_t hdr;
+		efi_get_time_t *get_time;
+		efi_set_time_t *set_time;
+		efi_get_wakeup_time_t *get_wakeup_time;
+		efi_set_wakeup_time_t *set_wakeup_time;
+		efi_set_virtual_address_map_t *set_virtual_address_map;
+		void *convert_pointer;
+		efi_get_variable_t *get_variable;
+		efi_get_next_variable_t *get_next_variable;
+		efi_set_variable_t *set_variable;
+		efi_get_next_high_mono_count_t *get_next_high_mono_count;
+		efi_reset_system_t *reset_system;
+		efi_update_capsule_t *update_capsule;
+		efi_query_capsule_caps_t *query_capsule_caps;
+		efi_query_variable_info_t *query_variable_info;
+	};
+	efi_runtime_services_32_t mixed_mode;
+} efi_runtime_services_t;
+
+struct efi_memory_map {
+	phys_addr_t phys_map;
+	void *map;
+	void *map_end;
+	int nr_map;
+	unsigned long desc_version;
+	unsigned long desc_size;
+	unsigned long flags;
+};
+
+struct efi {
+	const efi_runtime_services_t *runtime;
+	unsigned int runtime_version;
+	unsigned int runtime_supported_mask;
+	unsigned long acpi;
+	unsigned long acpi20;
+	unsigned long smbios;
+	unsigned long smbios3;
+	unsigned long esrt;
+	unsigned long tpm_log;
+	unsigned long tpm_final_log;
+	unsigned long mokvar_table;
+	unsigned long coco_secret;
+	unsigned long unaccepted;
+	efi_get_time_t *get_time;
+	efi_set_time_t *set_time;
+	efi_get_wakeup_time_t *get_wakeup_time;
+	efi_set_wakeup_time_t *set_wakeup_time;
+	efi_get_variable_t *get_variable;
+	efi_get_next_variable_t *get_next_variable;
+	efi_set_variable_t *set_variable;
+	efi_set_variable_t *set_variable_nonblocking;
+	efi_query_variable_info_t *query_variable_info;
+	efi_query_variable_info_t *query_variable_info_nonblocking;
+	efi_update_capsule_t *update_capsule;
+	efi_query_capsule_caps_t *query_capsule_caps;
+	efi_get_next_high_mono_count_t *get_next_high_mono_count;
+	efi_reset_system_t *reset_system;
+	struct efi_memory_map memmap;
+	unsigned long flags;
+};
+
+struct linux_efi_memreserve {
+	int size;
+	atomic_t count;
+	phys_addr_t next;
+	struct {
+		phys_addr_t base;
+		phys_addr_t size;
+	} entry[0];
+};
+
+typedef efi_status_t efi_query_variable_store_t(u32, unsigned long, bool);
+
+struct efivar_operations {
+	efi_get_variable_t *get_variable;
+	efi_get_next_variable_t *get_next_variable;
+	efi_set_variable_t *set_variable;
+	efi_set_variable_t *set_variable_nonblocking;
+	efi_query_variable_store_t *query_variable_store;
+	efi_query_variable_info_t *query_variable_info;
+};
+
+struct efivars {
+	struct kset *kset;
+	const struct efivar_operations *ops;
+};
+
+typedef struct {
+	efi_guid_t guid;
+	unsigned long *ptr;
+	const char name[16];
+} efi_config_table_type_t;
+
+typedef struct {
+	efi_guid_t guid;
+	u32 table;
+} efi_config_table_32_t;
+
+typedef union {
+	struct {
+		efi_guid_t guid;
+		void *table;
+	};
+	efi_config_table_32_t mixed_mode;
+} efi_config_table_t;
+
+typedef struct {
+	efi_guid_t guid;
+	u64 table;
+} efi_config_table_64_t;
+
+struct linux_efi_random_seed {
+	u32 size;
+	u8 bits[0];
+};
+
+typedef struct {
+	u16 version;
+	u16 length;
+	u32 runtime_services_supported;
+} efi_rt_properties_table_t;
+
+struct linux_efi_initrd {
+	unsigned long base;
+	unsigned long size;
+};
+
+typedef struct {
+	u32 version;
+	u32 num_entries;
+	u32 desc_size;
+	u32 flags;
+	efi_memory_desc_t entry[0];
+} efi_memory_attributes_table_t;
+
+typedef int (*efi_memattr_perm_setter)(struct mm_struct *, efi_memory_desc_t *, bool);
+
+enum tcpa_event_types {
+	PREBOOT = 0,
+	POST_CODE = 1,
+	UNUSED = 2,
+	NO_ACTION = 3,
+	SEPARATOR = 4,
+	ACTION = 5,
+	EVENT_TAG = 6,
+	SCRTM_CONTENTS = 7,
+	SCRTM_VERSION = 8,
+	CPU_MICROCODE = 9,
+	PLATFORM_CONFIG_FLAGS = 10,
+	TABLE_OF_DEVICES = 11,
+	COMPACT_HASH = 12,
+	IPL = 13,
+	IPL_PARTITION_DATA = 14,
+	NONHOST_CODE = 15,
+	NONHOST_CONFIG = 16,
+	NONHOST_INFO = 17,
+};
+
+struct tpm_digest {
+	u16 alg_id;
+	u8 digest[64];
+};
+
+struct tcg_pcr_event2_head {
+	u32 pcr_idx;
+	u32 event_type;
+	u32 count;
+	struct tpm_digest digests[0];
+};
+
+struct tcg_efi_specid_event_algs {
+	u16 alg_id;
+	u16 digest_size;
+};
+
+struct tcg_efi_specid_event_head {
+	u8 signature[16];
+	u32 platform_class;
+	u8 spec_version_minor;
+	u8 spec_version_major;
+	u8 spec_errata;
+	u8 uintnsize;
+	u32 num_algs;
+	struct tcg_efi_specid_event_algs digest_sizes[0];
+};
+
+struct tcg_event_field {
+	u32 event_size;
+	u8 event[0];
+};
+
+struct tcg_pcr_event {
+	u32 pcr_idx;
+	u32 event_type;
+	u8 digest[20];
+	u32 event_size;
+	u8 event[0];
+};
+
+struct linux_efi_tpm_eventlog {
+	u32 size;
+	u32 final_events_preboot_size;
+	u8 version;
+	u8 log[0];
+};
+
+struct efi_tcg2_final_events_table {
+	u64 version;
+	u64 nr_events;
+	u8 events[0];
+};
+
+struct efi_memory_map_data {
+	phys_addr_t phys_map;
+	unsigned long size;
+	unsigned long desc_version;
+	unsigned long desc_size;
+	unsigned long flags;
+};
+
+struct efi_system_resource_table {
+	u32 fw_resource_count;
+	u32 fw_resource_count_max;
+	u64 fw_resource_version;
+	u8 entries[0];
+};
+
+struct esre_entry;
+
+struct esre_attribute {
+	struct attribute attr;
+	ssize_t (*show)(struct esre_entry *, char *);
+	ssize_t (*store)(struct esre_entry *, const char *, size_t);
+};
+
+struct efi_system_resource_entry_v1;
+
+struct esre_entry {
+	union {
+		struct efi_system_resource_entry_v1 *esre1;
+	} esre;
+	struct kobject kobj;
+	struct list_head list;
+};
+
+struct efi_system_resource_entry_v1 {
+	efi_guid_t fw_class;
+	u32 fw_type;
+	u32 fw_version;
+	u32 lowest_supported_fw_version;
+	u32 capsule_flags;
+	u32 last_attempt_version;
+	u32 last_attempt_status;
+};
+
+enum efi_rts_ids {
+	EFI_NONE = 0,
+	EFI_GET_TIME = 1,
+	EFI_SET_TIME = 2,
+	EFI_GET_WAKEUP_TIME = 3,
+	EFI_SET_WAKEUP_TIME = 4,
+	EFI_GET_VARIABLE = 5,
+	EFI_GET_NEXT_VARIABLE = 6,
+	EFI_SET_VARIABLE = 7,
+	EFI_QUERY_VARIABLE_INFO = 8,
+	EFI_GET_NEXT_HIGH_MONO_COUNT = 9,
+	EFI_RESET_SYSTEM = 10,
+	EFI_UPDATE_CAPSULE = 11,
+	EFI_QUERY_CAPSULE_CAPS = 12,
+	EFI_ACPI_PRM_HANDLER = 13,
+};
+
+union efi_rts_args;
+
+struct efi_runtime_work {
+	union efi_rts_args *args;
+	efi_status_t status;
+	struct work_struct work;
+	enum efi_rts_ids efi_rts_id;
+	struct completion efi_rts_comp;
+	const void *caller;
+};
+
+union efi_rts_args {
+	struct {
+		efi_time_t *time;
+		efi_time_cap_t *capabilities;
+	} GET_TIME;
+	struct {
+		efi_time_t *time;
+	} SET_TIME;
+	struct {
+		efi_bool_t *enabled;
+		efi_bool_t *pending;
+		efi_time_t *time;
+	} GET_WAKEUP_TIME;
+	struct {
+		efi_bool_t enable;
+		efi_time_t *time;
+	} SET_WAKEUP_TIME;
+	struct {
+		efi_char16_t *name;
+		efi_guid_t *vendor;
+		u32 *attr;
+		unsigned long *data_size;
+		void *data;
+	} GET_VARIABLE;
+	struct {
+		unsigned long *name_size;
+		efi_char16_t *name;
+		efi_guid_t *vendor;
+	} GET_NEXT_VARIABLE;
+	struct {
+		efi_char16_t *name;
+		efi_guid_t *vendor;
+		u32 attr;
+		unsigned long data_size;
+		void *data;
+	} SET_VARIABLE;
+	struct {
+		u32 attr;
+		u64 *storage_space;
+		u64 *remaining_space;
+		u64 *max_variable_size;
+	} QUERY_VARIABLE_INFO;
+	struct {
+		u32 *high_count;
+	} GET_NEXT_HIGH_MONO_COUNT;
+	struct {
+		efi_capsule_header_t **capsules;
+		unsigned long count;
+		unsigned long sg_list;
+	} UPDATE_CAPSULE;
+	struct {
+		efi_capsule_header_t **capsules;
+		unsigned long count;
+		u64 *max_size;
+		int *reset_type;
+	} QUERY_CAPSULE_CAPS;
+	struct {
+		efi_status_t (*acpi_prm_handler)(u64, void *);
+		u64 param_buffer_addr;
+		void *context;
+	} ACPI_PRM_HANDLER;
+};
+
+typedef struct {
+	efi_table_hdr_t hdr;
+	u32 fw_vendor;
+	u32 fw_revision;
+	u32 con_in_handle;
+	u32 con_in;
+	u32 con_out_handle;
+	u32 con_out;
+	u32 stderr_handle;
+	u32 stderr;
+	u32 runtime;
+	u32 boottime;
+	u32 nr_tables;
+	u32 tables;
+} efi_system_table_32_t;
+
+union efi_simple_text_input_protocol;
+
+typedef union efi_simple_text_input_protocol efi_simple_text_input_protocol_t;
+
+union efi_simple_text_output_protocol;
+
+typedef union efi_simple_text_output_protocol efi_simple_text_output_protocol_t;
+
+union efi_boot_services;
+
+typedef union efi_boot_services efi_boot_services_t;
+
+typedef union {
+	struct {
+		efi_table_hdr_t hdr;
+		unsigned long fw_vendor;
+		u32 fw_revision;
+		unsigned long con_in_handle;
+		efi_simple_text_input_protocol_t *con_in;
+		unsigned long con_out_handle;
+		efi_simple_text_output_protocol_t *con_out;
+		unsigned long stderr_handle;
+		unsigned long stderr;
+		efi_runtime_services_t *runtime;
+		efi_boot_services_t *boottime;
+		unsigned long nr_tables;
+		unsigned long tables;
+	};
+	efi_system_table_32_t mixed_mode;
+} efi_system_table_t;
+
+typedef struct {
+	u16 scan_code;
+	efi_char16_t unicode_char;
+} efi_input_key_t;
+
+typedef void *efi_event_t;
+
+union efi_simple_text_input_protocol {
+	struct {
+		void *reset;
+		efi_status_t (*read_keystroke)(efi_simple_text_input_protocol_t *, efi_input_key_t *);
+		efi_event_t wait_for_key;
+	};
+	struct {
+		u32 reset;
+		u32 read_keystroke;
+		u32 wait_for_key;
+	} mixed_mode;
+};
+
+union efi_simple_text_output_protocol {
+	struct {
+		void *reset;
+		efi_status_t (*output_string)(efi_simple_text_output_protocol_t *, efi_char16_t *);
+		void *test_string;
+	};
+	struct {
+		u32 reset;
+		u32 output_string;
+		u32 test_string;
+	} mixed_mode;
+};
+
+typedef u64 efi_physical_addr_t;
+
+typedef void (*efi_event_notify_t)(efi_event_t, void *);
+
+typedef enum {
+	EfiTimerCancel = 0,
+	EfiTimerPeriodic = 1,
+	EfiTimerRelative = 2,
+} EFI_TIMER_DELAY;
+
+typedef void *efi_handle_t;
+
+struct efi_generic_dev_path;
+
+typedef struct efi_generic_dev_path efi_device_path_protocol_t;
+
+union efi_boot_services {
+	struct {
+		efi_table_hdr_t hdr;
+		void *raise_tpl;
+		void *restore_tpl;
+		efi_status_t (*allocate_pages)(int, int, unsigned long, efi_physical_addr_t *);
+		efi_status_t (*free_pages)(efi_physical_addr_t, unsigned long);
+		efi_status_t (*get_memory_map)(unsigned long *, void *, unsigned long *, unsigned long *, u32 *);
+		efi_status_t (*allocate_pool)(int, unsigned long, void **);
+		efi_status_t (*free_pool)(void *);
+		efi_status_t (*create_event)(u32, unsigned long, efi_event_notify_t, void *, efi_event_t *);
+		efi_status_t (*set_timer)(efi_event_t, EFI_TIMER_DELAY, u64);
+		efi_status_t (*wait_for_event)(unsigned long, efi_event_t *, unsigned long *);
+		void *signal_event;
+		efi_status_t (*close_event)(efi_event_t);
+		void *check_event;
+		void *install_protocol_interface;
+		void *reinstall_protocol_interface;
+		void *uninstall_protocol_interface;
+		efi_status_t (*handle_protocol)(efi_handle_t, efi_guid_t *, void **);
+		void *__reserved;
+		void *register_protocol_notify;
+		efi_status_t (*locate_handle)(int, efi_guid_t *, void *, unsigned long *, efi_handle_t *);
+		efi_status_t (*locate_device_path)(efi_guid_t *, efi_device_path_protocol_t **, efi_handle_t *);
+		efi_status_t (*install_configuration_table)(efi_guid_t *, void *);
+		efi_status_t (*load_image)(bool, efi_handle_t, efi_device_path_protocol_t *, void *, unsigned long, efi_handle_t *);
+		efi_status_t (*start_image)(efi_handle_t, unsigned long *, efi_char16_t **);
+		efi_status_t (*exit)(efi_handle_t, efi_status_t, unsigned long, efi_char16_t *);
+		efi_status_t (*unload_image)(efi_handle_t);
+		efi_status_t (*exit_boot_services)(efi_handle_t, unsigned long);
+		void *get_next_monotonic_count;
+		efi_status_t (*stall)(unsigned long);
+		void *set_watchdog_timer;
+		void *connect_controller;
+		efi_status_t (*disconnect_controller)(efi_handle_t, efi_handle_t, efi_handle_t);
+		void *open_protocol;
+		void *close_protocol;
+		void *open_protocol_information;
+		void *protocols_per_handle;
+		void *locate_handle_buffer;
+		efi_status_t (*locate_protocol)(efi_guid_t *, void *, void **);
+		efi_status_t (*install_multiple_protocol_interfaces)(efi_handle_t *, ...);
+		efi_status_t (*uninstall_multiple_protocol_interfaces)(efi_handle_t, ...);
+		void *calculate_crc32;
+		void (*copy_mem)(void *, const void *, unsigned long);
+		void (*set_mem)(void *, unsigned long, unsigned char);
+		void *create_event_ex;
+	};
+	struct {
+		efi_table_hdr_t hdr;
+		u32 raise_tpl;
+		u32 restore_tpl;
+		u32 allocate_pages;
+		u32 free_pages;
+		u32 get_memory_map;
+		u32 allocate_pool;
+		u32 free_pool;
+		u32 create_event;
+		u32 set_timer;
+		u32 wait_for_event;
+		u32 signal_event;
+		u32 close_event;
+		u32 check_event;
+		u32 install_protocol_interface;
+		u32 reinstall_protocol_interface;
+		u32 uninstall_protocol_interface;
+		u32 handle_protocol;
+		u32 __reserved;
+		u32 register_protocol_notify;
+		u32 locate_handle;
+		u32 locate_device_path;
+		u32 install_configuration_table;
+		u32 load_image;
+		u32 start_image;
+		u32 exit;
+		u32 unload_image;
+		u32 exit_boot_services;
+		u32 get_next_monotonic_count;
+		u32 stall;
+		u32 set_watchdog_timer;
+		u32 connect_controller;
+		u32 disconnect_controller;
+		u32 open_protocol;
+		u32 close_protocol;
+		u32 open_protocol_information;
+		u32 protocols_per_handle;
+		u32 locate_handle_buffer;
+		u32 locate_protocol;
+		u32 install_multiple_protocol_interfaces;
+		u32 uninstall_multiple_protocol_interfaces;
+		u32 calculate_crc32;
+		u32 copy_mem;
+		u32 set_mem;
+		u32 create_event_ex;
+	} mixed_mode;
+};
+
+struct psci_operations {
+	u32 (*get_version)();
+	int (*cpu_suspend)(u32, unsigned long);
+	int (*cpu_off)(u32);
+	int (*cpu_on)(unsigned long, unsigned long);
+	int (*migrate)(unsigned long);
+	int (*affinity_info)(unsigned long, unsigned long);
+	int (*migrate_info_type)();
+};
+
+typedef unsigned long psci_fn(unsigned long, unsigned long, unsigned long, unsigned long);
+
+typedef int (*psci_initcall_t)(const struct device_node *);
+
+struct tegra_ivc {
+	struct device *peer;
+	struct {
+		struct iosys_map map;
+		unsigned int position;
+		dma_addr_t phys;
+	} rx;
+	struct {
+		struct iosys_map map;
+		unsigned int position;
+		dma_addr_t phys;
+	} tx;
+	void (*notify)(struct tegra_ivc *, void *);
+	void *notify_data;
+	unsigned int num_frames;
+	size_t frame_size;
+};
+
+typedef void (*tegra_bpmp_mrq_handler_t)(unsigned int, struct tegra_bpmp_channel *, void *);
+
+struct tegra_bpmp_mrq {
+	struct list_head list;
+	unsigned int mrq;
+	tegra_bpmp_mrq_handler_t handler;
+	void *data;
+};
+
+struct tegra_bpmp_mb_data {
+	u32 code;
+	u32 flags;
+	u8 data[120];
+};
+
+struct mrq_query_abi_request {
+	uint32_t mrq;
+};
+
+struct mrq_query_abi_response {
+	int32_t status;
+};
+
+struct mrq_query_tag_request {
+	uint32_t addr;
+};
+
+struct mrq_ping_request {
+	uint32_t challenge;
+};
+
+struct mrq_ping_response {
+	uint32_t reply;
+};
+
+struct mrq_query_fw_tag_response {
+	uint8_t tag[32];
+};
+
+struct tegra186_bpmp {
+	struct tegra_bpmp *parent;
+	struct {
+		struct gen_pool *pool;
+		union {
+			void *sram;
+			void *dram;
+		};
+		dma_addr_t phys;
+	} tx;
+	struct {
+		struct gen_pool *pool;
+		union {
+			void *sram;
+			void *dram;
+		};
+		dma_addr_t phys;
+	} rx;
+	struct {
+		struct mbox_client client;
+		struct mbox_chan *channel;
+	} mbox;
+};
+
+enum mrq_debug_commands {
+	CMD_DEBUG_OPEN_RO = 0,
+	CMD_DEBUG_OPEN_WO = 1,
+	CMD_DEBUG_READ = 2,
+	CMD_DEBUG_WRITE = 3,
+	CMD_DEBUG_CLOSE = 4,
+	CMD_DEBUG_MAX = 5,
+};
+
+enum mrq_debugfs_commands {
+	CMD_DEBUGFS_READ = 1,
+	CMD_DEBUGFS_WRITE = 2,
+	CMD_DEBUGFS_DUMPDIR = 3,
+	CMD_DEBUGFS_MAX = 4,
+};
+
+struct seqbuf {
+	char *buf;
+	size_t pos;
+	size_t size;
+};
+
+struct cmd_debugfs_fileop_response {
+	uint32_t reserved;
+	uint32_t nbytes;
+};
+
+struct cmd_debugfs_dumpdir_response {
+	uint32_t reserved;
+	uint32_t nbytes;
+};
+
+struct mrq_debugfs_response {
+	int32_t reserved;
+	union {
+		struct cmd_debugfs_fileop_response fop;
+		struct cmd_debugfs_dumpdir_response dumpdir;
+	};
+};
+
+struct cmd_debugfs_fileop_request {
+	uint32_t fnameaddr;
+	uint32_t fnamelen;
+	uint32_t dataaddr;
+	uint32_t datalen;
+};
+
+struct cmd_debugfs_dumpdir_request {
+	uint32_t dataaddr;
+	uint32_t datalen;
+};
+
+struct mrq_debugfs_request {
+	uint32_t cmd;
+	union {
+		struct cmd_debugfs_fileop_request fop;
+		struct cmd_debugfs_dumpdir_request dumpdir;
+	};
+};
+
+struct cmd_debug_fopen_request {
+	char name[116];
+};
+
+struct cmd_debug_fread_request {
+	uint32_t fd;
+};
+
+struct cmd_debug_fwrite_request {
+	uint32_t fd;
+	uint32_t datalen;
+	char data[108];
+};
+
+struct cmd_debug_fclose_request {
+	uint32_t fd;
+};
+
+struct mrq_debug_request {
+	uint32_t cmd;
+	union {
+		struct cmd_debug_fopen_request fop;
+		struct cmd_debug_fread_request frd;
+		struct cmd_debug_fwrite_request fwr;
+		struct cmd_debug_fclose_request fcl;
+	};
+};
+
+struct cmd_debug_fopen_response {
+	uint32_t fd;
+	uint32_t datalen;
+};
+
+struct cmd_debug_fread_response {
+	uint32_t readlen;
+	char data[116];
+};
+
+struct mrq_debug_response {
+	union {
+		struct cmd_debug_fopen_response fop;
+		struct cmd_debug_fread_response frd;
+	};
+};
+
+enum tegra_ivc_state {
+	TEGRA_IVC_STATE_ESTABLISHED = 0,
+	TEGRA_IVC_STATE_SYNC = 1,
+	TEGRA_IVC_STATE_ACK = 2,
+};
+
+struct tegra_ivc_header {
+	union {
+		struct {
+			u32 count;
+			u32 state;
+		};
+		u8 pad[64];
+	} tx;
+	union {
+		u32 count;
+		u8 pad[64];
+	} rx;
+};
+
+struct of_timer_base {
+	void *base;
+	const char *name;
+	int index;
+};
+
+struct of_timer_irq {
+	int irq;
+	int index;
+	int percpu;
+	const char *name;
+	unsigned long flags;
+	irq_handler_t handler;
+};
+
+struct of_timer_clk {
+	struct clk *clk;
+	const char *name;
+	int index;
+	unsigned long rate;
+	unsigned long period;
+};
+
+struct timer_of {
+	unsigned int flags;
+	struct device_node *np;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct clock_event_device clkevt;
+	struct of_timer_base of_base;
+	struct of_timer_irq of_irq;
+	struct of_timer_clk of_clk;
+	void *private_data;
+	long: 64;
+	long: 64;
+};
+
+typedef int (*of_init_fn_1_ret)(struct device_node *);
+
+struct clocksource_mmio {
+	void *reg;
+	struct clocksource clksrc;
+};
+
+enum arch_timer_erratum_match_type {
+	ate_match_dt = 0,
+	ate_match_local_cap_id = 1,
+	ate_match_acpi_oem_info = 2,
+};
+
+struct arch_timer_erratum_workaround {
+	enum arch_timer_erratum_match_type match_type;
+	const void *id;
+	const char *desc;
+	u64 (*read_cntpct_el0)();
+	u64 (*read_cntvct_el0)();
+	int (*set_next_event_phys)(unsigned long, struct clock_event_device *);
+	int (*set_next_event_virt)(unsigned long, struct clock_event_device *);
+	bool disable_compat_vdso;
+};
+
+struct ate_acpi_oem_info {
+	char oem_id[7];
+	char oem_table_id[9];
+	u32 oem_revision;
+};
+
+struct arch_timer {
+	void *base;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct clock_event_device evt;
+};
+
+enum arch_timer_ppi_nr {
+	ARCH_TIMER_PHYS_SECURE_PPI = 0,
+	ARCH_TIMER_PHYS_NONSECURE_PPI = 1,
+	ARCH_TIMER_VIRT_PPI = 2,
+	ARCH_TIMER_HYP_PPI = 3,
+	ARCH_TIMER_HYP_VIRT_PPI = 4,
+	ARCH_TIMER_MAX_TIMER_PPI = 5,
+};
+
+enum arch_timer_reg {
+	ARCH_TIMER_REG_CTRL = 0,
+	ARCH_TIMER_REG_CVAL = 1,
+};
+
+enum arch_timer_spi_nr {
+	ARCH_TIMER_PHYS_SPI = 0,
+	ARCH_TIMER_VIRT_SPI = 1,
+	ARCH_TIMER_MAX_TIMER_SPI = 2,
+};
+
+typedef bool (*ate_match_fn_t)(const struct arch_timer_erratum_workaround *, const void *);
+
+struct arch_timer_mem_frame {
+	bool valid;
+	phys_addr_t cntbase;
+	size_t size;
+	int phys_irq;
+	int virt_irq;
+};
+
+struct arch_timer_mem {
+	phys_addr_t cntctlbase;
+	size_t size;
+	struct arch_timer_mem_frame frame[8];
+};
+
+struct sp804_clkevt {
+	void *base;
+	void *load;
+	void *load_h;
+	void *value;
+	void *value_h;
+	void *ctrl;
+	void *intclr;
+	void *ris;
+	void *mis;
+	void *bgload;
+	void *bgload_h;
+	unsigned long reload;
+	int width;
+};
+
+struct sp804_timer {
+	int load;
+	int load_h;
+	int value;
+	int value_h;
+	int ctrl;
+	int intclr;
+	int ris;
+	int mis;
+	int bgload;
+	int bgload_h;
+	int timer_base[2];
+	int width;
+};
+
+struct hid_global {
+	unsigned int usage_page;
+	__s32 logical_minimum;
+	__s32 logical_maximum;
+	__s32 physical_minimum;
+	__s32 physical_maximum;
+	__s32 unit_exponent;
+	unsigned int unit;
+	unsigned int report_id;
+	unsigned int report_size;
+	unsigned int report_count;
+};
+
+struct hid_local {
+	unsigned int usage[12288];
+	u8 usage_size[12288];
+	unsigned int collection_index[12288];
+	unsigned int usage_index;
+	unsigned int usage_minimum;
+	unsigned int delimiter_depth;
+	unsigned int delimiter_branch;
+};
+
+struct hid_parser {
+	struct hid_global global;
+	struct hid_global global_stack[4];
+	unsigned int global_stack_ptr;
+	struct hid_local local;
+	unsigned int *collection_stack;
+	unsigned int collection_stack_ptr;
+	unsigned int collection_stack_size;
+	struct hid_device *device;
+	unsigned int scan_flags;
+	u64 android_kabi_reserved1;
+};
+
+struct hid_item {
+	unsigned int format;
+	__u8 size;
+	__u8 type;
+	__u8 tag;
+	union {
+		__u8 u8;
+		__s8 s8;
+		__u16 u16;
+		__s16 s16;
+		__u32 u32;
+		__s32 s32;
+		__u8 *longdata;
+	} data;
+};
+
+enum hid_class_request {
+	HID_REQ_GET_REPORT = 1,
+	HID_REQ_GET_IDLE = 2,
+	HID_REQ_GET_PROTOCOL = 3,
+	HID_REQ_SET_REPORT = 9,
+	HID_REQ_SET_IDLE = 10,
+	HID_REQ_SET_PROTOCOL = 11,
+};
+
+struct hiddev {
+	int minor;
+	int exist;
+	int open;
+	struct mutex existancelock;
+	wait_queue_head_t wait;
+	struct hid_device *hid;
+	struct list_head list;
+	spinlock_t list_lock;
+	bool initialized;
+};
+
+struct hidraw {
+	unsigned int minor;
+	int exist;
+	int open;
+	wait_queue_head_t wait;
+	struct hid_device *hid;
+	struct device *dev;
+	spinlock_t list_lock;
+	struct list_head list;
+};
+
+struct hid_dynid {
+	struct list_head list;
+	struct hid_device_id id;
+};
+
+struct usage_priority {
+	__u32 usage;
+	bool global;
+	unsigned int slot_overwrite;
+};
+
+typedef bool (*hid_usage_cmp_t)(struct hid_usage *, unsigned int, unsigned int);
+
+struct quirks_list_struct {
+	struct hid_device_id hid_bl_item;
+	struct list_head node;
+};
+
+struct hid_usage_entry {
+	unsigned int page;
+	unsigned int usage;
+	const char *description;
+};
+
+struct hid_debug_list {
+	struct {
+		union {
+			struct __kfifo kfifo;
+			char *type;
+			const char *const_type;
+			char (*rectype)[0];
+			char *ptr;
+			const char *ptr_const;
+		};
+		char buf[0];
+	} hid_debug_fifo;
+	struct fasync_struct *fasync;
+	struct hid_device *hdev;
+	struct list_head node;
+	struct mutex read_mutex;
+};
+
+struct hidraw_report {
+	__u8 *value;
+	int len;
+};
+
+struct hidraw_list {
+	struct hidraw_report buffer[64];
+	int head;
+	int tail;
+	struct fasync_struct *fasync;
+	struct hidraw *hidraw;
+	struct list_head node;
+	struct mutex read_mutex;
+};
+
+struct hidraw_devinfo {
+	__u32 bustype;
+	__s16 vendor;
+	__s16 product;
+};
+
+enum uhid_legacy_event_type {
+	UHID_CREATE = 0,
+	UHID_OUTPUT_EV = 7,
+	UHID_INPUT = 8,
+	UHID_FEATURE = 9,
+	UHID_FEATURE_ANSWER = 10,
+};
+
+enum uhid_event_type {
+	__UHID_LEGACY_CREATE = 0,
+	UHID_DESTROY = 1,
+	UHID_START = 2,
+	UHID_STOP = 3,
+	UHID_OPEN = 4,
+	UHID_CLOSE = 5,
+	UHID_OUTPUT = 6,
+	__UHID_LEGACY_OUTPUT_EV = 7,
+	__UHID_LEGACY_INPUT = 8,
+	UHID_GET_REPORT = 9,
+	UHID_GET_REPORT_REPLY = 10,
+	UHID_CREATE2 = 11,
+	UHID_INPUT2 = 12,
+	UHID_SET_REPORT = 13,
+	UHID_SET_REPORT_REPLY = 14,
+};
+
+enum uhid_dev_flag {
+	UHID_DEV_NUMBERED_FEATURE_REPORTS = 1,
+	UHID_DEV_NUMBERED_OUTPUT_REPORTS = 2,
+	UHID_DEV_NUMBERED_INPUT_REPORTS = 4,
+};
+
+enum uhid_report_type {
+	UHID_FEATURE_REPORT = 0,
+	UHID_OUTPUT_REPORT = 1,
+	UHID_INPUT_REPORT = 2,
+};
+
+struct uhid_create_req {
+	__u8 name[128];
+	__u8 phys[64];
+	__u8 uniq[64];
+	__u8 __attribute__((btf_type_tag("user"))) *rd_data;
+	__u16 rd_size;
+	__u16 bus;
+	__u32 vendor;
+	__u32 product;
+	__u32 version;
+	__u32 country;
+} __attribute__((packed));
+
+struct uhid_input_req {
+	__u8 data[4096];
+	__u16 size;
+};
+
+struct uhid_output_req {
+	__u8 data[4096];
+	__u16 size;
+	__u8 rtype;
+} __attribute__((packed));
+
+struct uhid_output_ev_req {
+	__u16 type;
+	__u16 code;
+	__s32 value;
+};
+
+struct uhid_feature_req {
+	__u32 id;
+	__u8 rnum;
+	__u8 rtype;
+} __attribute__((packed));
+
+struct uhid_get_report_req {
+	__u32 id;
+	__u8 rnum;
+	__u8 rtype;
+} __attribute__((packed));
+
+struct uhid_feature_answer_req {
+	__u32 id;
+	__u16 err;
+	__u16 size;
+	__u8 data[4096];
+};
+
+struct uhid_get_report_reply_req {
+	__u32 id;
+	__u16 err;
+	__u16 size;
+	__u8 data[4096];
+};
+
+struct uhid_create2_req {
+	__u8 name[128];
+	__u8 phys[64];
+	__u8 uniq[64];
+	__u16 rd_size;
+	__u16 bus;
+	__u32 vendor;
+	__u32 product;
+	__u32 version;
+	__u32 country;
+	__u8 rd_data[4096];
+};
+
+struct uhid_input2_req {
+	__u16 size;
+	__u8 data[4096];
+};
+
+struct uhid_set_report_req {
+	__u32 id;
+	__u8 rnum;
+	__u8 rtype;
+	__u16 size;
+	__u8 data[4096];
+};
+
+struct uhid_set_report_reply_req {
+	__u32 id;
+	__u16 err;
+} __attribute__((packed));
+
+struct uhid_start_req {
+	__u64 dev_flags;
+};
+
+struct uhid_event {
+	__u32 type;
+	union {
+		struct uhid_create_req create;
+		struct uhid_input_req input;
+		struct uhid_output_req output;
+		struct uhid_output_ev_req output_ev;
+		struct uhid_feature_req feature;
+		struct uhid_get_report_req get_report;
+		struct uhid_feature_answer_req feature_answer;
+		struct uhid_get_report_reply_req get_report_reply;
+		struct uhid_create2_req create2;
+		struct uhid_input2_req input2;
+		struct uhid_set_report_req set_report;
+		struct uhid_set_report_reply_req set_report_reply;
+		struct uhid_start_req start;
+	} u;
+} __attribute__((packed));
+
+struct uhid_device {
+	struct mutex devlock;
+	bool running;
+	__u8 *rd_data;
+	uint rd_size;
+	struct hid_device *hid;
+	struct uhid_event input_buf;
+	wait_queue_head_t waitq;
+	spinlock_t qlock;
+	__u8 head;
+	__u8 tail;
+	struct uhid_event *outq[32];
+	struct mutex report_lock;
+	wait_queue_head_t report_wait;
+	bool report_running;
+	u32 report_id;
+	u32 report_type;
+	struct uhid_event report_buf;
+	struct work_struct worker;
+};
+
+struct uhid_create_req_compat {
+	__u8 name[128];
+	__u8 phys[64];
+	__u8 uniq[64];
+	compat_uptr_t rd_data;
+	__u16 rd_size;
+	__u16 bus;
+	__u32 vendor;
+	__u32 product;
+	__u32 version;
+	__u32 country;
+};
+
+struct apple_key_translation {
+	u16 from;
+	u16 to;
+	u8 flags;
+};
+
+struct apple_non_apple_keyboard {
+	char *name;
+};
+
+struct apple_sc_backlight;
+
+struct apple_sc {
+	struct hid_device *hdev;
+	unsigned long quirks;
+	unsigned int fn_on;
+	unsigned int fn_found;
+	unsigned long pressed_numlock[12];
+	struct timer_list battery_timer;
+	struct apple_sc_backlight *backlight;
+};
+
+struct apple_sc_backlight {
+	struct led_classdev cdev;
+	struct hid_device *hdev;
+	unsigned short backlight_off;
+	unsigned short backlight_on_min;
+	unsigned short backlight_on_max;
+};
+
+struct apple_backlight_config_report {
+	u8 report_id;
+	u8 version;
+	u16 backlight_off;
+	u16 backlight_on_min;
+	u16 backlight_on_max;
+};
+
+struct apple_backlight_set_report {
+	u8 report_id;
+	u8 version;
+	u16 backlight;
+	u16 rate;
+};
+
+struct lg_drv_data {
+	unsigned long quirks;
+	void *device_props;
+};
+
+enum lg_g15_model {
+	LG_G15 = 0,
+	LG_G15_V2 = 1,
+	LG_G510 = 2,
+	LG_G510_USB_AUDIO = 3,
+	LG_Z10 = 4,
+};
+
+enum lg_g15_led_type {
+	LG_G15_KBD_BRIGHTNESS = 0,
+	LG_G15_LCD_BRIGHTNESS = 1,
+	LG_G15_BRIGHTNESS_MAX = 2,
+	LG_G15_MACRO_PRESET1 = 2,
+	LG_G15_MACRO_PRESET2 = 3,
+	LG_G15_MACRO_PRESET3 = 4,
+	LG_G15_MACRO_RECORD = 5,
+	LG_G15_LED_MAX = 6,
+};
+
+struct lg_g15_led {
+	struct led_classdev cdev;
+	enum led_brightness brightness;
+	enum lg_g15_led_type led;
+	u8 red;
+	u8 green;
+	u8 blue;
+};
+
+struct lg_g15_data {
+	u8 transfer_buf[20];
+	struct mutex mutex;
+	struct work_struct work;
+	struct input_dev *input;
+	struct hid_device *hdev;
+	enum lg_g15_model model;
+	struct lg_g15_led leds[6];
+	bool game_mode_enabled;
+};
+
+enum recvr_type {
+	recvr_type_dj = 0,
+	recvr_type_hidpp = 1,
+	recvr_type_gaming_hidpp = 2,
+	recvr_type_mouse_only = 3,
+	recvr_type_27mhz = 4,
+	recvr_type_bluetooth = 5,
+	recvr_type_dinovo = 6,
+};
+
+struct dj_device;
+
+struct dj_receiver_dev {
+	struct hid_device *mouse;
+	struct hid_device *keyboard;
+	struct hid_device *hidpp;
+	struct dj_device *paired_dj_devices[8];
+	struct list_head list;
+	struct kref kref;
+	struct work_struct work;
+	struct kfifo notif_fifo;
+	unsigned long last_query;
+	bool ready;
+	enum recvr_type type;
+	unsigned int unnumbered_application;
+	spinlock_t lock;
+};
+
+struct dj_device {
+	struct hid_device *hdev;
+	struct dj_receiver_dev *dj_receiver_dev;
+	u64 reports_supported;
+	u8 device_index;
+};
+
+struct dj_report {
+	u8 report_id;
+	u8 device_index;
+	u8 report_type;
+	u8 report_params[12];
+};
+
+struct hidpp_event {
+	u8 report_id;
+	u8 device_index;
+	u8 sub_id;
+	u8 params[17];
+};
+
+struct dj_workitem {
+	u8 type;
+	u8 device_index;
+	u8 device_type;
+	u8 quad_id_msb;
+	u8 quad_id_lsb;
+	u64 reports_supported;
+};
+
+enum {
+	POWER_SUPPLY_CAPACITY_LEVEL_UNKNOWN = 0,
+	POWER_SUPPLY_CAPACITY_LEVEL_CRITICAL = 1,
+	POWER_SUPPLY_CAPACITY_LEVEL_LOW = 2,
+	POWER_SUPPLY_CAPACITY_LEVEL_NORMAL = 3,
+	POWER_SUPPLY_CAPACITY_LEVEL_HIGH = 4,
+	POWER_SUPPLY_CAPACITY_LEVEL_FULL = 5,
+};
+
+enum {
+	POWER_SUPPLY_CHARGE_TYPE_UNKNOWN = 0,
+	POWER_SUPPLY_CHARGE_TYPE_NONE = 1,
+	POWER_SUPPLY_CHARGE_TYPE_TRICKLE = 2,
+	POWER_SUPPLY_CHARGE_TYPE_FAST = 3,
+	POWER_SUPPLY_CHARGE_TYPE_STANDARD = 4,
+	POWER_SUPPLY_CHARGE_TYPE_ADAPTIVE = 5,
+	POWER_SUPPLY_CHARGE_TYPE_CUSTOM = 6,
+	POWER_SUPPLY_CHARGE_TYPE_LONGLIFE = 7,
+	POWER_SUPPLY_CHARGE_TYPE_BYPASS = 8,
+	POWER_SUPPLY_CHARGE_TYPE_TAPER_EXT = 50,
+};
+
+struct hidpp_battery {
+	u8 feature_index;
+	u8 solar_feature_index;
+	u8 voltage_feature_index;
+	u8 adc_measurement_feature_index;
+	struct power_supply_desc desc;
+	struct power_supply *ps;
+	char name[64];
+	int status;
+	int capacity;
+	int level;
+	int voltage;
+	int charge_type;
+	bool online;
+	u8 supported_levels_1004;
+};
+
+struct hidpp_scroll_counter {
+	int wheel_multiplier;
+	int remainder;
+	int direction;
+	unsigned long long last_time;
+};
+
+struct hidpp_device {
+	struct hid_device *hid_dev;
+	struct input_dev *input;
+	struct mutex send_mutex;
+	void *send_receive_buf;
+	char *name;
+	wait_queue_head_t wait;
+	int very_long_report_length;
+	bool answer_available;
+	u8 protocol_major;
+	u8 protocol_minor;
+	void *private_data;
+	struct work_struct work;
+	struct kfifo delayed_work_fifo;
+	atomic_t connected;
+	struct input_dev *delayed_input;
+	unsigned long quirks;
+	unsigned long capabilities;
+	u8 supported_reports;
+	struct hidpp_battery battery;
+	struct hidpp_scroll_counter vertical_wheel_counter;
+	u8 wireless_feature_index;
+};
+
+struct hidpp_ff_private_data;
+
+struct hidpp_ff_work_data {
+	struct work_struct work;
+	struct hidpp_ff_private_data *data;
+	int effect_id;
+	u8 command;
+	u8 params[20];
+	u8 size;
+};
+
+struct hidpp_ff_private_data {
+	struct hidpp_device *hidpp;
+	u8 feature_index;
+	u8 version;
+	u16 gain;
+	s16 range;
+	u8 slot_autocenter;
+	u8 num_effects;
+	int *effect_ids;
+	struct workqueue_struct *wq;
+	atomic_t workqueue_size;
+};
+
+struct fap {
+	u8 feature_index;
+	u8 funcindex_clientid;
+	u8 params[60];
+};
+
+struct rap {
+	u8 sub_id;
+	u8 reg_address;
+	u8 params[60];
+};
+
+struct hidpp_report {
+	u8 report_id;
+	u8 device_index;
+	union {
+		struct fap fap;
+		struct rap rap;
+		u8 rawbytes[62];
+	};
+};
+
+struct k400_private_data {
+	u8 feature_index;
+};
+
+struct wtp_data {
+	u16 x_size;
+	u16 y_size;
+	u8 finger_count;
+	u8 mt_feature_index;
+	u8 button_feature_index;
+	u8 maxcontacts;
+	bool flip_y;
+	unsigned int resolution;
+};
+
+struct hidpp_touchpad_raw_xy_finger {
+	u8 contact_type;
+	u8 contact_status;
+	u16 x;
+	u16 y;
+	u8 z;
+	u8 area;
+	u8 finger_id;
+};
+
+struct hidpp_touchpad_raw_xy {
+	u16 timestamp;
+	struct hidpp_touchpad_raw_xy_finger fingers[2];
+	u8 spurious_flag;
+	u8 end_of_frame;
+	u8 finger_count;
+	u8 button;
+};
+
+struct hidpp_touchpad_fw_items {
+	uint8_t presence;
+	uint8_t desired_state;
+	uint8_t state;
+	uint8_t persistent;
+};
+
+struct hidpp_touchpad_raw_info {
+	u16 x_size;
+	u16 y_size;
+	u8 z_range;
+	u8 area_range;
+	u8 timestamp_unit;
+	u8 maxcontacts;
+	u8 origin;
+	u16 res;
+};
+
+struct magicmouse_sc {
+	struct input_dev *input;
+	unsigned long quirks;
+	int ntouches;
+	int scroll_accel;
+	unsigned long scroll_jiffies;
+	struct {
+		short x;
+		short y;
+		short scroll_x;
+		short scroll_y;
+		short scroll_x_hr;
+		short scroll_y_hr;
+		u8 size;
+		bool scroll_x_active;
+		bool scroll_y_active;
+	} touches[16];
+	int tracking_ids[16];
+	struct hid_device *hdev;
+	struct delayed_work work;
+	struct timer_list battery_timer;
+};
+
+enum {
+	MAGNITUDE_STRONG = 2,
+	MAGNITUDE_WEAK = 3,
+	MAGNITUDE_NUM = 4,
+};
+
+struct ms_data {
+	unsigned long quirks;
+	struct hid_device *hdev;
+	struct work_struct ff_worker;
+	__u8 strong;
+	__u8 weak;
+	void *output_report_dmabuf;
+};
+
+struct xb1s_ff_report {
+	__u8 report_id;
+	__u8 enable;
+	__u8 magnitude[4];
+	__u8 duration_10ms;
+	__u8 start_delay_10ms;
+	__u8 loop_count;
+};
+
+struct mt_class {
+	__s32 name;
+	__s32 quirks;
+	__s32 sn_move;
+	__s32 sn_width;
+	__s32 sn_height;
+	__s32 sn_pressure;
+	__u8 maxcontacts;
+	bool is_indirect;
+	bool export_all_inputs;
+};
+
+enum latency_mode {
+	HID_LATENCY_NORMAL = 0,
+	HID_LATENCY_HIGH = 1,
+};
+
+struct mt_device {
+	struct mt_class mtclass;
+	struct timer_list release_timer;
+	struct hid_device *hdev;
+	unsigned long mt_io_flags;
+	__u8 inputmode_value;
+	__u8 maxcontacts;
+	bool is_buttonpad;
+	bool serial_maybe;
+	struct list_head applications;
+	struct list_head reports;
+};
+
+struct mt_application {
+	struct list_head list;
+	unsigned int application;
+	unsigned int report_id;
+	struct list_head mt_usages;
+	__s32 quirks;
+	__s32 *scantime;
+	__s32 scantime_logical_max;
+	__s32 *raw_cc;
+	int left_button_state;
+	unsigned int mt_flags;
+	unsigned long *pending_palm_slots;
+	__u8 num_received;
+	__u8 num_expected;
+	__u8 buttons_count;
+	__u8 touches_by_report;
+	__s32 dev_time;
+	unsigned long jiffies;
+	int timestamp;
+	int prev_scantime;
+	bool have_contact_count;
+};
+
+struct mt_report_data {
+	struct list_head list;
+	struct hid_report *report;
+	struct mt_application *application;
+	bool is_mt_collection;
+};
+
+struct mt_usages {
+	struct list_head list;
+	__s32 *x;
+	__s32 *y;
+	__s32 *cx;
+	__s32 *cy;
+	__s32 *p;
+	__s32 *w;
+	__s32 *h;
+	__s32 *a;
+	__s32 *contactid;
+	bool *tip_state;
+	bool *inrange_state;
+	bool *confidence_state;
+};
+
+enum joycon_ctlr_state {
+	JOYCON_CTLR_STATE_INIT = 0,
+	JOYCON_CTLR_STATE_READ = 1,
+	JOYCON_CTLR_STATE_REMOVED = 2,
+};
+
+enum joycon_ctlr_type {
+	JOYCON_CTLR_TYPE_JCL = 1,
+	JOYCON_CTLR_TYPE_JCR = 2,
+	JOYCON_CTLR_TYPE_PRO = 3,
+};
+
+enum joycon_msg_type {
+	JOYCON_MSG_TYPE_NONE = 0,
+	JOYCON_MSG_TYPE_USB = 1,
+	JOYCON_MSG_TYPE_SUBCMD = 2,
+};
+
+struct joycon_stick_cal {
+	s32 max;
+	s32 min;
+	s32 center;
+};
+
+struct joycon_imu_cal {
+	s16 offset[3];
+	s16 scale[3];
+};
+
+struct joycon_ctlr {
+	struct hid_device *hdev;
+	struct input_dev *input;
+	struct led_classdev leds[4];
+	struct led_classdev home_led;
+	enum joycon_ctlr_state ctlr_state;
+	spinlock_t lock;
+	u8 mac_addr[6];
+	char *mac_addr_str;
+	enum joycon_ctlr_type ctlr_type;
+	enum joycon_msg_type msg_type;
+	u8 subcmd_num;
+	struct mutex output_mutex;
+	u8 input_buf[84];
+	wait_queue_head_t wait;
+	bool received_resp;
+	u8 usb_ack_match;
+	u8 subcmd_ack_match;
+	bool received_input_report;
+	unsigned int last_input_report_msecs;
+	unsigned int last_subcmd_sent_msecs;
+	unsigned int consecutive_valid_report_deltas;
+	struct joycon_stick_cal left_stick_cal_x;
+	struct joycon_stick_cal left_stick_cal_y;
+	struct joycon_stick_cal right_stick_cal_x;
+	struct joycon_stick_cal right_stick_cal_y;
+	struct joycon_imu_cal accel_cal;
+	struct joycon_imu_cal gyro_cal;
+	s32 imu_cal_accel_divisor[3];
+	s32 imu_cal_gyro_divisor[3];
+	struct power_supply *battery;
+	struct power_supply_desc battery_desc;
+	u8 battery_capacity;
+	bool battery_charging;
+	bool host_powered;
+	u8 rumble_data[64];
+	int rumble_queue_head;
+	int rumble_queue_tail;
+	struct workqueue_struct *rumble_queue;
+	struct work_struct rumble_worker;
+	unsigned int rumble_msecs;
+	u16 rumble_ll_freq;
+	u16 rumble_lh_freq;
+	u16 rumble_rl_freq;
+	u16 rumble_rh_freq;
+	unsigned short rumble_zero_countdown;
+	struct input_dev *imu_input;
+	bool imu_first_packet_received;
+	unsigned int imu_timestamp_us;
+	unsigned int imu_last_pkt_ms;
+	unsigned int imu_delta_samples_count;
+	unsigned int imu_delta_samples_sum;
+	unsigned int imu_avg_delta_ms;
+};
+
+struct joycon_subcmd_request {
+	u8 output_id;
+	u8 packet_num;
+	u8 rumble_data[8];
+	u8 subcmd_id;
+	u8 data[0];
+};
+
+struct joycon_subcmd_reply {
+	u8 ack;
+	u8 id;
+	u8 data[0];
+};
+
+struct joycon_input_report {
+	u8 id;
+	u8 timer;
+	u8 bat_con;
+	u8 button_status[3];
+	u8 left_stick[3];
+	u8 right_stick[3];
+	u8 vibrator_report;
+	union {
+		struct joycon_subcmd_reply subcmd_reply;
+		u8 imu_raw_bytes[36];
+	};
+};
+
+struct joycon_imu_data {
+	s16 accel_x;
+	s16 accel_y;
+	s16 accel_z;
+	s16 gyro_x;
+	s16 gyro_y;
+	s16 gyro_z;
+};
+
+struct joycon_rumble_output {
+	u8 output_id;
+	u8 packet_num;
+	u8 rumble_data[8];
+};
+
+struct pcmidi_snd;
+
+struct pcmidi_sustain {
+	unsigned long in_use;
+	struct pcmidi_snd *pm;
+	struct timer_list timer;
+	unsigned char status;
+	unsigned char note;
+	unsigned char velocity;
+};
+
+struct pk_device;
+
+struct pcmidi_snd {
+	struct pk_device *pk;
+	unsigned short ifnum;
+	struct hid_report *pcmidi_report6;
+	struct input_dev *input_ep82;
+	unsigned short midi_mode;
+	unsigned short midi_sustain_mode;
+	unsigned short midi_sustain;
+	unsigned short midi_channel;
+	short midi_octave;
+	struct pcmidi_sustain sustained_notes[32];
+	unsigned short fn_state;
+	unsigned short last_key[24];
+	spinlock_t rawmidi_in_lock;
+	struct snd_card *card;
+	struct snd_rawmidi *rwmidi;
+	struct snd_rawmidi_substream *in_substream;
+	struct snd_rawmidi_substream *out_substream;
+	unsigned long in_triggered;
+	unsigned long out_active;
+};
+
+struct pk_device {
+	unsigned long quirks;
+	struct hid_device *hdev;
+	struct pcmidi_snd *pm;
+};
+
+struct picolcd_pending;
+
+struct picolcd_data {
+	struct hid_device *hdev;
+	struct dentry *debug_reset;
+	struct dentry *debug_eeprom;
+	struct dentry *debug_flash;
+	struct mutex mutex_flash;
+	int addr_sz;
+	u8 version[2];
+	unsigned short opmode_delay;
+	u8 pressed_keys[2];
+	struct input_dev *input_keys;
+	unsigned short keycode[17];
+	spinlock_t lock;
+	struct mutex mutex;
+	struct picolcd_pending *pending;
+	int status;
+};
+
+struct picolcd_pending {
+	struct hid_report *out_report;
+	struct hid_report *in_report;
+	struct completion ready;
+	int raw_size;
+	u8 raw_data[64];
+};
+
+struct plt_drv_data {
+	unsigned long device_type;
+	unsigned long last_volume_key_ts;
+	u32 quirks;
+};
+
+struct ps_led_info {
+	const char *name;
+	const char *color;
+	int max_brightness;
+	enum led_brightness (*brightness_get)(struct led_classdev *);
+	int (*brightness_set)(struct led_classdev *, enum led_brightness);
+	int (*blink_set)(struct led_classdev *, unsigned long *, unsigned long *);
+};
+
+enum dualshock4_dongle_state {
+	DONGLE_DISCONNECTED = 0,
+	DONGLE_CALIBRATING = 1,
+	DONGLE_CONNECTED = 2,
+	DONGLE_DISABLED = 3,
+};
+
+struct ps_device {
+	struct list_head list;
+	struct hid_device *hdev;
+	spinlock_t lock;
+	uint32_t player_id;
+	struct power_supply_desc battery_desc;
+	struct power_supply *battery;
+	uint8_t battery_capacity;
+	int battery_status;
+	const char *input_dev_name;
+	uint8_t mac_address[6];
+	uint32_t hw_version;
+	uint32_t fw_version;
+	int (*parse_report)(struct ps_device *, struct hid_report *, u8 *, int);
+	void (*remove)(struct ps_device *);
+};
+
+struct ps_calibration_data {
+	int abs_code;
+	short bias;
+	int sens_numer;
+	int sens_denom;
+};
+
+struct dualshock4 {
+	struct ps_device base;
+	struct input_dev *gamepad;
+	struct input_dev *sensors;
+	struct input_dev *touchpad;
+	struct ps_calibration_data accel_calib_data[3];
+	struct ps_calibration_data gyro_calib_data[3];
+	enum dualshock4_dongle_state dongle_state;
+	struct work_struct dongle_hotplug_worker;
+	bool sensor_timestamp_initialized;
+	uint32_t prev_sensor_timestamp;
+	uint32_t sensor_timestamp_us;
+	bool update_bt_poll_interval;
+	uint8_t bt_poll_interval;
+	bool update_rumble;
+	uint8_t motor_left;
+	uint8_t motor_right;
+	bool update_lightbar;
+	bool update_lightbar_blink;
+	bool lightbar_enabled;
+	uint8_t lightbar_red;
+	uint8_t lightbar_green;
+	uint8_t lightbar_blue;
+	uint8_t lightbar_blink_on;
+	uint8_t lightbar_blink_off;
+	struct led_classdev lightbar_leds[4];
+	struct work_struct output_worker;
+	bool output_worker_initialized;
+	void *output_report_dmabuf;
+};
+
+struct dualshock4_input_report_common {
+	uint8_t x;
+	uint8_t y;
+	uint8_t rx;
+	uint8_t ry;
+	uint8_t buttons[3];
+	uint8_t z;
+	uint8_t rz;
+	__le16 sensor_timestamp;
+	uint8_t sensor_temperature;
+	__le16 gyro[3];
+	__le16 accel[3];
+	uint8_t reserved2[5];
+	uint8_t status[2];
+	uint8_t reserved3;
+} __attribute__((packed));
+
+struct dualshock4_touch_point {
+	uint8_t contact;
+	uint8_t x_lo;
+	uint8_t x_hi: 4;
+	uint8_t y_lo: 4;
+	uint8_t y_hi;
+};
+
+struct dualshock4_touch_report {
+	uint8_t timestamp;
+	struct dualshock4_touch_point points[2];
+};
+
+struct dualshock4_input_report_usb {
+	uint8_t report_id;
+	struct dualshock4_input_report_common common;
+	uint8_t num_touch_reports;
+	struct dualshock4_touch_report touch_reports[3];
+	uint8_t reserved[3];
+};
+
+struct dualshock4_input_report_bt {
+	uint8_t report_id;
+	uint8_t reserved[2];
+	struct dualshock4_input_report_common common;
+	uint8_t num_touch_reports;
+	struct dualshock4_touch_report touch_reports[4];
+	uint8_t reserved2[2];
+	__le32 crc32;
+} __attribute__((packed));
+
+struct dualsense {
+	struct ps_device base;
+	struct input_dev *gamepad;
+	struct input_dev *sensors;
+	struct input_dev *touchpad;
+	uint16_t update_version;
+	struct ps_calibration_data accel_calib_data[3];
+	struct ps_calibration_data gyro_calib_data[3];
+	bool sensor_timestamp_initialized;
+	uint32_t prev_sensor_timestamp;
+	uint32_t sensor_timestamp_us;
+	bool use_vibration_v2;
+	bool update_rumble;
+	uint8_t motor_left;
+	uint8_t motor_right;
+	struct led_classdev_mc lightbar;
+	bool update_lightbar;
+	uint8_t lightbar_red;
+	uint8_t lightbar_green;
+	uint8_t lightbar_blue;
+	bool update_mic_mute;
+	bool mic_muted;
+	bool last_btn_mic_state;
+	bool update_player_leds;
+	uint8_t player_leds_state;
+	struct led_classdev player_leds[5];
+	struct work_struct output_worker;
+	bool output_worker_initialized;
+	void *output_report_dmabuf;
+	uint8_t output_seq;
+};
+
+struct dualsense_touch_point {
+	uint8_t contact;
+	uint8_t x_lo;
+	uint8_t x_hi: 4;
+	uint8_t y_lo: 4;
+	uint8_t y_hi;
+};
+
+struct dualsense_input_report {
+	uint8_t x;
+	uint8_t y;
+	uint8_t rx;
+	uint8_t ry;
+	uint8_t z;
+	uint8_t rz;
+	uint8_t seq_number;
+	uint8_t buttons[4];
+	uint8_t reserved[4];
+	__le16 gyro[3];
+	__le16 accel[3];
+	__le32 sensor_timestamp;
+	uint8_t reserved2;
+	struct dualsense_touch_point points[2];
+	uint8_t reserved3[12];
+	uint8_t status;
+	uint8_t reserved4[10];
+} __attribute__((packed));
+
+struct dualshock4_output_report_bt;
+
+struct dualshock4_output_report_usb;
+
+struct dualshock4_output_report_common;
+
+struct dualshock4_output_report {
+	uint8_t *data;
+	uint8_t len;
+	struct dualshock4_output_report_bt *bt;
+	struct dualshock4_output_report_usb *usb;
+	struct dualshock4_output_report_common *common;
+};
+
+struct dualshock4_output_report_common {
+	uint8_t valid_flag0;
+	uint8_t valid_flag1;
+	uint8_t reserved;
+	uint8_t motor_right;
+	uint8_t motor_left;
+	uint8_t lightbar_red;
+	uint8_t lightbar_green;
+	uint8_t lightbar_blue;
+	uint8_t lightbar_blink_on;
+	uint8_t lightbar_blink_off;
+};
+
+struct dualshock4_output_report_bt {
+	uint8_t report_id;
+	uint8_t hw_control;
+	uint8_t audio_control;
+	struct dualshock4_output_report_common common;
+	uint8_t reserved[61];
+	__le32 crc32;
+} __attribute__((packed));
+
+struct dualshock4_output_report_usb {
+	uint8_t report_id;
+	struct dualshock4_output_report_common common;
+	uint8_t reserved[21];
+};
+
+struct dualsense_output_report_bt;
+
+struct dualsense_output_report_usb;
+
+struct dualsense_output_report_common;
+
+struct dualsense_output_report {
+	uint8_t *data;
+	uint8_t len;
+	struct dualsense_output_report_bt *bt;
+	struct dualsense_output_report_usb *usb;
+	struct dualsense_output_report_common *common;
+};
+
+struct dualsense_output_report_common {
+	uint8_t valid_flag0;
+	uint8_t valid_flag1;
+	uint8_t motor_right;
+	uint8_t motor_left;
+	uint8_t reserved[4];
+	uint8_t mute_button_led;
+	uint8_t power_save_control;
+	uint8_t reserved2[28];
+	uint8_t valid_flag2;
+	uint8_t reserved3[2];
+	uint8_t lightbar_setup;
+	uint8_t led_brightness;
+	uint8_t player_leds;
+	uint8_t lightbar_red;
+	uint8_t lightbar_green;
+	uint8_t lightbar_blue;
+};
+
+struct dualsense_output_report_bt {
+	uint8_t report_id;
+	uint8_t seq_tag;
+	uint8_t tag;
+	struct dualsense_output_report_common common;
+	uint8_t reserved[24];
+	__le32 crc32;
+} __attribute__((packed));
+
+struct dualsense_output_report_usb {
+	uint8_t report_id;
+	struct dualsense_output_report_common common;
+	uint8_t reserved[15];
+};
+
+struct roccat_report {
+	uint8_t *value;
+};
+
+struct roccat_device {
+	unsigned int minor;
+	int report_size;
+	int open;
+	int exist;
+	wait_queue_head_t wait;
+	struct device *dev;
+	struct hid_device *hid;
+	struct list_head readers;
+	struct mutex readers_lock;
+	struct roccat_report cbuf[16];
+	int cbuf_end;
+	struct mutex cbuf_lock;
+};
+
+struct roccat_reader {
+	struct list_head node;
+	struct roccat_device *device;
+	int cbuf_start;
+};
+
+enum roccat_common2_commands {
+	ROCCAT_COMMON_COMMAND_CONTROL = 4,
+};
+
+enum roccat_common2_control_states {
+	ROCCAT_COMMON_CONTROL_STATUS_CRITICAL = 0,
+	ROCCAT_COMMON_CONTROL_STATUS_OK = 1,
+	ROCCAT_COMMON_CONTROL_STATUS_INVALID = 2,
+	ROCCAT_COMMON_CONTROL_STATUS_BUSY = 3,
+	ROCCAT_COMMON_CONTROL_STATUS_CRITICAL_NEW = 4,
+};
+
+struct roccat_common2_control {
+	uint8_t command;
+	uint8_t value;
+	uint8_t request;
+};
+
+struct roccat_common2_device {
+	int roccat_claimed;
+	int chrdev_minor;
+	struct mutex lock;
+};
+
+enum arvo_commands {
+	ARVO_COMMAND_MODE_KEY = 3,
+	ARVO_COMMAND_BUTTON = 4,
+	ARVO_COMMAND_INFO = 5,
+	ARVO_COMMAND_KEY_MASK = 6,
+	ARVO_COMMAND_ACTUAL_PROFILE = 7,
+};
+
+enum arvo_special_report_event_masks {
+	ARVO_SPECIAL_REPORT_EVENT_MASK_ACTION = 240,
+	ARVO_SPECIAL_REPORT_EVENT_MASK_BUTTON = 15,
+};
+
+enum arvo_special_report_events {
+	ARVO_SPECIAL_REPORT_EVENT_ACTION_PRESS = 16,
+	ARVO_SPECIAL_REPORT_EVENT_ACTION_RELEASE = 0,
+};
+
+enum arvo_roccat_report_action {
+	ARVO_ROCCAT_REPORT_ACTION_RELEASE = 0,
+	ARVO_ROCCAT_REPORT_ACTION_PRESS = 1,
+};
+
+struct arvo_special_report {
+	uint8_t unknown1;
+	uint8_t event;
+	uint8_t unknown2;
+};
+
+struct arvo_device {
+	int roccat_claimed;
+	int chrdev_minor;
+	struct mutex arvo_lock;
+	int actual_profile;
+};
+
+struct arvo_actual_profile {
+	uint8_t command;
+	uint8_t actual_profile;
+};
+
+struct arvo_roccat_report {
+	uint8_t profile;
+	uint8_t button;
+	uint8_t action;
+};
+
+struct arvo_mode_key {
+	uint8_t command;
+	uint8_t state;
+};
+
+struct arvo_key_mask {
+	uint8_t command;
+	uint8_t key_mask;
+};
+
+enum {
+	ISKU_PROFILE_NUM = 5,
+	ISKU_USB_INTERFACE_PROTOCOL = 0,
+};
+
+enum isku_commands {
+	ISKU_COMMAND_CONTROL = 4,
+	ISKU_COMMAND_ACTUAL_PROFILE = 5,
+	ISKU_COMMAND_KEY_MASK = 7,
+	ISKU_COMMAND_KEYS_FUNCTION = 8,
+	ISKU_COMMAND_KEYS_EASYZONE = 9,
+	ISKU_COMMAND_KEYS_MEDIA = 10,
+	ISKU_COMMAND_KEYS_THUMBSTER = 11,
+	ISKU_COMMAND_KEYS_MACRO = 13,
+	ISKU_COMMAND_MACRO = 14,
+	ISKU_COMMAND_INFO = 15,
+	ISKU_COMMAND_LIGHT = 16,
+	ISKU_COMMAND_RESET = 17,
+	ISKU_COMMAND_KEYS_CAPSLOCK = 19,
+	ISKU_COMMAND_LAST_SET = 20,
+	ISKU_COMMAND_15 = 21,
+	ISKU_COMMAND_TALK = 22,
+	ISKU_COMMAND_TALKFX = 23,
+	ISKU_COMMAND_FIRMWARE_WRITE = 27,
+	ISKU_COMMAND_FIRMWARE_WRITE_CONTROL = 28,
+};
+
+enum isku_report_numbers {
+	ISKU_REPORT_NUMBER_BUTTON = 3,
+};
+
+enum isku_report_button_events {
+	ISKU_REPORT_BUTTON_EVENT_PROFILE = 2,
+};
+
+enum {
+	ISKU_SIZE_CONTROL = 3,
+	ISKU_SIZE_INFO = 6,
+	ISKU_SIZE_KEY_MASK = 6,
+	ISKU_SIZE_KEYS_FUNCTION = 41,
+	ISKU_SIZE_KEYS_EASYZONE = 65,
+	ISKU_SIZE_KEYS_MEDIA = 29,
+	ISKU_SIZE_KEYS_THUMBSTER = 23,
+	ISKU_SIZE_KEYS_MACRO = 35,
+	ISKU_SIZE_KEYS_CAPSLOCK = 6,
+	ISKU_SIZE_LAST_SET = 20,
+	ISKU_SIZE_LIGHT = 16,
+	ISKU_SIZE_MACRO = 2083,
+	ISKU_SIZE_RESET = 3,
+	ISKU_SIZE_TALK = 16,
+	ISKU_SIZE_TALKFX = 16,
+};
+
+struct isku_report_button {
+	uint8_t number;
+	uint8_t zero;
+	uint8_t event;
+	uint8_t data1;
+	uint8_t data2;
+};
+
+struct isku_device {
+	int roccat_claimed;
+	int chrdev_minor;
+	struct mutex isku_lock;
+	int actual_profile;
+};
+
+struct isku_actual_profile {
+	uint8_t command;
+	uint8_t size;
+	uint8_t actual_profile;
+};
+
+struct isku_roccat_report {
+	uint8_t event;
+	uint8_t data1;
+	uint8_t data2;
+	uint8_t profile;
+};
+
+enum kone_commands {
+	kone_command_profile = 90,
+	kone_command_settings = 346,
+	kone_command_firmware_version = 602,
+	kone_command_weight = 1114,
+	kone_command_calibrate = 1370,
+	kone_command_confirm_write = 1626,
+	kone_command_firmware = 3674,
+};
+
+enum kone_mouse_events {
+	kone_mouse_event_osd_dpi = 160,
+	kone_mouse_event_osd_profile = 176,
+	kone_mouse_event_calibration = 192,
+	kone_mouse_event_call_overlong_macro = 224,
+	kone_mouse_event_multimedia = 225,
+	kone_mouse_event_switch_dpi = 240,
+	kone_mouse_event_switch_profile = 241,
+};
+
+enum kone_keystroke_actions {
+	kone_keystroke_action_press = 0,
+	kone_keystroke_action_release = 1,
+};
+
+struct kone_mouse_event {
+	uint8_t report_number;
+	uint8_t button;
+	uint16_t x;
+	uint16_t y;
+	uint8_t wheel;
+	union {
+		struct {
+			uint8_t tilt;
+			uint8_t unknown;
+			uint8_t event;
+			uint8_t value;
+			uint8_t macro_key;
+		};
+		struct {
+			uint8_t tilt;
+			uint8_t unknown;
+			uint8_t event;
+			uint8_t value;
+			uint8_t macro_key;
+		} wipe;
+	};
+};
+
+struct kone_settings {
+	uint16_t size;
+	uint8_t startup_profile;
+	uint8_t unknown1;
+	uint8_t tcu;
+	uint8_t unknown2[23];
+	uint8_t calibration_data[4];
+	uint8_t unknown3[2];
+	uint16_t checksum;
+};
+
+struct kone_light_info {
+	uint8_t number;
+	uint8_t mod;
+	uint8_t red;
+	uint8_t green;
+	uint8_t blue;
+};
+
+struct kone_keystroke {
+	uint8_t key;
+	uint8_t action;
+	uint16_t period;
+};
+
+struct kone_button_info {
+	uint8_t number;
+	uint8_t type;
+	uint8_t macro_type;
+	uint8_t macro_set_name[16];
+	uint8_t macro_name[16];
+	uint8_t count;
+	struct kone_keystroke keystrokes[20];
+};
+
+struct kone_profile {
+	uint16_t size;
+	uint16_t unused;
+	uint8_t profile;
+	uint16_t main_sensitivity;
+	uint8_t xy_sensitivity_enabled;
+	uint16_t x_sensitivity;
+	uint16_t y_sensitivity;
+	uint8_t dpi_rate;
+	uint8_t startup_dpi;
+	uint8_t polling_rate;
+	uint8_t dcu_flag;
+	uint8_t light_effect_1;
+	uint8_t light_effect_2;
+	uint8_t light_effect_3;
+	uint8_t light_effect_speed;
+	struct kone_light_info light_infos[5];
+	struct kone_button_info button_infos[8];
+	uint16_t checksum;
+} __attribute__((packed));
+
+struct kone_device {
+	int actual_profile;
+	int actual_dpi;
+	struct kone_mouse_event last_mouse_event;
+	long: 0;
+	struct mutex kone_lock;
+	struct kone_profile profiles[5];
+	struct kone_settings settings;
+	long: 0;
+	int firmware_version;
+	int roccat_claimed;
+	int chrdev_minor;
+	long: 0;
+} __attribute__((packed));
+
+struct kone_roccat_report {
+	uint8_t event;
+	uint8_t value;
+	uint8_t key;
+};
+
+enum koneplus_commands {
+	KONEPLUS_COMMAND_ACTUAL_PROFILE = 5,
+	KONEPLUS_COMMAND_CONTROL = 4,
+	KONEPLUS_COMMAND_PROFILE_SETTINGS = 6,
+	KONEPLUS_COMMAND_PROFILE_BUTTONS = 7,
+	KONEPLUS_COMMAND_MACRO = 8,
+	KONEPLUS_COMMAND_INFO = 9,
+	KONEPLUS_COMMAND_TCU = 12,
+	KONEPLUS_COMMAND_TCU_IMAGE = 12,
+	KONEPLUS_COMMAND_E = 14,
+	KONEPLUS_COMMAND_SENSOR = 15,
+	KONEPLUS_COMMAND_TALK = 16,
+	KONEPLUS_COMMAND_FIRMWARE_WRITE = 27,
+	KONEPLUS_COMMAND_FIRMWARE_WRITE_CONTROL = 28,
+};
+
+enum {
+	KONEPLUS_SIZE_ACTUAL_PROFILE = 3,
+	KONEPLUS_SIZE_CONTROL = 3,
+	KONEPLUS_SIZE_FIRMWARE_WRITE = 1026,
+	KONEPLUS_SIZE_INFO = 6,
+	KONEPLUS_SIZE_MACRO = 2082,
+	KONEPLUS_SIZE_PROFILE_SETTINGS = 43,
+	KONEPLUS_SIZE_PROFILE_BUTTONS = 77,
+	KONEPLUS_SIZE_SENSOR = 6,
+	KONEPLUS_SIZE_TALK = 16,
+	KONEPLUS_SIZE_TCU = 4,
+	KONEPLUS_SIZE_TCU_IMAGE = 1028,
+};
+
+enum koneplus_mouse_report_numbers {
+	KONEPLUS_MOUSE_REPORT_NUMBER_HID = 1,
+	KONEPLUS_MOUSE_REPORT_NUMBER_AUDIO = 2,
+	KONEPLUS_MOUSE_REPORT_NUMBER_BUTTON = 3,
+};
+
+enum koneplus_mouse_report_button_types {
+	KONEPLUS_MOUSE_REPORT_BUTTON_TYPE_PROFILE = 32,
+	KONEPLUS_MOUSE_REPORT_BUTTON_TYPE_QUICKLAUNCH = 96,
+	KONEPLUS_MOUSE_REPORT_BUTTON_TYPE_TIMER = 128,
+	KONEPLUS_MOUSE_REPORT_BUTTON_TYPE_CPI = 176,
+	KONEPLUS_MOUSE_REPORT_BUTTON_TYPE_SENSITIVITY = 192,
+	KONEPLUS_MOUSE_REPORT_BUTTON_TYPE_MULTIMEDIA = 240,
+	KONEPLUS_MOUSE_REPORT_TALK = 255,
+};
+
+enum koneplus_mouse_report_button_action {
+	KONEPLUS_MOUSE_REPORT_BUTTON_ACTION_PRESS = 0,
+	KONEPLUS_MOUSE_REPORT_BUTTON_ACTION_RELEASE = 1,
+};
+
+enum koneplus_control_requests {
+	KONEPLUS_CONTROL_REQUEST_PROFILE_SETTINGS = 128,
+	KONEPLUS_CONTROL_REQUEST_PROFILE_BUTTONS = 144,
+};
+
+struct koneplus_mouse_report_button {
+	uint8_t report_number;
+	uint8_t zero1;
+	uint8_t type;
+	uint8_t data1;
+	uint8_t data2;
+	uint8_t zero2;
+	uint8_t unknown[2];
+};
+
+struct koneplus_device {
+	int actual_profile;
+	int roccat_claimed;
+	int chrdev_minor;
+	struct mutex koneplus_lock;
+};
+
+struct koneplus_actual_profile {
+	uint8_t command;
+	uint8_t size;
+	uint8_t actual_profile;
+};
+
+struct koneplus_roccat_report {
+	uint8_t type;
+	uint8_t data1;
+	uint8_t data2;
+	uint8_t profile;
+};
+
+struct koneplus_info {
+	uint8_t command;
+	uint8_t size;
+	uint8_t firmware_version;
+	uint8_t unknown[3];
+};
+
+enum {
+	KONEPURE_MOUSE_REPORT_NUMBER_BUTTON = 3,
+};
+
+enum kovaplus_control_requests {
+	KOVAPLUS_CONTROL_REQUEST_PROFILE_SETTINGS = 16,
+	KOVAPLUS_CONTROL_REQUEST_PROFILE_BUTTONS = 32,
+};
+
+enum kovaplus_commands {
+	KOVAPLUS_COMMAND_ACTUAL_PROFILE = 5,
+	KOVAPLUS_COMMAND_CONTROL = 4,
+	KOVAPLUS_COMMAND_PROFILE_SETTINGS = 6,
+	KOVAPLUS_COMMAND_PROFILE_BUTTONS = 7,
+	KOVAPLUS_COMMAND_INFO = 9,
+	KOVAPLUS_COMMAND_A = 10,
+};
+
+enum {
+	KOVAPLUS_SIZE_CONTROL = 3,
+	KOVAPLUS_SIZE_INFO = 6,
+	KOVAPLUS_SIZE_PROFILE_SETTINGS = 16,
+	KOVAPLUS_SIZE_PROFILE_BUTTONS = 23,
+};
+
+enum kovaplus_mouse_report_numbers {
+	KOVAPLUS_MOUSE_REPORT_NUMBER_MOUSE = 1,
+	KOVAPLUS_MOUSE_REPORT_NUMBER_AUDIO = 2,
+	KOVAPLUS_MOUSE_REPORT_NUMBER_BUTTON = 3,
+	KOVAPLUS_MOUSE_REPORT_NUMBER_KBD = 4,
+};
+
+enum kovaplus_mouse_report_button_types {
+	KOVAPLUS_MOUSE_REPORT_BUTTON_TYPE_PROFILE_1 = 32,
+	KOVAPLUS_MOUSE_REPORT_BUTTON_TYPE_PROFILE_2 = 48,
+	KOVAPLUS_MOUSE_REPORT_BUTTON_TYPE_MACRO = 64,
+	KOVAPLUS_MOUSE_REPORT_BUTTON_TYPE_SHORTCUT = 80,
+	KOVAPLUS_MOUSE_REPORT_BUTTON_TYPE_QUICKLAUNCH = 96,
+	KOVAPLUS_MOUSE_REPORT_BUTTON_TYPE_TIMER = 128,
+	KOVAPLUS_MOUSE_REPORT_BUTTON_TYPE_CPI = 176,
+	KOVAPLUS_MOUSE_REPORT_BUTTON_TYPE_SENSITIVITY = 192,
+	KOVAPLUS_MOUSE_REPORT_BUTTON_TYPE_MULTIMEDIA = 240,
+};
+
+struct kovaplus_mouse_report_button {
+	uint8_t report_number;
+	uint8_t unknown1;
+	uint8_t type;
+	uint8_t data1;
+	uint8_t data2;
+};
+
+struct kovaplus_profile_settings {
+	uint8_t command;
+	uint8_t size;
+	uint8_t profile_index;
+	uint8_t unknown1;
+	uint8_t sensitivity_x;
+	uint8_t sensitivity_y;
+	uint8_t cpi_levels_enabled;
+	uint8_t cpi_startup_level;
+	uint8_t data[8];
+};
+
+struct kovaplus_profile_buttons {
+	uint8_t command;
+	uint8_t size;
+	uint8_t profile_index;
+	uint8_t data[20];
+};
+
+struct kovaplus_device {
+	int actual_profile;
+	int actual_cpi;
+	int actual_x_sensitivity;
+	int actual_y_sensitivity;
+	int roccat_claimed;
+	int chrdev_minor;
+	struct mutex kovaplus_lock;
+	struct kovaplus_profile_settings profile_settings[5];
+	struct kovaplus_profile_buttons profile_buttons[5];
+};
+
+struct kovaplus_actual_profile {
+	uint8_t command;
+	uint8_t size;
+	uint8_t actual_profile;
+};
+
+struct kovaplus_roccat_report {
+	uint8_t type;
+	uint8_t profile;
+	uint8_t button;
+	uint8_t data1;
+	uint8_t data2;
+};
+
+struct kovaplus_info {
+	uint8_t command;
+	uint8_t size;
+	uint8_t firmware_version;
+	uint8_t unknown[3];
+};
+
+enum {
+	LUA_SIZE_CONTROL = 8,
+};
+
+enum lua_commands {
+	LUA_COMMAND_CONTROL = 3,
+};
+
+struct lua_device {
+	struct mutex lua_lock;
+};
+
+enum pyra_commands {
+	PYRA_COMMAND_CONTROL = 4,
+	PYRA_COMMAND_SETTINGS = 5,
+	PYRA_COMMAND_PROFILE_SETTINGS = 6,
+	PYRA_COMMAND_PROFILE_BUTTONS = 7,
+	PYRA_COMMAND_INFO = 9,
+	PYRA_COMMAND_B = 11,
+};
+
+enum {
+	PYRA_SIZE_CONTROL = 3,
+	PYRA_SIZE_INFO = 6,
+	PYRA_SIZE_PROFILE_SETTINGS = 13,
+	PYRA_SIZE_PROFILE_BUTTONS = 19,
+	PYRA_SIZE_SETTINGS = 3,
+};
+
+enum pyra_control_requests {
+	PYRA_CONTROL_REQUEST_PROFILE_SETTINGS = 16,
+	PYRA_CONTROL_REQUEST_PROFILE_BUTTONS = 32,
+};
+
+enum pyra_mouse_report_numbers {
+	PYRA_MOUSE_REPORT_NUMBER_HID = 1,
+	PYRA_MOUSE_REPORT_NUMBER_AUDIO = 2,
+	PYRA_MOUSE_REPORT_NUMBER_BUTTON = 3,
+};
+
+enum pyra_mouse_event_button_types {
+	PYRA_MOUSE_EVENT_BUTTON_TYPE_TILT = 16,
+	PYRA_MOUSE_EVENT_BUTTON_TYPE_PROFILE_1 = 32,
+	PYRA_MOUSE_EVENT_BUTTON_TYPE_PROFILE_2 = 48,
+	PYRA_MOUSE_EVENT_BUTTON_TYPE_MACRO = 64,
+	PYRA_MOUSE_EVENT_BUTTON_TYPE_SHORTCUT = 80,
+	PYRA_MOUSE_EVENT_BUTTON_TYPE_QUICKLAUNCH = 96,
+	PYRA_MOUSE_EVENT_BUTTON_TYPE_CPI = 176,
+	PYRA_MOUSE_EVENT_BUTTON_TYPE_SENSITIVITY = 192,
+	PYRA_MOUSE_EVENT_BUTTON_TYPE_MULTIMEDIA = 240,
+};
+
+enum {
+	PYRA_MOUSE_EVENT_BUTTON_PRESS = 0,
+	PYRA_MOUSE_EVENT_BUTTON_RELEASE = 1,
+};
+
+struct pyra_mouse_event_button {
+	uint8_t report_number;
+	uint8_t unknown;
+	uint8_t type;
+	uint8_t data1;
+	uint8_t data2;
+};
+
+struct pyra_settings {
+	uint8_t command;
+	uint8_t size;
+	uint8_t startup_profile;
+};
+
+struct pyra_profile_settings {
+	uint8_t command;
+	uint8_t size;
+	uint8_t number;
+	uint8_t xysync;
+	uint8_t x_sensitivity;
+	uint8_t y_sensitivity;
+	uint8_t x_cpi;
+	uint8_t y_cpi;
+	uint8_t lightswitch;
+	uint8_t light_effect;
+	uint8_t handedness;
+	uint16_t checksum;
+} __attribute__((packed));
+
+struct pyra_device {
+	int actual_profile;
+	int actual_cpi;
+	int roccat_claimed;
+	int chrdev_minor;
+	struct mutex pyra_lock;
+	struct pyra_profile_settings profile_settings[5];
+};
+
+struct pyra_roccat_report {
+	uint8_t type;
+	uint8_t value;
+	uint8_t key;
+};
+
+struct pyra_info {
+	uint8_t command;
+	uint8_t size;
+	uint8_t firmware_version;
+	uint8_t unknown1;
+	uint8_t unknown2;
+	uint8_t unknown3;
+};
+
+enum {
+	RYOS_REPORT_NUMBER_SPECIAL = 3,
+	RYOS_USB_INTERFACE_PROTOCOL = 0,
+};
+
+enum {
+	SAVU_MOUSE_REPORT_NUMBER_SPECIAL = 3,
+};
+
+struct savu_mouse_report_special {
+	uint8_t report_number;
+	uint8_t zero;
+	uint8_t type;
+	uint8_t data[2];
+};
+
+struct savu_roccat_report {
+	uint8_t type;
+	uint8_t data[2];
+};
+
+struct sixaxis_rumble {
+	u8 padding;
+	u8 right_duration;
+	u8 right_motor_on;
+	u8 left_duration;
+	u8 left_motor_force;
+};
+
+struct sixaxis_led {
+	u8 time_enabled;
+	u8 duty_length;
+	u8 enabled;
+	u8 duty_off;
+	u8 duty_on;
+};
+
+struct sixaxis_output_report {
+	u8 report_id;
+	struct sixaxis_rumble rumble;
+	u8 padding[4];
+	u8 leds_bitmap;
+	struct sixaxis_led led[4];
+	struct sixaxis_led _reserved;
+};
+
+union sixaxis_output_report_01 {
+	struct sixaxis_output_report data;
+	u8 buf[36];
+};
+
+enum sony_worker {
+	SONY_WORKER_STATE = 0,
+};
+
+struct sony_sc {
+	spinlock_t lock;
+	struct list_head list_node;
+	struct hid_device *hdev;
+	struct input_dev *touchpad;
+	struct input_dev *sensor_dev;
+	struct led_classdev *leds[4];
+	unsigned long quirks;
+	struct work_struct state_worker;
+	void (*send_output_report)(struct sony_sc *);
+	struct power_supply *battery;
+	struct power_supply_desc battery_desc;
+	int device_id;
+	u8 *output_report_dmabuf;
+	u8 left;
+	u8 right;
+	u8 mac_address[6];
+	u8 state_worker_initialized;
+	u8 defer_initialization;
+	u8 battery_capacity;
+	int battery_status;
+	u8 led_state[4];
+	u8 led_delay_on[4];
+	u8 led_delay_off[4];
+	u8 led_count;
+	struct urb *ghl_urb;
+	struct timer_list ghl_poke_timer;
+};
+
+struct motion_output_report_02 {
+	u8 type;
+	u8 zero;
+	u8 r;
+	u8 g;
+	u8 b;
+	u8 zero2;
+	u8 rumble;
+};
+
+struct steam_device {
+	struct list_head list;
+	spinlock_t lock;
+	struct hid_device *hdev;
+	struct hid_device *client_hdev;
+	struct mutex mutex;
+	bool client_opened;
+	struct input_dev __attribute__((btf_type_tag("rcu"))) *input;
+	unsigned long quirks;
+	struct work_struct work_connect;
+	bool connected;
+	char serial_no[11];
+	struct power_supply_desc battery_desc;
+	struct power_supply __attribute__((btf_type_tag("rcu"))) *battery;
+	u8 battery_charge;
+	u16 voltage;
+	struct delayed_work heartbeat;
+	struct work_struct rumble_work;
+	u16 rumble_left;
+	u16 rumble_right;
+};
+
+enum uclogic_params_pen_inrange {
+	UCLOGIC_PARAMS_PEN_INRANGE_NORMAL = 0,
+	UCLOGIC_PARAMS_PEN_INRANGE_INVERTED = 1,
+	UCLOGIC_PARAMS_PEN_INRANGE_NONE = 2,
+};
+
+struct uclogic_params_pen_subreport {
+	__u8 value;
+	__u8 id;
+};
+
+struct uclogic_params_pen {
+	bool usage_invalid;
+	__u8 *desc_ptr;
+	unsigned int desc_size;
+	unsigned int id;
+	struct uclogic_params_pen_subreport subreport_list[3];
+	enum uclogic_params_pen_inrange inrange;
+	bool fragmented_hires;
+	bool tilt_y_flipped;
+};
+
+struct uclogic_params_frame {
+	__u8 *desc_ptr;
+	unsigned int desc_size;
+	unsigned int id;
+	const char *suffix;
+	unsigned int re_lsb;
+	unsigned int dev_id_byte;
+	unsigned int touch_byte;
+	__s8 touch_flip_at;
+	__s8 touch_max;
+	unsigned int bitmap_dial_byte;
+};
+
+struct uclogic_raw_event_hook;
+
+struct uclogic_params {
+	bool invalid;
+	__u8 *desc_ptr;
+	unsigned int desc_size;
+	struct uclogic_params_pen pen;
+	struct uclogic_params_frame frame_list[3];
+	struct uclogic_raw_event_hook *event_hooks;
+};
+
+struct uclogic_drvdata {
+	struct uclogic_params params;
+	__u8 *desc_ptr;
+	unsigned int desc_size;
+	struct input_dev *pen_input;
+	struct timer_list inrange_timer;
+	u8 re_state;
+	unsigned long quirks;
+};
+
+struct uclogic_raw_event_hook {
+	struct hid_device *hdev;
+	__u8 *event;
+	size_t size;
+	struct work_struct work;
+	struct list_head list;
+};
+
+enum uclogic_rdesc_ph_id {
+	UCLOGIC_RDESC_PEN_PH_ID_X_LM = 0,
+	UCLOGIC_RDESC_PEN_PH_ID_X_PM = 1,
+	UCLOGIC_RDESC_PEN_PH_ID_Y_LM = 2,
+	UCLOGIC_RDESC_PEN_PH_ID_Y_PM = 3,
+	UCLOGIC_RDESC_PEN_PH_ID_PRESSURE_LM = 4,
+	UCLOGIC_RDESC_FRAME_PH_ID_UM = 5,
+	UCLOGIC_RDESC_PH_ID_NUM = 6,
+};
+
+enum uclogic_params_frame_type {
+	UCLOGIC_PARAMS_FRAME_BUTTONS = 0,
+	UCLOGIC_PARAMS_FRAME_DIAL = 1,
+	UCLOGIC_PARAMS_FRAME_MOUSE = 2,
+};
+
+struct wacom_features {
+	const char *name;
+	int x_max;
+	int y_max;
+	int pressure_max;
+	int distance_max;
+	int type;
+	int x_resolution;
+	int y_resolution;
+	int numbered_buttons;
+	int offset_left;
+	int offset_right;
+	int offset_top;
+	int offset_bottom;
+	int device_type;
+	int x_phy;
+	int y_phy;
+	unsigned int unit;
+	int unitExpo;
+	int x_fuzz;
+	int y_fuzz;
+	int pressure_fuzz;
+	int distance_fuzz;
+	int tilt_fuzz;
+	unsigned int quirks;
+	unsigned int touch_max;
+	int oVid;
+	int oPid;
+	int pktlen;
+	bool check_for_hid_type;
+	int hid_type;
+};
+
+enum {
+	PENPARTNER = 0,
+	GRAPHIRE = 1,
+	GRAPHIRE_BT = 2,
+	WACOM_G4 = 3,
+	PTU = 4,
+	PL = 5,
+	DTU = 6,
+	DTUS = 7,
+	DTUSX = 8,
+	INTUOS = 9,
+	INTUOS3S = 10,
+	INTUOS3 = 11,
+	INTUOS3L = 12,
+	INTUOS4S = 13,
+	INTUOS4 = 14,
+	INTUOS4WL = 15,
+	INTUOS4L = 16,
+	INTUOS5S = 17,
+	INTUOS5 = 18,
+	INTUOS5L = 19,
+	INTUOSPS = 20,
+	INTUOSPM = 21,
+	INTUOSPL = 22,
+	INTUOSP2_BT = 23,
+	INTUOSP2S_BT = 24,
+	INTUOSHT3_BT = 25,
+	WACOM_21UX2 = 26,
+	WACOM_22HD = 27,
+	DTK = 28,
+	WACOM_24HD = 29,
+	WACOM_27QHD = 30,
+	CINTIQ_HYBRID = 31,
+	CINTIQ_COMPANION_2 = 32,
+	CINTIQ = 33,
+	WACOM_BEE = 34,
+	WACOM_13HD = 35,
+	WACOM_MO = 36,
+	BAMBOO_PEN = 37,
+	INTUOSHT = 38,
+	INTUOSHT2 = 39,
+	BAMBOO_TOUCH = 40,
+	BAMBOO_PT = 41,
+	WACOM_24HDT = 42,
+	WACOM_27QHDT = 43,
+	BAMBOO_PAD = 44,
+	WIRELESS = 45,
+	REMOTE = 46,
+	TABLETPC = 47,
+	TABLETPCE = 48,
+	TABLETPC2FG = 49,
+	MTSCREEN = 50,
+	MTTPC = 51,
+	MTTPC_B = 52,
+	HID_GENERIC = 53,
+	BOOTLOADER = 54,
+	MAX_TYPE = 55,
+};
+
+enum wacom_worker {
+	WACOM_WORKER_WIRELESS = 0,
+	WACOM_WORKER_BATTERY = 1,
+	WACOM_WORKER_REMOTE = 2,
+	WACOM_WORKER_MODE_CHANGE = 3,
+};
+
+struct hid_data {
+	__s16 inputmode;
+	__s16 inputmode_index;
+	bool sense_state;
+	bool inrange_state;
+	bool invert_state;
+	bool tipswitch;
+	bool barrelswitch;
+	bool barrelswitch2;
+	bool barrelswitch3;
+	bool serialhi;
+	bool confidence;
+	int x;
+	int y;
+	int pressure;
+	int width;
+	int height;
+	int id;
+	int cc_report;
+	int cc_index;
+	int cc_value_index;
+	int last_slot_field;
+	int num_expected;
+	int num_received;
+	int bat_status;
+	int battery_capacity;
+	int bat_charging;
+	int bat_connected;
+	int ps_connected;
+	bool pad_input_event_flag;
+	unsigned short sequence_number;
+	ktime_t time_delayed;
+};
+
+struct wacom_shared;
+
+struct kfifo_rec_ptr_2;
+
+struct wacom_wac {
+	char name[64];
+	char pen_name[64];
+	char touch_name[64];
+	char pad_name[64];
+	unsigned char data[361];
+	int tool[2];
+	int id[2];
+	__u64 serial[2];
+	bool probe_complete;
+	bool reporting_data;
+	struct wacom_features features;
+	struct wacom_shared *shared;
+	struct input_dev *pen_input;
+	struct input_dev *touch_input;
+	struct input_dev *pad_input;
+	struct kfifo_rec_ptr_2 *pen_fifo;
+	int pid;
+	int num_contacts_left;
+	u8 bt_features;
+	u8 bt_high_speed;
+	int mode_report;
+	int mode_value;
+	struct hid_data hid_data;
+	bool has_mute_touch_switch;
+	bool is_soft_touch_switch;
+	bool has_mode_change;
+	bool is_direct_mode;
+	bool is_invalid_bt_frame;
+};
+
+struct wacom_group_leds;
+
+struct wacom_leds {
+	struct wacom_group_leds *groups;
+	unsigned int count;
+	u8 llv;
+	u8 hlv;
+	u8 img_lum;
+	u8 max_llv;
+	u8 max_hlv;
+};
+
+struct wacom;
+
+struct wacom_battery {
+	struct wacom *wacom;
+	struct power_supply_desc bat_desc;
+	struct power_supply *battery;
+	char bat_name[64];
+	int bat_status;
+	int battery_capacity;
+	int bat_charging;
+	int bat_connected;
+	int ps_connected;
+};
+
+struct wacom_remote;
+
+struct wacom {
+	struct usb_device *usbdev;
+	struct usb_interface *intf;
+	struct wacom_wac wacom_wac;
+	struct hid_device *hdev;
+	struct mutex lock;
+	struct work_struct wireless_work;
+	struct work_struct battery_work;
+	struct work_struct remote_work;
+	struct delayed_work init_work;
+	struct wacom_remote *remote;
+	struct work_struct mode_change_work;
+	struct timer_list idleprox_timer;
+	bool generic_has_leds;
+	struct wacom_leds led;
+	struct wacom_battery battery;
+	bool resources;
+};
+
+struct wacom_shared {
+	bool stylus_in_proximity;
+	bool touch_down;
+	unsigned int touch_max;
+	int type;
+	struct input_dev *touch_input;
+	struct hid_device *pen;
+	struct hid_device *touch;
+	bool has_mute_touch_switch;
+	bool is_touch_on;
+};
+
+struct kfifo_rec_ptr_2 {
+	union {
+		struct __kfifo kfifo;
+		unsigned char *type;
+		const unsigned char *const_type;
+		char (*rectype)[2];
+		void *ptr;
+		const void *ptr_const;
+	};
+	unsigned char buf[0];
+};
+
+struct wacom_remote {
+	spinlock_t remote_lock;
+	struct kfifo remote_fifo;
+	struct kobject *remote_dir;
+	struct {
+		struct attribute_group group;
+		u32 serial;
+		struct input_dev *input;
+		bool registered;
+		struct wacom_battery battery;
+		ktime_t active_time;
+	} remotes[5];
+};
+
+struct wacom_led;
+
+struct wacom_group_leds {
+	u8 select;
+	struct wacom_led *leds;
+	unsigned int count;
+	struct device *dev;
+};
+
+struct wacom_led {
+	struct led_classdev cdev;
+	struct led_trigger trigger;
+	struct wacom *wacom;
+	unsigned int group;
+	unsigned int id;
+	u8 llv;
+	u8 hlv;
+	bool held;
+};
+
+struct wacom_remote_work_data {
+	struct {
+		u32 serial;
+	} remote[5];
+};
+
+struct wacom_hdev_data {
+	struct list_head list;
+	struct kref kref;
+	struct hid_device *dev;
+	struct wacom_shared shared;
+};
+
+struct wacom_sysfs_group_devres {
+	const struct attribute_group *group;
+	struct kobject *root;
+};
+
+struct wiimote_data;
+
+struct wiiproto_handler {
+	__u8 id;
+	size_t size;
+	void (*func)(struct wiimote_data *, const __u8 *);
+};
+
+struct wiimote_buf {
+	__u8 data[16384];
+	size_t size;
+};
+
+struct wiimote_queue {
+	spinlock_t lock;
+	struct work_struct worker;
+	__u8 head;
+	__u8 tail;
+	struct wiimote_buf outq[32];
+};
+
+struct wiimote_state {
+	spinlock_t lock;
+	__u32 flags;
+	__u8 accel_split[2];
+	__u8 drm;
+	__u8 devtype;
+	__u8 exttype;
+	__u8 mp;
+	struct mutex sync;
+	struct completion ready;
+	int cmd;
+	__u32 opt;
+	__u8 cmd_battery;
+	__u8 cmd_err;
+	__u8 *cmd_read_buf;
+	__u8 cmd_read_size;
+	__u16 calib_bboard[12];
+	__s16 calib_pro_sticks[4];
+	__u8 pressure_drums[7];
+	__u8 cache_rumble;
+};
+
+struct wiimote_debug;
+
+struct wiimote_data {
+	struct hid_device *hdev;
+	struct input_dev *input;
+	struct work_struct rumble_worker;
+	struct led_classdev *leds[4];
+	struct input_dev *accel;
+	struct input_dev *ir;
+	struct power_supply *battery;
+	struct power_supply_desc battery_desc;
+	struct input_dev *mp;
+	struct timer_list timer;
+	struct wiimote_debug *debug;
+	union {
+		struct input_dev *input;
+	} extension;
+	struct wiimote_queue queue;
+	struct wiimote_state state;
+	struct work_struct init_worker;
+};
+
+enum wiiproto_reqs {
+	WIIPROTO_REQ_NULL = 0,
+	WIIPROTO_REQ_RUMBLE = 16,
+	WIIPROTO_REQ_LED = 17,
+	WIIPROTO_REQ_DRM = 18,
+	WIIPROTO_REQ_IR1 = 19,
+	WIIPROTO_REQ_SREQ = 21,
+	WIIPROTO_REQ_WMEM = 22,
+	WIIPROTO_REQ_RMEM = 23,
+	WIIPROTO_REQ_IR2 = 26,
+	WIIPROTO_REQ_STATUS = 32,
+	WIIPROTO_REQ_DATA = 33,
+	WIIPROTO_REQ_RETURN = 34,
+	WIIPROTO_REQ_DRM_K = 48,
+	WIIPROTO_REQ_DRM_KA = 49,
+	WIIPROTO_REQ_DRM_KE = 50,
+	WIIPROTO_REQ_DRM_KAI = 51,
+	WIIPROTO_REQ_DRM_KEE = 52,
+	WIIPROTO_REQ_DRM_KAE = 53,
+	WIIPROTO_REQ_DRM_KIE = 54,
+	WIIPROTO_REQ_DRM_KAIE = 55,
+	WIIPROTO_REQ_DRM_E = 61,
+	WIIPROTO_REQ_DRM_SKAI1 = 62,
+	WIIPROTO_REQ_DRM_SKAI2 = 63,
+	WIIPROTO_REQ_MAX = 64,
+};
+
+enum wiimote_devtype {
+	WIIMOTE_DEV_PENDING = 0,
+	WIIMOTE_DEV_UNKNOWN = 1,
+	WIIMOTE_DEV_GENERIC = 2,
+	WIIMOTE_DEV_GEN10 = 3,
+	WIIMOTE_DEV_GEN20 = 4,
+	WIIMOTE_DEV_BALANCE_BOARD = 5,
+	WIIMOTE_DEV_PRO_CONTROLLER = 6,
+	WIIMOTE_DEV_NUM = 7,
+};
+
+enum wiimote_exttype {
+	WIIMOTE_EXT_NONE = 0,
+	WIIMOTE_EXT_UNKNOWN = 1,
+	WIIMOTE_EXT_NUNCHUK = 2,
+	WIIMOTE_EXT_CLASSIC_CONTROLLER = 3,
+	WIIMOTE_EXT_BALANCE_BOARD = 4,
+	WIIMOTE_EXT_PRO_CONTROLLER = 5,
+	WIIMOTE_EXT_DRUMS = 6,
+	WIIMOTE_EXT_GUITAR = 7,
+	WIIMOTE_EXT_TURNTABLE = 8,
+	WIIMOTE_EXT_NUM = 9,
+};
+
+enum wiimod_module {
+	WIIMOD_KEYS = 0,
+	WIIMOD_RUMBLE = 1,
+	WIIMOD_BATTERY = 2,
+	WIIMOD_LED1 = 3,
+	WIIMOD_LED2 = 4,
+	WIIMOD_LED3 = 5,
+	WIIMOD_LED4 = 6,
+	WIIMOD_ACCEL = 7,
+	WIIMOD_IR = 8,
+	WIIMOD_BUILTIN_MP = 9,
+	WIIMOD_NO_MP = 10,
+	WIIMOD_NUM = 11,
+	WIIMOD_NULL = 11,
+};
+
+enum wiimote_mptype {
+	WIIMOTE_MP_NONE = 0,
+	WIIMOTE_MP_UNKNOWN = 1,
+	WIIMOTE_MP_SINGLE = 2,
+	WIIMOTE_MP_PASSTHROUGH_NUNCHUK = 3,
+	WIIMOTE_MP_PASSTHROUGH_CLASSIC = 4,
+};
+
+struct wiimod_ops {
+	__u16 flags;
+	unsigned long arg;
+	int (*probe)(const struct wiimod_ops *, struct wiimote_data *);
+	void (*remove)(const struct wiimod_ops *, struct wiimote_data *);
+	void (*in_keys)(struct wiimote_data *, const __u8 *);
+	void (*in_accel)(struct wiimote_data *, const __u8 *);
+	void (*in_ir)(struct wiimote_data *, const __u8 *, bool, unsigned int);
+	void (*in_mp)(struct wiimote_data *, const __u8 *);
+	void (*in_ext)(struct wiimote_data *, const __u8 *);
+};
+
+enum wiiproto_keys {
+	WIIPROTO_KEY_LEFT = 0,
+	WIIPROTO_KEY_RIGHT = 1,
+	WIIPROTO_KEY_UP = 2,
+	WIIPROTO_KEY_DOWN = 3,
+	WIIPROTO_KEY_PLUS = 4,
+	WIIPROTO_KEY_MINUS = 5,
+	WIIPROTO_KEY_ONE = 6,
+	WIIPROTO_KEY_TWO = 7,
+	WIIPROTO_KEY_A = 8,
+	WIIPROTO_KEY_B = 9,
+	WIIPROTO_KEY_HOME = 10,
+	WIIPROTO_KEY_COUNT = 11,
+};
+
+enum wiimod_nunchuk_keys {
+	WIIMOD_NUNCHUK_KEY_C = 0,
+	WIIMOD_NUNCHUK_KEY_Z = 1,
+	WIIMOD_NUNCHUK_KEY_NUM = 2,
+};
+
+enum wiimod_classic_keys {
+	WIIMOD_CLASSIC_KEY_A = 0,
+	WIIMOD_CLASSIC_KEY_B = 1,
+	WIIMOD_CLASSIC_KEY_X = 2,
+	WIIMOD_CLASSIC_KEY_Y = 3,
+	WIIMOD_CLASSIC_KEY_ZL = 4,
+	WIIMOD_CLASSIC_KEY_ZR = 5,
+	WIIMOD_CLASSIC_KEY_PLUS = 6,
+	WIIMOD_CLASSIC_KEY_MINUS = 7,
+	WIIMOD_CLASSIC_KEY_HOME = 8,
+	WIIMOD_CLASSIC_KEY_LEFT = 9,
+	WIIMOD_CLASSIC_KEY_RIGHT = 10,
+	WIIMOD_CLASSIC_KEY_UP = 11,
+	WIIMOD_CLASSIC_KEY_DOWN = 12,
+	WIIMOD_CLASSIC_KEY_LT = 13,
+	WIIMOD_CLASSIC_KEY_RT = 14,
+	WIIMOD_CLASSIC_KEY_NUM = 15,
+};
+
+enum wiimod_pro_keys {
+	WIIMOD_PRO_KEY_A = 0,
+	WIIMOD_PRO_KEY_B = 1,
+	WIIMOD_PRO_KEY_X = 2,
+	WIIMOD_PRO_KEY_Y = 3,
+	WIIMOD_PRO_KEY_PLUS = 4,
+	WIIMOD_PRO_KEY_MINUS = 5,
+	WIIMOD_PRO_KEY_HOME = 6,
+	WIIMOD_PRO_KEY_LEFT = 7,
+	WIIMOD_PRO_KEY_RIGHT = 8,
+	WIIMOD_PRO_KEY_UP = 9,
+	WIIMOD_PRO_KEY_DOWN = 10,
+	WIIMOD_PRO_KEY_TL = 11,
+	WIIMOD_PRO_KEY_TR = 12,
+	WIIMOD_PRO_KEY_ZL = 13,
+	WIIMOD_PRO_KEY_ZR = 14,
+	WIIMOD_PRO_KEY_THUMBL = 15,
+	WIIMOD_PRO_KEY_THUMBR = 16,
+	WIIMOD_PRO_KEY_NUM = 17,
+};
+
+enum wiimod_guitar_keys {
+	WIIMOD_GUITAR_KEY_G = 0,
+	WIIMOD_GUITAR_KEY_R = 1,
+	WIIMOD_GUITAR_KEY_Y = 2,
+	WIIMOD_GUITAR_KEY_B = 3,
+	WIIMOD_GUITAR_KEY_O = 4,
+	WIIMOD_GUITAR_KEY_UP = 5,
+	WIIMOD_GUITAR_KEY_DOWN = 6,
+	WIIMOD_GUITAR_KEY_PLUS = 7,
+	WIIMOD_GUITAR_KEY_MINUS = 8,
+	WIIMOD_GUITAR_KEY_NUM = 9,
+};
+
+enum wiimod_turntable_keys {
+	WIIMOD_TURNTABLE_KEY_G_RIGHT = 0,
+	WIIMOD_TURNTABLE_KEY_R_RIGHT = 1,
+	WIIMOD_TURNTABLE_KEY_B_RIGHT = 2,
+	WIIMOD_TURNTABLE_KEY_G_LEFT = 3,
+	WIIMOD_TURNTABLE_KEY_R_LEFT = 4,
+	WIIMOD_TURNTABLE_KEY_B_LEFT = 5,
+	WIIMOD_TURNTABLE_KEY_EUPHORIA = 6,
+	WIIMOD_TURNTABLE_KEY_PLUS = 7,
+	WIIMOD_TURNTABLE_KEY_MINUS = 8,
+	WIIMOD_TURNTABLE_KEY_NUM = 9,
+};
+
+struct wiimote_debug {
+	struct wiimote_data *wdata;
+	struct dentry *eeprom;
+	struct dentry *drm;
+};
+
+struct hid_control_fifo {
+	unsigned char dir;
+	struct hid_report *report;
+	char *raw_report;
+};
+
+struct hid_output_fifo {
+	struct hid_report *report;
+	char *raw_report;
+};
+
+struct usbhid_device {
+	struct hid_device *hid;
+	struct usb_interface *intf;
+	int ifnum;
+	unsigned int bufsize;
+	struct urb *urbin;
+	char *inbuf;
+	dma_addr_t inbuf_dma;
+	struct urb *urbctrl;
+	struct usb_ctrlrequest *cr;
+	struct hid_control_fifo ctrl[256];
+	unsigned char ctrlhead;
+	unsigned char ctrltail;
+	char *ctrlbuf;
+	dma_addr_t ctrlbuf_dma;
+	unsigned long last_ctrl;
+	struct urb *urbout;
+	struct hid_output_fifo out[256];
+	unsigned char outhead;
+	unsigned char outtail;
+	char *outbuf;
+	dma_addr_t outbuf_dma;
+	unsigned long last_out;
+	struct mutex mutex;
+	spinlock_t lock;
+	unsigned long iofl;
+	struct timer_list io_retry;
+	unsigned long stop_retry;
+	unsigned int retry_delay;
+	struct work_struct reset_work;
+	wait_queue_head_t wait;
+};
+
+struct hiddev_usage_ref {
+	__u32 report_type;
+	__u32 report_id;
+	__u32 field_index;
+	__u32 usage_index;
+	__u32 usage_code;
+	__s32 value;
+};
+
+struct hiddev_list {
+	struct hiddev_usage_ref buffer[2048];
+	int head;
+	int tail;
+	unsigned int flags;
+	struct fasync_struct *fasync;
+	struct hiddev *hiddev;
+	struct list_head node;
+	struct mutex thread_lock;
+};
+
+struct hiddev_report_info {
+	__u32 report_type;
+	__u32 report_id;
+	__u32 num_fields;
+};
+
+struct hiddev_event {
+	unsigned int hid;
+	int value;
+};
+
+struct hiddev_collection_info {
+	__u32 index;
+	__u32 type;
+	__u32 usage;
+	__u32 level;
+};
+
+struct hiddev_field_info {
+	__u32 report_type;
+	__u32 report_id;
+	__u32 field_index;
+	__u32 maxusage;
+	__u32 flags;
+	__u32 physical;
+	__u32 logical;
+	__u32 application;
+	__s32 logical_minimum;
+	__s32 logical_maximum;
+	__s32 physical_minimum;
+	__s32 physical_maximum;
+	__u32 unit_exponent;
+	__u32 unit;
+};
+
+struct hiddev_devinfo {
+	__u32 bustype;
+	__u32 busnum;
+	__u32 devnum;
+	__u32 ifnum;
+	__s16 vendor;
+	__s16 product;
+	__s16 version;
+	__u32 num_applications;
+};
+
+struct hiddev_usage_ref_multi {
+	struct hiddev_usage_ref uref;
+	__u32 num_values;
+	__s32 values[1024];
+};
+
+struct alias_prop {
+	struct list_head link;
+	const char *alias;
+	struct device_node *np;
+	int id;
+	char stem[0];
+};
+
+struct supplier_bindings {
+	struct device_node * (*parse_prop)(struct device_node *, const char *, int);
+	struct device_node * (*get_con_dev)(struct device_node *);
+	bool optional;
+};
+
+struct of_bus___2 {
+	void (*count_cells)(const void *, int, int *, int *);
+	u64 (*map)(__be32 *, const __be32 *, int, int, int);
+	int (*translate)(__be32 *, u64, int);
+};
+
+struct of_bus {
+	const char *name;
+	const char *addresses;
+	int (*match)(struct device_node *);
+	void (*count_cells)(struct device_node *, int *, int *);
+	u64 (*map)(__be32 *, const __be32 *, int, int, int);
+	int (*translate)(__be32 *, u64, int);
+	bool has_flags;
+	unsigned int (*get_flags)(const __be32 *);
+};
+
+struct of_intc_desc {
+	struct list_head list;
+	of_irq_init_cb_t irq_init_cb;
+	struct device_node *dev;
+	struct device_node *interrupt_parent;
+};
+
+struct rmem_assigned_device {
+	struct device *dev;
+	struct reserved_mem *rmem;
+	struct list_head list;
+};
+
+typedef int (*reservedmem_of_init_fn)(struct reserved_mem *);
+
+struct vsock_sock;
+
+struct sockaddr_vm;
+
+struct vsock_transport_recv_notify_data;
+
+struct vsock_transport_send_notify_data;
+
+struct vsock_transport {
+	struct module *module;
+	int (*init)(struct vsock_sock *, struct vsock_sock *);
+	void (*destruct)(struct vsock_sock *);
+	void (*release)(struct vsock_sock *);
+	int (*cancel_pkt)(struct vsock_sock *);
+	int (*connect)(struct vsock_sock *);
+	int (*dgram_bind)(struct vsock_sock *, struct sockaddr_vm *);
+	int (*dgram_dequeue)(struct vsock_sock *, struct msghdr *, size_t, int);
+	int (*dgram_enqueue)(struct vsock_sock *, struct sockaddr_vm *, struct msghdr *, size_t);
+	bool (*dgram_allow)(u32, u32);
+	ssize_t (*stream_dequeue)(struct vsock_sock *, struct msghdr *, size_t, int);
+	ssize_t (*stream_enqueue)(struct vsock_sock *, struct msghdr *, size_t);
+	s64 (*stream_has_data)(struct vsock_sock *);
+	s64 (*stream_has_space)(struct vsock_sock *);
+	u64 (*stream_rcvhiwat)(struct vsock_sock *);
+	bool (*stream_is_active)(struct vsock_sock *);
+	bool (*stream_allow)(u32, u32);
+	ssize_t (*seqpacket_dequeue)(struct vsock_sock *, struct msghdr *, int);
+	int (*seqpacket_enqueue)(struct vsock_sock *, struct msghdr *, size_t);
+	bool (*seqpacket_allow)(u32);
+	u32 (*seqpacket_has_data)(struct vsock_sock *);
+	int (*notify_poll_in)(struct vsock_sock *, size_t, bool *);
+	int (*notify_poll_out)(struct vsock_sock *, size_t, bool *);
+	int (*notify_recv_init)(struct vsock_sock *, size_t, struct vsock_transport_recv_notify_data *);
+	int (*notify_recv_pre_block)(struct vsock_sock *, size_t, struct vsock_transport_recv_notify_data *);
+	int (*notify_recv_pre_dequeue)(struct vsock_sock *, size_t, struct vsock_transport_recv_notify_data *);
+	int (*notify_recv_post_dequeue)(struct vsock_sock *, size_t, ssize_t, bool, struct vsock_transport_recv_notify_data *);
+	int (*notify_send_init)(struct vsock_sock *, struct vsock_transport_send_notify_data *);
+	int (*notify_send_pre_block)(struct vsock_sock *, struct vsock_transport_send_notify_data *);
+	int (*notify_send_pre_enqueue)(struct vsock_sock *, struct vsock_transport_send_notify_data *);
+	int (*notify_send_post_enqueue)(struct vsock_sock *, ssize_t, struct vsock_transport_send_notify_data *);
+	void (*notify_buffer_size)(struct vsock_sock *, u64 *);
+	int (*notify_set_rcvlowat)(struct vsock_sock *, int);
+	int (*shutdown)(struct vsock_sock *, int);
+	u32 (*get_local_cid)();
+	int (*read_skb)(struct vsock_sock *, skb_read_actor_t);
+};
+
+struct virtio_transport {
+	struct vsock_transport transport;
+	int (*send_pkt)(struct sk_buff *);
+};
+
+struct sockaddr_vm {
+	__kernel_sa_family_t svm_family;
+	unsigned short svm_reserved1;
+	unsigned int svm_port;
+	unsigned int svm_cid;
+	__u8 svm_flags;
+	unsigned char svm_zero[3];
+};
+
+struct vsock_sock {
+	struct sock sk;
+	const struct vsock_transport *transport;
+	struct sockaddr_vm local_addr;
+	struct sockaddr_vm remote_addr;
+	struct list_head bound_table;
+	struct list_head connected_table;
+	bool trusted;
+	bool cached_peer_allow_dgram;
+	u32 cached_peer;
+	const struct cred *owner;
+	long connect_timeout;
+	struct sock *listener;
+	struct list_head pending_links;
+	struct list_head accept_queue;
+	bool rejected;
+	struct delayed_work connect_work;
+	struct delayed_work pending_work;
+	struct delayed_work close_work;
+	bool close_work_scheduled;
+	u32 peer_shutdown;
+	bool sent_request;
+	bool ignore_connecting_rst;
+	u64 buffer_size;
+	u64 buffer_min_size;
+	u64 buffer_max_size;
+	void *trans;
+};
+
+struct vsock_transport_recv_notify_data {
+	u64 data1;
+	u64 data2;
+	bool notify_on_block;
+};
+
+struct vsock_transport_send_notify_data {
+	u64 data1;
+	u64 data2;
+};
+
+enum {
+	VHOST_VSOCK_FEATURES = 13908312066ULL,
+};
+
+enum {
+	VHOST_VSOCK_BACKEND_FEATURES = 2,
+};
+
+enum {
+	VSOCK_VQ_RX = 0,
+	VSOCK_VQ_TX = 1,
+	VSOCK_VQ_EVENT = 2,
+	VSOCK_VQ_MAX = 3,
+};
+
+enum virtio_vsock_rw {
+	VIRTIO_VSOCK_SEQ_EOM = 1,
+	VIRTIO_VSOCK_SEQ_EOR = 2,
+};
+
+struct vhost_virtqueue;
+
+struct vhost_iotlb;
+
+struct vhost_iotlb_msg;
+
+struct vhost_dev {
+	struct mm_struct *mm;
+	struct mutex mutex;
+	struct vhost_virtqueue **vqs;
+	int nvqs;
+	struct eventfd_ctx *log_ctx;
+	struct vhost_iotlb *umem;
+	struct vhost_iotlb *iotlb;
+	spinlock_t iotlb_lock;
+	struct list_head read_list;
+	struct list_head pending_list;
+	wait_queue_head_t wait;
+	int iov_limit;
+	int weight;
+	int byte_weight;
+	struct xarray worker_xa;
+	bool use_worker;
+	int (*msg_handler)(struct vhost_dev *, u32, struct vhost_iotlb_msg *);
+};
+
+struct vhost_vring_call {
+	struct eventfd_ctx *ctx;
+	struct irq_bypass_producer producer;
+};
+
+struct vhost_work;
+
+typedef void (*vhost_work_fn_t)(struct vhost_work *);
+
+struct vhost_work {
+	struct llist_node node;
+	vhost_work_fn_t fn;
+	unsigned long flags;
+};
+
+struct vhost_poll {
+	poll_table table;
+	wait_queue_head_t *wqh;
+	wait_queue_entry_t wait;
+	struct vhost_work work;
+	__poll_t mask;
+	struct vhost_dev *dev;
+	struct vhost_virtqueue *vq;
+};
+
+struct vhost_worker;
+
+struct vhost_iotlb_map;
+
+struct vhost_log;
+
+struct vhost_virtqueue {
+	struct vhost_dev *dev;
+	struct vhost_worker __attribute__((btf_type_tag("rcu"))) *worker;
+	struct mutex mutex;
+	unsigned int num;
+	vring_desc_t __attribute__((btf_type_tag("user"))) *desc;
+	vring_avail_t __attribute__((btf_type_tag("user"))) *avail;
+	vring_used_t __attribute__((btf_type_tag("user"))) *used;
+	const struct vhost_iotlb_map *meta_iotlb[3];
+	struct file *kick;
+	struct vhost_vring_call call_ctx;
+	struct eventfd_ctx *error_ctx;
+	struct eventfd_ctx *log_ctx;
+	struct vhost_poll poll;
+	vhost_work_fn_t handle_kick;
+	u16 last_avail_idx;
+	u16 avail_idx;
+	u16 last_used_idx;
+	u16 used_flags;
+	u16 signalled_used;
+	bool signalled_used_valid;
+	bool log_used;
+	u64 log_addr;
+	struct iovec iov[1024];
+	struct iovec iotlb_iov[64];
+	struct iovec *indirect;
+	struct vring_used_elem *heads;
+	struct vhost_iotlb *umem;
+	struct vhost_iotlb *iotlb;
+	void *private_data;
+	u64 acked_features;
+	u64 acked_backend_features;
+	void __attribute__((btf_type_tag("user"))) *log_base;
+	struct vhost_log *log;
+	struct iovec log_iov[64];
+	bool is_le;
+	u32 busyloop_timeout;
+};
+
+struct vhost_vsock {
+	struct vhost_dev dev;
+	struct vhost_virtqueue vqs[2];
+	struct hlist_node hash;
+	struct vhost_work send_pkt_work;
+	struct sk_buff_head send_pkt_queue;
+	atomic_t queued_replies;
+	u32 guest_cid;
+	bool seqpacket_allow;
+};
+
+struct vhost_worker {
+	struct vhost_task *vtsk;
+	struct mutex mutex;
+	struct llist_head work_list;
+	u64 kcov_handle;
+	u32 id;
+	int attachment_cnt;
+};
+
+struct vhost_iotlb_map {
+	struct rb_node rb;
+	struct list_head link;
+	u64 start;
+	u64 last;
+	u64 size;
+	u64 addr;
+	u32 perm;
+	u32 flags_padding;
+	u64 __subtree_last;
+	void *opaque;
+};
+
+struct vhost_iotlb {
+	struct rb_root_cached root;
+	struct list_head list;
+	unsigned int limit;
+	unsigned int nmaps;
+	unsigned int flags;
+};
+
+struct vhost_log {
+	u64 addr;
+	u64 len;
+};
+
+struct vhost_iotlb_msg {
+	__u64 iova;
+	__u64 size;
+	__u64 uaddr;
+	__u8 perm;
+	__u8 type;
+};
+
+struct virtio_vsock_hdr {
+	__le64 src_cid;
+	__le64 dst_cid;
+	__le32 src_port;
+	__le32 dst_port;
+	__le32 len;
+	__le16 type;
+	__le16 op;
+	__le32 flags;
+	__le32 buf_alloc;
+	__le32 fwd_cnt;
+} __attribute__((packed));
+
+struct virtio_vsock_skb_cb {
+	bool reply;
+	bool tap_delivered;
+};
+
+enum vhost_uaddr_type {
+	VHOST_ADDR_DESC = 0,
+	VHOST_ADDR_AVAIL = 1,
+	VHOST_ADDR_USED = 2,
+	VHOST_NUM_ADDRS = 3,
+};
+
+struct vhost_msg {
+	int type;
+	union {
+		struct vhost_iotlb_msg iotlb;
+		__u8 padding[64];
+	};
+};
+
+struct vhost_msg_v2 {
+	__u32 type;
+	__u32 asid;
+	union {
+		struct vhost_iotlb_msg iotlb;
+		__u8 padding[64];
+	};
+};
+
+struct vhost_msg_node {
+	union {
+		struct vhost_msg msg;
+		struct vhost_msg_v2 msg_v2;
+	};
+	struct vhost_virtqueue *vq;
+	struct list_head node;
+};
+
+struct vhost_flush_struct {
+	struct vhost_work work;
+	struct completion wait_event;
+};
+
+struct vhost_worker_state {
+	unsigned int worker_id;
+};
+
+struct vhost_vring_addr {
+	unsigned int index;
+	unsigned int flags;
+	__u64 desc_user_addr;
+	__u64 used_user_addr;
+	__u64 avail_user_addr;
+	__u64 log_guest_addr;
+};
+
+struct vhost_vring_state {
+	unsigned int index;
+	unsigned int num;
+};
+
+struct vhost_memory_region {
+	__u64 guest_phys_addr;
+	__u64 memory_size;
+	__u64 userspace_addr;
+	__u64 flags_padding;
+};
+
+struct vhost_memory {
+	__u32 nregions;
+	__u32 padding;
+	struct vhost_memory_region regions[0];
+};
+
+struct vhost_vring_worker {
+	unsigned int index;
+	unsigned int worker_id;
+};
+
+struct vhost_vring_file {
+	unsigned int index;
+	int fd;
+};
+
+struct ashmem_area;
+
+struct ashmem_range {
+	struct list_head lru;
+	struct list_head unpinned;
+	struct ashmem_area *asma;
+	size_t pgstart;
+	size_t pgend;
+	unsigned int purged;
+};
+
+struct ashmem_area {
+	char name[267];
+	struct list_head unpinned_list;
+	struct file *file;
+	size_t size;
+	unsigned long prot_mask;
+};
+
+struct ashmem_pin {
+	__u32 offset;
+	__u32 len;
+};
+
+struct mbox_chan_ops;
+
+struct mbox_controller {
+	struct device *dev;
+	const struct mbox_chan_ops *ops;
+	struct mbox_chan *chans;
+	int num_chans;
+	bool txdone_irq;
+	bool txdone_poll;
+	unsigned int txpoll_period;
+	struct mbox_chan * (*of_xlate)(struct mbox_controller *, const struct of_phandle_args *);
+	struct hrtimer poll_hrt;
+	spinlock_t poll_hrt_lock;
+	struct list_head node;
+};
+
+struct mbox_chan_ops {
+	int (*send_data)(struct mbox_chan *, void *);
+	int (*flush)(struct mbox_chan *, unsigned long);
+	int (*startup)(struct mbox_chan *);
+	void (*shutdown)(struct mbox_chan *);
+	bool (*last_tx_done)(struct mbox_chan *);
+	bool (*peek_data)(struct mbox_chan *);
+};
+
+struct mbox_chan {
+	struct mbox_controller *mbox;
+	unsigned int txdone_method;
+	struct mbox_client *cl;
+	struct completion tx_complete;
+	void *active_req;
+	unsigned int msg_count;
+	unsigned int msg_free;
+	void *msg_data[20];
+	spinlock_t lock;
+	void *con_priv;
+};
+
+struct hi3660_chan_info {
+	unsigned int dst_irq;
+	unsigned int ack_irq;
+};
+
+struct hi3660_mbox {
+	struct device *dev;
+	void *base;
+	struct mbox_chan chan[32];
+	struct hi3660_chan_info mchan[32];
+	struct mbox_controller controller;
+};
+
+struct hi6220_mbox_chan;
+
+struct hi6220_mbox {
+	struct device *dev;
+	int irq;
+	bool tx_irq_mode;
+	void *ipc;
+	void *base;
+	unsigned int chan_num;
+	struct hi6220_mbox_chan *mchan;
+	void *irq_map_chan[32];
+	struct mbox_chan *chan;
+	struct mbox_controller controller;
+};
+
+struct hi6220_mbox_chan {
+	unsigned int dir;
+	unsigned int dst_irq;
+	unsigned int ack_irq;
+	unsigned int slot;
+	struct hi6220_mbox *parent;
+};
+
+struct tegra_hsp_channel;
+
+struct tegra_hsp_sm_ops {
+	void (*send)(struct tegra_hsp_channel *, void *);
+	void (*recv)(struct tegra_hsp_channel *);
+};
+
+struct tegra_hsp;
+
+struct tegra_hsp_channel {
+	struct tegra_hsp *hsp;
+	struct mbox_chan *chan;
+	void *regs;
+};
+
+struct tegra_hsp_soc;
+
+struct tegra_hsp_mailbox;
+
+struct tegra_hsp {
+	struct device *dev;
+	const struct tegra_hsp_soc *soc;
+	struct mbox_controller mbox_db;
+	struct mbox_controller mbox_sm;
+	void *regs;
+	unsigned int doorbell_irq;
+	unsigned int *shared_irqs;
+	unsigned int shared_irq;
+	unsigned int num_sm;
+	unsigned int num_as;
+	unsigned int num_ss;
+	unsigned int num_db;
+	unsigned int num_si;
+	spinlock_t lock;
+	struct lock_class_key lock_key;
+	struct list_head doorbells;
+	struct tegra_hsp_mailbox *mailboxes;
+	unsigned long mask;
+};
+
+struct tegra_hsp_db_map;
+
+struct tegra_hsp_soc {
+	const struct tegra_hsp_db_map *map;
+	bool has_per_mb_ie;
+	bool has_128_bit_mb;
+	unsigned int reg_stride;
+};
+
+struct tegra_hsp_db_map {
+	const char *name;
+	unsigned int master;
+	unsigned int index;
+};
+
+struct tegra_hsp_mailbox {
+	struct tegra_hsp_channel channel;
+	const struct tegra_hsp_sm_ops *ops;
+	unsigned int index;
+	bool producer;
+};
+
+struct tegra_hsp_doorbell {
+	struct tegra_hsp_channel channel;
+	struct list_head list;
+	const char *name;
+	unsigned int master;
+	unsigned int index;
+};
+
+struct sun6i_msgbox {
+	struct mbox_controller controller;
+	struct clk *clk;
+	spinlock_t lock;
+	void *regs;
+};
+
+struct hwspinlock_device;
+
+struct hwspinlock {
+	struct hwspinlock_device *bank;
+	spinlock_t lock;
+	void *priv;
+};
+
+struct hwspinlock_ops;
+
+struct hwspinlock_device {
+	struct device *dev;
+	const struct hwspinlock_ops *ops;
+	int base_id;
+	int num_locks;
+	struct hwspinlock lock[0];
+};
+
+struct hwspinlock_ops {
+	int (*trylock)(struct hwspinlock *);
+	void (*unlock)(struct hwspinlock *);
+	int (*bust)(struct hwspinlock *, unsigned int);
+	void (*relax)(struct hwspinlock *);
+};
+
+struct rproc;
+
+typedef int (*rproc_handle_resource_t)(struct rproc *, void *, int, int);
+
+enum rproc_dump_mechanism {
+	RPROC_COREDUMP_DISABLED = 0,
+	RPROC_COREDUMP_ENABLED = 1,
+	RPROC_COREDUMP_INLINE = 2,
+};
+
+struct rproc_ops;
+
+struct resource_table;
+
+struct rproc {
+	struct list_head node;
+	struct iommu_domain *domain;
+	const char *name;
+	const char *firmware;
+	void *priv;
+	struct rproc_ops *ops;
+	struct device dev;
+	atomic_t power;
+	unsigned int state;
+	enum rproc_dump_mechanism dump_conf;
+	struct mutex lock;
+	struct dentry *dbg_dir;
+	struct list_head traces;
+	int num_traces;
+	struct list_head carveouts;
+	struct list_head mappings;
+	u64 bootaddr;
+	struct list_head rvdevs;
+	struct list_head subdevs;
+	struct idr notifyids;
+	int index;
+	struct work_struct crash_handler;
+	unsigned int crash_cnt;
+	bool recovery_disabled;
+	int max_notifyid;
+	struct resource_table *table_ptr;
+	struct resource_table *clean_table;
+	struct resource_table *cached_table;
+	size_t table_sz;
+	bool has_iommu;
+	bool auto_boot;
+	bool sysfs_read_only;
+	struct list_head dump_segments;
+	int nb_vdev;
+	u8 elf_class;
+	u16 elf_machine;
+	struct cdev cdev;
+	bool cdev_put_on_release;
+	unsigned long features[1];
+};
+
+struct rproc_ops {
+	int (*prepare)(struct rproc *);
+	int (*unprepare)(struct rproc *);
+	int (*start)(struct rproc *);
+	int (*stop)(struct rproc *);
+	int (*attach)(struct rproc *);
+	int (*detach)(struct rproc *);
+	void (*kick)(struct rproc *, int);
+	void * (*da_to_va)(struct rproc *, u64, size_t, bool *);
+	int (*parse_fw)(struct rproc *, const struct firmware *);
+	int (*handle_rsc)(struct rproc *, u32, void *, int, int);
+	struct resource_table * (*find_loaded_rsc_table)(struct rproc *, const struct firmware *);
+	struct resource_table * (*get_loaded_rsc_table)(struct rproc *, size_t *);
+	int (*load)(struct rproc *, const struct firmware *);
+	int (*sanity_check)(struct rproc *, const struct firmware *);
+	u64 (*get_boot_addr)(struct rproc *, const struct firmware *);
+	unsigned long (*panic)(struct rproc *);
+	void (*coredump)(struct rproc *);
+};
+
+struct resource_table {
+	u32 ver;
+	u32 num;
+	u32 reserved[2];
+	u32 offset[0];
+};
+
+enum rproc_state {
+	RPROC_OFFLINE = 0,
+	RPROC_SUSPENDED = 1,
+	RPROC_RUNNING = 2,
+	RPROC_CRASHED = 3,
+	RPROC_DELETED = 4,
+	RPROC_ATTACHED = 5,
+	RPROC_DETACHED = 6,
+	RPROC_LAST = 7,
+};
+
+enum rproc_features {
+	RPROC_FEAT_ATTACH_ON_RECOVERY = 0,
+	RPROC_MAX_FEATURES = 1,
+};
+
+enum rproc_crash_type {
+	RPROC_MMUFAULT = 0,
+	RPROC_WATCHDOG = 1,
+	RPROC_FATAL_ERROR = 2,
+};
+
+enum fw_resource_type {
+	RSC_CARVEOUT = 0,
+	RSC_DEVMEM = 1,
+	RSC_TRACE = 2,
+	RSC_VDEV = 3,
+	RSC_LAST = 4,
+	RSC_VENDOR_START = 128,
+	RSC_VENDOR_END = 512,
+};
+
+enum rsc_handling_status {
+	RSC_HANDLED = 0,
+	RSC_IGNORED = 1,
+};
+
+struct rproc_mem_entry {
+	void *va;
+	bool is_iomem;
+	dma_addr_t dma;
+	size_t len;
+	u32 da;
+	void *priv;
+	char name[32];
+	struct list_head node;
+	u32 rsc_offset;
+	u32 flags;
+	u32 of_resm_idx;
+	int (*alloc)(struct rproc *, struct rproc_mem_entry *);
+	int (*release)(struct rproc *, struct rproc_mem_entry *);
+};
+
+struct rproc_debug_trace {
+	struct rproc *rproc;
+	struct dentry *tfile;
+	struct list_head node;
+	struct rproc_mem_entry trace_mem;
+};
+
+struct rproc_subdev {
+	struct list_head node;
+	int (*prepare)(struct rproc_subdev *);
+	int (*start)(struct rproc_subdev *);
+	void (*stop)(struct rproc_subdev *, bool);
+	void (*unprepare)(struct rproc_subdev *);
+};
+
+struct rproc_vdev;
+
+struct rproc_vring {
+	void *va;
+	int num;
+	u32 da;
+	u32 align;
+	int notifyid;
+	struct rproc_vdev *rvdev;
+	struct virtqueue *vq;
+};
+
+struct rproc_vdev {
+	struct rproc_subdev subdev;
+	struct platform_device *pdev;
+	unsigned int id;
+	struct list_head node;
+	struct rproc *rproc;
+	struct rproc_vring vring[2];
+	u32 rsc_offset;
+	u32 index;
+};
+
+struct fw_rsc_vdev_vring {
+	u32 da;
+	u32 align;
+	u32 num;
+	u32 notifyid;
+	u32 pa;
+};
+
+struct fw_rsc_vdev {
+	u32 id;
+	u32 notifyid;
+	u32 dfeatures;
+	u32 gfeatures;
+	u32 config_len;
+	u8 status;
+	u8 num_of_vrings;
+	u8 reserved[2];
+	struct fw_rsc_vdev_vring vring[0];
+};
+
+struct fw_rsc_hdr {
+	u32 type;
+	u8 data[0];
+};
+
+struct fw_rsc_carveout {
+	u32 da;
+	u32 pa;
+	u32 len;
+	u32 flags;
+	u32 reserved;
+	u8 name[32];
+};
+
+struct fw_rsc_devmem {
+	u32 da;
+	u32 pa;
+	u32 len;
+	u32 flags;
+	u32 reserved;
+	u8 name[32];
+};
+
+struct fw_rsc_trace {
+	u32 da;
+	u32 len;
+	u32 reserved;
+	u8 name[32];
+};
+
+struct rproc_vdev_data {
+	u32 rsc_offset;
+	unsigned int id;
+	u32 index;
+	struct fw_rsc_vdev *rsc;
+};
+
+struct rproc_dump_segment {
+	struct list_head node;
+	dma_addr_t da;
+	size_t size;
+	void *priv;
+	void (*dump)(struct rproc *, struct rproc_dump_segment *, void *, size_t, size_t);
+	loff_t offset;
+};
+
+struct rproc_coredump_state {
+	struct rproc *rproc;
+	void *header;
+	struct completion dump_done;
+};
+
+struct rpmsg_device_id {
+	char name[32];
+	kernel_ulong_t driver_data;
+};
+
+struct rpmsg_endpoint;
+
+struct rpmsg_device_ops;
+
+struct rpmsg_device {
+	struct device dev;
+	struct rpmsg_device_id id;
+	const char *driver_override;
+	u32 src;
+	u32 dst;
+	struct rpmsg_endpoint *ept;
+	bool announce;
+	bool little_endian;
+	const struct rpmsg_device_ops *ops;
+};
+
+typedef int (*rpmsg_rx_cb_t)(struct rpmsg_device *, void *, int, void *, u32);
+
+typedef int (*rpmsg_flowcontrol_cb_t)(struct rpmsg_device *, void *, bool);
+
+struct rpmsg_endpoint_ops;
+
+struct rpmsg_endpoint {
+	struct rpmsg_device *rpdev;
+	struct kref refcount;
+	rpmsg_rx_cb_t cb;
+	rpmsg_flowcontrol_cb_t flow_cb;
+	struct mutex cb_lock;
+	u32 addr;
+	void *priv;
+	const struct rpmsg_endpoint_ops *ops;
+};
+
+struct rpmsg_endpoint_ops {
+	void (*destroy_ept)(struct rpmsg_endpoint *);
+	int (*send)(struct rpmsg_endpoint *, void *, int);
+	int (*sendto)(struct rpmsg_endpoint *, void *, int, u32);
+	int (*send_offchannel)(struct rpmsg_endpoint *, u32, u32, void *, int);
+	int (*trysend)(struct rpmsg_endpoint *, void *, int);
+	int (*trysendto)(struct rpmsg_endpoint *, void *, int, u32);
+	int (*trysend_offchannel)(struct rpmsg_endpoint *, u32, u32, void *, int);
+	__poll_t (*poll)(struct rpmsg_endpoint *, struct file *, poll_table *);
+	int (*set_flow_control)(struct rpmsg_endpoint *, bool, u32);
+	ssize_t (*get_mtu)(struct rpmsg_endpoint *);
+};
+
+struct rpmsg_channel_info;
+
+struct rpmsg_device_ops {
+	struct rpmsg_device * (*create_channel)(struct rpmsg_device *, struct rpmsg_channel_info *);
+	int (*release_channel)(struct rpmsg_device *, struct rpmsg_channel_info *);
+	struct rpmsg_endpoint * (*create_ept)(struct rpmsg_device *, rpmsg_rx_cb_t, void *, struct rpmsg_channel_info);
+	int (*announce_create)(struct rpmsg_device *);
+	int (*announce_destroy)(struct rpmsg_device *);
+};
+
+struct rpmsg_channel_info {
+	char name[32];
+	u32 src;
+	u32 dst;
+};
+
+struct rpmsg_driver {
+	struct device_driver drv;
+	const struct rpmsg_device_id *id_table;
+	int (*probe)(struct rpmsg_device *);
+	void (*remove)(struct rpmsg_device *);
+	int (*callback)(struct rpmsg_device *, void *, int, void *, u32);
+	int (*flowcontrol)(struct rpmsg_device *, void *, bool);
+};
+
+struct rpmsg_eptdev {
+	struct device dev;
+	struct cdev cdev;
+	struct rpmsg_device *rpdev;
+	struct rpmsg_channel_info chinfo;
+	struct mutex ept_lock;
+	struct rpmsg_endpoint *ept;
+	struct rpmsg_endpoint *default_ept;
+	spinlock_t queue_lock;
+	struct sk_buff_head queue;
+	wait_queue_head_t readq;
+	bool remote_flow_restricted;
+	bool remote_flow_updated;
+};
+
+enum gunyah_resource_type {
+	GUNYAH_RESOURCE_TYPE_BELL_TX = 0,
+	GUNYAH_RESOURCE_TYPE_BELL_RX = 1,
+	GUNYAH_RESOURCE_TYPE_MSGQ_TX = 2,
+	GUNYAH_RESOURCE_TYPE_MSGQ_RX = 3,
+	GUNYAH_RESOURCE_TYPE_VCPU = 4,
+	GUNYAH_RESOURCE_TYPE_MEM_EXTENT = 9,
+	GUNYAH_RESOURCE_TYPE_ADDR_SPACE = 10,
+};
+
+enum gunyah_rm_error {
+	GUNYAH_RM_ERROR_OK = 0,
+	GUNYAH_RM_ERROR_UNIMPLEMENTED = 4294967295,
+	GUNYAH_RM_ERROR_NOMEM = 1,
+	GUNYAH_RM_ERROR_NORESOURCE = 2,
+	GUNYAH_RM_ERROR_DENIED = 3,
+	GUNYAH_RM_ERROR_INVALID = 4,
+	GUNYAH_RM_ERROR_BUSY = 5,
+	GUNYAH_RM_ERROR_ARGUMENT_INVALID = 6,
+	GUNYAH_RM_ERROR_HANDLE_INVALID = 7,
+	GUNYAH_RM_ERROR_VALIDATE_FAILED = 8,
+	GUNYAH_RM_ERROR_MAP_FAILED = 9,
+	GUNYAH_RM_ERROR_MEM_INVALID = 10,
+	GUNYAH_RM_ERROR_MEM_INUSE = 11,
+	GUNYAH_RM_ERROR_MEM_RELEASED = 12,
+	GUNYAH_RM_ERROR_VMID_INVALID = 13,
+	GUNYAH_RM_ERROR_LOOKUP_FAILED = 14,
+	GUNYAH_RM_ERROR_IRQ_INVALID = 15,
+	GUNYAH_RM_ERROR_IRQ_INUSE = 16,
+	GUNYAH_RM_ERROR_IRQ_RELEASED = 17,
+};
+
+struct gunyah_rm_rpc_hdr {
+	u8 api;
+	u8 type;
+	__le16 seq;
+	__le32 msg_id;
+};
+
+struct gunyah_resource {
+	enum gunyah_resource_type type;
+	u64 capid;
+	unsigned int irq;
+	struct list_head list;
+	u32 rm_label;
+};
+
+struct gunyah_rm_message;
+
+struct gunyah_rm {
+	struct device *dev;
+	struct gunyah_resource tx_ghrsc;
+	struct gunyah_resource rx_ghrsc;
+	struct gunyah_rm_message *active_rx_message;
+	struct xarray call_xarray;
+	u32 next_seq;
+	unsigned char recv_msg[240];
+	unsigned char send_msg[240];
+	struct mutex send_lock;
+	struct completion send_ready;
+	struct blocking_notifier_head nh;
+	struct auxiliary_device adev;
+	struct miscdevice miscdev;
+	struct fwnode_handle *parent_fwnode;
+};
+
+struct gunyah_rm_message {
+	void *payload;
+	size_t size;
+	u32 msg_id;
+	u8 type;
+	u8 num_fragments;
+	u8 fragments_received;
+	struct {
+		int ret;
+		u16 seq;
+		enum gunyah_rm_error rm_error;
+		struct completion seq_done;
+	} reply;
+};
+
+struct gunyah_rm_rpc_reply_hdr {
+	struct gunyah_rm_rpc_hdr hdr;
+	__le32 err_code;
+};
+
+struct gunyah_rm_hyp_resource {
+	u8 type;
+	u8 reserved;
+	__le16 partner_vmid;
+	__le32 resource_handle;
+	__le32 resource_label;
+	__le64 cap_id;
+	__le32 virq_handle;
+	__le32 virq;
+	__le64 base;
+	__le64 size;
+} __attribute__((packed));
+
+enum gunyah_rm_mem_type {
+	GUNYAH_RM_MEM_TYPE_NORMAL = 0,
+	GUNYAH_RM_MEM_TYPE_IO = 1,
+};
+
+enum gunyah_rm_vm_auth_mechanism {
+	GUNYAH_RM_VM_AUTH_NONE = 0,
+	GUNYAH_RM_VM_AUTH_QCOM_PIL_ELF = 1,
+	GUNYAH_RM_VM_AUTH_QCOM_ANDROID_PVM = 2,
+};
+
+enum gunyah_rm_range_id {
+	GUNYAH_RM_RANGE_ID_IMAGE = 0,
+	GUNYAH_RM_RANGE_ID_FIRMWARE = 1,
+};
+
+struct gunyah_rm_mem_acl_entry;
+
+struct gunyah_rm_mem_entry;
+
+struct gunyah_rm_mem_parcel {
+	enum gunyah_rm_mem_type mem_type;
+	u32 label;
+	size_t n_acl_entries;
+	struct gunyah_rm_mem_acl_entry *acl_entries;
+	size_t n_mem_entries;
+	struct gunyah_rm_mem_entry *mem_entries;
+	u32 mem_handle;
+};
+
+struct gunyah_rm_mem_acl_entry {
+	__le16 vmid;
+	u8 perms;
+	u8 reserved;
+};
+
+struct gunyah_rm_mem_entry {
+	__le64 phys_addr;
+	__le64 size;
+};
+
+struct gunyah_rm_vm_common_vmid_req {
+	__le16 vmid;
+	__le16 _padding;
+};
+
+struct gunyah_rm_mem_share_req_header {
+	u8 mem_type;
+	u8 _padding0;
+	u8 flags;
+	u8 _padding1;
+	__le32 label;
+};
+
+struct gunyah_rm_mem_share_req_mem_section {
+	__le16 n_entries;
+	__le16 _padding;
+	struct gunyah_rm_mem_entry entries[0];
+} __attribute__((packed));
+
+struct gunyah_rm_mem_share_req_acl_section {
+	__le16 n_entries;
+	__le16 _padding;
+	struct gunyah_rm_mem_acl_entry entries[0];
+};
+
+struct gunyah_rm_mem_append_req_header {
+	__le32 mem_handle;
+	u8 flags;
+	u8 _padding0;
+	__le16 _padding1;
+};
+
+struct gunyah_rm_mem_release_req {
+	__le32 mem_handle;
+	u8 flags;
+	u8 _padding0;
+	__le16 _padding1;
+};
+
+struct gunyah_rm_vm_alloc_vmid_resp {
+	__le16 vmid;
+	__le16 _padding;
+};
+
+struct gunyah_rm_vm_stop_req {
+	__le16 vmid;
+	u8 flags;
+	u8 _padding;
+	__le32 stop_reason;
+};
+
+struct gunyah_rm_vm_config_image_req {
+	__le16 vmid;
+	__le16 auth_mech;
+	__le32 mem_handle;
+	__le64 image_offset;
+	__le64 image_size;
+	__le64 dtb_offset;
+	__le64 dtb_size;
+};
+
+struct gunyah_rm_vm_set_boot_context_req {
+	__le16 vmid;
+	u8 reg_set;
+	u8 reg_index;
+	__le32 _padding;
+	__le64 value;
+};
+
+struct gunyah_rm_hyp_resources {
+	__le32 n_entries;
+	struct gunyah_rm_hyp_resource entries[0];
+};
+
+struct gunyah_rm_vm_set_demand_paging_req {
+	__le16 vmid;
+	__le16 _padding;
+	__le32 range_count;
+	struct {
+		struct {} __empty_ranges;
+		struct gunyah_rm_mem_entry ranges[0];
+	};
+};
+
+struct gunyah_rm_vm_set_address_layout_req {
+	__le16 vmid;
+	__le16 _padding;
+	__le32 range_id;
+	__le64 range_base;
+	__le64 range_size;
+};
+
+struct gunyah_vm_set_firmware_mem_req {
+	__le16 vmid;
+	__le16 reserved;
+	__le32 mem_handle;
+	__le64 fw_offset;
+	__le64 fw_size;
+};
+
+enum gunyah_rm_vm_status {
+	GUNYAH_RM_VM_STATUS_NO_STATE = 0,
+	GUNYAH_RM_VM_STATUS_INIT = 1,
+	GUNYAH_RM_VM_STATUS_READY = 2,
+	GUNYAH_RM_VM_STATUS_RUNNING = 3,
+	GUNYAH_RM_VM_STATUS_PAUSED = 4,
+	GUNYAH_RM_VM_STATUS_LOAD = 5,
+	GUNYAH_RM_VM_STATUS_AUTH = 6,
+	GUNYAH_RM_VM_STATUS_INIT_FAILED = 8,
+	GUNYAH_RM_VM_STATUS_EXITED = 9,
+	GUNYAH_RM_VM_STATUS_RESETTING = 10,
+	GUNYAH_RM_VM_STATUS_RESET = 11,
+};
+
+enum gunyah_vm_mem_share_type {
+	VM_MEM_SHARE = 0,
+	VM_MEM_LEND = 1,
+};
+
+enum gunyah_map_flags {
+	GUNYAH_MEM_ALLOW_READ = 1,
+	GUNYAH_MEM_ALLOW_WRITE = 2,
+	GUNYAH_MEM_ALLOW_EXEC = 4,
+	GUNYAH_MEM_ALLOW_RWX = 7,
+	GUNYAH_MEM_DEFAULT_ACCESS = 0,
+	GUNYAH_MEM_FORCE_LEND = 16,
+	GUNYAH_MEM_FORCE_SHARE = 32,
+	GUNYAH_MEM_UNMAP = 256,
+};
+
+enum gunyah_rm_notification_id {
+	GUNYAH_RM_NOTIFICATION_VM_EXITED = 1443889153,
+	GUNYAH_RM_NOTIFICATION_VM_STATUS = 1443889160,
+};
+
+enum gunyah_vm_boot_context_reg {
+	REG_SET_X = 0,
+	REG_SET_PC = 1,
+	REG_SET_SP = 2,
+};
+
+struct gunyah_vm_resource_ticket {
+	struct list_head vm_list;
+	struct list_head resources;
+	enum gunyah_resource_type resource_type;
+	u32 label;
+	struct module *owner;
+	bool (*populate)(struct gunyah_vm_resource_ticket *, struct gunyah_resource *);
+	void (*unpopulate)(struct gunyah_vm_resource_ticket *, struct gunyah_resource *);
+};
+
+struct gunyah_vm_io_handler_ops;
+
+struct gunyah_vm_io_handler {
+	struct rb_node node;
+	u64 addr;
+	bool datamatch;
+	u8 len;
+	u64 data;
+	struct gunyah_vm_io_handler_ops *ops;
+};
+
+struct gunyah_vm_io_handler_ops {
+	int (*read)(struct gunyah_vm_io_handler *, u64, u32, u64);
+	int (*write)(struct gunyah_vm_io_handler *, u64, u32, u64);
+};
+
+struct gunyah_vm_dtb_config {
+	__u64 guest_phys_addr;
+	__u64 size;
+};
+
+struct gunyah_vm_firmware_config {
+	__u64 guest_phys_addr;
+	__u64 size;
+};
+
+struct gunyah_vm_exit_info {
+	__u16 type;
+	__u16 padding;
+	__u32 reason_size;
+	__u8 reason[8];
+};
+
+struct gunyah_vm {
+	u16 vmid;
+	struct maple_tree mm;
+	struct maple_tree bindings;
+	struct rw_semaphore bindings_lock;
+	struct mm_struct *mm_s;
+	struct gunyah_vm_resource_ticket addrspace_ticket;
+	struct gunyah_vm_resource_ticket host_private_extent_ticket;
+	struct gunyah_vm_resource_ticket host_shared_extent_ticket;
+	struct gunyah_vm_resource_ticket guest_private_extent_ticket;
+	struct gunyah_vm_resource_ticket guest_shared_extent_ticket;
+	struct rb_root mmio_handler_root;
+	struct rw_semaphore mmio_handler_lock;
+	struct gunyah_rm *rm;
+	struct notifier_block nb;
+	enum gunyah_rm_vm_status vm_status;
+	wait_queue_head_t vm_status_wait;
+	struct rw_semaphore status_lock;
+	struct gunyah_vm_exit_info exit_info;
+	struct kref kref;
+	struct mutex fn_lock;
+	struct list_head functions;
+	struct mutex resources_lock;
+	struct list_head resources;
+	struct list_head resource_tickets;
+	struct device *parent;
+	enum gunyah_rm_vm_auth_mechanism auth;
+	struct {
+		struct gunyah_vm_dtb_config config;
+		u64 parcel_start;
+		u64 parcel_pages;
+		struct gunyah_rm_mem_parcel parcel;
+	} dtb;
+	struct {
+		struct gunyah_vm_firmware_config config;
+		u64 parcel_start;
+		u64 parcel_pages;
+		struct gunyah_rm_mem_parcel parcel;
+	} fw;
+	struct xarray boot_context;
+};
+
+struct gunyah_vm_function;
+
+struct gunyah_vm_function_instance {
+	size_t arg_size;
+	void *argp;
+	struct gunyah_vm *ghvm;
+	struct gunyah_rm *rm;
+	struct gunyah_vm_function *fn;
+	void *data;
+	struct list_head vm_list;
+};
+
+struct gunyah_vm_function {
+	u32 type;
+	const char *name;
+	struct module *mod;
+	long (*bind)(struct gunyah_vm_function_instance *);
+	void (*unbind)(struct gunyah_vm_function_instance *);
+	bool (*compare)(const struct gunyah_vm_function_instance *, const void *, size_t);
+};
+
+struct gunyah_vm_gup_binding {
+	enum gunyah_vm_mem_share_type share_type;
+	u64 guest_phys_addr;
+	u64 userspace_addr;
+	u64 size;
+	u32 flags;
+};
+
+struct gunyah_fn_desc {
+	__u32 type;
+	__u32 arg_size;
+	__u64 arg;
+};
+
+struct gunyah_vm_boot_context {
+	__u32 reg;
+	__u32 reserved;
+	__u64 value;
+};
+
+struct gunyah_userspace_memory_region {
+	__u32 label;
+	__u32 flags;
+	__u64 guest_phys_addr;
+	__u64 memory_size;
+	__u64 userspace_addr;
+};
+
+struct gunyah_rm_vm_status_payload {
+	__le16 vmid;
+	u16 reserved;
+	u8 vm_status;
+	u8 os_status;
+	__le16 app_status;
+};
+
+struct gunyah_rm_vm_exited_payload {
+	__le16 vmid;
+	__le16 exit_type;
+	__le32 exit_reason_size;
+	u8 exit_reason[0];
+};
+
+enum gunyah_addrspace_map_flag_bits {
+	GUNYAH_ADDRSPACE_MAP_FLAG_PARTIAL = 0,
+	GUNYAH_ADDRSPACE_MAP_FLAG_PRIVATE = 1,
+	GUNYAH_ADDRSPACE_MAP_FLAG_VMMIO = 2,
+	GUNYAH_ADDRSPACE_MAP_FLAG_NOSYNC = 31,
+};
+
+enum gunyah_pagetable_access {
+	GUNYAH_PAGETABLE_ACCESS_NONE = 0,
+	GUNYAH_PAGETABLE_ACCESS_X = 1,
+	GUNYAH_PAGETABLE_ACCESS_W = 2,
+	GUNYAH_PAGETABLE_ACCESS_R = 4,
+	GUNYAH_PAGETABLE_ACCESS_RX = 5,
+	GUNYAH_PAGETABLE_ACCESS_RW = 6,
+	GUNYAH_PAGETABLE_ACCESS_RWX = 7,
+};
+
+enum arch_gunyah_memtype {
+	GUNYAH_MEMTYPE_DEVICE_nGnRnE = 0,
+	GUNYAH_DEVICE_nGnRE = 1,
+	GUNYAH_DEVICE_nGRE = 2,
+	GUNYAH_DEVICE_GRE = 3,
+	GUNYAH_NORMAL_NC = 5,
+	GUNYAH_NORMAL_ONC_IWT = 6,
+	GUNYAH_NORMAL_ONC_IWB = 7,
+	GUNYAH_NORMAL_OWT_INC = 9,
+	GUNYAH_NORMAL_WT = 10,
+	GUNYAH_NORMAL_OWT_IWB = 11,
+	GUNYAH_NORMAL_OWB_INC = 13,
+	GUNYAH_NORMAL_OWB_IWT = 14,
+	GUNYAH_NORMAL_WB = 15,
+};
+
+enum gunyah_memextent_donate_type {
+	GUNYAH_MEMEXTENT_DONATE_TO_CHILD = 0,
+	GUNYAH_MEMEXTENT_DONATE_TO_PARENT = 1,
+	GUNYAH_MEMEXTENT_DONATE_TO_SIBLING = 2,
+	GUNYAH_MEMEXTENT_DONATE_TO_PROTECTED = 3,
+	GUNYAH_MEMEXTENT_DONATE_FROM_PROTECTED = 4,
+};
+
+enum gunyah_vm_status {
+	GUNYAH_VM_STATUS_LOAD_FAILED = 1,
+	GUNYAH_VM_STATUS_EXITED = 2,
+	GUNYAH_VM_STATUS_CRASHED = 3,
+};
+
+struct gunyah_vcpu_run;
+
+struct gunyah_vcpu {
+	struct gunyah_vm_function_instance *f;
+	struct gunyah_resource *rsc;
+	struct mutex run_lock;
+	struct gunyah_vm *ghvm;
+	struct gunyah_vcpu_run *vcpu_run;
+	enum {
+		GUNYAH_VCPU_RUN_STATE_UNKNOWN = 0,
+		GUNYAH_VCPU_RUN_STATE_READY = 1,
+		GUNYAH_VCPU_RUN_STATE_MMIO_READ = 2,
+		GUNYAH_VCPU_RUN_STATE_MMIO_WRITE = 3,
+		GUNYAH_VCPU_RUN_STATE_SYSTEM_DOWN = 4,
+	} state;
+	u8 mmio_read_len;
+	u64 mmio_addr;
+	struct completion ready;
+	struct notifier_block nb;
+	struct gunyah_vm_resource_ticket ticket;
+	struct kref kref;
+};
+
+struct gunyah_vcpu_run {
+	__u8 immediate_exit;
+	__u8 padding[7];
+	__u32 exit_reason;
+	union {
+		struct {
+			__u64 phys_addr;
+			__u8 data[8];
+			__u32 len;
+			__u8 is_write;
+			__u8 resume_action;
+		} mmio;
+		struct {
+			enum gunyah_vm_status status;
+			struct gunyah_vm_exit_info exit_info;
+		} status;
+		struct {
+			__u64 phys_addr;
+			__s32 attempt;
+			__u8 resume_action;
+		} page_fault;
+	};
+};
+
+enum gunyah_vcpu_exit {
+	GUNYAH_VCPU_EXIT_UNKNOWN = 0,
+	GUNYAH_VCPU_EXIT_MMIO = 1,
+	GUNYAH_VCPU_EXIT_STATUS = 2,
+	GUNYAH_VCPU_EXIT_PAGE_FAULT = 3,
+};
+
+enum gunyah_vcpu_resume_action {
+	GUNYAH_VCPU_RESUME_HANDLED = 0,
+	GUNYAH_VCPU_RESUME_FAULT = 1,
+	GUNYAH_VCPU_RESUME_RETRY = 2,
+};
+
+enum {
+	GUNYAH_ADDRSPACE_VMMIO_ACTION_EMULATE = 0,
+	GUNYAH_ADDRSPACE_VMMIO_ACTION_RETRY = 1,
+	GUNYAH_ADDRSPACE_VMMIO_ACTION_FAULT = 2,
+};
+
+struct gunyah_fn_vcpu_arg {
+	__u32 id;
+};
+
+struct gunyah_rm_platform_ops {
+	int (*pre_mem_share)(struct gunyah_rm *, struct gunyah_rm_mem_parcel *);
+	int (*post_mem_reclaim)(struct gunyah_rm *, struct gunyah_rm_mem_parcel *);
+	int (*pre_demand_page)(struct gunyah_rm *, u16, enum gunyah_pagetable_access, struct folio *);
+	int (*release_demand_page)(struct gunyah_rm *, u16, enum gunyah_pagetable_access, struct folio *);
+};
+
+enum gunyah_irqfd_flags {
+	GUNYAH_IRQFD_FLAGS_LEVEL = 1,
+};
+
+struct gunyah_irqfd {
+	struct gunyah_resource *ghrsc;
+	struct gunyah_vm_resource_ticket ticket;
+	struct gunyah_vm_function_instance *f;
+	bool level;
+	struct eventfd_ctx *ctx;
+	wait_queue_entry_t wait;
+	poll_table pt;
+};
+
+struct gunyah_fn_irqfd_arg {
+	__u32 fd;
+	__u32 label;
+	__u32 flags;
+	__u32 padding;
+};
+
+enum gunyah_ioeventfd_flags {
+	GUNYAH_IOEVENTFD_FLAGS_DATAMATCH = 1,
+};
+
+struct gunyah_ioeventfd {
+	struct gunyah_vm_function_instance *f;
+	struct gunyah_vm_io_handler io_handler;
+	struct eventfd_ctx *ctx;
+};
+
+struct gunyah_fn_ioeventfd_arg {
+	__u64 datamatch;
+	__u64 addr;
+	__u32 len;
+	__s32 fd;
+	__u32 flags;
+	__u32 padding;
+};
+
+typedef void (*btf_trace_devfreq_frequency)(void *, struct devfreq *, unsigned long, unsigned long);
+
+typedef void (*btf_trace_devfreq_monitor)(void *, struct devfreq *);
+
+enum devfreq_parent_dev_type {
+	DEVFREQ_PARENT_DEV = 0,
+	CPUFREQ_PARENT_DEV = 1,
+};
+
+struct trace_event_raw_devfreq_frequency {
+	struct trace_entry ent;
+	u32 __data_loc_dev_name;
+	unsigned long freq;
+	unsigned long prev_freq;
+	unsigned long busy_time;
+	unsigned long total_time;
+	char __data[0];
+};
+
+struct trace_event_raw_devfreq_monitor {
+	struct trace_entry ent;
+	unsigned long freq;
+	unsigned long busy_time;
+	unsigned long total_time;
+	unsigned int polling_ms;
+	u32 __data_loc_dev_name;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_devfreq_frequency {
+	u32 dev_name;
+};
+
+struct trace_event_data_offsets_devfreq_monitor {
+	u32 dev_name;
+};
+
+struct devfreq_freqs {
+	unsigned long old;
+	unsigned long new;
+};
+
+struct devfreq_notifier_devres {
+	struct devfreq *devfreq;
+	struct notifier_block *nb;
+	unsigned int list;
+};
+
+struct devfreq_passive_data {
+	struct devfreq *parent;
+	int (*get_target_freq)(struct devfreq *, unsigned long *);
+	enum devfreq_parent_dev_type parent_type;
+	struct devfreq *this;
+	struct notifier_block nb;
+	struct list_head cpu_data_list;
+};
+
+struct devfreq_event_desc;
+
+struct devfreq_event_dev {
+	struct list_head node;
+	struct device dev;
+	struct mutex lock;
+	u32 enable_count;
+	const struct devfreq_event_desc *desc;
+};
+
+struct devfreq_event_ops;
+
+struct devfreq_event_desc {
+	const char *name;
+	u32 event_type;
+	void *driver_data;
+	const struct devfreq_event_ops *ops;
+};
+
+struct devfreq_event_data;
+
+struct devfreq_event_ops {
+	int (*enable)(struct devfreq_event_dev *);
+	int (*disable)(struct devfreq_event_dev *);
+	int (*reset)(struct devfreq_event_dev *);
+	int (*set_event)(struct devfreq_event_dev *);
+	int (*get_event)(struct devfreq_event_dev *, struct devfreq_event_data *);
+};
+
+struct devfreq_event_data {
+	unsigned long load_count;
+	unsigned long total_count;
+};
+
+struct userspace_data {
+	unsigned long user_frequency;
+	bool valid;
+};
+
+struct devfreq_cpu_data {
+	struct list_head node;
+	struct device *dev;
+	unsigned int first_cpu;
+	struct opp_table *opp_table;
+	unsigned int cur_freq;
+	unsigned int min_freq;
+	unsigned int max_freq;
+};
+
+struct __extcon_info {
+	unsigned int type;
+	unsigned int id;
+	const char *name;
+};
+
+struct extcon_cable;
+
+struct extcon_dev {
+	const char *name;
+	const unsigned int *supported_cable;
+	const u32 *mutually_exclusive;
+	struct device dev;
+	unsigned int id;
+	struct raw_notifier_head nh_all;
+	struct raw_notifier_head *nh;
+	struct list_head entry;
+	int max_supported;
+	spinlock_t lock;
+	u32 state;
+	struct device_type extcon_dev_type;
+	struct extcon_cable *cables;
+	struct attribute_group attr_g_muex;
+	struct attribute **attrs_muex;
+	struct device_attribute *d_attrs_muex;
+};
+
+union extcon_property_value {
+	int intval;
+};
+
+struct extcon_cable {
+	struct extcon_dev *edev;
+	int cable_index;
+	struct attribute_group attr_g;
+	struct device_attribute attr_name;
+	struct device_attribute attr_state;
+	struct attribute *attrs[3];
+	union extcon_property_value usb_propval[3];
+	union extcon_property_value chg_propval[1];
+	union extcon_property_value jack_propval[1];
+	union extcon_property_value disp_propval[2];
+	unsigned long usb_bits[1];
+	unsigned long chg_bits[1];
+	unsigned long jack_bits[1];
+	unsigned long disp_bits[1];
+};
+
+struct extcon_dev_notifier_devres {
+	struct extcon_dev *edev;
+	unsigned int id;
+	struct notifier_block *nb;
+};
+
+struct tegra_mc;
+
+struct tegra_mc_reset;
+
+struct tegra_mc_reset_ops {
+	int (*hotreset_assert)(struct tegra_mc *, const struct tegra_mc_reset *);
+	int (*hotreset_deassert)(struct tegra_mc *, const struct tegra_mc_reset *);
+	int (*block_dma)(struct tegra_mc *, const struct tegra_mc_reset *);
+	bool (*dma_idling)(struct tegra_mc *, const struct tegra_mc_reset *);
+	int (*unblock_dma)(struct tegra_mc *, const struct tegra_mc_reset *);
+	int (*reset_status)(struct tegra_mc *, const struct tegra_mc_reset *);
+};
+
+struct tegra_smmu;
+
+struct gart_device;
+
+struct icc_node;
+
+struct icc_node_data;
+
+struct icc_provider {
+	struct list_head provider_list;
+	struct list_head nodes;
+	int (*set)(struct icc_node *, struct icc_node *);
+	int (*aggregate)(struct icc_node *, u32, u32, u32, u32 *, u32 *);
+	void (*pre_aggregate)(struct icc_node *);
+	int (*get_bw)(struct icc_node *, u32 *, u32 *);
+	struct icc_node * (*xlate)(struct of_phandle_args *, void *);
+	struct icc_node_data * (*xlate_extended)(struct of_phandle_args *, void *);
+	struct device *dev;
+	int users;
+	bool inter_set;
+	void *data;
+};
+
+struct tegra_mc_soc;
+
+struct tegra_mc_timing;
+
+struct tegra_mc {
+	struct tegra_bpmp *bpmp;
+	struct device *dev;
+	struct tegra_smmu *smmu;
+	struct gart_device *gart;
+	void *regs;
+	void *bcast_ch_regs;
+	void **ch_regs;
+	struct clk *clk;
+	int irq;
+	const struct tegra_mc_soc *soc;
+	unsigned long tick;
+	struct tegra_mc_timing *timings;
+	unsigned int num_timings;
+	unsigned int num_channels;
+	bool bwmgr_mrq_supported;
+	struct reset_controller_dev reset;
+	struct icc_provider provider;
+	spinlock_t lock;
+	struct {
+		struct dentry *root;
+	} debugfs;
+};
+
+struct tegra_mc_client;
+
+struct tegra_smmu_soc;
+
+struct tegra_mc_icc_ops;
+
+struct tegra_mc_ops;
+
+struct tegra_mc_soc {
+	const struct tegra_mc_client *clients;
+	unsigned int num_clients;
+	const unsigned long *emem_regs;
+	unsigned int num_emem_regs;
+	unsigned int num_address_bits;
+	unsigned int atom_size;
+	unsigned int num_carveouts;
+	u16 client_id_mask;
+	u8 num_channels;
+	const struct tegra_smmu_soc *smmu;
+	u32 intmask;
+	u32 ch_intmask;
+	u32 global_intstatus_channel_shift;
+	bool has_addr_hi_reg;
+	const struct tegra_mc_reset_ops *reset_ops;
+	const struct tegra_mc_reset *resets;
+	unsigned int num_resets;
+	const struct tegra_mc_icc_ops *icc_ops;
+	const struct tegra_mc_ops *ops;
+};
+
+enum tegra_icc_client_type {
+	TEGRA_ICC_NONE = 0,
+	TEGRA_ICC_NISO = 1,
+	TEGRA_ICC_ISO_DISPLAY = 2,
+	TEGRA_ICC_ISO_VI = 3,
+	TEGRA_ICC_ISO_AUDIO = 4,
+	TEGRA_ICC_ISO_VIFAL = 5,
+};
+
+struct tegra_mc_client {
+	unsigned int id;
+	unsigned int bpmp_id;
+	enum tegra_icc_client_type type;
+	const char *name;
+	union {
+		unsigned int swgroup;
+		unsigned int sid;
+	};
+	unsigned int fifo_size;
+	struct {
+		struct {
+			unsigned int reg;
+			unsigned int bit;
+		} smmu;
+		struct {
+			unsigned int reg;
+			unsigned int shift;
+			unsigned int mask;
+			unsigned int def;
+		} la;
+		struct {
+			unsigned int override;
+			unsigned int security;
+		} sid;
+	} regs;
+};
+
+struct tegra_smmu_swgroup;
+
+struct tegra_smmu_group_soc;
+
+struct tegra_smmu_soc {
+	const struct tegra_mc_client *clients;
+	unsigned int num_clients;
+	const struct tegra_smmu_swgroup *swgroups;
+	unsigned int num_swgroups;
+	const struct tegra_smmu_group_soc *groups;
+	unsigned int num_groups;
+	bool supports_round_robin_arbitration;
+	bool supports_request_limit;
+	unsigned int num_tlb_lines;
+	unsigned int num_asids;
+};
+
+struct tegra_smmu_swgroup {
+	const char *name;
+	unsigned int swgroup;
+	unsigned int reg;
+};
+
+struct tegra_smmu_group_soc {
+	const char *name;
+	const unsigned int *swgroups;
+	unsigned int num_swgroups;
+};
+
+struct tegra_mc_reset {
+	const char *name;
+	unsigned long id;
+	unsigned int control;
+	unsigned int status;
+	unsigned int reset;
+	unsigned int bit;
+};
+
+struct tegra_mc_icc_ops {
+	int (*set)(struct icc_node *, struct icc_node *);
+	int (*aggregate)(struct icc_node *, u32, u32, u32, u32 *, u32 *);
+	struct icc_node * (*xlate)(struct of_phandle_args *, void *);
+	struct icc_node_data * (*xlate_extended)(struct of_phandle_args *, void *);
+	int (*get_bw)(struct icc_node *, u32 *, u32 *);
+};
+
+struct icc_node {
+	int id;
+	const char *name;
+	struct icc_node **links;
+	size_t num_links;
+	struct icc_provider *provider;
+	struct list_head node_list;
+	struct list_head search_list;
+	struct icc_node *reverse;
+	u8 is_traversed: 1;
+	struct hlist_head req_list;
+	u32 avg_bw;
+	u32 peak_bw;
+	u32 init_avg;
+	u32 init_peak;
+	void *data;
+};
+
+struct icc_node_data {
+	struct icc_node *node;
+	u32 tag;
+};
+
+struct tegra_mc_ops {
+	int (*probe)(struct tegra_mc *);
+	void (*remove)(struct tegra_mc *);
+	int (*suspend)(struct tegra_mc *);
+	int (*resume)(struct tegra_mc *);
+	irqreturn_t (*handle_irq)(int, void *);
+	int (*probe_device)(struct tegra_mc *, struct device *);
+};
+
+struct tegra_mc_timing {
+	unsigned long rate;
+	u32 *emem_data;
+};
+
+enum mrq_bwmgr_int_cmd {
+	CMD_BWMGR_INT_QUERY_ABI = 1,
+	CMD_BWMGR_INT_CALC_AND_SET = 2,
+	CMD_BWMGR_INT_CAP_SET = 3,
+};
+
+struct cmd_bwmgr_int_calc_and_set_response {
+	uint64_t rate;
+};
+
+struct mrq_bwmgr_int_response {
+	union {
+		struct cmd_bwmgr_int_calc_and_set_response bwmgr_calc_set_resp;
+	};
+};
+
+struct cmd_bwmgr_int_query_abi_request {
+	uint32_t type;
+};
+
+struct cmd_bwmgr_int_calc_and_set_request {
+	uint32_t client_id;
+	uint32_t niso_bw;
+	uint32_t iso_bw;
+	uint32_t mc_floor;
+	uint8_t floor_unit;
+} __attribute__((packed));
+
+struct cmd_bwmgr_int_cap_set_request {
+	uint64_t rate;
+};
+
+struct mrq_bwmgr_int_request {
+	uint32_t cmd;
+	union {
+		struct cmd_bwmgr_int_query_abi_request query_abi;
+		struct cmd_bwmgr_int_calc_and_set_request bwmgr_calc_set_req;
+		struct cmd_bwmgr_int_cap_set_request bwmgr_cap_set_req;
+	};
+} __attribute__((packed));
+
+struct tegra186_emc_dvfs;
+
+struct tegra186_emc {
+	struct tegra_bpmp *bpmp;
+	struct device *dev;
+	struct clk *clk;
+	struct tegra186_emc_dvfs *dvfs;
+	unsigned int num_dvfs;
+	struct {
+		struct dentry *root;
+		unsigned long min_rate;
+		unsigned long max_rate;
+	} debugfs;
+	struct icc_provider provider;
+};
+
+struct tegra186_emc_dvfs {
+	unsigned long latency;
+	unsigned long rate;
+};
+
+struct emc_dvfs_latency {
+	uint32_t freq;
+	uint32_t latency;
+};
+
+struct mrq_emc_dvfs_latency_response {
+	uint32_t num_pairs;
+	struct emc_dvfs_latency pairs[14];
+};
+
+struct iio_dev;
+
+struct iio_buffer_setup_ops {
+	int (*preenable)(struct iio_dev *);
+	int (*postenable)(struct iio_dev *);
+	int (*predisable)(struct iio_dev *);
+	int (*postdisable)(struct iio_dev *);
+	bool (*validate_scan_mask)(struct iio_dev *, const unsigned long *);
+};
+
+struct iio_buffer;
+
+struct iio_trigger;
+
+struct iio_poll_func;
+
+struct iio_chan_spec;
+
+struct iio_info;
+
+struct iio_dev {
+	int modes;
+	struct device dev;
+	struct iio_buffer *buffer;
+	int scan_bytes;
+	const unsigned long *available_scan_masks;
+	unsigned int masklength;
+	const unsigned long *active_scan_mask;
+	bool scan_timestamp;
+	struct iio_trigger *trig;
+	struct iio_poll_func *pollfunc;
+	struct iio_poll_func *pollfunc_event;
+	const struct iio_chan_spec *channels;
+	int num_channels;
+	const char *name;
+	const char *label;
+	const struct iio_info *info;
+	const struct iio_buffer_setup_ops *setup_ops;
+	void *priv;
+};
+
+enum iio_buffer_direction {
+	IIO_BUFFER_DIRECTION_IN = 0,
+	IIO_BUFFER_DIRECTION_OUT = 1,
+};
+
+struct iio_buffer_access_funcs;
+
+struct iio_dev_attr;
+
+struct iio_buffer {
+	unsigned int length;
+	unsigned long flags;
+	size_t bytes_per_datum;
+	enum iio_buffer_direction direction;
+	const struct iio_buffer_access_funcs *access;
+	long *scan_mask;
+	struct list_head demux_list;
+	wait_queue_head_t pollq;
+	unsigned int watermark;
+	bool scan_timestamp;
+	struct list_head buffer_attr_list;
+	struct attribute_group buffer_group;
+	const struct iio_dev_attr **attrs;
+	void *demux_bounce;
+	struct list_head attached_entry;
+	struct list_head buffer_list;
+	struct kref ref;
+};
+
+struct iio_buffer_access_funcs {
+	int (*store_to)(struct iio_buffer *, const void *);
+	int (*read)(struct iio_buffer *, size_t, char __attribute__((btf_type_tag("user"))) *);
+	size_t (*data_available)(struct iio_buffer *);
+	int (*remove_from)(struct iio_buffer *, void *);
+	int (*write)(struct iio_buffer *, size_t, const char __attribute__((btf_type_tag("user"))) *);
+	size_t (*space_available)(struct iio_buffer *);
+	int (*request_update)(struct iio_buffer *);
+	int (*set_bytes_per_datum)(struct iio_buffer *, size_t);
+	int (*set_length)(struct iio_buffer *, unsigned int);
+	int (*enable)(struct iio_buffer *, struct iio_dev *);
+	int (*disable)(struct iio_buffer *, struct iio_dev *);
+	void (*release)(struct iio_buffer *);
+	unsigned int modes;
+	unsigned int flags;
+};
+
+struct iio_dev_attr {
+	struct device_attribute dev_attr;
+	u64 address;
+	struct list_head l;
+	const struct iio_chan_spec *c;
+	struct iio_buffer *buffer;
+};
+
+enum iio_chan_type {
+	IIO_VOLTAGE = 0,
+	IIO_CURRENT = 1,
+	IIO_POWER = 2,
+	IIO_ACCEL = 3,
+	IIO_ANGL_VEL = 4,
+	IIO_MAGN = 5,
+	IIO_LIGHT = 6,
+	IIO_INTENSITY = 7,
+	IIO_PROXIMITY = 8,
+	IIO_TEMP = 9,
+	IIO_INCLI = 10,
+	IIO_ROT = 11,
+	IIO_ANGL = 12,
+	IIO_TIMESTAMP = 13,
+	IIO_CAPACITANCE = 14,
+	IIO_ALTVOLTAGE = 15,
+	IIO_CCT = 16,
+	IIO_PRESSURE = 17,
+	IIO_HUMIDITYRELATIVE = 18,
+	IIO_ACTIVITY = 19,
+	IIO_STEPS = 20,
+	IIO_ENERGY = 21,
+	IIO_DISTANCE = 22,
+	IIO_VELOCITY = 23,
+	IIO_CONCENTRATION = 24,
+	IIO_RESISTANCE = 25,
+	IIO_PH = 26,
+	IIO_UVINDEX = 27,
+	IIO_ELECTRICALCONDUCTIVITY = 28,
+	IIO_COUNT = 29,
+	IIO_INDEX = 30,
+	IIO_GRAVITY = 31,
+	IIO_POSITIONRELATIVE = 32,
+	IIO_PHASE = 33,
+	IIO_MASSCONCENTRATION = 34,
+};
+
+enum iio_endian {
+	IIO_CPU = 0,
+	IIO_BE = 1,
+	IIO_LE = 2,
+};
+
+struct iio_event_spec;
+
+struct iio_chan_spec_ext_info;
+
+struct iio_chan_spec {
+	enum iio_chan_type type;
+	int channel;
+	int channel2;
+	unsigned long address;
+	int scan_index;
+	struct {
+		char sign;
+		u8 realbits;
+		u8 storagebits;
+		u8 shift;
+		u8 repeat;
+		enum iio_endian endianness;
+	} scan_type;
+	long info_mask_separate;
+	long info_mask_separate_available;
+	long info_mask_shared_by_type;
+	long info_mask_shared_by_type_available;
+	long info_mask_shared_by_dir;
+	long info_mask_shared_by_dir_available;
+	long info_mask_shared_by_all;
+	long info_mask_shared_by_all_available;
+	const struct iio_event_spec *event_spec;
+	unsigned int num_event_specs;
+	const struct iio_chan_spec_ext_info *ext_info;
+	const char *extend_name;
+	const char *datasheet_name;
+	unsigned int modified: 1;
+	unsigned int indexed: 1;
+	unsigned int output: 1;
+	unsigned int differential: 1;
+};
+
+enum iio_event_type {
+	IIO_EV_TYPE_THRESH = 0,
+	IIO_EV_TYPE_MAG = 1,
+	IIO_EV_TYPE_ROC = 2,
+	IIO_EV_TYPE_THRESH_ADAPTIVE = 3,
+	IIO_EV_TYPE_MAG_ADAPTIVE = 4,
+	IIO_EV_TYPE_CHANGE = 5,
+	IIO_EV_TYPE_MAG_REFERENCED = 6,
+	IIO_EV_TYPE_GESTURE = 7,
+};
+
+enum iio_event_direction {
+	IIO_EV_DIR_EITHER = 0,
+	IIO_EV_DIR_RISING = 1,
+	IIO_EV_DIR_FALLING = 2,
+	IIO_EV_DIR_NONE = 3,
+	IIO_EV_DIR_SINGLETAP = 4,
+	IIO_EV_DIR_DOUBLETAP = 5,
+};
+
+struct iio_event_spec {
+	enum iio_event_type type;
+	enum iio_event_direction dir;
+	unsigned long mask_separate;
+	unsigned long mask_shared_by_type;
+	unsigned long mask_shared_by_dir;
+	unsigned long mask_shared_by_all;
+};
+
+enum iio_shared_by {
+	IIO_SEPARATE = 0,
+	IIO_SHARED_BY_TYPE = 1,
+	IIO_SHARED_BY_DIR = 2,
+	IIO_SHARED_BY_ALL = 3,
+};
+
+struct iio_chan_spec_ext_info {
+	const char *name;
+	enum iio_shared_by shared;
+	ssize_t (*read)(struct iio_dev *, uintptr_t, const struct iio_chan_spec *, char *);
+	ssize_t (*write)(struct iio_dev *, uintptr_t, const struct iio_chan_spec *, const char *, size_t);
+	uintptr_t private;
+};
+
+enum iio_event_info {
+	IIO_EV_INFO_ENABLE = 0,
+	IIO_EV_INFO_VALUE = 1,
+	IIO_EV_INFO_HYSTERESIS = 2,
+	IIO_EV_INFO_PERIOD = 3,
+	IIO_EV_INFO_HIGH_PASS_FILTER_3DB = 4,
+	IIO_EV_INFO_LOW_PASS_FILTER_3DB = 5,
+	IIO_EV_INFO_TIMEOUT = 6,
+	IIO_EV_INFO_RESET_TIMEOUT = 7,
+	IIO_EV_INFO_TAP2_MIN_DELAY = 8,
+	IIO_EV_INFO_RUNNING_PERIOD = 9,
+	IIO_EV_INFO_RUNNING_COUNT = 10,
+};
+
+struct iio_info {
+	const struct attribute_group *event_attrs;
+	const struct attribute_group *attrs;
+	int (*read_raw)(struct iio_dev *, const struct iio_chan_spec *, int *, int *, long);
+	int (*read_raw_multi)(struct iio_dev *, const struct iio_chan_spec *, int, int *, int *, long);
+	int (*read_avail)(struct iio_dev *, const struct iio_chan_spec *, const int **, int *, int *, long);
+	int (*write_raw)(struct iio_dev *, const struct iio_chan_spec *, int, int, long);
+	int (*read_label)(struct iio_dev *, const struct iio_chan_spec *, char *);
+	int (*write_raw_get_fmt)(struct iio_dev *, const struct iio_chan_spec *, long);
+	int (*read_event_config)(struct iio_dev *, const struct iio_chan_spec *, enum iio_event_type, enum iio_event_direction);
+	int (*write_event_config)(struct iio_dev *, const struct iio_chan_spec *, enum iio_event_type, enum iio_event_direction, int);
+	int (*read_event_value)(struct iio_dev *, const struct iio_chan_spec *, enum iio_event_type, enum iio_event_direction, enum iio_event_info, int *, int *);
+	int (*write_event_value)(struct iio_dev *, const struct iio_chan_spec *, enum iio_event_type, enum iio_event_direction, enum iio_event_info, int, int);
+	int (*validate_trigger)(struct iio_dev *, struct iio_trigger *);
+	int (*update_scan_mode)(struct iio_dev *, const unsigned long *);
+	int (*debugfs_reg_access)(struct iio_dev *, unsigned int, unsigned int, unsigned int *);
+	int (*fwnode_xlate)(struct iio_dev *, const struct fwnode_reference_args *);
+	int (*hwfifo_set_watermark)(struct iio_dev *, unsigned int);
+	int (*hwfifo_flush_to_buffer)(struct iio_dev *, unsigned int);
+};
+
+struct iio_mount_matrix {
+	const char *rotation[9];
+};
+
+enum iio_available_type {
+	IIO_AVAIL_LIST = 0,
+	IIO_AVAIL_RANGE = 1,
+};
+
+struct iio_event_interface;
+
+struct iio_ioctl_handler;
+
+struct iio_dev_opaque {
+	struct iio_dev indio_dev;
+	int currentmode;
+	int id;
+	struct module *driver_module;
+	struct mutex mlock;
+	struct lock_class_key mlock_key;
+	struct mutex info_exist_lock;
+	bool trig_readonly;
+	struct iio_event_interface *event_interface;
+	struct iio_buffer **attached_buffers;
+	unsigned int attached_buffers_cnt;
+	struct iio_ioctl_handler *buffer_ioctl_handler;
+	struct list_head buffer_list;
+	struct list_head channel_attr_list;
+	struct attribute_group chan_attr_group;
+	struct list_head ioctl_handlers;
+	const struct attribute_group **groups;
+	int groupcounter;
+	struct attribute_group legacy_scan_el_group;
+	struct attribute_group legacy_buffer_group;
+	void *bounce_buffer;
+	size_t bounce_buffer_size;
+	unsigned int scan_index_timestamp;
+	clockid_t clock_id;
+	struct cdev chrdev;
+	unsigned long flags;
+	struct dentry *debugfs_dentry;
+	unsigned int cached_reg_addr;
+	char read_buf[20];
+	unsigned int read_buf_len;
+};
+
+struct iio_ioctl_handler {
+	struct list_head entry;
+	long (*ioctl)(struct iio_dev *, struct file *, unsigned int, unsigned long);
+};
+
+struct iio_const_attr {
+	const char *string;
+	struct device_attribute dev_attr;
+};
+
+struct iio_enum {
+	const char * const *items;
+	unsigned int num_items;
+	int (*set)(struct iio_dev *, const struct iio_chan_spec *, unsigned int);
+	int (*get)(struct iio_dev *, const struct iio_chan_spec *);
+};
+
+typedef const struct iio_mount_matrix *iio_get_mount_matrix_t(const struct iio_dev *, const struct iio_chan_spec *);
+
+struct iio_event_data {
+	__u64 id;
+	__s64 timestamp;
+};
+
+struct iio_event_interface {
+	wait_queue_head_t wait;
+	struct {
+		union {
+			struct __kfifo kfifo;
+			struct iio_event_data *type;
+			const struct iio_event_data *const_type;
+			char (*rectype)[0];
+			struct iio_event_data *ptr;
+			const struct iio_event_data *ptr_const;
+		};
+		struct iio_event_data buf[16];
+	} det_events;
+	struct list_head dev_attr_list;
+	unsigned long flags;
+	struct attribute_group group;
+	struct mutex read_lock;
+	struct iio_ioctl_handler ioctl_handler;
+};
+
+struct iio_dev_buffer_pair {
+	struct iio_dev *indio_dev;
+	struct iio_buffer *buffer;
+};
+
+enum iio_chan_info_enum {
+	IIO_CHAN_INFO_RAW = 0,
+	IIO_CHAN_INFO_PROCESSED = 1,
+	IIO_CHAN_INFO_SCALE = 2,
+	IIO_CHAN_INFO_OFFSET = 3,
+	IIO_CHAN_INFO_CALIBSCALE = 4,
+	IIO_CHAN_INFO_CALIBBIAS = 5,
+	IIO_CHAN_INFO_PEAK = 6,
+	IIO_CHAN_INFO_PEAK_SCALE = 7,
+	IIO_CHAN_INFO_QUADRATURE_CORRECTION_RAW = 8,
+	IIO_CHAN_INFO_AVERAGE_RAW = 9,
+	IIO_CHAN_INFO_LOW_PASS_FILTER_3DB_FREQUENCY = 10,
+	IIO_CHAN_INFO_HIGH_PASS_FILTER_3DB_FREQUENCY = 11,
+	IIO_CHAN_INFO_SAMP_FREQ = 12,
+	IIO_CHAN_INFO_FREQUENCY = 13,
+	IIO_CHAN_INFO_PHASE = 14,
+	IIO_CHAN_INFO_HARDWAREGAIN = 15,
+	IIO_CHAN_INFO_HYSTERESIS = 16,
+	IIO_CHAN_INFO_HYSTERESIS_RELATIVE = 17,
+	IIO_CHAN_INFO_INT_TIME = 18,
+	IIO_CHAN_INFO_ENABLE = 19,
+	IIO_CHAN_INFO_CALIBHEIGHT = 20,
+	IIO_CHAN_INFO_CALIBWEIGHT = 21,
+	IIO_CHAN_INFO_DEBOUNCE_COUNT = 22,
+	IIO_CHAN_INFO_DEBOUNCE_TIME = 23,
+	IIO_CHAN_INFO_CALIBEMISSIVITY = 24,
+	IIO_CHAN_INFO_OVERSAMPLING_RATIO = 25,
+	IIO_CHAN_INFO_THERMOCOUPLE_TYPE = 26,
+	IIO_CHAN_INFO_CALIBAMBIENT = 27,
+	IIO_CHAN_INFO_ZEROPOINT = 28,
+};
+
+struct iio_map;
+
+struct iio_map_internal {
+	struct iio_dev *indio_dev;
+	struct iio_map *map;
+	struct list_head l;
+};
+
+struct iio_map {
+	const char *adc_channel_label;
+	const char *consumer_dev_name;
+	const char *consumer_channel;
+	void *consumer_data;
+};
+
+struct iio_channel {
+	struct iio_dev *indio_dev;
+	const struct iio_chan_spec *channel;
+	void *data;
+};
+
+struct iio_demux_table {
+	unsigned int from;
+	unsigned int to;
+	unsigned int length;
+	struct list_head l;
+};
+
+struct iio_device_config {
+	unsigned int mode;
+	unsigned int watermark;
+	const unsigned long *scan_mask;
+	unsigned int scan_bytes;
+	bool scan_timestamp;
+};
+
+struct iio_subirq {
+	bool enabled;
+};
+
+struct iio_trigger_ops;
+
+struct iio_trigger {
+	const struct iio_trigger_ops *ops;
+	struct module *owner;
+	int id;
+	const char *name;
+	struct device dev;
+	struct list_head list;
+	struct list_head alloc_list;
+	atomic_t use_count;
+	struct irq_chip subirq_chip;
+	int subirq_base;
+	struct iio_subirq subirqs[2];
+	unsigned long pool[1];
+	struct mutex pool_lock;
+	bool attached_own_device;
+	struct work_struct reenable_work;
+};
+
+struct iio_trigger_ops {
+	int (*set_trigger_state)(struct iio_trigger *, bool);
+	void (*reenable)(struct iio_trigger *);
+	int (*validate_device)(struct iio_trigger *, struct iio_dev *);
+};
+
+struct iio_poll_func {
+	struct iio_dev *indio_dev;
+	irqreturn_t (*h)(int, void *);
+	irqreturn_t (*thread)(int, void *);
+	int type;
+	char *name;
+	int irq;
+	s64 timestamp;
+};
+
+struct dtpm;
+
+struct dtpm_subsys_ops {
+	const char *name;
+	int (*init)();
+	void (*exit)();
+	int (*setup)(struct dtpm *, struct device_node *);
+};
+
+struct powercap_zone_ops;
+
+struct powercap_zone_constraint;
+
+struct powercap_zone {
+	int id;
+	char *name;
+	void *control_type_inst;
+	const struct powercap_zone_ops *ops;
+	struct device dev;
+	int const_id_cnt;
+	struct idr idr;
+	struct idr *parent_idr;
+	void *private_data;
+	struct attribute **zone_dev_attrs;
+	int zone_attr_count;
+	struct attribute_group dev_zone_attr_group;
+	const struct attribute_group *dev_attr_groups[2];
+	bool allocated;
+	struct powercap_zone_constraint *constraints;
+};
+
+struct dtpm_ops;
+
+struct dtpm {
+	struct powercap_zone zone;
+	struct dtpm *parent;
+	struct list_head sibling;
+	struct list_head children;
+	struct dtpm_ops *ops;
+	unsigned long flags;
+	u64 power_limit;
+	u64 power_max;
+	u64 power_min;
+	int weight;
+};
+
+struct powercap_zone_ops {
+	int (*get_max_energy_range_uj)(struct powercap_zone *, u64 *);
+	int (*get_energy_uj)(struct powercap_zone *, u64 *);
+	int (*reset_energy_uj)(struct powercap_zone *);
+	int (*get_max_power_range_uw)(struct powercap_zone *, u64 *);
+	int (*get_power_uw)(struct powercap_zone *, u64 *);
+	int (*set_enable)(struct powercap_zone *, bool);
+	int (*get_enable)(struct powercap_zone *, bool *);
+	int (*release)(struct powercap_zone *);
+};
+
+struct powercap_zone_constraint_ops;
+
+struct powercap_zone_constraint {
+	int id;
+	struct powercap_zone *power_zone;
+	const struct powercap_zone_constraint_ops *ops;
+};
+
+struct powercap_zone_constraint_ops {
+	int (*set_power_limit_uw)(struct powercap_zone *, int, u64);
+	int (*get_power_limit_uw)(struct powercap_zone *, int, u64 *);
+	int (*set_time_window_us)(struct powercap_zone *, int, u64);
+	int (*get_time_window_us)(struct powercap_zone *, int, u64 *);
+	int (*get_max_power_uw)(struct powercap_zone *, int, u64 *);
+	int (*get_min_power_uw)(struct powercap_zone *, int, u64 *);
+	int (*get_max_time_window_us)(struct powercap_zone *, int, u64 *);
+	int (*get_min_time_window_us)(struct powercap_zone *, int, u64 *);
+	const char * (*get_name)(struct powercap_zone *, int);
+};
+
+struct dtpm_ops {
+	u64 (*set_power_uw)(struct dtpm *, u64);
+	u64 (*get_power_uw)(struct dtpm *);
+	int (*update_power_uw)(struct dtpm *);
+	void (*release)(struct dtpm *);
+};
+
+struct powercap_control_type_ops;
+
+struct powercap_control_type {
+	struct device dev;
+	struct idr idr;
+	int nr_zones;
+	const struct powercap_control_type_ops *ops;
+	struct mutex lock;
+	bool allocated;
+	struct list_head node;
+};
+
+struct powercap_control_type_ops {
+	int (*set_enable)(struct powercap_control_type *, bool);
+	int (*get_enable)(struct powercap_control_type *, bool *);
+	int (*release)(struct powercap_control_type *);
+};
+
+struct dtpm_node;
+
+typedef struct dtpm * (*dtpm_node_callback_t)(const struct dtpm_node *, struct dtpm *);
+
+enum DTPM_NODE_TYPE {
+	DTPM_NODE_VIRTUAL = 0,
+	DTPM_NODE_DT = 1,
+};
+
+struct dtpm_node {
+	enum DTPM_NODE_TYPE type;
+	const char *name;
+	struct dtpm_node *parent;
+};
+
+struct dtpm_cpu {
+	struct dtpm dtpm;
+	struct freq_qos_request qos_req;
+	int cpu;
+};
+
+struct dtpm_devfreq {
+	struct dtpm dtpm;
+	struct dev_pm_qos_request qos_req;
+	struct devfreq *devfreq;
+};
+
+struct powercap_constraint_attr {
+	struct device_attribute power_limit_attr;
+	struct device_attribute time_window_attr;
+	struct device_attribute max_power_attr;
+	struct device_attribute min_power_attr;
+	struct device_attribute max_time_window_attr;
+	struct device_attribute min_time_window_attr;
+	struct device_attribute name_attr;
+};
+
+struct idle_inject_thread {
+	struct task_struct *tsk;
+	int should_run;
+};
+
+struct idle_inject_device {
+	struct hrtimer timer;
+	unsigned int idle_duration_us;
+	unsigned int run_duration_us;
+	unsigned int latency_us;
+	bool (*update)();
+	unsigned long cpumask[0];
+};
+
+struct pmu_irq_ops {
+	void (*enable_pmuirq)(unsigned int);
+	void (*disable_pmuirq)(unsigned int);
+	void (*free_pmuirq)(unsigned int, int, void __attribute__((btf_type_tag("percpu"))) *);
+};
+
+enum armpmu_attr_groups {
+	ARMPMU_ATTR_GROUP_COMMON = 0,
+	ARMPMU_ATTR_GROUP_EVENTS = 1,
+	ARMPMU_ATTR_GROUP_FORMATS = 2,
+	ARMPMU_ATTR_GROUP_CAPS = 3,
+	ARMPMU_NR_ATTR_GROUPS = 4,
+};
+
+enum perf_hw_id {
+	PERF_COUNT_HW_CPU_CYCLES = 0,
+	PERF_COUNT_HW_INSTRUCTIONS = 1,
+	PERF_COUNT_HW_CACHE_REFERENCES = 2,
+	PERF_COUNT_HW_CACHE_MISSES = 3,
+	PERF_COUNT_HW_BRANCH_INSTRUCTIONS = 4,
+	PERF_COUNT_HW_BRANCH_MISSES = 5,
+	PERF_COUNT_HW_BUS_CYCLES = 6,
+	PERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 7,
+	PERF_COUNT_HW_STALLED_CYCLES_BACKEND = 8,
+	PERF_COUNT_HW_REF_CPU_CYCLES = 9,
+	PERF_COUNT_HW_MAX = 10,
+};
+
+enum perf_hw_cache_id {
+	PERF_COUNT_HW_CACHE_L1D = 0,
+	PERF_COUNT_HW_CACHE_L1I = 1,
+	PERF_COUNT_HW_CACHE_LL = 2,
+	PERF_COUNT_HW_CACHE_DTLB = 3,
+	PERF_COUNT_HW_CACHE_ITLB = 4,
+	PERF_COUNT_HW_CACHE_BPU = 5,
+	PERF_COUNT_HW_CACHE_NODE = 6,
+	PERF_COUNT_HW_CACHE_MAX = 7,
+};
+
+enum perf_hw_cache_op_id {
+	PERF_COUNT_HW_CACHE_OP_READ = 0,
+	PERF_COUNT_HW_CACHE_OP_WRITE = 1,
+	PERF_COUNT_HW_CACHE_OP_PREFETCH = 2,
+	PERF_COUNT_HW_CACHE_OP_MAX = 3,
+};
+
+enum perf_hw_cache_op_result_id {
+	PERF_COUNT_HW_CACHE_RESULT_ACCESS = 0,
+	PERF_COUNT_HW_CACHE_RESULT_MISS = 1,
+	PERF_COUNT_HW_CACHE_RESULT_MAX = 2,
+};
+
+typedef int (*armpmu_init_fn)(struct arm_pmu *);
+
+struct pmu_probe_info {
+	unsigned int cpuid;
+	unsigned int mask;
+	armpmu_init_fn init;
+};
+
+struct armv8pmu_probe_info {
+	struct arm_pmu *pmu;
+	bool present;
+};
+
+typedef void (*btf_trace_mc_event)(void *, const unsigned int, const char *, const char *, const int, const u8, const s8, const s8, const s8, unsigned long, const u8, unsigned long, const char *);
+
+struct cper_sec_proc_arm;
+
+typedef void (*btf_trace_arm_event)(void *, const struct cper_sec_proc_arm *);
+
+struct cper_sec_proc_arm {
+	u32 validation_bits;
+	u16 err_info_num;
+	u16 context_info_num;
+	u32 section_length;
+	u8 affinity_level;
+	u8 reserved[3];
+	u64 mpidr;
+	u64 midr;
+	u32 running_state;
+	u32 psci_state;
+};
+
+typedef void (*btf_trace_non_standard_event)(void *, const guid_t *, const guid_t *, const char *, const u8, const u8 *, const u32);
+
+typedef void (*btf_trace_aer_event)(void *, const char *, const u32, const u8, const u8, struct aer_header_log_regs *);
+
+struct trace_event_raw_mc_event {
+	struct trace_entry ent;
+	unsigned int error_type;
+	u32 __data_loc_msg;
+	u32 __data_loc_label;
+	u16 error_count;
+	u8 mc_index;
+	s8 top_layer;
+	s8 middle_layer;
+	s8 lower_layer;
+	long address;
+	u8 grain_bits;
+	long syndrome;
+	u32 __data_loc_driver_detail;
+	char __data[0];
+};
+
+struct trace_event_raw_arm_event {
+	struct trace_entry ent;
+	u64 mpidr;
+	u64 midr;
+	u32 running_state;
+	u32 psci_state;
+	u8 affinity;
+	char __data[0];
+};
+
+struct trace_event_raw_non_standard_event {
+	struct trace_entry ent;
+	char sec_type[16];
+	char fru_id[16];
+	u32 __data_loc_fru_text;
+	u8 sev;
+	u32 len;
+	u32 __data_loc_buf;
+	char __data[0];
+};
+
+struct trace_event_raw_aer_event {
+	struct trace_entry ent;
+	u32 __data_loc_dev_name;
+	u32 status;
+	u8 severity;
+	u8 tlp_header_valid;
+	u32 tlp_header[4];
+	char __data[0];
+};
+
+struct trace_event_data_offsets_non_standard_event {
+	u32 fru_text;
+	u32 buf;
+};
+
+struct trace_event_data_offsets_aer_event {
+	u32 dev_name;
+};
+
+struct trace_event_data_offsets_mc_event {
+	u32 msg;
+	u32 label;
+	u32 driver_detail;
+};
+
+struct trace_event_data_offsets_arm_event {};
+
+struct binder_features {
+	bool oneway_spam_detection;
+	bool extended_error;
+};
+
+enum binderfs_stats_mode {
+	binderfs_stats_mode_unset = 0,
+	binderfs_stats_mode_global = 1,
+};
+
+enum binderfs_param {
+	Opt_max___2 = 0,
+	Opt_stats_mode = 1,
+};
+
+enum binder_work_type {
+	BINDER_WORK_TRANSACTION = 1,
+	BINDER_WORK_TRANSACTION_COMPLETE = 2,
+	BINDER_WORK_TRANSACTION_PENDING = 3,
+	BINDER_WORK_TRANSACTION_ONEWAY_SPAM_SUSPECT = 4,
+	BINDER_WORK_RETURN_ERROR = 5,
+	BINDER_WORK_NODE = 6,
+	BINDER_WORK_DEAD_BINDER = 7,
+	BINDER_WORK_DEAD_BINDER_AND_CLEAR = 8,
+	BINDER_WORK_CLEAR_DEATH_NOTIFICATION = 9,
+};
+
+struct binderfs_device {
+	char name[256];
+	__u32 major;
+	__u32 minor;
+};
+
+struct binderfs_mount_opts {
+	int max;
+	int stats_mode;
+};
+
+struct binderfs_info {
+	struct ipc_namespace *ipc_ns;
+	struct dentry *control_dentry;
+	kuid_t root_uid;
+	kgid_t root_gid;
+	struct binderfs_mount_opts mount_opts;
+	int device_count;
+	struct dentry *proc_log_dir;
+};
+
+struct binder_node;
+
+struct binder_context {
+	struct binder_node *binder_context_mgr_node;
+	struct mutex context_mgr_node_lock;
+	kuid_t binder_context_mgr_uid;
+	const char *name;
+};
+
+struct binder_device {
+	struct hlist_node hlist;
+	struct miscdevice miscdev;
+	struct binder_context context;
+	struct inode *binderfs_inode;
+	refcount_t ref;
+};
+
+struct binder_work {
+	struct list_head entry;
+	enum binder_work_type type;
+	u64 android_oem_data1;
+};
+
+typedef __u64 binder_uintptr_t;
+
+struct binder_proc;
+
+struct binder_node {
+	int debug_id;
+	spinlock_t lock;
+	struct binder_work work;
+	union {
+		struct rb_node rb_node;
+		struct hlist_node dead_node;
+	};
+	struct binder_proc *proc;
+	struct hlist_head refs;
+	int internal_strong_refs;
+	int local_weak_refs;
+	int local_strong_refs;
+	int tmp_refs;
+	binder_uintptr_t ptr;
+	binder_uintptr_t cookie;
+	struct {
+		u8 has_strong_ref: 1;
+		u8 pending_strong_ref: 1;
+		u8 has_weak_ref: 1;
+		u8 pending_weak_ref: 1;
+	};
+	struct {
+		u8 sched_policy: 2;
+		u8 inherit_rt: 1;
+		u8 accept_fds: 1;
+		u8 txn_security_ctx: 1;
+		u8 min_priority;
+	};
+	bool has_async_transaction;
+	struct list_head async_todo;
+};
+
+struct binder_stats {
+	atomic_t br[21];
+	atomic_t bc[19];
+	atomic_t obj_created[7];
+	atomic_t obj_deleted[7];
+};
+
+struct binder_priority {
+	unsigned int sched_policy;
+	int prio;
+};
+
+struct binder_lru_page;
+
+struct binder_alloc {
+	spinlock_t lock;
+	struct vm_area_struct *vma;
+	struct mm_struct *mm;
+	unsigned long buffer;
+	struct list_head buffers;
+	struct rb_root free_buffers;
+	struct rb_root allocated_buffers;
+	size_t free_async_space;
+	struct binder_lru_page *pages;
+	size_t buffer_size;
+	int pid;
+	size_t pages_high;
+	bool oneway_spam_detected;
+	u64 android_oem_data1;
+};
+
+struct binder_proc {
+	struct hlist_node proc_node;
+	struct rb_root threads;
+	struct rb_root nodes;
+	struct rb_root refs_by_desc;
+	struct rb_root refs_by_node;
+	struct list_head waiting_threads;
+	int pid;
+	struct task_struct *tsk;
+	const struct cred *cred;
+	struct hlist_node deferred_work_node;
+	int deferred_work;
+	int outstanding_txns;
+	bool is_dead;
+	bool is_frozen;
+	bool sync_recv;
+	bool async_recv;
+	wait_queue_head_t freeze_wait;
+	struct list_head todo;
+	struct binder_stats stats;
+	struct list_head delivered_death;
+	u32 max_threads;
+	int requested_threads;
+	int requested_threads_started;
+	int tmp_ref;
+	struct binder_priority default_priority;
+	struct dentry *debugfs_entry;
+	struct binder_alloc alloc;
+	struct binder_context *context;
+	spinlock_t inner_lock;
+	spinlock_t outer_lock;
+	struct dentry *binderfs_entry;
+	bool oneway_spam_detection_enabled;
+	u64 android_oem_data1;
+};
+
+struct binder_lru_page {
+	struct list_head lru;
+	struct page *page_ptr;
+	struct binder_alloc *alloc;
+};
+
+struct binder_debugfs_entry {
+	const char *name;
+	umode_t mode;
+	const struct file_operations *fops;
+	void *data;
+};
+
+typedef void (*btf_trace_binder_ioctl)(void *, unsigned int, unsigned long);
+
+typedef void (*btf_trace_binder_lock)(void *, const char *);
+
+typedef void (*btf_trace_binder_locked)(void *, const char *);
+
+typedef void (*btf_trace_binder_unlock)(void *, const char *);
+
+typedef void (*btf_trace_binder_ioctl_done)(void *, int);
+
+typedef void (*btf_trace_binder_write_done)(void *, int);
+
+typedef void (*btf_trace_binder_read_done)(void *, int);
+
+typedef void (*btf_trace_binder_set_priority)(void *, int, int, unsigned int, unsigned int, unsigned int);
+
+typedef void (*btf_trace_binder_wait_for_work)(void *, bool, bool, bool);
+
+struct binder_transaction;
+
+typedef void (*btf_trace_binder_txn_latency_free)(void *, struct binder_transaction *, int, int, int, int);
+
+struct binder_thread;
+
+struct binder_buffer;
+
+struct binder_transaction {
+	int debug_id;
+	struct binder_work work;
+	struct binder_thread *from;
+	pid_t from_pid;
+	pid_t from_tid;
+	struct binder_transaction *from_parent;
+	struct binder_proc *to_proc;
+	struct binder_thread *to_thread;
+	struct binder_transaction *to_parent;
+	unsigned int need_reply: 1;
+	struct binder_buffer *buffer;
+	unsigned int code;
+	unsigned int flags;
+	struct binder_priority priority;
+	struct binder_priority saved_priority;
+	bool set_priority_called;
+	bool is_nested;
+	kuid_t sender_euid;
+	ktime_t start_time;
+	struct list_head fd_fixups;
+	binder_uintptr_t security_ctx;
+	spinlock_t lock;
+	u64 android_vendor_data1;
+	u64 android_oem_data1;
+};
+
+struct binder_error {
+	struct binder_work work;
+	uint32_t cmd;
+};
+
+struct binder_extended_error {
+	__u32 id;
+	__u32 command;
+	__s32 param;
+};
+
+enum binder_prio_state {
+	BINDER_PRIO_SET = 0,
+	BINDER_PRIO_PENDING = 1,
+	BINDER_PRIO_ABORT = 2,
+};
+
+struct binder_thread {
+	struct binder_proc *proc;
+	struct rb_node rb_node;
+	struct list_head waiting_thread_node;
+	int pid;
+	int looper;
+	bool looper_need_return;
+	struct binder_transaction *transaction_stack;
+	struct list_head todo;
+	bool process_todo;
+	struct binder_error return_error;
+	struct binder_error reply_error;
+	struct binder_extended_error ee;
+	wait_queue_head_t wait;
+	struct binder_stats stats;
+	atomic_t tmp_ref;
+	bool is_dead;
+	struct task_struct *task;
+	spinlock_t prio_lock;
+	struct binder_priority prio_next;
+	enum binder_prio_state prio_state;
+};
+
+struct binder_buffer {
+	struct list_head entry;
+	struct rb_node rb_node;
+	unsigned int free: 1;
+	unsigned int clear_on_free: 1;
+	unsigned int allow_user_free: 1;
+	unsigned int async_transaction: 1;
+	unsigned int oneway_spam_suspect: 1;
+	unsigned int debug_id: 27;
+	struct binder_transaction *transaction;
+	struct binder_node *target_node;
+	size_t data_size;
+	size_t offsets_size;
+	size_t extra_buffers_size;
+	unsigned long user_data;
+	int pid;
+};
+
+typedef void (*btf_trace_binder_transaction)(void *, bool, struct binder_transaction *, struct binder_node *);
+
+typedef void (*btf_trace_binder_transaction_received)(void *, struct binder_transaction *);
+
+struct binder_ref_data;
+
+typedef void (*btf_trace_binder_transaction_node_to_ref)(void *, struct binder_transaction *, struct binder_node *, struct binder_ref_data *);
+
+struct binder_ref_data {
+	int debug_id;
+	uint32_t desc;
+	int strong;
+	int weak;
+};
+
+typedef void (*btf_trace_binder_transaction_ref_to_node)(void *, struct binder_transaction *, struct binder_node *, struct binder_ref_data *);
+
+typedef void (*btf_trace_binder_transaction_ref_to_ref)(void *, struct binder_transaction *, struct binder_node *, struct binder_ref_data *, struct binder_ref_data *);
+
+typedef void (*btf_trace_binder_transaction_fd_send)(void *, struct binder_transaction *, int, size_t);
+
+typedef void (*btf_trace_binder_transaction_fd_recv)(void *, struct binder_transaction *, int, size_t);
+
+typedef void (*btf_trace_binder_transaction_alloc_buf)(void *, struct binder_buffer *);
+
+typedef void (*btf_trace_binder_transaction_buffer_release)(void *, struct binder_buffer *);
+
+typedef void (*btf_trace_binder_transaction_failed_buffer_release)(void *, struct binder_buffer *);
+
+typedef void (*btf_trace_binder_transaction_update_buffer_release)(void *, struct binder_buffer *);
+
+typedef void (*btf_trace_binder_update_page_range)(void *, struct binder_alloc *, bool, unsigned long, unsigned long);
+
+typedef void (*btf_trace_binder_alloc_lru_start)(void *, const struct binder_alloc *, size_t);
+
+typedef void (*btf_trace_binder_alloc_lru_end)(void *, const struct binder_alloc *, size_t);
+
+typedef void (*btf_trace_binder_free_lru_start)(void *, const struct binder_alloc *, size_t);
+
+typedef void (*btf_trace_binder_free_lru_end)(void *, const struct binder_alloc *, size_t);
+
+typedef void (*btf_trace_binder_alloc_page_start)(void *, const struct binder_alloc *, size_t);
+
+typedef void (*btf_trace_binder_alloc_page_end)(void *, const struct binder_alloc *, size_t);
+
+typedef void (*btf_trace_binder_unmap_user_start)(void *, const struct binder_alloc *, size_t);
+
+typedef void (*btf_trace_binder_unmap_user_end)(void *, const struct binder_alloc *, size_t);
+
+typedef void (*btf_trace_binder_unmap_kernel_start)(void *, const struct binder_alloc *, size_t);
+
+typedef void (*btf_trace_binder_unmap_kernel_end)(void *, const struct binder_alloc *, size_t);
+
+typedef void (*btf_trace_binder_command)(void *, uint32_t);
+
+typedef void (*btf_trace_binder_return)(void *, uint32_t);
+
+struct binder_transaction_log_entry {
+	int debug_id;
+	int debug_id_done;
+	int call_type;
+	int from_proc;
+	int from_thread;
+	int target_handle;
+	int to_proc;
+	int to_thread;
+	int to_node;
+	int data_size;
+	int offsets_size;
+	int return_error_line;
+	uint32_t return_error;
+	uint32_t return_error_param;
+	char context_name[256];
+};
+
+struct binder_transaction_log {
+	atomic_t cur;
+	bool full;
+	struct binder_transaction_log_entry entry[32];
+};
+
+enum {
+	BINDER_LOOPER_STATE_REGISTERED = 1,
+	BINDER_LOOPER_STATE_ENTERED = 2,
+	BINDER_LOOPER_STATE_EXITED = 4,
+	BINDER_LOOPER_STATE_INVALID = 8,
+	BINDER_LOOPER_STATE_WAITING = 16,
+	BINDER_LOOPER_STATE_POLL = 32,
+};
+
+enum binder_stat_types {
+	BINDER_STAT_PROC = 0,
+	BINDER_STAT_THREAD = 1,
+	BINDER_STAT_NODE = 2,
+	BINDER_STAT_REF = 3,
+	BINDER_STAT_DEATH = 4,
+	BINDER_STAT_TRANSACTION = 5,
+	BINDER_STAT_TRANSACTION_COMPLETE = 6,
+	BINDER_STAT_COUNT = 7,
+};
+
+enum binder_driver_return_protocol {
+	BR_ERROR = 2147774976,
+	BR_OK = 29185,
+	BR_TRANSACTION_SEC_CTX = 2152231426,
+	BR_TRANSACTION = 2151707138,
+	BR_REPLY = 2151707139,
+	BR_ACQUIRE_RESULT = 2147774980,
+	BR_DEAD_REPLY = 29189,
+	BR_TRANSACTION_COMPLETE = 29190,
+	BR_INCREFS = 2148561415,
+	BR_ACQUIRE = 2148561416,
+	BR_RELEASE = 2148561417,
+	BR_DECREFS = 2148561418,
+	BR_ATTEMPT_ACQUIRE = 2149085707,
+	BR_NOOP = 29196,
+	BR_SPAWN_LOOPER = 29197,
+	BR_FINISHED = 29198,
+	BR_DEAD_BINDER = 2148037135,
+	BR_CLEAR_DEATH_NOTIFICATION_DONE = 2148037136,
+	BR_FAILED_REPLY = 29201,
+	BR_FROZEN_REPLY = 29202,
+	BR_ONEWAY_SPAM_SUSPECT = 29203,
+	BR_TRANSACTION_PENDING_FROZEN = 29204,
+};
+
+enum {
+	BINDER_DEBUG_USER_ERROR = 1,
+	BINDER_DEBUG_FAILED_TRANSACTION = 2,
+	BINDER_DEBUG_DEAD_TRANSACTION = 4,
+	BINDER_DEBUG_OPEN_CLOSE = 8,
+	BINDER_DEBUG_DEAD_BINDER = 16,
+	BINDER_DEBUG_DEATH_NOTIFICATION = 32,
+	BINDER_DEBUG_READ_WRITE = 64,
+	BINDER_DEBUG_USER_REFS = 128,
+	BINDER_DEBUG_THREADS = 256,
+	BINDER_DEBUG_TRANSACTION = 512,
+	BINDER_DEBUG_TRANSACTION_COMPLETE = 1024,
+	BINDER_DEBUG_FREE_BUFFER = 2048,
+	BINDER_DEBUG_INTERNAL_REFS = 4096,
+	BINDER_DEBUG_PRIORITY_CAP = 8192,
+	BINDER_DEBUG_SPINLOCKS = 16384,
+};
+
+enum {
+	BINDER_WRITE_READ = 3224396289,
+	BINDER_SET_IDLE_TIMEOUT = 1074291203,
+	BINDER_SET_MAX_THREADS = 1074029061,
+	BINDER_SET_IDLE_PRIORITY = 1074029062,
+	BINDER_SET_CONTEXT_MGR = 1074029063,
+	BINDER_THREAD_EXIT = 1074029064,
+	BINDER_VERSION = 3221512713,
+	BINDER_GET_NODE_DEBUG_INFO = 3222823435,
+	BINDER_GET_NODE_INFO_FOR_REF = 3222823436,
+	BINDER_SET_CONTEXT_MGR_EXT = 1075339789,
+	BINDER_FREEZE = 1074553358,
+	BINDER_GET_FROZEN_INFO = 3222037007,
+	BINDER_ENABLE_ONEWAY_SPAM_DETECTION = 1074029072,
+	BINDER_GET_EXTENDED_ERROR = 3222037009,
+};
+
+enum binder_driver_command_protocol {
+	BC_TRANSACTION = 1077961472,
+	BC_REPLY = 1077961473,
+	BC_ACQUIRE_RESULT = 1074029314,
+	BC_FREE_BUFFER = 1074291459,
+	BC_INCREFS = 1074029316,
+	BC_ACQUIRE = 1074029317,
+	BC_RELEASE = 1074029318,
+	BC_DECREFS = 1074029319,
+	BC_INCREFS_DONE = 1074815752,
+	BC_ACQUIRE_DONE = 1074815753,
+	BC_ATTEMPT_ACQUIRE = 1074291466,
+	BC_REGISTER_LOOPER = 25355,
+	BC_ENTER_LOOPER = 25356,
+	BC_EXIT_LOOPER = 25357,
+	BC_REQUEST_DEATH_NOTIFICATION = 1074553614,
+	BC_CLEAR_DEATH_NOTIFICATION = 1074553615,
+	BC_DEAD_BINDER_DONE = 1074291472,
+	BC_TRANSACTION_SG = 1078485777,
+	BC_REPLY_SG = 1078485778,
+};
+
+enum {
+	BINDER_TYPE_BINDER = 1935813253,
+	BINDER_TYPE_WEAK_BINDER = 2002922117,
+	BINDER_TYPE_HANDLE = 1936206469,
+	BINDER_TYPE_WEAK_HANDLE = 2003315333,
+	BINDER_TYPE_FD = 1717840517,
+	BINDER_TYPE_FDA = 1717854597,
+	BINDER_TYPE_PTR = 1886661253,
+};
+
+enum transaction_flags {
+	TF_ONE_WAY = 1,
+	TF_ROOT_OBJECT = 4,
+	TF_STATUS_CODE = 8,
+	TF_ACCEPT_FDS = 16,
+	TF_CLEAR_BUF = 32,
+	TF_UPDATE_TXN = 64,
+};
+
+enum flat_binder_object_flags {
+	FLAT_BINDER_FLAG_PRIORITY_MASK = 255,
+	FLAT_BINDER_FLAG_ACCEPTS_FDS = 256,
+	FLAT_BINDER_FLAG_SCHED_POLICY_MASK = 1536,
+	FLAT_BINDER_FLAG_INHERIT_RT = 2048,
+	FLAT_BINDER_FLAG_TXN_SECURITY_CTX = 4096,
+};
+
+enum flat_binder_object_shifts {
+	FLAT_BINDER_FLAG_SCHED_POLICY_SHIFT = 9,
+};
+
+enum {
+	BINDER_BUFFER_FLAG_HAS_PARENT = 1,
+};
+
+enum binder_deferred_state {
+	BINDER_DEFERRED_FLUSH = 1,
+	BINDER_DEFERRED_RELEASE = 2,
+};
+
+struct binder_ref_death {
+	struct binder_work work;
+	binder_uintptr_t cookie;
+};
+
+struct binder_ref {
+	struct binder_ref_data data;
+	struct rb_node rb_node_desc;
+	struct rb_node rb_node_node;
+	struct hlist_node node_entry;
+	struct binder_proc *proc;
+	struct binder_node *node;
+	struct binder_ref_death *death;
+};
+
+struct dbitmap {
+	unsigned int nbits;
+	unsigned long *map;
+};
+
+struct binder_proc_wrap {
+	struct binder_proc proc;
+	struct dbitmap dmap;
+};
+
+struct binder_object_header {
+	__u32 type;
+};
+
+struct flat_binder_object {
+	struct binder_object_header hdr;
+	__u32 flags;
+	union {
+		binder_uintptr_t binder;
+		__u32 handle;
+	};
+	binder_uintptr_t cookie;
+};
+
+typedef __u64 binder_size_t;
+
+struct binder_fd_array_object {
+	struct binder_object_header hdr;
+	__u32 pad;
+	binder_size_t num_fds;
+	binder_size_t parent;
+	binder_size_t parent_offset;
+};
+
+struct binder_task_work_cb {
+	struct callback_head twork;
+	struct file *file;
+};
+
+struct binder_fd_object {
+	struct binder_object_header hdr;
+	__u32 pad_flags;
+	union {
+		binder_uintptr_t pad_binder;
+		__u32 fd;
+	};
+	binder_uintptr_t cookie;
+};
+
+struct binder_buffer_object {
+	struct binder_object_header hdr;
+	__u32 flags;
+	binder_uintptr_t buffer;
+	binder_size_t length;
+	binder_size_t parent;
+	binder_size_t parent_offset;
+};
+
+struct binder_ptr_fixup {
+	binder_size_t offset;
+	size_t skip_size;
+	binder_uintptr_t fixup_data;
+	struct list_head node;
+};
+
+struct binder_sg_copy {
+	binder_size_t offset;
+	const void __attribute__((btf_type_tag("user"))) *sender_uaddr;
+	size_t length;
+	struct list_head node;
+};
+
+struct binder_txn_fd_fixup {
+	struct list_head fixup_entry;
+	struct file *file;
+	size_t offset;
+	int target_fd;
+};
+
+struct trace_event_raw_binder_ioctl {
+	struct trace_entry ent;
+	unsigned int cmd;
+	unsigned long arg;
+	char __data[0];
+};
+
+struct trace_event_raw_binder_lock_class {
+	struct trace_entry ent;
+	const char *tag;
+	char __data[0];
+};
+
+struct trace_event_raw_binder_function_return_class {
+	struct trace_entry ent;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_binder_set_priority {
+	struct trace_entry ent;
+	int proc;
+	int thread;
+	unsigned int old_prio;
+	unsigned int new_prio;
+	unsigned int desired_prio;
+	char __data[0];
+};
+
+struct trace_event_raw_binder_wait_for_work {
+	struct trace_entry ent;
+	bool proc_work;
+	bool transaction_stack;
+	bool thread_todo;
+	char __data[0];
+};
+
+struct trace_event_raw_binder_txn_latency_free {
+	struct trace_entry ent;
+	int debug_id;
+	int from_proc;
+	int from_thread;
+	int to_proc;
+	int to_thread;
+	unsigned int code;
+	unsigned int flags;
+	char __data[0];
+};
+
+struct trace_event_raw_binder_transaction {
+	struct trace_entry ent;
+	int debug_id;
+	int target_node;
+	int to_proc;
+	int to_thread;
+	int reply;
+	unsigned int code;
+	unsigned int flags;
+	char __data[0];
+};
+
+struct trace_event_raw_binder_transaction_received {
+	struct trace_entry ent;
+	int debug_id;
+	char __data[0];
+};
+
+struct trace_event_raw_binder_transaction_node_to_ref {
+	struct trace_entry ent;
+	int debug_id;
+	int node_debug_id;
+	binder_uintptr_t node_ptr;
+	int ref_debug_id;
+	uint32_t ref_desc;
+	char __data[0];
+};
+
+struct trace_event_raw_binder_transaction_ref_to_node {
+	struct trace_entry ent;
+	int debug_id;
+	int ref_debug_id;
+	uint32_t ref_desc;
+	int node_debug_id;
+	binder_uintptr_t node_ptr;
+	char __data[0];
+};
+
+struct trace_event_raw_binder_transaction_ref_to_ref {
+	struct trace_entry ent;
+	int debug_id;
+	int node_debug_id;
+	int src_ref_debug_id;
+	uint32_t src_ref_desc;
+	int dest_ref_debug_id;
+	uint32_t dest_ref_desc;
+	char __data[0];
+};
+
+struct trace_event_raw_binder_transaction_fd_send {
+	struct trace_entry ent;
+	int debug_id;
+	int fd;
+	size_t offset;
+	char __data[0];
+};
+
+struct trace_event_raw_binder_transaction_fd_recv {
+	struct trace_entry ent;
+	int debug_id;
+	int fd;
+	size_t offset;
+	char __data[0];
+};
+
+struct trace_event_raw_binder_buffer_class {
+	struct trace_entry ent;
+	int debug_id;
+	size_t data_size;
+	size_t offsets_size;
+	size_t extra_buffers_size;
+	char __data[0];
+};
+
+struct trace_event_raw_binder_update_page_range {
+	struct trace_entry ent;
+	int proc;
+	bool allocate;
+	size_t offset;
+	size_t size;
+	char __data[0];
+};
+
+struct trace_event_raw_binder_lru_page_class {
+	struct trace_entry ent;
+	int proc;
+	size_t page_index;
+	char __data[0];
+};
+
+struct trace_event_raw_binder_command {
+	struct trace_entry ent;
+	uint32_t cmd;
+	char __data[0];
+};
+
+struct trace_event_raw_binder_return {
+	struct trace_entry ent;
+	uint32_t cmd;
+	char __data[0];
+};
+
+struct binder_freeze_info {
+	__u32 pid;
+	__u32 enable;
+	__u32 timeout_ms;
+};
+
+struct binder_transaction_data {
+	union {
+		__u32 handle;
+		binder_uintptr_t ptr;
+	} target;
+	binder_uintptr_t cookie;
+	__u32 code;
+	__u32 flags;
+	__kernel_pid_t sender_pid;
+	__kernel_uid32_t sender_euid;
+	binder_size_t data_size;
+	binder_size_t offsets_size;
+	union {
+		struct {
+			binder_uintptr_t buffer;
+			binder_uintptr_t offsets;
+		} ptr;
+		__u8 buf[8];
+	} data;
+};
+
+struct binder_transaction_data_sg {
+	struct binder_transaction_data transaction_data;
+	binder_size_t buffers_size;
+};
+
+struct binder_transaction_data_secctx {
+	struct binder_transaction_data transaction_data;
+	binder_uintptr_t secctx;
+};
+
+struct binder_object {
+	union {
+		struct binder_object_header hdr;
+		struct flat_binder_object fbo;
+		struct binder_fd_object fdo;
+		struct binder_buffer_object bbo;
+		struct binder_fd_array_object fdao;
+	};
+};
+
+struct binder_node_info_for_ref {
+	__u32 handle;
+	__u32 strong_count;
+	__u32 weak_count;
+	__u32 reserved1;
+	__u32 reserved2;
+	__u32 reserved3;
+};
+
+struct binder_node_debug_info {
+	binder_uintptr_t ptr;
+	binder_uintptr_t cookie;
+	__u32 has_strong_ref;
+	__u32 has_weak_ref;
+};
+
+struct binder_frozen_status_info {
+	__u32 pid;
+	__u32 sync_recv;
+	__u32 async_recv;
+};
+
+struct binder_version {
+	__s32 protocol_version;
+};
+
+struct trace_event_data_offsets_binder_ioctl {};
+
+struct trace_event_data_offsets_binder_lock_class {};
+
+struct trace_event_data_offsets_binder_function_return_class {};
+
+struct trace_event_data_offsets_binder_set_priority {};
+
+struct trace_event_data_offsets_binder_wait_for_work {};
+
+struct trace_event_data_offsets_binder_txn_latency_free {};
+
+struct trace_event_data_offsets_binder_transaction {};
+
+struct trace_event_data_offsets_binder_transaction_received {};
+
+struct trace_event_data_offsets_binder_transaction_node_to_ref {};
+
+struct trace_event_data_offsets_binder_transaction_ref_to_node {};
+
+struct trace_event_data_offsets_binder_transaction_ref_to_ref {};
+
+struct trace_event_data_offsets_binder_transaction_fd_send {};
+
+struct trace_event_data_offsets_binder_transaction_fd_recv {};
+
+struct trace_event_data_offsets_binder_buffer_class {};
+
+struct trace_event_data_offsets_binder_update_page_range {};
+
+struct trace_event_data_offsets_binder_lru_page_class {};
+
+struct trace_event_data_offsets_binder_command {};
+
+struct trace_event_data_offsets_binder_return {};
+
+struct binder_write_read {
+	binder_size_t write_size;
+	binder_size_t write_consumed;
+	binder_uintptr_t write_buffer;
+	binder_size_t read_size;
+	binder_size_t read_consumed;
+	binder_uintptr_t read_buffer;
+};
+
+enum {
+	BINDER_DEBUG_USER_ERROR___2 = 1,
+	BINDER_DEBUG_OPEN_CLOSE___2 = 2,
+	BINDER_DEBUG_BUFFER_ALLOC = 4,
+	BINDER_DEBUG_BUFFER_ALLOC_ASYNC = 8,
+};
+
+struct ads_entry {
+	char *name;
+	void *addr;
+};
+
+enum android_debug_symbol {
+	ADS_PER_CPU_START = 0,
+	ADS_PER_CPU_END = 1,
+	ADS_TEXT = 2,
+	ADS_SEND = 3,
+	ADS_MEM_BLOCK = 4,
+	ADS_INIT_MM = 5,
+	ADS_ITERATE_SUPERS = 6,
+	ADS_DROP_SLAB = 7,
+	ADS_FREE_PAGES = 8,
+	ADS_COMPACT_PAGES = 9,
+	ADS_SHOW_MEM = 10,
+	ADS_TOTAL_CMA = 11,
+	ADS_SLAB_CACHES = 12,
+	ADS_SLAB_MUTEX = 13,
+	ADS_END = 14,
+};
+
+enum android_debug_per_cpu_symbol {
+	ADS_IRQ_STACK_PTR = 0,
+	ADS_DEBUG_PER_CPU_END = 1,
+};
+
+struct packet_type {
+	__be16 type;
+	bool ignore_outgoing;
+	struct net_device *dev;
+	netdevice_tracker dev_tracker;
+	int (*func)(struct sk_buff *, struct net_device *, struct packet_type *, struct net_device *);
+	void (*list_func)(struct list_head *, struct packet_type *, struct net_device *);
+	bool (*id_match)(struct packet_type *, struct sock *);
+	struct net *af_packet_net;
+	void *af_packet_priv;
+	struct list_head list;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct gzvm_vcpu;
+
+struct kernel_info {
+	__u8 enabled_all;
+	__u8 enabled_base_relative;
+	__u8 enabled_absolute_percpu;
+	__u8 enabled_cfi_clang;
+	__u32 num_syms;
+	__u16 name_len;
+	__u16 bit_per_long;
+	__u16 module_name_len;
+	__u16 symbol_len;
+	__u64 _addresses_pa;
+	__u64 _relative_pa;
+	__u64 _stext_pa;
+	__u64 _etext_pa;
+	__u64 _sinittext_pa;
+	__u64 _einittext_pa;
+	__u64 _end_pa;
+	__u64 _offsets_pa;
+	__u64 _names_pa;
+	__u64 _token_table_pa;
+	__u64 _token_index_pa;
+	__u64 _markers_pa;
+	__u32 thread_size;
+	__u64 swapper_pg_dir_pa;
+	__u8 last_uts_release[64];
+	__u8 build_info[256];
+	__u32 enabled_modules_tree_lookup;
+	__u32 mod_mem_offset;
+	__u32 mod_kallsyms_offset;
+} __attribute__((packed));
+
+struct kernel_all_info {
+	__u32 magic_number;
+	__u32 combined_checksum;
+	struct kernel_info info;
+};
+
+enum {
+	NVMEM_ADD = 1,
+	NVMEM_REMOVE = 2,
+	NVMEM_CELL_ADD = 3,
+	NVMEM_CELL_REMOVE = 4,
+	NVMEM_LAYOUT_ADD = 5,
+	NVMEM_LAYOUT_REMOVE = 6,
+};
+
+struct nvmem_device {
+	struct module *owner;
+	struct device dev;
+	int stride;
+	int word_size;
+	int id;
+	struct kref refcnt;
+	size_t size;
+	bool read_only;
+	bool root_only;
+	int flags;
+	enum nvmem_type type;
+	struct bin_attribute eeprom;
+	struct device *base_dev;
+	struct list_head cells;
+	const struct nvmem_keepout *keepout;
+	unsigned int nkeepout;
+	nvmem_reg_read_t reg_read;
+	nvmem_reg_write_t reg_write;
+	struct gpio_desc *wp_gpio;
+	struct nvmem_layout *layout;
+	void *priv;
+};
+
+struct nvmem_cell_table {
+	const char *nvmem_name;
+	const struct nvmem_cell_info *cells;
+	size_t ncells;
+	struct list_head node;
+};
+
+struct nvmem_cell_entry {
+	const char *name;
+	int offset;
+	size_t raw_len;
+	int bytes;
+	int bit_offset;
+	int nbits;
+	nvmem_cell_post_process_t read_post_process;
+	void *priv;
+	struct device_node *np;
+	struct nvmem_device *nvmem;
+	struct list_head node;
+};
+
+struct nvmem_cell {
+	struct nvmem_cell_entry *entry;
+	const char *id;
+	int index;
+};
+
+enum gnss_type {
+	GNSS_TYPE_NMEA = 0,
+	GNSS_TYPE_SIRF = 1,
+	GNSS_TYPE_UBX = 2,
+	GNSS_TYPE_MTK = 3,
+	GNSS_TYPE_COUNT = 4,
+};
+
+struct gnss_operations;
+
+struct gnss_device {
+	struct device dev;
+	struct cdev cdev;
+	int id;
+	enum gnss_type type;
+	unsigned long flags;
+	struct rw_semaphore rwsem;
+	const struct gnss_operations *ops;
+	unsigned int count;
+	unsigned int disconnected: 1;
+	struct mutex read_mutex;
+	struct kfifo read_fifo;
+	wait_queue_head_t read_queue;
+	struct mutex write_mutex;
+	char *write_buf;
+};
+
+struct gnss_operations {
+	int (*open)(struct gnss_device *);
+	void (*close)(struct gnss_device *);
+	int (*write_raw)(struct gnss_device *, const unsigned char *, size_t);
+};
+
+typedef void (*btf_trace_icc_set_bw)(void *, struct icc_path *, struct icc_node *, int, u32, u32);
+
+struct icc_req {
+	struct hlist_node req_node;
+	struct icc_node *node;
+	struct device *dev;
+	bool enabled;
+	u32 tag;
+	u32 avg_bw;
+	u32 peak_bw;
+};
+
+struct icc_path {
+	const char *name;
+	size_t num_nodes;
+	struct icc_req reqs[0];
+};
+
+typedef void (*btf_trace_icc_set_bw_end)(void *, struct icc_path *, int);
+
+struct trace_event_raw_icc_set_bw {
+	struct trace_entry ent;
+	u32 __data_loc_path_name;
+	u32 __data_loc_dev;
+	u32 __data_loc_node_name;
+	u32 avg_bw;
+	u32 peak_bw;
+	u32 node_avg_bw;
+	u32 node_peak_bw;
+	char __data[0];
+};
+
+struct trace_event_raw_icc_set_bw_end {
+	struct trace_entry ent;
+	u32 __data_loc_path_name;
+	u32 __data_loc_dev;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_icc_set_bw {
+	u32 path_name;
+	u32 dev;
+	u32 node_name;
+};
+
+struct trace_event_data_offsets_icc_set_bw_end {
+	u32 path_name;
+	u32 dev;
+};
+
+struct icc_onecell_data {
+	unsigned int num_nodes;
+	struct icc_node *nodes[0];
+};
+
+struct icc_bulk_data {
+	struct icc_path *path;
+	const char *name;
+	u32 avg_bw;
+	u32 peak_bw;
+};
+
+struct icc_bulk_devres {
+	struct icc_bulk_data *paths;
+	int num_paths;
+};
+
+struct debugfs_path {
+	const char *src;
+	const char *dst;
+	struct icc_path *path;
+	struct list_head list;
+};
+
+struct snd_minor {
+	int type;
+	int card;
+	int device;
+	const struct file_operations *f_ops;
+	void *private_data;
+	struct device *dev;
+	struct snd_card *card_ptr;
+	u64 android_kabi_reserved1;
+};
+
+enum {
+	SNDRV_DEVICE_TYPE_CONTROL = 0,
+	SNDRV_DEVICE_TYPE_SEQUENCER = 1,
+	SNDRV_DEVICE_TYPE_TIMER = 2,
+	SNDRV_DEVICE_TYPE_HWDEP = 3,
+	SNDRV_DEVICE_TYPE_RAWMIDI = 4,
+	SNDRV_DEVICE_TYPE_PCM_PLAYBACK = 5,
+	SNDRV_DEVICE_TYPE_PCM_CAPTURE = 6,
+	SNDRV_DEVICE_TYPE_COMPRESS = 7,
+};
+
+struct snd_monitor_file {
+	struct file *file;
+	const struct file_operations *disconnected_f_op;
+	struct list_head shutdown_list;
+	struct list_head list;
+};
+
+struct snd_ctl_layer_ops {
+	struct snd_ctl_layer_ops *next;
+	const char *module_name;
+	void (*lregister)(struct snd_card *);
+	void (*ldisconnect)(struct snd_card *);
+	void (*lnotify)(struct snd_card *, unsigned int, struct snd_kcontrol *, unsigned int);
+};
+
+enum snd_ctl_add_mode {
+	CTL_ADD_EXCLUSIVE = 0,
+	CTL_REPLACE = 1,
+	CTL_ADD_ON_REPLACE = 2,
+};
+
+enum sndrv_ctl_event_type {
+	SNDRV_CTL_EVENT_ELEM = 0,
+	SNDRV_CTL_EVENT_LAST = 0,
+};
+
+enum {
+	SNDRV_CTL_TLV_OP_READ = 0,
+	SNDRV_CTL_TLV_OP_WRITE = 1,
+	SNDRV_CTL_TLV_OP_CMD = -1,
+};
+
+enum {
+	SNDRV_CTL_IOCTL_ELEM_LIST32 = 3225965840,
+	SNDRV_CTL_IOCTL_ELEM_INFO32 = 3239073041,
+	SNDRV_CTL_IOCTL_ELEM_READ32 = 3267908882,
+	SNDRV_CTL_IOCTL_ELEM_WRITE32 = 3267908883,
+	SNDRV_CTL_IOCTL_ELEM_ADD32 = 3239073047,
+	SNDRV_CTL_IOCTL_ELEM_REPLACE32 = 3239073048,
+};
+
+enum {
+	SND_CTL_SUBDEV_PCM = 0,
+	SND_CTL_SUBDEV_RAWMIDI = 1,
+	SND_CTL_SUBDEV_ITEMS = 2,
+};
+
+struct snd_kctl_event {
+	struct list_head list;
+	struct snd_ctl_elem_id id;
+	unsigned int mask;
+};
+
+typedef int (*snd_kctl_ioctl_func_t)(struct snd_card *, struct snd_ctl_file *, unsigned int, unsigned long);
+
+struct snd_kctl_ioctl {
+	struct list_head list;
+	snd_kctl_ioctl_func_t fioctl;
+};
+
+struct snd_ctl_elem_list {
+	unsigned int offset;
+	unsigned int space;
+	unsigned int used;
+	unsigned int count;
+	struct snd_ctl_elem_id __attribute__((btf_type_tag("user"))) *pids;
+	unsigned char reserved[50];
+};
+
+struct snd_ctl_card_info {
+	int card;
+	int pad;
+	unsigned char id[16];
+	unsigned char driver[16];
+	unsigned char name[32];
+	unsigned char longname[80];
+	unsigned char reserved_[16];
+	unsigned char mixername[80];
+	unsigned char components[128];
+};
+
+struct snd_ctl_elem_info32 {
+	struct snd_ctl_elem_id id;
+	s32 type;
+	u32 access;
+	u32 count;
+	s32 owner;
+	union {
+		struct {
+			s32 min;
+			s32 max;
+			s32 step;
+		} integer;
+		struct {
+			u64 min;
+			u64 max;
+			u64 step;
+		} integer64;
+		struct {
+			u32 items;
+			u32 item;
+			char name[64];
+			u64 names_ptr;
+			u32 names_length;
+		} enumerated;
+		unsigned char reserved[128];
+	} value;
+	unsigned char reserved[64];
+};
+
+struct snd_ctl_elem_value32 {
+	struct snd_ctl_elem_id id;
+	unsigned int indirect;
+	union {
+		s32 integer[128];
+		unsigned char data[512];
+		s64 integer64[64];
+	} value;
+	unsigned char reserved[128];
+};
+
+struct snd_ctl_elem_list32 {
+	u32 offset;
+	u32 space;
+	u32 used;
+	u32 count;
+	u32 pids;
+	unsigned char reserved[50];
+};
+
+struct user_element {
+	struct snd_ctl_elem_info info;
+	struct snd_card *card;
+	char *elem_data;
+	unsigned long elem_data_size;
+	void *tlv_data;
+	unsigned long tlv_data_size;
+	void *priv_data;
+};
+
+struct snd_ctl_event {
+	int type;
+	union {
+		struct {
+			unsigned int mask;
+			struct snd_ctl_elem_id id;
+		} elem;
+		unsigned char data8[60];
+	} data;
+};
+
+struct snd_ctl_tlv {
+	unsigned int numid;
+	unsigned int length;
+	unsigned int tlv[0];
+};
+
+struct snd_fasync {
+	struct fasync_struct *fasync;
+	int signal;
+	int poll;
+	int on;
+	struct list_head list;
+};
+
+struct snd_pci_quirk {
+	unsigned short subvendor;
+	unsigned short subdevice;
+	unsigned short subdevice_mask;
+	int value;
+};
+
+struct snd_info_private_data {
+	struct snd_info_buffer *rbuffer;
+	struct snd_info_buffer *wbuffer;
+	struct snd_info_entry *entry;
+	void *file_private_data;
+};
+
+struct link_ctl_info {
+	snd_ctl_elem_type_t type;
+	int count;
+	int min_val;
+	int max_val;
+};
+
+struct link_master;
+
+struct link_follower {
+	struct list_head list;
+	struct link_master *master;
+	struct link_ctl_info info;
+	int vals[2];
+	unsigned int flags;
+	struct snd_kcontrol *kctl;
+	struct snd_kcontrol follower;
+};
+
+struct link_master {
+	struct list_head followers;
+	struct link_ctl_info info;
+	int val;
+	unsigned int tlv[4];
+	void (*hook)(void *, int);
+	void *hook_private_data;
+};
+
+enum snd_jack_types {
+	SND_JACK_HEADPHONE = 1,
+	SND_JACK_MICROPHONE = 2,
+	SND_JACK_HEADSET = 3,
+	SND_JACK_LINEOUT = 4,
+	SND_JACK_MECHANICAL = 8,
+	SND_JACK_VIDEOOUT = 16,
+	SND_JACK_AVOUT = 20,
+	SND_JACK_LINEIN = 32,
+	SND_JACK_BTN_0 = 16384,
+	SND_JACK_BTN_1 = 8192,
+	SND_JACK_BTN_2 = 4096,
+	SND_JACK_BTN_3 = 2048,
+	SND_JACK_BTN_4 = 1024,
+	SND_JACK_BTN_5 = 512,
+};
+
+struct snd_jack;
+
+struct snd_jack_kctl {
+	struct snd_kcontrol *kctl;
+	struct list_head list;
+	unsigned int mask_bits;
+	struct snd_jack *jack;
+	bool sw_inject_enable;
+};
+
+struct snd_jack {
+	struct list_head kctl_list;
+	struct snd_card *card;
+	const char *id;
+	struct input_dev *input_dev;
+	struct mutex input_dev_lock;
+	int registered;
+	int type;
+	char name[100];
+	unsigned int key[6];
+	int hw_status_cache;
+	void *private_data;
+	void (*private_free)(struct snd_jack *);
+	u64 android_kabi_reserved1;
+};
+
+enum {
+	SNDRV_HWDEP_IOCTL_DSP_LOAD32 = 1079003139,
+};
+
+struct snd_hwdep;
+
+struct snd_hwdep_dsp_status;
+
+struct snd_hwdep_dsp_image;
+
+struct snd_hwdep_ops {
+	long long (*llseek)(struct snd_hwdep *, struct file *, long long, int);
+	long (*read)(struct snd_hwdep *, char __attribute__((btf_type_tag("user"))) *, long, loff_t *);
+	long (*write)(struct snd_hwdep *, const char __attribute__((btf_type_tag("user"))) *, long, loff_t *);
+	int (*open)(struct snd_hwdep *, struct file *);
+	int (*release)(struct snd_hwdep *, struct file *);
+	__poll_t (*poll)(struct snd_hwdep *, struct file *, poll_table *);
+	int (*ioctl)(struct snd_hwdep *, struct file *, unsigned int, unsigned long);
+	int (*ioctl_compat)(struct snd_hwdep *, struct file *, unsigned int, unsigned long);
+	int (*mmap)(struct snd_hwdep *, struct file *, struct vm_area_struct *);
+	int (*dsp_status)(struct snd_hwdep *, struct snd_hwdep_dsp_status *);
+	int (*dsp_load)(struct snd_hwdep *, struct snd_hwdep_dsp_image *);
+	u64 android_kabi_reserved1;
+};
+
+struct snd_hwdep {
+	struct snd_card *card;
+	struct list_head list;
+	int device;
+	char id[32];
+	char name[80];
+	int iface;
+	struct snd_hwdep_ops ops;
+	wait_queue_head_t open_wait;
+	void *private_data;
+	void (*private_free)(struct snd_hwdep *);
+	struct device *dev;
+	struct mutex open_mutex;
+	int used;
+	unsigned int dsp_loaded;
+	unsigned int exclusive: 1;
+	u64 android_kabi_reserved1;
+};
+
+struct snd_hwdep_dsp_status {
+	unsigned int version;
+	unsigned char id[32];
+	unsigned int num_dsps;
+	unsigned int dsp_loaded;
+	unsigned int chip_ready;
+	unsigned char reserved[16];
+};
+
+struct snd_hwdep_dsp_image {
+	unsigned int index;
+	unsigned char name[64];
+	unsigned char __attribute__((btf_type_tag("user"))) *image;
+	size_t length;
+	unsigned long driver_data;
+};
+
+struct snd_hwdep_info {
+	unsigned int device;
+	int card;
+	unsigned char id[64];
+	unsigned char name[80];
+	int iface;
+	unsigned char reserved[64];
+};
+
+struct snd_hwdep_dsp_image32 {
+	u32 index;
+	unsigned char name[64];
+	u32 image;
+	u32 length;
+	u32 driver_data;
+};
+
+struct snd_timer_hardware {
+	unsigned int flags;
+	unsigned long resolution;
+	unsigned long resolution_min;
+	unsigned long resolution_max;
+	unsigned long ticks;
+	int (*open)(struct snd_timer *);
+	int (*close)(struct snd_timer *);
+	unsigned long (*c_resolution)(struct snd_timer *);
+	int (*start)(struct snd_timer *);
+	int (*stop)(struct snd_timer *);
+	int (*set_period)(struct snd_timer *, unsigned long, unsigned long);
+	int (*precise_resolution)(struct snd_timer *, unsigned long *, unsigned long *);
+	u64 android_kabi_reserved1;
+};
+
+struct snd_timer {
+	int tmr_class;
+	struct snd_card *card;
+	struct module *module;
+	int tmr_device;
+	int tmr_subdevice;
+	char id[64];
+	char name[80];
+	unsigned int flags;
+	int running;
+	unsigned long sticks;
+	void *private_data;
+	void (*private_free)(struct snd_timer *);
+	struct snd_timer_hardware hw;
+	spinlock_t lock;
+	struct list_head device_list;
+	struct list_head open_list_head;
+	struct list_head active_list_head;
+	struct list_head ack_list_head;
+	struct list_head sack_list_head;
+	struct work_struct task_work;
+	int max_instances;
+	int num_instances;
+	u64 android_kabi_reserved1;
+};
+
+enum {
+	SNDRV_TIMER_CLASS_NONE = -1,
+	SNDRV_TIMER_CLASS_SLAVE = 0,
+	SNDRV_TIMER_CLASS_GLOBAL = 1,
+	SNDRV_TIMER_CLASS_CARD = 2,
+	SNDRV_TIMER_CLASS_PCM = 3,
+	SNDRV_TIMER_CLASS_LAST = 3,
+};
+
+enum {
+	SNDRV_TIMER_SCLASS_NONE = 0,
+	SNDRV_TIMER_SCLASS_APPLICATION = 1,
+	SNDRV_TIMER_SCLASS_SEQUENCER = 2,
+	SNDRV_TIMER_SCLASS_OSS_SEQUENCER = 3,
+	SNDRV_TIMER_SCLASS_LAST = 3,
+};
+
+enum {
+	SNDRV_TIMER_EVENT_RESOLUTION = 0,
+	SNDRV_TIMER_EVENT_TICK = 1,
+	SNDRV_TIMER_EVENT_START = 2,
+	SNDRV_TIMER_EVENT_STOP = 3,
+	SNDRV_TIMER_EVENT_CONTINUE = 4,
+	SNDRV_TIMER_EVENT_PAUSE = 5,
+	SNDRV_TIMER_EVENT_EARLY = 6,
+	SNDRV_TIMER_EVENT_SUSPEND = 7,
+	SNDRV_TIMER_EVENT_RESUME = 8,
+	SNDRV_TIMER_EVENT_MSTART = 12,
+	SNDRV_TIMER_EVENT_MSTOP = 13,
+	SNDRV_TIMER_EVENT_MCONTINUE = 14,
+	SNDRV_TIMER_EVENT_MPAUSE = 15,
+	SNDRV_TIMER_EVENT_MSUSPEND = 17,
+	SNDRV_TIMER_EVENT_MRESUME = 18,
+};
+
+enum timer_tread_format {
+	TREAD_FORMAT_NONE = 0,
+	TREAD_FORMAT_TIME64 = 1,
+	TREAD_FORMAT_TIME32 = 2,
+};
+
+enum {
+	SNDRV_TIMER_IOCTL_GPARAMS32 = 1077695492,
+	SNDRV_TIMER_IOCTL_INFO32 = 2162185233,
+	SNDRV_TIMER_IOCTL_STATUS_COMPAT32 = 1079530516,
+	SNDRV_TIMER_IOCTL_STATUS_COMPAT64 = 1080054804,
+};
+
+struct snd_timer_instance {
+	struct snd_timer *timer;
+	char *owner;
+	unsigned int flags;
+	void *private_data;
+	void (*private_free)(struct snd_timer_instance *);
+	void (*callback)(struct snd_timer_instance *, unsigned long, unsigned long);
+	void (*ccallback)(struct snd_timer_instance *, int, struct timespec64 *, unsigned long);
+	void (*disconnect)(struct snd_timer_instance *);
+	void *callback_data;
+	unsigned long ticks;
+	unsigned long cticks;
+	unsigned long pticks;
+	unsigned long resolution;
+	unsigned long lost;
+	int slave_class;
+	unsigned int slave_id;
+	struct list_head open_list;
+	struct list_head active_list;
+	struct list_head ack_list;
+	struct list_head slave_list_head;
+	struct list_head slave_active_head;
+	struct snd_timer_instance *master;
+	u64 android_kabi_reserved1;
+};
+
+struct snd_timer_system_private {
+	struct timer_list tlist;
+	struct snd_timer *snd_timer;
+	unsigned long last_expires;
+	unsigned long last_jiffies;
+	unsigned long correction;
+};
+
+struct snd_timer_id {
+	int dev_class;
+	int dev_sclass;
+	int card;
+	int device;
+	int subdevice;
+};
+
+struct snd_timer_gparams32 {
+	struct snd_timer_id tid;
+	u32 period_num;
+	u32 period_den;
+	unsigned char reserved[32];
+};
+
+struct snd_timer_gparams {
+	struct snd_timer_id tid;
+	unsigned long period_num;
+	unsigned long period_den;
+	unsigned char reserved[32];
+};
+
+struct snd_timer_info32 {
+	u32 flags;
+	s32 card;
+	unsigned char id[64];
+	unsigned char name[80];
+	u32 reserved0;
+	u32 resolution;
+	unsigned char reserved[64];
+};
+
+struct snd_timer_read;
+
+struct snd_timer_tread64;
+
+struct snd_timer_user {
+	struct snd_timer_instance *timeri;
+	int tread;
+	unsigned long ticks;
+	unsigned long overrun;
+	int qhead;
+	int qtail;
+	int qused;
+	int queue_size;
+	bool disconnected;
+	struct snd_timer_read *queue;
+	struct snd_timer_tread64 *tqueue;
+	spinlock_t qlock;
+	unsigned long last_resolution;
+	unsigned int filter;
+	struct timespec64 tstamp;
+	wait_queue_head_t qchange_sleep;
+	struct snd_fasync *fasync;
+	struct mutex ioctl_lock;
+};
+
+struct snd_timer_read {
+	unsigned int resolution;
+	unsigned int ticks;
+};
+
+struct snd_timer_tread64 {
+	int event;
+	u8 pad1[4];
+	s64 tstamp_sec;
+	s64 tstamp_nsec;
+	unsigned int val;
+	u8 pad2[4];
+};
+
+struct snd_timer_select {
+	struct snd_timer_id id;
+	unsigned char reserved[32];
+};
+
+struct snd_timer_params {
+	unsigned int flags;
+	unsigned int ticks;
+	unsigned int queue_size;
+	unsigned int reserved0;
+	unsigned int filter;
+	unsigned char reserved[60];
+};
+
+struct snd_timer_ginfo {
+	struct snd_timer_id tid;
+	unsigned int flags;
+	int card;
+	unsigned char id[64];
+	unsigned char name[80];
+	unsigned long reserved0;
+	unsigned long resolution;
+	unsigned long resolution_min;
+	unsigned long resolution_max;
+	unsigned int clients;
+	unsigned char reserved[32];
+};
+
+struct snd_timer_info {
+	unsigned int flags;
+	int card;
+	unsigned char id[64];
+	unsigned char name[80];
+	unsigned long reserved0;
+	unsigned long resolution;
+	unsigned char reserved[64];
+};
+
+struct snd_timer_gstatus {
+	struct snd_timer_id tid;
+	unsigned long resolution;
+	unsigned long resolution_num;
+	unsigned long resolution_den;
+	unsigned char reserved[32];
+};
+
+struct snd_timer_tread32 {
+	int event;
+	s32 tstamp_sec;
+	s32 tstamp_nsec;
+	unsigned int val;
+};
+
+struct snd_timer_status32 {
+	s32 tstamp_sec;
+	s32 tstamp_nsec;
+	unsigned int resolution;
+	unsigned int lost;
+	unsigned int overrun;
+	unsigned int queue;
+	unsigned char reserved[64];
+};
+
+struct snd_timer_status64 {
+	s64 tstamp_sec;
+	s64 tstamp_nsec;
+	unsigned int resolution;
+	unsigned int lost;
+	unsigned int overrun;
+	unsigned int queue;
+	unsigned char reserved[64];
+};
+
+struct snd_hrtimer {
+	struct snd_timer *timer;
+	struct hrtimer hrt;
+	bool in_callback;
+};
+
+enum {
+	SNDRV_PCM_CLASS_GENERIC = 0,
+	SNDRV_PCM_CLASS_MULTI = 1,
+	SNDRV_PCM_CLASS_MODEM = 2,
+	SNDRV_PCM_CLASS_DIGITIZER = 3,
+	SNDRV_PCM_CLASS_LAST = 3,
+};
+
+struct snd_pcm_info {
+	unsigned int device;
+	unsigned int subdevice;
+	int stream;
+	int card;
+	unsigned char id[64];
+	unsigned char name[80];
+	unsigned char subname[32];
+	int dev_class;
+	int dev_subclass;
+	unsigned int subdevices_count;
+	unsigned int subdevices_avail;
+	union snd_pcm_sync_id sync;
+	unsigned char reserved[64];
+};
+
+struct snd_pcm_hw_constraint_list {
+	const unsigned int *list;
+	unsigned int count;
+	unsigned int mask;
+};
+
+struct action_ops {
+	int (*pre_action)(struct snd_pcm_substream *, snd_pcm_state_t);
+	int (*do_action)(struct snd_pcm_substream *, snd_pcm_state_t);
+	void (*undo_action)(struct snd_pcm_substream *, snd_pcm_state_t);
+	void (*post_action)(struct snd_pcm_substream *, snd_pcm_state_t);
+};
+
+enum {
+	SNDRV_PCM_AUDIO_TSTAMP_TYPE_COMPAT = 0,
+	SNDRV_PCM_AUDIO_TSTAMP_TYPE_DEFAULT = 1,
+	SNDRV_PCM_AUDIO_TSTAMP_TYPE_LINK = 2,
+	SNDRV_PCM_AUDIO_TSTAMP_TYPE_LINK_ABSOLUTE = 3,
+	SNDRV_PCM_AUDIO_TSTAMP_TYPE_LINK_ESTIMATED = 4,
+	SNDRV_PCM_AUDIO_TSTAMP_TYPE_LINK_SYNCHRONIZED = 5,
+	SNDRV_PCM_AUDIO_TSTAMP_TYPE_LAST = 5,
+};
+
+enum {
+	SNDRV_PCM_TSTAMP_NONE = 0,
+	SNDRV_PCM_TSTAMP_ENABLE = 1,
+	SNDRV_PCM_TSTAMP_LAST = 1,
+};
+
+enum {
+	SNDRV_PCM_TSTAMP_TYPE_GETTIMEOFDAY = 0,
+	SNDRV_PCM_TSTAMP_TYPE_MONOTONIC = 1,
+	SNDRV_PCM_TSTAMP_TYPE_MONOTONIC_RAW = 2,
+	SNDRV_PCM_TSTAMP_TYPE_LAST = 2,
+};
+
+enum snd_dma_sync_mode {
+	SNDRV_DMA_SYNC_CPU = 0,
+	SNDRV_DMA_SYNC_DEVICE = 1,
+};
+
+enum {
+	SNDRV_PCM_IOCTL_HW_REFINE32 = 3260825872,
+	SNDRV_PCM_IOCTL_HW_PARAMS32 = 3260825873,
+	SNDRV_PCM_IOCTL_SW_PARAMS32 = 3228057875,
+	SNDRV_PCM_IOCTL_STATUS_COMPAT32 = 2154578208,
+	SNDRV_PCM_IOCTL_STATUS_EXT_COMPAT32 = 3228320036,
+	SNDRV_PCM_IOCTL_DELAY32 = 2147762465,
+	SNDRV_PCM_IOCTL_CHANNEL_INFO32 = 2148548914,
+	SNDRV_PCM_IOCTL_REWIND32 = 1074020678,
+	SNDRV_PCM_IOCTL_FORWARD32 = 1074020681,
+	SNDRV_PCM_IOCTL_WRITEI_FRAMES32 = 1074544976,
+	SNDRV_PCM_IOCTL_READI_FRAMES32 = 2148286801,
+	SNDRV_PCM_IOCTL_WRITEN_FRAMES32 = 1074544978,
+	SNDRV_PCM_IOCTL_READN_FRAMES32 = 2148286803,
+	SNDRV_PCM_IOCTL_STATUS_COMPAT64 = 2155888928,
+	SNDRV_PCM_IOCTL_STATUS_EXT_COMPAT64 = 3229630756,
+};
+
+enum {
+	SNDRV_PCM_MMAP_OFFSET_DATA = 0,
+	SNDRV_PCM_MMAP_OFFSET_STATUS_OLD = 2147483648,
+	SNDRV_PCM_MMAP_OFFSET_CONTROL_OLD = 2164260864,
+	SNDRV_PCM_MMAP_OFFSET_STATUS_NEW = 2181038080,
+	SNDRV_PCM_MMAP_OFFSET_CONTROL_NEW = 2197815296,
+	SNDRV_PCM_MMAP_OFFSET_STATUS = 2181038080,
+	SNDRV_PCM_MMAP_OFFSET_CONTROL = 2197815296,
+};
+
+typedef char __pad_before_u32[0];
+
+struct __snd_pcm_mmap_control64_buggy {
+	__pad_before_u32 __pad1;
+	__u32 appl_ptr;
+	__pad_before_u32 __pad2;
+	__pad_before_u32 __pad3;
+	__u32 avail_min;
+	__pad_after_uframe __pad4;
+};
+
+typedef u64 u_int64_t;
+
+struct snd_pcm_file {
+	struct snd_pcm_substream *substream;
+	int no_compat_mmap;
+	unsigned int user_pversion;
+};
+
+struct snd_pcm_status64 {
+	snd_pcm_state_t state;
+	u8 rsvd[4];
+	s64 trigger_tstamp_sec;
+	s64 trigger_tstamp_nsec;
+	s64 tstamp_sec;
+	s64 tstamp_nsec;
+	snd_pcm_uframes_t appl_ptr;
+	snd_pcm_uframes_t hw_ptr;
+	snd_pcm_sframes_t delay;
+	snd_pcm_uframes_t avail;
+	snd_pcm_uframes_t avail_max;
+	snd_pcm_uframes_t overrange;
+	snd_pcm_state_t suspended_state;
+	__u32 audio_tstamp_data;
+	s64 audio_tstamp_sec;
+	s64 audio_tstamp_nsec;
+	s64 driver_tstamp_sec;
+	s64 driver_tstamp_nsec;
+	__u32 audio_tstamp_accuracy;
+	unsigned char reserved[20];
+};
+
+struct snd_pcm_sw_params {
+	int tstamp_mode;
+	unsigned int period_step;
+	unsigned int sleep_min;
+	snd_pcm_uframes_t avail_min;
+	snd_pcm_uframes_t xfer_align;
+	snd_pcm_uframes_t start_threshold;
+	snd_pcm_uframes_t stop_threshold;
+	snd_pcm_uframes_t silence_threshold;
+	snd_pcm_uframes_t silence_size;
+	snd_pcm_uframes_t boundary;
+	unsigned int proto;
+	unsigned int tstamp_type;
+	unsigned char reserved[56];
+};
+
+struct snd_pcm_status32 {
+	snd_pcm_state_t state;
+	s32 trigger_tstamp_sec;
+	s32 trigger_tstamp_nsec;
+	s32 tstamp_sec;
+	s32 tstamp_nsec;
+	u32 appl_ptr;
+	u32 hw_ptr;
+	s32 delay;
+	u32 avail;
+	u32 avail_max;
+	u32 overrange;
+	snd_pcm_state_t suspended_state;
+	u32 audio_tstamp_data;
+	s32 audio_tstamp_sec;
+	s32 audio_tstamp_nsec;
+	s32 driver_tstamp_sec;
+	s32 driver_tstamp_nsec;
+	u32 audio_tstamp_accuracy;
+	unsigned char reserved[36];
+};
+
+struct snd_pcm_channel_info {
+	unsigned int channel;
+	__kernel_off_t offset;
+	unsigned int first;
+	unsigned int step;
+};
+
+struct snd_pcm_mmap_status32 {
+	snd_pcm_state_t state;
+	s32 pad1;
+	u32 hw_ptr;
+	s32 tstamp_sec;
+	s32 tstamp_nsec;
+	snd_pcm_state_t suspended_state;
+	s32 audio_tstamp_sec;
+	s32 audio_tstamp_nsec;
+};
+
+struct snd_pcm_mmap_control32 {
+	u32 appl_ptr;
+	u32 avail_min;
+};
+
+struct snd_pcm_sync_ptr32 {
+	u32 flags;
+	union {
+		struct snd_pcm_mmap_status32 status;
+		unsigned char reserved[64];
+	} s;
+	union {
+		struct snd_pcm_mmap_control32 control;
+		unsigned char reserved[64];
+	} c;
+};
+
+struct snd_pcm_sync_ptr {
+	__u32 flags;
+	__u32 pad1;
+	union {
+		struct snd_pcm_mmap_status status;
+		unsigned char reserved[64];
+	} s;
+	union {
+		struct snd_pcm_mmap_control control;
+		unsigned char reserved[64];
+	} c;
+};
+
+struct snd_xferi {
+	snd_pcm_sframes_t result;
+	void __attribute__((btf_type_tag("user"))) *buf;
+	snd_pcm_uframes_t frames;
+};
+
+struct snd_xfern {
+	snd_pcm_sframes_t result;
+	void __attribute__((btf_type_tag("user"))) * __attribute__((btf_type_tag("user"))) *bufs;
+	snd_pcm_uframes_t frames;
+};
+
+struct snd_pcm_hw_params32 {
+	u32 flags;
+	struct snd_mask masks[3];
+	struct snd_mask mres[5];
+	struct snd_interval intervals[12];
+	struct snd_interval ires[9];
+	u32 rmask;
+	u32 cmask;
+	u32 info;
+	u32 msbits;
+	u32 rate_num;
+	u32 rate_den;
+	u32 fifo_size;
+	unsigned char reserved[64];
+};
+
+struct snd_pcm_sw_params32 {
+	s32 tstamp_mode;
+	u32 period_step;
+	u32 sleep_min;
+	u32 avail_min;
+	u32 xfer_align;
+	u32 start_threshold;
+	u32 stop_threshold;
+	u32 silence_threshold;
+	u32 silence_size;
+	u32 boundary;
+	u32 proto;
+	u32 tstamp_type;
+	unsigned char reserved[56];
+};
+
+struct snd_pcm_channel_info32 {
+	u32 channel;
+	u32 offset;
+	u32 first;
+	u32 step;
+};
+
+struct snd_xferi32 {
+	s32 result;
+	u32 buf;
+	u32 frames;
+};
+
+struct snd_xfern32 {
+	s32 result;
+	u32 bufs;
+	u32 frames;
+};
+
+struct compat_snd_pcm_status64 {
+	snd_pcm_state_t state;
+	u8 rsvd[4];
+	s64 trigger_tstamp_sec;
+	s64 trigger_tstamp_nsec;
+	s64 tstamp_sec;
+	s64 tstamp_nsec;
+	u32 appl_ptr;
+	u32 hw_ptr;
+	s32 delay;
+	u32 avail;
+	u32 avail_max;
+	u32 overrange;
+	snd_pcm_state_t suspended_state;
+	u32 audio_tstamp_data;
+	s64 audio_tstamp_sec;
+	s64 audio_tstamp_nsec;
+	s64 driver_tstamp_sec;
+	s64 driver_tstamp_nsec;
+	u32 audio_tstamp_accuracy;
+	unsigned char reserved[20];
+};
+
+struct snd_pcm_chmap_elem {
+	unsigned char channels;
+	unsigned char map[15];
+};
+
+enum {
+	SNDRV_CHMAP_UNKNOWN = 0,
+	SNDRV_CHMAP_NA = 1,
+	SNDRV_CHMAP_MONO = 2,
+	SNDRV_CHMAP_FL = 3,
+	SNDRV_CHMAP_FR = 4,
+	SNDRV_CHMAP_RL = 5,
+	SNDRV_CHMAP_RR = 6,
+	SNDRV_CHMAP_FC = 7,
+	SNDRV_CHMAP_LFE = 8,
+	SNDRV_CHMAP_SL = 9,
+	SNDRV_CHMAP_SR = 10,
+	SNDRV_CHMAP_RC = 11,
+	SNDRV_CHMAP_FLC = 12,
+	SNDRV_CHMAP_FRC = 13,
+	SNDRV_CHMAP_RLC = 14,
+	SNDRV_CHMAP_RRC = 15,
+	SNDRV_CHMAP_FLW = 16,
+	SNDRV_CHMAP_FRW = 17,
+	SNDRV_CHMAP_FLH = 18,
+	SNDRV_CHMAP_FCH = 19,
+	SNDRV_CHMAP_FRH = 20,
+	SNDRV_CHMAP_TC = 21,
+	SNDRV_CHMAP_TFL = 22,
+	SNDRV_CHMAP_TFR = 23,
+	SNDRV_CHMAP_TFC = 24,
+	SNDRV_CHMAP_TRL = 25,
+	SNDRV_CHMAP_TRR = 26,
+	SNDRV_CHMAP_TRC = 27,
+	SNDRV_CHMAP_TFLC = 28,
+	SNDRV_CHMAP_TFRC = 29,
+	SNDRV_CHMAP_TSL = 30,
+	SNDRV_CHMAP_TSR = 31,
+	SNDRV_CHMAP_LLFE = 32,
+	SNDRV_CHMAP_RLFE = 33,
+	SNDRV_CHMAP_BC = 34,
+	SNDRV_CHMAP_BLC = 35,
+	SNDRV_CHMAP_BRC = 36,
+	SNDRV_CHMAP_LAST = 36,
+};
+
+typedef int (*pcm_transfer_f)(struct snd_pcm_substream *, int, unsigned long, struct iov_iter *, unsigned long);
+
+struct snd_ratden {
+	unsigned int num_min;
+	unsigned int num_max;
+	unsigned int num_step;
+	unsigned int den;
+};
+
+struct snd_pcm_chmap {
+	struct snd_pcm *pcm;
+	int stream;
+	struct snd_kcontrol *kctl;
+	const struct snd_pcm_chmap_elem *chmap;
+	unsigned int max_channels;
+	unsigned int channel_mask;
+	void *private_data;
+};
+
+struct snd_ratnum {
+	unsigned int num;
+	unsigned int den_min;
+	unsigned int den_max;
+	unsigned int den_step;
+};
+
+struct snd_pcm_hw_constraint_ranges {
+	unsigned int count;
+	const struct snd_interval *ranges;
+	unsigned int mask;
+};
+
+struct snd_pcm_hw_constraint_ratnums {
+	int nrats;
+	const struct snd_ratnum *rats;
+};
+
+struct snd_pcm_hw_constraint_ratdens {
+	int nrats;
+	const struct snd_ratden *rats;
+};
+
+typedef int (*pcm_copy_f)(struct snd_pcm_substream *, snd_pcm_uframes_t, void *, snd_pcm_uframes_t, snd_pcm_uframes_t, pcm_transfer_f, bool);
+
+struct pcm_format_data {
+	unsigned char width;
+	unsigned char phys;
+	signed char le;
+	signed char signd;
+	unsigned char silence[8];
+};
+
+struct snd_malloc_ops {
+	void * (*alloc)(struct snd_dma_buffer *, size_t);
+	void (*free)(struct snd_dma_buffer *);
+	dma_addr_t (*get_addr)(struct snd_dma_buffer *, size_t);
+	struct page * (*get_page)(struct snd_dma_buffer *, size_t);
+	unsigned int (*get_chunk_size)(struct snd_dma_buffer *, unsigned int, unsigned int);
+	int (*mmap)(struct snd_dma_buffer *, struct vm_area_struct *);
+	void (*sync)(struct snd_dma_buffer *, enum snd_dma_sync_mode);
+};
+
+struct dmaengine_pcm_runtime_data {
+	struct dma_chan *dma_chan;
+	dma_cookie_t cookie;
+	unsigned int pos;
+};
+
+struct snd_dmaengine_dai_dma_data {
+	dma_addr_t addr;
+	enum dma_slave_buswidth addr_width;
+	u32 maxburst;
+	void *filter_data;
+	const char *chan_name;
+	unsigned int fifo_size;
+	unsigned int flags;
+	void *peripheral_config;
+	size_t peripheral_size;
+};
+
+enum {
+	SNDRV_RAWMIDI_IOCTL_PARAMS32 = 3223344912,
+	SNDRV_RAWMIDI_IOCTL_STATUS_COMPAT32 = 3223607072,
+	SNDRV_RAWMIDI_IOCTL_STATUS_COMPAT64 = 3224393504,
+};
+
+struct snd_rawmidi_framing_tstamp {
+	__u8 frame_type;
+	__u8 length;
+	__u8 reserved[2];
+	__u32 tv_nsec;
+	__u64 tv_sec;
+	__u8 data[16];
+};
+
+struct snd_rawmidi_info {
+	unsigned int device;
+	unsigned int subdevice;
+	int stream;
+	int card;
+	unsigned int flags;
+	unsigned char id[64];
+	unsigned char name[80];
+	unsigned char subname[32];
+	unsigned int subdevices_count;
+	unsigned int subdevices_avail;
+	unsigned char reserved[64];
+};
+
+struct snd_rawmidi_file {
+	struct snd_rawmidi *rmidi;
+	struct snd_rawmidi_substream *input;
+	struct snd_rawmidi_substream *output;
+	unsigned int user_pversion;
+};
+
+struct snd_rawmidi_status64 {
+	int stream;
+	u8 rsvd[4];
+	s64 tstamp_sec;
+	s64 tstamp_nsec;
+	size_t avail;
+	size_t xruns;
+	unsigned char reserved[16];
+};
+
+struct snd_rawmidi_params32 {
+	s32 stream;
+	u32 buffer_size;
+	u32 avail_min;
+	unsigned int no_active_sensing;
+	unsigned int mode;
+	unsigned char reserved[12];
+};
+
+struct snd_rawmidi_params {
+	int stream;
+	size_t buffer_size;
+	size_t avail_min;
+	unsigned int no_active_sensing: 1;
+	unsigned int mode;
+	unsigned char reserved[12];
+};
+
+struct compat_snd_rawmidi_status64 {
+	s32 stream;
+	u8 rsvd[4];
+	s64 tstamp_sec;
+	s64 tstamp_nsec;
+	u32 avail;
+	u32 xruns;
+	unsigned char reserved[16];
+};
+
+struct snd_rawmidi_status32 {
+	s32 stream;
+	s32 tstamp_sec;
+	s32 tstamp_nsec;
+	u32 avail;
+	u32 xruns;
+	unsigned char reserved[16];
+};
+
+enum snd_compr_direction {
+	SND_COMPRESS_PLAYBACK = 0,
+	SND_COMPRESS_CAPTURE = 1,
+};
+
+struct snd_compr_tstamp {
+	__u32 byte_offset;
+	__u32 copied_total;
+	__u32 pcm_frames;
+	__u32 pcm_io_frames;
+	__u32 sampling_rate;
+};
+
+struct snd_compr_ops;
+
+struct snd_compr_runtime;
+
+struct snd_compr;
+
+struct snd_compr_stream {
+	const char *name;
+	struct snd_compr_ops *ops;
+	struct snd_compr_runtime *runtime;
+	struct snd_compr *device;
+	struct delayed_work error_work;
+	enum snd_compr_direction direction;
+	bool metadata_set;
+	bool next_track;
+	bool partial_drain;
+	bool pause_in_draining;
+	void *private_data;
+	struct snd_dma_buffer dma_buffer;
+	u64 android_kabi_reserved1;
+};
+
+struct snd_compr_params;
+
+struct snd_codec;
+
+struct snd_compr_metadata;
+
+struct snd_compr_caps;
+
+struct snd_compr_codec_caps;
+
+struct snd_compr_ops {
+	int (*open)(struct snd_compr_stream *);
+	int (*free)(struct snd_compr_stream *);
+	int (*set_params)(struct snd_compr_stream *, struct snd_compr_params *);
+	int (*get_params)(struct snd_compr_stream *, struct snd_codec *);
+	int (*set_metadata)(struct snd_compr_stream *, struct snd_compr_metadata *);
+	int (*get_metadata)(struct snd_compr_stream *, struct snd_compr_metadata *);
+	int (*trigger)(struct snd_compr_stream *, int);
+	int (*pointer)(struct snd_compr_stream *, struct snd_compr_tstamp *);
+	int (*copy)(struct snd_compr_stream *, char __attribute__((btf_type_tag("user"))) *, size_t);
+	int (*mmap)(struct snd_compr_stream *, struct vm_area_struct *);
+	int (*ack)(struct snd_compr_stream *, size_t);
+	int (*get_caps)(struct snd_compr_stream *, struct snd_compr_caps *);
+	int (*get_codec_caps)(struct snd_compr_stream *, struct snd_compr_codec_caps *);
+	u64 android_kabi_reserved1;
+};
+
+struct snd_compressed_buffer {
+	__u32 fragment_size;
+	__u32 fragments;
+};
+
+struct snd_enc_wma {
+	__u32 super_block_align;
+};
+
+struct snd_enc_vorbis {
+	__s32 quality;
+	__u32 managed;
+	__u32 max_bit_rate;
+	__u32 min_bit_rate;
+	__u32 downmix;
+};
+
+struct snd_enc_real {
+	__u32 quant_bits;
+	__u32 start_region;
+	__u32 num_regions;
+};
+
+struct snd_enc_flac {
+	__u32 num;
+	__u32 gain;
+};
+
+struct snd_enc_generic {
+	__u32 bw;
+	__s32 reserved[15];
+};
+
+struct snd_dec_flac {
+	__u16 sample_size;
+	__u16 min_blk_size;
+	__u16 max_blk_size;
+	__u16 min_frame_size;
+	__u16 max_frame_size;
+	__u16 reserved;
+};
+
+struct snd_dec_wma {
+	__u32 encoder_option;
+	__u32 adv_encoder_option;
+	__u32 adv_encoder_option2;
+	__u32 reserved;
+};
+
+struct snd_dec_alac {
+	__u32 frame_length;
+	__u8 compatible_version;
+	__u8 pb;
+	__u8 mb;
+	__u8 kb;
+	__u32 max_run;
+	__u32 max_frame_bytes;
+};
+
+struct snd_dec_ape {
+	__u16 compatible_version;
+	__u16 compression_level;
+	__u32 format_flags;
+	__u32 blocks_per_frame;
+	__u32 final_frame_blocks;
+	__u32 total_frames;
+	__u32 seek_table_present;
+};
+
+union snd_codec_options {
+	struct snd_enc_wma wma;
+	struct snd_enc_vorbis vorbis;
+	struct snd_enc_real real;
+	struct snd_enc_flac flac;
+	struct snd_enc_generic generic;
+	struct snd_dec_flac flac_d;
+	struct snd_dec_wma wma_d;
+	struct snd_dec_alac alac_d;
+	struct snd_dec_ape ape_d;
+};
+
+struct snd_codec {
+	__u32 id;
+	__u32 ch_in;
+	__u32 ch_out;
+	__u32 sample_rate;
+	__u32 bit_rate;
+	__u32 rate_control;
+	__u32 profile;
+	__u32 level;
+	__u32 ch_mode;
+	__u32 format;
+	__u32 align;
+	union snd_codec_options options;
+	__u32 reserved[3];
+};
+
+struct snd_compr_params {
+	struct snd_compressed_buffer buffer;
+	struct snd_codec codec;
+	__u8 no_wake_mode;
+};
+
+struct snd_compr_metadata {
+	__u32 key;
+	__u32 value[8];
+};
+
+struct snd_compr_caps {
+	__u32 num_codecs;
+	__u32 direction;
+	__u32 min_fragment_size;
+	__u32 max_fragment_size;
+	__u32 min_fragments;
+	__u32 max_fragments;
+	__u32 codecs[32];
+	__u32 reserved[11];
+};
+
+struct snd_codec_desc {
+	__u32 max_ch;
+	__u32 sample_rates[32];
+	__u32 num_sample_rates;
+	__u32 bit_rate[32];
+	__u32 num_bitrates;
+	__u32 rate_control;
+	__u32 profiles;
+	__u32 modes;
+	__u32 formats;
+	__u32 min_buffer;
+	__u32 reserved[15];
+};
+
+struct snd_compr_codec_caps {
+	__u32 codec;
+	__u32 num_descriptors;
+	struct snd_codec_desc descriptor[32];
+};
+
+struct snd_compr_runtime {
+	snd_pcm_state_t state;
+	struct snd_compr_ops *ops;
+	void *buffer;
+	u64 buffer_size;
+	u32 fragment_size;
+	u32 fragments;
+	u64 total_bytes_available;
+	u64 total_bytes_transferred;
+	wait_queue_head_t sleep;
+	void *private_data;
+	unsigned char *dma_area;
+	dma_addr_t dma_addr;
+	size_t dma_bytes;
+	struct snd_dma_buffer *dma_buffer_p;
+	u64 android_kabi_reserved1;
+};
+
+struct snd_compr {
+	const char *name;
+	struct device *dev;
+	struct snd_compr_ops *ops;
+	void *private_data;
+	struct snd_card *card;
+	unsigned int direction;
+	struct mutex lock;
+	int device;
+	bool use_pause_in_draining;
+	u64 android_kabi_reserved1;
+};
+
+struct snd_compr_avail {
+	__u64 avail;
+	struct snd_compr_tstamp tstamp;
+} __attribute__((packed));
+
+struct snd_compr_file {
+	unsigned long caps;
+	struct snd_compr_stream stream;
+};
+
+struct snd_usb_audio;
+
+struct snd_usb_platform_ops {
+	void (*connect_cb)(struct snd_usb_audio *);
+	void (*disconnect_cb)(struct snd_usb_audio *);
+	void (*suspend_cb)(struct usb_interface *, pm_message_t);
+	void (*resume_cb)(struct usb_interface *);
+};
+
+struct snd_usb_audio {
+	int index;
+	struct usb_device *dev;
+	struct snd_card *card;
+	struct usb_interface *intf[16];
+	u32 usb_id;
+	uint16_t quirk_type;
+	struct mutex mutex;
+	unsigned int system_suspend;
+	atomic_t active;
+	atomic_t shutdown;
+	atomic_t usage_count;
+	wait_queue_head_t shutdown_wait;
+	unsigned int quirk_flags;
+	unsigned int need_delayed_register: 1;
+	int num_interfaces;
+	int last_iface;
+	int num_suspended_intf;
+	int sample_rate_read_error;
+	int badd_profile;
+	struct list_head pcm_list;
+	struct list_head ep_list;
+	struct list_head iface_ref_list;
+	struct list_head clock_ref_list;
+	int pcm_devs;
+	unsigned int num_rawmidis;
+	struct list_head midi_list;
+	struct list_head midi_v2_list;
+	struct list_head mixer_list;
+	int setup;
+	bool generic_implicit_fb;
+	bool autoclock;
+	bool lowlatency;
+	struct usb_host_interface *ctrl_intf;
+	struct media_device *media_dev;
+	struct media_intf_devnode *ctl_intf_media_devnode;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct usb_audio_device_name {
+	u32 id;
+	const char *vendor_name;
+	const char *product_name;
+	const char *profile_name;
+};
+
+struct snd_usb_audio_quirk {
+	const char *vendor_name;
+	const char *product_name;
+	int16_t ifnum;
+	uint16_t type;
+	const void *data;
+};
+
+struct snd_usb_stream;
+
+struct audioformat;
+
+struct snd_usb_power_domain;
+
+struct snd_usb_endpoint;
+
+struct media_ctl;
+
+struct snd_usb_substream {
+	struct snd_usb_stream *stream;
+	struct usb_device *dev;
+	struct snd_pcm_substream *pcm_substream;
+	int direction;
+	int endpoint;
+	const struct audioformat *cur_audiofmt;
+	struct snd_usb_power_domain *str_pd;
+	unsigned int channels_max;
+	unsigned int txfr_quirk: 1;
+	unsigned int tx_length_quirk: 1;
+	unsigned int fmt_type;
+	unsigned int pkt_offset_adj;
+	unsigned int stream_offset_adj;
+	unsigned int running: 1;
+	unsigned int period_elapsed_pending;
+	unsigned int buffer_bytes;
+	unsigned int inflight_bytes;
+	unsigned int hwptr_done;
+	unsigned int transfer_done;
+	unsigned int frame_limit;
+	unsigned int ep_num;
+	struct snd_usb_endpoint *data_endpoint;
+	struct snd_usb_endpoint *sync_endpoint;
+	unsigned long flags;
+	unsigned int speed;
+	u64 formats;
+	unsigned int num_formats;
+	struct list_head fmt_list;
+	spinlock_t lock;
+	unsigned int last_frame_number;
+	struct {
+		int marker;
+		int channel;
+		int byte_idx;
+	} dsd_dop;
+	bool trigger_tstamp_pending_update;
+	bool lowlatency_playback;
+	struct media_ctl *media_ctl;
+	u64 android_kabi_reserved1;
+};
+
+struct snd_usb_stream {
+	struct snd_usb_audio *chip;
+	struct snd_pcm *pcm;
+	int pcm_index;
+	unsigned int fmt_type;
+	struct snd_usb_substream substream[2];
+	struct list_head list;
+};
+
+struct audioformat {
+	struct list_head list;
+	u64 formats;
+	unsigned int channels;
+	unsigned int fmt_type;
+	unsigned int fmt_bits;
+	unsigned int frame_size;
+	unsigned char iface;
+	unsigned char altsetting;
+	unsigned char ep_idx;
+	unsigned char altset_idx;
+	unsigned char attributes;
+	unsigned char endpoint;
+	unsigned char ep_attr;
+	bool implicit_fb;
+	unsigned char sync_ep;
+	unsigned char sync_iface;
+	unsigned char sync_altsetting;
+	unsigned char sync_ep_idx;
+	unsigned char datainterval;
+	unsigned char protocol;
+	unsigned int maxpacksize;
+	unsigned int rates;
+	unsigned int rate_min;
+	unsigned int rate_max;
+	unsigned int nr_rates;
+	unsigned int *rate_table;
+	unsigned char clock;
+	struct snd_pcm_chmap_elem *chmap;
+	bool dsd_dop;
+	bool dsd_bitrev;
+	bool dsd_raw;
+};
+
+struct snd_usb_power_domain {
+	int pd_id;
+	int pd_d1d0_rec;
+	int pd_d2d0_rec;
+};
+
+struct snd_urb_ctx {
+	struct urb *urb;
+	unsigned int buffer_size;
+	struct snd_usb_substream *subs;
+	struct snd_usb_endpoint *ep;
+	int index;
+	int packets;
+	int queued;
+	int packet_size[48];
+	struct list_head ready_list;
+};
+
+struct snd_usb_packet_info {
+	uint32_t packet_size[48];
+	int packets;
+};
+
+struct snd_usb_iface_ref;
+
+struct snd_usb_clock_ref;
+
+struct snd_usb_endpoint {
+	struct snd_usb_audio *chip;
+	struct snd_usb_iface_ref *iface_ref;
+	struct snd_usb_clock_ref *clock_ref;
+	int opened;
+	atomic_t running;
+	int ep_num;
+	int type;
+	unsigned char iface;
+	unsigned char altsetting;
+	unsigned char ep_idx;
+	atomic_t state;
+	int (*prepare_data_urb)(struct snd_usb_substream *, struct urb *, bool);
+	void (*retire_data_urb)(struct snd_usb_substream *, struct urb *);
+	struct snd_usb_substream *data_subs;
+	struct snd_usb_endpoint *sync_source;
+	struct snd_usb_endpoint *sync_sink;
+	struct snd_urb_ctx urb[12];
+	struct snd_usb_packet_info next_packet[12];
+	unsigned int next_packet_head;
+	unsigned int next_packet_queued;
+	struct list_head ready_playback_urbs;
+	unsigned int nurbs;
+	unsigned long active_mask;
+	unsigned long unlink_mask;
+	atomic_t submitted_urbs;
+	char *syncbuf;
+	dma_addr_t sync_dma;
+	unsigned int pipe;
+	unsigned int packsize[2];
+	unsigned int sample_rem;
+	unsigned int sample_accum;
+	unsigned int pps;
+	unsigned int freqn;
+	unsigned int freqm;
+	int freqshift;
+	unsigned int freqmax;
+	unsigned int phase;
+	unsigned int maxpacksize;
+	unsigned int maxframesize;
+	unsigned int max_urb_frames;
+	unsigned int curpacksize;
+	unsigned int curframesize;
+	unsigned int syncmaxsize;
+	unsigned int fill_max: 1;
+	unsigned int tenor_fb_quirk: 1;
+	unsigned int datainterval;
+	unsigned int syncinterval;
+	unsigned char silence_value;
+	unsigned int stride;
+	int skip_packets;
+	bool implicit_fb_sync;
+	bool lowlatency_playback;
+	bool need_setup;
+	bool need_prepare;
+	bool fixed_rate;
+	const struct audioformat *cur_audiofmt;
+	unsigned int cur_rate;
+	snd_pcm_format_t cur_format;
+	unsigned int cur_channels;
+	unsigned int cur_frame_bytes;
+	unsigned int cur_period_frames;
+	unsigned int cur_period_bytes;
+	unsigned int cur_buffer_periods;
+	spinlock_t lock;
+	struct list_head list;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct media_ctl {
+	struct media_device *media_dev;
+	struct media_entity media_entity;
+	struct media_intf_devnode *intf_devnode;
+	struct media_link *intf_link;
+	struct media_pad media_pad;
+	struct media_pipeline media_pipe;
+};
+
+struct usb_mixer_elem_list;
+
+struct usbmix_connector_map;
+
+struct rc_config;
+
+struct media_mixer_ctl;
+
+struct usb_mixer_interface {
+	struct snd_usb_audio *chip;
+	struct usb_host_interface *hostif;
+	struct list_head list;
+	unsigned int ignore_ctl_error;
+	struct urb *urb;
+	struct usb_mixer_elem_list **id_elems;
+	int protocol;
+	const struct usbmix_connector_map *connector_map;
+	const struct rc_config *rc_cfg;
+	u32 rc_code;
+	wait_queue_head_t rc_waitq;
+	struct urb *rc_urb;
+	struct usb_ctrlrequest *rc_setup_packet;
+	u8 rc_buffer[6];
+	struct media_mixer_ctl *media_mixer_ctl;
+	bool disconnected;
+	void *private_data;
+	void (*private_free)(struct usb_mixer_interface *);
+	void (*private_suspend)(struct usb_mixer_interface *);
+};
+
+typedef void (*usb_mixer_elem_dump_func_t)(struct snd_info_buffer *, struct usb_mixer_elem_list *);
+
+typedef int (*usb_mixer_elem_resume_func_t)(struct usb_mixer_elem_list *);
+
+struct usb_mixer_elem_list {
+	struct usb_mixer_interface *mixer;
+	struct usb_mixer_elem_list *next_id_elem;
+	struct snd_kcontrol *kctl;
+	unsigned int id;
+	bool is_std_info;
+	usb_mixer_elem_dump_func_t dump;
+	usb_mixer_elem_resume_func_t resume;
+};
+
+struct usbmix_connector_map {
+	u8 id;
+	u8 delegated_id;
+	u8 control;
+	u8 channel;
+};
+
+struct rc_config {
+	u32 usb_id;
+	u8 offset;
+	u8 length;
+	u8 packet_length;
+	u8 min_packet_length;
+	u8 mute_mixer_id;
+	u32 mute_code;
+};
+
+struct media_mixer_ctl {
+	struct media_device *media_dev;
+	struct media_entity media_entity;
+	struct media_intf_devnode *intf_devnode;
+	struct media_link *intf_link;
+	struct media_pad media_pad[3];
+	struct media_pipeline media_pipe;
+};
+
+struct uac1_ac_header_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__le16 bcdADC;
+	__le16 wTotalLength;
+	__u8 bInCollection;
+	__u8 baInterfaceNr[0];
+} __attribute__((packed));
+
+struct uac3_clock_source_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bClockID;
+	__u8 bmAttributes;
+	__le32 bmControls;
+	__u8 bReferenceTerminal;
+	__le16 wClockSourceStr;
+} __attribute__((packed));
+
+union uac23_clock_source_desc {
+	struct uac_clock_source_descriptor v2;
+	struct uac3_clock_source_descriptor v3;
+};
+
+struct uac_clock_selector_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bClockID;
+	__u8 bNrInPins;
+	__u8 baCSourceID[0];
+};
+
+struct uac3_clock_selector_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bClockID;
+	__u8 bNrInPins;
+	__u8 baCSourceID[0];
+};
+
+union uac23_clock_selector_desc {
+	struct uac_clock_selector_descriptor v2;
+	struct uac3_clock_selector_descriptor v3;
+};
+
+struct uac_clock_multiplier_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bClockID;
+	__u8 bCSourceID;
+	__u8 bmControls;
+	__u8 iClockMultiplier;
+};
+
+union uac23_clock_multiplier_desc {
+	struct uac_clock_multiplier_descriptor v2;
+	struct uac_clock_multiplier_descriptor v3;
+};
+
+enum {
+	EP_STATE_STOPPED = 0,
+	EP_STATE_RUNNING = 1,
+	EP_STATE_STOPPING = 2,
+};
+
+struct snd_usb_iface_ref {
+	unsigned char iface;
+	bool need_setup;
+	int opened;
+	int altset;
+	struct list_head list;
+};
+
+struct snd_usb_clock_ref {
+	unsigned char clock;
+	atomic_t locked;
+	int opened;
+	int rate;
+	bool need_setup;
+	struct list_head list;
+};
+
+struct uac_format_type_ii_ext_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bFormatType;
+	__le16 wMaxBitRate;
+	__le16 wSamplesPerFrame;
+	__u8 bHeaderLength;
+	__u8 bSideBandProtocol;
+};
+
+struct uac_format_type_ii_discrete_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bFormatType;
+	__le16 wMaxBitRate;
+	__le16 wSamplesPerFrame;
+	__u8 bSamFreqType;
+	__u8 tSamFreq[0];
+} __attribute__((packed));
+
+struct uac3_as_header_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bTerminalLink;
+	__le32 bmControls;
+	__le16 wClusterDescrID;
+	__le64 bmFormats;
+	__u8 bSubslotSize;
+	__u8 bBitResolution;
+	__le16 bmAuxProtocols;
+	__u8 bControlSize;
+} __attribute__((packed));
+
+struct uac_format_type_i_ext_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bFormatType;
+	__u8 bSubslotSize;
+	__u8 bBitResolution;
+	__u8 bHeaderLength;
+	__u8 bControlSize;
+	__u8 bSideBandProtocol;
+};
+
+struct uac_format_type_i_discrete_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bFormatType;
+	__u8 bNrChannels;
+	__u8 bSubframeSize;
+	__u8 bBitResolution;
+	__u8 bSamFreqType;
+	__u8 tSamFreq[0];
+};
+
+struct uac_format_type_i_continuous_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bFormatType;
+	__u8 bNrChannels;
+	__u8 bSubframeSize;
+	__u8 bBitResolution;
+	__u8 bSamFreqType;
+	__u8 tLowerSamFreq[3];
+	__u8 tUpperSamFreq[3];
+};
+
+struct snd_usb_implicit_fb_match {
+	unsigned int id;
+	unsigned int iface_class;
+	unsigned int ep_num;
+	unsigned int iface;
+	int type;
+};
+
+enum {
+	IMPLICIT_FB_NONE = 0,
+	IMPLICIT_FB_GENERIC = 1,
+	IMPLICIT_FB_FIXED = 2,
+	IMPLICIT_FB_BOTH = 3,
+};
+
+struct usbmix_name_map;
+
+struct usbmix_selector_map;
+
+struct usbmix_ctl_map {
+	u32 id;
+	const struct usbmix_name_map *map;
+	const struct usbmix_selector_map *selector_map;
+	const struct usbmix_connector_map *connector_map;
+};
+
+struct usbmix_dB_map;
+
+struct usbmix_name_map {
+	int id;
+	const char *name;
+	int control;
+	const struct usbmix_dB_map *dB;
+};
+
+struct usbmix_dB_map {
+	int min;
+	int max;
+	bool min_mute;
+};
+
+struct usbmix_selector_map {
+	int id;
+	int count;
+	const char **names;
+};
+
+struct uac3_badd_profile {
+	int subclass;
+	const char *name;
+	int c_chmask;
+	int p_chmask;
+	int st_chmask;
+};
+
+struct iterm_name_combo {
+	int type;
+	char *name;
+};
+
+struct usb_feature_control_info {
+	int control;
+	const char *name;
+	int type;
+	int type_uac2;
+};
+
+struct procunit_value_info {
+	int control;
+	const char *suffix;
+	int val_type;
+	int min_value;
+};
+
+struct procunit_info {
+	int type;
+	char *name;
+	const struct procunit_value_info *values;
+};
+
+enum {
+	USB_MIXER_BOOLEAN = 0,
+	USB_MIXER_INV_BOOLEAN = 1,
+	USB_MIXER_S8 = 2,
+	USB_MIXER_U8 = 3,
+	USB_MIXER_S16 = 4,
+	USB_MIXER_U16 = 5,
+	USB_MIXER_S32 = 6,
+	USB_MIXER_U32 = 7,
+	USB_MIXER_BESPOKEN = 8,
+};
+
+enum {
+	USB_XU_CLOCK_RATE = 58113,
+	USB_XU_CLOCK_SOURCE = 58114,
+	USB_XU_DIGITAL_IO_STATUS = 58115,
+	USB_XU_DEVICE_OPTIONS = 58116,
+	USB_XU_DIRECT_MONITORING = 58117,
+	USB_XU_METERING = 58118,
+};
+
+struct usb_mixer_elem_info {
+	struct usb_mixer_elem_list head;
+	unsigned int control;
+	unsigned int cmask;
+	unsigned int idx_off;
+	unsigned int ch_readonly;
+	unsigned int master_readonly;
+	int channels;
+	int val_type;
+	int min;
+	int max;
+	int res;
+	int dBmin;
+	int dBmax;
+	int cached;
+	int cache_val[16];
+	u8 initialized;
+	u8 min_mute;
+	void *private_data;
+};
+
+struct usb_audio_term {
+	int id;
+	int type;
+	int channels;
+	unsigned int chconfig;
+	int name;
+};
+
+struct mixer_build {
+	struct snd_usb_audio *chip;
+	struct usb_mixer_interface *mixer;
+	unsigned char *buffer;
+	unsigned int buflen;
+	unsigned long unitbitmap[4];
+	unsigned long termbitmap[4];
+	struct usb_audio_term oterm;
+	const struct usbmix_name_map *map;
+	const struct usbmix_selector_map *selector_map;
+};
+
+struct uac3_output_terminal_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bTerminalID;
+	__le16 wTerminalType;
+	__u8 bAssocTerminal;
+	__u8 bSourceID;
+	__u8 bCSourceID;
+	__le32 bmControls;
+	__le16 wExTerminalDescrID;
+	__le16 wConnectorsDescrID;
+	__le16 wTerminalDescrStr;
+} __attribute__((packed));
+
+struct uac1_output_terminal_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bTerminalID;
+	__le16 wTerminalType;
+	__u8 bAssocTerminal;
+	__u8 bSourceID;
+	__u8 iTerminal;
+} __attribute__((packed));
+
+struct uac_feature_unit_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bUnitID;
+	__u8 bSourceID;
+	__u8 bControlSize;
+	__u8 bmaControls[0];
+};
+
+struct uac3_input_terminal_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bTerminalID;
+	__le16 wTerminalType;
+	__u8 bAssocTerminal;
+	__u8 bCSourceID;
+	__le32 bmControls;
+	__le16 wClusterDescrID;
+	__le16 wExTerminalDescrID;
+	__le16 wConnectorsDescrID;
+	__le16 wTerminalDescrStr;
+};
+
+struct uac_selector_unit_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bUintID;
+	__u8 bNrInPins;
+	__u8 baSourceID[0];
+};
+
+struct uac3_feature_unit_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bUnitID;
+	__u8 bSourceID;
+	__u8 bmaControls[0];
+};
+
+struct uac_mixer_unit_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bUnitID;
+	__u8 bNrInPins;
+	__u8 baSourceID[0];
+};
+
+struct uac_processing_unit_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bUnitID;
+	__le16 wProcessType;
+	__u8 bNrInPins;
+	__u8 baSourceID[0];
+} __attribute__((packed));
+
+struct uac2_effect_unit_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bUnitID;
+	__le16 wEffectType;
+	__u8 bSourceID;
+	__u8 bmaControls[0];
+} __attribute__((packed));
+
+struct uac_input_terminal_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bTerminalID;
+	__le16 wTerminalType;
+	__u8 bAssocTerminal;
+	__u8 bNrChannels;
+	__le16 wChannelConfig;
+	__u8 iChannelNames;
+	__u8 iTerminal;
+};
+
+struct uac3_cluster_header_descriptor {
+	__le16 wLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__le16 wDescriptorID;
+	__u8 bNrChannels;
+} __attribute__((packed));
+
+struct uac2_connectors_ctl_blk {
+	__u8 bNrChannels;
+	__le32 bmChannelConfig;
+	__u8 iChannelNames;
+} __attribute__((packed));
+
+struct uac3_insertion_ctl_blk {
+	__u8 bSize;
+	__u8 bmConInserted;
+};
+
+struct uac1_status_word {
+	__u8 bStatusType;
+	__u8 bOriginator;
+};
+
+struct sb_jack {
+	int unitid;
+	const char *name;
+};
+
+struct std_mono_table {
+	unsigned int unitid;
+	unsigned int control;
+	unsigned int cmask;
+	int val_type;
+	const char *name;
+	snd_kcontrol_tlv_rw_t *tlv_callback;
+};
+
+struct snd_djm_ctl;
+
+struct snd_djm_device {
+	const char *name;
+	const struct snd_djm_ctl *controls;
+	size_t ncontrols;
+};
+
+struct snd_djm_ctl {
+	const char *name;
+	const u16 *options;
+	size_t noptions;
+	u16 default_value;
+	u16 wIndex;
+};
+
+enum {
+	SNDRV_HWDEP_IFACE_OPL2 = 0,
+	SNDRV_HWDEP_IFACE_OPL3 = 1,
+	SNDRV_HWDEP_IFACE_OPL4 = 2,
+	SNDRV_HWDEP_IFACE_SB16CSP = 3,
+	SNDRV_HWDEP_IFACE_EMU10K1 = 4,
+	SNDRV_HWDEP_IFACE_YSS225 = 5,
+	SNDRV_HWDEP_IFACE_ICS2115 = 6,
+	SNDRV_HWDEP_IFACE_SSCAPE = 7,
+	SNDRV_HWDEP_IFACE_VX = 8,
+	SNDRV_HWDEP_IFACE_MIXART = 9,
+	SNDRV_HWDEP_IFACE_USX2Y = 10,
+	SNDRV_HWDEP_IFACE_EMUX_WAVETABLE = 11,
+	SNDRV_HWDEP_IFACE_BLUETOOTH = 12,
+	SNDRV_HWDEP_IFACE_USX2Y_PCM = 13,
+	SNDRV_HWDEP_IFACE_PCXHR = 14,
+	SNDRV_HWDEP_IFACE_SB_RC = 15,
+	SNDRV_HWDEP_IFACE_HDA = 16,
+	SNDRV_HWDEP_IFACE_USB_STREAM = 17,
+	SNDRV_HWDEP_IFACE_FW_DICE = 18,
+	SNDRV_HWDEP_IFACE_FW_FIREWORKS = 19,
+	SNDRV_HWDEP_IFACE_FW_BEBOB = 20,
+	SNDRV_HWDEP_IFACE_FW_OXFW = 21,
+	SNDRV_HWDEP_IFACE_FW_DIGI00X = 22,
+	SNDRV_HWDEP_IFACE_FW_TASCAM = 23,
+	SNDRV_HWDEP_IFACE_LINE6 = 24,
+	SNDRV_HWDEP_IFACE_FW_MOTU = 25,
+	SNDRV_HWDEP_IFACE_FW_FIREFACE = 26,
+	SNDRV_HWDEP_IFACE_LAST = 26,
+};
+
+enum snd_rme_domain {
+	SND_RME_DOMAIN_SYSTEM = 0,
+	SND_RME_DOMAIN_AES = 1,
+	SND_RME_DOMAIN_SPDIF = 2,
+};
+
+enum snd_rme_clock_status {
+	SND_RME_CLOCK_NOLOCK = 0,
+	SND_RME_CLOCK_LOCK = 1,
+	SND_RME_CLOCK_SYNC = 2,
+};
+
+enum {
+	SND_BBFPRO_CTL_REG1 = 0,
+	SND_BBFPRO_CTL_REG2 = 1,
+};
+
+struct scarlett_mixer_elem_enum_info {
+	int start;
+	int len;
+	int offsets[5];
+	const char * const *names;
+};
+
+struct scarlett_mixer_control {
+	unsigned char num;
+	unsigned char type;
+	const char *name;
+};
+
+struct scarlett_device_info {
+	int matrix_in;
+	int matrix_out;
+	int input_len;
+	int output_len;
+	struct scarlett_mixer_elem_enum_info opt_master;
+	struct scarlett_mixer_elem_enum_info opt_matrix;
+	int matrix_mux_init[18];
+	int num_controls;
+	const struct scarlett_mixer_control controls[10];
+};
+
+enum {
+	SCARLETT_OUTPUTS = 0,
+	SCARLETT_SWITCH_IMPEDANCE = 1,
+	SCARLETT_SWITCH_PAD = 2,
+	SCARLETT_SWITCH_GAIN = 3,
+};
+
+enum {
+	SCARLETT_OFFSET_PCM = 0,
+	SCARLETT_OFFSET_ANALOG = 1,
+	SCARLETT_OFFSET_SPDIF = 2,
+	SCARLETT_OFFSET_ADAT = 3,
+	SCARLETT_OFFSET_MIX = 4,
+};
+
+struct scarlett2_device_info;
+
+struct scarlett2_device_entry {
+	const u32 usb_id;
+	const struct scarlett2_device_info *info;
+	const char *series_name;
+};
+
+struct scarlett2_mux_entry {
+	u8 port_type;
+	u8 start;
+	u8 count;
+};
+
+struct scarlett2_device_info {
+	u8 has_msd_mode;
+	u8 config_set;
+	u8 line_out_hw_vol;
+	u8 has_speaker_switching;
+	u8 has_talkback;
+	u8 level_input_count;
+	u8 level_input_first;
+	u8 pad_input_count;
+	u8 air_input_count;
+	u8 phantom_count;
+	u8 inputs_per_phantom;
+	u8 direct_monitor;
+	u8 line_out_remap_enable;
+	u8 line_out_remap[10];
+	const char * const line_out_descrs[10];
+	const int port_count[12];
+	struct scarlett2_mux_entry mux_assignment[30];
+};
+
+struct scarlett2_config {
+	u8 offset;
+	u8 size;
+	u8 activate;
+};
+
+struct scarlett2_port {
+	u16 id;
+	const char * const src_descr;
+	int src_num_offset;
+	const char * const dst_descr;
+};
+
+enum {
+	SCARLETT2_PORT_TYPE_NONE = 0,
+	SCARLETT2_PORT_TYPE_ANALOGUE = 1,
+	SCARLETT2_PORT_TYPE_SPDIF = 2,
+	SCARLETT2_PORT_TYPE_ADAT = 3,
+	SCARLETT2_PORT_TYPE_MIX = 4,
+	SCARLETT2_PORT_TYPE_PCM = 5,
+	SCARLETT2_PORT_TYPE_COUNT = 6,
+};
+
+enum {
+	SCARLETT2_PORT_IN = 0,
+	SCARLETT2_PORT_OUT = 1,
+	SCARLETT2_PORT_DIRNS = 2,
+};
+
+enum {
+	SCARLETT2_CONFIG_DIM_MUTE = 0,
+	SCARLETT2_CONFIG_LINE_OUT_VOLUME = 1,
+	SCARLETT2_CONFIG_MUTE_SWITCH = 2,
+	SCARLETT2_CONFIG_SW_HW_SWITCH = 3,
+	SCARLETT2_CONFIG_LEVEL_SWITCH = 4,
+	SCARLETT2_CONFIG_PAD_SWITCH = 5,
+	SCARLETT2_CONFIG_MSD_SWITCH = 6,
+	SCARLETT2_CONFIG_AIR_SWITCH = 7,
+	SCARLETT2_CONFIG_STANDALONE_SWITCH = 8,
+	SCARLETT2_CONFIG_PHANTOM_SWITCH = 9,
+	SCARLETT2_CONFIG_PHANTOM_PERSISTENCE = 10,
+	SCARLETT2_CONFIG_DIRECT_MONITOR = 11,
+	SCARLETT2_CONFIG_MONITOR_OTHER_SWITCH = 12,
+	SCARLETT2_CONFIG_MONITOR_OTHER_ENABLE = 13,
+	SCARLETT2_CONFIG_TALKBACK_MAP = 14,
+	SCARLETT2_CONFIG_COUNT = 15,
+};
+
+enum {
+	SCARLETT2_CONFIG_SET_NO_MIXER = 0,
+	SCARLETT2_CONFIG_SET_GEN_2 = 1,
+	SCARLETT2_CONFIG_SET_GEN_3 = 2,
+	SCARLETT2_CONFIG_SET_CLARETT = 3,
+	SCARLETT2_CONFIG_SET_COUNT = 4,
+};
+
+enum {
+	SCARLETT2_BUTTON_MUTE = 0,
+	SCARLETT2_BUTTON_DIM = 1,
+	SCARLETT2_DIM_MUTE_COUNT = 2,
+};
+
+struct scarlett2_data {
+	struct usb_mixer_interface *mixer;
+	struct mutex usb_mutex;
+	struct mutex data_mutex;
+	struct delayed_work work;
+	const struct scarlett2_device_info *info;
+	const char *series_name;
+	__u8 bInterfaceNumber;
+	__u8 bEndpointAddress;
+	__u16 wMaxPacketSize;
+	__u8 bInterval;
+	int num_mux_srcs;
+	int num_mux_dsts;
+	u16 scarlett2_seq;
+	u8 sync_updated;
+	u8 vol_updated;
+	u8 input_other_updated;
+	u8 monitor_other_updated;
+	u8 mux_updated;
+	u8 speaker_switching_switched;
+	u8 sync;
+	u8 master_vol;
+	u8 vol[10];
+	u8 vol_sw_hw_switch[10];
+	u8 mute_switch[10];
+	u8 level_switch[2];
+	u8 pad_switch[8];
+	u8 dim_mute[2];
+	u8 air_switch[8];
+	u8 phantom_switch[2];
+	u8 phantom_persistence;
+	u8 direct_monitor_switch;
+	u8 speaker_switching_switch;
+	u8 talkback_switch;
+	u8 talkback_map[12];
+	u8 msd_switch;
+	u8 standalone_switch;
+	struct snd_kcontrol *sync_ctl;
+	struct snd_kcontrol *master_vol_ctl;
+	struct snd_kcontrol *vol_ctls[10];
+	struct snd_kcontrol *sw_hw_ctls[10];
+	struct snd_kcontrol *mute_ctls[10];
+	struct snd_kcontrol *dim_mute_ctls[2];
+	struct snd_kcontrol *level_ctls[2];
+	struct snd_kcontrol *pad_ctls[8];
+	struct snd_kcontrol *air_ctls[8];
+	struct snd_kcontrol *phantom_ctls[2];
+	struct snd_kcontrol *mux_ctls[77];
+	struct snd_kcontrol *direct_monitor_ctl;
+	struct snd_kcontrol *speaker_switching_ctl;
+	struct snd_kcontrol *talkback_ctl;
+	u8 mux[77];
+	u8 mix[300];
+};
+
+struct scarlett2_usb_volume_status {
+	u8 dim_mute[2];
+	u8 pad1;
+	s16 sw_vol[10];
+	s16 hw_vol[10];
+	u8 mute_switch[10];
+	u8 sw_hw_switch[10];
+	u8 pad3[6];
+	s16 master_vol;
+} __attribute__((packed));
+
+struct scarlett2_usb_packet {
+	__le32 cmd;
+	__le16 size;
+	__le16 seq;
+	__le32 error;
+	__le32 pad;
+	u8 data[0];
+};
+
+struct snd_us16x08_control_params {
+	const struct snd_kcontrol_new *kcontrol_new;
+	int control_id;
+	int type;
+	int num_channels;
+	const char *name;
+	int default_val;
+};
+
+struct snd_us16x08_comp_store {
+	u8 val[96];
+};
+
+struct snd_us16x08_eq_store {
+	u8 val[256];
+};
+
+struct snd_us16x08_meter_store {
+	int meter_level[16];
+	int master_level[2];
+	int comp_index;
+	int comp_active_index;
+	int comp_level[16];
+	struct snd_us16x08_comp_store *comp_store;
+};
+
+struct s1810c_ctl_packet {
+	u32 a;
+	u32 b;
+	u32 fixed1;
+	u32 fixed2;
+	u32 c;
+	u32 d;
+	u32 e;
+};
+
+struct s1810_mixer_state {
+	uint16_t seqnum;
+	struct mutex usb_mutex;
+	struct mutex data_mutex;
+};
+
+struct s1810c_state_packet {
+	u32 fields[63];
+};
+
+enum {
+	UAC3_PD_STATE_D0 = 0,
+	UAC3_PD_STATE_D1 = 1,
+	UAC3_PD_STATE_D2 = 2,
+};
+
+struct uac3_power_domain_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bPowerDomainID;
+	__le16 waRecoveryTime1;
+	__le16 waRecoveryTime2;
+	__u8 bNrEntities;
+	__u8 baEntityID[0];
+} __attribute__((packed));
+
+typedef int (*quirk_func_t)(struct snd_usb_audio *, struct usb_interface *, struct usb_driver *, const struct snd_usb_audio_quirk *);
+
+typedef s8 int8_t;
+
+struct snd_usb_midi_endpoint_info {
+	int8_t out_ep;
+	uint8_t out_interval;
+	int8_t in_ep;
+	uint8_t in_interval;
+	uint16_t out_cables;
+	uint16_t in_cables;
+	int16_t assoc_in_jacks[16];
+	int16_t assoc_out_jacks[16];
+};
+
+struct usb_audio_quirk_flags_table {
+	u32 id;
+	u32 flags;
+};
+
+enum quirk_type {
+	QUIRK_IGNORE_INTERFACE = 0,
+	QUIRK_COMPOSITE = 1,
+	QUIRK_AUTODETECT = 2,
+	QUIRK_MIDI_STANDARD_INTERFACE = 3,
+	QUIRK_MIDI_FIXED_ENDPOINT = 4,
+	QUIRK_MIDI_YAMAHA = 5,
+	QUIRK_MIDI_ROLAND = 6,
+	QUIRK_MIDI_MIDIMAN = 7,
+	QUIRK_MIDI_NOVATION = 8,
+	QUIRK_MIDI_RAW_BYTES = 9,
+	QUIRK_MIDI_EMAGIC = 10,
+	QUIRK_MIDI_CME = 11,
+	QUIRK_MIDI_AKAI = 12,
+	QUIRK_MIDI_US122L = 13,
+	QUIRK_MIDI_FTDI = 14,
+	QUIRK_MIDI_CH345 = 15,
+	QUIRK_AUDIO_STANDARD_INTERFACE = 16,
+	QUIRK_AUDIO_FIXED_ENDPOINT = 17,
+	QUIRK_AUDIO_EDIROL_UAXX = 18,
+	QUIRK_AUDIO_STANDARD_MIXER = 19,
+	QUIRK_TYPE_COUNT = 20,
+};
+
+enum {
+	EMU_QUIRK_SR_44100HZ = 0,
+	EMU_QUIRK_SR_48000HZ = 1,
+	EMU_QUIRK_SR_88200HZ = 2,
+	EMU_QUIRK_SR_96000HZ = 3,
+	EMU_QUIRK_SR_176400HZ = 4,
+	EMU_QUIRK_SR_192000HZ = 5,
+};
+
+struct usb_ms_endpoint_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bNumEmbMIDIJack;
+	__u8 baAssocJackID[0];
+};
+
+struct uac1_as_header_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bTerminalLink;
+	__u8 bDelay;
+	__le16 wFormatTag;
+} __attribute__((packed));
+
+struct usb_midi_out_jack_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bJackType;
+	__u8 bJackID;
+	__u8 bNrInputPins;
+	struct usb_midi_source_pin pins[0];
+};
+
+struct uac3_iso_endpoint_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__le32 bmControls;
+	__u8 bLockDelayUnits;
+	__le16 wLockDelay;
+} __attribute__((packed));
+
+struct uac3_hc_descriptor_header {
+	__le16 wLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__le16 wDescriptorID;
+};
+
+struct uac3_cluster_segment_descriptor {
+	__le16 wLength;
+	__u8 bSegmentType;
+} __attribute__((packed));
+
+struct uac3_cluster_information_segment_descriptor {
+	__le16 wLength;
+	__u8 bSegmentType;
+	__u8 bChPurpose;
+	__u8 bChRelationship;
+	__u8 bChGroupID;
+};
+
+struct uac_iso_endpoint_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bmAttributes;
+	__u8 bLockDelayUnits;
+	__le16 wLockDelay;
+} __attribute__((packed));
+
+struct usb_desc_validator {
+	unsigned char protocol;
+	unsigned char type;
+	bool (*func)(const void *, const struct usb_desc_validator *);
+	size_t size;
+};
+
+struct snd_usb_midi_in_endpoint;
+
+struct snd_usb_midi_out_endpoint;
+
+struct usb_protocol_ops {
+	void (*input)(struct snd_usb_midi_in_endpoint *, uint8_t *, int);
+	void (*output)(struct snd_usb_midi_out_endpoint *, struct urb *);
+	void (*output_packet)(struct urb *, uint8_t, uint8_t, uint8_t, uint8_t);
+	void (*init_out_endpoint)(struct snd_usb_midi_out_endpoint *);
+	void (*finish_out_endpoint)(struct snd_usb_midi_out_endpoint *);
+};
+
+struct usbmidi_in_port {
+	struct snd_rawmidi_substream *substream;
+	u8 running_status_length;
+};
+
+struct snd_usb_midi;
+
+struct snd_usb_midi_in_endpoint {
+	struct snd_usb_midi *umidi;
+	struct urb *urbs[7];
+	struct usbmidi_in_port ports[16];
+	u8 seen_f5;
+	bool in_sysex;
+	u8 last_cin;
+	u8 error_resubmit;
+	int current_port;
+};
+
+struct snd_usb_midi_endpoint {
+	struct snd_usb_midi_out_endpoint *out;
+	struct snd_usb_midi_in_endpoint *in;
+};
+
+struct snd_usb_midi {
+	struct usb_device *dev;
+	struct snd_card *card;
+	struct usb_interface *iface;
+	const struct snd_usb_audio_quirk *quirk;
+	struct snd_rawmidi *rmidi;
+	const struct usb_protocol_ops *usb_protocol_ops;
+	struct list_head list;
+	struct timer_list error_timer;
+	spinlock_t disc_lock;
+	struct rw_semaphore disc_rwsem;
+	struct mutex mutex;
+	u32 usb_id;
+	int next_midi_device;
+	struct snd_usb_midi_endpoint endpoints[2];
+	unsigned long input_triggered;
+	unsigned int opened[2];
+	unsigned char disconnected;
+	unsigned char input_running;
+	struct snd_kcontrol *roland_load_ctl;
+};
+
+struct snd_seq_addr {
+	unsigned char client;
+	unsigned char port;
+};
+
+struct snd_seq_port_info {
+	struct snd_seq_addr addr;
+	char name[64];
+	unsigned int capability;
+	unsigned int type;
+	int midi_channels;
+	int midi_voices;
+	int synth_voices;
+	int read_use;
+	int write_use;
+	void *kernel;
+	unsigned int flags;
+	unsigned char time_queue;
+	unsigned char direction;
+	unsigned char ump_group;
+	char reserved[57];
+};
+
+struct out_urb_context {
+	struct urb *urb;
+	struct snd_usb_midi_out_endpoint *ep;
+};
+
+struct usbmidi_out_port {
+	struct snd_usb_midi_out_endpoint *ep;
+	struct snd_rawmidi_substream *substream;
+	int active;
+	uint8_t cable;
+	uint8_t state;
+	uint8_t data[2];
+};
+
+struct snd_usb_midi_out_endpoint {
+	struct snd_usb_midi *umidi;
+	struct out_urb_context urbs[7];
+	unsigned int active_urbs;
+	unsigned int drain_urbs;
+	int max_transfer;
+	struct work_struct work;
+	unsigned int next_urb;
+	spinlock_t buffer_lock;
+	struct usbmidi_out_port ports[16];
+	int current_port;
+	wait_queue_head_t drain_wait;
+};
+
+struct port_info {
+	u32 id;
+	short port;
+	short voices;
+	const char *name;
+	unsigned int seq_flags;
+};
+
+struct snd_soc_card;
+
+typedef void (*btf_trace_snd_soc_bias_level_start)(void *, struct snd_soc_card *, int);
+
+enum snd_soc_pcm_subclass {
+	SND_SOC_PCM_CLASS_PCM = 0,
+	SND_SOC_PCM_CLASS_BE = 1,
+};
+
+enum snd_soc_bias_level {
+	SND_SOC_BIAS_OFF = 0,
+	SND_SOC_BIAS_STANDBY = 1,
+	SND_SOC_BIAS_PREPARE = 2,
+	SND_SOC_BIAS_ON = 3,
+};
+
+struct snd_soc_component;
+
+struct snd_soc_dapm_widget;
+
+struct snd_soc_dapm_context {
+	enum snd_soc_bias_level bias_level;
+	unsigned int idle_bias_off: 1;
+	unsigned int suspend_bias_off: 1;
+	struct device *dev;
+	struct snd_soc_component *component;
+	struct snd_soc_card *card;
+	enum snd_soc_bias_level target_bias_level;
+	struct list_head list;
+	struct snd_soc_dapm_widget *wcache_sink;
+	struct snd_soc_dapm_widget *wcache_source;
+	struct dentry *debugfs_dapm;
+};
+
+struct snd_soc_dapm_stats {
+	int power_checks;
+	int path_checks;
+	int neighbour_checks;
+};
+
+struct snd_soc_dai_link;
+
+struct snd_soc_codec_conf;
+
+struct snd_soc_aux_dev;
+
+struct snd_soc_dapm_route;
+
+struct snd_soc_dapm_update;
+
+struct snd_soc_card {
+	const char *name;
+	const char *long_name;
+	const char *driver_name;
+	const char *components;
+	unsigned short pci_subsystem_vendor;
+	unsigned short pci_subsystem_device;
+	bool pci_subsystem_set;
+	char topology_shortname[32];
+	struct device *dev;
+	struct snd_card *snd_card;
+	struct module *owner;
+	struct mutex mutex;
+	struct mutex dapm_mutex;
+	struct mutex pcm_mutex;
+	enum snd_soc_pcm_subclass pcm_subclass;
+	int (*probe)(struct snd_soc_card *);
+	int (*late_probe)(struct snd_soc_card *);
+	void (*fixup_controls)(struct snd_soc_card *);
+	int (*remove)(struct snd_soc_card *);
+	int (*suspend_pre)(struct snd_soc_card *);
+	int (*suspend_post)(struct snd_soc_card *);
+	int (*resume_pre)(struct snd_soc_card *);
+	int (*resume_post)(struct snd_soc_card *);
+	int (*set_bias_level)(struct snd_soc_card *, struct snd_soc_dapm_context *, enum snd_soc_bias_level);
+	int (*set_bias_level_post)(struct snd_soc_card *, struct snd_soc_dapm_context *, enum snd_soc_bias_level);
+	int (*add_dai_link)(struct snd_soc_card *, struct snd_soc_dai_link *);
+	void (*remove_dai_link)(struct snd_soc_card *, struct snd_soc_dai_link *);
+	long pmdown_time;
+	struct snd_soc_dai_link *dai_link;
+	int num_links;
+	struct list_head rtd_list;
+	int num_rtd;
+	struct snd_soc_codec_conf *codec_conf;
+	int num_configs;
+	struct snd_soc_aux_dev *aux_dev;
+	int num_aux_devs;
+	struct list_head aux_comp_list;
+	const struct snd_kcontrol_new *controls;
+	int num_controls;
+	const struct snd_soc_dapm_widget *dapm_widgets;
+	int num_dapm_widgets;
+	const struct snd_soc_dapm_route *dapm_routes;
+	int num_dapm_routes;
+	const struct snd_soc_dapm_widget *of_dapm_widgets;
+	int num_of_dapm_widgets;
+	const struct snd_soc_dapm_route *of_dapm_routes;
+	int num_of_dapm_routes;
+	struct list_head component_dev_list;
+	struct list_head list;
+	struct list_head widgets;
+	struct list_head paths;
+	struct list_head dapm_list;
+	struct list_head dapm_dirty;
+	struct list_head dobj_list;
+	struct snd_soc_dapm_context dapm;
+	struct snd_soc_dapm_stats dapm_stats;
+	struct snd_soc_dapm_update *update;
+	struct dentry *debugfs_card_root;
+	struct work_struct deferred_resume_work;
+	u32 pop_time;
+	unsigned int instantiated: 1;
+	unsigned int topology_shortname_created: 1;
+	unsigned int fully_routed: 1;
+	unsigned int disable_route_checks: 1;
+	unsigned int probed: 1;
+	unsigned int component_chaining: 1;
+	void *drvdata;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct snd_soc_component_driver;
+
+struct snd_soc_component {
+	const char *name;
+	int id;
+	const char *name_prefix;
+	struct device *dev;
+	struct snd_soc_card *card;
+	unsigned int active;
+	unsigned int suspended: 1;
+	struct list_head list;
+	struct list_head card_aux_list;
+	struct list_head card_list;
+	const struct snd_soc_component_driver *driver;
+	struct list_head dai_list;
+	int num_dai;
+	struct regmap *regmap;
+	int val_bytes;
+	struct mutex io_mutex;
+	struct list_head dobj_list;
+	struct snd_soc_dapm_context dapm;
+	int (*init)(struct snd_soc_component *);
+	void *mark_module;
+	struct snd_pcm_substream *mark_open;
+	struct snd_pcm_substream *mark_hw_params;
+	struct snd_pcm_substream *mark_trigger;
+	struct snd_compr_stream *mark_compr_open;
+	void *mark_pm;
+	struct dentry *debugfs_root;
+	const char *debugfs_prefix;
+};
+
+enum snd_soc_dapm_type {
+	snd_soc_dapm_input = 0,
+	snd_soc_dapm_output = 1,
+	snd_soc_dapm_mux = 2,
+	snd_soc_dapm_demux = 3,
+	snd_soc_dapm_mixer = 4,
+	snd_soc_dapm_mixer_named_ctl = 5,
+	snd_soc_dapm_pga = 6,
+	snd_soc_dapm_out_drv = 7,
+	snd_soc_dapm_adc = 8,
+	snd_soc_dapm_dac = 9,
+	snd_soc_dapm_micbias = 10,
+	snd_soc_dapm_mic = 11,
+	snd_soc_dapm_hp = 12,
+	snd_soc_dapm_spk = 13,
+	snd_soc_dapm_line = 14,
+	snd_soc_dapm_switch = 15,
+	snd_soc_dapm_vmid = 16,
+	snd_soc_dapm_pre = 17,
+	snd_soc_dapm_post = 18,
+	snd_soc_dapm_supply = 19,
+	snd_soc_dapm_pinctrl = 20,
+	snd_soc_dapm_regulator_supply = 21,
+	snd_soc_dapm_clock_supply = 22,
+	snd_soc_dapm_aif_in = 23,
+	snd_soc_dapm_aif_out = 24,
+	snd_soc_dapm_siggen = 25,
+	snd_soc_dapm_sink = 26,
+	snd_soc_dapm_dai_in = 27,
+	snd_soc_dapm_dai_out = 28,
+	snd_soc_dapm_dai_link = 29,
+	snd_soc_dapm_kcontrol = 30,
+	snd_soc_dapm_buffer = 31,
+	snd_soc_dapm_scheduler = 32,
+	snd_soc_dapm_effect = 33,
+	snd_soc_dapm_src = 34,
+	snd_soc_dapm_asrc = 35,
+	snd_soc_dapm_encoder = 36,
+	snd_soc_dapm_decoder = 37,
+	SND_SOC_DAPM_TYPE_COUNT = 38,
+};
+
+enum snd_soc_trigger_order {
+	SND_SOC_TRIGGER_ORDER_DEFAULT = 0,
+	SND_SOC_TRIGGER_ORDER_LDC = 1,
+	SND_SOC_TRIGGER_ORDER_MAX = 2,
+};
+
+struct snd_soc_pcm_runtime;
+
+struct snd_soc_jack;
+
+struct snd_compress_ops;
+
+struct snd_soc_component_driver {
+	const char *name;
+	const struct snd_kcontrol_new *controls;
+	unsigned int num_controls;
+	const struct snd_soc_dapm_widget *dapm_widgets;
+	unsigned int num_dapm_widgets;
+	const struct snd_soc_dapm_route *dapm_routes;
+	unsigned int num_dapm_routes;
+	int (*probe)(struct snd_soc_component *);
+	void (*remove)(struct snd_soc_component *);
+	int (*suspend)(struct snd_soc_component *);
+	int (*resume)(struct snd_soc_component *);
+	unsigned int (*read)(struct snd_soc_component *, unsigned int);
+	int (*write)(struct snd_soc_component *, unsigned int, unsigned int);
+	int (*pcm_construct)(struct snd_soc_component *, struct snd_soc_pcm_runtime *);
+	void (*pcm_destruct)(struct snd_soc_component *, struct snd_pcm *);
+	int (*set_sysclk)(struct snd_soc_component *, int, int, unsigned int, int);
+	int (*set_pll)(struct snd_soc_component *, int, int, unsigned int, unsigned int);
+	int (*set_jack)(struct snd_soc_component *, struct snd_soc_jack *, void *);
+	int (*get_jack_type)(struct snd_soc_component *);
+	int (*of_xlate_dai_name)(struct snd_soc_component *, const struct of_phandle_args *, const char **);
+	int (*of_xlate_dai_id)(struct snd_soc_component *, struct device_node *);
+	void (*seq_notifier)(struct snd_soc_component *, enum snd_soc_dapm_type, int);
+	int (*stream_event)(struct snd_soc_component *, int);
+	int (*set_bias_level)(struct snd_soc_component *, enum snd_soc_bias_level);
+	int (*open)(struct snd_soc_component *, struct snd_pcm_substream *);
+	int (*close)(struct snd_soc_component *, struct snd_pcm_substream *);
+	int (*ioctl)(struct snd_soc_component *, struct snd_pcm_substream *, unsigned int, void *);
+	int (*hw_params)(struct snd_soc_component *, struct snd_pcm_substream *, struct snd_pcm_hw_params *);
+	int (*hw_free)(struct snd_soc_component *, struct snd_pcm_substream *);
+	int (*prepare)(struct snd_soc_component *, struct snd_pcm_substream *);
+	int (*trigger)(struct snd_soc_component *, struct snd_pcm_substream *, int);
+	int (*sync_stop)(struct snd_soc_component *, struct snd_pcm_substream *);
+	snd_pcm_uframes_t (*pointer)(struct snd_soc_component *, struct snd_pcm_substream *);
+	int (*get_time_info)(struct snd_soc_component *, struct snd_pcm_substream *, struct timespec64 *, struct timespec64 *, struct snd_pcm_audio_tstamp_config *, struct snd_pcm_audio_tstamp_report *);
+	int (*copy)(struct snd_soc_component *, struct snd_pcm_substream *, int, unsigned long, struct iov_iter *, unsigned long);
+	struct page * (*page)(struct snd_soc_component *, struct snd_pcm_substream *, unsigned long);
+	int (*mmap)(struct snd_soc_component *, struct snd_pcm_substream *, struct vm_area_struct *);
+	int (*ack)(struct snd_soc_component *, struct snd_pcm_substream *);
+	snd_pcm_sframes_t (*delay)(struct snd_soc_component *, struct snd_pcm_substream *);
+	const struct snd_compress_ops *compress_ops;
+	int probe_order;
+	int remove_order;
+	enum snd_soc_trigger_order trigger_start;
+	enum snd_soc_trigger_order trigger_stop;
+	unsigned int module_get_upon_open: 1;
+	unsigned int idle_bias_on: 1;
+	unsigned int suspend_bias_off: 1;
+	unsigned int use_pmdown_time: 1;
+	unsigned int endianness: 1;
+	unsigned int legacy_dai_naming: 1;
+	const char *ignore_machine;
+	const char *topology_name_prefix;
+	int (*be_hw_params_fixup)(struct snd_soc_pcm_runtime *, struct snd_pcm_hw_params *);
+	bool use_dai_pcm_id;
+	int be_pcm_base;
+	const char *debugfs_prefix;
+};
+
+enum snd_soc_dobj_type {
+	SND_SOC_DOBJ_NONE = 0,
+	SND_SOC_DOBJ_MIXER = 1,
+	SND_SOC_DOBJ_BYTES = 2,
+	SND_SOC_DOBJ_ENUM = 3,
+	SND_SOC_DOBJ_GRAPH = 4,
+	SND_SOC_DOBJ_WIDGET = 5,
+	SND_SOC_DOBJ_DAI_LINK = 6,
+	SND_SOC_DOBJ_PCM = 7,
+	SND_SOC_DOBJ_CODEC_LINK = 8,
+	SND_SOC_DOBJ_BACKEND_LINK = 9,
+};
+
+struct snd_soc_dobj_control {
+	struct snd_kcontrol *kcontrol;
+	char **dtexts;
+	unsigned long *dvalues;
+};
+
+struct snd_soc_dobj_widget {
+	unsigned int *kcontrol_type;
+};
+
+struct snd_soc_dobj {
+	enum snd_soc_dobj_type type;
+	unsigned int index;
+	struct list_head list;
+	int (*unload)(struct snd_soc_component *, struct snd_soc_dobj *);
+	union {
+		struct snd_soc_dobj_control control;
+		struct snd_soc_dobj_widget widget;
+	};
+	void *private;
+};
+
+struct snd_soc_dapm_widget {
+	enum snd_soc_dapm_type id;
+	const char *name;
+	const char *sname;
+	struct list_head list;
+	struct snd_soc_dapm_context *dapm;
+	void *priv;
+	struct regulator *regulator;
+	struct pinctrl *pinctrl;
+	int reg;
+	unsigned char shift;
+	unsigned int mask;
+	unsigned int on_val;
+	unsigned int off_val;
+	unsigned char power: 1;
+	unsigned char active: 1;
+	unsigned char connected: 1;
+	unsigned char new: 1;
+	unsigned char force: 1;
+	unsigned char ignore_suspend: 1;
+	unsigned char new_power: 1;
+	unsigned char power_checked: 1;
+	unsigned char is_supply: 1;
+	unsigned char is_ep: 2;
+	unsigned char no_wname_in_kcontrol_name: 1;
+	int subseq;
+	int (*power_check)(struct snd_soc_dapm_widget *);
+	unsigned short event_flags;
+	int (*event)(struct snd_soc_dapm_widget *, struct snd_kcontrol *, int);
+	int num_kcontrols;
+	const struct snd_kcontrol_new *kcontrol_news;
+	struct snd_kcontrol **kcontrols;
+	struct snd_soc_dobj dobj;
+	struct list_head edges[2];
+	struct list_head work_list;
+	struct list_head power_list;
+	struct list_head dirty;
+	int endpoints[2];
+	struct clk *clk;
+	int channel;
+};
+
+struct snd_soc_dapm_route {
+	const char *sink;
+	const char *control;
+	const char *source;
+	int (*connected)(struct snd_soc_dapm_widget *, struct snd_soc_dapm_widget *);
+	struct snd_soc_dobj dobj;
+};
+
+enum snd_soc_dpcm_update {
+	SND_SOC_DPCM_UPDATE_NO = 0,
+	SND_SOC_DPCM_UPDATE_BE = 1,
+	SND_SOC_DPCM_UPDATE_FE = 2,
+};
+
+enum snd_soc_dpcm_state {
+	SND_SOC_DPCM_STATE_NEW = 0,
+	SND_SOC_DPCM_STATE_OPEN = 1,
+	SND_SOC_DPCM_STATE_HW_PARAMS = 2,
+	SND_SOC_DPCM_STATE_PREPARE = 3,
+	SND_SOC_DPCM_STATE_START = 4,
+	SND_SOC_DPCM_STATE_STOP = 5,
+	SND_SOC_DPCM_STATE_PAUSED = 6,
+	SND_SOC_DPCM_STATE_SUSPEND = 7,
+	SND_SOC_DPCM_STATE_HW_FREE = 8,
+	SND_SOC_DPCM_STATE_CLOSE = 9,
+};
+
+struct snd_soc_dpcm_runtime {
+	struct list_head be_clients;
+	struct list_head fe_clients;
+	int users;
+	struct snd_pcm_hw_params hw_params;
+	enum snd_soc_dpcm_update runtime_update;
+	enum snd_soc_dpcm_state state;
+	int trigger_pending;
+	int be_start;
+	int be_pause;
+	bool fe_pause;
+};
+
+struct snd_soc_dai;
+
+struct snd_soc_pcm_runtime {
+	struct device *dev;
+	struct snd_soc_card *card;
+	struct snd_soc_dai_link *dai_link;
+	struct snd_pcm_ops ops;
+	unsigned int c2c_params_select;
+	struct snd_soc_dpcm_runtime dpcm[2];
+	struct snd_soc_dapm_widget *c2c_widget[2];
+	long pmdown_time;
+	struct snd_pcm *pcm;
+	struct snd_compr *compr;
+	struct snd_soc_dai **dais;
+	struct delayed_work delayed_work;
+	void (*close_delayed_work_func)(struct snd_soc_pcm_runtime *);
+	struct dentry *debugfs_dpcm_root;
+	unsigned int num;
+	struct list_head list;
+	struct snd_pcm_substream *mark_startup;
+	struct snd_pcm_substream *mark_hw_params;
+	struct snd_pcm_substream *mark_trigger;
+	struct snd_compr_stream *mark_compr_startup;
+	unsigned int pop_wait: 1;
+	unsigned int fe_compr: 1;
+	bool initialized;
+	int num_components;
+	u64 android_kabi_reserved1;
+	struct snd_soc_component *components[0];
+};
+
+enum snd_soc_dpcm_trigger {
+	SND_SOC_DPCM_TRIGGER_PRE = 0,
+	SND_SOC_DPCM_TRIGGER_POST = 1,
+	SND_SOC_DPCM_TRIGGER_BESPOKE = 2,
+};
+
+struct snd_soc_dai_link_component;
+
+struct snd_soc_dai_link_codec_ch_map;
+
+struct snd_soc_pcm_stream;
+
+struct snd_soc_ops;
+
+struct snd_soc_compr_ops;
+
+struct snd_soc_dai_link {
+	const char *name;
+	const char *stream_name;
+	struct snd_soc_dai_link_component *cpus;
+	unsigned int num_cpus;
+	struct snd_soc_dai_link_component *codecs;
+	unsigned int num_codecs;
+	struct snd_soc_dai_link_codec_ch_map *codec_ch_maps;
+	struct snd_soc_dai_link_component *platforms;
+	unsigned int num_platforms;
+	int id;
+	const struct snd_soc_pcm_stream *c2c_params;
+	unsigned int num_c2c_params;
+	unsigned int dai_fmt;
+	enum snd_soc_dpcm_trigger trigger[2];
+	int (*init)(struct snd_soc_pcm_runtime *);
+	void (*exit)(struct snd_soc_pcm_runtime *);
+	int (*be_hw_params_fixup)(struct snd_soc_pcm_runtime *, struct snd_pcm_hw_params *);
+	const struct snd_soc_ops *ops;
+	const struct snd_soc_compr_ops *compr_ops;
+	enum snd_soc_trigger_order trigger_start;
+	enum snd_soc_trigger_order trigger_stop;
+	unsigned int nonatomic: 1;
+	unsigned int playback_only: 1;
+	unsigned int capture_only: 1;
+	unsigned int ignore_suspend: 1;
+	unsigned int symmetric_rate: 1;
+	unsigned int symmetric_channels: 1;
+	unsigned int symmetric_sample_bits: 1;
+	unsigned int no_pcm: 1;
+	unsigned int dynamic: 1;
+	unsigned int dpcm_capture: 1;
+	unsigned int dpcm_playback: 1;
+	unsigned int dpcm_merged_format: 1;
+	unsigned int dpcm_merged_chan: 1;
+	unsigned int dpcm_merged_rate: 1;
+	unsigned int ignore_pmdown_time: 1;
+	unsigned int ignore: 1;
+	struct snd_soc_dobj dobj;
+	u64 android_kabi_reserved1;
+};
+
+struct snd_soc_dai_link_component {
+	const char *name;
+	struct device_node *of_node;
+	const char *dai_name;
+	struct of_phandle_args *dai_args;
+};
+
+struct snd_soc_dai_link_codec_ch_map {
+	unsigned int connected_cpu_id;
+	unsigned int ch_mask;
+};
+
+struct snd_soc_pcm_stream {
+	const char *stream_name;
+	u64 formats;
+	unsigned int rates;
+	unsigned int rate_min;
+	unsigned int rate_max;
+	unsigned int channels_min;
+	unsigned int channels_max;
+	unsigned int sig_bits;
+};
+
+struct snd_soc_ops {
+	int (*startup)(struct snd_pcm_substream *);
+	void (*shutdown)(struct snd_pcm_substream *);
+	int (*hw_params)(struct snd_pcm_substream *, struct snd_pcm_hw_params *);
+	int (*hw_free)(struct snd_pcm_substream *);
+	int (*prepare)(struct snd_pcm_substream *);
+	int (*trigger)(struct snd_pcm_substream *, int);
+};
+
+struct snd_soc_compr_ops {
+	int (*startup)(struct snd_compr_stream *);
+	void (*shutdown)(struct snd_compr_stream *);
+	int (*set_params)(struct snd_compr_stream *);
+};
+
+struct snd_soc_dai_stream {
+	struct snd_soc_dapm_widget *widget;
+	unsigned int active;
+	unsigned int tdm_mask;
+	void *dma_data;
+};
+
+struct snd_soc_dai_driver;
+
+struct snd_soc_dai {
+	const char *name;
+	int id;
+	struct device *dev;
+	struct snd_soc_dai_driver *driver;
+	struct snd_soc_dai_stream stream[2];
+	unsigned int rate;
+	unsigned int channels;
+	unsigned int sample_bits;
+	struct snd_soc_component *component;
+	struct list_head list;
+	struct snd_pcm_substream *mark_startup;
+	struct snd_pcm_substream *mark_hw_params;
+	struct snd_pcm_substream *mark_trigger;
+	struct snd_compr_stream *mark_compr_startup;
+	unsigned int probed: 1;
+};
+
+struct snd_soc_dai_ops;
+
+struct snd_soc_cdai_ops;
+
+struct snd_soc_dai_driver {
+	const char *name;
+	unsigned int id;
+	unsigned int base;
+	struct snd_soc_dobj dobj;
+	struct of_phandle_args *dai_args;
+	const struct snd_soc_dai_ops *ops;
+	const struct snd_soc_cdai_ops *cops;
+	struct snd_soc_pcm_stream capture;
+	struct snd_soc_pcm_stream playback;
+	unsigned int symmetric_rate: 1;
+	unsigned int symmetric_channels: 1;
+	unsigned int symmetric_sample_bits: 1;
+};
+
+struct snd_soc_dai_ops {
+	int (*probe)(struct snd_soc_dai *);
+	int (*remove)(struct snd_soc_dai *);
+	int (*compress_new)(struct snd_soc_pcm_runtime *, int);
+	int (*pcm_new)(struct snd_soc_pcm_runtime *, struct snd_soc_dai *);
+	int (*set_sysclk)(struct snd_soc_dai *, int, unsigned int, int);
+	int (*set_pll)(struct snd_soc_dai *, int, int, unsigned int, unsigned int);
+	int (*set_clkdiv)(struct snd_soc_dai *, int, int);
+	int (*set_bclk_ratio)(struct snd_soc_dai *, unsigned int);
+	int (*set_fmt)(struct snd_soc_dai *, unsigned int);
+	int (*xlate_tdm_slot_mask)(unsigned int, unsigned int *, unsigned int *);
+	int (*set_tdm_slot)(struct snd_soc_dai *, unsigned int, unsigned int, int, int);
+	int (*set_channel_map)(struct snd_soc_dai *, unsigned int, unsigned int *, unsigned int, unsigned int *);
+	int (*get_channel_map)(struct snd_soc_dai *, unsigned int *, unsigned int *, unsigned int *, unsigned int *);
+	int (*set_tristate)(struct snd_soc_dai *, int);
+	int (*set_stream)(struct snd_soc_dai *, void *, int);
+	void * (*get_stream)(struct snd_soc_dai *, int);
+	int (*mute_stream)(struct snd_soc_dai *, int, int);
+	int (*startup)(struct snd_pcm_substream *, struct snd_soc_dai *);
+	void (*shutdown)(struct snd_pcm_substream *, struct snd_soc_dai *);
+	int (*hw_params)(struct snd_pcm_substream *, struct snd_pcm_hw_params *, struct snd_soc_dai *);
+	int (*hw_free)(struct snd_pcm_substream *, struct snd_soc_dai *);
+	int (*prepare)(struct snd_pcm_substream *, struct snd_soc_dai *);
+	int (*trigger)(struct snd_pcm_substream *, int, struct snd_soc_dai *);
+	int (*bespoke_trigger)(struct snd_pcm_substream *, int, struct snd_soc_dai *);
+	snd_pcm_sframes_t (*delay)(struct snd_pcm_substream *, struct snd_soc_dai *);
+	u64 *auto_selectable_formats;
+	int num_auto_selectable_formats;
+	int probe_order;
+	int remove_order;
+	unsigned int no_capture_mute: 1;
+	unsigned int mute_unmute_on_trigger: 1;
+};
+
+struct snd_soc_cdai_ops {
+	int (*startup)(struct snd_compr_stream *, struct snd_soc_dai *);
+	int (*shutdown)(struct snd_compr_stream *, struct snd_soc_dai *);
+	int (*set_params)(struct snd_compr_stream *, struct snd_compr_params *, struct snd_soc_dai *);
+	int (*get_params)(struct snd_compr_stream *, struct snd_codec *, struct snd_soc_dai *);
+	int (*set_metadata)(struct snd_compr_stream *, struct snd_compr_metadata *, struct snd_soc_dai *);
+	int (*get_metadata)(struct snd_compr_stream *, struct snd_compr_metadata *, struct snd_soc_dai *);
+	int (*trigger)(struct snd_compr_stream *, int, struct snd_soc_dai *);
+	int (*pointer)(struct snd_compr_stream *, struct snd_compr_tstamp *, struct snd_soc_dai *);
+	int (*ack)(struct snd_compr_stream *, size_t, struct snd_soc_dai *);
+};
+
+struct snd_soc_jack {
+	struct mutex mutex;
+	struct snd_jack *jack;
+	struct snd_soc_card *card;
+	struct list_head pins;
+	int status;
+	struct blocking_notifier_head notifier;
+	struct list_head jack_zones;
+};
+
+struct snd_compress_ops {
+	int (*open)(struct snd_soc_component *, struct snd_compr_stream *);
+	int (*free)(struct snd_soc_component *, struct snd_compr_stream *);
+	int (*set_params)(struct snd_soc_component *, struct snd_compr_stream *, struct snd_compr_params *);
+	int (*get_params)(struct snd_soc_component *, struct snd_compr_stream *, struct snd_codec *);
+	int (*set_metadata)(struct snd_soc_component *, struct snd_compr_stream *, struct snd_compr_metadata *);
+	int (*get_metadata)(struct snd_soc_component *, struct snd_compr_stream *, struct snd_compr_metadata *);
+	int (*trigger)(struct snd_soc_component *, struct snd_compr_stream *, int);
+	int (*pointer)(struct snd_soc_component *, struct snd_compr_stream *, struct snd_compr_tstamp *);
+	int (*copy)(struct snd_soc_component *, struct snd_compr_stream *, char __attribute__((btf_type_tag("user"))) *, size_t);
+	int (*mmap)(struct snd_soc_component *, struct snd_compr_stream *, struct vm_area_struct *);
+	int (*ack)(struct snd_soc_component *, struct snd_compr_stream *, size_t);
+	int (*get_caps)(struct snd_soc_component *, struct snd_compr_stream *, struct snd_compr_caps *);
+	int (*get_codec_caps)(struct snd_soc_component *, struct snd_compr_stream *, struct snd_compr_codec_caps *);
+};
+
+struct snd_soc_codec_conf {
+	struct snd_soc_dai_link_component dlc;
+	const char *name_prefix;
+};
+
+struct snd_soc_aux_dev {
+	struct snd_soc_dai_link_component dlc;
+	int (*init)(struct snd_soc_component *);
+};
+
+struct snd_soc_dapm_update {
+	struct snd_kcontrol *kcontrol;
+	int reg;
+	int mask;
+	int val;
+	int reg2;
+	int mask2;
+	int val2;
+	bool has_second_set;
+};
+
+typedef void (*btf_trace_snd_soc_bias_level_done)(void *, struct snd_soc_card *, int);
+
+typedef void (*btf_trace_snd_soc_dapm_start)(void *, struct snd_soc_card *);
+
+typedef void (*btf_trace_snd_soc_dapm_done)(void *, struct snd_soc_card *);
+
+typedef void (*btf_trace_snd_soc_dapm_widget_power)(void *, struct snd_soc_dapm_widget *, int);
+
+typedef void (*btf_trace_snd_soc_dapm_widget_event_start)(void *, struct snd_soc_dapm_widget *, int);
+
+typedef void (*btf_trace_snd_soc_dapm_widget_event_done)(void *, struct snd_soc_dapm_widget *, int);
+
+typedef void (*btf_trace_snd_soc_dapm_walk_done)(void *, struct snd_soc_card *);
+
+enum snd_soc_dapm_direction {
+	SND_SOC_DAPM_DIR_IN = 0,
+	SND_SOC_DAPM_DIR_OUT = 1,
+};
+
+struct snd_soc_dapm_path;
+
+typedef void (*btf_trace_snd_soc_dapm_path)(void *, struct snd_soc_dapm_widget *, enum snd_soc_dapm_direction, struct snd_soc_dapm_path *);
+
+struct snd_soc_dapm_path {
+	const char *name;
+	union {
+		struct {
+			struct snd_soc_dapm_widget *source;
+			struct snd_soc_dapm_widget *sink;
+		};
+		struct snd_soc_dapm_widget *node[2];
+	};
+	u32 connect: 1;
+	u32 walking: 1;
+	u32 weak: 1;
+	u32 is_supply: 1;
+	int (*connected)(struct snd_soc_dapm_widget *, struct snd_soc_dapm_widget *);
+	struct list_head list_node[2];
+	struct list_head list_kcontrol;
+	struct list_head list;
+};
+
+typedef void (*btf_trace_snd_soc_dapm_connected)(void *, int, int);
+
+typedef void (*btf_trace_snd_soc_jack_irq)(void *, const char *);
+
+typedef void (*btf_trace_snd_soc_jack_report)(void *, struct snd_soc_jack *, int, int);
+
+typedef void (*btf_trace_snd_soc_jack_notify)(void *, struct snd_soc_jack *, int);
+
+struct trace_event_raw_snd_soc_card {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	int val;
+	char __data[0];
+};
+
+struct trace_event_raw_snd_soc_dapm_basic {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	char __data[0];
+};
+
+struct trace_event_raw_snd_soc_dapm_widget {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	int val;
+	char __data[0];
+};
+
+struct trace_event_raw_snd_soc_dapm_walk_done {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	int power_checks;
+	int path_checks;
+	int neighbour_checks;
+	char __data[0];
+};
+
+struct trace_event_raw_snd_soc_dapm_path {
+	struct trace_entry ent;
+	u32 __data_loc_wname;
+	u32 __data_loc_pname;
+	u32 __data_loc_pnname;
+	int path_node;
+	int path_connect;
+	int path_dir;
+	char __data[0];
+};
+
+struct trace_event_raw_snd_soc_dapm_connected {
+	struct trace_entry ent;
+	int paths;
+	int stream;
+	char __data[0];
+};
+
+struct trace_event_raw_snd_soc_jack_irq {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	char __data[0];
+};
+
+struct trace_event_raw_snd_soc_jack_report {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	int mask;
+	int val;
+	char __data[0];
+};
+
+struct trace_event_raw_snd_soc_jack_notify {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	int val;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_snd_soc_card {
+	u32 name;
+};
+
+struct trace_event_data_offsets_snd_soc_dapm_basic {
+	u32 name;
+};
+
+struct trace_event_data_offsets_snd_soc_dapm_widget {
+	u32 name;
+};
+
+struct trace_event_data_offsets_snd_soc_dapm_walk_done {
+	u32 name;
+};
+
+struct trace_event_data_offsets_snd_soc_jack_irq {
+	u32 name;
+};
+
+struct trace_event_data_offsets_snd_soc_jack_report {
+	u32 name;
+};
+
+struct trace_event_data_offsets_snd_soc_jack_notify {
+	u32 name;
+};
+
+struct trace_event_data_offsets_snd_soc_dapm_path {
+	u32 wname;
+	u32 pname;
+	u32 pnname;
+};
+
+struct trace_event_data_offsets_snd_soc_dapm_connected {};
+
+struct soc_mixer_control {
+	int min;
+	int max;
+	int platform_max;
+	int reg;
+	int rreg;
+	unsigned int shift;
+	unsigned int rshift;
+	unsigned int sign_bit;
+	unsigned int invert: 1;
+	unsigned int autodisable: 1;
+	struct snd_soc_dobj dobj;
+	u64 android_kabi_reserved1;
+};
+
+struct soc_enum {
+	int reg;
+	unsigned char shift_l;
+	unsigned char shift_r;
+	unsigned int items;
+	unsigned int mask;
+	const char * const *texts;
+	const unsigned int *values;
+	unsigned int autodisable: 1;
+	struct snd_soc_dobj dobj;
+	u64 android_kabi_reserved1;
+};
+
+struct snd_soc_dapm_widget_list {
+	int num_widgets;
+	struct snd_soc_dapm_widget *widgets[0];
+};
+
+struct dapm_kcontrol_data {
+	unsigned int value;
+	struct snd_soc_dapm_widget *widget;
+	struct list_head paths;
+	struct snd_soc_dapm_widget_list *wlist;
+};
+
+struct snd_soc_dapm_pinctrl_priv {
+	const char *active_state;
+	const char *sleep_state;
+};
+
+struct snd_soc_jack_pin {
+	struct list_head list;
+	const char *pin;
+	int mask;
+	bool invert;
+};
+
+struct snd_soc_jack_zone {
+	unsigned int min_mv;
+	unsigned int max_mv;
+	unsigned int jack_type;
+	unsigned int debounce_time;
+	struct list_head list;
+};
+
+struct snd_soc_jack_gpio {
+	unsigned int gpio;
+	unsigned int idx;
+	struct device *gpiod_dev;
+	const char *name;
+	int report;
+	int invert;
+	int debounce_time;
+	bool wake;
+	struct snd_soc_jack *jack;
+	struct delayed_work work;
+	struct notifier_block pm_notifier;
+	struct gpio_desc *desc;
+	void *data;
+	int (*jack_status_check)(void *);
+};
+
+struct jack_gpio_tbl {
+	int count;
+	struct snd_soc_jack *jack;
+	struct snd_soc_jack_gpio *gpios;
+};
+
+enum snd_soc_dpcm_link_state {
+	SND_SOC_DPCM_LINK_STATE_NEW = 0,
+	SND_SOC_DPCM_LINK_STATE_FREE = 1,
+};
+
+struct snd_soc_dpcm {
+	struct snd_soc_pcm_runtime *be;
+	struct snd_soc_pcm_runtime *fe;
+	enum snd_soc_dpcm_link_state state;
+	struct list_head list_be;
+	struct list_head list_fe;
+	struct dentry *debugfs_state;
+};
+
+struct snd_dmaengine_pcm_config {
+	int (*prepare_slave_config)(struct snd_pcm_substream *, struct snd_pcm_hw_params *, struct dma_slave_config *);
+	struct dma_chan * (*compat_request_channel)(struct snd_soc_pcm_runtime *, struct snd_pcm_substream *);
+	int (*process)(struct snd_pcm_substream *, int, unsigned long, unsigned long);
+	dma_filter_fn compat_filter_fn;
+	struct device *dma_dev;
+	const char *chan_names[2];
+	const struct snd_pcm_hardware *pcm_hardware;
+	unsigned int prealloc_buffer_size;
+};
+
+struct soc_mreg_control {
+	long min;
+	long max;
+	unsigned int regbase;
+	unsigned int regcount;
+	unsigned int nbits;
+	unsigned int invert;
+};
+
+struct soc_bytes {
+	int base;
+	int num_regs;
+	u32 mask;
+};
+
+struct soc_bytes_ext {
+	int max;
+	struct snd_soc_dobj dobj;
+	int (*get)(struct snd_kcontrol *, unsigned int __attribute__((btf_type_tag("user"))) *, unsigned int);
+	int (*put)(struct snd_kcontrol *, const unsigned int __attribute__((btf_type_tag("user"))) *, unsigned int);
+};
+
+struct snd_soc_tplg_kcontrol_ops {
+	u32 id;
+	int (*get)(struct snd_kcontrol *, struct snd_ctl_elem_value *);
+	int (*put)(struct snd_kcontrol *, struct snd_ctl_elem_value *);
+	int (*info)(struct snd_kcontrol *, struct snd_ctl_elem_info *);
+};
+
+struct soc_tplg_map {
+	int uid;
+	int kid;
+};
+
+struct snd_soc_tplg_hdr {
+	__le32 magic;
+	__le32 abi;
+	__le32 version;
+	__le32 type;
+	__le32 size;
+	__le32 vendor_type;
+	__le32 payload_size;
+	__le32 index;
+	__le32 count;
+};
+
+struct snd_soc_tplg_io_ops {
+	__le32 get;
+	__le32 put;
+	__le32 info;
+};
+
+struct snd_soc_tplg_tlv_dbscale {
+	__le32 min;
+	__le32 step;
+	__le32 mute;
+};
+
+struct snd_soc_tplg_ctl_tlv {
+	__le32 size;
+	__le32 type;
+	union {
+		__le32 data[32];
+		struct snd_soc_tplg_tlv_dbscale scale;
+	};
+};
+
+struct snd_soc_tplg_ctl_hdr {
+	__le32 size;
+	__le32 type;
+	char name[44];
+	__le32 access;
+	struct snd_soc_tplg_io_ops ops;
+	struct snd_soc_tplg_ctl_tlv tlv;
+};
+
+struct snd_soc_tplg_channel {
+	__le32 size;
+	__le32 reg;
+	__le32 shift;
+	__le32 id;
+};
+
+struct snd_soc_tplg_vendor_uuid_elem {
+	__le32 token;
+	char uuid[16];
+};
+
+struct snd_soc_tplg_vendor_value_elem {
+	__le32 token;
+	__le32 value;
+};
+
+struct snd_soc_tplg_vendor_string_elem {
+	__le32 token;
+	char string[44];
+};
+
+struct snd_soc_tplg_vendor_array {
+	__le32 size;
+	__le32 type;
+	__le32 num_elems;
+	union {
+		struct {
+			struct {} __empty_uuid;
+			struct snd_soc_tplg_vendor_uuid_elem uuid[0];
+		};
+		struct {
+			struct {} __empty_value;
+			struct snd_soc_tplg_vendor_value_elem value[0];
+		};
+		struct {
+			struct {} __empty_string;
+			struct snd_soc_tplg_vendor_string_elem string[0];
+		};
+	};
+};
+
+struct snd_soc_tplg_private {
+	__le32 size;
+	union {
+		struct {
+			struct {} __empty_data;
+			char data[0];
+		};
+		struct {
+			struct {} __empty_array;
+			struct snd_soc_tplg_vendor_array array[0];
+		};
+	};
+};
+
+struct snd_soc_tplg_mixer_control {
+	struct snd_soc_tplg_ctl_hdr hdr;
+	__le32 size;
+	__le32 min;
+	__le32 max;
+	__le32 platform_max;
+	__le32 invert;
+	__le32 num_channels;
+	struct snd_soc_tplg_channel channel[8];
+	struct snd_soc_tplg_private priv;
+};
+
+struct snd_soc_tplg_bytes_control {
+	struct snd_soc_tplg_ctl_hdr hdr;
+	__le32 size;
+	__le32 max;
+	__le32 mask;
+	__le32 base;
+	__le32 num_regs;
+	struct snd_soc_tplg_io_ops ext_ops;
+	struct snd_soc_tplg_private priv;
+};
+
+struct snd_soc_tplg_enum_control {
+	struct snd_soc_tplg_ctl_hdr hdr;
+	__le32 size;
+	__le32 num_channels;
+	struct snd_soc_tplg_channel channel[8];
+	__le32 items;
+	__le32 mask;
+	__le32 count;
+	char texts[704];
+	__le32 values[176];
+	struct snd_soc_tplg_private priv;
+};
+
+struct snd_soc_tplg_dapm_graph_elem {
+	char sink[44];
+	char control[44];
+	char source[44];
+};
+
+struct snd_soc_tplg_dapm_widget {
+	__le32 size;
+	__le32 id;
+	char name[44];
+	char sname[44];
+	__le32 reg;
+	__le32 shift;
+	__le32 mask;
+	__le32 subseq;
+	__le32 invert;
+	__le32 ignore_suspend;
+	__le16 event_flags;
+	__le16 event_type;
+	__le32 num_kcontrols;
+	struct snd_soc_tplg_private priv;
+};
+
+struct snd_soc_tplg_stream {
+	__le32 size;
+	char name[44];
+	__le64 format;
+	__le32 rate;
+	__le32 period_bytes;
+	__le32 buffer_bytes;
+	__le32 channels;
+};
+
+struct snd_soc_tplg_stream_caps {
+	__le32 size;
+	char name[44];
+	__le64 formats;
+	__le32 rates;
+	__le32 rate_min;
+	__le32 rate_max;
+	__le32 channels_min;
+	__le32 channels_max;
+	__le32 periods_min;
+	__le32 periods_max;
+	__le32 period_size_min;
+	__le32 period_size_max;
+	__le32 buffer_size_min;
+	__le32 buffer_size_max;
+	__le32 sig_bits;
+};
+
+struct snd_soc_tplg_pcm {
+	__le32 size;
+	char pcm_name[44];
+	char dai_name[44];
+	__le32 pcm_id;
+	__le32 dai_id;
+	__le32 playback;
+	__le32 capture;
+	__le32 compress;
+	struct snd_soc_tplg_stream stream[8];
+	__le32 num_streams;
+	struct snd_soc_tplg_stream_caps caps[2];
+	__le32 flag_mask;
+	__le32 flags;
+	struct snd_soc_tplg_private priv;
+} __attribute__((packed));
+
+struct snd_soc_tplg_stream_caps_v4 {
+	__le32 size;
+	char name[44];
+	__le64 formats;
+	__le32 rates;
+	__le32 rate_min;
+	__le32 rate_max;
+	__le32 channels_min;
+	__le32 channels_max;
+	__le32 periods_min;
+	__le32 periods_max;
+	__le32 period_size_min;
+	__le32 period_size_max;
+	__le32 buffer_size_min;
+	__le32 buffer_size_max;
+} __attribute__((packed));
+
+struct snd_soc_tplg_pcm_v4 {
+	__le32 size;
+	char pcm_name[44];
+	char dai_name[44];
+	__le32 pcm_id;
+	__le32 dai_id;
+	__le32 playback;
+	__le32 capture;
+	__le32 compress;
+	struct snd_soc_tplg_stream stream[8];
+	__le32 num_streams;
+	struct snd_soc_tplg_stream_caps_v4 caps[2];
+} __attribute__((packed));
+
+struct snd_soc_tplg_dai {
+	__le32 size;
+	char dai_name[44];
+	__le32 dai_id;
+	__le32 playback;
+	__le32 capture;
+	struct snd_soc_tplg_stream_caps caps[2];
+	__le32 flag_mask;
+	__le32 flags;
+	struct snd_soc_tplg_private priv;
+} __attribute__((packed));
+
+struct snd_soc_tplg_hw_config {
+	__le32 size;
+	__le32 id;
+	__le32 fmt;
+	__u8 clock_gated;
+	__u8 invert_bclk;
+	__u8 invert_fsync;
+	__u8 bclk_provider;
+	__u8 fsync_provider;
+	__u8 mclk_direction;
+	__le16 reserved;
+	__le32 mclk_rate;
+	__le32 bclk_rate;
+	__le32 fsync_rate;
+	__le32 tdm_slots;
+	__le32 tdm_slot_width;
+	__le32 tx_slots;
+	__le32 rx_slots;
+	__le32 tx_channels;
+	__le32 tx_chanmap[8];
+	__le32 rx_channels;
+	__le32 rx_chanmap[8];
+};
+
+struct snd_soc_tplg_link_config {
+	__le32 size;
+	__le32 id;
+	char name[44];
+	char stream_name[44];
+	struct snd_soc_tplg_stream stream[8];
+	__le32 num_streams;
+	struct snd_soc_tplg_hw_config hw_config[8];
+	__le32 num_hw_configs;
+	__le32 default_hw_config_id;
+	__le32 flag_mask;
+	__le32 flags;
+	struct snd_soc_tplg_private priv;
+};
+
+struct snd_soc_tplg_link_config_v4 {
+	__le32 size;
+	__le32 id;
+	struct snd_soc_tplg_stream stream[8];
+	__le32 num_streams;
+} __attribute__((packed));
+
+struct snd_soc_tplg_manifest {
+	__le32 size;
+	__le32 control_elems;
+	__le32 widget_elems;
+	__le32 graph_elems;
+	__le32 pcm_elems;
+	__le32 dai_link_elems;
+	__le32 dai_elems;
+	__le32 reserved[20];
+	struct snd_soc_tplg_private priv;
+};
+
+struct snd_soc_tplg_manifest_v4 {
+	__le32 size;
+	__le32 control_elems;
+	__le32 widget_elems;
+	__le32 graph_elems;
+	__le32 pcm_elems;
+	__le32 dai_link_elems;
+	struct snd_soc_tplg_private priv;
+};
+
+struct snd_soc_tplg_bytes_ext_ops;
+
+struct snd_soc_tplg_ops;
+
+struct soc_tplg {
+	const struct firmware *fw;
+	const u8 *pos;
+	const u8 *hdr_pos;
+	unsigned int pass;
+	struct device *dev;
+	struct snd_soc_component *comp;
+	u32 index;
+	const struct snd_soc_tplg_kcontrol_ops *io_ops;
+	int io_ops_count;
+	const struct snd_soc_tplg_bytes_ext_ops *bytes_ext_ops;
+	int bytes_ext_ops_count;
+	struct snd_soc_tplg_ops *ops;
+};
+
+struct snd_soc_tplg_bytes_ext_ops {
+	u32 id;
+	int (*get)(struct snd_kcontrol *, unsigned int __attribute__((btf_type_tag("user"))) *, unsigned int);
+	int (*put)(struct snd_kcontrol *, const unsigned int __attribute__((btf_type_tag("user"))) *, unsigned int);
+};
+
+struct snd_soc_tplg_ops {
+	int (*control_load)(struct snd_soc_component *, int, struct snd_kcontrol_new *, struct snd_soc_tplg_ctl_hdr *);
+	int (*control_unload)(struct snd_soc_component *, struct snd_soc_dobj *);
+	int (*dapm_route_load)(struct snd_soc_component *, int, struct snd_soc_dapm_route *);
+	int (*dapm_route_unload)(struct snd_soc_component *, struct snd_soc_dobj *);
+	int (*widget_load)(struct snd_soc_component *, int, struct snd_soc_dapm_widget *, struct snd_soc_tplg_dapm_widget *);
+	int (*widget_ready)(struct snd_soc_component *, int, struct snd_soc_dapm_widget *, struct snd_soc_tplg_dapm_widget *);
+	int (*widget_unload)(struct snd_soc_component *, struct snd_soc_dobj *);
+	int (*dai_load)(struct snd_soc_component *, int, struct snd_soc_dai_driver *, struct snd_soc_tplg_pcm *, struct snd_soc_dai *);
+	int (*dai_unload)(struct snd_soc_component *, struct snd_soc_dobj *);
+	int (*link_load)(struct snd_soc_component *, int, struct snd_soc_dai_link *, struct snd_soc_tplg_link_config *);
+	int (*link_unload)(struct snd_soc_component *, struct snd_soc_dobj *);
+	int (*vendor_load)(struct snd_soc_component *, int, struct snd_soc_tplg_hdr *);
+	int (*vendor_unload)(struct snd_soc_component *, struct snd_soc_tplg_hdr *);
+	int (*complete)(struct snd_soc_component *);
+	int (*manifest)(struct snd_soc_component *, int, struct snd_soc_tplg_manifest *);
+	const struct snd_soc_tplg_kcontrol_ops *io_ops;
+	int io_ops_count;
+	const struct snd_soc_tplg_bytes_ext_ops *bytes_ext_ops;
+	int bytes_ext_ops_count;
+};
+
+struct snd_soc_tplg_widget_events {
+	u16 type;
+	int (*event_handler)(struct snd_soc_dapm_widget *, struct snd_kcontrol *, int);
+};
+
+struct dmaengine_pcm {
+	struct dma_chan *chan[2];
+	const struct snd_dmaengine_pcm_config *config;
+	struct snd_soc_component component;
+	unsigned int flags;
+};
+
+struct net_device_devres {
+	struct net_device *ndev;
+};
+
+struct net_proto_family {
+	int family;
+	int (*create)(struct net *, struct socket *, int, int);
+	struct module *owner;
+};
+
+struct iw_request_info {
+	__u16 cmd;
+	__u16 flags;
+};
+
+struct iw_point {
+	void __attribute__((btf_type_tag("user"))) *pointer;
+	__u16 length;
+	__u16 flags;
+};
+
+struct iw_param {
+	__s32 value;
+	__u8 fixed;
+	__u8 disabled;
+	__u16 flags;
+};
+
+struct iw_freq {
+	__s32 m;
+	__s16 e;
+	__u8 i;
+	__u8 flags;
+};
+
+struct iw_quality {
+	__u8 qual;
+	__u8 level;
+	__u8 noise;
+	__u8 updated;
+};
+
+union iwreq_data {
+	char name[16];
+	struct iw_point essid;
+	struct iw_param nwid;
+	struct iw_freq freq;
+	struct iw_param sens;
+	struct iw_param bitrate;
+	struct iw_param txpower;
+	struct iw_param rts;
+	struct iw_param frag;
+	__u32 mode;
+	struct iw_param retry;
+	struct iw_point encoding;
+	struct iw_param power;
+	struct iw_quality qual;
+	struct sockaddr ap_addr;
+	struct sockaddr addr;
+	struct iw_param param;
+	struct iw_point data;
+};
+
+struct iw_priv_args {
+	__u32 cmd;
+	__u16 set_args;
+	__u16 get_args;
+	char name[16];
+};
+
+struct iw_discarded {
+	__u32 nwid;
+	__u32 code;
+	__u32 fragment;
+	__u32 retries;
+	__u32 misc;
+};
+
+struct iw_missed {
+	__u32 beacon;
+};
+
+struct iw_statistics {
+	__u16 status;
+	struct iw_quality qual;
+	struct iw_discarded discard;
+	struct iw_missed miss;
+};
+
+struct libipw_device;
+
+struct iw_spy_data;
+
+struct iw_public_data {
+	struct iw_spy_data *spy_data;
+	struct libipw_device *libipw;
+};
+
+typedef unsigned char u_char;
+
+struct iw_spy_data {
+	int spy_number;
+	u_char spy_address[48];
+	struct iw_quality spy_stat[8];
+	struct iw_quality spy_thr_low;
+	struct iw_quality spy_thr_high;
+	u_char spy_thr_under[8];
+};
+
+enum {
+	SOF_TIMESTAMPING_TX_HARDWARE = 1,
+	SOF_TIMESTAMPING_TX_SOFTWARE = 2,
+	SOF_TIMESTAMPING_RX_HARDWARE = 4,
+	SOF_TIMESTAMPING_RX_SOFTWARE = 8,
+	SOF_TIMESTAMPING_SOFTWARE = 16,
+	SOF_TIMESTAMPING_SYS_HARDWARE = 32,
+	SOF_TIMESTAMPING_RAW_HARDWARE = 64,
+	SOF_TIMESTAMPING_OPT_ID = 128,
+	SOF_TIMESTAMPING_TX_SCHED = 256,
+	SOF_TIMESTAMPING_TX_ACK = 512,
+	SOF_TIMESTAMPING_OPT_CMSG = 1024,
+	SOF_TIMESTAMPING_OPT_TSONLY = 2048,
+	SOF_TIMESTAMPING_OPT_STATS = 4096,
+	SOF_TIMESTAMPING_OPT_PKTINFO = 8192,
+	SOF_TIMESTAMPING_OPT_TX_SWHW = 16384,
+	SOF_TIMESTAMPING_BIND_PHC = 32768,
+	SOF_TIMESTAMPING_OPT_ID_TCP = 65536,
+	SOF_TIMESTAMPING_LAST = 65536,
+	SOF_TIMESTAMPING_MASK = 131071,
+};
+
+enum {
+	SOCK_WAKE_IO = 0,
+	SOCK_WAKE_WAITD = 1,
+	SOCK_WAKE_SPACE = 2,
+	SOCK_WAKE_URG = 3,
+};
+
+enum sock_shutdown_cmd {
+	SHUT_RD = 0,
+	SHUT_WR = 1,
+	SHUT_RDWR = 2,
+};
+
+struct sock_ee_data_rfc4884 {
+	__u16 len;
+	__u8 flags;
+	__u8 reserved;
+};
+
+struct sock_extended_err {
+	__u32 ee_errno;
+	__u8 ee_origin;
+	__u8 ee_type;
+	__u8 ee_code;
+	__u8 ee_pad;
+	__u32 ee_info;
+	union {
+		__u32 ee_data;
+		struct sock_ee_data_rfc4884 ee_rfc4884;
+	};
+};
+
+struct sock_exterr_skb {
+	union {
+		struct inet_skb_parm h4;
+		struct inet6_skb_parm h6;
+	} header;
+	struct sock_extended_err ee;
+	u16 addr_offset;
+	__be16 port;
+	u8 opt_stats: 1;
+	u8 unused: 7;
+};
+
+struct compat_mmsghdr {
+	struct compat_msghdr msg_hdr;
+	compat_uint_t msg_len;
+};
+
+struct compat_ifmap {
+	compat_ulong_t mem_start;
+	compat_ulong_t mem_end;
+	unsigned short base_addr;
+	unsigned char irq;
+	unsigned char dma;
+	unsigned char port;
+};
+
+struct compat_if_settings {
+	unsigned int type;
+	unsigned int size;
+	compat_uptr_t ifs_ifsu;
+};
+
+struct compat_ifreq {
+	union {
+		char ifrn_name[16];
+	} ifr_ifrn;
+	union {
+		struct sockaddr ifru_addr;
+		struct sockaddr ifru_dstaddr;
+		struct sockaddr ifru_broadaddr;
+		struct sockaddr ifru_netmask;
+		struct sockaddr ifru_hwaddr;
+		short ifru_flags;
+		compat_int_t ifru_ivalue;
+		compat_int_t ifru_mtu;
+		struct compat_ifmap ifru_map;
+		char ifru_slave[16];
+		char ifru_newname[16];
+		compat_caddr_t ifru_data;
+		struct compat_if_settings ifru_settings;
+	} ifr_ifru;
+};
+
+struct sock_skb_cb {
+	u32 dropcount;
+};
+
+struct mmsghdr {
+	struct user_msghdr msg_hdr;
+	unsigned int msg_len;
+};
+
+typedef __kernel_long_t __kernel_old_time_t;
+
+struct __kernel_old_timespec {
+	__kernel_old_time_t tv_sec;
+	long tv_nsec;
+};
+
+struct __kernel_sock_timeval {
+	__s64 tv_sec;
+	__s64 tv_usec;
+};
+
+struct scm_ts_pktinfo {
+	__u32 if_index;
+	__u32 pkt_length;
+	__u32 reserved[2];
+};
+
+struct scm_timestamping_internal {
+	struct timespec64 ts[3];
+};
+
+struct ifconf {
+	int ifc_len;
+	union {
+		char __attribute__((btf_type_tag("user"))) *ifcu_buf;
+		struct ifreq __attribute__((btf_type_tag("user"))) *ifcu_req;
+	} ifc_ifcu;
+};
+
+struct used_address {
+	struct __kernel_sockaddr_storage name;
+	unsigned int name_len;
+};
+
+struct netdev_name_node {
+	struct hlist_node hlist;
+	struct list_head list;
+	struct net_device *dev;
+	const char *name;
+};
+
+enum {
+	INET_FLAGS_PKTINFO = 0,
+	INET_FLAGS_TTL = 1,
+	INET_FLAGS_TOS = 2,
+	INET_FLAGS_RECVOPTS = 3,
+	INET_FLAGS_RETOPTS = 4,
+	INET_FLAGS_PASSSEC = 5,
+	INET_FLAGS_ORIGDSTADDR = 6,
+	INET_FLAGS_CHECKSUM = 7,
+	INET_FLAGS_RECVFRAGSIZE = 8,
+	INET_FLAGS_RECVERR = 9,
+	INET_FLAGS_RECVERR_RFC4884 = 10,
+	INET_FLAGS_FREEBIND = 11,
+	INET_FLAGS_HDRINCL = 12,
+	INET_FLAGS_MC_LOOP = 13,
+	INET_FLAGS_MC_ALL = 14,
+	INET_FLAGS_TRANSPARENT = 15,
+	INET_FLAGS_IS_ICSK = 16,
+	INET_FLAGS_NODEFRAG = 17,
+	INET_FLAGS_BIND_ADDRESS_NO_PORT = 18,
+	INET_FLAGS_DEFER_CONNECT = 19,
+};
+
+enum sk_pacing {
+	SK_PACING_NONE = 0,
+	SK_PACING_NEEDED = 1,
+	SK_PACING_FQ = 2,
+};
+
+enum txtime_flags {
+	SOF_TXTIME_DEADLINE_MODE = 1,
+	SOF_TXTIME_REPORT_ERRORS = 2,
+	SOF_TXTIME_FLAGS_LAST = 2,
+	SOF_TXTIME_FLAGS_MASK = 3,
+};
+
+enum {
+	SK_MEMINFO_RMEM_ALLOC = 0,
+	SK_MEMINFO_RCVBUF = 1,
+	SK_MEMINFO_WMEM_ALLOC = 2,
+	SK_MEMINFO_SNDBUF = 3,
+	SK_MEMINFO_FWD_ALLOC = 4,
+	SK_MEMINFO_WMEM_QUEUED = 5,
+	SK_MEMINFO_OPTMEM = 6,
+	SK_MEMINFO_BACKLOG = 7,
+	SK_MEMINFO_DROPS = 8,
+	SK_MEMINFO_VARS = 9,
+};
+
+enum sknetlink_groups {
+	SKNLGRP_NONE = 0,
+	SKNLGRP_INET_TCP_DESTROY = 1,
+	SKNLGRP_INET_UDP_DESTROY = 2,
+	SKNLGRP_INET6_TCP_DESTROY = 3,
+	SKNLGRP_INET6_UDP_DESTROY = 4,
+	__SKNLGRP_MAX = 5,
+};
+
+enum {
+	XFRM_POLICY_IN = 0,
+	XFRM_POLICY_OUT = 1,
+	XFRM_POLICY_FWD = 2,
+	XFRM_POLICY_MASK = 3,
+	XFRM_POLICY_MAX = 3,
+};
+
+struct fastopen_queue {
+	struct request_sock *rskq_rst_head;
+	struct request_sock *rskq_rst_tail;
+	spinlock_t lock;
+	int qlen;
+	int max_qlen;
+	struct tcp_fastopen_context __attribute__((btf_type_tag("rcu"))) *ctx;
+};
+
+struct request_sock_queue {
+	spinlock_t rskq_lock;
+	u8 rskq_defer_accept;
+	u32 synflood_warned;
+	atomic_t qlen;
+	atomic_t young;
+	struct request_sock *rskq_accept_head;
+	struct request_sock *rskq_accept_tail;
+	struct fastopen_queue fastopenq;
+};
+
+struct inet_bind_bucket;
+
+struct inet_bind2_bucket;
+
+struct inet_connection_sock_af_ops;
+
+struct tcp_ulp_ops;
+
+struct inet_connection_sock {
+	struct inet_sock icsk_inet;
+	struct request_sock_queue icsk_accept_queue;
+	struct inet_bind_bucket *icsk_bind_hash;
+	struct inet_bind2_bucket *icsk_bind2_hash;
+	unsigned long icsk_timeout;
+	struct timer_list icsk_retransmit_timer;
+	struct timer_list icsk_delack_timer;
+	__u32 icsk_rto;
+	__u32 icsk_rto_min;
+	__u32 icsk_delack_max;
+	__u32 icsk_pmtu_cookie;
+	const struct tcp_congestion_ops *icsk_ca_ops;
+	const struct inet_connection_sock_af_ops *icsk_af_ops;
+	const struct tcp_ulp_ops *icsk_ulp_ops;
+	void __attribute__((btf_type_tag("rcu"))) *icsk_ulp_data;
+	void (*icsk_clean_acked)(struct sock *, u32);
+	unsigned int (*icsk_sync_mss)(struct sock *, u32);
+	__u8 icsk_ca_state: 5;
+	__u8 icsk_ca_initialized: 1;
+	__u8 icsk_ca_setsockopt: 1;
+	__u8 icsk_ca_dst_locked: 1;
+	__u8 icsk_retransmits;
+	__u8 icsk_pending;
+	__u8 icsk_backoff;
+	__u8 icsk_syn_retries;
+	__u8 icsk_probes_out;
+	__u16 icsk_ext_hdr_len;
+	struct {
+		__u8 pending;
+		__u8 quick;
+		__u8 pingpong;
+		__u8 retry;
+		__u32 ato;
+		unsigned long timeout;
+		__u32 lrcvtime;
+		__u16 last_seg_size;
+		__u16 rcv_mss;
+	} icsk_ack;
+	struct {
+		int search_high;
+		int search_low;
+		u32 probe_size: 31;
+		u32 enabled: 1;
+		u32 probe_timestamp;
+	} icsk_mtup;
+	u32 icsk_probes_tstamp;
+	u32 icsk_user_timeout;
+	u64 android_kabi_reserved1;
+	u64 icsk_ca_priv[13];
+};
+
+struct tcp_rack {
+	u64 mstamp;
+	u32 rtt_us;
+	u32 end_seq;
+	u32 last_delivered;
+	u8 reo_wnd_steps;
+	u8 reo_wnd_persist: 5;
+	u8 dsack_seen: 1;
+	u8 advanced: 1;
+};
+
+struct minmax_sample {
+	u32 t;
+	u32 v;
+};
+
+struct minmax {
+	struct minmax_sample s[3];
+};
+
+struct tcp_options_received {
+	int ts_recent_stamp;
+	u32 ts_recent;
+	u32 rcv_tsval;
+	u32 rcv_tsecr;
+	u16 saw_tstamp: 1;
+	u16 tstamp_ok: 1;
+	u16 dsack: 1;
+	u16 wscale_ok: 1;
+	u16 sack_ok: 3;
+	u16 smc_ok: 1;
+	u16 snd_wscale: 4;
+	u16 rcv_wscale: 4;
+	u8 saw_unknown: 1;
+	u8 unused: 7;
+	u8 num_sacks;
+	u16 user_mss;
+	u16 mss_clamp;
+};
+
+struct tcp_sack_block {
+	u32 start_seq;
+	u32 end_seq;
+};
+
+struct tcp_fastopen_request;
+
+struct tcp_sock {
+	struct inet_connection_sock inet_conn;
+	u16 tcp_header_len;
+	u16 gso_segs;
+	__be32 pred_flags;
+	u64 bytes_received;
+	u32 segs_in;
+	u32 data_segs_in;
+	u32 rcv_nxt;
+	u32 copied_seq;
+	u32 rcv_wup;
+	u32 snd_nxt;
+	u32 segs_out;
+	u32 data_segs_out;
+	u64 bytes_sent;
+	u64 bytes_acked;
+	u32 dsack_dups;
+	u32 snd_una;
+	u32 snd_sml;
+	u32 rcv_tstamp;
+	u32 lsndtime;
+	u32 last_oow_ack_time;
+	u32 compressed_ack_rcv_nxt;
+	u32 tsoffset;
+	struct list_head tsq_node;
+	struct list_head tsorted_sent_queue;
+	u32 snd_wl1;
+	u32 snd_wnd;
+	u32 max_window;
+	u32 mss_cache;
+	u32 window_clamp;
+	u32 rcv_ssthresh;
+	u8 scaling_ratio;
+	struct tcp_rack rack;
+	u16 advmss;
+	u8 compressed_ack;
+	u8 dup_ack_counter: 2;
+	u8 tlp_retrans: 1;
+	u8 unused: 5;
+	u32 chrono_start;
+	u32 chrono_stat[3];
+	u8 chrono_type: 2;
+	u8 rate_app_limited: 1;
+	u8 fastopen_connect: 1;
+	u8 fastopen_no_cookie: 1;
+	u8 is_sack_reneg: 1;
+	u8 fastopen_client_fail: 2;
+	u8 nonagle: 4;
+	u8 thin_lto: 1;
+	u8 recvmsg_inq: 1;
+	u8 repair: 1;
+	u8 frto: 1;
+	u8 repair_queue;
+	u8 save_syn: 2;
+	u8 syn_data: 1;
+	u8 syn_fastopen: 1;
+	u8 syn_fastopen_exp: 1;
+	u8 syn_fastopen_ch: 1;
+	u8 syn_data_acked: 1;
+	u8 is_cwnd_limited: 1;
+	u32 tlp_high_seq;
+	u32 tcp_tx_delay;
+	u64 tcp_wstamp_ns;
+	u64 tcp_clock_cache;
+	u64 tcp_mstamp;
+	u32 srtt_us;
+	u32 mdev_us;
+	u32 mdev_max_us;
+	u32 rttvar_us;
+	u32 rtt_seq;
+	struct minmax rtt_min;
+	u32 packets_out;
+	u32 retrans_out;
+	u32 max_packets_out;
+	u32 cwnd_usage_seq;
+	u16 urg_data;
+	u8 ecn_flags;
+	u8 keepalive_probes;
+	u32 reordering;
+	u32 reord_seen;
+	u32 snd_up;
+	struct tcp_options_received rx_opt;
+	u32 snd_ssthresh;
+	u32 snd_cwnd;
+	u32 snd_cwnd_cnt;
+	u32 snd_cwnd_clamp;
+	u32 snd_cwnd_used;
+	u32 snd_cwnd_stamp;
+	u32 prior_cwnd;
+	u32 prr_delivered;
+	u32 prr_out;
+	u32 delivered;
+	u32 delivered_ce;
+	u32 lost;
+	u32 app_limited;
+	u64 first_tx_mstamp;
+	u64 delivered_mstamp;
+	u32 rate_delivered;
+	u32 rate_interval_us;
+	u32 rcv_wnd;
+	u32 write_seq;
+	u32 notsent_lowat;
+	u32 pushed_seq;
+	u32 lost_out;
+	u32 sacked_out;
+	struct hrtimer pacing_timer;
+	struct hrtimer compressed_ack_timer;
+	struct sk_buff *lost_skb_hint;
+	struct sk_buff *retransmit_skb_hint;
+	struct rb_root out_of_order_queue;
+	struct sk_buff *ooo_last_skb;
+	struct tcp_sack_block duplicate_sack[1];
+	struct tcp_sack_block selective_acks[4];
+	struct tcp_sack_block recv_sack_cache[4];
+	struct sk_buff *highest_sack;
+	int lost_cnt_hint;
+	u32 prior_ssthresh;
+	u32 high_seq;
+	u32 retrans_stamp;
+	u32 undo_marker;
+	int undo_retrans;
+	u64 bytes_retrans;
+	u32 total_retrans;
+	u32 urg_seq;
+	unsigned int keepalive_time;
+	unsigned int keepalive_intvl;
+	int linger2;
+	u8 bpf_sock_ops_cb_flags;
+	u8 bpf_chg_cc_inprogress: 1;
+	u16 timeout_rehash;
+	u32 rcv_ooopack;
+	u32 rcv_rtt_last_tsecr;
+	struct {
+		u32 rtt_us;
+		u32 seq;
+		u64 time;
+	} rcv_rtt_est;
+	struct {
+		u32 space;
+		u32 seq;
+		u64 time;
+	} rcvq_space;
+	struct {
+		u32 probe_seq_start;
+		u32 probe_seq_end;
+	} mtu_probe;
+	u32 plb_rehash;
+	u32 mtu_info;
+	struct tcp_fastopen_request *fastopen_req;
+	struct request_sock __attribute__((btf_type_tag("rcu"))) *fastopen_rsk;
+	struct saved_syn *saved_syn;
+	u64 android_oem_data1;
+	u64 android_kabi_reserved1;
+};
+
+struct inet_bind_bucket {
+	possible_net_t ib_net;
+	int l3mdev;
+	unsigned short port;
+	signed char fastreuse;
+	signed char fastreuseport;
+	kuid_t fastuid;
+	struct in6_addr fast_v6_rcv_saddr;
+	__be32 fast_rcv_saddr;
+	unsigned short fast_sk_family;
+	bool fast_ipv6_only;
+	struct hlist_node node;
+	struct hlist_head owners;
+};
+
+struct inet_bind2_bucket {
+	possible_net_t ib_net;
+	int l3mdev;
+	unsigned short port;
+	unsigned short family;
+	union {
+		struct in6_addr v6_rcv_saddr;
+		__be32 rcv_saddr;
+	};
+	struct hlist_node node;
+	struct hlist_head owners;
+	struct hlist_head deathrow;
+};
+
+struct inet_connection_sock_af_ops {
+	int (*queue_xmit)(struct sock *, struct sk_buff *, struct flowi *);
+	void (*send_check)(struct sock *, struct sk_buff *);
+	int (*rebuild_header)(struct sock *);
+	void (*sk_rx_dst_set)(struct sock *, const struct sk_buff *);
+	int (*conn_request)(struct sock *, struct sk_buff *);
+	struct sock * (*syn_recv_sock)(const struct sock *, struct sk_buff *, struct request_sock *, struct dst_entry *, struct request_sock *, bool *);
+	u16 net_header_len;
+	u16 net_frag_header_len;
+	u16 sockaddr_len;
+	int (*setsockopt)(struct sock *, int, int, sockptr_t, unsigned int);
+	int (*getsockopt)(struct sock *, int, int, char __attribute__((btf_type_tag("user"))) *, int __attribute__((btf_type_tag("user"))) *);
+	void (*addr2sockaddr)(struct sock *, struct sockaddr *);
+	void (*mtu_reduced)(struct sock *);
+	u64 android_kabi_reserved1;
+};
+
+struct tcp_ulp_ops {
+	struct list_head list;
+	int (*init)(struct sock *);
+	void (*update)(struct sock *, struct proto *, void (*)(struct sock *));
+	void (*release)(struct sock *);
+	int (*get_info)(struct sock *, struct sk_buff *);
+	size_t (*get_info_size)(const struct sock *);
+	void (*clone)(const struct request_sock *, struct sock *, const gfp_t);
+	char name[16];
+	struct module *owner;
+};
+
+struct tcp_fastopen_cookie {
+	__le64 val[2];
+	s8 len;
+	bool exp;
+};
+
+struct tcp_fastopen_request {
+	struct tcp_fastopen_cookie cookie;
+	struct msghdr *data;
+	size_t size;
+	int copied;
+	struct ubuf_info *uarg;
+};
+
+struct cmsghdr {
+	__kernel_size_t cmsg_len;
+	int cmsg_level;
+	int cmsg_type;
+};
+
+struct net_protocol {
+	int (*handler)(struct sk_buff *);
+	int (*err_handler)(struct sk_buff *, u32);
+	unsigned int no_policy: 1;
+	unsigned int icmp_strict_tag_validation: 1;
+};
+
+struct udp_sock {
+	struct inet_sock inet;
+	unsigned long udp_flags;
+	int pending;
+	__u8 encap_type;
+	__u16 len;
+	__u16 gso_size;
+	__u16 pcslen;
+	__u16 pcrlen;
+	int (*encap_rcv)(struct sock *, struct sk_buff *);
+	void (*encap_err_rcv)(struct sock *, struct sk_buff *, int, __be16, u32, u8 *);
+	int (*encap_err_lookup)(struct sock *, struct sk_buff *);
+	void (*encap_destroy)(struct sock *);
+	struct sk_buff * (*gro_receive)(struct sock *, struct list_head *, struct sk_buff *);
+	int (*gro_complete)(struct sock *, struct sk_buff *, int);
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct sk_buff_head reader_queue;
+	int forward_deficit;
+	int forward_threshold;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+typedef void (*android_dst_ops_negative_advice_new_t)(struct sock *, struct dst_entry *);
+
+struct ucred {
+	__u32 pid;
+	__u32 uid;
+	__u32 gid;
+};
+
+struct linger {
+	int l_onoff;
+	int l_linger;
+};
+
+struct sock_txtime {
+	__kernel_clockid_t clockid;
+	__u32 flags;
+};
+
+struct so_timestamping {
+	int flags;
+	int bind_phc;
+};
+
+typedef unsigned short mifi_t;
+
+struct sioc_mif_req6 {
+	mifi_t mifi;
+	unsigned long icount;
+	unsigned long ocount;
+	unsigned long ibytes;
+	unsigned long obytes;
+};
+
+struct sioc_sg_req6 {
+	struct sockaddr_in6 src;
+	struct sockaddr_in6 grp;
+	unsigned long pktcnt;
+	unsigned long bytecnt;
+	unsigned long wrong_if;
+};
+
+struct sockcm_cookie {
+	u64 transmit_time;
+	u32 mark;
+	u32 tsflags;
+};
+
+struct inet_request_sock {
+	struct request_sock req;
+	u16 snd_wscale: 4;
+	u16 rcv_wscale: 4;
+	u16 tstamp_ok: 1;
+	u16 sack_ok: 1;
+	u16 wscale_ok: 1;
+	u16 ecn_ok: 1;
+	u16 acked: 1;
+	u16 no_srccheck: 1;
+	u16 smc_ok: 1;
+	u32 ir_mark;
+	union {
+		struct ip_options_rcu __attribute__((btf_type_tag("rcu"))) *ireq_opt;
+		struct {
+			struct ipv6_txoptions *ipv6_opt;
+			struct sk_buff *pktopts;
+		};
+	};
+};
+
+struct tcp_request_sock_ops;
+
+struct tcp_request_sock {
+	struct inet_request_sock req;
+	const struct tcp_request_sock_ops *af_specific;
+	u64 snt_synack;
+	bool tfo_listener;
+	bool is_mptcp;
+	u32 txhash;
+	u32 rcv_isn;
+	u32 snt_isn;
+	u32 ts_off;
+	u32 last_oow_ack_time;
+	u32 rcv_nxt;
+	u8 syn_tos;
+};
+
+enum tcp_synack_type {
+	TCP_SYNACK_NORMAL = 0,
+	TCP_SYNACK_FASTOPEN = 1,
+	TCP_SYNACK_COOKIE = 2,
+};
+
+struct tcp_request_sock_ops {
+	u16 mss_clamp;
+	struct dst_entry * (*route_req)(const struct sock *, struct sk_buff *, struct flowi *, struct request_sock *);
+	u32 (*init_seq)(const struct sk_buff *);
+	u32 (*init_ts_off)(const struct net *, const struct sk_buff *);
+	int (*send_synack)(const struct sock *, struct dst_entry *, struct flowi *, struct request_sock *, struct tcp_fastopen_cookie *, enum tcp_synack_type, struct sk_buff *);
+};
+
+struct drop_reason_list {
+	const char * const *reasons;
+	size_t n_reasons;
+};
+
+struct skb_checksum_ops {
+	__wsum (*update)(const void *, int, __wsum);
+	__wsum (*combine)(__wsum, __wsum, int, int);
+};
+
+struct page_frag_1k {
+	void *va;
+	u16 offset;
+	bool pfmemalloc;
+};
+
+struct napi_alloc_cache {
+	struct page_frag_cache page;
+	struct page_frag_1k page_small;
+	unsigned int skb_count;
+	void *skb_cache[64];
+};
+
+enum skb_drop_reason_subsys {
+	SKB_DROP_REASON_SUBSYS_CORE = 0,
+	SKB_DROP_REASON_SUBSYS_MAC80211_UNUSABLE = 1,
+	SKB_DROP_REASON_SUBSYS_MAC80211_MONITOR = 2,
+	SKB_DROP_REASON_SUBSYS_OPENVSWITCH = 3,
+	SKB_DROP_REASON_SUBSYS_NUM = 4,
+};
+
+enum {
+	SKB_FCLONE_UNAVAILABLE = 0,
+	SKB_FCLONE_ORIG = 1,
+	SKB_FCLONE_CLONE = 2,
+};
+
+enum {
+	SCM_TSTAMP_SND = 0,
+	SCM_TSTAMP_SCHED = 1,
+	SCM_TSTAMP_ACK = 2,
+};
+
+enum skb_ext_id {
+	SKB_EXT_SEC_PATH = 0,
+	SKB_EXT_NUM = 1,
+};
+
+struct sk_buff_fclones {
+	struct sk_buff skb1;
+	struct sk_buff skb2;
+	refcount_t fclone_ref;
+};
+
+struct mmpin {
+	struct user_struct *user;
+	unsigned int num_pg;
+};
+
+struct ubuf_info_msgzc {
+	struct ubuf_info ubuf;
+	union {
+		struct {
+			unsigned long desc;
+			void *ctx;
+		};
+		struct {
+			u32 id;
+			u16 len;
+			u16 zerocopy: 1;
+			u32 bytelen;
+		};
+	};
+	struct mmpin mmp;
+};
+
+struct skb_seq_state {
+	__u32 lower_offset;
+	__u32 upper_offset;
+	__u32 frag_idx;
+	__u32 stepped_offset;
+	struct sk_buff *root_skb;
+	struct sk_buff *cur_skb;
+	__u8 *frag_data;
+	__u32 frag_off;
+};
+
+struct skb_gso_cb {
+	union {
+		int mac_offset;
+		int data_offset;
+	};
+	int encap_level;
+	__wsum csum;
+	__u16 csum_start;
+};
+
+struct sd_flow_limit;
+
+struct softnet_data {
+	struct list_head poll_list;
+	struct sk_buff_head process_queue;
+	unsigned int processed;
+	unsigned int time_squeeze;
+	struct softnet_data *rps_ipi_list;
+	bool in_net_rx_action;
+	bool in_napi_threaded_poll;
+	struct sd_flow_limit __attribute__((btf_type_tag("rcu"))) *flow_limit;
+	struct Qdisc *output_queue;
+	struct Qdisc **output_queue_tailp;
+	struct sk_buff *completion_queue;
+	struct {
+		u16 recursion;
+		u8 more;
+		u8 skip_txqueue;
+	} xmit;
+	long: 64;
+	long: 64;
+	long: 64;
+	unsigned int input_queue_head;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	call_single_data_t csd;
+	struct softnet_data *rps_ipi_next;
+	unsigned int cpu;
+	unsigned int input_queue_tail;
+	unsigned int received_rps;
+	unsigned int dropped;
+	struct sk_buff_head input_pkt_queue;
+	struct napi_struct backlog;
+	spinlock_t defer_lock;
+	int defer_count;
+	int defer_ipi_scheduled;
+	struct sk_buff *defer_list;
+	long: 64;
+	call_single_data_t defer_csd;
+};
+
+struct sd_flow_limit {
+	u64 count;
+	unsigned int num_buckets;
+	unsigned int history_head;
+	u16 history[128];
+	u8 buckets[0];
+};
+
+struct ip_auth_hdr {
+	__u8 nexthdr;
+	__u8 hdrlen;
+	__be16 reserved;
+	__be32 spi;
+	__be32 seq_no;
+	__u8 auth_data[0];
+};
+
+struct frag_hdr {
+	__u8 nexthdr;
+	__u8 reserved;
+	__be16 frag_off;
+	__be32 identification;
+};
+
+struct vlan_ethhdr {
+	union {
+		struct {
+			unsigned char h_dest[6];
+			unsigned char h_source[6];
+		};
+		struct {
+			unsigned char h_dest[6];
+			unsigned char h_source[6];
+		} addrs;
+	};
+	__be16 h_vlan_proto;
+	__be16 h_vlan_TCI;
+	__be16 h_vlan_encapsulated_proto;
+};
+
+struct mpls_shim_hdr {
+	__be32 label_stack_entry;
+};
+
+struct skb_free_array {
+	unsigned int skb_count;
+	void *skb_array[16];
+};
+
+struct xfrm_offload {
+	struct {
+		__u32 low;
+		__u32 hi;
+	} seq;
+	__u32 flags;
+	__u32 status;
+	__u8 proto;
+	__u8 inner_ipproto;
+};
+
+struct sec_path {
+	int len;
+	int olen;
+	int verified_cnt;
+	struct xfrm_state *xvec[6];
+	struct xfrm_offload ovec[1];
+};
+
+typedef int (*sendmsg_func)(struct sock *, struct msghdr *);
+
+struct scm_fp_list {
+	short count;
+	short max;
+	struct user_struct *user;
+	struct file *fp[253];
+};
+
+struct scm_cookie {
+	struct pid *pid;
+	struct scm_fp_list *fp;
+	struct scm_creds creds;
+	u32 secid;
+};
+
+struct scm_timestamping64 {
+	struct __kernel_timespec ts[3];
+};
+
+struct scm_timestamping {
+	struct __kernel_old_timespec ts[3];
+};
+
+enum {
+	TCA_STATS_UNSPEC = 0,
+	TCA_STATS_BASIC = 1,
+	TCA_STATS_RATE_EST = 2,
+	TCA_STATS_QUEUE = 3,
+	TCA_STATS_APP = 4,
+	TCA_STATS_RATE_EST64 = 5,
+	TCA_STATS_PAD = 6,
+	TCA_STATS_BASIC_HW = 7,
+	TCA_STATS_PKT64 = 8,
+	__TCA_STATS_MAX = 9,
+};
+
+struct gnet_stats_rate_est64 {
+	__u64 bps;
+	__u64 pps;
+};
+
+struct gnet_stats_basic {
+	__u64 bytes;
+	__u32 packets;
+};
+
+struct gnet_stats_rate_est {
+	__u32 bps;
+	__u32 pps;
+};
+
+struct gnet_estimator {
+	signed char interval;
+	unsigned char ewma_log;
+};
+
+struct pcpu_gen_cookie;
+
+struct gen_cookie {
+	struct pcpu_gen_cookie __attribute__((btf_type_tag("percpu"))) *local;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	atomic64_t forward_last;
+	atomic64_t reverse_last;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct pcpu_gen_cookie {
+	local_t nesting;
+	u64 last;
+};
+
+enum rtnl_link_flags {
+	RTNL_FLAG_DOIT_UNLOCKED = 1,
+	RTNL_FLAG_BULK_DEL_SUPPORTED = 2,
+};
+
+enum rtnetlink_groups {
+	RTNLGRP_NONE = 0,
+	RTNLGRP_LINK = 1,
+	RTNLGRP_NOTIFY = 2,
+	RTNLGRP_NEIGH = 3,
+	RTNLGRP_TC = 4,
+	RTNLGRP_IPV4_IFADDR = 5,
+	RTNLGRP_IPV4_MROUTE = 6,
+	RTNLGRP_IPV4_ROUTE = 7,
+	RTNLGRP_IPV4_RULE = 8,
+	RTNLGRP_IPV6_IFADDR = 9,
+	RTNLGRP_IPV6_MROUTE = 10,
+	RTNLGRP_IPV6_ROUTE = 11,
+	RTNLGRP_IPV6_IFINFO = 12,
+	RTNLGRP_DECnet_IFADDR = 13,
+	RTNLGRP_NOP2 = 14,
+	RTNLGRP_DECnet_ROUTE = 15,
+	RTNLGRP_DECnet_RULE = 16,
+	RTNLGRP_NOP4 = 17,
+	RTNLGRP_IPV6_PREFIX = 18,
+	RTNLGRP_IPV6_RULE = 19,
+	RTNLGRP_ND_USEROPT = 20,
+	RTNLGRP_PHONET_IFADDR = 21,
+	RTNLGRP_PHONET_ROUTE = 22,
+	RTNLGRP_DCB = 23,
+	RTNLGRP_IPV4_NETCONF = 24,
+	RTNLGRP_IPV6_NETCONF = 25,
+	RTNLGRP_MDB = 26,
+	RTNLGRP_MPLS_ROUTE = 27,
+	RTNLGRP_NSID = 28,
+	RTNLGRP_MPLS_NETCONF = 29,
+	RTNLGRP_IPV4_MROUTE_R = 30,
+	RTNLGRP_IPV6_MROUTE_R = 31,
+	RTNLGRP_NEXTHOP = 32,
+	RTNLGRP_BRVLAN = 33,
+	RTNLGRP_MCTP_IFADDR = 34,
+	RTNLGRP_TUNNEL = 35,
+	RTNLGRP_STATS = 36,
+	__RTNLGRP_MAX = 37,
+};
+
+enum {
+	NETNSA_NONE = 0,
+	NETNSA_NSID = 1,
+	NETNSA_PID = 2,
+	NETNSA_FD = 3,
+	NETNSA_TARGET_NSID = 4,
+	NETNSA_CURRENT_NSID = 5,
+	__NETNSA_MAX = 6,
+};
+
+struct net_fill_args {
+	u32 portid;
+	u32 seq;
+	int flags;
+	int cmd;
+	int nsid;
+	bool add_ref;
+	int ref_nsid;
+};
+
+struct rtnl_net_dump_cb {
+	struct net *tgt_net;
+	struct net *ref_net;
+	struct sk_buff *skb;
+	struct net_fill_args fillargs;
+	int idx;
+	int s_idx;
+};
+
+typedef int (*rtnl_doit_func)(struct sk_buff *, struct nlmsghdr *, struct netlink_ext_ack *);
+
+typedef int (*rtnl_dumpit_func)(struct sk_buff *, struct netlink_callback *);
+
+struct rtgenmsg {
+	unsigned char rtgen_family;
+};
+
+struct pppoe_tag {
+	__be16 tag_type;
+	__be16 tag_len;
+	char tag_data[0];
+};
+
+struct pppoe_hdr {
+	__u8 type: 4;
+	__u8 ver: 4;
+	__u8 code;
+	__be16 sid;
+	__be16 length;
+	struct pppoe_tag tag[0];
+};
+
+enum flow_dissector_key_id {
+	FLOW_DISSECTOR_KEY_CONTROL = 0,
+	FLOW_DISSECTOR_KEY_BASIC = 1,
+	FLOW_DISSECTOR_KEY_IPV4_ADDRS = 2,
+	FLOW_DISSECTOR_KEY_IPV6_ADDRS = 3,
+	FLOW_DISSECTOR_KEY_PORTS = 4,
+	FLOW_DISSECTOR_KEY_PORTS_RANGE = 5,
+	FLOW_DISSECTOR_KEY_ICMP = 6,
+	FLOW_DISSECTOR_KEY_ETH_ADDRS = 7,
+	FLOW_DISSECTOR_KEY_TIPC = 8,
+	FLOW_DISSECTOR_KEY_ARP = 9,
+	FLOW_DISSECTOR_KEY_VLAN = 10,
+	FLOW_DISSECTOR_KEY_FLOW_LABEL = 11,
+	FLOW_DISSECTOR_KEY_GRE_KEYID = 12,
+	FLOW_DISSECTOR_KEY_MPLS_ENTROPY = 13,
+	FLOW_DISSECTOR_KEY_ENC_KEYID = 14,
+	FLOW_DISSECTOR_KEY_ENC_IPV4_ADDRS = 15,
+	FLOW_DISSECTOR_KEY_ENC_IPV6_ADDRS = 16,
+	FLOW_DISSECTOR_KEY_ENC_CONTROL = 17,
+	FLOW_DISSECTOR_KEY_ENC_PORTS = 18,
+	FLOW_DISSECTOR_KEY_MPLS = 19,
+	FLOW_DISSECTOR_KEY_TCP = 20,
+	FLOW_DISSECTOR_KEY_IP = 21,
+	FLOW_DISSECTOR_KEY_CVLAN = 22,
+	FLOW_DISSECTOR_KEY_ENC_IP = 23,
+	FLOW_DISSECTOR_KEY_ENC_OPTS = 24,
+	FLOW_DISSECTOR_KEY_META = 25,
+	FLOW_DISSECTOR_KEY_CT = 26,
+	FLOW_DISSECTOR_KEY_HASH = 27,
+	FLOW_DISSECTOR_KEY_NUM_OF_VLANS = 28,
+	FLOW_DISSECTOR_KEY_PPPOE = 29,
+	FLOW_DISSECTOR_KEY_L2TPV3 = 30,
+	FLOW_DISSECTOR_KEY_CFM = 31,
+	FLOW_DISSECTOR_KEY_IPSEC = 32,
+	FLOW_DISSECTOR_KEY_MAX = 33,
+};
+
+struct flow_dissector_key {
+	enum flow_dissector_key_id key_id;
+	size_t offset;
+};
+
+struct nf_conn;
+
+struct nf_ct_event {
+	struct nf_conn *ct;
+	u32 portid;
+	int report;
+};
+
+union nf_inet_addr {
+	__u32 all[4];
+	__be32 ip;
+	__be32 ip6[4];
+	struct in_addr in;
+	struct in6_addr in6;
+};
+
+union nf_conntrack_man_proto {
+	__be16 all;
+	struct {
+		__be16 port;
+	} tcp;
+	struct {
+		__be16 port;
+	} udp;
+	struct {
+		__be16 id;
+	} icmp;
+	struct {
+		__be16 port;
+	} dccp;
+	struct {
+		__be16 port;
+	} sctp;
+	struct {
+		__be16 key;
+	} gre;
+};
+
+typedef u16 u_int16_t;
+
+struct nf_conntrack_man {
+	union nf_inet_addr u3;
+	union nf_conntrack_man_proto u;
+	u_int16_t l3num;
+};
+
+struct nf_conntrack_tuple {
+	struct nf_conntrack_man src;
+	struct {
+		union nf_inet_addr u3;
+		union {
+			__be16 all;
+			struct {
+				__be16 port;
+			} tcp;
+			struct {
+				__be16 port;
+			} udp;
+			struct {
+				u_int8_t type;
+				u_int8_t code;
+			} icmp;
+			struct {
+				__be16 port;
+			} dccp;
+			struct {
+				__be16 port;
+			} sctp;
+			struct {
+				__be16 key;
+			} gre;
+		} u;
+		u_int8_t protonum;
+		struct {} __nfct_hash_offsetend;
+		u_int8_t dir;
+	} dst;
+};
+
+struct nf_conntrack_tuple_hash {
+	struct hlist_nulls_node hnnode;
+	struct nf_conntrack_tuple tuple;
+};
+
+struct nf_ct_dccp {
+	u_int8_t role[2];
+	u_int8_t state;
+	u_int8_t last_pkt;
+	u_int8_t last_dir;
+	u_int64_t handshake_seq;
+};
+
+enum sctp_conntrack {
+	SCTP_CONNTRACK_NONE = 0,
+	SCTP_CONNTRACK_CLOSED = 1,
+	SCTP_CONNTRACK_COOKIE_WAIT = 2,
+	SCTP_CONNTRACK_COOKIE_ECHOED = 3,
+	SCTP_CONNTRACK_ESTABLISHED = 4,
+	SCTP_CONNTRACK_SHUTDOWN_SENT = 5,
+	SCTP_CONNTRACK_SHUTDOWN_RECD = 6,
+	SCTP_CONNTRACK_SHUTDOWN_ACK_SENT = 7,
+	SCTP_CONNTRACK_HEARTBEAT_SENT = 8,
+	SCTP_CONNTRACK_HEARTBEAT_ACKED = 9,
+	SCTP_CONNTRACK_MAX = 10,
+};
+
+struct ip_ct_sctp {
+	enum sctp_conntrack state;
+	__be32 vtag[2];
+	u8 init[2];
+	u8 last_dir;
+	u8 flags;
+};
+
+struct ip_ct_tcp_state {
+	u_int32_t td_end;
+	u_int32_t td_maxend;
+	u_int32_t td_maxwin;
+	u_int32_t td_maxack;
+	u_int8_t td_scale;
+	u_int8_t flags;
+};
+
+struct ip_ct_tcp {
+	struct ip_ct_tcp_state seen[2];
+	u_int8_t state;
+	u_int8_t last_dir;
+	u_int8_t retrans;
+	u_int8_t last_index;
+	u_int32_t last_seq;
+	u_int32_t last_ack;
+	u_int32_t last_end;
+	u_int16_t last_win;
+	u_int8_t last_wscale;
+	u_int8_t last_flags;
+};
+
+struct nf_ct_udp {
+	unsigned long stream_ts;
+};
+
+struct nf_ct_gre {
+	unsigned int stream_timeout;
+	unsigned int timeout;
+};
+
+union nf_conntrack_proto {
+	struct nf_ct_dccp dccp;
+	struct ip_ct_sctp sctp;
+	struct ip_ct_tcp tcp;
+	struct nf_ct_udp udp;
+	struct nf_ct_gre gre;
+	unsigned int tmpl_padto;
+};
+
+struct nf_ct_ext;
+
+struct nf_conn {
+	struct nf_conntrack ct_general;
+	spinlock_t lock;
+	u32 timeout;
+	struct nf_conntrack_tuple_hash tuplehash[2];
+	unsigned long status;
+	possible_net_t ct_net;
+	struct hlist_node nat_bysource;
+	struct {} __nfct_init_offset;
+	struct nf_conn *master;
+	u_int32_t mark;
+	u_int32_t secmark;
+	struct nf_ct_ext *ext;
+	union nf_conntrack_proto proto;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_oem_data1;
+};
+
+struct nf_ct_ext {
+	u8 offset[5];
+	u8 len;
+	unsigned int gen_id;
+	long: 0;
+	char data[0];
+};
+
+struct nf_conntrack_expect;
+
+struct nf_exp_event {
+	struct nf_conntrack_expect *exp;
+	u32 portid;
+	int report;
+};
+
+struct nf_conntrack_tuple_mask {
+	struct {
+		union nf_inet_addr u3;
+		union nf_conntrack_man_proto u;
+	} src;
+};
+
+enum ip_conntrack_dir {
+	IP_CT_DIR_ORIGINAL = 0,
+	IP_CT_DIR_REPLY = 1,
+	IP_CT_DIR_MAX = 2,
+};
+
+struct nf_conntrack_helper;
+
+struct nf_conntrack_expect {
+	struct hlist_node lnode;
+	struct hlist_node hnode;
+	struct nf_conntrack_tuple tuple;
+	struct nf_conntrack_tuple_mask mask;
+	refcount_t use;
+	unsigned int flags;
+	unsigned int class;
+	void (*expectfn)(struct nf_conn *, struct nf_conntrack_expect *);
+	struct nf_conntrack_helper *helper;
+	struct nf_conn *master;
+	struct timer_list timeout;
+	union nf_inet_addr saved_addr;
+	union nf_conntrack_man_proto saved_proto;
+	enum ip_conntrack_dir dir;
+	struct callback_head rcu;
+};
+
+struct tcf_walker {
+	int stop;
+	int skip;
+	int count;
+	bool nonempty;
+	unsigned long cookie;
+	int (*fn)(struct tcf_proto *, void *, struct tcf_walker *);
+};
+
+struct tc_action;
+
+struct tcf_exts_miss_cookie_node;
+
+struct tcf_exts {
+	__u32 type;
+	int nr_actions;
+	struct tc_action **actions;
+	struct net *net;
+	netns_tracker ns_tracker;
+	struct tcf_exts_miss_cookie_node *miss_cookie_node;
+	int action;
+	int police;
+};
+
+struct tcf_t {
+	__u64 install;
+	__u64 lastuse;
+	__u64 expires;
+	__u64 firstuse;
+};
+
+struct tc_action_ops;
+
+struct tcf_idrinfo;
+
+struct tc_cookie;
+
+struct tc_action {
+	const struct tc_action_ops *ops;
+	__u32 type;
+	struct tcf_idrinfo *idrinfo;
+	u32 tcfa_index;
+	refcount_t tcfa_refcnt;
+	atomic_t tcfa_bindcnt;
+	int tcfa_action;
+	struct tcf_t tcfa_tm;
+	long: 64;
+	struct gnet_stats_basic_sync tcfa_bstats;
+	struct gnet_stats_basic_sync tcfa_bstats_hw;
+	struct gnet_stats_queue tcfa_qstats;
+	struct net_rate_estimator __attribute__((btf_type_tag("rcu"))) *tcfa_rate_est;
+	spinlock_t tcfa_lock;
+	struct gnet_stats_basic_sync __attribute__((btf_type_tag("percpu"))) *cpu_bstats;
+	struct gnet_stats_basic_sync __attribute__((btf_type_tag("percpu"))) *cpu_bstats_hw;
+	struct gnet_stats_queue __attribute__((btf_type_tag("percpu"))) *cpu_qstats;
+	struct tc_cookie __attribute__((btf_type_tag("rcu"))) *user_cookie;
+	struct tcf_chain __attribute__((btf_type_tag("rcu"))) *goto_chain;
+	u32 tcfa_flags;
+	u8 hw_stats;
+	u8 used_hw_stats;
+	bool used_hw_stats_valid;
+	u32 in_hw_count;
+};
+
+enum tca_id {
+	TCA_ID_UNSPEC = 0,
+	TCA_ID_POLICE = 1,
+	TCA_ID_GACT = 5,
+	TCA_ID_IPT = 6,
+	TCA_ID_PEDIT = 7,
+	TCA_ID_MIRRED = 8,
+	TCA_ID_NAT = 9,
+	TCA_ID_XT = 10,
+	TCA_ID_SKBEDIT = 11,
+	TCA_ID_VLAN = 12,
+	TCA_ID_BPF = 13,
+	TCA_ID_CONNMARK = 14,
+	TCA_ID_SKBMOD = 15,
+	TCA_ID_CSUM = 16,
+	TCA_ID_TUNNEL_KEY = 17,
+	TCA_ID_SIMP = 22,
+	TCA_ID_IFE = 25,
+	TCA_ID_SAMPLE = 26,
+	TCA_ID_CTINFO = 27,
+	TCA_ID_MPLS = 28,
+	TCA_ID_CT = 29,
+	TCA_ID_GATE = 30,
+	__TCA_ID_MAX = 255,
+};
+
+typedef void (*tc_action_priv_destructor)(void *);
+
+struct psample_group;
+
+struct tc_action_ops {
+	struct list_head head;
+	char kind[16];
+	enum tca_id id;
+	unsigned int net_id;
+	size_t size;
+	struct module *owner;
+	int (*act)(struct sk_buff *, const struct tc_action *, struct tcf_result *);
+	int (*dump)(struct sk_buff *, struct tc_action *, int, int);
+	void (*cleanup)(struct tc_action *);
+	int (*lookup)(struct net *, struct tc_action **, u32);
+	int (*init)(struct net *, struct nlattr *, struct nlattr *, struct tc_action **, struct tcf_proto *, u32, struct netlink_ext_ack *);
+	int (*walk)(struct net *, struct sk_buff *, struct netlink_callback *, int, const struct tc_action_ops *, struct netlink_ext_ack *);
+	void (*stats_update)(struct tc_action *, u64, u64, u64, u64, bool);
+	size_t (*get_fill_size)(const struct tc_action *);
+	struct net_device * (*get_dev)(const struct tc_action *, tc_action_priv_destructor *);
+	struct psample_group * (*get_psample_group)(const struct tc_action *, tc_action_priv_destructor *);
+	int (*offload_act_setup)(struct tc_action *, void *, u32 *, bool, struct netlink_ext_ack *);
+};
+
+struct tcf_idrinfo {
+	struct mutex lock;
+	struct idr action_idr;
+	struct net *net;
+};
+
+struct tc_cookie {
+	u8 *data;
+	u32 len;
+	struct callback_head rcu;
+};
+
+enum devlink_port_type {
+	DEVLINK_PORT_TYPE_NOTSET = 0,
+	DEVLINK_PORT_TYPE_AUTO = 1,
+	DEVLINK_PORT_TYPE_ETH = 2,
+	DEVLINK_PORT_TYPE_IB = 3,
+};
+
+enum devlink_port_flavour {
+	DEVLINK_PORT_FLAVOUR_PHYSICAL = 0,
+	DEVLINK_PORT_FLAVOUR_CPU = 1,
+	DEVLINK_PORT_FLAVOUR_DSA = 2,
+	DEVLINK_PORT_FLAVOUR_PCI_PF = 3,
+	DEVLINK_PORT_FLAVOUR_PCI_VF = 4,
+	DEVLINK_PORT_FLAVOUR_VIRTUAL = 5,
+	DEVLINK_PORT_FLAVOUR_UNUSED = 6,
+	DEVLINK_PORT_FLAVOUR_PCI_SF = 7,
+};
+
+struct devlink_port_phys_attrs {
+	u32 port_number;
+	u32 split_subport_number;
+};
+
+struct devlink_port_pci_pf_attrs {
+	u32 controller;
+	u16 pf;
+	u8 external: 1;
+};
+
+struct devlink_port_pci_vf_attrs {
+	u32 controller;
+	u16 pf;
+	u16 vf;
+	u8 external: 1;
+};
+
+struct devlink_port_pci_sf_attrs {
+	u32 controller;
+	u32 sf;
+	u16 pf;
+	u8 external: 1;
+};
+
+struct devlink_port_attrs {
+	u8 split: 1;
+	u8 splittable: 1;
+	u32 lanes;
+	enum devlink_port_flavour flavour;
+	struct netdev_phys_item_id switch_id;
+	union {
+		struct devlink_port_phys_attrs phys;
+		struct devlink_port_pci_pf_attrs pci_pf;
+		struct devlink_port_pci_vf_attrs pci_vf;
+		struct devlink_port_pci_sf_attrs pci_sf;
+	};
+};
+
+struct devlink;
+
+struct devlink_port_ops;
+
+struct ib_device;
+
+struct devlink_rate;
+
+struct devlink_linecard;
+
+struct devlink_port {
+	struct list_head list;
+	struct list_head region_list;
+	struct devlink *devlink;
+	const struct devlink_port_ops *ops;
+	unsigned int index;
+	spinlock_t type_lock;
+	enum devlink_port_type type;
+	enum devlink_port_type desired_type;
+	union {
+		struct {
+			struct net_device *netdev;
+			int ifindex;
+			char ifname[16];
+		} type_eth;
+		struct {
+			struct ib_device *ibdev;
+		} type_ib;
+	};
+	struct devlink_port_attrs attrs;
+	u8 attrs_set: 1;
+	u8 switch_port: 1;
+	u8 registered: 1;
+	u8 initialized: 1;
+	struct delayed_work type_warn_dw;
+	struct list_head reporter_list;
+	struct devlink_rate *devlink_rate;
+	struct devlink_linecard *linecard;
+};
+
+enum devlink_port_fn_state {
+	DEVLINK_PORT_FN_STATE_INACTIVE = 0,
+	DEVLINK_PORT_FN_STATE_ACTIVE = 1,
+};
+
+enum devlink_port_fn_opstate {
+	DEVLINK_PORT_FN_OPSTATE_DETACHED = 0,
+	DEVLINK_PORT_FN_OPSTATE_ATTACHED = 1,
+};
+
+struct devlink_port_ops {
+	int (*port_split)(struct devlink *, struct devlink_port *, unsigned int, struct netlink_ext_ack *);
+	int (*port_unsplit)(struct devlink *, struct devlink_port *, struct netlink_ext_ack *);
+	int (*port_type_set)(struct devlink_port *, enum devlink_port_type);
+	int (*port_del)(struct devlink *, struct devlink_port *, struct netlink_ext_ack *);
+	int (*port_fn_hw_addr_get)(struct devlink_port *, u8 *, int *, struct netlink_ext_ack *);
+	int (*port_fn_hw_addr_set)(struct devlink_port *, const u8 *, int, struct netlink_ext_ack *);
+	int (*port_fn_roce_get)(struct devlink_port *, bool *, struct netlink_ext_ack *);
+	int (*port_fn_roce_set)(struct devlink_port *, bool, struct netlink_ext_ack *);
+	int (*port_fn_migratable_get)(struct devlink_port *, bool *, struct netlink_ext_ack *);
+	int (*port_fn_migratable_set)(struct devlink_port *, bool, struct netlink_ext_ack *);
+	int (*port_fn_state_get)(struct devlink_port *, enum devlink_port_fn_state *, enum devlink_port_fn_opstate *, struct netlink_ext_ack *);
+	int (*port_fn_state_set)(struct devlink_port *, enum devlink_port_fn_state, struct netlink_ext_ack *);
+	int (*port_fn_ipsec_crypto_get)(struct devlink_port *, bool *, struct netlink_ext_ack *);
+	int (*port_fn_ipsec_crypto_set)(struct devlink_port *, bool, struct netlink_ext_ack *);
+	int (*port_fn_ipsec_packet_get)(struct devlink_port *, bool *, struct netlink_ext_ack *);
+	int (*port_fn_ipsec_packet_set)(struct devlink_port *, bool, struct netlink_ext_ack *);
+};
+
+enum devlink_rate_type {
+	DEVLINK_RATE_TYPE_LEAF = 0,
+	DEVLINK_RATE_TYPE_NODE = 1,
+};
+
+struct devlink_rate {
+	struct list_head list;
+	enum devlink_rate_type type;
+	struct devlink *devlink;
+	void *priv;
+	u64 tx_share;
+	u64 tx_max;
+	struct devlink_rate *parent;
+	union {
+		struct devlink_port *devlink_port;
+		struct {
+			char *name;
+			refcount_t refcnt;
+		};
+	};
+	u32 tx_priority;
+	u32 tx_weight;
+};
+
+enum ip_conntrack_info {
+	IP_CT_ESTABLISHED = 0,
+	IP_CT_RELATED = 1,
+	IP_CT_NEW = 2,
+	IP_CT_IS_REPLY = 3,
+	IP_CT_ESTABLISHED_REPLY = 3,
+	IP_CT_RELATED_REPLY = 4,
+	IP_CT_NUMBER = 5,
+	IP_CT_UNTRACKED = 7,
+};
+
+enum {
+	TCA_FLOWER_KEY_CT_FLAGS_NEW = 1,
+	TCA_FLOWER_KEY_CT_FLAGS_ESTABLISHED = 2,
+	TCA_FLOWER_KEY_CT_FLAGS_RELATED = 4,
+	TCA_FLOWER_KEY_CT_FLAGS_TRACKED = 8,
+	TCA_FLOWER_KEY_CT_FLAGS_INVALID = 16,
+	TCA_FLOWER_KEY_CT_FLAGS_REPLY = 32,
+	__TCA_FLOWER_KEY_CT_FLAGS_MAX = 33,
+};
+
+enum flow_dissect_ret {
+	FLOW_DISSECT_RET_OUT_GOOD = 0,
+	FLOW_DISSECT_RET_OUT_BAD = 1,
+	FLOW_DISSECT_RET_PROTO_AGAIN = 2,
+	FLOW_DISSECT_RET_IPPROTO_AGAIN = 3,
+	FLOW_DISSECT_RET_CONTINUE = 4,
+};
+
+enum bpf_ret_code {
+	BPF_OK = 0,
+	BPF_DROP = 2,
+	BPF_REDIRECT = 7,
+	BPF_LWT_REROUTE = 128,
+	BPF_FLOW_DISSECTOR_CONTINUE = 129,
+};
+
+enum lwtunnel_encap_types {
+	LWTUNNEL_ENCAP_NONE = 0,
+	LWTUNNEL_ENCAP_MPLS = 1,
+	LWTUNNEL_ENCAP_IP = 2,
+	LWTUNNEL_ENCAP_ILA = 3,
+	LWTUNNEL_ENCAP_IP6 = 4,
+	LWTUNNEL_ENCAP_SEG6 = 5,
+	LWTUNNEL_ENCAP_BPF = 6,
+	LWTUNNEL_ENCAP_SEG6_LOCAL = 7,
+	LWTUNNEL_ENCAP_RPL = 8,
+	LWTUNNEL_ENCAP_IOAM6 = 9,
+	LWTUNNEL_ENCAP_XFRM = 10,
+	__LWTUNNEL_ENCAP_MAX = 11,
+};
+
+enum batadv_packettype {
+	BATADV_IV_OGM = 0,
+	BATADV_BCAST = 1,
+	BATADV_CODED = 2,
+	BATADV_ELP = 3,
+	BATADV_OGM2 = 4,
+	BATADV_MCAST = 5,
+	BATADV_UNICAST = 64,
+	BATADV_UNICAST_FRAG = 65,
+	BATADV_UNICAST_4ADDR = 66,
+	BATADV_ICMP = 67,
+	BATADV_UNICAST_TVLV = 68,
+};
+
+struct _flow_keys_digest_data {
+	__be16 n_proto;
+	u8 ip_proto;
+	u8 padding;
+	__be32 ports;
+	__be32 src;
+	__be32 dst;
+};
+
+union tcp_word_hdr {
+	struct tcphdr hdr;
+	__be32 words[5];
+};
+
+struct mpls_label {
+	__be32 entry;
+};
+
+struct flow_dissector_mpls_lse {
+	u32 mpls_ttl: 8;
+	u32 mpls_bos: 1;
+	u32 mpls_tc: 3;
+	u32 mpls_label: 20;
+};
+
+struct flow_dissector_key_mpls {
+	struct flow_dissector_mpls_lse ls[7];
+	u8 used_lses;
+};
+
+struct flow_dissector_key_keyid {
+	__be32 keyid;
+};
+
+struct flow_dissector_key_ip {
+	__u8 tos;
+	__u8 ttl;
+};
+
+struct batadv_unicast_packet {
+	__u8 packet_type;
+	__u8 version;
+	__u8 ttl;
+	__u8 ttvn;
+	__u8 dest[6];
+};
+
+struct arphdr {
+	__be16 ar_hrd;
+	__be16 ar_pro;
+	unsigned char ar_hln;
+	unsigned char ar_pln;
+	__be16 ar_op;
+};
+
+struct flow_dissector_key_arp {
+	__u32 sip;
+	__u32 tip;
+	__u8 op;
+	unsigned char sha[6];
+	unsigned char tha[6];
+};
+
+struct flow_dissector_key_cfm {
+	u8 mdl_ver;
+	u8 opcode;
+};
+
+struct tipc_basic_hdr {
+	__be32 w[4];
+};
+
+struct flow_dissector_key_icmp {
+	struct {
+		u8 type;
+		u8 code;
+	};
+	u16 id;
+};
+
+struct icmphdr {
+	__u8 type;
+	__u8 code;
+	__sum16 checksum;
+	union {
+		struct {
+			__be16 id;
+			__be16 sequence;
+		} echo;
+		__be32 gateway;
+		struct {
+			__be16 __unused;
+			__be16 mtu;
+		} frag;
+		__u8 reserved[4];
+	} un;
+};
+
+struct gre_base_hdr {
+	__be16 flags;
+	__be16 protocol;
+};
+
+struct ip_esp_hdr {
+	__be32 spi;
+	__be32 seq_no;
+	__u8 enc_data[0];
+};
+
+struct flow_dissector_key_ipsec {
+	__be32 spi;
+};
+
+struct flow_dissector_key_tcp {
+	__be16 flags;
+};
+
+struct flow_dissector_key_l2tpv3 {
+	__be32 session_id;
+};
+
+struct flow_dissector_key_ports {
+	union {
+		__be32 ports;
+		struct {
+			__be16 src;
+			__be16 dst;
+		};
+	};
+};
+
+struct flow_dissector_key_ipv4_addrs {
+	__be32 src;
+	__be32 dst;
+};
+
+struct flow_dissector_key_ipv6_addrs {
+	struct in6_addr src;
+	struct in6_addr dst;
+};
+
+struct flow_dissector_key_tipc {
+	__be32 key;
+};
+
+struct flow_dissector_key_addrs {
+	union {
+		struct flow_dissector_key_ipv4_addrs v4addrs;
+		struct flow_dissector_key_ipv6_addrs v6addrs;
+		struct flow_dissector_key_tipc tipckey;
+	};
+};
+
+struct flow_dissector_key_tags {
+	u32 flow_label;
+};
+
+struct flow_dissector_key_vlan {
+	union {
+		struct {
+			u16 vlan_id: 12;
+			u16 vlan_dei: 1;
+			u16 vlan_priority: 3;
+		};
+		__be16 vlan_tci;
+	};
+	__be16 vlan_tpid;
+	__be16 vlan_eth_type;
+	u16 padding;
+};
+
+struct flow_keys {
+	struct flow_dissector_key_control control;
+	struct flow_dissector_key_basic basic;
+	struct flow_dissector_key_tags tags;
+	struct flow_dissector_key_vlan vlan;
+	struct flow_dissector_key_vlan cvlan;
+	struct flow_dissector_key_keyid keyid;
+	struct flow_dissector_key_ports ports;
+	struct flow_dissector_key_icmp icmp;
+	struct flow_dissector_key_addrs addrs;
+	long: 0;
+};
+
+struct flow_dissector_key_meta {
+	int ingress_ifindex;
+	u16 ingress_iftype;
+	u8 l2_miss;
+};
+
+struct nf_conn_labels {
+	unsigned long bits[2];
+};
+
+struct flow_dissector_key_ct {
+	u16 ct_state;
+	u16 ct_zone;
+	u32 ct_mark;
+	u32 ct_labels[4];
+};
+
+struct flow_dissector_key_enc_opts {
+	u8 data[255];
+	u8 len;
+	__be16 dst_opt_type;
+};
+
+struct flow_dissector_key_hash {
+	u32 hash;
+};
+
+struct clock_identity {
+	u8 id[8];
+};
+
+struct port_identity {
+	struct clock_identity clock_identity;
+	__be16 port_number;
+};
+
+struct ptp_header {
+	u8 tsmt;
+	u8 ver;
+	__be16 message_length;
+	u8 domain_number;
+	u8 reserved1;
+	u8 flag_field[2];
+	__be64 correction;
+	__be32 reserved2;
+	struct port_identity source_port_identity;
+	__be16 sequence_id;
+	u8 control;
+	u8 log_message_interval;
+} __attribute__((packed));
+
+struct hsr_tag {
+	__be16 path_and_LSDU_size;
+	__be16 sequence_nr;
+	__be16 encap_proto;
+};
+
+struct flow_dissector_key_eth_addrs {
+	unsigned char dst[6];
+	unsigned char src[6];
+};
+
+struct flow_dissector_key_num_of_vlans {
+	u8 num_of_vlans;
+};
+
+struct flow_dissector_key_pppoe {
+	__be16 session_id;
+	__be16 ppp_proto;
+	__be16 type;
+};
+
+struct flow_keys_digest {
+	u8 data[16];
+};
+
+struct rps_map;
+
+struct rps_dev_flow_table;
+
+struct netdev_rx_queue {
+	struct xdp_rxq_info xdp_rxq;
+	struct rps_map __attribute__((btf_type_tag("rcu"))) *rps_map;
+	struct rps_dev_flow_table __attribute__((btf_type_tag("rcu"))) *rps_flow_table;
+	struct kobject kobj;
+	struct net_device *dev;
+	netdevice_tracker dev_tracker;
+	struct xsk_buff_pool *pool;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct rps_map {
+	unsigned int len;
+	struct callback_head rcu;
+	u16 cpus[0];
+};
+
+struct rps_dev_flow {
+	u16 cpu;
+	u16 filter;
+	unsigned int last_qtail;
+};
+
+struct rps_dev_flow_table {
+	unsigned int mask;
+	struct callback_head rcu;
+	struct rps_dev_flow flows[0];
+};
+
+struct bpf_xdp_link {
+	struct bpf_link link;
+	struct net_device *dev;
+	int flags;
+};
+
+enum xps_map_type {
+	XPS_CPUS = 0,
+	XPS_RXQS = 1,
+	XPS_MAPS_MAX = 2,
+};
+
+enum qdisc_state_t {
+	__QDISC_STATE_SCHED = 0,
+	__QDISC_STATE_DEACTIVATED = 1,
+	__QDISC_STATE_MISSED = 2,
+	__QDISC_STATE_DRAINING = 3,
+};
+
+enum {
+	NAPIF_STATE_SCHED = 1,
+	NAPIF_STATE_MISSED = 2,
+	NAPIF_STATE_DISABLE = 4,
+	NAPIF_STATE_NPSVC = 8,
+	NAPIF_STATE_LISTED = 16,
+	NAPIF_STATE_NO_BUSY_POLL = 32,
+	NAPIF_STATE_IN_BUSY_POLL = 64,
+	NAPIF_STATE_PREFER_BUSY_POLL = 128,
+	NAPIF_STATE_THREADED = 256,
+	NAPIF_STATE_SCHED_THREADED = 512,
+};
+
+enum {
+	LINUX_MIB_NUM = 0,
+	LINUX_MIB_SYNCOOKIESSENT = 1,
+	LINUX_MIB_SYNCOOKIESRECV = 2,
+	LINUX_MIB_SYNCOOKIESFAILED = 3,
+	LINUX_MIB_EMBRYONICRSTS = 4,
+	LINUX_MIB_PRUNECALLED = 5,
+	LINUX_MIB_RCVPRUNED = 6,
+	LINUX_MIB_OFOPRUNED = 7,
+	LINUX_MIB_OUTOFWINDOWICMPS = 8,
+	LINUX_MIB_LOCKDROPPEDICMPS = 9,
+	LINUX_MIB_ARPFILTER = 10,
+	LINUX_MIB_TIMEWAITED = 11,
+	LINUX_MIB_TIMEWAITRECYCLED = 12,
+	LINUX_MIB_TIMEWAITKILLED = 13,
+	LINUX_MIB_PAWSACTIVEREJECTED = 14,
+	LINUX_MIB_PAWSESTABREJECTED = 15,
+	LINUX_MIB_DELAYEDACKS = 16,
+	LINUX_MIB_DELAYEDACKLOCKED = 17,
+	LINUX_MIB_DELAYEDACKLOST = 18,
+	LINUX_MIB_LISTENOVERFLOWS = 19,
+	LINUX_MIB_LISTENDROPS = 20,
+	LINUX_MIB_TCPHPHITS = 21,
+	LINUX_MIB_TCPPUREACKS = 22,
+	LINUX_MIB_TCPHPACKS = 23,
+	LINUX_MIB_TCPRENORECOVERY = 24,
+	LINUX_MIB_TCPSACKRECOVERY = 25,
+	LINUX_MIB_TCPSACKRENEGING = 26,
+	LINUX_MIB_TCPSACKREORDER = 27,
+	LINUX_MIB_TCPRENOREORDER = 28,
+	LINUX_MIB_TCPTSREORDER = 29,
+	LINUX_MIB_TCPFULLUNDO = 30,
+	LINUX_MIB_TCPPARTIALUNDO = 31,
+	LINUX_MIB_TCPDSACKUNDO = 32,
+	LINUX_MIB_TCPLOSSUNDO = 33,
+	LINUX_MIB_TCPLOSTRETRANSMIT = 34,
+	LINUX_MIB_TCPRENOFAILURES = 35,
+	LINUX_MIB_TCPSACKFAILURES = 36,
+	LINUX_MIB_TCPLOSSFAILURES = 37,
+	LINUX_MIB_TCPFASTRETRANS = 38,
+	LINUX_MIB_TCPSLOWSTARTRETRANS = 39,
+	LINUX_MIB_TCPTIMEOUTS = 40,
+	LINUX_MIB_TCPLOSSPROBES = 41,
+	LINUX_MIB_TCPLOSSPROBERECOVERY = 42,
+	LINUX_MIB_TCPRENORECOVERYFAIL = 43,
+	LINUX_MIB_TCPSACKRECOVERYFAIL = 44,
+	LINUX_MIB_TCPRCVCOLLAPSED = 45,
+	LINUX_MIB_TCPDSACKOLDSENT = 46,
+	LINUX_MIB_TCPDSACKOFOSENT = 47,
+	LINUX_MIB_TCPDSACKRECV = 48,
+	LINUX_MIB_TCPDSACKOFORECV = 49,
+	LINUX_MIB_TCPABORTONDATA = 50,
+	LINUX_MIB_TCPABORTONCLOSE = 51,
+	LINUX_MIB_TCPABORTONMEMORY = 52,
+	LINUX_MIB_TCPABORTONTIMEOUT = 53,
+	LINUX_MIB_TCPABORTONLINGER = 54,
+	LINUX_MIB_TCPABORTFAILED = 55,
+	LINUX_MIB_TCPMEMORYPRESSURES = 56,
+	LINUX_MIB_TCPMEMORYPRESSURESCHRONO = 57,
+	LINUX_MIB_TCPSACKDISCARD = 58,
+	LINUX_MIB_TCPDSACKIGNOREDOLD = 59,
+	LINUX_MIB_TCPDSACKIGNOREDNOUNDO = 60,
+	LINUX_MIB_TCPSPURIOUSRTOS = 61,
+	LINUX_MIB_TCPMD5NOTFOUND = 62,
+	LINUX_MIB_TCPMD5UNEXPECTED = 63,
+	LINUX_MIB_TCPMD5FAILURE = 64,
+	LINUX_MIB_SACKSHIFTED = 65,
+	LINUX_MIB_SACKMERGED = 66,
+	LINUX_MIB_SACKSHIFTFALLBACK = 67,
+	LINUX_MIB_TCPBACKLOGDROP = 68,
+	LINUX_MIB_PFMEMALLOCDROP = 69,
+	LINUX_MIB_TCPMINTTLDROP = 70,
+	LINUX_MIB_TCPDEFERACCEPTDROP = 71,
+	LINUX_MIB_IPRPFILTER = 72,
+	LINUX_MIB_TCPTIMEWAITOVERFLOW = 73,
+	LINUX_MIB_TCPREQQFULLDOCOOKIES = 74,
+	LINUX_MIB_TCPREQQFULLDROP = 75,
+	LINUX_MIB_TCPRETRANSFAIL = 76,
+	LINUX_MIB_TCPRCVCOALESCE = 77,
+	LINUX_MIB_TCPBACKLOGCOALESCE = 78,
+	LINUX_MIB_TCPOFOQUEUE = 79,
+	LINUX_MIB_TCPOFODROP = 80,
+	LINUX_MIB_TCPOFOMERGE = 81,
+	LINUX_MIB_TCPCHALLENGEACK = 82,
+	LINUX_MIB_TCPSYNCHALLENGE = 83,
+	LINUX_MIB_TCPFASTOPENACTIVE = 84,
+	LINUX_MIB_TCPFASTOPENACTIVEFAIL = 85,
+	LINUX_MIB_TCPFASTOPENPASSIVE = 86,
+	LINUX_MIB_TCPFASTOPENPASSIVEFAIL = 87,
+	LINUX_MIB_TCPFASTOPENLISTENOVERFLOW = 88,
+	LINUX_MIB_TCPFASTOPENCOOKIEREQD = 89,
+	LINUX_MIB_TCPFASTOPENBLACKHOLE = 90,
+	LINUX_MIB_TCPSPURIOUS_RTX_HOSTQUEUES = 91,
+	LINUX_MIB_BUSYPOLLRXPACKETS = 92,
+	LINUX_MIB_TCPAUTOCORKING = 93,
+	LINUX_MIB_TCPFROMZEROWINDOWADV = 94,
+	LINUX_MIB_TCPTOZEROWINDOWADV = 95,
+	LINUX_MIB_TCPWANTZEROWINDOWADV = 96,
+	LINUX_MIB_TCPSYNRETRANS = 97,
+	LINUX_MIB_TCPORIGDATASENT = 98,
+	LINUX_MIB_TCPHYSTARTTRAINDETECT = 99,
+	LINUX_MIB_TCPHYSTARTTRAINCWND = 100,
+	LINUX_MIB_TCPHYSTARTDELAYDETECT = 101,
+	LINUX_MIB_TCPHYSTARTDELAYCWND = 102,
+	LINUX_MIB_TCPACKSKIPPEDSYNRECV = 103,
+	LINUX_MIB_TCPACKSKIPPEDPAWS = 104,
+	LINUX_MIB_TCPACKSKIPPEDSEQ = 105,
+	LINUX_MIB_TCPACKSKIPPEDFINWAIT2 = 106,
+	LINUX_MIB_TCPACKSKIPPEDTIMEWAIT = 107,
+	LINUX_MIB_TCPACKSKIPPEDCHALLENGE = 108,
+	LINUX_MIB_TCPWINPROBE = 109,
+	LINUX_MIB_TCPKEEPALIVE = 110,
+	LINUX_MIB_TCPMTUPFAIL = 111,
+	LINUX_MIB_TCPMTUPSUCCESS = 112,
+	LINUX_MIB_TCPDELIVERED = 113,
+	LINUX_MIB_TCPDELIVEREDCE = 114,
+	LINUX_MIB_TCPACKCOMPRESSED = 115,
+	LINUX_MIB_TCPZEROWINDOWDROP = 116,
+	LINUX_MIB_TCPRCVQDROP = 117,
+	LINUX_MIB_TCPWQUEUETOOBIG = 118,
+	LINUX_MIB_TCPFASTOPENPASSIVEALTKEY = 119,
+	LINUX_MIB_TCPTIMEOUTREHASH = 120,
+	LINUX_MIB_TCPDUPLICATEDATAREHASH = 121,
+	LINUX_MIB_TCPDSACKRECVSEGS = 122,
+	LINUX_MIB_TCPDSACKIGNOREDDUBIOUS = 123,
+	LINUX_MIB_TCPMIGRATEREQSUCCESS = 124,
+	LINUX_MIB_TCPMIGRATEREQFAILURE = 125,
+	LINUX_MIB_TCPPLBREHASH = 126,
+	__LINUX_MIB_MAX = 127,
+};
+
+enum netdev_offload_xstats_type {
+	NETDEV_OFFLOAD_XSTATS_TYPE_L3 = 1,
+};
+
+enum bpf_xdp_mode {
+	XDP_MODE_SKB = 0,
+	XDP_MODE_DRV = 1,
+	XDP_MODE_HW = 2,
+	__MAX_XDP_MODE = 3,
+};
+
+enum {
+	IF_OPER_UNKNOWN = 0,
+	IF_OPER_NOTPRESENT = 1,
+	IF_OPER_DOWN = 2,
+	IF_OPER_LOWERLAYERDOWN = 3,
+	IF_OPER_TESTING = 4,
+	IF_OPER_DORMANT = 5,
+	IF_OPER_UP = 6,
+};
+
+enum {
+	NFPROTO_UNSPEC = 0,
+	NFPROTO_INET = 1,
+	NFPROTO_IPV4 = 2,
+	NFPROTO_ARP = 3,
+	NFPROTO_NETDEV = 5,
+	NFPROTO_BRIDGE = 7,
+	NFPROTO_IPV6 = 10,
+	NFPROTO_NUMPROTO = 11,
+};
+
+enum nf_dev_hooks {
+	NF_NETDEV_INGRESS = 0,
+	NF_NETDEV_EGRESS = 1,
+	NF_NETDEV_NUMHOOKS = 2,
+};
+
+enum tcx_action_base {
+	TCX_NEXT = -1,
+	TCX_PASS = 0,
+	TCX_DROP = 2,
+	TCX_REDIRECT = 7,
+};
+
+enum qdisc_state2_t {
+	__QDISC_STATE2_RUNNING = 0,
+};
+
+struct netdev_adjacent {
+	struct net_device *dev;
+	netdevice_tracker dev_tracker;
+	bool master;
+	bool ignore;
+	u16 ref_nr;
+	void *private;
+	struct list_head list;
+	struct callback_head rcu;
+};
+
+struct dev_kfree_skb_cb {
+	enum skb_drop_reason reason;
+};
+
+struct tc_skb_cb {
+	struct qdisc_skb_cb qdisc_cb;
+	u16 mru;
+	u8 post_ct: 1;
+	u8 post_ct_snat: 1;
+	u8 post_ct_dnat: 1;
+	u16 zone;
+};
+
+struct netdev_net_notifier {
+	struct list_head list;
+	struct notifier_block *nb;
+};
+
+struct net_device_path_stack {
+	int num_paths;
+	struct net_device_path path[5];
+};
+
+struct netdev_nested_priv {
+	unsigned char flags;
+	void *data;
+};
+
+struct netdev_notifier_offload_xstats_rd;
+
+struct netdev_notifier_offload_xstats_ru;
+
+struct netdev_notifier_offload_xstats_info {
+	struct netdev_notifier_info info;
+	enum netdev_offload_xstats_type type;
+	union {
+		struct netdev_notifier_offload_xstats_rd *report_delta;
+		struct netdev_notifier_offload_xstats_ru *report_used;
+	};
+};
+
+struct netdev_notifier_offload_xstats_rd {
+	struct rtnl_hw_stats64 stats;
+	bool used;
+};
+
+struct netdev_notifier_offload_xstats_ru {
+	bool used;
+};
+
+struct netdev_notifier_pre_changeaddr_info {
+	struct netdev_notifier_info info;
+	const unsigned char *dev_addr;
+};
+
+typedef int (*bpf_op_t)(struct net_device *, struct netdev_bpf *);
+
+struct netdev_notifier_change_info {
+	struct netdev_notifier_info info;
+	unsigned int flags_changed;
+};
+
+struct netdev_notifier_changeupper_info {
+	struct netdev_notifier_info info;
+	struct net_device *upper_dev;
+	bool master;
+	bool linking;
+	void *upper_info;
+};
+
+struct ifslave {
+	__s32 slave_id;
+	char slave_name[16];
+	__s8 link;
+	__s8 state;
+	__u32 link_failure_count;
+};
+
+typedef struct ifslave ifslave;
+
+struct ifbond {
+	__s32 bond_mode;
+	__s32 num_slaves;
+	__s32 miimon;
+};
+
+typedef struct ifbond ifbond;
+
+struct netdev_bonding_info {
+	ifslave slave;
+	ifbond master;
+};
+
+struct netdev_notifier_bonding_info {
+	struct netdev_notifier_info info;
+	struct netdev_bonding_info bonding_info;
+};
+
+struct netdev_notifier_changelowerstate_info {
+	struct netdev_notifier_info info;
+	void *lower_state_info;
+};
+
+struct netdev_notifier_info_ext {
+	struct netdev_notifier_info info;
+	union {
+		u32 mtu;
+	} ext;
+};
+
+struct netdev_hw_addr {
+	struct list_head list;
+	struct rb_node node;
+	unsigned char addr[32];
+	unsigned char type;
+	bool global_use;
+	int sync_cnt;
+	int refcount;
+	int synced;
+	struct callback_head callback_head;
+};
+
+struct xfrm_dst {
+	union {
+		struct dst_entry dst;
+		struct rtable rt;
+		struct rt6_info rt6;
+	} u;
+	struct dst_entry *route;
+	struct dst_entry *child;
+	struct dst_entry *path;
+	struct xfrm_policy *pols[2];
+	int num_pols;
+	int num_xfrms;
+	u32 xfrm_genid;
+	u32 policy_genid;
+	u32 route_mtu_cached;
+	u32 child_mtu_cached;
+	u32 route_cookie;
+	u32 path_cookie;
+};
+
+struct neigh_sysctl_table {
+	struct ctl_table_header *sysctl_header;
+	struct ctl_table neigh_vars[22];
+};
+
+enum {
+	NEIGH_VAR_MCAST_PROBES = 0,
+	NEIGH_VAR_UCAST_PROBES = 1,
+	NEIGH_VAR_APP_PROBES = 2,
+	NEIGH_VAR_MCAST_REPROBES = 3,
+	NEIGH_VAR_RETRANS_TIME = 4,
+	NEIGH_VAR_BASE_REACHABLE_TIME = 5,
+	NEIGH_VAR_DELAY_PROBE_TIME = 6,
+	NEIGH_VAR_INTERVAL_PROBE_TIME_MS = 7,
+	NEIGH_VAR_GC_STALETIME = 8,
+	NEIGH_VAR_QUEUE_LEN_BYTES = 9,
+	NEIGH_VAR_PROXY_QLEN = 10,
+	NEIGH_VAR_ANYCAST_DELAY = 11,
+	NEIGH_VAR_PROXY_DELAY = 12,
+	NEIGH_VAR_LOCKTIME = 13,
+	NEIGH_VAR_QUEUE_LEN = 14,
+	NEIGH_VAR_RETRANS_TIME_MS = 15,
+	NEIGH_VAR_BASE_REACHABLE_TIME_MS = 16,
+	NEIGH_VAR_GC_INTERVAL = 17,
+	NEIGH_VAR_GC_THRESH1 = 18,
+	NEIGH_VAR_GC_THRESH2 = 19,
+	NEIGH_VAR_GC_THRESH3 = 20,
+	NEIGH_VAR_MAX = 21,
+};
+
+enum {
+	NEIGH_ARP_TABLE = 0,
+	NEIGH_ND_TABLE = 1,
+	NEIGH_DN_TABLE = 2,
+	NEIGH_NR_TABLES = 3,
+	NEIGH_LINK_TABLE = 3,
+};
+
+enum netevent_notif_type {
+	NETEVENT_NEIGH_UPDATE = 1,
+	NETEVENT_REDIRECT = 2,
+	NETEVENT_DELAY_PROBE_TIME_UPDATE = 3,
+	NETEVENT_IPV4_MPATH_HASH_UPDATE = 4,
+	NETEVENT_IPV6_MPATH_HASH_UPDATE = 5,
+	NETEVENT_IPV4_FWD_UPDATE_PRIORITY_UPDATE = 6,
+};
+
+enum {
+	NDA_UNSPEC = 0,
+	NDA_DST = 1,
+	NDA_LLADDR = 2,
+	NDA_CACHEINFO = 3,
+	NDA_PROBES = 4,
+	NDA_VLAN = 5,
+	NDA_PORT = 6,
+	NDA_VNI = 7,
+	NDA_IFINDEX = 8,
+	NDA_MASTER = 9,
+	NDA_LINK_NETNSID = 10,
+	NDA_SRC_VNI = 11,
+	NDA_PROTOCOL = 12,
+	NDA_NH_ID = 13,
+	NDA_FDB_EXT_ATTRS = 14,
+	NDA_FLAGS_EXT = 15,
+	NDA_NDM_STATE_MASK = 16,
+	NDA_NDM_FLAGS_MASK = 17,
+	__NDA_MAX = 18,
+};
+
+enum {
+	RTN_UNSPEC = 0,
+	RTN_UNICAST = 1,
+	RTN_LOCAL = 2,
+	RTN_BROADCAST = 3,
+	RTN_ANYCAST = 4,
+	RTN_MULTICAST = 5,
+	RTN_BLACKHOLE = 6,
+	RTN_UNREACHABLE = 7,
+	RTN_PROHIBIT = 8,
+	RTN_THROW = 9,
+	RTN_NAT = 10,
+	RTN_XRESOLVE = 11,
+	__RTN_MAX = 12,
+};
+
+enum {
+	NDTA_UNSPEC = 0,
+	NDTA_NAME = 1,
+	NDTA_THRESH1 = 2,
+	NDTA_THRESH2 = 3,
+	NDTA_THRESH3 = 4,
+	NDTA_CONFIG = 5,
+	NDTA_PARMS = 6,
+	NDTA_STATS = 7,
+	NDTA_GC_INTERVAL = 8,
+	NDTA_PAD = 9,
+	__NDTA_MAX = 10,
+};
+
+enum {
+	NDTPA_UNSPEC = 0,
+	NDTPA_IFINDEX = 1,
+	NDTPA_REFCNT = 2,
+	NDTPA_REACHABLE_TIME = 3,
+	NDTPA_BASE_REACHABLE_TIME = 4,
+	NDTPA_RETRANS_TIME = 5,
+	NDTPA_GC_STALETIME = 6,
+	NDTPA_DELAY_PROBE_TIME = 7,
+	NDTPA_QUEUE_LEN = 8,
+	NDTPA_APP_PROBES = 9,
+	NDTPA_UCAST_PROBES = 10,
+	NDTPA_MCAST_PROBES = 11,
+	NDTPA_ANYCAST_DELAY = 12,
+	NDTPA_PROXY_DELAY = 13,
+	NDTPA_PROXY_QLEN = 14,
+	NDTPA_LOCKTIME = 15,
+	NDTPA_QUEUE_LENBYTES = 16,
+	NDTPA_MCAST_REPROBES = 17,
+	NDTPA_PAD = 18,
+	NDTPA_INTERVAL_PROBE_TIME_MS = 19,
+	__NDTPA_MAX = 20,
+};
+
+struct neighbour_cb {
+	unsigned long sched_next;
+	unsigned int flags;
+};
+
+struct neigh_seq_state {
+	struct seq_net_private p;
+	struct neigh_table *tbl;
+	struct neigh_hash_table *nht;
+	void * (*neigh_sub_iter)(struct neigh_seq_state *, struct neighbour *, loff_t *);
+	unsigned int bucket;
+	unsigned int flags;
+};
+
+struct neigh_dump_filter {
+	int master_idx;
+	int dev_idx;
+};
+
+struct ndtmsg {
+	__u8 ndtm_family;
+	__u8 ndtm_pad1;
+	__u16 ndtm_pad2;
+};
+
+struct ndt_config {
+	__u16 ndtc_key_len;
+	__u16 ndtc_entry_size;
+	__u32 ndtc_entries;
+	__u32 ndtc_last_flush;
+	__u32 ndtc_last_rand;
+	__u32 ndtc_hash_rnd;
+	__u32 ndtc_hash_mask;
+	__u32 ndtc_hash_chain_gc;
+	__u32 ndtc_proxy_qlen;
+};
+
+struct ndt_stats {
+	__u64 ndts_allocs;
+	__u64 ndts_destroys;
+	__u64 ndts_hash_grows;
+	__u64 ndts_res_failed;
+	__u64 ndts_lookups;
+	__u64 ndts_hits;
+	__u64 ndts_rcv_probes_mcast;
+	__u64 ndts_rcv_probes_ucast;
+	__u64 ndts_periodic_gc_runs;
+	__u64 ndts_forced_gc_runs;
+	__u64 ndts_table_fulls;
+};
+
+struct nda_cacheinfo {
+	__u32 ndm_confirmed;
+	__u32 ndm_used;
+	__u32 ndm_updated;
+	__u32 ndm_refcnt;
+};
+
+struct rtnl_link {
+	rtnl_doit_func doit;
+	rtnl_dumpit_func dumpit;
+	struct module *owner;
+	unsigned int flags;
+	struct callback_head rcu;
+};
+
+enum rtattr_type_t {
+	RTA_UNSPEC = 0,
+	RTA_DST = 1,
+	RTA_SRC = 2,
+	RTA_IIF = 3,
+	RTA_OIF = 4,
+	RTA_GATEWAY = 5,
+	RTA_PRIORITY = 6,
+	RTA_PREFSRC = 7,
+	RTA_METRICS = 8,
+	RTA_MULTIPATH = 9,
+	RTA_PROTOINFO = 10,
+	RTA_FLOW = 11,
+	RTA_CACHEINFO = 12,
+	RTA_SESSION = 13,
+	RTA_MP_ALGO = 14,
+	RTA_TABLE = 15,
+	RTA_MARK = 16,
+	RTA_MFC_STATS = 17,
+	RTA_VIA = 18,
+	RTA_NEWDST = 19,
+	RTA_PREF = 20,
+	RTA_ENCAP_TYPE = 21,
+	RTA_ENCAP = 22,
+	RTA_EXPIRES = 23,
+	RTA_PAD = 24,
+	RTA_UID = 25,
+	RTA_TTL_PROPAGATE = 26,
+	RTA_IP_PROTO = 27,
+	RTA_SPORT = 28,
+	RTA_DPORT = 29,
+	RTA_NH_ID = 30,
+	__RTA_MAX = 31,
+};
+
+enum {
+	IFLA_BRIDGE_FLAGS = 0,
+	IFLA_BRIDGE_MODE = 1,
+	IFLA_BRIDGE_VLAN_INFO = 2,
+	IFLA_BRIDGE_VLAN_TUNNEL_INFO = 3,
+	IFLA_BRIDGE_MRP = 4,
+	IFLA_BRIDGE_CFM = 5,
+	IFLA_BRIDGE_MST = 6,
+	__IFLA_BRIDGE_MAX = 7,
+};
+
+enum {
+	IFLA_BRPORT_UNSPEC = 0,
+	IFLA_BRPORT_STATE = 1,
+	IFLA_BRPORT_PRIORITY = 2,
+	IFLA_BRPORT_COST = 3,
+	IFLA_BRPORT_MODE = 4,
+	IFLA_BRPORT_GUARD = 5,
+	IFLA_BRPORT_PROTECT = 6,
+	IFLA_BRPORT_FAST_LEAVE = 7,
+	IFLA_BRPORT_LEARNING = 8,
+	IFLA_BRPORT_UNICAST_FLOOD = 9,
+	IFLA_BRPORT_PROXYARP = 10,
+	IFLA_BRPORT_LEARNING_SYNC = 11,
+	IFLA_BRPORT_PROXYARP_WIFI = 12,
+	IFLA_BRPORT_ROOT_ID = 13,
+	IFLA_BRPORT_BRIDGE_ID = 14,
+	IFLA_BRPORT_DESIGNATED_PORT = 15,
+	IFLA_BRPORT_DESIGNATED_COST = 16,
+	IFLA_BRPORT_ID = 17,
+	IFLA_BRPORT_NO = 18,
+	IFLA_BRPORT_TOPOLOGY_CHANGE_ACK = 19,
+	IFLA_BRPORT_CONFIG_PENDING = 20,
+	IFLA_BRPORT_MESSAGE_AGE_TIMER = 21,
+	IFLA_BRPORT_FORWARD_DELAY_TIMER = 22,
+	IFLA_BRPORT_HOLD_TIMER = 23,
+	IFLA_BRPORT_FLUSH = 24,
+	IFLA_BRPORT_MULTICAST_ROUTER = 25,
+	IFLA_BRPORT_PAD = 26,
+	IFLA_BRPORT_MCAST_FLOOD = 27,
+	IFLA_BRPORT_MCAST_TO_UCAST = 28,
+	IFLA_BRPORT_VLAN_TUNNEL = 29,
+	IFLA_BRPORT_BCAST_FLOOD = 30,
+	IFLA_BRPORT_GROUP_FWD_MASK = 31,
+	IFLA_BRPORT_NEIGH_SUPPRESS = 32,
+	IFLA_BRPORT_ISOLATED = 33,
+	IFLA_BRPORT_BACKUP_PORT = 34,
+	IFLA_BRPORT_MRP_RING_OPEN = 35,
+	IFLA_BRPORT_MRP_IN_OPEN = 36,
+	IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT = 37,
+	IFLA_BRPORT_MCAST_EHT_HOSTS_CNT = 38,
+	IFLA_BRPORT_LOCKED = 39,
+	IFLA_BRPORT_MAB = 40,
+	IFLA_BRPORT_MCAST_N_GROUPS = 41,
+	IFLA_BRPORT_MCAST_MAX_GROUPS = 42,
+	IFLA_BRPORT_NEIGH_VLAN_SUPPRESS = 43,
+	IFLA_BRPORT_BACKUP_NHID = 44,
+	__IFLA_BRPORT_MAX = 45,
+};
+
+enum {
+	IFLA_STATS_UNSPEC = 0,
+	IFLA_STATS_LINK_64 = 1,
+	IFLA_STATS_LINK_XSTATS = 2,
+	IFLA_STATS_LINK_XSTATS_SLAVE = 3,
+	IFLA_STATS_LINK_OFFLOAD_XSTATS = 4,
+	IFLA_STATS_AF_SPEC = 5,
+	__IFLA_STATS_MAX = 6,
+};
+
+enum {
+	IFLA_OFFLOAD_XSTATS_UNSPEC = 0,
+	IFLA_OFFLOAD_XSTATS_CPU_HIT = 1,
+	IFLA_OFFLOAD_XSTATS_HW_S_INFO = 2,
+	IFLA_OFFLOAD_XSTATS_L3_STATS = 3,
+	__IFLA_OFFLOAD_XSTATS_MAX = 4,
+};
+
+enum rtnl_kinds {
+	RTNL_KIND_NEW = 0,
+	RTNL_KIND_DEL = 1,
+	RTNL_KIND_GET = 2,
+	RTNL_KIND_SET = 3,
+};
+
+enum {
+	IFLA_EVENT_NONE = 0,
+	IFLA_EVENT_REBOOT = 1,
+	IFLA_EVENT_FEATURES = 2,
+	IFLA_EVENT_BONDING_FAILOVER = 3,
+	IFLA_EVENT_NOTIFY_PEERS = 4,
+	IFLA_EVENT_IGMP_RESEND = 5,
+	IFLA_EVENT_BONDING_OPTIONS = 6,
+};
+
+enum {
+	IFLA_PROTO_DOWN_REASON_UNSPEC = 0,
+	IFLA_PROTO_DOWN_REASON_MASK = 1,
+	IFLA_PROTO_DOWN_REASON_VALUE = 2,
+	__IFLA_PROTO_DOWN_REASON_CNT = 3,
+	IFLA_PROTO_DOWN_REASON_MAX = 2,
+};
+
+enum {
+	IFLA_VF_INFO_UNSPEC = 0,
+	IFLA_VF_INFO = 1,
+	__IFLA_VF_INFO_MAX = 2,
+};
+
+enum {
+	IFLA_VF_UNSPEC = 0,
+	IFLA_VF_MAC = 1,
+	IFLA_VF_VLAN = 2,
+	IFLA_VF_TX_RATE = 3,
+	IFLA_VF_SPOOFCHK = 4,
+	IFLA_VF_LINK_STATE = 5,
+	IFLA_VF_RATE = 6,
+	IFLA_VF_RSS_QUERY_EN = 7,
+	IFLA_VF_STATS = 8,
+	IFLA_VF_TRUST = 9,
+	IFLA_VF_IB_NODE_GUID = 10,
+	IFLA_VF_IB_PORT_GUID = 11,
+	IFLA_VF_VLAN_LIST = 12,
+	IFLA_VF_BROADCAST = 13,
+	__IFLA_VF_MAX = 14,
+};
+
+enum {
+	IFLA_VF_VLAN_INFO_UNSPEC = 0,
+	IFLA_VF_VLAN_INFO = 1,
+	__IFLA_VF_VLAN_INFO_MAX = 2,
+};
+
+enum {
+	IFLA_VF_STATS_RX_PACKETS = 0,
+	IFLA_VF_STATS_TX_PACKETS = 1,
+	IFLA_VF_STATS_RX_BYTES = 2,
+	IFLA_VF_STATS_TX_BYTES = 3,
+	IFLA_VF_STATS_BROADCAST = 4,
+	IFLA_VF_STATS_MULTICAST = 5,
+	IFLA_VF_STATS_PAD = 6,
+	IFLA_VF_STATS_RX_DROPPED = 7,
+	IFLA_VF_STATS_TX_DROPPED = 8,
+	__IFLA_VF_STATS_MAX = 9,
+};
+
+enum {
+	IFLA_VF_PORT_UNSPEC = 0,
+	IFLA_VF_PORT = 1,
+	__IFLA_VF_PORT_MAX = 2,
+};
+
+enum {
+	IFLA_PORT_UNSPEC = 0,
+	IFLA_PORT_VF = 1,
+	IFLA_PORT_PROFILE = 2,
+	IFLA_PORT_VSI_TYPE = 3,
+	IFLA_PORT_INSTANCE_UUID = 4,
+	IFLA_PORT_HOST_UUID = 5,
+	IFLA_PORT_REQUEST = 6,
+	IFLA_PORT_RESPONSE = 7,
+	__IFLA_PORT_MAX = 8,
+};
+
+enum {
+	XDP_ATTACHED_NONE = 0,
+	XDP_ATTACHED_DRV = 1,
+	XDP_ATTACHED_SKB = 2,
+	XDP_ATTACHED_HW = 3,
+	XDP_ATTACHED_MULTI = 4,
+};
+
+enum {
+	IFLA_XDP_UNSPEC = 0,
+	IFLA_XDP_FD = 1,
+	IFLA_XDP_ATTACHED = 2,
+	IFLA_XDP_FLAGS = 3,
+	IFLA_XDP_PROG_ID = 4,
+	IFLA_XDP_DRV_PROG_ID = 5,
+	IFLA_XDP_SKB_PROG_ID = 6,
+	IFLA_XDP_HW_PROG_ID = 7,
+	IFLA_XDP_EXPECTED_FD = 8,
+	__IFLA_XDP_MAX = 9,
+};
+
+enum {
+	IFLA_INFO_UNSPEC = 0,
+	IFLA_INFO_KIND = 1,
+	IFLA_INFO_DATA = 2,
+	IFLA_INFO_XSTATS = 3,
+	IFLA_INFO_SLAVE_KIND = 4,
+	IFLA_INFO_SLAVE_DATA = 5,
+	__IFLA_INFO_MAX = 6,
+};
+
+enum {
+	IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC = 0,
+	IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST = 1,
+	IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED = 2,
+	__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX = 3,
+};
+
+enum {
+	IFLA_STATS_GETSET_UNSPEC = 0,
+	IFLA_STATS_GET_FILTERS = 1,
+	IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS = 2,
+	__IFLA_STATS_GETSET_MAX = 3,
+};
+
+enum {
+	MDBA_SET_ENTRY_UNSPEC = 0,
+	MDBA_SET_ENTRY = 1,
+	MDBA_SET_ENTRY_ATTRS = 2,
+	__MDBA_SET_ENTRY_MAX = 3,
+};
+
+struct rtnl_af_ops {
+	struct list_head list;
+	int family;
+	int (*fill_link_af)(struct sk_buff *, const struct net_device *, u32);
+	size_t (*get_link_af_size)(const struct net_device *, u32);
+	int (*validate_link_af)(const struct net_device *, const struct nlattr *, struct netlink_ext_ack *);
+	int (*set_link_af)(struct net_device *, const struct nlattr *, struct netlink_ext_ack *);
+	int (*fill_stats_af)(struct sk_buff *, const struct net_device *);
+	size_t (*get_stats_af_size)(const struct net_device *);
+};
+
+struct rtnl_offload_xstats_request_used {
+	bool request;
+	bool used;
+};
+
+struct rtnl_newlink_tbs {
+	struct nlattr *tb[65];
+	struct nlattr *attr[51];
+	struct nlattr *slave_attr[45];
+};
+
+struct if_stats_msg {
+	__u8 family;
+	__u8 pad1;
+	__u16 pad2;
+	__u32 ifindex;
+	__u32 filter_mask;
+};
+
+struct br_port_msg {
+	__u8 family;
+	__u32 ifindex;
+};
+
+struct rtnl_link_stats {
+	__u32 rx_packets;
+	__u32 tx_packets;
+	__u32 rx_bytes;
+	__u32 tx_bytes;
+	__u32 rx_errors;
+	__u32 tx_errors;
+	__u32 rx_dropped;
+	__u32 tx_dropped;
+	__u32 multicast;
+	__u32 collisions;
+	__u32 rx_length_errors;
+	__u32 rx_over_errors;
+	__u32 rx_crc_errors;
+	__u32 rx_frame_errors;
+	__u32 rx_fifo_errors;
+	__u32 rx_missed_errors;
+	__u32 tx_aborted_errors;
+	__u32 tx_carrier_errors;
+	__u32 tx_fifo_errors;
+	__u32 tx_heartbeat_errors;
+	__u32 tx_window_errors;
+	__u32 rx_compressed;
+	__u32 tx_compressed;
+	__u32 rx_nohandler;
+};
+
+struct netlink_dump_control {
+	int (*start)(struct netlink_callback *);
+	int (*dump)(struct sk_buff *, struct netlink_callback *);
+	int (*done)(struct netlink_callback *);
+	struct netlink_ext_ack *extack;
+	void *data;
+	struct module *module;
+	u32 min_dump_alloc;
+};
+
+struct ifla_vf_mac {
+	__u32 vf;
+	__u8 mac[32];
+};
+
+struct ifla_vf_vlan {
+	__u32 vf;
+	__u32 vlan;
+	__u32 qos;
+};
+
+struct ifla_vf_vlan_info {
+	__u32 vf;
+	__u32 vlan;
+	__u32 qos;
+	__be16 vlan_proto;
+};
+
+struct ifla_vf_tx_rate {
+	__u32 vf;
+	__u32 rate;
+};
+
+struct ifla_vf_rate {
+	__u32 vf;
+	__u32 min_tx_rate;
+	__u32 max_tx_rate;
+};
+
+struct ifla_vf_spoofchk {
+	__u32 vf;
+	__u32 setting;
+};
+
+struct ifla_vf_link_state {
+	__u32 vf;
+	__u32 link_state;
+};
+
+struct ifla_vf_rss_query_en {
+	__u32 vf;
+	__u32 setting;
+};
+
+struct ifla_vf_trust {
+	__u32 vf;
+	__u32 setting;
+};
+
+struct rtnl_stats_dump_filters {
+	u32 mask[6];
+};
+
+struct rta_cacheinfo {
+	__u32 rta_clntref;
+	__u32 rta_lastuse;
+	__s32 rta_expires;
+	__u32 rta_error;
+	__u32 rta_used;
+	__u32 rta_id;
+	__u32 rta_ts;
+	__u32 rta_tsage;
+};
+
+struct rtnl_mdb_dump_ctx {
+	long idx;
+};
+
+struct rtnl_link_ifmap {
+	__u64 mem_start;
+	__u64 mem_end;
+	__u64 base_addr;
+	__u16 irq;
+	__u8 dma;
+	__u8 port;
+};
+
+struct ifla_vf_broadcast {
+	__u8 broadcast[32];
+};
+
+struct br_mdb_entry {
+	__u32 ifindex;
+	__u8 state;
+	__u8 flags;
+	__u16 vid;
+	struct {
+		union {
+			__be32 ip4;
+			struct in6_addr ip6;
+			unsigned char mac_addr[6];
+		} u;
+		__be16 proto;
+	} addr;
+};
+
+enum {
+	IF_LINK_MODE_DEFAULT = 0,
+	IF_LINK_MODE_DORMANT = 1,
+	IF_LINK_MODE_TESTING = 2,
+};
+
+enum lw_bits {
+	LW_URGENT = 0,
+};
+
+struct xdp_umem;
+
+struct xsk_queue;
+
+struct xdp_buff_xsk;
+
+struct xdp_desc;
+
+struct xsk_buff_pool {
+	struct device *dev;
+	struct net_device *netdev;
+	struct list_head xsk_tx_list;
+	spinlock_t xsk_tx_list_lock;
+	refcount_t users;
+	struct xdp_umem *umem;
+	struct work_struct work;
+	struct list_head free_list;
+	struct list_head xskb_list;
+	u32 heads_cnt;
+	u16 queue_id;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct xsk_queue *fq;
+	struct xsk_queue *cq;
+	dma_addr_t *dma_pages;
+	struct xdp_buff_xsk *heads;
+	struct xdp_desc *tx_descs;
+	u64 chunk_mask;
+	u64 addrs_cnt;
+	u32 free_list_cnt;
+	u32 dma_pages_cnt;
+	u32 free_heads_cnt;
+	u32 headroom;
+	u32 chunk_size;
+	u32 chunk_shift;
+	u32 frame_len;
+	u8 cached_need_wakeup;
+	bool uses_need_wakeup;
+	bool dma_need_sync;
+	bool unaligned;
+	void *addrs;
+	spinlock_t cq_lock;
+	struct xdp_buff_xsk *free_heads[0];
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct xdp_umem {
+	void *addrs;
+	u64 size;
+	u32 headroom;
+	u32 chunk_size;
+	u32 chunks;
+	u32 npgs;
+	struct user_struct *user;
+	refcount_t users;
+	u8 flags;
+	bool zc;
+	struct page **pgs;
+	int id;
+	struct list_head xsk_dma_list;
+	struct work_struct work;
+};
+
+struct xdp_buff_xsk {
+	struct xdp_buff xdp;
+	u8 cb[24];
+	dma_addr_t dma;
+	dma_addr_t frame_dma;
+	struct xsk_buff_pool *pool;
+	u64 orig_addr;
+	struct list_head free_list_node;
+	struct list_head xskb_list_node;
+};
+
+struct xdp_desc {
+	__u64 addr;
+	__u32 len;
+	__u32 options;
+};
+
+struct seg6_pernet_data {
+	struct mutex lock;
+	struct in6_addr __attribute__((btf_type_tag("rcu"))) *tun_src;
+};
+
+struct ipv6_bpf_stub {
+	int (*inet6_bind)(struct sock *, struct sockaddr *, int, u32);
+	struct sock * (*udp6_lib_lookup)(struct net *, const struct in6_addr *, __be16, const struct in6_addr *, __be16, int, int, struct udp_table *, struct sk_buff *);
+	int (*ipv6_setsockopt)(struct sock *, int, int, sockptr_t, unsigned int);
+	int (*ipv6_getsockopt)(struct sock *, int, int, sockptr_t, sockptr_t);
+	int (*ipv6_dev_get_saddr)(struct net *, const struct net_device *, const struct in6_addr *, unsigned int, struct in6_addr *);
+};
+
+struct bpf_scratchpad {
+	union {
+		__be32 diff[128];
+		u8 buff[512];
+	};
+};
+
+enum {
+	BPF_F_NEIGH = 2,
+	BPF_F_PEER = 4,
+	BPF_F_NEXTHOP = 8,
+};
+
+enum {
+	BPF_F_RECOMPUTE_CSUM = 1,
+	BPF_F_INVALIDATE_HASH = 2,
+};
+
+enum bpf_hdr_start_off {
+	BPF_HDR_START_MAC = 0,
+	BPF_HDR_START_NET = 1,
+};
+
+enum {
+	BPF_F_HDR_FIELD_MASK = 15,
+};
+
+enum {
+	BPF_F_PSEUDO_HDR = 16,
+	BPF_F_MARK_MANGLED_0 = 32,
+	BPF_F_MARK_ENFORCE = 64,
+};
+
+enum {
+	BPF_CSUM_LEVEL_QUERY = 0,
+	BPF_CSUM_LEVEL_INC = 1,
+	BPF_CSUM_LEVEL_DEC = 2,
+	BPF_CSUM_LEVEL_RESET = 3,
+};
+
+enum {
+	BPF_F_INGRESS = 1,
+};
+
+enum {
+	IPSTATS_MIB_NUM = 0,
+	IPSTATS_MIB_INPKTS = 1,
+	IPSTATS_MIB_INOCTETS = 2,
+	IPSTATS_MIB_INDELIVERS = 3,
+	IPSTATS_MIB_OUTFORWDATAGRAMS = 4,
+	IPSTATS_MIB_OUTREQUESTS = 5,
+	IPSTATS_MIB_OUTOCTETS = 6,
+	IPSTATS_MIB_INHDRERRORS = 7,
+	IPSTATS_MIB_INTOOBIGERRORS = 8,
+	IPSTATS_MIB_INNOROUTES = 9,
+	IPSTATS_MIB_INADDRERRORS = 10,
+	IPSTATS_MIB_INUNKNOWNPROTOS = 11,
+	IPSTATS_MIB_INTRUNCATEDPKTS = 12,
+	IPSTATS_MIB_INDISCARDS = 13,
+	IPSTATS_MIB_OUTDISCARDS = 14,
+	IPSTATS_MIB_OUTNOROUTES = 15,
+	IPSTATS_MIB_REASMTIMEOUT = 16,
+	IPSTATS_MIB_REASMREQDS = 17,
+	IPSTATS_MIB_REASMOKS = 18,
+	IPSTATS_MIB_REASMFAILS = 19,
+	IPSTATS_MIB_FRAGOKS = 20,
+	IPSTATS_MIB_FRAGFAILS = 21,
+	IPSTATS_MIB_FRAGCREATES = 22,
+	IPSTATS_MIB_INMCASTPKTS = 23,
+	IPSTATS_MIB_OUTMCASTPKTS = 24,
+	IPSTATS_MIB_INBCASTPKTS = 25,
+	IPSTATS_MIB_OUTBCASTPKTS = 26,
+	IPSTATS_MIB_INMCASTOCTETS = 27,
+	IPSTATS_MIB_OUTMCASTOCTETS = 28,
+	IPSTATS_MIB_INBCASTOCTETS = 29,
+	IPSTATS_MIB_OUTBCASTOCTETS = 30,
+	IPSTATS_MIB_CSUMERRORS = 31,
+	IPSTATS_MIB_NOECTPKTS = 32,
+	IPSTATS_MIB_ECT1PKTS = 33,
+	IPSTATS_MIB_ECT0PKTS = 34,
+	IPSTATS_MIB_CEPKTS = 35,
+	IPSTATS_MIB_REASM_OVERLAPS = 36,
+	IPSTATS_MIB_OUTPKTS = 37,
+	__IPSTATS_MIB_MAX = 38,
+};
+
+enum {
+	BPF_F_ADJ_ROOM_FIXED_GSO = 1,
+	BPF_F_ADJ_ROOM_ENCAP_L3_IPV4 = 2,
+	BPF_F_ADJ_ROOM_ENCAP_L3_IPV6 = 4,
+	BPF_F_ADJ_ROOM_ENCAP_L4_GRE = 8,
+	BPF_F_ADJ_ROOM_ENCAP_L4_UDP = 16,
+	BPF_F_ADJ_ROOM_NO_CSUM_RESET = 32,
+	BPF_F_ADJ_ROOM_ENCAP_L2_ETH = 64,
+	BPF_F_ADJ_ROOM_DECAP_L3_IPV4 = 128,
+	BPF_F_ADJ_ROOM_DECAP_L3_IPV6 = 256,
+};
+
+enum {
+	BPF_ADJ_ROOM_ENCAP_L2_MASK = 255,
+	BPF_ADJ_ROOM_ENCAP_L2_SHIFT = 56,
+};
+
+enum bpf_adj_room_mode {
+	BPF_ADJ_ROOM_NET = 0,
+	BPF_ADJ_ROOM_MAC = 1,
+};
+
+struct xdp_sock {
+	struct sock sk;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct xsk_queue *rx;
+	struct net_device *dev;
+	struct xdp_umem *umem;
+	struct list_head flush_node;
+	struct xsk_buff_pool *pool;
+	u16 queue_id;
+	bool zc;
+	bool sg;
+	enum {
+		XSK_READY = 0,
+		XSK_BOUND = 1,
+		XSK_UNBOUND = 2,
+	} state;
+	long: 64;
+	struct xsk_queue *tx;
+	struct list_head tx_list;
+	spinlock_t rx_lock;
+	u64 rx_dropped;
+	u64 rx_queue_full;
+	struct sk_buff *skb;
+	struct list_head map_list;
+	spinlock_t map_list_lock;
+	struct mutex mutex;
+	struct xsk_queue *fq_tmp;
+	struct xsk_queue *cq_tmp;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+enum {
+	BPF_F_TUNINFO_IPV6 = 1,
+};
+
+enum {
+	BPF_F_TUNINFO_FLAGS = 16,
+};
+
+enum {
+	BPF_F_ZERO_CSUM_TX = 2,
+	BPF_F_DONT_FRAGMENT = 4,
+	BPF_F_SEQ_NUMBER = 8,
+	BPF_F_NO_TUNNEL_KEY = 16,
+};
+
+enum {
+	TCP_BPF_IW = 1001,
+	TCP_BPF_SNDCWND_CLAMP = 1002,
+	TCP_BPF_DELACK_MAX = 1003,
+	TCP_BPF_RTO_MIN = 1004,
+	TCP_BPF_SYN = 1005,
+	TCP_BPF_SYN_IP = 1006,
+	TCP_BPF_SYN_MAC = 1007,
+};
+
+enum {
+	BPF_SOCK_OPS_RTO_CB_FLAG = 1,
+	BPF_SOCK_OPS_RETRANS_CB_FLAG = 2,
+	BPF_SOCK_OPS_STATE_CB_FLAG = 4,
+	BPF_SOCK_OPS_RTT_CB_FLAG = 8,
+	BPF_SOCK_OPS_PARSE_ALL_HDR_OPT_CB_FLAG = 16,
+	BPF_SOCK_OPS_PARSE_UNKNOWN_HDR_OPT_CB_FLAG = 32,
+	BPF_SOCK_OPS_WRITE_HDR_OPT_CB_FLAG = 64,
+	BPF_SOCK_OPS_ALL_CB_FLAGS = 127,
+};
+
+enum {
+	BPF_FIB_LOOKUP_DIRECT = 1,
+	BPF_FIB_LOOKUP_OUTPUT = 2,
+	BPF_FIB_LOOKUP_SKIP_NEIGH = 4,
+	BPF_FIB_LOOKUP_TBID = 8,
+	BPF_FIB_LOOKUP_SRC = 16,
+};
+
+enum {
+	BPF_FIB_LKUP_RET_SUCCESS = 0,
+	BPF_FIB_LKUP_RET_BLACKHOLE = 1,
+	BPF_FIB_LKUP_RET_UNREACHABLE = 2,
+	BPF_FIB_LKUP_RET_PROHIBIT = 3,
+	BPF_FIB_LKUP_RET_NOT_FWDED = 4,
+	BPF_FIB_LKUP_RET_FWD_DISABLED = 5,
+	BPF_FIB_LKUP_RET_UNSUPP_LWT = 6,
+	BPF_FIB_LKUP_RET_NO_NEIGH = 7,
+	BPF_FIB_LKUP_RET_FRAG_NEEDED = 8,
+	BPF_FIB_LKUP_RET_NO_SRC_ADDR = 9,
+};
+
+enum rt_class_t {
+	RT_TABLE_UNSPEC = 0,
+	RT_TABLE_COMPAT = 252,
+	RT_TABLE_DEFAULT = 253,
+	RT_TABLE_MAIN = 254,
+	RT_TABLE_LOCAL = 255,
+	RT_TABLE_MAX = 4294967295,
+};
+
+enum bpf_check_mtu_ret {
+	BPF_MTU_CHK_RET_SUCCESS = 0,
+	BPF_MTU_CHK_RET_FRAG_NEEDED = 1,
+	BPF_MTU_CHK_RET_SEGS_TOOBIG = 2,
+};
+
+enum bpf_check_mtu_flags {
+	BPF_MTU_CHK_SEGS = 1,
+};
+
+enum {
+	BPF_LOAD_HDR_OPT_TCP_SYN = 1,
+};
+
+enum {
+	BPF_SOCK_OPS_VOID = 0,
+	BPF_SOCK_OPS_TIMEOUT_INIT = 1,
+	BPF_SOCK_OPS_RWND_INIT = 2,
+	BPF_SOCK_OPS_TCP_CONNECT_CB = 3,
+	BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB = 4,
+	BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB = 5,
+	BPF_SOCK_OPS_NEEDS_ECN = 6,
+	BPF_SOCK_OPS_BASE_RTT = 7,
+	BPF_SOCK_OPS_RTO_CB = 8,
+	BPF_SOCK_OPS_RETRANS_CB = 9,
+	BPF_SOCK_OPS_STATE_CB = 10,
+	BPF_SOCK_OPS_TCP_LISTEN_CB = 11,
+	BPF_SOCK_OPS_RTT_CB = 12,
+	BPF_SOCK_OPS_PARSE_HDR_OPT_CB = 13,
+	BPF_SOCK_OPS_HDR_OPT_LEN_CB = 14,
+	BPF_SOCK_OPS_WRITE_HDR_OPT_CB = 15,
+};
+
+enum {
+	BPF_SKB_TSTAMP_UNSPEC = 0,
+	BPF_SKB_TSTAMP_DELIVERY_MONO = 1,
+};
+
+enum {
+	BPF_SK_LOOKUP_F_REPLACE = 1,
+	BPF_SK_LOOKUP_F_NO_REUSEPORT = 2,
+};
+
+typedef u64 (*btf_bpf_skb_get_pay_offset)(struct sk_buff *);
+
+typedef u64 (*btf_bpf_skb_get_nlattr)(struct sk_buff *, u32, u32);
+
+typedef u64 (*btf_bpf_skb_get_nlattr_nest)(struct sk_buff *, u32, u32);
+
+typedef u64 (*btf_bpf_skb_load_helper_8)(const struct sk_buff *, const void *, int, int);
+
+typedef u64 (*btf_bpf_skb_load_helper_8_no_cache)(const struct sk_buff *, int);
+
+typedef u64 (*btf_bpf_skb_load_helper_16)(const struct sk_buff *, const void *, int, int);
+
+typedef u64 (*btf_bpf_skb_load_helper_16_no_cache)(const struct sk_buff *, int);
+
+typedef u64 (*btf_bpf_skb_load_helper_32)(const struct sk_buff *, const void *, int, int);
+
+typedef u64 (*btf_bpf_skb_load_helper_32_no_cache)(const struct sk_buff *, int);
+
+typedef u64 (*btf_bpf_skb_store_bytes)(struct sk_buff *, u32, const void *, u32, u64);
+
+typedef u64 (*btf_bpf_skb_load_bytes)(const struct sk_buff *, u32, void *, u32);
+
+typedef u64 (*btf_bpf_flow_dissector_load_bytes)(const struct bpf_flow_dissector *, u32, void *, u32);
+
+typedef u64 (*btf_bpf_skb_load_bytes_relative)(const struct sk_buff *, u32, void *, u32, u32);
+
+typedef u64 (*btf_bpf_skb_pull_data)(struct sk_buff *, u32);
+
+typedef u64 (*btf_bpf_sk_fullsock)(struct sock *);
+
+typedef u64 (*btf_sk_skb_pull_data)(struct sk_buff *, u32);
+
+typedef u64 (*btf_bpf_l3_csum_replace)(struct sk_buff *, u32, u64, u64, u64);
+
+typedef u64 (*btf_bpf_l4_csum_replace)(struct sk_buff *, u32, u64, u64, u64);
+
+typedef u64 (*btf_bpf_csum_diff)(__be32 *, u32, __be32 *, u32, __wsum);
+
+typedef u64 (*btf_bpf_csum_update)(struct sk_buff *, __wsum);
+
+typedef u64 (*btf_bpf_csum_level)(struct sk_buff *, u64);
+
+typedef u64 (*btf_bpf_clone_redirect)(struct sk_buff *, u32, u64);
+
+typedef u64 (*btf_bpf_redirect)(u32, u64);
+
+typedef u64 (*btf_bpf_redirect_peer)(u32, u64);
+
+struct bpf_redir_neigh;
+
+typedef u64 (*btf_bpf_redirect_neigh)(u32, struct bpf_redir_neigh *, int, u64);
+
+struct bpf_redir_neigh {
+	__u32 nh_family;
+	union {
+		__be32 ipv4_nh;
+		__u32 ipv6_nh[4];
+	};
+};
+
+typedef u64 (*btf_bpf_msg_apply_bytes)(struct sk_msg *, u32);
+
+typedef u64 (*btf_bpf_msg_cork_bytes)(struct sk_msg *, u32);
+
+typedef u64 (*btf_bpf_msg_pull_data)(struct sk_msg *, u32, u32, u64);
+
+typedef u64 (*btf_bpf_msg_push_data)(struct sk_msg *, u32, u32, u64);
+
+typedef u64 (*btf_bpf_msg_pop_data)(struct sk_msg *, u32, u32, u64);
+
+typedef u64 (*btf_bpf_get_cgroup_classid)(const struct sk_buff *);
+
+typedef u64 (*btf_bpf_get_route_realm)(const struct sk_buff *);
+
+typedef u64 (*btf_bpf_get_hash_recalc)(struct sk_buff *);
+
+typedef u64 (*btf_bpf_set_hash_invalid)(struct sk_buff *);
+
+typedef u64 (*btf_bpf_set_hash)(struct sk_buff *, u32);
+
+typedef u64 (*btf_bpf_skb_vlan_push)(struct sk_buff *, __be16, u16);
+
+typedef u64 (*btf_bpf_skb_vlan_pop)(struct sk_buff *);
+
+typedef u64 (*btf_bpf_skb_change_proto)(struct sk_buff *, __be16, u64);
+
+typedef u64 (*btf_bpf_skb_change_type)(struct sk_buff *, u32);
+
+typedef u64 (*btf_sk_skb_adjust_room)(struct sk_buff *, s32, u32, u64);
+
+typedef u64 (*btf_bpf_skb_adjust_room)(struct sk_buff *, s32, u32, u64);
+
+typedef u64 (*btf_bpf_skb_change_tail)(struct sk_buff *, u32, u64);
+
+typedef u64 (*btf_sk_skb_change_tail)(struct sk_buff *, u32, u64);
+
+typedef u64 (*btf_bpf_skb_change_head)(struct sk_buff *, u32, u64);
+
+typedef u64 (*btf_sk_skb_change_head)(struct sk_buff *, u32, u64);
+
+typedef u64 (*btf_bpf_xdp_get_buff_len)(struct xdp_buff *);
+
+typedef u64 (*btf_bpf_xdp_adjust_head)(struct xdp_buff *, int);
+
+typedef u64 (*btf_bpf_xdp_load_bytes)(struct xdp_buff *, u32, void *, u32);
+
+typedef u64 (*btf_bpf_xdp_store_bytes)(struct xdp_buff *, u32, void *, u32);
+
+typedef u64 (*btf_bpf_xdp_adjust_tail)(struct xdp_buff *, int);
+
+typedef u64 (*btf_bpf_xdp_adjust_meta)(struct xdp_buff *, int);
+
+typedef u64 (*btf_bpf_xdp_redirect)(u32, u64);
+
+typedef u64 (*btf_bpf_xdp_redirect_map)(struct bpf_map *, u64, u64);
+
+typedef u64 (*btf_bpf_skb_event_output)(struct sk_buff *, struct bpf_map *, u64, void *, u64);
+
+struct bpf_tunnel_key;
+
+typedef u64 (*btf_bpf_skb_get_tunnel_key)(struct sk_buff *, struct bpf_tunnel_key *, u32, u64);
+
+struct bpf_tunnel_key {
+	__u32 tunnel_id;
+	union {
+		__u32 remote_ipv4;
+		__u32 remote_ipv6[4];
+	};
+	__u8 tunnel_tos;
+	__u8 tunnel_ttl;
+	union {
+		__u16 tunnel_ext;
+		__be16 tunnel_flags;
+	};
+	__u32 tunnel_label;
+	union {
+		__u32 local_ipv4;
+		__u32 local_ipv6[4];
+	};
+};
+
+typedef u64 (*btf_bpf_skb_get_tunnel_opt)(struct sk_buff *, u8 *, u32);
+
+typedef u64 (*btf_bpf_skb_set_tunnel_key)(struct sk_buff *, const struct bpf_tunnel_key *, u32, u64);
+
+typedef u64 (*btf_bpf_skb_set_tunnel_opt)(struct sk_buff *, const u8 *, u32);
+
+typedef u64 (*btf_bpf_skb_under_cgroup)(struct sk_buff *, struct bpf_map *, u32);
+
+typedef u64 (*btf_bpf_skb_cgroup_id)(const struct sk_buff *);
+
+typedef u64 (*btf_bpf_skb_ancestor_cgroup_id)(const struct sk_buff *, int);
+
+typedef u64 (*btf_bpf_sk_cgroup_id)(struct sock *);
+
+typedef u64 (*btf_bpf_sk_ancestor_cgroup_id)(struct sock *, int);
+
+typedef u64 (*btf_bpf_xdp_event_output)(struct xdp_buff *, struct bpf_map *, u64, void *, u64);
+
+typedef u64 (*btf_bpf_get_socket_cookie)(struct sk_buff *);
+
+typedef u64 (*btf_bpf_get_socket_cookie_sock_addr)(struct bpf_sock_addr_kern *);
+
+typedef u64 (*btf_bpf_get_socket_cookie_sock)(struct sock *);
+
+typedef u64 (*btf_bpf_get_socket_ptr_cookie)(struct sock *);
+
+typedef u64 (*btf_bpf_get_socket_cookie_sock_ops)(struct bpf_sock_ops_kern *);
+
+typedef u64 (*btf_bpf_get_netns_cookie_sock)(struct sock *);
+
+typedef u64 (*btf_bpf_get_netns_cookie_sock_addr)(struct bpf_sock_addr_kern *);
+
+typedef u64 (*btf_bpf_get_netns_cookie_sock_ops)(struct bpf_sock_ops_kern *);
+
+typedef u64 (*btf_bpf_get_netns_cookie_sk_msg)(struct sk_msg *);
+
+typedef u64 (*btf_bpf_get_socket_uid)(struct sk_buff *);
+
+typedef u64 (*btf_bpf_sk_setsockopt)(struct sock *, int, int, char *, int);
+
+typedef u64 (*btf_bpf_sk_getsockopt)(struct sock *, int, int, char *, int);
+
+typedef u64 (*btf_bpf_unlocked_sk_setsockopt)(struct sock *, int, int, char *, int);
+
+typedef u64 (*btf_bpf_unlocked_sk_getsockopt)(struct sock *, int, int, char *, int);
+
+typedef u64 (*btf_bpf_sock_addr_setsockopt)(struct bpf_sock_addr_kern *, int, int, char *, int);
+
+typedef u64 (*btf_bpf_sock_addr_getsockopt)(struct bpf_sock_addr_kern *, int, int, char *, int);
+
+typedef u64 (*btf_bpf_sock_ops_setsockopt)(struct bpf_sock_ops_kern *, int, int, char *, int);
+
+typedef u64 (*btf_bpf_sock_ops_getsockopt)(struct bpf_sock_ops_kern *, int, int, char *, int);
+
+typedef u64 (*btf_bpf_sock_ops_cb_flags_set)(struct bpf_sock_ops_kern *, int);
+
+typedef u64 (*btf_bpf_bind)(struct bpf_sock_addr_kern *, struct sockaddr *, int);
+
+struct bpf_xfrm_state;
+
+typedef u64 (*btf_bpf_skb_get_xfrm_state)(struct sk_buff *, u32, struct bpf_xfrm_state *, u32, u64);
+
+struct bpf_xfrm_state {
+	__u32 reqid;
+	__u32 spi;
+	__u16 family;
+	__u16 ext;
+	union {
+		__u32 remote_ipv4;
+		__u32 remote_ipv6[4];
+	};
+};
+
+struct bpf_fib_lookup;
+
+typedef u64 (*btf_bpf_xdp_fib_lookup)(struct xdp_buff *, struct bpf_fib_lookup *, int, u32);
+
+struct bpf_fib_lookup {
+	__u8 family;
+	__u8 l4_protocol;
+	__be16 sport;
+	__be16 dport;
+	union {
+		__u16 tot_len;
+		__u16 mtu_result;
+	};
+	__u32 ifindex;
+	union {
+		__u8 tos;
+		__be32 flowinfo;
+		__u32 rt_metric;
+	};
+	union {
+		__be32 ipv4_src;
+		__u32 ipv6_src[4];
+	};
+	union {
+		__be32 ipv4_dst;
+		__u32 ipv6_dst[4];
+	};
+	union {
+		struct {
+			__be16 h_vlan_proto;
+			__be16 h_vlan_TCI;
+		};
+		__u32 tbid;
+	};
+	__u8 smac[6];
+	__u8 dmac[6];
+};
+
+typedef u64 (*btf_bpf_skb_fib_lookup)(struct sk_buff *, struct bpf_fib_lookup *, int, u32);
+
+typedef u64 (*btf_bpf_skb_check_mtu)(struct sk_buff *, u32, u32 *, s32, u64);
+
+typedef u64 (*btf_bpf_xdp_check_mtu)(struct xdp_buff *, u32, u32 *, s32, u64);
+
+typedef u64 (*btf_bpf_lwt_in_push_encap)(struct sk_buff *, u32, void *, u32);
+
+typedef u64 (*btf_bpf_lwt_xmit_push_encap)(struct sk_buff *, u32, void *, u32);
+
+struct bpf_sock_tuple;
+
+typedef u64 (*btf_bpf_skc_lookup_tcp)(struct sk_buff *, struct bpf_sock_tuple *, u32, u64, u64);
+
+struct bpf_sock_tuple {
+	union {
+		struct {
+			__be32 saddr;
+			__be32 daddr;
+			__be16 sport;
+			__be16 dport;
+		} ipv4;
+		struct {
+			__be32 saddr[4];
+			__be32 daddr[4];
+			__be16 sport;
+			__be16 dport;
+		} ipv6;
+	};
+};
+
+typedef u64 (*btf_bpf_sk_lookup_tcp)(struct sk_buff *, struct bpf_sock_tuple *, u32, u64, u64);
+
+typedef u64 (*btf_bpf_sk_lookup_udp)(struct sk_buff *, struct bpf_sock_tuple *, u32, u64, u64);
+
+typedef u64 (*btf_bpf_tc_skc_lookup_tcp)(struct sk_buff *, struct bpf_sock_tuple *, u32, u64, u64);
+
+typedef u64 (*btf_bpf_tc_sk_lookup_tcp)(struct sk_buff *, struct bpf_sock_tuple *, u32, u64, u64);
+
+typedef u64 (*btf_bpf_tc_sk_lookup_udp)(struct sk_buff *, struct bpf_sock_tuple *, u32, u64, u64);
+
+typedef u64 (*btf_bpf_sk_release)(struct sock *);
+
+typedef u64 (*btf_bpf_xdp_sk_lookup_udp)(struct xdp_buff *, struct bpf_sock_tuple *, u32, u32, u64);
+
+typedef u64 (*btf_bpf_xdp_skc_lookup_tcp)(struct xdp_buff *, struct bpf_sock_tuple *, u32, u32, u64);
+
+typedef u64 (*btf_bpf_xdp_sk_lookup_tcp)(struct xdp_buff *, struct bpf_sock_tuple *, u32, u32, u64);
+
+typedef u64 (*btf_bpf_sock_addr_skc_lookup_tcp)(struct bpf_sock_addr_kern *, struct bpf_sock_tuple *, u32, u64, u64);
+
+typedef u64 (*btf_bpf_sock_addr_sk_lookup_tcp)(struct bpf_sock_addr_kern *, struct bpf_sock_tuple *, u32, u64, u64);
+
+typedef u64 (*btf_bpf_sock_addr_sk_lookup_udp)(struct bpf_sock_addr_kern *, struct bpf_sock_tuple *, u32, u64, u64);
+
+struct bpf_tcp_sock {
+	__u32 snd_cwnd;
+	__u32 srtt_us;
+	__u32 rtt_min;
+	__u32 snd_ssthresh;
+	__u32 rcv_nxt;
+	__u32 snd_nxt;
+	__u32 snd_una;
+	__u32 mss_cache;
+	__u32 ecn_flags;
+	__u32 rate_delivered;
+	__u32 rate_interval_us;
+	__u32 packets_out;
+	__u32 retrans_out;
+	__u32 total_retrans;
+	__u32 segs_in;
+	__u32 data_segs_in;
+	__u32 segs_out;
+	__u32 data_segs_out;
+	__u32 lost_out;
+	__u32 sacked_out;
+	__u64 bytes_received;
+	__u64 bytes_acked;
+	__u32 dsack_dups;
+	__u32 delivered;
+	__u32 delivered_ce;
+	__u32 icsk_retransmits;
+};
+
+typedef u64 (*btf_bpf_tcp_sock)(struct sock *);
+
+typedef u64 (*btf_bpf_get_listener_sock)(struct sock *);
+
+typedef u64 (*btf_bpf_skb_ecn_set_ce)(struct sk_buff *);
+
+typedef u64 (*btf_bpf_tcp_check_syncookie)(struct sock *, void *, u32, struct tcphdr *, u32);
+
+typedef u64 (*btf_bpf_tcp_gen_syncookie)(struct sock *, void *, u32, struct tcphdr *, u32);
+
+typedef u64 (*btf_bpf_sk_assign)(struct sk_buff *, struct sock *, u64);
+
+typedef u64 (*btf_bpf_sock_ops_load_hdr_opt)(struct bpf_sock_ops_kern *, void *, u32, u64);
+
+typedef u64 (*btf_bpf_sock_ops_store_hdr_opt)(struct bpf_sock_ops_kern *, const void *, u32, u64);
+
+typedef u64 (*btf_bpf_sock_ops_reserve_hdr_opt)(struct bpf_sock_ops_kern *, u32, u64);
+
+typedef u64 (*btf_bpf_skb_set_tstamp)(struct sk_buff *, u64, u32);
+
+typedef u64 (*btf_sk_select_reuseport)(struct sk_reuseport_kern *, struct bpf_map *, void *, u32);
+
+typedef u64 (*btf_sk_reuseport_load_bytes)(const struct sk_reuseport_kern *, u32, void *, u32);
+
+typedef u64 (*btf_sk_reuseport_load_bytes_relative)(const struct sk_reuseport_kern *, u32, void *, u32, u32);
+
+typedef u64 (*btf_bpf_sk_lookup_assign)(struct bpf_sk_lookup_kern *, struct sock *, u64);
+
+typedef u64 (*btf_bpf_skc_to_tcp6_sock)(struct sock *);
+
+typedef u64 (*btf_bpf_skc_to_tcp_sock)(struct sock *);
+
+typedef u64 (*btf_bpf_skc_to_tcp_timewait_sock)(struct sock *);
+
+typedef u64 (*btf_bpf_skc_to_tcp_request_sock)(struct sock *);
+
+typedef u64 (*btf_bpf_skc_to_udp6_sock)(struct sock *);
+
+typedef u64 (*btf_bpf_skc_to_unix_sock)(struct sock *);
+
+typedef u64 (*btf_bpf_skc_to_mptcp_sock)(struct sock *);
+
+typedef u64 (*btf_bpf_sock_from_file)(struct file *);
+
+struct strp_msg {
+	int full_len;
+	int offset;
+};
+
+struct tls_strparser {
+	struct sock *sk;
+	u32 mark: 8;
+	u32 stopped: 1;
+	u32 copy_mode: 1;
+	u32 mixed_decrypted: 1;
+	bool msg_ready;
+	struct strp_msg stm;
+	struct sk_buff *anchor;
+	struct work_struct work;
+};
+
+struct tls_sw_context_rx {
+	struct crypto_aead *aead_recv;
+	struct crypto_wait async_wait;
+	struct sk_buff_head rx_list;
+	void (*saved_data_ready)(struct sock *);
+	u8 reader_present;
+	u8 async_capable: 1;
+	u8 zc_capable: 1;
+	u8 reader_contended: 1;
+	struct tls_strparser strp;
+	atomic_t decrypt_pending;
+	struct sk_buff_head async_hold;
+	struct wait_queue_head wq;
+	u64 android_kabi_reserved1;
+};
+
+struct tcp6_sock {
+	struct tcp_sock tcp;
+	struct ipv6_pinfo inet6;
+};
+
+struct inet_timewait_sock {
+	struct sock_common __tw_common;
+	__u32 tw_mark;
+	volatile unsigned char tw_substate;
+	unsigned char tw_rcv_wscale;
+	__be16 tw_sport;
+	unsigned int tw_transparent: 1;
+	unsigned int tw_flowlabel: 20;
+	unsigned int tw_pad: 3;
+	unsigned int tw_tos: 8;
+	u32 tw_txhash;
+	u32 tw_priority;
+	struct timer_list tw_timer;
+	struct inet_bind_bucket *tw_tb;
+	struct inet_bind2_bucket *tw_tb2;
+	struct hlist_node tw_bind2_node;
+};
+
+struct tcp_timewait_sock {
+	struct inet_timewait_sock tw_sk;
+	u32 tw_rcv_wnd;
+	u32 tw_ts_offset;
+	u32 tw_ts_recent;
+	u32 tw_last_oow_ack_time;
+	int tw_ts_recent_stamp;
+	u32 tw_tx_delay;
+};
+
+struct udp6_sock {
+	struct udp_sock udp;
+	struct ipv6_pinfo inet6;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct mptcp_sock {};
+
+struct tls_prot_info {
+	u16 version;
+	u16 cipher_type;
+	u16 prepend_size;
+	u16 tag_size;
+	u16 overhead_size;
+	u16 iv_size;
+	u16 salt_size;
+	u16 rec_seq_size;
+	u16 aad_size;
+	u16 tail_size;
+};
+
+struct cipher_context {
+	char *iv;
+	char *rec_seq;
+};
+
+struct tls_crypto_info {
+	__u16 version;
+	__u16 cipher_type;
+};
+
+struct tls12_crypto_info_aes_gcm_128 {
+	struct tls_crypto_info info;
+	unsigned char iv[8];
+	unsigned char key[16];
+	unsigned char salt[4];
+	unsigned char rec_seq[8];
+};
+
+struct tls12_crypto_info_aes_gcm_256 {
+	struct tls_crypto_info info;
+	unsigned char iv[8];
+	unsigned char key[32];
+	unsigned char salt[4];
+	unsigned char rec_seq[8];
+};
+
+struct tls12_crypto_info_chacha20_poly1305 {
+	struct tls_crypto_info info;
+	unsigned char iv[12];
+	unsigned char key[32];
+	unsigned char salt[0];
+	unsigned char rec_seq[8];
+};
+
+struct tls12_crypto_info_sm4_gcm {
+	struct tls_crypto_info info;
+	unsigned char iv[8];
+	unsigned char key[16];
+	unsigned char salt[4];
+	unsigned char rec_seq[8];
+};
+
+struct tls12_crypto_info_sm4_ccm {
+	struct tls_crypto_info info;
+	unsigned char iv[8];
+	unsigned char key[16];
+	unsigned char salt[4];
+	unsigned char rec_seq[8];
+};
+
+union tls_crypto_context {
+	struct tls_crypto_info info;
+	union {
+		struct tls12_crypto_info_aes_gcm_128 aes_gcm_128;
+		struct tls12_crypto_info_aes_gcm_256 aes_gcm_256;
+		struct tls12_crypto_info_chacha20_poly1305 chacha20_poly1305;
+		struct tls12_crypto_info_sm4_gcm sm4_gcm;
+		struct tls12_crypto_info_sm4_ccm sm4_ccm;
+	};
+};
+
+struct tls_context {
+	struct tls_prot_info prot_info;
+	u8 tx_conf: 3;
+	u8 rx_conf: 3;
+	u8 zerocopy_sendfile: 1;
+	u8 rx_no_pad: 1;
+	int (*push_pending_record)(struct sock *, int);
+	void (*sk_write_space)(struct sock *);
+	void *priv_ctx_tx;
+	void *priv_ctx_rx;
+	struct net_device __attribute__((btf_type_tag("rcu"))) *netdev;
+	struct cipher_context tx;
+	struct cipher_context rx;
+	struct scatterlist *partially_sent_record;
+	u16 partially_sent_offset;
+	bool splicing_pages;
+	bool pending_open_record_frags;
+	struct mutex tx_lock;
+	unsigned long flags;
+	struct proto *sk_proto;
+	struct sock *sk;
+	void (*sk_destruct)(struct sock *);
+	union tls_crypto_context crypto_send;
+	union tls_crypto_context crypto_recv;
+	struct list_head list;
+	refcount_t refcount;
+	struct callback_head rcu;
+};
+
+struct fib_result {
+	__be32 prefix;
+	unsigned char prefixlen;
+	unsigned char nh_sel;
+	unsigned char type;
+	unsigned char scope;
+	u32 tclassid;
+	struct fib_nh_common *nhc;
+	struct fib_info *fi;
+	struct fib_table *table;
+	struct hlist_head *fa_head;
+};
+
+struct fib6_result {
+	struct fib6_nh *nh;
+	struct fib6_info *f6i;
+	u32 fib6_flags;
+	u8 fib6_type;
+	struct rt6_info *rt6;
+};
+
+struct sock_diag_handler {
+	__u8 family;
+	int (*dump)(struct sk_buff *, struct nlmsghdr *);
+	int (*get_info)(struct sk_buff *, struct sock *);
+	int (*destroy)(struct sk_buff *, struct nlmsghdr *);
+};
+
+struct broadcast_sk {
+	struct sock *sk;
+	struct work_struct work;
+};
+
+struct sock_diag_req {
+	__u8 sdiag_family;
+	__u8 sdiag_protocol;
+};
+
+enum hwtstamp_tx_types {
+	HWTSTAMP_TX_OFF = 0,
+	HWTSTAMP_TX_ON = 1,
+	HWTSTAMP_TX_ONESTEP_SYNC = 2,
+	HWTSTAMP_TX_ONESTEP_P2P = 3,
+	__HWTSTAMP_TX_CNT = 4,
+};
+
+enum hwtstamp_rx_filters {
+	HWTSTAMP_FILTER_NONE = 0,
+	HWTSTAMP_FILTER_ALL = 1,
+	HWTSTAMP_FILTER_SOME = 2,
+	HWTSTAMP_FILTER_PTP_V1_L4_EVENT = 3,
+	HWTSTAMP_FILTER_PTP_V1_L4_SYNC = 4,
+	HWTSTAMP_FILTER_PTP_V1_L4_DELAY_REQ = 5,
+	HWTSTAMP_FILTER_PTP_V2_L4_EVENT = 6,
+	HWTSTAMP_FILTER_PTP_V2_L4_SYNC = 7,
+	HWTSTAMP_FILTER_PTP_V2_L4_DELAY_REQ = 8,
+	HWTSTAMP_FILTER_PTP_V2_L2_EVENT = 9,
+	HWTSTAMP_FILTER_PTP_V2_L2_SYNC = 10,
+	HWTSTAMP_FILTER_PTP_V2_L2_DELAY_REQ = 11,
+	HWTSTAMP_FILTER_PTP_V2_EVENT = 12,
+	HWTSTAMP_FILTER_PTP_V2_SYNC = 13,
+	HWTSTAMP_FILTER_PTP_V2_DELAY_REQ = 14,
+	HWTSTAMP_FILTER_NTP_ALL = 15,
+	__HWTSTAMP_FILTER_CNT = 16,
+};
+
+enum hwtstamp_flags {
+	HWTSTAMP_FLAG_BONDED_PHC_INDEX = 1,
+	HWTSTAMP_FLAG_LAST = 1,
+	HWTSTAMP_FLAG_MASK = 1,
+};
+
+struct hwtstamp_config {
+	int flags;
+	int tx_type;
+	int rx_filter;
+};
+
+struct compat_ifconf {
+	compat_int_t ifc_len;
+	compat_caddr_t ifcbuf;
+};
+
+struct tso_t {
+	int next_frag_idx;
+	int size;
+	void *data;
+	u16 ip_id;
+	u8 tlen;
+	bool ipv6;
+	u32 tcp_seq;
+};
+
+enum fib_event_type {
+	FIB_EVENT_ENTRY_REPLACE = 0,
+	FIB_EVENT_ENTRY_APPEND = 1,
+	FIB_EVENT_ENTRY_ADD = 2,
+	FIB_EVENT_ENTRY_DEL = 3,
+	FIB_EVENT_RULE_ADD = 4,
+	FIB_EVENT_RULE_DEL = 5,
+	FIB_EVENT_NH_ADD = 6,
+	FIB_EVENT_NH_DEL = 7,
+	FIB_EVENT_VIF_ADD = 8,
+	FIB_EVENT_VIF_DEL = 9,
+};
+
+struct fib_notifier_net {
+	struct list_head fib_notifier_ops;
+	struct atomic_notifier_head fib_chain;
+};
+
+struct fib_notifier_info {
+	int family;
+	struct netlink_ext_ack *extack;
+};
+
+struct xdp_frame_bulk {
+	int count;
+	void *xa;
+	void *q[16];
+};
+
+struct xdp_attachment_info {
+	struct bpf_prog *prog;
+	u32 flags;
+};
+
+enum flow_action_id {
+	FLOW_ACTION_ACCEPT = 0,
+	FLOW_ACTION_DROP = 1,
+	FLOW_ACTION_TRAP = 2,
+	FLOW_ACTION_GOTO = 3,
+	FLOW_ACTION_REDIRECT = 4,
+	FLOW_ACTION_MIRRED = 5,
+	FLOW_ACTION_REDIRECT_INGRESS = 6,
+	FLOW_ACTION_MIRRED_INGRESS = 7,
+	FLOW_ACTION_VLAN_PUSH = 8,
+	FLOW_ACTION_VLAN_POP = 9,
+	FLOW_ACTION_VLAN_MANGLE = 10,
+	FLOW_ACTION_TUNNEL_ENCAP = 11,
+	FLOW_ACTION_TUNNEL_DECAP = 12,
+	FLOW_ACTION_MANGLE = 13,
+	FLOW_ACTION_ADD = 14,
+	FLOW_ACTION_CSUM = 15,
+	FLOW_ACTION_MARK = 16,
+	FLOW_ACTION_PTYPE = 17,
+	FLOW_ACTION_PRIORITY = 18,
+	FLOW_ACTION_RX_QUEUE_MAPPING = 19,
+	FLOW_ACTION_WAKE = 20,
+	FLOW_ACTION_QUEUE = 21,
+	FLOW_ACTION_SAMPLE = 22,
+	FLOW_ACTION_POLICE = 23,
+	FLOW_ACTION_CT = 24,
+	FLOW_ACTION_CT_METADATA = 25,
+	FLOW_ACTION_MPLS_PUSH = 26,
+	FLOW_ACTION_MPLS_POP = 27,
+	FLOW_ACTION_MPLS_MANGLE = 28,
+	FLOW_ACTION_GATE = 29,
+	FLOW_ACTION_PPPOE_PUSH = 30,
+	FLOW_ACTION_JUMP = 31,
+	FLOW_ACTION_PIPE = 32,
+	FLOW_ACTION_VLAN_PUSH_ETH = 33,
+	FLOW_ACTION_VLAN_POP_ETH = 34,
+	FLOW_ACTION_CONTINUE = 35,
+	NUM_FLOW_ACTIONS = 36,
+};
+
+enum flow_action_hw_stats {
+	FLOW_ACTION_HW_STATS_IMMEDIATE = 1,
+	FLOW_ACTION_HW_STATS_DELAYED = 2,
+	FLOW_ACTION_HW_STATS_ANY = 3,
+	FLOW_ACTION_HW_STATS_DISABLED = 4,
+	FLOW_ACTION_HW_STATS_DONT_CARE = 7,
+};
+
+enum flow_action_mangle_base {
+	FLOW_ACT_MANGLE_UNSPEC = 0,
+	FLOW_ACT_MANGLE_HDR_TYPE_ETH = 1,
+	FLOW_ACT_MANGLE_HDR_TYPE_IP4 = 2,
+	FLOW_ACT_MANGLE_HDR_TYPE_IP6 = 3,
+	FLOW_ACT_MANGLE_HDR_TYPE_TCP = 4,
+	FLOW_ACT_MANGLE_HDR_TYPE_UDP = 5,
+};
+
+enum offload_act_command {
+	FLOW_ACT_REPLACE = 0,
+	FLOW_ACT_DESTROY = 1,
+	FLOW_ACT_STATS = 2,
+};
+
+enum flow_block_binder_type {
+	FLOW_BLOCK_BINDER_TYPE_UNSPEC = 0,
+	FLOW_BLOCK_BINDER_TYPE_CLSACT_INGRESS = 1,
+	FLOW_BLOCK_BINDER_TYPE_CLSACT_EGRESS = 2,
+	FLOW_BLOCK_BINDER_TYPE_RED_EARLY_DROP = 3,
+	FLOW_BLOCK_BINDER_TYPE_RED_MARK = 4,
+};
+
+enum flow_block_command {
+	FLOW_BLOCK_BIND = 0,
+	FLOW_BLOCK_UNBIND = 1,
+};
+
+struct flow_block_cb;
+
+struct flow_block_indr {
+	struct list_head list;
+	struct net_device *dev;
+	struct Qdisc *sch;
+	enum flow_block_binder_type binder_type;
+	void *data;
+	void *cb_priv;
+	void (*cleanup)(struct flow_block_cb *);
+};
+
+struct flow_block_cb {
+	struct list_head driver_list;
+	struct list_head list;
+	flow_setup_cb_t *cb;
+	void *cb_ident;
+	void *cb_priv;
+	void (*release)(void *);
+	struct flow_block_indr indr;
+	unsigned int refcnt;
+};
+
+typedef int flow_indr_block_bind_cb_t(struct net_device *, struct Qdisc *, void *, enum tc_setup_type, void *, void *, void (*)(struct flow_block_cb *));
+
+struct flow_indr_dev {
+	struct list_head list;
+	flow_indr_block_bind_cb_t *cb;
+	void *cb_priv;
+	refcount_t refcnt;
+};
+
+struct flow_indir_dev_info {
+	void *data;
+	struct net_device *dev;
+	struct Qdisc *sch;
+	enum tc_setup_type type;
+	void (*cleanup)(struct flow_block_cb *);
+	struct list_head list;
+	enum flow_block_command command;
+	enum flow_block_binder_type binder_type;
+	struct list_head *cb_list;
+};
+
+struct flow_block_offload {
+	enum flow_block_command command;
+	enum flow_block_binder_type binder_type;
+	bool block_shared;
+	bool unlocked_driver_cb;
+	struct net *net;
+	struct flow_block *block;
+	struct list_head cb_list;
+	struct list_head *driver_block_list;
+	struct netlink_ext_ack *extack;
+	struct Qdisc *sch;
+	struct list_head *cb_list_head;
+};
+
+struct flow_match {
+	struct flow_dissector *dissector;
+	void *mask;
+	void *key;
+};
+
+typedef void (*action_destr)(void *);
+
+struct nf_flowtable;
+
+struct action_gate_entry;
+
+struct flow_action_cookie;
+
+struct flow_action_entry {
+	enum flow_action_id id;
+	u32 hw_index;
+	unsigned long cookie;
+	u64 miss_cookie;
+	enum flow_action_hw_stats hw_stats;
+	action_destr destructor;
+	void *destructor_priv;
+	union {
+		u32 chain_index;
+		struct net_device *dev;
+		struct {
+			u16 vid;
+			__be16 proto;
+			u8 prio;
+		} vlan;
+		struct {
+			unsigned char dst[6];
+			unsigned char src[6];
+		} vlan_push_eth;
+		struct {
+			enum flow_action_mangle_base htype;
+			u32 offset;
+			u32 mask;
+			u32 val;
+		} mangle;
+		struct ip_tunnel_info *tunnel;
+		u32 csum_flags;
+		u32 mark;
+		u16 ptype;
+		u16 rx_queue;
+		u32 priority;
+		struct {
+			u32 ctx;
+			u32 index;
+			u8 vf;
+		} queue;
+		struct {
+			struct psample_group *psample_group;
+			u32 rate;
+			u32 trunc_size;
+			bool truncate;
+		} sample;
+		struct {
+			u32 burst;
+			u64 rate_bytes_ps;
+			u64 peakrate_bytes_ps;
+			u32 avrate;
+			u16 overhead;
+			u64 burst_pkt;
+			u64 rate_pkt_ps;
+			u32 mtu;
+			struct {
+				enum flow_action_id act_id;
+				u32 extval;
+			} exceed;
+			struct {
+				enum flow_action_id act_id;
+				u32 extval;
+			} notexceed;
+		} police;
+		struct {
+			int action;
+			u16 zone;
+			struct nf_flowtable *flow_table;
+		} ct;
+		struct {
+			unsigned long cookie;
+			u32 mark;
+			u32 labels[4];
+			bool orig_dir;
+		} ct_metadata;
+		struct {
+			u32 label;
+			__be16 proto;
+			u8 tc;
+			u8 bos;
+			u8 ttl;
+		} mpls_push;
+		struct {
+			__be16 proto;
+		} mpls_pop;
+		struct {
+			u32 label;
+			u8 tc;
+			u8 bos;
+			u8 ttl;
+		} mpls_mangle;
+		struct {
+			s32 prio;
+			u64 basetime;
+			u64 cycletime;
+			u64 cycletimeext;
+			u32 num_entries;
+			struct action_gate_entry *entries;
+		} gate;
+		struct {
+			u16 sid;
+		} pppoe;
+	};
+	struct flow_action_cookie *user_cookie;
+};
+
+struct flow_action {
+	unsigned int num_entries;
+	struct flow_action_entry entries[0];
+};
+
+struct flow_rule {
+	struct flow_match match;
+	struct flow_action action;
+};
+
+struct flow_action_cookie {
+	u32 cookie_len;
+	u8 cookie[0];
+};
+
+struct flow_stats {
+	u64 pkts;
+	u64 bytes;
+	u64 drops;
+	u64 lastused;
+	enum flow_action_hw_stats used_hw_stats;
+	bool used_hw_stats_valid;
+};
+
+struct flow_offload_action {
+	struct netlink_ext_ack *extack;
+	enum offload_act_command command;
+	enum flow_action_id id;
+	u32 index;
+	unsigned long cookie;
+	struct flow_stats stats;
+	struct flow_action action;
+};
+
+struct flow_match_meta {
+	struct flow_dissector_key_meta *key;
+	struct flow_dissector_key_meta *mask;
+};
+
+struct flow_match_basic {
+	struct flow_dissector_key_basic *key;
+	struct flow_dissector_key_basic *mask;
+};
+
+struct flow_match_control {
+	struct flow_dissector_key_control *key;
+	struct flow_dissector_key_control *mask;
+};
+
+struct flow_match_eth_addrs {
+	struct flow_dissector_key_eth_addrs *key;
+	struct flow_dissector_key_eth_addrs *mask;
+};
+
+struct flow_match_vlan {
+	struct flow_dissector_key_vlan *key;
+	struct flow_dissector_key_vlan *mask;
+};
+
+struct flow_match_arp {
+	struct flow_dissector_key_arp *key;
+	struct flow_dissector_key_arp *mask;
+};
+
+struct flow_match_ipv4_addrs {
+	struct flow_dissector_key_ipv4_addrs *key;
+	struct flow_dissector_key_ipv4_addrs *mask;
+};
+
+struct flow_match_ipv6_addrs {
+	struct flow_dissector_key_ipv6_addrs *key;
+	struct flow_dissector_key_ipv6_addrs *mask;
+};
+
+struct flow_match_ip {
+	struct flow_dissector_key_ip *key;
+	struct flow_dissector_key_ip *mask;
+};
+
+struct flow_match_ports {
+	struct flow_dissector_key_ports *key;
+	struct flow_dissector_key_ports *mask;
+};
+
+struct flow_dissector_key_ports_range;
+
+struct flow_match_ports_range {
+	struct flow_dissector_key_ports_range *key;
+	struct flow_dissector_key_ports_range *mask;
+};
+
+struct flow_dissector_key_ports_range {
+	union {
+		struct flow_dissector_key_ports tp;
+		struct {
+			struct flow_dissector_key_ports tp_min;
+			struct flow_dissector_key_ports tp_max;
+		};
+	};
+};
+
+struct flow_match_tcp {
+	struct flow_dissector_key_tcp *key;
+	struct flow_dissector_key_tcp *mask;
+};
+
+struct flow_match_ipsec {
+	struct flow_dissector_key_ipsec *key;
+	struct flow_dissector_key_ipsec *mask;
+};
+
+struct flow_match_icmp {
+	struct flow_dissector_key_icmp *key;
+	struct flow_dissector_key_icmp *mask;
+};
+
+struct flow_match_mpls {
+	struct flow_dissector_key_mpls *key;
+	struct flow_dissector_key_mpls *mask;
+};
+
+struct flow_match_enc_keyid {
+	struct flow_dissector_key_keyid *key;
+	struct flow_dissector_key_keyid *mask;
+};
+
+struct flow_match_enc_opts {
+	struct flow_dissector_key_enc_opts *key;
+	struct flow_dissector_key_enc_opts *mask;
+};
+
+struct flow_match_ct {
+	struct flow_dissector_key_ct *key;
+	struct flow_dissector_key_ct *mask;
+};
+
+struct flow_match_pppoe {
+	struct flow_dissector_key_pppoe *key;
+	struct flow_dissector_key_pppoe *mask;
+};
+
+struct flow_match_l2tpv3 {
+	struct flow_dissector_key_l2tpv3 *key;
+	struct flow_dissector_key_l2tpv3 *mask;
+};
+
+struct offload_callbacks {
+	struct sk_buff * (*gso_segment)(struct sk_buff *, netdev_features_t);
+	struct sk_buff * (*gro_receive)(struct list_head *, struct sk_buff *);
+	int (*gro_complete)(struct sk_buff *, int);
+};
+
+struct packet_offload {
+	__be16 type;
+	u16 priority;
+	struct offload_callbacks callbacks;
+	struct list_head list;
+};
+
+struct napi_gro_cb {
+	union {
+		struct {
+			void *frag0;
+			unsigned int frag0_len;
+		};
+		struct {
+			struct sk_buff *last;
+			unsigned long age;
+		};
+	};
+	int data_offset;
+	u16 flush;
+	u16 flush_id;
+	u16 count;
+	u16 proto;
+	union {
+		struct {
+			u16 gro_remcsum_start;
+			u8 same_flow: 1;
+			u8 encap_mark: 1;
+			u8 csum_valid: 1;
+			u8 csum_cnt: 3;
+			u8 free: 2;
+			u8 is_ipv6: 1;
+			u8 is_fou: 1;
+			u8 is_atomic: 1;
+			u8 recursion_counter: 4;
+			u8 is_flist: 1;
+		};
+		struct {
+			u16 gro_remcsum_start;
+			u8 same_flow: 1;
+			u8 encap_mark: 1;
+			u8 csum_valid: 1;
+			u8 csum_cnt: 3;
+			u8 free: 2;
+			u8 is_ipv6: 1;
+			u8 is_fou: 1;
+			u8 is_atomic: 1;
+			u8 recursion_counter: 4;
+			u8 is_flist: 1;
+		} zeroed;
+	};
+	__wsum csum;
+};
+
+enum {
+	NETDEV_A_DEV_IFINDEX = 1,
+	NETDEV_A_DEV_PAD = 2,
+	NETDEV_A_DEV_XDP_FEATURES = 3,
+	NETDEV_A_DEV_XDP_ZC_MAX_SEGS = 4,
+	__NETDEV_A_DEV_MAX = 5,
+	NETDEV_A_DEV_MAX = 4,
+};
+
+enum {
+	NETDEV_CMD_DEV_GET = 1,
+	NETDEV_CMD_DEV_ADD_NTF = 2,
+	NETDEV_CMD_DEV_DEL_NTF = 3,
+	NETDEV_CMD_DEV_CHANGE_NTF = 4,
+	__NETDEV_CMD_MAX = 5,
+	NETDEV_CMD_MAX = 4,
+};
+
+enum {
+	NETDEV_NLGRP_MGMT = 0,
+};
+
+struct rx_queue_attribute {
+	struct attribute attr;
+	ssize_t (*show)(struct netdev_rx_queue *, char *);
+	ssize_t (*store)(struct netdev_rx_queue *, const char *, size_t);
+};
+
+struct netdev_queue_attribute {
+	struct attribute attr;
+	ssize_t (*show)(struct netdev_queue *, char *);
+	ssize_t (*store)(struct netdev_queue *, const char *, size_t);
+};
+
+enum {
+	FR_ACT_UNSPEC = 0,
+	FR_ACT_TO_TBL = 1,
+	FR_ACT_GOTO = 2,
+	FR_ACT_NOP = 3,
+	FR_ACT_RES3 = 4,
+	FR_ACT_RES4 = 5,
+	FR_ACT_BLACKHOLE = 6,
+	FR_ACT_UNREACHABLE = 7,
+	FR_ACT_PROHIBIT = 8,
+	__FR_ACT_MAX = 9,
+};
+
+enum {
+	FRA_UNSPEC = 0,
+	FRA_DST = 1,
+	FRA_SRC = 2,
+	FRA_IIFNAME = 3,
+	FRA_GOTO = 4,
+	FRA_UNUSED2 = 5,
+	FRA_PRIORITY = 6,
+	FRA_UNUSED3 = 7,
+	FRA_UNUSED4 = 8,
+	FRA_UNUSED5 = 9,
+	FRA_FWMARK = 10,
+	FRA_FLOW = 11,
+	FRA_TUN_ID = 12,
+	FRA_SUPPRESS_IFGROUP = 13,
+	FRA_SUPPRESS_PREFIXLEN = 14,
+	FRA_TABLE = 15,
+	FRA_FWMASK = 16,
+	FRA_OIFNAME = 17,
+	FRA_PAD = 18,
+	FRA_L3MDEV = 19,
+	FRA_UID_RANGE = 20,
+	FRA_PROTOCOL = 21,
+	FRA_IP_PROTO = 22,
+	FRA_SPORT_RANGE = 23,
+	FRA_DPORT_RANGE = 24,
+	__FRA_MAX = 25,
+};
+
+struct fib_rule_uid_range {
+	__u32 start;
+	__u32 end;
+};
+
+struct fib_rule_notifier_info {
+	struct fib_notifier_info info;
+	struct fib_rule *rule;
+};
+
+typedef void (*btf_trace_kfree_skb)(void *, struct sk_buff *, void *, enum skb_drop_reason);
+
+typedef void (*btf_trace_consume_skb)(void *, struct sk_buff *, void *);
+
+typedef void (*btf_trace_skb_copy_datagram_iovec)(void *, const struct sk_buff *, int);
+
+typedef void (*btf_trace_net_dev_start_xmit)(void *, const struct sk_buff *, const struct net_device *);
+
+typedef void (*btf_trace_net_dev_xmit)(void *, struct sk_buff *, int, struct net_device *, unsigned int);
+
+typedef void (*btf_trace_net_dev_xmit_timeout)(void *, struct net_device *, int);
+
+typedef void (*btf_trace_net_dev_queue)(void *, struct sk_buff *);
+
+typedef void (*btf_trace_netif_receive_skb)(void *, struct sk_buff *);
+
+typedef void (*btf_trace_netif_rx)(void *, struct sk_buff *);
+
+typedef void (*btf_trace_napi_gro_frags_entry)(void *, const struct sk_buff *);
+
+typedef void (*btf_trace_napi_gro_receive_entry)(void *, const struct sk_buff *);
+
+typedef void (*btf_trace_netif_receive_skb_entry)(void *, const struct sk_buff *);
+
+typedef void (*btf_trace_netif_receive_skb_list_entry)(void *, const struct sk_buff *);
+
+typedef void (*btf_trace_netif_rx_entry)(void *, const struct sk_buff *);
+
+typedef void (*btf_trace_napi_gro_frags_exit)(void *, int);
+
+typedef void (*btf_trace_napi_gro_receive_exit)(void *, int);
+
+typedef void (*btf_trace_netif_receive_skb_exit)(void *, int);
+
+typedef void (*btf_trace_netif_rx_exit)(void *, int);
+
+typedef void (*btf_trace_netif_receive_skb_list_exit)(void *, int);
+
+typedef void (*btf_trace_napi_poll)(void *, struct napi_struct *, int, int);
+
+typedef void (*btf_trace_sock_rcvqueue_full)(void *, struct sock *, struct sk_buff *);
+
+typedef void (*btf_trace_sock_exceed_buf_limit)(void *, struct sock *, struct proto *, long, int);
+
+typedef void (*btf_trace_inet_sock_set_state)(void *, const struct sock *, const int, const int);
+
+typedef void (*btf_trace_inet_sk_error_report)(void *, const struct sock *);
+
+typedef void (*btf_trace_sk_data_ready)(void *, const struct sock *);
+
+typedef void (*btf_trace_sock_send_length)(void *, struct sock *, int, int);
+
+typedef void (*btf_trace_sock_recv_length)(void *, struct sock *, int, int);
+
+typedef void (*btf_trace_udp_fail_queue_rcv_skb)(void *, int, struct sock *);
+
+typedef void (*btf_trace_tcp_retransmit_skb)(void *, const struct sock *, const struct sk_buff *);
+
+typedef void (*btf_trace_tcp_send_reset)(void *, const struct sock *, const struct sk_buff *);
+
+typedef void (*btf_trace_tcp_receive_reset)(void *, struct sock *);
+
+typedef void (*btf_trace_tcp_destroy_sock)(void *, struct sock *);
+
+typedef void (*btf_trace_tcp_rcv_space_adjust)(void *, struct sock *);
+
+typedef void (*btf_trace_tcp_retransmit_synack)(void *, const struct sock *, const struct request_sock *);
+
+typedef void (*btf_trace_tcp_probe)(void *, struct sock *, struct sk_buff *);
+
+typedef void (*btf_trace_tcp_bad_csum)(void *, const struct sk_buff *);
+
+typedef void (*btf_trace_tcp_cong_state_set)(void *, struct sock *, const u8);
+
+typedef void (*btf_trace_fib_table_lookup)(void *, u32, const struct flowi4 *, const struct fib_nh_common *, int);
+
+typedef void (*btf_trace_qdisc_dequeue)(void *, struct Qdisc *, const struct netdev_queue *, int, struct sk_buff *);
+
+typedef void (*btf_trace_qdisc_enqueue)(void *, struct Qdisc *, const struct netdev_queue *, struct sk_buff *);
+
+typedef void (*btf_trace_qdisc_reset)(void *, struct Qdisc *);
+
+typedef void (*btf_trace_qdisc_destroy)(void *, struct Qdisc *);
+
+typedef void (*btf_trace_qdisc_create)(void *, const struct Qdisc_ops *, struct net_device *, u32);
+
+typedef void (*btf_trace_br_fdb_add)(void *, struct ndmsg *, struct net_device *, const unsigned char *, u16, u16);
+
+struct net_bridge;
+
+struct net_bridge_port;
+
+typedef void (*btf_trace_br_fdb_external_learn_add)(void *, struct net_bridge *, struct net_bridge_port *, const unsigned char *, u16);
+
+struct bridge_id {
+	unsigned char prio[2];
+	unsigned char addr[6];
+};
+
+typedef struct bridge_id bridge_id;
+
+struct bridge_mcast_other_query {
+	struct timer_list timer;
+	struct timer_list delay_timer;
+};
+
+struct bridge_mcast_own_query {
+	struct timer_list timer;
+	u32 startup_sent;
+};
+
+struct br_ip {
+	union {
+		__be32 ip4;
+		struct in6_addr ip6;
+	} src;
+	union {
+		__be32 ip4;
+		struct in6_addr ip6;
+		unsigned char mac_addr[6];
+	} dst;
+	__be16 proto;
+	__u16 vid;
+};
+
+struct bridge_mcast_querier {
+	struct br_ip addr;
+	int port_ifidx;
+	seqcount_spinlock_t seq;
+};
+
+struct net_bridge_vlan;
+
+struct net_bridge_mcast {
+	struct net_bridge *br;
+	struct net_bridge_vlan *vlan;
+	u32 multicast_last_member_count;
+	u32 multicast_startup_query_count;
+	u8 multicast_querier;
+	u8 multicast_igmp_version;
+	u8 multicast_router;
+	u8 multicast_mld_version;
+	unsigned long multicast_last_member_interval;
+	unsigned long multicast_membership_interval;
+	unsigned long multicast_querier_interval;
+	unsigned long multicast_query_interval;
+	unsigned long multicast_query_response_interval;
+	unsigned long multicast_startup_query_interval;
+	struct hlist_head ip4_mc_router_list;
+	struct timer_list ip4_mc_router_timer;
+	struct bridge_mcast_other_query ip4_other_query;
+	struct bridge_mcast_own_query ip4_own_query;
+	struct bridge_mcast_querier ip4_querier;
+	struct hlist_head ip6_mc_router_list;
+	struct timer_list ip6_mc_router_timer;
+	struct bridge_mcast_other_query ip6_other_query;
+	struct bridge_mcast_own_query ip6_own_query;
+	struct bridge_mcast_querier ip6_querier;
+};
+
+struct bridge_mcast_stats;
+
+struct net_bridge {
+	spinlock_t lock;
+	spinlock_t hash_lock;
+	struct hlist_head frame_type_list;
+	struct net_device *dev;
+	unsigned long options;
+	struct rhashtable fdb_hash_tbl;
+	struct list_head port_list;
+	u16 group_fwd_mask;
+	u16 group_fwd_mask_required;
+	bridge_id designated_root;
+	bridge_id bridge_id;
+	unsigned char topology_change;
+	unsigned char topology_change_detected;
+	u16 root_port;
+	unsigned long max_age;
+	unsigned long hello_time;
+	unsigned long forward_delay;
+	unsigned long ageing_time;
+	unsigned long bridge_max_age;
+	unsigned long bridge_hello_time;
+	unsigned long bridge_forward_delay;
+	unsigned long bridge_ageing_time;
+	u32 root_path_cost;
+	u8 group_addr[6];
+	enum {
+		BR_NO_STP = 0,
+		BR_KERNEL_STP = 1,
+		BR_USER_STP = 2,
+	} stp_enabled;
+	struct net_bridge_mcast multicast_ctx;
+	struct bridge_mcast_stats __attribute__((btf_type_tag("percpu"))) *mcast_stats;
+	u32 hash_max;
+	spinlock_t multicast_lock;
+	struct rhashtable mdb_hash_tbl;
+	struct rhashtable sg_port_tbl;
+	struct hlist_head mcast_gc_list;
+	struct hlist_head mdb_list;
+	struct work_struct mcast_gc_work;
+	struct timer_list hello_timer;
+	struct timer_list tcn_timer;
+	struct timer_list topology_change_timer;
+	struct delayed_work gc_work;
+	struct kobject *ifobj;
+	u32 auto_cnt;
+	struct hlist_head fdb_list;
+};
+
+struct net_bridge_mcast_port {
+	struct net_bridge_port *port;
+	struct net_bridge_vlan *vlan;
+	struct bridge_mcast_own_query ip4_own_query;
+	struct timer_list ip4_mc_router_timer;
+	struct hlist_node ip4_rlist;
+	struct bridge_mcast_own_query ip6_own_query;
+	struct timer_list ip6_mc_router_timer;
+	struct hlist_node ip6_rlist;
+	unsigned char multicast_router;
+	u32 mdb_n_entries;
+	u32 mdb_max_entries;
+};
+
+struct br_tunnel_info {
+	__be64 tunnel_id;
+	struct metadata_dst __attribute__((btf_type_tag("rcu"))) *tunnel_dst;
+};
+
+struct net_bridge_vlan {
+	struct rhash_head vnode;
+	struct rhash_head tnode;
+	u16 vid;
+	u16 flags;
+	u16 priv_flags;
+	u8 state;
+	struct pcpu_sw_netstats __attribute__((btf_type_tag("percpu"))) *stats;
+	union {
+		struct net_bridge *br;
+		struct net_bridge_port *port;
+	};
+	union {
+		refcount_t refcnt;
+		struct net_bridge_vlan *brvlan;
+	};
+	struct br_tunnel_info tinfo;
+	union {
+		struct net_bridge_mcast br_mcast_ctx;
+		struct net_bridge_mcast_port port_mcast_ctx;
+	};
+	u16 msti;
+	struct list_head vlist;
+	struct callback_head rcu;
+};
+
+typedef __u16 port_id;
+
+struct bridge_stp_xstats {
+	__u64 transition_blk;
+	__u64 transition_fwd;
+	__u64 rx_bpdu;
+	__u64 tx_bpdu;
+	__u64 rx_tcn;
+	__u64 tx_tcn;
+};
+
+struct net_bridge_port {
+	struct net_bridge *br;
+	struct net_device *dev;
+	netdevice_tracker dev_tracker;
+	struct list_head list;
+	unsigned long flags;
+	struct net_bridge_port __attribute__((btf_type_tag("rcu"))) *backup_port;
+	u32 backup_nhid;
+	u8 priority;
+	u8 state;
+	u16 port_no;
+	unsigned char topology_change_ack;
+	unsigned char config_pending;
+	port_id port_id;
+	port_id designated_port;
+	bridge_id designated_root;
+	bridge_id designated_bridge;
+	u32 path_cost;
+	u32 designated_cost;
+	unsigned long designated_age;
+	struct timer_list forward_delay_timer;
+	struct timer_list hold_timer;
+	struct timer_list message_age_timer;
+	struct kobject kobj;
+	struct callback_head rcu;
+	struct net_bridge_mcast_port multicast_ctx;
+	struct bridge_mcast_stats __attribute__((btf_type_tag("percpu"))) *mcast_stats;
+	u32 multicast_eht_hosts_limit;
+	u32 multicast_eht_hosts_cnt;
+	struct hlist_head mglist;
+	char sysfs_name[16];
+	u16 group_fwd_mask;
+	u16 backup_redirected_cnt;
+	struct bridge_stp_xstats stp_xstats;
+};
+
+struct br_mcast_stats {
+	__u64 igmp_v1queries[2];
+	__u64 igmp_v2queries[2];
+	__u64 igmp_v3queries[2];
+	__u64 igmp_leaves[2];
+	__u64 igmp_v1reports[2];
+	__u64 igmp_v2reports[2];
+	__u64 igmp_v3reports[2];
+	__u64 igmp_parse_errors;
+	__u64 mld_v1queries[2];
+	__u64 mld_v2queries[2];
+	__u64 mld_leaves[2];
+	__u64 mld_v1reports[2];
+	__u64 mld_v2reports[2];
+	__u64 mld_parse_errors;
+	__u64 mcast_bytes[2];
+	__u64 mcast_packets[2];
+};
+
+struct bridge_mcast_stats {
+	struct br_mcast_stats mstats;
+	struct u64_stats_sync syncp;
+};
+
+struct net_bridge_fdb_entry;
+
+typedef void (*btf_trace_fdb_delete)(void *, struct net_bridge *, struct net_bridge_fdb_entry *);
+
+struct mac_addr {
+	unsigned char addr[6];
+};
+
+typedef struct mac_addr mac_addr;
+
+struct net_bridge_fdb_key {
+	mac_addr addr;
+	u16 vlan_id;
+};
+
+struct net_bridge_fdb_entry {
+	struct rhash_head rhnode;
+	struct net_bridge_port *dst;
+	struct net_bridge_fdb_key key;
+	struct hlist_node fdb_node;
+	unsigned long flags;
+	long: 64;
+	long: 64;
+	unsigned long updated;
+	unsigned long used;
+	struct callback_head rcu;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+typedef void (*btf_trace_br_fdb_update)(void *, struct net_bridge *, struct net_bridge_port *, const unsigned char *, u16, unsigned long);
+
+typedef void (*btf_trace_br_mdb_full)(void *, const struct net_device *, const struct br_ip *);
+
+typedef void (*btf_trace_page_pool_release)(void *, const struct page_pool *, s32, u32, u32);
+
+typedef void (*btf_trace_page_pool_state_release)(void *, const struct page_pool *, const struct page *, u32);
+
+typedef void (*btf_trace_page_pool_state_hold)(void *, const struct page_pool *, const struct page *, u32);
+
+typedef void (*btf_trace_page_pool_update_nid)(void *, const struct page_pool *, int);
+
+typedef void (*btf_trace_neigh_create)(void *, struct neigh_table *, struct net_device *, const void *, const struct neighbour *, bool);
+
+typedef void (*btf_trace_neigh_update)(void *, struct neighbour *, const u8 *, u8, u32, u32);
+
+typedef void (*btf_trace_neigh_update_done)(void *, struct neighbour *, int);
+
+typedef void (*btf_trace_neigh_timer_handler)(void *, struct neighbour *, int);
+
+typedef void (*btf_trace_neigh_event_send_done)(void *, struct neighbour *, int);
+
+typedef void (*btf_trace_neigh_event_send_dead)(void *, struct neighbour *, int);
+
+typedef void (*btf_trace_neigh_cleanup_and_release)(void *, struct neighbour *, int);
+
+enum tcp_ca_state {
+	TCP_CA_Open = 0,
+	TCP_CA_Disorder = 1,
+	TCP_CA_CWR = 2,
+	TCP_CA_Recovery = 3,
+	TCP_CA_Loss = 4,
+};
+
+struct trace_event_raw_kfree_skb {
+	struct trace_entry ent;
+	void *skbaddr;
+	void *location;
+	unsigned short protocol;
+	enum skb_drop_reason reason;
+	char __data[0];
+};
+
+struct trace_event_raw_consume_skb {
+	struct trace_entry ent;
+	void *skbaddr;
+	void *location;
+	char __data[0];
+};
+
+struct trace_event_raw_skb_copy_datagram_iovec {
+	struct trace_entry ent;
+	const void *skbaddr;
+	int len;
+	char __data[0];
+};
+
+struct trace_event_raw_net_dev_start_xmit {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	u16 queue_mapping;
+	const void *skbaddr;
+	bool vlan_tagged;
+	u16 vlan_proto;
+	u16 vlan_tci;
+	u16 protocol;
+	u8 ip_summed;
+	unsigned int len;
+	unsigned int data_len;
+	int network_offset;
+	bool transport_offset_valid;
+	int transport_offset;
+	u8 tx_flags;
+	u16 gso_size;
+	u16 gso_segs;
+	u16 gso_type;
+	char __data[0];
+};
+
+struct trace_event_raw_net_dev_xmit {
+	struct trace_entry ent;
+	void *skbaddr;
+	unsigned int len;
+	int rc;
+	u32 __data_loc_name;
+	char __data[0];
+};
+
+struct trace_event_raw_net_dev_xmit_timeout {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	u32 __data_loc_driver;
+	int queue_index;
+	char __data[0];
+};
+
+struct trace_event_raw_net_dev_template {
+	struct trace_entry ent;
+	void *skbaddr;
+	unsigned int len;
+	u32 __data_loc_name;
+	char __data[0];
+};
+
+struct trace_event_raw_net_dev_rx_verbose_template {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	unsigned int napi_id;
+	u16 queue_mapping;
+	const void *skbaddr;
+	bool vlan_tagged;
+	u16 vlan_proto;
+	u16 vlan_tci;
+	u16 protocol;
+	u8 ip_summed;
+	u32 hash;
+	bool l4_hash;
+	unsigned int len;
+	unsigned int data_len;
+	unsigned int truesize;
+	bool mac_header_valid;
+	int mac_header;
+	unsigned char nr_frags;
+	u16 gso_size;
+	u16 gso_type;
+	char __data[0];
+};
+
+struct trace_event_raw_net_dev_rx_exit_template {
+	struct trace_entry ent;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_napi_poll {
+	struct trace_entry ent;
+	struct napi_struct *napi;
+	u32 __data_loc_dev_name;
+	int work;
+	int budget;
+	char __data[0];
+};
+
+struct trace_event_raw_sock_rcvqueue_full {
+	struct trace_entry ent;
+	int rmem_alloc;
+	unsigned int truesize;
+	int sk_rcvbuf;
+	char __data[0];
+};
+
+struct trace_event_raw_sock_exceed_buf_limit {
+	struct trace_entry ent;
+	char name[32];
+	long sysctl_mem[3];
+	long allocated;
+	int sysctl_rmem;
+	int rmem_alloc;
+	int sysctl_wmem;
+	int wmem_alloc;
+	int wmem_queued;
+	int kind;
+	char __data[0];
+};
+
+struct trace_event_raw_inet_sock_set_state {
+	struct trace_entry ent;
+	const void *skaddr;
+	int oldstate;
+	int newstate;
+	__u16 sport;
+	__u16 dport;
+	__u16 family;
+	__u16 protocol;
+	__u8 saddr[4];
+	__u8 daddr[4];
+	__u8 saddr_v6[16];
+	__u8 daddr_v6[16];
+	char __data[0];
+};
+
+struct trace_event_raw_inet_sk_error_report {
+	struct trace_entry ent;
+	int error;
+	__u16 sport;
+	__u16 dport;
+	__u16 family;
+	__u16 protocol;
+	__u8 saddr[4];
+	__u8 daddr[4];
+	__u8 saddr_v6[16];
+	__u8 daddr_v6[16];
+	char __data[0];
+};
+
+struct trace_event_raw_sk_data_ready {
+	struct trace_entry ent;
+	const void *skaddr;
+	__u16 family;
+	__u16 protocol;
+	unsigned long ip;
+	char __data[0];
+};
+
+struct trace_event_raw_sock_msg_length {
+	struct trace_entry ent;
+	void *sk;
+	__u16 family;
+	__u16 protocol;
+	int ret;
+	int flags;
+	char __data[0];
+};
+
+struct trace_event_raw_udp_fail_queue_rcv_skb {
+	struct trace_entry ent;
+	int rc;
+	__u16 lport;
+	char __data[0];
+};
+
+struct trace_event_raw_tcp_event_sk_skb {
+	struct trace_entry ent;
+	const void *skbaddr;
+	const void *skaddr;
+	int state;
+	__u16 sport;
+	__u16 dport;
+	__u16 family;
+	__u8 saddr[4];
+	__u8 daddr[4];
+	__u8 saddr_v6[16];
+	__u8 daddr_v6[16];
+	char __data[0];
+};
+
+struct trace_event_raw_tcp_event_sk {
+	struct trace_entry ent;
+	const void *skaddr;
+	__u16 sport;
+	__u16 dport;
+	__u16 family;
+	__u8 saddr[4];
+	__u8 daddr[4];
+	__u8 saddr_v6[16];
+	__u8 daddr_v6[16];
+	__u64 sock_cookie;
+	char __data[0];
+};
+
+struct trace_event_raw_tcp_retransmit_synack {
+	struct trace_entry ent;
+	const void *skaddr;
+	const void *req;
+	__u16 sport;
+	__u16 dport;
+	__u16 family;
+	__u8 saddr[4];
+	__u8 daddr[4];
+	__u8 saddr_v6[16];
+	__u8 daddr_v6[16];
+	char __data[0];
+};
+
+struct trace_event_raw_tcp_probe {
+	struct trace_entry ent;
+	__u8 saddr[28];
+	__u8 daddr[28];
+	__u16 sport;
+	__u16 dport;
+	__u16 family;
+	__u32 mark;
+	__u16 data_len;
+	__u32 snd_nxt;
+	__u32 snd_una;
+	__u32 snd_cwnd;
+	__u32 ssthresh;
+	__u32 snd_wnd;
+	__u32 srtt;
+	__u32 rcv_wnd;
+	__u64 sock_cookie;
+	char __data[0];
+};
+
+struct trace_event_raw_tcp_event_skb {
+	struct trace_entry ent;
+	const void *skbaddr;
+	__u8 saddr[28];
+	__u8 daddr[28];
+	char __data[0];
+};
+
+struct trace_event_raw_tcp_cong_state_set {
+	struct trace_entry ent;
+	const void *skaddr;
+	__u16 sport;
+	__u16 dport;
+	__u16 family;
+	__u8 saddr[4];
+	__u8 daddr[4];
+	__u8 saddr_v6[16];
+	__u8 daddr_v6[16];
+	__u8 cong_state;
+	char __data[0];
+};
+
+struct trace_event_raw_fib_table_lookup {
+	struct trace_entry ent;
+	u32 tb_id;
+	int err;
+	int oif;
+	int iif;
+	u8 proto;
+	__u8 tos;
+	__u8 scope;
+	__u8 flags;
+	__u8 src[4];
+	__u8 dst[4];
+	__u8 gw4[4];
+	__u8 gw6[16];
+	u16 sport;
+	u16 dport;
+	char name[16];
+	char __data[0];
+};
+
+struct trace_event_raw_qdisc_dequeue {
+	struct trace_entry ent;
+	struct Qdisc *qdisc;
+	const struct netdev_queue *txq;
+	int packets;
+	void *skbaddr;
+	int ifindex;
+	u32 handle;
+	u32 parent;
+	unsigned long txq_state;
+	char __data[0];
+};
+
+struct trace_event_raw_qdisc_enqueue {
+	struct trace_entry ent;
+	struct Qdisc *qdisc;
+	const struct netdev_queue *txq;
+	void *skbaddr;
+	int ifindex;
+	u32 handle;
+	u32 parent;
+	char __data[0];
+};
+
+struct trace_event_raw_qdisc_reset {
+	struct trace_entry ent;
+	u32 __data_loc_dev;
+	u32 __data_loc_kind;
+	u32 parent;
+	u32 handle;
+	char __data[0];
+};
+
+struct trace_event_raw_qdisc_destroy {
+	struct trace_entry ent;
+	u32 __data_loc_dev;
+	u32 __data_loc_kind;
+	u32 parent;
+	u32 handle;
+	char __data[0];
+};
+
+struct trace_event_raw_qdisc_create {
+	struct trace_entry ent;
+	u32 __data_loc_dev;
+	u32 __data_loc_kind;
+	u32 parent;
+	char __data[0];
+};
+
+struct trace_event_raw_br_fdb_add {
+	struct trace_entry ent;
+	u8 ndm_flags;
+	u32 __data_loc_dev;
+	unsigned char addr[6];
+	u16 vid;
+	u16 nlh_flags;
+	char __data[0];
+};
+
+struct trace_event_raw_br_fdb_external_learn_add {
+	struct trace_entry ent;
+	u32 __data_loc_br_dev;
+	u32 __data_loc_dev;
+	unsigned char addr[6];
+	u16 vid;
+	char __data[0];
+};
+
+struct trace_event_raw_fdb_delete {
+	struct trace_entry ent;
+	u32 __data_loc_br_dev;
+	u32 __data_loc_dev;
+	unsigned char addr[6];
+	u16 vid;
+	char __data[0];
+};
+
+struct trace_event_raw_br_fdb_update {
+	struct trace_entry ent;
+	u32 __data_loc_br_dev;
+	u32 __data_loc_dev;
+	unsigned char addr[6];
+	u16 vid;
+	unsigned long flags;
+	char __data[0];
+};
+
+struct trace_event_raw_br_mdb_full {
+	struct trace_entry ent;
+	u32 __data_loc_dev;
+	int af;
+	u16 vid;
+	__u8 src[16];
+	__u8 grp[16];
+	__u8 grpmac[6];
+	char __data[0];
+};
+
+struct trace_event_raw_page_pool_release {
+	struct trace_entry ent;
+	const struct page_pool *pool;
+	s32 inflight;
+	u32 hold;
+	u32 release;
+	u64 cnt;
+	char __data[0];
+};
+
+struct trace_event_raw_page_pool_state_release {
+	struct trace_entry ent;
+	const struct page_pool *pool;
+	const struct page *page;
+	u32 release;
+	unsigned long pfn;
+	char __data[0];
+};
+
+struct trace_event_raw_page_pool_state_hold {
+	struct trace_entry ent;
+	const struct page_pool *pool;
+	const struct page *page;
+	u32 hold;
+	unsigned long pfn;
+	char __data[0];
+};
+
+struct trace_event_raw_page_pool_update_nid {
+	struct trace_entry ent;
+	const struct page_pool *pool;
+	int pool_nid;
+	int new_nid;
+	char __data[0];
+};
+
+struct trace_event_raw_neigh_create {
+	struct trace_entry ent;
+	u32 family;
+	u32 __data_loc_dev;
+	int entries;
+	u8 created;
+	u8 gc_exempt;
+	u8 primary_key4[4];
+	u8 primary_key6[16];
+	char __data[0];
+};
+
+struct trace_event_raw_neigh_update {
+	struct trace_entry ent;
+	u32 family;
+	u32 __data_loc_dev;
+	u8 lladdr[32];
+	u8 lladdr_len;
+	u8 flags;
+	u8 nud_state;
+	u8 type;
+	u8 dead;
+	int refcnt;
+	__u8 primary_key4[4];
+	__u8 primary_key6[16];
+	unsigned long confirmed;
+	unsigned long updated;
+	unsigned long used;
+	u8 new_lladdr[32];
+	u8 new_state;
+	u32 update_flags;
+	u32 pid;
+	char __data[0];
+};
+
+struct trace_event_raw_neigh__update {
+	struct trace_entry ent;
+	u32 family;
+	u32 __data_loc_dev;
+	u8 lladdr[32];
+	u8 lladdr_len;
+	u8 flags;
+	u8 nud_state;
+	u8 type;
+	u8 dead;
+	int refcnt;
+	__u8 primary_key4[4];
+	__u8 primary_key6[16];
+	unsigned long confirmed;
+	unsigned long updated;
+	unsigned long used;
+	u32 err;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_net_dev_start_xmit {
+	u32 name;
+};
+
+struct trace_event_data_offsets_net_dev_xmit {
+	u32 name;
+};
+
+struct trace_event_data_offsets_net_dev_template {
+	u32 name;
+};
+
+struct trace_event_data_offsets_net_dev_rx_verbose_template {
+	u32 name;
+};
+
+struct trace_event_data_offsets_napi_poll {
+	u32 dev_name;
+};
+
+struct trace_event_data_offsets_br_fdb_add {
+	u32 dev;
+};
+
+struct trace_event_data_offsets_br_mdb_full {
+	u32 dev;
+};
+
+struct trace_event_data_offsets_neigh_create {
+	u32 dev;
+};
+
+struct trace_event_data_offsets_neigh_update {
+	u32 dev;
+};
+
+struct trace_event_data_offsets_neigh__update {
+	u32 dev;
+};
+
+struct trace_event_data_offsets_kfree_skb {};
+
+struct trace_event_data_offsets_consume_skb {};
+
+struct trace_event_data_offsets_skb_copy_datagram_iovec {};
+
+struct trace_event_data_offsets_net_dev_xmit_timeout {
+	u32 name;
+	u32 driver;
+};
+
+struct trace_event_data_offsets_net_dev_rx_exit_template {};
+
+struct trace_event_data_offsets_sock_rcvqueue_full {};
+
+struct trace_event_data_offsets_sock_exceed_buf_limit {};
+
+struct trace_event_data_offsets_inet_sock_set_state {};
+
+struct trace_event_data_offsets_inet_sk_error_report {};
+
+struct trace_event_data_offsets_sk_data_ready {};
+
+struct trace_event_data_offsets_sock_msg_length {};
+
+struct trace_event_data_offsets_udp_fail_queue_rcv_skb {};
+
+struct trace_event_data_offsets_tcp_event_sk_skb {};
+
+struct trace_event_data_offsets_tcp_event_sk {};
+
+struct trace_event_data_offsets_tcp_retransmit_synack {};
+
+struct trace_event_data_offsets_tcp_probe {};
+
+struct trace_event_data_offsets_tcp_event_skb {};
+
+struct trace_event_data_offsets_tcp_cong_state_set {};
+
+struct trace_event_data_offsets_fib_table_lookup {};
+
+struct trace_event_data_offsets_qdisc_dequeue {};
+
+struct trace_event_data_offsets_qdisc_enqueue {};
+
+struct trace_event_data_offsets_qdisc_reset {
+	u32 dev;
+	u32 kind;
+};
+
+struct trace_event_data_offsets_qdisc_destroy {
+	u32 dev;
+	u32 kind;
+};
+
+struct trace_event_data_offsets_qdisc_create {
+	u32 dev;
+	u32 kind;
+};
+
+struct trace_event_data_offsets_br_fdb_external_learn_add {
+	u32 br_dev;
+	u32 dev;
+};
+
+struct trace_event_data_offsets_fdb_delete {
+	u32 br_dev;
+	u32 dev;
+};
+
+struct trace_event_data_offsets_br_fdb_update {
+	u32 br_dev;
+	u32 dev;
+};
+
+struct trace_event_data_offsets_page_pool_release {};
+
+struct trace_event_data_offsets_page_pool_state_release {};
+
+struct trace_event_data_offsets_page_pool_state_hold {};
+
+struct trace_event_data_offsets_page_pool_update_nid {};
+
+struct net_test {
+	char name[32];
+	int (*fn)(struct net_device *);
+};
+
+enum ethtool_test_flags {
+	ETH_TEST_FL_OFFLINE = 1,
+	ETH_TEST_FL_FAILED = 2,
+	ETH_TEST_FL_EXTERNAL_LB = 4,
+	ETH_TEST_FL_EXTERNAL_LB_DONE = 8,
+};
+
+struct netsfhdr {
+	__be32 version;
+	__be64 magic;
+	u8 id;
+} __attribute__((packed));
+
+struct net_packet_attrs {
+	const unsigned char *src;
+	const unsigned char *dst;
+	u32 ip_src;
+	u32 ip_dst;
+	bool tcp;
+	u16 sport;
+	u16 dport;
+	int timeout;
+	int size;
+	int max_size;
+	u8 id;
+	u16 queue_mapping;
+};
+
+struct net_test_priv {
+	struct net_packet_attrs *packet;
+	struct packet_type pt;
+	struct completion comp;
+	int double_vlan;
+	int vlan_id;
+	int ok;
+};
+
+struct gro_cell {
+	struct sk_buff_head napi_skbs;
+	struct napi_struct napi;
+};
+
+struct percpu_free_defer {
+	struct callback_head rcu;
+	void __attribute__((btf_type_tag("percpu"))) *ptr;
+};
+
+struct gro_cells {
+	struct gro_cell __attribute__((btf_type_tag("percpu"))) *cells;
+};
+
+enum __sk_action {
+	__SK_DROP = 0,
+	__SK_PASS = 1,
+	__SK_REDIRECT = 2,
+	__SK_NONE = 3,
+};
+
+enum sk_psock_state_bits {
+	SK_PSOCK_TX_ENABLED = 0,
+	SK_PSOCK_RX_STRP_ENABLED = 1,
+};
+
+struct sk_psock_link {
+	struct list_head list;
+	struct bpf_map *map;
+	void *link_raw;
+};
+
+typedef u64 (*btf_bpf_sock_map_update)(struct bpf_sock_ops_kern *, struct bpf_map *, void *, u64);
+
+typedef u64 (*btf_bpf_sk_redirect_map)(struct sk_buff *, struct bpf_map *, u32, u64);
+
+typedef u64 (*btf_bpf_msg_redirect_map)(struct sk_msg *, struct bpf_map *, u32, u64);
+
+typedef u64 (*btf_bpf_sock_hash_update)(struct bpf_sock_ops_kern *, struct bpf_map *, void *, u64);
+
+typedef u64 (*btf_bpf_sk_redirect_hash)(struct sk_buff *, struct bpf_map *, void *, u64);
+
+typedef u64 (*btf_bpf_msg_redirect_hash)(struct sk_msg *, struct bpf_map *, void *, u64);
+
+struct bpf_stab {
+	struct bpf_map map;
+	struct sock **sks;
+	struct sk_psock_progs progs;
+	spinlock_t lock;
+	long: 64;
+	long: 64;
+};
+
+struct bpf_shtab_bucket;
+
+struct bpf_shtab {
+	struct bpf_map map;
+	struct bpf_shtab_bucket *buckets;
+	u32 buckets_num;
+	u32 elem_size;
+	struct sk_psock_progs progs;
+	atomic_t count;
+	long: 64;
+};
+
+struct bpf_shtab_bucket {
+	struct hlist_head head;
+	spinlock_t lock;
+};
+
+struct bpf_shtab_elem {
+	struct callback_head rcu;
+	u32 hash;
+	struct sock *sk;
+	struct hlist_node node;
+	u8 key[0];
+};
+
+struct sock_map_seq_info {
+	struct bpf_map *map;
+	struct sock *sk;
+	u32 index;
+};
+
+struct bpf_iter__sockmap {
+	union {
+		struct bpf_iter_meta *meta;
+	};
+	union {
+		struct bpf_map *map;
+	};
+	union {
+		void *key;
+	};
+	union {
+		struct sock *sk;
+	};
+};
+
+struct sock_hash_seq_info {
+	struct bpf_map *map;
+	struct bpf_shtab *htab;
+	u32 bucket_id;
+};
+
+enum {
+	SK_DIAG_BPF_STORAGE_REQ_NONE = 0,
+	SK_DIAG_BPF_STORAGE_REQ_MAP_FD = 1,
+	__SK_DIAG_BPF_STORAGE_REQ_MAX = 2,
+};
+
+enum {
+	SK_DIAG_BPF_STORAGE_REP_NONE = 0,
+	SK_DIAG_BPF_STORAGE = 1,
+	__SK_DIAG_BPF_STORAGE_REP_MAX = 2,
+};
+
+enum {
+	SK_DIAG_BPF_STORAGE_NONE = 0,
+	SK_DIAG_BPF_STORAGE_PAD = 1,
+	SK_DIAG_BPF_STORAGE_MAP_ID = 2,
+	SK_DIAG_BPF_STORAGE_MAP_VALUE = 3,
+	__SK_DIAG_BPF_STORAGE_MAX = 4,
+};
+
+typedef u64 (*btf_bpf_sk_storage_get)(struct bpf_map *, struct sock *, void *, u64, gfp_t);
+
+typedef u64 (*btf_bpf_sk_storage_delete)(struct bpf_map *, struct sock *);
+
+typedef u64 (*btf_bpf_sk_storage_get_tracing)(struct bpf_map *, struct sock *, void *, u64, gfp_t);
+
+typedef u64 (*btf_bpf_sk_storage_delete_tracing)(struct bpf_map *, struct sock *);
+
+struct bpf_sk_storage_diag {
+	u32 nr_maps;
+	struct bpf_map *maps[0];
+};
+
+struct bpf_iter_seq_sk_storage_map_info {
+	struct bpf_map *map;
+	unsigned int bucket_id;
+	unsigned int skip_elems;
+};
+
+struct bpf_iter__bpf_sk_storage_map {
+	union {
+		struct bpf_iter_meta *meta;
+	};
+	union {
+		struct bpf_map *map;
+	};
+	union {
+		struct sock *sk;
+	};
+	union {
+		void *value;
+	};
+};
+
+struct compat_cmsghdr {
+	compat_size_t cmsg_len;
+	compat_int_t cmsg_level;
+	compat_int_t cmsg_type;
+};
+
+struct llc_addr {
+	unsigned char lsap;
+	unsigned char mac[6];
+};
+
+struct llc_sap {
+	unsigned char state;
+	unsigned char p_bit;
+	unsigned char f_bit;
+	refcount_t refcnt;
+	int (*rcv_func)(struct sk_buff *, struct net_device *, struct packet_type *, struct net_device *);
+	struct llc_addr laddr;
+	struct list_head node;
+	spinlock_t sk_lock;
+	int sk_count;
+	struct hlist_nulls_head sk_laddr_hash[64];
+	struct hlist_head sk_dev_hash[64];
+	struct callback_head rcu;
+};
+
+struct llc_pdu_un {
+	u8 dsap;
+	u8 ssap;
+	u8 ctrl_1;
+};
+
+struct llc_pdu_sn {
+	u8 dsap;
+	u8 ssap;
+	u8 ctrl_1;
+	u8 ctrl_2;
+};
+
+struct datalink_proto {
+	unsigned char type[8];
+	struct llc_sap *sap;
+	unsigned short header_length;
+	int (*rcvfunc)(struct sk_buff *, struct net_device *, struct packet_type *, struct net_device *);
+	int (*request)(struct datalink_proto *, struct sk_buff *, const unsigned char *);
+	struct list_head node;
+};
+
+struct stp_proto {
+	unsigned char group_address[6];
+	void (*rcv)(const struct stp_proto *, struct sk_buff *, struct net_device *);
+	void *data;
+};
+
+enum {
+	TCA_UNSPEC = 0,
+	TCA_KIND = 1,
+	TCA_OPTIONS = 2,
+	TCA_STATS = 3,
+	TCA_XSTATS = 4,
+	TCA_RATE = 5,
+	TCA_FCNT = 6,
+	TCA_STATS2 = 7,
+	TCA_STAB = 8,
+	TCA_PAD = 9,
+	TCA_DUMP_INVISIBLE = 10,
+	TCA_CHAIN = 11,
+	TCA_HW_OFFLOAD = 12,
+	TCA_INGRESS_BLOCK = 13,
+	TCA_EGRESS_BLOCK = 14,
+	TCA_DUMP_FLAGS = 15,
+	TCA_EXT_WARN_MSG = 16,
+	__TCA_MAX = 17,
+};
+
+struct skb_array {
+	struct ptr_ring ring;
+};
+
+struct pfifo_fast_priv {
+	struct skb_array q[3];
+};
+
+struct tc_prio_qopt {
+	int bands;
+	__u8 priomap[16];
+};
+
+struct psched_ratecfg {
+	u64 rate_bytes_ps;
+	u32 mult;
+	u16 overhead;
+	u16 mpu;
+	u8 linklayer;
+	u8 shift;
+};
+
+struct tc_ratespec {
+	unsigned char cell_log;
+	__u8 linklayer;
+	unsigned short overhead;
+	short cell_align;
+	unsigned short mpu;
+	__u32 rate;
+};
+
+struct psched_pktrate {
+	u64 rate_pkts_ps;
+	u32 mult;
+	u8 shift;
+};
+
+struct mini_Qdisc_pair {
+	struct mini_Qdisc miniq1;
+	struct mini_Qdisc miniq2;
+	struct mini_Qdisc __attribute__((btf_type_tag("rcu"))) **p_miniq;
+};
+
+enum tc_mq_command {
+	TC_MQ_CREATE = 0,
+	TC_MQ_DESTROY = 1,
+	TC_MQ_STATS = 2,
+	TC_MQ_GRAFT = 3,
+};
+
+struct tc_qopt_offload_stats {
+	struct gnet_stats_basic_sync *bstats;
+	struct gnet_stats_queue *qstats;
+};
+
+struct tc_mq_opt_offload_graft_params {
+	unsigned long queue;
+	u32 child_handle;
+};
+
+struct tc_mq_qopt_offload {
+	enum tc_mq_command command;
+	u32 handle;
+	union {
+		struct tc_qopt_offload_stats stats;
+		struct tc_mq_opt_offload_graft_params graft_params;
+	};
+};
+
+struct mq_sched {
+	struct Qdisc **qdiscs;
+};
+
+struct sch_frag_data {
+	unsigned long dst;
+	struct qdisc_skb_cb cb;
+	__be16 inner_protocol;
+	u16 vlan_tci;
+	__be16 vlan_proto;
+	unsigned int l2_len;
+	u8 l2_data[18];
+	int (*xmit)(struct sk_buff *);
+};
+
+struct qdisc_rate_table {
+	struct tc_ratespec rate;
+	u32 data[256];
+	struct qdisc_rate_table *next;
+	int refcnt;
+};
+
+enum tc_link_layer {
+	TC_LINKLAYER_UNAWARE = 0,
+	TC_LINKLAYER_ETHERNET = 1,
+	TC_LINKLAYER_ATM = 2,
+};
+
+enum {
+	TCA_STAB_UNSPEC = 0,
+	TCA_STAB_BASE = 1,
+	TCA_STAB_DATA = 2,
+	__TCA_STAB_MAX = 3,
+};
+
+enum tc_root_command {
+	TC_ROOT_GRAFT = 0,
+};
+
+struct Qdisc_class_common {
+	u32 classid;
+	unsigned int filter_cnt;
+	struct hlist_node hnode;
+};
+
+struct qdisc_watchdog {
+	struct hrtimer timer;
+	struct Qdisc *qdisc;
+};
+
+struct check_loop_arg {
+	struct qdisc_walker w;
+	struct Qdisc *p;
+	int depth;
+};
+
+struct tc_bind_class_args {
+	struct qdisc_walker w;
+	unsigned long new_cl;
+	u32 portid;
+	u32 clid;
+};
+
+struct qdisc_dump_args {
+	struct qdisc_walker w;
+	struct sk_buff *skb;
+	struct netlink_callback *cb;
+};
+
+struct tc_root_qopt_offload {
+	enum tc_root_command command;
+	u32 handle;
+	bool ingress;
+};
+
+struct Qdisc_class_hash {
+	struct hlist_head *hash;
+	unsigned int hashsize;
+	unsigned int hashmask;
+	unsigned int hashelems;
+};
+
+struct tc_query_caps_base {
+	enum tc_setup_type type;
+	void *caps;
+};
+
+struct tcf_bind_args {
+	struct tcf_walker w;
+	unsigned long base;
+	unsigned long cl;
+	u32 classid;
+};
+
+enum net_xmit_qdisc_t {
+	__NET_XMIT_STOLEN = 65536,
+	__NET_XMIT_BYPASS = 131072,
+};
+
+struct psample_group {
+	struct list_head list;
+	struct net *net;
+	u32 group_num;
+	u32 refcount;
+	u32 seq;
+	struct callback_head rcu;
+};
+
+struct tcf_exts_miss_cookie_node {
+	const struct tcf_chain *chain;
+	const struct tcf_proto *tp;
+	const struct tcf_exts *exts;
+	u32 chain_index;
+	u32 tp_prio;
+	u32 handle;
+	u32 miss_cookie_base;
+	struct callback_head rcu;
+};
+
+enum {
+	TCA_ACT_UNSPEC = 0,
+	TCA_ACT_KIND = 1,
+	TCA_ACT_OPTIONS = 2,
+	TCA_ACT_INDEX = 3,
+	TCA_ACT_STATS = 4,
+	TCA_ACT_PAD = 5,
+	TCA_ACT_COOKIE = 6,
+	TCA_ACT_FLAGS = 7,
+	TCA_ACT_HW_STATS = 8,
+	TCA_ACT_USED_HW_STATS = 9,
+	TCA_ACT_IN_HW_COUNT = 10,
+	__TCA_ACT_MAX = 11,
+};
+
+enum pedit_header_type {
+	TCA_PEDIT_KEY_EX_HDR_TYPE_NETWORK = 0,
+	TCA_PEDIT_KEY_EX_HDR_TYPE_ETH = 1,
+	TCA_PEDIT_KEY_EX_HDR_TYPE_IP4 = 2,
+	TCA_PEDIT_KEY_EX_HDR_TYPE_IP6 = 3,
+	TCA_PEDIT_KEY_EX_HDR_TYPE_TCP = 4,
+	TCA_PEDIT_KEY_EX_HDR_TYPE_UDP = 5,
+	__PEDIT_HDR_TYPE_MAX = 6,
+};
+
+enum pedit_cmd {
+	TCA_PEDIT_KEY_EX_CMD_SET = 0,
+	TCA_PEDIT_KEY_EX_CMD_ADD = 1,
+	__PEDIT_CMD_MAX = 2,
+};
+
+enum qdisc_class_ops_flags {
+	QDISC_CLASS_OPS_DOIT_UNLOCKED = 1,
+};
+
+enum tcf_proto_ops_flags {
+	TCF_PROTO_OPS_DOIT_UNLOCKED = 1,
+};
+
+struct tcf_block_owner_item {
+	struct list_head list;
+	struct Qdisc *q;
+	enum flow_block_binder_type binder_type;
+};
+
+typedef void tcf_chain_head_change_t(struct tcf_proto *, void *);
+
+struct tcf_filter_chain_list_item {
+	struct list_head list;
+	tcf_chain_head_change_t *chain_head_change;
+	void *chain_head_change_priv;
+};
+
+struct tc_pedit_key;
+
+struct tcf_pedit_key_ex;
+
+struct tcf_pedit_parms {
+	struct tc_pedit_key *tcfp_keys;
+	struct tcf_pedit_key_ex *tcfp_keys_ex;
+	u32 tcfp_off_max_hint;
+	unsigned char tcfp_nkeys;
+	unsigned char tcfp_flags;
+	struct callback_head rcu;
+};
+
+struct tc_pedit_key {
+	__u32 mask;
+	__u32 val;
+	__u32 off;
+	__u32 at;
+	__u32 offmask;
+	__u32 shift;
+};
+
+struct tcf_pedit_key_ex {
+	enum pedit_header_type htype;
+	enum pedit_cmd cmd;
+};
+
+struct tcf_pedit {
+	struct tc_action common;
+	struct tcf_pedit_parms __attribute__((btf_type_tag("rcu"))) *parms;
+	long: 64;
+};
+
+struct tcf_block_ext_info {
+	enum flow_block_binder_type binder_type;
+	tcf_chain_head_change_t *chain_head_change;
+	void *chain_head_change_priv;
+	u32 block_index;
+};
+
+struct tcf_net {
+	spinlock_t idr_lock;
+	struct idr idr;
+};
+
+struct action_gate_entry {
+	u8 gate_state;
+	u32 interval;
+	s32 ipv;
+	s32 maxoctets;
+};
+
+struct tcf_chain_info {
+	struct tcf_proto __attribute__((btf_type_tag("rcu"))) **pprev;
+	struct tcf_proto __attribute__((btf_type_tag("rcu"))) *next;
+};
+
+struct tcf_dump_args {
+	struct tcf_walker w;
+	struct sk_buff *skb;
+	struct netlink_callback *cb;
+	struct tcf_block *block;
+	struct Qdisc *q;
+	u32 parent;
+	bool terse_dump;
+};
+
+struct tcf_qevent {
+	struct tcf_block *block;
+	struct tcf_block_ext_info info;
+	struct tcf_proto __attribute__((btf_type_tag("rcu"))) *filter_chain;
+};
+
+enum {
+	TCA_ROOT_UNSPEC = 0,
+	TCA_ROOT_TAB = 1,
+	TCA_ROOT_FLAGS = 2,
+	TCA_ROOT_COUNT = 3,
+	TCA_ROOT_TIME_DELTA = 4,
+	TCA_ROOT_EXT_WARN_MSG = 5,
+	__TCA_ROOT_MAX = 6,
+};
+
+struct tc_act_pernet_id {
+	struct list_head list;
+	unsigned int id;
+};
+
+struct tcamsg {
+	unsigned char tca_family;
+	unsigned char tca__pad1;
+	unsigned short tca__pad2;
+};
+
+struct tc_action_net {
+	struct tcf_idrinfo *idrinfo;
+	const struct tc_action_ops *ops;
+};
+
+enum {
+	TCA_POLICE_UNSPEC = 0,
+	TCA_POLICE_TBF = 1,
+	TCA_POLICE_RATE = 2,
+	TCA_POLICE_PEAKRATE = 3,
+	TCA_POLICE_AVRATE = 4,
+	TCA_POLICE_RESULT = 5,
+	TCA_POLICE_TM = 6,
+	TCA_POLICE_PAD = 7,
+	TCA_POLICE_RATE64 = 8,
+	TCA_POLICE_PEAKRATE64 = 9,
+	TCA_POLICE_PKTRATE64 = 10,
+	TCA_POLICE_PKTBURST64 = 11,
+	__TCA_POLICE_MAX = 12,
+};
+
+struct tcf_police_params;
+
+struct tcf_police {
+	struct tc_action common;
+	struct tcf_police_params __attribute__((btf_type_tag("rcu"))) *params;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	spinlock_t tcfp_lock;
+	s64 tcfp_toks;
+	s64 tcfp_ptoks;
+	s64 tcfp_pkttoks;
+	s64 tcfp_t_c;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct tcf_police_params {
+	int tcfp_result;
+	u32 tcfp_ewma_rate;
+	s64 tcfp_burst;
+	u32 tcfp_mtu;
+	s64 tcfp_mtu_ptoks;
+	s64 tcfp_pkt_burst;
+	struct psched_ratecfg rate;
+	bool rate_present;
+	struct psched_ratecfg peak;
+	bool peak_present;
+	struct psched_pktrate ppsrate;
+	bool pps_present;
+	struct callback_head rcu;
+};
+
+struct tc_police {
+	__u32 index;
+	int action;
+	__u32 limit;
+	__u32 burst;
+	__u32 mtu;
+	struct tc_ratespec rate;
+	struct tc_ratespec peakrate;
+	int refcnt;
+	int bindcnt;
+	__u32 capab;
+};
+
+enum {
+	TCA_GACT_UNSPEC = 0,
+	TCA_GACT_TM = 1,
+	TCA_GACT_PARMS = 2,
+	TCA_GACT_PROB = 3,
+	TCA_GACT_PAD = 4,
+	__TCA_GACT_MAX = 5,
+};
+
+struct tcf_gact {
+	struct tc_action common;
+};
+
+struct tc_gact {
+	__u32 index;
+	__u32 capab;
+	int action;
+	int refcnt;
+	int bindcnt;
+};
+
+enum {
+	TCA_MIRRED_UNSPEC = 0,
+	TCA_MIRRED_TM = 1,
+	TCA_MIRRED_PARMS = 2,
+	TCA_MIRRED_PAD = 3,
+	__TCA_MIRRED_MAX = 4,
+};
+
+struct tcf_mirred {
+	struct tc_action common;
+	int tcfm_eaction;
+	bool tcfm_mac_header_xmit;
+	struct net_device __attribute__((btf_type_tag("rcu"))) *tcfm_dev;
+	netdevice_tracker tcfm_dev_tracker;
+	struct list_head tcfm_list;
+};
+
+struct tc_mirred {
+	__u32 index;
+	__u32 capab;
+	int action;
+	int refcnt;
+	int bindcnt;
+	int eaction;
+	__u32 ifindex;
+};
+
+enum {
+	TCA_SKBEDIT_UNSPEC = 0,
+	TCA_SKBEDIT_TM = 1,
+	TCA_SKBEDIT_PARMS = 2,
+	TCA_SKBEDIT_PRIORITY = 3,
+	TCA_SKBEDIT_QUEUE_MAPPING = 4,
+	TCA_SKBEDIT_MARK = 5,
+	TCA_SKBEDIT_PAD = 6,
+	TCA_SKBEDIT_PTYPE = 7,
+	TCA_SKBEDIT_MASK = 8,
+	TCA_SKBEDIT_FLAGS = 9,
+	TCA_SKBEDIT_QUEUE_MAPPING_MAX = 10,
+	__TCA_SKBEDIT_MAX = 11,
+};
+
+struct tcf_skbedit_params;
+
+struct tcf_skbedit {
+	struct tc_action common;
+	struct tcf_skbedit_params __attribute__((btf_type_tag("rcu"))) *params;
+	long: 64;
+};
+
+struct tcf_skbedit_params {
+	u32 flags;
+	u32 priority;
+	u32 mark;
+	u32 mask;
+	u16 queue_mapping;
+	u16 mapping_mod;
+	u16 ptype;
+	struct callback_head rcu;
+};
+
+struct tc_skbedit {
+	__u32 index;
+	__u32 capab;
+	int action;
+	int refcnt;
+	int bindcnt;
+};
+
+enum {
+	TCA_ACT_BPF_UNSPEC = 0,
+	TCA_ACT_BPF_TM = 1,
+	TCA_ACT_BPF_PARMS = 2,
+	TCA_ACT_BPF_OPS_LEN = 3,
+	TCA_ACT_BPF_OPS = 4,
+	TCA_ACT_BPF_FD = 5,
+	TCA_ACT_BPF_NAME = 6,
+	TCA_ACT_BPF_PAD = 7,
+	TCA_ACT_BPF_TAG = 8,
+	TCA_ACT_BPF_ID = 9,
+	__TCA_ACT_BPF_MAX = 10,
+};
+
+struct tcf_bpf {
+	struct tc_action common;
+	struct bpf_prog __attribute__((btf_type_tag("rcu"))) *filter;
+	union {
+		u32 bpf_fd;
+		u16 bpf_num_ops;
+	};
+	struct sock_filter *bpf_ops;
+	const char *bpf_name;
+};
+
+struct tcf_bpf_cfg {
+	struct bpf_prog *filter;
+	struct sock_filter *bpf_ops;
+	const char *bpf_name;
+	u16 bpf_num_ops;
+	bool is_ebpf;
+};
+
+struct tc_act_bpf {
+	__u32 index;
+	__u32 capab;
+	int action;
+	int refcnt;
+	int bindcnt;
+};
+
+enum tc_fifo_command {
+	TC_FIFO_REPLACE = 0,
+	TC_FIFO_DESTROY = 1,
+	TC_FIFO_STATS = 2,
+};
+
+struct tc_fifo_qopt {
+	__u32 limit;
+};
+
+struct tc_fifo_qopt_offload {
+	enum tc_fifo_command command;
+	u32 handle;
+	u32 parent;
+	union {
+		struct tc_qopt_offload_stats stats;
+	};
+};
+
+enum tc_htb_command {
+	TC_HTB_CREATE = 0,
+	TC_HTB_DESTROY = 1,
+	TC_HTB_LEAF_ALLOC_QUEUE = 2,
+	TC_HTB_LEAF_TO_INNER = 3,
+	TC_HTB_LEAF_DEL = 4,
+	TC_HTB_LEAF_DEL_LAST = 5,
+	TC_HTB_LEAF_DEL_LAST_FORCE = 6,
+	TC_HTB_NODE_MODIFY = 7,
+	TC_HTB_LEAF_QUERY_QUEUE = 8,
+};
+
+enum htb_cmode {
+	HTB_CANT_SEND = 0,
+	HTB_MAY_BORROW = 1,
+	HTB_CAN_SEND = 2,
+};
+
+enum {
+	TCA_HTB_UNSPEC = 0,
+	TCA_HTB_PARMS = 1,
+	TCA_HTB_INIT = 2,
+	TCA_HTB_CTAB = 3,
+	TCA_HTB_RTAB = 4,
+	TCA_HTB_DIRECT_QLEN = 5,
+	TCA_HTB_RATE64 = 6,
+	TCA_HTB_CEIL64 = 7,
+	TCA_HTB_PAD = 8,
+	TCA_HTB_OFFLOAD = 9,
+	__TCA_HTB_MAX = 10,
+};
+
+struct htb_class_leaf {
+	int deficit[8];
+	struct Qdisc *q;
+	struct netdev_queue *offload_queue;
+};
+
+struct htb_prio {
+	union {
+		struct rb_root row;
+		struct rb_root feed;
+	};
+	struct rb_node *ptr;
+	u32 last_ptr_id;
+};
+
+struct htb_class_inner {
+	struct htb_prio clprio[8];
+};
+
+struct tc_htb_xstats {
+	__u32 lends;
+	__u32 borrows;
+	__u32 giants;
+	__s32 tokens;
+	__s32 ctokens;
+};
+
+struct htb_class {
+	struct Qdisc_class_common common;
+	struct psched_ratecfg rate;
+	struct psched_ratecfg ceil;
+	s64 buffer;
+	s64 cbuffer;
+	s64 mbuffer;
+	u32 prio;
+	int quantum;
+	struct tcf_proto __attribute__((btf_type_tag("rcu"))) *filter_list;
+	struct tcf_block *block;
+	int level;
+	unsigned int children;
+	struct htb_class *parent;
+	struct net_rate_estimator __attribute__((btf_type_tag("rcu"))) *rate_est;
+	struct gnet_stats_basic_sync bstats;
+	struct gnet_stats_basic_sync bstats_bias;
+	struct tc_htb_xstats xstats;
+	s64 tokens;
+	s64 ctokens;
+	s64 t_c;
+	union {
+		struct htb_class_leaf leaf;
+		struct htb_class_inner inner;
+	};
+	s64 pq_key;
+	int prio_activity;
+	enum htb_cmode cmode;
+	struct rb_node pq_node;
+	struct rb_node node[8];
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	unsigned int drops;
+	unsigned int overlimits;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct htb_level {
+	struct rb_root wait_pq;
+	struct htb_prio hprio[8];
+};
+
+struct htb_sched {
+	struct Qdisc_class_hash clhash;
+	int defcls;
+	int rate2quantum;
+	struct tcf_proto __attribute__((btf_type_tag("rcu"))) *filter_list;
+	struct tcf_block *block;
+	unsigned int warned;
+	int direct_qlen;
+	struct work_struct work;
+	struct qdisc_skb_head direct_queue;
+	u32 direct_pkts;
+	u32 overlimits;
+	struct qdisc_watchdog watchdog;
+	s64 now;
+	s64 near_ev_cache[8];
+	int row_mask[8];
+	struct htb_level hlevel[8];
+	struct Qdisc **direct_qdiscs;
+	unsigned int num_direct_qdiscs;
+	bool offload;
+};
+
+struct tc_htb_qopt_offload {
+	struct netlink_ext_ack *extack;
+	enum tc_htb_command command;
+	u32 parent_classid;
+	u16 classid;
+	u16 qid;
+	u32 quantum;
+	u64 rate;
+	u64 ceil;
+	u8 prio;
+};
+
+struct tc_htb_glob {
+	__u32 version;
+	__u32 rate2quantum;
+	__u32 defcls;
+	__u32 debug;
+	__u32 direct_pkts;
+};
+
+struct tc_htb_opt {
+	struct tc_ratespec rate;
+	struct tc_ratespec ceil;
+	__u32 buffer;
+	__u32 cbuffer;
+	__u32 quantum;
+	__u32 level;
+	__u32 prio;
+};
+
+struct ingress_sched_data {
+	struct tcf_block *block;
+	struct tcf_block_ext_info block_info;
+	struct mini_Qdisc_pair miniqp;
+};
+
+struct clsact_sched_data {
+	struct tcf_block *ingress_block;
+	struct tcf_block *egress_block;
+	struct tcf_block_ext_info ingress_block_info;
+	struct tcf_block_ext_info egress_block_info;
+	struct mini_Qdisc_pair miniqp_ingress;
+	struct mini_Qdisc_pair miniqp_egress;
+};
+
+enum {
+	RED_DONT_MARK = 0,
+	RED_PROB_MARK = 1,
+	RED_HARD_MARK = 2,
+};
+
+enum {
+	RED_BELOW_MIN_THRESH = 0,
+	RED_BETWEEN_TRESH = 1,
+	RED_ABOVE_MAX_TRESH = 2,
+};
+
+typedef u16 sfq_index;
+
+struct tc_sfqred_stats {
+	__u32 prob_drop;
+	__u32 forced_drop;
+	__u32 prob_mark;
+	__u32 forced_mark;
+	__u32 prob_mark_head;
+	__u32 forced_mark_head;
+};
+
+struct sfq_head {
+	sfq_index next;
+	sfq_index prev;
+};
+
+struct sfq_slot;
+
+struct red_parms;
+
+struct sfq_sched_data {
+	int limit;
+	unsigned int divisor;
+	u8 headdrop;
+	u8 maxdepth;
+	siphash_key_t perturbation;
+	u8 cur_depth;
+	u8 flags;
+	unsigned short scaled_quantum;
+	struct tcf_proto __attribute__((btf_type_tag("rcu"))) *filter_list;
+	struct tcf_block *block;
+	sfq_index *ht;
+	struct sfq_slot *slots;
+	struct red_parms *red_parms;
+	struct tc_sfqred_stats stats;
+	struct sfq_slot *tail;
+	struct sfq_head dep[128];
+	unsigned int maxflows;
+	int perturb_period;
+	unsigned int quantum;
+	struct timer_list perturb_timer;
+	struct Qdisc *sch;
+};
+
+struct red_vars {
+	int qcount;
+	u32 qR;
+	unsigned long qavg;
+	ktime_t qidlestart;
+};
+
+struct sfq_slot {
+	struct sk_buff *skblist_next;
+	struct sk_buff *skblist_prev;
+	sfq_index qlen;
+	sfq_index next;
+	struct sfq_head dep;
+	unsigned short hash;
+	short allot;
+	unsigned int backlog;
+	struct red_vars vars;
+};
+
+struct red_parms {
+	u32 qth_min;
+	u32 qth_max;
+	u32 Scell_max;
+	u32 max_P;
+	struct reciprocal_value max_P_reciprocal;
+	u32 qth_delta;
+	u32 target_min;
+	u32 target_max;
+	u8 Scell_log;
+	u8 Wlog;
+	u8 Plog;
+	u8 Stab[256];
+};
+
+struct tc_sfq_qopt {
+	unsigned int quantum;
+	int perturb_period;
+	__u32 limit;
+	unsigned int divisor;
+	unsigned int flows;
+};
+
+struct tc_sfq_qopt_v1 {
+	struct tc_sfq_qopt v0;
+	unsigned int depth;
+	unsigned int headdrop;
+	__u32 limit;
+	__u32 qth_min;
+	__u32 qth_max;
+	unsigned char Wlog;
+	unsigned char Plog;
+	unsigned char Scell_log;
+	unsigned char flags;
+	__u32 max_P;
+	struct tc_sfqred_stats stats;
+};
+
+struct tc_sfq_xstats {
+	__s32 allot;
+};
+
+enum tc_tbf_command {
+	TC_TBF_REPLACE = 0,
+	TC_TBF_DESTROY = 1,
+	TC_TBF_STATS = 2,
+	TC_TBF_GRAFT = 3,
+};
+
+enum {
+	TCA_TBF_UNSPEC = 0,
+	TCA_TBF_PARMS = 1,
+	TCA_TBF_RTAB = 2,
+	TCA_TBF_PTAB = 3,
+	TCA_TBF_RATE64 = 4,
+	TCA_TBF_PRATE64 = 5,
+	TCA_TBF_BURST = 6,
+	TCA_TBF_PBURST = 7,
+	TCA_TBF_PAD = 8,
+	__TCA_TBF_MAX = 9,
+};
+
+struct tbf_sched_data {
+	u32 limit;
+	u32 max_size;
+	s64 buffer;
+	s64 mtu;
+	struct psched_ratecfg rate;
+	struct psched_ratecfg peak;
+	s64 tokens;
+	s64 ptokens;
+	s64 t_c;
+	struct Qdisc *qdisc;
+	struct qdisc_watchdog watchdog;
+};
+
+struct tc_tbf_qopt_offload_replace_params {
+	struct psched_ratecfg rate;
+	u32 max_size;
+	struct gnet_stats_queue *qstats;
+};
+
+struct tc_tbf_qopt_offload {
+	enum tc_tbf_command command;
+	u32 handle;
+	u32 parent;
+	union {
+		struct tc_tbf_qopt_offload_replace_params replace_params;
+		struct tc_qopt_offload_stats stats;
+		u32 child_handle;
+	};
+};
+
+struct tc_tbf_qopt {
+	struct tc_ratespec rate;
+	struct tc_ratespec peakrate;
+	__u32 limit;
+	__u32 buffer;
+	__u32 mtu;
+};
+
+enum tc_prio_command {
+	TC_PRIO_REPLACE = 0,
+	TC_PRIO_DESTROY = 1,
+	TC_PRIO_STATS = 2,
+	TC_PRIO_GRAFT = 3,
+};
+
+struct prio_sched_data {
+	int bands;
+	struct tcf_proto __attribute__((btf_type_tag("rcu"))) *filter_list;
+	struct tcf_block *block;
+	u8 prio2band[16];
+	struct Qdisc *queues[16];
+};
+
+struct tc_prio_qopt_offload_params {
+	int bands;
+	u8 priomap[16];
+	struct gnet_stats_queue *qstats;
+};
+
+struct tc_prio_qopt_offload_graft_params {
+	u8 band;
+	u32 child_handle;
+};
+
+struct tc_prio_qopt_offload {
+	enum tc_prio_command command;
+	u32 handle;
+	u32 parent;
+	union {
+		struct tc_prio_qopt_offload_params replace_params;
+		struct tc_qopt_offload_stats stats;
+		struct tc_prio_qopt_offload_graft_params graft_params;
+	};
+};
+
+struct multiq_sched_data {
+	u16 bands;
+	u16 max_bands;
+	u16 curband;
+	struct tcf_proto __attribute__((btf_type_tag("rcu"))) *filter_list;
+	struct tcf_block *block;
+	struct Qdisc **queues;
+};
+
+struct tc_multiq_qopt {
+	__u16 bands;
+	__u16 max_bands;
+};
+
+struct crndstate {
+	u32 last;
+	u32 rho;
+};
+
+struct prng {
+	u64 seed;
+	struct rnd_state prng_state;
+};
+
+struct clgstate {
+	u8 state;
+	u32 a1;
+	u32 a2;
+	u32 a3;
+	u32 a4;
+	u32 a5;
+};
+
+struct tc_netem_slot {
+	__s64 min_delay;
+	__s64 max_delay;
+	__s32 max_packets;
+	__s32 max_bytes;
+	__s64 dist_delay;
+	__s64 dist_jitter;
+};
+
+struct slotstate {
+	u64 slot_next;
+	s32 packets_left;
+	s32 bytes_left;
+};
+
+struct disttable;
+
+struct netem_sched_data {
+	struct rb_root t_root;
+	struct sk_buff *t_head;
+	struct sk_buff *t_tail;
+	struct Qdisc *qdisc;
+	struct qdisc_watchdog watchdog;
+	s64 latency;
+	s64 jitter;
+	u32 loss;
+	u32 ecn;
+	u32 limit;
+	u32 counter;
+	u32 gap;
+	u32 duplicate;
+	u32 reorder;
+	u32 corrupt;
+	u64 rate;
+	s32 packet_overhead;
+	u32 cell_size;
+	struct reciprocal_value cell_size_reciprocal;
+	s32 cell_overhead;
+	struct crndstate delay_cor;
+	struct crndstate loss_cor;
+	struct crndstate dup_cor;
+	struct crndstate reorder_cor;
+	struct crndstate corrupt_cor;
+	struct prng prng;
+	struct disttable *delay_dist;
+	enum {
+		CLG_RANDOM = 0,
+		CLG_4_STATES = 1,
+		CLG_GILB_ELL = 2,
+	} loss_model;
+	enum {
+		TX_IN_GAP_PERIOD = 1,
+		TX_IN_BURST_PERIOD = 2,
+		LOST_IN_GAP_PERIOD = 3,
+		LOST_IN_BURST_PERIOD = 4,
+	} _4_state_model;
+	enum {
+		GOOD_STATE = 1,
+		BAD_STATE = 2,
+	} GE_state_model;
+	struct clgstate clg;
+	struct tc_netem_slot slot_config;
+	struct slotstate slot;
+	struct disttable *slot_dist;
+};
+
+struct disttable {
+	u32 size;
+	s16 table[0];
+};
+
+enum {
+	TCA_NETEM_UNSPEC = 0,
+	TCA_NETEM_CORR = 1,
+	TCA_NETEM_DELAY_DIST = 2,
+	TCA_NETEM_REORDER = 3,
+	TCA_NETEM_CORRUPT = 4,
+	TCA_NETEM_LOSS = 5,
+	TCA_NETEM_RATE = 6,
+	TCA_NETEM_ECN = 7,
+	TCA_NETEM_RATE64 = 8,
+	TCA_NETEM_PAD = 9,
+	TCA_NETEM_LATENCY64 = 10,
+	TCA_NETEM_JITTER64 = 11,
+	TCA_NETEM_SLOT = 12,
+	TCA_NETEM_SLOT_DIST = 13,
+	TCA_NETEM_PRNG_SEED = 14,
+	__TCA_NETEM_MAX = 15,
+};
+
+enum {
+	NETEM_LOSS_UNSPEC = 0,
+	NETEM_LOSS_GI = 1,
+	NETEM_LOSS_GE = 2,
+	__NETEM_LOSS_MAX = 3,
+};
+
+struct netem_skb_cb {
+	u64 time_to_send;
+};
+
+typedef u64 psched_time_t;
+
+struct tc_netem_gemodel {
+	__u32 p;
+	__u32 r;
+	__u32 h;
+	__u32 k1;
+};
+
+struct tc_netem_gimodel {
+	__u32 p13;
+	__u32 p31;
+	__u32 p32;
+	__u32 p14;
+	__u32 p23;
+};
+
+struct tc_netem_corr {
+	__u32 delay_corr;
+	__u32 loss_corr;
+	__u32 dup_corr;
+};
+
+struct tc_netem_reorder {
+	__u32 probability;
+	__u32 correlation;
+};
+
+struct tc_netem_corrupt {
+	__u32 probability;
+	__u32 correlation;
+};
+
+struct tc_netem_rate {
+	__u32 rate;
+	__s32 packet_overhead;
+	__u32 cell_size;
+	__s32 cell_overhead;
+};
+
+struct tc_netem_qopt {
+	__u32 latency;
+	__u32 limit;
+	__u32 loss;
+	__u32 gap;
+	__u32 duplicate;
+	__u32 jitter;
+};
+
+enum {
+	TCA_CODEL_UNSPEC = 0,
+	TCA_CODEL_TARGET = 1,
+	TCA_CODEL_LIMIT = 2,
+	TCA_CODEL_INTERVAL = 3,
+	TCA_CODEL_ECN = 4,
+	TCA_CODEL_CE_THRESHOLD = 5,
+	__TCA_CODEL_MAX = 6,
+};
+
+typedef u32 codel_time_t;
+
+struct codel_skb_cb {
+	codel_time_t enqueue_time;
+	unsigned int mem_usage;
+};
+
+struct codel_vars {
+	u32 count;
+	u32 lastcount;
+	bool dropping;
+	u16 rec_inv_sqrt;
+	codel_time_t first_above_time;
+	codel_time_t drop_next;
+	codel_time_t ldelay;
+};
+
+struct codel_params {
+	codel_time_t target;
+	codel_time_t ce_threshold;
+	codel_time_t interval;
+	u32 mtu;
+	bool ecn;
+	u8 ce_threshold_selector;
+	u8 ce_threshold_mask;
+};
+
+struct codel_stats {
+	u32 maxpacket;
+	u32 drop_count;
+	u32 drop_len;
+	u32 ecn_mark;
+	u32 ce_mark;
+};
+
+typedef u32 (*codel_skb_len_t)(const struct sk_buff *);
+
+typedef codel_time_t (*codel_skb_time_t)(const struct sk_buff *);
+
+typedef void (*codel_skb_drop_t)(struct sk_buff *, void *);
+
+typedef struct sk_buff * (*codel_skb_dequeue_t)(struct codel_vars *, void *);
+
+struct codel_sched_data {
+	struct codel_params params;
+	struct codel_vars vars;
+	struct codel_stats stats;
+	u32 drop_overlimit;
+};
+
+struct tc_codel_xstats {
+	__u32 maxpacket;
+	__u32 count;
+	__u32 lastcount;
+	__u32 ldelay;
+	__s32 drop_next;
+	__u32 drop_overlimit;
+	__u32 ecn_mark;
+	__u32 dropping;
+	__u32 ce_mark;
+};
+
+typedef s32 codel_tdiff_t;
+
+enum {
+	TCA_FQ_CODEL_XSTATS_QDISC = 0,
+	TCA_FQ_CODEL_XSTATS_CLASS = 1,
+};
+
+enum {
+	TCA_FQ_CODEL_UNSPEC = 0,
+	TCA_FQ_CODEL_TARGET = 1,
+	TCA_FQ_CODEL_LIMIT = 2,
+	TCA_FQ_CODEL_INTERVAL = 3,
+	TCA_FQ_CODEL_ECN = 4,
+	TCA_FQ_CODEL_FLOWS = 5,
+	TCA_FQ_CODEL_QUANTUM = 6,
+	TCA_FQ_CODEL_CE_THRESHOLD = 7,
+	TCA_FQ_CODEL_DROP_BATCH_SIZE = 8,
+	TCA_FQ_CODEL_MEMORY_LIMIT = 9,
+	TCA_FQ_CODEL_CE_THRESHOLD_SELECTOR = 10,
+	TCA_FQ_CODEL_CE_THRESHOLD_MASK = 11,
+	__TCA_FQ_CODEL_MAX = 12,
+};
+
+struct fq_codel_flow {
+	struct sk_buff *head;
+	struct sk_buff *tail;
+	struct list_head flowchain;
+	int deficit;
+	struct codel_vars cvars;
+};
+
+struct fq_codel_sched_data {
+	struct tcf_proto __attribute__((btf_type_tag("rcu"))) *filter_list;
+	struct tcf_block *block;
+	struct fq_codel_flow *flows;
+	u32 *backlogs;
+	u32 flows_cnt;
+	u32 quantum;
+	u32 drop_batch_size;
+	u32 memory_limit;
+	struct codel_params cparams;
+	struct codel_stats cstats;
+	u32 memory_usage;
+	u32 drop_overmemory;
+	u32 drop_overlimit;
+	u32 new_flow_count;
+	struct list_head new_flows;
+	struct list_head old_flows;
+};
+
+struct tc_fq_codel_qd_stats {
+	__u32 maxpacket;
+	__u32 drop_overlimit;
+	__u32 ecn_mark;
+	__u32 new_flow_count;
+	__u32 new_flows_len;
+	__u32 old_flows_len;
+	__u32 ce_mark;
+	__u32 memory_usage;
+	__u32 drop_overmemory;
+};
+
+struct tc_fq_codel_cl_stats {
+	__s32 deficit;
+	__u32 ldelay;
+	__u32 count;
+	__u32 lastcount;
+	__u32 dropping;
+	__s32 drop_next;
+};
+
+struct tc_fq_codel_xstats {
+	__u32 type;
+	union {
+		struct tc_fq_codel_qd_stats qdisc_stats;
+		struct tc_fq_codel_cl_stats class_stats;
+	};
+};
+
+struct fq_flow {
+	struct rb_root t_root;
+	struct sk_buff *head;
+	union {
+		struct sk_buff *tail;
+		unsigned long age;
+	};
+	struct rb_node fq_node;
+	struct sock *sk;
+	u32 socket_hash;
+	int qlen;
+	int credit;
+	struct fq_flow *next;
+	struct rb_node rate_node;
+	u64 time_next_packet;
+	long: 64;
+	long: 64;
+};
+
+enum {
+	TCA_FQ_UNSPEC = 0,
+	TCA_FQ_PLIMIT = 1,
+	TCA_FQ_FLOW_PLIMIT = 2,
+	TCA_FQ_QUANTUM = 3,
+	TCA_FQ_INITIAL_QUANTUM = 4,
+	TCA_FQ_RATE_ENABLE = 5,
+	TCA_FQ_FLOW_DEFAULT_RATE = 6,
+	TCA_FQ_FLOW_MAX_RATE = 7,
+	TCA_FQ_BUCKETS_LOG = 8,
+	TCA_FQ_FLOW_REFILL_DELAY = 9,
+	TCA_FQ_ORPHAN_MASK = 10,
+	TCA_FQ_LOW_RATE_THRESHOLD = 11,
+	TCA_FQ_CE_THRESHOLD = 12,
+	TCA_FQ_TIMER_SLACK = 13,
+	TCA_FQ_HORIZON = 14,
+	TCA_FQ_HORIZON_DROP = 15,
+	__TCA_FQ_MAX = 16,
+};
+
+struct fq_skb_cb {
+	u64 time_to_send;
+};
+
+struct fq_flow_head {
+	struct fq_flow *first;
+	struct fq_flow *last;
+};
+
+struct fq_sched_data {
+	struct fq_flow_head new_flows;
+	struct fq_flow_head old_flows;
+	struct rb_root delayed;
+	u64 time_next_delayed_flow;
+	u64 ktime_cache;
+	unsigned long unthrottle_latency_ns;
+	struct fq_flow internal;
+	u32 quantum;
+	u32 initial_quantum;
+	u32 flow_refill_delay;
+	u32 flow_plimit;
+	unsigned long flow_max_rate;
+	u64 ce_threshold;
+	u64 horizon;
+	u32 orphan_mask;
+	u32 low_rate_threshold;
+	struct rb_root *fq_root;
+	u8 rate_enable;
+	u8 fq_trees_log;
+	u8 horizon_drop;
+	u32 flows;
+	u32 inactive_flows;
+	u32 throttled_flows;
+	u64 stat_gc_flows;
+	u64 stat_internal_packets;
+	u64 stat_throttled;
+	u64 stat_ce_mark;
+	u64 stat_horizon_drops;
+	u64 stat_horizon_caps;
+	u64 stat_flows_plimit;
+	u64 stat_pkts_too_long;
+	u64 stat_allocation_errors;
+	u32 timer_slack;
+	struct qdisc_watchdog watchdog;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct tc_fq_qd_stats {
+	__u64 gc_flows;
+	__u64 highprio_packets;
+	__u64 tcp_retrans;
+	__u64 throttled;
+	__u64 flows_plimit;
+	__u64 pkts_too_long;
+	__u64 allocation_errors;
+	__s64 time_next_delayed_flow;
+	__u32 flows;
+	__u32 inactive_flows;
+	__u32 throttled_flows;
+	__u32 unthrottle_latency_ns;
+	__u64 ce_mark;
+	__u64 horizon_drops;
+	__u64 horizon_caps;
+};
+
+enum tc_clsu32_command {
+	TC_CLSU32_NEW_KNODE = 0,
+	TC_CLSU32_REPLACE_KNODE = 1,
+	TC_CLSU32_DELETE_KNODE = 2,
+	TC_CLSU32_NEW_HNODE = 3,
+	TC_CLSU32_REPLACE_HNODE = 4,
+	TC_CLSU32_DELETE_HNODE = 5,
+};
+
+enum {
+	TCA_U32_UNSPEC = 0,
+	TCA_U32_CLASSID = 1,
+	TCA_U32_HASH = 2,
+	TCA_U32_LINK = 3,
+	TCA_U32_DIVISOR = 4,
+	TCA_U32_SEL = 5,
+	TCA_U32_POLICE = 6,
+	TCA_U32_ACT = 7,
+	TCA_U32_INDEV = 8,
+	TCA_U32_PCNT = 9,
+	TCA_U32_MARK = 10,
+	TCA_U32_FLAGS = 11,
+	TCA_U32_PAD = 12,
+	__TCA_U32_MAX = 13,
+};
+
+struct tc_u32_key {
+	__be32 mask;
+	__be32 val;
+	int off;
+	int offmask;
+};
+
+struct tc_u32_sel {
+	unsigned char flags;
+	unsigned char offshift;
+	unsigned char nkeys;
+	__be16 offmask;
+	__u16 off;
+	short offoff;
+	short hoff;
+	__be32 hmask;
+	struct tc_u32_key keys[0];
+};
+
+struct tc_u_hnode;
+
+struct tc_u_knode {
+	struct tc_u_knode __attribute__((btf_type_tag("rcu"))) *next;
+	u32 handle;
+	struct tc_u_hnode __attribute__((btf_type_tag("rcu"))) *ht_up;
+	struct tcf_exts exts;
+	int ifindex;
+	u8 fshift;
+	struct tcf_result res;
+	struct tc_u_hnode __attribute__((btf_type_tag("rcu"))) *ht_down;
+	u32 flags;
+	unsigned int in_hw_count;
+	u32 val;
+	u32 mask;
+	u32 __attribute__((btf_type_tag("percpu"))) *pcpu_success;
+	struct rcu_work rwork;
+	struct tc_u32_sel sel;
+};
+
+struct tc_u_hnode {
+	struct tc_u_hnode __attribute__((btf_type_tag("rcu"))) *next;
+	u32 handle;
+	u32 prio;
+	int refcnt;
+	unsigned int divisor;
+	struct idr handle_idr;
+	bool is_root;
+	struct callback_head rcu;
+	u32 flags;
+	struct tc_u_knode __attribute__((btf_type_tag("rcu"))) *ht[0];
+};
+
+struct tc_u_common {
+	struct tc_u_hnode __attribute__((btf_type_tag("rcu"))) *hlist;
+	void *ptr;
+	int refcnt;
+	struct idr handle_idr;
+	struct hlist_node hnode;
+	long knodes;
+};
+
+struct tc_cls_u32_knode {
+	struct tcf_exts *exts;
+	struct tcf_result *res;
+	struct tc_u32_sel *sel;
+	u32 handle;
+	u32 val;
+	u32 mask;
+	u32 link_handle;
+	u8 fshift;
+};
+
+struct tc_cls_u32_hnode {
+	u32 handle;
+	u32 prio;
+	unsigned int divisor;
+};
+
+struct flow_cls_common_offload {
+	u32 chain_index;
+	__be16 protocol;
+	u32 prio;
+	struct netlink_ext_ack *extack;
+};
+
+struct tc_cls_u32_offload {
+	struct flow_cls_common_offload common;
+	enum tc_clsu32_command command;
+	union {
+		struct tc_cls_u32_knode knode;
+		struct tc_cls_u32_hnode hnode;
+	};
+};
+
+struct tc_u32_mark {
+	__u32 val;
+	__u32 mask;
+	__u32 success;
+};
+
+enum {
+	TCA_FW_UNSPEC = 0,
+	TCA_FW_CLASSID = 1,
+	TCA_FW_POLICE = 2,
+	TCA_FW_INDEV = 3,
+	TCA_FW_ACT = 4,
+	TCA_FW_MASK = 5,
+	__TCA_FW_MAX = 6,
+};
+
+struct fw_filter {
+	struct fw_filter __attribute__((btf_type_tag("rcu"))) *next;
+	u32 id;
+	struct tcf_result res;
+	int ifindex;
+	struct tcf_exts exts;
+	struct tcf_proto *tp;
+	struct rcu_work rwork;
+};
+
+struct fw_head {
+	u32 mask;
+	struct fw_filter __attribute__((btf_type_tag("rcu"))) *ht[256];
+	struct callback_head rcu;
+};
+
+enum {
+	TCA_BASIC_UNSPEC = 0,
+	TCA_BASIC_CLASSID = 1,
+	TCA_BASIC_EMATCHES = 2,
+	TCA_BASIC_ACT = 3,
+	TCA_BASIC_POLICE = 4,
+	TCA_BASIC_PCNT = 5,
+	TCA_BASIC_PAD = 6,
+	__TCA_BASIC_MAX = 7,
+};
+
+struct tcf_ematch_tree_hdr {
+	__u16 nmatches;
+	__u16 progid;
+};
+
+struct tcf_ematch;
+
+struct tcf_ematch_tree {
+	struct tcf_ematch_tree_hdr hdr;
+	struct tcf_ematch *matches;
+};
+
+struct tc_basic_pcnt;
+
+struct basic_filter {
+	u32 handle;
+	struct tcf_exts exts;
+	struct tcf_ematch_tree ematches;
+	struct tcf_result res;
+	struct tcf_proto *tp;
+	struct list_head link;
+	struct tc_basic_pcnt __attribute__((btf_type_tag("percpu"))) *pf;
+	struct rcu_work rwork;
+};
+
+struct tcf_ematch_ops;
+
+struct tcf_ematch {
+	struct tcf_ematch_ops *ops;
+	unsigned long data;
+	unsigned int datalen;
+	u16 matchid;
+	u16 flags;
+	struct net *net;
+};
+
+struct tcf_pkt_info;
+
+struct tcf_ematch_ops {
+	int kind;
+	int datalen;
+	int (*change)(struct net *, void *, int, struct tcf_ematch *);
+	int (*match)(struct sk_buff *, struct tcf_ematch *, struct tcf_pkt_info *);
+	void (*destroy)(struct tcf_ematch *);
+	int (*dump)(struct sk_buff *, struct tcf_ematch *);
+	struct module *owner;
+	struct list_head link;
+};
+
+struct tcf_pkt_info {
+	unsigned char *ptr;
+	int nexthdr;
+};
+
+struct tc_basic_pcnt {
+	__u64 rcnt;
+	__u64 rhit;
+};
+
+struct basic_head {
+	struct list_head flist;
+	struct idr handle_idr;
+	struct callback_head rcu;
+};
+
+enum {
+	FLOW_KEY_SRC = 0,
+	FLOW_KEY_DST = 1,
+	FLOW_KEY_PROTO = 2,
+	FLOW_KEY_PROTO_SRC = 3,
+	FLOW_KEY_PROTO_DST = 4,
+	FLOW_KEY_IIF = 5,
+	FLOW_KEY_PRIORITY = 6,
+	FLOW_KEY_MARK = 7,
+	FLOW_KEY_NFCT = 8,
+	FLOW_KEY_NFCT_SRC = 9,
+	FLOW_KEY_NFCT_DST = 10,
+	FLOW_KEY_NFCT_PROTO_SRC = 11,
+	FLOW_KEY_NFCT_PROTO_DST = 12,
+	FLOW_KEY_RTCLASSID = 13,
+	FLOW_KEY_SKUID = 14,
+	FLOW_KEY_SKGID = 15,
+	FLOW_KEY_VLAN_TAG = 16,
+	FLOW_KEY_RXHASH = 17,
+	__FLOW_KEY_MAX = 18,
+};
+
+enum {
+	FLOW_MODE_MAP = 0,
+	FLOW_MODE_HASH = 1,
+};
+
+enum {
+	TCA_FLOW_UNSPEC = 0,
+	TCA_FLOW_KEYS = 1,
+	TCA_FLOW_MODE = 2,
+	TCA_FLOW_BASECLASS = 3,
+	TCA_FLOW_RSHIFT = 4,
+	TCA_FLOW_ADDEND = 5,
+	TCA_FLOW_MASK = 6,
+	TCA_FLOW_XOR = 7,
+	TCA_FLOW_DIVISOR = 8,
+	TCA_FLOW_ACT = 9,
+	TCA_FLOW_POLICE = 10,
+	TCA_FLOW_EMATCHES = 11,
+	TCA_FLOW_PERTURB = 12,
+	__TCA_FLOW_MAX = 13,
+};
+
+struct flow_filter {
+	struct list_head list;
+	struct tcf_exts exts;
+	struct tcf_ematch_tree ematches;
+	struct tcf_proto *tp;
+	struct timer_list perturb_timer;
+	u32 perturb_period;
+	u32 handle;
+	u32 nkeys;
+	u32 keymask;
+	u32 mode;
+	u32 mask;
+	u32 xor;
+	u32 rshift;
+	u32 addend;
+	u32 divisor;
+	u32 baseclass;
+	u32 hashrnd;
+	struct rcu_work rwork;
+};
+
+struct flow_head {
+	struct list_head filters;
+	struct callback_head rcu;
+};
+
+enum tc_clsbpf_command {
+	TC_CLSBPF_OFFLOAD = 0,
+	TC_CLSBPF_STATS = 1,
+};
+
+enum {
+	TCA_BPF_UNSPEC = 0,
+	TCA_BPF_ACT = 1,
+	TCA_BPF_POLICE = 2,
+	TCA_BPF_CLASSID = 3,
+	TCA_BPF_OPS_LEN = 4,
+	TCA_BPF_OPS = 5,
+	TCA_BPF_FD = 6,
+	TCA_BPF_NAME = 7,
+	TCA_BPF_FLAGS = 8,
+	TCA_BPF_FLAGS_GEN = 9,
+	TCA_BPF_TAG = 10,
+	TCA_BPF_ID = 11,
+	__TCA_BPF_MAX = 12,
+};
+
+struct cls_bpf_prog {
+	struct bpf_prog *filter;
+	struct list_head link;
+	struct tcf_result res;
+	bool exts_integrated;
+	u32 gen_flags;
+	unsigned int in_hw_count;
+	struct tcf_exts exts;
+	u32 handle;
+	u16 bpf_num_ops;
+	struct sock_filter *bpf_ops;
+	const char *bpf_name;
+	struct tcf_proto *tp;
+	struct rcu_work rwork;
+};
+
+struct tc_cls_bpf_offload {
+	struct flow_cls_common_offload common;
+	enum tc_clsbpf_command command;
+	struct tcf_exts *exts;
+	struct bpf_prog *prog;
+	struct bpf_prog *oldprog;
+	const char *name;
+	bool exts_integrated;
+};
+
+struct cls_bpf_head {
+	struct list_head plist;
+	struct idr handle_idr;
+	struct callback_head rcu;
+};
+
+enum tc_matchall_command {
+	TC_CLSMATCHALL_REPLACE = 0,
+	TC_CLSMATCHALL_DESTROY = 1,
+	TC_CLSMATCHALL_STATS = 2,
+};
+
+enum {
+	TCA_MATCHALL_UNSPEC = 0,
+	TCA_MATCHALL_CLASSID = 1,
+	TCA_MATCHALL_ACT = 2,
+	TCA_MATCHALL_FLAGS = 3,
+	TCA_MATCHALL_PCNT = 4,
+	TCA_MATCHALL_PAD = 5,
+	__TCA_MATCHALL_MAX = 6,
+};
+
+struct tc_matchall_pcnt;
+
+struct cls_mall_head {
+	struct tcf_exts exts;
+	struct tcf_result res;
+	u32 handle;
+	u32 flags;
+	unsigned int in_hw_count;
+	struct tc_matchall_pcnt __attribute__((btf_type_tag("percpu"))) *pf;
+	struct rcu_work rwork;
+	bool deleting;
+};
+
+struct tc_matchall_pcnt {
+	__u64 rhit;
+};
+
+struct tc_cls_matchall_offload {
+	struct flow_cls_common_offload common;
+	enum tc_matchall_command command;
+	struct flow_rule *rule;
+	struct flow_stats stats;
+	bool use_act_stats;
+	unsigned long cookie;
+};
+
+enum {
+	TCA_EMATCH_TREE_UNSPEC = 0,
+	TCA_EMATCH_TREE_HDR = 1,
+	TCA_EMATCH_TREE_LIST = 2,
+	__TCA_EMATCH_TREE_MAX = 3,
+};
+
+struct tcf_ematch_hdr {
+	__u16 matchid;
+	__u16 kind;
+	__u16 flags;
+	__u16 pad;
+};
+
+enum {
+	TCF_EM_ALIGN_U8 = 1,
+	TCF_EM_ALIGN_U16 = 2,
+	TCF_EM_ALIGN_U32 = 4,
+};
+
+enum {
+	TCF_EM_OPND_EQ = 0,
+	TCF_EM_OPND_GT = 1,
+	TCF_EM_OPND_LT = 2,
+};
+
+enum {
+	TCF_LAYER_LINK = 0,
+	TCF_LAYER_NETWORK = 1,
+	TCF_LAYER_TRANSPORT = 2,
+	__TCF_LAYER_MAX = 3,
+};
+
+struct tcf_em_cmp {
+	__u32 val;
+	__u32 mask;
+	__u16 off;
+	__u8 align: 4;
+	__u8 flags: 4;
+	__u8 layer: 4;
+	__u8 opnd: 4;
+};
+
+struct tcf_em_nbyte {
+	__u16 off;
+	__u16 len: 12;
+	__u8 layer: 4;
+};
+
+struct nbyte_data {
+	struct tcf_em_nbyte hdr;
+	char pattern[0];
+};
+
+struct meta_value;
+
+struct meta_obj;
+
+struct meta_ops {
+	void (*get)(struct sk_buff *, struct tcf_pkt_info *, struct meta_value *, struct meta_obj *, int *);
+};
+
+struct tcf_meta_val {
+	__u16 kind;
+	__u8 shift;
+	__u8 op;
+};
+
+struct meta_value {
+	struct tcf_meta_val hdr;
+	unsigned long val;
+	unsigned int len;
+};
+
+struct meta_obj {
+	unsigned long value;
+	unsigned int len;
+};
+
+struct meta_type_ops {
+	void (*destroy)(struct meta_value *);
+	int (*compare)(struct meta_obj *, struct meta_obj *);
+	int (*change)(struct meta_value *, struct nlattr *);
+	void (*apply_extras)(struct meta_value *, struct meta_obj *);
+	int (*dump)(struct sk_buff *, struct meta_value *, int);
+};
+
+enum {
+	TCA_EM_META_UNSPEC = 0,
+	TCA_EM_META_HDR = 1,
+	TCA_EM_META_LVALUE = 2,
+	TCA_EM_META_RVALUE = 3,
+	__TCA_EM_META_MAX = 4,
+};
+
+enum {
+	TCF_META_TYPE_VAR = 0,
+	TCF_META_TYPE_INT = 1,
+	__TCF_META_TYPE_MAX = 2,
+};
+
+enum {
+	TCF_META_ID_VALUE = 0,
+	TCF_META_ID_RANDOM = 1,
+	TCF_META_ID_LOADAVG_0 = 2,
+	TCF_META_ID_LOADAVG_1 = 3,
+	TCF_META_ID_LOADAVG_2 = 4,
+	TCF_META_ID_DEV = 5,
+	TCF_META_ID_PRIORITY = 6,
+	TCF_META_ID_PROTOCOL = 7,
+	TCF_META_ID_PKTTYPE = 8,
+	TCF_META_ID_PKTLEN = 9,
+	TCF_META_ID_DATALEN = 10,
+	TCF_META_ID_MACLEN = 11,
+	TCF_META_ID_NFMARK = 12,
+	TCF_META_ID_TCINDEX = 13,
+	TCF_META_ID_RTCLASSID = 14,
+	TCF_META_ID_RTIIF = 15,
+	TCF_META_ID_SK_FAMILY = 16,
+	TCF_META_ID_SK_STATE = 17,
+	TCF_META_ID_SK_REUSE = 18,
+	TCF_META_ID_SK_BOUND_IF = 19,
+	TCF_META_ID_SK_REFCNT = 20,
+	TCF_META_ID_SK_SHUTDOWN = 21,
+	TCF_META_ID_SK_PROTO = 22,
+	TCF_META_ID_SK_TYPE = 23,
+	TCF_META_ID_SK_RCVBUF = 24,
+	TCF_META_ID_SK_RMEM_ALLOC = 25,
+	TCF_META_ID_SK_WMEM_ALLOC = 26,
+	TCF_META_ID_SK_OMEM_ALLOC = 27,
+	TCF_META_ID_SK_WMEM_QUEUED = 28,
+	TCF_META_ID_SK_RCV_QLEN = 29,
+	TCF_META_ID_SK_SND_QLEN = 30,
+	TCF_META_ID_SK_ERR_QLEN = 31,
+	TCF_META_ID_SK_FORWARD_ALLOCS = 32,
+	TCF_META_ID_SK_SNDBUF = 33,
+	TCF_META_ID_SK_ALLOCS = 34,
+	__TCF_META_ID_SK_ROUTE_CAPS = 35,
+	TCF_META_ID_SK_HASH = 36,
+	TCF_META_ID_SK_LINGERTIME = 37,
+	TCF_META_ID_SK_ACK_BACKLOG = 38,
+	TCF_META_ID_SK_MAX_ACK_BACKLOG = 39,
+	TCF_META_ID_SK_PRIO = 40,
+	TCF_META_ID_SK_RCVLOWAT = 41,
+	TCF_META_ID_SK_RCVTIMEO = 42,
+	TCF_META_ID_SK_SNDTIMEO = 43,
+	TCF_META_ID_SK_SENDMSG_OFF = 44,
+	TCF_META_ID_SK_WRITE_PENDING = 45,
+	TCF_META_ID_VLAN_TAG = 46,
+	TCF_META_ID_RXHASH = 47,
+	__TCF_META_ID_MAX = 48,
+};
+
+struct meta_match {
+	struct meta_value lvalue;
+	struct meta_value rvalue;
+};
+
+struct tcf_meta_hdr {
+	struct tcf_meta_val left;
+	struct tcf_meta_val right;
+};
+
+struct text_match {
+	u16 from_offset;
+	u16 to_offset;
+	u8 from_layer;
+	u8 to_layer;
+	struct ts_config *config;
+};
+
+struct tcf_em_text {
+	char algo[16];
+	__u16 from_offset;
+	__u16 to_offset;
+	__u16 pattern_len;
+	__u8 from_layer: 4;
+	__u8 to_layer: 4;
+	__u8 pad;
+};
+
+typedef void (*btf_trace_netlink_extack)(void *, const char *);
+
+struct listeners;
+
+struct netlink_table {
+	struct rhashtable hash;
+	struct hlist_head mc_list;
+	struct listeners __attribute__((btf_type_tag("rcu"))) *listeners;
+	unsigned int flags;
+	unsigned int groups;
+	struct mutex *cb_mutex;
+	struct module *module;
+	int (*bind)(struct net *, int);
+	void (*unbind)(struct net *, int);
+	void (*release)(struct sock *, unsigned long *);
+	int registered;
+};
+
+struct listeners {
+	struct callback_head rcu;
+	unsigned long masks[0];
+};
+
+enum netlink_skb_flags {
+	NETLINK_SKB_DST = 8,
+};
+
+enum {
+	NETLINK_F_KERNEL_SOCKET = 0,
+	NETLINK_F_RECV_PKTINFO = 1,
+	NETLINK_F_BROADCAST_SEND_ERROR = 2,
+	NETLINK_F_RECV_NO_ENOBUFS = 3,
+	NETLINK_F_LISTEN_ALL_NSID = 4,
+	NETLINK_F_CAP_ACK = 5,
+	NETLINK_F_EXT_ACK = 6,
+	NETLINK_F_STRICT_CHK = 7,
+};
+
+enum {
+	NETLINK_UNCONNECTED = 0,
+	NETLINK_CONNECTED = 1,
+};
+
+enum nlmsgerr_attrs {
+	NLMSGERR_ATTR_UNUSED = 0,
+	NLMSGERR_ATTR_MSG = 1,
+	NLMSGERR_ATTR_OFFS = 2,
+	NLMSGERR_ATTR_COOKIE = 3,
+	NLMSGERR_ATTR_POLICY = 4,
+	NLMSGERR_ATTR_MISS_TYPE = 5,
+	NLMSGERR_ATTR_MISS_NEST = 6,
+	__NLMSGERR_ATTR_MAX = 7,
+	NLMSGERR_ATTR_MAX = 6,
+};
+
+struct trace_event_raw_netlink_extack {
+	struct trace_entry ent;
+	u32 __data_loc_msg;
+	char __data[0];
+};
+
+struct netlink_tap {
+	struct net_device *dev;
+	struct module *module;
+	struct list_head list;
+};
+
+struct netlink_sock {
+	struct sock sk;
+	unsigned long flags;
+	u32 portid;
+	u32 dst_portid;
+	u32 dst_group;
+	u32 subscriptions;
+	u32 ngroups;
+	unsigned long *groups;
+	unsigned long state;
+	size_t max_recvmsg_len;
+	wait_queue_head_t wait;
+	bool bound;
+	bool cb_running;
+	int dump_done_errno;
+	struct netlink_callback cb;
+	struct mutex *cb_mutex;
+	struct mutex cb_def_mutex;
+	void (*netlink_rcv)(struct sk_buff *);
+	int (*netlink_bind)(struct net *, int);
+	void (*netlink_unbind)(struct net *, int);
+	void (*netlink_release)(struct sock *, unsigned long *);
+	struct module *module;
+	struct rhash_head node;
+	struct callback_head rcu;
+	struct work_struct work;
+};
+
+struct sockaddr_nl {
+	__kernel_sa_family_t nl_family;
+	unsigned short nl_pad;
+	__u32 nl_pid;
+	__u32 nl_groups;
+};
+
+struct trace_event_data_offsets_netlink_extack {
+	u32 msg;
+};
+
+struct netlink_tap_net {
+	struct list_head netlink_tap_all;
+	struct mutex netlink_tap_lock;
+};
+
+struct netlink_broadcast_data {
+	struct sock *exclude_sk;
+	struct net *net;
+	u32 portid;
+	u32 group;
+	int failure;
+	int delivery_failure;
+	int congested;
+	int delivered;
+	gfp_t allocation;
+	struct sk_buff *skb;
+	struct sk_buff *skb2;
+	int (*tx_filter)(struct sock *, struct sk_buff *, void *);
+	void *tx_data;
+};
+
+struct netlink_set_err_data {
+	struct sock *exclude_sk;
+	u32 portid;
+	u32 group;
+	int code;
+};
+
+struct netlink_compare_arg {
+	possible_net_t pnet;
+	u32 portid;
+};
+
+struct nl_pktinfo {
+	__u32 group;
+};
+
+struct nl_seq_iter {
+	struct seq_net_private p;
+	struct rhashtable_iter hti;
+	int link;
+};
+
+struct bpf_iter__netlink {
+	union {
+		struct bpf_iter_meta *meta;
+	};
+	union {
+		struct netlink_sock *sk;
+	};
+};
+
+struct nlmsgerr {
+	int error;
+	struct nlmsghdr msg;
+};
+
+struct netlink_notify {
+	struct net *net;
+	u32 portid;
+	int protocol;
+};
+
+enum {
+	CTRL_CMD_UNSPEC = 0,
+	CTRL_CMD_NEWFAMILY = 1,
+	CTRL_CMD_DELFAMILY = 2,
+	CTRL_CMD_GETFAMILY = 3,
+	CTRL_CMD_NEWOPS = 4,
+	CTRL_CMD_DELOPS = 5,
+	CTRL_CMD_GETOPS = 6,
+	CTRL_CMD_NEWMCAST_GRP = 7,
+	CTRL_CMD_DELMCAST_GRP = 8,
+	CTRL_CMD_GETMCAST_GRP = 9,
+	CTRL_CMD_GETPOLICY = 10,
+	__CTRL_CMD_MAX = 11,
+};
+
+enum genl_validate_flags {
+	GENL_DONT_VALIDATE_STRICT = 1,
+	GENL_DONT_VALIDATE_DUMP = 2,
+	GENL_DONT_VALIDATE_DUMP_STRICT = 4,
+};
+
+enum {
+	CTRL_ATTR_UNSPEC = 0,
+	CTRL_ATTR_FAMILY_ID = 1,
+	CTRL_ATTR_FAMILY_NAME = 2,
+	CTRL_ATTR_VERSION = 3,
+	CTRL_ATTR_HDRSIZE = 4,
+	CTRL_ATTR_MAXATTR = 5,
+	CTRL_ATTR_OPS = 6,
+	CTRL_ATTR_MCAST_GROUPS = 7,
+	CTRL_ATTR_POLICY = 8,
+	CTRL_ATTR_OP_POLICY = 9,
+	CTRL_ATTR_OP = 10,
+	__CTRL_ATTR_MAX = 11,
+};
+
+enum {
+	CTRL_ATTR_OP_UNSPEC = 0,
+	CTRL_ATTR_OP_ID = 1,
+	CTRL_ATTR_OP_FLAGS = 2,
+	__CTRL_ATTR_OP_MAX = 3,
+};
+
+enum {
+	CTRL_ATTR_MCAST_GRP_UNSPEC = 0,
+	CTRL_ATTR_MCAST_GRP_NAME = 1,
+	CTRL_ATTR_MCAST_GRP_ID = 2,
+	__CTRL_ATTR_MCAST_GRP_MAX = 3,
+};
+
+enum {
+	CTRL_ATTR_POLICY_UNSPEC = 0,
+	CTRL_ATTR_POLICY_DO = 1,
+	CTRL_ATTR_POLICY_DUMP = 2,
+	__CTRL_ATTR_POLICY_DUMP_MAX = 3,
+	CTRL_ATTR_POLICY_DUMP_MAX = 2,
+};
+
+struct genl_op_iter {
+	const struct genl_family *family;
+	struct genl_split_ops doit;
+	struct genl_split_ops dumpit;
+	int cmd_idx;
+	int entry_idx;
+	u32 cmd;
+	u8 flags;
+};
+
+struct netlink_policy_dump_state;
+
+struct ctrl_dump_policy_ctx {
+	struct netlink_policy_dump_state *state;
+	const struct genl_family *rt;
+	struct genl_op_iter *op_iter;
+	u32 op;
+	u16 fam_id;
+	u8 dump_map: 1;
+	u8 single_op: 1;
+};
+
+struct genl_start_context {
+	const struct genl_family *family;
+	struct nlmsghdr *nlh;
+	struct netlink_ext_ack *extack;
+	const struct genl_split_ops *ops;
+	int hdrlen;
+};
+
+enum netlink_attribute_type {
+	NL_ATTR_TYPE_INVALID = 0,
+	NL_ATTR_TYPE_FLAG = 1,
+	NL_ATTR_TYPE_U8 = 2,
+	NL_ATTR_TYPE_U16 = 3,
+	NL_ATTR_TYPE_U32 = 4,
+	NL_ATTR_TYPE_U64 = 5,
+	NL_ATTR_TYPE_S8 = 6,
+	NL_ATTR_TYPE_S16 = 7,
+	NL_ATTR_TYPE_S32 = 8,
+	NL_ATTR_TYPE_S64 = 9,
+	NL_ATTR_TYPE_BINARY = 10,
+	NL_ATTR_TYPE_STRING = 11,
+	NL_ATTR_TYPE_NUL_STRING = 12,
+	NL_ATTR_TYPE_NESTED = 13,
+	NL_ATTR_TYPE_NESTED_ARRAY = 14,
+	NL_ATTR_TYPE_BITFIELD32 = 15,
+};
+
+enum netlink_policy_type_attr {
+	NL_POLICY_TYPE_ATTR_UNSPEC = 0,
+	NL_POLICY_TYPE_ATTR_TYPE = 1,
+	NL_POLICY_TYPE_ATTR_MIN_VALUE_S = 2,
+	NL_POLICY_TYPE_ATTR_MAX_VALUE_S = 3,
+	NL_POLICY_TYPE_ATTR_MIN_VALUE_U = 4,
+	NL_POLICY_TYPE_ATTR_MAX_VALUE_U = 5,
+	NL_POLICY_TYPE_ATTR_MIN_LENGTH = 6,
+	NL_POLICY_TYPE_ATTR_MAX_LENGTH = 7,
+	NL_POLICY_TYPE_ATTR_POLICY_IDX = 8,
+	NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE = 9,
+	NL_POLICY_TYPE_ATTR_BITFIELD32_MASK = 10,
+	NL_POLICY_TYPE_ATTR_PAD = 11,
+	NL_POLICY_TYPE_ATTR_MASK = 12,
+	__NL_POLICY_TYPE_ATTR_MAX = 13,
+	NL_POLICY_TYPE_ATTR_MAX = 12,
+};
+
+struct netlink_policy_dump_state {
+	unsigned int policy_idx;
+	unsigned int attr_idx;
+	unsigned int n_alloc;
+	struct {
+		const struct nla_policy *policy;
+		unsigned int maxtype;
+	} policies[0];
+};
+
+typedef void (*btf_trace_bpf_test_finish)(void *, int *);
+
+struct bpf_test_timer {
+	enum {
+		NO_PREEMPT = 0,
+		NO_MIGRATE = 1,
+	} mode;
+	u32 i;
+	u64 time_start;
+	u64 time_spent;
+};
+
+enum nf_inet_hooks {
+	NF_INET_PRE_ROUTING = 0,
+	NF_INET_LOCAL_IN = 1,
+	NF_INET_FORWARD = 2,
+	NF_INET_LOCAL_OUT = 3,
+	NF_INET_POST_ROUTING = 4,
+	NF_INET_NUMHOOKS = 5,
+	NF_INET_INGRESS = 5,
+};
+
+struct bpf_fentry_test_t {
+	struct bpf_fentry_test_t *a;
+};
+
+struct trace_event_raw_bpf_test_finish {
+	struct trace_entry ent;
+	int err;
+	char __data[0];
+};
+
+struct xdp_test_data {
+	struct xdp_buff *orig_ctx;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct xdp_rxq_info rxq;
+	struct net_device *dev;
+	struct page_pool *pp;
+	struct xdp_frame **frames;
+	struct sk_buff **skbs;
+	struct xdp_mem_info mem;
+	u32 batch_size;
+	u32 frame_cnt;
+	long: 64;
+	long: 64;
+};
+
+struct xdp_page_head {
+	struct xdp_buff orig_ctx;
+	struct xdp_buff ctx;
+	union {
+		struct {
+			struct {} __empty_frame;
+			struct xdp_frame frame[0];
+		};
+		struct {
+			struct {} __empty_data;
+			u8 data[0];
+		};
+	};
+};
+
+struct trace_event_data_offsets_bpf_test_finish {};
+
+struct prog_test_member1 {
+	int a;
+};
+
+struct prog_test_member {
+	struct prog_test_member1 m;
+	int c;
+};
+
+struct prog_test_ref_kfunc {
+	int a;
+	int b;
+	struct prog_test_member memb;
+	struct prog_test_ref_kfunc *next;
+	refcount_t cnt;
+};
+
+struct bpf_raw_tp_test_run_info {
+	struct bpf_prog *prog;
+	void *ctx;
+	u32 retval;
+};
+
+struct bpf_dummy_ops_test_args {
+	u64 args[12];
+	struct bpf_dummy_ops_state state;
+};
+
+typedef int (*dummy_ops_test_ret_fn)(struct bpf_dummy_ops_state *, ...);
+
+enum ethtool_flags {
+	ETH_FLAG_TXVLAN = 128,
+	ETH_FLAG_RXVLAN = 256,
+	ETH_FLAG_LRO = 32768,
+	ETH_FLAG_NTUPLE = 134217728,
+	ETH_FLAG_RXHASH = 268435456,
+};
+
+enum ethtool_sfeatures_retval_bits {
+	ETHTOOL_F_UNSUPPORTED__BIT = 0,
+	ETHTOOL_F_WISH__BIT = 1,
+	ETHTOOL_F_COMPAT__BIT = 2,
+};
+
+enum tunable_id {
+	ETHTOOL_ID_UNSPEC = 0,
+	ETHTOOL_RX_COPYBREAK = 1,
+	ETHTOOL_TX_COPYBREAK = 2,
+	ETHTOOL_PFC_PREVENTION_TOUT = 3,
+	ETHTOOL_TX_COPYBREAK_BUF_SIZE = 4,
+	__ETHTOOL_TUNABLE_COUNT = 5,
+};
+
+enum tunable_type_id {
+	ETHTOOL_TUNABLE_UNSPEC = 0,
+	ETHTOOL_TUNABLE_U8 = 1,
+	ETHTOOL_TUNABLE_U16 = 2,
+	ETHTOOL_TUNABLE_U32 = 3,
+	ETHTOOL_TUNABLE_U64 = 4,
+	ETHTOOL_TUNABLE_STRING = 5,
+	ETHTOOL_TUNABLE_S8 = 6,
+	ETHTOOL_TUNABLE_S16 = 7,
+	ETHTOOL_TUNABLE_S32 = 8,
+	ETHTOOL_TUNABLE_S64 = 9,
+};
+
+enum phy_tunable_id {
+	ETHTOOL_PHY_ID_UNSPEC = 0,
+	ETHTOOL_PHY_DOWNSHIFT = 1,
+	ETHTOOL_PHY_FAST_LINK_DOWN = 2,
+	ETHTOOL_PHY_EDPD = 3,
+	__ETHTOOL_PHY_TUNABLE_COUNT = 4,
+};
+
+enum ethtool_fec_config_bits {
+	ETHTOOL_FEC_NONE_BIT = 0,
+	ETHTOOL_FEC_AUTO_BIT = 1,
+	ETHTOOL_FEC_OFF_BIT = 2,
+	ETHTOOL_FEC_RS_BIT = 3,
+	ETHTOOL_FEC_BASER_BIT = 4,
+	ETHTOOL_FEC_LLRS_BIT = 5,
+};
+
+struct ethtool_rx_flow_key {
+	struct flow_dissector_key_basic basic;
+	union {
+		struct flow_dissector_key_ipv4_addrs ipv4;
+		struct flow_dissector_key_ipv6_addrs ipv6;
+	};
+	struct flow_dissector_key_ports tp;
+	struct flow_dissector_key_ip ip;
+	struct flow_dissector_key_vlan vlan;
+	struct flow_dissector_key_eth_addrs eth_addrs;
+};
+
+struct ethtool_rx_flow_match {
+	struct flow_dissector dissector;
+	struct ethtool_rx_flow_key key;
+	struct ethtool_rx_flow_key mask;
+};
+
+struct ethtool_devlink_compat {
+	struct devlink *devlink;
+	union {
+		struct ethtool_flash efl;
+		struct ethtool_drvinfo info;
+	};
+};
+
+struct ethtool_value {
+	__u32 cmd;
+	__u32 data;
+};
+
+struct ethtool_rx_flow_rule {
+	struct flow_rule *rule;
+	unsigned long priv[0];
+};
+
+struct ethtool_cmd {
+	__u32 cmd;
+	__u32 supported;
+	__u32 advertising;
+	__u16 speed;
+	__u8 duplex;
+	__u8 port;
+	__u8 phy_address;
+	__u8 transceiver;
+	__u8 autoneg;
+	__u8 mdio_support;
+	__u32 maxtxpkt;
+	__u32 maxrxpkt;
+	__u16 speed_hi;
+	__u8 eth_tp_mdix;
+	__u8 eth_tp_mdix_ctrl;
+	__u32 lp_advertising;
+	__u32 reserved[2];
+};
+
+struct ethtool_link_usettings {
+	struct ethtool_link_settings base;
+	struct {
+		__u32 supported[4];
+		__u32 advertising[4];
+		__u32 lp_advertising[4];
+	} link_modes;
+};
+
+struct ethtool_rx_flow_spec_input {
+	const struct ethtool_rx_flow_spec *fs;
+	u32 rss_ctx;
+};
+
+struct ethtool_gstrings {
+	__u32 cmd;
+	__u32 string_set;
+	__u32 len;
+	__u8 data[0];
+};
+
+struct ethtool_perm_addr {
+	__u32 cmd;
+	__u32 size;
+	__u8 data[0];
+};
+
+struct ethtool_sset_info {
+	__u32 cmd;
+	__u32 reserved;
+	__u64 sset_mask;
+	__u32 data[0];
+};
+
+struct ethtool_rxfh {
+	__u32 cmd;
+	__u32 rss_context;
+	__u32 indir_size;
+	__u32 key_size;
+	__u8 hfunc;
+	__u8 rsvd8[3];
+	__u32 rsvd32;
+	__u32 rss_config[0];
+};
+
+struct ethtool_get_features_block {
+	__u32 available;
+	__u32 requested;
+	__u32 active;
+	__u32 never_changed;
+};
+
+struct ethtool_gfeatures {
+	__u32 cmd;
+	__u32 size;
+	struct ethtool_get_features_block features[0];
+};
+
+struct ethtool_set_features_block {
+	__u32 valid;
+	__u32 requested;
+};
+
+struct ethtool_sfeatures {
+	__u32 cmd;
+	__u32 size;
+	struct ethtool_set_features_block features[0];
+};
+
+struct ethtool_per_queue_op {
+	__u32 cmd;
+	__u32 sub_command;
+	__u32 queue_mask[128];
+	char data[0];
+};
+
+struct link_mode_info {
+	int speed;
+	u8 lanes;
+	u8 duplex;
+};
+
+typedef void (*ethnl_notify_handler_t)(struct net_device *, unsigned int, const void *);
+
+struct ethnl_req_info;
+
+struct ethnl_reply_data;
+
+struct ethnl_request_ops {
+	u8 request_cmd;
+	u8 reply_cmd;
+	u16 hdr_attr;
+	unsigned int req_info_size;
+	unsigned int reply_data_size;
+	bool allow_nodev_do;
+	u8 set_ntf_cmd;
+	int (*parse_request)(struct ethnl_req_info *, struct nlattr **, struct netlink_ext_ack *);
+	int (*prepare_data)(const struct ethnl_req_info *, struct ethnl_reply_data *, const struct genl_info *);
+	int (*reply_size)(const struct ethnl_req_info *, const struct ethnl_reply_data *);
+	int (*fill_reply)(struct sk_buff *, const struct ethnl_req_info *, const struct ethnl_reply_data *);
+	void (*cleanup_data)(struct ethnl_reply_data *);
+	int (*set_validate)(struct ethnl_req_info *, struct genl_info *);
+	int (*set)(struct ethnl_req_info *, struct genl_info *);
+};
+
+struct ethnl_req_info {
+	struct net_device *dev;
+	netdevice_tracker dev_tracker;
+	u32 flags;
+};
+
+struct ethnl_reply_data {
+	struct net_device *dev;
+};
+
+enum {
+	ETHTOOL_A_HEADER_UNSPEC = 0,
+	ETHTOOL_A_HEADER_DEV_INDEX = 1,
+	ETHTOOL_A_HEADER_DEV_NAME = 2,
+	ETHTOOL_A_HEADER_FLAGS = 3,
+	__ETHTOOL_A_HEADER_CNT = 4,
+	ETHTOOL_A_HEADER_MAX = 3,
+};
+
+enum ethtool_multicast_groups {
+	ETHNL_MCGRP_MONITOR = 0,
+};
+
+struct ethnl_dump_ctx {
+	const struct ethnl_request_ops *ops;
+	struct ethnl_req_info *req_info;
+	struct ethnl_reply_data *reply_data;
+	unsigned long pos_ifindex;
+};
+
+enum {
+	ETHTOOL_A_BITSET_UNSPEC = 0,
+	ETHTOOL_A_BITSET_NOMASK = 1,
+	ETHTOOL_A_BITSET_SIZE = 2,
+	ETHTOOL_A_BITSET_BITS = 3,
+	ETHTOOL_A_BITSET_VALUE = 4,
+	ETHTOOL_A_BITSET_MASK = 5,
+	__ETHTOOL_A_BITSET_CNT = 6,
+	ETHTOOL_A_BITSET_MAX = 5,
+};
+
+enum {
+	ETHTOOL_A_BITSET_BITS_UNSPEC = 0,
+	ETHTOOL_A_BITSET_BITS_BIT = 1,
+	__ETHTOOL_A_BITSET_BITS_CNT = 2,
+	ETHTOOL_A_BITSET_BITS_MAX = 1,
+};
+
+enum {
+	ETHTOOL_A_BITSET_BIT_UNSPEC = 0,
+	ETHTOOL_A_BITSET_BIT_INDEX = 1,
+	ETHTOOL_A_BITSET_BIT_NAME = 2,
+	ETHTOOL_A_BITSET_BIT_VALUE = 3,
+	__ETHTOOL_A_BITSET_BIT_CNT = 4,
+	ETHTOOL_A_BITSET_BIT_MAX = 3,
+};
+
+typedef const char (* const ethnl_string_array_t)[32];
+
+struct strset_info {
+	bool per_dev;
+	bool free_strings;
+	unsigned int count;
+	const char (*strings)[32];
+};
+
+enum {
+	ETHTOOL_A_STRSET_UNSPEC = 0,
+	ETHTOOL_A_STRSET_HEADER = 1,
+	ETHTOOL_A_STRSET_STRINGSETS = 2,
+	ETHTOOL_A_STRSET_COUNTS_ONLY = 3,
+	__ETHTOOL_A_STRSET_CNT = 4,
+	ETHTOOL_A_STRSET_MAX = 3,
+};
+
+enum {
+	ETHTOOL_A_STRINGSETS_UNSPEC = 0,
+	ETHTOOL_A_STRINGSETS_STRINGSET = 1,
+	__ETHTOOL_A_STRINGSETS_CNT = 2,
+	ETHTOOL_A_STRINGSETS_MAX = 1,
+};
+
+enum {
+	ETHTOOL_A_STRINGSET_UNSPEC = 0,
+	ETHTOOL_A_STRINGSET_ID = 1,
+	ETHTOOL_A_STRINGSET_COUNT = 2,
+	ETHTOOL_A_STRINGSET_STRINGS = 3,
+	__ETHTOOL_A_STRINGSET_CNT = 4,
+	ETHTOOL_A_STRINGSET_MAX = 3,
+};
+
+enum {
+	ETHTOOL_A_STRINGS_UNSPEC = 0,
+	ETHTOOL_A_STRINGS_STRING = 1,
+	__ETHTOOL_A_STRINGS_CNT = 2,
+	ETHTOOL_A_STRINGS_MAX = 1,
+};
+
+enum {
+	ETHTOOL_A_STRING_UNSPEC = 0,
+	ETHTOOL_A_STRING_INDEX = 1,
+	ETHTOOL_A_STRING_VALUE = 2,
+	__ETHTOOL_A_STRING_CNT = 3,
+	ETHTOOL_A_STRING_MAX = 2,
+};
+
+struct strset_req_info {
+	struct ethnl_req_info base;
+	u32 req_ids;
+	bool counts_only;
+};
+
+struct strset_reply_data {
+	struct ethnl_reply_data base;
+	struct strset_info sets[21];
+};
+
+enum {
+	ETHTOOL_A_LINKINFO_UNSPEC = 0,
+	ETHTOOL_A_LINKINFO_HEADER = 1,
+	ETHTOOL_A_LINKINFO_PORT = 2,
+	ETHTOOL_A_LINKINFO_PHYADDR = 3,
+	ETHTOOL_A_LINKINFO_TP_MDIX = 4,
+	ETHTOOL_A_LINKINFO_TP_MDIX_CTRL = 5,
+	ETHTOOL_A_LINKINFO_TRANSCEIVER = 6,
+	__ETHTOOL_A_LINKINFO_CNT = 7,
+	ETHTOOL_A_LINKINFO_MAX = 6,
+};
+
+struct linkinfo_reply_data {
+	struct ethnl_reply_data base;
+	struct ethtool_link_ksettings ksettings;
+	struct ethtool_link_settings *lsettings;
+};
+
+enum {
+	ETHTOOL_A_LINKMODES_UNSPEC = 0,
+	ETHTOOL_A_LINKMODES_HEADER = 1,
+	ETHTOOL_A_LINKMODES_AUTONEG = 2,
+	ETHTOOL_A_LINKMODES_OURS = 3,
+	ETHTOOL_A_LINKMODES_PEER = 4,
+	ETHTOOL_A_LINKMODES_SPEED = 5,
+	ETHTOOL_A_LINKMODES_DUPLEX = 6,
+	ETHTOOL_A_LINKMODES_MASTER_SLAVE_CFG = 7,
+	ETHTOOL_A_LINKMODES_MASTER_SLAVE_STATE = 8,
+	ETHTOOL_A_LINKMODES_LANES = 9,
+	ETHTOOL_A_LINKMODES_RATE_MATCHING = 10,
+	__ETHTOOL_A_LINKMODES_CNT = 11,
+	ETHTOOL_A_LINKMODES_MAX = 10,
+};
+
+struct linkmodes_reply_data {
+	struct ethnl_reply_data base;
+	struct ethtool_link_ksettings ksettings;
+	struct ethtool_link_settings *lsettings;
+	bool peer_empty;
+};
+
+enum {
+	ETHTOOL_A_RSS_UNSPEC = 0,
+	ETHTOOL_A_RSS_HEADER = 1,
+	ETHTOOL_A_RSS_CONTEXT = 2,
+	ETHTOOL_A_RSS_HFUNC = 3,
+	ETHTOOL_A_RSS_INDIR = 4,
+	ETHTOOL_A_RSS_HKEY = 5,
+	__ETHTOOL_A_RSS_CNT = 6,
+	ETHTOOL_A_RSS_MAX = 5,
+};
+
+struct rss_req_info {
+	struct ethnl_req_info base;
+	u32 rss_context;
+};
+
+struct rss_reply_data {
+	struct ethnl_reply_data base;
+	u32 indir_size;
+	u32 hkey_size;
+	u32 hfunc;
+	u32 *indir_table;
+	u8 *hkey;
+};
+
+enum {
+	ETHTOOL_A_LINKSTATE_UNSPEC = 0,
+	ETHTOOL_A_LINKSTATE_HEADER = 1,
+	ETHTOOL_A_LINKSTATE_LINK = 2,
+	ETHTOOL_A_LINKSTATE_SQI = 3,
+	ETHTOOL_A_LINKSTATE_SQI_MAX = 4,
+	ETHTOOL_A_LINKSTATE_EXT_STATE = 5,
+	ETHTOOL_A_LINKSTATE_EXT_SUBSTATE = 6,
+	ETHTOOL_A_LINKSTATE_EXT_DOWN_CNT = 7,
+	__ETHTOOL_A_LINKSTATE_CNT = 8,
+	ETHTOOL_A_LINKSTATE_MAX = 7,
+};
+
+struct linkstate_reply_data {
+	struct ethnl_reply_data base;
+	int link;
+	int sqi;
+	int sqi_max;
+	struct ethtool_link_ext_stats link_stats;
+	bool link_ext_state_provided;
+	struct ethtool_link_ext_state_info ethtool_link_ext_state_info;
+};
+
+enum {
+	ETHTOOL_A_DEBUG_UNSPEC = 0,
+	ETHTOOL_A_DEBUG_HEADER = 1,
+	ETHTOOL_A_DEBUG_MSGMASK = 2,
+	__ETHTOOL_A_DEBUG_CNT = 3,
+	ETHTOOL_A_DEBUG_MAX = 2,
+};
+
+struct debug_reply_data {
+	struct ethnl_reply_data base;
+	u32 msg_mask;
+};
+
+enum {
+	ETHTOOL_A_WOL_UNSPEC = 0,
+	ETHTOOL_A_WOL_HEADER = 1,
+	ETHTOOL_A_WOL_MODES = 2,
+	ETHTOOL_A_WOL_SOPASS = 3,
+	__ETHTOOL_A_WOL_CNT = 4,
+	ETHTOOL_A_WOL_MAX = 3,
+};
+
+struct wol_reply_data {
+	struct ethnl_reply_data base;
+	struct ethtool_wolinfo wol;
+	bool show_sopass;
+};
+
+enum {
+	ETHTOOL_A_FEATURES_UNSPEC = 0,
+	ETHTOOL_A_FEATURES_HEADER = 1,
+	ETHTOOL_A_FEATURES_HW = 2,
+	ETHTOOL_A_FEATURES_WANTED = 3,
+	ETHTOOL_A_FEATURES_ACTIVE = 4,
+	ETHTOOL_A_FEATURES_NOCHANGE = 5,
+	__ETHTOOL_A_FEATURES_CNT = 6,
+	ETHTOOL_A_FEATURES_MAX = 5,
+};
+
+struct features_reply_data {
+	struct ethnl_reply_data base;
+	u32 hw[2];
+	u32 wanted[2];
+	u32 active[2];
+	u32 nochange[2];
+	u32 all[2];
+};
+
+enum {
+	ETHTOOL_A_PRIVFLAGS_UNSPEC = 0,
+	ETHTOOL_A_PRIVFLAGS_HEADER = 1,
+	ETHTOOL_A_PRIVFLAGS_FLAGS = 2,
+	__ETHTOOL_A_PRIVFLAGS_CNT = 3,
+	ETHTOOL_A_PRIVFLAGS_MAX = 2,
+};
+
+struct privflags_reply_data {
+	struct ethnl_reply_data base;
+	const char (*priv_flag_names)[32];
+	unsigned int n_priv_flags;
+	u32 priv_flags;
+};
+
+enum {
+	ETHTOOL_TCP_DATA_SPLIT_UNKNOWN = 0,
+	ETHTOOL_TCP_DATA_SPLIT_DISABLED = 1,
+	ETHTOOL_TCP_DATA_SPLIT_ENABLED = 2,
+};
+
+enum {
+	ETHTOOL_A_RINGS_UNSPEC = 0,
+	ETHTOOL_A_RINGS_HEADER = 1,
+	ETHTOOL_A_RINGS_RX_MAX = 2,
+	ETHTOOL_A_RINGS_RX_MINI_MAX = 3,
+	ETHTOOL_A_RINGS_RX_JUMBO_MAX = 4,
+	ETHTOOL_A_RINGS_TX_MAX = 5,
+	ETHTOOL_A_RINGS_RX = 6,
+	ETHTOOL_A_RINGS_RX_MINI = 7,
+	ETHTOOL_A_RINGS_RX_JUMBO = 8,
+	ETHTOOL_A_RINGS_TX = 9,
+	ETHTOOL_A_RINGS_RX_BUF_LEN = 10,
+	ETHTOOL_A_RINGS_TCP_DATA_SPLIT = 11,
+	ETHTOOL_A_RINGS_CQE_SIZE = 12,
+	ETHTOOL_A_RINGS_TX_PUSH = 13,
+	ETHTOOL_A_RINGS_RX_PUSH = 14,
+	ETHTOOL_A_RINGS_TX_PUSH_BUF_LEN = 15,
+	ETHTOOL_A_RINGS_TX_PUSH_BUF_LEN_MAX = 16,
+	__ETHTOOL_A_RINGS_CNT = 17,
+	ETHTOOL_A_RINGS_MAX = 16,
+};
+
+enum ethtool_supported_ring_param {
+	ETHTOOL_RING_USE_RX_BUF_LEN = 1,
+	ETHTOOL_RING_USE_CQE_SIZE = 2,
+	ETHTOOL_RING_USE_TX_PUSH = 4,
+	ETHTOOL_RING_USE_RX_PUSH = 8,
+	ETHTOOL_RING_USE_TX_PUSH_BUF_LEN = 16,
+};
+
+struct rings_reply_data {
+	struct ethnl_reply_data base;
+	struct ethtool_ringparam ringparam;
+	struct kernel_ethtool_ringparam kernel_ringparam;
+	u32 supported_ring_params;
+};
+
+enum {
+	ETHTOOL_A_CHANNELS_UNSPEC = 0,
+	ETHTOOL_A_CHANNELS_HEADER = 1,
+	ETHTOOL_A_CHANNELS_RX_MAX = 2,
+	ETHTOOL_A_CHANNELS_TX_MAX = 3,
+	ETHTOOL_A_CHANNELS_OTHER_MAX = 4,
+	ETHTOOL_A_CHANNELS_COMBINED_MAX = 5,
+	ETHTOOL_A_CHANNELS_RX_COUNT = 6,
+	ETHTOOL_A_CHANNELS_TX_COUNT = 7,
+	ETHTOOL_A_CHANNELS_OTHER_COUNT = 8,
+	ETHTOOL_A_CHANNELS_COMBINED_COUNT = 9,
+	__ETHTOOL_A_CHANNELS_CNT = 10,
+	ETHTOOL_A_CHANNELS_MAX = 9,
+};
+
+struct channels_reply_data {
+	struct ethnl_reply_data base;
+	struct ethtool_channels channels;
+};
+
+enum {
+	ETHTOOL_A_COALESCE_UNSPEC = 0,
+	ETHTOOL_A_COALESCE_HEADER = 1,
+	ETHTOOL_A_COALESCE_RX_USECS = 2,
+	ETHTOOL_A_COALESCE_RX_MAX_FRAMES = 3,
+	ETHTOOL_A_COALESCE_RX_USECS_IRQ = 4,
+	ETHTOOL_A_COALESCE_RX_MAX_FRAMES_IRQ = 5,
+	ETHTOOL_A_COALESCE_TX_USECS = 6,
+	ETHTOOL_A_COALESCE_TX_MAX_FRAMES = 7,
+	ETHTOOL_A_COALESCE_TX_USECS_IRQ = 8,
+	ETHTOOL_A_COALESCE_TX_MAX_FRAMES_IRQ = 9,
+	ETHTOOL_A_COALESCE_STATS_BLOCK_USECS = 10,
+	ETHTOOL_A_COALESCE_USE_ADAPTIVE_RX = 11,
+	ETHTOOL_A_COALESCE_USE_ADAPTIVE_TX = 12,
+	ETHTOOL_A_COALESCE_PKT_RATE_LOW = 13,
+	ETHTOOL_A_COALESCE_RX_USECS_LOW = 14,
+	ETHTOOL_A_COALESCE_RX_MAX_FRAMES_LOW = 15,
+	ETHTOOL_A_COALESCE_TX_USECS_LOW = 16,
+	ETHTOOL_A_COALESCE_TX_MAX_FRAMES_LOW = 17,
+	ETHTOOL_A_COALESCE_PKT_RATE_HIGH = 18,
+	ETHTOOL_A_COALESCE_RX_USECS_HIGH = 19,
+	ETHTOOL_A_COALESCE_RX_MAX_FRAMES_HIGH = 20,
+	ETHTOOL_A_COALESCE_TX_USECS_HIGH = 21,
+	ETHTOOL_A_COALESCE_TX_MAX_FRAMES_HIGH = 22,
+	ETHTOOL_A_COALESCE_RATE_SAMPLE_INTERVAL = 23,
+	ETHTOOL_A_COALESCE_USE_CQE_MODE_TX = 24,
+	ETHTOOL_A_COALESCE_USE_CQE_MODE_RX = 25,
+	ETHTOOL_A_COALESCE_TX_AGGR_MAX_BYTES = 26,
+	ETHTOOL_A_COALESCE_TX_AGGR_MAX_FRAMES = 27,
+	ETHTOOL_A_COALESCE_TX_AGGR_TIME_USECS = 28,
+	__ETHTOOL_A_COALESCE_CNT = 29,
+	ETHTOOL_A_COALESCE_MAX = 28,
+};
+
+struct coalesce_reply_data {
+	struct ethnl_reply_data base;
+	struct ethtool_coalesce coalesce;
+	struct kernel_ethtool_coalesce kernel_coalesce;
+	u32 supported_params;
+};
+
+enum {
+	ETHTOOL_A_PAUSE_UNSPEC = 0,
+	ETHTOOL_A_PAUSE_HEADER = 1,
+	ETHTOOL_A_PAUSE_AUTONEG = 2,
+	ETHTOOL_A_PAUSE_RX = 3,
+	ETHTOOL_A_PAUSE_TX = 4,
+	ETHTOOL_A_PAUSE_STATS = 5,
+	ETHTOOL_A_PAUSE_STATS_SRC = 6,
+	__ETHTOOL_A_PAUSE_CNT = 7,
+	ETHTOOL_A_PAUSE_MAX = 6,
+};
+
+enum {
+	ETHTOOL_A_PAUSE_STAT_UNSPEC = 0,
+	ETHTOOL_A_PAUSE_STAT_PAD = 1,
+	ETHTOOL_A_PAUSE_STAT_TX_FRAMES = 2,
+	ETHTOOL_A_PAUSE_STAT_RX_FRAMES = 3,
+	__ETHTOOL_A_PAUSE_STAT_CNT = 4,
+	ETHTOOL_A_PAUSE_STAT_MAX = 3,
+};
+
+struct pause_req_info {
+	struct ethnl_req_info base;
+	enum ethtool_mac_stats_src src;
+};
+
+struct pause_reply_data {
+	struct ethnl_reply_data base;
+	struct ethtool_pauseparam pauseparam;
+	struct ethtool_pause_stats pausestat;
+};
+
+enum {
+	ETHTOOL_A_EEE_UNSPEC = 0,
+	ETHTOOL_A_EEE_HEADER = 1,
+	ETHTOOL_A_EEE_MODES_OURS = 2,
+	ETHTOOL_A_EEE_MODES_PEER = 3,
+	ETHTOOL_A_EEE_ACTIVE = 4,
+	ETHTOOL_A_EEE_ENABLED = 5,
+	ETHTOOL_A_EEE_TX_LPI_ENABLED = 6,
+	ETHTOOL_A_EEE_TX_LPI_TIMER = 7,
+	__ETHTOOL_A_EEE_CNT = 8,
+	ETHTOOL_A_EEE_MAX = 7,
+};
+
+struct eee_reply_data {
+	struct ethnl_reply_data base;
+	struct ethtool_eee eee;
+};
+
+enum {
+	ETHTOOL_A_TSINFO_UNSPEC = 0,
+	ETHTOOL_A_TSINFO_HEADER = 1,
+	ETHTOOL_A_TSINFO_TIMESTAMPING = 2,
+	ETHTOOL_A_TSINFO_TX_TYPES = 3,
+	ETHTOOL_A_TSINFO_RX_FILTERS = 4,
+	ETHTOOL_A_TSINFO_PHC_INDEX = 5,
+	__ETHTOOL_A_TSINFO_CNT = 6,
+	ETHTOOL_A_TSINFO_MAX = 5,
+};
+
+struct tsinfo_reply_data {
+	struct ethnl_reply_data base;
+	struct ethtool_ts_info ts_info;
+};
+
+enum {
+	ETHTOOL_A_CABLE_TEST_UNSPEC = 0,
+	ETHTOOL_A_CABLE_TEST_HEADER = 1,
+	__ETHTOOL_A_CABLE_TEST_CNT = 2,
+	ETHTOOL_A_CABLE_TEST_MAX = 1,
+};
+
+enum {
+	ETHTOOL_A_CABLE_TEST_NTF_UNSPEC = 0,
+	ETHTOOL_A_CABLE_TEST_NTF_HEADER = 1,
+	ETHTOOL_A_CABLE_TEST_NTF_STATUS = 2,
+	ETHTOOL_A_CABLE_TEST_NTF_NEST = 3,
+	__ETHTOOL_A_CABLE_TEST_NTF_CNT = 4,
+	ETHTOOL_A_CABLE_TEST_NTF_MAX = 3,
+};
+
+enum {
+	ETHTOOL_A_CABLE_TEST_NTF_STATUS_UNSPEC = 0,
+	ETHTOOL_A_CABLE_TEST_NTF_STATUS_STARTED = 1,
+	ETHTOOL_A_CABLE_TEST_NTF_STATUS_COMPLETED = 2,
+};
+
+enum {
+	ETHTOOL_A_CABLE_NEST_UNSPEC = 0,
+	ETHTOOL_A_CABLE_NEST_RESULT = 1,
+	ETHTOOL_A_CABLE_NEST_FAULT_LENGTH = 2,
+	__ETHTOOL_A_CABLE_NEST_CNT = 3,
+	ETHTOOL_A_CABLE_NEST_MAX = 2,
+};
+
+enum {
+	ETHTOOL_A_CABLE_RESULT_UNSPEC = 0,
+	ETHTOOL_A_CABLE_RESULT_PAIR = 1,
+	ETHTOOL_A_CABLE_RESULT_CODE = 2,
+	__ETHTOOL_A_CABLE_RESULT_CNT = 3,
+	ETHTOOL_A_CABLE_RESULT_MAX = 2,
+};
+
+enum {
+	ETHTOOL_A_CABLE_FAULT_LENGTH_UNSPEC = 0,
+	ETHTOOL_A_CABLE_FAULT_LENGTH_PAIR = 1,
+	ETHTOOL_A_CABLE_FAULT_LENGTH_CM = 2,
+	__ETHTOOL_A_CABLE_FAULT_LENGTH_CNT = 3,
+	ETHTOOL_A_CABLE_FAULT_LENGTH_MAX = 2,
+};
+
+enum {
+	ETHTOOL_A_CABLE_TEST_TDR_UNSPEC = 0,
+	ETHTOOL_A_CABLE_TEST_TDR_HEADER = 1,
+	ETHTOOL_A_CABLE_TEST_TDR_CFG = 2,
+	__ETHTOOL_A_CABLE_TEST_TDR_CNT = 3,
+	ETHTOOL_A_CABLE_TEST_TDR_MAX = 2,
+};
+
+enum {
+	ETHTOOL_A_CABLE_TDR_NEST_UNSPEC = 0,
+	ETHTOOL_A_CABLE_TDR_NEST_STEP = 1,
+	ETHTOOL_A_CABLE_TDR_NEST_AMPLITUDE = 2,
+	ETHTOOL_A_CABLE_TDR_NEST_PULSE = 3,
+	__ETHTOOL_A_CABLE_TDR_NEST_CNT = 4,
+	ETHTOOL_A_CABLE_TDR_NEST_MAX = 3,
+};
+
+enum {
+	ETHTOOL_A_CABLE_AMPLITUDE_UNSPEC = 0,
+	ETHTOOL_A_CABLE_AMPLITUDE_PAIR = 1,
+	ETHTOOL_A_CABLE_AMPLITUDE_mV = 2,
+	__ETHTOOL_A_CABLE_AMPLITUDE_CNT = 3,
+	ETHTOOL_A_CABLE_AMPLITUDE_MAX = 2,
+};
+
+enum {
+	ETHTOOL_A_CABLE_PULSE_UNSPEC = 0,
+	ETHTOOL_A_CABLE_PULSE_mV = 1,
+	__ETHTOOL_A_CABLE_PULSE_CNT = 2,
+	ETHTOOL_A_CABLE_PULSE_MAX = 1,
+};
+
+enum {
+	ETHTOOL_A_CABLE_STEP_UNSPEC = 0,
+	ETHTOOL_A_CABLE_STEP_FIRST_DISTANCE = 1,
+	ETHTOOL_A_CABLE_STEP_LAST_DISTANCE = 2,
+	ETHTOOL_A_CABLE_STEP_STEP_DISTANCE = 3,
+	__ETHTOOL_A_CABLE_STEP_CNT = 4,
+	ETHTOOL_A_CABLE_STEP_MAX = 3,
+};
+
+enum {
+	ETHTOOL_A_CABLE_TEST_TDR_CFG_UNSPEC = 0,
+	ETHTOOL_A_CABLE_TEST_TDR_CFG_FIRST = 1,
+	ETHTOOL_A_CABLE_TEST_TDR_CFG_LAST = 2,
+	ETHTOOL_A_CABLE_TEST_TDR_CFG_STEP = 3,
+	ETHTOOL_A_CABLE_TEST_TDR_CFG_PAIR = 4,
+	__ETHTOOL_A_CABLE_TEST_TDR_CFG_CNT = 5,
+	ETHTOOL_A_CABLE_TEST_TDR_CFG_MAX = 4,
+};
+
+enum {
+	ETHTOOL_A_CABLE_PAIR_A = 0,
+	ETHTOOL_A_CABLE_PAIR_B = 1,
+	ETHTOOL_A_CABLE_PAIR_C = 2,
+	ETHTOOL_A_CABLE_PAIR_D = 3,
+};
+
+enum {
+	ETHTOOL_A_TUNNEL_INFO_UNSPEC = 0,
+	ETHTOOL_A_TUNNEL_INFO_HEADER = 1,
+	ETHTOOL_A_TUNNEL_INFO_UDP_PORTS = 2,
+	__ETHTOOL_A_TUNNEL_INFO_CNT = 3,
+	ETHTOOL_A_TUNNEL_INFO_MAX = 2,
+};
+
+enum udp_tunnel_nic_info_flags {
+	UDP_TUNNEL_NIC_INFO_MAY_SLEEP = 1,
+	UDP_TUNNEL_NIC_INFO_OPEN_ONLY = 2,
+	UDP_TUNNEL_NIC_INFO_IPV4_ONLY = 4,
+	UDP_TUNNEL_NIC_INFO_STATIC_IANA_VXLAN = 8,
+};
+
+enum {
+	ETHTOOL_UDP_TUNNEL_TYPE_VXLAN = 0,
+	ETHTOOL_UDP_TUNNEL_TYPE_GENEVE = 1,
+	ETHTOOL_UDP_TUNNEL_TYPE_VXLAN_GPE = 2,
+	__ETHTOOL_UDP_TUNNEL_TYPE_CNT = 3,
+};
+
+enum {
+	ETHTOOL_A_TUNNEL_UDP_UNSPEC = 0,
+	ETHTOOL_A_TUNNEL_UDP_TABLE = 1,
+	__ETHTOOL_A_TUNNEL_UDP_CNT = 2,
+	ETHTOOL_A_TUNNEL_UDP_MAX = 1,
+};
+
+enum {
+	ETHTOOL_A_TUNNEL_UDP_TABLE_UNSPEC = 0,
+	ETHTOOL_A_TUNNEL_UDP_TABLE_SIZE = 1,
+	ETHTOOL_A_TUNNEL_UDP_TABLE_TYPES = 2,
+	ETHTOOL_A_TUNNEL_UDP_TABLE_ENTRY = 3,
+	__ETHTOOL_A_TUNNEL_UDP_TABLE_CNT = 4,
+	ETHTOOL_A_TUNNEL_UDP_TABLE_MAX = 3,
+};
+
+enum {
+	ETHTOOL_A_TUNNEL_UDP_ENTRY_UNSPEC = 0,
+	ETHTOOL_A_TUNNEL_UDP_ENTRY_PORT = 1,
+	ETHTOOL_A_TUNNEL_UDP_ENTRY_TYPE = 2,
+	__ETHTOOL_A_TUNNEL_UDP_ENTRY_CNT = 3,
+	ETHTOOL_A_TUNNEL_UDP_ENTRY_MAX = 2,
+};
+
+struct ethnl_tunnel_info_dump_ctx {
+	struct ethnl_req_info req_info;
+	unsigned long ifindex;
+};
+
+enum {
+	ETHTOOL_A_FEC_UNSPEC = 0,
+	ETHTOOL_A_FEC_HEADER = 1,
+	ETHTOOL_A_FEC_MODES = 2,
+	ETHTOOL_A_FEC_AUTO = 3,
+	ETHTOOL_A_FEC_ACTIVE = 4,
+	ETHTOOL_A_FEC_STATS = 5,
+	__ETHTOOL_A_FEC_CNT = 6,
+	ETHTOOL_A_FEC_MAX = 5,
+};
+
+enum {
+	ETHTOOL_A_FEC_STAT_UNSPEC = 0,
+	ETHTOOL_A_FEC_STAT_PAD = 1,
+	ETHTOOL_A_FEC_STAT_CORRECTED = 2,
+	ETHTOOL_A_FEC_STAT_UNCORR = 3,
+	ETHTOOL_A_FEC_STAT_CORR_BITS = 4,
+	__ETHTOOL_A_FEC_STAT_CNT = 5,
+	ETHTOOL_A_FEC_STAT_MAX = 4,
+};
+
+struct fec_stat_grp {
+	u64 stats[9];
+	u8 cnt;
+};
+
+struct fec_reply_data {
+	struct ethnl_reply_data base;
+	unsigned long fec_link_modes[2];
+	u32 active_fec;
+	u8 fec_auto;
+	struct fec_stat_grp corr;
+	struct fec_stat_grp uncorr;
+	struct fec_stat_grp corr_bits;
+};
+
+enum {
+	ETHTOOL_A_MODULE_EEPROM_UNSPEC = 0,
+	ETHTOOL_A_MODULE_EEPROM_HEADER = 1,
+	ETHTOOL_A_MODULE_EEPROM_OFFSET = 2,
+	ETHTOOL_A_MODULE_EEPROM_LENGTH = 3,
+	ETHTOOL_A_MODULE_EEPROM_PAGE = 4,
+	ETHTOOL_A_MODULE_EEPROM_BANK = 5,
+	ETHTOOL_A_MODULE_EEPROM_I2C_ADDRESS = 6,
+	ETHTOOL_A_MODULE_EEPROM_DATA = 7,
+	__ETHTOOL_A_MODULE_EEPROM_CNT = 8,
+	ETHTOOL_A_MODULE_EEPROM_MAX = 7,
+};
+
+struct eeprom_req_info {
+	struct ethnl_req_info base;
+	u32 offset;
+	u32 length;
+	u8 page;
+	u8 bank;
+	u8 i2c_address;
+};
+
+struct eeprom_reply_data {
+	struct ethnl_reply_data base;
+	u32 length;
+	u8 *data;
+};
+
+enum {
+	ETHTOOL_STATS_ETH_PHY = 0,
+	ETHTOOL_STATS_ETH_MAC = 1,
+	ETHTOOL_STATS_ETH_CTRL = 2,
+	ETHTOOL_STATS_RMON = 3,
+	__ETHTOOL_STATS_CNT = 4,
+};
+
+enum {
+	ETHTOOL_A_STATS_UNSPEC = 0,
+	ETHTOOL_A_STATS_PAD = 1,
+	ETHTOOL_A_STATS_HEADER = 2,
+	ETHTOOL_A_STATS_GROUPS = 3,
+	ETHTOOL_A_STATS_GRP = 4,
+	ETHTOOL_A_STATS_SRC = 5,
+	__ETHTOOL_A_STATS_CNT = 6,
+	ETHTOOL_A_STATS_MAX = 5,
+};
+
+enum {
+	ETHTOOL_A_STATS_GRP_UNSPEC = 0,
+	ETHTOOL_A_STATS_GRP_PAD = 1,
+	ETHTOOL_A_STATS_GRP_ID = 2,
+	ETHTOOL_A_STATS_GRP_SS_ID = 3,
+	ETHTOOL_A_STATS_GRP_STAT = 4,
+	ETHTOOL_A_STATS_GRP_HIST_RX = 5,
+	ETHTOOL_A_STATS_GRP_HIST_TX = 6,
+	ETHTOOL_A_STATS_GRP_HIST_BKT_LOW = 7,
+	ETHTOOL_A_STATS_GRP_HIST_BKT_HI = 8,
+	ETHTOOL_A_STATS_GRP_HIST_VAL = 9,
+	__ETHTOOL_A_STATS_GRP_CNT = 10,
+	ETHTOOL_A_STATS_GRP_MAX = 9,
+};
+
+enum {
+	ETHTOOL_A_STATS_ETH_PHY_5_SYM_ERR = 0,
+	__ETHTOOL_A_STATS_ETH_PHY_CNT = 1,
+	ETHTOOL_A_STATS_ETH_PHY_MAX = 0,
+};
+
+enum {
+	ETHTOOL_A_STATS_ETH_MAC_2_TX_PKT = 0,
+	ETHTOOL_A_STATS_ETH_MAC_3_SINGLE_COL = 1,
+	ETHTOOL_A_STATS_ETH_MAC_4_MULTI_COL = 2,
+	ETHTOOL_A_STATS_ETH_MAC_5_RX_PKT = 3,
+	ETHTOOL_A_STATS_ETH_MAC_6_FCS_ERR = 4,
+	ETHTOOL_A_STATS_ETH_MAC_7_ALIGN_ERR = 5,
+	ETHTOOL_A_STATS_ETH_MAC_8_TX_BYTES = 6,
+	ETHTOOL_A_STATS_ETH_MAC_9_TX_DEFER = 7,
+	ETHTOOL_A_STATS_ETH_MAC_10_LATE_COL = 8,
+	ETHTOOL_A_STATS_ETH_MAC_11_XS_COL = 9,
+	ETHTOOL_A_STATS_ETH_MAC_12_TX_INT_ERR = 10,
+	ETHTOOL_A_STATS_ETH_MAC_13_CS_ERR = 11,
+	ETHTOOL_A_STATS_ETH_MAC_14_RX_BYTES = 12,
+	ETHTOOL_A_STATS_ETH_MAC_15_RX_INT_ERR = 13,
+	ETHTOOL_A_STATS_ETH_MAC_18_TX_MCAST = 14,
+	ETHTOOL_A_STATS_ETH_MAC_19_TX_BCAST = 15,
+	ETHTOOL_A_STATS_ETH_MAC_20_XS_DEFER = 16,
+	ETHTOOL_A_STATS_ETH_MAC_21_RX_MCAST = 17,
+	ETHTOOL_A_STATS_ETH_MAC_22_RX_BCAST = 18,
+	ETHTOOL_A_STATS_ETH_MAC_23_IR_LEN_ERR = 19,
+	ETHTOOL_A_STATS_ETH_MAC_24_OOR_LEN = 20,
+	ETHTOOL_A_STATS_ETH_MAC_25_TOO_LONG_ERR = 21,
+	__ETHTOOL_A_STATS_ETH_MAC_CNT = 22,
+	ETHTOOL_A_STATS_ETH_MAC_MAX = 21,
+};
+
+enum {
+	ETHTOOL_A_STATS_ETH_CTRL_3_TX = 0,
+	ETHTOOL_A_STATS_ETH_CTRL_4_RX = 1,
+	ETHTOOL_A_STATS_ETH_CTRL_5_RX_UNSUP = 2,
+	__ETHTOOL_A_STATS_ETH_CTRL_CNT = 3,
+	ETHTOOL_A_STATS_ETH_CTRL_MAX = 2,
+};
+
+enum {
+	ETHTOOL_A_STATS_RMON_UNDERSIZE = 0,
+	ETHTOOL_A_STATS_RMON_OVERSIZE = 1,
+	ETHTOOL_A_STATS_RMON_FRAG = 2,
+	ETHTOOL_A_STATS_RMON_JABBER = 3,
+	__ETHTOOL_A_STATS_RMON_CNT = 4,
+	ETHTOOL_A_STATS_RMON_MAX = 3,
+};
+
+struct stats_req_info {
+	struct ethnl_req_info base;
+	unsigned long stat_mask[1];
+	enum ethtool_mac_stats_src src;
+};
+
+struct stats_reply_data {
+	struct ethnl_reply_data base;
+	union {
+		struct {
+			struct ethtool_eth_phy_stats phy_stats;
+			struct ethtool_eth_mac_stats mac_stats;
+			struct ethtool_eth_ctrl_stats ctrl_stats;
+			struct ethtool_rmon_stats rmon_stats;
+		};
+		struct {
+			struct ethtool_eth_phy_stats phy_stats;
+			struct ethtool_eth_mac_stats mac_stats;
+			struct ethtool_eth_ctrl_stats ctrl_stats;
+			struct ethtool_rmon_stats rmon_stats;
+		} stats;
+	};
+	const struct ethtool_rmon_hist_range *rmon_ranges;
+};
+
+enum {
+	ETHTOOL_A_PHC_VCLOCKS_UNSPEC = 0,
+	ETHTOOL_A_PHC_VCLOCKS_HEADER = 1,
+	ETHTOOL_A_PHC_VCLOCKS_NUM = 2,
+	ETHTOOL_A_PHC_VCLOCKS_INDEX = 3,
+	__ETHTOOL_A_PHC_VCLOCKS_CNT = 4,
+	ETHTOOL_A_PHC_VCLOCKS_MAX = 3,
+};
+
+struct phc_vclocks_reply_data {
+	struct ethnl_reply_data base;
+	int num;
+	int *index;
+};
+
+enum {
+	ETHTOOL_A_MM_STAT_UNSPEC = 0,
+	ETHTOOL_A_MM_STAT_PAD = 1,
+	ETHTOOL_A_MM_STAT_REASSEMBLY_ERRORS = 2,
+	ETHTOOL_A_MM_STAT_SMD_ERRORS = 3,
+	ETHTOOL_A_MM_STAT_REASSEMBLY_OK = 4,
+	ETHTOOL_A_MM_STAT_RX_FRAG_COUNT = 5,
+	ETHTOOL_A_MM_STAT_TX_FRAG_COUNT = 6,
+	ETHTOOL_A_MM_STAT_HOLD_COUNT = 7,
+	__ETHTOOL_A_MM_STAT_CNT = 8,
+	ETHTOOL_A_MM_STAT_MAX = 7,
+};
+
+enum {
+	ETHTOOL_A_MM_UNSPEC = 0,
+	ETHTOOL_A_MM_HEADER = 1,
+	ETHTOOL_A_MM_PMAC_ENABLED = 2,
+	ETHTOOL_A_MM_TX_ENABLED = 3,
+	ETHTOOL_A_MM_TX_ACTIVE = 4,
+	ETHTOOL_A_MM_TX_MIN_FRAG_SIZE = 5,
+	ETHTOOL_A_MM_RX_MIN_FRAG_SIZE = 6,
+	ETHTOOL_A_MM_VERIFY_ENABLED = 7,
+	ETHTOOL_A_MM_VERIFY_STATUS = 8,
+	ETHTOOL_A_MM_VERIFY_TIME = 9,
+	ETHTOOL_A_MM_MAX_VERIFY_TIME = 10,
+	ETHTOOL_A_MM_STATS = 11,
+	__ETHTOOL_A_MM_CNT = 12,
+	ETHTOOL_A_MM_MAX = 11,
+};
+
+struct mm_reply_data {
+	struct ethnl_reply_data base;
+	struct ethtool_mm_state state;
+	struct ethtool_mm_stats stats;
+};
+
+enum {
+	ETHTOOL_A_MODULE_UNSPEC = 0,
+	ETHTOOL_A_MODULE_HEADER = 1,
+	ETHTOOL_A_MODULE_POWER_MODE_POLICY = 2,
+	ETHTOOL_A_MODULE_POWER_MODE = 3,
+	__ETHTOOL_A_MODULE_CNT = 4,
+	ETHTOOL_A_MODULE_MAX = 3,
+};
+
+struct module_reply_data {
+	struct ethnl_reply_data base;
+	struct ethtool_module_power_mode_params power;
+};
+
+enum ethtool_podl_pse_admin_state {
+	ETHTOOL_PODL_PSE_ADMIN_STATE_UNKNOWN = 1,
+	ETHTOOL_PODL_PSE_ADMIN_STATE_DISABLED = 2,
+	ETHTOOL_PODL_PSE_ADMIN_STATE_ENABLED = 3,
+};
+
+enum ethtool_podl_pse_pw_d_status {
+	ETHTOOL_PODL_PSE_PW_D_STATUS_UNKNOWN = 1,
+	ETHTOOL_PODL_PSE_PW_D_STATUS_DISABLED = 2,
+	ETHTOOL_PODL_PSE_PW_D_STATUS_SEARCHING = 3,
+	ETHTOOL_PODL_PSE_PW_D_STATUS_DELIVERING = 4,
+	ETHTOOL_PODL_PSE_PW_D_STATUS_SLEEP = 5,
+	ETHTOOL_PODL_PSE_PW_D_STATUS_IDLE = 6,
+	ETHTOOL_PODL_PSE_PW_D_STATUS_ERROR = 7,
+};
+
+enum {
+	ETHTOOL_A_PSE_UNSPEC = 0,
+	ETHTOOL_A_PSE_HEADER = 1,
+	ETHTOOL_A_PODL_PSE_ADMIN_STATE = 2,
+	ETHTOOL_A_PODL_PSE_ADMIN_CONTROL = 3,
+	ETHTOOL_A_PODL_PSE_PW_D_STATUS = 4,
+	__ETHTOOL_A_PSE_CNT = 5,
+	ETHTOOL_A_PSE_MAX = 4,
+};
+
+struct pse_control_status {
+	enum ethtool_podl_pse_admin_state podl_admin_state;
+	enum ethtool_podl_pse_pw_d_status podl_pw_status;
+};
+
+struct pse_reply_data {
+	struct ethnl_reply_data base;
+	struct pse_control_status status;
+};
+
+struct pse_control_config {
+	enum ethtool_podl_pse_admin_state admin_cotrol;
+};
+
+enum {
+	ETHTOOL_A_PLCA_UNSPEC = 0,
+	ETHTOOL_A_PLCA_HEADER = 1,
+	ETHTOOL_A_PLCA_VERSION = 2,
+	ETHTOOL_A_PLCA_ENABLED = 3,
+	ETHTOOL_A_PLCA_STATUS = 4,
+	ETHTOOL_A_PLCA_NODE_CNT = 5,
+	ETHTOOL_A_PLCA_NODE_ID = 6,
+	ETHTOOL_A_PLCA_TO_TMR = 7,
+	ETHTOOL_A_PLCA_BURST_CNT = 8,
+	ETHTOOL_A_PLCA_BURST_TMR = 9,
+	__ETHTOOL_A_PLCA_CNT = 10,
+	ETHTOOL_A_PLCA_MAX = 9,
+};
+
+struct plca_reply_data {
+	struct ethnl_reply_data base;
+	struct phy_plca_cfg plca_cfg;
+	struct phy_plca_status plca_st;
+};
+
+struct nf_conntrack_zone {
+	u16 id;
+	u8 flags;
+	u8 dir;
+};
+
+struct nf_queue_entry;
+
+struct nf_ipv6_ops {
+	void (*route_input)(struct sk_buff *);
+	int (*fragment)(struct net *, struct sock *, struct sk_buff *, int (*)(struct net *, struct sock *, struct sk_buff *));
+	int (*reroute)(struct sk_buff *, const struct nf_queue_entry *);
+	u64 android_kabi_reserved1;
+};
+
+struct nf_queue_entry {
+	struct list_head list;
+	struct sk_buff *skb;
+	unsigned int id;
+	unsigned int hook_index;
+	struct nf_hook_state state;
+	u16 size;
+};
+
+struct nfnl_ct_hook {
+	size_t (*build_size)(const struct nf_conn *);
+	int (*build)(struct sk_buff *, struct nf_conn *, enum ip_conntrack_info, u_int16_t, u_int16_t);
+	int (*parse)(const struct nlattr *, struct nf_conn *);
+	int (*attach_expect)(const struct nlattr *, struct nf_conn *, u32, u32);
+	void (*seq_adjust)(struct sk_buff *, struct nf_conn *, enum ip_conntrack_info, s32);
+	u64 android_kabi_reserved1;
+};
+
+struct nf_ct_hook {
+	int (*update)(struct net *, struct sk_buff *);
+	void (*destroy)(struct nf_conntrack *);
+	bool (*get_tuple_skb)(struct nf_conntrack_tuple *, const struct sk_buff *);
+	void (*attach)(struct sk_buff *, const struct sk_buff *);
+	void (*set_closing)(struct nf_conntrack *);
+	int (*confirm)(struct sk_buff *);
+};
+
+struct nf_defrag_hook {
+	struct module *owner;
+	int (*enable)(struct net *);
+	void (*disable)(struct net *);
+};
+
+enum nf_nat_manip_type {
+	NF_NAT_MANIP_SRC = 0,
+	NF_NAT_MANIP_DST = 1,
+};
+
+struct nf_nat_hook {
+	int (*parse_nat_setup)(struct nf_conn *, enum nf_nat_manip_type, const struct nlattr *);
+	void (*decode_session)(struct sk_buff *, struct flowi *);
+	unsigned int (*manip_pkt)(struct sk_buff *, struct nf_conn *, enum nf_nat_manip_type, enum ip_conntrack_dir);
+	void (*remove_nat_bysrc)(struct nf_conn *);
+	u64 android_kabi_reserved1;
+};
+
+struct nf_hook_entries_rcu_head {
+	struct callback_head head;
+	void *allocation;
+};
+
+struct nf_loginfo {
+	u_int8_t type;
+	union {
+		struct {
+			u_int32_t copy_len;
+			u_int16_t group;
+			u_int16_t qthreshold;
+			u_int16_t flags;
+		} ulog;
+		struct {
+			u_int8_t level;
+			u_int8_t logflags;
+		} log;
+	} u;
+};
+
+struct nf_log_buf {
+	unsigned int count;
+	char buf[1020];
+};
+
+struct nf_queue_handler {
+	int (*outfn)(struct nf_queue_entry *, unsigned int);
+	void (*nf_hook_drop)(struct net *);
+};
+
+struct ip_rt_info {
+	__be32 daddr;
+	__be32 saddr;
+	u_int8_t tos;
+	u_int32_t mark;
+};
+
+struct ip6_rt_info {
+	struct in6_addr daddr;
+	struct in6_addr saddr;
+	u_int32_t mark;
+};
+
+struct nf_sockopt_ops {
+	struct list_head list;
+	u_int8_t pf;
+	int set_optmin;
+	int set_optmax;
+	int (*set)(struct sock *, int, sockptr_t, unsigned int);
+	int get_optmin;
+	int get_optmax;
+	int (*get)(struct sock *, int, void __attribute__((btf_type_tag("user"))) *, int *);
+	struct module *owner;
+	u64 android_kabi_reserved1;
+};
+
+enum nf_ip_hook_priorities {
+	NF_IP_PRI_FIRST = -2147483648,
+	NF_IP_PRI_RAW_BEFORE_DEFRAG = -450,
+	NF_IP_PRI_CONNTRACK_DEFRAG = -400,
+	NF_IP_PRI_RAW = -300,
+	NF_IP_PRI_SELINUX_FIRST = -225,
+	NF_IP_PRI_CONNTRACK = -200,
+	NF_IP_PRI_MANGLE = -150,
+	NF_IP_PRI_NAT_DST = -100,
+	NF_IP_PRI_FILTER = 0,
+	NF_IP_PRI_SECURITY = 50,
+	NF_IP_PRI_NAT_SRC = 100,
+	NF_IP_PRI_SELINUX_LAST = 225,
+	NF_IP_PRI_CONNTRACK_HELPER = 300,
+	NF_IP_PRI_CONNTRACK_CONFIRM = 2147483647,
+	NF_IP_PRI_LAST = 2147483647,
+};
+
+struct bpf_nf_link {
+	struct bpf_link link;
+	struct nf_hook_ops hook_ops;
+	struct net *net;
+	u32 dead;
+	const struct nf_defrag_hook *defrag_hook;
+};
+
+enum nfnl_abort_action {
+	NFNL_ABORT_NONE = 0,
+	NFNL_ABORT_AUTOLOAD = 1,
+	NFNL_ABORT_VALIDATE = 2,
+};
+
+struct nfnl_callback;
+
+struct nfnetlink_subsystem {
+	const char *name;
+	__u8 subsys_id;
+	__u8 cb_count;
+	const struct nfnl_callback *cb;
+	struct module *owner;
+	int (*commit)(struct net *, struct sk_buff *);
+	int (*abort)(struct net *, struct sk_buff *, enum nfnl_abort_action);
+	bool (*valid_genid)(struct net *, u32);
+	u64 android_kabi_reserved1;
+};
+
+enum nfnl_callback_type {
+	NFNL_CB_UNSPEC = 0,
+	NFNL_CB_MUTEX = 1,
+	NFNL_CB_RCU = 2,
+	NFNL_CB_BATCH = 3,
+};
+
+struct nfnl_info;
+
+struct nfnl_callback {
+	int (*call)(struct sk_buff *, const struct nfnl_info *, const struct nlattr * const *);
+	const struct nla_policy *policy;
+	enum nfnl_callback_type type;
+	__u16 attr_count;
+	u64 android_kabi_reserved1;
+};
+
+struct nfgenmsg;
+
+struct nfnl_info {
+	struct net *net;
+	struct sock *sk;
+	const struct nlmsghdr *nlh;
+	const struct nfgenmsg *nfmsg;
+	struct netlink_ext_ack *extack;
+};
+
+struct nfgenmsg {
+	__u8 nfgen_family;
+	__u8 version;
+	__be16 res_id;
+};
+
+enum nfnl_batch_attributes {
+	NFNL_BATCH_UNSPEC = 0,
+	NFNL_BATCH_GENID = 1,
+	__NFNL_BATCH_MAX = 2,
+};
+
+enum {
+	NFNL_BATCH_FAILURE = 1,
+	NFNL_BATCH_DONE = 2,
+	NFNL_BATCH_REPLAY = 4,
+};
+
+enum nfnetlink_groups {
+	NFNLGRP_NONE = 0,
+	NFNLGRP_CONNTRACK_NEW = 1,
+	NFNLGRP_CONNTRACK_UPDATE = 2,
+	NFNLGRP_CONNTRACK_DESTROY = 3,
+	NFNLGRP_CONNTRACK_EXP_NEW = 4,
+	NFNLGRP_CONNTRACK_EXP_UPDATE = 5,
+	NFNLGRP_CONNTRACK_EXP_DESTROY = 6,
+	NFNLGRP_NFTABLES = 7,
+	NFNLGRP_ACCT_QUOTA = 8,
+	NFNLGRP_NFTRACE = 9,
+	__NFNLGRP_MAX = 10,
+};
+
+struct nfnl_err {
+	struct list_head head;
+	struct nlmsghdr *nlh;
+	int err;
+	struct netlink_ext_ack extack;
+};
+
+struct nfnl_net {
+	struct sock *nfnl;
+};
+
+enum nfqnl_attr_type {
+	NFQA_UNSPEC = 0,
+	NFQA_PACKET_HDR = 1,
+	NFQA_VERDICT_HDR = 2,
+	NFQA_MARK = 3,
+	NFQA_TIMESTAMP = 4,
+	NFQA_IFINDEX_INDEV = 5,
+	NFQA_IFINDEX_OUTDEV = 6,
+	NFQA_IFINDEX_PHYSINDEV = 7,
+	NFQA_IFINDEX_PHYSOUTDEV = 8,
+	NFQA_HWADDR = 9,
+	NFQA_PAYLOAD = 10,
+	NFQA_CT = 11,
+	NFQA_CT_INFO = 12,
+	NFQA_CAP_LEN = 13,
+	NFQA_SKB_INFO = 14,
+	NFQA_EXP = 15,
+	NFQA_UID = 16,
+	NFQA_GID = 17,
+	NFQA_SECCTX = 18,
+	NFQA_VLAN = 19,
+	NFQA_L2HDR = 20,
+	NFQA_PRIORITY = 21,
+	NFQA_CGROUP_CLASSID = 22,
+	__NFQA_MAX = 23,
+};
+
+enum nfqnl_vlan_attr {
+	NFQA_VLAN_UNSPEC = 0,
+	NFQA_VLAN_PROTO = 1,
+	NFQA_VLAN_TCI = 2,
+	__NFQA_VLAN_MAX = 3,
+};
+
+enum nfqnl_attr_config {
+	NFQA_CFG_UNSPEC = 0,
+	NFQA_CFG_CMD = 1,
+	NFQA_CFG_PARAMS = 2,
+	NFQA_CFG_QUEUE_MAXLEN = 3,
+	NFQA_CFG_MASK = 4,
+	NFQA_CFG_FLAGS = 5,
+	__NFQA_CFG_MAX = 6,
+};
+
+enum nfqnl_msg_config_cmds {
+	NFQNL_CFG_CMD_NONE = 0,
+	NFQNL_CFG_CMD_BIND = 1,
+	NFQNL_CFG_CMD_UNBIND = 2,
+	NFQNL_CFG_CMD_PF_BIND = 3,
+	NFQNL_CFG_CMD_PF_UNBIND = 4,
+};
+
+enum nfqnl_config_mode {
+	NFQNL_COPY_NONE = 0,
+	NFQNL_COPY_META = 1,
+	NFQNL_COPY_PACKET = 2,
+};
+
+enum nfqnl_msg_types {
+	NFQNL_MSG_PACKET = 0,
+	NFQNL_MSG_VERDICT = 1,
+	NFQNL_MSG_CONFIG = 2,
+	NFQNL_MSG_VERDICT_BATCH = 3,
+	NFQNL_MSG_MAX = 4,
+};
+
+enum ip_conntrack_status {
+	IPS_EXPECTED_BIT = 0,
+	IPS_EXPECTED = 1,
+	IPS_SEEN_REPLY_BIT = 1,
+	IPS_SEEN_REPLY = 2,
+	IPS_ASSURED_BIT = 2,
+	IPS_ASSURED = 4,
+	IPS_CONFIRMED_BIT = 3,
+	IPS_CONFIRMED = 8,
+	IPS_SRC_NAT_BIT = 4,
+	IPS_SRC_NAT = 16,
+	IPS_DST_NAT_BIT = 5,
+	IPS_DST_NAT = 32,
+	IPS_NAT_MASK = 48,
+	IPS_SEQ_ADJUST_BIT = 6,
+	IPS_SEQ_ADJUST = 64,
+	IPS_SRC_NAT_DONE_BIT = 7,
+	IPS_SRC_NAT_DONE = 128,
+	IPS_DST_NAT_DONE_BIT = 8,
+	IPS_DST_NAT_DONE = 256,
+	IPS_NAT_DONE_MASK = 384,
+	IPS_DYING_BIT = 9,
+	IPS_DYING = 512,
+	IPS_FIXED_TIMEOUT_BIT = 10,
+	IPS_FIXED_TIMEOUT = 1024,
+	IPS_TEMPLATE_BIT = 11,
+	IPS_TEMPLATE = 2048,
+	IPS_UNTRACKED_BIT = 12,
+	IPS_UNTRACKED = 4096,
+	IPS_NAT_CLASH_BIT = 12,
+	IPS_NAT_CLASH = 4096,
+	IPS_HELPER_BIT = 13,
+	IPS_HELPER = 8192,
+	IPS_OFFLOAD_BIT = 14,
+	IPS_OFFLOAD = 16384,
+	IPS_HW_OFFLOAD_BIT = 15,
+	IPS_HW_OFFLOAD = 32768,
+	IPS_UNCHANGEABLE_MASK = 56313,
+	__IPS_MAX_BIT = 16,
+};
+
+struct nfqnl_instance {
+	struct hlist_node hlist;
+	struct callback_head rcu;
+	u32 peer_portid;
+	unsigned int queue_maxlen;
+	unsigned int copy_range;
+	unsigned int queue_dropped;
+	unsigned int queue_user_dropped;
+	u_int16_t queue_num;
+	u_int8_t copy_mode;
+	u_int32_t flags;
+	long: 0;
+	spinlock_t lock;
+	unsigned int queue_total;
+	unsigned int id_sequence;
+	struct list_head queue_list;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct nfnl_queue_net {
+	spinlock_t instances_lock;
+	struct hlist_head instance_table[16];
+};
+
+typedef int (*nfqnl_cmpfn)(struct nf_queue_entry *, unsigned long);
+
+struct nfqnl_msg_verdict_hdr {
+	__be32 verdict;
+	__be32 id;
+};
+
+struct iter_state {
+	struct seq_net_private p;
+	unsigned int bucket;
+};
+
+struct nfqnl_msg_packet_hdr {
+	__be32 packet_id;
+	__be16 hw_protocol;
+	__u8 hook;
+} __attribute__((packed));
+
+struct nfqnl_msg_packet_hw {
+	__be16 hw_addrlen;
+	__u16 _pad;
+	__u8 hw_addr[8];
+};
+
+struct nfqnl_msg_packet_timestamp {
+	__be64 sec;
+	__be64 usec;
+};
+
+struct nfqnl_msg_config_cmd {
+	__u8 command;
+	__u8 _pad;
+	__be16 pf;
+};
+
+struct nfqnl_msg_config_params {
+	__be32 copy_range;
+	__u8 copy_mode;
+} __attribute__((packed));
+
+enum nfulnl_attr_config {
+	NFULA_CFG_UNSPEC = 0,
+	NFULA_CFG_CMD = 1,
+	NFULA_CFG_MODE = 2,
+	NFULA_CFG_NLBUFSIZ = 3,
+	NFULA_CFG_TIMEOUT = 4,
+	NFULA_CFG_QTHRESH = 5,
+	NFULA_CFG_FLAGS = 6,
+	__NFULA_CFG_MAX = 7,
+};
+
+enum nfulnl_msg_config_cmds {
+	NFULNL_CFG_CMD_NONE = 0,
+	NFULNL_CFG_CMD_BIND = 1,
+	NFULNL_CFG_CMD_UNBIND = 2,
+	NFULNL_CFG_CMD_PF_BIND = 3,
+	NFULNL_CFG_CMD_PF_UNBIND = 4,
+};
+
+enum nfulnl_msg_types {
+	NFULNL_MSG_PACKET = 0,
+	NFULNL_MSG_CONFIG = 1,
+	NFULNL_MSG_MAX = 2,
+};
+
+enum nfulnl_attr_type {
+	NFULA_UNSPEC = 0,
+	NFULA_PACKET_HDR = 1,
+	NFULA_MARK = 2,
+	NFULA_TIMESTAMP = 3,
+	NFULA_IFINDEX_INDEV = 4,
+	NFULA_IFINDEX_OUTDEV = 5,
+	NFULA_IFINDEX_PHYSINDEV = 6,
+	NFULA_IFINDEX_PHYSOUTDEV = 7,
+	NFULA_HWADDR = 8,
+	NFULA_PAYLOAD = 9,
+	NFULA_PREFIX = 10,
+	NFULA_UID = 11,
+	NFULA_SEQ = 12,
+	NFULA_SEQ_GLOBAL = 13,
+	NFULA_GID = 14,
+	NFULA_HWTYPE = 15,
+	NFULA_HWHEADER = 16,
+	NFULA_HWLEN = 17,
+	NFULA_CT = 18,
+	NFULA_CT_INFO = 19,
+	NFULA_VLAN = 20,
+	NFULA_L2HDR = 21,
+	__NFULA_MAX = 22,
+};
+
+enum nfulnl_vlan_attr {
+	NFULA_VLAN_UNSPEC = 0,
+	NFULA_VLAN_PROTO = 1,
+	NFULA_VLAN_TCI = 2,
+	__NFULA_VLAN_MAX = 3,
+};
+
+struct nfulnl_instance {
+	struct hlist_node hlist;
+	spinlock_t lock;
+	refcount_t use;
+	unsigned int qlen;
+	struct sk_buff *skb;
+	struct timer_list timer;
+	struct net *net;
+	netns_tracker ns_tracker;
+	struct user_namespace *peer_user_ns;
+	u32 peer_portid;
+	unsigned int flushtimeout;
+	unsigned int nlbufsiz;
+	unsigned int qthreshold;
+	u_int32_t copy_range;
+	u_int32_t seq;
+	u_int16_t group_num;
+	u_int16_t flags;
+	u_int8_t copy_mode;
+	struct callback_head rcu;
+};
+
+struct nfnl_log_net {
+	spinlock_t instances_lock;
+	struct hlist_head instance_table[16];
+	atomic_t global_seq;
+};
+
+struct nfulnl_msg_packet_hdr {
+	__be16 hw_protocol;
+	__u8 hook;
+	__u8 _pad;
+};
+
+struct nfulnl_msg_packet_hw {
+	__be16 hw_addrlen;
+	__u16 _pad;
+	__u8 hw_addr[8];
+};
+
+struct nfulnl_msg_packet_timestamp {
+	__be64 sec;
+	__be64 usec;
+};
+
+struct nfulnl_msg_config_cmd {
+	__u8 command;
+};
+
+struct nfulnl_msg_config_mode {
+	__be32 copy_range;
+	__u8 copy_mode;
+	__u8 _pad;
+} __attribute__((packed));
+
+struct conntrack_gc_work {
+	struct delayed_work dwork;
+	u32 next_bucket;
+	u32 avg_timeout;
+	u32 count;
+	u32 start_time;
+	bool exiting;
+	bool early_drop;
+};
+
+struct nf_conntrack_expect_policy;
+
+struct nf_conntrack_helper {
+	struct hlist_node hnode;
+	char name[16];
+	refcount_t refcnt;
+	struct module *me;
+	const struct nf_conntrack_expect_policy *expect_policy;
+	struct nf_conntrack_tuple tuple;
+	int (*help)(struct sk_buff *, unsigned int, struct nf_conn *, enum ip_conntrack_info);
+	void (*destroy)(struct nf_conn *);
+	int (*from_nlattr)(struct nlattr *, struct nf_conn *);
+	int (*to_nlattr)(struct sk_buff *, const struct nf_conn *);
+	unsigned int expect_class_max;
+	unsigned int flags;
+	unsigned int queue_num;
+	u16 data_len;
+	char nat_mod_name[16];
+};
+
+struct nf_conntrack_expect_policy {
+	unsigned int max_expected;
+	unsigned int timeout;
+	char name[16];
+};
+
+enum ip_conntrack_events {
+	IPCT_NEW = 0,
+	IPCT_RELATED = 1,
+	IPCT_DESTROY = 2,
+	IPCT_REPLY = 3,
+	IPCT_ASSURED = 4,
+	IPCT_PROTOINFO = 5,
+	IPCT_HELPER = 6,
+	IPCT_MARK = 7,
+	IPCT_SEQADJ = 8,
+	IPCT_NATSEQADJ = 8,
+	IPCT_SECMARK = 9,
+	IPCT_LABEL = 10,
+	IPCT_SYNPROXY = 11,
+	__IPCT_MAX = 12,
+};
+
+enum nf_ct_ecache_state {
+	NFCT_ECACHE_DESTROY_FAIL = 0,
+	NFCT_ECACHE_DESTROY_SENT = 1,
+};
+
+enum ctattr_l4proto {
+	CTA_PROTO_UNSPEC = 0,
+	CTA_PROTO_NUM = 1,
+	CTA_PROTO_SRC_PORT = 2,
+	CTA_PROTO_DST_PORT = 3,
+	CTA_PROTO_ICMP_ID = 4,
+	CTA_PROTO_ICMP_TYPE = 5,
+	CTA_PROTO_ICMP_CODE = 6,
+	CTA_PROTO_ICMPV6_ID = 7,
+	CTA_PROTO_ICMPV6_TYPE = 8,
+	CTA_PROTO_ICMPV6_CODE = 9,
+	__CTA_PROTO_MAX = 10,
+};
+
+enum nf_ct_ext_id {
+	NF_CT_EXT_HELPER = 0,
+	NF_CT_EXT_NAT = 1,
+	NF_CT_EXT_SEQADJ = 2,
+	NF_CT_EXT_ACCT = 3,
+	NF_CT_EXT_ECACHE = 4,
+	NF_CT_EXT_NUM = 5,
+};
+
+enum nf_ct_helper_flags {
+	NF_CT_HELPER_F_USERSPACE = 1,
+	NF_CT_HELPER_F_CONFIGURED = 2,
+};
+
+struct nf_conntrack_l4proto;
+
+struct nf_ct_timeout {
+	__u16 l3num;
+	const struct nf_conntrack_l4proto *l4proto;
+	char data[0];
+};
+
+struct nf_conntrack_l4proto {
+	u_int8_t l4proto;
+	bool allow_clash;
+	u16 nlattr_size;
+	bool (*can_early_drop)(const struct nf_conn *);
+	int (*to_nlattr)(struct sk_buff *, struct nlattr *, struct nf_conn *, bool);
+	int (*from_nlattr)(struct nlattr **, struct nf_conn *);
+	int (*tuple_to_nlattr)(struct sk_buff *, const struct nf_conntrack_tuple *);
+	unsigned int (*nlattr_tuple_size)();
+	int (*nlattr_to_tuple)(struct nlattr **, struct nf_conntrack_tuple *, u_int32_t);
+	const struct nla_policy *nla_policy;
+	struct {
+		int (*nlattr_to_obj)(struct nlattr **, struct net *, void *);
+		int (*obj_to_nlattr)(struct sk_buff *, const void *);
+		u16 obj_size;
+		u16 nlattr_max;
+		const struct nla_policy *nla_policy;
+	} ctnl_timeout;
+	void (*print_conntrack)(struct seq_file *, struct nf_conn *);
+};
+
+struct nf_conntrack_net_ecache {
+	struct delayed_work dwork;
+	spinlock_t dying_lock;
+	struct hlist_nulls_head dying_list;
+};
+
+struct nf_conntrack_net {
+	atomic_t count;
+	unsigned int expect_count;
+	unsigned int users4;
+	unsigned int users6;
+	unsigned int users_bridge;
+	struct ctl_table_header *sysctl_header;
+	struct nf_conntrack_net_ecache ecache;
+};
+
+struct nf_conn_counter {
+	atomic64_t packets;
+	atomic64_t bytes;
+};
+
+struct nf_conn_acct {
+	struct nf_conn_counter counter[2];
+};
+
+struct nf_conn_tstamp {
+	u_int64_t start;
+	u_int64_t stop;
+};
+
+struct nf_conn_help {
+	struct nf_conntrack_helper __attribute__((btf_type_tag("rcu"))) *helper;
+	struct hlist_head expectations;
+	u8 expecting[4];
+	long: 0;
+	char data[32];
+};
+
+struct nf_conntrack_ecache {
+	unsigned long cache;
+	u16 ctmask;
+	u16 expmask;
+	u32 missed;
+	u32 portid;
+};
+
+struct nf_ct_iter_data {
+	struct net *net;
+	void *data;
+	u32 portid;
+	int report;
+};
+
+struct nf_conn_timeout {
+	struct nf_ct_timeout __attribute__((btf_type_tag("rcu"))) *timeout;
+};
+
+enum nf_ct_sysctl_index {
+	NF_SYSCTL_CT_MAX = 0,
+	NF_SYSCTL_CT_COUNT = 1,
+	NF_SYSCTL_CT_BUCKETS = 2,
+	NF_SYSCTL_CT_CHECKSUM = 3,
+	NF_SYSCTL_CT_LOG_INVALID = 4,
+	NF_SYSCTL_CT_EXPECT_MAX = 5,
+	NF_SYSCTL_CT_ACCT = 6,
+	NF_SYSCTL_CT_EVENTS = 7,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_GENERIC = 8,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_TCP_SYN_SENT = 9,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_TCP_SYN_RECV = 10,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_TCP_ESTABLISHED = 11,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_TCP_FIN_WAIT = 12,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_TCP_CLOSE_WAIT = 13,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_TCP_LAST_ACK = 14,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_TCP_TIME_WAIT = 15,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_TCP_CLOSE = 16,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_TCP_RETRANS = 17,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_TCP_UNACK = 18,
+	NF_SYSCTL_CT_PROTO_TCP_LOOSE = 19,
+	NF_SYSCTL_CT_PROTO_TCP_LIBERAL = 20,
+	NF_SYSCTL_CT_PROTO_TCP_IGNORE_INVALID_RST = 21,
+	NF_SYSCTL_CT_PROTO_TCP_MAX_RETRANS = 22,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_UDP = 23,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_UDP_STREAM = 24,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_ICMP = 25,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_ICMPV6 = 26,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_SCTP_CLOSED = 27,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_SCTP_COOKIE_WAIT = 28,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_SCTP_COOKIE_ECHOED = 29,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_SCTP_ESTABLISHED = 30,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_SCTP_SHUTDOWN_SENT = 31,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_SCTP_SHUTDOWN_RECD = 32,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_SCTP_SHUTDOWN_ACK_SENT = 33,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_SCTP_HEARTBEAT_SENT = 34,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_DCCP_REQUEST = 35,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_DCCP_RESPOND = 36,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_DCCP_PARTOPEN = 37,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_DCCP_OPEN = 38,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_DCCP_CLOSEREQ = 39,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_DCCP_CLOSING = 40,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_DCCP_TIMEWAIT = 41,
+	NF_SYSCTL_CT_PROTO_DCCP_LOOSE = 42,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_GRE = 43,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_GRE_STREAM = 44,
+	__NF_SYSCTL_CT_LAST_SYSCTL = 45,
+};
+
+enum udp_conntrack {
+	UDP_CT_UNREPLIED = 0,
+	UDP_CT_REPLIED = 1,
+	UDP_CT_MAX = 2,
+};
+
+enum tcp_conntrack {
+	TCP_CONNTRACK_NONE = 0,
+	TCP_CONNTRACK_SYN_SENT = 1,
+	TCP_CONNTRACK_SYN_RECV = 2,
+	TCP_CONNTRACK_ESTABLISHED = 3,
+	TCP_CONNTRACK_FIN_WAIT = 4,
+	TCP_CONNTRACK_CLOSE_WAIT = 5,
+	TCP_CONNTRACK_LAST_ACK = 6,
+	TCP_CONNTRACK_TIME_WAIT = 7,
+	TCP_CONNTRACK_CLOSE = 8,
+	TCP_CONNTRACK_LISTEN = 9,
+	TCP_CONNTRACK_MAX = 10,
+	TCP_CONNTRACK_IGNORE = 11,
+	TCP_CONNTRACK_RETRANS = 12,
+	TCP_CONNTRACK_UNACK = 13,
+	TCP_CONNTRACK_TIMEOUT_MAX = 14,
+};
+
+enum ct_dccp_states {
+	CT_DCCP_NONE = 0,
+	CT_DCCP_REQUEST = 1,
+	CT_DCCP_RESPOND = 2,
+	CT_DCCP_PARTOPEN = 3,
+	CT_DCCP_OPEN = 4,
+	CT_DCCP_CLOSEREQ = 5,
+	CT_DCCP_CLOSING = 6,
+	CT_DCCP_TIMEWAIT = 7,
+	CT_DCCP_IGNORE = 8,
+	CT_DCCP_INVALID = 9,
+	__CT_DCCP_MAX = 10,
+};
+
+enum gre_conntrack {
+	GRE_CT_UNREPLIED = 0,
+	GRE_CT_REPLIED = 1,
+	GRE_CT_MAX = 2,
+};
+
+struct ct_iter_state {
+	struct seq_net_private p;
+	struct hlist_nulls_head *hash;
+	unsigned int htable_size;
+	unsigned int bucket;
+	u_int64_t time_now;
+};
+
+enum ip_conntrack_expect_events {
+	IPEXP_NEW = 0,
+	IPEXP_DESTROY = 1,
+};
+
+struct ct_expect_iter_state {
+	struct seq_net_private p;
+	unsigned int bucket;
+};
+
+struct nf_ct_helper_expectfn {
+	struct list_head head;
+	const char *name;
+	void (*expectfn)(struct nf_conn *, struct nf_conntrack_expect *);
+};
+
+struct nf_conntrack_nat_helper {
+	struct list_head list;
+	char mod_name[16];
+	struct module *module;
+};
+
+struct nf_ct_bridge_info {
+	struct nf_hook_ops *ops;
+	unsigned int ops_size;
+	struct module *me;
+};
+
+enum nf_ct_tcp_action {
+	NFCT_TCP_IGNORE = 0,
+	NFCT_TCP_INVALID = 1,
+	NFCT_TCP_ACCEPT = 2,
+};
+
+enum tcp_bit_set {
+	TCP_SYN_SET = 0,
+	TCP_SYNACK_SET = 1,
+	TCP_FIN_SET = 2,
+	TCP_ACK_SET = 3,
+	TCP_RST_SET = 4,
+	TCP_NONE_SET = 5,
+};
+
+enum {
+	TCP_FLAG_CWR = 32768,
+	TCP_FLAG_ECE = 16384,
+	TCP_FLAG_URG = 8192,
+	TCP_FLAG_ACK = 4096,
+	TCP_FLAG_PSH = 2048,
+	TCP_FLAG_RST = 1024,
+	TCP_FLAG_SYN = 512,
+	TCP_FLAG_FIN = 256,
+	TCP_RESERVED_BITS = 15,
+	TCP_DATA_OFFSET = 240,
+};
+
+enum ctattr_protoinfo {
+	CTA_PROTOINFO_UNSPEC = 0,
+	CTA_PROTOINFO_TCP = 1,
+	CTA_PROTOINFO_DCCP = 2,
+	CTA_PROTOINFO_SCTP = 3,
+	__CTA_PROTOINFO_MAX = 4,
+};
+
+enum ctattr_protoinfo_tcp {
+	CTA_PROTOINFO_TCP_UNSPEC = 0,
+	CTA_PROTOINFO_TCP_STATE = 1,
+	CTA_PROTOINFO_TCP_WSCALE_ORIGINAL = 2,
+	CTA_PROTOINFO_TCP_WSCALE_REPLY = 3,
+	CTA_PROTOINFO_TCP_FLAGS_ORIGINAL = 4,
+	CTA_PROTOINFO_TCP_FLAGS_REPLY = 5,
+	__CTA_PROTOINFO_TCP_MAX = 6,
+};
+
+struct nf_ct_tcp_flags {
+	__u8 flags;
+	__u8 mask;
+};
+
+struct nf_ct_seqadj {
+	u32 correction_pos;
+	s32 offset_before;
+	s32 offset_after;
+};
+
+struct nf_conn_seqadj {
+	struct nf_ct_seqadj seq[2];
+};
+
+struct tcp_sack_block_wire {
+	__be32 start_seq;
+	__be32 end_seq;
+};
+
+struct icmpv6_echo {
+	__be16 identifier;
+	__be16 sequence;
+};
+
+struct icmpv6_nd_advt {
+	__u32 reserved: 5;
+	__u32 override: 1;
+	__u32 solicited: 1;
+	__u32 router: 1;
+	__u32 reserved2: 24;
+};
+
+struct icmpv6_nd_ra {
+	__u8 hop_limit;
+	__u8 reserved: 3;
+	__u8 router_pref: 2;
+	__u8 home_agent: 1;
+	__u8 other: 1;
+	__u8 managed: 1;
+	__be16 rt_lifetime;
+};
+
+struct icmp6hdr {
+	__u8 icmp6_type;
+	__u8 icmp6_code;
+	__sum16 icmp6_cksum;
+	union {
+		__be32 un_data32[1];
+		__be16 un_data16[2];
+		__u8 un_data8[4];
+		struct icmpv6_echo u_echo;
+		struct icmpv6_nd_advt u_nd_advt;
+		struct icmpv6_nd_ra u_nd_ra;
+	} icmp6_dataun;
+};
+
+struct rd_msg {
+	struct icmp6hdr icmph;
+	struct in6_addr target;
+	struct in6_addr dest;
+	__u8 opt[0];
+};
+
+enum {
+	__ND_OPT_PREFIX_INFO_END = 0,
+	ND_OPT_SOURCE_LL_ADDR = 1,
+	ND_OPT_TARGET_LL_ADDR = 2,
+	ND_OPT_PREFIX_INFO = 3,
+	ND_OPT_REDIRECT_HDR = 4,
+	ND_OPT_MTU = 5,
+	ND_OPT_NONCE = 14,
+	__ND_OPT_ARRAY_MAX = 15,
+	ND_OPT_ROUTE_INFO = 24,
+	ND_OPT_RDNSS = 25,
+	ND_OPT_DNSSL = 31,
+	ND_OPT_6CO = 34,
+	ND_OPT_CAPTIVE_PORTAL = 37,
+	ND_OPT_PREF64 = 38,
+	__ND_OPT_MAX = 39,
+};
+
+enum retry_state {
+	STATE_CONGESTED = 0,
+	STATE_RESTART = 1,
+	STATE_DONE = 2,
+};
+
+enum ct_dccp_roles {
+	CT_DCCP_ROLE_CLIENT = 0,
+	CT_DCCP_ROLE_SERVER = 1,
+	__CT_DCCP_ROLE_MAX = 2,
+};
+
+enum dccp_pkt_type {
+	DCCP_PKT_REQUEST = 0,
+	DCCP_PKT_RESPONSE = 1,
+	DCCP_PKT_DATA = 2,
+	DCCP_PKT_ACK = 3,
+	DCCP_PKT_DATAACK = 4,
+	DCCP_PKT_CLOSEREQ = 5,
+	DCCP_PKT_CLOSE = 6,
+	DCCP_PKT_RESET = 7,
+	DCCP_PKT_SYNC = 8,
+	DCCP_PKT_SYNCACK = 9,
+	DCCP_PKT_INVALID = 10,
+};
+
+enum ctattr_protoinfo_dccp {
+	CTA_PROTOINFO_DCCP_UNSPEC = 0,
+	CTA_PROTOINFO_DCCP_STATE = 1,
+	CTA_PROTOINFO_DCCP_ROLE = 2,
+	CTA_PROTOINFO_DCCP_HANDSHAKE_SEQ = 3,
+	CTA_PROTOINFO_DCCP_PAD = 4,
+	__CTA_PROTOINFO_DCCP_MAX = 5,
+};
+
+struct dccp_hdr_ext {
+	__be32 dccph_seq_low;
+};
+
+struct dccp_hdr_ack_bits {
+	__be16 dccph_reserved1;
+	__be16 dccph_ack_nr_high;
+	__be32 dccph_ack_nr_low;
+};
+
+struct dccp_hdr_request {
+	__be32 dccph_req_service;
+};
+
+struct dccp_hdr_response {
+	struct dccp_hdr_ack_bits dccph_resp_ack;
+	__be32 dccph_resp_service;
+};
+
+struct dccp_hdr_reset {
+	struct dccp_hdr_ack_bits dccph_reset_ack;
+	__u8 dccph_reset_code;
+	__u8 dccph_reset_data[3];
+};
+
+struct nf_conntrack_dccp_buf {
+	struct dccp_hdr dh;
+	struct dccp_hdr_ext ext;
+	union {
+		struct dccp_hdr_ack_bits ack;
+		struct dccp_hdr_request req;
+		struct dccp_hdr_response response;
+		struct dccp_hdr_reset rst;
+	} u;
+};
+
+enum sctp_cid {
+	SCTP_CID_DATA = 0,
+	SCTP_CID_INIT = 1,
+	SCTP_CID_INIT_ACK = 2,
+	SCTP_CID_SACK = 3,
+	SCTP_CID_HEARTBEAT = 4,
+	SCTP_CID_HEARTBEAT_ACK = 5,
+	SCTP_CID_ABORT = 6,
+	SCTP_CID_SHUTDOWN = 7,
+	SCTP_CID_SHUTDOWN_ACK = 8,
+	SCTP_CID_ERROR = 9,
+	SCTP_CID_COOKIE_ECHO = 10,
+	SCTP_CID_COOKIE_ACK = 11,
+	SCTP_CID_ECN_ECNE = 12,
+	SCTP_CID_ECN_CWR = 13,
+	SCTP_CID_SHUTDOWN_COMPLETE = 14,
+	SCTP_CID_AUTH = 15,
+	SCTP_CID_I_DATA = 64,
+	SCTP_CID_FWD_TSN = 192,
+	SCTP_CID_ASCONF = 193,
+	SCTP_CID_I_FWD_TSN = 194,
+	SCTP_CID_ASCONF_ACK = 128,
+	SCTP_CID_RECONF = 130,
+	SCTP_CID_PAD = 132,
+};
+
+enum {
+	SCTP_CHUNK_FLAG_T = 1,
+};
+
+enum ctattr_protoinfo_sctp {
+	CTA_PROTOINFO_SCTP_UNSPEC = 0,
+	CTA_PROTOINFO_SCTP_STATE = 1,
+	CTA_PROTOINFO_SCTP_VTAG_ORIGINAL = 2,
+	CTA_PROTOINFO_SCTP_VTAG_REPLY = 3,
+	__CTA_PROTOINFO_SCTP_MAX = 4,
+};
+
+enum pptp_ctrlsess_state {
+	PPTP_SESSION_NONE = 0,
+	PPTP_SESSION_ERROR = 1,
+	PPTP_SESSION_STOPREQ = 2,
+	PPTP_SESSION_REQUESTED = 3,
+	PPTP_SESSION_CONFIRMED = 4,
+};
+
+enum pptp_ctrlcall_state {
+	PPTP_CALL_NONE = 0,
+	PPTP_CALL_ERROR = 1,
+	PPTP_CALL_OUT_REQ = 2,
+	PPTP_CALL_OUT_CONF = 3,
+	PPTP_CALL_IN_REQ = 4,
+	PPTP_CALL_IN_REP = 5,
+	PPTP_CALL_IN_CONF = 6,
+	PPTP_CALL_CLEAR_REQ = 7,
+};
+
+struct nf_ct_gre_keymap {
+	struct list_head list;
+	struct nf_conntrack_tuple tuple;
+	struct callback_head rcu;
+};
+
+struct nf_ct_pptp_master {
+	enum pptp_ctrlsess_state sstate;
+	enum pptp_ctrlcall_state cstate;
+	__be16 pac_call_id;
+	__be16 pns_call_id;
+	struct nf_ct_gre_keymap *keymap[2];
+};
+
+struct pptp_gre_header {
+	struct gre_base_hdr gre_hd;
+	__be16 payload_len;
+	__be16 call_id;
+	__be32 seq;
+	__be32 ack;
+};
+
+enum {
+	NF_BPF_CT_OPTS_SZ = 12,
+};
+
+enum {
+	BPF_F_CURRENT_NETNS = -1,
+};
+
+struct nf_conn___init {
+	struct nf_conn ct;
+};
+
+struct bpf_ct_opts {
+	s32 netns_id;
+	s32 error;
+	u8 l4proto;
+	u8 dir;
+	u8 reserved[2];
+};
+
+enum cntl_msg_types {
+	IPCTNL_MSG_CT_NEW = 0,
+	IPCTNL_MSG_CT_GET = 1,
+	IPCTNL_MSG_CT_DELETE = 2,
+	IPCTNL_MSG_CT_GET_CTRZERO = 3,
+	IPCTNL_MSG_CT_GET_STATS_CPU = 4,
+	IPCTNL_MSG_CT_GET_STATS = 5,
+	IPCTNL_MSG_CT_GET_DYING = 6,
+	IPCTNL_MSG_CT_GET_UNCONFIRMED = 7,
+	IPCTNL_MSG_MAX = 8,
+};
+
+enum ctattr_type {
+	CTA_UNSPEC = 0,
+	CTA_TUPLE_ORIG = 1,
+	CTA_TUPLE_REPLY = 2,
+	CTA_STATUS = 3,
+	CTA_PROTOINFO = 4,
+	CTA_HELP = 5,
+	CTA_NAT_SRC = 6,
+	CTA_TIMEOUT = 7,
+	CTA_MARK = 8,
+	CTA_COUNTERS_ORIG = 9,
+	CTA_COUNTERS_REPLY = 10,
+	CTA_USE = 11,
+	CTA_ID = 12,
+	CTA_NAT_DST = 13,
+	CTA_TUPLE_MASTER = 14,
+	CTA_SEQ_ADJ_ORIG = 15,
+	CTA_NAT_SEQ_ADJ_ORIG = 15,
+	CTA_SEQ_ADJ_REPLY = 16,
+	CTA_NAT_SEQ_ADJ_REPLY = 16,
+	CTA_SECMARK = 17,
+	CTA_ZONE = 18,
+	CTA_SECCTX = 19,
+	CTA_TIMESTAMP = 20,
+	CTA_MARK_MASK = 21,
+	CTA_LABELS = 22,
+	CTA_LABELS_MASK = 23,
+	CTA_SYNPROXY = 24,
+	CTA_FILTER = 25,
+	CTA_STATUS_MASK = 26,
+	__CTA_MAX = 27,
+};
+
+enum ctattr_tuple {
+	CTA_TUPLE_UNSPEC = 0,
+	CTA_TUPLE_IP = 1,
+	CTA_TUPLE_PROTO = 2,
+	CTA_TUPLE_ZONE = 3,
+	__CTA_TUPLE_MAX = 4,
+};
+
+enum ctattr_ip {
+	CTA_IP_UNSPEC = 0,
+	CTA_IP_V4_SRC = 1,
+	CTA_IP_V4_DST = 2,
+	CTA_IP_V6_SRC = 3,
+	CTA_IP_V6_DST = 4,
+	__CTA_IP_MAX = 5,
+};
+
+enum ctattr_counters {
+	CTA_COUNTERS_UNSPEC = 0,
+	CTA_COUNTERS_PACKETS = 1,
+	CTA_COUNTERS_BYTES = 2,
+	CTA_COUNTERS32_PACKETS = 3,
+	CTA_COUNTERS32_BYTES = 4,
+	CTA_COUNTERS_PAD = 5,
+	__CTA_COUNTERS_MAX = 6,
+};
+
+enum ctattr_tstamp {
+	CTA_TIMESTAMP_UNSPEC = 0,
+	CTA_TIMESTAMP_START = 1,
+	CTA_TIMESTAMP_STOP = 2,
+	CTA_TIMESTAMP_PAD = 3,
+	__CTA_TIMESTAMP_MAX = 4,
+};
+
+enum ctattr_help {
+	CTA_HELP_UNSPEC = 0,
+	CTA_HELP_NAME = 1,
+	CTA_HELP_INFO = 2,
+	__CTA_HELP_MAX = 3,
+};
+
+enum ctattr_secctx {
+	CTA_SECCTX_UNSPEC = 0,
+	CTA_SECCTX_NAME = 1,
+	__CTA_SECCTX_MAX = 2,
+};
+
+enum ctattr_seqadj {
+	CTA_SEQADJ_UNSPEC = 0,
+	CTA_SEQADJ_CORRECTION_POS = 1,
+	CTA_SEQADJ_OFFSET_BEFORE = 2,
+	CTA_SEQADJ_OFFSET_AFTER = 3,
+	__CTA_SEQADJ_MAX = 4,
+};
+
+enum ctattr_synproxy {
+	CTA_SYNPROXY_UNSPEC = 0,
+	CTA_SYNPROXY_ISN = 1,
+	CTA_SYNPROXY_ITS = 2,
+	CTA_SYNPROXY_TSOFF = 3,
+	__CTA_SYNPROXY_MAX = 4,
+};
+
+enum ctnl_exp_msg_types {
+	IPCTNL_MSG_EXP_NEW = 0,
+	IPCTNL_MSG_EXP_GET = 1,
+	IPCTNL_MSG_EXP_DELETE = 2,
+	IPCTNL_MSG_EXP_GET_STATS_CPU = 3,
+	IPCTNL_MSG_EXP_MAX = 4,
+};
+
+enum ctattr_expect {
+	CTA_EXPECT_UNSPEC = 0,
+	CTA_EXPECT_MASTER = 1,
+	CTA_EXPECT_TUPLE = 2,
+	CTA_EXPECT_MASK = 3,
+	CTA_EXPECT_TIMEOUT = 4,
+	CTA_EXPECT_ID = 5,
+	CTA_EXPECT_HELP_NAME = 6,
+	CTA_EXPECT_ZONE = 7,
+	CTA_EXPECT_FLAGS = 8,
+	CTA_EXPECT_CLASS = 9,
+	CTA_EXPECT_NAT = 10,
+	CTA_EXPECT_FN = 11,
+	__CTA_EXPECT_MAX = 12,
+};
+
+enum ctattr_expect_nat {
+	CTA_EXPECT_NAT_UNSPEC = 0,
+	CTA_EXPECT_NAT_DIR = 1,
+	CTA_EXPECT_NAT_TUPLE = 2,
+	__CTA_EXPECT_NAT_MAX = 3,
+};
+
+enum ctattr_expect_stats {
+	CTA_STATS_EXP_UNSPEC = 0,
+	CTA_STATS_EXP_NEW = 1,
+	CTA_STATS_EXP_CREATE = 2,
+	CTA_STATS_EXP_DELETE = 3,
+	__CTA_STATS_EXP_MAX = 4,
+};
+
+enum ctattr_filter {
+	CTA_FILTER_UNSPEC = 0,
+	CTA_FILTER_ORIG_FLAGS = 1,
+	CTA_FILTER_REPLY_FLAGS = 2,
+	__CTA_FILTER_MAX = 3,
+};
+
+enum ctattr_stats_cpu {
+	CTA_STATS_UNSPEC = 0,
+	CTA_STATS_SEARCHED = 1,
+	CTA_STATS_FOUND = 2,
+	CTA_STATS_NEW = 3,
+	CTA_STATS_INVALID = 4,
+	CTA_STATS_IGNORE = 5,
+	CTA_STATS_DELETE = 6,
+	CTA_STATS_DELETE_LIST = 7,
+	CTA_STATS_INSERT = 8,
+	CTA_STATS_INSERT_FAILED = 9,
+	CTA_STATS_DROP = 10,
+	CTA_STATS_EARLY_DROP = 11,
+	CTA_STATS_ERROR = 12,
+	CTA_STATS_SEARCH_RESTART = 13,
+	CTA_STATS_CLASH_RESOLVE = 14,
+	CTA_STATS_CHAIN_TOOLONG = 15,
+	__CTA_STATS_MAX = 16,
+};
+
+enum ctattr_stats_global {
+	CTA_STATS_GLOBAL_UNSPEC = 0,
+	CTA_STATS_GLOBAL_ENTRIES = 1,
+	CTA_STATS_GLOBAL_MAX_ENTRIES = 2,
+	__CTA_STATS_GLOBAL_MAX = 3,
+};
+
+struct ctnetlink_filter_u32 {
+	u32 val;
+	u32 mask;
+};
+
+struct ctnetlink_filter {
+	u8 family;
+	u_int32_t orig_flags;
+	u_int32_t reply_flags;
+	struct nf_conntrack_tuple orig;
+	struct nf_conntrack_tuple reply;
+	struct nf_conntrack_zone zone;
+	struct ctnetlink_filter_u32 mark;
+	struct ctnetlink_filter_u32 status;
+};
+
+struct ctnetlink_list_dump_ctx {
+	struct nf_conn *last;
+	unsigned int cpu;
+	bool done;
+};
+
+enum amanda_strings {
+	SEARCH_CONNECT = 0,
+	SEARCH_NEWLINE = 1,
+	SEARCH_DATA = 2,
+	SEARCH_MESG = 3,
+	SEARCH_INDEX = 4,
+	SEARCH_STATE = 5,
+};
+
+enum nf_ct_ftp_type {
+	NF_CT_FTP_PORT = 0,
+	NF_CT_FTP_PASV = 1,
+	NF_CT_FTP_EPRT = 2,
+	NF_CT_FTP_EPSV = 3,
+};
+
+struct ftp_search {
+	const char *pattern;
+	size_t plen;
+	char skip;
+	char term;
+	enum nf_ct_ftp_type ftptype;
+	int (*getnum)(const char *, size_t, struct nf_conntrack_man *, char, unsigned int *);
+};
+
+struct nf_ct_ftp_master {
+	u_int32_t seq_aft_nl[4];
+	u_int16_t seq_aft_nl_num[2];
+	u_int16_t flags[2];
+};
+
+struct H245_TransportAddress;
+
+typedef struct H245_TransportAddress H245_TransportAddress;
+
+struct TransportAddress;
+
+typedef struct TransportAddress TransportAddress;
+
+struct nfct_h323_nat_hooks {
+	int (*set_h245_addr)(struct sk_buff *, unsigned int, unsigned char **, int, H245_TransportAddress *, union nf_inet_addr *, __be16);
+	int (*set_h225_addr)(struct sk_buff *, unsigned int, unsigned char **, int, TransportAddress *, union nf_inet_addr *, __be16);
+	int (*set_sig_addr)(struct sk_buff *, struct nf_conn *, enum ip_conntrack_info, unsigned int, unsigned char **, TransportAddress *, int);
+	int (*set_ras_addr)(struct sk_buff *, struct nf_conn *, enum ip_conntrack_info, unsigned int, unsigned char **, TransportAddress *, int);
+	int (*nat_rtp_rtcp)(struct sk_buff *, struct nf_conn *, enum ip_conntrack_info, unsigned int, unsigned char **, int, H245_TransportAddress *, __be16, __be16, struct nf_conntrack_expect *, struct nf_conntrack_expect *);
+	int (*nat_t120)(struct sk_buff *, struct nf_conn *, enum ip_conntrack_info, unsigned int, unsigned char **, int, H245_TransportAddress *, __be16, struct nf_conntrack_expect *);
+	int (*nat_h245)(struct sk_buff *, struct nf_conn *, enum ip_conntrack_info, unsigned int, unsigned char **, int, TransportAddress *, __be16, struct nf_conntrack_expect *);
+	int (*nat_callforwarding)(struct sk_buff *, struct nf_conn *, enum ip_conntrack_info, unsigned int, unsigned char **, int, TransportAddress *, __be16, struct nf_conntrack_expect *);
+	int (*nat_q931)(struct sk_buff *, struct nf_conn *, enum ip_conntrack_info, unsigned int, unsigned char **, TransportAddress *, int, __be16, struct nf_conntrack_expect *);
+};
+
+struct UnicastAddress_iPAddress {
+	int options;
+	unsigned int network;
+};
+
+typedef struct UnicastAddress_iPAddress UnicastAddress_iPAddress;
+
+struct UnicastAddress_iP6Address {
+	int options;
+	unsigned int network;
+};
+
+typedef struct UnicastAddress_iP6Address UnicastAddress_iP6Address;
+
+struct UnicastAddress {
+	enum {
+		eUnicastAddress_iPAddress = 0,
+		eUnicastAddress_iPXAddress = 1,
+		eUnicastAddress_iP6Address = 2,
+		eUnicastAddress_netBios = 3,
+		eUnicastAddress_iPSourceRouteAddress = 4,
+		eUnicastAddress_nsap = 5,
+		eUnicastAddress_nonStandardAddress = 6,
+	} choice;
+	union {
+		UnicastAddress_iPAddress iPAddress;
+		UnicastAddress_iP6Address iP6Address;
+	};
+};
+
+typedef struct UnicastAddress UnicastAddress;
+
+struct H245_TransportAddress {
+	enum {
+		eH245_TransportAddress_unicastAddress = 0,
+		eH245_TransportAddress_multicastAddress = 1,
+	} choice;
+	union {
+		UnicastAddress unicastAddress;
+	};
+};
+
+struct TransportAddress_ipAddress {
+	int options;
+	unsigned int ip;
+};
+
+typedef struct TransportAddress_ipAddress TransportAddress_ipAddress;
+
+struct TransportAddress_ip6Address {
+	int options;
+	unsigned int ip;
+};
+
+typedef struct TransportAddress_ip6Address TransportAddress_ip6Address;
+
+struct TransportAddress {
+	enum {
+		eTransportAddress_ipAddress = 0,
+		eTransportAddress_ipSourceRoute = 1,
+		eTransportAddress_ipxAddress = 2,
+		eTransportAddress_ip6Address = 3,
+		eTransportAddress_netBios = 4,
+		eTransportAddress_nsap = 5,
+		eTransportAddress_nonStandardAddress = 6,
+	} choice;
+	union {
+		TransportAddress_ipAddress ipAddress;
+		TransportAddress_ip6Address ip6Address;
+	};
+};
+
+struct GatekeeperRequest {
+	enum {
+		eGatekeeperRequest_nonStandardData = -2147483648,
+		eGatekeeperRequest_gatekeeperIdentifier = 1073741824,
+		eGatekeeperRequest_callServices = 536870912,
+		eGatekeeperRequest_endpointAlias = 268435456,
+		eGatekeeperRequest_alternateEndpoints = 134217728,
+		eGatekeeperRequest_tokens = 67108864,
+		eGatekeeperRequest_cryptoTokens = 33554432,
+		eGatekeeperRequest_authenticationCapability = 16777216,
+		eGatekeeperRequest_algorithmOIDs = 8388608,
+		eGatekeeperRequest_integrity = 4194304,
+		eGatekeeperRequest_integrityCheckValue = 2097152,
+		eGatekeeperRequest_supportsAltGK = 1048576,
+		eGatekeeperRequest_featureSet = 524288,
+		eGatekeeperRequest_genericData = 262144,
+	} options;
+	TransportAddress rasAddress;
+};
+
+typedef struct GatekeeperRequest GatekeeperRequest;
+
+struct GatekeeperConfirm {
+	enum {
+		eGatekeeperConfirm_nonStandardData = -2147483648,
+		eGatekeeperConfirm_gatekeeperIdentifier = 1073741824,
+		eGatekeeperConfirm_alternateGatekeeper = 536870912,
+		eGatekeeperConfirm_authenticationMode = 268435456,
+		eGatekeeperConfirm_tokens = 134217728,
+		eGatekeeperConfirm_cryptoTokens = 67108864,
+		eGatekeeperConfirm_algorithmOID = 33554432,
+		eGatekeeperConfirm_integrity = 16777216,
+		eGatekeeperConfirm_integrityCheckValue = 8388608,
+		eGatekeeperConfirm_featureSet = 4194304,
+		eGatekeeperConfirm_genericData = 2097152,
+	} options;
+	TransportAddress rasAddress;
+};
+
+typedef struct GatekeeperConfirm GatekeeperConfirm;
+
+struct RegistrationRequest_callSignalAddress {
+	int count;
+	TransportAddress item[10];
+};
+
+typedef struct RegistrationRequest_callSignalAddress RegistrationRequest_callSignalAddress;
+
+struct RegistrationRequest_rasAddress {
+	int count;
+	TransportAddress item[10];
+};
+
+typedef struct RegistrationRequest_rasAddress RegistrationRequest_rasAddress;
+
+struct RegistrationRequest {
+	enum {
+		eRegistrationRequest_nonStandardData = -2147483648,
+		eRegistrationRequest_terminalAlias = 1073741824,
+		eRegistrationRequest_gatekeeperIdentifier = 536870912,
+		eRegistrationRequest_alternateEndpoints = 268435456,
+		eRegistrationRequest_timeToLive = 134217728,
+		eRegistrationRequest_tokens = 67108864,
+		eRegistrationRequest_cryptoTokens = 33554432,
+		eRegistrationRequest_integrityCheckValue = 16777216,
+		eRegistrationRequest_keepAlive = 8388608,
+		eRegistrationRequest_endpointIdentifier = 4194304,
+		eRegistrationRequest_willSupplyUUIEs = 2097152,
+		eRegistrationRequest_maintainConnection = 1048576,
+		eRegistrationRequest_alternateTransportAddresses = 524288,
+		eRegistrationRequest_additiveRegistration = 262144,
+		eRegistrationRequest_terminalAliasPattern = 131072,
+		eRegistrationRequest_supportsAltGK = 65536,
+		eRegistrationRequest_usageReportingCapability = 32768,
+		eRegistrationRequest_multipleCalls = 16384,
+		eRegistrationRequest_supportedH248Packages = 8192,
+		eRegistrationRequest_callCreditCapability = 4096,
+		eRegistrationRequest_capacityReportingCapability = 2048,
+		eRegistrationRequest_capacity = 1024,
+		eRegistrationRequest_featureSet = 512,
+		eRegistrationRequest_genericData = 256,
+	} options;
+	RegistrationRequest_callSignalAddress callSignalAddress;
+	RegistrationRequest_rasAddress rasAddress;
+	unsigned int timeToLive;
+};
+
+typedef struct RegistrationRequest RegistrationRequest;
+
+struct RegistrationConfirm_callSignalAddress {
+	int count;
+	TransportAddress item[10];
+};
+
+typedef struct RegistrationConfirm_callSignalAddress RegistrationConfirm_callSignalAddress;
+
+struct RegistrationConfirm {
+	enum {
+		eRegistrationConfirm_nonStandardData = -2147483648,
+		eRegistrationConfirm_terminalAlias = 1073741824,
+		eRegistrationConfirm_gatekeeperIdentifier = 536870912,
+		eRegistrationConfirm_alternateGatekeeper = 268435456,
+		eRegistrationConfirm_timeToLive = 134217728,
+		eRegistrationConfirm_tokens = 67108864,
+		eRegistrationConfirm_cryptoTokens = 33554432,
+		eRegistrationConfirm_integrityCheckValue = 16777216,
+		eRegistrationConfirm_willRespondToIRR = 8388608,
+		eRegistrationConfirm_preGrantedARQ = 4194304,
+		eRegistrationConfirm_maintainConnection = 2097152,
+		eRegistrationConfirm_serviceControl = 1048576,
+		eRegistrationConfirm_supportsAdditiveRegistration = 524288,
+		eRegistrationConfirm_terminalAliasPattern = 262144,
+		eRegistrationConfirm_supportedPrefixes = 131072,
+		eRegistrationConfirm_usageSpec = 65536,
+		eRegistrationConfirm_featureServerAlias = 32768,
+		eRegistrationConfirm_capacityReportingSpec = 16384,
+		eRegistrationConfirm_featureSet = 8192,
+		eRegistrationConfirm_genericData = 4096,
+	} options;
+	RegistrationConfirm_callSignalAddress callSignalAddress;
+	unsigned int timeToLive;
+};
+
+typedef struct RegistrationConfirm RegistrationConfirm;
+
+struct UnregistrationRequest_callSignalAddress {
+	int count;
+	TransportAddress item[10];
+};
+
+typedef struct UnregistrationRequest_callSignalAddress UnregistrationRequest_callSignalAddress;
+
+struct UnregistrationRequest {
+	enum {
+		eUnregistrationRequest_endpointAlias = -2147483648,
+		eUnregistrationRequest_nonStandardData = 1073741824,
+		eUnregistrationRequest_endpointIdentifier = 536870912,
+		eUnregistrationRequest_alternateEndpoints = 268435456,
+		eUnregistrationRequest_gatekeeperIdentifier = 134217728,
+		eUnregistrationRequest_tokens = 67108864,
+		eUnregistrationRequest_cryptoTokens = 33554432,
+		eUnregistrationRequest_integrityCheckValue = 16777216,
+		eUnregistrationRequest_reason = 8388608,
+		eUnregistrationRequest_endpointAliasPattern = 4194304,
+		eUnregistrationRequest_supportedPrefixes = 2097152,
+		eUnregistrationRequest_alternateGatekeeper = 1048576,
+		eUnregistrationRequest_genericData = 524288,
+	} options;
+	UnregistrationRequest_callSignalAddress callSignalAddress;
+};
+
+typedef struct UnregistrationRequest UnregistrationRequest;
+
+struct AdmissionRequest {
+	enum {
+		eAdmissionRequest_callModel = -2147483648,
+		eAdmissionRequest_destinationInfo = 1073741824,
+		eAdmissionRequest_destCallSignalAddress = 536870912,
+		eAdmissionRequest_destExtraCallInfo = 268435456,
+		eAdmissionRequest_srcCallSignalAddress = 134217728,
+		eAdmissionRequest_nonStandardData = 67108864,
+		eAdmissionRequest_callServices = 33554432,
+		eAdmissionRequest_canMapAlias = 16777216,
+		eAdmissionRequest_callIdentifier = 8388608,
+		eAdmissionRequest_srcAlternatives = 4194304,
+		eAdmissionRequest_destAlternatives = 2097152,
+		eAdmissionRequest_gatekeeperIdentifier = 1048576,
+		eAdmissionRequest_tokens = 524288,
+		eAdmissionRequest_cryptoTokens = 262144,
+		eAdmissionRequest_integrityCheckValue = 131072,
+		eAdmissionRequest_transportQOS = 65536,
+		eAdmissionRequest_willSupplyUUIEs = 32768,
+		eAdmissionRequest_callLinkage = 16384,
+		eAdmissionRequest_gatewayDataRate = 8192,
+		eAdmissionRequest_capacity = 4096,
+		eAdmissionRequest_circuitInfo = 2048,
+		eAdmissionRequest_desiredProtocols = 1024,
+		eAdmissionRequest_desiredTunnelledProtocol = 512,
+		eAdmissionRequest_featureSet = 256,
+		eAdmissionRequest_genericData = 128,
+	} options;
+	TransportAddress destCallSignalAddress;
+	TransportAddress srcCallSignalAddress;
+};
+
+typedef struct AdmissionRequest AdmissionRequest;
+
+struct AdmissionConfirm {
+	enum {
+		eAdmissionConfirm_irrFrequency = -2147483648,
+		eAdmissionConfirm_nonStandardData = 1073741824,
+		eAdmissionConfirm_destinationInfo = 536870912,
+		eAdmissionConfirm_destExtraCallInfo = 268435456,
+		eAdmissionConfirm_destinationType = 134217728,
+		eAdmissionConfirm_remoteExtensionAddress = 67108864,
+		eAdmissionConfirm_alternateEndpoints = 33554432,
+		eAdmissionConfirm_tokens = 16777216,
+		eAdmissionConfirm_cryptoTokens = 8388608,
+		eAdmissionConfirm_integrityCheckValue = 4194304,
+		eAdmissionConfirm_transportQOS = 2097152,
+		eAdmissionConfirm_willRespondToIRR = 1048576,
+		eAdmissionConfirm_uuiesRequested = 524288,
+		eAdmissionConfirm_language = 262144,
+		eAdmissionConfirm_alternateTransportAddresses = 131072,
+		eAdmissionConfirm_useSpecifiedTransport = 65536,
+		eAdmissionConfirm_circuitInfo = 32768,
+		eAdmissionConfirm_usageSpec = 16384,
+		eAdmissionConfirm_supportedProtocols = 8192,
+		eAdmissionConfirm_serviceControl = 4096,
+		eAdmissionConfirm_multipleCalls = 2048,
+		eAdmissionConfirm_featureSet = 1024,
+		eAdmissionConfirm_genericData = 512,
+	} options;
+	TransportAddress destCallSignalAddress;
+};
+
+typedef struct AdmissionConfirm AdmissionConfirm;
+
+struct LocationRequest {
+	enum {
+		eLocationRequest_endpointIdentifier = -2147483648,
+		eLocationRequest_nonStandardData = 1073741824,
+		eLocationRequest_sourceInfo = 536870912,
+		eLocationRequest_canMapAlias = 268435456,
+		eLocationRequest_gatekeeperIdentifier = 134217728,
+		eLocationRequest_tokens = 67108864,
+		eLocationRequest_cryptoTokens = 33554432,
+		eLocationRequest_integrityCheckValue = 16777216,
+		eLocationRequest_desiredProtocols = 8388608,
+		eLocationRequest_desiredTunnelledProtocol = 4194304,
+		eLocationRequest_featureSet = 2097152,
+		eLocationRequest_genericData = 1048576,
+		eLocationRequest_hopCount = 524288,
+		eLocationRequest_circuitInfo = 262144,
+	} options;
+	TransportAddress replyAddress;
+};
+
+typedef struct LocationRequest LocationRequest;
+
+struct LocationConfirm {
+	enum {
+		eLocationConfirm_nonStandardData = -2147483648,
+		eLocationConfirm_destinationInfo = 1073741824,
+		eLocationConfirm_destExtraCallInfo = 536870912,
+		eLocationConfirm_destinationType = 268435456,
+		eLocationConfirm_remoteExtensionAddress = 134217728,
+		eLocationConfirm_alternateEndpoints = 67108864,
+		eLocationConfirm_tokens = 33554432,
+		eLocationConfirm_cryptoTokens = 16777216,
+		eLocationConfirm_integrityCheckValue = 8388608,
+		eLocationConfirm_alternateTransportAddresses = 4194304,
+		eLocationConfirm_supportedProtocols = 2097152,
+		eLocationConfirm_multipleCalls = 1048576,
+		eLocationConfirm_featureSet = 524288,
+		eLocationConfirm_genericData = 262144,
+		eLocationConfirm_circuitInfo = 131072,
+		eLocationConfirm_serviceControl = 65536,
+	} options;
+	TransportAddress callSignalAddress;
+	TransportAddress rasAddress;
+};
+
+typedef struct LocationConfirm LocationConfirm;
+
+struct InfoRequestResponse_callSignalAddress {
+	int count;
+	TransportAddress item[10];
+};
+
+typedef struct InfoRequestResponse_callSignalAddress InfoRequestResponse_callSignalAddress;
+
+struct InfoRequestResponse {
+	enum {
+		eInfoRequestResponse_nonStandardData = -2147483648,
+		eInfoRequestResponse_endpointAlias = 1073741824,
+		eInfoRequestResponse_perCallInfo = 536870912,
+		eInfoRequestResponse_tokens = 268435456,
+		eInfoRequestResponse_cryptoTokens = 134217728,
+		eInfoRequestResponse_integrityCheckValue = 67108864,
+		eInfoRequestResponse_needResponse = 33554432,
+		eInfoRequestResponse_capacity = 16777216,
+		eInfoRequestResponse_irrStatus = 8388608,
+		eInfoRequestResponse_unsolicited = 4194304,
+		eInfoRequestResponse_genericData = 2097152,
+	} options;
+	TransportAddress rasAddress;
+	InfoRequestResponse_callSignalAddress callSignalAddress;
+};
+
+typedef struct InfoRequestResponse InfoRequestResponse;
+
+struct RasMessage {
+	enum {
+		eRasMessage_gatekeeperRequest = 0,
+		eRasMessage_gatekeeperConfirm = 1,
+		eRasMessage_gatekeeperReject = 2,
+		eRasMessage_registrationRequest = 3,
+		eRasMessage_registrationConfirm = 4,
+		eRasMessage_registrationReject = 5,
+		eRasMessage_unregistrationRequest = 6,
+		eRasMessage_unregistrationConfirm = 7,
+		eRasMessage_unregistrationReject = 8,
+		eRasMessage_admissionRequest = 9,
+		eRasMessage_admissionConfirm = 10,
+		eRasMessage_admissionReject = 11,
+		eRasMessage_bandwidthRequest = 12,
+		eRasMessage_bandwidthConfirm = 13,
+		eRasMessage_bandwidthReject = 14,
+		eRasMessage_disengageRequest = 15,
+		eRasMessage_disengageConfirm = 16,
+		eRasMessage_disengageReject = 17,
+		eRasMessage_locationRequest = 18,
+		eRasMessage_locationConfirm = 19,
+		eRasMessage_locationReject = 20,
+		eRasMessage_infoRequest = 21,
+		eRasMessage_infoRequestResponse = 22,
+		eRasMessage_nonStandardMessage = 23,
+		eRasMessage_unknownMessageResponse = 24,
+		eRasMessage_requestInProgress = 25,
+		eRasMessage_resourcesAvailableIndicate = 26,
+		eRasMessage_resourcesAvailableConfirm = 27,
+		eRasMessage_infoRequestAck = 28,
+		eRasMessage_infoRequestNak = 29,
+		eRasMessage_serviceControlIndication = 30,
+		eRasMessage_serviceControlResponse = 31,
+	} choice;
+	union {
+		GatekeeperRequest gatekeeperRequest;
+		GatekeeperConfirm gatekeeperConfirm;
+		RegistrationRequest registrationRequest;
+		RegistrationConfirm registrationConfirm;
+		UnregistrationRequest unregistrationRequest;
+		AdmissionRequest admissionRequest;
+		AdmissionConfirm admissionConfirm;
+		LocationRequest locationRequest;
+		LocationConfirm locationConfirm;
+		InfoRequestResponse infoRequestResponse;
+	};
+};
+
+typedef struct RasMessage RasMessage;
+
+struct DataProtocolCapability {
+	enum {
+		eDataProtocolCapability_nonStandard = 0,
+		eDataProtocolCapability_v14buffered = 1,
+		eDataProtocolCapability_v42lapm = 2,
+		eDataProtocolCapability_hdlcFrameTunnelling = 3,
+		eDataProtocolCapability_h310SeparateVCStack = 4,
+		eDataProtocolCapability_h310SingleVCStack = 5,
+		eDataProtocolCapability_transparent = 6,
+		eDataProtocolCapability_segmentationAndReassembly = 7,
+		eDataProtocolCapability_hdlcFrameTunnelingwSAR = 8,
+		eDataProtocolCapability_v120 = 9,
+		eDataProtocolCapability_separateLANStack = 10,
+		eDataProtocolCapability_v76wCompression = 11,
+		eDataProtocolCapability_tcp = 12,
+		eDataProtocolCapability_udp = 13,
+	} choice;
+};
+
+typedef struct DataProtocolCapability DataProtocolCapability;
+
+struct DataApplicationCapability_application {
+	enum {
+		eDataApplicationCapability_application_nonStandard = 0,
+		eDataApplicationCapability_application_t120 = 1,
+		eDataApplicationCapability_application_dsm_cc = 2,
+		eDataApplicationCapability_application_userData = 3,
+		eDataApplicationCapability_application_t84 = 4,
+		eDataApplicationCapability_application_t434 = 5,
+		eDataApplicationCapability_application_h224 = 6,
+		eDataApplicationCapability_application_nlpid = 7,
+		eDataApplicationCapability_application_dsvdControl = 8,
+		eDataApplicationCapability_application_h222DataPartitioning = 9,
+		eDataApplicationCapability_application_t30fax = 10,
+		eDataApplicationCapability_application_t140 = 11,
+		eDataApplicationCapability_application_t38fax = 12,
+		eDataApplicationCapability_application_genericDataCapability = 13,
+	} choice;
+	union {
+		DataProtocolCapability t120;
+	};
+};
+
+typedef struct DataApplicationCapability_application DataApplicationCapability_application;
+
+struct DataApplicationCapability {
+	int options;
+	DataApplicationCapability_application application;
+};
+
+typedef struct DataApplicationCapability DataApplicationCapability;
+
+struct DataType {
+	enum {
+		eDataType_nonStandard = 0,
+		eDataType_nullData = 1,
+		eDataType_videoData = 2,
+		eDataType_audioData = 3,
+		eDataType_data = 4,
+		eDataType_encryptionData = 5,
+		eDataType_h235Control = 6,
+		eDataType_h235Media = 7,
+		eDataType_multiplexedStream = 8,
+	} choice;
+	union {
+		DataApplicationCapability data;
+	};
+};
+
+typedef struct DataType DataType;
+
+struct H2250LogicalChannelParameters {
+	enum {
+		eH2250LogicalChannelParameters_nonStandard = -2147483648,
+		eH2250LogicalChannelParameters_associatedSessionID = 1073741824,
+		eH2250LogicalChannelParameters_mediaChannel = 536870912,
+		eH2250LogicalChannelParameters_mediaGuaranteedDelivery = 268435456,
+		eH2250LogicalChannelParameters_mediaControlChannel = 134217728,
+		eH2250LogicalChannelParameters_mediaControlGuaranteedDelivery = 67108864,
+		eH2250LogicalChannelParameters_silenceSuppression = 33554432,
+		eH2250LogicalChannelParameters_destination = 16777216,
+		eH2250LogicalChannelParameters_dynamicRTPPayloadType = 8388608,
+		eH2250LogicalChannelParameters_mediaPacketization = 4194304,
+		eH2250LogicalChannelParameters_transportCapability = 2097152,
+		eH2250LogicalChannelParameters_redundancyEncoding = 1048576,
+		eH2250LogicalChannelParameters_source = 524288,
+	} options;
+	H245_TransportAddress mediaChannel;
+	H245_TransportAddress mediaControlChannel;
+};
+
+typedef struct H2250LogicalChannelParameters H2250LogicalChannelParameters;
+
+struct OpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters {
+	enum {
+		eOpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters_h222LogicalChannelParameters = 0,
+		eOpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters_h223LogicalChannelParameters = 1,
+		eOpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters_v76LogicalChannelParameters = 2,
+		eOpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters_h2250LogicalChannelParameters = 3,
+		eOpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters_none = 4,
+	} choice;
+	union {
+		H2250LogicalChannelParameters h2250LogicalChannelParameters;
+	};
+};
+
+typedef struct OpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters OpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters;
+
+struct OpenLogicalChannel_forwardLogicalChannelParameters {
+	enum {
+		eOpenLogicalChannel_forwardLogicalChannelParameters_portNumber = -2147483648,
+		eOpenLogicalChannel_forwardLogicalChannelParameters_forwardLogicalChannelDependency = 1073741824,
+		eOpenLogicalChannel_forwardLogicalChannelParameters_replacementFor = 536870912,
+	} options;
+	DataType dataType;
+	OpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters multiplexParameters;
+};
+
+typedef struct OpenLogicalChannel_forwardLogicalChannelParameters OpenLogicalChannel_forwardLogicalChannelParameters;
+
+struct OpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters {
+	enum {
+		eOpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters_h223LogicalChannelParameters = 0,
+		eOpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters_v76LogicalChannelParameters = 1,
+		eOpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters_h2250LogicalChannelParameters = 2,
+	} choice;
+	union {
+		H2250LogicalChannelParameters h2250LogicalChannelParameters;
+	};
+};
+
+typedef struct OpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters OpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters;
+
+struct OpenLogicalChannel_reverseLogicalChannelParameters {
+	enum {
+		eOpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters = -2147483648,
+		eOpenLogicalChannel_reverseLogicalChannelParameters_reverseLogicalChannelDependency = 1073741824,
+		eOpenLogicalChannel_reverseLogicalChannelParameters_replacementFor = 536870912,
+	} options;
+	OpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters multiplexParameters;
+};
+
+typedef struct OpenLogicalChannel_reverseLogicalChannelParameters OpenLogicalChannel_reverseLogicalChannelParameters;
+
+struct NetworkAccessParameters_networkAddress {
+	enum {
+		eNetworkAccessParameters_networkAddress_q2931Address = 0,
+		eNetworkAccessParameters_networkAddress_e164Address = 1,
+		eNetworkAccessParameters_networkAddress_localAreaAddress = 2,
+	} choice;
+	union {
+		H245_TransportAddress localAreaAddress;
+	};
+};
+
+typedef struct NetworkAccessParameters_networkAddress NetworkAccessParameters_networkAddress;
+
+struct NetworkAccessParameters {
+	enum {
+		eNetworkAccessParameters_distribution = -2147483648,
+		eNetworkAccessParameters_externalReference = 1073741824,
+		eNetworkAccessParameters_t120SetupProcedure = 536870912,
+	} options;
+	NetworkAccessParameters_networkAddress networkAddress;
+};
+
+typedef struct NetworkAccessParameters NetworkAccessParameters;
+
+struct OpenLogicalChannel {
+	enum {
+		eOpenLogicalChannel_reverseLogicalChannelParameters = -2147483648,
+		eOpenLogicalChannel_separateStack = 1073741824,
+		eOpenLogicalChannel_encryptionSync = 536870912,
+	} options;
+	OpenLogicalChannel_forwardLogicalChannelParameters forwardLogicalChannelParameters;
+	OpenLogicalChannel_reverseLogicalChannelParameters reverseLogicalChannelParameters;
+	NetworkAccessParameters separateStack;
+};
+
+typedef struct OpenLogicalChannel OpenLogicalChannel;
+
+struct Setup_UUIE_fastStart {
+	int count;
+	OpenLogicalChannel item[30];
+};
+
+typedef struct Setup_UUIE_fastStart Setup_UUIE_fastStart;
+
+struct Setup_UUIE {
+	enum {
+		eSetup_UUIE_h245Address = -2147483648,
+		eSetup_UUIE_sourceAddress = 1073741824,
+		eSetup_UUIE_destinationAddress = 536870912,
+		eSetup_UUIE_destCallSignalAddress = 268435456,
+		eSetup_UUIE_destExtraCallInfo = 134217728,
+		eSetup_UUIE_destExtraCRV = 67108864,
+		eSetup_UUIE_callServices = 33554432,
+		eSetup_UUIE_sourceCallSignalAddress = 16777216,
+		eSetup_UUIE_remoteExtensionAddress = 8388608,
+		eSetup_UUIE_callIdentifier = 4194304,
+		eSetup_UUIE_h245SecurityCapability = 2097152,
+		eSetup_UUIE_tokens = 1048576,
+		eSetup_UUIE_cryptoTokens = 524288,
+		eSetup_UUIE_fastStart = 262144,
+		eSetup_UUIE_mediaWaitForConnect = 131072,
+		eSetup_UUIE_canOverlapSend = 65536,
+		eSetup_UUIE_endpointIdentifier = 32768,
+		eSetup_UUIE_multipleCalls = 16384,
+		eSetup_UUIE_maintainConnection = 8192,
+		eSetup_UUIE_connectionParameters = 4096,
+		eSetup_UUIE_language = 2048,
+		eSetup_UUIE_presentationIndicator = 1024,
+		eSetup_UUIE_screeningIndicator = 512,
+		eSetup_UUIE_serviceControl = 256,
+		eSetup_UUIE_symmetricOperationRequired = 128,
+		eSetup_UUIE_capacity = 64,
+		eSetup_UUIE_circuitInfo = 32,
+		eSetup_UUIE_desiredProtocols = 16,
+		eSetup_UUIE_neededFeatures = 8,
+		eSetup_UUIE_desiredFeatures = 4,
+		eSetup_UUIE_supportedFeatures = 2,
+		eSetup_UUIE_parallelH245Control = 1,
+	} options;
+	TransportAddress h245Address;
+	TransportAddress destCallSignalAddress;
+	TransportAddress sourceCallSignalAddress;
+	Setup_UUIE_fastStart fastStart;
+};
+
+typedef struct Setup_UUIE Setup_UUIE;
+
+struct CallProceeding_UUIE_fastStart {
+	int count;
+	OpenLogicalChannel item[30];
+};
+
+typedef struct CallProceeding_UUIE_fastStart CallProceeding_UUIE_fastStart;
+
+struct CallProceeding_UUIE {
+	enum {
+		eCallProceeding_UUIE_h245Address = -2147483648,
+		eCallProceeding_UUIE_callIdentifier = 1073741824,
+		eCallProceeding_UUIE_h245SecurityMode = 536870912,
+		eCallProceeding_UUIE_tokens = 268435456,
+		eCallProceeding_UUIE_cryptoTokens = 134217728,
+		eCallProceeding_UUIE_fastStart = 67108864,
+		eCallProceeding_UUIE_multipleCalls = 33554432,
+		eCallProceeding_UUIE_maintainConnection = 16777216,
+		eCallProceeding_UUIE_fastConnectRefused = 8388608,
+		eCallProceeding_UUIE_featureSet = 4194304,
+	} options;
+	TransportAddress h245Address;
+	CallProceeding_UUIE_fastStart fastStart;
+};
+
+typedef struct CallProceeding_UUIE CallProceeding_UUIE;
+
+struct Connect_UUIE_fastStart {
+	int count;
+	OpenLogicalChannel item[30];
+};
+
+typedef struct Connect_UUIE_fastStart Connect_UUIE_fastStart;
+
+struct Connect_UUIE {
+	enum {
+		eConnect_UUIE_h245Address = -2147483648,
+		eConnect_UUIE_callIdentifier = 1073741824,
+		eConnect_UUIE_h245SecurityMode = 536870912,
+		eConnect_UUIE_tokens = 268435456,
+		eConnect_UUIE_cryptoTokens = 134217728,
+		eConnect_UUIE_fastStart = 67108864,
+		eConnect_UUIE_multipleCalls = 33554432,
+		eConnect_UUIE_maintainConnection = 16777216,
+		eConnect_UUIE_language = 8388608,
+		eConnect_UUIE_connectedAddress = 4194304,
+		eConnect_UUIE_presentationIndicator = 2097152,
+		eConnect_UUIE_screeningIndicator = 1048576,
+		eConnect_UUIE_fastConnectRefused = 524288,
+		eConnect_UUIE_serviceControl = 262144,
+		eConnect_UUIE_capacity = 131072,
+		eConnect_UUIE_featureSet = 65536,
+	} options;
+	TransportAddress h245Address;
+	Connect_UUIE_fastStart fastStart;
+};
+
+typedef struct Connect_UUIE Connect_UUIE;
+
+struct Alerting_UUIE_fastStart {
+	int count;
+	OpenLogicalChannel item[30];
+};
+
+typedef struct Alerting_UUIE_fastStart Alerting_UUIE_fastStart;
+
+struct Alerting_UUIE {
+	enum {
+		eAlerting_UUIE_h245Address = -2147483648,
+		eAlerting_UUIE_callIdentifier = 1073741824,
+		eAlerting_UUIE_h245SecurityMode = 536870912,
+		eAlerting_UUIE_tokens = 268435456,
+		eAlerting_UUIE_cryptoTokens = 134217728,
+		eAlerting_UUIE_fastStart = 67108864,
+		eAlerting_UUIE_multipleCalls = 33554432,
+		eAlerting_UUIE_maintainConnection = 16777216,
+		eAlerting_UUIE_alertingAddress = 8388608,
+		eAlerting_UUIE_presentationIndicator = 4194304,
+		eAlerting_UUIE_screeningIndicator = 2097152,
+		eAlerting_UUIE_fastConnectRefused = 1048576,
+		eAlerting_UUIE_serviceControl = 524288,
+		eAlerting_UUIE_capacity = 262144,
+		eAlerting_UUIE_featureSet = 131072,
+	} options;
+	TransportAddress h245Address;
+	Alerting_UUIE_fastStart fastStart;
+};
+
+typedef struct Alerting_UUIE Alerting_UUIE;
+
+struct FacilityReason {
+	enum {
+		eFacilityReason_routeCallToGatekeeper = 0,
+		eFacilityReason_callForwarded = 1,
+		eFacilityReason_routeCallToMC = 2,
+		eFacilityReason_undefinedReason = 3,
+		eFacilityReason_conferenceListChoice = 4,
+		eFacilityReason_startH245 = 5,
+		eFacilityReason_noH245 = 6,
+		eFacilityReason_newTokens = 7,
+		eFacilityReason_featureSetUpdate = 8,
+		eFacilityReason_forwardedElements = 9,
+		eFacilityReason_transportedInformation = 10,
+	} choice;
+};
+
+typedef struct FacilityReason FacilityReason;
+
+struct Facility_UUIE_fastStart {
+	int count;
+	OpenLogicalChannel item[30];
+};
+
+typedef struct Facility_UUIE_fastStart Facility_UUIE_fastStart;
+
+struct Facility_UUIE {
+	enum {
+		eFacility_UUIE_alternativeAddress = -2147483648,
+		eFacility_UUIE_alternativeAliasAddress = 1073741824,
+		eFacility_UUIE_conferenceID = 536870912,
+		eFacility_UUIE_callIdentifier = 268435456,
+		eFacility_UUIE_destExtraCallInfo = 134217728,
+		eFacility_UUIE_remoteExtensionAddress = 67108864,
+		eFacility_UUIE_tokens = 33554432,
+		eFacility_UUIE_cryptoTokens = 16777216,
+		eFacility_UUIE_conferences = 8388608,
+		eFacility_UUIE_h245Address = 4194304,
+		eFacility_UUIE_fastStart = 2097152,
+		eFacility_UUIE_multipleCalls = 1048576,
+		eFacility_UUIE_maintainConnection = 524288,
+		eFacility_UUIE_fastConnectRefused = 262144,
+		eFacility_UUIE_serviceControl = 131072,
+		eFacility_UUIE_circuitInfo = 65536,
+		eFacility_UUIE_featureSet = 32768,
+		eFacility_UUIE_destinationInfo = 16384,
+		eFacility_UUIE_h245SecurityMode = 8192,
+	} options;
+	TransportAddress alternativeAddress;
+	FacilityReason reason;
+	TransportAddress h245Address;
+	Facility_UUIE_fastStart fastStart;
+};
+
+typedef struct Facility_UUIE Facility_UUIE;
+
+struct Progress_UUIE_fastStart {
+	int count;
+	OpenLogicalChannel item[30];
+};
+
+typedef struct Progress_UUIE_fastStart Progress_UUIE_fastStart;
+
+struct Progress_UUIE {
+	enum {
+		eProgress_UUIE_h245Address = -2147483648,
+		eProgress_UUIE_h245SecurityMode = 1073741824,
+		eProgress_UUIE_tokens = 536870912,
+		eProgress_UUIE_cryptoTokens = 268435456,
+		eProgress_UUIE_fastStart = 134217728,
+		eProgress_UUIE_multipleCalls = 67108864,
+		eProgress_UUIE_maintainConnection = 33554432,
+		eProgress_UUIE_fastConnectRefused = 16777216,
+	} options;
+	TransportAddress h245Address;
+	Progress_UUIE_fastStart fastStart;
+};
+
+typedef struct Progress_UUIE Progress_UUIE;
+
+struct H323_UU_PDU_h323_message_body {
+	enum {
+		eH323_UU_PDU_h323_message_body_setup = 0,
+		eH323_UU_PDU_h323_message_body_callProceeding = 1,
+		eH323_UU_PDU_h323_message_body_connect = 2,
+		eH323_UU_PDU_h323_message_body_alerting = 3,
+		eH323_UU_PDU_h323_message_body_information = 4,
+		eH323_UU_PDU_h323_message_body_releaseComplete = 5,
+		eH323_UU_PDU_h323_message_body_facility = 6,
+		eH323_UU_PDU_h323_message_body_progress = 7,
+		eH323_UU_PDU_h323_message_body_empty = 8,
+		eH323_UU_PDU_h323_message_body_status = 9,
+		eH323_UU_PDU_h323_message_body_statusInquiry = 10,
+		eH323_UU_PDU_h323_message_body_setupAcknowledge = 11,
+		eH323_UU_PDU_h323_message_body_notify = 12,
+	} choice;
+	union {
+		Setup_UUIE setup;
+		CallProceeding_UUIE callProceeding;
+		Connect_UUIE connect;
+		Alerting_UUIE alerting;
+		Facility_UUIE facility;
+		Progress_UUIE progress;
+	};
+};
+
+typedef struct H323_UU_PDU_h323_message_body H323_UU_PDU_h323_message_body;
+
+struct RequestMessage {
+	enum {
+		eRequestMessage_nonStandard = 0,
+		eRequestMessage_masterSlaveDetermination = 1,
+		eRequestMessage_terminalCapabilitySet = 2,
+		eRequestMessage_openLogicalChannel = 3,
+		eRequestMessage_closeLogicalChannel = 4,
+		eRequestMessage_requestChannelClose = 5,
+		eRequestMessage_multiplexEntrySend = 6,
+		eRequestMessage_requestMultiplexEntry = 7,
+		eRequestMessage_requestMode = 8,
+		eRequestMessage_roundTripDelayRequest = 9,
+		eRequestMessage_maintenanceLoopRequest = 10,
+		eRequestMessage_communicationModeRequest = 11,
+		eRequestMessage_conferenceRequest = 12,
+		eRequestMessage_multilinkRequest = 13,
+		eRequestMessage_logicalChannelRateRequest = 14,
+	} choice;
+	union {
+		OpenLogicalChannel openLogicalChannel;
+	};
+};
+
+typedef struct RequestMessage RequestMessage;
+
+struct OpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters {
+	enum {
+		eOpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters_h222LogicalChannelParameters = 0,
+		eOpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters_h2250LogicalChannelParameters = 1,
+	} choice;
+	union {
+		H2250LogicalChannelParameters h2250LogicalChannelParameters;
+	};
+};
+
+typedef struct OpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters OpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters;
+
+struct OpenLogicalChannelAck_reverseLogicalChannelParameters {
+	enum {
+		eOpenLogicalChannelAck_reverseLogicalChannelParameters_portNumber = -2147483648,
+		eOpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters = 1073741824,
+		eOpenLogicalChannelAck_reverseLogicalChannelParameters_replacementFor = 536870912,
+	} options;
+	OpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters multiplexParameters;
+};
+
+typedef struct OpenLogicalChannelAck_reverseLogicalChannelParameters OpenLogicalChannelAck_reverseLogicalChannelParameters;
+
+struct H2250LogicalChannelAckParameters {
+	enum {
+		eH2250LogicalChannelAckParameters_nonStandard = -2147483648,
+		eH2250LogicalChannelAckParameters_sessionID = 1073741824,
+		eH2250LogicalChannelAckParameters_mediaChannel = 536870912,
+		eH2250LogicalChannelAckParameters_mediaControlChannel = 268435456,
+		eH2250LogicalChannelAckParameters_dynamicRTPPayloadType = 134217728,
+		eH2250LogicalChannelAckParameters_flowControlToZero = 67108864,
+		eH2250LogicalChannelAckParameters_portNumber = 33554432,
+	} options;
+	H245_TransportAddress mediaChannel;
+	H245_TransportAddress mediaControlChannel;
+};
+
+typedef struct H2250LogicalChannelAckParameters H2250LogicalChannelAckParameters;
+
+struct OpenLogicalChannelAck_forwardMultiplexAckParameters {
+	enum {
+		eOpenLogicalChannelAck_forwardMultiplexAckParameters_h2250LogicalChannelAckParameters = 0,
+	} choice;
+	union {
+		H2250LogicalChannelAckParameters h2250LogicalChannelAckParameters;
+	};
+};
+
+typedef struct OpenLogicalChannelAck_forwardMultiplexAckParameters OpenLogicalChannelAck_forwardMultiplexAckParameters;
+
+struct OpenLogicalChannelAck {
+	enum {
+		eOpenLogicalChannelAck_reverseLogicalChannelParameters = -2147483648,
+		eOpenLogicalChannelAck_separateStack = 1073741824,
+		eOpenLogicalChannelAck_forwardMultiplexAckParameters = 536870912,
+		eOpenLogicalChannelAck_encryptionSync = 268435456,
+	} options;
+	OpenLogicalChannelAck_reverseLogicalChannelParameters reverseLogicalChannelParameters;
+	NetworkAccessParameters separateStack;
+	OpenLogicalChannelAck_forwardMultiplexAckParameters forwardMultiplexAckParameters;
+};
+
+typedef struct OpenLogicalChannelAck OpenLogicalChannelAck;
+
+struct ResponseMessage {
+	enum {
+		eResponseMessage_nonStandard = 0,
+		eResponseMessage_masterSlaveDeterminationAck = 1,
+		eResponseMessage_masterSlaveDeterminationReject = 2,
+		eResponseMessage_terminalCapabilitySetAck = 3,
+		eResponseMessage_terminalCapabilitySetReject = 4,
+		eResponseMessage_openLogicalChannelAck = 5,
+		eResponseMessage_openLogicalChannelReject = 6,
+		eResponseMessage_closeLogicalChannelAck = 7,
+		eResponseMessage_requestChannelCloseAck = 8,
+		eResponseMessage_requestChannelCloseReject = 9,
+		eResponseMessage_multiplexEntrySendAck = 10,
+		eResponseMessage_multiplexEntrySendReject = 11,
+		eResponseMessage_requestMultiplexEntryAck = 12,
+		eResponseMessage_requestMultiplexEntryReject = 13,
+		eResponseMessage_requestModeAck = 14,
+		eResponseMessage_requestModeReject = 15,
+		eResponseMessage_roundTripDelayResponse = 16,
+		eResponseMessage_maintenanceLoopAck = 17,
+		eResponseMessage_maintenanceLoopReject = 18,
+		eResponseMessage_communicationModeResponse = 19,
+		eResponseMessage_conferenceResponse = 20,
+		eResponseMessage_multilinkResponse = 21,
+		eResponseMessage_logicalChannelRateAcknowledge = 22,
+		eResponseMessage_logicalChannelRateReject = 23,
+	} choice;
+	union {
+		OpenLogicalChannelAck openLogicalChannelAck;
+	};
+};
+
+typedef struct ResponseMessage ResponseMessage;
+
+struct MultimediaSystemControlMessage {
+	enum {
+		eMultimediaSystemControlMessage_request = 0,
+		eMultimediaSystemControlMessage_response = 1,
+		eMultimediaSystemControlMessage_command = 2,
+		eMultimediaSystemControlMessage_indication = 3,
+	} choice;
+	union {
+		RequestMessage request;
+		ResponseMessage response;
+	};
+};
+
+typedef struct MultimediaSystemControlMessage MultimediaSystemControlMessage;
+
+struct H323_UU_PDU_h245Control {
+	int count;
+	MultimediaSystemControlMessage item[4];
+};
+
+typedef struct H323_UU_PDU_h245Control H323_UU_PDU_h245Control;
+
+struct H323_UU_PDU {
+	enum {
+		eH323_UU_PDU_nonStandardData = -2147483648,
+		eH323_UU_PDU_h4501SupplementaryService = 1073741824,
+		eH323_UU_PDU_h245Tunneling = 536870912,
+		eH323_UU_PDU_h245Control = 268435456,
+		eH323_UU_PDU_nonStandardControl = 134217728,
+		eH323_UU_PDU_callLinkage = 67108864,
+		eH323_UU_PDU_tunnelledSignallingMessage = 33554432,
+		eH323_UU_PDU_provisionalRespToH245Tunneling = 16777216,
+		eH323_UU_PDU_stimulusControl = 8388608,
+		eH323_UU_PDU_genericData = 4194304,
+	} options;
+	H323_UU_PDU_h323_message_body h323_message_body;
+	H323_UU_PDU_h245Control h245Control;
+};
+
+typedef struct H323_UU_PDU H323_UU_PDU;
+
+struct H323_UserInformation {
+	enum {
+		eH323_UserInformation_user_data = -2147483648,
+	} options;
+	H323_UU_PDU h323_uu_pdu;
+};
+
+typedef struct H323_UserInformation H323_UserInformation;
+
+typedef struct {
+	enum {
+		Q931_NationalEscape = 0,
+		Q931_Alerting = 1,
+		Q931_CallProceeding = 2,
+		Q931_Connect = 7,
+		Q931_ConnectAck = 15,
+		Q931_Progress = 3,
+		Q931_Setup = 5,
+		Q931_SetupAck = 13,
+		Q931_Resume = 38,
+		Q931_ResumeAck = 46,
+		Q931_ResumeReject = 34,
+		Q931_Suspend = 37,
+		Q931_SuspendAck = 45,
+		Q931_SuspendReject = 33,
+		Q931_UserInformation = 32,
+		Q931_Disconnect = 69,
+		Q931_Release = 77,
+		Q931_ReleaseComplete = 90,
+		Q931_Restart = 70,
+		Q931_RestartAck = 78,
+		Q931_Segment = 96,
+		Q931_CongestionCtrl = 121,
+		Q931_Information = 123,
+		Q931_Notify = 110,
+		Q931_Status = 125,
+		Q931_StatusEnquiry = 117,
+		Q931_Facility = 98,
+	} MessageType;
+	H323_UserInformation UUIE;
+} Q931;
+
+struct nf_ct_h323_master {
+	__be16 sig_port[2];
+	__be16 rtp_port[8];
+	union {
+		u_int32_t timeout;
+		u_int16_t tpkt_len[2];
+	};
+};
+
+struct field_t {
+	unsigned char type;
+	unsigned char sz;
+	unsigned char lb;
+	unsigned char ub;
+	unsigned short attr;
+	unsigned short offset;
+	const struct field_t *fields;
+};
+
+struct bitstr;
+
+typedef int (*decoder_t)(struct bitstr *, const struct field_t *, char *, int);
+
+struct bitstr {
+	unsigned char *buf;
+	unsigned char *beg;
+	unsigned char *end;
+	unsigned char *cur;
+	unsigned int bit;
+};
+
+struct PptpControlHeader;
+
+union pptp_ctrl_union;
+
+struct nf_nat_pptp_hook {
+	int (*outbound)(struct sk_buff *, struct nf_conn *, enum ip_conntrack_info, unsigned int, struct PptpControlHeader *, union pptp_ctrl_union *);
+	int (*inbound)(struct sk_buff *, struct nf_conn *, enum ip_conntrack_info, unsigned int, struct PptpControlHeader *, union pptp_ctrl_union *);
+	void (*exp_gre)(struct nf_conntrack_expect *, struct nf_conntrack_expect *);
+	void (*expectfn)(struct nf_conn *, struct nf_conntrack_expect *);
+};
+
+struct PptpControlHeader {
+	__be16 messageType;
+	__u16 reserved;
+};
+
+struct PptpStartSessionRequest {
+	__be16 protocolVersion;
+	__u16 reserved1;
+	__be32 framingCapability;
+	__be32 bearerCapability;
+	__be16 maxChannels;
+	__be16 firmwareRevision;
+	__u8 hostName[64];
+	__u8 vendorString[64];
+};
+
+struct PptpStartSessionReply {
+	__be16 protocolVersion;
+	__u8 resultCode;
+	__u8 generalErrorCode;
+	__be32 framingCapability;
+	__be32 bearerCapability;
+	__be16 maxChannels;
+	__be16 firmwareRevision;
+	__u8 hostName[64];
+	__u8 vendorString[64];
+};
+
+struct PptpStopSessionRequest {
+	__u8 reason;
+	__u8 reserved1;
+	__u16 reserved2;
+};
+
+struct PptpStopSessionReply {
+	__u8 resultCode;
+	__u8 generalErrorCode;
+	__u16 reserved1;
+};
+
+struct PptpOutCallRequest {
+	__be16 callID;
+	__be16 callSerialNumber;
+	__be32 minBPS;
+	__be32 maxBPS;
+	__be32 bearerType;
+	__be32 framingType;
+	__be16 packetWindow;
+	__be16 packetProcDelay;
+	__be16 phoneNumberLength;
+	__u16 reserved1;
+	__u8 phoneNumber[64];
+	__u8 subAddress[64];
+};
+
+struct PptpOutCallReply {
+	__be16 callID;
+	__be16 peersCallID;
+	__u8 resultCode;
+	__u8 generalErrorCode;
+	__be16 causeCode;
+	__be32 connectSpeed;
+	__be16 packetWindow;
+	__be16 packetProcDelay;
+	__be32 physChannelID;
+};
+
+struct PptpInCallRequest {
+	__be16 callID;
+	__be16 callSerialNumber;
+	__be32 callBearerType;
+	__be32 physChannelID;
+	__be16 dialedNumberLength;
+	__be16 dialingNumberLength;
+	__u8 dialedNumber[64];
+	__u8 dialingNumber[64];
+	__u8 subAddress[64];
+};
+
+struct PptpInCallReply {
+	__be16 callID;
+	__be16 peersCallID;
+	__u8 resultCode;
+	__u8 generalErrorCode;
+	__be16 packetWindow;
+	__be16 packetProcDelay;
+	__u16 reserved;
+};
+
+struct PptpInCallConnected {
+	__be16 peersCallID;
+	__u16 reserved;
+	__be32 connectSpeed;
+	__be16 packetWindow;
+	__be16 packetProcDelay;
+	__be32 callFramingType;
+};
+
+struct PptpClearCallRequest {
+	__be16 callID;
+	__u16 reserved;
+};
+
+struct PptpCallDisconnectNotify {
+	__be16 callID;
+	__u8 resultCode;
+	__u8 generalErrorCode;
+	__be16 causeCode;
+	__u16 reserved;
+	__u8 callStatistics[128];
+};
+
+struct PptpWanErrorNotify {
+	__be16 peersCallID;
+	__u16 reserved;
+	__be32 crcErrors;
+	__be32 framingErrors;
+	__be32 hardwareOverRuns;
+	__be32 bufferOverRuns;
+	__be32 timeoutErrors;
+	__be32 alignmentErrors;
+};
+
+struct PptpSetLinkInfo {
+	__be16 peersCallID;
+	__u16 reserved;
+	__be32 sendAccm;
+	__be32 recvAccm;
+};
+
+union pptp_ctrl_union {
+	struct PptpStartSessionRequest sreq;
+	struct PptpStartSessionReply srep;
+	struct PptpStopSessionRequest streq;
+	struct PptpStopSessionReply strep;
+	struct PptpOutCallRequest ocreq;
+	struct PptpOutCallReply ocack;
+	struct PptpInCallRequest icreq;
+	struct PptpInCallReply icack;
+	struct PptpInCallConnected iccon;
+	struct PptpClearCallRequest clrreq;
+	struct PptpCallDisconnectNotify disc;
+	struct PptpWanErrorNotify wanerr;
+	struct PptpSetLinkInfo setlink;
+};
+
+struct pptp_pkt_hdr {
+	__u16 packetLength;
+	__be16 packetType;
+	__be32 magicCookie;
+};
+
+enum sane_state {
+	SANE_STATE_NORMAL = 0,
+	SANE_STATE_START_REQUESTED = 1,
+};
+
+struct sane_request {
+	__be32 RPC_code;
+	__be32 handle;
+};
+
+struct sane_reply_net_start {
+	__be32 status;
+	__be16 zero;
+	__be16 port;
+};
+
+struct nf_ct_sane_master {
+	enum sane_state state;
+};
+
+struct tftphdr {
+	__be16 opcode;
+};
+
+enum ctattr_nat {
+	CTA_NAT_UNSPEC = 0,
+	CTA_NAT_V4_MINIP = 1,
+	CTA_NAT_V4_MAXIP = 2,
+	CTA_NAT_PROTO = 3,
+	CTA_NAT_V6_MINIP = 4,
+	CTA_NAT_V6_MAXIP = 5,
+	__CTA_NAT_MAX = 6,
+};
+
+enum ctattr_protonat {
+	CTA_PROTONAT_UNSPEC = 0,
+	CTA_PROTONAT_PORT_MIN = 1,
+	CTA_PROTONAT_PORT_MAX = 2,
+	__CTA_PROTONAT_MAX = 3,
+};
+
+struct nf_nat_pptp {
+	__be16 pns_call_id;
+	__be16 pac_call_id;
+};
+
+union nf_conntrack_nat_help {
+	struct nf_nat_pptp nat_pptp_info;
+};
+
+struct nf_conn_nat {
+	union nf_conntrack_nat_help help;
+	int masq_index;
+};
+
+struct nf_nat_range2 {
+	unsigned int flags;
+	union nf_inet_addr min_addr;
+	union nf_inet_addr max_addr;
+	union nf_conntrack_man_proto min_proto;
+	union nf_conntrack_man_proto max_proto;
+	union nf_conntrack_man_proto base_proto;
+};
+
+struct nf_nat_proto_clean {
+	u8 l3proto;
+	u8 l4proto;
+};
+
+struct nf_nat_lookup_hook_priv {
+	struct nf_hook_entries __attribute__((btf_type_tag("rcu"))) *entries;
+	struct callback_head callback_head;
+};
+
+struct nf_nat_hooks_net {
+	struct nf_hook_ops *nat_hook_ops;
+	unsigned int users;
+};
+
+struct nat_net {
+	struct nf_nat_hooks_net nat_proto_net[11];
+};
+
+struct inet6_ifaddr {
+	struct in6_addr addr;
+	__u32 prefix_len;
+	__u32 rt_priority;
+	__u32 valid_lft;
+	__u32 prefered_lft;
+	refcount_t refcnt;
+	spinlock_t lock;
+	int state;
+	__u32 flags;
+	__u8 dad_probes;
+	__u8 stable_privacy_retry;
+	__u16 scope;
+	__u64 dad_nonce;
+	unsigned long cstamp;
+	unsigned long tstamp;
+	struct delayed_work dad_work;
+	struct inet6_dev *idev;
+	struct fib6_info *rt;
+	struct hlist_node addr_lst;
+	struct list_head if_list;
+	struct list_head if_list_aux;
+	struct list_head tmp_list;
+	struct inet6_ifaddr *ifpub;
+	int regen_count;
+	bool tokenized;
+	u8 ifa_proto;
+	struct callback_head rcu;
+	struct in6_addr peer_addr;
+};
+
+struct masq_dev_work {
+	struct work_struct work;
+	struct net *net;
+	netns_tracker ns_tracker;
+	union nf_inet_addr addr;
+	int ifindex;
+	int (*iter)(struct nf_conn *, void *);
+};
+
+struct nf_conncount_tuple {
+	struct list_head node;
+	struct nf_conntrack_tuple tuple;
+	struct nf_conntrack_zone zone;
+	int cpu;
+	u32 jiffies32;
+};
+
+struct nf_conncount_list {
+	spinlock_t list_lock;
+	u32 last_gc;
+	struct list_head head;
+	unsigned int count;
+};
+
+struct nf_conncount_rb {
+	struct rb_node node;
+	struct nf_conncount_list list;
+	u32 key[5];
+	struct callback_head callback_head;
+};
+
+struct nf_conncount_data {
+	unsigned int keylen;
+	struct rb_root root[256];
+	struct net *net;
+	struct work_struct gc_work;
+	unsigned long pending_trees[4];
+	unsigned int gc_tree;
+};
+
+struct xt_af {
+	struct mutex mutex;
+	struct list_head match;
+	struct list_head target;
+};
+
+enum {
+	MTTG_TRAV_INIT = 0,
+	MTTG_TRAV_NFP_UNSPEC = 1,
+	MTTG_TRAV_NFP_SPEC = 2,
+	MTTG_TRAV_DONE = 3,
+};
+
+struct xt_action_param;
+
+struct xt_mtchk_param;
+
+struct xt_mtdtor_param;
+
+struct xt_match {
+	struct list_head list;
+	const char name[29];
+	u_int8_t revision;
+	bool (*match)(const struct sk_buff *, struct xt_action_param *);
+	int (*checkentry)(const struct xt_mtchk_param *);
+	void (*destroy)(const struct xt_mtdtor_param *);
+	struct module *me;
+	const char *table;
+	unsigned int matchsize;
+	unsigned int usersize;
+	unsigned int hooks;
+	unsigned short proto;
+	unsigned short family;
+};
+
+struct xt_target;
+
+struct xt_action_param {
+	union {
+		const struct xt_match *match;
+		const struct xt_target *target;
+	};
+	union {
+		const void *matchinfo;
+		const void *targinfo;
+	};
+	const struct nf_hook_state *state;
+	unsigned int thoff;
+	u16 fragoff;
+	bool hotdrop;
+};
+
+struct xt_tgchk_param;
+
+struct xt_tgdtor_param;
+
+struct xt_target {
+	struct list_head list;
+	const char name[29];
+	u_int8_t revision;
+	unsigned int (*target)(struct sk_buff *, const struct xt_action_param *);
+	int (*checkentry)(const struct xt_tgchk_param *);
+	void (*destroy)(const struct xt_tgdtor_param *);
+	struct module *me;
+	const char *table;
+	unsigned int targetsize;
+	unsigned int usersize;
+	unsigned int hooks;
+	unsigned short proto;
+	unsigned short family;
+};
+
+struct xt_tgchk_param {
+	struct net *net;
+	const char *table;
+	const void *entryinfo;
+	const struct xt_target *target;
+	void *targinfo;
+	unsigned int hook_mask;
+	u_int8_t family;
+	bool nft_compat;
+};
+
+struct xt_tgdtor_param {
+	struct net *net;
+	const struct xt_target *target;
+	void *targinfo;
+	u_int8_t family;
+};
+
+struct xt_mtchk_param {
+	struct net *net;
+	const char *table;
+	const void *entryinfo;
+	const struct xt_match *match;
+	void *matchinfo;
+	unsigned int hook_mask;
+	u_int8_t family;
+	bool nft_compat;
+};
+
+struct xt_mtdtor_param {
+	struct net *net;
+	const struct xt_match *match;
+	void *matchinfo;
+	u_int8_t family;
+};
+
+struct xt_table_info;
+
+struct xt_table {
+	struct list_head list;
+	unsigned int valid_hooks;
+	struct xt_table_info *private;
+	struct nf_hook_ops *ops;
+	struct module *me;
+	u_int8_t af;
+	int priority;
+	const char name[32];
+};
+
+struct xt_table_info {
+	unsigned int size;
+	unsigned int number;
+	unsigned int initial_entries;
+	unsigned int hook_entry[5];
+	unsigned int underflow[5];
+	unsigned int stacksize;
+	void ***jumpstack;
+	unsigned char entries[0];
+};
+
+struct xt_template {
+	struct list_head list;
+	int (*table_init)(struct net *);
+	struct module *me;
+	char name[32];
+};
+
+struct xt_entry_match {
+	union {
+		struct {
+			__u16 match_size;
+			char name[29];
+			__u8 revision;
+		} user;
+		struct {
+			__u16 match_size;
+			struct xt_match *match;
+		} kernel;
+		__u16 match_size;
+	} u;
+	unsigned char data[0];
+};
+
+struct nf_mttg_trav {
+	struct list_head *head;
+	struct list_head *curr;
+	uint8_t class;
+};
+
+struct xt_counters {
+	__u64 pcnt;
+	__u64 bcnt;
+};
+
+struct xt_entry_target {
+	union {
+		struct {
+			__u16 target_size;
+			char name[29];
+			__u8 revision;
+		} user;
+		struct {
+			__u16 target_size;
+			struct xt_target *target;
+		} kernel;
+		__u16 target_size;
+	} u;
+	unsigned char data[0];
+};
+
+struct xt_error_target {
+	struct xt_entry_target target;
+	char errorname[30];
+};
+
+struct xt_standard_target {
+	struct xt_entry_target target;
+	int verdict;
+};
+
+struct xt_counters_info {
+	char name[32];
+	unsigned int num_counters;
+	struct xt_counters counters[0];
+};
+
+struct xt_pernet {
+	struct list_head tables[11];
+};
+
+struct xt_percpu_counter_alloc_state {
+	unsigned int off;
+	const char __attribute__((btf_type_tag("percpu"))) *mem;
+};
+
+struct xt_tcp {
+	__u16 spts[2];
+	__u16 dpts[2];
+	__u8 option;
+	__u8 flg_mask;
+	__u8 flg_cmp;
+	__u8 invflags;
+};
+
+struct xt_udp {
+	__u16 spts[2];
+	__u16 dpts[2];
+	__u8 invflags;
+};
+
+struct ipt_icmp {
+	__u8 type;
+	__u8 code[2];
+	__u8 invflags;
+};
+
+struct ip6t_icmp {
+	__u8 type;
+	__u8 code[2];
+	__u8 invflags;
+};
+
+struct xt_mark_mtinfo1 {
+	__u32 mark;
+	__u32 mask;
+	__u8 invert;
+};
+
+struct xt_mark_tginfo2 {
+	__u32 mark;
+	__u32 mask;
+};
+
+enum {
+	XT_CONNMARK_SET = 0,
+	XT_CONNMARK_SAVE = 1,
+	XT_CONNMARK_RESTORE = 2,
+};
+
+enum {
+	D_SHIFT_LEFT = 0,
+	D_SHIFT_RIGHT = 1,
+};
+
+struct xt_connmark_mtinfo1 {
+	__u32 mark;
+	__u32 mask;
+	__u8 invert;
+};
+
+struct xt_connmark_tginfo1 {
+	__u32 ctmark;
+	__u32 ctmask;
+	__u32 nfmask;
+	__u8 mode;
+};
+
+struct xt_connmark_tginfo2 {
+	__u32 ctmark;
+	__u32 ctmask;
+	__u32 nfmask;
+	__u8 shift_dir;
+	__u8 shift_bits;
+	__u8 mode;
+};
+
+struct nf_nat_ipv4_range {
+	unsigned int flags;
+	__be32 min_ip;
+	__be32 max_ip;
+	union nf_conntrack_man_proto min;
+	union nf_conntrack_man_proto max;
+};
+
+struct nf_nat_ipv4_multi_range_compat {
+	unsigned int rangesize;
+	struct nf_nat_ipv4_range range[1];
+};
+
+struct nf_nat_range {
+	unsigned int flags;
+	union nf_inet_addr min_addr;
+	union nf_inet_addr max_addr;
+	union nf_conntrack_man_proto min_proto;
+	union nf_conntrack_man_proto max_proto;
+};
+
+struct xt_classify_target_info {
+	__u32 priority;
+};
+
+enum {
+	CONNSECMARK_SAVE = 1,
+	CONNSECMARK_RESTORE = 2,
+};
+
+struct xt_connsecmark_target_info {
+	__u8 mode;
+};
+
+enum {
+	XT_CT_NOTRACK = 1,
+	XT_CT_NOTRACK_ALIAS = 2,
+	XT_CT_ZONE_DIR_ORIG = 4,
+	XT_CT_ZONE_DIR_REPL = 8,
+	XT_CT_ZONE_MARK = 16,
+	XT_CT_MASK = 31,
+};
+
+struct xt_ct_target_info_v1 {
+	__u16 flags;
+	__u16 zone;
+	__u32 ct_events;
+	__u32 exp_events;
+	char helper[16];
+	char timeout[32];
+	struct nf_conn *ct;
+};
+
+struct ipt_ip {
+	struct in_addr src;
+	struct in_addr dst;
+	struct in_addr smsk;
+	struct in_addr dmsk;
+	char iniface[16];
+	char outiface[16];
+	unsigned char iniface_mask[16];
+	unsigned char outiface_mask[16];
+	__u16 proto;
+	__u8 flags;
+	__u8 invflags;
+};
+
+struct ipt_entry {
+	struct ipt_ip ip;
+	unsigned int nfcache;
+	__u16 target_offset;
+	__u16 next_offset;
+	unsigned int comefrom;
+	struct xt_counters counters;
+	unsigned char elems[0];
+};
+
+struct ip6t_ip6 {
+	struct in6_addr src;
+	struct in6_addr dst;
+	struct in6_addr smsk;
+	struct in6_addr dmsk;
+	char iniface[16];
+	char outiface[16];
+	unsigned char iniface_mask[16];
+	unsigned char outiface_mask[16];
+	__u16 proto;
+	__u8 tos;
+	__u8 flags;
+	__u8 invflags;
+};
+
+struct ip6t_entry {
+	struct ip6t_ip6 ipv6;
+	unsigned int nfcache;
+	__u16 target_offset;
+	__u16 next_offset;
+	unsigned int comefrom;
+	struct xt_counters counters;
+	unsigned char elems[0];
+};
+
+struct xt_ct_target_info {
+	__u16 flags;
+	__u16 zone;
+	__u32 ct_events;
+	__u32 exp_events;
+	char helper[16];
+	struct nf_conn *ct;
+};
+
+struct xt_DSCP_info {
+	__u8 dscp;
+};
+
+struct xt_tos_target_info {
+	__u8 tos_value;
+	__u8 tos_mask;
+};
+
+struct xt_nflog_info {
+	__u32 len;
+	__u16 group;
+	__u16 threshold;
+	__u16 flags;
+	__u16 pad;
+	char prefix[64];
+};
+
+struct xt_NFQ_info_v1 {
+	__u16 queuenum;
+	__u16 queues_total;
+};
+
+struct xt_NFQ_info {
+	__u16 queuenum;
+};
+
+struct xt_NFQ_info_v3 {
+	__u16 queuenum;
+	__u16 queues_total;
+	__u16 flags;
+};
+
+struct xt_NFQ_info_v2 {
+	__u16 queuenum;
+	__u16 queues_total;
+	__u16 bypass;
+};
+
+struct xt_secmark_target_info_v1 {
+	__u8 mode;
+	char secctx[256];
+	__u32 secid;
+};
+
+struct xt_secmark_target_info {
+	__u8 mode;
+	__u32 secid;
+	char secctx[256];
+};
+
+enum nf_tproxy_lookup_t {
+	NF_TPROXY_LOOKUP_LISTENER = 0,
+	NF_TPROXY_LOOKUP_ESTABLISHED = 1,
+};
+
+struct xt_tproxy_target_info {
+	__u32 mark_mask;
+	__u32 mark_value;
+	__be32 laddr;
+	__be16 lport;
+};
+
+struct xt_tproxy_target_info_v1 {
+	__u32 mark_mask;
+	__u32 mark_value;
+	union nf_inet_addr laddr;
+	__be16 lport;
+};
+
+struct xt_tcpmss_info {
+	__u16 mss;
+};
+
+struct xt_tee_tginfo;
+
+struct xt_tee_priv {
+	struct list_head list;
+	struct xt_tee_tginfo *tginfo;
+	int oif;
+};
+
+struct xt_tee_tginfo {
+	union nf_inet_addr gw;
+	char oif[16];
+	struct xt_tee_priv *priv;
+};
+
+struct tee_net {
+	struct list_head priv_list;
+	struct mutex lock;
+};
+
+struct idletimer_tg {
+	struct list_head entry;
+	struct alarm alarm;
+	struct timer_list timer;
+	struct work_struct work;
+	struct kobject *kobj;
+	struct device_attribute attr;
+	struct timespec64 delayed_timer_trigger;
+	struct timespec64 last_modified_timer;
+	struct timespec64 last_suspend_time;
+	struct notifier_block pm_nb;
+	int timeout;
+	unsigned int refcnt;
+	u8 timer_type;
+	bool work_pending;
+	bool send_nl_msg;
+	bool active;
+	uid_t uid;
+	bool suspend_time_valid;
+};
+
+struct idletimer_tg_info {
+	__u32 timeout;
+	char label[28];
+	struct idletimer_tg *timer;
+};
+
+struct idletimer_tg_info_v1 {
+	__u32 timeout;
+	char label[28];
+	__u8 send_nl_msg;
+	__u8 timer_type;
+	struct idletimer_tg *timer;
+};
+
+enum xt_bpf_modes {
+	XT_BPF_MODE_BYTECODE = 0,
+	XT_BPF_MODE_FD_PINNED = 1,
+	XT_BPF_MODE_FD_ELF = 2,
+};
+
+struct xt_bpf_info {
+	__u16 bpf_program_num_elem;
+	struct sock_filter bpf_program[64];
+	struct bpf_prog *filter;
+};
+
+struct xt_bpf_info_v1 {
+	__u16 mode;
+	__u16 bpf_program_num_elem;
+	__s32 fd;
+	union {
+		struct sock_filter bpf_program[64];
+		char path[512];
+	};
+	struct bpf_prog *filter;
+};
+
+enum xt_connbytes_what {
+	XT_CONNBYTES_PKTS = 0,
+	XT_CONNBYTES_BYTES = 1,
+	XT_CONNBYTES_AVGPKT = 2,
+};
+
+enum xt_connbytes_direction {
+	XT_CONNBYTES_DIR_ORIGINAL = 0,
+	XT_CONNBYTES_DIR_REPLY = 1,
+	XT_CONNBYTES_DIR_BOTH = 2,
+};
+
+struct xt_connbytes_info {
+	struct {
+		__u64 from;
+		__u64 to;
+	} count;
+	__u8 what;
+	__u8 direction;
+};
+
+enum {
+	XT_CONNLIMIT_INVERT = 1,
+	XT_CONNLIMIT_DADDR = 2,
+};
+
+struct xt_connlimit_info {
+	union {
+		union nf_inet_addr mask;
+	};
+	unsigned int limit;
+	__u32 flags;
+	struct nf_conncount_data *data;
+};
+
+enum {
+	XT_CONNTRACK_STATE = 1,
+	XT_CONNTRACK_PROTO = 2,
+	XT_CONNTRACK_ORIGSRC = 4,
+	XT_CONNTRACK_ORIGDST = 8,
+	XT_CONNTRACK_REPLSRC = 16,
+	XT_CONNTRACK_REPLDST = 32,
+	XT_CONNTRACK_STATUS = 64,
+	XT_CONNTRACK_EXPIRES = 128,
+	XT_CONNTRACK_ORIGSRC_PORT = 256,
+	XT_CONNTRACK_ORIGDST_PORT = 512,
+	XT_CONNTRACK_REPLSRC_PORT = 1024,
+	XT_CONNTRACK_REPLDST_PORT = 2048,
+	XT_CONNTRACK_DIRECTION = 4096,
+	XT_CONNTRACK_STATE_ALIAS = 8192,
+};
+
+struct xt_conntrack_mtinfo2 {
+	union nf_inet_addr origsrc_addr;
+	union nf_inet_addr origsrc_mask;
+	union nf_inet_addr origdst_addr;
+	union nf_inet_addr origdst_mask;
+	union nf_inet_addr replsrc_addr;
+	union nf_inet_addr replsrc_mask;
+	union nf_inet_addr repldst_addr;
+	union nf_inet_addr repldst_mask;
+	__u32 expires_min;
+	__u32 expires_max;
+	__u16 l4proto;
+	__be16 origsrc_port;
+	__be16 origdst_port;
+	__be16 replsrc_port;
+	__be16 repldst_port;
+	__u16 match_flags;
+	__u16 invert_flags;
+	__u16 state_mask;
+	__u16 status_mask;
+};
+
+struct xt_conntrack_mtinfo3 {
+	union nf_inet_addr origsrc_addr;
+	union nf_inet_addr origsrc_mask;
+	union nf_inet_addr origdst_addr;
+	union nf_inet_addr origdst_mask;
+	union nf_inet_addr replsrc_addr;
+	union nf_inet_addr replsrc_mask;
+	union nf_inet_addr repldst_addr;
+	union nf_inet_addr repldst_mask;
+	__u32 expires_min;
+	__u32 expires_max;
+	__u16 l4proto;
+	__u16 origsrc_port;
+	__u16 origdst_port;
+	__u16 replsrc_port;
+	__u16 repldst_port;
+	__u16 match_flags;
+	__u16 invert_flags;
+	__u16 state_mask;
+	__u16 status_mask;
+	__u16 origsrc_port_high;
+	__u16 origdst_port_high;
+	__u16 replsrc_port_high;
+	__u16 repldst_port_high;
+};
+
+struct xt_conntrack_mtinfo1 {
+	union nf_inet_addr origsrc_addr;
+	union nf_inet_addr origsrc_mask;
+	union nf_inet_addr origdst_addr;
+	union nf_inet_addr origdst_mask;
+	union nf_inet_addr replsrc_addr;
+	union nf_inet_addr replsrc_mask;
+	union nf_inet_addr repldst_addr;
+	union nf_inet_addr repldst_mask;
+	__u32 expires_min;
+	__u32 expires_max;
+	__u16 l4proto;
+	__be16 origsrc_port;
+	__be16 origdst_port;
+	__be16 replsrc_port;
+	__be16 repldst_port;
+	__u16 match_flags;
+	__u16 invert_flags;
+	__u8 state_mask;
+	__u8 status_mask;
+};
+
+struct xt_dscp_info {
+	__u8 dscp;
+	__u8 invert;
+};
+
+struct xt_tos_match_info {
+	__u8 tos_mask;
+	__u8 tos_value;
+	__u8 invert;
+};
+
+struct xt_ecn_info {
+	__u8 operation;
+	__u8 invert;
+	__u8 ip_ect;
+	union {
+		struct {
+			__u8 ect;
+		} tcp;
+	} proto;
+};
+
+struct xt_esp {
+	__u32 spis[2];
+	__u8 invflags;
+};
+
+enum {
+	XT_HASHLIMIT_HASH_DIP = 1,
+	XT_HASHLIMIT_HASH_DPT = 2,
+	XT_HASHLIMIT_HASH_SIP = 4,
+	XT_HASHLIMIT_HASH_SPT = 8,
+	XT_HASHLIMIT_INVERT = 16,
+	XT_HASHLIMIT_BYTES = 32,
+	XT_HASHLIMIT_RATE_MATCH = 64,
+};
+
+struct hashlimit_cfg1 {
+	__u32 mode;
+	__u32 avg;
+	__u32 burst;
+	__u32 size;
+	__u32 max;
+	__u32 gc_interval;
+	__u32 expire;
+	__u8 srcmask;
+	__u8 dstmask;
+};
+
+struct hashlimit_cfg2 {
+	__u64 avg;
+	__u64 burst;
+	__u32 mode;
+	__u32 size;
+	__u32 max;
+	__u32 gc_interval;
+	__u32 expire;
+	__u8 srcmask;
+	__u8 dstmask;
+};
+
+struct dsthash_dst {
+	union {
+		struct {
+			__be32 src;
+			__be32 dst;
+		} ip;
+		struct {
+			__be32 src[4];
+			__be32 dst[4];
+		} ip6;
+	};
+	__be16 src_port;
+	__be16 dst_port;
+};
+
+struct dsthash_ent {
+	struct hlist_node node;
+	struct dsthash_dst dst;
+	spinlock_t lock;
+	unsigned long expires;
+	struct {
+		unsigned long prev;
+		union {
+			struct {
+				u_int64_t credit;
+				u_int64_t credit_cap;
+				u_int64_t cost;
+			};
+			struct {
+				u_int32_t interval;
+				u_int32_t prev_window;
+				u_int64_t current_rate;
+				u_int64_t rate;
+				int64_t burst;
+			};
+		};
+	} rateinfo;
+	struct callback_head rcu;
+};
+
+struct hashlimit_cfg3 {
+	__u64 avg;
+	__u64 burst;
+	__u32 mode;
+	__u32 size;
+	__u32 max;
+	__u32 gc_interval;
+	__u32 expire;
+	__u32 interval;
+	__u8 srcmask;
+	__u8 dstmask;
+};
+
+struct xt_hashlimit_htable {
+	struct hlist_node node;
+	refcount_t use;
+	u_int8_t family;
+	bool rnd_initialized;
+	struct hashlimit_cfg3 cfg;
+	spinlock_t lock;
+	u_int32_t rnd;
+	unsigned int count;
+	struct delayed_work gc_work;
+	struct proc_dir_entry *pde;
+	const char *name;
+	struct net *net;
+	struct hlist_head hash[0];
+};
+
+struct hashlimit_net {
+	struct hlist_head htables;
+	struct proc_dir_entry *ipt_hashlimit;
+	struct proc_dir_entry *ip6t_hashlimit;
+};
+
+struct xt_hashlimit_mtinfo1 {
+	char name[16];
+	struct hashlimit_cfg1 cfg;
+	struct xt_hashlimit_htable *hinfo;
+};
+
+struct xt_hashlimit_mtinfo2 {
+	char name[255];
+	struct hashlimit_cfg2 cfg;
+	struct xt_hashlimit_htable *hinfo;
+};
+
+struct xt_hashlimit_mtinfo3 {
+	char name[255];
+	struct hashlimit_cfg3 cfg;
+	struct xt_hashlimit_htable *hinfo;
+};
+
+struct xt_helper_info {
+	int invert;
+	char name[30];
+};
+
+enum {
+	IPT_TTL_EQ = 0,
+	IPT_TTL_NE = 1,
+	IPT_TTL_LT = 2,
+	IPT_TTL_GT = 3,
+};
+
+enum {
+	IP6T_HL_EQ = 0,
+	IP6T_HL_NE = 1,
+	IP6T_HL_LT = 2,
+	IP6T_HL_GT = 3,
+};
+
+struct ipt_ttl_info {
+	__u8 mode;
+	__u8 ttl;
+};
+
+struct ip6t_hl_info {
+	__u8 mode;
+	__u8 hop_limit;
+};
+
+enum {
+	IPRANGE_SRC = 1,
+	IPRANGE_DST = 2,
+	IPRANGE_SRC_INV = 16,
+	IPRANGE_DST_INV = 32,
+};
+
+struct xt_iprange_mtinfo {
+	union nf_inet_addr src_min;
+	union nf_inet_addr src_max;
+	union nf_inet_addr dst_min;
+	union nf_inet_addr dst_max;
+	__u8 flags;
+};
+
+enum xt_l2tp_type {
+	XT_L2TP_TYPE_CONTROL = 0,
+	XT_L2TP_TYPE_DATA = 1,
+};
+
+enum {
+	XT_L2TP_TID = 1,
+	XT_L2TP_SID = 2,
+	XT_L2TP_VERSION = 4,
+	XT_L2TP_TYPE = 8,
+};
+
+struct xt_l2tp_info {
+	__u32 tid;
+	__u32 sid;
+	__u8 version;
+	__u8 type;
+	__u8 flags;
+};
+
+struct l2tp_data {
+	u32 tid;
+	u32 sid;
+	u8 type;
+	u8 version;
+};
+
+union l2tp_val {
+	__be16 val16[2];
+	__be32 val32;
+};
+
+struct xt_length_info {
+	__u16 min;
+	__u16 max;
+	__u8 invert;
+};
+
+struct xt_limit_priv;
+
+struct xt_rateinfo {
+	__u32 avg;
+	__u32 burst;
+	unsigned long prev;
+	__u32 credit;
+	__u32 credit_cap;
+	__u32 cost;
+	struct xt_limit_priv *master;
+};
+
+struct xt_limit_priv {
+	unsigned long prev;
+	u32 credit;
+};
+
+struct xt_mac_info {
+	unsigned char srcaddr[6];
+	int invert;
+};
+
+enum xt_multiport_flags {
+	XT_MULTIPORT_SOURCE = 0,
+	XT_MULTIPORT_DESTINATION = 1,
+	XT_MULTIPORT_EITHER = 2,
+};
+
+struct xt_multiport_v1 {
+	__u8 flags;
+	__u8 count;
+	__u16 ports[15];
+	__u8 pflags[15];
+	__u8 invert;
+};
+
+enum {
+	XT_OWNER_UID = 1,
+	XT_OWNER_GID = 2,
+	XT_OWNER_SOCKET = 4,
+	XT_OWNER_SUPPL_GROUPS = 8,
+};
+
+struct xt_owner_match_info {
+	__u32 uid_min;
+	__u32 uid_max;
+	__u32 gid_min;
+	__u32 gid_max;
+	__u8 match;
+	__u8 invert;
+};
+
+struct xt_pkttype_info {
+	int pkttype;
+	int invert;
+};
+
+enum xt_policy_flags {
+	XT_POLICY_MATCH_IN = 1,
+	XT_POLICY_MATCH_OUT = 2,
+	XT_POLICY_MATCH_NONE = 4,
+	XT_POLICY_MATCH_STRICT = 8,
+};
+
+struct xt_policy_spec {
+	__u8 saddr: 1;
+	__u8 daddr: 1;
+	__u8 proto: 1;
+	__u8 mode: 1;
+	__u8 spi: 1;
+	__u8 reqid: 1;
+};
+
+struct xt_policy_elem {
+	union {
+		struct {
+			union nf_inet_addr saddr;
+			union nf_inet_addr smask;
+			union nf_inet_addr daddr;
+			union nf_inet_addr dmask;
+		};
+	};
+	__be32 spi;
+	__u32 reqid;
+	__u8 proto;
+	__u8 mode;
+	struct xt_policy_spec match;
+	struct xt_policy_spec invert;
+};
+
+struct xt_policy_info {
+	struct xt_policy_elem pol[4];
+	__u16 flags;
+	__u16 len;
+};
+
+enum xt_quota_flags {
+	XT_QUOTA_INVERT = 1,
+};
+
+struct xt_quota_priv {
+	spinlock_t lock;
+	uint64_t quota;
+};
+
+struct xt_quota_info {
+	__u32 flags;
+	__u32 pad;
+	__u64 quota;
+	struct xt_quota_priv *master;
+};
+
+enum xt_quota_flags___2 {
+	XT_QUOTA_INVERT___2 = 1,
+	XT_QUOTA_GROW = 2,
+	XT_QUOTA_PACKET = 4,
+	XT_QUOTA_NO_CHANGE = 8,
+	XT_QUOTA_MASK = 15,
+};
+
+struct xt_quota_counter {
+	u_int64_t quota;
+	spinlock_t lock;
+	struct list_head list;
+	atomic_t ref;
+	char name[15];
+	struct proc_dir_entry *procfs_entry;
+};
+
+struct ulog_packet_msg {
+	unsigned long mark;
+	long timestamp_sec;
+	long timestamp_usec;
+	unsigned int hook;
+	char indev_name[16];
+	char outdev_name[16];
+	size_t data_len;
+	char prefix[32];
+	unsigned char mac_len;
+	unsigned char mac[80];
+	unsigned char payload[0];
+};
+
+typedef struct ulog_packet_msg ulog_packet_msg_t;
+
+struct xt_quota_mtinfo2 {
+	char name[15];
+	u_int8_t flags;
+	__u64 quota;
+	struct xt_quota_counter *master;
+};
+
+struct xt_socket_mtinfo1 {
+	__u8 flags;
+};
+
+enum {
+	XT_SOCKET_TRANSPARENT = 1,
+	XT_SOCKET_NOWILDCARD = 2,
+	XT_SOCKET_RESTORESKMARK = 4,
+};
+
+struct xt_socket_mtinfo2 {
+	__u8 flags;
+};
+
+struct xt_socket_mtinfo3 {
+	__u8 flags;
+};
+
+struct xt_state_info {
+	unsigned int statemask;
+};
+
+enum xt_statistic_flags {
+	XT_STATISTIC_INVERT = 1,
+};
+
+enum xt_statistic_mode {
+	XT_STATISTIC_MODE_RANDOM = 0,
+	XT_STATISTIC_MODE_NTH = 1,
+	__XT_STATISTIC_MODE_MAX = 2,
+};
+
+struct xt_statistic_priv;
+
+struct xt_statistic_info {
+	__u16 mode;
+	__u16 flags;
+	union {
+		struct {
+			__u32 probability;
+		} random;
+		struct {
+			__u32 every;
+			__u32 packet;
+			__u32 count;
+		} nth;
+	} u;
+	struct xt_statistic_priv *master;
+};
+
+struct xt_statistic_priv {
+	atomic_t count;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+enum {
+	XT_STRING_FLAG_INVERT = 1,
+	XT_STRING_FLAG_IGNORECASE = 2,
+};
+
+struct xt_string_info {
+	__u16 from_offset;
+	__u16 to_offset;
+	char algo[16];
+	char pattern[128];
+	__u8 patlen;
+	union {
+		struct {
+			__u8 invert;
+		} v0;
+		struct {
+			__u8 flags;
+		} v1;
+	} u;
+	struct ts_config *config;
+};
+
+enum {
+	XT_TIME_LOCAL_TZ = 1,
+	XT_TIME_CONTIGUOUS = 2,
+	XT_TIME_ALL_MONTHDAYS = 4294967294,
+	XT_TIME_ALL_WEEKDAYS = 254,
+	XT_TIME_MIN_DAYTIME = 0,
+	XT_TIME_MAX_DAYTIME = 86399,
+};
+
+enum {
+	DSE_FIRST = 2039,
+	SECONDS_PER_DAY = 86400,
+};
+
+struct xtm {
+	u_int8_t month;
+	u_int8_t monthday;
+	u_int8_t weekday;
+	u_int8_t hour;
+	u_int8_t minute;
+	u_int8_t second;
+	unsigned int dse;
+};
+
+struct xt_time_info {
+	__u32 date_start;
+	__u32 date_stop;
+	__u32 daytime_start;
+	__u32 daytime_stop;
+	__u32 monthdays_match;
+	__u8 weekdays_match;
+	__u8 flags;
+};
+
+enum xt_u32_ops {
+	XT_U32_AND = 0,
+	XT_U32_LEFTSH = 1,
+	XT_U32_RIGHTSH = 2,
+	XT_U32_AT = 3,
+};
+
+struct xt_u32_location_element {
+	__u32 number;
+	__u8 nextop;
+};
+
+struct xt_u32_value_element {
+	__u32 min;
+	__u32 max;
+};
+
+struct xt_u32_test {
+	struct xt_u32_location_element location[11];
+	struct xt_u32_value_element value[11];
+	__u8 nnums;
+	__u8 nvalues;
+};
+
+struct xt_u32 {
+	struct xt_u32_test tests[11];
+	__u8 ntests;
+	__u8 invert;
+};
+
+struct uncached_list {
+	spinlock_t lock;
+	struct list_head head;
+	struct list_head quarantine;
+};
+
+struct ip_sf_list {
+	struct ip_sf_list *sf_next;
+	unsigned long sf_count[2];
+	__be32 sf_inaddr;
+	unsigned char sf_gsresp;
+	unsigned char sf_oldin;
+	unsigned char sf_crcount;
+};
+
+struct rt_cache_stat {
+	unsigned int in_slow_tot;
+	unsigned int in_slow_mc;
+	unsigned int in_no_route;
+	unsigned int in_brd;
+	unsigned int in_martian_dst;
+	unsigned int in_martian_src;
+	unsigned int out_slow_tot;
+	unsigned int out_slow_mc;
+};
+
+struct ip_sf_socklist {
+	unsigned int sl_max;
+	unsigned int sl_count;
+	struct callback_head rcu;
+	__be32 sl_addr[0];
+};
+
+typedef u8 dscp_t;
+
+struct fib_alias {
+	struct hlist_node fa_list;
+	struct fib_info *fa_info;
+	dscp_t fa_dscp;
+	u8 fa_type;
+	u8 fa_state;
+	u8 fa_slen;
+	u32 tb_id;
+	s16 fa_default;
+	u8 offload;
+	u8 trap;
+	u8 offload_failed;
+	struct callback_head rcu;
+};
+
+struct ipv4_addr_key {
+	__be32 addr;
+	int vif;
+};
+
+struct inetpeer_addr {
+	union {
+		struct ipv4_addr_key a4;
+		struct in6_addr a6;
+		u32 key[4];
+	};
+	__u16 family;
+};
+
+struct inet_peer {
+	struct rb_node rb_node;
+	struct inetpeer_addr daddr;
+	u32 metrics[17];
+	u32 rate_tokens;
+	u32 n_redirects;
+	unsigned long rate_last;
+	union {
+		struct {
+			atomic_t rid;
+		};
+		struct callback_head rcu;
+	};
+	__u32 dtime;
+	refcount_t refcnt;
+};
+
+struct rtmsg {
+	unsigned char rtm_family;
+	unsigned char rtm_dst_len;
+	unsigned char rtm_src_len;
+	unsigned char rtm_tos;
+	unsigned char rtm_table;
+	unsigned char rtm_protocol;
+	unsigned char rtm_scope;
+	unsigned char rtm_type;
+	unsigned int rtm_flags;
+};
+
+struct fib_rt_info {
+	struct fib_info *fi;
+	u32 tb_id;
+	__be32 dst;
+	int dst_len;
+	dscp_t dscp;
+	u8 type;
+	u8 offload: 1;
+	u8 trap: 1;
+	u8 offload_failed: 1;
+	u8 unused: 5;
+};
+
+struct rtvia {
+	__kernel_sa_family_t rtvia_family;
+	__u8 rtvia_addr[0];
+};
+
+struct net_offload {
+	struct offload_callbacks callbacks;
+	unsigned int flags;
+};
+
+struct raw_hashinfo {
+	spinlock_t lock;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct hlist_head ht[256];
+};
+
+enum ip_defrag_users {
+	IP_DEFRAG_LOCAL_DELIVER = 0,
+	IP_DEFRAG_CALL_RA_CHAIN = 1,
+	IP_DEFRAG_CONNTRACK_IN = 2,
+	__IP_DEFRAG_CONNTRACK_IN_END = 65537,
+	IP_DEFRAG_CONNTRACK_OUT = 65538,
+	__IP_DEFRAG_CONNTRACK_OUT_END = 131073,
+	IP_DEFRAG_CONNTRACK_BRIDGE_IN = 131074,
+	__IP_DEFRAG_CONNTRACK_BRIDGE_IN = 196609,
+	IP_DEFRAG_VS_IN = 196610,
+	IP_DEFRAG_VS_OUT = 196611,
+	IP_DEFRAG_VS_FWD = 196612,
+	IP_DEFRAG_AF_PACKET = 196613,
+	IP_DEFRAG_MACVLAN = 196614,
+};
+
+enum {
+	XFRM_DEV_OFFLOAD_UNSPECIFIED = 0,
+	XFRM_DEV_OFFLOAD_CRYPTO = 1,
+	XFRM_DEV_OFFLOAD_PACKET = 2,
+};
+
+enum {
+	INET_FRAG_FIRST_IN = 1,
+	INET_FRAG_LAST_IN = 2,
+	INET_FRAG_COMPLETE = 4,
+	INET_FRAG_HASH_DEAD = 8,
+	INET_FRAG_DROP = 16,
+};
+
+struct ipq {
+	struct inet_frag_queue q;
+	u8 ecn;
+	u16 max_df_size;
+	int iif;
+	unsigned int rid;
+	struct inet_peer *peer;
+};
+
+enum pkt_hash_types {
+	PKT_HASH_TYPE_NONE = 0,
+	PKT_HASH_TYPE_L2 = 1,
+	PKT_HASH_TYPE_L3 = 2,
+	PKT_HASH_TYPE_L4 = 3,
+};
+
+enum {
+	LWTUNNEL_XMIT_DONE = 0,
+	LWTUNNEL_XMIT_CONTINUE = 256,
+};
+
+struct ip_frag_state {
+	bool DF;
+	unsigned int hlen;
+	unsigned int ll_rs;
+	unsigned int mtu;
+	unsigned int left;
+	int offset;
+	int ptr;
+	__be16 not_last_frag;
+};
+
+struct ip_fraglist_iter {
+	struct sk_buff *frag;
+	struct iphdr *iph;
+	int offset;
+	unsigned int hlen;
+};
+
+struct ipcm_cookie {
+	struct sockcm_cookie sockc;
+	__be32 addr;
+	int oif;
+	struct ip_options_rcu *opt;
+	__u8 protocol;
+	__u8 ttl;
+	__s16 tos;
+	char priority;
+	__u16 gso_size;
+	u64 android_kabi_reserved1;
+};
+
+struct ip_reply_arg {
+	struct kvec iov[1];
+	int flags;
+	__wsum csum;
+	int csumoffset;
+	int bound_dev_if;
+	u8 tos;
+	kuid_t uid;
+};
+
+struct ip_options_data {
+	struct ip_options_rcu opt;
+	char data[40];
+};
+
+struct in_pktinfo {
+	int ipi_ifindex;
+	struct in_addr ipi_spec_dst;
+	struct in_addr ipi_addr;
+};
+
+struct ip_mreq_source {
+	__be32 imr_multiaddr;
+	__be32 imr_interface;
+	__be32 imr_sourceaddr;
+};
+
+struct ip_msfilter {
+	__be32 imsf_multiaddr;
+	__be32 imsf_interface;
+	__u32 imsf_fmode;
+	__u32 imsf_numsrc;
+	union {
+		__be32 imsf_slist[1];
+		struct {
+			struct {} __empty_imsf_slist_flex;
+			__be32 imsf_slist_flex[0];
+		};
+	};
+};
+
+struct group_source_req {
+	__u32 gsr_interface;
+	struct __kernel_sockaddr_storage gsr_group;
+	struct __kernel_sockaddr_storage gsr_source;
+};
+
+struct compat_group_source_req {
+	__u32 gsr_interface;
+	struct __kernel_sockaddr_storage gsr_group;
+	struct __kernel_sockaddr_storage gsr_source;
+} __attribute__((packed));
+
+struct group_filter {
+	union {
+		struct {
+			__u32 gf_interface_aux;
+			struct __kernel_sockaddr_storage gf_group_aux;
+			__u32 gf_fmode_aux;
+			__u32 gf_numsrc_aux;
+			struct __kernel_sockaddr_storage gf_slist[1];
+		};
+		struct {
+			__u32 gf_interface;
+			struct __kernel_sockaddr_storage gf_group;
+			__u32 gf_fmode;
+			__u32 gf_numsrc;
+			struct __kernel_sockaddr_storage gf_slist_flex[0];
+		};
+	};
+};
+
+struct compat_group_req {
+	__u32 gr_interface;
+	struct __kernel_sockaddr_storage gr_group;
+} __attribute__((packed));
+
+struct group_req {
+	__u32 gr_interface;
+	struct __kernel_sockaddr_storage gr_group;
+};
+
+struct compat_group_filter {
+	union {
+		struct {
+			__u32 gf_interface_aux;
+			struct __kernel_sockaddr_storage gf_group_aux;
+			__u32 gf_fmode_aux;
+			__u32 gf_numsrc_aux;
+			struct __kernel_sockaddr_storage gf_slist[1];
+		} __attribute__((packed));
+		struct {
+			__u32 gf_interface;
+			struct __kernel_sockaddr_storage gf_group;
+			__u32 gf_fmode;
+			__u32 gf_numsrc;
+			struct __kernel_sockaddr_storage gf_slist_flex[0];
+		} __attribute__((packed));
+	};
+};
+
+typedef u32 inet_ehashfn_t(const struct net *, const __be32, const __u16, const __be32, const __be16);
+
+struct tcpvegas_info {
+	__u32 tcpv_enabled;
+	__u32 tcpv_rttcnt;
+	__u32 tcpv_rtt;
+	__u32 tcpv_minrtt;
+};
+
+struct tcp_dctcp_info {
+	__u16 dctcp_enabled;
+	__u16 dctcp_ce_state;
+	__u32 dctcp_alpha;
+	__u32 dctcp_ab_ecn;
+	__u32 dctcp_ab_tot;
+};
+
+struct tcp_bbr_info {
+	__u32 bbr_bw_lo;
+	__u32 bbr_bw_hi;
+	__u32 bbr_min_rtt;
+	__u32 bbr_pacing_gain;
+	__u32 bbr_cwnd_gain;
+};
+
+union tcp_cc_info {
+	struct tcpvegas_info vegas;
+	struct tcp_dctcp_info dctcp;
+	struct tcp_bbr_info bbr;
+};
+
+enum tsq_enum {
+	TSQ_THROTTLED = 0,
+	TSQ_QUEUED = 1,
+	TCP_TSQ_DEFERRED = 2,
+	TCP_WRITE_TIMER_DEFERRED = 3,
+	TCP_DELACK_TIMER_DEFERRED = 4,
+	TCP_MTU_REDUCED_DEFERRED = 5,
+};
+
+enum tcp_chrono {
+	TCP_CHRONO_UNSPEC = 0,
+	TCP_CHRONO_BUSY = 1,
+	TCP_CHRONO_RWND_LIMITED = 2,
+	TCP_CHRONO_SNDBUF_LIMITED = 3,
+	__TCP_CHRONO_MAX = 4,
+};
+
+enum {
+	TCP_NO_QUEUE = 0,
+	TCP_RECV_QUEUE = 1,
+	TCP_SEND_QUEUE = 2,
+	TCP_QUEUES_NR = 3,
+};
+
+enum inet_csk_ack_state_t {
+	ICSK_ACK_SCHED = 1,
+	ICSK_ACK_TIMER = 2,
+	ICSK_ACK_PUSHED = 4,
+	ICSK_ACK_PUSHED2 = 8,
+	ICSK_ACK_NOW = 16,
+	ICSK_ACK_NOMEM = 32,
+};
+
+enum {
+	TCP_CMSG_INQ = 1,
+	TCP_CMSG_TS = 2,
+};
+
+enum {
+	BPF_TCP_ESTABLISHED = 1,
+	BPF_TCP_SYN_SENT = 2,
+	BPF_TCP_SYN_RECV = 3,
+	BPF_TCP_FIN_WAIT1 = 4,
+	BPF_TCP_FIN_WAIT2 = 5,
+	BPF_TCP_TIME_WAIT = 6,
+	BPF_TCP_CLOSE = 7,
+	BPF_TCP_CLOSE_WAIT = 8,
+	BPF_TCP_LAST_ACK = 9,
+	BPF_TCP_LISTEN = 10,
+	BPF_TCP_CLOSING = 11,
+	BPF_TCP_NEW_SYN_RECV = 12,
+	BPF_TCP_MAX_STATES = 13,
+};
+
+enum {
+	TCP_MIB_NUM = 0,
+	TCP_MIB_RTOALGORITHM = 1,
+	TCP_MIB_RTOMIN = 2,
+	TCP_MIB_RTOMAX = 3,
+	TCP_MIB_MAXCONN = 4,
+	TCP_MIB_ACTIVEOPENS = 5,
+	TCP_MIB_PASSIVEOPENS = 6,
+	TCP_MIB_ATTEMPTFAILS = 7,
+	TCP_MIB_ESTABRESETS = 8,
+	TCP_MIB_CURRESTAB = 9,
+	TCP_MIB_INSEGS = 10,
+	TCP_MIB_OUTSEGS = 11,
+	TCP_MIB_RETRANSSEGS = 12,
+	TCP_MIB_INERRS = 13,
+	TCP_MIB_OUTRSTS = 14,
+	TCP_MIB_CSUMERRORS = 15,
+	__TCP_MIB_MAX = 16,
+};
+
+enum {
+	TCP_NLA_PAD = 0,
+	TCP_NLA_BUSY = 1,
+	TCP_NLA_RWND_LIMITED = 2,
+	TCP_NLA_SNDBUF_LIMITED = 3,
+	TCP_NLA_DATA_SEGS_OUT = 4,
+	TCP_NLA_TOTAL_RETRANS = 5,
+	TCP_NLA_PACING_RATE = 6,
+	TCP_NLA_DELIVERY_RATE = 7,
+	TCP_NLA_SND_CWND = 8,
+	TCP_NLA_REORDERING = 9,
+	TCP_NLA_MIN_RTT = 10,
+	TCP_NLA_RECUR_RETRANS = 11,
+	TCP_NLA_DELIVERY_RATE_APP_LMT = 12,
+	TCP_NLA_SNDQ_SIZE = 13,
+	TCP_NLA_CA_STATE = 14,
+	TCP_NLA_SND_SSTHRESH = 15,
+	TCP_NLA_DELIVERED = 16,
+	TCP_NLA_DELIVERED_CE = 17,
+	TCP_NLA_BYTES_SENT = 18,
+	TCP_NLA_BYTES_RETRANS = 19,
+	TCP_NLA_DSACK_DUPS = 20,
+	TCP_NLA_REORD_SEEN = 21,
+	TCP_NLA_SRTT = 22,
+	TCP_NLA_TIMEOUT_REHASH = 23,
+	TCP_NLA_BYTES_NOTSENT = 24,
+	TCP_NLA_EDT = 25,
+	TCP_NLA_TTL = 26,
+	TCP_NLA_REHASH = 27,
+};
+
+struct tcp_skb_cb {
+	__u32 seq;
+	__u32 end_seq;
+	union {
+		__u32 tcp_tw_isn;
+		struct {
+			u16 tcp_gso_segs;
+			u16 tcp_gso_size;
+		};
+	};
+	__u8 tcp_flags;
+	__u8 sacked;
+	__u8 ip_dsfield;
+	__u8 txstamp_ack: 1;
+	__u8 eor: 1;
+	__u8 has_rxtstamp: 1;
+	__u8 unused: 5;
+	__u32 ack_seq;
+	union {
+		struct {
+			__u32 is_app_limited: 1;
+			__u32 delivered_ce: 20;
+			__u32 unused: 11;
+			__u32 delivered;
+			u64 first_tx_mstamp;
+			u64 delivered_mstamp;
+		} tx;
+		union {
+			struct inet_skb_parm h4;
+			struct inet6_skb_parm h6;
+		} header;
+	};
+};
+
+struct tcp_splice_state {
+	struct pipe_inode_info *pipe;
+	size_t len;
+	unsigned int flags;
+};
+
+struct tcp_info {
+	__u8 tcpi_state;
+	__u8 tcpi_ca_state;
+	__u8 tcpi_retransmits;
+	__u8 tcpi_probes;
+	__u8 tcpi_backoff;
+	__u8 tcpi_options;
+	__u8 tcpi_snd_wscale: 4;
+	__u8 tcpi_rcv_wscale: 4;
+	__u8 tcpi_delivery_rate_app_limited: 1;
+	__u8 tcpi_fastopen_client_fail: 2;
+	__u32 tcpi_rto;
+	__u32 tcpi_ato;
+	__u32 tcpi_snd_mss;
+	__u32 tcpi_rcv_mss;
+	__u32 tcpi_unacked;
+	__u32 tcpi_sacked;
+	__u32 tcpi_lost;
+	__u32 tcpi_retrans;
+	__u32 tcpi_fackets;
+	__u32 tcpi_last_data_sent;
+	__u32 tcpi_last_ack_sent;
+	__u32 tcpi_last_data_recv;
+	__u32 tcpi_last_ack_recv;
+	__u32 tcpi_pmtu;
+	__u32 tcpi_rcv_ssthresh;
+	__u32 tcpi_rtt;
+	__u32 tcpi_rttvar;
+	__u32 tcpi_snd_ssthresh;
+	__u32 tcpi_snd_cwnd;
+	__u32 tcpi_advmss;
+	__u32 tcpi_reordering;
+	__u32 tcpi_rcv_rtt;
+	__u32 tcpi_rcv_space;
+	__u32 tcpi_total_retrans;
+	__u64 tcpi_pacing_rate;
+	__u64 tcpi_max_pacing_rate;
+	__u64 tcpi_bytes_acked;
+	__u64 tcpi_bytes_received;
+	__u32 tcpi_segs_out;
+	__u32 tcpi_segs_in;
+	__u32 tcpi_notsent_bytes;
+	__u32 tcpi_min_rtt;
+	__u32 tcpi_data_segs_in;
+	__u32 tcpi_data_segs_out;
+	__u64 tcpi_delivery_rate;
+	__u64 tcpi_busy_time;
+	__u64 tcpi_rwnd_limited;
+	__u64 tcpi_sndbuf_limited;
+	__u32 tcpi_delivered;
+	__u32 tcpi_delivered_ce;
+	__u64 tcpi_bytes_sent;
+	__u64 tcpi_bytes_retrans;
+	__u32 tcpi_dsack_dups;
+	__u32 tcpi_reord_seen;
+	__u32 tcpi_rcv_ooopack;
+	__u32 tcpi_snd_wnd;
+	__u32 tcpi_rcv_wnd;
+	__u32 tcpi_rehash;
+};
+
+struct tcp_zerocopy_receive {
+	__u64 address;
+	__u32 length;
+	__u32 recv_skip_hint;
+	__u32 inq;
+	__s32 err;
+	__u64 copybuf_address;
+	__s32 copybuf_len;
+	__u32 flags;
+	__u64 msg_control;
+	__u64 msg_controllen;
+	__u32 msg_flags;
+	__u32 reserved;
+};
+
+struct tcp_repair_opt {
+	__u32 opt_code;
+	__u32 opt_val;
+};
+
+struct tcp_repair_window {
+	__u32 snd_wl1;
+	__u32 snd_wnd;
+	__u32 max_window;
+	__u32 rcv_wnd;
+	__u32 rcv_wup;
+};
+
+enum tcp_ca_ack_event_flags {
+	CA_ACK_SLOWPATH = 1,
+	CA_ACK_WIN_UPDATE = 2,
+	CA_ACK_ECE = 4,
+};
+
+enum tcp_queue {
+	TCP_FRAG_IN_WRITE_QUEUE = 0,
+	TCP_FRAG_IN_RTX_QUEUE = 1,
+};
+
+enum tcp_fastopen_client_fail {
+	TFO_STATUS_UNSPEC = 0,
+	TFO_COOKIE_UNAVAILABLE = 1,
+	TFO_DATA_NOT_ACKED = 2,
+	TFO_SYN_RETRANSMITTED = 3,
+};
+
+struct tcp_sacktag_state {
+	u64 first_sackt;
+	u64 last_sackt;
+	u32 reord;
+	u32 sack_delivered;
+	int flag;
+	unsigned int mss_now;
+	struct rate_sample *rate;
+};
+
+struct tsq_tasklet {
+	struct tasklet_struct tasklet;
+	struct list_head head;
+};
+
+enum tsq_flags {
+	TSQF_THROTTLED = 1,
+	TSQF_QUEUED = 2,
+	TCPF_TSQ_DEFERRED = 4,
+	TCPF_WRITE_TIMER_DEFERRED = 8,
+	TCPF_DELACK_TIMER_DEFERRED = 16,
+	TCPF_MTU_REDUCED_DEFERRED = 32,
+};
+
+enum {
+	BPF_WRITE_HDR_TCP_CURRENT_MSS = 1,
+	BPF_WRITE_HDR_TCP_SYNACK_COOKIE = 2,
+};
+
+struct mptcp_out_options {};
+
+struct tcp_out_options {
+	u16 options;
+	u16 mss;
+	u8 ws;
+	u8 num_sack_blocks;
+	u8 hash_size;
+	u8 bpf_opt_len;
+	__u8 *hash_location;
+	__u32 tsval;
+	__u32 tsecr;
+	struct tcp_fastopen_cookie *fastopen_cookie;
+	struct mptcp_out_options mptcp;
+};
+
+union tcp_md5_addr {
+	struct in_addr a4;
+	struct in6_addr a6;
+};
+
+struct tcp_md5sig_key {
+	struct hlist_node node;
+	u8 keylen;
+	u8 family;
+	u8 prefixlen;
+	u8 flags;
+	union tcp_md5_addr addr;
+	int l3index;
+	u8 key[80];
+	struct callback_head rcu;
+};
+
+struct tcp_seq_afinfo {
+	sa_family_t family;
+};
+
+enum {
+	ICMP_MIB_NUM = 0,
+	ICMP_MIB_INMSGS = 1,
+	ICMP_MIB_INERRORS = 2,
+	ICMP_MIB_INDESTUNREACHS = 3,
+	ICMP_MIB_INTIMEEXCDS = 4,
+	ICMP_MIB_INPARMPROBS = 5,
+	ICMP_MIB_INSRCQUENCHS = 6,
+	ICMP_MIB_INREDIRECTS = 7,
+	ICMP_MIB_INECHOS = 8,
+	ICMP_MIB_INECHOREPS = 9,
+	ICMP_MIB_INTIMESTAMPS = 10,
+	ICMP_MIB_INTIMESTAMPREPS = 11,
+	ICMP_MIB_INADDRMASKS = 12,
+	ICMP_MIB_INADDRMASKREPS = 13,
+	ICMP_MIB_OUTMSGS = 14,
+	ICMP_MIB_OUTERRORS = 15,
+	ICMP_MIB_OUTDESTUNREACHS = 16,
+	ICMP_MIB_OUTTIMEEXCDS = 17,
+	ICMP_MIB_OUTPARMPROBS = 18,
+	ICMP_MIB_OUTSRCQUENCHS = 19,
+	ICMP_MIB_OUTREDIRECTS = 20,
+	ICMP_MIB_OUTECHOS = 21,
+	ICMP_MIB_OUTECHOREPS = 22,
+	ICMP_MIB_OUTTIMESTAMPS = 23,
+	ICMP_MIB_OUTTIMESTAMPREPS = 24,
+	ICMP_MIB_OUTADDRMASKS = 25,
+	ICMP_MIB_OUTADDRMASKREPS = 26,
+	ICMP_MIB_CSUMERRORS = 27,
+	ICMP_MIB_RATELIMITGLOBAL = 28,
+	ICMP_MIB_RATELIMITHOST = 29,
+	__ICMP_MIB_MAX = 30,
+};
+
+enum tcp_tw_status {
+	TCP_TW_SUCCESS = 0,
+	TCP_TW_RST = 1,
+	TCP_TW_ACK = 2,
+	TCP_TW_SYN = 3,
+};
+
+enum tcp_seq_states {
+	TCP_SEQ_STATE_LISTENING = 0,
+	TCP_SEQ_STATE_ESTABLISHED = 1,
+};
+
+struct tcp_iter_state {
+	struct seq_net_private p;
+	enum tcp_seq_states state;
+	struct sock *syn_wait_sk;
+	int bucket;
+	int offset;
+	int sbucket;
+	int num;
+	loff_t last_pos;
+};
+
+struct bpf_iter__tcp {
+	union {
+		struct bpf_iter_meta *meta;
+	};
+	union {
+		struct sock_common *sk_common;
+	};
+	uid_t uid;
+};
+
+struct bpf_tcp_iter_state {
+	struct tcp_iter_state state;
+	unsigned int cur_sk;
+	unsigned int end_sk;
+	unsigned int max_sk;
+	struct sock **batch;
+	bool st_bucket_done;
+};
+
+struct tcp_metrics_block;
+
+struct tcpm_hash_bucket {
+	struct tcp_metrics_block __attribute__((btf_type_tag("rcu"))) *chain;
+};
+
+struct tcp_fastopen_metrics {
+	u16 mss;
+	u16 syn_loss: 10;
+	u16 try_exp: 2;
+	unsigned long last_syn_loss;
+	struct tcp_fastopen_cookie cookie;
+};
+
+struct tcp_metrics_block {
+	struct tcp_metrics_block __attribute__((btf_type_tag("rcu"))) *tcpm_next;
+	struct net *tcpm_net;
+	struct inetpeer_addr tcpm_saddr;
+	struct inetpeer_addr tcpm_daddr;
+	unsigned long tcpm_stamp;
+	u32 tcpm_lock;
+	u32 tcpm_vals[5];
+	struct tcp_fastopen_metrics tcpm_fastopen;
+	struct callback_head callback_head;
+};
+
+enum tcp_metric_index {
+	TCP_METRIC_RTT = 0,
+	TCP_METRIC_RTTVAR = 1,
+	TCP_METRIC_SSTHRESH = 2,
+	TCP_METRIC_CWND = 3,
+	TCP_METRIC_REORDERING = 4,
+	TCP_METRIC_RTT_US = 5,
+	TCP_METRIC_RTTVAR_US = 6,
+	__TCP_METRIC_MAX = 7,
+};
+
+enum {
+	TCP_METRICS_ATTR_UNSPEC = 0,
+	TCP_METRICS_ATTR_ADDR_IPV4 = 1,
+	TCP_METRICS_ATTR_ADDR_IPV6 = 2,
+	TCP_METRICS_ATTR_AGE = 3,
+	TCP_METRICS_ATTR_TW_TSVAL = 4,
+	TCP_METRICS_ATTR_TW_TS_STAMP = 5,
+	TCP_METRICS_ATTR_VALS = 6,
+	TCP_METRICS_ATTR_FOPEN_MSS = 7,
+	TCP_METRICS_ATTR_FOPEN_SYN_DROPS = 8,
+	TCP_METRICS_ATTR_FOPEN_SYN_DROP_TS = 9,
+	TCP_METRICS_ATTR_FOPEN_COOKIE = 10,
+	TCP_METRICS_ATTR_SADDR_IPV4 = 11,
+	TCP_METRICS_ATTR_SADDR_IPV6 = 12,
+	TCP_METRICS_ATTR_PAD = 13,
+	__TCP_METRICS_ATTR_MAX = 14,
+};
+
+enum {
+	TCP_METRICS_CMD_UNSPEC = 0,
+	TCP_METRICS_CMD_GET = 1,
+	TCP_METRICS_CMD_DEL = 2,
+	__TCP_METRICS_CMD_MAX = 3,
+};
+
+struct tcp_plb_state {
+	u8 consec_cong_rounds: 5;
+	u8 unused: 3;
+	u32 pause_until;
+};
+
+struct icmp_filter {
+	__u32 data;
+};
+
+struct raw_sock {
+	struct inet_sock inet;
+	struct icmp_filter filter;
+	u32 ipmr_table;
+};
+
+struct raw_frag_vec {
+	struct msghdr *msg;
+	union {
+		struct icmphdr icmph;
+		char c[1];
+	} hdr;
+	int hlen;
+};
+
+struct raw_iter_state {
+	struct seq_net_private p;
+	int bucket;
+};
+
+struct udp_seq_afinfo {
+	sa_family_t family;
+	struct udp_table *udp_table;
+};
+
+enum {
+	UDP_FLAGS_CORK = 0,
+	UDP_FLAGS_NO_CHECK6_TX = 1,
+	UDP_FLAGS_NO_CHECK6_RX = 2,
+	UDP_FLAGS_GRO_ENABLED = 3,
+	UDP_FLAGS_ACCEPT_FRAGLIST = 4,
+	UDP_FLAGS_ACCEPT_L4 = 5,
+	UDP_FLAGS_ENCAP_ENABLED = 6,
+	UDP_FLAGS_UDPLITE_SEND_CC = 7,
+	UDP_FLAGS_UDPLITE_RECV_CC = 8,
+};
+
+enum {
+	UDP_MIB_NUM = 0,
+	UDP_MIB_INDATAGRAMS = 1,
+	UDP_MIB_NOPORTS = 2,
+	UDP_MIB_INERRORS = 3,
+	UDP_MIB_OUTDATAGRAMS = 4,
+	UDP_MIB_RCVBUFERRORS = 5,
+	UDP_MIB_SNDBUFERRORS = 6,
+	UDP_MIB_CSUMERRORS = 7,
+	UDP_MIB_IGNOREDMULTI = 8,
+	UDP_MIB_MEMERRORS = 9,
+	__UDP_MIB_MAX = 10,
+};
+
+struct udp_skb_cb {
+	union {
+		struct inet_skb_parm h4;
+		struct inet6_skb_parm h6;
+	} header;
+	__u16 cscov;
+	__u8 partial_cov;
+};
+
+struct ip_tunnel_encap_ops {
+	size_t (*encap_hlen)(struct ip_tunnel_encap *);
+	int (*build_header)(struct sk_buff *, struct ip_tunnel_encap *, u8 *, struct flowi4 *);
+	int (*err_handler)(struct sk_buff *, u32);
+};
+
+struct udp_dev_scratch {
+	u32 _tsize_state;
+	u16 len;
+	bool is_linear;
+	bool csum_unnecessary;
+};
+
+struct bpf_iter__udp {
+	union {
+		struct bpf_iter_meta *meta;
+	};
+	union {
+		struct udp_sock *udp_sk;
+	};
+	uid_t uid;
+	long: 0;
+	int bucket;
+};
+
+struct udp_iter_state {
+	struct seq_net_private p;
+	int bucket;
+};
+
+struct bpf_udp_iter_state {
+	struct udp_iter_state state;
+	unsigned int cur_sk;
+	unsigned int end_sk;
+	unsigned int max_sk;
+	int offset;
+	struct sock **batch;
+	bool st_bucket_done;
+};
+
+struct inet_protosw {
+	struct list_head list;
+	unsigned short type;
+	unsigned short protocol;
+	struct proto *prot;
+	const struct proto_ops *ops;
+	unsigned char flags;
+};
+
+typedef struct sk_buff * (*gro_receive_sk_t)(struct sock *, struct list_head *, struct sk_buff *);
+
+typedef struct sk_buff * (*gro_receive_t)(struct list_head *, struct sk_buff *);
+
+typedef struct sock * (*udp_lookup_t)(const struct sk_buff *, __be16, __be16);
+
+struct arpreq {
+	struct sockaddr arp_pa;
+	struct sockaddr arp_ha;
+	int arp_flags;
+	struct sockaddr arp_netmask;
+	char arp_dev[16];
+};
+
+struct icmp_err {
+	int errno;
+	unsigned int fatal: 1;
+};
+
+struct icmp_control {
+	enum skb_drop_reason (*handler)(struct sk_buff *);
+	short error;
+};
+
+enum {
+	XFRM_LOOKUP_ICMP = 1,
+	XFRM_LOOKUP_QUEUE = 2,
+	XFRM_LOOKUP_KEEP_DST_REF = 4,
+};
+
+struct icmp_bxm {
+	struct sk_buff *skb;
+	int offset;
+	int data_len;
+	struct {
+		struct icmphdr icmph;
+		__be32 times[3];
+	} data;
+	int head_len;
+	struct ip_options_data replyopts;
+};
+
+struct icmp_extobj_hdr {
+	__be16 length;
+	__u8 class_num;
+	__u8 class_type;
+};
+
+struct icmp_ext_hdr {
+	__u8 reserved1: 4;
+	__u8 version: 4;
+	__u8 reserved2;
+	__sum16 checksum;
+};
+
+struct icmp_ext_echo_ctype3_hdr {
+	__be16 afi;
+	__u8 addrlen;
+	__u8 reserved;
+};
+
+struct icmp_ext_echo_iio {
+	struct icmp_extobj_hdr extobj_hdr;
+	union {
+		char name[16];
+		__be32 ifindex;
+		struct {
+			struct icmp_ext_echo_ctype3_hdr ctype3_hdr;
+			union {
+				__be32 ipv4_addr;
+				struct in6_addr ipv6_addr;
+			} ip_addr;
+		} addr;
+	} ident;
+};
+
+struct devinet_sysctl_table {
+	struct ctl_table_header *sysctl_header;
+	struct ctl_table devinet_vars[34];
+};
+
+enum {
+	IFA_UNSPEC = 0,
+	IFA_ADDRESS = 1,
+	IFA_LOCAL = 2,
+	IFA_LABEL = 3,
+	IFA_BROADCAST = 4,
+	IFA_ANYCAST = 5,
+	IFA_CACHEINFO = 6,
+	IFA_MULTICAST = 7,
+	IFA_FLAGS = 8,
+	IFA_RT_PRIORITY = 9,
+	IFA_TARGET_NETNSID = 10,
+	IFA_PROTO = 11,
+	__IFA_MAX = 12,
+};
+
+enum {
+	NETCONFA_UNSPEC = 0,
+	NETCONFA_IFINDEX = 1,
+	NETCONFA_FORWARDING = 2,
+	NETCONFA_RP_FILTER = 3,
+	NETCONFA_MC_FORWARDING = 4,
+	NETCONFA_PROXY_NEIGH = 5,
+	NETCONFA_IGNORE_ROUTES_WITH_LINKDOWN = 6,
+	NETCONFA_INPUT = 7,
+	NETCONFA_BC_FORWARDING = 8,
+	__NETCONFA_MAX = 9,
+};
+
+enum {
+	IFLA_INET_UNSPEC = 0,
+	IFLA_INET_CONF = 1,
+	__IFLA_INET_MAX = 2,
+};
+
+struct ifaddrmsg {
+	__u8 ifa_family;
+	__u8 ifa_prefixlen;
+	__u8 ifa_flags;
+	__u8 ifa_scope;
+	__u32 ifa_index;
+};
+
+struct ifa_cacheinfo {
+	__u32 ifa_prefered;
+	__u32 ifa_valid;
+	__u32 cstamp;
+	__u32 tstamp;
+};
+
+struct inet_fill_args {
+	u32 portid;
+	u32 seq;
+	int event;
+	unsigned int flags;
+	int netnsid;
+	int ifindex;
+};
+
+struct netconfmsg {
+	__u8 ncm_family;
+};
+
+struct in_validator_info {
+	__be32 ivi_addr;
+	struct in_device *ivi_dev;
+	struct netlink_ext_ack *extack;
+};
+
+struct rtentry {
+	unsigned long rt_pad1;
+	struct sockaddr rt_dst;
+	struct sockaddr rt_gateway;
+	struct sockaddr rt_genmask;
+	unsigned short rt_flags;
+	short rt_pad2;
+	unsigned long rt_pad3;
+	void *rt_pad4;
+	short rt_metric;
+	char __attribute__((btf_type_tag("user"))) *rt_dev;
+	unsigned long rt_mtu;
+	unsigned long rt_window;
+	unsigned short rt_irtt;
+};
+
+struct compat_rtentry {
+	u32 rt_pad1;
+	struct sockaddr rt_dst;
+	struct sockaddr rt_gateway;
+	struct sockaddr rt_genmask;
+	unsigned short rt_flags;
+	short rt_pad2;
+	u32 rt_pad3;
+	unsigned char rt_tos;
+	unsigned char rt_class;
+	short rt_pad4;
+	short rt_metric;
+	compat_uptr_t rt_dev;
+	u32 rt_mtu;
+	u32 rt_window;
+	unsigned short rt_irtt;
+};
+
+struct igmphdr {
+	__u8 type;
+	__u8 code;
+	__sum16 csum;
+	__be32 group;
+};
+
+struct igmpv3_query {
+	__u8 type;
+	__u8 code;
+	__sum16 csum;
+	__be32 group;
+	__u8 qrv: 3;
+	__u8 suppress: 1;
+	__u8 resv: 4;
+	__u8 qqic;
+	__be16 nsrcs;
+	__be32 srcs[0];
+};
+
+struct igmpv3_grec {
+	__u8 grec_type;
+	__u8 grec_auxwords;
+	__be16 grec_nsrcs;
+	__be32 grec_mca;
+	__be32 grec_src[0];
+};
+
+struct igmpv3_report {
+	__u8 type;
+	__u8 resv1;
+	__sum16 csum;
+	__be16 resv2;
+	__be16 ngrec;
+	struct igmpv3_grec grec[0];
+};
+
+struct igmp_mc_iter_state {
+	struct seq_net_private p;
+	struct net_device *dev;
+	struct in_device *in_dev;
+};
+
+struct igmp_mcf_iter_state {
+	struct seq_net_private p;
+	struct net_device *dev;
+	struct in_device *idev;
+	struct ip_mc_list *im;
+};
+
+struct nl_info {
+	struct nlmsghdr *nlh;
+	struct net *nl_net;
+	u32 portid;
+	u8 skip_notify: 1;
+	u8 skip_notify_kernel: 1;
+};
+
+struct rtnexthop;
+
+struct fib_config {
+	u8 fc_dst_len;
+	dscp_t fc_dscp;
+	u8 fc_protocol;
+	u8 fc_scope;
+	u8 fc_type;
+	u8 fc_gw_family;
+	u32 fc_table;
+	__be32 fc_dst;
+	union {
+		__be32 fc_gw4;
+		struct in6_addr fc_gw6;
+	};
+	int fc_oif;
+	u32 fc_flags;
+	u32 fc_priority;
+	__be32 fc_prefsrc;
+	u32 fc_nh_id;
+	struct nlattr *fc_mx;
+	struct rtnexthop *fc_mp;
+	int fc_mx_len;
+	int fc_mp_len;
+	u32 fc_flow;
+	u32 fc_nlflags;
+	struct nl_info fc_nlinfo;
+	struct nlattr *fc_encap;
+	u16 fc_encap_type;
+};
+
+struct rtnexthop {
+	unsigned short rtnh_len;
+	unsigned char rtnh_flags;
+	unsigned char rtnh_hops;
+	int rtnh_ifindex;
+};
+
+struct fib_dump_filter {
+	u32 table_id;
+	bool filter_set;
+	bool dump_routes;
+	bool dump_exceptions;
+	unsigned char protocol;
+	unsigned char rt_type;
+	unsigned int flags;
+	struct net_device *dev;
+};
+
+struct fib_result_nl {
+	__be32 fl_addr;
+	u32 fl_mark;
+	unsigned char fl_tos;
+	unsigned char fl_scope;
+	unsigned char tb_id_in;
+	unsigned char tb_id;
+	unsigned char prefixlen;
+	unsigned char nh_sel;
+	unsigned char type;
+	unsigned char scope;
+	int err;
+};
+
+struct fib_prop {
+	int error;
+	u8 scope;
+};
+
+struct fib6_config {
+	u32 fc_table;
+	u32 fc_metric;
+	int fc_dst_len;
+	int fc_src_len;
+	int fc_ifindex;
+	u32 fc_flags;
+	u32 fc_protocol;
+	u16 fc_type;
+	u16 fc_delete_all_nh: 1;
+	u16 fc_ignore_dev_down: 1;
+	u16 __unused: 14;
+	u32 fc_nh_id;
+	struct in6_addr fc_dst;
+	struct in6_addr fc_src;
+	struct in6_addr fc_prefsrc;
+	struct in6_addr fc_gateway;
+	unsigned long fc_expires;
+	struct nlattr *fc_mx;
+	int fc_mx_len;
+	int fc_mp_len;
+	struct nlattr *fc_mp;
+	struct nl_info fc_nlinfo;
+	struct nlattr *fc_encap;
+	u16 fc_encap_type;
+	bool fc_is_fdb;
+	u64 android_kabi_reserved1;
+};
+
+struct fib_nh_notifier_info {
+	struct fib_notifier_info info;
+	struct fib_nh *fib_nh;
+};
+
+typedef unsigned int t_key;
+
+struct key_vector {
+	t_key key;
+	unsigned char pos;
+	unsigned char bits;
+	unsigned char slen;
+	union {
+		struct hlist_head leaf;
+		struct {
+			struct {} __empty_tnode;
+			struct key_vector __attribute__((btf_type_tag("rcu"))) *tnode[0];
+		};
+	};
+};
+
+struct trie {
+	struct key_vector kv[1];
+};
+
+struct tnode {
+	struct callback_head rcu;
+	t_key empty_children;
+	t_key full_children;
+	struct key_vector __attribute__((btf_type_tag("rcu"))) *parent;
+	struct key_vector kv[1];
+};
+
+struct fib_entry_notifier_info {
+	struct fib_notifier_info info;
+	u32 dst;
+	int dst_len;
+	struct fib_info *fi;
+	dscp_t dscp;
+	u8 type;
+	u32 tb_id;
+};
+
+struct trie_stat {
+	unsigned int totdepth;
+	unsigned int maxdepth;
+	unsigned int tnodes;
+	unsigned int leaves;
+	unsigned int nullpointers;
+	unsigned int prefixes;
+	unsigned int nodesizes[32];
+};
+
+struct fib_trie_iter {
+	struct seq_net_private p;
+	struct fib_table *tb;
+	struct key_vector *tnode;
+	unsigned int index;
+	unsigned int depth;
+};
+
+struct fib_route_iter {
+	struct seq_net_private p;
+	struct fib_table *main_tb;
+	struct key_vector *tnode;
+	loff_t pos;
+	t_key key;
+};
+
+struct ipfrag_skb_cb {
+	union {
+		struct inet_skb_parm h4;
+		struct inet6_skb_parm h6;
+	};
+	struct sk_buff *next_frag;
+	int frag_run_len;
+	int ip_defrag_offset;
+};
+
+struct ping_table {
+	struct hlist_head hash[64];
+	spinlock_t lock;
+};
+
+struct pingv6_ops {
+	int (*ipv6_recv_error)(struct sock *, struct msghdr *, int, int *);
+	void (*ip6_datagram_recv_common_ctl)(struct sock *, struct msghdr *, struct sk_buff *);
+	void (*ip6_datagram_recv_specific_ctl)(struct sock *, struct msghdr *, struct sk_buff *);
+	int (*icmpv6_err_convert)(u8, u8, int *);
+	void (*ipv6_icmp_error)(struct sock *, struct sk_buff *, int, __be16, u32, u8 *);
+	int (*ipv6_chk_addr)(struct net *, const struct in6_addr *, const struct net_device *, int);
+};
+
+struct ping_iter_state {
+	struct seq_net_private p;
+	int bucket;
+	sa_family_t family;
+};
+
+struct pingfakehdr {
+	struct icmphdr icmph;
+	struct msghdr *msg;
+	sa_family_t family;
+	__wsum wcheck;
+};
+
+struct ip6_tnl_encap_ops {
+	size_t (*encap_hlen)(struct ip_tunnel_encap *);
+	int (*build_header)(struct sk_buff *, struct ip_tunnel_encap *, u8 *, struct flowi6 *);
+	int (*err_handler)(struct sk_buff *, struct inet6_skb_parm *, u8, u8, int, __be32);
+};
+
+struct lwtunnel_encap_ops {
+	int (*build_state)(struct net *, struct nlattr *, unsigned int, const void *, struct lwtunnel_state **, struct netlink_ext_ack *);
+	void (*destroy_state)(struct lwtunnel_state *);
+	int (*output)(struct net *, struct sock *, struct sk_buff *);
+	int (*input)(struct sk_buff *);
+	int (*fill_encap)(struct sk_buff *, struct lwtunnel_state *);
+	int (*get_encap_size)(struct lwtunnel_state *);
+	int (*cmp_encap)(struct lwtunnel_state *, struct lwtunnel_state *);
+	int (*xmit)(struct sk_buff *);
+	struct module *owner;
+};
+
+enum {
+	IFLA_IPTUN_UNSPEC = 0,
+	IFLA_IPTUN_LINK = 1,
+	IFLA_IPTUN_LOCAL = 2,
+	IFLA_IPTUN_REMOTE = 3,
+	IFLA_IPTUN_TTL = 4,
+	IFLA_IPTUN_TOS = 5,
+	IFLA_IPTUN_ENCAP_LIMIT = 6,
+	IFLA_IPTUN_FLOWINFO = 7,
+	IFLA_IPTUN_FLAGS = 8,
+	IFLA_IPTUN_PROTO = 9,
+	IFLA_IPTUN_PMTUDISC = 10,
+	IFLA_IPTUN_6RD_PREFIX = 11,
+	IFLA_IPTUN_6RD_RELAY_PREFIX = 12,
+	IFLA_IPTUN_6RD_PREFIXLEN = 13,
+	IFLA_IPTUN_6RD_RELAY_PREFIXLEN = 14,
+	IFLA_IPTUN_ENCAP_TYPE = 15,
+	IFLA_IPTUN_ENCAP_FLAGS = 16,
+	IFLA_IPTUN_ENCAP_SPORT = 17,
+	IFLA_IPTUN_ENCAP_DPORT = 18,
+	IFLA_IPTUN_COLLECT_METADATA = 19,
+	IFLA_IPTUN_FWMARK = 20,
+	__IFLA_IPTUN_MAX = 21,
+};
+
+enum lwtunnel_ip_t {
+	LWTUNNEL_IP_UNSPEC = 0,
+	LWTUNNEL_IP_ID = 1,
+	LWTUNNEL_IP_DST = 2,
+	LWTUNNEL_IP_SRC = 3,
+	LWTUNNEL_IP_TTL = 4,
+	LWTUNNEL_IP_TOS = 5,
+	LWTUNNEL_IP_FLAGS = 6,
+	LWTUNNEL_IP_PAD = 7,
+	LWTUNNEL_IP_OPTS = 8,
+	__LWTUNNEL_IP_MAX = 9,
+};
+
+enum {
+	LWTUNNEL_IP_OPTS_UNSPEC = 0,
+	LWTUNNEL_IP_OPTS_GENEVE = 1,
+	LWTUNNEL_IP_OPTS_VXLAN = 2,
+	LWTUNNEL_IP_OPTS_ERSPAN = 3,
+	__LWTUNNEL_IP_OPTS_MAX = 4,
+};
+
+enum {
+	LWTUNNEL_IP_OPT_GENEVE_UNSPEC = 0,
+	LWTUNNEL_IP_OPT_GENEVE_CLASS = 1,
+	LWTUNNEL_IP_OPT_GENEVE_TYPE = 2,
+	LWTUNNEL_IP_OPT_GENEVE_DATA = 3,
+	__LWTUNNEL_IP_OPT_GENEVE_MAX = 4,
+};
+
+enum {
+	LWTUNNEL_IP_OPT_VXLAN_UNSPEC = 0,
+	LWTUNNEL_IP_OPT_VXLAN_GBP = 1,
+	__LWTUNNEL_IP_OPT_VXLAN_MAX = 2,
+};
+
+enum {
+	LWTUNNEL_IP_OPT_ERSPAN_UNSPEC = 0,
+	LWTUNNEL_IP_OPT_ERSPAN_VER = 1,
+	LWTUNNEL_IP_OPT_ERSPAN_INDEX = 2,
+	LWTUNNEL_IP_OPT_ERSPAN_DIR = 3,
+	LWTUNNEL_IP_OPT_ERSPAN_HWID = 4,
+	__LWTUNNEL_IP_OPT_ERSPAN_MAX = 5,
+};
+
+enum lwtunnel_ip6_t {
+	LWTUNNEL_IP6_UNSPEC = 0,
+	LWTUNNEL_IP6_ID = 1,
+	LWTUNNEL_IP6_DST = 2,
+	LWTUNNEL_IP6_SRC = 3,
+	LWTUNNEL_IP6_HOPLIMIT = 4,
+	LWTUNNEL_IP6_TC = 5,
+	LWTUNNEL_IP6_FLAGS = 6,
+	LWTUNNEL_IP6_PAD = 7,
+	LWTUNNEL_IP6_OPTS = 8,
+	__LWTUNNEL_IP6_MAX = 9,
+};
+
+enum nexthop_event_type {
+	NEXTHOP_EVENT_DEL = 0,
+	NEXTHOP_EVENT_REPLACE = 1,
+	NEXTHOP_EVENT_RES_TABLE_PRE_REPLACE = 2,
+	NEXTHOP_EVENT_BUCKET_REPLACE = 3,
+};
+
+enum nh_notifier_info_type {
+	NH_NOTIFIER_INFO_TYPE_SINGLE = 0,
+	NH_NOTIFIER_INFO_TYPE_GRP = 1,
+	NH_NOTIFIER_INFO_TYPE_RES_TABLE = 2,
+	NH_NOTIFIER_INFO_TYPE_RES_BUCKET = 3,
+};
+
+enum {
+	NHA_UNSPEC = 0,
+	NHA_ID = 1,
+	NHA_GROUP = 2,
+	NHA_GROUP_TYPE = 3,
+	NHA_BLACKHOLE = 4,
+	NHA_OIF = 5,
+	NHA_GATEWAY = 6,
+	NHA_ENCAP_TYPE = 7,
+	NHA_ENCAP = 8,
+	NHA_GROUPS = 9,
+	NHA_MASTER = 10,
+	NHA_FDB = 11,
+	NHA_RES_GROUP = 12,
+	NHA_RES_BUCKET = 13,
+	__NHA_MAX = 14,
+};
+
+enum {
+	NEXTHOP_GRP_TYPE_MPATH = 0,
+	NEXTHOP_GRP_TYPE_RES = 1,
+	__NEXTHOP_GRP_TYPE_MAX = 2,
+};
+
+enum {
+	NHA_RES_GROUP_UNSPEC = 0,
+	NHA_RES_GROUP_PAD = 0,
+	NHA_RES_GROUP_BUCKETS = 1,
+	NHA_RES_GROUP_IDLE_TIMER = 2,
+	NHA_RES_GROUP_UNBALANCED_TIMER = 3,
+	NHA_RES_GROUP_UNBALANCED_TIME = 4,
+	__NHA_RES_GROUP_MAX = 5,
+};
+
+enum {
+	NHA_RES_BUCKET_UNSPEC = 0,
+	NHA_RES_BUCKET_PAD = 0,
+	NHA_RES_BUCKET_INDEX = 1,
+	NHA_RES_BUCKET_IDLE_TIME = 2,
+	NHA_RES_BUCKET_NH_ID = 3,
+	__NHA_RES_BUCKET_MAX = 4,
+};
+
+struct nh_notifier_single_info;
+
+struct nh_notifier_grp_info;
+
+struct nh_notifier_res_table_info;
+
+struct nh_notifier_res_bucket_info;
+
+struct nh_notifier_info {
+	struct net *net;
+	struct netlink_ext_ack *extack;
+	u32 id;
+	enum nh_notifier_info_type type;
+	union {
+		struct nh_notifier_single_info *nh;
+		struct nh_notifier_grp_info *nh_grp;
+		struct nh_notifier_res_table_info *nh_res_table;
+		struct nh_notifier_res_bucket_info *nh_res_bucket;
+	};
+};
+
+struct nh_notifier_single_info {
+	struct net_device *dev;
+	u8 gw_family;
+	union {
+		__be32 ipv4;
+		struct in6_addr ipv6;
+	};
+	u8 is_reject: 1;
+	u8 is_fdb: 1;
+	u8 has_encap: 1;
+};
+
+struct nh_notifier_grp_entry_info {
+	u8 weight;
+	u32 id;
+	struct nh_notifier_single_info nh;
+};
+
+struct nh_notifier_grp_info {
+	u16 num_nh;
+	bool is_fdb;
+	struct nh_notifier_grp_entry_info nh_entries[0];
+};
+
+struct nh_notifier_res_table_info {
+	u16 num_nh_buckets;
+	struct nh_notifier_single_info nhs[0];
+};
+
+struct nh_notifier_res_bucket_info {
+	u16 bucket_index;
+	unsigned int idle_timer_ms;
+	bool force;
+	struct nh_notifier_single_info old_nh;
+	struct nh_notifier_single_info new_nh;
+};
+
+struct nh_config {
+	u32 nh_id;
+	u8 nh_family;
+	u8 nh_protocol;
+	u8 nh_blackhole;
+	u8 nh_fdb;
+	u32 nh_flags;
+	int nh_ifindex;
+	struct net_device *dev;
+	union {
+		__be32 ipv4;
+		struct in6_addr ipv6;
+	} gw;
+	struct nlattr *nh_grp;
+	u16 nh_grp_type;
+	u16 nh_grp_res_num_buckets;
+	unsigned long nh_grp_res_idle_timer;
+	unsigned long nh_grp_res_unbalanced_timer;
+	bool nh_grp_res_has_num_buckets;
+	bool nh_grp_res_has_idle_timer;
+	bool nh_grp_res_has_unbalanced_timer;
+	struct nlattr *nh_encap;
+	u16 nh_encap_type;
+	u32 nlflags;
+	struct nl_info nlinfo;
+};
+
+struct nhmsg {
+	unsigned char nh_family;
+	unsigned char nh_scope;
+	unsigned char nh_protocol;
+	unsigned char resvd;
+	unsigned int nh_flags;
+};
+
+struct nexthop_grp {
+	__u32 id;
+	__u8 weight;
+	__u8 resvd1;
+	__u16 resvd2;
+};
+
+struct nh_dump_filter {
+	u32 nh_id;
+	int dev_idx;
+	int master_idx;
+	bool group_filter;
+	bool fdb_filter;
+	u32 res_bucket_nh_id;
+};
+
+struct rtm_dump_nh_ctx {
+	u32 idx;
+};
+
+struct rtm_dump_res_bucket_ctx {
+	struct rtm_dump_nh_ctx nh;
+	u16 bucket_index;
+};
+
+struct rtm_dump_nexthop_bucket_data {
+	struct rtm_dump_res_bucket_ctx *ctx;
+	struct nh_dump_filter filter;
+};
+
+struct udp_tunnel_nic_ops {
+	void (*get_port)(struct net_device *, unsigned int, unsigned int, struct udp_tunnel_info *);
+	void (*set_port_priv)(struct net_device *, unsigned int, unsigned int, u8);
+	void (*add_port)(struct net_device *, struct udp_tunnel_info *);
+	void (*del_port)(struct net_device *, struct udp_tunnel_info *);
+	void (*reset_ntf)(struct net_device *);
+	size_t (*dump_size)(struct net_device *, unsigned int);
+	int (*dump_write)(struct net_device *, unsigned int, struct sk_buff *);
+};
+
+enum tunnel_encap_types {
+	TUNNEL_ENCAP_NONE = 0,
+	TUNNEL_ENCAP_FOU = 1,
+	TUNNEL_ENCAP_GUE = 2,
+	TUNNEL_ENCAP_MPLS = 3,
+};
+
+struct ip_tunnel_prl_entry;
+
+struct ip_tunnel {
+	struct ip_tunnel __attribute__((btf_type_tag("rcu"))) *next;
+	struct hlist_node hash_node;
+	struct net_device *dev;
+	netdevice_tracker dev_tracker;
+	struct net *net;
+	unsigned long err_time;
+	int err_count;
+	u32 i_seqno;
+	atomic_t o_seqno;
+	int tun_hlen;
+	u32 index;
+	u8 erspan_ver;
+	u8 dir;
+	u16 hwid;
+	struct dst_cache dst_cache;
+	struct ip_tunnel_parm parms;
+	int mlink;
+	int encap_hlen;
+	int hlen;
+	struct ip_tunnel_encap encap;
+	struct ip_tunnel_prl_entry __attribute__((btf_type_tag("rcu"))) *prl;
+	unsigned int prl_count;
+	unsigned int ip_tnl_net_id;
+	struct gro_cells gro_cells;
+	__u32 fwmark;
+	bool collect_md;
+	bool ignore_df;
+};
+
+struct ip_tunnel_prl_entry {
+	struct ip_tunnel_prl_entry __attribute__((btf_type_tag("rcu"))) *next;
+	__be32 addr;
+	u16 flags;
+	struct callback_head callback_head;
+};
+
+struct ip_tunnel_net {
+	struct net_device *fb_tunnel_dev;
+	struct rtnl_link_ops *rtnl_link_ops;
+	struct hlist_head tunnels[128];
+	struct ip_tunnel __attribute__((btf_type_tag("rcu"))) *collect_md_tun;
+	int type;
+};
+
+struct tnl_ptk_info {
+	__be16 flags;
+	__be16 proto;
+	__be32 key;
+	__be32 seq;
+	int hdr_len;
+};
+
+struct snmp_mib {
+	const char *name;
+	int entry;
+};
+
+struct fib4_rule {
+	struct fib_rule common;
+	u8 dst_len;
+	u8 src_len;
+	dscp_t dscp;
+	__be32 src;
+	__be32 srcmask;
+	__be32 dst;
+	__be32 dstmask;
+};
+
+enum {
+	MFC_STATIC = 1,
+	MFC_OFFLOAD = 2,
+};
+
+struct mr_mfc {
+	struct rhlist_head mnode;
+	unsigned short mfc_parent;
+	int mfc_flags;
+	union {
+		struct {
+			unsigned long expires;
+			struct sk_buff_head unresolved;
+		} unres;
+		struct {
+			unsigned long last_assert;
+			int minvif;
+			int maxvif;
+			unsigned long bytes;
+			unsigned long pkt;
+			unsigned long wrong_if;
+			unsigned long lastuse;
+			unsigned char ttls[32];
+			refcount_t refcount;
+		} res;
+	} mfc_un;
+	struct list_head list;
+	struct callback_head rcu;
+	void (*free)(struct callback_head *);
+};
+
+struct mr_table_ops {
+	const struct rhashtable_params *rht_params;
+	void *cmparg_any;
+};
+
+struct vif_device {
+	struct net_device __attribute__((btf_type_tag("rcu"))) *dev;
+	netdevice_tracker dev_tracker;
+	unsigned long bytes_in;
+	unsigned long bytes_out;
+	unsigned long pkt_in;
+	unsigned long pkt_out;
+	unsigned long rate_limit;
+	unsigned char threshold;
+	unsigned short flags;
+	int link;
+	struct netdev_phys_item_id dev_parent_id;
+	__be32 local;
+	__be32 remote;
+};
+
+struct mr_table {
+	struct list_head list;
+	possible_net_t net;
+	struct mr_table_ops ops;
+	u32 id;
+	struct sock __attribute__((btf_type_tag("rcu"))) *mroute_sk;
+	struct timer_list ipmr_expire_timer;
+	struct list_head mfc_unres_queue;
+	struct vif_device vif_table[32];
+	struct rhltable mfc_hash;
+	struct list_head mfc_cache_list;
+	int maxvif;
+	atomic_t cache_resolve_queue_len;
+	bool mroute_do_assert;
+	bool mroute_do_pim;
+	bool mroute_do_wrvifwhole;
+	int mroute_reg_vif_num;
+};
+
+struct mr_vif_iter {
+	struct seq_net_private p;
+	struct mr_table *mrt;
+	int ct;
+};
+
+struct mr_mfc_iter {
+	struct seq_net_private p;
+	struct mr_table *mrt;
+	struct list_head *cache;
+	spinlock_t *lock;
+};
+
+struct vif_entry_notifier_info {
+	struct fib_notifier_info info;
+	struct net_device *dev;
+	unsigned short vif_index;
+	unsigned short vif_flags;
+	u32 tb_id;
+};
+
+struct mfc_entry_notifier_info {
+	struct fib_notifier_info info;
+	struct mr_mfc *mfc;
+	u32 tb_id;
+};
+
+struct rta_mfc_stats {
+	__u64 mfcs_packets;
+	__u64 mfcs_bytes;
+	__u64 mfcs_wrong_if;
+};
+
+struct xfrm_tunnel {
+	int (*handler)(struct sk_buff *);
+	int (*cb_handler)(struct sk_buff *, int);
+	int (*err_handler)(struct sk_buff *, u32);
+	struct xfrm_tunnel __attribute__((btf_type_tag("rcu"))) *next;
+	int priority;
+};
+
+struct gre_protocol {
+	int (*handler)(struct sk_buff *);
+	void (*err_handler)(struct sk_buff *, u32);
+};
+
+struct erspan_base_hdr {
+	__u8 vlan_upper: 4;
+	__u8 ver: 4;
+	__u8 vlan: 8;
+	__u8 session_id_upper: 2;
+	__u8 t: 1;
+	__u8 en: 2;
+	__u8 cos: 3;
+	__u8 session_id: 8;
+};
+
+enum {
+	IFLA_GRE_UNSPEC = 0,
+	IFLA_GRE_LINK = 1,
+	IFLA_GRE_IFLAGS = 2,
+	IFLA_GRE_OFLAGS = 3,
+	IFLA_GRE_IKEY = 4,
+	IFLA_GRE_OKEY = 5,
+	IFLA_GRE_LOCAL = 6,
+	IFLA_GRE_REMOTE = 7,
+	IFLA_GRE_TTL = 8,
+	IFLA_GRE_TOS = 9,
+	IFLA_GRE_PMTUDISC = 10,
+	IFLA_GRE_ENCAP_LIMIT = 11,
+	IFLA_GRE_FLOWINFO = 12,
+	IFLA_GRE_FLAGS = 13,
+	IFLA_GRE_ENCAP_TYPE = 14,
+	IFLA_GRE_ENCAP_FLAGS = 15,
+	IFLA_GRE_ENCAP_SPORT = 16,
+	IFLA_GRE_ENCAP_DPORT = 17,
+	IFLA_GRE_COLLECT_METADATA = 18,
+	IFLA_GRE_IGNORE_DF = 19,
+	IFLA_GRE_FWMARK = 20,
+	IFLA_GRE_ERSPAN_INDEX = 21,
+	IFLA_GRE_ERSPAN_VER = 22,
+	IFLA_GRE_ERSPAN_DIR = 23,
+	IFLA_GRE_ERSPAN_HWID = 24,
+	__IFLA_GRE_MAX = 25,
+};
+
+enum erspan_encap_type {
+	ERSPAN_ENCAP_NOVLAN = 0,
+	ERSPAN_ENCAP_ISL = 1,
+	ERSPAN_ENCAP_8021Q = 2,
+	ERSPAN_ENCAP_INFRAME = 3,
+};
+
+enum erspan_bso {
+	BSO_NOERROR = 0,
+	BSO_SHORT = 1,
+	BSO_OVERSIZED = 2,
+	BSO_BAD = 3,
+};
+
+struct qtag_prefix {
+	__be16 eth_type;
+	__be16 tci;
+};
+
+struct erspan_md2 {
+	__be32 timestamp;
+	__be16 sgt;
+	__u8 hwid_upper: 2;
+	__u8 ft: 5;
+	__u8 p: 1;
+	__u8 o: 1;
+	__u8 gra: 2;
+	__u8 dir: 1;
+	__u8 hwid: 4;
+};
+
+struct erspan_metadata {
+	int version;
+	union {
+		__be32 index;
+		struct erspan_md2 md2;
+	} u;
+};
+
+struct udp_tunnel_nic_table_entry;
+
+struct udp_tunnel_nic {
+	struct work_struct work;
+	struct net_device *dev;
+	u8 need_sync: 1;
+	u8 need_replay: 1;
+	u8 work_pending: 1;
+	unsigned int n_tables;
+	unsigned long missed;
+	struct udp_tunnel_nic_table_entry **entries;
+};
+
+struct udp_tunnel_nic_table_entry {
+	__be16 port;
+	u8 type;
+	u8 flags;
+	u16 use_cnt;
+	u8 hw_priv;
+};
+
+enum udp_parsable_tunnel_type {
+	UDP_TUNNEL_TYPE_VXLAN = 1,
+	UDP_TUNNEL_TYPE_GENEVE = 2,
+	UDP_TUNNEL_TYPE_VXLAN_GPE = 4,
+};
+
+enum udp_tunnel_nic_table_entry_flags {
+	UDP_TUNNEL_NIC_ENTRY_ADD = 1,
+	UDP_TUNNEL_NIC_ENTRY_DEL = 2,
+	UDP_TUNNEL_NIC_ENTRY_OP_FAIL = 4,
+	UDP_TUNNEL_NIC_ENTRY_FROZEN = 8,
+};
+
+struct udp_tunnel_nic_shared_node {
+	struct net_device *dev;
+	struct list_head list;
+};
+
+struct xfrm4_protocol {
+	int (*handler)(struct sk_buff *);
+	int (*input_handler)(struct sk_buff *, int, __be32, int);
+	int (*cb_handler)(struct sk_buff *, int);
+	int (*err_handler)(struct sk_buff *, u32);
+	struct xfrm4_protocol __attribute__((btf_type_tag("rcu"))) *next;
+	int priority;
+};
+
+enum {
+	IFLA_VTI_UNSPEC = 0,
+	IFLA_VTI_LINK = 1,
+	IFLA_VTI_IKEY = 2,
+	IFLA_VTI_OKEY = 3,
+	IFLA_VTI_LOCAL = 4,
+	IFLA_VTI_REMOTE = 5,
+	IFLA_VTI_FWMARK = 6,
+	__IFLA_VTI_MAX = 7,
+};
+
+enum {
+	LINUX_MIB_XFRMNUM = 0,
+	LINUX_MIB_XFRMINERROR = 1,
+	LINUX_MIB_XFRMINBUFFERERROR = 2,
+	LINUX_MIB_XFRMINHDRERROR = 3,
+	LINUX_MIB_XFRMINNOSTATES = 4,
+	LINUX_MIB_XFRMINSTATEPROTOERROR = 5,
+	LINUX_MIB_XFRMINSTATEMODEERROR = 6,
+	LINUX_MIB_XFRMINSTATESEQERROR = 7,
+	LINUX_MIB_XFRMINSTATEEXPIRED = 8,
+	LINUX_MIB_XFRMINSTATEMISMATCH = 9,
+	LINUX_MIB_XFRMINSTATEINVALID = 10,
+	LINUX_MIB_XFRMINTMPLMISMATCH = 11,
+	LINUX_MIB_XFRMINNOPOLS = 12,
+	LINUX_MIB_XFRMINPOLBLOCK = 13,
+	LINUX_MIB_XFRMINPOLERROR = 14,
+	LINUX_MIB_XFRMOUTERROR = 15,
+	LINUX_MIB_XFRMOUTBUNDLEGENERROR = 16,
+	LINUX_MIB_XFRMOUTBUNDLECHECKERROR = 17,
+	LINUX_MIB_XFRMOUTNOSTATES = 18,
+	LINUX_MIB_XFRMOUTSTATEPROTOERROR = 19,
+	LINUX_MIB_XFRMOUTSTATEMODEERROR = 20,
+	LINUX_MIB_XFRMOUTSTATESEQERROR = 21,
+	LINUX_MIB_XFRMOUTSTATEEXPIRED = 22,
+	LINUX_MIB_XFRMOUTPOLBLOCK = 23,
+	LINUX_MIB_XFRMOUTPOLDEAD = 24,
+	LINUX_MIB_XFRMOUTPOLERROR = 25,
+	LINUX_MIB_XFRMFWDHDRERROR = 26,
+	LINUX_MIB_XFRMOUTSTATEINVALID = 27,
+	LINUX_MIB_XFRMACQUIREERROR = 28,
+	__LINUX_MIB_XFRMMAX = 29,
+};
+
+struct ip6_tnl;
+
+struct xfrm_tunnel_skb_cb {
+	union {
+		struct inet_skb_parm h4;
+		struct inet6_skb_parm h6;
+	} header;
+	union {
+		struct ip_tunnel *ip4;
+		struct ip6_tnl *ip6;
+	} tunnel;
+};
+
+struct xfrm_spi_skb_cb {
+	struct xfrm_tunnel_skb_cb header;
+	unsigned int daddroff;
+	unsigned int family;
+	__be32 seq;
+};
+
+struct xfrm_mode_skb_cb {
+	struct xfrm_tunnel_skb_cb header;
+	__be16 id;
+	__be16 frag_off;
+	u8 ihl;
+	u8 tos;
+	u8 ttl;
+	u8 protocol;
+	u8 optlen;
+	u8 flow_lbl[3];
+};
+
+struct ip_comp_hdr {
+	__u8 nexthdr;
+	__u8 flags;
+	__be16 cpi;
+};
+
+struct xfrm_skb_cb {
+	struct xfrm_tunnel_skb_cb header;
+	union {
+		struct {
+			__u32 low;
+			__u32 hi;
+		} output;
+		struct {
+			__be32 low;
+			__be32 hi;
+		} input;
+	} seq;
+};
+
+struct esp_skb_cb {
+	struct xfrm_skb_cb xfrm;
+	void *tmp;
+};
+
+struct esp_info {
+	struct ip_esp_hdr *esph;
+	__be64 seqno;
+	int tfclen;
+	int tailen;
+	int plen;
+	int clen;
+	int len;
+	int nfrags;
+	__u8 proto;
+	bool inplace;
+};
+
+struct esp_output_extra {
+	__be32 seqhi;
+	u32 esphoff;
+};
+
+struct xfrm_algo_aead_info {
+	char *geniv;
+	u16 icv_truncbits;
+};
+
+struct xfrm_algo_auth_info {
+	u16 icv_truncbits;
+	u16 icv_fullbits;
+};
+
+struct xfrm_algo_encr_info {
+	char *geniv;
+	u16 blockbits;
+	u16 defkeybits;
+};
+
+struct xfrm_algo_comp_info {
+	u16 threshold;
+};
+
+struct sadb_alg {
+	__u8 sadb_alg_id;
+	__u8 sadb_alg_ivlen;
+	__u16 sadb_alg_minbits;
+	__u16 sadb_alg_maxbits;
+	__u16 sadb_alg_reserved;
+};
+
+struct xfrm_algo_desc {
+	char *name;
+	char *compat;
+	u8 available: 1;
+	u8 pfkey_supported: 1;
+	union {
+		struct xfrm_algo_aead_info aead;
+		struct xfrm_algo_auth_info auth;
+		struct xfrm_algo_encr_info encr;
+		struct xfrm_algo_comp_info comp;
+	} uinfo;
+	struct sadb_alg desc;
+};
+
+enum nf_ip_trace_comments {
+	NF_IP_TRACE_COMMENT_RULE = 0,
+	NF_IP_TRACE_COMMENT_RETURN = 1,
+	NF_IP_TRACE_COMMENT_POLICY = 2,
+};
+
+struct ipt_error {
+	struct ipt_entry entry;
+	struct xt_error_target target;
+};
+
+struct ipt_replace {
+	char name[32];
+	unsigned int valid_hooks;
+	unsigned int num_entries;
+	unsigned int size;
+	unsigned int hook_entry[5];
+	unsigned int underflow[5];
+	unsigned int num_counters;
+	struct xt_counters __attribute__((btf_type_tag("user"))) *counters;
+	struct ipt_entry entries[0];
+};
+
+struct ipt_standard {
+	struct ipt_entry entry;
+	struct xt_standard_target target;
+};
+
+struct ipt_getinfo {
+	char name[32];
+	unsigned int valid_hooks;
+	unsigned int hook_entry[5];
+	unsigned int underflow[5];
+	unsigned int num_entries;
+	unsigned int size;
+};
+
+struct ipt_get_entries {
+	char name[32];
+	unsigned int size;
+	struct ipt_entry entrytable[0];
+};
+
+struct xt_get_revision {
+	char name[29];
+	__u8 revision;
+};
+
+struct iptable_nat_pernet {
+	struct nf_hook_ops *nf_nat_ops;
+};
+
+enum ipt_reject_with {
+	IPT_ICMP_NET_UNREACHABLE = 0,
+	IPT_ICMP_HOST_UNREACHABLE = 1,
+	IPT_ICMP_PROT_UNREACHABLE = 2,
+	IPT_ICMP_PORT_UNREACHABLE = 3,
+	IPT_ICMP_ECHOREPLY = 4,
+	IPT_ICMP_NET_PROHIBITED = 5,
+	IPT_ICMP_HOST_PROHIBITED = 6,
+	IPT_TCP_RESET = 7,
+	IPT_ICMP_ADMIN_PROHIBITED = 8,
+};
+
+struct ipt_reject_info {
+	enum ipt_reject_with with;
+};
+
+struct arpt_devaddr_info {
+	char addr[16];
+	char mask[16];
+};
+
+struct arpt_arp {
+	struct in_addr src;
+	struct in_addr tgt;
+	struct in_addr smsk;
+	struct in_addr tmsk;
+	__u8 arhln;
+	__u8 arhln_mask;
+	struct arpt_devaddr_info src_devaddr;
+	struct arpt_devaddr_info tgt_devaddr;
+	__be16 arpop;
+	__be16 arpop_mask;
+	__be16 arhrd;
+	__be16 arhrd_mask;
+	__be16 arpro;
+	__be16 arpro_mask;
+	char iniface[16];
+	char outiface[16];
+	unsigned char iniface_mask[16];
+	unsigned char outiface_mask[16];
+	__u8 flags;
+	__u16 invflags;
+};
+
+struct arpt_entry {
+	struct arpt_arp arp;
+	__u16 target_offset;
+	__u16 next_offset;
+	unsigned int comefrom;
+	struct xt_counters counters;
+	unsigned char elems[0];
+};
+
+struct arpt_error {
+	struct arpt_entry entry;
+	struct xt_error_target target;
+};
+
+struct arpt_replace {
+	char name[32];
+	unsigned int valid_hooks;
+	unsigned int num_entries;
+	unsigned int size;
+	unsigned int hook_entry[3];
+	unsigned int underflow[3];
+	unsigned int num_counters;
+	struct xt_counters __attribute__((btf_type_tag("user"))) *counters;
+	struct arpt_entry entries[0];
+};
+
+struct arpt_standard {
+	struct arpt_entry entry;
+	struct xt_standard_target target;
+};
+
+struct arpt_getinfo {
+	char name[32];
+	unsigned int valid_hooks;
+	unsigned int hook_entry[3];
+	unsigned int underflow[3];
+	unsigned int num_entries;
+	unsigned int size;
+};
+
+struct arpt_get_entries {
+	char name[32];
+	unsigned int size;
+	struct arpt_entry entrytable[0];
+};
+
+struct arpt_mangle {
+	char src_devaddr[16];
+	char tgt_devaddr[16];
+	union {
+		struct in_addr src_ip;
+	} u_s;
+	union {
+		struct in_addr tgt_ip;
+	} u_t;
+	__u8 flags;
+	int target;
+};
+
+struct inet_diag_req_v2;
+
+struct inet_diag_msg;
+
+struct inet_diag_handler {
+	void (*dump)(struct sk_buff *, struct netlink_callback *, const struct inet_diag_req_v2 *);
+	int (*dump_one)(struct netlink_callback *, const struct inet_diag_req_v2 *);
+	void (*idiag_get_info)(struct sock *, struct inet_diag_msg *, void *);
+	int (*idiag_get_aux)(struct sock *, bool, struct sk_buff *);
+	size_t (*idiag_get_aux_size)(struct sock *, bool);
+	int (*destroy)(struct sk_buff *, const struct inet_diag_req_v2 *);
+	__u16 idiag_type;
+	__u16 idiag_info_size;
+};
+
+struct inet_diag_sockid {
+	__be16 idiag_sport;
+	__be16 idiag_dport;
+	__be32 idiag_src[4];
+	__be32 idiag_dst[4];
+	__u32 idiag_if;
+	__u32 idiag_cookie[2];
+};
+
+struct inet_diag_req_v2 {
+	__u8 sdiag_family;
+	__u8 sdiag_protocol;
+	__u8 idiag_ext;
+	__u8 pad;
+	__u32 idiag_states;
+	struct inet_diag_sockid id;
+};
+
+struct inet_diag_msg {
+	__u8 idiag_family;
+	__u8 idiag_state;
+	__u8 idiag_timer;
+	__u8 idiag_retrans;
+	struct inet_diag_sockid id;
+	__u32 idiag_expires;
+	__u32 idiag_rqueue;
+	__u32 idiag_wqueue;
+	__u32 idiag_uid;
+	__u32 idiag_inode;
+};
+
+enum {
+	INET_DIAG_NONE = 0,
+	INET_DIAG_MEMINFO = 1,
+	INET_DIAG_INFO = 2,
+	INET_DIAG_VEGASINFO = 3,
+	INET_DIAG_CONG = 4,
+	INET_DIAG_TOS = 5,
+	INET_DIAG_TCLASS = 6,
+	INET_DIAG_SKMEMINFO = 7,
+	INET_DIAG_SHUTDOWN = 8,
+	INET_DIAG_DCTCPINFO = 9,
+	INET_DIAG_PROTOCOL = 10,
+	INET_DIAG_SKV6ONLY = 11,
+	INET_DIAG_LOCALS = 12,
+	INET_DIAG_PEERS = 13,
+	INET_DIAG_PAD = 14,
+	INET_DIAG_MARK = 15,
+	INET_DIAG_BBRINFO = 16,
+	INET_DIAG_CLASS_ID = 17,
+	INET_DIAG_MD5SIG = 18,
+	INET_DIAG_ULP_INFO = 19,
+	INET_DIAG_SK_BPF_STORAGES = 20,
+	INET_DIAG_CGROUP_ID = 21,
+	INET_DIAG_SOCKOPT = 22,
+	__INET_DIAG_MAX = 23,
+};
+
+enum {
+	INET_DIAG_REQ_NONE = 0,
+	INET_DIAG_REQ_BYTECODE = 1,
+	INET_DIAG_REQ_SK_BPF_STORAGES = 2,
+	INET_DIAG_REQ_PROTOCOL = 3,
+	__INET_DIAG_REQ_MAX = 4,
+};
+
+enum {
+	INET_DIAG_BC_NOP = 0,
+	INET_DIAG_BC_JMP = 1,
+	INET_DIAG_BC_S_GE = 2,
+	INET_DIAG_BC_S_LE = 3,
+	INET_DIAG_BC_D_GE = 4,
+	INET_DIAG_BC_D_LE = 5,
+	INET_DIAG_BC_AUTO = 6,
+	INET_DIAG_BC_S_COND = 7,
+	INET_DIAG_BC_D_COND = 8,
+	INET_DIAG_BC_DEV_COND = 9,
+	INET_DIAG_BC_MARK_COND = 10,
+	INET_DIAG_BC_S_EQ = 11,
+	INET_DIAG_BC_D_EQ = 12,
+	INET_DIAG_BC_CGROUP_COND = 13,
+};
+
+struct inet_diag_hostcond {
+	__u8 family;
+	__u8 prefix_len;
+	int port;
+	__be32 addr[0];
+};
+
+struct inet_diag_markcond {
+	__u32 mark;
+	__u32 mask;
+};
+
+struct inet_diag_dump_data {
+	struct nlattr *req_nlas[4];
+	struct bpf_sk_storage_diag *bpf_stg_diag;
+};
+
+struct inet_diag_entry {
+	const __be32 *saddr;
+	const __be32 *daddr;
+	u16 sport;
+	u16 dport;
+	u16 family;
+	u16 userlocks;
+	u32 ifindex;
+	u32 mark;
+	u64 cgroup_id;
+};
+
+struct inet_diag_bc_op {
+	unsigned char code;
+	unsigned char yes;
+	unsigned short no;
+};
+
+struct inet_diag_req {
+	__u8 idiag_family;
+	__u8 idiag_src_len;
+	__u8 idiag_dst_len;
+	__u8 idiag_ext;
+	struct inet_diag_sockid id;
+	__u32 idiag_states;
+	__u32 idiag_dbs;
+};
+
+struct inet_diag_sockopt {
+	__u8 recverr: 1;
+	__u8 is_icsk: 1;
+	__u8 freebind: 1;
+	__u8 hdrincl: 1;
+	__u8 mc_loop: 1;
+	__u8 transparent: 1;
+	__u8 mc_all: 1;
+	__u8 nodefrag: 1;
+	__u8 bind_address_no_port: 1;
+	__u8 recverr_rfc4884: 1;
+	__u8 defer_connect: 1;
+	__u8 unused: 5;
+};
+
+struct inet_diag_meminfo {
+	__u32 idiag_rmem;
+	__u32 idiag_wmem;
+	__u32 idiag_fmem;
+	__u32 idiag_tmem;
+};
+
+enum {
+	INET_ULP_INFO_UNSPEC = 0,
+	INET_ULP_INFO_NAME = 1,
+	INET_ULP_INFO_TLS = 2,
+	INET_ULP_INFO_MPTCP = 3,
+	__INET_ULP_INFO_MAX = 4,
+};
+
+struct bictcp {
+	u32 cnt;
+	u32 last_max_cwnd;
+	u32 last_cwnd;
+	u32 last_time;
+	u32 bic_origin_point;
+	u32 bic_K;
+	u32 delay_min;
+	u32 epoch_start;
+	u32 ack_cnt;
+	u32 tcp_cwnd;
+	u16 unused;
+	u8 sample_cnt;
+	u8 found;
+	u32 round_start;
+	u32 end_seq;
+	u32 last_ack;
+	u32 curr_rtt;
+};
+
+enum {
+	TCP_BPF_IPV4 = 0,
+	TCP_BPF_IPV6 = 1,
+	TCP_BPF_NUM_PROTS = 2,
+};
+
+enum {
+	TCP_BPF_BASE = 0,
+	TCP_BPF_TX = 1,
+	TCP_BPF_RX = 2,
+	TCP_BPF_TXRX = 3,
+	TCP_BPF_NUM_CFGS = 4,
+};
+
+struct tx_work {
+	struct delayed_work work;
+	struct sock *sk;
+};
+
+struct tls_rec;
+
+struct tls_sw_context_tx {
+	struct crypto_aead *aead_send;
+	struct crypto_wait async_wait;
+	struct tx_work tx_work;
+	struct tls_rec *open_rec;
+	struct list_head tx_list;
+	atomic_t encrypt_pending;
+	u8 async_capable: 1;
+	unsigned long tx_bitmask;
+	u64 android_kabi_reserved1;
+};
+
+enum {
+	UDP_BPF_IPV4 = 0,
+	UDP_BPF_IPV6 = 1,
+	UDP_BPF_NUM_PROTS = 2,
+};
+
+struct xfrm_policy_afinfo {
+	struct dst_ops *dst_ops;
+	struct dst_entry * (*dst_lookup)(struct net *, int, int, const xfrm_address_t *, const xfrm_address_t *, u32);
+	int (*get_saddr)(struct net *, int, xfrm_address_t *, xfrm_address_t *, u32);
+	int (*fill_dst)(struct xfrm_dst *, struct net_device *, const struct flowi *);
+	struct dst_entry * (*blackhole_route)(struct net *, struct dst_entry *);
+};
+
+struct xfrm_state_afinfo {
+	u8 family;
+	u8 proto;
+	const struct xfrm_type_offload *type_offload_esp;
+	const struct xfrm_type *type_esp;
+	const struct xfrm_type *type_ipip;
+	const struct xfrm_type *type_ipip6;
+	const struct xfrm_type *type_comp;
+	const struct xfrm_type *type_ah;
+	const struct xfrm_type *type_routing;
+	const struct xfrm_type *type_dstopts;
+	int (*output)(struct net *, struct sock *, struct sk_buff *);
+	int (*transport_finish)(struct sk_buff *, int);
+	void (*local_error)(struct sk_buff *, u32);
+};
+
+struct xfrm_input_afinfo {
+	u8 family;
+	bool is_ipip;
+	int (*callback)(struct sk_buff *, u8, int);
+};
+
+typedef u64 (*btf_bpf_tcp_send_ack)(struct tcp_sock *, u32);
+
+struct xfrm_if_decode_session_result;
+
+struct xfrm_if_cb {
+	bool (*decode_session)(struct sk_buff *, unsigned short, struct xfrm_if_decode_session_result *);
+};
+
+struct xfrm_if_decode_session_result {
+	struct net *net;
+	u32 if_id;
+};
+
+enum {
+	XFRM_POLICY_TYPE_MAIN = 0,
+	XFRM_POLICY_TYPE_SUB = 1,
+	XFRM_POLICY_TYPE_MAX = 2,
+	XFRM_POLICY_TYPE_ANY = 255,
+};
+
+enum xfrm_pol_inexact_candidate_type {
+	XFRM_POL_CAND_BOTH = 0,
+	XFRM_POL_CAND_SADDR = 1,
+	XFRM_POL_CAND_DADDR = 2,
+	XFRM_POL_CAND_ANY = 3,
+	XFRM_POL_CAND_MAX = 4,
+};
+
+enum {
+	XFRM_STATE_VOID = 0,
+	XFRM_STATE_ACQ = 1,
+	XFRM_STATE_VALID = 2,
+	XFRM_STATE_ERROR = 3,
+	XFRM_STATE_EXPIRED = 4,
+	XFRM_STATE_DEAD = 5,
+};
+
+struct xfrm_pol_inexact_node {
+	struct rb_node node;
+	union {
+		xfrm_address_t addr;
+		struct callback_head rcu;
+	};
+	u8 prefixlen;
+	struct rb_root root;
+	struct hlist_head hhead;
+};
+
+struct xfrm_pol_inexact_key {
+	possible_net_t net;
+	u32 if_id;
+	u16 family;
+	u8 dir;
+	u8 type;
+};
+
+struct xfrm_pol_inexact_bin {
+	struct xfrm_pol_inexact_key k;
+	struct rhash_head head;
+	struct hlist_head hhead;
+	seqcount_spinlock_t count;
+	struct rb_root root_d;
+	struct rb_root root_s;
+	struct list_head inexact_bins;
+	struct callback_head rcu;
+};
+
+struct ip6_mh {
+	__u8 ip6mh_proto;
+	__u8 ip6mh_hdrlen;
+	__u8 ip6mh_type;
+	__u8 ip6mh_reserved;
+	__u16 ip6mh_cksum;
+	__u8 data[0];
+};
+
+struct xfrm_flo {
+	struct dst_entry *dst_orig;
+	u8 flags;
+};
+
+struct xfrm_pol_inexact_candidates {
+	struct hlist_head *res[4];
+};
+
+struct xfrm_migrate {
+	xfrm_address_t old_daddr;
+	xfrm_address_t old_saddr;
+	xfrm_address_t new_daddr;
+	xfrm_address_t new_saddr;
+	u8 proto;
+	u8 mode;
+	u16 reserved;
+	u32 reqid;
+	u16 old_family;
+	u16 new_family;
+};
+
+struct xfrm_kmaddress {
+	xfrm_address_t local;
+	xfrm_address_t remote;
+	u32 reserved;
+	u16 family;
+};
+
+struct xfrmk_spdinfo {
+	u32 incnt;
+	u32 outcnt;
+	u32 fwdcnt;
+	u32 inscnt;
+	u32 outscnt;
+	u32 fwdscnt;
+	u32 spdhcnt;
+	u32 spdhmcnt;
+};
+
+struct xfrm_policy_walk {
+	struct xfrm_policy_walk_entry walk;
+	u8 type;
+	u32 seq;
+};
+
+enum {
+	XFRM_MSG_BASE = 16,
+	XFRM_MSG_NEWSA = 16,
+	XFRM_MSG_DELSA = 17,
+	XFRM_MSG_GETSA = 18,
+	XFRM_MSG_NEWPOLICY = 19,
+	XFRM_MSG_DELPOLICY = 20,
+	XFRM_MSG_GETPOLICY = 21,
+	XFRM_MSG_ALLOCSPI = 22,
+	XFRM_MSG_ACQUIRE = 23,
+	XFRM_MSG_EXPIRE = 24,
+	XFRM_MSG_UPDPOLICY = 25,
+	XFRM_MSG_UPDSA = 26,
+	XFRM_MSG_POLEXPIRE = 27,
+	XFRM_MSG_FLUSHSA = 28,
+	XFRM_MSG_FLUSHPOLICY = 29,
+	XFRM_MSG_NEWAE = 30,
+	XFRM_MSG_GETAE = 31,
+	XFRM_MSG_REPORT = 32,
+	XFRM_MSG_MIGRATE = 33,
+	XFRM_MSG_NEWSADINFO = 34,
+	XFRM_MSG_GETSADINFO = 35,
+	XFRM_MSG_NEWSPDINFO = 36,
+	XFRM_MSG_GETSPDINFO = 37,
+	XFRM_MSG_MAPPING = 38,
+	XFRM_MSG_SETDEFAULT = 39,
+	XFRM_MSG_GETDEFAULT = 40,
+	__XFRM_MSG_MAX = 41,
+};
+
+enum {
+	XFRM_MODE_FLAG_TUNNEL = 1,
+};
+
+enum xfrm_attr_type_t {
+	XFRMA_UNSPEC = 0,
+	XFRMA_ALG_AUTH = 1,
+	XFRMA_ALG_CRYPT = 2,
+	XFRMA_ALG_COMP = 3,
+	XFRMA_ENCAP = 4,
+	XFRMA_TMPL = 5,
+	XFRMA_SA = 6,
+	XFRMA_POLICY = 7,
+	XFRMA_SEC_CTX = 8,
+	XFRMA_LTIME_VAL = 9,
+	XFRMA_REPLAY_VAL = 10,
+	XFRMA_REPLAY_THRESH = 11,
+	XFRMA_ETIMER_THRESH = 12,
+	XFRMA_SRCADDR = 13,
+	XFRMA_COADDR = 14,
+	XFRMA_LASTUSED = 15,
+	XFRMA_POLICY_TYPE = 16,
+	XFRMA_MIGRATE = 17,
+	XFRMA_ALG_AEAD = 18,
+	XFRMA_KMADDRESS = 19,
+	XFRMA_ALG_AUTH_TRUNC = 20,
+	XFRMA_MARK = 21,
+	XFRMA_TFCPAD = 22,
+	XFRMA_REPLAY_ESN_VAL = 23,
+	XFRMA_SA_EXTRA_FLAGS = 24,
+	XFRMA_PROTO = 25,
+	XFRMA_ADDRESS_FILTER = 26,
+	XFRMA_PAD = 27,
+	XFRMA_OFFLOAD_DEV = 28,
+	XFRMA_SET_MARK = 29,
+	XFRMA_SET_MARK_MASK = 30,
+	XFRMA_IF_ID = 31,
+	XFRMA_MTIMER_THRESH = 32,
+	__XFRMA_MAX = 33,
+};
+
+enum xfrm_ae_ftype_t {
+	XFRM_AE_UNSPEC = 0,
+	XFRM_AE_RTHR = 1,
+	XFRM_AE_RVAL = 2,
+	XFRM_AE_LVAL = 4,
+	XFRM_AE_ETHR = 8,
+	XFRM_AE_CR = 16,
+	XFRM_AE_CE = 32,
+	XFRM_AE_CU = 64,
+	__XFRM_AE_MAX = 65,
+};
+
+enum xfrm_nlgroups {
+	XFRMNLGRP_NONE = 0,
+	XFRMNLGRP_ACQUIRE = 1,
+	XFRMNLGRP_EXPIRE = 2,
+	XFRMNLGRP_SA = 3,
+	XFRMNLGRP_POLICY = 4,
+	XFRMNLGRP_AEVENTS = 5,
+	XFRMNLGRP_REPORT = 6,
+	XFRMNLGRP_MIGRATE = 7,
+	XFRMNLGRP_MAPPING = 8,
+	__XFRMNLGRP_MAX = 9,
+};
+
+struct km_event;
+
+struct xfrm_mgr {
+	struct list_head list;
+	int (*notify)(struct xfrm_state *, const struct km_event *);
+	int (*acquire)(struct xfrm_state *, struct xfrm_tmpl *, struct xfrm_policy *);
+	struct xfrm_policy * (*compile_policy)(struct sock *, int, u8 *, int, int *);
+	int (*new_mapping)(struct xfrm_state *, xfrm_address_t *, __be16);
+	int (*notify_policy)(struct xfrm_policy *, int, const struct km_event *);
+	int (*report)(struct net *, u8, struct xfrm_selector *, xfrm_address_t *);
+	int (*migrate)(const struct xfrm_selector *, u8, u8, const struct xfrm_migrate *, int, const struct xfrm_kmaddress *, const struct xfrm_encap_tmpl *);
+	bool (*is_alive)(const struct km_event *);
+};
+
+struct km_event {
+	union {
+		u32 hard;
+		u32 proto;
+		u32 byid;
+		u32 aevent;
+		u32 type;
+	} data;
+	u32 seq;
+	u32 portid;
+	u32 event;
+	struct net *net;
+};
+
+struct xfrm_user_sec_ctx {
+	__u16 len;
+	__u16 exttype;
+	__u8 ctx_alg;
+	__u8 ctx_doi;
+	__u16 ctx_len;
+};
+
+struct xfrmk_sadinfo {
+	u32 sadhcnt;
+	u32 sadhmcnt;
+	u32 sadcnt;
+};
+
+struct xfrm_trans_tasklet {
+	struct work_struct work;
+	spinlock_t queue_lock;
+	struct sk_buff_head queue;
+};
+
+struct __ip6_tnl_parm {
+	char name[16];
+	int link;
+	__u8 proto;
+	__u8 encap_limit;
+	__u8 hop_limit;
+	bool collect_md;
+	__be32 flowinfo;
+	__u32 flags;
+	struct in6_addr laddr;
+	struct in6_addr raddr;
+	__be16 i_flags;
+	__be16 o_flags;
+	__be32 i_key;
+	__be32 o_key;
+	__u32 fwmark;
+	__u32 index;
+	__u8 erspan_ver;
+	__u8 dir;
+	__u16 hwid;
+};
+
+struct ip6_tnl {
+	struct ip6_tnl __attribute__((btf_type_tag("rcu"))) *next;
+	struct net_device *dev;
+	netdevice_tracker dev_tracker;
+	struct net *net;
+	struct __ip6_tnl_parm parms;
+	struct flowi fl;
+	struct dst_cache dst_cache;
+	struct gro_cells gro_cells;
+	int err_count;
+	unsigned long err_time;
+	__u32 i_seqno;
+	atomic_t o_seqno;
+	int hlen;
+	int tun_hlen;
+	int encap_hlen;
+	struct ip_tunnel_encap encap;
+	int mlink;
+};
+
+struct xfrm_trans_cb {
+	union {
+		struct inet_skb_parm h4;
+		struct inet6_skb_parm h6;
+	} header;
+	int (*finish)(struct net *, struct sock *, struct sk_buff *);
+	struct net *net;
+};
+
+struct ip_beet_phdr {
+	__u8 nexthdr;
+	__u8 hdrlen;
+	__u8 padlen;
+	__u8 reserved;
+};
+
+struct xfrm_algo_list {
+	struct xfrm_algo_desc *algs;
+	int entries;
+	u32 type;
+	u32 mask;
+};
+
+struct xfrm_aead_name {
+	const char *name;
+	int icvbits;
+};
+
+struct xfrm_link {
+	int (*doit)(struct sk_buff *, struct nlmsghdr *, struct nlattr **, struct netlink_ext_ack *);
+	int (*start)(struct netlink_callback *);
+	int (*dump)(struct sk_buff *, struct netlink_callback *);
+	int (*done)(struct netlink_callback *);
+	const struct nla_policy *nla_pol;
+	int nla_max;
+};
+
+enum {
+	XFRM_DEV_OFFLOAD_IN = 1,
+	XFRM_DEV_OFFLOAD_OUT = 2,
+	XFRM_DEV_OFFLOAD_FWD = 3,
+};
+
+enum {
+	XFRM_SHARE_ANY = 0,
+	XFRM_SHARE_SESSION = 1,
+	XFRM_SHARE_USER = 2,
+	XFRM_SHARE_UNIQUE = 3,
+};
+
+enum xfrm_sadattr_type_t {
+	XFRMA_SAD_UNSPEC = 0,
+	XFRMA_SAD_CNT = 1,
+	XFRMA_SAD_HINFO = 2,
+	__XFRMA_SAD_MAX = 3,
+};
+
+enum xfrm_spdattr_type_t {
+	XFRMA_SPD_UNSPEC = 0,
+	XFRMA_SPD_INFO = 1,
+	XFRMA_SPD_HINFO = 2,
+	XFRMA_SPD_IPV4_HTHRESH = 3,
+	XFRMA_SPD_IPV6_HTHRESH = 4,
+	__XFRMA_SPD_MAX = 5,
+};
+
+struct xfrm_userpolicy_info {
+	struct xfrm_selector sel;
+	struct xfrm_lifetime_cfg lft;
+	struct xfrm_lifetime_cur curlft;
+	__u32 priority;
+	__u32 index;
+	__u8 dir;
+	__u8 action;
+	__u8 flags;
+	__u8 share;
+};
+
+struct xfrm_user_tmpl {
+	struct xfrm_id id;
+	__u16 family;
+	xfrm_address_t saddr;
+	__u32 reqid;
+	__u8 mode;
+	__u8 share;
+	__u8 optional;
+	__u32 aalgos;
+	__u32 ealgos;
+	__u32 calgos;
+};
+
+struct xfrm_usersa_info {
+	struct xfrm_selector sel;
+	struct xfrm_id id;
+	xfrm_address_t saddr;
+	struct xfrm_lifetime_cfg lft;
+	struct xfrm_lifetime_cur curlft;
+	struct xfrm_stats stats;
+	__u32 seq;
+	__u32 reqid;
+	__u16 family;
+	__u8 mode;
+	__u8 replay_window;
+	__u8 flags;
+};
+
+struct xfrm_usersa_id {
+	xfrm_address_t daddr;
+	__be32 spi;
+	__u16 family;
+	__u8 proto;
+};
+
+struct xfrm_usersa_flush {
+	__u8 proto;
+};
+
+struct xfrm_user_expire {
+	struct xfrm_usersa_info state;
+	__u8 hard;
+};
+
+struct xfrm_translator {
+	int (*alloc_compat)(struct sk_buff *, const struct nlmsghdr *);
+	struct nlmsghdr * (*rcv_msg_compat)(const struct nlmsghdr *, int, const struct nla_policy *, struct netlink_ext_ack *);
+	int (*xlate_user_policy_sockptr)(u8 **, int);
+	struct module *owner;
+};
+
+struct xfrm_user_acquire {
+	struct xfrm_id id;
+	xfrm_address_t saddr;
+	struct xfrm_selector sel;
+	struct xfrm_userpolicy_info policy;
+	__u32 aalgos;
+	__u32 ealgos;
+	__u32 calgos;
+	__u32 seq;
+};
+
+struct xfrm_user_offload {
+	int ifindex;
+	__u8 flags;
+};
+
+struct xfrm_user_mapping {
+	struct xfrm_usersa_id id;
+	__u32 reqid;
+	xfrm_address_t old_saddr;
+	xfrm_address_t new_saddr;
+	__be16 old_sport;
+	__be16 new_sport;
+};
+
+struct xfrm_userpolicy_id {
+	struct xfrm_selector sel;
+	__u32 index;
+	__u8 dir;
+};
+
+struct xfrm_user_polexpire {
+	struct xfrm_userpolicy_info pol;
+	__u8 hard;
+};
+
+struct xfrm_user_report {
+	__u8 proto;
+	struct xfrm_selector sel;
+};
+
+struct xfrm_user_kmaddress {
+	xfrm_address_t local;
+	xfrm_address_t remote;
+	__u32 reserved;
+	__u16 family;
+};
+
+struct xfrm_user_migrate {
+	xfrm_address_t old_daddr;
+	xfrm_address_t old_saddr;
+	xfrm_address_t new_daddr;
+	xfrm_address_t new_saddr;
+	__u8 proto;
+	__u8 mode;
+	__u16 reserved;
+	__u32 reqid;
+	__u16 old_family;
+	__u16 new_family;
+};
+
+struct xfrm_userpolicy_type {
+	__u8 type;
+	__u16 reserved1;
+	__u8 reserved2;
+};
+
+struct xfrm_dump_info {
+	struct sk_buff *in_skb;
+	struct sk_buff *out_skb;
+	u32 nlmsg_seq;
+	u16 nlmsg_flags;
+};
+
+struct xfrmu_sadhinfo {
+	__u32 sadhcnt;
+	__u32 sadhmcnt;
+};
+
+struct xfrmu_spdinfo {
+	__u32 incnt;
+	__u32 outcnt;
+	__u32 fwdcnt;
+	__u32 inscnt;
+	__u32 outscnt;
+	__u32 fwdscnt;
+};
+
+struct xfrmu_spdhinfo {
+	__u32 spdhcnt;
+	__u32 spdhmcnt;
+};
+
+struct xfrmu_spdhthresh {
+	__u8 lbits;
+	__u8 rbits;
+};
+
+struct xfrm_userpolicy_default {
+	__u8 in;
+	__u8 fwd;
+	__u8 out;
+};
+
+struct xfrm_aevent_id {
+	struct xfrm_usersa_id sa_id;
+	xfrm_address_t saddr;
+	__u32 flags;
+	__u32 reqid;
+};
+
+struct xfrm_userspi_info {
+	struct xfrm_usersa_info info;
+	__u32 min;
+	__u32 max;
+};
+
+struct ipcomp_tfms {
+	struct list_head list;
+	struct crypto_comp * __attribute__((btf_type_tag("percpu"))) *tfms;
+	int users;
+};
+
+struct ipcomp_data {
+	u16 threshold;
+	struct crypto_comp * __attribute__((btf_type_tag("percpu"))) *tfms;
+};
+
+struct xfrm6_tunnel {
+	int (*handler)(struct sk_buff *);
+	int (*cb_handler)(struct sk_buff *, int);
+	int (*err_handler)(struct sk_buff *, struct inet6_skb_parm *, u8, u8, int, __be32);
+	struct xfrm6_tunnel __attribute__((btf_type_tag("rcu"))) *next;
+	int priority;
+};
+
+struct xfrm6_protocol {
+	int (*handler)(struct sk_buff *);
+	int (*input_handler)(struct sk_buff *, int, __be32, int);
+	int (*cb_handler)(struct sk_buff *, int);
+	int (*err_handler)(struct sk_buff *, struct inet6_skb_parm *, u8, u8, int, __be32);
+	struct xfrm6_protocol __attribute__((btf_type_tag("rcu"))) *next;
+	int priority;
+};
+
+enum {
+	LWT_XFRM_UNSPEC = 0,
+	LWT_XFRM_IF_ID = 1,
+	LWT_XFRM_LINK = 2,
+	__LWT_XFRM_MAX = 3,
+};
+
+enum {
+	IFLA_XFRM_UNSPEC = 0,
+	IFLA_XFRM_LINK = 1,
+	IFLA_XFRM_IF_ID = 2,
+	IFLA_XFRM_COLLECT_METADATA = 3,
+	__IFLA_XFRM_MAX = 4,
+};
+
+struct xfrm_if_parms {
+	int link;
+	u32 if_id;
+	bool collect_md;
+};
+
+struct xfrm_if {
+	struct xfrm_if __attribute__((btf_type_tag("rcu"))) *next;
+	struct net_device *dev;
+	struct net *net;
+	struct xfrm_if_parms p;
+	struct gro_cells gro_cells;
+};
+
+struct xfrmi_net {
+	struct xfrm_if __attribute__((btf_type_tag("rcu"))) *xfrmi[256];
+	struct xfrm_if __attribute__((btf_type_tag("rcu"))) *collect_md_xfrmi;
+};
+
+struct bpf_xfrm_info {
+	u32 if_id;
+	int link;
+};
+
+enum unix_socket_lock_class {
+	U_LOCK_NORMAL = 0,
+	U_LOCK_SECOND = 1,
+	U_LOCK_DIAG = 2,
+	U_LOCK_GC_LISTENER = 3,
+};
+
+struct unix_skb_parms {
+	struct pid *pid;
+	kuid_t uid;
+	kgid_t gid;
+	struct scm_fp_list *fp;
+	u32 secid;
+	u32 consumed;
+};
+
+struct bpf_iter__unix {
+	union {
+		struct bpf_iter_meta *meta;
+	};
+	union {
+		struct unix_sock *unix_sk;
+	};
+	uid_t uid;
+};
+
+struct bpf_unix_iter_state {
+	struct seq_net_private p;
+	unsigned int cur_sk;
+	unsigned int end_sk;
+	unsigned int max_sk;
+	struct sock **batch;
+	bool st_bucket_done;
+};
+
+struct unix_stream_read_state {
+	int (*recv_actor)(struct sk_buff *, int, int, struct unix_stream_read_state *);
+	struct socket *socket;
+	struct msghdr *msg;
+	struct pipe_inode_info *pipe;
+	size_t size;
+	int flags;
+	unsigned int splice_flags;
+};
+
+struct ipv6_params {
+	__s32 disable_ipv6;
+	__s32 autoconf;
+};
+
+struct ioam6_pernet_data {
+	struct mutex lock;
+	struct rhashtable namespaces;
+	struct rhashtable schemas;
+};
+
+struct ipv6_stub {
+	int (*ipv6_sock_mc_join)(struct sock *, int, const struct in6_addr *);
+	int (*ipv6_sock_mc_drop)(struct sock *, int, const struct in6_addr *);
+	struct dst_entry * (*ipv6_dst_lookup_flow)(struct net *, const struct sock *, struct flowi6 *, const struct in6_addr *);
+	int (*ipv6_route_input)(struct sk_buff *);
+	struct fib6_table * (*fib6_get_table)(struct net *, u32);
+	int (*fib6_lookup)(struct net *, int, struct flowi6 *, struct fib6_result *, int);
+	int (*fib6_table_lookup)(struct net *, struct fib6_table *, int, struct flowi6 *, struct fib6_result *, int);
+	void (*fib6_select_path)(const struct net *, struct fib6_result *, struct flowi6 *, int, bool, const struct sk_buff *, int);
+	u32 (*ip6_mtu_from_fib6)(const struct fib6_result *, const struct in6_addr *, const struct in6_addr *);
+	int (*fib6_nh_init)(struct net *, struct fib6_nh *, struct fib6_config *, gfp_t, struct netlink_ext_ack *);
+	void (*fib6_nh_release)(struct fib6_nh *);
+	void (*fib6_nh_release_dsts)(struct fib6_nh *);
+	void (*fib6_update_sernum)(struct net *, struct fib6_info *);
+	int (*ip6_del_rt)(struct net *, struct fib6_info *, bool);
+	void (*fib6_rt_update)(struct net *, struct fib6_info *, struct nl_info *);
+	void (*udpv6_encap_enable)();
+	void (*ndisc_send_na)(struct net_device *, const struct in6_addr *, const struct in6_addr *, bool, bool, bool, bool);
+	void (*xfrm6_local_rxpmtu)(struct sk_buff *, u32);
+	int (*xfrm6_udp_encap_rcv)(struct sock *, struct sk_buff *);
+	int (*xfrm6_rcv_encap)(struct sk_buff *, int, __be32, int);
+	struct neigh_table *nd_tbl;
+	int (*ipv6_fragment)(struct net *, struct sock *, struct sk_buff *, int (*)(struct net *, struct sock *, struct sk_buff *));
+	struct net_device * (*ipv6_dev_find)(struct net *, const struct in6_addr *, struct net_device *);
+};
+
+enum flowlabel_reflect {
+	FLOWLABEL_REFLECT_ESTABLISHED = 1,
+	FLOWLABEL_REFLECT_TCP_RESET = 2,
+	FLOWLABEL_REFLECT_ICMPV6_ECHO_REPLIES = 4,
+};
+
+struct in6_rtmsg {
+	struct in6_addr rtmsg_dst;
+	struct in6_addr rtmsg_src;
+	struct in6_addr rtmsg_gateway;
+	__u32 rtmsg_type;
+	__u16 rtmsg_dst_len;
+	__u16 rtmsg_src_len;
+	__u32 rtmsg_metric;
+	unsigned long rtmsg_info;
+	__u32 rtmsg_flags;
+	int rtmsg_ifindex;
+};
+
+struct compat_in6_rtmsg {
+	struct in6_addr rtmsg_dst;
+	struct in6_addr rtmsg_src;
+	struct in6_addr rtmsg_gateway;
+	u32 rtmsg_type;
+	u16 rtmsg_dst_len;
+	u16 rtmsg_src_len;
+	u32 rtmsg_metric;
+	u32 rtmsg_info;
+	u32 rtmsg_flags;
+	s32 rtmsg_ifindex;
+};
+
+struct ac6_iter_state {
+	struct seq_net_private p;
+	struct net_device *dev;
+	struct inet6_dev *idev;
+};
+
+enum {
+	ICMP6_MIB_NUM = 0,
+	ICMP6_MIB_INMSGS = 1,
+	ICMP6_MIB_INERRORS = 2,
+	ICMP6_MIB_OUTMSGS = 3,
+	ICMP6_MIB_OUTERRORS = 4,
+	ICMP6_MIB_CSUMERRORS = 5,
+	ICMP6_MIB_RATELIMITHOST = 6,
+	__ICMP6_MIB_MAX = 7,
+};
+
+struct ip6_frag_state {
+	u8 *prevhdr;
+	unsigned int hlen;
+	unsigned int mtu;
+	unsigned int left;
+	int offset;
+	int ptr;
+	int hroom;
+	int troom;
+	__be32 frag_id;
+	u8 nexthdr;
+};
+
+struct ip6_fraglist_iter {
+	struct ipv6hdr *tmp_hdr;
+	struct sk_buff *frag;
+	int offset;
+	unsigned int hlen;
+	__be32 frag_id;
+	u8 nexthdr;
+};
+
+struct hop_jumbo_hdr {
+	u8 nexthdr;
+	u8 hdrlen;
+	u8 tlv_type;
+	u8 tlv_len;
+	__be32 jumbo_payload_len;
+};
+
+struct ip6_ra_chain {
+	struct ip6_ra_chain *next;
+	struct sock *sk;
+	int sel;
+	void (*destructor)(struct sock *);
+};
+
+struct ipcm6_cookie {
+	struct sockcm_cookie sockc;
+	__s16 hlimit;
+	__s16 tclass;
+	__u16 gso_size;
+	__s8 dontfrag;
+	struct ipv6_txoptions *opt;
+};
+
+struct inet6_protocol {
+	int (*handler)(struct sk_buff *);
+	int (*err_handler)(struct sk_buff *, struct inet6_skb_parm *, u8, u8, int, __be32);
+	unsigned int flags;
+};
+
+enum {
+	INET6_IFADDR_STATE_PREDAD = 0,
+	INET6_IFADDR_STATE_DAD = 1,
+	INET6_IFADDR_STATE_POSTDAD = 2,
+	INET6_IFADDR_STATE_ERRDAD = 3,
+	INET6_IFADDR_STATE_DEAD = 4,
+};
+
+enum {
+	IPV6_SADDR_RULE_INIT = 0,
+	IPV6_SADDR_RULE_LOCAL = 1,
+	IPV6_SADDR_RULE_SCOPE = 2,
+	IPV6_SADDR_RULE_PREFERRED = 3,
+	IPV6_SADDR_RULE_HOA = 4,
+	IPV6_SADDR_RULE_OIF = 5,
+	IPV6_SADDR_RULE_LABEL = 6,
+	IPV6_SADDR_RULE_PRIVACY = 7,
+	IPV6_SADDR_RULE_ORCHID = 8,
+	IPV6_SADDR_RULE_PREFIX = 9,
+	IPV6_SADDR_RULE_NOT_OPTIMISTIC = 10,
+	IPV6_SADDR_RULE_MAX = 11,
+};
+
+enum {
+	DAD_PROCESS = 0,
+	DAD_BEGIN = 1,
+	DAD_ABORT = 2,
+};
+
+enum cleanup_prefix_rt_t {
+	CLEANUP_PREFIX_RT_NOP = 0,
+	CLEANUP_PREFIX_RT_DEL = 1,
+	CLEANUP_PREFIX_RT_EXPIRE = 2,
+};
+
+enum {
+	DEVCONF_FORWARDING = 0,
+	DEVCONF_HOPLIMIT = 1,
+	DEVCONF_MTU6 = 2,
+	DEVCONF_ACCEPT_RA = 3,
+	DEVCONF_ACCEPT_REDIRECTS = 4,
+	DEVCONF_AUTOCONF = 5,
+	DEVCONF_DAD_TRANSMITS = 6,
+	DEVCONF_RTR_SOLICITS = 7,
+	DEVCONF_RTR_SOLICIT_INTERVAL = 8,
+	DEVCONF_RTR_SOLICIT_DELAY = 9,
+	DEVCONF_USE_TEMPADDR = 10,
+	DEVCONF_TEMP_VALID_LFT = 11,
+	DEVCONF_TEMP_PREFERED_LFT = 12,
+	DEVCONF_REGEN_MAX_RETRY = 13,
+	DEVCONF_MAX_DESYNC_FACTOR = 14,
+	DEVCONF_MAX_ADDRESSES = 15,
+	DEVCONF_FORCE_MLD_VERSION = 16,
+	DEVCONF_ACCEPT_RA_DEFRTR = 17,
+	DEVCONF_ACCEPT_RA_PINFO = 18,
+	DEVCONF_ACCEPT_RA_RTR_PREF = 19,
+	DEVCONF_RTR_PROBE_INTERVAL = 20,
+	DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN = 21,
+	DEVCONF_PROXY_NDP = 22,
+	DEVCONF_OPTIMISTIC_DAD = 23,
+	DEVCONF_ACCEPT_SOURCE_ROUTE = 24,
+	DEVCONF_MC_FORWARDING = 25,
+	DEVCONF_DISABLE_IPV6 = 26,
+	DEVCONF_ACCEPT_DAD = 27,
+	DEVCONF_FORCE_TLLAO = 28,
+	DEVCONF_NDISC_NOTIFY = 29,
+	DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL = 30,
+	DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL = 31,
+	DEVCONF_SUPPRESS_FRAG_NDISC = 32,
+	DEVCONF_ACCEPT_RA_FROM_LOCAL = 33,
+	DEVCONF_USE_OPTIMISTIC = 34,
+	DEVCONF_ACCEPT_RA_MTU = 35,
+	DEVCONF_STABLE_SECRET = 36,
+	DEVCONF_USE_OIF_ADDRS_ONLY = 37,
+	DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT = 38,
+	DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 39,
+	DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 40,
+	DEVCONF_DROP_UNSOLICITED_NA = 41,
+	DEVCONF_KEEP_ADDR_ON_DOWN = 42,
+	DEVCONF_RTR_SOLICIT_MAX_INTERVAL = 43,
+	DEVCONF_SEG6_ENABLED = 44,
+	DEVCONF_SEG6_REQUIRE_HMAC = 45,
+	DEVCONF_ENHANCED_DAD = 46,
+	DEVCONF_ADDR_GEN_MODE = 47,
+	DEVCONF_DISABLE_POLICY = 48,
+	DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN = 49,
+	DEVCONF_NDISC_TCLASS = 50,
+	DEVCONF_RPL_SEG_ENABLED = 51,
+	DEVCONF_RA_DEFRTR_METRIC = 52,
+	DEVCONF_IOAM6_ENABLED = 53,
+	DEVCONF_IOAM6_ID = 54,
+	DEVCONF_IOAM6_ID_WIDE = 55,
+	DEVCONF_NDISC_EVICT_NOCARRIER = 56,
+	DEVCONF_ACCEPT_UNTRACKED_NA = 57,
+	DEVCONF_ACCEPT_RA_MIN_LFT = 58,
+	DEVCONF_MAX = 59,
+};
+
+enum {
+	IFLA_INET6_UNSPEC = 0,
+	IFLA_INET6_FLAGS = 1,
+	IFLA_INET6_CONF = 2,
+	IFLA_INET6_STATS = 3,
+	IFLA_INET6_MCAST = 4,
+	IFLA_INET6_CACHEINFO = 5,
+	IFLA_INET6_ICMP6STATS = 6,
+	IFLA_INET6_TOKEN = 7,
+	IFLA_INET6_ADDR_GEN_MODE = 8,
+	IFLA_INET6_RA_MTU = 9,
+	__IFLA_INET6_MAX = 10,
+};
+
+enum {
+	PREFIX_UNSPEC = 0,
+	PREFIX_ADDRESS = 1,
+	PREFIX_CACHEINFO = 2,
+	__PREFIX_MAX = 3,
+};
+
+enum addr_type_t {
+	UNICAST_ADDR = 0,
+	MULTICAST_ADDR = 1,
+	ANYCAST_ADDR = 2,
+};
+
+union fwnet_hwaddr {
+	u8 u[16];
+	struct {
+		__be64 uniq_id;
+		u8 max_rec;
+		u8 sspd;
+		u8 fifo[6];
+	} uc;
+};
+
+struct prefix_cacheinfo {
+	__u32 preferred_time;
+	__u32 valid_time;
+};
+
+struct prefixmsg {
+	unsigned char prefix_family;
+	unsigned char prefix_pad1;
+	unsigned short prefix_pad2;
+	int prefix_ifindex;
+	unsigned char prefix_type;
+	unsigned char prefix_len;
+	unsigned char prefix_flags;
+	unsigned char prefix_pad3;
+};
+
+struct in6_ifreq {
+	struct in6_addr ifr6_addr;
+	__u32 ifr6_prefixlen;
+	int ifr6_ifindex;
+};
+
+struct if6_iter_state {
+	struct seq_net_private p;
+	int bucket;
+	int offset;
+};
+
+struct inet6_fill_args {
+	u32 portid;
+	u32 seq;
+	int event;
+	unsigned int flags;
+	int netnsid;
+	int ifindex;
+	enum addr_type_t type;
+};
+
+struct ipv6_saddr_score {
+	int rule;
+	int addr_type;
+	struct inet6_ifaddr *ifa;
+	unsigned long scorebits[1];
+	int scopedist;
+	int matchlen;
+};
+
+struct ipv6_saddr_dst {
+	const struct in6_addr *addr;
+	int ifindex;
+	int scope;
+	int label;
+	unsigned int prefs;
+};
+
+struct ifa6_config {
+	const struct in6_addr *pfx;
+	unsigned int plen;
+	u8 ifa_proto;
+	const struct in6_addr *peer_pfx;
+	u32 rt_priority;
+	u32 ifa_flags;
+	u32 preferred_lft;
+	u32 valid_lft;
+	u16 scope;
+};
+
+struct in6_validator_info {
+	struct in6_addr i6vi_addr;
+	struct inet6_dev *i6vi_dev;
+	struct netlink_ext_ack *extack;
+};
+
+struct ifla_cacheinfo {
+	__u32 max_reasm_len;
+	__u32 tstamp;
+	__u32 reachable_time;
+	__u32 retrans_time;
+};
+
+struct ip6addrlbl_init_table {
+	const struct in6_addr *prefix;
+	int prefixlen;
+	u32 label;
+};
+
+enum {
+	IFAL_ADDRESS = 1,
+	IFAL_LABEL = 2,
+	__IFAL_MAX = 3,
+};
+
+struct ip6addrlbl_entry {
+	struct in6_addr prefix;
+	int prefixlen;
+	int ifindex;
+	int addrtype;
+	u32 label;
+	struct hlist_node list;
+	struct callback_head rcu;
+};
+
+struct ifaddrlblmsg {
+	__u8 ifal_family;
+	__u8 __ifal_reserved;
+	__u8 ifal_prefixlen;
+	__u8 ifal_flags;
+	__u32 ifal_index;
+	__u32 ifal_seq;
+};
+
+typedef void (*btf_trace_fib6_table_lookup)(void *, const struct net *, const struct fib6_result *, struct fib6_table *, const struct flowi6 *);
+
+enum rt6_nud_state {
+	RT6_NUD_FAIL_HARD = -3,
+	RT6_NUD_FAIL_PROBE = -2,
+	RT6_NUD_FAIL_DO_RR = -1,
+	RT6_NUD_SUCCEED = 1,
+};
+
+struct route_info {
+	__u8 type;
+	__u8 length;
+	__u8 prefix_len;
+	__u8 reserved_l: 3;
+	__u8 route_pref: 2;
+	__u8 reserved_h: 3;
+	__be32 lifetime;
+	__u8 prefix[0];
+};
+
+struct rt6_rtnl_dump_arg {
+	struct sk_buff *skb;
+	struct netlink_callback *cb;
+	struct net *net;
+	struct fib_dump_filter filter;
+};
+
+struct trace_event_raw_fib6_table_lookup {
+	struct trace_entry ent;
+	u32 tb_id;
+	int err;
+	int oif;
+	int iif;
+	__u8 tos;
+	__u8 scope;
+	__u8 flags;
+	__u8 src[16];
+	__u8 dst[16];
+	u16 sport;
+	u16 dport;
+	u8 proto;
+	u8 rt_type;
+	char name[16];
+	__u8 gw[16];
+	char __data[0];
+};
+
+struct rt6_exception {
+	struct hlist_node hlist;
+	struct rt6_info *rt6i;
+	unsigned long stamp;
+	struct callback_head rcu;
+};
+
+struct __rt6_probe_work {
+	struct work_struct work;
+	struct in6_addr target;
+	struct net_device *dev;
+	netdevice_tracker dev_tracker;
+};
+
+struct ip6rd_flowi {
+	struct flowi6 fl6;
+	struct in6_addr gateway;
+};
+
+struct arg_dev_net_ip {
+	struct net *net;
+	struct in6_addr *addr;
+};
+
+struct rt6_mtu_change_arg {
+	struct net_device *dev;
+	unsigned int mtu;
+	struct fib6_info *f6i;
+};
+
+struct rt6_nh {
+	struct fib6_info *fib6_info;
+	struct fib6_config r_cfg;
+	struct list_head next;
+};
+
+typedef struct rt6_info * (*pol_lookup_t)(struct net *, struct fib6_table *, struct flowi6 *, const struct sk_buff *, int);
+
+struct fib6_nh_dm_arg {
+	struct net *net;
+	const struct in6_addr *saddr;
+	int oif;
+	int flags;
+	struct fib6_nh *nh;
+};
+
+struct fib6_gc_args {
+	int timeout;
+	int more;
+};
+
+struct fib6_nh_match_arg {
+	const struct net_device *dev;
+	const struct in6_addr *gw;
+	struct fib6_nh *match;
+};
+
+struct fib6_nh_del_cached_rt_arg {
+	struct fib6_config *cfg;
+	struct fib6_info *f6i;
+};
+
+struct arg_netdev_event {
+	const struct net_device *dev;
+	union {
+		unsigned char nh_flags;
+		unsigned long event;
+	};
+};
+
+struct trace_event_data_offsets_fib6_table_lookup {};
+
+struct fib6_nh_age_excptn_arg {
+	struct fib6_gc_args *gc_args;
+	unsigned long now;
+};
+
+struct netevent_redirect {
+	struct dst_entry *old;
+	struct dst_entry *new;
+	struct neighbour *neigh;
+	const void *daddr;
+};
+
+struct fib6_nh_exception_dump_walker {
+	struct rt6_rtnl_dump_arg *dump;
+	struct fib6_info *rt;
+	unsigned int flags;
+	unsigned int skip;
+	unsigned int count;
+};
+
+struct fib6_nh_frl_arg {
+	u32 flags;
+	int oif;
+	int strict;
+	int *mpri;
+	bool *do_rr;
+	struct fib6_nh *nh;
+};
+
+struct fib6_nh_rd_arg {
+	struct fib6_result *res;
+	struct flowi6 *fl6;
+	const struct in6_addr *gw;
+	struct rt6_info **ret;
+};
+
+struct fib6_nh_excptn_arg {
+	struct rt6_info *rt;
+	int plen;
+};
+
+enum fib6_walk_state {
+	FWS_L = 0,
+	FWS_R = 1,
+	FWS_C = 2,
+	FWS_U = 3,
+};
+
+enum {
+	FIB6_NO_SERNUM_CHANGE = 0,
+};
+
+struct fib6_walker {
+	struct list_head lh;
+	struct fib6_node *root;
+	struct fib6_node *node;
+	struct fib6_info *leaf;
+	enum fib6_walk_state state;
+	unsigned int skip;
+	unsigned int count;
+	unsigned int skip_in_node;
+	int (*func)(struct fib6_walker *);
+	void *args;
+};
+
+struct fib6_cleaner {
+	struct fib6_walker w;
+	struct net *net;
+	int (*func)(struct fib6_info *, void *);
+	int sernum;
+	void *arg;
+	bool skip_notify;
+};
+
+struct fib6_dump_arg {
+	struct net *net;
+	struct notifier_block *nb;
+	struct netlink_ext_ack *extack;
+};
+
+struct fib6_entry_notifier_info {
+	struct fib_notifier_info info;
+	struct fib6_info *rt;
+	unsigned int nsiblings;
+};
+
+struct lookup_args {
+	int offset;
+	const struct in6_addr *addr;
+};
+
+struct bpf_iter__ipv6_route {
+	union {
+		struct bpf_iter_meta *meta;
+	};
+	union {
+		struct fib6_info *rt;
+	};
+};
+
+struct ipv6_route_iter {
+	struct seq_net_private p;
+	struct fib6_walker w;
+	loff_t skip;
+	struct fib6_table *tbl;
+	int sernum;
+};
+
+struct fib6_nh_pcpu_arg {
+	struct fib6_info *from;
+	const struct fib6_table *table;
+};
+
+struct ipv6_sr_hdr {
+	__u8 nexthdr;
+	__u8 hdrlen;
+	__u8 type;
+	__u8 segments_left;
+	__u8 first_segment;
+	__u8 flags;
+	__u16 tag;
+	struct in6_addr segments[0];
+};
+
+struct in6_flowlabel_req {
+	struct in6_addr flr_dst;
+	__be32 flr_label;
+	__u8 flr_action;
+	__u8 flr_share;
+	__u16 flr_flags;
+	__u16 flr_expires;
+	__u16 flr_linger;
+	__u32 __flr_pad;
+};
+
+struct ipv6_mreq {
+	struct in6_addr ipv6mr_multiaddr;
+	int ipv6mr_ifindex;
+};
+
+struct ip6_mtuinfo {
+	struct sockaddr_in6 ip6m_addr;
+	__u32 ip6m_mtu;
+};
+
+enum {
+	NDUSEROPT_UNSPEC = 0,
+	NDUSEROPT_SRCADDR = 1,
+	__NDUSEROPT_MAX = 2,
+};
+
+struct nd_msg {
+	struct icmp6hdr icmph;
+	struct in6_addr target;
+	__u8 opt[0];
+};
+
+struct rs_msg {
+	struct icmp6hdr icmph;
+	__u8 opt[0];
+};
+
+struct ra_msg {
+	struct icmp6hdr icmph;
+	__be32 reachable_time;
+	__be32 retrans_timer;
+};
+
+struct nduseroptmsg {
+	unsigned char nduseropt_family;
+	unsigned char nduseropt_pad1;
+	unsigned short nduseropt_opts_len;
+	int nduseropt_ifindex;
+	__u8 nduseropt_icmp_type;
+	__u8 nduseropt_icmp_code;
+	unsigned short nduseropt_pad2;
+	unsigned int nduseropt_pad3;
+};
+
+typedef u32 inet6_ehashfn_t(const struct net *, const struct in6_addr *, const u16, const struct in6_addr *, const __be16);
+
+typedef int mh_filter_t(struct sock *, struct sk_buff *);
+
+struct icmp6_filter {
+	__u32 data[8];
+};
+
+struct raw6_sock {
+	struct inet_sock inet;
+	__u32 checksum;
+	__u32 offset;
+	struct icmp6_filter filter;
+	__u32 ip6mr_table;
+	struct ipv6_pinfo inet6;
+};
+
+struct raw6_frag_vec {
+	struct msghdr *msg;
+	int hlen;
+	char c[4];
+};
+
+struct icmp6_err {
+	int err;
+	int fatal;
+};
+
+struct ipv6_destopt_hao {
+	__u8 type;
+	__u8 length;
+	struct in6_addr addr;
+} __attribute__((packed));
+
+struct icmpv6_msg {
+	struct sk_buff *skb;
+	int offset;
+	uint8_t type;
+};
+
+struct mld2_grec {
+	__u8 grec_type;
+	__u8 grec_auxwords;
+	__be16 grec_nsrcs;
+	struct in6_addr grec_mca;
+	struct in6_addr grec_src[0];
+};
+
+struct mld2_report {
+	struct icmp6hdr mld2r_hdr;
+	struct mld2_grec mld2r_grec[0];
+};
+
+struct mld_msg {
+	struct icmp6hdr mld_hdr;
+	struct in6_addr mld_mca;
+};
+
+struct mld2_query {
+	struct icmp6hdr mld2q_hdr;
+	struct in6_addr mld2q_mca;
+	__u8 mld2q_qrv: 3;
+	__u8 mld2q_suppress: 1;
+	__u8 mld2q_resv2: 4;
+	__u8 mld2q_qqic;
+	__be16 mld2q_nsrcs;
+	struct in6_addr mld2q_srcs[0];
+};
+
+struct igmp6_mc_iter_state {
+	struct seq_net_private p;
+	struct net_device *dev;
+	struct inet6_dev *idev;
+};
+
+struct igmp6_mcf_iter_state {
+	struct seq_net_private p;
+	struct net_device *dev;
+	struct inet6_dev *idev;
+	struct ifmcaddr6 *im;
+};
+
+enum ip6_defrag_users {
+	IP6_DEFRAG_LOCAL_DELIVER = 0,
+	IP6_DEFRAG_CONNTRACK_IN = 1,
+	__IP6_DEFRAG_CONNTRACK_IN = 65536,
+	IP6_DEFRAG_CONNTRACK_OUT = 65537,
+	__IP6_DEFRAG_CONNTRACK_OUT = 131072,
+	IP6_DEFRAG_CONNTRACK_BRIDGE_IN = 131073,
+	__IP6_DEFRAG_CONNTRACK_BRIDGE_IN = 196608,
+};
+
+struct frag_queue {
+	struct inet_frag_queue q;
+	int iif;
+	__u16 nhoffset;
+	u8 ecn;
+};
+
+struct rt0_hdr {
+	struct ipv6_rt_hdr rt_hdr;
+	__u32 reserved;
+	struct in6_addr addr[0];
+};
+
+struct ipv6_rpl_sr_hdr {
+	__u8 nexthdr;
+	__u8 hdrlen;
+	__u8 type;
+	__u8 segments_left;
+	__u32 cmpre: 4;
+	__u32 cmpri: 4;
+	__u32 reserved: 4;
+	__u32 pad: 4;
+	__u32 reserved1: 16;
+	union {
+		struct {
+			struct {} __empty_addr;
+			struct in6_addr addr[0];
+		};
+		struct {
+			struct {} __empty_data;
+			__u8 data[0];
+		};
+	} segments;
+};
+
+struct ioam6_hdr {
+	__u8 opt_type;
+	__u8 opt_len;
+	char: 8;
+	__u8 type;
+};
+
+struct ioam6_trace_hdr {
+	__be16 namespace_id;
+	char: 2;
+	__u8 overflow: 1;
+	__u8 nodelen: 5;
+	__u8 remlen: 7;
+	union {
+		__be32 type_be32;
+		struct {
+			__u32 bit7: 1;
+			__u32 bit6: 1;
+			__u32 bit5: 1;
+			__u32 bit4: 1;
+			__u32 bit3: 1;
+			__u32 bit2: 1;
+			__u32 bit1: 1;
+			__u32 bit0: 1;
+			__u32 bit15: 1;
+			__u32 bit14: 1;
+			__u32 bit13: 1;
+			__u32 bit12: 1;
+			__u32 bit11: 1;
+			__u32 bit10: 1;
+			__u32 bit9: 1;
+			__u32 bit8: 1;
+			__u32 bit23: 1;
+			__u32 bit22: 1;
+			__u32 bit21: 1;
+			__u32 bit20: 1;
+			__u32 bit19: 1;
+			__u32 bit18: 1;
+			__u32 bit17: 1;
+			__u32 bit16: 1;
+		} type;
+	};
+	__u8 data[0];
+};
+
+struct ioam6_schema;
+
+struct ioam6_namespace {
+	struct rhash_head head;
+	struct callback_head rcu;
+	struct ioam6_schema __attribute__((btf_type_tag("rcu"))) *schema;
+	__be16 id;
+	__be32 data;
+	__be64 data_wide;
+};
+
+struct ioam6_schema {
+	struct rhash_head head;
+	struct callback_head rcu;
+	struct ioam6_namespace __attribute__((btf_type_tag("rcu"))) *ns;
+	u32 id;
+	int len;
+	__be32 hdr;
+	u8 data[0];
+};
+
+struct static_key_false_deferred {
+	struct static_key_false key;
+	unsigned long timeout;
+	struct delayed_work work;
+};
+
+struct ip6fl_iter_state {
+	struct seq_net_private p;
+	struct pid_namespace *pid_ns;
+	int bucket;
+};
+
+enum {
+	SEG6_ATTR_UNSPEC = 0,
+	SEG6_ATTR_DST = 1,
+	SEG6_ATTR_DSTLEN = 2,
+	SEG6_ATTR_HMACKEYID = 3,
+	SEG6_ATTR_SECRET = 4,
+	SEG6_ATTR_SECRETLEN = 5,
+	SEG6_ATTR_ALGID = 6,
+	SEG6_ATTR_HMACINFO = 7,
+	__SEG6_ATTR_MAX = 8,
+};
+
+enum {
+	SEG6_CMD_UNSPEC = 0,
+	SEG6_CMD_SETHMAC = 1,
+	SEG6_CMD_DUMPHMAC = 2,
+	SEG6_CMD_SET_TUNSRC = 3,
+	SEG6_CMD_GET_TUNSRC = 4,
+	__SEG6_CMD_MAX = 5,
+};
+
+struct sr6_tlv {
+	__u8 type;
+	__u8 len;
+	__u8 data[0];
+};
+
+enum {
+	IOAM6_ATTR_UNSPEC = 0,
+	IOAM6_ATTR_NS_ID = 1,
+	IOAM6_ATTR_NS_DATA = 2,
+	IOAM6_ATTR_NS_DATA_WIDE = 3,
+	IOAM6_ATTR_SC_ID = 4,
+	IOAM6_ATTR_SC_DATA = 5,
+	IOAM6_ATTR_SC_NONE = 6,
+	IOAM6_ATTR_PAD = 7,
+	__IOAM6_ATTR_MAX = 8,
+};
+
+enum {
+	IOAM6_CMD_UNSPEC = 0,
+	IOAM6_CMD_ADD_NAMESPACE = 1,
+	IOAM6_CMD_DEL_NAMESPACE = 2,
+	IOAM6_CMD_DUMP_NAMESPACES = 3,
+	IOAM6_CMD_ADD_SCHEMA = 4,
+	IOAM6_CMD_DEL_SCHEMA = 5,
+	IOAM6_CMD_DUMP_SCHEMAS = 6,
+	IOAM6_CMD_NS_SET_SCHEMA = 7,
+	__IOAM6_CMD_MAX = 8,
+};
+
+struct mfc6_cache_cmp_arg {
+	struct in6_addr mf6c_mcastgrp;
+	struct in6_addr mf6c_origin;
+};
+
+enum {
+	IP6MRA_CREPORT_UNSPEC = 0,
+	IP6MRA_CREPORT_MSGTYPE = 1,
+	IP6MRA_CREPORT_MIF_ID = 2,
+	IP6MRA_CREPORT_SRC_ADDR = 3,
+	IP6MRA_CREPORT_DST_ADDR = 4,
+	IP6MRA_CREPORT_PKT = 5,
+	__IP6MRA_CREPORT_MAX = 6,
+};
+
+struct mfc6_cache {
+	struct mr_mfc _c;
+	union {
+		struct {
+			struct in6_addr mf6c_mcastgrp;
+			struct in6_addr mf6c_origin;
+		};
+		struct mfc6_cache_cmp_arg cmparg;
+	};
+};
+
+struct mrt6msg {
+	__u8 im6_mbz;
+	__u8 im6_msgtype;
+	__u16 im6_mif;
+	__u32 im6_pad;
+	struct in6_addr im6_src;
+	struct in6_addr im6_dst;
+};
+
+struct ip6mr_result {
+	struct mr_table *mrt;
+};
+
+typedef __u32 if_mask;
+
+struct if_set {
+	if_mask ifs_bits[8];
+};
+
+struct mf6cctl {
+	struct sockaddr_in6 mf6cc_origin;
+	struct sockaddr_in6 mf6cc_mcastgrp;
+	mifi_t mf6cc_parent;
+	struct if_set mf6cc_ifset;
+};
+
+struct mif6ctl {
+	mifi_t mif6c_mifi;
+	unsigned char mif6c_flags;
+	unsigned char vifc_threshold;
+	__u16 mif6c_pifi;
+	unsigned int vifc_rate_limit;
+};
+
+struct compat_sioc_sg_req6 {
+	struct sockaddr_in6 src;
+	struct sockaddr_in6 grp;
+	compat_ulong_t pktcnt;
+	compat_ulong_t bytecnt;
+	compat_ulong_t wrong_if;
+};
+
+struct compat_sioc_mif_req6 {
+	mifi_t mifi;
+	compat_ulong_t icount;
+	compat_ulong_t ocount;
+	compat_ulong_t ibytes;
+	compat_ulong_t obytes;
+};
+
+struct br_input_skb_cb {
+	struct net_device *brdev;
+	u16 frag_max_size;
+	u8 igmp;
+	u8 mrouters_only: 1;
+	u8 proxyarp_replied: 1;
+	u8 src_port_isolated: 1;
+	u8 promisc: 1;
+	u32 backup_nhid;
+};
+
+struct nf_bridge_frag_data;
+
+struct fib6_rule {
+	struct fib_rule common;
+	struct rt6key src;
+	struct rt6key dst;
+	dscp_t dscp;
+};
+
+struct xfrm6_tunnel_spi {
+	struct hlist_node list_byaddr;
+	struct hlist_node list_byspi;
+	xfrm_address_t addr;
+	u32 spi;
+	refcount_t refcnt;
+	struct callback_head callback_head;
+};
+
+struct xfrm6_tunnel_net {
+	struct hlist_head spi_byaddr[256];
+	struct hlist_head spi_byspi[256];
+	u32 spi;
+};
+
+struct mip6_report_rate_limiter {
+	spinlock_t lock;
+	ktime_t stamp;
+	int iif;
+	struct in6_addr src;
+	struct in6_addr dst;
+};
+
+struct rt2_hdr {
+	struct ipv6_rt_hdr rt_hdr;
+	__u32 reserved;
+	struct in6_addr addr;
+};
+
+enum nf_ip_trace_comments___2 {
+	NF_IP6_TRACE_COMMENT_RULE = 0,
+	NF_IP6_TRACE_COMMENT_RETURN = 1,
+	NF_IP6_TRACE_COMMENT_POLICY = 2,
+};
+
+struct ip6t_error {
+	struct ip6t_entry entry;
+	struct xt_error_target target;
+};
+
+struct ip6t_replace {
+	char name[32];
+	unsigned int valid_hooks;
+	unsigned int num_entries;
+	unsigned int size;
+	unsigned int hook_entry[5];
+	unsigned int underflow[5];
+	unsigned int num_counters;
+	struct xt_counters __attribute__((btf_type_tag("user"))) *counters;
+	struct ip6t_entry entries[0];
+};
+
+struct ip6t_standard {
+	struct ip6t_entry entry;
+	struct xt_standard_target target;
+};
+
+struct ip6t_getinfo {
+	char name[32];
+	unsigned int valid_hooks;
+	unsigned int hook_entry[5];
+	unsigned int underflow[5];
+	unsigned int num_entries;
+	unsigned int size;
+};
+
+struct ip6t_get_entries {
+	char name[32];
+	unsigned int size;
+	struct ip6t_entry entrytable[0];
+};
+
+struct nft_ct_frag6_pernet {
+	struct ctl_table_header *nf_frag_frags_hdr;
+	struct fqdir *fqdir;
+};
+
+enum {
+	XT_RPFILTER_LOOSE = 1,
+	XT_RPFILTER_VALID_MARK = 2,
+	XT_RPFILTER_ACCEPT_LOCAL = 4,
+	XT_RPFILTER_INVERT = 8,
+	XT_RPFILTER_OPTION_MASK = 15,
+};
+
+struct xt_rpfilter_info {
+	__u8 flags;
+};
+
+enum ip6t_reject_with {
+	IP6T_ICMP6_NO_ROUTE = 0,
+	IP6T_ICMP6_ADM_PROHIBITED = 1,
+	IP6T_ICMP6_NOT_NEIGHBOUR = 2,
+	IP6T_ICMP6_ADDR_UNREACH = 3,
+	IP6T_ICMP6_PORT_UNREACH = 4,
+	IP6T_ICMP6_ECHOREPLY = 5,
+	IP6T_TCP_RESET = 6,
+	IP6T_ICMP6_POLICY_FAIL = 7,
+	IP6T_ICMP6_REJECT_ROUTE = 8,
+};
+
+struct ip6t_reject_info {
+	__u32 with;
+};
+
+struct vti6_net {
+	struct net_device *fb_tnl_dev;
+	struct ip6_tnl __attribute__((btf_type_tag("rcu"))) *tnls_r_l[32];
+	struct ip6_tnl __attribute__((btf_type_tag("rcu"))) *tnls_wc[1];
+	struct ip6_tnl __attribute__((btf_type_tag("rcu"))) **tnls[2];
+};
+
+struct ip6_tnl_parm2 {
+	char name[16];
+	int link;
+	__u8 proto;
+	__u8 encap_limit;
+	__u8 hop_limit;
+	__be32 flowinfo;
+	__u32 flags;
+	struct in6_addr laddr;
+	struct in6_addr raddr;
+	__be16 i_flags;
+	__be16 o_flags;
+	__be32 i_key;
+	__be32 o_key;
+};
+
+struct sit_net {
+	struct ip_tunnel __attribute__((btf_type_tag("rcu"))) *tunnels_r_l[16];
+	struct ip_tunnel __attribute__((btf_type_tag("rcu"))) *tunnels_r[16];
+	struct ip_tunnel __attribute__((btf_type_tag("rcu"))) *tunnels_l[16];
+	struct ip_tunnel __attribute__((btf_type_tag("rcu"))) *tunnels_wc[1];
+	struct ip_tunnel __attribute__((btf_type_tag("rcu"))) **tunnels[4];
+	struct net_device *fb_tunnel_dev;
+};
+
+struct ip_tunnel_prl {
+	__be32 addr;
+	__u16 flags;
+	__u16 __reserved;
+	__u32 datalen;
+	__u32 __reserved2;
+};
+
+struct ipv6_tlv_tnl_enc_lim {
+	__u8 type;
+	__u8 length;
+	__u8 encap_limit;
+};
+
+struct ipv6_tel_txoption {
+	struct ipv6_txoptions ops;
+	__u8 dst_opt[8];
+};
+
+struct ip6_tnl_net {
+	struct net_device *fb_tnl_dev;
+	struct ip6_tnl __attribute__((btf_type_tag("rcu"))) *tnls_r_l[32];
+	struct ip6_tnl __attribute__((btf_type_tag("rcu"))) *tnls_wc[1];
+	struct ip6_tnl __attribute__((btf_type_tag("rcu"))) **tnls[2];
+	struct ip6_tnl __attribute__((btf_type_tag("rcu"))) *collect_md_tun;
+};
+
+struct ip6_tnl_parm {
+	char name[16];
+	int link;
+	__u8 proto;
+	__u8 encap_limit;
+	__u8 hop_limit;
+	__be32 flowinfo;
+	__u32 flags;
+	struct in6_addr laddr;
+	struct in6_addr raddr;
+};
+
+struct ip6gre_net {
+	struct ip6_tnl __attribute__((btf_type_tag("rcu"))) *tunnels[128];
+	struct ip6_tnl __attribute__((btf_type_tag("rcu"))) *collect_md_tun;
+	struct ip6_tnl __attribute__((btf_type_tag("rcu"))) *collect_md_tun_erspan;
+	struct net_device *fb_tunnel_dev;
+};
+
+enum {
+	IP6_FH_F_FRAG = 1,
+	IP6_FH_F_AUTH = 2,
+	IP6_FH_F_SKIP_RH = 4,
+};
+
+enum tpacket_versions {
+	TPACKET_V1 = 0,
+	TPACKET_V2 = 1,
+	TPACKET_V3 = 2,
+};
+
+enum packet_sock_flags {
+	PACKET_SOCK_ORIGDEV = 0,
+	PACKET_SOCK_AUXDATA = 1,
+	PACKET_SOCK_TX_HAS_OFF = 2,
+	PACKET_SOCK_TP_LOSS = 3,
+	PACKET_SOCK_RUNNING = 4,
+	PACKET_SOCK_PRESSURE = 5,
+	PACKET_SOCK_QDISC_BYPASS = 6,
+};
+
+struct tpacket_stats {
+	unsigned int tp_packets;
+	unsigned int tp_drops;
+};
+
+struct tpacket_stats_v3 {
+	unsigned int tp_packets;
+	unsigned int tp_drops;
+	unsigned int tp_freeze_q_cnt;
+};
+
+union tpacket_stats_u {
+	struct tpacket_stats stats1;
+	struct tpacket_stats_v3 stats3;
+};
+
+struct pgv;
+
+struct tpacket_kbdq_core {
+	struct pgv *pkbdq;
+	unsigned int feature_req_word;
+	unsigned int hdrlen;
+	unsigned char reset_pending_on_curr_blk;
+	unsigned char delete_blk_timer;
+	unsigned short kactive_blk_num;
+	unsigned short blk_sizeof_priv;
+	unsigned short last_kactive_blk_num;
+	char *pkblk_start;
+	char *pkblk_end;
+	int kblk_size;
+	unsigned int max_frame_len;
+	unsigned int knum_blocks;
+	uint64_t knxt_seq_num;
+	char *prev;
+	char *nxt_offset;
+	struct sk_buff *skb;
+	rwlock_t blk_fill_in_prog_lock;
+	unsigned short retire_blk_tov;
+	unsigned short version;
+	unsigned long tov_in_jiffies;
+	struct timer_list retire_blk_timer;
+};
+
+struct packet_ring_buffer {
+	struct pgv *pg_vec;
+	unsigned int head;
+	unsigned int frames_per_block;
+	unsigned int frame_size;
+	unsigned int frame_max;
+	unsigned int pg_vec_order;
+	unsigned int pg_vec_pages;
+	unsigned int pg_vec_len;
+	unsigned int __attribute__((btf_type_tag("percpu"))) *pending_refcnt;
+	union {
+		unsigned long *rx_owner_map;
+		struct tpacket_kbdq_core prb_bdqc;
+	};
+};
+
+struct packet_fanout;
+
+struct packet_rollover;
+
+struct packet_mclist;
+
+struct packet_sock {
+	struct sock sk;
+	struct packet_fanout *fanout;
+	union tpacket_stats_u stats;
+	struct packet_ring_buffer rx_ring;
+	struct packet_ring_buffer tx_ring;
+	int copy_thresh;
+	spinlock_t bind_lock;
+	struct mutex pg_vec_lock;
+	unsigned long flags;
+	int ifindex;
+	u8 vnet_hdr_sz;
+	__be16 num;
+	struct packet_rollover *rollover;
+	struct packet_mclist *mclist;
+	atomic_long_t mapped;
+	enum tpacket_versions tp_version;
+	unsigned int tp_hdrlen;
+	unsigned int tp_reserve;
+	unsigned int tp_tstamp;
+	struct completion skb_completion;
+	struct net_device __attribute__((btf_type_tag("rcu"))) *cached_dev;
+	long: 64;
+	struct packet_type prot_hook;
+	long: 64;
+	long: 64;
+	long: 64;
+	atomic_t tp_drops;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct packet_fanout {
+	possible_net_t net;
+	unsigned int num_members;
+	u32 max_num_members;
+	u16 id;
+	u8 type;
+	u8 flags;
+	union {
+		atomic_t rr_cur;
+		struct bpf_prog __attribute__((btf_type_tag("rcu"))) *bpf_prog;
+	};
+	struct list_head list;
+	spinlock_t lock;
+	refcount_t sk_ref;
+	long: 64;
+	struct packet_type prot_hook;
+	struct sock __attribute__((btf_type_tag("rcu"))) *arr[0];
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct pgv {
+	char *buffer;
+};
+
+struct packet_rollover {
+	int sock;
+	atomic_long_t num;
+	atomic_long_t num_huge;
+	atomic_long_t num_failed;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	u32 history[16];
+};
+
+struct packet_mclist {
+	struct packet_mclist *next;
+	int ifindex;
+	int count;
+	unsigned short type;
+	unsigned short alen;
+	unsigned char addr[32];
+};
+
+struct tpacket_bd_ts {
+	unsigned int ts_sec;
+	union {
+		unsigned int ts_usec;
+		unsigned int ts_nsec;
+	};
+};
+
+struct tpacket_hdr_v1 {
+	__u32 block_status;
+	__u32 num_pkts;
+	__u32 offset_to_first_pkt;
+	__u32 blk_len;
+	__u64 seq_num;
+	struct tpacket_bd_ts ts_first_pkt;
+	struct tpacket_bd_ts ts_last_pkt;
+};
+
+union tpacket_bd_header_u {
+	struct tpacket_hdr_v1 bh1;
+};
+
+struct tpacket_block_desc {
+	__u32 version;
+	__u32 offset_to_priv;
+	union tpacket_bd_header_u hdr;
+};
+
+struct tpacket_hdr_variant1 {
+	__u32 tp_rxhash;
+	__u32 tp_vlan_tci;
+	__u16 tp_vlan_tpid;
+	__u16 tp_padding;
+};
+
+struct tpacket3_hdr {
+	__u32 tp_next_offset;
+	__u32 tp_sec;
+	__u32 tp_nsec;
+	__u32 tp_snaplen;
+	__u32 tp_len;
+	__u32 tp_status;
+	__u16 tp_mac;
+	__u16 tp_net;
+	union {
+		struct tpacket_hdr_variant1 hv1;
+	};
+	__u8 tp_padding[8];
+};
+
+struct sockaddr_ll {
+	unsigned short sll_family;
+	__be16 sll_protocol;
+	int sll_ifindex;
+	unsigned short sll_hatype;
+	unsigned char sll_pkttype;
+	unsigned char sll_halen;
+	unsigned char sll_addr[8];
+};
+
+struct sockaddr_pkt {
+	unsigned short spkt_family;
+	unsigned char spkt_device[14];
+	__be16 spkt_protocol;
+};
+
+struct packet_skb_cb {
+	union {
+		struct sockaddr_pkt pkt;
+		union {
+			unsigned int origlen;
+			struct sockaddr_ll ll;
+		};
+	} sa;
+};
+
+struct tpacket_hdr;
+
+struct tpacket2_hdr;
+
+union tpacket_uhdr {
+	struct tpacket_hdr *h1;
+	struct tpacket2_hdr *h2;
+	struct tpacket3_hdr *h3;
+	void *raw;
+};
+
+struct tpacket_hdr {
+	unsigned long tp_status;
+	unsigned int tp_len;
+	unsigned int tp_snaplen;
+	unsigned short tp_mac;
+	unsigned short tp_net;
+	unsigned int tp_sec;
+	unsigned int tp_usec;
+};
+
+struct tpacket2_hdr {
+	__u32 tp_status;
+	__u32 tp_len;
+	__u32 tp_snaplen;
+	__u16 tp_mac;
+	__u16 tp_net;
+	__u32 tp_sec;
+	__u32 tp_nsec;
+	__u16 tp_vlan_tci;
+	__u16 tp_vlan_tpid;
+	__u8 tp_padding[4];
+};
+
+struct virtio_net_hdr_mrg_rxbuf {
+	struct virtio_net_hdr hdr;
+	__virtio16 num_buffers;
+};
+
+struct tpacket_req {
+	unsigned int tp_block_size;
+	unsigned int tp_block_nr;
+	unsigned int tp_frame_size;
+	unsigned int tp_frame_nr;
+};
+
+struct tpacket_req3 {
+	unsigned int tp_block_size;
+	unsigned int tp_block_nr;
+	unsigned int tp_frame_size;
+	unsigned int tp_frame_nr;
+	unsigned int tp_retire_blk_tov;
+	unsigned int tp_sizeof_priv;
+	unsigned int tp_feature_req_word;
+};
+
+union tpacket_req_u {
+	struct tpacket_req req;
+	struct tpacket_req3 req3;
+};
+
+struct fanout_args {
+	__u16 id;
+	__u16 type_flags;
+	__u32 max_num_members;
+};
+
+struct packet_mreq_max {
+	int mr_ifindex;
+	unsigned short mr_type;
+	unsigned short mr_alen;
+	unsigned char mr_address[32];
+};
+
+struct tpacket_rollover_stats {
+	__u64 tp_all;
+	__u64 tp_huge;
+	__u64 tp_failed;
+};
+
+struct tpacket_auxdata {
+	__u32 tp_status;
+	__u32 tp_len;
+	__u32 tp_snaplen;
+	__u16 tp_mac;
+	__u16 tp_net;
+	__u16 tp_vlan_tci;
+	__u16 tp_vlan_tpid;
+};
+
+struct sadb_msg;
+
+typedef int (*pfkey_handler)(struct sock *, struct sk_buff *, const struct sadb_msg *, void * const *);
+
+struct sadb_msg {
+	__u8 sadb_msg_version;
+	__u8 sadb_msg_type;
+	__u8 sadb_msg_errno;
+	__u8 sadb_msg_satype;
+	__u16 sadb_msg_len;
+	__u16 sadb_msg_reserved;
+	__u32 sadb_msg_seq;
+	__u32 sadb_msg_pid;
+};
+
+enum {
+	IPSEC_MODE_ANY = 0,
+	IPSEC_MODE_TRANSPORT = 1,
+	IPSEC_MODE_TUNNEL = 2,
+	IPSEC_MODE_BEET = 3,
+};
+
+enum {
+	IPSEC_POLICY_DISCARD = 0,
+	IPSEC_POLICY_NONE = 1,
+	IPSEC_POLICY_IPSEC = 2,
+	IPSEC_POLICY_ENTRUST = 3,
+	IPSEC_POLICY_BYPASS = 4,
+};
+
+enum {
+	IPSEC_DIR_ANY = 0,
+	IPSEC_DIR_INBOUND = 1,
+	IPSEC_DIR_OUTBOUND = 2,
+	IPSEC_DIR_FWD = 3,
+	IPSEC_DIR_MAX = 4,
+	IPSEC_DIR_INVALID = 5,
+};
+
+enum {
+	IPSEC_LEVEL_DEFAULT = 0,
+	IPSEC_LEVEL_USE = 1,
+	IPSEC_LEVEL_REQUIRE = 2,
+	IPSEC_LEVEL_UNIQUE = 3,
+};
+
+struct pfkey_sock {
+	struct sock sk;
+	int registered;
+	int promisc;
+	struct {
+		uint8_t msg_version;
+		uint32_t msg_portid;
+		int (*dump)(struct pfkey_sock *);
+		void (*done)(struct pfkey_sock *);
+		union {
+			struct xfrm_policy_walk policy;
+			struct xfrm_state_walk state;
+		} u;
+		struct sk_buff *skb;
+	} dump;
+	struct mutex dump_lock;
+};
+
+struct sadb_x_policy {
+	__u16 sadb_x_policy_len;
+	__u16 sadb_x_policy_exttype;
+	__u16 sadb_x_policy_type;
+	__u8 sadb_x_policy_dir;
+	__u8 sadb_x_policy_reserved;
+	__u32 sadb_x_policy_id;
+	__u32 sadb_x_policy_priority;
+};
+
+struct sadb_x_sec_ctx {
+	__u16 sadb_x_sec_len;
+	__u16 sadb_x_sec_exttype;
+	__u8 sadb_x_ctx_alg;
+	__u8 sadb_x_ctx_doi;
+	__u16 sadb_x_ctx_len;
+};
+
+struct sadb_ext {
+	__u16 sadb_ext_len;
+	__u16 sadb_ext_type;
+};
+
+struct sadb_key {
+	__u16 sadb_key_len;
+	__u16 sadb_key_exttype;
+	__u16 sadb_key_bits;
+	__u16 sadb_key_reserved;
+};
+
+struct sadb_address {
+	__u16 sadb_address_len;
+	__u16 sadb_address_exttype;
+	__u8 sadb_address_proto;
+	__u8 sadb_address_prefixlen;
+	__u16 sadb_address_reserved;
+};
+
+struct sadb_prop {
+	__u16 sadb_prop_len;
+	__u16 sadb_prop_exttype;
+	__u8 sadb_prop_replay;
+	__u8 sadb_prop_reserved[3];
+};
+
+struct sadb_comb {
+	__u8 sadb_comb_auth;
+	__u8 sadb_comb_encrypt;
+	__u16 sadb_comb_flags;
+	__u16 sadb_comb_auth_minbits;
+	__u16 sadb_comb_auth_maxbits;
+	__u16 sadb_comb_encrypt_minbits;
+	__u16 sadb_comb_encrypt_maxbits;
+	__u32 sadb_comb_reserved;
+	__u32 sadb_comb_soft_allocations;
+	__u32 sadb_comb_hard_allocations;
+	__u64 sadb_comb_soft_bytes;
+	__u64 sadb_comb_hard_bytes;
+	__u64 sadb_comb_soft_addtime;
+	__u64 sadb_comb_hard_addtime;
+	__u64 sadb_comb_soft_usetime;
+	__u64 sadb_comb_hard_usetime;
+};
+
+struct sadb_x_ipsecrequest {
+	__u16 sadb_x_ipsecrequest_len;
+	__u16 sadb_x_ipsecrequest_proto;
+	__u8 sadb_x_ipsecrequest_mode;
+	__u8 sadb_x_ipsecrequest_level;
+	__u16 sadb_x_ipsecrequest_reserved1;
+	__u32 sadb_x_ipsecrequest_reqid;
+	__u32 sadb_x_ipsecrequest_reserved2;
+};
+
+struct netns_pfkey {
+	struct hlist_head table;
+	atomic_t socks_nr;
+};
+
+struct sadb_sa {
+	__u16 sadb_sa_len;
+	__u16 sadb_sa_exttype;
+	__be32 sadb_sa_spi;
+	__u8 sadb_sa_replay;
+	__u8 sadb_sa_state;
+	__u8 sadb_sa_auth;
+	__u8 sadb_sa_encrypt;
+	__u32 sadb_sa_flags;
+};
+
+struct sadb_lifetime {
+	__u16 sadb_lifetime_len;
+	__u16 sadb_lifetime_exttype;
+	__u32 sadb_lifetime_allocations;
+	__u64 sadb_lifetime_bytes;
+	__u64 sadb_lifetime_addtime;
+	__u64 sadb_lifetime_usetime;
+};
+
+struct sadb_x_sa2 {
+	__u16 sadb_x_sa2_len;
+	__u16 sadb_x_sa2_exttype;
+	__u8 sadb_x_sa2_mode;
+	__u8 sadb_x_sa2_reserved1;
+	__u16 sadb_x_sa2_reserved2;
+	__u32 sadb_x_sa2_sequence;
+	__u32 sadb_x_sa2_reqid;
+};
+
+struct sadb_x_nat_t_type {
+	__u16 sadb_x_nat_t_type_len;
+	__u16 sadb_x_nat_t_type_exttype;
+	__u8 sadb_x_nat_t_type_type;
+	__u8 sadb_x_nat_t_type_reserved[3];
+};
+
+struct sadb_x_nat_t_port {
+	__u16 sadb_x_nat_t_port_len;
+	__u16 sadb_x_nat_t_port_exttype;
+	__be16 sadb_x_nat_t_port_port;
+	__u16 sadb_x_nat_t_port_reserved;
+};
+
+struct sadb_supported {
+	__u16 sadb_supported_len;
+	__u16 sadb_supported_exttype;
+	__u32 sadb_supported_reserved;
+};
+
+struct sadb_spirange {
+	__u16 sadb_spirange_len;
+	__u16 sadb_spirange_exttype;
+	__u32 sadb_spirange_min;
+	__u32 sadb_spirange_max;
+	__u32 sadb_spirange_reserved;
+};
+
+struct sadb_x_filter {
+	__u16 sadb_x_filter_len;
+	__u16 sadb_x_filter_exttype;
+	__u32 sadb_x_filter_saddr[4];
+	__u32 sadb_x_filter_daddr[4];
+	__u16 sadb_x_filter_family;
+	__u8 sadb_x_filter_splen;
+	__u8 sadb_x_filter_dplen;
+};
+
+enum br_boolopt_id {
+	BR_BOOLOPT_NO_LL_LEARN = 0,
+	BR_BOOLOPT_MCAST_VLAN_SNOOPING = 1,
+	BR_BOOLOPT_MST_ENABLE = 2,
+	BR_BOOLOPT_MAX = 3,
+};
+
+enum net_bridge_opts {
+	BROPT_VLAN_ENABLED = 0,
+	BROPT_VLAN_STATS_ENABLED = 1,
+	BROPT_NF_CALL_IPTABLES = 2,
+	BROPT_NF_CALL_IP6TABLES = 3,
+	BROPT_NF_CALL_ARPTABLES = 4,
+	BROPT_GROUP_ADDR_SET = 5,
+	BROPT_MULTICAST_ENABLED = 6,
+	BROPT_MULTICAST_QUERY_USE_IFADDR = 7,
+	BROPT_MULTICAST_STATS_ENABLED = 8,
+	BROPT_HAS_IPV6_ADDR = 9,
+	BROPT_NEIGH_SUPPRESS_ENABLED = 10,
+	BROPT_MTU_SET_BY_USER = 11,
+	BROPT_VLAN_STATS_PER_PORT = 12,
+	BROPT_NO_LL_LEARN = 13,
+	BROPT_VLAN_BRIDGE_BINDING = 14,
+	BROPT_MCAST_VLAN_SNOOPING_ENABLED = 15,
+	BROPT_MST_ENABLED = 16,
+};
+
+enum switchdev_notifier_type {
+	SWITCHDEV_FDB_ADD_TO_BRIDGE = 1,
+	SWITCHDEV_FDB_DEL_TO_BRIDGE = 2,
+	SWITCHDEV_FDB_ADD_TO_DEVICE = 3,
+	SWITCHDEV_FDB_DEL_TO_DEVICE = 4,
+	SWITCHDEV_FDB_OFFLOADED = 5,
+	SWITCHDEV_FDB_FLUSH_TO_BRIDGE = 6,
+	SWITCHDEV_PORT_OBJ_ADD = 7,
+	SWITCHDEV_PORT_OBJ_DEL = 8,
+	SWITCHDEV_PORT_ATTR_SET = 9,
+	SWITCHDEV_VXLAN_FDB_ADD_TO_BRIDGE = 10,
+	SWITCHDEV_VXLAN_FDB_DEL_TO_BRIDGE = 11,
+	SWITCHDEV_VXLAN_FDB_ADD_TO_DEVICE = 12,
+	SWITCHDEV_VXLAN_FDB_DEL_TO_DEVICE = 13,
+	SWITCHDEV_VXLAN_FDB_OFFLOADED = 14,
+	SWITCHDEV_BRPORT_OFFLOADED = 15,
+	SWITCHDEV_BRPORT_UNOFFLOADED = 16,
+	SWITCHDEV_BRPORT_REPLAY = 17,
+};
+
+struct br_boolopt_multi {
+	__u32 optval;
+	__u32 optmask;
+};
+
+struct nf_br_ops {
+	int (*br_dev_xmit_hook)(struct sk_buff *);
+};
+
+enum br_pkt_type {
+	BR_PKT_UNICAST = 0,
+	BR_PKT_MULTICAST = 1,
+	BR_PKT_BROADCAST = 2,
+};
+
+struct net_bridge_mcast_gc {
+	struct hlist_node gc_node;
+	void (*destroy)(struct net_bridge_mcast_gc *);
+};
+
+struct net_bridge_port_group;
+
+struct net_bridge_mdb_entry {
+	struct rhash_head rhnode;
+	struct net_bridge *br;
+	struct net_bridge_port_group __attribute__((btf_type_tag("rcu"))) *ports;
+	struct br_ip addr;
+	bool host_joined;
+	struct timer_list timer;
+	struct hlist_node mdb_node;
+	struct net_bridge_mcast_gc mcast_gc;
+	struct callback_head rcu;
+};
+
+struct net_bridge_port_group_sg_key {
+	struct net_bridge_port *port;
+	struct br_ip addr;
+};
+
+struct net_bridge_port_group {
+	struct net_bridge_port_group __attribute__((btf_type_tag("rcu"))) *next;
+	struct net_bridge_port_group_sg_key key;
+	unsigned char eth_addr[6];
+	unsigned char flags;
+	unsigned char filter_mode;
+	unsigned char grp_query_rexmit_cnt;
+	unsigned char rt_protocol;
+	struct hlist_head src_list;
+	unsigned int src_ents;
+	struct timer_list timer;
+	struct timer_list rexmit_timer;
+	struct hlist_node mglist;
+	struct rb_root eht_set_tree;
+	struct rb_root eht_host_tree;
+	struct rhash_head rhnode;
+	struct net_bridge_mcast_gc mcast_gc;
+	struct callback_head rcu;
+};
+
+enum {
+	BR_FDB_LOCAL = 0,
+	BR_FDB_STATIC = 1,
+	BR_FDB_STICKY = 2,
+	BR_FDB_ADDED_BY_USER = 3,
+	BR_FDB_ADDED_BY_EXT_LEARN = 4,
+	BR_FDB_OFFLOADED = 5,
+	BR_FDB_NOTIFY = 6,
+	BR_FDB_NOTIFY_INACTIVE = 7,
+	BR_FDB_LOCKED = 8,
+};
+
+enum {
+	NFEA_UNSPEC = 0,
+	NFEA_ACTIVITY_NOTIFY = 1,
+	NFEA_DONT_REFRESH = 2,
+	__NFEA_MAX = 3,
+};
+
+enum {
+	FDB_NOTIFY_BIT = 1,
+	FDB_NOTIFY_INACTIVE_BIT = 2,
+};
+
+struct net_bridge_vlan_group {
+	struct rhashtable vlan_hash;
+	struct rhashtable tunnel_hash;
+	struct list_head vlan_list;
+	u16 num_vlans;
+	u16 pvid;
+	u8 pvid_state;
+};
+
+struct net_bridge_fdb_flush_desc {
+	unsigned long flags;
+	unsigned long flags_mask;
+	int port_ifindex;
+	u16 vlan_id;
+};
+
+struct __fdb_entry {
+	__u8 mac_addr[6];
+	__u8 port_no;
+	__u8 is_local;
+	__u32 ageing_timer_value;
+	__u8 port_hi;
+	__u8 pad0;
+	__u16 unused;
+};
+
+enum {
+	BR_MCAST_DIR_RX = 0,
+	BR_MCAST_DIR_TX = 1,
+	BR_MCAST_DIR_SIZE = 2,
+};
+
+enum {
+	MDB_RTR_TYPE_DISABLED = 0,
+	MDB_RTR_TYPE_TEMP_QUERY = 1,
+	MDB_RTR_TYPE_PERM = 2,
+	MDB_RTR_TYPE_TEMP = 3,
+};
+
+struct br_frame_type {
+	__be16 type;
+	int (*frame_handler)(struct net_bridge_port *, struct sk_buff *);
+	struct hlist_node list;
+};
+
+struct __port_info {
+	__u64 designated_root;
+	__u64 designated_bridge;
+	__u16 port_id;
+	__u16 designated_port;
+	__u32 path_cost;
+	__u32 designated_cost;
+	__u8 state;
+	__u8 top_change_ack;
+	__u8 config_pending;
+	__u8 unused0;
+	__u32 message_age_timer_value;
+	__u32 forward_delay_timer_value;
+	__u32 hold_timer_value;
+};
+
+struct __bridge_info {
+	__u64 designated_root;
+	__u64 bridge_id;
+	__u32 root_path_cost;
+	__u32 max_age;
+	__u32 hello_time;
+	__u32 forward_delay;
+	__u32 bridge_max_age;
+	__u32 bridge_hello_time;
+	__u32 bridge_forward_delay;
+	__u8 topology_change;
+	__u8 topology_change_detected;
+	__u8 root_port;
+	__u8 stp_enabled;
+	__u32 ageing_time;
+	__u32 gc_interval;
+	__u32 hello_timer_value;
+	__u32 tcn_timer_value;
+	__u32 topology_change_timer_value;
+	__u32 gc_timer_value;
+};
+
+enum switchdev_attr_id {
+	SWITCHDEV_ATTR_ID_UNDEFINED = 0,
+	SWITCHDEV_ATTR_ID_PORT_STP_STATE = 1,
+	SWITCHDEV_ATTR_ID_PORT_MST_STATE = 2,
+	SWITCHDEV_ATTR_ID_PORT_BRIDGE_FLAGS = 3,
+	SWITCHDEV_ATTR_ID_PORT_PRE_BRIDGE_FLAGS = 4,
+	SWITCHDEV_ATTR_ID_PORT_MROUTER = 5,
+	SWITCHDEV_ATTR_ID_BRIDGE_AGEING_TIME = 6,
+	SWITCHDEV_ATTR_ID_BRIDGE_VLAN_FILTERING = 7,
+	SWITCHDEV_ATTR_ID_BRIDGE_VLAN_PROTOCOL = 8,
+	SWITCHDEV_ATTR_ID_BRIDGE_MC_DISABLED = 9,
+	SWITCHDEV_ATTR_ID_BRIDGE_MROUTER = 10,
+	SWITCHDEV_ATTR_ID_BRIDGE_MST = 11,
+	SWITCHDEV_ATTR_ID_MRP_PORT_ROLE = 12,
+	SWITCHDEV_ATTR_ID_VLAN_MSTI = 13,
+};
+
+struct switchdev_mst_state {
+	u16 msti;
+	u8 state;
+};
+
+struct switchdev_brport_flags {
+	unsigned long val;
+	unsigned long mask;
+};
+
+struct switchdev_vlan_msti {
+	u16 vid;
+	u16 msti;
+};
+
+struct switchdev_attr {
+	struct net_device *orig_dev;
+	enum switchdev_attr_id id;
+	u32 flags;
+	void *complete_priv;
+	void (*complete)(struct net_device *, int, void *);
+	union {
+		u8 stp_state;
+		struct switchdev_mst_state mst_state;
+		struct switchdev_brport_flags brport_flags;
+		bool mrouter;
+		clock_t ageing_time;
+		bool vlan_filtering;
+		u16 vlan_protocol;
+		bool mst;
+		bool mc_disabled;
+		u8 mrp_port_role;
+		struct switchdev_vlan_msti vlan_msti;
+	} u;
+};
+
+struct br_config_bpdu {
+	unsigned int topology_change: 1;
+	unsigned int topology_change_ack: 1;
+	bridge_id root;
+	int root_path_cost;
+	bridge_id bridge_id;
+	port_id port_id;
+	int message_age;
+	int max_age;
+	int hello_time;
+	int forward_delay;
+};
+
+enum {
+	BR_GROUPFWD_STP = 1,
+	BR_GROUPFWD_MACPAUSE = 2,
+	BR_GROUPFWD_LACP = 4,
+};
+
+enum {
+	IFLA_BR_UNSPEC = 0,
+	IFLA_BR_FORWARD_DELAY = 1,
+	IFLA_BR_HELLO_TIME = 2,
+	IFLA_BR_MAX_AGE = 3,
+	IFLA_BR_AGEING_TIME = 4,
+	IFLA_BR_STP_STATE = 5,
+	IFLA_BR_PRIORITY = 6,
+	IFLA_BR_VLAN_FILTERING = 7,
+	IFLA_BR_VLAN_PROTOCOL = 8,
+	IFLA_BR_GROUP_FWD_MASK = 9,
+	IFLA_BR_ROOT_ID = 10,
+	IFLA_BR_BRIDGE_ID = 11,
+	IFLA_BR_ROOT_PORT = 12,
+	IFLA_BR_ROOT_PATH_COST = 13,
+	IFLA_BR_TOPOLOGY_CHANGE = 14,
+	IFLA_BR_TOPOLOGY_CHANGE_DETECTED = 15,
+	IFLA_BR_HELLO_TIMER = 16,
+	IFLA_BR_TCN_TIMER = 17,
+	IFLA_BR_TOPOLOGY_CHANGE_TIMER = 18,
+	IFLA_BR_GC_TIMER = 19,
+	IFLA_BR_GROUP_ADDR = 20,
+	IFLA_BR_FDB_FLUSH = 21,
+	IFLA_BR_MCAST_ROUTER = 22,
+	IFLA_BR_MCAST_SNOOPING = 23,
+	IFLA_BR_MCAST_QUERY_USE_IFADDR = 24,
+	IFLA_BR_MCAST_QUERIER = 25,
+	IFLA_BR_MCAST_HASH_ELASTICITY = 26,
+	IFLA_BR_MCAST_HASH_MAX = 27,
+	IFLA_BR_MCAST_LAST_MEMBER_CNT = 28,
+	IFLA_BR_MCAST_STARTUP_QUERY_CNT = 29,
+	IFLA_BR_MCAST_LAST_MEMBER_INTVL = 30,
+	IFLA_BR_MCAST_MEMBERSHIP_INTVL = 31,
+	IFLA_BR_MCAST_QUERIER_INTVL = 32,
+	IFLA_BR_MCAST_QUERY_INTVL = 33,
+	IFLA_BR_MCAST_QUERY_RESPONSE_INTVL = 34,
+	IFLA_BR_MCAST_STARTUP_QUERY_INTVL = 35,
+	IFLA_BR_NF_CALL_IPTABLES = 36,
+	IFLA_BR_NF_CALL_IP6TABLES = 37,
+	IFLA_BR_NF_CALL_ARPTABLES = 38,
+	IFLA_BR_VLAN_DEFAULT_PVID = 39,
+	IFLA_BR_PAD = 40,
+	IFLA_BR_VLAN_STATS_ENABLED = 41,
+	IFLA_BR_MCAST_STATS_ENABLED = 42,
+	IFLA_BR_MCAST_IGMP_VERSION = 43,
+	IFLA_BR_MCAST_MLD_VERSION = 44,
+	IFLA_BR_VLAN_STATS_PER_PORT = 45,
+	IFLA_BR_MULTI_BOOLOPT = 46,
+	IFLA_BR_MCAST_QUERIER_STATE = 47,
+	__IFLA_BR_MAX = 48,
+};
+
+enum {
+	LINK_XSTATS_TYPE_UNSPEC = 0,
+	LINK_XSTATS_TYPE_BRIDGE = 1,
+	LINK_XSTATS_TYPE_BOND = 2,
+	__LINK_XSTATS_TYPE_MAX = 3,
+};
+
+enum {
+	BRIDGE_XSTATS_UNSPEC = 0,
+	BRIDGE_XSTATS_VLAN = 1,
+	BRIDGE_XSTATS_MCAST = 2,
+	BRIDGE_XSTATS_PAD = 3,
+	BRIDGE_XSTATS_STP = 4,
+	__BRIDGE_XSTATS_MAX = 5,
+};
+
+struct bridge_vlan_info {
+	__u16 flags;
+	__u16 vid;
+};
+
+struct vtunnel_info {
+	u32 tunid;
+	u16 vid;
+	u16 flags;
+};
+
+enum {
+	IFLA_BRIDGE_VLAN_TUNNEL_UNSPEC = 0,
+	IFLA_BRIDGE_VLAN_TUNNEL_ID = 1,
+	IFLA_BRIDGE_VLAN_TUNNEL_VID = 2,
+	IFLA_BRIDGE_VLAN_TUNNEL_FLAGS = 3,
+	__IFLA_BRIDGE_VLAN_TUNNEL_MAX = 4,
+};
+
+enum {
+	BR_VLFLAG_PER_PORT_STATS = 1,
+	BR_VLFLAG_ADDED_BY_SWITCHDEV = 2,
+	BR_VLFLAG_MCAST_ENABLED = 4,
+	BR_VLFLAG_GLOBAL_MCAST_ENABLED = 8,
+	BR_VLFLAG_NEIGH_SUPPRESS_ENABLED = 16,
+};
+
+struct brport_attribute {
+	struct attribute attr;
+	ssize_t (*show)(struct net_bridge_port *, char *);
+	int (*store)(struct net_bridge_port *, unsigned long);
+	int (*store_raw)(struct net_bridge_port *, char *);
+};
+
+enum {
+	BRIDGE_QUERIER_UNSPEC = 0,
+	BRIDGE_QUERIER_IP_ADDRESS = 1,
+	BRIDGE_QUERIER_IP_PORT = 2,
+	BRIDGE_QUERIER_IP_OTHER_TIMER = 3,
+	BRIDGE_QUERIER_PAD = 4,
+	BRIDGE_QUERIER_IPV6_ADDRESS = 5,
+	BRIDGE_QUERIER_IPV6_PORT = 6,
+	BRIDGE_QUERIER_IPV6_OTHER_TIMER = 7,
+	__BRIDGE_QUERIER_MAX = 8,
+};
+
+enum {
+	PIM_TYPE_HELLO = 0,
+	PIM_TYPE_REGISTER = 1,
+	PIM_TYPE_REGISTER_STOP = 2,
+	PIM_TYPE_JOIN_PRUNE = 3,
+	PIM_TYPE_BOOTSTRAP = 4,
+	PIM_TYPE_ASSERT = 5,
+	PIM_TYPE_GRAFT = 6,
+	PIM_TYPE_GRAFT_ACK = 7,
+	PIM_TYPE_CANDIDATE_RP_ADV = 8,
+};
+
+struct net_bridge_group_src {
+	struct hlist_node node;
+	struct br_ip addr;
+	struct net_bridge_port_group *pg;
+	u8 flags;
+	u8 src_query_rexmit_cnt;
+	struct timer_list timer;
+	struct net_bridge *br;
+	struct net_bridge_mcast_gc mcast_gc;
+	struct callback_head rcu;
+};
+
+struct pimhdr {
+	__u8 type;
+	__u8 reserved;
+	__be16 csum;
+};
+
+struct br_ip_list {
+	struct list_head list;
+	struct br_ip addr;
+};
+
+enum {
+	MDBA_UNSPEC = 0,
+	MDBA_MDB = 1,
+	MDBA_ROUTER = 2,
+	__MDBA_MAX = 3,
+};
+
+enum {
+	MDBA_ROUTER_UNSPEC = 0,
+	MDBA_ROUTER_PORT = 1,
+	__MDBA_ROUTER_MAX = 2,
+};
+
+enum {
+	MDBA_ROUTER_PATTR_UNSPEC = 0,
+	MDBA_ROUTER_PATTR_TIMER = 1,
+	MDBA_ROUTER_PATTR_TYPE = 2,
+	MDBA_ROUTER_PATTR_INET_TIMER = 3,
+	MDBA_ROUTER_PATTR_INET6_TIMER = 4,
+	MDBA_ROUTER_PATTR_VID = 5,
+	__MDBA_ROUTER_PATTR_MAX = 6,
+};
+
+enum {
+	MDBA_MDB_UNSPEC = 0,
+	MDBA_MDB_ENTRY = 1,
+	__MDBA_MDB_MAX = 2,
+};
+
+enum {
+	MDBA_MDB_ENTRY_UNSPEC = 0,
+	MDBA_MDB_ENTRY_INFO = 1,
+	__MDBA_MDB_ENTRY_MAX = 2,
+};
+
+enum {
+	MDBA_MDB_EATTR_UNSPEC = 0,
+	MDBA_MDB_EATTR_TIMER = 1,
+	MDBA_MDB_EATTR_SRC_LIST = 2,
+	MDBA_MDB_EATTR_GROUP_MODE = 3,
+	MDBA_MDB_EATTR_SOURCE = 4,
+	MDBA_MDB_EATTR_RTPROT = 5,
+	MDBA_MDB_EATTR_DST = 6,
+	MDBA_MDB_EATTR_DST_PORT = 7,
+	MDBA_MDB_EATTR_VNI = 8,
+	MDBA_MDB_EATTR_IFINDEX = 9,
+	MDBA_MDB_EATTR_SRC_VNI = 10,
+	__MDBA_MDB_EATTR_MAX = 11,
+};
+
+enum {
+	MDBA_MDB_SRCLIST_UNSPEC = 0,
+	MDBA_MDB_SRCLIST_ENTRY = 1,
+	__MDBA_MDB_SRCLIST_MAX = 2,
+};
+
+enum {
+	MDBA_MDB_SRCATTR_UNSPEC = 0,
+	MDBA_MDB_SRCATTR_ADDRESS = 1,
+	MDBA_MDB_SRCATTR_TIMER = 2,
+	__MDBA_MDB_SRCATTR_MAX = 3,
+};
+
+enum {
+	MDBE_ATTR_UNSPEC = 0,
+	MDBE_ATTR_SOURCE = 1,
+	MDBE_ATTR_SRC_LIST = 2,
+	MDBE_ATTR_GROUP_MODE = 3,
+	MDBE_ATTR_RTPROT = 4,
+	MDBE_ATTR_DST = 5,
+	MDBE_ATTR_DST_PORT = 6,
+	MDBE_ATTR_VNI = 7,
+	MDBE_ATTR_IFINDEX = 8,
+	MDBE_ATTR_SRC_VNI = 9,
+	__MDBE_ATTR_MAX = 10,
+};
+
+enum {
+	MDBE_SRCATTR_UNSPEC = 0,
+	MDBE_SRCATTR_ADDRESS = 1,
+	__MDBE_SRCATTR_MAX = 2,
+};
+
+struct br_mdb_src_entry;
+
+struct br_mdb_config {
+	struct net_bridge *br;
+	struct net_bridge_port *p;
+	struct br_mdb_entry *entry;
+	struct br_ip group;
+	bool src_entry;
+	u8 filter_mode;
+	u16 nlflags;
+	struct br_mdb_src_entry *src_entries;
+	int num_src_entries;
+	u8 rt_protocol;
+};
+
+struct br_mdb_src_entry {
+	struct br_ip addr;
+};
+
+union net_bridge_eht_addr {
+	__be32 ip4;
+	struct in6_addr ip6;
+};
+
+struct net_bridge_group_eht_set {
+	struct rb_node rb_node;
+	union net_bridge_eht_addr src_addr;
+	struct rb_root entry_tree;
+	struct timer_list timer;
+	struct net_bridge_port_group *pg;
+	struct net_bridge *br;
+	struct net_bridge_mcast_gc mcast_gc;
+};
+
+struct net_bridge_group_eht_host;
+
+struct net_bridge_group_eht_set_entry {
+	struct rb_node rb_node;
+	struct hlist_node host_list;
+	union net_bridge_eht_addr h_addr;
+	struct timer_list timer;
+	struct net_bridge *br;
+	struct net_bridge_group_eht_set *eht_set;
+	struct net_bridge_group_eht_host *h_parent;
+	struct net_bridge_mcast_gc mcast_gc;
+};
+
+struct net_bridge_group_eht_host {
+	struct rb_node rb_node;
+	union net_bridge_eht_addr h_addr;
+	struct hlist_head set_entries;
+	unsigned int num_entries;
+	unsigned char filter_mode;
+	struct net_bridge_port_group *pg;
+};
+
+struct devlink_dev_stats {
+	u32 reload_stats[6];
+	u32 remote_reload_stats[6];
+};
+
+struct devlink_dpipe_headers;
+
+struct devlink_ops;
+
+struct devlink {
+	u32 index;
+	struct xarray ports;
+	struct list_head rate_list;
+	struct list_head sb_list;
+	struct list_head dpipe_table_list;
+	struct list_head resource_list;
+	struct xarray params;
+	struct list_head region_list;
+	struct list_head reporter_list;
+	struct devlink_dpipe_headers *dpipe_headers;
+	struct list_head trap_list;
+	struct list_head trap_group_list;
+	struct list_head trap_policer_list;
+	struct list_head linecard_list;
+	const struct devlink_ops *ops;
+	struct xarray snapshot_ids;
+	struct devlink_dev_stats stats;
+	struct device *dev;
+	possible_net_t _net;
+	struct mutex lock;
+	struct lock_class_key lock_key;
+	u8 reload_failed: 1;
+	refcount_t refcount;
+	struct rcu_work rwork;
+	long: 64;
+	long: 64;
+	long: 64;
+	char priv[0];
+};
+
+struct devlink_dpipe_header;
+
+struct devlink_dpipe_headers {
+	struct devlink_dpipe_header **headers;
+	unsigned int headers_count;
+};
+
+struct devlink_dpipe_field;
+
+struct devlink_dpipe_header {
+	const char *name;
+	unsigned int id;
+	struct devlink_dpipe_field *fields;
+	unsigned int fields_count;
+	bool global;
+};
+
+enum devlink_dpipe_field_mapping_type {
+	DEVLINK_DPIPE_FIELD_MAPPING_TYPE_NONE = 0,
+	DEVLINK_DPIPE_FIELD_MAPPING_TYPE_IFINDEX = 1,
+};
+
+struct devlink_dpipe_field {
+	const char *name;
+	unsigned int id;
+	unsigned int bitwidth;
+	enum devlink_dpipe_field_mapping_type mapping_type;
+};
+
+enum devlink_reload_action {
+	DEVLINK_RELOAD_ACTION_UNSPEC = 0,
+	DEVLINK_RELOAD_ACTION_DRIVER_REINIT = 1,
+	DEVLINK_RELOAD_ACTION_FW_ACTIVATE = 2,
+	__DEVLINK_RELOAD_ACTION_MAX = 3,
+	DEVLINK_RELOAD_ACTION_MAX = 2,
+};
+
+enum devlink_reload_limit {
+	DEVLINK_RELOAD_LIMIT_UNSPEC = 0,
+	DEVLINK_RELOAD_LIMIT_NO_RESET = 1,
+	__DEVLINK_RELOAD_LIMIT_MAX = 2,
+	DEVLINK_RELOAD_LIMIT_MAX = 1,
+};
+
+enum devlink_sb_threshold_type {
+	DEVLINK_SB_THRESHOLD_TYPE_STATIC = 0,
+	DEVLINK_SB_THRESHOLD_TYPE_DYNAMIC = 1,
+};
+
+enum devlink_sb_pool_type {
+	DEVLINK_SB_POOL_TYPE_INGRESS = 0,
+	DEVLINK_SB_POOL_TYPE_EGRESS = 1,
+};
+
+enum devlink_eswitch_encap_mode {
+	DEVLINK_ESWITCH_ENCAP_MODE_NONE = 0,
+	DEVLINK_ESWITCH_ENCAP_MODE_BASIC = 1,
+};
+
+enum devlink_trap_action {
+	DEVLINK_TRAP_ACTION_DROP = 0,
+	DEVLINK_TRAP_ACTION_TRAP = 1,
+	DEVLINK_TRAP_ACTION_MIRROR = 2,
+};
+
+enum devlink_selftest_status {
+	DEVLINK_SELFTEST_STATUS_SKIP = 0,
+	DEVLINK_SELFTEST_STATUS_PASS = 1,
+	DEVLINK_SELFTEST_STATUS_FAIL = 2,
+};
+
+struct devlink_sb_pool_info;
+
+struct devlink_info_req;
+
+struct devlink_flash_update_params;
+
+struct devlink_trap;
+
+struct devlink_trap_group;
+
+struct devlink_trap_policer;
+
+struct devlink_port_new_attrs;
+
+struct devlink_ops {
+	u32 supported_flash_update_params;
+	unsigned long reload_actions;
+	unsigned long reload_limits;
+	int (*reload_down)(struct devlink *, bool, enum devlink_reload_action, enum devlink_reload_limit, struct netlink_ext_ack *);
+	int (*reload_up)(struct devlink *, enum devlink_reload_action, enum devlink_reload_limit, u32 *, struct netlink_ext_ack *);
+	int (*sb_pool_get)(struct devlink *, unsigned int, u16, struct devlink_sb_pool_info *);
+	int (*sb_pool_set)(struct devlink *, unsigned int, u16, u32, enum devlink_sb_threshold_type, struct netlink_ext_ack *);
+	int (*sb_port_pool_get)(struct devlink_port *, unsigned int, u16, u32 *);
+	int (*sb_port_pool_set)(struct devlink_port *, unsigned int, u16, u32, struct netlink_ext_ack *);
+	int (*sb_tc_pool_bind_get)(struct devlink_port *, unsigned int, u16, enum devlink_sb_pool_type, u16 *, u32 *);
+	int (*sb_tc_pool_bind_set)(struct devlink_port *, unsigned int, u16, enum devlink_sb_pool_type, u16, u32, struct netlink_ext_ack *);
+	int (*sb_occ_snapshot)(struct devlink *, unsigned int);
+	int (*sb_occ_max_clear)(struct devlink *, unsigned int);
+	int (*sb_occ_port_pool_get)(struct devlink_port *, unsigned int, u16, u32 *, u32 *);
+	int (*sb_occ_tc_port_bind_get)(struct devlink_port *, unsigned int, u16, enum devlink_sb_pool_type, u32 *, u32 *);
+	int (*eswitch_mode_get)(struct devlink *, u16 *);
+	int (*eswitch_mode_set)(struct devlink *, u16, struct netlink_ext_ack *);
+	int (*eswitch_inline_mode_get)(struct devlink *, u8 *);
+	int (*eswitch_inline_mode_set)(struct devlink *, u8, struct netlink_ext_ack *);
+	int (*eswitch_encap_mode_get)(struct devlink *, enum devlink_eswitch_encap_mode *);
+	int (*eswitch_encap_mode_set)(struct devlink *, enum devlink_eswitch_encap_mode, struct netlink_ext_ack *);
+	int (*info_get)(struct devlink *, struct devlink_info_req *, struct netlink_ext_ack *);
+	int (*flash_update)(struct devlink *, struct devlink_flash_update_params *, struct netlink_ext_ack *);
+	int (*trap_init)(struct devlink *, const struct devlink_trap *, void *);
+	void (*trap_fini)(struct devlink *, const struct devlink_trap *, void *);
+	int (*trap_action_set)(struct devlink *, const struct devlink_trap *, enum devlink_trap_action, struct netlink_ext_ack *);
+	int (*trap_group_init)(struct devlink *, const struct devlink_trap_group *);
+	int (*trap_group_set)(struct devlink *, const struct devlink_trap_group *, const struct devlink_trap_policer *, struct netlink_ext_ack *);
+	int (*trap_group_action_set)(struct devlink *, const struct devlink_trap_group *, enum devlink_trap_action, struct netlink_ext_ack *);
+	int (*trap_drop_counter_get)(struct devlink *, const struct devlink_trap *, u64 *);
+	int (*trap_policer_init)(struct devlink *, const struct devlink_trap_policer *);
+	void (*trap_policer_fini)(struct devlink *, const struct devlink_trap_policer *);
+	int (*trap_policer_set)(struct devlink *, const struct devlink_trap_policer *, u64, u64, struct netlink_ext_ack *);
+	int (*trap_policer_counter_get)(struct devlink *, const struct devlink_trap_policer *, u64 *);
+	int (*port_new)(struct devlink *, const struct devlink_port_new_attrs *, struct netlink_ext_ack *, struct devlink_port **);
+	int (*rate_leaf_tx_share_set)(struct devlink_rate *, void *, u64, struct netlink_ext_ack *);
+	int (*rate_leaf_tx_max_set)(struct devlink_rate *, void *, u64, struct netlink_ext_ack *);
+	int (*rate_leaf_tx_priority_set)(struct devlink_rate *, void *, u32, struct netlink_ext_ack *);
+	int (*rate_leaf_tx_weight_set)(struct devlink_rate *, void *, u32, struct netlink_ext_ack *);
+	int (*rate_node_tx_share_set)(struct devlink_rate *, void *, u64, struct netlink_ext_ack *);
+	int (*rate_node_tx_max_set)(struct devlink_rate *, void *, u64, struct netlink_ext_ack *);
+	int (*rate_node_tx_priority_set)(struct devlink_rate *, void *, u32, struct netlink_ext_ack *);
+	int (*rate_node_tx_weight_set)(struct devlink_rate *, void *, u32, struct netlink_ext_ack *);
+	int (*rate_node_new)(struct devlink_rate *, void **, struct netlink_ext_ack *);
+	int (*rate_node_del)(struct devlink_rate *, void *, struct netlink_ext_ack *);
+	int (*rate_leaf_parent_set)(struct devlink_rate *, struct devlink_rate *, void *, void *, struct netlink_ext_ack *);
+	int (*rate_node_parent_set)(struct devlink_rate *, struct devlink_rate *, void *, void *, struct netlink_ext_ack *);
+	bool (*selftest_check)(struct devlink *, unsigned int, struct netlink_ext_ack *);
+	enum devlink_selftest_status (*selftest_run)(struct devlink *, unsigned int, struct netlink_ext_ack *);
+};
+
+struct devlink_sb_pool_info {
+	enum devlink_sb_pool_type pool_type;
+	u32 size;
+	enum devlink_sb_threshold_type threshold_type;
+	u32 cell_size;
+};
+
+struct devlink_flash_update_params {
+	const struct firmware *fw;
+	const char *component;
+	u32 overwrite_mask;
+};
+
+enum devlink_trap_type {
+	DEVLINK_TRAP_TYPE_DROP = 0,
+	DEVLINK_TRAP_TYPE_EXCEPTION = 1,
+	DEVLINK_TRAP_TYPE_CONTROL = 2,
+};
+
+struct devlink_trap {
+	enum devlink_trap_type type;
+	enum devlink_trap_action init_action;
+	bool generic;
+	u16 id;
+	const char *name;
+	u16 init_group_id;
+	u32 metadata_cap;
+};
+
+struct devlink_trap_group {
+	const char *name;
+	u16 id;
+	bool generic;
+	u32 init_policer_id;
+};
+
+struct devlink_trap_policer {
+	u32 id;
+	u64 init_rate;
+	u64 init_burst;
+	u64 max_rate;
+	u64 min_rate;
+	u64 max_burst;
+	u64 min_burst;
+};
+
+struct devlink_port_new_attrs {
+	enum devlink_port_flavour flavour;
+	unsigned int port_index;
+	u32 controller;
+	u32 sfnum;
+	u16 pfnum;
+	u8 port_index_valid: 1;
+	u8 controller_valid: 1;
+	u8 sfnum_valid: 1;
+};
+
+struct ib_core_device {
+	struct device dev;
+	possible_net_t rdma_net;
+	struct kobject *ports_kobj;
+	struct list_head port_list;
+	struct ib_device *owner;
+};
+
+enum rdma_driver_id {
+	RDMA_DRIVER_UNKNOWN = 0,
+	RDMA_DRIVER_MLX5 = 1,
+	RDMA_DRIVER_MLX4 = 2,
+	RDMA_DRIVER_CXGB3 = 3,
+	RDMA_DRIVER_CXGB4 = 4,
+	RDMA_DRIVER_MTHCA = 5,
+	RDMA_DRIVER_BNXT_RE = 6,
+	RDMA_DRIVER_OCRDMA = 7,
+	RDMA_DRIVER_NES = 8,
+	RDMA_DRIVER_I40IW = 9,
+	RDMA_DRIVER_IRDMA = 9,
+	RDMA_DRIVER_VMW_PVRDMA = 10,
+	RDMA_DRIVER_QEDR = 11,
+	RDMA_DRIVER_HNS = 12,
+	RDMA_DRIVER_USNIC = 13,
+	RDMA_DRIVER_RXE = 14,
+	RDMA_DRIVER_HFI1 = 15,
+	RDMA_DRIVER_QIB = 16,
+	RDMA_DRIVER_EFA = 17,
+	RDMA_DRIVER_SIW = 18,
+	RDMA_DRIVER_ERDMA = 19,
+	RDMA_DRIVER_MANA = 20,
+};
+
+enum ib_cq_notify_flags {
+	IB_CQ_SOLICITED = 1,
+	IB_CQ_NEXT_COMP = 2,
+	IB_CQ_SOLICITED_MASK = 3,
+	IB_CQ_REPORT_MISSED_EVENTS = 4,
+};
+
+struct ib_mad;
+
+enum rdma_link_layer {
+	IB_LINK_LAYER_UNSPECIFIED = 0,
+	IB_LINK_LAYER_INFINIBAND = 1,
+	IB_LINK_LAYER_ETHERNET = 2,
+};
+
+enum rdma_netdev_t {
+	RDMA_NETDEV_OPA_VNIC = 0,
+	RDMA_NETDEV_IPOIB = 1,
+};
+
+enum ib_srq_attr_mask {
+	IB_SRQ_MAX_WR = 1,
+	IB_SRQ_LIMIT = 2,
+};
+
+enum ib_mr_type {
+	IB_MR_TYPE_MEM_REG = 0,
+	IB_MR_TYPE_SG_GAPS = 1,
+	IB_MR_TYPE_DM = 2,
+	IB_MR_TYPE_USER = 3,
+	IB_MR_TYPE_DMA = 4,
+	IB_MR_TYPE_INTEGRITY = 5,
+};
+
+enum ib_uverbs_advise_mr_advice {
+	IB_UVERBS_ADVISE_MR_ADVICE_PREFETCH = 0,
+	IB_UVERBS_ADVISE_MR_ADVICE_PREFETCH_WRITE = 1,
+	IB_UVERBS_ADVISE_MR_ADVICE_PREFETCH_NO_FAULT = 2,
+};
+
+struct uverbs_attr_bundle;
+
+struct rdma_cm_id;
+
+struct iw_cm_id;
+
+struct iw_cm_conn_param;
+
+struct ib_qp;
+
+struct ib_send_wr;
+
+struct ib_recv_wr;
+
+struct ib_cq;
+
+struct ib_wc;
+
+struct ib_srq;
+
+struct ib_grh;
+
+struct ib_device_attr;
+
+struct ib_udata;
+
+struct ib_device_modify;
+
+struct ib_port_attr;
+
+struct ib_port_modify;
+
+struct ib_port_immutable;
+
+struct rdma_netdev_alloc_params;
+
+union ib_gid;
+
+struct ib_gid_attr;
+
+struct ib_ucontext;
+
+struct rdma_user_mmap_entry;
+
+struct ib_pd;
+
+struct ib_ah;
+
+struct rdma_ah_init_attr;
+
+struct rdma_ah_attr;
+
+struct ib_srq_init_attr;
+
+struct ib_srq_attr;
+
+struct ib_qp_init_attr;
+
+struct ib_qp_attr;
+
+struct ib_cq_init_attr;
+
+struct ib_mr;
+
+struct ib_sge;
+
+struct ib_mr_status;
+
+struct ib_mw;
+
+struct ib_xrcd;
+
+struct ib_flow;
+
+struct ib_flow_attr;
+
+struct ib_flow_action;
+
+struct ib_wq;
+
+struct ib_wq_init_attr;
+
+struct ib_wq_attr;
+
+struct ib_rwq_ind_table;
+
+struct ib_rwq_ind_table_init_attr;
+
+struct ib_dm;
+
+struct ib_dm_alloc_attr;
+
+struct ib_dm_mr_attr;
+
+struct ib_counters;
+
+struct ib_counters_read_attr;
+
+struct rdma_hw_stats;
+
+struct rdma_counter;
+
+struct ib_device_ops {
+	struct module *owner;
+	enum rdma_driver_id driver_id;
+	u32 uverbs_abi_ver;
+	unsigned int uverbs_no_driver_id_binding: 1;
+	const struct attribute_group *device_group;
+	const struct attribute_group **port_groups;
+	int (*post_send)(struct ib_qp *, const struct ib_send_wr *, const struct ib_send_wr **);
+	int (*post_recv)(struct ib_qp *, const struct ib_recv_wr *, const struct ib_recv_wr **);
+	void (*drain_rq)(struct ib_qp *);
+	void (*drain_sq)(struct ib_qp *);
+	int (*poll_cq)(struct ib_cq *, int, struct ib_wc *);
+	int (*peek_cq)(struct ib_cq *, int);
+	int (*req_notify_cq)(struct ib_cq *, enum ib_cq_notify_flags);
+	int (*post_srq_recv)(struct ib_srq *, const struct ib_recv_wr *, const struct ib_recv_wr **);
+	int (*process_mad)(struct ib_device *, int, u32, const struct ib_wc *, const struct ib_grh *, const struct ib_mad *, struct ib_mad *, size_t *, u16 *);
+	int (*query_device)(struct ib_device *, struct ib_device_attr *, struct ib_udata *);
+	int (*modify_device)(struct ib_device *, int, struct ib_device_modify *);
+	void (*get_dev_fw_str)(struct ib_device *, char *);
+	const struct cpumask * (*get_vector_affinity)(struct ib_device *, int);
+	int (*query_port)(struct ib_device *, u32, struct ib_port_attr *);
+	int (*modify_port)(struct ib_device *, u32, int, struct ib_port_modify *);
+	int (*get_port_immutable)(struct ib_device *, u32, struct ib_port_immutable *);
+	enum rdma_link_layer (*get_link_layer)(struct ib_device *, u32);
+	struct net_device * (*get_netdev)(struct ib_device *, u32);
+	struct net_device * (*alloc_rdma_netdev)(struct ib_device *, u32, enum rdma_netdev_t, const char *, unsigned char, void (*)(struct net_device *));
+	int (*rdma_netdev_get_params)(struct ib_device *, u32, enum rdma_netdev_t, struct rdma_netdev_alloc_params *);
+	int (*query_gid)(struct ib_device *, u32, int, union ib_gid *);
+	int (*add_gid)(const struct ib_gid_attr *, void **);
+	int (*del_gid)(const struct ib_gid_attr *, void **);
+	int (*query_pkey)(struct ib_device *, u32, u16, u16 *);
+	int (*alloc_ucontext)(struct ib_ucontext *, struct ib_udata *);
+	void (*dealloc_ucontext)(struct ib_ucontext *);
+	int (*mmap)(struct ib_ucontext *, struct vm_area_struct *);
+	void (*mmap_free)(struct rdma_user_mmap_entry *);
+	void (*disassociate_ucontext)(struct ib_ucontext *);
+	int (*alloc_pd)(struct ib_pd *, struct ib_udata *);
+	int (*dealloc_pd)(struct ib_pd *, struct ib_udata *);
+	int (*create_ah)(struct ib_ah *, struct rdma_ah_init_attr *, struct ib_udata *);
+	int (*create_user_ah)(struct ib_ah *, struct rdma_ah_init_attr *, struct ib_udata *);
+	int (*modify_ah)(struct ib_ah *, struct rdma_ah_attr *);
+	int (*query_ah)(struct ib_ah *, struct rdma_ah_attr *);
+	int (*destroy_ah)(struct ib_ah *, u32);
+	int (*create_srq)(struct ib_srq *, struct ib_srq_init_attr *, struct ib_udata *);
+	int (*modify_srq)(struct ib_srq *, struct ib_srq_attr *, enum ib_srq_attr_mask, struct ib_udata *);
+	int (*query_srq)(struct ib_srq *, struct ib_srq_attr *);
+	int (*destroy_srq)(struct ib_srq *, struct ib_udata *);
+	int (*create_qp)(struct ib_qp *, struct ib_qp_init_attr *, struct ib_udata *);
+	int (*modify_qp)(struct ib_qp *, struct ib_qp_attr *, int, struct ib_udata *);
+	int (*query_qp)(struct ib_qp *, struct ib_qp_attr *, int, struct ib_qp_init_attr *);
+	int (*destroy_qp)(struct ib_qp *, struct ib_udata *);
+	int (*create_cq)(struct ib_cq *, const struct ib_cq_init_attr *, struct ib_udata *);
+	int (*modify_cq)(struct ib_cq *, u16, u16);
+	int (*destroy_cq)(struct ib_cq *, struct ib_udata *);
+	int (*resize_cq)(struct ib_cq *, int, struct ib_udata *);
+	struct ib_mr * (*get_dma_mr)(struct ib_pd *, int);
+	struct ib_mr * (*reg_user_mr)(struct ib_pd *, u64, u64, u64, int, struct ib_udata *);
+	struct ib_mr * (*reg_user_mr_dmabuf)(struct ib_pd *, u64, u64, u64, int, int, struct ib_udata *);
+	struct ib_mr * (*rereg_user_mr)(struct ib_mr *, int, u64, u64, u64, int, struct ib_pd *, struct ib_udata *);
+	int (*dereg_mr)(struct ib_mr *, struct ib_udata *);
+	struct ib_mr * (*alloc_mr)(struct ib_pd *, enum ib_mr_type, u32);
+	struct ib_mr * (*alloc_mr_integrity)(struct ib_pd *, u32, u32);
+	int (*advise_mr)(struct ib_pd *, enum ib_uverbs_advise_mr_advice, u32, struct ib_sge *, u32, struct uverbs_attr_bundle *);
+	int (*map_mr_sg)(struct ib_mr *, struct scatterlist *, int, unsigned int *);
+	int (*check_mr_status)(struct ib_mr *, u32, struct ib_mr_status *);
+	int (*alloc_mw)(struct ib_mw *, struct ib_udata *);
+	int (*dealloc_mw)(struct ib_mw *);
+	int (*attach_mcast)(struct ib_qp *, union ib_gid *, u16);
+	int (*detach_mcast)(struct ib_qp *, union ib_gid *, u16);
+	int (*alloc_xrcd)(struct ib_xrcd *, struct ib_udata *);
+	int (*dealloc_xrcd)(struct ib_xrcd *, struct ib_udata *);
+	struct ib_flow * (*create_flow)(struct ib_qp *, struct ib_flow_attr *, struct ib_udata *);
+	int (*destroy_flow)(struct ib_flow *);
+	int (*destroy_flow_action)(struct ib_flow_action *);
+	int (*set_vf_link_state)(struct ib_device *, int, u32, int);
+	int (*get_vf_config)(struct ib_device *, int, u32, struct ifla_vf_info *);
+	int (*get_vf_stats)(struct ib_device *, int, u32, struct ifla_vf_stats *);
+	int (*get_vf_guid)(struct ib_device *, int, u32, struct ifla_vf_guid *, struct ifla_vf_guid *);
+	int (*set_vf_guid)(struct ib_device *, int, u32, u64, int);
+	struct ib_wq * (*create_wq)(struct ib_pd *, struct ib_wq_init_attr *, struct ib_udata *);
+	int (*destroy_wq)(struct ib_wq *, struct ib_udata *);
+	int (*modify_wq)(struct ib_wq *, struct ib_wq_attr *, u32, struct ib_udata *);
+	int (*create_rwq_ind_table)(struct ib_rwq_ind_table *, struct ib_rwq_ind_table_init_attr *, struct ib_udata *);
+	int (*destroy_rwq_ind_table)(struct ib_rwq_ind_table *);
+	struct ib_dm * (*alloc_dm)(struct ib_device *, struct ib_ucontext *, struct ib_dm_alloc_attr *, struct uverbs_attr_bundle *);
+	int (*dealloc_dm)(struct ib_dm *, struct uverbs_attr_bundle *);
+	struct ib_mr * (*reg_dm_mr)(struct ib_pd *, struct ib_dm *, struct ib_dm_mr_attr *, struct uverbs_attr_bundle *);
+	int (*create_counters)(struct ib_counters *, struct uverbs_attr_bundle *);
+	int (*destroy_counters)(struct ib_counters *);
+	int (*read_counters)(struct ib_counters *, struct ib_counters_read_attr *, struct uverbs_attr_bundle *);
+	int (*map_mr_sg_pi)(struct ib_mr *, struct scatterlist *, int, unsigned int *, struct scatterlist *, int, unsigned int *);
+	struct rdma_hw_stats * (*alloc_hw_device_stats)(struct ib_device *);
+	struct rdma_hw_stats * (*alloc_hw_port_stats)(struct ib_device *, u32);
+	int (*get_hw_stats)(struct ib_device *, struct rdma_hw_stats *, u32, int);
+	int (*modify_hw_stat)(struct ib_device *, u32, unsigned int, bool);
+	int (*fill_res_mr_entry)(struct sk_buff *, struct ib_mr *);
+	int (*fill_res_mr_entry_raw)(struct sk_buff *, struct ib_mr *);
+	int (*fill_res_cq_entry)(struct sk_buff *, struct ib_cq *);
+	int (*fill_res_cq_entry_raw)(struct sk_buff *, struct ib_cq *);
+	int (*fill_res_qp_entry)(struct sk_buff *, struct ib_qp *);
+	int (*fill_res_qp_entry_raw)(struct sk_buff *, struct ib_qp *);
+	int (*fill_res_cm_id_entry)(struct sk_buff *, struct rdma_cm_id *);
+	int (*enable_driver)(struct ib_device *);
+	void (*dealloc_driver)(struct ib_device *);
+	void (*iw_add_ref)(struct ib_qp *);
+	void (*iw_rem_ref)(struct ib_qp *);
+	struct ib_qp * (*iw_get_qp)(struct ib_device *, int);
+	int (*iw_connect)(struct iw_cm_id *, struct iw_cm_conn_param *);
+	int (*iw_accept)(struct iw_cm_id *, struct iw_cm_conn_param *);
+	int (*iw_reject)(struct iw_cm_id *, const void *, u8);
+	int (*iw_create_listen)(struct iw_cm_id *, int);
+	int (*iw_destroy_listen)(struct iw_cm_id *);
+	int (*counter_bind_qp)(struct rdma_counter *, struct ib_qp *);
+	int (*counter_unbind_qp)(struct ib_qp *);
+	int (*counter_dealloc)(struct rdma_counter *);
+	struct rdma_hw_stats * (*counter_alloc_stats)(struct rdma_counter *);
+	int (*counter_update_stats)(struct rdma_counter *);
+	int (*fill_stat_mr_entry)(struct sk_buff *, struct ib_mr *);
+	int (*query_ucontext)(struct ib_ucontext *, struct uverbs_attr_bundle *);
+	int (*get_numa_node)(struct ib_device *);
+	size_t size_ib_ah;
+	size_t size_ib_counters;
+	size_t size_ib_cq;
+	size_t size_ib_mw;
+	size_t size_ib_pd;
+	size_t size_ib_qp;
+	size_t size_ib_rwq_ind_table;
+	size_t size_ib_srq;
+	size_t size_ib_ucontext;
+	size_t size_ib_xrcd;
+};
+
+enum ib_atomic_cap {
+	IB_ATOMIC_NONE = 0,
+	IB_ATOMIC_HCA = 1,
+	IB_ATOMIC_GLOB = 2,
+};
+
+struct ib_odp_caps {
+	uint64_t general_caps;
+	struct {
+		uint32_t rc_odp_caps;
+		uint32_t uc_odp_caps;
+		uint32_t ud_odp_caps;
+		uint32_t xrc_odp_caps;
+	} per_transport_caps;
+};
+
+struct ib_rss_caps {
+	u32 supported_qpts;
+	u32 max_rwq_indirection_tables;
+	u32 max_rwq_indirection_table_size;
+};
+
+struct ib_tm_caps {
+	u32 max_rndv_hdr_size;
+	u32 max_num_tags;
+	u32 flags;
+	u32 max_ops;
+	u32 max_sge;
+};
+
+struct ib_cq_caps {
+	u16 max_cq_moderation_count;
+	u16 max_cq_moderation_period;
+};
+
+struct ib_device_attr {
+	u64 fw_ver;
+	__be64 sys_image_guid;
+	u64 max_mr_size;
+	u64 page_size_cap;
+	u32 vendor_id;
+	u32 vendor_part_id;
+	u32 hw_ver;
+	int max_qp;
+	int max_qp_wr;
+	u64 device_cap_flags;
+	u64 kernel_cap_flags;
+	int max_send_sge;
+	int max_recv_sge;
+	int max_sge_rd;
+	int max_cq;
+	int max_cqe;
+	int max_mr;
+	int max_pd;
+	int max_qp_rd_atom;
+	int max_ee_rd_atom;
+	int max_res_rd_atom;
+	int max_qp_init_rd_atom;
+	int max_ee_init_rd_atom;
+	enum ib_atomic_cap atomic_cap;
+	enum ib_atomic_cap masked_atomic_cap;
+	int max_ee;
+	int max_rdd;
+	int max_mw;
+	int max_raw_ipv6_qp;
+	int max_raw_ethy_qp;
+	int max_mcast_grp;
+	int max_mcast_qp_attach;
+	int max_total_mcast_qp_attach;
+	int max_ah;
+	int max_srq;
+	int max_srq_wr;
+	int max_srq_sge;
+	unsigned int max_fast_reg_page_list_len;
+	unsigned int max_pi_fast_reg_page_list_len;
+	u16 max_pkeys;
+	u8 local_ca_ack_delay;
+	int sig_prot_cap;
+	int sig_guard_cap;
+	struct ib_odp_caps odp_caps;
+	uint64_t timestamp_mask;
+	uint64_t hca_core_clock;
+	struct ib_rss_caps rss_caps;
+	u32 max_wq_type_rq;
+	u32 raw_packet_caps;
+	struct ib_tm_caps tm_caps;
+	struct ib_cq_caps cq_caps;
+	u64 max_dm_size;
+	u32 max_sgl_rd;
+};
+
+struct hw_stats_device_data;
+
+struct rdma_restrack_root;
+
+struct uapi_definition;
+
+struct ib_port_data;
+
+struct rdma_link_ops;
+
+struct ib_device {
+	struct device *dma_device;
+	struct ib_device_ops ops;
+	char name[64];
+	struct callback_head callback_head;
+	struct list_head event_handler_list;
+	struct rw_semaphore event_handler_rwsem;
+	spinlock_t qp_open_list_lock;
+	struct rw_semaphore client_data_rwsem;
+	struct xarray client_data;
+	struct mutex unregistration_lock;
+	rwlock_t cache_lock;
+	struct ib_port_data *port_data;
+	int num_comp_vectors;
+	union {
+		struct device dev;
+		struct ib_core_device coredev;
+	};
+	const struct attribute_group *groups[4];
+	u64 uverbs_cmd_mask;
+	char node_desc[64];
+	__be64 node_guid;
+	u32 local_dma_lkey;
+	u16 is_switch: 1;
+	u16 kverbs_provider: 1;
+	u16 use_cq_dim: 1;
+	u8 node_type;
+	u32 phys_port_cnt;
+	struct ib_device_attr attrs;
+	struct hw_stats_device_data *hw_stats_data;
+	u32 index;
+	spinlock_t cq_pools_lock;
+	struct list_head cq_pools[3];
+	struct rdma_restrack_root *res;
+	const struct uapi_definition *driver_def;
+	refcount_t refcount;
+	struct completion unreg_completion;
+	struct work_struct unregistration_work;
+	const struct rdma_link_ops *link_ops;
+	struct mutex compat_devs_mutex;
+	struct xarray compat_devs;
+	char iw_ifname[16];
+	u32 iw_driver_flags;
+	u32 lag_flags;
+};
+
+struct ib_uqp_object;
+
+enum ib_qp_type {
+	IB_QPT_SMI = 0,
+	IB_QPT_GSI = 1,
+	IB_QPT_RC = 2,
+	IB_QPT_UC = 3,
+	IB_QPT_UD = 4,
+	IB_QPT_RAW_IPV6 = 5,
+	IB_QPT_RAW_ETHERTYPE = 6,
+	IB_QPT_RAW_PACKET = 8,
+	IB_QPT_XRC_INI = 9,
+	IB_QPT_XRC_TGT = 10,
+	IB_QPT_MAX = 11,
+	IB_QPT_DRIVER = 255,
+	IB_QPT_RESERVED1 = 4096,
+	IB_QPT_RESERVED2 = 4097,
+	IB_QPT_RESERVED3 = 4098,
+	IB_QPT_RESERVED4 = 4099,
+	IB_QPT_RESERVED5 = 4100,
+	IB_QPT_RESERVED6 = 4101,
+	IB_QPT_RESERVED7 = 4102,
+	IB_QPT_RESERVED8 = 4103,
+	IB_QPT_RESERVED9 = 4104,
+	IB_QPT_RESERVED10 = 4105,
+};
+
+enum rdma_restrack_type {
+	RDMA_RESTRACK_PD = 0,
+	RDMA_RESTRACK_CQ = 1,
+	RDMA_RESTRACK_QP = 2,
+	RDMA_RESTRACK_CM_ID = 3,
+	RDMA_RESTRACK_MR = 4,
+	RDMA_RESTRACK_CTX = 5,
+	RDMA_RESTRACK_COUNTER = 6,
+	RDMA_RESTRACK_SRQ = 7,
+	RDMA_RESTRACK_MAX = 8,
+};
+
+struct rdma_restrack_entry {
+	bool valid;
+	u8 no_track: 1;
+	struct kref kref;
+	struct completion comp;
+	struct task_struct *task;
+	const char *kern_name;
+	enum rdma_restrack_type type;
+	bool user;
+	u32 id;
+};
+
+struct ib_event;
+
+struct ib_qp_security;
+
+struct ib_qp {
+	struct ib_device *device;
+	struct ib_pd *pd;
+	struct ib_cq *send_cq;
+	struct ib_cq *recv_cq;
+	spinlock_t mr_lock;
+	int mrs_used;
+	struct list_head rdma_mrs;
+	struct list_head sig_mrs;
+	struct ib_srq *srq;
+	struct ib_xrcd *xrcd;
+	struct list_head xrcd_list;
+	atomic_t usecnt;
+	struct list_head open_list;
+	struct ib_qp *real_qp;
+	struct ib_uqp_object *uobject;
+	void (*event_handler)(struct ib_event *, void *);
+	void *qp_context;
+	const struct ib_gid_attr *av_sgid_attr;
+	const struct ib_gid_attr *alt_path_sgid_attr;
+	u32 qp_num;
+	u32 max_write_sge;
+	u32 max_read_sge;
+	enum ib_qp_type qp_type;
+	struct ib_rwq_ind_table *rwq_ind_tbl;
+	struct ib_qp_security *qp_sec;
+	u32 port;
+	bool integrity_en;
+	struct rdma_restrack_entry res;
+	struct rdma_counter *counter;
+};
+
+struct ib_uobject;
+
+struct ib_pd {
+	u32 local_dma_lkey;
+	u32 flags;
+	struct ib_device *device;
+	struct ib_uobject *uobject;
+	atomic_t usecnt;
+	u32 unsafe_global_rkey;
+	struct ib_mr *__internal_mr;
+	struct rdma_restrack_entry res;
+};
+
+struct ib_uverbs_file;
+
+struct ib_rdmacg_object {};
+
+struct uverbs_api_object;
+
+struct ib_uobject {
+	u64 user_handle;
+	struct ib_uverbs_file *ufile;
+	struct ib_ucontext *context;
+	void *object;
+	struct list_head list;
+	struct ib_rdmacg_object cg_obj;
+	int id;
+	struct kref ref;
+	atomic_t usecnt;
+	struct callback_head rcu;
+	const struct uverbs_api_object *uapi_object;
+};
+
+struct ib_ucontext {
+	struct ib_device *device;
+	struct ib_uverbs_file *ufile;
+	struct ib_rdmacg_object cg_obj;
+	struct rdma_restrack_entry res;
+	struct xarray mmap_xa;
+};
+
+struct ib_sig_attrs;
+
+struct ib_mr {
+	struct ib_device *device;
+	struct ib_pd *pd;
+	u32 lkey;
+	u32 rkey;
+	u64 iova;
+	u64 length;
+	unsigned int page_size;
+	enum ib_mr_type type;
+	bool need_inval;
+	union {
+		struct ib_uobject *uobject;
+		struct list_head qp_entry;
+	};
+	struct ib_dm *dm;
+	struct ib_sig_attrs *sig_attrs;
+	struct rdma_restrack_entry res;
+};
+
+struct ib_dm {
+	struct ib_device *device;
+	u32 length;
+	u32 flags;
+	struct ib_uobject *uobject;
+	atomic_t usecnt;
+};
+
+enum ib_signature_type {
+	IB_SIG_TYPE_NONE = 0,
+	IB_SIG_TYPE_T10_DIF = 1,
+};
+
+enum ib_t10_dif_bg_type {
+	IB_T10DIF_CRC = 0,
+	IB_T10DIF_CSUM = 1,
+};
+
+struct ib_t10_dif_domain {
+	enum ib_t10_dif_bg_type bg_type;
+	u16 pi_interval;
+	u16 bg;
+	u16 app_tag;
+	u32 ref_tag;
+	bool ref_remap;
+	bool app_escape;
+	bool ref_escape;
+	u16 apptag_check_mask;
+};
+
+struct ib_sig_domain {
+	enum ib_signature_type sig_type;
+	union {
+		struct ib_t10_dif_domain dif;
+	} sig;
+};
+
+struct ib_sig_attrs {
+	u8 check_mask;
+	struct ib_sig_domain mem;
+	struct ib_sig_domain wire;
+	int meta_length;
+};
+
+struct irq_poll;
+
+typedef int irq_poll_fn(struct irq_poll *, int);
+
+struct irq_poll {
+	struct list_head list;
+	unsigned long state;
+	int weight;
+	irq_poll_fn *poll;
+};
+
+struct ib_ucq_object;
+
+typedef void (*ib_comp_handler)(struct ib_cq *, void *);
+
+enum ib_poll_context {
+	IB_POLL_SOFTIRQ = 0,
+	IB_POLL_WORKQUEUE = 1,
+	IB_POLL_UNBOUND_WORKQUEUE = 2,
+	IB_POLL_LAST_POOL_TYPE = 2,
+	IB_POLL_DIRECT = 3,
+};
+
+struct dim;
+
+struct ib_cq {
+	struct ib_device *device;
+	struct ib_ucq_object *uobject;
+	ib_comp_handler comp_handler;
+	void (*event_handler)(struct ib_event *, void *);
+	void *cq_context;
+	int cqe;
+	unsigned int cqe_used;
+	atomic_t usecnt;
+	enum ib_poll_context poll_ctx;
+	struct ib_wc *wc;
+	struct list_head pool_entry;
+	union {
+		struct irq_poll iop;
+		struct work_struct work;
+	};
+	struct workqueue_struct *comp_wq;
+	struct dim *dim;
+	ktime_t timestamp;
+	u8 interrupt: 1;
+	u8 shared: 1;
+	unsigned int comp_vector;
+	struct rdma_restrack_entry res;
+};
+
+enum ib_event_type {
+	IB_EVENT_CQ_ERR = 0,
+	IB_EVENT_QP_FATAL = 1,
+	IB_EVENT_QP_REQ_ERR = 2,
+	IB_EVENT_QP_ACCESS_ERR = 3,
+	IB_EVENT_COMM_EST = 4,
+	IB_EVENT_SQ_DRAINED = 5,
+	IB_EVENT_PATH_MIG = 6,
+	IB_EVENT_PATH_MIG_ERR = 7,
+	IB_EVENT_DEVICE_FATAL = 8,
+	IB_EVENT_PORT_ACTIVE = 9,
+	IB_EVENT_PORT_ERR = 10,
+	IB_EVENT_LID_CHANGE = 11,
+	IB_EVENT_PKEY_CHANGE = 12,
+	IB_EVENT_SM_CHANGE = 13,
+	IB_EVENT_SRQ_ERR = 14,
+	IB_EVENT_SRQ_LIMIT_REACHED = 15,
+	IB_EVENT_QP_LAST_WQE_REACHED = 16,
+	IB_EVENT_CLIENT_REREGISTER = 17,
+	IB_EVENT_GID_CHANGE = 18,
+	IB_EVENT_WQ_FATAL = 19,
+};
+
+struct ib_event {
+	struct ib_device *device;
+	union {
+		struct ib_cq *cq;
+		struct ib_qp *qp;
+		struct ib_srq *srq;
+		struct ib_wq *wq;
+		u32 port_num;
+	} element;
+	enum ib_event_type event;
+};
+
+struct ib_usrq_object;
+
+enum ib_srq_type {
+	IB_SRQT_BASIC = 0,
+	IB_SRQT_XRC = 1,
+	IB_SRQT_TM = 2,
+};
+
+struct ib_srq {
+	struct ib_device *device;
+	struct ib_pd *pd;
+	struct ib_usrq_object *uobject;
+	void (*event_handler)(struct ib_event *, void *);
+	void *srq_context;
+	enum ib_srq_type srq_type;
+	atomic_t usecnt;
+	struct {
+		struct ib_cq *cq;
+		union {
+			struct {
+				struct ib_xrcd *xrcd;
+				u32 srq_num;
+			} xrc;
+		};
+	} ext;
+	struct rdma_restrack_entry res;
+};
+
+struct ib_xrcd {
+	struct ib_device *device;
+	atomic_t usecnt;
+	struct inode *inode;
+	struct rw_semaphore tgt_qps_rwsem;
+	struct xarray tgt_qps;
+};
+
+struct ib_uwq_object;
+
+enum ib_wq_state {
+	IB_WQS_RESET = 0,
+	IB_WQS_RDY = 1,
+	IB_WQS_ERR = 2,
+};
+
+enum ib_wq_type {
+	IB_WQT_RQ = 0,
+};
+
+struct ib_wq {
+	struct ib_device *device;
+	struct ib_uwq_object *uobject;
+	void *wq_context;
+	void (*event_handler)(struct ib_event *, void *);
+	struct ib_pd *pd;
+	struct ib_cq *cq;
+	u32 wq_num;
+	enum ib_wq_state state;
+	enum ib_wq_type wq_type;
+	atomic_t usecnt;
+};
+
+enum ib_wc_status {
+	IB_WC_SUCCESS = 0,
+	IB_WC_LOC_LEN_ERR = 1,
+	IB_WC_LOC_QP_OP_ERR = 2,
+	IB_WC_LOC_EEC_OP_ERR = 3,
+	IB_WC_LOC_PROT_ERR = 4,
+	IB_WC_WR_FLUSH_ERR = 5,
+	IB_WC_MW_BIND_ERR = 6,
+	IB_WC_BAD_RESP_ERR = 7,
+	IB_WC_LOC_ACCESS_ERR = 8,
+	IB_WC_REM_INV_REQ_ERR = 9,
+	IB_WC_REM_ACCESS_ERR = 10,
+	IB_WC_REM_OP_ERR = 11,
+	IB_WC_RETRY_EXC_ERR = 12,
+	IB_WC_RNR_RETRY_EXC_ERR = 13,
+	IB_WC_LOC_RDD_VIOL_ERR = 14,
+	IB_WC_REM_INV_RD_REQ_ERR = 15,
+	IB_WC_REM_ABORT_ERR = 16,
+	IB_WC_INV_EECN_ERR = 17,
+	IB_WC_INV_EEC_STATE_ERR = 18,
+	IB_WC_FATAL_ERR = 19,
+	IB_WC_RESP_TIMEOUT_ERR = 20,
+	IB_WC_GENERAL_ERR = 21,
+};
+
+enum ib_wc_opcode {
+	IB_WC_SEND = 0,
+	IB_WC_RDMA_WRITE = 1,
+	IB_WC_RDMA_READ = 2,
+	IB_WC_COMP_SWAP = 3,
+	IB_WC_FETCH_ADD = 4,
+	IB_WC_BIND_MW = 5,
+	IB_WC_LOCAL_INV = 6,
+	IB_WC_LSO = 7,
+	IB_WC_ATOMIC_WRITE = 9,
+	IB_WC_REG_MR = 10,
+	IB_WC_MASKED_COMP_SWAP = 11,
+	IB_WC_MASKED_FETCH_ADD = 12,
+	IB_WC_FLUSH = 8,
+	IB_WC_RECV = 128,
+	IB_WC_RECV_RDMA_WITH_IMM = 129,
+};
+
+struct ib_cqe;
+
+struct ib_wc {
+	union {
+		u64 wr_id;
+		struct ib_cqe *wr_cqe;
+	};
+	enum ib_wc_status status;
+	enum ib_wc_opcode opcode;
+	u32 vendor_err;
+	u32 byte_len;
+	struct ib_qp *qp;
+	union {
+		__be32 imm_data;
+		u32 invalidate_rkey;
+	} ex;
+	u32 src_qp;
+	u32 slid;
+	int wc_flags;
+	u16 pkey_index;
+	u8 sl;
+	u8 dlid_path_bits;
+	u32 port_num;
+	u8 smac[6];
+	u16 vlan_id;
+	u8 network_hdr_type;
+};
+
+struct ib_cqe {
+	void (*done)(struct ib_cq *, struct ib_wc *);
+};
+
+struct dim_stats {
+	int ppms;
+	int bpms;
+	int epms;
+	int cpms;
+	int cpe_ratio;
+};
+
+struct dim_sample {
+	ktime_t time;
+	u32 pkt_ctr;
+	u32 byte_ctr;
+	u16 event_ctr;
+	u32 comp_ctr;
+};
+
+struct dim {
+	u8 state;
+	struct dim_stats prev_stats;
+	struct dim_sample start_sample;
+	struct dim_sample measuring_sample;
+	struct work_struct work;
+	void *priv;
+	u8 profile_ix;
+	u8 mode;
+	u8 tune_state;
+	u8 steps_right;
+	u8 steps_left;
+	u8 tired;
+};
+
+union ib_gid {
+	u8 raw[16];
+	struct {
+		__be64 subnet_prefix;
+		__be64 interface_id;
+	} global;
+};
+
+enum ib_gid_type {
+	IB_GID_TYPE_IB = 0,
+	IB_GID_TYPE_ROCE = 1,
+	IB_GID_TYPE_ROCE_UDP_ENCAP = 2,
+	IB_GID_TYPE_SIZE = 3,
+};
+
+struct ib_gid_attr {
+	struct net_device __attribute__((btf_type_tag("rcu"))) *ndev;
+	struct ib_device *device;
+	union ib_gid gid;
+	enum ib_gid_type gid_type;
+	u16 index;
+	u32 port_num;
+};
+
+struct ib_rwq_ind_table {
+	struct ib_device *device;
+	struct ib_uobject *uobject;
+	atomic_t usecnt;
+	u32 ind_tbl_num;
+	u32 log_ind_tbl_size;
+	struct ib_wq **ind_tbl;
+};
+
+struct ib_ports_pkeys;
+
+struct ib_qp_security {
+	struct ib_qp *qp;
+	struct ib_device *dev;
+	struct mutex mutex;
+	struct ib_ports_pkeys *ports_pkeys;
+	struct list_head shared_qp_list;
+	void *security;
+	bool destroying;
+	atomic_t error_list_count;
+	struct completion error_complete;
+	int error_comps_pending;
+};
+
+enum port_pkey_state {
+	IB_PORT_PKEY_NOT_VALID = 0,
+	IB_PORT_PKEY_VALID = 1,
+	IB_PORT_PKEY_LISTED = 2,
+};
+
+struct ib_port_pkey {
+	enum port_pkey_state state;
+	u16 pkey_index;
+	u32 port_num;
+	struct list_head qp_list;
+	struct list_head to_error_list;
+	struct ib_qp_security *sec;
+};
+
+struct ib_ports_pkeys {
+	struct ib_port_pkey main;
+	struct ib_port_pkey alt;
+};
+
+enum rdma_nl_counter_mode {
+	RDMA_COUNTER_MODE_NONE = 0,
+	RDMA_COUNTER_MODE_AUTO = 1,
+	RDMA_COUNTER_MODE_MANUAL = 2,
+	RDMA_COUNTER_MODE_MAX = 3,
+};
+
+enum rdma_nl_counter_mask {
+	RDMA_COUNTER_MASK_QP_TYPE = 1,
+	RDMA_COUNTER_MASK_PID = 2,
+};
+
+struct auto_mode_param {
+	int qp_type;
+};
+
+struct rdma_counter_mode {
+	enum rdma_nl_counter_mode mode;
+	enum rdma_nl_counter_mask mask;
+	struct auto_mode_param param;
+};
+
+struct rdma_counter {
+	struct rdma_restrack_entry res;
+	struct ib_device *device;
+	uint32_t id;
+	struct kref kref;
+	struct rdma_counter_mode mode;
+	struct mutex lock;
+	struct rdma_hw_stats *stats;
+	u32 port;
+};
+
+struct rdma_stat_desc;
+
+struct rdma_hw_stats {
+	struct mutex lock;
+	unsigned long timestamp;
+	unsigned long lifespan;
+	const struct rdma_stat_desc *descs;
+	unsigned long *is_disabled;
+	int num_counters;
+	u64 value[0];
+};
+
+struct rdma_stat_desc {
+	const char *name;
+	unsigned int flags;
+	const void *priv;
+};
+
+enum ib_wr_opcode {
+	IB_WR_RDMA_WRITE = 0,
+	IB_WR_RDMA_WRITE_WITH_IMM = 1,
+	IB_WR_SEND = 2,
+	IB_WR_SEND_WITH_IMM = 3,
+	IB_WR_RDMA_READ = 4,
+	IB_WR_ATOMIC_CMP_AND_SWP = 5,
+	IB_WR_ATOMIC_FETCH_AND_ADD = 6,
+	IB_WR_BIND_MW = 8,
+	IB_WR_LSO = 10,
+	IB_WR_SEND_WITH_INV = 9,
+	IB_WR_RDMA_READ_WITH_INV = 11,
+	IB_WR_LOCAL_INV = 7,
+	IB_WR_MASKED_ATOMIC_CMP_AND_SWP = 12,
+	IB_WR_MASKED_ATOMIC_FETCH_AND_ADD = 13,
+	IB_WR_FLUSH = 14,
+	IB_WR_ATOMIC_WRITE = 15,
+	IB_WR_REG_MR = 32,
+	IB_WR_REG_MR_INTEGRITY = 33,
+	IB_WR_RESERVED1 = 240,
+	IB_WR_RESERVED2 = 241,
+	IB_WR_RESERVED3 = 242,
+	IB_WR_RESERVED4 = 243,
+	IB_WR_RESERVED5 = 244,
+	IB_WR_RESERVED6 = 245,
+	IB_WR_RESERVED7 = 246,
+	IB_WR_RESERVED8 = 247,
+	IB_WR_RESERVED9 = 248,
+	IB_WR_RESERVED10 = 249,
+};
+
+struct ib_send_wr {
+	struct ib_send_wr *next;
+	union {
+		u64 wr_id;
+		struct ib_cqe *wr_cqe;
+	};
+	struct ib_sge *sg_list;
+	int num_sge;
+	enum ib_wr_opcode opcode;
+	int send_flags;
+	union {
+		__be32 imm_data;
+		u32 invalidate_rkey;
+	} ex;
+};
+
+struct ib_sge {
+	u64 addr;
+	u32 length;
+	u32 lkey;
+};
+
+struct ib_recv_wr {
+	struct ib_recv_wr *next;
+	union {
+		u64 wr_id;
+		struct ib_cqe *wr_cqe;
+	};
+	struct ib_sge *sg_list;
+	int num_sge;
+};
+
+struct ib_grh {
+	__be32 version_tclass_flow;
+	__be16 paylen;
+	u8 next_hdr;
+	u8 hop_limit;
+	union ib_gid sgid;
+	union ib_gid dgid;
+};
+
+struct ib_udata {
+	const void __attribute__((btf_type_tag("user"))) *inbuf;
+	void __attribute__((btf_type_tag("user"))) *outbuf;
+	size_t inlen;
+	size_t outlen;
+};
+
+struct ib_device_modify {
+	u64 sys_image_guid;
+	char node_desc[64];
+};
+
+enum ib_port_state {
+	IB_PORT_NOP = 0,
+	IB_PORT_DOWN = 1,
+	IB_PORT_INIT = 2,
+	IB_PORT_ARMED = 3,
+	IB_PORT_ACTIVE = 4,
+	IB_PORT_ACTIVE_DEFER = 5,
+};
+
+enum ib_mtu {
+	IB_MTU_256 = 1,
+	IB_MTU_512 = 2,
+	IB_MTU_1024 = 3,
+	IB_MTU_2048 = 4,
+	IB_MTU_4096 = 5,
+};
+
+struct ib_port_attr {
+	u64 subnet_prefix;
+	enum ib_port_state state;
+	enum ib_mtu max_mtu;
+	enum ib_mtu active_mtu;
+	u32 phys_mtu;
+	int gid_tbl_len;
+	unsigned int ip_gids: 1;
+	u32 port_cap_flags;
+	u32 max_msg_sz;
+	u32 bad_pkey_cntr;
+	u32 qkey_viol_cntr;
+	u16 pkey_tbl_len;
+	u32 sm_lid;
+	u32 lid;
+	u8 lmc;
+	u8 max_vl_num;
+	u8 sm_sl;
+	u8 subnet_timeout;
+	u8 init_type_reply;
+	u8 active_width;
+	u16 active_speed;
+	u8 phys_state;
+	u16 port_cap_flags2;
+};
+
+struct ib_port_modify {
+	u32 set_port_cap_mask;
+	u32 clr_port_cap_mask;
+	u8 init_type;
+};
+
+struct ib_port_immutable {
+	int pkey_tbl_len;
+	int gid_tbl_len;
+	u32 core_cap_flags;
+	u32 max_mad_size;
+};
+
+struct rdma_netdev_alloc_params {
+	size_t sizeof_priv;
+	unsigned int txqs;
+	unsigned int rxqs;
+	void *param;
+	int (*initialize_rdma_netdev)(struct ib_device *, u32, struct net_device *, void *);
+};
+
+struct rdma_user_mmap_entry {
+	struct kref ref;
+	struct ib_ucontext *ucontext;
+	unsigned long start_pgoff;
+	size_t npages;
+	bool driver_removed;
+};
+
+enum rdma_ah_attr_type {
+	RDMA_AH_ATTR_TYPE_UNDEFINED = 0,
+	RDMA_AH_ATTR_TYPE_IB = 1,
+	RDMA_AH_ATTR_TYPE_ROCE = 2,
+	RDMA_AH_ATTR_TYPE_OPA = 3,
+};
+
+struct ib_ah {
+	struct ib_device *device;
+	struct ib_pd *pd;
+	struct ib_uobject *uobject;
+	const struct ib_gid_attr *sgid_attr;
+	enum rdma_ah_attr_type type;
+};
+
+struct rdma_ah_init_attr {
+	struct rdma_ah_attr *ah_attr;
+	u32 flags;
+	struct net_device *xmit_slave;
+};
+
+struct ib_ah_attr {
+	u16 dlid;
+	u8 src_path_bits;
+};
+
+struct roce_ah_attr {
+	u8 dmac[6];
+};
+
+struct opa_ah_attr {
+	u32 dlid;
+	u8 src_path_bits;
+	bool make_grd;
+};
+
+struct ib_global_route {
+	const struct ib_gid_attr *sgid_attr;
+	union ib_gid dgid;
+	u32 flow_label;
+	u8 sgid_index;
+	u8 hop_limit;
+	u8 traffic_class;
+};
+
+struct rdma_ah_attr {
+	struct ib_global_route grh;
+	u8 sl;
+	u8 static_rate;
+	u32 port_num;
+	u8 ah_flags;
+	enum rdma_ah_attr_type type;
+	union {
+		struct ib_ah_attr ib;
+		struct roce_ah_attr roce;
+		struct opa_ah_attr opa;
+	};
+};
+
+struct ib_srq_attr {
+	u32 max_wr;
+	u32 max_sge;
+	u32 srq_limit;
+};
+
+struct ib_srq_init_attr {
+	void (*event_handler)(struct ib_event *, void *);
+	void *srq_context;
+	struct ib_srq_attr attr;
+	enum ib_srq_type srq_type;
+	struct {
+		struct ib_cq *cq;
+		union {
+			struct {
+				struct ib_xrcd *xrcd;
+			} xrc;
+			struct {
+				u32 max_num_tags;
+			} tag_matching;
+		};
+	} ext;
+};
+
+struct ib_qp_cap {
+	u32 max_send_wr;
+	u32 max_recv_wr;
+	u32 max_send_sge;
+	u32 max_recv_sge;
+	u32 max_inline_data;
+	u32 max_rdma_ctxs;
+};
+
+enum ib_sig_type {
+	IB_SIGNAL_ALL_WR = 0,
+	IB_SIGNAL_REQ_WR = 1,
+};
+
+struct ib_qp_init_attr {
+	void (*event_handler)(struct ib_event *, void *);
+	void *qp_context;
+	struct ib_cq *send_cq;
+	struct ib_cq *recv_cq;
+	struct ib_srq *srq;
+	struct ib_xrcd *xrcd;
+	struct ib_qp_cap cap;
+	enum ib_sig_type sq_sig_type;
+	enum ib_qp_type qp_type;
+	u32 create_flags;
+	u32 port_num;
+	struct ib_rwq_ind_table *rwq_ind_tbl;
+	u32 source_qpn;
+};
+
+enum ib_qp_state {
+	IB_QPS_RESET = 0,
+	IB_QPS_INIT = 1,
+	IB_QPS_RTR = 2,
+	IB_QPS_RTS = 3,
+	IB_QPS_SQD = 4,
+	IB_QPS_SQE = 5,
+	IB_QPS_ERR = 6,
+};
+
+enum ib_mig_state {
+	IB_MIG_MIGRATED = 0,
+	IB_MIG_REARM = 1,
+	IB_MIG_ARMED = 2,
+};
+
+struct ib_qp_attr {
+	enum ib_qp_state qp_state;
+	enum ib_qp_state cur_qp_state;
+	enum ib_mtu path_mtu;
+	enum ib_mig_state path_mig_state;
+	u32 qkey;
+	u32 rq_psn;
+	u32 sq_psn;
+	u32 dest_qp_num;
+	int qp_access_flags;
+	struct ib_qp_cap cap;
+	struct rdma_ah_attr ah_attr;
+	struct rdma_ah_attr alt_ah_attr;
+	u16 pkey_index;
+	u16 alt_pkey_index;
+	u8 en_sqd_async_notify;
+	u8 sq_draining;
+	u8 max_rd_atomic;
+	u8 max_dest_rd_atomic;
+	u8 min_rnr_timer;
+	u32 port_num;
+	u8 timeout;
+	u8 retry_cnt;
+	u8 rnr_retry;
+	u32 alt_port_num;
+	u8 alt_timeout;
+	u32 rate_limit;
+	struct net_device *xmit_slave;
+};
+
+struct ib_cq_init_attr {
+	unsigned int cqe;
+	u32 comp_vector;
+	u32 flags;
+};
+
+enum ib_sig_err_type {
+	IB_SIG_BAD_GUARD = 0,
+	IB_SIG_BAD_REFTAG = 1,
+	IB_SIG_BAD_APPTAG = 2,
+};
+
+struct ib_sig_err {
+	enum ib_sig_err_type err_type;
+	u32 expected;
+	u32 actual;
+	u64 sig_err_offset;
+	u32 key;
+};
+
+struct ib_mr_status {
+	u32 fail_status;
+	struct ib_sig_err sig_err;
+};
+
+enum ib_mw_type {
+	IB_MW_TYPE_1 = 1,
+	IB_MW_TYPE_2 = 2,
+};
+
+struct ib_mw {
+	struct ib_device *device;
+	struct ib_pd *pd;
+	struct ib_uobject *uobject;
+	u32 rkey;
+	enum ib_mw_type type;
+};
+
+struct ib_flow {
+	struct ib_qp *qp;
+	struct ib_device *device;
+	struct ib_uobject *uobject;
+};
+
+enum ib_flow_attr_type {
+	IB_FLOW_ATTR_NORMAL = 0,
+	IB_FLOW_ATTR_ALL_DEFAULT = 1,
+	IB_FLOW_ATTR_MC_DEFAULT = 2,
+	IB_FLOW_ATTR_SNIFFER = 3,
+};
+
+struct ib_flow_eth_filter {
+	u8 dst_mac[6];
+	u8 src_mac[6];
+	__be16 ether_type;
+	__be16 vlan_tag;
+	u8 real_sz[0];
+};
+
+struct ib_flow_spec_eth {
+	u32 type;
+	u16 size;
+	struct ib_flow_eth_filter val;
+	struct ib_flow_eth_filter mask;
+};
+
+struct ib_flow_ib_filter {
+	__be16 dlid;
+	__u8 sl;
+	u8 real_sz[0];
+};
+
+struct ib_flow_spec_ib {
+	u32 type;
+	u16 size;
+	struct ib_flow_ib_filter val;
+	struct ib_flow_ib_filter mask;
+};
+
+struct ib_flow_ipv4_filter {
+	__be32 src_ip;
+	__be32 dst_ip;
+	u8 proto;
+	u8 tos;
+	u8 ttl;
+	u8 flags;
+	u8 real_sz[0];
+};
+
+struct ib_flow_spec_ipv4 {
+	u32 type;
+	u16 size;
+	struct ib_flow_ipv4_filter val;
+	struct ib_flow_ipv4_filter mask;
+};
+
+struct ib_flow_tcp_udp_filter {
+	__be16 dst_port;
+	__be16 src_port;
+	u8 real_sz[0];
+};
+
+struct ib_flow_spec_tcp_udp {
+	u32 type;
+	u16 size;
+	struct ib_flow_tcp_udp_filter val;
+	struct ib_flow_tcp_udp_filter mask;
+};
+
+struct ib_flow_ipv6_filter {
+	u8 src_ip[16];
+	u8 dst_ip[16];
+	__be32 flow_label;
+	u8 next_hdr;
+	u8 traffic_class;
+	u8 hop_limit;
+	u8 real_sz[0];
+};
+
+struct ib_flow_spec_ipv6 {
+	u32 type;
+	u16 size;
+	struct ib_flow_ipv6_filter val;
+	struct ib_flow_ipv6_filter mask;
+};
+
+struct ib_flow_tunnel_filter {
+	__be32 tunnel_id;
+	u8 real_sz[0];
+};
+
+struct ib_flow_spec_tunnel {
+	u32 type;
+	u16 size;
+	struct ib_flow_tunnel_filter val;
+	struct ib_flow_tunnel_filter mask;
+};
+
+struct ib_flow_esp_filter {
+	__be32 spi;
+	__be32 seq;
+	u8 real_sz[0];
+};
+
+struct ib_flow_spec_esp {
+	u32 type;
+	u16 size;
+	struct ib_flow_esp_filter val;
+	struct ib_flow_esp_filter mask;
+};
+
+struct ib_flow_gre_filter {
+	__be16 c_ks_res0_ver;
+	__be16 protocol;
+	__be32 key;
+	u8 real_sz[0];
+};
+
+struct ib_flow_spec_gre {
+	u32 type;
+	u16 size;
+	struct ib_flow_gre_filter val;
+	struct ib_flow_gre_filter mask;
+};
+
+struct ib_flow_mpls_filter {
+	__be32 tag;
+	u8 real_sz[0];
+};
+
+struct ib_flow_spec_mpls {
+	u32 type;
+	u16 size;
+	struct ib_flow_mpls_filter val;
+	struct ib_flow_mpls_filter mask;
+};
+
+enum ib_flow_spec_type {
+	IB_FLOW_SPEC_ETH = 32,
+	IB_FLOW_SPEC_IB = 34,
+	IB_FLOW_SPEC_IPV4 = 48,
+	IB_FLOW_SPEC_IPV6 = 49,
+	IB_FLOW_SPEC_ESP = 52,
+	IB_FLOW_SPEC_TCP = 64,
+	IB_FLOW_SPEC_UDP = 65,
+	IB_FLOW_SPEC_VXLAN_TUNNEL = 80,
+	IB_FLOW_SPEC_GRE = 81,
+	IB_FLOW_SPEC_MPLS = 96,
+	IB_FLOW_SPEC_INNER = 256,
+	IB_FLOW_SPEC_ACTION_TAG = 4096,
+	IB_FLOW_SPEC_ACTION_DROP = 4097,
+	IB_FLOW_SPEC_ACTION_HANDLE = 4098,
+	IB_FLOW_SPEC_ACTION_COUNT = 4099,
+};
+
+struct ib_flow_spec_action_tag {
+	enum ib_flow_spec_type type;
+	u16 size;
+	u32 tag_id;
+};
+
+struct ib_flow_spec_action_drop {
+	enum ib_flow_spec_type type;
+	u16 size;
+};
+
+struct ib_flow_spec_action_handle {
+	enum ib_flow_spec_type type;
+	u16 size;
+	struct ib_flow_action *act;
+};
+
+struct ib_flow_spec_action_count {
+	enum ib_flow_spec_type type;
+	u16 size;
+	struct ib_counters *counters;
+};
+
+union ib_flow_spec {
+	struct {
+		u32 type;
+		u16 size;
+	};
+	struct ib_flow_spec_eth eth;
+	struct ib_flow_spec_ib ib;
+	struct ib_flow_spec_ipv4 ipv4;
+	struct ib_flow_spec_tcp_udp tcp_udp;
+	struct ib_flow_spec_ipv6 ipv6;
+	struct ib_flow_spec_tunnel tunnel;
+	struct ib_flow_spec_esp esp;
+	struct ib_flow_spec_gre gre;
+	struct ib_flow_spec_mpls mpls;
+	struct ib_flow_spec_action_tag flow_tag;
+	struct ib_flow_spec_action_drop drop;
+	struct ib_flow_spec_action_handle action;
+	struct ib_flow_spec_action_count flow_count;
+};
+
+struct ib_flow_attr {
+	enum ib_flow_attr_type type;
+	u16 size;
+	u16 priority;
+	u32 flags;
+	u8 num_of_specs;
+	u32 port;
+	union ib_flow_spec flows[0];
+};
+
+enum ib_flow_action_type {
+	IB_FLOW_ACTION_UNSPECIFIED = 0,
+	IB_FLOW_ACTION_ESP = 1,
+};
+
+struct ib_flow_action {
+	struct ib_device *device;
+	struct ib_uobject *uobject;
+	enum ib_flow_action_type type;
+	atomic_t usecnt;
+};
+
+struct ib_counters {
+	struct ib_device *device;
+	struct ib_uobject *uobject;
+	atomic_t usecnt;
+};
+
+struct ib_wq_init_attr {
+	void *wq_context;
+	enum ib_wq_type wq_type;
+	u32 max_wr;
+	u32 max_sge;
+	struct ib_cq *cq;
+	void (*event_handler)(struct ib_event *, void *);
+	u32 create_flags;
+};
+
+struct ib_wq_attr {
+	enum ib_wq_state wq_state;
+	enum ib_wq_state curr_wq_state;
+	u32 flags;
+	u32 flags_mask;
+};
+
+struct ib_rwq_ind_table_init_attr {
+	u32 log_ind_tbl_size;
+	struct ib_wq **ind_tbl;
+};
+
+struct ib_dm_alloc_attr {
+	u64 length;
+	u32 alignment;
+	u32 flags;
+};
+
+struct ib_dm_mr_attr {
+	u64 length;
+	u64 offset;
+	u32 access_flags;
+};
+
+struct ib_counters_read_attr {
+	u64 *counters_buff;
+	u32 ncounters;
+	u32 flags;
+};
+
+struct ib_pkey_cache;
+
+struct ib_gid_table;
+
+struct ib_port_cache {
+	u64 subnet_prefix;
+	struct ib_pkey_cache *pkey;
+	struct ib_gid_table *gid;
+	u8 lmc;
+	enum ib_port_state port_state;
+};
+
+struct rdma_port_counter {
+	struct rdma_counter_mode mode;
+	struct rdma_hw_stats *hstats;
+	unsigned int num_counters;
+	struct mutex lock;
+};
+
+struct ib_port;
+
+struct ib_port_data {
+	struct ib_device *ib_dev;
+	struct ib_port_immutable immutable;
+	spinlock_t pkey_list_lock;
+	spinlock_t netdev_lock;
+	struct list_head pkey_list;
+	struct ib_port_cache cache;
+	struct net_device __attribute__((btf_type_tag("rcu"))) *netdev;
+	netdevice_tracker netdev_tracker;
+	struct hlist_node ndev_hash_link;
+	struct rdma_port_counter port_counter;
+	struct ib_port *sysfs;
+};
+
+struct rdma_link_ops {
+	struct list_head list;
+	const char *type;
+	int (*newlink)(const char *, struct net_device *);
+};
+
+enum devlink_linecard_state {
+	DEVLINK_LINECARD_STATE_UNSPEC = 0,
+	DEVLINK_LINECARD_STATE_UNPROVISIONED = 1,
+	DEVLINK_LINECARD_STATE_UNPROVISIONING = 2,
+	DEVLINK_LINECARD_STATE_PROVISIONING = 3,
+	DEVLINK_LINECARD_STATE_PROVISIONING_FAILED = 4,
+	DEVLINK_LINECARD_STATE_PROVISIONED = 5,
+	DEVLINK_LINECARD_STATE_ACTIVE = 6,
+	__DEVLINK_LINECARD_STATE_MAX = 7,
+	DEVLINK_LINECARD_STATE_MAX = 6,
+};
+
+struct devlink_linecard_ops;
+
+struct devlink_linecard_type;
+
+struct devlink_linecard {
+	struct list_head list;
+	struct devlink *devlink;
+	unsigned int index;
+	const struct devlink_linecard_ops *ops;
+	void *priv;
+	enum devlink_linecard_state state;
+	struct mutex state_lock;
+	const char *type;
+	struct devlink_linecard_type *types;
+	unsigned int types_count;
+	struct devlink *nested_devlink;
+};
+
+struct devlink_linecard_ops {
+	int (*provision)(struct devlink_linecard *, void *, const char *, const void *, struct netlink_ext_ack *);
+	int (*unprovision)(struct devlink_linecard *, void *, struct netlink_ext_ack *);
+	bool (*same_provision)(struct devlink_linecard *, void *, const char *, const void *);
+	unsigned int (*types_count)(struct devlink_linecard *, void *);
+	void (*types_get)(struct devlink_linecard *, void *, unsigned int, const char **, const void **);
+};
+
+typedef void (*btf_trace_devlink_hwmsg)(void *, const struct devlink *, bool, unsigned long, const u8 *, size_t);
+
+typedef void (*btf_trace_devlink_hwerr)(void *, const struct devlink *, int, const char *);
+
+typedef void (*btf_trace_devlink_health_report)(void *, const struct devlink *, const char *, const char *);
+
+typedef void (*btf_trace_devlink_health_recover_aborted)(void *, const struct devlink *, const char *, bool, u64);
+
+typedef void (*btf_trace_devlink_health_reporter_state_update)(void *, const struct devlink *, const char *, bool);
+
+struct devlink_trap_metadata;
+
+typedef void (*btf_trace_devlink_trap_report)(void *, const struct devlink *, struct sk_buff *, const struct devlink_trap_metadata *);
+
+struct devlink_trap_metadata {
+	const char *trap_name;
+	const char *trap_group_name;
+	struct net_device *input_dev;
+	netdevice_tracker dev_tracker;
+	const struct flow_action_cookie *fa_cookie;
+	enum devlink_trap_type trap_type;
+};
+
+struct trace_event_raw_devlink_hwmsg {
+	struct trace_entry ent;
+	u32 __data_loc_bus_name;
+	u32 __data_loc_dev_name;
+	u32 __data_loc_driver_name;
+	bool incoming;
+	unsigned long type;
+	u32 __data_loc_buf;
+	size_t len;
+	char __data[0];
+};
+
+struct trace_event_raw_devlink_hwerr {
+	struct trace_entry ent;
+	u32 __data_loc_bus_name;
+	u32 __data_loc_dev_name;
+	u32 __data_loc_driver_name;
+	int err;
+	u32 __data_loc_msg;
+	char __data[0];
+};
+
+struct trace_event_raw_devlink_health_report {
+	struct trace_entry ent;
+	u32 __data_loc_bus_name;
+	u32 __data_loc_dev_name;
+	u32 __data_loc_driver_name;
+	u32 __data_loc_reporter_name;
+	u32 __data_loc_msg;
+	char __data[0];
+};
+
+struct trace_event_raw_devlink_health_recover_aborted {
+	struct trace_entry ent;
+	u32 __data_loc_bus_name;
+	u32 __data_loc_dev_name;
+	u32 __data_loc_driver_name;
+	u32 __data_loc_reporter_name;
+	bool health_state;
+	u64 time_since_last_recover;
+	char __data[0];
+};
+
+struct trace_event_raw_devlink_health_reporter_state_update {
+	struct trace_entry ent;
+	u32 __data_loc_bus_name;
+	u32 __data_loc_dev_name;
+	u32 __data_loc_driver_name;
+	u32 __data_loc_reporter_name;
+	u8 new_state;
+	char __data[0];
+};
+
+struct trace_event_raw_devlink_trap_report {
+	struct trace_entry ent;
+	u32 __data_loc_bus_name;
+	u32 __data_loc_dev_name;
+	u32 __data_loc_driver_name;
+	u32 __data_loc_trap_name;
+	u32 __data_loc_trap_group_name;
+	char input_dev_name[16];
+	char __data[0];
+};
+
+struct trace_event_data_offsets_devlink_hwmsg {
+	u32 bus_name;
+	u32 dev_name;
+	u32 driver_name;
+	u32 buf;
+};
+
+struct trace_event_data_offsets_devlink_hwerr {
+	u32 bus_name;
+	u32 dev_name;
+	u32 driver_name;
+	u32 msg;
+};
+
+struct trace_event_data_offsets_devlink_health_report {
+	u32 bus_name;
+	u32 dev_name;
+	u32 driver_name;
+	u32 reporter_name;
+	u32 msg;
+};
+
+struct trace_event_data_offsets_devlink_health_recover_aborted {
+	u32 bus_name;
+	u32 dev_name;
+	u32 driver_name;
+	u32 reporter_name;
+};
+
+struct trace_event_data_offsets_devlink_health_reporter_state_update {
+	u32 bus_name;
+	u32 dev_name;
+	u32 driver_name;
+	u32 reporter_name;
+};
+
+struct trace_event_data_offsets_devlink_trap_report {
+	u32 bus_name;
+	u32 dev_name;
+	u32 driver_name;
+	u32 trap_name;
+	u32 trap_group_name;
+};
+
+enum devlink_attr {
+	DEVLINK_ATTR_UNSPEC = 0,
+	DEVLINK_ATTR_BUS_NAME = 1,
+	DEVLINK_ATTR_DEV_NAME = 2,
+	DEVLINK_ATTR_PORT_INDEX = 3,
+	DEVLINK_ATTR_PORT_TYPE = 4,
+	DEVLINK_ATTR_PORT_DESIRED_TYPE = 5,
+	DEVLINK_ATTR_PORT_NETDEV_IFINDEX = 6,
+	DEVLINK_ATTR_PORT_NETDEV_NAME = 7,
+	DEVLINK_ATTR_PORT_IBDEV_NAME = 8,
+	DEVLINK_ATTR_PORT_SPLIT_COUNT = 9,
+	DEVLINK_ATTR_PORT_SPLIT_GROUP = 10,
+	DEVLINK_ATTR_SB_INDEX = 11,
+	DEVLINK_ATTR_SB_SIZE = 12,
+	DEVLINK_ATTR_SB_INGRESS_POOL_COUNT = 13,
+	DEVLINK_ATTR_SB_EGRESS_POOL_COUNT = 14,
+	DEVLINK_ATTR_SB_INGRESS_TC_COUNT = 15,
+	DEVLINK_ATTR_SB_EGRESS_TC_COUNT = 16,
+	DEVLINK_ATTR_SB_POOL_INDEX = 17,
+	DEVLINK_ATTR_SB_POOL_TYPE = 18,
+	DEVLINK_ATTR_SB_POOL_SIZE = 19,
+	DEVLINK_ATTR_SB_POOL_THRESHOLD_TYPE = 20,
+	DEVLINK_ATTR_SB_THRESHOLD = 21,
+	DEVLINK_ATTR_SB_TC_INDEX = 22,
+	DEVLINK_ATTR_SB_OCC_CUR = 23,
+	DEVLINK_ATTR_SB_OCC_MAX = 24,
+	DEVLINK_ATTR_ESWITCH_MODE = 25,
+	DEVLINK_ATTR_ESWITCH_INLINE_MODE = 26,
+	DEVLINK_ATTR_DPIPE_TABLES = 27,
+	DEVLINK_ATTR_DPIPE_TABLE = 28,
+	DEVLINK_ATTR_DPIPE_TABLE_NAME = 29,
+	DEVLINK_ATTR_DPIPE_TABLE_SIZE = 30,
+	DEVLINK_ATTR_DPIPE_TABLE_MATCHES = 31,
+	DEVLINK_ATTR_DPIPE_TABLE_ACTIONS = 32,
+	DEVLINK_ATTR_DPIPE_TABLE_COUNTERS_ENABLED = 33,
+	DEVLINK_ATTR_DPIPE_ENTRIES = 34,
+	DEVLINK_ATTR_DPIPE_ENTRY = 35,
+	DEVLINK_ATTR_DPIPE_ENTRY_INDEX = 36,
+	DEVLINK_ATTR_DPIPE_ENTRY_MATCH_VALUES = 37,
+	DEVLINK_ATTR_DPIPE_ENTRY_ACTION_VALUES = 38,
+	DEVLINK_ATTR_DPIPE_ENTRY_COUNTER = 39,
+	DEVLINK_ATTR_DPIPE_MATCH = 40,
+	DEVLINK_ATTR_DPIPE_MATCH_VALUE = 41,
+	DEVLINK_ATTR_DPIPE_MATCH_TYPE = 42,
+	DEVLINK_ATTR_DPIPE_ACTION = 43,
+	DEVLINK_ATTR_DPIPE_ACTION_VALUE = 44,
+	DEVLINK_ATTR_DPIPE_ACTION_TYPE = 45,
+	DEVLINK_ATTR_DPIPE_VALUE = 46,
+	DEVLINK_ATTR_DPIPE_VALUE_MASK = 47,
+	DEVLINK_ATTR_DPIPE_VALUE_MAPPING = 48,
+	DEVLINK_ATTR_DPIPE_HEADERS = 49,
+	DEVLINK_ATTR_DPIPE_HEADER = 50,
+	DEVLINK_ATTR_DPIPE_HEADER_NAME = 51,
+	DEVLINK_ATTR_DPIPE_HEADER_ID = 52,
+	DEVLINK_ATTR_DPIPE_HEADER_FIELDS = 53,
+	DEVLINK_ATTR_DPIPE_HEADER_GLOBAL = 54,
+	DEVLINK_ATTR_DPIPE_HEADER_INDEX = 55,
+	DEVLINK_ATTR_DPIPE_FIELD = 56,
+	DEVLINK_ATTR_DPIPE_FIELD_NAME = 57,
+	DEVLINK_ATTR_DPIPE_FIELD_ID = 58,
+	DEVLINK_ATTR_DPIPE_FIELD_BITWIDTH = 59,
+	DEVLINK_ATTR_DPIPE_FIELD_MAPPING_TYPE = 60,
+	DEVLINK_ATTR_PAD = 61,
+	DEVLINK_ATTR_ESWITCH_ENCAP_MODE = 62,
+	DEVLINK_ATTR_RESOURCE_LIST = 63,
+	DEVLINK_ATTR_RESOURCE = 64,
+	DEVLINK_ATTR_RESOURCE_NAME = 65,
+	DEVLINK_ATTR_RESOURCE_ID = 66,
+	DEVLINK_ATTR_RESOURCE_SIZE = 67,
+	DEVLINK_ATTR_RESOURCE_SIZE_NEW = 68,
+	DEVLINK_ATTR_RESOURCE_SIZE_VALID = 69,
+	DEVLINK_ATTR_RESOURCE_SIZE_MIN = 70,
+	DEVLINK_ATTR_RESOURCE_SIZE_MAX = 71,
+	DEVLINK_ATTR_RESOURCE_SIZE_GRAN = 72,
+	DEVLINK_ATTR_RESOURCE_UNIT = 73,
+	DEVLINK_ATTR_RESOURCE_OCC = 74,
+	DEVLINK_ATTR_DPIPE_TABLE_RESOURCE_ID = 75,
+	DEVLINK_ATTR_DPIPE_TABLE_RESOURCE_UNITS = 76,
+	DEVLINK_ATTR_PORT_FLAVOUR = 77,
+	DEVLINK_ATTR_PORT_NUMBER = 78,
+	DEVLINK_ATTR_PORT_SPLIT_SUBPORT_NUMBER = 79,
+	DEVLINK_ATTR_PARAM = 80,
+	DEVLINK_ATTR_PARAM_NAME = 81,
+	DEVLINK_ATTR_PARAM_GENERIC = 82,
+	DEVLINK_ATTR_PARAM_TYPE = 83,
+	DEVLINK_ATTR_PARAM_VALUES_LIST = 84,
+	DEVLINK_ATTR_PARAM_VALUE = 85,
+	DEVLINK_ATTR_PARAM_VALUE_DATA = 86,
+	DEVLINK_ATTR_PARAM_VALUE_CMODE = 87,
+	DEVLINK_ATTR_REGION_NAME = 88,
+	DEVLINK_ATTR_REGION_SIZE = 89,
+	DEVLINK_ATTR_REGION_SNAPSHOTS = 90,
+	DEVLINK_ATTR_REGION_SNAPSHOT = 91,
+	DEVLINK_ATTR_REGION_SNAPSHOT_ID = 92,
+	DEVLINK_ATTR_REGION_CHUNKS = 93,
+	DEVLINK_ATTR_REGION_CHUNK = 94,
+	DEVLINK_ATTR_REGION_CHUNK_DATA = 95,
+	DEVLINK_ATTR_REGION_CHUNK_ADDR = 96,
+	DEVLINK_ATTR_REGION_CHUNK_LEN = 97,
+	DEVLINK_ATTR_INFO_DRIVER_NAME = 98,
+	DEVLINK_ATTR_INFO_SERIAL_NUMBER = 99,
+	DEVLINK_ATTR_INFO_VERSION_FIXED = 100,
+	DEVLINK_ATTR_INFO_VERSION_RUNNING = 101,
+	DEVLINK_ATTR_INFO_VERSION_STORED = 102,
+	DEVLINK_ATTR_INFO_VERSION_NAME = 103,
+	DEVLINK_ATTR_INFO_VERSION_VALUE = 104,
+	DEVLINK_ATTR_SB_POOL_CELL_SIZE = 105,
+	DEVLINK_ATTR_FMSG = 106,
+	DEVLINK_ATTR_FMSG_OBJ_NEST_START = 107,
+	DEVLINK_ATTR_FMSG_PAIR_NEST_START = 108,
+	DEVLINK_ATTR_FMSG_ARR_NEST_START = 109,
+	DEVLINK_ATTR_FMSG_NEST_END = 110,
+	DEVLINK_ATTR_FMSG_OBJ_NAME = 111,
+	DEVLINK_ATTR_FMSG_OBJ_VALUE_TYPE = 112,
+	DEVLINK_ATTR_FMSG_OBJ_VALUE_DATA = 113,
+	DEVLINK_ATTR_HEALTH_REPORTER = 114,
+	DEVLINK_ATTR_HEALTH_REPORTER_NAME = 115,
+	DEVLINK_ATTR_HEALTH_REPORTER_STATE = 116,
+	DEVLINK_ATTR_HEALTH_REPORTER_ERR_COUNT = 117,
+	DEVLINK_ATTR_HEALTH_REPORTER_RECOVER_COUNT = 118,
+	DEVLINK_ATTR_HEALTH_REPORTER_DUMP_TS = 119,
+	DEVLINK_ATTR_HEALTH_REPORTER_GRACEFUL_PERIOD = 120,
+	DEVLINK_ATTR_HEALTH_REPORTER_AUTO_RECOVER = 121,
+	DEVLINK_ATTR_FLASH_UPDATE_FILE_NAME = 122,
+	DEVLINK_ATTR_FLASH_UPDATE_COMPONENT = 123,
+	DEVLINK_ATTR_FLASH_UPDATE_STATUS_MSG = 124,
+	DEVLINK_ATTR_FLASH_UPDATE_STATUS_DONE = 125,
+	DEVLINK_ATTR_FLASH_UPDATE_STATUS_TOTAL = 126,
+	DEVLINK_ATTR_PORT_PCI_PF_NUMBER = 127,
+	DEVLINK_ATTR_PORT_PCI_VF_NUMBER = 128,
+	DEVLINK_ATTR_STATS = 129,
+	DEVLINK_ATTR_TRAP_NAME = 130,
+	DEVLINK_ATTR_TRAP_ACTION = 131,
+	DEVLINK_ATTR_TRAP_TYPE = 132,
+	DEVLINK_ATTR_TRAP_GENERIC = 133,
+	DEVLINK_ATTR_TRAP_METADATA = 134,
+	DEVLINK_ATTR_TRAP_GROUP_NAME = 135,
+	DEVLINK_ATTR_RELOAD_FAILED = 136,
+	DEVLINK_ATTR_HEALTH_REPORTER_DUMP_TS_NS = 137,
+	DEVLINK_ATTR_NETNS_FD = 138,
+	DEVLINK_ATTR_NETNS_PID = 139,
+	DEVLINK_ATTR_NETNS_ID = 140,
+	DEVLINK_ATTR_HEALTH_REPORTER_AUTO_DUMP = 141,
+	DEVLINK_ATTR_TRAP_POLICER_ID = 142,
+	DEVLINK_ATTR_TRAP_POLICER_RATE = 143,
+	DEVLINK_ATTR_TRAP_POLICER_BURST = 144,
+	DEVLINK_ATTR_PORT_FUNCTION = 145,
+	DEVLINK_ATTR_INFO_BOARD_SERIAL_NUMBER = 146,
+	DEVLINK_ATTR_PORT_LANES = 147,
+	DEVLINK_ATTR_PORT_SPLITTABLE = 148,
+	DEVLINK_ATTR_PORT_EXTERNAL = 149,
+	DEVLINK_ATTR_PORT_CONTROLLER_NUMBER = 150,
+	DEVLINK_ATTR_FLASH_UPDATE_STATUS_TIMEOUT = 151,
+	DEVLINK_ATTR_FLASH_UPDATE_OVERWRITE_MASK = 152,
+	DEVLINK_ATTR_RELOAD_ACTION = 153,
+	DEVLINK_ATTR_RELOAD_ACTIONS_PERFORMED = 154,
+	DEVLINK_ATTR_RELOAD_LIMITS = 155,
+	DEVLINK_ATTR_DEV_STATS = 156,
+	DEVLINK_ATTR_RELOAD_STATS = 157,
+	DEVLINK_ATTR_RELOAD_STATS_ENTRY = 158,
+	DEVLINK_ATTR_RELOAD_STATS_LIMIT = 159,
+	DEVLINK_ATTR_RELOAD_STATS_VALUE = 160,
+	DEVLINK_ATTR_REMOTE_RELOAD_STATS = 161,
+	DEVLINK_ATTR_RELOAD_ACTION_INFO = 162,
+	DEVLINK_ATTR_RELOAD_ACTION_STATS = 163,
+	DEVLINK_ATTR_PORT_PCI_SF_NUMBER = 164,
+	DEVLINK_ATTR_RATE_TYPE = 165,
+	DEVLINK_ATTR_RATE_TX_SHARE = 166,
+	DEVLINK_ATTR_RATE_TX_MAX = 167,
+	DEVLINK_ATTR_RATE_NODE_NAME = 168,
+	DEVLINK_ATTR_RATE_PARENT_NODE_NAME = 169,
+	DEVLINK_ATTR_REGION_MAX_SNAPSHOTS = 170,
+	DEVLINK_ATTR_LINECARD_INDEX = 171,
+	DEVLINK_ATTR_LINECARD_STATE = 172,
+	DEVLINK_ATTR_LINECARD_TYPE = 173,
+	DEVLINK_ATTR_LINECARD_SUPPORTED_TYPES = 174,
+	DEVLINK_ATTR_NESTED_DEVLINK = 175,
+	DEVLINK_ATTR_SELFTESTS = 176,
+	DEVLINK_ATTR_RATE_TX_PRIORITY = 177,
+	DEVLINK_ATTR_RATE_TX_WEIGHT = 178,
+	DEVLINK_ATTR_REGION_DIRECT = 179,
+	__DEVLINK_ATTR_MAX = 180,
+	DEVLINK_ATTR_MAX = 179,
+};
+
+struct devlink_nl_dump_state {
+	unsigned long instance;
+	int idx;
+	union {
+		struct {
+			u64 start_offset;
+		};
+		struct {
+			u64 dump_ts;
+		};
+	};
+};
+
+typedef int devlink_nl_dump_one_func_t(struct sk_buff *, struct devlink *, struct netlink_callback *, int);
+
+struct devlink_reload_combination {
+	enum devlink_reload_action action;
+	enum devlink_reload_limit limit;
+};
+
+enum devlink_info_version_type {
+	DEVLINK_INFO_VERSION_TYPE_NONE = 0,
+	DEVLINK_INFO_VERSION_TYPE_COMPONENT = 1,
+};
+
+struct devlink_info_req {
+	struct sk_buff *msg;
+	void (*version_cb)(const char *, enum devlink_info_version_type, void *);
+	void *version_cb_priv;
+};
+
+enum devlink_command {
+	DEVLINK_CMD_UNSPEC = 0,
+	DEVLINK_CMD_GET = 1,
+	DEVLINK_CMD_SET = 2,
+	DEVLINK_CMD_NEW = 3,
+	DEVLINK_CMD_DEL = 4,
+	DEVLINK_CMD_PORT_GET = 5,
+	DEVLINK_CMD_PORT_SET = 6,
+	DEVLINK_CMD_PORT_NEW = 7,
+	DEVLINK_CMD_PORT_DEL = 8,
+	DEVLINK_CMD_PORT_SPLIT = 9,
+	DEVLINK_CMD_PORT_UNSPLIT = 10,
+	DEVLINK_CMD_SB_GET = 11,
+	DEVLINK_CMD_SB_SET = 12,
+	DEVLINK_CMD_SB_NEW = 13,
+	DEVLINK_CMD_SB_DEL = 14,
+	DEVLINK_CMD_SB_POOL_GET = 15,
+	DEVLINK_CMD_SB_POOL_SET = 16,
+	DEVLINK_CMD_SB_POOL_NEW = 17,
+	DEVLINK_CMD_SB_POOL_DEL = 18,
+	DEVLINK_CMD_SB_PORT_POOL_GET = 19,
+	DEVLINK_CMD_SB_PORT_POOL_SET = 20,
+	DEVLINK_CMD_SB_PORT_POOL_NEW = 21,
+	DEVLINK_CMD_SB_PORT_POOL_DEL = 22,
+	DEVLINK_CMD_SB_TC_POOL_BIND_GET = 23,
+	DEVLINK_CMD_SB_TC_POOL_BIND_SET = 24,
+	DEVLINK_CMD_SB_TC_POOL_BIND_NEW = 25,
+	DEVLINK_CMD_SB_TC_POOL_BIND_DEL = 26,
+	DEVLINK_CMD_SB_OCC_SNAPSHOT = 27,
+	DEVLINK_CMD_SB_OCC_MAX_CLEAR = 28,
+	DEVLINK_CMD_ESWITCH_GET = 29,
+	DEVLINK_CMD_ESWITCH_SET = 30,
+	DEVLINK_CMD_DPIPE_TABLE_GET = 31,
+	DEVLINK_CMD_DPIPE_ENTRIES_GET = 32,
+	DEVLINK_CMD_DPIPE_HEADERS_GET = 33,
+	DEVLINK_CMD_DPIPE_TABLE_COUNTERS_SET = 34,
+	DEVLINK_CMD_RESOURCE_SET = 35,
+	DEVLINK_CMD_RESOURCE_DUMP = 36,
+	DEVLINK_CMD_RELOAD = 37,
+	DEVLINK_CMD_PARAM_GET = 38,
+	DEVLINK_CMD_PARAM_SET = 39,
+	DEVLINK_CMD_PARAM_NEW = 40,
+	DEVLINK_CMD_PARAM_DEL = 41,
+	DEVLINK_CMD_REGION_GET = 42,
+	DEVLINK_CMD_REGION_SET = 43,
+	DEVLINK_CMD_REGION_NEW = 44,
+	DEVLINK_CMD_REGION_DEL = 45,
+	DEVLINK_CMD_REGION_READ = 46,
+	DEVLINK_CMD_PORT_PARAM_GET = 47,
+	DEVLINK_CMD_PORT_PARAM_SET = 48,
+	DEVLINK_CMD_PORT_PARAM_NEW = 49,
+	DEVLINK_CMD_PORT_PARAM_DEL = 50,
+	DEVLINK_CMD_INFO_GET = 51,
+	DEVLINK_CMD_HEALTH_REPORTER_GET = 52,
+	DEVLINK_CMD_HEALTH_REPORTER_SET = 53,
+	DEVLINK_CMD_HEALTH_REPORTER_RECOVER = 54,
+	DEVLINK_CMD_HEALTH_REPORTER_DIAGNOSE = 55,
+	DEVLINK_CMD_HEALTH_REPORTER_DUMP_GET = 56,
+	DEVLINK_CMD_HEALTH_REPORTER_DUMP_CLEAR = 57,
+	DEVLINK_CMD_FLASH_UPDATE = 58,
+	DEVLINK_CMD_FLASH_UPDATE_END = 59,
+	DEVLINK_CMD_FLASH_UPDATE_STATUS = 60,
+	DEVLINK_CMD_TRAP_GET = 61,
+	DEVLINK_CMD_TRAP_SET = 62,
+	DEVLINK_CMD_TRAP_NEW = 63,
+	DEVLINK_CMD_TRAP_DEL = 64,
+	DEVLINK_CMD_TRAP_GROUP_GET = 65,
+	DEVLINK_CMD_TRAP_GROUP_SET = 66,
+	DEVLINK_CMD_TRAP_GROUP_NEW = 67,
+	DEVLINK_CMD_TRAP_GROUP_DEL = 68,
+	DEVLINK_CMD_TRAP_POLICER_GET = 69,
+	DEVLINK_CMD_TRAP_POLICER_SET = 70,
+	DEVLINK_CMD_TRAP_POLICER_NEW = 71,
+	DEVLINK_CMD_TRAP_POLICER_DEL = 72,
+	DEVLINK_CMD_HEALTH_REPORTER_TEST = 73,
+	DEVLINK_CMD_RATE_GET = 74,
+	DEVLINK_CMD_RATE_SET = 75,
+	DEVLINK_CMD_RATE_NEW = 76,
+	DEVLINK_CMD_RATE_DEL = 77,
+	DEVLINK_CMD_LINECARD_GET = 78,
+	DEVLINK_CMD_LINECARD_SET = 79,
+	DEVLINK_CMD_LINECARD_NEW = 80,
+	DEVLINK_CMD_LINECARD_DEL = 81,
+	DEVLINK_CMD_SELFTESTS_GET = 82,
+	DEVLINK_CMD_SELFTESTS_RUN = 83,
+	__DEVLINK_CMD_MAX = 84,
+	DEVLINK_CMD_MAX = 83,
+};
+
+enum devlink_attr_selftest_id {
+	DEVLINK_ATTR_SELFTEST_ID_UNSPEC = 0,
+	DEVLINK_ATTR_SELFTEST_ID_FLASH = 1,
+	__DEVLINK_ATTR_SELFTEST_ID_MAX = 2,
+	DEVLINK_ATTR_SELFTEST_ID_MAX = 1,
+};
+
+enum devlink_multicast_groups {
+	DEVLINK_MCGRP_CONFIG = 0,
+};
+
+enum devlink_attr_selftest_result {
+	DEVLINK_ATTR_SELFTEST_RESULT_UNSPEC = 0,
+	DEVLINK_ATTR_SELFTEST_RESULT = 1,
+	DEVLINK_ATTR_SELFTEST_RESULT_ID = 2,
+	DEVLINK_ATTR_SELFTEST_RESULT_STATUS = 3,
+	__DEVLINK_ATTR_SELFTEST_RESULT_MAX = 4,
+	DEVLINK_ATTR_SELFTEST_RESULT_MAX = 3,
+};
+
+struct devlink_flash_notify {
+	const char *status_msg;
+	const char *component;
+	unsigned long done;
+	unsigned long total;
+	unsigned long timeout;
+};
+
+struct devlink_flash_component_lookup_ctx {
+	const char *lookup_name;
+	bool lookup_name_found;
+};
+
+enum devlink_port_function_attr {
+	DEVLINK_PORT_FUNCTION_ATTR_UNSPEC = 0,
+	DEVLINK_PORT_FUNCTION_ATTR_HW_ADDR = 1,
+	DEVLINK_PORT_FN_ATTR_STATE = 2,
+	DEVLINK_PORT_FN_ATTR_OPSTATE = 3,
+	DEVLINK_PORT_FN_ATTR_CAPS = 4,
+	__DEVLINK_PORT_FUNCTION_ATTR_MAX = 5,
+	DEVLINK_PORT_FUNCTION_ATTR_MAX = 4,
+};
+
+enum devlink_port_fn_attr_cap {
+	DEVLINK_PORT_FN_ATTR_CAP_ROCE_BIT = 0,
+	DEVLINK_PORT_FN_ATTR_CAP_MIGRATABLE_BIT = 1,
+	DEVLINK_PORT_FN_ATTR_CAP_IPSEC_CRYPTO_BIT = 2,
+	DEVLINK_PORT_FN_ATTR_CAP_IPSEC_PACKET_BIT = 3,
+	__DEVLINK_PORT_FN_ATTR_CAPS_MAX = 4,
+};
+
+struct devlink_sb {
+	struct list_head list;
+	unsigned int index;
+	u32 size;
+	u16 ingress_pools_count;
+	u16 egress_pools_count;
+	u16 ingress_tc_count;
+	u16 egress_tc_count;
+};
+
+enum devlink_dpipe_match_type {
+	DEVLINK_DPIPE_MATCH_TYPE_FIELD_EXACT = 0,
+};
+
+enum devlink_dpipe_action_type {
+	DEVLINK_DPIPE_ACTION_TYPE_FIELD_MODIFY = 0,
+};
+
+struct devlink_dpipe_table_ops;
+
+struct devlink_dpipe_table {
+	void *priv;
+	struct list_head list;
+	const char *name;
+	bool counters_enabled;
+	bool counter_control_extern;
+	bool resource_valid;
+	u64 resource_id;
+	u64 resource_units;
+	struct devlink_dpipe_table_ops *table_ops;
+	struct callback_head rcu;
+};
+
+struct devlink_dpipe_dump_ctx;
+
+struct devlink_dpipe_table_ops {
+	int (*actions_dump)(void *, struct sk_buff *);
+	int (*matches_dump)(void *, struct sk_buff *);
+	int (*entries_dump)(void *, bool, struct devlink_dpipe_dump_ctx *);
+	int (*counters_set_update)(void *, bool);
+	u64 (*size_get)(void *);
+};
+
+struct devlink_dpipe_dump_ctx {
+	struct genl_info *info;
+	enum devlink_command cmd;
+	struct sk_buff *skb;
+	struct nlattr *nest;
+	void *hdr;
+};
+
+struct devlink_dpipe_value;
+
+struct devlink_dpipe_entry {
+	u64 index;
+	struct devlink_dpipe_value *match_values;
+	unsigned int match_values_count;
+	struct devlink_dpipe_value *action_values;
+	unsigned int action_values_count;
+	u64 counter;
+	bool counter_valid;
+};
+
+struct devlink_dpipe_action;
+
+struct devlink_dpipe_match;
+
+struct devlink_dpipe_value {
+	union {
+		struct devlink_dpipe_action *action;
+		struct devlink_dpipe_match *match;
+	};
+	unsigned int mapping_value;
+	bool mapping_valid;
+	unsigned int value_size;
+	void *value;
+	void *mask;
+};
+
+struct devlink_dpipe_action {
+	enum devlink_dpipe_action_type type;
+	unsigned int header_index;
+	struct devlink_dpipe_header *header;
+	unsigned int field_id;
+};
+
+struct devlink_dpipe_match {
+	enum devlink_dpipe_match_type type;
+	unsigned int header_index;
+	struct devlink_dpipe_header *header;
+	unsigned int field_id;
+};
+
+enum devlink_resource_unit {
+	DEVLINK_RESOURCE_UNIT_ENTRY = 0,
+};
+
+struct devlink_resource_size_params {
+	u64 size_min;
+	u64 size_max;
+	u64 size_granularity;
+	enum devlink_resource_unit unit;
+};
+
+typedef u64 devlink_resource_occ_get_t(void *);
+
+struct devlink_resource {
+	const char *name;
+	u64 id;
+	u64 size;
+	u64 size_new;
+	bool size_valid;
+	struct devlink_resource *parent;
+	struct devlink_resource_size_params size_params;
+	struct list_head list;
+	struct list_head resource_list;
+	devlink_resource_occ_get_t *occ_get;
+	void *occ_get_priv;
+};
+
+enum devlink_param_type {
+	DEVLINK_PARAM_TYPE_U8 = 0,
+	DEVLINK_PARAM_TYPE_U16 = 1,
+	DEVLINK_PARAM_TYPE_U32 = 2,
+	DEVLINK_PARAM_TYPE_STRING = 3,
+	DEVLINK_PARAM_TYPE_BOOL = 4,
+};
+
+struct devlink_param_gset_ctx;
+
+union devlink_param_value;
+
+struct devlink_param {
+	u32 id;
+	const char *name;
+	bool generic;
+	enum devlink_param_type type;
+	unsigned long supported_cmodes;
+	int (*get)(struct devlink *, u32, struct devlink_param_gset_ctx *);
+	int (*set)(struct devlink *, u32, struct devlink_param_gset_ctx *);
+	int (*validate)(struct devlink *, u32, union devlink_param_value, struct netlink_ext_ack *);
+};
+
+union devlink_param_value {
+	u8 vu8;
+	u16 vu16;
+	u32 vu32;
+	char vstr[32];
+	bool vbool;
+};
+
+enum devlink_param_cmode {
+	DEVLINK_PARAM_CMODE_RUNTIME = 0,
+	DEVLINK_PARAM_CMODE_DRIVERINIT = 1,
+	DEVLINK_PARAM_CMODE_PERMANENT = 2,
+	__DEVLINK_PARAM_CMODE_MAX = 3,
+	DEVLINK_PARAM_CMODE_MAX = 2,
+};
+
+struct devlink_param_gset_ctx {
+	union devlink_param_value val;
+	enum devlink_param_cmode cmode;
+};
+
+enum devlink_param_generic_id {
+	DEVLINK_PARAM_GENERIC_ID_INT_ERR_RESET = 0,
+	DEVLINK_PARAM_GENERIC_ID_MAX_MACS = 1,
+	DEVLINK_PARAM_GENERIC_ID_ENABLE_SRIOV = 2,
+	DEVLINK_PARAM_GENERIC_ID_REGION_SNAPSHOT = 3,
+	DEVLINK_PARAM_GENERIC_ID_IGNORE_ARI = 4,
+	DEVLINK_PARAM_GENERIC_ID_MSIX_VEC_PER_PF_MAX = 5,
+	DEVLINK_PARAM_GENERIC_ID_MSIX_VEC_PER_PF_MIN = 6,
+	DEVLINK_PARAM_GENERIC_ID_FW_LOAD_POLICY = 7,
+	DEVLINK_PARAM_GENERIC_ID_RESET_DEV_ON_DRV_PROBE = 8,
+	DEVLINK_PARAM_GENERIC_ID_ENABLE_ROCE = 9,
+	DEVLINK_PARAM_GENERIC_ID_ENABLE_REMOTE_DEV_RESET = 10,
+	DEVLINK_PARAM_GENERIC_ID_ENABLE_ETH = 11,
+	DEVLINK_PARAM_GENERIC_ID_ENABLE_RDMA = 12,
+	DEVLINK_PARAM_GENERIC_ID_ENABLE_VNET = 13,
+	DEVLINK_PARAM_GENERIC_ID_ENABLE_IWARP = 14,
+	DEVLINK_PARAM_GENERIC_ID_IO_EQ_SIZE = 15,
+	DEVLINK_PARAM_GENERIC_ID_EVENT_EQ_SIZE = 16,
+	__DEVLINK_PARAM_GENERIC_ID_MAX = 17,
+	DEVLINK_PARAM_GENERIC_ID_MAX = 16,
+};
+
+struct devlink_param_item {
+	struct list_head list;
+	const struct devlink_param *param;
+	union devlink_param_value driverinit_value;
+	bool driverinit_value_valid;
+	union devlink_param_value driverinit_value_new;
+	bool driverinit_value_new_valid;
+};
+
+struct devlink_region_ops;
+
+struct devlink_port_region_ops;
+
+struct devlink_region {
+	struct devlink *devlink;
+	struct devlink_port *port;
+	struct list_head list;
+	union {
+		const struct devlink_region_ops *ops;
+		const struct devlink_port_region_ops *port_ops;
+	};
+	struct mutex snapshot_lock;
+	struct list_head snapshot_list;
+	u32 max_snapshots;
+	u32 cur_snapshots;
+	u64 size;
+};
+
+struct devlink_region_ops {
+	const char *name;
+	void (*destructor)(const void *);
+	int (*snapshot)(struct devlink *, const struct devlink_region_ops *, struct netlink_ext_ack *, u8 **);
+	int (*read)(struct devlink *, const struct devlink_region_ops *, struct netlink_ext_ack *, u64, u32, u8 *);
+	void *priv;
+};
+
+struct devlink_port_region_ops {
+	const char *name;
+	void (*destructor)(const void *);
+	int (*snapshot)(struct devlink_port *, const struct devlink_port_region_ops *, struct netlink_ext_ack *, u8 **);
+	int (*read)(struct devlink_port *, const struct devlink_port_region_ops *, struct netlink_ext_ack *, u64, u32, u8 *);
+	void *priv;
+};
+
+struct devlink_snapshot {
+	struct list_head list;
+	struct devlink_region *region;
+	u8 *data;
+	u32 id;
+};
+
+typedef int devlink_chunk_fill_t(void *, u8 *, u32, u64, struct netlink_ext_ack *);
+
+enum devlink_health_reporter_state {
+	DEVLINK_HEALTH_REPORTER_STATE_HEALTHY = 0,
+	DEVLINK_HEALTH_REPORTER_STATE_ERROR = 1,
+};
+
+struct devlink_health_reporter_ops;
+
+struct devlink_fmsg;
+
+struct devlink_health_reporter {
+	struct list_head list;
+	void *priv;
+	const struct devlink_health_reporter_ops *ops;
+	struct devlink *devlink;
+	struct devlink_port *devlink_port;
+	struct devlink_fmsg *dump_fmsg;
+	u64 graceful_period;
+	bool auto_recover;
+	bool auto_dump;
+	u8 health_state;
+	u64 dump_ts;
+	u64 dump_real_ts;
+	u64 error_count;
+	u64 recovery_count;
+	u64 last_recovery_ts;
+};
+
+struct devlink_health_reporter_ops {
+	char *name;
+	int (*recover)(struct devlink_health_reporter *, void *, struct netlink_ext_ack *);
+	int (*dump)(struct devlink_health_reporter *, struct devlink_fmsg *, void *, struct netlink_ext_ack *);
+	int (*diagnose)(struct devlink_health_reporter *, struct devlink_fmsg *, struct netlink_ext_ack *);
+	int (*test)(struct devlink_health_reporter *, struct netlink_ext_ack *);
+};
+
+struct devlink_fmsg {
+	struct list_head item_list;
+	bool putting_binary;
+};
+
+struct devlink_fmsg_item {
+	struct list_head list;
+	int attrtype;
+	u8 nla_type;
+	u16 len;
+	int value[0];
+};
+
+enum {
+	DEVLINK_ATTR_TRAP_METADATA_TYPE_IN_PORT = 0,
+	DEVLINK_ATTR_TRAP_METADATA_TYPE_FA_COOKIE = 1,
+};
+
+enum {
+	DEVLINK_ATTR_STATS_RX_PACKETS = 0,
+	DEVLINK_ATTR_STATS_RX_BYTES = 1,
+	DEVLINK_ATTR_STATS_RX_DROPPED = 2,
+	__DEVLINK_ATTR_STATS_MAX = 3,
+	DEVLINK_ATTR_STATS_MAX = 2,
+};
+
+enum devlink_trap_generic_id {
+	DEVLINK_TRAP_GENERIC_ID_SMAC_MC = 0,
+	DEVLINK_TRAP_GENERIC_ID_VLAN_TAG_MISMATCH = 1,
+	DEVLINK_TRAP_GENERIC_ID_INGRESS_VLAN_FILTER = 2,
+	DEVLINK_TRAP_GENERIC_ID_INGRESS_STP_FILTER = 3,
+	DEVLINK_TRAP_GENERIC_ID_EMPTY_TX_LIST = 4,
+	DEVLINK_TRAP_GENERIC_ID_PORT_LOOPBACK_FILTER = 5,
+	DEVLINK_TRAP_GENERIC_ID_BLACKHOLE_ROUTE = 6,
+	DEVLINK_TRAP_GENERIC_ID_TTL_ERROR = 7,
+	DEVLINK_TRAP_GENERIC_ID_TAIL_DROP = 8,
+	DEVLINK_TRAP_GENERIC_ID_NON_IP_PACKET = 9,
+	DEVLINK_TRAP_GENERIC_ID_UC_DIP_MC_DMAC = 10,
+	DEVLINK_TRAP_GENERIC_ID_DIP_LB = 11,
+	DEVLINK_TRAP_GENERIC_ID_SIP_MC = 12,
+	DEVLINK_TRAP_GENERIC_ID_SIP_LB = 13,
+	DEVLINK_TRAP_GENERIC_ID_CORRUPTED_IP_HDR = 14,
+	DEVLINK_TRAP_GENERIC_ID_IPV4_SIP_BC = 15,
+	DEVLINK_TRAP_GENERIC_ID_IPV6_MC_DIP_RESERVED_SCOPE = 16,
+	DEVLINK_TRAP_GENERIC_ID_IPV6_MC_DIP_INTERFACE_LOCAL_SCOPE = 17,
+	DEVLINK_TRAP_GENERIC_ID_MTU_ERROR = 18,
+	DEVLINK_TRAP_GENERIC_ID_UNRESOLVED_NEIGH = 19,
+	DEVLINK_TRAP_GENERIC_ID_RPF = 20,
+	DEVLINK_TRAP_GENERIC_ID_REJECT_ROUTE = 21,
+	DEVLINK_TRAP_GENERIC_ID_IPV4_LPM_UNICAST_MISS = 22,
+	DEVLINK_TRAP_GENERIC_ID_IPV6_LPM_UNICAST_MISS = 23,
+	DEVLINK_TRAP_GENERIC_ID_NON_ROUTABLE = 24,
+	DEVLINK_TRAP_GENERIC_ID_DECAP_ERROR = 25,
+	DEVLINK_TRAP_GENERIC_ID_OVERLAY_SMAC_MC = 26,
+	DEVLINK_TRAP_GENERIC_ID_INGRESS_FLOW_ACTION_DROP = 27,
+	DEVLINK_TRAP_GENERIC_ID_EGRESS_FLOW_ACTION_DROP = 28,
+	DEVLINK_TRAP_GENERIC_ID_STP = 29,
+	DEVLINK_TRAP_GENERIC_ID_LACP = 30,
+	DEVLINK_TRAP_GENERIC_ID_LLDP = 31,
+	DEVLINK_TRAP_GENERIC_ID_IGMP_QUERY = 32,
+	DEVLINK_TRAP_GENERIC_ID_IGMP_V1_REPORT = 33,
+	DEVLINK_TRAP_GENERIC_ID_IGMP_V2_REPORT = 34,
+	DEVLINK_TRAP_GENERIC_ID_IGMP_V3_REPORT = 35,
+	DEVLINK_TRAP_GENERIC_ID_IGMP_V2_LEAVE = 36,
+	DEVLINK_TRAP_GENERIC_ID_MLD_QUERY = 37,
+	DEVLINK_TRAP_GENERIC_ID_MLD_V1_REPORT = 38,
+	DEVLINK_TRAP_GENERIC_ID_MLD_V2_REPORT = 39,
+	DEVLINK_TRAP_GENERIC_ID_MLD_V1_DONE = 40,
+	DEVLINK_TRAP_GENERIC_ID_IPV4_DHCP = 41,
+	DEVLINK_TRAP_GENERIC_ID_IPV6_DHCP = 42,
+	DEVLINK_TRAP_GENERIC_ID_ARP_REQUEST = 43,
+	DEVLINK_TRAP_GENERIC_ID_ARP_RESPONSE = 44,
+	DEVLINK_TRAP_GENERIC_ID_ARP_OVERLAY = 45,
+	DEVLINK_TRAP_GENERIC_ID_IPV6_NEIGH_SOLICIT = 46,
+	DEVLINK_TRAP_GENERIC_ID_IPV6_NEIGH_ADVERT = 47,
+	DEVLINK_TRAP_GENERIC_ID_IPV4_BFD = 48,
+	DEVLINK_TRAP_GENERIC_ID_IPV6_BFD = 49,
+	DEVLINK_TRAP_GENERIC_ID_IPV4_OSPF = 50,
+	DEVLINK_TRAP_GENERIC_ID_IPV6_OSPF = 51,
+	DEVLINK_TRAP_GENERIC_ID_IPV4_BGP = 52,
+	DEVLINK_TRAP_GENERIC_ID_IPV6_BGP = 53,
+	DEVLINK_TRAP_GENERIC_ID_IPV4_VRRP = 54,
+	DEVLINK_TRAP_GENERIC_ID_IPV6_VRRP = 55,
+	DEVLINK_TRAP_GENERIC_ID_IPV4_PIM = 56,
+	DEVLINK_TRAP_GENERIC_ID_IPV6_PIM = 57,
+	DEVLINK_TRAP_GENERIC_ID_UC_LB = 58,
+	DEVLINK_TRAP_GENERIC_ID_LOCAL_ROUTE = 59,
+	DEVLINK_TRAP_GENERIC_ID_EXTERNAL_ROUTE = 60,
+	DEVLINK_TRAP_GENERIC_ID_IPV6_UC_DIP_LINK_LOCAL_SCOPE = 61,
+	DEVLINK_TRAP_GENERIC_ID_IPV6_DIP_ALL_NODES = 62,
+	DEVLINK_TRAP_GENERIC_ID_IPV6_DIP_ALL_ROUTERS = 63,
+	DEVLINK_TRAP_GENERIC_ID_IPV6_ROUTER_SOLICIT = 64,
+	DEVLINK_TRAP_GENERIC_ID_IPV6_ROUTER_ADVERT = 65,
+	DEVLINK_TRAP_GENERIC_ID_IPV6_REDIRECT = 66,
+	DEVLINK_TRAP_GENERIC_ID_IPV4_ROUTER_ALERT = 67,
+	DEVLINK_TRAP_GENERIC_ID_IPV6_ROUTER_ALERT = 68,
+	DEVLINK_TRAP_GENERIC_ID_PTP_EVENT = 69,
+	DEVLINK_TRAP_GENERIC_ID_PTP_GENERAL = 70,
+	DEVLINK_TRAP_GENERIC_ID_FLOW_ACTION_SAMPLE = 71,
+	DEVLINK_TRAP_GENERIC_ID_FLOW_ACTION_TRAP = 72,
+	DEVLINK_TRAP_GENERIC_ID_EARLY_DROP = 73,
+	DEVLINK_TRAP_GENERIC_ID_VXLAN_PARSING = 74,
+	DEVLINK_TRAP_GENERIC_ID_LLC_SNAP_PARSING = 75,
+	DEVLINK_TRAP_GENERIC_ID_VLAN_PARSING = 76,
+	DEVLINK_TRAP_GENERIC_ID_PPPOE_PPP_PARSING = 77,
+	DEVLINK_TRAP_GENERIC_ID_MPLS_PARSING = 78,
+	DEVLINK_TRAP_GENERIC_ID_ARP_PARSING = 79,
+	DEVLINK_TRAP_GENERIC_ID_IP_1_PARSING = 80,
+	DEVLINK_TRAP_GENERIC_ID_IP_N_PARSING = 81,
+	DEVLINK_TRAP_GENERIC_ID_GRE_PARSING = 82,
+	DEVLINK_TRAP_GENERIC_ID_UDP_PARSING = 83,
+	DEVLINK_TRAP_GENERIC_ID_TCP_PARSING = 84,
+	DEVLINK_TRAP_GENERIC_ID_IPSEC_PARSING = 85,
+	DEVLINK_TRAP_GENERIC_ID_SCTP_PARSING = 86,
+	DEVLINK_TRAP_GENERIC_ID_DCCP_PARSING = 87,
+	DEVLINK_TRAP_GENERIC_ID_GTP_PARSING = 88,
+	DEVLINK_TRAP_GENERIC_ID_ESP_PARSING = 89,
+	DEVLINK_TRAP_GENERIC_ID_BLACKHOLE_NEXTHOP = 90,
+	DEVLINK_TRAP_GENERIC_ID_DMAC_FILTER = 91,
+	DEVLINK_TRAP_GENERIC_ID_EAPOL = 92,
+	DEVLINK_TRAP_GENERIC_ID_LOCKED_PORT = 93,
+	__DEVLINK_TRAP_GENERIC_ID_MAX = 94,
+	DEVLINK_TRAP_GENERIC_ID_MAX = 93,
+};
+
+enum devlink_trap_group_generic_id {
+	DEVLINK_TRAP_GROUP_GENERIC_ID_L2_DROPS = 0,
+	DEVLINK_TRAP_GROUP_GENERIC_ID_L3_DROPS = 1,
+	DEVLINK_TRAP_GROUP_GENERIC_ID_L3_EXCEPTIONS = 2,
+	DEVLINK_TRAP_GROUP_GENERIC_ID_BUFFER_DROPS = 3,
+	DEVLINK_TRAP_GROUP_GENERIC_ID_TUNNEL_DROPS = 4,
+	DEVLINK_TRAP_GROUP_GENERIC_ID_ACL_DROPS = 5,
+	DEVLINK_TRAP_GROUP_GENERIC_ID_STP = 6,
+	DEVLINK_TRAP_GROUP_GENERIC_ID_LACP = 7,
+	DEVLINK_TRAP_GROUP_GENERIC_ID_LLDP = 8,
+	DEVLINK_TRAP_GROUP_GENERIC_ID_MC_SNOOPING = 9,
+	DEVLINK_TRAP_GROUP_GENERIC_ID_DHCP = 10,
+	DEVLINK_TRAP_GROUP_GENERIC_ID_NEIGH_DISCOVERY = 11,
+	DEVLINK_TRAP_GROUP_GENERIC_ID_BFD = 12,
+	DEVLINK_TRAP_GROUP_GENERIC_ID_OSPF = 13,
+	DEVLINK_TRAP_GROUP_GENERIC_ID_BGP = 14,
+	DEVLINK_TRAP_GROUP_GENERIC_ID_VRRP = 15,
+	DEVLINK_TRAP_GROUP_GENERIC_ID_PIM = 16,
+	DEVLINK_TRAP_GROUP_GENERIC_ID_UC_LB = 17,
+	DEVLINK_TRAP_GROUP_GENERIC_ID_LOCAL_DELIVERY = 18,
+	DEVLINK_TRAP_GROUP_GENERIC_ID_EXTERNAL_DELIVERY = 19,
+	DEVLINK_TRAP_GROUP_GENERIC_ID_IPV6 = 20,
+	DEVLINK_TRAP_GROUP_GENERIC_ID_PTP_EVENT = 21,
+	DEVLINK_TRAP_GROUP_GENERIC_ID_PTP_GENERAL = 22,
+	DEVLINK_TRAP_GROUP_GENERIC_ID_ACL_SAMPLE = 23,
+	DEVLINK_TRAP_GROUP_GENERIC_ID_ACL_TRAP = 24,
+	DEVLINK_TRAP_GROUP_GENERIC_ID_PARSER_ERROR_DROPS = 25,
+	DEVLINK_TRAP_GROUP_GENERIC_ID_EAPOL = 26,
+	__DEVLINK_TRAP_GROUP_GENERIC_ID_MAX = 27,
+	DEVLINK_TRAP_GROUP_GENERIC_ID_MAX = 26,
+};
+
+struct devlink_trap_policer_item;
+
+struct devlink_stats;
+
+struct devlink_trap_group_item {
+	const struct devlink_trap_group *group;
+	struct devlink_trap_policer_item *policer_item;
+	struct list_head list;
+	struct devlink_stats __attribute__((btf_type_tag("percpu"))) *stats;
+};
+
+struct devlink_trap_policer_item {
+	const struct devlink_trap_policer *policer;
+	u64 rate;
+	u64 burst;
+	struct list_head list;
+};
+
+struct devlink_stats {
+	u64_stats_t rx_bytes;
+	u64_stats_t rx_packets;
+	struct u64_stats_sync syncp;
+};
+
+struct devlink_trap_item {
+	const struct devlink_trap *trap;
+	struct devlink_trap_group_item *group_item;
+	struct list_head list;
+	enum devlink_trap_action action;
+	struct devlink_stats __attribute__((btf_type_tag("percpu"))) *stats;
+	void *priv;
+};
+
+struct devlink_linecard_type {
+	const char *type;
+	const void *priv;
+};
+
+enum vlan_flags {
+	VLAN_FLAG_REORDER_HDR = 1,
+	VLAN_FLAG_GVRP = 2,
+	VLAN_FLAG_LOOSE_BINDING = 4,
+	VLAN_FLAG_MVRP = 8,
+	VLAN_FLAG_BRIDGE_BINDING = 16,
+};
+
+enum vlan_protos {
+	VLAN_PROTO_8021Q = 0,
+	VLAN_PROTO_8021AD = 1,
+	VLAN_PROTO_NUM = 2,
+};
+
+struct vlan_pcpu_stats {
+	u64_stats_t rx_packets;
+	u64_stats_t rx_bytes;
+	u64_stats_t rx_multicast;
+	u64_stats_t tx_packets;
+	u64_stats_t tx_bytes;
+	struct u64_stats_sync syncp;
+	u32 rx_errors;
+	u32 tx_dropped;
+};
+
+struct vlan_vid_info {
+	struct list_head list;
+	__be16 proto;
+	u16 vid;
+	int refcount;
+};
+
+struct vlan_priority_tci_mapping;
+
+struct vlan_dev_priv {
+	unsigned int nr_ingress_mappings;
+	u32 ingress_priority_map[8];
+	unsigned int nr_egress_mappings;
+	struct vlan_priority_tci_mapping *egress_priority_map[16];
+	__be16 vlan_proto;
+	u16 vlan_id;
+	u16 flags;
+	struct net_device *real_dev;
+	netdevice_tracker dev_tracker;
+	unsigned char real_dev_addr[6];
+	struct proc_dir_entry *dent;
+	struct vlan_pcpu_stats __attribute__((btf_type_tag("percpu"))) *vlan_pcpu_stats;
+};
+
+struct vlan_priority_tci_mapping {
+	u32 priority;
+	u16 vlan_qos;
+	struct vlan_priority_tci_mapping *next;
+};
+
+enum nl80211_chan_width {
+	NL80211_CHAN_WIDTH_20_NOHT = 0,
+	NL80211_CHAN_WIDTH_20 = 1,
+	NL80211_CHAN_WIDTH_40 = 2,
+	NL80211_CHAN_WIDTH_80 = 3,
+	NL80211_CHAN_WIDTH_80P80 = 4,
+	NL80211_CHAN_WIDTH_160 = 5,
+	NL80211_CHAN_WIDTH_5 = 6,
+	NL80211_CHAN_WIDTH_10 = 7,
+	NL80211_CHAN_WIDTH_1 = 8,
+	NL80211_CHAN_WIDTH_2 = 9,
+	NL80211_CHAN_WIDTH_4 = 10,
+	NL80211_CHAN_WIDTH_8 = 11,
+	NL80211_CHAN_WIDTH_16 = 12,
+	NL80211_CHAN_WIDTH_320 = 13,
+};
+
+enum ieee80211_edmg_bw_config {
+	IEEE80211_EDMG_BW_CONFIG_4 = 4,
+	IEEE80211_EDMG_BW_CONFIG_5 = 5,
+	IEEE80211_EDMG_BW_CONFIG_6 = 6,
+	IEEE80211_EDMG_BW_CONFIG_7 = 7,
+	IEEE80211_EDMG_BW_CONFIG_8 = 8,
+	IEEE80211_EDMG_BW_CONFIG_9 = 9,
+	IEEE80211_EDMG_BW_CONFIG_10 = 10,
+	IEEE80211_EDMG_BW_CONFIG_11 = 11,
+	IEEE80211_EDMG_BW_CONFIG_12 = 12,
+	IEEE80211_EDMG_BW_CONFIG_13 = 13,
+	IEEE80211_EDMG_BW_CONFIG_14 = 14,
+	IEEE80211_EDMG_BW_CONFIG_15 = 15,
+};
+
+struct ieee80211_edmg {
+	u8 channels;
+	enum ieee80211_edmg_bw_config bw_config;
+};
+
+struct ieee80211_channel;
+
+struct cfg80211_chan_def {
+	struct ieee80211_channel *chan;
+	enum nl80211_chan_width width;
+	u32 center_freq1;
+	u32 center_freq2;
+	struct ieee80211_edmg edmg;
+	u16 freq1_offset;
+};
+
+struct cfg80211_internal_bss;
+
+enum nl80211_iftype {
+	NL80211_IFTYPE_UNSPECIFIED = 0,
+	NL80211_IFTYPE_ADHOC = 1,
+	NL80211_IFTYPE_STATION = 2,
+	NL80211_IFTYPE_AP = 3,
+	NL80211_IFTYPE_AP_VLAN = 4,
+	NL80211_IFTYPE_WDS = 5,
+	NL80211_IFTYPE_MONITOR = 6,
+	NL80211_IFTYPE_MESH_POINT = 7,
+	NL80211_IFTYPE_P2P_CLIENT = 8,
+	NL80211_IFTYPE_P2P_GO = 9,
+	NL80211_IFTYPE_P2P_DEVICE = 10,
+	NL80211_IFTYPE_OCB = 11,
+	NL80211_IFTYPE_NAN = 12,
+	NUM_NL80211_IFTYPES = 13,
+	NL80211_IFTYPE_MAX = 12,
+};
+
+struct cfg80211_conn;
+
+struct cfg80211_cached_keys;
+
+enum ieee80211_bss_type {
+	IEEE80211_BSS_TYPE_ESS = 0,
+	IEEE80211_BSS_TYPE_PBSS = 1,
+	IEEE80211_BSS_TYPE_IBSS = 2,
+	IEEE80211_BSS_TYPE_MBSS = 3,
+	IEEE80211_BSS_TYPE_ANY = 4,
+};
+
+struct wiphy;
+
+struct wiphy_work;
+
+typedef void (*wiphy_work_func_t)(struct wiphy *, struct wiphy_work *);
+
+struct wiphy_work {
+	struct list_head entry;
+	wiphy_work_func_t func;
+};
+
+struct cfg80211_cqm_config;
+
+struct wireless_dev {
+	struct wiphy *wiphy;
+	enum nl80211_iftype iftype;
+	struct list_head list;
+	struct net_device *netdev;
+	u32 identifier;
+	struct list_head mgmt_registrations;
+	u8 mgmt_registrations_need_update: 1;
+	struct mutex mtx;
+	bool use_4addr;
+	bool is_running;
+	bool registered;
+	bool registering;
+	u8 address[6];
+	struct cfg80211_conn *conn;
+	struct cfg80211_cached_keys *connect_keys;
+	enum ieee80211_bss_type conn_bss_type;
+	u32 conn_owner_nlportid;
+	struct work_struct disconnect_wk;
+	u8 disconnect_bssid[6];
+	struct list_head event_list;
+	spinlock_t event_lock;
+	u8 connected: 1;
+	bool ps;
+	int ps_timeout;
+	u32 ap_unexpected_nlportid;
+	u32 owner_nlportid;
+	bool nl_owner_dead;
+	bool cac_started;
+	unsigned long cac_start_time;
+	unsigned int cac_time_ms;
+	struct wiphy_work cqm_rssi_work;
+	struct cfg80211_cqm_config __attribute__((btf_type_tag("rcu"))) *cqm_config;
+	struct list_head pmsr_list;
+	spinlock_t pmsr_lock;
+	struct work_struct pmsr_free_wk;
+	unsigned long unprot_beacon_reported;
+	union {
+		struct {
+			u8 connected_addr[6];
+			u8 ssid[32];
+			u8 ssid_len;
+			long: 0;
+		} client;
+		struct {
+			int beacon_interval;
+			struct cfg80211_chan_def preset_chandef;
+			struct cfg80211_chan_def chandef;
+			u8 id[32];
+			u8 id_len;
+			u8 id_up_len;
+		} mesh;
+		struct {
+			struct cfg80211_chan_def preset_chandef;
+			u8 ssid[32];
+			u8 ssid_len;
+		} ap;
+		struct {
+			struct cfg80211_internal_bss *current_bss;
+			struct cfg80211_chan_def chandef;
+			int beacon_interval;
+			u8 ssid[32];
+			u8 ssid_len;
+		} ibss;
+		struct {
+			struct cfg80211_chan_def chandef;
+		} ocb;
+	} u;
+	struct {
+		u8 addr[6];
+		union {
+			struct {
+				unsigned int beacon_interval;
+				struct cfg80211_chan_def chandef;
+			} ap;
+			struct {
+				struct cfg80211_internal_bss *current_bss;
+			} client;
+		};
+	} links[15];
+	u16 valid_links;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+enum cfg80211_signal_type {
+	CFG80211_SIGNAL_TYPE_NONE = 0,
+	CFG80211_SIGNAL_TYPE_MBM = 1,
+	CFG80211_SIGNAL_TYPE_UNSPEC = 2,
+};
+
+struct rfkill;
+
+struct mac_address;
+
+struct ieee80211_txrx_stypes;
+
+struct ieee80211_iface_combination;
+
+struct wiphy_iftype_akm_suites;
+
+struct wiphy_wowlan_support;
+
+struct cfg80211_wowlan;
+
+struct wiphy_iftype_ext_capab;
+
+struct ieee80211_supported_band;
+
+struct regulatory_request;
+
+struct ieee80211_regdomain;
+
+struct ieee80211_ht_cap;
+
+struct ieee80211_vht_cap;
+
+struct wiphy_coalesce_support;
+
+struct wiphy_vendor_command;
+
+struct nl80211_vendor_cmd_info;
+
+struct cfg80211_pmsr_capabilities;
+
+struct cfg80211_sar_capa;
+
+struct wiphy {
+	struct mutex mtx;
+	u8 perm_addr[6];
+	u8 addr_mask[6];
+	struct mac_address *addresses;
+	const struct ieee80211_txrx_stypes *mgmt_stypes;
+	const struct ieee80211_iface_combination *iface_combinations;
+	int n_iface_combinations;
+	u16 software_iftypes;
+	u16 n_addresses;
+	u16 interface_modes;
+	u16 max_acl_mac_addrs;
+	u32 flags;
+	u32 regulatory_flags;
+	u32 features;
+	u8 ext_features[9];
+	u32 ap_sme_capa;
+	enum cfg80211_signal_type signal_type;
+	int bss_priv_size;
+	u8 max_scan_ssids;
+	u8 max_sched_scan_reqs;
+	u8 max_sched_scan_ssids;
+	u8 max_match_sets;
+	u16 max_scan_ie_len;
+	u16 max_sched_scan_ie_len;
+	u32 max_sched_scan_plans;
+	u32 max_sched_scan_plan_interval;
+	u32 max_sched_scan_plan_iterations;
+	int n_cipher_suites;
+	const u32 *cipher_suites;
+	int n_akm_suites;
+	const u32 *akm_suites;
+	const struct wiphy_iftype_akm_suites *iftype_akm_suites;
+	unsigned int num_iftype_akm_suites;
+	u8 retry_short;
+	u8 retry_long;
+	u32 frag_threshold;
+	u32 rts_threshold;
+	u8 coverage_class;
+	char fw_version[32];
+	u32 hw_version;
+	const struct wiphy_wowlan_support *wowlan;
+	struct cfg80211_wowlan *wowlan_config;
+	u16 max_remain_on_channel_duration;
+	u8 max_num_pmkids;
+	u32 available_antennas_tx;
+	u32 available_antennas_rx;
+	u32 probe_resp_offload;
+	const u8 *extended_capabilities;
+	const u8 *extended_capabilities_mask;
+	u8 extended_capabilities_len;
+	const struct wiphy_iftype_ext_capab *iftype_ext_capab;
+	unsigned int num_iftype_ext_capab;
+	const void *privid;
+	struct ieee80211_supported_band *bands[6];
+	void (*reg_notifier)(struct wiphy *, struct regulatory_request *);
+	const struct ieee80211_regdomain __attribute__((btf_type_tag("rcu"))) *regd;
+	struct device dev;
+	bool registered;
+	struct dentry *debugfsdir;
+	const struct ieee80211_ht_cap *ht_capa_mod_mask;
+	const struct ieee80211_vht_cap *vht_capa_mod_mask;
+	struct list_head wdev_list;
+	possible_net_t _net;
+	const struct wiphy_coalesce_support *coalesce;
+	const struct wiphy_vendor_command *vendor_commands;
+	const struct nl80211_vendor_cmd_info *vendor_events;
+	int n_vendor_commands;
+	int n_vendor_events;
+	u16 max_ap_assoc_sta;
+	u8 max_num_csa_counters;
+	u32 bss_select_support;
+	u8 nan_supported_bands;
+	u32 txq_limit;
+	u32 txq_memory_limit;
+	u32 txq_quantum;
+	unsigned long tx_queue_len;
+	u8 support_mbssid: 1;
+	u8 support_only_he_mbssid: 1;
+	const struct cfg80211_pmsr_capabilities *pmsr_capa;
+	struct {
+		u64 peer;
+		u64 vif;
+		u8 max_retry;
+	} tid_config_support;
+	u8 max_data_retry_count;
+	const struct cfg80211_sar_capa *sar_capa;
+	struct rfkill *rfkill;
+	u8 mbssid_max_interfaces;
+	u8 ema_max_profile_periodicity;
+	u16 max_num_akm_suites;
+	u16 hw_timestamp_max_peers;
+	u64 android_kabi_reserved1;
+	long: 64;
+	char priv[0];
+};
+
+struct mac_address {
+	u8 addr[6];
+};
+
+struct ieee80211_txrx_stypes {
+	u16 tx;
+	u16 rx;
+};
+
+struct ieee80211_iface_limit;
+
+struct ieee80211_iface_combination {
+	const struct ieee80211_iface_limit *limits;
+	u32 num_different_channels;
+	u16 max_interfaces;
+	u8 n_limits;
+	bool beacon_int_infra_match;
+	u8 radar_detect_widths;
+	u8 radar_detect_regions;
+	u32 beacon_int_min_gcd;
+};
+
+struct ieee80211_iface_limit {
+	u16 max;
+	u16 types;
+};
+
+struct wiphy_iftype_akm_suites {
+	u16 iftypes_mask;
+	const u32 *akm_suites;
+	int n_akm_suites;
+};
+
+struct wiphy_wowlan_tcp_support;
+
+struct wiphy_wowlan_support {
+	u32 flags;
+	int n_patterns;
+	int pattern_max_len;
+	int pattern_min_len;
+	int max_pkt_offset;
+	int max_nd_match_sets;
+	const struct wiphy_wowlan_tcp_support *tcp;
+};
+
+struct nl80211_wowlan_tcp_data_token_feature;
+
+struct wiphy_wowlan_tcp_support {
+	const struct nl80211_wowlan_tcp_data_token_feature *tok;
+	u32 data_payload_max;
+	u32 data_interval_max;
+	u32 wake_payload_max;
+	bool seq;
+};
+
+struct nl80211_wowlan_tcp_data_token_feature {
+	__u32 min_len;
+	__u32 max_len;
+	__u32 bufsize;
+};
+
+struct cfg80211_pkt_pattern;
+
+struct cfg80211_wowlan_tcp;
+
+struct cfg80211_sched_scan_request;
+
+struct cfg80211_wowlan {
+	bool any;
+	bool disconnect;
+	bool magic_pkt;
+	bool gtk_rekey_failure;
+	bool eap_identity_req;
+	bool four_way_handshake;
+	bool rfkill_release;
+	struct cfg80211_pkt_pattern *patterns;
+	struct cfg80211_wowlan_tcp *tcp;
+	int n_patterns;
+	struct cfg80211_sched_scan_request *nd_config;
+};
+
+struct cfg80211_pkt_pattern {
+	const u8 *mask;
+	const u8 *pattern;
+	int pattern_len;
+	int pkt_offset;
+};
+
+struct nl80211_wowlan_tcp_data_seq {
+	__u32 start;
+	__u32 offset;
+	__u32 len;
+};
+
+struct nl80211_wowlan_tcp_data_token {
+	__u32 offset;
+	__u32 len;
+	__u8 token_stream[0];
+};
+
+struct cfg80211_wowlan_tcp {
+	struct socket *sock;
+	__be32 src;
+	__be32 dst;
+	u16 src_port;
+	u16 dst_port;
+	u8 dst_mac[6];
+	int payload_len;
+	const u8 *payload;
+	struct nl80211_wowlan_tcp_data_seq payload_seq;
+	u32 data_interval;
+	u32 wake_len;
+	const u8 *wake_data;
+	const u8 *wake_mask;
+	u32 tokens_size;
+	struct nl80211_wowlan_tcp_data_token payload_tok;
+};
+
+enum nl80211_band {
+	NL80211_BAND_2GHZ = 0,
+	NL80211_BAND_5GHZ = 1,
+	NL80211_BAND_60GHZ = 2,
+	NL80211_BAND_6GHZ = 3,
+	NL80211_BAND_S1GHZ = 4,
+	NL80211_BAND_LC = 5,
+	NUM_NL80211_BANDS = 6,
+};
+
+struct cfg80211_bss_select_adjust {
+	enum nl80211_band band;
+	s8 delta;
+};
+
+struct cfg80211_ssid;
+
+struct cfg80211_match_set;
+
+struct cfg80211_sched_scan_plan;
+
+struct cfg80211_sched_scan_request {
+	u64 reqid;
+	struct cfg80211_ssid *ssids;
+	int n_ssids;
+	u32 n_channels;
+	const u8 *ie;
+	size_t ie_len;
+	u32 flags;
+	struct cfg80211_match_set *match_sets;
+	int n_match_sets;
+	s32 min_rssi_thold;
+	u32 delay;
+	struct cfg80211_sched_scan_plan *scan_plans;
+	int n_scan_plans;
+	u8 mac_addr[6];
+	u8 mac_addr_mask[6];
+	bool relative_rssi_set;
+	s8 relative_rssi;
+	struct cfg80211_bss_select_adjust rssi_adjust;
+	struct wiphy *wiphy;
+	struct net_device *dev;
+	unsigned long scan_start;
+	bool report_results;
+	struct callback_head callback_head;
+	u32 owner_nlportid;
+	bool nl_owner_dead;
+	struct list_head list;
+	u64 android_kabi_reserved1;
+	struct ieee80211_channel *channels[0];
+};
+
+struct cfg80211_ssid {
+	u8 ssid[32];
+	u8 ssid_len;
+};
+
+struct cfg80211_match_set {
+	struct cfg80211_ssid ssid;
+	u8 bssid[6];
+	s32 rssi_thold;
+	s32 per_band_rssi_thold[6];
+};
+
+struct cfg80211_sched_scan_plan {
+	u32 interval;
+	u32 iterations;
+};
+
+enum nl80211_dfs_state {
+	NL80211_DFS_USABLE = 0,
+	NL80211_DFS_UNAVAILABLE = 1,
+	NL80211_DFS_AVAILABLE = 2,
+};
+
+struct ieee80211_channel {
+	enum nl80211_band band;
+	u32 center_freq;
+	u16 freq_offset;
+	u16 hw_value;
+	u32 flags;
+	int max_antenna_gain;
+	int max_power;
+	int max_reg_power;
+	bool beacon_found;
+	u32 orig_flags;
+	int orig_mag;
+	int orig_mpwr;
+	enum nl80211_dfs_state dfs_state;
+	unsigned long dfs_state_entered;
+	unsigned int dfs_cac_ms;
+	s8 psd;
+};
+
+struct wiphy_iftype_ext_capab {
+	enum nl80211_iftype iftype;
+	const u8 *extended_capabilities;
+	const u8 *extended_capabilities_mask;
+	u8 extended_capabilities_len;
+	u16 eml_capabilities;
+	u16 mld_capa_and_ops;
+};
+
+struct ieee80211_mcs_info {
+	u8 rx_mask[10];
+	__le16 rx_highest;
+	u8 tx_params;
+	u8 reserved[3];
+};
+
+struct ieee80211_sta_ht_cap {
+	u16 cap;
+	bool ht_supported;
+	u8 ampdu_factor;
+	u8 ampdu_density;
+	struct ieee80211_mcs_info mcs;
+	short: 0;
+} __attribute__((packed));
+
+struct ieee80211_vht_mcs_info {
+	__le16 rx_mcs_map;
+	__le16 rx_highest;
+	__le16 tx_mcs_map;
+	__le16 tx_highest;
+};
+
+struct ieee80211_sta_vht_cap {
+	bool vht_supported;
+	u32 cap;
+	struct ieee80211_vht_mcs_info vht_mcs;
+};
+
+struct ieee80211_sta_s1g_cap {
+	bool s1g;
+	u8 cap[10];
+	u8 nss_mcs[5];
+};
+
+struct ieee80211_rate;
+
+struct ieee80211_sband_iftype_data;
+
+struct ieee80211_supported_band {
+	struct ieee80211_channel *channels;
+	struct ieee80211_rate *bitrates;
+	enum nl80211_band band;
+	int n_channels;
+	int n_bitrates;
+	struct ieee80211_sta_ht_cap ht_cap;
+	struct ieee80211_sta_vht_cap vht_cap;
+	struct ieee80211_sta_s1g_cap s1g_cap;
+	struct ieee80211_edmg edmg_cap;
+	u16 n_iftype_data;
+	const struct ieee80211_sband_iftype_data *iftype_data;
+};
+
+struct ieee80211_rate {
+	u32 flags;
+	u16 bitrate;
+	u16 hw_value;
+	u16 hw_value_short;
+};
+
+struct ieee80211_he_cap_elem {
+	u8 mac_cap_info[6];
+	u8 phy_cap_info[11];
+};
+
+struct ieee80211_he_mcs_nss_supp {
+	__le16 rx_mcs_80;
+	__le16 tx_mcs_80;
+	__le16 rx_mcs_160;
+	__le16 tx_mcs_160;
+	__le16 rx_mcs_80p80;
+	__le16 tx_mcs_80p80;
+};
+
+struct ieee80211_sta_he_cap {
+	bool has_he;
+	struct ieee80211_he_cap_elem he_cap_elem;
+	struct ieee80211_he_mcs_nss_supp he_mcs_nss_supp;
+	u8 ppe_thres[25];
+} __attribute__((packed));
+
+struct ieee80211_he_6ghz_capa {
+	__le16 capa;
+};
+
+struct ieee80211_eht_cap_elem_fixed {
+	u8 mac_cap_info[2];
+	u8 phy_cap_info[9];
+};
+
+struct ieee80211_eht_mcs_nss_supp_20mhz_only {
+	union {
+		struct {
+			u8 rx_tx_mcs7_max_nss;
+			u8 rx_tx_mcs9_max_nss;
+			u8 rx_tx_mcs11_max_nss;
+			u8 rx_tx_mcs13_max_nss;
+		};
+		u8 rx_tx_max_nss[4];
+	};
+};
+
+struct ieee80211_eht_mcs_nss_supp_bw {
+	union {
+		struct {
+			u8 rx_tx_mcs9_max_nss;
+			u8 rx_tx_mcs11_max_nss;
+			u8 rx_tx_mcs13_max_nss;
+		};
+		u8 rx_tx_max_nss[3];
+	};
+};
+
+struct ieee80211_eht_mcs_nss_supp {
+	union {
+		struct ieee80211_eht_mcs_nss_supp_20mhz_only only_20mhz;
+		struct {
+			struct ieee80211_eht_mcs_nss_supp_bw _80;
+			struct ieee80211_eht_mcs_nss_supp_bw _160;
+			struct ieee80211_eht_mcs_nss_supp_bw _320;
+		} bw;
+	};
+};
+
+struct ieee80211_sta_eht_cap {
+	bool has_eht;
+	struct ieee80211_eht_cap_elem_fixed eht_cap_elem;
+	struct ieee80211_eht_mcs_nss_supp eht_mcs_nss_supp;
+	u8 eht_ppe_thres[32];
+};
+
+struct ieee80211_sband_iftype_data {
+	u16 types_mask;
+	struct ieee80211_sta_he_cap he_cap;
+	struct ieee80211_he_6ghz_capa he_6ghz_capa;
+	struct ieee80211_sta_eht_cap eht_cap;
+	struct {
+		const u8 *data;
+		unsigned int len;
+	} vendor_elems;
+} __attribute__((packed));
+
+enum nl80211_reg_initiator {
+	NL80211_REGDOM_SET_BY_CORE = 0,
+	NL80211_REGDOM_SET_BY_USER = 1,
+	NL80211_REGDOM_SET_BY_DRIVER = 2,
+	NL80211_REGDOM_SET_BY_COUNTRY_IE = 3,
+};
+
+enum nl80211_user_reg_hint_type {
+	NL80211_USER_REG_HINT_USER = 0,
+	NL80211_USER_REG_HINT_CELL_BASE = 1,
+	NL80211_USER_REG_HINT_INDOOR = 2,
+};
+
+enum nl80211_dfs_regions {
+	NL80211_DFS_UNSET = 0,
+	NL80211_DFS_FCC = 1,
+	NL80211_DFS_ETSI = 2,
+	NL80211_DFS_JP = 3,
+};
+
+enum environment_cap {
+	ENVIRON_ANY = 0,
+	ENVIRON_INDOOR = 1,
+	ENVIRON_OUTDOOR = 2,
+};
+
+struct regulatory_request {
+	struct callback_head callback_head;
+	int wiphy_idx;
+	enum nl80211_reg_initiator initiator;
+	enum nl80211_user_reg_hint_type user_reg_hint_type;
+	char alpha2[3];
+	enum nl80211_dfs_regions dfs_region;
+	bool intersect;
+	bool processed;
+	enum environment_cap country_ie_env;
+	struct list_head list;
+};
+
+struct ieee80211_freq_range {
+	u32 start_freq_khz;
+	u32 end_freq_khz;
+	u32 max_bandwidth_khz;
+};
+
+struct ieee80211_power_rule {
+	u32 max_antenna_gain;
+	u32 max_eirp;
+};
+
+struct ieee80211_wmm_ac {
+	u16 cw_min;
+	u16 cw_max;
+	u16 cot;
+	u8 aifsn;
+};
+
+struct ieee80211_wmm_rule {
+	struct ieee80211_wmm_ac client[4];
+	struct ieee80211_wmm_ac ap[4];
+};
+
+struct ieee80211_reg_rule {
+	struct ieee80211_freq_range freq_range;
+	struct ieee80211_power_rule power_rule;
+	struct ieee80211_wmm_rule wmm_rule;
+	u32 flags;
+	u32 dfs_cac_ms;
+	bool has_wmm;
+	s8 psd;
+};
+
+struct ieee80211_regdomain {
+	struct callback_head callback_head;
+	u32 n_reg_rules;
+	char alpha2[3];
+	enum nl80211_dfs_regions dfs_region;
+	struct ieee80211_reg_rule reg_rules[0];
+};
+
+struct ieee80211_ht_cap {
+	__le16 cap_info;
+	u8 ampdu_params_info;
+	struct ieee80211_mcs_info mcs;
+	__le16 extended_ht_cap_info;
+	__le32 tx_BF_cap_info;
+	u8 antenna_selection_info;
+} __attribute__((packed));
+
+struct ieee80211_vht_cap {
+	__le32 vht_cap_info;
+	struct ieee80211_vht_mcs_info supp_mcs;
+};
+
+struct wiphy_coalesce_support {
+	int n_rules;
+	int max_delay;
+	int n_patterns;
+	int pattern_max_len;
+	int pattern_min_len;
+	int max_pkt_offset;
+};
+
+struct nl80211_vendor_cmd_info {
+	__u32 vendor_id;
+	__u32 subcmd;
+};
+
+struct wiphy_vendor_command {
+	struct nl80211_vendor_cmd_info info;
+	u32 flags;
+	int (*doit)(struct wiphy *, struct wireless_dev *, const void *, int);
+	int (*dumpit)(struct wiphy *, struct wireless_dev *, struct sk_buff *, const void *, int, unsigned long *);
+	const struct nla_policy *policy;
+	unsigned int maxattr;
+	u64 android_kabi_reserved1;
+};
+
+struct cfg80211_pmsr_capabilities {
+	unsigned int max_peers;
+	u8 report_ap_tsf: 1;
+	u8 randomize_mac_addr: 1;
+	struct {
+		u32 preambles;
+		u32 bandwidths;
+		s8 max_bursts_exponent;
+		u8 max_ftms_per_burst;
+		u8 supported: 1;
+		u8 asap: 1;
+		u8 non_asap: 1;
+		u8 request_lci: 1;
+		u8 request_civicloc: 1;
+		u8 trigger_based: 1;
+		u8 non_trigger_based: 1;
+	} ftm;
+};
+
+enum nl80211_sar_type {
+	NL80211_SAR_TYPE_POWER = 0,
+	NUM_NL80211_SAR_TYPE = 1,
+};
+
+struct cfg80211_sar_freq_ranges;
+
+struct cfg80211_sar_capa {
+	enum nl80211_sar_type type;
+	u32 num_freq_ranges;
+	const struct cfg80211_sar_freq_ranges *freq_ranges;
+};
+
+struct cfg80211_sar_freq_ranges {
+	u32 start_freq;
+	u32 end_freq;
+};
+
+struct iw_ioctl_description {
+	__u8 header_type;
+	__u8 token_type;
+	__u16 token_size;
+	__u16 min_tokens;
+	__u16 max_tokens;
+	__u32 flags;
+};
+
+struct compat_iw_point {
+	compat_caddr_t pointer;
+	__u16 length;
+	__u16 flags;
+};
+
+struct iwreq {
+	union {
+		char ifrn_name[16];
+	} ifr_ifrn;
+	union iwreq_data u;
+};
+
+typedef int (*wext_ioctl_func)(struct net_device *, struct iwreq *, unsigned int, struct iw_request_info *, iw_handler);
+
+struct __compat_iw_event {
+	__u16 len;
+	__u16 cmd;
+	union {
+		compat_caddr_t pointer;
+		struct {
+			struct {} __empty_ptr_bytes;
+			__u8 ptr_bytes[0];
+		};
+	};
+};
+
+struct iw_event {
+	__u16 len;
+	__u16 cmd;
+	union iwreq_data u;
+};
+
+struct iw_encode_ext {
+	__u32 ext_flags;
+	__u8 tx_seq[8];
+	__u8 rx_seq[8];
+	struct sockaddr addr;
+	__u16 alg;
+	__u16 key_len;
+	__u8 key[0];
+};
+
+struct iw_thrspy {
+	struct sockaddr addr;
+	struct iw_quality qual;
+	struct iw_quality low;
+	struct iw_quality high;
+};
+
+struct vsock_tap {
+	struct net_device *dev;
+	struct module *module;
+	struct list_head list;
+};
+
+struct vsock_diag_msg {
+	__u8 vdiag_family;
+	__u8 vdiag_type;
+	__u8 vdiag_state;
+	__u8 vdiag_shutdown;
+	__u32 vdiag_src_cid;
+	__u32 vdiag_src_port;
+	__u32 vdiag_dst_cid;
+	__u32 vdiag_dst_port;
+	__u32 vdiag_ino;
+	__u32 vdiag_cookie[2];
+};
+
+struct vsock_diag_req {
+	__u8 sdiag_family;
+	__u8 sdiag_protocol;
+	__u16 pad;
+	__u32 vdiag_states;
+	__u32 vdiag_ino;
+	__u32 vdiag_show;
+	__u32 vdiag_cookie[2];
+};
+
+typedef void (*btf_trace_virtio_transport_alloc_pkt)(void *, __u32, __u32, __u32, __u32, __u32, __u16, __u16, __u32);
+
+typedef void (*btf_trace_virtio_transport_recv_pkt)(void *, __u32, __u32, __u32, __u32, __u32, __u16, __u16, __u32, __u32, __u32);
+
+enum virtio_vsock_op {
+	VIRTIO_VSOCK_OP_INVALID = 0,
+	VIRTIO_VSOCK_OP_REQUEST = 1,
+	VIRTIO_VSOCK_OP_RESPONSE = 2,
+	VIRTIO_VSOCK_OP_RST = 3,
+	VIRTIO_VSOCK_OP_SHUTDOWN = 4,
+	VIRTIO_VSOCK_OP_RW = 5,
+	VIRTIO_VSOCK_OP_CREDIT_UPDATE = 6,
+	VIRTIO_VSOCK_OP_CREDIT_REQUEST = 7,
+};
+
+enum virtio_vsock_shutdown {
+	VIRTIO_VSOCK_SHUTDOWN_RCV = 1,
+	VIRTIO_VSOCK_SHUTDOWN_SEND = 2,
+};
+
+enum af_vsockmon_transport {
+	AF_VSOCK_TRANSPORT_UNKNOWN = 0,
+	AF_VSOCK_TRANSPORT_NO_INFO = 1,
+	AF_VSOCK_TRANSPORT_VIRTIO = 2,
+};
+
+enum af_vsockmon_op {
+	AF_VSOCK_OP_UNKNOWN = 0,
+	AF_VSOCK_OP_CONNECT = 1,
+	AF_VSOCK_OP_DISCONNECT = 2,
+	AF_VSOCK_OP_CONTROL = 3,
+	AF_VSOCK_OP_PAYLOAD = 4,
+};
+
+enum virtio_vsock_type {
+	VIRTIO_VSOCK_TYPE_STREAM = 1,
+	VIRTIO_VSOCK_TYPE_SEQPACKET = 2,
+};
+
+struct trace_event_raw_virtio_transport_alloc_pkt {
+	struct trace_entry ent;
+	__u32 src_cid;
+	__u32 src_port;
+	__u32 dst_cid;
+	__u32 dst_port;
+	__u32 len;
+	__u16 type;
+	__u16 op;
+	__u32 flags;
+	char __data[0];
+};
+
+struct trace_event_raw_virtio_transport_recv_pkt {
+	struct trace_entry ent;
+	__u32 src_cid;
+	__u32 src_port;
+	__u32 dst_cid;
+	__u32 dst_port;
+	__u32 len;
+	__u16 type;
+	__u16 op;
+	__u32 flags;
+	__u32 buf_alloc;
+	__u32 fwd_cnt;
+	char __data[0];
+};
+
+struct virtio_vsock_sock {
+	struct vsock_sock *vsk;
+	spinlock_t tx_lock;
+	spinlock_t rx_lock;
+	u32 tx_cnt;
+	u32 peer_fwd_cnt;
+	u32 peer_buf_alloc;
+	u32 fwd_cnt;
+	u32 last_fwd_cnt;
+	u32 rx_bytes;
+	u32 buf_alloc;
+	struct sk_buff_head rx_queue;
+	u32 msg_count;
+};
+
+struct virtio_vsock_pkt_info {
+	u32 remote_cid;
+	u32 remote_port;
+	struct vsock_sock *vsk;
+	struct msghdr *msg;
+	u32 pkt_len;
+	u16 type;
+	u16 op;
+	u32 flags;
+	bool reply;
+};
+
+struct trace_event_data_offsets_virtio_transport_alloc_pkt {};
+
+struct trace_event_data_offsets_virtio_transport_recv_pkt {};
+
+struct af_vsockmon_hdr {
+	__le64 src_cid;
+	__le64 dst_cid;
+	__le32 src_port;
+	__le32 dst_port;
+	__le16 op;
+	__le16 transport;
+	__le16 len;
+	__u8 reserved[2];
+};
+
+struct vsock_loopback {
+	struct workqueue_struct *workqueue;
+	struct sk_buff_head pkt_queue;
+	struct work_struct pkt_work;
+};
+
+struct xdp_ring;
+
+struct xsk_queue {
+	u32 ring_mask;
+	u32 nentries;
+	u32 cached_prod;
+	u32 cached_cons;
+	struct xdp_ring *ring;
+	u64 invalid_descs;
+	u64 queue_empty_descs;
+	size_t ring_vmalloc_size;
+};
+
+struct xdp_ring {
+	u32 producer;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	u32 pad1;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	u32 consumer;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	u32 pad2;
+	u32 flags;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	u32 pad3;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct xdp_rxtx_ring {
+	struct xdp_ring ptrs;
+	struct xdp_desc desc[0];
+};
+
+struct xdp_umem_ring {
+	struct xdp_ring ptrs;
+	u64 desc[0];
+};
+
+struct xsk_map;
+
+struct xsk_map_node {
+	struct list_head node;
+	struct xsk_map *map;
+	struct xdp_sock __attribute__((btf_type_tag("rcu"))) **map_entry;
+};
+
+struct xsk_map {
+	struct bpf_map map;
+	spinlock_t lock;
+	atomic_t count;
+	struct xdp_sock __attribute__((btf_type_tag("rcu"))) *xsk_map[0];
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct sockaddr_xdp {
+	__u16 sxdp_family;
+	__u16 sxdp_flags;
+	__u32 sxdp_ifindex;
+	__u32 sxdp_queue_id;
+	__u32 sxdp_shared_umem_fd;
+};
+
+struct xdp_ring_offset_v1 {
+	__u64 producer;
+	__u64 consumer;
+	__u64 desc;
+};
+
+struct parsed_desc {
+	u32 mb;
+	u32 valid;
+};
+
+struct xdp_umem_reg {
+	__u64 addr;
+	__u64 len;
+	__u32 chunk_size;
+	__u32 headroom;
+	__u32 flags;
+};
+
+struct xdp_ring_offset {
+	__u64 producer;
+	__u64 consumer;
+	__u64 desc;
+	__u64 flags;
+};
+
+struct xdp_mmap_offsets {
+	struct xdp_ring_offset rx;
+	struct xdp_ring_offset tx;
+	struct xdp_ring_offset fr;
+	struct xdp_ring_offset cr;
+};
+
+struct xdp_options {
+	__u32 flags;
+};
+
+struct xdp_mmap_offsets_v1 {
+	struct xdp_ring_offset_v1 rx;
+	struct xdp_ring_offset_v1 tx;
+	struct xdp_ring_offset_v1 fr;
+	struct xdp_ring_offset_v1 cr;
+};
+
+struct xdp_statistics {
+	__u64 rx_dropped;
+	__u64 rx_invalid_descs;
+	__u64 tx_invalid_descs;
+	__u64 rx_ring_full;
+	__u64 rx_fill_ring_empty_descs;
+	__u64 tx_ring_empty_descs;
+};
+
+struct xsk_dma_map {
+	dma_addr_t *dma_pages;
+	struct device *dev;
+	struct net_device *netdev;
+	refcount_t users;
+	struct list_head list;
+	u32 dma_pages_cnt;
+	bool dma_need_sync;
+};
+
+typedef unsigned long cycles_t;
+
+typedef struct elf32_hdr Elf32_Ehdr;
+
+typedef struct elf32_phdr Elf32_Phdr;
+
+typedef struct elf64_phdr Elf64_Phdr;
+
+typedef struct elf32_note Elf32_Nhdr;
+
+struct compress_format {
+	unsigned char magic[2];
+	const char *name;
+	decompress_fn decompressor;
+};
+
+enum cpio_fields {
+	C_MAGIC = 0,
+	C_INO = 1,
+	C_MODE = 2,
+	C_UID = 3,
+	C_GID = 4,
+	C_NLINK = 5,
+	C_MTIME = 6,
+	C_FILESIZE = 7,
+	C_MAJ = 8,
+	C_MIN = 9,
+	C_RMAJ = 10,
+	C_RMIN = 11,
+	C_NAMESIZE = 12,
+	C_CHKSUM = 13,
+	C_NFIELDS = 14,
+};
+
+struct cpio_data {
+	void *data;
+	size_t size;
+	char name[18];
+};
+
+struct fdt_errtabent {
+	const char *str;
+};
+
+struct fprop_local_single {
+	unsigned long events;
+	unsigned int period;
+	raw_spinlock_t lock;
+};
+
+struct ida_bitmap {
+	unsigned long bitmap[16];
+};
+
+struct klist_waiter {
+	struct list_head list;
+	struct klist_node *node;
+	struct task_struct *process;
+	int woken;
+};
+
+struct uevent_sock {
+	struct list_head list;
+	struct sock *sk;
+};
+
+typedef void (*btf_trace_ma_op)(void *, const char *, struct ma_state *);
+
+typedef void (*btf_trace_ma_read)(void *, const char *, struct ma_state *);
+
+typedef void (*btf_trace_ma_write)(void *, const char *, struct ma_state *, unsigned long, void *);
+
+enum maple_type {
+	maple_dense = 0,
+	maple_leaf_64 = 1,
+	maple_range_64 = 2,
+	maple_arange_64 = 3,
+};
+
+struct maple_pnode;
+
+struct maple_metadata {
+	unsigned char end;
+	unsigned char gap;
+};
+
+struct maple_range_64 {
+	struct maple_pnode *parent;
+	unsigned long pivot[15];
+	union {
+		void __attribute__((btf_type_tag("rcu"))) *slot[16];
+		struct {
+			void __attribute__((btf_type_tag("rcu"))) *pad[15];
+			struct maple_metadata meta;
+		};
+	};
+};
+
+struct maple_arange_64 {
+	struct maple_pnode *parent;
+	unsigned long pivot[9];
+	void __attribute__((btf_type_tag("rcu"))) *slot[10];
+	unsigned long gap[10];
+	struct maple_metadata meta;
+};
+
+struct maple_node {
+	union {
+		struct {
+			struct maple_pnode *parent;
+			void __attribute__((btf_type_tag("rcu"))) *slot[31];
+		};
+		struct {
+			void *pad;
+			struct callback_head rcu;
+			struct maple_enode *piv_parent;
+			unsigned char parent_slot;
+			enum maple_type type;
+			unsigned char slot_len;
+			unsigned int ma_flags;
+		};
+		struct maple_range_64 mr64;
+		struct maple_arange_64 ma64;
+		struct maple_alloc alloc;
+	};
+};
+
+struct trace_event_raw_ma_op {
+	struct trace_entry ent;
+	const char *fn;
+	unsigned long min;
+	unsigned long max;
+	unsigned long index;
+	unsigned long last;
+	void *node;
+	char __data[0];
+};
+
+struct trace_event_raw_ma_read {
+	struct trace_entry ent;
+	const char *fn;
+	unsigned long min;
+	unsigned long max;
+	unsigned long index;
+	unsigned long last;
+	void *node;
+	char __data[0];
+};
+
+struct trace_event_raw_ma_write {
+	struct trace_entry ent;
+	const char *fn;
+	unsigned long min;
+	unsigned long max;
+	unsigned long index;
+	unsigned long last;
+	unsigned long piv;
+	void *val;
+	void *node;
+	char __data[0];
+};
+
+struct maple_topiary {
+	struct maple_pnode *parent;
+	struct maple_enode *next;
+};
+
+struct ma_wr_state {
+	struct ma_state *mas;
+	struct maple_node *node;
+	unsigned long r_min;
+	unsigned long r_max;
+	enum maple_type type;
+	unsigned char offset_end;
+	unsigned char node_end;
+	unsigned long *pivots;
+	unsigned long end_piv;
+	void __attribute__((btf_type_tag("rcu"))) **slots;
+	void *entry;
+	void *content;
+};
+
+struct maple_big_node {
+	struct maple_pnode *parent;
+	unsigned long pivot[33];
+	union {
+		struct maple_enode *slot[34];
+		struct {
+			unsigned long padding[21];
+			unsigned long gap[21];
+		};
+	};
+	unsigned char b_end;
+	enum maple_type type;
+};
+
+struct ma_topiary;
+
+struct maple_subtree_state {
+	struct ma_state *orig_l;
+	struct ma_state *orig_r;
+	struct ma_state *l;
+	struct ma_state *m;
+	struct ma_state *r;
+	struct ma_topiary *free;
+	struct ma_topiary *destroy;
+	struct maple_big_node *bn;
+};
+
+struct ma_topiary {
+	struct maple_enode *head;
+	struct maple_enode *tail;
+	struct maple_tree *mtree;
+};
+
+struct trace_event_data_offsets_ma_op {};
+
+struct trace_event_data_offsets_ma_read {};
+
+struct trace_event_data_offsets_ma_write {};
+
+struct radix_tree_preload {
+	local_lock_t lock;
+	unsigned int nr;
+	struct xa_node *nodes;
+};
+
+struct printf_spec {
+	unsigned int type: 8;
+	int field_width: 24;
+	unsigned int flags: 8;
+	unsigned int base: 8;
+	int precision: 16;
+};
+
+struct page_flags_fields {
+	int width;
+	int shift;
+	int mask;
+	const struct printf_spec *spec;
+	const char *name;
+};
+
+enum format_type {
+	FORMAT_TYPE_NONE = 0,
+	FORMAT_TYPE_WIDTH = 1,
+	FORMAT_TYPE_PRECISION = 2,
+	FORMAT_TYPE_CHAR = 3,
+	FORMAT_TYPE_STR = 4,
+	FORMAT_TYPE_PTR = 5,
+	FORMAT_TYPE_PERCENT_CHAR = 6,
+	FORMAT_TYPE_INVALID = 7,
+	FORMAT_TYPE_LONG_LONG = 8,
+	FORMAT_TYPE_ULONG = 9,
+	FORMAT_TYPE_LONG = 10,
+	FORMAT_TYPE_UBYTE = 11,
+	FORMAT_TYPE_BYTE = 12,
+	FORMAT_TYPE_USHORT = 13,
+	FORMAT_TYPE_SHORT = 14,
+	FORMAT_TYPE_UINT = 15,
+	FORMAT_TYPE_INT = 16,
+	FORMAT_TYPE_SIZE_T = 17,
+	FORMAT_TYPE_PTRDIFF = 18,
+};
+
+struct efi_generic_dev_path {
+	u8 type;
+	u8 sub_type;
+	u16 length;
+};
+
+typedef union {
+	struct {
+		u32 revision;
+		efi_handle_t parent_handle;
+		efi_system_table_t *system_table;
+		efi_handle_t device_handle;
+		void *file_path;
+		void *reserved;
+		u32 load_options_size;
+		void *load_options;
+		void *image_base;
+		__u64 image_size;
+		unsigned int image_code_type;
+		unsigned int image_data_type;
+		efi_status_t (*unload)(efi_handle_t);
+	};
+	struct {
+		u32 revision;
+		u32 parent_handle;
+		u32 system_table;
+		u32 device_handle;
+		u32 file_path;
+		u32 reserved;
+		u32 load_options_size;
+		u32 load_options;
+		u32 image_base;
+		__u64 image_size;
+		u32 image_code_type;
+		u32 image_data_type;
+		u32 unload;
+	} mixed_mode;
+} efi_loaded_image_t;
+
+struct efi_vendor_dev_path {
+	struct efi_generic_dev_path header;
+	efi_guid_t vendorguid;
+	u8 vendordata[0];
+};
+
+enum efistub_event {
+	EFISTUB_EVT_INITRD = 0,
+	EFISTUB_EVT_LOAD_OPTIONS = 1,
+	EFISTUB_EVT_COUNT = 2,
+};
+
+struct efi_tcg2_event {
+	u32 event_size;
+	struct {
+		u32 header_size;
+		u16 header_version;
+		u32 pcr_index;
+		u32 event_type;
+	} __attribute__((packed)) event_header;
+} __attribute__((packed));
+
+typedef struct efi_tcg2_event efi_tcg2_event_t;
+
+struct efi_tcg2_tagged_event {
+	u32 tagged_event_id;
+	u32 tagged_event_data_size;
+};
+
+typedef struct efi_tcg2_tagged_event efi_tcg2_tagged_event_t;
+
+struct efi_measured_event {
+	efi_tcg2_event_t event_data;
+	efi_tcg2_tagged_event_t tagged_event;
+	u8 tagged_event_data[0];
+} __attribute__((packed));
+
+struct efi_boot_memmap {
+	unsigned long map_size;
+	unsigned long desc_size;
+	u32 desc_ver;
+	unsigned long map_key;
+	unsigned long buff_size;
+	efi_memory_desc_t map[0];
+};
+
+union efi_load_file_protocol;
+
+typedef union efi_load_file_protocol efi_load_file_protocol_t;
+
+union efi_load_file_protocol {
+	struct {
+		efi_status_t (*load_file)(efi_load_file_protocol_t *, efi_device_path_protocol_t *, bool, unsigned long *, void *);
+	};
+	struct {
+		u32 load_file;
+	} mixed_mode;
+};
+
+typedef union efi_load_file_protocol efi_load_file2_protocol_t;
+
+typedef struct {
+	u32 attributes;
+	u16 file_path_list_length;
+	const efi_char16_t *description;
+	const efi_device_path_protocol_t *file_path_list;
+	u32 optional_data_size;
+	const void *optional_data;
+} efi_load_option_unpacked_t;
+
+typedef struct {
+	u32 attributes;
+	u16 file_path_list_length;
+	u8 variable_data[0];
+} __attribute__((packed)) efi_load_option_t;
+
+typedef u32 efi_tcg2_event_log_format;
+
+union efi_tcg2_protocol;
+
+typedef union efi_tcg2_protocol efi_tcg2_protocol_t;
+
+union efi_tcg2_protocol {
+	struct {
+		void *get_capability;
+		efi_status_t (*get_event_log)(efi_tcg2_protocol_t *, efi_tcg2_event_log_format, efi_physical_addr_t *, efi_physical_addr_t *, efi_bool_t *);
+		efi_status_t (*hash_log_extend_event)(efi_tcg2_protocol_t *, u64, efi_physical_addr_t, u64, const efi_tcg2_event_t *);
+		void *submit_command;
+		void *get_active_pcr_banks;
+		void *set_active_pcr_banks;
+		void *get_result_of_set_active_pcr_banks;
+	};
+	struct {
+		u32 get_capability;
+		u32 get_event_log;
+		u32 hash_log_extend_event;
+		u32 submit_command;
+		u32 get_active_pcr_banks;
+		u32 set_active_pcr_banks;
+		u32 get_result_of_set_active_pcr_banks;
+	} mixed_mode;
+};
+
+typedef efi_status_t (*efi_exit_boot_map_processing)(struct efi_boot_memmap *, void *);
+
+union efi_memory_attribute_protocol;
+
+typedef union efi_memory_attribute_protocol efi_memory_attribute_protocol_t;
+
+union efi_memory_attribute_protocol {
+	struct {
+		efi_status_t (*get_memory_attributes)(efi_memory_attribute_protocol_t *, efi_physical_addr_t, u64, u64 *);
+		efi_status_t (*set_memory_attributes)(efi_memory_attribute_protocol_t *, efi_physical_addr_t, u64, u64);
+		efi_status_t (*clear_memory_attributes)(efi_memory_attribute_protocol_t *, efi_physical_addr_t, u64, u64);
+	};
+	struct {
+		u32 get_memory_attributes;
+		u32 set_memory_attributes;
+		u32 clear_memory_attributes;
+	} mixed_mode;
+};
+
+struct exit_boot_struct {
+	struct efi_boot_memmap *boot_memmap;
+	efi_memory_desc_t *runtime_map;
+	int runtime_entry_count;
+	void *new_fdt_addr;
+};
+
+union efi_device_path_from_text_protocol {
+	struct {
+		efi_device_path_protocol_t * (*convert_text_to_device_node)(const efi_char16_t *);
+		efi_device_path_protocol_t * (*convert_text_to_device_path)(const efi_char16_t *);
+	};
+	struct {
+		u32 convert_text_to_device_node;
+		u32 convert_text_to_device_path;
+	} mixed_mode;
+};
+
+typedef union efi_device_path_from_text_protocol efi_device_path_from_text_protocol_t;
+
+struct efi_file_path_dev_path {
+	struct efi_generic_dev_path header;
+	efi_char16_t filename[0];
+};
+
+union efi_file_protocol;
+
+typedef union efi_file_protocol efi_file_protocol_t;
+
+union efi_file_protocol {
+	struct {
+		u64 revision;
+		efi_status_t (*open)(efi_file_protocol_t *, efi_file_protocol_t **, efi_char16_t *, u64, u64);
+		efi_status_t (*close)(efi_file_protocol_t *);
+		efi_status_t (*delete)(efi_file_protocol_t *);
+		efi_status_t (*read)(efi_file_protocol_t *, unsigned long *, void *);
+		efi_status_t (*write)(efi_file_protocol_t *, unsigned long, void *);
+		efi_status_t (*get_position)(efi_file_protocol_t *, u64 *);
+		efi_status_t (*set_position)(efi_file_protocol_t *, u64);
+		efi_status_t (*get_info)(efi_file_protocol_t *, efi_guid_t *, unsigned long *, void *);
+		efi_status_t (*set_info)(efi_file_protocol_t *, efi_guid_t *, unsigned long, void *);
+		efi_status_t (*flush)(efi_file_protocol_t *);
+	};
+	struct {
+		u64 revision;
+		u32 open;
+		u32 close;
+		u32 delete;
+		u32 read;
+		u32 write;
+		u32 get_position;
+		u32 set_position;
+		u32 get_info;
+		u32 set_info;
+		u32 flush;
+	} mixed_mode;
+};
+
+typedef struct {
+	u64 size;
+	u64 file_size;
+	u64 phys_size;
+	efi_time_t create_time;
+	efi_time_t last_access_time;
+	efi_time_t modification_time;
+	__u64 attribute;
+	efi_char16_t filename[0];
+} efi_file_info_t;
+
+struct finfo {
+	efi_file_info_t info;
+	efi_char16_t filename[256];
+};
+
+union efi_simple_file_system_protocol;
+
+typedef union efi_simple_file_system_protocol efi_simple_file_system_protocol_t;
+
+union efi_simple_file_system_protocol {
+	struct {
+		u64 revision;
+		efi_status_t (*open_volume)(efi_simple_file_system_protocol_t *, efi_file_protocol_t **);
+	};
+	struct {
+		u64 revision;
+		u32 open_volume;
+	} mixed_mode;
+};
+
+enum efi_cmdline_option {
+	EFI_CMDLINE_NONE = 0,
+	EFI_CMDLINE_MODE_NUM = 1,
+	EFI_CMDLINE_RES = 2,
+	EFI_CMDLINE_AUTO = 3,
+	EFI_CMDLINE_LIST = 4,
+};
+
+typedef struct {
+	u32 red_mask;
+	u32 green_mask;
+	u32 blue_mask;
+	u32 reserved_mask;
+} efi_pixel_bitmask_t;
+
+typedef struct {
+	u32 version;
+	u32 horizontal_resolution;
+	u32 vertical_resolution;
+	int pixel_format;
+	efi_pixel_bitmask_t pixel_information;
+	u32 pixels_per_scan_line;
+} efi_graphics_output_mode_info_t;
+
+union efi_graphics_output_protocol;
+
+typedef union efi_graphics_output_protocol efi_graphics_output_protocol_t;
+
+union efi_graphics_output_protocol_mode;
+
+typedef union efi_graphics_output_protocol_mode efi_graphics_output_protocol_mode_t;
+
+union efi_graphics_output_protocol {
+	struct {
+		efi_status_t (*query_mode)(efi_graphics_output_protocol_t *, u32, unsigned long *, efi_graphics_output_mode_info_t **);
+		efi_status_t (*set_mode)(efi_graphics_output_protocol_t *, u32);
+		void *blt;
+		efi_graphics_output_protocol_mode_t *mode;
+	};
+	struct {
+		u32 query_mode;
+		u32 set_mode;
+		u32 blt;
+		u32 mode;
+	} mixed_mode;
+};
+
+union efi_graphics_output_protocol_mode {
+	struct {
+		u32 max_mode;
+		u32 mode;
+		efi_graphics_output_mode_info_t *info;
+		unsigned long size_of_info;
+		efi_physical_addr_t frame_buffer_base;
+		unsigned long frame_buffer_size;
+	};
+	struct {
+		u32 max_mode;
+		u32 mode;
+		u32 info;
+		u32 size_of_info;
+		u64 frame_buffer_base;
+		u32 frame_buffer_size;
+	} mixed_mode;
+};
+
+typedef struct {
+	void *read;
+	void *write;
+} efi_pci_io_protocol_access_t;
+
+typedef enum {
+	EfiPciIoWidthUint8 = 0,
+	EfiPciIoWidthUint16 = 1,
+	EfiPciIoWidthUint32 = 2,
+	EfiPciIoWidthUint64 = 3,
+	EfiPciIoWidthFifoUint8 = 4,
+	EfiPciIoWidthFifoUint16 = 5,
+	EfiPciIoWidthFifoUint32 = 6,
+	EfiPciIoWidthFifoUint64 = 7,
+	EfiPciIoWidthFillUint8 = 8,
+	EfiPciIoWidthFillUint16 = 9,
+	EfiPciIoWidthFillUint32 = 10,
+	EfiPciIoWidthFillUint64 = 11,
+	EfiPciIoWidthMaximum = 12,
+} EFI_PCI_IO_PROTOCOL_WIDTH;
+
+union efi_pci_io_protocol;
+
+typedef union efi_pci_io_protocol efi_pci_io_protocol_t;
+
+typedef efi_status_t (*efi_pci_io_protocol_cfg_t)(efi_pci_io_protocol_t *, EFI_PCI_IO_PROTOCOL_WIDTH, u32, unsigned long, void *);
+
+typedef struct {
+	efi_pci_io_protocol_cfg_t read;
+	efi_pci_io_protocol_cfg_t write;
+} efi_pci_io_protocol_config_access_t;
+
+typedef struct {
+	u32 read;
+	u32 write;
+} efi_pci_io_protocol_access_32_t;
+
+union efi_pci_io_protocol {
+	struct {
+		void *poll_mem;
+		void *poll_io;
+		efi_pci_io_protocol_access_t mem;
+		efi_pci_io_protocol_access_t io;
+		efi_pci_io_protocol_config_access_t pci;
+		void *copy_mem;
+		void *map;
+		void *unmap;
+		void *allocate_buffer;
+		void *free_buffer;
+		void *flush;
+		efi_status_t (*get_location)(efi_pci_io_protocol_t *, unsigned long *, unsigned long *, unsigned long *, unsigned long *);
+		void *attributes;
+		void *get_bar_attributes;
+		void *set_bar_attributes;
+		uint64_t romsize;
+		void *romimage;
+	};
+	struct {
+		u32 poll_mem;
+		u32 poll_io;
+		efi_pci_io_protocol_access_32_t mem;
+		efi_pci_io_protocol_access_32_t io;
+		efi_pci_io_protocol_access_32_t pci;
+		u32 copy_mem;
+		u32 map;
+		u32 unmap;
+		u32 allocate_buffer;
+		u32 free_buffer;
+		u32 flush;
+		u32 get_location;
+		u32 attributes;
+		u32 get_bar_attributes;
+		u32 set_bar_attributes;
+		u64 romsize;
+		u32 romimage;
+	} mixed_mode;
+};
+
+union efi_rng_protocol;
+
+typedef union efi_rng_protocol efi_rng_protocol_t;
+
+union efi_rng_protocol {
+	struct {
+		efi_status_t (*get_info)(efi_rng_protocol_t *, unsigned long *, efi_guid_t *);
+		efi_status_t (*get_rng)(efi_rng_protocol_t *, efi_guid_t *, unsigned long, u8 *);
+	};
+	struct {
+		u32 get_info;
+		u32 get_rng;
+	} mixed_mode;
+};
+
+struct tcpa_event {
+	u32 pcr_index;
+	u32 event_type;
+	u8 pcr_value[20];
+	u32 event_size;
+	u8 event_data[0];
+};
+
+#ifndef BPF_NO_PRESERVE_ACCESS_INDEX
+#pragma clang attribute pop
+#endif
+
+#endif /* __VMLINUX_H__ */
diff --git a/include/vmlinux/android15_6.6/x86_64/vmlinux.h b/include/vmlinux/android15_6.6/x86_64/vmlinux.h
new file mode 100644
index 0000000..65116b6
--- /dev/null
+++ b/include/vmlinux/android15_6.6/x86_64/vmlinux.h
@@ -0,0 +1,153061 @@
+#ifndef __VMLINUX_H__
+#define __VMLINUX_H__
+
+#ifndef BPF_NO_PRESERVE_ACCESS_INDEX
+#pragma clang attribute push (__attribute__((preserve_access_index)), apply_to = record)
+#endif
+
+typedef struct {
+	int counter;
+} atomic_t;
+
+struct jump_entry;
+
+struct static_key_mod;
+
+struct static_key {
+	atomic_t enabled;
+	union {
+		unsigned long type;
+		struct jump_entry *entries;
+		struct static_key_mod *next;
+	};
+};
+
+struct static_call_key;
+
+struct tracepoint_func;
+
+struct tracepoint {
+	const char *name;
+	struct static_key key;
+	struct static_call_key *static_call_key;
+	void *static_call_tramp;
+	void *iterator;
+	void *probestub;
+	int (*regfunc)();
+	void (*unregfunc)();
+	struct tracepoint_func __attribute__((btf_type_tag("rcu"))) *funcs;
+};
+
+typedef int __s32;
+
+typedef __s32 s32;
+
+struct jump_entry {
+	s32 code;
+	s32 target;
+	long key;
+};
+
+struct static_call_mod;
+
+struct static_call_site;
+
+struct static_call_key {
+	void *func;
+	union {
+		unsigned long type;
+		struct static_call_mod *mods;
+		struct static_call_site *sites;
+	};
+};
+
+struct module;
+
+struct static_call_mod {
+	struct static_call_mod *next;
+	struct module *mod;
+	struct static_call_site *sites;
+};
+
+enum module_state {
+	MODULE_STATE_LIVE = 0,
+	MODULE_STATE_COMING = 1,
+	MODULE_STATE_GOING = 2,
+	MODULE_STATE_UNFORMED = 3,
+};
+
+struct list_head {
+	struct list_head *next;
+	struct list_head *prev;
+};
+
+struct refcount_struct {
+	atomic_t refs;
+};
+
+typedef struct refcount_struct refcount_t;
+
+struct kref {
+	refcount_t refcount;
+};
+
+typedef unsigned long long __u64;
+
+typedef __u64 u64;
+
+struct kset;
+
+struct kobj_type;
+
+struct kernfs_node;
+
+struct kobject {
+	const char *name;
+	struct list_head entry;
+	struct kobject *parent;
+	struct kset *kset;
+	const struct kobj_type *ktype;
+	struct kernfs_node *sd;
+	struct kref kref;
+	unsigned int state_initialized: 1;
+	unsigned int state_in_sysfs: 1;
+	unsigned int state_add_uevent_sent: 1;
+	unsigned int state_remove_uevent_sent: 1;
+	unsigned int uevent_suppress: 1;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct module_param_attrs;
+
+struct completion;
+
+struct module_kobject {
+	struct kobject kobj;
+	struct module *mod;
+	struct kobject *drivers_dir;
+	struct module_param_attrs *mp;
+	struct completion *kobj_completion;
+};
+
+typedef long long __s64;
+
+typedef __s64 s64;
+
+typedef struct {
+	s64 counter;
+} atomic64_t;
+
+typedef atomic64_t atomic_long_t;
+
+typedef unsigned char __u8;
+
+typedef __u8 u8;
+
+typedef unsigned short __u16;
+
+typedef __u16 u16;
+
+struct qspinlock {
+	union {
+		atomic_t val;
+		struct {
+			u8 locked;
+			u8 pending;
+		};
+		struct {
+			u16 locked_pending;
+			u16 tail;
+		};
+	};
+};
+
+typedef struct qspinlock arch_spinlock_t;
+
+struct raw_spinlock {
+	arch_spinlock_t raw_lock;
+};
+
+typedef struct raw_spinlock raw_spinlock_t;
+
+struct optimistic_spin_queue {
+	atomic_t tail;
+};
+
+struct mutex {
+	atomic_long_t owner;
+	raw_spinlock_t wait_lock;
+	struct optimistic_spin_queue osq;
+	struct list_head wait_list;
+	u64 android_oem_data1[2];
+};
+
+typedef _Bool bool;
+
+struct rb_node {
+	unsigned long __rb_parent_color;
+	struct rb_node *rb_right;
+	struct rb_node *rb_left;
+};
+
+struct latch_tree_node {
+	struct rb_node node[2];
+};
+
+struct mod_tree_node {
+	struct module *mod;
+	struct latch_tree_node node;
+};
+
+struct module_memory {
+	void *base;
+	unsigned int size;
+	struct mod_tree_node mtn;
+};
+
+struct mod_arch_specific {};
+
+struct elf64_sym;
+
+typedef struct elf64_sym Elf64_Sym;
+
+struct mod_kallsyms {
+	Elf64_Sym *symtab;
+	unsigned int num_symtab;
+	char *strtab;
+	char *typetab;
+};
+
+typedef const int tracepoint_ptr_t;
+
+struct _ddebug;
+
+struct ddebug_class_map;
+
+struct _ddebug_info {
+	struct _ddebug *descs;
+	struct ddebug_class_map *classes;
+	unsigned int num_descs;
+	unsigned int num_classes;
+};
+
+struct module_attribute;
+
+struct kernel_symbol;
+
+struct kernel_param;
+
+struct exception_table_entry;
+
+struct bug_entry;
+
+struct module_sect_attrs;
+
+struct module_notes_attrs;
+
+struct srcu_struct;
+
+struct bpf_raw_event_map;
+
+struct trace_event_call;
+
+struct trace_eval_map;
+
+struct kunit_suite;
+
+struct module {
+	enum module_state state;
+	struct list_head list;
+	char name[56];
+	unsigned char build_id[20];
+	struct module_kobject mkobj;
+	struct module_attribute *modinfo_attrs;
+	const char *version;
+	const char *srcversion;
+	const char *scmversion;
+	struct kobject *holders_dir;
+	const struct kernel_symbol *syms;
+	const s32 *crcs;
+	unsigned int num_syms;
+	s32 *kcfi_traps;
+	s32 *kcfi_traps_end;
+	struct mutex param_lock;
+	struct kernel_param *kp;
+	unsigned int num_kp;
+	unsigned int num_gpl_syms;
+	const struct kernel_symbol *gpl_syms;
+	const s32 *gpl_crcs;
+	bool using_gplonly_symbols;
+	bool sig_ok;
+	bool async_probe_requested;
+	unsigned int num_exentries;
+	struct exception_table_entry *extable;
+	int (*init)();
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct module_memory mem[7];
+	struct mod_arch_specific arch;
+	unsigned long taints;
+	unsigned int num_bugs;
+	struct list_head bug_list;
+	struct bug_entry *bug_table;
+	struct mod_kallsyms __attribute__((btf_type_tag("rcu"))) *kallsyms;
+	struct mod_kallsyms core_kallsyms;
+	struct module_sect_attrs *sect_attrs;
+	struct module_notes_attrs *notes_attrs;
+	char *args;
+	void __attribute__((btf_type_tag("percpu"))) *percpu;
+	unsigned int percpu_size;
+	void *noinstr_text_start;
+	unsigned int noinstr_text_size;
+	unsigned int num_tracepoints;
+	tracepoint_ptr_t *tracepoints_ptrs;
+	unsigned int num_srcu_structs;
+	struct srcu_struct **srcu_struct_ptrs;
+	unsigned int num_bpf_raw_events;
+	struct bpf_raw_event_map *bpf_raw_events;
+	unsigned int btf_data_size;
+	void *btf_data;
+	struct jump_entry *jump_entries;
+	unsigned int num_jump_entries;
+	unsigned int num_trace_bprintk_fmt;
+	const char **trace_bprintk_fmt_start;
+	struct trace_event_call **trace_events;
+	unsigned int num_trace_events;
+	struct trace_eval_map **trace_evals;
+	unsigned int num_trace_evals;
+	void *kprobes_text_start;
+	unsigned int kprobes_text_size;
+	unsigned long *kprobe_blacklist;
+	unsigned int num_kprobe_blacklist;
+	int num_static_call_sites;
+	struct static_call_site *static_call_sites;
+	int num_kunit_suites;
+	struct kunit_suite **kunit_suites;
+	struct list_head source_list;
+	struct list_head target_list;
+	void (*exit)();
+	atomic_t refcnt;
+	struct _ddebug_info dyndbg_info;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct spinlock {
+	union {
+		struct raw_spinlock rlock;
+	};
+};
+
+typedef struct spinlock spinlock_t;
+
+struct kset_uevent_ops;
+
+struct kset {
+	struct list_head list;
+	spinlock_t list_lock;
+	struct kobject kobj;
+	const struct kset_uevent_ops *uevent_ops;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct kobj_uevent_env;
+
+struct kset_uevent_ops {
+	int (* const filter)(const struct kobject *);
+	const char * (* const name)(const struct kobject *);
+	int (* const uevent)(const struct kobject *, struct kobj_uevent_env *);
+};
+
+struct kobj_uevent_env {
+	char *argv[3];
+	char *envp[64];
+	int envp_idx;
+	char buf[2048];
+	int buflen;
+};
+
+typedef unsigned int __kernel_uid32_t;
+
+typedef __kernel_uid32_t uid_t;
+
+typedef struct {
+	uid_t val;
+} kuid_t;
+
+typedef unsigned int __kernel_gid32_t;
+
+typedef __kernel_gid32_t gid_t;
+
+typedef struct {
+	gid_t val;
+} kgid_t;
+
+struct sysfs_ops;
+
+struct attribute_group;
+
+struct kobj_ns_type_operations;
+
+struct kobj_type {
+	void (*release)(struct kobject *);
+	const struct sysfs_ops *sysfs_ops;
+	const struct attribute_group **default_groups;
+	const struct kobj_ns_type_operations * (*child_ns_type)(const struct kobject *);
+	const void * (*namespace)(const struct kobject *);
+	void (*get_ownership)(const struct kobject *, kuid_t *, kgid_t *);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+typedef long __kernel_long_t;
+
+typedef __kernel_long_t __kernel_ssize_t;
+
+typedef __kernel_ssize_t ssize_t;
+
+typedef unsigned long __kernel_ulong_t;
+
+typedef __kernel_ulong_t __kernel_size_t;
+
+typedef __kernel_size_t size_t;
+
+struct attribute;
+
+struct sysfs_ops {
+	ssize_t (*show)(struct kobject *, struct attribute *, char *);
+	ssize_t (*store)(struct kobject *, struct attribute *, const char *, size_t);
+};
+
+typedef unsigned short umode_t;
+
+struct attribute {
+	const char *name;
+	umode_t mode;
+};
+
+struct bin_attribute;
+
+struct attribute_group {
+	const char *name;
+	umode_t (*is_visible)(struct kobject *, struct attribute *, int);
+	umode_t (*is_bin_visible)(struct kobject *, struct bin_attribute *, int);
+	struct attribute **attrs;
+	struct bin_attribute **bin_attrs;
+};
+
+typedef long long __kernel_loff_t;
+
+typedef __kernel_loff_t loff_t;
+
+struct address_space;
+
+struct file;
+
+struct vm_area_struct;
+
+struct bin_attribute {
+	struct attribute attr;
+	size_t size;
+	void *private;
+	struct address_space * (*f_mapping)();
+	ssize_t (*read)(struct file *, struct kobject *, struct bin_attribute *, char *, loff_t, size_t);
+	ssize_t (*write)(struct file *, struct kobject *, struct bin_attribute *, char *, loff_t, size_t);
+	int (*mmap)(struct file *, struct kobject *, struct bin_attribute *, struct vm_area_struct *);
+};
+
+typedef unsigned int gfp_t;
+
+struct xarray {
+	spinlock_t xa_lock;
+	gfp_t xa_flags;
+	void __attribute__((btf_type_tag("rcu"))) *xa_head;
+};
+
+struct rw_semaphore {
+	atomic_long_t count;
+	atomic_long_t owner;
+	struct optimistic_spin_queue osq;
+	raw_spinlock_t wait_lock;
+	struct list_head wait_list;
+	u64 android_vendor_data1;
+	u64 android_oem_data1[2];
+};
+
+struct rb_root {
+	struct rb_node *rb_node;
+};
+
+struct rb_root_cached {
+	struct rb_root rb_root;
+	struct rb_node *rb_leftmost;
+};
+
+typedef unsigned int __u32;
+
+typedef __u32 u32;
+
+typedef u32 errseq_t;
+
+struct inode;
+
+struct address_space_operations;
+
+struct address_space {
+	struct inode *host;
+	struct xarray i_pages;
+	struct rw_semaphore invalidate_lock;
+	gfp_t gfp_mask;
+	atomic_t i_mmap_writable;
+	struct rb_root_cached i_mmap;
+	unsigned long nrpages;
+	unsigned long writeback_index;
+	const struct address_space_operations *a_ops;
+	unsigned long flags;
+	struct rw_semaphore i_mmap_rwsem;
+	errseq_t wb_err;
+	spinlock_t private_lock;
+	struct list_head private_list;
+	void *private_data;
+};
+
+struct hlist_node;
+
+struct hlist_head {
+	struct hlist_node *first;
+};
+
+struct callback_head {
+	struct callback_head *next;
+	void (*func)(struct callback_head *);
+};
+
+typedef u32 __kernel_dev_t;
+
+typedef __kernel_dev_t dev_t;
+
+typedef __s64 time64_t;
+
+struct timespec64 {
+	time64_t tv_sec;
+	long tv_nsec;
+};
+
+enum rw_hint {
+	WRITE_LIFE_NOT_SET = 0,
+	WRITE_LIFE_NONE = 1,
+	WRITE_LIFE_SHORT = 2,
+	WRITE_LIFE_MEDIUM = 3,
+	WRITE_LIFE_LONG = 4,
+	WRITE_LIFE_EXTREME = 5,
+} __attribute__((mode(byte)));
+
+typedef u64 blkcnt_t;
+
+struct hlist_node {
+	struct hlist_node *next;
+	struct hlist_node **pprev;
+};
+
+struct posix_acl;
+
+struct inode_operations;
+
+struct super_block;
+
+struct bdi_writeback;
+
+struct file_operations;
+
+struct file_lock_context;
+
+struct pipe_inode_info;
+
+struct cdev;
+
+struct fsnotify_mark_connector;
+
+struct fscrypt_inode_info;
+
+struct fsverity_info;
+
+struct inode {
+	umode_t i_mode;
+	unsigned short i_opflags;
+	kuid_t i_uid;
+	kgid_t i_gid;
+	unsigned int i_flags;
+	struct posix_acl *i_acl;
+	struct posix_acl *i_default_acl;
+	const struct inode_operations *i_op;
+	struct super_block *i_sb;
+	struct address_space *i_mapping;
+	void *i_security;
+	unsigned long i_ino;
+	union {
+		const unsigned int i_nlink;
+		unsigned int __i_nlink;
+	};
+	dev_t i_rdev;
+	loff_t i_size;
+	struct timespec64 i_atime;
+	struct timespec64 i_mtime;
+	struct timespec64 __i_ctime;
+	spinlock_t i_lock;
+	unsigned short i_bytes;
+	u8 i_blkbits;
+	enum rw_hint i_write_hint;
+	blkcnt_t i_blocks;
+	unsigned long i_state;
+	struct rw_semaphore i_rwsem;
+	unsigned long dirtied_when;
+	unsigned long dirtied_time_when;
+	struct hlist_node i_hash;
+	struct list_head i_io_list;
+	struct bdi_writeback *i_wb;
+	int i_wb_frn_winner;
+	u16 i_wb_frn_avg_time;
+	u16 i_wb_frn_history;
+	struct list_head i_lru;
+	struct list_head i_sb_list;
+	struct list_head i_wb_list;
+	union {
+		struct hlist_head i_dentry;
+		struct callback_head i_rcu;
+	};
+	atomic64_t i_version;
+	atomic64_t i_sequence;
+	atomic_t i_count;
+	atomic_t i_dio_count;
+	atomic_t i_writecount;
+	atomic_t i_readcount;
+	union {
+		const struct file_operations *i_fop;
+		void (*free_inode)(struct inode *);
+	};
+	struct file_lock_context *i_flctx;
+	struct address_space i_data;
+	struct list_head i_devices;
+	union {
+		struct pipe_inode_info *i_pipe;
+		struct cdev *i_cdev;
+		char *i_link;
+		unsigned int i_dir_seq;
+	};
+	__u32 i_generation;
+	__u32 i_fsnotify_mask;
+	struct fsnotify_mark_connector __attribute__((btf_type_tag("rcu"))) *i_fsnotify_marks;
+	struct fscrypt_inode_info *i_crypt_info;
+	struct fsverity_info *i_verity_info;
+	void *i_private;
+};
+
+struct dentry;
+
+struct delayed_call;
+
+struct mnt_idmap;
+
+struct iattr;
+
+struct path;
+
+struct kstat;
+
+struct fiemap_extent_info;
+
+struct fileattr;
+
+struct offset_ctx;
+
+struct inode_operations {
+	struct dentry * (*lookup)(struct inode *, struct dentry *, unsigned int);
+	const char * (*get_link)(struct dentry *, struct inode *, struct delayed_call *);
+	int (*permission)(struct mnt_idmap *, struct inode *, int);
+	struct posix_acl * (*get_inode_acl)(struct inode *, int, bool);
+	int (*readlink)(struct dentry *, char __attribute__((btf_type_tag("user"))) *, int);
+	int (*create)(struct mnt_idmap *, struct inode *, struct dentry *, umode_t, bool);
+	int (*link)(struct dentry *, struct inode *, struct dentry *);
+	int (*unlink)(struct inode *, struct dentry *);
+	int (*symlink)(struct mnt_idmap *, struct inode *, struct dentry *, const char *);
+	int (*mkdir)(struct mnt_idmap *, struct inode *, struct dentry *, umode_t);
+	int (*rmdir)(struct inode *, struct dentry *);
+	int (*mknod)(struct mnt_idmap *, struct inode *, struct dentry *, umode_t, dev_t);
+	int (*rename)(struct mnt_idmap *, struct inode *, struct dentry *, struct inode *, struct dentry *, unsigned int);
+	int (*setattr)(struct mnt_idmap *, struct dentry *, struct iattr *);
+	int (*getattr)(struct mnt_idmap *, const struct path *, struct kstat *, u32, unsigned int);
+	ssize_t (*listxattr)(struct dentry *, char *, size_t);
+	int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64, u64);
+	int (*update_time)(struct inode *, int);
+	int (*atomic_open)(struct inode *, struct dentry *, struct file *, unsigned int, umode_t);
+	int (*tmpfile)(struct mnt_idmap *, struct inode *, struct file *, umode_t);
+	struct posix_acl * (*get_acl)(struct mnt_idmap *, struct dentry *, int);
+	int (*set_acl)(struct mnt_idmap *, struct dentry *, struct posix_acl *, int);
+	int (*fileattr_set)(struct mnt_idmap *, struct dentry *, struct fileattr *);
+	int (*fileattr_get)(struct dentry *, struct fileattr *);
+	struct offset_ctx * (*get_offset_ctx)(struct inode *);
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct hlist_bl_node {
+	struct hlist_bl_node *next;
+	struct hlist_bl_node **pprev;
+};
+
+struct seqcount {
+	unsigned int sequence;
+};
+
+typedef struct seqcount seqcount_t;
+
+struct seqcount_spinlock {
+	seqcount_t seqcount;
+};
+
+typedef struct seqcount_spinlock seqcount_spinlock_t;
+
+struct qstr {
+	union {
+		struct {
+			u32 hash;
+			u32 len;
+		};
+		u64 hash_len;
+	};
+	const unsigned char *name;
+};
+
+struct lockref {
+	union {
+		__u64 lock_count;
+		struct {
+			spinlock_t lock;
+			int count;
+		};
+	};
+};
+
+struct dentry_operations;
+
+struct wait_queue_head;
+
+typedef struct wait_queue_head wait_queue_head_t;
+
+struct dentry {
+	unsigned int d_flags;
+	seqcount_spinlock_t d_seq;
+	struct hlist_bl_node d_hash;
+	struct dentry *d_parent;
+	struct qstr d_name;
+	struct inode *d_inode;
+	unsigned char d_iname[32];
+	struct lockref d_lockref;
+	const struct dentry_operations *d_op;
+	struct super_block *d_sb;
+	unsigned long d_time;
+	void *d_fsdata;
+	union {
+		struct list_head d_lru;
+		wait_queue_head_t *d_wait;
+	};
+	struct list_head d_child;
+	struct list_head d_subdirs;
+	union {
+		struct hlist_node d_alias;
+		struct hlist_bl_node d_in_lookup_hash;
+		struct callback_head d_rcu;
+	} d_u;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct vfsmount;
+
+struct dentry_operations {
+	int (*d_revalidate)(struct dentry *, unsigned int);
+	int (*d_weak_revalidate)(struct dentry *, unsigned int);
+	int (*d_hash)(const struct dentry *, struct qstr *);
+	int (*d_compare)(const struct dentry *, unsigned int, const char *, const struct qstr *);
+	int (*d_delete)(const struct dentry *);
+	int (*d_init)(struct dentry *);
+	void (*d_release)(struct dentry *);
+	void (*d_prune)(struct dentry *);
+	void (*d_iput)(struct dentry *, struct inode *);
+	char * (*d_dname)(struct dentry *, char *, int);
+	struct vfsmount * (*d_automount)(struct path *);
+	int (*d_manage)(const struct path *, bool);
+	struct dentry * (*d_real)(struct dentry *, const struct inode *);
+	int (*d_canonical_path)(const struct path *, struct path *);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct vfsmount {
+	struct dentry *mnt_root;
+	struct super_block *mnt_sb;
+	int mnt_flags;
+	struct mnt_idmap *mnt_idmap;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct hlist_bl_head {
+	struct hlist_bl_node *first;
+};
+
+struct mtd_info;
+
+typedef long long qsize_t;
+
+struct quota_format_type;
+
+struct mem_dqinfo {
+	struct quota_format_type *dqi_format;
+	int dqi_fmt_id;
+	struct list_head dqi_dirty_list;
+	unsigned long dqi_flags;
+	unsigned int dqi_bgrace;
+	unsigned int dqi_igrace;
+	qsize_t dqi_max_spc_limit;
+	qsize_t dqi_max_ino_limit;
+	void *dqi_priv;
+};
+
+struct quota_format_ops;
+
+struct quota_info {
+	unsigned int flags;
+	struct rw_semaphore dqio_sem;
+	struct inode *files[3];
+	struct mem_dqinfo info[3];
+	const struct quota_format_ops *ops[3];
+};
+
+struct wait_queue_head {
+	spinlock_t lock;
+	struct list_head head;
+};
+
+struct rcu_sync {
+	int gp_state;
+	int gp_count;
+	wait_queue_head_t gp_wait;
+	struct callback_head cb_head;
+};
+
+struct task_struct;
+
+struct rcuwait {
+	struct task_struct __attribute__((btf_type_tag("rcu"))) *task;
+};
+
+struct percpu_rw_semaphore {
+	struct rcu_sync rss;
+	unsigned int __attribute__((btf_type_tag("percpu"))) *read_count;
+	struct rcuwait writer;
+	wait_queue_head_t waiters;
+	atomic_t block;
+	u64 android_oem_data1;
+};
+
+struct sb_writers {
+	unsigned short frozen;
+	unsigned short freeze_holders;
+	struct percpu_rw_semaphore rw_sem[3];
+};
+
+typedef struct {
+	__u8 b[16];
+} uuid_t;
+
+struct shrink_control;
+
+struct shrinker {
+	unsigned long (*count_objects)(struct shrinker *, struct shrink_control *);
+	unsigned long (*scan_objects)(struct shrinker *, struct shrink_control *);
+	long batch;
+	int seeks;
+	unsigned int flags;
+	struct list_head list;
+	int id;
+	atomic_long_t *nr_deferred;
+};
+
+struct list_lru_node;
+
+struct list_lru {
+	struct list_lru_node *node;
+	struct list_head list;
+	int shrinker_id;
+	bool memcg_aware;
+	struct xarray xa;
+};
+
+struct work_struct;
+
+typedef void (*work_func_t)(struct work_struct *);
+
+struct work_struct {
+	atomic_long_t data;
+	struct list_head entry;
+	work_func_t func;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct file_system_type;
+
+struct super_operations;
+
+struct dquot_operations;
+
+struct quotactl_ops;
+
+struct export_operations;
+
+struct xattr_handler;
+
+struct fscrypt_operations;
+
+struct fscrypt_keyring;
+
+struct fsverity_operations;
+
+struct unicode_map;
+
+struct block_device;
+
+struct backing_dev_info;
+
+struct workqueue_struct;
+
+struct user_namespace;
+
+struct super_block {
+	struct list_head s_list;
+	dev_t s_dev;
+	unsigned char s_blocksize_bits;
+	unsigned long s_blocksize;
+	loff_t s_maxbytes;
+	struct file_system_type *s_type;
+	const struct super_operations *s_op;
+	const struct dquot_operations *dq_op;
+	const struct quotactl_ops *s_qcop;
+	const struct export_operations *s_export_op;
+	unsigned long s_flags;
+	unsigned long s_iflags;
+	unsigned long s_magic;
+	struct dentry *s_root;
+	struct rw_semaphore s_umount;
+	int s_count;
+	atomic_t s_active;
+	void *s_security;
+	const struct xattr_handler **s_xattr;
+	const struct fscrypt_operations *s_cop;
+	struct fscrypt_keyring *s_master_keys;
+	const struct fsverity_operations *s_vop;
+	struct unicode_map *s_encoding;
+	__u16 s_encoding_flags;
+	struct hlist_bl_head s_roots;
+	struct list_head s_mounts;
+	struct block_device *s_bdev;
+	struct backing_dev_info *s_bdi;
+	struct mtd_info *s_mtd;
+	struct hlist_node s_instances;
+	unsigned int s_quota_types;
+	struct quota_info s_dquot;
+	struct sb_writers s_writers;
+	void *s_fs_info;
+	u32 s_time_gran;
+	time64_t s_time_min;
+	time64_t s_time_max;
+	__u32 s_fsnotify_mask;
+	struct fsnotify_mark_connector __attribute__((btf_type_tag("rcu"))) *s_fsnotify_marks;
+	char s_id[32];
+	uuid_t s_uuid;
+	unsigned int s_max_links;
+	struct mutex s_vfs_rename_mutex;
+	const char *s_subtype;
+	const struct dentry_operations *s_d_op;
+	int cleancache_poolid;
+	struct shrinker s_shrink;
+	atomic_long_t s_remove_count;
+	atomic_long_t s_fsnotify_connectors;
+	int s_readonly_remount;
+	errseq_t s_wb_err;
+	struct workqueue_struct *s_dio_done_wq;
+	struct hlist_head s_pins;
+	struct user_namespace *s_user_ns;
+	struct list_lru s_dentry_lru;
+	struct list_lru s_inode_lru;
+	struct callback_head rcu;
+	struct work_struct destroy_work;
+	struct mutex s_sync_lock;
+	int s_stack_depth;
+	long: 0;
+	spinlock_t s_inode_list_lock;
+	struct list_head s_inodes;
+	spinlock_t s_inode_wblist_lock;
+	struct list_head s_inodes_wb;
+	long: 64;
+	long: 64;
+};
+
+struct lock_class_key {};
+
+struct fs_context;
+
+struct fs_parameter_spec;
+
+struct file_system_type {
+	const char *name;
+	int fs_flags;
+	int (*init_fs_context)(struct fs_context *);
+	const struct fs_parameter_spec *parameters;
+	struct dentry * (*mount)(struct file_system_type *, int, const char *, void *);
+	void (*kill_sb)(struct super_block *);
+	struct module *owner;
+	struct file_system_type *next;
+	struct hlist_head fs_supers;
+	struct lock_class_key s_lock_key;
+	struct lock_class_key s_umount_key;
+	struct lock_class_key s_vfs_rename_key;
+	struct lock_class_key s_writers_key[3];
+	struct lock_class_key i_lock_key;
+	struct lock_class_key i_mutex_key;
+	struct lock_class_key invalidate_lock_key;
+	struct lock_class_key i_mutex_dir_key;
+};
+
+struct fc_log;
+
+struct p_log {
+	const char *prefix;
+	struct fc_log *log;
+};
+
+enum fs_context_purpose {
+	FS_CONTEXT_FOR_MOUNT = 0,
+	FS_CONTEXT_FOR_SUBMOUNT = 1,
+	FS_CONTEXT_FOR_RECONFIGURE = 2,
+};
+
+enum fs_context_phase {
+	FS_CONTEXT_CREATE_PARAMS = 0,
+	FS_CONTEXT_CREATING = 1,
+	FS_CONTEXT_AWAITING_MOUNT = 2,
+	FS_CONTEXT_AWAITING_RECONF = 3,
+	FS_CONTEXT_RECONF_PARAMS = 4,
+	FS_CONTEXT_RECONFIGURING = 5,
+	FS_CONTEXT_FAILED = 6,
+};
+
+struct fs_context_operations;
+
+struct net;
+
+struct cred;
+
+struct fs_context {
+	const struct fs_context_operations *ops;
+	struct mutex uapi_mutex;
+	struct file_system_type *fs_type;
+	void *fs_private;
+	void *sget_key;
+	struct dentry *root;
+	struct user_namespace *user_ns;
+	struct net *net_ns;
+	const struct cred *cred;
+	struct p_log log;
+	const char *source;
+	void *security;
+	void *s_fs_info;
+	unsigned int sb_flags;
+	unsigned int sb_flags_mask;
+	unsigned int s_iflags;
+	enum fs_context_purpose purpose: 8;
+	enum fs_context_phase phase: 8;
+	bool need_free: 1;
+	bool global: 1;
+	bool oldapi: 1;
+	bool exclusive: 1;
+};
+
+struct fs_parameter;
+
+struct fs_context_operations {
+	void (*free)(struct fs_context *);
+	int (*dup)(struct fs_context *, struct fs_context *);
+	int (*parse_param)(struct fs_context *, struct fs_parameter *);
+	int (*parse_monolithic)(struct fs_context *, void *);
+	int (*get_tree)(struct fs_context *);
+	int (*reconfigure)(struct fs_context *);
+};
+
+enum fs_value_type {
+	fs_value_is_undefined = 0,
+	fs_value_is_flag = 1,
+	fs_value_is_string = 2,
+	fs_value_is_blob = 3,
+	fs_value_is_filename = 4,
+	fs_value_is_file = 5,
+};
+
+struct filename;
+
+struct fs_parameter {
+	const char *key;
+	enum fs_value_type type: 8;
+	union {
+		char *string;
+		void *blob;
+		struct filename *name;
+		struct file *file;
+	};
+	size_t size;
+	int dirfd;
+};
+
+struct audit_names;
+
+struct filename {
+	const char *name;
+	const char __attribute__((btf_type_tag("user"))) *uptr;
+	atomic_t refcnt;
+	struct audit_names *aname;
+	const char iname[0];
+};
+
+struct llist_node {
+	struct llist_node *next;
+};
+
+typedef unsigned int fmode_t;
+
+struct qrwlock {
+	union {
+		atomic_t cnts;
+		struct {
+			u8 wlocked;
+			u8 __lstate[3];
+		};
+	};
+	arch_spinlock_t wait_lock;
+};
+
+typedef struct qrwlock arch_rwlock_t;
+
+typedef struct {
+	arch_rwlock_t raw_lock;
+} rwlock_t;
+
+enum pid_type {
+	PIDTYPE_PID = 0,
+	PIDTYPE_TGID = 1,
+	PIDTYPE_PGID = 2,
+	PIDTYPE_SID = 3,
+	PIDTYPE_MAX = 4,
+};
+
+struct pid;
+
+struct fown_struct {
+	rwlock_t lock;
+	struct pid *pid;
+	enum pid_type pid_type;
+	kuid_t uid;
+	kuid_t euid;
+	int signum;
+};
+
+struct file_ra_state {
+	unsigned long start;
+	unsigned int size;
+	unsigned int async_size;
+	unsigned int ra_pages;
+	unsigned int mmap_miss;
+	loff_t prev_pos;
+};
+
+struct path {
+	struct vfsmount *mnt;
+	struct dentry *dentry;
+};
+
+struct file {
+	union {
+		struct llist_node f_llist;
+		struct callback_head f_rcuhead;
+		unsigned int f_iocb_flags;
+	};
+	spinlock_t f_lock;
+	fmode_t f_mode;
+	atomic_long_t f_count;
+	struct mutex f_pos_lock;
+	loff_t f_pos;
+	unsigned int f_flags;
+	struct fown_struct f_owner;
+	const struct cred *f_cred;
+	struct file_ra_state f_ra;
+	struct path f_path;
+	struct inode *f_inode;
+	const struct file_operations *f_op;
+	u64 f_version;
+	void *f_security;
+	void *private_data;
+	struct hlist_head *f_ep;
+	struct address_space *f_mapping;
+	errseq_t f_wb_err;
+	errseq_t f_sb_err;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct pid_namespace;
+
+struct upid {
+	int nr;
+	struct pid_namespace *ns;
+};
+
+struct pid {
+	refcount_t count;
+	unsigned int level;
+	spinlock_t lock;
+	struct hlist_head tasks[4];
+	struct hlist_head inodes;
+	wait_queue_head_t wait_pidfd;
+	struct callback_head rcu;
+	struct upid numbers[0];
+};
+
+struct idr {
+	struct xarray idr_rt;
+	unsigned int idr_base;
+	unsigned int idr_next;
+};
+
+struct proc_ns_operations;
+
+struct ns_common {
+	atomic_long_t stashed;
+	const struct proc_ns_operations *ops;
+	unsigned int inum;
+	refcount_t count;
+};
+
+struct kmem_cache;
+
+struct ucounts;
+
+struct pid_namespace {
+	struct idr idr;
+	struct callback_head rcu;
+	unsigned int pid_allocated;
+	struct task_struct *child_reaper;
+	struct kmem_cache *pid_cachep;
+	unsigned int level;
+	struct pid_namespace *parent;
+	struct user_namespace *user_ns;
+	struct ucounts *ucounts;
+	int reboot;
+	struct ns_common ns;
+	int memfd_noexec_scope;
+};
+
+struct thread_info {
+	unsigned long flags;
+	unsigned long syscall_work;
+	u32 status;
+	u32 cpu;
+};
+
+struct __call_single_node {
+	struct llist_node llist;
+	union {
+		unsigned int u_flags;
+		atomic_t a_flags;
+	};
+	u16 src;
+	u16 dst;
+};
+
+struct load_weight {
+	unsigned long weight;
+	u32 inv_weight;
+};
+
+struct sched_avg {
+	u64 last_update_time;
+	u64 load_sum;
+	u64 runnable_sum;
+	u32 util_sum;
+	u32 period_contrib;
+	unsigned long load_avg;
+	unsigned long runnable_avg;
+	unsigned long util_avg;
+	unsigned int util_est;
+	u32 reserved;
+};
+
+struct cfs_rq;
+
+struct sched_entity {
+	struct load_weight load;
+	struct rb_node run_node;
+	u64 deadline;
+	u64 min_vruntime;
+	struct list_head group_node;
+	unsigned int on_rq;
+	u64 exec_start;
+	u64 sum_exec_runtime;
+	u64 prev_sum_exec_runtime;
+	u64 vruntime;
+	s64 vlag;
+	u64 slice;
+	u64 nr_migrations;
+	int depth;
+	struct sched_entity *parent;
+	struct cfs_rq *cfs_rq;
+	struct cfs_rq *my_q;
+	unsigned long runnable_weight;
+	long: 64;
+	long: 64;
+	struct sched_avg avg;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct sched_rt_entity {
+	struct list_head run_list;
+	unsigned long timeout;
+	unsigned long watchdog_stamp;
+	unsigned int time_slice;
+	unsigned short on_rq;
+	unsigned short on_list;
+	struct sched_rt_entity *back;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+typedef s64 ktime_t;
+
+struct timerqueue_node {
+	struct rb_node node;
+	ktime_t expires;
+};
+
+enum hrtimer_restart {
+	HRTIMER_NORESTART = 0,
+	HRTIMER_RESTART = 1,
+};
+
+struct hrtimer_clock_base;
+
+struct hrtimer {
+	struct timerqueue_node node;
+	ktime_t _softexpires;
+	enum hrtimer_restart (*function)(struct hrtimer *);
+	struct hrtimer_clock_base *base;
+	u8 state;
+	u8 is_rel;
+	u8 is_soft;
+	u8 is_hard;
+	u64 android_kabi_reserved1;
+};
+
+struct sched_dl_entity {
+	struct rb_node rb_node;
+	u64 dl_runtime;
+	u64 dl_deadline;
+	u64 dl_period;
+	u64 dl_bw;
+	u64 dl_density;
+	s64 runtime;
+	u64 deadline;
+	unsigned int flags;
+	unsigned int dl_throttled: 1;
+	unsigned int dl_yielded: 1;
+	unsigned int dl_non_contending: 1;
+	unsigned int dl_overrun: 1;
+	struct hrtimer dl_timer;
+	struct hrtimer inactive_timer;
+	struct sched_dl_entity *pi_se;
+};
+
+struct uclamp_se {
+	unsigned int value: 11;
+	unsigned int bucket_id: 5;
+	unsigned int active: 1;
+	unsigned int user_defined: 1;
+};
+
+struct sched_statistics {
+	u64 wait_start;
+	u64 wait_max;
+	u64 wait_count;
+	u64 wait_sum;
+	u64 iowait_count;
+	u64 iowait_sum;
+	u64 sleep_start;
+	u64 sleep_max;
+	s64 sum_sleep_runtime;
+	u64 block_start;
+	u64 block_max;
+	s64 sum_block_runtime;
+	u64 exec_max;
+	u64 slice_max;
+	u64 nr_migrations_cold;
+	u64 nr_failed_migrations_affine;
+	u64 nr_failed_migrations_running;
+	u64 nr_failed_migrations_hot;
+	u64 nr_forced_migrations;
+	u64 nr_wakeups;
+	u64 nr_wakeups_sync;
+	u64 nr_wakeups_migrate;
+	u64 nr_wakeups_local;
+	u64 nr_wakeups_remote;
+	u64 nr_wakeups_affine;
+	u64 nr_wakeups_affine_attempts;
+	u64 nr_wakeups_passive;
+	u64 nr_wakeups_idle;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct cpumask {
+	unsigned long bits[1];
+};
+
+typedef struct cpumask cpumask_t;
+
+union rcu_special {
+	struct {
+		u8 blocked;
+		u8 need_qs;
+		u8 exp_hint;
+		u8 need_mb;
+	} b;
+	u32 s;
+};
+
+struct sched_info {
+	unsigned long pcount;
+	unsigned long long run_delay;
+	unsigned long long last_arrival;
+	unsigned long long last_queued;
+};
+
+struct plist_node {
+	int prio;
+	struct list_head prio_list;
+	struct list_head node_list;
+};
+
+typedef int __kernel_clockid_t;
+
+typedef __kernel_clockid_t clockid_t;
+
+enum timespec_type {
+	TT_NONE = 0,
+	TT_NATIVE = 1,
+	TT_COMPAT = 2,
+};
+
+struct __kernel_timespec;
+
+struct old_timespec32;
+
+struct pollfd;
+
+struct restart_block {
+	unsigned long arch_data;
+	long (*fn)(struct restart_block *);
+	union {
+		struct {
+			u32 __attribute__((btf_type_tag("user"))) *uaddr;
+			u32 val;
+			u32 flags;
+			u32 bitset;
+			u64 time;
+			u32 __attribute__((btf_type_tag("user"))) *uaddr2;
+		} futex;
+		struct {
+			clockid_t clockid;
+			enum timespec_type type;
+			union {
+				struct __kernel_timespec __attribute__((btf_type_tag("user"))) *rmtp;
+				struct old_timespec32 __attribute__((btf_type_tag("user"))) *compat_rmtp;
+			};
+			u64 expires;
+		} nanosleep;
+		struct {
+			struct pollfd __attribute__((btf_type_tag("user"))) *ufds;
+			int nfds;
+			int has_timeout;
+			unsigned long tv_sec;
+			unsigned long tv_nsec;
+		} poll;
+	};
+};
+
+typedef int __kernel_pid_t;
+
+typedef __kernel_pid_t pid_t;
+
+struct prev_cputime {
+	u64 utime;
+	u64 stime;
+	raw_spinlock_t lock;
+};
+
+struct timerqueue_head {
+	struct rb_root_cached rb_root;
+};
+
+struct posix_cputimer_base {
+	u64 nextevt;
+	struct timerqueue_head tqhead;
+};
+
+struct posix_cputimers {
+	struct posix_cputimer_base bases[3];
+	unsigned int timers_active;
+	unsigned int expiry_active;
+};
+
+struct posix_cputimers_work {
+	struct callback_head work;
+	struct mutex mutex;
+	unsigned int scheduled;
+};
+
+typedef struct {
+	unsigned long sig[1];
+} sigset_t;
+
+struct sigpending {
+	struct list_head list;
+	sigset_t signal;
+};
+
+struct seccomp_filter;
+
+struct seccomp {
+	int mode;
+	atomic_t filter_count;
+	struct seccomp_filter *filter;
+};
+
+struct syscall_user_dispatch {
+	char __attribute__((btf_type_tag("user"))) *selector;
+	unsigned long offset;
+	unsigned long len;
+	bool on_dispatch;
+};
+
+struct wake_q_node {
+	struct wake_q_node *next;
+};
+
+struct task_io_accounting {
+	u64 rchar;
+	u64 wchar;
+	u64 syscr;
+	u64 syscw;
+	u64 syscfs;
+	u64 read_bytes;
+	u64 write_bytes;
+	u64 cancelled_write_bytes;
+};
+
+typedef struct {
+	unsigned long bits[1];
+} nodemask_t;
+
+struct arch_tlbflush_unmap_batch {
+	struct cpumask cpumask;
+};
+
+struct tlbflush_unmap_batch {
+	struct arch_tlbflush_unmap_batch arch;
+	bool flush_required;
+	bool writable;
+};
+
+struct page;
+
+struct page_frag {
+	struct page *page;
+	__u32 offset;
+	__u32 size;
+};
+
+struct kmap_ctrl {};
+
+struct timer_list {
+	struct hlist_node entry;
+	unsigned long expires;
+	void (*function)(struct timer_list *);
+	u32 flags;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct llist_head {
+	struct llist_node *first;
+};
+
+struct desc_struct {
+	u16 limit0;
+	u16 base0;
+	u16 base1: 8;
+	u16 type: 4;
+	u16 s: 1;
+	u16 dpl: 2;
+	u16 p: 1;
+	u16 limit1: 4;
+	u16 avl: 1;
+	u16 l: 1;
+	u16 d: 1;
+	u16 g: 1;
+	u16 base2: 8;
+};
+
+struct fpu_state_perm {
+	u64 __state_perm;
+	unsigned int __state_size;
+	unsigned int __user_state_size;
+};
+
+struct fregs_state {
+	u32 cwd;
+	u32 swd;
+	u32 twd;
+	u32 fip;
+	u32 fcs;
+	u32 foo;
+	u32 fos;
+	u32 st_space[20];
+	u32 status;
+};
+
+struct fxregs_state {
+	u16 cwd;
+	u16 swd;
+	u16 twd;
+	u16 fop;
+	union {
+		struct {
+			u64 rip;
+			u64 rdp;
+		};
+		struct {
+			u32 fip;
+			u32 fcs;
+			u32 foo;
+			u32 fos;
+		};
+	};
+	u32 mxcsr;
+	u32 mxcsr_mask;
+	u32 st_space[32];
+	u32 xmm_space[64];
+	u32 padding[12];
+	union {
+		u32 padding1[12];
+		u32 sw_reserved[12];
+	};
+};
+
+struct math_emu_info;
+
+struct swregs_state {
+	u32 cwd;
+	u32 swd;
+	u32 twd;
+	u32 fip;
+	u32 fcs;
+	u32 foo;
+	u32 fos;
+	u32 st_space[20];
+	u8 ftop;
+	u8 changed;
+	u8 lookahead;
+	u8 no_update;
+	u8 rm;
+	u8 alimit;
+	struct math_emu_info *info;
+	u32 entry_eip;
+};
+
+struct xstate_header {
+	u64 xfeatures;
+	u64 xcomp_bv;
+	u64 reserved[6];
+};
+
+struct xregs_state {
+	struct fxregs_state i387;
+	struct xstate_header header;
+	u8 extended_state_area[0];
+};
+
+union fpregs_state {
+	struct fregs_state fsave;
+	struct fxregs_state fxsave;
+	struct swregs_state soft;
+	struct xregs_state xsave;
+	u8 __padding[4096];
+};
+
+struct fpstate {
+	unsigned int size;
+	unsigned int user_size;
+	u64 xfeatures;
+	u64 user_xfeatures;
+	u64 xfd;
+	unsigned int is_valloc: 1;
+	unsigned int is_guest: 1;
+	unsigned int is_confidential: 1;
+	unsigned int in_use: 1;
+	long: 64;
+	long: 64;
+	long: 64;
+	union fpregs_state regs;
+};
+
+struct fpu {
+	unsigned int last_cpu;
+	unsigned long avx512_timestamp;
+	struct fpstate *fpstate;
+	struct fpstate *__task_fpstate;
+	struct fpu_state_perm perm;
+	struct fpu_state_perm guest_perm;
+	struct fpstate __fpstate;
+};
+
+struct perf_event;
+
+struct io_bitmap;
+
+struct thread_struct {
+	struct desc_struct tls_array[3];
+	unsigned long sp;
+	unsigned short es;
+	unsigned short ds;
+	unsigned short fsindex;
+	unsigned short gsindex;
+	unsigned long fsbase;
+	unsigned long gsbase;
+	struct perf_event *ptrace_bps[4];
+	unsigned long virtual_dr6;
+	unsigned long ptrace_dr7;
+	unsigned long cr2;
+	unsigned long trap_nr;
+	unsigned long error_code;
+	struct io_bitmap *io_bitmap;
+	unsigned long iopl_emul;
+	unsigned int iopl_warn: 1;
+	unsigned int sig_on_uaccess_err: 1;
+	u32 pkru;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct fpu fpu;
+};
+
+struct sched_class;
+
+struct task_group;
+
+struct rcu_node;
+
+struct mm_struct;
+
+struct key;
+
+struct nameidata;
+
+struct fs_struct;
+
+struct files_struct;
+
+struct io_uring_task;
+
+struct nsproxy;
+
+struct signal_struct;
+
+struct sighand_struct;
+
+struct audit_context;
+
+struct rt_mutex_waiter;
+
+struct bio_list;
+
+struct blk_plug;
+
+struct reclaim_state;
+
+struct io_context;
+
+struct capture_control;
+
+struct kernel_siginfo;
+
+typedef struct kernel_siginfo kernel_siginfo_t;
+
+struct css_set;
+
+struct robust_list_head;
+
+struct compat_robust_list_head;
+
+struct futex_pi_state;
+
+struct perf_event_context;
+
+struct task_delay_info;
+
+struct kunit;
+
+struct mem_cgroup;
+
+struct gendisk;
+
+struct uprobe_task;
+
+struct vm_struct;
+
+struct bpf_local_storage;
+
+struct bpf_run_ctx;
+
+struct task_struct {
+	struct thread_info thread_info;
+	unsigned int __state;
+	unsigned int saved_state;
+	void *stack;
+	refcount_t usage;
+	unsigned int flags;
+	unsigned int ptrace;
+	int on_cpu;
+	struct __call_single_node wake_entry;
+	unsigned int wakee_flips;
+	unsigned long wakee_flip_decay_ts;
+	struct task_struct *last_wakee;
+	int recent_used_cpu;
+	int wake_cpu;
+	int on_rq;
+	int prio;
+	int static_prio;
+	int normal_prio;
+	unsigned int rt_priority;
+	struct sched_entity se;
+	struct sched_rt_entity rt;
+	struct sched_dl_entity dl;
+	const struct sched_class *sched_class;
+	struct task_group *sched_task_group;
+	struct uclamp_se uclamp_req[2];
+	struct uclamp_se uclamp[2];
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct sched_statistics stats;
+	struct hlist_head preempt_notifiers;
+	unsigned int policy;
+	int nr_cpus_allowed;
+	const cpumask_t *cpus_ptr;
+	cpumask_t *user_cpus_ptr;
+	cpumask_t cpus_mask;
+	void *migration_pending;
+	unsigned short migration_disabled;
+	unsigned short migration_flags;
+	int rcu_read_lock_nesting;
+	union rcu_special rcu_read_unlock_special;
+	struct list_head rcu_node_entry;
+	struct rcu_node *rcu_blocked_node;
+	unsigned long rcu_tasks_nvcsw;
+	u8 rcu_tasks_holdout;
+	u8 rcu_tasks_idx;
+	int rcu_tasks_idle_cpu;
+	struct list_head rcu_tasks_holdout_list;
+	int trc_reader_nesting;
+	int trc_ipi_to_cpu;
+	union rcu_special trc_reader_special;
+	struct list_head trc_holdout_list;
+	struct list_head trc_blkd_node;
+	int trc_blkd_cpu;
+	struct sched_info sched_info;
+	struct list_head tasks;
+	struct plist_node pushable_tasks;
+	struct rb_node pushable_dl_tasks;
+	struct mm_struct *mm;
+	struct mm_struct *active_mm;
+	int exit_state;
+	int exit_code;
+	int exit_signal;
+	int pdeath_signal;
+	unsigned long jobctl;
+	unsigned int personality;
+	unsigned int sched_reset_on_fork: 1;
+	unsigned int sched_contributes_to_load: 1;
+	unsigned int sched_migrated: 1;
+	long: 29;
+	unsigned int sched_remote_wakeup: 1;
+	unsigned int in_execve: 1;
+	unsigned int in_iowait: 1;
+	unsigned int restore_sigmask: 1;
+	unsigned int in_user_fault: 1;
+	unsigned int in_lru_fault: 1;
+	unsigned int no_cgroup_migration: 1;
+	unsigned int frozen: 1;
+	unsigned int use_memdelay: 1;
+	unsigned int in_memstall: 1;
+	unsigned int in_page_owner: 1;
+	unsigned int in_eventfd: 1;
+	unsigned int reported_split_lock: 1;
+	unsigned int in_thrashing: 1;
+	unsigned long atomic_flags;
+	struct restart_block restart_block;
+	pid_t pid;
+	pid_t tgid;
+	unsigned long stack_canary;
+	struct task_struct __attribute__((btf_type_tag("rcu"))) *real_parent;
+	struct task_struct __attribute__((btf_type_tag("rcu"))) *parent;
+	struct list_head children;
+	struct list_head sibling;
+	struct task_struct *group_leader;
+	struct list_head ptraced;
+	struct list_head ptrace_entry;
+	struct pid *thread_pid;
+	struct hlist_node pid_links[4];
+	struct list_head thread_group;
+	struct list_head thread_node;
+	struct completion *vfork_done;
+	int __attribute__((btf_type_tag("user"))) *set_child_tid;
+	int __attribute__((btf_type_tag("user"))) *clear_child_tid;
+	void *worker_private;
+	u64 utime;
+	u64 stime;
+	u64 gtime;
+	u64 *time_in_state;
+	unsigned int max_state;
+	struct prev_cputime prev_cputime;
+	unsigned long nvcsw;
+	unsigned long nivcsw;
+	u64 start_time;
+	u64 start_boottime;
+	unsigned long min_flt;
+	unsigned long maj_flt;
+	struct posix_cputimers posix_cputimers;
+	struct posix_cputimers_work posix_cputimers_work;
+	const struct cred __attribute__((btf_type_tag("rcu"))) *ptracer_cred;
+	const struct cred __attribute__((btf_type_tag("rcu"))) *real_cred;
+	const struct cred __attribute__((btf_type_tag("rcu"))) *cred;
+	struct key *cached_requested_key;
+	char comm[16];
+	struct nameidata *nameidata;
+	unsigned long last_switch_count;
+	unsigned long last_switch_time;
+	struct fs_struct *fs;
+	struct files_struct *files;
+	struct io_uring_task *io_uring;
+	struct nsproxy *nsproxy;
+	struct signal_struct *signal;
+	struct sighand_struct __attribute__((btf_type_tag("rcu"))) *sighand;
+	sigset_t blocked;
+	sigset_t real_blocked;
+	sigset_t saved_sigmask;
+	struct sigpending pending;
+	unsigned long sas_ss_sp;
+	size_t sas_ss_size;
+	unsigned int sas_ss_flags;
+	struct callback_head *task_works;
+	struct audit_context *audit_context;
+	kuid_t loginuid;
+	unsigned int sessionid;
+	struct seccomp seccomp;
+	struct syscall_user_dispatch syscall_dispatch;
+	u64 parent_exec_id;
+	u64 self_exec_id;
+	spinlock_t alloc_lock;
+	raw_spinlock_t pi_lock;
+	struct wake_q_node wake_q;
+	int wake_q_count;
+	struct rb_root_cached pi_waiters;
+	struct task_struct *pi_top_task;
+	struct rt_mutex_waiter *pi_blocked_on;
+	void *journal_info;
+	struct bio_list *bio_list;
+	struct blk_plug *plug;
+	struct reclaim_state *reclaim_state;
+	struct io_context *io_context;
+	struct capture_control *capture_control;
+	unsigned long ptrace_message;
+	kernel_siginfo_t *last_siginfo;
+	struct task_io_accounting ioac;
+	unsigned int psi_flags;
+	u64 acct_rss_mem1;
+	u64 acct_vm_mem1;
+	u64 acct_timexpd;
+	nodemask_t mems_allowed;
+	seqcount_spinlock_t mems_allowed_seq;
+	int cpuset_mem_spread_rotor;
+	int cpuset_slab_spread_rotor;
+	struct css_set __attribute__((btf_type_tag("rcu"))) *cgroups;
+	struct list_head cg_list;
+	struct robust_list_head __attribute__((btf_type_tag("user"))) *robust_list;
+	struct compat_robust_list_head __attribute__((btf_type_tag("user"))) *compat_robust_list;
+	struct list_head pi_state_list;
+	struct futex_pi_state *pi_state_cache;
+	struct mutex futex_exit_mutex;
+	unsigned int futex_state;
+	struct perf_event_context *perf_event_ctxp;
+	struct mutex perf_event_mutex;
+	struct list_head perf_event_list;
+	struct tlbflush_unmap_batch tlb_ubc;
+	struct pipe_inode_info *splice_pipe;
+	struct page_frag task_frag;
+	struct task_delay_info *delays;
+	int nr_dirtied;
+	int nr_dirtied_pause;
+	unsigned long dirty_paused_when;
+	u64 timer_slack_ns;
+	u64 default_timer_slack_ns;
+	struct kunit *kunit_test;
+	unsigned long trace_recursion;
+	struct mem_cgroup *memcg_in_oom;
+	gfp_t memcg_oom_gfp_mask;
+	int memcg_oom_order;
+	unsigned int memcg_nr_pages_over_high;
+	struct mem_cgroup *active_memcg;
+	struct gendisk *throttle_disk;
+	struct uprobe_task *utask;
+	struct kmap_ctrl kmap_ctrl;
+	struct callback_head rcu;
+	refcount_t rcu_users;
+	int pagefault_disabled;
+	struct task_struct *oom_reaper_list;
+	struct timer_list oom_reaper_timer;
+	struct vm_struct *stack_vm_area;
+	refcount_t stack_refcount;
+	void *security;
+	struct bpf_local_storage __attribute__((btf_type_tag("rcu"))) *bpf_storage;
+	struct bpf_run_ctx *bpf_ctx;
+	u64 android_vendor_data1[64];
+	u64 android_oem_data1[6];
+	struct llist_head kretprobe_instances;
+	struct llist_head rethooks;
+	struct callback_head l1d_flush_kill;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+	u64 android_kabi_reserved5;
+	u64 android_kabi_reserved6;
+	u64 android_kabi_reserved7;
+	u64 android_kabi_reserved8;
+	long: 64;
+	struct thread_struct thread;
+};
+
+struct seqcount_raw_spinlock {
+	seqcount_t seqcount;
+};
+
+typedef struct seqcount_raw_spinlock seqcount_raw_spinlock_t;
+
+struct hrtimer_cpu_base;
+
+struct hrtimer_clock_base {
+	struct hrtimer_cpu_base *cpu_base;
+	unsigned int index;
+	clockid_t clockid;
+	seqcount_raw_spinlock_t seq;
+	struct hrtimer *running;
+	struct timerqueue_head active;
+	ktime_t (*get_time)();
+	ktime_t offset;
+};
+
+struct hrtimer_cpu_base {
+	raw_spinlock_t lock;
+	unsigned int cpu;
+	unsigned int active_bases;
+	unsigned int clock_was_set_seq;
+	unsigned int hres_active: 1;
+	unsigned int in_hrtirq: 1;
+	unsigned int hang_detected: 1;
+	unsigned int softirq_activated: 1;
+	unsigned int online: 1;
+	unsigned int nr_events;
+	unsigned short nr_retries;
+	unsigned short nr_hangs;
+	unsigned int max_hang_time;
+	ktime_t expires_next;
+	struct hrtimer *next_timer;
+	ktime_t softirq_expires_next;
+	struct hrtimer *softirq_next_timer;
+	struct hrtimer_clock_base clock_base[8];
+};
+
+struct rq;
+
+struct rq_flags;
+
+struct affinity_context;
+
+struct sched_class {
+	int uclamp_enabled;
+	void (*enqueue_task)(struct rq *, struct task_struct *, int);
+	void (*dequeue_task)(struct rq *, struct task_struct *, int);
+	void (*yield_task)(struct rq *);
+	bool (*yield_to_task)(struct rq *, struct task_struct *);
+	void (*check_preempt_curr)(struct rq *, struct task_struct *, int);
+	struct task_struct * (*pick_next_task)(struct rq *);
+	void (*put_prev_task)(struct rq *, struct task_struct *);
+	void (*set_next_task)(struct rq *, struct task_struct *, bool);
+	int (*balance)(struct rq *, struct task_struct *, struct rq_flags *);
+	int (*select_task_rq)(struct task_struct *, int, int);
+	struct task_struct * (*pick_task)(struct rq *);
+	void (*migrate_task_rq)(struct task_struct *, int);
+	void (*task_woken)(struct rq *, struct task_struct *);
+	void (*set_cpus_allowed)(struct task_struct *, struct affinity_context *);
+	void (*rq_online)(struct rq *);
+	void (*rq_offline)(struct rq *);
+	struct rq * (*find_lock_rq)(struct task_struct *, struct rq *);
+	void (*task_tick)(struct rq *, struct task_struct *, int);
+	void (*task_fork)(struct task_struct *);
+	void (*task_dead)(struct task_struct *);
+	void (*switched_from)(struct rq *, struct task_struct *);
+	void (*switched_to)(struct rq *, struct task_struct *);
+	void (*prio_changed)(struct rq *, struct task_struct *, int);
+	unsigned int (*get_rr_interval)(struct rq *, struct task_struct *);
+	void (*update_curr)(struct rq *);
+	void (*task_change_group)(struct task_struct *);
+};
+
+typedef struct {} lockdep_map_p;
+
+struct maple_tree {
+	union {
+		spinlock_t ma_lock;
+		lockdep_map_p ma_external_lock;
+	};
+	unsigned int ma_flags;
+	void __attribute__((btf_type_tag("rcu"))) *ma_root;
+};
+
+typedef unsigned long pgdval_t;
+
+typedef struct {
+	pgdval_t pgd;
+} pgd_t;
+
+struct percpu_counter {
+	raw_spinlock_t lock;
+	s64 count;
+	struct list_head list;
+	s32 __attribute__((btf_type_tag("percpu"))) *counters;
+};
+
+typedef short __s16;
+
+typedef __s16 s16;
+
+struct ldt_struct;
+
+struct vdso_image;
+
+typedef struct {
+	u64 ctx_id;
+	atomic64_t tlb_gen;
+	struct rw_semaphore ldt_usr_sem;
+	struct ldt_struct *ldt;
+	unsigned long flags;
+	struct mutex lock;
+	void __attribute__((btf_type_tag("user"))) *vdso;
+	const struct vdso_image *vdso_image;
+	atomic_t perf_rdpmc_allowed;
+	u16 pkey_allocation_map;
+	s16 execute_only_pkey;
+} mm_context_t;
+
+struct xol_area;
+
+struct uprobes_state {
+	struct xol_area *xol_area;
+};
+
+struct linux_binfmt;
+
+struct kioctx_table;
+
+struct mmu_notifier_subscriptions;
+
+struct mm_struct {
+	struct {
+		struct {
+			atomic_t mm_count;
+			long: 64;
+			long: 64;
+			long: 64;
+			long: 64;
+			long: 64;
+			long: 64;
+			long: 64;
+		};
+		struct maple_tree mm_mt;
+		unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long);
+		unsigned long mmap_base;
+		unsigned long mmap_legacy_base;
+		unsigned long mmap_compat_base;
+		unsigned long mmap_compat_legacy_base;
+		unsigned long task_size;
+		pgd_t *pgd;
+		atomic_t membarrier_state;
+		atomic_t mm_users;
+		atomic_long_t pgtables_bytes;
+		int map_count;
+		spinlock_t page_table_lock;
+		struct rw_semaphore mmap_lock;
+		struct list_head mmlist;
+		int mm_lock_seq;
+		unsigned long hiwater_rss;
+		unsigned long hiwater_vm;
+		unsigned long total_vm;
+		unsigned long locked_vm;
+		atomic64_t pinned_vm;
+		unsigned long data_vm;
+		unsigned long exec_vm;
+		unsigned long stack_vm;
+		unsigned long def_flags;
+		seqcount_t write_protect_seq;
+		spinlock_t arg_lock;
+		unsigned long start_code;
+		unsigned long end_code;
+		unsigned long start_data;
+		unsigned long end_data;
+		unsigned long start_brk;
+		unsigned long brk;
+		unsigned long start_stack;
+		unsigned long arg_start;
+		unsigned long arg_end;
+		unsigned long env_start;
+		unsigned long env_end;
+		unsigned long saved_auxv[52];
+		struct percpu_counter rss_stat[4];
+		struct linux_binfmt *binfmt;
+		mm_context_t context;
+		unsigned long flags;
+		spinlock_t ioctx_lock;
+		struct kioctx_table __attribute__((btf_type_tag("rcu"))) *ioctx_table;
+		struct task_struct __attribute__((btf_type_tag("rcu"))) *owner;
+		struct user_namespace *user_ns;
+		struct file __attribute__((btf_type_tag("rcu"))) *exe_file;
+		struct mmu_notifier_subscriptions *notifier_subscriptions;
+		atomic_t tlb_flush_pending;
+		atomic_t tlb_flush_batched;
+		struct uprobes_state uprobes_state;
+		struct work_struct async_put_work;
+		struct {
+			struct list_head list;
+			unsigned long bitmap;
+			struct mem_cgroup *memcg;
+		} lru_gen;
+		u64 android_kabi_reserved1;
+		u64 android_backport_reserved1;
+		long: 64;
+	};
+	unsigned long cpu_bitmap[0];
+};
+
+struct linux_binprm;
+
+struct coredump_params;
+
+struct linux_binfmt {
+	struct list_head lh;
+	struct module *module;
+	int (*load_binary)(struct linux_binprm *);
+	int (*load_shlib)(struct file *);
+	int (*core_dump)(struct coredump_params *);
+	unsigned long min_coredump;
+};
+
+struct rlimit {
+	__kernel_ulong_t rlim_cur;
+	__kernel_ulong_t rlim_max;
+};
+
+struct linux_binprm {
+	struct vm_area_struct *vma;
+	unsigned long vma_pages;
+	struct mm_struct *mm;
+	unsigned long p;
+	unsigned long argmin;
+	unsigned int have_execfd: 1;
+	unsigned int execfd_creds: 1;
+	unsigned int secureexec: 1;
+	unsigned int point_of_no_return: 1;
+	struct file *executable;
+	struct file *interpreter;
+	struct file *file;
+	struct cred *cred;
+	int unsafe;
+	unsigned int per_clear;
+	int argc;
+	int envc;
+	const char *filename;
+	const char *interp;
+	const char *fdpath;
+	unsigned int interp_flags;
+	int execfd;
+	unsigned long loader;
+	unsigned long exec;
+	struct rlimit rlim_stack;
+	char buf[256];
+};
+
+typedef unsigned long vm_flags_t;
+
+typedef unsigned long pgprotval_t;
+
+struct pgprot {
+	pgprotval_t pgprot;
+};
+
+typedef struct pgprot pgprot_t;
+
+struct userfaultfd_ctx;
+
+struct vm_userfaultfd_ctx {
+	struct userfaultfd_ctx *ctx;
+};
+
+struct vma_lock;
+
+struct anon_vma;
+
+struct vm_operations_struct;
+
+struct anon_vma_name;
+
+struct vm_area_struct {
+	union {
+		struct {
+			unsigned long vm_start;
+			unsigned long vm_end;
+		};
+		struct callback_head vm_rcu;
+	};
+	struct mm_struct *vm_mm;
+	pgprot_t vm_page_prot;
+	union {
+		const vm_flags_t vm_flags;
+		vm_flags_t __vm_flags;
+	};
+	bool detached;
+	int vm_lock_seq;
+	struct vma_lock *vm_lock;
+	struct {
+		struct rb_node rb;
+		unsigned long rb_subtree_last;
+	} shared;
+	struct list_head anon_vma_chain;
+	struct anon_vma *anon_vma;
+	const struct vm_operations_struct *vm_ops;
+	unsigned long vm_pgoff;
+	struct file *vm_file;
+	void *vm_private_data;
+	struct anon_vma_name *anon_name;
+	atomic_long_t swap_readahead_info;
+	struct vm_userfaultfd_ctx vm_userfaultfd_ctx;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct vma_lock {
+	struct rw_semaphore lock;
+};
+
+struct anon_vma {
+	struct anon_vma *root;
+	struct rw_semaphore rwsem;
+	atomic_t refcount;
+	unsigned long num_children;
+	unsigned long num_active_vmas;
+	struct anon_vma *parent;
+	struct rb_root_cached rb_root;
+};
+
+typedef unsigned int vm_fault_t;
+
+struct vm_fault;
+
+struct vm_operations_struct {
+	void (*open)(struct vm_area_struct *);
+	void (*close)(struct vm_area_struct *);
+	int (*may_split)(struct vm_area_struct *, unsigned long);
+	int (*mremap)(struct vm_area_struct *);
+	int (*mprotect)(struct vm_area_struct *, unsigned long, unsigned long, unsigned long);
+	vm_fault_t (*fault)(struct vm_fault *);
+	vm_fault_t (*huge_fault)(struct vm_fault *, unsigned int);
+	vm_fault_t (*map_pages)(struct vm_fault *, unsigned long, unsigned long);
+	unsigned long (*pagesize)(struct vm_area_struct *);
+	vm_fault_t (*page_mkwrite)(struct vm_fault *);
+	vm_fault_t (*pfn_mkwrite)(struct vm_fault *);
+	int (*access)(struct vm_area_struct *, unsigned long, void *, int, int);
+	const char * (*name)(struct vm_area_struct *);
+	struct page * (*find_special_page)(struct vm_area_struct *, unsigned long);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+typedef unsigned long pteval_t;
+
+typedef struct {
+	pteval_t pte;
+} pte_t;
+
+typedef unsigned long pmdval_t;
+
+typedef struct {
+	pmdval_t pmd;
+} pmd_t;
+
+enum fault_flag {
+	FAULT_FLAG_WRITE = 1,
+	FAULT_FLAG_MKWRITE = 2,
+	FAULT_FLAG_ALLOW_RETRY = 4,
+	FAULT_FLAG_RETRY_NOWAIT = 8,
+	FAULT_FLAG_KILLABLE = 16,
+	FAULT_FLAG_TRIED = 32,
+	FAULT_FLAG_USER = 64,
+	FAULT_FLAG_REMOTE = 128,
+	FAULT_FLAG_INSTRUCTION = 256,
+	FAULT_FLAG_INTERRUPTIBLE = 512,
+	FAULT_FLAG_UNSHARE = 1024,
+	FAULT_FLAG_ORIG_PTE_VALID = 2048,
+	FAULT_FLAG_VMA_LOCK = 4096,
+};
+
+typedef unsigned long pudval_t;
+
+typedef struct {
+	pudval_t pud;
+} pud_t;
+
+typedef struct page *pgtable_t;
+
+struct vm_fault {
+	struct {
+		struct vm_area_struct *vma;
+		gfp_t gfp_mask;
+		unsigned long pgoff;
+		unsigned long address;
+		unsigned long real_address;
+	};
+	enum fault_flag flags;
+	pmd_t *pmd;
+	pud_t *pud;
+	union {
+		pte_t orig_pte;
+		pmd_t orig_pmd;
+	};
+	struct page *cow_page;
+	struct page *page;
+	pte_t *pte;
+	spinlock_t *ptl;
+	pgtable_t prealloc_pte;
+};
+
+struct page_pool;
+
+struct dev_pagemap;
+
+struct page {
+	unsigned long flags;
+	union {
+		struct {
+			union {
+				struct list_head lru;
+				struct {
+					void *__filler;
+					unsigned int mlock_count;
+				};
+				struct list_head buddy_list;
+				struct list_head pcp_list;
+			};
+			struct address_space *mapping;
+			union {
+				unsigned long index;
+				unsigned long share;
+			};
+			unsigned long private;
+		};
+		struct {
+			unsigned long pp_magic;
+			struct page_pool *pp;
+			unsigned long _pp_mapping_pad;
+			unsigned long dma_addr;
+			union {
+				unsigned long dma_addr_upper;
+				atomic_long_t pp_frag_count;
+			};
+		};
+		struct {
+			unsigned long compound_head;
+		};
+		struct {
+			struct dev_pagemap *pgmap;
+			void *zone_device_data;
+		};
+		struct callback_head callback_head;
+	};
+	union {
+		atomic_t _mapcount;
+		unsigned int page_type;
+	};
+	atomic_t _refcount;
+	unsigned long memcg_data;
+};
+
+struct range {
+	u64 start;
+	u64 end;
+};
+
+struct vmem_altmap {
+	unsigned long base_pfn;
+	const unsigned long end_pfn;
+	const unsigned long reserve;
+	unsigned long free;
+	unsigned long align;
+	unsigned long alloc;
+};
+
+struct percpu_ref_data;
+
+struct percpu_ref {
+	unsigned long percpu_count_ptr;
+	struct percpu_ref_data *data;
+};
+
+struct swait_queue_head {
+	raw_spinlock_t lock;
+	struct list_head task_list;
+};
+
+struct completion {
+	unsigned int done;
+	struct swait_queue_head wait;
+};
+
+enum memory_type {
+	MEMORY_DEVICE_PRIVATE = 1,
+	MEMORY_DEVICE_COHERENT = 2,
+	MEMORY_DEVICE_FS_DAX = 3,
+	MEMORY_DEVICE_GENERIC = 4,
+	MEMORY_DEVICE_PCI_P2PDMA = 5,
+};
+
+struct dev_pagemap_ops;
+
+struct dev_pagemap {
+	struct vmem_altmap altmap;
+	struct percpu_ref ref;
+	struct completion done;
+	enum memory_type type;
+	unsigned int flags;
+	unsigned long vmemmap_shift;
+	const struct dev_pagemap_ops *ops;
+	void *owner;
+	int nr_range;
+	union {
+		struct range range;
+		struct {
+			struct {} __empty_ranges;
+			struct range ranges[0];
+		};
+	};
+};
+
+typedef void percpu_ref_func_t(struct percpu_ref *);
+
+struct percpu_ref_data {
+	atomic_long_t count;
+	percpu_ref_func_t *release;
+	percpu_ref_func_t *confirm_switch;
+	bool force_atomic: 1;
+	bool allow_reinit: 1;
+	struct callback_head rcu;
+	struct percpu_ref *ref;
+};
+
+struct dev_pagemap_ops {
+	void (*page_free)(struct page *);
+	vm_fault_t (*migrate_to_ram)(struct vm_fault *);
+	int (*memory_failure)(struct dev_pagemap *, unsigned long, unsigned long, int);
+};
+
+struct anon_vma_name {
+	struct kref kref;
+	char name[0];
+};
+
+struct userfaultfd_ctx {
+	wait_queue_head_t fault_pending_wqh;
+	wait_queue_head_t fault_wqh;
+	wait_queue_head_t fd_wqh;
+	wait_queue_head_t event_wqh;
+	seqcount_spinlock_t refile_seq;
+	refcount_t refcount;
+	unsigned int flags;
+	unsigned int features;
+	bool released;
+	struct rw_semaphore map_changing_lock;
+	atomic_t mmap_changing;
+	struct mm_struct *mm;
+};
+
+typedef struct {
+	u64 val;
+} kernel_cap_t;
+
+struct user_struct;
+
+struct group_info;
+
+struct cred {
+	atomic_long_t usage;
+	kuid_t uid;
+	kgid_t gid;
+	kuid_t suid;
+	kgid_t sgid;
+	kuid_t euid;
+	kgid_t egid;
+	kuid_t fsuid;
+	kgid_t fsgid;
+	unsigned int securebits;
+	kernel_cap_t cap_inheritable;
+	kernel_cap_t cap_permitted;
+	kernel_cap_t cap_effective;
+	kernel_cap_t cap_bset;
+	kernel_cap_t cap_ambient;
+	unsigned char jit_keyring;
+	struct key *session_keyring;
+	struct key *process_keyring;
+	struct key *thread_keyring;
+	struct key *request_key_auth;
+	void *security;
+	struct user_struct *user;
+	struct user_namespace *user_ns;
+	struct ucounts *ucounts;
+	struct group_info *group_info;
+	union {
+		int non_rcu;
+		struct callback_head rcu;
+	};
+};
+
+struct key_type;
+
+struct key_tag;
+
+struct keyring_index_key {
+	unsigned long hash;
+	union {
+		struct {
+			u16 desc_len;
+			char desc[6];
+		};
+		unsigned long x;
+	};
+	struct key_type *type;
+	struct key_tag *domain_tag;
+	const char *description;
+};
+
+struct assoc_array_ptr;
+
+struct assoc_array {
+	struct assoc_array_ptr *root;
+	unsigned long nr_leaves_on_tree;
+};
+
+union key_payload {
+	void __attribute__((btf_type_tag("rcu"))) *rcu_data0;
+	void *data[4];
+};
+
+typedef s32 int32_t;
+
+typedef int32_t key_serial_t;
+
+typedef u32 uint32_t;
+
+typedef uint32_t key_perm_t;
+
+struct key_user;
+
+struct key_restriction;
+
+struct key {
+	refcount_t usage;
+	key_serial_t serial;
+	union {
+		struct list_head graveyard_link;
+		struct rb_node serial_node;
+	};
+	struct rw_semaphore sem;
+	struct key_user *user;
+	void *security;
+	union {
+		time64_t expiry;
+		time64_t revoked_at;
+	};
+	time64_t last_used_at;
+	kuid_t uid;
+	kgid_t gid;
+	key_perm_t perm;
+	unsigned short quotalen;
+	unsigned short datalen;
+	short state;
+	unsigned long flags;
+	union {
+		struct keyring_index_key index_key;
+		struct {
+			unsigned long hash;
+			unsigned long len_desc;
+			struct key_type *type;
+			struct key_tag *domain_tag;
+			char *description;
+		};
+	};
+	union {
+		union key_payload payload;
+		struct {
+			struct list_head name_link;
+			struct assoc_array keys;
+		};
+	};
+	struct key_restriction *restrict_link;
+};
+
+struct key_tag {
+	struct callback_head rcu;
+	refcount_t usage;
+	bool removed;
+};
+
+typedef int (*key_restrict_link_func_t)(struct key *, const struct key_type *, const union key_payload *, struct key *);
+
+struct key_restriction {
+	key_restrict_link_func_t check;
+	struct key *key;
+	struct key_type *keytype;
+};
+
+typedef int (*request_key_actor_t)(struct key *, void *);
+
+struct key_preparsed_payload;
+
+struct key_match_data;
+
+struct seq_file;
+
+struct kernel_pkey_params;
+
+struct kernel_pkey_query;
+
+struct key_type {
+	const char *name;
+	size_t def_datalen;
+	unsigned int flags;
+	int (*vet_description)(const char *);
+	int (*preparse)(struct key_preparsed_payload *);
+	void (*free_preparse)(struct key_preparsed_payload *);
+	int (*instantiate)(struct key *, struct key_preparsed_payload *);
+	int (*update)(struct key *, struct key_preparsed_payload *);
+	int (*match_preparse)(struct key_match_data *);
+	void (*match_free)(struct key_match_data *);
+	void (*revoke)(struct key *);
+	void (*destroy)(struct key *);
+	void (*describe)(const struct key *, struct seq_file *);
+	long (*read)(const struct key *, char *, size_t);
+	request_key_actor_t request_key;
+	struct key_restriction * (*lookup_restriction)(const char *);
+	int (*asym_query)(const struct kernel_pkey_params *, struct kernel_pkey_query *);
+	int (*asym_eds_op)(struct kernel_pkey_params *, const void *, void *);
+	int (*asym_verify_signature)(struct kernel_pkey_params *, const void *, const void *);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	struct list_head link;
+	struct lock_class_key lock_class;
+};
+
+struct ratelimit_state {
+	raw_spinlock_t lock;
+	int interval;
+	int burst;
+	int printed;
+	int missed;
+	unsigned long begin;
+	unsigned long flags;
+};
+
+struct user_struct {
+	refcount_t __count;
+	struct percpu_counter epoll_watches;
+	unsigned long unix_inflight;
+	atomic_long_t pipe_bufs;
+	struct hlist_node uidhash_node;
+	kuid_t uid;
+	atomic_long_t locked_vm;
+	struct ratelimit_state ratelimit;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_oem_data1[2];
+};
+
+struct uid_gid_extent {
+	u32 first;
+	u32 lower_first;
+	u32 count;
+};
+
+struct uid_gid_map {
+	u32 nr_extents;
+	union {
+		struct uid_gid_extent extent[5];
+		struct {
+			struct uid_gid_extent *forward;
+			struct uid_gid_extent *reverse;
+		};
+	};
+};
+
+struct ctl_table;
+
+struct ctl_table_root;
+
+struct ctl_table_set;
+
+struct ctl_dir;
+
+struct ctl_node;
+
+struct ctl_table_header {
+	union {
+		struct {
+			struct ctl_table *ctl_table;
+			int ctl_table_size;
+			int used;
+			int count;
+			int nreg;
+		};
+		struct callback_head rcu;
+	};
+	struct completion *unregistering;
+	struct ctl_table *ctl_table_arg;
+	struct ctl_table_root *root;
+	struct ctl_table_set *set;
+	struct ctl_dir *parent;
+	struct ctl_node *node;
+	struct hlist_head inodes;
+};
+
+struct ctl_dir {
+	struct ctl_table_header header;
+	struct rb_root root;
+};
+
+struct ctl_table_set {
+	int (*is_seen)(struct ctl_table_set *);
+	struct ctl_dir dir;
+};
+
+struct user_namespace {
+	struct uid_gid_map uid_map;
+	struct uid_gid_map gid_map;
+	struct uid_gid_map projid_map;
+	struct user_namespace *parent;
+	int level;
+	kuid_t owner;
+	kgid_t group;
+	struct ns_common ns;
+	unsigned long flags;
+	bool parent_could_setfcap;
+	struct list_head keyring_name_list;
+	struct key *user_keyring_register;
+	struct rw_semaphore keyring_sem;
+	struct work_struct work;
+	struct ctl_table_set set;
+	struct ctl_table_header *sysctls;
+	struct ucounts *ucounts;
+	long ucount_max[10];
+	long rlimit_max[4];
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct nsset;
+
+struct proc_ns_operations {
+	const char *name;
+	const char *real_ns_name;
+	int type;
+	struct ns_common * (*get)(struct task_struct *);
+	void (*put)(struct ns_common *);
+	int (*install)(struct nsset *, struct ns_common *);
+	struct user_namespace * (*owner)(struct ns_common *);
+	struct ns_common * (*get_parent)(struct ns_common *);
+};
+
+struct nsset {
+	unsigned int flags;
+	struct nsproxy *nsproxy;
+	struct fs_struct *fs;
+	const struct cred *cred;
+};
+
+struct uts_namespace;
+
+struct ipc_namespace;
+
+struct mnt_namespace;
+
+struct time_namespace;
+
+struct cgroup_namespace;
+
+struct nsproxy {
+	refcount_t count;
+	struct uts_namespace *uts_ns;
+	struct ipc_namespace *ipc_ns;
+	struct mnt_namespace *mnt_ns;
+	struct pid_namespace *pid_ns_for_children;
+	struct net *net_ns;
+	struct time_namespace *time_ns;
+	struct time_namespace *time_ns_for_children;
+	struct cgroup_namespace *cgroup_ns;
+};
+
+struct new_utsname {
+	char sysname[65];
+	char nodename[65];
+	char release[65];
+	char version[65];
+	char machine[65];
+	char domainname[65];
+};
+
+struct uts_namespace {
+	struct new_utsname name;
+	struct user_namespace *user_ns;
+	struct ucounts *ucounts;
+	struct ns_common ns;
+};
+
+struct ucounts {
+	struct hlist_node node;
+	struct user_namespace *ns;
+	kuid_t uid;
+	atomic_t count;
+	atomic_long_t ucount[10];
+	atomic_long_t rlimit[4];
+};
+
+struct ref_tracker_dir {};
+
+struct notifier_block;
+
+struct raw_notifier_head {
+	struct notifier_block __attribute__((btf_type_tag("rcu"))) *head;
+};
+
+struct prot_inuse;
+
+struct netns_core {
+	struct ctl_table_header *sysctl_hdr;
+	int sysctl_somaxconn;
+	u8 sysctl_txrehash;
+	struct prot_inuse __attribute__((btf_type_tag("percpu"))) *prot_inuse;
+	struct cpumask *rps_default_mask;
+};
+
+struct ipstats_mib;
+
+struct tcp_mib;
+
+struct linux_mib;
+
+struct udp_mib;
+
+struct linux_xfrm_mib;
+
+struct icmp_mib;
+
+struct icmpmsg_mib;
+
+struct icmpv6_mib;
+
+struct icmpv6msg_mib;
+
+struct proc_dir_entry;
+
+struct netns_mib {
+	struct ipstats_mib __attribute__((btf_type_tag("percpu"))) *ip_statistics;
+	struct ipstats_mib __attribute__((btf_type_tag("percpu"))) *ipv6_statistics;
+	struct tcp_mib __attribute__((btf_type_tag("percpu"))) *tcp_statistics;
+	struct linux_mib __attribute__((btf_type_tag("percpu"))) *net_statistics;
+	struct udp_mib __attribute__((btf_type_tag("percpu"))) *udp_statistics;
+	struct udp_mib __attribute__((btf_type_tag("percpu"))) *udp_stats_in6;
+	struct linux_xfrm_mib __attribute__((btf_type_tag("percpu"))) *xfrm_statistics;
+	struct udp_mib __attribute__((btf_type_tag("percpu"))) *udplite_statistics;
+	struct udp_mib __attribute__((btf_type_tag("percpu"))) *udplite_stats_in6;
+	struct icmp_mib __attribute__((btf_type_tag("percpu"))) *icmp_statistics;
+	struct icmpmsg_mib *icmpmsg_statistics;
+	struct icmpv6_mib __attribute__((btf_type_tag("percpu"))) *icmpv6_statistics;
+	struct icmpv6msg_mib *icmpv6msg_statistics;
+	struct proc_dir_entry *proc_net_devsnmp6;
+};
+
+struct netns_packet {
+	struct mutex sklist_lock;
+	struct hlist_head sklist;
+};
+
+struct unix_table {
+	spinlock_t *locks;
+	struct hlist_head *buckets;
+};
+
+struct netns_unix {
+	struct unix_table table;
+	int sysctl_max_dgram_qlen;
+	struct ctl_table_header *ctl;
+};
+
+struct blocking_notifier_head {
+	struct rw_semaphore rwsem;
+	struct notifier_block __attribute__((btf_type_tag("rcu"))) *head;
+};
+
+struct netns_nexthop {
+	struct rb_root rb_root;
+	struct hlist_head *devhash;
+	unsigned int seq;
+	u32 last_id_allocated;
+	struct blocking_notifier_head notifier_chain;
+};
+
+struct inet_hashinfo;
+
+struct inet_timewait_death_row {
+	refcount_t tw_refcount;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct inet_hashinfo *hashinfo;
+	int sysctl_max_tw_buckets;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+typedef struct {
+	seqcount_spinlock_t seqcount;
+	spinlock_t lock;
+} seqlock_t;
+
+struct local_ports {
+	seqlock_t lock;
+	int range[2];
+	bool warned;
+};
+
+struct ping_group_range {
+	seqlock_t lock;
+	kgid_t range[2];
+};
+
+typedef struct {
+	u64 key[2];
+} siphash_key_t;
+
+struct udp_table;
+
+struct ipv4_devconf;
+
+struct ip_ra_chain;
+
+struct fib_rules_ops;
+
+struct fib_table;
+
+struct sock;
+
+struct inet_peer_base;
+
+struct fqdir;
+
+struct tcp_congestion_ops;
+
+struct tcp_fastopen_context;
+
+struct fib_notifier_ops;
+
+struct netns_ipv4 {
+	struct inet_timewait_death_row tcp_death_row;
+	struct udp_table *udp_table;
+	struct ctl_table_header *forw_hdr;
+	struct ctl_table_header *frags_hdr;
+	struct ctl_table_header *ipv4_hdr;
+	struct ctl_table_header *route_hdr;
+	struct ctl_table_header *xfrm4_hdr;
+	struct ipv4_devconf *devconf_all;
+	struct ipv4_devconf *devconf_dflt;
+	struct ip_ra_chain __attribute__((btf_type_tag("rcu"))) *ra_chain;
+	struct mutex ra_mutex;
+	struct fib_rules_ops *rules_ops;
+	struct fib_table __attribute__((btf_type_tag("rcu"))) *fib_main;
+	struct fib_table __attribute__((btf_type_tag("rcu"))) *fib_default;
+	unsigned int fib_rules_require_fldissect;
+	bool fib_has_custom_rules;
+	bool fib_has_custom_local_routes;
+	bool fib_offload_disabled;
+	u8 sysctl_tcp_shrink_window;
+	struct hlist_head *fib_table_hash;
+	struct sock *fibnl;
+	struct sock *mc_autojoin_sk;
+	struct inet_peer_base *peers;
+	struct fqdir *fqdir;
+	u8 sysctl_icmp_echo_ignore_all;
+	u8 sysctl_icmp_echo_enable_probe;
+	u8 sysctl_icmp_echo_ignore_broadcasts;
+	u8 sysctl_icmp_ignore_bogus_error_responses;
+	u8 sysctl_icmp_errors_use_inbound_ifaddr;
+	int sysctl_icmp_ratelimit;
+	int sysctl_icmp_ratemask;
+	u32 ip_rt_min_pmtu;
+	int ip_rt_mtu_expires;
+	int ip_rt_min_advmss;
+	struct local_ports ip_local_ports;
+	u8 sysctl_tcp_ecn;
+	u8 sysctl_tcp_ecn_fallback;
+	u8 sysctl_ip_default_ttl;
+	u8 sysctl_ip_no_pmtu_disc;
+	u8 sysctl_ip_fwd_use_pmtu;
+	u8 sysctl_ip_fwd_update_priority;
+	u8 sysctl_ip_nonlocal_bind;
+	u8 sysctl_ip_autobind_reuse;
+	u8 sysctl_ip_dynaddr;
+	u8 sysctl_ip_early_demux;
+	u8 sysctl_tcp_early_demux;
+	u8 sysctl_udp_early_demux;
+	u8 sysctl_nexthop_compat_mode;
+	u8 sysctl_fwmark_reflect;
+	u8 sysctl_tcp_fwmark_accept;
+	u8 sysctl_tcp_mtu_probing;
+	int sysctl_tcp_mtu_probe_floor;
+	int sysctl_tcp_base_mss;
+	int sysctl_tcp_min_snd_mss;
+	int sysctl_tcp_probe_threshold;
+	u32 sysctl_tcp_probe_interval;
+	int sysctl_tcp_keepalive_time;
+	int sysctl_tcp_keepalive_intvl;
+	u8 sysctl_tcp_keepalive_probes;
+	u8 sysctl_tcp_syn_retries;
+	u8 sysctl_tcp_synack_retries;
+	u8 sysctl_tcp_syncookies;
+	u8 sysctl_tcp_migrate_req;
+	u8 sysctl_tcp_comp_sack_nr;
+	int sysctl_tcp_reordering;
+	u8 sysctl_tcp_retries1;
+	u8 sysctl_tcp_retries2;
+	u8 sysctl_tcp_orphan_retries;
+	u8 sysctl_tcp_tw_reuse;
+	int sysctl_tcp_fin_timeout;
+	unsigned int sysctl_tcp_notsent_lowat;
+	u8 sysctl_tcp_sack;
+	u8 sysctl_tcp_window_scaling;
+	u8 sysctl_tcp_timestamps;
+	u8 sysctl_tcp_early_retrans;
+	u8 sysctl_tcp_recovery;
+	u8 sysctl_tcp_thin_linear_timeouts;
+	u8 sysctl_tcp_slow_start_after_idle;
+	u8 sysctl_tcp_retrans_collapse;
+	u8 sysctl_tcp_stdurg;
+	u8 sysctl_tcp_rfc1337;
+	u8 sysctl_tcp_abort_on_overflow;
+	u8 sysctl_tcp_fack;
+	int sysctl_tcp_max_reordering;
+	int sysctl_tcp_adv_win_scale;
+	u8 sysctl_tcp_dsack;
+	u8 sysctl_tcp_app_win;
+	u8 sysctl_tcp_frto;
+	u8 sysctl_tcp_nometrics_save;
+	u8 sysctl_tcp_no_ssthresh_metrics_save;
+	u8 sysctl_tcp_moderate_rcvbuf;
+	u8 sysctl_tcp_tso_win_divisor;
+	u8 sysctl_tcp_workaround_signed_windows;
+	int sysctl_tcp_limit_output_bytes;
+	int sysctl_tcp_challenge_ack_limit;
+	int sysctl_tcp_min_rtt_wlen;
+	u8 sysctl_tcp_min_tso_segs;
+	u8 sysctl_tcp_tso_rtt_log;
+	u8 sysctl_tcp_autocorking;
+	u8 sysctl_tcp_reflect_tos;
+	int sysctl_tcp_invalid_ratelimit;
+	int sysctl_tcp_pacing_ss_ratio;
+	int sysctl_tcp_pacing_ca_ratio;
+	int sysctl_tcp_wmem[3];
+	int sysctl_tcp_rmem[3];
+	unsigned int sysctl_tcp_child_ehash_entries;
+	unsigned long sysctl_tcp_comp_sack_delay_ns;
+	unsigned long sysctl_tcp_comp_sack_slack_ns;
+	int sysctl_max_syn_backlog;
+	int sysctl_tcp_fastopen;
+	const struct tcp_congestion_ops __attribute__((btf_type_tag("rcu"))) *tcp_congestion_control;
+	struct tcp_fastopen_context __attribute__((btf_type_tag("rcu"))) *tcp_fastopen_ctx;
+	unsigned int sysctl_tcp_fastopen_blackhole_timeout;
+	atomic_t tfo_active_disable_times;
+	unsigned long tfo_active_disable_stamp;
+	u32 tcp_challenge_timestamp;
+	u32 tcp_challenge_count;
+	u8 sysctl_tcp_plb_enabled;
+	u8 sysctl_tcp_plb_idle_rehash_rounds;
+	u8 sysctl_tcp_plb_rehash_rounds;
+	u8 sysctl_tcp_plb_suspend_rto_sec;
+	int sysctl_tcp_plb_cong_thresh;
+	int sysctl_udp_wmem_min;
+	int sysctl_udp_rmem_min;
+	u8 sysctl_fib_notify_on_flag_change;
+	u8 sysctl_tcp_syn_linear_timeouts;
+	u8 sysctl_igmp_llm_reports;
+	int sysctl_igmp_max_memberships;
+	int sysctl_igmp_max_msf;
+	int sysctl_igmp_qrv;
+	struct ping_group_range ping_group_range;
+	atomic_t dev_addr_genid;
+	unsigned int sysctl_udp_child_hash_entries;
+	unsigned long *sysctl_local_reserved_ports;
+	int sysctl_ip_prot_sock;
+	struct fib_notifier_ops *notifier_ops;
+	unsigned int fib_seq;
+	struct fib_notifier_ops *ipmr_notifier_ops;
+	unsigned int ipmr_seq;
+	atomic_t rt_genid;
+	siphash_key_t ip_id_key;
+	u64 android_kabi_reserved1;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct dst_entry;
+
+struct net_device;
+
+struct sk_buff;
+
+struct neighbour;
+
+struct dst_ops {
+	unsigned short family;
+	unsigned int gc_thresh;
+	void (*gc)(struct dst_ops *);
+	struct dst_entry * (*check)(struct dst_entry *, __u32);
+	unsigned int (*default_advmss)(const struct dst_entry *);
+	unsigned int (*mtu)(const struct dst_entry *);
+	u32 * (*cow_metrics)(struct dst_entry *, unsigned long);
+	void (*destroy)(struct dst_entry *);
+	void (*ifdown)(struct dst_entry *, struct net_device *);
+	struct dst_entry * (*negative_advice)(struct dst_entry *);
+	void (*link_failure)(struct sk_buff *);
+	void (*update_pmtu)(struct dst_entry *, struct sock *, struct sk_buff *, u32, bool);
+	void (*redirect)(struct dst_entry *, struct sock *, struct sk_buff *);
+	int (*local_out)(struct net *, struct sock *, struct sk_buff *);
+	struct neighbour * (*neigh_lookup)(const struct dst_entry *, struct sk_buff *, const void *);
+	void (*confirm_neigh)(const struct dst_entry *, const void *);
+	struct kmem_cache *kmem_cachep;
+	struct percpu_counter pcpuc_entries;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct netns_sysctl_ipv6 {
+	struct ctl_table_header *hdr;
+	struct ctl_table_header *route_hdr;
+	struct ctl_table_header *icmp_hdr;
+	struct ctl_table_header *frags_hdr;
+	struct ctl_table_header *xfrm6_hdr;
+	int flush_delay;
+	int ip6_rt_max_size;
+	int ip6_rt_gc_min_interval;
+	int ip6_rt_gc_timeout;
+	int ip6_rt_gc_interval;
+	int ip6_rt_gc_elasticity;
+	int ip6_rt_mtu_expires;
+	int ip6_rt_min_advmss;
+	u32 multipath_hash_fields;
+	u8 multipath_hash_policy;
+	u8 bindv6only;
+	u8 flowlabel_consistency;
+	u8 auto_flowlabels;
+	int icmpv6_time;
+	u8 icmpv6_echo_ignore_all;
+	u8 icmpv6_echo_ignore_multicast;
+	u8 icmpv6_echo_ignore_anycast;
+	unsigned long icmpv6_ratemask[4];
+	unsigned long *icmpv6_ratemask_ptr;
+	u8 anycast_src_echo_reply;
+	u8 ip_nonlocal_bind;
+	u8 fwmark_reflect;
+	u8 flowlabel_state_ranges;
+	int idgen_retries;
+	int idgen_delay;
+	int flowlabel_reflect;
+	int max_dst_opts_cnt;
+	int max_hbh_opts_cnt;
+	int max_dst_opts_len;
+	int max_hbh_opts_len;
+	int seg6_flowlabel;
+	u32 ioam6_id;
+	u64 ioam6_id_wide;
+	u8 skip_notify_on_dev_down;
+	u8 fib_notify_on_flag_change;
+	u8 icmpv6_error_anycast_as_unicast;
+	u64 android_kabi_reserved1;
+};
+
+struct delayed_work {
+	struct work_struct work;
+	struct timer_list timer;
+	struct workqueue_struct *wq;
+	int cpu;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct ipv6_devconf;
+
+struct fib6_info;
+
+struct rt6_info;
+
+struct rt6_statistics;
+
+struct fib6_table;
+
+struct seg6_pernet_data;
+
+struct ioam6_pernet_data;
+
+struct netns_ipv6 {
+	struct dst_ops ip6_dst_ops;
+	struct netns_sysctl_ipv6 sysctl;
+	struct ipv6_devconf *devconf_all;
+	struct ipv6_devconf *devconf_dflt;
+	struct inet_peer_base *peers;
+	struct fqdir *fqdir;
+	struct fib6_info *fib6_null_entry;
+	struct rt6_info *ip6_null_entry;
+	struct rt6_statistics *rt6_stats;
+	struct timer_list ip6_fib_timer;
+	struct hlist_head *fib_table_hash;
+	struct fib6_table *fib6_main_tbl;
+	struct list_head fib6_walkers;
+	rwlock_t fib6_walker_lock;
+	spinlock_t fib6_gc_lock;
+	atomic_t ip6_rt_gc_expire;
+	unsigned long ip6_rt_last_gc;
+	unsigned char flowlabel_has_excl;
+	bool fib6_has_custom_rules;
+	unsigned int fib6_rules_require_fldissect;
+	struct rt6_info *ip6_prohibit_entry;
+	struct rt6_info *ip6_blk_hole_entry;
+	struct fib6_table *fib6_local_tbl;
+	struct fib_rules_ops *fib6_rules_ops;
+	struct sock *ndisc_sk;
+	struct sock *tcp_sk;
+	struct sock *igmp_sk;
+	struct sock *mc_autojoin_sk;
+	struct hlist_head *inet6_addr_lst;
+	spinlock_t addrconf_hash_lock;
+	struct delayed_work addr_chk_work;
+	struct list_head mr6_tables;
+	struct fib_rules_ops *mr6_rules_ops;
+	atomic_t dev_addr_genid;
+	atomic_t fib6_sernum;
+	struct seg6_pernet_data *seg6_data;
+	struct fib_notifier_ops *notifier_ops;
+	struct fib_notifier_ops *ip6mr_notifier_ops;
+	unsigned int ipmr_seq;
+	struct {
+		struct hlist_head head;
+		spinlock_t lock;
+		u32 seq;
+	} ip6addrlbl_table;
+	struct ioam6_pernet_data *ioam6_data;
+	u64 android_kabi_reserved1;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct netns_sysctl_lowpan {
+	struct ctl_table_header *frags_hdr;
+};
+
+struct netns_ieee802154_lowpan {
+	struct netns_sysctl_lowpan sysctl;
+	struct fqdir *fqdir;
+};
+
+struct nf_logger;
+
+struct nf_hook_entries;
+
+struct netns_nf {
+	struct proc_dir_entry *proc_netfilter;
+	const struct nf_logger __attribute__((btf_type_tag("rcu"))) *nf_loggers[11];
+	struct ctl_table_header *nf_log_dir_header;
+	struct nf_hook_entries __attribute__((btf_type_tag("rcu"))) *hooks_ipv4[5];
+	struct nf_hook_entries __attribute__((btf_type_tag("rcu"))) *hooks_ipv6[5];
+	struct nf_hook_entries __attribute__((btf_type_tag("rcu"))) *hooks_arp[3];
+	unsigned int defrag_ipv4_users;
+	unsigned int defrag_ipv6_users;
+	u64 android_kabi_reserved1;
+};
+
+struct nf_generic_net {
+	unsigned int timeout;
+};
+
+struct nf_tcp_net {
+	unsigned int timeouts[14];
+	u8 tcp_loose;
+	u8 tcp_be_liberal;
+	u8 tcp_max_retrans;
+	u8 tcp_ignore_invalid_rst;
+};
+
+struct nf_udp_net {
+	unsigned int timeouts[2];
+};
+
+struct nf_icmp_net {
+	unsigned int timeout;
+};
+
+struct nf_dccp_net {
+	u8 dccp_loose;
+	unsigned int dccp_timeout[10];
+};
+
+struct nf_sctp_net {
+	unsigned int timeouts[10];
+};
+
+struct nf_gre_net {
+	struct list_head keymap_list;
+	unsigned int timeouts[2];
+};
+
+struct nf_ip_net {
+	struct nf_generic_net generic;
+	struct nf_tcp_net tcp;
+	struct nf_udp_net udp;
+	struct nf_icmp_net icmp;
+	struct nf_icmp_net icmpv6;
+	struct nf_dccp_net dccp;
+	struct nf_sctp_net sctp;
+	struct nf_gre_net gre;
+};
+
+struct ip_conntrack_stat;
+
+struct nf_ct_event_notifier;
+
+struct netns_ct {
+	bool ecache_dwork_pending;
+	u8 sysctl_log_invalid;
+	u8 sysctl_events;
+	u8 sysctl_acct;
+	u8 sysctl_tstamp;
+	u8 sysctl_checksum;
+	struct ip_conntrack_stat __attribute__((btf_type_tag("percpu"))) *stat;
+	struct nf_ct_event_notifier __attribute__((btf_type_tag("rcu"))) *nf_conntrack_event_cb;
+	struct nf_ip_net nf_ct_proto;
+};
+
+struct sk_buff_list {
+	struct sk_buff *next;
+	struct sk_buff *prev;
+};
+
+struct sk_buff_head {
+	union {
+		struct {
+			struct sk_buff *next;
+			struct sk_buff *prev;
+		};
+		struct sk_buff_list list;
+	};
+	__u32 qlen;
+	spinlock_t lock;
+};
+
+struct bpf_prog_array;
+
+struct bpf_prog;
+
+struct netns_bpf {
+	struct bpf_prog_array __attribute__((btf_type_tag("rcu"))) *run_array[2];
+	struct bpf_prog *progs[2];
+	struct list_head links[2];
+};
+
+struct xfrm_policy_hash {
+	struct hlist_head __attribute__((btf_type_tag("rcu"))) *table;
+	unsigned int hmask;
+	u8 dbits4;
+	u8 sbits4;
+	u8 dbits6;
+	u8 sbits6;
+};
+
+struct xfrm_policy_hthresh {
+	struct work_struct work;
+	seqlock_t lock;
+	u8 lbits4;
+	u8 rbits4;
+	u8 lbits6;
+	u8 rbits6;
+};
+
+struct netns_xfrm {
+	struct list_head state_all;
+	struct hlist_head __attribute__((btf_type_tag("rcu"))) *state_bydst;
+	struct hlist_head __attribute__((btf_type_tag("rcu"))) *state_bysrc;
+	struct hlist_head __attribute__((btf_type_tag("rcu"))) *state_byspi;
+	struct hlist_head __attribute__((btf_type_tag("rcu"))) *state_byseq;
+	unsigned int state_hmask;
+	unsigned int state_num;
+	struct work_struct state_hash_work;
+	struct list_head policy_all;
+	struct hlist_head *policy_byidx;
+	unsigned int policy_idx_hmask;
+	unsigned int idx_generator;
+	struct hlist_head policy_inexact[3];
+	struct xfrm_policy_hash policy_bydst[3];
+	unsigned int policy_count[6];
+	struct work_struct policy_hash_work;
+	struct xfrm_policy_hthresh policy_hthresh;
+	struct list_head inexact_bins;
+	struct sock *nlsk;
+	struct sock *nlsk_stash;
+	u32 sysctl_aevent_etime;
+	u32 sysctl_aevent_rseqth;
+	int sysctl_larval_drop;
+	u32 sysctl_acq_expires;
+	u8 policy_default[3];
+	struct ctl_table_header *sysctl_hdr;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct dst_ops xfrm4_dst_ops;
+	struct dst_ops xfrm6_dst_ops;
+	spinlock_t xfrm_state_lock;
+	seqcount_spinlock_t xfrm_state_hash_generation;
+	seqcount_spinlock_t xfrm_policy_hash_generation;
+	spinlock_t xfrm_policy_lock;
+	struct mutex xfrm_cfg_mutex;
+	u64 android_kabi_reserved1;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct can_dev_rcv_lists;
+
+struct can_pkg_stats;
+
+struct can_rcv_lists_stats;
+
+struct netns_can {
+	struct proc_dir_entry *proc_dir;
+	struct proc_dir_entry *pde_stats;
+	struct proc_dir_entry *pde_reset_stats;
+	struct proc_dir_entry *pde_rcvlist_all;
+	struct proc_dir_entry *pde_rcvlist_fil;
+	struct proc_dir_entry *pde_rcvlist_inv;
+	struct proc_dir_entry *pde_rcvlist_sff;
+	struct proc_dir_entry *pde_rcvlist_eff;
+	struct proc_dir_entry *pde_rcvlist_err;
+	struct proc_dir_entry *bcmproc_dir;
+	struct can_dev_rcv_lists *rx_alldev_list;
+	spinlock_t rcvlists_lock;
+	struct timer_list stattimer;
+	struct can_pkg_stats *pkg_stats;
+	struct can_rcv_lists_stats *rcv_lists_stats;
+	struct hlist_head cgw_list;
+	u64 android_kabi_reserved1;
+};
+
+struct netns_xdp {
+	struct mutex lock;
+	struct hlist_head list;
+};
+
+struct uevent_sock;
+
+struct net_generic;
+
+struct net {
+	refcount_t passive;
+	spinlock_t rules_mod_lock;
+	atomic_t dev_unreg_count;
+	unsigned int dev_base_seq;
+	u32 ifindex;
+	spinlock_t nsid_lock;
+	atomic_t fnhe_genid;
+	struct list_head list;
+	struct list_head exit_list;
+	struct llist_node cleanup_list;
+	struct key_tag *key_domain;
+	struct user_namespace *user_ns;
+	struct ucounts *ucounts;
+	struct idr netns_ids;
+	struct ns_common ns;
+	struct ref_tracker_dir refcnt_tracker;
+	struct ref_tracker_dir notrefcnt_tracker;
+	struct list_head dev_base_head;
+	struct proc_dir_entry *proc_net;
+	struct proc_dir_entry *proc_net_stat;
+	struct ctl_table_set sysctls;
+	struct sock *rtnl;
+	struct sock *genl_sock;
+	struct uevent_sock *uevent_sock;
+	struct hlist_head *dev_name_head;
+	struct hlist_head *dev_index_head;
+	struct xarray dev_by_index;
+	struct raw_notifier_head netdev_chain;
+	u32 hash_mix;
+	struct net_device *loopback_dev;
+	struct list_head rules_ops;
+	struct netns_core core;
+	struct netns_mib mib;
+	struct netns_packet packet;
+	struct netns_unix unx;
+	struct netns_nexthop nexthop;
+	long: 64;
+	struct netns_ipv4 ipv4;
+	struct netns_ipv6 ipv6;
+	struct netns_ieee802154_lowpan ieee802154_lowpan;
+	struct netns_nf nf;
+	struct netns_ct ct;
+	struct sk_buff_head wext_nlevents;
+	struct net_generic __attribute__((btf_type_tag("rcu"))) *gen;
+	struct netns_bpf bpf;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct netns_xfrm xfrm;
+	u64 net_cookie;
+	struct netns_can can;
+	struct netns_xdp xdp;
+	struct sock *diag_nlsk;
+};
+
+typedef int proc_handler(struct ctl_table *, int, void *, size_t *, loff_t *);
+
+struct ctl_table_poll;
+
+struct ctl_table {
+	const char *procname;
+	void *data;
+	int maxlen;
+	umode_t mode;
+	enum {
+		SYSCTL_TABLE_TYPE_DEFAULT = 0,
+		SYSCTL_TABLE_TYPE_PERMANENTLY_EMPTY = 1,
+	} type;
+	proc_handler *proc_handler;
+	struct ctl_table_poll *poll;
+	void *extra1;
+	void *extra2;
+};
+
+struct ctl_table_poll {
+	atomic_t event;
+	wait_queue_head_t wait;
+};
+
+struct ctl_table_root {
+	struct ctl_table_set default_set;
+	struct ctl_table_set * (*lookup)(struct ctl_table_root *);
+	void (*set_ownership)(struct ctl_table_header *, struct ctl_table *, kuid_t *, kgid_t *);
+	int (*permissions)(struct ctl_table_header *, struct ctl_table *);
+};
+
+struct ctl_node {
+	struct rb_node node;
+	struct ctl_table_header *header;
+};
+
+typedef int (*notifier_fn_t)(struct notifier_block *, unsigned long, void *);
+
+struct notifier_block {
+	notifier_fn_t notifier_call;
+	struct notifier_block __attribute__((btf_type_tag("rcu"))) *next;
+	int priority;
+};
+
+struct prot_inuse {
+	int all;
+	int val[64];
+};
+
+struct u64_stats_sync {};
+
+struct ipstats_mib {
+	u64 mibs[38];
+	struct u64_stats_sync syncp;
+};
+
+struct tcp_mib {
+	unsigned long mibs[16];
+};
+
+struct linux_mib {
+	unsigned long mibs[127];
+};
+
+struct udp_mib {
+	unsigned long mibs[10];
+};
+
+struct linux_xfrm_mib {
+	unsigned long mibs[29];
+};
+
+struct icmp_mib {
+	unsigned long mibs[30];
+};
+
+struct icmpmsg_mib {
+	atomic_long_t mibs[512];
+};
+
+struct icmpv6_mib {
+	unsigned long mibs[7];
+};
+
+struct icmpv6msg_mib {
+	atomic_long_t mibs[512];
+};
+
+struct ip_ra_chain {
+	struct ip_ra_chain __attribute__((btf_type_tag("rcu"))) *next;
+	struct sock *sk;
+	union {
+		void (*destructor)(struct sock *);
+		struct sock *saved_sk;
+	};
+	struct callback_head rcu;
+};
+
+struct fib_table {
+	struct hlist_node tb_hlist;
+	u32 tb_id;
+	int tb_num_default;
+	struct callback_head rcu;
+	unsigned long *tb_data;
+	unsigned long __data[0];
+};
+
+typedef u32 (*rht_hashfn_t)(const void *, u32, u32);
+
+typedef u32 (*rht_obj_hashfn_t)(const void *, u32, u32);
+
+struct rhashtable_compare_arg;
+
+typedef int (*rht_obj_cmpfn_t)(struct rhashtable_compare_arg *, const void *);
+
+struct rhashtable_params {
+	u16 nelem_hint;
+	u16 key_len;
+	u16 key_offset;
+	u16 head_offset;
+	unsigned int max_size;
+	u16 min_size;
+	bool automatic_shrinking;
+	rht_hashfn_t hashfn;
+	rht_obj_hashfn_t obj_hashfn;
+	rht_obj_cmpfn_t obj_cmpfn;
+};
+
+struct bucket_table;
+
+struct rhashtable {
+	struct bucket_table __attribute__((btf_type_tag("rcu"))) *tbl;
+	unsigned int key_len;
+	unsigned int max_elems;
+	struct rhashtable_params p;
+	bool rhlist;
+	struct work_struct run_work;
+	struct mutex mutex;
+	spinlock_t lock;
+	atomic_t nelems;
+};
+
+struct inet_frags;
+
+struct fqdir {
+	long high_thresh;
+	long low_thresh;
+	int timeout;
+	int max_dist;
+	struct inet_frags *f;
+	struct net *net;
+	bool dead;
+	long: 64;
+	long: 64;
+	struct rhashtable rhashtable;
+	long: 64;
+	long: 64;
+	long: 64;
+	atomic_long_t mem;
+	struct work_struct destroy_work;
+	struct llist_node free_list;
+};
+
+struct inet_frag_queue;
+
+struct inet_frags {
+	unsigned int qsize;
+	void (*constructor)(struct inet_frag_queue *, const void *);
+	void (*destructor)(struct inet_frag_queue *);
+	void (*frag_expire)(struct timer_list *);
+	struct kmem_cache *frags_cachep;
+	const char *frags_cache_name;
+	struct rhashtable_params rhash_params;
+	refcount_t refcnt;
+	struct completion completion;
+};
+
+typedef __u32 __be32;
+
+typedef __u16 __be16;
+
+struct frag_v4_compare_key {
+	__be32 saddr;
+	__be32 daddr;
+	u32 user;
+	u32 vif;
+	__be16 id;
+	u16 protocol;
+};
+
+struct in6_addr {
+	union {
+		__u8 u6_addr8[16];
+		__be16 u6_addr16[8];
+		__be32 u6_addr32[4];
+	} in6_u;
+};
+
+struct frag_v6_compare_key {
+	struct in6_addr saddr;
+	struct in6_addr daddr;
+	u32 user;
+	__be32 id;
+	u32 iif;
+};
+
+struct rhash_head {
+	struct rhash_head __attribute__((btf_type_tag("rcu"))) *next;
+};
+
+struct inet_frag_queue {
+	struct rhash_head node;
+	union {
+		struct frag_v4_compare_key v4;
+		struct frag_v6_compare_key v6;
+	} key;
+	struct timer_list timer;
+	spinlock_t lock;
+	refcount_t refcnt;
+	struct rb_root rb_fragments;
+	struct sk_buff *fragments_tail;
+	struct sk_buff *last_run_head;
+	ktime_t stamp;
+	int len;
+	int meat;
+	u8 mono_delivery_time;
+	__u8 flags;
+	u16 max_size;
+	struct fqdir *fqdir;
+	struct callback_head rcu;
+};
+
+typedef __u32 __wsum;
+
+typedef unsigned int sk_buff_data_t;
+
+struct skb_ext;
+
+struct sk_buff {
+	union {
+		struct {
+			struct sk_buff *next;
+			struct sk_buff *prev;
+			union {
+				struct net_device *dev;
+				unsigned long dev_scratch;
+			};
+		};
+		struct rb_node rbnode;
+		struct list_head list;
+		struct llist_node ll_node;
+	};
+	struct sock *sk;
+	union {
+		ktime_t tstamp;
+		u64 skb_mstamp_ns;
+	};
+	char cb[48];
+	union {
+		struct {
+			unsigned long _skb_refdst;
+			void (*destructor)(struct sk_buff *);
+		};
+		struct list_head tcp_tsorted_anchor;
+		unsigned long _sk_redir;
+	};
+	unsigned long _nfct;
+	unsigned int len;
+	unsigned int data_len;
+	__u16 mac_len;
+	__u16 hdr_len;
+	__u16 queue_mapping;
+	__u8 __cloned_offset[0];
+	__u8 cloned: 1;
+	__u8 nohdr: 1;
+	__u8 fclone: 2;
+	__u8 peeked: 1;
+	__u8 head_frag: 1;
+	__u8 pfmemalloc: 1;
+	__u8 pp_recycle: 1;
+	__u8 active_extensions;
+	union {
+		struct {
+			__u8 __pkt_type_offset[0];
+			__u8 pkt_type: 3;
+			__u8 ignore_df: 1;
+			__u8 dst_pending_confirm: 1;
+			__u8 ip_summed: 2;
+			__u8 ooo_okay: 1;
+			__u8 __mono_tc_offset[0];
+			__u8 mono_delivery_time: 1;
+			__u8 tc_at_ingress: 1;
+			__u8 tc_skip_classify: 1;
+			__u8 remcsum_offload: 1;
+			__u8 csum_complete_sw: 1;
+			__u8 csum_level: 2;
+			__u8 inner_protocol_type: 1;
+			__u8 l4_hash: 1;
+			__u8 sw_hash: 1;
+			__u8 wifi_acked_valid: 1;
+			__u8 wifi_acked: 1;
+			__u8 no_fcs: 1;
+			__u8 encapsulation: 1;
+			__u8 encap_hdr_csum: 1;
+			__u8 csum_valid: 1;
+			__u8 ndisc_nodetype: 2;
+			__u8 nf_trace: 1;
+			__u8 redirected: 1;
+			__u8 from_ingress: 1;
+			__u8 nf_skip_egress: 1;
+			__u8 slow_gro: 1;
+			__u16 tc_index;
+			u16 alloc_cpu;
+			union {
+				__wsum csum;
+				struct {
+					__u16 csum_start;
+					__u16 csum_offset;
+				};
+			};
+			__u32 priority;
+			int skb_iif;
+			__u32 hash;
+			union {
+				u32 vlan_all;
+				struct {
+					__be16 vlan_proto;
+					__u16 vlan_tci;
+				};
+			};
+			union {
+				unsigned int napi_id;
+				unsigned int sender_cpu;
+			};
+			__u32 secmark;
+			union {
+				__u32 mark;
+				__u32 reserved_tailroom;
+			};
+			union {
+				__be16 inner_protocol;
+				__u8 inner_ipproto;
+			};
+			__u16 inner_transport_header;
+			__u16 inner_network_header;
+			__u16 inner_mac_header;
+			__be16 protocol;
+			__u16 transport_header;
+			__u16 network_header;
+			__u16 mac_header;
+			u64 android_kabi_reserved1;
+			u64 android_kabi_reserved2;
+		};
+		struct {
+			__u8 __pkt_type_offset[0];
+			__u8 pkt_type: 3;
+			__u8 ignore_df: 1;
+			__u8 dst_pending_confirm: 1;
+			__u8 ip_summed: 2;
+			__u8 ooo_okay: 1;
+			__u8 __mono_tc_offset[0];
+			__u8 mono_delivery_time: 1;
+			__u8 tc_at_ingress: 1;
+			__u8 tc_skip_classify: 1;
+			__u8 remcsum_offload: 1;
+			__u8 csum_complete_sw: 1;
+			__u8 csum_level: 2;
+			__u8 inner_protocol_type: 1;
+			__u8 l4_hash: 1;
+			__u8 sw_hash: 1;
+			__u8 wifi_acked_valid: 1;
+			__u8 wifi_acked: 1;
+			__u8 no_fcs: 1;
+			__u8 encapsulation: 1;
+			__u8 encap_hdr_csum: 1;
+			__u8 csum_valid: 1;
+			__u8 ndisc_nodetype: 2;
+			__u8 nf_trace: 1;
+			__u8 redirected: 1;
+			__u8 from_ingress: 1;
+			__u8 nf_skip_egress: 1;
+			__u8 slow_gro: 1;
+			__u16 tc_index;
+			u16 alloc_cpu;
+			union {
+				__wsum csum;
+				struct {
+					__u16 csum_start;
+					__u16 csum_offset;
+				};
+			};
+			__u32 priority;
+			int skb_iif;
+			__u32 hash;
+			union {
+				u32 vlan_all;
+				struct {
+					__be16 vlan_proto;
+					__u16 vlan_tci;
+				};
+			};
+			union {
+				unsigned int napi_id;
+				unsigned int sender_cpu;
+			};
+			__u32 secmark;
+			union {
+				__u32 mark;
+				__u32 reserved_tailroom;
+			};
+			union {
+				__be16 inner_protocol;
+				__u8 inner_ipproto;
+			};
+			__u16 inner_transport_header;
+			__u16 inner_network_header;
+			__u16 inner_mac_header;
+			__be16 protocol;
+			__u16 transport_header;
+			__u16 network_header;
+			__u16 mac_header;
+			u64 android_kabi_reserved1;
+			u64 android_kabi_reserved2;
+		} headers;
+	};
+	sk_buff_data_t tail;
+	sk_buff_data_t end;
+	unsigned char *head;
+	unsigned char *data;
+	unsigned int truesize;
+	refcount_t users;
+	struct skb_ext *extensions;
+};
+
+struct skb_ext {
+	refcount_t refcnt;
+	u8 offset[1];
+	u8 chunks;
+	long: 0;
+	char data[0];
+};
+
+struct rhashtable_compare_arg {
+	struct rhashtable *ht;
+	const void *key;
+};
+
+struct lockdep_map {};
+
+struct rhash_lock_head;
+
+struct bucket_table {
+	unsigned int size;
+	unsigned int nest;
+	u32 hash_rnd;
+	struct list_head walkers;
+	struct callback_head rcu;
+	struct bucket_table __attribute__((btf_type_tag("rcu"))) *future_tbl;
+	struct lockdep_map dep_map;
+	long: 64;
+	struct rhash_lock_head __attribute__((btf_type_tag("rcu"))) *buckets[0];
+};
+
+enum tcp_ca_event {
+	CA_EVENT_TX_START = 0,
+	CA_EVENT_CWND_RESTART = 1,
+	CA_EVENT_COMPLETE_CWR = 2,
+	CA_EVENT_LOSS = 3,
+	CA_EVENT_ECN_NO_CE = 4,
+	CA_EVENT_ECN_IS_CE = 5,
+};
+
+struct ack_sample;
+
+struct rate_sample;
+
+union tcp_cc_info;
+
+struct tcp_congestion_ops {
+	u32 (*ssthresh)(struct sock *);
+	void (*cong_avoid)(struct sock *, u32, u32);
+	void (*set_state)(struct sock *, u8);
+	void (*cwnd_event)(struct sock *, enum tcp_ca_event);
+	void (*in_ack_event)(struct sock *, u32);
+	void (*pkts_acked)(struct sock *, const struct ack_sample *);
+	u32 (*min_tso_segs)(struct sock *);
+	void (*cong_control)(struct sock *, const struct rate_sample *);
+	u32 (*undo_cwnd)(struct sock *);
+	u32 (*sndbuf_expand)(struct sock *);
+	size_t (*get_info)(struct sock *, u32, int *, union tcp_cc_info *);
+	char name[16];
+	struct module *owner;
+	struct list_head list;
+	u32 key;
+	u32 flags;
+	void (*init)(struct sock *);
+	void (*release)(struct sock *);
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct tcp_fastopen_context {
+	siphash_key_t key[2];
+	int num;
+	struct callback_head rcu;
+};
+
+typedef struct {
+	atomic_t refcnt;
+} rcuref_t;
+
+typedef struct {} netdevice_tracker;
+
+struct xfrm_state;
+
+struct uncached_list;
+
+struct lwtunnel_state;
+
+struct dst_entry {
+	struct net_device *dev;
+	struct dst_ops *ops;
+	unsigned long _metrics;
+	unsigned long expires;
+	struct xfrm_state *xfrm;
+	int (*input)(struct sk_buff *);
+	int (*output)(struct net *, struct sock *, struct sk_buff *);
+	unsigned short flags;
+	short obsolete;
+	unsigned short header_len;
+	unsigned short trailer_len;
+	rcuref_t __rcuref;
+	int __use;
+	unsigned long lastuse;
+	struct callback_head callback_head;
+	short error;
+	short __pad;
+	__u32 tclassid;
+	netdevice_tracker dev_tracker;
+	struct list_head rt_uncached;
+	struct uncached_list *rt_uncached_list;
+	struct lwtunnel_state *lwtstate;
+};
+
+enum nf_log_type {
+	NF_LOG_TYPE_LOG = 0,
+	NF_LOG_TYPE_ULOG = 1,
+	NF_LOG_TYPE_MAX = 2,
+};
+
+typedef u8 u_int8_t;
+
+struct nf_loginfo;
+
+typedef void nf_logfn(struct net *, u_int8_t, unsigned int, const struct sk_buff *, const struct net_device *, const struct net_device *, const struct nf_loginfo *, const char *);
+
+struct nf_logger {
+	char *name;
+	enum nf_log_type type;
+	nf_logfn *logfn;
+	struct module *me;
+};
+
+struct nf_hook_state;
+
+typedef unsigned int nf_hookfn(void *, struct sk_buff *, const struct nf_hook_state *);
+
+struct nf_hook_entry {
+	nf_hookfn *hook;
+	void *priv;
+};
+
+struct nf_hook_entries {
+	u16 num_hook_entries;
+	struct nf_hook_entry hooks[0];
+};
+
+struct ip_conntrack_stat {
+	unsigned int found;
+	unsigned int invalid;
+	unsigned int insert;
+	unsigned int insert_failed;
+	unsigned int clash_resolve;
+	unsigned int drop;
+	unsigned int early_drop;
+	unsigned int error;
+	unsigned int expect_new;
+	unsigned int expect_create;
+	unsigned int expect_delete;
+	unsigned int search_restart;
+	unsigned int chaintoolong;
+};
+
+struct nf_ct_event;
+
+struct nf_exp_event;
+
+struct nf_ct_event_notifier {
+	int (*ct_event)(unsigned int, const struct nf_ct_event *);
+	int (*exp_event)(unsigned int, const struct nf_exp_event *);
+};
+
+struct net_generic {
+	union {
+		struct {
+			unsigned int len;
+			struct callback_head rcu;
+		} s;
+		struct {
+			struct {} __empty_ptr;
+			void *ptr[0];
+		};
+	};
+};
+
+struct bpf_cgroup_storage;
+
+struct bpf_prog_array_item {
+	struct bpf_prog *prog;
+	union {
+		struct bpf_cgroup_storage *cgroup_storage[2];
+		u64 bpf_cookie;
+	};
+};
+
+struct bpf_prog_array {
+	struct callback_head rcu;
+	struct bpf_prog_array_item items[0];
+};
+
+struct cgroup_namespace {
+	struct ns_common ns;
+	struct user_namespace *user_ns;
+	struct ucounts *ucounts;
+	struct css_set *root_cset;
+};
+
+struct cgroup_subsys_state;
+
+struct cgroup;
+
+struct css_set {
+	struct cgroup_subsys_state *subsys[7];
+	refcount_t refcount;
+	struct css_set *dom_cset;
+	struct cgroup *dfl_cgrp;
+	int nr_tasks;
+	struct list_head tasks;
+	struct list_head mg_tasks;
+	struct list_head dying_tasks;
+	struct list_head task_iters;
+	struct list_head e_cset_node[7];
+	struct list_head threaded_csets;
+	struct list_head threaded_csets_node;
+	struct hlist_node hlist;
+	struct list_head cgrp_links;
+	struct list_head mg_src_preload_node;
+	struct list_head mg_dst_preload_node;
+	struct list_head mg_node;
+	struct cgroup *mg_src_cgrp;
+	struct cgroup *mg_dst_cgrp;
+	struct css_set *mg_dst_cset;
+	bool dead;
+	struct callback_head callback_head;
+};
+
+struct rcu_work {
+	struct work_struct work;
+	struct callback_head rcu;
+	struct workqueue_struct *wq;
+};
+
+struct cgroup_subsys;
+
+struct cgroup_subsys_state {
+	struct cgroup *cgroup;
+	struct cgroup_subsys *ss;
+	struct percpu_ref refcnt;
+	struct list_head sibling;
+	struct list_head children;
+	struct list_head rstat_css_node;
+	int id;
+	unsigned int flags;
+	u64 serial_nr;
+	atomic_t online_cnt;
+	struct work_struct destroy_work;
+	struct rcu_work destroy_rwork;
+	struct cgroup_subsys_state *parent;
+};
+
+struct cgroup_file {
+	struct kernfs_node *kn;
+	unsigned long notified_at;
+	struct timer_list notify_timer;
+};
+
+struct cacheline_padding {
+	char x[0];
+};
+
+struct task_cputime {
+	u64 stime;
+	u64 utime;
+	unsigned long long sum_exec_runtime;
+};
+
+struct cgroup_base_stat {
+	struct task_cputime cputime;
+};
+
+struct cgroup_bpf {
+	struct bpf_prog_array __attribute__((btf_type_tag("rcu"))) *effective[33];
+	struct hlist_head progs[33];
+	u8 flags[33];
+	struct list_head storages;
+	struct bpf_prog_array *inactive;
+	struct percpu_ref refcnt;
+	struct work_struct release_work;
+};
+
+struct cgroup_freezer_state {
+	bool freeze;
+	int e_freeze;
+	int nr_frozen_descendants;
+	int nr_frozen_tasks;
+};
+
+struct cgroup_root;
+
+struct cgroup_rstat_cpu;
+
+struct psi_group;
+
+struct cgroup {
+	struct cgroup_subsys_state self;
+	unsigned long flags;
+	int level;
+	int max_depth;
+	int nr_descendants;
+	int nr_dying_descendants;
+	int max_descendants;
+	int nr_populated_csets;
+	int nr_populated_domain_children;
+	int nr_populated_threaded_children;
+	int nr_threaded_children;
+	struct kernfs_node *kn;
+	struct cgroup_file procs_file;
+	struct cgroup_file events_file;
+	struct cgroup_file psi_files[4];
+	u16 subtree_control;
+	u16 subtree_ss_mask;
+	u16 old_subtree_control;
+	u16 old_subtree_ss_mask;
+	struct cgroup_subsys_state __attribute__((btf_type_tag("rcu"))) *subsys[7];
+	struct cgroup_root *root;
+	struct list_head cset_links;
+	struct list_head e_csets[7];
+	struct cgroup *dom_cgrp;
+	struct cgroup *old_dom_cgrp;
+	struct cgroup_rstat_cpu __attribute__((btf_type_tag("percpu"))) *rstat_cpu;
+	struct list_head rstat_css_list;
+	struct cacheline_padding _pad_;
+	struct cgroup *rstat_flush_next;
+	struct cgroup_base_stat last_bstat;
+	struct cgroup_base_stat bstat;
+	struct prev_cputime prev_cputime;
+	struct list_head pidlists;
+	struct mutex pidlist_mutex;
+	wait_queue_head_t offline_waitq;
+	struct work_struct release_agent_work;
+	struct psi_group *psi;
+	struct cgroup_bpf bpf;
+	atomic_t congestion_count;
+	struct cgroup_freezer_state freezer;
+	struct bpf_local_storage __attribute__((btf_type_tag("rcu"))) *bpf_cgrp_storage;
+	u64 android_backport_reserved1;
+	struct cgroup *ancestors[0];
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct kernfs_root;
+
+struct kernfs_elem_dir {
+	unsigned long subdirs;
+	struct rb_root children;
+	struct kernfs_root *root;
+	unsigned long rev;
+};
+
+struct kernfs_elem_symlink {
+	struct kernfs_node *target_kn;
+};
+
+struct kernfs_ops;
+
+struct kernfs_open_node;
+
+struct kernfs_elem_attr {
+	const struct kernfs_ops *ops;
+	struct kernfs_open_node __attribute__((btf_type_tag("rcu"))) *open;
+	loff_t size;
+	struct kernfs_node *notify_next;
+};
+
+struct kernfs_iattrs;
+
+struct kernfs_node {
+	atomic_t count;
+	atomic_t active;
+	struct kernfs_node *parent;
+	const char *name;
+	struct rb_node rb;
+	const void *ns;
+	unsigned int hash;
+	union {
+		struct kernfs_elem_dir dir;
+		struct kernfs_elem_symlink symlink;
+		struct kernfs_elem_attr attr;
+	};
+	void *priv;
+	u64 id;
+	unsigned short flags;
+	umode_t mode;
+	struct kernfs_iattrs *iattr;
+	struct callback_head rcu;
+	u64 android_kabi_reserved1;
+};
+
+typedef unsigned int __poll_t;
+
+struct kernfs_open_file;
+
+struct poll_table_struct;
+
+struct kernfs_ops {
+	int (*open)(struct kernfs_open_file *);
+	void (*release)(struct kernfs_open_file *);
+	int (*seq_show)(struct seq_file *, void *);
+	void * (*seq_start)(struct seq_file *, loff_t *);
+	void * (*seq_next)(struct seq_file *, void *, loff_t *);
+	void (*seq_stop)(struct seq_file *, void *);
+	ssize_t (*read)(struct kernfs_open_file *, char *, size_t, loff_t);
+	size_t atomic_write_len;
+	bool prealloc;
+	ssize_t (*write)(struct kernfs_open_file *, char *, size_t, loff_t);
+	__poll_t (*poll)(struct kernfs_open_file *, struct poll_table_struct *);
+	int (*mmap)(struct kernfs_open_file *, struct vm_area_struct *);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct kernfs_open_file {
+	struct kernfs_node *kn;
+	struct file *file;
+	struct seq_file *seq_file;
+	void *priv;
+	struct mutex mutex;
+	struct mutex prealloc_mutex;
+	int event;
+	struct list_head list;
+	char *prealloc_buf;
+	size_t atomic_write_len;
+	bool mmapped: 1;
+	bool released: 1;
+	const struct vm_operations_struct *vm_ops;
+	u64 android_kabi_reserved1;
+};
+
+struct seq_operations;
+
+struct seq_file {
+	char *buf;
+	size_t size;
+	size_t from;
+	size_t count;
+	size_t pad_until;
+	loff_t index;
+	loff_t read_pos;
+	struct mutex lock;
+	const struct seq_operations *op;
+	int poll_event;
+	const struct file *file;
+	void *private;
+};
+
+struct seq_operations {
+	void * (*start)(struct seq_file *, loff_t *);
+	void (*stop)(struct seq_file *, void *);
+	void * (*next)(struct seq_file *, void *, loff_t *);
+	int (*show)(struct seq_file *, void *);
+};
+
+typedef void (*poll_queue_proc)(struct file *, wait_queue_head_t *, struct poll_table_struct *);
+
+struct poll_table_struct {
+	poll_queue_proc _qproc;
+	__poll_t _key;
+};
+
+struct kernfs_open_node {
+	struct callback_head callback_head;
+	atomic_t event;
+	wait_queue_head_t poll;
+	struct list_head files;
+	unsigned int nr_mmapped;
+	unsigned int nr_to_release;
+};
+
+struct cgroup_root {
+	struct kernfs_root *kf_root;
+	unsigned int subsys_mask;
+	int hierarchy_id;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct cgroup cgrp;
+	struct cgroup *cgrp_ancestor_storage;
+	atomic_t nr_cgrps;
+	struct list_head root_list;
+	unsigned int flags;
+	char release_agent_path[4096];
+	char name[64];
+	long: 0;
+	u8 android_backport_reserved1[28];
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct cgroup_rstat_cpu {
+	struct u64_stats_sync bsync;
+	struct cgroup_base_stat bstat;
+	struct cgroup_base_stat last_bstat;
+	struct cgroup_base_stat subtree_bstat;
+	struct cgroup_base_stat last_subtree_bstat;
+	struct cgroup *updated_children;
+	struct cgroup *updated_next;
+};
+
+struct psi_group_cpu;
+
+struct psi_group {
+	struct psi_group *parent;
+	bool enabled;
+	struct mutex avgs_lock;
+	struct psi_group_cpu __attribute__((btf_type_tag("percpu"))) *pcpu;
+	u64 avg_total[7];
+	u64 avg_last_update;
+	u64 avg_next_update;
+	struct delayed_work avgs_work;
+	struct list_head avg_triggers;
+	u32 avg_nr_triggers[7];
+	u64 total[14];
+	unsigned long avg[21];
+	struct task_struct __attribute__((btf_type_tag("rcu"))) *rtpoll_task;
+	struct timer_list rtpoll_timer;
+	wait_queue_head_t rtpoll_wait;
+	atomic_t rtpoll_wakeup;
+	atomic_t rtpoll_scheduled;
+	struct mutex rtpoll_trigger_lock;
+	struct list_head rtpoll_triggers;
+	u32 rtpoll_nr_triggers[7];
+	u32 rtpoll_states;
+	u64 rtpoll_min_period;
+	u64 rtpoll_total[7];
+	u64 rtpoll_next_update;
+	u64 rtpoll_until;
+};
+
+struct psi_group_cpu {
+	seqcount_t seq;
+	unsigned int tasks[4];
+	u32 state_mask;
+	u32 times[8];
+	u64 state_start;
+	u32 times_prev[16];
+};
+
+struct bpf_local_storage_data;
+
+struct bpf_local_storage_map;
+
+struct bpf_local_storage {
+	struct bpf_local_storage_data __attribute__((btf_type_tag("rcu"))) *cache[16];
+	struct bpf_local_storage_map __attribute__((btf_type_tag("rcu"))) *smap;
+	struct hlist_head list;
+	void *owner;
+	struct callback_head rcu;
+	raw_spinlock_t lock;
+};
+
+struct cgroup_taskset;
+
+struct cftype;
+
+struct cgroup_subsys {
+	struct cgroup_subsys_state * (*css_alloc)(struct cgroup_subsys_state *);
+	int (*css_online)(struct cgroup_subsys_state *);
+	void (*css_offline)(struct cgroup_subsys_state *);
+	void (*css_released)(struct cgroup_subsys_state *);
+	void (*css_free)(struct cgroup_subsys_state *);
+	void (*css_reset)(struct cgroup_subsys_state *);
+	void (*css_rstat_flush)(struct cgroup_subsys_state *, int);
+	int (*css_extra_stat_show)(struct seq_file *, struct cgroup_subsys_state *);
+	int (*css_local_stat_show)(struct seq_file *, struct cgroup_subsys_state *);
+	int (*can_attach)(struct cgroup_taskset *);
+	void (*cancel_attach)(struct cgroup_taskset *);
+	void (*attach)(struct cgroup_taskset *);
+	void (*post_attach)();
+	int (*can_fork)(struct task_struct *, struct css_set *);
+	void (*cancel_fork)(struct task_struct *, struct css_set *);
+	void (*fork)(struct task_struct *);
+	void (*exit)(struct task_struct *);
+	void (*release)(struct task_struct *);
+	void (*bind)(struct cgroup_subsys_state *);
+	bool early_init: 1;
+	bool implicit_on_dfl: 1;
+	bool threaded: 1;
+	int id;
+	const char *name;
+	const char *legacy_name;
+	struct cgroup_root *root;
+	struct idr css_idr;
+	struct list_head cfts;
+	struct cftype *dfl_cftypes;
+	struct cftype *legacy_cftypes;
+	unsigned int depends_on;
+};
+
+struct cftype {
+	char name[64];
+	unsigned long private;
+	size_t max_write_len;
+	unsigned int flags;
+	unsigned int file_offset;
+	struct cgroup_subsys *ss;
+	struct list_head node;
+	struct kernfs_ops *kf_ops;
+	int (*open)(struct kernfs_open_file *);
+	void (*release)(struct kernfs_open_file *);
+	u64 (*read_u64)(struct cgroup_subsys_state *, struct cftype *);
+	s64 (*read_s64)(struct cgroup_subsys_state *, struct cftype *);
+	int (*seq_show)(struct seq_file *, void *);
+	void * (*seq_start)(struct seq_file *, loff_t *);
+	void * (*seq_next)(struct seq_file *, void *, loff_t *);
+	void (*seq_stop)(struct seq_file *, void *);
+	int (*write_u64)(struct cgroup_subsys_state *, struct cftype *, u64);
+	int (*write_s64)(struct cgroup_subsys_state *, struct cftype *, s64);
+	ssize_t (*write)(struct kernfs_open_file *, char *, size_t, loff_t);
+	__poll_t (*poll)(struct kernfs_open_file *, struct poll_table_struct *);
+};
+
+struct group_info {
+	atomic_t usage;
+	int ngroups;
+	kgid_t gid[0];
+};
+
+struct ldt_struct {
+	struct desc_struct *entries;
+	unsigned int nr_entries;
+	int slot;
+};
+
+struct vdso_image {
+	void *data;
+	unsigned long size;
+	unsigned long alt;
+	unsigned long alt_len;
+	unsigned long extable_base;
+	unsigned long extable_len;
+	const void *extable;
+	long sym_vvar_start;
+	long sym_vvar_page;
+	long sym_pvclock_page;
+	long sym_hvclock_page;
+	long sym_timens_page;
+	long sym_VDSO32_NOTE_MASK;
+	long sym___kernel_sigreturn;
+	long sym___kernel_rt_sigreturn;
+	long sym___kernel_vsyscall;
+	long sym_int80_landing_pad;
+	long sym_vdso32_sigreturn_landing_pad;
+	long sym_vdso32_rt_sigreturn_landing_pad;
+};
+
+struct kioctx;
+
+struct kioctx_table {
+	struct callback_head rcu;
+	unsigned int nr;
+	struct kioctx __attribute__((btf_type_tag("rcu"))) *table[0];
+};
+
+struct page_counter {
+	atomic_long_t usage;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct cacheline_padding _pad1_;
+	unsigned long emin;
+	atomic_long_t min_usage;
+	atomic_long_t children_min_usage;
+	unsigned long elow;
+	atomic_long_t low_usage;
+	atomic_long_t children_low_usage;
+	unsigned long watermark;
+	unsigned long failcnt;
+	struct cacheline_padding _pad2_;
+	unsigned long min;
+	unsigned long low;
+	unsigned long high;
+	unsigned long max;
+	struct page_counter *parent;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct mem_cgroup_id {
+	int id;
+	refcount_t ref;
+};
+
+struct vmpressure {
+	unsigned long scanned;
+	unsigned long reclaimed;
+	unsigned long tree_scanned;
+	unsigned long tree_reclaimed;
+	spinlock_t sr_lock;
+	struct list_head events;
+	struct mutex events_lock;
+	struct work_struct work;
+};
+
+struct mem_cgroup_threshold_ary;
+
+struct mem_cgroup_thresholds {
+	struct mem_cgroup_threshold_ary *primary;
+	struct mem_cgroup_threshold_ary *spare;
+};
+
+struct fprop_global {
+	struct percpu_counter events;
+	unsigned int period;
+	seqcount_t sequence;
+};
+
+struct wb_domain {
+	spinlock_t lock;
+	struct fprop_global completions;
+	struct timer_list period_timer;
+	unsigned long period_time;
+	unsigned long dirty_limit_tstamp;
+	unsigned long dirty_limit;
+};
+
+struct wb_completion {
+	atomic_t cnt;
+	wait_queue_head_t *waitq;
+};
+
+struct memcg_cgwb_frn {
+	u64 bdi_id;
+	int memcg_id;
+	u64 at;
+	struct wb_completion done;
+};
+
+struct deferred_split {
+	spinlock_t split_queue_lock;
+	struct list_head split_queue;
+	unsigned long split_queue_len;
+};
+
+struct lru_gen_mm_list {
+	struct list_head fifo;
+	spinlock_t lock;
+};
+
+struct memcg_vmstats;
+
+struct obj_cgroup;
+
+struct memcg_vmstats_percpu;
+
+struct mem_cgroup_per_node;
+
+struct mem_cgroup {
+	struct cgroup_subsys_state css;
+	struct mem_cgroup_id id;
+	long: 64;
+	long: 64;
+	struct page_counter memory;
+	union {
+		struct page_counter swap;
+		struct page_counter memsw;
+	};
+	struct page_counter kmem;
+	struct page_counter tcpmem;
+	struct work_struct high_work;
+	unsigned long soft_limit;
+	struct vmpressure vmpressure;
+	bool oom_group;
+	bool oom_lock;
+	int under_oom;
+	int swappiness;
+	int oom_kill_disable;
+	struct cgroup_file events_file;
+	struct cgroup_file events_local_file;
+	struct cgroup_file swap_events_file;
+	struct mutex thresholds_lock;
+	struct mem_cgroup_thresholds thresholds;
+	struct mem_cgroup_thresholds memsw_thresholds;
+	struct list_head oom_notify;
+	unsigned long move_charge_at_immigrate;
+	spinlock_t move_lock;
+	unsigned long move_lock_flags;
+	long: 64;
+	long: 64;
+	struct cacheline_padding _pad1_;
+	struct memcg_vmstats *vmstats;
+	atomic_long_t memory_events[9];
+	atomic_long_t memory_events_local[9];
+	unsigned long socket_pressure;
+	bool tcpmem_active;
+	int tcpmem_pressure;
+	int kmemcg_id;
+	struct obj_cgroup __attribute__((btf_type_tag("rcu"))) *objcg;
+	struct list_head objcg_list;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct cacheline_padding _pad2_;
+	atomic_t moving_account;
+	struct task_struct *move_lock_task;
+	struct memcg_vmstats_percpu __attribute__((btf_type_tag("percpu"))) *vmstats_percpu;
+	struct list_head cgwb_list;
+	struct wb_domain cgwb_domain;
+	struct memcg_cgwb_frn cgwb_frn[4];
+	struct list_head event_list;
+	spinlock_t event_list_lock;
+	struct deferred_split deferred_split_queue;
+	struct lru_gen_mm_list mm_list;
+	u64 android_backport_reserved1;
+	u64 android_backport_reserved2;
+	u64 android_oem_data1[2];
+	struct mem_cgroup_per_node *nodeinfo[0];
+};
+
+struct eventfd_ctx;
+
+struct mem_cgroup_threshold {
+	struct eventfd_ctx *eventfd;
+	unsigned long threshold;
+};
+
+struct mem_cgroup_threshold_ary {
+	int current_threshold;
+	unsigned int size;
+	struct mem_cgroup_threshold entries[0];
+};
+
+struct obj_cgroup {
+	struct percpu_ref refcnt;
+	struct mem_cgroup *memcg;
+	atomic_t nr_charged_bytes;
+	union {
+		struct list_head list;
+		struct callback_head rcu;
+	};
+};
+
+struct memcg_vmstats_percpu {
+	unsigned int stats_updates;
+	struct memcg_vmstats_percpu *parent;
+	struct memcg_vmstats *vmstats;
+	long state[48];
+	unsigned long events[17];
+	long state_prev[48];
+	unsigned long events_prev[17];
+	unsigned long nr_page_events;
+	unsigned long targets[2];
+};
+
+struct hlist_nulls_node {
+	struct hlist_nulls_node *next;
+	struct hlist_nulls_node **pprev;
+};
+
+struct lru_gen_folio {
+	unsigned long max_seq;
+	unsigned long min_seq[2];
+	unsigned long timestamps[4];
+	struct list_head folios[40];
+	long nr_pages[40];
+	unsigned long avg_refaulted[8];
+	unsigned long avg_total[8];
+	unsigned long protected[6];
+	atomic_long_t evicted[8];
+	atomic_long_t refaulted[8];
+	bool enabled;
+	u8 gen;
+	u8 seg;
+	struct hlist_nulls_node list;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct lru_gen_mm_state {
+	unsigned long seq;
+	struct list_head *head;
+	struct list_head *tail;
+	unsigned long *filters[2];
+	unsigned long stats[6];
+	u64 android_kabi_reserved1;
+};
+
+struct pglist_data;
+
+struct lruvec {
+	struct list_head lists[5];
+	spinlock_t lru_lock;
+	unsigned long anon_cost;
+	unsigned long file_cost;
+	atomic_long_t nonresident_age;
+	unsigned long refaults[2];
+	unsigned long flags;
+	struct lru_gen_folio lrugen;
+	struct lru_gen_mm_state mm_state;
+	struct pglist_data *pgdat;
+};
+
+struct lruvec_stats {
+	long state[41];
+	long state_local[41];
+	long state_pending[41];
+};
+
+struct mem_cgroup_reclaim_iter {
+	struct mem_cgroup *position;
+	unsigned int generation;
+};
+
+struct lruvec_stats_percpu;
+
+struct shrinker_info;
+
+struct mem_cgroup_per_node {
+	struct lruvec lruvec;
+	struct lruvec_stats_percpu __attribute__((btf_type_tag("percpu"))) *lruvec_stats_percpu;
+	struct lruvec_stats lruvec_stats;
+	unsigned long lru_zone_size[25];
+	struct mem_cgroup_reclaim_iter iter;
+	struct shrinker_info __attribute__((btf_type_tag("rcu"))) *shrinker_info;
+	struct rb_node tree_node;
+	unsigned long usage_in_excess;
+	bool on_tree;
+	struct mem_cgroup *memcg;
+	u64 android_backport_reserved1;
+};
+
+struct free_area {
+	struct list_head free_list[6];
+	unsigned long nr_free;
+};
+
+struct per_cpu_pages;
+
+struct per_cpu_zonestat;
+
+struct zone {
+	unsigned long _watermark[4];
+	unsigned long watermark_boost;
+	unsigned long nr_reserved_highatomic;
+	long lowmem_reserve[5];
+	struct pglist_data *zone_pgdat;
+	struct per_cpu_pages __attribute__((btf_type_tag("percpu"))) *per_cpu_pageset;
+	struct per_cpu_zonestat __attribute__((btf_type_tag("percpu"))) *per_cpu_zonestats;
+	int pageset_high;
+	int pageset_batch;
+	unsigned long zone_start_pfn;
+	atomic_long_t managed_pages;
+	unsigned long spanned_pages;
+	unsigned long present_pages;
+	unsigned long present_early_pages;
+	unsigned long cma_pages;
+	const char *name;
+	unsigned long nr_isolate_pageblock;
+	seqlock_t span_seqlock;
+	int order;
+	int initialized;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct cacheline_padding _pad1_;
+	struct free_area free_area[11];
+	unsigned long flags;
+	spinlock_t lock;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct cacheline_padding _pad2_;
+	unsigned long percpu_drift_mark;
+	unsigned long compact_cached_free_pfn;
+	unsigned long compact_cached_migrate_pfn[2];
+	unsigned long compact_init_migrate_pfn;
+	unsigned long compact_init_free_pfn;
+	unsigned int compact_considered;
+	unsigned int compact_defer_shift;
+	int compact_order_failed;
+	bool compact_blockskip_flush;
+	bool contiguous;
+	long: 0;
+	struct cacheline_padding _pad3_;
+	atomic_long_t vm_stat[11];
+	atomic_long_t vm_numa_event[0];
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct zoneref {
+	struct zone *zone;
+	int zone_idx;
+};
+
+struct zonelist {
+	struct zoneref _zonerefs[6];
+};
+
+enum zone_type {
+	ZONE_DMA32 = 0,
+	ZONE_NORMAL = 1,
+	ZONE_MOVABLE = 2,
+	ZONE_NOSPLIT = 3,
+	ZONE_NOMERGE = 4,
+	__MAX_NR_ZONES = 5,
+	LAST_PHYS_ZONE = 1,
+	LAST_VIRT_ZONE = 4,
+};
+
+struct lru_gen_mm_walk {
+	struct lruvec *lruvec;
+	unsigned long max_seq;
+	unsigned long next_addr;
+	int nr_pages[40];
+	int mm_stats[6];
+	int batched;
+	bool can_swap;
+	bool force_scan;
+	u64 android_kabi_reserved1;
+};
+
+struct hlist_nulls_head {
+	struct hlist_nulls_node *first;
+};
+
+struct lru_gen_memcg {
+	unsigned long seq;
+	unsigned long nr_memcgs[3];
+	struct hlist_nulls_head fifo[24];
+	spinlock_t lock;
+};
+
+struct per_cpu_nodestat;
+
+struct pglist_data {
+	struct zone node_zones[5];
+	struct zonelist node_zonelists[1];
+	int nr_zones;
+	spinlock_t node_size_lock;
+	unsigned long node_start_pfn;
+	unsigned long node_present_pages;
+	unsigned long node_spanned_pages;
+	int node_id;
+	wait_queue_head_t kswapd_wait;
+	wait_queue_head_t pfmemalloc_wait;
+	wait_queue_head_t reclaim_wait[4];
+	atomic_t nr_writeback_throttled;
+	unsigned long nr_reclaim_start;
+	struct mutex kswapd_lock;
+	struct task_struct *kswapd;
+	int kswapd_order;
+	enum zone_type kswapd_highest_zoneidx;
+	int kswapd_failures;
+	u64 android_oem_data1;
+	int kcompactd_max_order;
+	enum zone_type kcompactd_highest_zoneidx;
+	wait_queue_head_t kcompactd_wait;
+	struct task_struct *kcompactd;
+	bool proactive_compact_trigger;
+	unsigned long totalreserve_pages;
+	long: 64;
+	long: 64;
+	struct cacheline_padding _pad1_;
+	struct deferred_split deferred_split_queue;
+	struct lruvec __lruvec;
+	unsigned long flags;
+	struct lru_gen_mm_walk mm_walk;
+	struct lru_gen_memcg memcg_lru;
+	long: 64;
+	long: 64;
+	struct cacheline_padding _pad2_;
+	struct per_cpu_nodestat __attribute__((btf_type_tag("percpu"))) *per_cpu_nodestats;
+	atomic_long_t vm_stat[41];
+	u64 android_kabi_reserved1;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct per_cpu_pages {
+	spinlock_t lock;
+	int count;
+	int high;
+	int batch;
+	short free_factor;
+	struct list_head lists[17];
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+typedef signed char __s8;
+
+typedef __s8 s8;
+
+struct per_cpu_zonestat {
+	s8 vm_stat_diff[11];
+	s8 stat_threshold;
+};
+
+struct per_cpu_nodestat {
+	s8 stat_threshold;
+	s8 vm_node_stat_diff[41];
+};
+
+struct lruvec_stats_percpu {
+	long state[41];
+	long state_prev[41];
+};
+
+struct shrinker_info {
+	struct callback_head rcu;
+	atomic_long_t *nr_deferred;
+	unsigned long *map;
+	int map_nr_max;
+};
+
+typedef long long __kernel_time64_t;
+
+struct __kernel_timespec {
+	__kernel_time64_t tv_sec;
+	long long tv_nsec;
+};
+
+typedef s32 old_time32_t;
+
+struct old_timespec32 {
+	old_time32_t tv_sec;
+	s32 tv_nsec;
+};
+
+struct pollfd {
+	int fd;
+	short events;
+	short revents;
+};
+
+struct cpu_itimer {
+	u64 expires;
+	u64 incr;
+};
+
+struct task_cputime_atomic {
+	atomic64_t utime;
+	atomic64_t stime;
+	atomic64_t sum_exec_runtime;
+};
+
+struct thread_group_cputimer {
+	struct task_cputime_atomic cputime_atomic;
+};
+
+struct core_state;
+
+struct tty_struct;
+
+struct taskstats;
+
+struct tty_audit_buf;
+
+struct signal_struct {
+	refcount_t sigcnt;
+	atomic_t live;
+	int nr_threads;
+	int quick_threads;
+	struct list_head thread_head;
+	wait_queue_head_t wait_chldexit;
+	struct task_struct *curr_target;
+	struct sigpending shared_pending;
+	struct hlist_head multiprocess;
+	int group_exit_code;
+	int notify_count;
+	struct task_struct *group_exec_task;
+	int group_stop_count;
+	unsigned int flags;
+	struct core_state *core_state;
+	unsigned int is_child_subreaper: 1;
+	unsigned int has_child_subreaper: 1;
+	unsigned int next_posix_timer_id;
+	struct list_head posix_timers;
+	struct hrtimer real_timer;
+	ktime_t it_real_incr;
+	struct cpu_itimer it[2];
+	struct thread_group_cputimer cputimer;
+	struct posix_cputimers posix_cputimers;
+	struct pid *pids[4];
+	struct pid *tty_old_pgrp;
+	int leader;
+	struct tty_struct *tty;
+	seqlock_t stats_lock;
+	u64 utime;
+	u64 stime;
+	u64 cutime;
+	u64 cstime;
+	u64 gtime;
+	u64 cgtime;
+	struct prev_cputime prev_cputime;
+	unsigned long nvcsw;
+	unsigned long nivcsw;
+	unsigned long cnvcsw;
+	unsigned long cnivcsw;
+	unsigned long min_flt;
+	unsigned long maj_flt;
+	unsigned long cmin_flt;
+	unsigned long cmaj_flt;
+	unsigned long inblock;
+	unsigned long oublock;
+	unsigned long cinblock;
+	unsigned long coublock;
+	unsigned long maxrss;
+	unsigned long cmaxrss;
+	struct task_io_accounting ioac;
+	unsigned long long sum_sched_runtime;
+	struct rlimit rlim[16];
+	struct taskstats *stats;
+	unsigned int audit_tty;
+	struct tty_audit_buf *tty_audit_buf;
+	bool oom_flag_origin;
+	short oom_score_adj;
+	short oom_score_adj_min;
+	struct mm_struct *oom_mm;
+	struct mutex cred_guard_mutex;
+	struct rw_semaphore exec_update_lock;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+	u64 android_oem_data1;
+};
+
+struct core_thread {
+	struct task_struct *task;
+	struct core_thread *next;
+};
+
+struct core_state {
+	atomic_t nr_threads;
+	struct core_thread dumper;
+	struct completion startup;
+};
+
+struct taskstats {
+	__u16 version;
+	__u32 ac_exitcode;
+	__u8 ac_flag;
+	__u8 ac_nice;
+	__u64 cpu_count;
+	__u64 cpu_delay_total;
+	__u64 blkio_count;
+	__u64 blkio_delay_total;
+	__u64 swapin_count;
+	__u64 swapin_delay_total;
+	__u64 cpu_run_real_total;
+	__u64 cpu_run_virtual_total;
+	char ac_comm[32];
+	__u8 ac_sched;
+	__u8 ac_pad[3];
+	long: 0;
+	__u32 ac_uid;
+	__u32 ac_gid;
+	__u32 ac_pid;
+	__u32 ac_ppid;
+	__u32 ac_btime;
+	__u64 ac_etime;
+	__u64 ac_utime;
+	__u64 ac_stime;
+	__u64 ac_minflt;
+	__u64 ac_majflt;
+	__u64 coremem;
+	__u64 virtmem;
+	__u64 hiwater_rss;
+	__u64 hiwater_vm;
+	__u64 read_char;
+	__u64 write_char;
+	__u64 read_syscalls;
+	__u64 write_syscalls;
+	__u64 read_bytes;
+	__u64 write_bytes;
+	__u64 cancelled_write_bytes;
+	__u64 nvcsw;
+	__u64 nivcsw;
+	__u64 ac_utimescaled;
+	__u64 ac_stimescaled;
+	__u64 cpu_scaled_run_real_total;
+	__u64 freepages_count;
+	__u64 freepages_delay_total;
+	__u64 thrashing_count;
+	__u64 thrashing_delay_total;
+	__u64 ac_btime64;
+	__u64 compact_count;
+	__u64 compact_delay_total;
+	__u32 ac_tgid;
+	__u64 ac_tgetime;
+	__u64 ac_exe_dev;
+	__u64 ac_exe_inode;
+	__u64 wpcopy_count;
+	__u64 wpcopy_delay_total;
+	__u64 irq_count;
+	__u64 irq_delay_total;
+};
+
+typedef void __signalfn_t(int);
+
+typedef __signalfn_t __attribute__((btf_type_tag("user"))) *__sighandler_t;
+
+typedef void __restorefn_t();
+
+typedef __restorefn_t __attribute__((btf_type_tag("user"))) *__sigrestore_t;
+
+struct sigaction {
+	__sighandler_t sa_handler;
+	unsigned long sa_flags;
+	__sigrestore_t sa_restorer;
+	sigset_t sa_mask;
+};
+
+struct k_sigaction {
+	struct sigaction sa;
+};
+
+struct sighand_struct {
+	spinlock_t siglock;
+	refcount_t count;
+	wait_queue_head_t signalfd_wqh;
+	struct k_sigaction action[64];
+};
+
+struct bio;
+
+struct bio_list {
+	struct bio *head;
+	struct bio *tail;
+};
+
+typedef __u32 blk_opf_t;
+
+typedef u8 blk_status_t;
+
+typedef u64 sector_t;
+
+struct bvec_iter {
+	sector_t bi_sector;
+	unsigned int bi_size;
+	unsigned int bi_idx;
+	unsigned int bi_bvec_done;
+} __attribute__((packed));
+
+typedef unsigned int blk_qc_t;
+
+typedef void bio_end_io_t(struct bio *);
+
+struct bio_issue {
+	u64 value;
+};
+
+struct bio_vec {
+	struct page *bv_page;
+	unsigned int bv_len;
+	unsigned int bv_offset;
+};
+
+struct blkcg_gq;
+
+struct bio_crypt_ctx;
+
+struct bio_set;
+
+struct bio {
+	struct bio *bi_next;
+	struct block_device *bi_bdev;
+	blk_opf_t bi_opf;
+	unsigned short bi_flags;
+	unsigned short bi_ioprio;
+	enum rw_hint bi_write_hint;
+	blk_status_t bi_status;
+	atomic_t __bi_remaining;
+	struct bvec_iter bi_iter;
+	blk_qc_t bi_cookie;
+	bio_end_io_t *bi_end_io;
+	void *bi_private;
+	struct blkcg_gq *bi_blkg;
+	struct bio_issue bi_issue;
+	u64 bi_iocost_cost;
+	struct bio_crypt_ctx *bi_crypt_context;
+	bool bi_skip_dm_default_key;
+	union {};
+	unsigned short bi_vcnt;
+	unsigned short bi_max_vecs;
+	atomic_t __bi_cnt;
+	struct bio_vec *bi_io_vec;
+	struct bio_set *bi_pool;
+	u64 android_oem_data1;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	struct bio_vec bi_inline_vecs[0];
+};
+
+enum dl_dev_state {
+	DL_DEV_NO_DRIVER = 0,
+	DL_DEV_PROBING = 1,
+	DL_DEV_DRIVER_BOUND = 2,
+	DL_DEV_UNBINDING = 3,
+};
+
+struct dev_links_info {
+	struct list_head suppliers;
+	struct list_head consumers;
+	struct list_head defer_sync;
+	enum dl_dev_state status;
+};
+
+struct pm_message {
+	int event;
+};
+
+typedef struct pm_message pm_message_t;
+
+enum rpm_request {
+	RPM_REQ_NONE = 0,
+	RPM_REQ_IDLE = 1,
+	RPM_REQ_SUSPEND = 2,
+	RPM_REQ_AUTOSUSPEND = 3,
+	RPM_REQ_RESUME = 4,
+};
+
+enum rpm_status {
+	RPM_INVALID = -1,
+	RPM_ACTIVE = 0,
+	RPM_RESUMING = 1,
+	RPM_SUSPENDED = 2,
+	RPM_SUSPENDING = 3,
+};
+
+struct wakeup_source;
+
+struct wake_irq;
+
+struct pm_subsys_data;
+
+struct device;
+
+struct dev_pm_qos;
+
+struct dev_pm_info {
+	pm_message_t power_state;
+	unsigned int can_wakeup: 1;
+	unsigned int async_suspend: 1;
+	bool in_dpm_list: 1;
+	bool is_prepared: 1;
+	bool is_suspended: 1;
+	bool is_noirq_suspended: 1;
+	bool is_late_suspended: 1;
+	bool no_pm: 1;
+	bool early_init: 1;
+	bool direct_complete: 1;
+	u32 driver_flags;
+	spinlock_t lock;
+	struct list_head entry;
+	struct completion completion;
+	struct wakeup_source *wakeup;
+	bool wakeup_path: 1;
+	bool syscore: 1;
+	bool no_pm_callbacks: 1;
+	unsigned int must_resume: 1;
+	unsigned int may_skip_resume: 1;
+	struct hrtimer suspend_timer;
+	u64 timer_expires;
+	struct work_struct work;
+	wait_queue_head_t wait_queue;
+	struct wake_irq *wakeirq;
+	atomic_t usage_count;
+	atomic_t child_count;
+	unsigned int disable_depth: 3;
+	unsigned int idle_notification: 1;
+	unsigned int request_pending: 1;
+	unsigned int deferred_resume: 1;
+	unsigned int needs_force_resume: 1;
+	unsigned int runtime_auto: 1;
+	bool ignore_children: 1;
+	unsigned int no_callbacks: 1;
+	unsigned int irq_safe: 1;
+	unsigned int use_autosuspend: 1;
+	unsigned int timer_autosuspends: 1;
+	unsigned int memalloc_noio: 1;
+	unsigned int links_count;
+	enum rpm_request request;
+	enum rpm_status runtime_status;
+	enum rpm_status last_status;
+	int runtime_error;
+	int autosuspend_delay;
+	u64 last_busy;
+	u64 active_time;
+	u64 suspended_time;
+	u64 accounting_timestamp;
+	struct pm_subsys_data *subsys_data;
+	void (*set_latency_tolerance)(struct device *, s32);
+	struct dev_pm_qos *qos;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct irq_domain;
+
+struct msi_device_data;
+
+struct dev_msi_info {
+	struct irq_domain *domain;
+	struct msi_device_data *data;
+};
+
+struct dev_archdata {};
+
+enum device_removable {
+	DEVICE_REMOVABLE_NOT_SUPPORTED = 0,
+	DEVICE_REMOVABLE_UNKNOWN = 1,
+	DEVICE_FIXED = 2,
+	DEVICE_REMOVABLE = 3,
+};
+
+struct device_private;
+
+struct device_type;
+
+struct bus_type;
+
+struct device_driver;
+
+struct dev_pm_domain;
+
+struct dma_map_ops;
+
+struct bus_dma_region;
+
+struct device_dma_parameters;
+
+struct cma;
+
+struct io_tlb_mem;
+
+struct device_node;
+
+struct fwnode_handle;
+
+struct class;
+
+struct iommu_group;
+
+struct dev_iommu;
+
+struct device_physical_location;
+
+struct device {
+	struct kobject kobj;
+	struct device *parent;
+	struct device_private *p;
+	const char *init_name;
+	const struct device_type *type;
+	const struct bus_type *bus;
+	struct device_driver *driver;
+	void *platform_data;
+	void *driver_data;
+	struct mutex mutex;
+	struct dev_links_info links;
+	struct dev_pm_info power;
+	struct dev_pm_domain *pm_domain;
+	struct dev_msi_info msi;
+	const struct dma_map_ops *dma_ops;
+	u64 *dma_mask;
+	u64 coherent_dma_mask;
+	u64 bus_dma_limit;
+	const struct bus_dma_region *dma_range_map;
+	struct device_dma_parameters *dma_parms;
+	struct list_head dma_pools;
+	struct cma *cma_area;
+	struct io_tlb_mem *dma_io_tlb_mem;
+	struct list_head dma_io_tlb_pools;
+	spinlock_t dma_io_tlb_lock;
+	bool dma_uses_io_tlb;
+	struct dev_archdata archdata;
+	struct device_node *of_node;
+	struct fwnode_handle *fwnode;
+	dev_t devt;
+	u32 id;
+	spinlock_t devres_lock;
+	struct list_head devres_head;
+	const struct class *class;
+	const struct attribute_group **groups;
+	void (*release)(struct device *);
+	struct iommu_group *iommu_group;
+	struct dev_iommu *iommu;
+	struct device_physical_location *physical_location;
+	enum device_removable removable;
+	bool offline_disabled: 1;
+	bool offline: 1;
+	bool of_node_reused: 1;
+	bool state_synced: 1;
+	bool can_match: 1;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+	u64 android_kabi_reserved5;
+	u64 android_kabi_reserved6;
+	u64 android_kabi_reserved7;
+	u64 android_kabi_reserved8;
+};
+
+struct request_queue;
+
+struct disk_stats;
+
+struct blk_holder_ops;
+
+struct partition_meta_info;
+
+struct block_device {
+	sector_t bd_start_sect;
+	sector_t bd_nr_sectors;
+	struct gendisk *bd_disk;
+	struct request_queue *bd_queue;
+	struct disk_stats __attribute__((btf_type_tag("percpu"))) *bd_stats;
+	unsigned long bd_stamp;
+	bool bd_read_only;
+	u8 bd_partno;
+	bool bd_write_holder;
+	bool bd_has_submit_bio;
+	dev_t bd_dev;
+	atomic_t bd_openers;
+	spinlock_t bd_size_lock;
+	struct inode *bd_inode;
+	void *bd_claiming;
+	void *bd_holder;
+	const struct blk_holder_ops *bd_holder_ops;
+	struct mutex bd_holder_lock;
+	int bd_fsfreeze_count;
+	int bd_holders;
+	struct kobject *bd_holder_dir;
+	struct mutex bd_fsfreeze_mutex;
+	struct super_block *bd_fsfreeze_sb;
+	struct partition_meta_info *bd_meta_info;
+	bool bd_ro_warned;
+	struct device bd_device;
+};
+
+typedef void *mempool_alloc_t(gfp_t, void *);
+
+typedef void mempool_free_t(void *, void *);
+
+struct mempool_s {
+	spinlock_t lock;
+	int min_nr;
+	int curr_nr;
+	void **elements;
+	void *pool_data;
+	mempool_alloc_t *alloc;
+	mempool_free_t *free;
+	wait_queue_head_t wait;
+};
+
+typedef struct mempool_s mempool_t;
+
+struct bio_alloc_cache;
+
+struct bio_set {
+	struct kmem_cache *bio_slab;
+	unsigned int front_pad;
+	struct bio_alloc_cache __attribute__((btf_type_tag("percpu"))) *cache;
+	mempool_t bio_pool;
+	mempool_t bvec_pool;
+	unsigned int back_pad;
+	spinlock_t rescue_lock;
+	struct bio_list rescue_list;
+	struct work_struct rescue_work;
+	struct workqueue_struct *rescue_workqueue;
+	struct hlist_node cpuhp_dead;
+};
+
+typedef unsigned int blk_mode_t;
+
+struct block_device_operations;
+
+struct timer_rand_state;
+
+struct disk_events;
+
+struct badblocks;
+
+struct blk_independent_access_ranges;
+
+struct gendisk {
+	int major;
+	int first_minor;
+	int minors;
+	char disk_name[32];
+	unsigned short events;
+	unsigned short event_flags;
+	struct xarray part_tbl;
+	struct block_device *part0;
+	const struct block_device_operations *fops;
+	struct request_queue *queue;
+	void *private_data;
+	struct bio_set bio_split;
+	int flags;
+	unsigned long state;
+	struct mutex open_mutex;
+	unsigned int open_partitions;
+	struct backing_dev_info *bdi;
+	struct kobject queue_kobj;
+	struct kobject *slave_dir;
+	struct list_head slave_bdevs;
+	struct timer_rand_state *random;
+	atomic_t sync_io;
+	struct disk_events *ev;
+	unsigned int nr_zones;
+	unsigned int max_open_zones;
+	unsigned int max_active_zones;
+	unsigned long *conv_zones_bitmap;
+	unsigned long *seq_zones_wlock;
+	int node_id;
+	struct badblocks *bb;
+	struct lockdep_map lockdep_map;
+	u64 diskseq;
+	blk_mode_t open_mode;
+	struct blk_independent_access_ranges *ia_ranges;
+	u64 android_oem_data1;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct blk_zone;
+
+typedef int (*report_zones_cb)(struct blk_zone *, unsigned int, void *);
+
+enum blk_unique_id {
+	BLK_UID_T10 = 1,
+	BLK_UID_EUI64 = 2,
+	BLK_UID_NAA = 3,
+};
+
+struct io_comp_batch;
+
+struct hd_geometry;
+
+struct pr_ops;
+
+struct block_device_operations {
+	void (*submit_bio)(struct bio *);
+	int (*poll_bio)(struct bio *, struct io_comp_batch *, unsigned int);
+	int (*open)(struct gendisk *, blk_mode_t);
+	void (*release)(struct gendisk *);
+	int (*ioctl)(struct block_device *, blk_mode_t, unsigned int, unsigned long);
+	int (*compat_ioctl)(struct block_device *, blk_mode_t, unsigned int, unsigned long);
+	unsigned int (*check_events)(struct gendisk *, unsigned int);
+	void (*unlock_native_capacity)(struct gendisk *);
+	int (*getgeo)(struct block_device *, struct hd_geometry *);
+	int (*set_read_only)(struct block_device *, bool);
+	void (*free_disk)(struct gendisk *);
+	void (*swap_slot_free_notify)(struct block_device *, unsigned long);
+	int (*report_zones)(struct gendisk *, sector_t, unsigned int, report_zones_cb, void *);
+	char * (*devnode)(struct gendisk *, umode_t *);
+	int (*get_unique_id)(struct gendisk *, u8 *, enum blk_unique_id);
+	struct module *owner;
+	const struct pr_ops *pr_ops;
+	int (*alternative_gpt_sector)(struct gendisk *, sector_t *);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct request;
+
+struct io_comp_batch {
+	struct request *req_list;
+	bool need_ts;
+	void (*complete)(struct io_comp_batch *);
+};
+
+struct blk_zone {
+	__u64 start;
+	__u64 len;
+	__u64 wp;
+	__u8 type;
+	__u8 cond;
+	__u8 non_seq;
+	__u8 reset;
+	__u8 resv[4];
+	__u64 capacity;
+	__u8 reserved[24];
+};
+
+enum pr_type {
+	PR_WRITE_EXCLUSIVE = 1,
+	PR_EXCLUSIVE_ACCESS = 2,
+	PR_WRITE_EXCLUSIVE_REG_ONLY = 3,
+	PR_EXCLUSIVE_ACCESS_REG_ONLY = 4,
+	PR_WRITE_EXCLUSIVE_ALL_REGS = 5,
+	PR_EXCLUSIVE_ACCESS_ALL_REGS = 6,
+};
+
+struct pr_keys;
+
+struct pr_held_reservation;
+
+struct pr_ops {
+	int (*pr_register)(struct block_device *, u64, u64, u32);
+	int (*pr_reserve)(struct block_device *, u64, enum pr_type, u32);
+	int (*pr_release)(struct block_device *, u64, enum pr_type);
+	int (*pr_preempt)(struct block_device *, u64, u64, enum pr_type, bool);
+	int (*pr_clear)(struct block_device *, u64);
+	int (*pr_read_keys)(struct block_device *, struct pr_keys *);
+	int (*pr_read_reservation)(struct block_device *, struct pr_held_reservation *);
+};
+
+enum blk_bounce {
+	BLK_BOUNCE_NONE = 0,
+	BLK_BOUNCE_HIGH = 1,
+};
+
+enum blk_zoned_model {
+	BLK_ZONED_NONE = 0,
+	BLK_ZONED_HA = 1,
+	BLK_ZONED_HM = 2,
+};
+
+struct queue_limits {
+	enum blk_bounce bounce;
+	unsigned long seg_boundary_mask;
+	unsigned long virt_boundary_mask;
+	unsigned int max_hw_sectors;
+	unsigned int max_dev_sectors;
+	unsigned int chunk_sectors;
+	unsigned int max_sectors;
+	unsigned int max_user_sectors;
+	unsigned int max_segment_size;
+	unsigned int physical_block_size;
+	unsigned int logical_block_size;
+	unsigned int alignment_offset;
+	unsigned int io_min;
+	unsigned int io_opt;
+	unsigned int max_discard_sectors;
+	unsigned int max_hw_discard_sectors;
+	unsigned int max_secure_erase_sectors;
+	unsigned int max_write_zeroes_sectors;
+	unsigned int max_zone_append_sectors;
+	unsigned int discard_granularity;
+	unsigned int discard_alignment;
+	unsigned int zone_write_granularity;
+	unsigned short max_segments;
+	unsigned short max_integrity_segments;
+	unsigned short max_discard_segments;
+	unsigned char misaligned;
+	unsigned char discard_misaligned;
+	unsigned char raid_partial_stripes_expensive;
+	bool sub_page_limits;
+	enum blk_zoned_model zoned;
+	unsigned int dma_alignment;
+	u64 android_oem_data1;
+	u64 android_kabi_reserved1;
+};
+
+struct elevator_queue;
+
+struct blk_queue_stats;
+
+struct rq_qos;
+
+struct blk_mq_ops;
+
+struct blk_mq_ctx;
+
+struct blk_crypto_profile;
+
+struct blk_mq_tags;
+
+struct blk_flush_queue;
+
+struct throtl_data;
+
+struct blk_mq_tag_set;
+
+struct request_queue {
+	struct request *last_merge;
+	struct elevator_queue *elevator;
+	struct percpu_ref q_usage_counter;
+	struct blk_queue_stats *stats;
+	struct rq_qos *rq_qos;
+	struct mutex rq_qos_mutex;
+	const struct blk_mq_ops *mq_ops;
+	struct blk_mq_ctx __attribute__((btf_type_tag("percpu"))) *queue_ctx;
+	unsigned int queue_depth;
+	struct xarray hctx_table;
+	unsigned int nr_hw_queues;
+	void *queuedata;
+	unsigned long queue_flags;
+	atomic_t pm_only;
+	int id;
+	spinlock_t queue_lock;
+	struct gendisk *disk;
+	refcount_t refs;
+	struct kobject *mq_kobj;
+	struct device *dev;
+	enum rpm_status rpm_status;
+	unsigned long nr_requests;
+	unsigned int dma_pad_mask;
+	struct blk_crypto_profile *crypto_profile;
+	struct kobject *crypto_kobject;
+	unsigned int rq_timeout;
+	struct timer_list timeout;
+	struct work_struct timeout_work;
+	atomic_t nr_active_requests_shared_tags;
+	struct blk_mq_tags *sched_shared_tags;
+	struct list_head icq_list;
+	unsigned long blkcg_pols[1];
+	struct blkcg_gq *root_blkg;
+	struct list_head blkg_list;
+	struct mutex blkcg_mutex;
+	struct queue_limits limits;
+	unsigned int required_elevator_features;
+	int node;
+	struct blk_flush_queue *fq;
+	struct list_head flush_list;
+	struct list_head requeue_list;
+	spinlock_t requeue_lock;
+	struct delayed_work requeue_work;
+	struct mutex sysfs_lock;
+	struct mutex sysfs_dir_lock;
+	struct list_head unused_hctx_list;
+	spinlock_t unused_hctx_lock;
+	int mq_freeze_depth;
+	struct throtl_data *td;
+	struct callback_head callback_head;
+	wait_queue_head_t mq_freeze_wq;
+	struct mutex mq_freeze_lock;
+	int quiesce_depth;
+	struct blk_mq_tag_set *tag_set;
+	struct list_head tag_set_list;
+	struct dentry *debugfs_dir;
+	struct dentry *sched_debugfs_dir;
+	struct dentry *rqos_debugfs_dir;
+	struct mutex debugfs_mutex;
+	bool mq_sysfs_init_done;
+	u64 android_oem_data1;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+enum blk_eh_timer_return {
+	BLK_EH_DONE = 0,
+	BLK_EH_RESET_TIMER = 1,
+};
+
+struct blk_mq_hw_ctx;
+
+struct blk_mq_queue_data;
+
+struct blk_mq_ops {
+	blk_status_t (*queue_rq)(struct blk_mq_hw_ctx *, const struct blk_mq_queue_data *);
+	void (*commit_rqs)(struct blk_mq_hw_ctx *);
+	void (*queue_rqs)(struct request **);
+	int (*get_budget)(struct request_queue *);
+	void (*put_budget)(struct request_queue *, int);
+	void (*set_rq_budget_token)(struct request *, int);
+	int (*get_rq_budget_token)(struct request *);
+	enum blk_eh_timer_return (*timeout)(struct request *);
+	int (*poll)(struct blk_mq_hw_ctx *, struct io_comp_batch *);
+	void (*complete)(struct request *);
+	int (*init_hctx)(struct blk_mq_hw_ctx *, void *, unsigned int);
+	void (*exit_hctx)(struct blk_mq_hw_ctx *, unsigned int);
+	int (*init_request)(struct blk_mq_tag_set *, struct request *, unsigned int, unsigned int);
+	void (*exit_request)(struct blk_mq_tag_set *, struct request *, unsigned int);
+	void (*cleanup_rq)(struct request *);
+	bool (*busy)(struct request_queue *);
+	void (*map_queues)(struct blk_mq_tag_set *);
+	void (*show_rq)(struct seq_file *, struct request *);
+	u64 android_kabi_reserved1;
+};
+
+struct blk_mq_ctxs;
+
+struct blk_mq_ctx {
+	struct {
+		spinlock_t lock;
+		struct list_head rq_lists[3];
+		long: 64;
+	};
+	unsigned int cpu;
+	unsigned short index_hw[3];
+	struct blk_mq_hw_ctx *hctxs[3];
+	struct request_queue *queue;
+	struct blk_mq_ctxs *ctxs;
+	struct kobject kobj;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct dev_pm_ops;
+
+struct device_type {
+	const char *name;
+	const struct attribute_group **groups;
+	int (*uevent)(const struct device *, struct kobj_uevent_env *);
+	char * (*devnode)(const struct device *, umode_t *, kuid_t *, kgid_t *);
+	void (*release)(struct device *);
+	const struct dev_pm_ops *pm;
+};
+
+struct dev_pm_ops {
+	int (*prepare)(struct device *);
+	void (*complete)(struct device *);
+	int (*suspend)(struct device *);
+	int (*resume)(struct device *);
+	int (*freeze)(struct device *);
+	int (*thaw)(struct device *);
+	int (*poweroff)(struct device *);
+	int (*restore)(struct device *);
+	int (*suspend_late)(struct device *);
+	int (*resume_early)(struct device *);
+	int (*freeze_late)(struct device *);
+	int (*thaw_early)(struct device *);
+	int (*poweroff_late)(struct device *);
+	int (*restore_early)(struct device *);
+	int (*suspend_noirq)(struct device *);
+	int (*resume_noirq)(struct device *);
+	int (*freeze_noirq)(struct device *);
+	int (*thaw_noirq)(struct device *);
+	int (*poweroff_noirq)(struct device *);
+	int (*restore_noirq)(struct device *);
+	int (*runtime_suspend)(struct device *);
+	int (*runtime_resume)(struct device *);
+	int (*runtime_idle)(struct device *);
+	u64 android_kabi_reserved1;
+};
+
+struct iommu_ops;
+
+struct bus_type {
+	const char *name;
+	const char *dev_name;
+	const struct attribute_group **bus_groups;
+	const struct attribute_group **dev_groups;
+	const struct attribute_group **drv_groups;
+	int (*match)(struct device *, struct device_driver *);
+	int (*uevent)(const struct device *, struct kobj_uevent_env *);
+	int (*probe)(struct device *);
+	void (*sync_state)(struct device *);
+	void (*remove)(struct device *);
+	void (*shutdown)(struct device *);
+	int (*online)(struct device *);
+	int (*offline)(struct device *);
+	int (*suspend)(struct device *, pm_message_t);
+	int (*resume)(struct device *);
+	int (*num_vf)(struct device *);
+	int (*dma_configure)(struct device *);
+	void (*dma_cleanup)(struct device *);
+	const struct dev_pm_ops *pm;
+	const struct iommu_ops *iommu_ops;
+	bool need_parent_lock;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+enum probe_type {
+	PROBE_DEFAULT_STRATEGY = 0,
+	PROBE_PREFER_ASYNCHRONOUS = 1,
+	PROBE_FORCE_SYNCHRONOUS = 2,
+};
+
+struct of_device_id;
+
+struct acpi_device_id;
+
+struct driver_private;
+
+struct device_driver {
+	const char *name;
+	const struct bus_type *bus;
+	struct module *owner;
+	const char *mod_name;
+	bool suppress_bind_attrs;
+	enum probe_type probe_type;
+	const struct of_device_id *of_match_table;
+	const struct acpi_device_id *acpi_match_table;
+	int (*probe)(struct device *);
+	void (*sync_state)(struct device *);
+	int (*remove)(struct device *);
+	void (*shutdown)(struct device *);
+	int (*suspend)(struct device *, pm_message_t);
+	int (*resume)(struct device *);
+	const struct attribute_group **groups;
+	const struct attribute_group **dev_groups;
+	const struct dev_pm_ops *pm;
+	void (*coredump)(struct device *);
+	struct driver_private *p;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct of_device_id {
+	char name[32];
+	char type[32];
+	char compatible[128];
+	const void *data;
+};
+
+typedef unsigned long kernel_ulong_t;
+
+struct acpi_device_id {
+	__u8 id[16];
+	kernel_ulong_t driver_data;
+	__u32 cls;
+	__u32 cls_msk;
+};
+
+enum iommu_cap {
+	IOMMU_CAP_CACHE_COHERENCY = 0,
+	IOMMU_CAP_NOEXEC = 1,
+	IOMMU_CAP_PRE_BOOT_PROTECTION = 2,
+	IOMMU_CAP_ENFORCE_CACHE_COHERENCY = 3,
+	IOMMU_CAP_DEFERRED_FLUSH = 4,
+};
+
+enum iommu_dev_features {
+	IOMMU_DEV_FEAT_SVA = 0,
+	IOMMU_DEV_FEAT_IOPF = 1,
+};
+
+typedef unsigned int ioasid_t;
+
+struct iommu_domain;
+
+struct iommu_device;
+
+struct of_phandle_args;
+
+struct iommu_fault_event;
+
+struct iommu_page_response;
+
+struct iommu_domain_ops;
+
+struct iommu_ops {
+	bool (*capable)(struct device *, enum iommu_cap);
+	void * (*hw_info)(struct device *, u32 *, u32 *);
+	struct iommu_domain * (*domain_alloc)(unsigned int);
+	struct iommu_device * (*probe_device)(struct device *);
+	void (*release_device)(struct device *);
+	void (*probe_finalize)(struct device *);
+	void (*set_platform_dma_ops)(struct device *);
+	struct iommu_group * (*device_group)(struct device *);
+	void (*get_resv_regions)(struct device *, struct list_head *);
+	int (*of_xlate)(struct device *, struct of_phandle_args *);
+	bool (*is_attach_deferred)(struct device *);
+	int (*dev_enable_feat)(struct device *, enum iommu_dev_features);
+	int (*dev_disable_feat)(struct device *, enum iommu_dev_features);
+	int (*page_response)(struct device *, struct iommu_fault_event *, struct iommu_page_response *);
+	int (*def_domain_type)(struct device *);
+	void (*remove_dev_pasid)(struct device *, ioasid_t);
+	const struct iommu_domain_ops *default_domain_ops;
+	unsigned long pgsize_bitmap;
+	struct module *owner;
+};
+
+struct wakeup_source {
+	const char *name;
+	int id;
+	struct list_head entry;
+	spinlock_t lock;
+	struct wake_irq *wakeirq;
+	struct timer_list timer;
+	unsigned long timer_expires;
+	ktime_t total_time;
+	ktime_t max_time;
+	ktime_t last_time;
+	ktime_t start_prevent_time;
+	ktime_t prevent_sleep_time;
+	unsigned long event_count;
+	unsigned long active_count;
+	unsigned long relax_count;
+	unsigned long expire_count;
+	unsigned long wakeup_count;
+	struct device *dev;
+	bool active: 1;
+	bool autosleep_enabled: 1;
+};
+
+struct pm_subsys_data {
+	spinlock_t lock;
+	unsigned int refcount;
+};
+
+struct dev_pm_domain {
+	struct dev_pm_ops ops;
+	int (*start)(struct device *);
+	void (*detach)(struct device *, bool);
+	int (*activate)(struct device *);
+	void (*sync)(struct device *);
+	void (*dismiss)(struct device *);
+	int (*set_performance_state)(struct device *, unsigned int);
+	u64 android_kabi_reserved1;
+};
+
+typedef u64 dma_addr_t;
+
+enum dma_data_direction {
+	DMA_BIDIRECTIONAL = 0,
+	DMA_TO_DEVICE = 1,
+	DMA_FROM_DEVICE = 2,
+	DMA_NONE = 3,
+};
+
+typedef u64 phys_addr_t;
+
+struct sg_table;
+
+struct scatterlist;
+
+struct dma_map_ops {
+	unsigned int flags;
+	void * (*alloc)(struct device *, size_t, dma_addr_t *, gfp_t, unsigned long);
+	void (*free)(struct device *, size_t, void *, dma_addr_t, unsigned long);
+	struct page * (*alloc_pages)(struct device *, size_t, dma_addr_t *, enum dma_data_direction, gfp_t);
+	void (*free_pages)(struct device *, size_t, struct page *, dma_addr_t, enum dma_data_direction);
+	struct sg_table * (*alloc_noncontiguous)(struct device *, size_t, enum dma_data_direction, gfp_t, unsigned long);
+	void (*free_noncontiguous)(struct device *, size_t, struct sg_table *, enum dma_data_direction);
+	int (*mmap)(struct device *, struct vm_area_struct *, void *, dma_addr_t, size_t, unsigned long);
+	int (*get_sgtable)(struct device *, struct sg_table *, void *, dma_addr_t, size_t, unsigned long);
+	dma_addr_t (*map_page)(struct device *, struct page *, unsigned long, size_t, enum dma_data_direction, unsigned long);
+	void (*unmap_page)(struct device *, dma_addr_t, size_t, enum dma_data_direction, unsigned long);
+	int (*map_sg)(struct device *, struct scatterlist *, int, enum dma_data_direction, unsigned long);
+	void (*unmap_sg)(struct device *, struct scatterlist *, int, enum dma_data_direction, unsigned long);
+	dma_addr_t (*map_resource)(struct device *, phys_addr_t, size_t, enum dma_data_direction, unsigned long);
+	void (*unmap_resource)(struct device *, dma_addr_t, size_t, enum dma_data_direction, unsigned long);
+	void (*sync_single_for_cpu)(struct device *, dma_addr_t, size_t, enum dma_data_direction);
+	void (*sync_single_for_device)(struct device *, dma_addr_t, size_t, enum dma_data_direction);
+	void (*sync_sg_for_cpu)(struct device *, struct scatterlist *, int, enum dma_data_direction);
+	void (*sync_sg_for_device)(struct device *, struct scatterlist *, int, enum dma_data_direction);
+	void (*cache_sync)(struct device *, void *, size_t, enum dma_data_direction);
+	int (*dma_supported)(struct device *, u64);
+	u64 (*get_required_mask)(struct device *);
+	size_t (*max_mapping_size)(struct device *);
+	size_t (*opt_mapping_size)();
+	unsigned long (*get_merge_boundary)(struct device *);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct bus_dma_region {
+	phys_addr_t cpu_start;
+	dma_addr_t dma_start;
+	u64 size;
+	u64 offset;
+};
+
+struct device_dma_parameters {
+	unsigned int max_segment_size;
+	unsigned int min_align_mask;
+	unsigned long segment_boundary_mask;
+};
+
+typedef u32 phandle;
+
+struct fwnode_operations;
+
+struct fwnode_handle {
+	struct fwnode_handle *secondary;
+	const struct fwnode_operations *ops;
+	struct device *dev;
+	struct list_head suppliers;
+	struct list_head consumers;
+	u8 flags;
+	u64 android_kabi_reserved1;
+};
+
+struct property;
+
+struct device_node {
+	const char *name;
+	phandle phandle;
+	const char *full_name;
+	struct fwnode_handle fwnode;
+	struct property *properties;
+	struct property *deadprops;
+	struct device_node *parent;
+	struct device_node *child;
+	struct device_node *sibling;
+	struct kobject kobj;
+	unsigned long _flags;
+	void *data;
+};
+
+enum dev_dma_attr {
+	DEV_DMA_NOT_SUPPORTED = 0,
+	DEV_DMA_NON_COHERENT = 1,
+	DEV_DMA_COHERENT = 2,
+};
+
+struct fwnode_reference_args;
+
+struct fwnode_endpoint;
+
+struct fwnode_operations {
+	struct fwnode_handle * (*get)(struct fwnode_handle *);
+	void (*put)(struct fwnode_handle *);
+	bool (*device_is_available)(const struct fwnode_handle *);
+	const void * (*device_get_match_data)(const struct fwnode_handle *, const struct device *);
+	bool (*device_dma_supported)(const struct fwnode_handle *);
+	enum dev_dma_attr (*device_get_dma_attr)(const struct fwnode_handle *);
+	bool (*property_present)(const struct fwnode_handle *, const char *);
+	int (*property_read_int_array)(const struct fwnode_handle *, const char *, unsigned int, void *, size_t);
+	int (*property_read_string_array)(const struct fwnode_handle *, const char *, const char **, size_t);
+	const char * (*get_name)(const struct fwnode_handle *);
+	const char * (*get_name_prefix)(const struct fwnode_handle *);
+	struct fwnode_handle * (*get_parent)(const struct fwnode_handle *);
+	struct fwnode_handle * (*get_next_child_node)(const struct fwnode_handle *, struct fwnode_handle *);
+	struct fwnode_handle * (*get_named_child_node)(const struct fwnode_handle *, const char *);
+	int (*get_reference_args)(const struct fwnode_handle *, const char *, const char *, unsigned int, unsigned int, struct fwnode_reference_args *);
+	struct fwnode_handle * (*graph_get_next_endpoint)(const struct fwnode_handle *, struct fwnode_handle *);
+	struct fwnode_handle * (*graph_get_remote_endpoint)(const struct fwnode_handle *);
+	struct fwnode_handle * (*graph_get_port_parent)(struct fwnode_handle *);
+	int (*graph_parse_endpoint)(const struct fwnode_handle *, struct fwnode_endpoint *);
+	void * (*iomap)(struct fwnode_handle *, int);
+	int (*irq_get)(const struct fwnode_handle *, unsigned int);
+	int (*add_links)(struct fwnode_handle *);
+};
+
+struct fwnode_reference_args {
+	struct fwnode_handle *fwnode;
+	unsigned int nargs;
+	u64 args[8];
+};
+
+struct fwnode_endpoint {
+	unsigned int port;
+	unsigned int id;
+	const struct fwnode_handle *local_fwnode;
+};
+
+struct property {
+	char *name;
+	int length;
+	void *value;
+	struct property *next;
+	struct bin_attribute attr;
+};
+
+struct class {
+	const char *name;
+	const struct attribute_group **class_groups;
+	const struct attribute_group **dev_groups;
+	int (*dev_uevent)(const struct device *, struct kobj_uevent_env *);
+	char * (*devnode)(const struct device *, umode_t *);
+	void (*class_release)(const struct class *);
+	void (*dev_release)(struct device *);
+	int (*shutdown_pre)(struct device *);
+	const struct kobj_ns_type_operations *ns_type;
+	const void * (*namespace)(const struct device *);
+	void (*get_ownership)(const struct device *, kuid_t *, kgid_t *);
+	const struct dev_pm_ops *pm;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+enum kobj_ns_type {
+	KOBJ_NS_TYPE_NONE = 0,
+	KOBJ_NS_TYPE_NET = 1,
+	KOBJ_NS_TYPES = 2,
+};
+
+struct kobj_ns_type_operations {
+	enum kobj_ns_type type;
+	bool (*current_may_mount)();
+	void * (*grab_current_ns)();
+	const void * (*netlink_ns)(struct sock *);
+	const void * (*initial_ns)();
+	void (*drop_ns)(void *);
+};
+
+enum device_physical_location_panel {
+	DEVICE_PANEL_TOP = 0,
+	DEVICE_PANEL_BOTTOM = 1,
+	DEVICE_PANEL_LEFT = 2,
+	DEVICE_PANEL_RIGHT = 3,
+	DEVICE_PANEL_FRONT = 4,
+	DEVICE_PANEL_BACK = 5,
+	DEVICE_PANEL_UNKNOWN = 6,
+};
+
+enum device_physical_location_vertical_position {
+	DEVICE_VERT_POS_UPPER = 0,
+	DEVICE_VERT_POS_CENTER = 1,
+	DEVICE_VERT_POS_LOWER = 2,
+};
+
+enum device_physical_location_horizontal_position {
+	DEVICE_HORI_POS_LEFT = 0,
+	DEVICE_HORI_POS_CENTER = 1,
+	DEVICE_HORI_POS_RIGHT = 2,
+};
+
+struct device_physical_location {
+	enum device_physical_location_panel panel;
+	enum device_physical_location_vertical_position vertical_position;
+	enum device_physical_location_horizontal_position horizontal_position;
+	bool dock;
+	bool lid;
+};
+
+struct bio_alloc_cache {
+	struct bio *free_list;
+	struct bio *free_list_irq;
+	unsigned int nr;
+	unsigned int nr_irq;
+};
+
+struct fprop_local_percpu {
+	struct percpu_counter events;
+	unsigned int period;
+	raw_spinlock_t lock;
+};
+
+enum wb_reason {
+	WB_REASON_BACKGROUND = 0,
+	WB_REASON_VMSCAN = 1,
+	WB_REASON_SYNC = 2,
+	WB_REASON_PERIODIC = 3,
+	WB_REASON_LAPTOP_TIMER = 4,
+	WB_REASON_FS_FREE_SPACE = 5,
+	WB_REASON_FORKER_THREAD = 6,
+	WB_REASON_FOREIGN_FLUSH = 7,
+	WB_REASON_MAX = 8,
+};
+
+struct bdi_writeback {
+	struct backing_dev_info *bdi;
+	unsigned long state;
+	unsigned long last_old_flush;
+	struct list_head b_dirty;
+	struct list_head b_io;
+	struct list_head b_more_io;
+	struct list_head b_dirty_time;
+	spinlock_t list_lock;
+	atomic_t writeback_inodes;
+	struct percpu_counter stat[4];
+	unsigned long bw_time_stamp;
+	unsigned long dirtied_stamp;
+	unsigned long written_stamp;
+	unsigned long write_bandwidth;
+	unsigned long avg_write_bandwidth;
+	unsigned long dirty_ratelimit;
+	unsigned long balanced_dirty_ratelimit;
+	struct fprop_local_percpu completions;
+	int dirty_exceeded;
+	enum wb_reason start_all_reason;
+	spinlock_t work_lock;
+	struct list_head work_list;
+	struct delayed_work dwork;
+	struct delayed_work bw_dwork;
+	struct list_head bdi_node;
+	struct percpu_ref refcnt;
+	struct fprop_local_percpu memcg_completions;
+	struct cgroup_subsys_state *memcg_css;
+	struct cgroup_subsys_state *blkcg_css;
+	struct list_head memcg_node;
+	struct list_head blkcg_node;
+	struct list_head b_attached;
+	struct list_head offline_node;
+	union {
+		struct work_struct release_work;
+		struct callback_head rcu;
+	};
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_oem_data1[2];
+};
+
+struct backing_dev_info {
+	u64 id;
+	struct rb_node rb_node;
+	struct list_head bdi_list;
+	unsigned long ra_pages;
+	unsigned long io_pages;
+	struct kref refcnt;
+	unsigned int capabilities;
+	unsigned int min_ratio;
+	unsigned int max_ratio;
+	unsigned int max_prop_frac;
+	atomic_long_t tot_write_bandwidth;
+	unsigned long last_bdp_sleep;
+	struct bdi_writeback wb;
+	struct list_head wb_list;
+	struct xarray cgwb_tree;
+	struct mutex cgwb_release_mutex;
+	struct rw_semaphore wb_switch_rwsem;
+	wait_queue_head_t wb_waitq;
+	struct device *dev;
+	char dev_name[64];
+	struct device *owner;
+	struct timer_list laptop_mode_wb_timer;
+	struct dentry *debug_dir;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct blk_independent_access_range {
+	struct kobject kobj;
+	sector_t sector;
+	sector_t nr_sectors;
+};
+
+struct blk_independent_access_ranges {
+	struct kobject kobj;
+	bool sysfs_registered;
+	unsigned int nr_ia_ranges;
+	struct blk_independent_access_range ia_range[0];
+};
+
+typedef struct {
+	atomic_long_t a;
+} local_t;
+
+struct disk_stats {
+	u64 nsecs[4];
+	unsigned long sectors[4];
+	unsigned long ios[4];
+	unsigned long merges[4];
+	unsigned long io_ticks;
+	local_t in_flight[2];
+};
+
+struct blk_holder_ops {
+	void (*mark_dead)(struct block_device *, bool);
+	void (*sync)(struct block_device *);
+};
+
+struct partition_meta_info {
+	char uuid[37];
+	u8 volname[64];
+};
+
+struct blk_plug {
+	struct request *mq_list;
+	struct request *cached_rq;
+	unsigned short nr_ios;
+	unsigned short rq_count;
+	bool multiple_queues;
+	bool has_elevator;
+	struct list_head cb_list;
+};
+
+struct reclaim_state {
+	unsigned long reclaimed;
+	struct lru_gen_mm_walk *mm_walk;
+};
+
+struct io_cq;
+
+struct io_context {
+	atomic_long_t refcount;
+	atomic_t active_ref;
+	unsigned short ioprio;
+	spinlock_t lock;
+	struct xarray icq_tree;
+	struct io_cq __attribute__((btf_type_tag("rcu"))) *icq_hint;
+	struct hlist_head icq_list;
+	struct work_struct release_work;
+};
+
+struct io_cq {
+	struct request_queue *q;
+	struct io_context *ioc;
+	union {
+		struct list_head q_node;
+		struct kmem_cache *__rcu_icq_cache;
+	};
+	union {
+		struct hlist_node ioc_node;
+		struct callback_head __rcu_head;
+	};
+	unsigned int flags;
+};
+
+typedef int __kernel_timer_t;
+
+union sigval {
+	int sival_int;
+	void __attribute__((btf_type_tag("user"))) *sival_ptr;
+};
+
+typedef union sigval sigval_t;
+
+typedef __kernel_long_t __kernel_clock_t;
+
+union __sifields {
+	struct {
+		__kernel_pid_t _pid;
+		__kernel_uid32_t _uid;
+	} _kill;
+	struct {
+		__kernel_timer_t _tid;
+		int _overrun;
+		sigval_t _sigval;
+		int _sys_private;
+	} _timer;
+	struct {
+		__kernel_pid_t _pid;
+		__kernel_uid32_t _uid;
+		sigval_t _sigval;
+	} _rt;
+	struct {
+		__kernel_pid_t _pid;
+		__kernel_uid32_t _uid;
+		int _status;
+		__kernel_clock_t _utime;
+		__kernel_clock_t _stime;
+	} _sigchld;
+	struct {
+		void __attribute__((btf_type_tag("user"))) *_addr;
+		union {
+			int _trapno;
+			short _addr_lsb;
+			struct {
+				char _dummy_bnd[8];
+				void __attribute__((btf_type_tag("user"))) *_lower;
+				void __attribute__((btf_type_tag("user"))) *_upper;
+			} _addr_bnd;
+			struct {
+				char _dummy_pkey[8];
+				__u32 _pkey;
+			} _addr_pkey;
+			struct {
+				unsigned long _data;
+				__u32 _type;
+				__u32 _flags;
+			} _perf;
+		};
+	} _sigfault;
+	struct {
+		long _band;
+		int _fd;
+	} _sigpoll;
+	struct {
+		void __attribute__((btf_type_tag("user"))) *_call_addr;
+		int _syscall;
+		unsigned int _arch;
+	} _sigsys;
+};
+
+struct kernel_siginfo {
+	struct {
+		int si_signo;
+		int si_errno;
+		int si_code;
+		union __sifields _sifields;
+	};
+};
+
+struct robust_list {
+	struct robust_list __attribute__((btf_type_tag("user"))) *next;
+};
+
+struct robust_list_head {
+	struct robust_list list;
+	long futex_offset;
+	struct robust_list __attribute__((btf_type_tag("user"))) *list_op_pending;
+};
+
+typedef u32 compat_uptr_t;
+
+struct compat_robust_list {
+	compat_uptr_t next;
+};
+
+typedef s32 compat_long_t;
+
+struct compat_robust_list_head {
+	struct compat_robust_list list;
+	compat_long_t futex_offset;
+	compat_uptr_t list_op_pending;
+};
+
+struct perf_event_groups {
+	struct rb_root tree;
+	u64 index;
+};
+
+struct perf_event_context {
+	raw_spinlock_t lock;
+	struct mutex mutex;
+	struct list_head pmu_ctx_list;
+	struct perf_event_groups pinned_groups;
+	struct perf_event_groups flexible_groups;
+	struct list_head event_list;
+	int nr_events;
+	int nr_user;
+	int is_active;
+	int nr_task_data;
+	int nr_stat;
+	int nr_freq;
+	int rotate_disable;
+	refcount_t refcount;
+	struct task_struct *task;
+	u64 time;
+	u64 timestamp;
+	u64 timeoffset;
+	struct perf_event_context *parent_ctx;
+	u64 parent_gen;
+	u64 generation;
+	int pin_count;
+	struct callback_head callback_head;
+	local_t nr_pending;
+};
+
+struct task_delay_info {
+	raw_spinlock_t lock;
+	u64 blkio_start;
+	u64 blkio_delay;
+	u64 swapin_start;
+	u64 swapin_delay;
+	u32 blkio_count;
+	u32 swapin_count;
+	u64 freepages_start;
+	u64 freepages_delay;
+	u64 thrashing_start;
+	u64 thrashing_delay;
+	u64 compact_start;
+	u64 compact_delay;
+	u64 wpcopy_start;
+	u64 wpcopy_delay;
+	u64 irq_delay;
+	u32 freepages_count;
+	u32 thrashing_count;
+	u32 compact_count;
+	u32 wpcopy_count;
+	u32 irq_count;
+};
+
+typedef void (*kunit_try_catch_func_t)(void *);
+
+struct kunit_try_catch {
+	struct kunit *test;
+	struct completion *try_completion;
+	int try_result;
+	kunit_try_catch_func_t try;
+	kunit_try_catch_func_t catch;
+	void *context;
+};
+
+enum kunit_status {
+	KUNIT_SUCCESS = 0,
+	KUNIT_FAILURE = 1,
+	KUNIT_SKIPPED = 2,
+};
+
+struct kunit {
+	void *priv;
+	const char *name;
+	char *log;
+	struct kunit_try_catch try_catch;
+	const void *param_value;
+	int param_index;
+	spinlock_t lock;
+	enum kunit_status status;
+	struct list_head resources;
+	char status_comment[256];
+};
+
+struct arch_uprobe_task {
+	unsigned long saved_scratch_register;
+	unsigned int saved_trap_nr;
+	unsigned int saved_tf;
+};
+
+enum uprobe_task_state {
+	UTASK_RUNNING = 0,
+	UTASK_SSTEP = 1,
+	UTASK_SSTEP_ACK = 2,
+	UTASK_SSTEP_TRAPPED = 3,
+};
+
+struct uprobe;
+
+struct return_instance;
+
+struct uprobe_task {
+	enum uprobe_task_state state;
+	union {
+		struct {
+			struct arch_uprobe_task autask;
+			unsigned long vaddr;
+		};
+		struct {
+			struct callback_head dup_xol_work;
+			unsigned long dup_xol_addr;
+		};
+	};
+	struct uprobe *active_uprobe;
+	unsigned long xol_vaddr;
+	struct return_instance *return_instances;
+	unsigned int depth;
+};
+
+struct return_instance {
+	struct uprobe *uprobe;
+	unsigned long func;
+	unsigned long stack;
+	unsigned long orig_ret_vaddr;
+	bool chained;
+	struct return_instance *next;
+};
+
+struct vm_struct {
+	struct vm_struct *next;
+	void *addr;
+	unsigned long size;
+	unsigned long flags;
+	struct page **pages;
+	unsigned int page_order;
+	unsigned int nr_pages;
+	phys_addr_t phys_addr;
+	const void *caller;
+	u64 android_oem_data1;
+};
+
+enum perf_event_state {
+	PERF_EVENT_STATE_DEAD = -4,
+	PERF_EVENT_STATE_EXIT = -3,
+	PERF_EVENT_STATE_ERROR = -2,
+	PERF_EVENT_STATE_OFF = -1,
+	PERF_EVENT_STATE_INACTIVE = 0,
+	PERF_EVENT_STATE_ACTIVE = 1,
+};
+
+typedef struct {
+	local_t a;
+} local64_t;
+
+struct perf_event_attr {
+	__u32 type;
+	__u32 size;
+	__u64 config;
+	union {
+		__u64 sample_period;
+		__u64 sample_freq;
+	};
+	__u64 sample_type;
+	__u64 read_format;
+	__u64 disabled: 1;
+	__u64 inherit: 1;
+	__u64 pinned: 1;
+	__u64 exclusive: 1;
+	__u64 exclude_user: 1;
+	__u64 exclude_kernel: 1;
+	__u64 exclude_hv: 1;
+	__u64 exclude_idle: 1;
+	__u64 mmap: 1;
+	__u64 comm: 1;
+	__u64 freq: 1;
+	__u64 inherit_stat: 1;
+	__u64 enable_on_exec: 1;
+	__u64 task: 1;
+	__u64 watermark: 1;
+	__u64 precise_ip: 2;
+	__u64 mmap_data: 1;
+	__u64 sample_id_all: 1;
+	__u64 exclude_host: 1;
+	__u64 exclude_guest: 1;
+	__u64 exclude_callchain_kernel: 1;
+	__u64 exclude_callchain_user: 1;
+	__u64 mmap2: 1;
+	__u64 comm_exec: 1;
+	__u64 use_clockid: 1;
+	__u64 context_switch: 1;
+	__u64 write_backward: 1;
+	__u64 namespaces: 1;
+	__u64 ksymbol: 1;
+	__u64 bpf_event: 1;
+	__u64 aux_output: 1;
+	__u64 cgroup: 1;
+	__u64 text_poke: 1;
+	__u64 build_id: 1;
+	__u64 inherit_thread: 1;
+	__u64 remove_on_exec: 1;
+	__u64 sigtrap: 1;
+	__u64 __reserved_1: 26;
+	union {
+		__u32 wakeup_events;
+		__u32 wakeup_watermark;
+	};
+	__u32 bp_type;
+	union {
+		__u64 bp_addr;
+		__u64 kprobe_func;
+		__u64 uprobe_path;
+		__u64 config1;
+	};
+	union {
+		__u64 bp_len;
+		__u64 kprobe_addr;
+		__u64 probe_offset;
+		__u64 config2;
+	};
+	__u64 branch_sample_type;
+	__u64 sample_regs_user;
+	__u32 sample_stack_user;
+	__s32 clockid;
+	__u64 sample_regs_intr;
+	__u32 aux_watermark;
+	__u16 sample_max_stack;
+	__u16 __reserved_2;
+	__u32 aux_sample_size;
+	__u32 __reserved_3;
+	__u64 sig_data;
+	__u64 config3;
+};
+
+struct hw_perf_event_extra {
+	u64 config;
+	unsigned int reg;
+	int alloc;
+	int idx;
+};
+
+struct arch_hw_breakpoint {
+	unsigned long address;
+	unsigned long mask;
+	u8 len;
+	u8 type;
+};
+
+struct rhlist_head {
+	struct rhash_head rhead;
+	struct rhlist_head __attribute__((btf_type_tag("rcu"))) *next;
+};
+
+struct hw_perf_event {
+	union {
+		struct {
+			u64 config;
+			u64 last_tag;
+			unsigned long config_base;
+			unsigned long event_base;
+			int event_base_rdpmc;
+			int idx;
+			int last_cpu;
+			int flags;
+			struct hw_perf_event_extra extra_reg;
+			struct hw_perf_event_extra branch_reg;
+		};
+		struct {
+			struct hrtimer hrtimer;
+		};
+		struct {
+			struct list_head tp_list;
+		};
+		struct {
+			u64 pwr_acc;
+			u64 ptsc;
+		};
+		struct {
+			struct arch_hw_breakpoint info;
+			struct rhlist_head bp_list;
+		};
+		struct {
+			u8 iommu_bank;
+			u8 iommu_cntr;
+			u16 padding;
+			u64 conf;
+			u64 conf1;
+		};
+	};
+	struct task_struct *target;
+	void *addr_filters;
+	unsigned long addr_filters_gen;
+	int state;
+	local64_t prev_count;
+	u64 sample_period;
+	union {
+		struct {
+			u64 last_period;
+			local64_t period_left;
+		};
+		struct {
+			u64 saved_metric;
+			u64 saved_slots;
+		};
+	};
+	u64 interrupts_seq;
+	u64 interrupts;
+	u64 freq_time_stamp;
+	u64 freq_count_stamp;
+};
+
+struct irq_work {
+	struct __call_single_node node;
+	void (*func)(struct irq_work *);
+	struct rcuwait irqwait;
+};
+
+struct perf_addr_filters_head {
+	struct list_head list;
+	raw_spinlock_t lock;
+	unsigned int nr_file_filters;
+};
+
+struct perf_sample_data;
+
+struct pt_regs;
+
+typedef void (*perf_overflow_handler_t)(struct perf_event *, struct perf_sample_data *, struct pt_regs *);
+
+struct pmu;
+
+struct perf_event_pmu_context;
+
+struct perf_buffer;
+
+struct fasync_struct;
+
+struct perf_addr_filter_range;
+
+struct event_filter;
+
+struct perf_event {
+	struct list_head event_entry;
+	struct list_head sibling_list;
+	struct list_head active_list;
+	struct rb_node group_node;
+	u64 group_index;
+	struct list_head migrate_entry;
+	struct hlist_node hlist_entry;
+	struct list_head active_entry;
+	int nr_siblings;
+	int event_caps;
+	int group_caps;
+	unsigned int group_generation;
+	struct perf_event *group_leader;
+	struct pmu *pmu;
+	void *pmu_private;
+	enum perf_event_state state;
+	unsigned int attach_state;
+	local64_t count;
+	atomic64_t child_count;
+	u64 total_time_enabled;
+	u64 total_time_running;
+	u64 tstamp;
+	struct perf_event_attr attr;
+	u16 header_size;
+	u16 id_header_size;
+	u16 read_size;
+	struct hw_perf_event hw;
+	struct perf_event_context *ctx;
+	struct perf_event_pmu_context *pmu_ctx;
+	atomic_long_t refcount;
+	atomic64_t child_total_time_enabled;
+	atomic64_t child_total_time_running;
+	struct mutex child_mutex;
+	struct list_head child_list;
+	struct perf_event *parent;
+	int oncpu;
+	int cpu;
+	struct list_head owner_entry;
+	struct task_struct *owner;
+	struct mutex mmap_mutex;
+	atomic_t mmap_count;
+	struct perf_buffer *rb;
+	struct list_head rb_entry;
+	unsigned long rcu_batches;
+	int rcu_pending;
+	wait_queue_head_t waitq;
+	struct fasync_struct *fasync;
+	unsigned int pending_wakeup;
+	unsigned int pending_kill;
+	unsigned int pending_disable;
+	unsigned int pending_sigtrap;
+	unsigned long pending_addr;
+	struct irq_work pending_irq;
+	struct callback_head pending_task;
+	unsigned int pending_work;
+	atomic_t event_limit;
+	struct perf_addr_filters_head addr_filters;
+	struct perf_addr_filter_range *addr_filter_ranges;
+	unsigned long addr_filters_gen;
+	struct perf_event *aux_event;
+	void (*destroy)(struct perf_event *);
+	struct callback_head callback_head;
+	struct pid_namespace *ns;
+	u64 id;
+	atomic64_t lost_samples;
+	u64 (*clock)();
+	perf_overflow_handler_t overflow_handler;
+	void *overflow_handler_context;
+	perf_overflow_handler_t orig_overflow_handler;
+	struct bpf_prog *prog;
+	u64 bpf_cookie;
+	struct trace_event_call *tp_event;
+	struct event_filter *filter;
+	void *security;
+	struct list_head sb_list;
+	__u32 orig_type;
+};
+
+struct perf_cpu_pmu_context;
+
+struct perf_output_handle;
+
+struct pmu {
+	struct list_head entry;
+	struct module *module;
+	struct device *dev;
+	struct device *parent;
+	const struct attribute_group **attr_groups;
+	const struct attribute_group **attr_update;
+	const char *name;
+	int type;
+	int capabilities;
+	int __attribute__((btf_type_tag("percpu"))) *pmu_disable_count;
+	struct perf_cpu_pmu_context __attribute__((btf_type_tag("percpu"))) *cpu_pmu_context;
+	atomic_t exclusive_cnt;
+	int task_ctx_nr;
+	int hrtimer_interval_ms;
+	unsigned int nr_addr_filters;
+	void (*pmu_enable)(struct pmu *);
+	void (*pmu_disable)(struct pmu *);
+	int (*event_init)(struct perf_event *);
+	void (*event_mapped)(struct perf_event *, struct mm_struct *);
+	void (*event_unmapped)(struct perf_event *, struct mm_struct *);
+	int (*add)(struct perf_event *, int);
+	void (*del)(struct perf_event *, int);
+	void (*start)(struct perf_event *, int);
+	void (*stop)(struct perf_event *, int);
+	void (*read)(struct perf_event *);
+	void (*start_txn)(struct pmu *, unsigned int);
+	int (*commit_txn)(struct pmu *);
+	void (*cancel_txn)(struct pmu *);
+	int (*event_idx)(struct perf_event *);
+	void (*sched_task)(struct perf_event_pmu_context *, bool);
+	struct kmem_cache *task_ctx_cache;
+	void (*swap_task_ctx)(struct perf_event_pmu_context *, struct perf_event_pmu_context *);
+	void * (*setup_aux)(struct perf_event *, void **, int, bool);
+	void (*free_aux)(void *);
+	long (*snapshot_aux)(struct perf_event *, struct perf_output_handle *, unsigned long);
+	int (*addr_filters_validate)(struct list_head *);
+	void (*addr_filters_sync)(struct perf_event *);
+	int (*aux_output_match)(struct perf_event *);
+	bool (*filter)(struct pmu *, int);
+	int (*check_period)(struct perf_event *, u64);
+};
+
+struct perf_event_pmu_context {
+	struct pmu *pmu;
+	struct perf_event_context *ctx;
+	struct list_head pmu_ctx_entry;
+	struct list_head pinned_active;
+	struct list_head flexible_active;
+	unsigned int embedded: 1;
+	unsigned int nr_events;
+	unsigned int nr_cgroups;
+	atomic_t refcount;
+	struct callback_head callback_head;
+	void *task_ctx_data;
+	int rotate_necessary;
+};
+
+struct perf_cpu_pmu_context {
+	struct perf_event_pmu_context epc;
+	struct perf_event_pmu_context *task_epc;
+	struct list_head sched_cb_entry;
+	int sched_cb_usage;
+	int active_oncpu;
+	int exclusive;
+	raw_spinlock_t hrtimer_lock;
+	struct hrtimer hrtimer;
+	ktime_t hrtimer_interval;
+	unsigned int hrtimer_active;
+};
+
+struct perf_output_handle {
+	struct perf_event *event;
+	struct perf_buffer *rb;
+	unsigned long wakeup;
+	unsigned long size;
+	u64 aux_flags;
+	union {
+		void *addr;
+		unsigned long head;
+	};
+	int page;
+};
+
+struct fasync_struct {
+	rwlock_t fa_lock;
+	int magic;
+	int fa_fd;
+	struct fasync_struct *fa_next;
+	struct file *fa_file;
+	struct callback_head fa_rcu;
+};
+
+struct perf_addr_filter_range {
+	unsigned long start;
+	unsigned long size;
+};
+
+union perf_sample_weight {
+	__u64 full;
+	struct {
+		__u32 var1_dw;
+		__u16 var2_w;
+		__u16 var3_w;
+	};
+};
+
+union perf_mem_data_src {
+	__u64 val;
+	struct {
+		__u64 mem_op: 5;
+		__u64 mem_lvl: 14;
+		__u64 mem_snoop: 5;
+		__u64 mem_lock: 2;
+		__u64 mem_dtlb: 7;
+		__u64 mem_lvl_num: 4;
+		__u64 mem_remote: 1;
+		__u64 mem_snoopx: 2;
+		__u64 mem_blk: 3;
+		__u64 mem_hops: 3;
+		__u64 mem_rsvd: 18;
+	};
+};
+
+struct perf_regs {
+	__u64 abi;
+	struct pt_regs *regs;
+};
+
+struct perf_callchain_entry;
+
+struct perf_raw_record;
+
+struct perf_branch_stack;
+
+struct perf_sample_data {
+	u64 sample_flags;
+	u64 period;
+	u64 dyn_size;
+	u64 type;
+	struct {
+		u32 pid;
+		u32 tid;
+	} tid_entry;
+	u64 time;
+	u64 id;
+	struct {
+		u32 cpu;
+		u32 reserved;
+	} cpu_entry;
+	u64 ip;
+	struct perf_callchain_entry *callchain;
+	struct perf_raw_record *raw;
+	struct perf_branch_stack *br_stack;
+	union perf_sample_weight weight;
+	union perf_mem_data_src data_src;
+	u64 txn;
+	struct perf_regs regs_user;
+	struct perf_regs regs_intr;
+	u64 stack_user_size;
+	u64 stream_id;
+	u64 cgroup;
+	u64 addr;
+	u64 phys_addr;
+	u64 data_page_size;
+	u64 code_page_size;
+	u64 aux_size;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct perf_callchain_entry {
+	__u64 nr;
+	__u64 ip[0];
+};
+
+typedef unsigned long (*perf_copy_f)(void *, const void *, unsigned long, unsigned long);
+
+struct perf_raw_frag {
+	union {
+		struct perf_raw_frag *next;
+		unsigned long pad;
+	};
+	perf_copy_f copy;
+	void *data;
+	u32 size;
+} __attribute__((packed));
+
+struct perf_raw_record {
+	struct perf_raw_frag frag;
+	u32 size;
+};
+
+struct perf_branch_entry {
+	__u64 from;
+	__u64 to;
+	__u64 mispred: 1;
+	__u64 predicted: 1;
+	__u64 in_tx: 1;
+	__u64 abort: 1;
+	__u64 cycles: 16;
+	__u64 type: 4;
+	__u64 spec: 2;
+	__u64 new_type: 4;
+	__u64 priv: 3;
+	__u64 reserved: 31;
+};
+
+struct perf_branch_stack {
+	__u64 nr;
+	__u64 hw_idx;
+	struct perf_branch_entry entries[0];
+};
+
+struct pt_regs {
+	unsigned long r15;
+	unsigned long r14;
+	unsigned long r13;
+	unsigned long r12;
+	unsigned long bp;
+	unsigned long bx;
+	unsigned long r11;
+	unsigned long r10;
+	unsigned long r9;
+	unsigned long r8;
+	unsigned long ax;
+	unsigned long cx;
+	unsigned long dx;
+	unsigned long si;
+	unsigned long di;
+	unsigned long orig_ax;
+	unsigned long ip;
+	unsigned long cs;
+	unsigned long flags;
+	unsigned long sp;
+	unsigned long ss;
+};
+
+struct trace_event_functions;
+
+struct trace_event {
+	struct hlist_node node;
+	int type;
+	struct trace_event_functions *funcs;
+};
+
+struct trace_event_class;
+
+struct trace_event_call {
+	struct list_head list;
+	struct trace_event_class *class;
+	union {
+		char *name;
+		struct tracepoint *tp;
+	};
+	struct trace_event event;
+	char *print_fmt;
+	struct event_filter *filter;
+	union {
+		void *module;
+		atomic_t refcnt;
+	};
+	void *data;
+	int flags;
+	int perf_refcount;
+	struct hlist_head __attribute__((btf_type_tag("percpu"))) *perf_events;
+	struct bpf_prog_array __attribute__((btf_type_tag("rcu"))) *prog_array;
+	int (*perf_perm)(struct trace_event_call *, struct perf_event *);
+};
+
+enum trace_reg {
+	TRACE_REG_REGISTER = 0,
+	TRACE_REG_UNREGISTER = 1,
+	TRACE_REG_PERF_REGISTER = 2,
+	TRACE_REG_PERF_UNREGISTER = 3,
+	TRACE_REG_PERF_OPEN = 4,
+	TRACE_REG_PERF_CLOSE = 5,
+	TRACE_REG_PERF_ADD = 6,
+	TRACE_REG_PERF_DEL = 7,
+};
+
+struct trace_event_fields;
+
+struct trace_event_class {
+	const char *system;
+	void *probe;
+	void *perf_probe;
+	int (*reg)(struct trace_event_call *, enum trace_reg, void *);
+	struct trace_event_fields *fields_array;
+	struct list_head * (*get_fields)(struct trace_event_call *);
+	struct list_head fields;
+	int (*raw_init)(struct trace_event_call *);
+};
+
+struct trace_event_fields {
+	const char *type;
+	union {
+		struct {
+			const char *name;
+			const int size;
+			const int align;
+			const int is_signed;
+			const int filter_type;
+			const int len;
+		};
+		int (*define_fields)(struct trace_event_call *);
+	};
+};
+
+enum print_line_t {
+	TRACE_TYPE_PARTIAL_LINE = 0,
+	TRACE_TYPE_HANDLED = 1,
+	TRACE_TYPE_UNHANDLED = 2,
+	TRACE_TYPE_NO_CONSUME = 3,
+};
+
+struct trace_iterator;
+
+typedef enum print_line_t (*trace_print_func)(struct trace_iterator *, int, struct trace_event *);
+
+struct trace_event_functions {
+	trace_print_func trace;
+	trace_print_func raw;
+	trace_print_func hex;
+	trace_print_func binary;
+};
+
+struct seq_buf {
+	char *buffer;
+	size_t size;
+	size_t len;
+	loff_t readpos;
+};
+
+struct trace_seq {
+	char buffer[4096];
+	struct seq_buf seq;
+	int full;
+};
+
+typedef struct cpumask cpumask_var_t[1];
+
+struct trace_array;
+
+struct tracer;
+
+struct array_buffer;
+
+struct ring_buffer_iter;
+
+struct trace_entry;
+
+struct trace_iterator {
+	struct trace_array *tr;
+	struct tracer *trace;
+	struct array_buffer *array_buffer;
+	void *private;
+	int cpu_file;
+	struct mutex mutex;
+	struct ring_buffer_iter **buffer_iter;
+	unsigned long iter_flags;
+	void *temp;
+	unsigned int temp_size;
+	char *fmt;
+	unsigned int fmt_size;
+	long wait_index;
+	struct trace_seq tmp_seq;
+	cpumask_var_t started;
+	bool snapshot;
+	struct trace_seq seq;
+	struct trace_entry *ent;
+	unsigned long lost_events;
+	int leftover;
+	int ent_size;
+	int cpu;
+	u64 ts;
+	loff_t pos;
+	long idx;
+};
+
+struct trace_entry {
+	unsigned short type;
+	unsigned char flags;
+	unsigned char preempt_count;
+	int pid;
+};
+
+struct math_emu_info {
+	long ___orig_eip;
+	struct pt_regs *regs;
+};
+
+typedef void *fl_owner_t;
+
+struct kiocb;
+
+struct iov_iter;
+
+struct dir_context;
+
+struct file_lock;
+
+struct io_uring_cmd;
+
+struct file_operations {
+	struct module *owner;
+	loff_t (*llseek)(struct file *, loff_t, int);
+	ssize_t (*read)(struct file *, char __attribute__((btf_type_tag("user"))) *, size_t, loff_t *);
+	ssize_t (*write)(struct file *, const char __attribute__((btf_type_tag("user"))) *, size_t, loff_t *);
+	ssize_t (*read_iter)(struct kiocb *, struct iov_iter *);
+	ssize_t (*write_iter)(struct kiocb *, struct iov_iter *);
+	int (*iopoll)(struct kiocb *, struct io_comp_batch *, unsigned int);
+	int (*iterate_shared)(struct file *, struct dir_context *);
+	__poll_t (*poll)(struct file *, struct poll_table_struct *);
+	long (*unlocked_ioctl)(struct file *, unsigned int, unsigned long);
+	long (*compat_ioctl)(struct file *, unsigned int, unsigned long);
+	int (*mmap)(struct file *, struct vm_area_struct *);
+	unsigned long mmap_supported_flags;
+	int (*open)(struct inode *, struct file *);
+	int (*flush)(struct file *, fl_owner_t);
+	int (*release)(struct inode *, struct file *);
+	int (*fsync)(struct file *, loff_t, loff_t, int);
+	int (*fasync)(int, struct file *, int);
+	int (*lock)(struct file *, int, struct file_lock *);
+	unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long);
+	int (*check_flags)(int);
+	int (*flock)(struct file *, int, struct file_lock *);
+	ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, loff_t *, size_t, unsigned int);
+	ssize_t (*splice_read)(struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int);
+	void (*splice_eof)(struct file *);
+	int (*setlease)(struct file *, int, struct file_lock **, void **);
+	long (*fallocate)(struct file *, int, loff_t, loff_t);
+	void (*show_fdinfo)(struct seq_file *, struct file *);
+	ssize_t (*copy_file_range)(struct file *, loff_t, struct file *, loff_t, size_t, unsigned int);
+	loff_t (*remap_file_range)(struct file *, loff_t, struct file *, loff_t, loff_t, unsigned int);
+	int (*fadvise)(struct file *, loff_t, loff_t, int);
+	int (*uring_cmd)(struct io_uring_cmd *, unsigned int);
+	int (*uring_cmd_iopoll)(struct io_uring_cmd *, struct io_comp_batch *, unsigned int);
+};
+
+struct wait_page_queue;
+
+struct kiocb {
+	struct file *ki_filp;
+	loff_t ki_pos;
+	void (*ki_complete)(struct kiocb *, long);
+	void *private;
+	int ki_flags;
+	u16 ki_ioprio;
+	union {
+		struct wait_page_queue *ki_waitq;
+		ssize_t (*dio_complete)(void *);
+	};
+};
+
+struct wait_queue_entry;
+
+typedef int (*wait_queue_func_t)(struct wait_queue_entry *, unsigned int, int, void *);
+
+struct wait_queue_entry {
+	unsigned int flags;
+	void *private;
+	wait_queue_func_t func;
+	struct list_head entry;
+};
+
+typedef struct wait_queue_entry wait_queue_entry_t;
+
+struct folio;
+
+struct wait_page_queue {
+	struct folio *folio;
+	int bit_nr;
+	wait_queue_entry_t wait;
+};
+
+typedef struct {
+	unsigned long val;
+} swp_entry_t;
+
+struct folio {
+	union {
+		struct {
+			unsigned long flags;
+			union {
+				struct list_head lru;
+				struct {
+					void *__filler;
+					unsigned int mlock_count;
+				};
+			};
+			struct address_space *mapping;
+			unsigned long index;
+			union {
+				void *private;
+				swp_entry_t swap;
+			};
+			atomic_t _mapcount;
+			atomic_t _refcount;
+			unsigned long memcg_data;
+		};
+		struct page page;
+	};
+	union {
+		struct {
+			unsigned long _flags_1;
+			unsigned long _head_1;
+			atomic_t _entire_mapcount;
+			atomic_t _nr_pages_mapped;
+			atomic_t _pincount;
+			unsigned int __padding;
+			unsigned int _folio_nr_pages;
+			union {
+				unsigned long _private_1;
+				unsigned long *_dst_ul;
+				struct page **_dst_pp;
+			};
+		};
+		struct page __page_1;
+	};
+	union {
+		struct {
+			unsigned long _flags_2;
+			unsigned long _head_2;
+			void *_hugetlb_subpool;
+			void *_hugetlb_cgroup;
+			void *_hugetlb_cgroup_rsvd;
+			void *_hugetlb_hwpoison;
+		};
+		struct {
+			unsigned long _flags_2a;
+			unsigned long _head_2a;
+			struct list_head _deferred_list;
+		};
+		struct page __page_2;
+	};
+};
+
+struct iovec {
+	void __attribute__((btf_type_tag("user"))) *iov_base;
+	__kernel_size_t iov_len;
+};
+
+struct kvec;
+
+struct iov_iter {
+	u8 iter_type;
+	bool copy_mc;
+	bool nofault;
+	bool data_source;
+	bool user_backed;
+	union {
+		size_t iov_offset;
+		int last_offset;
+	};
+	union {
+		struct iovec __ubuf_iovec;
+		struct {
+			union {
+				const struct iovec *__iov;
+				const struct kvec *kvec;
+				const struct bio_vec *bvec;
+				struct xarray *xarray;
+				void __attribute__((btf_type_tag("user"))) *ubuf;
+			};
+			size_t count;
+		};
+	};
+	union {
+		unsigned long nr_segs;
+		loff_t xarray_start;
+	};
+};
+
+struct kvec {
+	void *iov_base;
+	size_t iov_len;
+};
+
+typedef bool (*filldir_t)(struct dir_context *, const char *, int, loff_t, u64, unsigned int);
+
+struct dir_context {
+	filldir_t actor;
+	loff_t pos;
+};
+
+struct fc_log {
+	refcount_t usage;
+	u8 head;
+	u8 tail;
+	u8 need_free;
+	struct module *owner;
+	char *buffer[8];
+};
+
+struct fs_parse_result;
+
+typedef int fs_param_type(struct p_log *, const struct fs_parameter_spec *, struct fs_parameter *, struct fs_parse_result *);
+
+struct fs_parameter_spec {
+	const char *name;
+	fs_param_type *type;
+	u8 opt;
+	unsigned short flags;
+	const void *data;
+};
+
+struct fs_parse_result {
+	bool negated;
+	union {
+		bool boolean;
+		int int_32;
+		unsigned int uint_32;
+		u64 uint_64;
+	};
+};
+
+enum freeze_holder {
+	FREEZE_HOLDER_KERNEL = 1,
+	FREEZE_HOLDER_USERSPACE = 2,
+};
+
+struct writeback_control;
+
+struct kstatfs;
+
+struct dquot;
+
+struct super_operations {
+	struct inode * (*alloc_inode)(struct super_block *);
+	void (*destroy_inode)(struct inode *);
+	void (*free_inode)(struct inode *);
+	void (*dirty_inode)(struct inode *, int);
+	int (*write_inode)(struct inode *, struct writeback_control *);
+	int (*drop_inode)(struct inode *);
+	void (*evict_inode)(struct inode *);
+	void (*put_super)(struct super_block *);
+	int (*sync_fs)(struct super_block *, int);
+	int (*freeze_super)(struct super_block *, enum freeze_holder);
+	int (*freeze_fs)(struct super_block *);
+	int (*thaw_super)(struct super_block *, enum freeze_holder);
+	int (*unfreeze_fs)(struct super_block *);
+	int (*statfs)(struct dentry *, struct kstatfs *);
+	int (*remount_fs)(struct super_block *, int *, char *);
+	void (*umount_begin)(struct super_block *);
+	int (*show_options)(struct seq_file *, struct dentry *);
+	int (*show_devname)(struct seq_file *, struct dentry *);
+	int (*show_path)(struct seq_file *, struct dentry *);
+	int (*show_stats)(struct seq_file *, struct dentry *);
+	ssize_t (*quota_read)(struct super_block *, int, char *, size_t, loff_t);
+	ssize_t (*quota_write)(struct super_block *, int, const char *, size_t, loff_t);
+	struct dquot __attribute__((btf_type_tag("rcu"))) ** (*get_dquots)(struct inode *);
+	long (*nr_cached_objects)(struct super_block *, struct shrink_control *);
+	long (*free_cached_objects)(struct super_block *, struct shrink_control *);
+	void (*shutdown)(struct super_block *);
+};
+
+enum writeback_sync_modes {
+	WB_SYNC_NONE = 0,
+	WB_SYNC_ALL = 1,
+};
+
+struct swap_iocb;
+
+struct writeback_control {
+	long nr_to_write;
+	long pages_skipped;
+	loff_t range_start;
+	loff_t range_end;
+	enum writeback_sync_modes sync_mode;
+	unsigned int for_kupdate: 1;
+	unsigned int for_background: 1;
+	unsigned int tagged_writepages: 1;
+	unsigned int for_reclaim: 1;
+	unsigned int range_cyclic: 1;
+	unsigned int for_sync: 1;
+	unsigned int unpinned_fscache_wb: 1;
+	unsigned int no_cgroup_owner: 1;
+	struct swap_iocb **swap_plug;
+	struct bdi_writeback *wb;
+	struct inode *inode;
+	int wb_id;
+	int wb_lcand_id;
+	int wb_tcand_id;
+	size_t wb_bytes;
+	size_t wb_lcand_bytes;
+	size_t wb_tcand_bytes;
+};
+
+typedef __kernel_uid32_t projid_t;
+
+typedef struct {
+	projid_t val;
+} kprojid_t;
+
+enum quota_type {
+	USRQUOTA = 0,
+	GRPQUOTA = 1,
+	PRJQUOTA = 2,
+};
+
+struct kqid {
+	union {
+		kuid_t uid;
+		kgid_t gid;
+		kprojid_t projid;
+	};
+	enum quota_type type;
+};
+
+struct mem_dqblk {
+	qsize_t dqb_bhardlimit;
+	qsize_t dqb_bsoftlimit;
+	qsize_t dqb_curspace;
+	qsize_t dqb_rsvspace;
+	qsize_t dqb_ihardlimit;
+	qsize_t dqb_isoftlimit;
+	qsize_t dqb_curinodes;
+	time64_t dqb_btime;
+	time64_t dqb_itime;
+};
+
+struct dquot {
+	struct hlist_node dq_hash;
+	struct list_head dq_inuse;
+	struct list_head dq_free;
+	struct list_head dq_dirty;
+	struct mutex dq_lock;
+	spinlock_t dq_dqb_lock;
+	atomic_t dq_count;
+	struct super_block *dq_sb;
+	struct kqid dq_id;
+	loff_t dq_off;
+	unsigned long dq_flags;
+	struct mem_dqblk dq_dqb;
+};
+
+struct shrink_control {
+	gfp_t gfp_mask;
+	int nid;
+	unsigned long nr_to_scan;
+	unsigned long nr_scanned;
+	struct mem_cgroup *memcg;
+};
+
+struct dquot_operations {
+	int (*write_dquot)(struct dquot *);
+	struct dquot * (*alloc_dquot)(struct super_block *, int);
+	void (*destroy_dquot)(struct dquot *);
+	int (*acquire_dquot)(struct dquot *);
+	int (*release_dquot)(struct dquot *);
+	int (*mark_dirty)(struct dquot *);
+	int (*write_info)(struct super_block *, int);
+	qsize_t * (*get_reserved_space)(struct inode *);
+	int (*get_projid)(struct inode *, kprojid_t *);
+	int (*get_inode_usage)(struct inode *, qsize_t *);
+	int (*get_next_id)(struct super_block *, struct kqid *);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct qc_info;
+
+struct qc_dqblk;
+
+struct qc_state;
+
+struct quotactl_ops {
+	int (*quota_on)(struct super_block *, int, int, const struct path *);
+	int (*quota_off)(struct super_block *, int);
+	int (*quota_enable)(struct super_block *, unsigned int);
+	int (*quota_disable)(struct super_block *, unsigned int);
+	int (*quota_sync)(struct super_block *, int);
+	int (*set_info)(struct super_block *, int, struct qc_info *);
+	int (*get_dqblk)(struct super_block *, struct kqid, struct qc_dqblk *);
+	int (*get_nextdqblk)(struct super_block *, struct kqid *, struct qc_dqblk *);
+	int (*set_dqblk)(struct super_block *, struct kqid, struct qc_dqblk *);
+	int (*get_state)(struct super_block *, struct qc_state *);
+	int (*rm_xquota)(struct super_block *, unsigned int);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct qc_info {
+	int i_fieldmask;
+	unsigned int i_flags;
+	unsigned int i_spc_timelimit;
+	unsigned int i_ino_timelimit;
+	unsigned int i_rt_spc_timelimit;
+	unsigned int i_spc_warnlimit;
+	unsigned int i_ino_warnlimit;
+	unsigned int i_rt_spc_warnlimit;
+};
+
+struct qc_dqblk {
+	int d_fieldmask;
+	u64 d_spc_hardlimit;
+	u64 d_spc_softlimit;
+	u64 d_ino_hardlimit;
+	u64 d_ino_softlimit;
+	u64 d_space;
+	u64 d_ino_count;
+	s64 d_ino_timer;
+	s64 d_spc_timer;
+	int d_ino_warns;
+	int d_spc_warns;
+	u64 d_rt_spc_hardlimit;
+	u64 d_rt_spc_softlimit;
+	u64 d_rt_space;
+	s64 d_rt_spc_timer;
+	int d_rt_spc_warns;
+};
+
+struct qc_type_state {
+	unsigned int flags;
+	unsigned int spc_timelimit;
+	unsigned int ino_timelimit;
+	unsigned int rt_spc_timelimit;
+	unsigned int spc_warnlimit;
+	unsigned int ino_warnlimit;
+	unsigned int rt_spc_warnlimit;
+	unsigned long long ino;
+	blkcnt_t blocks;
+	blkcnt_t nextents;
+};
+
+struct qc_state {
+	unsigned int s_incoredqs;
+	struct qc_type_state s_state[3];
+};
+
+struct fid;
+
+struct iomap;
+
+struct export_operations {
+	int (*encode_fh)(struct inode *, __u32 *, int *, struct inode *);
+	struct dentry * (*fh_to_dentry)(struct super_block *, struct fid *, int, int);
+	struct dentry * (*fh_to_parent)(struct super_block *, struct fid *, int, int);
+	int (*get_name)(struct dentry *, char *, struct dentry *);
+	struct dentry * (*get_parent)(struct dentry *);
+	int (*commit_metadata)(struct inode *);
+	int (*get_uuid)(struct super_block *, u8 *, u32 *, u64 *);
+	int (*map_blocks)(struct inode *, loff_t, u64, struct iomap *, bool, u32 *);
+	int (*commit_blocks)(struct inode *, struct iomap *, int, struct iattr *);
+	unsigned long flags;
+};
+
+struct xattr_handler {
+	const char *name;
+	const char *prefix;
+	int flags;
+	bool (*list)(struct dentry *);
+	int (*get)(const struct xattr_handler *, struct dentry *, struct inode *, const char *, void *, size_t);
+	int (*set)(const struct xattr_handler *, struct mnt_idmap *, struct dentry *, struct inode *, const char *, const void *, size_t, int);
+};
+
+union fscrypt_policy;
+
+struct fscrypt_operations {
+	unsigned int needs_bounce_pages: 1;
+	unsigned int has_32bit_inodes: 1;
+	unsigned int supports_subblock_data_units: 1;
+	const char *legacy_key_prefix;
+	int (*get_context)(struct inode *, void *, size_t);
+	int (*set_context)(struct inode *, const void *, size_t, void *);
+	const union fscrypt_policy * (*get_dummy_policy)(struct super_block *);
+	bool (*empty_dir)(struct inode *);
+	bool (*has_stable_inodes)(struct super_block *);
+	struct block_device ** (*get_devices)(struct super_block *, unsigned int *);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+	u64 android_oem_data1[4];
+};
+
+struct fsverity_operations {
+	int (*begin_enable_verity)(struct file *);
+	int (*end_enable_verity)(struct file *, const void *, size_t, u64);
+	int (*get_verity_descriptor)(struct inode *, void *, size_t);
+	struct page * (*read_merkle_tree_page)(struct inode *, unsigned long, unsigned long);
+	int (*write_merkle_tree_block)(struct inode *, const void *, u64, unsigned int);
+};
+
+struct quota_format_type {
+	int qf_fmt_id;
+	const struct quota_format_ops *qf_ops;
+	struct module *qf_owner;
+	struct quota_format_type *qf_next;
+};
+
+struct quota_format_ops {
+	int (*check_quota_file)(struct super_block *, int);
+	int (*read_file_info)(struct super_block *, int);
+	int (*write_file_info)(struct super_block *, int);
+	int (*free_file_info)(struct super_block *, int);
+	int (*read_dqblk)(struct dquot *);
+	int (*commit_dqblk)(struct dquot *);
+	int (*release_dqblk)(struct dquot *);
+	int (*get_next_id)(struct super_block *, struct kqid *);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+typedef struct {
+	int val[2];
+} __kernel_fsid_t;
+
+typedef struct fsnotify_mark_connector __attribute__((btf_type_tag("rcu"))) *fsnotify_connp_t;
+
+struct fsnotify_mark_connector {
+	spinlock_t lock;
+	unsigned short type;
+	unsigned short flags;
+	__kernel_fsid_t fsid;
+	union {
+		fsnotify_connp_t *obj;
+		struct fsnotify_mark_connector *destroy_next;
+	};
+	struct hlist_head list;
+};
+
+struct list_lru_one {
+	struct list_head list;
+	long nr_items;
+};
+
+struct list_lru_node {
+	spinlock_t lock;
+	struct list_lru_one lru;
+	long nr_items;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct delayed_call {
+	void (*fn)(void *);
+	void *arg;
+};
+
+typedef struct {
+	uid_t val;
+} vfsuid_t;
+
+typedef struct {
+	gid_t val;
+} vfsgid_t;
+
+struct iattr {
+	unsigned int ia_valid;
+	umode_t ia_mode;
+	union {
+		kuid_t ia_uid;
+		vfsuid_t ia_vfsuid;
+	};
+	union {
+		kgid_t ia_gid;
+		vfsgid_t ia_vfsgid;
+	};
+	loff_t ia_size;
+	struct timespec64 ia_atime;
+	struct timespec64 ia_mtime;
+	struct timespec64 ia_ctime;
+	struct file *ia_file;
+};
+
+struct kstat {
+	u32 result_mask;
+	umode_t mode;
+	unsigned int nlink;
+	uint32_t blksize;
+	u64 attributes;
+	u64 attributes_mask;
+	u64 ino;
+	dev_t dev;
+	dev_t rdev;
+	kuid_t uid;
+	kgid_t gid;
+	loff_t size;
+	struct timespec64 atime;
+	struct timespec64 mtime;
+	struct timespec64 ctime;
+	struct timespec64 btime;
+	u64 blocks;
+	u64 mnt_id;
+	u32 dio_mem_align;
+	u32 dio_offset_align;
+	u64 change_cookie;
+};
+
+struct offset_ctx {
+	struct xarray xa;
+	u32 next_offset;
+};
+
+struct cdev {
+	struct kobject kobj;
+	struct module *owner;
+	const struct file_operations *ops;
+	struct list_head list;
+	dev_t dev;
+	unsigned int count;
+};
+
+enum migrate_mode {
+	MIGRATE_ASYNC = 0,
+	MIGRATE_SYNC_LIGHT = 1,
+	MIGRATE_SYNC = 2,
+	MIGRATE_SYNC_NO_COPY = 3,
+};
+
+struct readahead_control;
+
+struct swap_info_struct;
+
+struct address_space_operations {
+	int (*writepage)(struct page *, struct writeback_control *);
+	int (*read_folio)(struct file *, struct folio *);
+	int (*writepages)(struct address_space *, struct writeback_control *);
+	bool (*dirty_folio)(struct address_space *, struct folio *);
+	void (*readahead)(struct readahead_control *);
+	int (*write_begin)(struct file *, struct address_space *, loff_t, unsigned int, struct page **, void **);
+	int (*write_end)(struct file *, struct address_space *, loff_t, unsigned int, unsigned int, struct page *, void *);
+	sector_t (*bmap)(struct address_space *, sector_t);
+	void (*invalidate_folio)(struct folio *, size_t, size_t);
+	bool (*release_folio)(struct folio *, gfp_t);
+	void (*free_folio)(struct folio *);
+	ssize_t (*direct_IO)(struct kiocb *, struct iov_iter *);
+	int (*migrate_folio)(struct address_space *, struct folio *, struct folio *, enum migrate_mode);
+	int (*launder_folio)(struct folio *);
+	bool (*is_partially_uptodate)(struct folio *, size_t, size_t);
+	void (*is_dirty_writeback)(struct folio *, bool *, bool *);
+	int (*error_remove_page)(struct address_space *, struct page *);
+	int (*swap_activate)(struct swap_info_struct *, struct file *, sector_t *);
+	void (*swap_deactivate)(struct file *);
+	int (*swap_rw)(struct kiocb *, struct iov_iter *);
+};
+
+struct readahead_control {
+	struct file *file;
+	struct address_space *mapping;
+	struct file_ra_state *ra;
+	unsigned long _index;
+	unsigned int _nr_pages;
+	unsigned int _batch_count;
+	bool _workingset;
+	unsigned long _pflags;
+	u64 android_oem_data1;
+};
+
+struct swap_cluster_info;
+
+struct percpu_cluster;
+
+struct swap_info_struct {
+	struct percpu_ref users;
+	unsigned long flags;
+	short prio;
+	struct plist_node list;
+	signed char type;
+	unsigned int max;
+	unsigned char *swap_map;
+	struct swap_cluster_info *cluster_info;
+	struct list_head free_clusters;
+	struct list_head nonfull_clusters[10];
+	unsigned int lowest_bit;
+	unsigned int highest_bit;
+	unsigned int pages;
+	unsigned int inuse_pages;
+	unsigned int cluster_next;
+	unsigned int cluster_nr;
+	unsigned int __attribute__((btf_type_tag("percpu"))) *cluster_next_cpu;
+	struct percpu_cluster __attribute__((btf_type_tag("percpu"))) *percpu_cluster;
+	struct rb_root swap_extent_root;
+	struct block_device *bdev;
+	struct file *swap_file;
+	unsigned int old_block_size;
+	struct completion comp;
+	spinlock_t lock;
+	spinlock_t cont_lock;
+	struct work_struct discard_work;
+	struct list_head discard_clusters;
+	struct plist_node avail_lists[0];
+};
+
+struct swap_cluster_info {
+	spinlock_t lock;
+	unsigned int count: 12;
+	unsigned int state: 3;
+	unsigned int order: 4;
+	unsigned int reserved: 1;
+	unsigned int flags: 4;
+	struct list_head list;
+};
+
+struct percpu_cluster {
+	unsigned int next[10];
+};
+
+struct module_attribute {
+	struct attribute attr;
+	ssize_t (*show)(struct module_attribute *, struct module_kobject *, char *);
+	ssize_t (*store)(struct module_attribute *, struct module_kobject *, const char *, size_t);
+	void (*setup)(struct module *, const char *);
+	int (*test)(struct module *);
+	void (*free)(struct module *);
+};
+
+struct kernel_symbol {
+	int value_offset;
+	int name_offset;
+	int namespace_offset;
+};
+
+struct kernel_param_ops;
+
+struct kparam_string;
+
+struct kparam_array;
+
+struct kernel_param {
+	const char *name;
+	struct module *mod;
+	const struct kernel_param_ops *ops;
+	const u16 perm;
+	s8 level;
+	u8 flags;
+	union {
+		void *arg;
+		const struct kparam_string *str;
+		const struct kparam_array *arr;
+	};
+};
+
+struct kernel_param_ops {
+	unsigned int flags;
+	int (*set)(const char *, const struct kernel_param *);
+	int (*get)(char *, const struct kernel_param *);
+	void (*free)(void *);
+};
+
+struct kparam_string {
+	unsigned int maxlen;
+	char *string;
+};
+
+struct kparam_array {
+	unsigned int max;
+	unsigned int elemsize;
+	unsigned int *num;
+	const struct kernel_param_ops *ops;
+	void *elem;
+};
+
+struct exception_table_entry {
+	int insn;
+	int fixup;
+	int data;
+};
+
+struct bug_entry {
+	int bug_addr_disp;
+	int file_disp;
+	unsigned short line;
+	unsigned short flags;
+};
+
+typedef __u32 Elf64_Word;
+
+typedef __u16 Elf64_Half;
+
+typedef __u64 Elf64_Addr;
+
+typedef __u64 Elf64_Xword;
+
+struct elf64_sym {
+	Elf64_Word st_name;
+	unsigned char st_info;
+	unsigned char st_other;
+	Elf64_Half st_shndx;
+	Elf64_Addr st_value;
+	Elf64_Xword st_size;
+};
+
+struct srcu_data;
+
+struct srcu_usage;
+
+struct srcu_struct {
+	unsigned int srcu_idx;
+	struct srcu_data __attribute__((btf_type_tag("percpu"))) *sda;
+	struct lockdep_map dep_map;
+	struct srcu_usage *srcu_sup;
+};
+
+struct rcu_segcblist {
+	struct callback_head *head;
+	struct callback_head **tails[4];
+	unsigned long gp_seq[4];
+	atomic_long_t len;
+	long seglen[4];
+	u8 flags;
+};
+
+struct srcu_node;
+
+struct srcu_data {
+	atomic_long_t srcu_lock_count[2];
+	atomic_long_t srcu_unlock_count[2];
+	int srcu_nmi_safety;
+	long: 64;
+	long: 64;
+	long: 64;
+	spinlock_t lock;
+	struct rcu_segcblist srcu_cblist;
+	unsigned long srcu_gp_seq_needed;
+	unsigned long srcu_gp_seq_needed_exp;
+	bool srcu_cblist_invoking;
+	struct timer_list delay_work;
+	struct work_struct work;
+	struct callback_head srcu_barrier_head;
+	struct srcu_node *mynode;
+	unsigned long grpmask;
+	int cpu;
+	struct srcu_struct *ssp;
+	long: 64;
+	long: 64;
+};
+
+struct srcu_node {
+	spinlock_t lock;
+	unsigned long srcu_have_cbs[4];
+	unsigned long srcu_data_have_cbs[4];
+	unsigned long srcu_gp_seq_needed_exp;
+	struct srcu_node *srcu_parent;
+	int grplo;
+	int grphi;
+};
+
+struct srcu_usage {
+	struct srcu_node *node;
+	struct srcu_node *level[3];
+	int srcu_size_state;
+	struct mutex srcu_cb_mutex;
+	spinlock_t lock;
+	struct mutex srcu_gp_mutex;
+	unsigned long srcu_gp_seq;
+	unsigned long srcu_gp_seq_needed;
+	unsigned long srcu_gp_seq_needed_exp;
+	unsigned long srcu_gp_start;
+	unsigned long srcu_last_gp_end;
+	unsigned long srcu_size_jiffies;
+	unsigned long srcu_n_lock_retries;
+	unsigned long srcu_n_exp_nodelay;
+	bool sda_is_static;
+	unsigned long srcu_barrier_seq;
+	struct mutex srcu_barrier_mutex;
+	struct completion srcu_barrier_completion;
+	atomic_t srcu_barrier_cpu_cnt;
+	unsigned long reschedule_jiffies;
+	unsigned long reschedule_count;
+	struct delayed_work work;
+	struct srcu_struct *srcu_ssp;
+};
+
+struct bpf_raw_event_map {
+	struct tracepoint *tp;
+	void *bpf_func;
+	u32 num_args;
+	u32 writable_size;
+	long: 64;
+};
+
+struct trace_eval_map {
+	const char *system;
+	const char *eval_string;
+	unsigned long eval_value;
+};
+
+struct static_call_site {
+	s32 addr;
+	s32 key;
+};
+
+enum kunit_speed {
+	KUNIT_SPEED_UNSET = 0,
+	KUNIT_SPEED_VERY_SLOW = 1,
+	KUNIT_SPEED_SLOW = 2,
+	KUNIT_SPEED_NORMAL = 3,
+	KUNIT_SPEED_MAX = 3,
+};
+
+struct kunit_attributes {
+	enum kunit_speed speed;
+};
+
+struct kunit_case;
+
+struct kunit_suite {
+	const char name[256];
+	int (*suite_init)(struct kunit_suite *);
+	void (*suite_exit)(struct kunit_suite *);
+	int (*init)(struct kunit *);
+	void (*exit)(struct kunit *);
+	struct kunit_case *test_cases;
+	struct kunit_attributes attr;
+	char status_comment[256];
+	struct dentry *debugfs;
+	char *log;
+	int suite_init_err;
+};
+
+struct kunit_case {
+	void (*run_case)(struct kunit *);
+	const char *name;
+	const void * (*generate_params)(const void *, char *);
+	struct kunit_attributes attr;
+	enum kunit_status status;
+	char *module_name;
+	char *log;
+};
+
+struct static_key_true {
+	struct static_key key;
+};
+
+struct static_key_false {
+	struct static_key key;
+};
+
+struct _ddebug {
+	const char *modname;
+	const char *function;
+	const char *filename;
+	const char *format;
+	unsigned int lineno: 18;
+	unsigned int class_id: 6;
+	unsigned int flags: 8;
+	union {
+		struct static_key_true dd_key_true;
+		struct static_key_false dd_key_false;
+	} key;
+};
+
+enum class_map_type {
+	DD_CLASS_TYPE_DISJOINT_BITS = 0,
+	DD_CLASS_TYPE_LEVEL_NUM = 1,
+	DD_CLASS_TYPE_DISJOINT_NAMES = 2,
+	DD_CLASS_TYPE_LEVEL_NAMES = 3,
+};
+
+struct ddebug_class_map {
+	struct list_head link;
+	struct module *mod;
+	const char *mod_name;
+	const char **class_names;
+	const int length;
+	const int base;
+	enum class_map_type map_type;
+};
+
+struct tracepoint_func {
+	void *func;
+	void *data;
+	int prio;
+};
+
+typedef void (*btf_trace_initcall_level)(void *, const char *);
+
+typedef int (*initcall_t)();
+
+typedef void (*btf_trace_initcall_start)(void *, initcall_t);
+
+typedef void (*btf_trace_initcall_finish)(void *, initcall_t, int);
+
+struct obs_kernel_param {
+	const char *str;
+	int (*setup_func)(char *);
+	int early;
+};
+
+enum system_states {
+	SYSTEM_BOOTING = 0,
+	SYSTEM_SCHEDULING = 1,
+	SYSTEM_FREEING_INITMEM = 2,
+	SYSTEM_RUNNING = 3,
+	SYSTEM_HALT = 4,
+	SYSTEM_POWER_OFF = 5,
+	SYSTEM_RESTART = 6,
+	SYSTEM_SUSPEND = 7,
+};
+
+typedef int initcall_entry_t;
+
+enum cpuhp_state {
+	CPUHP_INVALID = -1,
+	CPUHP_OFFLINE = 0,
+	CPUHP_CREATE_THREADS = 1,
+	CPUHP_PERF_PREPARE = 2,
+	CPUHP_PERF_X86_PREPARE = 3,
+	CPUHP_PERF_X86_AMD_UNCORE_PREP = 4,
+	CPUHP_PERF_POWER = 5,
+	CPUHP_PERF_SUPERH = 6,
+	CPUHP_X86_HPET_DEAD = 7,
+	CPUHP_X86_APB_DEAD = 8,
+	CPUHP_X86_MCE_DEAD = 9,
+	CPUHP_VIRT_NET_DEAD = 10,
+	CPUHP_IBMVNIC_DEAD = 11,
+	CPUHP_SLUB_DEAD = 12,
+	CPUHP_DEBUG_OBJ_DEAD = 13,
+	CPUHP_MM_WRITEBACK_DEAD = 14,
+	CPUHP_MM_DEMOTION_DEAD = 15,
+	CPUHP_MM_VMSTAT_DEAD = 16,
+	CPUHP_SOFTIRQ_DEAD = 17,
+	CPUHP_NET_MVNETA_DEAD = 18,
+	CPUHP_CPUIDLE_DEAD = 19,
+	CPUHP_ARM64_FPSIMD_DEAD = 20,
+	CPUHP_ARM_OMAP_WAKE_DEAD = 21,
+	CPUHP_IRQ_POLL_DEAD = 22,
+	CPUHP_BLOCK_SOFTIRQ_DEAD = 23,
+	CPUHP_BIO_DEAD = 24,
+	CPUHP_ACPI_CPUDRV_DEAD = 25,
+	CPUHP_S390_PFAULT_DEAD = 26,
+	CPUHP_BLK_MQ_DEAD = 27,
+	CPUHP_FS_BUFF_DEAD = 28,
+	CPUHP_PRINTK_DEAD = 29,
+	CPUHP_MM_MEMCQ_DEAD = 30,
+	CPUHP_PERCPU_CNT_DEAD = 31,
+	CPUHP_RADIX_DEAD = 32,
+	CPUHP_PAGE_ALLOC = 33,
+	CPUHP_NET_DEV_DEAD = 34,
+	CPUHP_PCI_XGENE_DEAD = 35,
+	CPUHP_IOMMU_IOVA_DEAD = 36,
+	CPUHP_LUSTRE_CFS_DEAD = 37,
+	CPUHP_AP_ARM_CACHE_B15_RAC_DEAD = 38,
+	CPUHP_PADATA_DEAD = 39,
+	CPUHP_AP_DTPM_CPU_DEAD = 40,
+	CPUHP_RANDOM_PREPARE = 41,
+	CPUHP_WORKQUEUE_PREP = 42,
+	CPUHP_POWER_NUMA_PREPARE = 43,
+	CPUHP_HRTIMERS_PREPARE = 44,
+	CPUHP_PROFILE_PREPARE = 45,
+	CPUHP_X2APIC_PREPARE = 46,
+	CPUHP_SMPCFD_PREPARE = 47,
+	CPUHP_RELAY_PREPARE = 48,
+	CPUHP_SLAB_PREPARE = 49,
+	CPUHP_MD_RAID5_PREPARE = 50,
+	CPUHP_RCUTREE_PREP = 51,
+	CPUHP_CPUIDLE_COUPLED_PREPARE = 52,
+	CPUHP_POWERPC_PMAC_PREPARE = 53,
+	CPUHP_POWERPC_MMU_CTX_PREPARE = 54,
+	CPUHP_XEN_PREPARE = 55,
+	CPUHP_XEN_EVTCHN_PREPARE = 56,
+	CPUHP_ARM_SHMOBILE_SCU_PREPARE = 57,
+	CPUHP_SH_SH3X_PREPARE = 58,
+	CPUHP_NET_FLOW_PREPARE = 59,
+	CPUHP_TOPOLOGY_PREPARE = 60,
+	CPUHP_NET_IUCV_PREPARE = 61,
+	CPUHP_ARM_BL_PREPARE = 62,
+	CPUHP_TRACE_RB_PREPARE = 63,
+	CPUHP_MM_ZS_PREPARE = 64,
+	CPUHP_MM_ZSWP_MEM_PREPARE = 65,
+	CPUHP_MM_ZSWP_POOL_PREPARE = 66,
+	CPUHP_KVM_PPC_BOOK3S_PREPARE = 67,
+	CPUHP_ZCOMP_PREPARE = 68,
+	CPUHP_TIMERS_PREPARE = 69,
+	CPUHP_MIPS_SOC_PREPARE = 70,
+	CPUHP_BP_PREPARE_DYN = 71,
+	CPUHP_BP_PREPARE_DYN_END = 91,
+	CPUHP_BP_KICK_AP = 92,
+	CPUHP_BRINGUP_CPU = 93,
+	CPUHP_AP_IDLE_DEAD = 94,
+	CPUHP_AP_OFFLINE = 95,
+	CPUHP_AP_CACHECTRL_STARTING = 96,
+	CPUHP_AP_SCHED_STARTING = 97,
+	CPUHP_AP_RCUTREE_DYING = 98,
+	CPUHP_AP_CPU_PM_STARTING = 99,
+	CPUHP_AP_IRQ_GIC_STARTING = 100,
+	CPUHP_AP_IRQ_HIP04_STARTING = 101,
+	CPUHP_AP_IRQ_APPLE_AIC_STARTING = 102,
+	CPUHP_AP_IRQ_ARMADA_XP_STARTING = 103,
+	CPUHP_AP_IRQ_BCM2836_STARTING = 104,
+	CPUHP_AP_IRQ_MIPS_GIC_STARTING = 105,
+	CPUHP_AP_IRQ_RISCV_STARTING = 106,
+	CPUHP_AP_IRQ_LOONGARCH_STARTING = 107,
+	CPUHP_AP_IRQ_SIFIVE_PLIC_STARTING = 108,
+	CPUHP_AP_ARM_MVEBU_COHERENCY = 109,
+	CPUHP_AP_MICROCODE_LOADER = 110,
+	CPUHP_AP_PERF_X86_AMD_UNCORE_STARTING = 111,
+	CPUHP_AP_PERF_X86_STARTING = 112,
+	CPUHP_AP_PERF_X86_AMD_IBS_STARTING = 113,
+	CPUHP_AP_PERF_X86_CQM_STARTING = 114,
+	CPUHP_AP_PERF_X86_CSTATE_STARTING = 115,
+	CPUHP_AP_PERF_XTENSA_STARTING = 116,
+	CPUHP_AP_MIPS_OP_LOONGSON3_STARTING = 117,
+	CPUHP_AP_ARM_VFP_STARTING = 118,
+	CPUHP_AP_ARM64_DEBUG_MONITORS_STARTING = 119,
+	CPUHP_AP_PERF_ARM_HW_BREAKPOINT_STARTING = 120,
+	CPUHP_AP_PERF_ARM_ACPI_STARTING = 121,
+	CPUHP_AP_PERF_ARM_STARTING = 122,
+	CPUHP_AP_PERF_RISCV_STARTING = 123,
+	CPUHP_AP_ARM_L2X0_STARTING = 124,
+	CPUHP_AP_EXYNOS4_MCT_TIMER_STARTING = 125,
+	CPUHP_AP_ARM_ARCH_TIMER_STARTING = 126,
+	CPUHP_AP_ARM_GLOBAL_TIMER_STARTING = 127,
+	CPUHP_AP_JCORE_TIMER_STARTING = 128,
+	CPUHP_AP_ARM_TWD_STARTING = 129,
+	CPUHP_AP_QCOM_TIMER_STARTING = 130,
+	CPUHP_AP_TEGRA_TIMER_STARTING = 131,
+	CPUHP_AP_ARMADA_TIMER_STARTING = 132,
+	CPUHP_AP_MARCO_TIMER_STARTING = 133,
+	CPUHP_AP_MIPS_GIC_TIMER_STARTING = 134,
+	CPUHP_AP_ARC_TIMER_STARTING = 135,
+	CPUHP_AP_RISCV_TIMER_STARTING = 136,
+	CPUHP_AP_CLINT_TIMER_STARTING = 137,
+	CPUHP_AP_CSKY_TIMER_STARTING = 138,
+	CPUHP_AP_TI_GP_TIMER_STARTING = 139,
+	CPUHP_AP_HYPERV_TIMER_STARTING = 140,
+	CPUHP_AP_DUMMY_TIMER_STARTING = 141,
+	CPUHP_AP_ARM_XEN_STARTING = 142,
+	CPUHP_AP_ARM_XEN_RUNSTATE_STARTING = 143,
+	CPUHP_AP_ARM_CORESIGHT_STARTING = 144,
+	CPUHP_AP_ARM_CORESIGHT_CTI_STARTING = 145,
+	CPUHP_AP_ARM64_ISNDEP_STARTING = 146,
+	CPUHP_AP_SMPCFD_DYING = 147,
+	CPUHP_AP_HRTIMERS_DYING = 148,
+	CPUHP_AP_X86_TBOOT_DYING = 149,
+	CPUHP_AP_ARM_CACHE_B15_RAC_DYING = 150,
+	CPUHP_AP_ONLINE = 151,
+	CPUHP_TEARDOWN_CPU = 152,
+	CPUHP_AP_ONLINE_IDLE = 153,
+	CPUHP_AP_HYPERV_ONLINE = 154,
+	CPUHP_AP_KVM_ONLINE = 155,
+	CPUHP_AP_SCHED_WAIT_EMPTY = 156,
+	CPUHP_AP_SMPBOOT_THREADS = 157,
+	CPUHP_AP_X86_VDSO_VMA_ONLINE = 158,
+	CPUHP_AP_IRQ_AFFINITY_ONLINE = 159,
+	CPUHP_AP_BLK_MQ_ONLINE = 160,
+	CPUHP_AP_ARM_MVEBU_SYNC_CLOCKS = 161,
+	CPUHP_AP_X86_INTEL_EPB_ONLINE = 162,
+	CPUHP_AP_PERF_ONLINE = 163,
+	CPUHP_AP_PERF_X86_ONLINE = 164,
+	CPUHP_AP_PERF_X86_UNCORE_ONLINE = 165,
+	CPUHP_AP_PERF_X86_AMD_UNCORE_ONLINE = 166,
+	CPUHP_AP_PERF_X86_AMD_POWER_ONLINE = 167,
+	CPUHP_AP_PERF_X86_RAPL_ONLINE = 168,
+	CPUHP_AP_PERF_X86_CQM_ONLINE = 169,
+	CPUHP_AP_PERF_X86_CSTATE_ONLINE = 170,
+	CPUHP_AP_PERF_X86_IDXD_ONLINE = 171,
+	CPUHP_AP_PERF_S390_CF_ONLINE = 172,
+	CPUHP_AP_PERF_S390_SF_ONLINE = 173,
+	CPUHP_AP_PERF_ARM_CCI_ONLINE = 174,
+	CPUHP_AP_PERF_ARM_CCN_ONLINE = 175,
+	CPUHP_AP_PERF_ARM_HISI_CPA_ONLINE = 176,
+	CPUHP_AP_PERF_ARM_HISI_DDRC_ONLINE = 177,
+	CPUHP_AP_PERF_ARM_HISI_HHA_ONLINE = 178,
+	CPUHP_AP_PERF_ARM_HISI_L3_ONLINE = 179,
+	CPUHP_AP_PERF_ARM_HISI_PA_ONLINE = 180,
+	CPUHP_AP_PERF_ARM_HISI_SLLC_ONLINE = 181,
+	CPUHP_AP_PERF_ARM_HISI_PCIE_PMU_ONLINE = 182,
+	CPUHP_AP_PERF_ARM_HNS3_PMU_ONLINE = 183,
+	CPUHP_AP_PERF_ARM_L2X0_ONLINE = 184,
+	CPUHP_AP_PERF_ARM_QCOM_L2_ONLINE = 185,
+	CPUHP_AP_PERF_ARM_QCOM_L3_ONLINE = 186,
+	CPUHP_AP_PERF_ARM_APM_XGENE_ONLINE = 187,
+	CPUHP_AP_PERF_ARM_CAVIUM_TX2_UNCORE_ONLINE = 188,
+	CPUHP_AP_PERF_ARM_MARVELL_CN10K_DDR_ONLINE = 189,
+	CPUHP_AP_PERF_POWERPC_NEST_IMC_ONLINE = 190,
+	CPUHP_AP_PERF_POWERPC_CORE_IMC_ONLINE = 191,
+	CPUHP_AP_PERF_POWERPC_THREAD_IMC_ONLINE = 192,
+	CPUHP_AP_PERF_POWERPC_TRACE_IMC_ONLINE = 193,
+	CPUHP_AP_PERF_POWERPC_HV_24x7_ONLINE = 194,
+	CPUHP_AP_PERF_POWERPC_HV_GPCI_ONLINE = 195,
+	CPUHP_AP_PERF_CSKY_ONLINE = 196,
+	CPUHP_AP_WATCHDOG_ONLINE = 197,
+	CPUHP_AP_WORKQUEUE_ONLINE = 198,
+	CPUHP_AP_RANDOM_ONLINE = 199,
+	CPUHP_AP_RCUTREE_ONLINE = 200,
+	CPUHP_AP_BASE_CACHEINFO_ONLINE = 201,
+	CPUHP_AP_ONLINE_DYN = 202,
+	CPUHP_AP_ONLINE_DYN_END = 232,
+	CPUHP_AP_MM_DEMOTION_ONLINE = 233,
+	CPUHP_AP_X86_HPET_ONLINE = 234,
+	CPUHP_AP_X86_KVM_CLK_ONLINE = 235,
+	CPUHP_AP_ACTIVE = 236,
+	CPUHP_ONLINE = 237,
+};
+
+enum {
+	false = 0,
+	true = 1,
+};
+
+enum {
+	EVENT_FILE_FL_ENABLED = 1,
+	EVENT_FILE_FL_RECORDED_CMD = 2,
+	EVENT_FILE_FL_RECORDED_TGID = 4,
+	EVENT_FILE_FL_FILTERED = 8,
+	EVENT_FILE_FL_NO_SET_FILTER = 16,
+	EVENT_FILE_FL_SOFT_MODE = 32,
+	EVENT_FILE_FL_SOFT_DISABLED = 64,
+	EVENT_FILE_FL_TRIGGER_MODE = 128,
+	EVENT_FILE_FL_TRIGGER_COND = 256,
+	EVENT_FILE_FL_PID_FILTER = 512,
+	EVENT_FILE_FL_WAS_ENABLED = 1024,
+	EVENT_FILE_FL_FREED = 2048,
+};
+
+enum node_states {
+	N_POSSIBLE = 0,
+	N_ONLINE = 1,
+	N_NORMAL_MEMORY = 2,
+	N_HIGH_MEMORY = 2,
+	N_MEMORY = 3,
+	N_CPU = 4,
+	N_GENERIC_INITIATOR = 5,
+	NR_NODE_STATES = 6,
+};
+
+enum refcount_saturation_type {
+	REFCOUNT_ADD_NOT_ZERO_OVF = 0,
+	REFCOUNT_ADD_OVF = 1,
+	REFCOUNT_ADD_UAF = 2,
+	REFCOUNT_SUB_UAF = 3,
+	REFCOUNT_DEC_LEAK = 4,
+};
+
+enum kmalloc_cache_type {
+	KMALLOC_NORMAL = 0,
+	KMALLOC_DMA = 0,
+	KMALLOC_RANDOM_START = 0,
+	KMALLOC_RANDOM_END = 0,
+	KMALLOC_RECLAIM = 1,
+	KMALLOC_CGROUP = 2,
+	NR_KMALLOC_TYPES = 3,
+};
+
+struct trace_event_raw_initcall_level {
+	struct trace_entry ent;
+	u32 __data_loc_level;
+	char __data[0];
+};
+
+struct trace_event_raw_initcall_start {
+	struct trace_entry ent;
+	initcall_t func;
+	char __data[0];
+};
+
+struct trace_event_raw_initcall_finish {
+	struct trace_entry ent;
+	initcall_t func;
+	int ret;
+	char __data[0];
+};
+
+typedef __u32 __le32;
+
+typedef unsigned long uintptr_t;
+
+struct blacklist_entry {
+	struct list_head next;
+	char *buf;
+};
+
+struct eventfs_inode;
+
+struct trace_subsystem_dir;
+
+struct trace_event_file {
+	struct list_head list;
+	struct trace_event_call *event_call;
+	struct event_filter __attribute__((btf_type_tag("rcu"))) *filter;
+	struct eventfs_inode *ei;
+	struct trace_array *tr;
+	struct trace_subsystem_dir *system;
+	struct list_head triggers;
+	unsigned long flags;
+	atomic_t ref;
+	atomic_t sm_ref;
+	atomic_t tm_ref;
+};
+
+struct prog_entry;
+
+struct event_filter {
+	struct prog_entry __attribute__((btf_type_tag("rcu"))) *prog;
+	char *filter_string;
+};
+
+struct trace_event_data_offsets_initcall_level {
+	u32 level;
+};
+
+struct trace_buffer;
+
+struct ring_buffer_event;
+
+struct trace_event_buffer {
+	struct trace_buffer *buffer;
+	struct ring_buffer_event *event;
+	struct trace_event_file *trace_file;
+	void *entry;
+	unsigned int trace_ctx;
+	struct pt_regs *regs;
+};
+
+struct ring_buffer_event {
+	u32 type_len: 5;
+	u32 time_delta: 27;
+	u32 array[0];
+};
+
+typedef u16 uint16_t;
+
+struct xbc_node {
+	uint16_t next;
+	uint16_t child;
+	uint16_t parent;
+	uint16_t data;
+};
+
+struct trace_event_data_offsets_initcall_start {};
+
+struct trace_event_data_offsets_initcall_finish {};
+
+typedef __u32 Elf32_Word;
+
+struct elf32_note {
+	Elf32_Word n_namesz;
+	Elf32_Word n_descsz;
+	Elf32_Word n_type;
+};
+
+struct posix_acl_entry {
+	short e_tag;
+	unsigned short e_perm;
+	union {
+		kuid_t e_uid;
+		kgid_t e_gid;
+	};
+};
+
+struct posix_acl {
+	refcount_t a_refcount;
+	struct callback_head a_rcu;
+	unsigned int a_count;
+	struct posix_acl_entry a_entries[0];
+};
+
+typedef __u64 __addrpair;
+
+typedef __u32 __portpair;
+
+typedef struct {
+	struct net *net;
+} possible_net_t;
+
+struct proto;
+
+struct sock_common {
+	union {
+		__addrpair skc_addrpair;
+		struct {
+			__be32 skc_daddr;
+			__be32 skc_rcv_saddr;
+		};
+	};
+	union {
+		unsigned int skc_hash;
+		__u16 skc_u16hashes[2];
+	};
+	union {
+		__portpair skc_portpair;
+		struct {
+			__be16 skc_dport;
+			__u16 skc_num;
+		};
+	};
+	unsigned short skc_family;
+	volatile unsigned char skc_state;
+	unsigned char skc_reuse: 4;
+	unsigned char skc_reuseport: 1;
+	unsigned char skc_ipv6only: 1;
+	unsigned char skc_net_refcnt: 1;
+	int skc_bound_dev_if;
+	union {
+		struct hlist_node skc_bind_node;
+		struct hlist_node skc_portaddr_node;
+	};
+	struct proto *skc_prot;
+	possible_net_t skc_net;
+	struct in6_addr skc_v6_daddr;
+	struct in6_addr skc_v6_rcv_saddr;
+	atomic64_t skc_cookie;
+	union {
+		unsigned long skc_flags;
+		struct sock *skc_listener;
+		struct inet_timewait_death_row *skc_tw_dr;
+	};
+	int skc_dontcopy_begin[0];
+	union {
+		struct hlist_node skc_node;
+		struct hlist_nulls_node skc_nulls_node;
+	};
+	unsigned short skc_tx_queue_mapping;
+	unsigned short skc_rx_queue_mapping;
+	union {
+		int skc_incoming_cpu;
+		u32 skc_rcv_wnd;
+		u32 skc_tw_rcv_nxt;
+	};
+	refcount_t skc_refcnt;
+	int skc_dontcopy_end[0];
+	union {
+		u32 skc_rxhash;
+		u32 skc_window_clamp;
+		u32 skc_tw_snd_nxt;
+	};
+};
+
+typedef struct {
+	spinlock_t slock;
+	int owned;
+	wait_queue_head_t wq;
+} socket_lock_t;
+
+typedef u64 netdev_features_t;
+
+struct sock_cgroup_data {
+	struct cgroup *cgroup;
+	u16 prioidx;
+};
+
+typedef struct {} netns_tracker;
+
+struct sk_filter;
+
+struct socket_wq;
+
+struct xfrm_policy;
+
+struct socket;
+
+struct sock_reuseport;
+
+struct sock {
+	struct sock_common __sk_common;
+	struct dst_entry __attribute__((btf_type_tag("rcu"))) *sk_rx_dst;
+	int sk_rx_dst_ifindex;
+	u32 sk_rx_dst_cookie;
+	socket_lock_t sk_lock;
+	atomic_t sk_drops;
+	int sk_rcvlowat;
+	struct sk_buff_head sk_error_queue;
+	struct sk_buff_head sk_receive_queue;
+	struct {
+		atomic_t rmem_alloc;
+		int len;
+		struct sk_buff *head;
+		struct sk_buff *tail;
+	} sk_backlog;
+	int sk_forward_alloc;
+	u32 sk_reserved_mem;
+	unsigned int sk_ll_usec;
+	unsigned int sk_napi_id;
+	int sk_rcvbuf;
+	int sk_disconnects;
+	struct sk_filter __attribute__((btf_type_tag("rcu"))) *sk_filter;
+	union {
+		struct socket_wq __attribute__((btf_type_tag("rcu"))) *sk_wq;
+		struct socket_wq *sk_wq_raw;
+	};
+	struct xfrm_policy __attribute__((btf_type_tag("rcu"))) *sk_policy[2];
+	struct dst_entry __attribute__((btf_type_tag("rcu"))) *sk_dst_cache;
+	atomic_t sk_omem_alloc;
+	int sk_sndbuf;
+	int sk_wmem_queued;
+	refcount_t sk_wmem_alloc;
+	unsigned long sk_tsq_flags;
+	union {
+		struct sk_buff *sk_send_head;
+		struct rb_root tcp_rtx_queue;
+	};
+	struct sk_buff_head sk_write_queue;
+	__s32 sk_peek_off;
+	int sk_write_pending;
+	__u32 sk_dst_pending_confirm;
+	u32 sk_pacing_status;
+	long sk_sndtimeo;
+	struct timer_list sk_timer;
+	__u32 sk_priority;
+	__u32 sk_mark;
+	unsigned long sk_pacing_rate;
+	unsigned long sk_max_pacing_rate;
+	struct page_frag sk_frag;
+	netdev_features_t sk_route_caps;
+	int sk_gso_type;
+	unsigned int sk_gso_max_size;
+	gfp_t sk_allocation;
+	__u32 sk_txhash;
+	u8 sk_gso_disabled: 1;
+	u8 sk_kern_sock: 1;
+	u8 sk_no_check_tx: 1;
+	u8 sk_no_check_rx: 1;
+	u8 sk_userlocks: 4;
+	u8 sk_pacing_shift;
+	u16 sk_type;
+	u16 sk_protocol;
+	u16 sk_gso_max_segs;
+	unsigned long sk_lingertime;
+	struct proto *sk_prot_creator;
+	rwlock_t sk_callback_lock;
+	int sk_err;
+	int sk_err_soft;
+	u32 sk_ack_backlog;
+	u32 sk_max_ack_backlog;
+	kuid_t sk_uid;
+	u8 sk_txrehash;
+	u8 sk_prefer_busy_poll;
+	u16 sk_busy_poll_budget;
+	spinlock_t sk_peer_lock;
+	int sk_bind_phc;
+	struct pid *sk_peer_pid;
+	const struct cred *sk_peer_cred;
+	long sk_rcvtimeo;
+	ktime_t sk_stamp;
+	atomic_t sk_tskey;
+	atomic_t sk_zckey;
+	u32 sk_tsflags;
+	u8 sk_shutdown;
+	u8 sk_clockid;
+	u8 sk_txtime_deadline_mode: 1;
+	u8 sk_txtime_report_errors: 1;
+	u8 sk_txtime_unused: 6;
+	bool sk_use_task_frag;
+	struct socket *sk_socket;
+	void *sk_user_data;
+	void *sk_security;
+	struct sock_cgroup_data sk_cgrp_data;
+	struct mem_cgroup *sk_memcg;
+	void (*sk_state_change)(struct sock *);
+	void (*sk_data_ready)(struct sock *);
+	void (*sk_write_space)(struct sock *);
+	void (*sk_error_report)(struct sock *);
+	int (*sk_backlog_rcv)(struct sock *, struct sk_buff *);
+	void (*sk_destruct)(struct sock *);
+	struct sock_reuseport __attribute__((btf_type_tag("rcu"))) *sk_reuseport_cb;
+	struct bpf_local_storage __attribute__((btf_type_tag("rcu"))) *sk_bpf_storage;
+	struct callback_head sk_rcu;
+	netns_tracker ns_tracker;
+	struct hlist_node sk_bind2_node;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+	u64 android_kabi_reserved5;
+	u64 android_kabi_reserved6;
+	u64 android_kabi_reserved7;
+	u64 android_kabi_reserved8;
+	u64 android_oem_data1;
+};
+
+struct smc_hashinfo;
+
+typedef struct {
+	union {
+		void *kernel;
+		void __attribute__((btf_type_tag("user"))) *user;
+	};
+	bool is_kernel: 1;
+} sockptr_t;
+
+typedef unsigned int slab_flags_t;
+
+struct sockaddr;
+
+struct msghdr;
+
+struct sk_psock;
+
+struct request_sock_ops;
+
+struct timewait_sock_ops;
+
+struct raw_hashinfo;
+
+struct proto {
+	void (*close)(struct sock *, long);
+	int (*pre_connect)(struct sock *, struct sockaddr *, int);
+	int (*connect)(struct sock *, struct sockaddr *, int);
+	int (*disconnect)(struct sock *, int);
+	struct sock * (*accept)(struct sock *, int, int *, bool);
+	int (*ioctl)(struct sock *, int, int *);
+	int (*init)(struct sock *);
+	void (*destroy)(struct sock *);
+	void (*shutdown)(struct sock *, int);
+	int (*setsockopt)(struct sock *, int, int, sockptr_t, unsigned int);
+	int (*getsockopt)(struct sock *, int, int, char __attribute__((btf_type_tag("user"))) *, int __attribute__((btf_type_tag("user"))) *);
+	void (*keepalive)(struct sock *, int);
+	int (*compat_ioctl)(struct sock *, unsigned int, unsigned long);
+	int (*sendmsg)(struct sock *, struct msghdr *, size_t);
+	int (*recvmsg)(struct sock *, struct msghdr *, size_t, int, int *);
+	void (*splice_eof)(struct socket *);
+	int (*bind)(struct sock *, struct sockaddr *, int);
+	int (*bind_add)(struct sock *, struct sockaddr *, int);
+	int (*backlog_rcv)(struct sock *, struct sk_buff *);
+	bool (*bpf_bypass_getsockopt)(int, int);
+	void (*release_cb)(struct sock *);
+	int (*hash)(struct sock *);
+	void (*unhash)(struct sock *);
+	void (*rehash)(struct sock *);
+	int (*get_port)(struct sock *, unsigned short);
+	void (*put_port)(struct sock *);
+	int (*psock_update_sk_prot)(struct sock *, struct sk_psock *, bool);
+	unsigned int inuse_idx;
+	bool (*stream_memory_free)(const struct sock *, int);
+	bool (*sock_is_readable)(struct sock *);
+	void (*enter_memory_pressure)(struct sock *);
+	void (*leave_memory_pressure)(struct sock *);
+	atomic_long_t *memory_allocated;
+	int __attribute__((btf_type_tag("percpu"))) *per_cpu_fw_alloc;
+	struct percpu_counter *sockets_allocated;
+	unsigned long *memory_pressure;
+	long *sysctl_mem;
+	int *sysctl_wmem;
+	int *sysctl_rmem;
+	u32 sysctl_wmem_offset;
+	u32 sysctl_rmem_offset;
+	int max_header;
+	bool no_autobind;
+	struct kmem_cache *slab;
+	unsigned int obj_size;
+	unsigned int ipv6_pinfo_offset;
+	slab_flags_t slab_flags;
+	unsigned int useroffset;
+	unsigned int usersize;
+	unsigned int __attribute__((btf_type_tag("percpu"))) *orphan_count;
+	struct request_sock_ops *rsk_prot;
+	struct timewait_sock_ops *twsk_prot;
+	union {
+		struct inet_hashinfo *hashinfo;
+		struct udp_table *udp_table;
+		struct raw_hashinfo *raw_hash;
+		struct smc_hashinfo *smc_hash;
+	} h;
+	struct module *owner;
+	char name[32];
+	struct list_head node;
+	int (*diag_destroy)(struct sock *, int);
+};
+
+typedef unsigned short __kernel_sa_family_t;
+
+typedef __kernel_sa_family_t sa_family_t;
+
+struct sockaddr {
+	sa_family_t sa_family;
+	union {
+		char sa_data_min[14];
+		struct {
+			struct {} __empty_sa_data;
+			char sa_data[0];
+		};
+	};
+};
+
+struct ubuf_info;
+
+struct msghdr {
+	void *msg_name;
+	int msg_namelen;
+	int msg_inq;
+	struct iov_iter msg_iter;
+	union {
+		void *msg_control;
+		void __attribute__((btf_type_tag("user"))) *msg_control_user;
+	};
+	bool msg_control_is_user: 1;
+	bool msg_get_inq: 1;
+	unsigned int msg_flags;
+	__kernel_size_t msg_controllen;
+	struct kiocb *msg_iocb;
+	struct ubuf_info *msg_ubuf;
+	int (*sg_from_iter)(struct sock *, struct sk_buff *, struct iov_iter *, size_t);
+};
+
+struct ubuf_info {
+	void (*callback)(struct sk_buff *, struct ubuf_info *, bool);
+	refcount_t refcnt;
+	u8 flags;
+};
+
+typedef u32 xdp_features_t;
+
+struct net_device_stats {
+	union {
+		unsigned long rx_packets;
+		atomic_long_t __rx_packets;
+	};
+	union {
+		unsigned long tx_packets;
+		atomic_long_t __tx_packets;
+	};
+	union {
+		unsigned long rx_bytes;
+		atomic_long_t __rx_bytes;
+	};
+	union {
+		unsigned long tx_bytes;
+		atomic_long_t __tx_bytes;
+	};
+	union {
+		unsigned long rx_errors;
+		atomic_long_t __rx_errors;
+	};
+	union {
+		unsigned long tx_errors;
+		atomic_long_t __tx_errors;
+	};
+	union {
+		unsigned long rx_dropped;
+		atomic_long_t __rx_dropped;
+	};
+	union {
+		unsigned long tx_dropped;
+		atomic_long_t __tx_dropped;
+	};
+	union {
+		unsigned long multicast;
+		atomic_long_t __multicast;
+	};
+	union {
+		unsigned long collisions;
+		atomic_long_t __collisions;
+	};
+	union {
+		unsigned long rx_length_errors;
+		atomic_long_t __rx_length_errors;
+	};
+	union {
+		unsigned long rx_over_errors;
+		atomic_long_t __rx_over_errors;
+	};
+	union {
+		unsigned long rx_crc_errors;
+		atomic_long_t __rx_crc_errors;
+	};
+	union {
+		unsigned long rx_frame_errors;
+		atomic_long_t __rx_frame_errors;
+	};
+	union {
+		unsigned long rx_fifo_errors;
+		atomic_long_t __rx_fifo_errors;
+	};
+	union {
+		unsigned long rx_missed_errors;
+		atomic_long_t __rx_missed_errors;
+	};
+	union {
+		unsigned long tx_aborted_errors;
+		atomic_long_t __tx_aborted_errors;
+	};
+	union {
+		unsigned long tx_carrier_errors;
+		atomic_long_t __tx_carrier_errors;
+	};
+	union {
+		unsigned long tx_fifo_errors;
+		atomic_long_t __tx_fifo_errors;
+	};
+	union {
+		unsigned long tx_heartbeat_errors;
+		atomic_long_t __tx_heartbeat_errors;
+	};
+	union {
+		unsigned long tx_window_errors;
+		atomic_long_t __tx_window_errors;
+	};
+	union {
+		unsigned long rx_compressed;
+		atomic_long_t __rx_compressed;
+	};
+	union {
+		unsigned long tx_compressed;
+		atomic_long_t __tx_compressed;
+	};
+};
+
+struct netdev_hw_addr_list {
+	struct list_head list;
+	int count;
+	struct rb_root tree;
+};
+
+struct tipc_bearer;
+
+enum rx_handler_result {
+	RX_HANDLER_CONSUMED = 0,
+	RX_HANDLER_ANOTHER = 1,
+	RX_HANDLER_EXACT = 2,
+	RX_HANDLER_PASS = 3,
+};
+
+typedef enum rx_handler_result rx_handler_result_t;
+
+typedef rx_handler_result_t rx_handler_func_t(struct sk_buff **);
+
+enum netdev_ml_priv_type {
+	ML_PRIV_NONE = 0,
+	ML_PRIV_CAN = 1,
+};
+
+enum netdev_stat_type {
+	NETDEV_PCPU_STAT_NONE = 0,
+	NETDEV_PCPU_STAT_LSTATS = 1,
+	NETDEV_PCPU_STAT_TSTATS = 2,
+	NETDEV_PCPU_STAT_DSTATS = 3,
+};
+
+struct netdev_tc_txq {
+	u16 count;
+	u16 offset;
+};
+
+struct sfp_bus;
+
+struct bpf_xdp_link;
+
+struct bpf_xdp_entity {
+	struct bpf_prog *prog;
+	struct bpf_xdp_link *link;
+};
+
+struct netdev_name_node;
+
+struct dev_ifalias;
+
+struct net_device_ops;
+
+struct xdp_metadata_ops;
+
+struct net_device_core_stats;
+
+struct iw_handler_def;
+
+struct iw_public_data;
+
+struct ethtool_ops;
+
+struct ndisc_ops;
+
+struct header_ops;
+
+struct in_device;
+
+struct inet6_dev;
+
+struct vlan_info;
+
+struct wireless_dev;
+
+struct wpan_dev;
+
+struct netdev_rx_queue;
+
+struct bpf_mprog_entry;
+
+struct netdev_queue;
+
+struct cpu_rmap;
+
+struct Qdisc;
+
+struct xdp_dev_bulk_queue;
+
+struct xps_dev_maps;
+
+struct pcpu_lstats;
+
+struct pcpu_sw_netstats;
+
+struct pcpu_dstats;
+
+struct rtnl_link_ops;
+
+struct netprio_map;
+
+struct phy_device;
+
+struct macsec_ops;
+
+struct udp_tunnel_nic_info;
+
+struct udp_tunnel_nic;
+
+struct rtnl_hw_stats64;
+
+struct devlink_port;
+
+struct net_device {
+	char name[16];
+	struct netdev_name_node *name_node;
+	struct dev_ifalias __attribute__((btf_type_tag("rcu"))) *ifalias;
+	unsigned long mem_end;
+	unsigned long mem_start;
+	unsigned long base_addr;
+	unsigned long state;
+	struct list_head dev_list;
+	struct list_head napi_list;
+	struct list_head unreg_list;
+	struct list_head close_list;
+	struct list_head ptype_all;
+	struct list_head ptype_specific;
+	struct {
+		struct list_head upper;
+		struct list_head lower;
+	} adj_list;
+	unsigned int flags;
+	xdp_features_t xdp_features;
+	unsigned long long priv_flags;
+	const struct net_device_ops *netdev_ops;
+	const struct xdp_metadata_ops *xdp_metadata_ops;
+	int ifindex;
+	unsigned short gflags;
+	unsigned short hard_header_len;
+	unsigned int mtu;
+	unsigned short needed_headroom;
+	unsigned short needed_tailroom;
+	netdev_features_t features;
+	netdev_features_t hw_features;
+	netdev_features_t wanted_features;
+	netdev_features_t vlan_features;
+	netdev_features_t hw_enc_features;
+	netdev_features_t mpls_features;
+	netdev_features_t gso_partial_features;
+	unsigned int min_mtu;
+	unsigned int max_mtu;
+	unsigned short type;
+	unsigned char min_header_len;
+	unsigned char name_assign_type;
+	int group;
+	struct net_device_stats stats;
+	struct net_device_core_stats __attribute__((btf_type_tag("percpu"))) *core_stats;
+	atomic_t carrier_up_count;
+	atomic_t carrier_down_count;
+	const struct iw_handler_def *wireless_handlers;
+	struct iw_public_data *wireless_data;
+	const struct ethtool_ops *ethtool_ops;
+	const struct ndisc_ops *ndisc_ops;
+	const struct header_ops *header_ops;
+	unsigned char operstate;
+	unsigned char link_mode;
+	unsigned char if_port;
+	unsigned char dma;
+	unsigned char perm_addr[32];
+	unsigned char addr_assign_type;
+	unsigned char addr_len;
+	unsigned char upper_level;
+	unsigned char lower_level;
+	unsigned short neigh_priv_len;
+	unsigned short dev_id;
+	unsigned short dev_port;
+	unsigned short padded;
+	spinlock_t addr_list_lock;
+	int irq;
+	struct netdev_hw_addr_list uc;
+	struct netdev_hw_addr_list mc;
+	struct netdev_hw_addr_list dev_addrs;
+	struct kset *queues_kset;
+	unsigned int promiscuity;
+	unsigned int allmulti;
+	bool uc_promisc;
+	struct in_device __attribute__((btf_type_tag("rcu"))) *ip_ptr;
+	struct inet6_dev __attribute__((btf_type_tag("rcu"))) *ip6_ptr;
+	struct vlan_info __attribute__((btf_type_tag("rcu"))) *vlan_info;
+	struct tipc_bearer __attribute__((btf_type_tag("rcu"))) *tipc_ptr;
+	struct wireless_dev *ieee80211_ptr;
+	struct wpan_dev *ieee802154_ptr;
+	const unsigned char *dev_addr;
+	struct netdev_rx_queue *_rx;
+	unsigned int num_rx_queues;
+	unsigned int real_num_rx_queues;
+	struct bpf_prog __attribute__((btf_type_tag("rcu"))) *xdp_prog;
+	unsigned long gro_flush_timeout;
+	int napi_defer_hard_irqs;
+	unsigned int gro_max_size;
+	unsigned int gro_ipv4_max_size;
+	unsigned int xdp_zc_max_segs;
+	rx_handler_func_t __attribute__((btf_type_tag("rcu"))) *rx_handler;
+	void __attribute__((btf_type_tag("rcu"))) *rx_handler_data;
+	struct bpf_mprog_entry __attribute__((btf_type_tag("rcu"))) *tcx_ingress;
+	struct netdev_queue __attribute__((btf_type_tag("rcu"))) *ingress_queue;
+	struct nf_hook_entries __attribute__((btf_type_tag("rcu"))) *nf_hooks_ingress;
+	unsigned char broadcast[32];
+	struct cpu_rmap *rx_cpu_rmap;
+	struct hlist_node index_hlist;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct netdev_queue *_tx;
+	unsigned int num_tx_queues;
+	unsigned int real_num_tx_queues;
+	struct Qdisc __attribute__((btf_type_tag("rcu"))) *qdisc;
+	unsigned int tx_queue_len;
+	spinlock_t tx_global_lock;
+	struct xdp_dev_bulk_queue __attribute__((btf_type_tag("percpu"))) *xdp_bulkq;
+	struct xps_dev_maps __attribute__((btf_type_tag("rcu"))) *xps_maps[2];
+	struct bpf_mprog_entry __attribute__((btf_type_tag("rcu"))) *tcx_egress;
+	struct nf_hook_entries __attribute__((btf_type_tag("rcu"))) *nf_hooks_egress;
+	struct hlist_head qdisc_hash[16];
+	struct timer_list watchdog_timer;
+	int watchdog_timeo;
+	u32 proto_down_reason;
+	struct list_head todo_list;
+	int __attribute__((btf_type_tag("percpu"))) *pcpu_refcnt;
+	struct ref_tracker_dir refcnt_tracker;
+	struct list_head link_watch_list;
+	enum {
+		NETREG_UNINITIALIZED = 0,
+		NETREG_REGISTERED = 1,
+		NETREG_UNREGISTERING = 2,
+		NETREG_UNREGISTERED = 3,
+		NETREG_RELEASED = 4,
+		NETREG_DUMMY = 5,
+	} reg_state: 8;
+	bool dismantle;
+	enum {
+		RTNL_LINK_INITIALIZED = 0,
+		RTNL_LINK_INITIALIZING = 1,
+	} rtnl_link_state: 16;
+	bool needs_free_netdev;
+	void (*priv_destructor)(struct net_device *);
+	possible_net_t nd_net;
+	void *ml_priv;
+	enum netdev_ml_priv_type ml_priv_type;
+	enum netdev_stat_type pcpu_stat_type: 8;
+	union {
+		struct pcpu_lstats __attribute__((btf_type_tag("percpu"))) *lstats;
+		struct pcpu_sw_netstats __attribute__((btf_type_tag("percpu"))) *tstats;
+		struct pcpu_dstats __attribute__((btf_type_tag("percpu"))) *dstats;
+	};
+	struct device dev;
+	const struct attribute_group *sysfs_groups[4];
+	const struct attribute_group *sysfs_rx_queue_group;
+	const struct rtnl_link_ops *rtnl_link_ops;
+	unsigned int gso_max_size;
+	unsigned int tso_max_size;
+	u16 gso_max_segs;
+	u16 tso_max_segs;
+	unsigned int gso_ipv4_max_size;
+	s16 num_tc;
+	struct netdev_tc_txq tc_to_txq[16];
+	u8 prio_tc_map[16];
+	struct netprio_map __attribute__((btf_type_tag("rcu"))) *priomap;
+	struct phy_device *phydev;
+	struct sfp_bus *sfp_bus;
+	struct lock_class_key *qdisc_tx_busylock;
+	bool proto_down;
+	unsigned int wol_enabled: 1;
+	unsigned int threaded: 1;
+	struct list_head net_notifier_list;
+	const struct macsec_ops *macsec_ops;
+	const struct udp_tunnel_nic_info *udp_tunnel_nic_info;
+	struct udp_tunnel_nic *udp_tunnel_nic;
+	struct bpf_xdp_entity xdp_state[3];
+	u8 dev_addr_shadow[32];
+	netdevice_tracker linkwatch_dev_tracker;
+	netdevice_tracker watchdog_dev_tracker;
+	netdevice_tracker dev_registered_tracker;
+	struct rtnl_hw_stats64 *offload_xstats_l3;
+	struct devlink_port *devlink_port;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+	u64 android_kabi_reserved5;
+	u64 android_kabi_reserved6;
+	u64 android_kabi_reserved7;
+	u64 android_kabi_reserved8;
+	long: 64;
+};
+
+struct dev_ifalias {
+	struct callback_head rcuhead;
+	char ifalias[0];
+};
+
+enum netdev_tx {
+	__NETDEV_TX_MIN = -2147483648,
+	NETDEV_TX_OK = 0,
+	NETDEV_TX_BUSY = 16,
+};
+
+typedef enum netdev_tx netdev_tx_t;
+
+enum tc_setup_type {
+	TC_QUERY_CAPS = 0,
+	TC_SETUP_QDISC_MQPRIO = 1,
+	TC_SETUP_CLSU32 = 2,
+	TC_SETUP_CLSFLOWER = 3,
+	TC_SETUP_CLSMATCHALL = 4,
+	TC_SETUP_CLSBPF = 5,
+	TC_SETUP_BLOCK = 6,
+	TC_SETUP_QDISC_CBS = 7,
+	TC_SETUP_QDISC_RED = 8,
+	TC_SETUP_QDISC_PRIO = 9,
+	TC_SETUP_QDISC_MQ = 10,
+	TC_SETUP_QDISC_ETF = 11,
+	TC_SETUP_ROOT_QDISC = 12,
+	TC_SETUP_QDISC_GRED = 13,
+	TC_SETUP_QDISC_TAPRIO = 14,
+	TC_SETUP_FT = 15,
+	TC_SETUP_QDISC_ETS = 16,
+	TC_SETUP_QDISC_TBF = 17,
+	TC_SETUP_QDISC_FIFO = 18,
+	TC_SETUP_QDISC_HTB = 19,
+	TC_SETUP_ACT = 20,
+};
+
+struct ifreq;
+
+struct if_settings;
+
+struct ifmap;
+
+struct neigh_parms;
+
+struct rtnl_link_stats64;
+
+struct ifla_vf_info;
+
+struct ifla_vf_stats;
+
+struct nlattr;
+
+struct ifla_vf_guid;
+
+struct netlink_ext_ack;
+
+struct ndmsg;
+
+struct netlink_callback;
+
+struct nlmsghdr;
+
+struct netdev_phys_item_id;
+
+struct netdev_bpf;
+
+struct xdp_frame;
+
+struct xdp_buff;
+
+struct ip_tunnel_parm;
+
+struct net_device_path_ctx;
+
+struct net_device_path;
+
+struct skb_shared_hwtstamps;
+
+struct kernel_hwtstamp_config;
+
+struct net_device_ops {
+	int (*ndo_init)(struct net_device *);
+	void (*ndo_uninit)(struct net_device *);
+	int (*ndo_open)(struct net_device *);
+	int (*ndo_stop)(struct net_device *);
+	netdev_tx_t (*ndo_start_xmit)(struct sk_buff *, struct net_device *);
+	netdev_features_t (*ndo_features_check)(struct sk_buff *, struct net_device *, netdev_features_t);
+	u16 (*ndo_select_queue)(struct net_device *, struct sk_buff *, struct net_device *);
+	void (*ndo_change_rx_flags)(struct net_device *, int);
+	void (*ndo_set_rx_mode)(struct net_device *);
+	int (*ndo_set_mac_address)(struct net_device *, void *);
+	int (*ndo_validate_addr)(struct net_device *);
+	int (*ndo_do_ioctl)(struct net_device *, struct ifreq *, int);
+	int (*ndo_eth_ioctl)(struct net_device *, struct ifreq *, int);
+	int (*ndo_siocbond)(struct net_device *, struct ifreq *, int);
+	int (*ndo_siocwandev)(struct net_device *, struct if_settings *);
+	int (*ndo_siocdevprivate)(struct net_device *, struct ifreq *, void __attribute__((btf_type_tag("user"))) *, int);
+	int (*ndo_set_config)(struct net_device *, struct ifmap *);
+	int (*ndo_change_mtu)(struct net_device *, int);
+	int (*ndo_neigh_setup)(struct net_device *, struct neigh_parms *);
+	void (*ndo_tx_timeout)(struct net_device *, unsigned int);
+	void (*ndo_get_stats64)(struct net_device *, struct rtnl_link_stats64 *);
+	bool (*ndo_has_offload_stats)(const struct net_device *, int);
+	int (*ndo_get_offload_stats)(int, const struct net_device *, void *);
+	struct net_device_stats * (*ndo_get_stats)(struct net_device *);
+	int (*ndo_vlan_rx_add_vid)(struct net_device *, __be16, u16);
+	int (*ndo_vlan_rx_kill_vid)(struct net_device *, __be16, u16);
+	int (*ndo_set_vf_mac)(struct net_device *, int, u8 *);
+	int (*ndo_set_vf_vlan)(struct net_device *, int, u16, u8, __be16);
+	int (*ndo_set_vf_rate)(struct net_device *, int, int, int);
+	int (*ndo_set_vf_spoofchk)(struct net_device *, int, bool);
+	int (*ndo_set_vf_trust)(struct net_device *, int, bool);
+	int (*ndo_get_vf_config)(struct net_device *, int, struct ifla_vf_info *);
+	int (*ndo_set_vf_link_state)(struct net_device *, int, int);
+	int (*ndo_get_vf_stats)(struct net_device *, int, struct ifla_vf_stats *);
+	int (*ndo_set_vf_port)(struct net_device *, int, struct nlattr **);
+	int (*ndo_get_vf_port)(struct net_device *, int, struct sk_buff *);
+	int (*ndo_get_vf_guid)(struct net_device *, int, struct ifla_vf_guid *, struct ifla_vf_guid *);
+	int (*ndo_set_vf_guid)(struct net_device *, int, u64, int);
+	int (*ndo_set_vf_rss_query_en)(struct net_device *, int, bool);
+	int (*ndo_setup_tc)(struct net_device *, enum tc_setup_type, void *);
+	int (*ndo_rx_flow_steer)(struct net_device *, const struct sk_buff *, u16, u32);
+	int (*ndo_add_slave)(struct net_device *, struct net_device *, struct netlink_ext_ack *);
+	int (*ndo_del_slave)(struct net_device *, struct net_device *);
+	struct net_device * (*ndo_get_xmit_slave)(struct net_device *, struct sk_buff *, bool);
+	struct net_device * (*ndo_sk_get_lower_dev)(struct net_device *, struct sock *);
+	netdev_features_t (*ndo_fix_features)(struct net_device *, netdev_features_t);
+	int (*ndo_set_features)(struct net_device *, netdev_features_t);
+	int (*ndo_neigh_construct)(struct net_device *, struct neighbour *);
+	void (*ndo_neigh_destroy)(struct net_device *, struct neighbour *);
+	int (*ndo_fdb_add)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16, u16, struct netlink_ext_ack *);
+	int (*ndo_fdb_del)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16, struct netlink_ext_ack *);
+	int (*ndo_fdb_del_bulk)(struct ndmsg *, struct nlattr **, struct net_device *, u16, struct netlink_ext_ack *);
+	int (*ndo_fdb_dump)(struct sk_buff *, struct netlink_callback *, struct net_device *, struct net_device *, int *);
+	int (*ndo_fdb_get)(struct sk_buff *, struct nlattr **, struct net_device *, const unsigned char *, u16, u32, u32, struct netlink_ext_ack *);
+	int (*ndo_mdb_add)(struct net_device *, struct nlattr **, u16, struct netlink_ext_ack *);
+	int (*ndo_mdb_del)(struct net_device *, struct nlattr **, struct netlink_ext_ack *);
+	int (*ndo_mdb_dump)(struct net_device *, struct sk_buff *, struct netlink_callback *);
+	int (*ndo_bridge_setlink)(struct net_device *, struct nlmsghdr *, u16, struct netlink_ext_ack *);
+	int (*ndo_bridge_getlink)(struct sk_buff *, u32, u32, struct net_device *, u32, int);
+	int (*ndo_bridge_dellink)(struct net_device *, struct nlmsghdr *, u16);
+	int (*ndo_change_carrier)(struct net_device *, bool);
+	int (*ndo_get_phys_port_id)(struct net_device *, struct netdev_phys_item_id *);
+	int (*ndo_get_port_parent_id)(struct net_device *, struct netdev_phys_item_id *);
+	int (*ndo_get_phys_port_name)(struct net_device *, char *, size_t);
+	void * (*ndo_dfwd_add_station)(struct net_device *, struct net_device *);
+	void (*ndo_dfwd_del_station)(struct net_device *, void *);
+	int (*ndo_set_tx_maxrate)(struct net_device *, int, u32);
+	int (*ndo_get_iflink)(const struct net_device *);
+	int (*ndo_fill_metadata_dst)(struct net_device *, struct sk_buff *);
+	void (*ndo_set_rx_headroom)(struct net_device *, int);
+	int (*ndo_bpf)(struct net_device *, struct netdev_bpf *);
+	int (*ndo_xdp_xmit)(struct net_device *, int, struct xdp_frame **, u32);
+	struct net_device * (*ndo_xdp_get_xmit_slave)(struct net_device *, struct xdp_buff *);
+	int (*ndo_xsk_wakeup)(struct net_device *, u32, u32);
+	int (*ndo_tunnel_ctl)(struct net_device *, struct ip_tunnel_parm *, int);
+	struct net_device * (*ndo_get_peer_dev)(struct net_device *);
+	int (*ndo_fill_forward_path)(struct net_device_path_ctx *, struct net_device_path *);
+	ktime_t (*ndo_get_tstamp)(struct net_device *, const struct skb_shared_hwtstamps *, bool);
+	int (*ndo_hwtstamp_get)(struct net_device *, struct kernel_hwtstamp_config *);
+	int (*ndo_hwtstamp_set)(struct net_device *, struct kernel_hwtstamp_config *, struct netlink_ext_ack *);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+	u64 android_kabi_reserved5;
+	u64 android_kabi_reserved6;
+	u64 android_kabi_reserved7;
+	u64 android_kabi_reserved8;
+};
+
+struct ifmap {
+	unsigned long mem_start;
+	unsigned long mem_end;
+	unsigned short base_addr;
+	unsigned char irq;
+	unsigned char dma;
+	unsigned char port;
+};
+
+typedef struct {
+	unsigned short encoding;
+	unsigned short parity;
+} raw_hdlc_proto;
+
+typedef struct {
+	unsigned int interval;
+	unsigned int timeout;
+} cisco_proto;
+
+typedef struct {
+	unsigned int t391;
+	unsigned int t392;
+	unsigned int n391;
+	unsigned int n392;
+	unsigned int n393;
+	unsigned short lmi;
+	unsigned short dce;
+} fr_proto;
+
+typedef struct {
+	unsigned int dlci;
+} fr_proto_pvc;
+
+typedef struct {
+	unsigned int dlci;
+	char master[16];
+} fr_proto_pvc_info;
+
+typedef struct {
+	unsigned short dce;
+	unsigned int modulo;
+	unsigned int window;
+	unsigned int t1;
+	unsigned int t2;
+	unsigned int n2;
+} x25_hdlc_proto;
+
+typedef struct {
+	unsigned int clock_rate;
+	unsigned int clock_type;
+	unsigned short loopback;
+} sync_serial_settings;
+
+typedef struct {
+	unsigned int clock_rate;
+	unsigned int clock_type;
+	unsigned short loopback;
+	unsigned int slot_map;
+} te1_settings;
+
+struct if_settings {
+	unsigned int type;
+	unsigned int size;
+	union {
+		raw_hdlc_proto __attribute__((btf_type_tag("user"))) *raw_hdlc;
+		cisco_proto __attribute__((btf_type_tag("user"))) *cisco;
+		fr_proto __attribute__((btf_type_tag("user"))) *fr;
+		fr_proto_pvc __attribute__((btf_type_tag("user"))) *fr_pvc;
+		fr_proto_pvc_info __attribute__((btf_type_tag("user"))) *fr_pvc_info;
+		x25_hdlc_proto __attribute__((btf_type_tag("user"))) *x25;
+		sync_serial_settings __attribute__((btf_type_tag("user"))) *sync;
+		te1_settings __attribute__((btf_type_tag("user"))) *te1;
+	} ifs_ifsu;
+};
+
+struct ifreq {
+	union {
+		char ifrn_name[16];
+	} ifr_ifrn;
+	union {
+		struct sockaddr ifru_addr;
+		struct sockaddr ifru_dstaddr;
+		struct sockaddr ifru_broadaddr;
+		struct sockaddr ifru_netmask;
+		struct sockaddr ifru_hwaddr;
+		short ifru_flags;
+		int ifru_ivalue;
+		int ifru_mtu;
+		struct ifmap ifru_map;
+		char ifru_slave[16];
+		char ifru_newname[16];
+		void __attribute__((btf_type_tag("user"))) *ifru_data;
+		struct if_settings ifru_settings;
+	} ifr_ifru;
+};
+
+struct neigh_table;
+
+struct neigh_parms {
+	possible_net_t net;
+	struct net_device *dev;
+	netdevice_tracker dev_tracker;
+	struct list_head list;
+	int (*neigh_setup)(struct neighbour *);
+	struct neigh_table *tbl;
+	void *sysctl_table;
+	int dead;
+	refcount_t refcnt;
+	struct callback_head callback_head;
+	int reachable_time;
+	u32 qlen;
+	int data[14];
+	unsigned long data_state[1];
+	u64 android_kabi_reserved1;
+};
+
+struct fib_rule;
+
+struct flowi;
+
+struct fib_lookup_arg;
+
+struct fib_rule_hdr;
+
+struct fib_rules_ops {
+	int family;
+	struct list_head list;
+	int rule_size;
+	int addr_size;
+	int unresolved_rules;
+	int nr_goto_rules;
+	unsigned int fib_rules_seq;
+	int (*action)(struct fib_rule *, struct flowi *, int, struct fib_lookup_arg *);
+	bool (*suppress)(struct fib_rule *, int, struct fib_lookup_arg *);
+	int (*match)(struct fib_rule *, struct flowi *, int);
+	int (*configure)(struct fib_rule *, struct sk_buff *, struct fib_rule_hdr *, struct nlattr **, struct netlink_ext_ack *);
+	int (*delete)(struct fib_rule *);
+	int (*compare)(struct fib_rule *, struct fib_rule_hdr *, struct nlattr **);
+	int (*fill)(struct fib_rule *, struct sk_buff *, struct fib_rule_hdr *);
+	size_t (*nlmsg_payload)(struct fib_rule *);
+	void (*flush_cache)(struct fib_rules_ops *);
+	int nlgroup;
+	struct list_head rules_list;
+	struct module *owner;
+	struct net *fro_net;
+	struct callback_head rcu;
+};
+
+typedef __u64 __be64;
+
+struct fib_kuid_range {
+	kuid_t start;
+	kuid_t end;
+};
+
+struct fib_rule_port_range {
+	__u16 start;
+	__u16 end;
+};
+
+struct fib_rule {
+	struct list_head list;
+	int iifindex;
+	int oifindex;
+	u32 mark;
+	u32 mark_mask;
+	u32 flags;
+	u32 table;
+	u8 action;
+	u8 l3mdev;
+	u8 proto;
+	u8 ip_proto;
+	u32 target;
+	__be64 tun_id;
+	struct fib_rule __attribute__((btf_type_tag("rcu"))) *ctarget;
+	struct net *fr_net;
+	refcount_t refcnt;
+	u32 pref;
+	int suppress_ifgroup;
+	int suppress_prefixlen;
+	char iifname[16];
+	char oifname[16];
+	struct fib_kuid_range uid_range;
+	struct fib_rule_port_range sport_range;
+	struct fib_rule_port_range dport_range;
+	struct callback_head rcu;
+};
+
+struct flowi_tunnel {
+	__be64 tun_id;
+};
+
+struct flowi_common {
+	int flowic_oif;
+	int flowic_iif;
+	int flowic_l3mdev;
+	__u32 flowic_mark;
+	__u8 flowic_tos;
+	__u8 flowic_scope;
+	__u8 flowic_proto;
+	__u8 flowic_flags;
+	__u32 flowic_secid;
+	kuid_t flowic_uid;
+	__u32 flowic_multipath_hash;
+	struct flowi_tunnel flowic_tun_key;
+};
+
+union flowi_uli {
+	struct {
+		__be16 dport;
+		__be16 sport;
+	} ports;
+	struct {
+		__u8 type;
+		__u8 code;
+	} icmpt;
+	__be32 gre_key;
+	struct {
+		__u8 type;
+	} mht;
+};
+
+struct flowi4 {
+	struct flowi_common __fl_common;
+	__be32 saddr;
+	__be32 daddr;
+	union flowi_uli uli;
+};
+
+struct flowi6 {
+	struct flowi_common __fl_common;
+	struct in6_addr daddr;
+	struct in6_addr saddr;
+	__be32 flowlabel;
+	union flowi_uli uli;
+	__u32 mp_hash;
+};
+
+struct flowi {
+	union {
+		struct flowi_common __fl_common;
+		struct flowi4 ip4;
+		struct flowi6 ip6;
+	} u;
+};
+
+struct fib_lookup_arg {
+	void *lookup_ptr;
+	const void *lookup_data;
+	void *result;
+	struct fib_rule *rule;
+	u32 table;
+	int flags;
+};
+
+struct fib_rule_hdr {
+	__u8 family;
+	__u8 dst_len;
+	__u8 src_len;
+	__u8 tos;
+	__u8 table;
+	__u8 res1;
+	__u8 res2;
+	__u8 action;
+	__u32 flags;
+};
+
+struct nlattr {
+	__u16 nla_len;
+	__u16 nla_type;
+};
+
+struct nla_policy;
+
+struct netlink_ext_ack {
+	const char *_msg;
+	const struct nlattr *bad_attr;
+	const struct nla_policy *policy;
+	const struct nlattr *miss_nest;
+	u16 miss_type;
+	u8 cookie[20];
+	u8 cookie_len;
+	char _msg_buf[80];
+};
+
+struct netlink_range_validation;
+
+struct netlink_range_validation_signed;
+
+struct nla_policy {
+	u8 type;
+	u8 validation_type;
+	u16 len;
+	union {
+		u16 strict_start_type;
+		const u32 bitfield32_valid;
+		const u32 mask;
+		const char *reject_message;
+		const struct nla_policy *nested_policy;
+		struct netlink_range_validation *range;
+		struct netlink_range_validation_signed *range_signed;
+		struct {
+			s16 min;
+			s16 max;
+		};
+		int (*validate)(const struct nlattr *, struct netlink_ext_ack *);
+	};
+};
+
+struct netlink_range_validation {
+	u64 min;
+	u64 max;
+};
+
+struct netlink_range_validation_signed {
+	s64 min;
+	s64 max;
+};
+
+struct fib_notifier_ops {
+	int family;
+	struct list_head list;
+	unsigned int (*fib_seq_read)(struct net *);
+	int (*fib_dump)(struct net *, struct notifier_block *, struct netlink_ext_ack *);
+	struct module *owner;
+	struct callback_head rcu;
+};
+
+struct hh_cache {
+	unsigned int hh_len;
+	seqlock_t hh_lock;
+	unsigned long hh_data[12];
+};
+
+struct neigh_ops;
+
+struct neighbour {
+	struct neighbour __attribute__((btf_type_tag("rcu"))) *next;
+	struct neigh_table *tbl;
+	struct neigh_parms *parms;
+	unsigned long confirmed;
+	unsigned long updated;
+	rwlock_t lock;
+	refcount_t refcnt;
+	unsigned int arp_queue_len_bytes;
+	struct sk_buff_head arp_queue;
+	struct timer_list timer;
+	unsigned long used;
+	atomic_t probes;
+	u8 nud_state;
+	u8 type;
+	u8 dead;
+	u8 protocol;
+	u32 flags;
+	seqlock_t ha_lock;
+	long: 0;
+	unsigned char ha[32];
+	struct hh_cache hh;
+	int (*output)(struct neighbour *, struct sk_buff *);
+	const struct neigh_ops *ops;
+	struct list_head gc_list;
+	struct list_head managed_list;
+	struct callback_head rcu;
+	struct net_device *dev;
+	netdevice_tracker dev_tracker;
+	u64 android_kabi_reserved1;
+	u8 primary_key[0];
+};
+
+struct pneigh_entry;
+
+struct neigh_statistics;
+
+struct neigh_hash_table;
+
+struct neigh_table {
+	int family;
+	unsigned int entry_size;
+	unsigned int key_len;
+	__be16 protocol;
+	__u32 (*hash)(const void *, const struct net_device *, __u32 *);
+	bool (*key_eq)(const struct neighbour *, const void *);
+	int (*constructor)(struct neighbour *);
+	int (*pconstructor)(struct pneigh_entry *);
+	void (*pdestructor)(struct pneigh_entry *);
+	void (*proxy_redo)(struct sk_buff *);
+	int (*is_multicast)(const void *);
+	bool (*allow_add)(const struct net_device *, struct netlink_ext_ack *);
+	char *id;
+	struct neigh_parms parms;
+	struct list_head parms_list;
+	int gc_interval;
+	int gc_thresh1;
+	int gc_thresh2;
+	int gc_thresh3;
+	unsigned long last_flush;
+	struct delayed_work gc_work;
+	struct delayed_work managed_work;
+	struct timer_list proxy_timer;
+	struct sk_buff_head proxy_queue;
+	atomic_t entries;
+	atomic_t gc_entries;
+	struct list_head gc_list;
+	struct list_head managed_list;
+	rwlock_t lock;
+	unsigned long last_rand;
+	struct neigh_statistics __attribute__((btf_type_tag("percpu"))) *stats;
+	struct neigh_hash_table __attribute__((btf_type_tag("rcu"))) *nht;
+	struct pneigh_entry **phash_buckets;
+	u64 android_kabi_reserved1;
+};
+
+struct pneigh_entry {
+	struct pneigh_entry *next;
+	possible_net_t net;
+	struct net_device *dev;
+	netdevice_tracker dev_tracker;
+	u32 flags;
+	u8 protocol;
+	u32 key[0];
+};
+
+struct neigh_statistics {
+	unsigned long allocs;
+	unsigned long destroys;
+	unsigned long hash_grows;
+	unsigned long res_failed;
+	unsigned long lookups;
+	unsigned long hits;
+	unsigned long rcv_probes_mcast;
+	unsigned long rcv_probes_ucast;
+	unsigned long periodic_gc_runs;
+	unsigned long forced_gc_runs;
+	unsigned long unres_discards;
+	unsigned long table_fulls;
+};
+
+struct neigh_hash_table {
+	struct neighbour __attribute__((btf_type_tag("rcu"))) **hash_buckets;
+	unsigned int hash_shift;
+	__u32 hash_rnd[4];
+	struct callback_head rcu;
+};
+
+struct neigh_ops {
+	int family;
+	void (*solicit)(struct neighbour *, struct sk_buff *);
+	void (*error_report)(struct neighbour *, struct sk_buff *);
+	int (*output)(struct neighbour *, struct sk_buff *);
+	int (*connected_output)(struct neighbour *, struct sk_buff *);
+};
+
+struct ipv6_stable_secret {
+	bool initialized;
+	struct in6_addr secret;
+};
+
+struct ipv6_devconf {
+	__s32 forwarding;
+	__s32 hop_limit;
+	__s32 mtu6;
+	__s32 accept_ra;
+	__s32 accept_redirects;
+	__s32 autoconf;
+	__s32 dad_transmits;
+	__s32 rtr_solicits;
+	__s32 rtr_solicit_interval;
+	__s32 rtr_solicit_max_interval;
+	__s32 rtr_solicit_delay;
+	__s32 force_mld_version;
+	__s32 mldv1_unsolicited_report_interval;
+	__s32 mldv2_unsolicited_report_interval;
+	__s32 use_tempaddr;
+	__s32 temp_valid_lft;
+	__s32 temp_prefered_lft;
+	__s32 regen_max_retry;
+	__s32 max_desync_factor;
+	__s32 max_addresses;
+	__s32 accept_ra_defrtr;
+	__u32 ra_defrtr_metric;
+	__s32 accept_ra_min_hop_limit;
+	__s32 accept_ra_min_lft;
+	__s32 accept_ra_pinfo;
+	__s32 ignore_routes_with_linkdown;
+	__s32 accept_ra_rtr_pref;
+	__s32 rtr_probe_interval;
+	__s32 accept_ra_rt_info_min_plen;
+	__s32 accept_ra_rt_info_max_plen;
+	__s32 accept_ra_rt_table;
+	__s32 proxy_ndp;
+	__s32 accept_source_route;
+	__s32 accept_ra_from_local;
+	__s32 optimistic_dad;
+	__s32 use_optimistic;
+	atomic_t mc_forwarding;
+	__s32 disable_ipv6;
+	__s32 drop_unicast_in_l2_multicast;
+	__s32 accept_dad;
+	__s32 force_tllao;
+	__s32 ndisc_notify;
+	__s32 suppress_frag_ndisc;
+	__s32 accept_ra_mtu;
+	__s32 drop_unsolicited_na;
+	__s32 accept_untracked_na;
+	struct ipv6_stable_secret stable_secret;
+	__s32 use_oif_addrs_only;
+	__s32 keep_addr_on_down;
+	__s32 seg6_enabled;
+	__u32 enhanced_dad;
+	__u32 addr_gen_mode;
+	__s32 disable_policy;
+	__s32 ndisc_tclass;
+	__s32 rpl_seg_enabled;
+	__u32 ioam6_id;
+	__u32 ioam6_id_wide;
+	__u8 ioam6_enabled;
+	__u8 ndisc_evict_nocarrier;
+	struct ctl_table_header *sysctl_header;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct rtnl_link_stats64 {
+	__u64 rx_packets;
+	__u64 tx_packets;
+	__u64 rx_bytes;
+	__u64 tx_bytes;
+	__u64 rx_errors;
+	__u64 tx_errors;
+	__u64 rx_dropped;
+	__u64 tx_dropped;
+	__u64 multicast;
+	__u64 collisions;
+	__u64 rx_length_errors;
+	__u64 rx_over_errors;
+	__u64 rx_crc_errors;
+	__u64 rx_frame_errors;
+	__u64 rx_fifo_errors;
+	__u64 rx_missed_errors;
+	__u64 tx_aborted_errors;
+	__u64 tx_carrier_errors;
+	__u64 tx_fifo_errors;
+	__u64 tx_heartbeat_errors;
+	__u64 tx_window_errors;
+	__u64 rx_compressed;
+	__u64 tx_compressed;
+	__u64 rx_nohandler;
+	__u64 rx_otherhost_dropped;
+};
+
+struct ifla_vf_info {
+	__u32 vf;
+	__u8 mac[32];
+	__u32 vlan;
+	__u32 qos;
+	__u32 spoofchk;
+	__u32 linkstate;
+	__u32 min_tx_rate;
+	__u32 max_tx_rate;
+	__u32 rss_query_en;
+	__u32 trusted;
+	__be16 vlan_proto;
+};
+
+struct ifla_vf_stats {
+	__u64 rx_packets;
+	__u64 tx_packets;
+	__u64 rx_bytes;
+	__u64 tx_bytes;
+	__u64 broadcast;
+	__u64 multicast;
+	__u64 rx_dropped;
+	__u64 tx_dropped;
+};
+
+struct ifla_vf_guid {
+	__u32 vf;
+	__u64 guid;
+};
+
+struct ndmsg {
+	__u8 ndm_family;
+	__u8 ndm_pad1;
+	__u16 ndm_pad2;
+	__s32 ndm_ifindex;
+	__u16 ndm_state;
+	__u8 ndm_flags;
+	__u8 ndm_type;
+};
+
+struct netlink_callback {
+	struct sk_buff *skb;
+	const struct nlmsghdr *nlh;
+	int (*dump)(struct sk_buff *, struct netlink_callback *);
+	int (*done)(struct netlink_callback *);
+	void *data;
+	struct module *module;
+	struct netlink_ext_ack *extack;
+	u16 family;
+	u16 answer_flags;
+	u32 min_dump_alloc;
+	unsigned int prev_seq;
+	unsigned int seq;
+	bool strict_check;
+	union {
+		u8 ctx[48];
+		long args[6];
+	};
+};
+
+struct nlmsghdr {
+	__u32 nlmsg_len;
+	__u16 nlmsg_type;
+	__u16 nlmsg_flags;
+	__u32 nlmsg_seq;
+	__u32 nlmsg_pid;
+};
+
+struct netdev_phys_item_id {
+	unsigned char id[32];
+	unsigned char id_len;
+};
+
+enum bpf_netdev_command {
+	XDP_SETUP_PROG = 0,
+	XDP_SETUP_PROG_HW = 1,
+	BPF_OFFLOAD_MAP_ALLOC = 2,
+	BPF_OFFLOAD_MAP_FREE = 3,
+	XDP_SETUP_XSK_POOL = 4,
+};
+
+struct bpf_offloaded_map;
+
+struct xsk_buff_pool;
+
+struct netdev_bpf {
+	enum bpf_netdev_command command;
+	union {
+		struct {
+			u32 flags;
+			struct bpf_prog *prog;
+			struct netlink_ext_ack *extack;
+		};
+		struct {
+			struct bpf_offloaded_map *offmap;
+		};
+		struct {
+			struct xsk_buff_pool *pool;
+			u16 queue_id;
+		} xsk;
+	};
+};
+
+struct net_device_path_ctx {
+	const struct net_device *dev;
+	u8 daddr[6];
+	int num_vlans;
+	struct {
+		u16 id;
+		__be16 proto;
+	} vlan[2];
+};
+
+enum net_device_path_type {
+	DEV_PATH_ETHERNET = 0,
+	DEV_PATH_VLAN = 1,
+	DEV_PATH_BRIDGE = 2,
+	DEV_PATH_PPPOE = 3,
+	DEV_PATH_DSA = 4,
+	DEV_PATH_MTK_WDMA = 5,
+};
+
+struct net_device_path {
+	enum net_device_path_type type;
+	const struct net_device *dev;
+	union {
+		struct {
+			u16 id;
+			__be16 proto;
+			u8 h_dest[6];
+		} encap;
+		struct {
+			enum {
+				DEV_PATH_BR_VLAN_KEEP = 0,
+				DEV_PATH_BR_VLAN_TAG = 1,
+				DEV_PATH_BR_VLAN_UNTAG = 2,
+				DEV_PATH_BR_VLAN_UNTAG_HW = 3,
+			} vlan_mode;
+			u16 vlan_id;
+			__be16 vlan_proto;
+		} bridge;
+		struct {
+			int port;
+			u16 proto;
+		} dsa;
+		struct {
+			u8 wdma_idx;
+			u8 queue;
+			u16 wcid;
+			u8 bss;
+		} mtk_wdma;
+	};
+};
+
+struct skb_shared_hwtstamps {
+	union {
+		ktime_t hwtstamp;
+		void *netdev_data;
+	};
+};
+
+enum hwtstamp_source {
+	HWTSTAMP_SOURCE_NETDEV = 0,
+	HWTSTAMP_SOURCE_PHYLIB = 1,
+};
+
+struct kernel_hwtstamp_config {
+	int flags;
+	int tx_type;
+	int rx_filter;
+	struct ifreq *ifr;
+	bool copied_to_user;
+	enum hwtstamp_source source;
+};
+
+enum xdp_rss_hash_type {
+	XDP_RSS_L3_IPV4 = 1,
+	XDP_RSS_L3_IPV6 = 2,
+	XDP_RSS_L3_DYNHDR = 4,
+	XDP_RSS_L4 = 8,
+	XDP_RSS_L4_TCP = 16,
+	XDP_RSS_L4_UDP = 32,
+	XDP_RSS_L4_SCTP = 64,
+	XDP_RSS_L4_IPSEC = 128,
+	XDP_RSS_TYPE_NONE = 0,
+	XDP_RSS_TYPE_L2 = 0,
+	XDP_RSS_TYPE_L3_IPV4 = 1,
+	XDP_RSS_TYPE_L3_IPV6 = 2,
+	XDP_RSS_TYPE_L3_IPV4_OPT = 5,
+	XDP_RSS_TYPE_L3_IPV6_EX = 6,
+	XDP_RSS_TYPE_L4_ANY = 8,
+	XDP_RSS_TYPE_L4_IPV4_TCP = 25,
+	XDP_RSS_TYPE_L4_IPV4_UDP = 41,
+	XDP_RSS_TYPE_L4_IPV4_SCTP = 73,
+	XDP_RSS_TYPE_L4_IPV4_IPSEC = 137,
+	XDP_RSS_TYPE_L4_IPV6_TCP = 26,
+	XDP_RSS_TYPE_L4_IPV6_UDP = 42,
+	XDP_RSS_TYPE_L4_IPV6_SCTP = 74,
+	XDP_RSS_TYPE_L4_IPV6_IPSEC = 138,
+	XDP_RSS_TYPE_L4_IPV6_TCP_EX = 30,
+	XDP_RSS_TYPE_L4_IPV6_UDP_EX = 46,
+	XDP_RSS_TYPE_L4_IPV6_SCTP_EX = 78,
+};
+
+struct xdp_md;
+
+struct xdp_metadata_ops {
+	int (*xmo_rx_timestamp)(const struct xdp_md *, u64 *);
+	int (*xmo_rx_hash)(const struct xdp_md *, u32 *, enum xdp_rss_hash_type *);
+};
+
+struct net_device_core_stats {
+	unsigned long rx_dropped;
+	unsigned long tx_dropped;
+	unsigned long rx_nohandler;
+	unsigned long rx_otherhost_dropped;
+};
+
+struct iw_request_info;
+
+union iwreq_data;
+
+typedef int (*iw_handler)(struct net_device *, struct iw_request_info *, union iwreq_data *, char *);
+
+struct iw_priv_args;
+
+struct iw_statistics;
+
+struct iw_handler_def {
+	const iw_handler *standard;
+	__u16 num_standard;
+	__u16 num_private;
+	__u16 num_private_args;
+	const iw_handler *private;
+	const struct iw_priv_args *private_args;
+	struct iw_statistics * (*get_wireless_stats)(struct net_device *);
+};
+
+enum ethtool_phys_id_state {
+	ETHTOOL_ID_INACTIVE = 0,
+	ETHTOOL_ID_ACTIVE = 1,
+	ETHTOOL_ID_ON = 2,
+	ETHTOOL_ID_OFF = 3,
+};
+
+struct ethtool_drvinfo;
+
+struct ethtool_regs;
+
+struct ethtool_wolinfo;
+
+struct ethtool_link_ext_state_info;
+
+struct ethtool_link_ext_stats;
+
+struct ethtool_eeprom;
+
+struct ethtool_coalesce;
+
+struct kernel_ethtool_coalesce;
+
+struct ethtool_ringparam;
+
+struct kernel_ethtool_ringparam;
+
+struct ethtool_pause_stats;
+
+struct ethtool_pauseparam;
+
+struct ethtool_test;
+
+struct ethtool_stats;
+
+struct ethtool_rxnfc;
+
+struct ethtool_flash;
+
+struct ethtool_channels;
+
+struct ethtool_dump;
+
+struct ethtool_ts_info;
+
+struct ethtool_modinfo;
+
+struct ethtool_eee;
+
+struct ethtool_tunable;
+
+struct ethtool_link_ksettings;
+
+struct ethtool_fec_stats;
+
+struct ethtool_fecparam;
+
+struct ethtool_module_eeprom;
+
+struct ethtool_eth_phy_stats;
+
+struct ethtool_eth_mac_stats;
+
+struct ethtool_eth_ctrl_stats;
+
+struct ethtool_rmon_stats;
+
+struct ethtool_rmon_hist_range;
+
+struct ethtool_module_power_mode_params;
+
+struct ethtool_mm_state;
+
+struct ethtool_mm_cfg;
+
+struct ethtool_mm_stats;
+
+struct ethtool_ops {
+	u32 cap_link_lanes_supported: 1;
+	u32 supported_coalesce_params;
+	u32 supported_ring_params;
+	void (*get_drvinfo)(struct net_device *, struct ethtool_drvinfo *);
+	int (*get_regs_len)(struct net_device *);
+	void (*get_regs)(struct net_device *, struct ethtool_regs *, void *);
+	void (*get_wol)(struct net_device *, struct ethtool_wolinfo *);
+	int (*set_wol)(struct net_device *, struct ethtool_wolinfo *);
+	u32 (*get_msglevel)(struct net_device *);
+	void (*set_msglevel)(struct net_device *, u32);
+	int (*nway_reset)(struct net_device *);
+	u32 (*get_link)(struct net_device *);
+	int (*get_link_ext_state)(struct net_device *, struct ethtool_link_ext_state_info *);
+	void (*get_link_ext_stats)(struct net_device *, struct ethtool_link_ext_stats *);
+	int (*get_eeprom_len)(struct net_device *);
+	int (*get_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
+	int (*set_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
+	int (*get_coalesce)(struct net_device *, struct ethtool_coalesce *, struct kernel_ethtool_coalesce *, struct netlink_ext_ack *);
+	int (*set_coalesce)(struct net_device *, struct ethtool_coalesce *, struct kernel_ethtool_coalesce *, struct netlink_ext_ack *);
+	void (*get_ringparam)(struct net_device *, struct ethtool_ringparam *, struct kernel_ethtool_ringparam *, struct netlink_ext_ack *);
+	int (*set_ringparam)(struct net_device *, struct ethtool_ringparam *, struct kernel_ethtool_ringparam *, struct netlink_ext_ack *);
+	void (*get_pause_stats)(struct net_device *, struct ethtool_pause_stats *);
+	void (*get_pauseparam)(struct net_device *, struct ethtool_pauseparam *);
+	int (*set_pauseparam)(struct net_device *, struct ethtool_pauseparam *);
+	void (*self_test)(struct net_device *, struct ethtool_test *, u64 *);
+	void (*get_strings)(struct net_device *, u32, u8 *);
+	int (*set_phys_id)(struct net_device *, enum ethtool_phys_id_state);
+	void (*get_ethtool_stats)(struct net_device *, struct ethtool_stats *, u64 *);
+	int (*begin)(struct net_device *);
+	void (*complete)(struct net_device *);
+	u32 (*get_priv_flags)(struct net_device *);
+	int (*set_priv_flags)(struct net_device *, u32);
+	int (*get_sset_count)(struct net_device *, int);
+	int (*get_rxnfc)(struct net_device *, struct ethtool_rxnfc *, u32 *);
+	int (*set_rxnfc)(struct net_device *, struct ethtool_rxnfc *);
+	int (*flash_device)(struct net_device *, struct ethtool_flash *);
+	int (*reset)(struct net_device *, u32 *);
+	u32 (*get_rxfh_key_size)(struct net_device *);
+	u32 (*get_rxfh_indir_size)(struct net_device *);
+	int (*get_rxfh)(struct net_device *, u32 *, u8 *, u8 *);
+	int (*set_rxfh)(struct net_device *, const u32 *, const u8 *, const u8);
+	int (*get_rxfh_context)(struct net_device *, u32 *, u8 *, u8 *, u32);
+	int (*set_rxfh_context)(struct net_device *, const u32 *, const u8 *, const u8, u32 *, bool);
+	void (*get_channels)(struct net_device *, struct ethtool_channels *);
+	int (*set_channels)(struct net_device *, struct ethtool_channels *);
+	int (*get_dump_flag)(struct net_device *, struct ethtool_dump *);
+	int (*get_dump_data)(struct net_device *, struct ethtool_dump *, void *);
+	int (*set_dump)(struct net_device *, struct ethtool_dump *);
+	int (*get_ts_info)(struct net_device *, struct ethtool_ts_info *);
+	int (*get_module_info)(struct net_device *, struct ethtool_modinfo *);
+	int (*get_module_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
+	int (*get_eee)(struct net_device *, struct ethtool_eee *);
+	int (*set_eee)(struct net_device *, struct ethtool_eee *);
+	int (*get_tunable)(struct net_device *, const struct ethtool_tunable *, void *);
+	int (*set_tunable)(struct net_device *, const struct ethtool_tunable *, const void *);
+	int (*get_per_queue_coalesce)(struct net_device *, u32, struct ethtool_coalesce *);
+	int (*set_per_queue_coalesce)(struct net_device *, u32, struct ethtool_coalesce *);
+	int (*get_link_ksettings)(struct net_device *, struct ethtool_link_ksettings *);
+	int (*set_link_ksettings)(struct net_device *, const struct ethtool_link_ksettings *);
+	void (*get_fec_stats)(struct net_device *, struct ethtool_fec_stats *);
+	int (*get_fecparam)(struct net_device *, struct ethtool_fecparam *);
+	int (*set_fecparam)(struct net_device *, struct ethtool_fecparam *);
+	void (*get_ethtool_phy_stats)(struct net_device *, struct ethtool_stats *, u64 *);
+	int (*get_phy_tunable)(struct net_device *, const struct ethtool_tunable *, void *);
+	int (*set_phy_tunable)(struct net_device *, const struct ethtool_tunable *, const void *);
+	int (*get_module_eeprom_by_page)(struct net_device *, const struct ethtool_module_eeprom *, struct netlink_ext_ack *);
+	void (*get_eth_phy_stats)(struct net_device *, struct ethtool_eth_phy_stats *);
+	void (*get_eth_mac_stats)(struct net_device *, struct ethtool_eth_mac_stats *);
+	void (*get_eth_ctrl_stats)(struct net_device *, struct ethtool_eth_ctrl_stats *);
+	void (*get_rmon_stats)(struct net_device *, struct ethtool_rmon_stats *, const struct ethtool_rmon_hist_range **);
+	int (*get_module_power_mode)(struct net_device *, struct ethtool_module_power_mode_params *, struct netlink_ext_ack *);
+	int (*set_module_power_mode)(struct net_device *, const struct ethtool_module_power_mode_params *, struct netlink_ext_ack *);
+	int (*get_mm)(struct net_device *, struct ethtool_mm_state *);
+	int (*set_mm)(struct net_device *, struct ethtool_mm_cfg *, struct netlink_ext_ack *);
+	void (*get_mm_stats)(struct net_device *, struct ethtool_mm_stats *);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct nd_opt_hdr;
+
+struct ndisc_options;
+
+struct prefix_info;
+
+struct ndisc_ops {
+	int (*is_useropt)(u8);
+	int (*parse_options)(const struct net_device *, struct nd_opt_hdr *, struct ndisc_options *);
+	void (*update)(const struct net_device *, struct neighbour *, u32, u8, const struct ndisc_options *);
+	int (*opt_addr_space)(const struct net_device *, u8, struct neighbour *, u8 *, u8 **);
+	void (*fill_addr_option)(const struct net_device *, struct sk_buff *, u8, const u8 *);
+	void (*prefix_rcv_add_addr)(struct net *, struct net_device *, const struct prefix_info *, struct inet6_dev *, struct in6_addr *, int, u32, bool, bool, __u32, u32, bool);
+};
+
+struct header_ops {
+	int (*create)(struct sk_buff *, struct net_device *, unsigned short, const void *, const void *, unsigned int);
+	int (*parse)(const struct sk_buff *, unsigned char *);
+	int (*cache)(const struct neighbour *, struct hh_cache *, __be16);
+	void (*cache_update)(struct hh_cache *, const struct net_device *, const unsigned char *);
+	bool (*validate)(const char *, unsigned int);
+	__be16 (*parse_protocol)(const struct sk_buff *);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct ipv4_devconf {
+	void *sysctl;
+	int data[33];
+	unsigned long state[1];
+};
+
+struct in_ifaddr;
+
+struct ip_mc_list;
+
+struct in_device {
+	struct net_device *dev;
+	netdevice_tracker dev_tracker;
+	refcount_t refcnt;
+	int dead;
+	struct in_ifaddr __attribute__((btf_type_tag("rcu"))) *ifa_list;
+	struct ip_mc_list __attribute__((btf_type_tag("rcu"))) *mc_list;
+	struct ip_mc_list __attribute__((btf_type_tag("rcu"))) * __attribute__((btf_type_tag("rcu"))) *mc_hash;
+	int mc_count;
+	spinlock_t mc_tomb_lock;
+	struct ip_mc_list *mc_tomb;
+	unsigned long mr_v1_seen;
+	unsigned long mr_v2_seen;
+	unsigned long mr_maxdelay;
+	unsigned long mr_qi;
+	unsigned long mr_qri;
+	unsigned char mr_qrv;
+	unsigned char mr_gq_running;
+	u32 mr_ifc_count;
+	struct timer_list mr_gq_timer;
+	struct timer_list mr_ifc_timer;
+	struct neigh_parms *arp_parms;
+	struct ipv4_devconf cnf;
+	struct callback_head callback_head;
+};
+
+struct icmpv6_mib_device;
+
+struct icmpv6msg_mib_device;
+
+struct ipv6_devstat {
+	struct proc_dir_entry *proc_dir_entry;
+	struct ipstats_mib __attribute__((btf_type_tag("percpu"))) *ipv6;
+	struct icmpv6_mib_device *icmpv6dev;
+	struct icmpv6msg_mib_device *icmpv6msgdev;
+};
+
+struct ifmcaddr6;
+
+struct ifacaddr6;
+
+struct inet6_dev {
+	struct net_device *dev;
+	netdevice_tracker dev_tracker;
+	struct list_head addr_list;
+	struct ifmcaddr6 __attribute__((btf_type_tag("rcu"))) *mc_list;
+	struct ifmcaddr6 __attribute__((btf_type_tag("rcu"))) *mc_tomb;
+	unsigned char mc_qrv;
+	unsigned char mc_gq_running;
+	unsigned char mc_ifc_count;
+	unsigned char mc_dad_count;
+	unsigned long mc_v1_seen;
+	unsigned long mc_qi;
+	unsigned long mc_qri;
+	unsigned long mc_maxdelay;
+	struct delayed_work mc_gq_work;
+	struct delayed_work mc_ifc_work;
+	struct delayed_work mc_dad_work;
+	struct delayed_work mc_query_work;
+	struct delayed_work mc_report_work;
+	struct sk_buff_head mc_query_queue;
+	struct sk_buff_head mc_report_queue;
+	spinlock_t mc_query_lock;
+	spinlock_t mc_report_lock;
+	struct mutex mc_lock;
+	struct ifacaddr6 *ac_list;
+	rwlock_t lock;
+	refcount_t refcnt;
+	__u32 if_flags;
+	int dead;
+	u32 desync_factor;
+	struct list_head tempaddr_list;
+	struct in6_addr token;
+	struct neigh_parms *nd_parms;
+	struct ipv6_devconf cnf;
+	struct ipv6_devstat stats;
+	struct timer_list rs_timer;
+	__s32 rs_interval;
+	__u8 rs_probes;
+	unsigned long tstamp;
+	struct callback_head rcu;
+	unsigned int ra_mtu;
+};
+
+struct ip6_sf_list;
+
+struct ifmcaddr6 {
+	struct in6_addr mca_addr;
+	struct inet6_dev *idev;
+	struct ifmcaddr6 __attribute__((btf_type_tag("rcu"))) *next;
+	struct ip6_sf_list __attribute__((btf_type_tag("rcu"))) *mca_sources;
+	struct ip6_sf_list __attribute__((btf_type_tag("rcu"))) *mca_tomb;
+	unsigned int mca_sfmode;
+	unsigned char mca_crcount;
+	unsigned long mca_sfcount[2];
+	struct delayed_work mca_work;
+	unsigned int mca_flags;
+	int mca_users;
+	refcount_t mca_refcnt;
+	unsigned long mca_cstamp;
+	unsigned long mca_tstamp;
+	struct callback_head rcu;
+};
+
+struct ip6_sf_list {
+	struct ip6_sf_list __attribute__((btf_type_tag("rcu"))) *sf_next;
+	struct in6_addr sf_addr;
+	unsigned long sf_count[2];
+	unsigned char sf_gsresp;
+	unsigned char sf_oldin;
+	unsigned char sf_crcount;
+	struct callback_head rcu;
+};
+
+struct ifacaddr6 {
+	struct in6_addr aca_addr;
+	struct fib6_info *aca_rt;
+	struct ifacaddr6 *aca_next;
+	struct hlist_node aca_addr_lst;
+	int aca_users;
+	refcount_t aca_refcnt;
+	unsigned long aca_cstamp;
+	unsigned long aca_tstamp;
+	struct callback_head rcu;
+};
+
+struct icmpv6_mib_device {
+	atomic_long_t mibs[7];
+};
+
+struct icmpv6msg_mib_device {
+	atomic_long_t mibs[512];
+};
+
+struct vlan_group {
+	unsigned int nr_vlan_devs;
+	struct hlist_node hlist;
+	struct net_device **vlan_devices_arrays[16];
+};
+
+struct vlan_info {
+	struct net_device *real_dev;
+	struct vlan_group grp;
+	struct list_head vid_list;
+	unsigned int nr_vids;
+	struct callback_head rcu;
+};
+
+enum bpf_prog_type {
+	BPF_PROG_TYPE_UNSPEC = 0,
+	BPF_PROG_TYPE_SOCKET_FILTER = 1,
+	BPF_PROG_TYPE_KPROBE = 2,
+	BPF_PROG_TYPE_SCHED_CLS = 3,
+	BPF_PROG_TYPE_SCHED_ACT = 4,
+	BPF_PROG_TYPE_TRACEPOINT = 5,
+	BPF_PROG_TYPE_XDP = 6,
+	BPF_PROG_TYPE_PERF_EVENT = 7,
+	BPF_PROG_TYPE_CGROUP_SKB = 8,
+	BPF_PROG_TYPE_CGROUP_SOCK = 9,
+	BPF_PROG_TYPE_LWT_IN = 10,
+	BPF_PROG_TYPE_LWT_OUT = 11,
+	BPF_PROG_TYPE_LWT_XMIT = 12,
+	BPF_PROG_TYPE_SOCK_OPS = 13,
+	BPF_PROG_TYPE_SK_SKB = 14,
+	BPF_PROG_TYPE_CGROUP_DEVICE = 15,
+	BPF_PROG_TYPE_SK_MSG = 16,
+	BPF_PROG_TYPE_RAW_TRACEPOINT = 17,
+	BPF_PROG_TYPE_CGROUP_SOCK_ADDR = 18,
+	BPF_PROG_TYPE_LWT_SEG6LOCAL = 19,
+	BPF_PROG_TYPE_LIRC_MODE2 = 20,
+	BPF_PROG_TYPE_SK_REUSEPORT = 21,
+	BPF_PROG_TYPE_FLOW_DISSECTOR = 22,
+	BPF_PROG_TYPE_CGROUP_SYSCTL = 23,
+	BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE = 24,
+	BPF_PROG_TYPE_CGROUP_SOCKOPT = 25,
+	BPF_PROG_TYPE_TRACING = 26,
+	BPF_PROG_TYPE_STRUCT_OPS = 27,
+	BPF_PROG_TYPE_EXT = 28,
+	BPF_PROG_TYPE_LSM = 29,
+	BPF_PROG_TYPE_SK_LOOKUP = 30,
+	BPF_PROG_TYPE_SYSCALL = 31,
+	BPF_PROG_TYPE_NETFILTER = 32,
+	BPF_PROG_TYPE_FUSE = 33,
+};
+
+enum bpf_attach_type {
+	BPF_CGROUP_INET_INGRESS = 0,
+	BPF_CGROUP_INET_EGRESS = 1,
+	BPF_CGROUP_INET_SOCK_CREATE = 2,
+	BPF_CGROUP_SOCK_OPS = 3,
+	BPF_SK_SKB_STREAM_PARSER = 4,
+	BPF_SK_SKB_STREAM_VERDICT = 5,
+	BPF_CGROUP_DEVICE = 6,
+	BPF_SK_MSG_VERDICT = 7,
+	BPF_CGROUP_INET4_BIND = 8,
+	BPF_CGROUP_INET6_BIND = 9,
+	BPF_CGROUP_INET4_CONNECT = 10,
+	BPF_CGROUP_INET6_CONNECT = 11,
+	BPF_CGROUP_INET4_POST_BIND = 12,
+	BPF_CGROUP_INET6_POST_BIND = 13,
+	BPF_CGROUP_UDP4_SENDMSG = 14,
+	BPF_CGROUP_UDP6_SENDMSG = 15,
+	BPF_LIRC_MODE2 = 16,
+	BPF_FLOW_DISSECTOR = 17,
+	BPF_CGROUP_SYSCTL = 18,
+	BPF_CGROUP_UDP4_RECVMSG = 19,
+	BPF_CGROUP_UDP6_RECVMSG = 20,
+	BPF_CGROUP_GETSOCKOPT = 21,
+	BPF_CGROUP_SETSOCKOPT = 22,
+	BPF_TRACE_RAW_TP = 23,
+	BPF_TRACE_FENTRY = 24,
+	BPF_TRACE_FEXIT = 25,
+	BPF_MODIFY_RETURN = 26,
+	BPF_LSM_MAC = 27,
+	BPF_TRACE_ITER = 28,
+	BPF_CGROUP_INET4_GETPEERNAME = 29,
+	BPF_CGROUP_INET6_GETPEERNAME = 30,
+	BPF_CGROUP_INET4_GETSOCKNAME = 31,
+	BPF_CGROUP_INET6_GETSOCKNAME = 32,
+	BPF_XDP_DEVMAP = 33,
+	BPF_CGROUP_INET_SOCK_RELEASE = 34,
+	BPF_XDP_CPUMAP = 35,
+	BPF_SK_LOOKUP = 36,
+	BPF_XDP = 37,
+	BPF_SK_SKB_VERDICT = 38,
+	BPF_SK_REUSEPORT_SELECT = 39,
+	BPF_SK_REUSEPORT_SELECT_OR_MIGRATE = 40,
+	BPF_PERF_EVENT = 41,
+	BPF_TRACE_KPROBE_MULTI = 42,
+	BPF_LSM_CGROUP = 43,
+	BPF_STRUCT_OPS = 44,
+	BPF_NETFILTER = 45,
+	BPF_TCX_INGRESS = 46,
+	BPF_TCX_EGRESS = 47,
+	BPF_TRACE_UPROBE_MULTI = 48,
+	__MAX_BPF_ATTACH_TYPE = 49,
+};
+
+struct sock_filter {
+	__u16 code;
+	__u8 jt;
+	__u8 jf;
+	__u32 k;
+};
+
+struct bpf_insn {
+	__u8 code;
+	__u8 dst_reg: 4;
+	__u8 src_reg: 4;
+	__s16 off;
+	__s32 imm;
+};
+
+struct bpf_prog_stats;
+
+struct bpf_prog_aux;
+
+struct sock_fprog_kern;
+
+struct bpf_prog {
+	u16 pages;
+	u16 jited: 1;
+	u16 jit_requested: 1;
+	u16 gpl_compatible: 1;
+	u16 cb_access: 1;
+	u16 dst_needed: 1;
+	u16 blinding_requested: 1;
+	u16 blinded: 1;
+	u16 is_func: 1;
+	u16 kprobe_override: 1;
+	u16 has_callchain_buf: 1;
+	u16 enforce_expected_attach_type: 1;
+	u16 call_get_stack: 1;
+	u16 call_get_func_ip: 1;
+	u16 tstamp_type_access: 1;
+	enum bpf_prog_type type;
+	enum bpf_attach_type expected_attach_type;
+	u32 len;
+	u32 jited_len;
+	u8 tag[8];
+	struct bpf_prog_stats __attribute__((btf_type_tag("percpu"))) *stats;
+	int __attribute__((btf_type_tag("percpu"))) *active;
+	unsigned int (*bpf_func)(const void *, const struct bpf_insn *);
+	struct bpf_prog_aux *aux;
+	struct sock_fprog_kern *orig_prog;
+	u64 android_kabi_reserved1;
+	union {
+		struct {
+			struct {} __empty_insns;
+			struct sock_filter insns[0];
+		};
+		struct {
+			struct {} __empty_insnsi;
+			struct bpf_insn insnsi[0];
+		};
+	};
+};
+
+struct bpf_mprog_fp {
+	struct bpf_prog *prog;
+};
+
+struct bpf_mprog_bundle;
+
+struct bpf_mprog_entry {
+	struct bpf_mprog_fp fp_items[64];
+	struct bpf_mprog_bundle *parent;
+};
+
+struct dql {
+	unsigned int num_queued;
+	unsigned int adj_limit;
+	unsigned int last_obj_cnt;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	unsigned int limit;
+	unsigned int num_completed;
+	unsigned int prev_ovlimit;
+	unsigned int prev_num_queued;
+	unsigned int prev_last_obj_cnt;
+	unsigned int lowest_slack;
+	unsigned long slack_start_time;
+	unsigned int max_limit;
+	unsigned int min_limit;
+	unsigned int slack_hold_time;
+	long: 64;
+	long: 64;
+};
+
+struct netdev_queue {
+	struct net_device *dev;
+	netdevice_tracker dev_tracker;
+	struct Qdisc __attribute__((btf_type_tag("rcu"))) *qdisc;
+	struct Qdisc __attribute__((btf_type_tag("rcu"))) *qdisc_sleeping;
+	struct kobject kobj;
+	unsigned long tx_maxrate;
+	atomic_long_t trans_timeout;
+	struct net_device *sb_dev;
+	struct xsk_buff_pool *pool;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	spinlock_t _xmit_lock;
+	int xmit_lock_owner;
+	unsigned long trans_start;
+	unsigned long state;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct dql dql;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct qdisc_skb_head {
+	struct sk_buff *head;
+	struct sk_buff *tail;
+	__u32 qlen;
+	spinlock_t lock;
+};
+
+typedef struct {
+	local64_t v;
+} u64_stats_t;
+
+struct gnet_stats_basic_sync {
+	u64_stats_t bytes;
+	u64_stats_t packets;
+	struct u64_stats_sync syncp;
+};
+
+struct gnet_stats_queue {
+	__u32 qlen;
+	__u32 backlog;
+	__u32 drops;
+	__u32 requeues;
+	__u32 overlimits;
+};
+
+struct Qdisc_ops;
+
+struct qdisc_size_table;
+
+struct net_rate_estimator;
+
+struct Qdisc {
+	int (*enqueue)(struct sk_buff *, struct Qdisc *, struct sk_buff **);
+	struct sk_buff * (*dequeue)(struct Qdisc *);
+	unsigned int flags;
+	u32 limit;
+	const struct Qdisc_ops *ops;
+	struct qdisc_size_table __attribute__((btf_type_tag("rcu"))) *stab;
+	struct hlist_node hash;
+	u32 handle;
+	u32 parent;
+	struct netdev_queue *dev_queue;
+	struct net_rate_estimator __attribute__((btf_type_tag("rcu"))) *rate_est;
+	struct gnet_stats_basic_sync __attribute__((btf_type_tag("percpu"))) *cpu_bstats;
+	struct gnet_stats_queue __attribute__((btf_type_tag("percpu"))) *cpu_qstats;
+	int pad;
+	refcount_t refcnt;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct sk_buff_head gso_skb;
+	struct qdisc_skb_head q;
+	struct gnet_stats_basic_sync bstats;
+	struct gnet_stats_queue qstats;
+	unsigned long state;
+	unsigned long state2;
+	struct Qdisc *next_sched;
+	struct sk_buff_head skb_bad_txq;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	spinlock_t busylock;
+	spinlock_t seqlock;
+	struct callback_head rcu;
+	netdevice_tracker dev_tracker;
+	u64 android_kabi_reserved1;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long privdata[0];
+};
+
+struct xdp_dev_bulk_queue {
+	struct xdp_frame *q[16];
+	struct list_head flush_node;
+	struct net_device *dev;
+	struct net_device *dev_rx;
+	struct bpf_prog *xdp_prog;
+	unsigned int count;
+};
+
+struct xps_map;
+
+struct xps_dev_maps {
+	struct callback_head rcu;
+	unsigned int nr_ids;
+	s16 num_tc;
+	struct xps_map __attribute__((btf_type_tag("rcu"))) *attr_map[0];
+};
+
+struct xps_map {
+	unsigned int len;
+	unsigned int alloc_len;
+	struct callback_head rcu;
+	u16 queues[0];
+};
+
+struct pcpu_lstats {
+	u64_stats_t packets;
+	u64_stats_t bytes;
+	struct u64_stats_sync syncp;
+};
+
+struct pcpu_sw_netstats {
+	u64_stats_t rx_packets;
+	u64_stats_t rx_bytes;
+	u64_stats_t tx_packets;
+	u64_stats_t tx_bytes;
+	struct u64_stats_sync syncp;
+};
+
+struct pcpu_dstats {
+	u64 rx_packets;
+	u64 rx_bytes;
+	u64 rx_drops;
+	u64 tx_packets;
+	u64 tx_bytes;
+	u64 tx_drops;
+	struct u64_stats_sync syncp;
+	long: 64;
+	long: 64;
+};
+
+struct rtnl_link_ops {
+	struct list_head list;
+	const char *kind;
+	size_t priv_size;
+	struct net_device * (*alloc)(struct nlattr **, const char *, unsigned char, unsigned int, unsigned int);
+	void (*setup)(struct net_device *);
+	bool netns_refund;
+	unsigned int maxtype;
+	const struct nla_policy *policy;
+	int (*validate)(struct nlattr **, struct nlattr **, struct netlink_ext_ack *);
+	int (*newlink)(struct net *, struct net_device *, struct nlattr **, struct nlattr **, struct netlink_ext_ack *);
+	int (*changelink)(struct net_device *, struct nlattr **, struct nlattr **, struct netlink_ext_ack *);
+	void (*dellink)(struct net_device *, struct list_head *);
+	size_t (*get_size)(const struct net_device *);
+	int (*fill_info)(struct sk_buff *, const struct net_device *);
+	size_t (*get_xstats_size)(const struct net_device *);
+	int (*fill_xstats)(struct sk_buff *, const struct net_device *);
+	unsigned int (*get_num_tx_queues)();
+	unsigned int (*get_num_rx_queues)();
+	unsigned int slave_maxtype;
+	const struct nla_policy *slave_policy;
+	int (*slave_changelink)(struct net_device *, struct net_device *, struct nlattr **, struct nlattr **, struct netlink_ext_ack *);
+	size_t (*get_slave_size)(const struct net_device *, const struct net_device *);
+	int (*fill_slave_info)(struct sk_buff *, const struct net_device *, const struct net_device *);
+	struct net * (*get_link_net)(const struct net_device *);
+	size_t (*get_linkxstats_size)(const struct net_device *, int);
+	int (*fill_linkxstats)(struct sk_buff *, const struct net_device *, int *, int);
+};
+
+struct netprio_map {
+	struct callback_head rcu;
+	u32 priomap_len;
+	u32 priomap[0];
+};
+
+struct macsec_context;
+
+struct macsec_ops {
+	int (*mdo_dev_open)(struct macsec_context *);
+	int (*mdo_dev_stop)(struct macsec_context *);
+	int (*mdo_add_secy)(struct macsec_context *);
+	int (*mdo_upd_secy)(struct macsec_context *);
+	int (*mdo_del_secy)(struct macsec_context *);
+	int (*mdo_add_rxsc)(struct macsec_context *);
+	int (*mdo_upd_rxsc)(struct macsec_context *);
+	int (*mdo_del_rxsc)(struct macsec_context *);
+	int (*mdo_add_rxsa)(struct macsec_context *);
+	int (*mdo_upd_rxsa)(struct macsec_context *);
+	int (*mdo_del_rxsa)(struct macsec_context *);
+	int (*mdo_add_txsa)(struct macsec_context *);
+	int (*mdo_upd_txsa)(struct macsec_context *);
+	int (*mdo_del_txsa)(struct macsec_context *);
+	int (*mdo_get_dev_stats)(struct macsec_context *);
+	int (*mdo_get_tx_sc_stats)(struct macsec_context *);
+	int (*mdo_get_tx_sa_stats)(struct macsec_context *);
+	int (*mdo_get_rx_sc_stats)(struct macsec_context *);
+	int (*mdo_get_rx_sa_stats)(struct macsec_context *);
+	bool rx_uses_md_dst;
+};
+
+struct udp_tunnel_nic_table_info {
+	unsigned int n_entries;
+	unsigned int tunnel_types;
+};
+
+struct udp_tunnel_info;
+
+struct udp_tunnel_nic_shared;
+
+struct udp_tunnel_nic_info {
+	int (*set_port)(struct net_device *, unsigned int, unsigned int, struct udp_tunnel_info *);
+	int (*unset_port)(struct net_device *, unsigned int, unsigned int, struct udp_tunnel_info *);
+	int (*sync_table)(struct net_device *, unsigned int);
+	struct udp_tunnel_nic_shared *shared;
+	unsigned int flags;
+	struct udp_tunnel_nic_table_info tables[4];
+};
+
+struct rtnl_hw_stats64 {
+	__u64 rx_packets;
+	__u64 tx_packets;
+	__u64 rx_bytes;
+	__u64 tx_bytes;
+	__u64 rx_errors;
+	__u64 tx_errors;
+	__u64 rx_dropped;
+	__u64 tx_dropped;
+	__u64 multicast;
+};
+
+typedef enum {
+	SS_FREE = 0,
+	SS_UNCONNECTED = 1,
+	SS_CONNECTING = 2,
+	SS_CONNECTED = 3,
+	SS_DISCONNECTING = 4,
+} socket_state;
+
+struct socket_wq {
+	wait_queue_head_t wait;
+	struct fasync_struct *fasync_list;
+	unsigned long flags;
+	struct callback_head rcu;
+	long: 64;
+};
+
+struct proto_ops;
+
+struct socket {
+	socket_state state;
+	short type;
+	unsigned long flags;
+	struct file *file;
+	struct sock *sk;
+	const struct proto_ops *ops;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct socket_wq wq;
+};
+
+typedef struct {
+	size_t written;
+	size_t count;
+	union {
+		char __attribute__((btf_type_tag("user"))) *buf;
+		void *data;
+	} arg;
+	int error;
+} read_descriptor_t;
+
+typedef int (*sk_read_actor_t)(read_descriptor_t *, struct sk_buff *, unsigned int, size_t);
+
+typedef int (*skb_read_actor_t)(struct sock *, struct sk_buff *);
+
+struct proto_ops {
+	int family;
+	struct module *owner;
+	int (*release)(struct socket *);
+	int (*bind)(struct socket *, struct sockaddr *, int);
+	int (*connect)(struct socket *, struct sockaddr *, int, int);
+	int (*socketpair)(struct socket *, struct socket *);
+	int (*accept)(struct socket *, struct socket *, int, bool);
+	int (*getname)(struct socket *, struct sockaddr *, int);
+	__poll_t (*poll)(struct file *, struct socket *, struct poll_table_struct *);
+	int (*ioctl)(struct socket *, unsigned int, unsigned long);
+	int (*compat_ioctl)(struct socket *, unsigned int, unsigned long);
+	int (*gettstamp)(struct socket *, void __attribute__((btf_type_tag("user"))) *, bool, bool);
+	int (*listen)(struct socket *, int);
+	int (*shutdown)(struct socket *, int);
+	int (*setsockopt)(struct socket *, int, int, sockptr_t, unsigned int);
+	int (*getsockopt)(struct socket *, int, int, char __attribute__((btf_type_tag("user"))) *, int __attribute__((btf_type_tag("user"))) *);
+	void (*show_fdinfo)(struct seq_file *, struct socket *);
+	int (*sendmsg)(struct socket *, struct msghdr *, size_t);
+	int (*recvmsg)(struct socket *, struct msghdr *, size_t, int);
+	int (*mmap)(struct file *, struct socket *, struct vm_area_struct *);
+	ssize_t (*splice_read)(struct socket *, loff_t *, struct pipe_inode_info *, size_t, unsigned int);
+	void (*splice_eof)(struct socket *);
+	int (*set_peek_off)(struct sock *, int);
+	int (*peek_len)(struct socket *);
+	int (*read_sock)(struct sock *, read_descriptor_t *, sk_read_actor_t);
+	int (*read_skb)(struct sock *, skb_read_actor_t);
+	int (*sendmsg_locked)(struct sock *, struct msghdr *, size_t);
+	int (*set_rcvlowat)(struct sock *, int);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct request_sock;
+
+struct request_sock_ops {
+	int family;
+	unsigned int obj_size;
+	struct kmem_cache *slab;
+	char *slab_name;
+	int (*rtx_syn_ack)(const struct sock *, struct request_sock *);
+	void (*send_ack)(const struct sock *, struct sk_buff *, struct request_sock *);
+	void (*send_reset)(const struct sock *, struct sk_buff *);
+	void (*destructor)(struct request_sock *);
+	void (*syn_ack_timeout)(const struct request_sock *);
+};
+
+struct saved_syn;
+
+struct request_sock {
+	struct sock_common __req_common;
+	struct request_sock *dl_next;
+	u16 mss;
+	u8 num_retrans;
+	u8 syncookie: 1;
+	u8 num_timeout: 7;
+	u32 ts_recent;
+	struct timer_list rsk_timer;
+	const struct request_sock_ops *rsk_ops;
+	struct sock *sk;
+	struct saved_syn *saved_syn;
+	u32 secid;
+	u32 peer_secid;
+	u32 timeout;
+};
+
+struct saved_syn {
+	u32 mac_hdrlen;
+	u32 network_hdrlen;
+	u32 tcp_hdrlen;
+	u8 data[0];
+};
+
+struct timewait_sock_ops {
+	struct kmem_cache *twsk_slab;
+	char *twsk_slab_name;
+	unsigned int twsk_obj_size;
+	int (*twsk_unique)(struct sock *, struct sock *, void *);
+	void (*twsk_destructor)(struct sock *);
+};
+
+struct sk_filter {
+	refcount_t refcnt;
+	struct callback_head rcu;
+	struct bpf_prog *prog;
+};
+
+struct xfrm_mark {
+	__u32 v;
+	__u32 m;
+};
+
+typedef union {
+	__be32 a4;
+	__be32 a6[4];
+	struct in6_addr in6;
+} xfrm_address_t;
+
+struct xfrm_selector {
+	xfrm_address_t daddr;
+	xfrm_address_t saddr;
+	__be16 dport;
+	__be16 dport_mask;
+	__be16 sport;
+	__be16 sport_mask;
+	__u16 family;
+	__u8 prefixlen_d;
+	__u8 prefixlen_s;
+	__u8 proto;
+	int ifindex;
+	__kernel_uid32_t user;
+};
+
+struct xfrm_lifetime_cfg {
+	__u64 soft_byte_limit;
+	__u64 hard_byte_limit;
+	__u64 soft_packet_limit;
+	__u64 hard_packet_limit;
+	__u64 soft_add_expires_seconds;
+	__u64 hard_add_expires_seconds;
+	__u64 soft_use_expires_seconds;
+	__u64 hard_use_expires_seconds;
+};
+
+struct xfrm_lifetime_cur {
+	__u64 bytes;
+	__u64 packets;
+	__u64 add_time;
+	__u64 use_time;
+};
+
+struct xfrm_policy_walk_entry {
+	struct list_head all;
+	u8 dead;
+};
+
+struct xfrm_policy_queue {
+	struct sk_buff_head hold_queue;
+	struct timer_list hold_timer;
+	unsigned long timeout;
+};
+
+struct xfrm_id {
+	xfrm_address_t daddr;
+	__be32 spi;
+	__u8 proto;
+};
+
+struct xfrm_tmpl {
+	struct xfrm_id id;
+	xfrm_address_t saddr;
+	unsigned short encap_family;
+	u32 reqid;
+	u8 mode;
+	u8 share;
+	u8 optional;
+	u8 allalgs;
+	u32 aalgos;
+	u32 ealgos;
+	u32 calgos;
+};
+
+struct xfrm_dev_offload {
+	struct net_device *dev;
+	netdevice_tracker dev_tracker;
+	struct net_device *real_dev;
+	unsigned long offload_handle;
+	u8 dir: 2;
+	u8 type: 2;
+	u8 flags: 2;
+};
+
+struct xfrm_sec_ctx;
+
+struct xfrm_policy {
+	possible_net_t xp_net;
+	struct hlist_node bydst;
+	struct hlist_node byidx;
+	rwlock_t lock;
+	refcount_t refcnt;
+	u32 pos;
+	struct timer_list timer;
+	atomic_t genid;
+	u32 priority;
+	u32 index;
+	u32 if_id;
+	struct xfrm_mark mark;
+	struct xfrm_selector selector;
+	struct xfrm_lifetime_cfg lft;
+	struct xfrm_lifetime_cur curlft;
+	struct xfrm_policy_walk_entry walk;
+	struct xfrm_policy_queue polq;
+	bool bydst_reinsert;
+	u8 type;
+	u8 action;
+	u8 flags;
+	u8 xfrm_nr;
+	u16 family;
+	struct xfrm_sec_ctx *security;
+	struct xfrm_tmpl xfrm_vec[6];
+	struct hlist_node bydst_inexact_list;
+	struct callback_head rcu;
+	struct xfrm_dev_offload xdo;
+};
+
+struct sock_reuseport {
+	struct callback_head rcu;
+	u16 max_socks;
+	u16 num_socks;
+	u16 num_closed_socks;
+	u16 incoming_cpu;
+	unsigned int synq_overflow_ts;
+	unsigned int reuseport_id;
+	unsigned int bind_inany: 1;
+	unsigned int has_conns: 1;
+	struct bpf_prog __attribute__((btf_type_tag("rcu"))) *prog;
+	struct sock *socks[0];
+};
+
+struct fs_struct {
+	int users;
+	spinlock_t lock;
+	seqcount_spinlock_t seq;
+	int umask;
+	int in_exec;
+	struct path root;
+	struct path pwd;
+};
+
+struct ld_semaphore {
+	atomic_long_t count;
+	raw_spinlock_t wait_lock;
+	unsigned int wait_readers;
+	struct list_head read_wait;
+	struct list_head write_wait;
+};
+
+typedef unsigned int tcflag_t;
+
+typedef unsigned char cc_t;
+
+typedef unsigned int speed_t;
+
+struct ktermios {
+	tcflag_t c_iflag;
+	tcflag_t c_oflag;
+	tcflag_t c_cflag;
+	tcflag_t c_lflag;
+	cc_t c_line;
+	cc_t c_cc[19];
+	speed_t c_ispeed;
+	speed_t c_ospeed;
+};
+
+struct winsize {
+	unsigned short ws_row;
+	unsigned short ws_col;
+	unsigned short ws_xpixel;
+	unsigned short ws_ypixel;
+};
+
+struct tty_driver;
+
+struct tty_port;
+
+struct tty_operations;
+
+struct tty_ldisc;
+
+struct tty_struct {
+	struct kref kref;
+	int index;
+	struct device *dev;
+	struct tty_driver *driver;
+	struct tty_port *port;
+	const struct tty_operations *ops;
+	struct tty_ldisc *ldisc;
+	struct ld_semaphore ldisc_sem;
+	struct mutex atomic_write_lock;
+	struct mutex legacy_mutex;
+	struct mutex throttle_mutex;
+	struct rw_semaphore termios_rwsem;
+	struct mutex winsize_mutex;
+	struct ktermios termios;
+	struct ktermios termios_locked;
+	char name[64];
+	unsigned long flags;
+	int count;
+	unsigned int receive_room;
+	struct winsize winsize;
+	struct {
+		spinlock_t lock;
+		bool stopped;
+		bool tco_stopped;
+		unsigned long unused[0];
+	} flow;
+	struct {
+		struct pid *pgrp;
+		struct pid *session;
+		spinlock_t lock;
+		unsigned char pktstatus;
+		bool packet;
+		unsigned long unused[0];
+	} ctrl;
+	bool hw_stopped;
+	bool closing;
+	int flow_change;
+	struct tty_struct *link;
+	struct fasync_struct *fasync;
+	wait_queue_head_t write_wait;
+	wait_queue_head_t read_wait;
+	struct work_struct hangup_work;
+	void *disc_data;
+	void *driver_data;
+	spinlock_t files_lock;
+	int write_cnt;
+	unsigned char *write_buf;
+	struct list_head tty_files;
+	struct work_struct SAK_work;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct tty_driver {
+	struct kref kref;
+	struct cdev **cdevs;
+	struct module *owner;
+	const char *driver_name;
+	const char *name;
+	int name_base;
+	int major;
+	int minor_start;
+	unsigned int num;
+	short type;
+	short subtype;
+	struct ktermios init_termios;
+	unsigned long flags;
+	struct proc_dir_entry *proc_entry;
+	struct tty_driver *other;
+	struct tty_struct **ttys;
+	struct tty_port **ports;
+	struct ktermios **termios;
+	void *driver_state;
+	const struct tty_operations *ops;
+	struct list_head tty_drivers;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct __kfifo {
+	unsigned int in;
+	unsigned int out;
+	unsigned int mask;
+	unsigned int esize;
+	void *data;
+};
+
+struct tty_buffer {
+	union {
+		struct tty_buffer *next;
+		struct llist_node free;
+	};
+	unsigned int used;
+	unsigned int size;
+	unsigned int commit;
+	unsigned int lookahead;
+	unsigned int read;
+	bool flags;
+	long: 0;
+	u8 data[0];
+};
+
+struct tty_bufhead {
+	struct tty_buffer *head;
+	struct work_struct work;
+	struct mutex lock;
+	atomic_t priority;
+	struct tty_buffer sentinel;
+	struct llist_head free;
+	atomic_t mem_used;
+	int mem_limit;
+	struct tty_buffer *tail;
+};
+
+struct tty_port_operations;
+
+struct tty_port_client_operations;
+
+struct tty_port {
+	struct tty_bufhead buf;
+	struct tty_struct *tty;
+	struct tty_struct *itty;
+	const struct tty_port_operations *ops;
+	const struct tty_port_client_operations *client_ops;
+	spinlock_t lock;
+	int blocked_open;
+	int count;
+	wait_queue_head_t open_wait;
+	wait_queue_head_t delta_msr_wait;
+	unsigned long flags;
+	unsigned long iflags;
+	unsigned char console: 1;
+	struct mutex mutex;
+	struct mutex buf_mutex;
+	unsigned char *xmit_buf;
+	struct {
+		union {
+			struct __kfifo kfifo;
+			unsigned char *type;
+			const unsigned char *const_type;
+			char (*rectype)[0];
+			unsigned char *ptr;
+			const unsigned char *ptr_const;
+		};
+		unsigned char buf[0];
+	} xmit_fifo;
+	unsigned int close_delay;
+	unsigned int closing_wait;
+	int drain_delay;
+	struct kref kref;
+	void *client_data;
+	u64 android_kabi_reserved1;
+};
+
+struct tty_port_operations {
+	bool (*carrier_raised)(struct tty_port *);
+	void (*dtr_rts)(struct tty_port *, bool);
+	void (*shutdown)(struct tty_port *);
+	int (*activate)(struct tty_port *, struct tty_struct *);
+	void (*destruct)(struct tty_port *);
+	u64 android_kabi_reserved1;
+};
+
+struct tty_port_client_operations {
+	size_t (*receive_buf)(struct tty_port *, const u8 *, const u8 *, size_t);
+	void (*lookahead_buf)(struct tty_port *, const u8 *, const u8 *, size_t);
+	void (*write_wakeup)(struct tty_port *);
+};
+
+struct serial_icounter_struct;
+
+struct serial_struct;
+
+struct tty_operations {
+	struct tty_struct * (*lookup)(struct tty_driver *, struct file *, int);
+	int (*install)(struct tty_driver *, struct tty_struct *);
+	void (*remove)(struct tty_driver *, struct tty_struct *);
+	int (*open)(struct tty_struct *, struct file *);
+	void (*close)(struct tty_struct *, struct file *);
+	void (*shutdown)(struct tty_struct *);
+	void (*cleanup)(struct tty_struct *);
+	ssize_t (*write)(struct tty_struct *, const u8 *, size_t);
+	int (*put_char)(struct tty_struct *, u8);
+	void (*flush_chars)(struct tty_struct *);
+	unsigned int (*write_room)(struct tty_struct *);
+	unsigned int (*chars_in_buffer)(struct tty_struct *);
+	int (*ioctl)(struct tty_struct *, unsigned int, unsigned long);
+	long (*compat_ioctl)(struct tty_struct *, unsigned int, unsigned long);
+	void (*set_termios)(struct tty_struct *, const struct ktermios *);
+	void (*throttle)(struct tty_struct *);
+	void (*unthrottle)(struct tty_struct *);
+	void (*stop)(struct tty_struct *);
+	void (*start)(struct tty_struct *);
+	void (*hangup)(struct tty_struct *);
+	int (*break_ctl)(struct tty_struct *, int);
+	void (*flush_buffer)(struct tty_struct *);
+	void (*set_ldisc)(struct tty_struct *);
+	void (*wait_until_sent)(struct tty_struct *, int);
+	void (*send_xchar)(struct tty_struct *, char);
+	int (*tiocmget)(struct tty_struct *);
+	int (*tiocmset)(struct tty_struct *, unsigned int, unsigned int);
+	int (*resize)(struct tty_struct *, struct winsize *);
+	int (*get_icount)(struct tty_struct *, struct serial_icounter_struct *);
+	int (*get_serial)(struct tty_struct *, struct serial_struct *);
+	int (*set_serial)(struct tty_struct *, struct serial_struct *);
+	void (*show_fdinfo)(struct tty_struct *, struct seq_file *);
+	int (*proc_show)(struct seq_file *, void *);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct tty_ldisc_ops;
+
+struct tty_ldisc {
+	struct tty_ldisc_ops *ops;
+	struct tty_struct *tty;
+};
+
+struct tty_ldisc_ops {
+	char *name;
+	int num;
+	int (*open)(struct tty_struct *);
+	void (*close)(struct tty_struct *);
+	void (*flush_buffer)(struct tty_struct *);
+	ssize_t (*read)(struct tty_struct *, struct file *, u8 *, size_t, void **, unsigned long);
+	ssize_t (*write)(struct tty_struct *, struct file *, const u8 *, size_t);
+	int (*ioctl)(struct tty_struct *, unsigned int, unsigned long);
+	int (*compat_ioctl)(struct tty_struct *, unsigned int, unsigned long);
+	void (*set_termios)(struct tty_struct *, const struct ktermios *);
+	__poll_t (*poll)(struct tty_struct *, struct file *, struct poll_table_struct *);
+	void (*hangup)(struct tty_struct *);
+	void (*receive_buf)(struct tty_struct *, const u8 *, const u8 *, size_t);
+	void (*write_wakeup)(struct tty_struct *);
+	void (*dcd_change)(struct tty_struct *, bool);
+	size_t (*receive_buf2)(struct tty_struct *, const u8 *, const u8 *, size_t);
+	void (*lookahead_buf)(struct tty_struct *, const u8 *, const u8 *, size_t);
+	struct module *owner;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+enum {
+	Root_NFS = 255,
+	Root_CIFS = 254,
+	Root_Generic = 253,
+	Root_RAM0 = 1048576,
+};
+
+struct minix_super_block {
+	__u16 s_ninodes;
+	__u16 s_nzones;
+	__u16 s_imap_blocks;
+	__u16 s_zmap_blocks;
+	__u16 s_firstdatazone;
+	__u16 s_log_zone_size;
+	__u32 s_max_size;
+	__u16 s_magic;
+	__u16 s_state;
+	__u32 s_zones;
+};
+
+struct romfs_super_block {
+	__be32 word0;
+	__be32 word1;
+	__be32 size;
+	__be32 checksum;
+	char name[0];
+};
+
+struct cramfs_info {
+	__u32 crc;
+	__u32 edition;
+	__u32 blocks;
+	__u32 files;
+};
+
+struct cramfs_inode {
+	__u32 mode: 16;
+	__u32 uid: 16;
+	__u32 size: 24;
+	__u32 gid: 8;
+	__u32 namelen: 6;
+	__u32 offset: 26;
+};
+
+struct cramfs_super {
+	__u32 magic;
+	__u32 size;
+	__u32 flags;
+	__u32 future;
+	__u8 signature[16];
+	struct cramfs_info fsid;
+	__u8 name[16];
+	struct cramfs_inode root;
+};
+
+typedef __u16 __le16;
+
+typedef __u64 __le64;
+
+struct squashfs_super_block {
+	__le32 s_magic;
+	__le32 inodes;
+	__le32 mkfs_time;
+	__le32 block_size;
+	__le32 fragments;
+	__le16 compression;
+	__le16 block_log;
+	__le16 flags;
+	__le16 no_ids;
+	__le16 s_major;
+	__le16 s_minor;
+	__le64 root_inode;
+	__le64 bytes_used;
+	__le64 id_table_start;
+	__le64 xattr_id_table_start;
+	__le64 inode_table_start;
+	__le64 directory_table_start;
+	__le64 fragment_table_start;
+	__le64 lookup_table_start;
+};
+
+typedef int (*decompress_fn)(unsigned char *, long, long (*)(void *, unsigned long), long (*)(void *, unsigned long), unsigned char *, long *, void (*)(char *));
+
+struct subprocess_info {
+	struct work_struct work;
+	struct completion *complete;
+	const char *path;
+	char **argv;
+	char **envp;
+	int wait;
+	int retval;
+	int (*init)(struct subprocess_info *, struct cred *);
+	void (*cleanup)(struct subprocess_info *);
+	void *data;
+};
+
+typedef u64 async_cookie_t;
+
+struct async_domain {
+	struct list_head pending;
+	unsigned int registered: 1;
+};
+
+enum state {
+	Start = 0,
+	Collect = 1,
+	GotHeader = 2,
+	SkipIt = 3,
+	GotName = 4,
+	CopyFile = 5,
+	GotSymlink = 6,
+	Reset = 7,
+};
+
+struct hash {
+	int ino;
+	int minor;
+	int major;
+	umode_t mode;
+	struct hash *next;
+	char name[4098];
+};
+
+enum umh_disable_depth {
+	UMH_ENABLED = 0,
+	UMH_FREEZING = 1,
+	UMH_DISABLED = 2,
+};
+
+struct dir_entry {
+	struct list_head list;
+	time64_t mtime;
+	char name[0];
+};
+
+typedef void (*async_func_t)(void *, async_cookie_t);
+
+typedef long (*sys_call_ptr_t)(const struct pt_regs *);
+
+struct io_bitmap {
+	u64 sequence;
+	refcount_t refcnt;
+	unsigned int max;
+	unsigned long bitmap[1024];
+};
+
+struct irqentry_state {
+	union {
+		bool exit_rcu;
+		bool lockdep;
+	};
+};
+
+typedef struct irqentry_state irqentry_state_t;
+
+struct vm_special_mapping {
+	const char *name;
+	struct page **pages;
+	vm_fault_t (*fault)(const struct vm_special_mapping *, struct vm_area_struct *, struct vm_fault *);
+	int (*mremap)(const struct vm_special_mapping *, struct vm_area_struct *);
+};
+
+struct timens_offsets {
+	struct timespec64 monotonic;
+	struct timespec64 boottime;
+};
+
+struct time_namespace {
+	struct user_namespace *user_ns;
+	struct ucounts *ucounts;
+	struct ns_common ns;
+	struct timens_offsets offsets;
+	struct page *vvar_page;
+	bool frozen_offsets;
+};
+
+enum vm_fault_reason {
+	VM_FAULT_OOM = 1,
+	VM_FAULT_SIGBUS = 2,
+	VM_FAULT_MAJOR = 4,
+	VM_FAULT_HWPOISON = 16,
+	VM_FAULT_HWPOISON_LARGE = 32,
+	VM_FAULT_SIGSEGV = 64,
+	VM_FAULT_NOPAGE = 256,
+	VM_FAULT_LOCKED = 512,
+	VM_FAULT_RETRY = 1024,
+	VM_FAULT_FALLBACK = 2048,
+	VM_FAULT_DONE_COW = 4096,
+	VM_FAULT_NEEDDSYNC = 8192,
+	VM_FAULT_COMPLETED = 16384,
+	VM_FAULT_HINDEX_MASK = 983040,
+};
+
+enum vdso_clock_mode {
+	VDSO_CLOCKMODE_NONE = 0,
+	VDSO_CLOCKMODE_TSC = 1,
+	VDSO_CLOCKMODE_PVCLOCK = 2,
+	VDSO_CLOCKMODE_HVCLOCK = 3,
+	VDSO_CLOCKMODE_MAX = 4,
+	VDSO_CLOCKMODE_TIMENS = 2147483647,
+};
+
+struct vdso_timestamp {
+	u64 sec;
+	u64 nsec;
+};
+
+struct timens_offset {
+	s64 sec;
+	u64 nsec;
+};
+
+struct arch_vdso_data {};
+
+struct vdso_data {
+	u32 seq;
+	s32 clock_mode;
+	u64 cycle_last;
+	u64 mask;
+	u32 mult;
+	u32 shift;
+	union {
+		struct vdso_timestamp basetime[12];
+		struct timens_offset offset[12];
+	};
+	s32 tz_minuteswest;
+	s32 tz_dsttime;
+	u32 hrtimer_res;
+	u32 __unused;
+	struct arch_vdso_data arch_data;
+};
+
+struct alt_instr {
+	s32 instr_offset;
+	s32 repl_offset;
+	union {
+		struct {
+			u32 cpuid: 16;
+			u32 flags: 16;
+		};
+		u32 ft_flags;
+	};
+	u8 instrlen;
+	u8 replacementlen;
+} __attribute__((packed));
+
+struct maple_enode;
+
+struct maple_alloc;
+
+struct ma_state {
+	struct maple_tree *tree;
+	unsigned long index;
+	unsigned long last;
+	struct maple_enode *node;
+	unsigned long min;
+	unsigned long max;
+	struct maple_alloc *alloc;
+	unsigned char depth;
+	unsigned char offset;
+	unsigned char mas_flags;
+};
+
+struct vma_iterator {
+	struct ma_state mas;
+};
+
+struct maple_alloc {
+	unsigned long total;
+	unsigned char node_count;
+	unsigned int request_count;
+	struct maple_alloc *slot[30];
+};
+
+struct pvclock_vcpu_time_info {
+	u32 version;
+	u32 pad0;
+	u64 tsc_timestamp;
+	u64 system_time;
+	u32 tsc_to_system_mul;
+	s8 tsc_shift;
+	u8 flags;
+	u8 pad[2];
+};
+
+struct pvclock_vsyscall_time_info {
+	struct pvclock_vcpu_time_info pvti;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct vdso_exception_table_entry {
+	int insn;
+	int fixup;
+};
+
+typedef void (*btf_trace_emulate_vsyscall)(void *, int);
+
+enum {
+	EMULATE = 0,
+	XONLY = 1,
+	NONE = 2,
+};
+
+enum x86_pf_error_code {
+	X86_PF_PROT = 1,
+	X86_PF_WRITE = 2,
+	X86_PF_USER = 4,
+	X86_PF_RSVD = 8,
+	X86_PF_INSTR = 16,
+	X86_PF_PK = 32,
+	X86_PF_SHSTK = 64,
+	X86_PF_SGX = 32768,
+};
+
+enum fixed_addresses {
+	VSYSCALL_PAGE = 511,
+	FIX_DBGP_BASE = 512,
+	FIX_EARLYCON_MEM_BASE = 513,
+	FIX_APIC_BASE = 514,
+	FIX_IO_APIC_BASE_0 = 515,
+	FIX_IO_APIC_BASE_END = 642,
+	__end_of_permanent_fixed_addresses = 643,
+	FIX_BTMAP_END = 1024,
+	FIX_BTMAP_BEGIN = 1535,
+	__end_of_fixed_addresses = 1536,
+};
+
+enum syscall_work_bit {
+	SYSCALL_WORK_BIT_SECCOMP = 0,
+	SYSCALL_WORK_BIT_SYSCALL_TRACEPOINT = 1,
+	SYSCALL_WORK_BIT_SYSCALL_TRACE = 2,
+	SYSCALL_WORK_BIT_SYSCALL_EMU = 3,
+	SYSCALL_WORK_BIT_SYSCALL_AUDIT = 4,
+	SYSCALL_WORK_BIT_SYSCALL_USER_DISPATCH = 5,
+	SYSCALL_WORK_BIT_SYSCALL_EXIT_TRAP = 6,
+};
+
+typedef struct {
+	pgd_t pgd;
+} p4d_t;
+
+struct trace_event_raw_emulate_vsyscall {
+	struct trace_entry ent;
+	int nr;
+	char __data[0];
+};
+
+struct seccomp_data {
+	int nr;
+	__u32 arch;
+	__u64 instruction_pointer;
+	__u64 args[6];
+};
+
+struct trace_event_data_offsets_emulate_vsyscall {};
+
+struct perf_guest_switch_msr {
+	unsigned int msr;
+	u64 host;
+	u64 guest;
+};
+
+struct event_constraint;
+
+struct debug_store;
+
+struct er_account;
+
+struct intel_shared_regs;
+
+struct intel_excl_cntrs;
+
+struct amd_nb;
+
+struct cpu_hw_events {
+	struct perf_event *events[64];
+	unsigned long active_mask[1];
+	unsigned long dirty[1];
+	int enabled;
+	int n_events;
+	int n_added;
+	int n_txn;
+	int n_txn_pair;
+	int n_txn_metric;
+	int assign[64];
+	u64 tags[64];
+	struct perf_event *event_list[64];
+	struct event_constraint *event_constraint[64];
+	int n_excl;
+	unsigned int txn_flags;
+	int is_fake;
+	struct debug_store *ds;
+	void *ds_pebs_vaddr;
+	void *ds_bts_vaddr;
+	u64 pebs_enabled;
+	int n_pebs;
+	int n_large_pebs;
+	int n_pebs_via_pt;
+	int pebs_output;
+	u64 pebs_data_cfg;
+	u64 active_pebs_data_cfg;
+	int pebs_record_size;
+	u64 fixed_ctrl_val;
+	u64 active_fixed_ctrl_val;
+	int lbr_users;
+	int lbr_pebs_users;
+	struct perf_branch_stack lbr_stack;
+	struct perf_branch_entry lbr_entries[32];
+	union {
+		struct er_account *lbr_sel;
+		struct er_account *lbr_ctl;
+	};
+	u64 br_sel;
+	void *last_task_ctx;
+	int last_log_id;
+	int lbr_select;
+	void *lbr_xsave;
+	u64 intel_ctrl_guest_mask;
+	u64 intel_ctrl_host_mask;
+	struct perf_guest_switch_msr guest_switch_msrs[64];
+	u64 intel_cp_status;
+	struct intel_shared_regs *shared_regs;
+	struct event_constraint *constraint_list;
+	struct intel_excl_cntrs *excl_cntrs;
+	int excl_thread_id;
+	u64 tfa_shadow;
+	int n_metric;
+	struct amd_nb *amd_nb;
+	int brs_active;
+	u64 perf_ctr_virt_mask;
+	int n_pair;
+	void *kfree_on_online[2];
+	struct pmu *pmu;
+};
+
+struct event_constraint {
+	union {
+		unsigned long idxmsk[1];
+		u64 idxmsk64;
+	};
+	u64 code;
+	u64 cmask;
+	int weight;
+	int overlap;
+	int flags;
+	unsigned int size;
+};
+
+struct debug_store {
+	u64 bts_buffer_base;
+	u64 bts_index;
+	u64 bts_absolute_maximum;
+	u64 bts_interrupt_threshold;
+	u64 pebs_buffer_base;
+	u64 pebs_index;
+	u64 pebs_absolute_maximum;
+	u64 pebs_interrupt_threshold;
+	u64 pebs_event_reset[48];
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct er_account {
+	raw_spinlock_t lock;
+	u64 config;
+	u64 reg;
+	atomic_t ref;
+};
+
+struct intel_shared_regs {
+	struct er_account regs[7];
+	int refcnt;
+	unsigned int core_id;
+};
+
+enum intel_excl_state_type {
+	INTEL_EXCL_UNUSED = 0,
+	INTEL_EXCL_SHARED = 1,
+	INTEL_EXCL_EXCLUSIVE = 2,
+};
+
+struct intel_excl_states {
+	enum intel_excl_state_type state[64];
+	bool sched_started;
+};
+
+struct intel_excl_cntrs {
+	raw_spinlock_t lock;
+	struct intel_excl_states states[2];
+	union {
+		u16 has_exclusive[2];
+		u32 exclusive_present;
+	};
+	int refcnt;
+	unsigned int core_id;
+};
+
+struct amd_nb {
+	int nb_id;
+	int refcnt;
+	struct perf_event *owners[64];
+	struct event_constraint event_constraints[64];
+};
+
+union perf_capabilities {
+	struct {
+		u64 lbr_format: 6;
+		u64 pebs_trap: 1;
+		u64 pebs_arch_reg: 1;
+		u64 pebs_format: 4;
+		u64 smm_freeze: 1;
+		u64 full_width_write: 1;
+		u64 pebs_baseline: 1;
+		u64 perf_metrics: 1;
+		u64 pebs_output_pt_available: 1;
+		u64 pebs_timing_info: 1;
+		u64 anythread_deprecated: 1;
+	};
+	u64 capabilities;
+};
+
+struct x86_pmu_quirk;
+
+struct extra_reg;
+
+struct x86_hybrid_pmu;
+
+struct x86_pmu {
+	const char *name;
+	int version;
+	int (*handle_irq)(struct pt_regs *);
+	void (*disable_all)();
+	void (*enable_all)(int);
+	void (*enable)(struct perf_event *);
+	void (*disable)(struct perf_event *);
+	void (*assign)(struct perf_event *, int);
+	void (*add)(struct perf_event *);
+	void (*del)(struct perf_event *);
+	void (*read)(struct perf_event *);
+	int (*set_period)(struct perf_event *);
+	u64 (*update)(struct perf_event *);
+	int (*hw_config)(struct perf_event *);
+	int (*schedule_events)(struct cpu_hw_events *, int, int *);
+	unsigned int eventsel;
+	unsigned int perfctr;
+	int (*addr_offset)(int, bool);
+	int (*rdpmc_index)(int);
+	u64 (*event_map)(int);
+	int max_events;
+	int num_counters;
+	int num_counters_fixed;
+	int cntval_bits;
+	u64 cntval_mask;
+	union {
+		unsigned long events_maskl;
+		unsigned long events_mask[1];
+	};
+	int events_mask_len;
+	int apic;
+	u64 max_period;
+	struct event_constraint * (*get_event_constraints)(struct cpu_hw_events *, int, struct perf_event *);
+	void (*put_event_constraints)(struct cpu_hw_events *, struct perf_event *);
+	void (*start_scheduling)(struct cpu_hw_events *);
+	void (*commit_scheduling)(struct cpu_hw_events *, int, int);
+	void (*stop_scheduling)(struct cpu_hw_events *);
+	struct event_constraint *event_constraints;
+	struct x86_pmu_quirk *quirks;
+	void (*limit_period)(struct perf_event *, s64 *);
+	unsigned int late_ack: 1;
+	unsigned int mid_ack: 1;
+	unsigned int enabled_ack: 1;
+	int attr_rdpmc_broken;
+	int attr_rdpmc;
+	struct attribute **format_attrs;
+	ssize_t (*events_sysfs_show)(char *, u64);
+	const struct attribute_group **attr_update;
+	unsigned long attr_freeze_on_smi;
+	int (*cpu_prepare)(int);
+	void (*cpu_starting)(int);
+	void (*cpu_dying)(int);
+	void (*cpu_dead)(int);
+	void (*check_microcode)();
+	void (*sched_task)(struct perf_event_pmu_context *, bool);
+	u64 intel_ctrl;
+	union perf_capabilities intel_cap;
+	unsigned int bts: 1;
+	unsigned int bts_active: 1;
+	unsigned int pebs: 1;
+	unsigned int pebs_active: 1;
+	unsigned int pebs_broken: 1;
+	unsigned int pebs_prec_dist: 1;
+	unsigned int pebs_no_tlb: 1;
+	unsigned int pebs_no_isolation: 1;
+	unsigned int pebs_block: 1;
+	unsigned int pebs_ept: 1;
+	int pebs_record_size;
+	int pebs_buffer_size;
+	int max_pebs_events;
+	void (*drain_pebs)(struct pt_regs *, struct perf_sample_data *);
+	struct event_constraint *pebs_constraints;
+	void (*pebs_aliases)(struct perf_event *);
+	u64 (*pebs_latency_data)(struct perf_event *, u64);
+	unsigned long large_pebs_flags;
+	u64 rtm_abort_event;
+	u64 pebs_capable;
+	unsigned int lbr_tos;
+	unsigned int lbr_from;
+	unsigned int lbr_to;
+	unsigned int lbr_info;
+	unsigned int lbr_nr;
+	union {
+		u64 lbr_sel_mask;
+		u64 lbr_ctl_mask;
+	};
+	union {
+		const int *lbr_sel_map;
+		int *lbr_ctl_map;
+	};
+	bool lbr_double_abort;
+	bool lbr_pt_coexist;
+	unsigned int lbr_has_info: 1;
+	unsigned int lbr_has_tsx: 1;
+	unsigned int lbr_from_flags: 1;
+	unsigned int lbr_to_cycles: 1;
+	unsigned int lbr_depth_mask: 8;
+	unsigned int lbr_deep_c_reset: 1;
+	unsigned int lbr_lip: 1;
+	unsigned int lbr_cpl: 1;
+	unsigned int lbr_filter: 1;
+	unsigned int lbr_call_stack: 1;
+	unsigned int lbr_mispred: 1;
+	unsigned int lbr_timed_lbr: 1;
+	unsigned int lbr_br_type: 1;
+	void (*lbr_reset)();
+	void (*lbr_read)(struct cpu_hw_events *);
+	void (*lbr_save)(void *);
+	void (*lbr_restore)(void *);
+	atomic_t lbr_exclusive[3];
+	int num_topdown_events;
+	void (*swap_task_ctx)(struct perf_event_pmu_context *, struct perf_event_pmu_context *);
+	unsigned int amd_nb_constraints: 1;
+	u64 perf_ctr_pair_en;
+	struct extra_reg *extra_regs;
+	unsigned int flags;
+	struct perf_guest_switch_msr * (*guest_get_msrs)(int *, void *);
+	int (*check_period)(struct perf_event *, u64);
+	int (*aux_output_match)(struct perf_event *);
+	void (*filter)(struct pmu *, int, bool *);
+	int num_hybrid_pmus;
+	struct x86_hybrid_pmu *hybrid_pmu;
+	u8 (*get_hybrid_cpu_type)();
+};
+
+struct x86_pmu_quirk {
+	struct x86_pmu_quirk *next;
+	void (*func)();
+};
+
+struct extra_reg {
+	unsigned int event;
+	unsigned int msr;
+	u64 config_mask;
+	u64 valid_mask;
+	int idx;
+	bool extra_msr_access;
+};
+
+struct x86_hybrid_pmu {
+	struct pmu pmu;
+	const char *name;
+	u8 cpu_type;
+	cpumask_t supported_cpus;
+	union perf_capabilities intel_cap;
+	u64 intel_ctrl;
+	int max_pebs_events;
+	int num_counters;
+	int num_counters_fixed;
+	struct event_constraint unconstrained;
+	u64 hw_cache_event_ids[42];
+	u64 hw_cache_extra_regs[42];
+	struct event_constraint *event_constraints;
+	struct event_constraint *pebs_constraints;
+	struct extra_reg *extra_regs;
+	unsigned int late_ack: 1;
+	unsigned int mid_ack: 1;
+	unsigned int enabled_ack: 1;
+	u64 pebs_data_source[16];
+};
+
+typedef int (*nmi_handler_t)(unsigned int, struct pt_regs *);
+
+struct nmiaction {
+	struct list_head list;
+	nmi_handler_t handler;
+	u64 max_duration;
+	unsigned long flags;
+	const char *name;
+};
+
+struct device_attribute {
+	struct attribute attr;
+	ssize_t (*show)(struct device *, struct device_attribute *, char *);
+	ssize_t (*store)(struct device *, struct device_attribute *, const char *, size_t);
+};
+
+struct perf_pmu_events_attr {
+	struct device_attribute attr;
+	u64 id;
+	const char *event_str;
+};
+
+enum {
+	x86_lbr_exclusive_lbr = 0,
+	x86_lbr_exclusive_bts = 1,
+	x86_lbr_exclusive_pt = 2,
+	x86_lbr_exclusive_max = 3,
+};
+
+enum perf_type_id {
+	PERF_TYPE_HARDWARE = 0,
+	PERF_TYPE_SOFTWARE = 1,
+	PERF_TYPE_TRACEPOINT = 2,
+	PERF_TYPE_HW_CACHE = 3,
+	PERF_TYPE_RAW = 4,
+	PERF_TYPE_BREAKPOINT = 5,
+	PERF_TYPE_MAX = 6,
+};
+
+enum perf_branch_sample_type {
+	PERF_SAMPLE_BRANCH_USER = 1,
+	PERF_SAMPLE_BRANCH_KERNEL = 2,
+	PERF_SAMPLE_BRANCH_HV = 4,
+	PERF_SAMPLE_BRANCH_ANY = 8,
+	PERF_SAMPLE_BRANCH_ANY_CALL = 16,
+	PERF_SAMPLE_BRANCH_ANY_RETURN = 32,
+	PERF_SAMPLE_BRANCH_IND_CALL = 64,
+	PERF_SAMPLE_BRANCH_ABORT_TX = 128,
+	PERF_SAMPLE_BRANCH_IN_TX = 256,
+	PERF_SAMPLE_BRANCH_NO_TX = 512,
+	PERF_SAMPLE_BRANCH_COND = 1024,
+	PERF_SAMPLE_BRANCH_CALL_STACK = 2048,
+	PERF_SAMPLE_BRANCH_IND_JUMP = 4096,
+	PERF_SAMPLE_BRANCH_CALL = 8192,
+	PERF_SAMPLE_BRANCH_NO_FLAGS = 16384,
+	PERF_SAMPLE_BRANCH_NO_CYCLES = 32768,
+	PERF_SAMPLE_BRANCH_TYPE_SAVE = 65536,
+	PERF_SAMPLE_BRANCH_HW_INDEX = 131072,
+	PERF_SAMPLE_BRANCH_PRIV_SAVE = 262144,
+	PERF_SAMPLE_BRANCH_MAX = 524288,
+};
+
+enum perf_event_x86_regs {
+	PERF_REG_X86_AX = 0,
+	PERF_REG_X86_BX = 1,
+	PERF_REG_X86_CX = 2,
+	PERF_REG_X86_DX = 3,
+	PERF_REG_X86_SI = 4,
+	PERF_REG_X86_DI = 5,
+	PERF_REG_X86_BP = 6,
+	PERF_REG_X86_SP = 7,
+	PERF_REG_X86_IP = 8,
+	PERF_REG_X86_FLAGS = 9,
+	PERF_REG_X86_CS = 10,
+	PERF_REG_X86_SS = 11,
+	PERF_REG_X86_DS = 12,
+	PERF_REG_X86_ES = 13,
+	PERF_REG_X86_FS = 14,
+	PERF_REG_X86_GS = 15,
+	PERF_REG_X86_R8 = 16,
+	PERF_REG_X86_R9 = 17,
+	PERF_REG_X86_R10 = 18,
+	PERF_REG_X86_R11 = 19,
+	PERF_REG_X86_R12 = 20,
+	PERF_REG_X86_R13 = 21,
+	PERF_REG_X86_R14 = 22,
+	PERF_REG_X86_R15 = 23,
+	PERF_REG_X86_32_MAX = 16,
+	PERF_REG_X86_64_MAX = 24,
+	PERF_REG_X86_XMM0 = 32,
+	PERF_REG_X86_XMM1 = 34,
+	PERF_REG_X86_XMM2 = 36,
+	PERF_REG_X86_XMM3 = 38,
+	PERF_REG_X86_XMM4 = 40,
+	PERF_REG_X86_XMM5 = 42,
+	PERF_REG_X86_XMM6 = 44,
+	PERF_REG_X86_XMM7 = 46,
+	PERF_REG_X86_XMM8 = 48,
+	PERF_REG_X86_XMM9 = 50,
+	PERF_REG_X86_XMM10 = 52,
+	PERF_REG_X86_XMM11 = 54,
+	PERF_REG_X86_XMM12 = 56,
+	PERF_REG_X86_XMM13 = 58,
+	PERF_REG_X86_XMM14 = 60,
+	PERF_REG_X86_XMM15 = 62,
+	PERF_REG_X86_XMM_MAX = 64,
+};
+
+enum {
+	PERF_X86_EVENT_PEBS_LDLAT = 1,
+	PERF_X86_EVENT_PEBS_ST = 2,
+	PERF_X86_EVENT_PEBS_ST_HSW = 4,
+	PERF_X86_EVENT_PEBS_LD_HSW = 8,
+	PERF_X86_EVENT_PEBS_NA_HSW = 16,
+	PERF_X86_EVENT_EXCL = 32,
+	PERF_X86_EVENT_DYNAMIC = 64,
+	PERF_X86_EVENT_EXCL_ACCT = 256,
+	PERF_X86_EVENT_AUTO_RELOAD = 512,
+	PERF_X86_EVENT_LARGE_PEBS = 1024,
+	PERF_X86_EVENT_PEBS_VIA_PT = 2048,
+	PERF_X86_EVENT_PAIR = 4096,
+	PERF_X86_EVENT_LBR_SELECT = 8192,
+	PERF_X86_EVENT_TOPDOWN = 16384,
+	PERF_X86_EVENT_PEBS_STLAT = 32768,
+	PERF_X86_EVENT_AMD_BRS = 65536,
+	PERF_X86_EVENT_PEBS_LAT_HYBRID = 131072,
+};
+
+enum stack_type {
+	STACK_TYPE_UNKNOWN = 0,
+	STACK_TYPE_TASK = 1,
+	STACK_TYPE_IRQ = 2,
+	STACK_TYPE_SOFTIRQ = 3,
+	STACK_TYPE_ENTRY = 4,
+	STACK_TYPE_EXCEPTION = 5,
+	STACK_TYPE_EXCEPTION_LAST = 10,
+};
+
+enum perf_hw_cache_id {
+	PERF_COUNT_HW_CACHE_L1D = 0,
+	PERF_COUNT_HW_CACHE_L1I = 1,
+	PERF_COUNT_HW_CACHE_LL = 2,
+	PERF_COUNT_HW_CACHE_DTLB = 3,
+	PERF_COUNT_HW_CACHE_ITLB = 4,
+	PERF_COUNT_HW_CACHE_BPU = 5,
+	PERF_COUNT_HW_CACHE_NODE = 6,
+	PERF_COUNT_HW_CACHE_MAX = 7,
+};
+
+enum perf_hw_cache_op_id {
+	PERF_COUNT_HW_CACHE_OP_READ = 0,
+	PERF_COUNT_HW_CACHE_OP_WRITE = 1,
+	PERF_COUNT_HW_CACHE_OP_PREFETCH = 2,
+	PERF_COUNT_HW_CACHE_OP_MAX = 3,
+};
+
+enum perf_hw_cache_op_result_id {
+	PERF_COUNT_HW_CACHE_RESULT_ACCESS = 0,
+	PERF_COUNT_HW_CACHE_RESULT_MISS = 1,
+	PERF_COUNT_HW_CACHE_RESULT_MAX = 2,
+};
+
+enum perf_event_sample_format {
+	PERF_SAMPLE_IP = 1,
+	PERF_SAMPLE_TID = 2,
+	PERF_SAMPLE_TIME = 4,
+	PERF_SAMPLE_ADDR = 8,
+	PERF_SAMPLE_READ = 16,
+	PERF_SAMPLE_CALLCHAIN = 32,
+	PERF_SAMPLE_ID = 64,
+	PERF_SAMPLE_CPU = 128,
+	PERF_SAMPLE_PERIOD = 256,
+	PERF_SAMPLE_STREAM_ID = 512,
+	PERF_SAMPLE_RAW = 1024,
+	PERF_SAMPLE_BRANCH_STACK = 2048,
+	PERF_SAMPLE_REGS_USER = 4096,
+	PERF_SAMPLE_STACK_USER = 8192,
+	PERF_SAMPLE_WEIGHT = 16384,
+	PERF_SAMPLE_DATA_SRC = 32768,
+	PERF_SAMPLE_IDENTIFIER = 65536,
+	PERF_SAMPLE_TRANSACTION = 131072,
+	PERF_SAMPLE_REGS_INTR = 262144,
+	PERF_SAMPLE_PHYS_ADDR = 524288,
+	PERF_SAMPLE_AUX = 1048576,
+	PERF_SAMPLE_CGROUP = 2097152,
+	PERF_SAMPLE_DATA_PAGE_SIZE = 4194304,
+	PERF_SAMPLE_CODE_PAGE_SIZE = 8388608,
+	PERF_SAMPLE_WEIGHT_STRUCT = 16777216,
+	PERF_SAMPLE_MAX = 33554432,
+};
+
+enum {
+	NMI_LOCAL = 0,
+	NMI_UNKNOWN = 1,
+	NMI_SERR = 2,
+	NMI_IO_CHECK = 3,
+	NMI_MAX = 4,
+};
+
+enum hybrid_pmu_type {
+	hybrid_big = 64,
+	hybrid_small = 32,
+	hybrid_big_small = 96,
+};
+
+enum {
+	X86_PERF_KFREE_SHARED = 0,
+	X86_PERF_KFREE_EXCL = 1,
+	X86_PERF_KFREE_MAX = 2,
+};
+
+enum extra_reg_type {
+	EXTRA_REG_NONE = -1,
+	EXTRA_REG_RSP_0 = 0,
+	EXTRA_REG_RSP_1 = 1,
+	EXTRA_REG_LBR = 2,
+	EXTRA_REG_LDLAT = 3,
+	EXTRA_REG_FE = 4,
+	EXTRA_REG_SNOOP_0 = 5,
+	EXTRA_REG_SNOOP_1 = 6,
+	EXTRA_REG_MAX = 7,
+};
+
+struct perf_pmu_events_ht_attr {
+	struct device_attribute attr;
+	u64 id;
+	const char *event_str_ht;
+	const char *event_str_noht;
+};
+
+struct perf_pmu_events_hybrid_attr {
+	struct device_attribute attr;
+	u64 id;
+	const char *event_str;
+	u64 pmu_type;
+};
+
+struct stack_frame {
+	struct stack_frame *next_frame;
+	unsigned long return_address;
+};
+
+struct perf_guest_info_callbacks {
+	unsigned int (*state)();
+	unsigned long (*get_ip)();
+	unsigned int (*handle_intel_pt_intr)();
+};
+
+struct sched_state {
+	int weight;
+	int event;
+	int counter;
+	int unassigned;
+	int nr_gp;
+	u64 used;
+};
+
+struct perf_sched {
+	int max_weight;
+	int max_events;
+	int max_gp;
+	int saved_states;
+	struct event_constraint **constraints;
+	struct sched_state state;
+	struct sched_state saved[2];
+};
+
+struct cyc2ns_data {
+	u32 cyc2ns_mul;
+	u32 cyc2ns_shift;
+	u64 cyc2ns_offset;
+};
+
+struct perf_callchain_entry_ctx {
+	struct perf_callchain_entry *entry;
+	u32 max_stack;
+	u32 nr;
+	short contexts;
+	bool contexts_maxed;
+};
+
+struct stack_info {
+	enum stack_type type;
+	unsigned long *begin;
+	unsigned long *end;
+	unsigned long *next_sp;
+};
+
+struct unwind_state {
+	struct stack_info stack_info;
+	unsigned long stack_mask;
+	struct task_struct *task;
+	int graph_idx;
+	struct llist_node *kr_cur;
+	bool error;
+	bool got_irq;
+	unsigned long *bp;
+	unsigned long *orig_sp;
+	unsigned long ip;
+	unsigned long *next_bp;
+	struct pt_regs *regs;
+};
+
+struct stack_frame_ia32 {
+	u32 next_frame;
+	u32 return_address;
+};
+
+typedef void (*smp_call_func_t)(void *);
+
+typedef bool (*smp_cond_func_t)(int, void *);
+
+struct perf_event_mmap_page {
+	__u32 version;
+	__u32 compat_version;
+	__u32 lock;
+	__u32 index;
+	__s64 offset;
+	__u64 time_enabled;
+	__u64 time_running;
+	union {
+		__u64 capabilities;
+		struct {
+			__u64 cap_bit0: 1;
+			__u64 cap_bit0_is_deprecated: 1;
+			__u64 cap_user_rdpmc: 1;
+			__u64 cap_user_time: 1;
+			__u64 cap_user_time_zero: 1;
+			__u64 cap_user_time_short: 1;
+			__u64 cap_____res: 58;
+		};
+	};
+	__u16 pmc_width;
+	__u16 time_shift;
+	__u32 time_mult;
+	__u64 time_offset;
+	__u64 time_zero;
+	__u32 size;
+	__u32 __reserved_1;
+	__u64 time_cycles;
+	__u64 time_mask;
+	__u8 __reserved[928];
+	__u64 data_head;
+	__u64 data_tail;
+	__u64 data_offset;
+	__u64 data_size;
+	__u64 aux_head;
+	__u64 aux_tail;
+	__u64 aux_offset;
+	__u64 aux_size;
+};
+
+struct x86_pmu_capability {
+	int version;
+	int num_counters_gp;
+	int num_counters_fixed;
+	int bit_width_gp;
+	int bit_width_fixed;
+	unsigned int events_mask;
+	int events_mask_len;
+	unsigned int pebs_ept: 1;
+};
+
+struct perf_msr {
+	u64 msr;
+	struct attribute_group *grp;
+	bool (*test)(int, void *);
+	bool no_check;
+	u64 mask;
+};
+
+enum {
+	PERF_BR_UNKNOWN = 0,
+	PERF_BR_COND = 1,
+	PERF_BR_UNCOND = 2,
+	PERF_BR_IND = 3,
+	PERF_BR_CALL = 4,
+	PERF_BR_IND_CALL = 5,
+	PERF_BR_RET = 6,
+	PERF_BR_SYSCALL = 7,
+	PERF_BR_SYSRET = 8,
+	PERF_BR_COND_CALL = 9,
+	PERF_BR_COND_RET = 10,
+	PERF_BR_ERET = 11,
+	PERF_BR_IRQ = 12,
+	PERF_BR_SERROR = 13,
+	PERF_BR_NO_TX = 14,
+	PERF_BR_EXTEND_ABI = 15,
+	PERF_BR_MAX = 16,
+};
+
+enum {
+	X86_BR_NONE = 0,
+	X86_BR_USER = 1,
+	X86_BR_KERNEL = 2,
+	X86_BR_CALL = 4,
+	X86_BR_RET = 8,
+	X86_BR_SYSCALL = 16,
+	X86_BR_SYSRET = 32,
+	X86_BR_INT = 64,
+	X86_BR_IRET = 128,
+	X86_BR_JCC = 256,
+	X86_BR_JMP = 512,
+	X86_BR_IRQ = 1024,
+	X86_BR_IND_CALL = 2048,
+	X86_BR_ABORT = 4096,
+	X86_BR_IN_TX = 8192,
+	X86_BR_NO_TX = 16384,
+	X86_BR_ZERO_CALL = 32768,
+	X86_BR_CALL_STACK = 65536,
+	X86_BR_IND_JMP = 131072,
+	X86_BR_TYPE_SAVE = 262144,
+};
+
+typedef int insn_value_t;
+
+typedef unsigned char insn_byte_t;
+
+struct insn_field {
+	union {
+		insn_value_t value;
+		insn_byte_t bytes[4];
+	};
+	unsigned char got;
+	unsigned char nbytes;
+};
+
+typedef unsigned int insn_attr_t;
+
+struct insn {
+	struct insn_field prefixes;
+	struct insn_field rex_prefix;
+	struct insn_field vex_prefix;
+	struct insn_field opcode;
+	struct insn_field modrm;
+	struct insn_field sib;
+	struct insn_field displacement;
+	union {
+		struct insn_field immediate;
+		struct insn_field moffset1;
+		struct insn_field immediate1;
+	};
+	union {
+		struct insn_field moffset2;
+		struct insn_field immediate2;
+	};
+	int emulate_prefix_size;
+	insn_attr_t attr;
+	unsigned char opnd_bytes;
+	unsigned char addr_bytes;
+	unsigned char length;
+	unsigned char x86_64;
+	const insn_byte_t *kaddr;
+	const insn_byte_t *end_kaddr;
+	const insn_byte_t *next_byte;
+};
+
+typedef void (*exitcall_t)();
+
+struct rapl_pmu;
+
+struct rapl_pmus {
+	struct pmu pmu;
+	unsigned int maxdie;
+	struct rapl_pmu *pmus[0];
+};
+
+struct rapl_pmu {
+	raw_spinlock_t lock;
+	int n_active;
+	int cpu;
+	struct list_head active_list;
+	struct pmu *pmu;
+	ktime_t timer_interval;
+	struct hrtimer hrtimer;
+};
+
+struct x86_cpu_id {
+	__u16 vendor;
+	__u16 family;
+	__u16 model;
+	__u16 steppings;
+	__u16 feature;
+	kernel_ulong_t driver_data;
+};
+
+enum rapl_unit_quirk {
+	RAPL_UNIT_QUIRK_NONE = 0,
+	RAPL_UNIT_QUIRK_INTEL_HSW = 1,
+	RAPL_UNIT_QUIRK_INTEL_SPR = 2,
+};
+
+struct rapl_model {
+	struct perf_msr *rapl_msrs;
+	unsigned long events;
+	unsigned int msr_power_unit;
+	enum rapl_unit_quirk unit_quirk;
+};
+
+enum perf_rapl_events {
+	PERF_RAPL_PP0 = 0,
+	PERF_RAPL_PKG = 1,
+	PERF_RAPL_RAM = 2,
+	PERF_RAPL_PP1 = 3,
+	PERF_RAPL_PSYS = 4,
+	PERF_RAPL_MAX = 5,
+	NR_RAPL_DOMAINS = 5,
+};
+
+enum perf_event_task_context {
+	perf_invalid_context = -1,
+	perf_hw_context = 0,
+	perf_sw_context = 1,
+	perf_nr_task_contexts = 2,
+};
+
+enum hrtimer_mode {
+	HRTIMER_MODE_ABS = 0,
+	HRTIMER_MODE_REL = 1,
+	HRTIMER_MODE_PINNED = 2,
+	HRTIMER_MODE_SOFT = 4,
+	HRTIMER_MODE_HARD = 8,
+	HRTIMER_MODE_ABS_PINNED = 2,
+	HRTIMER_MODE_REL_PINNED = 3,
+	HRTIMER_MODE_ABS_SOFT = 4,
+	HRTIMER_MODE_REL_SOFT = 5,
+	HRTIMER_MODE_ABS_PINNED_SOFT = 6,
+	HRTIMER_MODE_REL_PINNED_SOFT = 7,
+	HRTIMER_MODE_ABS_HARD = 8,
+	HRTIMER_MODE_REL_HARD = 9,
+	HRTIMER_MODE_ABS_PINNED_HARD = 10,
+	HRTIMER_MODE_REL_PINNED_HARD = 11,
+};
+
+struct cpuinfo_x86 {
+	__u8 x86;
+	__u8 x86_vendor;
+	__u8 x86_model;
+	__u8 x86_stepping;
+	int x86_tlbsize;
+	__u32 vmx_capability[5];
+	__u8 x86_virt_bits;
+	__u8 x86_phys_bits;
+	__u8 x86_coreid_bits;
+	__u8 cu_id;
+	__u32 extended_cpuid_level;
+	int cpuid_level;
+	union {
+		__u32 x86_capability[24];
+		unsigned long x86_capability_alignment;
+	};
+	char x86_vendor_id[16];
+	char x86_model_id[64];
+	unsigned int x86_cache_size;
+	int x86_cache_alignment;
+	int x86_cache_max_rmid;
+	int x86_cache_occ_scale;
+	int x86_cache_mbm_width_offset;
+	int x86_power;
+	unsigned long loops_per_jiffy;
+	u64 ppin;
+	u16 x86_max_cores;
+	u16 apicid;
+	u16 initial_apicid;
+	u16 x86_clflush_size;
+	u16 booted_cores;
+	u16 phys_proc_id;
+	u16 logical_proc_id;
+	u16 cpu_core_id;
+	u16 cpu_die_id;
+	u16 logical_die_id;
+	u16 cpu_index;
+	bool smt_active;
+	u32 microcode;
+	u8 x86_cache_bits;
+	unsigned int initialized: 1;
+};
+
+union cpuid_0x80000022_ebx {
+	struct {
+		unsigned int num_core_pmc: 4;
+		unsigned int lbr_v2_stack_sz: 6;
+		unsigned int num_df_pmc: 6;
+	} split;
+	unsigned int full;
+};
+
+enum {
+	PERF_BR_SPEC_NA = 0,
+	PERF_BR_SPEC_WRONG_PATH = 1,
+	PERF_BR_NON_SPEC_CORRECT_PATH = 2,
+	PERF_BR_SPEC_CORRECT_PATH = 3,
+	PERF_BR_SPEC_MAX = 4,
+};
+
+enum perf_branch_sample_type_shift {
+	PERF_SAMPLE_BRANCH_USER_SHIFT = 0,
+	PERF_SAMPLE_BRANCH_KERNEL_SHIFT = 1,
+	PERF_SAMPLE_BRANCH_HV_SHIFT = 2,
+	PERF_SAMPLE_BRANCH_ANY_SHIFT = 3,
+	PERF_SAMPLE_BRANCH_ANY_CALL_SHIFT = 4,
+	PERF_SAMPLE_BRANCH_ANY_RETURN_SHIFT = 5,
+	PERF_SAMPLE_BRANCH_IND_CALL_SHIFT = 6,
+	PERF_SAMPLE_BRANCH_ABORT_TX_SHIFT = 7,
+	PERF_SAMPLE_BRANCH_IN_TX_SHIFT = 8,
+	PERF_SAMPLE_BRANCH_NO_TX_SHIFT = 9,
+	PERF_SAMPLE_BRANCH_COND_SHIFT = 10,
+	PERF_SAMPLE_BRANCH_CALL_STACK_SHIFT = 11,
+	PERF_SAMPLE_BRANCH_IND_JUMP_SHIFT = 12,
+	PERF_SAMPLE_BRANCH_CALL_SHIFT = 13,
+	PERF_SAMPLE_BRANCH_NO_FLAGS_SHIFT = 14,
+	PERF_SAMPLE_BRANCH_NO_CYCLES_SHIFT = 15,
+	PERF_SAMPLE_BRANCH_TYPE_SAVE_SHIFT = 16,
+	PERF_SAMPLE_BRANCH_HW_INDEX_SHIFT = 17,
+	PERF_SAMPLE_BRANCH_PRIV_SAVE_SHIFT = 18,
+	PERF_SAMPLE_BRANCH_MAX_SHIFT = 19,
+};
+
+struct branch_entry {
+	union {
+		struct {
+			u64 ip: 58;
+			u64 ip_sign_ext: 5;
+			u64 mispredict: 1;
+		} split;
+		u64 full;
+	} from;
+	union {
+		struct {
+			u64 ip: 58;
+			u64 ip_sign_ext: 3;
+			u64 reserved: 1;
+			u64 spec: 1;
+			u64 valid: 1;
+		} split;
+		u64 full;
+	} to;
+};
+
+struct cpu_perf_ibs;
+
+struct perf_ibs {
+	struct pmu pmu;
+	unsigned int msr;
+	u64 config_mask;
+	u64 cnt_mask;
+	u64 enable_mask;
+	u64 valid_mask;
+	u64 max_period;
+	unsigned long offset_mask[1];
+	int offset_max;
+	unsigned int fetch_count_reset_broken: 1;
+	unsigned int fetch_ignore_if_zero_rip: 1;
+	struct cpu_perf_ibs __attribute__((btf_type_tag("percpu"))) *pcpu;
+	u64 (*get_count)(u64);
+};
+
+struct cpu_perf_ibs {
+	struct perf_event *event;
+	unsigned long state[1];
+};
+
+struct syscore_ops {
+	struct list_head node;
+	int (*suspend)();
+	void (*resume)();
+	void (*shutdown)();
+};
+
+enum perf_hw_id {
+	PERF_COUNT_HW_CPU_CYCLES = 0,
+	PERF_COUNT_HW_INSTRUCTIONS = 1,
+	PERF_COUNT_HW_CACHE_REFERENCES = 2,
+	PERF_COUNT_HW_CACHE_MISSES = 3,
+	PERF_COUNT_HW_BRANCH_INSTRUCTIONS = 4,
+	PERF_COUNT_HW_BRANCH_MISSES = 5,
+	PERF_COUNT_HW_BUS_CYCLES = 6,
+	PERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 7,
+	PERF_COUNT_HW_STALLED_CYCLES_BACKEND = 8,
+	PERF_COUNT_HW_REF_CPU_CYCLES = 9,
+	PERF_COUNT_HW_MAX = 10,
+};
+
+enum ibs_states {
+	IBS_ENABLED = 0,
+	IBS_STARTED = 1,
+	IBS_STOPPING = 2,
+	IBS_STOPPED = 3,
+	IBS_MAX_STATES = 4,
+};
+
+union ibs_fetch_ctl {
+	__u64 val;
+	struct {
+		__u64 fetch_maxcnt: 16;
+		__u64 fetch_cnt: 16;
+		__u64 fetch_lat: 16;
+		__u64 fetch_en: 1;
+		__u64 fetch_val: 1;
+		__u64 fetch_comp: 1;
+		__u64 ic_miss: 1;
+		__u64 phy_addr_valid: 1;
+		__u64 l1tlb_pgsz: 2;
+		__u64 l1tlb_miss: 1;
+		__u64 l2tlb_miss: 1;
+		__u64 rand_en: 1;
+		__u64 fetch_l2_miss: 1;
+		__u64 l3_miss_only: 1;
+		__u64 fetch_oc_miss: 1;
+		__u64 fetch_l3_miss: 1;
+		__u64 reserved: 2;
+	};
+};
+
+union ibs_op_ctl {
+	__u64 val;
+	struct {
+		__u64 opmaxcnt: 16;
+		__u64 l3_miss_only: 1;
+		__u64 op_en: 1;
+		__u64 op_val: 1;
+		__u64 cnt_ctl: 1;
+		__u64 opmaxcnt_ext: 7;
+		__u64 reserved0: 5;
+		__u64 opcurcnt: 27;
+		__u64 reserved1: 5;
+	};
+};
+
+struct perf_ibs_data {
+	u32 size;
+	union {
+		u32 data[0];
+		u32 caps;
+	};
+	u64 regs[8];
+};
+
+union ibs_op_data3 {
+	__u64 val;
+	struct {
+		__u64 ld_op: 1;
+		__u64 st_op: 1;
+		__u64 dc_l1tlb_miss: 1;
+		__u64 dc_l2tlb_miss: 1;
+		__u64 dc_l1tlb_hit_2m: 1;
+		__u64 dc_l1tlb_hit_1g: 1;
+		__u64 dc_l2tlb_hit_2m: 1;
+		__u64 dc_miss: 1;
+		__u64 dc_mis_acc: 1;
+		__u64 reserved: 4;
+		__u64 dc_wc_mem_acc: 1;
+		__u64 dc_uc_mem_acc: 1;
+		__u64 dc_locked_op: 1;
+		__u64 dc_miss_no_mab_alloc: 1;
+		__u64 dc_lin_addr_valid: 1;
+		__u64 dc_phy_addr_valid: 1;
+		__u64 dc_l2_tlb_hit_1g: 1;
+		__u64 l2_miss: 1;
+		__u64 sw_pf: 1;
+		__u64 op_mem_width: 4;
+		__u64 op_dc_miss_open_mem_reqs: 6;
+		__u64 dc_miss_lat: 16;
+		__u64 tlb_refill_lat: 16;
+	};
+};
+
+union ibs_op_data2 {
+	__u64 val;
+	struct {
+		__u64 data_src_lo: 3;
+		__u64 reserved0: 1;
+		__u64 rmt_node: 1;
+		__u64 cache_hit_st: 1;
+		__u64 data_src_hi: 2;
+		__u64 reserved1: 56;
+	};
+};
+
+union ibs_op_data {
+	__u64 val;
+	struct {
+		__u64 comp_to_ret_ctr: 16;
+		__u64 tag_to_ret_ctr: 16;
+		__u64 reserved1: 2;
+		__u64 op_return: 1;
+		__u64 op_brn_taken: 1;
+		__u64 op_brn_misp: 1;
+		__u64 op_brn_ret: 1;
+		__u64 op_rip_invalid: 1;
+		__u64 op_brn_fuse: 1;
+		__u64 op_microcode: 1;
+		__u64 reserved2: 23;
+	};
+};
+
+typedef int pci_power_t;
+
+typedef unsigned int pci_channel_state_t;
+
+typedef phys_addr_t resource_size_t;
+
+struct resource {
+	resource_size_t start;
+	resource_size_t end;
+	const char *name;
+	unsigned long flags;
+	unsigned long desc;
+	struct resource *parent;
+	struct resource *sibling;
+	struct resource *child;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+typedef unsigned short pci_dev_flags_t;
+
+struct pci_vpd {
+	struct mutex lock;
+	unsigned int len;
+	u8 cap;
+};
+
+struct pci_bus;
+
+struct pci_slot;
+
+struct aer_stats;
+
+struct rcec_ea;
+
+struct pci_driver;
+
+struct pcie_link_state;
+
+struct pci_sriov;
+
+struct pci_dev {
+	struct list_head bus_list;
+	struct pci_bus *bus;
+	struct pci_bus *subordinate;
+	void *sysdata;
+	struct proc_dir_entry *procent;
+	struct pci_slot *slot;
+	unsigned int devfn;
+	unsigned short vendor;
+	unsigned short device;
+	unsigned short subsystem_vendor;
+	unsigned short subsystem_device;
+	unsigned int class;
+	u8 revision;
+	u8 hdr_type;
+	u16 aer_cap;
+	struct aer_stats *aer_stats;
+	struct rcec_ea *rcec_ea;
+	struct pci_dev *rcec;
+	u32 devcap;
+	u8 pcie_cap;
+	u8 msi_cap;
+	u8 msix_cap;
+	u8 pcie_mpss: 3;
+	u8 rom_base_reg;
+	u8 pin;
+	u16 pcie_flags_reg;
+	unsigned long *dma_alias_mask;
+	struct pci_driver *driver;
+	u64 dma_mask;
+	struct device_dma_parameters dma_parms;
+	pci_power_t current_state;
+	u8 pm_cap;
+	unsigned int imm_ready: 1;
+	unsigned int pme_support: 5;
+	unsigned int pme_poll: 1;
+	unsigned int d1_support: 1;
+	unsigned int d2_support: 1;
+	unsigned int no_d1d2: 1;
+	unsigned int no_d3cold: 1;
+	unsigned int bridge_d3: 1;
+	unsigned int d3cold_allowed: 1;
+	unsigned int mmio_always_on: 1;
+	unsigned int wakeup_prepared: 1;
+	unsigned int skip_bus_pm: 1;
+	unsigned int ignore_hotplug: 1;
+	unsigned int hotplug_user_indicators: 1;
+	unsigned int clear_retrain_link: 1;
+	unsigned int d3hot_delay;
+	unsigned int d3cold_delay;
+	struct pcie_link_state *link_state;
+	u16 l1ss;
+	unsigned int ltr_path: 1;
+	unsigned int pasid_no_tlp: 1;
+	unsigned int eetlp_prefix_path: 1;
+	pci_channel_state_t error_state;
+	struct device dev;
+	int cfg_size;
+	unsigned int irq;
+	struct resource resource[17];
+	struct resource driver_exclusive_resource;
+	bool match_driver;
+	unsigned int transparent: 1;
+	unsigned int io_window: 1;
+	unsigned int pref_window: 1;
+	unsigned int pref_64_window: 1;
+	unsigned int multifunction: 1;
+	unsigned int is_busmaster: 1;
+	unsigned int no_msi: 1;
+	unsigned int no_64bit_msi: 1;
+	unsigned int block_cfg_access: 1;
+	unsigned int broken_parity_status: 1;
+	unsigned int irq_reroute_variant: 2;
+	unsigned int msi_enabled: 1;
+	unsigned int msix_enabled: 1;
+	unsigned int ari_enabled: 1;
+	unsigned int ats_enabled: 1;
+	unsigned int pasid_enabled: 1;
+	unsigned int pri_enabled: 1;
+	unsigned int is_managed: 1;
+	unsigned int is_msi_managed: 1;
+	unsigned int needs_freset: 1;
+	unsigned int state_saved: 1;
+	unsigned int is_physfn: 1;
+	unsigned int is_virtfn: 1;
+	unsigned int is_hotplug_bridge: 1;
+	unsigned int shpc_managed: 1;
+	unsigned int is_thunderbolt: 1;
+	unsigned int untrusted: 1;
+	unsigned int external_facing: 1;
+	unsigned int broken_intx_masking: 1;
+	unsigned int io_window_1k: 1;
+	unsigned int irq_managed: 1;
+	unsigned int non_compliant_bars: 1;
+	unsigned int is_probed: 1;
+	unsigned int link_active_reporting: 1;
+	unsigned int no_vf_scan: 1;
+	unsigned int no_command_memory: 1;
+	unsigned int rom_bar_overlap: 1;
+	unsigned int rom_attr_enabled: 1;
+	pci_dev_flags_t dev_flags;
+	atomic_t enable_cnt;
+	spinlock_t pcie_cap_lock;
+	u32 saved_config_space[16];
+	struct hlist_head saved_cap_space;
+	struct bin_attribute *res_attr[17];
+	struct bin_attribute *res_attr_wc[17];
+	void *msix_base;
+	raw_spinlock_t msi_lock;
+	struct pci_vpd vpd;
+	union {
+		struct pci_sriov *sriov;
+		struct pci_dev *physfn;
+	};
+	u16 ats_cap;
+	u8 ats_stu;
+	u16 acs_cap;
+	phys_addr_t rom;
+	size_t romlen;
+	const char *driver_override;
+	unsigned long priv_flags;
+	u8 reset_methods[7];
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+typedef unsigned short pci_bus_flags_t;
+
+struct pci_ops;
+
+struct pci_bus {
+	struct list_head node;
+	struct pci_bus *parent;
+	struct list_head children;
+	struct list_head devices;
+	struct pci_dev *self;
+	struct list_head slots;
+	struct resource *resource[4];
+	struct list_head resources;
+	struct resource busn_res;
+	struct pci_ops *ops;
+	void *sysdata;
+	struct proc_dir_entry *procdir;
+	unsigned char number;
+	unsigned char primary;
+	unsigned char max_bus_speed;
+	unsigned char cur_bus_speed;
+	char name[48];
+	unsigned short bridge_ctl;
+	pci_bus_flags_t bus_flags;
+	struct device *bridge;
+	struct device dev;
+	struct bin_attribute *legacy_io;
+	struct bin_attribute *legacy_mem;
+	unsigned int is_added: 1;
+	unsigned int unsafe_warn: 1;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct pci_ops {
+	int (*add_bus)(struct pci_bus *);
+	void (*remove_bus)(struct pci_bus *);
+	void * (*map_bus)(struct pci_bus *, unsigned int, int);
+	int (*read)(struct pci_bus *, unsigned int, int, int, u32 *);
+	int (*write)(struct pci_bus *, unsigned int, int, int, u32);
+	u64 android_kabi_reserved1;
+};
+
+struct hotplug_slot;
+
+struct pci_slot {
+	struct pci_bus *bus;
+	struct list_head list;
+	struct hotplug_slot *hotplug;
+	unsigned char number;
+	struct kobject kobj;
+};
+
+struct pci_dynids {
+	spinlock_t lock;
+	struct list_head list;
+};
+
+struct pci_device_id;
+
+struct pci_error_handlers;
+
+struct pci_driver {
+	struct list_head node;
+	const char *name;
+	const struct pci_device_id *id_table;
+	int (*probe)(struct pci_dev *, const struct pci_device_id *);
+	void (*remove)(struct pci_dev *);
+	int (*suspend)(struct pci_dev *, pm_message_t);
+	int (*resume)(struct pci_dev *);
+	void (*shutdown)(struct pci_dev *);
+	int (*sriov_configure)(struct pci_dev *, int);
+	int (*sriov_set_msix_vec_count)(struct pci_dev *, int);
+	u32 (*sriov_get_vf_total_msix)(struct pci_dev *);
+	const struct pci_error_handlers *err_handler;
+	const struct attribute_group **groups;
+	const struct attribute_group **dev_groups;
+	struct device_driver driver;
+	struct pci_dynids dynids;
+	bool driver_managed_dma;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct pci_device_id {
+	__u32 vendor;
+	__u32 device;
+	__u32 subvendor;
+	__u32 subdevice;
+	__u32 class;
+	__u32 class_mask;
+	kernel_ulong_t driver_data;
+	__u32 override_only;
+};
+
+typedef unsigned int pci_ers_result_t;
+
+struct pci_error_handlers {
+	pci_ers_result_t (*error_detected)(struct pci_dev *, pci_channel_state_t);
+	pci_ers_result_t (*mmio_enabled)(struct pci_dev *);
+	pci_ers_result_t (*slot_reset)(struct pci_dev *);
+	void (*reset_prepare)(struct pci_dev *);
+	void (*reset_done)(struct pci_dev *);
+	void (*resume)(struct pci_dev *);
+	void (*cor_error_detected)(struct pci_dev *);
+	u64 android_kabi_reserved1;
+};
+
+struct amd_uncore {
+	int id;
+	int refcnt;
+	int cpu;
+	int num_counters;
+	int rdpmc_base;
+	u32 msr_base;
+	cpumask_t *active_mask;
+	struct pmu *pmu;
+	struct perf_event **events;
+	struct hlist_node node;
+};
+
+enum perf_msr_id {
+	PERF_MSR_TSC = 0,
+	PERF_MSR_APERF = 1,
+	PERF_MSR_MPERF = 2,
+	PERF_MSR_PPERF = 3,
+	PERF_MSR_SMI = 4,
+	PERF_MSR_PTSC = 5,
+	PERF_MSR_IRPERF = 6,
+	PERF_MSR_THERM = 7,
+	PERF_MSR_EVENT_MAX = 8,
+};
+
+enum irq_domain_bus_token {
+	DOMAIN_BUS_ANY = 0,
+	DOMAIN_BUS_WIRED = 1,
+	DOMAIN_BUS_GENERIC_MSI = 2,
+	DOMAIN_BUS_PCI_MSI = 3,
+	DOMAIN_BUS_PLATFORM_MSI = 4,
+	DOMAIN_BUS_NEXUS = 5,
+	DOMAIN_BUS_IPI = 6,
+	DOMAIN_BUS_FSL_MC_MSI = 7,
+	DOMAIN_BUS_TI_SCI_INTA_MSI = 8,
+	DOMAIN_BUS_WAKEUP = 9,
+	DOMAIN_BUS_VMD_MSI = 10,
+	DOMAIN_BUS_PCI_DEVICE_MSI = 11,
+	DOMAIN_BUS_PCI_DEVICE_MSIX = 12,
+	DOMAIN_BUS_DMAR = 13,
+	DOMAIN_BUS_AMDVI = 14,
+	DOMAIN_BUS_PCI_DEVICE_IMS = 15,
+};
+
+typedef unsigned long irq_hw_number_t;
+
+struct irq_domain_ops;
+
+struct irq_domain_chip_generic;
+
+struct msi_parent_ops;
+
+struct irq_data;
+
+struct irq_domain {
+	struct list_head link;
+	const char *name;
+	const struct irq_domain_ops *ops;
+	void *host_data;
+	unsigned int flags;
+	unsigned int mapcount;
+	struct mutex mutex;
+	struct irq_domain *root;
+	struct fwnode_handle *fwnode;
+	enum irq_domain_bus_token bus_token;
+	struct irq_domain_chip_generic *gc;
+	struct device *dev;
+	struct device *pm_dev;
+	struct irq_domain *parent;
+	const struct msi_parent_ops *msi_parent_ops;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+	irq_hw_number_t hwirq_max;
+	unsigned int revmap_size;
+	struct xarray revmap_tree;
+	struct irq_data __attribute__((btf_type_tag("rcu"))) *revmap[0];
+};
+
+struct irq_fwspec;
+
+struct irq_domain_ops {
+	int (*match)(struct irq_domain *, struct device_node *, enum irq_domain_bus_token);
+	int (*select)(struct irq_domain *, struct irq_fwspec *, enum irq_domain_bus_token);
+	int (*map)(struct irq_domain *, unsigned int, irq_hw_number_t);
+	void (*unmap)(struct irq_domain *, unsigned int);
+	int (*xlate)(struct irq_domain *, struct device_node *, const u32 *, unsigned int, unsigned long *, unsigned int *);
+	int (*alloc)(struct irq_domain *, unsigned int, unsigned int, void *);
+	void (*free)(struct irq_domain *, unsigned int, unsigned int);
+	int (*activate)(struct irq_domain *, struct irq_data *, bool);
+	void (*deactivate)(struct irq_domain *, struct irq_data *);
+	int (*translate)(struct irq_domain *, struct irq_fwspec *, unsigned long *, unsigned int *);
+};
+
+struct irq_fwspec {
+	struct fwnode_handle *fwnode;
+	int param_count;
+	u32 param[16];
+};
+
+struct irq_common_data;
+
+struct irq_chip;
+
+struct irq_data {
+	u32 mask;
+	unsigned int irq;
+	unsigned long hwirq;
+	struct irq_common_data *common;
+	struct irq_chip *chip;
+	struct irq_domain *domain;
+	struct irq_data *parent_data;
+	void *chip_data;
+};
+
+struct msi_desc;
+
+struct irq_common_data {
+	unsigned int state_use_accessors;
+	void *handler_data;
+	struct msi_desc *msi_desc;
+	cpumask_var_t affinity;
+	cpumask_var_t effective_affinity;
+};
+
+struct pci_msi_desc {
+	union {
+		u32 msi_mask;
+		u32 msix_ctrl;
+	};
+	struct {
+		u8 is_msix: 1;
+		u8 multiple: 3;
+		u8 multi_cap: 3;
+		u8 can_mask: 1;
+		u8 is_64: 1;
+		u8 is_virtual: 1;
+		unsigned int default_irq;
+	} msi_attrib;
+	union {
+		u8 mask_pos;
+		void *mask_base;
+	};
+};
+
+union msi_domain_cookie {
+	u64 value;
+	void *ptr;
+	void *iobase;
+};
+
+union msi_instance_cookie {
+	u64 value;
+	void *ptr;
+};
+
+struct msi_desc_data {
+	union msi_domain_cookie dcookie;
+	union msi_instance_cookie icookie;
+};
+
+struct x86_msi_addr_lo {
+	union {
+		struct {
+			u32 reserved_0: 2;
+			u32 dest_mode_logical: 1;
+			u32 redirect_hint: 1;
+			u32 reserved_1: 1;
+			u32 virt_destid_8_14: 7;
+			u32 destid_0_7: 8;
+			u32 base_address: 12;
+		};
+		struct {
+			u32 dmar_reserved_0: 2;
+			u32 dmar_index_15: 1;
+			u32 dmar_subhandle_valid: 1;
+			u32 dmar_format: 1;
+			u32 dmar_index_0_14: 15;
+			u32 dmar_base_address: 12;
+		};
+	};
+};
+
+typedef struct x86_msi_addr_lo arch_msi_msg_addr_lo_t;
+
+struct x86_msi_addr_hi {
+	u32 reserved: 8;
+	u32 destid_8_31: 24;
+};
+
+typedef struct x86_msi_addr_hi arch_msi_msg_addr_hi_t;
+
+struct x86_msi_data {
+	union {
+		struct {
+			u32 vector: 8;
+			u32 delivery_mode: 3;
+			u32 dest_mode_logical: 1;
+			u32 reserved: 2;
+			u32 active_low: 1;
+			u32 is_level: 1;
+		};
+		u32 dmar_subhandle;
+	};
+};
+
+typedef struct x86_msi_data arch_msi_msg_data_t;
+
+struct msi_msg {
+	union {
+		u32 address_lo;
+		arch_msi_msg_addr_lo_t arch_addr_lo;
+	};
+	union {
+		u32 address_hi;
+		arch_msi_msg_addr_hi_t arch_addr_hi;
+	};
+	union {
+		u32 data;
+		arch_msi_msg_data_t arch_data;
+	};
+};
+
+struct irq_affinity_desc;
+
+struct msi_desc {
+	unsigned int irq;
+	unsigned int nvec_used;
+	struct device *dev;
+	struct msi_msg msg;
+	struct irq_affinity_desc *affinity;
+	const void *iommu_cookie;
+	struct device_attribute *sysfs_attrs;
+	void (*write_msi_msg)(struct msi_desc *, void *);
+	void *write_msi_msg_data;
+	u16 msi_index;
+	union {
+		struct pci_msi_desc pci;
+		struct msi_desc_data data;
+	};
+};
+
+struct irq_affinity_desc {
+	struct cpumask mask;
+	unsigned int is_managed: 1;
+};
+
+enum irqchip_irq_state {
+	IRQCHIP_STATE_PENDING = 0,
+	IRQCHIP_STATE_ACTIVE = 1,
+	IRQCHIP_STATE_MASKED = 2,
+	IRQCHIP_STATE_LINE_LEVEL = 3,
+};
+
+struct irq_chip {
+	const char *name;
+	unsigned int (*irq_startup)(struct irq_data *);
+	void (*irq_shutdown)(struct irq_data *);
+	void (*irq_enable)(struct irq_data *);
+	void (*irq_disable)(struct irq_data *);
+	void (*irq_ack)(struct irq_data *);
+	void (*irq_mask)(struct irq_data *);
+	void (*irq_mask_ack)(struct irq_data *);
+	void (*irq_unmask)(struct irq_data *);
+	void (*irq_eoi)(struct irq_data *);
+	int (*irq_set_affinity)(struct irq_data *, const struct cpumask *, bool);
+	int (*irq_retrigger)(struct irq_data *);
+	int (*irq_set_type)(struct irq_data *, unsigned int);
+	int (*irq_set_wake)(struct irq_data *, unsigned int);
+	void (*irq_bus_lock)(struct irq_data *);
+	void (*irq_bus_sync_unlock)(struct irq_data *);
+	void (*irq_suspend)(struct irq_data *);
+	void (*irq_resume)(struct irq_data *);
+	void (*irq_pm_shutdown)(struct irq_data *);
+	void (*irq_calc_mask)(struct irq_data *);
+	void (*irq_print_chip)(struct irq_data *, struct seq_file *);
+	int (*irq_request_resources)(struct irq_data *);
+	void (*irq_release_resources)(struct irq_data *);
+	void (*irq_compose_msi_msg)(struct irq_data *, struct msi_msg *);
+	void (*irq_write_msi_msg)(struct irq_data *, struct msi_msg *);
+	int (*irq_get_irqchip_state)(struct irq_data *, enum irqchip_irq_state, bool *);
+	int (*irq_set_irqchip_state)(struct irq_data *, enum irqchip_irq_state, bool);
+	int (*irq_set_vcpu_affinity)(struct irq_data *, void *);
+	void (*ipi_send_single)(struct irq_data *, unsigned int);
+	void (*ipi_send_mask)(struct irq_data *, const struct cpumask *);
+	int (*irq_nmi_setup)(struct irq_data *);
+	void (*irq_nmi_teardown)(struct irq_data *);
+	unsigned long flags;
+};
+
+enum irq_gc_flags {
+	IRQ_GC_INIT_MASK_CACHE = 1,
+	IRQ_GC_INIT_NESTED_LOCK = 2,
+	IRQ_GC_MASK_CACHE_PER_TYPE = 4,
+	IRQ_GC_NO_MASK = 8,
+	IRQ_GC_BE_IO = 16,
+};
+
+struct irq_chip_generic;
+
+struct irq_domain_chip_generic {
+	unsigned int irqs_per_chip;
+	unsigned int num_chips;
+	unsigned int irq_flags_to_clear;
+	unsigned int irq_flags_to_set;
+	enum irq_gc_flags gc_flags;
+	struct irq_chip_generic *gc[0];
+};
+
+struct irq_chip_regs {
+	unsigned long enable;
+	unsigned long disable;
+	unsigned long mask;
+	unsigned long ack;
+	unsigned long eoi;
+	unsigned long type;
+	unsigned long polarity;
+};
+
+struct irq_desc;
+
+typedef void (*irq_flow_handler_t)(struct irq_desc *);
+
+struct irq_chip_type {
+	struct irq_chip chip;
+	struct irq_chip_regs regs;
+	irq_flow_handler_t handler;
+	u32 type;
+	u32 mask_cache_priv;
+	u32 *mask_cache;
+};
+
+struct irq_chip_generic {
+	raw_spinlock_t lock;
+	void *reg_base;
+	u32 (*reg_readl)(void *);
+	void (*reg_writel)(u32, void *);
+	void (*suspend)(struct irq_chip_generic *);
+	void (*resume)(struct irq_chip_generic *);
+	unsigned int irq_base;
+	unsigned int irq_cnt;
+	u32 mask_cache;
+	u32 type_cache;
+	u32 polarity_cache;
+	u32 wake_enabled;
+	u32 wake_active;
+	unsigned int num_ct;
+	void *private;
+	unsigned long installed;
+	unsigned long unused;
+	struct irq_domain *domain;
+	struct list_head list;
+	struct irq_chip_type chip_types[0];
+};
+
+struct irqaction;
+
+struct irq_affinity_notify;
+
+struct irq_desc {
+	struct irq_common_data irq_common_data;
+	struct irq_data irq_data;
+	unsigned int __attribute__((btf_type_tag("percpu"))) *kstat_irqs;
+	irq_flow_handler_t handle_irq;
+	struct irqaction *action;
+	unsigned int status_use_accessors;
+	unsigned int core_internal_state__do_not_mess_with_it;
+	unsigned int depth;
+	unsigned int wake_depth;
+	unsigned int tot_count;
+	unsigned int irq_count;
+	unsigned long last_unhandled;
+	unsigned int irqs_unhandled;
+	atomic_t threads_handled;
+	int threads_handled_last;
+	raw_spinlock_t lock;
+	struct cpumask *percpu_enabled;
+	const struct cpumask *percpu_affinity;
+	const struct cpumask *affinity_hint;
+	struct irq_affinity_notify *affinity_notify;
+	cpumask_var_t pending_mask;
+	unsigned long threads_oneshot;
+	atomic_t threads_active;
+	wait_queue_head_t wait_for_threads;
+	unsigned int nr_actions;
+	unsigned int no_suspend_depth;
+	unsigned int cond_suspend_depth;
+	unsigned int force_resume_depth;
+	struct proc_dir_entry *dir;
+	struct callback_head rcu;
+	struct kobject kobj;
+	struct mutex request_mutex;
+	int parent_irq;
+	struct module *owner;
+	const char *name;
+	struct hlist_node resend_node;
+	u64 android_vendor_data1;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+enum irqreturn {
+	IRQ_NONE = 0,
+	IRQ_HANDLED = 1,
+	IRQ_WAKE_THREAD = 2,
+};
+
+typedef enum irqreturn irqreturn_t;
+
+typedef irqreturn_t (*irq_handler_t)(int, void *);
+
+struct irqaction {
+	irq_handler_t handler;
+	void *dev_id;
+	void __attribute__((btf_type_tag("percpu"))) *percpu_dev_id;
+	struct irqaction *next;
+	irq_handler_t thread_fn;
+	struct task_struct *thread;
+	struct irqaction *secondary;
+	unsigned int irq;
+	unsigned int flags;
+	unsigned long thread_flags;
+	unsigned long thread_mask;
+	const char *name;
+	struct proc_dir_entry *dir;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct irq_affinity_notify {
+	unsigned int irq;
+	struct kref kref;
+	struct work_struct work;
+	void (*notify)(struct irq_affinity_notify *, const cpumask_t *);
+	void (*release)(struct kref *);
+};
+
+struct msi_domain_info;
+
+struct msi_parent_ops {
+	u32 supported_flags;
+	const char *prefix;
+	bool (*init_dev_msi_info)(struct device *, struct irq_domain *, struct irq_domain *, struct msi_domain_info *);
+};
+
+struct msi_domain_ops;
+
+struct msi_domain_info {
+	u32 flags;
+	enum irq_domain_bus_token bus_token;
+	unsigned int hwsize;
+	struct msi_domain_ops *ops;
+	struct irq_chip *chip;
+	void *chip_data;
+	irq_flow_handler_t handler;
+	void *handler_data;
+	const char *handler_name;
+	void *data;
+};
+
+struct irq_alloc_info;
+
+typedef struct irq_alloc_info msi_alloc_info_t;
+
+struct msi_domain_ops {
+	irq_hw_number_t (*get_hwirq)(struct msi_domain_info *, msi_alloc_info_t *);
+	int (*msi_init)(struct irq_domain *, struct msi_domain_info *, unsigned int, irq_hw_number_t, msi_alloc_info_t *);
+	void (*msi_free)(struct irq_domain *, struct msi_domain_info *, unsigned int);
+	int (*msi_prepare)(struct irq_domain *, struct device *, int, msi_alloc_info_t *);
+	void (*prepare_desc)(struct irq_domain *, msi_alloc_info_t *, struct msi_desc *);
+	void (*set_desc)(msi_alloc_info_t *, struct msi_desc *);
+	int (*domain_alloc_irqs)(struct irq_domain *, struct device *, int);
+	void (*domain_free_irqs)(struct irq_domain *, struct device *);
+	void (*msi_post_free)(struct irq_domain *, struct device *);
+};
+
+enum irq_alloc_type {
+	X86_IRQ_ALLOC_TYPE_IOAPIC = 1,
+	X86_IRQ_ALLOC_TYPE_HPET = 2,
+	X86_IRQ_ALLOC_TYPE_PCI_MSI = 3,
+	X86_IRQ_ALLOC_TYPE_PCI_MSIX = 4,
+	X86_IRQ_ALLOC_TYPE_DMAR = 5,
+	X86_IRQ_ALLOC_TYPE_AMDVI = 6,
+	X86_IRQ_ALLOC_TYPE_UV = 7,
+};
+
+struct ioapic_alloc_info {
+	int pin;
+	int node;
+	u32 is_level: 1;
+	u32 active_low: 1;
+	u32 valid: 1;
+};
+
+struct uv_alloc_info {
+	int limit;
+	int blade;
+	unsigned long offset;
+	char *name;
+};
+
+struct irq_alloc_info {
+	enum irq_alloc_type type;
+	u32 flags;
+	u32 devid;
+	irq_hw_number_t hwirq;
+	const struct cpumask *mask;
+	struct msi_desc *desc;
+	void *data;
+	union {
+		struct ioapic_alloc_info ioapic;
+		struct uv_alloc_info uv;
+	};
+};
+
+struct msi_dev_domain {
+	struct xarray store;
+	struct irq_domain *domain;
+};
+
+struct platform_msi_priv_data;
+
+struct msi_device_data {
+	unsigned long properties;
+	struct platform_msi_priv_data *platform_data;
+	struct mutex mutex;
+	struct msi_dev_domain __domains[2];
+	unsigned long __iter_idx;
+};
+
+struct x86_cpu_desc {
+	u8 x86_family;
+	u8 x86_vendor;
+	u8 x86_model;
+	u8 x86_stepping;
+	u32 x86_microcode_rev;
+};
+
+struct perf_pmu_format_hybrid_attr {
+	struct device_attribute attr;
+	u64 pmu_type;
+};
+
+enum {
+	LBR_FORMAT_32 = 0,
+	LBR_FORMAT_LIP = 1,
+	LBR_FORMAT_EIP = 2,
+	LBR_FORMAT_EIP_FLAGS = 3,
+	LBR_FORMAT_EIP_FLAGS2 = 4,
+	LBR_FORMAT_INFO = 5,
+	LBR_FORMAT_TIME = 6,
+	LBR_FORMAT_INFO2 = 7,
+	LBR_FORMAT_MAX_KNOWN = 7,
+};
+
+enum pmc_type {
+	KVM_PMC_GP = 0,
+	KVM_PMC_FIXED = 1,
+};
+
+enum kvm_apic_logical_mode {
+	KVM_APIC_MODE_SW_DISABLED = 0,
+	KVM_APIC_MODE_XAPIC_CLUSTER = 1,
+	KVM_APIC_MODE_XAPIC_FLAT = 2,
+	KVM_APIC_MODE_X2APIC = 3,
+	KVM_APIC_MODE_MAP_DISABLED = 4,
+};
+
+enum hv_tsc_page_status {
+	HV_TSC_PAGE_UNSET = 0,
+	HV_TSC_PAGE_GUEST_CHANGED = 1,
+	HV_TSC_PAGE_HOST_CHANGED = 2,
+	HV_TSC_PAGE_SET = 3,
+	HV_TSC_PAGE_BROKEN = 4,
+};
+
+enum pfn_cache_usage {
+	KVM_GUEST_USES_PFN = 1,
+	KVM_HOST_USES_PFN = 2,
+	KVM_GUEST_AND_HOST_USE_PFN = 3,
+};
+
+enum kvm_irqchip_mode {
+	KVM_IRQCHIP_NONE = 0,
+	KVM_IRQCHIP_KERNEL = 1,
+	KVM_IRQCHIP_SPLIT = 2,
+};
+
+enum mmu_notifier_event {
+	MMU_NOTIFY_UNMAP = 0,
+	MMU_NOTIFY_CLEAR = 1,
+	MMU_NOTIFY_PROTECTION_VMA = 2,
+	MMU_NOTIFY_PROTECTION_PAGE = 3,
+	MMU_NOTIFY_SOFT_DIRTY = 4,
+	MMU_NOTIFY_RELEASE = 5,
+	MMU_NOTIFY_MIGRATE = 6,
+	MMU_NOTIFY_EXCLUSIVE = 7,
+};
+
+enum kvm_stat_kind {
+	KVM_STAT_VM = 0,
+	KVM_STAT_VCPU = 1,
+};
+
+struct kvm_vcpu;
+
+struct kvm_pmc {
+	enum pmc_type type;
+	u8 idx;
+	bool is_paused;
+	bool intr;
+	u64 counter;
+	u64 prev_counter;
+	u64 eventsel;
+	struct perf_event *perf_event;
+	struct kvm_vcpu *vcpu;
+	u64 current_config;
+};
+
+struct kvm_pmu {
+	u8 version;
+	unsigned int nr_arch_gp_counters;
+	unsigned int nr_arch_fixed_counters;
+	unsigned int available_event_types;
+	u64 fixed_ctr_ctrl;
+	u64 fixed_ctr_ctrl_mask;
+	u64 global_ctrl;
+	u64 global_status;
+	u64 counter_bitmask[2];
+	u64 global_ctrl_mask;
+	u64 global_status_mask;
+	u64 reserved_bits;
+	u64 raw_event_mask;
+	struct kvm_pmc gp_counters[8];
+	struct kvm_pmc fixed_counters[3];
+	union {
+		unsigned long reprogram_pmi[1];
+		atomic64_t __reprogram_pmi;
+	};
+	unsigned long all_valid_pmc_idx[1];
+	unsigned long pmc_in_use[1];
+	u64 ds_area;
+	u64 pebs_enable;
+	u64 pebs_enable_mask;
+	u64 pebs_data_cfg;
+	u64 pebs_data_cfg_mask;
+	u64 host_cross_mapped_mask;
+	bool need_cleanup;
+	u8 event_count;
+};
+
+struct preempt_ops;
+
+struct preempt_notifier {
+	struct hlist_node link;
+	struct preempt_ops *ops;
+};
+
+typedef u64 gpa_t;
+
+struct kvm_mmio_fragment {
+	gpa_t gpa;
+	void *data;
+	unsigned int len;
+};
+
+typedef u64 hpa_t;
+
+struct kvm_mmu_root_info {
+	gpa_t pgd;
+	hpa_t hpa;
+};
+
+union kvm_mmu_page_role {
+	u32 word;
+	struct {
+		unsigned int level: 4;
+		unsigned int has_4_byte_gpte: 1;
+		unsigned int quadrant: 2;
+		unsigned int direct: 1;
+		unsigned int access: 3;
+		unsigned int invalid: 1;
+		unsigned int efer_nx: 1;
+		unsigned int cr0_wp: 1;
+		unsigned int smep_andnot_wp: 1;
+		unsigned int smap_andnot_wp: 1;
+		unsigned int ad_disabled: 1;
+		unsigned int guest_mode: 1;
+		unsigned int passthrough: 1;
+		char: 5;
+		unsigned int smm: 8;
+	};
+};
+
+union kvm_mmu_extended_role {
+	u32 word;
+	struct {
+		unsigned int valid: 1;
+		unsigned int execonly: 1;
+		unsigned int cr4_pse: 1;
+		unsigned int cr4_pke: 1;
+		unsigned int cr4_smap: 1;
+		unsigned int cr4_smep: 1;
+		unsigned int cr4_la57: 1;
+		unsigned int efer_lma: 1;
+	};
+};
+
+union kvm_cpu_role {
+	u64 as_u64;
+	struct {
+		union kvm_mmu_page_role base;
+		union kvm_mmu_extended_role ext;
+	};
+};
+
+struct rsvd_bits_validate {
+	u64 rsvd_bits_mask[10];
+	u64 bad_mt_xwr;
+};
+
+struct kvm_page_fault;
+
+struct x86_exception;
+
+struct kvm_mmu_page;
+
+struct kvm_mmu {
+	unsigned long (*get_guest_pgd)(struct kvm_vcpu *);
+	u64 (*get_pdptr)(struct kvm_vcpu *, int);
+	int (*page_fault)(struct kvm_vcpu *, struct kvm_page_fault *);
+	void (*inject_page_fault)(struct kvm_vcpu *, struct x86_exception *);
+	gpa_t (*gva_to_gpa)(struct kvm_vcpu *, struct kvm_mmu *, gpa_t, u64, struct x86_exception *);
+	int (*sync_spte)(struct kvm_vcpu *, struct kvm_mmu_page *, int);
+	struct kvm_mmu_root_info root;
+	union kvm_cpu_role cpu_role;
+	union kvm_mmu_page_role root_role;
+	u32 pkru_mask;
+	struct kvm_mmu_root_info prev_roots[3];
+	u8 permissions[16];
+	u64 *pae_root;
+	u64 *pml4_root;
+	u64 *pml5_root;
+	struct rsvd_bits_validate shadow_zero_check;
+	struct rsvd_bits_validate guest_rsvd_check;
+	u64 pdptrs[4];
+};
+
+struct kvm_mmu_memory_cache {
+	gfp_t gfp_zero;
+	gfp_t gfp_custom;
+	struct kmem_cache *kmem_cache;
+	int capacity;
+	int nobjs;
+	void **objects;
+};
+
+struct fpu_guest {
+	u64 xfeatures;
+	u64 perm;
+	u64 xfd_err;
+	unsigned int uabi_size;
+	struct fpstate *fpstate;
+};
+
+struct kvm_pio_request {
+	unsigned long linear_rip;
+	unsigned long count;
+	int in;
+	int port;
+	int size;
+};
+
+struct kvm_queued_exception {
+	bool pending;
+	bool injected;
+	bool has_error_code;
+	u8 vector;
+	u32 error_code;
+	unsigned long payload;
+	bool has_payload;
+};
+
+struct kvm_queued_interrupt {
+	bool injected;
+	bool soft;
+	u8 nr;
+};
+
+struct kvm_hypervisor_cpuid {
+	u32 base;
+	u32 limit;
+};
+
+typedef u64 hfn_t;
+
+typedef hfn_t kvm_pfn_t;
+
+struct kvm_memory_slot;
+
+struct kvm;
+
+struct gfn_to_pfn_cache {
+	u64 generation;
+	gpa_t gpa;
+	unsigned long uhva;
+	struct kvm_memory_slot *memslot;
+	struct kvm *kvm;
+	struct kvm_vcpu *vcpu;
+	struct list_head list;
+	rwlock_t lock;
+	struct mutex refresh_lock;
+	void *khva;
+	kvm_pfn_t pfn;
+	enum pfn_cache_usage usage;
+	bool active;
+	bool valid;
+};
+
+struct gfn_to_hva_cache {
+	u64 generation;
+	gpa_t gpa;
+	unsigned long hva;
+	unsigned long len;
+	struct kvm_memory_slot *memslot;
+};
+
+struct kvm_mtrr_range {
+	u64 base;
+	u64 mask;
+	struct list_head node;
+};
+
+typedef __u8 mtrr_type;
+
+struct kvm_mtrr {
+	struct kvm_mtrr_range var_ranges[8];
+	mtrr_type fixed_ranges[88];
+	u64 deftype;
+	struct list_head head;
+};
+
+typedef u64 gfn_t;
+
+struct kvm_vcpu_xen {
+	u64 hypercall_rip;
+	u32 current_runstate;
+	u8 upcall_vector;
+	struct gfn_to_pfn_cache vcpu_info_cache;
+	struct gfn_to_pfn_cache vcpu_time_info_cache;
+	struct gfn_to_pfn_cache runstate_cache;
+	struct gfn_to_pfn_cache runstate2_cache;
+	u64 last_steal;
+	u64 runstate_entry_time;
+	u64 runstate_times[4];
+	unsigned long evtchn_pending_sel;
+	u32 vcpu_id;
+	u32 timer_virq;
+	u64 timer_expires;
+	atomic_t timer_pending;
+	struct hrtimer timer;
+	int poll_evtchn;
+	struct timer_list poll_timer;
+	struct kvm_hypervisor_cpuid cpuid;
+};
+
+struct kvm_lapic;
+
+struct kvm_cpuid_entry2;
+
+struct x86_emulate_ctxt;
+
+struct kvm_vcpu_hv;
+
+struct kvm_vcpu_arch {
+	unsigned long regs[17];
+	u32 regs_avail;
+	u32 regs_dirty;
+	unsigned long cr0;
+	unsigned long cr0_guest_owned_bits;
+	unsigned long cr2;
+	unsigned long cr3;
+	unsigned long cr4;
+	unsigned long cr4_guest_owned_bits;
+	unsigned long cr4_guest_rsvd_bits;
+	unsigned long cr8;
+	u32 host_pkru;
+	u32 pkru;
+	u32 hflags;
+	u64 efer;
+	u64 apic_base;
+	struct kvm_lapic *apic;
+	bool load_eoi_exitmap_pending;
+	unsigned long ioapic_handled_vectors[4];
+	unsigned long apic_attention;
+	int32_t apic_arb_prio;
+	int mp_state;
+	u64 ia32_misc_enable_msr;
+	u64 smbase;
+	u64 smi_count;
+	bool at_instruction_boundary;
+	bool tpr_access_reporting;
+	bool xfd_no_write_intercept;
+	u64 ia32_xss;
+	u64 microcode_version;
+	u64 arch_capabilities;
+	u64 perf_capabilities;
+	struct kvm_mmu *mmu;
+	struct kvm_mmu root_mmu;
+	struct kvm_mmu guest_mmu;
+	struct kvm_mmu nested_mmu;
+	struct kvm_mmu *walk_mmu;
+	struct kvm_mmu_memory_cache mmu_pte_list_desc_cache;
+	struct kvm_mmu_memory_cache mmu_shadow_page_cache;
+	struct kvm_mmu_memory_cache mmu_shadowed_info_cache;
+	struct kvm_mmu_memory_cache mmu_page_header_cache;
+	struct fpu_guest guest_fpu;
+	u64 xcr0;
+	u64 guest_supported_xcr0;
+	struct kvm_pio_request pio;
+	void *pio_data;
+	void *sev_pio_data;
+	unsigned int sev_pio_count;
+	u8 event_exit_inst_len;
+	bool exception_from_userspace;
+	struct kvm_queued_exception exception;
+	struct kvm_queued_exception exception_vmexit;
+	struct kvm_queued_interrupt interrupt;
+	int halt_request;
+	int cpuid_nent;
+	struct kvm_cpuid_entry2 *cpuid_entries;
+	struct kvm_hypervisor_cpuid kvm_cpuid;
+	bool is_amd_compatible;
+	struct {
+		unsigned long enabled[1];
+	} governed_features;
+	u64 reserved_gpa_bits;
+	int maxphyaddr;
+	struct x86_emulate_ctxt *emulate_ctxt;
+	bool emulate_regs_need_sync_to_vcpu;
+	bool emulate_regs_need_sync_from_vcpu;
+	int (*complete_userspace_io)(struct kvm_vcpu *);
+	gpa_t time;
+	struct pvclock_vcpu_time_info hv_clock;
+	unsigned int hw_tsc_khz;
+	struct gfn_to_pfn_cache pv_time;
+	bool pvclock_set_guest_stopped_request;
+	struct {
+		u8 preempted;
+		u64 msr_val;
+		u64 last_steal;
+		struct gfn_to_hva_cache cache;
+	} st;
+	u64 l1_tsc_offset;
+	u64 tsc_offset;
+	u64 last_guest_tsc;
+	u64 last_host_tsc;
+	u64 tsc_offset_adjustment;
+	u64 this_tsc_nsec;
+	u64 this_tsc_write;
+	u64 this_tsc_generation;
+	bool tsc_catchup;
+	bool tsc_always_catchup;
+	s8 virtual_tsc_shift;
+	u32 virtual_tsc_mult;
+	u32 virtual_tsc_khz;
+	s64 ia32_tsc_adjust_msr;
+	u64 msr_ia32_power_ctl;
+	u64 l1_tsc_scaling_ratio;
+	u64 tsc_scaling_ratio;
+	atomic_t nmi_queued;
+	unsigned int nmi_pending;
+	bool nmi_injected;
+	bool smi_pending;
+	u8 handling_intr_from_guest;
+	struct kvm_mtrr mtrr_state;
+	u64 pat;
+	unsigned int switch_db_regs;
+	unsigned long db[4];
+	unsigned long dr6;
+	unsigned long dr7;
+	unsigned long eff_db[4];
+	unsigned long guest_debug_dr7;
+	u64 msr_platform_info;
+	u64 msr_misc_features_enables;
+	u64 mcg_cap;
+	u64 mcg_status;
+	u64 mcg_ctl;
+	u64 mcg_ext_ctl;
+	u64 *mce_banks;
+	u64 *mci_ctl2_banks;
+	u64 mmio_gva;
+	unsigned int mmio_access;
+	gfn_t mmio_gfn;
+	u64 mmio_gen;
+	struct kvm_pmu pmu;
+	unsigned long singlestep_rip;
+	bool hyperv_enabled;
+	struct kvm_vcpu_hv *hyperv;
+	struct kvm_vcpu_xen xen;
+	cpumask_var_t wbinvd_dirty_mask;
+	unsigned long last_retry_eip;
+	unsigned long last_retry_addr;
+	struct {
+		bool halted;
+		gfn_t gfns[64];
+		struct gfn_to_hva_cache data;
+		u64 msr_en_val;
+		u64 msr_int_val;
+		u16 vec;
+		u32 id;
+		bool send_user_only;
+		u32 host_apf_flags;
+		bool delivery_as_pf_vmexit;
+		bool pageready_pending;
+	} apf;
+	struct {
+		u64 length;
+		u64 status;
+	} osvw;
+	struct {
+		u64 msr_val;
+		struct gfn_to_hva_cache data;
+	} pv_eoi;
+	u64 msr_kvm_poll_control;
+	unsigned long exit_qualification;
+	struct {
+		bool pv_unhalted;
+	} pv;
+	int pending_ioapic_eoi;
+	int pending_external_vector;
+	bool preempted_in_kernel;
+	bool l1tf_flush_l1d;
+	int last_vmentry_cpu;
+	u64 msr_hwcr;
+	struct {
+		u32 features;
+		bool enforce;
+	} pv_cpuid;
+	bool guest_state_protected;
+	bool pdptrs_from_userspace;
+};
+
+struct kvm_vcpu_stat_generic {
+	u64 halt_successful_poll;
+	u64 halt_attempted_poll;
+	u64 halt_poll_invalid;
+	u64 halt_wakeup;
+	u64 halt_poll_success_ns;
+	u64 halt_poll_fail_ns;
+	u64 halt_wait_ns;
+	u64 halt_poll_success_hist[32];
+	u64 halt_poll_fail_hist[32];
+	u64 halt_wait_hist[32];
+	u64 blocking;
+};
+
+struct kvm_vcpu_stat {
+	struct kvm_vcpu_stat_generic generic;
+	u64 pf_taken;
+	u64 pf_fixed;
+	u64 pf_emulate;
+	u64 pf_spurious;
+	u64 pf_fast;
+	u64 pf_mmio_spte_created;
+	u64 pf_guest;
+	u64 tlb_flush;
+	u64 invlpg;
+	u64 exits;
+	u64 io_exits;
+	u64 mmio_exits;
+	u64 signal_exits;
+	u64 irq_window_exits;
+	u64 nmi_window_exits;
+	u64 l1d_flush;
+	u64 halt_exits;
+	u64 request_irq_exits;
+	u64 irq_exits;
+	u64 host_state_reload;
+	u64 fpu_reload;
+	u64 insn_emulation;
+	u64 insn_emulation_fail;
+	u64 hypercalls;
+	u64 irq_injections;
+	u64 nmi_injections;
+	u64 req_event;
+	u64 nested_run;
+	u64 directed_yield_attempted;
+	u64 directed_yield_successful;
+	u64 preemption_reported;
+	u64 preemption_other;
+	u64 guest_mode;
+	u64 notify_window_exits;
+};
+
+struct kvm_dirty_gfn;
+
+struct kvm_dirty_ring {
+	u32 dirty_index;
+	u32 reset_index;
+	u32 size;
+	u32 soft_limit;
+	struct kvm_dirty_gfn *dirty_gfns;
+	int index;
+};
+
+struct kvm_run;
+
+struct kvm_vcpu {
+	struct kvm *kvm;
+	struct preempt_notifier preempt_notifier;
+	int cpu;
+	int vcpu_id;
+	int vcpu_idx;
+	int ____srcu_idx;
+	int mode;
+	u64 requests;
+	unsigned long guest_debug;
+	struct mutex mutex;
+	struct kvm_run *run;
+	struct rcuwait wait;
+	struct pid __attribute__((btf_type_tag("rcu"))) *pid;
+	int sigset_active;
+	sigset_t sigset;
+	unsigned int halt_poll_ns;
+	bool valid_wakeup;
+	int mmio_needed;
+	int mmio_read_completed;
+	int mmio_is_write;
+	int mmio_cur_fragment;
+	int mmio_nr_fragments;
+	struct kvm_mmio_fragment mmio_fragments[2];
+	struct {
+		u32 queued;
+		struct list_head queue;
+		struct list_head done;
+		spinlock_t lock;
+	} async_pf;
+	struct {
+		bool in_spin_loop;
+		bool dy_eligible;
+	} spin_loop;
+	bool preempted;
+	bool ready;
+	struct kvm_vcpu_arch arch;
+	struct kvm_vcpu_stat stat;
+	char stats_id[48];
+	struct kvm_dirty_ring dirty_ring;
+	struct kvm_memory_slot *last_used_slot;
+	u64 last_used_slot_gen;
+};
+
+struct kvm_memslots {
+	u64 generation;
+	atomic_long_t last_used_slot;
+	struct rb_root_cached hva_tree;
+	struct rb_root gfn_tree;
+	struct hlist_head id_hash[128];
+	int node_idx;
+};
+
+struct kvm_vm_stat_generic {
+	u64 remote_tlb_flush;
+	u64 remote_tlb_flush_requests;
+};
+
+struct kvm_vm_stat {
+	struct kvm_vm_stat_generic generic;
+	u64 mmu_shadow_zapped;
+	u64 mmu_pte_write;
+	u64 mmu_pde_zapped;
+	u64 mmu_flooded;
+	u64 mmu_recycled;
+	u64 mmu_cache_miss;
+	u64 mmu_unsync;
+	union {
+		struct {
+			atomic64_t pages_4k;
+			atomic64_t pages_2m;
+			atomic64_t pages_1g;
+		};
+		atomic64_t pages[3];
+	};
+	u64 nx_lpage_splits;
+	u64 max_mmu_page_hash_collisions;
+	u64 max_mmu_rmap_size;
+};
+
+struct kvm_xen_hvm_config {
+	__u32 flags;
+	__u32 msr;
+	__u64 blob_addr_32;
+	__u64 blob_addr_64;
+	__u8 blob_size_32;
+	__u8 blob_size_64;
+	__u8 pad2[30];
+};
+
+struct ms_hyperv_tsc_page {
+	volatile u32 tsc_sequence;
+	u32 reserved1;
+	volatile u64 tsc_scale;
+	volatile s64 tsc_offset;
+};
+
+struct kvm_hv_syndbg {
+	struct {
+		u64 control;
+		u64 status;
+		u64 send_page;
+		u64 recv_page;
+		u64 pending_page;
+	} control;
+	u64 options;
+};
+
+struct hv_partition_assist_pg;
+
+struct kvm_hv {
+	struct mutex hv_lock;
+	u64 hv_guest_os_id;
+	u64 hv_hypercall;
+	u64 hv_tsc_page;
+	enum hv_tsc_page_status hv_tsc_page_status;
+	u64 hv_crash_param[5];
+	u64 hv_crash_ctl;
+	struct ms_hyperv_tsc_page tsc_ref;
+	struct idr conn_to_evt;
+	u64 hv_reenlightenment_control;
+	u64 hv_tsc_emulation_control;
+	u64 hv_tsc_emulation_status;
+	u64 hv_invtsc_control;
+	atomic_t num_mismatched_vp_indexes;
+	unsigned int synic_auto_eoi_used;
+	struct hv_partition_assist_pg *hv_pa_pg;
+	struct kvm_hv_syndbg hv_syndbg;
+};
+
+struct kvm_xen {
+	struct mutex xen_lock;
+	u32 xen_version;
+	bool long_mode;
+	bool runstate_update_flag;
+	u8 upcall_vector;
+	struct gfn_to_pfn_cache shinfo_cache;
+	struct idr evtchn_ports;
+	unsigned long poll_mask[16];
+};
+
+struct kvm_pic;
+
+struct kvm_ioapic;
+
+struct kvm_pit;
+
+struct kvm_apic_map;
+
+struct kvm_x86_msr_filter;
+
+struct kvm_x86_pmu_event_filter;
+
+struct kvm_arch {
+	unsigned long n_used_mmu_pages;
+	unsigned long n_requested_mmu_pages;
+	unsigned long n_max_mmu_pages;
+	unsigned int indirect_shadow_pages;
+	u8 mmu_valid_gen;
+	struct hlist_head mmu_page_hash[4096];
+	struct list_head active_mmu_pages;
+	struct list_head zapped_obsolete_pages;
+	struct list_head possible_nx_huge_pages;
+	spinlock_t mmu_unsync_pages_lock;
+	struct list_head assigned_dev_head;
+	struct iommu_domain *iommu_domain;
+	bool iommu_noncoherent;
+	atomic_t noncoherent_dma_count;
+	atomic_t assigned_device_count;
+	struct kvm_pic *vpic;
+	struct kvm_ioapic *vioapic;
+	struct kvm_pit *vpit;
+	atomic_t vapics_in_nmi_mode;
+	struct mutex apic_map_lock;
+	struct kvm_apic_map __attribute__((btf_type_tag("rcu"))) *apic_map;
+	atomic_t apic_map_dirty;
+	bool apic_access_memslot_enabled;
+	bool apic_access_memslot_inhibited;
+	struct rw_semaphore apicv_update_lock;
+	unsigned long apicv_inhibit_reasons;
+	gpa_t wall_clock;
+	bool mwait_in_guest;
+	bool hlt_in_guest;
+	bool pause_in_guest;
+	bool cstate_in_guest;
+	unsigned long irq_sources_bitmap;
+	s64 kvmclock_offset;
+	raw_spinlock_t tsc_write_lock;
+	u64 last_tsc_nsec;
+	u64 last_tsc_write;
+	u32 last_tsc_khz;
+	u64 last_tsc_offset;
+	u64 cur_tsc_nsec;
+	u64 cur_tsc_write;
+	u64 cur_tsc_offset;
+	u64 cur_tsc_generation;
+	int nr_vcpus_matched_tsc;
+	u32 default_tsc_khz;
+	seqcount_raw_spinlock_t pvclock_sc;
+	bool use_master_clock;
+	u64 master_kernel_ns;
+	u64 master_cycle_now;
+	struct delayed_work kvmclock_update_work;
+	struct delayed_work kvmclock_sync_work;
+	struct kvm_xen_hvm_config xen_hvm_config;
+	struct hlist_head mask_notifier_list;
+	struct kvm_hv hyperv;
+	struct kvm_xen xen;
+	bool backwards_tsc_observed;
+	bool boot_vcpu_runs_old_kvmclock;
+	u32 bsp_vcpu_id;
+	u64 disabled_quirks;
+	enum kvm_irqchip_mode irqchip_mode;
+	u8 nr_reserved_ioapic_pins;
+	bool disabled_lapic_found;
+	bool x2apic_format;
+	bool x2apic_broadcast_quirk_disabled;
+	bool guest_can_read_msr_platform_info;
+	bool exception_payload_enabled;
+	bool triple_fault_event;
+	bool bus_lock_detection_enabled;
+	bool enable_pmu;
+	u32 notify_window;
+	u32 notify_vmexit_flags;
+	bool exit_on_emulation_error;
+	u32 user_space_msr_mask;
+	struct kvm_x86_msr_filter __attribute__((btf_type_tag("rcu"))) *msr_filter;
+	u32 hypercall_exit_enabled;
+	bool sgx_provisioning_allowed;
+	struct kvm_x86_pmu_event_filter __attribute__((btf_type_tag("rcu"))) *pmu_event_filter;
+	struct task_struct *nx_huge_page_recovery_thread;
+	atomic64_t tdp_mmu_pages;
+	struct list_head tdp_mmu_roots;
+	spinlock_t tdp_mmu_pages_lock;
+	bool shadow_root_allocated;
+	u32 max_vcpu_ids;
+	bool disable_nx_huge_pages;
+	struct kvm_mmu_memory_cache split_shadow_page_cache;
+	struct kvm_mmu_memory_cache split_page_header_cache;
+	struct kvm_mmu_memory_cache split_desc_cache;
+};
+
+struct mmu_notifier_ops;
+
+struct mmu_notifier {
+	struct hlist_node hlist;
+	const struct mmu_notifier_ops *ops;
+	struct mm_struct *mm;
+	struct callback_head rcu;
+	unsigned int users;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct kvm_io_bus;
+
+struct kvm_coalesced_mmio_ring;
+
+struct kvm_irq_routing_table;
+
+struct kvm_stat_data;
+
+struct kvm {
+	rwlock_t mmu_lock;
+	struct mutex slots_lock;
+	struct mutex slots_arch_lock;
+	struct mm_struct *mm;
+	unsigned long nr_memslot_pages;
+	struct kvm_memslots __memslots[4];
+	struct kvm_memslots __attribute__((btf_type_tag("rcu"))) *memslots[2];
+	struct xarray vcpu_array;
+	atomic_t nr_memslots_dirty_logging;
+	spinlock_t mn_invalidate_lock;
+	unsigned long mn_active_invalidate_count;
+	struct rcuwait mn_memslots_update_rcuwait;
+	spinlock_t gpc_lock;
+	struct list_head gpc_list;
+	atomic_t online_vcpus;
+	int max_vcpus;
+	int created_vcpus;
+	int last_boosted_vcpu;
+	struct list_head vm_list;
+	struct mutex lock;
+	struct kvm_io_bus __attribute__((btf_type_tag("rcu"))) *buses[4];
+	struct {
+		spinlock_t lock;
+		struct list_head items;
+		struct list_head resampler_list;
+		struct mutex resampler_lock;
+	} irqfds;
+	struct list_head ioeventfds;
+	struct kvm_vm_stat stat;
+	struct kvm_arch arch;
+	refcount_t users_count;
+	struct kvm_coalesced_mmio_ring *coalesced_mmio_ring;
+	spinlock_t ring_lock;
+	struct list_head coalesced_zones;
+	struct mutex irq_lock;
+	struct kvm_irq_routing_table __attribute__((btf_type_tag("rcu"))) *irq_routing;
+	struct hlist_head irq_ack_notifier_list;
+	struct mmu_notifier mmu_notifier;
+	unsigned long mmu_invalidate_seq;
+	long mmu_invalidate_in_progress;
+	unsigned long mmu_invalidate_range_start;
+	unsigned long mmu_invalidate_range_end;
+	struct list_head devices;
+	u64 manual_dirty_log_protect;
+	struct dentry *debugfs_dentry;
+	struct kvm_stat_data **debugfs_stat_data;
+	struct srcu_struct srcu;
+	struct srcu_struct irq_srcu;
+	pid_t userspace_pid;
+	bool override_halt_poll_ns;
+	unsigned int max_halt_poll_ns;
+	u32 dirty_ring_size;
+	bool dirty_ring_with_bitmap;
+	bool vm_bugged;
+	bool vm_dead;
+	struct notifier_block pm_notifier;
+	char stats_id[48];
+};
+
+struct kvm_io_device;
+
+struct kvm_io_range {
+	gpa_t addr;
+	int len;
+	struct kvm_io_device *dev;
+};
+
+struct kvm_io_bus {
+	int dev_count;
+	int ioeventfd_count;
+	struct kvm_io_range range[0];
+};
+
+struct kvm_apic_map {
+	struct callback_head rcu;
+	enum kvm_apic_logical_mode logical_mode;
+	u32 max_apic_id;
+	union {
+		struct kvm_lapic *xapic_flat_map[8];
+		struct kvm_lapic *xapic_cluster_map[64];
+	};
+	struct kvm_lapic *phys_map[0];
+};
+
+struct hv_partition_assist_pg {
+	u32 tlb_lock_count;
+};
+
+struct interval_tree_node {
+	struct rb_node rb;
+	unsigned long start;
+	unsigned long last;
+	unsigned long __subtree_last;
+};
+
+struct kvm_rmap_head;
+
+struct kvm_lpage_info;
+
+struct kvm_arch_memory_slot {
+	struct kvm_rmap_head *rmap[3];
+	struct kvm_lpage_info *lpage_info[2];
+	unsigned short *gfn_write_track;
+};
+
+struct kvm_memory_slot {
+	struct hlist_node id_node[2];
+	struct interval_tree_node hva_node[2];
+	struct rb_node gfn_node[2];
+	gfn_t base_gfn;
+	unsigned long npages;
+	unsigned long *dirty_bitmap;
+	struct kvm_arch_memory_slot arch;
+	unsigned long userspace_addr;
+	u32 flags;
+	short id;
+	u16 as_id;
+};
+
+struct kvm_rmap_head {
+	unsigned long val;
+};
+
+struct kvm_lpage_info {
+	int disallow_lpage;
+};
+
+struct msr_bitmap_range {
+	u32 flags;
+	u32 nmsrs;
+	u32 base;
+	unsigned long *bitmap;
+};
+
+struct kvm_x86_msr_filter {
+	u8 count;
+	bool default_allow: 1;
+	struct msr_bitmap_range ranges[16];
+};
+
+struct kvm_x86_pmu_event_filter {
+	__u32 action;
+	__u32 nevents;
+	__u32 fixed_counter_bitmap;
+	__u32 flags;
+	__u32 nr_includes;
+	__u32 nr_excludes;
+	__u64 *includes;
+	__u64 *excludes;
+	__u64 events[0];
+};
+
+struct kvm_coalesced_mmio {
+	__u64 phys_addr;
+	__u32 len;
+	union {
+		__u32 pad;
+		__u32 pio;
+	};
+	__u8 data[8];
+};
+
+struct kvm_coalesced_mmio_ring {
+	__u32 first;
+	__u32 last;
+	struct kvm_coalesced_mmio coalesced_mmio[0];
+};
+
+struct kvm_irq_routing_table {
+	int chip[72];
+	u32 nr_rt_entries;
+	struct hlist_head map[0];
+};
+
+struct mmu_notifier_range;
+
+struct mmu_notifier_ops {
+	void (*release)(struct mmu_notifier *, struct mm_struct *);
+	int (*clear_flush_young)(struct mmu_notifier *, struct mm_struct *, unsigned long, unsigned long);
+	int (*clear_young)(struct mmu_notifier *, struct mm_struct *, unsigned long, unsigned long);
+	int (*test_young)(struct mmu_notifier *, struct mm_struct *, unsigned long);
+	void (*change_pte)(struct mmu_notifier *, struct mm_struct *, unsigned long, pte_t);
+	int (*invalidate_range_start)(struct mmu_notifier *, const struct mmu_notifier_range *);
+	void (*invalidate_range_end)(struct mmu_notifier *, const struct mmu_notifier_range *);
+	void (*arch_invalidate_secondary_tlbs)(struct mmu_notifier *, struct mm_struct *, unsigned long, unsigned long);
+	struct mmu_notifier * (*alloc_notifier)(struct mm_struct *);
+	void (*free_notifier)(struct mmu_notifier *);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct mmu_notifier_range {
+	struct mm_struct *mm;
+	unsigned long start;
+	unsigned long end;
+	unsigned int flags;
+	enum mmu_notifier_event event;
+	void *owner;
+};
+
+struct _kvm_stats_desc;
+
+struct kvm_stat_data {
+	struct kvm *kvm;
+	const struct _kvm_stats_desc *desc;
+	enum kvm_stat_kind kind;
+};
+
+struct kvm_stats_desc {
+	__u32 flags;
+	__s16 exponent;
+	__u16 size;
+	__u32 offset;
+	__u32 bucket_size;
+	char name[0];
+};
+
+struct _kvm_stats_desc {
+	struct kvm_stats_desc desc;
+	char name[48];
+};
+
+struct preempt_ops {
+	void (*sched_in)(struct preempt_notifier *, int);
+	void (*sched_out)(struct preempt_notifier *, struct task_struct *);
+};
+
+struct kvm_debug_exit_arch {
+	__u32 exception;
+	__u32 pad;
+	__u64 pc;
+	__u64 dr6;
+	__u64 dr7;
+};
+
+struct kvm_hyperv_exit {
+	__u32 type;
+	__u32 pad1;
+	union {
+		struct {
+			__u32 msr;
+			__u32 pad2;
+			__u64 control;
+			__u64 evt_page;
+			__u64 msg_page;
+		} synic;
+		struct {
+			__u64 input;
+			__u64 result;
+			__u64 params[2];
+		} hcall;
+		struct {
+			__u32 msr;
+			__u32 pad2;
+			__u64 control;
+			__u64 status;
+			__u64 send_page;
+			__u64 recv_page;
+			__u64 pending_page;
+		} syndbg;
+	} u;
+};
+
+struct kvm_xen_exit {
+	__u32 type;
+	union {
+		struct {
+			__u32 longmode;
+			__u32 cpl;
+			__u64 input;
+			__u64 result;
+			__u64 params[6];
+		} hcall;
+	} u;
+};
+
+struct kvm_regs {
+	__u64 rax;
+	__u64 rbx;
+	__u64 rcx;
+	__u64 rdx;
+	__u64 rsi;
+	__u64 rdi;
+	__u64 rsp;
+	__u64 rbp;
+	__u64 r8;
+	__u64 r9;
+	__u64 r10;
+	__u64 r11;
+	__u64 r12;
+	__u64 r13;
+	__u64 r14;
+	__u64 r15;
+	__u64 rip;
+	__u64 rflags;
+};
+
+struct kvm_segment {
+	__u64 base;
+	__u32 limit;
+	__u16 selector;
+	__u8 type;
+	__u8 present;
+	__u8 dpl;
+	__u8 db;
+	__u8 s;
+	__u8 l;
+	__u8 g;
+	__u8 avl;
+	__u8 unusable;
+	__u8 padding;
+};
+
+struct kvm_dtable {
+	__u64 base;
+	__u16 limit;
+	__u16 padding[3];
+};
+
+struct kvm_sregs {
+	struct kvm_segment cs;
+	struct kvm_segment ds;
+	struct kvm_segment es;
+	struct kvm_segment fs;
+	struct kvm_segment gs;
+	struct kvm_segment ss;
+	struct kvm_segment tr;
+	struct kvm_segment ldt;
+	struct kvm_dtable gdt;
+	struct kvm_dtable idt;
+	__u64 cr0;
+	__u64 cr2;
+	__u64 cr3;
+	__u64 cr4;
+	__u64 cr8;
+	__u64 efer;
+	__u64 apic_base;
+	__u64 interrupt_bitmap[4];
+};
+
+struct kvm_vcpu_events {
+	struct {
+		__u8 injected;
+		__u8 nr;
+		__u8 has_error_code;
+		__u8 pending;
+		__u32 error_code;
+	} exception;
+	struct {
+		__u8 injected;
+		__u8 nr;
+		__u8 soft;
+		__u8 shadow;
+	} interrupt;
+	struct {
+		__u8 injected;
+		__u8 pending;
+		__u8 masked;
+		__u8 pad;
+	} nmi;
+	__u32 sipi_vector;
+	__u32 flags;
+	struct {
+		__u8 smm;
+		__u8 pending;
+		__u8 smm_inside_nmi;
+		__u8 latched_init;
+	} smi;
+	struct {
+		__u8 pending;
+	} triple_fault;
+	__u8 reserved[26];
+	__u8 exception_has_payload;
+	__u64 exception_payload;
+};
+
+struct kvm_sync_regs {
+	struct kvm_regs regs;
+	struct kvm_sregs sregs;
+	struct kvm_vcpu_events events;
+};
+
+struct kvm_run {
+	__u8 request_interrupt_window;
+	__u8 immediate_exit;
+	__u8 padding1[6];
+	__u32 exit_reason;
+	__u8 ready_for_interrupt_injection;
+	__u8 if_flag;
+	__u16 flags;
+	__u64 cr8;
+	__u64 apic_base;
+	union {
+		struct {
+			__u64 hardware_exit_reason;
+		} hw;
+		struct {
+			__u64 hardware_entry_failure_reason;
+			__u32 cpu;
+		} fail_entry;
+		struct {
+			__u32 exception;
+			__u32 error_code;
+		} ex;
+		struct {
+			__u8 direction;
+			__u8 size;
+			__u16 port;
+			__u32 count;
+			__u64 data_offset;
+		} io;
+		struct {
+			struct kvm_debug_exit_arch arch;
+		} debug;
+		struct {
+			__u64 phys_addr;
+			__u8 data[8];
+			__u32 len;
+			__u8 is_write;
+		} mmio;
+		struct {
+			__u64 nr;
+			__u64 args[6];
+			__u64 ret;
+			union {
+				__u64 flags;
+			};
+		} hypercall;
+		struct {
+			__u64 rip;
+			__u32 is_write;
+			__u32 pad;
+		} tpr_access;
+		struct {
+			__u8 icptcode;
+			__u16 ipa;
+			__u32 ipb;
+		} s390_sieic;
+		__u64 s390_reset_flags;
+		struct {
+			__u64 trans_exc_code;
+			__u32 pgm_code;
+		} s390_ucontrol;
+		struct {
+			__u32 dcrn;
+			__u32 data;
+			__u8 is_write;
+		} dcr;
+		struct {
+			__u32 suberror;
+			__u32 ndata;
+			__u64 data[16];
+		} internal;
+		struct {
+			__u32 suberror;
+			__u32 ndata;
+			__u64 flags;
+			union {
+				struct {
+					__u8 insn_size;
+					__u8 insn_bytes[15];
+				};
+			};
+		} emulation_failure;
+		struct {
+			__u64 gprs[32];
+		} osi;
+		struct {
+			__u64 nr;
+			__u64 ret;
+			__u64 args[9];
+		} papr_hcall;
+		struct {
+			__u16 subchannel_id;
+			__u16 subchannel_nr;
+			__u32 io_int_parm;
+			__u32 io_int_word;
+			__u32 ipb;
+			__u8 dequeued;
+		} s390_tsch;
+		struct {
+			__u32 epr;
+		} epr;
+		struct {
+			__u32 type;
+			__u32 ndata;
+			union {
+				__u64 data[16];
+			};
+		} system_event;
+		struct {
+			__u64 addr;
+			__u8 ar;
+			__u8 reserved;
+			__u8 fc;
+			__u8 sel1;
+			__u16 sel2;
+		} s390_stsi;
+		struct {
+			__u8 vector;
+		} eoi;
+		struct kvm_hyperv_exit hyperv;
+		struct {
+			__u64 esr_iss;
+			__u64 fault_ipa;
+		} arm_nisv;
+		struct {
+			__u8 error;
+			__u8 pad[7];
+			__u32 reason;
+			__u32 index;
+			__u64 data;
+		} msr;
+		struct kvm_xen_exit xen;
+		struct {
+			unsigned long extension_id;
+			unsigned long function_id;
+			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 {
+			__u32 flags;
+		} notify;
+		char padding[256];
+	};
+	__u64 kvm_valid_regs;
+	__u64 kvm_dirty_regs;
+	union {
+		struct kvm_sync_regs regs;
+		char padding[2048];
+	} s;
+};
+
+struct kvm_cpuid_entry2 {
+	__u32 function;
+	__u32 index;
+	__u32 flags;
+	__u32 eax;
+	__u32 ebx;
+	__u32 ecx;
+	__u32 edx;
+	__u32 padding[3];
+};
+
+struct kvm_vcpu_hv_synic {
+	u64 version;
+	u64 control;
+	u64 msg_page;
+	u64 evt_page;
+	atomic64_t sint[16];
+	atomic_t sint_to_gsi[16];
+	unsigned long auto_eoi_bitmap[4];
+	unsigned long vec_bitmap[4];
+	bool active;
+	bool dont_zero_synic_pages;
+};
+
+union hv_stimer_config {
+	u64 as_uint64;
+	struct {
+		u64 enable: 1;
+		u64 periodic: 1;
+		u64 lazy: 1;
+		u64 auto_enable: 1;
+		u64 apic_vector: 8;
+		u64 direct_mode: 1;
+		u64 reserved_z0: 3;
+		u64 sintx: 4;
+		u64 reserved_z1: 44;
+	};
+};
+
+union hv_message_flags {
+	__u8 asu8;
+	struct {
+		__u8 msg_pending: 1;
+		__u8 reserved: 7;
+	};
+};
+
+union hv_port_id {
+	__u32 asu32;
+	struct {
+		__u32 id: 24;
+		__u32 reserved: 8;
+	} u;
+};
+
+struct hv_message_header {
+	__u32 message_type;
+	__u8 payload_size;
+	union hv_message_flags message_flags;
+	__u8 reserved[2];
+	union {
+		__u64 sender;
+		union hv_port_id port;
+	};
+};
+
+struct hv_message {
+	struct hv_message_header header;
+	union {
+		__u64 payload[30];
+	} u;
+};
+
+struct kvm_vcpu_hv_stimer {
+	struct hrtimer timer;
+	int index;
+	union hv_stimer_config config;
+	u64 count;
+	u64 exp_time;
+	struct hv_message msg;
+	bool msg_pending;
+};
+
+struct kvm_vcpu_hv_tlb_flush_fifo {
+	spinlock_t write_lock;
+	struct {
+		union {
+			struct __kfifo kfifo;
+			u64 *type;
+			const u64 *const_type;
+			char (*rectype)[0];
+			u64 *ptr;
+			const u64 *ptr_const;
+		};
+		u64 buf[16];
+	} entries;
+};
+
+struct hv_nested_enlightenments_control {
+	struct {
+		__u32 directhypercall: 1;
+		__u32 reserved: 31;
+	} features;
+	struct {
+		__u32 inter_partition_comm: 1;
+		__u32 reserved: 31;
+	} hypercallControls;
+};
+
+struct hv_vp_assist_page {
+	__u32 apic_assist;
+	__u32 reserved1;
+	__u32 vtl_entry_reason;
+	__u32 vtl_reserved;
+	__u64 vtl_ret_x64rax;
+	__u64 vtl_ret_x64rcx;
+	struct hv_nested_enlightenments_control nested_control;
+	__u8 enlighten_vmentry;
+	__u8 reserved2[7];
+	__u64 current_nested_vmcs;
+	__u8 synthetic_time_unhalted_timer_expired;
+	__u8 reserved3[7];
+	__u8 virtualization_fault_information[40];
+	__u8 reserved4[8];
+	__u8 intercept_message[256];
+	__u8 vtl_ret_actions[256];
+};
+
+struct kvm_vcpu_hv {
+	struct kvm_vcpu *vcpu;
+	u32 vp_index;
+	u64 hv_vapic;
+	s64 runtime_offset;
+	struct kvm_vcpu_hv_synic synic;
+	struct kvm_hyperv_exit exit;
+	struct kvm_vcpu_hv_stimer stimer[4];
+	unsigned long stimer_pending_bitmap[1];
+	bool enforce_cpuid;
+	struct {
+		u32 features_eax;
+		u32 features_ebx;
+		u32 features_edx;
+		u32 enlightenments_eax;
+		u32 enlightenments_ebx;
+		u32 syndbg_cap_eax;
+		u32 nested_eax;
+		u32 nested_ebx;
+	} cpuid_cache;
+	struct kvm_vcpu_hv_tlb_flush_fifo tlb_flush_fifo[2];
+	u64 sparse_banks[64];
+	struct hv_vp_assist_page vp_assist_page;
+	struct {
+		u64 pa_page_gpa;
+		u64 vm_id;
+		u32 vp_id;
+	} nested;
+};
+
+struct kvm_dirty_gfn {
+	__u32 flags;
+	__u32 slot;
+	__u64 offset;
+};
+
+union cpuid10_edx {
+	struct {
+		unsigned int num_counters_fixed: 5;
+		unsigned int bit_width_fixed: 8;
+		unsigned int reserved1: 2;
+		unsigned int anythread_deprecated: 1;
+		unsigned int reserved2: 16;
+	} split;
+	unsigned int full;
+};
+
+union cpuid10_eax {
+	struct {
+		unsigned int version_id: 8;
+		unsigned int num_counters: 8;
+		unsigned int bit_width: 8;
+		unsigned int mask_length: 8;
+	} split;
+	unsigned int full;
+};
+
+union cpuid10_ebx {
+	struct {
+		unsigned int no_unhalted_core_cycles: 1;
+		unsigned int no_instructions_retired: 1;
+		unsigned int no_unhalted_reference_cycles: 1;
+		unsigned int no_llc_reference: 1;
+		unsigned int no_llc_misses: 1;
+		unsigned int no_branch_instruction_retired: 1;
+		unsigned int no_branch_misses_retired: 1;
+	} split;
+	unsigned int full;
+};
+
+typedef int perf_snapshot_branch_stack_t(struct perf_branch_entry *, unsigned int);
+
+struct bts_ctx {
+	struct perf_output_handle handle;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct debug_store ds_back;
+	int state;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+enum {
+	BTS_STATE_STOPPED = 0,
+	BTS_STATE_INACTIVE = 1,
+	BTS_STATE_ACTIVE = 2,
+};
+
+enum pageflags {
+	PG_locked = 0,
+	PG_writeback = 1,
+	PG_referenced = 2,
+	PG_uptodate = 3,
+	PG_dirty = 4,
+	PG_lru = 5,
+	PG_head = 6,
+	PG_waiters = 7,
+	PG_active = 8,
+	PG_workingset = 9,
+	PG_error = 10,
+	PG_slab = 11,
+	PG_owner_priv_1 = 12,
+	PG_arch_1 = 13,
+	PG_reserved = 14,
+	PG_private = 15,
+	PG_private_2 = 16,
+	PG_mappedtodisk = 17,
+	PG_reclaim = 18,
+	PG_swapbacked = 19,
+	PG_unevictable = 20,
+	PG_mlocked = 21,
+	PG_uncached = 22,
+	PG_oem_reserved_1 = 23,
+	PG_oem_reserved_2 = 24,
+	PG_oem_reserved_3 = 25,
+	PG_oem_reserved_4 = 26,
+	__NR_PAGEFLAGS = 27,
+	PG_readahead = 18,
+	PG_anon_exclusive = 17,
+	PG_checked = 12,
+	PG_swapcache = 12,
+	PG_fscache = 16,
+	PG_pinned = 12,
+	PG_savepinned = 4,
+	PG_foreign = 12,
+	PG_xen_remapped = 12,
+	PG_isolated = 18,
+	PG_reported = 3,
+	PG_vmemmap_self_hosted = 12,
+	PG_has_hwpoisoned = 10,
+	PG_large_rmappable = 9,
+};
+
+struct bts_phys {
+	struct page *page;
+	unsigned long size;
+	unsigned long offset;
+	unsigned long displacement;
+};
+
+struct bts_buffer {
+	size_t real_size;
+	unsigned int nr_pages;
+	unsigned int nr_bufs;
+	unsigned int cur_buf;
+	bool snapshot;
+	local_t data_size;
+	local_t head;
+	unsigned long end;
+	void **data_pages;
+	struct bts_phys buf[0];
+};
+
+enum {
+	PERF_TXN_ELISION = 1ULL,
+	PERF_TXN_TRANSACTION = 2ULL,
+	PERF_TXN_SYNC = 4ULL,
+	PERF_TXN_ASYNC = 8ULL,
+	PERF_TXN_RETRY = 16ULL,
+	PERF_TXN_CONFLICT = 32ULL,
+	PERF_TXN_CAPACITY_WRITE = 64ULL,
+	PERF_TXN_CAPACITY_READ = 128ULL,
+	PERF_TXN_MAX = 256ULL,
+	PERF_TXN_ABORT_MASK = 18446744069414584320ULL,
+	PERF_TXN_ABORT_SHIFT = 32ULL,
+};
+
+struct bts_record {
+	u64 from;
+	u64 to;
+	u64 flags;
+};
+
+struct pebs_record_core {
+	u64 flags;
+	u64 ip;
+	u64 ax;
+	u64 bx;
+	u64 cx;
+	u64 dx;
+	u64 si;
+	u64 di;
+	u64 bp;
+	u64 sp;
+	u64 r8;
+	u64 r9;
+	u64 r10;
+	u64 r11;
+	u64 r12;
+	u64 r13;
+	u64 r14;
+	u64 r15;
+};
+
+struct pebs_record_nhm {
+	u64 flags;
+	u64 ip;
+	u64 ax;
+	u64 bx;
+	u64 cx;
+	u64 dx;
+	u64 si;
+	u64 di;
+	u64 bp;
+	u64 sp;
+	u64 r8;
+	u64 r9;
+	u64 r10;
+	u64 r11;
+	u64 r12;
+	u64 r13;
+	u64 r14;
+	u64 r15;
+	u64 status;
+	u64 dla;
+	u64 dse;
+	u64 lat;
+};
+
+struct pebs_basic {
+	u64 format_size;
+	u64 ip;
+	u64 applicable_counters;
+	u64 tsc;
+};
+
+struct x86_perf_regs {
+	struct pt_regs regs;
+	u64 *xmm_regs;
+};
+
+struct entry_stack {
+	char stack[4096];
+};
+
+struct entry_stack_page {
+	struct entry_stack stack;
+};
+
+struct x86_hw_tss {
+	u32 reserved1;
+	u64 sp0;
+	u64 sp1;
+	u64 sp2;
+	u64 reserved2;
+	u64 ist[7];
+	u32 reserved3;
+	u32 reserved4;
+	u16 reserved5;
+	u16 io_bitmap_base;
+} __attribute__((packed));
+
+struct x86_io_bitmap {
+	u64 prev_sequence;
+	unsigned int prev_max;
+	unsigned long bitmap[1025];
+	unsigned long mapall[1025];
+};
+
+struct tss_struct {
+	struct x86_hw_tss x86_tss;
+	struct x86_io_bitmap io_bitmap;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct cea_exception_stacks {
+	char DF_stack_guard[4096];
+	char DF_stack[8192];
+	char NMI_stack_guard[4096];
+	char NMI_stack[8192];
+	char DB_stack_guard[4096];
+	char DB_stack[8192];
+	char MCE_stack_guard[4096];
+	char MCE_stack[8192];
+	char VC_stack_guard[4096];
+	char VC_stack[8192];
+	char VC2_stack_guard[4096];
+	char VC2_stack[8192];
+	char IST_top_guard[4096];
+};
+
+struct debug_store_buffers {
+	char bts_buffer[65536];
+	char pebs_buffer[65536];
+};
+
+struct cpu_entry_area {
+	char gdt[4096];
+	struct entry_stack_page entry_stack_page;
+	struct tss_struct tss;
+	struct cea_exception_stacks estacks;
+	struct debug_store cpu_debug_store;
+	struct debug_store_buffers cpu_debug_buffers;
+};
+
+struct perf_event_header {
+	__u32 type;
+	__u16 misc;
+	__u16 size;
+};
+
+union intel_x86_pebs_dse {
+	u64 val;
+	struct {
+		unsigned int ld_dse: 4;
+		unsigned int ld_stlb_miss: 1;
+		unsigned int ld_locked: 1;
+		unsigned int ld_data_blk: 1;
+		unsigned int ld_addr_blk: 1;
+		unsigned int ld_reserved: 24;
+	};
+	struct {
+		unsigned int st_l1d_hit: 1;
+		unsigned int st_reserved1: 3;
+		unsigned int st_stlb_miss: 1;
+		unsigned int st_locked: 1;
+		unsigned int st_reserved2: 26;
+	};
+	struct {
+		unsigned int st_lat_dse: 4;
+		unsigned int st_lat_stlb_miss: 1;
+		unsigned int st_lat_locked: 1;
+		unsigned int ld_reserved3: 26;
+	};
+	struct {
+		unsigned int mtl_dse: 5;
+		unsigned int mtl_locked: 1;
+		unsigned int mtl_stlb_miss: 1;
+		unsigned int mtl_fwd_blk: 1;
+		unsigned int ld_reserved4: 24;
+	};
+};
+
+struct pebs_gprs {
+	u64 flags;
+	u64 ip;
+	u64 ax;
+	u64 cx;
+	u64 dx;
+	u64 bx;
+	u64 sp;
+	u64 bp;
+	u64 si;
+	u64 di;
+	u64 r8;
+	u64 r9;
+	u64 r10;
+	u64 r11;
+	u64 r12;
+	u64 r13;
+	u64 r14;
+	u64 r15;
+};
+
+struct lbr_entry {
+	u64 from;
+	u64 to;
+	u64 info;
+};
+
+struct pebs_record_skl {
+	u64 flags;
+	u64 ip;
+	u64 ax;
+	u64 bx;
+	u64 cx;
+	u64 dx;
+	u64 si;
+	u64 di;
+	u64 bp;
+	u64 sp;
+	u64 r8;
+	u64 r9;
+	u64 r10;
+	u64 r11;
+	u64 r12;
+	u64 r13;
+	u64 r14;
+	u64 r15;
+	u64 status;
+	u64 dla;
+	u64 dse;
+	u64 lat;
+	u64 real_ip;
+	u64 tsx_tuning;
+	u64 tsc;
+};
+
+struct pebs_meminfo {
+	u64 address;
+	u64 aux;
+	u64 latency;
+	u64 tsx_tuning;
+};
+
+struct pebs_xmm {
+	u64 xmm[32];
+};
+
+enum {
+	LBR_NONE = 0,
+	LBR_VALID = 1,
+};
+
+enum {
+	ARCH_LBR_BR_TYPE_JCC = 0,
+	ARCH_LBR_BR_TYPE_NEAR_IND_JMP = 1,
+	ARCH_LBR_BR_TYPE_NEAR_REL_JMP = 2,
+	ARCH_LBR_BR_TYPE_NEAR_IND_CALL = 3,
+	ARCH_LBR_BR_TYPE_NEAR_REL_CALL = 4,
+	ARCH_LBR_BR_TYPE_NEAR_RET = 5,
+	ARCH_LBR_BR_TYPE_KNOWN_MAX = 5,
+	ARCH_LBR_BR_TYPE_MAP_MAX = 16,
+};
+
+enum xfeature {
+	XFEATURE_FP = 0,
+	XFEATURE_SSE = 1,
+	XFEATURE_YMM = 2,
+	XFEATURE_BNDREGS = 3,
+	XFEATURE_BNDCSR = 4,
+	XFEATURE_OPMASK = 5,
+	XFEATURE_ZMM_Hi256 = 6,
+	XFEATURE_Hi16_ZMM = 7,
+	XFEATURE_PT_UNIMPLEMENTED_SO_FAR = 8,
+	XFEATURE_PKRU = 9,
+	XFEATURE_PASID = 10,
+	XFEATURE_CET_USER = 11,
+	XFEATURE_CET_KERNEL_UNUSED = 12,
+	XFEATURE_RSRVD_COMP_13 = 13,
+	XFEATURE_RSRVD_COMP_14 = 14,
+	XFEATURE_LBR = 15,
+	XFEATURE_RSRVD_COMP_16 = 16,
+	XFEATURE_XTILE_CFG = 17,
+	XFEATURE_XTILE_DATA = 18,
+	XFEATURE_MAX = 19,
+};
+
+struct x86_perf_task_context_opt {
+	int lbr_callstack_users;
+	int lbr_stack_state;
+	int log_id;
+};
+
+struct x86_perf_task_context_arch_lbr {
+	struct x86_perf_task_context_opt opt;
+	struct lbr_entry entries[0];
+};
+
+struct x86_perf_task_context {
+	u64 lbr_sel;
+	int tos;
+	int valid_lbrs;
+	struct x86_perf_task_context_opt opt;
+	struct lbr_entry lbr[32];
+};
+
+union cpuid28_ebx {
+	struct {
+		unsigned int lbr_cpl: 1;
+		unsigned int lbr_filter: 1;
+		unsigned int lbr_call_stack: 1;
+	} split;
+	unsigned int full;
+};
+
+union cpuid28_eax {
+	struct {
+		unsigned int lbr_depth_mask: 8;
+		unsigned int reserved: 22;
+		unsigned int lbr_deep_c_reset: 1;
+		unsigned int lbr_lip: 1;
+	} split;
+	unsigned int full;
+};
+
+union cpuid28_ecx {
+	struct {
+		unsigned int lbr_mispred: 1;
+		unsigned int lbr_timed_lbr: 1;
+		unsigned int lbr_br_type: 1;
+	} split;
+	unsigned int full;
+};
+
+struct arch_lbr_state {
+	u64 lbr_ctl;
+	u64 lbr_depth;
+	u64 ler_from;
+	u64 ler_to;
+	u64 ler_info;
+	struct lbr_entry entries[0];
+};
+
+struct x86_perf_task_context_arch_lbr_xsave {
+	struct x86_perf_task_context_opt opt;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	union {
+		struct xregs_state xsave;
+		struct {
+			struct fxregs_state i387;
+			struct xstate_header header;
+			struct arch_lbr_state lbr;
+			long: 64;
+			long: 64;
+			long: 64;
+		};
+	};
+};
+
+struct x86_pmu_lbr {
+	unsigned int nr;
+	unsigned int from;
+	unsigned int to;
+	unsigned int info;
+};
+
+struct p4_event_bind {
+	unsigned int opcode;
+	unsigned int escr_msr[2];
+	unsigned int escr_emask;
+	unsigned int shared;
+	signed char cntr[6];
+};
+
+struct p4_pebs_bind {
+	unsigned int metric_pebs;
+	unsigned int metric_vert;
+};
+
+struct p4_event_alias {
+	u64 original;
+	u64 alternative;
+};
+
+enum P4_PEBS_METRIC {
+	P4_PEBS_METRIC__none = 0,
+	P4_PEBS_METRIC__1stl_cache_load_miss_retired = 1,
+	P4_PEBS_METRIC__2ndl_cache_load_miss_retired = 2,
+	P4_PEBS_METRIC__dtlb_load_miss_retired = 3,
+	P4_PEBS_METRIC__dtlb_store_miss_retired = 4,
+	P4_PEBS_METRIC__dtlb_all_miss_retired = 5,
+	P4_PEBS_METRIC__tagged_mispred_branch = 6,
+	P4_PEBS_METRIC__mob_load_replay_retired = 7,
+	P4_PEBS_METRIC__split_load_retired = 8,
+	P4_PEBS_METRIC__split_store_retired = 9,
+	P4_PEBS_METRIC__max = 10,
+};
+
+enum P4_EVENTS {
+	P4_EVENT_TC_DELIVER_MODE = 0,
+	P4_EVENT_BPU_FETCH_REQUEST = 1,
+	P4_EVENT_ITLB_REFERENCE = 2,
+	P4_EVENT_MEMORY_CANCEL = 3,
+	P4_EVENT_MEMORY_COMPLETE = 4,
+	P4_EVENT_LOAD_PORT_REPLAY = 5,
+	P4_EVENT_STORE_PORT_REPLAY = 6,
+	P4_EVENT_MOB_LOAD_REPLAY = 7,
+	P4_EVENT_PAGE_WALK_TYPE = 8,
+	P4_EVENT_BSQ_CACHE_REFERENCE = 9,
+	P4_EVENT_IOQ_ALLOCATION = 10,
+	P4_EVENT_IOQ_ACTIVE_ENTRIES = 11,
+	P4_EVENT_FSB_DATA_ACTIVITY = 12,
+	P4_EVENT_BSQ_ALLOCATION = 13,
+	P4_EVENT_BSQ_ACTIVE_ENTRIES = 14,
+	P4_EVENT_SSE_INPUT_ASSIST = 15,
+	P4_EVENT_PACKED_SP_UOP = 16,
+	P4_EVENT_PACKED_DP_UOP = 17,
+	P4_EVENT_SCALAR_SP_UOP = 18,
+	P4_EVENT_SCALAR_DP_UOP = 19,
+	P4_EVENT_64BIT_MMX_UOP = 20,
+	P4_EVENT_128BIT_MMX_UOP = 21,
+	P4_EVENT_X87_FP_UOP = 22,
+	P4_EVENT_TC_MISC = 23,
+	P4_EVENT_GLOBAL_POWER_EVENTS = 24,
+	P4_EVENT_TC_MS_XFER = 25,
+	P4_EVENT_UOP_QUEUE_WRITES = 26,
+	P4_EVENT_RETIRED_MISPRED_BRANCH_TYPE = 27,
+	P4_EVENT_RETIRED_BRANCH_TYPE = 28,
+	P4_EVENT_RESOURCE_STALL = 29,
+	P4_EVENT_WC_BUFFER = 30,
+	P4_EVENT_B2B_CYCLES = 31,
+	P4_EVENT_BNR = 32,
+	P4_EVENT_SNOOP = 33,
+	P4_EVENT_RESPONSE = 34,
+	P4_EVENT_FRONT_END_EVENT = 35,
+	P4_EVENT_EXECUTION_EVENT = 36,
+	P4_EVENT_REPLAY_EVENT = 37,
+	P4_EVENT_INSTR_RETIRED = 38,
+	P4_EVENT_UOPS_RETIRED = 39,
+	P4_EVENT_UOP_TYPE = 40,
+	P4_EVENT_BRANCH_RETIRED = 41,
+	P4_EVENT_MISPRED_BRANCH_RETIRED = 42,
+	P4_EVENT_X87_ASSIST = 43,
+	P4_EVENT_MACHINE_CLEAR = 44,
+	P4_EVENT_INSTR_COMPLETED = 45,
+};
+
+struct pt_filter {
+	unsigned long msr_a;
+	unsigned long msr_b;
+	unsigned long config;
+};
+
+struct pt_filters {
+	struct pt_filter filter[4];
+	unsigned int nr_filters;
+};
+
+struct pt {
+	struct perf_output_handle handle;
+	struct pt_filters filters;
+	int handle_nmi;
+	int vmx_on;
+	u64 output_base;
+	u64 output_mask;
+};
+
+struct pt_pmu {
+	struct pmu pmu;
+	u32 caps[8];
+	bool vmx;
+	bool branch_en_always_on;
+	unsigned long max_nonturbo_ratio;
+	unsigned int tsc_art_num;
+	unsigned int tsc_art_den;
+};
+
+struct pt_cap_desc {
+	const char *name;
+	u32 leaf;
+	u8 reg;
+	u32 mask;
+};
+
+struct pt_address_range {
+	unsigned long msr_a;
+	unsigned long msr_b;
+	unsigned int reg_off;
+};
+
+enum pt_capabilities {
+	PT_CAP_max_subleaf = 0,
+	PT_CAP_cr3_filtering = 1,
+	PT_CAP_psb_cyc = 2,
+	PT_CAP_ip_filtering = 3,
+	PT_CAP_mtc = 4,
+	PT_CAP_ptwrite = 5,
+	PT_CAP_power_event_trace = 6,
+	PT_CAP_event_trace = 7,
+	PT_CAP_tnt_disable = 8,
+	PT_CAP_topa_output = 9,
+	PT_CAP_topa_multiple_entries = 10,
+	PT_CAP_single_range_output = 11,
+	PT_CAP_output_subsys = 12,
+	PT_CAP_payloads_lip = 13,
+	PT_CAP_num_address_ranges = 14,
+	PT_CAP_mtc_periods = 15,
+	PT_CAP_cycle_thresholds = 16,
+	PT_CAP_psb_periods = 17,
+};
+
+enum cpuid_regs_idx {
+	CPUID_EAX = 0,
+	CPUID_EBX = 1,
+	CPUID_ECX = 2,
+	CPUID_EDX = 3,
+};
+
+enum perf_addr_filter_action_t {
+	PERF_ADDR_FILTER_ACTION_STOP = 0,
+	PERF_ADDR_FILTER_ACTION_START = 1,
+	PERF_ADDR_FILTER_ACTION_FILTER = 2,
+};
+
+struct topa {
+	struct list_head list;
+	u64 offset;
+	size_t size;
+	int last;
+	unsigned int z_count;
+};
+
+struct topa_entry {
+	u64 end: 1;
+	u64 rsvd0: 1;
+	u64 intr: 1;
+	u64 rsvd1: 1;
+	u64 stop: 1;
+	u64 rsvd2: 1;
+	u64 size: 4;
+	u64 rsvd3: 2;
+	u64 base: 36;
+	u64 rsvd4: 16;
+};
+
+struct topa_page {
+	struct topa_entry table[507];
+	struct topa topa;
+};
+
+struct dev_ext_attribute {
+	struct device_attribute attr;
+	void *var;
+};
+
+struct perf_addr_filter {
+	struct list_head entry;
+	struct path path;
+	unsigned long offset;
+	unsigned long size;
+	enum perf_addr_filter_action_t action;
+};
+
+struct pt_buffer {
+	struct list_head tables;
+	struct topa *first;
+	struct topa *last;
+	struct topa *cur;
+	unsigned int cur_idx;
+	size_t output_off;
+	unsigned long nr_pages;
+	local_t data_size;
+	local64_t head;
+	bool snapshot;
+	bool single;
+	long stop_pos;
+	long intr_pos;
+	struct topa_entry *stop_te;
+	struct topa_entry *intr_te;
+	void **data_pages;
+};
+
+struct intel_uncore_pmu;
+
+struct intel_uncore_ops;
+
+struct uncore_event_desc;
+
+struct freerunning_counters;
+
+struct intel_uncore_topology;
+
+struct intel_uncore_type {
+	const char *name;
+	int num_counters;
+	int num_boxes;
+	int perf_ctr_bits;
+	int fixed_ctr_bits;
+	int num_freerunning_types;
+	int type_id;
+	unsigned int perf_ctr;
+	unsigned int event_ctl;
+	unsigned int event_mask;
+	unsigned int event_mask_ext;
+	unsigned int fixed_ctr;
+	unsigned int fixed_ctl;
+	unsigned int box_ctl;
+	u64 *box_ctls;
+	union {
+		unsigned int msr_offset;
+		unsigned int mmio_offset;
+	};
+	unsigned int mmio_map_size;
+	unsigned int num_shared_regs: 8;
+	unsigned int single_fixed: 1;
+	unsigned int pair_ctr_ctl: 1;
+	union {
+		unsigned int *msr_offsets;
+		unsigned int *pci_offsets;
+		unsigned int *mmio_offsets;
+	};
+	unsigned int *box_ids;
+	struct event_constraint unconstrainted;
+	struct event_constraint *constraints;
+	struct intel_uncore_pmu *pmus;
+	struct intel_uncore_ops *ops;
+	struct uncore_event_desc *event_descs;
+	struct freerunning_counters *freerunning;
+	const struct attribute_group *attr_groups[4];
+	const struct attribute_group **attr_update;
+	struct pmu *pmu;
+	struct intel_uncore_topology **topology;
+	int (*get_topology)(struct intel_uncore_type *);
+	void (*set_mapping)(struct intel_uncore_type *);
+	void (*cleanup_mapping)(struct intel_uncore_type *);
+};
+
+struct intel_uncore_box;
+
+struct intel_uncore_pmu {
+	struct pmu pmu;
+	char name[32];
+	int pmu_idx;
+	int func_id;
+	bool registered;
+	atomic_t activeboxes;
+	struct intel_uncore_type *type;
+	struct intel_uncore_box **boxes;
+};
+
+struct intel_uncore_extra_reg {
+	raw_spinlock_t lock;
+	u64 config;
+	u64 config1;
+	u64 config2;
+	atomic_t ref;
+};
+
+struct intel_uncore_box {
+	int dieid;
+	int n_active;
+	int n_events;
+	int cpu;
+	unsigned long flags;
+	atomic_t refcnt;
+	struct perf_event *events[10];
+	struct perf_event *event_list[10];
+	struct event_constraint *event_constraint[10];
+	unsigned long active_mask[1];
+	u64 tags[10];
+	struct pci_dev *pci_dev;
+	struct intel_uncore_pmu *pmu;
+	u64 hrtimer_duration;
+	struct hrtimer hrtimer;
+	struct list_head list;
+	struct list_head active_list;
+	void *io_addr;
+	struct intel_uncore_extra_reg shared_regs[0];
+};
+
+struct intel_uncore_ops {
+	void (*init_box)(struct intel_uncore_box *);
+	void (*exit_box)(struct intel_uncore_box *);
+	void (*disable_box)(struct intel_uncore_box *);
+	void (*enable_box)(struct intel_uncore_box *);
+	void (*disable_event)(struct intel_uncore_box *, struct perf_event *);
+	void (*enable_event)(struct intel_uncore_box *, struct perf_event *);
+	u64 (*read_counter)(struct intel_uncore_box *, struct perf_event *);
+	int (*hw_config)(struct intel_uncore_box *, struct perf_event *);
+	struct event_constraint * (*get_constraint)(struct intel_uncore_box *, struct perf_event *);
+	void (*put_constraint)(struct intel_uncore_box *, struct perf_event *);
+};
+
+struct uncore_event_desc {
+	struct device_attribute attr;
+	const char *config;
+};
+
+struct freerunning_counters {
+	unsigned int counter_base;
+	unsigned int counter_offset;
+	unsigned int box_offset;
+	unsigned int num_counters;
+	unsigned int bits;
+	unsigned int *box_offsets;
+};
+
+struct uncore_iio_topology;
+
+struct uncore_upi_topology;
+
+struct intel_uncore_topology {
+	int pmu_idx;
+	union {
+		void *untyped;
+		struct uncore_iio_topology *iio;
+		struct uncore_upi_topology *upi;
+	};
+};
+
+struct uncore_iio_topology {
+	int pci_bus_no;
+	int segment;
+};
+
+struct uncore_upi_topology {
+	int die_to;
+	int pmu_idx_to;
+	int enabled;
+};
+
+struct pci_extra_dev {
+	struct pci_dev *dev[4];
+};
+
+struct intel_uncore_init_fun {
+	void (*cpu_init)();
+	int (*pci_init)();
+	void (*mmio_init)();
+	bool use_discovery;
+	int *uncore_units_ignore;
+};
+
+enum bus_notifier_event {
+	BUS_NOTIFY_ADD_DEVICE = 0,
+	BUS_NOTIFY_DEL_DEVICE = 1,
+	BUS_NOTIFY_REMOVED_DEVICE = 2,
+	BUS_NOTIFY_BIND_DRIVER = 3,
+	BUS_NOTIFY_BOUND_DRIVER = 4,
+	BUS_NOTIFY_UNBIND_DRIVER = 5,
+	BUS_NOTIFY_UNBOUND_DRIVER = 6,
+	BUS_NOTIFY_DRIVER_NOT_BOUND = 7,
+};
+
+struct pci2phy_map {
+	struct list_head list;
+	int segment;
+	int pbus_to_dieid[256];
+};
+
+struct acpi_device;
+
+struct pci_sysdata {
+	int domain;
+	int node;
+	struct acpi_device *companion;
+	void *iommu;
+	void *fwnode;
+};
+
+enum {
+	EXTRA_REG_NHMEX_M_FILTER = 0,
+	EXTRA_REG_NHMEX_M_DSP = 1,
+	EXTRA_REG_NHMEX_M_ISS = 2,
+	EXTRA_REG_NHMEX_M_MAP = 3,
+	EXTRA_REG_NHMEX_M_MSC_THR = 4,
+	EXTRA_REG_NHMEX_M_PGT = 5,
+	EXTRA_REG_NHMEX_M_PLD = 6,
+	EXTRA_REG_NHMEX_M_ZDP_CTL_FVC = 7,
+};
+
+struct imc_uncore_pci_dev {
+	__u32 pci_id;
+	struct pci_driver *driver;
+};
+
+enum uncore_access_type {
+	UNCORE_ACCESS_MSR = 0,
+	UNCORE_ACCESS_MMIO = 1,
+	UNCORE_ACCESS_PCI = 2,
+	UNCORE_ACCESS_MAX = 3,
+};
+
+enum {
+	SNBEP_PCI_QPI_PORT0_FILTER = 0,
+	SNBEP_PCI_QPI_PORT1_FILTER = 1,
+	BDX_PCI_QPI_PORT2_FILTER = 2,
+};
+
+enum {
+	IIO_TOPOLOGY_TYPE = 0,
+	UPI_TOPOLOGY_TYPE = 1,
+	TOPOLOGY_MAX = 2,
+};
+
+struct intel_uncore_discovery_type {
+	struct rb_node node;
+	enum uncore_access_type access_type;
+	u64 box_ctrl;
+	u64 *box_ctrl_die;
+	u16 type;
+	u8 num_counters;
+	u8 counter_width;
+	u8 ctl_offset;
+	u8 ctr_offset;
+	u16 num_boxes;
+	unsigned int *ids;
+	unsigned int *box_offset;
+};
+
+struct uncore_global_discovery {
+	union {
+		u64 table1;
+		struct {
+			u64 type: 8;
+			u64 stride: 8;
+			u64 max_units: 10;
+			u64 __reserved_1: 36;
+			u64 access_type: 2;
+		};
+	};
+	u64 ctl;
+	union {
+		u64 table3;
+		struct {
+			u64 status_offset: 8;
+			u64 num_status: 16;
+			u64 __reserved_2: 40;
+		};
+	};
+};
+
+struct uncore_unit_discovery {
+	union {
+		u64 table1;
+		struct {
+			u64 num_regs: 8;
+			u64 ctl_offset: 8;
+			u64 bit_width: 8;
+			u64 ctr_offset: 8;
+			u64 status_offset: 8;
+			u64 __reserved_1: 22;
+			u64 access_type: 2;
+		};
+	};
+	u64 ctl;
+	union {
+		u64 table3;
+		struct {
+			u64 box_type: 16;
+			u64 box_id: 16;
+			u64 __reserved_2: 32;
+		};
+	};
+};
+
+struct cstate_model {
+	unsigned long core_events;
+	unsigned long pkg_events;
+	unsigned long quirks;
+};
+
+enum perf_cstate_pkg_events {
+	PERF_CSTATE_PKG_C2_RES = 0,
+	PERF_CSTATE_PKG_C3_RES = 1,
+	PERF_CSTATE_PKG_C6_RES = 2,
+	PERF_CSTATE_PKG_C7_RES = 3,
+	PERF_CSTATE_PKG_C8_RES = 4,
+	PERF_CSTATE_PKG_C9_RES = 5,
+	PERF_CSTATE_PKG_C10_RES = 6,
+	PERF_CSTATE_PKG_EVENT_MAX = 7,
+};
+
+enum perf_cstate_core_events {
+	PERF_CSTATE_CORE_C1_RES = 0,
+	PERF_CSTATE_CORE_C3_RES = 1,
+	PERF_CSTATE_CORE_C6_RES = 2,
+	PERF_CSTATE_CORE_C7_RES = 3,
+	PERF_CSTATE_CORE_EVENT_MAX = 4,
+};
+
+typedef void (*btf_trace_kvm_userspace_exit)(void *, __u32, int);
+
+typedef void (*btf_trace_kvm_vcpu_wakeup)(void *, __u64, bool, bool);
+
+typedef void (*btf_trace_kvm_set_irq)(void *, unsigned int, int, int);
+
+typedef void (*btf_trace_kvm_ioapic_set_irq)(void *, __u64, int, bool);
+
+typedef void (*btf_trace_kvm_ioapic_delayed_eoi_inj)(void *, __u64);
+
+typedef void (*btf_trace_kvm_msi_set_irq)(void *, __u64, __u64);
+
+typedef void (*btf_trace_kvm_ack_irq)(void *, unsigned int, unsigned int);
+
+typedef void (*btf_trace_kvm_mmio)(void *, int, int, u64, void *);
+
+typedef void (*btf_trace_kvm_fpu)(void *, int);
+
+typedef void (*btf_trace_kvm_try_async_get_page)(void *, u64, u64);
+
+typedef void (*btf_trace_kvm_async_pf_repeated_fault)(void *, u64, u64);
+
+typedef void (*btf_trace_kvm_async_pf_not_present)(void *, u64, u64);
+
+typedef void (*btf_trace_kvm_async_pf_ready)(void *, u64, u64);
+
+typedef void (*btf_trace_kvm_async_pf_completed)(void *, unsigned long, u64);
+
+typedef void (*btf_trace_kvm_halt_poll_ns)(void *, bool, unsigned int, unsigned int, unsigned int);
+
+typedef void (*btf_trace_kvm_dirty_ring_push)(void *, struct kvm_dirty_ring *, u32, u64);
+
+typedef void (*btf_trace_kvm_dirty_ring_reset)(void *, struct kvm_dirty_ring *);
+
+typedef void (*btf_trace_kvm_dirty_ring_exit)(void *, struct kvm_vcpu *);
+
+struct kvm_io_device_ops;
+
+struct kvm_io_device {
+	const struct kvm_io_device_ops *ops;
+};
+
+struct kvm_io_device_ops {
+	int (*read)(struct kvm_vcpu *, struct kvm_io_device *, gpa_t, int, void *);
+	int (*write)(struct kvm_vcpu *, struct kvm_io_device *, gpa_t, int, const void *);
+	void (*destructor)(struct kvm_io_device *);
+};
+
+typedef void (*btf_trace_kvm_unmap_hva_range)(void *, unsigned long, unsigned long);
+
+typedef void (*btf_trace_kvm_set_spte_hva)(void *, unsigned long);
+
+typedef void (*btf_trace_kvm_age_hva)(void *, unsigned long, unsigned long);
+
+typedef void (*btf_trace_kvm_test_age_hva)(void *, unsigned long);
+
+struct trace_print_flags {
+	unsigned long mask;
+	const char *name;
+};
+
+struct kvm_device;
+
+struct kvm_device_attr;
+
+struct kvm_device_ops {
+	const char *name;
+	int (*create)(struct kvm_device *, u32);
+	void (*init)(struct kvm_device *);
+	void (*destroy)(struct kvm_device *);
+	void (*release)(struct kvm_device *);
+	int (*set_attr)(struct kvm_device *, struct kvm_device_attr *);
+	int (*get_attr)(struct kvm_device *, struct kvm_device_attr *);
+	int (*has_attr)(struct kvm_device *, struct kvm_device_attr *);
+	long (*ioctl)(struct kvm_device *, unsigned int, unsigned long);
+	int (*mmap)(struct kvm_device *, struct vm_area_struct *);
+};
+
+struct kvm_device {
+	const struct kvm_device_ops *ops;
+	struct kvm *kvm;
+	void *private;
+	struct list_head vm_node;
+};
+
+struct kvm_device_attr {
+	__u32 flags;
+	__u32 group;
+	__u64 attr;
+	__u64 addr;
+};
+
+union kvm_mmu_notifier_arg {
+	pte_t pte;
+};
+
+struct miscdevice {
+	int minor;
+	const char *name;
+	const struct file_operations *fops;
+	struct list_head list;
+	struct device *parent;
+	struct device *this_device;
+	const struct attribute_group **groups;
+	const char *nodename;
+	umode_t mode;
+};
+
+enum kvm_mr_change {
+	KVM_MR_CREATE = 0,
+	KVM_MR_DELETE = 1,
+	KVM_MR_MOVE = 2,
+	KVM_MR_FLAGS_ONLY = 3,
+};
+
+enum {
+	FOLL_WRITE = 1,
+	FOLL_GET = 2,
+	FOLL_DUMP = 4,
+	FOLL_FORCE = 8,
+	FOLL_NOWAIT = 16,
+	FOLL_NOFAULT = 32,
+	FOLL_HWPOISON = 64,
+	FOLL_ANON = 128,
+	FOLL_LONGTERM = 256,
+	FOLL_SPLIT_PMD = 512,
+	FOLL_PCI_P2PDMA = 1024,
+	FOLL_INTERRUPTIBLE = 2048,
+	FOLL_HONOR_NUMA_FAULT = 4096,
+};
+
+enum {
+	MEMREMAP_WB = 1,
+	MEMREMAP_WT = 2,
+	MEMREMAP_WC = 4,
+	MEMREMAP_ENC = 8,
+	MEMREMAP_DEC = 16,
+};
+
+enum {
+	OUTSIDE_GUEST_MODE = 0,
+	IN_GUEST_MODE = 1,
+	EXITING_GUEST_MODE = 2,
+	READING_SHADOW_PAGE_TABLES = 3,
+};
+
+enum kvm_bus {
+	KVM_MMIO_BUS = 0,
+	KVM_PIO_BUS = 1,
+	KVM_VIRTIO_CCW_NOTIFY_BUS = 2,
+	KVM_FAST_MMIO_BUS = 3,
+	KVM_NR_BUSES = 4,
+};
+
+enum {
+	SECTION_MARKED_PRESENT_BIT = 0,
+	SECTION_HAS_MEM_MAP_BIT = 1,
+	SECTION_IS_ONLINE_BIT = 2,
+	SECTION_IS_EARLY_BIT = 3,
+	SECTION_MAP_LAST_BIT = 4,
+};
+
+enum kobject_action {
+	KOBJ_ADD = 0,
+	KOBJ_REMOVE = 1,
+	KOBJ_CHANGE = 2,
+	KOBJ_MOVE = 3,
+	KOBJ_ONLINE = 4,
+	KOBJ_OFFLINE = 5,
+	KOBJ_BIND = 6,
+	KOBJ_UNBIND = 7,
+};
+
+typedef unsigned int xa_mark_t;
+
+struct trace_event_raw_kvm_userspace_exit {
+	struct trace_entry ent;
+	__u32 reason;
+	int errno;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_vcpu_wakeup {
+	struct trace_entry ent;
+	__u64 ns;
+	bool waited;
+	bool valid;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_set_irq {
+	struct trace_entry ent;
+	unsigned int gsi;
+	int level;
+	int irq_source_id;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_ioapic_set_irq {
+	struct trace_entry ent;
+	__u64 e;
+	int pin;
+	bool coalesced;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_ioapic_delayed_eoi_inj {
+	struct trace_entry ent;
+	__u64 e;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_msi_set_irq {
+	struct trace_entry ent;
+	__u64 address;
+	__u64 data;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_ack_irq {
+	struct trace_entry ent;
+	unsigned int irqchip;
+	unsigned int pin;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_mmio {
+	struct trace_entry ent;
+	u32 type;
+	u32 len;
+	u64 gpa;
+	u64 val;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_fpu {
+	struct trace_entry ent;
+	u32 load;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_async_get_page_class {
+	struct trace_entry ent;
+	__u64 gva;
+	u64 gfn;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_async_pf_nopresent_ready {
+	struct trace_entry ent;
+	__u64 token;
+	__u64 gva;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_async_pf_completed {
+	struct trace_entry ent;
+	unsigned long address;
+	u64 gva;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_halt_poll_ns {
+	struct trace_entry ent;
+	bool grow;
+	unsigned int vcpu_id;
+	unsigned int new;
+	unsigned int old;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_dirty_ring_push {
+	struct trace_entry ent;
+	int index;
+	u32 dirty_index;
+	u32 reset_index;
+	u32 slot;
+	u64 offset;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_dirty_ring_reset {
+	struct trace_entry ent;
+	int index;
+	u32 dirty_index;
+	u32 reset_index;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_dirty_ring_exit {
+	struct trace_entry ent;
+	int vcpu_id;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_unmap_hva_range {
+	struct trace_entry ent;
+	unsigned long start;
+	unsigned long end;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_set_spte_hva {
+	struct trace_entry ent;
+	unsigned long hva;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_age_hva {
+	struct trace_entry ent;
+	unsigned long start;
+	unsigned long end;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_test_age_hva {
+	struct trace_entry ent;
+	unsigned long hva;
+	char __data[0];
+};
+
+struct mem_section_usage {
+	struct callback_head rcu;
+	unsigned long subsection_map[1];
+	unsigned long pageblock_flags[0];
+};
+
+typedef u32 compat_sigset_word;
+
+typedef struct {
+	compat_sigset_word sig[2];
+} compat_sigset_t;
+
+struct page_ext;
+
+struct mem_section {
+	unsigned long section_mem_map;
+	struct mem_section_usage *usage;
+	struct page_ext *page_ext;
+	unsigned long pad;
+};
+
+struct page_ext {
+	unsigned long flags;
+};
+
+struct kvm_userspace_memory_region {
+	__u32 slot;
+	__u32 flags;
+	__u64 guest_phys_addr;
+	__u64 memory_size;
+	__u64 userspace_addr;
+};
+
+struct kvm_memslot_iter {
+	struct kvm_memslots *slots;
+	struct rb_node *node;
+	struct kvm_memory_slot *slot;
+};
+
+typedef unsigned long hva_t;
+
+typedef int (*cmp_func_t)(const void *, const void *);
+
+struct kvm_coalesced_mmio_zone {
+	__u64 addr;
+	__u32 size;
+	union {
+		__u32 pad;
+		__u32 pio;
+	};
+};
+
+struct kvm_irqfd {
+	__u32 fd;
+	__u32 gsi;
+	__u32 flags;
+	__u32 resamplefd;
+	__u8 pad[16];
+};
+
+struct kvm_irq_level {
+	union {
+		__u32 irq;
+		__s32 status;
+	};
+	__u32 level;
+};
+
+struct kvm_msi {
+	__u32 address_lo;
+	__u32 address_hi;
+	__u32 data;
+	__u32 flags;
+	__u32 devid;
+	__u8 pad[12];
+};
+
+struct kvm_ioeventfd {
+	__u64 datamatch;
+	__u64 addr;
+	__u32 len;
+	__s32 fd;
+	__u32 flags;
+	__u8 pad[36];
+};
+
+struct kvm_irq_routing_irqchip {
+	__u32 irqchip;
+	__u32 pin;
+};
+
+struct kvm_irq_routing_msi {
+	__u32 address_lo;
+	__u32 address_hi;
+	__u32 data;
+	union {
+		__u32 pad;
+		__u32 devid;
+	};
+};
+
+struct kvm_irq_routing_s390_adapter {
+	__u64 ind_addr;
+	__u64 summary_addr;
+	__u64 ind_offset;
+	__u32 summary_offset;
+	__u32 adapter_id;
+};
+
+struct kvm_irq_routing_hv_sint {
+	__u32 vcpu;
+	__u32 sint;
+};
+
+struct kvm_irq_routing_xen_evtchn {
+	__u32 port;
+	__u32 vcpu;
+	__u32 priority;
+};
+
+struct kvm_irq_routing_entry {
+	__u32 gsi;
+	__u32 type;
+	__u32 flags;
+	__u32 pad;
+	union {
+		struct kvm_irq_routing_irqchip irqchip;
+		struct kvm_irq_routing_msi msi;
+		struct kvm_irq_routing_s390_adapter adapter;
+		struct kvm_irq_routing_hv_sint hv_sint;
+		struct kvm_irq_routing_xen_evtchn xen_evtchn;
+		__u32 pad[8];
+	} u;
+};
+
+struct kvm_dirty_log {
+	__u32 slot;
+	__u32 padding1;
+	union {
+		void __attribute__((btf_type_tag("user"))) *dirty_bitmap;
+		__u64 padding2;
+	};
+};
+
+struct kvm_clear_dirty_log {
+	__u32 slot;
+	__u32 num_pages;
+	__u64 first_page;
+	union {
+		void __attribute__((btf_type_tag("user"))) *dirty_bitmap;
+		__u64 padding2;
+	};
+};
+
+struct kvm_mp_state {
+	__u32 mp_state;
+};
+
+struct kvm_guest_debug_arch {
+	__u64 debugreg[8];
+};
+
+struct kvm_guest_debug {
+	__u32 control;
+	__u32 pad;
+	struct kvm_guest_debug_arch arch;
+};
+
+struct kvm_fpu {
+	__u8 fpr[128];
+	__u16 fcw;
+	__u16 fsw;
+	__u8 ftwx;
+	__u8 pad1;
+	__u16 last_opcode;
+	__u64 last_ip;
+	__u64 last_dp;
+	__u8 xmm[256];
+	__u32 mxcsr;
+	__u32 pad2;
+};
+
+struct kvm_translation {
+	__u64 linear_address;
+	__u64 physical_address;
+	__u8 valid;
+	__u8 writeable;
+	__u8 usermode;
+	__u8 pad[5];
+};
+
+struct kvm_stats_header {
+	__u32 flags;
+	__u32 name_size;
+	__u32 num_desc;
+	__u32 id_offset;
+	__u32 desc_offset;
+	__u32 data_offset;
+};
+
+struct kvm_gfn_range;
+
+typedef bool (*hva_handler_t)(struct kvm *, struct kvm_gfn_range *);
+
+typedef void (*on_lock_fn_t)(struct kvm *, unsigned long, unsigned long);
+
+typedef void (*on_unlock_fn_t)(struct kvm *);
+
+struct kvm_hva_range {
+	unsigned long start;
+	unsigned long end;
+	union kvm_mmu_notifier_arg arg;
+	hva_handler_t handler;
+	on_lock_fn_t on_lock;
+	on_unlock_fn_t on_unlock;
+	bool flush_on_ret;
+	bool may_block;
+};
+
+struct kvm_gfn_range {
+	struct kvm_memory_slot *slot;
+	gfn_t start;
+	gfn_t end;
+	union kvm_mmu_notifier_arg arg;
+	bool may_block;
+};
+
+struct trace_event_data_offsets_kvm_userspace_exit {};
+
+struct trace_event_data_offsets_kvm_vcpu_wakeup {};
+
+struct trace_event_data_offsets_kvm_set_irq {};
+
+struct trace_event_data_offsets_kvm_ioapic_set_irq {};
+
+struct trace_event_data_offsets_kvm_ioapic_delayed_eoi_inj {};
+
+struct trace_event_data_offsets_kvm_msi_set_irq {};
+
+struct trace_event_data_offsets_kvm_ack_irq {};
+
+struct trace_event_data_offsets_kvm_mmio {};
+
+struct trace_event_data_offsets_kvm_fpu {};
+
+struct trace_event_data_offsets_kvm_async_get_page_class {};
+
+struct trace_event_data_offsets_kvm_async_pf_nopresent_ready {};
+
+struct trace_event_data_offsets_kvm_async_pf_completed {};
+
+struct trace_event_data_offsets_kvm_halt_poll_ns {};
+
+struct trace_event_data_offsets_kvm_dirty_ring_push {};
+
+struct trace_event_data_offsets_kvm_dirty_ring_reset {};
+
+struct trace_event_data_offsets_kvm_dirty_ring_exit {};
+
+struct trace_event_data_offsets_kvm_unmap_hva_range {};
+
+struct trace_event_data_offsets_kvm_set_spte_hva {};
+
+struct trace_event_data_offsets_kvm_age_hva {};
+
+struct trace_event_data_offsets_kvm_test_age_hva {};
+
+struct kvm_host_map {
+	struct page *page;
+	void *hva;
+	kvm_pfn_t pfn;
+	kvm_pfn_t gfn;
+};
+
+struct kvm_enable_cap {
+	__u32 cap;
+	__u32 flags;
+	__u64 args[4];
+	__u8 pad[64];
+};
+
+typedef int (*kvm_vm_thread_fn_t)(struct kvm *, uintptr_t);
+
+struct kvm_vm_worker_thread_context {
+	struct kvm *kvm;
+	struct task_struct *parent;
+	struct completion init_done;
+	kvm_vm_thread_fn_t thread_fn;
+	uintptr_t data;
+	int err;
+};
+
+struct kvm_irq_routing {
+	__u32 nr;
+	__u32 flags;
+	struct kvm_irq_routing_entry entries[0];
+};
+
+struct kvm_create_device {
+	__u32 type;
+	__u32 fd;
+	__u32 flags;
+};
+
+struct compat_kvm_clear_dirty_log {
+	__u32 slot;
+	__u32 num_pages;
+	__u64 first_page;
+	union {
+		compat_uptr_t dirty_bitmap;
+		__u64 padding2;
+	};
+};
+
+struct compat_kvm_dirty_log {
+	__u32 slot;
+	__u32 padding1;
+	union {
+		compat_uptr_t dirty_bitmap;
+		__u64 padding2;
+	};
+};
+
+struct kvm_signal_mask {
+	__u32 len;
+	__u8 sigset[0];
+};
+
+enum {
+	kvm_ioeventfd_flag_nr_datamatch = 0,
+	kvm_ioeventfd_flag_nr_pio = 1,
+	kvm_ioeventfd_flag_nr_deassign = 2,
+	kvm_ioeventfd_flag_nr_virtio_ccw_notify = 3,
+	kvm_ioeventfd_flag_nr_fast_mmio = 4,
+	kvm_ioeventfd_flag_nr_max = 5,
+};
+
+enum {
+	WORK_STRUCT_PENDING_BIT = 0,
+	WORK_STRUCT_INACTIVE_BIT = 1,
+	WORK_STRUCT_PWQ_BIT = 2,
+	WORK_STRUCT_LINKED_BIT = 3,
+	WORK_STRUCT_COLOR_SHIFT = 4,
+	WORK_STRUCT_COLOR_BITS = 4,
+	WORK_STRUCT_PENDING = 1,
+	WORK_STRUCT_INACTIVE = 2,
+	WORK_STRUCT_PWQ = 4,
+	WORK_STRUCT_LINKED = 8,
+	WORK_STRUCT_STATIC = 0,
+	WORK_NR_COLORS = 16,
+	WORK_CPU_UNBOUND = 32,
+	WORK_STRUCT_FLAG_BITS = 8,
+	WORK_OFFQ_FLAG_BASE = 4,
+	__WORK_OFFQ_CANCELING = 4,
+	WORK_OFFQ_FLAG_BITS = 1,
+	WORK_OFFQ_POOL_SHIFT = 5,
+	WORK_OFFQ_LEFT = 59,
+	WORK_OFFQ_POOL_BITS = 31,
+	WORK_BUSY_PENDING = 1,
+	WORK_BUSY_RUNNING = 2,
+	WORKER_DESC_LEN = 24,
+};
+
+struct kvm_irq_ack_notifier {
+	struct hlist_node link;
+	unsigned int gsi;
+	void (*irq_acked)(struct kvm_irq_ack_notifier *);
+};
+
+struct kvm_s390_adapter_int {
+	u64 ind_addr;
+	u64 summary_addr;
+	u64 ind_offset;
+	u32 summary_offset;
+	u32 adapter_id;
+};
+
+struct kvm_hv_sint {
+	u32 vcpu;
+	u32 sint;
+};
+
+struct kvm_xen_evtchn {
+	u32 port;
+	u32 vcpu_id;
+	int vcpu_idx;
+	u32 priority;
+};
+
+struct kvm_kernel_irq_routing_entry {
+	u32 gsi;
+	u32 type;
+	int (*set)(struct kvm_kernel_irq_routing_entry *, struct kvm *, int, int, bool);
+	union {
+		struct {
+			unsigned int irqchip;
+			unsigned int pin;
+		} irqchip;
+		struct {
+			u32 address_lo;
+			u32 address_hi;
+			u32 data;
+			u32 flags;
+			u32 devid;
+		} msi;
+		struct kvm_s390_adapter_int adapter;
+		struct kvm_hv_sint hv_sint;
+		struct kvm_xen_evtchn xen_evtchn;
+	};
+	struct hlist_node link;
+};
+
+typedef struct poll_table_struct poll_table;
+
+struct irq_bypass_producer;
+
+struct irq_bypass_consumer {
+	struct list_head node;
+	void *token;
+	int (*add_producer)(struct irq_bypass_consumer *, struct irq_bypass_producer *);
+	void (*del_producer)(struct irq_bypass_consumer *, struct irq_bypass_producer *);
+	void (*stop)(struct irq_bypass_consumer *);
+	void (*start)(struct irq_bypass_consumer *);
+};
+
+struct kvm_kernel_irqfd_resampler;
+
+struct kvm_kernel_irqfd {
+	struct kvm *kvm;
+	wait_queue_entry_t wait;
+	struct kvm_kernel_irq_routing_entry irq_entry;
+	seqcount_spinlock_t irq_entry_sc;
+	int gsi;
+	struct work_struct inject;
+	struct kvm_kernel_irqfd_resampler *resampler;
+	struct eventfd_ctx *resamplefd;
+	struct list_head resampler_link;
+	struct eventfd_ctx *eventfd;
+	struct list_head list;
+	poll_table pt;
+	struct work_struct shutdown;
+	struct irq_bypass_consumer consumer;
+	struct irq_bypass_producer *producer;
+};
+
+struct kvm_kernel_irqfd_resampler {
+	struct kvm *kvm;
+	struct list_head list;
+	struct kvm_irq_ack_notifier notifier;
+	struct list_head link;
+};
+
+struct irq_bypass_producer {
+	struct list_head node;
+	void *token;
+	int irq;
+	int (*add_consumer)(struct irq_bypass_producer *, struct irq_bypass_consumer *);
+	void (*del_consumer)(struct irq_bypass_producer *, struct irq_bypass_consumer *);
+	void (*stop)(struct irq_bypass_producer *);
+	void (*start)(struct irq_bypass_producer *);
+};
+
+struct _ioeventfd {
+	struct list_head list;
+	u64 addr;
+	int length;
+	struct eventfd_ctx *eventfd;
+	u64 datamatch;
+	struct kvm_io_device dev;
+	u8 bus_idx;
+	bool wildcard;
+};
+
+struct fd {
+	struct file *file;
+	unsigned int flags;
+};
+
+typedef int (*iommu_fault_handler_t)(struct iommu_domain *, struct device *, unsigned long, int, void *);
+
+struct iommu_domain_geometry {
+	dma_addr_t aperture_start;
+	dma_addr_t aperture_end;
+	bool force_aperture;
+};
+
+enum iommu_page_response_code {
+	IOMMU_PAGE_RESP_SUCCESS = 0,
+	IOMMU_PAGE_RESP_INVALID = 1,
+	IOMMU_PAGE_RESP_FAILURE = 2,
+};
+
+struct iommu_dma_cookie;
+
+struct iommu_fault;
+
+struct iommu_domain {
+	unsigned int type;
+	const struct iommu_domain_ops *ops;
+	unsigned long pgsize_bitmap;
+	struct iommu_domain_geometry geometry;
+	struct iommu_dma_cookie *iova_cookie;
+	enum iommu_page_response_code (*iopf_handler)(struct iommu_fault *, void *);
+	void *fault_data;
+	union {
+		struct {
+			iommu_fault_handler_t handler;
+			void *handler_token;
+		};
+		struct {
+			struct mm_struct *mm;
+			int users;
+		};
+	};
+};
+
+struct iommu_iotlb_gather;
+
+struct iommu_domain_ops {
+	int (*attach_dev)(struct iommu_domain *, struct device *);
+	int (*set_dev_pasid)(struct iommu_domain *, struct device *, ioasid_t);
+	int (*map)(struct iommu_domain *, unsigned long, phys_addr_t, size_t, int, gfp_t);
+	int (*map_pages)(struct iommu_domain *, unsigned long, phys_addr_t, size_t, size_t, int, gfp_t, size_t *);
+	size_t (*unmap)(struct iommu_domain *, unsigned long, size_t, struct iommu_iotlb_gather *);
+	size_t (*unmap_pages)(struct iommu_domain *, unsigned long, size_t, size_t, struct iommu_iotlb_gather *);
+	void (*flush_iotlb_all)(struct iommu_domain *);
+	void (*iotlb_sync_map)(struct iommu_domain *, unsigned long, size_t);
+	void (*iotlb_sync)(struct iommu_domain *, struct iommu_iotlb_gather *);
+	phys_addr_t (*iova_to_phys)(struct iommu_domain *, dma_addr_t);
+	bool (*enforce_cache_coherency)(struct iommu_domain *);
+	int (*enable_nesting)(struct iommu_domain *);
+	int (*set_pgtable_quirks)(struct iommu_domain *, unsigned long);
+	void (*free)(struct iommu_domain *);
+};
+
+struct iommu_iotlb_gather {
+	unsigned long start;
+	unsigned long end;
+	size_t pgsize;
+	struct list_head freelist;
+	bool queued;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct iommu_fault_unrecoverable {
+	__u32 reason;
+	__u32 flags;
+	__u32 pasid;
+	__u32 perm;
+	__u64 addr;
+	__u64 fetch_addr;
+};
+
+struct iommu_fault_page_request {
+	__u32 flags;
+	__u32 pasid;
+	__u32 grpid;
+	__u32 perm;
+	__u64 addr;
+	__u64 private_data[2];
+};
+
+struct iommu_fault {
+	__u32 type;
+	__u32 padding;
+	union {
+		struct iommu_fault_unrecoverable event;
+		struct iommu_fault_page_request prm;
+		__u8 padding2[56];
+	};
+};
+
+struct iommu_device {
+	struct list_head list;
+	const struct iommu_ops *ops;
+	struct fwnode_handle *fwnode;
+	struct device *dev;
+	u32 max_pasids;
+};
+
+struct of_phandle_args {
+	struct device_node *np;
+	int args_count;
+	uint32_t args[16];
+};
+
+struct iommu_fault_event {
+	struct iommu_fault fault;
+	struct list_head list;
+};
+
+struct iommu_page_response {
+	__u32 argsz;
+	__u32 version;
+	__u32 flags;
+	__u32 pasid;
+	__u32 grpid;
+	__u32 code;
+};
+
+struct iopf_device_param;
+
+struct iommu_fault_param;
+
+struct iommu_fwspec;
+
+struct dev_iommu {
+	struct mutex lock;
+	struct iommu_fault_param *fault_param;
+	struct iopf_device_param *iopf_param;
+	struct iommu_fwspec *fwspec;
+	struct iommu_device *iommu_dev;
+	void *priv;
+	u32 max_pasids;
+	u32 attach_deferred: 1;
+	u32 pci_32bit_workaround: 1;
+	u32 require_direct: 1;
+};
+
+typedef int (*iommu_dev_fault_handler_t)(struct iommu_fault *, void *);
+
+struct iommu_fault_param {
+	iommu_dev_fault_handler_t handler;
+	void *data;
+	struct list_head faults;
+	struct mutex lock;
+};
+
+struct iommu_fwspec {
+	const struct iommu_ops *ops;
+	struct fwnode_handle *iommu_fwnode;
+	u32 flags;
+	unsigned int num_ids;
+	u32 ids[0];
+};
+
+enum kvm_device_type {
+	KVM_DEV_TYPE_FSL_MPIC_20 = 1,
+	KVM_DEV_TYPE_FSL_MPIC_42 = 2,
+	KVM_DEV_TYPE_XICS = 3,
+	KVM_DEV_TYPE_VFIO = 4,
+	KVM_DEV_TYPE_ARM_VGIC_V2 = 5,
+	KVM_DEV_TYPE_FLIC = 6,
+	KVM_DEV_TYPE_ARM_VGIC_V3 = 7,
+	KVM_DEV_TYPE_ARM_VGIC_ITS = 8,
+	KVM_DEV_TYPE_XIVE = 9,
+	KVM_DEV_TYPE_ARM_PV_TIME = 10,
+	KVM_DEV_TYPE_RISCV_AIA = 11,
+	KVM_DEV_TYPE_MAX = 12,
+};
+
+struct kvm_vfio_file {
+	struct list_head node;
+	struct file *file;
+};
+
+struct kvm_vfio {
+	struct list_head file_list;
+	struct mutex lock;
+	bool noncoherent;
+};
+
+struct kvm_coalesced_mmio_dev {
+	struct list_head list;
+	struct kvm_io_device dev;
+	struct kvm *kvm;
+	struct kvm_coalesced_mmio_zone zone;
+};
+
+struct kvm_arch_async_pf {
+	u32 token;
+	gfn_t gfn;
+	unsigned long cr3;
+	bool direct_map;
+};
+
+struct kvm_async_pf {
+	struct work_struct work;
+	struct list_head link;
+	struct list_head queue;
+	struct kvm_vcpu *vcpu;
+	struct mm_struct *mm;
+	gpa_t cr2_or_gpa;
+	unsigned long addr;
+	struct kvm_arch_async_pf arch;
+	bool wakeup_all;
+	bool notpresent_injected;
+};
+
+struct plist_head {
+	struct list_head node_list;
+};
+
+enum pm_qos_type {
+	PM_QOS_UNITIALIZED = 0,
+	PM_QOS_MAX = 1,
+	PM_QOS_MIN = 2,
+};
+
+struct pm_qos_constraints {
+	struct plist_head list;
+	s32 target_value;
+	s32 default_value;
+	s32 no_constraint_value;
+	enum pm_qos_type type;
+	struct blocking_notifier_head *notifiers;
+};
+
+struct freq_constraints {
+	struct pm_qos_constraints min_freq;
+	struct blocking_notifier_head min_freq_notifiers;
+	struct pm_qos_constraints max_freq;
+	struct blocking_notifier_head max_freq_notifiers;
+};
+
+struct pm_qos_flags {
+	struct list_head list;
+	s32 effective_flags;
+};
+
+struct dev_pm_qos_request;
+
+struct dev_pm_qos {
+	struct pm_qos_constraints resume_latency;
+	struct pm_qos_constraints latency_tolerance;
+	struct freq_constraints freq;
+	struct pm_qos_flags flags;
+	struct dev_pm_qos_request *resume_latency_req;
+	struct dev_pm_qos_request *latency_tolerance_req;
+	struct dev_pm_qos_request *flags_req;
+};
+
+struct pm_qos_flags_request {
+	struct list_head node;
+	s32 flags;
+};
+
+enum freq_qos_req_type {
+	FREQ_QOS_MIN = 1,
+	FREQ_QOS_MAX = 2,
+};
+
+struct freq_qos_request {
+	enum freq_qos_req_type type;
+	struct plist_node pnode;
+	struct freq_constraints *qos;
+	u64 android_oem_data1;
+};
+
+enum dev_pm_qos_req_type {
+	DEV_PM_QOS_RESUME_LATENCY = 1,
+	DEV_PM_QOS_LATENCY_TOLERANCE = 2,
+	DEV_PM_QOS_MIN_FREQUENCY = 3,
+	DEV_PM_QOS_MAX_FREQUENCY = 4,
+	DEV_PM_QOS_FLAGS = 5,
+};
+
+struct dev_pm_qos_request {
+	enum dev_pm_qos_req_type type;
+	union {
+		struct plist_node pnode;
+		struct pm_qos_flags_request flr;
+		struct freq_qos_request freq;
+	} data;
+	struct device *dev;
+};
+
+typedef void (*btf_trace_kvm_entry)(void *, struct kvm_vcpu *);
+
+struct kvm_kpic_state {
+	u8 last_irr;
+	u8 irr;
+	u8 imr;
+	u8 isr;
+	u8 priority_add;
+	u8 irq_base;
+	u8 read_reg_select;
+	u8 poll;
+	u8 special_mask;
+	u8 init_state;
+	u8 auto_eoi;
+	u8 rotate_on_auto_eoi;
+	u8 special_fully_nested_mode;
+	u8 init4;
+	u8 elcr;
+	u8 elcr_mask;
+	u8 isr_ack;
+	struct kvm_pic *pics_state;
+};
+
+struct kvm_pic {
+	spinlock_t lock;
+	bool wakeup_needed;
+	unsigned int pending_acks;
+	struct kvm *kvm;
+	struct kvm_kpic_state pics[2];
+	int output;
+	struct kvm_io_device dev_master;
+	struct kvm_io_device dev_slave;
+	struct kvm_io_device dev_elcr;
+	unsigned long irq_states[16];
+};
+
+union kvm_ioapic_redirect_entry {
+	u64 bits;
+	struct {
+		u8 vector;
+		u8 delivery_mode: 3;
+		u8 dest_mode: 1;
+		u8 delivery_status: 1;
+		u8 polarity: 1;
+		u8 remote_irr: 1;
+		u8 trig_mode: 1;
+		u8 mask: 1;
+		u8 reserve: 7;
+		u8 reserved[4];
+		u8 dest_id;
+	} fields;
+};
+
+struct dest_map {
+	unsigned long map[64];
+	u8 vectors[4096];
+};
+
+struct rtc_status {
+	int pending_eoi;
+	struct dest_map dest_map;
+};
+
+struct kvm_ioapic {
+	u64 base_address;
+	u32 ioregsel;
+	u32 id;
+	u32 irr;
+	u32 pad;
+	union kvm_ioapic_redirect_entry redirtbl[24];
+	unsigned long irq_states[24];
+	struct kvm_io_device dev;
+	struct kvm *kvm;
+	spinlock_t lock;
+	struct rtc_status rtc_status;
+	struct delayed_work eoi_inject;
+	u32 irq_eoi[24];
+	u32 irr_delivered;
+};
+
+struct kvm_kpit_channel_state {
+	u32 count;
+	u16 latched_count;
+	u8 count_latched;
+	u8 status_latched;
+	u8 status;
+	u8 read_state;
+	u8 write_state;
+	u8 write_latch;
+	u8 rw_mode;
+	u8 mode;
+	u8 bcd;
+	u8 gate;
+	ktime_t count_load_time;
+};
+
+struct kvm_kpit_state {
+	struct kvm_kpit_channel_state channels[3];
+	u32 flags;
+	bool is_periodic;
+	s64 period;
+	struct hrtimer timer;
+	struct mutex lock;
+	atomic_t reinject;
+	atomic_t pending;
+	atomic_t irq_ack;
+	struct kvm_irq_ack_notifier irq_ack_notifier;
+};
+
+struct kvm_irq_mask_notifier {
+	void (*func)(struct kvm_irq_mask_notifier *, bool);
+	int irq;
+	struct hlist_node link;
+};
+
+struct kthread_work;
+
+typedef void (*kthread_work_func_t)(struct kthread_work *);
+
+struct kthread_worker;
+
+struct kthread_work {
+	struct list_head node;
+	kthread_work_func_t func;
+	struct kthread_worker *worker;
+	int canceling;
+};
+
+struct kvm_pit {
+	struct kvm_io_device dev;
+	struct kvm_io_device speaker_dev;
+	struct kvm *kvm;
+	struct kvm_kpit_state pit_state;
+	int irq_source_id;
+	struct kvm_irq_mask_notifier mask_notifier;
+	struct kthread_worker *worker;
+	struct kthread_work expired;
+};
+
+struct kthread_worker {
+	unsigned int flags;
+	raw_spinlock_t lock;
+	struct list_head work_list;
+	struct list_head delayed_work_list;
+	struct task_struct *task;
+	struct kthread_work *current_work;
+};
+
+struct kvm_timer {
+	struct hrtimer timer;
+	s64 period;
+	ktime_t target_expiration;
+	u32 timer_mode;
+	u32 timer_mode_mask;
+	u64 tscdeadline;
+	u64 expired_tscdeadline;
+	u32 timer_advance_ns;
+	atomic_t pending;
+	bool hv_timer_in_use;
+};
+
+struct kvm_lapic {
+	unsigned long base_address;
+	struct kvm_io_device dev;
+	struct kvm_timer lapic_timer;
+	u32 divide_count;
+	struct kvm_vcpu *vcpu;
+	bool apicv_active;
+	bool sw_enabled;
+	bool irr_pending;
+	bool lvt0_in_nmi_mode;
+	s16 isr_count;
+	int highest_isr_cache;
+	void *regs;
+	gpa_t vapic_addr;
+	struct gfn_to_hva_cache vapic_cache;
+	unsigned long pending_events;
+	unsigned int sipi_vector;
+	int nr_lvt_entries;
+};
+
+struct x86_exception {
+	u8 vector;
+	bool error_code_valid;
+	u16 error_code;
+	bool nested_page_fault;
+	u64 address;
+	u8 async_page_fault;
+};
+
+struct fastop;
+
+typedef void (*fastop_t)(struct fastop *);
+
+enum x86emul_mode {
+	X86EMUL_MODE_REAL = 0,
+	X86EMUL_MODE_VM86 = 1,
+	X86EMUL_MODE_PROT16 = 2,
+	X86EMUL_MODE_PROT32 = 3,
+	X86EMUL_MODE_PROT64 = 4,
+};
+
+typedef unsigned long ulong;
+
+struct segmented_address {
+	ulong ea;
+	unsigned int seg;
+};
+
+typedef u32 sse128_t[4];
+
+struct operand {
+	enum {
+		OP_REG = 0,
+		OP_MEM = 1,
+		OP_MEM_STR = 2,
+		OP_IMM = 3,
+		OP_XMM = 4,
+		OP_MM = 5,
+		OP_NONE = 6,
+	} type;
+	unsigned int bytes;
+	unsigned int count;
+	union {
+		unsigned long orig_val;
+		u64 orig_val64;
+	};
+	union {
+		unsigned long *reg;
+		struct segmented_address mem;
+		unsigned int xmm;
+		unsigned int mm;
+	} addr;
+	long: 64;
+	union {
+		unsigned long val;
+		u64 val64;
+		char valptr[16];
+		sse128_t vec_val;
+		u64 mm_val;
+		void *data;
+	};
+};
+
+struct fetch_cache {
+	u8 data[15];
+	u8 *ptr;
+	u8 *end;
+};
+
+struct read_cache {
+	u8 data[1024];
+	unsigned long pos;
+	unsigned long end;
+};
+
+struct x86_emulate_ops;
+
+struct x86_emulate_ctxt {
+	void *vcpu;
+	const struct x86_emulate_ops *ops;
+	unsigned long eflags;
+	unsigned long eip;
+	enum x86emul_mode mode;
+	int interruptibility;
+	bool perm_ok;
+	bool tf;
+	bool have_exception;
+	struct x86_exception exception;
+	bool gpa_available;
+	gpa_t gpa_val;
+	u8 opcode_len;
+	u8 b;
+	u8 intercept;
+	u8 op_bytes;
+	u8 ad_bytes;
+	union {
+		int (*execute)(struct x86_emulate_ctxt *);
+		fastop_t fop;
+	};
+	int (*check_perm)(struct x86_emulate_ctxt *);
+	bool rip_relative;
+	u8 rex_prefix;
+	u8 lock_prefix;
+	u8 rep_prefix;
+	u16 regs_valid;
+	u16 regs_dirty;
+	u8 modrm;
+	u8 modrm_mod;
+	u8 modrm_reg;
+	u8 modrm_rm;
+	u8 modrm_seg;
+	u8 seg_override;
+	u64 d;
+	unsigned long _eip;
+	struct operand src;
+	struct operand src2;
+	struct operand dst;
+	struct operand memop;
+	unsigned long _regs[16];
+	struct operand *memopp;
+	struct fetch_cache fetch;
+	struct read_cache io_read;
+	struct read_cache mem_read;
+	bool is_branch;
+};
+
+enum x86_intercept_stage {
+	X86_ICTP_NONE = 0,
+	X86_ICPT_PRE_EXCEPT = 1,
+	X86_ICPT_POST_EXCEPT = 2,
+	X86_ICPT_POST_MEMACCESS = 3,
+};
+
+struct desc_ptr;
+
+struct x86_instruction_info;
+
+struct x86_emulate_ops {
+	void (*vm_bugged)(struct x86_emulate_ctxt *);
+	ulong (*read_gpr)(struct x86_emulate_ctxt *, unsigned int);
+	void (*write_gpr)(struct x86_emulate_ctxt *, unsigned int, ulong);
+	int (*read_std)(struct x86_emulate_ctxt *, unsigned long, void *, unsigned int, struct x86_exception *, bool);
+	int (*write_std)(struct x86_emulate_ctxt *, unsigned long, void *, unsigned int, struct x86_exception *, bool);
+	int (*fetch)(struct x86_emulate_ctxt *, unsigned long, void *, unsigned int, struct x86_exception *);
+	int (*read_emulated)(struct x86_emulate_ctxt *, unsigned long, void *, unsigned int, struct x86_exception *);
+	int (*write_emulated)(struct x86_emulate_ctxt *, unsigned long, const void *, unsigned int, struct x86_exception *);
+	int (*cmpxchg_emulated)(struct x86_emulate_ctxt *, unsigned long, const void *, const void *, unsigned int, struct x86_exception *);
+	void (*invlpg)(struct x86_emulate_ctxt *, ulong);
+	int (*pio_in_emulated)(struct x86_emulate_ctxt *, int, unsigned short, void *, unsigned int);
+	int (*pio_out_emulated)(struct x86_emulate_ctxt *, int, unsigned short, const void *, unsigned int);
+	bool (*get_segment)(struct x86_emulate_ctxt *, u16 *, struct desc_struct *, u32 *, int);
+	void (*set_segment)(struct x86_emulate_ctxt *, u16, struct desc_struct *, u32, int);
+	unsigned long (*get_cached_segment_base)(struct x86_emulate_ctxt *, int);
+	void (*get_gdt)(struct x86_emulate_ctxt *, struct desc_ptr *);
+	void (*get_idt)(struct x86_emulate_ctxt *, struct desc_ptr *);
+	void (*set_gdt)(struct x86_emulate_ctxt *, struct desc_ptr *);
+	void (*set_idt)(struct x86_emulate_ctxt *, struct desc_ptr *);
+	ulong (*get_cr)(struct x86_emulate_ctxt *, int);
+	int (*set_cr)(struct x86_emulate_ctxt *, int, ulong);
+	int (*cpl)(struct x86_emulate_ctxt *);
+	void (*get_dr)(struct x86_emulate_ctxt *, int, ulong *);
+	int (*set_dr)(struct x86_emulate_ctxt *, int, ulong);
+	int (*set_msr_with_filter)(struct x86_emulate_ctxt *, u32, u64);
+	int (*get_msr_with_filter)(struct x86_emulate_ctxt *, u32, u64 *);
+	int (*get_msr)(struct x86_emulate_ctxt *, u32, u64 *);
+	int (*check_pmc)(struct x86_emulate_ctxt *, u32);
+	int (*read_pmc)(struct x86_emulate_ctxt *, u32, u64 *);
+	void (*halt)(struct x86_emulate_ctxt *);
+	void (*wbinvd)(struct x86_emulate_ctxt *);
+	int (*fix_hypercall)(struct x86_emulate_ctxt *);
+	int (*intercept)(struct x86_emulate_ctxt *, struct x86_instruction_info *, enum x86_intercept_stage);
+	bool (*get_cpuid)(struct x86_emulate_ctxt *, u32 *, u32 *, u32 *, u32 *, bool);
+	bool (*guest_has_movbe)(struct x86_emulate_ctxt *);
+	bool (*guest_has_fxsr)(struct x86_emulate_ctxt *);
+	bool (*guest_has_rdpid)(struct x86_emulate_ctxt *);
+	void (*set_nmi_mask)(struct x86_emulate_ctxt *, bool);
+	bool (*is_smm)(struct x86_emulate_ctxt *);
+	bool (*is_guest_mode)(struct x86_emulate_ctxt *);
+	int (*leave_smm)(struct x86_emulate_ctxt *);
+	void (*triple_fault)(struct x86_emulate_ctxt *);
+	int (*set_xcr)(struct x86_emulate_ctxt *, u32, u64);
+};
+
+struct desc_ptr {
+	unsigned short size;
+	unsigned long address;
+} __attribute__((packed));
+
+struct x86_instruction_info {
+	u8 intercept;
+	u8 rep_prefix;
+	u8 modrm_mod;
+	u8 modrm_reg;
+	u8 modrm_rm;
+	u64 src_val;
+	u64 dst_val;
+	u8 src_bytes;
+	u8 dst_bytes;
+	u8 ad_bytes;
+	u64 next_rip;
+};
+
+typedef void (*btf_trace_kvm_hypercall)(void *, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long);
+
+typedef void (*btf_trace_kvm_hv_hypercall)(void *, __u16, bool, __u16, __u16, __u16, __u64, __u64);
+
+typedef void (*btf_trace_kvm_hv_hypercall_done)(void *, u64);
+
+typedef void (*btf_trace_kvm_xen_hypercall)(void *, u8, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long);
+
+typedef void (*btf_trace_kvm_pio)(void *, unsigned int, unsigned int, unsigned int, unsigned int, const void *);
+
+typedef void (*btf_trace_kvm_fast_mmio)(void *, u64);
+
+typedef void (*btf_trace_kvm_cpuid)(void *, unsigned int, unsigned int, unsigned long, unsigned long, unsigned long, unsigned long, bool, bool);
+
+typedef void (*btf_trace_kvm_apic)(void *, unsigned int, unsigned int, u64);
+
+typedef void (*btf_trace_kvm_exit)(void *, struct kvm_vcpu *, u32);
+
+typedef void (*btf_trace_kvm_inj_virq)(void *, unsigned int, bool, bool);
+
+typedef void (*btf_trace_kvm_inj_exception)(void *, unsigned int, bool, unsigned int, bool);
+
+typedef void (*btf_trace_kvm_page_fault)(void *, struct kvm_vcpu *, u64, u64);
+
+typedef void (*btf_trace_kvm_msr)(void *, unsigned int, u32, u64, bool);
+
+typedef void (*btf_trace_kvm_cr)(void *, unsigned int, unsigned int, unsigned long);
+
+typedef void (*btf_trace_kvm_pic_set_irq)(void *, __u8, __u8, __u8, __u8, bool);
+
+typedef void (*btf_trace_kvm_apic_ipi)(void *, __u32, __u32);
+
+typedef void (*btf_trace_kvm_apic_accept_irq)(void *, __u32, __u16, __u16, __u8);
+
+typedef void (*btf_trace_kvm_eoi)(void *, struct kvm_lapic *, int);
+
+typedef void (*btf_trace_kvm_pv_eoi)(void *, struct kvm_lapic *, int);
+
+typedef void (*btf_trace_kvm_nested_vmenter)(void *, __u64, __u64, __u64, __u32, __u32, bool, __u64, __u64, __u32);
+
+typedef void (*btf_trace_kvm_nested_intercepts)(void *, __u16, __u16, __u32, __u32, __u32, __u32);
+
+typedef void (*btf_trace_kvm_nested_vmexit)(void *, struct kvm_vcpu *, u32);
+
+typedef void (*btf_trace_kvm_nested_vmexit_inject)(void *, __u32, __u64, __u64, __u32, __u32, __u32);
+
+typedef void (*btf_trace_kvm_nested_intr_vmexit)(void *, __u64);
+
+typedef void (*btf_trace_kvm_invlpga)(void *, __u64, unsigned int, u64);
+
+typedef void (*btf_trace_kvm_skinit)(void *, __u64, __u32);
+
+typedef void (*btf_trace_kvm_emulate_insn)(void *, struct kvm_vcpu *, __u8);
+
+typedef unsigned long gva_t;
+
+typedef void (*btf_trace_vcpu_match_mmio)(void *, gva_t, gpa_t, bool, bool);
+
+typedef void (*btf_trace_kvm_write_tsc_offset)(void *, unsigned int, __u64, __u64);
+
+typedef void (*btf_trace_kvm_update_master_clock)(void *, bool, unsigned int, bool);
+
+typedef void (*btf_trace_kvm_track_tsc)(void *, unsigned int, unsigned int, unsigned int, bool, unsigned int);
+
+typedef void (*btf_trace_kvm_pml_full)(void *, unsigned int);
+
+typedef void (*btf_trace_kvm_ple_window_update)(void *, unsigned int, unsigned int, unsigned int);
+
+typedef void (*btf_trace_kvm_pvclock_update)(void *, unsigned int, struct pvclock_vcpu_time_info *);
+
+typedef void (*btf_trace_kvm_wait_lapic_expire)(void *, unsigned int, s64);
+
+typedef void (*btf_trace_kvm_smm_transition)(void *, unsigned int, u64, bool);
+
+typedef void (*btf_trace_kvm_pi_irte_update)(void *, unsigned int, unsigned int, unsigned int, unsigned int, u64, bool);
+
+typedef void (*btf_trace_kvm_hv_notify_acked_sint)(void *, int, u32);
+
+typedef void (*btf_trace_kvm_hv_synic_set_irq)(void *, int, u32, int, int);
+
+typedef void (*btf_trace_kvm_hv_synic_send_eoi)(void *, int, int);
+
+typedef void (*btf_trace_kvm_hv_synic_set_msr)(void *, int, u32, u64, bool);
+
+typedef void (*btf_trace_kvm_hv_stimer_set_config)(void *, int, int, u64, bool);
+
+typedef void (*btf_trace_kvm_hv_stimer_set_count)(void *, int, int, u64, bool);
+
+typedef void (*btf_trace_kvm_hv_stimer_start_periodic)(void *, int, int, u64, u64);
+
+typedef void (*btf_trace_kvm_hv_stimer_start_one_shot)(void *, int, int, u64, u64);
+
+typedef void (*btf_trace_kvm_hv_stimer_callback)(void *, int, int);
+
+typedef void (*btf_trace_kvm_hv_stimer_expiration)(void *, int, int, int, int);
+
+typedef void (*btf_trace_kvm_hv_stimer_cleanup)(void *, int, int);
+
+typedef void (*btf_trace_kvm_apicv_inhibit_changed)(void *, int, bool, unsigned long);
+
+typedef void (*btf_trace_kvm_apicv_accept_irq)(void *, __u32, __u16, __u16, __u8);
+
+typedef void (*btf_trace_kvm_avic_incomplete_ipi)(void *, u32, u32, u32, u32, u32);
+
+typedef void (*btf_trace_kvm_avic_unaccelerated_access)(void *, u32, u32, bool, bool, u32);
+
+typedef void (*btf_trace_kvm_avic_ga_log)(void *, u32, u32);
+
+typedef void (*btf_trace_kvm_avic_kick_vcpu_slowpath)(void *, u32, u32, u32);
+
+typedef void (*btf_trace_kvm_avic_doorbell)(void *, u32, u32);
+
+typedef void (*btf_trace_kvm_hv_timer_state)(void *, unsigned int, unsigned int);
+
+typedef void (*btf_trace_kvm_hv_flush_tlb)(void *, u64, u64, u64, bool);
+
+typedef void (*btf_trace_kvm_hv_flush_tlb_ex)(void *, u64, u64, u64, u64, bool);
+
+typedef void (*btf_trace_kvm_hv_send_ipi)(void *, u32, u64);
+
+typedef void (*btf_trace_kvm_hv_send_ipi_ex)(void *, u32, u64, u64);
+
+typedef void (*btf_trace_kvm_pv_tlb_flush)(void *, unsigned int, bool);
+
+typedef void (*btf_trace_kvm_nested_vmenter_failed)(void *, const char *, u32);
+
+typedef void (*btf_trace_kvm_hv_syndbg_set_msr)(void *, int, u32, u32, u64);
+
+typedef void (*btf_trace_kvm_hv_syndbg_get_msr)(void *, int, u32, u32, u64);
+
+struct ghcb;
+
+typedef void (*btf_trace_kvm_vmgexit_enter)(void *, unsigned int, struct ghcb *);
+
+struct ghcb_save_area {
+	u8 reserved_0x0[203];
+	u8 cpl;
+	u8 reserved_0xcc[116];
+	u64 xss;
+	u8 reserved_0x148[24];
+	u64 dr7;
+	u8 reserved_0x168[16];
+	u64 rip;
+	u8 reserved_0x180[88];
+	u64 rsp;
+	u8 reserved_0x1e0[24];
+	u64 rax;
+	u8 reserved_0x200[264];
+	u64 rcx;
+	u64 rdx;
+	u64 rbx;
+	u8 reserved_0x320[8];
+	u64 rbp;
+	u64 rsi;
+	u64 rdi;
+	u64 r8;
+	u64 r9;
+	u64 r10;
+	u64 r11;
+	u64 r12;
+	u64 r13;
+	u64 r14;
+	u64 r15;
+	u8 reserved_0x380[16];
+	u64 sw_exit_code;
+	u64 sw_exit_info_1;
+	u64 sw_exit_info_2;
+	u64 sw_scratch;
+	u8 reserved_0x3b0[56];
+	u64 xcr0;
+	u8 valid_bitmap[16];
+	u64 x87_state_gpa;
+};
+
+struct ghcb {
+	struct ghcb_save_area save;
+	u8 reserved_save[1016];
+	u8 shared_buffer[2032];
+	u8 reserved_0xff0[10];
+	u16 protocol_version;
+	u32 ghcb_usage;
+};
+
+typedef void (*btf_trace_kvm_vmgexit_exit)(void *, unsigned int, struct ghcb *);
+
+typedef void (*btf_trace_kvm_vmgexit_msr_protocol_enter)(void *, unsigned int, u64);
+
+typedef void (*btf_trace_kvm_vmgexit_msr_protocol_exit)(void *, unsigned int, u64, int);
+
+struct kvm_caps {
+	bool has_tsc_control;
+	u32 max_guest_tsc_khz;
+	u8 tsc_scaling_ratio_frac_bits;
+	u64 max_tsc_scaling_ratio;
+	u64 default_tsc_scaling_ratio;
+	bool has_bus_lock_exit;
+	bool has_notify_vmexit;
+	u64 supported_mce_cap;
+	u64 supported_xcr0;
+	u64 supported_xss;
+	u64 supported_perf_cap;
+};
+
+struct kvm_pit_channel_state {
+	__u32 count;
+	__u16 latched_count;
+	__u8 count_latched;
+	__u8 status_latched;
+	__u8 status;
+	__u8 read_state;
+	__u8 write_state;
+	__u8 write_latch;
+	__u8 rw_mode;
+	__u8 mode;
+	__u8 bcd;
+	__u8 gate;
+	__s64 count_load_time;
+};
+
+struct kvm_pit_state {
+	struct kvm_pit_channel_state channels[3];
+};
+
+struct kvm_pit_state2 {
+	struct kvm_pit_channel_state channels[3];
+	__u32 flags;
+	__u32 reserved[9];
+};
+
+struct kvm_pit_config {
+	__u32 flags;
+	__u32 pad[15];
+};
+
+enum kvm_reg {
+	VCPU_REGS_RAX = 0,
+	VCPU_REGS_RCX = 1,
+	VCPU_REGS_RDX = 2,
+	VCPU_REGS_RBX = 3,
+	VCPU_REGS_RSP = 4,
+	VCPU_REGS_RBP = 5,
+	VCPU_REGS_RSI = 6,
+	VCPU_REGS_RDI = 7,
+	VCPU_REGS_R8 = 8,
+	VCPU_REGS_R9 = 9,
+	VCPU_REGS_R10 = 10,
+	VCPU_REGS_R11 = 11,
+	VCPU_REGS_R12 = 12,
+	VCPU_REGS_R13 = 13,
+	VCPU_REGS_R14 = 14,
+	VCPU_REGS_R15 = 15,
+	VCPU_REGS_RIP = 16,
+	NR_VCPU_REGS = 17,
+	VCPU_EXREG_PDPTR = 17,
+	VCPU_EXREG_CR0 = 18,
+	VCPU_EXREG_CR3 = 19,
+	VCPU_EXREG_CR4 = 20,
+	VCPU_EXREG_RFLAGS = 21,
+	VCPU_EXREG_SEGMENTS = 22,
+	VCPU_EXREG_EXIT_INFO_1 = 23,
+	VCPU_EXREG_EXIT_INFO_2 = 24,
+};
+
+enum exit_fastpath_completion {
+	EXIT_FASTPATH_NONE = 0,
+	EXIT_FASTPATH_REENTER_GUEST = 1,
+	EXIT_FASTPATH_EXIT_HANDLED = 2,
+};
+
+enum kvm_apicv_inhibit {
+	APICV_INHIBIT_REASON_DISABLE = 0,
+	APICV_INHIBIT_REASON_HYPERV = 1,
+	APICV_INHIBIT_REASON_ABSENT = 2,
+	APICV_INHIBIT_REASON_BLOCKIRQ = 3,
+	APICV_INHIBIT_REASON_PHYSICAL_ID_ALIASED = 4,
+	APICV_INHIBIT_REASON_APIC_ID_MODIFIED = 5,
+	APICV_INHIBIT_REASON_APIC_BASE_MODIFIED = 6,
+	APICV_INHIBIT_REASON_NESTED = 7,
+	APICV_INHIBIT_REASON_IRQWIN = 8,
+	APICV_INHIBIT_REASON_PIT_REINJ = 9,
+	APICV_INHIBIT_REASON_SEV = 10,
+	APICV_INHIBIT_REASON_LOGICAL_ID_ALIASED = 11,
+};
+
+struct msr_data;
+
+struct kvm_x86_nested_ops;
+
+union kvm_smram;
+
+struct kvm_enc_region;
+
+struct kvm_msr_entry;
+
+struct kvm_x86_ops {
+	const char *name;
+	int (*check_processor_compatibility)();
+	int (*hardware_enable)();
+	void (*hardware_disable)();
+	void (*hardware_unsetup)();
+	bool (*has_emulated_msr)(struct kvm *, u32);
+	void (*vcpu_after_set_cpuid)(struct kvm_vcpu *);
+	unsigned int vm_size;
+	int (*vm_init)(struct kvm *);
+	void (*vm_destroy)(struct kvm *);
+	int (*vcpu_precreate)(struct kvm *);
+	int (*vcpu_create)(struct kvm_vcpu *);
+	void (*vcpu_free)(struct kvm_vcpu *);
+	void (*vcpu_reset)(struct kvm_vcpu *, bool);
+	void (*prepare_switch_to_guest)(struct kvm_vcpu *);
+	void (*vcpu_load)(struct kvm_vcpu *, int);
+	void (*vcpu_put)(struct kvm_vcpu *);
+	void (*update_exception_bitmap)(struct kvm_vcpu *);
+	int (*get_msr)(struct kvm_vcpu *, struct msr_data *);
+	int (*set_msr)(struct kvm_vcpu *, struct msr_data *);
+	u64 (*get_segment_base)(struct kvm_vcpu *, int);
+	void (*get_segment)(struct kvm_vcpu *, struct kvm_segment *, int);
+	int (*get_cpl)(struct kvm_vcpu *);
+	void (*set_segment)(struct kvm_vcpu *, struct kvm_segment *, int);
+	void (*get_cs_db_l_bits)(struct kvm_vcpu *, int *, int *);
+	bool (*is_valid_cr0)(struct kvm_vcpu *, unsigned long);
+	void (*set_cr0)(struct kvm_vcpu *, unsigned long);
+	void (*post_set_cr3)(struct kvm_vcpu *, unsigned long);
+	bool (*is_valid_cr4)(struct kvm_vcpu *, unsigned long);
+	void (*set_cr4)(struct kvm_vcpu *, unsigned long);
+	int (*set_efer)(struct kvm_vcpu *, u64);
+	void (*get_idt)(struct kvm_vcpu *, struct desc_ptr *);
+	void (*set_idt)(struct kvm_vcpu *, struct desc_ptr *);
+	void (*get_gdt)(struct kvm_vcpu *, struct desc_ptr *);
+	void (*set_gdt)(struct kvm_vcpu *, struct desc_ptr *);
+	void (*sync_dirty_debug_regs)(struct kvm_vcpu *);
+	void (*set_dr7)(struct kvm_vcpu *, unsigned long);
+	void (*cache_reg)(struct kvm_vcpu *, enum kvm_reg);
+	unsigned long (*get_rflags)(struct kvm_vcpu *);
+	void (*set_rflags)(struct kvm_vcpu *, unsigned long);
+	bool (*get_if_flag)(struct kvm_vcpu *);
+	void (*flush_tlb_all)(struct kvm_vcpu *);
+	void (*flush_tlb_current)(struct kvm_vcpu *);
+	int (*flush_remote_tlbs)(struct kvm *);
+	int (*flush_remote_tlbs_range)(struct kvm *, gfn_t, gfn_t);
+	void (*flush_tlb_gva)(struct kvm_vcpu *, gva_t);
+	void (*flush_tlb_guest)(struct kvm_vcpu *);
+	int (*vcpu_pre_run)(struct kvm_vcpu *);
+	enum exit_fastpath_completion (*vcpu_run)(struct kvm_vcpu *);
+	int (*handle_exit)(struct kvm_vcpu *, enum exit_fastpath_completion);
+	int (*skip_emulated_instruction)(struct kvm_vcpu *);
+	void (*update_emulated_instruction)(struct kvm_vcpu *);
+	void (*set_interrupt_shadow)(struct kvm_vcpu *, int);
+	u32 (*get_interrupt_shadow)(struct kvm_vcpu *);
+	void (*patch_hypercall)(struct kvm_vcpu *, unsigned char *);
+	void (*inject_irq)(struct kvm_vcpu *, bool);
+	void (*inject_nmi)(struct kvm_vcpu *);
+	void (*inject_exception)(struct kvm_vcpu *);
+	void (*cancel_injection)(struct kvm_vcpu *);
+	int (*interrupt_allowed)(struct kvm_vcpu *, bool);
+	int (*nmi_allowed)(struct kvm_vcpu *, bool);
+	bool (*get_nmi_mask)(struct kvm_vcpu *);
+	void (*set_nmi_mask)(struct kvm_vcpu *, bool);
+	bool (*is_vnmi_pending)(struct kvm_vcpu *);
+	bool (*set_vnmi_pending)(struct kvm_vcpu *);
+	void (*enable_nmi_window)(struct kvm_vcpu *);
+	void (*enable_irq_window)(struct kvm_vcpu *);
+	void (*update_cr8_intercept)(struct kvm_vcpu *, int, int);
+	bool (*check_apicv_inhibit_reasons)(enum kvm_apicv_inhibit);
+	const unsigned long required_apicv_inhibits;
+	bool allow_apicv_in_x2apic_without_x2apic_virtualization;
+	void (*refresh_apicv_exec_ctrl)(struct kvm_vcpu *);
+	void (*hwapic_irr_update)(struct kvm_vcpu *, int);
+	void (*hwapic_isr_update)(int);
+	bool (*guest_apic_has_interrupt)(struct kvm_vcpu *);
+	void (*load_eoi_exitmap)(struct kvm_vcpu *, u64 *);
+	void (*set_virtual_apic_mode)(struct kvm_vcpu *);
+	void (*set_apic_access_page_addr)(struct kvm_vcpu *);
+	void (*deliver_interrupt)(struct kvm_lapic *, int, int, int);
+	int (*sync_pir_to_irr)(struct kvm_vcpu *);
+	int (*set_tss_addr)(struct kvm *, unsigned int);
+	int (*set_identity_map_addr)(struct kvm *, u64);
+	u8 (*get_mt_mask)(struct kvm_vcpu *, gfn_t, bool);
+	void (*load_mmu_pgd)(struct kvm_vcpu *, hpa_t, int);
+	bool (*has_wbinvd_exit)();
+	u64 (*get_l2_tsc_offset)(struct kvm_vcpu *);
+	u64 (*get_l2_tsc_multiplier)(struct kvm_vcpu *);
+	void (*write_tsc_offset)(struct kvm_vcpu *);
+	void (*write_tsc_multiplier)(struct kvm_vcpu *);
+	void (*get_exit_info)(struct kvm_vcpu *, u32 *, u64 *, u64 *, u32 *, u32 *);
+	int (*check_intercept)(struct kvm_vcpu *, struct x86_instruction_info *, enum x86_intercept_stage, struct x86_exception *);
+	void (*handle_exit_irqoff)(struct kvm_vcpu *);
+	void (*request_immediate_exit)(struct kvm_vcpu *);
+	void (*sched_in)(struct kvm_vcpu *, int);
+	int cpu_dirty_log_size;
+	void (*update_cpu_dirty_logging)(struct kvm_vcpu *);
+	const struct kvm_x86_nested_ops *nested_ops;
+	void (*vcpu_blocking)(struct kvm_vcpu *);
+	void (*vcpu_unblocking)(struct kvm_vcpu *);
+	int (*pi_update_irte)(struct kvm *, unsigned int, uint32_t, bool);
+	void (*pi_start_assignment)(struct kvm *);
+	void (*apicv_pre_state_restore)(struct kvm_vcpu *);
+	void (*apicv_post_state_restore)(struct kvm_vcpu *);
+	bool (*dy_apicv_has_pending_interrupt)(struct kvm_vcpu *);
+	int (*set_hv_timer)(struct kvm_vcpu *, u64, bool *);
+	void (*cancel_hv_timer)(struct kvm_vcpu *);
+	void (*setup_mce)(struct kvm_vcpu *);
+	int (*smi_allowed)(struct kvm_vcpu *, bool);
+	int (*enter_smm)(struct kvm_vcpu *, union kvm_smram *);
+	int (*leave_smm)(struct kvm_vcpu *, const union kvm_smram *);
+	void (*enable_smi_window)(struct kvm_vcpu *);
+	int (*mem_enc_ioctl)(struct kvm *, void __attribute__((btf_type_tag("user"))) *);
+	int (*mem_enc_register_region)(struct kvm *, struct kvm_enc_region *);
+	int (*mem_enc_unregister_region)(struct kvm *, struct kvm_enc_region *);
+	int (*vm_copy_enc_context_from)(struct kvm *, unsigned int);
+	int (*vm_move_enc_context_from)(struct kvm *, unsigned int);
+	void (*guest_memory_reclaimed)(struct kvm *);
+	int (*get_msr_feature)(struct kvm_msr_entry *);
+	bool (*can_emulate_instruction)(struct kvm_vcpu *, int, void *, int);
+	bool (*apic_init_signal_blocked)(struct kvm_vcpu *);
+	int (*enable_l2_tlb_flush)(struct kvm_vcpu *);
+	void (*migrate_timers)(struct kvm_vcpu *);
+	void (*msr_filter_changed)(struct kvm_vcpu *);
+	int (*complete_emulated_msr)(struct kvm_vcpu *, int);
+	void (*vcpu_deliver_sipi_vector)(struct kvm_vcpu *, u8);
+	unsigned long (*vcpu_get_apicv_inhibit_reasons)(struct kvm_vcpu *);
+};
+
+struct msr_data {
+	bool host_initiated;
+	u32 index;
+	u64 data;
+};
+
+struct kvm_nested_state;
+
+struct kvm_x86_nested_ops {
+	void (*leave_nested)(struct kvm_vcpu *);
+	bool (*is_exception_vmexit)(struct kvm_vcpu *, u8, u32);
+	int (*check_events)(struct kvm_vcpu *);
+	bool (*has_events)(struct kvm_vcpu *);
+	void (*triple_fault)(struct kvm_vcpu *);
+	int (*get_state)(struct kvm_vcpu *, struct kvm_nested_state __attribute__((btf_type_tag("user"))) *, unsigned int);
+	int (*set_state)(struct kvm_vcpu *, struct kvm_nested_state __attribute__((btf_type_tag("user"))) *, struct kvm_nested_state *);
+	bool (*get_nested_state_pages)(struct kvm_vcpu *);
+	int (*write_log_dirty)(struct kvm_vcpu *, gpa_t);
+	int (*enable_evmcs)(struct kvm_vcpu *, uint16_t *);
+	uint16_t (*get_evmcs_version)(struct kvm_vcpu *);
+	void (*hv_inject_synthetic_vmexit_post_tlb_flush)(struct kvm_vcpu *);
+};
+
+struct kvm_vmx_nested_state_hdr {
+	__u64 vmxon_pa;
+	__u64 vmcs12_pa;
+	struct {
+		__u16 flags;
+	} smm;
+	__u16 pad;
+	__u32 flags;
+	__u64 preemption_timer_deadline;
+};
+
+struct kvm_svm_nested_state_hdr {
+	__u64 vmcb_pa;
+};
+
+struct kvm_vmx_nested_state_data {
+	__u8 vmcs12[4096];
+	__u8 shadow_vmcs12[4096];
+};
+
+struct kvm_svm_nested_state_data {
+	__u8 vmcb12[4096];
+};
+
+struct kvm_nested_state {
+	__u16 flags;
+	__u16 format;
+	__u32 size;
+	union {
+		struct kvm_vmx_nested_state_hdr vmx;
+		struct kvm_svm_nested_state_hdr svm;
+		__u8 pad[120];
+	} hdr;
+	union {
+		struct {
+			struct {} __empty_vmx;
+			struct kvm_vmx_nested_state_data vmx[0];
+		};
+		struct {
+			struct {} __empty_svm;
+			struct kvm_svm_nested_state_data svm[0];
+		};
+	} data;
+};
+
+struct kvm_smm_seg_state_64 {
+	u16 selector;
+	u16 attributes;
+	u32 limit;
+	u64 base;
+};
+
+struct kvm_smram_state_64 {
+	struct kvm_smm_seg_state_64 es;
+	struct kvm_smm_seg_state_64 cs;
+	struct kvm_smm_seg_state_64 ss;
+	struct kvm_smm_seg_state_64 ds;
+	struct kvm_smm_seg_state_64 fs;
+	struct kvm_smm_seg_state_64 gs;
+	struct kvm_smm_seg_state_64 gdtr;
+	struct kvm_smm_seg_state_64 ldtr;
+	struct kvm_smm_seg_state_64 idtr;
+	struct kvm_smm_seg_state_64 tr;
+	u64 io_restart_rip;
+	u64 io_restart_rcx;
+	u64 io_restart_rsi;
+	u64 io_restart_rdi;
+	u32 io_restart_dword;
+	u32 reserved1;
+	u8 io_inst_restart;
+	u8 auto_hlt_restart;
+	u8 amd_nmi_mask;
+	u8 int_shadow;
+	u32 reserved2;
+	u64 efer;
+	u64 svm_guest_flag;
+	u64 svm_guest_vmcb_gpa;
+	u64 svm_guest_virtual_int;
+	u32 reserved3[3];
+	u32 smm_revison;
+	u32 smbase;
+	u32 reserved4[5];
+	u64 ssp;
+	u64 svm_guest_pat;
+	u64 svm_host_efer;
+	u64 svm_host_cr4;
+	u64 svm_host_cr3;
+	u64 svm_host_cr0;
+	u64 cr4;
+	u64 cr3;
+	u64 cr0;
+	u64 dr7;
+	u64 dr6;
+	u64 rflags;
+	u64 rip;
+	u64 gprs[16];
+};
+
+struct kvm_smm_seg_state_32 {
+	u32 flags;
+	u32 limit;
+	u32 base;
+};
+
+struct kvm_smram_state_32 {
+	u32 reserved1[62];
+	u32 smbase;
+	u32 smm_revision;
+	u16 io_inst_restart;
+	u16 auto_hlt_restart;
+	u32 io_restart_rdi;
+	u32 io_restart_rcx;
+	u32 io_restart_rsi;
+	u32 io_restart_rip;
+	u32 cr4;
+	u16 reserved2;
+	u8 int_shadow;
+	u8 reserved3[17];
+	struct kvm_smm_seg_state_32 ds;
+	struct kvm_smm_seg_state_32 fs;
+	struct kvm_smm_seg_state_32 gs;
+	struct kvm_smm_seg_state_32 idtr;
+	struct kvm_smm_seg_state_32 tr;
+	u32 reserved;
+	struct kvm_smm_seg_state_32 gdtr;
+	struct kvm_smm_seg_state_32 ldtr;
+	struct kvm_smm_seg_state_32 es;
+	struct kvm_smm_seg_state_32 cs;
+	struct kvm_smm_seg_state_32 ss;
+	u32 es_sel;
+	u32 cs_sel;
+	u32 ss_sel;
+	u32 ds_sel;
+	u32 fs_sel;
+	u32 gs_sel;
+	u32 ldtr_sel;
+	u32 tr_sel;
+	u32 dr7;
+	u32 dr6;
+	u32 gprs[8];
+	u32 eip;
+	u32 eflags;
+	u32 cr3;
+	u32 cr0;
+};
+
+union kvm_smram {
+	struct kvm_smram_state_64 smram64;
+	struct kvm_smram_state_32 smram32;
+	u8 bytes[512];
+};
+
+struct kvm_enc_region {
+	__u64 addr;
+	__u64 size;
+};
+
+struct kvm_msr_entry {
+	__u32 index;
+	__u32 reserved;
+	__u64 data;
+};
+
+struct user_return_notifier {
+	void (*on_user_return)(struct user_return_notifier *);
+	struct hlist_node link;
+};
+
+struct kvm_user_return_msr_values {
+	u64 host;
+	u64 curr;
+};
+
+struct kvm_user_return_msrs {
+	struct user_return_notifier urn;
+	bool registered;
+	struct kvm_user_return_msr_values values[16];
+};
+
+struct cpuid_reg {
+	u32 function;
+	u32 index;
+	int reg;
+};
+
+struct pvclock_clock {
+	int vclock_mode;
+	u64 cycle_last;
+	u64 mask;
+	u32 mult;
+	u32 shift;
+	u64 base_cycles;
+	u64 offset;
+};
+
+struct pvclock_gtod_data {
+	seqcount_t seq;
+	struct pvclock_clock clock;
+	struct pvclock_clock raw_clock;
+	ktime_t offs_boot;
+	u64 wall_time_sec;
+};
+
+struct read_write_emulator_ops {
+	int (*read_write_prepare)(struct kvm_vcpu *, void *, int);
+	int (*read_write_emulate)(struct kvm_vcpu *, gpa_t, void *, int);
+	int (*read_write_mmio)(struct kvm_vcpu *, gpa_t, int, void *);
+	int (*read_write_exit_mmio)(struct kvm_vcpu *, gpa_t, void *, int);
+	bool write;
+};
+
+enum lapic_mode {
+	LAPIC_MODE_DISABLED = 0,
+	LAPIC_MODE_INVALID = 1024,
+	LAPIC_MODE_XAPIC = 2048,
+	LAPIC_MODE_X2APIC = 3072,
+};
+
+enum {
+	KVM_DEBUGREG_BP_ENABLED = 1,
+	KVM_DEBUGREG_WONT_EXIT = 2,
+};
+
+enum x86_hypervisor_type {
+	X86_HYPER_NATIVE = 0,
+	X86_HYPER_VMWARE = 1,
+	X86_HYPER_MS_HYPERV = 2,
+	X86_HYPER_XEN_PV = 3,
+	X86_HYPER_XEN_HVM = 4,
+	X86_HYPER_KVM = 5,
+	X86_HYPER_JAILHOUSE = 6,
+	X86_HYPER_ACRN = 7,
+};
+
+enum {
+	VCPU_SREG_ES = 0,
+	VCPU_SREG_CS = 1,
+	VCPU_SREG_SS = 2,
+	VCPU_SREG_DS = 3,
+	VCPU_SREG_FS = 4,
+	VCPU_SREG_GS = 5,
+	VCPU_SREG_TR = 6,
+	VCPU_SREG_LDTR = 7,
+};
+
+enum pg_level {
+	PG_LEVEL_NONE = 0,
+	PG_LEVEL_4K = 1,
+	PG_LEVEL_2M = 2,
+	PG_LEVEL_1G = 3,
+	PG_LEVEL_512G = 4,
+	PG_LEVEL_NUM = 5,
+};
+
+enum irq_remap_cap {
+	IRQ_POSTING_CAP = 0,
+};
+
+enum kvm_only_cpuid_leafs {
+	CPUID_12_EAX = 22,
+	CPUID_7_1_EDX = 23,
+	CPUID_8000_0007_EDX = 24,
+	CPUID_8000_0022_EAX = 25,
+	CPUID_7_2_EDX = 26,
+	NR_KVM_CPU_CAPS = 27,
+	NKVMCAPINTS = 5,
+};
+
+enum cpuid_leafs {
+	CPUID_1_EDX = 0,
+	CPUID_8000_0001_EDX = 1,
+	CPUID_8086_0001_EDX = 2,
+	CPUID_LNX_1 = 3,
+	CPUID_1_ECX = 4,
+	CPUID_C000_0001_EDX = 5,
+	CPUID_8000_0001_ECX = 6,
+	CPUID_LNX_2 = 7,
+	CPUID_LNX_3 = 8,
+	CPUID_7_0_EBX = 9,
+	CPUID_D_1_EAX = 10,
+	CPUID_LNX_4 = 11,
+	CPUID_7_1_EAX = 12,
+	CPUID_8000_0008_EBX = 13,
+	CPUID_6_EAX = 14,
+	CPUID_8000_000A_EDX = 15,
+	CPUID_7_ECX = 16,
+	CPUID_8000_0007_EBX = 17,
+	CPUID_7_EDX = 18,
+	CPUID_8000_001F_EAX = 19,
+	CPUID_8000_0021_EAX = 20,
+	CPUID_LNX_5 = 21,
+	NR_CPUID_WORDS = 22,
+};
+
+enum kvm_governed_features {
+	KVM_GOVERNED_X86_FEATURE_GBPAGES = 0,
+	KVM_GOVERNED_X86_FEATURE_XSAVES = 1,
+	KVM_GOVERNED_X86_FEATURE_VMX = 2,
+	KVM_GOVERNED_X86_FEATURE_NRIPS = 3,
+	KVM_GOVERNED_X86_FEATURE_TSCRATEMSR = 4,
+	KVM_GOVERNED_X86_FEATURE_V_VMSAVE_VMLOAD = 5,
+	KVM_GOVERNED_X86_FEATURE_LBRV = 6,
+	KVM_GOVERNED_X86_FEATURE_PAUSEFILTER = 7,
+	KVM_GOVERNED_X86_FEATURE_PFTHRESHOLD = 8,
+	KVM_GOVERNED_X86_FEATURE_VGIF = 9,
+	KVM_GOVERNED_X86_FEATURE_VNMI = 10,
+	KVM_NR_GOVERNED_FEATURES = 11,
+};
+
+enum hv_tlb_flush_fifos {
+	HV_L1_TLB_FLUSH_FIFO = 0,
+	HV_L2_TLB_FLUSH_FIFO = 1,
+	HV_NR_TLB_FLUSH_FIFOS = 2,
+};
+
+enum tk_offsets {
+	TK_OFFS_REAL = 0,
+	TK_OFFS_BOOT = 1,
+	TK_OFFS_TAI = 2,
+	TK_OFFS_MAX = 3,
+};
+
+enum hk_type {
+	HK_TYPE_TIMER = 0,
+	HK_TYPE_RCU = 1,
+	HK_TYPE_MISC = 2,
+	HK_TYPE_SCHED = 3,
+	HK_TYPE_TICK = 4,
+	HK_TYPE_DOMAIN = 5,
+	HK_TYPE_WQ = 6,
+	HK_TYPE_MANAGED_IRQ = 7,
+	HK_TYPE_KTHREAD = 8,
+	HK_TYPE_MAX = 9,
+};
+
+enum cpufreq_table_sorting {
+	CPUFREQ_TABLE_UNSORTED = 0,
+	CPUFREQ_TABLE_SORTED_ASCENDING = 1,
+	CPUFREQ_TABLE_SORTED_DESCENDING = 2,
+};
+
+enum clocksource_ids {
+	CSID_GENERIC = 0,
+	CSID_ARM_ARCH_COUNTER = 1,
+	CSID_MAX = 2,
+};
+
+enum kvm_intr_type {
+	KVM_HANDLING_IRQ = 1,
+	KVM_HANDLING_NMI = 2,
+};
+
+enum vmx_l1d_flush_state {
+	VMENTER_L1D_FLUSH_AUTO = 0,
+	VMENTER_L1D_FLUSH_NEVER = 1,
+	VMENTER_L1D_FLUSH_COND = 2,
+	VMENTER_L1D_FLUSH_ALWAYS = 3,
+	VMENTER_L1D_FLUSH_EPT_DISABLED = 4,
+	VMENTER_L1D_FLUSH_NOT_REQUIRED = 5,
+};
+
+typedef u64 uint64_t;
+
+struct trace_event_raw_kvm_entry {
+	struct trace_entry ent;
+	unsigned int vcpu_id;
+	unsigned long rip;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_hypercall {
+	struct trace_entry ent;
+	unsigned long nr;
+	unsigned long a0;
+	unsigned long a1;
+	unsigned long a2;
+	unsigned long a3;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_hv_hypercall {
+	struct trace_entry ent;
+	__u16 rep_cnt;
+	__u16 rep_idx;
+	__u64 ingpa;
+	__u64 outgpa;
+	__u16 code;
+	__u16 var_cnt;
+	bool fast;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_hv_hypercall_done {
+	struct trace_entry ent;
+	__u64 result;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_xen_hypercall {
+	struct trace_entry ent;
+	u8 cpl;
+	unsigned long nr;
+	unsigned long a0;
+	unsigned long a1;
+	unsigned long a2;
+	unsigned long a3;
+	unsigned long a4;
+	unsigned long a5;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_pio {
+	struct trace_entry ent;
+	unsigned int rw;
+	unsigned int port;
+	unsigned int size;
+	unsigned int count;
+	unsigned int val;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_fast_mmio {
+	struct trace_entry ent;
+	u64 gpa;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_cpuid {
+	struct trace_entry ent;
+	unsigned int function;
+	unsigned int index;
+	unsigned long rax;
+	unsigned long rbx;
+	unsigned long rcx;
+	unsigned long rdx;
+	bool found;
+	bool used_max_basic;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_apic {
+	struct trace_entry ent;
+	unsigned int rw;
+	unsigned int reg;
+	u64 val;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_exit {
+	struct trace_entry ent;
+	unsigned int exit_reason;
+	unsigned long guest_rip;
+	u32 isa;
+	u64 info1;
+	u64 info2;
+	u32 intr_info;
+	u32 error_code;
+	unsigned int vcpu_id;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_inj_virq {
+	struct trace_entry ent;
+	unsigned int vector;
+	bool soft;
+	bool reinjected;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_inj_exception {
+	struct trace_entry ent;
+	u8 exception;
+	u8 has_error;
+	u32 error_code;
+	bool reinjected;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_page_fault {
+	struct trace_entry ent;
+	unsigned int vcpu_id;
+	unsigned long guest_rip;
+	u64 fault_address;
+	u64 error_code;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_msr {
+	struct trace_entry ent;
+	unsigned int write;
+	u32 ecx;
+	u64 data;
+	u8 exception;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_cr {
+	struct trace_entry ent;
+	unsigned int rw;
+	unsigned int cr;
+	unsigned long val;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_pic_set_irq {
+	struct trace_entry ent;
+	__u8 chip;
+	__u8 pin;
+	__u8 elcr;
+	__u8 imr;
+	bool coalesced;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_apic_ipi {
+	struct trace_entry ent;
+	__u32 icr_low;
+	__u32 dest_id;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_apic_accept_irq {
+	struct trace_entry ent;
+	__u32 apicid;
+	__u16 dm;
+	__u16 tm;
+	__u8 vec;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_eoi {
+	struct trace_entry ent;
+	__u32 apicid;
+	int vector;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_pv_eoi {
+	struct trace_entry ent;
+	__u32 apicid;
+	int vector;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_nested_vmenter {
+	struct trace_entry ent;
+	__u64 rip;
+	__u64 vmcb;
+	__u64 nested_rip;
+	__u32 int_ctl;
+	__u32 event_inj;
+	bool tdp_enabled;
+	__u64 guest_pgd;
+	__u32 isa;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_nested_intercepts {
+	struct trace_entry ent;
+	__u16 cr_read;
+	__u16 cr_write;
+	__u32 exceptions;
+	__u32 intercept1;
+	__u32 intercept2;
+	__u32 intercept3;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_nested_vmexit {
+	struct trace_entry ent;
+	unsigned int exit_reason;
+	unsigned long guest_rip;
+	u32 isa;
+	u64 info1;
+	u64 info2;
+	u32 intr_info;
+	u32 error_code;
+	unsigned int vcpu_id;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_nested_vmexit_inject {
+	struct trace_entry ent;
+	__u32 exit_code;
+	__u64 exit_info1;
+	__u64 exit_info2;
+	__u32 exit_int_info;
+	__u32 exit_int_info_err;
+	__u32 isa;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_nested_intr_vmexit {
+	struct trace_entry ent;
+	__u64 rip;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_invlpga {
+	struct trace_entry ent;
+	__u64 rip;
+	unsigned int asid;
+	__u64 address;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_skinit {
+	struct trace_entry ent;
+	__u64 rip;
+	__u32 slb;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_emulate_insn {
+	struct trace_entry ent;
+	__u64 rip;
+	__u32 csbase;
+	__u8 len;
+	__u8 insn[15];
+	__u8 flags;
+	__u8 failed;
+	char __data[0];
+};
+
+struct trace_event_raw_vcpu_match_mmio {
+	struct trace_entry ent;
+	gva_t gva;
+	gpa_t gpa;
+	bool write;
+	bool gpa_match;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_write_tsc_offset {
+	struct trace_entry ent;
+	unsigned int vcpu_id;
+	__u64 previous_tsc_offset;
+	__u64 next_tsc_offset;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_update_master_clock {
+	struct trace_entry ent;
+	bool use_master_clock;
+	unsigned int host_clock;
+	bool offset_matched;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_track_tsc {
+	struct trace_entry ent;
+	unsigned int vcpu_id;
+	unsigned int nr_vcpus_matched_tsc;
+	unsigned int online_vcpus;
+	bool use_master_clock;
+	unsigned int host_clock;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_pml_full {
+	struct trace_entry ent;
+	unsigned int vcpu_id;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_ple_window_update {
+	struct trace_entry ent;
+	unsigned int vcpu_id;
+	unsigned int new;
+	unsigned int old;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_pvclock_update {
+	struct trace_entry ent;
+	unsigned int vcpu_id;
+	__u32 version;
+	__u64 tsc_timestamp;
+	__u64 system_time;
+	__u32 tsc_to_system_mul;
+	__s8 tsc_shift;
+	__u8 flags;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_wait_lapic_expire {
+	struct trace_entry ent;
+	unsigned int vcpu_id;
+	s64 delta;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_smm_transition {
+	struct trace_entry ent;
+	unsigned int vcpu_id;
+	u64 smbase;
+	bool entering;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_pi_irte_update {
+	struct trace_entry ent;
+	unsigned int host_irq;
+	unsigned int vcpu_id;
+	unsigned int gsi;
+	unsigned int gvec;
+	u64 pi_desc_addr;
+	bool set;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_hv_notify_acked_sint {
+	struct trace_entry ent;
+	int vcpu_id;
+	u32 sint;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_hv_synic_set_irq {
+	struct trace_entry ent;
+	int vcpu_id;
+	u32 sint;
+	int vector;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_hv_synic_send_eoi {
+	struct trace_entry ent;
+	int vcpu_id;
+	u32 sint;
+	int vector;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_hv_synic_set_msr {
+	struct trace_entry ent;
+	int vcpu_id;
+	u32 msr;
+	u64 data;
+	bool host;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_hv_stimer_set_config {
+	struct trace_entry ent;
+	int vcpu_id;
+	int timer_index;
+	u64 config;
+	bool host;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_hv_stimer_set_count {
+	struct trace_entry ent;
+	int vcpu_id;
+	int timer_index;
+	u64 count;
+	bool host;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_hv_stimer_start_periodic {
+	struct trace_entry ent;
+	int vcpu_id;
+	int timer_index;
+	u64 time_now;
+	u64 exp_time;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_hv_stimer_start_one_shot {
+	struct trace_entry ent;
+	int vcpu_id;
+	int timer_index;
+	u64 time_now;
+	u64 count;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_hv_stimer_callback {
+	struct trace_entry ent;
+	int vcpu_id;
+	int timer_index;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_hv_stimer_expiration {
+	struct trace_entry ent;
+	int vcpu_id;
+	int timer_index;
+	int direct;
+	int msg_send_result;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_hv_stimer_cleanup {
+	struct trace_entry ent;
+	int vcpu_id;
+	int timer_index;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_apicv_inhibit_changed {
+	struct trace_entry ent;
+	int reason;
+	bool set;
+	unsigned long inhibits;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_apicv_accept_irq {
+	struct trace_entry ent;
+	__u32 apicid;
+	__u16 dm;
+	__u16 tm;
+	__u8 vec;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_avic_incomplete_ipi {
+	struct trace_entry ent;
+	u32 vcpu;
+	u32 icrh;
+	u32 icrl;
+	u32 id;
+	u32 index;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_avic_unaccelerated_access {
+	struct trace_entry ent;
+	u32 vcpu;
+	u32 offset;
+	bool ft;
+	bool rw;
+	u32 vec;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_avic_ga_log {
+	struct trace_entry ent;
+	u32 vmid;
+	u32 vcpuid;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_avic_kick_vcpu_slowpath {
+	struct trace_entry ent;
+	u32 icrh;
+	u32 icrl;
+	u32 index;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_avic_doorbell {
+	struct trace_entry ent;
+	u32 vcpuid;
+	u32 apicid;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_hv_timer_state {
+	struct trace_entry ent;
+	unsigned int vcpu_id;
+	unsigned int hv_timer_in_use;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_hv_flush_tlb {
+	struct trace_entry ent;
+	u64 processor_mask;
+	u64 address_space;
+	u64 flags;
+	bool guest_mode;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_hv_flush_tlb_ex {
+	struct trace_entry ent;
+	u64 valid_bank_mask;
+	u64 format;
+	u64 address_space;
+	u64 flags;
+	bool guest_mode;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_hv_send_ipi {
+	struct trace_entry ent;
+	u32 vector;
+	u64 processor_mask;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_hv_send_ipi_ex {
+	struct trace_entry ent;
+	u32 vector;
+	u64 format;
+	u64 valid_bank_mask;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_pv_tlb_flush {
+	struct trace_entry ent;
+	unsigned int vcpu_id;
+	bool need_flush_tlb;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_nested_vmenter_failed {
+	struct trace_entry ent;
+	u32 __data_loc_msg;
+	u32 err;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_hv_syndbg_set_msr {
+	struct trace_entry ent;
+	int vcpu_id;
+	u32 vp_index;
+	u32 msr;
+	u64 data;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_hv_syndbg_get_msr {
+	struct trace_entry ent;
+	int vcpu_id;
+	u32 vp_index;
+	u32 msr;
+	u64 data;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_vmgexit_enter {
+	struct trace_entry ent;
+	unsigned int vcpu_id;
+	u64 exit_reason;
+	u64 info1;
+	u64 info2;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_vmgexit_exit {
+	struct trace_entry ent;
+	unsigned int vcpu_id;
+	u64 exit_reason;
+	u64 info1;
+	u64 info2;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_vmgexit_msr_protocol_enter {
+	struct trace_entry ent;
+	unsigned int vcpu_id;
+	u64 ghcb_gpa;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_vmgexit_msr_protocol_exit {
+	struct trace_entry ent;
+	unsigned int vcpu_id;
+	u64 ghcb_gpa;
+	int result;
+	char __data[0];
+};
+
+struct kvm_steal_time {
+	__u64 steal;
+	__u32 version;
+	__u32 flags;
+	__u8 preempted;
+	__u8 u8_pad[3];
+	__u32 pad[11];
+};
+
+struct __large_struct {
+	unsigned long buf[100];
+};
+
+struct trace_event_data_offsets_kvm_nested_vmenter_failed {
+	u32 msg;
+};
+
+struct kvm_clock_data {
+	__u64 clock;
+	__u32 flags;
+	__u32 pad0;
+	__u64 realtime;
+	__u64 host_tsc;
+	__u32 pad[4];
+};
+
+struct kvm_cpuid2 {
+	__u32 nent;
+	__u32 padding;
+	struct kvm_cpuid_entry2 entries[0];
+};
+
+struct kvm_msrs {
+	__u32 nmsrs;
+	__u32 pad;
+	struct kvm_msr_entry entries[0];
+};
+
+struct kvm_xsave {
+	__u32 region[1024];
+	__u32 extra[0];
+};
+
+struct kvm_debugregs {
+	__u64 db[4];
+	__u64 dr6;
+	__u64 dr7;
+	__u64 flags;
+	__u64 reserved[9];
+};
+
+struct kvm_xcr {
+	__u32 xcr;
+	__u32 reserved;
+	__u64 value;
+};
+
+struct kvm_xcrs {
+	__u32 nr_xcrs;
+	__u32 flags;
+	struct kvm_xcr xcrs[16];
+	__u64 padding[16];
+};
+
+struct kvm_tpr_access_ctl {
+	__u32 enabled;
+	__u32 flags;
+	__u32 reserved[8];
+};
+
+struct kvm_lapic_state {
+	char regs[1024];
+};
+
+struct kvm_cpuid_entry {
+	__u32 function;
+	__u32 eax;
+	__u32 ebx;
+	__u32 ecx;
+	__u32 edx;
+	__u32 padding;
+};
+
+struct kvm_cpuid {
+	__u32 nent;
+	__u32 padding;
+	struct kvm_cpuid_entry entries[0];
+};
+
+struct kvm_x86_mce {
+	__u64 status;
+	__u64 addr;
+	__u64 misc;
+	__u64 mcg_status;
+	__u8 bank;
+	__u8 pad1[7];
+	__u64 pad2[3];
+};
+
+struct kvm_msr_filter_range {
+	__u32 flags;
+	__u32 nmsrs;
+	__u32 base;
+	__u8 *bitmap;
+};
+
+struct kvm_hyperv_eventfd {
+	__u32 conn_id;
+	__s32 fd;
+	__u32 flags;
+	__u32 padding[3];
+};
+
+struct kvm_ioapic_state {
+	__u64 base_address;
+	__u32 ioregsel;
+	__u32 id;
+	__u32 irr;
+	__u32 pad;
+	union {
+		__u64 bits;
+		struct {
+			__u8 vector;
+			__u8 delivery_mode: 3;
+			__u8 dest_mode: 1;
+			__u8 delivery_status: 1;
+			__u8 polarity: 1;
+			__u8 remote_irr: 1;
+			__u8 trig_mode: 1;
+			__u8 mask: 1;
+			__u8 reserve: 7;
+			__u8 reserved[4];
+			__u8 dest_id;
+		} fields;
+	} redirtbl[24];
+};
+
+struct kvm_pmu_ops;
+
+struct kvm_x86_init_ops {
+	int (*hardware_setup)();
+	unsigned int (*handle_intel_pt_intr)();
+	struct kvm_x86_ops *runtime_ops;
+	struct kvm_pmu_ops *pmu_ops;
+};
+
+struct kvm_pmu_ops {
+	bool (*hw_event_available)(struct kvm_pmc *);
+	struct kvm_pmc * (*pmc_idx_to_pmc)(struct kvm_pmu *, int);
+	struct kvm_pmc * (*rdpmc_ecx_to_pmc)(struct kvm_vcpu *, unsigned int, u64 *);
+	struct kvm_pmc * (*msr_idx_to_pmc)(struct kvm_vcpu *, u32);
+	bool (*is_valid_rdpmc_ecx)(struct kvm_vcpu *, unsigned int);
+	bool (*is_valid_msr)(struct kvm_vcpu *, u32);
+	int (*get_msr)(struct kvm_vcpu *, struct msr_data *);
+	int (*set_msr)(struct kvm_vcpu *, struct msr_data *);
+	void (*refresh)(struct kvm_vcpu *);
+	void (*init)(struct kvm_vcpu *);
+	void (*reset)(struct kvm_vcpu *);
+	void (*deliver_pmi)(struct kvm_vcpu *);
+	void (*cleanup)(struct kvm_vcpu *);
+	const u64 EVENTSEL_EVENT;
+	const int MAX_NR_GP_COUNTERS;
+	const int MIN_NR_GP_COUNTERS;
+};
+
+struct clk;
+
+struct cpufreq_cpuinfo {
+	unsigned int max_freq;
+	unsigned int min_freq;
+	unsigned int transition_latency;
+};
+
+struct cpufreq_governor;
+
+struct cpufreq_frequency_table;
+
+struct cpufreq_stats;
+
+struct thermal_cooling_device;
+
+struct cpufreq_policy {
+	cpumask_var_t cpus;
+	cpumask_var_t related_cpus;
+	cpumask_var_t real_cpus;
+	unsigned int shared_type;
+	unsigned int cpu;
+	struct clk *clk;
+	struct cpufreq_cpuinfo cpuinfo;
+	unsigned int min;
+	unsigned int max;
+	unsigned int cur;
+	unsigned int suspend_freq;
+	unsigned int policy;
+	unsigned int last_policy;
+	struct cpufreq_governor *governor;
+	void *governor_data;
+	char last_governor[16];
+	struct work_struct update;
+	struct freq_constraints constraints;
+	struct freq_qos_request *min_freq_req;
+	struct freq_qos_request *max_freq_req;
+	struct cpufreq_frequency_table *freq_table;
+	enum cpufreq_table_sorting freq_table_sorted;
+	struct list_head policy_list;
+	struct kobject kobj;
+	struct completion kobj_unregister;
+	struct rw_semaphore rwsem;
+	bool fast_switch_possible;
+	bool fast_switch_enabled;
+	bool strict_target;
+	bool efficiencies_available;
+	unsigned int transition_delay_us;
+	bool dvfs_possible_from_any_cpu;
+	bool boost_enabled;
+	unsigned int cached_target_freq;
+	unsigned int cached_resolved_idx;
+	bool transition_ongoing;
+	spinlock_t transition_lock;
+	wait_queue_head_t transition_wait;
+	struct task_struct *transition_task;
+	struct cpufreq_stats *stats;
+	void *driver_data;
+	struct thermal_cooling_device *cdev;
+	struct notifier_block nb_min;
+	struct notifier_block nb_max;
+};
+
+struct cpufreq_governor {
+	char name[16];
+	int (*init)(struct cpufreq_policy *);
+	void (*exit)(struct cpufreq_policy *);
+	int (*start)(struct cpufreq_policy *);
+	void (*stop)(struct cpufreq_policy *);
+	void (*limits)(struct cpufreq_policy *);
+	ssize_t (*show_setspeed)(struct cpufreq_policy *, char *);
+	int (*store_setspeed)(struct cpufreq_policy *, unsigned int);
+	struct list_head governor_list;
+	struct module *owner;
+	u8 flags;
+};
+
+struct cpufreq_frequency_table {
+	unsigned int flags;
+	unsigned int driver_data;
+	unsigned int frequency;
+};
+
+struct kvm_clock_pairing {
+	__s64 sec;
+	__s64 nsec;
+	__u64 tsc;
+	__u32 flags;
+	__u32 pad[9];
+};
+
+struct kvm_lapic_irq {
+	u32 vector;
+	u16 delivery_mode;
+	u16 dest_mode;
+	bool level;
+	u16 trig_mode;
+	u32 shorthand;
+	u32 dest_id;
+	bool msi_redir_hint;
+};
+
+typedef enum exit_fastpath_completion fastpath_t;
+
+struct cpufreq_freqs {
+	struct cpufreq_policy *policy;
+	unsigned int old;
+	unsigned int new;
+	u8 flags;
+};
+
+struct clocksource;
+
+struct tk_read_base {
+	struct clocksource *clock;
+	u64 mask;
+	u64 cycle_last;
+	u32 mult;
+	u32 shift;
+	u64 xtime_nsec;
+	ktime_t base;
+	u64 base_real;
+};
+
+struct timekeeper {
+	struct tk_read_base tkr_mono;
+	struct tk_read_base tkr_raw;
+	u64 xtime_sec;
+	unsigned long ktime_sec;
+	struct timespec64 wall_to_monotonic;
+	ktime_t offs_real;
+	ktime_t offs_boot;
+	ktime_t offs_tai;
+	s32 tai_offset;
+	unsigned int clock_was_set_seq;
+	u8 cs_was_changed_seq;
+	ktime_t next_leap_ktime;
+	u64 raw_sec;
+	struct timespec64 monotonic_to_boot;
+	u64 cycle_interval;
+	u64 xtime_interval;
+	s64 xtime_remainder;
+	u64 raw_interval;
+	u64 ntp_tick;
+	s64 ntp_error;
+	u32 ntp_error_shift;
+	u32 ntp_err_mult;
+	u32 skip_second_overflow;
+};
+
+struct clocksource {
+	u64 (*read)(struct clocksource *);
+	u64 mask;
+	u32 mult;
+	u32 shift;
+	u64 max_idle_ns;
+	u32 maxadj;
+	u32 uncertainty_margin;
+	u64 max_cycles;
+	const char *name;
+	struct list_head list;
+	int rating;
+	enum clocksource_ids id;
+	enum vdso_clock_mode vdso_clock_mode;
+	unsigned long flags;
+	int (*enable)(struct clocksource *);
+	void (*disable)(struct clocksource *);
+	void (*suspend)(struct clocksource *);
+	void (*resume)(struct clocksource *);
+	void (*mark_unstable)(struct clocksource *);
+	void (*tick_stable)(struct clocksource *);
+	struct list_head wd_list;
+	u64 cs_last;
+	u64 wd_last;
+	struct module *owner;
+};
+
+struct trace_event_data_offsets_kvm_entry {};
+
+struct trace_event_data_offsets_kvm_hypercall {};
+
+struct trace_event_data_offsets_kvm_hv_hypercall {};
+
+struct trace_event_data_offsets_kvm_hv_hypercall_done {};
+
+struct trace_event_data_offsets_kvm_xen_hypercall {};
+
+struct trace_event_data_offsets_kvm_pio {};
+
+struct trace_event_data_offsets_kvm_fast_mmio {};
+
+struct trace_event_data_offsets_kvm_cpuid {};
+
+struct trace_event_data_offsets_kvm_apic {};
+
+struct trace_event_data_offsets_kvm_exit {};
+
+struct trace_event_data_offsets_kvm_inj_virq {};
+
+struct trace_event_data_offsets_kvm_inj_exception {};
+
+struct trace_event_data_offsets_kvm_page_fault {};
+
+struct trace_event_data_offsets_kvm_msr {};
+
+struct trace_event_data_offsets_kvm_cr {};
+
+struct trace_event_data_offsets_kvm_pic_set_irq {};
+
+struct trace_event_data_offsets_kvm_apic_ipi {};
+
+struct trace_event_data_offsets_kvm_apic_accept_irq {};
+
+struct trace_event_data_offsets_kvm_eoi {};
+
+struct trace_event_data_offsets_kvm_pv_eoi {};
+
+struct trace_event_data_offsets_kvm_nested_vmenter {};
+
+struct trace_event_data_offsets_kvm_nested_intercepts {};
+
+struct trace_event_data_offsets_kvm_nested_vmexit {};
+
+struct trace_event_data_offsets_kvm_nested_vmexit_inject {};
+
+struct trace_event_data_offsets_kvm_nested_intr_vmexit {};
+
+struct trace_event_data_offsets_kvm_invlpga {};
+
+struct trace_event_data_offsets_kvm_skinit {};
+
+struct trace_event_data_offsets_kvm_emulate_insn {};
+
+struct trace_event_data_offsets_vcpu_match_mmio {};
+
+struct trace_event_data_offsets_kvm_write_tsc_offset {};
+
+struct trace_event_data_offsets_kvm_update_master_clock {};
+
+struct trace_event_data_offsets_kvm_track_tsc {};
+
+struct trace_event_data_offsets_kvm_pml_full {};
+
+struct trace_event_data_offsets_kvm_ple_window_update {};
+
+struct trace_event_data_offsets_kvm_pvclock_update {};
+
+struct trace_event_data_offsets_kvm_wait_lapic_expire {};
+
+struct trace_event_data_offsets_kvm_smm_transition {};
+
+struct trace_event_data_offsets_kvm_pi_irte_update {};
+
+struct trace_event_data_offsets_kvm_hv_notify_acked_sint {};
+
+struct trace_event_data_offsets_kvm_hv_synic_set_irq {};
+
+struct trace_event_data_offsets_kvm_hv_synic_send_eoi {};
+
+struct trace_event_data_offsets_kvm_hv_synic_set_msr {};
+
+struct trace_event_data_offsets_kvm_hv_stimer_set_config {};
+
+struct trace_event_data_offsets_kvm_hv_stimer_set_count {};
+
+struct trace_event_data_offsets_kvm_hv_stimer_start_periodic {};
+
+struct trace_event_data_offsets_kvm_hv_stimer_start_one_shot {};
+
+struct trace_event_data_offsets_kvm_hv_stimer_callback {};
+
+struct trace_event_data_offsets_kvm_hv_stimer_expiration {};
+
+struct trace_event_data_offsets_kvm_hv_stimer_cleanup {};
+
+struct trace_event_data_offsets_kvm_apicv_inhibit_changed {};
+
+struct trace_event_data_offsets_kvm_apicv_accept_irq {};
+
+struct trace_event_data_offsets_kvm_avic_incomplete_ipi {};
+
+struct trace_event_data_offsets_kvm_avic_unaccelerated_access {};
+
+struct trace_event_data_offsets_kvm_avic_ga_log {};
+
+struct trace_event_data_offsets_kvm_avic_kick_vcpu_slowpath {};
+
+struct trace_event_data_offsets_kvm_avic_doorbell {};
+
+struct trace_event_data_offsets_kvm_hv_timer_state {};
+
+struct trace_event_data_offsets_kvm_hv_flush_tlb {};
+
+struct trace_event_data_offsets_kvm_hv_flush_tlb_ex {};
+
+struct trace_event_data_offsets_kvm_hv_send_ipi {};
+
+struct trace_event_data_offsets_kvm_hv_send_ipi_ex {};
+
+struct trace_event_data_offsets_kvm_pv_tlb_flush {};
+
+struct trace_event_data_offsets_kvm_hv_syndbg_set_msr {};
+
+struct trace_event_data_offsets_kvm_hv_syndbg_get_msr {};
+
+struct trace_event_data_offsets_kvm_vmgexit_enter {};
+
+struct trace_event_data_offsets_kvm_vmgexit_exit {};
+
+struct trace_event_data_offsets_kvm_vmgexit_msr_protocol_enter {};
+
+struct trace_event_data_offsets_kvm_vmgexit_msr_protocol_exit {};
+
+struct pvclock_wall_clock {
+	u32 version;
+	u32 sec;
+	u32 nsec;
+};
+
+struct kvm_msr_list {
+	__u32 nmsrs;
+	__u32 indices[0];
+};
+
+struct kvm_interrupt {
+	__u32 irq;
+};
+
+struct kvm_vapic_addr {
+	__u64 vapic_addr;
+};
+
+struct kvm_sregs2 {
+	struct kvm_segment cs;
+	struct kvm_segment ds;
+	struct kvm_segment es;
+	struct kvm_segment fs;
+	struct kvm_segment gs;
+	struct kvm_segment ss;
+	struct kvm_segment tr;
+	struct kvm_segment ldt;
+	struct kvm_dtable gdt;
+	struct kvm_dtable idt;
+	__u64 cr0;
+	__u64 cr2;
+	__u64 cr3;
+	__u64 cr4;
+	__u64 cr8;
+	__u64 efer;
+	__u64 apic_base;
+	__u64 flags;
+	__u64 pdptrs[4];
+};
+
+struct kvm_msr_filter_range_compat {
+	__u32 flags;
+	__u32 nmsrs;
+	__u32 base;
+	__u32 bitmap;
+};
+
+struct kvm_msr_filter_compat {
+	__u32 flags;
+	struct kvm_msr_filter_range_compat ranges[16];
+};
+
+struct kvm_msr_filter {
+	__u32 flags;
+	struct kvm_msr_filter_range ranges[16];
+};
+
+struct kvm_reinject_control {
+	__u8 pit_reinject;
+	__u8 reserved[31];
+};
+
+struct kvm_pic_state {
+	__u8 last_irr;
+	__u8 irr;
+	__u8 imr;
+	__u8 isr;
+	__u8 priority_add;
+	__u8 irq_base;
+	__u8 read_reg_select;
+	__u8 poll;
+	__u8 special_mask;
+	__u8 init_state;
+	__u8 auto_eoi;
+	__u8 rotate_on_auto_eoi;
+	__u8 special_fully_nested_mode;
+	__u8 init4;
+	__u8 elcr;
+	__u8 elcr_mask;
+};
+
+struct kvm_irqchip {
+	__u32 chip_id;
+	__u32 pad;
+	union {
+		char dummy[512];
+		struct kvm_pic_state pic;
+		struct kvm_ioapic_state ioapic;
+	} chip;
+};
+
+struct group_dual;
+
+struct gprefix;
+
+struct escape;
+
+struct instr_dual;
+
+struct mode_dual;
+
+struct opcode {
+	u64 flags;
+	u8 intercept;
+	u8 pad[7];
+	union {
+		int (*execute)(struct x86_emulate_ctxt *);
+		const struct opcode *group;
+		const struct group_dual *gdual;
+		const struct gprefix *gprefix;
+		const struct escape *esc;
+		const struct instr_dual *idual;
+		const struct mode_dual *mdual;
+		void (*fastop)(struct fastop *);
+	} u;
+	int (*check_perm)(struct x86_emulate_ctxt *);
+};
+
+struct group_dual {
+	struct opcode mod012[8];
+	struct opcode mod3[8];
+};
+
+struct gprefix {
+	struct opcode pfx_no;
+	struct opcode pfx_66;
+	struct opcode pfx_f2;
+	struct opcode pfx_f3;
+};
+
+struct escape {
+	struct opcode op[8];
+	struct opcode high[64];
+};
+
+struct instr_dual {
+	struct opcode mod012;
+	struct opcode mod3;
+};
+
+struct mode_dual {
+	struct opcode mode32;
+	struct opcode mode64;
+};
+
+enum x86_intercept {
+	x86_intercept_none = 0,
+	x86_intercept_cr_read = 1,
+	x86_intercept_cr_write = 2,
+	x86_intercept_clts = 3,
+	x86_intercept_lmsw = 4,
+	x86_intercept_smsw = 5,
+	x86_intercept_dr_read = 6,
+	x86_intercept_dr_write = 7,
+	x86_intercept_lidt = 8,
+	x86_intercept_sidt = 9,
+	x86_intercept_lgdt = 10,
+	x86_intercept_sgdt = 11,
+	x86_intercept_lldt = 12,
+	x86_intercept_sldt = 13,
+	x86_intercept_ltr = 14,
+	x86_intercept_str = 15,
+	x86_intercept_rdtsc = 16,
+	x86_intercept_rdpmc = 17,
+	x86_intercept_pushf = 18,
+	x86_intercept_popf = 19,
+	x86_intercept_cpuid = 20,
+	x86_intercept_rsm = 21,
+	x86_intercept_iret = 22,
+	x86_intercept_intn = 23,
+	x86_intercept_invd = 24,
+	x86_intercept_pause = 25,
+	x86_intercept_hlt = 26,
+	x86_intercept_invlpg = 27,
+	x86_intercept_invlpga = 28,
+	x86_intercept_vmrun = 29,
+	x86_intercept_vmload = 30,
+	x86_intercept_vmsave = 31,
+	x86_intercept_vmmcall = 32,
+	x86_intercept_stgi = 33,
+	x86_intercept_clgi = 34,
+	x86_intercept_skinit = 35,
+	x86_intercept_rdtscp = 36,
+	x86_intercept_rdpid = 37,
+	x86_intercept_icebp = 38,
+	x86_intercept_wbinvd = 39,
+	x86_intercept_monitor = 40,
+	x86_intercept_mwait = 41,
+	x86_intercept_rdmsr = 42,
+	x86_intercept_wrmsr = 43,
+	x86_intercept_in = 44,
+	x86_intercept_ins = 45,
+	x86_intercept_out = 46,
+	x86_intercept_outs = 47,
+	x86_intercept_xsetbv = 48,
+	nr_x86_intercepts = 49,
+};
+
+enum x86_transfer_type {
+	X86_TRANSFER_NONE = 0,
+	X86_TRANSFER_CALL_JMP = 1,
+	X86_TRANSFER_RET = 2,
+	X86_TRANSFER_TASK_SWITCH = 3,
+};
+
+enum {
+	TASK_SWITCH_CALL = 0,
+	TASK_SWITCH_IRET = 1,
+	TASK_SWITCH_JMP = 2,
+	TASK_SWITCH_GATE = 3,
+};
+
+struct tss_segment_32 {
+	u32 prev_task_link;
+	u32 esp0;
+	u32 ss0;
+	u32 esp1;
+	u32 ss1;
+	u32 esp2;
+	u32 ss2;
+	u32 cr3;
+	u32 eip;
+	u32 eflags;
+	u32 eax;
+	u32 ecx;
+	u32 edx;
+	u32 ebx;
+	u32 esp;
+	u32 ebp;
+	u32 esi;
+	u32 edi;
+	u32 es;
+	u32 cs;
+	u32 ss;
+	u32 ds;
+	u32 fs;
+	u32 gs;
+	u32 ldt_selector;
+	u16 t;
+	u16 io_map;
+};
+
+struct tss_segment_16 {
+	u16 prev_task_link;
+	u16 sp0;
+	u16 ss0;
+	u16 sp1;
+	u16 ss1;
+	u16 sp2;
+	u16 ss2;
+	u16 ip;
+	u16 flag;
+	u16 ax;
+	u16 cx;
+	u16 dx;
+	u16 bx;
+	u16 sp;
+	u16 bp;
+	u16 si;
+	u16 di;
+	u16 es;
+	u16 cs;
+	u16 ss;
+	u16 ds;
+	u16 ldt;
+};
+
+struct static_key_false_deferred {
+	struct static_key_false key;
+	unsigned long timeout;
+	struct delayed_work work;
+};
+
+enum {
+	CLEAN = 0,
+	UPDATE_IN_PROGRESS = 1,
+	DIRTY = 2,
+};
+
+enum lapic_lvt_entry {
+	LVT_TIMER = 0,
+	LVT_THERMAL_MONITOR = 1,
+	LVT_PERFORMANCE_COUNTER = 2,
+	LVT_LINT0 = 3,
+	LVT_LINT1 = 4,
+	LVT_ERROR = 5,
+	LVT_CMCI = 6,
+	KVM_APIC_MAX_NR_LVT_ENTRIES = 7,
+};
+
+typedef void (*rcu_callback_t)(struct callback_head *);
+
+enum sgx_miscselect {
+	SGX_MISC_EXINFO = 1,
+};
+
+enum sgx_attribute {
+	SGX_ATTR_INIT = 1,
+	SGX_ATTR_DEBUG = 2,
+	SGX_ATTR_MODE64BIT = 4,
+	SGX_ATTR_PROVISIONKEY = 16,
+	SGX_ATTR_EINITTOKENKEY = 32,
+	SGX_ATTR_KSS = 128,
+	SGX_ATTR_ASYNC_EXIT_NOTIFY = 1024,
+};
+
+struct kvm_cpuid_array {
+	struct kvm_cpuid_entry2 *entries;
+	int maxnent;
+	int nent;
+};
+
+typedef void (*swap_func_t)(void *, void *, int);
+
+struct kvm_pmu_event_filter {
+	__u32 action;
+	__u32 nevents;
+	__u32 fixed_counter_bitmap;
+	__u32 flags;
+	__u32 pad[4];
+	__u64 events[0];
+};
+
+struct fixed_mtrr_segment {
+	u64 start;
+	u64 end;
+	int range_shift;
+	int range_start;
+};
+
+struct mtrr_iter {
+	struct kvm_mtrr *mtrr_state;
+	u64 start;
+	u64 end;
+	int mem_type;
+	bool mtrr_disabled;
+	bool partial_map;
+	union {
+		struct {
+			int index;
+			int seg;
+		};
+		struct {
+			struct kvm_mtrr_range *range;
+			u64 start_max;
+		};
+	};
+	bool fixed;
+};
+
+enum hv_message_type {
+	HVMSG_NONE = 0,
+	HVMSG_UNMAPPED_GPA = 2147483648,
+	HVMSG_GPA_INTERCEPT = 2147483649,
+	HVMSG_TIMER_EXPIRED = 2147483664,
+	HVMSG_INVALID_VP_REGISTER_VALUE = 2147483680,
+	HVMSG_UNRECOVERABLE_EXCEPTION = 2147483681,
+	HVMSG_UNSUPPORTED_FEATURE = 2147483682,
+	HVMSG_EVENTLOG_BUFFERCOMPLETE = 2147483712,
+	HVMSG_X64_IOPORT_INTERCEPT = 2147549184,
+	HVMSG_X64_MSR_INTERCEPT = 2147549185,
+	HVMSG_X64_CPUID_INTERCEPT = 2147549186,
+	HVMSG_X64_EXCEPTION_INTERCEPT = 2147549187,
+	HVMSG_X64_APIC_EOI = 2147549188,
+	HVMSG_X64_LEGACY_FP_ERROR = 2147549189,
+};
+
+enum HV_GENERIC_SET_FORMAT {
+	HV_GENERIC_SET_SPARSE_4K = 0,
+	HV_GENERIC_SET_ALL = 1,
+};
+
+struct hv_timer_message_payload {
+	__u32 timer_index;
+	__u32 reserved;
+	__u64 expiration_time;
+	__u64 delivery_time;
+};
+
+struct kvm_hv_hcall {
+	u64 param;
+	u64 ingpa;
+	u64 outgpa;
+	u16 code;
+	u16 var_cnt;
+	u16 rep_cnt;
+	u16 rep_idx;
+	bool fast;
+	bool rep;
+	long: 64;
+	sse128_t xmm[6];
+	union {
+		gpa_t data_offset;
+		int consumed_xmm_halves;
+	};
+	long: 64;
+};
+
+struct hv_vpset {
+	u64 format;
+	u64 valid_bank_mask;
+	u64 bank_contents[0];
+};
+
+struct hv_send_ipi_ex {
+	u32 vector;
+	u32 reserved;
+	struct hv_vpset vp_set;
+};
+
+struct hv_send_ipi {
+	u32 vector;
+	u32 reserved;
+	u64 cpu_mask;
+};
+
+struct hv_tlb_flush_ex {
+	u64 address_space;
+	u64 flags;
+	struct hv_vpset hv_vp_set;
+	u64 gva_list[0];
+};
+
+struct hv_tlb_flush {
+	u64 address_space;
+	u64 flags;
+	u64 processor_mask;
+	u64 gva_list[0];
+};
+
+struct kvm_page_fault {
+	const gpa_t addr;
+	const u32 error_code;
+	const bool prefetch;
+	const bool exec;
+	const bool write;
+	const bool present;
+	const bool rsvd;
+	const bool user;
+	const bool is_tdp;
+	const bool nx_huge_page_workaround_enabled;
+	bool huge_page_disallowed;
+	u8 max_level;
+	u8 req_level;
+	u8 goal_level;
+	gfn_t gfn;
+	struct kvm_memory_slot *slot;
+	unsigned long mmu_seq;
+	kvm_pfn_t pfn;
+	hva_t hva;
+	bool map_writable;
+	bool write_fault_to_shadow_pgtable;
+};
+
+typedef u64 __attribute__((btf_type_tag("rcu"))) *tdp_ptep_t;
+
+struct kvm_mmu_page {
+	struct list_head link;
+	struct hlist_node hash_link;
+	bool tdp_mmu_page;
+	bool unsync;
+	union {
+		u8 mmu_valid_gen;
+		bool tdp_mmu_scheduled_root_to_zap;
+	};
+	bool nx_huge_page_disallowed;
+	union kvm_mmu_page_role role;
+	gfn_t gfn;
+	u64 *spt;
+	u64 *shadowed_translation;
+	union {
+		int root_count;
+		refcount_t tdp_mmu_root_count;
+	};
+	unsigned int unsync_children;
+	union {
+		struct kvm_rmap_head parent_ptes;
+		tdp_ptep_t ptep;
+	};
+	unsigned long unsync_child_bitmap[8];
+	struct list_head possible_nx_huge_page_link;
+	atomic_t write_flooding_count;
+	struct callback_head callback_head;
+};
+
+typedef void (*btf_trace_kvm_mmu_pagetable_walk)(void *, u64, u32);
+
+typedef void (*btf_trace_kvm_mmu_paging_element)(void *, u64, int);
+
+typedef void (*btf_trace_kvm_mmu_set_accessed_bit)(void *, unsigned long, unsigned int, unsigned int);
+
+typedef void (*btf_trace_kvm_mmu_set_dirty_bit)(void *, unsigned long, unsigned int, unsigned int);
+
+typedef void (*btf_trace_kvm_mmu_walker_error)(void *, u32);
+
+typedef void (*btf_trace_kvm_mmu_get_page)(void *, struct kvm_mmu_page *, bool);
+
+typedef void (*btf_trace_kvm_mmu_sync_page)(void *, struct kvm_mmu_page *);
+
+typedef void (*btf_trace_kvm_mmu_unsync_page)(void *, struct kvm_mmu_page *);
+
+typedef void (*btf_trace_kvm_mmu_prepare_zap_page)(void *, struct kvm_mmu_page *);
+
+typedef void (*btf_trace_mark_mmio_spte)(void *, u64 *, gfn_t, u64);
+
+typedef void (*btf_trace_handle_mmio_page_fault)(void *, u64, gfn_t, unsigned int);
+
+typedef void (*btf_trace_fast_page_fault)(void *, struct kvm_vcpu *, struct kvm_page_fault *, u64 *, u64, int);
+
+typedef void (*btf_trace_kvm_mmu_zap_all_fast)(void *, struct kvm *);
+
+typedef void (*btf_trace_check_mmio_spte)(void *, u64, unsigned int, unsigned int);
+
+typedef void (*btf_trace_kvm_mmu_set_spte)(void *, int, gfn_t, u64 *);
+
+typedef void (*btf_trace_kvm_mmu_spte_requested)(void *, struct kvm_page_fault *);
+
+typedef void (*btf_trace_kvm_tdp_mmu_spte_changed)(void *, int, gfn_t, int, u64, u64);
+
+typedef void (*btf_trace_kvm_mmu_split_huge_page)(void *, u64, u64, int, int);
+
+typedef unsigned int uint;
+
+enum {
+	RET_PF_CONTINUE = 0,
+	RET_PF_RETRY = 1,
+	RET_PF_EMULATE = 2,
+	RET_PF_INVALID = 3,
+	RET_PF_FIXED = 4,
+	RET_PF_SPURIOUS = 5,
+};
+
+enum node_stat_item {
+	NR_LRU_BASE = 0,
+	NR_INACTIVE_ANON = 0,
+	NR_ACTIVE_ANON = 1,
+	NR_INACTIVE_FILE = 2,
+	NR_ACTIVE_FILE = 3,
+	NR_UNEVICTABLE = 4,
+	NR_SLAB_RECLAIMABLE_B = 5,
+	NR_SLAB_UNRECLAIMABLE_B = 6,
+	NR_ISOLATED_ANON = 7,
+	NR_ISOLATED_FILE = 8,
+	WORKINGSET_NODES = 9,
+	WORKINGSET_REFAULT_BASE = 10,
+	WORKINGSET_REFAULT_ANON = 10,
+	WORKINGSET_REFAULT_FILE = 11,
+	WORKINGSET_ACTIVATE_BASE = 12,
+	WORKINGSET_ACTIVATE_ANON = 12,
+	WORKINGSET_ACTIVATE_FILE = 13,
+	WORKINGSET_RESTORE_BASE = 14,
+	WORKINGSET_RESTORE_ANON = 14,
+	WORKINGSET_RESTORE_FILE = 15,
+	WORKINGSET_NODERECLAIM = 16,
+	NR_ANON_MAPPED = 17,
+	NR_FILE_MAPPED = 18,
+	NR_FILE_PAGES = 19,
+	NR_FILE_DIRTY = 20,
+	NR_WRITEBACK = 21,
+	NR_WRITEBACK_TEMP = 22,
+	NR_SHMEM = 23,
+	NR_SHMEM_THPS = 24,
+	NR_SHMEM_PMDMAPPED = 25,
+	NR_FILE_THPS = 26,
+	NR_FILE_PMDMAPPED = 27,
+	NR_ANON_THPS = 28,
+	NR_VMSCAN_WRITE = 29,
+	NR_VMSCAN_IMMEDIATE = 30,
+	NR_DIRTIED = 31,
+	NR_WRITTEN = 32,
+	NR_THROTTLED_WRITTEN = 33,
+	NR_KERNEL_MISC_RECLAIMABLE = 34,
+	NR_FOLL_PIN_ACQUIRED = 35,
+	NR_FOLL_PIN_RELEASED = 36,
+	NR_KERNEL_STACK_KB = 37,
+	NR_PAGETABLE = 38,
+	NR_SECONDARY_PAGETABLE = 39,
+	NR_SWAPCACHE = 40,
+	NR_VM_NODE_STAT_ITEMS = 41,
+};
+
+struct pte_list_desc {
+	struct pte_list_desc *more;
+	u32 spte_count;
+	u32 tail_count;
+	u64 *sptes[14];
+};
+
+struct trace_event_raw_kvm_mmu_pagetable_walk {
+	struct trace_entry ent;
+	__u64 addr;
+	__u32 pferr;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_mmu_paging_element {
+	struct trace_entry ent;
+	__u64 pte;
+	__u32 level;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_mmu_set_bit_class {
+	struct trace_entry ent;
+	__u64 gpa;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_mmu_walker_error {
+	struct trace_entry ent;
+	__u32 pferr;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_mmu_get_page {
+	struct trace_entry ent;
+	__u8 mmu_valid_gen;
+	__u64 gfn;
+	__u32 role;
+	__u32 root_count;
+	bool unsync;
+	bool created;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_mmu_page_class {
+	struct trace_entry ent;
+	__u8 mmu_valid_gen;
+	__u64 gfn;
+	__u32 role;
+	__u32 root_count;
+	bool unsync;
+	char __data[0];
+};
+
+struct trace_event_raw_mark_mmio_spte {
+	struct trace_entry ent;
+	void *sptep;
+	gfn_t gfn;
+	unsigned int access;
+	unsigned int gen;
+	char __data[0];
+};
+
+struct trace_event_raw_handle_mmio_page_fault {
+	struct trace_entry ent;
+	u64 addr;
+	gfn_t gfn;
+	unsigned int access;
+	char __data[0];
+};
+
+struct trace_event_raw_fast_page_fault {
+	struct trace_entry ent;
+	int vcpu_id;
+	gpa_t cr2_or_gpa;
+	u32 error_code;
+	u64 *sptep;
+	u64 old_spte;
+	u64 new_spte;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_mmu_zap_all_fast {
+	struct trace_entry ent;
+	__u8 mmu_valid_gen;
+	unsigned int mmu_used_pages;
+	char __data[0];
+};
+
+struct trace_event_raw_check_mmio_spte {
+	struct trace_entry ent;
+	unsigned int kvm_gen;
+	unsigned int spte_gen;
+	u64 spte;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_mmu_set_spte {
+	struct trace_entry ent;
+	u64 gfn;
+	u64 spte;
+	u64 sptep;
+	u8 level;
+	bool r;
+	bool x;
+	signed char u;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_mmu_spte_requested {
+	struct trace_entry ent;
+	u64 gfn;
+	u64 pfn;
+	u8 level;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_tdp_mmu_spte_changed {
+	struct trace_entry ent;
+	u64 gfn;
+	u64 old_spte;
+	u64 new_spte;
+	u8 level;
+	u8 as_id;
+	char __data[0];
+};
+
+struct trace_event_raw_kvm_mmu_split_huge_page {
+	struct trace_entry ent;
+	u64 gfn;
+	u64 spte;
+	int level;
+	int errno;
+	char __data[0];
+};
+
+struct rmap_iterator {
+	struct pte_list_desc *desc;
+	int pos;
+};
+
+typedef bool (*rmap_handler_t)(struct kvm *, struct kvm_rmap_head *, struct kvm_memory_slot *, gfn_t, int, pte_t);
+
+struct slot_rmap_walk_iterator {
+	const struct kvm_memory_slot *slot;
+	gfn_t start_gfn;
+	gfn_t end_gfn;
+	int start_level;
+	int end_level;
+	gfn_t gfn;
+	struct kvm_rmap_head *rmap;
+	int level;
+	struct kvm_rmap_head *end_rmap;
+};
+
+struct mmu_page_and_offset {
+	struct kvm_mmu_page *sp;
+	unsigned int idx;
+};
+
+struct kvm_mmu_pages {
+	struct mmu_page_and_offset page[16];
+	unsigned int nr;
+};
+
+struct mmu_page_path {
+	struct kvm_mmu_page *parent[5];
+	unsigned int idx[5];
+};
+
+struct kvm_mmu_role_regs {
+	const unsigned long cr0;
+	const unsigned long cr4;
+	const u64 efer;
+};
+
+struct guest_walkerEPT {
+	int level;
+	unsigned int max_level;
+	gfn_t table_gfn[5];
+	u64 ptes[5];
+	u64 prefetch_ptes[8];
+	gpa_t pte_gpa[5];
+	u64 __attribute__((btf_type_tag("user"))) *ptep_user[5];
+	bool pte_writable[5];
+	unsigned int pt_access[5];
+	unsigned int pte_access;
+	gfn_t gfn;
+	struct x86_exception fault;
+};
+
+struct shadow_page_caches {
+	struct kvm_mmu_memory_cache *page_header_cache;
+	struct kvm_mmu_memory_cache *shadow_page_cache;
+	struct kvm_mmu_memory_cache *shadowed_info_cache;
+};
+
+struct kvm_shadow_walk_iterator {
+	u64 addr;
+	hpa_t shadow_addr;
+	u64 *sptep;
+	int level;
+	unsigned int index;
+};
+
+typedef bool (*slot_rmaps_handler)(struct kvm *, struct kvm_rmap_head *, const struct kvm_memory_slot *);
+
+struct guest_walker64 {
+	int level;
+	unsigned int max_level;
+	gfn_t table_gfn[5];
+	u64 ptes[5];
+	u64 prefetch_ptes[8];
+	gpa_t pte_gpa[5];
+	u64 __attribute__((btf_type_tag("user"))) *ptep_user[5];
+	bool pte_writable[5];
+	unsigned int pt_access[5];
+	unsigned int pte_access;
+	gfn_t gfn;
+	struct x86_exception fault;
+};
+
+struct guest_walker32 {
+	int level;
+	unsigned int max_level;
+	gfn_t table_gfn[2];
+	u32 ptes[2];
+	u32 prefetch_ptes[8];
+	gpa_t pte_gpa[2];
+	u32 __attribute__((btf_type_tag("user"))) *ptep_user[2];
+	bool pte_writable[2];
+	unsigned int pt_access[2];
+	unsigned int pte_access;
+	gfn_t gfn;
+	struct x86_exception fault;
+};
+
+struct trace_event_data_offsets_kvm_mmu_pagetable_walk {};
+
+struct trace_event_data_offsets_kvm_mmu_paging_element {};
+
+struct trace_event_data_offsets_kvm_mmu_set_bit_class {};
+
+struct trace_event_data_offsets_kvm_mmu_walker_error {};
+
+struct trace_event_data_offsets_kvm_mmu_get_page {};
+
+struct trace_event_data_offsets_kvm_mmu_page_class {};
+
+struct trace_event_data_offsets_mark_mmio_spte {};
+
+struct trace_event_data_offsets_handle_mmio_page_fault {};
+
+struct trace_event_data_offsets_fast_page_fault {};
+
+struct trace_event_data_offsets_kvm_mmu_zap_all_fast {};
+
+struct trace_event_data_offsets_check_mmio_spte {};
+
+struct trace_event_data_offsets_kvm_mmu_set_spte {};
+
+struct trace_event_data_offsets_kvm_mmu_spte_requested {};
+
+struct trace_event_data_offsets_kvm_tdp_mmu_spte_changed {};
+
+struct trace_event_data_offsets_kvm_mmu_split_huge_page {};
+
+enum e820_type {
+	E820_TYPE_RAM = 1,
+	E820_TYPE_RESERVED = 2,
+	E820_TYPE_ACPI = 3,
+	E820_TYPE_NVS = 4,
+	E820_TYPE_UNUSABLE = 5,
+	E820_TYPE_PMEM = 7,
+	E820_TYPE_PRAM = 12,
+	E820_TYPE_SOFT_RESERVED = 4026531839,
+	E820_TYPE_RESERVED_KERN = 128,
+};
+
+struct tdp_iter {
+	gfn_t next_last_level_gfn;
+	gfn_t yielded_gfn;
+	tdp_ptep_t pt_path[5];
+	tdp_ptep_t sptep;
+	gfn_t gfn;
+	int root_level;
+	int min_level;
+	int level;
+	int as_id;
+	u64 old_spte;
+	bool valid;
+	bool yielded;
+};
+
+typedef bool (*tdp_handler_t)(struct kvm *, struct tdp_iter *, struct kvm_gfn_range *);
+
+struct vmcs_hdr {
+	u32 revision_id: 31;
+	u32 shadow_vmcs: 1;
+};
+
+struct vmcs {
+	struct vmcs_hdr hdr;
+	u32 abort;
+	char data[0];
+};
+
+struct nested_vmx_msrs {
+	u32 procbased_ctls_low;
+	u32 procbased_ctls_high;
+	u32 secondary_ctls_low;
+	u32 secondary_ctls_high;
+	u32 pinbased_ctls_low;
+	u32 pinbased_ctls_high;
+	u32 exit_ctls_low;
+	u32 exit_ctls_high;
+	u32 entry_ctls_low;
+	u32 entry_ctls_high;
+	u32 misc_low;
+	u32 misc_high;
+	u32 ept_caps;
+	u32 vpid_caps;
+	u64 basic;
+	u64 cr0_fixed0;
+	u64 cr0_fixed1;
+	u64 cr4_fixed0;
+	u64 cr4_fixed1;
+	u64 vmcs_enum;
+	u64 vmfunc_controls;
+};
+
+struct vmcs_config {
+	int size;
+	u32 basic_cap;
+	u32 revision_id;
+	u32 pin_based_exec_ctrl;
+	u32 cpu_based_exec_ctrl;
+	u32 cpu_based_2nd_exec_ctrl;
+	u64 cpu_based_3rd_exec_ctrl;
+	u32 vmexit_ctrl;
+	u32 vmentry_ctrl;
+	u64 misc;
+	struct nested_vmx_msrs nested;
+};
+
+struct vmx_capability {
+	u32 ept;
+	u32 vpid;
+};
+
+struct kvm_vmx_segment_field {
+	unsigned int selector;
+	unsigned int base;
+	unsigned int limit;
+	unsigned int ar_bytes;
+};
+
+enum vmcs_field {
+	VIRTUAL_PROCESSOR_ID = 0,
+	POSTED_INTR_NV = 2,
+	LAST_PID_POINTER_INDEX = 8,
+	GUEST_ES_SELECTOR = 2048,
+	GUEST_CS_SELECTOR = 2050,
+	GUEST_SS_SELECTOR = 2052,
+	GUEST_DS_SELECTOR = 2054,
+	GUEST_FS_SELECTOR = 2056,
+	GUEST_GS_SELECTOR = 2058,
+	GUEST_LDTR_SELECTOR = 2060,
+	GUEST_TR_SELECTOR = 2062,
+	GUEST_INTR_STATUS = 2064,
+	GUEST_PML_INDEX = 2066,
+	HOST_ES_SELECTOR = 3072,
+	HOST_CS_SELECTOR = 3074,
+	HOST_SS_SELECTOR = 3076,
+	HOST_DS_SELECTOR = 3078,
+	HOST_FS_SELECTOR = 3080,
+	HOST_GS_SELECTOR = 3082,
+	HOST_TR_SELECTOR = 3084,
+	IO_BITMAP_A = 8192,
+	IO_BITMAP_A_HIGH = 8193,
+	IO_BITMAP_B = 8194,
+	IO_BITMAP_B_HIGH = 8195,
+	MSR_BITMAP = 8196,
+	MSR_BITMAP_HIGH = 8197,
+	VM_EXIT_MSR_STORE_ADDR = 8198,
+	VM_EXIT_MSR_STORE_ADDR_HIGH = 8199,
+	VM_EXIT_MSR_LOAD_ADDR = 8200,
+	VM_EXIT_MSR_LOAD_ADDR_HIGH = 8201,
+	VM_ENTRY_MSR_LOAD_ADDR = 8202,
+	VM_ENTRY_MSR_LOAD_ADDR_HIGH = 8203,
+	PML_ADDRESS = 8206,
+	PML_ADDRESS_HIGH = 8207,
+	TSC_OFFSET = 8208,
+	TSC_OFFSET_HIGH = 8209,
+	VIRTUAL_APIC_PAGE_ADDR = 8210,
+	VIRTUAL_APIC_PAGE_ADDR_HIGH = 8211,
+	APIC_ACCESS_ADDR = 8212,
+	APIC_ACCESS_ADDR_HIGH = 8213,
+	POSTED_INTR_DESC_ADDR = 8214,
+	POSTED_INTR_DESC_ADDR_HIGH = 8215,
+	VM_FUNCTION_CONTROL = 8216,
+	VM_FUNCTION_CONTROL_HIGH = 8217,
+	EPT_POINTER = 8218,
+	EPT_POINTER_HIGH = 8219,
+	EOI_EXIT_BITMAP0 = 8220,
+	EOI_EXIT_BITMAP0_HIGH = 8221,
+	EOI_EXIT_BITMAP1 = 8222,
+	EOI_EXIT_BITMAP1_HIGH = 8223,
+	EOI_EXIT_BITMAP2 = 8224,
+	EOI_EXIT_BITMAP2_HIGH = 8225,
+	EOI_EXIT_BITMAP3 = 8226,
+	EOI_EXIT_BITMAP3_HIGH = 8227,
+	EPTP_LIST_ADDRESS = 8228,
+	EPTP_LIST_ADDRESS_HIGH = 8229,
+	VMREAD_BITMAP = 8230,
+	VMREAD_BITMAP_HIGH = 8231,
+	VMWRITE_BITMAP = 8232,
+	VMWRITE_BITMAP_HIGH = 8233,
+	XSS_EXIT_BITMAP = 8236,
+	XSS_EXIT_BITMAP_HIGH = 8237,
+	ENCLS_EXITING_BITMAP = 8238,
+	ENCLS_EXITING_BITMAP_HIGH = 8239,
+	TSC_MULTIPLIER = 8242,
+	TSC_MULTIPLIER_HIGH = 8243,
+	TERTIARY_VM_EXEC_CONTROL = 8244,
+	TERTIARY_VM_EXEC_CONTROL_HIGH = 8245,
+	PID_POINTER_TABLE = 8258,
+	PID_POINTER_TABLE_HIGH = 8259,
+	GUEST_PHYSICAL_ADDRESS = 9216,
+	GUEST_PHYSICAL_ADDRESS_HIGH = 9217,
+	VMCS_LINK_POINTER = 10240,
+	VMCS_LINK_POINTER_HIGH = 10241,
+	GUEST_IA32_DEBUGCTL = 10242,
+	GUEST_IA32_DEBUGCTL_HIGH = 10243,
+	GUEST_IA32_PAT = 10244,
+	GUEST_IA32_PAT_HIGH = 10245,
+	GUEST_IA32_EFER = 10246,
+	GUEST_IA32_EFER_HIGH = 10247,
+	GUEST_IA32_PERF_GLOBAL_CTRL = 10248,
+	GUEST_IA32_PERF_GLOBAL_CTRL_HIGH = 10249,
+	GUEST_PDPTR0 = 10250,
+	GUEST_PDPTR0_HIGH = 10251,
+	GUEST_PDPTR1 = 10252,
+	GUEST_PDPTR1_HIGH = 10253,
+	GUEST_PDPTR2 = 10254,
+	GUEST_PDPTR2_HIGH = 10255,
+	GUEST_PDPTR3 = 10256,
+	GUEST_PDPTR3_HIGH = 10257,
+	GUEST_BNDCFGS = 10258,
+	GUEST_BNDCFGS_HIGH = 10259,
+	GUEST_IA32_RTIT_CTL = 10260,
+	GUEST_IA32_RTIT_CTL_HIGH = 10261,
+	HOST_IA32_PAT = 11264,
+	HOST_IA32_PAT_HIGH = 11265,
+	HOST_IA32_EFER = 11266,
+	HOST_IA32_EFER_HIGH = 11267,
+	HOST_IA32_PERF_GLOBAL_CTRL = 11268,
+	HOST_IA32_PERF_GLOBAL_CTRL_HIGH = 11269,
+	PIN_BASED_VM_EXEC_CONTROL = 16384,
+	CPU_BASED_VM_EXEC_CONTROL = 16386,
+	EXCEPTION_BITMAP = 16388,
+	PAGE_FAULT_ERROR_CODE_MASK = 16390,
+	PAGE_FAULT_ERROR_CODE_MATCH = 16392,
+	CR3_TARGET_COUNT = 16394,
+	VM_EXIT_CONTROLS = 16396,
+	VM_EXIT_MSR_STORE_COUNT = 16398,
+	VM_EXIT_MSR_LOAD_COUNT = 16400,
+	VM_ENTRY_CONTROLS = 16402,
+	VM_ENTRY_MSR_LOAD_COUNT = 16404,
+	VM_ENTRY_INTR_INFO_FIELD = 16406,
+	VM_ENTRY_EXCEPTION_ERROR_CODE = 16408,
+	VM_ENTRY_INSTRUCTION_LEN = 16410,
+	TPR_THRESHOLD = 16412,
+	SECONDARY_VM_EXEC_CONTROL = 16414,
+	PLE_GAP = 16416,
+	PLE_WINDOW = 16418,
+	NOTIFY_WINDOW = 16420,
+	VM_INSTRUCTION_ERROR = 17408,
+	VM_EXIT_REASON = 17410,
+	VM_EXIT_INTR_INFO = 17412,
+	VM_EXIT_INTR_ERROR_CODE = 17414,
+	IDT_VECTORING_INFO_FIELD = 17416,
+	IDT_VECTORING_ERROR_CODE = 17418,
+	VM_EXIT_INSTRUCTION_LEN = 17420,
+	VMX_INSTRUCTION_INFO = 17422,
+	GUEST_ES_LIMIT = 18432,
+	GUEST_CS_LIMIT = 18434,
+	GUEST_SS_LIMIT = 18436,
+	GUEST_DS_LIMIT = 18438,
+	GUEST_FS_LIMIT = 18440,
+	GUEST_GS_LIMIT = 18442,
+	GUEST_LDTR_LIMIT = 18444,
+	GUEST_TR_LIMIT = 18446,
+	GUEST_GDTR_LIMIT = 18448,
+	GUEST_IDTR_LIMIT = 18450,
+	GUEST_ES_AR_BYTES = 18452,
+	GUEST_CS_AR_BYTES = 18454,
+	GUEST_SS_AR_BYTES = 18456,
+	GUEST_DS_AR_BYTES = 18458,
+	GUEST_FS_AR_BYTES = 18460,
+	GUEST_GS_AR_BYTES = 18462,
+	GUEST_LDTR_AR_BYTES = 18464,
+	GUEST_TR_AR_BYTES = 18466,
+	GUEST_INTERRUPTIBILITY_INFO = 18468,
+	GUEST_ACTIVITY_STATE = 18470,
+	GUEST_SYSENTER_CS = 18474,
+	VMX_PREEMPTION_TIMER_VALUE = 18478,
+	HOST_IA32_SYSENTER_CS = 19456,
+	CR0_GUEST_HOST_MASK = 24576,
+	CR4_GUEST_HOST_MASK = 24578,
+	CR0_READ_SHADOW = 24580,
+	CR4_READ_SHADOW = 24582,
+	CR3_TARGET_VALUE0 = 24584,
+	CR3_TARGET_VALUE1 = 24586,
+	CR3_TARGET_VALUE2 = 24588,
+	CR3_TARGET_VALUE3 = 24590,
+	EXIT_QUALIFICATION = 25600,
+	GUEST_LINEAR_ADDRESS = 25610,
+	GUEST_CR0 = 26624,
+	GUEST_CR3 = 26626,
+	GUEST_CR4 = 26628,
+	GUEST_ES_BASE = 26630,
+	GUEST_CS_BASE = 26632,
+	GUEST_SS_BASE = 26634,
+	GUEST_DS_BASE = 26636,
+	GUEST_FS_BASE = 26638,
+	GUEST_GS_BASE = 26640,
+	GUEST_LDTR_BASE = 26642,
+	GUEST_TR_BASE = 26644,
+	GUEST_GDTR_BASE = 26646,
+	GUEST_IDTR_BASE = 26648,
+	GUEST_DR7 = 26650,
+	GUEST_RSP = 26652,
+	GUEST_RIP = 26654,
+	GUEST_RFLAGS = 26656,
+	GUEST_PENDING_DBG_EXCEPTIONS = 26658,
+	GUEST_SYSENTER_ESP = 26660,
+	GUEST_SYSENTER_EIP = 26662,
+	HOST_CR0 = 27648,
+	HOST_CR3 = 27650,
+	HOST_CR4 = 27652,
+	HOST_FS_BASE = 27654,
+	HOST_GS_BASE = 27656,
+	HOST_TR_BASE = 27658,
+	HOST_GDTR_BASE = 27660,
+	HOST_IDTR_BASE = 27662,
+	HOST_IA32_SYSENTER_ESP = 27664,
+	HOST_IA32_SYSENTER_EIP = 27666,
+	HOST_RSP = 27668,
+	HOST_RIP = 27670,
+};
+
+enum l1tf_mitigations {
+	L1TF_MITIGATION_OFF = 0,
+	L1TF_MITIGATION_FLUSH_NOWARN = 1,
+	L1TF_MITIGATION_FLUSH = 2,
+	L1TF_MITIGATION_FLUSH_NOSMT = 3,
+	L1TF_MITIGATION_FULL = 4,
+	L1TF_MITIGATION_FULL_FORCE = 5,
+};
+
+enum segment_cache_field {
+	SEG_FIELD_SEL = 0,
+	SEG_FIELD_BASE = 1,
+	SEG_FIELD_LIMIT = 2,
+	SEG_FIELD_AR = 3,
+	SEG_FIELD_NR = 4,
+};
+
+enum {
+	DESC_TSS = 9,
+	DESC_LDT = 2,
+	DESCTYPE_S = 16,
+};
+
+enum vm_entry_failure_code {
+	ENTRY_FAIL_DEFAULT = 0,
+	ENTRY_FAIL_PDPTE = 2,
+	ENTRY_FAIL_NMI = 3,
+	ENTRY_FAIL_VMCS_LINK_PTR = 4,
+};
+
+enum nvmx_vmentry_status {
+	NVMX_VMENTRY_SUCCESS = 0,
+	NVMX_VMENTRY_VMFAIL = 1,
+	NVMX_VMENTRY_VMEXIT = 2,
+	NVMX_VMENTRY_KVM_INTERNAL_ERROR = 3,
+};
+
+struct kvm_save_segment {
+	u16 selector;
+	unsigned long base;
+	u32 limit;
+	u32 ar;
+};
+
+struct vmx_uret_msr {
+	bool load_into_hardware;
+	u64 data;
+	u64 mask;
+};
+
+struct vmcs_host_state {
+	unsigned long cr3;
+	unsigned long cr4;
+	unsigned long gs_base;
+	unsigned long fs_base;
+	unsigned long rsp;
+	u16 fs_sel;
+	u16 gs_sel;
+	u16 ldt_sel;
+	u16 ds_sel;
+	u16 es_sel;
+};
+
+struct vmcs_controls_shadow {
+	u32 vm_entry;
+	u32 vm_exit;
+	u32 pin;
+	u32 exec;
+	u32 secondary_exec;
+	u64 tertiary_exec;
+};
+
+struct loaded_vmcs {
+	struct vmcs *vmcs;
+	struct vmcs *shadow_vmcs;
+	int cpu;
+	bool launched;
+	bool nmi_known_unmasked;
+	bool hv_timer_soft_disabled;
+	int soft_vnmi_blocked;
+	ktime_t entry_time;
+	s64 vnmi_blocked_time;
+	unsigned long *msr_bitmap;
+	struct list_head loaded_vmcss_on_cpu_link;
+	struct vmcs_host_state host_state;
+	struct vmcs_controls_shadow controls_shadow;
+};
+
+struct vmx_msr_entry {
+	u32 index;
+	u32 reserved;
+	u64 value;
+};
+
+struct vmx_msrs {
+	unsigned int nr;
+	long: 64;
+	struct vmx_msr_entry val[8];
+};
+
+struct msr_autoload {
+	struct vmx_msrs guest;
+	struct vmx_msrs host;
+};
+
+struct msr_autostore {
+	struct vmx_msrs guest;
+};
+
+union vmx_exit_reason {
+	struct {
+		u32 basic: 16;
+		u32 reserved16: 1;
+		u32 reserved17: 1;
+		u32 reserved18: 1;
+		u32 reserved19: 1;
+		u32 reserved20: 1;
+		u32 reserved21: 1;
+		u32 reserved22: 1;
+		u32 reserved23: 1;
+		u32 reserved24: 1;
+		u32 reserved25: 1;
+		u32 bus_lock_detected: 1;
+		u32 enclave_mode: 1;
+		u32 smi_pending_mtf: 1;
+		u32 smi_from_vmx_root: 1;
+		u32 reserved30: 1;
+		u32 failed_vmentry: 1;
+	};
+	u32 full;
+};
+
+struct pi_desc {
+	u32 pir[8];
+	union {
+		struct {
+			u16 on: 1;
+			u16 sn: 1;
+			u16 rsvd_1: 14;
+			u8 nv;
+			u8 rsvd_2;
+			u32 ndst;
+		};
+		u64 control;
+	};
+	u32 rsvd[6];
+};
+
+struct vmcs12;
+
+struct hv_enlightened_vmcs;
+
+struct nested_vmx {
+	bool vmxon;
+	gpa_t vmxon_ptr;
+	bool pml_full;
+	gpa_t current_vmptr;
+	struct vmcs12 *cached_vmcs12;
+	struct vmcs12 *cached_shadow_vmcs12;
+	struct gfn_to_hva_cache shadow_vmcs12_cache;
+	struct gfn_to_hva_cache vmcs12_cache;
+	bool need_vmcs12_to_shadow_sync;
+	bool dirty_vmcs12;
+	bool force_msr_bitmap_recalc;
+	bool need_sync_vmcs02_to_vmcs12_rare;
+	bool vmcs02_initialized;
+	bool change_vmcs01_virtual_apic_mode;
+	bool reload_vmcs01_apic_access_page;
+	bool update_vmcs01_cpu_dirty_logging;
+	bool update_vmcs01_apicv_status;
+	bool enlightened_vmcs_enabled;
+	bool nested_run_pending;
+	bool mtf_pending;
+	struct loaded_vmcs vmcs02;
+	struct kvm_host_map apic_access_page_map;
+	struct kvm_host_map virtual_apic_map;
+	struct kvm_host_map pi_desc_map;
+	struct kvm_host_map msr_bitmap_map;
+	struct pi_desc *pi_desc;
+	bool pi_pending;
+	u16 posted_intr_nv;
+	struct hrtimer preemption_timer;
+	u64 preemption_timer_deadline;
+	bool has_preemption_timer_deadline;
+	bool preemption_timer_expired;
+	u64 pre_vmenter_debugctl;
+	u64 pre_vmenter_bndcfgs;
+	int l1_tpr_threshold;
+	u16 vpid02;
+	u16 last_vpid;
+	struct nested_vmx_msrs msrs;
+	struct {
+		bool vmxon;
+		bool guest_mode;
+	} smm;
+	gpa_t hv_evmcs_vmptr;
+	struct kvm_host_map hv_evmcs_map;
+	struct hv_enlightened_vmcs *hv_evmcs;
+};
+
+struct pt_ctx {
+	u64 ctl;
+	u64 status;
+	u64 output_base;
+	u64 output_mask;
+	u64 cr3_match;
+	u64 addr_a[4];
+	u64 addr_b[4];
+};
+
+struct pt_desc {
+	u64 ctl_bitmask;
+	u32 num_address_ranges;
+	u32 caps[8];
+	struct pt_ctx host;
+	struct pt_ctx guest;
+};
+
+struct lbr_desc {
+	struct x86_pmu_lbr records;
+	struct perf_event *event;
+	bool msr_passthrough;
+};
+
+struct vcpu_vmx {
+	struct kvm_vcpu vcpu;
+	u8 fail;
+	u8 x2apic_msr_bitmap_mode;
+	bool guest_state_loaded;
+	unsigned long exit_qualification;
+	u32 exit_intr_info;
+	u32 idt_vectoring_info;
+	ulong rflags;
+	struct vmx_uret_msr guest_uret_msrs[7];
+	bool guest_uret_msrs_loaded;
+	u64 msr_host_kernel_gs_base;
+	u64 msr_guest_kernel_gs_base;
+	u64 spec_ctrl;
+	u32 msr_ia32_umwait_control;
+	struct loaded_vmcs vmcs01;
+	struct loaded_vmcs *loaded_vmcs;
+	struct msr_autoload msr_autoload;
+	struct msr_autostore msr_autostore;
+	struct {
+		int vm86_active;
+		ulong save_rflags;
+		struct kvm_segment segs[8];
+	} rmode;
+	struct {
+		u32 bitmask;
+		struct kvm_save_segment seg[8];
+	} segment_cache;
+	int vpid;
+	bool emulation_required;
+	union vmx_exit_reason exit_reason;
+	long: 64;
+	struct pi_desc pi_desc;
+	struct list_head pi_wakeup_list;
+	struct nested_vmx nested;
+	unsigned int ple_window;
+	bool ple_window_dirty;
+	bool req_immediate_exit;
+	struct page *pml_pg;
+	u64 hv_deadline_tsc;
+	unsigned long host_debugctlmsr;
+	u64 msr_ia32_feature_control;
+	u64 msr_ia32_feature_control_valid_bits;
+	u64 msr_ia32_sgxlepubkeyhash[4];
+	u64 msr_ia32_mcu_opt_ctrl;
+	bool disable_fb_clear;
+	struct pt_desc pt_desc;
+	struct lbr_desc lbr_desc;
+	struct {
+		unsigned long read[1];
+		unsigned long write[1];
+	} shadow_msr_intercept;
+	long: 64;
+};
+
+typedef u64 natural_width;
+
+struct vmcs12 {
+	struct vmcs_hdr hdr;
+	u32 abort;
+	u32 launch_state;
+	u32 padding[7];
+	u64 io_bitmap_a;
+	u64 io_bitmap_b;
+	u64 msr_bitmap;
+	u64 vm_exit_msr_store_addr;
+	u64 vm_exit_msr_load_addr;
+	u64 vm_entry_msr_load_addr;
+	u64 tsc_offset;
+	u64 virtual_apic_page_addr;
+	u64 apic_access_addr;
+	u64 posted_intr_desc_addr;
+	u64 ept_pointer;
+	u64 eoi_exit_bitmap0;
+	u64 eoi_exit_bitmap1;
+	u64 eoi_exit_bitmap2;
+	u64 eoi_exit_bitmap3;
+	u64 xss_exit_bitmap;
+	u64 guest_physical_address;
+	u64 vmcs_link_pointer;
+	u64 guest_ia32_debugctl;
+	u64 guest_ia32_pat;
+	u64 guest_ia32_efer;
+	u64 guest_ia32_perf_global_ctrl;
+	u64 guest_pdptr0;
+	u64 guest_pdptr1;
+	u64 guest_pdptr2;
+	u64 guest_pdptr3;
+	u64 guest_bndcfgs;
+	u64 host_ia32_pat;
+	u64 host_ia32_efer;
+	u64 host_ia32_perf_global_ctrl;
+	u64 vmread_bitmap;
+	u64 vmwrite_bitmap;
+	u64 vm_function_control;
+	u64 eptp_list_address;
+	u64 pml_address;
+	u64 encls_exiting_bitmap;
+	u64 tsc_multiplier;
+	u64 padding64[1];
+	natural_width cr0_guest_host_mask;
+	natural_width cr4_guest_host_mask;
+	natural_width cr0_read_shadow;
+	natural_width cr4_read_shadow;
+	natural_width dead_space[4];
+	natural_width exit_qualification;
+	natural_width guest_linear_address;
+	natural_width guest_cr0;
+	natural_width guest_cr3;
+	natural_width guest_cr4;
+	natural_width guest_es_base;
+	natural_width guest_cs_base;
+	natural_width guest_ss_base;
+	natural_width guest_ds_base;
+	natural_width guest_fs_base;
+	natural_width guest_gs_base;
+	natural_width guest_ldtr_base;
+	natural_width guest_tr_base;
+	natural_width guest_gdtr_base;
+	natural_width guest_idtr_base;
+	natural_width guest_dr7;
+	natural_width guest_rsp;
+	natural_width guest_rip;
+	natural_width guest_rflags;
+	natural_width guest_pending_dbg_exceptions;
+	natural_width guest_sysenter_esp;
+	natural_width guest_sysenter_eip;
+	natural_width host_cr0;
+	natural_width host_cr3;
+	natural_width host_cr4;
+	natural_width host_fs_base;
+	natural_width host_gs_base;
+	natural_width host_tr_base;
+	natural_width host_gdtr_base;
+	natural_width host_idtr_base;
+	natural_width host_ia32_sysenter_esp;
+	natural_width host_ia32_sysenter_eip;
+	natural_width host_rsp;
+	natural_width host_rip;
+	natural_width paddingl[8];
+	u32 pin_based_vm_exec_control;
+	u32 cpu_based_vm_exec_control;
+	u32 exception_bitmap;
+	u32 page_fault_error_code_mask;
+	u32 page_fault_error_code_match;
+	u32 cr3_target_count;
+	u32 vm_exit_controls;
+	u32 vm_exit_msr_store_count;
+	u32 vm_exit_msr_load_count;
+	u32 vm_entry_controls;
+	u32 vm_entry_msr_load_count;
+	u32 vm_entry_intr_info_field;
+	u32 vm_entry_exception_error_code;
+	u32 vm_entry_instruction_len;
+	u32 tpr_threshold;
+	u32 secondary_vm_exec_control;
+	u32 vm_instruction_error;
+	u32 vm_exit_reason;
+	u32 vm_exit_intr_info;
+	u32 vm_exit_intr_error_code;
+	u32 idt_vectoring_info_field;
+	u32 idt_vectoring_error_code;
+	u32 vm_exit_instruction_len;
+	u32 vmx_instruction_info;
+	u32 guest_es_limit;
+	u32 guest_cs_limit;
+	u32 guest_ss_limit;
+	u32 guest_ds_limit;
+	u32 guest_fs_limit;
+	u32 guest_gs_limit;
+	u32 guest_ldtr_limit;
+	u32 guest_tr_limit;
+	u32 guest_gdtr_limit;
+	u32 guest_idtr_limit;
+	u32 guest_es_ar_bytes;
+	u32 guest_cs_ar_bytes;
+	u32 guest_ss_ar_bytes;
+	u32 guest_ds_ar_bytes;
+	u32 guest_fs_ar_bytes;
+	u32 guest_gs_ar_bytes;
+	u32 guest_ldtr_ar_bytes;
+	u32 guest_tr_ar_bytes;
+	u32 guest_interruptibility_info;
+	u32 guest_activity_state;
+	u32 guest_sysenter_cs;
+	u32 host_ia32_sysenter_cs;
+	u32 vmx_preemption_timer_value;
+	u32 padding32[7];
+	u16 virtual_processor_id;
+	u16 posted_intr_nv;
+	u16 guest_es_selector;
+	u16 guest_cs_selector;
+	u16 guest_ss_selector;
+	u16 guest_ds_selector;
+	u16 guest_fs_selector;
+	u16 guest_gs_selector;
+	u16 guest_ldtr_selector;
+	u16 guest_tr_selector;
+	u16 guest_intr_status;
+	u16 host_es_selector;
+	u16 host_cs_selector;
+	u16 host_ss_selector;
+	u16 host_ds_selector;
+	u16 host_fs_selector;
+	u16 host_gs_selector;
+	u16 host_tr_selector;
+	u16 guest_pml_index;
+} __attribute__((packed));
+
+struct hv_enlightened_vmcs {
+	u32 revision_id;
+	u32 abort;
+	u16 host_es_selector;
+	u16 host_cs_selector;
+	u16 host_ss_selector;
+	u16 host_ds_selector;
+	u16 host_fs_selector;
+	u16 host_gs_selector;
+	u16 host_tr_selector;
+	u16 padding16_1;
+	u64 host_ia32_pat;
+	u64 host_ia32_efer;
+	u64 host_cr0;
+	u64 host_cr3;
+	u64 host_cr4;
+	u64 host_ia32_sysenter_esp;
+	u64 host_ia32_sysenter_eip;
+	u64 host_rip;
+	u32 host_ia32_sysenter_cs;
+	u32 pin_based_vm_exec_control;
+	u32 vm_exit_controls;
+	u32 secondary_vm_exec_control;
+	u64 io_bitmap_a;
+	u64 io_bitmap_b;
+	u64 msr_bitmap;
+	u16 guest_es_selector;
+	u16 guest_cs_selector;
+	u16 guest_ss_selector;
+	u16 guest_ds_selector;
+	u16 guest_fs_selector;
+	u16 guest_gs_selector;
+	u16 guest_ldtr_selector;
+	u16 guest_tr_selector;
+	u32 guest_es_limit;
+	u32 guest_cs_limit;
+	u32 guest_ss_limit;
+	u32 guest_ds_limit;
+	u32 guest_fs_limit;
+	u32 guest_gs_limit;
+	u32 guest_ldtr_limit;
+	u32 guest_tr_limit;
+	u32 guest_gdtr_limit;
+	u32 guest_idtr_limit;
+	u32 guest_es_ar_bytes;
+	u32 guest_cs_ar_bytes;
+	u32 guest_ss_ar_bytes;
+	u32 guest_ds_ar_bytes;
+	u32 guest_fs_ar_bytes;
+	u32 guest_gs_ar_bytes;
+	u32 guest_ldtr_ar_bytes;
+	u32 guest_tr_ar_bytes;
+	u64 guest_es_base;
+	u64 guest_cs_base;
+	u64 guest_ss_base;
+	u64 guest_ds_base;
+	u64 guest_fs_base;
+	u64 guest_gs_base;
+	u64 guest_ldtr_base;
+	u64 guest_tr_base;
+	u64 guest_gdtr_base;
+	u64 guest_idtr_base;
+	u64 padding64_1[3];
+	u64 vm_exit_msr_store_addr;
+	u64 vm_exit_msr_load_addr;
+	u64 vm_entry_msr_load_addr;
+	u64 cr3_target_value0;
+	u64 cr3_target_value1;
+	u64 cr3_target_value2;
+	u64 cr3_target_value3;
+	u32 page_fault_error_code_mask;
+	u32 page_fault_error_code_match;
+	u32 cr3_target_count;
+	u32 vm_exit_msr_store_count;
+	u32 vm_exit_msr_load_count;
+	u32 vm_entry_msr_load_count;
+	u64 tsc_offset;
+	u64 virtual_apic_page_addr;
+	u64 vmcs_link_pointer;
+	u64 guest_ia32_debugctl;
+	u64 guest_ia32_pat;
+	u64 guest_ia32_efer;
+	u64 guest_pdptr0;
+	u64 guest_pdptr1;
+	u64 guest_pdptr2;
+	u64 guest_pdptr3;
+	u64 guest_pending_dbg_exceptions;
+	u64 guest_sysenter_esp;
+	u64 guest_sysenter_eip;
+	u32 guest_activity_state;
+	u32 guest_sysenter_cs;
+	u64 cr0_guest_host_mask;
+	u64 cr4_guest_host_mask;
+	u64 cr0_read_shadow;
+	u64 cr4_read_shadow;
+	u64 guest_cr0;
+	u64 guest_cr3;
+	u64 guest_cr4;
+	u64 guest_dr7;
+	u64 host_fs_base;
+	u64 host_gs_base;
+	u64 host_tr_base;
+	u64 host_gdtr_base;
+	u64 host_idtr_base;
+	u64 host_rsp;
+	u64 ept_pointer;
+	u16 virtual_processor_id;
+	u16 padding16_2[3];
+	u64 padding64_2[5];
+	u64 guest_physical_address;
+	u32 vm_instruction_error;
+	u32 vm_exit_reason;
+	u32 vm_exit_intr_info;
+	u32 vm_exit_intr_error_code;
+	u32 idt_vectoring_info_field;
+	u32 idt_vectoring_error_code;
+	u32 vm_exit_instruction_len;
+	u32 vmx_instruction_info;
+	u64 exit_qualification;
+	u64 exit_io_instruction_ecx;
+	u64 exit_io_instruction_esi;
+	u64 exit_io_instruction_edi;
+	u64 exit_io_instruction_eip;
+	u64 guest_linear_address;
+	u64 guest_rsp;
+	u64 guest_rflags;
+	u32 guest_interruptibility_info;
+	u32 cpu_based_vm_exec_control;
+	u32 exception_bitmap;
+	u32 vm_entry_controls;
+	u32 vm_entry_intr_info_field;
+	u32 vm_entry_exception_error_code;
+	u32 vm_entry_instruction_len;
+	u32 tpr_threshold;
+	u64 guest_rip;
+	u32 hv_clean_fields;
+	u32 padding32_1;
+	u32 hv_synthetic_controls;
+	struct {
+		u32 nested_flush_hypercall: 1;
+		u32 msr_bitmap: 1;
+		u32 reserved: 30;
+	} hv_enlightenments_control;
+	u32 hv_vp_id;
+	u32 padding32_2;
+	u64 hv_vm_id;
+	u64 partition_assist_page;
+	u64 padding64_4[4];
+	u64 guest_bndcfgs;
+	u64 guest_ia32_perf_global_ctrl;
+	u64 guest_ia32_s_cet;
+	u64 guest_ssp;
+	u64 guest_ia32_int_ssp_table_addr;
+	u64 guest_ia32_lbr_ctl;
+	u64 padding64_5[2];
+	u64 xss_exit_bitmap;
+	u64 encls_exiting_bitmap;
+	u64 host_ia32_perf_global_ctrl;
+	u64 tsc_multiplier;
+	u64 host_ia32_s_cet;
+	u64 host_ssp;
+	u64 host_ia32_int_ssp_table_addr;
+	u64 padding64_6;
+};
+
+struct kvm_vmx {
+	struct kvm kvm;
+	unsigned int tss_addr;
+	bool ept_identity_pagetable_done;
+	gpa_t ept_identity_map_addr;
+	u64 *pid_table;
+};
+
+struct gdt_page {
+	struct desc_struct gdt[16];
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct idt_bits {
+	u16 ist: 3;
+	u16 zero: 5;
+	u16 type: 5;
+	u16 dpl: 2;
+	u16 p: 1;
+};
+
+struct gate_struct {
+	u16 offset_low;
+	u16 segment;
+	struct idt_bits bits;
+	u16 offset_middle;
+	u32 offset_high;
+	u32 reserved;
+};
+
+typedef struct gate_struct gate_desc;
+
+typedef void cpu_emergency_virt_cb();
+
+struct ldttss_desc {
+	u16 limit0;
+	u16 base0;
+	u16 base1: 8;
+	u16 type: 5;
+	u16 dpl: 2;
+	u16 p: 1;
+	u16 limit1: 4;
+	u16 zero0: 3;
+	u16 g: 1;
+	u16 base2: 8;
+	u32 base3;
+	u32 zero1;
+};
+
+typedef struct ldttss_desc tss_desc;
+
+enum intel_pmu_architectural_events {
+	INTEL_ARCH_CPU_CYCLES = 0,
+	INTEL_ARCH_INSTRUCTIONS_RETIRED = 1,
+	INTEL_ARCH_REFERENCE_CYCLES = 2,
+	INTEL_ARCH_LLC_REFERENCES = 3,
+	INTEL_ARCH_LLC_MISSES = 4,
+	INTEL_ARCH_BRANCHES_RETIRED = 5,
+	INTEL_ARCH_BRANCHES_MISPREDICTED = 6,
+	NR_REAL_INTEL_ARCH_EVENTS = 7,
+	PSEUDO_ARCH_REFERENCE_CYCLES = 7,
+	NR_INTEL_ARCH_EVENTS = 8,
+};
+
+struct evmcs_field {
+	u16 offset;
+	u16 clean_field;
+};
+
+enum evmcs_ctrl_type {
+	EVMCS_EXIT_CTRLS = 0,
+	EVMCS_ENTRY_CTRLS = 1,
+	EVMCS_EXEC_CTRL = 2,
+	EVMCS_2NDEXEC = 3,
+	EVMCS_3RDEXEC = 4,
+	EVMCS_PINCTRL = 5,
+	EVMCS_VMFUNC = 6,
+	NR_EVMCS_CTRLS = 7,
+};
+
+enum evmcs_revision {
+	EVMCSv1_LEGACY = 0,
+	NR_EVMCS_REVISIONS = 1,
+};
+
+struct shadow_vmcs_field {
+	u16 encoding;
+	u16 offset;
+};
+
+enum vm_instruction_error_number {
+	VMXERR_VMCALL_IN_VMX_ROOT_OPERATION = 1,
+	VMXERR_VMCLEAR_INVALID_ADDRESS = 2,
+	VMXERR_VMCLEAR_VMXON_POINTER = 3,
+	VMXERR_VMLAUNCH_NONCLEAR_VMCS = 4,
+	VMXERR_VMRESUME_NONLAUNCHED_VMCS = 5,
+	VMXERR_VMRESUME_AFTER_VMXOFF = 6,
+	VMXERR_ENTRY_INVALID_CONTROL_FIELD = 7,
+	VMXERR_ENTRY_INVALID_HOST_STATE_FIELD = 8,
+	VMXERR_VMPTRLD_INVALID_ADDRESS = 9,
+	VMXERR_VMPTRLD_VMXON_POINTER = 10,
+	VMXERR_VMPTRLD_INCORRECT_VMCS_REVISION_ID = 11,
+	VMXERR_UNSUPPORTED_VMCS_COMPONENT = 12,
+	VMXERR_VMWRITE_READ_ONLY_VMCS_COMPONENT = 13,
+	VMXERR_VMXON_IN_VMX_ROOT_OPERATION = 15,
+	VMXERR_ENTRY_INVALID_EXECUTIVE_VMCS_POINTER = 16,
+	VMXERR_ENTRY_NONLAUNCHED_EXECUTIVE_VMCS = 17,
+	VMXERR_ENTRY_EXECUTIVE_VMCS_POINTER_NOT_VMXON_POINTER = 18,
+	VMXERR_VMCALL_NONCLEAR_VMCS = 19,
+	VMXERR_VMCALL_INVALID_VM_EXIT_CONTROL_FIELDS = 20,
+	VMXERR_VMCALL_INCORRECT_MSEG_REVISION_ID = 22,
+	VMXERR_VMXOFF_UNDER_DUAL_MONITOR_TREATMENT_OF_SMIS_AND_SMM = 23,
+	VMXERR_VMCALL_INVALID_SMM_MONITOR_FEATURES = 24,
+	VMXERR_ENTRY_INVALID_VM_EXECUTION_CONTROL_FIELDS_IN_EXECUTIVE_VMCS = 25,
+	VMXERR_ENTRY_EVENTS_BLOCKED_BY_MOV_SS = 26,
+	VMXERR_INVALID_OPERAND_TO_INVEPT_INVVPID = 28,
+};
+
+enum {
+	VMX_VMREAD_BITMAP = 0,
+	VMX_VMWRITE_BITMAP = 1,
+	VMX_BITMAP_NR = 2,
+};
+
+enum vmcs_field_width {
+	VMCS_FIELD_WIDTH_U16 = 0,
+	VMCS_FIELD_WIDTH_U64 = 1,
+	VMCS_FIELD_WIDTH_U32 = 2,
+	VMCS_FIELD_WIDTH_NATURAL_WIDTH = 3,
+};
+
+enum nested_evmptrld_status {
+	EVMPTRLD_DISABLED = 0,
+	EVMPTRLD_SUCCEEDED = 1,
+	EVMPTRLD_VMFAIL = 2,
+	EVMPTRLD_ERROR = 3,
+};
+
+struct vcpu_data {
+	u64 pi_desc_addr;
+	u32 vector;
+};
+
+struct vmcb;
+
+struct svm_cpu_data {
+	u64 asid_generation;
+	u32 max_asid;
+	u32 next_asid;
+	u32 min_asid;
+	struct page *save_area;
+	unsigned long save_area_pa;
+	struct vmcb *current_vmcb;
+	struct vmcb **sev_vmcbs;
+};
+
+struct hv_enlightenments_control {
+	u32 nested_flush_hypercall: 1;
+	u32 msr_bitmap: 1;
+	u32 enlightened_npt_tlb: 1;
+	u32 reserved: 29;
+};
+
+struct hv_vmcb_enlightenments {
+	struct hv_enlightenments_control hv_enlightenments_control;
+	u32 hv_vp_id;
+	u64 hv_vm_id;
+	u64 partition_assist_page;
+	u64 reserved;
+};
+
+struct vmcb_control_area {
+	u32 intercepts[6];
+	u32 reserved_1[9];
+	u16 pause_filter_thresh;
+	u16 pause_filter_count;
+	u64 iopm_base_pa;
+	u64 msrpm_base_pa;
+	u64 tsc_offset;
+	u32 asid;
+	u8 tlb_ctl;
+	u8 reserved_2[3];
+	u32 int_ctl;
+	u32 int_vector;
+	u32 int_state;
+	u8 reserved_3[4];
+	u32 exit_code;
+	u32 exit_code_hi;
+	u64 exit_info_1;
+	u64 exit_info_2;
+	u32 exit_int_info;
+	u32 exit_int_info_err;
+	u64 nested_ctl;
+	u64 avic_vapic_bar;
+	u64 ghcb_gpa;
+	u32 event_inj;
+	u32 event_inj_err;
+	u64 nested_cr3;
+	u64 virt_ext;
+	u32 clean;
+	u32 reserved_5;
+	u64 next_rip;
+	u8 insn_len;
+	u8 insn_bytes[15];
+	u64 avic_backing_page;
+	u8 reserved_6[8];
+	u64 avic_logical_id;
+	u64 avic_physical_id;
+	u8 reserved_7[8];
+	u64 vmsa_pa;
+	u8 reserved_8[720];
+	union {
+		struct hv_vmcb_enlightenments hv_enlightenments;
+		u8 reserved_sw[32];
+	};
+};
+
+struct vmcb_seg {
+	u16 selector;
+	u16 attrib;
+	u32 limit;
+	u64 base;
+};
+
+struct vmcb_save_area {
+	struct vmcb_seg es;
+	struct vmcb_seg cs;
+	struct vmcb_seg ss;
+	struct vmcb_seg ds;
+	struct vmcb_seg fs;
+	struct vmcb_seg gs;
+	struct vmcb_seg gdtr;
+	struct vmcb_seg ldtr;
+	struct vmcb_seg idtr;
+	struct vmcb_seg tr;
+	u8 reserved_0xa0[42];
+	u8 vmpl;
+	u8 cpl;
+	u8 reserved_0xcc[4];
+	u64 efer;
+	u8 reserved_0xd8[112];
+	u64 cr4;
+	u64 cr3;
+	u64 cr0;
+	u64 dr7;
+	u64 dr6;
+	u64 rflags;
+	u64 rip;
+	u8 reserved_0x180[88];
+	u64 rsp;
+	u64 s_cet;
+	u64 ssp;
+	u64 isst_addr;
+	u64 rax;
+	u64 star;
+	u64 lstar;
+	u64 cstar;
+	u64 sfmask;
+	u64 kernel_gs_base;
+	u64 sysenter_cs;
+	u64 sysenter_esp;
+	u64 sysenter_eip;
+	u64 cr2;
+	u8 reserved_0x248[32];
+	u64 g_pat;
+	u64 dbgctl;
+	u64 br_from;
+	u64 br_to;
+	u64 last_excp_from;
+	u64 last_excp_to;
+	u8 reserved_0x298[72];
+	u64 spec_ctrl;
+};
+
+struct vmcb {
+	struct vmcb_control_area control;
+	struct vmcb_save_area save;
+};
+
+struct svm_direct_access_msrs {
+	u32 index;
+	bool always;
+};
+
+struct __x86_intercept {
+	u32 exit_code;
+	enum x86_intercept_stage stage;
+};
+
+enum {
+	VMCB_INTERCEPTS = 0,
+	VMCB_PERM_MAP = 1,
+	VMCB_ASID = 2,
+	VMCB_INTR = 3,
+	VMCB_NPT = 4,
+	VMCB_CR = 5,
+	VMCB_DR = 6,
+	VMCB_DT = 7,
+	VMCB_SEG = 8,
+	VMCB_CR2 = 9,
+	VMCB_LBR = 10,
+	VMCB_AVIC = 11,
+	VMCB_SW = 31,
+};
+
+enum {
+	INTERCEPT_CR0_READ = 0,
+	INTERCEPT_CR3_READ = 3,
+	INTERCEPT_CR4_READ = 4,
+	INTERCEPT_CR8_READ = 8,
+	INTERCEPT_CR0_WRITE = 16,
+	INTERCEPT_CR3_WRITE = 19,
+	INTERCEPT_CR4_WRITE = 20,
+	INTERCEPT_CR8_WRITE = 24,
+	INTERCEPT_DR0_READ = 32,
+	INTERCEPT_DR1_READ = 33,
+	INTERCEPT_DR2_READ = 34,
+	INTERCEPT_DR3_READ = 35,
+	INTERCEPT_DR4_READ = 36,
+	INTERCEPT_DR5_READ = 37,
+	INTERCEPT_DR6_READ = 38,
+	INTERCEPT_DR7_READ = 39,
+	INTERCEPT_DR0_WRITE = 48,
+	INTERCEPT_DR1_WRITE = 49,
+	INTERCEPT_DR2_WRITE = 50,
+	INTERCEPT_DR3_WRITE = 51,
+	INTERCEPT_DR4_WRITE = 52,
+	INTERCEPT_DR5_WRITE = 53,
+	INTERCEPT_DR6_WRITE = 54,
+	INTERCEPT_DR7_WRITE = 55,
+	INTERCEPT_EXCEPTION_OFFSET = 64,
+	INTERCEPT_INTR = 96,
+	INTERCEPT_NMI = 97,
+	INTERCEPT_SMI = 98,
+	INTERCEPT_INIT = 99,
+	INTERCEPT_VINTR = 100,
+	INTERCEPT_SELECTIVE_CR0 = 101,
+	INTERCEPT_STORE_IDTR = 102,
+	INTERCEPT_STORE_GDTR = 103,
+	INTERCEPT_STORE_LDTR = 104,
+	INTERCEPT_STORE_TR = 105,
+	INTERCEPT_LOAD_IDTR = 106,
+	INTERCEPT_LOAD_GDTR = 107,
+	INTERCEPT_LOAD_LDTR = 108,
+	INTERCEPT_LOAD_TR = 109,
+	INTERCEPT_RDTSC = 110,
+	INTERCEPT_RDPMC = 111,
+	INTERCEPT_PUSHF = 112,
+	INTERCEPT_POPF = 113,
+	INTERCEPT_CPUID = 114,
+	INTERCEPT_RSM = 115,
+	INTERCEPT_IRET = 116,
+	INTERCEPT_INTn = 117,
+	INTERCEPT_INVD = 118,
+	INTERCEPT_PAUSE = 119,
+	INTERCEPT_HLT = 120,
+	INTERCEPT_INVLPG = 121,
+	INTERCEPT_INVLPGA = 122,
+	INTERCEPT_IOIO_PROT = 123,
+	INTERCEPT_MSR_PROT = 124,
+	INTERCEPT_TASK_SWITCH = 125,
+	INTERCEPT_FERR_FREEZE = 126,
+	INTERCEPT_SHUTDOWN = 127,
+	INTERCEPT_VMRUN = 128,
+	INTERCEPT_VMMCALL = 129,
+	INTERCEPT_VMLOAD = 130,
+	INTERCEPT_VMSAVE = 131,
+	INTERCEPT_STGI = 132,
+	INTERCEPT_CLGI = 133,
+	INTERCEPT_SKINIT = 134,
+	INTERCEPT_RDTSCP = 135,
+	INTERCEPT_ICEBP = 136,
+	INTERCEPT_WBINVD = 137,
+	INTERCEPT_MONITOR = 138,
+	INTERCEPT_MWAIT = 139,
+	INTERCEPT_MWAIT_COND = 140,
+	INTERCEPT_XSETBV = 141,
+	INTERCEPT_RDPRU = 142,
+	TRAP_EFER_WRITE = 143,
+	TRAP_CR0_WRITE = 144,
+	TRAP_CR1_WRITE = 145,
+	TRAP_CR2_WRITE = 146,
+	TRAP_CR3_WRITE = 147,
+	TRAP_CR4_WRITE = 148,
+	TRAP_CR5_WRITE = 149,
+	TRAP_CR6_WRITE = 150,
+	TRAP_CR7_WRITE = 151,
+	TRAP_CR8_WRITE = 152,
+	INTERCEPT_INVLPGB = 160,
+	INTERCEPT_INVLPGB_ILLEGAL = 161,
+	INTERCEPT_INVPCID = 162,
+	INTERCEPT_MCOMMIT = 163,
+	INTERCEPT_TLBSYNC = 164,
+};
+
+enum intercept_words {
+	INTERCEPT_CR = 0,
+	INTERCEPT_DR = 1,
+	INTERCEPT_EXCEPTION = 2,
+	INTERCEPT_WORD3 = 3,
+	INTERCEPT_WORD4 = 4,
+	INTERCEPT_WORD5 = 5,
+	MAX_INTERCEPT = 6,
+};
+
+enum {
+	NONE_SVM_INSTR = 0,
+	SVM_INSTR_VMRUN = 1,
+	SVM_INSTR_VMLOAD = 2,
+	SVM_INSTR_VMSAVE = 3,
+};
+
+enum cc_attr {
+	CC_ATTR_MEM_ENCRYPT = 0,
+	CC_ATTR_HOST_MEM_ENCRYPT = 1,
+	CC_ATTR_GUEST_MEM_ENCRYPT = 2,
+	CC_ATTR_GUEST_STATE_ENCRYPT = 3,
+	CC_ATTR_GUEST_UNROLL_STRING_IO = 4,
+	CC_ATTR_GUEST_SEV_SNP = 5,
+	CC_ATTR_HOTPLUG_DISABLED = 6,
+};
+
+struct kvm_vmcb_info {
+	struct vmcb *ptr;
+	unsigned long pa;
+	int cpu;
+	uint64_t asid_generation;
+};
+
+struct vmcb_ctrl_area_cached {
+	u32 intercepts[6];
+	u16 pause_filter_thresh;
+	u16 pause_filter_count;
+	long: 0;
+	u64 iopm_base_pa;
+	u64 msrpm_base_pa;
+	u64 tsc_offset;
+	u32 asid;
+	u8 tlb_ctl;
+	long: 0;
+	u32 int_ctl;
+	u32 int_vector;
+	u32 int_state;
+	u32 exit_code;
+	u32 exit_code_hi;
+	long: 0;
+	u64 exit_info_1;
+	u64 exit_info_2;
+	u32 exit_int_info;
+	u32 exit_int_info_err;
+	u64 nested_ctl;
+	u32 event_inj;
+	u32 event_inj_err;
+	u64 next_rip;
+	u64 nested_cr3;
+	u64 virt_ext;
+	u32 clean;
+	union {
+		struct hv_vmcb_enlightenments hv_enlightenments;
+		u8 reserved_sw[32];
+	};
+	long: 0;
+} __attribute__((packed));
+
+struct vmcb_save_area_cached {
+	u64 efer;
+	u64 cr4;
+	u64 cr3;
+	u64 cr0;
+	u64 dr7;
+	u64 dr6;
+};
+
+struct svm_nested_state {
+	struct kvm_vmcb_info vmcb02;
+	u64 hsave_msr;
+	u64 vm_cr_msr;
+	u64 vmcb12_gpa;
+	u64 last_vmcb12_gpa;
+	u32 *msrpm;
+	bool nested_run_pending;
+	long: 0;
+	struct vmcb_ctrl_area_cached ctl;
+	struct vmcb_save_area_cached save;
+	bool initialized;
+	bool force_msr_bitmap_recalc;
+};
+
+struct sev_es_save_area;
+
+struct vcpu_sev_es_state {
+	struct sev_es_save_area *vmsa;
+	struct ghcb *ghcb;
+	u8 valid_bitmap[16];
+	struct kvm_host_map ghcb_map;
+	bool received_first_sipi;
+	u64 sw_scratch;
+	void *ghcb_sa;
+	u32 ghcb_sa_len;
+	bool ghcb_sa_sync;
+	bool ghcb_sa_free;
+};
+
+struct vcpu_svm {
+	struct kvm_vcpu vcpu;
+	struct vmcb *vmcb;
+	struct kvm_vmcb_info vmcb01;
+	struct kvm_vmcb_info *current_vmcb;
+	u32 asid;
+	u32 sysenter_esp_hi;
+	u32 sysenter_eip_hi;
+	uint64_t tsc_aux;
+	u64 msr_decfg;
+	u64 next_rip;
+	u64 spec_ctrl;
+	u64 tsc_ratio_msr;
+	u64 virt_spec_ctrl;
+	u32 *msrpm;
+	ulong nmi_iret_rip;
+	struct svm_nested_state nested;
+	bool nmi_masked;
+	bool awaiting_iret_completion;
+	bool nmi_singlestep;
+	u64 nmi_singlestep_guest_rflags;
+	bool nmi_l1_to_l2;
+	unsigned long soft_int_csbase;
+	unsigned long soft_int_old_rip;
+	unsigned long soft_int_next_rip;
+	bool soft_int_injected;
+	u32 ldr_reg;
+	u32 dfr_reg;
+	struct page *avic_backing_page;
+	u64 *avic_physical_id_cache;
+	struct list_head ir_list;
+	spinlock_t ir_list_lock;
+	struct {
+		unsigned long read[1];
+		unsigned long write[1];
+	} shadow_msr_intercept;
+	struct vcpu_sev_es_state sev_es;
+	bool guest_state_loaded;
+	bool x2avic_msrs_intercepted;
+	bool guest_gif;
+};
+
+struct sev_es_save_area {
+	struct vmcb_seg es;
+	struct vmcb_seg cs;
+	struct vmcb_seg ss;
+	struct vmcb_seg ds;
+	struct vmcb_seg fs;
+	struct vmcb_seg gs;
+	struct vmcb_seg gdtr;
+	struct vmcb_seg ldtr;
+	struct vmcb_seg idtr;
+	struct vmcb_seg tr;
+	u64 vmpl0_ssp;
+	u64 vmpl1_ssp;
+	u64 vmpl2_ssp;
+	u64 vmpl3_ssp;
+	u64 u_cet;
+	u8 reserved_0xc8[2];
+	u8 vmpl;
+	u8 cpl;
+	u8 reserved_0xcc[4];
+	u64 efer;
+	u8 reserved_0xd8[104];
+	u64 xss;
+	u64 cr4;
+	u64 cr3;
+	u64 cr0;
+	u64 dr7;
+	u64 dr6;
+	u64 rflags;
+	u64 rip;
+	u64 dr0;
+	u64 dr1;
+	u64 dr2;
+	u64 dr3;
+	u64 dr0_addr_mask;
+	u64 dr1_addr_mask;
+	u64 dr2_addr_mask;
+	u64 dr3_addr_mask;
+	u8 reserved_0x1c0[24];
+	u64 rsp;
+	u64 s_cet;
+	u64 ssp;
+	u64 isst_addr;
+	u64 rax;
+	u64 star;
+	u64 lstar;
+	u64 cstar;
+	u64 sfmask;
+	u64 kernel_gs_base;
+	u64 sysenter_cs;
+	u64 sysenter_esp;
+	u64 sysenter_eip;
+	u64 cr2;
+	u8 reserved_0x248[32];
+	u64 g_pat;
+	u64 dbgctl;
+	u64 br_from;
+	u64 br_to;
+	u64 last_excp_from;
+	u64 last_excp_to;
+	u8 reserved_0x298[80];
+	u32 pkru;
+	u32 tsc_aux;
+	u8 reserved_0x2f0[24];
+	u64 rcx;
+	u64 rdx;
+	u64 rbx;
+	u64 reserved_0x320;
+	u64 rbp;
+	u64 rsi;
+	u64 rdi;
+	u64 r8;
+	u64 r9;
+	u64 r10;
+	u64 r11;
+	u64 r12;
+	u64 r13;
+	u64 r14;
+	u64 r15;
+	u8 reserved_0x380[16];
+	u64 guest_exit_info_1;
+	u64 guest_exit_info_2;
+	u64 guest_exit_int_info;
+	u64 guest_nrip;
+	u64 sev_features;
+	u64 vintr_ctrl;
+	u64 guest_exit_code;
+	u64 virtual_tom;
+	u64 tlb_id;
+	u64 pcpu_id;
+	u64 event_inj;
+	u64 xcr0;
+	u8 reserved_0x3f0[16];
+	u64 x87_dp;
+	u32 mxcsr;
+	u16 x87_ftw;
+	u16 x87_fsw;
+	u16 x87_fcw;
+	u16 x87_fop;
+	u16 x87_ds;
+	u16 x87_cs;
+	u64 x87_rip;
+	u8 fpreg_x87[80];
+	u8 fpreg_xmm[256];
+	u8 fpreg_ymm[256];
+};
+
+enum pmu_type {
+	PMU_TYPE_COUNTER = 0,
+	PMU_TYPE_EVNTSEL = 1,
+};
+
+enum avic_ipi_failure_cause {
+	AVIC_IPI_FAILURE_INVALID_INT_TYPE = 0,
+	AVIC_IPI_FAILURE_TARGET_NOT_RUNNING = 1,
+	AVIC_IPI_FAILURE_INVALID_TARGET = 2,
+	AVIC_IPI_FAILURE_INVALID_BACKING_PAGE = 3,
+	AVIC_IPI_FAILURE_INVALID_IPI_VECTOR = 4,
+};
+
+struct misc_cg;
+
+struct kvm_sev_info {
+	bool active;
+	bool es_active;
+	unsigned int asid;
+	unsigned int handle;
+	int fd;
+	unsigned long pages_locked;
+	struct list_head regions_list;
+	u64 ap_jump_table;
+	struct kvm *enc_context_owner;
+	struct list_head mirror_vms;
+	struct list_head mirror_entry;
+	struct misc_cg *misc_cg;
+	atomic_t migration_in_progress;
+};
+
+struct kvm_svm {
+	struct kvm kvm;
+	u32 avic_vm_id;
+	struct page *avic_logical_id_table_page;
+	struct page *avic_physical_id_table_page;
+	struct hlist_node hnode;
+	struct kvm_sev_info sev_info;
+};
+
+struct amd_svm_iommu_ir {
+	struct list_head node;
+	void *data;
+};
+
+enum sev_migration_role {
+	SEV_MIGRATION_SOURCE = 0,
+	SEV_MIGRATION_TARGET = 1,
+	SEV_NR_MIGRATION_ROLES = 2,
+};
+
+enum misc_res_type {
+	MISC_CG_RES_TYPES = 0,
+};
+
+struct enc_region {
+	struct list_head list;
+	unsigned long npages;
+	struct page **pages;
+	unsigned long uaddr;
+	unsigned long size;
+};
+
+struct kvm_sev_cmd {
+	__u32 id;
+	__u64 data;
+	__u32 error;
+	__u32 sev_fd;
+};
+
+struct real_mode_header {
+	u32 text_start;
+	u32 ro_end;
+	u32 trampoline_start;
+	u32 trampoline_header;
+	u32 trampoline_start64;
+	u32 trampoline_pgd;
+	u32 wakeup_start;
+	u32 wakeup_header;
+	u32 machine_real_restart_asm;
+	u32 machine_real_restart_seg;
+};
+
+struct trampoline_header {
+	u64 start;
+	u64 efer;
+	u32 cr4;
+	u32 flags;
+	u32 lock;
+};
+
+struct screen_info {
+	__u8 orig_x;
+	__u8 orig_y;
+	__u16 ext_mem_k;
+	__u16 orig_video_page;
+	__u8 orig_video_mode;
+	__u8 orig_video_cols;
+	__u8 flags;
+	__u8 unused2;
+	__u16 orig_video_ega_bx;
+	__u16 unused3;
+	__u8 orig_video_lines;
+	__u8 orig_video_isVGA;
+	__u16 orig_video_points;
+	__u16 lfb_width;
+	__u16 lfb_height;
+	__u16 lfb_depth;
+	__u32 lfb_base;
+	__u32 lfb_size;
+	__u16 cl_magic;
+	__u16 cl_offset;
+	__u16 lfb_linelength;
+	__u8 red_size;
+	__u8 red_pos;
+	__u8 green_size;
+	__u8 green_pos;
+	__u8 blue_size;
+	__u8 blue_pos;
+	__u8 rsvd_size;
+	__u8 rsvd_pos;
+	__u16 vesapm_seg;
+	__u16 vesapm_off;
+	__u16 pages;
+	__u16 vesa_attributes;
+	__u32 capabilities;
+	__u32 ext_lfb_base;
+	__u8 _reserved[2];
+} __attribute__((packed));
+
+struct apm_bios_info {
+	__u16 version;
+	__u16 cseg;
+	__u32 offset;
+	__u16 cseg_16;
+	__u16 dseg;
+	__u16 flags;
+	__u16 cseg_len;
+	__u16 cseg_16_len;
+	__u16 dseg_len;
+};
+
+struct ist_info {
+	__u32 signature;
+	__u32 command;
+	__u32 event;
+	__u32 perf_level;
+};
+
+struct sys_desc_table {
+	__u16 length;
+	__u8 table[14];
+};
+
+struct olpc_ofw_header {
+	__u32 ofw_magic;
+	__u32 ofw_version;
+	__u32 cif_handler;
+	__u32 irq_desc_table;
+};
+
+struct edid_info {
+	unsigned char dummy[128];
+};
+
+struct efi_info {
+	__u32 efi_loader_signature;
+	__u32 efi_systab;
+	__u32 efi_memdesc_size;
+	__u32 efi_memdesc_version;
+	__u32 efi_memmap;
+	__u32 efi_memmap_size;
+	__u32 efi_systab_hi;
+	__u32 efi_memmap_hi;
+};
+
+struct setup_header {
+	__u8 setup_sects;
+	__u16 root_flags;
+	__u32 syssize;
+	__u16 ram_size;
+	__u16 vid_mode;
+	__u16 root_dev;
+	__u16 boot_flag;
+	__u16 jump;
+	__u32 header;
+	__u16 version;
+	__u32 realmode_swtch;
+	__u16 start_sys_seg;
+	__u16 kernel_version;
+	__u8 type_of_loader;
+	__u8 loadflags;
+	__u16 setup_move_size;
+	__u32 code32_start;
+	__u32 ramdisk_image;
+	__u32 ramdisk_size;
+	__u32 bootsect_kludge;
+	__u16 heap_end_ptr;
+	__u8 ext_loader_ver;
+	__u8 ext_loader_type;
+	__u32 cmd_line_ptr;
+	__u32 initrd_addr_max;
+	__u32 kernel_alignment;
+	__u8 relocatable_kernel;
+	__u8 min_alignment;
+	__u16 xloadflags;
+	__u32 cmdline_size;
+	__u32 hardware_subarch;
+	__u64 hardware_subarch_data;
+	__u32 payload_offset;
+	__u32 payload_length;
+	__u64 setup_data;
+	__u64 pref_address;
+	__u32 init_size;
+	__u32 handover_offset;
+	__u32 kernel_info_offset;
+} __attribute__((packed));
+
+struct boot_e820_entry {
+	__u64 addr;
+	__u64 size;
+	__u32 type;
+} __attribute__((packed));
+
+struct edd_device_params {
+	__u16 length;
+	__u16 info_flags;
+	__u32 num_default_cylinders;
+	__u32 num_default_heads;
+	__u32 sectors_per_track;
+	__u64 number_of_sectors;
+	__u16 bytes_per_sector;
+	__u32 dpte_ptr;
+	__u16 key;
+	__u8 device_path_info_length;
+	__u8 reserved2;
+	__u16 reserved3;
+	__u8 host_bus_type[4];
+	__u8 interface_type[8];
+	union {
+		struct {
+			__u16 base_address;
+			__u16 reserved1;
+			__u32 reserved2;
+		} isa;
+		struct {
+			__u8 bus;
+			__u8 slot;
+			__u8 function;
+			__u8 channel;
+			__u32 reserved;
+		} pci;
+		struct {
+			__u64 reserved;
+		} ibnd;
+		struct {
+			__u64 reserved;
+		} xprs;
+		struct {
+			__u64 reserved;
+		} htpt;
+		struct {
+			__u64 reserved;
+		} unknown;
+	} interface_path;
+	union {
+		struct {
+			__u8 device;
+			__u8 reserved1;
+			__u16 reserved2;
+			__u32 reserved3;
+			__u64 reserved4;
+		} ata;
+		struct {
+			__u8 device;
+			__u8 lun;
+			__u8 reserved1;
+			__u8 reserved2;
+			__u32 reserved3;
+			__u64 reserved4;
+		} atapi;
+		struct {
+			__u16 id;
+			__u64 lun;
+			__u16 reserved1;
+			__u32 reserved2;
+		} __attribute__((packed)) scsi;
+		struct {
+			__u64 serial_number;
+			__u64 reserved;
+		} usb;
+		struct {
+			__u64 eui;
+			__u64 reserved;
+		} i1394;
+		struct {
+			__u64 wwid;
+			__u64 lun;
+		} fibre;
+		struct {
+			__u64 identity_tag;
+			__u64 reserved;
+		} i2o;
+		struct {
+			__u32 array_number;
+			__u32 reserved1;
+			__u64 reserved2;
+		} raid;
+		struct {
+			__u8 device;
+			__u8 reserved1;
+			__u16 reserved2;
+			__u32 reserved3;
+			__u64 reserved4;
+		} sata;
+		struct {
+			__u64 reserved1;
+			__u64 reserved2;
+		} unknown;
+	} device_path;
+	__u8 reserved4;
+	__u8 checksum;
+} __attribute__((packed));
+
+struct edd_info {
+	__u8 device;
+	__u8 version;
+	__u16 interface_support;
+	__u16 legacy_max_cylinder;
+	__u8 legacy_max_head;
+	__u8 legacy_sectors_per_track;
+	struct edd_device_params params;
+};
+
+struct boot_params {
+	struct screen_info screen_info;
+	struct apm_bios_info apm_bios_info;
+	__u8 _pad2[4];
+	__u64 tboot_addr;
+	struct ist_info ist_info;
+	__u64 acpi_rsdp_addr;
+	__u8 _pad3[8];
+	__u8 hd0_info[16];
+	__u8 hd1_info[16];
+	struct sys_desc_table sys_desc_table;
+	struct olpc_ofw_header olpc_ofw_header;
+	__u32 ext_ramdisk_image;
+	__u32 ext_ramdisk_size;
+	__u32 ext_cmd_line_ptr;
+	__u8 _pad4[112];
+	__u32 cc_blob_address;
+	struct edid_info edid_info;
+	struct efi_info efi_info;
+	__u32 alt_mem_k;
+	__u32 scratch;
+	__u8 e820_entries;
+	__u8 eddbuf_entries;
+	__u8 edd_mbr_sig_buf_entries;
+	__u8 kbd_status;
+	__u8 secure_boot;
+	__u8 _pad5[2];
+	__u8 sentinel;
+	__u8 _pad6[1];
+	struct setup_header hdr;
+	__u8 _pad7[36];
+	__u32 edd_mbr_sig_buffer[16];
+	struct boot_e820_entry e820_table[128];
+	__u8 _pad8[48];
+	struct edd_info eddbuf[6];
+	__u8 _pad9[276];
+};
+
+enum x86_hardware_subarch {
+	X86_SUBARCH_PC = 0,
+	X86_SUBARCH_LGUEST = 1,
+	X86_SUBARCH_XEN = 2,
+	X86_SUBARCH_INTEL_MID = 3,
+	X86_SUBARCH_CE4100 = 4,
+	X86_NR_SUBARCHS = 5,
+};
+
+typedef unsigned long p4dval_t;
+
+struct boot_params_to_save {
+	unsigned int start;
+	unsigned int len;
+};
+
+enum x86_legacy_i8042_state {
+	X86_LEGACY_I8042_PLATFORM_ABSENT = 0,
+	X86_LEGACY_I8042_FIRMWARE_ABSENT = 1,
+	X86_LEGACY_I8042_EXPECTED_PRESENT = 2,
+};
+
+enum show_regs_mode {
+	SHOW_REGS_SHORT = 0,
+	SHOW_REGS_USER = 1,
+	SHOW_REGS_ALL = 2,
+};
+
+enum {
+	UNAME26 = 131072,
+	ADDR_NO_RANDOMIZE = 262144,
+	FDPIC_FUNCPTRS = 524288,
+	MMAP_PAGE_ZERO = 1048576,
+	ADDR_COMPAT_LAYOUT = 2097152,
+	READ_IMPLIES_EXEC = 4194304,
+	ADDR_LIMIT_32BIT = 8388608,
+	SHORT_INODE = 16777216,
+	WHOLE_SECONDS = 33554432,
+	STICKY_TIMEOUTS = 67108864,
+	ADDR_LIMIT_3GB = 134217728,
+};
+
+enum which_selector {
+	FS = 0,
+	GS = 1,
+};
+
+struct kernel_vm86_regs {
+	struct pt_regs pt;
+	unsigned short es;
+	unsigned short __esh;
+	unsigned short ds;
+	unsigned short __dsh;
+	unsigned short fs;
+	unsigned short __fsh;
+	unsigned short gs;
+	unsigned short __gsh;
+};
+
+struct ksignal {
+	struct k_sigaction ka;
+	kernel_siginfo_t info;
+	int sig;
+};
+
+struct sigaltstack {
+	void __attribute__((btf_type_tag("user"))) *ss_sp;
+	int ss_flags;
+	__kernel_size_t ss_size;
+};
+
+typedef struct sigaltstack stack_t;
+
+struct sigcontext_64 {
+	__u64 r8;
+	__u64 r9;
+	__u64 r10;
+	__u64 r11;
+	__u64 r12;
+	__u64 r13;
+	__u64 r14;
+	__u64 r15;
+	__u64 di;
+	__u64 si;
+	__u64 bp;
+	__u64 bx;
+	__u64 dx;
+	__u64 ax;
+	__u64 cx;
+	__u64 sp;
+	__u64 ip;
+	__u64 flags;
+	__u16 cs;
+	__u16 gs;
+	__u16 fs;
+	__u16 ss;
+	__u64 err;
+	__u64 trapno;
+	__u64 oldmask;
+	__u64 cr2;
+	__u64 fpstate;
+	__u64 reserved1[8];
+};
+
+struct ucontext {
+	unsigned long uc_flags;
+	struct ucontext *uc_link;
+	stack_t uc_stack;
+	struct sigcontext_64 uc_mcontext;
+	sigset_t uc_sigmask;
+};
+
+struct siginfo {
+	union {
+		struct {
+			int si_signo;
+			int si_errno;
+			int si_code;
+			union __sifields _sifields;
+		};
+		int _si_pad[32];
+	};
+};
+
+struct rt_sigframe {
+	char __attribute__((btf_type_tag("user"))) *pretcode;
+	struct ucontext uc;
+	struct siginfo info;
+};
+
+typedef struct siginfo siginfo_t;
+
+enum die_val {
+	DIE_OOPS = 1,
+	DIE_INT3 = 2,
+	DIE_DEBUG = 3,
+	DIE_PANIC = 4,
+	DIE_NMI = 5,
+	DIE_DIE = 6,
+	DIE_KERNELDEBUG = 7,
+	DIE_TRAP = 8,
+	DIE_GPF = 9,
+	DIE_CALL = 10,
+	DIE_PAGE_FAULT = 11,
+	DIE_NMIUNKNOWN = 12,
+};
+
+enum bug_trap_type {
+	BUG_TRAP_TYPE_NONE = 0,
+	BUG_TRAP_TYPE_WARN = 1,
+	BUG_TRAP_TYPE_BUG = 2,
+};
+
+enum kernel_gp_hint {
+	GP_NO_HINT = 0,
+	GP_NON_CANONICAL = 1,
+	GP_CANONICAL = 2,
+};
+
+enum insn_mode {
+	INSN_MODE_32 = 0,
+	INSN_MODE_64 = 1,
+	INSN_MODE_KERN = 2,
+	INSN_NUM_MODES = 3,
+};
+
+typedef u8 kprobe_opcode_t;
+
+struct kprobe;
+
+typedef int (*kprobe_pre_handler_t)(struct kprobe *, struct pt_regs *);
+
+typedef void (*kprobe_post_handler_t)(struct kprobe *, struct pt_regs *, unsigned long);
+
+struct arch_specific_insn {
+	kprobe_opcode_t *insn;
+	unsigned int boostable: 1;
+	unsigned char size;
+	union {
+		unsigned char opcode;
+		struct {
+			unsigned char type;
+		} jcc;
+		struct {
+			unsigned char type;
+			unsigned char asize;
+		} loop;
+		struct {
+			unsigned char reg;
+		} indirect;
+	};
+	s32 rel32;
+	void (*emulate_op)(struct kprobe *, struct pt_regs *);
+	int tp_len;
+};
+
+struct kprobe {
+	struct hlist_node hlist;
+	struct list_head list;
+	unsigned long nmissed;
+	kprobe_opcode_t *addr;
+	const char *symbol_name;
+	unsigned int offset;
+	kprobe_pre_handler_t pre_handler;
+	kprobe_post_handler_t post_handler;
+	kprobe_opcode_t opcode;
+	struct arch_specific_insn ainsn;
+	u32 flags;
+};
+
+struct idt_data {
+	unsigned int vector;
+	unsigned int segment;
+	struct idt_bits bits;
+	const void *addr;
+};
+
+enum {
+	GATE_INTERRUPT = 14,
+	GATE_TRAP = 15,
+	GATE_CALL = 12,
+	GATE_TASK = 5,
+};
+
+typedef void (*btf_trace_local_timer_entry)(void *, int);
+
+typedef void (*btf_trace_local_timer_exit)(void *, int);
+
+typedef void (*btf_trace_spurious_apic_entry)(void *, int);
+
+typedef void (*btf_trace_spurious_apic_exit)(void *, int);
+
+typedef void (*btf_trace_error_apic_entry)(void *, int);
+
+typedef void (*btf_trace_error_apic_exit)(void *, int);
+
+typedef void (*btf_trace_x86_platform_ipi_entry)(void *, int);
+
+typedef void (*btf_trace_x86_platform_ipi_exit)(void *, int);
+
+typedef void (*btf_trace_irq_work_entry)(void *, int);
+
+typedef void (*btf_trace_irq_work_exit)(void *, int);
+
+typedef void (*btf_trace_reschedule_entry)(void *, int);
+
+typedef void (*btf_trace_reschedule_exit)(void *, int);
+
+typedef void (*btf_trace_call_function_entry)(void *, int);
+
+typedef void (*btf_trace_call_function_exit)(void *, int);
+
+typedef void (*btf_trace_call_function_single_entry)(void *, int);
+
+typedef void (*btf_trace_call_function_single_exit)(void *, int);
+
+typedef void (*btf_trace_thermal_apic_entry)(void *, int);
+
+typedef void (*btf_trace_thermal_apic_exit)(void *, int);
+
+typedef void (*btf_trace_vector_config)(void *, unsigned int, unsigned int, unsigned int, unsigned int);
+
+typedef void (*btf_trace_vector_update)(void *, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int);
+
+typedef void (*btf_trace_vector_clear)(void *, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int);
+
+typedef void (*btf_trace_vector_reserve_managed)(void *, unsigned int, int);
+
+typedef void (*btf_trace_vector_reserve)(void *, unsigned int, int);
+
+typedef void (*btf_trace_vector_alloc)(void *, unsigned int, unsigned int, bool, int);
+
+typedef void (*btf_trace_vector_alloc_managed)(void *, unsigned int, unsigned int, int);
+
+typedef void (*btf_trace_vector_activate)(void *, unsigned int, bool, bool, bool);
+
+typedef void (*btf_trace_vector_deactivate)(void *, unsigned int, bool, bool, bool);
+
+typedef void (*btf_trace_vector_teardown)(void *, unsigned int, bool, bool);
+
+typedef void (*btf_trace_vector_setup)(void *, unsigned int, bool, int);
+
+typedef void (*btf_trace_vector_free_moved)(void *, unsigned int, unsigned int, unsigned int, bool);
+
+typedef struct {
+	u8 kvm_cpu_l1tf_flush_l1d;
+	unsigned int __nmi_count;
+	unsigned int apic_timer_irqs;
+	unsigned int irq_spurious_count;
+	unsigned int icr_read_retry_count;
+	unsigned int kvm_posted_intr_ipis;
+	unsigned int kvm_posted_intr_wakeup_ipis;
+	unsigned int kvm_posted_intr_nested_ipis;
+	unsigned int x86_platform_ipis;
+	unsigned int apic_perf_irqs;
+	unsigned int apic_irq_work_irqs;
+	unsigned int irq_resched_count;
+	unsigned int irq_call_count;
+	unsigned int irq_tlb_count;
+	unsigned int irq_thermal_count;
+	unsigned int irq_hv_callback_count;
+} irq_cpustat_t;
+
+struct trace_event_raw_x86_irq_vector {
+	struct trace_entry ent;
+	int vector;
+	char __data[0];
+};
+
+struct trace_event_raw_vector_config {
+	struct trace_entry ent;
+	unsigned int irq;
+	unsigned int vector;
+	unsigned int cpu;
+	unsigned int apicdest;
+	char __data[0];
+};
+
+struct trace_event_raw_vector_mod {
+	struct trace_entry ent;
+	unsigned int irq;
+	unsigned int vector;
+	unsigned int cpu;
+	unsigned int prev_vector;
+	unsigned int prev_cpu;
+	char __data[0];
+};
+
+struct trace_event_raw_vector_reserve {
+	struct trace_entry ent;
+	unsigned int irq;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_vector_alloc {
+	struct trace_entry ent;
+	unsigned int irq;
+	unsigned int vector;
+	bool reserved;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_vector_alloc_managed {
+	struct trace_entry ent;
+	unsigned int irq;
+	unsigned int vector;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_vector_activate {
+	struct trace_entry ent;
+	unsigned int irq;
+	bool is_managed;
+	bool can_reserve;
+	bool reserve;
+	char __data[0];
+};
+
+struct trace_event_raw_vector_teardown {
+	struct trace_entry ent;
+	unsigned int irq;
+	bool is_managed;
+	bool has_reserved;
+	char __data[0];
+};
+
+struct trace_event_raw_vector_setup {
+	struct trace_entry ent;
+	unsigned int irq;
+	bool is_legacy;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_vector_free_moved {
+	struct trace_entry ent;
+	unsigned int irq;
+	unsigned int cpu;
+	unsigned int vector;
+	bool is_managed;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_x86_irq_vector {};
+
+struct trace_event_data_offsets_vector_config {};
+
+struct trace_event_data_offsets_vector_mod {};
+
+struct trace_event_data_offsets_vector_reserve {};
+
+struct trace_event_data_offsets_vector_alloc {};
+
+struct trace_event_data_offsets_vector_alloc_managed {};
+
+struct trace_event_data_offsets_vector_activate {};
+
+struct trace_event_data_offsets_vector_teardown {};
+
+struct trace_event_data_offsets_vector_setup {};
+
+struct trace_event_data_offsets_vector_free_moved {};
+
+struct irq_stack {
+	char stack[16384];
+};
+
+struct estack_pages {
+	u32 offs;
+	u16 size;
+	u16 type;
+};
+
+enum lockdown_reason {
+	LOCKDOWN_NONE = 0,
+	LOCKDOWN_MODULE_SIGNATURE = 1,
+	LOCKDOWN_DEV_MEM = 2,
+	LOCKDOWN_EFI_TEST = 3,
+	LOCKDOWN_KEXEC = 4,
+	LOCKDOWN_HIBERNATION = 5,
+	LOCKDOWN_PCI_ACCESS = 6,
+	LOCKDOWN_IOPORT = 7,
+	LOCKDOWN_MSR = 8,
+	LOCKDOWN_ACPI_TABLES = 9,
+	LOCKDOWN_DEVICE_TREE = 10,
+	LOCKDOWN_PCMCIA_CIS = 11,
+	LOCKDOWN_TIOCSSERIAL = 12,
+	LOCKDOWN_MODULE_PARAMETERS = 13,
+	LOCKDOWN_MMIOTRACE = 14,
+	LOCKDOWN_DEBUGFS = 15,
+	LOCKDOWN_XMON_WR = 16,
+	LOCKDOWN_BPF_WRITE_USER = 17,
+	LOCKDOWN_DBG_WRITE_KERNEL = 18,
+	LOCKDOWN_RTAS_ERROR_INJECTION = 19,
+	LOCKDOWN_INTEGRITY_MAX = 20,
+	LOCKDOWN_KCORE = 21,
+	LOCKDOWN_KPROBES = 22,
+	LOCKDOWN_BPF_READ_KERNEL = 23,
+	LOCKDOWN_DBG_READ_KERNEL = 24,
+	LOCKDOWN_PERF = 25,
+	LOCKDOWN_TRACEFS = 26,
+	LOCKDOWN_XMON_RW = 27,
+	LOCKDOWN_XFRM_SECRET = 28,
+	LOCKDOWN_CONFIDENTIALITY_MAX = 29,
+};
+
+enum lockdep_ok {
+	LOCKDEP_STILL_OK = 0,
+	LOCKDEP_NOW_UNRELIABLE = 1,
+};
+
+typedef void (*btf_trace_nmi_handler)(void *, void *, s64, int);
+
+struct nmi_stats {
+	unsigned int normal;
+	unsigned int unknown;
+	unsigned int external;
+	unsigned int swallow;
+	unsigned long recv_jiffies;
+	unsigned long idt_seq;
+	unsigned long idt_nmi_seq;
+	unsigned long idt_ignored;
+	atomic_long_t idt_calls;
+	unsigned long idt_seq_snap;
+	unsigned long idt_nmi_seq_snap;
+	unsigned long idt_ignored_snap;
+	long idt_calls_snap;
+};
+
+enum nmi_states {
+	NMI_NOT_RUNNING = 0,
+	NMI_EXECUTING = 1,
+	NMI_LATCHED = 2,
+};
+
+struct nmi_desc {
+	raw_spinlock_t lock;
+	struct list_head head;
+};
+
+struct trace_event_raw_nmi_handler {
+	struct trace_entry ent;
+	void *handler;
+	s64 delta_ns;
+	int handled;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_nmi_handler {};
+
+typedef struct ldttss_desc ldt_desc;
+
+struct encoded_page;
+
+struct mmu_gather_batch {
+	struct mmu_gather_batch *next;
+	unsigned int nr;
+	unsigned int max;
+	struct encoded_page *encoded_pages[0];
+};
+
+struct mmu_table_batch;
+
+struct mmu_gather {
+	struct mm_struct *mm;
+	struct mmu_table_batch *batch;
+	unsigned long start;
+	unsigned long end;
+	unsigned int fullmm: 1;
+	unsigned int need_flush_all: 1;
+	unsigned int freed_tables: 1;
+	unsigned int delayed_rmap: 1;
+	unsigned int cleared_ptes: 1;
+	unsigned int cleared_pmds: 1;
+	unsigned int cleared_puds: 1;
+	unsigned int cleared_p4ds: 1;
+	unsigned int vma_exec: 1;
+	unsigned int vma_huge: 1;
+	unsigned int vma_pfn: 1;
+	unsigned int batch_count;
+	struct mmu_gather_batch *active;
+	struct mmu_gather_batch local;
+	struct page *__pages[8];
+};
+
+struct mmu_table_batch {
+	struct callback_head rcu;
+	unsigned int nr;
+	void *tables[0];
+};
+
+struct user_desc {
+	unsigned int entry_number;
+	unsigned int base_addr;
+	unsigned int limit;
+	unsigned int seg_32bit: 1;
+	unsigned int contents: 2;
+	unsigned int read_exec_only: 1;
+	unsigned int limit_in_pages: 1;
+	unsigned int seg_not_present: 1;
+	unsigned int useable: 1;
+	unsigned int lm: 1;
+};
+
+enum efi_secureboot_mode {
+	efi_secureboot_mode_unset = 0,
+	efi_secureboot_mode_unknown = 1,
+	efi_secureboot_mode_disabled = 2,
+	efi_secureboot_mode_enabled = 3,
+};
+
+struct setup_indirect {
+	__u32 type;
+	__u32 reserved;
+	__u64 len;
+	__u64 addr;
+};
+
+struct e820_entry {
+	u64 addr;
+	u64 size;
+	enum e820_type type;
+} __attribute__((packed));
+
+struct e820_table {
+	__u32 nr_entries;
+	struct e820_entry entries[131];
+};
+
+struct atomic_notifier_head {
+	spinlock_t lock;
+	struct notifier_block __attribute__((btf_type_tag("rcu"))) *head;
+};
+
+struct setup_data {
+	__u64 next;
+	__u32 type;
+	__u32 len;
+	__u8 data[0];
+};
+
+struct x86_init_resources {
+	void (*probe_roms)();
+	void (*reserve_resources)();
+	char * (*memory_setup)();
+	void (*dmi_setup)();
+};
+
+struct x86_init_mpparse {
+	void (*setup_ioapic_ids)();
+	void (*find_smp_config)();
+	void (*get_smp_config)(unsigned int);
+};
+
+struct x86_init_irqs {
+	void (*pre_vector_init)();
+	void (*intr_init)();
+	void (*intr_mode_select)();
+	void (*intr_mode_init)();
+	struct irq_domain * (*create_pci_msi_domain)();
+};
+
+struct x86_init_oem {
+	void (*arch_setup)();
+	void (*banner)();
+};
+
+struct x86_init_paging {
+	void (*pagetable_init)();
+};
+
+struct x86_init_timers {
+	void (*setup_percpu_clockev)();
+	void (*timer_init)();
+	void (*wallclock_init)();
+};
+
+struct x86_init_iommu {
+	int (*iommu_init)();
+};
+
+struct x86_init_pci {
+	int (*arch_init)();
+	int (*init)();
+	void (*init_irq)();
+	void (*fixup_irqs)();
+};
+
+struct x86_hyper_init {
+	void (*init_platform)();
+	void (*guest_late_init)();
+	bool (*x2apic_available)();
+	bool (*msi_ext_dest_id)();
+	void (*init_mem_mapping)();
+	void (*init_after_bootmem)();
+};
+
+struct x86_init_acpi {
+	void (*set_root_pointer)(u64);
+	u64 (*get_root_pointer)();
+	void (*reduced_hw_early_init)();
+};
+
+struct x86_init_ops {
+	struct x86_init_resources resources;
+	struct x86_init_mpparse mpparse;
+	struct x86_init_irqs irqs;
+	struct x86_init_oem oem;
+	struct x86_init_paging paging;
+	struct x86_init_timers timers;
+	struct x86_init_iommu iommu;
+	struct x86_init_pci pci;
+	struct x86_hyper_init hyper;
+	struct x86_init_acpi acpi;
+};
+
+struct x86_cpuinit_ops {
+	void (*setup_percpu_clockev)();
+	void (*early_percpu_clock_init)();
+	void (*fixup_cpu_id)(struct cpuinfo_x86 *, int);
+	bool parallel_bringup;
+};
+
+struct x86_legacy_devices {
+	int pnpbios;
+};
+
+struct x86_legacy_features {
+	enum x86_legacy_i8042_state i8042;
+	int rtc;
+	int warm_reset;
+	int no_vga;
+	int reserve_bios_regions;
+	struct x86_legacy_devices devices;
+};
+
+struct x86_hyper_runtime {
+	void (*pin_vcpu)(int);
+	void (*sev_es_hcall_prepare)(struct ghcb *, struct pt_regs *);
+	bool (*sev_es_hcall_finish)(struct ghcb *, struct pt_regs *);
+	bool (*is_private_mmio)(u64);
+};
+
+struct x86_guest {
+	bool (*enc_status_change_prepare)(unsigned long, int, bool);
+	bool (*enc_status_change_finish)(unsigned long, int, bool);
+	bool (*enc_tlb_flush_required)(bool);
+	bool (*enc_cache_flush_required)();
+};
+
+struct x86_platform_ops {
+	unsigned long (*calibrate_cpu)();
+	unsigned long (*calibrate_tsc)();
+	void (*get_wallclock)(struct timespec64 *);
+	int (*set_wallclock)(const struct timespec64 *);
+	void (*iommu_shutdown)();
+	bool (*is_untracked_pat_range)(u64, u64);
+	void (*nmi_init)();
+	unsigned char (*get_nmi_reason)();
+	void (*save_sched_clock_state)();
+	void (*restore_sched_clock_state)();
+	void (*apic_post_init)();
+	struct x86_legacy_features legacy;
+	void (*set_legacy_features)();
+	void (*realmode_reserve)();
+	void (*realmode_init)();
+	struct x86_hyper_runtime hyper;
+	struct x86_guest guest;
+};
+
+struct x86_apic_ops {
+	unsigned int (*io_apic_read)(unsigned int, unsigned int);
+	void (*restore)();
+};
+
+struct legacy_pic {
+	int nr_legacy_irqs;
+	struct irq_chip *chip;
+	void (*mask)(unsigned int);
+	void (*unmask)(unsigned int);
+	void (*mask_all)();
+	void (*restore_mask)();
+	void (*init)(int);
+	int (*probe)();
+	int (*irq_pending)(unsigned int);
+	void (*make_irq)(unsigned int);
+};
+
+enum {
+	IRQ_TYPE_NONE = 0,
+	IRQ_TYPE_EDGE_RISING = 1,
+	IRQ_TYPE_EDGE_FALLING = 2,
+	IRQ_TYPE_EDGE_BOTH = 3,
+	IRQ_TYPE_LEVEL_HIGH = 4,
+	IRQ_TYPE_LEVEL_LOW = 8,
+	IRQ_TYPE_LEVEL_MASK = 12,
+	IRQ_TYPE_SENSE_MASK = 15,
+	IRQ_TYPE_DEFAULT = 15,
+	IRQ_TYPE_PROBE = 16,
+	IRQ_LEVEL = 256,
+	IRQ_PER_CPU = 512,
+	IRQ_NOPROBE = 1024,
+	IRQ_NOREQUEST = 2048,
+	IRQ_NOAUTOEN = 4096,
+	IRQ_NO_BALANCING = 8192,
+	IRQ_MOVE_PCNTXT = 16384,
+	IRQ_NESTED_THREAD = 32768,
+	IRQ_NOTHREAD = 65536,
+	IRQ_PER_CPU_DEVID = 131072,
+	IRQ_IS_POLLED = 262144,
+	IRQ_DISABLE_UNLAZY = 524288,
+	IRQ_HIDDEN = 1048576,
+	IRQ_NO_DEBUG = 2097152,
+};
+
+typedef struct irq_desc *vector_irq_t[256];
+
+union text_poke_insn {
+	u8 text[5];
+	struct {
+		u8 opcode;
+		s32 disp;
+	} __attribute__((packed));
+};
+
+enum jump_label_type {
+	JUMP_LABEL_NOP = 0,
+	JUMP_LABEL_JMP = 1,
+};
+
+struct jump_label_patch {
+	const void *code;
+	int size;
+};
+
+struct stat64 {
+	unsigned long long st_dev;
+	unsigned char __pad0[4];
+	unsigned int __st_ino;
+	unsigned int st_mode;
+	unsigned int st_nlink;
+	unsigned int st_uid;
+	unsigned int st_gid;
+	unsigned long long st_rdev;
+	unsigned char __pad3[4];
+	long long st_size;
+	unsigned int st_blksize;
+	long long st_blocks;
+	unsigned int st_atime;
+	unsigned int st_atime_nsec;
+	unsigned int st_mtime;
+	unsigned int st_mtime_nsec;
+	unsigned int st_ctime;
+	unsigned int st_ctime_nsec;
+	unsigned long long st_ino;
+} __attribute__((packed));
+
+struct mmap_arg_struct32 {
+	unsigned int addr;
+	unsigned int len;
+	unsigned int prot;
+	unsigned int flags;
+	unsigned int fd;
+	unsigned int offset;
+};
+
+struct kernel_clone_args {
+	u64 flags;
+	int __attribute__((btf_type_tag("user"))) *pidfd;
+	int __attribute__((btf_type_tag("user"))) *child_tid;
+	int __attribute__((btf_type_tag("user"))) *parent_tid;
+	const char *name;
+	int exit_signal;
+	u32 kthread: 1;
+	u32 io_thread: 1;
+	u32 user_worker: 1;
+	u32 no_files: 1;
+	unsigned long stack;
+	unsigned long stack_size;
+	unsigned long tls;
+	pid_t *set_tid;
+	size_t set_tid_size;
+	int cgroup;
+	int idle;
+	int (*fn)(void *);
+	void *fn_arg;
+	struct cgroup *cgrp;
+	struct css_set *cset;
+};
+
+struct kstatfs {
+	long f_type;
+	long f_bsize;
+	u64 f_blocks;
+	u64 f_bfree;
+	u64 f_bavail;
+	u64 f_files;
+	u64 f_ffree;
+	__kernel_fsid_t f_fsid;
+	long f_namelen;
+	long f_frsize;
+	long f_flags;
+	long f_spare[4];
+};
+
+typedef u32 compat_size_t;
+
+struct sigcontext_32 {
+	__u16 gs;
+	__u16 __gsh;
+	__u16 fs;
+	__u16 __fsh;
+	__u16 es;
+	__u16 __esh;
+	__u16 ds;
+	__u16 __dsh;
+	__u32 di;
+	__u32 si;
+	__u32 bp;
+	__u32 sp;
+	__u32 bx;
+	__u32 dx;
+	__u32 cx;
+	__u32 ax;
+	__u32 trapno;
+	__u32 err;
+	__u32 ip;
+	__u16 cs;
+	__u16 __csh;
+	__u32 flags;
+	__u32 sp_at_signal;
+	__u16 ss;
+	__u16 __ssh;
+	__u32 fpstate;
+	__u32 oldmask;
+	__u32 cr2;
+};
+
+struct _fpreg {
+	__u16 significand[4];
+	__u16 exponent;
+};
+
+struct _fpxreg {
+	__u16 significand[4];
+	__u16 exponent;
+	__u16 padding[3];
+};
+
+struct _xmmreg {
+	__u32 element[4];
+};
+
+struct _fpx_sw_bytes {
+	__u32 magic1;
+	__u32 extended_size;
+	__u64 xfeatures;
+	__u32 xstate_size;
+	__u32 padding[7];
+};
+
+struct _fpstate_32 {
+	__u32 cw;
+	__u32 sw;
+	__u32 tag;
+	__u32 ipoff;
+	__u32 cssel;
+	__u32 dataoff;
+	__u32 datasel;
+	struct _fpreg _st[8];
+	__u16 status;
+	__u16 magic;
+	__u32 _fxsr_env[6];
+	__u32 mxcsr;
+	__u32 reserved;
+	struct _fpxreg _fxsr_st[8];
+	struct _xmmreg _xmm[8];
+	union {
+		__u32 padding1[44];
+		__u32 padding[44];
+	};
+	union {
+		__u32 padding2[12];
+		struct _fpx_sw_bytes sw_reserved;
+	};
+};
+
+struct sigframe_ia32 {
+	u32 pretcode;
+	int sig;
+	struct sigcontext_32 sc;
+	struct _fpstate_32 fpstate_unused;
+	unsigned int extramask[1];
+	char retcode[8];
+};
+
+typedef s32 compat_pid_t;
+
+typedef u32 __compat_uid32_t;
+
+typedef s32 compat_timer_t;
+
+typedef s32 compat_int_t;
+
+union compat_sigval {
+	compat_int_t sival_int;
+	compat_uptr_t sival_ptr;
+};
+
+typedef union compat_sigval compat_sigval_t;
+
+typedef s32 compat_clock_t;
+
+typedef u32 compat_ulong_t;
+
+struct compat_siginfo {
+	int si_signo;
+	int si_errno;
+	int si_code;
+	union {
+		int _pad[29];
+		struct {
+			compat_pid_t _pid;
+			__compat_uid32_t _uid;
+		} _kill;
+		struct {
+			compat_timer_t _tid;
+			int _overrun;
+			compat_sigval_t _sigval;
+		} _timer;
+		struct {
+			compat_pid_t _pid;
+			__compat_uid32_t _uid;
+			compat_sigval_t _sigval;
+		} _rt;
+		struct {
+			compat_pid_t _pid;
+			__compat_uid32_t _uid;
+			int _status;
+			compat_clock_t _utime;
+			compat_clock_t _stime;
+		} _sigchld;
+		struct {
+			compat_uptr_t _addr;
+			union {
+				int _trapno;
+				short _addr_lsb;
+				struct {
+					char _dummy_bnd[4];
+					compat_uptr_t _lower;
+					compat_uptr_t _upper;
+				} _addr_bnd;
+				struct {
+					char _dummy_pkey[4];
+					u32 _pkey;
+				} _addr_pkey;
+				struct {
+					compat_ulong_t _data;
+					u32 _type;
+					u32 _flags;
+				} _perf;
+			};
+		} _sigfault;
+		struct {
+			compat_long_t _band;
+			int _fd;
+		} _sigpoll;
+		struct {
+			compat_uptr_t _call_addr;
+			int _syscall;
+			unsigned int _arch;
+		} _sigsys;
+	} _sifields;
+};
+
+typedef struct compat_siginfo compat_siginfo_t;
+
+struct compat_sigaltstack {
+	compat_uptr_t ss_sp;
+	int ss_flags;
+	compat_size_t ss_size;
+};
+
+typedef struct compat_sigaltstack compat_stack_t;
+
+struct ucontext_ia32 {
+	unsigned int uc_flags;
+	unsigned int uc_link;
+	compat_stack_t uc_stack;
+	struct sigcontext_32 uc_mcontext;
+	compat_sigset_t uc_sigmask;
+};
+
+struct rt_sigframe_ia32 {
+	u32 pretcode;
+	int sig;
+	u32 pinfo;
+	u32 puc;
+	compat_siginfo_t info;
+	struct ucontext_ia32 uc;
+	char retcode[8];
+};
+
+enum align_flags {
+	ALIGN_VA_32 = 1,
+	ALIGN_VA_64 = 2,
+};
+
+struct vm_unmapped_area_info {
+	unsigned long flags;
+	unsigned long length;
+	unsigned long low_limit;
+	unsigned long high_limit;
+	unsigned long align_mask;
+	unsigned long align_offset;
+};
+
+struct kobj_attribute {
+	struct attribute attr;
+	ssize_t (*show)(struct kobject *, struct kobj_attribute *, char *);
+	ssize_t (*store)(struct kobject *, struct kobj_attribute *, const char *, size_t);
+};
+
+struct change_member {
+	struct e820_entry *entry;
+	unsigned long long addr;
+};
+
+enum {
+	IORES_DESC_NONE = 0,
+	IORES_DESC_CRASH_KERNEL = 1,
+	IORES_DESC_ACPI_TABLES = 2,
+	IORES_DESC_ACPI_NV_STORAGE = 3,
+	IORES_DESC_PERSISTENT_MEMORY = 4,
+	IORES_DESC_PERSISTENT_MEMORY_LEGACY = 5,
+	IORES_DESC_DEVICE_PRIVATE_MEMORY = 6,
+	IORES_DESC_RESERVED = 7,
+	IORES_DESC_SOFT_RESERVED = 8,
+	IORES_DESC_CXL = 9,
+};
+
+struct io_tlb_area;
+
+struct io_tlb_slot;
+
+struct io_tlb_pool {
+	phys_addr_t start;
+	phys_addr_t end;
+	void *vaddr;
+	unsigned long nslabs;
+	bool late_alloc;
+	unsigned int nareas;
+	unsigned int area_nslabs;
+	struct io_tlb_area *areas;
+	struct io_tlb_slot *slots;
+	struct list_head node;
+	struct callback_head rcu;
+	bool transient;
+};
+
+struct io_tlb_mem {
+	struct io_tlb_pool defpool;
+	unsigned long nslabs;
+	struct dentry *debugfs;
+	bool force_bounce;
+	bool for_alloc;
+	bool can_grow;
+	u64 phys_limit;
+	spinlock_t lock;
+	struct list_head pools;
+	struct work_struct dyn_alloc;
+	atomic_long_t total_used;
+	atomic_long_t used_hiwater;
+};
+
+struct sg_table {
+	struct scatterlist *sgl;
+	unsigned int nents;
+	unsigned int orig_nents;
+};
+
+struct scatterlist {
+	unsigned long page_link;
+	unsigned int offset;
+	unsigned int length;
+	dma_addr_t dma_address;
+	unsigned int dma_length;
+	unsigned int dma_flags;
+};
+
+enum {
+	NONE_FORCE_HPET_RESUME = 0,
+	OLD_ICH_FORCE_HPET_RESUME = 1,
+	ICH_FORCE_HPET_RESUME = 2,
+	VT8237_FORCE_HPET_RESUME = 3,
+	NVIDIA_FORCE_HPET_RESUME = 4,
+	ATI_FORCE_HPET_RESUME = 5,
+};
+
+enum dmi_field {
+	DMI_NONE = 0,
+	DMI_BIOS_VENDOR = 1,
+	DMI_BIOS_VERSION = 2,
+	DMI_BIOS_DATE = 3,
+	DMI_BIOS_RELEASE = 4,
+	DMI_EC_FIRMWARE_RELEASE = 5,
+	DMI_SYS_VENDOR = 6,
+	DMI_PRODUCT_NAME = 7,
+	DMI_PRODUCT_VERSION = 8,
+	DMI_PRODUCT_SERIAL = 9,
+	DMI_PRODUCT_UUID = 10,
+	DMI_PRODUCT_SKU = 11,
+	DMI_PRODUCT_FAMILY = 12,
+	DMI_BOARD_VENDOR = 13,
+	DMI_BOARD_NAME = 14,
+	DMI_BOARD_VERSION = 15,
+	DMI_BOARD_SERIAL = 16,
+	DMI_BOARD_ASSET_TAG = 17,
+	DMI_CHASSIS_VENDOR = 18,
+	DMI_CHASSIS_TYPE = 19,
+	DMI_CHASSIS_VERSION = 20,
+	DMI_CHASSIS_SERIAL = 21,
+	DMI_CHASSIS_ASSET_TAG = 22,
+	DMI_STRING_MAX = 23,
+	DMI_OEM_STRING = 24,
+};
+
+struct cpu {
+	int node_id;
+	int hotpluggable;
+	struct device dev;
+};
+
+struct x86_cpu {
+	struct cpu cpu;
+};
+
+struct text_poke_loc {
+	s32 rel_addr;
+	s32 disp;
+	u8 len;
+	u8 opcode;
+	const u8 text[5];
+	u8 old;
+};
+
+enum cfi_mode {
+	CFI_DEFAULT = 0,
+	CFI_OFF = 1,
+	CFI_KCFI = 2,
+	CFI_FINEIBT = 3,
+};
+
+struct bp_patching_desc {
+	struct text_poke_loc *vec;
+	int nr_entries;
+	atomic_t refs;
+};
+
+struct smp_alt_module {
+	struct module *mod;
+	char *name;
+	const s32 *locks;
+	const s32 *locks_end;
+	u8 *text;
+	u8 *text_end;
+	struct list_head next;
+};
+
+typedef u8 retpoline_thunk_t[32];
+
+typedef struct {
+	struct mm_struct *mm;
+} temp_mm_state_t;
+
+struct paravirt_patch_site {
+	u8 *instr;
+	u8 type;
+	u8 len;
+};
+
+typedef void text_poke_f(void *, const void *, size_t);
+
+struct die_args {
+	struct pt_regs *regs;
+	const char *str;
+	long err;
+	int trapnr;
+	int signr;
+};
+
+enum clock_event_state {
+	CLOCK_EVT_STATE_DETACHED = 0,
+	CLOCK_EVT_STATE_SHUTDOWN = 1,
+	CLOCK_EVT_STATE_PERIODIC = 2,
+	CLOCK_EVT_STATE_ONESHOT = 3,
+	CLOCK_EVT_STATE_ONESHOT_STOPPED = 4,
+};
+
+struct clock_event_device {
+	void (*event_handler)(struct clock_event_device *);
+	int (*set_next_event)(unsigned long, struct clock_event_device *);
+	int (*set_next_ktime)(ktime_t, struct clock_event_device *);
+	ktime_t next_event;
+	u64 max_delta_ns;
+	u64 min_delta_ns;
+	u32 mult;
+	u32 shift;
+	enum clock_event_state state_use_accessors;
+	unsigned int features;
+	unsigned long retries;
+	int (*set_state_periodic)(struct clock_event_device *);
+	int (*set_state_oneshot)(struct clock_event_device *);
+	int (*set_state_oneshot_stopped)(struct clock_event_device *);
+	int (*set_state_shutdown)(struct clock_event_device *);
+	int (*tick_resume)(struct clock_event_device *);
+	void (*broadcast)(const struct cpumask *);
+	void (*suspend)(struct clock_event_device *);
+	void (*resume)(struct clock_event_device *);
+	unsigned long min_delta_ticks;
+	unsigned long max_delta_ticks;
+	const char *name;
+	int rating;
+	int irq;
+	int bound_on;
+	const struct cpumask *cpumask;
+	struct list_head list;
+	struct module *owner;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+enum {
+	HW_BREAKPOINT_EMPTY = 0,
+	HW_BREAKPOINT_R = 1,
+	HW_BREAKPOINT_W = 2,
+	HW_BREAKPOINT_RW = 3,
+	HW_BREAKPOINT_X = 4,
+	HW_BREAKPOINT_INVALID = 7,
+};
+
+enum {
+	HW_BREAKPOINT_LEN_1 = 1,
+	HW_BREAKPOINT_LEN_2 = 2,
+	HW_BREAKPOINT_LEN_3 = 3,
+	HW_BREAKPOINT_LEN_4 = 4,
+	HW_BREAKPOINT_LEN_5 = 5,
+	HW_BREAKPOINT_LEN_6 = 6,
+	HW_BREAKPOINT_LEN_7 = 7,
+	HW_BREAKPOINT_LEN_8 = 8,
+};
+
+struct tlb_context {
+	u64 ctx_id;
+	u64 tlb_gen;
+};
+
+struct tlb_state {
+	struct mm_struct *loaded_mm;
+	union {
+		struct mm_struct *last_user_mm;
+		unsigned long last_user_mm_spec;
+	};
+	u16 loaded_mm_asid;
+	u16 next_asid;
+	bool invalidate_other;
+	unsigned short user_pcid_flush_mask;
+	unsigned long cr4;
+	struct tlb_context ctxs[6];
+};
+
+typedef struct {
+	seqcount_t seqcount;
+} seqcount_latch_t;
+
+struct cyc2ns {
+	struct cyc2ns_data data[2];
+	seqcount_latch_t seq;
+};
+
+typedef unsigned long long cycles_t;
+
+typedef unsigned int u_int;
+
+struct system_counterval_t {
+	u64 cycles;
+	struct clocksource *cs;
+};
+
+struct muldiv {
+	u32 multiplier;
+	u32 divider;
+};
+
+struct freq_desc {
+	bool use_msr_plat;
+	struct muldiv muldiv[16];
+	u32 freqs[16];
+	u32 mask;
+};
+
+struct dmi_strmatch {
+	unsigned char slot: 7;
+	unsigned char exact_match: 1;
+	char substr[79];
+};
+
+struct dmi_system_id {
+	int (*callback)(const struct dmi_system_id *);
+	const char *ident;
+	struct dmi_strmatch matches[4];
+	void *driver_data;
+};
+
+struct mfd_cell;
+
+struct pdev_archdata {};
+
+struct platform_device_id;
+
+struct platform_device {
+	const char *name;
+	int id;
+	bool id_auto;
+	struct device dev;
+	u64 platform_dma_mask;
+	struct device_dma_parameters dma_parms;
+	u32 num_resources;
+	struct resource *resource;
+	const struct platform_device_id *id_entry;
+	const char *driver_override;
+	struct mfd_cell *mfd_cell;
+	struct pdev_archdata archdata;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct platform_device_id {
+	char name[20];
+	kernel_ulong_t driver_data;
+};
+
+struct pnp_protocol;
+
+struct pnp_card;
+
+struct pnp_driver;
+
+struct pnp_card_link;
+
+struct pnp_id;
+
+struct pnp_dev {
+	struct device dev;
+	u64 dma_mask;
+	unsigned int number;
+	int status;
+	struct list_head global_list;
+	struct list_head protocol_list;
+	struct list_head card_list;
+	struct list_head rdev_list;
+	struct pnp_protocol *protocol;
+	struct pnp_card *card;
+	struct pnp_driver *driver;
+	struct pnp_card_link *card_link;
+	struct pnp_id *id;
+	int active;
+	int capabilities;
+	unsigned int num_dependent_sets;
+	struct list_head resources;
+	struct list_head options;
+	char name[50];
+	int flags;
+	struct proc_dir_entry *procent;
+	void *data;
+};
+
+struct pnp_protocol {
+	struct list_head protocol_list;
+	char *name;
+	int (*get)(struct pnp_dev *);
+	int (*set)(struct pnp_dev *);
+	int (*disable)(struct pnp_dev *);
+	bool (*can_wakeup)(struct pnp_dev *);
+	int (*suspend)(struct pnp_dev *, pm_message_t);
+	int (*resume)(struct pnp_dev *);
+	unsigned char number;
+	struct device dev;
+	struct list_head cards;
+	struct list_head devices;
+};
+
+struct pnp_card {
+	struct device dev;
+	unsigned char number;
+	struct list_head global_list;
+	struct list_head protocol_list;
+	struct list_head devices;
+	struct pnp_protocol *protocol;
+	struct pnp_id *id;
+	char name[50];
+	unsigned char pnpver;
+	unsigned char productver;
+	unsigned int serial;
+	unsigned char checksum;
+	struct proc_dir_entry *procdir;
+};
+
+struct pnp_id {
+	char id[8];
+	struct pnp_id *next;
+};
+
+struct pnp_device_id;
+
+struct pnp_driver {
+	const char *name;
+	const struct pnp_device_id *id_table;
+	unsigned int flags;
+	int (*probe)(struct pnp_dev *, const struct pnp_device_id *);
+	void (*remove)(struct pnp_dev *);
+	void (*shutdown)(struct pnp_dev *);
+	int (*suspend)(struct pnp_dev *, pm_message_t);
+	int (*resume)(struct pnp_dev *);
+	struct device_driver driver;
+};
+
+struct pnp_device_id {
+	__u8 id[8];
+	kernel_ulong_t driver_data;
+};
+
+struct pnp_card_driver;
+
+struct pnp_card_link {
+	struct pnp_card *card;
+	struct pnp_card_driver *driver;
+	void *driver_data;
+	pm_message_t pm_state;
+};
+
+struct pnp_card_device_id;
+
+struct pnp_card_driver {
+	struct list_head global_list;
+	char *name;
+	const struct pnp_card_device_id *id_table;
+	unsigned int flags;
+	int (*probe)(struct pnp_card_link *, const struct pnp_card_device_id *);
+	void (*remove)(struct pnp_card_link *);
+	int (*suspend)(struct pnp_card_link *, pm_message_t);
+	int (*resume)(struct pnp_card_link *);
+	struct pnp_driver link;
+};
+
+struct pnp_card_device_id {
+	__u8 id[8];
+	kernel_ulong_t driver_data;
+	struct {
+		__u8 id[8];
+	} devs[8];
+};
+
+struct rtc_time {
+	int tm_sec;
+	int tm_min;
+	int tm_hour;
+	int tm_mday;
+	int tm_mon;
+	int tm_year;
+	int tm_wday;
+	int tm_yday;
+	int tm_isdst;
+};
+
+enum insn_type {
+	CALL = 0,
+	NOP = 1,
+	JMP = 2,
+	RET = 3,
+	JCC = 4,
+};
+
+struct ssb_state {
+	struct ssb_state *shared_state;
+	raw_spinlock_t lock;
+	unsigned int disable_state;
+	unsigned long local_state;
+};
+
+enum idle_boot_override {
+	IDLE_NO_OVERRIDE = 0,
+	IDLE_HALT = 1,
+	IDLE_NOMWAIT = 2,
+	IDLE_POLL = 3,
+};
+
+enum tick_broadcast_state {
+	TICK_BROADCAST_EXIT = 0,
+	TICK_BROADCAST_ENTER = 1,
+};
+
+enum tick_broadcast_mode {
+	TICK_BROADCAST_OFF = 0,
+	TICK_BROADCAST_ON = 1,
+	TICK_BROADCAST_FORCE = 2,
+};
+
+struct inactive_task_frame {
+	unsigned long r15;
+	unsigned long r14;
+	unsigned long r13;
+	unsigned long r12;
+	unsigned long bx;
+	unsigned long bp;
+	unsigned long ret_addr;
+};
+
+struct fork_frame {
+	struct inactive_task_frame frame;
+	struct pt_regs regs;
+};
+
+typedef void (*btf_trace_x86_fpu_before_save)(void *, struct fpu *);
+
+typedef void (*btf_trace_x86_fpu_after_save)(void *, struct fpu *);
+
+typedef void (*btf_trace_x86_fpu_before_restore)(void *, struct fpu *);
+
+typedef void (*btf_trace_x86_fpu_after_restore)(void *, struct fpu *);
+
+typedef void (*btf_trace_x86_fpu_regs_activated)(void *, struct fpu *);
+
+typedef void (*btf_trace_x86_fpu_regs_deactivated)(void *, struct fpu *);
+
+typedef void (*btf_trace_x86_fpu_init_state)(void *, struct fpu *);
+
+typedef void (*btf_trace_x86_fpu_dropped)(void *, struct fpu *);
+
+typedef void (*btf_trace_x86_fpu_copy_src)(void *, struct fpu *);
+
+typedef void (*btf_trace_x86_fpu_copy_dst)(void *, struct fpu *);
+
+typedef void (*btf_trace_x86_fpu_xstate_check_failed)(void *, struct fpu *);
+
+struct fpu_state_config {
+	unsigned int max_size;
+	unsigned int default_size;
+	u64 max_features;
+	u64 default_features;
+	u64 legacy_features;
+};
+
+enum xstate_copy_mode {
+	XSTATE_COPY_FP = 0,
+	XSTATE_COPY_FX = 1,
+	XSTATE_COPY_XSAVE = 2,
+};
+
+struct trace_event_raw_x86_fpu {
+	struct trace_entry ent;
+	struct fpu *fpu;
+	bool load_fpu;
+	u64 xfeatures;
+	u64 xcomp_bv;
+	char __data[0];
+};
+
+struct membuf {
+	void *p;
+	size_t left;
+};
+
+struct trace_event_data_offsets_x86_fpu {};
+
+struct user_i387_ia32_struct {
+	u32 cwd;
+	u32 swd;
+	u32 twd;
+	u32 fip;
+	u32 fcs;
+	u32 foo;
+	u32 fos;
+	u32 st_space[20];
+};
+
+struct user_regset;
+
+typedef int user_regset_get2_fn(struct task_struct *, const struct user_regset *, struct membuf);
+
+typedef int user_regset_set_fn(struct task_struct *, const struct user_regset *, unsigned int, unsigned int, const void *, const void __attribute__((btf_type_tag("user"))) *);
+
+typedef int user_regset_active_fn(struct task_struct *, const struct user_regset *);
+
+typedef int user_regset_writeback_fn(struct task_struct *, const struct user_regset *, int);
+
+struct user_regset {
+	user_regset_get2_fn *regset_get;
+	user_regset_set_fn *set;
+	user_regset_active_fn *active;
+	user_regset_writeback_fn *writeback;
+	unsigned int n;
+	unsigned int size;
+	unsigned int align;
+	unsigned int bias;
+	unsigned int core_note_type;
+};
+
+struct pkru_state {
+	u32 pkru;
+	u32 pad;
+};
+
+struct pt_regs_offset {
+	const char *name;
+	int offset;
+};
+
+struct user_regset_view {
+	const char *name;
+	const struct user_regset *regsets;
+	unsigned int n;
+	u32 e_flags;
+	u16 e_machine;
+	u8 ei_osabi;
+};
+
+enum x86_regset_32 {
+	REGSET32_GENERAL = 0,
+	REGSET32_FP = 1,
+	REGSET32_XFP = 2,
+	REGSET32_XSTATE = 3,
+	REGSET32_TLS = 4,
+	REGSET32_IOPERM = 5,
+};
+
+enum x86_regset_64 {
+	REGSET64_GENERAL = 0,
+	REGSET64_FP = 1,
+	REGSET64_IOPERM = 2,
+	REGSET64_XSTATE = 3,
+	REGSET64_SSP = 4,
+};
+
+struct stack_frame_user {
+	const void __attribute__((btf_type_tag("user"))) *next_fp;
+	unsigned long ret_addr;
+};
+
+typedef bool (*stack_trace_consume_fn)(void *, unsigned long);
+
+struct _cache_table {
+	unsigned char descriptor;
+	char cache_type;
+	short size;
+};
+
+enum cache_type {
+	CACHE_TYPE_NOCACHE = 0,
+	CACHE_TYPE_INST = 1,
+	CACHE_TYPE_DATA = 2,
+	CACHE_TYPE_SEPARATE = 3,
+	CACHE_TYPE_UNIFIED = 4,
+};
+
+enum _cache_type {
+	CTYPE_NULL = 0,
+	CTYPE_DATA = 1,
+	CTYPE_INST = 2,
+	CTYPE_UNIFIED = 3,
+};
+
+union _cpuid4_leaf_eax {
+	struct {
+		enum _cache_type type: 5;
+		unsigned int level: 3;
+		unsigned int is_self_initializing: 1;
+		unsigned int is_fully_associative: 1;
+		unsigned int reserved: 4;
+		unsigned int num_threads_sharing: 12;
+		unsigned int num_cores_on_die: 6;
+	} split;
+	u32 full;
+};
+
+union _cpuid4_leaf_ebx {
+	struct {
+		unsigned int coherency_line_size: 12;
+		unsigned int physical_line_partition: 10;
+		unsigned int ways_of_associativity: 10;
+	} split;
+	u32 full;
+};
+
+union _cpuid4_leaf_ecx {
+	struct {
+		unsigned int number_of_sets: 32;
+	} split;
+	u32 full;
+};
+
+union l1_cache {
+	struct {
+		unsigned int line_size: 8;
+		unsigned int lines_per_tag: 8;
+		unsigned int assoc: 8;
+		unsigned int size_in_kb: 8;
+	};
+	unsigned int val;
+};
+
+union l2_cache {
+	struct {
+		unsigned int line_size: 8;
+		unsigned int lines_per_tag: 4;
+		unsigned int assoc: 4;
+		unsigned int size_in_kb: 16;
+	};
+	unsigned int val;
+};
+
+union l3_cache {
+	struct {
+		unsigned int line_size: 8;
+		unsigned int lines_per_tag: 4;
+		unsigned int assoc: 4;
+		unsigned int res: 2;
+		unsigned int size_encoded: 14;
+	};
+	unsigned int val;
+};
+
+struct cacheinfo;
+
+struct cpu_cacheinfo {
+	struct cacheinfo *info_list;
+	unsigned int num_levels;
+	unsigned int num_leaves;
+	bool cpu_map_populated;
+	bool early_ci_levels;
+};
+
+struct cacheinfo {
+	unsigned int id;
+	enum cache_type type;
+	unsigned int level;
+	unsigned int coherency_line_size;
+	unsigned int number_of_sets;
+	unsigned int ways_of_associativity;
+	unsigned int physical_line_partition;
+	unsigned int size;
+	cpumask_t shared_cpu_map;
+	unsigned int attributes;
+	void *fw_token;
+	bool disable_sysfs;
+	void *priv;
+};
+
+struct amd_northbridge;
+
+struct _cpuid4_info_regs {
+	union _cpuid4_leaf_eax eax;
+	union _cpuid4_leaf_ebx ebx;
+	union _cpuid4_leaf_ecx ecx;
+	unsigned int id;
+	unsigned long size;
+	struct amd_northbridge *nb;
+};
+
+struct amd_l3_cache {
+	unsigned int indices;
+	u8 subcaches[4];
+};
+
+struct threshold_bank;
+
+struct amd_northbridge {
+	struct pci_dev *root;
+	struct pci_dev *misc;
+	struct pci_dev *link;
+	struct amd_l3_cache l3_cache;
+	struct threshold_bank *bank4;
+};
+
+struct threshold_block;
+
+struct threshold_bank {
+	struct kobject *kobj;
+	struct threshold_block *blocks;
+	refcount_t cpus;
+	unsigned int shared;
+};
+
+struct threshold_block {
+	unsigned int block;
+	unsigned int bank;
+	unsigned int cpu;
+	u32 address;
+	u16 interrupt_enable;
+	bool interrupt_capable;
+	u16 threshold_limit;
+	struct kobject kobj;
+	struct list_head miscj;
+};
+
+typedef int (*cpu_stop_fn_t)(void *);
+
+struct cpuid_bit {
+	u16 feature;
+	u8 reg;
+	u8 bit;
+	u32 level;
+	u32 sub_leaf;
+};
+
+struct pcpu_hot {
+	union {
+		struct {
+			struct task_struct *current_task;
+			int preempt_count;
+			int cpu_number;
+			u64 call_depth;
+			unsigned long top_of_stack;
+			void *hardirq_stack_ptr;
+			u16 softirq_pending;
+			bool hardirq_stack_inuse;
+		};
+		u8 pad[64];
+	};
+};
+
+struct fixed_percpu_data {
+	char gs_base[40];
+	unsigned long stack_canary;
+};
+
+struct cpu_dev {
+	const char *c_vendor;
+	const char *c_ident[2];
+	void (*c_early_init)(struct cpuinfo_x86 *);
+	void (*c_bsp_init)(struct cpuinfo_x86 *);
+	void (*c_init)(struct cpuinfo_x86 *);
+	void (*c_identify)(struct cpuinfo_x86 *);
+	void (*c_detect_tlb)(struct cpuinfo_x86 *);
+	int c_x86_vendor;
+};
+
+struct cpuid_dependent_feature {
+	u32 feature;
+	u32 level;
+};
+
+struct ppin_info {
+	int feature;
+	int msr_ppin_ctl;
+	int msr_ppin;
+};
+
+enum tlb_infos {
+	ENTRIES = 0,
+	NR_INFO = 1,
+};
+
+enum {
+	SAMPLES = 8,
+	MIN_CHANGE = 5,
+};
+
+enum spectre_v2_mitigation {
+	SPECTRE_V2_NONE = 0,
+	SPECTRE_V2_RETPOLINE = 1,
+	SPECTRE_V2_LFENCE = 2,
+	SPECTRE_V2_EIBRS = 3,
+	SPECTRE_V2_EIBRS_RETPOLINE = 4,
+	SPECTRE_V2_EIBRS_LFENCE = 5,
+	SPECTRE_V2_IBRS = 6,
+};
+
+enum rfds_mitigations {
+	RFDS_MITIGATION_OFF = 0,
+	RFDS_MITIGATION_VERW = 1,
+	RFDS_MITIGATION_UCODE_NEEDED = 2,
+};
+
+enum srbds_mitigations {
+	SRBDS_MITIGATION_OFF = 0,
+	SRBDS_MITIGATION_UCODE_NEEDED = 1,
+	SRBDS_MITIGATION_FULL = 2,
+	SRBDS_MITIGATION_TSX_OFF = 3,
+	SRBDS_MITIGATION_HYPERVISOR = 4,
+};
+
+enum l1d_flush_mitigations {
+	L1D_FLUSH_OFF = 0,
+	L1D_FLUSH_ON = 1,
+};
+
+enum gds_mitigations {
+	GDS_MITIGATION_OFF = 0,
+	GDS_MITIGATION_UCODE_NEEDED = 1,
+	GDS_MITIGATION_FORCE = 2,
+	GDS_MITIGATION_FULL = 3,
+	GDS_MITIGATION_FULL_LOCKED = 4,
+	GDS_MITIGATION_HYPERVISOR = 5,
+};
+
+enum spectre_v1_mitigation {
+	SPECTRE_V1_MITIGATION_NONE = 0,
+	SPECTRE_V1_MITIGATION_AUTO = 1,
+};
+
+enum retbleed_mitigation_cmd {
+	RETBLEED_CMD_OFF = 0,
+	RETBLEED_CMD_AUTO = 1,
+	RETBLEED_CMD_UNRET = 2,
+	RETBLEED_CMD_IBPB = 3,
+	RETBLEED_CMD_STUFF = 4,
+};
+
+enum retbleed_mitigation {
+	RETBLEED_MITIGATION_NONE = 0,
+	RETBLEED_MITIGATION_UNRET = 1,
+	RETBLEED_MITIGATION_IBPB = 2,
+	RETBLEED_MITIGATION_IBRS = 3,
+	RETBLEED_MITIGATION_EIBRS = 4,
+	RETBLEED_MITIGATION_STUFF = 5,
+};
+
+enum spectre_v2_mitigation_cmd {
+	SPECTRE_V2_CMD_NONE = 0,
+	SPECTRE_V2_CMD_AUTO = 1,
+	SPECTRE_V2_CMD_FORCE = 2,
+	SPECTRE_V2_CMD_RETPOLINE = 3,
+	SPECTRE_V2_CMD_RETPOLINE_GENERIC = 4,
+	SPECTRE_V2_CMD_RETPOLINE_LFENCE = 5,
+	SPECTRE_V2_CMD_EIBRS = 6,
+	SPECTRE_V2_CMD_EIBRS_RETPOLINE = 7,
+	SPECTRE_V2_CMD_EIBRS_LFENCE = 8,
+	SPECTRE_V2_CMD_IBRS = 9,
+};
+
+enum spectre_v2_user_cmd {
+	SPECTRE_V2_USER_CMD_NONE = 0,
+	SPECTRE_V2_USER_CMD_AUTO = 1,
+	SPECTRE_V2_USER_CMD_FORCE = 2,
+	SPECTRE_V2_USER_CMD_PRCTL = 3,
+	SPECTRE_V2_USER_CMD_PRCTL_IBPB = 4,
+	SPECTRE_V2_USER_CMD_SECCOMP = 5,
+	SPECTRE_V2_USER_CMD_SECCOMP_IBPB = 6,
+};
+
+enum bhi_mitigations {
+	BHI_MITIGATION_OFF = 0,
+	BHI_MITIGATION_ON = 1,
+};
+
+enum spectre_v2_user_mitigation {
+	SPECTRE_V2_USER_NONE = 0,
+	SPECTRE_V2_USER_STRICT = 1,
+	SPECTRE_V2_USER_STRICT_PREFERRED = 2,
+	SPECTRE_V2_USER_PRCTL = 3,
+	SPECTRE_V2_USER_SECCOMP = 4,
+};
+
+enum mds_mitigations {
+	MDS_MITIGATION_OFF = 0,
+	MDS_MITIGATION_FULL = 1,
+	MDS_MITIGATION_VMWERV = 2,
+};
+
+enum taa_mitigations {
+	TAA_MITIGATION_OFF = 0,
+	TAA_MITIGATION_UCODE_NEEDED = 1,
+	TAA_MITIGATION_VERW = 2,
+	TAA_MITIGATION_TSX_DISABLED = 3,
+};
+
+enum mmio_mitigations {
+	MMIO_MITIGATION_OFF = 0,
+	MMIO_MITIGATION_UCODE_NEEDED = 1,
+	MMIO_MITIGATION_VERW = 2,
+};
+
+enum ssb_mitigation_cmd {
+	SPEC_STORE_BYPASS_CMD_NONE = 0,
+	SPEC_STORE_BYPASS_CMD_AUTO = 1,
+	SPEC_STORE_BYPASS_CMD_ON = 2,
+	SPEC_STORE_BYPASS_CMD_PRCTL = 3,
+	SPEC_STORE_BYPASS_CMD_SECCOMP = 4,
+};
+
+enum ssb_mitigation {
+	SPEC_STORE_BYPASS_NONE = 0,
+	SPEC_STORE_BYPASS_DISABLE = 1,
+	SPEC_STORE_BYPASS_PRCTL = 2,
+	SPEC_STORE_BYPASS_SECCOMP = 3,
+};
+
+enum srso_mitigation_cmd {
+	SRSO_CMD_OFF = 0,
+	SRSO_CMD_MICROCODE = 1,
+	SRSO_CMD_SAFE_RET = 2,
+	SRSO_CMD_IBPB = 3,
+	SRSO_CMD_IBPB_ON_VMEXIT = 4,
+};
+
+enum srso_mitigation {
+	SRSO_MITIGATION_NONE = 0,
+	SRSO_MITIGATION_UCODE_NEEDED = 1,
+	SRSO_MITIGATION_SAFE_RET_UCODE_NEEDED = 2,
+	SRSO_MITIGATION_MICROCODE = 3,
+	SRSO_MITIGATION_SAFE_RET = 4,
+	SRSO_MITIGATION_IBPB = 5,
+	SRSO_MITIGATION_IBPB_ON_VMEXIT = 6,
+};
+
+enum bpf_reg_type {
+	NOT_INIT = 0,
+	SCALAR_VALUE = 1,
+	PTR_TO_CTX = 2,
+	CONST_PTR_TO_MAP = 3,
+	PTR_TO_MAP_VALUE = 4,
+	PTR_TO_MAP_KEY = 5,
+	PTR_TO_STACK = 6,
+	PTR_TO_PACKET_META = 7,
+	PTR_TO_PACKET = 8,
+	PTR_TO_PACKET_END = 9,
+	PTR_TO_FLOW_KEYS = 10,
+	PTR_TO_SOCKET = 11,
+	PTR_TO_SOCK_COMMON = 12,
+	PTR_TO_TCP_SOCK = 13,
+	PTR_TO_TP_BUFFER = 14,
+	PTR_TO_XDP_SOCK = 15,
+	PTR_TO_BTF_ID = 16,
+	PTR_TO_MEM = 17,
+	PTR_TO_BUF = 18,
+	PTR_TO_FUNC = 19,
+	CONST_PTR_TO_DYNPTR = 20,
+	__BPF_REG_TYPE_MAX = 21,
+	PTR_TO_MAP_VALUE_OR_NULL = 260,
+	PTR_TO_SOCKET_OR_NULL = 267,
+	PTR_TO_SOCK_COMMON_OR_NULL = 268,
+	PTR_TO_TCP_SOCK_OR_NULL = 269,
+	PTR_TO_BTF_ID_OR_NULL = 272,
+	__BPF_REG_TYPE_LIMIT = 33554431,
+};
+
+enum bpf_cgroup_iter_order {
+	BPF_CGROUP_ITER_ORDER_UNSPEC = 0,
+	BPF_CGROUP_ITER_SELF_ONLY = 1,
+	BPF_CGROUP_ITER_DESCENDANTS_PRE = 2,
+	BPF_CGROUP_ITER_DESCENDANTS_POST = 3,
+	BPF_CGROUP_ITER_ANCESTORS_UP = 4,
+};
+
+enum bpf_iter_task_type {
+	BPF_TASK_ITER_ALL = 0,
+	BPF_TASK_ITER_TID = 1,
+	BPF_TASK_ITER_TGID = 2,
+};
+
+enum bpf_map_type {
+	BPF_MAP_TYPE_UNSPEC = 0,
+	BPF_MAP_TYPE_HASH = 1,
+	BPF_MAP_TYPE_ARRAY = 2,
+	BPF_MAP_TYPE_PROG_ARRAY = 3,
+	BPF_MAP_TYPE_PERF_EVENT_ARRAY = 4,
+	BPF_MAP_TYPE_PERCPU_HASH = 5,
+	BPF_MAP_TYPE_PERCPU_ARRAY = 6,
+	BPF_MAP_TYPE_STACK_TRACE = 7,
+	BPF_MAP_TYPE_CGROUP_ARRAY = 8,
+	BPF_MAP_TYPE_LRU_HASH = 9,
+	BPF_MAP_TYPE_LRU_PERCPU_HASH = 10,
+	BPF_MAP_TYPE_LPM_TRIE = 11,
+	BPF_MAP_TYPE_ARRAY_OF_MAPS = 12,
+	BPF_MAP_TYPE_HASH_OF_MAPS = 13,
+	BPF_MAP_TYPE_DEVMAP = 14,
+	BPF_MAP_TYPE_SOCKMAP = 15,
+	BPF_MAP_TYPE_CPUMAP = 16,
+	BPF_MAP_TYPE_XSKMAP = 17,
+	BPF_MAP_TYPE_SOCKHASH = 18,
+	BPF_MAP_TYPE_CGROUP_STORAGE_DEPRECATED = 19,
+	BPF_MAP_TYPE_CGROUP_STORAGE = 19,
+	BPF_MAP_TYPE_REUSEPORT_SOCKARRAY = 20,
+	BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE = 21,
+	BPF_MAP_TYPE_QUEUE = 22,
+	BPF_MAP_TYPE_STACK = 23,
+	BPF_MAP_TYPE_SK_STORAGE = 24,
+	BPF_MAP_TYPE_DEVMAP_HASH = 25,
+	BPF_MAP_TYPE_STRUCT_OPS = 26,
+	BPF_MAP_TYPE_RINGBUF = 27,
+	BPF_MAP_TYPE_INODE_STORAGE = 28,
+	BPF_MAP_TYPE_TASK_STORAGE = 29,
+	BPF_MAP_TYPE_BLOOM_FILTER = 30,
+	BPF_MAP_TYPE_USER_RINGBUF = 31,
+	BPF_MAP_TYPE_CGRP_STORAGE = 32,
+};
+
+enum btf_field_type {
+	BPF_SPIN_LOCK = 1,
+	BPF_TIMER = 2,
+	BPF_KPTR_UNREF = 4,
+	BPF_KPTR_REF = 8,
+	BPF_KPTR = 12,
+	BPF_LIST_HEAD = 16,
+	BPF_LIST_NODE = 32,
+	BPF_RB_ROOT = 64,
+	BPF_RB_NODE = 128,
+	BPF_GRAPH_NODE_OR_ROOT = 240,
+	BPF_REFCOUNT = 256,
+};
+
+enum cpuhp_smt_control {
+	CPU_SMT_ENABLED = 0,
+	CPU_SMT_DISABLED = 1,
+	CPU_SMT_FORCE_DISABLED = 2,
+	CPU_SMT_NOT_SUPPORTED = 3,
+	CPU_SMT_NOT_IMPLEMENTED = 4,
+};
+
+struct bpf_prog_stats {
+	u64_stats_t cnt;
+	u64_stats_t nsecs;
+	u64_stats_t misses;
+	struct u64_stats_sync syncp;
+	long: 64;
+};
+
+struct bpf_ksym {
+	unsigned long start;
+	unsigned long end;
+	char name[512];
+	struct list_head lnode;
+	struct latch_tree_node tnode;
+	bool prog;
+};
+
+struct btf;
+
+struct bpf_ctx_arg_aux;
+
+struct bpf_trampoline;
+
+struct btf_type;
+
+struct bpf_jit_poke_descriptor;
+
+struct bpf_kfunc_desc_tab;
+
+struct bpf_kfunc_btf_tab;
+
+struct bpf_prog_ops;
+
+struct bpf_map;
+
+struct btf_mod_pair;
+
+struct bpf_prog_offload;
+
+struct bpf_func_info;
+
+struct bpf_func_info_aux;
+
+struct bpf_line_info;
+
+struct bpf_prog_aux {
+	atomic64_t refcnt;
+	u32 used_map_cnt;
+	u32 used_btf_cnt;
+	u32 max_ctx_offset;
+	u32 max_pkt_offset;
+	u32 max_tp_access;
+	u32 stack_depth;
+	u32 id;
+	u32 func_cnt;
+	u32 func_idx;
+	u32 attach_btf_id;
+	u32 ctx_arg_info_size;
+	u32 max_rdonly_access;
+	u32 max_rdwr_access;
+	struct btf *attach_btf;
+	const struct bpf_ctx_arg_aux *ctx_arg_info;
+	struct mutex dst_mutex;
+	struct bpf_prog *dst_prog;
+	struct bpf_trampoline *dst_trampoline;
+	enum bpf_prog_type saved_dst_prog_type;
+	enum bpf_attach_type saved_dst_attach_type;
+	bool verifier_zext;
+	bool dev_bound;
+	bool offload_requested;
+	bool attach_btf_trace;
+	bool func_proto_unreliable;
+	bool sleepable;
+	bool tail_call_reachable;
+	bool xdp_has_frags;
+	const struct btf_type *attach_func_proto;
+	const char *attach_func_name;
+	struct bpf_prog **func;
+	void *jit_data;
+	struct bpf_jit_poke_descriptor *poke_tab;
+	struct bpf_kfunc_desc_tab *kfunc_tab;
+	struct bpf_kfunc_btf_tab *kfunc_btf_tab;
+	u32 size_poke_tab;
+	struct bpf_ksym ksym;
+	const struct bpf_prog_ops *ops;
+	struct bpf_map **used_maps;
+	struct mutex used_maps_mutex;
+	struct btf_mod_pair *used_btfs;
+	struct bpf_prog *prog;
+	struct user_struct *user;
+	u64 load_time;
+	u32 verified_insns;
+	int cgroup_atype;
+	struct bpf_map *cgroup_storage[2];
+	char name[16];
+	void *security;
+	struct bpf_prog_offload *offload;
+	struct btf *btf;
+	struct bpf_func_info *func_info;
+	struct bpf_func_info_aux *func_info_aux;
+	struct bpf_line_info *linfo;
+	void **jited_linfo;
+	u32 func_info_cnt;
+	u32 nr_linfo;
+	u32 linfo_idx;
+	struct module *mod;
+	u32 num_exentries;
+	struct exception_table_entry *extable;
+	union {
+		struct work_struct work;
+		struct callback_head rcu;
+	};
+	u64 android_kabi_reserved1;
+};
+
+struct bpf_ctx_arg_aux {
+	u32 offset;
+	enum bpf_reg_type reg_type;
+	u32 btf_id;
+};
+
+struct btf_func_model {
+	u8 ret_size;
+	u8 ret_flags;
+	u8 nr_args;
+	u8 arg_size[12];
+	u8 arg_flags[12];
+};
+
+struct ftrace_ops;
+
+struct bpf_tramp_image;
+
+struct bpf_trampoline {
+	struct hlist_node hlist;
+	struct ftrace_ops *fops;
+	struct mutex mutex;
+	refcount_t refcnt;
+	u32 flags;
+	u64 key;
+	struct {
+		struct btf_func_model model;
+		void *addr;
+		bool ftrace_managed;
+	} func;
+	struct bpf_prog *extension_prog;
+	struct hlist_head progs_hlist[3];
+	int progs_cnt[3];
+	struct bpf_tramp_image *cur_image;
+	struct module *mod;
+	u64 android_kabi_reserved1;
+};
+
+struct bpf_tramp_image {
+	void *image;
+	struct bpf_ksym ksym;
+	struct percpu_ref pcref;
+	void *ip_after_call;
+	void *ip_epilogue;
+	union {
+		struct callback_head rcu;
+		struct work_struct work;
+	};
+};
+
+struct btf_type {
+	__u32 name_off;
+	__u32 info;
+	union {
+		__u32 size;
+		__u32 type;
+	};
+};
+
+struct bpf_jit_poke_descriptor {
+	void *tailcall_target;
+	void *tailcall_bypass;
+	void *bypass_addr;
+	void *aux;
+	union {
+		struct {
+			struct bpf_map *map;
+			u32 key;
+		} tail_call;
+	};
+	bool tailcall_target_stable;
+	u8 adj_off;
+	u16 reason;
+	u32 insn_idx;
+};
+
+struct bpf_map_ops;
+
+struct btf_record;
+
+struct bpf_map {
+	const struct bpf_map_ops *ops;
+	struct bpf_map *inner_map_meta;
+	void *security;
+	enum bpf_map_type map_type;
+	u32 key_size;
+	u32 value_size;
+	u32 max_entries;
+	u64 map_extra;
+	u32 map_flags;
+	u32 id;
+	struct btf_record *record;
+	int numa_node;
+	u32 btf_key_type_id;
+	u32 btf_value_type_id;
+	u32 btf_vmlinux_value_type_id;
+	struct btf *btf;
+	struct obj_cgroup *objcg;
+	char name[16];
+	long: 64;
+	long: 64;
+	atomic64_t refcnt;
+	atomic64_t usercnt;
+	union {
+		struct work_struct work;
+		struct callback_head rcu;
+	};
+	struct mutex freeze_mutex;
+	atomic64_t writecnt;
+	struct {
+		spinlock_t lock;
+		enum bpf_prog_type type;
+		bool jited;
+		bool xdp_has_frags;
+	} owner;
+	bool bypass_spec_v1;
+	bool frozen;
+	bool free_after_mult_rcu_gp;
+	s64 __attribute__((btf_type_tag("percpu"))) *elem_count;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+typedef u64 (*bpf_callback_t)(u64, u64, u64, u64, u64);
+
+union bpf_attr;
+
+struct bpf_verifier_env;
+
+struct bpf_func_state;
+
+struct bpf_iter_seq_info;
+
+struct bpf_map_ops {
+	int (*map_alloc_check)(union bpf_attr *);
+	struct bpf_map * (*map_alloc)(union bpf_attr *);
+	void (*map_release)(struct bpf_map *, struct file *);
+	void (*map_free)(struct bpf_map *);
+	int (*map_get_next_key)(struct bpf_map *, void *, void *);
+	void (*map_release_uref)(struct bpf_map *);
+	void * (*map_lookup_elem_sys_only)(struct bpf_map *, void *);
+	int (*map_lookup_batch)(struct bpf_map *, const union bpf_attr *, union bpf_attr __attribute__((btf_type_tag("user"))) *);
+	int (*map_lookup_and_delete_elem)(struct bpf_map *, void *, void *, u64);
+	int (*map_lookup_and_delete_batch)(struct bpf_map *, const union bpf_attr *, union bpf_attr __attribute__((btf_type_tag("user"))) *);
+	int (*map_update_batch)(struct bpf_map *, struct file *, const union bpf_attr *, union bpf_attr __attribute__((btf_type_tag("user"))) *);
+	int (*map_delete_batch)(struct bpf_map *, const union bpf_attr *, union bpf_attr __attribute__((btf_type_tag("user"))) *);
+	void * (*map_lookup_elem)(struct bpf_map *, void *);
+	long (*map_update_elem)(struct bpf_map *, void *, void *, u64);
+	long (*map_delete_elem)(struct bpf_map *, void *);
+	long (*map_push_elem)(struct bpf_map *, void *, u64);
+	long (*map_pop_elem)(struct bpf_map *, void *);
+	long (*map_peek_elem)(struct bpf_map *, void *);
+	void * (*map_lookup_percpu_elem)(struct bpf_map *, void *, u32);
+	void * (*map_fd_get_ptr)(struct bpf_map *, struct file *, int);
+	void (*map_fd_put_ptr)(struct bpf_map *, void *, bool);
+	int (*map_gen_lookup)(struct bpf_map *, struct bpf_insn *);
+	u32 (*map_fd_sys_lookup_elem)(void *);
+	void (*map_seq_show_elem)(struct bpf_map *, void *, struct seq_file *);
+	int (*map_check_btf)(const struct bpf_map *, const struct btf *, const struct btf_type *, const struct btf_type *);
+	int (*map_poke_track)(struct bpf_map *, struct bpf_prog_aux *);
+	void (*map_poke_untrack)(struct bpf_map *, struct bpf_prog_aux *);
+	void (*map_poke_run)(struct bpf_map *, u32, struct bpf_prog *, struct bpf_prog *);
+	int (*map_direct_value_addr)(const struct bpf_map *, u64 *, u32);
+	int (*map_direct_value_meta)(const struct bpf_map *, u64, u32 *);
+	int (*map_mmap)(struct bpf_map *, struct vm_area_struct *);
+	__poll_t (*map_poll)(struct bpf_map *, struct file *, struct poll_table_struct *);
+	int (*map_local_storage_charge)(struct bpf_local_storage_map *, void *, u32);
+	void (*map_local_storage_uncharge)(struct bpf_local_storage_map *, void *, u32);
+	struct bpf_local_storage __attribute__((btf_type_tag("rcu"))) ** (*map_owner_storage_ptr)(void *);
+	long (*map_redirect)(struct bpf_map *, u64, u64);
+	bool (*map_meta_equal)(const struct bpf_map *, const struct bpf_map *);
+	int (*map_set_for_each_callback_args)(struct bpf_verifier_env *, struct bpf_func_state *, struct bpf_func_state *);
+	long (*map_for_each_callback)(struct bpf_map *, bpf_callback_t, void *, u64);
+	u64 (*map_mem_usage)(const struct bpf_map *);
+	int *map_btf_id;
+	const struct bpf_iter_seq_info *iter_seq_info;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+union bpf_attr {
+	struct {
+		__u32 map_type;
+		__u32 key_size;
+		__u32 value_size;
+		__u32 max_entries;
+		__u32 map_flags;
+		__u32 inner_map_fd;
+		__u32 numa_node;
+		char map_name[16];
+		__u32 map_ifindex;
+		__u32 btf_fd;
+		__u32 btf_key_type_id;
+		__u32 btf_value_type_id;
+		__u32 btf_vmlinux_value_type_id;
+		__u64 map_extra;
+	};
+	struct {
+		__u32 map_fd;
+		__u64 key;
+		union {
+			__u64 value;
+			__u64 next_key;
+		};
+		__u64 flags;
+	};
+	struct {
+		__u64 in_batch;
+		__u64 out_batch;
+		__u64 keys;
+		__u64 values;
+		__u32 count;
+		__u32 map_fd;
+		__u64 elem_flags;
+		__u64 flags;
+	} batch;
+	struct {
+		__u32 prog_type;
+		__u32 insn_cnt;
+		__u64 insns;
+		__u64 license;
+		__u32 log_level;
+		__u32 log_size;
+		__u64 log_buf;
+		__u32 kern_version;
+		__u32 prog_flags;
+		char prog_name[16];
+		__u32 prog_ifindex;
+		__u32 expected_attach_type;
+		__u32 prog_btf_fd;
+		__u32 func_info_rec_size;
+		__u64 func_info;
+		__u32 func_info_cnt;
+		__u32 line_info_rec_size;
+		__u64 line_info;
+		__u32 line_info_cnt;
+		__u32 attach_btf_id;
+		union {
+			__u32 attach_prog_fd;
+			__u32 attach_btf_obj_fd;
+		};
+		__u32 core_relo_cnt;
+		__u64 fd_array;
+		__u64 core_relos;
+		__u32 core_relo_rec_size;
+		__u32 log_true_size;
+	};
+	struct {
+		__u64 pathname;
+		__u32 bpf_fd;
+		__u32 file_flags;
+		__s32 path_fd;
+	};
+	struct {
+		union {
+			__u32 target_fd;
+			__u32 target_ifindex;
+		};
+		__u32 attach_bpf_fd;
+		__u32 attach_type;
+		__u32 attach_flags;
+		__u32 replace_bpf_fd;
+		union {
+			__u32 relative_fd;
+			__u32 relative_id;
+		};
+		__u64 expected_revision;
+	};
+	struct {
+		__u32 prog_fd;
+		__u32 retval;
+		__u32 data_size_in;
+		__u32 data_size_out;
+		__u64 data_in;
+		__u64 data_out;
+		__u32 repeat;
+		__u32 duration;
+		__u32 ctx_size_in;
+		__u32 ctx_size_out;
+		__u64 ctx_in;
+		__u64 ctx_out;
+		__u32 flags;
+		__u32 cpu;
+		__u32 batch_size;
+	} test;
+	struct {
+		union {
+			__u32 start_id;
+			__u32 prog_id;
+			__u32 map_id;
+			__u32 btf_id;
+			__u32 link_id;
+		};
+		__u32 next_id;
+		__u32 open_flags;
+	};
+	struct {
+		__u32 bpf_fd;
+		__u32 info_len;
+		__u64 info;
+	} info;
+	struct {
+		union {
+			__u32 target_fd;
+			__u32 target_ifindex;
+		};
+		__u32 attach_type;
+		__u32 query_flags;
+		__u32 attach_flags;
+		__u64 prog_ids;
+		union {
+			__u32 prog_cnt;
+			__u32 count;
+		};
+		__u64 prog_attach_flags;
+		__u64 link_ids;
+		__u64 link_attach_flags;
+		__u64 revision;
+	} query;
+	struct {
+		__u64 name;
+		__u32 prog_fd;
+	} raw_tracepoint;
+	struct {
+		__u64 btf;
+		__u64 btf_log_buf;
+		__u32 btf_size;
+		__u32 btf_log_size;
+		__u32 btf_log_level;
+		__u32 btf_log_true_size;
+	};
+	struct {
+		__u32 pid;
+		__u32 fd;
+		__u32 flags;
+		__u32 buf_len;
+		__u64 buf;
+		__u32 prog_id;
+		__u32 fd_type;
+		__u64 probe_offset;
+		__u64 probe_addr;
+	} task_fd_query;
+	struct {
+		union {
+			__u32 prog_fd;
+			__u32 map_fd;
+		};
+		union {
+			__u32 target_fd;
+			__u32 target_ifindex;
+		};
+		__u32 attach_type;
+		__u32 flags;
+		union {
+			__u32 target_btf_id;
+			struct {
+				__u64 iter_info;
+				__u32 iter_info_len;
+			};
+			struct {
+				__u64 bpf_cookie;
+			} perf_event;
+			struct {
+				__u32 flags;
+				__u32 cnt;
+				__u64 syms;
+				__u64 addrs;
+				__u64 cookies;
+			} kprobe_multi;
+			struct {
+				__u32 target_btf_id;
+				__u64 cookie;
+			} tracing;
+			struct {
+				__u32 pf;
+				__u32 hooknum;
+				__s32 priority;
+				__u32 flags;
+			} netfilter;
+			struct {
+				union {
+					__u32 relative_fd;
+					__u32 relative_id;
+				};
+				__u64 expected_revision;
+			} tcx;
+			struct {
+				__u64 path;
+				__u64 offsets;
+				__u64 ref_ctr_offsets;
+				__u64 cookies;
+				__u32 cnt;
+				__u32 flags;
+				__u32 pid;
+			} uprobe_multi;
+		};
+	} link_create;
+	struct {
+		__u32 link_fd;
+		union {
+			__u32 new_prog_fd;
+			__u32 new_map_fd;
+		};
+		__u32 flags;
+		union {
+			__u32 old_prog_fd;
+			__u32 old_map_fd;
+		};
+	} link_update;
+	struct {
+		__u32 link_fd;
+	} link_detach;
+	struct {
+		__u32 type;
+	} enable_stats;
+	struct {
+		__u32 link_fd;
+		__u32 flags;
+	} iter_create;
+	struct {
+		__u32 prog_fd;
+		__u32 map_fd;
+		__u32 flags;
+	} prog_bind_map;
+};
+
+struct btf_header {
+	__u16 magic;
+	__u8 version;
+	__u8 flags;
+	__u32 hdr_len;
+	__u32 type_off;
+	__u32 type_len;
+	__u32 str_off;
+	__u32 str_len;
+};
+
+struct btf_kfunc_set_tab;
+
+struct btf_id_dtor_kfunc_tab;
+
+struct btf_struct_metas;
+
+struct btf {
+	void *data;
+	struct btf_type **types;
+	u32 *resolved_ids;
+	u32 *resolved_sizes;
+	const char *strings;
+	void *nohdr_data;
+	struct btf_header hdr;
+	u32 nr_types;
+	u32 types_size;
+	u32 data_size;
+	refcount_t refcnt;
+	u32 id;
+	struct callback_head rcu;
+	struct btf_kfunc_set_tab *kfunc_set_tab;
+	struct btf_id_dtor_kfunc_tab *dtor_kfunc_tab;
+	struct btf_struct_metas *struct_meta_tab;
+	struct btf *base_btf;
+	u32 start_id;
+	u32 start_str_off;
+	char name[56];
+	bool kernel_btf;
+};
+
+struct bpf_iter_aux_info;
+
+typedef int (*bpf_iter_init_seq_priv_t)(void *, struct bpf_iter_aux_info *);
+
+typedef void (*bpf_iter_fini_seq_priv_t)(void *);
+
+struct bpf_iter_seq_info {
+	const struct seq_operations *seq_ops;
+	bpf_iter_init_seq_priv_t init_seq_private;
+	bpf_iter_fini_seq_priv_t fini_seq_private;
+	u32 seq_priv_size;
+};
+
+struct bpf_iter_aux_info {
+	struct bpf_map *map;
+	struct {
+		struct cgroup *start;
+		enum bpf_cgroup_iter_order order;
+	} cgroup;
+	struct {
+		enum bpf_iter_task_type type;
+		u32 pid;
+	} task;
+};
+
+typedef void (*btf_dtor_kfunc_t)(void *);
+
+struct btf_field_kptr {
+	struct btf *btf;
+	struct module *module;
+	btf_dtor_kfunc_t dtor;
+	u32 btf_id;
+};
+
+struct btf_field_graph_root {
+	struct btf *btf;
+	u32 value_btf_id;
+	u32 node_offset;
+	struct btf_record *value_rec;
+};
+
+struct btf_field {
+	u32 offset;
+	u32 size;
+	enum btf_field_type type;
+	union {
+		struct btf_field_kptr kptr;
+		struct btf_field_graph_root graph_root;
+	};
+};
+
+struct btf_record {
+	u32 cnt;
+	u32 field_mask;
+	int spin_lock_off;
+	int timer_off;
+	int refcount_off;
+	struct btf_field fields[0];
+};
+
+struct bpf_prog_ops {
+	int (*test_run)(struct bpf_prog *, const union bpf_attr *, union bpf_attr __attribute__((btf_type_tag("user"))) *);
+};
+
+struct btf_mod_pair {
+	struct btf *btf;
+	struct module *module;
+};
+
+struct bpf_offload_dev;
+
+struct bpf_prog_offload {
+	struct bpf_prog *prog;
+	struct net_device *netdev;
+	struct bpf_offload_dev *offdev;
+	void *dev_priv;
+	struct list_head offloads;
+	bool dev_state;
+	bool opt_failed;
+	void *jited_image;
+	u32 jited_len;
+	u64 android_kabi_reserved1;
+};
+
+struct bpf_func_info {
+	__u32 insn_off;
+	__u32 type_id;
+};
+
+struct bpf_func_info_aux {
+	u16 linkage;
+	bool unreliable;
+};
+
+struct bpf_line_info {
+	__u32 insn_off;
+	__u32 file_name_off;
+	__u32 line_off;
+	__u32 line_col;
+};
+
+struct bpf_run_ctx {};
+
+struct aperfmperf {
+	seqcount_t seq;
+	unsigned long last_update;
+	u64 acnt;
+	u64 mcnt;
+	u64 aperf;
+	u64 mperf;
+};
+
+struct cpuid_dep {
+	unsigned int feature;
+	unsigned int depends;
+};
+
+enum vmx_feature_leafs {
+	MISC_FEATURES = 0,
+	PRIMARY_CTLS = 1,
+	SECONDARY_CTLS = 2,
+	TERTIARY_CTLS_LOW = 3,
+	TERTIARY_CTLS_HIGH = 4,
+	NR_VMX_FEATURE_WORDS = 5,
+};
+
+struct sku_microcode {
+	u8 model;
+	u8 stepping;
+	u32 microcode;
+};
+
+struct _tlb_table {
+	unsigned char descriptor;
+	char tlb_type;
+	unsigned int entries;
+	char info[128];
+};
+
+enum split_lock_detect_state {
+	sld_off = 0,
+	sld_warn = 1,
+	sld_fatal = 2,
+	sld_ratelimit = 3,
+};
+
+struct semaphore {
+	raw_spinlock_t lock;
+	unsigned int count;
+	struct list_head wait_list;
+};
+
+enum pconfig_target {
+	INVALID_TARGET = 0,
+	MKTME_TARGET = 1,
+	PCONFIG_TARGET_NR = 2,
+};
+
+enum {
+	PCONFIG_CPUID_SUBLEAF_INVALID = 0,
+	PCONFIG_CPUID_SUBLEAF_TARGETID = 1,
+};
+
+struct cpuid_regs {
+	u32 eax;
+	u32 ebx;
+	u32 ecx;
+	u32 edx;
+};
+
+enum tsx_ctrl_states {
+	TSX_CTRL_ENABLE = 0,
+	TSX_CTRL_DISABLE = 1,
+	TSX_CTRL_RTM_ALWAYS_ABORT = 2,
+	TSX_CTRL_NOT_SUPPORTED = 3,
+};
+
+enum energy_perf_value_index {
+	EPB_INDEX_PERFORMANCE = 0,
+	EPB_INDEX_BALANCE_PERFORMANCE = 1,
+	EPB_INDEX_NORMAL = 2,
+	EPB_INDEX_BALANCE_POWERSAVE = 3,
+	EPB_INDEX_POWERSAVE = 4,
+};
+
+struct mtrr_ops {
+	u32 var_regs;
+	void (*set)(unsigned int, unsigned long, unsigned long, mtrr_type);
+	void (*get)(unsigned int, unsigned long *, unsigned long *, mtrr_type *);
+	int (*get_free_region)(unsigned long, unsigned long, int);
+	int (*validate_add_page)(unsigned long, unsigned long, unsigned int);
+	int (*have_wrcomb)();
+};
+
+struct set_mtrr_data {
+	unsigned long smp_base;
+	unsigned long smp_size;
+	unsigned int smp_reg;
+	mtrr_type smp_type;
+};
+
+struct proc_ops {
+	unsigned int proc_flags;
+	int (*proc_open)(struct inode *, struct file *);
+	ssize_t (*proc_read)(struct file *, char __attribute__((btf_type_tag("user"))) *, size_t, loff_t *);
+	ssize_t (*proc_read_iter)(struct kiocb *, struct iov_iter *);
+	ssize_t (*proc_write)(struct file *, const char __attribute__((btf_type_tag("user"))) *, size_t, loff_t *);
+	loff_t (*proc_lseek)(struct file *, loff_t, int);
+	int (*proc_release)(struct inode *, struct file *);
+	__poll_t (*proc_poll)(struct file *, struct poll_table_struct *);
+	long (*proc_ioctl)(struct file *, unsigned int, unsigned long);
+	long (*proc_compat_ioctl)(struct file *, unsigned int, unsigned long);
+	int (*proc_mmap)(struct file *, struct vm_area_struct *);
+	unsigned long (*proc_get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long);
+};
+
+typedef u32 compat_uint_t;
+
+struct mtrr_sentry32 {
+	compat_ulong_t base;
+	compat_uint_t size;
+	compat_uint_t type;
+};
+
+struct mtrr_gentry32 {
+	compat_ulong_t regnum;
+	compat_uint_t base;
+	compat_uint_t size;
+	compat_uint_t type;
+};
+
+struct mtrr_sentry {
+	__u64 base;
+	__u32 size;
+	__u32 type;
+};
+
+struct mtrr_gentry {
+	__u64 base;
+	__u32 size;
+	__u32 regnum;
+	__u32 type;
+	__u32 _pad;
+};
+
+struct cache_map {
+	u64 start;
+	u64 end;
+	u64 flags;
+	u64 type: 8;
+	u64 fixed: 1;
+};
+
+struct mtrr_var_range {
+	__u32 base_lo;
+	__u32 base_hi;
+	__u32 mask_lo;
+	__u32 mask_hi;
+};
+
+struct mtrr_state_type {
+	struct mtrr_var_range var_ranges[256];
+	mtrr_type fixed_ranges[88];
+	unsigned char enabled;
+	bool have_fixed;
+	mtrr_type def_type;
+};
+
+struct fixed_range_block {
+	int base_msr;
+	int ranges;
+};
+
+struct var_mtrr_range_state {
+	unsigned long base_pfn;
+	unsigned long size_pfn;
+	mtrr_type type;
+};
+
+enum ucode_state {
+	UCODE_OK = 0,
+	UCODE_NEW = 1,
+	UCODE_UPDATED = 2,
+	UCODE_NFOUND = 3,
+	UCODE_ERROR = 4,
+};
+
+struct cpu_signature;
+
+struct microcode_ops {
+	enum ucode_state (*request_microcode_fw)(int, struct device *);
+	void (*microcode_fini_cpu)(int);
+	enum ucode_state (*apply_microcode)(int);
+	int (*collect_cpu_info)(int, struct cpu_signature *);
+};
+
+struct cpu_signature {
+	unsigned int sig;
+	unsigned int pf;
+	unsigned int rev;
+};
+
+struct ucode_cpu_info {
+	struct cpu_signature cpu_sig;
+	void *mc;
+};
+
+struct cpio_data {
+	void *data;
+	size_t size;
+	char name[18];
+};
+
+struct property_entry;
+
+struct platform_device_info {
+	struct device *parent;
+	struct fwnode_handle *fwnode;
+	bool of_node_reused;
+	const char *name;
+	int id;
+	const struct resource *res;
+	unsigned int num_res;
+	const void *data;
+	size_t size_data;
+	u64 dma_mask;
+	const struct property_entry *properties;
+	u64 android_kabi_reserved1;
+};
+
+enum dev_prop_type {
+	DEV_PROP_U8 = 0,
+	DEV_PROP_U16 = 1,
+	DEV_PROP_U32 = 2,
+	DEV_PROP_U64 = 3,
+	DEV_PROP_STRING = 4,
+	DEV_PROP_REF = 5,
+};
+
+struct property_entry {
+	const char *name;
+	size_t length;
+	bool is_inline;
+	enum dev_prop_type type;
+	union {
+		const void *pointer;
+		union {
+			u8 u8_data[8];
+			u16 u16_data[4];
+			u32 u32_data[2];
+			u64 u64_data[1];
+			const char *str[1];
+		} value;
+	};
+};
+
+struct microcode_header_intel {
+	unsigned int hdrver;
+	unsigned int rev;
+	unsigned int date;
+	unsigned int sig;
+	unsigned int cksum;
+	unsigned int ldrver;
+	unsigned int pf;
+	unsigned int datasize;
+	unsigned int totalsize;
+	unsigned int metasize;
+	unsigned int reserved[2];
+};
+
+struct microcode_intel {
+	struct microcode_header_intel hdr;
+	unsigned int bits[0];
+};
+
+struct ucode_patch {
+	struct list_head plist;
+	void *data;
+	unsigned int size;
+	u32 patch_id;
+	u16 equiv_cpu;
+};
+
+struct extended_signature {
+	unsigned int sig;
+	unsigned int pf;
+	unsigned int cksum;
+};
+
+struct extended_sigtable {
+	unsigned int count;
+	unsigned int cksum;
+	unsigned int reserved[3];
+	struct extended_signature sigs[0];
+};
+
+struct firmware {
+	size_t size;
+	const u8 *data;
+	void *priv;
+};
+
+struct equiv_cpu_entry;
+
+struct equiv_cpu_table {
+	unsigned int num_entries;
+	struct equiv_cpu_entry *entry;
+};
+
+struct equiv_cpu_entry {
+	u32 installed_cpu;
+	u32 fixed_errata_mask;
+	u32 fixed_errata_compare;
+	u16 equiv_cpu;
+	u16 res;
+};
+
+struct microcode_header_amd {
+	u32 data_code;
+	u32 patch_id;
+	u16 mc_patch_data_id;
+	u8 mc_patch_data_len;
+	u8 init_flag;
+	u32 mc_patch_data_checksum;
+	u32 nb_dev_id;
+	u32 sb_dev_id;
+	u16 processor_rev_id;
+	u8 nb_rev_id;
+	u8 sb_rev_id;
+	u8 bios_api_rev;
+	u8 reserved1[3];
+	u32 match_reg[8];
+};
+
+struct microcode_amd {
+	struct microcode_header_amd hdr;
+	unsigned int mpb[0];
+};
+
+struct cont_desc {
+	struct microcode_amd *mc;
+	u32 cpuid_1_eax;
+	u32 psize;
+	u8 *data;
+	size_t size;
+};
+
+struct hypervisor_x86 {
+	const char *name;
+	uint32_t (*detect)();
+	enum x86_hypervisor_type type;
+	struct x86_hyper_init init;
+	struct x86_hyper_runtime runtime;
+	bool ignore_nopv;
+};
+
+struct vmware_steal_time {
+	union {
+		uint64_t clock;
+		struct {
+			uint32_t clock_low;
+			uint32_t clock_high;
+		};
+	};
+	uint64_t reserved[7];
+};
+
+struct ms_hyperv_info {
+	u32 features;
+	u32 priv_high;
+	u32 misc_features;
+	u32 hints;
+	u32 nested_features;
+	u32 max_vp_index;
+	u32 max_lp_index;
+	u8 vtl;
+	union {
+		u32 isolation_config_a;
+		struct {
+			u32 paravisor_present: 1;
+			u32 reserved_a1: 31;
+		};
+	};
+	union {
+		u32 isolation_config_b;
+		struct {
+			u32 cvm_type: 4;
+			u32 reserved_b1: 1;
+			u32 shared_gpa_boundary_active: 1;
+			u32 shared_gpa_boundary_bits: 6;
+			u32 reserved_b2: 20;
+		};
+	};
+	u64 shared_gpa_boundary;
+};
+
+enum hv_isolation_type {
+	HV_ISOLATION_TYPE_NONE = 0,
+	HV_ISOLATION_TYPE_VBS = 1,
+	HV_ISOLATION_TYPE_SNP = 2,
+	HV_ISOLATION_TYPE_TDX = 3,
+};
+
+enum acpi_irq_model_id {
+	ACPI_IRQ_MODEL_PIC = 0,
+	ACPI_IRQ_MODEL_IOAPIC = 1,
+	ACPI_IRQ_MODEL_IOSAPIC = 2,
+	ACPI_IRQ_MODEL_PLATFORM = 3,
+	ACPI_IRQ_MODEL_GIC = 4,
+	ACPI_IRQ_MODEL_LPIC = 5,
+	ACPI_IRQ_MODEL_COUNT = 6,
+};
+
+struct serial_icounter_struct {
+	int cts;
+	int dsr;
+	int rng;
+	int dcd;
+	int rx;
+	int tx;
+	int frame;
+	int overrun;
+	int parity;
+	int brk;
+	int buf_overrun;
+	int reserved[9];
+};
+
+struct serial_struct {
+	int type;
+	int line;
+	unsigned int port;
+	int irq;
+	int flags;
+	int xmit_fifo_size;
+	int custom_divisor;
+	int baud_base;
+	unsigned short close_delay;
+	char io_type;
+	char reserved_char[1];
+	int hub6;
+	unsigned short closing_wait;
+	unsigned short closing_wait2;
+	unsigned char *iomem_base;
+	unsigned short iomem_reg_shift;
+	unsigned int port_high;
+	unsigned long iomap_base;
+};
+
+struct acpi_madt_multiproc_wakeup_mailbox {
+	u16 command;
+	u16 reserved;
+	u32 apic_id;
+	u64 wakeup_vector;
+	u8 reserved_os[2032];
+	u8 reserved_firmware[2048];
+};
+
+enum ioapic_domain_type {
+	IOAPIC_DOMAIN_INVALID = 0,
+	IOAPIC_DOMAIN_LEGACY = 1,
+	IOAPIC_DOMAIN_STRICT = 2,
+	IOAPIC_DOMAIN_DYNAMIC = 3,
+};
+
+enum acpi_madt_type {
+	ACPI_MADT_TYPE_LOCAL_APIC = 0,
+	ACPI_MADT_TYPE_IO_APIC = 1,
+	ACPI_MADT_TYPE_INTERRUPT_OVERRIDE = 2,
+	ACPI_MADT_TYPE_NMI_SOURCE = 3,
+	ACPI_MADT_TYPE_LOCAL_APIC_NMI = 4,
+	ACPI_MADT_TYPE_LOCAL_APIC_OVERRIDE = 5,
+	ACPI_MADT_TYPE_IO_SAPIC = 6,
+	ACPI_MADT_TYPE_LOCAL_SAPIC = 7,
+	ACPI_MADT_TYPE_INTERRUPT_SOURCE = 8,
+	ACPI_MADT_TYPE_LOCAL_X2APIC = 9,
+	ACPI_MADT_TYPE_LOCAL_X2APIC_NMI = 10,
+	ACPI_MADT_TYPE_GENERIC_INTERRUPT = 11,
+	ACPI_MADT_TYPE_GENERIC_DISTRIBUTOR = 12,
+	ACPI_MADT_TYPE_GENERIC_MSI_FRAME = 13,
+	ACPI_MADT_TYPE_GENERIC_REDISTRIBUTOR = 14,
+	ACPI_MADT_TYPE_GENERIC_TRANSLATOR = 15,
+	ACPI_MADT_TYPE_MULTIPROC_WAKEUP = 16,
+	ACPI_MADT_TYPE_CORE_PIC = 17,
+	ACPI_MADT_TYPE_LIO_PIC = 18,
+	ACPI_MADT_TYPE_HT_PIC = 19,
+	ACPI_MADT_TYPE_EIO_PIC = 20,
+	ACPI_MADT_TYPE_MSI_PIC = 21,
+	ACPI_MADT_TYPE_BIO_PIC = 22,
+	ACPI_MADT_TYPE_LPC_PIC = 23,
+	ACPI_MADT_TYPE_RINTC = 24,
+	ACPI_MADT_TYPE_IMSIC = 25,
+	ACPI_MADT_TYPE_APLIC = 26,
+	ACPI_MADT_TYPE_PLIC = 27,
+	ACPI_MADT_TYPE_RESERVED = 28,
+	ACPI_MADT_TYPE_OEM_RESERVED = 128,
+};
+
+enum mp_irq_source_types {
+	mp_INT = 0,
+	mp_NMI = 1,
+	mp_SMI = 2,
+	mp_ExtINT = 3,
+};
+
+struct acpi_table_header {
+	char signature[4];
+	u32 length;
+	u8 revision;
+	u8 checksum;
+	char oem_id[6];
+	char oem_table_id[8];
+	u32 oem_revision;
+	char asl_compiler_id[4];
+	u32 asl_compiler_revision;
+};
+
+struct acpi_table_boot {
+	struct acpi_table_header header;
+	u8 cmos_index;
+	u8 reserved[3];
+};
+
+struct acpi_table_madt {
+	struct acpi_table_header header;
+	u32 address;
+	u32 flags;
+};
+
+struct acpi_subtable_header {
+	u8 type;
+	u8 length;
+};
+
+struct acpi_madt_local_apic_override {
+	struct acpi_subtable_header header;
+	u16 reserved;
+	u64 address;
+} __attribute__((packed));
+
+struct acpi_madt_local_sapic {
+	struct acpi_subtable_header header;
+	u8 processor_id;
+	u8 id;
+	u8 eid;
+	u8 reserved[3];
+	u32 lapic_flags;
+	u32 uid;
+	char uid_string[0];
+};
+
+struct acpi_madt_local_apic {
+	struct acpi_subtable_header header;
+	u8 processor_id;
+	u8 id;
+	u32 lapic_flags;
+};
+
+struct acpi_madt_local_x2apic {
+	struct acpi_subtable_header header;
+	u16 reserved;
+	u32 local_apic_id;
+	u32 lapic_flags;
+	u32 uid;
+};
+
+struct acpi_madt_local_x2apic_nmi {
+	struct acpi_subtable_header header;
+	u16 inti_flags;
+	u32 uid;
+	u8 lint;
+	u8 reserved[3];
+};
+
+struct acpi_madt_local_apic_nmi {
+	struct acpi_subtable_header header;
+	u8 processor_id;
+	u16 inti_flags;
+	u8 lint;
+} __attribute__((packed));
+
+struct acpi_madt_io_apic {
+	struct acpi_subtable_header header;
+	u8 id;
+	u8 reserved;
+	u32 address;
+	u32 global_irq_base;
+};
+
+struct acpi_madt_interrupt_override {
+	struct acpi_subtable_header header;
+	u8 bus;
+	u8 source_irq;
+	u32 global_irq;
+	u16 inti_flags;
+} __attribute__((packed));
+
+struct acpi_madt_nmi_source {
+	struct acpi_subtable_header header;
+	u16 inti_flags;
+	u32 global_irq;
+};
+
+struct acpi_madt_multiproc_wakeup {
+	struct acpi_subtable_header header;
+	u16 mailbox_version;
+	u32 reserved;
+	u64 base_address;
+};
+
+struct acpi_generic_address {
+	u8 space_id;
+	u8 bit_width;
+	u8 bit_offset;
+	u8 access_width;
+	u64 address;
+} __attribute__((packed));
+
+struct acpi_table_hpet {
+	struct acpi_table_header header;
+	u32 id;
+	struct acpi_generic_address address;
+	u8 sequence;
+	u16 minimum_tick;
+	u8 flags;
+} __attribute__((packed));
+
+typedef void *acpi_handle;
+
+struct ioapic_domain_cfg {
+	enum ioapic_domain_type type;
+	const struct irq_domain_ops *ops;
+	struct device_node *dev;
+};
+
+typedef u32 acpi_status;
+
+typedef char *acpi_string;
+
+union acpi_object;
+
+struct acpi_object_list {
+	u32 count;
+	union acpi_object *pointer;
+};
+
+typedef u32 acpi_object_type;
+
+typedef u64 acpi_io_address;
+
+union acpi_object {
+	acpi_object_type type;
+	struct {
+		acpi_object_type type;
+		u64 value;
+	} integer;
+	struct {
+		acpi_object_type type;
+		u32 length;
+		char *pointer;
+	} string;
+	struct {
+		acpi_object_type type;
+		u32 length;
+		u8 *pointer;
+	} buffer;
+	struct {
+		acpi_object_type type;
+		u32 count;
+		union acpi_object *elements;
+	} package;
+	struct {
+		acpi_object_type type;
+		acpi_object_type actual_type;
+		acpi_handle handle;
+	} reference;
+	struct {
+		acpi_object_type type;
+		u32 proc_id;
+		acpi_io_address pblk_address;
+		u32 pblk_length;
+	} processor;
+	struct {
+		acpi_object_type type;
+		u32 system_level;
+		u32 resource_order;
+	} power_resource;
+};
+
+typedef int (*acpi_tbl_table_handler)(struct acpi_table_header *);
+
+union acpi_subtable_headers;
+
+typedef int (*acpi_tbl_entry_handler)(union acpi_subtable_headers *, const unsigned long);
+
+struct acpi_hmat_structure {
+	u16 type;
+	u16 reserved;
+	u32 length;
+};
+
+struct acpi_prmt_module_header {
+	u16 revision;
+	u16 length;
+};
+
+struct acpi_cedt_header {
+	u8 type;
+	u8 reserved;
+	u16 length;
+};
+
+union acpi_subtable_headers {
+	struct acpi_subtable_header common;
+	struct acpi_hmat_structure hmat;
+	struct acpi_prmt_module_header prmt;
+	struct acpi_cedt_header cedt;
+};
+
+typedef int (*acpi_tbl_entry_handler_arg)(union acpi_subtable_headers *, void *, const unsigned long);
+
+struct acpi_subtable_proc {
+	int id;
+	acpi_tbl_entry_handler handler;
+	acpi_tbl_entry_handler_arg handler_arg;
+	void *arg;
+	int count;
+};
+
+struct mpc_intsrc {
+	unsigned char type;
+	unsigned char irqtype;
+	unsigned short irqflag;
+	unsigned char srcbus;
+	unsigned char srcbusirq;
+	unsigned char dstapic;
+	unsigned char dstirq;
+};
+
+typedef u32 phys_cpuid_t;
+
+typedef u64 acpi_physical_address;
+
+struct wakeup_header {
+	u16 video_mode;
+	u32 pmode_entry;
+	u16 pmode_cs;
+	u32 pmode_cr0;
+	u32 pmode_cr3;
+	u32 pmode_cr4;
+	u32 pmode_efer_low;
+	u32 pmode_efer_high;
+	u64 pmode_gdt;
+	u32 pmode_misc_en_low;
+	u32 pmode_misc_en_high;
+	u32 pmode_behavior;
+	u32 realmode_flags;
+	u32 real_magic;
+	u32 signature;
+} __attribute__((packed));
+
+struct cppc_perf_caps {
+	u32 guaranteed_perf;
+	u32 highest_perf;
+	u32 nominal_perf;
+	u32 lowest_perf;
+	u32 lowest_nonlinear_perf;
+	u32 lowest_freq;
+	u32 nominal_freq;
+	u32 energy_perf;
+	bool auto_sel;
+};
+
+struct cpc_reg {
+	u8 descriptor;
+	u16 length;
+	u8 space_id;
+	u8 bit_width;
+	u8 bit_offset;
+	u8 access_width;
+	u64 address;
+} __attribute__((packed));
+
+struct cstate_entry {
+	struct {
+		unsigned int eax;
+		unsigned int ecx;
+	} states[8];
+};
+
+struct acpi_processor_flags {
+	u8 power: 1;
+	u8 performance: 1;
+	u8 throttling: 1;
+	u8 limit: 1;
+	u8 bm_control: 1;
+	u8 bm_check: 1;
+	u8 has_cst: 1;
+	u8 has_lpi: 1;
+	u8 power_setup_done: 1;
+	u8 bm_rld_set: 1;
+	u8 need_hotplug_init: 1;
+};
+
+struct acpi_processor_cx {
+	u8 valid;
+	u8 type;
+	u32 address;
+	u8 entry_method;
+	u8 index;
+	u32 latency;
+	u8 bm_sts_skip;
+	char desc[32];
+};
+
+struct acpi_power_register {
+	u8 descriptor;
+	u16 length;
+	u8 space_id;
+	u8 bit_width;
+	u8 bit_offset;
+	u8 access_size;
+	u64 address;
+} __attribute__((packed));
+
+struct machine_ops {
+	void (*restart)(char *);
+	void (*halt)();
+	void (*power_off)();
+	void (*shutdown)();
+	void (*crash_shutdown)(struct pt_regs *);
+	void (*emergency_restart)();
+};
+
+typedef void (*nmi_shootdown_cb)(int, struct pt_regs *);
+
+enum reboot_type {
+	BOOT_TRIPLE = 116,
+	BOOT_KBD = 107,
+	BOOT_BIOS = 98,
+	BOOT_ACPI = 97,
+	BOOT_EFI = 101,
+	BOOT_CF9_FORCE = 112,
+	BOOT_CF9_SAFE = 113,
+};
+
+enum reboot_mode {
+	REBOOT_UNDEFINED = -1,
+	REBOOT_COLD = 0,
+	REBOOT_WARM = 1,
+	REBOOT_HARD = 2,
+	REBOOT_SOFT = 3,
+	REBOOT_GPIO = 4,
+};
+
+struct chipset {
+	u32 vendor;
+	u32 device;
+	u32 class;
+	u32 class_mask;
+	u32 flags;
+	void (*f)(int, int, int);
+};
+
+struct intel_early_ops {
+	resource_size_t (*stolen_size)(int, int, int);
+	resource_size_t (*stolen_base)(int, int, int, resource_size_t);
+};
+
+struct smp_ops {
+	void (*smp_prepare_boot_cpu)();
+	void (*smp_prepare_cpus)(unsigned int);
+	void (*smp_cpus_done)(unsigned int);
+	void (*stop_other_cpus)(int);
+	void (*crash_stop_other_cpus)();
+	void (*smp_send_reschedule)(int);
+	void (*cleanup_dead_cpu)(unsigned int);
+	void (*poll_sync_state)();
+	int (*kick_ap_alive)(unsigned int, struct task_struct *);
+	int (*cpu_disable)();
+	void (*cpu_die)(unsigned int);
+	void (*play_dead)();
+	void (*send_call_func_ipi)(const struct cpumask *);
+	void (*send_call_func_single_ipi)(int);
+};
+
+struct mwait_cpu_dead {
+	unsigned int control;
+	unsigned int status;
+};
+
+typedef const struct cpumask * (*sched_domain_mask_f)(int);
+
+typedef int (*sched_domain_flags_f)();
+
+struct sched_domain;
+
+struct sched_domain_shared;
+
+struct sched_group;
+
+struct sched_group_capacity;
+
+struct sd_data {
+	struct sched_domain * __attribute__((btf_type_tag("percpu"))) *sd;
+	struct sched_domain_shared * __attribute__((btf_type_tag("percpu"))) *sds;
+	struct sched_group * __attribute__((btf_type_tag("percpu"))) *sg;
+	struct sched_group_capacity * __attribute__((btf_type_tag("percpu"))) *sgc;
+};
+
+struct sched_domain_topology_level {
+	sched_domain_mask_f mask;
+	sched_domain_flags_f sd_flags;
+	int flags;
+	int numa_level;
+	struct sd_data data;
+	char *name;
+};
+
+struct sched_domain {
+	struct sched_domain __attribute__((btf_type_tag("rcu"))) *parent;
+	struct sched_domain __attribute__((btf_type_tag("rcu"))) *child;
+	struct sched_group *groups;
+	unsigned long min_interval;
+	unsigned long max_interval;
+	unsigned int busy_factor;
+	unsigned int imbalance_pct;
+	unsigned int cache_nice_tries;
+	unsigned int imb_numa_nr;
+	int nohz_idle;
+	int flags;
+	int level;
+	unsigned long last_balance;
+	unsigned int balance_interval;
+	unsigned int nr_balance_failed;
+	u64 max_newidle_lb_cost;
+	unsigned long last_decay_max_lb_cost;
+	u64 avg_scan_cost;
+	unsigned int lb_count[3];
+	unsigned int lb_failed[3];
+	unsigned int lb_balanced[3];
+	unsigned int lb_imbalance[3];
+	unsigned int lb_gained[3];
+	unsigned int lb_hot_gained[3];
+	unsigned int lb_nobusyg[3];
+	unsigned int lb_nobusyq[3];
+	unsigned int alb_count;
+	unsigned int alb_failed;
+	unsigned int alb_pushed;
+	unsigned int sbe_count;
+	unsigned int sbe_balanced;
+	unsigned int sbe_pushed;
+	unsigned int sbf_count;
+	unsigned int sbf_balanced;
+	unsigned int sbf_pushed;
+	unsigned int ttwu_wake_remote;
+	unsigned int ttwu_move_affine;
+	unsigned int ttwu_move_balance;
+	char *name;
+	union {
+		void *private;
+		struct callback_head rcu;
+	};
+	struct sched_domain_shared *shared;
+	unsigned int span_weight;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	unsigned long span[0];
+};
+
+struct sched_domain_shared {
+	atomic_t ref;
+	atomic_t nr_busy_cpus;
+	int has_idle_cores;
+	int nr_idle_scan;
+};
+
+enum apic_intr_mode_id {
+	APIC_PIC = 0,
+	APIC_VIRTUAL_WIRE = 1,
+	APIC_VIRTUAL_WIRE_NO_CONFIG = 2,
+	APIC_SYMMETRIC_IO = 3,
+	APIC_SYMMETRIC_IO_NO_ROUTING = 4,
+};
+
+enum {
+	SD_BALANCE_NEWIDLE = 1,
+	SD_BALANCE_EXEC = 2,
+	SD_BALANCE_FORK = 4,
+	SD_BALANCE_WAKE = 8,
+	SD_WAKE_AFFINE = 16,
+	SD_ASYM_CPUCAPACITY = 32,
+	SD_ASYM_CPUCAPACITY_FULL = 64,
+	SD_SHARE_CPUCAPACITY = 128,
+	SD_SHARE_PKG_RESOURCES = 256,
+	SD_SERIALIZE = 512,
+	SD_ASYM_PACKING = 1024,
+	SD_PREFER_SIBLING = 2048,
+	SD_OVERLAP = 4096,
+	SD_NUMA = 8192,
+};
+
+struct physid_mask {
+	unsigned long mask[512];
+};
+
+typedef struct physid_mask physid_mask_t;
+
+struct tsc_adjust {
+	s64 bootval;
+	s64 adjusted;
+	unsigned long nextcheck;
+	bool warned;
+};
+
+enum pcpu_fc {
+	PCPU_FC_AUTO = 0,
+	PCPU_FC_EMBED = 1,
+	PCPU_FC_PAGE = 2,
+	PCPU_FC_NR = 3,
+};
+
+typedef int pcpu_fc_cpu_to_node_fn_t(int);
+
+typedef int pcpu_fc_cpu_distance_fn_t(unsigned int, unsigned int);
+
+enum {
+	DUMP_PREFIX_NONE = 0,
+	DUMP_PREFIX_ADDRESS = 1,
+	DUMP_PREFIX_OFFSET = 2,
+};
+
+struct mpc_cpu {
+	unsigned char type;
+	unsigned char apicid;
+	unsigned char apicver;
+	unsigned char cpuflag;
+	unsigned int cpufeature;
+	unsigned int featureflag;
+	unsigned int reserved[2];
+};
+
+struct mpc_bus {
+	unsigned char type;
+	unsigned char busid;
+	unsigned char bustype[6];
+};
+
+struct mpc_ioapic {
+	unsigned char type;
+	unsigned char apicid;
+	unsigned char apicver;
+	unsigned char flags;
+	unsigned int apicaddr;
+};
+
+struct mpc_lintsrc {
+	unsigned char type;
+	unsigned char irqtype;
+	unsigned short irqflag;
+	unsigned char srcbusid;
+	unsigned char srcbusirq;
+	unsigned char destapic;
+	unsigned char destapiclint;
+};
+
+struct mpf_intel {
+	char signature[4];
+	unsigned int physptr;
+	unsigned char length;
+	unsigned char specification;
+	unsigned char checksum;
+	unsigned char feature1;
+	unsigned char feature2;
+	unsigned char feature3;
+	unsigned char feature4;
+	unsigned char feature5;
+};
+
+struct mpc_table {
+	char signature[4];
+	unsigned short length;
+	char spec;
+	char checksum;
+	char oem[8];
+	char productid[12];
+	unsigned int oemptr;
+	unsigned short oemsize;
+	unsigned short oemcount;
+	unsigned int lapic;
+	unsigned int reserved;
+};
+
+enum {
+	X2APIC_OFF = 0,
+	X2APIC_DISABLED = 1,
+	X2APIC_ON = 2,
+	X2APIC_ON_LOCKED = 3,
+};
+
+enum apic_delivery_modes {
+	APIC_DELIVERY_MODE_FIXED = 0,
+	APIC_DELIVERY_MODE_LOWESTPRIO = 1,
+	APIC_DELIVERY_MODE_SMI = 2,
+	APIC_DELIVERY_MODE_NMI = 4,
+	APIC_DELIVERY_MODE_INIT = 5,
+	APIC_DELIVERY_MODE_EXTINT = 7,
+};
+
+enum {
+	IRQ_REMAP_XAPIC_MODE = 0,
+	IRQ_REMAP_X2APIC_MODE = 1,
+};
+
+enum page_cache_mode {
+	_PAGE_CACHE_MODE_WB = 0,
+	_PAGE_CACHE_MODE_WC = 1,
+	_PAGE_CACHE_MODE_UC_MINUS = 2,
+	_PAGE_CACHE_MODE_UC = 3,
+	_PAGE_CACHE_MODE_WT = 4,
+	_PAGE_CACHE_MODE_WP = 5,
+	_PAGE_CACHE_MODE_NUM = 8,
+};
+
+union apic_ir {
+	unsigned long map[4];
+	u32 regs[8];
+};
+
+struct apic {
+	void (*eoi)();
+	void (*native_eoi)();
+	void (*write)(u32, u32);
+	u32 (*read)(u32);
+	void (*wait_icr_idle)();
+	u32 (*safe_wait_icr_idle)();
+	void (*send_IPI)(int, int);
+	void (*send_IPI_mask)(const struct cpumask *, int);
+	void (*send_IPI_mask_allbutself)(const struct cpumask *, int);
+	void (*send_IPI_allbutself)(int);
+	void (*send_IPI_all)(int);
+	void (*send_IPI_self)(int);
+	enum apic_delivery_modes delivery_mode;
+	u32 disable_esr: 1;
+	u32 dest_mode_logical: 1;
+	u32 x2apic_set_max_apicid: 1;
+	u32 (*calc_dest_apicid)(unsigned int);
+	u64 (*icr_read)();
+	void (*icr_write)(u32, u32);
+	u32 max_apic_id;
+	int (*probe)();
+	int (*acpi_madt_oem_check)(char *, char *);
+	bool (*apic_id_registered)();
+	bool (*check_apicid_used)(physid_mask_t *, int);
+	void (*init_apic_ldr)();
+	void (*ioapic_phys_id_map)(physid_mask_t *, physid_mask_t *);
+	int (*cpu_present_to_apicid)(int);
+	int (*phys_pkg_id)(int, int);
+	u32 (*get_apic_id)(unsigned long);
+	u32 (*set_apic_id)(unsigned int);
+	int (*wakeup_secondary_cpu)(int, unsigned long);
+	int (*wakeup_secondary_cpu_64)(int, unsigned long);
+	char *name;
+};
+
+struct irq_cfg {
+	unsigned int dest_apicid;
+	unsigned int vector;
+};
+
+struct vector_cleanup {
+	struct hlist_head head;
+	struct timer_list timer;
+};
+
+enum {
+	IRQCHIP_FWNODE_REAL = 0,
+	IRQCHIP_FWNODE_NAMED = 1,
+	IRQCHIP_FWNODE_NAMED_ID = 2,
+};
+
+enum {
+	X86_IRQ_ALLOC_LEGACY = 1,
+};
+
+enum {
+	IRQ_SET_MASK_OK = 0,
+	IRQ_SET_MASK_OK_NOCOPY = 1,
+	IRQ_SET_MASK_OK_DONE = 2,
+};
+
+enum {
+	IRQD_TRIGGER_MASK = 15,
+	IRQD_SETAFFINITY_PENDING = 256,
+	IRQD_ACTIVATED = 512,
+	IRQD_NO_BALANCING = 1024,
+	IRQD_PER_CPU = 2048,
+	IRQD_AFFINITY_SET = 4096,
+	IRQD_LEVEL = 8192,
+	IRQD_WAKEUP_STATE = 16384,
+	IRQD_MOVE_PCNTXT = 32768,
+	IRQD_IRQ_DISABLED = 65536,
+	IRQD_IRQ_MASKED = 131072,
+	IRQD_IRQ_INPROGRESS = 262144,
+	IRQD_WAKEUP_ARMED = 524288,
+	IRQD_FORWARDED_TO_VCPU = 1048576,
+	IRQD_AFFINITY_MANAGED = 2097152,
+	IRQD_IRQ_STARTED = 4194304,
+	IRQD_MANAGED_SHUTDOWN = 8388608,
+	IRQD_SINGLE_TARGET = 16777216,
+	IRQD_DEFAULT_TRIGGER_SET = 33554432,
+	IRQD_CAN_RESERVE = 67108864,
+	IRQD_HANDLE_ENFORCE_IRQCTX = 134217728,
+	IRQD_AFFINITY_ON_ACTIVATE = 268435456,
+	IRQD_IRQ_ENABLED_ON_SUSPEND = 536870912,
+	IRQD_RESEND_WHEN_IN_PROGRESS = 1073741824,
+};
+
+struct apic_chip_data {
+	struct irq_cfg hw_irq_cfg;
+	unsigned int vector;
+	unsigned int prev_vector;
+	unsigned int cpu;
+	unsigned int prev_cpu;
+	unsigned int irq;
+	struct hlist_node clist;
+	unsigned int move_in_progress: 1;
+	unsigned int is_managed: 1;
+	unsigned int can_reserve: 1;
+	unsigned int has_reserved: 1;
+};
+
+struct apic_override {
+	void (*eoi)();
+	void (*native_eoi)();
+	void (*write)(u32, u32);
+	u32 (*read)(u32);
+	void (*send_IPI)(int, int);
+	void (*send_IPI_mask)(const struct cpumask *, int);
+	void (*send_IPI_mask_allbutself)(const struct cpumask *, int);
+	void (*send_IPI_allbutself)(int);
+	void (*send_IPI_all)(int);
+	void (*send_IPI_self)(int);
+	u64 (*icr_read)();
+	void (*icr_write)(u32, u32);
+	int (*wakeup_secondary_cpu)(int, unsigned long);
+	int (*wakeup_secondary_cpu_64)(int, unsigned long);
+};
+
+struct mp_ioapic_gsi {
+	u32 gsi_base;
+	u32 gsi_end;
+};
+
+struct IO_APIC_route_entry;
+
+struct ioapic {
+	int nr_registers;
+	struct IO_APIC_route_entry *saved_registers;
+	struct mpc_ioapic mp_config;
+	struct mp_ioapic_gsi gsi_config;
+	struct ioapic_domain_cfg irqdomain_cfg;
+	struct irq_domain *irqdomain;
+	struct resource *iomem_res;
+};
+
+struct IO_APIC_route_entry {
+	union {
+		struct {
+			u64 vector: 8;
+			u64 delivery_mode: 3;
+			u64 dest_mode_logical: 1;
+			u64 delivery_status: 1;
+			u64 active_low: 1;
+			u64 irr: 1;
+			u64 is_level: 1;
+			u64 masked: 1;
+			u64 reserved_0: 15;
+			u64 reserved_1: 17;
+			u64 virt_destid_8_14: 7;
+			u64 destid_0_7: 8;
+		};
+		struct {
+			u64 ir_shared_0: 8;
+			u64 ir_zero: 3;
+			u64 ir_index_15: 1;
+			u64 ir_shared_1: 5;
+			u64 ir_reserved_0: 31;
+			u64 ir_format: 1;
+			u64 ir_index_0_14: 15;
+		};
+		struct {
+			u64 w1: 32;
+			u64 w2: 32;
+		};
+	};
+};
+
+struct irq_pin_list {
+	struct list_head list;
+	int apic;
+	int pin;
+};
+
+struct io_apic {
+	unsigned int index;
+	unsigned int unused[3];
+	unsigned int data;
+	unsigned int unused2[11];
+	unsigned int eoi;
+};
+
+union IO_APIC_reg_00 {
+	u32 raw;
+	struct {
+		u32 __reserved_2: 14;
+		u32 LTS: 1;
+		u32 delivery_type: 1;
+		u32 __reserved_1: 8;
+		u32 ID: 8;
+	} bits;
+};
+
+union IO_APIC_reg_01 {
+	u32 raw;
+	struct {
+		u32 version: 8;
+		u32 __reserved_2: 7;
+		u32 PRQ: 1;
+		u32 entries: 8;
+		u32 __reserved_1: 8;
+	} bits;
+};
+
+union IO_APIC_reg_02 {
+	u32 raw;
+	struct {
+		u32 __reserved_2: 24;
+		u32 arbitration: 4;
+		u32 __reserved_1: 4;
+	} bits;
+};
+
+struct mp_chip_data {
+	struct list_head irq_2_pin;
+	struct IO_APIC_route_entry entry;
+	bool is_level;
+	bool active_low;
+	bool isa_irq;
+	u32 count;
+};
+
+union IO_APIC_reg_03 {
+	u32 raw;
+	struct {
+		u32 boot_DT: 1;
+		u32 __reserved_1: 31;
+	} bits;
+};
+
+enum {
+	IRQ_DOMAIN_FLAG_HIERARCHY = 1,
+	IRQ_DOMAIN_NAME_ALLOCATED = 2,
+	IRQ_DOMAIN_FLAG_IPI_PER_CPU = 4,
+	IRQ_DOMAIN_FLAG_IPI_SINGLE = 8,
+	IRQ_DOMAIN_FLAG_MSI = 16,
+	IRQ_DOMAIN_FLAG_ISOLATED_MSI = 32,
+	IRQ_DOMAIN_FLAG_NO_MAP = 64,
+	IRQ_DOMAIN_FLAG_MSI_PARENT = 256,
+	IRQ_DOMAIN_FLAG_MSI_DEVICE = 512,
+	IRQ_DOMAIN_FLAG_NONCORE = 65536,
+};
+
+enum {
+	MSI_FLAG_USE_DEF_DOM_OPS = 1,
+	MSI_FLAG_USE_DEF_CHIP_OPS = 2,
+	MSI_FLAG_ACTIVATE_EARLY = 4,
+	MSI_FLAG_MUST_REACTIVATE = 8,
+	MSI_FLAG_DEV_SYSFS = 16,
+	MSI_FLAG_ALLOC_SIMPLE_MSI_DESCS = 32,
+	MSI_FLAG_FREE_MSI_DESCS = 64,
+	MSI_GENERIC_FLAGS_MASK = 65535,
+	MSI_DOMAIN_FLAGS_MASK = 4294901760,
+	MSI_FLAG_MULTI_PCI_MSI = 65536,
+	MSI_FLAG_PCI_MSIX = 131072,
+	MSI_FLAG_LEVEL_CAPABLE = 262144,
+	MSI_FLAG_MSIX_CONTIGUOUS = 524288,
+	MSI_FLAG_PCI_MSIX_ALLOC_DYN = 1048576,
+	MSI_FLAG_PCI_IMS = 2097152,
+};
+
+enum {
+	IRQCHIP_SET_TYPE_MASKED = 1,
+	IRQCHIP_EOI_IF_HANDLED = 2,
+	IRQCHIP_MASK_ON_SUSPEND = 4,
+	IRQCHIP_ONOFFLINE_ENABLED = 8,
+	IRQCHIP_SKIP_SET_WAKE = 16,
+	IRQCHIP_ONESHOT_SAFE = 32,
+	IRQCHIP_EOI_THREADED = 64,
+	IRQCHIP_SUPPORTS_LEVEL_MSI = 128,
+	IRQCHIP_SUPPORTS_NMI = 256,
+	IRQCHIP_ENABLE_WAKEUP_ON_SUSPEND = 512,
+	IRQCHIP_AFFINITY_PRE_STARTUP = 1024,
+	IRQCHIP_IMMUTABLE = 2048,
+};
+
+struct freelist_node {
+	atomic_t refs;
+	struct freelist_node *next;
+};
+
+struct rethook;
+
+struct rethook_node {
+	union {
+		struct freelist_node freelist;
+		struct callback_head rcu;
+	};
+	struct llist_node llist;
+	struct rethook *rethook;
+	unsigned long ret_addr;
+	unsigned long frame;
+};
+
+struct freelist_head {
+	struct freelist_node *head;
+};
+
+struct rethook {
+	void *data;
+	void (*handler)(struct rethook_node *, void *, unsigned long, struct pt_regs *);
+	struct freelist_head pool;
+	refcount_t ref;
+	struct callback_head rcu;
+};
+
+struct kretprobe_blackpoint {
+	const char *name;
+	void *addr;
+};
+
+struct prev_kprobe {
+	struct kprobe *kp;
+	unsigned long status;
+	unsigned long old_flags;
+	unsigned long saved_flags;
+};
+
+struct kprobe_ctlblk {
+	unsigned long kprobe_status;
+	unsigned long kprobe_old_flags;
+	unsigned long kprobe_saved_flags;
+	struct prev_kprobe prev_kprobe;
+};
+
+struct __arch_relative_insn {
+	u8 op;
+	s32 raddr;
+} __attribute__((packed));
+
+struct kprobe_insn_cache {
+	struct mutex mutex;
+	void * (*alloc)();
+	void (*free)(void *);
+	const char *sym;
+	struct list_head pages;
+	size_t insn_size;
+	int nr_garbage;
+};
+
+struct arch_optimized_insn {
+	kprobe_opcode_t copied_insn[4];
+	kprobe_opcode_t *insn;
+	size_t size;
+};
+
+struct optimized_kprobe {
+	struct kprobe kp;
+	struct list_head list;
+	struct arch_optimized_insn optinsn;
+};
+
+enum mod_mem_type {
+	MOD_TEXT = 0,
+	MOD_DATA = 1,
+	MOD_RODATA = 2,
+	MOD_RO_AFTER_INIT = 3,
+	MOD_INIT_TEXT = 4,
+	MOD_INIT_DATA = 5,
+	MOD_INIT_RODATA = 6,
+	MOD_MEM_NUM_TYPES = 7,
+	MOD_INVALID = -1,
+};
+
+typedef __u64 Elf64_Off;
+
+struct elf64_shdr {
+	Elf64_Word sh_name;
+	Elf64_Word sh_type;
+	Elf64_Xword sh_flags;
+	Elf64_Addr sh_addr;
+	Elf64_Off sh_offset;
+	Elf64_Xword sh_size;
+	Elf64_Word sh_link;
+	Elf64_Word sh_info;
+	Elf64_Xword sh_addralign;
+	Elf64_Xword sh_entsize;
+};
+
+typedef struct elf64_shdr Elf64_Shdr;
+
+typedef __s64 Elf64_Sxword;
+
+struct elf64_rela {
+	Elf64_Addr r_offset;
+	Elf64_Xword r_info;
+	Elf64_Sxword r_addend;
+};
+
+typedef struct elf64_rela Elf64_Rela;
+
+struct callthunk_sites {
+	s32 *call_start;
+	s32 *call_end;
+	struct paravirt_patch_site *pv_start;
+	struct paravirt_patch_site *pv_end;
+};
+
+struct elf64_hdr {
+	unsigned char e_ident[16];
+	Elf64_Half e_type;
+	Elf64_Half e_machine;
+	Elf64_Word e_version;
+	Elf64_Addr e_entry;
+	Elf64_Off e_phoff;
+	Elf64_Off e_shoff;
+	Elf64_Word e_flags;
+	Elf64_Half e_ehsize;
+	Elf64_Half e_phentsize;
+	Elf64_Half e_phnum;
+	Elf64_Half e_shentsize;
+	Elf64_Half e_shnum;
+	Elf64_Half e_shstrndx;
+};
+
+typedef struct elf64_hdr Elf64_Ehdr;
+
+struct console {
+	char name[16];
+	void (*write)(struct console *, const char *, unsigned int);
+	int (*read)(struct console *, char *, unsigned int);
+	struct tty_driver * (*device)(struct console *, int *);
+	void (*unblank)();
+	int (*setup)(struct console *, char *);
+	int (*exit)(struct console *);
+	int (*match)(struct console *, char *, int, char *);
+	short flags;
+	short index;
+	int cflag;
+	uint ispeed;
+	uint ospeed;
+	u64 seq;
+	unsigned long dropped;
+	void *data;
+	struct hlist_node node;
+};
+
+enum cons_flags {
+	CON_PRINTBUFFER = 1,
+	CON_CONSDEV = 2,
+	CON_ENABLED = 4,
+	CON_BOOT = 8,
+	CON_ANYTIME = 16,
+	CON_BRL = 32,
+	CON_EXTENDED = 64,
+	CON_SUSPENDED = 128,
+};
+
+struct hpet_channel;
+
+struct hpet_base {
+	unsigned int nr_channels;
+	unsigned int nr_clockevents;
+	unsigned int boot_cfg;
+	struct hpet_channel *channels;
+};
+
+enum hpet_mode {
+	HPET_MODE_UNUSED = 0,
+	HPET_MODE_LEGACY = 1,
+	HPET_MODE_CLOCKEVT = 2,
+	HPET_MODE_DEVICE = 3,
+};
+
+struct hpet_channel {
+	struct clock_event_device evt;
+	unsigned int num;
+	unsigned int cpu;
+	unsigned int irq;
+	unsigned int in_use;
+	enum hpet_mode mode;
+	unsigned int boot_cfg;
+	char name[10];
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+typedef irqreturn_t (*rtc_irq_handler)(int, void *);
+
+union hpet_lock {
+	struct {
+		arch_spinlock_t lock;
+		u32 value;
+	};
+	u64 lockval;
+};
+
+struct hpet_data {
+	unsigned long hd_phys_address;
+	void *hd_address;
+	unsigned short hd_nirqs;
+	unsigned int hd_state;
+	unsigned int hd_irq[32];
+};
+
+struct amd_nb_bus_dev_range {
+	u8 bus;
+	u8 dev_base;
+	u8 dev_limit;
+};
+
+struct amd_northbridge_info {
+	u16 num;
+	u64 flags;
+	struct amd_northbridge *nb;
+};
+
+struct kvm_vcpu_pv_apf_data {
+	__u32 flags;
+	__u32 token;
+	__u8 pad[56];
+	__u32 enabled;
+};
+
+struct kvm_task_sleep_head {
+	raw_spinlock_t lock;
+	struct hlist_head list;
+};
+
+struct kvm_task_sleep_node {
+	struct hlist_node link;
+	struct swait_queue_head wq;
+	u32 token;
+	int cpu;
+};
+
+struct swait_queue {
+	struct task_struct *task;
+	struct list_head task_list;
+};
+
+struct flush_tlb_info {
+	struct mm_struct *mm;
+	unsigned long start;
+	unsigned long end;
+	u64 new_tlb_gen;
+	unsigned int initiating_cpu;
+	u8 stride_shift;
+	u8 freed_tables;
+};
+
+typedef unsigned long efi_status_t;
+
+typedef u16 efi_char16_t;
+
+typedef struct {
+	__u8 b[16];
+} guid_t;
+
+typedef guid_t efi_guid_t;
+
+typedef unsigned __int128 __uint128_t;
+
+struct pv_info {
+	const char *name;
+};
+
+struct pv_cpu_ops {
+	void (*io_delay)();
+};
+
+struct pv_irq_ops {};
+
+struct pv_mmu_ops {
+	void (*flush_tlb_user)();
+	void (*flush_tlb_kernel)();
+	void (*flush_tlb_one_user)(unsigned long);
+	void (*flush_tlb_multi)(const struct cpumask *, const struct flush_tlb_info *);
+	void (*tlb_remove_table)(struct mmu_gather *, void *);
+	void (*exit_mmap)(struct mm_struct *);
+	void (*notify_page_enc_status_changed)(unsigned long, int, bool);
+};
+
+struct paravirt_callee_save {
+	void *func;
+};
+
+struct pv_lock_ops {
+	void (*queued_spin_lock_slowpath)(struct qspinlock *, u32);
+	struct paravirt_callee_save queued_spin_unlock;
+	void (*wait)(u8 *, u8);
+	void (*kick)(int);
+	struct paravirt_callee_save vcpu_is_preempted;
+};
+
+struct paravirt_patch_template {
+	struct pv_cpu_ops cpu;
+	struct pv_irq_ops irq;
+	struct pv_mmu_ops mmu;
+	struct pv_lock_ops lock;
+};
+
+struct of_ioapic_type {
+	u32 out_type;
+	u32 is_level;
+	u32 active_low;
+};
+
+struct arch_uprobe;
+
+struct uprobe_xol_ops {
+	bool (*emulate)(struct arch_uprobe *, struct pt_regs *);
+	int (*pre_xol)(struct arch_uprobe *, struct pt_regs *);
+	int (*post_xol)(struct arch_uprobe *, struct pt_regs *);
+	void (*abort)(struct arch_uprobe *, struct pt_regs *);
+};
+
+struct arch_uprobe {
+	union {
+		u8 insn[16];
+		u8 ixol[16];
+	};
+	const struct uprobe_xol_ops *ops;
+	union {
+		struct {
+			s32 offs;
+			u8 ilen;
+			u8 opc1;
+		} branch;
+		struct {
+			u8 fixups;
+			u8 ilen;
+		} defparam;
+		struct {
+			u8 reg_offset;
+			u8 ilen;
+		} push;
+	};
+};
+
+enum rp_check {
+	RP_CHECK_CALL = 0,
+	RP_CHECK_CHAIN_CALL = 1,
+	RP_CHECK_RET = 2,
+};
+
+enum perf_sample_regs_abi {
+	PERF_SAMPLE_REGS_ABI_NONE = 0,
+	PERF_SAMPLE_REGS_ABI_32 = 1,
+	PERF_SAMPLE_REGS_ABI_64 = 2,
+};
+
+struct __va_list_tag {
+	unsigned int gp_offset;
+	unsigned int fp_offset;
+	void *overflow_arg_area;
+	void *reg_save_area;
+};
+
+typedef __builtin_va_list va_list;
+
+struct va_format {
+	const char *fmt;
+	va_list *va;
+};
+
+struct core_text {
+	unsigned long base;
+	unsigned long end;
+	const char *name;
+};
+
+enum cp_error_code {
+	CP_EC = 32767,
+	CP_RET = 1,
+	CP_IRET = 2,
+	CP_ENDBR = 3,
+	CP_RSTRORSSP = 4,
+	CP_SETSSBSY = 5,
+	CP_ENCL = 32768,
+};
+
+enum auditsc_class_t {
+	AUDITSC_NATIVE = 0,
+	AUDITSC_COMPAT = 1,
+	AUDITSC_OPEN = 2,
+	AUDITSC_OPENAT = 3,
+	AUDITSC_SOCKETCALL = 4,
+	AUDITSC_EXECVE = 5,
+	AUDITSC_OPENAT2 = 6,
+	AUDITSC_NVALS = 7,
+};
+
+struct pci_hostbridge_probe {
+	u32 bus;
+	u32 slot;
+	u32 vendor;
+	u32 device;
+};
+
+typedef u8 uint8_t;
+
+enum {
+	REGION_INTERSECTS = 0,
+	REGION_DISJOINT = 1,
+	REGION_MIXED = 2,
+};
+
+enum memblock_flags {
+	MEMBLOCK_NONE = 0,
+	MEMBLOCK_HOTPLUG = 1,
+	MEMBLOCK_MIRROR = 2,
+	MEMBLOCK_NOMAP = 4,
+	MEMBLOCK_DRIVER_MANAGED = 8,
+};
+
+struct map_range {
+	unsigned long start;
+	unsigned long end;
+	unsigned int page_size_mask;
+};
+
+struct memblock_region;
+
+struct memblock_type {
+	unsigned long cnt;
+	unsigned long max;
+	phys_addr_t total_size;
+	struct memblock_region *regions;
+	char *name;
+};
+
+struct memblock_region {
+	phys_addr_t base;
+	phys_addr_t size;
+	enum memblock_flags flags;
+};
+
+struct kcore_list {
+	struct list_head list;
+	unsigned long addr;
+	size_t size;
+	int type;
+};
+
+enum kcore_type {
+	KCORE_TEXT = 0,
+	KCORE_VMALLOC = 1,
+	KCORE_RAM = 2,
+	KCORE_VMEMMAP = 3,
+	KCORE_USER = 4,
+};
+
+enum {
+	MEMORY_HOTPLUG_MIN_BOOTMEM_TYPE = 12,
+	SECTION_INFO = 12,
+	MIX_SECTION_INFO = 13,
+	NODE_INFO = 14,
+	MEMORY_HOTPLUG_MAX_BOOTMEM_TYPE = 14,
+};
+
+struct x86_mapping_info {
+	void * (*alloc_pgt_page)(void *);
+	void *context;
+	unsigned long page_flag;
+	unsigned long offset;
+	bool direct_gbpages;
+	unsigned long kernpg_flag;
+};
+
+struct mhp_params {
+	struct vmem_altmap *altmap;
+	pgprot_t pgprot;
+	struct dev_pagemap *pgmap;
+};
+
+typedef void (*btf_trace_page_fault_user)(void *, unsigned long, struct pt_regs *, unsigned long);
+
+typedef void (*btf_trace_page_fault_kernel)(void *, unsigned long, struct pt_regs *, unsigned long);
+
+enum perf_sw_ids {
+	PERF_COUNT_SW_CPU_CLOCK = 0,
+	PERF_COUNT_SW_TASK_CLOCK = 1,
+	PERF_COUNT_SW_PAGE_FAULTS = 2,
+	PERF_COUNT_SW_CONTEXT_SWITCHES = 3,
+	PERF_COUNT_SW_CPU_MIGRATIONS = 4,
+	PERF_COUNT_SW_PAGE_FAULTS_MIN = 5,
+	PERF_COUNT_SW_PAGE_FAULTS_MAJ = 6,
+	PERF_COUNT_SW_ALIGNMENT_FAULTS = 7,
+	PERF_COUNT_SW_EMULATION_FAULTS = 8,
+	PERF_COUNT_SW_DUMMY = 9,
+	PERF_COUNT_SW_BPF_OUTPUT = 10,
+	PERF_COUNT_SW_CGROUP_SWITCHES = 11,
+	PERF_COUNT_SW_MAX = 12,
+};
+
+struct trace_event_raw_x86_exceptions {
+	struct trace_entry ent;
+	unsigned long address;
+	unsigned long ip;
+	unsigned long error_code;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_x86_exceptions {};
+
+enum {
+	IORES_MAP_SYSTEM_RAM = 1,
+	IORES_MAP_ENCRYPTED = 2,
+};
+
+struct ioremap_desc {
+	unsigned int flags;
+};
+
+struct va_alignment {
+	int flags;
+	unsigned long mask;
+	unsigned long bits;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct ptdesc {
+	unsigned long __page_flags;
+	union {
+		struct callback_head pt_rcu_head;
+		struct list_head pt_list;
+		struct {
+			unsigned long _pt_pad_1;
+			pgtable_t pmd_huge_pte;
+		};
+	};
+	unsigned long __page_mapping;
+	union {
+		struct mm_struct *pt_mm;
+		atomic_t pt_frag_refcount;
+	};
+	union {
+		unsigned long _pt_pad_2;
+		spinlock_t ptl;
+	};
+	unsigned int __page_type;
+	atomic_t _refcount;
+	unsigned long pt_memcg_data;
+};
+
+struct tlb_state_shared {
+	bool is_lazy;
+};
+
+enum tlb_flush_reason {
+	TLB_FLUSH_ON_TASK_SWITCH = 0,
+	TLB_REMOTE_SHOOTDOWN = 1,
+	TLB_LOCAL_SHOOTDOWN = 2,
+	TLB_LOCAL_MM_SHOOTDOWN = 3,
+	TLB_REMOTE_SEND_IPI = 4,
+	NR_TLB_FLUSH_REASONS = 5,
+};
+
+enum task_work_notify_mode {
+	TWA_NONE = 0,
+	TWA_RESUME = 1,
+	TWA_SIGNAL = 2,
+	TWA_SIGNAL_NO_IPI = 3,
+};
+
+struct exception_stacks {
+	char DF_stack_guard[0];
+	char DF_stack[8192];
+	char NMI_stack_guard[0];
+	char NMI_stack[8192];
+	char DB_stack_guard[0];
+	char DB_stack[8192];
+	char MCE_stack_guard[0];
+	char MCE_stack[8192];
+	char VC_stack_guard[0];
+	char VC_stack[0];
+	char VC2_stack_guard[0];
+	char VC2_stack[0];
+	char IST_top_guard[0];
+};
+
+enum cpa_warn {
+	CPA_CONFLICT = 0,
+	CPA_PROTECT = 1,
+	CPA_DETECT = 2,
+};
+
+enum vm_event_item {
+	PGPGIN = 0,
+	PGPGOUT = 1,
+	PSWPIN = 2,
+	PSWPOUT = 3,
+	PGALLOC_DMA32 = 4,
+	PGALLOC_NORMAL = 5,
+	PGALLOC_MOVABLE = 6,
+	PGALLOC_NOSPLIT = 7,
+	PGALLOC_NOMERGE = 8,
+	ALLOCSTALL_DMA32 = 9,
+	ALLOCSTALL_NORMAL = 10,
+	ALLOCSTALL_MOVABLE = 11,
+	ALLOCSTALL_NOSPLIT = 12,
+	ALLOCSTALL_NOMERGE = 13,
+	PGSCAN_SKIP_DMA32 = 14,
+	PGSCAN_SKIP_NORMAL = 15,
+	PGSCAN_SKIP_MOVABLE = 16,
+	PGSCAN_SKIP_NOSPLIT = 17,
+	PGSCAN_SKIP_NOMERGE = 18,
+	PGFREE = 19,
+	PGACTIVATE = 20,
+	PGDEACTIVATE = 21,
+	PGLAZYFREE = 22,
+	PGFAULT = 23,
+	PGMAJFAULT = 24,
+	PGLAZYFREED = 25,
+	PGREFILL = 26,
+	PGREUSE = 27,
+	PGSTEAL_KSWAPD = 28,
+	PGSTEAL_DIRECT = 29,
+	PGSTEAL_KHUGEPAGED = 30,
+	PGDEMOTE_KSWAPD = 31,
+	PGDEMOTE_DIRECT = 32,
+	PGDEMOTE_KHUGEPAGED = 33,
+	PGSCAN_KSWAPD = 34,
+	PGSCAN_DIRECT = 35,
+	PGSCAN_KHUGEPAGED = 36,
+	PGSCAN_DIRECT_THROTTLE = 37,
+	PGSCAN_ANON = 38,
+	PGSCAN_FILE = 39,
+	PGSTEAL_ANON = 40,
+	PGSTEAL_FILE = 41,
+	PGINODESTEAL = 42,
+	SLABS_SCANNED = 43,
+	KSWAPD_INODESTEAL = 44,
+	KSWAPD_LOW_WMARK_HIT_QUICKLY = 45,
+	KSWAPD_HIGH_WMARK_HIT_QUICKLY = 46,
+	PAGEOUTRUN = 47,
+	PGROTATED = 48,
+	DROP_PAGECACHE = 49,
+	DROP_SLAB = 50,
+	OOM_KILL = 51,
+	PGMIGRATE_SUCCESS = 52,
+	PGMIGRATE_FAIL = 53,
+	THP_MIGRATION_SUCCESS = 54,
+	THP_MIGRATION_FAIL = 55,
+	THP_MIGRATION_SPLIT = 56,
+	COMPACTMIGRATE_SCANNED = 57,
+	COMPACTFREE_SCANNED = 58,
+	COMPACTISOLATED = 59,
+	COMPACTSTALL = 60,
+	COMPACTFAIL = 61,
+	COMPACTSUCCESS = 62,
+	KCOMPACTD_WAKE = 63,
+	KCOMPACTD_MIGRATE_SCANNED = 64,
+	KCOMPACTD_FREE_SCANNED = 65,
+	CMA_ALLOC_SUCCESS = 66,
+	CMA_ALLOC_FAIL = 67,
+	UNEVICTABLE_PGCULLED = 68,
+	UNEVICTABLE_PGSCANNED = 69,
+	UNEVICTABLE_PGRESCUED = 70,
+	UNEVICTABLE_PGMLOCKED = 71,
+	UNEVICTABLE_PGMUNLOCKED = 72,
+	UNEVICTABLE_PGCLEARED = 73,
+	UNEVICTABLE_PGSTRANDED = 74,
+	THP_FAULT_ALLOC = 75,
+	THP_FAULT_FALLBACK = 76,
+	THP_FAULT_FALLBACK_CHARGE = 77,
+	THP_COLLAPSE_ALLOC = 78,
+	THP_COLLAPSE_ALLOC_FAILED = 79,
+	THP_FILE_ALLOC = 80,
+	THP_FILE_FALLBACK = 81,
+	THP_FILE_FALLBACK_CHARGE = 82,
+	THP_FILE_MAPPED = 83,
+	THP_SPLIT_PAGE = 84,
+	THP_SPLIT_PAGE_FAILED = 85,
+	THP_DEFERRED_SPLIT_PAGE = 86,
+	THP_SPLIT_PMD = 87,
+	THP_SHATTER_PAGE = 88,
+	THP_SHATTER_PAGE_FAILED = 89,
+	THP_SHATTER_PAGE_DISCARDED = 90,
+	THP_SCAN_EXCEED_NONE_PTE = 91,
+	THP_SCAN_EXCEED_SWAP_PTE = 92,
+	THP_SCAN_EXCEED_SHARED_PTE = 93,
+	THP_SPLIT_PUD = 94,
+	THP_ZERO_PAGE_ALLOC = 95,
+	THP_ZERO_PAGE_ALLOC_FAILED = 96,
+	THP_SWPOUT = 97,
+	THP_SWPOUT_FALLBACK = 98,
+	BALLOON_INFLATE = 99,
+	BALLOON_DEFLATE = 100,
+	BALLOON_MIGRATE = 101,
+	SWAP_RA = 102,
+	SWAP_RA_HIT = 103,
+	DIRECT_MAP_LEVEL2_SPLIT = 104,
+	DIRECT_MAP_LEVEL3_SPLIT = 105,
+	NR_VM_EVENT_ITEMS = 106,
+};
+
+struct cpa_data {
+	unsigned long *vaddr;
+	pgd_t *pgd;
+	pgprot_t mask_set;
+	pgprot_t mask_clr;
+	unsigned long numpages;
+	unsigned long curpage;
+	unsigned long pfn;
+	unsigned int flags;
+	unsigned int force_split: 1;
+	unsigned int force_static_prot: 1;
+	unsigned int force_flush_all: 1;
+	struct page **pages;
+};
+
+enum {
+	PAT_UC = 0,
+	PAT_WC = 1,
+	PAT_WT = 4,
+	PAT_WP = 5,
+	PAT_WB = 6,
+	PAT_UC_MINUS = 7,
+};
+
+struct memtype {
+	u64 start;
+	u64 end;
+	u64 subtree_max_end;
+	enum page_cache_mode type;
+	struct rb_node rb;
+};
+
+struct pagerange_state {
+	unsigned long cur_pfn;
+	int ram;
+	int not_ram;
+};
+
+typedef struct {
+	u64 val;
+} pfn_t;
+
+struct rb_augment_callbacks {
+	void (*propagate)(struct rb_node *, struct rb_node *);
+	void (*copy)(struct rb_node *, struct rb_node *);
+	void (*rotate)(struct rb_node *, struct rb_node *);
+};
+
+enum {
+	MEMTYPE_EXACT_MATCH = 0,
+	MEMTYPE_END_MATCH = 1,
+};
+
+struct kaslr_memory_region {
+	unsigned long *base;
+	unsigned long size_tb;
+};
+
+struct rnd_state {
+	__u32 s1;
+	__u32 s2;
+	__u32 s3;
+	__u32 s4;
+};
+
+enum pti_mode {
+	PTI_AUTO = 0,
+	PTI_FORCE_OFF = 1,
+	PTI_FORCE_ON = 2,
+};
+
+enum pti_clone_level {
+	PTI_CLONE_PMD = 0,
+	PTI_CLONE_PTE = 1,
+};
+
+struct crypto_tfm;
+
+struct cipher_alg {
+	unsigned int cia_min_keysize;
+	unsigned int cia_max_keysize;
+	int (*cia_setkey)(struct crypto_tfm *, const u8 *, unsigned int);
+	void (*cia_encrypt)(struct crypto_tfm *, u8 *, const u8 *);
+	void (*cia_decrypt)(struct crypto_tfm *, u8 *, const u8 *);
+};
+
+struct compress_alg {
+	int (*coa_compress)(struct crypto_tfm *, const u8 *, unsigned int, u8 *, unsigned int *);
+	int (*coa_decompress)(struct crypto_tfm *, const u8 *, unsigned int, u8 *, unsigned int *);
+};
+
+struct crypto_type;
+
+struct crypto_alg {
+	struct list_head cra_list;
+	struct list_head cra_users;
+	u32 cra_flags;
+	unsigned int cra_blocksize;
+	unsigned int cra_ctxsize;
+	unsigned int cra_alignmask;
+	int cra_priority;
+	refcount_t cra_refcnt;
+	char cra_name[128];
+	char cra_driver_name[128];
+	const struct crypto_type *cra_type;
+	union {
+		struct cipher_alg cipher;
+		struct compress_alg compress;
+	} cra_u;
+	int (*cra_init)(struct crypto_tfm *);
+	void (*cra_exit)(struct crypto_tfm *);
+	void (*cra_destroy)(struct crypto_alg *);
+	struct module *cra_module;
+};
+
+struct crypto_skcipher;
+
+struct skcipher_request;
+
+struct skcipher_alg {
+	int (*setkey)(struct crypto_skcipher *, const u8 *, unsigned int);
+	int (*encrypt)(struct skcipher_request *);
+	int (*decrypt)(struct skcipher_request *);
+	int (*init)(struct crypto_skcipher *);
+	void (*exit)(struct crypto_skcipher *);
+	unsigned int min_keysize;
+	unsigned int max_keysize;
+	unsigned int ivsize;
+	unsigned int chunksize;
+	unsigned int walksize;
+	struct crypto_alg base;
+};
+
+struct crypto_tfm {
+	refcount_t refcnt;
+	u32 crt_flags;
+	int node;
+	void (*exit)(struct crypto_tfm *);
+	struct crypto_alg *__crt_alg;
+	void *__crt_ctx[0];
+};
+
+struct crypto_skcipher {
+	unsigned int reqsize;
+	struct crypto_tfm base;
+};
+
+struct crypto_instance;
+
+struct crypto_type {
+	unsigned int (*ctxsize)(struct crypto_alg *, u32, u32);
+	unsigned int (*extsize)(struct crypto_alg *);
+	int (*init_tfm)(struct crypto_tfm *);
+	void (*show)(struct seq_file *, struct crypto_alg *);
+	int (*report)(struct sk_buff *, struct crypto_alg *);
+	void (*free)(struct crypto_instance *);
+	unsigned int type;
+	unsigned int maskclear;
+	unsigned int maskset;
+	unsigned int tfmsize;
+};
+
+struct crypto_template;
+
+struct crypto_spawn;
+
+struct crypto_instance {
+	struct crypto_alg alg;
+	struct crypto_template *tmpl;
+	union {
+		struct hlist_node list;
+		struct crypto_spawn *spawns;
+	};
+	struct work_struct free_work;
+	void *__ctx[0];
+};
+
+struct rtattr;
+
+struct crypto_template {
+	struct list_head list;
+	struct hlist_head instances;
+	struct module *module;
+	int (*create)(struct crypto_template *, struct rtattr **);
+	char name[128];
+};
+
+struct crypto_spawn {
+	struct list_head list;
+	struct crypto_alg *alg;
+	union {
+		struct crypto_instance *inst;
+		struct crypto_spawn *next;
+	};
+	const struct crypto_type *frontend;
+	u32 mask;
+	bool dead;
+	bool registered;
+};
+
+typedef void (*crypto_completion_t)(void *, int);
+
+struct crypto_async_request {
+	struct list_head list;
+	crypto_completion_t complete;
+	void *data;
+	struct crypto_tfm *tfm;
+	u32 flags;
+};
+
+struct skcipher_request {
+	unsigned int cryptlen;
+	u8 *iv;
+	struct scatterlist *src;
+	struct scatterlist *dst;
+	struct crypto_async_request base;
+	void *__ctx[0];
+};
+
+enum chacha_constants {
+	CHACHA_CONSTANT_EXPA = 1634760805,
+	CHACHA_CONSTANT_ND_3 = 857760878,
+	CHACHA_CONSTANT_2_BY = 2036477234,
+	CHACHA_CONSTANT_TE_K = 1797285236,
+};
+
+struct chacha_ctx {
+	u32 key[8];
+	int nrounds;
+};
+
+struct scatter_walk {
+	struct scatterlist *sg;
+	unsigned int offset;
+};
+
+struct skcipher_walk {
+	union {
+		struct {
+			struct page *page;
+			unsigned long offset;
+		} phys;
+		struct {
+			u8 *page;
+			void *addr;
+		} virt;
+	} src;
+	union {
+		struct {
+			struct page *page;
+			unsigned long offset;
+		} phys;
+		struct {
+			u8 *page;
+			void *addr;
+		} virt;
+	} dst;
+	struct scatter_walk in;
+	unsigned int nbytes;
+	struct scatter_walk out;
+	unsigned int total;
+	struct list_head buffers;
+	u8 *page;
+	u8 *buffer;
+	u8 *oiv;
+	void *iv;
+	unsigned int ivsize;
+	int flags;
+	unsigned int blocksize;
+	unsigned int stride;
+	unsigned int alignmask;
+};
+
+struct crypto_aead;
+
+struct aead_request;
+
+struct aead_alg {
+	int (*setkey)(struct crypto_aead *, const u8 *, unsigned int);
+	int (*setauthsize)(struct crypto_aead *, unsigned int);
+	int (*encrypt)(struct aead_request *);
+	int (*decrypt)(struct aead_request *);
+	int (*init)(struct crypto_aead *);
+	void (*exit)(struct crypto_aead *);
+	unsigned int ivsize;
+	unsigned int maxauthsize;
+	unsigned int chunksize;
+	struct crypto_alg base;
+};
+
+struct crypto_aead {
+	unsigned int authsize;
+	unsigned int reqsize;
+	struct crypto_tfm base;
+};
+
+struct aead_request {
+	struct crypto_async_request base;
+	unsigned int assoclen;
+	unsigned int cryptlen;
+	u8 *iv;
+	struct scatterlist *src;
+	struct scatterlist *dst;
+	void *__ctx[0];
+};
+
+struct crypto_aes_ctx {
+	u32 key_enc[60];
+	u32 key_dec[60];
+	u32 key_length;
+};
+
+struct aesni_rfc4106_gcm_ctx {
+	u8 hash_subkey[16];
+	struct crypto_aes_ctx aes_key_expanded;
+	u8 nonce[4];
+	long: 64;
+};
+
+struct generic_gcmaes_ctx {
+	u8 hash_subkey[16];
+	struct crypto_aes_ctx aes_key_expanded;
+	long: 64;
+};
+
+struct gcm_context_data {
+	u8 aad_hash[16];
+	u64 aad_length;
+	u64 in_length;
+	u8 partial_block_enc_key[16];
+	u8 orig_IV[16];
+	u8 current_counter[16];
+	u64 partial_block_len;
+	u64 unused;
+	u8 hash_keys[256];
+};
+
+struct aesni_xts_ctx {
+	u8 raw_tweak_ctx[484];
+	long: 64;
+	u8 raw_crypt_ctx[484];
+	long: 64;
+};
+
+struct hash_alg_common {
+	unsigned int digestsize;
+	unsigned int statesize;
+	struct crypto_alg base;
+};
+
+struct shash_desc;
+
+struct crypto_shash;
+
+struct shash_alg {
+	int (*init)(struct shash_desc *);
+	int (*update)(struct shash_desc *, const u8 *, unsigned int);
+	int (*final)(struct shash_desc *, u8 *);
+	int (*finup)(struct shash_desc *, const u8 *, unsigned int, u8 *);
+	int (*digest)(struct shash_desc *, const u8 *, unsigned int, u8 *);
+	int (*export)(struct shash_desc *, void *);
+	int (*import)(struct shash_desc *, const void *);
+	int (*setkey)(struct crypto_shash *, const u8 *, unsigned int);
+	int (*init_tfm)(struct crypto_shash *);
+	void (*exit_tfm)(struct crypto_shash *);
+	int (*clone_tfm)(struct crypto_shash *, struct crypto_shash *);
+	unsigned int descsize;
+	union {
+		int (*finup_mb)(struct shash_desc *, const u8 * const *, unsigned int, u8 * const *, unsigned int);
+		struct {
+			u64 android_backport_reserved1;
+		};
+		union {};
+	};
+	union {
+		unsigned int mb_max_msgs;
+		struct {
+			u64 android_backport_reserved2;
+		};
+		union {};
+	};
+	union {
+		struct {
+			unsigned int digestsize;
+			unsigned int statesize;
+			struct crypto_alg base;
+		};
+		struct hash_alg_common halg;
+	};
+};
+
+struct shash_desc {
+	struct crypto_shash *tfm;
+	void *__ctx[0];
+};
+
+struct crypto_shash {
+	unsigned int descsize;
+	struct crypto_tfm base;
+};
+
+struct sha256_state {
+	u32 state[8];
+	u64 count;
+	u8 buf[64];
+};
+
+typedef void sha256_block_fn(struct sha256_state *, const u8 *, int);
+
+struct sha512_state;
+
+typedef void sha512_block_fn(struct sha512_state *, const u8 *, int);
+
+struct sha512_state {
+	u64 state[8];
+	u64 count[2];
+	u8 buf[128];
+};
+
+enum blake2s_lengths {
+	BLAKE2S_BLOCK_SIZE = 64,
+	BLAKE2S_HASH_SIZE = 32,
+	BLAKE2S_KEY_SIZE = 32,
+	BLAKE2S_128_HASH_SIZE = 16,
+	BLAKE2S_160_HASH_SIZE = 20,
+	BLAKE2S_224_HASH_SIZE = 28,
+	BLAKE2S_256_HASH_SIZE = 32,
+};
+
+struct blake2s_state {
+	u32 h[8];
+	u32 t[2];
+	u32 f[2];
+	u8 buf[64];
+	unsigned int buflen;
+	unsigned int outlen;
+};
+
+struct polyval_tfm_ctx {
+	u8 key_powers[128];
+};
+
+struct polyval_desc_ctx {
+	u8 buffer[16];
+	u32 bytes;
+};
+
+struct poly1305_key {
+	union {
+		u32 r[5];
+		u64 r64[3];
+	};
+};
+
+struct poly1305_core_key {
+	struct poly1305_key key;
+	struct poly1305_key precomputed_s;
+};
+
+struct poly1305_state {
+	union {
+		u32 h[5];
+		u64 h64[3];
+	};
+};
+
+struct poly1305_desc_ctx {
+	u8 buf[16];
+	unsigned int buflen;
+	unsigned short rset;
+	bool sset;
+	u32 s[4];
+	struct poly1305_state h;
+	union {
+		struct poly1305_key opaque_r[11];
+		struct poly1305_core_key core_r;
+	};
+};
+
+struct poly1305_arch_internal {
+	union {
+		struct {
+			u32 h[5];
+			u32 is_base2_26;
+		};
+		u64 hs[3];
+	};
+	u64 r[2];
+	u64 pad;
+	struct {
+		u32 r2;
+		u32 r1;
+		u32 r4;
+		u32 r3;
+	} rn[9];
+};
+
+struct crypto_kpp;
+
+struct kpp_request;
+
+struct kpp_alg {
+	int (*set_secret)(struct crypto_kpp *, const void *, unsigned int);
+	int (*generate_public_key)(struct kpp_request *);
+	int (*compute_shared_secret)(struct kpp_request *);
+	unsigned int (*max_size)(struct crypto_kpp *);
+	int (*init)(struct crypto_kpp *);
+	void (*exit)(struct crypto_kpp *);
+	struct crypto_alg base;
+};
+
+struct crypto_kpp {
+	unsigned int reqsize;
+	struct crypto_tfm base;
+};
+
+struct kpp_request {
+	struct crypto_async_request base;
+	struct scatterlist *src;
+	struct scatterlist *dst;
+	unsigned int src_len;
+	unsigned int dst_len;
+	void *__ctx[0];
+};
+
+enum curve25519_lengths {
+	CURVE25519_KEY_SIZE = 32,
+};
+
+struct efi_memory_map_data {
+	phys_addr_t phys_map;
+	unsigned long size;
+	unsigned long desc_version;
+	unsigned long desc_size;
+	unsigned long flags;
+};
+
+typedef struct {
+	u32 type;
+	u32 pad;
+	u64 phys_addr;
+	u64 virt_addr;
+	u64 num_pages;
+	u64 attribute;
+} efi_memory_desc_t;
+
+struct efi_memory_map {
+	phys_addr_t phys_map;
+	void *map;
+	void *map_end;
+	int nr_map;
+	unsigned long desc_version;
+	unsigned long desc_size;
+	unsigned long flags;
+};
+
+struct efi_mem_range {
+	struct range range;
+	u64 attribute;
+};
+
+enum efi_rts_ids {
+	EFI_NONE = 0,
+	EFI_GET_TIME = 1,
+	EFI_SET_TIME = 2,
+	EFI_GET_WAKEUP_TIME = 3,
+	EFI_SET_WAKEUP_TIME = 4,
+	EFI_GET_VARIABLE = 5,
+	EFI_GET_NEXT_VARIABLE = 6,
+	EFI_SET_VARIABLE = 7,
+	EFI_QUERY_VARIABLE_INFO = 8,
+	EFI_GET_NEXT_HIGH_MONO_COUNT = 9,
+	EFI_RESET_SYSTEM = 10,
+	EFI_UPDATE_CAPSULE = 11,
+	EFI_QUERY_CAPSULE_CAPS = 12,
+	EFI_ACPI_PRM_HANDLER = 13,
+};
+
+typedef struct {
+	efi_guid_t guid;
+	u64 table;
+} efi_config_table_64_t;
+
+struct efi_setup_data {
+	u64 fw_vendor;
+	u64 __unused;
+	u64 tables;
+	u64 smbios;
+	u64 reserved[8];
+};
+
+typedef struct {
+	efi_guid_t guid;
+	unsigned long *ptr;
+	const char name[16];
+} efi_config_table_type_t;
+
+typedef struct {
+	u64 signature;
+	u32 revision;
+	u32 headersize;
+	u32 crc32;
+	u32 reserved;
+} efi_table_hdr_t;
+
+typedef struct {
+	u16 year;
+	u8 month;
+	u8 day;
+	u8 hour;
+	u8 minute;
+	u8 second;
+	u8 pad1;
+	u32 nanosecond;
+	s16 timezone;
+	u8 daylight;
+	u8 pad2;
+} efi_time_t;
+
+typedef struct {
+	u32 resolution;
+	u32 accuracy;
+	u8 sets_to_zero;
+} efi_time_cap_t;
+
+typedef u8 efi_bool_t;
+
+typedef struct {
+	efi_guid_t guid;
+	u32 headersize;
+	u32 flags;
+	u32 imagesize;
+} efi_capsule_header_t;
+
+typedef struct {
+	efi_table_hdr_t hdr;
+	u32 get_time;
+	u32 set_time;
+	u32 get_wakeup_time;
+	u32 set_wakeup_time;
+	u32 set_virtual_address_map;
+	u32 convert_pointer;
+	u32 get_variable;
+	u32 get_next_variable;
+	u32 set_variable;
+	u32 get_next_high_mono_count;
+	u32 reset_system;
+	u32 update_capsule;
+	u32 query_capsule_caps;
+	u32 query_variable_info;
+} efi_runtime_services_32_t;
+
+typedef union {
+	struct {
+		efi_table_hdr_t hdr;
+		efi_status_t (*get_time)(efi_time_t *, efi_time_cap_t *);
+		efi_status_t (*set_time)(efi_time_t *);
+		efi_status_t (*get_wakeup_time)(efi_bool_t *, efi_bool_t *, efi_time_t *);
+		efi_status_t (*set_wakeup_time)(efi_bool_t, efi_time_t *);
+		efi_status_t (*set_virtual_address_map)(unsigned long, unsigned long, u32, efi_memory_desc_t *);
+		void *convert_pointer;
+		efi_status_t (*get_variable)(efi_char16_t *, efi_guid_t *, u32 *, unsigned long *, void *);
+		efi_status_t (*get_next_variable)(unsigned long *, efi_char16_t *, efi_guid_t *);
+		efi_status_t (*set_variable)(efi_char16_t *, efi_guid_t *, u32, unsigned long, void *);
+		efi_status_t (*get_next_high_mono_count)(u32 *);
+		void (*reset_system)(int, efi_status_t, unsigned long, efi_char16_t *);
+		efi_status_t (*update_capsule)(efi_capsule_header_t **, unsigned long, unsigned long);
+		efi_status_t (*query_capsule_caps)(efi_capsule_header_t **, unsigned long, u64 *, int *);
+		efi_status_t (*query_variable_info)(u32, u64 *, u64 *, u64 *);
+	};
+	efi_runtime_services_32_t mixed_mode;
+} efi_runtime_services_t;
+
+typedef struct {
+	efi_guid_t guid;
+	u32 table;
+} efi_config_table_32_t;
+
+typedef union {
+	struct {
+		efi_guid_t guid;
+		void *table;
+	};
+	efi_config_table_32_t mixed_mode;
+} efi_config_table_t;
+
+typedef struct {
+	u32 version;
+	u32 length;
+	u64 memory_protection_attribute;
+} efi_properties_table_t;
+
+typedef struct {
+	efi_table_hdr_t hdr;
+	u32 fw_vendor;
+	u32 fw_revision;
+	u32 con_in_handle;
+	u32 con_in;
+	u32 con_out_handle;
+	u32 con_out;
+	u32 stderr_handle;
+	u32 stderr;
+	u32 runtime;
+	u32 boottime;
+	u32 nr_tables;
+	u32 tables;
+} efi_system_table_32_t;
+
+typedef struct {
+	efi_table_hdr_t hdr;
+	u64 fw_vendor;
+	u32 fw_revision;
+	u32 __pad1;
+	u64 con_in_handle;
+	u64 con_in;
+	u64 con_out_handle;
+	u64 con_out;
+	u64 stderr_handle;
+	u64 stderr;
+	u64 runtime;
+	u64 boottime;
+	u32 nr_tables;
+	u32 __pad2;
+	u64 tables;
+} efi_system_table_64_t;
+
+union efi_simple_text_input_protocol;
+
+typedef union efi_simple_text_input_protocol efi_simple_text_input_protocol_t;
+
+union efi_simple_text_output_protocol;
+
+typedef union efi_simple_text_output_protocol efi_simple_text_output_protocol_t;
+
+union efi_boot_services;
+
+typedef union efi_boot_services efi_boot_services_t;
+
+typedef union {
+	struct {
+		efi_table_hdr_t hdr;
+		unsigned long fw_vendor;
+		u32 fw_revision;
+		unsigned long con_in_handle;
+		efi_simple_text_input_protocol_t *con_in;
+		unsigned long con_out_handle;
+		efi_simple_text_output_protocol_t *con_out;
+		unsigned long stderr_handle;
+		unsigned long stderr;
+		efi_runtime_services_t *runtime;
+		efi_boot_services_t *boottime;
+		unsigned long nr_tables;
+		unsigned long tables;
+	};
+	efi_system_table_32_t mixed_mode;
+} efi_system_table_t;
+
+typedef int (*efi_memattr_perm_setter)(struct mm_struct *, efi_memory_desc_t *, bool);
+
+struct pm_qos_request {
+	struct plist_node node;
+	struct pm_qos_constraints *qos;
+};
+
+enum bpf_text_poke_type {
+	BPF_MOD_CALL = 0,
+	BPF_MOD_JUMP = 1,
+};
+
+enum bpf_link_type {
+	BPF_LINK_TYPE_UNSPEC = 0,
+	BPF_LINK_TYPE_RAW_TRACEPOINT = 1,
+	BPF_LINK_TYPE_TRACING = 2,
+	BPF_LINK_TYPE_CGROUP = 3,
+	BPF_LINK_TYPE_ITER = 4,
+	BPF_LINK_TYPE_NETNS = 5,
+	BPF_LINK_TYPE_XDP = 6,
+	BPF_LINK_TYPE_PERF_EVENT = 7,
+	BPF_LINK_TYPE_KPROBE_MULTI = 8,
+	BPF_LINK_TYPE_STRUCT_OPS = 9,
+	BPF_LINK_TYPE_NETFILTER = 10,
+	BPF_LINK_TYPE_TCX = 11,
+	BPF_LINK_TYPE_UPROBE_MULTI = 12,
+	MAX_BPF_LINK_TYPE = 13,
+};
+
+struct sock_fprog_kern {
+	u16 len;
+	struct sock_filter *filter;
+};
+
+struct bpf_map_dev_ops;
+
+struct bpf_offloaded_map {
+	struct bpf_map map;
+	struct net_device *netdev;
+	const struct bpf_map_dev_ops *dev_ops;
+	void *dev_priv;
+	struct list_head offloads;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct bpf_map_dev_ops {
+	int (*map_get_next_key)(struct bpf_offloaded_map *, void *, void *);
+	int (*map_lookup_elem)(struct bpf_offloaded_map *, void *, void *);
+	int (*map_update_elem)(struct bpf_offloaded_map *, void *, void *, u64);
+	int (*map_delete_elem)(struct bpf_offloaded_map *, void *);
+	u64 android_kabi_reserved1;
+};
+
+struct Qdisc_class_ops;
+
+struct gnet_dump;
+
+struct Qdisc_ops {
+	struct Qdisc_ops *next;
+	const struct Qdisc_class_ops *cl_ops;
+	char id[16];
+	int priv_size;
+	unsigned int static_flags;
+	int (*enqueue)(struct sk_buff *, struct Qdisc *, struct sk_buff **);
+	struct sk_buff * (*dequeue)(struct Qdisc *);
+	struct sk_buff * (*peek)(struct Qdisc *);
+	int (*init)(struct Qdisc *, struct nlattr *, struct netlink_ext_ack *);
+	void (*reset)(struct Qdisc *);
+	void (*destroy)(struct Qdisc *);
+	int (*change)(struct Qdisc *, struct nlattr *, struct netlink_ext_ack *);
+	void (*attach)(struct Qdisc *);
+	int (*change_tx_queue_len)(struct Qdisc *, unsigned int);
+	void (*change_real_num_tx)(struct Qdisc *, unsigned int);
+	int (*dump)(struct Qdisc *, struct sk_buff *);
+	int (*dump_stats)(struct Qdisc *, struct gnet_dump *);
+	void (*ingress_block_set)(struct Qdisc *, u32);
+	void (*egress_block_set)(struct Qdisc *, u32);
+	u32 (*ingress_block_get)(struct Qdisc *);
+	u32 (*egress_block_get)(struct Qdisc *);
+	struct module *owner;
+	u64 android_kabi_reserved1;
+};
+
+struct tcmsg;
+
+struct qdisc_walker;
+
+struct tcf_block;
+
+struct Qdisc_class_ops {
+	unsigned int flags;
+	struct netdev_queue * (*select_queue)(struct Qdisc *, struct tcmsg *);
+	int (*graft)(struct Qdisc *, unsigned long, struct Qdisc *, struct Qdisc **, struct netlink_ext_ack *);
+	struct Qdisc * (*leaf)(struct Qdisc *, unsigned long);
+	void (*qlen_notify)(struct Qdisc *, unsigned long);
+	unsigned long (*find)(struct Qdisc *, u32);
+	int (*change)(struct Qdisc *, u32, u32, struct nlattr **, unsigned long *, struct netlink_ext_ack *);
+	int (*delete)(struct Qdisc *, unsigned long, struct netlink_ext_ack *);
+	void (*walk)(struct Qdisc *, struct qdisc_walker *);
+	struct tcf_block * (*tcf_block)(struct Qdisc *, unsigned long, struct netlink_ext_ack *);
+	unsigned long (*bind_tcf)(struct Qdisc *, unsigned long, u32);
+	void (*unbind_tcf)(struct Qdisc *, unsigned long);
+	int (*dump)(struct Qdisc *, unsigned long, struct sk_buff *, struct tcmsg *);
+	int (*dump_stats)(struct Qdisc *, unsigned long, struct gnet_dump *);
+	u64 android_kabi_reserved1;
+};
+
+struct tcmsg {
+	unsigned char tcm_family;
+	unsigned char tcm__pad1;
+	unsigned short tcm__pad2;
+	int tcm_ifindex;
+	__u32 tcm_handle;
+	__u32 tcm_parent;
+	__u32 tcm_info;
+};
+
+struct flow_block {
+	struct list_head cb_list;
+};
+
+struct tcf_chain;
+
+struct tcf_block {
+	struct mutex lock;
+	struct list_head chain_list;
+	u32 index;
+	u32 classid;
+	refcount_t refcnt;
+	struct net *net;
+	struct Qdisc *q;
+	struct rw_semaphore cb_lock;
+	struct flow_block flow_block;
+	struct list_head owner_list;
+	bool keep_dst;
+	atomic_t offloadcnt;
+	unsigned int nooffloaddevcnt;
+	unsigned int lockeddevcnt;
+	struct {
+		struct tcf_chain *chain;
+		struct list_head filter_chain_list;
+	} chain0;
+	struct callback_head rcu;
+	struct hlist_head proto_destroy_ht[128];
+	struct mutex proto_destroy_lock;
+};
+
+struct tcf_proto;
+
+struct tcf_proto_ops;
+
+struct tcf_chain {
+	struct mutex filter_chain_lock;
+	struct tcf_proto __attribute__((btf_type_tag("rcu"))) *filter_chain;
+	struct list_head list;
+	struct tcf_block *block;
+	u32 index;
+	unsigned int refcnt;
+	unsigned int action_refcnt;
+	bool explicitly_created;
+	bool flushing;
+	const struct tcf_proto_ops *tmplt_ops;
+	void *tmplt_priv;
+	struct callback_head rcu;
+};
+
+struct tcf_result;
+
+struct tcf_proto {
+	struct tcf_proto __attribute__((btf_type_tag("rcu"))) *next;
+	void __attribute__((btf_type_tag("rcu"))) *root;
+	int (*classify)(struct sk_buff *, const struct tcf_proto *, struct tcf_result *);
+	__be16 protocol;
+	u32 prio;
+	void *data;
+	const struct tcf_proto_ops *ops;
+	struct tcf_chain *chain;
+	spinlock_t lock;
+	bool deleting;
+	refcount_t refcnt;
+	struct callback_head rcu;
+	struct hlist_node destroy_ht_node;
+};
+
+struct tcf_result {
+	union {
+		struct {
+			unsigned long class;
+			u32 classid;
+		};
+		const struct tcf_proto *goto_tp;
+	};
+};
+
+typedef int flow_setup_cb_t(enum tc_setup_type, void *, void *);
+
+struct tcf_walker;
+
+struct tcf_exts;
+
+struct tcf_proto_ops {
+	struct list_head head;
+	char kind[16];
+	int (*classify)(struct sk_buff *, const struct tcf_proto *, struct tcf_result *);
+	int (*init)(struct tcf_proto *);
+	void (*destroy)(struct tcf_proto *, bool, struct netlink_ext_ack *);
+	void * (*get)(struct tcf_proto *, u32);
+	void (*put)(struct tcf_proto *, void *);
+	int (*change)(struct net *, struct sk_buff *, struct tcf_proto *, unsigned long, u32, struct nlattr **, void **, u32, struct netlink_ext_ack *);
+	int (*delete)(struct tcf_proto *, void *, bool *, bool, struct netlink_ext_ack *);
+	bool (*delete_empty)(struct tcf_proto *);
+	void (*walk)(struct tcf_proto *, struct tcf_walker *, bool);
+	int (*reoffload)(struct tcf_proto *, bool, flow_setup_cb_t *, void *, struct netlink_ext_ack *);
+	void (*hw_add)(struct tcf_proto *, void *);
+	void (*hw_del)(struct tcf_proto *, void *);
+	void (*bind_class)(void *, u32, unsigned long, void *, unsigned long);
+	void * (*tmplt_create)(struct net *, struct tcf_chain *, struct nlattr **, struct netlink_ext_ack *);
+	void (*tmplt_destroy)(void *);
+	void (*tmplt_reoffload)(struct tcf_chain *, bool, flow_setup_cb_t *, void *);
+	struct tcf_exts * (*get_exts)(const struct tcf_proto *, u32);
+	int (*dump)(struct net *, struct tcf_proto *, void *, struct sk_buff *, struct tcmsg *, bool);
+	int (*terse_dump)(struct net *, struct tcf_proto *, void *, struct sk_buff *, struct tcmsg *, bool);
+	int (*tmplt_dump)(struct sk_buff *, struct net *, void *);
+	struct module *owner;
+	int flags;
+};
+
+struct tc_stats {
+	__u64 bytes;
+	__u32 packets;
+	__u32 drops;
+	__u32 overlimits;
+	__u32 bps;
+	__u32 pps;
+	__u32 qlen;
+	__u32 backlog;
+};
+
+struct gnet_dump {
+	spinlock_t *lock;
+	struct sk_buff *skb;
+	struct nlattr *tail;
+	int compat_tc_stats;
+	int compat_xstats;
+	int padattr;
+	void *xstats;
+	int xstats_len;
+	struct tc_stats tc_stats;
+};
+
+struct tc_sizespec {
+	unsigned char cell_log;
+	unsigned char size_log;
+	short cell_align;
+	int overhead;
+	unsigned int linklayer;
+	unsigned int mpu;
+	unsigned int mtu;
+	unsigned int tsize;
+};
+
+struct qdisc_size_table {
+	struct callback_head rcu;
+	struct list_head list;
+	struct tc_sizespec szopts;
+	int refcnt;
+	u16 data[0];
+};
+
+struct net_rate_estimator {
+	struct gnet_stats_basic_sync *bstats;
+	spinlock_t *stats_lock;
+	bool running;
+	struct gnet_stats_basic_sync __attribute__((btf_type_tag("percpu"))) *cpu_bstats;
+	u8 ewma_log;
+	u8 intvl_log;
+	seqcount_t seq;
+	u64 last_packets;
+	u64 last_bytes;
+	u64 avpps;
+	u64 avbps;
+	unsigned long next_jiffies;
+	struct timer_list timer;
+	struct callback_head rcu;
+};
+
+enum bpf_tramp_prog_type {
+	BPF_TRAMP_FENTRY = 0,
+	BPF_TRAMP_FEXIT = 1,
+	BPF_TRAMP_MODIFY_RETURN = 2,
+	BPF_TRAMP_MAX = 3,
+	BPF_TRAMP_REPLACE = 4,
+};
+
+enum {
+	BPF_REG_0 = 0,
+	BPF_REG_1 = 1,
+	BPF_REG_2 = 2,
+	BPF_REG_3 = 3,
+	BPF_REG_4 = 4,
+	BPF_REG_5 = 5,
+	BPF_REG_6 = 6,
+	BPF_REG_7 = 7,
+	BPF_REG_8 = 8,
+	BPF_REG_9 = 9,
+	BPF_REG_10 = 10,
+	__MAX_BPF_REG = 11,
+};
+
+enum bpf_jit_poke_reason {
+	BPF_POKE_REASON_TAIL_CALL = 0,
+};
+
+struct bpf_array_aux;
+
+struct bpf_array {
+	struct bpf_map map;
+	u32 elem_size;
+	u32 index_mask;
+	struct bpf_array_aux *aux;
+	union {
+		struct {
+			struct {} __empty_value;
+			char value[0];
+		};
+		struct {
+			struct {} __empty_ptrs;
+			void *ptrs[0];
+		};
+		struct {
+			struct {} __empty_pptrs;
+			void __attribute__((btf_type_tag("percpu"))) *pptrs[0];
+		};
+	};
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct bpf_array_aux {
+	struct list_head poke_progs;
+	struct bpf_map *map;
+	struct mutex poke_mutex;
+	struct work_struct work;
+};
+
+struct bpf_tramp_link;
+
+struct bpf_tramp_links {
+	struct bpf_tramp_link *links[38];
+	int nr_links;
+};
+
+struct bpf_link_ops;
+
+struct bpf_link {
+	atomic64_t refcnt;
+	u32 id;
+	enum bpf_link_type type;
+	const struct bpf_link_ops *ops;
+	struct bpf_prog *prog;
+	union {
+		struct callback_head rcu;
+		struct work_struct work;
+	};
+};
+
+struct bpf_tramp_link {
+	struct bpf_link link;
+	struct hlist_node tramp_hlist;
+	u64 cookie;
+};
+
+struct bpf_link_info;
+
+struct bpf_link_ops {
+	void (*release)(struct bpf_link *);
+	void (*dealloc)(struct bpf_link *);
+	void (*dealloc_deferred)(struct bpf_link *);
+	int (*detach)(struct bpf_link *);
+	int (*update_prog)(struct bpf_link *, struct bpf_prog *, struct bpf_prog *);
+	void (*show_fdinfo)(const struct bpf_link *, struct seq_file *);
+	int (*fill_link_info)(const struct bpf_link *, struct bpf_link_info *);
+	int (*update_map)(struct bpf_link *, struct bpf_map *, struct bpf_map *);
+	u64 android_kabi_reserved1;
+};
+
+struct bpf_link_info {
+	__u32 type;
+	__u32 id;
+	__u32 prog_id;
+	union {
+		struct {
+			__u64 tp_name;
+			__u32 tp_name_len;
+		} raw_tracepoint;
+		struct {
+			__u32 attach_type;
+			__u32 target_obj_id;
+			__u32 target_btf_id;
+		} tracing;
+		struct {
+			__u64 cgroup_id;
+			__u32 attach_type;
+		} cgroup;
+		struct {
+			__u64 target_name;
+			__u32 target_name_len;
+			union {
+				struct {
+					__u32 map_id;
+				} map;
+			};
+			union {
+				struct {
+					__u64 cgroup_id;
+					__u32 order;
+				} cgroup;
+				struct {
+					__u32 tid;
+					__u32 pid;
+				} task;
+			};
+		} iter;
+		struct {
+			__u32 netns_ino;
+			__u32 attach_type;
+		} netns;
+		struct {
+			__u32 ifindex;
+		} xdp;
+		struct {
+			__u32 map_id;
+		} struct_ops;
+		struct {
+			__u32 pf;
+			__u32 hooknum;
+			__s32 priority;
+			__u32 flags;
+		} netfilter;
+		struct {
+			__u64 addrs;
+			__u32 count;
+			__u32 flags;
+		} kprobe_multi;
+		struct {
+			__u32 type;
+			union {
+				struct {
+					__u64 file_name;
+					__u32 name_len;
+					__u32 offset;
+				} uprobe;
+				struct {
+					__u64 func_name;
+					__u32 name_len;
+					__u32 offset;
+					__u64 addr;
+				} kprobe;
+				struct {
+					__u64 tp_name;
+					__u32 name_len;
+				} tracepoint;
+				struct {
+					__u64 config;
+					__u32 type;
+				} event;
+			};
+		} perf_event;
+		struct {
+			__u32 ifindex;
+			__u32 attach_type;
+		} tcx;
+	};
+};
+
+struct jit_context {
+	int cleanup_addr;
+	int tail_call_direct_label;
+	int tail_call_indirect_label;
+};
+
+struct bpf_binary_header {
+	u32 size;
+	long: 0;
+	u8 image[0];
+};
+
+typedef void (*bpf_jit_fill_hole_t)(void *, unsigned int);
+
+struct bpf_tramp_run_ctx;
+
+typedef u64 (*bpf_trampoline_enter_t)(struct bpf_prog *, struct bpf_tramp_run_ctx *);
+
+struct bpf_tramp_run_ctx {
+	struct bpf_run_ctx run_ctx;
+	u64 bpf_cookie;
+	struct bpf_run_ctx *saved_run_ctx;
+};
+
+typedef void (*bpf_trampoline_exit_t)(struct bpf_prog *, u64, struct bpf_tramp_run_ctx *);
+
+struct x64_jit_data {
+	struct bpf_binary_header *rw_header;
+	struct bpf_binary_header *header;
+	int *addrs;
+	u8 *image;
+	int proglen;
+	struct jit_context ctx;
+};
+
+struct fdtable {
+	unsigned int max_fds;
+	struct file __attribute__((btf_type_tag("rcu"))) **fd;
+	unsigned long *close_on_exec;
+	unsigned long *open_fds;
+	unsigned long *full_fds_bits;
+	struct callback_head rcu;
+};
+
+struct files_struct {
+	atomic_t count;
+	bool resize_in_progress;
+	wait_queue_head_t resize_wait;
+	struct fdtable __attribute__((btf_type_tag("rcu"))) *fdt;
+	struct fdtable fdtab;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	spinlock_t file_lock;
+	unsigned int next_fd;
+	unsigned long close_on_exec_init[1];
+	unsigned long open_fds_init[1];
+	unsigned long full_fds_bits_init[1];
+	struct file __attribute__((btf_type_tag("rcu"))) *fd_array[64];
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct io_uring_sqe;
+
+struct io_uring_cmd {
+	struct file *file;
+	const struct io_uring_sqe *sqe;
+	union {
+		void (*task_work_cb)(struct io_uring_cmd *, unsigned int);
+		void *cookie;
+	};
+	u32 cmd_op;
+	u32 flags;
+	u8 pdu[32];
+};
+
+typedef int __kernel_rwf_t;
+
+struct io_uring_sqe {
+	__u8 opcode;
+	__u8 flags;
+	__u16 ioprio;
+	__s32 fd;
+	union {
+		__u64 off;
+		__u64 addr2;
+		struct {
+			__u32 cmd_op;
+			__u32 __pad1;
+		};
+	};
+	union {
+		__u64 addr;
+		__u64 splice_off_in;
+	};
+	__u32 len;
+	union {
+		__kernel_rwf_t rw_flags;
+		__u32 fsync_flags;
+		__u16 poll_events;
+		__u32 poll32_events;
+		__u32 sync_range_flags;
+		__u32 msg_flags;
+		__u32 timeout_flags;
+		__u32 accept_flags;
+		__u32 cancel_flags;
+		__u32 open_flags;
+		__u32 statx_flags;
+		__u32 fadvise_advice;
+		__u32 splice_flags;
+		__u32 rename_flags;
+		__u32 unlink_flags;
+		__u32 hardlink_flags;
+		__u32 xattr_flags;
+		__u32 msg_ring_flags;
+		__u32 uring_cmd_flags;
+	};
+	__u64 user_data;
+	union {
+		__u16 buf_index;
+		__u16 buf_group;
+	};
+	__u16 personality;
+	union {
+		__s32 splice_fd_in;
+		__u32 file_index;
+		struct {
+			__u16 addr_len;
+			__u16 __pad3[1];
+		};
+	};
+	union {
+		struct {
+			__u64 addr3;
+			__u64 __pad2[1];
+		};
+		__u8 cmd[0];
+	};
+};
+
+typedef void (*btf_trace_task_newtask)(void *, struct task_struct *, unsigned long);
+
+typedef void (*btf_trace_task_rename)(void *, struct task_struct *, const char *);
+
+enum {
+	MM_FILEPAGES = 0,
+	MM_ANONPAGES = 1,
+	MM_SWAPENTS = 2,
+	MM_SHMEMPAGES = 3,
+	NR_MM_COUNTERS = 4,
+};
+
+enum ucount_type {
+	UCOUNT_USER_NAMESPACES = 0,
+	UCOUNT_PID_NAMESPACES = 1,
+	UCOUNT_UTS_NAMESPACES = 2,
+	UCOUNT_IPC_NAMESPACES = 3,
+	UCOUNT_NET_NAMESPACES = 4,
+	UCOUNT_MNT_NAMESPACES = 5,
+	UCOUNT_CGROUP_NAMESPACES = 6,
+	UCOUNT_TIME_NAMESPACES = 7,
+	UCOUNT_INOTIFY_INSTANCES = 8,
+	UCOUNT_INOTIFY_WATCHES = 9,
+	UCOUNT_COUNTS = 10,
+};
+
+enum rlimit_type {
+	UCOUNT_RLIMIT_NPROC = 0,
+	UCOUNT_RLIMIT_MSGQUEUE = 1,
+	UCOUNT_RLIMIT_SIGPENDING = 2,
+	UCOUNT_RLIMIT_MEMLOCK = 3,
+	UCOUNT_RLIMIT_COUNTS = 4,
+};
+
+enum {
+	TASK_COMM_LEN = 16,
+};
+
+enum proc_hidepid {
+	HIDEPID_OFF = 0,
+	HIDEPID_NO_ACCESS = 1,
+	HIDEPID_INVISIBLE = 2,
+	HIDEPID_NOT_PTRACEABLE = 4,
+};
+
+enum proc_pidonly {
+	PROC_PIDONLY_OFF = 0,
+	PROC_PIDONLY_ON = 1,
+};
+
+enum {
+	FUTEX_STATE_OK = 0,
+	FUTEX_STATE_EXITING = 1,
+	FUTEX_STATE_DEAD = 2,
+};
+
+struct trace_event_raw_task_newtask {
+	struct trace_entry ent;
+	pid_t pid;
+	char comm[16];
+	unsigned long clone_flags;
+	short oom_score_adj;
+	char __data[0];
+};
+
+struct trace_event_raw_task_rename {
+	struct trace_entry ent;
+	pid_t pid;
+	char oldcomm[16];
+	char newcomm[16];
+	short oom_score_adj;
+	char __data[0];
+};
+
+struct vm_stack {
+	struct callback_head rcu;
+	struct vm_struct *stack_vm_area;
+};
+
+struct clone_args {
+	__u64 flags;
+	__u64 pidfd;
+	__u64 child_tid;
+	__u64 parent_tid;
+	__u64 exit_signal;
+	__u64 stack;
+	__u64 stack_size;
+	__u64 tls;
+	__u64 set_tid;
+	__u64 set_tid_size;
+	__u64 cgroup;
+};
+
+struct proc_fs_info {
+	struct pid_namespace *pid_ns;
+	struct dentry *proc_self;
+	struct dentry *proc_thread_self;
+	kgid_t pid_gid;
+	enum proc_hidepid hide_pid;
+	enum proc_pidonly pidonly;
+	struct callback_head rcu;
+};
+
+struct trace_event_data_offsets_task_newtask {};
+
+struct trace_event_data_offsets_task_rename {};
+
+struct multiprocess_signals {
+	sigset_t signal;
+	struct hlist_node node;
+};
+
+typedef int (*proc_visitor)(struct task_struct *, void *);
+
+struct taint_flag {
+	char c_true;
+	char c_false;
+	bool module;
+};
+
+enum kmsg_dump_reason {
+	KMSG_DUMP_UNDEF = 0,
+	KMSG_DUMP_PANIC = 1,
+	KMSG_DUMP_OOPS = 2,
+	KMSG_DUMP_EMERG = 3,
+	KMSG_DUMP_SHUTDOWN = 4,
+	KMSG_DUMP_MAX = 5,
+};
+
+enum con_flush_mode {
+	CONSOLE_FLUSH_PENDING = 0,
+	CONSOLE_REPLAY_ALL = 1,
+};
+
+enum error_detector {
+	ERROR_DETECTOR_KFENCE = 0,
+	ERROR_DETECTOR_KASAN = 1,
+	ERROR_DETECTOR_WARN = 2,
+};
+
+enum ftrace_dump_mode {
+	DUMP_NONE = 0,
+	DUMP_ALL = 1,
+	DUMP_ORIG = 2,
+};
+
+enum ctx_state {
+	CONTEXT_DISABLED = -1,
+	CONTEXT_KERNEL = 0,
+	CONTEXT_IDLE = 1,
+	CONTEXT_USER = 2,
+	CONTEXT_GUEST = 3,
+	CONTEXT_MAX = 4,
+};
+
+struct warn_args {
+	const char *fmt;
+	va_list args;
+};
+
+typedef void (*btf_trace_cpuhp_enter)(void *, unsigned int, int, int, int (*)(unsigned int));
+
+typedef void (*btf_trace_cpuhp_multi_enter)(void *, unsigned int, int, int, int (*)(unsigned int, struct hlist_node *), struct hlist_node *);
+
+typedef void (*btf_trace_cpuhp_exit)(void *, unsigned int, int, int, int);
+
+struct cpuhp_cpu_state {
+	enum cpuhp_state state;
+	enum cpuhp_state target;
+	enum cpuhp_state fail;
+	struct task_struct *thread;
+	bool should_run;
+	bool rollback;
+	bool single;
+	bool bringup;
+	struct hlist_node *node;
+	struct hlist_node *last;
+	enum cpuhp_state cb_state;
+	int result;
+	atomic_t ap_sync_state;
+	struct completion done_up;
+	struct completion done_down;
+};
+
+struct smp_hotplug_thread {
+	struct task_struct * __attribute__((btf_type_tag("percpu"))) *store;
+	struct list_head list;
+	int (*thread_should_run)(unsigned int);
+	void (*thread_fn)(unsigned int);
+	void (*create)(unsigned int);
+	void (*setup)(unsigned int);
+	void (*cleanup)(unsigned int, bool);
+	void (*park)(unsigned int);
+	void (*unpark)(unsigned int);
+	bool selfparking;
+	const char *thread_comm;
+};
+
+struct cpuhp_step {
+	const char *name;
+	union {
+		int (*single)(unsigned int);
+		int (*multi)(unsigned int, struct hlist_node *);
+	} startup;
+	union {
+		int (*single)(unsigned int);
+		int (*multi)(unsigned int, struct hlist_node *);
+	} teardown;
+	struct hlist_head list;
+	bool cant_stop;
+	bool multi_instance;
+};
+
+enum cpu_mitigations {
+	CPU_MITIGATIONS_OFF = 0,
+	CPU_MITIGATIONS_AUTO = 1,
+	CPU_MITIGATIONS_AUTO_NOSMT = 2,
+};
+
+enum cpuhp_sync_state {
+	SYNC_STATE_DEAD = 0,
+	SYNC_STATE_KICKED = 1,
+	SYNC_STATE_SHOULD_DIE = 2,
+	SYNC_STATE_ALIVE = 3,
+	SYNC_STATE_SHOULD_ONLINE = 4,
+	SYNC_STATE_ONLINE = 5,
+};
+
+struct trace_event_raw_cpuhp_enter {
+	struct trace_entry ent;
+	unsigned int cpu;
+	int target;
+	int idx;
+	void *fun;
+	char __data[0];
+};
+
+struct trace_event_raw_cpuhp_multi_enter {
+	struct trace_entry ent;
+	unsigned int cpu;
+	int target;
+	int idx;
+	void *fun;
+	char __data[0];
+};
+
+struct trace_event_raw_cpuhp_exit {
+	struct trace_entry ent;
+	unsigned int cpu;
+	int state;
+	int idx;
+	int ret;
+	char __data[0];
+};
+
+struct cpu_down_work {
+	unsigned int cpu;
+	enum cpuhp_state target;
+};
+
+struct trace_event_data_offsets_cpuhp_enter {};
+
+struct trace_event_data_offsets_cpuhp_multi_enter {};
+
+struct trace_event_data_offsets_cpuhp_exit {};
+
+struct pipe_buffer;
+
+struct pipe_inode_info {
+	struct mutex mutex;
+	wait_queue_head_t rd_wait;
+	wait_queue_head_t wr_wait;
+	unsigned int head;
+	unsigned int tail;
+	unsigned int max_usage;
+	unsigned int ring_size;
+	unsigned int nr_accounted;
+	unsigned int readers;
+	unsigned int writers;
+	unsigned int files;
+	unsigned int r_counter;
+	unsigned int w_counter;
+	bool poll_usage;
+	struct page *tmp_page;
+	struct fasync_struct *fasync_readers;
+	struct fasync_struct *fasync_writers;
+	struct pipe_buffer *bufs;
+	struct user_struct *user;
+};
+
+struct pipe_buf_operations;
+
+struct pipe_buffer {
+	struct page *page;
+	unsigned int offset;
+	unsigned int len;
+	const struct pipe_buf_operations *ops;
+	unsigned int flags;
+	unsigned long private;
+};
+
+struct pipe_buf_operations {
+	int (*confirm)(struct pipe_inode_info *, struct pipe_buffer *);
+	void (*release)(struct pipe_inode_info *, struct pipe_buffer *);
+	bool (*try_steal)(struct pipe_inode_info *, struct pipe_buffer *);
+	bool (*get)(struct pipe_inode_info *, struct pipe_buffer *);
+};
+
+struct __kernel_old_timeval {
+	__kernel_long_t tv_sec;
+	__kernel_long_t tv_usec;
+};
+
+struct rusage {
+	struct __kernel_old_timeval ru_utime;
+	struct __kernel_old_timeval ru_stime;
+	__kernel_long_t ru_maxrss;
+	__kernel_long_t ru_ixrss;
+	__kernel_long_t ru_idrss;
+	__kernel_long_t ru_isrss;
+	__kernel_long_t ru_minflt;
+	__kernel_long_t ru_majflt;
+	__kernel_long_t ru_nswap;
+	__kernel_long_t ru_inblock;
+	__kernel_long_t ru_oublock;
+	__kernel_long_t ru_msgsnd;
+	__kernel_long_t ru_msgrcv;
+	__kernel_long_t ru_nsignals;
+	__kernel_long_t ru_nvcsw;
+	__kernel_long_t ru_nivcsw;
+};
+
+struct waitid_info;
+
+struct wait_opts {
+	enum pid_type wo_type;
+	int wo_flags;
+	struct pid *wo_pid;
+	struct waitid_info *wo_info;
+	int wo_stat;
+	struct rusage *wo_rusage;
+	wait_queue_entry_t child_wait;
+	int notask_error;
+};
+
+struct waitid_info {
+	pid_t pid;
+	uid_t uid;
+	int status;
+	int cause;
+};
+
+struct old_timeval32 {
+	old_time32_t tv_sec;
+	s32 tv_usec;
+};
+
+struct compat_rusage {
+	struct old_timeval32 ru_utime;
+	struct old_timeval32 ru_stime;
+	compat_long_t ru_maxrss;
+	compat_long_t ru_ixrss;
+	compat_long_t ru_idrss;
+	compat_long_t ru_isrss;
+	compat_long_t ru_minflt;
+	compat_long_t ru_majflt;
+	compat_long_t ru_nswap;
+	compat_long_t ru_inblock;
+	compat_long_t ru_oublock;
+	compat_long_t ru_msgsnd;
+	compat_long_t ru_msgrcv;
+	compat_long_t ru_nsignals;
+	compat_long_t ru_nvcsw;
+	compat_long_t ru_nivcsw;
+};
+
+typedef void (*btf_trace_irq_handler_entry)(void *, int, struct irqaction *);
+
+typedef void (*btf_trace_irq_handler_exit)(void *, int, struct irqaction *, int);
+
+typedef void (*btf_trace_softirq_entry)(void *, unsigned int);
+
+typedef void (*btf_trace_softirq_exit)(void *, unsigned int);
+
+typedef void (*btf_trace_softirq_raise)(void *, unsigned int);
+
+struct tasklet_struct;
+
+typedef void (*btf_trace_tasklet_entry)(void *, struct tasklet_struct *, void *);
+
+struct tasklet_struct {
+	struct tasklet_struct *next;
+	unsigned long state;
+	atomic_t count;
+	bool use_callback;
+	union {
+		void (*func)(unsigned long);
+		void (*callback)(struct tasklet_struct *);
+	};
+	unsigned long data;
+};
+
+typedef void (*btf_trace_tasklet_exit)(void *, struct tasklet_struct *, void *);
+
+struct softirq_action {
+	void (*action)(struct softirq_action *);
+};
+
+struct tasklet_head {
+	struct tasklet_struct *head;
+	struct tasklet_struct **tail;
+};
+
+enum {
+	HI_SOFTIRQ = 0,
+	TIMER_SOFTIRQ = 1,
+	NET_TX_SOFTIRQ = 2,
+	NET_RX_SOFTIRQ = 3,
+	BLOCK_SOFTIRQ = 4,
+	IRQ_POLL_SOFTIRQ = 5,
+	TASKLET_SOFTIRQ = 6,
+	SCHED_SOFTIRQ = 7,
+	HRTIMER_SOFTIRQ = 8,
+	RCU_SOFTIRQ = 9,
+	NR_SOFTIRQS = 10,
+};
+
+enum {
+	TASKLET_STATE_SCHED = 0,
+	TASKLET_STATE_RUN = 1,
+};
+
+struct trace_event_raw_irq_handler_entry {
+	struct trace_entry ent;
+	int irq;
+	u32 __data_loc_name;
+	char __data[0];
+};
+
+struct trace_event_raw_irq_handler_exit {
+	struct trace_entry ent;
+	int irq;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_softirq {
+	struct trace_entry ent;
+	unsigned int vec;
+	char __data[0];
+};
+
+struct trace_event_raw_tasklet {
+	struct trace_entry ent;
+	void *tasklet;
+	void *func;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_irq_handler_entry {
+	u32 name;
+};
+
+struct wait_bit_key {
+	void *flags;
+	int bit_nr;
+	unsigned long timeout;
+};
+
+struct wait_bit_queue_entry {
+	struct wait_bit_key key;
+	struct wait_queue_entry wq_entry;
+};
+
+struct trace_event_data_offsets_irq_handler_exit {};
+
+struct trace_event_data_offsets_softirq {};
+
+struct trace_event_data_offsets_tasklet {};
+
+enum {
+	MAX_IORES_LEVEL = 5,
+};
+
+struct resource_entry {
+	struct list_head node;
+	struct resource *res;
+	resource_size_t offset;
+	struct resource __res;
+};
+
+struct resource_constraint {
+	resource_size_t min;
+	resource_size_t max;
+	resource_size_t align;
+	resource_size_t (*alignf)(void *, const struct resource *, resource_size_t, resource_size_t);
+	void *alignf_data;
+};
+
+typedef void (*dr_release_t)(struct device *, void *);
+
+typedef int (*dr_match_t)(struct device *, void *, void *);
+
+struct pseudo_fs_context {
+	const struct super_operations *ops;
+	const struct xattr_handler **xattr;
+	const struct dentry_operations *dops;
+	unsigned long magic;
+};
+
+struct region_devres {
+	struct resource *parent;
+	resource_size_t start;
+	resource_size_t n;
+};
+
+enum sysctl_writes_mode {
+	SYSCTL_WRITES_LEGACY = -1,
+	SYSCTL_WRITES_WARN = 0,
+	SYSCTL_WRITES_STRICT = 1,
+};
+
+typedef __kernel_clock_t clock_t;
+
+struct do_proc_dointvec_minmax_conv_param {
+	int *min;
+	int *max;
+};
+
+struct do_proc_douintvec_minmax_conv_param {
+	unsigned int *min;
+	unsigned int *max;
+};
+
+struct __user_cap_header_struct;
+
+typedef struct __user_cap_header_struct *cap_user_header_t;
+
+struct __user_cap_header_struct {
+	__u32 version;
+	int pid;
+};
+
+struct __user_cap_data_struct;
+
+typedef struct __user_cap_data_struct __attribute__((btf_type_tag("user"))) *cap_user_data_t;
+
+struct __user_cap_data_struct {
+	__u32 effective;
+	__u32 permitted;
+	__u32 inheritable;
+};
+
+struct compat_iovec {
+	compat_uptr_t iov_base;
+	compat_size_t iov_len;
+};
+
+struct sigqueue {
+	struct list_head list;
+	int flags;
+	kernel_siginfo_t info;
+	struct ucounts *ucounts;
+};
+
+struct ptrace_syscall_info {
+	__u8 op;
+	__u8 pad[3];
+	__u32 arch;
+	__u64 instruction_pointer;
+	__u64 stack_pointer;
+	union {
+		struct {
+			__u64 nr;
+			__u64 args[6];
+		} entry;
+		struct {
+			__s64 rval;
+			__u8 is_error;
+		} exit;
+		struct {
+			__u64 nr;
+			__u64 args[6];
+			__u32 ret_data;
+		} seccomp;
+	};
+};
+
+struct ptrace_peeksiginfo_args {
+	__u64 off;
+	__u32 flags;
+	__s32 nr;
+};
+
+typedef int wait_bit_action_f(struct wait_bit_key *, int);
+
+struct core_vma_metadata;
+
+struct coredump_params {
+	const kernel_siginfo_t *siginfo;
+	struct file *file;
+	unsigned long limit;
+	unsigned long mm_flags;
+	int cpu;
+	loff_t written;
+	loff_t pos;
+	loff_t to_skip;
+	int vma_count;
+	size_t vma_data_size;
+	struct core_vma_metadata *vma_meta;
+};
+
+struct core_vma_metadata {
+	unsigned long start;
+	unsigned long end;
+	unsigned long flags;
+	unsigned long dump_size;
+	unsigned long pgoff;
+	struct file *file;
+};
+
+typedef void (*btf_trace_signal_generate)(void *, int, struct kernel_siginfo *, struct task_struct *, int, int);
+
+typedef void (*btf_trace_signal_deliver)(void *, int, struct kernel_siginfo *, struct k_sigaction *);
+
+enum sig_handler {
+	HANDLER_CURRENT = 0,
+	HANDLER_SIG_DFL = 1,
+	HANDLER_EXIT = 2,
+};
+
+enum {
+	TRACE_SIGNAL_DELIVERED = 0,
+	TRACE_SIGNAL_IGNORED = 1,
+	TRACE_SIGNAL_ALREADY_PENDING = 2,
+	TRACE_SIGNAL_OVERFLOW_FAIL = 3,
+	TRACE_SIGNAL_LOSE_INFO = 4,
+};
+
+enum siginfo_layout {
+	SIL_KILL = 0,
+	SIL_TIMER = 1,
+	SIL_POLL = 2,
+	SIL_FAULT = 3,
+	SIL_FAULT_TRAPNO = 4,
+	SIL_FAULT_MCEERR = 5,
+	SIL_FAULT_BNDERR = 6,
+	SIL_FAULT_PKUERR = 7,
+	SIL_FAULT_PERF_EVENT = 8,
+	SIL_CHLD = 9,
+	SIL_RT = 10,
+	SIL_SYS = 11,
+};
+
+struct trace_event_raw_signal_generate {
+	struct trace_entry ent;
+	int sig;
+	int errno;
+	int code;
+	char comm[16];
+	pid_t pid;
+	int group;
+	int result;
+	char __data[0];
+};
+
+struct trace_event_raw_signal_deliver {
+	struct trace_entry ent;
+	int sig;
+	int errno;
+	int code;
+	unsigned long sa_handler;
+	unsigned long sa_flags;
+	char __data[0];
+};
+
+typedef unsigned long old_sigset_t;
+
+typedef u32 compat_old_sigset_t;
+
+struct compat_sigaction {
+	compat_uptr_t sa_handler;
+	compat_ulong_t sa_flags;
+	compat_uptr_t sa_restorer;
+	compat_sigset_t sa_mask;
+};
+
+struct compat_old_sigaction {
+	compat_uptr_t sa_handler;
+	compat_old_sigset_t sa_mask;
+	compat_ulong_t sa_flags;
+	compat_uptr_t sa_restorer;
+};
+
+struct trace_event_data_offsets_signal_generate {};
+
+struct trace_event_data_offsets_signal_deliver {};
+
+enum {
+	PER_LINUX = 0,
+	PER_LINUX_32BIT = 8388608,
+	PER_LINUX_FDPIC = 524288,
+	PER_SVR4 = 68157441,
+	PER_SVR3 = 83886082,
+	PER_SCOSVR3 = 117440515,
+	PER_OSR5 = 100663299,
+	PER_WYSEV386 = 83886084,
+	PER_ISCR4 = 67108869,
+	PER_BSD = 6,
+	PER_SUNOS = 67108870,
+	PER_XENIX = 83886087,
+	PER_LINUX32 = 8,
+	PER_LINUX32_3GB = 134217736,
+	PER_IRIX32 = 67108873,
+	PER_IRIXN32 = 67108874,
+	PER_IRIX64 = 67108875,
+	PER_RISCOS = 12,
+	PER_SOLARIS = 67108877,
+	PER_UW7 = 68157454,
+	PER_OSF4 = 15,
+	PER_HPUX = 16,
+	PER_MASK = 255,
+};
+
+enum uts_proc {
+	UTS_PROC_ARCH = 0,
+	UTS_PROC_OSTYPE = 1,
+	UTS_PROC_OSRELEASE = 2,
+	UTS_PROC_VERSION = 3,
+	UTS_PROC_HOSTNAME = 4,
+	UTS_PROC_DOMAINNAME = 5,
+};
+
+struct tms {
+	__kernel_clock_t tms_utime;
+	__kernel_clock_t tms_stime;
+	__kernel_clock_t tms_cutime;
+	__kernel_clock_t tms_cstime;
+};
+
+struct compat_tms {
+	compat_clock_t tms_utime;
+	compat_clock_t tms_stime;
+	compat_clock_t tms_cutime;
+	compat_clock_t tms_cstime;
+};
+
+struct old_utsname {
+	char sysname[65];
+	char nodename[65];
+	char release[65];
+	char version[65];
+	char machine[65];
+};
+
+struct oldold_utsname {
+	char sysname[9];
+	char nodename[9];
+	char release[9];
+	char version[9];
+	char machine[9];
+};
+
+struct compat_rlimit {
+	compat_ulong_t rlim_cur;
+	compat_ulong_t rlim_max;
+};
+
+struct rlimit64 {
+	__u64 rlim_cur;
+	__u64 rlim_max;
+};
+
+struct getcpu_cache {
+	unsigned long blob[16];
+};
+
+struct sysinfo {
+	__kernel_long_t uptime;
+	__kernel_ulong_t loads[3];
+	__kernel_ulong_t totalram;
+	__kernel_ulong_t freeram;
+	__kernel_ulong_t sharedram;
+	__kernel_ulong_t bufferram;
+	__kernel_ulong_t totalswap;
+	__kernel_ulong_t freeswap;
+	__u16 procs;
+	__u16 pad;
+	__kernel_ulong_t totalhigh;
+	__kernel_ulong_t freehigh;
+	__u32 mem_unit;
+	char _f[0];
+};
+
+struct compat_sysinfo {
+	s32 uptime;
+	u32 loads[3];
+	u32 totalram;
+	u32 freeram;
+	u32 sharedram;
+	u32 bufferram;
+	u32 totalswap;
+	u32 freeswap;
+	u16 procs;
+	u16 pad;
+	u32 totalhigh;
+	u32 freehigh;
+	u32 mem_unit;
+	char _f[8];
+};
+
+struct prctl_mm_map {
+	__u64 start_code;
+	__u64 end_code;
+	__u64 start_data;
+	__u64 end_data;
+	__u64 start_brk;
+	__u64 brk;
+	__u64 start_stack;
+	__u64 arg_start;
+	__u64 arg_end;
+	__u64 env_start;
+	__u64 env_end;
+	__u64 *auxv;
+	__u32 auxv_size;
+	__u32 exe_fd;
+};
+
+struct wq_flusher;
+
+struct worker;
+
+struct workqueue_attrs;
+
+struct pool_workqueue;
+
+struct wq_device;
+
+struct workqueue_struct {
+	struct list_head pwqs;
+	struct list_head list;
+	struct mutex mutex;
+	int work_color;
+	int flush_color;
+	atomic_t nr_pwqs_to_flush;
+	struct wq_flusher *first_flusher;
+	struct list_head flusher_queue;
+	struct list_head flusher_overflow;
+	struct list_head maydays;
+	struct worker *rescuer;
+	int nr_drainers;
+	int saved_max_active;
+	struct workqueue_attrs *unbound_attrs;
+	struct pool_workqueue *dfl_pwq;
+	struct wq_device *wq_dev;
+	char name[24];
+	struct callback_head rcu;
+	long: 64;
+	long: 64;
+	long: 64;
+	unsigned int flags;
+	struct pool_workqueue __attribute__((btf_type_tag("percpu"))) __attribute__((btf_type_tag("rcu"))) **cpu_pwq;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct wq_flusher {
+	struct list_head list;
+	int flush_color;
+	struct completion done;
+};
+
+struct worker_pool;
+
+struct worker {
+	union {
+		struct list_head entry;
+		struct hlist_node hentry;
+	};
+	struct work_struct *current_work;
+	work_func_t current_func;
+	struct pool_workqueue *current_pwq;
+	u64 current_at;
+	unsigned int current_color;
+	int sleeping;
+	work_func_t last_func;
+	struct list_head scheduled;
+	struct task_struct *task;
+	struct worker_pool *pool;
+	struct list_head node;
+	unsigned long last_active;
+	unsigned int flags;
+	int id;
+	char desc[24];
+	struct workqueue_struct *rescue_wq;
+};
+
+struct pool_workqueue {
+	struct worker_pool *pool;
+	struct workqueue_struct *wq;
+	int work_color;
+	int flush_color;
+	int refcnt;
+	int nr_in_flight[16];
+	int nr_active;
+	int max_active;
+	struct list_head inactive_works;
+	struct list_head pwqs_node;
+	struct list_head mayday_node;
+	u64 stats[8];
+	struct kthread_work release_work;
+	struct callback_head rcu;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct ida {
+	struct xarray xa;
+};
+
+struct worker_pool {
+	raw_spinlock_t lock;
+	int cpu;
+	int node;
+	int id;
+	unsigned int flags;
+	unsigned long watchdog_ts;
+	bool cpu_stall;
+	int nr_running;
+	struct list_head worklist;
+	int nr_workers;
+	int nr_idle;
+	struct list_head idle_list;
+	struct timer_list idle_timer;
+	struct work_struct idle_cull_work;
+	struct timer_list mayday_timer;
+	struct hlist_head busy_hash[64];
+	struct worker *manager;
+	struct list_head workers;
+	struct list_head dying_workers;
+	struct completion *detach_completion;
+	struct ida worker_ida;
+	struct workqueue_attrs *attrs;
+	struct hlist_node hash_node;
+	int refcnt;
+	struct callback_head rcu;
+};
+
+enum wq_affn_scope {
+	WQ_AFFN_DFL = 0,
+	WQ_AFFN_CPU = 1,
+	WQ_AFFN_SMT = 2,
+	WQ_AFFN_CACHE = 3,
+	WQ_AFFN_NUMA = 4,
+	WQ_AFFN_SYSTEM = 5,
+	WQ_AFFN_NR_TYPES = 6,
+};
+
+struct workqueue_attrs {
+	int nice;
+	cpumask_var_t cpumask;
+	cpumask_var_t __pod_cpumask;
+	bool affn_strict;
+	enum wq_affn_scope affn_scope;
+	bool ordered;
+};
+
+struct wq_device {
+	struct workqueue_struct *wq;
+	struct device dev;
+};
+
+typedef void (*btf_trace_workqueue_queue_work)(void *, int, struct pool_workqueue *, struct work_struct *);
+
+typedef void (*btf_trace_workqueue_activate_work)(void *, struct work_struct *);
+
+typedef void (*btf_trace_workqueue_execute_start)(void *, struct work_struct *);
+
+typedef void (*btf_trace_workqueue_execute_end)(void *, struct work_struct *, work_func_t);
+
+struct wq_pod_type {
+	int nr_pods;
+	cpumask_var_t *pod_cpus;
+	int *pod_node;
+	int *cpu_pod;
+};
+
+enum {
+	POOL_MANAGER_ACTIVE = 1,
+	POOL_DISASSOCIATED = 4,
+	WORKER_DIE = 2,
+	WORKER_IDLE = 4,
+	WORKER_PREP = 8,
+	WORKER_CPU_INTENSIVE = 64,
+	WORKER_UNBOUND = 128,
+	WORKER_REBOUND = 256,
+	WORKER_NOT_RUNNING = 456,
+	NR_STD_WORKER_POOLS = 2,
+	UNBOUND_POOL_HASH_ORDER = 6,
+	BUSY_WORKER_HASH_ORDER = 6,
+	MAX_IDLE_WORKERS_RATIO = 4,
+	IDLE_WORKER_TIMEOUT = 75000,
+	MAYDAY_INITIAL_TIMEOUT = 2,
+	MAYDAY_INTERVAL = 25,
+	CREATE_COOLDOWN = 250,
+	RESCUER_NICE_LEVEL = -20,
+	HIGHPRI_NICE_LEVEL = -20,
+	WQ_NAME_LEN = 24,
+};
+
+enum pool_workqueue_stats {
+	PWQ_STAT_STARTED = 0,
+	PWQ_STAT_COMPLETED = 1,
+	PWQ_STAT_CPU_TIME = 2,
+	PWQ_STAT_CPU_INTENSIVE = 3,
+	PWQ_STAT_CM_WAKEUP = 4,
+	PWQ_STAT_REPATRIATED = 5,
+	PWQ_STAT_MAYDAY = 6,
+	PWQ_STAT_RESCUED = 7,
+	PWQ_NR_STATS = 8,
+};
+
+enum {
+	WQ_UNBOUND = 2,
+	WQ_FREEZABLE = 4,
+	WQ_MEM_RECLAIM = 8,
+	WQ_HIGHPRI = 16,
+	WQ_CPU_INTENSIVE = 32,
+	WQ_SYSFS = 64,
+	WQ_POWER_EFFICIENT = 128,
+	__WQ_DESTROYING = 32768,
+	__WQ_DRAINING = 65536,
+	__WQ_ORDERED = 131072,
+	__WQ_LEGACY = 262144,
+	__WQ_ORDERED_EXPLICIT = 524288,
+	WQ_MAX_ACTIVE = 512,
+	WQ_UNBOUND_MAX_ACTIVE = 512,
+	WQ_DFL_ACTIVE = 256,
+};
+
+enum xa_lock_type {
+	XA_LOCK_IRQ = 1,
+	XA_LOCK_BH = 2,
+};
+
+struct trace_event_raw_workqueue_queue_work {
+	struct trace_entry ent;
+	void *work;
+	void *function;
+	u32 __data_loc_workqueue;
+	int req_cpu;
+	int cpu;
+	char __data[0];
+};
+
+struct trace_event_raw_workqueue_activate_work {
+	struct trace_entry ent;
+	void *work;
+	char __data[0];
+};
+
+struct trace_event_raw_workqueue_execute_start {
+	struct trace_entry ent;
+	void *work;
+	void *function;
+	char __data[0];
+};
+
+struct trace_event_raw_workqueue_execute_end {
+	struct trace_entry ent;
+	void *work;
+	void *function;
+	char __data[0];
+};
+
+struct wq_barrier {
+	struct work_struct work;
+	struct completion done;
+	struct task_struct *task;
+};
+
+struct cwt_wait {
+	wait_queue_entry_t wait;
+	struct work_struct *work;
+};
+
+struct __una_u32 {
+	u32 x;
+};
+
+struct work_for_cpu {
+	struct work_struct work;
+	long (*fn)(void *);
+	void *arg;
+	long ret;
+};
+
+struct apply_wqattrs_ctx {
+	struct workqueue_struct *wq;
+	struct workqueue_attrs *attrs;
+	struct list_head list;
+	struct pool_workqueue *dfl_pwq;
+	struct pool_workqueue *pwq_tbl[0];
+};
+
+struct trace_event_data_offsets_workqueue_queue_work {
+	u32 workqueue;
+};
+
+struct pr_cont_work_struct {
+	bool comma;
+	work_func_t func;
+	long ctr;
+};
+
+struct trace_event_data_offsets_workqueue_activate_work {};
+
+struct trace_event_data_offsets_workqueue_execute_start {};
+
+struct trace_event_data_offsets_workqueue_execute_end {};
+
+struct execute_work {
+	struct work_struct work;
+};
+
+typedef struct {} local_lock_t;
+
+typedef void (*task_work_func_t)(struct callback_head *);
+
+struct param_attribute {
+	struct module_attribute mattr;
+	const struct kernel_param *param;
+};
+
+struct module_param_attrs {
+	unsigned int num;
+	struct attribute_group grp;
+	struct param_attribute attrs[0];
+};
+
+enum {
+	KERNEL_PARAM_OPS_FL_NOARG = 1,
+};
+
+enum {
+	KERNEL_PARAM_FL_UNSAFE = 1,
+	KERNEL_PARAM_FL_HWPARAM = 2,
+};
+
+struct module_version_attribute {
+	struct module_attribute mattr;
+	const char *module_name;
+	const char *version;
+};
+
+struct kmalloced_param {
+	struct list_head list;
+	char val[0];
+};
+
+struct sched_param {
+	int sched_priority;
+};
+
+enum KTHREAD_BITS {
+	KTHREAD_IS_PER_CPU = 0,
+	KTHREAD_SHOULD_STOP = 1,
+	KTHREAD_SHOULD_PARK = 2,
+};
+
+enum {
+	KTW_FREEZABLE = 1,
+};
+
+enum {
+	CSS_NO_REF = 1,
+	CSS_ONLINE = 2,
+	CSS_RELEASED = 4,
+	CSS_VISIBLE = 8,
+	CSS_DYING = 16,
+};
+
+enum {
+	__PERCPU_REF_ATOMIC = 1,
+	__PERCPU_REF_DEAD = 2,
+	__PERCPU_REF_ATOMIC_DEAD = 3,
+	__PERCPU_REF_FLAG_BITS = 2,
+};
+
+struct kthread_create_info {
+	char *full_name;
+	int (*threadfn)(void *);
+	void *data;
+	int node;
+	struct task_struct *result;
+	struct completion *done;
+	struct list_head list;
+};
+
+struct kthread_delayed_work {
+	struct kthread_work work;
+	struct timer_list timer;
+};
+
+struct kthread_flush_work {
+	struct kthread_work work;
+	struct completion done;
+};
+
+struct kthread {
+	unsigned long flags;
+	unsigned int cpu;
+	int result;
+	int (*threadfn)(void *);
+	void *data;
+	struct completion parked;
+	struct completion exited;
+	struct cgroup_subsys_state *blkcg_css;
+	char *full_name;
+};
+
+struct ipc_ids {
+	int in_use;
+	unsigned short seq;
+	struct rw_semaphore rwsem;
+	struct idr ipcs_idr;
+	int max_idx;
+	int last_idx;
+	struct rhashtable key_ht;
+};
+
+struct ipc_namespace {
+	struct ipc_ids ids[3];
+	int sem_ctls[4];
+	int used_sems;
+	unsigned int msg_ctlmax;
+	unsigned int msg_ctlmnb;
+	unsigned int msg_ctlmni;
+	struct percpu_counter percpu_msg_bytes;
+	struct percpu_counter percpu_msg_hdrs;
+	size_t shm_ctlmax;
+	size_t shm_ctlall;
+	unsigned long shm_tot;
+	int shm_ctlmni;
+	int shm_rmid_forced;
+	struct notifier_block ipcns_nb;
+	struct vfsmount *mq_mnt;
+	unsigned int mq_queues_count;
+	unsigned int mq_queues_max;
+	unsigned int mq_msg_max;
+	unsigned int mq_msgsize_max;
+	unsigned int mq_msg_default;
+	unsigned int mq_msgsize_default;
+	struct ctl_table_set mq_set;
+	struct ctl_table_header *mq_sysctls;
+	struct ctl_table_set ipc_set;
+	struct ctl_table_header *ipc_sysctls;
+	struct user_namespace *user_ns;
+	struct ucounts *ucounts;
+	struct llist_node mnt_llist;
+	struct ns_common ns;
+};
+
+typedef void (*btf_trace_notifier_register)(void *, void *);
+
+typedef void (*btf_trace_notifier_unregister)(void *, void *);
+
+typedef void (*btf_trace_notifier_run)(void *, void *);
+
+struct trace_event_raw_notifier_info {
+	struct trace_entry ent;
+	void *cb;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_notifier_info {};
+
+struct srcu_notifier_head {
+	struct mutex mutex;
+	struct srcu_usage srcuu;
+	struct srcu_struct srcu;
+	struct notifier_block __attribute__((btf_type_tag("rcu"))) *head;
+};
+
+enum proc_cn_event {
+	PROC_EVENT_NONE = 0,
+	PROC_EVENT_FORK = 1,
+	PROC_EVENT_EXEC = 2,
+	PROC_EVENT_UID = 4,
+	PROC_EVENT_GID = 64,
+	PROC_EVENT_SID = 128,
+	PROC_EVENT_PTRACE = 256,
+	PROC_EVENT_COMM = 512,
+	PROC_EVENT_NONZERO_EXIT = 536870912,
+	PROC_EVENT_COREDUMP = 1073741824,
+	PROC_EVENT_EXIT = 2147483648,
+};
+
+enum sys_off_mode {
+	SYS_OFF_MODE_POWER_OFF_PREPARE = 0,
+	SYS_OFF_MODE_POWER_OFF = 1,
+	SYS_OFF_MODE_RESTART_PREPARE = 2,
+	SYS_OFF_MODE_RESTART = 3,
+};
+
+struct sys_off_data;
+
+struct sys_off_handler {
+	struct notifier_block nb;
+	int (*sys_off_cb)(struct sys_off_data *);
+	void *cb_data;
+	enum sys_off_mode mode;
+	bool blocking;
+	void *list;
+};
+
+struct sys_off_data {
+	int mode;
+	void *cb_data;
+	const char *cmd;
+};
+
+struct async_entry {
+	struct list_head domain_list;
+	struct list_head global_list;
+	struct work_struct work;
+	async_cookie_t cookie;
+	async_func_t func;
+	void *data;
+	struct async_domain *domain;
+};
+
+enum {
+	HP_THREAD_NONE = 0,
+	HP_THREAD_ACTIVE = 1,
+	HP_THREAD_PARKED = 2,
+};
+
+struct smpboot_thread_data {
+	unsigned int cpu;
+	unsigned int status;
+	struct smp_hotplug_thread *ht;
+};
+
+enum vhost_task_flags {
+	VHOST_TASK_FLAGS_STOP = 0,
+};
+
+struct vhost_task {
+	bool (*fn)(void *);
+	void *data;
+	struct completion exited;
+	unsigned long flags;
+	struct task_struct *task;
+};
+
+struct cfs_rq {
+	struct load_weight load;
+	unsigned int nr_running;
+	unsigned int h_nr_running;
+	unsigned int idle_nr_running;
+	unsigned int idle_h_nr_running;
+	s64 avg_vruntime;
+	u64 avg_load;
+	u64 exec_clock;
+	u64 min_vruntime;
+	struct rb_root_cached tasks_timeline;
+	struct sched_entity *curr;
+	struct sched_entity *next;
+	unsigned int nr_spread_over;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct sched_avg avg;
+	struct {
+		raw_spinlock_t lock;
+		int nr;
+		unsigned long load_avg;
+		unsigned long util_avg;
+		unsigned long runnable_avg;
+		long: 64;
+		long: 64;
+		long: 64;
+		long: 64;
+	} removed;
+	unsigned long tg_load_avg_contrib;
+	long propagate;
+	long prop_runnable_sum;
+	unsigned long h_load;
+	u64 last_h_load_update;
+	struct sched_entity *h_load_next;
+	bool decayed;
+	struct rq *rq;
+	int on_list;
+	struct list_head leaf_cfs_rq_list;
+	struct task_group *tg;
+	int idle;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct __call_single_data {
+	struct __call_single_node node;
+	smp_call_func_t func;
+	void *info;
+};
+
+typedef struct __call_single_data call_single_data_t;
+
+struct uclamp_bucket {
+	unsigned long value: 11;
+	unsigned long tasks: 53;
+};
+
+struct uclamp_rq {
+	unsigned int value;
+	struct uclamp_bucket bucket[20];
+};
+
+struct rt_prio_array {
+	unsigned long bitmap[2];
+	struct list_head queue[100];
+};
+
+struct rt_rq {
+	struct rt_prio_array active;
+	unsigned int rt_nr_running;
+	unsigned int rr_nr_running;
+	struct {
+		int curr;
+		int next;
+	} highest_prio;
+	unsigned int rt_nr_migratory;
+	unsigned int rt_nr_total;
+	int overloaded;
+	struct plist_head pushable_tasks;
+	int rt_queued;
+	int rt_throttled;
+	u64 rt_time;
+	u64 rt_runtime;
+	raw_spinlock_t rt_runtime_lock;
+};
+
+struct dl_rq {
+	struct rb_root_cached root;
+	unsigned int dl_nr_running;
+	struct {
+		u64 curr;
+		u64 next;
+	} earliest_dl;
+	unsigned int dl_nr_migratory;
+	int overloaded;
+	struct rb_root_cached pushable_dl_tasks_root;
+	u64 running_bw;
+	u64 this_bw;
+	u64 extra_bw;
+	u64 max_bw;
+	u64 bw_ratio;
+};
+
+struct cpu_stop_done;
+
+struct cpu_stop_work {
+	struct list_head list;
+	cpu_stop_fn_t fn;
+	unsigned long caller;
+	void *arg;
+	struct cpu_stop_done *done;
+};
+
+enum misfit_reason {
+	MISFIT_PERF = 0,
+};
+
+typedef enum misfit_reason misfit_reason_t;
+
+struct root_domain;
+
+struct balance_callback;
+
+struct cpuidle_state;
+
+struct rq {
+	raw_spinlock_t __lock;
+	unsigned int nr_running;
+	unsigned long last_blocked_load_update_tick;
+	unsigned int has_blocked_load;
+	long: 64;
+	call_single_data_t nohz_csd;
+	unsigned int nohz_tick_stopped;
+	atomic_t nohz_flags;
+	unsigned int ttwu_pending;
+	u64 nr_switches;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct uclamp_rq uclamp[2];
+	unsigned int uclamp_flags;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct cfs_rq cfs;
+	struct rt_rq rt;
+	struct dl_rq dl;
+	struct list_head leaf_cfs_rq_list;
+	struct list_head *tmp_alone_branch;
+	unsigned int nr_uninterruptible;
+	struct task_struct __attribute__((btf_type_tag("rcu"))) *curr;
+	struct task_struct *idle;
+	struct task_struct *stop;
+	unsigned long next_balance;
+	struct mm_struct *prev_mm;
+	unsigned int clock_update_flags;
+	u64 clock;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	u64 clock_task;
+	u64 clock_task_mult;
+	u64 clock_pelt;
+	unsigned long lost_idle_time;
+	u64 clock_pelt_idle;
+	u64 clock_idle;
+	atomic_t nr_iowait;
+	u64 last_seen_need_resched_ns;
+	int ticks_without_resched;
+	int membarrier_state;
+	struct root_domain *rd;
+	struct sched_domain __attribute__((btf_type_tag("rcu"))) *sd;
+	unsigned long cpu_capacity;
+	unsigned long cpu_capacity_orig;
+	struct balance_callback *balance_callback;
+	unsigned char nohz_idle_balance;
+	unsigned char idle_balance;
+	unsigned long misfit_task_load;
+	int active_balance;
+	int push_cpu;
+	struct cpu_stop_work active_balance_work;
+	int cpu;
+	int online;
+	struct list_head cfs_tasks;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct sched_avg avg_rt;
+	struct sched_avg avg_dl;
+	struct sched_avg avg_irq;
+	u64 idle_stamp;
+	u64 avg_idle;
+	unsigned long wake_stamp;
+	u64 wake_avg_idle;
+	u64 max_idle_balance_cost;
+	struct rcuwait hotplug_wait;
+	u64 prev_irq_time;
+	u64 prev_steal_time;
+	u64 prev_steal_time_rq;
+	unsigned long calc_load_update;
+	long calc_load_active;
+	long: 64;
+	call_single_data_t hrtick_csd;
+	struct hrtimer hrtick_timer;
+	ktime_t hrtick_time;
+	struct sched_info rq_sched_info;
+	unsigned long long rq_cpu_time;
+	unsigned int yld_count;
+	unsigned int sched_count;
+	unsigned int sched_goidle;
+	unsigned int ttwu_count;
+	unsigned int ttwu_local;
+	struct cpuidle_state *idle_state;
+	unsigned int nr_pinned;
+	unsigned int push_busy;
+	struct cpu_stop_work push_work;
+	cpumask_var_t scratch_mask;
+	misfit_reason_t misfit_reason;
+	u64 android_oem_data1[16];
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct dl_bw {
+	raw_spinlock_t lock;
+	u64 bw;
+	u64 total_bw;
+};
+
+struct cpudl_item;
+
+struct cpudl {
+	raw_spinlock_t lock;
+	int size;
+	cpumask_var_t free_cpus;
+	struct cpudl_item *elements;
+};
+
+struct cpupri_vec {
+	atomic_t count;
+	cpumask_var_t mask;
+};
+
+struct cpupri {
+	struct cpupri_vec pri_to_cpu[101];
+	int *cpu_to_pri;
+};
+
+struct perf_domain;
+
+struct root_domain {
+	atomic_t refcount;
+	atomic_t rto_count;
+	struct callback_head rcu;
+	cpumask_var_t span;
+	cpumask_var_t online;
+	int overload;
+	int overutilized;
+	cpumask_var_t dlo_mask;
+	atomic_t dlo_count;
+	struct dl_bw dl_bw;
+	struct cpudl cpudl;
+	u64 visit_gen;
+	struct irq_work rto_push_work;
+	raw_spinlock_t rto_lock;
+	int rto_loop;
+	int rto_cpu;
+	atomic_t rto_loop_next;
+	atomic_t rto_loop_start;
+	cpumask_var_t rto_mask;
+	struct cpupri cpupri;
+	unsigned long max_cpu_capacity;
+	struct perf_domain __attribute__((btf_type_tag("rcu"))) *pd;
+	u64 android_vendor_data1;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct cpudl_item {
+	u64 dl;
+	int cpu;
+	int idx;
+};
+
+struct em_perf_domain;
+
+struct perf_domain {
+	struct em_perf_domain *em_pd;
+	struct perf_domain *next;
+	struct callback_head rcu;
+};
+
+struct em_perf_table;
+
+struct em_perf_domain {
+	struct em_perf_table __attribute__((btf_type_tag("rcu"))) *em_table;
+	int nr_perf_states;
+	int min_ps;
+	int max_ps;
+	unsigned long flags;
+	unsigned long cpus[0];
+};
+
+struct em_perf_state {
+	unsigned long performance;
+	unsigned long frequency;
+	unsigned long power;
+	unsigned long cost;
+	unsigned long flags;
+};
+
+struct em_perf_table {
+	struct callback_head rcu;
+	struct kref kref;
+	struct em_perf_state state[0];
+};
+
+struct sched_group {
+	struct sched_group *next;
+	atomic_t ref;
+	unsigned int group_weight;
+	unsigned int cores;
+	struct sched_group_capacity *sgc;
+	int asym_prefer_cpu;
+	int flags;
+	unsigned long cpumask[0];
+};
+
+struct sched_group_capacity {
+	atomic_t ref;
+	unsigned long capacity;
+	unsigned long min_capacity;
+	unsigned long max_capacity;
+	unsigned long next_update;
+	int imbalance;
+	int id;
+	unsigned long cpumask[0];
+};
+
+struct balance_callback {
+	struct balance_callback *next;
+	void (*func)(struct rq *);
+};
+
+struct cfs_bandwidth {};
+
+struct task_group {
+	struct cgroup_subsys_state css;
+	struct sched_entity **se;
+	struct cfs_rq **cfs_rq;
+	unsigned long shares;
+	int idle;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	atomic_long_t load_avg;
+	struct callback_head rcu;
+	struct list_head list;
+	struct task_group *parent;
+	struct list_head siblings;
+	struct list_head children;
+	struct cfs_bandwidth cfs_bandwidth;
+	unsigned int uclamp_pct[2];
+	struct uclamp_se uclamp_req[2];
+	struct uclamp_se uclamp[2];
+	unsigned int latency_sensitive;
+	u64 android_vendor_data1[4];
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+	long: 64;
+	long: 64;
+};
+
+struct pin_cookie {};
+
+struct rq_flags {
+	unsigned long flags;
+	struct pin_cookie cookie;
+	unsigned int clock_update_flags;
+};
+
+struct affinity_context {
+	const struct cpumask *new_mask;
+	struct cpumask *user_mask;
+	unsigned int flags;
+};
+
+struct io_ring_ctx;
+
+struct io_wq;
+
+struct io_uring_task {
+	int cached_refs;
+	const struct io_ring_ctx *last;
+	struct io_wq *io_wq;
+	struct file *registered_rings[16];
+	struct xarray xa;
+	struct wait_queue_head wait;
+	atomic_t in_cancel;
+	atomic_t inflight_tracked;
+	struct percpu_counter inflight;
+	long: 64;
+	long: 64;
+	struct {
+		struct llist_head task_list;
+		struct callback_head task_work;
+		long: 64;
+		long: 64;
+		long: 64;
+		long: 64;
+		long: 64;
+	};
+};
+
+struct io_fixed_file;
+
+struct io_file_table {
+	struct io_fixed_file *files;
+	unsigned long *bitmap;
+	unsigned int alloc_hint;
+};
+
+struct io_wq_work_node {
+	struct io_wq_work_node *next;
+};
+
+struct io_wq_work_list {
+	struct io_wq_work_node *first;
+	struct io_wq_work_node *last;
+};
+
+struct io_kiocb;
+
+struct io_submit_link {
+	struct io_kiocb *head;
+	struct io_kiocb *last;
+};
+
+struct io_submit_state {
+	struct io_wq_work_node free_list;
+	struct io_wq_work_list compl_reqs;
+	struct io_submit_link link;
+	bool plug_started;
+	bool need_plug;
+	unsigned short submit_nr;
+	unsigned int cqes_count;
+	struct blk_plug plug;
+};
+
+struct io_hash_bucket;
+
+struct io_hash_table {
+	struct io_hash_bucket *hbs;
+	unsigned int hash_bits;
+};
+
+struct io_alloc_cache {
+	struct io_wq_work_node list;
+	unsigned int nr_cached;
+	unsigned int max_cached;
+	size_t elem_size;
+};
+
+struct io_uring_cqe {
+	__u64 user_data;
+	__s32 res;
+	__u32 flags;
+	__u64 big_cqe[0];
+};
+
+struct io_restriction {
+	unsigned long register_op[1];
+	unsigned long sqe_op[1];
+	u8 sqe_flags_allowed;
+	u8 sqe_flags_required;
+	bool registered;
+};
+
+struct io_rings;
+
+struct io_rsrc_node;
+
+struct io_mapped_ubuf;
+
+struct io_ev_fd;
+
+struct io_sq_data;
+
+struct io_rsrc_data;
+
+struct io_wq_hash;
+
+struct io_ring_ctx {
+	struct {
+		unsigned int flags;
+		unsigned int drain_next: 1;
+		unsigned int restricted: 1;
+		unsigned int off_timeout_used: 1;
+		unsigned int drain_active: 1;
+		unsigned int has_evfd: 1;
+		unsigned int task_complete: 1;
+		unsigned int lockless_cq: 1;
+		unsigned int syscall_iopoll: 1;
+		unsigned int poll_activated: 1;
+		unsigned int drain_disabled: 1;
+		unsigned int compat: 1;
+		struct task_struct *submitter_task;
+		struct io_rings *rings;
+		struct percpu_ref refs;
+		enum task_work_notify_mode notify_method;
+		long: 64;
+		long: 64;
+	};
+	struct {
+		struct mutex uring_lock;
+		u32 *sq_array;
+		struct io_uring_sqe *sq_sqes;
+		unsigned int cached_sq_head;
+		unsigned int sq_entries;
+		struct io_rsrc_node *rsrc_node;
+		atomic_t cancel_seq;
+		struct io_file_table file_table;
+		unsigned int nr_user_files;
+		unsigned int nr_user_bufs;
+		struct io_mapped_ubuf **user_bufs;
+		struct io_submit_state submit_state;
+		struct xarray io_bl_xa;
+		struct io_hash_table cancel_table_locked;
+		struct io_alloc_cache apoll_cache;
+		struct io_alloc_cache netmsg_cache;
+		struct io_wq_work_list iopoll_list;
+		bool poll_multi_queue;
+	};
+	struct {
+		struct io_uring_cqe *cqe_cached;
+		struct io_uring_cqe *cqe_sentinel;
+		unsigned int cached_cq_tail;
+		unsigned int cq_entries;
+		struct io_ev_fd __attribute__((btf_type_tag("rcu"))) *io_ev_fd;
+		unsigned int cq_extra;
+		long: 64;
+		long: 64;
+		long: 64;
+	};
+	struct {
+		struct llist_head work_llist;
+		unsigned long check_cq;
+		atomic_t cq_wait_nr;
+		atomic_t cq_timeouts;
+		struct wait_queue_head cq_wait;
+		long: 64;
+		long: 64;
+	};
+	struct {
+		spinlock_t timeout_lock;
+		struct list_head timeout_list;
+		struct list_head ltimeout_list;
+		unsigned int cq_last_tm_flush;
+		long: 64;
+		long: 64;
+	};
+	struct io_uring_cqe completion_cqes[16];
+	spinlock_t completion_lock;
+	struct io_wq_work_list locked_free_list;
+	unsigned int locked_free_nr;
+	struct list_head io_buffers_comp;
+	struct list_head cq_overflow_list;
+	struct io_hash_table cancel_table;
+	const struct cred *sq_creds;
+	struct io_sq_data *sq_data;
+	struct wait_queue_head sqo_sq_wait;
+	struct list_head sqd_list;
+	unsigned int file_alloc_start;
+	unsigned int file_alloc_end;
+	struct xarray personalities;
+	u32 pers_next;
+	struct list_head io_buffers_cache;
+	struct hlist_head io_buf_list;
+	struct wait_queue_head poll_wq;
+	struct io_restriction restrictions;
+	struct io_mapped_ubuf *dummy_ubuf;
+	struct io_rsrc_data *file_data;
+	struct io_rsrc_data *buf_data;
+	struct list_head rsrc_ref_list;
+	struct io_alloc_cache rsrc_node_cache;
+	struct wait_queue_head rsrc_quiesce_wq;
+	unsigned int rsrc_quiesce;
+	struct list_head io_buffers_pages;
+	struct io_wq_hash *hash_map;
+	struct user_struct *user;
+	struct mm_struct *mm_account;
+	struct llist_head fallback_llist;
+	struct delayed_work fallback_work;
+	struct work_struct exit_work;
+	struct list_head tctx_list;
+	struct completion ref_comp;
+	u32 iowq_limits[2];
+	bool iowq_limits_set;
+	struct callback_head poll_wq_task_work;
+	struct list_head defer_list;
+	unsigned int sq_thread_idle;
+	unsigned int evfd_last_cq_tail;
+	unsigned short n_ring_pages;
+	unsigned short n_sqe_pages;
+	struct page **ring_pages;
+	struct page **sqe_pages;
+	long: 64;
+};
+
+struct io_uring {
+	u32 head;
+	u32 tail;
+};
+
+struct io_rings {
+	struct io_uring sq;
+	struct io_uring cq;
+	u32 sq_ring_mask;
+	u32 cq_ring_mask;
+	u32 sq_ring_entries;
+	u32 cq_ring_entries;
+	u32 sq_dropped;
+	atomic_t sq_flags;
+	u32 cq_flags;
+	u32 cq_overflow;
+	long: 64;
+	long: 64;
+	struct io_uring_cqe cqes[0];
+};
+
+struct io_fixed_file {
+	unsigned long file_ptr;
+};
+
+struct io_cmd_data {
+	struct file *file;
+	__u8 data[56];
+};
+
+struct io_cqe {
+	__u64 user_data;
+	__s32 res;
+	union {
+		__u32 flags;
+		int fd;
+	};
+};
+
+struct io_tw_state;
+
+typedef void (*io_req_tw_func_t)(struct io_kiocb *, struct io_tw_state *);
+
+struct io_task_work {
+	struct llist_node node;
+	io_req_tw_func_t func;
+};
+
+struct io_wq_work {
+	struct io_wq_work_node list;
+	unsigned int flags;
+	int cancel_seq;
+};
+
+struct io_buffer;
+
+struct io_buffer_list;
+
+struct async_poll;
+
+struct io_kiocb {
+	union {
+		struct file *file;
+		struct io_cmd_data cmd;
+	};
+	u8 opcode;
+	u8 iopoll_completed;
+	u16 buf_index;
+	unsigned int flags;
+	struct io_cqe cqe;
+	struct io_ring_ctx *ctx;
+	struct task_struct *task;
+	struct io_rsrc_node *rsrc_node;
+	union {
+		struct io_mapped_ubuf *imu;
+		struct io_buffer *kbuf;
+		struct io_buffer_list *buf_list;
+	};
+	union {
+		struct io_wq_work_node comp_list;
+		__poll_t apoll_events;
+	};
+	atomic_t refs;
+	atomic_t poll_refs;
+	struct io_task_work io_task_work;
+	unsigned int nr_tw;
+	struct hlist_node hash_node;
+	struct async_poll *apoll;
+	void *async_data;
+	struct io_kiocb *link;
+	const struct cred *creds;
+	struct io_wq_work work;
+	struct {
+		u64 extra1;
+		u64 extra2;
+	} big_cqe;
+};
+
+struct io_tw_state {
+	bool locked;
+};
+
+struct io_hash_bucket {
+	spinlock_t lock;
+	struct hlist_head list;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct io_ev_fd {
+	struct eventfd_ctx *cq_ev_fd;
+	unsigned int eventfd_async: 1;
+	struct callback_head rcu;
+	atomic_t refs;
+	atomic_t ops;
+};
+
+struct io_wq_hash {
+	refcount_t refs;
+	unsigned long map;
+	struct wait_queue_head wait;
+};
+
+typedef void (*btf_trace_sched_kthread_stop)(void *, struct task_struct *);
+
+typedef void (*btf_trace_sched_kthread_stop_ret)(void *, int);
+
+typedef void (*btf_trace_sched_kthread_work_queue_work)(void *, struct kthread_worker *, struct kthread_work *);
+
+typedef void (*btf_trace_sched_kthread_work_execute_start)(void *, struct kthread_work *);
+
+typedef void (*btf_trace_sched_kthread_work_execute_end)(void *, struct kthread_work *, kthread_work_func_t);
+
+typedef void (*btf_trace_sched_waking)(void *, struct task_struct *);
+
+typedef void (*btf_trace_sched_wakeup)(void *, struct task_struct *);
+
+typedef void (*btf_trace_sched_wakeup_new)(void *, struct task_struct *);
+
+typedef void (*btf_trace_sched_switch)(void *, bool, struct task_struct *, struct task_struct *, unsigned int);
+
+typedef void (*btf_trace_sched_migrate_task)(void *, struct task_struct *, int);
+
+typedef void (*btf_trace_sched_process_free)(void *, struct task_struct *);
+
+typedef void (*btf_trace_sched_process_exit)(void *, struct task_struct *);
+
+typedef void (*btf_trace_sched_wait_task)(void *, struct task_struct *);
+
+typedef void (*btf_trace_sched_process_wait)(void *, struct pid *);
+
+typedef void (*btf_trace_sched_process_fork)(void *, struct task_struct *, struct task_struct *);
+
+typedef void (*btf_trace_sched_process_exec)(void *, struct task_struct *, pid_t, struct linux_binprm *);
+
+typedef void (*btf_trace_sched_stat_wait)(void *, struct task_struct *, u64);
+
+typedef void (*btf_trace_sched_stat_sleep)(void *, struct task_struct *, u64);
+
+typedef void (*btf_trace_sched_stat_iowait)(void *, struct task_struct *, u64);
+
+typedef void (*btf_trace_sched_stat_blocked)(void *, struct task_struct *, u64);
+
+typedef void (*btf_trace_sched_blocked_reason)(void *, struct task_struct *);
+
+typedef void (*btf_trace_sched_stat_runtime)(void *, struct task_struct *, u64, u64);
+
+typedef void (*btf_trace_sched_pi_setprio)(void *, struct task_struct *, struct task_struct *);
+
+typedef void (*btf_trace_sched_process_hang)(void *, struct task_struct *);
+
+typedef void (*btf_trace_sched_move_numa)(void *, struct task_struct *, int, int);
+
+typedef void (*btf_trace_sched_stick_numa)(void *, struct task_struct *, int, struct task_struct *, int);
+
+typedef void (*btf_trace_sched_swap_numa)(void *, struct task_struct *, int, struct task_struct *, int);
+
+typedef void (*btf_trace_sched_wake_idle_without_ipi)(void *, int);
+
+typedef void (*btf_trace_pelt_cfs_tp)(void *, struct cfs_rq *);
+
+typedef void (*btf_trace_pelt_rt_tp)(void *, struct rq *);
+
+typedef void (*btf_trace_pelt_dl_tp)(void *, struct rq *);
+
+typedef void (*btf_trace_pelt_thermal_tp)(void *, struct rq *);
+
+typedef void (*btf_trace_pelt_irq_tp)(void *, struct rq *);
+
+typedef void (*btf_trace_pelt_se_tp)(void *, struct sched_entity *);
+
+typedef void (*btf_trace_sched_cpu_capacity_tp)(void *, struct rq *);
+
+typedef void (*btf_trace_sched_overutilized_tp)(void *, struct root_domain *, bool);
+
+typedef void (*btf_trace_sched_util_est_cfs_tp)(void *, struct cfs_rq *);
+
+typedef void (*btf_trace_sched_util_est_se_tp)(void *, struct sched_entity *);
+
+typedef void (*btf_trace_sched_update_nr_running_tp)(void *, struct rq *, int);
+
+typedef void (*btf_trace_ipi_raise)(void *, const struct cpumask *, const char *);
+
+typedef void (*btf_trace_ipi_send_cpu)(void *, const unsigned int, unsigned long, void *);
+
+typedef void (*btf_trace_ipi_send_cpumask)(void *, const struct cpumask *, unsigned long, void *);
+
+typedef void (*btf_trace_ipi_entry)(void *, const char *);
+
+typedef void (*btf_trace_ipi_exit)(void *, const char *);
+
+struct kernel_stat {
+	unsigned long irqs_sum;
+	unsigned int softirqs[10];
+};
+
+struct kernel_cpustat {
+	u64 cpustat[10];
+};
+
+enum {
+	__SCHED_FEAT_PLACE_LAG = 0,
+	__SCHED_FEAT_PLACE_DEADLINE_INITIAL = 1,
+	__SCHED_FEAT_RUN_TO_PARITY = 2,
+	__SCHED_FEAT_NEXT_BUDDY = 3,
+	__SCHED_FEAT_CACHE_HOT_BUDDY = 4,
+	__SCHED_FEAT_WAKEUP_PREEMPTION = 5,
+	__SCHED_FEAT_HRTICK = 6,
+	__SCHED_FEAT_HRTICK_DL = 7,
+	__SCHED_FEAT_DOUBLE_TICK = 8,
+	__SCHED_FEAT_NONTASK_CAPACITY = 9,
+	__SCHED_FEAT_TTWU_QUEUE = 10,
+	__SCHED_FEAT_SIS_PROP = 11,
+	__SCHED_FEAT_SIS_UTIL = 12,
+	__SCHED_FEAT_WARN_DOUBLE_CLOCK = 13,
+	__SCHED_FEAT_RT_PUSH_IPI = 14,
+	__SCHED_FEAT_RT_RUNTIME_SHARE = 15,
+	__SCHED_FEAT_LB_MIN = 16,
+	__SCHED_FEAT_ATTACH_AGE_LOAD = 17,
+	__SCHED_FEAT_WA_IDLE = 18,
+	__SCHED_FEAT_WA_WEIGHT = 19,
+	__SCHED_FEAT_WA_BIAS = 20,
+	__SCHED_FEAT_UTIL_EST = 21,
+	__SCHED_FEAT_LATENCY_WARN = 22,
+	__SCHED_FEAT_HZ_BW = 23,
+	__SCHED_FEAT_NR = 24,
+};
+
+enum uclamp_id {
+	UCLAMP_MIN = 0,
+	UCLAMP_MAX = 1,
+	UCLAMP_CNT = 2,
+};
+
+enum {
+	cpuset = 0,
+	possible = 1,
+	fail = 2,
+};
+
+enum cgroup_subsys_id {
+	cpuset_cgrp_id = 0,
+	cpu_cgrp_id = 1,
+	cpuacct_cgrp_id = 2,
+	io_cgrp_id = 3,
+	memory_cgrp_id = 4,
+	freezer_cgrp_id = 5,
+	net_prio_cgrp_id = 6,
+	CGROUP_SUBSYS_COUNT = 7,
+};
+
+enum cpu_util_type {
+	FREQUENCY_UTIL = 0,
+	ENERGY_UTIL = 1,
+};
+
+enum psi_task_count {
+	NR_IOWAIT = 0,
+	NR_MEMSTALL = 1,
+	NR_RUNNING = 2,
+	NR_MEMSTALL_RUNNING = 3,
+	NR_PSI_TASK_COUNTS = 4,
+};
+
+enum {
+	CSD_FLAG_LOCK = 1,
+	IRQ_WORK_PENDING = 1,
+	IRQ_WORK_BUSY = 2,
+	IRQ_WORK_LAZY = 4,
+	IRQ_WORK_HARD_IRQ = 8,
+	IRQ_WORK_CLAIMED = 3,
+	CSD_TYPE_ASYNC = 0,
+	CSD_TYPE_SYNC = 16,
+	CSD_TYPE_IRQ_WORK = 32,
+	CSD_TYPE_TTWU = 48,
+	CSD_FLAG_TYPE_MASK = 240,
+};
+
+enum {
+	MEMBARRIER_STATE_PRIVATE_EXPEDITED_READY = 1,
+	MEMBARRIER_STATE_PRIVATE_EXPEDITED = 2,
+	MEMBARRIER_STATE_GLOBAL_EXPEDITED_READY = 4,
+	MEMBARRIER_STATE_GLOBAL_EXPEDITED = 8,
+	MEMBARRIER_STATE_PRIVATE_EXPEDITED_SYNC_CORE_READY = 16,
+	MEMBARRIER_STATE_PRIVATE_EXPEDITED_SYNC_CORE = 32,
+	MEMBARRIER_STATE_PRIVATE_EXPEDITED_RSEQ_READY = 64,
+	MEMBARRIER_STATE_PRIVATE_EXPEDITED_RSEQ = 128,
+};
+
+union cpumask_rcuhead {
+	cpumask_t cpumask;
+	struct callback_head rcu;
+};
+
+struct trace_event_raw_sched_kthread_stop {
+	struct trace_entry ent;
+	char comm[16];
+	pid_t pid;
+	char __data[0];
+};
+
+struct trace_event_raw_sched_kthread_stop_ret {
+	struct trace_entry ent;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_sched_kthread_work_queue_work {
+	struct trace_entry ent;
+	void *work;
+	void *function;
+	void *worker;
+	char __data[0];
+};
+
+struct trace_event_raw_sched_kthread_work_execute_start {
+	struct trace_entry ent;
+	void *work;
+	void *function;
+	char __data[0];
+};
+
+struct trace_event_raw_sched_kthread_work_execute_end {
+	struct trace_entry ent;
+	void *work;
+	void *function;
+	char __data[0];
+};
+
+struct trace_event_raw_sched_wakeup_template {
+	struct trace_entry ent;
+	char comm[16];
+	pid_t pid;
+	int prio;
+	int target_cpu;
+	char __data[0];
+};
+
+struct trace_event_raw_sched_switch {
+	struct trace_entry ent;
+	char prev_comm[16];
+	pid_t prev_pid;
+	int prev_prio;
+	long prev_state;
+	char next_comm[16];
+	pid_t next_pid;
+	int next_prio;
+	char __data[0];
+};
+
+struct trace_event_raw_sched_migrate_task {
+	struct trace_entry ent;
+	char comm[16];
+	pid_t pid;
+	int prio;
+	int orig_cpu;
+	int dest_cpu;
+	char __data[0];
+};
+
+struct trace_event_raw_sched_process_template {
+	struct trace_entry ent;
+	char comm[16];
+	pid_t pid;
+	int prio;
+	char __data[0];
+};
+
+struct trace_event_raw_sched_process_wait {
+	struct trace_entry ent;
+	char comm[16];
+	pid_t pid;
+	int prio;
+	char __data[0];
+};
+
+struct trace_event_raw_sched_process_fork {
+	struct trace_entry ent;
+	char parent_comm[16];
+	pid_t parent_pid;
+	char child_comm[16];
+	pid_t child_pid;
+	char __data[0];
+};
+
+struct trace_event_raw_sched_process_exec {
+	struct trace_entry ent;
+	u32 __data_loc_filename;
+	pid_t pid;
+	pid_t old_pid;
+	char __data[0];
+};
+
+struct trace_event_raw_sched_stat_template {
+	struct trace_entry ent;
+	char comm[16];
+	pid_t pid;
+	u64 delay;
+	char __data[0];
+};
+
+struct trace_event_raw_sched_blocked_reason {
+	struct trace_entry ent;
+	pid_t pid;
+	void *caller;
+	bool io_wait;
+	char __data[0];
+};
+
+struct trace_event_raw_sched_stat_runtime {
+	struct trace_entry ent;
+	char comm[16];
+	pid_t pid;
+	u64 runtime;
+	u64 vruntime;
+	char __data[0];
+};
+
+struct trace_event_raw_sched_pi_setprio {
+	struct trace_entry ent;
+	char comm[16];
+	pid_t pid;
+	int oldprio;
+	int newprio;
+	char __data[0];
+};
+
+struct trace_event_raw_sched_process_hang {
+	struct trace_entry ent;
+	char comm[16];
+	pid_t pid;
+	char __data[0];
+};
+
+struct trace_event_raw_sched_move_numa {
+	struct trace_entry ent;
+	pid_t pid;
+	pid_t tgid;
+	pid_t ngid;
+	int src_cpu;
+	int src_nid;
+	int dst_cpu;
+	int dst_nid;
+	char __data[0];
+};
+
+struct trace_event_raw_sched_numa_pair_template {
+	struct trace_entry ent;
+	pid_t src_pid;
+	pid_t src_tgid;
+	pid_t src_ngid;
+	int src_cpu;
+	int src_nid;
+	pid_t dst_pid;
+	pid_t dst_tgid;
+	pid_t dst_ngid;
+	int dst_cpu;
+	int dst_nid;
+	char __data[0];
+};
+
+struct trace_event_raw_sched_wake_idle_without_ipi {
+	struct trace_entry ent;
+	int cpu;
+	char __data[0];
+};
+
+struct trace_event_raw_ipi_raise {
+	struct trace_entry ent;
+	u32 __data_loc_target_cpus;
+	const char *reason;
+	char __data[0];
+};
+
+struct trace_event_raw_ipi_send_cpu {
+	struct trace_entry ent;
+	unsigned int cpu;
+	void *callsite;
+	void *callback;
+	char __data[0];
+};
+
+struct trace_event_raw_ipi_send_cpumask {
+	struct trace_entry ent;
+	u32 __data_loc_cpumask;
+	void *callsite;
+	void *callback;
+	char __data[0];
+};
+
+struct trace_event_raw_ipi_handler {
+	struct trace_entry ent;
+	const char *reason;
+	char __data[0];
+};
+
+struct irqtime {
+	u64 total;
+	u64 tick_delta;
+	u64 irq_start_time;
+	struct u64_stats_sync sync;
+};
+
+struct sched_attr {
+	__u32 size;
+	__u32 sched_policy;
+	__u64 sched_flags;
+	__s32 sched_nice;
+	__u32 sched_priority;
+	__u64 sched_runtime;
+	__u64 sched_deadline;
+	__u64 sched_period;
+	__u32 sched_util_min;
+	__u32 sched_util_max;
+};
+
+struct trace_event_data_offsets_sched_process_exec {
+	u32 filename;
+};
+
+struct trace_event_data_offsets_ipi_raise {
+	u32 target_cpus;
+};
+
+struct trace_event_data_offsets_ipi_send_cpumask {
+	u32 cpumask;
+};
+
+struct wake_q_head {
+	struct wake_q_node *first;
+	struct wake_q_node **lastp;
+	int count;
+};
+
+typedef struct {
+	void *lock;
+} class_rcu_t;
+
+typedef struct {
+	raw_spinlock_t *lock;
+	raw_spinlock_t *lock2;
+} class_double_raw_spinlock_t;
+
+typedef struct {
+	struct rq *lock;
+	struct rq *lock2;
+} class_double_rq_lock_t;
+
+typedef struct {
+	struct rq *lock;
+	struct rq_flags rf;
+} class_rq_lock_irqsave_t;
+
+typedef struct {
+	void *lock;
+} class_preempt_t;
+
+typedef struct {
+	raw_spinlock_t *lock;
+	unsigned long flags;
+} class_raw_spinlock_irqsave_t;
+
+struct sched_domain_attr {
+	int relax_domain_level;
+};
+
+struct rt_bandwidth {
+	raw_spinlock_t rt_runtime_lock;
+	ktime_t rt_period;
+	u64 rt_runtime;
+	struct hrtimer rt_period_timer;
+	unsigned int rt_period_active;
+};
+
+struct set_affinity_pending;
+
+struct migration_arg {
+	struct task_struct *task;
+	int dest_cpu;
+	struct set_affinity_pending *pending;
+};
+
+struct set_affinity_pending {
+	refcount_t refs;
+	unsigned int stop_pending;
+	struct completion done;
+	struct cpu_stop_work stop_work;
+	struct migration_arg arg;
+};
+
+struct css_task_iter {
+	struct cgroup_subsys *ss;
+	unsigned int flags;
+	struct list_head *cset_pos;
+	struct list_head *cset_head;
+	struct list_head *tcset_pos;
+	struct list_head *tcset_head;
+	struct list_head *task_pos;
+	struct list_head *cur_tasks_head;
+	struct css_set *cur_cset;
+	struct css_set *cur_dcset;
+	struct task_struct *cur_task;
+	struct list_head iters_node;
+	u64 android_kabi_reserved1;
+};
+
+struct uclamp_request {
+	s64 percent;
+	u64 util;
+	int ret;
+};
+
+struct trace_event_data_offsets_sched_kthread_stop {};
+
+struct trace_event_data_offsets_sched_kthread_stop_ret {};
+
+struct trace_event_data_offsets_sched_kthread_work_queue_work {};
+
+struct trace_event_data_offsets_sched_kthread_work_execute_start {};
+
+struct trace_event_data_offsets_sched_kthread_work_execute_end {};
+
+struct trace_event_data_offsets_sched_wakeup_template {};
+
+struct trace_event_data_offsets_sched_switch {};
+
+struct trace_event_data_offsets_sched_migrate_task {};
+
+struct trace_event_data_offsets_sched_process_template {};
+
+struct trace_event_data_offsets_sched_process_wait {};
+
+struct trace_event_data_offsets_sched_process_fork {};
+
+struct trace_event_data_offsets_sched_stat_template {};
+
+struct trace_event_data_offsets_sched_blocked_reason {};
+
+struct trace_event_data_offsets_sched_stat_runtime {};
+
+struct trace_event_data_offsets_sched_pi_setprio {};
+
+struct trace_event_data_offsets_sched_process_hang {};
+
+struct trace_event_data_offsets_sched_move_numa {};
+
+struct trace_event_data_offsets_sched_numa_pair_template {};
+
+struct trace_event_data_offsets_sched_wake_idle_without_ipi {};
+
+struct trace_event_data_offsets_ipi_send_cpu {};
+
+struct trace_event_data_offsets_ipi_handler {};
+
+typedef int (*tg_visitor)(struct task_group *, void *);
+
+struct migration_swap_arg {
+	struct task_struct *src_task;
+	struct task_struct *dst_task;
+	int src_cpu;
+	int dst_cpu;
+};
+
+typedef int (*task_call_f)(struct task_struct *, void *);
+
+typedef struct mutex *class_mutex_t;
+
+struct cpuidle_device;
+
+struct cpuidle_driver;
+
+struct cpuidle_state {
+	char name[16];
+	char desc[32];
+	s64 exit_latency_ns;
+	s64 target_residency_ns;
+	unsigned int flags;
+	unsigned int exit_latency;
+	int power_usage;
+	unsigned int target_residency;
+	int (*enter)(struct cpuidle_device *, struct cpuidle_driver *, int);
+	int (*enter_dead)(struct cpuidle_device *, int);
+	int (*enter_s2idle)(struct cpuidle_device *, struct cpuidle_driver *, int);
+};
+
+struct cpuidle_state_usage {
+	unsigned long long disable;
+	unsigned long long usage;
+	u64 time_ns;
+	unsigned long long above;
+	unsigned long long below;
+	unsigned long long rejected;
+	unsigned long long s2idle_usage;
+	unsigned long long s2idle_time;
+};
+
+struct cpuidle_driver_kobj;
+
+struct cpuidle_state_kobj;
+
+struct cpuidle_device_kobj;
+
+struct cpuidle_device {
+	unsigned int registered: 1;
+	unsigned int enabled: 1;
+	unsigned int poll_time_limit: 1;
+	unsigned int cpu;
+	ktime_t next_hrtimer;
+	int last_state_idx;
+	u64 last_residency_ns;
+	u64 poll_limit_ns;
+	u64 forced_idle_latency_limit_ns;
+	struct cpuidle_state_usage states_usage[10];
+	struct cpuidle_state_kobj *kobjs[10];
+	struct cpuidle_driver_kobj *kobj_driver;
+	struct cpuidle_device_kobj *kobj_dev;
+	struct list_head device_list;
+	u64 android_kabi_reserved1;
+};
+
+struct cpuidle_driver {
+	const char *name;
+	struct module *owner;
+	unsigned int bctimer: 1;
+	struct cpuidle_state states[10];
+	int state_count;
+	int safe_state_index;
+	struct cpumask *cpumask;
+	const char *governor;
+	u64 android_kabi_reserved1;
+};
+
+enum sched_tunable_scaling {
+	SCHED_TUNABLESCALING_NONE = 0,
+	SCHED_TUNABLESCALING_LOG = 1,
+	SCHED_TUNABLESCALING_LINEAR = 2,
+	SCHED_TUNABLESCALING_END = 3,
+};
+
+enum cpu_idle_type {
+	CPU_IDLE = 0,
+	CPU_NOT_IDLE = 1,
+	CPU_NEWLY_IDLE = 2,
+	CPU_MAX_IDLE_TYPES = 3,
+};
+
+enum fbq_type {
+	regular = 0,
+	remote = 1,
+	all = 2,
+};
+
+enum migration_type {
+	migrate_load = 0,
+	migrate_util = 1,
+	migrate_task = 2,
+	migrate_misfit = 3,
+};
+
+enum group_type {
+	group_has_spare = 0,
+	group_fully_busy = 1,
+	group_misfit_task = 2,
+	group_smt_balance = 3,
+	group_asym_packing = 4,
+	group_imbalanced = 5,
+	group_overloaded = 6,
+};
+
+struct update_util_data {
+	void (*func)(struct update_util_data *, u64, unsigned int);
+};
+
+struct sched_entity_stats {
+	struct sched_entity se;
+	struct sched_statistics stats;
+};
+
+struct lb_env {
+	struct sched_domain *sd;
+	struct rq *src_rq;
+	int src_cpu;
+	int dst_cpu;
+	struct rq *dst_rq;
+	struct cpumask *dst_grpmask;
+	int new_dst_cpu;
+	enum cpu_idle_type idle;
+	long imbalance;
+	struct cpumask *cpus;
+	unsigned int flags;
+	unsigned int loop;
+	unsigned int loop_break;
+	unsigned int loop_max;
+	enum fbq_type fbq_type;
+	enum migration_type migration_type;
+	struct list_head tasks;
+	struct rq_flags *src_rq_rf;
+};
+
+struct sg_lb_stats {
+	unsigned long avg_load;
+	unsigned long group_load;
+	unsigned long group_capacity;
+	unsigned long group_util;
+	unsigned long group_runnable;
+	unsigned int sum_nr_running;
+	unsigned int sum_h_nr_running;
+	unsigned int idle_cpus;
+	unsigned int group_weight;
+	enum group_type group_type;
+	unsigned int group_asym_packing;
+	unsigned int group_smt_balance;
+	unsigned long group_misfit_task_load;
+	misfit_reason_t group_misfit_reason;
+};
+
+struct sd_lb_stats {
+	struct sched_group *busiest;
+	struct sched_group *local;
+	unsigned long total_load;
+	unsigned long total_capacity;
+	unsigned long avg_load;
+	unsigned int prefer_sibling;
+	struct sg_lb_stats busiest_stat;
+	struct sg_lb_stats local_stat;
+};
+
+enum cpu_usage_stat {
+	CPUTIME_USER = 0,
+	CPUTIME_NICE = 1,
+	CPUTIME_SYSTEM = 2,
+	CPUTIME_SOFTIRQ = 3,
+	CPUTIME_IRQ = 4,
+	CPUTIME_IDLE = 5,
+	CPUTIME_IOWAIT = 6,
+	CPUTIME_STEAL = 7,
+	CPUTIME_GUEST = 8,
+	CPUTIME_GUEST_NICE = 9,
+	NR_STATS = 10,
+};
+
+enum dl_bw_request {
+	dl_bw_req_check_overflow = 0,
+	dl_bw_req_alloc = 1,
+	dl_bw_req_free = 2,
+};
+
+enum s2idle_states {
+	S2IDLE_STATE_NONE = 0,
+	S2IDLE_STATE_ENTER = 1,
+	S2IDLE_STATE_WAKE = 2,
+};
+
+struct idle_timer {
+	struct hrtimer timer;
+	int done;
+};
+
+typedef struct rt_rq *rt_rq_iter_t;
+
+struct sd_flag_debug {
+	unsigned int meta_flags;
+	char *name;
+};
+
+struct housekeeping {
+	cpumask_var_t cpumasks[9];
+	unsigned long flags;
+};
+
+struct sched_clock_data {
+	u64 tick_raw;
+	u64 tick_gtod;
+	u64 clock;
+};
+
+struct cpuacct {
+	struct cgroup_subsys_state css;
+	u64 __attribute__((btf_type_tag("percpu"))) *cpuusage;
+	struct kernel_cpustat __attribute__((btf_type_tag("percpu"))) *cpustat;
+};
+
+struct gov_attr_set {
+	struct kobject kobj;
+	struct list_head policy_list;
+	struct mutex update_lock;
+	int usage_count;
+};
+
+struct sugov_tunables {
+	struct gov_attr_set attr_set;
+	unsigned int rate_limit_us;
+};
+
+struct governor_attr {
+	struct attribute attr;
+	ssize_t (*show)(struct gov_attr_set *, char *);
+	ssize_t (*store)(struct gov_attr_set *, const char *, size_t);
+};
+
+struct sugov_policy;
+
+struct sugov_cpu {
+	struct update_util_data update_util;
+	struct sugov_policy *sg_policy;
+	unsigned int cpu;
+	bool iowait_boost_pending;
+	unsigned int iowait_boost;
+	u64 last_update;
+	unsigned long util;
+	unsigned long bw_dl;
+	unsigned long saved_idle_calls;
+};
+
+struct sugov_policy {
+	struct cpufreq_policy *policy;
+	struct sugov_tunables *tunables;
+	struct list_head tunables_hook;
+	raw_spinlock_t update_lock;
+	u64 last_freq_update_time;
+	s64 freq_update_delay_ns;
+	unsigned int next_freq;
+	unsigned int cached_raw_freq;
+	struct irq_work irq_work;
+	struct kthread_work work;
+	struct mutex work_lock;
+	struct kthread_worker worker;
+	struct task_struct *thread;
+	bool work_in_progress;
+	bool limits_changed;
+	bool need_freq_update;
+};
+
+enum psi_states {
+	PSI_IO_SOME = 0,
+	PSI_IO_FULL = 1,
+	PSI_MEM_SOME = 2,
+	PSI_MEM_FULL = 3,
+	PSI_CPU_SOME = 4,
+	PSI_CPU_FULL = 5,
+	PSI_IRQ_FULL = 6,
+	PSI_NONIDLE = 7,
+	NR_PSI_STATES = 8,
+};
+
+enum psi_res {
+	PSI_IO = 0,
+	PSI_MEM = 1,
+	PSI_CPU = 2,
+	PSI_IRQ = 3,
+	NR_PSI_RESOURCES = 4,
+};
+
+enum psi_aggregators {
+	PSI_AVGS = 0,
+	PSI_POLL = 1,
+	NR_PSI_AGGREGATORS = 2,
+};
+
+enum hk_flags {
+	HK_FLAG_TIMER = 1,
+	HK_FLAG_RCU = 2,
+	HK_FLAG_MISC = 4,
+	HK_FLAG_SCHED = 8,
+	HK_FLAG_TICK = 16,
+	HK_FLAG_DOMAIN = 32,
+	HK_FLAG_WQ = 64,
+	HK_FLAG_MANAGED_IRQ = 128,
+	HK_FLAG_KTHREAD = 256,
+};
+
+enum tick_dep_bits {
+	TICK_DEP_BIT_POSIX_TIMER = 0,
+	TICK_DEP_BIT_PERF_EVENTS = 1,
+	TICK_DEP_BIT_SCHED = 2,
+	TICK_DEP_BIT_CLOCK_UNSTABLE = 3,
+	TICK_DEP_BIT_RCU = 4,
+	TICK_DEP_BIT_RCU_EXP = 5,
+};
+
+enum cpuacct_stat_index {
+	CPUACCT_STAT_USER = 0,
+	CPUACCT_STAT_SYSTEM = 1,
+	CPUACCT_STAT_NSTATS = 2,
+};
+
+enum {
+	__SD_BALANCE_NEWIDLE = 0,
+	__SD_BALANCE_EXEC = 1,
+	__SD_BALANCE_FORK = 2,
+	__SD_BALANCE_WAKE = 3,
+	__SD_WAKE_AFFINE = 4,
+	__SD_ASYM_CPUCAPACITY = 5,
+	__SD_ASYM_CPUCAPACITY_FULL = 6,
+	__SD_SHARE_CPUCAPACITY = 7,
+	__SD_SHARE_PKG_RESOURCES = 8,
+	__SD_SERIALIZE = 9,
+	__SD_ASYM_PACKING = 10,
+	__SD_PREFER_SIBLING = 11,
+	__SD_OVERLAP = 12,
+	__SD_NUMA = 13,
+	__SD_FLAG_CNT = 14,
+};
+
+enum s_alloc {
+	sa_rootdomain = 0,
+	sa_sd = 1,
+	sa_sd_storage = 2,
+	sa_none = 3,
+};
+
+enum membarrier_cmd {
+	MEMBARRIER_CMD_QUERY = 0,
+	MEMBARRIER_CMD_GLOBAL = 1,
+	MEMBARRIER_CMD_GLOBAL_EXPEDITED = 2,
+	MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED = 4,
+	MEMBARRIER_CMD_PRIVATE_EXPEDITED = 8,
+	MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED = 16,
+	MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE = 32,
+	MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE = 64,
+	MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ = 128,
+	MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_RSEQ = 256,
+	MEMBARRIER_CMD_GET_REGISTRATIONS = 512,
+	MEMBARRIER_CMD_SHARED = 1,
+};
+
+enum membarrier_cmd_flag {
+	MEMBARRIER_CMD_FLAG_CPU = 1,
+};
+
+enum {
+	MEMBARRIER_FLAG_SYNC_CORE = 1,
+	MEMBARRIER_FLAG_RSEQ = 2,
+};
+
+struct psi_window {
+	u64 size;
+	u64 start_time;
+	u64 start_value;
+	u64 prev_growth;
+};
+
+struct psi_trigger {
+	enum psi_states state;
+	u64 threshold;
+	struct list_head node;
+	struct psi_group *group;
+	wait_queue_head_t event_wait;
+	struct kernfs_open_file *of;
+	int event;
+	struct psi_window win;
+	u64 last_event_time;
+	bool pending_event;
+	enum psi_aggregators aggregator;
+};
+
+struct asym_cap_data {
+	struct list_head link;
+	unsigned long capacity;
+	unsigned long cpus[0];
+};
+
+struct s_data {
+	struct sched_domain * __attribute__((btf_type_tag("percpu"))) *sd;
+	struct root_domain *rd;
+};
+
+typedef __kernel_ulong_t ino_t;
+
+typedef void (*btf_trace_contention_begin)(void *, void *, unsigned int);
+
+typedef void (*btf_trace_contention_end)(void *, void *, int);
+
+struct trace_event_raw_contention_begin {
+	struct trace_entry ent;
+	void *lock_addr;
+	unsigned int flags;
+	char __data[0];
+};
+
+struct trace_event_raw_contention_end {
+	struct trace_entry ent;
+	void *lock_addr;
+	int ret;
+	char __data[0];
+};
+
+struct ww_acquire_ctx;
+
+struct mutex_waiter {
+	struct list_head list;
+	struct task_struct *task;
+	struct ww_acquire_ctx *ww_ctx;
+};
+
+struct ww_acquire_ctx {
+	struct task_struct *task;
+	unsigned long stamp;
+	unsigned int acquired;
+	unsigned short wounded;
+	unsigned short is_wait_die;
+};
+
+struct ww_mutex {
+	struct mutex base;
+	struct ww_acquire_ctx *ctx;
+};
+
+struct trace_event_data_offsets_contention_begin {};
+
+struct trace_event_data_offsets_contention_end {};
+
+struct semaphore_waiter {
+	struct list_head list;
+	struct task_struct *task;
+	bool up;
+};
+
+enum rwsem_waiter_type {
+	RWSEM_WAITING_FOR_WRITE = 0,
+	RWSEM_WAITING_FOR_READ = 1,
+};
+
+enum rwsem_wake_type {
+	RWSEM_WAKE_ANY = 0,
+	RWSEM_WAKE_READERS = 1,
+	RWSEM_WAKE_READ_OWNED = 2,
+};
+
+enum owner_state {
+	OWNER_NULL = 1,
+	OWNER_WRITER = 2,
+	OWNER_READER = 4,
+	OWNER_NONSPINNABLE = 8,
+};
+
+struct rwsem_waiter {
+	struct list_head list;
+	struct task_struct *task;
+	enum rwsem_waiter_type type;
+	unsigned long timeout;
+	bool handoff_set;
+};
+
+struct optimistic_spin_node {
+	struct optimistic_spin_node *next;
+	struct optimistic_spin_node *prev;
+	int locked;
+	int cpu;
+};
+
+struct mcs_spinlock {
+	struct mcs_spinlock *next;
+	int locked;
+	int count;
+};
+
+struct qnode {
+	struct mcs_spinlock mcs;
+};
+
+enum rtmutex_chainwalk {
+	RT_MUTEX_MIN_CHAINWALK = 0,
+	RT_MUTEX_FULL_CHAINWALK = 1,
+};
+
+struct rt_waiter_node {
+	struct rb_node entry;
+	int prio;
+	u64 deadline;
+};
+
+struct rt_mutex_base;
+
+struct rt_mutex_waiter {
+	struct rt_waiter_node tree;
+	struct rt_waiter_node pi_tree;
+	struct task_struct *task;
+	struct rt_mutex_base *lock;
+	unsigned int wake_state;
+	struct ww_acquire_ctx *ww_ctx;
+};
+
+struct rt_mutex_base {
+	raw_spinlock_t wait_lock;
+	struct rb_root_cached waiters;
+	struct task_struct *owner;
+};
+
+struct rt_mutex {
+	struct rt_mutex_base rtmutex;
+};
+
+struct rt_wake_q_head {
+	struct wake_q_head head;
+	struct task_struct *rtlock_task;
+};
+
+struct hrtimer_sleeper {
+	struct hrtimer timer;
+	struct task_struct *task;
+};
+
+enum pm_qos_req_action {
+	PM_QOS_ADD_REQ = 0,
+	PM_QOS_UPDATE_REQ = 1,
+	PM_QOS_REMOVE_REQ = 2,
+};
+
+enum suspend_stat_step {
+	SUSPEND_FREEZE = 1,
+	SUSPEND_PREPARE = 2,
+	SUSPEND_SUSPEND = 3,
+	SUSPEND_SUSPEND_LATE = 4,
+	SUSPEND_SUSPEND_NOIRQ = 5,
+	SUSPEND_RESUME_NOIRQ = 6,
+	SUSPEND_RESUME_EARLY = 7,
+	SUSPEND_RESUME = 8,
+};
+
+enum {
+	TEST_NONE = 0,
+	TEST_CORE = 1,
+	TEST_CPUS = 2,
+	TEST_PLATFORM = 3,
+	TEST_DEVICES = 4,
+	TEST_FREEZER = 5,
+	__TEST_AFTER_LAST = 6,
+};
+
+typedef int suspend_state_t;
+
+struct platform_suspend_ops {
+	int (*valid)(suspend_state_t);
+	int (*begin)(suspend_state_t);
+	int (*prepare)();
+	int (*prepare_late)();
+	int (*enter)(suspend_state_t);
+	void (*wake)();
+	void (*finish)();
+	bool (*suspend_again)();
+	void (*end)();
+	void (*recover)();
+	u64 android_kabi_reserved1;
+};
+
+struct platform_s2idle_ops {
+	int (*begin)();
+	int (*prepare)();
+	int (*prepare_late)();
+	void (*check)();
+	bool (*wake)();
+	void (*restore_early)();
+	void (*restore)();
+	void (*end)();
+	u64 android_kabi_reserved1;
+};
+
+struct wakelock {
+	char *name;
+	struct rb_node node;
+	struct wakeup_source *ws;
+};
+
+struct sysrq_key_op {
+	void (* const handler)(u8);
+	const char * const help_msg;
+	const char * const action_msg;
+	const int enable_mask;
+};
+
+enum wakeup_reason_flag {
+	RESUME_NONE = 0,
+	RESUME_IRQ = 1,
+	RESUME_ABORT = 2,
+	RESUME_ABNORMAL = 3,
+};
+
+struct wakeup_irq_node {
+	struct list_head siblings;
+	int irq;
+	const char *irq_name;
+};
+
+typedef void (*btf_trace_console)(void *, const char *, size_t);
+
+struct prb_desc;
+
+struct printk_info;
+
+struct prb_desc_ring {
+	unsigned int count_bits;
+	struct prb_desc *descs;
+	struct printk_info *infos;
+	atomic_long_t head_id;
+	atomic_long_t tail_id;
+	atomic_long_t last_finalized_id;
+};
+
+struct prb_data_ring {
+	unsigned int size_bits;
+	char *data;
+	atomic_long_t head_lpos;
+	atomic_long_t tail_lpos;
+};
+
+struct printk_ringbuffer {
+	struct prb_desc_ring desc_ring;
+	struct prb_data_ring text_data_ring;
+	atomic_long_t fail;
+};
+
+struct prb_data_blk_lpos {
+	unsigned long begin;
+	unsigned long next;
+};
+
+struct prb_desc {
+	atomic_long_t state_var;
+	struct prb_data_blk_lpos text_blk_lpos;
+};
+
+struct dev_printk_info {
+	char subsystem[16];
+	char device[48];
+};
+
+struct printk_info {
+	u64 seq;
+	u64 ts_nsec;
+	u16 text_len;
+	u8 facility;
+	u8 flags: 5;
+	u8 level: 3;
+	u32 caller_id;
+	struct dev_printk_info dev_info;
+};
+
+struct console_cmdline {
+	char name[16];
+	int index;
+	bool user_specified;
+	char *options;
+};
+
+struct printk_buffers {
+	char outbuf[2048];
+	char scratchbuf[1024];
+};
+
+struct latched_seq {
+	seqcount_latch_t latch;
+	u64 val[2];
+};
+
+enum devkmsg_log_masks {
+	DEVKMSG_LOG_MASK_ON = 1,
+	DEVKMSG_LOG_MASK_OFF = 2,
+	DEVKMSG_LOG_MASK_LOCK = 4,
+};
+
+enum printk_info_flags {
+	LOG_NEWLINE = 2,
+	LOG_CONT = 8,
+};
+
+enum con_msg_format_flags {
+	MSG_FORMAT_DEFAULT = 0,
+	MSG_FORMAT_SYSLOG = 1,
+};
+
+struct kmsg_dumper {
+	struct list_head list;
+	void (*dump)(struct kmsg_dumper *, enum kmsg_dump_reason);
+	enum kmsg_dump_reason max_reason;
+	bool registered;
+};
+
+struct trace_event_raw_console {
+	struct trace_entry ent;
+	u32 __data_loc_msg;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_console {
+	u32 msg;
+};
+
+struct printk_record {
+	struct printk_info *info;
+	char *text_buf;
+	unsigned int text_buf_size;
+};
+
+struct prb_reserved_entry {
+	struct printk_ringbuffer *rb;
+	unsigned long irqflags;
+	unsigned long id;
+	unsigned int text_space;
+};
+
+struct printk_message {
+	struct printk_buffers *pbufs;
+	unsigned int outbuf_len;
+	u64 seq;
+	unsigned long dropped;
+};
+
+struct devkmsg_user {
+	atomic64_t seq;
+	struct ratelimit_state rs;
+	struct mutex lock;
+	struct printk_buffers pbufs;
+};
+
+struct kmsg_dump_iter {
+	u64 cur_seq;
+	u64 next_seq;
+};
+
+enum desc_state {
+	desc_miss = -1,
+	desc_reserved = 0,
+	desc_committed = 1,
+	desc_finalized = 2,
+	desc_reusable = 3,
+};
+
+struct prb_data_block {
+	unsigned long id;
+	char data[0];
+};
+
+enum {
+	IRQS_AUTODETECT = 1,
+	IRQS_SPURIOUS_DISABLED = 2,
+	IRQS_POLL_INPROGRESS = 8,
+	IRQS_ONESHOT = 32,
+	IRQS_REPLAY = 64,
+	IRQS_WAITING = 128,
+	IRQS_PENDING = 512,
+	IRQS_SUSPENDED = 2048,
+	IRQS_TIMINGS = 4096,
+	IRQS_NMI = 8192,
+	IRQS_SYSFS = 16384,
+};
+
+enum {
+	_IRQ_DEFAULT_INIT_FLAGS = 0,
+	_IRQ_PER_CPU = 512,
+	_IRQ_LEVEL = 256,
+	_IRQ_NOPROBE = 1024,
+	_IRQ_NOREQUEST = 2048,
+	_IRQ_NOTHREAD = 65536,
+	_IRQ_NOAUTOEN = 4096,
+	_IRQ_MOVE_PCNTXT = 16384,
+	_IRQ_NO_BALANCING = 8192,
+	_IRQ_NESTED_THREAD = 32768,
+	_IRQ_PER_CPU_DEVID = 131072,
+	_IRQ_IS_POLLED = 262144,
+	_IRQ_DISABLE_UNLAZY = 524288,
+	_IRQ_HIDDEN = 1048576,
+	_IRQ_NO_DEBUG = 2097152,
+	_IRQF_MODIFY_MASK = 2096911,
+};
+
+enum {
+	IRQTF_RUNTHREAD = 0,
+	IRQTF_WARNED = 1,
+	IRQTF_AFFINITY = 2,
+	IRQTF_FORCED_THREAD = 3,
+	IRQTF_READY = 4,
+};
+
+enum {
+	IRQC_IS_HARDIRQ = 0,
+	IRQC_IS_NESTED = 1,
+};
+
+enum {
+	IRQ_STARTUP_NORMAL = 0,
+	IRQ_STARTUP_MANAGED = 1,
+	IRQ_STARTUP_ABORT = 2,
+};
+
+struct irq_devres {
+	unsigned int irq;
+	void *dev_id;
+};
+
+struct irq_desc_devres {
+	unsigned int from;
+	unsigned int cnt;
+};
+
+struct irq_generic_chip_devres {
+	struct irq_chip_generic *gc;
+	u32 msk;
+	unsigned int clr;
+	unsigned int set;
+};
+
+struct irqchip_fwid {
+	struct fwnode_handle fwnode;
+	unsigned int type;
+	char *name;
+	phys_addr_t *pa;
+};
+
+enum {
+	AFFINITY = 0,
+	AFFINITY_LIST = 1,
+	EFFECTIVE = 2,
+	EFFECTIVE_LIST = 3,
+};
+
+enum msi_domain_ids {
+	MSI_DEFAULT_DOMAIN = 0,
+	MSI_SECONDARY_DOMAIN = 1,
+	MSI_MAX_DEVICE_IRQDOMAINS = 2,
+};
+
+enum msi_desc_filter {
+	MSI_DESC_ALL = 0,
+	MSI_DESC_NOTASSOCIATED = 1,
+	MSI_DESC_ASSOCIATED = 2,
+};
+
+struct msi_domain_template {
+	char name[48];
+	struct irq_chip chip;
+	struct msi_domain_ops ops;
+	struct msi_domain_info info;
+};
+
+struct xa_limit {
+	u32 max;
+	u32 min;
+};
+
+struct msi_ctrl {
+	unsigned int domid;
+	unsigned int first;
+	unsigned int last;
+	unsigned int nirqs;
+};
+
+struct msi_map {
+	int index;
+	int virq;
+};
+
+struct irq_affinity {
+	unsigned int pre_vectors;
+	unsigned int post_vectors;
+	unsigned int nr_sets;
+	unsigned int set_size[4];
+	void (*calc_sets)(struct irq_affinity *, unsigned int);
+	void *priv;
+};
+
+struct irq_matrix;
+
+typedef void (*btf_trace_irq_matrix_online)(void *, struct irq_matrix *);
+
+struct cpumap;
+
+struct irq_matrix {
+	unsigned int matrix_bits;
+	unsigned int alloc_start;
+	unsigned int alloc_end;
+	unsigned int alloc_size;
+	unsigned int global_available;
+	unsigned int global_reserved;
+	unsigned int systembits_inalloc;
+	unsigned int total_allocated;
+	unsigned int online_maps;
+	struct cpumap __attribute__((btf_type_tag("percpu"))) *maps;
+	unsigned long scratch_map[4];
+	unsigned long system_map[4];
+};
+
+struct cpumap {
+	unsigned int available;
+	unsigned int allocated;
+	unsigned int managed;
+	unsigned int managed_allocated;
+	bool initialized;
+	bool online;
+	unsigned long alloc_map[4];
+	unsigned long managed_map[4];
+};
+
+typedef void (*btf_trace_irq_matrix_offline)(void *, struct irq_matrix *);
+
+typedef void (*btf_trace_irq_matrix_reserve)(void *, struct irq_matrix *);
+
+typedef void (*btf_trace_irq_matrix_remove_reserved)(void *, struct irq_matrix *);
+
+typedef void (*btf_trace_irq_matrix_assign_system)(void *, int, struct irq_matrix *);
+
+typedef void (*btf_trace_irq_matrix_alloc_reserved)(void *, int, unsigned int, struct irq_matrix *, struct cpumap *);
+
+typedef void (*btf_trace_irq_matrix_reserve_managed)(void *, int, unsigned int, struct irq_matrix *, struct cpumap *);
+
+typedef void (*btf_trace_irq_matrix_remove_managed)(void *, int, unsigned int, struct irq_matrix *, struct cpumap *);
+
+typedef void (*btf_trace_irq_matrix_alloc_managed)(void *, int, unsigned int, struct irq_matrix *, struct cpumap *);
+
+typedef void (*btf_trace_irq_matrix_assign)(void *, int, unsigned int, struct irq_matrix *, struct cpumap *);
+
+typedef void (*btf_trace_irq_matrix_alloc)(void *, int, unsigned int, struct irq_matrix *, struct cpumap *);
+
+typedef void (*btf_trace_irq_matrix_free)(void *, int, unsigned int, struct irq_matrix *, struct cpumap *);
+
+struct trace_event_raw_irq_matrix_global {
+	struct trace_entry ent;
+	unsigned int online_maps;
+	unsigned int global_available;
+	unsigned int global_reserved;
+	unsigned int total_allocated;
+	char __data[0];
+};
+
+struct trace_event_raw_irq_matrix_global_update {
+	struct trace_entry ent;
+	int bit;
+	unsigned int online_maps;
+	unsigned int global_available;
+	unsigned int global_reserved;
+	unsigned int total_allocated;
+	char __data[0];
+};
+
+struct trace_event_raw_irq_matrix_cpu {
+	struct trace_entry ent;
+	int bit;
+	unsigned int cpu;
+	bool online;
+	unsigned int available;
+	unsigned int allocated;
+	unsigned int managed;
+	unsigned int online_maps;
+	unsigned int global_available;
+	unsigned int global_reserved;
+	unsigned int total_allocated;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_irq_matrix_global {};
+
+struct trace_event_data_offsets_irq_matrix_global_update {};
+
+struct trace_event_data_offsets_irq_matrix_cpu {};
+
+typedef void (*btf_trace_rcu_utilization)(void *, const char *);
+
+typedef void (*btf_trace_rcu_grace_period)(void *, const char *, unsigned long, const char *);
+
+typedef void (*btf_trace_rcu_future_grace_period)(void *, const char *, unsigned long, unsigned long, u8, int, int, const char *);
+
+typedef void (*btf_trace_rcu_grace_period_init)(void *, const char *, unsigned long, u8, int, int, unsigned long);
+
+typedef void (*btf_trace_rcu_exp_grace_period)(void *, const char *, unsigned long, const char *);
+
+typedef void (*btf_trace_rcu_exp_funnel_lock)(void *, const char *, u8, int, int, const char *);
+
+typedef void (*btf_trace_rcu_nocb_wake)(void *, const char *, int, const char *);
+
+typedef void (*btf_trace_rcu_preempt_task)(void *, const char *, int, unsigned long);
+
+typedef void (*btf_trace_rcu_unlock_preempted_task)(void *, const char *, unsigned long, int);
+
+typedef void (*btf_trace_rcu_quiescent_state_report)(void *, const char *, unsigned long, unsigned long, unsigned long, u8, int, int, int);
+
+typedef void (*btf_trace_rcu_fqs)(void *, const char *, unsigned long, int, const char *);
+
+typedef void (*btf_trace_rcu_stall_warning)(void *, const char *, const char *);
+
+typedef void (*btf_trace_rcu_dyntick)(void *, const char *, long, long, int);
+
+typedef void (*btf_trace_rcu_callback)(void *, const char *, struct callback_head *, long);
+
+typedef void (*btf_trace_rcu_segcb_stats)(void *, struct rcu_segcblist *, const char *);
+
+typedef void (*btf_trace_rcu_kvfree_callback)(void *, const char *, struct callback_head *, unsigned long, long);
+
+typedef void (*btf_trace_rcu_batch_start)(void *, const char *, long, long);
+
+typedef void (*btf_trace_rcu_invoke_callback)(void *, const char *, struct callback_head *);
+
+typedef void (*btf_trace_rcu_invoke_kvfree_callback)(void *, const char *, struct callback_head *, unsigned long);
+
+typedef void (*btf_trace_rcu_invoke_kfree_bulk_callback)(void *, const char *, unsigned long, void **);
+
+typedef void (*btf_trace_rcu_batch_end)(void *, const char *, int, char, char, char, char);
+
+typedef void (*btf_trace_rcu_torture_read)(void *, const char *, struct callback_head *, unsigned long, unsigned long, unsigned long);
+
+typedef void (*btf_trace_rcu_barrier)(void *, const char *, const char *, int, int, unsigned long);
+
+struct rcu_tasks;
+
+typedef void (*rcu_tasks_gp_func_t)(struct rcu_tasks *);
+
+typedef void (*pregp_func_t)(struct list_head *);
+
+typedef void (*pertask_func_t)(struct task_struct *, struct list_head *);
+
+typedef void (*postscan_func_t)(struct list_head *);
+
+typedef void (*holdouts_func_t)(struct list_head *, bool, bool *);
+
+typedef void (*postgp_func_t)(struct rcu_tasks *);
+
+typedef void (*call_rcu_func_t)(struct callback_head *, rcu_callback_t);
+
+struct rcu_tasks_percpu;
+
+struct rcu_tasks {
+	struct rcuwait cbs_wait;
+	raw_spinlock_t cbs_gbl_lock;
+	struct mutex tasks_gp_mutex;
+	int gp_state;
+	int gp_sleep;
+	int init_fract;
+	unsigned long gp_jiffies;
+	unsigned long gp_start;
+	unsigned long tasks_gp_seq;
+	unsigned long n_ipis;
+	unsigned long n_ipis_fails;
+	struct task_struct *kthread_ptr;
+	unsigned long lazy_jiffies;
+	rcu_tasks_gp_func_t gp_func;
+	pregp_func_t pregp_func;
+	pertask_func_t pertask_func;
+	postscan_func_t postscan_func;
+	holdouts_func_t holdouts_func;
+	postgp_func_t postgp_func;
+	call_rcu_func_t call_func;
+	struct rcu_tasks_percpu __attribute__((btf_type_tag("percpu"))) *rtpcpu;
+	int percpu_enqueue_shift;
+	int percpu_enqueue_lim;
+	int percpu_dequeue_lim;
+	unsigned long percpu_dequeue_gpseq;
+	struct mutex barrier_q_mutex;
+	atomic_t barrier_q_count;
+	struct completion barrier_q_completion;
+	unsigned long barrier_q_seq;
+	char *name;
+	char *kname;
+};
+
+struct rcu_tasks_percpu {
+	struct rcu_segcblist cblist;
+	raw_spinlock_t lock;
+	unsigned long rtp_jiffies;
+	unsigned long rtp_n_lock_retries;
+	struct timer_list lazy_timer;
+	unsigned int urgent_gp;
+	struct work_struct rtp_work;
+	struct irq_work rtp_irq_work;
+	struct callback_head barrier_q_head;
+	struct list_head rtp_blkd_tasks;
+	int cpu;
+	struct rcu_tasks *rtpp;
+};
+
+struct rcu_synchronize {
+	struct callback_head head;
+	struct completion completion;
+};
+
+struct trace_event_raw_rcu_utilization {
+	struct trace_entry ent;
+	const char *s;
+	char __data[0];
+};
+
+struct trace_event_raw_rcu_grace_period {
+	struct trace_entry ent;
+	const char *rcuname;
+	long gp_seq;
+	const char *gpevent;
+	char __data[0];
+};
+
+struct trace_event_raw_rcu_future_grace_period {
+	struct trace_entry ent;
+	const char *rcuname;
+	long gp_seq;
+	long gp_seq_req;
+	u8 level;
+	int grplo;
+	int grphi;
+	const char *gpevent;
+	char __data[0];
+};
+
+struct trace_event_raw_rcu_grace_period_init {
+	struct trace_entry ent;
+	const char *rcuname;
+	long gp_seq;
+	u8 level;
+	int grplo;
+	int grphi;
+	unsigned long qsmask;
+	char __data[0];
+};
+
+struct trace_event_raw_rcu_exp_grace_period {
+	struct trace_entry ent;
+	const char *rcuname;
+	long gpseq;
+	const char *gpevent;
+	char __data[0];
+};
+
+struct trace_event_raw_rcu_exp_funnel_lock {
+	struct trace_entry ent;
+	const char *rcuname;
+	u8 level;
+	int grplo;
+	int grphi;
+	const char *gpevent;
+	char __data[0];
+};
+
+struct trace_event_raw_rcu_nocb_wake {
+	struct trace_entry ent;
+	const char *rcuname;
+	int cpu;
+	const char *reason;
+	char __data[0];
+};
+
+struct trace_event_raw_rcu_preempt_task {
+	struct trace_entry ent;
+	const char *rcuname;
+	long gp_seq;
+	int pid;
+	char __data[0];
+};
+
+struct trace_event_raw_rcu_unlock_preempted_task {
+	struct trace_entry ent;
+	const char *rcuname;
+	long gp_seq;
+	int pid;
+	char __data[0];
+};
+
+struct trace_event_raw_rcu_quiescent_state_report {
+	struct trace_entry ent;
+	const char *rcuname;
+	long gp_seq;
+	unsigned long mask;
+	unsigned long qsmask;
+	u8 level;
+	int grplo;
+	int grphi;
+	u8 gp_tasks;
+	char __data[0];
+};
+
+struct trace_event_raw_rcu_fqs {
+	struct trace_entry ent;
+	const char *rcuname;
+	long gp_seq;
+	int cpu;
+	const char *qsevent;
+	char __data[0];
+};
+
+struct trace_event_raw_rcu_stall_warning {
+	struct trace_entry ent;
+	const char *rcuname;
+	const char *msg;
+	char __data[0];
+};
+
+struct trace_event_raw_rcu_dyntick {
+	struct trace_entry ent;
+	const char *polarity;
+	long oldnesting;
+	long newnesting;
+	int dynticks;
+	char __data[0];
+};
+
+struct trace_event_raw_rcu_callback {
+	struct trace_entry ent;
+	const char *rcuname;
+	void *rhp;
+	void *func;
+	long qlen;
+	char __data[0];
+};
+
+struct trace_event_raw_rcu_segcb_stats {
+	struct trace_entry ent;
+	const char *ctx;
+	unsigned long gp_seq[4];
+	long seglen[4];
+	char __data[0];
+};
+
+struct trace_event_raw_rcu_kvfree_callback {
+	struct trace_entry ent;
+	const char *rcuname;
+	void *rhp;
+	unsigned long offset;
+	long qlen;
+	char __data[0];
+};
+
+struct trace_event_raw_rcu_batch_start {
+	struct trace_entry ent;
+	const char *rcuname;
+	long qlen;
+	long blimit;
+	char __data[0];
+};
+
+struct trace_event_raw_rcu_invoke_callback {
+	struct trace_entry ent;
+	const char *rcuname;
+	void *rhp;
+	void *func;
+	char __data[0];
+};
+
+struct trace_event_raw_rcu_invoke_kvfree_callback {
+	struct trace_entry ent;
+	const char *rcuname;
+	void *rhp;
+	unsigned long offset;
+	char __data[0];
+};
+
+struct trace_event_raw_rcu_invoke_kfree_bulk_callback {
+	struct trace_entry ent;
+	const char *rcuname;
+	unsigned long nr_records;
+	void **p;
+	char __data[0];
+};
+
+struct trace_event_raw_rcu_batch_end {
+	struct trace_entry ent;
+	const char *rcuname;
+	int callbacks_invoked;
+	char cb;
+	char nr;
+	char iit;
+	char risk;
+	char __data[0];
+};
+
+struct trace_event_raw_rcu_torture_read {
+	struct trace_entry ent;
+	char rcutorturename[8];
+	struct callback_head *rhp;
+	unsigned long secs;
+	unsigned long c_old;
+	unsigned long c;
+	char __data[0];
+};
+
+struct trace_event_raw_rcu_barrier {
+	struct trace_entry ent;
+	const char *rcuname;
+	const char *s;
+	int cpu;
+	int cnt;
+	unsigned long done;
+	char __data[0];
+};
+
+struct rcu_cblist {
+	struct callback_head *head;
+	struct callback_head **tail;
+	long len;
+};
+
+struct trc_stall_chk_rdr {
+	int nesting;
+	int ipi_to_cpu;
+	u8 needqs;
+};
+
+struct trace_event_data_offsets_rcu_utilization {};
+
+struct trace_event_data_offsets_rcu_grace_period {};
+
+struct trace_event_data_offsets_rcu_future_grace_period {};
+
+struct trace_event_data_offsets_rcu_grace_period_init {};
+
+struct trace_event_data_offsets_rcu_exp_grace_period {};
+
+struct trace_event_data_offsets_rcu_exp_funnel_lock {};
+
+struct trace_event_data_offsets_rcu_nocb_wake {};
+
+struct trace_event_data_offsets_rcu_preempt_task {};
+
+struct trace_event_data_offsets_rcu_unlock_preempted_task {};
+
+struct trace_event_data_offsets_rcu_quiescent_state_report {};
+
+struct trace_event_data_offsets_rcu_fqs {};
+
+struct trace_event_data_offsets_rcu_stall_warning {};
+
+struct trace_event_data_offsets_rcu_dyntick {};
+
+struct trace_event_data_offsets_rcu_callback {};
+
+struct trace_event_data_offsets_rcu_segcb_stats {};
+
+struct trace_event_data_offsets_rcu_kvfree_callback {};
+
+struct trace_event_data_offsets_rcu_batch_start {};
+
+struct trace_event_data_offsets_rcu_invoke_callback {};
+
+struct trace_event_data_offsets_rcu_invoke_kvfree_callback {};
+
+struct trace_event_data_offsets_rcu_invoke_kfree_bulk_callback {};
+
+struct trace_event_data_offsets_rcu_batch_end {};
+
+struct trace_event_data_offsets_rcu_torture_read {};
+
+struct trace_event_data_offsets_rcu_barrier {};
+
+enum {
+	GP_IDLE = 0,
+	GP_ENTER = 1,
+	GP_PASSED = 2,
+	GP_EXIT = 3,
+	GP_REPLAY = 4,
+};
+
+enum rcutorture_type {
+	RCU_FLAVOR = 0,
+	RCU_TASKS_FLAVOR = 1,
+	RCU_TASKS_RUDE_FLAVOR = 2,
+	RCU_TASKS_TRACING_FLAVOR = 3,
+	RCU_TRIVIAL_FLAVOR = 4,
+	SRCU_FLAVOR = 5,
+	INVALID_RCU_FLAVOR = 6,
+};
+
+struct rcu_exp_work {
+	unsigned long rew_s;
+	struct kthread_work rew_work;
+};
+
+struct rcu_node {
+	raw_spinlock_t lock;
+	unsigned long gp_seq;
+	unsigned long gp_seq_needed;
+	unsigned long completedqs;
+	unsigned long qsmask;
+	unsigned long rcu_gp_init_mask;
+	unsigned long qsmaskinit;
+	unsigned long qsmaskinitnext;
+	unsigned long expmask;
+	unsigned long expmaskinit;
+	unsigned long expmaskinitnext;
+	unsigned long cbovldmask;
+	unsigned long ffmask;
+	unsigned long grpmask;
+	int grplo;
+	int grphi;
+	u8 grpnum;
+	u8 level;
+	bool wait_blkd_tasks;
+	struct rcu_node *parent;
+	struct list_head blkd_tasks;
+	struct list_head *gp_tasks;
+	struct list_head *exp_tasks;
+	struct list_head *boost_tasks;
+	struct rt_mutex boost_mtx;
+	unsigned long boost_time;
+	struct mutex boost_kthread_mutex;
+	struct task_struct *boost_kthread_task;
+	unsigned int boost_kthread_status;
+	unsigned long n_boosts;
+	struct swait_queue_head nocb_gp_wq[2];
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	raw_spinlock_t fqslock;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	spinlock_t exp_lock;
+	unsigned long exp_seq_rq;
+	wait_queue_head_t exp_wq[4];
+	struct rcu_exp_work rew;
+	bool exp_need_flush;
+	raw_spinlock_t exp_poll_lock;
+	unsigned long exp_seq_poll_rq;
+	struct work_struct exp_poll_wq;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+union rcu_noqs {
+	struct {
+		u8 norm;
+		u8 exp;
+	} b;
+	u16 s;
+};
+
+struct rcu_snap_record {
+	unsigned long gp_seq;
+	u64 cputime_irq;
+	u64 cputime_softirq;
+	u64 cputime_system;
+	unsigned long nr_hardirqs;
+	unsigned int nr_softirqs;
+	unsigned long long nr_csw;
+	unsigned long jiffies;
+};
+
+struct rcu_data {
+	unsigned long gp_seq;
+	unsigned long gp_seq_needed;
+	union rcu_noqs cpu_no_qs;
+	bool core_needs_qs;
+	bool beenonline;
+	bool gpwrap;
+	bool cpu_started;
+	struct rcu_node *mynode;
+	unsigned long grpmask;
+	unsigned long ticks_this_gp;
+	struct irq_work defer_qs_iw;
+	bool defer_qs_iw_pending;
+	struct work_struct strict_work;
+	struct rcu_segcblist cblist;
+	long qlen_last_fqs_check;
+	unsigned long n_cbs_invoked;
+	unsigned long n_force_qs_snap;
+	long blimit;
+	int dynticks_snap;
+	bool rcu_need_heavy_qs;
+	bool rcu_urgent_qs;
+	bool rcu_forced_tick;
+	bool rcu_forced_tick_exp;
+	unsigned long barrier_seq_snap;
+	struct callback_head barrier_head;
+	int exp_dynticks_snap;
+	struct swait_queue_head nocb_cb_wq;
+	struct swait_queue_head nocb_state_wq;
+	struct task_struct *nocb_gp_kthread;
+	raw_spinlock_t nocb_lock;
+	atomic_t nocb_lock_contended;
+	int nocb_defer_wakeup;
+	struct timer_list nocb_timer;
+	unsigned long nocb_gp_adv_time;
+	struct mutex nocb_gp_kthread_mutex;
+	raw_spinlock_t nocb_bypass_lock;
+	struct rcu_cblist nocb_bypass;
+	unsigned long nocb_bypass_first;
+	unsigned long nocb_nobypass_last;
+	int nocb_nobypass_count;
+	long: 64;
+	raw_spinlock_t nocb_gp_lock;
+	u8 nocb_gp_sleep;
+	u8 nocb_gp_bypass;
+	u8 nocb_gp_gp;
+	unsigned long nocb_gp_seq;
+	unsigned long nocb_gp_loops;
+	struct swait_queue_head nocb_gp_wq;
+	bool nocb_cb_sleep;
+	struct task_struct *nocb_cb_kthread;
+	struct list_head nocb_head_rdp;
+	struct list_head nocb_entry_rdp;
+	struct rcu_data *nocb_toggling_rdp;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct rcu_data *nocb_gp_rdp;
+	struct task_struct *rcu_cpu_kthread_task;
+	unsigned int rcu_cpu_kthread_status;
+	char rcu_cpu_has_work;
+	unsigned long rcuc_activity;
+	unsigned int softirq_snap;
+	struct irq_work rcu_iw;
+	bool rcu_iw_pending;
+	unsigned long rcu_iw_gp_seq;
+	unsigned long rcu_ofl_gp_seq;
+	short rcu_ofl_gp_flags;
+	unsigned long rcu_onl_gp_seq;
+	short rcu_onl_gp_flags;
+	unsigned long last_fqs_resched;
+	unsigned long last_sched_clock;
+	struct rcu_snap_record snap_record;
+	long lazy_len;
+	int cpu;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct rcu_state {
+	struct rcu_node node[3];
+	struct rcu_node *level[3];
+	int ncpus;
+	int n_online_cpus;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	unsigned long gp_seq;
+	unsigned long gp_max;
+	struct task_struct *gp_kthread;
+	struct swait_queue_head gp_wq;
+	short gp_flags;
+	short gp_state;
+	unsigned long gp_wake_time;
+	unsigned long gp_wake_seq;
+	unsigned long gp_seq_polled;
+	unsigned long gp_seq_polled_snap;
+	unsigned long gp_seq_polled_exp_snap;
+	struct mutex barrier_mutex;
+	atomic_t barrier_cpu_count;
+	struct completion barrier_completion;
+	unsigned long barrier_sequence;
+	raw_spinlock_t barrier_lock;
+	struct mutex exp_mutex;
+	struct mutex exp_wake_mutex;
+	unsigned long expedited_sequence;
+	atomic_t expedited_need_qs;
+	struct swait_queue_head expedited_wq;
+	int ncpus_snap;
+	u8 cbovld;
+	u8 cbovldnext;
+	unsigned long jiffies_force_qs;
+	unsigned long jiffies_kick_kthreads;
+	unsigned long n_force_qs;
+	unsigned long gp_start;
+	unsigned long gp_end;
+	unsigned long gp_activity;
+	unsigned long gp_req_activity;
+	unsigned long jiffies_stall;
+	int nr_fqs_jiffies_stall;
+	unsigned long jiffies_resched;
+	unsigned long n_force_qs_gpstart;
+	const char *name;
+	char abbr;
+	long: 0;
+	arch_spinlock_t ofl_lock;
+	int nocb_is_setup;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct rcu_gp_oldstate {
+	unsigned long rgos_norm;
+	unsigned long rgos_exp;
+};
+
+struct kfree_rcu_cpu;
+
+struct kfree_rcu_cpu_work {
+	struct rcu_work rcu_work;
+	struct callback_head *head_free;
+	struct rcu_gp_oldstate head_free_gp_snap;
+	struct list_head bulk_head_free[2];
+	struct kfree_rcu_cpu *krcp;
+};
+
+struct kfree_rcu_cpu {
+	struct callback_head *head;
+	unsigned long head_gp_snap;
+	atomic_t head_count;
+	struct list_head bulk_head[2];
+	atomic_t bulk_count[2];
+	struct kfree_rcu_cpu_work krw_arr[2];
+	raw_spinlock_t lock;
+	struct delayed_work monitor_work;
+	bool initialized;
+	struct delayed_work page_cache_work;
+	atomic_t backoff_page_cache_fill;
+	atomic_t work_in_progress;
+	struct hrtimer hrtimer;
+	struct llist_head bkvcache;
+	int nr_bkv_objs;
+};
+
+struct context_tracking {
+	atomic_t state;
+	long dynticks_nesting;
+	long dynticks_nmi_nesting;
+};
+
+struct kvfree_rcu_bulk_data {
+	struct list_head list;
+	struct rcu_gp_oldstate gp_snap;
+	unsigned long nr_records;
+	void *records[0];
+};
+
+struct rcu_stall_chk_rdr {
+	int nesting;
+	union rcu_special rs;
+	bool on_blkd_list;
+};
+
+struct dma_sgt_handle {
+	struct sg_table sgt;
+	struct page **pages;
+};
+
+struct dma_devres {
+	size_t size;
+	void *vaddr;
+	dma_addr_t dma_handle;
+	unsigned long attrs;
+};
+
+enum pci_p2pdma_map_type {
+	PCI_P2PDMA_MAP_UNKNOWN = 0,
+	PCI_P2PDMA_MAP_NOT_SUPPORTED = 1,
+	PCI_P2PDMA_MAP_BUS_ADDR = 2,
+	PCI_P2PDMA_MAP_THRU_HOST_BRIDGE = 3,
+};
+
+struct pci_p2pdma_map_state {
+	struct dev_pagemap *pgmap;
+	int map;
+	u64 bus_off;
+};
+
+struct debugfs_u32_array {
+	u32 *array;
+	u32 n_elements;
+};
+
+struct cma {
+	unsigned long base_pfn;
+	unsigned long count;
+	unsigned long *bitmap;
+	unsigned int order_per_bit;
+	spinlock_t lock;
+	struct hlist_head mem_head;
+	spinlock_t mem_head_lock;
+	struct debugfs_u32_array dfs_bitmap;
+	char name[64];
+	bool reserve_pages_on_error;
+};
+
+struct io_tlb_area {
+	unsigned long used;
+	unsigned int index;
+	spinlock_t lock;
+};
+
+struct io_tlb_slot {
+	phys_addr_t orig_addr;
+	size_t alloc_size;
+	unsigned int list;
+};
+
+typedef void (*btf_trace_swiotlb_bounced)(void *, struct device *, dma_addr_t, size_t);
+
+struct trace_event_raw_swiotlb_bounced {
+	struct trace_entry ent;
+	u32 __data_loc_dev_name;
+	u64 dma_mask;
+	dma_addr_t dev_addr;
+	size_t size;
+	bool force;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_swiotlb_bounced {
+	u32 dev_name;
+};
+
+typedef void (*btf_trace_sys_enter)(void *, struct pt_regs *, long);
+
+typedef void (*btf_trace_sys_exit)(void *, struct pt_regs *, long);
+
+enum {
+	TRACE_EVENT_FL_FILTERED = 1,
+	TRACE_EVENT_FL_CAP_ANY = 2,
+	TRACE_EVENT_FL_NO_SET_FILTER = 4,
+	TRACE_EVENT_FL_IGNORE_ENABLE = 8,
+	TRACE_EVENT_FL_TRACEPOINT = 16,
+	TRACE_EVENT_FL_DYNAMIC = 32,
+	TRACE_EVENT_FL_KPROBE = 64,
+	TRACE_EVENT_FL_UPROBE = 128,
+	TRACE_EVENT_FL_EPROBE = 256,
+	TRACE_EVENT_FL_FPROBE = 512,
+	TRACE_EVENT_FL_CUSTOM = 1024,
+};
+
+struct trace_event_raw_sys_enter {
+	struct trace_entry ent;
+	long id;
+	unsigned long args[6];
+	char __data[0];
+};
+
+struct trace_event_raw_sys_exit {
+	struct trace_entry ent;
+	long id;
+	long ret;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_sys_enter {};
+
+struct trace_event_data_offsets_sys_exit {};
+
+struct ptrace_sud_config {
+	__u64 mode;
+	__u64 selector;
+	__u64 offset;
+	__u64 len;
+};
+
+typedef void (*btf_trace_module_load)(void *, struct module *);
+
+typedef void (*btf_trace_module_free)(void *, struct module *);
+
+typedef void (*btf_trace_module_get)(void *, struct module *, unsigned long);
+
+typedef void (*btf_trace_module_put)(void *, struct module *, unsigned long);
+
+typedef void (*btf_trace_module_request)(void *, char *, bool, unsigned long);
+
+struct latch_tree_root {
+	seqcount_latch_t seq;
+	struct rb_root tree[2];
+};
+
+struct mod_tree_root {
+	struct latch_tree_root root;
+	unsigned long addr_min;
+	unsigned long addr_max;
+};
+
+enum mod_license {
+	NOT_GPL_ONLY = 0,
+	GPL_ONLY = 1,
+};
+
+struct symsearch {
+	const struct kernel_symbol *start;
+	const struct kernel_symbol *stop;
+	const s32 *crcs;
+	enum mod_license license;
+};
+
+enum kernel_load_data_id {
+	LOADING_UNKNOWN = 0,
+	LOADING_FIRMWARE = 1,
+	LOADING_MODULE = 2,
+	LOADING_KEXEC_IMAGE = 3,
+	LOADING_KEXEC_INITRAMFS = 4,
+	LOADING_POLICY = 5,
+	LOADING_X509_CERTIFICATE = 6,
+	LOADING_MAX_ID = 7,
+};
+
+enum fail_dup_mod_reason {
+	FAIL_DUP_MOD_BECOMING = 0,
+	FAIL_DUP_MOD_LOAD = 1,
+};
+
+enum kernel_read_file_id {
+	READING_UNKNOWN = 0,
+	READING_FIRMWARE = 1,
+	READING_MODULE = 2,
+	READING_KEXEC_IMAGE = 3,
+	READING_KEXEC_INITRAMFS = 4,
+	READING_POLICY = 5,
+	READING_X509_CERTIFICATE = 6,
+	READING_MAX_ID = 7,
+};
+
+struct trace_event_raw_module_load {
+	struct trace_entry ent;
+	unsigned int taints;
+	u32 __data_loc_name;
+	char __data[0];
+};
+
+struct trace_event_raw_module_free {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	char __data[0];
+};
+
+struct trace_event_raw_module_refcnt {
+	struct trace_entry ent;
+	unsigned long ip;
+	int refcnt;
+	u32 __data_loc_name;
+	char __data[0];
+};
+
+struct trace_event_raw_module_request {
+	struct trace_entry ent;
+	unsigned long ip;
+	bool wait;
+	u32 __data_loc_name;
+	char __data[0];
+};
+
+struct module_use {
+	struct list_head source_list;
+	struct list_head target_list;
+	struct module *source;
+	struct module *target;
+};
+
+struct mod_initfree {
+	struct llist_node node;
+	void *init_text;
+	void *init_data;
+	void *init_rodata;
+};
+
+struct idempotent {
+	const void *cookie;
+	struct hlist_node entry;
+	struct completion complete;
+	int ret;
+};
+
+struct trace_event_data_offsets_module_load {
+	u32 name;
+};
+
+struct trace_event_data_offsets_module_free {
+	u32 name;
+};
+
+struct trace_event_data_offsets_module_refcnt {
+	u32 name;
+};
+
+struct trace_event_data_offsets_module_request {
+	u32 name;
+};
+
+struct find_symbol_arg {
+	const char *name;
+	bool gplok;
+	bool warn;
+	struct module *owner;
+	const s32 *crc;
+	const struct kernel_symbol *sym;
+	enum mod_license license;
+};
+
+struct load_info {
+	const char *name;
+	struct module *mod;
+	Elf64_Ehdr *hdr;
+	unsigned long len;
+	Elf64_Shdr *sechdrs;
+	char *secstrings;
+	char *strtab;
+	unsigned long symoffs;
+	unsigned long stroffs;
+	unsigned long init_typeoffs;
+	unsigned long core_typeoffs;
+	bool sig_ok;
+	unsigned long mod_kallsyms_init_off;
+	struct {
+		unsigned int sym;
+		unsigned int str;
+		unsigned int mod;
+		unsigned int vers;
+		unsigned int info;
+		unsigned int pcpu;
+	} index;
+};
+
+enum key_being_used_for {
+	VERIFYING_MODULE_SIGNATURE = 0,
+	VERIFYING_FIRMWARE_SIGNATURE = 1,
+	VERIFYING_KEXEC_PE_SIGNATURE = 2,
+	VERIFYING_KEY_SIGNATURE = 3,
+	VERIFYING_KEY_SELF_SIGNATURE = 4,
+	VERIFYING_UNSPECIFIED_SIGNATURE = 5,
+	NR__KEY_BEING_USED_FOR = 6,
+};
+
+struct module_signature {
+	u8 algo;
+	u8 hash;
+	u8 id_type;
+	u8 signer_len;
+	u8 key_id_len;
+	u8 __pad[3];
+	__be32 sig_len;
+};
+
+struct latch_tree_ops {
+	bool (*less)(struct latch_tree_node *, struct latch_tree_node *);
+	int (*comp)(void *, struct latch_tree_node *);
+};
+
+struct module_sect_attr {
+	struct bin_attribute battr;
+	unsigned long address;
+};
+
+struct module_sect_attrs {
+	struct attribute_group grp;
+	unsigned int nsections;
+	struct module_sect_attr attrs[0];
+};
+
+struct module_notes_attrs {
+	struct kobject *dir;
+	unsigned int notes;
+	struct bin_attribute attrs[0];
+};
+
+struct modversion_info {
+	unsigned long crc;
+	char name[56];
+};
+
+enum kcmp_type {
+	KCMP_FILE = 0,
+	KCMP_VM = 1,
+	KCMP_FILES = 2,
+	KCMP_FS = 3,
+	KCMP_SIGHAND = 4,
+	KCMP_IO = 5,
+	KCMP_SYSVSEM = 6,
+	KCMP_EPOLL_TFD = 7,
+	KCMP_TYPES = 8,
+};
+
+struct kcmp_epoll_slot {
+	__u32 efd;
+	__u32 tfd;
+	__u32 toff;
+};
+
+struct profile_hit {
+	u32 pc;
+	u32 hits;
+};
+
+enum profile_type {
+	PROFILE_TASK_EXIT = 0,
+	PROFILE_MUNMAP = 1,
+};
+
+struct stacktrace_cookie {
+	unsigned long *store;
+	unsigned int size;
+	unsigned int skip;
+	unsigned int len;
+};
+
+struct timezone {
+	int tz_minuteswest;
+	int tz_dsttime;
+};
+
+typedef __kernel_long_t __kernel_suseconds_t;
+
+typedef __kernel_suseconds_t suseconds_t;
+
+typedef __u64 timeu64_t;
+
+typedef __kernel_long_t __kernel_old_time_t;
+
+struct __kernel_timex_timeval {
+	__kernel_time64_t tv_sec;
+	long long tv_usec;
+};
+
+struct __kernel_timex {
+	unsigned int modes;
+	long long offset;
+	long long freq;
+	long long maxerror;
+	long long esterror;
+	int status;
+	long long constant;
+	long long precision;
+	long long tolerance;
+	struct __kernel_timex_timeval time;
+	long long tick;
+	long long ppsfreq;
+	long long jitter;
+	int shift;
+	long long stabil;
+	long long jitcnt;
+	long long calcnt;
+	long long errcnt;
+	long long stbcnt;
+	int tai;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct old_timex32 {
+	u32 modes;
+	s32 offset;
+	s32 freq;
+	s32 maxerror;
+	s32 esterror;
+	s32 status;
+	s32 constant;
+	s32 precision;
+	s32 tolerance;
+	struct old_timeval32 time;
+	s32 tick;
+	s32 ppsfreq;
+	s32 jitter;
+	s32 shift;
+	s32 stabil;
+	s32 jitcnt;
+	s32 calcnt;
+	s32 errcnt;
+	s32 stbcnt;
+	s32 tai;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct itimerspec64 {
+	struct timespec64 it_interval;
+	struct timespec64 it_value;
+};
+
+struct __kernel_itimerspec {
+	struct __kernel_timespec it_interval;
+	struct __kernel_timespec it_value;
+};
+
+struct old_itimerspec32 {
+	struct old_timespec32 it_interval;
+	struct old_timespec32 it_value;
+};
+
+typedef void (*btf_trace_timer_init)(void *, struct timer_list *);
+
+typedef void (*btf_trace_timer_start)(void *, struct timer_list *, unsigned long, unsigned int);
+
+typedef void (*btf_trace_timer_expire_entry)(void *, struct timer_list *, unsigned long);
+
+typedef void (*btf_trace_timer_expire_exit)(void *, struct timer_list *);
+
+typedef void (*btf_trace_timer_cancel)(void *, struct timer_list *);
+
+typedef void (*btf_trace_hrtimer_init)(void *, struct hrtimer *, clockid_t, enum hrtimer_mode);
+
+typedef void (*btf_trace_hrtimer_start)(void *, struct hrtimer *, enum hrtimer_mode);
+
+typedef void (*btf_trace_hrtimer_expire_entry)(void *, struct hrtimer *, ktime_t *);
+
+typedef void (*btf_trace_hrtimer_expire_exit)(void *, struct hrtimer *);
+
+typedef void (*btf_trace_hrtimer_cancel)(void *, struct hrtimer *);
+
+typedef void (*btf_trace_itimer_state)(void *, int, const struct itimerspec64 * const, unsigned long long);
+
+typedef void (*btf_trace_itimer_expire)(void *, int, struct pid *, unsigned long long);
+
+typedef void (*btf_trace_tick_stop)(void *, int, int);
+
+struct timer_base {
+	raw_spinlock_t lock;
+	struct timer_list *running_timer;
+	unsigned long clk;
+	unsigned long next_expiry;
+	unsigned int cpu;
+	bool next_expiry_recalc;
+	bool is_idle;
+	bool timers_pending;
+	unsigned long pending_map[9];
+	struct hlist_head vectors[576];
+	long: 64;
+	long: 64;
+};
+
+struct trace_event_raw_timer_class {
+	struct trace_entry ent;
+	void *timer;
+	char __data[0];
+};
+
+struct trace_event_raw_timer_start {
+	struct trace_entry ent;
+	void *timer;
+	void *function;
+	unsigned long expires;
+	unsigned long now;
+	unsigned int flags;
+	char __data[0];
+};
+
+struct trace_event_raw_timer_expire_entry {
+	struct trace_entry ent;
+	void *timer;
+	unsigned long now;
+	void *function;
+	unsigned long baseclk;
+	char __data[0];
+};
+
+struct trace_event_raw_hrtimer_init {
+	struct trace_entry ent;
+	void *hrtimer;
+	clockid_t clockid;
+	enum hrtimer_mode mode;
+	char __data[0];
+};
+
+struct trace_event_raw_hrtimer_start {
+	struct trace_entry ent;
+	void *hrtimer;
+	void *function;
+	s64 expires;
+	s64 softexpires;
+	enum hrtimer_mode mode;
+	char __data[0];
+};
+
+struct trace_event_raw_hrtimer_expire_entry {
+	struct trace_entry ent;
+	void *hrtimer;
+	s64 now;
+	void *function;
+	char __data[0];
+};
+
+struct trace_event_raw_hrtimer_class {
+	struct trace_entry ent;
+	void *hrtimer;
+	char __data[0];
+};
+
+struct trace_event_raw_itimer_state {
+	struct trace_entry ent;
+	int which;
+	unsigned long long expires;
+	long value_sec;
+	long value_nsec;
+	long interval_sec;
+	long interval_nsec;
+	char __data[0];
+};
+
+struct trace_event_raw_itimer_expire {
+	struct trace_entry ent;
+	int which;
+	pid_t pid;
+	unsigned long long now;
+	char __data[0];
+};
+
+struct trace_event_raw_tick_stop {
+	struct trace_entry ent;
+	int success;
+	int dependency;
+	char __data[0];
+};
+
+struct process_timer {
+	struct timer_list timer;
+	struct task_struct *task;
+};
+
+struct trace_event_data_offsets_timer_class {};
+
+struct trace_event_data_offsets_timer_start {};
+
+struct trace_event_data_offsets_timer_expire_entry {};
+
+struct trace_event_data_offsets_hrtimer_init {};
+
+struct trace_event_data_offsets_hrtimer_start {};
+
+struct trace_event_data_offsets_hrtimer_expire_entry {};
+
+struct trace_event_data_offsets_hrtimer_class {};
+
+struct trace_event_data_offsets_itimer_state {};
+
+struct trace_event_data_offsets_itimer_expire {};
+
+struct trace_event_data_offsets_tick_stop {};
+
+enum hrtimer_base_type {
+	HRTIMER_BASE_MONOTONIC = 0,
+	HRTIMER_BASE_REALTIME = 1,
+	HRTIMER_BASE_BOOTTIME = 2,
+	HRTIMER_BASE_TAI = 3,
+	HRTIMER_BASE_MONOTONIC_SOFT = 4,
+	HRTIMER_BASE_REALTIME_SOFT = 5,
+	HRTIMER_BASE_BOOTTIME_SOFT = 6,
+	HRTIMER_BASE_TAI_SOFT = 7,
+	HRTIMER_MAX_CLOCK_BASES = 8,
+};
+
+struct tk_fast {
+	seqcount_latch_t seq;
+	struct tk_read_base base[2];
+};
+
+enum timekeeping_adv_mode {
+	TK_ADV_TICK = 0,
+	TK_ADV_FREQ = 1,
+};
+
+struct system_time_snapshot {
+	u64 cycles;
+	ktime_t real;
+	ktime_t boot;
+	ktime_t raw;
+	enum clocksource_ids cs_id;
+	unsigned int clock_was_set_seq;
+	u8 cs_was_changed_seq;
+	u32 mono_shift;
+	u32 mono_mult;
+};
+
+struct system_device_crosststamp {
+	ktime_t device;
+	ktime_t sys_realtime;
+	ktime_t sys_monoraw;
+};
+
+struct audit_ntp_val {
+	long long oldval;
+	long long newval;
+};
+
+struct audit_ntp_data {
+	struct audit_ntp_val vals[6];
+};
+
+struct ktime_timestamps {
+	u64 mono;
+	u64 boot;
+	u64 real;
+};
+
+enum audit_ntp_type {
+	AUDIT_NTP_OFFSET = 0,
+	AUDIT_NTP_FREQ = 1,
+	AUDIT_NTP_STATUS = 2,
+	AUDIT_NTP_TAI = 3,
+	AUDIT_NTP_TICK = 4,
+	AUDIT_NTP_ADJUST = 5,
+	AUDIT_NTP_NVALS = 6,
+};
+
+struct rtc_device;
+
+struct rtc_timer {
+	struct timerqueue_node node;
+	ktime_t period;
+	void (*func)(struct rtc_device *);
+	struct rtc_device *rtc;
+	int enabled;
+};
+
+struct rtc_class_ops;
+
+struct rtc_device {
+	struct device dev;
+	struct module *owner;
+	int id;
+	const struct rtc_class_ops *ops;
+	struct mutex ops_lock;
+	struct cdev char_dev;
+	unsigned long flags;
+	unsigned long irq_data;
+	spinlock_t irq_lock;
+	wait_queue_head_t irq_queue;
+	struct fasync_struct *async_queue;
+	int irq_freq;
+	int max_user_freq;
+	struct timerqueue_head timerqueue;
+	struct rtc_timer aie_timer;
+	struct rtc_timer uie_rtctimer;
+	struct hrtimer pie_timer;
+	int pie_enabled;
+	struct work_struct irqwork;
+	unsigned long set_offset_nsec;
+	unsigned long features[1];
+	time64_t range_min;
+	timeu64_t range_max;
+	timeu64_t alarm_offset_max;
+	time64_t start_secs;
+	time64_t offset_secs;
+	bool set_start_time;
+	u64 android_kabi_reserved1;
+};
+
+struct rtc_wkalrm;
+
+struct rtc_param;
+
+struct rtc_class_ops {
+	int (*ioctl)(struct device *, unsigned int, unsigned long);
+	int (*read_time)(struct device *, struct rtc_time *);
+	int (*set_time)(struct device *, struct rtc_time *);
+	int (*read_alarm)(struct device *, struct rtc_wkalrm *);
+	int (*set_alarm)(struct device *, struct rtc_wkalrm *);
+	int (*proc)(struct device *, struct seq_file *);
+	int (*alarm_irq_enable)(struct device *, unsigned int);
+	int (*read_offset)(struct device *, long *);
+	int (*set_offset)(struct device *, long);
+	int (*param_get)(struct device *, struct rtc_param *);
+	int (*param_set)(struct device *, struct rtc_param *);
+	u64 android_kabi_reserved1;
+};
+
+struct rtc_wkalrm {
+	unsigned char enabled;
+	unsigned char pending;
+	struct rtc_time time;
+};
+
+struct rtc_param {
+	__u64 param;
+	union {
+		__u64 uvalue;
+		__s64 svalue;
+		__u64 ptr;
+	};
+	__u32 index;
+	__u32 __pad;
+};
+
+typedef s64 int64_t;
+
+enum wd_read_status {
+	WD_READ_SUCCESS = 0,
+	WD_READ_UNSTABLE = 1,
+	WD_READ_SKIP = 2,
+};
+
+enum tick_device_mode {
+	TICKDEV_MODE_PERIODIC = 0,
+	TICKDEV_MODE_ONESHOT = 1,
+};
+
+enum tick_nohz_mode {
+	NOHZ_MODE_INACTIVE = 0,
+	NOHZ_MODE_LOWRES = 1,
+	NOHZ_MODE_HIGHRES = 2,
+};
+
+struct tick_device {
+	struct clock_event_device *evtdev;
+	enum tick_device_mode mode;
+};
+
+struct tick_sched {
+	unsigned int inidle: 1;
+	unsigned int tick_stopped: 1;
+	unsigned int idle_active: 1;
+	unsigned int do_timer_last: 1;
+	unsigned int got_idle_tick: 1;
+	unsigned int stalled_jiffies;
+	unsigned long last_tick_jiffies;
+	struct hrtimer sched_timer;
+	ktime_t last_tick;
+	ktime_t next_tick;
+	unsigned long idle_jiffies;
+	ktime_t idle_waketime;
+	seqcount_t idle_sleeptime_seq;
+	ktime_t idle_entrytime;
+	enum tick_nohz_mode nohz_mode;
+	unsigned long last_jiffies;
+	u64 timer_expires_base;
+	u64 timer_expires;
+	u64 next_timer;
+	ktime_t idle_expires;
+	unsigned long idle_calls;
+	unsigned long idle_sleeps;
+	ktime_t idle_exittime;
+	ktime_t idle_sleeptime;
+	ktime_t iowait_sleeptime;
+	atomic_t tick_dep_mask;
+	unsigned long check_clocks;
+};
+
+struct timer_list_iter {
+	int cpu;
+	bool second_pass;
+	u64 now;
+};
+
+struct tm {
+	int tm_sec;
+	int tm_min;
+	int tm_hour;
+	int tm_mday;
+	int tm_mon;
+	long tm_year;
+	int tm_wday;
+	int tm_yday;
+};
+
+struct cyclecounter;
+
+struct timecounter {
+	const struct cyclecounter *cc;
+	u64 cycle_last;
+	u64 nsec;
+	u64 mask;
+	u64 frac;
+};
+
+struct cyclecounter {
+	u64 (*read)(const struct cyclecounter *);
+	u64 mask;
+	u32 mult;
+	u32 shift;
+};
+
+typedef void (*btf_trace_alarmtimer_suspend)(void *, ktime_t, int);
+
+struct alarm;
+
+typedef void (*btf_trace_alarmtimer_fired)(void *, struct alarm *, ktime_t);
+
+enum alarmtimer_restart {
+	ALARMTIMER_NORESTART = 0,
+	ALARMTIMER_RESTART = 1,
+};
+
+enum alarmtimer_type {
+	ALARM_REALTIME = 0,
+	ALARM_BOOTTIME = 1,
+	ALARM_NUMTYPE = 2,
+	ALARM_REALTIME_FREEZER = 3,
+	ALARM_BOOTTIME_FREEZER = 4,
+};
+
+struct alarm {
+	struct timerqueue_node node;
+	struct hrtimer timer;
+	enum alarmtimer_restart (*function)(struct alarm *, ktime_t);
+	enum alarmtimer_type type;
+	int state;
+	void *data;
+};
+
+typedef void (*btf_trace_alarmtimer_start)(void *, struct alarm *, ktime_t);
+
+typedef void (*btf_trace_alarmtimer_cancel)(void *, struct alarm *, ktime_t);
+
+struct k_itimer;
+
+struct k_clock {
+	int (*clock_getres)(const clockid_t, struct timespec64 *);
+	int (*clock_set)(const clockid_t, const struct timespec64 *);
+	int (*clock_get_timespec)(const clockid_t, struct timespec64 *);
+	ktime_t (*clock_get_ktime)(const clockid_t);
+	int (*clock_adj)(const clockid_t, struct __kernel_timex *);
+	int (*timer_create)(struct k_itimer *);
+	int (*nsleep)(const clockid_t, int, const struct timespec64 *);
+	int (*timer_set)(struct k_itimer *, int, struct itimerspec64 *, struct itimerspec64 *);
+	int (*timer_del)(struct k_itimer *);
+	void (*timer_get)(struct k_itimer *, struct itimerspec64 *);
+	void (*timer_rearm)(struct k_itimer *);
+	s64 (*timer_forward)(struct k_itimer *, ktime_t);
+	ktime_t (*timer_remaining)(struct k_itimer *, ktime_t);
+	int (*timer_try_to_cancel)(struct k_itimer *);
+	void (*timer_arm)(struct k_itimer *, ktime_t, bool, bool);
+	void (*timer_wait_running)(struct k_itimer *);
+};
+
+struct cpu_timer {
+	struct timerqueue_node node;
+	struct timerqueue_head *head;
+	struct pid *pid;
+	struct list_head elist;
+	int firing;
+	struct task_struct __attribute__((btf_type_tag("rcu"))) *handling;
+};
+
+typedef __kernel_timer_t timer_t;
+
+struct k_itimer {
+	struct list_head list;
+	struct hlist_node t_hash;
+	spinlock_t it_lock;
+	const struct k_clock *kclock;
+	clockid_t it_clock;
+	timer_t it_id;
+	int it_active;
+	s64 it_overrun;
+	s64 it_overrun_last;
+	int it_requeue_pending;
+	int it_sigev_notify;
+	ktime_t it_interval;
+	struct signal_struct *it_signal;
+	union {
+		struct pid *it_pid;
+		struct task_struct *it_process;
+	};
+	struct sigqueue *sigq;
+	union {
+		struct {
+			struct hrtimer timer;
+		} real;
+		struct cpu_timer cpu;
+		struct {
+			struct alarm alarmtimer;
+		} alarm;
+	} it;
+	struct callback_head rcu;
+};
+
+struct alarm_base {
+	spinlock_t lock;
+	struct timerqueue_head timerqueue;
+	ktime_t (*get_ktime)();
+	void (*get_timespec)(struct timespec64 *);
+	clockid_t base_clockid;
+};
+
+struct class_interface {
+	struct list_head node;
+	const struct class *class;
+	int (*add_dev)(struct device *);
+	void (*remove_dev)(struct device *);
+};
+
+struct platform_driver {
+	int (*probe)(struct platform_device *);
+	int (*remove)(struct platform_device *);
+	void (*remove_new)(struct platform_device *);
+	void (*shutdown)(struct platform_device *);
+	int (*suspend)(struct platform_device *, pm_message_t);
+	int (*resume)(struct platform_device *);
+	struct device_driver driver;
+	const struct platform_device_id *id_table;
+	bool prevent_deferred_probe;
+	bool driver_managed_dma;
+	u64 android_kabi_reserved1;
+};
+
+struct trace_event_raw_alarmtimer_suspend {
+	struct trace_entry ent;
+	s64 expires;
+	unsigned char alarm_type;
+	char __data[0];
+};
+
+struct trace_event_raw_alarm_class {
+	struct trace_entry ent;
+	void *alarm;
+	unsigned char alarm_type;
+	s64 expires;
+	s64 now;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_alarmtimer_suspend {};
+
+struct trace_event_data_offsets_alarm_class {};
+
+struct sigevent {
+	sigval_t sigev_value;
+	int sigev_signo;
+	int sigev_notify;
+	union {
+		int _pad[12];
+		int _tid;
+		struct {
+			void (*_function)(sigval_t);
+			void *_attribute;
+		} _sigev_thread;
+	} _sigev_un;
+};
+
+struct compat_sigevent {
+	compat_sigval_t sigev_value;
+	compat_int_t sigev_signo;
+	compat_int_t sigev_notify;
+	union {
+		compat_int_t _pad[13];
+		compat_int_t _tid;
+		struct {
+			compat_uptr_t _function;
+			compat_uptr_t _attribute;
+		} _sigev_thread;
+	} _sigev_un;
+};
+
+typedef struct sigevent sigevent_t;
+
+struct posix_clock;
+
+struct posix_clock_operations {
+	struct module *owner;
+	int (*clock_adjtime)(struct posix_clock *, struct __kernel_timex *);
+	int (*clock_gettime)(struct posix_clock *, struct timespec64 *);
+	int (*clock_getres)(struct posix_clock *, struct timespec64 *);
+	int (*clock_settime)(struct posix_clock *, const struct timespec64 *);
+	long (*ioctl)(struct posix_clock *, unsigned int, unsigned long);
+	int (*open)(struct posix_clock *, fmode_t);
+	__poll_t (*poll)(struct posix_clock *, struct file *, poll_table *);
+	int (*release)(struct posix_clock *);
+	ssize_t (*read)(struct posix_clock *, uint, char __attribute__((btf_type_tag("user"))) *, size_t);
+};
+
+struct posix_clock {
+	struct posix_clock_operations ops;
+	struct cdev cdev;
+	struct device *dev;
+	struct rw_semaphore rwsem;
+	bool zombie;
+};
+
+struct posix_clock_desc {
+	struct file *fp;
+	struct posix_clock *clk;
+};
+
+struct __kernel_old_itimerval {
+	struct __kernel_old_timeval it_interval;
+	struct __kernel_old_timeval it_value;
+};
+
+struct old_itimerval32 {
+	struct old_timeval32 it_interval;
+	struct old_timeval32 it_value;
+};
+
+struct ce_unbind {
+	struct clock_event_device *ce;
+	int res;
+};
+
+struct futex_hash_bucket {
+	atomic_t waiters;
+	spinlock_t lock;
+	struct plist_head chain;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+enum futex_access {
+	FUTEX_READ = 0,
+	FUTEX_WRITE = 1,
+};
+
+union futex_key {
+	struct {
+		u64 i_seq;
+		unsigned long pgoff;
+		unsigned int offset;
+	} shared;
+	struct {
+		union {
+			struct mm_struct *mm;
+			u64 __tmp;
+		};
+		unsigned long address;
+		unsigned int offset;
+	} private;
+	struct {
+		u64 ptr;
+		unsigned long word;
+		unsigned int offset;
+	} both;
+};
+
+struct futex_pi_state {
+	struct list_head list;
+	struct rt_mutex_base pi_mutex;
+	struct task_struct *owner;
+	refcount_t refcount;
+	union futex_key key;
+};
+
+struct futex_q {
+	struct plist_node list;
+	struct task_struct *task;
+	spinlock_t *lock_ptr;
+	union futex_key key;
+	struct futex_pi_state *pi_state;
+	struct rt_mutex_waiter *rt_waiter;
+	union futex_key *requeue_pi_key;
+	u32 bitset;
+	atomic_t requeue_state;
+};
+
+struct futex_waitv {
+	__u64 val;
+	__u64 uaddr;
+	__u32 flags;
+	__u32 __reserved;
+};
+
+struct futex_vector {
+	struct futex_waitv w;
+	struct futex_q q;
+};
+
+enum {
+	Q_REQUEUE_PI_NONE = 0,
+	Q_REQUEUE_PI_IGNORE = 1,
+	Q_REQUEUE_PI_IN_PROGRESS = 2,
+	Q_REQUEUE_PI_WAIT = 3,
+	Q_REQUEUE_PI_DONE = 4,
+	Q_REQUEUE_PI_LOCKED = 5,
+};
+
+struct dma_chan {
+	int lock;
+	const char *device_id;
+};
+
+typedef void (*btf_trace_csd_queue_cpu)(void *, const unsigned int, unsigned long, smp_call_func_t, struct __call_single_data *);
+
+typedef void (*btf_trace_csd_function_entry)(void *, smp_call_func_t, struct __call_single_data *);
+
+typedef void (*btf_trace_csd_function_exit)(void *, smp_call_func_t, struct __call_single_data *);
+
+struct call_function_data {
+	call_single_data_t __attribute__((btf_type_tag("percpu"))) *csd;
+	cpumask_var_t cpumask;
+	cpumask_var_t cpumask_ipi;
+};
+
+struct trace_event_raw_csd_queue_cpu {
+	struct trace_entry ent;
+	unsigned int cpu;
+	void *callsite;
+	void *func;
+	void *csd;
+	char __data[0];
+};
+
+struct trace_event_raw_csd_function {
+	struct trace_entry ent;
+	void *func;
+	void *csd;
+	char __data[0];
+};
+
+struct smp_call_on_cpu_struct {
+	struct work_struct work;
+	struct completion done;
+	int (*func)(void *);
+	void *data;
+	int ret;
+	int cpu;
+};
+
+struct trace_event_data_offsets_csd_queue_cpu {};
+
+struct trace_event_data_offsets_csd_function {};
+
+enum pkey_id_type {
+	PKEY_ID_PGP = 0,
+	PKEY_ID_X509 = 1,
+	PKEY_ID_PKCS7 = 2,
+};
+
+union bpf_iter_link_info;
+
+typedef int (*bpf_iter_attach_target_t)(struct bpf_prog *, union bpf_iter_link_info *, struct bpf_iter_aux_info *);
+
+typedef void (*bpf_iter_detach_target_t)(struct bpf_iter_aux_info *);
+
+typedef void (*bpf_iter_show_fdinfo_t)(const struct bpf_iter_aux_info *, struct seq_file *);
+
+typedef int (*bpf_iter_fill_link_info_t)(const struct bpf_iter_aux_info *, struct bpf_link_info *);
+
+enum bpf_func_id {
+	BPF_FUNC_unspec = 0,
+	BPF_FUNC_map_lookup_elem = 1,
+	BPF_FUNC_map_update_elem = 2,
+	BPF_FUNC_map_delete_elem = 3,
+	BPF_FUNC_probe_read = 4,
+	BPF_FUNC_ktime_get_ns = 5,
+	BPF_FUNC_trace_printk = 6,
+	BPF_FUNC_get_prandom_u32 = 7,
+	BPF_FUNC_get_smp_processor_id = 8,
+	BPF_FUNC_skb_store_bytes = 9,
+	BPF_FUNC_l3_csum_replace = 10,
+	BPF_FUNC_l4_csum_replace = 11,
+	BPF_FUNC_tail_call = 12,
+	BPF_FUNC_clone_redirect = 13,
+	BPF_FUNC_get_current_pid_tgid = 14,
+	BPF_FUNC_get_current_uid_gid = 15,
+	BPF_FUNC_get_current_comm = 16,
+	BPF_FUNC_get_cgroup_classid = 17,
+	BPF_FUNC_skb_vlan_push = 18,
+	BPF_FUNC_skb_vlan_pop = 19,
+	BPF_FUNC_skb_get_tunnel_key = 20,
+	BPF_FUNC_skb_set_tunnel_key = 21,
+	BPF_FUNC_perf_event_read = 22,
+	BPF_FUNC_redirect = 23,
+	BPF_FUNC_get_route_realm = 24,
+	BPF_FUNC_perf_event_output = 25,
+	BPF_FUNC_skb_load_bytes = 26,
+	BPF_FUNC_get_stackid = 27,
+	BPF_FUNC_csum_diff = 28,
+	BPF_FUNC_skb_get_tunnel_opt = 29,
+	BPF_FUNC_skb_set_tunnel_opt = 30,
+	BPF_FUNC_skb_change_proto = 31,
+	BPF_FUNC_skb_change_type = 32,
+	BPF_FUNC_skb_under_cgroup = 33,
+	BPF_FUNC_get_hash_recalc = 34,
+	BPF_FUNC_get_current_task = 35,
+	BPF_FUNC_probe_write_user = 36,
+	BPF_FUNC_current_task_under_cgroup = 37,
+	BPF_FUNC_skb_change_tail = 38,
+	BPF_FUNC_skb_pull_data = 39,
+	BPF_FUNC_csum_update = 40,
+	BPF_FUNC_set_hash_invalid = 41,
+	BPF_FUNC_get_numa_node_id = 42,
+	BPF_FUNC_skb_change_head = 43,
+	BPF_FUNC_xdp_adjust_head = 44,
+	BPF_FUNC_probe_read_str = 45,
+	BPF_FUNC_get_socket_cookie = 46,
+	BPF_FUNC_get_socket_uid = 47,
+	BPF_FUNC_set_hash = 48,
+	BPF_FUNC_setsockopt = 49,
+	BPF_FUNC_skb_adjust_room = 50,
+	BPF_FUNC_redirect_map = 51,
+	BPF_FUNC_sk_redirect_map = 52,
+	BPF_FUNC_sock_map_update = 53,
+	BPF_FUNC_xdp_adjust_meta = 54,
+	BPF_FUNC_perf_event_read_value = 55,
+	BPF_FUNC_perf_prog_read_value = 56,
+	BPF_FUNC_getsockopt = 57,
+	BPF_FUNC_override_return = 58,
+	BPF_FUNC_sock_ops_cb_flags_set = 59,
+	BPF_FUNC_msg_redirect_map = 60,
+	BPF_FUNC_msg_apply_bytes = 61,
+	BPF_FUNC_msg_cork_bytes = 62,
+	BPF_FUNC_msg_pull_data = 63,
+	BPF_FUNC_bind = 64,
+	BPF_FUNC_xdp_adjust_tail = 65,
+	BPF_FUNC_skb_get_xfrm_state = 66,
+	BPF_FUNC_get_stack = 67,
+	BPF_FUNC_skb_load_bytes_relative = 68,
+	BPF_FUNC_fib_lookup = 69,
+	BPF_FUNC_sock_hash_update = 70,
+	BPF_FUNC_msg_redirect_hash = 71,
+	BPF_FUNC_sk_redirect_hash = 72,
+	BPF_FUNC_lwt_push_encap = 73,
+	BPF_FUNC_lwt_seg6_store_bytes = 74,
+	BPF_FUNC_lwt_seg6_adjust_srh = 75,
+	BPF_FUNC_lwt_seg6_action = 76,
+	BPF_FUNC_rc_repeat = 77,
+	BPF_FUNC_rc_keydown = 78,
+	BPF_FUNC_skb_cgroup_id = 79,
+	BPF_FUNC_get_current_cgroup_id = 80,
+	BPF_FUNC_get_local_storage = 81,
+	BPF_FUNC_sk_select_reuseport = 82,
+	BPF_FUNC_skb_ancestor_cgroup_id = 83,
+	BPF_FUNC_sk_lookup_tcp = 84,
+	BPF_FUNC_sk_lookup_udp = 85,
+	BPF_FUNC_sk_release = 86,
+	BPF_FUNC_map_push_elem = 87,
+	BPF_FUNC_map_pop_elem = 88,
+	BPF_FUNC_map_peek_elem = 89,
+	BPF_FUNC_msg_push_data = 90,
+	BPF_FUNC_msg_pop_data = 91,
+	BPF_FUNC_rc_pointer_rel = 92,
+	BPF_FUNC_spin_lock = 93,
+	BPF_FUNC_spin_unlock = 94,
+	BPF_FUNC_sk_fullsock = 95,
+	BPF_FUNC_tcp_sock = 96,
+	BPF_FUNC_skb_ecn_set_ce = 97,
+	BPF_FUNC_get_listener_sock = 98,
+	BPF_FUNC_skc_lookup_tcp = 99,
+	BPF_FUNC_tcp_check_syncookie = 100,
+	BPF_FUNC_sysctl_get_name = 101,
+	BPF_FUNC_sysctl_get_current_value = 102,
+	BPF_FUNC_sysctl_get_new_value = 103,
+	BPF_FUNC_sysctl_set_new_value = 104,
+	BPF_FUNC_strtol = 105,
+	BPF_FUNC_strtoul = 106,
+	BPF_FUNC_sk_storage_get = 107,
+	BPF_FUNC_sk_storage_delete = 108,
+	BPF_FUNC_send_signal = 109,
+	BPF_FUNC_tcp_gen_syncookie = 110,
+	BPF_FUNC_skb_output = 111,
+	BPF_FUNC_probe_read_user = 112,
+	BPF_FUNC_probe_read_kernel = 113,
+	BPF_FUNC_probe_read_user_str = 114,
+	BPF_FUNC_probe_read_kernel_str = 115,
+	BPF_FUNC_tcp_send_ack = 116,
+	BPF_FUNC_send_signal_thread = 117,
+	BPF_FUNC_jiffies64 = 118,
+	BPF_FUNC_read_branch_records = 119,
+	BPF_FUNC_get_ns_current_pid_tgid = 120,
+	BPF_FUNC_xdp_output = 121,
+	BPF_FUNC_get_netns_cookie = 122,
+	BPF_FUNC_get_current_ancestor_cgroup_id = 123,
+	BPF_FUNC_sk_assign = 124,
+	BPF_FUNC_ktime_get_boot_ns = 125,
+	BPF_FUNC_seq_printf = 126,
+	BPF_FUNC_seq_write = 127,
+	BPF_FUNC_sk_cgroup_id = 128,
+	BPF_FUNC_sk_ancestor_cgroup_id = 129,
+	BPF_FUNC_ringbuf_output = 130,
+	BPF_FUNC_ringbuf_reserve = 131,
+	BPF_FUNC_ringbuf_submit = 132,
+	BPF_FUNC_ringbuf_discard = 133,
+	BPF_FUNC_ringbuf_query = 134,
+	BPF_FUNC_csum_level = 135,
+	BPF_FUNC_skc_to_tcp6_sock = 136,
+	BPF_FUNC_skc_to_tcp_sock = 137,
+	BPF_FUNC_skc_to_tcp_timewait_sock = 138,
+	BPF_FUNC_skc_to_tcp_request_sock = 139,
+	BPF_FUNC_skc_to_udp6_sock = 140,
+	BPF_FUNC_get_task_stack = 141,
+	BPF_FUNC_load_hdr_opt = 142,
+	BPF_FUNC_store_hdr_opt = 143,
+	BPF_FUNC_reserve_hdr_opt = 144,
+	BPF_FUNC_inode_storage_get = 145,
+	BPF_FUNC_inode_storage_delete = 146,
+	BPF_FUNC_d_path = 147,
+	BPF_FUNC_copy_from_user = 148,
+	BPF_FUNC_snprintf_btf = 149,
+	BPF_FUNC_seq_printf_btf = 150,
+	BPF_FUNC_skb_cgroup_classid = 151,
+	BPF_FUNC_redirect_neigh = 152,
+	BPF_FUNC_per_cpu_ptr = 153,
+	BPF_FUNC_this_cpu_ptr = 154,
+	BPF_FUNC_redirect_peer = 155,
+	BPF_FUNC_task_storage_get = 156,
+	BPF_FUNC_task_storage_delete = 157,
+	BPF_FUNC_get_current_task_btf = 158,
+	BPF_FUNC_bprm_opts_set = 159,
+	BPF_FUNC_ktime_get_coarse_ns = 160,
+	BPF_FUNC_ima_inode_hash = 161,
+	BPF_FUNC_sock_from_file = 162,
+	BPF_FUNC_check_mtu = 163,
+	BPF_FUNC_for_each_map_elem = 164,
+	BPF_FUNC_snprintf = 165,
+	BPF_FUNC_sys_bpf = 166,
+	BPF_FUNC_btf_find_by_name_kind = 167,
+	BPF_FUNC_sys_close = 168,
+	BPF_FUNC_timer_init = 169,
+	BPF_FUNC_timer_set_callback = 170,
+	BPF_FUNC_timer_start = 171,
+	BPF_FUNC_timer_cancel = 172,
+	BPF_FUNC_get_func_ip = 173,
+	BPF_FUNC_get_attach_cookie = 174,
+	BPF_FUNC_task_pt_regs = 175,
+	BPF_FUNC_get_branch_snapshot = 176,
+	BPF_FUNC_trace_vprintk = 177,
+	BPF_FUNC_skc_to_unix_sock = 178,
+	BPF_FUNC_kallsyms_lookup_name = 179,
+	BPF_FUNC_find_vma = 180,
+	BPF_FUNC_loop = 181,
+	BPF_FUNC_strncmp = 182,
+	BPF_FUNC_get_func_arg = 183,
+	BPF_FUNC_get_func_ret = 184,
+	BPF_FUNC_get_func_arg_cnt = 185,
+	BPF_FUNC_get_retval = 186,
+	BPF_FUNC_set_retval = 187,
+	BPF_FUNC_xdp_get_buff_len = 188,
+	BPF_FUNC_xdp_load_bytes = 189,
+	BPF_FUNC_xdp_store_bytes = 190,
+	BPF_FUNC_copy_from_user_task = 191,
+	BPF_FUNC_skb_set_tstamp = 192,
+	BPF_FUNC_ima_file_hash = 193,
+	BPF_FUNC_kptr_xchg = 194,
+	BPF_FUNC_map_lookup_percpu_elem = 195,
+	BPF_FUNC_skc_to_mptcp_sock = 196,
+	BPF_FUNC_dynptr_from_mem = 197,
+	BPF_FUNC_ringbuf_reserve_dynptr = 198,
+	BPF_FUNC_ringbuf_submit_dynptr = 199,
+	BPF_FUNC_ringbuf_discard_dynptr = 200,
+	BPF_FUNC_dynptr_read = 201,
+	BPF_FUNC_dynptr_write = 202,
+	BPF_FUNC_dynptr_data = 203,
+	BPF_FUNC_tcp_raw_gen_syncookie_ipv4 = 204,
+	BPF_FUNC_tcp_raw_gen_syncookie_ipv6 = 205,
+	BPF_FUNC_tcp_raw_check_syncookie_ipv4 = 206,
+	BPF_FUNC_tcp_raw_check_syncookie_ipv6 = 207,
+	BPF_FUNC_ktime_get_tai_ns = 208,
+	BPF_FUNC_user_ringbuf_drain = 209,
+	BPF_FUNC_cgrp_storage_get = 210,
+	BPF_FUNC_cgrp_storage_delete = 211,
+	__BPF_FUNC_MAX_ID = 212,
+};
+
+struct bpf_func_proto;
+
+typedef const struct bpf_func_proto * (*bpf_iter_get_func_proto_t)(enum bpf_func_id, const struct bpf_prog *);
+
+struct bpf_iter_reg {
+	const char *target;
+	bpf_iter_attach_target_t attach_target;
+	bpf_iter_detach_target_t detach_target;
+	bpf_iter_show_fdinfo_t show_fdinfo;
+	bpf_iter_fill_link_info_t fill_link_info;
+	bpf_iter_get_func_proto_t get_func_proto;
+	u32 ctx_arg_info_size;
+	u32 feature;
+	struct bpf_ctx_arg_aux ctx_arg_info[2];
+	const struct bpf_iter_seq_info *seq_info;
+};
+
+union bpf_iter_link_info {
+	struct {
+		__u32 map_fd;
+	} map;
+	struct {
+		enum bpf_cgroup_iter_order order;
+		__u32 cgroup_fd;
+		__u64 cgroup_id;
+	} cgroup;
+	struct {
+		__u32 tid;
+		__u32 pid;
+		__u32 pid_fd;
+	} task;
+};
+
+enum bpf_return_type {
+	RET_INTEGER = 0,
+	RET_VOID = 1,
+	RET_PTR_TO_MAP_VALUE = 2,
+	RET_PTR_TO_SOCKET = 3,
+	RET_PTR_TO_TCP_SOCK = 4,
+	RET_PTR_TO_SOCK_COMMON = 5,
+	RET_PTR_TO_MEM = 6,
+	RET_PTR_TO_MEM_OR_BTF_ID = 7,
+	RET_PTR_TO_BTF_ID = 8,
+	__BPF_RET_TYPE_MAX = 9,
+	RET_PTR_TO_MAP_VALUE_OR_NULL = 258,
+	RET_PTR_TO_SOCKET_OR_NULL = 259,
+	RET_PTR_TO_TCP_SOCK_OR_NULL = 260,
+	RET_PTR_TO_SOCK_COMMON_OR_NULL = 261,
+	RET_PTR_TO_RINGBUF_MEM_OR_NULL = 1286,
+	RET_PTR_TO_DYNPTR_MEM_OR_NULL = 262,
+	RET_PTR_TO_BTF_ID_OR_NULL = 264,
+	RET_PTR_TO_BTF_ID_TRUSTED = 1048584,
+	__BPF_RET_TYPE_LIMIT = 33554431,
+};
+
+enum bpf_arg_type {
+	ARG_DONTCARE = 0,
+	ARG_CONST_MAP_PTR = 1,
+	ARG_PTR_TO_MAP_KEY = 2,
+	ARG_PTR_TO_MAP_VALUE = 3,
+	ARG_PTR_TO_MEM = 4,
+	ARG_CONST_SIZE = 5,
+	ARG_CONST_SIZE_OR_ZERO = 6,
+	ARG_PTR_TO_CTX = 7,
+	ARG_ANYTHING = 8,
+	ARG_PTR_TO_SPIN_LOCK = 9,
+	ARG_PTR_TO_SOCK_COMMON = 10,
+	ARG_PTR_TO_INT = 11,
+	ARG_PTR_TO_LONG = 12,
+	ARG_PTR_TO_SOCKET = 13,
+	ARG_PTR_TO_BTF_ID = 14,
+	ARG_PTR_TO_RINGBUF_MEM = 15,
+	ARG_CONST_ALLOC_SIZE_OR_ZERO = 16,
+	ARG_PTR_TO_BTF_ID_SOCK_COMMON = 17,
+	ARG_PTR_TO_PERCPU_BTF_ID = 18,
+	ARG_PTR_TO_FUNC = 19,
+	ARG_PTR_TO_STACK = 20,
+	ARG_PTR_TO_CONST_STR = 21,
+	ARG_PTR_TO_TIMER = 22,
+	ARG_PTR_TO_KPTR = 23,
+	ARG_PTR_TO_DYNPTR = 24,
+	__BPF_ARG_TYPE_MAX = 25,
+	ARG_PTR_TO_MAP_VALUE_OR_NULL = 259,
+	ARG_PTR_TO_MEM_OR_NULL = 260,
+	ARG_PTR_TO_CTX_OR_NULL = 263,
+	ARG_PTR_TO_SOCKET_OR_NULL = 269,
+	ARG_PTR_TO_STACK_OR_NULL = 276,
+	ARG_PTR_TO_BTF_ID_OR_NULL = 270,
+	ARG_PTR_TO_UNINIT_MEM = 32772,
+	ARG_PTR_TO_FIXED_SIZE_MEM = 262148,
+	__BPF_ARG_TYPE_LIMIT = 33554431,
+};
+
+struct bpf_func_proto {
+	u64 (*func)(u64, u64, u64, u64, u64);
+	bool gpl_only;
+	bool pkt_access;
+	bool might_sleep;
+	enum bpf_return_type ret_type;
+	union {
+		struct {
+			enum bpf_arg_type arg1_type;
+			enum bpf_arg_type arg2_type;
+			enum bpf_arg_type arg3_type;
+			enum bpf_arg_type arg4_type;
+			enum bpf_arg_type arg5_type;
+		};
+		enum bpf_arg_type arg_type[5];
+	};
+	union {
+		struct {
+			u32 *arg1_btf_id;
+			u32 *arg2_btf_id;
+			u32 *arg3_btf_id;
+			u32 *arg4_btf_id;
+			u32 *arg5_btf_id;
+		};
+		u32 *arg_btf_id[5];
+		struct {
+			size_t arg1_size;
+			size_t arg2_size;
+			size_t arg3_size;
+			size_t arg4_size;
+			size_t arg5_size;
+		};
+		size_t arg_size[5];
+	};
+	int *ret_btf_id;
+	bool (*allowed)(const struct bpf_prog *);
+};
+
+struct kallsym_iter {
+	loff_t pos;
+	loff_t pos_mod_end;
+	loff_t pos_ftrace_mod_end;
+	loff_t pos_bpf_end;
+	unsigned long value;
+	unsigned int nameoff;
+	char type;
+	char name[512];
+	char module_name[56];
+	int exported;
+	int show_value;
+};
+
+struct bpf_iter_meta;
+
+struct bpf_iter__ksym {
+	union {
+		struct bpf_iter_meta *meta;
+	};
+	union {
+		struct kallsym_iter *ksym;
+	};
+};
+
+struct bpf_iter_meta {
+	union {
+		struct seq_file *seq;
+	};
+	u64 session_id;
+	u64 seq_num;
+};
+
+struct cgroup_taskset {
+	struct list_head src_csets;
+	struct list_head dst_csets;
+	int nr_tasks;
+	int ssid;
+	struct list_head *csets;
+	struct css_set *cur_cset;
+	struct task_struct *cur_task;
+};
+
+struct bpf_cgroup_storage_key {
+	__u64 cgroup_inode_id;
+	__u32 attach_type;
+};
+
+struct bpf_storage_buffer;
+
+struct bpf_cgroup_storage_map;
+
+struct bpf_cgroup_storage {
+	union {
+		struct bpf_storage_buffer *buf;
+		void __attribute__((btf_type_tag("percpu"))) *percpu_buf;
+	};
+	struct bpf_cgroup_storage_map *map;
+	struct bpf_cgroup_storage_key key;
+	struct list_head list_map;
+	struct list_head list_cg;
+	struct rb_node node;
+	struct callback_head rcu;
+};
+
+struct bpf_storage_buffer {
+	struct callback_head rcu;
+	char data[0];
+};
+
+typedef void (*btf_trace_cgroup_setup_root)(void *, struct cgroup_root *);
+
+typedef void (*btf_trace_cgroup_destroy_root)(void *, struct cgroup_root *);
+
+typedef void (*btf_trace_cgroup_remount)(void *, struct cgroup_root *);
+
+typedef void (*btf_trace_cgroup_mkdir)(void *, struct cgroup *, const char *);
+
+typedef void (*btf_trace_cgroup_rmdir)(void *, struct cgroup *, const char *);
+
+typedef void (*btf_trace_cgroup_release)(void *, struct cgroup *, const char *);
+
+typedef void (*btf_trace_cgroup_rename)(void *, struct cgroup *, const char *);
+
+typedef void (*btf_trace_cgroup_freeze)(void *, struct cgroup *, const char *);
+
+typedef void (*btf_trace_cgroup_unfreeze)(void *, struct cgroup *, const char *);
+
+typedef void (*btf_trace_cgroup_attach_task)(void *, struct cgroup *, const char *, struct task_struct *, bool);
+
+typedef void (*btf_trace_cgroup_transfer_tasks)(void *, struct cgroup *, const char *, struct task_struct *, bool);
+
+typedef void (*btf_trace_cgroup_notify_populated)(void *, struct cgroup *, const char *, int);
+
+typedef void (*btf_trace_cgroup_notify_frozen)(void *, struct cgroup *, const char *, int);
+
+struct kernfs_fs_context {
+	struct kernfs_root *root;
+	void *ns_tag;
+	unsigned long magic;
+	bool new_sb_created;
+};
+
+struct cgroup_fs_context {
+	struct kernfs_fs_context kfc;
+	struct cgroup_root *root;
+	struct cgroup_namespace *ns;
+	unsigned int flags;
+	bool cpuset_clone_children;
+	bool none;
+	bool all_ss;
+	u16 subsys_mask;
+	char *name;
+	char *release_agent;
+};
+
+struct kernfs_syscall_ops {
+	int (*show_options)(struct seq_file *, struct kernfs_root *);
+	int (*mkdir)(struct kernfs_node *, const char *, umode_t);
+	int (*rmdir)(struct kernfs_node *);
+	int (*rename)(struct kernfs_node *, struct kernfs_node *, const char *);
+	int (*show_path)(struct seq_file *, struct kernfs_node *, struct kernfs_root *);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+enum {
+	CGRP_ROOT_NOPREFIX = 2,
+	CGRP_ROOT_XATTR = 4,
+	CGRP_ROOT_NS_DELEGATE = 8,
+	CGRP_ROOT_FAVOR_DYNMODS = 16,
+	CGRP_ROOT_CPUSET_V2_MODE = 65536,
+	CGRP_ROOT_MEMORY_LOCAL_EVENTS = 131072,
+	CGRP_ROOT_MEMORY_RECURSIVE_PROT = 262144,
+};
+
+enum kernfs_node_type {
+	KERNFS_DIR = 1,
+	KERNFS_FILE = 2,
+	KERNFS_LINK = 4,
+};
+
+enum {
+	CGRP_NOTIFY_ON_RELEASE = 0,
+	CGRP_CPUSET_CLONE_CHILDREN = 1,
+	CGRP_FREEZE = 2,
+	CGRP_FROZEN = 3,
+	CGRP_KILL = 4,
+};
+
+enum kernfs_root_flag {
+	KERNFS_ROOT_CREATE_DEACTIVATED = 1,
+	KERNFS_ROOT_EXTRA_OPEN_PERM_CHECK = 2,
+	KERNFS_ROOT_SUPPORT_EXPORTOP = 4,
+	KERNFS_ROOT_SUPPORT_USER_XATTR = 8,
+};
+
+enum cgroup_opt_features {
+	OPT_FEATURE_PRESSURE = 0,
+	OPT_FEATURE_COUNT = 1,
+};
+
+enum {
+	CFTYPE_ONLY_ON_ROOT = 1,
+	CFTYPE_NOT_ON_ROOT = 2,
+	CFTYPE_NS_DELEGATABLE = 4,
+	CFTYPE_NO_PREFIX = 8,
+	CFTYPE_WORLD_WRITABLE = 16,
+	CFTYPE_DEBUG = 32,
+	__CFTYPE_ONLY_ON_DFL = 65536,
+	__CFTYPE_NOT_ON_DFL = 131072,
+	__CFTYPE_ADDED = 262144,
+};
+
+enum cgroup2_param {
+	Opt_nsdelegate = 0,
+	Opt_favordynmods = 1,
+	Opt_memory_localevents = 2,
+	Opt_memory_recursiveprot = 3,
+	nr__cgroup2_params = 4,
+};
+
+struct cgrp_cset_link {
+	struct cgroup *cgrp;
+	struct css_set *cset;
+	struct list_head cset_link;
+	struct list_head cgrp_link;
+};
+
+struct trace_event_raw_cgroup_root {
+	struct trace_entry ent;
+	int root;
+	u16 ss_mask;
+	u32 __data_loc_name;
+	char __data[0];
+};
+
+struct trace_event_raw_cgroup {
+	struct trace_entry ent;
+	int root;
+	int level;
+	u64 id;
+	u32 __data_loc_path;
+	char __data[0];
+};
+
+struct trace_event_raw_cgroup_migrate {
+	struct trace_entry ent;
+	int dst_root;
+	int dst_level;
+	u64 dst_id;
+	int pid;
+	u32 __data_loc_dst_path;
+	u32 __data_loc_comm;
+	char __data[0];
+};
+
+struct trace_event_raw_cgroup_event {
+	struct trace_entry ent;
+	int root;
+	int level;
+	u64 id;
+	u32 __data_loc_path;
+	int val;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_cgroup_root {
+	u32 name;
+};
+
+struct trace_event_data_offsets_cgroup {
+	u32 path;
+};
+
+struct trace_event_data_offsets_cgroup_event {
+	u32 path;
+};
+
+struct cgroup_mgctx {
+	struct list_head preloaded_src_csets;
+	struct list_head preloaded_dst_csets;
+	struct cgroup_taskset tset;
+	u16 ss_mask;
+};
+
+struct cgroup_pidlist;
+
+struct cgroup_file_ctx {
+	struct cgroup_namespace *ns;
+	struct {
+		void *trigger;
+	} psi;
+	struct {
+		bool started;
+		struct css_task_iter iter;
+	} procs;
+	struct {
+		struct cgroup_pidlist *pidlist;
+	} procs1;
+};
+
+struct trace_event_data_offsets_cgroup_migrate {
+	u32 dst_path;
+	u32 comm;
+};
+
+typedef int (*btf_kfunc_filter_t)(const struct bpf_prog *, u32);
+
+struct btf_id_set8;
+
+struct btf_kfunc_id_set {
+	struct module *owner;
+	struct btf_id_set8 *set;
+	btf_kfunc_filter_t filter;
+};
+
+struct btf_id_set8 {
+	u32 cnt;
+	u32 flags;
+	struct {
+		u32 id;
+		u32 flags;
+	} pairs[0];
+};
+
+enum cgroup_filetype {
+	CGROUP_FILE_PROCS = 0,
+	CGROUP_FILE_TASKS = 1,
+};
+
+enum cgroup1_param {
+	Opt_all = 0,
+	Opt_clone_children = 1,
+	Opt_cpuset_v2_mode = 2,
+	Opt_name = 3,
+	Opt_none = 4,
+	Opt_noprefix = 5,
+	Opt_release_agent = 6,
+	Opt_xattr = 7,
+	Opt_favordynmods___2 = 8,
+	Opt_nofavordynmods = 9,
+};
+
+struct cgroup_pidlist {
+	struct {
+		enum cgroup_filetype type;
+		struct pid_namespace *ns;
+	} key;
+	pid_t *list;
+	int length;
+	struct list_head links;
+	struct cgroup *owner;
+	struct delayed_work destroy_dwork;
+};
+
+struct cgroupstats {
+	__u64 nr_sleeping;
+	__u64 nr_running;
+	__u64 nr_stopped;
+	__u64 nr_uninterruptible;
+	__u64 nr_io_wait;
+};
+
+enum freezer_state_flags {
+	CGROUP_FREEZER_ONLINE = 1,
+	CGROUP_FREEZING_SELF = 2,
+	CGROUP_FREEZING_PARENT = 4,
+	CGROUP_FROZEN = 8,
+	CGROUP_FREEZING = 6,
+};
+
+struct freezer {
+	struct cgroup_subsys_state css;
+	unsigned int state;
+};
+
+struct fmeter {
+	int cnt;
+	int val;
+	time64_t time;
+	spinlock_t lock;
+};
+
+enum prs_errcode {
+	PERR_NONE = 0,
+	PERR_INVCPUS = 1,
+	PERR_INVPARENT = 2,
+	PERR_NOTPART = 3,
+	PERR_NOTEXCL = 4,
+	PERR_NOCPUS = 5,
+	PERR_HOTPLUG = 6,
+	PERR_CPUSEMPTY = 7,
+};
+
+struct cpuset {
+	struct cgroup_subsys_state css;
+	unsigned long flags;
+	cpumask_var_t cpus_allowed;
+	cpumask_var_t cpus_requested;
+	nodemask_t mems_allowed;
+	cpumask_var_t effective_cpus;
+	nodemask_t effective_mems;
+	cpumask_var_t subparts_cpus;
+	nodemask_t old_mems_allowed;
+	struct fmeter fmeter;
+	int attach_in_progress;
+	int pn;
+	int relax_domain_level;
+	int nr_subparts_cpus;
+	int partition_root_state;
+	int use_parent_ecpus;
+	int child_ecpus_count;
+	int nr_deadline_tasks;
+	int nr_migrate_dl_tasks;
+	u64 sum_migrate_dl_bw;
+	enum prs_errcode prs_err;
+	struct cgroup_file partition_file;
+};
+
+enum subparts_cmd {
+	partcmd_enable = 0,
+	partcmd_disable = 1,
+	partcmd_update = 2,
+	partcmd_invalidate = 3,
+};
+
+enum {
+	ZONELIST_FALLBACK = 0,
+	MAX_ZONELISTS = 1,
+};
+
+struct cpuset_migrate_mm_work {
+	struct work_struct work;
+	struct mm_struct *mm;
+	nodemask_t from;
+	nodemask_t to;
+};
+
+struct tmpmasks {
+	cpumask_var_t addmask;
+	cpumask_var_t delmask;
+	cpumask_var_t new_cpus;
+};
+
+typedef enum {
+	CS_ONLINE = 0,
+	CS_CPU_EXCLUSIVE = 1,
+	CS_MEM_EXCLUSIVE = 2,
+	CS_MEM_HARDWALL = 3,
+	CS_MEMORY_MIGRATE = 4,
+	CS_SCHED_LOAD_BALANCE = 5,
+	CS_SPREAD_PAGE = 6,
+	CS_SPREAD_SLAB = 7,
+} cpuset_flagbits_t;
+
+typedef enum {
+	FILE_MEMORY_MIGRATE = 0,
+	FILE_CPULIST = 1,
+	FILE_MEMLIST = 2,
+	FILE_EFFECTIVE_CPULIST = 3,
+	FILE_EFFECTIVE_MEMLIST = 4,
+	FILE_SUBPARTS_CPULIST = 5,
+	FILE_CPU_EXCLUSIVE = 6,
+	FILE_MEM_EXCLUSIVE = 7,
+	FILE_MEM_HARDWALL = 8,
+	FILE_SCHED_LOAD_BALANCE = 9,
+	FILE_PARTITION_ROOT = 10,
+	FILE_SCHED_RELAX_DOMAIN_LEVEL = 11,
+	FILE_MEMORY_PRESSURE_ENABLED = 12,
+	FILE_MEMORY_PRESSURE = 13,
+	FILE_SPREAD_PAGE = 14,
+	FILE_SPREAD_SLAB = 15,
+} cpuset_filetype_t;
+
+struct cpu_stopper {
+	struct task_struct *thread;
+	raw_spinlock_t lock;
+	bool enabled;
+	struct list_head works;
+	struct cpu_stop_work stop_work;
+	unsigned long caller;
+	cpu_stop_fn_t fn;
+};
+
+struct cpu_stop_done {
+	atomic_t nr_todo;
+	int ret;
+	struct completion completion;
+};
+
+enum multi_stop_state {
+	MULTI_STOP_NONE = 0,
+	MULTI_STOP_PREPARE = 1,
+	MULTI_STOP_DISABLE_IRQ = 2,
+	MULTI_STOP_RUN = 3,
+	MULTI_STOP_EXIT = 4,
+};
+
+struct multi_stop_data {
+	cpu_stop_fn_t fn;
+	void *data;
+	unsigned int num_threads;
+	const struct cpumask *active_cpus;
+	enum multi_stop_state state;
+	atomic_t thread_ack;
+};
+
+struct auditd_connection {
+	struct pid *pid;
+	u32 portid;
+	struct net *net;
+	struct callback_head rcu;
+};
+
+typedef int __kernel_mqd_t;
+
+typedef __kernel_mqd_t mqd_t;
+
+struct mq_attr {
+	__kernel_long_t mq_flags;
+	__kernel_long_t mq_maxmsg;
+	__kernel_long_t mq_msgsize;
+	__kernel_long_t mq_curmsgs;
+	__kernel_long_t __reserved[4];
+};
+
+struct audit_cap_data {
+	kernel_cap_t permitted;
+	kernel_cap_t inheritable;
+	union {
+		unsigned int fE;
+		kernel_cap_t effective;
+	};
+	kernel_cap_t ambient;
+	kuid_t rootid;
+};
+
+struct open_how {
+	__u64 flags;
+	__u64 mode;
+	__u64 resolve;
+};
+
+enum audit_state {
+	AUDIT_STATE_DISABLED = 0,
+	AUDIT_STATE_BUILD = 1,
+	AUDIT_STATE_RECORD = 2,
+};
+
+struct audit_names {
+	struct list_head list;
+	struct filename *name;
+	int name_len;
+	bool hidden;
+	unsigned long ino;
+	dev_t dev;
+	umode_t mode;
+	kuid_t uid;
+	kgid_t gid;
+	dev_t rdev;
+	u32 osid;
+	struct audit_cap_data fcap;
+	unsigned int fcap_ver;
+	unsigned char type;
+	bool should_free;
+};
+
+struct audit_proctitle {
+	int len;
+	char *value;
+};
+
+struct audit_aux_data;
+
+struct __kernel_sockaddr_storage;
+
+struct audit_tree_refs;
+
+struct audit_context {
+	int dummy;
+	enum {
+		AUDIT_CTX_UNUSED = 0,
+		AUDIT_CTX_SYSCALL = 1,
+		AUDIT_CTX_URING = 2,
+	} context;
+	enum audit_state state;
+	enum audit_state current_state;
+	unsigned int serial;
+	int major;
+	int uring_op;
+	struct timespec64 ctime;
+	unsigned long argv[4];
+	long return_code;
+	u64 prio;
+	int return_valid;
+	struct audit_names preallocated_names[5];
+	int name_count;
+	struct list_head names_list;
+	char *filterkey;
+	struct path pwd;
+	struct audit_aux_data *aux;
+	struct audit_aux_data *aux_pids;
+	struct __kernel_sockaddr_storage *sockaddr;
+	size_t sockaddr_len;
+	pid_t ppid;
+	kuid_t uid;
+	kuid_t euid;
+	kuid_t suid;
+	kuid_t fsuid;
+	kgid_t gid;
+	kgid_t egid;
+	kgid_t sgid;
+	kgid_t fsgid;
+	unsigned long personality;
+	int arch;
+	pid_t target_pid;
+	kuid_t target_auid;
+	kuid_t target_uid;
+	unsigned int target_sessionid;
+	u32 target_sid;
+	char target_comm[16];
+	struct audit_tree_refs *trees;
+	struct audit_tree_refs *first_trees;
+	struct list_head killed_trees;
+	int tree_count;
+	int type;
+	union {
+		struct {
+			int nargs;
+			long args[6];
+		} socketcall;
+		struct {
+			kuid_t uid;
+			kgid_t gid;
+			umode_t mode;
+			u32 osid;
+			int has_perm;
+			uid_t perm_uid;
+			gid_t perm_gid;
+			umode_t perm_mode;
+			unsigned long qbytes;
+		} ipc;
+		struct {
+			mqd_t mqdes;
+			struct mq_attr mqstat;
+		} mq_getsetattr;
+		struct {
+			mqd_t mqdes;
+			int sigev_signo;
+		} mq_notify;
+		struct {
+			mqd_t mqdes;
+			size_t msg_len;
+			unsigned int msg_prio;
+			struct timespec64 abs_timeout;
+		} mq_sendrecv;
+		struct {
+			int oflag;
+			umode_t mode;
+			struct mq_attr attr;
+		} mq_open;
+		struct {
+			pid_t pid;
+			struct audit_cap_data cap;
+		} capset;
+		struct {
+			int fd;
+			int flags;
+		} mmap;
+		struct open_how openat2;
+		struct {
+			int argc;
+		} execve;
+		struct {
+			char *name;
+		} module;
+		struct {
+			struct audit_ntp_data ntp_data;
+			struct timespec64 tk_injoffset;
+		} time;
+	};
+	int fds[2];
+	struct audit_proctitle proctitle;
+};
+
+struct __kernel_sockaddr_storage {
+	union {
+		struct {
+			__kernel_sa_family_t ss_family;
+			char __data[126];
+		};
+		void *__align;
+	};
+};
+
+struct audit_ctl_mutex {
+	struct mutex lock;
+	void *owner;
+};
+
+struct pernet_operations {
+	struct list_head list;
+	int (*init)(struct net *);
+	void (*pre_exit)(struct net *);
+	void (*exit)(struct net *);
+	void (*exit_batch)(struct list_head *);
+	unsigned int *id;
+	size_t size;
+};
+
+struct audit_features {
+	__u32 vers;
+	__u32 mask;
+	__u32 features;
+	__u32 lock;
+};
+
+enum skb_drop_reason {
+	SKB_NOT_DROPPED_YET = 0,
+	SKB_CONSUMED = 1,
+	SKB_DROP_REASON_NOT_SPECIFIED = 2,
+	SKB_DROP_REASON_NO_SOCKET = 3,
+	SKB_DROP_REASON_PKT_TOO_SMALL = 4,
+	SKB_DROP_REASON_TCP_CSUM = 5,
+	SKB_DROP_REASON_SOCKET_FILTER = 6,
+	SKB_DROP_REASON_UDP_CSUM = 7,
+	SKB_DROP_REASON_NETFILTER_DROP = 8,
+	SKB_DROP_REASON_OTHERHOST = 9,
+	SKB_DROP_REASON_IP_CSUM = 10,
+	SKB_DROP_REASON_IP_INHDR = 11,
+	SKB_DROP_REASON_IP_RPFILTER = 12,
+	SKB_DROP_REASON_UNICAST_IN_L2_MULTICAST = 13,
+	SKB_DROP_REASON_XFRM_POLICY = 14,
+	SKB_DROP_REASON_IP_NOPROTO = 15,
+	SKB_DROP_REASON_SOCKET_RCVBUFF = 16,
+	SKB_DROP_REASON_PROTO_MEM = 17,
+	SKB_DROP_REASON_TCP_MD5NOTFOUND = 18,
+	SKB_DROP_REASON_TCP_MD5UNEXPECTED = 19,
+	SKB_DROP_REASON_TCP_MD5FAILURE = 20,
+	SKB_DROP_REASON_SOCKET_BACKLOG = 21,
+	SKB_DROP_REASON_TCP_FLAGS = 22,
+	SKB_DROP_REASON_TCP_ZEROWINDOW = 23,
+	SKB_DROP_REASON_TCP_OLD_DATA = 24,
+	SKB_DROP_REASON_TCP_OVERWINDOW = 25,
+	SKB_DROP_REASON_TCP_OFOMERGE = 26,
+	SKB_DROP_REASON_TCP_RFC7323_PAWS = 27,
+	SKB_DROP_REASON_TCP_OLD_SEQUENCE = 28,
+	SKB_DROP_REASON_TCP_INVALID_SEQUENCE = 29,
+	SKB_DROP_REASON_TCP_RESET = 30,
+	SKB_DROP_REASON_TCP_INVALID_SYN = 31,
+	SKB_DROP_REASON_TCP_CLOSE = 32,
+	SKB_DROP_REASON_TCP_FASTOPEN = 33,
+	SKB_DROP_REASON_TCP_OLD_ACK = 34,
+	SKB_DROP_REASON_TCP_TOO_OLD_ACK = 35,
+	SKB_DROP_REASON_TCP_ACK_UNSENT_DATA = 36,
+	SKB_DROP_REASON_TCP_OFO_QUEUE_PRUNE = 37,
+	SKB_DROP_REASON_TCP_OFO_DROP = 38,
+	SKB_DROP_REASON_IP_OUTNOROUTES = 39,
+	SKB_DROP_REASON_BPF_CGROUP_EGRESS = 40,
+	SKB_DROP_REASON_IPV6DISABLED = 41,
+	SKB_DROP_REASON_NEIGH_CREATEFAIL = 42,
+	SKB_DROP_REASON_NEIGH_FAILED = 43,
+	SKB_DROP_REASON_NEIGH_QUEUEFULL = 44,
+	SKB_DROP_REASON_NEIGH_DEAD = 45,
+	SKB_DROP_REASON_TC_EGRESS = 46,
+	SKB_DROP_REASON_QDISC_DROP = 47,
+	SKB_DROP_REASON_CPU_BACKLOG = 48,
+	SKB_DROP_REASON_XDP = 49,
+	SKB_DROP_REASON_TC_INGRESS = 50,
+	SKB_DROP_REASON_UNHANDLED_PROTO = 51,
+	SKB_DROP_REASON_SKB_CSUM = 52,
+	SKB_DROP_REASON_SKB_GSO_SEG = 53,
+	SKB_DROP_REASON_SKB_UCOPY_FAULT = 54,
+	SKB_DROP_REASON_DEV_HDR = 55,
+	SKB_DROP_REASON_DEV_READY = 56,
+	SKB_DROP_REASON_FULL_RING = 57,
+	SKB_DROP_REASON_NOMEM = 58,
+	SKB_DROP_REASON_HDR_TRUNC = 59,
+	SKB_DROP_REASON_TAP_FILTER = 60,
+	SKB_DROP_REASON_TAP_TXFILTER = 61,
+	SKB_DROP_REASON_ICMP_CSUM = 62,
+	SKB_DROP_REASON_INVALID_PROTO = 63,
+	SKB_DROP_REASON_IP_INADDRERRORS = 64,
+	SKB_DROP_REASON_IP_INNOROUTES = 65,
+	SKB_DROP_REASON_PKT_TOO_BIG = 66,
+	SKB_DROP_REASON_DUP_FRAG = 67,
+	SKB_DROP_REASON_FRAG_REASM_TIMEOUT = 68,
+	SKB_DROP_REASON_FRAG_TOO_FAR = 69,
+	SKB_DROP_REASON_TCP_MINTTL = 70,
+	SKB_DROP_REASON_IPV6_BAD_EXTHDR = 71,
+	SKB_DROP_REASON_IPV6_NDISC_FRAG = 72,
+	SKB_DROP_REASON_IPV6_NDISC_HOP_LIMIT = 73,
+	SKB_DROP_REASON_IPV6_NDISC_BAD_CODE = 74,
+	SKB_DROP_REASON_IPV6_NDISC_BAD_OPTIONS = 75,
+	SKB_DROP_REASON_IPV6_NDISC_NS_OTHERHOST = 76,
+	SKB_DROP_REASON_QUEUE_PURGE = 77,
+	SKB_DROP_REASON_MAX = 78,
+	SKB_DROP_REASON_SUBSYS_MASK = 4294901760,
+};
+
+enum audit_nlgrps {
+	AUDIT_NLGRP_NONE = 0,
+	AUDIT_NLGRP_READLOG = 1,
+	__AUDIT_NLGRP_MAX = 2,
+};
+
+struct scm_creds {
+	u32 pid;
+	kuid_t uid;
+	kgid_t gid;
+};
+
+struct netlink_skb_parms {
+	struct scm_creds creds;
+	__u32 portid;
+	__u32 dst_group;
+	__u32 flags;
+	struct sock *sk;
+	bool nsid_is_set;
+	int nsid;
+};
+
+struct audit_reply {
+	__u32 portid;
+	struct net *net;
+	struct sk_buff *skb;
+};
+
+struct audit_net {
+	struct sock *sk;
+};
+
+struct audit_buffer {
+	struct sk_buff *skb;
+	struct audit_context *ctx;
+	gfp_t gfp_mask;
+};
+
+struct netlink_kernel_cfg {
+	unsigned int groups;
+	unsigned int flags;
+	void (*input)(struct sk_buff *);
+	struct mutex *cb_mutex;
+	int (*bind)(struct net *, int);
+	void (*unbind)(struct net *, int);
+	void (*release)(struct sock *, unsigned long *);
+};
+
+struct audit_sig_info {
+	uid_t uid;
+	pid_t pid;
+	char ctx[0];
+};
+
+struct audit_tty_status {
+	__u32 enabled;
+	__u32 log_passwd;
+};
+
+struct audit_status {
+	__u32 mask;
+	__u32 enabled;
+	__u32 failure;
+	__u32 pid;
+	__u32 rate_limit;
+	__u32 backlog_limit;
+	__u32 lost;
+	__u32 backlog;
+	union {
+		__u32 version;
+		__u32 feature_bitmap;
+	};
+	__u32 backlog_wait_time;
+	__u32 backlog_wait_time_actual;
+};
+
+struct audit_netlink_list {
+	__u32 portid;
+	struct net *net;
+	struct sk_buff_head q;
+};
+
+enum {
+	Audit_equal = 0,
+	Audit_not_equal = 1,
+	Audit_bitmask = 2,
+	Audit_bittest = 3,
+	Audit_lt = 4,
+	Audit_gt = 5,
+	Audit_le = 6,
+	Audit_ge = 7,
+	Audit_bad = 8,
+};
+
+struct audit_field;
+
+struct audit_watch;
+
+struct audit_tree;
+
+struct audit_fsnotify_mark;
+
+struct audit_krule {
+	u32 pflags;
+	u32 flags;
+	u32 listnr;
+	u32 action;
+	u32 mask[64];
+	u32 buflen;
+	u32 field_count;
+	char *filterkey;
+	struct audit_field *fields;
+	struct audit_field *arch_f;
+	struct audit_field *inode_f;
+	struct audit_watch *watch;
+	struct audit_tree *tree;
+	struct audit_fsnotify_mark *exe;
+	struct list_head rlist;
+	struct list_head list;
+	u64 prio;
+};
+
+struct audit_entry {
+	struct list_head list;
+	struct callback_head rcu;
+	struct audit_krule rule;
+};
+
+struct audit_field {
+	u32 type;
+	union {
+		u32 val;
+		kuid_t uid;
+		kgid_t gid;
+		struct {
+			char *lsm_str;
+			void *lsm_rule;
+		};
+	};
+	u32 op;
+};
+
+struct audit_rule_data {
+	__u32 flags;
+	__u32 action;
+	__u32 field_count;
+	__u32 mask[64];
+	__u32 fields[64];
+	__u32 values[64];
+	__u32 fieldflags[64];
+	__u32 buflen;
+	char buf[0];
+};
+
+enum audit_nfcfgop {
+	AUDIT_XT_OP_REGISTER = 0,
+	AUDIT_XT_OP_REPLACE = 1,
+	AUDIT_XT_OP_UNREGISTER = 2,
+	AUDIT_NFT_OP_TABLE_REGISTER = 3,
+	AUDIT_NFT_OP_TABLE_UNREGISTER = 4,
+	AUDIT_NFT_OP_CHAIN_REGISTER = 5,
+	AUDIT_NFT_OP_CHAIN_UNREGISTER = 6,
+	AUDIT_NFT_OP_RULE_REGISTER = 7,
+	AUDIT_NFT_OP_RULE_UNREGISTER = 8,
+	AUDIT_NFT_OP_SET_REGISTER = 9,
+	AUDIT_NFT_OP_SET_UNREGISTER = 10,
+	AUDIT_NFT_OP_SETELEM_REGISTER = 11,
+	AUDIT_NFT_OP_SETELEM_UNREGISTER = 12,
+	AUDIT_NFT_OP_GEN_REGISTER = 13,
+	AUDIT_NFT_OP_OBJ_REGISTER = 14,
+	AUDIT_NFT_OP_OBJ_UNREGISTER = 15,
+	AUDIT_NFT_OP_OBJ_RESET = 16,
+	AUDIT_NFT_OP_FLOWTABLE_REGISTER = 17,
+	AUDIT_NFT_OP_FLOWTABLE_UNREGISTER = 18,
+	AUDIT_NFT_OP_SETELEM_RESET = 19,
+	AUDIT_NFT_OP_RULE_RESET = 20,
+	AUDIT_NFT_OP_INVALID = 21,
+};
+
+struct audit_nfcfgop_tab {
+	enum audit_nfcfgop op;
+	const char *s;
+};
+
+struct audit_aux_data {
+	struct audit_aux_data *next;
+	int type;
+};
+
+struct audit_chunk;
+
+struct audit_tree_refs {
+	struct audit_tree_refs *next;
+	struct audit_chunk *c[31];
+};
+
+struct cpu_vfs_cap_data {
+	__u32 magic_etc;
+	kuid_t rootid;
+	kernel_cap_t permitted;
+	kernel_cap_t inheritable;
+};
+
+typedef int __kernel_key_t;
+
+typedef __kernel_key_t key_t;
+
+struct kern_ipc_perm {
+	spinlock_t lock;
+	bool deleted;
+	int id;
+	key_t key;
+	kuid_t uid;
+	kgid_t gid;
+	kuid_t cuid;
+	kgid_t cgid;
+	umode_t mode;
+	unsigned long seq;
+	void *security;
+	struct rhash_head khtnode;
+	struct callback_head rcu;
+	refcount_t refcount;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct audit_aux_data_bprm_fcaps {
+	struct audit_aux_data d;
+	struct audit_cap_data fcap;
+	unsigned int fcap_ver;
+	struct audit_cap_data old_pcap;
+	struct audit_cap_data new_pcap;
+};
+
+struct audit_aux_data_pids {
+	struct audit_aux_data d;
+	pid_t target_pid[16];
+	kuid_t target_auid[16];
+	kuid_t target_uid[16];
+	unsigned int target_sessionid[16];
+	u32 target_sid[16];
+	char target_comm[256];
+	int pid_count;
+};
+
+struct fanotify_response_info_header {
+	__u8 type;
+	__u8 pad;
+	__u16 len;
+};
+
+struct fanotify_response_info_audit_rule {
+	struct fanotify_response_info_header hdr;
+	__u32 rule_number;
+	__u32 subj_trust;
+	__u32 obj_trust;
+};
+
+struct inotify_group_private_data {
+	spinlock_t idr_lock;
+	struct idr idr;
+	struct ucounts *ucounts;
+};
+
+struct fsnotify_ops;
+
+struct fsnotify_event;
+
+struct fsnotify_group {
+	const struct fsnotify_ops *ops;
+	refcount_t refcnt;
+	spinlock_t notification_lock;
+	struct list_head notification_list;
+	wait_queue_head_t notification_waitq;
+	unsigned int q_len;
+	unsigned int max_events;
+	unsigned int priority;
+	bool shutdown;
+	int flags;
+	unsigned int owner_flags;
+	struct mutex mark_mutex;
+	atomic_t user_waits;
+	struct list_head marks_list;
+	struct fasync_struct *fsn_fa;
+	struct fsnotify_event *overflow_event;
+	struct mem_cgroup *memcg;
+	union {
+		void *private;
+		struct inotify_group_private_data inotify_data;
+	};
+};
+
+struct fsnotify_iter_info;
+
+struct fsnotify_mark;
+
+struct fsnotify_ops {
+	int (*handle_event)(struct fsnotify_group *, u32, const void *, int, struct inode *, const struct qstr *, u32, struct fsnotify_iter_info *);
+	int (*handle_inode_event)(struct fsnotify_mark *, u32, struct inode *, struct inode *, const struct qstr *, u32);
+	void (*free_group_priv)(struct fsnotify_group *);
+	void (*freeing_mark)(struct fsnotify_mark *, struct fsnotify_group *);
+	void (*free_event)(struct fsnotify_group *, struct fsnotify_event *);
+	void (*free_mark)(struct fsnotify_mark *);
+};
+
+struct fsnotify_iter_info {
+	struct fsnotify_mark *marks[5];
+	struct fsnotify_group *current_group;
+	unsigned int report_mask;
+	int srcu_idx;
+};
+
+struct fsnotify_mark {
+	__u32 mask;
+	refcount_t refcnt;
+	struct fsnotify_group *group;
+	struct list_head g_list;
+	spinlock_t lock;
+	struct hlist_node obj_list;
+	struct fsnotify_mark_connector *connector;
+	__u32 ignore_mask;
+	unsigned int flags;
+};
+
+struct fsnotify_event {
+	struct list_head list;
+};
+
+enum fsnotify_obj_type {
+	FSNOTIFY_OBJ_TYPE_ANY = -1,
+	FSNOTIFY_OBJ_TYPE_INODE = 0,
+	FSNOTIFY_OBJ_TYPE_VFSMOUNT = 1,
+	FSNOTIFY_OBJ_TYPE_SB = 2,
+	FSNOTIFY_OBJ_TYPE_COUNT = 3,
+	FSNOTIFY_OBJ_TYPE_DETACHED = 3,
+};
+
+struct audit_parent {
+	struct list_head watches;
+	struct fsnotify_mark mark;
+};
+
+struct audit_watch {
+	refcount_t count;
+	dev_t dev;
+	char *path;
+	unsigned long ino;
+	struct audit_parent *parent;
+	struct list_head wlist;
+	struct list_head rules;
+};
+
+struct audit_fsnotify_mark {
+	dev_t dev;
+	unsigned long ino;
+	char *path;
+	struct fsnotify_mark mark;
+	struct audit_krule *rule;
+};
+
+enum {
+	HASH_SIZE = 128,
+};
+
+struct audit_node {
+	struct list_head list;
+	struct audit_tree *owner;
+	unsigned int index;
+};
+
+struct audit_chunk {
+	struct list_head hash;
+	unsigned long key;
+	struct fsnotify_mark *mark;
+	struct list_head trees;
+	int count;
+	atomic_long_t refs;
+	struct callback_head head;
+	struct audit_node owners[0];
+};
+
+struct audit_tree {
+	refcount_t count;
+	int goner;
+	struct audit_chunk *root;
+	struct list_head chunks;
+	struct list_head rules;
+	struct list_head list;
+	struct list_head same_root;
+	struct callback_head head;
+	char pathname[0];
+};
+
+struct audit_tree_mark {
+	struct fsnotify_mark mark;
+	struct audit_chunk *chunk;
+};
+
+enum kprobe_slot_state {
+	SLOT_CLEAN = 0,
+	SLOT_DIRTY = 1,
+	SLOT_USED = 2,
+};
+
+enum perf_record_ksymbol_type {
+	PERF_RECORD_KSYMBOL_TYPE_UNKNOWN = 0,
+	PERF_RECORD_KSYMBOL_TYPE_BPF = 1,
+	PERF_RECORD_KSYMBOL_TYPE_OOL = 2,
+	PERF_RECORD_KSYMBOL_TYPE_MAX = 3,
+};
+
+struct kprobe_insn_page {
+	struct list_head list;
+	kprobe_opcode_t *insns;
+	struct kprobe_insn_cache *cache;
+	int nused;
+	int ngarbage;
+	char slot_used[0];
+};
+
+struct kprobe_blacklist_entry {
+	struct list_head list;
+	unsigned long start_addr;
+	unsigned long end_addr;
+};
+
+struct kretprobe_instance;
+
+typedef int (*kretprobe_handler_t)(struct kretprobe_instance *, struct pt_regs *);
+
+struct kretprobe {
+	struct kprobe kp;
+	kretprobe_handler_t handler;
+	kretprobe_handler_t entry_handler;
+	int maxactive;
+	int nmissed;
+	size_t data_size;
+	struct rethook *rh;
+};
+
+struct kretprobe_instance {
+	struct rethook_node node;
+	char data[0];
+};
+
+typedef void (*rethook_handler_t)(struct rethook_node *, void *, unsigned long, struct pt_regs *);
+
+enum stats_per_group {
+	STATS_SYSTEM = 0,
+	STATS_SOFTIRQ = 1,
+	STATS_HARDIRQ = 2,
+	STATS_IDLE = 3,
+	NUM_STATS_PER_GROUP = 4,
+};
+
+struct action_cache {
+	unsigned long allow_native[8];
+	unsigned long allow_compat[8];
+};
+
+struct notification;
+
+struct seccomp_filter {
+	refcount_t refs;
+	refcount_t users;
+	bool log;
+	bool wait_killable_recv;
+	struct action_cache cache;
+	struct seccomp_filter *prev;
+	struct bpf_prog *prog;
+	struct notification *notif;
+	struct mutex notify_lock;
+	wait_queue_head_t wqh;
+};
+
+struct notification {
+	atomic_t requests;
+	u32 flags;
+	u64 next_id;
+	struct list_head notifications;
+};
+
+struct seccomp_log_name {
+	u32 log;
+	const char *name;
+};
+
+enum notify_state {
+	SECCOMP_NOTIFY_INIT = 0,
+	SECCOMP_NOTIFY_SENT = 1,
+	SECCOMP_NOTIFY_REPLIED = 2,
+};
+
+struct seccomp_kaddfd {
+	struct file *file;
+	int fd;
+	unsigned int flags;
+	__u32 ioctl_flags;
+	union {
+		bool setfd;
+		int ret;
+	};
+	struct completion completion;
+	struct list_head list;
+};
+
+struct seccomp_knotif {
+	struct task_struct *task;
+	u64 id;
+	const struct seccomp_data *data;
+	enum notify_state state;
+	int error;
+	long val;
+	u32 flags;
+	struct completion ready;
+	struct list_head list;
+	struct list_head addfd;
+};
+
+typedef unsigned int (*bpf_dispatcher_fn)(const void *, const struct bpf_insn *, unsigned int (*)(const void *, const struct bpf_insn *));
+
+typedef unsigned int (*bpf_func_t)(const void *, const struct bpf_insn *);
+
+struct sock_fprog {
+	unsigned short len;
+	struct sock_filter __attribute__((btf_type_tag("user"))) *filter;
+};
+
+struct compat_sock_fprog {
+	u16 len;
+	compat_uptr_t filter;
+};
+
+struct seccomp_notif_sizes {
+	__u16 seccomp_notif;
+	__u16 seccomp_notif_resp;
+	__u16 seccomp_data;
+};
+
+typedef int (*bpf_aux_classic_check_t)(struct sock_filter *, unsigned int);
+
+struct seccomp_notif {
+	__u64 id;
+	__u32 pid;
+	__u32 flags;
+	struct seccomp_data data;
+};
+
+struct seccomp_notif_resp {
+	__u64 id;
+	__s64 val;
+	__s32 error;
+	__u32 flags;
+};
+
+struct seccomp_notif_addfd {
+	__u64 id;
+	__u32 flags;
+	__u32 srcfd;
+	__u32 newfd;
+	__u32 newfd_flags;
+};
+
+struct listener_list {
+	struct rw_semaphore sem;
+	struct list_head list;
+};
+
+struct genl_split_ops;
+
+struct genl_info;
+
+struct genl_ops;
+
+struct genl_small_ops;
+
+struct genl_multicast_group;
+
+struct genl_family {
+	unsigned int hdrsize;
+	char name[16];
+	unsigned int version;
+	unsigned int maxattr;
+	u8 netnsok: 1;
+	u8 parallel_ops: 1;
+	u8 n_ops;
+	u8 n_small_ops;
+	u8 n_split_ops;
+	u8 n_mcgrps;
+	u8 resv_start_op;
+	const struct nla_policy *policy;
+	int (*pre_doit)(const struct genl_split_ops *, struct sk_buff *, struct genl_info *);
+	void (*post_doit)(const struct genl_split_ops *, struct sk_buff *, struct genl_info *);
+	const struct genl_ops *ops;
+	const struct genl_small_ops *small_ops;
+	const struct genl_split_ops *split_ops;
+	const struct genl_multicast_group *mcgrps;
+	struct module *module;
+	int id;
+	unsigned int mcgrp_offset;
+	u64 android_kabi_reserved1;
+};
+
+struct genl_split_ops {
+	union {
+		struct {
+			int (*pre_doit)(const struct genl_split_ops *, struct sk_buff *, struct genl_info *);
+			int (*doit)(struct sk_buff *, struct genl_info *);
+			void (*post_doit)(const struct genl_split_ops *, struct sk_buff *, struct genl_info *);
+		};
+		struct {
+			int (*start)(struct netlink_callback *);
+			int (*dumpit)(struct sk_buff *, struct netlink_callback *);
+			int (*done)(struct netlink_callback *);
+		};
+	};
+	const struct nla_policy *policy;
+	unsigned int maxattr;
+	u8 cmd;
+	u8 internal_flags;
+	u8 flags;
+	u8 validate;
+};
+
+struct genlmsghdr;
+
+struct genl_info {
+	u32 snd_seq;
+	u32 snd_portid;
+	const struct genl_family *family;
+	const struct nlmsghdr *nlhdr;
+	struct genlmsghdr *genlhdr;
+	struct nlattr **attrs;
+	possible_net_t _net;
+	void *user_ptr[2];
+	struct netlink_ext_ack *extack;
+};
+
+struct genlmsghdr {
+	__u8 cmd;
+	__u8 version;
+	__u16 reserved;
+};
+
+struct genl_ops {
+	int (*doit)(struct sk_buff *, struct genl_info *);
+	int (*start)(struct netlink_callback *);
+	int (*dumpit)(struct sk_buff *, struct netlink_callback *);
+	int (*done)(struct netlink_callback *);
+	const struct nla_policy *policy;
+	unsigned int maxattr;
+	u8 cmd;
+	u8 internal_flags;
+	u8 flags;
+	u8 validate;
+	u64 android_kabi_reserved1;
+};
+
+struct genl_small_ops {
+	int (*doit)(struct sk_buff *, struct genl_info *);
+	int (*dumpit)(struct sk_buff *, struct netlink_callback *);
+	u8 cmd;
+	u8 internal_flags;
+	u8 flags;
+	u8 validate;
+};
+
+struct genl_multicast_group {
+	char name[16];
+	u8 flags;
+	u8 cap_sys_admin: 1;
+};
+
+enum {
+	TASKSTATS_CMD_UNSPEC = 0,
+	TASKSTATS_CMD_GET = 1,
+	TASKSTATS_CMD_NEW = 2,
+	__TASKSTATS_CMD_MAX = 3,
+};
+
+enum {
+	TASKSTATS_TYPE_UNSPEC = 0,
+	TASKSTATS_TYPE_PID = 1,
+	TASKSTATS_TYPE_TGID = 2,
+	TASKSTATS_TYPE_STATS = 3,
+	TASKSTATS_TYPE_AGGR_PID = 4,
+	TASKSTATS_TYPE_AGGR_TGID = 5,
+	TASKSTATS_TYPE_NULL = 6,
+	__TASKSTATS_TYPE_MAX = 7,
+};
+
+enum {
+	TASKSTATS_CMD_ATTR_UNSPEC = 0,
+	TASKSTATS_CMD_ATTR_PID = 1,
+	TASKSTATS_CMD_ATTR_TGID = 2,
+	TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 3,
+	TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 4,
+	__TASKSTATS_CMD_ATTR_MAX = 5,
+};
+
+enum actions {
+	REGISTER = 0,
+	DEREGISTER = 1,
+	CPU_DONT_CARE = 2,
+};
+
+enum {
+	CGROUPSTATS_CMD_ATTR_UNSPEC = 0,
+	CGROUPSTATS_CMD_ATTR_FD = 1,
+	__CGROUPSTATS_CMD_ATTR_MAX = 2,
+};
+
+enum {
+	CGROUPSTATS_CMD_UNSPEC = 3,
+	CGROUPSTATS_CMD_GET = 4,
+	CGROUPSTATS_CMD_NEW = 5,
+	__CGROUPSTATS_CMD_MAX = 6,
+};
+
+enum {
+	CGROUPSTATS_TYPE_UNSPEC = 0,
+	CGROUPSTATS_TYPE_CGROUP_STATS = 1,
+	__CGROUPSTATS_TYPE_MAX = 2,
+};
+
+struct listener {
+	struct list_head list;
+	pid_t pid;
+	char valid;
+};
+
+struct tp_transition_snapshot {
+	unsigned long rcu;
+	unsigned long srcu;
+	bool ongoing;
+};
+
+enum tp_func_state {
+	TP_FUNC_0 = 0,
+	TP_FUNC_1 = 1,
+	TP_FUNC_2 = 2,
+	TP_FUNC_N = 3,
+};
+
+enum tp_transition_sync {
+	TP_TRANSITION_SYNC_1_0_1 = 0,
+	TP_TRANSITION_SYNC_N_2_1 = 1,
+	_NR_TP_TRANSITION_SYNC = 2,
+};
+
+struct tp_module {
+	struct list_head list;
+	struct module *mod;
+};
+
+struct tp_probes {
+	struct callback_head rcu;
+	struct tracepoint_func probes[0];
+};
+
+enum ring_buffer_type {
+	RINGBUF_TYPE_DATA_TYPE_LEN_MAX = 28,
+	RINGBUF_TYPE_PADDING = 29,
+	RINGBUF_TYPE_TIME_EXTEND = 30,
+	RINGBUF_TYPE_TIME_STAMP = 31,
+};
+
+enum {
+	RB_LEN_TIME_EXTEND = 8,
+	RB_LEN_TIME_STAMP = 8,
+};
+
+enum ring_buffer_flags {
+	RB_FL_OVERWRITE = 1,
+};
+
+enum {
+	RB_CTX_TRANSITION = 0,
+	RB_CTX_NMI = 1,
+	RB_CTX_IRQ = 2,
+	RB_CTX_SOFTIRQ = 3,
+	RB_CTX_NORMAL = 4,
+	RB_CTX_MAX = 5,
+};
+
+enum {
+	RB_ADD_STAMP_NONE = 0,
+	RB_ADD_STAMP_EXTEND = 2,
+	RB_ADD_STAMP_ABSOLUTE = 4,
+	RB_ADD_STAMP_FORCE = 8,
+};
+
+struct buffer_data_page;
+
+struct buffer_page {
+	struct list_head list;
+	local_t write;
+	unsigned int read;
+	local_t entries;
+	unsigned long real_end;
+	struct buffer_data_page *page;
+	u32 id;
+};
+
+struct buffer_data_page {
+	u64 time_stamp;
+	local_t commit;
+	unsigned char data[0];
+};
+
+struct ring_buffer_per_cpu;
+
+struct ring_buffer_iter {
+	struct ring_buffer_per_cpu *cpu_buffer;
+	unsigned long head;
+	unsigned long next_event;
+	struct buffer_page *head_page;
+	struct buffer_page *cache_reader_page;
+	unsigned long cache_read;
+	unsigned long cache_pages_removed;
+	u64 read_stamp;
+	u64 page_stamp;
+	struct ring_buffer_event *event;
+	int missed_events;
+};
+
+struct rb_time_struct {
+	local64_t time;
+};
+
+typedef struct rb_time_struct rb_time_t;
+
+struct rb_irq_work {
+	struct irq_work work;
+	wait_queue_head_t waiters;
+	wait_queue_head_t full_waiters;
+	bool waiters_pending;
+	bool full_waiters_pending;
+	bool wakeup_full;
+};
+
+struct ring_buffer_meta;
+
+struct ring_buffer_writer;
+
+struct ring_buffer_per_cpu {
+	int cpu;
+	atomic_t record_disabled;
+	atomic_t resize_disabled;
+	struct trace_buffer *buffer;
+	raw_spinlock_t reader_lock;
+	arch_spinlock_t lock;
+	struct lock_class_key lock_key;
+	struct buffer_data_page *free_page;
+	unsigned long nr_pages;
+	unsigned int current_context;
+	struct list_head *pages;
+	struct buffer_page *head_page;
+	struct buffer_page *tail_page;
+	struct buffer_page *commit_page;
+	struct buffer_page *reader_page;
+	unsigned long lost_events;
+	unsigned long last_overrun;
+	unsigned long nest;
+	local_t entries_bytes;
+	local_t entries;
+	local_t overrun;
+	local_t commit_overrun;
+	local_t dropped_events;
+	local_t committing;
+	local_t commits;
+	local_t pages_touched;
+	local_t pages_lost;
+	local_t pages_read;
+	long last_pages_touch;
+	size_t shortest_full;
+	unsigned long read;
+	unsigned long read_bytes;
+	rb_time_t write_stamp;
+	rb_time_t before_stamp;
+	u64 event_stamp[5];
+	u64 read_stamp;
+	unsigned long pages_removed;
+	int mapped;
+	struct mutex mapping_lock;
+	unsigned long *page_ids;
+	struct ring_buffer_meta *meta_page;
+	struct ring_buffer_writer *writer;
+	long nr_pages_to_update;
+	struct list_head new_pages;
+	struct work_struct update_pages_work;
+	struct completion update_done;
+	struct rb_irq_work irq_work;
+};
+
+struct trace_buffer {
+	unsigned int flags;
+	int cpus;
+	atomic_t record_disabled;
+	atomic_t resizing;
+	cpumask_var_t cpumask;
+	struct lock_class_key *reader_lock_key;
+	struct mutex mutex;
+	struct ring_buffer_per_cpu **buffers;
+	struct ring_buffer_writer *writer;
+	struct hlist_node node;
+	u64 (*clock)();
+	struct rb_irq_work irq_work;
+	bool time_stamp_abs;
+};
+
+struct trace_page_desc;
+
+struct ring_buffer_writer {
+	struct trace_page_desc *pdesc;
+	int (*get_reader_page)(int);
+};
+
+struct trace_page_desc {
+	int nr_cpus;
+	char __data[0];
+};
+
+struct reader_page {
+	__u32 id;
+	__u32 read;
+	unsigned long lost_events;
+};
+
+struct ring_buffer_meta {
+	unsigned long entries;
+	unsigned long overrun;
+	unsigned long read;
+	unsigned long pages_touched;
+	unsigned long pages_lost;
+	unsigned long pages_read;
+	__u32 meta_page_size;
+	__u32 nr_data_pages;
+	struct reader_page reader_page;
+};
+
+struct rb_page_desc {
+	int cpu;
+	int nr_page_va;
+	unsigned long meta_va;
+	unsigned long page_va[0];
+};
+
+struct rb_event_info {
+	u64 ts;
+	u64 delta;
+	u64 before;
+	u64 after;
+	unsigned long length;
+	struct buffer_page *tail_page;
+	int add_timestamp;
+};
+
+typedef bool (*ring_buffer_cond_fn)(void *);
+
+struct trace_array_cpu;
+
+struct array_buffer {
+	struct trace_array *tr;
+	struct trace_buffer *buffer;
+	struct trace_array_cpu __attribute__((btf_type_tag("percpu"))) *data;
+	u64 time_start;
+	int cpu;
+};
+
+struct trace_pid_list;
+
+struct trace_options;
+
+struct trace_func_repeats;
+
+struct trace_array {
+	struct list_head list;
+	char *name;
+	struct array_buffer array_buffer;
+	struct trace_pid_list __attribute__((btf_type_tag("rcu"))) *filtered_pids;
+	struct trace_pid_list __attribute__((btf_type_tag("rcu"))) *filtered_no_pids;
+	arch_spinlock_t max_lock;
+	int buffer_disabled;
+	int stop_count;
+	int clock_id;
+	int nr_topts;
+	bool clear_trace;
+	int buffer_percent;
+	unsigned int n_err_log_entries;
+	struct tracer *current_trace;
+	unsigned int trace_flags;
+	unsigned char trace_flags_index[32];
+	unsigned int flags;
+	raw_spinlock_t start_lock;
+	struct list_head err_log;
+	struct dentry *dir;
+	struct dentry *options;
+	struct dentry *percpu_dir;
+	struct eventfs_inode *event_dir;
+	struct trace_options *topts;
+	struct list_head systems;
+	struct list_head events;
+	struct trace_event_file *trace_marker_file;
+	cpumask_var_t tracing_cpumask;
+	cpumask_var_t pipe_cpumask;
+	int ref;
+	int trace_ref;
+	int no_filter_buffering_ref;
+	struct list_head hist_vars;
+	struct trace_func_repeats __attribute__((btf_type_tag("percpu"))) *last_func_repeats;
+};
+
+struct trace_array_cpu {
+	atomic_t disabled;
+	void *buffer_page;
+	unsigned long entries;
+	unsigned long saved_latency;
+	unsigned long critical_start;
+	unsigned long critical_end;
+	unsigned long critical_sequence;
+	unsigned long nice;
+	unsigned long policy;
+	unsigned long rt_priority;
+	unsigned long skipped_entries;
+	u64 preempt_timestamp;
+	pid_t pid;
+	kuid_t uid;
+	char comm[16];
+	bool ignore_pid;
+};
+
+union upper_chunk;
+
+union lower_chunk;
+
+struct trace_pid_list {
+	raw_spinlock_t lock;
+	struct irq_work refill_irqwork;
+	union upper_chunk *upper[256];
+	union upper_chunk *upper_list;
+	union lower_chunk *lower_list;
+	int free_upper_chunks;
+	int free_lower_chunks;
+};
+
+union upper_chunk {
+	union upper_chunk *next;
+	union lower_chunk *data[256];
+};
+
+union lower_chunk {
+	union lower_chunk *next;
+	unsigned long data[256];
+};
+
+struct tracer_flags;
+
+struct tracer {
+	const char *name;
+	int (*init)(struct trace_array *);
+	void (*reset)(struct trace_array *);
+	void (*start)(struct trace_array *);
+	void (*stop)(struct trace_array *);
+	int (*update_thresh)(struct trace_array *);
+	void (*open)(struct trace_iterator *);
+	void (*pipe_open)(struct trace_iterator *);
+	void (*close)(struct trace_iterator *);
+	void (*pipe_close)(struct trace_iterator *);
+	ssize_t (*read)(struct trace_iterator *, struct file *, char __attribute__((btf_type_tag("user"))) *, size_t, loff_t *);
+	ssize_t (*splice_read)(struct trace_iterator *, struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int);
+	void (*print_header)(struct seq_file *);
+	enum print_line_t (*print_line)(struct trace_iterator *);
+	int (*set_flag)(struct trace_array *, u32, u32, int);
+	int (*flag_changed)(struct trace_array *, u32, int);
+	struct tracer *next;
+	struct tracer_flags *flags;
+	int enabled;
+	bool print_max;
+	bool allow_instances;
+	bool noboot;
+};
+
+struct tracer_opt;
+
+struct tracer_flags {
+	u32 val;
+	struct tracer_opt *opts;
+	struct tracer *trace;
+};
+
+struct tracer_opt {
+	const char *name;
+	u32 bit;
+};
+
+struct trace_option_dentry;
+
+struct trace_options {
+	struct tracer *tracer;
+	struct trace_option_dentry *topts;
+};
+
+struct trace_option_dentry {
+	struct tracer_opt *opt;
+	struct tracer_flags *flags;
+	struct trace_array *tr;
+	struct dentry *entry;
+};
+
+struct filter_pred;
+
+struct prog_entry {
+	int target;
+	int when_to_branch;
+	struct filter_pred *pred;
+};
+
+struct event_subsystem;
+
+struct trace_subsystem_dir {
+	struct list_head list;
+	struct event_subsystem *subsystem;
+	struct trace_array *tr;
+	struct eventfs_inode *ei;
+	int ref_count;
+	int nr_events;
+};
+
+struct event_subsystem {
+	struct list_head list;
+	const char *name;
+	struct event_filter *filter;
+	int ref_count;
+};
+
+struct trace_func_repeats {
+	unsigned long ip;
+	unsigned long parent_ip;
+	unsigned long count;
+	u64 ts_last_call;
+};
+
+struct trace_export {
+	struct trace_export __attribute__((btf_type_tag("rcu"))) *next;
+	void (*write)(struct trace_export *, const void *, unsigned int);
+	int flags;
+};
+
+struct saved_cmdlines_buffer {
+	unsigned int map_pid_to_cmdline[32769];
+	unsigned int *map_cmdline_to_pid;
+	unsigned int cmdline_num;
+	int cmdline_idx;
+	char saved_cmdlines[0];
+};
+
+struct ftrace_stack {
+	unsigned long calls[1024];
+};
+
+struct ftrace_stacks {
+	struct ftrace_stack stacks[4];
+};
+
+struct trace_buffer_struct {
+	int nesting;
+	char buffer[4096];
+};
+
+enum trace_iterator_flags {
+	TRACE_ITER_PRINT_PARENT = 1,
+	TRACE_ITER_SYM_OFFSET = 2,
+	TRACE_ITER_SYM_ADDR = 4,
+	TRACE_ITER_VERBOSE = 8,
+	TRACE_ITER_RAW = 16,
+	TRACE_ITER_HEX = 32,
+	TRACE_ITER_BIN = 64,
+	TRACE_ITER_BLOCK = 128,
+	TRACE_ITER_FIELDS = 256,
+	TRACE_ITER_PRINTK = 512,
+	TRACE_ITER_ANNOTATE = 1024,
+	TRACE_ITER_USERSTACKTRACE = 2048,
+	TRACE_ITER_SYM_USEROBJ = 4096,
+	TRACE_ITER_PRINTK_MSGONLY = 8192,
+	TRACE_ITER_CONTEXT_INFO = 16384,
+	TRACE_ITER_LATENCY_FMT = 32768,
+	TRACE_ITER_RECORD_CMD = 65536,
+	TRACE_ITER_RECORD_TGID = 131072,
+	TRACE_ITER_OVERWRITE = 262144,
+	TRACE_ITER_STOP_ON_FREE = 524288,
+	TRACE_ITER_IRQ_INFO = 1048576,
+	TRACE_ITER_MARKERS = 2097152,
+	TRACE_ITER_EVENT_FORK = 4194304,
+	TRACE_ITER_PAUSE_ON_TRACE = 8388608,
+	TRACE_ITER_HASH_PTR = 16777216,
+	TRACE_ITER_STACKTRACE = 33554432,
+};
+
+enum trace_type {
+	__TRACE_FIRST_TYPE = 0,
+	TRACE_FN = 1,
+	TRACE_CTX = 2,
+	TRACE_WAKE = 3,
+	TRACE_STACK = 4,
+	TRACE_PRINT = 5,
+	TRACE_BPRINT = 6,
+	TRACE_MMIO_RW = 7,
+	TRACE_MMIO_MAP = 8,
+	TRACE_BRANCH = 9,
+	TRACE_GRAPH_RET = 10,
+	TRACE_GRAPH_ENT = 11,
+	TRACE_USER_STACK = 12,
+	TRACE_BLK = 13,
+	TRACE_BPUTS = 14,
+	TRACE_HWLAT = 15,
+	TRACE_OSNOISE = 16,
+	TRACE_TIMERLAT = 17,
+	TRACE_RAW_DATA = 18,
+	TRACE_FUNC_REPEATS = 19,
+	__TRACE_LAST_TYPE = 20,
+};
+
+enum trace_flag_type {
+	TRACE_FLAG_IRQS_OFF = 1,
+	TRACE_FLAG_IRQS_NOSUPPORT = 2,
+	TRACE_FLAG_NEED_RESCHED = 4,
+	TRACE_FLAG_HARDIRQ = 8,
+	TRACE_FLAG_SOFTIRQ = 16,
+	TRACE_FLAG_PREEMPT_RESCHED = 32,
+	TRACE_FLAG_NMI = 64,
+	TRACE_FLAG_BH_OFF = 128,
+};
+
+enum event_trigger_type {
+	ETT_NONE = 0,
+	ETT_TRACE_ONOFF = 1,
+	ETT_SNAPSHOT = 2,
+	ETT_STACKTRACE = 4,
+	ETT_EVENT_ENABLE = 8,
+	ETT_EVENT_HIST = 16,
+	ETT_HIST_ENABLE = 32,
+	ETT_EVENT_EPROBE = 64,
+};
+
+enum trace_iter_flags {
+	TRACE_FILE_LAT_FMT = 1,
+	TRACE_FILE_ANNOTATE = 2,
+	TRACE_FILE_TIME_IN_NS = 4,
+};
+
+enum {
+	EVENT_FILE_FL_ENABLED_BIT = 0,
+	EVENT_FILE_FL_RECORDED_CMD_BIT = 1,
+	EVENT_FILE_FL_RECORDED_TGID_BIT = 2,
+	EVENT_FILE_FL_FILTERED_BIT = 3,
+	EVENT_FILE_FL_NO_SET_FILTER_BIT = 4,
+	EVENT_FILE_FL_SOFT_MODE_BIT = 5,
+	EVENT_FILE_FL_SOFT_DISABLED_BIT = 6,
+	EVENT_FILE_FL_TRIGGER_MODE_BIT = 7,
+	EVENT_FILE_FL_TRIGGER_COND_BIT = 8,
+	EVENT_FILE_FL_PID_FILTER_BIT = 9,
+	EVENT_FILE_FL_WAS_ENABLED_BIT = 10,
+	EVENT_FILE_FL_FREED_BIT = 11,
+};
+
+enum {
+	TRACE_ARRAY_FL_GLOBAL = 1,
+};
+
+struct err_info {
+	const char **errs;
+	u8 type;
+	u16 pos;
+	u64 ts;
+};
+
+struct tracing_log_err {
+	struct list_head list;
+	struct err_info info;
+	char loc[128];
+	char *cmd;
+};
+
+struct buffer_ref {
+	struct trace_buffer *buffer;
+	void *page;
+	int cpu;
+	refcount_t refcount;
+};
+
+struct trace_parser {
+	bool cont;
+	char *buffer;
+	unsigned int idx;
+	unsigned int size;
+};
+
+struct userstack_entry {
+	struct trace_entry ent;
+	unsigned int tgid;
+	unsigned long caller[8];
+};
+
+struct func_repeats_entry {
+	struct trace_entry ent;
+	unsigned long ip;
+	unsigned long parent_ip;
+	u16 count;
+	u16 top_delta_ts;
+	u32 bottom_delta_ts;
+};
+
+typedef struct vfsmount * (*debugfs_automount_t)(struct dentry *, void *);
+
+struct partial_page;
+
+struct splice_pipe_desc {
+	struct page **pages;
+	struct partial_page *partial;
+	int nr_pages;
+	unsigned int nr_pages_max;
+	const struct pipe_buf_operations *ops;
+	void (*spd_release)(struct splice_pipe_desc *, unsigned int);
+};
+
+struct partial_page {
+	unsigned int offset;
+	unsigned int len;
+	unsigned long private;
+};
+
+struct print_entry {
+	struct trace_entry ent;
+	unsigned long ip;
+	char buf[0];
+};
+
+struct bputs_entry {
+	struct trace_entry ent;
+	unsigned long ip;
+	const char *str;
+};
+
+typedef bool (*cond_update_fn_t)(struct trace_array *, void *);
+
+struct ftrace_entry {
+	struct trace_entry ent;
+	unsigned long ip;
+	unsigned long parent_ip;
+};
+
+struct stack_entry {
+	struct trace_entry ent;
+	int size;
+	unsigned long caller[0];
+};
+
+struct bprint_entry {
+	struct trace_entry ent;
+	unsigned long ip;
+	const char *fmt;
+	u32 buf[0];
+};
+
+struct trace_min_max_param {
+	struct mutex *lock;
+	u64 *val;
+	u64 *min;
+	u64 *max;
+};
+
+struct raw_data_entry {
+	struct trace_entry ent;
+	unsigned int id;
+	char buf[0];
+};
+
+struct ftrace_buffer_info {
+	struct trace_iterator iter;
+	void *spare;
+	unsigned int spare_cpu;
+	unsigned int read;
+};
+
+struct trace_mark {
+	unsigned long long val;
+	char sym;
+};
+
+enum {
+	FILTER_OTHER = 0,
+	FILTER_STATIC_STRING = 1,
+	FILTER_DYN_STRING = 2,
+	FILTER_RDYN_STRING = 3,
+	FILTER_PTR_STRING = 4,
+	FILTER_TRACE_FN = 5,
+	FILTER_CPUMASK = 6,
+	FILTER_COMM = 7,
+	FILTER_CPU = 8,
+	FILTER_STACKTRACE = 9,
+};
+
+struct ftrace_event_field {
+	struct list_head link;
+	const char *name;
+	const char *type;
+	int filter_type;
+	int offset;
+	int size;
+	int is_signed;
+	int len;
+};
+
+struct ctx_switch_entry {
+	struct trace_entry ent;
+	unsigned int prev_pid;
+	unsigned int next_pid;
+	unsigned int next_cpu;
+	unsigned char prev_prio;
+	unsigned char prev_state;
+	unsigned char next_prio;
+	unsigned char next_state;
+};
+
+struct hwlat_entry {
+	struct trace_entry ent;
+	u64 duration;
+	u64 outer_duration;
+	u64 nmi_total_ts;
+	struct timespec64 timestamp;
+	unsigned int nmi_count;
+	unsigned int seqnum;
+	unsigned int count;
+};
+
+struct osnoise_entry {
+	struct trace_entry ent;
+	u64 noise;
+	u64 runtime;
+	u64 max_sample;
+	unsigned int hw_count;
+	unsigned int nmi_count;
+	unsigned int irq_count;
+	unsigned int softirq_count;
+	unsigned int thread_count;
+};
+
+struct timerlat_entry {
+	struct trace_entry ent;
+	unsigned int seqnum;
+	int context;
+	u64 timer_latency;
+};
+
+struct tracer_stat;
+
+struct stat_session {
+	struct list_head session_list;
+	struct tracer_stat *ts;
+	struct rb_root stat_root;
+	struct mutex stat_mutex;
+	struct dentry *file;
+};
+
+struct tracer_stat {
+	const char *name;
+	void * (*stat_start)(struct tracer_stat *);
+	void * (*stat_next)(void *, int);
+	cmp_func_t stat_cmp;
+	int (*stat_show)(struct seq_file *, void *);
+	void (*stat_release)(void *);
+	int (*stat_headers)(struct seq_file *);
+};
+
+struct stat_node {
+	struct rb_node node;
+	void *stat;
+};
+
+struct trace_bprintk_fmt {
+	struct list_head list;
+	const char *fmt;
+};
+
+struct tracing_map;
+
+struct tracing_map_field;
+
+struct tracing_map_elt {
+	struct tracing_map *map;
+	struct tracing_map_field *fields;
+	atomic64_t *vars;
+	bool *var_set;
+	void *key;
+	void *private_data;
+};
+
+typedef int (*tracing_map_cmp_fn_t)(void *, void *);
+
+struct tracing_map_field {
+	tracing_map_cmp_fn_t cmp_fn;
+	union {
+		atomic64_t sum;
+		unsigned int offset;
+	};
+};
+
+struct tracing_map_sort_key {
+	unsigned int field_idx;
+	bool descending;
+};
+
+struct tracing_map_array;
+
+struct tracing_map_ops;
+
+struct tracing_map {
+	unsigned int key_size;
+	unsigned int map_bits;
+	unsigned int map_size;
+	unsigned int max_elts;
+	atomic_t next_elt;
+	struct tracing_map_array *elts;
+	struct tracing_map_array *map;
+	const struct tracing_map_ops *ops;
+	void *private_data;
+	struct tracing_map_field fields[6];
+	unsigned int n_fields;
+	int key_idx[3];
+	unsigned int n_keys;
+	struct tracing_map_sort_key sort_key;
+	unsigned int n_vars;
+	atomic64_t hits;
+	atomic64_t drops;
+};
+
+struct tracing_map_array {
+	unsigned int entries_per_page;
+	unsigned int entry_size_shift;
+	unsigned int entry_shift;
+	unsigned int entry_mask;
+	unsigned int n_pages;
+	void **pages;
+};
+
+struct tracing_map_ops {
+	int (*elt_alloc)(struct tracing_map_elt *);
+	void (*elt_free)(struct tracing_map_elt *);
+	void (*elt_clear)(struct tracing_map_elt *);
+	void (*elt_init)(struct tracing_map_elt *);
+};
+
+struct tracing_map_entry {
+	u32 key;
+	struct tracing_map_elt *val;
+};
+
+struct tracing_map_sort_entry {
+	void *key;
+	struct tracing_map_elt *elt;
+	bool elt_copied;
+	bool dup;
+};
+
+enum {
+	TRACE_NOP_OPT_ACCEPT = 1,
+	TRACE_NOP_OPT_REFUSE = 2,
+};
+
+enum req_flag_bits {
+	__REQ_FAILFAST_DEV = 8,
+	__REQ_FAILFAST_TRANSPORT = 9,
+	__REQ_FAILFAST_DRIVER = 10,
+	__REQ_SYNC = 11,
+	__REQ_META = 12,
+	__REQ_PRIO = 13,
+	__REQ_NOMERGE = 14,
+	__REQ_IDLE = 15,
+	__REQ_INTEGRITY = 16,
+	__REQ_FUA = 17,
+	__REQ_PREFLUSH = 18,
+	__REQ_RAHEAD = 19,
+	__REQ_BACKGROUND = 20,
+	__REQ_NOWAIT = 21,
+	__REQ_POLLED = 22,
+	__REQ_ALLOC_CACHE = 23,
+	__REQ_SWAP = 24,
+	__REQ_DRV = 25,
+	__REQ_FS_PRIVATE = 26,
+	__REQ_NOUNMAP = 27,
+	__REQ_NR_BITS = 28,
+};
+
+enum req_op {
+	REQ_OP_READ = 0,
+	REQ_OP_WRITE = 1,
+	REQ_OP_FLUSH = 2,
+	REQ_OP_DISCARD = 3,
+	REQ_OP_SECURE_ERASE = 5,
+	REQ_OP_WRITE_ZEROES = 9,
+	REQ_OP_ZONE_OPEN = 10,
+	REQ_OP_ZONE_CLOSE = 11,
+	REQ_OP_ZONE_FINISH = 12,
+	REQ_OP_ZONE_APPEND = 13,
+	REQ_OP_ZONE_RESET = 15,
+	REQ_OP_ZONE_RESET_ALL = 17,
+	REQ_OP_DRV_IN = 34,
+	REQ_OP_DRV_OUT = 35,
+	REQ_OP_LAST = 36,
+};
+
+struct boot_triggers {
+	const char *event;
+	char *trigger;
+};
+
+typedef int (*eventfs_callback)(const char *, umode_t *, void **, const struct file_operations **);
+
+struct eventfs_entry {
+	const char *name;
+	eventfs_callback callback;
+};
+
+enum {
+	TRACE_PIDS = 1,
+	TRACE_NO_PIDS = 2,
+};
+
+enum {
+	FORMAT_HEADER = 1,
+	FORMAT_FIELD_SEPERATOR = 2,
+	FORMAT_PRINTFMT = 3,
+};
+
+struct module_string {
+	struct list_head next;
+	struct module *module;
+	char *str;
+};
+
+typedef unsigned long perf_trace_t[1024];
+
+struct ustring_buffer {
+	char buffer[1024];
+};
+
+enum regex_type {
+	MATCH_FULL = 0,
+	MATCH_FRONT_ONLY = 1,
+	MATCH_MIDDLE_ONLY = 2,
+	MATCH_END_ONLY = 3,
+	MATCH_GLOB = 4,
+	MATCH_INDEX = 5,
+};
+
+enum filter_pred_fn {
+	FILTER_PRED_FN_NOP = 0,
+	FILTER_PRED_FN_64 = 1,
+	FILTER_PRED_FN_64_CPUMASK = 2,
+	FILTER_PRED_FN_S64 = 3,
+	FILTER_PRED_FN_U64 = 4,
+	FILTER_PRED_FN_32 = 5,
+	FILTER_PRED_FN_32_CPUMASK = 6,
+	FILTER_PRED_FN_S32 = 7,
+	FILTER_PRED_FN_U32 = 8,
+	FILTER_PRED_FN_16 = 9,
+	FILTER_PRED_FN_16_CPUMASK = 10,
+	FILTER_PRED_FN_S16 = 11,
+	FILTER_PRED_FN_U16 = 12,
+	FILTER_PRED_FN_8 = 13,
+	FILTER_PRED_FN_8_CPUMASK = 14,
+	FILTER_PRED_FN_S8 = 15,
+	FILTER_PRED_FN_U8 = 16,
+	FILTER_PRED_FN_COMM = 17,
+	FILTER_PRED_FN_STRING = 18,
+	FILTER_PRED_FN_STRLOC = 19,
+	FILTER_PRED_FN_STRRELLOC = 20,
+	FILTER_PRED_FN_PCHAR_USER = 21,
+	FILTER_PRED_FN_PCHAR = 22,
+	FILTER_PRED_FN_CPU = 23,
+	FILTER_PRED_FN_CPU_CPUMASK = 24,
+	FILTER_PRED_FN_CPUMASK = 25,
+	FILTER_PRED_FN_CPUMASK_CPU = 26,
+	FILTER_PRED_FN_FUNCTION = 27,
+	FILTER_PRED_FN_ = 28,
+	FILTER_PRED_TEST_VISITED = 29,
+};
+
+enum filter_op_ids {
+	OP_GLOB = 0,
+	OP_NE = 1,
+	OP_EQ = 2,
+	OP_LE = 3,
+	OP_LT = 4,
+	OP_GE = 5,
+	OP_GT = 6,
+	OP_BAND = 7,
+	OP_MAX = 8,
+};
+
+enum {
+	TOO_MANY_CLOSE = -1,
+	TOO_MANY_OPEN = -2,
+	MISSING_QUOTE = -3,
+};
+
+enum {
+	FILT_ERR_NONE = 0,
+	FILT_ERR_INVALID_OP = 1,
+	FILT_ERR_TOO_MANY_OPEN = 2,
+	FILT_ERR_TOO_MANY_CLOSE = 3,
+	FILT_ERR_MISSING_QUOTE = 4,
+	FILT_ERR_MISSING_BRACE_OPEN = 5,
+	FILT_ERR_MISSING_BRACE_CLOSE = 6,
+	FILT_ERR_OPERAND_TOO_LONG = 7,
+	FILT_ERR_EXPECT_STRING = 8,
+	FILT_ERR_EXPECT_DIGIT = 9,
+	FILT_ERR_ILLEGAL_FIELD_OP = 10,
+	FILT_ERR_FIELD_NOT_FOUND = 11,
+	FILT_ERR_ILLEGAL_INTVAL = 12,
+	FILT_ERR_BAD_SUBSYS_FILTER = 13,
+	FILT_ERR_TOO_MANY_PREDS = 14,
+	FILT_ERR_INVALID_FILTER = 15,
+	FILT_ERR_INVALID_CPULIST = 16,
+	FILT_ERR_IP_FIELD_ONLY = 17,
+	FILT_ERR_INVALID_VALUE = 18,
+	FILT_ERR_NO_FUNCTION = 19,
+	FILT_ERR_ERRNO = 20,
+	FILT_ERR_NO_FILTER = 21,
+};
+
+enum {
+	INVERT = 1,
+	PROCESS_AND = 2,
+	PROCESS_OR = 4,
+};
+
+struct regex;
+
+struct filter_pred {
+	struct regex *regex;
+	struct cpumask *mask;
+	unsigned short *ops;
+	struct ftrace_event_field *field;
+	u64 val;
+	u64 val2;
+	enum filter_pred_fn fn_num;
+	int offset;
+	int not;
+	int op;
+};
+
+typedef int (*regex_match_func)(char *, struct regex *, int);
+
+struct regex {
+	char pattern[256];
+	int len;
+	int field_len;
+	regex_match_func match;
+};
+
+struct filter_list {
+	struct list_head list;
+	struct event_filter *filter;
+};
+
+struct filter_parse_error {
+	int lasterr;
+	int lasterr_pos;
+};
+
+typedef int (*parse_pred_fn)(const char *, void *, int, struct filter_parse_error *, struct filter_pred **);
+
+struct event_trigger_data;
+
+struct event_trigger_ops;
+
+struct event_command {
+	struct list_head list;
+	char *name;
+	enum event_trigger_type trigger_type;
+	int flags;
+	int (*parse)(struct event_command *, struct trace_event_file *, char *, char *, char *);
+	int (*reg)(char *, struct event_trigger_data *, struct trace_event_file *);
+	void (*unreg)(char *, struct event_trigger_data *, struct trace_event_file *);
+	void (*unreg_all)(struct trace_event_file *);
+	int (*set_filter)(char *, struct event_trigger_data *, struct trace_event_file *);
+	struct event_trigger_ops * (*get_trigger_ops)(char *, char *);
+};
+
+struct event_trigger_data {
+	unsigned long count;
+	int ref;
+	int flags;
+	struct event_trigger_ops *ops;
+	struct event_command *cmd_ops;
+	struct event_filter __attribute__((btf_type_tag("rcu"))) *filter;
+	char *filter_str;
+	void *private_data;
+	bool paused;
+	bool paused_tmp;
+	struct list_head list;
+	char *name;
+	struct list_head named_list;
+	struct event_trigger_data *named_data;
+};
+
+struct event_trigger_ops {
+	void (*trigger)(struct event_trigger_data *, struct trace_buffer *, void *, struct ring_buffer_event *);
+	int (*init)(struct event_trigger_data *);
+	void (*free)(struct event_trigger_data *);
+	int (*print)(struct seq_file *, struct event_trigger_data *);
+};
+
+enum event_command_flags {
+	EVENT_CMD_FL_POST_TRIGGER = 1,
+	EVENT_CMD_FL_NEEDS_REC = 2,
+};
+
+enum {
+	EVENT_TRIGGER_FL_PROBE = 1,
+};
+
+struct enable_trigger_data {
+	struct trace_event_file *file;
+	bool enable;
+	bool hist;
+};
+
+struct dyn_event;
+
+struct dyn_event_operations {
+	struct list_head list;
+	int (*create)(const char *);
+	int (*show)(struct seq_file *, struct dyn_event *);
+	bool (*is_busy)(struct dyn_event *);
+	int (*free)(struct dyn_event *);
+	bool (*match)(const char *, const char *, int, const char **, struct dyn_event *);
+};
+
+struct dyn_event {
+	struct list_head list;
+	struct dyn_event_operations *ops;
+};
+
+enum fetch_op {
+	FETCH_OP_NOP = 0,
+	FETCH_OP_REG = 1,
+	FETCH_OP_STACK = 2,
+	FETCH_OP_STACKP = 3,
+	FETCH_OP_RETVAL = 4,
+	FETCH_OP_IMM = 5,
+	FETCH_OP_COMM = 6,
+	FETCH_OP_ARG = 7,
+	FETCH_OP_FOFFS = 8,
+	FETCH_OP_DATA = 9,
+	FETCH_OP_DEREF = 10,
+	FETCH_OP_UDEREF = 11,
+	FETCH_OP_ST_RAW = 12,
+	FETCH_OP_ST_MEM = 13,
+	FETCH_OP_ST_UMEM = 14,
+	FETCH_OP_ST_STRING = 15,
+	FETCH_OP_ST_USTRING = 16,
+	FETCH_OP_ST_SYMSTR = 17,
+	FETCH_OP_MOD_BF = 18,
+	FETCH_OP_LP_ARRAY = 19,
+	FETCH_OP_TP_ARG = 20,
+	FETCH_OP_END = 21,
+	FETCH_NOP_SYMBOL = 22,
+};
+
+enum {
+	TP_ERR_FILE_NOT_FOUND = 0,
+	TP_ERR_NO_REGULAR_FILE = 1,
+	TP_ERR_BAD_REFCNT = 2,
+	TP_ERR_REFCNT_OPEN_BRACE = 3,
+	TP_ERR_BAD_REFCNT_SUFFIX = 4,
+	TP_ERR_BAD_UPROBE_OFFS = 5,
+	TP_ERR_BAD_MAXACT_TYPE = 6,
+	TP_ERR_BAD_MAXACT = 7,
+	TP_ERR_MAXACT_TOO_BIG = 8,
+	TP_ERR_BAD_PROBE_ADDR = 9,
+	TP_ERR_NON_UNIQ_SYMBOL = 10,
+	TP_ERR_BAD_RETPROBE = 11,
+	TP_ERR_NO_TRACEPOINT = 12,
+	TP_ERR_BAD_ADDR_SUFFIX = 13,
+	TP_ERR_NO_GROUP_NAME = 14,
+	TP_ERR_GROUP_TOO_LONG = 15,
+	TP_ERR_BAD_GROUP_NAME = 16,
+	TP_ERR_NO_EVENT_NAME = 17,
+	TP_ERR_EVENT_TOO_LONG = 18,
+	TP_ERR_BAD_EVENT_NAME = 19,
+	TP_ERR_EVENT_EXIST = 20,
+	TP_ERR_RETVAL_ON_PROBE = 21,
+	TP_ERR_NO_RETVAL = 22,
+	TP_ERR_BAD_STACK_NUM = 23,
+	TP_ERR_BAD_ARG_NUM = 24,
+	TP_ERR_BAD_VAR = 25,
+	TP_ERR_BAD_REG_NAME = 26,
+	TP_ERR_BAD_MEM_ADDR = 27,
+	TP_ERR_BAD_IMM = 28,
+	TP_ERR_IMMSTR_NO_CLOSE = 29,
+	TP_ERR_FILE_ON_KPROBE = 30,
+	TP_ERR_BAD_FILE_OFFS = 31,
+	TP_ERR_SYM_ON_UPROBE = 32,
+	TP_ERR_TOO_MANY_OPS = 33,
+	TP_ERR_DEREF_NEED_BRACE = 34,
+	TP_ERR_BAD_DEREF_OFFS = 35,
+	TP_ERR_DEREF_OPEN_BRACE = 36,
+	TP_ERR_COMM_CANT_DEREF = 37,
+	TP_ERR_BAD_FETCH_ARG = 38,
+	TP_ERR_ARRAY_NO_CLOSE = 39,
+	TP_ERR_BAD_ARRAY_SUFFIX = 40,
+	TP_ERR_BAD_ARRAY_NUM = 41,
+	TP_ERR_ARRAY_TOO_BIG = 42,
+	TP_ERR_BAD_TYPE = 43,
+	TP_ERR_BAD_STRING = 44,
+	TP_ERR_BAD_SYMSTRING = 45,
+	TP_ERR_BAD_BITFIELD = 46,
+	TP_ERR_ARG_NAME_TOO_LONG = 47,
+	TP_ERR_NO_ARG_NAME = 48,
+	TP_ERR_BAD_ARG_NAME = 49,
+	TP_ERR_USED_ARG_NAME = 50,
+	TP_ERR_ARG_TOO_LONG = 51,
+	TP_ERR_NO_ARG_BODY = 52,
+	TP_ERR_BAD_INSN_BNDRY = 53,
+	TP_ERR_FAIL_REG_PROBE = 54,
+	TP_ERR_DIFF_PROBE_TYPE = 55,
+	TP_ERR_DIFF_ARG_TYPE = 56,
+	TP_ERR_SAME_PROBE = 57,
+	TP_ERR_NO_EVENT_INFO = 58,
+	TP_ERR_BAD_ATTACH_EVENT = 59,
+	TP_ERR_BAD_ATTACH_ARG = 60,
+	TP_ERR_NO_EP_FILTER = 61,
+	TP_ERR_NOSUP_BTFARG = 62,
+	TP_ERR_NO_BTFARG = 63,
+	TP_ERR_NO_BTF_ENTRY = 64,
+	TP_ERR_BAD_VAR_ARGS = 65,
+	TP_ERR_NOFENTRY_ARGS = 66,
+	TP_ERR_DOUBLE_ARGS = 67,
+	TP_ERR_ARGS_2LONG = 68,
+	TP_ERR_ARGIDX_2BIG = 69,
+	TP_ERR_NO_PTR_STRCT = 70,
+	TP_ERR_NOSUP_DAT_ARG = 71,
+	TP_ERR_BAD_HYPHEN = 72,
+	TP_ERR_NO_BTF_FIELD = 73,
+	TP_ERR_BAD_BTF_TID = 74,
+	TP_ERR_BAD_TYPE4STR = 75,
+	TP_ERR_NEED_STRING_TYPE = 76,
+};
+
+enum probe_print_type {
+	PROBE_PRINT_NORMAL = 0,
+	PROBE_PRINT_RETURN = 1,
+	PROBE_PRINT_EVENT = 2,
+};
+
+struct eprobe_trace_entry_head {
+	struct trace_entry ent;
+};
+
+struct fetch_insn;
+
+struct fetch_type;
+
+struct probe_arg {
+	struct fetch_insn *code;
+	bool dynamic;
+	unsigned int offset;
+	unsigned int count;
+	const char *name;
+	const char *comm;
+	char *fmt;
+	const struct fetch_type *type;
+};
+
+struct trace_probe_event;
+
+struct trace_probe {
+	struct list_head list;
+	struct trace_probe_event *event;
+	ssize_t size;
+	unsigned int nr_args;
+	struct probe_arg args[0];
+};
+
+struct trace_eprobe {
+	const char *event_system;
+	const char *event_name;
+	char *filter_str;
+	struct trace_event_call *event;
+	struct dyn_event devent;
+	struct trace_probe tp;
+};
+
+struct trace_uprobe_filter {
+	rwlock_t rwlock;
+	int nr_systemwide;
+	struct list_head perf_events;
+};
+
+struct trace_probe_event {
+	unsigned int flags;
+	struct trace_event_class class;
+	struct trace_event_call call;
+	struct list_head files;
+	struct list_head probes;
+	struct trace_uprobe_filter filter[0];
+};
+
+struct fetch_insn {
+	enum fetch_op op;
+	union {
+		unsigned int param;
+		struct {
+			unsigned int size;
+			int offset;
+		};
+		struct {
+			unsigned char basesize;
+			unsigned char lshift;
+			unsigned char rshift;
+		};
+		unsigned long immediate;
+		void *data;
+	};
+};
+
+typedef int (*print_type_func_t)(struct trace_seq *, void *, void *);
+
+struct fetch_type {
+	const char *name;
+	size_t size;
+	bool is_signed;
+	bool is_string;
+	print_type_func_t print;
+	const char *fmt;
+	const char *fmttype;
+};
+
+struct btf_param;
+
+struct traceprobe_parse_context {
+	struct trace_event_call *event;
+	const char *funcname;
+	const struct btf_type *proto;
+	const struct btf_param *params;
+	s32 nr_params;
+	struct btf *btf;
+	const struct btf_type *last_type;
+	u32 last_bitoffs;
+	u32 last_bitsize;
+	unsigned int flags;
+	int offset;
+};
+
+struct btf_param {
+	__u32 name_off;
+	__u32 type;
+};
+
+struct eprobe_data {
+	struct trace_event_file *file;
+	struct trace_eprobe *ep;
+};
+
+struct event_file_link {
+	struct trace_event_file *file;
+	struct list_head list;
+};
+
+enum dynevent_type {
+	DYNEVENT_TYPE_SYNTH = 1,
+	DYNEVENT_TYPE_KPROBE = 2,
+	DYNEVENT_TYPE_NONE = 3,
+};
+
+enum {
+	SYNTH_ERR_BAD_NAME = 0,
+	SYNTH_ERR_INVALID_CMD = 1,
+	SYNTH_ERR_INVALID_DYN_CMD = 2,
+	SYNTH_ERR_EVENT_EXISTS = 3,
+	SYNTH_ERR_TOO_MANY_FIELDS = 4,
+	SYNTH_ERR_INCOMPLETE_TYPE = 5,
+	SYNTH_ERR_INVALID_TYPE = 6,
+	SYNTH_ERR_INVALID_FIELD = 7,
+	SYNTH_ERR_INVALID_ARRAY_SPEC = 8,
+};
+
+struct trace_dynamic_info {
+	u16 offset;
+	u16 len;
+};
+
+union trace_synth_field {
+	u8 as_u8;
+	u16 as_u16;
+	u32 as_u32;
+	u64 as_u64;
+	struct trace_dynamic_info as_dynamic;
+};
+
+struct synth_trace_event {
+	struct trace_entry ent;
+	union trace_synth_field fields[0];
+};
+
+struct synth_field;
+
+struct synth_event {
+	struct dyn_event devent;
+	int ref;
+	char *name;
+	struct synth_field **fields;
+	unsigned int n_fields;
+	struct synth_field **dynamic_fields;
+	unsigned int n_dynamic_fields;
+	unsigned int n_u64;
+	struct trace_event_class class;
+	struct trace_event_call call;
+	struct tracepoint *tp;
+	struct module *mod;
+};
+
+struct synth_field {
+	char *type;
+	char *name;
+	size_t size;
+	unsigned int offset;
+	unsigned int field_pos;
+	bool is_signed;
+	bool is_string;
+	bool is_dynamic;
+	bool is_stack;
+};
+
+struct dynevent_arg_pair {
+	const char *lhs;
+	const char *rhs;
+	char operator;
+	char separator;
+};
+
+struct dynevent_cmd;
+
+typedef int (*dynevent_create_fn_t)(struct dynevent_cmd *);
+
+struct dynevent_cmd {
+	struct seq_buf seq;
+	const char *event_name;
+	unsigned int n_fields;
+	enum dynevent_type type;
+	dynevent_create_fn_t run_command;
+	void *private_data;
+};
+
+typedef int (*dynevent_check_arg_fn_t)(void *);
+
+struct dynevent_arg {
+	const char *str;
+	char separator;
+};
+
+struct synth_event_trace_state {
+	struct trace_event_buffer fbuffer;
+	struct synth_trace_event *entry;
+	struct trace_buffer *buffer;
+	struct synth_event *event;
+	unsigned int cur_field;
+	unsigned int n_u64;
+	bool disabled;
+	bool add_next;
+	bool add_name;
+};
+
+struct synth_field_desc {
+	const char *type;
+	const char *name;
+};
+
+enum hist_field_fn {
+	HIST_FIELD_FN_NOP = 0,
+	HIST_FIELD_FN_VAR_REF = 1,
+	HIST_FIELD_FN_COUNTER = 2,
+	HIST_FIELD_FN_CONST = 3,
+	HIST_FIELD_FN_LOG2 = 4,
+	HIST_FIELD_FN_BUCKET = 5,
+	HIST_FIELD_FN_TIMESTAMP = 6,
+	HIST_FIELD_FN_CPU = 7,
+	HIST_FIELD_FN_STRING = 8,
+	HIST_FIELD_FN_DYNSTRING = 9,
+	HIST_FIELD_FN_RELDYNSTRING = 10,
+	HIST_FIELD_FN_PSTRING = 11,
+	HIST_FIELD_FN_S64 = 12,
+	HIST_FIELD_FN_U64 = 13,
+	HIST_FIELD_FN_S32 = 14,
+	HIST_FIELD_FN_U32 = 15,
+	HIST_FIELD_FN_S16 = 16,
+	HIST_FIELD_FN_U16 = 17,
+	HIST_FIELD_FN_S8 = 18,
+	HIST_FIELD_FN_U8 = 19,
+	HIST_FIELD_FN_UMINUS = 20,
+	HIST_FIELD_FN_MINUS = 21,
+	HIST_FIELD_FN_PLUS = 22,
+	HIST_FIELD_FN_DIV = 23,
+	HIST_FIELD_FN_MULT = 24,
+	HIST_FIELD_FN_DIV_POWER2 = 25,
+	HIST_FIELD_FN_DIV_NOT_POWER2 = 26,
+	HIST_FIELD_FN_DIV_MULT_SHIFT = 27,
+	HIST_FIELD_FN_EXECNAME = 28,
+	HIST_FIELD_FN_STACK = 29,
+};
+
+enum field_op_id {
+	FIELD_OP_NONE = 0,
+	FIELD_OP_PLUS = 1,
+	FIELD_OP_MINUS = 2,
+	FIELD_OP_UNARY_MINUS = 3,
+	FIELD_OP_DIV = 4,
+	FIELD_OP_MULT = 5,
+};
+
+enum handler_id {
+	HANDLER_ONMATCH = 1,
+	HANDLER_ONMAX = 2,
+	HANDLER_ONCHANGE = 3,
+};
+
+enum action_id {
+	ACTION_SAVE = 1,
+	ACTION_TRACE = 2,
+	ACTION_SNAPSHOT = 3,
+};
+
+enum hist_field_flags {
+	HIST_FIELD_FL_HITCOUNT = 1,
+	HIST_FIELD_FL_KEY = 2,
+	HIST_FIELD_FL_STRING = 4,
+	HIST_FIELD_FL_HEX = 8,
+	HIST_FIELD_FL_SYM = 16,
+	HIST_FIELD_FL_SYM_OFFSET = 32,
+	HIST_FIELD_FL_EXECNAME = 64,
+	HIST_FIELD_FL_SYSCALL = 128,
+	HIST_FIELD_FL_STACKTRACE = 256,
+	HIST_FIELD_FL_LOG2 = 512,
+	HIST_FIELD_FL_TIMESTAMP = 1024,
+	HIST_FIELD_FL_TIMESTAMP_USECS = 2048,
+	HIST_FIELD_FL_VAR = 4096,
+	HIST_FIELD_FL_EXPR = 8192,
+	HIST_FIELD_FL_VAR_REF = 16384,
+	HIST_FIELD_FL_CPU = 32768,
+	HIST_FIELD_FL_ALIAS = 65536,
+	HIST_FIELD_FL_BUCKET = 131072,
+	HIST_FIELD_FL_CONST = 262144,
+	HIST_FIELD_FL_PERCENT = 524288,
+	HIST_FIELD_FL_GRAPH = 1048576,
+};
+
+enum {
+	HIST_ERR_NONE = 0,
+	HIST_ERR_DUPLICATE_VAR = 1,
+	HIST_ERR_VAR_NOT_UNIQUE = 2,
+	HIST_ERR_TOO_MANY_VARS = 3,
+	HIST_ERR_MALFORMED_ASSIGNMENT = 4,
+	HIST_ERR_NAMED_MISMATCH = 5,
+	HIST_ERR_TRIGGER_EEXIST = 6,
+	HIST_ERR_TRIGGER_ENOENT_CLEAR = 7,
+	HIST_ERR_SET_CLOCK_FAIL = 8,
+	HIST_ERR_BAD_FIELD_MODIFIER = 9,
+	HIST_ERR_TOO_MANY_SUBEXPR = 10,
+	HIST_ERR_TIMESTAMP_MISMATCH = 11,
+	HIST_ERR_TOO_MANY_FIELD_VARS = 12,
+	HIST_ERR_EVENT_FILE_NOT_FOUND = 13,
+	HIST_ERR_HIST_NOT_FOUND = 14,
+	HIST_ERR_HIST_CREATE_FAIL = 15,
+	HIST_ERR_SYNTH_VAR_NOT_FOUND = 16,
+	HIST_ERR_SYNTH_EVENT_NOT_FOUND = 17,
+	HIST_ERR_SYNTH_TYPE_MISMATCH = 18,
+	HIST_ERR_SYNTH_COUNT_MISMATCH = 19,
+	HIST_ERR_FIELD_VAR_PARSE_FAIL = 20,
+	HIST_ERR_VAR_CREATE_FIND_FAIL = 21,
+	HIST_ERR_ONX_NOT_VAR = 22,
+	HIST_ERR_ONX_VAR_NOT_FOUND = 23,
+	HIST_ERR_ONX_VAR_CREATE_FAIL = 24,
+	HIST_ERR_FIELD_VAR_CREATE_FAIL = 25,
+	HIST_ERR_TOO_MANY_PARAMS = 26,
+	HIST_ERR_PARAM_NOT_FOUND = 27,
+	HIST_ERR_INVALID_PARAM = 28,
+	HIST_ERR_ACTION_NOT_FOUND = 29,
+	HIST_ERR_NO_SAVE_PARAMS = 30,
+	HIST_ERR_TOO_MANY_SAVE_ACTIONS = 31,
+	HIST_ERR_ACTION_MISMATCH = 32,
+	HIST_ERR_NO_CLOSING_PAREN = 33,
+	HIST_ERR_SUBSYS_NOT_FOUND = 34,
+	HIST_ERR_INVALID_SUBSYS_EVENT = 35,
+	HIST_ERR_INVALID_REF_KEY = 36,
+	HIST_ERR_VAR_NOT_FOUND = 37,
+	HIST_ERR_FIELD_NOT_FOUND = 38,
+	HIST_ERR_EMPTY_ASSIGNMENT = 39,
+	HIST_ERR_INVALID_SORT_MODIFIER = 40,
+	HIST_ERR_EMPTY_SORT_FIELD = 41,
+	HIST_ERR_TOO_MANY_SORT_FIELDS = 42,
+	HIST_ERR_INVALID_SORT_FIELD = 43,
+	HIST_ERR_INVALID_STR_OPERAND = 44,
+	HIST_ERR_EXPECT_NUMBER = 45,
+	HIST_ERR_UNARY_MINUS_SUBEXPR = 46,
+	HIST_ERR_DIVISION_BY_ZERO = 47,
+	HIST_ERR_NEED_NOHC_VAL = 48,
+};
+
+struct hist_trigger_data;
+
+struct hist_var_data {
+	struct list_head list;
+	struct hist_trigger_data *hist_data;
+};
+
+struct hist_field;
+
+struct hist_trigger_attrs;
+
+struct action_data;
+
+struct field_var;
+
+struct field_var_hist;
+
+struct hist_trigger_data {
+	struct hist_field *fields[22];
+	unsigned int n_vals;
+	unsigned int n_keys;
+	unsigned int n_fields;
+	unsigned int n_vars;
+	unsigned int n_var_str;
+	unsigned int key_size;
+	struct tracing_map_sort_key sort_keys[2];
+	unsigned int n_sort_keys;
+	struct trace_event_file *event_file;
+	struct hist_trigger_attrs *attrs;
+	struct tracing_map *map;
+	bool enable_timestamps;
+	bool remove;
+	struct hist_field *var_refs[16];
+	unsigned int n_var_refs;
+	struct action_data *actions[8];
+	unsigned int n_actions;
+	struct field_var *field_vars[64];
+	unsigned int n_field_vars;
+	unsigned int n_field_var_str;
+	struct field_var_hist *field_var_hists[64];
+	unsigned int n_field_var_hists;
+	struct field_var *save_vars[64];
+	unsigned int n_save_vars;
+	unsigned int n_save_var_str;
+};
+
+struct hist_var {
+	char *name;
+	struct hist_trigger_data *hist_data;
+	unsigned int idx;
+};
+
+struct hist_field {
+	struct ftrace_event_field *field;
+	unsigned long flags;
+	unsigned long buckets;
+	const char *type;
+	struct hist_field *operands[2];
+	struct hist_trigger_data *hist_data;
+	enum hist_field_fn fn_num;
+	unsigned int ref;
+	unsigned int size;
+	unsigned int offset;
+	unsigned int is_signed;
+	struct hist_var var;
+	enum field_op_id operator;
+	char *system;
+	char *event_name;
+	char *name;
+	unsigned int var_ref_idx;
+	bool read_once;
+	unsigned int var_str_idx;
+	u64 constant;
+	u64 div_multiplier;
+};
+
+struct var_defs {
+	unsigned int n_vars;
+	char *name[16];
+	char *expr[16];
+};
+
+struct hist_trigger_attrs {
+	char *keys_str;
+	char *vals_str;
+	char *sort_key_str;
+	char *name;
+	char *clock;
+	bool pause;
+	bool cont;
+	bool clear;
+	bool ts_in_usecs;
+	bool no_hitcount;
+	unsigned int map_bits;
+	char *assignment_str[16];
+	unsigned int n_assignments;
+	char *action_str[8];
+	unsigned int n_actions;
+	struct var_defs var_defs;
+};
+
+typedef bool (*check_track_val_fn_t)(u64, u64);
+
+typedef void (*action_fn_t)(struct hist_trigger_data *, struct tracing_map_elt *, struct trace_buffer *, void *, struct ring_buffer_event *, void *, struct action_data *, u64 *);
+
+struct action_data {
+	enum handler_id handler;
+	enum action_id action;
+	char *action_name;
+	action_fn_t fn;
+	unsigned int n_params;
+	char *params[64];
+	unsigned int var_ref_idx[64];
+	struct synth_event *synth_event;
+	bool use_trace_keyword;
+	char *synth_event_name;
+	union {
+		struct {
+			char *event;
+			char *event_system;
+		} match_data;
+		struct {
+			char *var_str;
+			struct hist_field *var_ref;
+			struct hist_field *track_var;
+			check_track_val_fn_t check_val;
+			action_fn_t save_data;
+		} track_data;
+	};
+};
+
+struct field_var {
+	struct hist_field *var;
+	struct hist_field *val;
+};
+
+struct field_var_hist {
+	struct hist_trigger_data *hist_data;
+	char *cmd;
+};
+
+struct hist_val_stat {
+	u64 max;
+	u64 total;
+};
+
+struct hist_elt_data {
+	char *comm;
+	u64 *var_ref_vals;
+	char **field_var_str;
+	int n_field_var_str;
+};
+
+typedef void (*synth_probe_func_t)(void *, u64 *, unsigned int *);
+
+struct track_data {
+	u64 track_val;
+	bool updated;
+	unsigned int key_len;
+	void *key;
+	struct tracing_map_elt elt;
+	struct action_data *action_data;
+	struct hist_trigger_data *hist_data;
+};
+
+struct bpf_mem_caches;
+
+struct bpf_mem_cache;
+
+struct bpf_mem_alloc {
+	struct bpf_mem_caches __attribute__((btf_type_tag("percpu"))) *caches;
+	struct bpf_mem_cache __attribute__((btf_type_tag("percpu"))) *cache;
+	bool percpu;
+	struct work_struct work;
+};
+
+struct bpf_local_storage_map_bucket;
+
+struct bpf_local_storage_map {
+	struct bpf_map map;
+	struct bpf_local_storage_map_bucket *buckets;
+	u32 bucket_log;
+	u16 elem_size;
+	u16 cache_idx;
+	struct bpf_mem_alloc selem_ma;
+	struct bpf_mem_alloc storage_ma;
+	bool bpf_ma;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct bpf_local_storage_map_bucket {
+	struct hlist_head list;
+	raw_spinlock_t lock;
+};
+
+struct bpf_mem_cache {
+	struct llist_head free_llist;
+	local_t active;
+	struct llist_head free_llist_extra;
+	struct irq_work refill_work;
+	struct obj_cgroup *objcg;
+	int unit_size;
+	int free_cnt;
+	int low_watermark;
+	int high_watermark;
+	int batch;
+	int percpu_size;
+	bool draining;
+	struct bpf_mem_cache *tgt;
+	struct llist_head free_by_rcu;
+	struct llist_node *free_by_rcu_tail;
+	struct llist_head waiting_for_gp;
+	struct llist_node *waiting_for_gp_tail;
+	struct callback_head rcu;
+	atomic_t call_rcu_in_progress;
+	struct llist_head free_llist_extra_rcu;
+	struct llist_head free_by_rcu_ttrace;
+	struct llist_head waiting_for_gp_ttrace;
+	struct callback_head rcu_ttrace;
+	atomic_t call_rcu_ttrace_in_progress;
+};
+
+struct bpf_mem_caches {
+	struct bpf_mem_cache cache[11];
+};
+
+struct bpf_local_storage_data {
+	struct bpf_local_storage_map __attribute__((btf_type_tag("rcu"))) *smap;
+	u8 data[0];
+};
+
+struct bpf_id_pair {
+	u32 old;
+	u32 cur;
+};
+
+struct bpf_idmap {
+	u32 tmp_id_gen;
+	struct bpf_id_pair map[600];
+};
+
+struct bpf_idset {
+	u32 count;
+	u32 ids[600];
+};
+
+struct bpf_verifier_log {
+	u64 start_pos;
+	u64 end_pos;
+	char __attribute__((btf_type_tag("user"))) *ubuf;
+	u32 level;
+	u32 len_total;
+	u32 len_max;
+	char kbuf[1024];
+};
+
+struct bpf_subprog_info {
+	u32 start;
+	u32 linfo_idx;
+	u16 stack_depth;
+	bool has_tail_call;
+	bool tail_call_reachable;
+	bool has_ld_abs;
+	bool is_async_cb;
+	u64 android_kabi_reserved1;
+};
+
+struct backtrack_state {
+	struct bpf_verifier_env *env;
+	u32 frame;
+	u32 reg_masks[8];
+	u64 stack_masks[8];
+};
+
+typedef sockptr_t bpfptr_t;
+
+struct bpf_verifier_ops;
+
+struct bpf_verifier_stack_elem;
+
+struct bpf_verifier_state;
+
+struct bpf_verifier_state_list;
+
+struct bpf_insn_aux_data;
+
+struct bpf_verifier_env {
+	u32 insn_idx;
+	u32 prev_insn_idx;
+	struct bpf_prog *prog;
+	const struct bpf_verifier_ops *ops;
+	struct bpf_verifier_stack_elem *head;
+	int stack_size;
+	bool strict_alignment;
+	bool test_state_freq;
+	struct bpf_verifier_state *cur_state;
+	struct bpf_verifier_state_list **explored_states;
+	struct bpf_verifier_state_list *free_list;
+	struct bpf_map *used_maps[64];
+	struct btf_mod_pair used_btfs[64];
+	u32 used_map_cnt;
+	u32 used_btf_cnt;
+	u32 id_gen;
+	bool explore_alu_limits;
+	bool allow_ptr_leaks;
+	bool allow_uninit_stack;
+	bool bpf_capable;
+	bool bypass_spec_v1;
+	bool bypass_spec_v4;
+	bool seen_direct_write;
+	struct bpf_insn_aux_data *insn_aux_data;
+	const struct bpf_line_info *prev_linfo;
+	struct bpf_verifier_log log;
+	struct bpf_subprog_info subprog_info[257];
+	union {
+		struct bpf_idmap idmap_scratch;
+		struct bpf_idset idset_scratch;
+	};
+	struct {
+		int *insn_state;
+		int *insn_stack;
+		int cur_stack;
+	} cfg;
+	struct backtrack_state bt;
+	u32 pass_cnt;
+	u32 subprog_cnt;
+	u32 prev_insn_processed;
+	u32 insn_processed;
+	u32 prev_jmps_processed;
+	u32 jmps_processed;
+	u64 verification_time;
+	u32 max_states_per_insn;
+	u32 total_states;
+	u32 peak_states;
+	u32 longest_mark_read_walk;
+	bpfptr_t fd_array;
+	u32 scratched_regs;
+	u64 scratched_stack_slots;
+	u64 prev_log_pos;
+	u64 prev_insn_print_pos;
+	char tmp_str_buf[320];
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+enum bpf_access_type {
+	BPF_READ = 1,
+	BPF_WRITE = 2,
+};
+
+struct bpf_insn_access_aux;
+
+struct bpf_reg_state;
+
+struct bpf_verifier_ops {
+	const struct bpf_func_proto * (*get_func_proto)(enum bpf_func_id, const struct bpf_prog *);
+	bool (*is_valid_access)(int, int, enum bpf_access_type, const struct bpf_prog *, struct bpf_insn_access_aux *);
+	int (*gen_prologue)(struct bpf_insn *, bool, const struct bpf_prog *);
+	int (*gen_ld_abs)(const struct bpf_insn *, struct bpf_insn *);
+	u32 (*convert_ctx_access)(enum bpf_access_type, const struct bpf_insn *, struct bpf_insn *, struct bpf_prog *, u32 *);
+	int (*btf_struct_access)(struct bpf_verifier_log *, const struct bpf_reg_state *, int, int);
+	u64 android_kabi_reserved1;
+};
+
+struct bpf_insn_access_aux {
+	enum bpf_reg_type reg_type;
+	union {
+		int ctx_field_size;
+		struct {
+			struct btf *btf;
+			u32 btf_id;
+		};
+	};
+	struct bpf_verifier_log *log;
+};
+
+enum bpf_dynptr_type {
+	BPF_DYNPTR_TYPE_INVALID = 0,
+	BPF_DYNPTR_TYPE_LOCAL = 1,
+	BPF_DYNPTR_TYPE_RINGBUF = 2,
+	BPF_DYNPTR_TYPE_SKB = 3,
+	BPF_DYNPTR_TYPE_XDP = 4,
+};
+
+enum bpf_iter_state {
+	BPF_ITER_STATE_INVALID = 0,
+	BPF_ITER_STATE_ACTIVE = 1,
+	BPF_ITER_STATE_DRAINED = 2,
+};
+
+struct tnum {
+	u64 value;
+	u64 mask;
+};
+
+enum bpf_reg_liveness {
+	REG_LIVE_NONE = 0,
+	REG_LIVE_READ32 = 1,
+	REG_LIVE_READ64 = 2,
+	REG_LIVE_READ = 3,
+	REG_LIVE_WRITTEN = 4,
+	REG_LIVE_DONE = 8,
+};
+
+struct bpf_reg_state {
+	enum bpf_reg_type type;
+	s32 off;
+	union {
+		int range;
+		struct {
+			struct bpf_map *map_ptr;
+			u32 map_uid;
+		};
+		struct {
+			struct btf *btf;
+			u32 btf_id;
+		};
+		struct {
+			u32 mem_size;
+			u32 dynptr_id;
+		};
+		struct {
+			enum bpf_dynptr_type type;
+			bool first_slot;
+		} dynptr;
+		struct {
+			struct btf *btf;
+			u32 btf_id;
+			enum bpf_iter_state state: 2;
+			int depth: 30;
+		} iter;
+		struct {
+			unsigned long raw1;
+			unsigned long raw2;
+		} raw;
+		u32 subprogno;
+	};
+	struct tnum var_off;
+	s64 smin_value;
+	s64 smax_value;
+	u64 umin_value;
+	u64 umax_value;
+	s32 s32_min_value;
+	s32 s32_max_value;
+	u32 u32_min_value;
+	u32 u32_max_value;
+	u32 id;
+	u32 ref_obj_id;
+	struct bpf_reg_state *parent;
+	u32 frameno;
+	s32 subreg_def;
+	enum bpf_reg_liveness live;
+	bool precise;
+};
+
+struct bpf_active_lock {
+	void *ptr;
+	u32 id;
+};
+
+struct bpf_idx_pair;
+
+struct bpf_verifier_state {
+	struct bpf_func_state *frame[8];
+	struct bpf_verifier_state *parent;
+	u32 branches;
+	u32 insn_idx;
+	u32 curframe;
+	struct bpf_active_lock active_lock;
+	bool speculative;
+	bool active_rcu_lock;
+	bool used_as_loop_entry;
+	u32 first_insn_idx;
+	u32 last_insn_idx;
+	struct bpf_verifier_state *loop_entry;
+	struct bpf_idx_pair *jmp_history;
+	u32 jmp_history_cnt;
+	u32 dfs_depth;
+	u32 callback_unroll_depth;
+};
+
+struct bpf_reference_state;
+
+struct bpf_stack_state;
+
+struct bpf_func_state {
+	struct bpf_reg_state regs[11];
+	int callsite;
+	u32 frameno;
+	u32 subprogno;
+	u32 async_entry_cnt;
+	bool in_callback_fn;
+	struct tnum callback_ret_range;
+	bool in_async_callback_fn;
+	u32 callback_depth;
+	int acquired_refs;
+	struct bpf_reference_state *refs;
+	int allocated_stack;
+	struct bpf_stack_state *stack;
+};
+
+struct bpf_reference_state {
+	int id;
+	int insn_idx;
+	int callback_ref;
+};
+
+struct bpf_stack_state {
+	struct bpf_reg_state spilled_ptr;
+	u8 slot_type[8];
+};
+
+struct bpf_idx_pair {
+	u32 prev_idx;
+	u32 idx;
+};
+
+struct bpf_verifier_state_list {
+	struct bpf_verifier_state state;
+	struct bpf_verifier_state_list *next;
+	int miss_cnt;
+	int hit_cnt;
+};
+
+struct bpf_loop_inline_state {
+	unsigned int initialized: 1;
+	unsigned int fit_for_inline: 1;
+	u32 callback_subprogno;
+};
+
+struct btf_struct_meta;
+
+struct bpf_insn_aux_data {
+	union {
+		enum bpf_reg_type ptr_type;
+		unsigned long map_ptr_state;
+		s32 call_imm;
+		u32 alu_limit;
+		struct {
+			u32 map_index;
+			u32 map_off;
+		};
+		struct {
+			enum bpf_reg_type reg_type;
+			union {
+				struct {
+					struct btf *btf;
+					u32 btf_id;
+				};
+				u32 mem_size;
+			};
+		} btf_var;
+		struct bpf_loop_inline_state loop_inline_state;
+	};
+	union {
+		u64 obj_new_size;
+		u64 insert_off;
+	};
+	struct btf_struct_meta *kptr_struct_meta;
+	u64 map_key_state;
+	int ctx_field_size;
+	u32 seen;
+	bool sanitize_stack_spill;
+	bool zext_dst;
+	bool storage_get_func_atomic;
+	bool is_iter_next;
+	u8 alu_state;
+	unsigned int orig_idx;
+	bool jmp_point;
+	bool prune_point;
+	bool force_checkpoint;
+	bool calls_callback;
+};
+
+struct btf_struct_meta {
+	u32 btf_id;
+	struct btf_record *record;
+};
+
+typedef void (*btf_trace_bpf_trace_printk)(void *, const char *);
+
+struct bpf_nested_pt_regs {
+	struct pt_regs regs[3];
+};
+
+struct bpf_trace_sample_data {
+	struct perf_sample_data sds[3];
+};
+
+struct send_signal_irq_work {
+	struct irq_work irq_work;
+	struct task_struct *task;
+	u32 sig;
+	enum pid_type type;
+};
+
+struct bpf_raw_tp_regs {
+	struct pt_regs regs[3];
+};
+
+enum key_lookup_flag {
+	KEY_LOOKUP_CREATE = 1,
+	KEY_LOOKUP_PARTIAL = 2,
+	KEY_LOOKUP_ALL = 3,
+};
+
+enum key_need_perm {
+	KEY_NEED_UNSPECIFIED = 0,
+	KEY_NEED_VIEW = 1,
+	KEY_NEED_READ = 2,
+	KEY_NEED_WRITE = 3,
+	KEY_NEED_SEARCH = 4,
+	KEY_NEED_LINK = 5,
+	KEY_NEED_SETATTR = 6,
+	KEY_NEED_UNLINK = 7,
+	KEY_SYSADMIN_OVERRIDE = 8,
+	KEY_AUTHTOKEN_OVERRIDE = 9,
+	KEY_DEFER_PERM_CHECK = 10,
+};
+
+enum bpf_task_fd_type {
+	BPF_FD_TYPE_RAW_TRACEPOINT = 0,
+	BPF_FD_TYPE_TRACEPOINT = 1,
+	BPF_FD_TYPE_KPROBE = 2,
+	BPF_FD_TYPE_KRETPROBE = 3,
+	BPF_FD_TYPE_UPROBE = 4,
+	BPF_FD_TYPE_URETPROBE = 5,
+};
+
+enum uprobe_filter_ctx {
+	UPROBE_FILTER_REGISTER = 0,
+	UPROBE_FILTER_UNREGISTER = 1,
+	UPROBE_FILTER_MMAP = 2,
+};
+
+enum {
+	BPF_F_UPROBE_MULTI_RETURN = 1,
+};
+
+enum {
+	BTF_F_COMPACT = 1,
+	BTF_F_NONAME = 2,
+	BTF_F_PTR_RAW = 4,
+	BTF_F_ZERO = 8,
+};
+
+enum {
+	BPF_F_INDEX_MASK = 4294967295ULL,
+	BPF_F_CURRENT_CPU = 4294967295ULL,
+	BPF_F_CTXLEN_MASK = 4503595332403200ULL,
+};
+
+enum {
+	BPF_F_GET_BRANCH_RECORDS_SIZE = 1,
+};
+
+typedef u64 (*btf_bpf_probe_read_user)(void *, u32, const void __attribute__((btf_type_tag("user"))) *);
+
+typedef u64 (*btf_bpf_probe_read_user_str)(void *, u32, const void __attribute__((btf_type_tag("user"))) *);
+
+typedef u64 (*btf_bpf_probe_read_kernel)(void *, u32, const void *);
+
+typedef u64 (*btf_bpf_probe_read_kernel_str)(void *, u32, const void *);
+
+typedef u64 (*btf_bpf_probe_read_compat)(void *, u32, const void *);
+
+typedef u64 (*btf_bpf_probe_read_compat_str)(void *, u32, const void *);
+
+typedef u64 (*btf_bpf_probe_write_user)(void __attribute__((btf_type_tag("user"))) *, const void *, u32);
+
+typedef u64 (*btf_bpf_trace_printk)(char *, u32, u64, u64, u64);
+
+typedef u64 (*btf_bpf_trace_vprintk)(char *, u32, const void *, u32);
+
+typedef u64 (*btf_bpf_seq_printf)(struct seq_file *, char *, u32, const void *, u32);
+
+typedef u64 (*btf_bpf_seq_write)(struct seq_file *, const void *, u32);
+
+struct btf_ptr;
+
+typedef u64 (*btf_bpf_seq_printf_btf)(struct seq_file *, struct btf_ptr *, u32, u64);
+
+struct btf_ptr {
+	void *ptr;
+	__u32 type_id;
+	__u32 flags;
+};
+
+typedef u64 (*btf_bpf_perf_event_read)(struct bpf_map *, u64);
+
+struct bpf_perf_event_value;
+
+typedef u64 (*btf_bpf_perf_event_read_value)(struct bpf_map *, u64, struct bpf_perf_event_value *, u32);
+
+struct bpf_perf_event_value {
+	__u64 counter;
+	__u64 enabled;
+	__u64 running;
+};
+
+typedef u64 (*btf_bpf_perf_event_output)(struct pt_regs *, struct bpf_map *, u64, void *, u64);
+
+typedef u64 (*btf_bpf_get_current_task)();
+
+typedef u64 (*btf_bpf_get_current_task_btf)();
+
+typedef u64 (*btf_bpf_task_pt_regs)(struct task_struct *);
+
+typedef u64 (*btf_bpf_current_task_under_cgroup)(struct bpf_map *, u32);
+
+typedef u64 (*btf_bpf_send_signal)(u32);
+
+typedef u64 (*btf_bpf_send_signal_thread)(u32);
+
+typedef u64 (*btf_bpf_d_path)(struct path *, char *, u32);
+
+typedef u64 (*btf_bpf_snprintf_btf)(char *, u32, struct btf_ptr *, u32, u64);
+
+typedef u64 (*btf_bpf_get_func_ip_tracing)(void *);
+
+typedef u64 (*btf_bpf_get_func_ip_kprobe)(struct pt_regs *);
+
+typedef u64 (*btf_bpf_get_func_ip_kprobe_multi)(struct pt_regs *);
+
+typedef u64 (*btf_bpf_get_attach_cookie_kprobe_multi)(struct pt_regs *);
+
+typedef u64 (*btf_bpf_get_func_ip_uprobe_multi)(struct pt_regs *);
+
+typedef u64 (*btf_bpf_get_attach_cookie_uprobe_multi)(struct pt_regs *);
+
+typedef u64 (*btf_bpf_get_attach_cookie_trace)(void *);
+
+struct bpf_perf_event_data_kern;
+
+typedef u64 (*btf_bpf_get_attach_cookie_pe)(struct bpf_perf_event_data_kern *);
+
+typedef struct pt_regs bpf_user_pt_regs_t;
+
+struct bpf_perf_event_data_kern {
+	bpf_user_pt_regs_t *regs;
+	struct perf_sample_data *data;
+	struct perf_event *event;
+};
+
+typedef u64 (*btf_bpf_get_attach_cookie_tracing)(void *);
+
+typedef u64 (*btf_bpf_get_branch_snapshot)(void *, u32, u64);
+
+typedef u64 (*btf_get_func_arg)(void *, u32, u64 *);
+
+typedef u64 (*btf_get_func_ret)(void *, u64 *);
+
+typedef u64 (*btf_get_func_arg_cnt)(void *);
+
+typedef u64 (*btf_bpf_perf_event_output_tp)(void *, struct bpf_map *, u64, void *, u64);
+
+typedef u64 (*btf_bpf_get_stackid_tp)(void *, struct bpf_map *, u64);
+
+typedef u64 (*btf_bpf_get_stack_tp)(void *, void *, u32, u64);
+
+typedef u64 (*btf_bpf_perf_prog_read_value)(struct bpf_perf_event_data_kern *, struct bpf_perf_event_value *, u32);
+
+typedef u64 (*btf_bpf_read_branch_records)(struct bpf_perf_event_data_kern *, void *, u32, u64);
+
+struct bpf_raw_tracepoint_args;
+
+typedef u64 (*btf_bpf_perf_event_output_raw_tp)(struct bpf_raw_tracepoint_args *, struct bpf_map *, u64, void *, u64);
+
+struct bpf_raw_tracepoint_args {
+	__u64 args[0];
+};
+
+typedef u64 (*btf_bpf_get_stackid_raw_tp)(struct bpf_raw_tracepoint_args *, struct bpf_map *, u64);
+
+typedef u64 (*btf_bpf_get_stack_raw_tp)(struct bpf_raw_tracepoint_args *, void *, u32, u64);
+
+struct trace_event_raw_bpf_trace_printk {
+	struct trace_entry ent;
+	u32 __data_loc_bpf_string;
+	char __data[0];
+};
+
+struct bpf_trace_run_ctx {
+	struct bpf_run_ctx run_ctx;
+	u64 bpf_cookie;
+	bool is_uprobe;
+};
+
+struct trace_uprobe;
+
+struct uprobe_dispatch_data {
+	struct trace_uprobe *tu;
+	unsigned long bp_addr;
+};
+
+struct bpf_uprobe;
+
+struct bpf_uprobe_multi_run_ctx {
+	struct bpf_run_ctx run_ctx;
+	unsigned long entry_ip;
+	struct bpf_uprobe *uprobe;
+};
+
+struct uprobe_consumer {
+	int (*handler)(struct uprobe_consumer *, struct pt_regs *);
+	int (*ret_handler)(struct uprobe_consumer *, unsigned long, struct pt_regs *);
+	bool (*filter)(struct uprobe_consumer *, enum uprobe_filter_ctx, struct mm_struct *);
+	struct uprobe_consumer *next;
+};
+
+struct bpf_uprobe_multi_link;
+
+struct bpf_uprobe {
+	struct bpf_uprobe_multi_link *link;
+	loff_t offset;
+	u64 cookie;
+	struct uprobe_consumer consumer;
+};
+
+struct bpf_uprobe_multi_link {
+	struct path path;
+	struct bpf_link link;
+	u32 cnt;
+	struct bpf_uprobe *uprobes;
+	struct task_struct *task;
+};
+
+struct bpf_trace_module {
+	struct module *module;
+	struct list_head list;
+};
+
+struct trace_event_data_offsets_bpf_trace_printk {
+	u32 bpf_string;
+};
+
+typedef u32 (*bpf_prog_run_fn)(const struct bpf_prog *, const void *);
+
+struct bpf_bprintf_data {
+	u32 *bin_args;
+	char *buf;
+	bool get_bin_args;
+	bool get_buf;
+};
+
+struct bpf_event_entry {
+	struct perf_event *event;
+	struct file *perf_file;
+	struct file *map_file;
+	struct callback_head rcu;
+};
+
+struct __key_reference_with_attributes;
+
+typedef struct __key_reference_with_attributes *key_ref_t;
+
+struct bpf_dynptr_kern {
+	void *data;
+	u32 size;
+	u32 offset;
+};
+
+struct bpf_link_primer {
+	struct bpf_link *link;
+	struct file *file;
+	int fd;
+	u32 id;
+};
+
+struct btf_id_set {
+	u32 cnt;
+	u32 ids[0];
+};
+
+struct bpf_key {
+	struct key *key;
+	bool has_ref;
+};
+
+typedef unsigned long (*bpf_ctx_copy_t)(void *, const void *, unsigned long, unsigned long);
+
+struct perf_event_query_bpf {
+	__u32 ids_len;
+	__u32 prog_cnt;
+	__u32 ids[0];
+};
+
+struct trace_kprobe {
+	struct dyn_event devent;
+	struct kretprobe rp;
+	unsigned long __attribute__((btf_type_tag("percpu"))) *nhit;
+	const char *symbol;
+	struct trace_probe tp;
+};
+
+struct kretprobe_trace_entry_head {
+	struct trace_entry ent;
+	unsigned long func;
+	unsigned long ret_ip;
+};
+
+struct kprobe_trace_entry_head {
+	struct trace_entry ent;
+	unsigned long ip;
+};
+
+struct sym_count_ctx {
+	unsigned int count;
+	const char *name;
+};
+
+typedef void (*btf_trace_error_report_end)(void *, enum error_detector, unsigned long);
+
+struct trace_event_raw_error_report_template {
+	struct trace_entry ent;
+	enum error_detector error_detector;
+	unsigned long id;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_error_report_template {};
+
+typedef void (*btf_trace_cpu_idle)(void *, unsigned int, unsigned int);
+
+typedef void (*btf_trace_cpu_idle_miss)(void *, unsigned int, unsigned int, bool);
+
+typedef void (*btf_trace_powernv_throttle)(void *, int, const char *, int);
+
+typedef void (*btf_trace_pstate_sample)(void *, u32, u32, u32, u32, u64, u64, u64, u32, u32);
+
+typedef void (*btf_trace_cpu_frequency)(void *, unsigned int, unsigned int);
+
+typedef void (*btf_trace_cpu_frequency_limits)(void *, struct cpufreq_policy *);
+
+typedef void (*btf_trace_device_pm_callback_start)(void *, struct device *, const char *, int);
+
+typedef void (*btf_trace_device_pm_callback_end)(void *, struct device *, int);
+
+typedef void (*btf_trace_suspend_resume)(void *, const char *, int, bool);
+
+typedef void (*btf_trace_wakeup_source_activate)(void *, const char *, unsigned int);
+
+typedef void (*btf_trace_wakeup_source_deactivate)(void *, const char *, unsigned int);
+
+typedef void (*btf_trace_clock_enable)(void *, const char *, unsigned int, unsigned int);
+
+typedef void (*btf_trace_clock_disable)(void *, const char *, unsigned int, unsigned int);
+
+typedef void (*btf_trace_clock_set_rate)(void *, const char *, unsigned int, unsigned int);
+
+typedef void (*btf_trace_power_domain_target)(void *, const char *, unsigned int, unsigned int);
+
+typedef void (*btf_trace_pm_qos_add_request)(void *, s32);
+
+typedef void (*btf_trace_pm_qos_update_request)(void *, s32);
+
+typedef void (*btf_trace_pm_qos_remove_request)(void *, s32);
+
+typedef void (*btf_trace_pm_qos_update_target)(void *, enum pm_qos_req_action, int, int);
+
+typedef void (*btf_trace_pm_qos_update_flags)(void *, enum pm_qos_req_action, int, int);
+
+typedef void (*btf_trace_dev_pm_qos_add_request)(void *, const char *, enum dev_pm_qos_req_type, s32);
+
+typedef void (*btf_trace_dev_pm_qos_update_request)(void *, const char *, enum dev_pm_qos_req_type, s32);
+
+typedef void (*btf_trace_dev_pm_qos_remove_request)(void *, const char *, enum dev_pm_qos_req_type, s32);
+
+typedef void (*btf_trace_guest_halt_poll_ns)(void *, bool, unsigned int, unsigned int);
+
+struct trace_event_raw_cpu {
+	struct trace_entry ent;
+	u32 state;
+	u32 cpu_id;
+	char __data[0];
+};
+
+struct trace_event_raw_cpu_idle_miss {
+	struct trace_entry ent;
+	u32 cpu_id;
+	u32 state;
+	bool below;
+	char __data[0];
+};
+
+struct trace_event_raw_powernv_throttle {
+	struct trace_entry ent;
+	int chip_id;
+	u32 __data_loc_reason;
+	int pmax;
+	char __data[0];
+};
+
+struct trace_event_raw_pstate_sample {
+	struct trace_entry ent;
+	u32 core_busy;
+	u32 scaled_busy;
+	u32 from;
+	u32 to;
+	u64 mperf;
+	u64 aperf;
+	u64 tsc;
+	u32 freq;
+	u32 io_boost;
+	char __data[0];
+};
+
+struct trace_event_raw_cpu_frequency_limits {
+	struct trace_entry ent;
+	u32 min_freq;
+	u32 max_freq;
+	u32 cpu_id;
+	char __data[0];
+};
+
+struct trace_event_raw_device_pm_callback_start {
+	struct trace_entry ent;
+	u32 __data_loc_device;
+	u32 __data_loc_driver;
+	u32 __data_loc_parent;
+	u32 __data_loc_pm_ops;
+	int event;
+	char __data[0];
+};
+
+struct trace_event_raw_device_pm_callback_end {
+	struct trace_entry ent;
+	u32 __data_loc_device;
+	u32 __data_loc_driver;
+	int error;
+	char __data[0];
+};
+
+struct trace_event_raw_suspend_resume {
+	struct trace_entry ent;
+	const char *action;
+	int val;
+	bool start;
+	char __data[0];
+};
+
+struct trace_event_raw_wakeup_source {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	u64 state;
+	char __data[0];
+};
+
+struct trace_event_raw_clock {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	u64 state;
+	u64 cpu_id;
+	char __data[0];
+};
+
+struct trace_event_raw_power_domain {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	u64 state;
+	u64 cpu_id;
+	char __data[0];
+};
+
+struct trace_event_raw_cpu_latency_qos_request {
+	struct trace_entry ent;
+	s32 value;
+	char __data[0];
+};
+
+struct trace_event_raw_pm_qos_update {
+	struct trace_entry ent;
+	enum pm_qos_req_action action;
+	int prev_value;
+	int curr_value;
+	char __data[0];
+};
+
+struct trace_event_raw_dev_pm_qos_request {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	enum dev_pm_qos_req_type type;
+	s32 new_value;
+	char __data[0];
+};
+
+struct trace_event_raw_guest_halt_poll_ns {
+	struct trace_entry ent;
+	bool grow;
+	unsigned int new;
+	unsigned int old;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_powernv_throttle {
+	u32 reason;
+};
+
+struct trace_event_data_offsets_wakeup_source {
+	u32 name;
+};
+
+struct trace_event_data_offsets_clock {
+	u32 name;
+};
+
+struct trace_event_data_offsets_power_domain {
+	u32 name;
+};
+
+struct trace_event_data_offsets_dev_pm_qos_request {
+	u32 name;
+};
+
+struct trace_event_data_offsets_cpu {};
+
+struct trace_event_data_offsets_cpu_idle_miss {};
+
+struct trace_event_data_offsets_pstate_sample {};
+
+struct trace_event_data_offsets_cpu_frequency_limits {};
+
+struct trace_event_data_offsets_device_pm_callback_start {
+	u32 device;
+	u32 driver;
+	u32 parent;
+	u32 pm_ops;
+};
+
+struct trace_event_data_offsets_device_pm_callback_end {
+	u32 device;
+	u32 driver;
+};
+
+struct trace_event_data_offsets_suspend_resume {};
+
+struct trace_event_data_offsets_cpu_latency_qos_request {};
+
+struct trace_event_data_offsets_pm_qos_update {};
+
+struct trace_event_data_offsets_guest_halt_poll_ns {};
+
+typedef void (*btf_trace_rpm_suspend)(void *, struct device *, int);
+
+typedef void (*btf_trace_rpm_resume)(void *, struct device *, int);
+
+typedef void (*btf_trace_rpm_idle)(void *, struct device *, int);
+
+typedef void (*btf_trace_rpm_usage)(void *, struct device *, int);
+
+typedef void (*btf_trace_rpm_return_int)(void *, struct device *, unsigned long, int);
+
+typedef void (*btf_trace_rpm_status)(void *, struct device *, enum rpm_status);
+
+struct trace_event_raw_rpm_internal {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	int flags;
+	int usage_count;
+	int disable_depth;
+	int runtime_auto;
+	int request_pending;
+	int irq_safe;
+	int child_count;
+	char __data[0];
+};
+
+struct trace_event_raw_rpm_return_int {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	unsigned long ip;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_rpm_status {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	int status;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_rpm_internal {
+	u32 name;
+};
+
+struct trace_event_data_offsets_rpm_return_int {
+	u32 name;
+};
+
+struct trace_event_data_offsets_rpm_status {
+	u32 name;
+};
+
+struct trace_probe_log {
+	const char *subsystem;
+	const char **argv;
+	int argc;
+	int index;
+};
+
+enum {
+	BTF_KIND_UNKN = 0,
+	BTF_KIND_INT = 1,
+	BTF_KIND_PTR = 2,
+	BTF_KIND_ARRAY = 3,
+	BTF_KIND_STRUCT = 4,
+	BTF_KIND_UNION = 5,
+	BTF_KIND_ENUM = 6,
+	BTF_KIND_FWD = 7,
+	BTF_KIND_TYPEDEF = 8,
+	BTF_KIND_VOLATILE = 9,
+	BTF_KIND_CONST = 10,
+	BTF_KIND_RESTRICT = 11,
+	BTF_KIND_FUNC = 12,
+	BTF_KIND_FUNC_PROTO = 13,
+	BTF_KIND_VAR = 14,
+	BTF_KIND_DATASEC = 15,
+	BTF_KIND_FLOAT = 16,
+	BTF_KIND_DECL_TAG = 17,
+	BTF_KIND_TYPE_TAG = 18,
+	BTF_KIND_ENUM64 = 19,
+	NR_BTF_KINDS = 20,
+	BTF_KIND_MAX = 19,
+};
+
+struct btf_array {
+	__u32 type;
+	__u32 index_type;
+	__u32 nelems;
+};
+
+struct btf_member {
+	__u32 name_off;
+	__u32 type;
+	__u32 offset;
+};
+
+struct btf_anon_stack {
+	u32 tid;
+	u32 offset;
+};
+
+struct uprobe_cpu_buffer {
+	struct mutex mutex;
+	void *buf;
+};
+
+struct trace_uprobe {
+	struct dyn_event devent;
+	struct uprobe_consumer consumer;
+	struct path path;
+	struct inode *inode;
+	char *filename;
+	unsigned long offset;
+	unsigned long ref_ctr_offset;
+	unsigned long nhit;
+	struct trace_probe tp;
+};
+
+struct uprobe_trace_entry_head {
+	struct trace_entry ent;
+	unsigned long vaddr[0];
+};
+
+typedef bool (*filter_func_t)(struct uprobe_consumer *, enum uprobe_filter_ctx, struct mm_struct *);
+
+struct bpf_empty_prog_array {
+	struct bpf_prog_array hdr;
+	struct bpf_prog *null_prog;
+};
+
+struct xdp_mem_info {
+	u32 type;
+	u32 id;
+};
+
+struct xdp_frame {
+	void *data;
+	u16 len;
+	u16 headroom;
+	u32 metasize;
+	struct xdp_mem_info mem;
+	struct net_device *dev_rx;
+	u32 frame_sz;
+	u32 flags;
+};
+
+struct xdp_rxq_info;
+
+struct xdp_txq_info;
+
+struct xdp_buff {
+	void *data;
+	void *data_end;
+	void *data_meta;
+	void *data_hard_start;
+	struct xdp_rxq_info *rxq;
+	struct xdp_txq_info *txq;
+	u32 frame_sz;
+	u32 flags;
+};
+
+struct xdp_rxq_info {
+	struct net_device *dev;
+	u32 queue_index;
+	u32 reg_state;
+	struct xdp_mem_info mem;
+	unsigned int napi_id;
+	u32 frag_size;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct xdp_txq_info {
+	struct net_device *dev;
+};
+
+struct xdp_md {
+	__u32 data;
+	__u32 data_end;
+	__u32 data_meta;
+	__u32 ingress_ifindex;
+	__u32 rx_queue_index;
+	__u32 egress_ifindex;
+};
+
+struct rhash_lock_head {};
+
+typedef void (*btf_trace_xdp_exception)(void *, const struct net_device *, const struct bpf_prog *, u32);
+
+typedef void (*btf_trace_xdp_bulk_tx)(void *, const struct net_device *, int, int, int);
+
+typedef void (*btf_trace_xdp_redirect)(void *, const struct net_device *, const struct bpf_prog *, const void *, int, enum bpf_map_type, u32, u32);
+
+typedef void (*btf_trace_xdp_redirect_err)(void *, const struct net_device *, const struct bpf_prog *, const void *, int, enum bpf_map_type, u32, u32);
+
+typedef void (*btf_trace_xdp_redirect_map)(void *, const struct net_device *, const struct bpf_prog *, const void *, int, enum bpf_map_type, u32, u32);
+
+typedef void (*btf_trace_xdp_redirect_map_err)(void *, const struct net_device *, const struct bpf_prog *, const void *, int, enum bpf_map_type, u32, u32);
+
+struct xdp_cpumap_stats;
+
+typedef void (*btf_trace_xdp_cpumap_kthread)(void *, int, unsigned int, unsigned int, int, struct xdp_cpumap_stats *);
+
+struct xdp_cpumap_stats {
+	unsigned int redirect;
+	unsigned int pass;
+	unsigned int drop;
+};
+
+typedef void (*btf_trace_xdp_cpumap_enqueue)(void *, int, unsigned int, unsigned int, int);
+
+typedef void (*btf_trace_xdp_devmap_xmit)(void *, const struct net_device *, const struct net_device *, int, int, int);
+
+struct xdp_mem_allocator;
+
+typedef void (*btf_trace_mem_disconnect)(void *, const struct xdp_mem_allocator *);
+
+struct xdp_mem_allocator {
+	struct xdp_mem_info mem;
+	union {
+		void *allocator;
+		struct page_pool *page_pool;
+	};
+	struct rhash_head node;
+	struct callback_head rcu;
+};
+
+typedef void (*btf_trace_mem_connect)(void *, const struct xdp_mem_allocator *, const struct xdp_rxq_info *);
+
+typedef void (*btf_trace_mem_return_failed)(void *, const struct xdp_mem_info *, const struct page *);
+
+typedef void (*btf_trace_bpf_xdp_link_attach_failed)(void *, const char *);
+
+struct bpf_prog_dummy {
+	struct bpf_prog prog;
+};
+
+enum cgroup_bpf_attach_type {
+	CGROUP_BPF_ATTACH_TYPE_INVALID = -1,
+	CGROUP_INET_INGRESS = 0,
+	CGROUP_INET_EGRESS = 1,
+	CGROUP_INET_SOCK_CREATE = 2,
+	CGROUP_SOCK_OPS = 3,
+	CGROUP_DEVICE = 4,
+	CGROUP_INET4_BIND = 5,
+	CGROUP_INET6_BIND = 6,
+	CGROUP_INET4_CONNECT = 7,
+	CGROUP_INET6_CONNECT = 8,
+	CGROUP_INET4_POST_BIND = 9,
+	CGROUP_INET6_POST_BIND = 10,
+	CGROUP_UDP4_SENDMSG = 11,
+	CGROUP_UDP6_SENDMSG = 12,
+	CGROUP_SYSCTL = 13,
+	CGROUP_UDP4_RECVMSG = 14,
+	CGROUP_UDP6_RECVMSG = 15,
+	CGROUP_GETSOCKOPT = 16,
+	CGROUP_SETSOCKOPT = 17,
+	CGROUP_INET4_GETPEERNAME = 18,
+	CGROUP_INET6_GETPEERNAME = 19,
+	CGROUP_INET4_GETSOCKNAME = 20,
+	CGROUP_INET6_GETSOCKNAME = 21,
+	CGROUP_INET_SOCK_RELEASE = 22,
+	CGROUP_LSM_START = 23,
+	CGROUP_LSM_END = 32,
+	MAX_CGROUP_BPF_ATTACH_TYPE = 33,
+};
+
+enum xdp_action {
+	XDP_ABORTED = 0,
+	XDP_DROP = 1,
+	XDP_PASS = 2,
+	XDP_TX = 3,
+	XDP_REDIRECT = 4,
+};
+
+struct bpf_prog_pack {
+	struct list_head list;
+	void *ptr;
+	unsigned long bitmap[0];
+};
+
+typedef u64 (*btf_bpf_user_rnd_u32)();
+
+typedef u64 (*btf_bpf_get_raw_cpu_id)();
+
+struct trace_event_raw_xdp_exception {
+	struct trace_entry ent;
+	int prog_id;
+	u32 act;
+	int ifindex;
+	char __data[0];
+};
+
+struct trace_event_raw_xdp_bulk_tx {
+	struct trace_entry ent;
+	int ifindex;
+	u32 act;
+	int drops;
+	int sent;
+	int err;
+	char __data[0];
+};
+
+struct _bpf_dtab_netdev {
+	struct net_device *dev;
+};
+
+struct trace_event_raw_xdp_redirect_template {
+	struct trace_entry ent;
+	int prog_id;
+	u32 act;
+	int ifindex;
+	int err;
+	int to_ifindex;
+	u32 map_id;
+	int map_index;
+	char __data[0];
+};
+
+struct trace_event_raw_xdp_cpumap_kthread {
+	struct trace_entry ent;
+	int map_id;
+	u32 act;
+	int cpu;
+	unsigned int drops;
+	unsigned int processed;
+	int sched;
+	unsigned int xdp_pass;
+	unsigned int xdp_drop;
+	unsigned int xdp_redirect;
+	char __data[0];
+};
+
+struct trace_event_raw_xdp_cpumap_enqueue {
+	struct trace_entry ent;
+	int map_id;
+	u32 act;
+	int cpu;
+	unsigned int drops;
+	unsigned int processed;
+	int to_cpu;
+	char __data[0];
+};
+
+struct trace_event_raw_xdp_devmap_xmit {
+	struct trace_entry ent;
+	int from_ifindex;
+	u32 act;
+	int to_ifindex;
+	int drops;
+	int sent;
+	int err;
+	char __data[0];
+};
+
+struct trace_event_raw_mem_disconnect {
+	struct trace_entry ent;
+	const struct xdp_mem_allocator *xa;
+	u32 mem_id;
+	u32 mem_type;
+	const void *allocator;
+	char __data[0];
+};
+
+struct trace_event_raw_mem_connect {
+	struct trace_entry ent;
+	const struct xdp_mem_allocator *xa;
+	u32 mem_id;
+	u32 mem_type;
+	const void *allocator;
+	const struct xdp_rxq_info *rxq;
+	int ifindex;
+	char __data[0];
+};
+
+struct trace_event_raw_mem_return_failed {
+	struct trace_entry ent;
+	const struct page *page;
+	u32 mem_id;
+	u32 mem_type;
+	char __data[0];
+};
+
+struct trace_event_raw_bpf_xdp_link_attach_failed {
+	struct trace_entry ent;
+	u32 __data_loc_msg;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_bpf_xdp_link_attach_failed {
+	u32 msg;
+};
+
+struct trace_event_data_offsets_xdp_exception {};
+
+struct trace_event_data_offsets_xdp_bulk_tx {};
+
+struct trace_event_data_offsets_xdp_redirect_template {};
+
+struct trace_event_data_offsets_xdp_cpumap_kthread {};
+
+struct trace_event_data_offsets_xdp_cpumap_enqueue {};
+
+struct trace_event_data_offsets_xdp_devmap_xmit {};
+
+struct trace_event_data_offsets_mem_disconnect {};
+
+struct trace_event_data_offsets_mem_connect {};
+
+struct trace_event_data_offsets_mem_return_failed {};
+
+struct bpf_mprog_cp {
+	struct bpf_link *link;
+};
+
+struct bpf_mprog_bundle {
+	struct bpf_mprog_entry a;
+	struct bpf_mprog_entry b;
+	struct bpf_mprog_cp cp_items[64];
+	struct bpf_prog *ref;
+	atomic64_t revision;
+	u32 count;
+};
+
+enum {
+	BPF_F_NO_PREALLOC = 1,
+	BPF_F_NO_COMMON_LRU = 2,
+	BPF_F_NUMA_NODE = 4,
+	BPF_F_RDONLY = 8,
+	BPF_F_WRONLY = 16,
+	BPF_F_STACK_BUILD_ID = 32,
+	BPF_F_ZERO_SEED = 64,
+	BPF_F_RDONLY_PROG = 128,
+	BPF_F_WRONLY_PROG = 256,
+	BPF_F_CLONE = 512,
+	BPF_F_MMAPABLE = 1024,
+	BPF_F_PRESERVE_ELEMS = 2048,
+	BPF_F_INNER_MAP = 4096,
+	BPF_F_LINK = 8192,
+	BPF_F_PATH_FD = 16384,
+};
+
+enum {
+	BPF_ANY = 0,
+	BPF_NOEXIST = 1,
+	BPF_EXIST = 2,
+	BPF_F_LOCK = 4,
+};
+
+enum bpf_cmd {
+	BPF_MAP_CREATE = 0,
+	BPF_MAP_LOOKUP_ELEM = 1,
+	BPF_MAP_UPDATE_ELEM = 2,
+	BPF_MAP_DELETE_ELEM = 3,
+	BPF_MAP_GET_NEXT_KEY = 4,
+	BPF_PROG_LOAD = 5,
+	BPF_OBJ_PIN = 6,
+	BPF_OBJ_GET = 7,
+	BPF_PROG_ATTACH = 8,
+	BPF_PROG_DETACH = 9,
+	BPF_PROG_TEST_RUN = 10,
+	BPF_PROG_RUN = 10,
+	BPF_PROG_GET_NEXT_ID = 11,
+	BPF_MAP_GET_NEXT_ID = 12,
+	BPF_PROG_GET_FD_BY_ID = 13,
+	BPF_MAP_GET_FD_BY_ID = 14,
+	BPF_OBJ_GET_INFO_BY_FD = 15,
+	BPF_PROG_QUERY = 16,
+	BPF_RAW_TRACEPOINT_OPEN = 17,
+	BPF_BTF_LOAD = 18,
+	BPF_BTF_GET_FD_BY_ID = 19,
+	BPF_TASK_FD_QUERY = 20,
+	BPF_MAP_LOOKUP_AND_DELETE_ELEM = 21,
+	BPF_MAP_FREEZE = 22,
+	BPF_BTF_GET_NEXT_ID = 23,
+	BPF_MAP_LOOKUP_BATCH = 24,
+	BPF_MAP_LOOKUP_AND_DELETE_BATCH = 25,
+	BPF_MAP_UPDATE_BATCH = 26,
+	BPF_MAP_DELETE_BATCH = 27,
+	BPF_LINK_CREATE = 28,
+	BPF_LINK_UPDATE = 29,
+	BPF_LINK_GET_FD_BY_ID = 30,
+	BPF_LINK_GET_NEXT_ID = 31,
+	BPF_ENABLE_STATS = 32,
+	BPF_ITER_CREATE = 33,
+	BPF_LINK_DETACH = 34,
+	BPF_PROG_BIND_MAP = 35,
+};
+
+enum perf_bpf_event_type {
+	PERF_BPF_EVENT_UNKNOWN = 0,
+	PERF_BPF_EVENT_PROG_LOAD = 1,
+	PERF_BPF_EVENT_PROG_UNLOAD = 2,
+	PERF_BPF_EVENT_MAX = 3,
+};
+
+enum bpf_audit {
+	BPF_AUDIT_LOAD = 0,
+	BPF_AUDIT_UNLOAD = 1,
+	BPF_AUDIT_MAX = 2,
+};
+
+enum bpf_perf_event_type {
+	BPF_PERF_EVENT_UNSPEC = 0,
+	BPF_PERF_EVENT_UPROBE = 1,
+	BPF_PERF_EVENT_URETPROBE = 2,
+	BPF_PERF_EVENT_KPROBE = 3,
+	BPF_PERF_EVENT_KRETPROBE = 4,
+	BPF_PERF_EVENT_TRACEPOINT = 5,
+	BPF_PERF_EVENT_EVENT = 6,
+};
+
+enum bpf_stats_type {
+	BPF_STATS_RUN_TIME = 0,
+};
+
+typedef u64 (*btf_bpf_sys_bpf)(int, union bpf_attr *, u32);
+
+typedef u64 (*btf_bpf_sys_close)(u32);
+
+typedef u64 (*btf_bpf_kallsyms_lookup_name)(const char *, int, int, u64 *);
+
+struct bpf_tracing_link {
+	struct bpf_tramp_link link;
+	enum bpf_attach_type attach_type;
+	struct bpf_trampoline *trampoline;
+	struct bpf_prog *tgt_prog;
+};
+
+struct bpf_raw_tp_link {
+	struct bpf_link link;
+	struct bpf_raw_event_map *btp;
+};
+
+struct bpf_perf_link {
+	struct bpf_link link;
+	struct file *perf_file;
+};
+
+struct bpf_spin_lock {
+	__u32 val;
+};
+
+struct bpf_prog_kstats {
+	u64 nsecs;
+	u64 cnt;
+	u64 misses;
+};
+
+struct bpf_prog_info {
+	__u32 type;
+	__u32 id;
+	__u8 tag[8];
+	__u32 jited_prog_len;
+	__u32 xlated_prog_len;
+	__u64 jited_prog_insns;
+	__u64 xlated_prog_insns;
+	__u64 load_time;
+	__u32 created_by_uid;
+	__u32 nr_map_ids;
+	__u64 map_ids;
+	char name[16];
+	__u32 ifindex;
+	__u32 gpl_compatible: 1;
+	__u64 netns_dev;
+	__u64 netns_ino;
+	__u32 nr_jited_ksyms;
+	__u32 nr_jited_func_lens;
+	__u64 jited_ksyms;
+	__u64 jited_func_lens;
+	__u32 btf_id;
+	__u32 func_info_rec_size;
+	__u64 func_info;
+	__u32 nr_func_info;
+	__u32 nr_line_info;
+	__u64 line_info;
+	__u64 jited_line_info;
+	__u32 nr_jited_line_info;
+	__u32 line_info_rec_size;
+	__u32 jited_line_info_rec_size;
+	__u32 nr_prog_tags;
+	__u64 prog_tags;
+	__u64 run_time_ns;
+	__u64 run_cnt;
+	__u64 recursion_misses;
+	__u32 verified_insns;
+	__u32 attach_btf_obj_id;
+	__u32 attach_btf_id;
+};
+
+struct bpf_map_info {
+	__u32 type;
+	__u32 id;
+	__u32 key_size;
+	__u32 value_size;
+	__u32 max_entries;
+	__u32 map_flags;
+	char name[16];
+	__u32 ifindex;
+	__u32 btf_vmlinux_value_type_id;
+	__u64 netns_dev;
+	__u64 netns_ino;
+	__u32 btf_id;
+	__u32 btf_key_type_id;
+	__u32 btf_value_type_id;
+	__u64 map_extra;
+};
+
+struct bpf_btf_info {
+	__u64 btf;
+	__u32 btf_size;
+	__u32 id;
+	__u64 name;
+	__u32 name_len;
+	__u32 kernel_btf;
+};
+
+struct bpf_attach_target_info {
+	struct btf_func_model fmodel;
+	long tgt_addr;
+	struct module *tgt_mod;
+	const char *tgt_name;
+	const struct btf_type *tgt_type;
+};
+
+struct bpf_verifier_stack_elem {
+	struct bpf_verifier_state st;
+	int insn_idx;
+	int prev_insn_idx;
+	struct bpf_verifier_stack_elem *next;
+	u32 log_pos;
+};
+
+struct bpf_kfunc_desc {
+	struct btf_func_model func_model;
+	u32 func_id;
+	s32 imm;
+	u16 offset;
+	unsigned long addr;
+};
+
+struct bpf_kfunc_desc_tab {
+	struct bpf_kfunc_desc descs[256];
+	u32 nr_descs;
+};
+
+struct bpf_kfunc_btf {
+	struct btf *btf;
+	struct module *module;
+	u16 offset;
+};
+
+struct bpf_kfunc_btf_tab {
+	struct bpf_kfunc_btf descs[256];
+	u32 nr_descs;
+};
+
+struct bpf_reg_types {
+	const enum bpf_reg_type types[10];
+	u32 *btf_id;
+};
+
+enum btf_func_linkage {
+	BTF_FUNC_STATIC = 0,
+	BTF_FUNC_GLOBAL = 1,
+	BTF_FUNC_EXTERN = 2,
+};
+
+enum special_kfunc_type {
+	KF_bpf_obj_new_impl = 0,
+	KF_bpf_obj_drop_impl = 1,
+	KF_bpf_refcount_acquire_impl = 2,
+	KF_bpf_list_push_front_impl = 3,
+	KF_bpf_list_push_back_impl = 4,
+	KF_bpf_list_pop_front = 5,
+	KF_bpf_list_pop_back = 6,
+	KF_bpf_cast_to_kern_ctx = 7,
+	KF_bpf_rdonly_cast = 8,
+	KF_bpf_rcu_read_lock = 9,
+	KF_bpf_rcu_read_unlock = 10,
+	KF_bpf_rbtree_remove = 11,
+	KF_bpf_rbtree_add_impl = 12,
+	KF_bpf_rbtree_first = 13,
+	KF_bpf_dynptr_from_skb = 14,
+	KF_bpf_dynptr_from_xdp = 15,
+	KF_bpf_dynptr_slice = 16,
+	KF_bpf_dynptr_slice_rdwr = 17,
+	KF_bpf_dynptr_clone = 18,
+};
+
+enum bpf_stack_slot_type {
+	STACK_INVALID = 0,
+	STACK_SPILL = 1,
+	STACK_MISC = 2,
+	STACK_ZERO = 3,
+	STACK_DYNPTR = 4,
+	STACK_ITER = 5,
+};
+
+enum bpf_type_flag {
+	PTR_MAYBE_NULL = 256,
+	MEM_RDONLY = 512,
+	MEM_RINGBUF = 1024,
+	MEM_USER = 2048,
+	MEM_PERCPU = 4096,
+	OBJ_RELEASE = 8192,
+	PTR_UNTRUSTED = 16384,
+	MEM_UNINIT = 32768,
+	DYNPTR_TYPE_LOCAL = 65536,
+	DYNPTR_TYPE_RINGBUF = 131072,
+	MEM_FIXED_SIZE = 262144,
+	MEM_ALLOC = 524288,
+	PTR_TRUSTED = 1048576,
+	MEM_RCU = 2097152,
+	NON_OWN_REF = 4194304,
+	DYNPTR_TYPE_SKB = 8388608,
+	DYNPTR_TYPE_XDP = 16777216,
+	__BPF_TYPE_FLAG_MAX = 16777217,
+	__BPF_TYPE_LAST_FLAG = 16777216,
+};
+
+enum bpf_access_src {
+	ACCESS_DIRECT = 1,
+	ACCESS_HELPER = 2,
+};
+
+enum bpf_core_relo_kind {
+	BPF_CORE_FIELD_BYTE_OFFSET = 0,
+	BPF_CORE_FIELD_BYTE_SIZE = 1,
+	BPF_CORE_FIELD_EXISTS = 2,
+	BPF_CORE_FIELD_SIGNED = 3,
+	BPF_CORE_FIELD_LSHIFT_U64 = 4,
+	BPF_CORE_FIELD_RSHIFT_U64 = 5,
+	BPF_CORE_TYPE_ID_LOCAL = 6,
+	BPF_CORE_TYPE_ID_TARGET = 7,
+	BPF_CORE_TYPE_EXISTS = 8,
+	BPF_CORE_TYPE_SIZE = 9,
+	BPF_CORE_ENUMVAL_EXISTS = 10,
+	BPF_CORE_ENUMVAL_VALUE = 11,
+	BPF_CORE_TYPE_MATCHES = 12,
+};
+
+enum {
+	DISCOVERED = 16,
+	EXPLORED = 32,
+	FALLTHROUGH = 1,
+	BRANCH = 2,
+};
+
+enum {
+	DONE_EXPLORING = 0,
+	KEEP_EXPLORING = 1,
+};
+
+enum reg_arg_type {
+	SRC_OP = 0,
+	DST_OP = 1,
+	DST_OP_NO_MARK = 2,
+};
+
+enum {
+	REASON_BOUNDS = -1,
+	REASON_TYPE = -2,
+	REASON_PATHS = -3,
+	REASON_LIMIT = -4,
+	REASON_STACK = -5,
+};
+
+enum kfunc_ptr_arg_type {
+	KF_ARG_PTR_TO_CTX = 0,
+	KF_ARG_PTR_TO_ALLOC_BTF_ID = 1,
+	KF_ARG_PTR_TO_REFCOUNTED_KPTR = 2,
+	KF_ARG_PTR_TO_DYNPTR = 3,
+	KF_ARG_PTR_TO_ITER = 4,
+	KF_ARG_PTR_TO_LIST_HEAD = 5,
+	KF_ARG_PTR_TO_LIST_NODE = 6,
+	KF_ARG_PTR_TO_BTF_ID = 7,
+	KF_ARG_PTR_TO_MEM = 8,
+	KF_ARG_PTR_TO_MEM_SIZE = 9,
+	KF_ARG_PTR_TO_CALLBACK = 10,
+	KF_ARG_PTR_TO_RB_ROOT = 11,
+	KF_ARG_PTR_TO_RB_NODE = 12,
+};
+
+enum {
+	KF_ARG_DYNPTR_ID = 0,
+	KF_ARG_LIST_HEAD_ID = 1,
+	KF_ARG_LIST_NODE_ID = 2,
+	KF_ARG_RB_ROOT_ID = 3,
+	KF_ARG_RB_NODE_ID = 4,
+};
+
+enum {
+	BTF_TRACING_TYPE_TASK = 0,
+	BTF_TRACING_TYPE_FILE = 1,
+	BTF_TRACING_TYPE_VMA = 2,
+	MAX_BTF_TRACING_TYPE = 3,
+};
+
+enum sk_action {
+	SK_DROP = 0,
+	SK_PASS = 1,
+};
+
+enum {
+	AT_PKT_END = -1,
+	BEYOND_PKT_END = -2,
+};
+
+enum {
+	BPF_MAX_LOOPS = 8388608,
+};
+
+struct bpf_iter_meta__safe_trusted {
+	struct seq_file *seq;
+};
+
+struct bpf_iter__task__safe_trusted {
+	struct bpf_iter_meta *meta;
+	struct task_struct *task;
+};
+
+struct linux_binprm__safe_trusted {
+	struct file *file;
+};
+
+struct file__safe_trusted {
+	struct inode *f_inode;
+};
+
+struct dentry__safe_trusted {
+	struct inode *d_inode;
+};
+
+struct socket__safe_trusted {
+	struct sock *sk;
+};
+
+struct task_struct__safe_rcu {
+	const cpumask_t *cpus_ptr;
+	struct css_set __attribute__((btf_type_tag("rcu"))) *cgroups;
+	struct task_struct __attribute__((btf_type_tag("rcu"))) *real_parent;
+	struct task_struct *group_leader;
+};
+
+struct cgroup__safe_rcu {
+	struct kernfs_node *kn;
+};
+
+struct css_set__safe_rcu {
+	struct cgroup *dfl_cgrp;
+};
+
+struct mm_struct__safe_rcu_or_null {
+	struct file __attribute__((btf_type_tag("rcu"))) *exe_file;
+};
+
+struct sk_buff__safe_rcu_or_null {
+	struct sock *sk;
+};
+
+struct request_sock__safe_rcu_or_null {
+	struct sock *sk;
+};
+
+struct btf_var_secinfo {
+	__u32 type;
+	__u32 offset;
+	__u32 size;
+};
+
+struct bpf_iter;
+
+typedef void (*bpf_insn_print_t)(void *, const char *, ...);
+
+typedef const char * (*bpf_insn_revmap_call_t)(void *, const struct bpf_insn *);
+
+typedef const char * (*bpf_insn_print_imm_t)(void *, const struct bpf_insn *, __u64);
+
+struct bpf_insn_cbs {
+	bpf_insn_print_t cb_print;
+	bpf_insn_revmap_call_t cb_call;
+	bpf_insn_print_imm_t cb_imm;
+	void *private_data;
+};
+
+typedef u32 (*bpf_convert_ctx_access_t)(enum bpf_access_type, const struct bpf_insn *, struct bpf_insn *, struct bpf_prog *, u32 *);
+
+struct bpf_core_relo {
+	__u32 insn_off;
+	__u32 type_id;
+	__u32 access_str_off;
+	enum bpf_core_relo_kind kind;
+};
+
+struct bpf_core_ctx {
+	struct bpf_verifier_log *log;
+	const struct btf *btf;
+};
+
+struct bpf_struct_ops {
+	const struct bpf_verifier_ops *verifier_ops;
+	int (*init)(struct btf *);
+	int (*check_member)(const struct btf_type *, const struct btf_member *, const struct bpf_prog *);
+	int (*init_member)(const struct btf_type *, const struct btf_member *, void *, const void *);
+	int (*reg)(void *);
+	void (*unreg)(void *);
+	int (*update)(void *, void *);
+	int (*validate)(void *);
+	const struct btf_type *type;
+	const struct btf_type *value_type;
+	const char *name;
+	struct btf_func_model func_models[64];
+	u32 type_id;
+	u32 value_id;
+	u64 android_kabi_reserved1;
+};
+
+struct bpf_kfunc_call_arg_meta {
+	struct btf *btf;
+	u32 func_id;
+	u32 kfunc_flags;
+	const struct btf_type *func_proto;
+	const char *func_name;
+	u32 ref_obj_id;
+	u8 release_regno;
+	bool r0_rdonly;
+	u32 ret_btf_id;
+	u64 r0_size;
+	u32 subprogno;
+	struct {
+		u64 value;
+		bool found;
+	} arg_constant;
+	struct btf *arg_btf;
+	u32 arg_btf_id;
+	bool arg_owning_ref;
+	struct {
+		struct btf_field *field;
+	} arg_list_head;
+	struct {
+		struct btf_field *field;
+	} arg_rbtree_root;
+	struct {
+		enum bpf_dynptr_type type;
+		u32 id;
+		u32 ref_obj_id;
+	} initialized_dynptr;
+	struct {
+		u8 spi;
+		u8 frameno;
+	} iter;
+	u64 mem_size;
+};
+
+struct bpf_call_arg_meta {
+	struct bpf_map *map_ptr;
+	bool raw_mode;
+	bool pkt_access;
+	u8 release_regno;
+	int regno;
+	int access_size;
+	int mem_size;
+	u64 msize_max_value;
+	int ref_obj_id;
+	int dynptr_id;
+	int map_uid;
+	int func_id;
+	struct btf *btf;
+	u32 btf_id;
+	struct btf *ret_btf;
+	u32 ret_btf_id;
+	u32 subprogno;
+	struct btf_field *kptr_field;
+};
+
+struct bpf_sanitize_info {
+	struct bpf_insn_aux_data aux;
+	bool mask_to_left;
+};
+
+typedef int (*set_callee_state_fn)(struct bpf_verifier_env *, struct bpf_func_state *, struct bpf_func_state *, int);
+
+struct bpf_preload_info;
+
+struct bpf_preload_ops {
+	int (*preload)(struct bpf_preload_info *);
+	struct module *owner;
+};
+
+struct bpf_preload_info {
+	char link_name[16];
+	struct bpf_link *link;
+};
+
+struct tree_descr {
+	const char *name;
+	const struct file_operations *ops;
+	int mode;
+};
+
+enum bpf_type {
+	BPF_TYPE_UNSPEC = 0,
+	BPF_TYPE_PROG = 1,
+	BPF_TYPE_MAP = 2,
+	BPF_TYPE_LINK = 3,
+};
+
+enum {
+	OPT_MODE = 0,
+};
+
+struct map_iter {
+	void *key;
+	bool done;
+};
+
+struct bpf_mount_opts {
+	umode_t mode;
+};
+
+struct bpf_hrtimer {
+	struct hrtimer timer;
+	struct bpf_map *map;
+	struct bpf_prog *prog;
+	void __attribute__((btf_type_tag("rcu"))) *callback_fn;
+	void *value;
+	struct callback_head rcu;
+};
+
+struct bpf_bprintf_buffers {
+	char bin_args[512];
+	char buf[1024];
+};
+
+enum {
+	BPF_F_TIMER_ABS = 1,
+};
+
+typedef u64 (*btf_bpf_map_lookup_elem)(struct bpf_map *, void *);
+
+typedef u64 (*btf_bpf_map_update_elem)(struct bpf_map *, void *, void *, u64);
+
+typedef u64 (*btf_bpf_map_delete_elem)(struct bpf_map *, void *);
+
+typedef u64 (*btf_bpf_map_push_elem)(struct bpf_map *, void *, u64);
+
+typedef u64 (*btf_bpf_map_pop_elem)(struct bpf_map *, void *);
+
+typedef u64 (*btf_bpf_map_peek_elem)(struct bpf_map *, void *);
+
+typedef u64 (*btf_bpf_map_lookup_percpu_elem)(struct bpf_map *, void *, u32);
+
+typedef u64 (*btf_bpf_get_smp_processor_id)();
+
+typedef u64 (*btf_bpf_get_numa_node_id)();
+
+typedef u64 (*btf_bpf_ktime_get_ns)();
+
+typedef u64 (*btf_bpf_ktime_get_boot_ns)();
+
+typedef u64 (*btf_bpf_ktime_get_coarse_ns)();
+
+typedef u64 (*btf_bpf_ktime_get_tai_ns)();
+
+typedef u64 (*btf_bpf_get_current_pid_tgid)();
+
+typedef u64 (*btf_bpf_get_current_uid_gid)();
+
+typedef u64 (*btf_bpf_get_current_comm)(char *, u32);
+
+typedef u64 (*btf_bpf_spin_lock)(struct bpf_spin_lock *);
+
+typedef u64 (*btf_bpf_spin_unlock)(struct bpf_spin_lock *);
+
+typedef u64 (*btf_bpf_jiffies64)();
+
+typedef u64 (*btf_bpf_get_current_cgroup_id)();
+
+typedef u64 (*btf_bpf_get_current_ancestor_cgroup_id)(int);
+
+typedef u64 (*btf_bpf_strtol)(const char *, size_t, u64, long *);
+
+typedef u64 (*btf_bpf_strtoul)(const char *, size_t, u64, unsigned long *);
+
+typedef u64 (*btf_bpf_strncmp)(const char *, u32, const char *);
+
+struct bpf_pidns_info;
+
+typedef u64 (*btf_bpf_get_ns_current_pid_tgid)(u64, u64, struct bpf_pidns_info *, u32);
+
+struct bpf_pidns_info {
+	__u32 pid;
+	__u32 tgid;
+};
+
+typedef u64 (*btf_bpf_event_output_data)(void *, struct bpf_map *, u64, void *, u64);
+
+typedef u64 (*btf_bpf_copy_from_user)(void *, u32, const void __attribute__((btf_type_tag("user"))) *);
+
+typedef u64 (*btf_bpf_copy_from_user_task)(void *, u32, const void __attribute__((btf_type_tag("user"))) *, struct task_struct *, u64);
+
+typedef u64 (*btf_bpf_per_cpu_ptr)(const void *, u32);
+
+typedef u64 (*btf_bpf_this_cpu_ptr)(const void *);
+
+typedef u64 (*btf_bpf_snprintf)(char *, u32, char *, const void *, u32);
+
+struct bpf_timer_kern;
+
+typedef u64 (*btf_bpf_timer_init)(struct bpf_timer_kern *, struct bpf_map *, u64);
+
+struct bpf_timer_kern {
+	struct bpf_hrtimer *timer;
+	struct bpf_spin_lock lock;
+};
+
+typedef u64 (*btf_bpf_timer_set_callback)(struct bpf_timer_kern *, void *, struct bpf_prog_aux *);
+
+typedef u64 (*btf_bpf_timer_start)(struct bpf_timer_kern *, u64, u64);
+
+typedef u64 (*btf_bpf_timer_cancel)(struct bpf_timer_kern *);
+
+typedef u64 (*btf_bpf_kptr_xchg)(void *, void *);
+
+typedef u64 (*btf_bpf_dynptr_from_mem)(void *, u32, u64, struct bpf_dynptr_kern *);
+
+typedef u64 (*btf_bpf_dynptr_read)(void *, u32, const struct bpf_dynptr_kern *, u32, u64);
+
+typedef u64 (*btf_bpf_dynptr_write)(const struct bpf_dynptr_kern *, u32, void *, u32, u64);
+
+typedef u64 (*btf_bpf_dynptr_data)(const struct bpf_dynptr_kern *, u32, u32);
+
+struct bpf_refcount {
+	int: 32;
+};
+
+struct bpf_rb_node_kern {
+	struct rb_node rb_node;
+	void *owner;
+};
+
+struct bpf_rb_node {
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct bpf_timer {
+	long: 64;
+	long: 64;
+};
+
+struct bpf_dynptr {
+	long: 64;
+	long: 64;
+};
+
+struct bpf_list_node_kern {
+	struct list_head list_head;
+	void *owner;
+};
+
+struct bpf_list_node {
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct bpf_list_head {
+	long: 64;
+	long: 64;
+};
+
+struct bpf_rb_root {
+	long: 64;
+	long: 64;
+};
+
+struct btf_id_dtor_kfunc {
+	u32 btf_id;
+	u32 kfunc_btf_id;
+};
+
+enum bpf_iter_feature {
+	BPF_ITER_RESCHED = 1,
+};
+
+struct bpf_iter_target_info {
+	struct list_head list;
+	const struct bpf_iter_reg *reg_info;
+	u32 btf_id;
+};
+
+struct bpf_iter_link {
+	struct bpf_link link;
+	struct bpf_iter_aux_info aux;
+	struct bpf_iter_target_info *tinfo;
+};
+
+struct bpf_iter_priv_data {
+	struct bpf_iter_target_info *tinfo;
+	const struct bpf_iter_seq_info *seq_info;
+	struct bpf_prog *prog;
+	u64 session_id;
+	u64 seq_num;
+	bool done_stop;
+	long: 0;
+	u8 target_private[0];
+};
+
+typedef u64 (*btf_bpf_for_each_map_elem)(struct bpf_map *, void *, void *, u64);
+
+typedef u64 (*btf_bpf_loop)(u32, void *, void *, u64);
+
+struct btf_iter_num;
+
+struct bpf_iter_num {
+	__u64 __opaque[1];
+};
+
+struct bpf_iter_num_kern {
+	int cur;
+	int end;
+};
+
+struct bpf_iter__bpf_map {
+	union {
+		struct bpf_iter_meta *meta;
+	};
+	union {
+		struct bpf_map *map;
+	};
+};
+
+struct bpf_iter_seq_map_info {
+	u32 map_id;
+};
+
+struct mmap_unlock_irq_work {
+	struct irq_work irq_work;
+	struct mm_struct *mm;
+};
+
+enum bpf_task_vma_iter_find_op {
+	task_vma_iter_first_vma = 0,
+	task_vma_iter_next_vma = 1,
+	task_vma_iter_find_vma = 2,
+};
+
+typedef u64 (*btf_bpf_find_vma)(struct task_struct *, u64, bpf_callback_t, void *, u64);
+
+struct bpf_iter__task {
+	union {
+		struct bpf_iter_meta *meta;
+	};
+	union {
+		struct task_struct *task;
+	};
+};
+
+struct bpf_iter_seq_task_common {
+	struct pid_namespace *ns;
+	enum bpf_iter_task_type type;
+	u32 pid;
+	u32 pid_visiting;
+};
+
+struct bpf_iter__task_file {
+	union {
+		struct bpf_iter_meta *meta;
+	};
+	union {
+		struct task_struct *task;
+	};
+	u32 fd;
+	union {
+		struct file *file;
+	};
+};
+
+struct bpf_iter_seq_task_file_info {
+	struct bpf_iter_seq_task_common common;
+	struct task_struct *task;
+	u32 tid;
+	u32 fd;
+};
+
+struct bpf_iter__task_vma {
+	union {
+		struct bpf_iter_meta *meta;
+	};
+	union {
+		struct task_struct *task;
+	};
+	union {
+		struct vm_area_struct *vma;
+	};
+};
+
+struct bpf_iter_seq_task_vma_info {
+	struct bpf_iter_seq_task_common common;
+	struct task_struct *task;
+	struct mm_struct *mm;
+	struct vm_area_struct *vma;
+	u32 tid;
+	unsigned long prev_vm_start;
+	unsigned long prev_vm_end;
+};
+
+struct bpf_iter_seq_task_info {
+	struct bpf_iter_seq_task_common common;
+	u32 tid;
+};
+
+struct bpf_iter__bpf_prog {
+	union {
+		struct bpf_iter_meta *meta;
+	};
+	union {
+		struct bpf_prog *prog;
+	};
+};
+
+struct bpf_iter_seq_prog_info {
+	u32 prog_id;
+};
+
+struct bpf_iter__bpf_link {
+	union {
+		struct bpf_iter_meta *meta;
+	};
+	union {
+		struct bpf_link *link;
+	};
+};
+
+struct bpf_iter_seq_link_info {
+	u32 link_id;
+};
+
+struct pcpu_freelist_node;
+
+struct pcpu_freelist_head {
+	struct pcpu_freelist_node *first;
+	raw_spinlock_t lock;
+};
+
+struct pcpu_freelist {
+	struct pcpu_freelist_head __attribute__((btf_type_tag("percpu"))) *freelist;
+	struct pcpu_freelist_head extralist;
+};
+
+struct bpf_lru_list {
+	struct list_head lists[3];
+	unsigned int counts[2];
+	struct list_head *next_inactive_rotation;
+	raw_spinlock_t lock;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct bpf_lru_locallist;
+
+struct bpf_common_lru {
+	struct bpf_lru_list lru_list;
+	struct bpf_lru_locallist __attribute__((btf_type_tag("percpu"))) *local_list;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct bpf_lru_node;
+
+typedef bool (*del_from_htab_func)(void *, struct bpf_lru_node *);
+
+struct bpf_lru {
+	union {
+		struct bpf_common_lru common_lru;
+		struct bpf_lru_list __attribute__((btf_type_tag("percpu"))) *percpu_lru;
+	};
+	del_from_htab_func del_from_htab;
+	void *del_arg;
+	unsigned int hash_offset;
+	unsigned int nr_scans;
+	bool percpu;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct bucket;
+
+struct htab_elem;
+
+struct bpf_htab {
+	struct bpf_map map;
+	struct bpf_mem_alloc ma;
+	struct bpf_mem_alloc pcpu_ma;
+	struct bucket *buckets;
+	void *elems;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	union {
+		struct pcpu_freelist freelist;
+		struct bpf_lru lru;
+	};
+	struct htab_elem * __attribute__((btf_type_tag("percpu"))) *extra_elems;
+	struct percpu_counter pcount;
+	atomic_t count;
+	bool use_percpu_counter;
+	u32 n_buckets;
+	u32 elem_size;
+	u32 hashrnd;
+	struct lock_class_key lockdep_key;
+	int __attribute__((btf_type_tag("percpu"))) *map_locked[8];
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct bucket {
+	struct hlist_nulls_head head;
+	raw_spinlock_t raw_lock;
+};
+
+struct pcpu_freelist_node {
+	struct pcpu_freelist_node *next;
+};
+
+struct bpf_lru_locallist {
+	struct list_head lists[2];
+	u16 next_steal;
+	raw_spinlock_t lock;
+};
+
+struct bpf_lru_node {
+	struct list_head list;
+	u16 cpu;
+	u8 type;
+	u8 ref;
+};
+
+struct htab_elem {
+	union {
+		struct hlist_nulls_node hash_node;
+		struct {
+			void *padding;
+			union {
+				struct pcpu_freelist_node fnode;
+				struct htab_elem *batch_flink;
+			};
+		};
+	};
+	union {
+		void *ptr_to_pptr;
+		struct bpf_lru_node lru_node;
+	};
+	u32 hash;
+	long: 0;
+	char key[0];
+};
+
+struct bpf_iter_seq_hash_map_info {
+	struct bpf_map *map;
+	struct bpf_htab *htab;
+	void *percpu_value_buf;
+	u32 bucket_id;
+	u32 skip_elems;
+};
+
+struct bpf_iter__bpf_map_elem {
+	union {
+		struct bpf_iter_meta *meta;
+	};
+	union {
+		struct bpf_map *map;
+	};
+	union {
+		void *key;
+	};
+	union {
+		void *value;
+	};
+};
+
+struct prog_poke_elem {
+	struct list_head list;
+	struct bpf_prog_aux *aux;
+};
+
+struct bpf_iter_seq_array_map_info {
+	struct bpf_map *map;
+	void *percpu_value_buf;
+	u32 index;
+};
+
+enum bpf_lru_list_type {
+	BPF_LRU_LIST_T_ACTIVE = 0,
+	BPF_LRU_LIST_T_INACTIVE = 1,
+	BPF_LRU_LIST_T_FREE = 2,
+	BPF_LRU_LOCAL_LIST_T_FREE = 3,
+	BPF_LRU_LOCAL_LIST_T_PENDING = 4,
+};
+
+struct lpm_trie_node;
+
+struct lpm_trie {
+	struct bpf_map map;
+	struct lpm_trie_node __attribute__((btf_type_tag("rcu"))) *root;
+	size_t n_entries;
+	size_t max_prefixlen;
+	size_t data_size;
+	spinlock_t lock;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct lpm_trie_node {
+	struct callback_head rcu;
+	struct lpm_trie_node __attribute__((btf_type_tag("rcu"))) *child[2];
+	u32 prefixlen;
+	u32 flags;
+	u8 data[0];
+};
+
+struct bpf_lpm_trie_key {
+	__u32 prefixlen;
+	__u8 data[0];
+};
+
+struct bpf_bloom_filter {
+	struct bpf_map map;
+	u32 bitset_mask;
+	u32 hash_seed;
+	u32 nr_hash_funcs;
+	unsigned long bitset[0];
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct bpf_cgroup_storage_map {
+	struct bpf_map map;
+	spinlock_t lock;
+	struct rb_root root;
+	struct list_head list;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+enum bpf_cgroup_storage_type {
+	BPF_CGROUP_STORAGE_SHARED = 0,
+	BPF_CGROUP_STORAGE_PERCPU = 1,
+	__BPF_CGROUP_STORAGE_MAX = 2,
+};
+
+struct bpf_queue_stack {
+	struct bpf_map map;
+	raw_spinlock_t lock;
+	u32 head;
+	u32 tail;
+	u32 size;
+	char elements[0];
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+enum {
+	BPF_RINGBUF_BUSY_BIT = 2147483648,
+	BPF_RINGBUF_DISCARD_BIT = 1073741824,
+	BPF_RINGBUF_HDR_SZ = 8,
+};
+
+enum {
+	BPF_RB_NO_WAKEUP = 1,
+	BPF_RB_FORCE_WAKEUP = 2,
+};
+
+enum {
+	BPF_RB_AVAIL_DATA = 0,
+	BPF_RB_RING_SIZE = 1,
+	BPF_RB_CONS_POS = 2,
+	BPF_RB_PROD_POS = 3,
+};
+
+typedef u64 (*btf_bpf_ringbuf_reserve)(struct bpf_map *, u64, u64);
+
+typedef u64 (*btf_bpf_ringbuf_submit)(void *, u64);
+
+typedef u64 (*btf_bpf_ringbuf_discard)(void *, u64);
+
+typedef u64 (*btf_bpf_ringbuf_output)(struct bpf_map *, void *, u64, u64);
+
+typedef u64 (*btf_bpf_ringbuf_query)(struct bpf_map *, u64);
+
+typedef u64 (*btf_bpf_ringbuf_reserve_dynptr)(struct bpf_map *, u32, u64, struct bpf_dynptr_kern *);
+
+typedef u64 (*btf_bpf_ringbuf_submit_dynptr)(struct bpf_dynptr_kern *, u64);
+
+typedef u64 (*btf_bpf_ringbuf_discard_dynptr)(struct bpf_dynptr_kern *, u64);
+
+typedef u64 (*btf_bpf_user_ringbuf_drain)(struct bpf_map *, void *, void *, u64);
+
+struct bpf_ringbuf {
+	wait_queue_head_t waitq;
+	struct irq_work work;
+	u64 mask;
+	struct page **pages;
+	int nr_pages;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	spinlock_t spinlock;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	atomic_t busy;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	unsigned long consumer_pos;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	unsigned long producer_pos;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	char data[0];
+};
+
+struct bpf_ringbuf_map {
+	struct bpf_map map;
+	struct bpf_ringbuf *rb;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct bpf_ringbuf_hdr {
+	u32 len;
+	u32 pg_off;
+};
+
+struct bpf_local_storage_elem {
+	struct hlist_node map_node;
+	struct hlist_node snode;
+	struct bpf_local_storage __attribute__((btf_type_tag("rcu"))) *local_storage;
+	struct callback_head rcu;
+	long: 64;
+	struct bpf_local_storage_data sdata;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct bpf_local_storage_cache {
+	spinlock_t idx_lock;
+	u64 idx_usage_counts[16];
+};
+
+enum {
+	BPF_LOCAL_STORAGE_GET_F_CREATE = 1,
+	BPF_SK_STORAGE_GET_F_CREATE = 1,
+};
+
+typedef u64 (*btf_bpf_task_storage_get_recur)(struct bpf_map *, struct task_struct *, void *, u64, gfp_t);
+
+typedef u64 (*btf_bpf_task_storage_get)(struct bpf_map *, struct task_struct *, void *, u64, gfp_t);
+
+typedef u64 (*btf_bpf_task_storage_delete_recur)(struct bpf_map *, struct task_struct *);
+
+typedef u64 (*btf_bpf_task_storage_delete)(struct bpf_map *, struct task_struct *);
+
+typedef u64 (*btf_bpf_inode_storage_get)(struct bpf_map *, struct inode *, void *, u64, gfp_t);
+
+typedef u64 (*btf_bpf_inode_storage_delete)(struct bpf_map *, struct inode *);
+
+struct bpf_storage_blob {
+	struct bpf_local_storage __attribute__((btf_type_tag("rcu"))) *storage;
+};
+
+struct bpf_tuple {
+	struct bpf_prog *prog;
+	struct bpf_link *link;
+};
+
+enum {
+	BPF_MAX_TRAMP_LINKS = 38,
+};
+
+struct bpf_shim_tramp_link {
+	struct bpf_tramp_link link;
+	struct bpf_trampoline *trampoline;
+};
+
+struct btf_kfunc_hook_filter {
+	btf_kfunc_filter_t filters[16];
+	u32 nr_filters;
+};
+
+struct btf_kfunc_set_tab {
+	struct btf_id_set8 *sets[13];
+	struct btf_kfunc_hook_filter hook_filters[13];
+};
+
+struct btf_id_dtor_kfunc_tab {
+	u32 cnt;
+	struct btf_id_dtor_kfunc dtors[0];
+};
+
+struct btf_struct_metas {
+	u32 cnt;
+	struct btf_struct_meta types[0];
+};
+
+struct nd_opt_hdr {
+	__u8 nd_opt_type;
+	__u8 nd_opt_len;
+};
+
+struct ndisc_options {
+	struct nd_opt_hdr *nd_opt_array[15];
+	struct nd_opt_hdr *nd_opts_ri;
+	struct nd_opt_hdr *nd_opts_ri_end;
+	struct nd_opt_hdr *nd_useropts;
+	struct nd_opt_hdr *nd_useropts_end;
+	struct nd_opt_hdr *nd_802154_opt_array[3];
+};
+
+struct prefix_info {
+	__u8 type;
+	__u8 length;
+	__u8 prefix_len;
+	union {
+		__u8 flags;
+		struct {
+			__u8 reserved: 6;
+			__u8 autoconf: 1;
+			__u8 onlink: 1;
+		};
+	};
+	__be32 valid;
+	__be32 prefered;
+	__be32 reserved2;
+	struct in6_addr prefix;
+};
+
+struct inet_ehash_bucket;
+
+struct inet_bind_hashbucket;
+
+struct inet_listen_hashbucket;
+
+struct inet_hashinfo {
+	struct inet_ehash_bucket *ehash;
+	spinlock_t *ehash_locks;
+	unsigned int ehash_mask;
+	unsigned int ehash_locks_mask;
+	struct kmem_cache *bind_bucket_cachep;
+	struct inet_bind_hashbucket *bhash;
+	struct kmem_cache *bind2_bucket_cachep;
+	struct inet_bind_hashbucket *bhash2;
+	unsigned int bhash_size;
+	unsigned int lhash2_mask;
+	struct inet_listen_hashbucket *lhash2;
+	bool pernet;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct inet_ehash_bucket {
+	struct hlist_nulls_head chain;
+};
+
+struct inet_bind_hashbucket {
+	spinlock_t lock;
+	struct hlist_head chain;
+};
+
+struct inet_listen_hashbucket {
+	spinlock_t lock;
+	struct hlist_nulls_head nulls_head;
+};
+
+struct inet_peer_base {
+	struct rb_root rb_root;
+	seqlock_t lock;
+	int total;
+};
+
+struct ack_sample {
+	u32 pkts_acked;
+	s32 rtt_us;
+	u32 in_flight;
+};
+
+struct rate_sample {
+	u64 prior_mstamp;
+	u32 prior_delivered;
+	u32 prior_delivered_ce;
+	s32 delivered;
+	s32 delivered_ce;
+	long interval_us;
+	u32 snd_interval_us;
+	u32 rcv_interval_us;
+	long rtt_us;
+	int losses;
+	u32 acked_sacked;
+	u32 prior_in_flight;
+	u32 last_end_seq;
+	bool is_app_limited;
+	bool is_retrans;
+	bool is_ack_delayed;
+};
+
+struct lwtunnel_state {
+	__u16 type;
+	__u16 flags;
+	__u16 headroom;
+	atomic_t refcnt;
+	int (*orig_output)(struct net *, struct sock *, struct sk_buff *);
+	int (*orig_input)(struct sk_buff *);
+	struct callback_head rcu;
+	__u8 data[0];
+};
+
+struct sk_psock_progs {
+	struct bpf_prog *msg_parser;
+	struct bpf_prog *stream_parser;
+	struct bpf_prog *stream_verdict;
+	struct bpf_prog *skb_verdict;
+};
+
+struct sk_psock_work_state {
+	u32 len;
+	u32 off;
+};
+
+struct sk_msg;
+
+struct sk_psock {
+	struct sock *sk;
+	struct sock *sk_redir;
+	u32 apply_bytes;
+	u32 cork_bytes;
+	u32 eval;
+	bool redir_ingress;
+	struct sk_msg *cork;
+	struct sk_psock_progs progs;
+	struct sk_buff_head ingress_skb;
+	struct list_head ingress_msg;
+	spinlock_t ingress_lock;
+	unsigned long state;
+	struct list_head link;
+	spinlock_t link_lock;
+	refcount_t refcnt;
+	void (*saved_unhash)(struct sock *);
+	void (*saved_destroy)(struct sock *);
+	void (*saved_close)(struct sock *, long);
+	void (*saved_write_space)(struct sock *);
+	void (*saved_data_ready)(struct sock *);
+	int (*psock_update_sk_prot)(struct sock *, struct sk_psock *, bool);
+	struct proto *sk_proto;
+	struct mutex work_mutex;
+	struct sk_psock_work_state work_state;
+	struct delayed_work work;
+	struct sock *sk_pair;
+	struct rcu_work rwork;
+};
+
+struct sk_msg_sg {
+	u32 start;
+	u32 curr;
+	u32 end;
+	u32 size;
+	u32 copybreak;
+	unsigned long copy[1];
+	struct scatterlist data[19];
+};
+
+struct sk_msg {
+	struct sk_msg_sg sg;
+	void *data;
+	void *data_end;
+	u32 apply_bytes;
+	u32 cork_bytes;
+	u32 flags;
+	struct sk_buff *skb;
+	struct sock *sk_redir;
+	struct sock *sk;
+	struct list_head list;
+};
+
+struct bpf_flow_keys;
+
+struct bpf_sock;
+
+struct __sk_buff {
+	__u32 len;
+	__u32 pkt_type;
+	__u32 mark;
+	__u32 queue_mapping;
+	__u32 protocol;
+	__u32 vlan_present;
+	__u32 vlan_tci;
+	__u32 vlan_proto;
+	__u32 priority;
+	__u32 ingress_ifindex;
+	__u32 ifindex;
+	__u32 tc_index;
+	__u32 cb[5];
+	__u32 hash;
+	__u32 tc_classid;
+	__u32 data;
+	__u32 data_end;
+	__u32 napi_id;
+	__u32 family;
+	__u32 remote_ip4;
+	__u32 local_ip4;
+	__u32 remote_ip6[4];
+	__u32 local_ip6[4];
+	__u32 remote_port;
+	__u32 local_port;
+	__u32 data_meta;
+	union {
+		struct bpf_flow_keys *flow_keys;
+	};
+	__u64 tstamp;
+	__u32 wire_len;
+	__u32 gso_segs;
+	union {
+		struct bpf_sock *sk;
+	};
+	__u32 gso_size;
+	__u8 tstamp_type;
+	__u64 hwtstamp;
+};
+
+struct bpf_sock {
+	__u32 bound_dev_if;
+	__u32 family;
+	__u32 type;
+	__u32 protocol;
+	__u32 mark;
+	__u32 priority;
+	__u32 src_ip4;
+	__u32 src_ip6[4];
+	__u32 src_port;
+	__be16 dst_port;
+	__u32 dst_ip4;
+	__u32 dst_ip6[4];
+	__u32 state;
+	__s32 rx_queue_mapping;
+};
+
+struct bpf_sock_addr {
+	__u32 user_family;
+	__u32 user_ip4;
+	__u32 user_ip6[4];
+	__u32 user_port;
+	__u32 family;
+	__u32 type;
+	__u32 protocol;
+	__u32 msg_src_ip4;
+	__u32 msg_src_ip6[4];
+	union {
+		struct bpf_sock *sk;
+	};
+};
+
+struct bpf_sock_addr_kern {
+	struct sock *sk;
+	struct sockaddr *uaddr;
+	u64 tmp_reg;
+	void *t_ctx;
+	u32 uaddrlen;
+};
+
+struct bpf_sock_ops {
+	__u32 op;
+	union {
+		__u32 args[4];
+		__u32 reply;
+		__u32 replylong[4];
+	};
+	__u32 family;
+	__u32 remote_ip4;
+	__u32 local_ip4;
+	__u32 remote_ip6[4];
+	__u32 local_ip6[4];
+	__u32 remote_port;
+	__u32 local_port;
+	__u32 is_fullsock;
+	__u32 snd_cwnd;
+	__u32 srtt_us;
+	__u32 bpf_sock_ops_cb_flags;
+	__u32 state;
+	__u32 rtt_min;
+	__u32 snd_ssthresh;
+	__u32 rcv_nxt;
+	__u32 snd_nxt;
+	__u32 snd_una;
+	__u32 mss_cache;
+	__u32 ecn_flags;
+	__u32 rate_delivered;
+	__u32 rate_interval_us;
+	__u32 packets_out;
+	__u32 retrans_out;
+	__u32 total_retrans;
+	__u32 segs_in;
+	__u32 data_segs_in;
+	__u32 segs_out;
+	__u32 data_segs_out;
+	__u32 lost_out;
+	__u32 sacked_out;
+	__u32 sk_txhash;
+	__u64 bytes_received;
+	__u64 bytes_acked;
+	union {
+		struct bpf_sock *sk;
+	};
+	union {
+		void *skb_data;
+	};
+	union {
+		void *skb_data_end;
+	};
+	__u32 skb_len;
+	__u32 skb_tcp_flags;
+	__u64 skb_hwtstamp;
+};
+
+struct bpf_sock_ops_kern {
+	struct sock *sk;
+	union {
+		u32 args[4];
+		u32 reply;
+		u32 replylong[4];
+	};
+	struct sk_buff *syn_skb;
+	struct sk_buff *skb;
+	void *skb_data_end;
+	u8 op;
+	u8 is_fullsock;
+	u8 remaining_opt_len;
+	u64 temp;
+};
+
+struct sk_msg_md {
+	union {
+		void *data;
+	};
+	union {
+		void *data_end;
+	};
+	__u32 family;
+	__u32 remote_ip4;
+	__u32 local_ip4;
+	__u32 remote_ip6[4];
+	__u32 local_ip6[4];
+	__u32 remote_port;
+	__u32 local_port;
+	__u32 size;
+	union {
+		struct bpf_sock *sk;
+	};
+};
+
+struct bpf_flow_dissector {
+	struct bpf_flow_keys *flow_keys;
+	const struct sk_buff *skb;
+	const void *data;
+	const void *data_end;
+};
+
+struct bpf_perf_event_data {
+	bpf_user_pt_regs_t regs;
+	__u64 sample_period;
+	__u64 addr;
+};
+
+struct bpf_cgroup_dev_ctx {
+	__u32 access_type;
+	__u32 major;
+	__u32 minor;
+};
+
+struct bpf_sysctl {
+	__u32 write;
+	__u32 file_pos;
+};
+
+struct bpf_sysctl_kern {
+	struct ctl_table_header *head;
+	struct ctl_table *table;
+	void *cur_val;
+	size_t cur_len;
+	void *new_val;
+	size_t new_len;
+	int new_updated;
+	int write;
+	loff_t *ppos;
+	u64 tmp_reg;
+};
+
+struct bpf_sockopt {
+	union {
+		struct bpf_sock *sk;
+	};
+	union {
+		void *optval;
+	};
+	union {
+		void *optval_end;
+	};
+	__s32 level;
+	__s32 optname;
+	__s32 optlen;
+	__s32 retval;
+};
+
+struct bpf_sockopt_kern {
+	struct sock *sk;
+	u8 *optval;
+	u8 *optval_end;
+	s32 level;
+	s32 optname;
+	s32 optlen;
+	struct task_struct *current_task;
+	u64 tmp_reg;
+};
+
+struct sk_reuseport_md {
+	union {
+		void *data;
+	};
+	union {
+		void *data_end;
+	};
+	__u32 len;
+	__u32 eth_protocol;
+	__u32 ip_protocol;
+	__u32 bind_inany;
+	__u32 hash;
+	union {
+		struct bpf_sock *sk;
+	};
+	union {
+		struct bpf_sock *migrating_sk;
+	};
+};
+
+struct sk_reuseport_kern {
+	struct sk_buff *skb;
+	struct sock *sk;
+	struct sock *selected_sk;
+	struct sock *migrating_sk;
+	void *data_end;
+	u32 hash;
+	u32 reuseport_id;
+	bool bind_inany;
+};
+
+struct bpf_sk_lookup {
+	union {
+		union {
+			struct bpf_sock *sk;
+		};
+		__u64 cookie;
+	};
+	__u32 family;
+	__u32 protocol;
+	__u32 remote_ip4;
+	__u32 remote_ip6[4];
+	__be16 remote_port;
+	__u32 local_ip4;
+	__u32 local_ip6[4];
+	__u32 local_port;
+	__u32 ingress_ifindex;
+};
+
+struct bpf_sk_lookup_kern {
+	u16 family;
+	u16 protocol;
+	__be16 sport;
+	u16 dport;
+	struct {
+		__be32 saddr;
+		__be32 daddr;
+	} v4;
+	struct {
+		const struct in6_addr *saddr;
+		const struct in6_addr *daddr;
+	} v6;
+	struct sock *selected_sk;
+	u32 ingress_ifindex;
+	bool no_reuseport;
+};
+
+struct bpf_nf_ctx {
+	const struct nf_hook_state *state;
+	struct sk_buff *skb;
+};
+
+struct fuse_bpf_in_arg {
+	uint32_t size;
+	uint32_t padding;
+	union {
+		const void *value;
+		uint64_t padding2;
+	};
+	union {
+		const void *end_offset;
+		uint64_t padding3;
+	};
+};
+
+struct fuse_bpf_arg {
+	uint32_t size;
+	uint32_t padding;
+	union {
+		void *value;
+		uint64_t padding2;
+	};
+	union {
+		void *end_offset;
+		uint64_t padding3;
+	};
+};
+
+struct fuse_bpf_args {
+	uint64_t nodeid;
+	uint32_t opcode;
+	uint32_t error_in;
+	uint32_t in_numargs;
+	uint32_t out_numargs;
+	uint32_t flags;
+	uint32_t padding;
+	struct fuse_bpf_in_arg in_args[5];
+	struct fuse_bpf_arg out_args[3];
+};
+
+struct bpf_ctx_convert {
+	struct __sk_buff BPF_PROG_TYPE_SOCKET_FILTER_prog;
+	struct sk_buff BPF_PROG_TYPE_SOCKET_FILTER_kern;
+	struct __sk_buff BPF_PROG_TYPE_SCHED_CLS_prog;
+	struct sk_buff BPF_PROG_TYPE_SCHED_CLS_kern;
+	struct __sk_buff BPF_PROG_TYPE_SCHED_ACT_prog;
+	struct sk_buff BPF_PROG_TYPE_SCHED_ACT_kern;
+	struct xdp_md BPF_PROG_TYPE_XDP_prog;
+	struct xdp_buff BPF_PROG_TYPE_XDP_kern;
+	struct __sk_buff BPF_PROG_TYPE_CGROUP_SKB_prog;
+	struct sk_buff BPF_PROG_TYPE_CGROUP_SKB_kern;
+	struct bpf_sock BPF_PROG_TYPE_CGROUP_SOCK_prog;
+	struct sock BPF_PROG_TYPE_CGROUP_SOCK_kern;
+	struct bpf_sock_addr BPF_PROG_TYPE_CGROUP_SOCK_ADDR_prog;
+	struct bpf_sock_addr_kern BPF_PROG_TYPE_CGROUP_SOCK_ADDR_kern;
+	struct __sk_buff BPF_PROG_TYPE_LWT_IN_prog;
+	struct sk_buff BPF_PROG_TYPE_LWT_IN_kern;
+	struct __sk_buff BPF_PROG_TYPE_LWT_OUT_prog;
+	struct sk_buff BPF_PROG_TYPE_LWT_OUT_kern;
+	struct __sk_buff BPF_PROG_TYPE_LWT_XMIT_prog;
+	struct sk_buff BPF_PROG_TYPE_LWT_XMIT_kern;
+	struct __sk_buff BPF_PROG_TYPE_LWT_SEG6LOCAL_prog;
+	struct sk_buff BPF_PROG_TYPE_LWT_SEG6LOCAL_kern;
+	struct bpf_sock_ops BPF_PROG_TYPE_SOCK_OPS_prog;
+	struct bpf_sock_ops_kern BPF_PROG_TYPE_SOCK_OPS_kern;
+	struct __sk_buff BPF_PROG_TYPE_SK_SKB_prog;
+	struct sk_buff BPF_PROG_TYPE_SK_SKB_kern;
+	struct sk_msg_md BPF_PROG_TYPE_SK_MSG_prog;
+	struct sk_msg BPF_PROG_TYPE_SK_MSG_kern;
+	struct __sk_buff BPF_PROG_TYPE_FLOW_DISSECTOR_prog;
+	struct bpf_flow_dissector BPF_PROG_TYPE_FLOW_DISSECTOR_kern;
+	bpf_user_pt_regs_t BPF_PROG_TYPE_KPROBE_prog;
+	struct pt_regs BPF_PROG_TYPE_KPROBE_kern;
+	__u64 BPF_PROG_TYPE_TRACEPOINT_prog;
+	u64 BPF_PROG_TYPE_TRACEPOINT_kern;
+	struct bpf_perf_event_data BPF_PROG_TYPE_PERF_EVENT_prog;
+	struct bpf_perf_event_data_kern BPF_PROG_TYPE_PERF_EVENT_kern;
+	struct bpf_raw_tracepoint_args BPF_PROG_TYPE_RAW_TRACEPOINT_prog;
+	u64 BPF_PROG_TYPE_RAW_TRACEPOINT_kern;
+	struct bpf_raw_tracepoint_args BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE_prog;
+	u64 BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE_kern;
+	void *BPF_PROG_TYPE_TRACING_prog;
+	void *BPF_PROG_TYPE_TRACING_kern;
+	struct bpf_cgroup_dev_ctx BPF_PROG_TYPE_CGROUP_DEVICE_prog;
+	struct bpf_cgroup_dev_ctx BPF_PROG_TYPE_CGROUP_DEVICE_kern;
+	struct bpf_sysctl BPF_PROG_TYPE_CGROUP_SYSCTL_prog;
+	struct bpf_sysctl_kern BPF_PROG_TYPE_CGROUP_SYSCTL_kern;
+	struct bpf_sockopt BPF_PROG_TYPE_CGROUP_SOCKOPT_prog;
+	struct bpf_sockopt_kern BPF_PROG_TYPE_CGROUP_SOCKOPT_kern;
+	__u32 BPF_PROG_TYPE_LIRC_MODE2_prog;
+	u32 BPF_PROG_TYPE_LIRC_MODE2_kern;
+	struct sk_reuseport_md BPF_PROG_TYPE_SK_REUSEPORT_prog;
+	struct sk_reuseport_kern BPF_PROG_TYPE_SK_REUSEPORT_kern;
+	struct bpf_sk_lookup BPF_PROG_TYPE_SK_LOOKUP_prog;
+	struct bpf_sk_lookup_kern BPF_PROG_TYPE_SK_LOOKUP_kern;
+	void *BPF_PROG_TYPE_STRUCT_OPS_prog;
+	void *BPF_PROG_TYPE_STRUCT_OPS_kern;
+	void *BPF_PROG_TYPE_EXT_prog;
+	void *BPF_PROG_TYPE_EXT_kern;
+	void *BPF_PROG_TYPE_LSM_prog;
+	void *BPF_PROG_TYPE_LSM_kern;
+	void *BPF_PROG_TYPE_SYSCALL_prog;
+	void *BPF_PROG_TYPE_SYSCALL_kern;
+	struct bpf_nf_ctx BPF_PROG_TYPE_NETFILTER_prog;
+	struct bpf_nf_ctx BPF_PROG_TYPE_NETFILTER_kern;
+	struct fuse_bpf_args BPF_PROG_TYPE_FUSE_prog;
+	struct fuse_bpf_args BPF_PROG_TYPE_FUSE_kern;
+};
+
+struct bpf_flow_keys {
+	__u16 nhoff;
+	__u16 thoff;
+	__u16 addr_proto;
+	__u8 is_frag;
+	__u8 is_first_frag;
+	__u8 is_encap;
+	__u8 ip_proto;
+	__be16 n_proto;
+	__be16 sport;
+	__be16 dport;
+	union {
+		struct {
+			__be32 ipv4_src;
+			__be32 ipv4_dst;
+		};
+		struct {
+			__u32 ipv6_src[4];
+			__u32 ipv6_dst[4];
+		};
+	};
+	__u32 flags;
+	__be32 flow_label;
+};
+
+struct nf_hook_state {
+	u8 hook;
+	u8 pf;
+	struct net_device *in;
+	struct net_device *out;
+	struct sock *sk;
+	struct net *net;
+	int (*okfn)(struct net *, struct sock *, struct sk_buff *);
+};
+
+struct btf_verifier_env;
+
+struct resolve_vertex;
+
+struct btf_show;
+
+struct btf_kind_operations {
+	s32 (*check_meta)(struct btf_verifier_env *, const struct btf_type *, u32);
+	int (*resolve)(struct btf_verifier_env *, const struct resolve_vertex *);
+	int (*check_member)(struct btf_verifier_env *, const struct btf_type *, const struct btf_member *, const struct btf_type *);
+	int (*check_kflag_member)(struct btf_verifier_env *, const struct btf_type *, const struct btf_member *, const struct btf_type *);
+	void (*log_details)(struct btf_verifier_env *, const struct btf_type *);
+	void (*show)(const struct btf *, const struct btf_type *, u32, void *, u8, struct btf_show *);
+};
+
+struct resolve_vertex {
+	const struct btf_type *t;
+	u32 type_id;
+	u16 next_member;
+};
+
+enum verifier_phase {
+	CHECK_META = 0,
+	CHECK_TYPE = 1,
+};
+
+enum resolve_mode {
+	RESOLVE_TBD = 0,
+	RESOLVE_PTR = 1,
+	RESOLVE_STRUCT_OR_ARRAY = 2,
+};
+
+struct btf_verifier_env {
+	struct btf *btf;
+	u8 *visit_states;
+	struct resolve_vertex stack[32];
+	struct bpf_verifier_log log;
+	u32 log_type_id;
+	u32 top_stack;
+	enum verifier_phase phase;
+	enum resolve_mode resolve_mode;
+};
+
+struct btf_show {
+	u64 flags;
+	void *target;
+	void (*showfn)(struct btf_show *, const char *, struct __va_list_tag *);
+	const struct btf *btf;
+	struct {
+		u8 depth;
+		u8 depth_to_show;
+		u8 depth_check;
+		u8 array_member: 1;
+		u8 array_terminated: 1;
+		u16 array_encoding;
+		u32 type_id;
+		int status;
+		const struct btf_type *type;
+		const struct btf_member *member;
+		char name[80];
+	} state;
+	struct {
+		u32 size;
+		void *head;
+		void *data;
+		u8 safe[32];
+	} obj;
+};
+
+struct bpf_cand_cache {
+	const char *name;
+	u32 name_len;
+	u16 kind;
+	u16 cnt;
+	struct {
+		const struct btf *btf;
+		u32 id;
+	} cands[0];
+};
+
+enum bpf_struct_walk_result {
+	WALK_SCALAR = 0,
+	WALK_PTR = 1,
+	WALK_STRUCT = 2,
+};
+
+enum {
+	BTF_MODULE_F_LIVE = 1,
+};
+
+enum btf_kfunc_hook {
+	BTF_KFUNC_HOOK_COMMON = 0,
+	BTF_KFUNC_HOOK_XDP = 1,
+	BTF_KFUNC_HOOK_TC = 2,
+	BTF_KFUNC_HOOK_STRUCT_OPS = 3,
+	BTF_KFUNC_HOOK_TRACING = 4,
+	BTF_KFUNC_HOOK_SYSCALL = 5,
+	BTF_KFUNC_HOOK_FMODRET = 6,
+	BTF_KFUNC_HOOK_CGROUP_SKB = 7,
+	BTF_KFUNC_HOOK_SCHED_ACT = 8,
+	BTF_KFUNC_HOOK_SK_SKB = 9,
+	BTF_KFUNC_HOOK_SOCKET_FILTER = 10,
+	BTF_KFUNC_HOOK_LWT = 11,
+	BTF_KFUNC_HOOK_NETFILTER = 12,
+	BTF_KFUNC_HOOK_MAX = 13,
+};
+
+enum {
+	BTF_KFUNC_SET_MAX_CNT = 256,
+	BTF_DTOR_KFUNC_MAX_CNT = 256,
+	BTF_KFUNC_FILTER_MAX_CNT = 16,
+};
+
+enum {
+	BTF_FIELD_IGNORE = 0,
+	BTF_FIELD_FOUND = 1,
+};
+
+enum visit_state {
+	NOT_VISITED = 0,
+	VISITED = 1,
+	RESOLVED = 2,
+};
+
+enum {
+	BTF_VAR_STATIC = 0,
+	BTF_VAR_GLOBAL_ALLOCATED = 1,
+	BTF_VAR_GLOBAL_EXTERN = 2,
+};
+
+struct btf_module {
+	struct list_head list;
+	struct module *module;
+	struct btf *btf;
+	struct bin_attribute *sysfs_attr;
+	int flags;
+};
+
+typedef u64 (*btf_bpf_btf_find_by_name_kind)(char *, int, u32, int);
+
+struct btf_decl_tag {
+	__s32 component_idx;
+};
+
+struct btf_sec_info {
+	u32 off;
+	u32 len;
+};
+
+struct btf_enum {
+	__u32 name_off;
+	__s32 val;
+};
+
+struct btf_var {
+	__u32 linkage;
+};
+
+struct btf_enum64 {
+	__u32 name_off;
+	__u32 val_lo32;
+	__u32 val_hi32;
+};
+
+struct btf_show_snprintf {
+	struct btf_show show;
+	int len_left;
+	int len;
+};
+
+struct btf_field_info {
+	enum btf_field_type type;
+	u32 off;
+	union {
+		struct {
+			u32 type_id;
+		} kptr;
+		struct {
+			const char *node_name;
+			u32 value_btf_id;
+		} graph_root;
+	};
+};
+
+typedef int (*cmp_r_func_t)(const void *, const void *, const void *);
+
+typedef void (*swap_r_func_t)(void *, void *, int, const void *);
+
+struct bpf_core_cand;
+
+struct bpf_core_cand_list {
+	struct bpf_core_cand *cands;
+	int len;
+};
+
+struct bpf_core_cand {
+	const struct btf *btf;
+	__u32 id;
+};
+
+struct bpf_core_accessor {
+	__u32 type_id;
+	__u32 idx;
+	const char *name;
+};
+
+struct bpf_core_spec {
+	const struct btf *btf;
+	struct bpf_core_accessor spec[64];
+	__u32 root_type_id;
+	enum bpf_core_relo_kind relo_kind;
+	int len;
+	int raw_spec[64];
+	int raw_len;
+	__u32 bit_offset;
+};
+
+struct bpf_core_relo_res {
+	__u64 orig_val;
+	__u64 new_val;
+	bool poison;
+	bool validate;
+	bool fail_memsz_adjust;
+	__u32 orig_sz;
+	__u32 orig_type_id;
+	__u32 new_sz;
+	__u32 new_type_id;
+};
+
+struct bpf_dispatcher_prog {
+	struct bpf_prog *prog;
+	refcount_t users;
+};
+
+struct bpf_dispatcher {
+	struct mutex mutex;
+	void *func;
+	struct bpf_dispatcher_prog progs[48];
+	int num_progs;
+	void *image;
+	void *rw_image;
+	u32 image_off;
+	struct bpf_ksym ksym;
+	struct static_call_key *sc_key;
+	void *sc_tramp;
+	u64 android_kabi_reserved1;
+};
+
+enum net_device_flags {
+	IFF_UP = 1,
+	IFF_BROADCAST = 2,
+	IFF_DEBUG = 4,
+	IFF_LOOPBACK = 8,
+	IFF_POINTOPOINT = 16,
+	IFF_NOTRAILERS = 32,
+	IFF_RUNNING = 64,
+	IFF_NOARP = 128,
+	IFF_PROMISC = 256,
+	IFF_ALLMULTI = 512,
+	IFF_MASTER = 1024,
+	IFF_SLAVE = 2048,
+	IFF_MULTICAST = 4096,
+	IFF_PORTSEL = 8192,
+	IFF_AUTOMEDIA = 16384,
+	IFF_DYNAMIC = 32768,
+	IFF_LOWER_UP = 65536,
+	IFF_DORMANT = 131072,
+	IFF_ECHO = 262144,
+};
+
+enum netdev_priv_flags {
+	IFF_802_1Q_VLAN = 1ULL,
+	IFF_EBRIDGE = 2ULL,
+	IFF_BONDING = 4ULL,
+	IFF_ISATAP = 8ULL,
+	IFF_WAN_HDLC = 16ULL,
+	IFF_XMIT_DST_RELEASE = 32ULL,
+	IFF_DONT_BRIDGE = 64ULL,
+	IFF_DISABLE_NETPOLL = 128ULL,
+	IFF_MACVLAN_PORT = 256ULL,
+	IFF_BRIDGE_PORT = 512ULL,
+	IFF_OVS_DATAPATH = 1024ULL,
+	IFF_TX_SKB_SHARING = 2048ULL,
+	IFF_UNICAST_FLT = 4096ULL,
+	IFF_TEAM_PORT = 8192ULL,
+	IFF_SUPP_NOFCS = 16384ULL,
+	IFF_LIVE_ADDR_CHANGE = 32768ULL,
+	IFF_MACVLAN = 65536ULL,
+	IFF_XMIT_DST_RELEASE_PERM = 131072ULL,
+	IFF_L3MDEV_MASTER = 262144ULL,
+	IFF_NO_QUEUE = 524288ULL,
+	IFF_OPENVSWITCH = 1048576ULL,
+	IFF_L3MDEV_SLAVE = 2097152ULL,
+	IFF_TEAM = 4194304ULL,
+	IFF_RXFH_CONFIGURED = 8388608ULL,
+	IFF_PHONY_HEADROOM = 16777216ULL,
+	IFF_MACSEC = 33554432ULL,
+	IFF_NO_RX_HANDLER = 67108864ULL,
+	IFF_FAILOVER = 134217728ULL,
+	IFF_FAILOVER_SLAVE = 268435456ULL,
+	IFF_L3MDEV_RX_HANDLER = 536870912ULL,
+	IFF_NO_ADDRCONF = 1073741824ULL,
+	IFF_TX_SKB_NO_LINEAR = 2147483648ULL,
+	IFF_CHANGE_PROTO_DOWN = 4294967296ULL,
+	IFF_SEE_ALL_HWTSTAMP_REQUESTS = 8589934592ULL,
+};
+
+enum netdev_xdp_act {
+	NETDEV_XDP_ACT_BASIC = 1,
+	NETDEV_XDP_ACT_REDIRECT = 2,
+	NETDEV_XDP_ACT_NDO_XMIT = 4,
+	NETDEV_XDP_ACT_XSK_ZEROCOPY = 8,
+	NETDEV_XDP_ACT_HW_OFFLOAD = 16,
+	NETDEV_XDP_ACT_RX_SG = 32,
+	NETDEV_XDP_ACT_NDO_XMIT_SG = 64,
+	NETDEV_XDP_ACT_MASK = 127,
+};
+
+enum xdp_buff_flags {
+	XDP_FLAGS_HAS_FRAGS = 1,
+	XDP_FLAGS_FRAGS_PF_MEMALLOC = 2,
+};
+
+enum {
+	BPF_F_BROADCAST = 8,
+	BPF_F_EXCLUDE_INGRESS = 16,
+};
+
+enum netdev_cmd {
+	NETDEV_UP = 1,
+	NETDEV_DOWN = 2,
+	NETDEV_REBOOT = 3,
+	NETDEV_CHANGE = 4,
+	NETDEV_REGISTER = 5,
+	NETDEV_UNREGISTER = 6,
+	NETDEV_CHANGEMTU = 7,
+	NETDEV_CHANGEADDR = 8,
+	NETDEV_PRE_CHANGEADDR = 9,
+	NETDEV_GOING_DOWN = 10,
+	NETDEV_CHANGENAME = 11,
+	NETDEV_FEAT_CHANGE = 12,
+	NETDEV_BONDING_FAILOVER = 13,
+	NETDEV_PRE_UP = 14,
+	NETDEV_PRE_TYPE_CHANGE = 15,
+	NETDEV_POST_TYPE_CHANGE = 16,
+	NETDEV_POST_INIT = 17,
+	NETDEV_PRE_UNINIT = 18,
+	NETDEV_RELEASE = 19,
+	NETDEV_NOTIFY_PEERS = 20,
+	NETDEV_JOIN = 21,
+	NETDEV_CHANGEUPPER = 22,
+	NETDEV_RESEND_IGMP = 23,
+	NETDEV_PRECHANGEMTU = 24,
+	NETDEV_CHANGEINFODATA = 25,
+	NETDEV_BONDING_INFO = 26,
+	NETDEV_PRECHANGEUPPER = 27,
+	NETDEV_CHANGELOWERSTATE = 28,
+	NETDEV_UDP_TUNNEL_PUSH_INFO = 29,
+	NETDEV_UDP_TUNNEL_DROP_INFO = 30,
+	NETDEV_CHANGE_TX_QUEUE_LEN = 31,
+	NETDEV_CVLAN_FILTER_PUSH_INFO = 32,
+	NETDEV_CVLAN_FILTER_DROP_INFO = 33,
+	NETDEV_SVLAN_FILTER_PUSH_INFO = 34,
+	NETDEV_SVLAN_FILTER_DROP_INFO = 35,
+	NETDEV_OFFLOAD_XSTATS_ENABLE = 36,
+	NETDEV_OFFLOAD_XSTATS_DISABLE = 37,
+	NETDEV_OFFLOAD_XSTATS_REPORT_USED = 38,
+	NETDEV_OFFLOAD_XSTATS_REPORT_DELTA = 39,
+	NETDEV_XDP_FEAT_CHANGE = 40,
+};
+
+struct bpf_dtab_netdev;
+
+struct bpf_dtab {
+	struct bpf_map map;
+	struct bpf_dtab_netdev __attribute__((btf_type_tag("rcu"))) **netdev_map;
+	struct list_head list;
+	struct hlist_head *dev_index_head;
+	spinlock_t index_lock;
+	unsigned int items;
+	u32 n_buckets;
+	long: 64;
+	long: 64;
+};
+
+struct bpf_devmap_val {
+	__u32 ifindex;
+	union {
+		int fd;
+		__u32 id;
+	} bpf_prog;
+};
+
+struct bpf_dtab_netdev {
+	struct net_device *dev;
+	struct hlist_node index_hlist;
+	struct bpf_prog *xdp_prog;
+	struct callback_head rcu;
+	unsigned int idx;
+	struct bpf_devmap_val val;
+};
+
+typedef struct bio_vec skb_frag_t;
+
+struct skb_shared_info {
+	__u8 flags;
+	__u8 meta_len;
+	__u8 nr_frags;
+	__u8 tx_flags;
+	unsigned short gso_size;
+	unsigned short gso_segs;
+	struct sk_buff *frag_list;
+	struct skb_shared_hwtstamps hwtstamps;
+	unsigned int gso_type;
+	u32 tskey;
+	atomic_t dataref;
+	unsigned int xdp_frags_size;
+	void *destructor_arg;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_oem_data1[3];
+	skb_frag_t frags[17];
+};
+
+struct bpf_nh_params {
+	u32 nh_family;
+	union {
+		u32 ipv4_nh;
+		struct in6_addr ipv6_nh;
+	};
+};
+
+struct bpf_redirect_info {
+	u64 tgt_index;
+	void *tgt_value;
+	struct bpf_map *map;
+	u32 flags;
+	u32 kern_flags;
+	u32 map_id;
+	enum bpf_map_type map_type;
+	struct bpf_nh_params nh;
+};
+
+struct netdev_notifier_info {
+	struct net_device *dev;
+	struct netlink_ext_ack *extack;
+};
+
+struct bpf_cpu_map_entry;
+
+struct xdp_bulk_queue {
+	void *q[8];
+	struct list_head flush_node;
+	struct bpf_cpu_map_entry *obj;
+	unsigned int count;
+};
+
+struct bpf_cpumap_val {
+	__u32 qsize;
+	union {
+		int fd;
+		__u32 id;
+	} bpf_prog;
+};
+
+struct ptr_ring;
+
+struct bpf_cpu_map_entry {
+	u32 cpu;
+	int map_id;
+	struct xdp_bulk_queue __attribute__((btf_type_tag("percpu"))) *bulkq;
+	struct ptr_ring *queue;
+	struct task_struct *kthread;
+	struct bpf_cpumap_val value;
+	struct bpf_prog *prog;
+	struct completion kthread_running;
+	struct rcu_work free_work;
+};
+
+struct ptr_ring {
+	int producer;
+	spinlock_t producer_lock;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	int consumer_head;
+	int consumer_tail;
+	spinlock_t consumer_lock;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	int size;
+	int batch;
+	void **queue;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct bpf_cpu_map {
+	struct bpf_map map;
+	struct bpf_cpu_map_entry __attribute__((btf_type_tag("rcu"))) **cpu_map;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct bpf_prog_offload_ops;
+
+struct bpf_offload_dev {
+	const struct bpf_prog_offload_ops *ops;
+	struct list_head netdevs;
+	void *priv;
+};
+
+struct bpf_prog_offload_ops {
+	int (*insn_hook)(struct bpf_verifier_env *, int, int);
+	int (*finalize)(struct bpf_verifier_env *);
+	int (*replace_insn)(struct bpf_verifier_env *, u32, struct bpf_insn *);
+	int (*remove_insns)(struct bpf_verifier_env *, u32, u32);
+	int (*prepare)(struct bpf_prog *);
+	int (*translate)(struct bpf_prog *);
+	void (*destroy)(struct bpf_prog *);
+	u64 android_kabi_reserved1;
+};
+
+enum {
+	XDP_METADATA_KFUNC_RX_TIMESTAMP = 0,
+	XDP_METADATA_KFUNC_RX_HASH = 1,
+	MAX_XDP_METADATA_KFUNC = 2,
+};
+
+struct bpf_offload_netdev {
+	struct rhash_head l;
+	struct net_device *netdev;
+	struct bpf_offload_dev *offdev;
+	struct list_head progs;
+	struct list_head maps;
+	struct list_head offdev_netdevs;
+};
+
+typedef struct ns_common *ns_get_path_helper_t(void *);
+
+struct ns_get_path_bpf_prog_args {
+	struct bpf_prog *prog;
+	struct bpf_prog_info *info;
+};
+
+struct ns_get_path_bpf_map_args {
+	struct bpf_offloaded_map *offmap;
+	struct bpf_map_info *info;
+};
+
+enum netns_bpf_attach_type {
+	NETNS_BPF_INVALID = -1,
+	NETNS_BPF_FLOW_DISSECTOR = 0,
+	NETNS_BPF_SK_LOOKUP = 1,
+	MAX_NETNS_BPF_ATTACH_TYPE = 2,
+};
+
+struct bpf_netns_link {
+	struct bpf_link link;
+	enum bpf_attach_type type;
+	enum netns_bpf_attach_type netns_type;
+	struct net *net;
+	struct list_head node;
+};
+
+struct mini_Qdisc;
+
+struct tcx_entry {
+	struct mini_Qdisc __attribute__((btf_type_tag("rcu"))) *miniq;
+	struct bpf_mprog_bundle bundle;
+	bool miniq_active;
+	struct callback_head rcu;
+};
+
+struct mini_Qdisc {
+	struct tcf_proto *filter_list;
+	struct tcf_block *block;
+	struct gnet_stats_basic_sync __attribute__((btf_type_tag("percpu"))) *cpu_bstats;
+	struct gnet_stats_queue __attribute__((btf_type_tag("percpu"))) *cpu_qstats;
+	unsigned long rcu_state;
+};
+
+struct tcx_link {
+	struct bpf_link link;
+	struct net_device *dev;
+	u32 location;
+};
+
+enum {
+	BPF_F_SKIP_FIELD_MASK = 255,
+	BPF_F_USER_STACK = 256,
+	BPF_F_FAST_STACK_CMP = 512,
+	BPF_F_REUSE_STACKID = 1024,
+	BPF_F_USER_BUILD_ID = 2048,
+};
+
+enum bpf_stack_build_id_status {
+	BPF_STACK_BUILD_ID_EMPTY = 0,
+	BPF_STACK_BUILD_ID_VALID = 1,
+	BPF_STACK_BUILD_ID_IP = 2,
+};
+
+enum perf_callchain_context {
+	PERF_CONTEXT_HV = 18446744073709551584ULL,
+	PERF_CONTEXT_KERNEL = 18446744073709551488ULL,
+	PERF_CONTEXT_USER = 18446744073709551104ULL,
+	PERF_CONTEXT_GUEST = 18446744073709549568ULL,
+	PERF_CONTEXT_GUEST_KERNEL = 18446744073709549440ULL,
+	PERF_CONTEXT_GUEST_USER = 18446744073709549056ULL,
+	PERF_CONTEXT_MAX = 18446744073709547521ULL,
+};
+
+typedef u64 (*btf_bpf_get_stackid)(struct pt_regs *, struct bpf_map *, u64);
+
+typedef u64 (*btf_bpf_get_stackid_pe)(struct bpf_perf_event_data_kern *, struct bpf_map *, u64);
+
+typedef u64 (*btf_bpf_get_stack)(struct pt_regs *, void *, u32, u64);
+
+typedef u64 (*btf_bpf_get_task_stack)(struct task_struct *, void *, u32, u64);
+
+typedef u64 (*btf_bpf_get_stack_pe)(struct bpf_perf_event_data_kern *, void *, u32, u64);
+
+struct stack_map_bucket;
+
+struct bpf_stack_map {
+	struct bpf_map map;
+	void *elems;
+	struct pcpu_freelist freelist;
+	u32 n_buckets;
+	struct stack_map_bucket *buckets[0];
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct stack_map_bucket {
+	struct pcpu_freelist_node fnode;
+	u32 hash;
+	u32 nr;
+	u64 data[0];
+};
+
+struct bpf_stack_build_id {
+	__s32 status;
+	unsigned char build_id[20];
+	union {
+		__u64 offset;
+		__u64 ip;
+	};
+};
+
+struct cgroup_iter_priv {
+	struct cgroup_subsys_state *start_css;
+	bool visited_all;
+	bool terminate;
+	int order;
+};
+
+struct bpf_iter__cgroup {
+	union {
+		struct bpf_iter_meta *meta;
+	};
+	union {
+		struct cgroup *cgroup;
+	};
+};
+
+typedef u64 (*btf_bpf_cgrp_storage_get)(struct bpf_map *, struct cgroup *, void *, u64, gfp_t);
+
+typedef u64 (*btf_bpf_cgrp_storage_delete)(struct bpf_map *, struct cgroup *);
+
+struct cgroup_lsm_atype {
+	u32 attach_btf_id;
+	int refcnt;
+};
+
+enum {
+	TCPF_ESTABLISHED = 2,
+	TCPF_SYN_SENT = 4,
+	TCPF_SYN_RECV = 8,
+	TCPF_FIN_WAIT1 = 16,
+	TCPF_FIN_WAIT2 = 32,
+	TCPF_TIME_WAIT = 64,
+	TCPF_CLOSE = 128,
+	TCPF_CLOSE_WAIT = 256,
+	TCPF_LAST_ACK = 512,
+	TCPF_LISTEN = 1024,
+	TCPF_CLOSING = 2048,
+	TCPF_NEW_SYN_RECV = 4096,
+};
+
+enum {
+	BPF_F_SYSCTL_BASE_NAME = 1,
+};
+
+typedef u64 (*btf_bpf_get_local_storage)(struct bpf_map *, u64);
+
+typedef u64 (*btf_bpf_get_retval)();
+
+typedef u64 (*btf_bpf_set_retval)(int);
+
+typedef u64 (*btf_bpf_sysctl_get_name)(struct bpf_sysctl_kern *, char *, size_t, u64);
+
+typedef u64 (*btf_bpf_sysctl_get_current_value)(struct bpf_sysctl_kern *, char *, size_t);
+
+typedef u64 (*btf_bpf_sysctl_get_new_value)(struct bpf_sysctl_kern *, char *, size_t);
+
+typedef u64 (*btf_bpf_sysctl_set_new_value)(struct bpf_sysctl_kern *, const char *, size_t);
+
+typedef u64 (*btf_bpf_get_netns_cookie_sockopt)(struct bpf_sockopt_kern *);
+
+struct bpf_cgroup_link;
+
+struct bpf_prog_list {
+	struct hlist_node node;
+	struct bpf_prog *prog;
+	struct bpf_cgroup_link *link;
+	struct bpf_cgroup_storage *storage[2];
+};
+
+struct bpf_cgroup_link {
+	struct bpf_link link;
+	struct cgroup *cgroup;
+	enum bpf_attach_type type;
+};
+
+struct qdisc_skb_cb {
+	struct {
+		unsigned int pkt_len;
+		u16 slave_dev_queue_mapping;
+		u16 tc_classid;
+	};
+	unsigned char data[20];
+};
+
+struct bpf_skb_data_end {
+	struct qdisc_skb_cb qdisc_cb;
+	void *data_meta;
+	void *data_end;
+};
+
+struct bpf_cg_run_ctx {
+	struct bpf_run_ctx run_ctx;
+	const struct bpf_prog_array_item *prog_item;
+	int retval;
+};
+
+struct bpf_sockopt_buf {
+	u8 data[32];
+};
+
+enum {
+	IPPROTO_IP = 0,
+	IPPROTO_ICMP = 1,
+	IPPROTO_IGMP = 2,
+	IPPROTO_IPIP = 4,
+	IPPROTO_TCP = 6,
+	IPPROTO_EGP = 8,
+	IPPROTO_PUP = 12,
+	IPPROTO_UDP = 17,
+	IPPROTO_IDP = 22,
+	IPPROTO_TP = 29,
+	IPPROTO_DCCP = 33,
+	IPPROTO_IPV6 = 41,
+	IPPROTO_RSVP = 46,
+	IPPROTO_GRE = 47,
+	IPPROTO_ESP = 50,
+	IPPROTO_AH = 51,
+	IPPROTO_MTP = 92,
+	IPPROTO_BEETPH = 94,
+	IPPROTO_ENCAP = 98,
+	IPPROTO_PIM = 103,
+	IPPROTO_COMP = 108,
+	IPPROTO_L2TP = 115,
+	IPPROTO_SCTP = 132,
+	IPPROTO_UDPLITE = 136,
+	IPPROTO_MPLS = 137,
+	IPPROTO_ETHERNET = 143,
+	IPPROTO_RAW = 255,
+	IPPROTO_MPTCP = 262,
+	IPPROTO_MAX = 263,
+};
+
+enum sock_type {
+	SOCK_STREAM = 1,
+	SOCK_DGRAM = 2,
+	SOCK_RAW = 3,
+	SOCK_RDM = 4,
+	SOCK_SEQPACKET = 5,
+	SOCK_DCCP = 6,
+	SOCK_PACKET = 10,
+};
+
+enum sock_flags {
+	SOCK_DEAD = 0,
+	SOCK_DONE = 1,
+	SOCK_URGINLINE = 2,
+	SOCK_KEEPOPEN = 3,
+	SOCK_LINGER = 4,
+	SOCK_DESTROY = 5,
+	SOCK_BROADCAST = 6,
+	SOCK_TIMESTAMP = 7,
+	SOCK_ZAPPED = 8,
+	SOCK_USE_WRITE_QUEUE = 9,
+	SOCK_DBG = 10,
+	SOCK_RCVTSTAMP = 11,
+	SOCK_RCVTSTAMPNS = 12,
+	SOCK_LOCALROUTE = 13,
+	SOCK_MEMALLOC = 14,
+	SOCK_TIMESTAMPING_RX_SOFTWARE = 15,
+	SOCK_FASYNC = 16,
+	SOCK_RXQ_OVFL = 17,
+	SOCK_ZEROCOPY = 18,
+	SOCK_WIFI_STATUS = 19,
+	SOCK_NOFCS = 20,
+	SOCK_FILTER_LOCKED = 21,
+	SOCK_SELECT_ERR_QUEUE = 22,
+	SOCK_RCU_FREE = 23,
+	SOCK_TXTIME = 24,
+	SOCK_XDP = 25,
+	SOCK_TSTAMP_NEW = 26,
+	SOCK_RCVMARK = 27,
+};
+
+struct reuseport_array {
+	struct bpf_map map;
+	struct sock __attribute__((btf_type_tag("rcu"))) *ptrs[0];
+};
+
+enum bpf_struct_ops_state {
+	BPF_STRUCT_OPS_STATE_INIT = 0,
+	BPF_STRUCT_OPS_STATE_INUSE = 1,
+	BPF_STRUCT_OPS_STATE_TOBEFREE = 2,
+	BPF_STRUCT_OPS_STATE_READY = 3,
+};
+
+struct bpf_dummy_ops_state;
+
+struct bpf_dummy_ops {
+	int (*test_1)(struct bpf_dummy_ops_state *);
+	int (*test_2)(struct bpf_dummy_ops_state *, int, unsigned short, char, unsigned long);
+	int (*test_sleepable)(struct bpf_dummy_ops_state *);
+};
+
+struct bpf_struct_ops_bpf_dummy_ops {
+	refcount_t refcnt;
+	enum bpf_struct_ops_state state;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct bpf_dummy_ops data;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct bpf_dummy_ops_state {
+	int val;
+};
+
+struct bpf_struct_ops_tcp_congestion_ops {
+	refcount_t refcnt;
+	enum bpf_struct_ops_state state;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct tcp_congestion_ops data;
+};
+
+struct bpf_struct_ops_value {
+	refcount_t refcnt;
+	enum bpf_struct_ops_state state;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	char data[0];
+};
+
+struct bpf_struct_ops_map {
+	struct bpf_map map;
+	struct callback_head rcu;
+	const struct bpf_struct_ops *st_ops;
+	struct mutex lock;
+	struct bpf_link **links;
+	void *image;
+	struct bpf_struct_ops_value *uvalue;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct bpf_struct_ops_value kvalue;
+};
+
+struct bpf_struct_ops_link {
+	struct bpf_link link;
+	struct bpf_map __attribute__((btf_type_tag("rcu"))) *map;
+};
+
+struct bpf_cpumask {
+	cpumask_t cpumask;
+	refcount_t usage;
+};
+
+enum {
+	BTF_SOCK_TYPE_INET = 0,
+	BTF_SOCK_TYPE_INET_CONN = 1,
+	BTF_SOCK_TYPE_INET_REQ = 2,
+	BTF_SOCK_TYPE_INET_TW = 3,
+	BTF_SOCK_TYPE_REQ = 4,
+	BTF_SOCK_TYPE_SOCK = 5,
+	BTF_SOCK_TYPE_SOCK_COMMON = 6,
+	BTF_SOCK_TYPE_TCP = 7,
+	BTF_SOCK_TYPE_TCP_REQ = 8,
+	BTF_SOCK_TYPE_TCP_TW = 9,
+	BTF_SOCK_TYPE_TCP6 = 10,
+	BTF_SOCK_TYPE_UDP = 11,
+	BTF_SOCK_TYPE_UDP6 = 12,
+	BTF_SOCK_TYPE_UNIX = 13,
+	BTF_SOCK_TYPE_MPTCP = 14,
+	BTF_SOCK_TYPE_SOCKET = 15,
+	MAX_BTF_SOCK_TYPE = 16,
+};
+
+enum {
+	BPF_F_BPRM_SECUREEXEC = 1,
+};
+
+typedef u64 (*btf_bpf_bprm_opts_set)(struct linux_binprm *, u64);
+
+typedef u64 (*btf_bpf_ima_inode_hash)(struct inode *, void *, u32);
+
+typedef u64 (*btf_bpf_ima_file_hash)(struct file *, void *, u32);
+
+typedef u64 (*btf_bpf_get_attach_cookie)(void *);
+
+struct xattr {
+	const char *name;
+	void *value;
+	size_t value_len;
+};
+
+struct sembuf {
+	unsigned short sem_num;
+	short sem_op;
+	short sem_flg;
+};
+
+struct static_call_tramp_key {
+	s32 tramp;
+	s32 key;
+};
+
+struct perf_buffer {
+	refcount_t refcount;
+	struct callback_head callback_head;
+	int nr_pages;
+	int overwrite;
+	int paused;
+	atomic_t poll;
+	local_t head;
+	unsigned int nest;
+	local_t events;
+	local_t wakeup;
+	local_t lost;
+	long watermark;
+	long aux_watermark;
+	spinlock_t event_lock;
+	struct list_head event_list;
+	atomic_t mmap_count;
+	unsigned long mmap_locked;
+	struct user_struct *mmap_user;
+	long aux_head;
+	unsigned int aux_nest;
+	long aux_wakeup;
+	unsigned long aux_pgoff;
+	int aux_nr_pages;
+	int aux_overwrite;
+	atomic_t aux_mmap_count;
+	unsigned long aux_mmap_locked;
+	void (*free_aux)(void *);
+	refcount_t aux_refcount;
+	int aux_in_sampling;
+	void **aux_pages;
+	void *aux_priv;
+	struct perf_event_mmap_page *user_page;
+	void *data_pages[0];
+};
+
+struct perf_cpu_context {
+	struct perf_event_context ctx;
+	struct perf_event_context *task_ctx;
+	int online;
+	int heap_size;
+	struct perf_event **heap;
+	struct perf_event *heap_default[2];
+};
+
+struct swevent_hlist;
+
+struct swevent_htable {
+	struct swevent_hlist *swevent_hlist;
+	struct mutex hlist_mutex;
+	int hlist_refcount;
+	int recursion[4];
+};
+
+struct swevent_hlist {
+	struct hlist_head heads[256];
+	struct callback_head callback_head;
+};
+
+struct min_heap_callbacks {
+	int elem_size;
+	bool (*less)(const void *, const void *);
+	void (*swp)(void *, void *);
+};
+
+struct pmu_event_list {
+	raw_spinlock_t lock;
+	struct list_head list;
+};
+
+struct match_token {
+	int token;
+	const char *pattern;
+};
+
+enum event_type_t {
+	EVENT_FLEXIBLE = 1,
+	EVENT_PINNED = 2,
+	EVENT_TIME = 4,
+	EVENT_CPU = 8,
+	EVENT_CGROUP = 16,
+	EVENT_ALL = 3,
+};
+
+enum perf_event_type {
+	PERF_RECORD_MMAP = 1,
+	PERF_RECORD_LOST = 2,
+	PERF_RECORD_COMM = 3,
+	PERF_RECORD_EXIT = 4,
+	PERF_RECORD_THROTTLE = 5,
+	PERF_RECORD_UNTHROTTLE = 6,
+	PERF_RECORD_FORK = 7,
+	PERF_RECORD_READ = 8,
+	PERF_RECORD_SAMPLE = 9,
+	PERF_RECORD_MMAP2 = 10,
+	PERF_RECORD_AUX = 11,
+	PERF_RECORD_ITRACE_START = 12,
+	PERF_RECORD_LOST_SAMPLES = 13,
+	PERF_RECORD_SWITCH = 14,
+	PERF_RECORD_SWITCH_CPU_WIDE = 15,
+	PERF_RECORD_NAMESPACES = 16,
+	PERF_RECORD_KSYMBOL = 17,
+	PERF_RECORD_BPF_EVENT = 18,
+	PERF_RECORD_CGROUP = 19,
+	PERF_RECORD_TEXT_POKE = 20,
+	PERF_RECORD_AUX_OUTPUT_HW_ID = 21,
+	PERF_RECORD_MAX = 22,
+};
+
+enum {
+	NET_NS_INDEX = 0,
+	UTS_NS_INDEX = 1,
+	IPC_NS_INDEX = 2,
+	PID_NS_INDEX = 3,
+	USER_NS_INDEX = 4,
+	MNT_NS_INDEX = 5,
+	CGROUP_NS_INDEX = 6,
+	NR_NAMESPACES = 7,
+};
+
+enum perf_event_read_format {
+	PERF_FORMAT_TOTAL_TIME_ENABLED = 1,
+	PERF_FORMAT_TOTAL_TIME_RUNNING = 2,
+	PERF_FORMAT_ID = 4,
+	PERF_FORMAT_GROUP = 8,
+	PERF_FORMAT_LOST = 16,
+	PERF_FORMAT_MAX = 32,
+};
+
+enum perf_probe_config {
+	PERF_PROBE_CONFIG_IS_RETPROBE = 1,
+	PERF_UPROBE_REF_CTR_OFFSET_BITS = 32,
+	PERF_UPROBE_REF_CTR_OFFSET_SHIFT = 32,
+};
+
+enum perf_event_ioc_flags {
+	PERF_IOC_FLAG_GROUP = 1,
+};
+
+enum {
+	IF_STATE_ACTION = 0,
+	IF_STATE_SOURCE = 1,
+	IF_STATE_END = 2,
+};
+
+enum {
+	IF_ACT_NONE = -1,
+	IF_ACT_FILTER = 0,
+	IF_ACT_START = 1,
+	IF_ACT_STOP = 2,
+	IF_SRC_FILE = 3,
+	IF_SRC_KERNEL = 4,
+	IF_SRC_FILEADDR = 5,
+	IF_SRC_KERNELADDR = 6,
+};
+
+typedef void (*event_f)(struct perf_event *, struct perf_cpu_context *, struct perf_event_context *, void *);
+
+struct perf_switch_event {
+	struct task_struct *task;
+	struct task_struct *next_prev;
+	struct {
+		struct perf_event_header header;
+		u32 next_prev_pid;
+		u32 next_prev_tid;
+	} event_id;
+};
+
+typedef void perf_iterate_f(struct perf_event *, void *);
+
+struct stop_event_data {
+	struct perf_event *event;
+	unsigned int restart;
+};
+
+typedef int (*remote_function_f)(void *);
+
+struct remote_function_call {
+	struct task_struct *p;
+	remote_function_f func;
+	void *info;
+	int ret;
+};
+
+struct perf_task_event {
+	struct task_struct *task;
+	struct perf_event_context *task_ctx;
+	struct {
+		struct perf_event_header header;
+		u32 pid;
+		u32 ppid;
+		u32 tid;
+		u32 ptid;
+		u64 time;
+	} event_id;
+};
+
+struct perf_ns_link_info {
+	__u64 dev;
+	__u64 ino;
+};
+
+struct perf_comm_event {
+	struct task_struct *task;
+	char *comm;
+	int comm_size;
+	struct {
+		struct perf_event_header header;
+		u32 pid;
+		u32 tid;
+	} event_id;
+};
+
+struct perf_mmap_event {
+	struct vm_area_struct *vma;
+	const char *file_name;
+	int file_size;
+	int maj;
+	int min;
+	u64 ino;
+	u64 ino_generation;
+	u32 prot;
+	u32 flags;
+	u8 build_id[20];
+	u32 build_id_size;
+	struct {
+		struct perf_event_header header;
+		u32 pid;
+		u32 tid;
+		u64 start;
+		u64 len;
+		u64 pgoff;
+	} event_id;
+};
+
+struct perf_aux_event {
+	struct perf_event_header header;
+	u64 offset;
+	u64 size;
+	u64 flags;
+};
+
+struct perf_aux_event___2 {
+	struct perf_event_header header;
+	u64 hw_id;
+};
+
+struct __group_key {
+	int cpu;
+	struct pmu *pmu;
+	struct cgroup *cgroup;
+};
+
+struct min_heap {
+	void *data;
+	int nr;
+	int size;
+};
+
+struct perf_aux_event___3 {
+	struct perf_event_header header;
+	u32 pid;
+	u32 tid;
+};
+
+struct perf_read_event {
+	struct perf_event_header header;
+	u32 pid;
+	u32 tid;
+};
+
+typedef struct {
+	char *from;
+	char *to;
+} substring_t;
+
+struct remote_output {
+	struct perf_buffer *rb;
+	int err;
+};
+
+struct perf_namespaces_event {
+	struct task_struct *task;
+	struct {
+		struct perf_event_header header;
+		u32 pid;
+		u32 tid;
+		u64 nr_namespaces;
+		struct perf_ns_link_info link_info[7];
+	} event_id;
+};
+
+struct perf_ksymbol_event {
+	const char *name;
+	int name_len;
+	struct {
+		struct perf_event_header header;
+		u64 addr;
+		u32 len;
+		u16 ksym_type;
+		u16 flags;
+	} event_id;
+};
+
+struct perf_bpf_event {
+	struct bpf_prog *prog;
+	struct {
+		struct perf_event_header header;
+		u16 type;
+		u16 flags;
+		u32 id;
+		u8 tag[8];
+	} event_id;
+};
+
+struct perf_text_poke_event {
+	const void *old_bytes;
+	const void *new_bytes;
+	size_t pad;
+	u16 old_len;
+	u16 new_len;
+	struct {
+		struct perf_event_header header;
+		u64 addr;
+	} event_id;
+};
+
+struct event_function_struct {
+	struct perf_event *event;
+	event_f func;
+	void *data;
+};
+
+struct perf_read_data {
+	struct perf_event *event;
+	bool group;
+	int ret;
+};
+
+struct callchain_cpus_entries {
+	struct callback_head callback_head;
+	struct perf_callchain_entry *cpu_entries[0];
+};
+
+struct bp_slots_histogram {
+	atomic_t count[4];
+};
+
+struct rhltable {
+	struct rhashtable ht;
+};
+
+struct bp_cpuinfo {
+	unsigned int cpu_pinned;
+	struct bp_slots_histogram tsk_pinned;
+};
+
+enum bp_type_idx {
+	TYPE_INST = 0,
+	TYPE_DATA = 0,
+	TYPE_MAX = 1,
+};
+
+struct xol_area {
+	wait_queue_head_t wq;
+	atomic_t slot_count;
+	unsigned long *bitmap;
+	struct vm_special_mapping xol_mapping;
+	struct page *pages[2];
+	unsigned long vaddr;
+};
+
+struct uprobe {
+	struct rb_node rb_node;
+	refcount_t ref;
+	struct rw_semaphore register_rwsem;
+	struct rw_semaphore consumer_rwsem;
+	struct list_head pending_list;
+	struct uprobe_consumer *consumers;
+	struct inode *inode;
+	loff_t offset;
+	loff_t ref_ctr_offset;
+	unsigned long flags;
+	struct arch_uprobe arch;
+};
+
+typedef u8 uprobe_opcode_t;
+
+struct delayed_uprobe {
+	struct list_head list;
+	struct uprobe *uprobe;
+	struct mm_struct *mm;
+};
+
+struct page_vma_mapped_walk {
+	unsigned long pfn;
+	unsigned long nr_pages;
+	unsigned long pgoff;
+	struct vm_area_struct *vma;
+	unsigned long address;
+	pmd_t *pmd;
+	pte_t *pte;
+	spinlock_t *ptl;
+	unsigned int flags;
+};
+
+typedef unsigned int fgf_t;
+
+struct __uprobe_key {
+	struct inode *inode;
+	loff_t offset;
+};
+
+struct map_info {
+	struct map_info *next;
+	struct mm_struct *mm;
+	unsigned long vaddr;
+};
+
+typedef int filler_t(struct file *, struct folio *);
+
+struct static_key_deferred {
+	struct static_key key;
+	unsigned long timeout;
+	struct delayed_work work;
+};
+
+struct static_key_mod {
+	struct static_key_mod *next;
+	struct jump_entry *entries;
+	struct module *mod;
+};
+
+struct key_preparsed_payload {
+	const char *orig_description;
+	char *description;
+	union key_payload payload;
+	const void *data;
+	size_t datalen;
+	size_t quotalen;
+	time64_t expiry;
+};
+
+struct key_match_data {
+	bool (*cmp)(const struct key *, const struct key_match_data *);
+	const void *raw_data;
+	void *preparsed;
+	unsigned int lookup_type;
+};
+
+enum kernel_pkey_operation {
+	kernel_pkey_encrypt = 0,
+	kernel_pkey_decrypt = 1,
+	kernel_pkey_sign = 2,
+	kernel_pkey_verify = 3,
+};
+
+struct kernel_pkey_params {
+	struct key *key;
+	const char *encoding;
+	const char *hash_algo;
+	char *info;
+	__u32 in_len;
+	union {
+		__u32 out_len;
+		__u32 in2_len;
+	};
+	enum kernel_pkey_operation op: 8;
+};
+
+struct kernel_pkey_query {
+	__u32 supported_ops;
+	__u32 key_size;
+	__u16 max_data_size;
+	__u16 max_sig_size;
+	__u16 max_enc_size;
+	__u16 max_dec_size;
+};
+
+enum OID {
+	OID_id_dsa_with_sha1 = 0,
+	OID_id_dsa = 1,
+	OID_id_ecPublicKey = 2,
+	OID_id_prime192v1 = 3,
+	OID_id_prime256v1 = 4,
+	OID_id_ecdsa_with_sha1 = 5,
+	OID_id_ecdsa_with_sha224 = 6,
+	OID_id_ecdsa_with_sha256 = 7,
+	OID_id_ecdsa_with_sha384 = 8,
+	OID_id_ecdsa_with_sha512 = 9,
+	OID_rsaEncryption = 10,
+	OID_md2WithRSAEncryption = 11,
+	OID_md3WithRSAEncryption = 12,
+	OID_md4WithRSAEncryption = 13,
+	OID_sha1WithRSAEncryption = 14,
+	OID_sha256WithRSAEncryption = 15,
+	OID_sha384WithRSAEncryption = 16,
+	OID_sha512WithRSAEncryption = 17,
+	OID_sha224WithRSAEncryption = 18,
+	OID_data = 19,
+	OID_signed_data = 20,
+	OID_email_address = 21,
+	OID_contentType = 22,
+	OID_messageDigest = 23,
+	OID_signingTime = 24,
+	OID_smimeCapabilites = 25,
+	OID_smimeAuthenticatedAttrs = 26,
+	OID_md2 = 27,
+	OID_md4 = 28,
+	OID_md5 = 29,
+	OID_mskrb5 = 30,
+	OID_krb5 = 31,
+	OID_krb5u2u = 32,
+	OID_msIndirectData = 33,
+	OID_msStatementType = 34,
+	OID_msSpOpusInfo = 35,
+	OID_msPeImageDataObjId = 36,
+	OID_msIndividualSPKeyPurpose = 37,
+	OID_msOutlookExpress = 38,
+	OID_ntlmssp = 39,
+	OID_negoex = 40,
+	OID_spnego = 41,
+	OID_IAKerb = 42,
+	OID_PKU2U = 43,
+	OID_Scram = 44,
+	OID_certAuthInfoAccess = 45,
+	OID_sha1 = 46,
+	OID_id_ansip384r1 = 47,
+	OID_sha256 = 48,
+	OID_sha384 = 49,
+	OID_sha512 = 50,
+	OID_sha224 = 51,
+	OID_commonName = 52,
+	OID_surname = 53,
+	OID_countryName = 54,
+	OID_locality = 55,
+	OID_stateOrProvinceName = 56,
+	OID_organizationName = 57,
+	OID_organizationUnitName = 58,
+	OID_title = 59,
+	OID_description = 60,
+	OID_name = 61,
+	OID_givenName = 62,
+	OID_initials = 63,
+	OID_generationalQualifier = 64,
+	OID_subjectKeyIdentifier = 65,
+	OID_keyUsage = 66,
+	OID_subjectAltName = 67,
+	OID_issuerAltName = 68,
+	OID_basicConstraints = 69,
+	OID_crlDistributionPoints = 70,
+	OID_certPolicies = 71,
+	OID_authorityKeyIdentifier = 72,
+	OID_extKeyUsage = 73,
+	OID_NetlogonMechanism = 74,
+	OID_appleLocalKdcSupported = 75,
+	OID_gostCPSignA = 76,
+	OID_gostCPSignB = 77,
+	OID_gostCPSignC = 78,
+	OID_gost2012PKey256 = 79,
+	OID_gost2012PKey512 = 80,
+	OID_gost2012Digest256 = 81,
+	OID_gost2012Digest512 = 82,
+	OID_gost2012Signature256 = 83,
+	OID_gost2012Signature512 = 84,
+	OID_gostTC26Sign256A = 85,
+	OID_gostTC26Sign256B = 86,
+	OID_gostTC26Sign256C = 87,
+	OID_gostTC26Sign256D = 88,
+	OID_gostTC26Sign512A = 89,
+	OID_gostTC26Sign512B = 90,
+	OID_gostTC26Sign512C = 91,
+	OID_sm2 = 92,
+	OID_sm3 = 93,
+	OID_SM2_with_SM3 = 94,
+	OID_sm3WithRSAEncryption = 95,
+	OID_TPMLoadableKey = 96,
+	OID_TPMImportableKey = 97,
+	OID_TPMSealedData = 98,
+	OID__NR = 99,
+};
+
+struct x509_certificate;
+
+struct pkcs7_signed_info;
+
+struct pkcs7_message {
+	struct x509_certificate *certs;
+	struct x509_certificate *crl;
+	struct pkcs7_signed_info *signed_infos;
+	u8 version;
+	bool have_authattrs;
+	enum OID data_type;
+	size_t data_len;
+	size_t data_hdrlen;
+	const void *data;
+};
+
+struct compact_control;
+
+struct capture_control {
+	struct compact_control *cc;
+	struct page *page;
+};
+
+struct compact_control {
+	struct list_head freepages;
+	struct list_head migratepages;
+	unsigned int nr_freepages;
+	unsigned int nr_migratepages;
+	unsigned long free_pfn;
+	unsigned long migrate_pfn;
+	unsigned long fast_start_pfn;
+	struct zone *zone;
+	unsigned long total_migrate_scanned;
+	unsigned long total_free_scanned;
+	unsigned short fast_search_fail;
+	short search_order;
+	const gfp_t gfp_mask;
+	int order;
+	int migratetype;
+	const unsigned int alloc_flags;
+	const int highest_zoneidx;
+	enum migrate_mode mode;
+	bool ignore_skip_hint;
+	bool no_set_skip_hint;
+	bool ignore_block_suitable;
+	bool direct_compaction;
+	bool proactive_compaction;
+	bool whole_zone;
+	bool contended;
+	bool finish_pageblock;
+	bool alloc_contig;
+};
+
+struct fid {
+	union {
+		struct {
+			u32 ino;
+			u32 gen;
+			u32 parent_ino;
+			u32 parent_gen;
+		} i32;
+		struct {
+			u32 block;
+			u16 partref;
+			u16 parent_partref;
+			u32 generation;
+			u32 parent_block;
+			u32 parent_generation;
+		} udf;
+		struct {
+			struct {} __empty_raw;
+			__u32 raw[0];
+		};
+	};
+};
+
+typedef void (*btf_trace_mm_filemap_delete_from_page_cache)(void *, struct folio *);
+
+typedef void (*btf_trace_mm_filemap_add_to_page_cache)(void *, struct folio *);
+
+typedef void (*btf_trace_filemap_set_wb_err)(void *, struct address_space *, errseq_t);
+
+typedef void (*btf_trace_file_check_and_advance_wb_err)(void *, struct file *, errseq_t);
+
+enum mapping_flags {
+	AS_EIO = 0,
+	AS_ENOSPC = 1,
+	AS_MM_ALL_LOCKS = 2,
+	AS_UNEVICTABLE = 3,
+	AS_EXITING = 4,
+	AS_NO_WRITEBACK_TAGS = 5,
+	AS_LARGE_FOLIO_SUPPORT = 6,
+	AS_RELEASE_ALWAYS = 7,
+	AS_STABLE_WRITES = 8,
+};
+
+enum behavior {
+	EXCLUSIVE = 0,
+	SHARED = 1,
+	DROP = 2,
+};
+
+enum positive_aop_returns {
+	AOP_WRITEPAGE_ACTIVATE = 524288,
+	AOP_TRUNCATED_PAGE = 524289,
+};
+
+enum {
+	SB_UNFROZEN = 0,
+	SB_FREEZE_WRITE = 1,
+	SB_FREEZE_PAGEFAULT = 2,
+	SB_FREEZE_FS = 3,
+	SB_FREEZE_COMPLETE = 4,
+};
+
+struct xa_node {
+	unsigned char shift;
+	unsigned char offset;
+	unsigned char count;
+	unsigned char nr_values;
+	struct xa_node __attribute__((btf_type_tag("rcu"))) *parent;
+	struct xarray *array;
+	union {
+		struct list_head private_list;
+		struct callback_head callback_head;
+	};
+	void __attribute__((btf_type_tag("rcu"))) *slots[64];
+	union {
+		unsigned long tags[3];
+		unsigned long marks[3];
+	};
+};
+
+struct trace_event_raw_mm_filemap_op_page_cache {
+	struct trace_entry ent;
+	unsigned long pfn;
+	unsigned long i_ino;
+	unsigned long index;
+	dev_t s_dev;
+	unsigned char order;
+	char __data[0];
+};
+
+struct trace_event_raw_filemap_set_wb_err {
+	struct trace_entry ent;
+	unsigned long i_ino;
+	dev_t s_dev;
+	errseq_t errseq;
+	char __data[0];
+};
+
+struct trace_event_raw_file_check_and_advance_wb_err {
+	struct trace_entry ent;
+	struct file *file;
+	unsigned long i_ino;
+	dev_t s_dev;
+	errseq_t old;
+	errseq_t new;
+	char __data[0];
+};
+
+struct cachestat_range {
+	__u64 off;
+	__u64 len;
+};
+
+struct cachestat {
+	__u64 nr_cache;
+	__u64 nr_dirty;
+	__u64 nr_writeback;
+	__u64 nr_evicted;
+	__u64 nr_recently_evicted;
+};
+
+typedef void (*xa_update_node_t)(struct xa_node *);
+
+struct xa_state {
+	struct xarray *xa;
+	unsigned long xa_index;
+	unsigned char xa_shift;
+	unsigned char xa_sibs;
+	unsigned char xa_offset;
+	unsigned char xa_pad;
+	struct xa_node *xa_node;
+	struct xa_node *xa_alloc;
+	xa_update_node_t xa_update;
+	struct list_lru *xa_lru;
+};
+
+struct folio_batch {
+	unsigned char nr;
+	bool percpu_pvec_drained;
+	struct folio *folios[15];
+};
+
+struct wait_page_key {
+	struct folio *folio;
+	int bit_nr;
+	int page_match;
+};
+
+typedef struct pglist_data pg_data_t;
+
+struct trace_event_data_offsets_mm_filemap_op_page_cache {};
+
+struct trace_event_data_offsets_filemap_set_wb_err {};
+
+struct trace_event_data_offsets_file_check_and_advance_wb_err {};
+
+struct reciprocal_value {
+	u32 m;
+	u8 sh1;
+	u8 sh2;
+};
+
+struct kmem_cache_order_objects {
+	unsigned int x;
+};
+
+struct kmem_cache_cpu;
+
+struct kmem_cache_node;
+
+struct kmem_cache {
+	struct kmem_cache_cpu __attribute__((btf_type_tag("percpu"))) *cpu_slab;
+	slab_flags_t flags;
+	unsigned long min_partial;
+	unsigned int size;
+	unsigned int object_size;
+	struct reciprocal_value reciprocal_size;
+	unsigned int offset;
+	unsigned int cpu_partial;
+	unsigned int cpu_partial_slabs;
+	struct kmem_cache_order_objects oo;
+	struct kmem_cache_order_objects min;
+	gfp_t allocflags;
+	int refcount;
+	void (*ctor)(void *);
+	unsigned int inuse;
+	unsigned int align;
+	unsigned int red_left_pad;
+	const char *name;
+	struct list_head list;
+	struct kobject kobj;
+	unsigned long random;
+	unsigned int *random_seq;
+	unsigned int useroffset;
+	unsigned int usersize;
+	struct kmem_cache_node *node[1];
+};
+
+typedef unsigned __int128 __u128;
+
+typedef __u128 u128;
+
+typedef u128 freelist_full_t;
+
+typedef union {
+	struct {
+		void *freelist;
+		unsigned long counter;
+	};
+	freelist_full_t full;
+} freelist_aba_t;
+
+struct slab;
+
+struct kmem_cache_cpu {
+	union {
+		struct {
+			void **freelist;
+			unsigned long tid;
+		};
+		freelist_aba_t freelist_tid;
+	};
+	struct slab *slab;
+	struct slab *partial;
+	local_lock_t lock;
+};
+
+struct slab {
+	unsigned long __page_flags;
+	struct kmem_cache *slab_cache;
+	union {
+		struct {
+			union {
+				struct list_head slab_list;
+				struct {
+					struct slab *next;
+					int slabs;
+				};
+			};
+			union {
+				struct {
+					void *freelist;
+					union {
+						unsigned long counters;
+						struct {
+							unsigned int inuse: 16;
+							unsigned int objects: 15;
+							unsigned int frozen: 1;
+						};
+					};
+				};
+				freelist_aba_t freelist_counter;
+			};
+		};
+		struct callback_head callback_head;
+	};
+	unsigned int __unused;
+	atomic_t __page_refcount;
+	unsigned long memcg_data;
+};
+
+struct kmem_cache_node {
+	spinlock_t list_lock;
+	unsigned long nr_partial;
+	struct list_head partial;
+	atomic_long_t nr_slabs;
+	atomic_long_t total_objects;
+	struct list_head full;
+};
+
+typedef void (*btf_trace_oom_score_adj_update)(void *, struct task_struct *);
+
+typedef void (*btf_trace_reclaim_retry_zone)(void *, struct zoneref *, int, unsigned long, unsigned long, unsigned long, int, bool);
+
+typedef void (*btf_trace_mark_victim)(void *, struct task_struct *, uid_t);
+
+typedef void (*btf_trace_wake_reaper)(void *, int);
+
+typedef void (*btf_trace_start_task_reaping)(void *, int);
+
+typedef void (*btf_trace_finish_task_reaping)(void *, int);
+
+typedef void (*btf_trace_skip_task_reaping)(void *, int);
+
+enum compact_priority {
+	COMPACT_PRIO_SYNC_FULL = 0,
+	MIN_COMPACT_PRIORITY = 0,
+	COMPACT_PRIO_SYNC_LIGHT = 1,
+	MIN_COMPACT_COSTLY_PRIORITY = 1,
+	DEF_COMPACT_PRIORITY = 1,
+	COMPACT_PRIO_ASYNC = 2,
+	INIT_COMPACT_PRIORITY = 2,
+};
+
+enum compact_result {
+	COMPACT_NOT_SUITABLE_ZONE = 0,
+	COMPACT_SKIPPED = 1,
+	COMPACT_DEFERRED = 2,
+	COMPACT_NO_SUITABLE_PAGE = 3,
+	COMPACT_CONTINUE = 4,
+	COMPACT_COMPLETE = 5,
+	COMPACT_PARTIAL_SKIPPED = 6,
+	COMPACT_CONTENDED = 7,
+	COMPACT_SUCCESS = 8,
+};
+
+typedef void (*btf_trace_compact_retry)(void *, int, enum compact_priority, enum compact_result, int, int, bool);
+
+enum oom_constraint {
+	CONSTRAINT_NONE = 0,
+	CONSTRAINT_CPUSET = 1,
+	CONSTRAINT_MEMORY_POLICY = 2,
+	CONSTRAINT_MEMCG = 3,
+};
+
+enum memcg_memory_event {
+	MEMCG_LOW = 0,
+	MEMCG_HIGH = 1,
+	MEMCG_MAX = 2,
+	MEMCG_OOM = 3,
+	MEMCG_OOM_KILL = 4,
+	MEMCG_OOM_GROUP_KILL = 5,
+	MEMCG_SWAP_HIGH = 6,
+	MEMCG_SWAP_MAX = 7,
+	MEMCG_SWAP_FAIL = 8,
+	MEMCG_NR_MEMORY_EVENTS = 9,
+};
+
+struct trace_event_raw_oom_score_adj_update {
+	struct trace_entry ent;
+	pid_t pid;
+	char comm[16];
+	short oom_score_adj;
+	char __data[0];
+};
+
+struct trace_event_raw_reclaim_retry_zone {
+	struct trace_entry ent;
+	int node;
+	int zone_idx;
+	int order;
+	unsigned long reclaimable;
+	unsigned long available;
+	unsigned long min_wmark;
+	int no_progress_loops;
+	bool wmark_check;
+	char __data[0];
+};
+
+struct trace_event_raw_mark_victim {
+	struct trace_entry ent;
+	int pid;
+	u32 __data_loc_comm;
+	unsigned long total_vm;
+	unsigned long anon_rss;
+	unsigned long file_rss;
+	unsigned long shmem_rss;
+	uid_t uid;
+	unsigned long pgtables;
+	short oom_score_adj;
+	char __data[0];
+};
+
+struct trace_event_raw_wake_reaper {
+	struct trace_entry ent;
+	int pid;
+	char __data[0];
+};
+
+struct trace_event_raw_start_task_reaping {
+	struct trace_entry ent;
+	int pid;
+	char __data[0];
+};
+
+struct trace_event_raw_finish_task_reaping {
+	struct trace_entry ent;
+	int pid;
+	char __data[0];
+};
+
+struct trace_event_raw_skip_task_reaping {
+	struct trace_entry ent;
+	int pid;
+	char __data[0];
+};
+
+struct trace_event_raw_compact_retry {
+	struct trace_entry ent;
+	int order;
+	int priority;
+	int result;
+	int retries;
+	int max_retries;
+	bool ret;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_mark_victim {
+	u32 comm;
+};
+
+struct oom_control {
+	struct zonelist *zonelist;
+	nodemask_t *nodemask;
+	struct mem_cgroup *memcg;
+	const gfp_t gfp_mask;
+	const int order;
+	unsigned long totalpages;
+	struct task_struct *chosen;
+	long chosen_points;
+	enum oom_constraint constraint;
+};
+
+typedef unsigned int zap_flags_t;
+
+struct zap_details {
+	struct folio *single_folio;
+	bool even_cows;
+	zap_flags_t zap_flags;
+};
+
+struct trace_event_data_offsets_oom_score_adj_update {};
+
+struct trace_event_data_offsets_reclaim_retry_zone {};
+
+struct trace_event_data_offsets_wake_reaper {};
+
+struct trace_event_data_offsets_start_task_reaping {};
+
+struct trace_event_data_offsets_finish_task_reaping {};
+
+struct trace_event_data_offsets_skip_task_reaping {};
+
+struct trace_event_data_offsets_compact_retry {};
+
+enum wb_stat_item {
+	WB_RECLAIMABLE = 0,
+	WB_WRITEBACK = 1,
+	WB_DIRTIED = 2,
+	WB_WRITTEN = 3,
+	NR_WB_STAT_ITEMS = 4,
+};
+
+enum {
+	XA_CHECK_SCHED = 4096,
+};
+
+enum vmscan_throttle_state {
+	VMSCAN_THROTTLE_WRITEBACK = 0,
+	VMSCAN_THROTTLE_ISOLATED = 1,
+	VMSCAN_THROTTLE_NOPROGRESS = 2,
+	VMSCAN_THROTTLE_CONGESTED = 3,
+	NR_VMSCAN_THROTTLE = 4,
+};
+
+enum zone_stat_item {
+	NR_FREE_PAGES = 0,
+	NR_ZONE_LRU_BASE = 1,
+	NR_ZONE_INACTIVE_ANON = 1,
+	NR_ZONE_ACTIVE_ANON = 2,
+	NR_ZONE_INACTIVE_FILE = 3,
+	NR_ZONE_ACTIVE_FILE = 4,
+	NR_ZONE_UNEVICTABLE = 5,
+	NR_ZONE_WRITE_PENDING = 6,
+	NR_MLOCK = 7,
+	NR_BOUNCE = 8,
+	NR_ZSPAGES = 9,
+	NR_FREE_CMA_PAGES = 10,
+	NR_VM_ZONE_STAT_ITEMS = 11,
+};
+
+enum wb_state {
+	WB_registered = 0,
+	WB_writeback_running = 1,
+	WB_has_dirty_io = 2,
+	WB_start_all = 3,
+};
+
+enum page_memcg_data_flags {
+	MEMCG_DATA_OBJCGS = 1,
+	MEMCG_DATA_KMEM = 2,
+	__NR_MEMCG_DATA_FLAGS = 4,
+};
+
+struct dirty_throttle_control {
+	struct wb_domain *dom;
+	struct dirty_throttle_control *gdtc;
+	struct bdi_writeback *wb;
+	struct fprop_local_percpu *wb_completions;
+	unsigned long avail;
+	unsigned long dirty;
+	unsigned long thresh;
+	unsigned long bg_thresh;
+	unsigned long wb_dirty;
+	unsigned long wb_thresh;
+	unsigned long wb_bg_thresh;
+	unsigned long pos_ratio;
+};
+
+struct wb_lock_cookie {
+	bool locked;
+	unsigned long flags;
+};
+
+typedef int (*writepage_t)(struct folio *, struct writeback_control *, void *);
+
+typedef void (*btf_trace_mm_lru_insertion)(void *, struct folio *);
+
+typedef void (*btf_trace_mm_lru_activate)(void *, struct folio *);
+
+struct lru_rotate {
+	local_lock_t lock;
+	struct folio_batch fbatch;
+};
+
+struct cpu_fbatches {
+	local_lock_t lock;
+	struct folio_batch lru_add;
+	struct folio_batch lru_deactivate_file;
+	struct folio_batch lru_deactivate;
+	struct folio_batch lru_lazyfree;
+	struct folio_batch activate;
+};
+
+enum lru_list {
+	LRU_INACTIVE_ANON = 0,
+	LRU_ACTIVE_ANON = 1,
+	LRU_INACTIVE_FILE = 2,
+	LRU_ACTIVE_FILE = 3,
+	LRU_UNEVICTABLE = 4,
+	NR_LRU_LISTS = 5,
+};
+
+enum {
+	LRU_GEN_ANON = 0,
+	LRU_GEN_FILE = 1,
+};
+
+enum {
+	LRU_GEN_CORE = 0,
+	LRU_GEN_MM_WALK = 1,
+	LRU_GEN_NONLEAF_YOUNG = 2,
+	NR_LRU_GEN_CAPS = 3,
+};
+
+struct trace_event_raw_mm_lru_insertion {
+	struct trace_entry ent;
+	struct folio *folio;
+	unsigned long pfn;
+	enum lru_list lru;
+	unsigned long flags;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_lru_activate {
+	struct trace_entry ent;
+	struct folio *folio;
+	unsigned long pfn;
+	char __data[0];
+};
+
+typedef void (*move_fn_t)(struct lruvec *, struct folio *);
+
+struct trace_event_data_offsets_mm_lru_insertion {};
+
+struct trace_event_data_offsets_mm_lru_activate {};
+
+typedef union {
+	struct page **pages;
+	struct folio **folios;
+	struct encoded_page **encoded_pages;
+} release_pages_arg;
+
+typedef void (*btf_trace_mm_vmscan_kswapd_sleep)(void *, int);
+
+typedef void (*btf_trace_mm_vmscan_kswapd_wake)(void *, int, int, int);
+
+typedef void (*btf_trace_mm_vmscan_wakeup_kswapd)(void *, int, int, int, gfp_t);
+
+typedef void (*btf_trace_mm_vmscan_direct_reclaim_begin)(void *, int, gfp_t);
+
+typedef void (*btf_trace_mm_vmscan_memcg_reclaim_begin)(void *, int, gfp_t);
+
+typedef void (*btf_trace_mm_vmscan_memcg_softlimit_reclaim_begin)(void *, int, gfp_t);
+
+typedef void (*btf_trace_mm_vmscan_direct_reclaim_end)(void *, unsigned long);
+
+typedef void (*btf_trace_mm_vmscan_memcg_reclaim_end)(void *, unsigned long);
+
+typedef void (*btf_trace_mm_vmscan_memcg_softlimit_reclaim_end)(void *, unsigned long);
+
+typedef void (*btf_trace_mm_shrink_slab_start)(void *, struct shrinker *, struct shrink_control *, long, unsigned long, unsigned long long, unsigned long, int);
+
+typedef void (*btf_trace_mm_shrink_slab_end)(void *, struct shrinker *, int, int, long, long, long);
+
+typedef unsigned int isolate_mode_t;
+
+typedef void (*btf_trace_mm_vmscan_lru_isolate)(void *, int, int, unsigned long, unsigned long, unsigned long, unsigned long, isolate_mode_t, int);
+
+typedef void (*btf_trace_mm_vmscan_write_folio)(void *, struct folio *);
+
+struct reclaim_stat;
+
+typedef void (*btf_trace_mm_vmscan_lru_shrink_inactive)(void *, int, unsigned long, unsigned long, struct reclaim_stat *, int, int);
+
+struct reclaim_stat {
+	unsigned int nr_dirty;
+	unsigned int nr_unqueued_dirty;
+	unsigned int nr_congested;
+	unsigned int nr_writeback;
+	unsigned int nr_immediate;
+	unsigned int nr_pageout;
+	unsigned int nr_activate[2];
+	unsigned int nr_ref_keep;
+	unsigned int nr_unmap_fail;
+	unsigned int nr_lazyfree_fail;
+};
+
+typedef void (*btf_trace_mm_vmscan_lru_shrink_active)(void *, int, unsigned long, unsigned long, unsigned long, unsigned long, int, int);
+
+typedef void (*btf_trace_mm_vmscan_node_reclaim_begin)(void *, int, int, gfp_t);
+
+typedef void (*btf_trace_mm_vmscan_node_reclaim_end)(void *, unsigned long);
+
+typedef void (*btf_trace_mm_vmscan_throttled)(void *, int, int, int, int);
+
+enum page_walk_lock {
+	PGWALK_RDLOCK = 0,
+	PGWALK_WRLOCK = 1,
+	PGWALK_WRLOCK_VERIFY = 2,
+};
+
+struct mm_walk;
+
+struct mm_walk_ops {
+	int (*pgd_entry)(pgd_t *, unsigned long, unsigned long, struct mm_walk *);
+	int (*p4d_entry)(p4d_t *, unsigned long, unsigned long, struct mm_walk *);
+	int (*pud_entry)(pud_t *, unsigned long, unsigned long, struct mm_walk *);
+	int (*pmd_entry)(pmd_t *, unsigned long, unsigned long, struct mm_walk *);
+	int (*pte_entry)(pte_t *, unsigned long, unsigned long, struct mm_walk *);
+	int (*pte_hole)(unsigned long, unsigned long, int, struct mm_walk *);
+	int (*hugetlb_entry)(pte_t *, unsigned long, unsigned long, unsigned long, struct mm_walk *);
+	int (*test_walk)(unsigned long, unsigned long, struct mm_walk *);
+	int (*pre_vma)(unsigned long, unsigned long, struct mm_walk *);
+	void (*post_vma)(struct mm_walk *);
+	enum page_walk_lock walk_lock;
+};
+
+enum page_walk_action {
+	ACTION_SUBTREE = 0,
+	ACTION_CONTINUE = 1,
+	ACTION_AGAIN = 2,
+};
+
+struct mm_walk {
+	const struct mm_walk_ops *ops;
+	struct mm_struct *mm;
+	pgd_t *pgd;
+	struct vm_area_struct *vma;
+	enum page_walk_action action;
+	bool no_vma;
+	void *private;
+};
+
+enum {
+	MEMCG_LRU_NOP = 0,
+	MEMCG_LRU_HEAD = 1,
+	MEMCG_LRU_TAIL = 2,
+	MEMCG_LRU_OLD = 3,
+	MEMCG_LRU_YOUNG = 4,
+};
+
+enum folio_references {
+	FOLIOREF_RECLAIM = 0,
+	FOLIOREF_RECLAIM_CLEAN = 1,
+	FOLIOREF_KEEP = 2,
+	FOLIOREF_ACTIVATE = 3,
+};
+
+enum pgdat_flags {
+	PGDAT_DIRTY = 0,
+	PGDAT_WRITEBACK = 1,
+	PGDAT_RECLAIM_LOCKED = 2,
+};
+
+enum mthp_stat_item {
+	MTHP_STAT_ANON_FAULT_ALLOC = 0,
+	MTHP_STAT_ANON_FAULT_FALLBACK = 1,
+	MTHP_STAT_ANON_FAULT_FALLBACK_CHARGE = 2,
+	MTHP_STAT_SWPOUT = 3,
+	MTHP_STAT_SWPOUT_FALLBACK = 4,
+	__MTHP_STAT_COUNT = 5,
+};
+
+enum ttu_flags {
+	TTU_SPLIT_HUGE_PMD = 4,
+	TTU_IGNORE_MLOCK = 8,
+	TTU_SYNC = 16,
+	TTU_HWPOISON = 32,
+	TTU_BATCH_FLUSH = 64,
+	TTU_RMAP_LOCKED = 128,
+};
+
+enum {
+	SWP_USED = 1,
+	SWP_WRITEOK = 2,
+	SWP_DISCARDABLE = 4,
+	SWP_DISCARDING = 8,
+	SWP_SOLIDSTATE = 16,
+	SWP_CONTINUED = 32,
+	SWP_BLKDEV = 64,
+	SWP_ACTIVATED = 128,
+	SWP_FS_OPS = 256,
+	SWP_AREA_DISCARD = 512,
+	SWP_PAGE_DISCARD = 1024,
+	SWP_STABLE_WRITES = 2048,
+	SWP_SYNCHRONOUS_IO = 4096,
+	SWP_SCANNING = 16384,
+};
+
+enum migrate_reason {
+	MR_COMPACTION = 0,
+	MR_MEMORY_FAILURE = 1,
+	MR_MEMORY_HOTPLUG = 2,
+	MR_SYSCALL = 3,
+	MR_MEMPOLICY_MBIND = 4,
+	MR_NUMA_MISPLACED = 5,
+	MR_CONTIG_RANGE = 6,
+	MR_LONGTERM_PIN = 7,
+	MR_DEMOTION = 8,
+	MR_TYPES = 9,
+};
+
+enum {
+	MM_LEAF_TOTAL = 0,
+	MM_LEAF_OLD = 1,
+	MM_LEAF_YOUNG = 2,
+	MM_NONLEAF_TOTAL = 3,
+	MM_NONLEAF_FOUND = 4,
+	MM_NONLEAF_ADDED = 5,
+	NR_MM_STATS = 6,
+};
+
+enum migratetype {
+	MIGRATE_UNMOVABLE = 0,
+	MIGRATE_MOVABLE = 1,
+	MIGRATE_RECLAIMABLE = 2,
+	MIGRATE_FALLBACKS = 3,
+	MIGRATE_CMA = 3,
+	MIGRATE_PCPTYPES = 4,
+	MIGRATE_HIGHATOMIC = 4,
+	MIGRATE_ISOLATE = 5,
+	MIGRATE_TYPES = 6,
+};
+
+enum zone_watermarks {
+	WMARK_MIN = 0,
+	WMARK_LOW = 1,
+	WMARK_HIGH = 2,
+	WMARK_PROMO = 3,
+	NR_WMARK = 4,
+};
+
+enum lruvec_flags {
+	LRUVEC_CGROUP_CONGESTED = 0,
+	LRUVEC_NODE_CONGESTED = 1,
+};
+
+enum scan_balance {
+	SCAN_EQUAL = 0,
+	SCAN_FRACT = 1,
+	SCAN_ANON = 2,
+	SCAN_FILE = 3,
+};
+
+enum zone_flags {
+	ZONE_BOOSTED_WATERMARK = 0,
+	ZONE_RECLAIM_ACTIVE = 1,
+};
+
+struct trace_event_raw_mm_vmscan_kswapd_sleep {
+	struct trace_entry ent;
+	int nid;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_vmscan_kswapd_wake {
+	struct trace_entry ent;
+	int nid;
+	int zid;
+	int order;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_vmscan_wakeup_kswapd {
+	struct trace_entry ent;
+	int nid;
+	int zid;
+	int order;
+	unsigned long gfp_flags;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_vmscan_direct_reclaim_begin_template {
+	struct trace_entry ent;
+	int order;
+	unsigned long gfp_flags;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_vmscan_direct_reclaim_end_template {
+	struct trace_entry ent;
+	unsigned long nr_reclaimed;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_shrink_slab_start {
+	struct trace_entry ent;
+	struct shrinker *shr;
+	void *shrink;
+	int nid;
+	long nr_objects_to_shrink;
+	unsigned long gfp_flags;
+	unsigned long cache_items;
+	unsigned long long delta;
+	unsigned long total_scan;
+	int priority;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_shrink_slab_end {
+	struct trace_entry ent;
+	struct shrinker *shr;
+	int nid;
+	void *shrink;
+	long unused_scan;
+	long new_scan;
+	int retval;
+	long total_scan;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_vmscan_lru_isolate {
+	struct trace_entry ent;
+	int highest_zoneidx;
+	int order;
+	unsigned long nr_requested;
+	unsigned long nr_scanned;
+	unsigned long nr_skipped;
+	unsigned long nr_taken;
+	unsigned int isolate_mode;
+	int lru;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_vmscan_write_folio {
+	struct trace_entry ent;
+	unsigned long pfn;
+	int reclaim_flags;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_vmscan_lru_shrink_inactive {
+	struct trace_entry ent;
+	int nid;
+	unsigned long nr_scanned;
+	unsigned long nr_reclaimed;
+	unsigned long nr_dirty;
+	unsigned long nr_writeback;
+	unsigned long nr_congested;
+	unsigned long nr_immediate;
+	unsigned int nr_activate0;
+	unsigned int nr_activate1;
+	unsigned long nr_ref_keep;
+	unsigned long nr_unmap_fail;
+	int priority;
+	int reclaim_flags;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_vmscan_lru_shrink_active {
+	struct trace_entry ent;
+	int nid;
+	unsigned long nr_taken;
+	unsigned long nr_active;
+	unsigned long nr_deactivated;
+	unsigned long nr_referenced;
+	int priority;
+	int reclaim_flags;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_vmscan_node_reclaim_begin {
+	struct trace_entry ent;
+	int nid;
+	int order;
+	unsigned long gfp_flags;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_vmscan_throttled {
+	struct trace_entry ent;
+	int nid;
+	int usec_timeout;
+	int usec_delayed;
+	int reason;
+	char __data[0];
+};
+
+struct migration_target_control {
+	int nid;
+	nodemask_t *nmask;
+	gfp_t gfp_mask;
+};
+
+struct scan_control {
+	unsigned long nr_to_reclaim;
+	nodemask_t *nodemask;
+	struct mem_cgroup *target_mem_cgroup;
+	unsigned long anon_cost;
+	unsigned long file_cost;
+	unsigned int may_deactivate: 2;
+	unsigned int force_deactivate: 1;
+	unsigned int skipped_deactivate: 1;
+	unsigned int may_writepage: 1;
+	unsigned int may_unmap: 1;
+	unsigned int may_swap: 1;
+	unsigned int proactive: 1;
+	unsigned int memcg_low_reclaim: 1;
+	unsigned int memcg_low_skipped: 1;
+	unsigned int hibernation_mode: 1;
+	unsigned int compaction_ready: 1;
+	unsigned int cache_trim_mode: 1;
+	unsigned int file_is_tiny: 1;
+	unsigned int no_demotion: 1;
+	s8 order;
+	s8 priority;
+	s8 reclaim_idx;
+	gfp_t gfp_mask;
+	unsigned long nr_scanned;
+	unsigned long nr_reclaimed;
+	struct {
+		unsigned int dirty;
+		unsigned int unqueued_dirty;
+		unsigned int congested;
+		unsigned int writeback;
+		unsigned int immediate;
+		unsigned int file_taken;
+		unsigned int taken;
+	} nr;
+	struct reclaim_state reclaim_state;
+	u64 android_vendor_data1;
+};
+
+struct mem_cgroup_reclaim_cookie {
+	pg_data_t *pgdat;
+	unsigned int generation;
+};
+
+struct ctrl_pos {
+	unsigned long refaulted;
+	unsigned long total;
+	int gain;
+};
+
+typedef enum {
+	PAGE_KEEP = 0,
+	PAGE_ACTIVATE = 1,
+	PAGE_SUCCESS = 2,
+	PAGE_CLEAN = 3,
+} pageout_t;
+
+struct trace_event_data_offsets_mm_vmscan_kswapd_sleep {};
+
+struct trace_event_data_offsets_mm_vmscan_kswapd_wake {};
+
+struct trace_event_data_offsets_mm_vmscan_wakeup_kswapd {};
+
+struct trace_event_data_offsets_mm_vmscan_direct_reclaim_begin_template {};
+
+struct trace_event_data_offsets_mm_vmscan_direct_reclaim_end_template {};
+
+struct trace_event_data_offsets_mm_shrink_slab_start {};
+
+struct trace_event_data_offsets_mm_shrink_slab_end {};
+
+struct trace_event_data_offsets_mm_vmscan_lru_isolate {};
+
+struct trace_event_data_offsets_mm_vmscan_write_folio {};
+
+struct trace_event_data_offsets_mm_vmscan_lru_shrink_inactive {};
+
+struct trace_event_data_offsets_mm_vmscan_lru_shrink_active {};
+
+struct trace_event_data_offsets_mm_vmscan_node_reclaim_begin {};
+
+struct trace_event_data_offsets_mm_vmscan_throttled {};
+
+struct fileattr {
+	u32 flags;
+	u32 fsx_xflags;
+	u32 fsx_extsize;
+	u32 fsx_nextents;
+	u32 fsx_projid;
+	u32 fsx_cowextsize;
+	bool flags_valid: 1;
+	bool fsx_valid: 1;
+};
+
+struct constant_table {
+	const char *name;
+	int value;
+};
+
+enum sgp_type {
+	SGP_READ = 0,
+	SGP_NOALLOC = 1,
+	SGP_CACHE = 2,
+	SGP_WRITE = 3,
+	SGP_FALLOC = 4,
+};
+
+enum mfill_atomic_mode {
+	MFILL_ATOMIC_COPY = 0,
+	MFILL_ATOMIC_ZEROPAGE = 1,
+	MFILL_ATOMIC_CONTINUE = 2,
+	MFILL_ATOMIC_POISON = 3,
+	NR_MFILL_ATOMIC_MODES = 4,
+};
+
+enum shmem_param {
+	Opt_gid = 0,
+	Opt_huge = 1,
+	Opt_mode = 2,
+	Opt_mpol = 3,
+	Opt_nr_blocks = 4,
+	Opt_nr_inodes = 5,
+	Opt_size = 6,
+	Opt_uid = 7,
+	Opt_inode32 = 8,
+	Opt_inode64 = 9,
+	Opt_noswap = 10,
+	Opt_quota = 11,
+	Opt_usrquota = 12,
+	Opt_grpquota = 13,
+	Opt_usrquota_block_hardlimit = 14,
+	Opt_usrquota_inode_hardlimit = 15,
+	Opt_grpquota_block_hardlimit = 16,
+	Opt_grpquota_inode_hardlimit = 17,
+};
+
+enum fid_type {
+	FILEID_ROOT = 0,
+	FILEID_INO32_GEN = 1,
+	FILEID_INO32_GEN_PARENT = 2,
+	FILEID_BTRFS_WITHOUT_PARENT = 77,
+	FILEID_BTRFS_WITH_PARENT = 78,
+	FILEID_BTRFS_WITH_PARENT_ROOT = 79,
+	FILEID_UDF_WITHOUT_PARENT = 81,
+	FILEID_UDF_WITH_PARENT = 82,
+	FILEID_NILFS_WITHOUT_PARENT = 97,
+	FILEID_NILFS_WITH_PARENT = 98,
+	FILEID_FAT_WITHOUT_PARENT = 113,
+	FILEID_FAT_WITH_PARENT = 114,
+	FILEID_LUSTRE = 151,
+	FILEID_KERNFS = 254,
+	FILEID_INVALID = 255,
+};
+
+enum {
+	_DQUOT_USAGE_ENABLED = 0,
+	_DQUOT_LIMITS_ENABLED = 1,
+	_DQUOT_SUSPENDED = 2,
+	_DQUOT_STATE_FLAGS = 3,
+};
+
+struct shared_policy {};
+
+struct simple_xattrs {
+	struct rb_root rb_root;
+	rwlock_t lock;
+};
+
+struct shmem_inode_info {
+	spinlock_t lock;
+	unsigned int seals;
+	unsigned long flags;
+	unsigned long alloced;
+	unsigned long swapped;
+	unsigned long fallocend;
+	struct list_head shrinklist;
+	struct list_head swaplist;
+	struct shared_policy policy;
+	struct simple_xattrs xattrs;
+	atomic_t stop_eviction;
+	struct timespec64 i_crtime;
+	unsigned int fsflags;
+	struct offset_ctx dir_offsets;
+	struct inode vfs_inode;
+	u64 android_vendor_data1;
+};
+
+typedef unsigned int uffd_flags_t;
+
+struct shmem_quota_limits {
+	qsize_t usrquota_bhardlimit;
+	qsize_t usrquota_ihardlimit;
+	qsize_t grpquota_bhardlimit;
+	qsize_t grpquota_ihardlimit;
+};
+
+struct mempolicy;
+
+struct shmem_sb_info {
+	unsigned long max_blocks;
+	struct percpu_counter used_blocks;
+	unsigned long max_inodes;
+	unsigned long free_ispace;
+	raw_spinlock_t stat_lock;
+	umode_t mode;
+	unsigned char huge;
+	kuid_t uid;
+	kgid_t gid;
+	bool full_inums;
+	bool noswap;
+	ino_t next_ino;
+	ino_t __attribute__((btf_type_tag("percpu"))) *ino_batch;
+	struct mempolicy *mpol;
+	spinlock_t shrinklist_lock;
+	struct list_head shrinklist;
+	unsigned long shrinklist_len;
+	struct shmem_quota_limits qlimits;
+};
+
+struct mempolicy {};
+
+struct simple_xattr {
+	struct rb_node rb_node;
+	char *name;
+	size_t size;
+	char value[0];
+};
+
+typedef int (*initxattrs)(struct inode *, const struct xattr *, void *);
+
+struct shmem_falloc {
+	wait_queue_head_t *waitq;
+	unsigned long start;
+	unsigned long next;
+	unsigned long nr_falloced;
+	unsigned long nr_unswapped;
+};
+
+struct shmem_options {
+	unsigned long long blocks;
+	unsigned long long inodes;
+	struct mempolicy *mpol;
+	kuid_t uid;
+	kgid_t gid;
+	umode_t mode;
+	bool full_inums;
+	int huge;
+	int seen;
+	bool noswap;
+	unsigned short quota_types;
+	struct shmem_quota_limits qlimits;
+};
+
+struct vm_event_state {
+	unsigned long event[106];
+};
+
+enum writeback_stat_item {
+	NR_DIRTY_THRESHOLD = 0,
+	NR_DIRTY_BG_THRESHOLD = 1,
+	NR_VM_WRITEBACK_STAT_ITEMS = 2,
+};
+
+struct contig_page_info {
+	unsigned long free_pages;
+	unsigned long free_blocks_total;
+	unsigned long free_blocks_suitable;
+};
+
+enum {
+	RADIX_TREE_ITER_TAG_MASK = 15,
+	RADIX_TREE_ITER_TAGGED = 16,
+	RADIX_TREE_ITER_CONTIG = 32,
+};
+
+struct radix_tree_iter {
+	unsigned long index;
+	unsigned long next_index;
+	unsigned long tags;
+	struct xa_node *node;
+};
+
+enum mminit_level {
+	MMINIT_WARNING = 0,
+	MMINIT_VERIFY = 1,
+	MMINIT_TRACE = 2,
+};
+
+enum meminit_context {
+	MEMINIT_EARLY = 0,
+	MEMINIT_HOTPLUG = 1,
+};
+
+typedef void (*btf_trace_percpu_alloc_percpu)(void *, unsigned long, bool, bool, size_t, size_t, void *, int, void __attribute__((btf_type_tag("percpu"))) *, size_t, gfp_t);
+
+typedef void (*btf_trace_percpu_free_percpu)(void *, void *, int, void __attribute__((btf_type_tag("percpu"))) *);
+
+typedef void (*btf_trace_percpu_alloc_percpu_fail)(void *, bool, bool, size_t, size_t);
+
+typedef void (*btf_trace_percpu_create_chunk)(void *, void *);
+
+typedef void (*btf_trace_percpu_destroy_chunk)(void *, void *);
+
+struct pcpu_block_md {
+	int scan_hint;
+	int scan_hint_start;
+	int contig_hint;
+	int contig_hint_start;
+	int left_free;
+	int right_free;
+	int first_free;
+	int nr_bits;
+};
+
+struct pcpu_chunk {
+	struct list_head list;
+	int free_bytes;
+	struct pcpu_block_md chunk_md;
+	unsigned long *bound_map;
+	void *base_addr;
+	unsigned long *alloc_map;
+	struct pcpu_block_md *md_blocks;
+	void *data;
+	bool immutable;
+	bool isolated;
+	int start_offset;
+	int end_offset;
+	struct obj_cgroup **obj_cgroups;
+	int nr_pages;
+	int nr_populated;
+	int nr_empty_pop_pages;
+	unsigned long populated[0];
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+enum memcg_stat_item {
+	MEMCG_SWAP = 41,
+	MEMCG_SOCK = 42,
+	MEMCG_PERCPU_B = 43,
+	MEMCG_VMALLOC = 44,
+	MEMCG_KMEM = 45,
+	MEMCG_ZSWAP_B = 46,
+	MEMCG_ZSWAPPED = 47,
+	MEMCG_NR_STAT = 48,
+};
+
+struct trace_event_raw_percpu_alloc_percpu {
+	struct trace_entry ent;
+	unsigned long call_site;
+	bool reserved;
+	bool is_atomic;
+	size_t size;
+	size_t align;
+	void *base_addr;
+	int off;
+	void __attribute__((btf_type_tag("percpu"))) *ptr;
+	size_t bytes_alloc;
+	unsigned long gfp_flags;
+	char __data[0];
+};
+
+struct trace_event_raw_percpu_free_percpu {
+	struct trace_entry ent;
+	void *base_addr;
+	int off;
+	void __attribute__((btf_type_tag("percpu"))) *ptr;
+	char __data[0];
+};
+
+struct trace_event_raw_percpu_alloc_percpu_fail {
+	struct trace_entry ent;
+	bool reserved;
+	bool is_atomic;
+	size_t size;
+	size_t align;
+	char __data[0];
+};
+
+struct trace_event_raw_percpu_create_chunk {
+	struct trace_entry ent;
+	void *base_addr;
+	char __data[0];
+};
+
+struct trace_event_raw_percpu_destroy_chunk {
+	struct trace_entry ent;
+	void *base_addr;
+	char __data[0];
+};
+
+struct pcpu_group_info {
+	int nr_units;
+	unsigned long base_offset;
+	unsigned int *cpu_map;
+};
+
+struct pcpu_alloc_info {
+	size_t static_size;
+	size_t reserved_size;
+	size_t dyn_size;
+	size_t unit_size;
+	size_t atom_size;
+	size_t alloc_size;
+	size_t __ai_size;
+	int nr_groups;
+	struct pcpu_group_info groups[0];
+};
+
+struct trace_event_data_offsets_percpu_alloc_percpu {};
+
+struct trace_event_data_offsets_percpu_free_percpu {};
+
+struct trace_event_data_offsets_percpu_alloc_percpu_fail {};
+
+struct trace_event_data_offsets_percpu_create_chunk {};
+
+struct trace_event_data_offsets_percpu_destroy_chunk {};
+
+typedef void (*btf_trace_kmem_cache_alloc)(void *, unsigned long, const void *, struct kmem_cache *, gfp_t, int);
+
+typedef void (*btf_trace_kmalloc)(void *, unsigned long, const void *, size_t, size_t, gfp_t, int);
+
+typedef void (*btf_trace_kfree)(void *, unsigned long, const void *);
+
+typedef void (*btf_trace_kmem_cache_free)(void *, unsigned long, const void *, const struct kmem_cache *);
+
+typedef void (*btf_trace_mm_page_free)(void *, struct page *, unsigned int);
+
+typedef void (*btf_trace_mm_page_free_batched)(void *, struct page *);
+
+typedef void (*btf_trace_mm_page_alloc)(void *, struct page *, unsigned int, gfp_t, int);
+
+typedef void (*btf_trace_mm_page_alloc_zone_locked)(void *, struct page *, unsigned int, int, int);
+
+typedef void (*btf_trace_mm_page_pcpu_drain)(void *, struct page *, unsigned int, int);
+
+typedef void (*btf_trace_mm_page_alloc_extfrag)(void *, struct page *, int, int, int, int);
+
+typedef void (*btf_trace_rss_stat)(void *, struct mm_struct *, int);
+
+struct kmalloc_info_struct {
+	const char *name[3];
+	unsigned int size;
+};
+
+enum slab_state {
+	DOWN = 0,
+	PARTIAL = 1,
+	PARTIAL_NODE = 2,
+	UP = 3,
+	FULL = 4,
+};
+
+struct trace_event_raw_kmem_cache_alloc {
+	struct trace_entry ent;
+	unsigned long call_site;
+	const void *ptr;
+	size_t bytes_req;
+	size_t bytes_alloc;
+	unsigned long gfp_flags;
+	int node;
+	bool accounted;
+	char __data[0];
+};
+
+struct trace_event_raw_kmalloc {
+	struct trace_entry ent;
+	unsigned long call_site;
+	const void *ptr;
+	size_t bytes_req;
+	size_t bytes_alloc;
+	unsigned long gfp_flags;
+	int node;
+	char __data[0];
+};
+
+struct trace_event_raw_kfree {
+	struct trace_entry ent;
+	unsigned long call_site;
+	const void *ptr;
+	char __data[0];
+};
+
+struct trace_event_raw_kmem_cache_free {
+	struct trace_entry ent;
+	unsigned long call_site;
+	const void *ptr;
+	u32 __data_loc_name;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_page_free {
+	struct trace_entry ent;
+	unsigned long pfn;
+	unsigned int order;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_page_free_batched {
+	struct trace_entry ent;
+	unsigned long pfn;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_page_alloc {
+	struct trace_entry ent;
+	unsigned long pfn;
+	unsigned int order;
+	unsigned long gfp_flags;
+	int migratetype;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_page {
+	struct trace_entry ent;
+	unsigned long pfn;
+	unsigned int order;
+	int migratetype;
+	int percpu_refill;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_page_pcpu_drain {
+	struct trace_entry ent;
+	unsigned long pfn;
+	unsigned int order;
+	int migratetype;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_page_alloc_extfrag {
+	struct trace_entry ent;
+	unsigned long pfn;
+	int alloc_order;
+	int fallback_order;
+	int alloc_migratetype;
+	int fallback_migratetype;
+	int change_ownership;
+	char __data[0];
+};
+
+struct trace_event_raw_rss_stat {
+	struct trace_entry ent;
+	unsigned int mm_id;
+	unsigned int curr;
+	int member;
+	long size;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_kmem_cache_free {
+	u32 name;
+};
+
+struct kmem_obj_info {
+	void *kp_ptr;
+	struct slab *kp_slab;
+	void *kp_objp;
+	unsigned long kp_data_offset;
+	struct kmem_cache *kp_slab_cache;
+	void *kp_ret;
+	void *kp_stack[16];
+	void *kp_free_stack[16];
+};
+
+struct slabinfo {
+	unsigned long active_objs;
+	unsigned long num_objs;
+	unsigned long active_slabs;
+	unsigned long num_slabs;
+	unsigned long shared_avail;
+	unsigned int limit;
+	unsigned int batchcount;
+	unsigned int shared;
+	unsigned int objects_per_slab;
+	unsigned int cache_order;
+};
+
+struct trace_event_data_offsets_kmem_cache_alloc {};
+
+struct trace_event_data_offsets_kmalloc {};
+
+struct trace_event_data_offsets_kfree {};
+
+struct trace_event_data_offsets_mm_page_free {};
+
+struct trace_event_data_offsets_mm_page_free_batched {};
+
+struct trace_event_data_offsets_mm_page_alloc {};
+
+struct trace_event_data_offsets_mm_page {};
+
+struct trace_event_data_offsets_mm_page_pcpu_drain {};
+
+struct trace_event_data_offsets_mm_page_alloc_extfrag {};
+
+struct trace_event_data_offsets_rss_stat {};
+
+typedef void (*btf_trace_mm_compaction_isolate_migratepages)(void *, unsigned long, unsigned long, unsigned long, unsigned long);
+
+typedef void (*btf_trace_mm_compaction_isolate_freepages)(void *, unsigned long, unsigned long, unsigned long, unsigned long);
+
+typedef void (*btf_trace_mm_compaction_fast_isolate_freepages)(void *, unsigned long, unsigned long, unsigned long, unsigned long);
+
+typedef void (*btf_trace_mm_compaction_migratepages)(void *, struct compact_control *, unsigned int);
+
+typedef void (*btf_trace_mm_compaction_begin)(void *, struct compact_control *, unsigned long, unsigned long, bool);
+
+typedef void (*btf_trace_mm_compaction_end)(void *, struct compact_control *, unsigned long, unsigned long, bool, int);
+
+typedef void (*btf_trace_mm_compaction_try_to_compact_pages)(void *, int, gfp_t, int);
+
+typedef void (*btf_trace_mm_compaction_finished)(void *, struct zone *, int, int);
+
+typedef void (*btf_trace_mm_compaction_suitable)(void *, struct zone *, int, int);
+
+typedef void (*btf_trace_mm_compaction_deferred)(void *, struct zone *, int);
+
+typedef void (*btf_trace_mm_compaction_defer_compaction)(void *, struct zone *, int);
+
+typedef void (*btf_trace_mm_compaction_defer_reset)(void *, struct zone *, int);
+
+typedef void (*btf_trace_mm_compaction_kcompactd_sleep)(void *, int);
+
+typedef void (*btf_trace_mm_compaction_wakeup_kcompactd)(void *, int, int, enum zone_type);
+
+typedef void (*btf_trace_mm_compaction_kcompactd_wake)(void *, int, int, enum zone_type);
+
+enum pageblock_bits {
+	PB_migrate = 0,
+	PB_migrate_end = 2,
+	PB_migrate_skip = 3,
+	NR_PAGEBLOCK_BITS = 4,
+};
+
+struct trace_event_raw_mm_compaction_isolate_template {
+	struct trace_entry ent;
+	unsigned long start_pfn;
+	unsigned long end_pfn;
+	unsigned long nr_scanned;
+	unsigned long nr_taken;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_compaction_migratepages {
+	struct trace_entry ent;
+	unsigned long nr_migrated;
+	unsigned long nr_failed;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_compaction_begin {
+	struct trace_entry ent;
+	unsigned long zone_start;
+	unsigned long migrate_pfn;
+	unsigned long free_pfn;
+	unsigned long zone_end;
+	bool sync;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_compaction_end {
+	struct trace_entry ent;
+	unsigned long zone_start;
+	unsigned long migrate_pfn;
+	unsigned long free_pfn;
+	unsigned long zone_end;
+	bool sync;
+	int status;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_compaction_try_to_compact_pages {
+	struct trace_entry ent;
+	int order;
+	unsigned long gfp_mask;
+	int prio;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_compaction_suitable_template {
+	struct trace_entry ent;
+	int nid;
+	enum zone_type idx;
+	int order;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_compaction_defer_template {
+	struct trace_entry ent;
+	int nid;
+	enum zone_type idx;
+	int order;
+	unsigned int considered;
+	unsigned int defer_shift;
+	int order_failed;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_compaction_kcompactd_sleep {
+	struct trace_entry ent;
+	int nid;
+	char __data[0];
+};
+
+struct trace_event_raw_kcompactd_wake_template {
+	struct trace_entry ent;
+	int nid;
+	int order;
+	enum zone_type highest_zoneidx;
+	char __data[0];
+};
+
+struct movable_operations {
+	bool (*isolate_page)(struct page *, isolate_mode_t);
+	int (*migrate_page)(struct page *, struct page *, enum migrate_mode);
+	void (*putback_page)(struct page *);
+};
+
+typedef enum {
+	ISOLATE_ABORT = 0,
+	ISOLATE_NONE = 1,
+	ISOLATE_SUCCESS = 2,
+} isolate_migrate_t;
+
+typedef struct folio *new_folio_t(struct folio *, unsigned long);
+
+typedef void free_folio_t(struct folio *, unsigned long);
+
+struct trace_event_data_offsets_mm_compaction_isolate_template {};
+
+struct trace_event_data_offsets_mm_compaction_migratepages {};
+
+struct trace_event_data_offsets_mm_compaction_begin {};
+
+struct trace_event_data_offsets_mm_compaction_end {};
+
+struct trace_event_data_offsets_mm_compaction_try_to_compact_pages {};
+
+struct trace_event_data_offsets_mm_compaction_suitable_template {};
+
+struct trace_event_data_offsets_mm_compaction_defer_template {};
+
+struct trace_event_data_offsets_mm_compaction_kcompactd_sleep {};
+
+struct trace_event_data_offsets_kcompactd_wake_template {};
+
+struct alloc_context {
+	struct zonelist *zonelist;
+	nodemask_t *nodemask;
+	struct zoneref *preferred_zoneref;
+	int migratetype;
+	enum zone_type highest_zoneidx;
+	bool spread_dirty_pages;
+};
+
+struct anon_vma_chain {
+	struct vm_area_struct *vma;
+	struct anon_vma *anon_vma;
+	struct list_head same_vma;
+	struct rb_node rb;
+	unsigned long rb_subtree_last;
+};
+
+enum lru_status {
+	LRU_REMOVED = 0,
+	LRU_REMOVED_RETRY = 1,
+	LRU_ROTATE = 2,
+	LRU_SKIP = 3,
+	LRU_RETRY = 4,
+};
+
+struct list_lru_memcg {
+	struct callback_head rcu;
+	struct list_lru_one node[0];
+};
+
+typedef enum lru_status (*list_lru_walk_cb)(struct list_head *, struct list_lru_one *, spinlock_t *, void *);
+
+struct list_lru_memcg_table {
+	struct list_lru_memcg *mlru;
+	struct mem_cgroup *memcg;
+};
+
+enum {
+	FOLL_TOUCH = 65536,
+	FOLL_TRIED = 131072,
+	FOLL_REMOTE = 262144,
+	FOLL_PIN = 524288,
+	FOLL_FAST_ONLY = 1048576,
+	FOLL_UNLOCKABLE = 2097152,
+	FOLL_MADV_POPULATE = 4194304,
+};
+
+struct follow_page_context {
+	struct dev_pagemap *pgmap;
+	unsigned int page_mask;
+};
+
+typedef void (*btf_trace_mmap_lock_start_locking)(void *, struct mm_struct *, const char *, bool);
+
+typedef void (*btf_trace_mmap_lock_released)(void *, struct mm_struct *, const char *, bool);
+
+typedef void (*btf_trace_mmap_lock_acquire_returned)(void *, struct mm_struct *, const char *, bool, bool);
+
+struct memcg_path {
+	local_lock_t lock;
+	char __attribute__((btf_type_tag("rcu"))) *buf;
+	local_t buf_idx;
+};
+
+struct trace_event_raw_mmap_lock {
+	struct trace_entry ent;
+	struct mm_struct *mm;
+	u32 __data_loc_memcg_path;
+	bool write;
+	char __data[0];
+};
+
+struct trace_event_raw_mmap_lock_acquire_returned {
+	struct trace_entry ent;
+	struct mm_struct *mm;
+	u32 __data_loc_memcg_path;
+	bool write;
+	bool success;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_mmap_lock {
+	u32 memcg_path;
+};
+
+struct trace_event_data_offsets_mmap_lock_acquire_returned {
+	u32 memcg_path;
+};
+
+typedef int (*show_pad_smaps_fn)(struct seq_file *, void *);
+
+typedef void (*show_pad_maps_fn)(struct seq_file *, struct vm_area_struct *);
+
+enum rmap_level {
+	RMAP_LEVEL_PTE = 0,
+	RMAP_LEVEL_PMD = 1,
+};
+
+enum transparent_hugepage_flag {
+	TRANSPARENT_HUGEPAGE_UNSUPPORTED = 0,
+	TRANSPARENT_HUGEPAGE_FLAG = 1,
+	TRANSPARENT_HUGEPAGE_REQ_MADV_FLAG = 2,
+	TRANSPARENT_HUGEPAGE_DEFRAG_DIRECT_FLAG = 3,
+	TRANSPARENT_HUGEPAGE_DEFRAG_KSWAPD_FLAG = 4,
+	TRANSPARENT_HUGEPAGE_DEFRAG_KSWAPD_OR_MADV_FLAG = 5,
+	TRANSPARENT_HUGEPAGE_DEFRAG_REQ_MADV_FLAG = 6,
+	TRANSPARENT_HUGEPAGE_DEFRAG_KHUGEPAGED_FLAG = 7,
+	TRANSPARENT_HUGEPAGE_USE_ZERO_PAGE_FLAG = 8,
+};
+
+typedef int rmap_t;
+
+typedef int fpb_t;
+
+typedef unsigned long pte_marker;
+
+typedef int (*pte_fn_t)(pte_t *, unsigned long, void *);
+
+typedef unsigned int pgtbl_mod_mask;
+
+struct copy_subpage_arg {
+	struct page *dst;
+	struct page *src;
+	struct vm_area_struct *vma;
+};
+
+struct mlock_fbatch {
+	local_lock_t lock;
+	struct folio_batch fbatch;
+};
+
+typedef void (*btf_trace_vm_unmapped_area)(void *, unsigned long, struct vm_unmapped_area_info *);
+
+typedef void (*btf_trace_vma_mas_szero)(void *, struct maple_tree *, unsigned long, unsigned long);
+
+typedef void (*btf_trace_vma_store)(void *, struct maple_tree *, struct vm_area_struct *);
+
+typedef void (*btf_trace_exit_mmap)(void *, struct mm_struct *);
+
+enum {
+	HUGETLB_SHMFS_INODE = 1,
+	HUGETLB_ANONHUGE_INODE = 2,
+};
+
+struct trace_event_raw_vm_unmapped_area {
+	struct trace_entry ent;
+	unsigned long addr;
+	unsigned long total_vm;
+	unsigned long flags;
+	unsigned long length;
+	unsigned long low_limit;
+	unsigned long high_limit;
+	unsigned long align_mask;
+	unsigned long align_offset;
+	char __data[0];
+};
+
+struct trace_event_raw_vma_mas_szero {
+	struct trace_entry ent;
+	struct maple_tree *mt;
+	unsigned long start;
+	unsigned long end;
+	char __data[0];
+};
+
+struct trace_event_raw_vma_store {
+	struct trace_entry ent;
+	struct maple_tree *mt;
+	struct vm_area_struct *vma;
+	unsigned long vm_start;
+	unsigned long vm_end;
+	char __data[0];
+};
+
+struct trace_event_raw_exit_mmap {
+	struct trace_entry ent;
+	struct mm_struct *mm;
+	struct maple_tree *mt;
+	char __data[0];
+};
+
+struct vma_prepare {
+	struct vm_area_struct *vma;
+	struct vm_area_struct *adj_next;
+	struct file *file;
+	struct address_space *mapping;
+	struct anon_vma *anon_vma;
+	struct vm_area_struct *insert;
+	struct vm_area_struct *remove;
+	struct vm_area_struct *remove2;
+};
+
+struct trace_event_data_offsets_vm_unmapped_area {};
+
+struct trace_event_data_offsets_vma_mas_szero {};
+
+struct trace_event_data_offsets_vma_store {};
+
+struct trace_event_data_offsets_exit_mmap {};
+
+enum pgt_entry {
+	NORMAL_PMD = 0,
+	HPAGE_PMD = 1,
+	NORMAL_PUD = 2,
+	HPAGE_PUD = 3,
+};
+
+struct hstate {};
+
+typedef void (*btf_trace_tlb_flush)(void *, int, unsigned long);
+
+typedef void (*btf_trace_mm_migrate_pages)(void *, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, enum migrate_mode, int);
+
+typedef void (*btf_trace_mm_migrate_pages_start)(void *, enum migrate_mode, int);
+
+typedef void (*btf_trace_set_migration_pte)(void *, unsigned long, unsigned long, int);
+
+typedef void (*btf_trace_remove_migration_pte)(void *, unsigned long, unsigned long, int);
+
+struct trace_event_raw_tlb_flush {
+	struct trace_entry ent;
+	int reason;
+	unsigned long pages;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_migrate_pages {
+	struct trace_entry ent;
+	unsigned long succeeded;
+	unsigned long failed;
+	unsigned long thp_succeeded;
+	unsigned long thp_failed;
+	unsigned long thp_split;
+	enum migrate_mode mode;
+	int reason;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_migrate_pages_start {
+	struct trace_entry ent;
+	enum migrate_mode mode;
+	int reason;
+	char __data[0];
+};
+
+struct trace_event_raw_migration_pte {
+	struct trace_entry ent;
+	unsigned long addr;
+	unsigned long pte;
+	int order;
+	char __data[0];
+};
+
+struct rmap_walk_control {
+	void *arg;
+	bool try_lock;
+	bool contended;
+	bool (*rmap_one)(struct folio *, struct vm_area_struct *, unsigned long, void *);
+	int (*done)(struct folio *);
+	struct anon_vma * (*anon_lock)(struct folio *, struct rmap_walk_control *);
+	bool (*invalid_vma)(struct vm_area_struct *, void *);
+};
+
+struct trace_event_data_offsets_tlb_flush {};
+
+struct trace_event_data_offsets_mm_migrate_pages {};
+
+struct trace_event_data_offsets_mm_migrate_pages_start {};
+
+struct trace_event_data_offsets_migration_pte {};
+
+struct folio_referenced_arg {
+	int mapcount;
+	int referenced;
+	unsigned long vm_flags;
+	struct mem_cgroup *memcg;
+};
+
+typedef void (*btf_trace_alloc_vmap_area)(void *, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, int);
+
+typedef void (*btf_trace_purge_vmap_area_lazy)(void *, unsigned long, unsigned long, unsigned int);
+
+typedef void (*btf_trace_free_vmap_area_noflush)(void *, unsigned long, unsigned long, unsigned long);
+
+struct vfree_deferred {
+	struct llist_head list;
+	struct work_struct wq;
+};
+
+struct vmap_block_queue {
+	spinlock_t lock;
+	struct list_head free;
+	struct xarray vmap_blocks;
+};
+
+struct vmap_area {
+	unsigned long va_start;
+	unsigned long va_end;
+	struct rb_node rb_node;
+	struct list_head list;
+	union {
+		unsigned long subtree_max_size;
+		struct vm_struct *vm;
+	};
+	unsigned long flags;
+};
+
+enum fit_type {
+	NOTHING_FIT = 0,
+	FL_FIT_TYPE = 1,
+	LE_FIT_TYPE = 2,
+	RE_FIT_TYPE = 3,
+	NE_FIT_TYPE = 4,
+};
+
+typedef unsigned int kasan_vmalloc_flags_t;
+
+struct trace_event_raw_alloc_vmap_area {
+	struct trace_entry ent;
+	unsigned long addr;
+	unsigned long size;
+	unsigned long align;
+	unsigned long vstart;
+	unsigned long vend;
+	int failed;
+	char __data[0];
+};
+
+struct trace_event_raw_purge_vmap_area_lazy {
+	struct trace_entry ent;
+	unsigned long start;
+	unsigned long end;
+	unsigned int npurged;
+	char __data[0];
+};
+
+struct trace_event_raw_free_vmap_area_noflush {
+	struct trace_entry ent;
+	unsigned long va_start;
+	unsigned long nr_lazy;
+	unsigned long nr_lazy_max;
+	char __data[0];
+};
+
+struct vmap_block {
+	spinlock_t lock;
+	struct vmap_area *va;
+	unsigned long free;
+	unsigned long dirty;
+	unsigned long used_map[16];
+	unsigned long dirty_min;
+	unsigned long dirty_max;
+	struct list_head free_list;
+	struct callback_head callback_head;
+	struct list_head purge;
+	unsigned int cpu;
+};
+
+struct trace_event_data_offsets_alloc_vmap_area {};
+
+struct trace_event_data_offsets_purge_vmap_area_lazy {};
+
+struct trace_event_data_offsets_free_vmap_area_noflush {};
+
+typedef int fpi_t;
+
+struct page_frag_cache {
+	void *va;
+	__u16 offset;
+	__u16 size;
+	unsigned int pagecnt_bias;
+	bool pfmemalloc;
+};
+
+struct memblock {
+	bool bottom_up;
+	phys_addr_t current_limit;
+	struct memblock_type memory;
+	struct memblock_type reserved;
+};
+
+enum memblock_memsize_state {
+	MEMBLOCK_MEMSIZE_NONE = 0,
+	MEMBLOCK_MEMSIZE_DEBUGFS = 1,
+	MEMBLOCK_MEMSIZE_PROCFS = 2,
+};
+
+struct memsize_rgn_struct {
+	phys_addr_t base;
+	long size;
+	bool nomap;
+	bool reusable;
+	char name[100];
+};
+
+typedef void (*online_page_callback_t)(struct page *, unsigned int);
+
+enum {
+	MMOP_OFFLINE = 0,
+	MMOP_ONLINE = 1,
+	MMOP_ONLINE_KERNEL = 2,
+	MMOP_ONLINE_MOVABLE = 3,
+};
+
+enum {
+	ONLINE_POLICY_CONTIG_ZONES = 0,
+	ONLINE_POLICY_AUTO_MOVABLE = 1,
+};
+
+enum {
+	MEMMAP_ON_MEMORY_DISABLE = 0,
+	MEMMAP_ON_MEMORY_ENABLE = 1,
+	MEMMAP_ON_MEMORY_FORCE = 2,
+};
+
+typedef int mhp_t;
+
+struct memory_group;
+
+struct memory_block {
+	unsigned long start_section_nr;
+	unsigned long state;
+	int online_type;
+	int nid;
+	struct zone *zone;
+	struct device dev;
+	struct vmem_altmap *altmap;
+	struct memory_group *group;
+	struct list_head group_next;
+};
+
+struct memory_group {
+	int nid;
+	struct list_head memory_blocks;
+	unsigned long present_kernel_pages;
+	unsigned long present_movable_pages;
+	bool is_dynamic;
+	union {
+		struct {
+			unsigned long max_pages;
+		} s;
+		struct {
+			unsigned long unit_pages;
+		} d;
+	};
+};
+
+struct auto_movable_group_stats {
+	unsigned long movable_pages;
+	unsigned long req_kernel_early_pages;
+};
+
+struct auto_movable_stats {
+	unsigned long kernel_early_pages;
+	unsigned long movable_pages;
+};
+
+typedef int (*walk_memory_groups_func_t)(struct memory_group *, void *);
+
+struct memory_notify {
+	unsigned long start_pfn;
+	unsigned long nr_pages;
+	int status_change_nid_normal;
+	int status_change_nid;
+};
+
+typedef int (*walk_memory_blocks_func_t)(struct memory_block *, void *);
+
+enum iter_type {
+	ITER_IOVEC = 0,
+	ITER_KVEC = 1,
+	ITER_BVEC = 2,
+	ITER_XARRAY = 3,
+	ITER_DISCARD = 4,
+	ITER_UBUF = 5,
+};
+
+typedef int cydp_t;
+
+struct madvise_walk_private {
+	struct mmu_gather *tlb;
+	bool pageout;
+};
+
+enum {
+	BIO_PAGE_PINNED = 0,
+	BIO_CLONED = 1,
+	BIO_BOUNCED = 2,
+	BIO_QUIET = 3,
+	BIO_CHAIN = 4,
+	BIO_REFFED = 5,
+	BIO_BPS_THROTTLED = 6,
+	BIO_TRACE_COMPLETION = 7,
+	BIO_CGROUP_ACCT = 8,
+	BIO_QOS_THROTTLED = 9,
+	BIO_QOS_MERGED = 10,
+	BIO_REMAPPED = 11,
+	BIO_ZONE_WRITE_LOCKED = 12,
+	BIO_FLAG_LAST = 13,
+};
+
+struct swap_iocb {
+	struct kiocb iocb;
+	struct bio_vec bvec[32];
+	int pages;
+	int len;
+};
+
+struct vma_swap_readahead {
+	unsigned short win;
+	unsigned short offset;
+	unsigned short nr_pte;
+};
+
+enum {
+	PERCPU_REF_INIT_ATOMIC = 1,
+	PERCPU_REF_INIT_DEAD = 2,
+	PERCPU_REF_ALLOW_REINIT = 4,
+};
+
+struct swap_extent {
+	struct rb_node rb_node;
+	unsigned long start_page;
+	unsigned long nr_pages;
+	sector_t start_block;
+};
+
+union swap_header {
+	struct {
+		char reserved[4086];
+		char magic[10];
+	} magic;
+	struct {
+		char bootbits[1024];
+		__u32 version;
+		__u32 last_page;
+		__u32 nr_badpages;
+		unsigned char sws_uuid[16];
+		unsigned char sws_volume[16];
+		__u32 padding[117];
+		__u32 badpages[1];
+	} info;
+};
+
+struct swap_slots_cache {
+	bool lock_initialized;
+	struct mutex alloc_lock;
+	swp_entry_t *slots;
+	int nr;
+	int cur;
+	spinlock_t free_lock;
+	swp_entry_t *slots_ret;
+	int n_ret;
+};
+
+struct dma_page {
+	struct list_head page_list;
+	void *vaddr;
+	dma_addr_t dma;
+};
+
+struct dma_block;
+
+struct dma_pool {
+	struct list_head page_list;
+	spinlock_t lock;
+	struct dma_block *next_block;
+	size_t nr_blocks;
+	size_t nr_active;
+	size_t nr_pages;
+	struct device *dev;
+	unsigned int size;
+	unsigned int allocation;
+	unsigned int boundary;
+	char name[32];
+	struct list_head pools;
+};
+
+struct dma_block {
+	struct dma_block *next_block;
+	dma_addr_t dma;
+};
+
+struct mmu_notifier_subscriptions {
+	struct hlist_head list;
+	bool has_itree;
+	spinlock_t lock;
+	unsigned long invalidate_seq;
+	unsigned long active_invalidate_ranges;
+	struct rb_root_cached itree;
+	wait_queue_head_t wq;
+	struct hlist_head deferred_list;
+};
+
+struct mmu_interval_notifier_ops;
+
+struct mmu_interval_notifier {
+	struct interval_tree_node interval_tree;
+	const struct mmu_interval_notifier_ops *ops;
+	struct mm_struct *mm;
+	struct hlist_node deferred_item;
+	unsigned long invalidate_seq;
+};
+
+struct mmu_interval_notifier_ops {
+	bool (*invalidate)(struct mmu_interval_notifier *, const struct mmu_notifier_range *, unsigned long);
+};
+
+struct slub_flush_work {
+	struct work_struct work;
+	struct kmem_cache *s;
+	bool skip;
+};
+
+struct slab_attribute {
+	struct attribute attr;
+	ssize_t (*show)(struct kmem_cache *, char *);
+	ssize_t (*store)(struct kmem_cache *, const char *, size_t);
+};
+
+struct saved_alias {
+	struct kmem_cache *s;
+	const char *name;
+	struct saved_alias *next;
+};
+
+enum track_item {
+	TRACK_ALLOC = 0,
+	TRACK_FREE = 1,
+};
+
+enum stat_item {
+	ALLOC_FASTPATH = 0,
+	ALLOC_SLOWPATH = 1,
+	FREE_FASTPATH = 2,
+	FREE_SLOWPATH = 3,
+	FREE_FROZEN = 4,
+	FREE_ADD_PARTIAL = 5,
+	FREE_REMOVE_PARTIAL = 6,
+	ALLOC_FROM_PARTIAL = 7,
+	ALLOC_SLAB = 8,
+	ALLOC_REFILL = 9,
+	ALLOC_NODE_MISMATCH = 10,
+	FREE_SLAB = 11,
+	CPUSLAB_FLUSH = 12,
+	DEACTIVATE_FULL = 13,
+	DEACTIVATE_EMPTY = 14,
+	DEACTIVATE_TO_HEAD = 15,
+	DEACTIVATE_TO_TAIL = 16,
+	DEACTIVATE_REMOTE_FREES = 17,
+	DEACTIVATE_BYPASS = 18,
+	ORDER_FALLBACK = 19,
+	CMPXCHG_DOUBLE_CPU_FAIL = 20,
+	CMPXCHG_DOUBLE_FAIL = 21,
+	CPU_PARTIAL_ALLOC = 22,
+	CPU_PARTIAL_FREE = 23,
+	CPU_PARTIAL_NODE = 24,
+	CPU_PARTIAL_DRAIN = 25,
+	NR_SLUB_STAT_ITEMS = 26,
+};
+
+enum slab_modes {
+	M_NONE = 0,
+	M_PARTIAL = 1,
+	M_FREE = 2,
+	M_FULL_NOLIST = 3,
+};
+
+enum slab_stat_type {
+	SL_ALL = 0,
+	SL_PARTIAL = 1,
+	SL_CPU = 2,
+	SL_OBJECTS = 3,
+	SL_TOTAL = 4,
+};
+
+typedef struct {
+	unsigned long v;
+} freeptr_t;
+
+struct kunit_resource;
+
+typedef void (*kunit_resource_free_t)(struct kunit_resource *);
+
+struct kunit_resource {
+	void *data;
+	const char *name;
+	kunit_resource_free_t free;
+	struct kref refcount;
+	struct list_head node;
+	bool should_kfree;
+};
+
+typedef u32 depot_stack_handle_t;
+
+struct location {
+	depot_stack_handle_t handle;
+	unsigned long count;
+	unsigned long addr;
+	unsigned long waste;
+	long long sum_time;
+	long min_time;
+	long max_time;
+	long min_pid;
+	long max_pid;
+	unsigned long cpus[1];
+	nodemask_t nodes;
+};
+
+struct track {
+	unsigned long addr;
+	depot_stack_handle_t handle;
+	int cpu;
+	int pid;
+	unsigned long when;
+};
+
+struct detached_freelist {
+	struct slab *slab;
+	void *tail;
+	void *freelist;
+	int cnt;
+	struct kmem_cache *s;
+};
+
+union __u128_halves {
+	u128 full;
+	struct {
+		u64 low;
+		u64 high;
+	};
+};
+
+struct partial_context {
+	struct slab **slab;
+	gfp_t flags;
+	unsigned int orig_size;
+};
+
+typedef bool (*kunit_resource_match_t)(struct kunit *, struct kunit_resource *, void *);
+
+struct loc_track {
+	unsigned long max;
+	unsigned long count;
+	struct location *loc;
+	loff_t idx;
+};
+
+enum kfence_object_state {
+	KFENCE_OBJECT_UNUSED = 0,
+	KFENCE_OBJECT_ALLOCATED = 1,
+	KFENCE_OBJECT_FREED = 2,
+};
+
+struct kfence_track {
+	pid_t pid;
+	int cpu;
+	u64 ts_nsec;
+	int num_stack_entries;
+	unsigned long stack_entries[64];
+};
+
+struct kfence_metadata {
+	struct list_head list;
+	struct callback_head callback_head;
+	raw_spinlock_t lock;
+	enum kfence_object_state state;
+	unsigned long addr;
+	size_t size;
+	struct kmem_cache *cache;
+	unsigned long unprotected_page;
+	struct kfence_track alloc_track;
+	struct kfence_track free_track;
+	u32 alloc_stack_hash;
+	struct obj_cgroup *objcg;
+};
+
+enum kfence_counter_id {
+	KFENCE_COUNTER_ALLOCATED = 0,
+	KFENCE_COUNTER_ALLOCS = 1,
+	KFENCE_COUNTER_FREES = 2,
+	KFENCE_COUNTER_ZOMBIES = 3,
+	KFENCE_COUNTER_BUGS = 4,
+	KFENCE_COUNTER_SKIP_INCOMPAT = 5,
+	KFENCE_COUNTER_SKIP_CAPACITY = 6,
+	KFENCE_COUNTER_SKIP_COVERED = 7,
+	KFENCE_COUNTER_COUNT = 8,
+};
+
+enum kfence_error_type {
+	KFENCE_ERROR_OOB = 0,
+	KFENCE_ERROR_UAF = 1,
+	KFENCE_ERROR_CORRUPTION = 2,
+	KFENCE_ERROR_INVALID = 3,
+	KFENCE_ERROR_INVALID_FREE = 4,
+};
+
+struct kcsan_scoped_access {};
+
+typedef __kernel_long_t __kernel_ptrdiff_t;
+
+typedef __kernel_ptrdiff_t ptrdiff_t;
+
+enum bh_state_bits {
+	BH_Uptodate = 0,
+	BH_Dirty = 1,
+	BH_Lock = 2,
+	BH_Req = 3,
+	BH_Mapped = 4,
+	BH_New = 5,
+	BH_Async_Read = 6,
+	BH_Async_Write = 7,
+	BH_Delay = 8,
+	BH_Boundary = 9,
+	BH_Write_EIO = 10,
+	BH_Unwritten = 11,
+	BH_Quiet = 12,
+	BH_Meta = 13,
+	BH_Prio = 14,
+	BH_Defer_Completion = 15,
+	BH_PrivateStart = 16,
+};
+
+enum {
+	PAGE_WAS_MAPPED = 1,
+	PAGE_WAS_MLOCKED = 2,
+	PAGE_OLD_STATES = 3,
+};
+
+struct buffer_head;
+
+typedef void bh_end_io_t(struct buffer_head *, int);
+
+struct buffer_head {
+	unsigned long b_state;
+	struct buffer_head *b_this_page;
+	union {
+		struct page *b_page;
+		struct folio *b_folio;
+	};
+	sector_t b_blocknr;
+	size_t b_size;
+	char *b_data;
+	struct block_device *b_bdev;
+	bh_end_io_t *b_end_io;
+	void *b_private;
+	struct list_head b_assoc_buffers;
+	struct address_space *b_assoc_map;
+	atomic_t b_count;
+	spinlock_t b_uptodate_lock;
+};
+
+struct migrate_pages_stats {
+	int nr_succeeded;
+	int nr_failed_pages;
+	int nr_thp_succeeded;
+	int nr_thp_failed;
+	int nr_thp_split;
+};
+
+typedef void (*btf_trace_hugepage_set_pmd)(void *, unsigned long, unsigned long);
+
+typedef void (*btf_trace_hugepage_set_pud)(void *, unsigned long, unsigned long);
+
+typedef void (*btf_trace_hugepage_update_pmd)(void *, unsigned long, unsigned long, unsigned long, unsigned long);
+
+typedef void (*btf_trace_hugepage_update_pud)(void *, unsigned long, unsigned long, unsigned long, unsigned long);
+
+typedef void (*btf_trace_set_migration_pmd)(void *, unsigned long, unsigned long);
+
+typedef void (*btf_trace_remove_migration_pmd)(void *, unsigned long, unsigned long);
+
+struct mthp_stat {
+	unsigned long stats[50];
+};
+
+struct trace_event_raw_hugepage_set {
+	struct trace_entry ent;
+	unsigned long addr;
+	unsigned long pte;
+	char __data[0];
+};
+
+struct trace_event_raw_hugepage_update {
+	struct trace_entry ent;
+	unsigned long addr;
+	unsigned long pte;
+	unsigned long clr;
+	unsigned long set;
+	char __data[0];
+};
+
+struct trace_event_raw_migration_pmd {
+	struct trace_entry ent;
+	unsigned long addr;
+	unsigned long pmd;
+	char __data[0];
+};
+
+struct thpsize {
+	struct kobject kobj;
+	struct list_head node;
+	int order;
+};
+
+struct trace_event_data_offsets_hugepage_set {};
+
+struct trace_event_data_offsets_hugepage_update {};
+
+struct trace_event_data_offsets_migration_pmd {};
+
+typedef void (*btf_trace_mm_khugepaged_scan_pmd)(void *, struct mm_struct *, struct page *, bool, int, int, int, int);
+
+typedef void (*btf_trace_mm_collapse_huge_page)(void *, struct mm_struct *, int, int);
+
+typedef void (*btf_trace_mm_collapse_huge_page_isolate)(void *, struct page *, int, int, bool, int);
+
+typedef void (*btf_trace_mm_collapse_huge_page_swapin)(void *, struct mm_struct *, int, int, int);
+
+typedef void (*btf_trace_mm_khugepaged_scan_file)(void *, struct mm_struct *, struct page *, struct file *, int, int, int);
+
+typedef void (*btf_trace_mm_khugepaged_collapse_file)(void *, struct mm_struct *, struct page *, unsigned long, bool, unsigned long, struct file *, int, int);
+
+struct collapse_control {
+	bool is_khugepaged;
+	u32 node_load[1];
+	nodemask_t alloc_nmask;
+};
+
+struct khugepaged_mm_slot;
+
+struct khugepaged_scan {
+	struct list_head mm_head;
+	struct khugepaged_mm_slot *mm_slot;
+	unsigned long address;
+};
+
+struct mm_slot {
+	struct hlist_node hash;
+	struct list_head mm_node;
+	struct mm_struct *mm;
+};
+
+struct khugepaged_mm_slot {
+	struct mm_slot slot;
+};
+
+enum scan_result {
+	SCAN_FAIL = 0,
+	SCAN_SUCCEED = 1,
+	SCAN_PMD_NULL = 2,
+	SCAN_PMD_NONE = 3,
+	SCAN_PMD_MAPPED = 4,
+	SCAN_EXCEED_NONE_PTE = 5,
+	SCAN_EXCEED_SWAP_PTE = 6,
+	SCAN_EXCEED_SHARED_PTE = 7,
+	SCAN_PTE_NON_PRESENT = 8,
+	SCAN_PTE_UFFD_WP = 9,
+	SCAN_PTE_MAPPED_HUGEPAGE = 10,
+	SCAN_PAGE_RO = 11,
+	SCAN_LACK_REFERENCED_PAGE = 12,
+	SCAN_PAGE_NULL = 13,
+	SCAN_SCAN_ABORT = 14,
+	SCAN_PAGE_COUNT = 15,
+	SCAN_PAGE_LRU = 16,
+	SCAN_PAGE_LOCK = 17,
+	SCAN_PAGE_ANON = 18,
+	SCAN_PAGE_COMPOUND = 19,
+	SCAN_ANY_PROCESS = 20,
+	SCAN_VMA_NULL = 21,
+	SCAN_VMA_CHECK = 22,
+	SCAN_ADDRESS_RANGE = 23,
+	SCAN_DEL_PAGE_LRU = 24,
+	SCAN_ALLOC_HUGE_PAGE_FAIL = 25,
+	SCAN_CGROUP_CHARGE_FAIL = 26,
+	SCAN_TRUNCATED = 27,
+	SCAN_PAGE_HAS_PRIVATE = 28,
+	SCAN_STORE_FAILED = 29,
+	SCAN_COPY_MC = 30,
+	SCAN_PAGE_FILLED = 31,
+};
+
+struct trace_event_raw_mm_khugepaged_scan_pmd {
+	struct trace_entry ent;
+	struct mm_struct *mm;
+	unsigned long pfn;
+	bool writable;
+	int referenced;
+	int none_or_zero;
+	int status;
+	int unmapped;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_collapse_huge_page {
+	struct trace_entry ent;
+	struct mm_struct *mm;
+	int isolated;
+	int status;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_collapse_huge_page_isolate {
+	struct trace_entry ent;
+	unsigned long pfn;
+	int none_or_zero;
+	int referenced;
+	bool writable;
+	int status;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_collapse_huge_page_swapin {
+	struct trace_entry ent;
+	struct mm_struct *mm;
+	int swapped_in;
+	int referenced;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_khugepaged_scan_file {
+	struct trace_entry ent;
+	struct mm_struct *mm;
+	unsigned long pfn;
+	u32 __data_loc_filename;
+	int present;
+	int swap;
+	int result;
+	char __data[0];
+};
+
+struct trace_event_raw_mm_khugepaged_collapse_file {
+	struct trace_entry ent;
+	struct mm_struct *mm;
+	unsigned long hpfn;
+	unsigned long index;
+	unsigned long addr;
+	bool is_shmem;
+	u32 __data_loc_filename;
+	int nr;
+	int result;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_mm_khugepaged_scan_file {
+	u32 filename;
+};
+
+struct trace_event_data_offsets_mm_khugepaged_collapse_file {
+	u32 filename;
+};
+
+struct trace_event_data_offsets_mm_khugepaged_scan_pmd {};
+
+struct trace_event_data_offsets_mm_collapse_huge_page {};
+
+struct trace_event_data_offsets_mm_collapse_huge_page_isolate {};
+
+struct trace_event_data_offsets_mm_collapse_huge_page_swapin {};
+
+struct memcg_vmstats {
+	long state[48];
+	unsigned long events[17];
+	long state_local[48];
+	unsigned long events_local[17];
+	long state_pending[48];
+	unsigned long events_pending[17];
+	atomic64_t stats_updates;
+};
+
+struct mem_cgroup_tree_per_node;
+
+struct mem_cgroup_tree {
+	struct mem_cgroup_tree_per_node *rb_tree_per_node[1];
+};
+
+struct mem_cgroup_tree_per_node {
+	struct rb_root rb_root;
+	struct rb_node *rb_rightmost;
+	spinlock_t lock;
+};
+
+struct memory_stat {
+	const char *name;
+	unsigned int idx;
+};
+
+struct move_charge_struct {
+	spinlock_t lock;
+	struct mm_struct *mm;
+	struct mem_cgroup *from;
+	struct mem_cgroup *to;
+	unsigned long flags;
+	unsigned long precharge;
+	unsigned long moved_charge;
+	unsigned long moved_swap;
+	struct task_struct *moving_task;
+	wait_queue_head_t waitq;
+};
+
+struct memcg_stock_pcp {
+	local_lock_t stock_lock;
+	struct mem_cgroup *cached;
+	unsigned int nr_pages;
+	struct obj_cgroup *cached_objcg;
+	struct pglist_data *cached_pgdat;
+	unsigned int nr_bytes;
+	int nr_slab_reclaimable_b;
+	int nr_slab_unreclaimable_b;
+	struct work_struct work;
+	unsigned long flags;
+};
+
+enum mem_cgroup_events_target {
+	MEM_CGROUP_TARGET_THRESH = 0,
+	MEM_CGROUP_TARGET_SOFTLIMIT = 1,
+	MEM_CGROUP_NTARGETS = 2,
+};
+
+enum mc_target_type {
+	MC_TARGET_NONE = 0,
+	MC_TARGET_PAGE = 1,
+	MC_TARGET_SWAP = 2,
+	MC_TARGET_DEVICE = 3,
+};
+
+enum res_type {
+	_MEM = 0,
+	_MEMSWAP = 1,
+	_KMEM = 2,
+	_TCP = 3,
+};
+
+enum {
+	RES_USAGE = 0,
+	RES_LIMIT = 1,
+	RES_MAX_USAGE = 2,
+	RES_FAILCNT = 3,
+	RES_SOFT_LIMIT = 4,
+};
+
+struct oom_wait_info {
+	struct mem_cgroup *memcg;
+	wait_queue_entry_t wait;
+};
+
+struct mem_cgroup_eventfd_list {
+	struct list_head list;
+	struct eventfd_ctx *eventfd;
+};
+
+struct mem_cgroup_event {
+	struct mem_cgroup *memcg;
+	struct eventfd_ctx *eventfd;
+	struct list_head list;
+	int (*register_event)(struct mem_cgroup *, struct eventfd_ctx *, const char *);
+	void (*unregister_event)(struct mem_cgroup *, struct eventfd_ctx *);
+	poll_table pt;
+	wait_queue_head_t *wqh;
+	wait_queue_entry_t wait;
+	struct work_struct remove;
+};
+
+struct uncharge_gather {
+	struct mem_cgroup *memcg;
+	unsigned long nr_memory;
+	unsigned long pgpgout;
+	unsigned long nr_kmem;
+	int nid;
+};
+
+union mc_target {
+	struct folio *folio;
+	swp_entry_t ent;
+};
+
+enum vmpressure_levels {
+	VMPRESSURE_LOW = 0,
+	VMPRESSURE_MEDIUM = 1,
+	VMPRESSURE_CRITICAL = 2,
+	VMPRESSURE_NUM_LEVELS = 3,
+};
+
+enum vmpressure_modes {
+	VMPRESSURE_NO_PASSTHROUGH = 0,
+	VMPRESSURE_HIERARCHY = 1,
+	VMPRESSURE_LOCAL = 2,
+	VMPRESSURE_NUM_MODES = 3,
+};
+
+struct vmpressure_event {
+	struct eventfd_ctx *efd;
+	enum vmpressure_levels level;
+	enum vmpressure_modes mode;
+	struct list_head node;
+};
+
+struct swap_cgroup_ctrl {
+	struct page **map;
+	unsigned long length;
+	spinlock_t lock;
+};
+
+struct swap_cgroup {
+	unsigned short id;
+};
+
+struct page_ext_operations {
+	size_t offset;
+	size_t size;
+	bool (*need)();
+	void (*init)();
+	bool need_shared_flags;
+};
+
+enum page_ext_flags {
+	PAGE_EXT_OWNER = 0,
+	PAGE_EXT_OWNER_ALLOCATED = 1,
+	PAGE_EXT_PINNER_MIGRATION_FAILED = 2,
+};
+
+struct page_owner {
+	unsigned short order;
+	short last_migrate_reason;
+	gfp_t gfp_mask;
+	depot_stack_handle_t handle;
+	depot_stack_handle_t free_handle;
+	u64 ts_nsec;
+	u64 free_ts_nsec;
+	char comm[16];
+	pid_t pid;
+	pid_t tgid;
+	pid_t free_pid;
+	pid_t free_tgid;
+};
+
+struct cleancache_filekey;
+
+struct cleancache_ops {
+	int (*init_fs)(size_t);
+	int (*init_shared_fs)(uuid_t *, size_t);
+	int (*get_page)(int, struct cleancache_filekey, unsigned long, struct page *);
+	void (*put_page)(int, struct cleancache_filekey, unsigned long, struct page *);
+	void (*invalidate_page)(int, struct cleancache_filekey, unsigned long);
+	void (*invalidate_inode)(int, struct cleancache_filekey);
+	void (*invalidate_fs)(int);
+};
+
+struct cleancache_filekey {
+	union {
+		ino_t ino;
+		__u32 fh[6];
+		u32 key[6];
+	} u;
+};
+
+struct captured_pinner;
+
+struct page_pinner_buffer {
+	spinlock_t lock;
+	unsigned long index;
+	struct captured_pinner *buffer;
+};
+
+enum pp_state {
+	PP_PUT = 0,
+	PP_FREE = 1,
+	PP_FAIL_DETECTED = 2,
+};
+
+struct captured_pinner {
+	depot_stack_handle_t handle;
+	union {
+		u64 ts_usec;
+		u64 elapsed;
+	};
+	unsigned long pfn;
+	int count;
+	int mapcount;
+	struct address_space *mapping;
+	unsigned long flags;
+	enum pp_state state;
+};
+
+struct page_pinner {
+	depot_stack_handle_t handle;
+	u64 ts_usec;
+	atomic_t count;
+};
+
+typedef void (*btf_trace_test_pages_isolated)(void *, unsigned long, unsigned long, unsigned long);
+
+struct trace_event_raw_test_pages_isolated {
+	struct trace_entry ent;
+	unsigned long start_pfn;
+	unsigned long end_pfn;
+	unsigned long fin_pfn;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_test_pages_isolated {};
+
+typedef void (*btf_trace_cma_release)(void *, const char *, unsigned long, const struct page *, unsigned long);
+
+typedef void (*btf_trace_cma_alloc_start)(void *, const char *, unsigned long, unsigned int);
+
+typedef void (*btf_trace_cma_alloc_finish)(void *, const char *, unsigned long, const struct page *, unsigned long, unsigned int, int);
+
+typedef void (*btf_trace_cma_alloc_busy_retry)(void *, const char *, unsigned long, const struct page *, unsigned long, unsigned int);
+
+struct trace_event_raw_cma_release {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	unsigned long pfn;
+	const struct page *page;
+	unsigned long count;
+	char __data[0];
+};
+
+struct trace_event_raw_cma_alloc_start {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	unsigned long count;
+	unsigned int align;
+	char __data[0];
+};
+
+struct trace_event_raw_cma_alloc_finish {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	unsigned long pfn;
+	const struct page *page;
+	unsigned long count;
+	unsigned int align;
+	int errorno;
+	char __data[0];
+};
+
+struct trace_event_raw_cma_alloc_busy_retry {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	unsigned long pfn;
+	const struct page *page;
+	unsigned long count;
+	unsigned int align;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_cma_release {
+	u32 name;
+};
+
+struct trace_event_data_offsets_cma_alloc_start {
+	u32 name;
+};
+
+struct trace_event_data_offsets_cma_alloc_finish {
+	u32 name;
+};
+
+struct trace_event_data_offsets_cma_alloc_busy_retry {
+	u32 name;
+};
+
+struct balloon_dev_info {
+	unsigned long isolated_pages;
+	spinlock_t pages_lock;
+	struct list_head pages;
+	int (*migratepage)(struct balloon_dev_info *, struct page *, struct page *, enum migrate_mode);
+};
+
+struct cma_mem {
+	struct hlist_node node;
+	struct page *p;
+	unsigned long n;
+};
+
+enum {
+	BAD_STACK = -1,
+	NOT_STACK = 0,
+	GOOD_FRAME = 1,
+	GOOD_STACK = 2,
+};
+
+struct page_reporting_dev_info {
+	int (*report)(struct page_reporting_dev_info *, struct scatterlist *, unsigned int);
+	struct delayed_work work;
+	atomic_t state;
+	unsigned int order;
+};
+
+enum {
+	PAGE_REPORTING_IDLE = 0,
+	PAGE_REPORTING_REQUESTED = 1,
+	PAGE_REPORTING_ACTIVE = 2,
+};
+
+struct file_lock_context {
+	spinlock_t flc_lock;
+	struct list_head flc_flock;
+	struct list_head flc_posix;
+	struct list_head flc_lease;
+};
+
+struct nlm_lockowner;
+
+struct nfs_lock_info {
+	u32 state;
+	struct nlm_lockowner *owner;
+	struct list_head list;
+};
+
+struct nfs4_lock_state;
+
+struct nfs4_lock_info {
+	struct nfs4_lock_state *owner;
+};
+
+struct file_lock_operations;
+
+struct lock_manager_operations;
+
+struct file_lock {
+	struct file_lock *fl_blocker;
+	struct list_head fl_list;
+	struct hlist_node fl_link;
+	struct list_head fl_blocked_requests;
+	struct list_head fl_blocked_member;
+	fl_owner_t fl_owner;
+	unsigned int fl_flags;
+	unsigned char fl_type;
+	unsigned int fl_pid;
+	int fl_link_cpu;
+	wait_queue_head_t fl_wait;
+	struct file *fl_file;
+	loff_t fl_start;
+	loff_t fl_end;
+	struct fasync_struct *fl_fasync;
+	unsigned long fl_break_time;
+	unsigned long fl_downgrade_time;
+	const struct file_lock_operations *fl_ops;
+	const struct lock_manager_operations *fl_lmops;
+	union {
+		struct nfs_lock_info nfs_fl;
+		struct nfs4_lock_info nfs4_fl;
+		struct {
+			struct list_head link;
+			int state;
+			unsigned int debug_id;
+		} afs;
+		struct {
+			struct inode *inode;
+		} ceph;
+	} fl_u;
+};
+
+struct file_lock_operations {
+	void (*fl_copy_lock)(struct file_lock *, struct file_lock *);
+	void (*fl_release_private)(struct file_lock *);
+};
+
+struct lock_manager_operations {
+	void *lm_mod_owner;
+	fl_owner_t (*lm_get_owner)(fl_owner_t);
+	void (*lm_put_owner)(fl_owner_t);
+	void (*lm_notify)(struct file_lock *);
+	int (*lm_grant)(struct file_lock *, int);
+	bool (*lm_break)(struct file_lock *);
+	int (*lm_change)(struct file_lock *, int, struct list_head *);
+	void (*lm_setup)(struct file_lock *, void **);
+	bool (*lm_breaker_owns_lease)(struct file_lock *);
+	bool (*lm_lock_expirable)(struct file_lock *);
+	void (*lm_expire_lock)();
+};
+
+enum fsnotify_data_type {
+	FSNOTIFY_EVENT_NONE = 0,
+	FSNOTIFY_EVENT_PATH = 1,
+	FSNOTIFY_EVENT_INODE = 2,
+	FSNOTIFY_EVENT_DENTRY = 3,
+	FSNOTIFY_EVENT_ERROR = 4,
+};
+
+typedef s32 compat_off_t;
+
+struct open_flags {
+	int open_flag;
+	umode_t mode;
+	int acc_mode;
+	int intent;
+	int lookup_flags;
+};
+
+typedef __kernel_long_t __kernel_off_t;
+
+typedef __kernel_off_t off_t;
+
+typedef __kernel_rwf_t rwf_t;
+
+typedef s64 compat_loff_t;
+
+struct files_stat_struct {
+	unsigned long nr_files;
+	unsigned long nr_free_files;
+	unsigned long max_files;
+};
+
+struct backing_file {
+	struct file file;
+	struct path real_path;
+};
+
+struct fscrypt_policy_v1 {
+	__u8 version;
+	__u8 contents_encryption_mode;
+	__u8 filenames_encryption_mode;
+	__u8 flags;
+	__u8 master_key_descriptor[8];
+};
+
+struct fscrypt_policy_v2 {
+	__u8 version;
+	__u8 contents_encryption_mode;
+	__u8 filenames_encryption_mode;
+	__u8 flags;
+	__u8 log2_data_unit_size;
+	__u8 __reserved[3];
+	__u8 master_key_identifier[16];
+};
+
+union fscrypt_policy {
+	u8 version;
+	struct fscrypt_policy_v1 v1;
+	struct fscrypt_policy_v2 v2;
+};
+
+struct char_device_struct {
+	struct char_device_struct *next;
+	unsigned int major;
+	unsigned int baseminor;
+	int minorct;
+	char name[64];
+	struct cdev *cdev;
+};
+
+typedef struct kobject *kobj_probe_t(dev_t, int *, void *);
+
+struct mount;
+
+struct mnt_namespace {
+	struct ns_common ns;
+	struct mount *root;
+	struct list_head list;
+	spinlock_t ns_lock;
+	struct user_namespace *user_ns;
+	struct ucounts *ucounts;
+	u64 seq;
+	wait_queue_head_t poll;
+	u64 event;
+	unsigned int mounts;
+	unsigned int pending_mounts;
+};
+
+struct mnt_pcp;
+
+struct mountpoint;
+
+struct mount {
+	struct hlist_node mnt_hash;
+	struct mount *mnt_parent;
+	struct dentry *mnt_mountpoint;
+	struct vfsmount mnt;
+	union {
+		struct callback_head mnt_rcu;
+		struct llist_node mnt_llist;
+	};
+	struct mnt_pcp __attribute__((btf_type_tag("percpu"))) *mnt_pcp;
+	struct list_head mnt_mounts;
+	struct list_head mnt_child;
+	struct list_head mnt_instance;
+	const char *mnt_devname;
+	struct list_head mnt_list;
+	struct list_head mnt_expire;
+	struct list_head mnt_share;
+	struct list_head mnt_slave_list;
+	struct list_head mnt_slave;
+	struct mount *mnt_master;
+	struct mnt_namespace *mnt_ns;
+	struct mountpoint *mnt_mp;
+	union {
+		struct hlist_node mnt_mp_list;
+		struct hlist_node mnt_umount;
+	};
+	struct list_head mnt_umounting;
+	struct fsnotify_mark_connector __attribute__((btf_type_tag("rcu"))) *mnt_fsnotify_marks;
+	__u32 mnt_fsnotify_mask;
+	int mnt_id;
+	int mnt_group_id;
+	int mnt_expiry_mark;
+	struct hlist_head mnt_pins;
+	struct hlist_head mnt_stuck_children;
+};
+
+struct mnt_pcp {
+	int mnt_count;
+	int mnt_writers;
+};
+
+struct mountpoint {
+	struct hlist_node m_hash;
+	struct dentry *m_dentry;
+	struct hlist_head m_list;
+	int m_count;
+};
+
+struct __old_kernel_stat {
+	unsigned short st_dev;
+	unsigned short st_ino;
+	unsigned short st_mode;
+	unsigned short st_nlink;
+	unsigned short st_uid;
+	unsigned short st_gid;
+	unsigned short st_rdev;
+	unsigned int st_size;
+	unsigned int st_atime;
+	unsigned int st_mtime;
+	unsigned int st_ctime;
+};
+
+struct stat {
+	__kernel_ulong_t st_dev;
+	__kernel_ulong_t st_ino;
+	__kernel_ulong_t st_nlink;
+	unsigned int st_mode;
+	unsigned int st_uid;
+	unsigned int st_gid;
+	unsigned int __pad0;
+	__kernel_ulong_t st_rdev;
+	__kernel_long_t st_size;
+	__kernel_long_t st_blksize;
+	__kernel_long_t st_blocks;
+	__kernel_ulong_t st_atime;
+	__kernel_ulong_t st_atime_nsec;
+	__kernel_ulong_t st_mtime;
+	__kernel_ulong_t st_mtime_nsec;
+	__kernel_ulong_t st_ctime;
+	__kernel_ulong_t st_ctime_nsec;
+	__kernel_long_t __unused[3];
+};
+
+struct statx_timestamp {
+	__s64 tv_sec;
+	__u32 tv_nsec;
+	__s32 __reserved;
+};
+
+struct statx {
+	__u32 stx_mask;
+	__u32 stx_blksize;
+	__u64 stx_attributes;
+	__u32 stx_nlink;
+	__u32 stx_uid;
+	__u32 stx_gid;
+	__u16 stx_mode;
+	__u16 __spare0[1];
+	__u64 stx_ino;
+	__u64 stx_size;
+	__u64 stx_blocks;
+	__u64 stx_attributes_mask;
+	struct statx_timestamp stx_atime;
+	struct statx_timestamp stx_btime;
+	struct statx_timestamp stx_ctime;
+	struct statx_timestamp stx_mtime;
+	__u32 stx_rdev_major;
+	__u32 stx_rdev_minor;
+	__u32 stx_dev_major;
+	__u32 stx_dev_minor;
+	__u64 stx_mnt_id;
+	__u32 stx_dio_mem_align;
+	__u32 stx_dio_offset_align;
+	__u64 __spare3[12];
+};
+
+typedef u32 compat_ino_t;
+
+typedef u16 compat_mode_t;
+
+typedef u16 compat_nlink_t;
+
+typedef u16 __compat_uid_t;
+
+typedef u16 __compat_gid_t;
+
+struct compat_stat {
+	u32 st_dev;
+	compat_ino_t st_ino;
+	compat_mode_t st_mode;
+	compat_nlink_t st_nlink;
+	__compat_uid_t st_uid;
+	__compat_gid_t st_gid;
+	u32 st_rdev;
+	u32 st_size;
+	u32 st_blksize;
+	u32 st_blocks;
+	u32 st_atime;
+	u32 st_atime_nsec;
+	u32 st_mtime;
+	u32 st_mtime_nsec;
+	u32 st_ctime;
+	u32 st_ctime_nsec;
+	u32 __unused4;
+	u32 __unused5;
+};
+
+typedef unsigned short ushort;
+
+struct user_arg_ptr {
+	bool is_compat;
+	union {
+		const char __attribute__((btf_type_tag("user"))) * const __attribute__((btf_type_tag("user"))) *native;
+		const compat_uptr_t __attribute__((btf_type_tag("user"))) *compat;
+	} ptr;
+};
+
+enum inode_i_mutex_lock_class {
+	I_MUTEX_NORMAL = 0,
+	I_MUTEX_PARENT = 1,
+	I_MUTEX_CHILD = 2,
+	I_MUTEX_XATTR = 3,
+	I_MUTEX_NONDIR2 = 4,
+	I_MUTEX_PARENT2 = 5,
+};
+
+struct saved {
+	struct path link;
+	struct delayed_call done;
+	const char *name;
+	unsigned int seq;
+};
+
+struct nameidata {
+	struct path path;
+	struct qstr last;
+	struct path root;
+	struct inode *inode;
+	unsigned int flags;
+	unsigned int state;
+	unsigned int seq;
+	unsigned int next_seq;
+	unsigned int m_seq;
+	unsigned int r_seq;
+	int last_type;
+	unsigned int depth;
+	int total_link_count;
+	struct saved *stack;
+	struct saved internal[2];
+	struct filename *name;
+	struct nameidata *saved;
+	unsigned int root_seq;
+	int dfd;
+	vfsuid_t dir_vfsuid;
+	umode_t dir_mode;
+};
+
+enum {
+	LAST_NORM = 0,
+	LAST_ROOT = 1,
+	LAST_DOT = 2,
+	LAST_DOTDOT = 3,
+};
+
+enum {
+	WALK_TRAILING = 1,
+	WALK_MORE = 2,
+	WALK_NOFOLLOW = 4,
+};
+
+struct word_at_a_time {
+	const unsigned long one_bits;
+	const unsigned long high_bits;
+};
+
+struct name_snapshot {
+	struct qstr name;
+	unsigned char inline_name[32];
+};
+
+struct renamedata {
+	struct mnt_idmap *old_mnt_idmap;
+	struct inode *old_dir;
+	struct dentry *old_dentry;
+	struct mnt_idmap *new_mnt_idmap;
+	struct inode *new_dir;
+	struct dentry *new_dentry;
+	struct inode **delegated_inode;
+	unsigned int flags;
+};
+
+struct f_owner_ex {
+	int type;
+	__kernel_pid_t pid;
+};
+
+struct flock {
+	short l_type;
+	short l_whence;
+	__kernel_off_t l_start;
+	__kernel_off_t l_len;
+	__kernel_pid_t l_pid;
+};
+
+struct compat_flock64 {
+	short l_type;
+	short l_whence;
+	compat_loff_t l_start;
+	compat_loff_t l_len;
+	compat_pid_t l_pid;
+} __attribute__((packed));
+
+struct compat_flock {
+	short l_type;
+	short l_whence;
+	compat_off_t l_start;
+	compat_off_t l_len;
+	compat_pid_t l_pid;
+};
+
+struct fiemap_extent;
+
+struct fiemap_extent_info {
+	unsigned int fi_flags;
+	unsigned int fi_extents_mapped;
+	unsigned int fi_extents_max;
+	struct fiemap_extent __attribute__((btf_type_tag("user"))) *fi_extents_start;
+};
+
+struct fiemap_extent {
+	__u64 fe_logical;
+	__u64 fe_physical;
+	__u64 fe_length;
+	__u64 fe_reserved64[2];
+	__u32 fe_flags;
+	__u32 fe_reserved[3];
+};
+
+struct space_resv_32 {
+	__s16 l_type;
+	__s16 l_whence;
+	__s64 l_start;
+	__s64 l_len;
+	__s32 l_sysid;
+	__u32 l_pid;
+	__s32 l_pad[4];
+} __attribute__((packed));
+
+struct file_clone_range {
+	__s64 src_fd;
+	__u64 src_offset;
+	__u64 src_length;
+	__u64 dest_offset;
+};
+
+struct fsxattr {
+	__u32 fsx_xflags;
+	__u32 fsx_extsize;
+	__u32 fsx_nextents;
+	__u32 fsx_projid;
+	__u32 fsx_cowextsize;
+	unsigned char fsx_pad[8];
+};
+
+struct fiemap {
+	__u64 fm_start;
+	__u64 fm_length;
+	__u32 fm_flags;
+	__u32 fm_mapped_extents;
+	__u32 fm_extent_count;
+	__u32 fm_reserved;
+	struct fiemap_extent fm_extents[0];
+};
+
+struct file_dedupe_range_info {
+	__s64 dest_fd;
+	__u64 dest_offset;
+	__u64 bytes_deduped;
+	__s32 status;
+	__u32 reserved;
+};
+
+struct file_dedupe_range {
+	__u64 src_offset;
+	__u64 src_length;
+	__u16 dest_count;
+	__u16 reserved1;
+	__u32 reserved2;
+	struct file_dedupe_range_info info[0];
+};
+
+struct space_resv {
+	__s16 l_type;
+	__s16 l_whence;
+	__s64 l_start;
+	__s64 l_len;
+	__s32 l_sysid;
+	__u32 l_pid;
+	__s32 l_pad[4];
+};
+
+struct old_linux_dirent {
+	unsigned long d_ino;
+	unsigned long d_offset;
+	unsigned short d_namlen;
+	char d_name[0];
+};
+
+struct readdir_callback {
+	struct dir_context ctx;
+	struct old_linux_dirent __attribute__((btf_type_tag("user"))) *dirent;
+	int result;
+};
+
+struct linux_dirent {
+	unsigned long d_ino;
+	unsigned long d_off;
+	unsigned short d_reclen;
+	char d_name[0];
+};
+
+struct getdents_callback {
+	struct dir_context ctx;
+	struct linux_dirent __attribute__((btf_type_tag("user"))) *current_dir;
+	int prev_reclen;
+	int count;
+	int error;
+};
+
+struct linux_dirent64 {
+	u64 d_ino;
+	s64 d_off;
+	unsigned short d_reclen;
+	unsigned char d_type;
+	char d_name[0];
+};
+
+struct getdents_callback64 {
+	struct dir_context ctx;
+	struct linux_dirent64 __attribute__((btf_type_tag("user"))) *current_dir;
+	int prev_reclen;
+	int count;
+	int error;
+};
+
+struct compat_old_linux_dirent {
+	compat_ulong_t d_ino;
+	compat_ulong_t d_offset;
+	unsigned short d_namlen;
+	char d_name[0];
+};
+
+struct compat_readdir_callback {
+	struct dir_context ctx;
+	struct compat_old_linux_dirent __attribute__((btf_type_tag("user"))) *dirent;
+	int result;
+};
+
+struct compat_linux_dirent {
+	compat_ulong_t d_ino;
+	compat_ulong_t d_off;
+	unsigned short d_reclen;
+	char d_name[0];
+};
+
+struct compat_getdents_callback {
+	struct dir_context ctx;
+	struct compat_linux_dirent __attribute__((btf_type_tag("user"))) *current_dir;
+	int prev_reclen;
+	int count;
+	int error;
+};
+
+enum poll_time_type {
+	PT_TIMEVAL = 0,
+	PT_OLD_TIMEVAL = 1,
+	PT_TIMESPEC = 2,
+	PT_OLD_TIMESPEC = 3,
+};
+
+struct poll_table_entry {
+	struct file *filp;
+	__poll_t key;
+	wait_queue_entry_t wait;
+	wait_queue_head_t *wait_address;
+};
+
+struct poll_table_page;
+
+struct poll_wqueues {
+	poll_table pt;
+	struct poll_table_page *table;
+	struct task_struct *polling_task;
+	int triggered;
+	int error;
+	int inline_index;
+	struct poll_table_entry inline_entries[9];
+};
+
+struct poll_table_page {
+	struct poll_table_page *next;
+	struct poll_table_entry *entry;
+	struct poll_table_entry entries[0];
+};
+
+typedef struct {
+	unsigned long fds_bits[16];
+} __kernel_fd_set;
+
+typedef __kernel_fd_set fd_set;
+
+struct poll_list {
+	struct poll_list *next;
+	int len;
+	struct pollfd entries[0];
+};
+
+struct compat_sel_arg_struct {
+	compat_ulong_t n;
+	compat_uptr_t inp;
+	compat_uptr_t outp;
+	compat_uptr_t exp;
+	compat_uptr_t tvp;
+};
+
+typedef struct {
+	unsigned long *in;
+	unsigned long *out;
+	unsigned long *ex;
+	unsigned long *res_in;
+	unsigned long *res_out;
+	unsigned long *res_ex;
+} fd_set_bits;
+
+struct sigset_argpack {
+	sigset_t __attribute__((btf_type_tag("user"))) *p;
+	size_t size;
+};
+
+struct compat_sigset_argpack {
+	compat_uptr_t p;
+	compat_size_t size;
+};
+
+struct dentry_stat_t {
+	long nr_dentry;
+	long nr_unused;
+	long age_limit;
+	long want_pages;
+	long nr_negative;
+	long dummy;
+};
+
+enum dentry_d_lock_class {
+	DENTRY_D_LOCK_NORMAL = 0,
+	DENTRY_D_LOCK_NESTED = 1,
+};
+
+enum d_walk_ret {
+	D_WALK_CONTINUE = 0,
+	D_WALK_QUIT = 1,
+	D_WALK_NORETRY = 2,
+	D_WALK_SKIP = 3,
+};
+
+struct external_name {
+	union {
+		atomic_t count;
+		struct callback_head head;
+	} u;
+	unsigned char name[0];
+};
+
+struct check_mount {
+	struct vfsmount *mnt;
+	unsigned int mounted;
+};
+
+struct select_data {
+	struct dentry *start;
+	union {
+		long found;
+		struct dentry *victim;
+	};
+	struct list_head dispose;
+};
+
+struct inodes_stat_t {
+	long nr_inodes;
+	long nr_unused;
+	long dummy[5];
+};
+
+enum file_time_flags {
+	S_ATIME = 1,
+	S_MTIME = 2,
+	S_CTIME = 4,
+	S_VERSION = 8,
+};
+
+enum umount_tree_flags {
+	UMOUNT_SYNC = 1,
+	UMOUNT_PROPAGATE = 2,
+	UMOUNT_CONNECTED = 4,
+};
+
+enum mnt_tree_flags_t {
+	MNT_TREE_MOVE = 1,
+	MNT_TREE_BENEATH = 2,
+};
+
+struct mount_attr {
+	__u64 attr_set;
+	__u64 attr_clr;
+	__u64 propagation;
+	__u64 userns_fd;
+};
+
+struct mount_kattr {
+	unsigned int attr_set;
+	unsigned int attr_clr;
+	unsigned int propagation;
+	unsigned int lookup_flags;
+	bool recurse;
+	struct user_namespace *mnt_userns;
+	struct mnt_idmap *mnt_idmap;
+};
+
+struct mnt_idmap {
+	struct user_namespace *owner;
+	refcount_t count;
+};
+
+struct proc_mounts {
+	struct mnt_namespace *ns;
+	struct path root;
+	int (*show)(struct seq_file *, struct vfsmount *);
+	struct mount cursor;
+};
+
+struct xattr_name {
+	char name[256];
+};
+
+struct xattr_ctx {
+	union {
+		const void __attribute__((btf_type_tag("user"))) *cvalue;
+		void __attribute__((btf_type_tag("user"))) *value;
+	};
+	void *kvalue;
+	size_t size;
+	struct xattr_name *kname;
+	unsigned int flags;
+};
+
+struct utf8data;
+
+struct utf8data_table;
+
+struct unicode_map {
+	unsigned int version;
+	const struct utf8data *ntab[2];
+	const struct utf8data_table *tables;
+};
+
+struct utf8data {
+	unsigned int maxage;
+	unsigned int offset;
+};
+
+struct utf8data_table {
+	const unsigned int *utf8agetab;
+	int utf8agetab_size;
+	const struct utf8data *utf8nfdicfdata;
+	int utf8nfdicfdata_size;
+	const struct utf8data *utf8nfdidata;
+	int utf8nfdidata_size;
+	const unsigned char *utf8data;
+};
+
+struct simple_transaction_argresp {
+	ssize_t size;
+	char data[0];
+};
+
+struct simple_attr {
+	int (*get)(void *, u64 *);
+	int (*set)(void *, u64);
+	char get_buf[24];
+	char set_buf[24];
+	void *data;
+	const char *fmt;
+	struct mutex mutex;
+};
+
+typedef void (*btf_trace_writeback_dirty_folio)(void *, struct folio *, struct address_space *);
+
+typedef void (*btf_trace_folio_wait_writeback)(void *, struct folio *, struct address_space *);
+
+typedef void (*btf_trace_writeback_mark_inode_dirty)(void *, struct inode *, int);
+
+typedef void (*btf_trace_writeback_dirty_inode_start)(void *, struct inode *, int);
+
+typedef void (*btf_trace_writeback_dirty_inode)(void *, struct inode *, int);
+
+typedef void (*btf_trace_inode_foreign_history)(void *, struct inode *, struct writeback_control *, unsigned int);
+
+typedef void (*btf_trace_inode_switch_wbs)(void *, struct inode *, struct bdi_writeback *, struct bdi_writeback *);
+
+typedef void (*btf_trace_track_foreign_dirty)(void *, struct folio *, struct bdi_writeback *);
+
+typedef void (*btf_trace_flush_foreign)(void *, struct bdi_writeback *, unsigned int, unsigned int);
+
+typedef void (*btf_trace_writeback_write_inode_start)(void *, struct inode *, struct writeback_control *);
+
+typedef void (*btf_trace_writeback_write_inode)(void *, struct inode *, struct writeback_control *);
+
+struct wb_writeback_work;
+
+typedef void (*btf_trace_writeback_queue)(void *, struct bdi_writeback *, struct wb_writeback_work *);
+
+struct wb_writeback_work {
+	long nr_pages;
+	struct super_block *sb;
+	enum writeback_sync_modes sync_mode;
+	unsigned int tagged_writepages: 1;
+	unsigned int for_kupdate: 1;
+	unsigned int range_cyclic: 1;
+	unsigned int for_background: 1;
+	unsigned int for_sync: 1;
+	unsigned int auto_free: 1;
+	enum wb_reason reason;
+	struct list_head list;
+	struct wb_completion *done;
+};
+
+typedef void (*btf_trace_writeback_exec)(void *, struct bdi_writeback *, struct wb_writeback_work *);
+
+typedef void (*btf_trace_writeback_start)(void *, struct bdi_writeback *, struct wb_writeback_work *);
+
+typedef void (*btf_trace_writeback_written)(void *, struct bdi_writeback *, struct wb_writeback_work *);
+
+typedef void (*btf_trace_writeback_wait)(void *, struct bdi_writeback *, struct wb_writeback_work *);
+
+typedef void (*btf_trace_writeback_pages_written)(void *, long);
+
+typedef void (*btf_trace_writeback_wake_background)(void *, struct bdi_writeback *);
+
+typedef void (*btf_trace_writeback_bdi_register)(void *, struct backing_dev_info *);
+
+typedef void (*btf_trace_wbc_writepage)(void *, struct writeback_control *, struct backing_dev_info *);
+
+typedef void (*btf_trace_writeback_queue_io)(void *, struct bdi_writeback *, struct wb_writeback_work *, unsigned long, int);
+
+typedef void (*btf_trace_global_dirty_state)(void *, unsigned long, unsigned long);
+
+typedef void (*btf_trace_bdi_dirty_ratelimit)(void *, struct bdi_writeback *, unsigned long, unsigned long);
+
+typedef void (*btf_trace_balance_dirty_pages)(void *, struct bdi_writeback *, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, long, unsigned long);
+
+typedef void (*btf_trace_writeback_sb_inodes_requeue)(void *, struct inode *);
+
+typedef void (*btf_trace_writeback_single_inode_start)(void *, struct inode *, struct writeback_control *, unsigned long);
+
+typedef void (*btf_trace_writeback_single_inode)(void *, struct inode *, struct writeback_control *, unsigned long);
+
+typedef void (*btf_trace_writeback_lazytime)(void *, struct inode *);
+
+typedef void (*btf_trace_writeback_lazytime_iput)(void *, struct inode *);
+
+typedef void (*btf_trace_writeback_dirty_inode_enqueue)(void *, struct inode *);
+
+typedef void (*btf_trace_sb_mark_inode_writeback)(void *, struct inode *);
+
+typedef void (*btf_trace_sb_clear_inode_writeback)(void *, struct inode *);
+
+struct trace_event_raw_writeback_folio_template {
+	struct trace_entry ent;
+	char name[32];
+	ino_t ino;
+	unsigned long index;
+	char __data[0];
+};
+
+struct trace_event_raw_writeback_dirty_inode_template {
+	struct trace_entry ent;
+	char name[32];
+	ino_t ino;
+	unsigned long state;
+	unsigned long flags;
+	char __data[0];
+};
+
+struct trace_event_raw_inode_foreign_history {
+	struct trace_entry ent;
+	char name[32];
+	ino_t ino;
+	ino_t cgroup_ino;
+	unsigned int history;
+	char __data[0];
+};
+
+struct trace_event_raw_inode_switch_wbs {
+	struct trace_entry ent;
+	char name[32];
+	ino_t ino;
+	ino_t old_cgroup_ino;
+	ino_t new_cgroup_ino;
+	char __data[0];
+};
+
+struct trace_event_raw_track_foreign_dirty {
+	struct trace_entry ent;
+	char name[32];
+	u64 bdi_id;
+	ino_t ino;
+	unsigned int memcg_id;
+	ino_t cgroup_ino;
+	ino_t page_cgroup_ino;
+	char __data[0];
+};
+
+struct trace_event_raw_flush_foreign {
+	struct trace_entry ent;
+	char name[32];
+	ino_t cgroup_ino;
+	unsigned int frn_bdi_id;
+	unsigned int frn_memcg_id;
+	char __data[0];
+};
+
+struct trace_event_raw_writeback_write_inode_template {
+	struct trace_entry ent;
+	char name[32];
+	ino_t ino;
+	int sync_mode;
+	ino_t cgroup_ino;
+	char __data[0];
+};
+
+struct trace_event_raw_writeback_work_class {
+	struct trace_entry ent;
+	char name[32];
+	long nr_pages;
+	dev_t sb_dev;
+	int sync_mode;
+	int for_kupdate;
+	int range_cyclic;
+	int for_background;
+	int reason;
+	ino_t cgroup_ino;
+	char __data[0];
+};
+
+struct trace_event_raw_writeback_pages_written {
+	struct trace_entry ent;
+	long pages;
+	char __data[0];
+};
+
+struct trace_event_raw_writeback_class {
+	struct trace_entry ent;
+	char name[32];
+	ino_t cgroup_ino;
+	char __data[0];
+};
+
+struct trace_event_raw_writeback_bdi_register {
+	struct trace_entry ent;
+	char name[32];
+	char __data[0];
+};
+
+struct trace_event_raw_wbc_class {
+	struct trace_entry ent;
+	char name[32];
+	long nr_to_write;
+	long pages_skipped;
+	int sync_mode;
+	int for_kupdate;
+	int for_background;
+	int for_reclaim;
+	int range_cyclic;
+	long range_start;
+	long range_end;
+	ino_t cgroup_ino;
+	char __data[0];
+};
+
+struct trace_event_raw_writeback_queue_io {
+	struct trace_entry ent;
+	char name[32];
+	unsigned long older;
+	long age;
+	int moved;
+	int reason;
+	ino_t cgroup_ino;
+	char __data[0];
+};
+
+struct trace_event_raw_global_dirty_state {
+	struct trace_entry ent;
+	unsigned long nr_dirty;
+	unsigned long nr_writeback;
+	unsigned long background_thresh;
+	unsigned long dirty_thresh;
+	unsigned long dirty_limit;
+	unsigned long nr_dirtied;
+	unsigned long nr_written;
+	char __data[0];
+};
+
+struct trace_event_raw_bdi_dirty_ratelimit {
+	struct trace_entry ent;
+	char bdi[32];
+	unsigned long write_bw;
+	unsigned long avg_write_bw;
+	unsigned long dirty_rate;
+	unsigned long dirty_ratelimit;
+	unsigned long task_ratelimit;
+	unsigned long balanced_dirty_ratelimit;
+	ino_t cgroup_ino;
+	char __data[0];
+};
+
+struct trace_event_raw_balance_dirty_pages {
+	struct trace_entry ent;
+	char bdi[32];
+	unsigned long limit;
+	unsigned long setpoint;
+	unsigned long dirty;
+	unsigned long bdi_setpoint;
+	unsigned long bdi_dirty;
+	unsigned long dirty_ratelimit;
+	unsigned long task_ratelimit;
+	unsigned int dirtied;
+	unsigned int dirtied_pause;
+	unsigned long paused;
+	long pause;
+	unsigned long period;
+	long think;
+	ino_t cgroup_ino;
+	char __data[0];
+};
+
+struct trace_event_raw_writeback_sb_inodes_requeue {
+	struct trace_entry ent;
+	char name[32];
+	ino_t ino;
+	unsigned long state;
+	unsigned long dirtied_when;
+	ino_t cgroup_ino;
+	char __data[0];
+};
+
+struct trace_event_raw_writeback_single_inode_template {
+	struct trace_entry ent;
+	char name[32];
+	ino_t ino;
+	unsigned long state;
+	unsigned long dirtied_when;
+	unsigned long writeback_index;
+	long nr_to_write;
+	unsigned long wrote;
+	ino_t cgroup_ino;
+	char __data[0];
+};
+
+struct trace_event_raw_writeback_inode_template {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	unsigned long state;
+	__u16 mode;
+	unsigned long dirtied_when;
+	char __data[0];
+};
+
+struct inode_switch_wbs_context {
+	struct rcu_work work;
+	struct bdi_writeback *new_wb;
+	struct inode *inodes[0];
+};
+
+struct trace_event_data_offsets_writeback_folio_template {};
+
+struct trace_event_data_offsets_writeback_dirty_inode_template {};
+
+struct trace_event_data_offsets_inode_foreign_history {};
+
+struct trace_event_data_offsets_inode_switch_wbs {};
+
+struct trace_event_data_offsets_track_foreign_dirty {};
+
+struct trace_event_data_offsets_flush_foreign {};
+
+struct trace_event_data_offsets_writeback_write_inode_template {};
+
+struct trace_event_data_offsets_writeback_work_class {};
+
+struct trace_event_data_offsets_writeback_pages_written {};
+
+struct trace_event_data_offsets_writeback_class {};
+
+struct trace_event_data_offsets_writeback_bdi_register {};
+
+struct trace_event_data_offsets_wbc_class {};
+
+struct trace_event_data_offsets_writeback_queue_io {};
+
+struct trace_event_data_offsets_global_dirty_state {};
+
+struct trace_event_data_offsets_bdi_dirty_ratelimit {};
+
+struct trace_event_data_offsets_balance_dirty_pages {};
+
+struct trace_event_data_offsets_writeback_sb_inodes_requeue {};
+
+struct trace_event_data_offsets_writeback_single_inode_template {};
+
+struct trace_event_data_offsets_writeback_inode_template {};
+
+struct splice_desc {
+	size_t total_len;
+	unsigned int len;
+	unsigned int flags;
+	union {
+		void __attribute__((btf_type_tag("user"))) *userptr;
+		struct file *file;
+		void *data;
+	} u;
+	void (*splice_eof)(struct splice_desc *);
+	loff_t pos;
+	loff_t *opos;
+	size_t num_spliced;
+	bool need_wakeup;
+};
+
+typedef int splice_actor(struct pipe_inode_info *, struct pipe_buffer *, struct splice_desc *);
+
+typedef int splice_direct_actor(struct pipe_inode_info *, struct splice_desc *);
+
+struct utimbuf {
+	__kernel_old_time_t actime;
+	__kernel_old_time_t modtime;
+};
+
+struct old_utimbuf32 {
+	old_time32_t actime;
+	old_time32_t modtime;
+};
+
+struct prepend_buffer {
+	char *buf;
+	int len;
+};
+
+struct statfs {
+	__kernel_long_t f_type;
+	__kernel_long_t f_bsize;
+	__kernel_long_t f_blocks;
+	__kernel_long_t f_bfree;
+	__kernel_long_t f_bavail;
+	__kernel_long_t f_files;
+	__kernel_long_t f_ffree;
+	__kernel_fsid_t f_fsid;
+	__kernel_long_t f_namelen;
+	__kernel_long_t f_frsize;
+	__kernel_long_t f_flags;
+	__kernel_long_t f_spare[4];
+};
+
+struct statfs64 {
+	__kernel_long_t f_type;
+	__kernel_long_t f_bsize;
+	__u64 f_blocks;
+	__u64 f_bfree;
+	__u64 f_bavail;
+	__u64 f_files;
+	__u64 f_ffree;
+	__kernel_fsid_t f_fsid;
+	__kernel_long_t f_namelen;
+	__kernel_long_t f_frsize;
+	__kernel_long_t f_flags;
+	__kernel_long_t f_spare[4];
+};
+
+typedef int __kernel_daddr_t;
+
+struct ustat {
+	__kernel_daddr_t f_tfree;
+	unsigned long f_tinode;
+	char f_fname[6];
+	char f_fpack[6];
+};
+
+typedef __kernel_fsid_t compat_fsid_t;
+
+struct compat_statfs {
+	int f_type;
+	int f_bsize;
+	int f_blocks;
+	int f_bfree;
+	int f_bavail;
+	int f_files;
+	int f_ffree;
+	compat_fsid_t f_fsid;
+	int f_namelen;
+	int f_frsize;
+	int f_flags;
+	int f_spare[4];
+};
+
+struct compat_statfs64 {
+	__u32 f_type;
+	__u32 f_bsize;
+	__u64 f_blocks;
+	__u64 f_bfree;
+	__u64 f_bavail;
+	__u64 f_files;
+	__u64 f_ffree;
+	__kernel_fsid_t f_fsid;
+	__u32 f_namelen;
+	__u32 f_frsize;
+	__u32 f_flags;
+	__u32 f_spare[4];
+} __attribute__((packed));
+
+typedef s32 compat_daddr_t;
+
+struct compat_ustat {
+	compat_daddr_t f_tfree;
+	compat_ino_t f_tinode;
+	char f_fname[6];
+	char f_fpack[6];
+};
+
+struct fs_pin {
+	wait_queue_head_t wait;
+	int done;
+	struct hlist_node s_list;
+	struct hlist_node m_list;
+	void (*kill)(struct fs_pin *);
+};
+
+struct ns_get_path_task_args {
+	const struct proc_ns_operations *ns_ops;
+	struct task_struct *task;
+};
+
+enum legacy_fs_param {
+	LEGACY_FS_UNSET_PARAMS = 0,
+	LEGACY_FS_MONOLITHIC_PARAMS = 1,
+	LEGACY_FS_INDIVIDUAL_PARAMS = 2,
+};
+
+struct legacy_fs_context {
+	char *legacy_data;
+	size_t data_size;
+	enum legacy_fs_param param_type;
+};
+
+enum fsconfig_command {
+	FSCONFIG_SET_FLAG = 0,
+	FSCONFIG_SET_STRING = 1,
+	FSCONFIG_SET_BINARY = 2,
+	FSCONFIG_SET_PATH = 3,
+	FSCONFIG_SET_PATH_EMPTY = 4,
+	FSCONFIG_SET_FD = 5,
+	FSCONFIG_CMD_CREATE = 6,
+	FSCONFIG_CMD_RECONFIGURE = 7,
+	FSCONFIG_CMD_CREATE_EXCL = 8,
+};
+
+struct iomap_ops {
+	int (*iomap_begin)(struct inode *, loff_t, loff_t, unsigned int, struct iomap *, struct iomap *);
+	int (*iomap_end)(struct inode *, loff_t, loff_t, ssize_t, unsigned int, struct iomap *);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct bh_lru {
+	struct buffer_head *bhs[16];
+};
+
+enum rq_end_io_ret {
+	RQ_END_IO_NONE = 0,
+	RQ_END_IO_FREE = 1,
+};
+
+typedef enum rq_end_io_ret rq_end_io_fn(struct request *, blk_status_t);
+
+typedef __u32 req_flags_t;
+
+enum mq_rq_state {
+	MQ_RQ_IDLE = 0,
+	MQ_RQ_IN_FLIGHT = 1,
+	MQ_RQ_COMPLETE = 2,
+};
+
+struct blk_crypto_keyslot;
+
+struct request {
+	struct request_queue *q;
+	struct blk_mq_ctx *mq_ctx;
+	struct blk_mq_hw_ctx *mq_hctx;
+	blk_opf_t cmd_flags;
+	req_flags_t rq_flags;
+	int tag;
+	int internal_tag;
+	unsigned int timeout;
+	unsigned int __data_len;
+	sector_t __sector;
+	struct bio *bio;
+	struct bio *biotail;
+	union {
+		struct list_head queuelist;
+		struct request *rq_next;
+	};
+	struct block_device *part;
+	u64 alloc_time_ns;
+	u64 start_time_ns;
+	u64 io_start_time_ns;
+	unsigned short wbt_flags;
+	unsigned short stats_sectors;
+	unsigned short nr_phys_segments;
+	struct bio_crypt_ctx *crypt_ctx;
+	struct blk_crypto_keyslot *crypt_keyslot;
+	enum rw_hint write_hint;
+	unsigned short ioprio;
+	enum mq_rq_state state;
+	atomic_t ref;
+	unsigned long deadline;
+	union {
+		struct hlist_node hash;
+		struct llist_node ipi_list;
+	};
+	union {
+		struct rb_node rb_node;
+		struct bio_vec special_vec;
+	};
+	struct {
+		struct io_cq *icq;
+		void *priv[2];
+	} elv;
+	struct {
+		unsigned int seq;
+		rq_end_io_fn *saved_end_io;
+	} flush;
+	u64 fifo_time;
+	rq_end_io_fn *end_io;
+	void *end_io_data;
+	u64 android_oem_data1;
+	u64 android_kabi_reserved1;
+};
+
+struct sbitmap_word;
+
+struct sbitmap {
+	unsigned int depth;
+	unsigned int shift;
+	unsigned int map_nr;
+	bool round_robin;
+	struct sbitmap_word *map;
+	unsigned int __attribute__((btf_type_tag("percpu"))) *alloc_hint;
+};
+
+struct blk_mq_hw_ctx {
+	struct {
+		spinlock_t lock;
+		struct list_head dispatch;
+		unsigned long state;
+		long: 64;
+		long: 64;
+		long: 64;
+		long: 64;
+	};
+	struct delayed_work run_work;
+	cpumask_var_t cpumask;
+	int next_cpu;
+	int next_cpu_batch;
+	unsigned long flags;
+	void *sched_data;
+	struct request_queue *queue;
+	struct blk_flush_queue *fq;
+	void *driver_data;
+	struct sbitmap ctx_map;
+	struct blk_mq_ctx *dispatch_from;
+	unsigned int dispatch_busy;
+	unsigned short type;
+	unsigned short nr_ctx;
+	struct blk_mq_ctx **ctxs;
+	spinlock_t dispatch_wait_lock;
+	wait_queue_entry_t dispatch_wait;
+	atomic_t wait_index;
+	struct blk_mq_tags *tags;
+	struct blk_mq_tags *sched_tags;
+	unsigned long run;
+	unsigned int numa_node;
+	unsigned int queue_num;
+	atomic_t nr_active;
+	struct hlist_node cpuhp_online;
+	struct hlist_node cpuhp_dead;
+	struct kobject kobj;
+	struct dentry *debugfs_dir;
+	struct dentry *sched_debugfs_dir;
+	struct list_head hctx_list;
+	u64 android_kabi_reserved1;
+};
+
+struct sbitmap_word {
+	unsigned long word;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	unsigned long cleared;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct sbq_wait_state;
+
+struct sbitmap_queue {
+	struct sbitmap sb;
+	unsigned int wake_batch;
+	atomic_t wake_index;
+	struct sbq_wait_state *ws;
+	atomic_t ws_active;
+	unsigned int min_shallow_depth;
+	atomic_t completion_cnt;
+	atomic_t wakeup_cnt;
+};
+
+struct blk_mq_tags {
+	unsigned int nr_tags;
+	unsigned int nr_reserved_tags;
+	unsigned int active_queues;
+	struct sbitmap_queue bitmap_tags;
+	struct sbitmap_queue breserved_tags;
+	struct request **rqs;
+	struct request **static_rqs;
+	struct list_head page_list;
+	spinlock_t lock;
+	u64 android_oem_data1;
+};
+
+struct sbq_wait_state {
+	wait_queue_head_t wait;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct blk_mq_queue_data {
+	struct request *rq;
+	bool last;
+};
+
+struct blk_mq_queue_map {
+	unsigned int *mq_map;
+	unsigned int nr_queues;
+	unsigned int queue_offset;
+};
+
+struct blk_mq_tag_set {
+	const struct blk_mq_ops *ops;
+	struct blk_mq_queue_map map[3];
+	unsigned int nr_maps;
+	unsigned int nr_hw_queues;
+	unsigned int queue_depth;
+	unsigned int reserved_tags;
+	unsigned int cmd_size;
+	int numa_node;
+	unsigned int timeout;
+	unsigned int flags;
+	void *driver_data;
+	struct blk_mq_tags **tags;
+	struct blk_mq_tags *shared_tags;
+	struct mutex tag_list_lock;
+	struct list_head tag_list;
+	struct srcu_struct *srcu;
+	u64 android_kabi_reserved1;
+};
+
+struct bh_accounting {
+	int nr;
+	int ratelimit;
+};
+
+struct postprocess_bh_ctx {
+	struct work_struct work;
+	struct buffer_head *bh;
+};
+
+struct dax_device;
+
+struct iomap_folio_ops;
+
+struct iomap {
+	u64 addr;
+	loff_t offset;
+	u64 length;
+	u16 type;
+	u16 flags;
+	struct block_device *bdev;
+	struct dax_device *dax_dev;
+	void *inline_data;
+	void *private;
+	const struct iomap_folio_ops *folio_ops;
+	u64 validity_cookie;
+	u64 android_kabi_reserved1;
+};
+
+struct iomap_iter;
+
+struct iomap_folio_ops {
+	struct folio * (*get_folio)(struct iomap_iter *, loff_t, unsigned int);
+	void (*put_folio)(struct inode *, loff_t, unsigned int, struct folio *);
+	bool (*iomap_valid)(struct inode *, const struct iomap *);
+};
+
+struct iomap_iter {
+	struct inode *inode;
+	loff_t pos;
+	u64 len;
+	s64 processed;
+	unsigned int flags;
+	struct iomap iomap;
+	struct iomap srcmap;
+	void *private;
+};
+
+typedef int get_block_t(struct inode *, sector_t, struct buffer_head *, int);
+
+struct folio_iter {
+	struct folio *folio;
+	size_t offset;
+	size_t length;
+	struct folio *_next;
+	size_t _seg_count;
+	int _i;
+};
+
+struct mpage_readpage_args {
+	struct bio *bio;
+	struct folio *folio;
+	unsigned int nr_pages;
+	bool is_readahead;
+	sector_t last_block_in_bio;
+	struct buffer_head map_bh;
+	unsigned long first_logical_block;
+	get_block_t *get_block;
+};
+
+struct mpage_data {
+	struct bio *bio;
+	sector_t last_block_in_bio;
+	get_block_t *get_block;
+};
+
+struct proc_fs_opts {
+	int flag;
+	const char *str;
+};
+
+union proc_op {
+	int (*proc_get_link)(struct dentry *, struct path *);
+	int (*proc_show)(struct seq_file *, struct pid_namespace *, struct pid *, struct task_struct *);
+	const char *lsm;
+};
+
+struct proc_inode {
+	struct pid *pid;
+	unsigned int fd;
+	union proc_op op;
+	struct proc_dir_entry *pde;
+	struct ctl_table_header *sysctl;
+	struct ctl_table *sysctl_entry;
+	struct hlist_node sibling_inodes;
+	const struct proc_ns_operations *ns_ops;
+	struct inode vfs_inode;
+};
+
+typedef int (*proc_write_t)(struct file *, char *, size_t);
+
+typedef u32 nlink_t;
+
+struct proc_dir_entry {
+	atomic_t in_use;
+	refcount_t refcnt;
+	struct list_head pde_openers;
+	spinlock_t pde_unload_lock;
+	struct completion *pde_unload_completion;
+	const struct inode_operations *proc_iops;
+	union {
+		const struct proc_ops *proc_ops;
+		const struct file_operations *proc_dir_ops;
+	};
+	const struct dentry_operations *proc_dops;
+	union {
+		const struct seq_operations *seq_ops;
+		int (*single_show)(struct seq_file *, void *);
+	};
+	proc_write_t write;
+	void *data;
+	unsigned int state_size;
+	unsigned int low_ino;
+	nlink_t nlink;
+	kuid_t uid;
+	kgid_t gid;
+	loff_t size;
+	struct proc_dir_entry *parent;
+	struct rb_root subdir;
+	struct rb_node subdir_node;
+	char *name;
+	umode_t mode;
+	u8 flags;
+	u8 namelen;
+	char inline_name[0];
+};
+
+enum {
+	DIO_LOCKING = 1,
+	DIO_SKIP_HOLES = 2,
+};
+
+typedef int dio_iodone_t(struct kiocb *, loff_t, ssize_t, void *);
+
+struct dio {
+	int flags;
+	blk_opf_t opf;
+	struct gendisk *bio_disk;
+	struct inode *inode;
+	loff_t i_size;
+	dio_iodone_t *end_io;
+	bool is_pinned;
+	void *private;
+	spinlock_t bio_lock;
+	int page_errors;
+	int is_async;
+	bool defer_completion;
+	bool should_dirty;
+	int io_error;
+	unsigned long refcount;
+	struct bio *bio_list;
+	struct task_struct *waiter;
+	struct kiocb *iocb;
+	ssize_t result;
+	union {
+		struct page *pages[64];
+		struct work_struct complete_work;
+	};
+	long: 64;
+};
+
+struct dio_submit {
+	struct bio *bio;
+	unsigned int blkbits;
+	unsigned int blkfactor;
+	unsigned int start_zero_done;
+	int pages_in_io;
+	sector_t block_in_file;
+	unsigned int blocks_available;
+	int reap_counter;
+	sector_t final_block_in_request;
+	int boundary;
+	get_block_t *get_block;
+	loff_t logical_offset_in_bio;
+	sector_t final_block_in_bio;
+	sector_t next_block_for_io;
+	struct page *cur_page;
+	unsigned int cur_page_offset;
+	unsigned int cur_page_len;
+	sector_t cur_page_block;
+	loff_t cur_page_fs_offset;
+	struct iov_iter *iter;
+	unsigned int head;
+	unsigned int tail;
+	size_t from;
+	size_t to;
+};
+
+typedef unsigned int iov_iter_extraction_t;
+
+enum fsnotify_iter_type {
+	FSNOTIFY_ITER_TYPE_INODE = 0,
+	FSNOTIFY_ITER_TYPE_VFSMOUNT = 1,
+	FSNOTIFY_ITER_TYPE_SB = 2,
+	FSNOTIFY_ITER_TYPE_PARENT = 3,
+	FSNOTIFY_ITER_TYPE_INODE2 = 4,
+	FSNOTIFY_ITER_TYPE_COUNT = 5,
+};
+
+struct fs_error_report {
+	int error;
+	struct inode *inode;
+	struct super_block *sb;
+};
+
+struct inotify_inode_mark {
+	struct fsnotify_mark fsn_mark;
+	int wd;
+};
+
+struct file_handle {
+	__u32 handle_bytes;
+	int handle_type;
+	unsigned char f_handle[0];
+};
+
+struct inotify_event_info {
+	struct fsnotify_event fse;
+	u32 mask;
+	int wd;
+	u32 sync_cookie;
+	int name_len;
+	char name[0];
+};
+
+struct inotify_event {
+	__s32 wd;
+	__u32 mask;
+	__u32 cookie;
+	__u32 len;
+	char name[0];
+};
+
+struct epitem;
+
+struct eventpoll {
+	struct mutex mtx;
+	wait_queue_head_t wq;
+	wait_queue_head_t poll_wait;
+	struct list_head rdllist;
+	rwlock_t lock;
+	struct rb_root_cached rbr;
+	struct epitem *ovflist;
+	struct wakeup_source *ws;
+	struct user_struct *user;
+	struct file *file;
+	u64 gen;
+	struct hlist_head refs;
+	refcount_t refcount;
+	unsigned int napi_id;
+};
+
+struct epoll_filefd {
+	struct file *file;
+	int fd;
+} __attribute__((packed));
+
+struct epoll_event {
+	__poll_t events;
+	__u64 data;
+} __attribute__((packed));
+
+struct eppoll_entry;
+
+struct epitem {
+	union {
+		struct rb_node rbn;
+		struct callback_head rcu;
+	};
+	struct list_head rdllink;
+	struct epitem *next;
+	struct epoll_filefd ffd;
+	bool dying;
+	struct eppoll_entry *pwqlist;
+	struct eventpoll *ep;
+	struct hlist_node fllink;
+	struct wakeup_source __attribute__((btf_type_tag("rcu"))) *ws;
+	struct epoll_event event;
+};
+
+struct eppoll_entry {
+	struct eppoll_entry *next;
+	struct epitem *base;
+	wait_queue_entry_t wait;
+	wait_queue_head_t *whead;
+};
+
+struct epitems_head {
+	struct hlist_head epitems;
+	struct epitems_head *next;
+};
+
+struct ep_pqueue {
+	poll_table pt;
+	struct epitem *epi;
+};
+
+struct signalfd_siginfo {
+	__u32 ssi_signo;
+	__s32 ssi_errno;
+	__s32 ssi_code;
+	__u32 ssi_pid;
+	__u32 ssi_uid;
+	__s32 ssi_fd;
+	__u32 ssi_tid;
+	__u32 ssi_band;
+	__u32 ssi_overrun;
+	__u32 ssi_trapno;
+	__s32 ssi_status;
+	__s32 ssi_int;
+	__u64 ssi_ptr;
+	__u64 ssi_utime;
+	__u64 ssi_stime;
+	__u64 ssi_addr;
+	__u16 ssi_addr_lsb;
+	__u16 __pad2;
+	__s32 ssi_syscall;
+	__u64 ssi_call_addr;
+	__u32 ssi_arch;
+	__u8 __pad[28];
+};
+
+struct signalfd_ctx {
+	sigset_t sigmask;
+};
+
+struct timerfd_ctx {
+	union {
+		struct hrtimer tmr;
+		struct alarm alarm;
+	} t;
+	ktime_t tintv;
+	ktime_t moffs;
+	wait_queue_head_t wqh;
+	u64 ticks;
+	int clockid;
+	unsigned short expired;
+	unsigned short settime_flags;
+	struct callback_head rcu;
+	struct list_head clist;
+	spinlock_t cancel_lock;
+	bool might_cancel;
+};
+
+struct eventfd_ctx {
+	struct kref kref;
+	wait_queue_head_t wqh;
+	__u64 count;
+	unsigned int flags;
+	int id;
+};
+
+struct userfaultfd_fork_ctx {
+	struct userfaultfd_ctx *orig;
+	struct userfaultfd_ctx *new;
+	struct list_head list;
+};
+
+struct userfaultfd_unmap_ctx {
+	struct userfaultfd_ctx *ctx;
+	unsigned long start;
+	unsigned long end;
+	struct list_head list;
+};
+
+struct uffd_msg {
+	__u8 event;
+	__u8 reserved1;
+	__u16 reserved2;
+	__u32 reserved3;
+	union {
+		struct {
+			__u64 flags;
+			__u64 address;
+			union {
+				__u32 ptid;
+			} feat;
+		} pagefault;
+		struct {
+			__u32 ufd;
+		} fork;
+		struct {
+			__u64 from;
+			__u64 to;
+			__u64 len;
+		} remap;
+		struct {
+			__u64 start;
+			__u64 end;
+		} remove;
+		struct {
+			__u64 reserved1;
+			__u64 reserved2;
+			__u64 reserved3;
+		} reserved;
+	} arg;
+};
+
+struct userfaultfd_wait_queue {
+	struct uffd_msg msg;
+	wait_queue_entry_t wq;
+	struct userfaultfd_ctx *ctx;
+	bool waken;
+};
+
+struct uffdio_range {
+	__u64 start;
+	__u64 len;
+};
+
+struct uffdio_register {
+	struct uffdio_range range;
+	__u64 mode;
+	__u64 ioctls;
+};
+
+struct uffdio_copy {
+	__u64 dst;
+	__u64 src;
+	__u64 len;
+	__u64 mode;
+	__s64 copy;
+};
+
+struct uffdio_zeropage {
+	struct uffdio_range range;
+	__u64 mode;
+	__s64 zeropage;
+};
+
+struct uffdio_move {
+	__u64 dst;
+	__u64 src;
+	__u64 len;
+	__u64 mode;
+	__s64 move;
+};
+
+struct uffdio_writeprotect {
+	struct uffdio_range range;
+	__u64 mode;
+};
+
+struct uffdio_continue {
+	struct uffdio_range range;
+	__u64 mode;
+	__s64 mapped;
+};
+
+struct uffdio_poison {
+	struct uffdio_range range;
+	__u64 mode;
+	__s64 updated;
+};
+
+struct uffdio_api {
+	__u64 api;
+	__u64 features;
+	__u64 ioctls;
+};
+
+struct userfaultfd_wake_range {
+	unsigned long start;
+	unsigned long len;
+};
+
+struct kioctx_cpu;
+
+struct ctx_rq_wait;
+
+struct kioctx {
+	struct percpu_ref users;
+	atomic_t dead;
+	struct percpu_ref reqs;
+	unsigned long user_id;
+	struct kioctx_cpu *cpu;
+	unsigned int req_batch;
+	unsigned int max_reqs;
+	unsigned int nr_events;
+	unsigned long mmap_base;
+	unsigned long mmap_size;
+	struct page **ring_pages;
+	long nr_pages;
+	struct rcu_work free_rwork;
+	struct ctx_rq_wait *rq_wait;
+	long: 64;
+	struct {
+		atomic_t reqs_available;
+		long: 64;
+		long: 64;
+		long: 64;
+		long: 64;
+		long: 64;
+		long: 64;
+		long: 64;
+	};
+	struct {
+		spinlock_t ctx_lock;
+		struct list_head active_reqs;
+		long: 64;
+		long: 64;
+		long: 64;
+		long: 64;
+		long: 64;
+	};
+	struct {
+		struct mutex ring_lock;
+		wait_queue_head_t wait;
+		long: 64;
+		long: 64;
+		long: 64;
+		long: 64;
+		long: 64;
+		long: 64;
+		long: 64;
+	};
+	struct {
+		unsigned int tail;
+		unsigned int completed_events;
+		spinlock_t completion_lock;
+		long: 64;
+		long: 64;
+		long: 64;
+		long: 64;
+		long: 64;
+		long: 64;
+	};
+	struct page *internal_pages[8];
+	struct file *aio_ring_file;
+	unsigned int id;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct kioctx_cpu {
+	unsigned int reqs_available;
+};
+
+struct ctx_rq_wait {
+	struct completion comp;
+	atomic_t count;
+};
+
+enum {
+	IOCB_CMD_PREAD = 0,
+	IOCB_CMD_PWRITE = 1,
+	IOCB_CMD_FSYNC = 2,
+	IOCB_CMD_FDSYNC = 3,
+	IOCB_CMD_POLL = 5,
+	IOCB_CMD_NOOP = 6,
+	IOCB_CMD_PREADV = 7,
+	IOCB_CMD_PWRITEV = 8,
+};
+
+struct fsync_iocb {
+	struct file *file;
+	struct work_struct work;
+	bool datasync;
+	struct cred *creds;
+};
+
+struct poll_iocb {
+	struct file *file;
+	struct wait_queue_head *head;
+	__poll_t events;
+	bool cancelled;
+	bool work_scheduled;
+	bool work_need_resched;
+	struct wait_queue_entry wait;
+	struct work_struct work;
+};
+
+typedef int kiocb_cancel_fn(struct kiocb *);
+
+struct io_event {
+	__u64 data;
+	__u64 obj;
+	__s64 res;
+	__s64 res2;
+};
+
+struct aio_kiocb {
+	union {
+		struct file *ki_filp;
+		struct kiocb rw;
+		struct fsync_iocb fsync;
+		struct poll_iocb poll;
+	};
+	struct kioctx *ki_ctx;
+	kiocb_cancel_fn *ki_cancel;
+	struct io_event ki_res;
+	struct list_head ki_list;
+	refcount_t ki_refcnt;
+	struct eventfd_ctx *ki_eventfd;
+};
+
+typedef __kernel_ulong_t aio_context_t;
+
+struct iocb {
+	__u64 aio_data;
+	__u32 aio_key;
+	__kernel_rwf_t aio_rw_flags;
+	__u16 aio_lio_opcode;
+	__s16 aio_reqprio;
+	__u32 aio_fildes;
+	__u64 aio_buf;
+	__u64 aio_nbytes;
+	__s64 aio_offset;
+	__u64 aio_reserved2;
+	__u32 aio_flags;
+	__u32 aio_resfd;
+};
+
+struct aio_poll_table {
+	struct poll_table_struct pt;
+	struct aio_kiocb *iocb;
+	bool queued;
+	int error;
+};
+
+typedef u32 compat_aio_context_t;
+
+struct __aio_sigset {
+	const sigset_t __attribute__((btf_type_tag("user"))) *sigmask;
+	size_t sigsetsize;
+};
+
+struct __compat_aio_sigset {
+	compat_uptr_t sigmask;
+	compat_size_t sigsetsize;
+};
+
+struct aio_ring {
+	unsigned int id;
+	unsigned int nr;
+	unsigned int head;
+	unsigned int tail;
+	unsigned int magic;
+	unsigned int compat_features;
+	unsigned int incompat_features;
+	unsigned int header_length;
+	struct io_event io_events[0];
+};
+
+struct blk_crypto_key;
+
+struct bio_crypt_ctx {
+	const struct blk_crypto_key *bc_key;
+	u64 bc_dun[4];
+};
+
+enum blk_crypto_mode_num {
+	BLK_ENCRYPTION_MODE_INVALID = 0,
+	BLK_ENCRYPTION_MODE_AES_256_XTS = 1,
+	BLK_ENCRYPTION_MODE_AES_128_CBC_ESSIV = 2,
+	BLK_ENCRYPTION_MODE_ADIANTUM = 3,
+	BLK_ENCRYPTION_MODE_SM4_XTS = 4,
+	BLK_ENCRYPTION_MODE_MAX = 5,
+};
+
+enum blk_crypto_key_type {
+	BLK_CRYPTO_KEY_TYPE_STANDARD = 1,
+	BLK_CRYPTO_KEY_TYPE_HW_WRAPPED = 2,
+};
+
+struct blk_crypto_config {
+	enum blk_crypto_mode_num crypto_mode;
+	unsigned int data_unit_size;
+	unsigned int dun_bytes;
+	enum blk_crypto_key_type key_type;
+};
+
+struct blk_crypto_key {
+	struct blk_crypto_config crypto_cfg;
+	unsigned int data_unit_size_bits;
+	unsigned int size;
+	u8 raw[128];
+};
+
+struct fscrypt_prepared_key {
+	struct crypto_skcipher *tfm;
+	struct blk_crypto_key *blk_key;
+};
+
+struct fscrypt_mode;
+
+struct fscrypt_master_key;
+
+struct fscrypt_direct_key;
+
+struct fscrypt_inode_info {
+	struct fscrypt_prepared_key ci_enc_key;
+	bool ci_owns_key;
+	bool ci_inlinecrypt;
+	u8 ci_data_unit_bits;
+	u8 ci_data_units_per_block_bits;
+	struct fscrypt_mode *ci_mode;
+	struct inode *ci_inode;
+	struct fscrypt_master_key *ci_master_key;
+	struct list_head ci_master_key_link;
+	struct fscrypt_direct_key *ci_direct_key;
+	siphash_key_t ci_dirhash_key;
+	bool ci_dirhash_key_initialized;
+	union fscrypt_policy ci_policy;
+	u8 ci_nonce[16];
+	u32 ci_hashed_ino;
+};
+
+struct fscrypt_mode {
+	const char *friendly_name;
+	const char *cipher_str;
+	int keysize;
+	int security_strength;
+	int ivsize;
+	int logged_cryptoapi_impl;
+	int logged_blk_crypto_native;
+	int logged_blk_crypto_fallback;
+	enum blk_crypto_mode_num blk_crypto_mode;
+};
+
+struct fscrypt_hkdf {
+	struct crypto_shash *hmac_tfm;
+};
+
+struct fscrypt_master_key_secret {
+	struct fscrypt_hkdf hkdf;
+	bool is_hw_wrapped;
+	u32 size;
+	u8 raw[128];
+};
+
+struct fscrypt_key_specifier {
+	__u32 type;
+	__u32 __reserved;
+	union {
+		__u8 __reserved[32];
+		__u8 descriptor[8];
+		__u8 identifier[16];
+	} u;
+};
+
+struct fscrypt_master_key {
+	struct hlist_node mk_node;
+	struct rw_semaphore mk_sem;
+	refcount_t mk_active_refs;
+	refcount_t mk_struct_refs;
+	struct callback_head mk_rcu_head;
+	struct fscrypt_master_key_secret mk_secret;
+	struct fscrypt_key_specifier mk_spec;
+	struct key *mk_users;
+	struct list_head mk_decrypted_inodes;
+	spinlock_t mk_decrypted_inodes_lock;
+	struct fscrypt_prepared_key mk_direct_keys[11];
+	struct fscrypt_prepared_key mk_iv_ino_lblk_64_keys[11];
+	struct fscrypt_prepared_key mk_iv_ino_lblk_32_keys[11];
+	siphash_key_t mk_ino_hash_key;
+	bool mk_ino_hash_key_initialized;
+	bool mk_present;
+};
+
+struct crypto_wait {
+	struct completion completion;
+	int err;
+};
+
+union fscrypt_iv {
+	struct {
+		__le64 index;
+		u8 nonce[16];
+	};
+	u8 raw[32];
+	__le64 dun[4];
+};
+
+typedef enum {
+	FS_DECRYPT = 0,
+	FS_ENCRYPT = 1,
+} fscrypt_direction_t;
+
+struct fscrypt_str {
+	unsigned char *name;
+	u32 len;
+};
+
+struct fscrypt_nokey_name {
+	u32 dirhash[2];
+	u8 bytes[149];
+	u8 sha256[32];
+};
+
+struct fscrypt_name {
+	const struct qstr *usr_fname;
+	struct fscrypt_str disk_name;
+	u32 hash;
+	u32 minor_hash;
+	struct fscrypt_str crypto_buf;
+	bool is_nokey_name;
+};
+
+struct fscrypt_symlink_data {
+	__le16 len;
+	char encrypted_path[0];
+};
+
+struct fscrypt_keyring {
+	spinlock_t lock;
+	struct hlist_head key_hashtable[128];
+};
+
+enum key_state {
+	KEY_IS_UNINSTANTIATED = 0,
+	KEY_IS_POSITIVE = 1,
+};
+
+struct fscrypt_add_key_arg {
+	struct fscrypt_key_specifier key_spec;
+	__u32 raw_size;
+	__u32 key_id;
+	__u32 __reserved[7];
+	__u32 __flags;
+	__u8 raw[0];
+};
+
+struct fscrypt_provisioning_key_payload {
+	__u32 type;
+	__u32 __reserved;
+	__u8 raw[0];
+};
+
+struct fscrypt_remove_key_arg {
+	struct fscrypt_key_specifier key_spec;
+	__u32 removal_status_flags;
+	__u32 __reserved[5];
+};
+
+struct fscrypt_get_key_status_arg {
+	struct fscrypt_key_specifier key_spec;
+	__u32 __reserved[6];
+	__u32 status;
+	__u32 status_flags;
+	__u32 user_count;
+	__u32 __out_reserved[13];
+};
+
+struct fscrypt_context_v1 {
+	u8 version;
+	u8 contents_encryption_mode;
+	u8 filenames_encryption_mode;
+	u8 flags;
+	u8 master_key_descriptor[8];
+	u8 nonce[16];
+};
+
+struct fscrypt_context_v2 {
+	u8 version;
+	u8 contents_encryption_mode;
+	u8 filenames_encryption_mode;
+	u8 flags;
+	u8 log2_data_unit_size;
+	u8 __reserved[3];
+	u8 master_key_identifier[16];
+	u8 nonce[16];
+};
+
+union fscrypt_context {
+	u8 version;
+	struct fscrypt_context_v1 v1;
+	struct fscrypt_context_v2 v2;
+};
+
+struct fscrypt_direct_key {
+	struct super_block *dk_sb;
+	struct hlist_node dk_node;
+	refcount_t dk_refcount;
+	const struct fscrypt_mode *dk_mode;
+	struct fscrypt_prepared_key dk_key;
+	u8 dk_descriptor[8];
+	u8 dk_raw[64];
+};
+
+struct fscrypt_key {
+	__u32 mode;
+	__u8 raw[64];
+	__u32 size;
+};
+
+struct user_key_payload {
+	struct callback_head rcu;
+	unsigned short datalen;
+	long: 0;
+	char data[0];
+};
+
+struct fscrypt_get_policy_ex_arg {
+	__u64 policy_size;
+	union {
+		__u8 version;
+		struct fscrypt_policy_v1 v1;
+		struct fscrypt_policy_v2 v2;
+	} policy;
+};
+
+struct fscrypt_dummy_policy {
+	const union fscrypt_policy *policy;
+};
+
+enum hash_algo {
+	HASH_ALGO_MD4 = 0,
+	HASH_ALGO_MD5 = 1,
+	HASH_ALGO_SHA1 = 2,
+	HASH_ALGO_RIPE_MD_160 = 3,
+	HASH_ALGO_SHA256 = 4,
+	HASH_ALGO_SHA384 = 5,
+	HASH_ALGO_SHA512 = 6,
+	HASH_ALGO_SHA224 = 7,
+	HASH_ALGO_RIPE_MD_128 = 8,
+	HASH_ALGO_RIPE_MD_256 = 9,
+	HASH_ALGO_RIPE_MD_320 = 10,
+	HASH_ALGO_WP_256 = 11,
+	HASH_ALGO_WP_384 = 12,
+	HASH_ALGO_WP_512 = 13,
+	HASH_ALGO_TGR_128 = 14,
+	HASH_ALGO_TGR_160 = 15,
+	HASH_ALGO_TGR_192 = 16,
+	HASH_ALGO_SM3_256 = 17,
+	HASH_ALGO_STREEBOG_256 = 18,
+	HASH_ALGO_STREEBOG_512 = 19,
+	HASH_ALGO__LAST = 20,
+};
+
+struct fsverity_hash_alg;
+
+struct merkle_tree_params {
+	const struct fsverity_hash_alg *hash_alg;
+	const u8 *hashstate;
+	unsigned int digest_size;
+	unsigned int block_size;
+	unsigned int hashes_per_block;
+	unsigned int blocks_per_page;
+	u8 log_digestsize;
+	u8 log_blocksize;
+	u8 log_arity;
+	u8 log_blocks_per_page;
+	unsigned int num_levels;
+	u64 tree_size;
+	unsigned long tree_pages;
+	unsigned long level_start[8];
+};
+
+struct fsverity_info {
+	struct merkle_tree_params tree_params;
+	u8 root_hash[64];
+	u8 file_digest[64];
+	const struct inode *inode;
+	unsigned long *hash_block_verified;
+};
+
+struct fsverity_hash_alg {
+	struct crypto_shash *tfm;
+	const char *name;
+	unsigned int digest_size;
+	unsigned int block_size;
+	enum hash_algo algo_id;
+	int mb_max_msgs;
+};
+
+struct block_buffer {
+	u32 filled;
+	bool is_root_hash;
+	u8 *data;
+};
+
+struct fsverity_descriptor {
+	__u8 version;
+	__u8 hash_algorithm;
+	__u8 log_blocksize;
+	__u8 salt_size;
+	__le32 sig_size;
+	__le64 data_size;
+	__u8 root_hash[64];
+	__u8 salt[32];
+	__u8 __reserved[144];
+	__u8 signature[0];
+};
+
+struct fsverity_enable_arg {
+	__u32 version;
+	__u32 hash_algorithm;
+	__u32 block_size;
+	__u32 salt_size;
+	__u64 salt_ptr;
+	__u32 sig_size;
+	__u32 __reserved1;
+	__u64 sig_ptr;
+	__u64 __reserved2[11];
+};
+
+struct fsverity_digest {
+	__u16 digest_algorithm;
+	__u16 digest_size;
+	__u8 digest[0];
+};
+
+struct fsverity_read_metadata_arg {
+	__u64 metadata_type;
+	__u64 offset;
+	__u64 length;
+	__u64 buf_ptr;
+	__u64 __reserved;
+};
+
+struct fsverity_pending_block {
+	const void *data;
+	u64 pos;
+	u8 real_hash[64];
+};
+
+struct fsverity_verification_context {
+	struct inode *inode;
+	struct fsverity_info *vi;
+	unsigned long max_ra_pages;
+	int num_pending;
+	struct fsverity_pending_block pending_blocks[2];
+};
+
+typedef void (*btf_trace_locks_get_lock_context)(void *, struct inode *, int, struct file_lock_context *);
+
+typedef void (*btf_trace_posix_lock_inode)(void *, struct inode *, struct file_lock *, int);
+
+typedef void (*btf_trace_fcntl_setlk)(void *, struct inode *, struct file_lock *, int);
+
+typedef void (*btf_trace_locks_remove_posix)(void *, struct inode *, struct file_lock *, int);
+
+typedef void (*btf_trace_flock_lock_inode)(void *, struct inode *, struct file_lock *, int);
+
+typedef void (*btf_trace_break_lease_noblock)(void *, struct inode *, struct file_lock *);
+
+typedef void (*btf_trace_break_lease_block)(void *, struct inode *, struct file_lock *);
+
+typedef void (*btf_trace_break_lease_unblock)(void *, struct inode *, struct file_lock *);
+
+typedef void (*btf_trace_generic_delete_lease)(void *, struct inode *, struct file_lock *);
+
+typedef void (*btf_trace_time_out_leases)(void *, struct inode *, struct file_lock *);
+
+typedef void (*btf_trace_generic_add_lease)(void *, struct inode *, struct file_lock *);
+
+typedef void (*btf_trace_leases_conflict)(void *, bool, struct file_lock *, struct file_lock *);
+
+struct file_lock_list_struct {
+	spinlock_t lock;
+	struct hlist_head hlist;
+};
+
+struct trace_event_raw_locks_get_lock_context {
+	struct trace_entry ent;
+	unsigned long i_ino;
+	dev_t s_dev;
+	unsigned char type;
+	struct file_lock_context *ctx;
+	char __data[0];
+};
+
+struct trace_event_raw_filelock_lock {
+	struct trace_entry ent;
+	struct file_lock *fl;
+	unsigned long i_ino;
+	dev_t s_dev;
+	struct file_lock *fl_blocker;
+	fl_owner_t fl_owner;
+	unsigned int fl_pid;
+	unsigned int fl_flags;
+	unsigned char fl_type;
+	loff_t fl_start;
+	loff_t fl_end;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_filelock_lease {
+	struct trace_entry ent;
+	struct file_lock *fl;
+	unsigned long i_ino;
+	dev_t s_dev;
+	struct file_lock *fl_blocker;
+	fl_owner_t fl_owner;
+	unsigned int fl_flags;
+	unsigned char fl_type;
+	unsigned long fl_break_time;
+	unsigned long fl_downgrade_time;
+	char __data[0];
+};
+
+struct trace_event_raw_generic_add_lease {
+	struct trace_entry ent;
+	unsigned long i_ino;
+	int wcount;
+	int rcount;
+	int icount;
+	dev_t s_dev;
+	fl_owner_t fl_owner;
+	unsigned int fl_flags;
+	unsigned char fl_type;
+	char __data[0];
+};
+
+struct trace_event_raw_leases_conflict {
+	struct trace_entry ent;
+	void *lease;
+	void *breaker;
+	unsigned int l_fl_flags;
+	unsigned int b_fl_flags;
+	unsigned char l_fl_type;
+	unsigned char b_fl_type;
+	bool conflict;
+	char __data[0];
+};
+
+struct flock64 {
+	short l_type;
+	short l_whence;
+	__kernel_loff_t l_start;
+	__kernel_loff_t l_len;
+	__kernel_pid_t l_pid;
+};
+
+struct trace_event_data_offsets_locks_get_lock_context {};
+
+struct trace_event_data_offsets_filelock_lock {};
+
+struct trace_event_data_offsets_filelock_lease {};
+
+struct trace_event_data_offsets_generic_add_lease {};
+
+struct trace_event_data_offsets_leases_conflict {};
+
+struct locks_iterator {
+	int li_cpu;
+	loff_t li_pos;
+};
+
+enum {
+	Enabled = 0,
+	Magic = 1,
+};
+
+typedef struct {
+	struct list_head list;
+	unsigned long flags;
+	int offset;
+	int size;
+	char *magic;
+	char *mask;
+	const char *interpreter;
+	char *name;
+	struct dentry *dentry;
+	struct file *interp_file;
+} Node;
+
+struct elf64_phdr {
+	Elf64_Word p_type;
+	Elf64_Word p_flags;
+	Elf64_Off p_offset;
+	Elf64_Addr p_vaddr;
+	Elf64_Addr p_paddr;
+	Elf64_Xword p_filesz;
+	Elf64_Xword p_memsz;
+	Elf64_Xword p_align;
+};
+
+struct memelfnote {
+	const char *name;
+	int type;
+	unsigned int datasz;
+	void *data;
+};
+
+struct elf_thread_core_info;
+
+struct elf_note_info {
+	struct elf_thread_core_info *thread;
+	struct memelfnote psinfo;
+	struct memelfnote signote;
+	struct memelfnote auxv;
+	struct memelfnote files;
+	siginfo_t csigdata;
+	size_t size;
+	int thread_notes;
+};
+
+struct elf_siginfo {
+	int si_signo;
+	int si_code;
+	int si_errno;
+};
+
+struct elf_prstatus_common {
+	struct elf_siginfo pr_info;
+	short pr_cursig;
+	unsigned long pr_sigpend;
+	unsigned long pr_sighold;
+	pid_t pr_pid;
+	pid_t pr_ppid;
+	pid_t pr_pgrp;
+	pid_t pr_sid;
+	struct __kernel_old_timeval pr_utime;
+	struct __kernel_old_timeval pr_stime;
+	struct __kernel_old_timeval pr_cutime;
+	struct __kernel_old_timeval pr_cstime;
+};
+
+typedef unsigned long elf_greg_t;
+
+typedef elf_greg_t elf_gregset_t[27];
+
+struct elf_prstatus {
+	struct elf_prstatus_common common;
+	elf_gregset_t pr_reg;
+	int pr_fpvalid;
+};
+
+struct elf_thread_core_info {
+	struct elf_thread_core_info *next;
+	struct task_struct *task;
+	struct elf_prstatus prstatus;
+	struct memelfnote notes[0];
+};
+
+typedef unsigned int __kernel_uid_t;
+
+typedef unsigned int __kernel_gid_t;
+
+struct elf_prpsinfo {
+	char pr_state;
+	char pr_sname;
+	char pr_zomb;
+	char pr_nice;
+	unsigned long pr_flag;
+	__kernel_uid_t pr_uid;
+	__kernel_gid_t pr_gid;
+	pid_t pr_pid;
+	pid_t pr_ppid;
+	pid_t pr_pgrp;
+	pid_t pr_sid;
+	char pr_fname[16];
+	char pr_psargs[80];
+};
+
+struct arch_elf_state {};
+
+struct elf64_note {
+	Elf64_Word n_namesz;
+	Elf64_Word n_descsz;
+	Elf64_Word n_type;
+};
+
+typedef __u16 Elf32_Half;
+
+typedef __u32 Elf32_Addr;
+
+typedef __u32 Elf32_Off;
+
+struct elf32_hdr {
+	unsigned char e_ident[16];
+	Elf32_Half e_type;
+	Elf32_Half e_machine;
+	Elf32_Word e_version;
+	Elf32_Addr e_entry;
+	Elf32_Off e_phoff;
+	Elf32_Off e_shoff;
+	Elf32_Word e_flags;
+	Elf32_Half e_ehsize;
+	Elf32_Half e_phentsize;
+	Elf32_Half e_phnum;
+	Elf32_Half e_shentsize;
+	Elf32_Half e_shnum;
+	Elf32_Half e_shstrndx;
+};
+
+struct compat_elf_siginfo {
+	compat_int_t si_signo;
+	compat_int_t si_code;
+	compat_int_t si_errno;
+};
+
+struct compat_elf_prstatus_common {
+	struct compat_elf_siginfo pr_info;
+	short pr_cursig;
+	compat_ulong_t pr_sigpend;
+	compat_ulong_t pr_sighold;
+	compat_pid_t pr_pid;
+	compat_pid_t pr_ppid;
+	compat_pid_t pr_pgrp;
+	compat_pid_t pr_sid;
+	struct old_timeval32 pr_utime;
+	struct old_timeval32 pr_stime;
+	struct old_timeval32 pr_cutime;
+	struct old_timeval32 pr_cstime;
+};
+
+struct user_regs_struct32 {
+	__u32 ebx;
+	__u32 ecx;
+	__u32 edx;
+	__u32 esi;
+	__u32 edi;
+	__u32 ebp;
+	__u32 eax;
+	unsigned short ds;
+	unsigned short __ds;
+	unsigned short es;
+	unsigned short __es;
+	unsigned short fs;
+	unsigned short __fs;
+	unsigned short gs;
+	unsigned short __gs;
+	__u32 orig_eax;
+	__u32 eip;
+	unsigned short cs;
+	unsigned short __cs;
+	__u32 eflags;
+	__u32 esp;
+	unsigned short ss;
+	unsigned short __ss;
+};
+
+struct i386_elf_prstatus {
+	struct compat_elf_prstatus_common common;
+	struct user_regs_struct32 pr_reg;
+	compat_int_t pr_fpvalid;
+};
+
+struct elf32_phdr {
+	Elf32_Word p_type;
+	Elf32_Off p_offset;
+	Elf32_Addr p_vaddr;
+	Elf32_Addr p_paddr;
+	Elf32_Word p_filesz;
+	Elf32_Word p_memsz;
+	Elf32_Word p_flags;
+	Elf32_Word p_align;
+};
+
+struct elf_thread_core_info___2;
+
+struct elf_note_info___2 {
+	struct elf_thread_core_info___2 *thread;
+	struct memelfnote psinfo;
+	struct memelfnote signote;
+	struct memelfnote auxv;
+	struct memelfnote files;
+	compat_siginfo_t csigdata;
+	size_t size;
+	int thread_notes;
+};
+
+struct user_regs_struct {
+	unsigned long r15;
+	unsigned long r14;
+	unsigned long r13;
+	unsigned long r12;
+	unsigned long bp;
+	unsigned long bx;
+	unsigned long r11;
+	unsigned long r10;
+	unsigned long r9;
+	unsigned long r8;
+	unsigned long ax;
+	unsigned long cx;
+	unsigned long dx;
+	unsigned long si;
+	unsigned long di;
+	unsigned long orig_ax;
+	unsigned long ip;
+	unsigned long cs;
+	unsigned long flags;
+	unsigned long sp;
+	unsigned long ss;
+	unsigned long fs_base;
+	unsigned long gs_base;
+	unsigned long ds;
+	unsigned long es;
+	unsigned long fs;
+	unsigned long gs;
+};
+
+typedef struct user_regs_struct compat_elf_gregset_t;
+
+struct compat_elf_prstatus {
+	struct compat_elf_prstatus_common common;
+	compat_elf_gregset_t pr_reg;
+	compat_int_t pr_fpvalid;
+};
+
+struct elf_thread_core_info___2 {
+	struct elf_thread_core_info___2 *next;
+	struct task_struct *task;
+	struct compat_elf_prstatus prstatus;
+	struct memelfnote notes[0];
+};
+
+struct compat_elf_prpsinfo {
+	char pr_state;
+	char pr_sname;
+	char pr_zomb;
+	char pr_nice;
+	compat_ulong_t pr_flag;
+	__compat_uid_t pr_uid;
+	__compat_gid_t pr_gid;
+	compat_pid_t pr_pid;
+	compat_pid_t pr_ppid;
+	compat_pid_t pr_pgrp;
+	compat_pid_t pr_sid;
+	char pr_fname[16];
+	char pr_psargs[80];
+};
+
+struct elf32_shdr {
+	Elf32_Word sh_name;
+	Elf32_Word sh_type;
+	Elf32_Word sh_flags;
+	Elf32_Addr sh_addr;
+	Elf32_Off sh_offset;
+	Elf32_Word sh_size;
+	Elf32_Word sh_link;
+	Elf32_Word sh_info;
+	Elf32_Word sh_addralign;
+	Elf32_Word sh_entsize;
+};
+
+enum {
+	MBE_REFERENCED_B = 0,
+	MBE_REUSABLE_B = 1,
+};
+
+struct mb_cache_entry {
+	struct list_head e_list;
+	struct hlist_bl_node e_hash_list;
+	atomic_t e_refcnt;
+	u32 e_key;
+	unsigned long e_flags;
+	u64 e_value;
+};
+
+struct mb_cache {
+	struct hlist_bl_head *c_hash;
+	int c_bucket_bits;
+	unsigned long c_max_entries;
+	spinlock_t c_list_lock;
+	struct list_head c_list;
+	unsigned long c_entry_count;
+	struct shrinker c_shrink;
+	struct work_struct c_shrink_work;
+};
+
+struct posix_acl_xattr_header {
+	__le32 a_version;
+};
+
+struct posix_acl_xattr_entry {
+	__le16 e_tag;
+	__le16 e_perm;
+	__le32 e_id;
+};
+
+struct core_name {
+	char *corename;
+	int used;
+	int size;
+};
+
+typedef void (*btf_trace_iomap_readpage)(void *, struct inode *, int);
+
+typedef void (*btf_trace_iomap_readahead)(void *, struct inode *, int);
+
+typedef void (*btf_trace_iomap_writepage)(void *, struct inode *, loff_t, u64);
+
+typedef void (*btf_trace_iomap_release_folio)(void *, struct inode *, loff_t, u64);
+
+typedef void (*btf_trace_iomap_invalidate_folio)(void *, struct inode *, loff_t, u64);
+
+typedef void (*btf_trace_iomap_dio_invalidate_fail)(void *, struct inode *, loff_t, u64);
+
+typedef void (*btf_trace_iomap_dio_rw_queued)(void *, struct inode *, loff_t, u64);
+
+typedef void (*btf_trace_iomap_iter_dstmap)(void *, struct inode *, struct iomap *);
+
+typedef void (*btf_trace_iomap_iter_srcmap)(void *, struct inode *, struct iomap *);
+
+typedef void (*btf_trace_iomap_writepage_map)(void *, struct inode *, struct iomap *);
+
+typedef void (*btf_trace_iomap_iter)(void *, struct iomap_iter *, const void *, unsigned long);
+
+typedef void (*btf_trace_iomap_dio_rw_begin)(void *, struct kiocb *, struct iov_iter *, unsigned int, size_t);
+
+typedef void (*btf_trace_iomap_dio_complete)(void *, struct kiocb *, int, ssize_t);
+
+struct trace_event_raw_iomap_readpage_class {
+	struct trace_entry ent;
+	dev_t dev;
+	u64 ino;
+	int nr_pages;
+	char __data[0];
+};
+
+struct trace_event_raw_iomap_range_class {
+	struct trace_entry ent;
+	dev_t dev;
+	u64 ino;
+	loff_t size;
+	loff_t offset;
+	u64 length;
+	char __data[0];
+};
+
+struct trace_event_raw_iomap_class {
+	struct trace_entry ent;
+	dev_t dev;
+	u64 ino;
+	u64 addr;
+	loff_t offset;
+	u64 length;
+	u16 type;
+	u16 flags;
+	dev_t bdev;
+	char __data[0];
+};
+
+struct trace_event_raw_iomap_iter {
+	struct trace_entry ent;
+	dev_t dev;
+	u64 ino;
+	loff_t pos;
+	u64 length;
+	unsigned int flags;
+	const void *ops;
+	unsigned long caller;
+	char __data[0];
+};
+
+struct trace_event_raw_iomap_dio_rw_begin {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	loff_t isize;
+	loff_t pos;
+	size_t count;
+	size_t done_before;
+	int ki_flags;
+	unsigned int dio_flags;
+	bool aio;
+	char __data[0];
+};
+
+struct trace_event_raw_iomap_dio_complete {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	loff_t isize;
+	loff_t pos;
+	int ki_flags;
+	bool aio;
+	int error;
+	ssize_t ret;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_iomap_readpage_class {};
+
+struct trace_event_data_offsets_iomap_range_class {};
+
+struct trace_event_data_offsets_iomap_class {};
+
+struct trace_event_data_offsets_iomap_iter {};
+
+struct trace_event_data_offsets_iomap_dio_rw_begin {};
+
+struct trace_event_data_offsets_iomap_dio_complete {};
+
+enum {
+	BIOSET_NEED_BVECS = 1,
+	BIOSET_NEED_RESCUER = 2,
+	BIOSET_PERCPU_CACHE = 4,
+};
+
+struct iomap_ioend {
+	struct list_head io_list;
+	u16 io_type;
+	u16 io_flags;
+	u32 io_folios;
+	struct inode *io_inode;
+	size_t io_size;
+	loff_t io_offset;
+	sector_t io_sector;
+	struct bio *io_bio;
+	struct bio io_inline_bio;
+};
+
+struct iomap_readpage_ctx {
+	struct folio *cur_folio;
+	bool cur_folio_in_bio;
+	struct bio *bio;
+	struct readahead_control *rac;
+};
+
+struct iomap_folio_state {
+	atomic_t read_bytes_pending;
+	atomic_t write_bytes_pending;
+	spinlock_t state_lock;
+	unsigned long state[0];
+};
+
+typedef int (*iomap_punch_t)(struct inode *, loff_t, loff_t);
+
+typedef int (*list_cmp_func_t)(void *, const struct list_head *, const struct list_head *);
+
+struct iomap_writeback_ops;
+
+struct iomap_writepage_ctx {
+	struct iomap iomap;
+	struct iomap_ioend *ioend;
+	const struct iomap_writeback_ops *ops;
+};
+
+struct iomap_writeback_ops {
+	int (*map_blocks)(struct iomap_writepage_ctx *, struct inode *, loff_t);
+	int (*prepare_ioend)(struct iomap_ioend *, int);
+	void (*discard_folio)(struct folio *, loff_t);
+};
+
+struct iomap_dio_ops;
+
+struct iomap_dio {
+	struct kiocb *iocb;
+	const struct iomap_dio_ops *dops;
+	loff_t i_size;
+	loff_t size;
+	atomic_t ref;
+	unsigned int flags;
+	int error;
+	size_t done_before;
+	bool wait_for_completion;
+	union {
+		struct {
+			struct iov_iter *iter;
+			struct task_struct *waiter;
+		} submit;
+		struct {
+			struct work_struct work;
+		} aio;
+	};
+};
+
+struct iomap_dio_ops {
+	int (*end_io)(struct kiocb *, ssize_t, int, unsigned int);
+	void (*submit_io)(const struct iomap_iter *, struct bio *, loff_t);
+	struct bio_set *bio_set;
+};
+
+struct iomap_swapfile_info {
+	struct iomap iomap;
+	struct swap_info_struct *sis;
+	uint64_t lowest_ppage;
+	uint64_t highest_ppage;
+	unsigned long nr_pages;
+	int nr_extents;
+	struct file *file;
+};
+
+struct dqstats {
+	unsigned long stat[8];
+	struct percpu_counter counter[8];
+};
+
+struct quota_module_name {
+	int qm_fmt_id;
+	char *qm_mod_name;
+};
+
+enum {
+	DQF_INFO_DIRTY_B = 17,
+};
+
+enum {
+	DQST_LOOKUPS = 0,
+	DQST_DROPS = 1,
+	DQST_READS = 2,
+	DQST_WRITES = 3,
+	DQST_CACHE_HITS = 4,
+	DQST_ALLOC_DQUOTS = 5,
+	DQST_FREE_DQUOTS = 6,
+	DQST_SYNCS = 7,
+	_DQST_DQSTAT_LAST = 8,
+};
+
+enum {
+	DQF_ROOT_SQUASH_B = 0,
+	DQF_SYS_FILE_B = 16,
+	DQF_PRIVATE = 17,
+};
+
+enum {
+	QIF_BLIMITS_B = 0,
+	QIF_SPACE_B = 1,
+	QIF_ILIMITS_B = 2,
+	QIF_INODES_B = 3,
+	QIF_BTIME_B = 4,
+	QIF_ITIME_B = 5,
+};
+
+typedef __kernel_uid32_t qid_t;
+
+struct dquot_warn {
+	struct super_block *w_sb;
+	struct kqid w_dq_id;
+	short w_type;
+};
+
+struct qtree_fmt_operations {
+	void (*mem2disk_dqblk)(void *, struct dquot *);
+	void (*disk2mem_dqblk)(struct dquot *, void *);
+	int (*is_id)(void *, struct dquot *);
+};
+
+struct v2_disk_dqheader {
+	__le32 dqh_magic;
+	__le32 dqh_version;
+};
+
+struct qtree_mem_dqinfo {
+	struct super_block *dqi_sb;
+	int dqi_type;
+	unsigned int dqi_blocks;
+	unsigned int dqi_free_blk;
+	unsigned int dqi_free_entry;
+	unsigned int dqi_blocksize_bits;
+	unsigned int dqi_entry_size;
+	unsigned int dqi_usable_bs;
+	unsigned int dqi_qtree_depth;
+	const struct qtree_fmt_operations *dqi_ops;
+};
+
+struct v2_disk_dqinfo {
+	__le32 dqi_bgrace;
+	__le32 dqi_igrace;
+	__le32 dqi_flags;
+	__le32 dqi_blocks;
+	__le32 dqi_free_blk;
+	__le32 dqi_free_entry;
+};
+
+struct v2r0_disk_dqblk {
+	__le32 dqb_id;
+	__le32 dqb_ihardlimit;
+	__le32 dqb_isoftlimit;
+	__le32 dqb_curinodes;
+	__le32 dqb_bhardlimit;
+	__le32 dqb_bsoftlimit;
+	__le64 dqb_curspace;
+	__le64 dqb_btime;
+	__le64 dqb_itime;
+};
+
+struct v2r1_disk_dqblk {
+	__le32 dqb_id;
+	__le32 dqb_pad;
+	__le64 dqb_ihardlimit;
+	__le64 dqb_isoftlimit;
+	__le64 dqb_curinodes;
+	__le64 dqb_bhardlimit;
+	__le64 dqb_bsoftlimit;
+	__le64 dqb_curspace;
+	__le64 dqb_btime;
+	__le64 dqb_itime;
+};
+
+struct qt_disk_dqdbheader {
+	__le32 dqdh_next_free;
+	__le32 dqdh_prev_free;
+	__le16 dqdh_entries;
+	__le16 dqdh_pad1;
+	__le32 dqdh_pad2;
+};
+
+struct if_dqblk {
+	__u64 dqb_bhardlimit;
+	__u64 dqb_bsoftlimit;
+	__u64 dqb_curspace;
+	__u64 dqb_ihardlimit;
+	__u64 dqb_isoftlimit;
+	__u64 dqb_curinodes;
+	__u64 dqb_btime;
+	__u64 dqb_itime;
+	__u32 dqb_valid;
+};
+
+struct fs_qfilestat {
+	__u64 qfs_ino;
+	__u64 qfs_nblks;
+	__u32 qfs_nextents;
+};
+
+typedef struct fs_qfilestat fs_qfilestat_t;
+
+struct fs_quota_stat {
+	__s8 qs_version;
+	__u16 qs_flags;
+	__s8 qs_pad;
+	fs_qfilestat_t qs_uquota;
+	fs_qfilestat_t qs_gquota;
+	__u32 qs_incoredqs;
+	__s32 qs_btimelimit;
+	__s32 qs_itimelimit;
+	__s32 qs_rtbtimelimit;
+	__u16 qs_bwarnlimit;
+	__u16 qs_iwarnlimit;
+};
+
+typedef u64 compat_u64;
+
+struct compat_fs_qfilestat {
+	compat_u64 dqb_bhardlimit;
+	compat_u64 qfs_nblks;
+	compat_uint_t qfs_nextents;
+} __attribute__((packed));
+
+struct compat_fs_quota_stat {
+	__s8 qs_version;
+	__u16 qs_flags;
+	__s8 qs_pad;
+	long: 0;
+	struct compat_fs_qfilestat qs_uquota;
+	struct compat_fs_qfilestat qs_gquota;
+	compat_uint_t qs_incoredqs;
+	compat_int_t qs_btimelimit;
+	compat_int_t qs_itimelimit;
+	compat_int_t qs_rtbtimelimit;
+	__u16 qs_bwarnlimit;
+	__u16 qs_iwarnlimit;
+};
+
+struct fs_qfilestatv {
+	__u64 qfs_ino;
+	__u64 qfs_nblks;
+	__u32 qfs_nextents;
+	__u32 qfs_pad;
+};
+
+struct fs_quota_statv {
+	__s8 qs_version;
+	__u8 qs_pad1;
+	__u16 qs_flags;
+	__u32 qs_incoredqs;
+	struct fs_qfilestatv qs_uquota;
+	struct fs_qfilestatv qs_gquota;
+	struct fs_qfilestatv qs_pquota;
+	__s32 qs_btimelimit;
+	__s32 qs_itimelimit;
+	__s32 qs_rtbtimelimit;
+	__u16 qs_bwarnlimit;
+	__u16 qs_iwarnlimit;
+	__u16 qs_rtbwarnlimit;
+	__u16 qs_pad3;
+	__u32 qs_pad4;
+	__u64 qs_pad2[7];
+};
+
+struct fs_disk_quota {
+	__s8 d_version;
+	__s8 d_flags;
+	__u16 d_fieldmask;
+	__u32 d_id;
+	__u64 d_blk_hardlimit;
+	__u64 d_blk_softlimit;
+	__u64 d_ino_hardlimit;
+	__u64 d_ino_softlimit;
+	__u64 d_bcount;
+	__u64 d_icount;
+	__s32 d_itimer;
+	__s32 d_btimer;
+	__u16 d_iwarns;
+	__u16 d_bwarns;
+	__s8 d_itimer_hi;
+	__s8 d_btimer_hi;
+	__s8 d_rtbtimer_hi;
+	__s8 d_padding2;
+	__u64 d_rtb_hardlimit;
+	__u64 d_rtb_softlimit;
+	__u64 d_rtbcount;
+	__s32 d_rtbtimer;
+	__u16 d_rtbwarns;
+	__s16 d_padding3;
+	char d_padding4[8];
+};
+
+struct if_dqinfo {
+	__u64 dqi_bgrace;
+	__u64 dqi_igrace;
+	__u32 dqi_flags;
+	__u32 dqi_valid;
+};
+
+struct compat_if_dqblk {
+	compat_u64 dqb_bhardlimit;
+	compat_u64 dqb_bsoftlimit;
+	compat_u64 dqb_curspace;
+	compat_u64 dqb_ihardlimit;
+	compat_u64 dqb_isoftlimit;
+	compat_u64 dqb_curinodes;
+	compat_u64 dqb_btime;
+	compat_u64 dqb_itime;
+	compat_uint_t dqb_valid;
+} __attribute__((packed));
+
+struct if_nextdqblk {
+	__u64 dqb_bhardlimit;
+	__u64 dqb_bsoftlimit;
+	__u64 dqb_curspace;
+	__u64 dqb_ihardlimit;
+	__u64 dqb_isoftlimit;
+	__u64 dqb_curinodes;
+	__u64 dqb_btime;
+	__u64 dqb_itime;
+	__u32 dqb_valid;
+	__u32 dqb_id;
+};
+
+enum clear_refs_types {
+	CLEAR_REFS_ALL = 1,
+	CLEAR_REFS_ANON = 2,
+	CLEAR_REFS_MAPPED = 3,
+	CLEAR_REFS_SOFT_DIRTY = 4,
+	CLEAR_REFS_MM_HIWATER_RSS = 5,
+	CLEAR_REFS_LAST = 6,
+};
+
+struct proc_maps_private {
+	struct inode *inode;
+	struct task_struct *task;
+	struct mm_struct *mm;
+	struct vma_iterator iter;
+};
+
+struct mem_size_stats {
+	unsigned long resident;
+	unsigned long shared_clean;
+	unsigned long shared_dirty;
+	unsigned long private_clean;
+	unsigned long private_dirty;
+	unsigned long referenced;
+	unsigned long anonymous;
+	unsigned long lazyfree;
+	unsigned long anonymous_thp;
+	unsigned long shmem_thp;
+	unsigned long file_thp;
+	unsigned long swap;
+	unsigned long swap_shared;
+	unsigned long writeback;
+	unsigned long same;
+	unsigned long huge;
+	unsigned long shared_hugetlb;
+	unsigned long private_hugetlb;
+	unsigned long ksm;
+	u64 pss;
+	u64 pss_anon;
+	u64 pss_file;
+	u64 pss_shmem;
+	u64 pss_dirty;
+	u64 pss_locked;
+	u64 swap_pss;
+};
+
+typedef struct {
+	u64 pme;
+} pagemap_entry_t;
+
+struct pagemapread {
+	int pos;
+	int len;
+	pagemap_entry_t *buffer;
+	bool show_pfn;
+};
+
+struct clear_refs_private {
+	enum clear_refs_types type;
+};
+
+enum {
+	BIAS = 2147483648,
+};
+
+enum {
+	PROC_ENTRY_PERMANENT = 1,
+};
+
+struct pde_opener {
+	struct list_head lh;
+	struct file *file;
+	bool closing;
+	struct completion *c;
+};
+
+enum proc_param {
+	Opt_gid___2 = 0,
+	Opt_hidepid = 1,
+	Opt_subset = 2,
+};
+
+struct proc_fs_context {
+	struct pid_namespace *pid_ns;
+	unsigned int mask;
+	enum proc_hidepid hidepid;
+	int gid;
+	enum proc_pidonly pidonly;
+};
+
+struct pid_entry {
+	const char *name;
+	unsigned int len;
+	umode_t mode;
+	const struct inode_operations *iop;
+	const struct file_operations *fop;
+	union proc_op op;
+};
+
+struct limit_names {
+	const char *name;
+	const char *unit;
+};
+
+struct map_files_info {
+	unsigned long start;
+	unsigned long end;
+	fmode_t mode;
+};
+
+struct syscall_info {
+	__u64 sp;
+	struct seccomp_data data;
+};
+
+struct genradix_root;
+
+struct __genradix {
+	struct genradix_root *root;
+};
+
+struct tgid_iter {
+	unsigned int tgid;
+	struct task_struct *task;
+};
+
+typedef struct dentry *instantiate_t(struct dentry *, struct task_struct *, const void *);
+
+struct fd_data {
+	fmode_t mode;
+	unsigned int fd;
+};
+
+struct sysctl_alias {
+	const char *kernel_param;
+	const char *sysctl_param;
+};
+
+struct seq_net_private {
+	struct net *net;
+	netns_tracker ns_tracker;
+};
+
+struct kernfs_global_locks {
+	struct mutex open_file_mutex[1024];
+};
+
+struct kernfs_super_info {
+	struct super_block *sb;
+	struct kernfs_root *root;
+	const void *ns;
+	struct list_head node;
+};
+
+struct kernfs_root {
+	struct kernfs_node *kn;
+	unsigned int flags;
+	struct idr ino_idr;
+	u32 last_id_lowbits;
+	u32 id_highbits;
+	struct kernfs_syscall_ops *syscall_ops;
+	struct list_head supers;
+	wait_queue_head_t deactivate_waitq;
+	struct rw_semaphore kernfs_rwsem;
+	struct rw_semaphore kernfs_iattr_rwsem;
+	struct rw_semaphore kernfs_supers_rwsem;
+	struct callback_head rcu;
+};
+
+struct kernfs_iattrs {
+	kuid_t ia_uid;
+	kgid_t ia_gid;
+	struct timespec64 ia_atime;
+	struct timespec64 ia_mtime;
+	struct timespec64 ia_ctime;
+	struct simple_xattrs xattrs;
+	atomic_t nr_user_xattrs;
+	atomic_t user_xattr_size;
+};
+
+enum kernfs_node_flag {
+	KERNFS_ACTIVATED = 16,
+	KERNFS_NS = 32,
+	KERNFS_HAS_SEQ_SHOW = 64,
+	KERNFS_HAS_MMAP = 128,
+	KERNFS_LOCKDEP = 256,
+	KERNFS_HIDDEN = 512,
+	KERNFS_SUICIDAL = 1024,
+	KERNFS_SUICIDED = 2048,
+	KERNFS_EMPTY_DIR = 4096,
+	KERNFS_HAS_RELEASE = 8192,
+	KERNFS_REMOVING = 16384,
+};
+
+struct configfs_fragment;
+
+struct configfs_dirent {
+	atomic_t s_count;
+	int s_dependent_count;
+	struct list_head s_sibling;
+	struct list_head s_children;
+	int s_links;
+	void *s_element;
+	int s_type;
+	umode_t s_mode;
+	struct dentry *s_dentry;
+	struct iattr *s_iattr;
+	struct configfs_fragment *s_frag;
+};
+
+struct configfs_fragment {
+	atomic_t frag_count;
+	struct rw_semaphore frag_sem;
+	bool frag_dead;
+};
+
+struct config_item;
+
+struct configfs_attribute {
+	const char *ca_name;
+	struct module *ca_owner;
+	umode_t ca_mode;
+	ssize_t (*show)(struct config_item *, char *);
+	ssize_t (*store)(struct config_item *, const char *, size_t);
+};
+
+struct config_group;
+
+struct config_item_type;
+
+struct config_item {
+	char *ci_name;
+	char ci_namebuf[20];
+	struct kref ci_kref;
+	struct list_head ci_entry;
+	struct config_item *ci_parent;
+	struct config_group *ci_group;
+	const struct config_item_type *ci_type;
+	struct dentry *ci_dentry;
+};
+
+struct configfs_subsystem;
+
+struct config_group {
+	struct config_item cg_item;
+	struct list_head cg_children;
+	struct configfs_subsystem *cg_subsys;
+	struct list_head default_groups;
+	struct list_head group_entry;
+};
+
+struct configfs_subsystem {
+	struct config_group su_group;
+	struct mutex su_mutex;
+};
+
+struct configfs_item_operations;
+
+struct configfs_group_operations;
+
+struct configfs_bin_attribute;
+
+struct config_item_type {
+	struct module *ct_owner;
+	struct configfs_item_operations *ct_item_ops;
+	struct configfs_group_operations *ct_group_ops;
+	struct configfs_attribute **ct_attrs;
+	struct configfs_bin_attribute **ct_bin_attrs;
+};
+
+struct configfs_item_operations {
+	void (*release)(struct config_item *);
+	int (*allow_link)(struct config_item *, struct config_item *);
+	void (*drop_link)(struct config_item *, struct config_item *);
+};
+
+struct configfs_group_operations {
+	struct config_item * (*make_item)(struct config_group *, const char *);
+	struct config_group * (*make_group)(struct config_group *, const char *);
+	void (*disconnect_notify)(struct config_group *, struct config_item *);
+	void (*drop_item)(struct config_group *, struct config_item *);
+};
+
+struct configfs_bin_attribute {
+	struct configfs_attribute cb_attr;
+	void *cb_private;
+	size_t cb_max_size;
+	ssize_t (*read)(struct config_item *, void *, size_t);
+	ssize_t (*write)(struct config_item *, const void *, size_t);
+};
+
+struct configfs_buffer {
+	size_t count;
+	loff_t pos;
+	char *page;
+	struct configfs_item_operations *ops;
+	struct mutex mutex;
+	int needs_read_fill;
+	bool read_in_progress;
+	bool write_in_progress;
+	char *bin_buffer;
+	int bin_buffer_size;
+	int cb_max_size;
+	struct config_item *item;
+	struct module *owner;
+	union {
+		struct configfs_attribute *attr;
+		struct configfs_bin_attribute *bin_attr;
+	};
+};
+
+enum {
+	Opt_uid___2 = 0,
+	Opt_gid___3 = 1,
+	Opt_mode___2 = 2,
+	Opt_ptmxmode = 3,
+	Opt_newinstance = 4,
+	Opt_max = 5,
+	Opt_err = 6,
+};
+
+struct pts_mount_opts {
+	int setuid;
+	int setgid;
+	kuid_t uid;
+	kgid_t gid;
+	umode_t mode;
+	umode_t ptmxmode;
+	int reserve;
+	int max;
+};
+
+struct pts_fs_info {
+	struct ida allocated_ptys;
+	struct pts_mount_opts mount_opts;
+	struct super_block *sb;
+	struct dentry *ptmx_dentry;
+};
+
+typedef unsigned int tid_t;
+
+struct transaction_chp_stats_s {
+	unsigned long cs_chp_time;
+	__u32 cs_forced_to_close;
+	__u32 cs_written;
+	__u32 cs_dropped;
+};
+
+struct journal_s;
+
+typedef struct journal_s journal_t;
+
+struct journal_head;
+
+struct transaction_s;
+
+typedef struct transaction_s transaction_t;
+
+struct transaction_s {
+	journal_t *t_journal;
+	tid_t t_tid;
+	enum {
+		T_RUNNING = 0,
+		T_LOCKED = 1,
+		T_SWITCH = 2,
+		T_FLUSH = 3,
+		T_COMMIT = 4,
+		T_COMMIT_DFLUSH = 5,
+		T_COMMIT_JFLUSH = 6,
+		T_COMMIT_CALLBACK = 7,
+		T_FINISHED = 8,
+	} t_state;
+	unsigned long t_log_start;
+	int t_nr_buffers;
+	struct journal_head *t_reserved_list;
+	struct journal_head *t_buffers;
+	struct journal_head *t_forget;
+	struct journal_head *t_checkpoint_list;
+	struct journal_head *t_shadow_list;
+	struct list_head t_inode_list;
+	unsigned long t_max_wait;
+	unsigned long t_start;
+	unsigned long t_requested;
+	struct transaction_chp_stats_s t_chp_stats;
+	atomic_t t_updates;
+	atomic_t t_outstanding_credits;
+	atomic_t t_outstanding_revokes;
+	atomic_t t_handle_count;
+	transaction_t *t_cpnext;
+	transaction_t *t_cpprev;
+	unsigned long t_expires;
+	ktime_t t_start_time;
+	unsigned int t_synchronous_commit: 1;
+	int t_need_data_flush;
+	struct list_head t_private_list;
+};
+
+struct transaction_run_stats_s {
+	unsigned long rs_wait;
+	unsigned long rs_request_delay;
+	unsigned long rs_running;
+	unsigned long rs_locked;
+	unsigned long rs_flushing;
+	unsigned long rs_logging;
+	__u32 rs_handle_count;
+	__u32 rs_blocks;
+	__u32 rs_blocks_logged;
+};
+
+struct transaction_stats_s {
+	unsigned long ts_tid;
+	unsigned long ts_requested;
+	struct transaction_run_stats_s run;
+};
+
+enum passtype {
+	PASS_SCAN = 0,
+	PASS_REVOKE = 1,
+	PASS_REPLAY = 2,
+};
+
+struct journal_superblock_s;
+
+typedef struct journal_superblock_s journal_superblock_t;
+
+struct jbd2_revoke_table_s;
+
+struct jbd2_inode;
+
+struct journal_s {
+	unsigned long j_flags;
+	unsigned long j_atomic_flags;
+	int j_errno;
+	struct mutex j_abort_mutex;
+	struct buffer_head *j_sb_buffer;
+	journal_superblock_t *j_superblock;
+	rwlock_t j_state_lock;
+	int j_barrier_count;
+	struct mutex j_barrier;
+	transaction_t *j_running_transaction;
+	transaction_t *j_committing_transaction;
+	transaction_t *j_checkpoint_transactions;
+	wait_queue_head_t j_wait_transaction_locked;
+	wait_queue_head_t j_wait_done_commit;
+	wait_queue_head_t j_wait_commit;
+	wait_queue_head_t j_wait_updates;
+	wait_queue_head_t j_wait_reserved;
+	wait_queue_head_t j_fc_wait;
+	struct mutex j_checkpoint_mutex;
+	struct buffer_head *j_chkpt_bhs[64];
+	struct shrinker j_shrinker;
+	struct percpu_counter j_checkpoint_jh_count;
+	transaction_t *j_shrink_transaction;
+	unsigned long j_head;
+	unsigned long j_tail;
+	unsigned long j_free;
+	unsigned long j_first;
+	unsigned long j_last;
+	unsigned long j_fc_first;
+	unsigned long j_fc_off;
+	unsigned long j_fc_last;
+	struct block_device *j_dev;
+	int j_blocksize;
+	unsigned long long j_blk_offset;
+	char j_devname[56];
+	struct block_device *j_fs_dev;
+	unsigned int j_total_len;
+	atomic_t j_reserved_credits;
+	spinlock_t j_list_lock;
+	struct inode *j_inode;
+	tid_t j_tail_sequence;
+	tid_t j_transaction_sequence;
+	tid_t j_commit_sequence;
+	tid_t j_commit_request;
+	__u8 j_uuid[16];
+	struct task_struct *j_task;
+	int j_max_transaction_buffers;
+	int j_revoke_records_per_block;
+	unsigned long j_commit_interval;
+	struct timer_list j_commit_timer;
+	spinlock_t j_revoke_lock;
+	struct jbd2_revoke_table_s *j_revoke;
+	struct jbd2_revoke_table_s *j_revoke_table[2];
+	struct buffer_head **j_wbuf;
+	struct buffer_head **j_fc_wbuf;
+	int j_wbufsize;
+	int j_fc_wbufsize;
+	pid_t j_last_sync_writer;
+	u64 j_average_commit_time;
+	u32 j_min_batch_time;
+	u32 j_max_batch_time;
+	void (*j_commit_callback)(journal_t *, transaction_t *);
+	int (*j_submit_inode_data_buffers)(struct jbd2_inode *);
+	int (*j_finish_inode_data_buffers)(struct jbd2_inode *);
+	spinlock_t j_history_lock;
+	struct proc_dir_entry *j_proc_entry;
+	struct transaction_stats_s j_stats;
+	unsigned int j_failed_commit;
+	void *j_private;
+	struct crypto_shash *j_chksum_driver;
+	__u32 j_csum_seed;
+	void (*j_fc_cleanup_callback)(struct journal_s *, int, tid_t);
+	int (*j_fc_replay_callback)(struct journal_s *, struct buffer_head *, enum passtype, int, tid_t);
+	int (*j_bmap)(struct journal_s *, sector_t *);
+};
+
+struct journal_header_s {
+	__be32 h_magic;
+	__be32 h_blocktype;
+	__be32 h_sequence;
+};
+
+typedef struct journal_header_s journal_header_t;
+
+struct journal_superblock_s {
+	journal_header_t s_header;
+	__be32 s_blocksize;
+	__be32 s_maxlen;
+	__be32 s_first;
+	__be32 s_sequence;
+	__be32 s_start;
+	__be32 s_errno;
+	__be32 s_feature_compat;
+	__be32 s_feature_incompat;
+	__be32 s_feature_ro_compat;
+	__u8 s_uuid[16];
+	__be32 s_nr_users;
+	__be32 s_dynsuper;
+	__be32 s_max_transaction;
+	__be32 s_max_trans_data;
+	__u8 s_checksum_type;
+	__u8 s_padding2[3];
+	__be32 s_num_fc_blks;
+	__be32 s_head;
+	__u32 s_padding[40];
+	__be32 s_checksum;
+	__u8 s_users[768];
+};
+
+struct jbd2_inode {
+	transaction_t *i_transaction;
+	transaction_t *i_next_transaction;
+	struct list_head i_list;
+	struct inode *i_vfs_inode;
+	unsigned long i_flags;
+	loff_t i_dirty_start;
+	loff_t i_dirty_end;
+};
+
+struct jbd2_buffer_trigger_type;
+
+struct journal_head {
+	struct buffer_head *b_bh;
+	spinlock_t b_state_lock;
+	int b_jcount;
+	unsigned int b_jlist;
+	unsigned int b_modified;
+	char *b_frozen_data;
+	char *b_committed_data;
+	transaction_t *b_transaction;
+	transaction_t *b_next_transaction;
+	struct journal_head *b_tnext;
+	struct journal_head *b_tprev;
+	transaction_t *b_cp_transaction;
+	struct journal_head *b_cpnext;
+	struct journal_head *b_cpprev;
+	struct jbd2_buffer_trigger_type *b_triggers;
+	struct jbd2_buffer_trigger_type *b_frozen_triggers;
+};
+
+struct jbd2_buffer_trigger_type {
+	void (*t_frozen)(struct jbd2_buffer_trigger_type *, struct buffer_head *, void *, size_t);
+	void (*t_abort)(struct jbd2_buffer_trigger_type *, struct buffer_head *);
+};
+
+enum ext4_li_mode {
+	EXT4_LI_MODE_PREFETCH_BBITMAP = 0,
+	EXT4_LI_MODE_ITABLE = 1,
+};
+
+enum jbd_state_bits {
+	BH_JBD = 16,
+	BH_JWrite = 17,
+	BH_Freed = 18,
+	BH_Revoked = 19,
+	BH_RevokeValid = 20,
+	BH_JBDDirty = 21,
+	BH_JournalHead = 22,
+	BH_Shadow = 23,
+	BH_Verified = 24,
+	BH_JBDPrivateStart = 25,
+};
+
+struct ext4_group_desc {
+	__le32 bg_block_bitmap_lo;
+	__le32 bg_inode_bitmap_lo;
+	__le32 bg_inode_table_lo;
+	__le16 bg_free_blocks_count_lo;
+	__le16 bg_free_inodes_count_lo;
+	__le16 bg_used_dirs_count_lo;
+	__le16 bg_flags;
+	__le32 bg_exclude_bitmap_lo;
+	__le16 bg_block_bitmap_csum_lo;
+	__le16 bg_inode_bitmap_csum_lo;
+	__le16 bg_itable_unused_lo;
+	__le16 bg_checksum;
+	__le32 bg_block_bitmap_hi;
+	__le32 bg_inode_bitmap_hi;
+	__le32 bg_inode_table_hi;
+	__le16 bg_free_blocks_count_hi;
+	__le16 bg_free_inodes_count_hi;
+	__le16 bg_used_dirs_count_hi;
+	__le16 bg_itable_unused_hi;
+	__le32 bg_exclude_bitmap_hi;
+	__le16 bg_block_bitmap_csum_hi;
+	__le16 bg_inode_bitmap_csum_hi;
+	__u32 bg_reserved;
+};
+
+typedef int ext4_grpblk_t;
+
+typedef unsigned int ext4_group_t;
+
+struct ext4_group_info {
+	unsigned long bb_state;
+	struct rb_root bb_free_root;
+	ext4_grpblk_t bb_first_free;
+	ext4_grpblk_t bb_free;
+	ext4_grpblk_t bb_fragments;
+	int bb_avg_fragment_size_order;
+	ext4_grpblk_t bb_largest_free_order;
+	ext4_group_t bb_group;
+	struct list_head bb_prealloc_list;
+	struct rw_semaphore alloc_sem;
+	struct list_head bb_avg_fragment_size_node;
+	struct list_head bb_largest_free_order_node;
+	ext4_grpblk_t bb_counters[0];
+};
+
+typedef unsigned long long ext4_fsblk_t;
+
+typedef __u32 ext4_lblk_t;
+
+struct extent_status;
+
+struct ext4_es_tree {
+	struct rb_root root;
+	struct extent_status *cache_es;
+};
+
+struct ext4_pending_tree {
+	struct rb_root root;
+};
+
+struct ext4_inode_info {
+	__le32 i_data[15];
+	__u32 i_dtime;
+	ext4_fsblk_t i_file_acl;
+	ext4_group_t i_block_group;
+	ext4_lblk_t i_dir_start_lookup;
+	unsigned long i_flags;
+	struct rw_semaphore xattr_sem;
+	union {
+		struct list_head i_orphan;
+		unsigned int i_orphan_idx;
+	};
+	struct list_head i_fc_dilist;
+	struct list_head i_fc_list;
+	ext4_lblk_t i_fc_lblk_start;
+	ext4_lblk_t i_fc_lblk_len;
+	atomic_t i_fc_updates;
+	wait_queue_head_t i_fc_wait;
+	struct mutex i_fc_lock;
+	loff_t i_disksize;
+	struct rw_semaphore i_data_sem;
+	struct inode vfs_inode;
+	struct jbd2_inode *jinode;
+	spinlock_t i_raw_lock;
+	struct timespec64 i_crtime;
+	atomic_t i_prealloc_active;
+	struct rb_root i_prealloc_node;
+	rwlock_t i_prealloc_lock;
+	struct ext4_es_tree i_es_tree;
+	rwlock_t i_es_lock;
+	struct list_head i_es_list;
+	unsigned int i_es_all_nr;
+	unsigned int i_es_shk_nr;
+	ext4_lblk_t i_es_shrink_lblk;
+	ext4_group_t i_last_alloc_group;
+	unsigned int i_reserved_data_blocks;
+	struct ext4_pending_tree i_pending_tree;
+	__u16 i_extra_isize;
+	u16 i_inline_off;
+	u16 i_inline_size;
+	qsize_t i_reserved_quota;
+	spinlock_t i_completed_io_lock;
+	struct list_head i_rsv_conversion_list;
+	struct work_struct i_rsv_conversion_work;
+	atomic_t i_unwritten;
+	spinlock_t i_block_reservation_lock;
+	tid_t i_sync_tid;
+	tid_t i_datasync_tid;
+	struct dquot __attribute__((btf_type_tag("rcu"))) *i_dquot[3];
+	__u32 i_csum_seed;
+	kprojid_t i_projid;
+};
+
+struct extent_status {
+	struct rb_node rb_node;
+	ext4_lblk_t es_lblk;
+	ext4_lblk_t es_len;
+	ext4_fsblk_t es_pblk;
+};
+
+struct ext4_orphan_block;
+
+struct ext4_orphan_info {
+	int of_blocks;
+	__u32 of_csum_seed;
+	struct ext4_orphan_block *of_binfo;
+};
+
+struct ext4_es_stats {
+	unsigned long es_stats_shrunk;
+	struct percpu_counter es_stats_cache_hits;
+	struct percpu_counter es_stats_cache_misses;
+	u64 es_stats_scan_time;
+	u64 es_stats_max_scan_time;
+	struct percpu_counter es_stats_all_cnt;
+	struct percpu_counter es_stats_shk_cnt;
+};
+
+struct ext4_journal_trigger {
+	struct jbd2_buffer_trigger_type tr_triggers;
+	struct super_block *sb;
+};
+
+struct ext4_fc_stats {
+	unsigned int fc_ineligible_reason_count[10];
+	unsigned long fc_num_commits;
+	unsigned long fc_ineligible_commits;
+	unsigned long fc_failed_commits;
+	unsigned long fc_skipped_commits;
+	unsigned long fc_numblks;
+	u64 s_fc_avg_commit_time;
+};
+
+struct ext4_fc_alloc_region;
+
+struct ext4_fc_replay_state {
+	int fc_replay_num_tags;
+	int fc_replay_expected_off;
+	int fc_current_pass;
+	int fc_cur_tag;
+	int fc_crc;
+	struct ext4_fc_alloc_region *fc_regions;
+	int fc_regions_size;
+	int fc_regions_used;
+	int fc_regions_valid;
+	int *fc_modified_inodes;
+	int fc_modified_inodes_used;
+	int fc_modified_inodes_size;
+};
+
+struct ext4_super_block;
+
+struct blockgroup_lock;
+
+struct ext4_system_blocks;
+
+struct ext4_locality_group;
+
+struct flex_groups;
+
+struct ext4_li_request;
+
+struct ext4_sb_info {
+	unsigned long s_desc_size;
+	unsigned long s_inodes_per_block;
+	unsigned long s_blocks_per_group;
+	unsigned long s_clusters_per_group;
+	unsigned long s_inodes_per_group;
+	unsigned long s_itb_per_group;
+	unsigned long s_gdb_count;
+	unsigned long s_desc_per_block;
+	ext4_group_t s_groups_count;
+	ext4_group_t s_blockfile_groups;
+	unsigned long s_overhead;
+	unsigned int s_cluster_ratio;
+	unsigned int s_cluster_bits;
+	loff_t s_bitmap_maxbytes;
+	struct buffer_head *s_sbh;
+	struct ext4_super_block *s_es;
+	struct buffer_head * __attribute__((btf_type_tag("rcu"))) *s_group_desc;
+	unsigned int s_mount_opt;
+	unsigned int s_mount_opt2;
+	unsigned long s_mount_flags;
+	unsigned int s_def_mount_opt;
+	unsigned int s_def_mount_opt2;
+	ext4_fsblk_t s_sb_block;
+	atomic64_t s_resv_clusters;
+	kuid_t s_resuid;
+	kgid_t s_resgid;
+	unsigned short s_mount_state;
+	unsigned short s_pad;
+	int s_addr_per_block_bits;
+	int s_desc_per_block_bits;
+	int s_inode_size;
+	int s_first_ino;
+	unsigned int s_inode_readahead_blks;
+	unsigned int s_inode_goal;
+	u32 s_hash_seed[4];
+	int s_def_hash_version;
+	int s_hash_unsigned;
+	struct percpu_counter s_freeclusters_counter;
+	struct percpu_counter s_freeinodes_counter;
+	struct percpu_counter s_dirs_counter;
+	struct percpu_counter s_dirtyclusters_counter;
+	struct percpu_counter s_sra_exceeded_retry_limit;
+	struct blockgroup_lock *s_blockgroup_lock;
+	struct proc_dir_entry *s_proc;
+	struct kobject s_kobj;
+	struct completion s_kobj_unregister;
+	struct super_block *s_sb;
+	struct buffer_head *s_mmp_bh;
+	struct journal_s *s_journal;
+	unsigned long s_ext4_flags;
+	struct mutex s_orphan_lock;
+	struct list_head s_orphan;
+	struct ext4_orphan_info s_orphan_info;
+	unsigned long s_commit_interval;
+	u32 s_max_batch_time;
+	u32 s_min_batch_time;
+	struct block_device *s_journal_bdev;
+	char __attribute__((btf_type_tag("rcu"))) *s_qf_names[3];
+	int s_jquota_fmt;
+	unsigned int s_want_extra_isize;
+	struct ext4_system_blocks __attribute__((btf_type_tag("rcu"))) *s_system_blks;
+	struct ext4_group_info ** __attribute__((btf_type_tag("rcu"))) *s_group_info;
+	struct inode *s_buddy_cache;
+	spinlock_t s_md_lock;
+	unsigned short *s_mb_offsets;
+	unsigned int *s_mb_maxs;
+	unsigned int s_group_info_size;
+	unsigned int s_mb_free_pending;
+	struct list_head s_freed_data_list;
+	struct list_head s_discard_list;
+	struct work_struct s_discard_work;
+	atomic_t s_retry_alloc_pending;
+	struct list_head *s_mb_avg_fragment_size;
+	rwlock_t *s_mb_avg_fragment_size_locks;
+	struct list_head *s_mb_largest_free_orders;
+	rwlock_t *s_mb_largest_free_orders_locks;
+	unsigned long s_stripe;
+	unsigned int s_mb_max_linear_groups;
+	unsigned int s_mb_stream_request;
+	unsigned int s_mb_max_to_scan;
+	unsigned int s_mb_min_to_scan;
+	unsigned int s_mb_stats;
+	unsigned int s_mb_order2_reqs;
+	unsigned int s_mb_group_prealloc;
+	unsigned int s_max_dir_size_kb;
+	unsigned long s_mb_last_group;
+	unsigned long s_mb_last_start;
+	unsigned int s_mb_prefetch;
+	unsigned int s_mb_prefetch_limit;
+	unsigned int s_mb_best_avail_max_trim_order;
+	atomic_t s_bal_reqs;
+	atomic_t s_bal_success;
+	atomic_t s_bal_allocated;
+	atomic_t s_bal_ex_scanned;
+	atomic_t s_bal_cX_ex_scanned[5];
+	atomic_t s_bal_groups_scanned;
+	atomic_t s_bal_goals;
+	atomic_t s_bal_len_goals;
+	atomic_t s_bal_breaks;
+	atomic_t s_bal_2orders;
+	atomic_t s_bal_p2_aligned_bad_suggestions;
+	atomic_t s_bal_goal_fast_bad_suggestions;
+	atomic_t s_bal_best_avail_bad_suggestions;
+	atomic64_t s_bal_cX_groups_considered[5];
+	atomic64_t s_bal_cX_hits[5];
+	atomic64_t s_bal_cX_failed[5];
+	atomic_t s_mb_buddies_generated;
+	atomic64_t s_mb_generation_time;
+	atomic_t s_mb_lost_chunks;
+	atomic_t s_mb_preallocated;
+	atomic_t s_mb_discarded;
+	atomic_t s_lock_busy;
+	struct ext4_locality_group __attribute__((btf_type_tag("percpu"))) *s_locality_groups;
+	unsigned long s_sectors_written_start;
+	u64 s_kbytes_written;
+	unsigned int s_extent_max_zeroout_kb;
+	unsigned int s_log_groups_per_flex;
+	struct flex_groups * __attribute__((btf_type_tag("rcu"))) *s_flex_groups;
+	ext4_group_t s_flex_groups_allocated;
+	struct workqueue_struct *rsv_conversion_wq;
+	struct timer_list s_err_report;
+	struct ext4_li_request *s_li_request;
+	unsigned int s_li_wait_mult;
+	struct task_struct *s_mmp_tsk;
+	unsigned long s_last_trim_minblks;
+	struct crypto_shash *s_chksum_driver;
+	__u32 s_csum_seed;
+	struct shrinker s_es_shrinker;
+	struct list_head s_es_list;
+	long s_es_nr_inode;
+	struct ext4_es_stats s_es_stats;
+	struct mb_cache *s_ea_block_cache;
+	struct mb_cache *s_ea_inode_cache;
+	long: 64;
+	long: 64;
+	spinlock_t s_es_lock;
+	struct ext4_journal_trigger s_journal_triggers[1];
+	struct ratelimit_state s_err_ratelimit_state;
+	struct ratelimit_state s_warning_ratelimit_state;
+	struct ratelimit_state s_msg_ratelimit_state;
+	atomic_t s_warning_count;
+	atomic_t s_msg_count;
+	struct fscrypt_dummy_policy s_dummy_enc_policy;
+	struct percpu_rw_semaphore s_writepages_rwsem;
+	struct dax_device *s_daxdev;
+	u64 s_dax_part_off;
+	errseq_t s_bdev_wb_err;
+	spinlock_t s_bdev_wb_lock;
+	spinlock_t s_error_lock;
+	int s_add_error_count;
+	int s_first_error_code;
+	__u32 s_first_error_line;
+	__u32 s_first_error_ino;
+	__u64 s_first_error_block;
+	const char *s_first_error_func;
+	time64_t s_first_error_time;
+	int s_last_error_code;
+	__u32 s_last_error_line;
+	__u32 s_last_error_ino;
+	__u64 s_last_error_block;
+	const char *s_last_error_func;
+	time64_t s_last_error_time;
+	struct work_struct s_sb_upd_work;
+	atomic_t s_fc_subtid;
+	struct list_head s_fc_q[2];
+	struct list_head s_fc_dentry_q[2];
+	unsigned int s_fc_bytes;
+	spinlock_t s_fc_lock;
+	struct buffer_head *s_fc_bh;
+	struct ext4_fc_stats s_fc_stats;
+	tid_t s_fc_ineligible_tid;
+	struct ext4_fc_replay_state s_fc_replay_state;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct ext4_super_block {
+	__le32 s_inodes_count;
+	__le32 s_blocks_count_lo;
+	__le32 s_r_blocks_count_lo;
+	__le32 s_free_blocks_count_lo;
+	__le32 s_free_inodes_count;
+	__le32 s_first_data_block;
+	__le32 s_log_block_size;
+	__le32 s_log_cluster_size;
+	__le32 s_blocks_per_group;
+	__le32 s_clusters_per_group;
+	__le32 s_inodes_per_group;
+	__le32 s_mtime;
+	__le32 s_wtime;
+	__le16 s_mnt_count;
+	__le16 s_max_mnt_count;
+	__le16 s_magic;
+	__le16 s_state;
+	__le16 s_errors;
+	__le16 s_minor_rev_level;
+	__le32 s_lastcheck;
+	__le32 s_checkinterval;
+	__le32 s_creator_os;
+	__le32 s_rev_level;
+	__le16 s_def_resuid;
+	__le16 s_def_resgid;
+	__le32 s_first_ino;
+	__le16 s_inode_size;
+	__le16 s_block_group_nr;
+	__le32 s_feature_compat;
+	__le32 s_feature_incompat;
+	__le32 s_feature_ro_compat;
+	__u8 s_uuid[16];
+	char s_volume_name[16];
+	char s_last_mounted[64];
+	__le32 s_algorithm_usage_bitmap;
+	__u8 s_prealloc_blocks;
+	__u8 s_prealloc_dir_blocks;
+	__le16 s_reserved_gdt_blocks;
+	__u8 s_journal_uuid[16];
+	__le32 s_journal_inum;
+	__le32 s_journal_dev;
+	__le32 s_last_orphan;
+	__le32 s_hash_seed[4];
+	__u8 s_def_hash_version;
+	__u8 s_jnl_backup_type;
+	__le16 s_desc_size;
+	__le32 s_default_mount_opts;
+	__le32 s_first_meta_bg;
+	__le32 s_mkfs_time;
+	__le32 s_jnl_blocks[17];
+	__le32 s_blocks_count_hi;
+	__le32 s_r_blocks_count_hi;
+	__le32 s_free_blocks_count_hi;
+	__le16 s_min_extra_isize;
+	__le16 s_want_extra_isize;
+	__le32 s_flags;
+	__le16 s_raid_stride;
+	__le16 s_mmp_update_interval;
+	__le64 s_mmp_block;
+	__le32 s_raid_stripe_width;
+	__u8 s_log_groups_per_flex;
+	__u8 s_checksum_type;
+	__u8 s_encryption_level;
+	__u8 s_reserved_pad;
+	__le64 s_kbytes_written;
+	__le32 s_snapshot_inum;
+	__le32 s_snapshot_id;
+	__le64 s_snapshot_r_blocks_count;
+	__le32 s_snapshot_list;
+	__le32 s_error_count;
+	__le32 s_first_error_time;
+	__le32 s_first_error_ino;
+	__le64 s_first_error_block;
+	__u8 s_first_error_func[32];
+	__le32 s_first_error_line;
+	__le32 s_last_error_time;
+	__le32 s_last_error_ino;
+	__le32 s_last_error_line;
+	__le64 s_last_error_block;
+	__u8 s_last_error_func[32];
+	__u8 s_mount_opts[64];
+	__le32 s_usr_quota_inum;
+	__le32 s_grp_quota_inum;
+	__le32 s_overhead_clusters;
+	__le32 s_backup_bgs[2];
+	__u8 s_encrypt_algos[4];
+	__u8 s_encrypt_pw_salt[16];
+	__le32 s_lpf_ino;
+	__le32 s_prj_quota_inum;
+	__le32 s_checksum_seed;
+	__u8 s_wtime_hi;
+	__u8 s_mtime_hi;
+	__u8 s_mkfs_time_hi;
+	__u8 s_lastcheck_hi;
+	__u8 s_first_error_time_hi;
+	__u8 s_last_error_time_hi;
+	__u8 s_first_error_errcode;
+	__u8 s_last_error_errcode;
+	__le16 s_encoding;
+	__le16 s_encoding_flags;
+	__le32 s_orphan_file_inum;
+	__le32 s_reserved[94];
+	__le32 s_checksum;
+};
+
+struct bgl_lock {
+	spinlock_t lock;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct blockgroup_lock {
+	struct bgl_lock locks[128];
+};
+
+struct ext4_orphan_block {
+	atomic_t ob_free_entries;
+	struct buffer_head *ob_bh;
+};
+
+struct ext4_system_blocks {
+	struct rb_root root;
+	struct callback_head rcu;
+};
+
+struct ext4_locality_group {
+	struct mutex lg_mutex;
+	struct list_head lg_prealloc_list[10];
+	spinlock_t lg_prealloc_lock;
+};
+
+struct flex_groups {
+	atomic64_t free_clusters;
+	atomic_t free_inodes;
+	atomic_t used_dirs;
+};
+
+struct ext4_li_request {
+	struct super_block *lr_super;
+	enum ext4_li_mode lr_mode;
+	ext4_group_t lr_first_not_zeroed;
+	ext4_group_t lr_next_group;
+	struct list_head lr_request;
+	unsigned long lr_next_sched;
+	unsigned long lr_timeout;
+};
+
+struct ext4_fc_alloc_region {
+	ext4_lblk_t lblk;
+	ext4_fsblk_t pblk;
+	int ino;
+	int len;
+};
+
+struct jbd2_journal_handle;
+
+typedef struct jbd2_journal_handle handle_t;
+
+struct jbd2_journal_handle {
+	union {
+		transaction_t *h_transaction;
+		journal_t *h_journal;
+	};
+	handle_t *h_rsv_handle;
+	int h_total_credits;
+	int h_revoke_credits;
+	int h_revoke_credits_requested;
+	int h_ref;
+	int h_err;
+	unsigned int h_sync: 1;
+	unsigned int h_jdata: 1;
+	unsigned int h_reserved: 1;
+	unsigned int h_aborted: 1;
+	unsigned int h_type: 8;
+	unsigned int h_line_no: 16;
+	unsigned long h_start_jiffies;
+	unsigned int h_requested_credits;
+	unsigned int saved_alloc_context;
+};
+
+struct ext4_allocation_request {
+	struct inode *inode;
+	unsigned int len;
+	ext4_lblk_t logical;
+	ext4_lblk_t lleft;
+	ext4_lblk_t lright;
+	ext4_fsblk_t goal;
+	ext4_fsblk_t pleft;
+	ext4_fsblk_t pright;
+	unsigned int flags;
+};
+
+struct ext4_system_zone {
+	struct rb_node node;
+	ext4_fsblk_t start_blk;
+	unsigned int count;
+	u32 ino;
+};
+
+struct ext4_map_blocks {
+	ext4_fsblk_t m_pblk;
+	ext4_lblk_t m_lblk;
+	unsigned int m_len;
+	unsigned int m_flags;
+};
+
+typedef enum {
+	EXT4_IGET_NORMAL = 0,
+	EXT4_IGET_SPECIAL = 1,
+	EXT4_IGET_HANDLE = 2,
+	EXT4_IGET_BAD = 4,
+	EXT4_IGET_EA_INODE = 8,
+} ext4_iget_flags;
+
+enum {
+	EXT4_INODE_SECRM = 0,
+	EXT4_INODE_UNRM = 1,
+	EXT4_INODE_COMPR = 2,
+	EXT4_INODE_SYNC = 3,
+	EXT4_INODE_IMMUTABLE = 4,
+	EXT4_INODE_APPEND = 5,
+	EXT4_INODE_NODUMP = 6,
+	EXT4_INODE_NOATIME = 7,
+	EXT4_INODE_DIRTY = 8,
+	EXT4_INODE_COMPRBLK = 9,
+	EXT4_INODE_NOCOMPR = 10,
+	EXT4_INODE_ENCRYPT = 11,
+	EXT4_INODE_INDEX = 12,
+	EXT4_INODE_IMAGIC = 13,
+	EXT4_INODE_JOURNAL_DATA = 14,
+	EXT4_INODE_NOTAIL = 15,
+	EXT4_INODE_DIRSYNC = 16,
+	EXT4_INODE_TOPDIR = 17,
+	EXT4_INODE_HUGE_FILE = 18,
+	EXT4_INODE_EXTENTS = 19,
+	EXT4_INODE_VERITY = 20,
+	EXT4_INODE_EA_INODE = 21,
+	EXT4_INODE_DAX = 25,
+	EXT4_INODE_INLINE_DATA = 28,
+	EXT4_INODE_PROJINHERIT = 29,
+	EXT4_INODE_CASEFOLD = 30,
+	EXT4_INODE_RESERVED = 31,
+};
+
+struct fname {
+	__u32 hash;
+	__u32 minor_hash;
+	struct rb_node rb_hash;
+	struct fname *next;
+	__u32 inode;
+	__u8 name_len;
+	__u8 file_type;
+	char name[0];
+};
+
+struct ext4_dir_entry_2 {
+	__le32 inode;
+	__le16 rec_len;
+	__u8 name_len;
+	__u8 file_type;
+	char name[255];
+};
+
+struct ext4_dir_entry_hash {
+	__le32 hash;
+	__le32 minor_hash;
+};
+
+struct dir_private_info {
+	struct rb_root root;
+	struct rb_node *curr_node;
+	struct fname *extra_fname;
+	loff_t last_pos;
+	__u32 curr_hash;
+	__u32 curr_minor_hash;
+	__u32 next_hash;
+};
+
+enum ext4_journal_trigger_type {
+	EXT4_JTR_ORPHAN_FILE = 0,
+	EXT4_JTR_NONE = 1,
+};
+
+enum {
+	EXT4_STATE_NEW = 0,
+	EXT4_STATE_XATTR = 1,
+	EXT4_STATE_NO_EXPAND = 2,
+	EXT4_STATE_DA_ALLOC_CLOSE = 3,
+	EXT4_STATE_EXT_MIGRATE = 4,
+	EXT4_STATE_NEWENTRY = 5,
+	EXT4_STATE_MAY_INLINE_DATA = 6,
+	EXT4_STATE_EXT_PRECACHED = 7,
+	EXT4_STATE_LUSTRE_EA_INODE = 8,
+	EXT4_STATE_VERITY_IN_PROGRESS = 9,
+	EXT4_STATE_FC_COMMITTING = 10,
+	EXT4_STATE_ORPHAN_FILE = 11,
+};
+
+struct partial_cluster {
+	ext4_fsblk_t pclu;
+	ext4_lblk_t lblk;
+	enum {
+		initial = 0,
+		tofree = 1,
+		nofree = 2,
+	} state;
+};
+
+enum {
+	ES_WRITTEN_B = 0,
+	ES_UNWRITTEN_B = 1,
+	ES_DELAYED_B = 2,
+	ES_HOLE_B = 3,
+	ES_REFERENCED_B = 4,
+	ES_FLAGS = 5,
+};
+
+enum {
+	EXT4_FC_REASON_XATTR = 0,
+	EXT4_FC_REASON_CROSS_RENAME = 1,
+	EXT4_FC_REASON_JOURNAL_FLAG_CHANGE = 2,
+	EXT4_FC_REASON_NOMEM = 3,
+	EXT4_FC_REASON_SWAP_BOOT = 4,
+	EXT4_FC_REASON_RESIZE = 5,
+	EXT4_FC_REASON_RENAME_DIR = 6,
+	EXT4_FC_REASON_FALLOC_RANGE = 7,
+	EXT4_FC_REASON_INODE_JOURNAL_DATA = 8,
+	EXT4_FC_REASON_ENCRYPTED_FILENAME = 9,
+	EXT4_FC_REASON_MAX = 10,
+};
+
+enum SHIFT_DIRECTION {
+	SHIFT_LEFT = 0,
+	SHIFT_RIGHT = 1,
+};
+
+struct ext4_extent_idx {
+	__le32 ei_block;
+	__le32 ei_leaf_lo;
+	__le16 ei_leaf_hi;
+	__u16 ei_unused;
+};
+
+struct ext4_extent {
+	__le32 ee_block;
+	__le16 ee_len;
+	__le16 ee_start_hi;
+	__le32 ee_start_lo;
+};
+
+struct ext4_io_end_vec {
+	struct list_head list;
+	loff_t offset;
+	ssize_t size;
+};
+
+struct ext4_extent_tail {
+	__le32 et_checksum;
+};
+
+struct ext4_extent_header {
+	__le16 eh_magic;
+	__le16 eh_entries;
+	__le16 eh_max;
+	__le16 eh_depth;
+	__le32 eh_generation;
+};
+
+struct ext4_ext_path {
+	ext4_fsblk_t p_block;
+	__u16 p_depth;
+	__u16 p_maxdepth;
+	struct ext4_extent *p_ext;
+	struct ext4_extent_idx *p_idx;
+	struct ext4_extent_header *p_hdr;
+	struct buffer_head *p_bh;
+};
+
+struct ext4_iloc {
+	struct buffer_head *bh;
+	unsigned long offset;
+	ext4_group_t block_group;
+};
+
+struct ext4_io_end {
+	struct list_head list;
+	handle_t *handle;
+	struct inode *inode;
+	struct bio *bio;
+	unsigned int flag;
+	refcount_t count;
+	struct list_head list_vec;
+};
+
+typedef struct ext4_io_end ext4_io_end_t;
+
+struct pending_reservation {
+	struct rb_node rb_node;
+	ext4_lblk_t lclu;
+};
+
+struct rsvd_count {
+	int ndelonly;
+	bool first_do_lblk_found;
+	ext4_lblk_t first_do_lblk;
+	ext4_lblk_t last_do_lblk;
+	struct extent_status *left_es;
+	bool partial;
+	ext4_lblk_t lclu;
+};
+
+enum {
+	EXT4_MF_MNTDIR_SAMPLED = 0,
+	EXT4_MF_FC_INELIGIBLE = 1,
+};
+
+struct ext4_fsmap {
+	struct list_head fmr_list;
+	dev_t fmr_device;
+	uint32_t fmr_flags;
+	uint64_t fmr_physical;
+	uint64_t fmr_owner;
+	uint64_t fmr_length;
+};
+
+typedef int (*ext4_mballoc_query_range_fn)(struct super_block *, ext4_group_t, ext4_grpblk_t, ext4_grpblk_t, void *);
+
+typedef int (*ext4_fsmap_format_t)(struct ext4_fsmap *, void *);
+
+struct ext4_fsmap_head;
+
+struct ext4_getfsmap_info {
+	struct ext4_fsmap_head *gfi_head;
+	ext4_fsmap_format_t gfi_formatter;
+	void *gfi_format_arg;
+	ext4_fsblk_t gfi_next_fsblk;
+	u32 gfi_dev;
+	ext4_group_t gfi_agno;
+	struct ext4_fsmap gfi_low;
+	struct ext4_fsmap gfi_high;
+	struct ext4_fsmap gfi_lastfree;
+	struct list_head gfi_meta_list;
+	bool gfi_last;
+};
+
+struct ext4_fsmap_head {
+	uint32_t fmh_iflags;
+	uint32_t fmh_oflags;
+	unsigned int fmh_count;
+	unsigned int fmh_entries;
+	struct ext4_fsmap fmh_keys[2];
+};
+
+struct fsmap {
+	__u32 fmr_device;
+	__u32 fmr_flags;
+	__u64 fmr_physical;
+	__u64 fmr_owner;
+	__u64 fmr_offset;
+	__u64 fmr_length;
+	__u64 fmr_reserved[3];
+};
+
+struct ext4_getfsmap_dev {
+	int (*gfd_fn)(struct super_block *, struct ext4_fsmap *, struct ext4_getfsmap_info *);
+	u32 gfd_dev;
+};
+
+struct dx_hash_info {
+	u32 hash;
+	u32 minor_hash;
+	int hash_version;
+	u32 *seed;
+};
+
+struct ext4_inode {
+	__le16 i_mode;
+	__le16 i_uid;
+	__le32 i_size_lo;
+	__le32 i_atime;
+	__le32 i_ctime;
+	__le32 i_mtime;
+	__le32 i_dtime;
+	__le16 i_gid;
+	__le16 i_links_count;
+	__le32 i_blocks_lo;
+	__le32 i_flags;
+	union {
+		struct {
+			__le32 l_i_version;
+		} linux1;
+		struct {
+			__u32 h_i_translator;
+		} hurd1;
+		struct {
+			__u32 m_i_reserved1;
+		} masix1;
+	} osd1;
+	__le32 i_block[15];
+	__le32 i_generation;
+	__le32 i_file_acl_lo;
+	__le32 i_size_high;
+	__le32 i_obso_faddr;
+	union {
+		struct {
+			__le16 l_i_blocks_high;
+			__le16 l_i_file_acl_high;
+			__le16 l_i_uid_high;
+			__le16 l_i_gid_high;
+			__le16 l_i_checksum_lo;
+			__le16 l_i_reserved;
+		} linux2;
+		struct {
+			__le16 h_i_reserved1;
+			__u16 h_i_mode_high;
+			__u16 h_i_uid_high;
+			__u16 h_i_gid_high;
+			__u32 h_i_author;
+		} hurd2;
+		struct {
+			__le16 h_i_reserved1;
+			__le16 m_i_file_acl_high;
+			__u32 m_i_reserved2[2];
+		} masix2;
+	} osd2;
+	__le16 i_extra_isize;
+	__le16 i_checksum_hi;
+	__le32 i_ctime_extra;
+	__le32 i_mtime_extra;
+	__le32 i_atime_extra;
+	__le32 i_crtime;
+	__le32 i_crtime_extra;
+	__le32 i_version_hi;
+	__le32 i_projid;
+};
+
+typedef unsigned int __kernel_mode_t;
+
+typedef __kernel_mode_t mode_t;
+
+struct orlov_stats {
+	__u64 free_clusters;
+	__u32 free_inodes;
+	__u32 used_dirs;
+};
+
+typedef struct {
+	__le32 *p;
+	__le32 key;
+	struct buffer_head *bh;
+} Indirect;
+
+struct ext4_xattr_ibody_header {
+	__le32 h_magic;
+};
+
+struct ext4_xattr_entry {
+	__u8 e_name_len;
+	__u8 e_name_index;
+	__le16 e_value_offs;
+	__le32 e_value_inum;
+	__le32 e_value_size;
+	__le32 e_hash;
+	char e_name[0];
+};
+
+struct ext4_xattr_info {
+	const char *name;
+	const void *value;
+	size_t value_len;
+	int name_index;
+	int in_inode;
+};
+
+struct ext4_xattr_search {
+	struct ext4_xattr_entry *first;
+	void *base;
+	void *end;
+	struct ext4_xattr_entry *here;
+	int not_found;
+};
+
+struct ext4_xattr_ibody_find {
+	struct ext4_xattr_search s;
+	struct ext4_iloc iloc;
+};
+
+struct ext4_filename {
+	const struct qstr *usr_fname;
+	struct fscrypt_str disk_name;
+	struct dx_hash_info hinfo;
+	struct fscrypt_str crypto_buf;
+	struct fscrypt_str cf_name;
+};
+
+typedef unsigned short __kernel_uid16_t;
+
+typedef __kernel_uid16_t uid16_t;
+
+typedef unsigned short __kernel_gid16_t;
+
+typedef __kernel_gid16_t gid16_t;
+
+struct ext4_xattr_inode_array {
+	unsigned int count;
+	struct inode *inodes[0];
+};
+
+struct ext4_io_submit {
+	struct writeback_control *io_wbc;
+	struct bio *io_bio;
+	ext4_io_end_t *io_end;
+	sector_t io_next_block;
+};
+
+struct mpage_da_data {
+	struct inode *inode;
+	struct writeback_control *wbc;
+	unsigned int can_map: 1;
+	unsigned long first_page;
+	unsigned long next_page;
+	unsigned long last_page;
+	struct ext4_map_blocks map;
+	struct ext4_io_submit io_submit;
+	unsigned int do_map: 1;
+	unsigned int scanned_until_end: 1;
+	unsigned int journalled_more_data: 1;
+};
+
+struct move_extent {
+	__u32 reserved;
+	__u32 donor_fd;
+	__u64 orig_start;
+	__u64 donor_start;
+	__u64 len;
+	__u64 moved_len;
+};
+
+struct ext4_new_group_input {
+	__u32 group;
+	__u64 block_bitmap;
+	__u64 inode_bitmap;
+	__u64 inode_table;
+	__u32 blocks_count;
+	__u16 reserved_blocks;
+	__u16 unused;
+};
+
+struct fstrim_range {
+	__u64 start;
+	__u64 len;
+	__u64 minlen;
+};
+
+struct ext4_new_group_data {
+	__u32 group;
+	__u64 block_bitmap;
+	__u64 inode_bitmap;
+	__u64 inode_table;
+	__u32 blocks_count;
+	__u16 reserved_blocks;
+	__u16 mdata_blocks;
+	__u32 free_clusters_count;
+};
+
+struct fsmap_head {
+	__u32 fmh_iflags;
+	__u32 fmh_oflags;
+	__u32 fmh_count;
+	__u32 fmh_entries;
+	__u64 fmh_reserved[6];
+	struct fsmap fmh_keys[2];
+	struct fsmap fmh_recs[0];
+};
+
+struct getfsmap_info {
+	struct super_block *gi_sb;
+	struct fsmap_head __attribute__((btf_type_tag("user"))) *gi_data;
+	unsigned int gi_idx;
+	__u32 gi_last_flags;
+};
+
+struct fsuuid {
+	__u32 fsu_len;
+	__u32 fsu_flags;
+	__u8 fsu_uuid[0];
+};
+
+typedef void ext4_update_sb_callback(struct ext4_super_block *, const void *);
+
+struct compat_ext4_new_group_input {
+	u32 group;
+	compat_u64 block_bitmap;
+	compat_u64 inode_bitmap;
+	compat_u64 inode_table;
+	u32 blocks_count;
+	u16 reserved_blocks;
+	u16 unused;
+} __attribute__((packed));
+
+struct sg {
+	struct ext4_group_info info;
+	ext4_grpblk_t counters[18];
+};
+
+enum criteria {
+	CR_POWER2_ALIGNED = 0,
+	CR_GOAL_LEN_FAST = 1,
+	CR_BEST_AVAIL_LEN = 2,
+	CR_GOAL_LEN_SLOW = 3,
+	CR_ANY_FREE = 4,
+	EXT4_MB_NUM_CRS = 5,
+};
+
+enum {
+	MB_INODE_PA = 0,
+	MB_GROUP_PA = 1,
+};
+
+enum blk_default_limits {
+	BLK_MAX_SEGMENTS = 128,
+	BLK_SAFE_MAX_SECTORS = 255,
+	BLK_MAX_SEGMENT_SIZE = 65536,
+	BLK_SEG_BOUNDARY_MASK = 4294967295,
+};
+
+struct ext4_free_data {
+	struct list_head efd_list;
+	struct rb_node efd_node;
+	ext4_group_t efd_group;
+	ext4_grpblk_t efd_start_cluster;
+	ext4_grpblk_t efd_count;
+	tid_t efd_tid;
+};
+
+struct ext4_prealloc_space {
+	union {
+		struct rb_node inode_node;
+		struct list_head lg_list;
+	} pa_node;
+	struct list_head pa_group_list;
+	union {
+		struct list_head pa_tmp_list;
+		struct callback_head pa_rcu;
+	} u;
+	spinlock_t pa_lock;
+	atomic_t pa_count;
+	unsigned int pa_deleted;
+	ext4_fsblk_t pa_pstart;
+	ext4_lblk_t pa_lstart;
+	ext4_grpblk_t pa_len;
+	ext4_grpblk_t pa_free;
+	unsigned short pa_type;
+	union {
+		rwlock_t *inode_lock;
+		spinlock_t *lg_lock;
+	} pa_node_lock;
+	struct inode *pa_inode;
+};
+
+struct ext4_buddy {
+	struct page *bd_buddy_page;
+	void *bd_buddy;
+	struct page *bd_bitmap_page;
+	void *bd_bitmap;
+	struct ext4_group_info *bd_info;
+	struct super_block *bd_sb;
+	__u16 bd_blkbits;
+	ext4_group_t bd_group;
+};
+
+struct ext4_free_extent {
+	ext4_lblk_t fe_logical;
+	ext4_grpblk_t fe_start;
+	ext4_group_t fe_group;
+	ext4_grpblk_t fe_len;
+};
+
+struct ext4_allocation_context {
+	struct inode *ac_inode;
+	struct super_block *ac_sb;
+	struct ext4_free_extent ac_o_ex;
+	struct ext4_free_extent ac_g_ex;
+	struct ext4_free_extent ac_b_ex;
+	struct ext4_free_extent ac_f_ex;
+	ext4_grpblk_t ac_orig_goal_len;
+	__u32 ac_groups_considered;
+	__u32 ac_flags;
+	__u16 ac_groups_scanned;
+	__u16 ac_groups_linear_remaining;
+	__u16 ac_found;
+	__u16 ac_cX_found[5];
+	__u16 ac_tail;
+	__u16 ac_buddy;
+	__u8 ac_status;
+	__u8 ac_criteria;
+	__u8 ac_2order;
+	__u8 ac_op;
+	struct page *ac_bitmap_page;
+	struct page *ac_buddy_page;
+	struct ext4_prealloc_space *ac_pa;
+	struct ext4_locality_group *ac_lg;
+};
+
+struct migrate_struct {
+	ext4_lblk_t first_block;
+	ext4_lblk_t last_block;
+	ext4_lblk_t curr_block;
+	ext4_fsblk_t first_pblock;
+	ext4_fsblk_t last_pblock;
+};
+
+struct mmp_struct {
+	__le32 mmp_magic;
+	__le32 mmp_seq;
+	__le64 mmp_time;
+	char mmp_nodename[64];
+	char mmp_bdevname[32];
+	__le16 mmp_check_interval;
+	__le16 mmp_pad1;
+	__le32 mmp_pad2[226];
+	__le32 mmp_checksum;
+};
+
+struct ext4_dir_entry_tail {
+	__le32 det_reserved_zero1;
+	__le16 det_rec_len;
+	__u8 det_reserved_zero2;
+	__u8 det_reserved_ft;
+	__le32 det_checksum;
+};
+
+struct dx_entry;
+
+struct dx_frame {
+	struct buffer_head *bh;
+	struct dx_entry *entries;
+	struct dx_entry *at;
+};
+
+struct dx_entry {
+	__le32 hash;
+	__le32 block;
+};
+
+struct fake_dirent {
+	__le32 inode;
+	__le16 rec_len;
+	u8 name_len;
+	u8 file_type;
+};
+
+struct dx_root_info {
+	__le32 reserved_zero;
+	u8 hash_version;
+	u8 info_length;
+	u8 indirect_levels;
+	u8 unused_flags;
+};
+
+struct dx_root {
+	struct fake_dirent dot;
+	char dot_name[4];
+	struct fake_dirent dotdot;
+	char dotdot_name[4];
+	struct dx_root_info info;
+	struct dx_entry entries[0];
+};
+
+struct dx_node {
+	struct fake_dirent fake;
+	struct dx_entry entries[0];
+};
+
+struct dx_countlimit {
+	__le16 limit;
+	__le16 count;
+};
+
+struct ext4_dir_entry {
+	__le32 inode;
+	__le16 rec_len;
+	__le16 name_len;
+	char name[255];
+};
+
+struct dx_tail {
+	u32 dt_reserved;
+	__le32 dt_checksum;
+};
+
+struct dx_map_entry {
+	u32 hash;
+	u16 offs;
+	u16 size;
+};
+
+struct ext4_renament {
+	struct inode *dir;
+	struct dentry *dentry;
+	struct inode *inode;
+	bool is_dir;
+	int dir_nlink_delta;
+	struct buffer_head *bh;
+	struct ext4_dir_entry_2 *de;
+	int inlined;
+	struct buffer_head *dir_bh;
+	struct ext4_dir_entry_2 *parent_de;
+	int dir_inlined;
+};
+
+typedef enum {
+	EITHER = 0,
+	INDEX = 1,
+	DIRENT = 2,
+	DIRENT_HTREE = 3,
+} dirblock_type_t;
+
+enum bio_post_read_step {
+	STEP_INITIAL = 0,
+	STEP_DECRYPT = 1,
+	STEP_VERITY = 2,
+	STEP_MAX = 3,
+};
+
+struct bio_post_read_ctx {
+	struct bio *bio;
+	struct work_struct work;
+	unsigned int cur_step;
+	unsigned int enabled_steps;
+};
+
+enum {
+	BLOCK_BITMAP = 0,
+	INODE_BITMAP = 1,
+	INODE_TABLE = 2,
+	GROUP_TABLE_COUNT = 3,
+};
+
+struct ext4_rcu_ptr {
+	struct callback_head rcu;
+	void *ptr;
+};
+
+struct ext4_new_flex_group_data {
+	struct ext4_new_group_data *groups;
+	__u16 *bg_flags;
+	ext4_group_t resize_bg;
+	ext4_group_t count;
+};
+
+typedef void (*btf_trace_ext4_other_inode_update_time)(void *, struct inode *, ino_t);
+
+typedef void (*btf_trace_ext4_free_inode)(void *, struct inode *);
+
+typedef void (*btf_trace_ext4_request_inode)(void *, struct inode *, int);
+
+typedef void (*btf_trace_ext4_allocate_inode)(void *, struct inode *, struct inode *, int);
+
+typedef void (*btf_trace_ext4_evict_inode)(void *, struct inode *);
+
+typedef void (*btf_trace_ext4_drop_inode)(void *, struct inode *, int);
+
+typedef void (*btf_trace_ext4_nfs_commit_metadata)(void *, struct inode *);
+
+typedef void (*btf_trace_ext4_mark_inode_dirty)(void *, struct inode *, unsigned long);
+
+typedef void (*btf_trace_ext4_begin_ordered_truncate)(void *, struct inode *, loff_t);
+
+typedef void (*btf_trace_ext4_write_begin)(void *, struct inode *, loff_t, unsigned int);
+
+typedef void (*btf_trace_ext4_da_write_begin)(void *, struct inode *, loff_t, unsigned int);
+
+typedef void (*btf_trace_ext4_write_end)(void *, struct inode *, loff_t, unsigned int, unsigned int);
+
+typedef void (*btf_trace_ext4_journalled_write_end)(void *, struct inode *, loff_t, unsigned int, unsigned int);
+
+typedef void (*btf_trace_ext4_da_write_end)(void *, struct inode *, loff_t, unsigned int, unsigned int);
+
+typedef void (*btf_trace_ext4_writepages)(void *, struct inode *, struct writeback_control *);
+
+typedef void (*btf_trace_ext4_da_write_pages)(void *, struct inode *, unsigned long, struct writeback_control *);
+
+typedef void (*btf_trace_ext4_da_write_pages_extent)(void *, struct inode *, struct ext4_map_blocks *);
+
+typedef void (*btf_trace_ext4_writepages_result)(void *, struct inode *, struct writeback_control *, int, int);
+
+typedef void (*btf_trace_ext4_read_folio)(void *, struct inode *, struct folio *);
+
+typedef void (*btf_trace_ext4_release_folio)(void *, struct inode *, struct folio *);
+
+typedef void (*btf_trace_ext4_invalidate_folio)(void *, struct folio *, size_t, size_t);
+
+typedef void (*btf_trace_ext4_journalled_invalidate_folio)(void *, struct folio *, size_t, size_t);
+
+typedef void (*btf_trace_ext4_discard_blocks)(void *, struct super_block *, unsigned long long, unsigned long long);
+
+typedef void (*btf_trace_ext4_mb_new_inode_pa)(void *, struct ext4_allocation_context *, struct ext4_prealloc_space *);
+
+typedef void (*btf_trace_ext4_mb_new_group_pa)(void *, struct ext4_allocation_context *, struct ext4_prealloc_space *);
+
+typedef void (*btf_trace_ext4_mb_release_inode_pa)(void *, struct ext4_prealloc_space *, unsigned long long, unsigned int);
+
+typedef void (*btf_trace_ext4_mb_release_group_pa)(void *, struct super_block *, struct ext4_prealloc_space *);
+
+typedef void (*btf_trace_ext4_discard_preallocations)(void *, struct inode *, unsigned int, unsigned int);
+
+typedef void (*btf_trace_ext4_mb_discard_preallocations)(void *, struct super_block *, int);
+
+typedef void (*btf_trace_ext4_request_blocks)(void *, struct ext4_allocation_request *);
+
+typedef void (*btf_trace_ext4_allocate_blocks)(void *, struct ext4_allocation_request *, unsigned long long);
+
+typedef void (*btf_trace_ext4_free_blocks)(void *, struct inode *, __u64, unsigned long, int);
+
+typedef void (*btf_trace_ext4_sync_file_enter)(void *, struct file *, int);
+
+typedef void (*btf_trace_ext4_sync_file_exit)(void *, struct inode *, int);
+
+typedef void (*btf_trace_ext4_sync_fs)(void *, struct super_block *, int);
+
+typedef void (*btf_trace_ext4_alloc_da_blocks)(void *, struct inode *);
+
+typedef void (*btf_trace_ext4_mballoc_alloc)(void *, struct ext4_allocation_context *);
+
+typedef void (*btf_trace_ext4_mballoc_prealloc)(void *, struct ext4_allocation_context *);
+
+typedef void (*btf_trace_ext4_mballoc_discard)(void *, struct super_block *, struct inode *, ext4_group_t, ext4_grpblk_t, ext4_grpblk_t);
+
+typedef void (*btf_trace_ext4_mballoc_free)(void *, struct super_block *, struct inode *, ext4_group_t, ext4_grpblk_t, ext4_grpblk_t);
+
+typedef void (*btf_trace_ext4_forget)(void *, struct inode *, int, __u64);
+
+typedef void (*btf_trace_ext4_da_update_reserve_space)(void *, struct inode *, int, int);
+
+typedef void (*btf_trace_ext4_da_reserve_space)(void *, struct inode *);
+
+typedef void (*btf_trace_ext4_da_release_space)(void *, struct inode *, int);
+
+typedef void (*btf_trace_ext4_mb_bitmap_load)(void *, struct super_block *, unsigned long);
+
+typedef void (*btf_trace_ext4_mb_buddy_bitmap_load)(void *, struct super_block *, unsigned long);
+
+typedef void (*btf_trace_ext4_load_inode_bitmap)(void *, struct super_block *, unsigned long);
+
+typedef void (*btf_trace_ext4_read_block_bitmap_load)(void *, struct super_block *, unsigned long, bool);
+
+typedef void (*btf_trace_ext4_fallocate_enter)(void *, struct inode *, loff_t, loff_t, int);
+
+typedef void (*btf_trace_ext4_punch_hole)(void *, struct inode *, loff_t, loff_t, int);
+
+typedef void (*btf_trace_ext4_zero_range)(void *, struct inode *, loff_t, loff_t, int);
+
+typedef void (*btf_trace_ext4_fallocate_exit)(void *, struct inode *, loff_t, unsigned int, int);
+
+typedef void (*btf_trace_ext4_unlink_enter)(void *, struct inode *, struct dentry *);
+
+typedef void (*btf_trace_ext4_unlink_exit)(void *, struct dentry *, int);
+
+typedef void (*btf_trace_ext4_truncate_enter)(void *, struct inode *);
+
+typedef void (*btf_trace_ext4_truncate_exit)(void *, struct inode *);
+
+typedef void (*btf_trace_ext4_ext_convert_to_initialized_enter)(void *, struct inode *, struct ext4_map_blocks *, struct ext4_extent *);
+
+typedef void (*btf_trace_ext4_ext_convert_to_initialized_fastpath)(void *, struct inode *, struct ext4_map_blocks *, struct ext4_extent *, struct ext4_extent *);
+
+typedef void (*btf_trace_ext4_ext_map_blocks_enter)(void *, struct inode *, ext4_lblk_t, unsigned int, unsigned int);
+
+typedef void (*btf_trace_ext4_ind_map_blocks_enter)(void *, struct inode *, ext4_lblk_t, unsigned int, unsigned int);
+
+typedef void (*btf_trace_ext4_ext_map_blocks_exit)(void *, struct inode *, unsigned int, struct ext4_map_blocks *, int);
+
+typedef void (*btf_trace_ext4_ind_map_blocks_exit)(void *, struct inode *, unsigned int, struct ext4_map_blocks *, int);
+
+typedef void (*btf_trace_ext4_ext_load_extent)(void *, struct inode *, ext4_lblk_t, ext4_fsblk_t);
+
+typedef void (*btf_trace_ext4_load_inode)(void *, struct super_block *, unsigned long);
+
+typedef void (*btf_trace_ext4_journal_start_sb)(void *, struct super_block *, int, int, int, int, unsigned long);
+
+typedef void (*btf_trace_ext4_journal_start_inode)(void *, struct inode *, int, int, int, int, unsigned long);
+
+typedef void (*btf_trace_ext4_journal_start_reserved)(void *, struct super_block *, int, unsigned long);
+
+typedef void (*btf_trace_ext4_trim_extent)(void *, struct super_block *, ext4_group_t, ext4_grpblk_t, ext4_grpblk_t);
+
+typedef void (*btf_trace_ext4_trim_all_free)(void *, struct super_block *, ext4_group_t, ext4_grpblk_t, ext4_grpblk_t);
+
+typedef void (*btf_trace_ext4_ext_handle_unwritten_extents)(void *, struct inode *, struct ext4_map_blocks *, int, unsigned int, ext4_fsblk_t);
+
+typedef void (*btf_trace_ext4_get_implied_cluster_alloc_exit)(void *, struct super_block *, struct ext4_map_blocks *, int);
+
+typedef void (*btf_trace_ext4_ext_show_extent)(void *, struct inode *, ext4_lblk_t, ext4_fsblk_t, unsigned short);
+
+typedef void (*btf_trace_ext4_remove_blocks)(void *, struct inode *, struct ext4_extent *, ext4_lblk_t, ext4_fsblk_t, struct partial_cluster *);
+
+typedef void (*btf_trace_ext4_ext_rm_leaf)(void *, struct inode *, ext4_lblk_t, struct ext4_extent *, struct partial_cluster *);
+
+typedef void (*btf_trace_ext4_ext_rm_idx)(void *, struct inode *, ext4_fsblk_t);
+
+typedef void (*btf_trace_ext4_ext_remove_space)(void *, struct inode *, ext4_lblk_t, ext4_lblk_t, int);
+
+typedef void (*btf_trace_ext4_ext_remove_space_done)(void *, struct inode *, ext4_lblk_t, ext4_lblk_t, int, struct partial_cluster *, __le16);
+
+typedef void (*btf_trace_ext4_es_insert_extent)(void *, struct inode *, struct extent_status *);
+
+typedef void (*btf_trace_ext4_es_cache_extent)(void *, struct inode *, struct extent_status *);
+
+typedef void (*btf_trace_ext4_es_remove_extent)(void *, struct inode *, ext4_lblk_t, ext4_lblk_t);
+
+typedef void (*btf_trace_ext4_es_find_extent_range_enter)(void *, struct inode *, ext4_lblk_t);
+
+typedef void (*btf_trace_ext4_es_find_extent_range_exit)(void *, struct inode *, struct extent_status *);
+
+typedef void (*btf_trace_ext4_es_lookup_extent_enter)(void *, struct inode *, ext4_lblk_t);
+
+typedef void (*btf_trace_ext4_es_lookup_extent_exit)(void *, struct inode *, struct extent_status *, int);
+
+typedef void (*btf_trace_ext4_es_shrink_count)(void *, struct super_block *, int, int);
+
+typedef void (*btf_trace_ext4_es_shrink_scan_enter)(void *, struct super_block *, int, int);
+
+typedef void (*btf_trace_ext4_es_shrink_scan_exit)(void *, struct super_block *, int, int);
+
+typedef void (*btf_trace_ext4_collapse_range)(void *, struct inode *, loff_t, loff_t);
+
+typedef void (*btf_trace_ext4_insert_range)(void *, struct inode *, loff_t, loff_t);
+
+typedef void (*btf_trace_ext4_es_shrink)(void *, struct super_block *, int, u64, int, int);
+
+typedef void (*btf_trace_ext4_es_insert_delayed_block)(void *, struct inode *, struct extent_status *, bool);
+
+typedef void (*btf_trace_ext4_fsmap_low_key)(void *, struct super_block *, u32, u32, u64, u64, u64);
+
+typedef void (*btf_trace_ext4_fsmap_high_key)(void *, struct super_block *, u32, u32, u64, u64, u64);
+
+typedef void (*btf_trace_ext4_fsmap_mapping)(void *, struct super_block *, u32, u32, u64, u64, u64);
+
+typedef void (*btf_trace_ext4_getfsmap_low_key)(void *, struct super_block *, struct ext4_fsmap *);
+
+typedef void (*btf_trace_ext4_getfsmap_high_key)(void *, struct super_block *, struct ext4_fsmap *);
+
+typedef void (*btf_trace_ext4_getfsmap_mapping)(void *, struct super_block *, struct ext4_fsmap *);
+
+typedef void (*btf_trace_ext4_shutdown)(void *, struct super_block *, unsigned long);
+
+typedef void (*btf_trace_ext4_error)(void *, struct super_block *, const char *, unsigned int);
+
+typedef void (*btf_trace_ext4_prefetch_bitmaps)(void *, struct super_block *, ext4_group_t, ext4_group_t, unsigned int);
+
+typedef void (*btf_trace_ext4_lazy_itable_init)(void *, struct super_block *, ext4_group_t);
+
+typedef void (*btf_trace_ext4_fc_replay_scan)(void *, struct super_block *, int, int);
+
+typedef void (*btf_trace_ext4_fc_replay)(void *, struct super_block *, int, int, int, int);
+
+typedef void (*btf_trace_ext4_fc_commit_start)(void *, struct super_block *, tid_t);
+
+typedef void (*btf_trace_ext4_fc_commit_stop)(void *, struct super_block *, int, int, tid_t);
+
+typedef void (*btf_trace_ext4_fc_stats)(void *, struct super_block *);
+
+typedef void (*btf_trace_ext4_fc_track_create)(void *, handle_t *, struct inode *, struct dentry *, int);
+
+typedef void (*btf_trace_ext4_fc_track_link)(void *, handle_t *, struct inode *, struct dentry *, int);
+
+typedef void (*btf_trace_ext4_fc_track_unlink)(void *, handle_t *, struct inode *, struct dentry *, int);
+
+typedef void (*btf_trace_ext4_fc_track_inode)(void *, handle_t *, struct inode *, int);
+
+typedef void (*btf_trace_ext4_fc_track_range)(void *, handle_t *, struct inode *, long, long, int);
+
+typedef void (*btf_trace_ext4_fc_cleanup)(void *, journal_t *, int, tid_t);
+
+typedef void (*btf_trace_ext4_update_sb)(void *, struct super_block *, ext4_fsblk_t, unsigned int);
+
+struct ext4_lazy_init {
+	unsigned long li_state;
+	struct list_head li_request_list;
+	struct mutex li_list_mtx;
+};
+
+struct ext4_err_translation {
+	int code;
+	int errno;
+};
+
+struct mount_opts {
+	int token;
+	int mount_opt;
+	int flags;
+};
+
+struct ext4_sb_encodings {
+	__u16 magic;
+	char *name;
+	unsigned int version;
+};
+
+enum stat_group {
+	STAT_READ = 0,
+	STAT_WRITE = 1,
+	STAT_DISCARD = 2,
+	STAT_FLUSH = 3,
+	NR_STAT_GROUPS = 4,
+};
+
+enum {
+	Opt_bsd_df = 0,
+	Opt_minix_df = 1,
+	Opt_grpid = 2,
+	Opt_nogrpid = 3,
+	Opt_resgid = 4,
+	Opt_resuid = 5,
+	Opt_sb = 6,
+	Opt_nouid32 = 7,
+	Opt_debug = 8,
+	Opt_removed = 9,
+	Opt_user_xattr = 10,
+	Opt_acl = 11,
+	Opt_auto_da_alloc = 12,
+	Opt_noauto_da_alloc = 13,
+	Opt_noload = 14,
+	Opt_commit = 15,
+	Opt_min_batch_time = 16,
+	Opt_max_batch_time = 17,
+	Opt_journal_dev = 18,
+	Opt_journal_path = 19,
+	Opt_journal_checksum = 20,
+	Opt_journal_async_commit = 21,
+	Opt_abort = 22,
+	Opt_data_journal = 23,
+	Opt_data_ordered = 24,
+	Opt_data_writeback = 25,
+	Opt_data_err_abort = 26,
+	Opt_data_err_ignore = 27,
+	Opt_test_dummy_encryption = 28,
+	Opt_inlinecrypt = 29,
+	Opt_usrjquota = 30,
+	Opt_grpjquota = 31,
+	Opt_quota___2 = 32,
+	Opt_noquota = 33,
+	Opt_barrier = 34,
+	Opt_nobarrier = 35,
+	Opt_err___2 = 36,
+	Opt_usrquota___2 = 37,
+	Opt_grpquota___2 = 38,
+	Opt_prjquota = 39,
+	Opt_dax = 40,
+	Opt_dax_always = 41,
+	Opt_dax_inode = 42,
+	Opt_dax_never = 43,
+	Opt_stripe = 44,
+	Opt_delalloc = 45,
+	Opt_nodelalloc = 46,
+	Opt_warn_on_error = 47,
+	Opt_nowarn_on_error = 48,
+	Opt_mblk_io_submit = 49,
+	Opt_debug_want_extra_isize = 50,
+	Opt_nomblk_io_submit = 51,
+	Opt_block_validity = 52,
+	Opt_noblock_validity = 53,
+	Opt_inode_readahead_blks = 54,
+	Opt_journal_ioprio = 55,
+	Opt_dioread_nolock = 56,
+	Opt_dioread_lock = 57,
+	Opt_discard = 58,
+	Opt_nodiscard = 59,
+	Opt_init_itable = 60,
+	Opt_noinit_itable = 61,
+	Opt_max_dir_size_kb = 62,
+	Opt_nojournal_checksum = 63,
+	Opt_nombcache = 64,
+	Opt_no_prefetch_block_bitmaps = 65,
+	Opt_mb_optimize_scan = 66,
+	Opt_errors = 67,
+	Opt_data = 68,
+	Opt_data_err = 69,
+	Opt_jqfmt = 70,
+	Opt_dax_type = 71,
+};
+
+enum {
+	IOPRIO_CLASS_NONE = 0,
+	IOPRIO_CLASS_RT = 1,
+	IOPRIO_CLASS_BE = 2,
+	IOPRIO_CLASS_IDLE = 3,
+	IOPRIO_CLASS_INVALID = 7,
+};
+
+enum {
+	IOPRIO_HINT_NONE = 0,
+	IOPRIO_HINT_DEV_DURATION_LIMIT_1 = 1,
+	IOPRIO_HINT_DEV_DURATION_LIMIT_2 = 2,
+	IOPRIO_HINT_DEV_DURATION_LIMIT_3 = 3,
+	IOPRIO_HINT_DEV_DURATION_LIMIT_4 = 4,
+	IOPRIO_HINT_DEV_DURATION_LIMIT_5 = 5,
+	IOPRIO_HINT_DEV_DURATION_LIMIT_6 = 6,
+	IOPRIO_HINT_DEV_DURATION_LIMIT_7 = 7,
+};
+
+enum {
+	I_DATA_SEM_NORMAL = 0,
+	I_DATA_SEM_OTHER = 1,
+	I_DATA_SEM_QUOTA = 2,
+	I_DATA_SEM_EA = 3,
+};
+
+struct trace_event_raw_ext4_other_inode_update_time {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	ino_t orig_ino;
+	uid_t uid;
+	gid_t gid;
+	__u16 mode;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_free_inode {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	uid_t uid;
+	gid_t gid;
+	__u64 blocks;
+	__u16 mode;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_request_inode {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t dir;
+	__u16 mode;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_allocate_inode {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	ino_t dir;
+	__u16 mode;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_evict_inode {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	int nlink;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_drop_inode {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	int drop;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_nfs_commit_metadata {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_mark_inode_dirty {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	unsigned long ip;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_begin_ordered_truncate {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	loff_t new_size;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4__write_begin {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	loff_t pos;
+	unsigned int len;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4__write_end {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	loff_t pos;
+	unsigned int len;
+	unsigned int copied;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_writepages {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	long nr_to_write;
+	long pages_skipped;
+	loff_t range_start;
+	loff_t range_end;
+	unsigned long writeback_index;
+	int sync_mode;
+	char for_kupdate;
+	char range_cyclic;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_da_write_pages {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	unsigned long first_page;
+	long nr_to_write;
+	int sync_mode;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_da_write_pages_extent {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	__u64 lblk;
+	__u32 len;
+	__u32 flags;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_writepages_result {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	int ret;
+	int pages_written;
+	long pages_skipped;
+	unsigned long writeback_index;
+	int sync_mode;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4__folio_op {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	unsigned long index;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_invalidate_folio_op {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	unsigned long index;
+	size_t offset;
+	size_t length;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_discard_blocks {
+	struct trace_entry ent;
+	dev_t dev;
+	__u64 blk;
+	__u64 count;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4__mb_new_pa {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	__u64 pa_pstart;
+	__u64 pa_lstart;
+	__u32 pa_len;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_mb_release_inode_pa {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	__u64 block;
+	__u32 count;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_mb_release_group_pa {
+	struct trace_entry ent;
+	dev_t dev;
+	__u64 pa_pstart;
+	__u32 pa_len;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_discard_preallocations {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	unsigned int len;
+	unsigned int needed;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_mb_discard_preallocations {
+	struct trace_entry ent;
+	dev_t dev;
+	int needed;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_request_blocks {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	unsigned int len;
+	__u32 logical;
+	__u32 lleft;
+	__u32 lright;
+	__u64 goal;
+	__u64 pleft;
+	__u64 pright;
+	unsigned int flags;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_allocate_blocks {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	__u64 block;
+	unsigned int len;
+	__u32 logical;
+	__u32 lleft;
+	__u32 lright;
+	__u64 goal;
+	__u64 pleft;
+	__u64 pright;
+	unsigned int flags;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_free_blocks {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	__u64 block;
+	unsigned long count;
+	int flags;
+	__u16 mode;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_sync_file_enter {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	ino_t parent;
+	int datasync;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_sync_file_exit {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_sync_fs {
+	struct trace_entry ent;
+	dev_t dev;
+	int wait;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_alloc_da_blocks {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	unsigned int data_blocks;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_mballoc_alloc {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	__u32 orig_logical;
+	int orig_start;
+	__u32 orig_group;
+	int orig_len;
+	__u32 goal_logical;
+	int goal_start;
+	__u32 goal_group;
+	int goal_len;
+	__u32 result_logical;
+	int result_start;
+	__u32 result_group;
+	int result_len;
+	__u16 found;
+	__u16 groups;
+	__u16 buddy;
+	__u16 flags;
+	__u16 tail;
+	__u8 cr;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_mballoc_prealloc {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	__u32 orig_logical;
+	int orig_start;
+	__u32 orig_group;
+	int orig_len;
+	__u32 result_logical;
+	int result_start;
+	__u32 result_group;
+	int result_len;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4__mballoc {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	int result_start;
+	__u32 result_group;
+	int result_len;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_forget {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	__u64 block;
+	int is_metadata;
+	__u16 mode;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_da_update_reserve_space {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	__u64 i_blocks;
+	int used_blocks;
+	int reserved_data_blocks;
+	int quota_claim;
+	__u16 mode;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_da_reserve_space {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	__u64 i_blocks;
+	int reserved_data_blocks;
+	__u16 mode;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_da_release_space {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	__u64 i_blocks;
+	int freed_blocks;
+	int reserved_data_blocks;
+	__u16 mode;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4__bitmap_load {
+	struct trace_entry ent;
+	dev_t dev;
+	__u32 group;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_read_block_bitmap_load {
+	struct trace_entry ent;
+	dev_t dev;
+	__u32 group;
+	bool prefetch;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4__fallocate_mode {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	loff_t offset;
+	loff_t len;
+	int mode;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_fallocate_exit {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	loff_t pos;
+	unsigned int blocks;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_unlink_enter {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	ino_t parent;
+	loff_t size;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_unlink_exit {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4__truncate {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	__u64 blocks;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_ext_convert_to_initialized_enter {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	ext4_lblk_t m_lblk;
+	unsigned int m_len;
+	ext4_lblk_t u_lblk;
+	unsigned int u_len;
+	ext4_fsblk_t u_pblk;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_ext_convert_to_initialized_fastpath {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	ext4_lblk_t m_lblk;
+	unsigned int m_len;
+	ext4_lblk_t u_lblk;
+	unsigned int u_len;
+	ext4_fsblk_t u_pblk;
+	ext4_lblk_t i_lblk;
+	unsigned int i_len;
+	ext4_fsblk_t i_pblk;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4__map_blocks_enter {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	ext4_lblk_t lblk;
+	unsigned int len;
+	unsigned int flags;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4__map_blocks_exit {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	unsigned int flags;
+	ext4_fsblk_t pblk;
+	ext4_lblk_t lblk;
+	unsigned int len;
+	unsigned int mflags;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_ext_load_extent {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	ext4_fsblk_t pblk;
+	ext4_lblk_t lblk;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_load_inode {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_journal_start_sb {
+	struct trace_entry ent;
+	dev_t dev;
+	unsigned long ip;
+	int blocks;
+	int rsv_blocks;
+	int revoke_creds;
+	int type;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_journal_start_inode {
+	struct trace_entry ent;
+	unsigned long ino;
+	dev_t dev;
+	unsigned long ip;
+	int blocks;
+	int rsv_blocks;
+	int revoke_creds;
+	int type;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_journal_start_reserved {
+	struct trace_entry ent;
+	dev_t dev;
+	unsigned long ip;
+	int blocks;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4__trim {
+	struct trace_entry ent;
+	int dev_major;
+	int dev_minor;
+	__u32 group;
+	int start;
+	int len;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_ext_handle_unwritten_extents {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	int flags;
+	ext4_lblk_t lblk;
+	ext4_fsblk_t pblk;
+	unsigned int len;
+	unsigned int allocated;
+	ext4_fsblk_t newblk;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_get_implied_cluster_alloc_exit {
+	struct trace_entry ent;
+	dev_t dev;
+	unsigned int flags;
+	ext4_lblk_t lblk;
+	ext4_fsblk_t pblk;
+	unsigned int len;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_ext_show_extent {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	ext4_fsblk_t pblk;
+	ext4_lblk_t lblk;
+	unsigned short len;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_remove_blocks {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	ext4_lblk_t from;
+	ext4_lblk_t to;
+	ext4_fsblk_t ee_pblk;
+	ext4_lblk_t ee_lblk;
+	unsigned short ee_len;
+	ext4_fsblk_t pc_pclu;
+	ext4_lblk_t pc_lblk;
+	int pc_state;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_ext_rm_leaf {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	ext4_lblk_t start;
+	ext4_lblk_t ee_lblk;
+	ext4_fsblk_t ee_pblk;
+	short ee_len;
+	ext4_fsblk_t pc_pclu;
+	ext4_lblk_t pc_lblk;
+	int pc_state;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_ext_rm_idx {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	ext4_fsblk_t pblk;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_ext_remove_space {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	ext4_lblk_t start;
+	ext4_lblk_t end;
+	int depth;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_ext_remove_space_done {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	ext4_lblk_t start;
+	ext4_lblk_t end;
+	int depth;
+	ext4_fsblk_t pc_pclu;
+	ext4_lblk_t pc_lblk;
+	int pc_state;
+	unsigned short eh_entries;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4__es_extent {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	ext4_lblk_t lblk;
+	ext4_lblk_t len;
+	ext4_fsblk_t pblk;
+	char status;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_es_remove_extent {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	loff_t lblk;
+	loff_t len;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_es_find_extent_range_enter {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	ext4_lblk_t lblk;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_es_find_extent_range_exit {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	ext4_lblk_t lblk;
+	ext4_lblk_t len;
+	ext4_fsblk_t pblk;
+	char status;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_es_lookup_extent_enter {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	ext4_lblk_t lblk;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_es_lookup_extent_exit {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	ext4_lblk_t lblk;
+	ext4_lblk_t len;
+	ext4_fsblk_t pblk;
+	char status;
+	int found;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4__es_shrink_enter {
+	struct trace_entry ent;
+	dev_t dev;
+	int nr_to_scan;
+	int cache_cnt;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_es_shrink_scan_exit {
+	struct trace_entry ent;
+	dev_t dev;
+	int nr_shrunk;
+	int cache_cnt;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_collapse_range {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	loff_t offset;
+	loff_t len;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_insert_range {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	loff_t offset;
+	loff_t len;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_es_shrink {
+	struct trace_entry ent;
+	dev_t dev;
+	int nr_shrunk;
+	unsigned long long scan_time;
+	int nr_skipped;
+	int retried;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_es_insert_delayed_block {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	ext4_lblk_t lblk;
+	ext4_lblk_t len;
+	ext4_fsblk_t pblk;
+	char status;
+	bool allocated;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_fsmap_class {
+	struct trace_entry ent;
+	dev_t dev;
+	dev_t keydev;
+	u32 agno;
+	u64 bno;
+	u64 len;
+	u64 owner;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_getfsmap_class {
+	struct trace_entry ent;
+	dev_t dev;
+	dev_t keydev;
+	u64 block;
+	u64 len;
+	u64 owner;
+	u64 flags;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_shutdown {
+	struct trace_entry ent;
+	dev_t dev;
+	unsigned int flags;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_error {
+	struct trace_entry ent;
+	dev_t dev;
+	const char *function;
+	unsigned int line;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_prefetch_bitmaps {
+	struct trace_entry ent;
+	dev_t dev;
+	__u32 group;
+	__u32 next;
+	__u32 ios;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_lazy_itable_init {
+	struct trace_entry ent;
+	dev_t dev;
+	__u32 group;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_fc_replay_scan {
+	struct trace_entry ent;
+	dev_t dev;
+	int error;
+	int off;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_fc_replay {
+	struct trace_entry ent;
+	dev_t dev;
+	int tag;
+	int ino;
+	int priv1;
+	int priv2;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_fc_commit_start {
+	struct trace_entry ent;
+	dev_t dev;
+	tid_t tid;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_fc_commit_stop {
+	struct trace_entry ent;
+	dev_t dev;
+	int nblks;
+	int reason;
+	int num_fc;
+	int num_fc_ineligible;
+	int nblks_agg;
+	tid_t tid;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_fc_stats {
+	struct trace_entry ent;
+	dev_t dev;
+	unsigned int fc_ineligible_rc[10];
+	unsigned long fc_commits;
+	unsigned long fc_ineligible_commits;
+	unsigned long fc_numblks;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_fc_track_dentry {
+	struct trace_entry ent;
+	dev_t dev;
+	tid_t t_tid;
+	ino_t i_ino;
+	tid_t i_sync_tid;
+	int error;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_fc_track_inode {
+	struct trace_entry ent;
+	dev_t dev;
+	tid_t t_tid;
+	ino_t i_ino;
+	tid_t i_sync_tid;
+	int error;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_fc_track_range {
+	struct trace_entry ent;
+	dev_t dev;
+	tid_t t_tid;
+	ino_t i_ino;
+	tid_t i_sync_tid;
+	long start;
+	long end;
+	int error;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_fc_cleanup {
+	struct trace_entry ent;
+	dev_t dev;
+	int j_fc_off;
+	int full;
+	tid_t tid;
+	char __data[0];
+};
+
+struct trace_event_raw_ext4_update_sb {
+	struct trace_entry ent;
+	dev_t dev;
+	ext4_fsblk_t fsblk;
+	unsigned int flags;
+	char __data[0];
+};
+
+struct ext4_journal_cb_entry {
+	struct list_head jce_list;
+	void (*jce_func)(struct super_block *, struct ext4_journal_cb_entry *, int);
+};
+
+struct ext4_fs_context {
+	char *s_qf_names[3];
+	struct fscrypt_dummy_policy dummy_enc_policy;
+	int s_jquota_fmt;
+	unsigned short qname_spec;
+	unsigned long vals_s_flags;
+	unsigned long mask_s_flags;
+	unsigned long journal_devnum;
+	unsigned long s_commit_interval;
+	unsigned long s_stripe;
+	unsigned int s_inode_readahead_blks;
+	unsigned int s_want_extra_isize;
+	unsigned int s_li_wait_mult;
+	unsigned int s_max_dir_size_kb;
+	unsigned int journal_ioprio;
+	unsigned int vals_s_mount_opt;
+	unsigned int mask_s_mount_opt;
+	unsigned int vals_s_mount_opt2;
+	unsigned int mask_s_mount_opt2;
+	unsigned int opt_flags;
+	unsigned int spec;
+	u32 s_max_batch_time;
+	u32 s_min_batch_time;
+	kuid_t s_resuid;
+	kgid_t s_resgid;
+	ext4_fsblk_t s_sb_block;
+};
+
+struct ext4_mount_options {
+	unsigned long s_mount_opt;
+	unsigned long s_mount_opt2;
+	kuid_t s_resuid;
+	kgid_t s_resgid;
+	unsigned long s_commit_interval;
+	u32 s_min_batch_time;
+	u32 s_max_batch_time;
+	int s_jquota_fmt;
+	char *s_qf_names[3];
+};
+
+struct trace_event_data_offsets_ext4_other_inode_update_time {};
+
+struct trace_event_data_offsets_ext4_free_inode {};
+
+struct trace_event_data_offsets_ext4_request_inode {};
+
+struct trace_event_data_offsets_ext4_allocate_inode {};
+
+struct trace_event_data_offsets_ext4_evict_inode {};
+
+struct trace_event_data_offsets_ext4_drop_inode {};
+
+struct trace_event_data_offsets_ext4_nfs_commit_metadata {};
+
+struct trace_event_data_offsets_ext4_mark_inode_dirty {};
+
+struct trace_event_data_offsets_ext4_begin_ordered_truncate {};
+
+struct trace_event_data_offsets_ext4__write_begin {};
+
+struct trace_event_data_offsets_ext4__write_end {};
+
+struct trace_event_data_offsets_ext4_writepages {};
+
+struct trace_event_data_offsets_ext4_da_write_pages {};
+
+struct trace_event_data_offsets_ext4_da_write_pages_extent {};
+
+struct trace_event_data_offsets_ext4_writepages_result {};
+
+struct trace_event_data_offsets_ext4__folio_op {};
+
+struct trace_event_data_offsets_ext4_invalidate_folio_op {};
+
+struct trace_event_data_offsets_ext4_discard_blocks {};
+
+struct trace_event_data_offsets_ext4__mb_new_pa {};
+
+struct trace_event_data_offsets_ext4_mb_release_inode_pa {};
+
+struct trace_event_data_offsets_ext4_mb_release_group_pa {};
+
+struct trace_event_data_offsets_ext4_discard_preallocations {};
+
+struct trace_event_data_offsets_ext4_mb_discard_preallocations {};
+
+struct trace_event_data_offsets_ext4_request_blocks {};
+
+struct trace_event_data_offsets_ext4_allocate_blocks {};
+
+struct trace_event_data_offsets_ext4_free_blocks {};
+
+struct trace_event_data_offsets_ext4_sync_file_enter {};
+
+struct trace_event_data_offsets_ext4_sync_file_exit {};
+
+struct trace_event_data_offsets_ext4_sync_fs {};
+
+struct trace_event_data_offsets_ext4_alloc_da_blocks {};
+
+struct trace_event_data_offsets_ext4_mballoc_alloc {};
+
+struct trace_event_data_offsets_ext4_mballoc_prealloc {};
+
+struct trace_event_data_offsets_ext4__mballoc {};
+
+struct trace_event_data_offsets_ext4_forget {};
+
+struct trace_event_data_offsets_ext4_da_update_reserve_space {};
+
+struct trace_event_data_offsets_ext4_da_reserve_space {};
+
+struct trace_event_data_offsets_ext4_da_release_space {};
+
+struct trace_event_data_offsets_ext4__bitmap_load {};
+
+struct trace_event_data_offsets_ext4_read_block_bitmap_load {};
+
+struct trace_event_data_offsets_ext4__fallocate_mode {};
+
+struct trace_event_data_offsets_ext4_fallocate_exit {};
+
+struct trace_event_data_offsets_ext4_unlink_enter {};
+
+struct trace_event_data_offsets_ext4_unlink_exit {};
+
+struct trace_event_data_offsets_ext4__truncate {};
+
+struct trace_event_data_offsets_ext4_ext_convert_to_initialized_enter {};
+
+struct trace_event_data_offsets_ext4_ext_convert_to_initialized_fastpath {};
+
+struct trace_event_data_offsets_ext4__map_blocks_enter {};
+
+struct trace_event_data_offsets_ext4__map_blocks_exit {};
+
+struct trace_event_data_offsets_ext4_ext_load_extent {};
+
+struct trace_event_data_offsets_ext4_load_inode {};
+
+struct trace_event_data_offsets_ext4_journal_start_sb {};
+
+struct trace_event_data_offsets_ext4_journal_start_inode {};
+
+struct trace_event_data_offsets_ext4_journal_start_reserved {};
+
+struct trace_event_data_offsets_ext4__trim {};
+
+struct trace_event_data_offsets_ext4_ext_handle_unwritten_extents {};
+
+struct trace_event_data_offsets_ext4_get_implied_cluster_alloc_exit {};
+
+struct trace_event_data_offsets_ext4_ext_show_extent {};
+
+struct trace_event_data_offsets_ext4_remove_blocks {};
+
+struct trace_event_data_offsets_ext4_ext_rm_leaf {};
+
+struct trace_event_data_offsets_ext4_ext_rm_idx {};
+
+struct trace_event_data_offsets_ext4_ext_remove_space {};
+
+struct trace_event_data_offsets_ext4_ext_remove_space_done {};
+
+struct trace_event_data_offsets_ext4__es_extent {};
+
+struct trace_event_data_offsets_ext4_es_remove_extent {};
+
+struct trace_event_data_offsets_ext4_es_find_extent_range_enter {};
+
+struct trace_event_data_offsets_ext4_es_find_extent_range_exit {};
+
+struct trace_event_data_offsets_ext4_es_lookup_extent_enter {};
+
+struct trace_event_data_offsets_ext4_es_lookup_extent_exit {};
+
+struct trace_event_data_offsets_ext4__es_shrink_enter {};
+
+struct trace_event_data_offsets_ext4_es_shrink_scan_exit {};
+
+struct trace_event_data_offsets_ext4_collapse_range {};
+
+struct trace_event_data_offsets_ext4_insert_range {};
+
+struct trace_event_data_offsets_ext4_es_shrink {};
+
+struct trace_event_data_offsets_ext4_es_insert_delayed_block {};
+
+struct trace_event_data_offsets_ext4_fsmap_class {};
+
+struct trace_event_data_offsets_ext4_getfsmap_class {};
+
+struct trace_event_data_offsets_ext4_shutdown {};
+
+struct trace_event_data_offsets_ext4_error {};
+
+struct trace_event_data_offsets_ext4_prefetch_bitmaps {};
+
+struct trace_event_data_offsets_ext4_lazy_itable_init {};
+
+struct trace_event_data_offsets_ext4_fc_replay_scan {};
+
+struct trace_event_data_offsets_ext4_fc_replay {};
+
+struct trace_event_data_offsets_ext4_fc_commit_start {};
+
+struct trace_event_data_offsets_ext4_fc_commit_stop {};
+
+struct trace_event_data_offsets_ext4_fc_stats {};
+
+struct trace_event_data_offsets_ext4_fc_track_dentry {};
+
+struct trace_event_data_offsets_ext4_fc_track_inode {};
+
+struct trace_event_data_offsets_ext4_fc_track_range {};
+
+struct trace_event_data_offsets_ext4_fc_cleanup {};
+
+struct trace_event_data_offsets_ext4_update_sb {};
+
+struct ext4_attr {
+	struct attribute attr;
+	short attr_id;
+	short attr_ptr;
+	unsigned short attr_size;
+	union {
+		int offset;
+		void *explicit_ptr;
+	} u;
+};
+
+enum {
+	attr_noop = 0,
+	attr_delayed_allocation_blocks = 1,
+	attr_session_write_kbytes = 2,
+	attr_lifetime_write_kbytes = 3,
+	attr_reserved_clusters = 4,
+	attr_sra_exceeded_retry_limit = 5,
+	attr_inode_readahead = 6,
+	attr_trigger_test_error = 7,
+	attr_first_error_time = 8,
+	attr_last_error_time = 9,
+	attr_feature = 10,
+	attr_pointer_ui = 11,
+	attr_pointer_ul = 12,
+	attr_pointer_u64 = 13,
+	attr_pointer_u8 = 14,
+	attr_pointer_string = 15,
+	attr_pointer_atomic = 16,
+	attr_journal_task = 17,
+};
+
+enum {
+	ptr_explicit = 0,
+	ptr_ext4_sb_info_offset = 1,
+	ptr_ext4_super_block_offset = 2,
+};
+
+struct ext4_xattr_header {
+	__le32 h_magic;
+	__le32 h_refcount;
+	__le32 h_blocks;
+	__le32 h_hash;
+	__le32 h_checksum;
+	__u32 h_reserved[3];
+};
+
+struct ext4_xattr_block_find {
+	struct ext4_xattr_search s;
+	struct buffer_head *bh;
+};
+
+enum {
+	EXT4_FC_STATUS_OK = 0,
+	EXT4_FC_STATUS_INELIGIBLE = 1,
+	EXT4_FC_STATUS_SKIPPED = 2,
+	EXT4_FC_STATUS_FAILED = 3,
+};
+
+struct ext4_fc_dentry_update {
+	int fcd_op;
+	int fcd_parent;
+	int fcd_ino;
+	struct qstr fcd_name;
+	unsigned char fcd_iname[32];
+	struct list_head fcd_list;
+	struct list_head fcd_dilist;
+};
+
+struct __track_dentry_update_args {
+	struct dentry *dentry;
+	int op;
+};
+
+struct __track_range_args {
+	ext4_lblk_t start;
+	ext4_lblk_t end;
+};
+
+struct ext4_fc_tl {
+	__le16 fc_tag;
+	__le16 fc_len;
+};
+
+struct ext4_fc_head {
+	__le32 fc_features;
+	__le32 fc_tid;
+};
+
+struct ext4_fc_tail {
+	__le32 fc_tid;
+	__le32 fc_crc;
+};
+
+struct ext4_fc_add_range {
+	__le32 fc_ino;
+	__u8 fc_ex[12];
+};
+
+struct ext4_fc_tl_mem {
+	u16 fc_tag;
+	u16 fc_len;
+};
+
+struct ext4_fc_inode {
+	__le32 fc_ino;
+	__u8 fc_raw_inode[0];
+};
+
+struct ext4_fc_del_range {
+	__le32 fc_ino;
+	__le32 fc_lblk;
+	__le32 fc_len;
+};
+
+struct dentry_info_args {
+	int parent_ino;
+	int dname_len;
+	int ino;
+	int inode_len;
+	char *dname;
+};
+
+struct ext4_fc_dentry_info {
+	__le32 fc_parent_ino;
+	__le32 fc_ino;
+	__u8 fc_dname[0];
+};
+
+struct ext4_orphan_block_tail {
+	__le32 ob_magic;
+	__le32 ob_checksum;
+};
+
+typedef struct {
+	__le32 a_version;
+} ext4_acl_header;
+
+typedef struct {
+	__le16 e_tag;
+	__le16 e_perm;
+	__le32 e_id;
+} ext4_acl_entry;
+
+struct journal_block_tag_s {
+	__be32 t_blocknr;
+	__be16 t_checksum;
+	__be16 t_flags;
+	__be32 t_blocknr_high;
+};
+
+typedef struct journal_block_tag_s journal_block_tag_t;
+
+struct journal_block_tag3_s {
+	__be32 t_blocknr;
+	__be32 t_flags;
+	__be32 t_blocknr_high;
+	__be32 t_checksum;
+};
+
+typedef struct journal_block_tag3_s journal_block_tag3_t;
+
+struct commit_header {
+	__be32 h_magic;
+	__be32 h_blocktype;
+	__be32 h_sequence;
+	unsigned char h_chksum_type;
+	unsigned char h_chksum_size;
+	unsigned char h_padding[2];
+	__be32 h_chksum[8];
+	__be64 h_commit_sec;
+	__be32 h_commit_nsec;
+};
+
+struct jbd2_journal_block_tail {
+	__be32 t_checksum;
+};
+
+struct jbd2_journal_revoke_header_s {
+	journal_header_t r_header;
+	__be32 r_count;
+};
+
+typedef struct jbd2_journal_revoke_header_s jbd2_journal_revoke_header_t;
+
+struct recovery_info {
+	tid_t start_transaction;
+	tid_t end_transaction;
+	unsigned long head_block;
+	int nr_replays;
+	int nr_revokes;
+	int nr_revoke_hits;
+};
+
+enum shrink_type {
+	SHRINK_DESTROY = 0,
+	SHRINK_BUSY_STOP = 1,
+	SHRINK_BUSY_SKIP = 2,
+};
+
+struct jbd2_revoke_table_s {
+	int hash_size;
+	int hash_shift;
+	struct list_head *hash_table;
+};
+
+struct jbd2_revoke_record_s {
+	struct list_head hash;
+	tid_t sequence;
+	unsigned long long blocknr;
+};
+
+typedef void (*btf_trace_jbd2_checkpoint)(void *, journal_t *, int);
+
+typedef void (*btf_trace_jbd2_start_commit)(void *, journal_t *, transaction_t *);
+
+typedef void (*btf_trace_jbd2_commit_locking)(void *, journal_t *, transaction_t *);
+
+typedef void (*btf_trace_jbd2_commit_flushing)(void *, journal_t *, transaction_t *);
+
+typedef void (*btf_trace_jbd2_commit_logging)(void *, journal_t *, transaction_t *);
+
+typedef void (*btf_trace_jbd2_drop_transaction)(void *, journal_t *, transaction_t *);
+
+typedef void (*btf_trace_jbd2_end_commit)(void *, journal_t *, transaction_t *);
+
+typedef void (*btf_trace_jbd2_submit_inode_data)(void *, struct inode *);
+
+typedef void (*btf_trace_jbd2_handle_start)(void *, dev_t, tid_t, unsigned int, unsigned int, int);
+
+typedef void (*btf_trace_jbd2_handle_restart)(void *, dev_t, tid_t, unsigned int, unsigned int, int);
+
+typedef void (*btf_trace_jbd2_handle_extend)(void *, dev_t, tid_t, unsigned int, unsigned int, int, int);
+
+typedef void (*btf_trace_jbd2_handle_stats)(void *, dev_t, tid_t, unsigned int, unsigned int, int, int, int, int);
+
+typedef void (*btf_trace_jbd2_run_stats)(void *, dev_t, tid_t, struct transaction_run_stats_s *);
+
+typedef void (*btf_trace_jbd2_checkpoint_stats)(void *, dev_t, tid_t, struct transaction_chp_stats_s *);
+
+typedef void (*btf_trace_jbd2_update_log_tail)(void *, journal_t *, tid_t, unsigned long, unsigned long);
+
+typedef void (*btf_trace_jbd2_write_superblock)(void *, journal_t *, blk_opf_t);
+
+typedef void (*btf_trace_jbd2_lock_buffer_stall)(void *, dev_t, unsigned long);
+
+typedef void (*btf_trace_jbd2_shrink_count)(void *, journal_t *, unsigned long, unsigned long);
+
+typedef void (*btf_trace_jbd2_shrink_scan_enter)(void *, journal_t *, unsigned long, unsigned long);
+
+typedef void (*btf_trace_jbd2_shrink_scan_exit)(void *, journal_t *, unsigned long, unsigned long, unsigned long);
+
+typedef void (*btf_trace_jbd2_shrink_checkpoint_list)(void *, journal_t *, tid_t, tid_t, tid_t, unsigned long, tid_t);
+
+struct trace_event_raw_jbd2_checkpoint {
+	struct trace_entry ent;
+	dev_t dev;
+	int result;
+	char __data[0];
+};
+
+struct trace_event_raw_jbd2_commit {
+	struct trace_entry ent;
+	dev_t dev;
+	char sync_commit;
+	tid_t transaction;
+	char __data[0];
+};
+
+struct trace_event_raw_jbd2_end_commit {
+	struct trace_entry ent;
+	dev_t dev;
+	char sync_commit;
+	tid_t transaction;
+	tid_t head;
+	char __data[0];
+};
+
+struct trace_event_raw_jbd2_submit_inode_data {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	char __data[0];
+};
+
+struct trace_event_raw_jbd2_handle_start_class {
+	struct trace_entry ent;
+	dev_t dev;
+	tid_t tid;
+	unsigned int type;
+	unsigned int line_no;
+	int requested_blocks;
+	char __data[0];
+};
+
+struct trace_event_raw_jbd2_handle_extend {
+	struct trace_entry ent;
+	dev_t dev;
+	tid_t tid;
+	unsigned int type;
+	unsigned int line_no;
+	int buffer_credits;
+	int requested_blocks;
+	char __data[0];
+};
+
+struct trace_event_raw_jbd2_handle_stats {
+	struct trace_entry ent;
+	dev_t dev;
+	tid_t tid;
+	unsigned int type;
+	unsigned int line_no;
+	int interval;
+	int sync;
+	int requested_blocks;
+	int dirtied_blocks;
+	char __data[0];
+};
+
+struct trace_event_raw_jbd2_run_stats {
+	struct trace_entry ent;
+	dev_t dev;
+	tid_t tid;
+	unsigned long wait;
+	unsigned long request_delay;
+	unsigned long running;
+	unsigned long locked;
+	unsigned long flushing;
+	unsigned long logging;
+	__u32 handle_count;
+	__u32 blocks;
+	__u32 blocks_logged;
+	char __data[0];
+};
+
+struct trace_event_raw_jbd2_checkpoint_stats {
+	struct trace_entry ent;
+	dev_t dev;
+	tid_t tid;
+	unsigned long chp_time;
+	__u32 forced_to_close;
+	__u32 written;
+	__u32 dropped;
+	char __data[0];
+};
+
+struct trace_event_raw_jbd2_update_log_tail {
+	struct trace_entry ent;
+	dev_t dev;
+	tid_t tail_sequence;
+	tid_t first_tid;
+	unsigned long block_nr;
+	unsigned long freed;
+	char __data[0];
+};
+
+struct trace_event_raw_jbd2_write_superblock {
+	struct trace_entry ent;
+	dev_t dev;
+	blk_opf_t write_flags;
+	char __data[0];
+};
+
+struct trace_event_raw_jbd2_lock_buffer_stall {
+	struct trace_entry ent;
+	dev_t dev;
+	unsigned long stall_ms;
+	char __data[0];
+};
+
+struct trace_event_raw_jbd2_journal_shrink {
+	struct trace_entry ent;
+	dev_t dev;
+	unsigned long nr_to_scan;
+	unsigned long count;
+	char __data[0];
+};
+
+struct trace_event_raw_jbd2_shrink_scan_exit {
+	struct trace_entry ent;
+	dev_t dev;
+	unsigned long nr_to_scan;
+	unsigned long nr_shrunk;
+	unsigned long count;
+	char __data[0];
+};
+
+struct trace_event_raw_jbd2_shrink_checkpoint_list {
+	struct trace_entry ent;
+	dev_t dev;
+	tid_t first_tid;
+	tid_t tid;
+	tid_t last_tid;
+	unsigned long nr_freed;
+	tid_t next_tid;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_jbd2_checkpoint {};
+
+struct trace_event_data_offsets_jbd2_commit {};
+
+struct trace_event_data_offsets_jbd2_end_commit {};
+
+struct trace_event_data_offsets_jbd2_submit_inode_data {};
+
+struct trace_event_data_offsets_jbd2_handle_start_class {};
+
+struct trace_event_data_offsets_jbd2_handle_extend {};
+
+struct trace_event_data_offsets_jbd2_handle_stats {};
+
+struct trace_event_data_offsets_jbd2_run_stats {};
+
+struct trace_event_data_offsets_jbd2_checkpoint_stats {};
+
+struct trace_event_data_offsets_jbd2_update_log_tail {};
+
+struct trace_event_data_offsets_jbd2_write_superblock {};
+
+struct trace_event_data_offsets_jbd2_lock_buffer_stall {};
+
+struct trace_event_data_offsets_jbd2_journal_shrink {};
+
+struct trace_event_data_offsets_jbd2_shrink_scan_exit {};
+
+struct trace_event_data_offsets_jbd2_shrink_checkpoint_list {};
+
+struct jbd2_stats_proc_session {
+	journal_t *journal;
+	struct transaction_stats_s *stats;
+	int start;
+	int max;
+};
+
+enum ramfs_param {
+	Opt_mode___3 = 0,
+};
+
+struct ramfs_mount_opts {
+	umode_t mode;
+};
+
+struct ramfs_fs_info {
+	struct ramfs_mount_opts mount_opts;
+};
+
+struct fat_cache {
+	struct list_head cache_list;
+	int nr_contig;
+	int fcluster;
+	int dcluster;
+};
+
+struct msdos_inode_info {
+	spinlock_t cache_lru_lock;
+	struct list_head cache_lru;
+	int nr_caches;
+	unsigned int cache_valid_id;
+	loff_t mmu_private;
+	int i_start;
+	int i_logstart;
+	int i_attrs;
+	loff_t i_pos;
+	struct hlist_node i_fat_hash;
+	struct hlist_node i_dir_hash;
+	struct rw_semaphore truncate_lock;
+	struct timespec64 i_crtime;
+	struct inode vfs_inode;
+};
+
+struct fat_mount_options {
+	kuid_t fs_uid;
+	kgid_t fs_gid;
+	unsigned short fs_fmask;
+	unsigned short fs_dmask;
+	unsigned short codepage;
+	int time_offset;
+	char *iocharset;
+	unsigned short shortname;
+	unsigned char name_check;
+	unsigned char errors;
+	unsigned char nfs;
+	unsigned short allow_utime;
+	unsigned int quiet: 1;
+	unsigned int showexec: 1;
+	unsigned int sys_immutable: 1;
+	unsigned int dotsOK: 1;
+	unsigned int isvfat: 1;
+	unsigned int utf8: 1;
+	unsigned int unicode_xlate: 1;
+	unsigned int numtail: 1;
+	unsigned int flush: 1;
+	unsigned int nocase: 1;
+	unsigned int usefree: 1;
+	unsigned int tz_set: 1;
+	unsigned int rodir: 1;
+	unsigned int discard: 1;
+	unsigned int dos1xfloppy: 1;
+};
+
+struct nls_table;
+
+struct fatent_operations;
+
+struct msdos_sb_info {
+	unsigned short sec_per_clus;
+	unsigned short cluster_bits;
+	unsigned int cluster_size;
+	unsigned char fats;
+	unsigned char fat_bits;
+	unsigned short fat_start;
+	unsigned long fat_length;
+	unsigned long dir_start;
+	unsigned short dir_entries;
+	unsigned long data_start;
+	unsigned long max_cluster;
+	unsigned long root_cluster;
+	unsigned long fsinfo_sector;
+	struct mutex fat_lock;
+	struct mutex nfs_build_inode_lock;
+	struct mutex s_lock;
+	unsigned int prev_free;
+	unsigned int free_clusters;
+	unsigned int free_clus_valid;
+	struct fat_mount_options options;
+	struct nls_table *nls_disk;
+	struct nls_table *nls_io;
+	const void *dir_ops;
+	int dir_per_block;
+	int dir_per_block_bits;
+	unsigned int vol_id;
+	int fatent_shift;
+	const struct fatent_operations *fatent_ops;
+	struct inode *fat_inode;
+	struct inode *fsinfo_inode;
+	struct ratelimit_state ratelimit;
+	spinlock_t inode_hash_lock;
+	struct hlist_head inode_hashtable[256];
+	spinlock_t dir_hash_lock;
+	struct hlist_head dir_hashtable[256];
+	unsigned int dirty;
+	struct callback_head rcu;
+};
+
+typedef u16 wchar_t;
+
+struct nls_table {
+	const char *charset;
+	const char *alias;
+	int (*uni2char)(wchar_t, unsigned char *, int);
+	int (*char2uni)(const unsigned char *, int, wchar_t *);
+	const unsigned char *charset2lower;
+	const unsigned char *charset2upper;
+	struct module *owner;
+	struct nls_table *next;
+};
+
+struct fat_entry;
+
+struct fatent_operations {
+	void (*ent_blocknr)(struct super_block *, int, int *, sector_t *);
+	void (*ent_set_ptr)(struct fat_entry *, int);
+	int (*ent_bread)(struct super_block *, struct fat_entry *, int, sector_t);
+	int (*ent_get)(struct fat_entry *);
+	void (*ent_put)(struct fat_entry *, int);
+	int (*ent_next)(struct fat_entry *);
+};
+
+struct fat_cache_id {
+	unsigned int id;
+	int nr_contig;
+	int fcluster;
+	int dcluster;
+};
+
+struct fat_entry {
+	int entry;
+	union {
+		u8 *ent12_p[2];
+		__le16 *ent16_p;
+		__le32 *ent32_p;
+	} u;
+	int nr_bhs;
+	struct buffer_head *bhs[2];
+	struct inode *fat_inode;
+};
+
+enum {
+	PARSE_INVALID = 1,
+	PARSE_NOT_LONGNAME = 2,
+	PARSE_EOF = 3,
+};
+
+enum utf16_endian {
+	UTF16_HOST_ENDIAN = 0,
+	UTF16_LITTLE_ENDIAN = 1,
+	UTF16_BIG_ENDIAN = 2,
+};
+
+struct msdos_dir_entry {
+	__u8 name[11];
+	__u8 attr;
+	__u8 lcase;
+	__u8 ctime_cs;
+	__le16 ctime;
+	__le16 cdate;
+	__le16 adate;
+	__le16 starthi;
+	__le16 time;
+	__le16 date;
+	__le16 start;
+	__le32 size;
+};
+
+typedef unsigned long long llu;
+
+struct msdos_dir_slot {
+	__u8 id;
+	__u8 name0_4[10];
+	__u8 attr;
+	__u8 reserved;
+	__u8 alias_checksum;
+	__u8 name5_10[12];
+	__le16 start;
+	__u8 name11_12[4];
+};
+
+struct __fat_dirent {
+	long d_ino;
+	__kernel_off_t d_off;
+	unsigned short d_reclen;
+	char d_name[256];
+};
+
+struct fat_ioctl_filldir_callback {
+	struct dir_context ctx;
+	void __attribute__((btf_type_tag("user"))) *dirent;
+	int result;
+	const char *longname;
+	int long_len;
+	const char *shortname;
+	int short_len;
+};
+
+struct fat_slot_info {
+	loff_t i_pos;
+	loff_t slot_off;
+	int nr_slots;
+	struct msdos_dir_entry *de;
+	struct buffer_head *bh;
+};
+
+struct compat_dirent {
+	u32 d_ino;
+	compat_off_t d_off;
+	u16 d_reclen;
+	char d_name[256];
+};
+
+struct fatent_ra {
+	sector_t cur;
+	sector_t limit;
+	unsigned int ra_blocks;
+	sector_t ra_advance;
+	sector_t ra_next;
+	sector_t ra_limit;
+};
+
+struct fat_floppy_defaults {
+	unsigned int nr_sectors;
+	unsigned int sec_per_clus;
+	unsigned int dir_entries;
+	unsigned int media;
+	unsigned int fat_length;
+};
+
+enum {
+	Opt_check_n = 0,
+	Opt_check_r = 1,
+	Opt_check_s = 2,
+	Opt_uid___3 = 3,
+	Opt_gid___4 = 4,
+	Opt_umask = 5,
+	Opt_dmask = 6,
+	Opt_fmask = 7,
+	Opt_allow_utime = 8,
+	Opt_codepage = 9,
+	Opt_usefree = 10,
+	Opt_nocase = 11,
+	Opt_quiet = 12,
+	Opt_showexec = 13,
+	Opt_debug___2 = 14,
+	Opt_immutable = 15,
+	Opt_dots = 16,
+	Opt_nodots = 17,
+	Opt_charset = 18,
+	Opt_shortname_lower = 19,
+	Opt_shortname_win95 = 20,
+	Opt_shortname_winnt = 21,
+	Opt_shortname_mixed = 22,
+	Opt_utf8_no = 23,
+	Opt_utf8_yes = 24,
+	Opt_uni_xl_no = 25,
+	Opt_uni_xl_yes = 26,
+	Opt_nonumtail_no = 27,
+	Opt_nonumtail_yes = 28,
+	Opt_obsolete = 29,
+	Opt_flush = 30,
+	Opt_tz_utc = 31,
+	Opt_rodir = 32,
+	Opt_err_cont = 33,
+	Opt_err_panic = 34,
+	Opt_err_ro = 35,
+	Opt_discard___2 = 36,
+	Opt_nfs = 37,
+	Opt_time_offset = 38,
+	Opt_nfs_stale_rw = 39,
+	Opt_nfs_nostale_ro = 40,
+	Opt_err___3 = 41,
+	Opt_dos1xfloppy = 42,
+};
+
+struct fat_boot_sector {
+	__u8 ignored[3];
+	__u8 system_id[8];
+	__u8 sector_size[2];
+	__u8 sec_per_clus;
+	__le16 reserved;
+	__u8 fats;
+	__u8 dir_entries[2];
+	__u8 sectors[2];
+	__u8 media;
+	__le16 fat_length;
+	__le16 secs_track;
+	__le16 heads;
+	__le32 hidden;
+	__le32 total_sect;
+	union {
+		struct {
+			__u8 drive_number;
+			__u8 state;
+			__u8 signature;
+			__u8 vol_id[4];
+			__u8 vol_label[11];
+			__u8 fs_type[8];
+		} fat16;
+		struct {
+			__le32 length;
+			__le16 flags;
+			__u8 version[2];
+			__le32 root_cluster;
+			__le16 info_sector;
+			__le16 backup_boot;
+			__le16 reserved2[6];
+			__u8 drive_number;
+			__u8 state;
+			__u8 signature;
+			__u8 vol_id[4];
+			__u8 vol_label[11];
+			__u8 fs_type[8];
+		} fat32;
+	};
+};
+
+struct fat_boot_fsinfo {
+	__le32 signature1;
+	__le32 reserved1[120];
+	__le32 signature2;
+	__le32 free_clusters;
+	__le32 next_cluster;
+	__le32 reserved2[4];
+};
+
+struct fat_bios_param_block {
+	u16 fat_sector_size;
+	u8 fat_sec_per_clus;
+	u16 fat_reserved;
+	u8 fat_fats;
+	u16 fat_dir_entries;
+	u16 fat_sectors;
+	u16 fat_fat_length;
+	u32 fat_total_sect;
+	u8 fat16_state;
+	u32 fat16_vol_id;
+	u32 fat32_length;
+	u32 fat32_root_cluster;
+	u16 fat32_info_sector;
+	u8 fat32_state;
+	u32 fat32_vol_id;
+};
+
+struct fat_fid {
+	u32 i_gen;
+	u32 i_pos_low;
+	u16 i_pos_hi;
+	u16 parent_i_pos_hi;
+	u32 parent_i_pos_low;
+	u32 parent_i_gen;
+};
+
+struct shortname_info {
+	unsigned char lower: 1;
+	unsigned char upper: 1;
+	unsigned char valid: 1;
+};
+
+enum exfat_error_mode {
+	EXFAT_ERRORS_CONT = 0,
+	EXFAT_ERRORS_PANIC = 1,
+	EXFAT_ERRORS_RO = 2,
+};
+
+struct exfat_chain {
+	unsigned int dir;
+	unsigned int size;
+	unsigned char flags;
+};
+
+struct exfat_hint {
+	unsigned int clu;
+	union {
+		unsigned int off;
+		int eidx;
+	};
+};
+
+struct exfat_hint_femp {
+	int eidx;
+	int count;
+	struct exfat_chain cur;
+};
+
+struct exfat_inode_info {
+	struct exfat_chain dir;
+	int entry;
+	unsigned int type;
+	unsigned short attr;
+	unsigned int start_clu;
+	unsigned char flags;
+	unsigned int version;
+	struct exfat_hint hint_bmap;
+	struct exfat_hint hint_stat;
+	struct exfat_hint_femp hint_femp;
+	spinlock_t cache_lru_lock;
+	struct list_head cache_lru;
+	int nr_caches;
+	unsigned int cache_valid_id;
+	loff_t i_size_ondisk;
+	loff_t i_size_aligned;
+	loff_t i_pos;
+	struct hlist_node i_hash_fat;
+	struct rw_semaphore truncate_lock;
+	struct inode vfs_inode;
+	struct timespec64 i_crtime;
+};
+
+struct exfat_mount_options {
+	kuid_t fs_uid;
+	kgid_t fs_gid;
+	unsigned short fs_fmask;
+	unsigned short fs_dmask;
+	unsigned short allow_utime;
+	char *iocharset;
+	enum exfat_error_mode errors;
+	unsigned int utf8: 1;
+	unsigned int sys_tz: 1;
+	unsigned int discard: 1;
+	unsigned int keep_last_dots: 1;
+	int time_offset;
+};
+
+struct exfat_sb_info {
+	unsigned long long num_sectors;
+	unsigned int num_clusters;
+	unsigned int cluster_size;
+	unsigned int cluster_size_bits;
+	unsigned int sect_per_clus;
+	unsigned int sect_per_clus_bits;
+	unsigned long long FAT1_start_sector;
+	unsigned long long FAT2_start_sector;
+	unsigned long long data_start_sector;
+	unsigned int num_FAT_sectors;
+	unsigned int root_dir;
+	unsigned int dentries_per_clu;
+	unsigned int vol_flags;
+	unsigned int vol_flags_persistent;
+	struct buffer_head *boot_bh;
+	unsigned int map_clu;
+	unsigned int map_sectors;
+	struct buffer_head **vol_amap;
+	unsigned short *vol_utbl;
+	unsigned int clu_srch_ptr;
+	unsigned int used_clusters;
+	struct mutex s_lock;
+	struct mutex bitmap_lock;
+	struct exfat_mount_options options;
+	struct nls_table *nls_io;
+	struct ratelimit_state ratelimit;
+	spinlock_t inode_hash_lock;
+	struct hlist_head inode_hashtable[256];
+};
+
+struct exfat_entry_set_cache {
+	struct super_block *sb;
+	unsigned int start_off;
+	int num_bh;
+	struct buffer_head *__bh[3];
+	struct buffer_head **bh;
+	unsigned int num_entries;
+	bool modified;
+};
+
+struct exfat_dentry {
+	__u8 type;
+	union {
+		struct {
+			__u8 num_ext;
+			__le16 checksum;
+			__le16 attr;
+			__le16 reserved1;
+			__le16 create_time;
+			__le16 create_date;
+			__le16 modify_time;
+			__le16 modify_date;
+			__le16 access_time;
+			__le16 access_date;
+			__u8 create_time_cs;
+			__u8 modify_time_cs;
+			__u8 create_tz;
+			__u8 modify_tz;
+			__u8 access_tz;
+			__u8 reserved2[7];
+		} __attribute__((packed)) file;
+		struct {
+			__u8 flags;
+			__u8 reserved1;
+			__u8 name_len;
+			__le16 name_hash;
+			__le16 reserved2;
+			__le64 valid_size;
+			__le32 reserved3;
+			__le32 start_clu;
+			__le64 size;
+		} __attribute__((packed)) stream;
+		struct {
+			__u8 flags;
+			__le16 unicode_0_14[15];
+		} __attribute__((packed)) name;
+		struct {
+			__u8 flags;
+			__u8 reserved[18];
+			__le32 start_clu;
+			__le64 size;
+		} __attribute__((packed)) bitmap;
+		struct {
+			__u8 reserved1[3];
+			__le32 checksum;
+			__u8 reserved2[12];
+			__le32 start_clu;
+			__le64 size;
+		} __attribute__((packed)) upcase;
+		struct {
+			__u8 flags;
+			__u8 vendor_guid[16];
+			__u8 vendor_defined[14];
+		} vendor_ext;
+		struct {
+			__u8 flags;
+			__u8 vendor_guid[16];
+			__u8 vendor_defined[2];
+			__le32 start_clu;
+			__le64 size;
+		} __attribute__((packed)) vendor_alloc;
+		struct {
+			__u8 flags;
+			__u8 custom_defined[18];
+			__le32 start_clu;
+			__le64 size;
+		} __attribute__((packed)) generic_secondary;
+	} dentry;
+};
+
+struct exfat_dentry_namebuf {
+	char *lfn;
+	int lfnbuf_len;
+};
+
+struct exfat_dir_entry {
+	struct exfat_chain dir;
+	int entry;
+	unsigned int type;
+	unsigned int start_clu;
+	unsigned char flags;
+	unsigned short attr;
+	loff_t size;
+	unsigned int num_subdirs;
+	struct timespec64 atime;
+	struct timespec64 mtime;
+	struct timespec64 crtime;
+	struct exfat_dentry_namebuf namebuf;
+};
+
+enum {
+	NLS_NAME_NO_LOSSY = 0,
+	NLS_NAME_LOSSY = 1,
+	NLS_NAME_OVERLEN = 2,
+};
+
+typedef u32 unicode_t;
+
+struct exfat_uni_name {
+	unsigned short name[258];
+	u16 name_hash;
+	unsigned char name_len;
+};
+
+enum exfat_validate_dentry_mode {
+	ES_MODE_STARTED = 0,
+	ES_MODE_GET_FILE_ENTRY = 1,
+	ES_MODE_GET_STRM_ENTRY = 2,
+	ES_MODE_GET_NAME_ENTRY = 3,
+	ES_MODE_GET_CRITICAL_SEC_ENTRY = 4,
+	ES_MODE_GET_BENIGN_SEC_ENTRY = 5,
+};
+
+enum {
+	DIRENT_STEP_FILE = 0,
+	DIRENT_STEP_STRM = 1,
+	DIRENT_STEP_NAME = 2,
+	DIRENT_STEP_SECD = 3,
+};
+
+enum {
+	Opt_uid___4 = 0,
+	Opt_gid___5 = 1,
+	Opt_umask___2 = 2,
+	Opt_dmask___2 = 3,
+	Opt_fmask___2 = 4,
+	Opt_allow_utime___2 = 5,
+	Opt_charset___2 = 6,
+	Opt_errors___2 = 7,
+	Opt_discard___3 = 8,
+	Opt_keep_last_dots = 9,
+	Opt_sys_tz = 10,
+	Opt_time_offset___2 = 11,
+	Opt_utf8 = 12,
+	Opt_debug___3 = 13,
+	Opt_namecase = 14,
+	Opt_codepage___2 = 15,
+};
+
+struct boot_sector {
+	__u8 jmp_boot[3];
+	__u8 fs_name[8];
+	__u8 must_be_zero[53];
+	__le64 partition_offset;
+	__le64 vol_length;
+	__le32 fat_offset;
+	__le32 fat_length;
+	__le32 clu_offset;
+	__le32 clu_count;
+	__le32 root_cluster;
+	__le32 vol_serial;
+	__u8 fs_revision[2];
+	__le16 vol_flags;
+	__u8 sect_size_bits;
+	__u8 sect_per_clus_bits;
+	__u8 num_fats;
+	__u8 drv_sel;
+	__u8 percent_in_use;
+	__u8 reserved[7];
+	__u8 boot_code[390];
+	__le16 signature;
+};
+
+struct exfat_cache {
+	struct list_head cache_list;
+	unsigned int nr_contig;
+	unsigned int fcluster;
+	unsigned int dcluster;
+};
+
+struct exfat_cache_id {
+	unsigned int id;
+	unsigned int nr_contig;
+	unsigned int fcluster;
+	unsigned int dcluster;
+};
+
+struct getdents_callback___2 {
+	struct dir_context ctx;
+	char *name;
+	u64 ino;
+	int found;
+	int sequence;
+};
+
+struct utf8_table {
+	int cmask;
+	int cval;
+	int shift;
+	long lmask;
+	long lval;
+};
+
+enum utf8_normalization {
+	UTF8_NFDI = 0,
+	UTF8_NFDICF = 1,
+	UTF8_NMAX = 2,
+};
+
+typedef const unsigned char utf8leaf_t;
+
+typedef const unsigned char utf8trie_t;
+
+struct utf8cursor {
+	const struct unicode_map *um;
+	enum utf8_normalization n;
+	const char *s;
+	const char *p;
+	const char *ss;
+	const char *sp;
+	unsigned int len;
+	unsigned int slen;
+	short ccc;
+	short nccc;
+	unsigned char hangul[12];
+};
+
+struct fuse_iqueue;
+
+struct fuse_iqueue_ops {
+	void (*wake_forget_and_unlock)(struct fuse_iqueue *, bool);
+	void (*wake_interrupt_and_unlock)(struct fuse_iqueue *, bool);
+	void (*wake_pending_and_unlock)(struct fuse_iqueue *, bool);
+	void (*release)(struct fuse_iqueue *);
+};
+
+struct fuse_forget_one {
+	uint64_t nodeid;
+	uint64_t nlookup;
+};
+
+struct fuse_forget_link {
+	struct fuse_forget_one forget_one;
+	struct fuse_forget_link *next;
+};
+
+struct fuse_iqueue {
+	unsigned int connected;
+	spinlock_t lock;
+	wait_queue_head_t waitq;
+	u64 reqctr;
+	struct list_head pending;
+	struct list_head interrupts;
+	struct fuse_forget_link forget_list_head;
+	struct fuse_forget_link *forget_list_tail;
+	int forget_batch;
+	struct fasync_struct *fasync;
+	const struct fuse_iqueue_ops *ops;
+	void *priv;
+};
+
+enum fuse_req_flag {
+	FR_ISREPLY = 0,
+	FR_FORCE = 1,
+	FR_BACKGROUND = 2,
+	FR_WAITING = 3,
+	FR_ABORTED = 4,
+	FR_INTERRUPTED = 5,
+	FR_LOCKED = 6,
+	FR_PENDING = 7,
+	FR_SENT = 8,
+	FR_FINISHED = 9,
+	FR_PRIVATE = 10,
+	FR_ASYNC = 11,
+};
+
+enum fuse_opcode {
+	FUSE_LOOKUP = 1,
+	FUSE_FORGET = 2,
+	FUSE_GETATTR = 3,
+	FUSE_SETATTR = 4,
+	FUSE_READLINK = 5,
+	FUSE_SYMLINK = 6,
+	FUSE_MKNOD = 8,
+	FUSE_MKDIR = 9,
+	FUSE_UNLINK = 10,
+	FUSE_RMDIR = 11,
+	FUSE_RENAME = 12,
+	FUSE_LINK = 13,
+	FUSE_OPEN = 14,
+	FUSE_READ = 15,
+	FUSE_WRITE = 16,
+	FUSE_STATFS = 17,
+	FUSE_RELEASE = 18,
+	FUSE_FSYNC = 20,
+	FUSE_SETXATTR = 21,
+	FUSE_GETXATTR = 22,
+	FUSE_LISTXATTR = 23,
+	FUSE_REMOVEXATTR = 24,
+	FUSE_FLUSH = 25,
+	FUSE_INIT = 26,
+	FUSE_OPENDIR = 27,
+	FUSE_READDIR = 28,
+	FUSE_RELEASEDIR = 29,
+	FUSE_FSYNCDIR = 30,
+	FUSE_GETLK = 31,
+	FUSE_SETLK = 32,
+	FUSE_SETLKW = 33,
+	FUSE_ACCESS = 34,
+	FUSE_CREATE = 35,
+	FUSE_INTERRUPT = 36,
+	FUSE_BMAP = 37,
+	FUSE_DESTROY = 38,
+	FUSE_IOCTL = 39,
+	FUSE_POLL = 40,
+	FUSE_NOTIFY_REPLY = 41,
+	FUSE_BATCH_FORGET = 42,
+	FUSE_FALLOCATE = 43,
+	FUSE_READDIRPLUS = 44,
+	FUSE_RENAME2 = 45,
+	FUSE_LSEEK = 46,
+	FUSE_COPY_FILE_RANGE = 47,
+	FUSE_SETUPMAPPING = 48,
+	FUSE_REMOVEMAPPING = 49,
+	FUSE_SYNCFS = 50,
+	FUSE_TMPFILE = 51,
+	FUSE_STATX = 52,
+	FUSE_CANONICAL_PATH = 2016,
+	CUSE_INIT = 4096,
+	CUSE_INIT_BSWAP_RESERVED = 1048576,
+	FUSE_INIT_BSWAP_RESERVED = 436207616,
+};
+
+enum fuse_notify_code {
+	FUSE_NOTIFY_POLL = 1,
+	FUSE_NOTIFY_INVAL_INODE = 2,
+	FUSE_NOTIFY_INVAL_ENTRY = 3,
+	FUSE_NOTIFY_STORE = 4,
+	FUSE_NOTIFY_RETRIEVE = 5,
+	FUSE_NOTIFY_DELETE = 6,
+	FUSE_NOTIFY_CODE_MAX = 7,
+};
+
+struct fuse_pqueue {
+	unsigned int connected;
+	spinlock_t lock;
+	struct list_head *processing;
+	struct list_head io;
+};
+
+struct fuse_conn;
+
+struct fuse_dev {
+	struct fuse_conn *fc;
+	struct fuse_pqueue pq;
+	struct list_head entry;
+};
+
+struct fuse_sync_bucket;
+
+struct fuse_conn {
+	spinlock_t lock;
+	refcount_t count;
+	atomic_t dev_count;
+	struct callback_head rcu;
+	kuid_t user_id;
+	kgid_t group_id;
+	struct pid_namespace *pid_ns;
+	struct user_namespace *user_ns;
+	unsigned int max_read;
+	unsigned int max_write;
+	unsigned int max_pages;
+	unsigned int max_pages_limit;
+	struct fuse_iqueue iq;
+	atomic64_t khctr;
+	struct rb_root polled_files;
+	unsigned int max_background;
+	unsigned int congestion_threshold;
+	unsigned int num_background;
+	unsigned int active_background;
+	struct list_head bg_queue;
+	spinlock_t bg_lock;
+	int initialized;
+	int blocked;
+	wait_queue_head_t blocked_waitq;
+	unsigned int connected;
+	bool aborted;
+	unsigned int conn_error: 1;
+	unsigned int conn_init: 1;
+	unsigned int async_read: 1;
+	unsigned int abort_err: 1;
+	unsigned int atomic_o_trunc: 1;
+	unsigned int export_support: 1;
+	unsigned int writeback_cache: 1;
+	unsigned int parallel_dirops: 1;
+	unsigned int handle_killpriv: 1;
+	unsigned int cache_symlinks: 1;
+	unsigned int legacy_opts_show: 1;
+	unsigned int handle_killpriv_v2: 1;
+	unsigned int no_open: 1;
+	unsigned int no_opendir: 1;
+	unsigned int no_fsync: 1;
+	unsigned int no_fsyncdir: 1;
+	unsigned int no_flush: 1;
+	unsigned int no_setxattr: 1;
+	unsigned int setxattr_ext: 1;
+	unsigned int no_getxattr: 1;
+	unsigned int no_listxattr: 1;
+	unsigned int no_removexattr: 1;
+	unsigned int no_lock: 1;
+	unsigned int no_access: 1;
+	unsigned int no_create: 1;
+	unsigned int no_interrupt: 1;
+	unsigned int no_bmap: 1;
+	unsigned int no_poll: 1;
+	unsigned int big_writes: 1;
+	unsigned int dont_mask: 1;
+	unsigned int no_flock: 1;
+	unsigned int no_fallocate: 1;
+	unsigned int no_rename2: 1;
+	unsigned int auto_inval_data: 1;
+	unsigned int explicit_inval_data: 1;
+	unsigned int do_readdirplus: 1;
+	unsigned int readdirplus_auto: 1;
+	unsigned int async_dio: 1;
+	unsigned int no_lseek: 1;
+	unsigned int posix_acl: 1;
+	unsigned int default_permissions: 1;
+	unsigned int allow_other: 1;
+	unsigned int no_copy_file_range: 1;
+	unsigned int destroy: 1;
+	unsigned int delete_stale: 1;
+	unsigned int no_control: 1;
+	unsigned int no_force_umount: 1;
+	unsigned int auto_submounts: 1;
+	unsigned int passthrough: 1;
+	unsigned int sync_fs: 1;
+	unsigned int init_security: 1;
+	unsigned int create_supp_group: 1;
+	unsigned int inode_dax: 1;
+	unsigned int no_tmpfile: 1;
+	unsigned int direct_io_allow_mmap: 1;
+	unsigned int no_statx: 1;
+	unsigned int no_daemon: 1;
+	atomic_t num_waiting;
+	unsigned int minor;
+	struct list_head entry;
+	dev_t dev;
+	struct dentry *ctl_dentry[5];
+	int ctl_ndents;
+	u32 scramble_key[4];
+	atomic64_t attr_version;
+	void (*release)(struct fuse_conn *);
+	struct rw_semaphore killsb;
+	struct list_head devices;
+	struct list_head mounts;
+	struct fuse_sync_bucket __attribute__((btf_type_tag("rcu"))) *curr_bucket;
+	struct idr passthrough_req;
+	spinlock_t passthrough_req_lock;
+};
+
+struct fuse_sync_bucket {
+	atomic_t count;
+	wait_queue_head_t waitq;
+	struct callback_head rcu;
+};
+
+struct fuse_in_header {
+	uint32_t len;
+	uint32_t opcode;
+	uint64_t unique;
+	uint64_t nodeid;
+	uint32_t uid;
+	uint32_t gid;
+	uint32_t pid;
+	union {
+		struct {
+			uint16_t total_extlen;
+			uint16_t padding;
+		};
+		uint32_t error_in;
+	};
+};
+
+struct fuse_out_header {
+	uint32_t len;
+	int32_t error;
+	uint64_t unique;
+};
+
+struct fuse_args;
+
+struct fuse_mount;
+
+struct fuse_req {
+	struct list_head list;
+	struct list_head intr_entry;
+	struct fuse_args *args;
+	refcount_t count;
+	unsigned long flags;
+	struct {
+		struct fuse_in_header h;
+	} in;
+	struct {
+		struct fuse_out_header h;
+	} out;
+	wait_queue_head_t waitq;
+	void *argbuf;
+	struct fuse_mount *fm;
+};
+
+struct fuse_in_arg {
+	unsigned int size;
+	const void *value;
+};
+
+struct fuse_arg {
+	unsigned int size;
+	void *value;
+};
+
+struct fuse_args {
+	uint64_t nodeid;
+	uint32_t opcode;
+	uint32_t error_in;
+	uint8_t in_numargs;
+	uint8_t out_numargs;
+	uint8_t ext_idx;
+	bool force: 1;
+	bool noreply: 1;
+	bool nocreds: 1;
+	bool in_pages: 1;
+	bool out_pages: 1;
+	bool user_pages: 1;
+	bool out_argvar: 1;
+	bool page_zeroing: 1;
+	bool page_replace: 1;
+	bool may_block: 1;
+	bool is_ext: 1;
+	struct fuse_in_arg in_args[5];
+	struct fuse_arg out_args[3];
+	void (*end)(struct fuse_mount *, struct fuse_args *, int);
+	struct path *canonical_path;
+};
+
+struct fuse_mount {
+	struct fuse_conn *fc;
+	struct super_block *sb;
+	struct list_head fc_entry;
+};
+
+struct fuse_passthrough {
+	struct file *filp;
+	struct cred *cred;
+};
+
+struct fuse_release_args;
+
+struct fuse_file {
+	struct fuse_mount *fm;
+	struct fuse_release_args *release_args;
+	u64 kh;
+	u64 fh;
+	u64 nodeid;
+	refcount_t count;
+	u32 open_flags;
+	struct list_head write_entry;
+	struct {
+		struct mutex lock;
+		loff_t pos;
+		loff_t cache_off;
+		u64 version;
+	} readdir;
+	struct fuse_passthrough passthrough;
+	struct file *backing_file;
+	struct rb_node polled_node;
+	wait_queue_head_t poll_wait;
+	bool flock: 1;
+};
+
+struct fuse_page_desc;
+
+struct fuse_args_pages {
+	struct fuse_args args;
+	struct page **pages;
+	struct fuse_page_desc *descs;
+	unsigned int num_pages;
+};
+
+struct fuse_page_desc {
+	unsigned int length;
+	unsigned int offset;
+};
+
+struct fuse_entry_bpf_out {
+	uint64_t backing_action;
+	uint64_t backing_fd;
+	uint64_t bpf_action;
+	uint64_t bpf_fd;
+};
+
+struct fuse_entry_bpf {
+	struct fuse_entry_bpf_out out;
+	struct file *backing_file;
+	struct file *bpf_file;
+};
+
+struct fuse_notify_retrieve_in {
+	uint64_t dummy1;
+	uint64_t offset;
+	uint32_t size;
+	uint32_t dummy2;
+	uint64_t dummy3;
+	uint64_t dummy4;
+};
+
+struct fuse_retrieve_args {
+	struct fuse_args_pages ap;
+	struct fuse_notify_retrieve_in inarg;
+};
+
+struct fuse_copy_state {
+	int write;
+	struct fuse_req *req;
+	struct iov_iter *iter;
+	struct pipe_buffer *pipebufs;
+	struct pipe_buffer *currbuf;
+	struct pipe_inode_info *pipe;
+	unsigned long nr_segs;
+	struct page *pg;
+	unsigned int len;
+	unsigned int offset;
+	unsigned int move_pages: 1;
+};
+
+struct fuse_batch_forget_in {
+	uint32_t count;
+	uint32_t dummy;
+};
+
+struct fuse_forget_in {
+	uint64_t nlookup;
+};
+
+struct fuse_notify_inval_entry_out {
+	uint64_t parent;
+	uint32_t namelen;
+	uint32_t flags;
+};
+
+struct fuse_notify_delete_out {
+	uint64_t parent;
+	uint64_t child;
+	uint32_t namelen;
+	uint32_t padding;
+};
+
+struct fuse_notify_poll_wakeup_out {
+	uint64_t kh;
+};
+
+struct fuse_notify_store_out {
+	uint64_t nodeid;
+	uint64_t offset;
+	uint32_t size;
+	uint32_t padding;
+};
+
+struct fuse_notify_inval_inode_out {
+	uint64_t ino;
+	int64_t off;
+	int64_t len;
+};
+
+struct fuse_notify_retrieve_out {
+	uint64_t notify_unique;
+	uint64_t nodeid;
+	uint64_t offset;
+	uint32_t size;
+	uint32_t padding;
+};
+
+struct fuse_interrupt_in {
+	uint64_t unique;
+};
+
+enum {
+	FUSE_I_ADVISE_RDPLUS = 0,
+	FUSE_I_INIT_RDPLUS = 1,
+	FUSE_I_SIZE_UNSTABLE = 2,
+	FUSE_I_BAD = 3,
+	FUSE_I_BTIME = 4,
+};
+
+enum fuse_ext_type {
+	FUSE_MAX_NR_SECCTX = 31,
+	FUSE_EXT_GROUPS = 32,
+};
+
+struct fuse_dentry {
+	union {
+		u64 time;
+		struct callback_head rcu;
+	};
+	struct path backing_path;
+	struct bpf_prog *bpf;
+};
+
+struct fuse_submount_lookup;
+
+struct fuse_inode {
+	struct inode inode;
+	struct inode *backing_inode;
+	struct bpf_prog *bpf;
+	u64 nodeid;
+	u64 nlookup;
+	struct fuse_forget_link *forget;
+	u64 i_time;
+	u32 inval_mask;
+	umode_t orig_i_mode;
+	struct timespec64 i_btime;
+	u64 orig_ino;
+	u64 attr_version;
+	union {
+		struct {
+			struct list_head write_files;
+			struct list_head queued_writes;
+			int writectr;
+			wait_queue_head_t page_waitq;
+			struct rb_root writepages;
+		};
+		struct {
+			bool cached;
+			loff_t size;
+			loff_t pos;
+			u64 version;
+			struct timespec64 mtime;
+			u64 iversion;
+			spinlock_t lock;
+		} rdc;
+	};
+	unsigned long state;
+	struct mutex mutex;
+	spinlock_t lock;
+	struct fuse_submount_lookup *submount_lookup;
+};
+
+struct fuse_submount_lookup {
+	refcount_t count;
+	u64 nodeid;
+	struct fuse_forget_link *forget;
+};
+
+struct fuse_supp_groups {
+	uint32_t nr_groups;
+	uint32_t groups[0];
+};
+
+struct fuse_attr {
+	uint64_t ino;
+	uint64_t size;
+	uint64_t blocks;
+	uint64_t atime;
+	uint64_t mtime;
+	uint64_t ctime;
+	uint32_t atimensec;
+	uint32_t mtimensec;
+	uint32_t ctimensec;
+	uint32_t mode;
+	uint32_t nlink;
+	uint32_t uid;
+	uint32_t gid;
+	uint32_t rdev;
+	uint32_t blksize;
+	uint32_t flags;
+};
+
+struct fuse_entry_out {
+	uint64_t nodeid;
+	uint64_t generation;
+	uint64_t entry_valid;
+	uint64_t attr_valid;
+	uint32_t entry_valid_nsec;
+	uint32_t attr_valid_nsec;
+	struct fuse_attr attr;
+};
+
+struct fuse_sx_time {
+	int64_t tv_sec;
+	uint32_t tv_nsec;
+	int32_t __reserved;
+};
+
+struct fuse_statx {
+	uint32_t mask;
+	uint32_t blksize;
+	uint64_t attributes;
+	uint32_t nlink;
+	uint32_t uid;
+	uint32_t gid;
+	uint16_t mode;
+	uint16_t __spare0[1];
+	uint64_t ino;
+	uint64_t size;
+	uint64_t blocks;
+	uint64_t attributes_mask;
+	struct fuse_sx_time atime;
+	struct fuse_sx_time btime;
+	struct fuse_sx_time ctime;
+	struct fuse_sx_time mtime;
+	uint32_t rdev_major;
+	uint32_t rdev_minor;
+	uint32_t dev_major;
+	uint32_t dev_minor;
+	uint64_t __spare2[14];
+};
+
+struct fuse_dummy_io {
+	int unused;
+};
+
+struct fuse_statx_in {
+	uint32_t getattr_flags;
+	uint32_t reserved;
+	uint64_t fh;
+	uint32_t sx_flags;
+	uint32_t sx_mask;
+};
+
+struct fuse_statx_out {
+	uint64_t attr_valid;
+	uint32_t attr_valid_nsec;
+	uint32_t flags;
+	uint64_t spare[2];
+	struct fuse_statx stat;
+};
+
+struct fuse_getattr_in {
+	uint32_t getattr_flags;
+	uint32_t dummy;
+	uint64_t fh;
+};
+
+struct fuse_attr_out {
+	uint64_t attr_valid;
+	uint32_t attr_valid_nsec;
+	uint32_t dummy;
+	struct fuse_attr attr;
+};
+
+struct fuse_getattr_io {
+	struct fuse_getattr_in fgi;
+	struct fuse_attr_out fao;
+};
+
+struct fuse_setattr_in {
+	uint32_t valid;
+	uint32_t padding;
+	uint64_t fh;
+	uint64_t size;
+	uint64_t lock_owner;
+	uint64_t atime;
+	uint64_t mtime;
+	uint64_t ctime;
+	uint32_t atimensec;
+	uint32_t mtimensec;
+	uint32_t ctimensec;
+	uint32_t mode;
+	uint32_t unused4;
+	uint32_t uid;
+	uint32_t gid;
+	uint32_t unused5;
+};
+
+struct fuse_setattr_io {
+	struct fuse_setattr_in fsi;
+	struct fuse_attr_out fao;
+};
+
+struct fuse_access_in {
+	uint32_t mask;
+	uint32_t padding;
+};
+
+struct fuse_err_ret {
+	void *result;
+	bool ret;
+};
+
+struct fuse_lookup_io {
+	struct fuse_entry_out feo;
+	struct fuse_entry_bpf feb;
+};
+
+struct fuse_link_in {
+	uint64_t oldnodeid;
+};
+
+struct fuse_mkdir_in {
+	uint32_t mode;
+	uint32_t umask;
+};
+
+struct fuse_mknod_in {
+	uint32_t mode;
+	uint32_t rdev;
+	uint32_t umask;
+	uint32_t padding;
+};
+
+struct fuse_rename2_in {
+	uint64_t newdir;
+	uint32_t flags;
+	uint32_t padding;
+};
+
+struct fuse_rename_in {
+	uint64_t newdir;
+};
+
+struct fuse_secctx {
+	uint32_t size;
+	uint32_t padding;
+};
+
+struct fuse_secctx_header {
+	uint32_t size;
+	uint32_t nr_secctx;
+};
+
+struct fuse_ext_header {
+	uint32_t size;
+	uint32_t type;
+};
+
+struct fuse_create_in {
+	uint32_t flags;
+	uint32_t mode;
+	uint32_t umask;
+	uint32_t open_flags;
+};
+
+struct fuse_open_out {
+	uint64_t fh;
+	uint32_t open_flags;
+	uint32_t passthrough_fh;
+};
+
+struct fuse_create_open_io {
+	struct fuse_create_in fci;
+	struct fuse_entry_out feo;
+	struct fuse_open_out foo;
+};
+
+struct fuse_fsync_in {
+	uint64_t fh;
+	uint32_t fsync_flags;
+	uint32_t padding;
+};
+
+struct fuse_read_in {
+	uint64_t fh;
+	uint64_t offset;
+	uint32_t size;
+	uint32_t read_flags;
+	uint64_t lock_owner;
+	uint32_t flags;
+	uint32_t padding;
+};
+
+struct fuse_write_in {
+	uint64_t fh;
+	uint64_t offset;
+	uint32_t size;
+	uint32_t write_flags;
+	uint64_t lock_owner;
+	uint32_t flags;
+	uint32_t padding;
+};
+
+struct fuse_write_out {
+	uint32_t size;
+	uint32_t padding;
+};
+
+struct fuse_io_priv;
+
+struct fuse_io_args {
+	union {
+		struct {
+			struct fuse_read_in in;
+			u64 attr_ver;
+		} read;
+		struct {
+			struct fuse_write_in in;
+			struct fuse_write_out out;
+			bool page_locked;
+		} write;
+	};
+	struct fuse_args_pages ap;
+	struct fuse_io_priv *io;
+	struct fuse_file *ff;
+};
+
+struct fuse_writepage_args {
+	struct fuse_io_args ia;
+	struct rb_node writepages_entry;
+	struct list_head queue_entry;
+	struct fuse_writepage_args *next;
+	struct inode *inode;
+	struct fuse_sync_bucket *bucket;
+};
+
+struct fuse_io_priv {
+	struct kref refcnt;
+	int async;
+	spinlock_t lock;
+	unsigned int reqs;
+	ssize_t bytes;
+	size_t size;
+	__u64 offset;
+	bool write;
+	bool should_dirty;
+	int err;
+	struct kiocb *iocb;
+	struct completion *done;
+	bool blocking;
+};
+
+struct fuse_release_in {
+	uint64_t fh;
+	uint32_t flags;
+	uint32_t release_flags;
+	uint64_t lock_owner;
+};
+
+struct fuse_release_args {
+	struct fuse_args args;
+	struct fuse_release_in inarg;
+	struct inode *inode;
+};
+
+struct fuse_open_in {
+	uint32_t flags;
+	uint32_t open_flags;
+};
+
+struct fuse_open_io {
+	struct fuse_open_in foi;
+	struct fuse_open_out foo;
+};
+
+struct fuse_lseek_in {
+	uint64_t fh;
+	uint64_t offset;
+	uint32_t whence;
+	uint32_t padding;
+};
+
+struct fuse_lseek_out {
+	uint64_t offset;
+};
+
+struct fuse_lseek_io {
+	struct fuse_lseek_in fli;
+	struct fuse_lseek_out flo;
+};
+
+struct fuse_read_iter_out {
+	uint64_t ret;
+};
+
+struct fuse_file_read_iter_io {
+	struct fuse_read_in fri;
+	struct fuse_read_iter_out frio;
+};
+
+struct fuse_write_iter_out {
+	uint64_t ret;
+};
+
+struct fuse_file_write_iter_io {
+	struct fuse_write_in fwi;
+	struct fuse_write_out fwo;
+	struct fuse_write_iter_out fwio;
+};
+
+struct fuse_flush_in {
+	uint64_t fh;
+	uint32_t unused;
+	uint32_t padding;
+	uint64_t lock_owner;
+};
+
+struct fuse_file_lock {
+	uint64_t start;
+	uint64_t end;
+	uint32_t type;
+	uint32_t pid;
+};
+
+struct fuse_lk_in {
+	uint64_t fh;
+	uint64_t owner;
+	struct fuse_file_lock lk;
+	uint32_t lk_flags;
+	uint32_t padding;
+};
+
+struct fuse_lk_out {
+	struct fuse_file_lock lk;
+};
+
+struct fuse_fallocate_in {
+	uint64_t fh;
+	uint64_t offset;
+	uint64_t length;
+	uint32_t mode;
+	uint32_t padding;
+};
+
+struct fuse_copy_file_range_in {
+	uint64_t fh_in;
+	uint64_t off_in;
+	uint64_t nodeid_out;
+	uint64_t fh_out;
+	uint64_t off_out;
+	uint64_t len;
+	uint64_t flags;
+};
+
+struct fuse_copy_file_range_io {
+	struct fuse_copy_file_range_in fci;
+	struct fuse_write_out fwo;
+};
+
+struct fuse_fill_wb_data {
+	struct fuse_writepage_args *wpa;
+	struct fuse_file *ff;
+	struct inode *inode;
+	struct page **orig_pages;
+	unsigned int max_pages;
+};
+
+struct fuse_poll_out {
+	uint32_t revents;
+	uint32_t padding;
+};
+
+struct fuse_poll_in {
+	uint64_t fh;
+	uint64_t kh;
+	uint32_t flags;
+	uint32_t events;
+};
+
+struct fuse_bmap_in {
+	uint64_t block;
+	uint32_t blocksize;
+	uint32_t padding;
+};
+
+struct fuse_bmap_out {
+	uint64_t block;
+};
+
+enum fuse_dax_mode {
+	FUSE_DAX_INODE_DEFAULT = 0,
+	FUSE_DAX_ALWAYS = 1,
+	FUSE_DAX_NEVER = 2,
+	FUSE_DAX_INODE_USER = 3,
+};
+
+enum {
+	OPT_SOURCE = 0,
+	OPT_SUBTYPE = 1,
+	OPT_FD = 2,
+	OPT_ROOTMODE = 3,
+	OPT_USER_ID = 4,
+	OPT_GROUP_ID = 5,
+	OPT_DEFAULT_PERMISSIONS = 6,
+	OPT_ALLOW_OTHER = 7,
+	OPT_MAX_READ = 8,
+	OPT_BLKSIZE = 9,
+	OPT_ROOT_BPF = 10,
+	OPT_ROOT_DIR = 11,
+	OPT_NO_DAEMON = 12,
+	OPT_ERR = 13,
+};
+
+struct fuse_inode_identifier {
+	u64 nodeid;
+	struct inode *backing_inode;
+};
+
+struct fuse_init_in {
+	uint32_t major;
+	uint32_t minor;
+	uint32_t max_readahead;
+	uint32_t flags;
+	uint32_t flags2;
+	uint32_t unused[11];
+};
+
+struct fuse_init_out {
+	uint32_t major;
+	uint32_t minor;
+	uint32_t max_readahead;
+	uint32_t flags;
+	uint16_t max_background;
+	uint16_t congestion_threshold;
+	uint32_t max_write;
+	uint32_t time_gran;
+	uint16_t max_pages;
+	uint16_t map_alignment;
+	uint32_t flags2;
+	uint32_t unused[7];
+};
+
+struct fuse_init_args {
+	struct fuse_args args;
+	struct fuse_init_in in;
+	struct fuse_init_out out;
+};
+
+struct fuse_kstatfs {
+	uint64_t blocks;
+	uint64_t bfree;
+	uint64_t bavail;
+	uint64_t files;
+	uint64_t ffree;
+	uint32_t bsize;
+	uint32_t namelen;
+	uint32_t frsize;
+	uint32_t padding;
+	uint32_t spare[6];
+};
+
+struct fuse_statfs_out {
+	struct fuse_kstatfs st;
+};
+
+struct fuse_fs_context {
+	int fd;
+	struct file *file;
+	unsigned int rootmode;
+	kuid_t user_id;
+	kgid_t group_id;
+	bool is_bdev: 1;
+	bool fd_present: 1;
+	bool rootmode_present: 1;
+	bool user_id_present: 1;
+	bool group_id_present: 1;
+	bool default_permissions: 1;
+	bool allow_other: 1;
+	bool destroy: 1;
+	bool no_control: 1;
+	bool no_force_umount: 1;
+	bool legacy_opts_show: 1;
+	enum fuse_dax_mode dax_mode;
+	bool no_daemon: 1;
+	unsigned int max_read;
+	unsigned int blksize;
+	const char *subtype;
+	struct bpf_prog *root_bpf;
+	struct file *root_dir;
+	struct dax_device *dax_dev;
+	void **fudptr;
+};
+
+struct fuse_syncfs_in {
+	uint64_t padding;
+};
+
+struct fuse_inode_handle {
+	u64 nodeid;
+	u32 generation;
+};
+
+struct fuse_getxattr_in {
+	uint32_t size;
+	uint32_t padding;
+};
+
+struct fuse_getxattr_out {
+	uint32_t size;
+	uint32_t padding;
+};
+
+struct fuse_getxattr_io {
+	struct fuse_getxattr_in fgi;
+	struct fuse_getxattr_out fgo;
+};
+
+struct fuse_setxattr_in {
+	uint32_t size;
+	uint32_t flags;
+	uint32_t setxattr_flags;
+	uint32_t padding;
+};
+
+enum fuse_parse_result {
+	FOUND_ERR = -1,
+	FOUND_NONE = 0,
+	FOUND_SOME = 1,
+	FOUND_ALL = 2,
+};
+
+struct fuse_dirent {
+	uint64_t ino;
+	uint64_t off;
+	uint32_t namelen;
+	uint32_t type;
+	char name[0];
+};
+
+struct fuse_direntplus {
+	struct fuse_entry_out entry_out;
+	struct fuse_dirent dirent;
+};
+
+struct fuse_read_out {
+	uint64_t offset;
+	uint32_t again;
+	uint32_t padding;
+};
+
+struct fuse_read_io {
+	struct fuse_read_in fri;
+	struct fuse_read_out fro;
+};
+
+struct fuse_ioctl_out {
+	int32_t result;
+	uint32_t flags;
+	uint32_t in_iovs;
+	uint32_t out_iovs;
+};
+
+struct fuse_ioctl_iovec {
+	uint64_t base;
+	uint64_t len;
+};
+
+struct fuse_ioctl_in {
+	uint64_t fh;
+	uint32_t flags;
+	uint32_t cmd;
+	uint64_t arg;
+	uint32_t in_size;
+	uint32_t out_size;
+};
+
+struct fuse_aio_req {
+	struct kiocb iocb;
+	struct kiocb *iocb_fuse;
+};
+
+struct fuse_bpf_aio_req {
+	struct kiocb iocb;
+	refcount_t ref;
+	struct kiocb *iocb_orig;
+};
+
+struct extfuse_ctx {
+	struct dir_context ctx;
+	u8 *addr;
+	size_t offset;
+};
+
+struct virtio_device_id;
+
+struct virtio_device;
+
+struct virtio_driver {
+	struct device_driver driver;
+	const struct virtio_device_id *id_table;
+	const unsigned int *feature_table;
+	unsigned int feature_table_size;
+	const unsigned int *feature_table_legacy;
+	unsigned int feature_table_size_legacy;
+	int (*validate)(struct virtio_device *);
+	int (*probe)(struct virtio_device *);
+	void (*scan)(struct virtio_device *);
+	void (*remove)(struct virtio_device *);
+	void (*config_changed)(struct virtio_device *);
+	int (*freeze)(struct virtio_device *);
+	int (*restore)(struct virtio_device *);
+};
+
+struct virtio_device_id {
+	__u32 device;
+	__u32 vendor;
+};
+
+struct vringh_config_ops;
+
+struct virtio_config_ops;
+
+struct virtio_device {
+	int index;
+	bool failed;
+	bool config_enabled;
+	bool config_change_pending;
+	spinlock_t config_lock;
+	spinlock_t vqs_list_lock;
+	struct device dev;
+	struct virtio_device_id id;
+	const struct virtio_config_ops *config;
+	const struct vringh_config_ops *vringh_config;
+	struct list_head vqs;
+	u64 features;
+	void *priv;
+};
+
+struct virtqueue;
+
+typedef void vq_callback_t(struct virtqueue *);
+
+struct virtio_shm_region;
+
+struct virtio_config_ops {
+	void (*get)(struct virtio_device *, unsigned int, void *, unsigned int);
+	void (*set)(struct virtio_device *, unsigned int, const void *, unsigned int);
+	u32 (*generation)(struct virtio_device *);
+	u8 (*get_status)(struct virtio_device *);
+	void (*set_status)(struct virtio_device *, u8);
+	void (*reset)(struct virtio_device *);
+	int (*find_vqs)(struct virtio_device *, unsigned int, struct virtqueue **, vq_callback_t **, const char * const *, const bool *, struct irq_affinity *);
+	void (*del_vqs)(struct virtio_device *);
+	void (*synchronize_cbs)(struct virtio_device *);
+	u64 (*get_features)(struct virtio_device *);
+	int (*finalize_features)(struct virtio_device *);
+	const char * (*bus_name)(struct virtio_device *);
+	int (*set_vq_affinity)(struct virtqueue *, const struct cpumask *);
+	const struct cpumask * (*get_vq_affinity)(struct virtio_device *, int);
+	bool (*get_shm_region)(struct virtio_device *, struct virtio_shm_region *, u8);
+	int (*disable_vq_and_reset)(struct virtqueue *);
+	int (*enable_vq_after_reset)(struct virtqueue *);
+};
+
+struct virtqueue {
+	struct list_head list;
+	void (*callback)(struct virtqueue *);
+	const char *name;
+	struct virtio_device *vdev;
+	unsigned int index;
+	unsigned int num_free;
+	unsigned int num_max;
+	bool reset;
+	void *priv;
+};
+
+struct virtio_shm_region {
+	u64 addr;
+	u64 len;
+};
+
+enum {
+	OPT_DAX = 0,
+	OPT_DAX_ENUM = 1,
+};
+
+enum {
+	VQ_HIPRIO = 0,
+	VQ_REQUEST = 1,
+};
+
+struct virtio_fs_vq;
+
+struct virtio_fs {
+	struct kref refcount;
+	struct list_head list;
+	char *tag;
+	struct virtio_fs_vq *vqs;
+	unsigned int nvqs;
+	unsigned int num_request_queues;
+	struct dax_device *dax_dev;
+	void *window_kaddr;
+	phys_addr_t window_phys_addr;
+	size_t window_len;
+};
+
+struct virtio_fs_vq {
+	spinlock_t lock;
+	struct virtqueue *vq;
+	struct work_struct done_work;
+	struct list_head queued_reqs;
+	struct list_head end_reqs;
+	struct delayed_work dispatch_work;
+	struct fuse_dev *fud;
+	bool connected;
+	long in_flight;
+	struct completion in_flight_zero;
+	char name[24];
+	long: 64;
+};
+
+struct virtio_fs_req_work {
+	struct fuse_req *req;
+	struct virtio_fs_vq *fsvq;
+	struct work_struct done_work;
+};
+
+struct virtio_fs_forget_req {
+	struct fuse_in_header ih;
+	struct fuse_forget_in arg;
+};
+
+struct virtio_fs_forget {
+	struct list_head list;
+	struct virtio_fs_forget_req req;
+};
+
+enum {
+	OVL_XINO_OFF = 0,
+	OVL_XINO_AUTO = 1,
+	OVL_XINO_ON = 2,
+};
+
+enum {
+	OVL_UUID_OFF = 0,
+	OVL_UUID_NULL = 1,
+	OVL_UUID_AUTO = 2,
+	OVL_UUID_ON = 3,
+};
+
+enum ovl_path_type {
+	__OVL_PATH_UPPER = 1,
+	__OVL_PATH_MERGE = 2,
+	__OVL_PATH_ORIGIN = 4,
+};
+
+enum ovl_xattr {
+	OVL_XATTR_OPAQUE = 0,
+	OVL_XATTR_REDIRECT = 1,
+	OVL_XATTR_ORIGIN = 2,
+	OVL_XATTR_IMPURE = 3,
+	OVL_XATTR_NLINK = 4,
+	OVL_XATTR_UPPER = 5,
+	OVL_XATTR_UUID = 6,
+	OVL_XATTR_METACOPY = 7,
+	OVL_XATTR_PROTATTR = 8,
+};
+
+enum {
+	OVL_REDIRECT_OFF = 0,
+	OVL_REDIRECT_FOLLOW = 1,
+	OVL_REDIRECT_NOFOLLOW = 2,
+	OVL_REDIRECT_ON = 3,
+};
+
+enum ovl_inode_flag {
+	OVL_IMPURE = 0,
+	OVL_WHITEOUTS = 1,
+	OVL_INDEX = 2,
+	OVL_UPPERDATA = 3,
+	OVL_CONST_INO = 4,
+	OVL_HAS_DIGEST = 5,
+	OVL_VERIFIED_DIGEST = 6,
+};
+
+enum ovl_entry_flag {
+	OVL_E_UPPER_ALIAS = 0,
+	OVL_E_OPAQUE = 1,
+	OVL_E_CONNECTED = 2,
+};
+
+struct ovl_dir_cache;
+
+struct ovl_entry;
+
+struct ovl_inode {
+	union {
+		struct ovl_dir_cache *cache;
+		const char *lowerdata_redirect;
+	};
+	const char *redirect;
+	u64 version;
+	unsigned long flags;
+	struct inode vfs_inode;
+	struct dentry *__upperdentry;
+	struct ovl_entry *oe;
+	struct mutex lock;
+};
+
+struct ovl_layer;
+
+struct ovl_path {
+	const struct ovl_layer *layer;
+	struct dentry *dentry;
+};
+
+struct ovl_entry {
+	unsigned int __numlower;
+	struct ovl_path __lowerstack[0];
+};
+
+struct ovl_sb;
+
+struct ovl_layer {
+	struct vfsmount *mnt;
+	struct inode *trap;
+	struct ovl_sb *fs;
+	int idx;
+	int fsid;
+};
+
+struct ovl_sb {
+	struct super_block *sb;
+	dev_t pseudo_dev;
+	bool bad_uuid;
+	bool is_lower;
+};
+
+struct ovl_config {
+	char *upperdir;
+	char *workdir;
+	char **lowerdirs;
+	bool default_permissions;
+	int redirect_mode;
+	int verity_mode;
+	bool index;
+	int uuid;
+	bool nfs_export;
+	int xino;
+	bool metacopy;
+	bool userxattr;
+	bool ovl_volatile;
+	bool override_creds;
+};
+
+struct ovl_fs {
+	unsigned int numlayer;
+	unsigned int numfs;
+	unsigned int numdatalayer;
+	const struct ovl_layer *layers;
+	struct ovl_sb *fs;
+	struct dentry *workbasedir;
+	struct dentry *workdir;
+	struct dentry *indexdir;
+	long namelen;
+	struct ovl_config config;
+	const struct cred *creator_cred;
+	bool tmpfile;
+	bool noxattr;
+	bool nofh;
+	bool upperdir_locked;
+	bool workdir_locked;
+	struct inode *workbasedir_trap;
+	struct inode *workdir_trap;
+	struct inode *indexdir_trap;
+	int xino_mode;
+	atomic_long_t last_ino;
+	struct dentry *whiteout;
+	bool no_shared_whiteout;
+	errseq_t errseq;
+};
+
+struct ovl_opt_set {
+	bool metacopy;
+	bool redirect;
+	bool nfs_export;
+	bool index;
+};
+
+struct ovl_fs_context_layer;
+
+struct ovl_fs_context {
+	struct path upper;
+	struct path work;
+	size_t capacity;
+	size_t nr;
+	size_t nr_data;
+	struct ovl_opt_set set;
+	struct ovl_fs_context_layer *lower;
+	char *lowerdir_all;
+};
+
+struct ovl_fs_context_layer {
+	char *name;
+	struct path path;
+};
+
+struct ovl_cattr {
+	dev_t rdev;
+	umode_t mode;
+	const char *link;
+	struct dentry *hardlink;
+};
+
+struct ovl_inode_params {
+	struct inode *newinode;
+	struct dentry *upperdentry;
+	struct ovl_entry *oe;
+	bool index;
+	char *redirect;
+	char *lowerdata_redirect;
+};
+
+enum {
+	OVL_VERITY_OFF = 0,
+	OVL_VERITY_ON = 1,
+	OVL_VERITY_REQUIRE = 2,
+};
+
+struct ovl_fb {
+	u8 version;
+	u8 magic;
+	u8 len;
+	u8 flags;
+	u8 type;
+	uuid_t uuid;
+	u32 fid[0];
+} __attribute__((packed));
+
+struct ovl_fh {
+	u8 padding[3];
+	union {
+		struct ovl_fb fb;
+		struct {
+			struct {} __empty_buf;
+			u8 buf[0];
+		};
+	};
+};
+
+struct ovl_metacopy {
+	u8 version;
+	u8 len;
+	u8 flags;
+	u8 digest_algo;
+	u8 digest[64];
+};
+
+struct ovl_lookup_data {
+	struct super_block *sb;
+	struct vfsmount *mnt;
+	struct qstr name;
+	bool is_dir;
+	bool opaque;
+	bool stop;
+	bool last;
+	char *redirect;
+	int metacopy;
+	bool absolute_redirect;
+};
+
+enum ovl_copyop {
+	OVL_COPY = 0,
+	OVL_CLONE = 1,
+	OVL_DEDUPE = 2,
+};
+
+struct ovl_aio_req {
+	struct kiocb iocb;
+	refcount_t ref;
+	struct kiocb *orig_iocb;
+};
+
+struct ovl_cache_entry {
+	unsigned int len;
+	unsigned int type;
+	u64 real_ino;
+	u64 ino;
+	struct list_head l_node;
+	struct rb_node node;
+	struct ovl_cache_entry *next_maybe_whiteout;
+	bool is_upper;
+	bool is_whiteout;
+	char name[0];
+};
+
+struct ovl_dir_cache {
+	long refcount;
+	u64 version;
+	struct list_head entries;
+	struct rb_root root;
+};
+
+struct ovl_readdir_translate {
+	struct dir_context *orig_ctx;
+	struct ovl_dir_cache *cache;
+	struct dir_context ctx;
+	u64 parent_ino;
+	int fsid;
+	int xinobits;
+	bool xinowarn;
+};
+
+struct ovl_readdir_data {
+	struct dir_context ctx;
+	struct dentry *dentry;
+	bool is_lowest;
+	struct rb_root *root;
+	struct list_head *list;
+	struct list_head middle;
+	struct ovl_cache_entry *first_maybe_whiteout;
+	int count;
+	int err;
+	bool is_upper;
+	bool d_type_supported;
+};
+
+struct ovl_dir_file {
+	bool is_real;
+	bool is_upper;
+	struct ovl_dir_cache *cache;
+	struct list_head *cursor;
+	struct file *realfile;
+	struct file *upperfile;
+};
+
+struct ovl_copy_up_ctx {
+	struct dentry *parent;
+	struct dentry *dentry;
+	struct path lowerpath;
+	struct kstat stat;
+	struct kstat pstat;
+	const char *link;
+	struct dentry *destdir;
+	struct qstr destname;
+	struct dentry *workdir;
+	bool origin;
+	bool indexed;
+	bool metacopy;
+	bool metacopy_digest;
+};
+
+struct ovl_cu_creds {
+	const struct cred *old;
+	struct cred *new;
+};
+
+enum ovl_opt {
+	Opt_lowerdir = 0,
+	Opt_lowerdir_add = 1,
+	Opt_datadir_add = 2,
+	Opt_upperdir = 3,
+	Opt_workdir = 4,
+	Opt_default_permissions = 5,
+	Opt_redirect_dir = 6,
+	Opt_index = 7,
+	Opt_uuid = 8,
+	Opt_nfs_export = 9,
+	Opt_userxattr = 10,
+	Opt_xino = 11,
+	Opt_metacopy = 12,
+	Opt_verity = 13,
+	Opt_volatile = 14,
+	Opt_override_creds = 15,
+};
+
+enum LOG_RECORD_TYPE {
+	FULL___2 = 0,
+	SAME_FILE = 1,
+	SAME_FILE_CLOSE_BLOCK = 2,
+	SAME_FILE_CLOSE_BLOCK_SHORT = 3,
+	SAME_FILE_NEXT_BLOCK = 4,
+	SAME_FILE_NEXT_BLOCK_SHORT = 5,
+};
+
+enum incfs_hash_tree_algorithm {
+	INCFS_HASH_TREE_NONE = 0,
+	INCFS_HASH_TREE_SHA256 = 1,
+};
+
+enum incfs_file_header_flags {
+	INCFS_FILE_MAPPED = 2,
+};
+
+enum FILL_PERMISSION {
+	CANT_FILL = 0,
+	CAN_FILL = 1,
+};
+
+enum incfs_compression_alg {
+	COMPRESSION_NONE = 0,
+	COMPRESSION_LZ4 = 1,
+	COMPRESSION_ZSTD = 2,
+};
+
+enum incfs_block_map_entry_flags {
+	INCFS_BLOCK_COMPRESSED_LZ4 = 1,
+	INCFS_BLOCK_COMPRESSED_ZSTD = 2,
+	INCFS_BLOCK_COMPRESSED_MASK = 7,
+};
+
+enum incfs_block_flags {
+	INCFS_BLOCK_FLAGS_NONE = 0,
+	INCFS_BLOCK_FLAGS_HASH = 1,
+};
+
+typedef struct {
+	__u8 bytes[16];
+} incfs_uuid_t;
+
+struct pending_read {
+	incfs_uuid_t file_id;
+	s64 timestamp_us;
+	atomic_t done;
+	int block_index;
+	int serial_number;
+	uid_t uid;
+	struct list_head mi_reads_list;
+	struct list_head segment_reads_list;
+	struct callback_head rcu;
+};
+
+struct full_record {
+	enum LOG_RECORD_TYPE type: 3;
+	u32 block_index: 29;
+	incfs_uuid_t file_id;
+	u64 absolute_ts_us;
+	uid_t uid;
+} __attribute__((packed));
+
+struct read_log_state {
+	u32 generation_id;
+	u32 next_offset;
+	u32 current_pass_no;
+	struct full_record base_record;
+	u64 current_record_no;
+};
+
+struct read_log {
+	void *rl_ring_buf;
+	int rl_size;
+	struct read_log_state rl_head;
+	struct read_log_state rl_tail;
+	spinlock_t rl_lock;
+	wait_queue_head_t ml_notif_wq;
+	struct delayed_work ml_wakeup_work;
+};
+
+struct mount_options {
+	unsigned int read_timeout_ms;
+	unsigned int readahead_pages;
+	unsigned int read_log_pages;
+	unsigned int read_log_wakeup_count;
+	bool report_uid;
+	char *sysfs_name;
+};
+
+struct mem_range {
+	u8 *data;
+	size_t len;
+};
+
+struct incfs_per_uid_read_timeouts;
+
+struct ZSTD_DCtx_s;
+
+typedef struct ZSTD_DCtx_s ZSTD_DCtx;
+
+typedef ZSTD_DCtx ZSTD_DStream;
+
+struct incfs_sysfs_node;
+
+struct mount_info {
+	struct super_block *mi_sb;
+	struct path mi_backing_dir_path;
+	struct dentry *mi_index_dir;
+	bool mi_index_free;
+	struct dentry *mi_incomplete_dir;
+	bool mi_incomplete_free;
+	const struct cred *mi_owner;
+	struct mount_options mi_options;
+	struct mutex mi_dir_struct_mutex;
+	wait_queue_head_t mi_pending_reads_notif_wq;
+	spinlock_t pending_read_lock;
+	struct list_head mi_reads_list_head;
+	int mi_pending_reads_count;
+	int mi_last_pending_read_number;
+	struct read_log mi_log;
+	struct mem_range pseudo_file_xattr[3];
+	wait_queue_head_t mi_blocks_written_notif_wq;
+	atomic_t mi_blocks_written;
+	spinlock_t mi_per_uid_read_timeouts_lock;
+	struct incfs_per_uid_read_timeouts *mi_per_uid_read_timeouts;
+	int mi_per_uid_read_timeouts_size;
+	struct mutex mi_zstd_workspace_mutex;
+	void *mi_zstd_workspace;
+	ZSTD_DStream *mi_zstd_stream;
+	struct delayed_work mi_zstd_cleanup_work;
+	struct incfs_sysfs_node *mi_sysfs_node;
+	struct mutex mi_le_mutex;
+	incfs_uuid_t mi_le_file_id;
+	u64 mi_le_time_us;
+	u32 mi_le_page;
+	u32 mi_le_errno;
+	uid_t mi_le_uid;
+	u32 mi_reads_failed_timed_out;
+	u32 mi_reads_failed_hash_verification;
+	u32 mi_reads_failed_other;
+	u32 mi_reads_delayed_pending;
+	u64 mi_reads_delayed_pending_us;
+	u32 mi_reads_delayed_min;
+	u64 mi_reads_delayed_min_us;
+};
+
+struct incfs_per_uid_read_timeouts {
+	__u32 uid;
+	__u32 min_time_us;
+	__u32 min_pending_time_us;
+	__u32 max_pending_time_us;
+};
+
+typedef uint16_t U16;
+
+typedef uint8_t BYTE;
+
+typedef uint32_t U32;
+
+typedef struct {
+	U16 nextState;
+	BYTE nbAdditionalBits;
+	BYTE nbBits;
+	U32 baseValue;
+} ZSTD_seqSymbol;
+
+typedef U32 HUF_DTable;
+
+typedef struct {
+	ZSTD_seqSymbol LLTable[513];
+	ZSTD_seqSymbol OFTable[257];
+	ZSTD_seqSymbol MLTable[513];
+	HUF_DTable hufTable[4097];
+	U32 rep[3];
+	U32 workspace[157];
+} ZSTD_entropyDTables_t;
+
+typedef enum {
+	ZSTD_frame = 0,
+	ZSTD_skippableFrame = 1,
+} ZSTD_frameType_e;
+
+typedef struct {
+	unsigned long long frameContentSize;
+	unsigned long long windowSize;
+	unsigned int blockSizeMax;
+	ZSTD_frameType_e frameType;
+	unsigned int headerSize;
+	unsigned int dictID;
+	unsigned int checksumFlag;
+} ZSTD_frameHeader;
+
+typedef uint64_t U64;
+
+typedef enum {
+	bt_raw = 0,
+	bt_rle = 1,
+	bt_compressed = 2,
+	bt_reserved = 3,
+} blockType_e;
+
+typedef enum {
+	ZSTDds_getFrameHeaderSize = 0,
+	ZSTDds_decodeFrameHeader = 1,
+	ZSTDds_decodeBlockHeader = 2,
+	ZSTDds_decompressBlock = 3,
+	ZSTDds_decompressLastBlock = 4,
+	ZSTDds_checkChecksum = 5,
+	ZSTDds_decodeSkippableHeader = 6,
+	ZSTDds_skipFrame = 7,
+} ZSTD_dStage;
+
+struct xxh64_state {
+	uint64_t total_len;
+	uint64_t v1;
+	uint64_t v2;
+	uint64_t v3;
+	uint64_t v4;
+	uint64_t mem64[4];
+	uint32_t memsize;
+};
+
+typedef enum {
+	ZSTD_f_zstd1 = 0,
+	ZSTD_f_zstd1_magicless = 1,
+} ZSTD_format_e;
+
+typedef enum {
+	ZSTD_d_validateChecksum = 0,
+	ZSTD_d_ignoreChecksum = 1,
+} ZSTD_forceIgnoreChecksum_e;
+
+typedef void * (*ZSTD_allocFunction)(void *, size_t);
+
+typedef void (*ZSTD_freeFunction)(void *, void *);
+
+typedef struct {
+	ZSTD_allocFunction customAlloc;
+	ZSTD_freeFunction customFree;
+	void *opaque;
+} ZSTD_customMem;
+
+typedef enum {
+	ZSTD_use_indefinitely = -1,
+	ZSTD_dont_use = 0,
+	ZSTD_use_once = 1,
+} ZSTD_dictUses_e;
+
+struct ZSTD_DDict_s;
+
+typedef struct ZSTD_DDict_s ZSTD_DDict;
+
+typedef struct {
+	const ZSTD_DDict **ddictPtrTable;
+	size_t ddictPtrTableSize;
+	size_t ddictPtrCount;
+} ZSTD_DDictHashSet;
+
+typedef enum {
+	ZSTD_rmd_refSingleDDict = 0,
+	ZSTD_rmd_refMultipleDDicts = 1,
+} ZSTD_refMultipleDDicts_e;
+
+typedef enum {
+	zdss_init = 0,
+	zdss_loadHeader = 1,
+	zdss_read = 2,
+	zdss_load = 3,
+	zdss_flush = 4,
+} ZSTD_dStreamStage;
+
+typedef enum {
+	ZSTD_bm_buffered = 0,
+	ZSTD_bm_stable = 1,
+} ZSTD_bufferMode_e;
+
+struct ZSTD_outBuffer_s {
+	void *dst;
+	size_t size;
+	size_t pos;
+};
+
+typedef struct ZSTD_outBuffer_s ZSTD_outBuffer;
+
+typedef enum {
+	ZSTD_not_in_dst = 0,
+	ZSTD_in_dst = 1,
+	ZSTD_split = 2,
+} ZSTD_litLocation_e;
+
+struct ZSTD_DCtx_s {
+	const ZSTD_seqSymbol *LLTptr;
+	const ZSTD_seqSymbol *MLTptr;
+	const ZSTD_seqSymbol *OFTptr;
+	const HUF_DTable *HUFptr;
+	ZSTD_entropyDTables_t entropy;
+	U32 workspace[640];
+	const void *previousDstEnd;
+	const void *prefixStart;
+	const void *virtualStart;
+	const void *dictEnd;
+	size_t expected;
+	ZSTD_frameHeader fParams;
+	U64 processedCSize;
+	U64 decodedSize;
+	blockType_e bType;
+	ZSTD_dStage stage;
+	U32 litEntropy;
+	U32 fseEntropy;
+	struct xxh64_state xxhState;
+	size_t headerSize;
+	ZSTD_format_e format;
+	ZSTD_forceIgnoreChecksum_e forceIgnoreChecksum;
+	U32 validateChecksum;
+	const BYTE *litPtr;
+	ZSTD_customMem customMem;
+	size_t litSize;
+	size_t rleSize;
+	size_t staticSize;
+	int bmi2;
+	ZSTD_DDict *ddictLocal;
+	const ZSTD_DDict *ddict;
+	U32 dictID;
+	int ddictIsCold;
+	ZSTD_dictUses_e dictUses;
+	ZSTD_DDictHashSet *ddictSet;
+	ZSTD_refMultipleDDicts_e refMultipleDDicts;
+	ZSTD_dStreamStage streamStage;
+	char *inBuff;
+	size_t inBuffSize;
+	size_t inPos;
+	size_t maxWindowSize;
+	char *outBuff;
+	size_t outBuffSize;
+	size_t outStart;
+	size_t outEnd;
+	size_t lhSize;
+	U32 hostageByte;
+	int noForwardProgress;
+	ZSTD_bufferMode_e outBufferMode;
+	ZSTD_outBuffer expectedOutBuffer;
+	BYTE *litBuffer;
+	const BYTE *litBufferEnd;
+	ZSTD_litLocation_e litBufferLocation;
+	BYTE litExtraBuffer[65568];
+	BYTE headerBuffer[18];
+	size_t oversizedDuration;
+};
+
+struct incfs_sysfs_node {
+	struct kobject isn_sysfs_node;
+	struct completion isn_completion;
+	struct mount_info *isn_mi;
+};
+
+struct data_file;
+
+struct inode_info {
+	struct mount_info *n_mount_info;
+	struct inode *n_backing_inode;
+	struct data_file *n_file;
+	struct inode n_vfs_inode;
+};
+
+struct data_file_segment {
+	wait_queue_head_t new_data_arrival_wq;
+	struct rw_semaphore rwsem;
+	struct list_head reads_list_head;
+};
+
+struct backing_file_context;
+
+struct mtree;
+
+struct incfs_df_signature;
+
+struct incfs_df_verity_signature;
+
+struct data_file {
+	struct backing_file_context *df_backing_file_context;
+	struct mount_info *df_mount_info;
+	incfs_uuid_t df_id;
+	struct data_file_segment df_segments[3];
+	loff_t df_metadata_off;
+	loff_t df_blockmap_off;
+	loff_t df_size;
+	u32 df_header_flags;
+	int df_data_block_count;
+	int df_total_block_count;
+	loff_t df_mapped_offset;
+	atomic_t df_data_blocks_written;
+	u32 df_initial_data_blocks_written;
+	atomic_t df_hash_blocks_written;
+	u32 df_initial_hash_blocks_written;
+	loff_t df_status_offset;
+	struct mutex df_enable_verity;
+	struct mtree *df_hash_tree;
+	struct incfs_df_signature *df_signature;
+	struct mem_range df_verity_file_digest;
+	struct incfs_df_verity_signature *df_verity_signature;
+};
+
+struct backing_file_context {
+	struct mutex bc_mutex;
+	struct file *bc_file;
+	loff_t bc_last_md_record_offset;
+	const struct cred *bc_cred;
+	bool bc_has_bad_block;
+};
+
+struct incfs_hash_alg;
+
+struct mtree {
+	struct incfs_hash_alg *alg;
+	u8 root_hash[32];
+	u32 hash_level_suboffset[8];
+	u32 hash_tree_area_size;
+	int depth;
+};
+
+struct incfs_hash_alg {
+	const char *name;
+	int digest_size;
+	enum incfs_hash_tree_algorithm id;
+	struct crypto_shash *shash;
+};
+
+struct incfs_df_signature {
+	u32 sig_size;
+	u64 sig_offset;
+	u32 hash_size;
+	u64 hash_offset;
+};
+
+struct incfs_df_verity_signature {
+	u32 size;
+	u64 offset;
+};
+
+struct same_file {
+	enum LOG_RECORD_TYPE type: 3;
+	u32 block_index: 29;
+	uid_t uid;
+	u16 relative_ts_us;
+} __attribute__((packed));
+
+struct same_file_close_block {
+	enum LOG_RECORD_TYPE type: 3;
+	u16 relative_ts_us: 13;
+	s16 block_index_delta;
+};
+
+struct same_file_close_block_short {
+	enum LOG_RECORD_TYPE type: 3;
+	u8 relative_ts_tens_us: 5;
+	s8 block_index_delta;
+} __attribute__((packed));
+
+struct same_file_next_block {
+	enum LOG_RECORD_TYPE type: 3;
+	u16 relative_ts_us: 13;
+} __attribute__((packed));
+
+struct same_file_next_block_short {
+	enum LOG_RECORD_TYPE type: 3;
+	u8 relative_ts_tens_us: 5;
+} __attribute__((packed));
+
+union log_record {
+	struct full_record full_record;
+	struct same_file same_file;
+	struct same_file_close_block same_file_close_block;
+	struct same_file_close_block_short same_file_close_block_short;
+	struct same_file_next_block same_file_next_block;
+	struct same_file_next_block_short same_file_next_block_short;
+};
+
+struct incfs_md_header {
+	__u8 h_md_entry_type;
+	__le16 h_record_size;
+	__le32 h_unused1;
+	__le64 h_next_md_offset;
+	__le64 h_unused2;
+} __attribute__((packed));
+
+struct incfs_blockmap {
+	struct incfs_md_header m_header;
+	__le64 m_base_offset;
+	__le32 m_block_count;
+} __attribute__((packed));
+
+struct incfs_file_signature {
+	struct incfs_md_header sg_header;
+	__le32 sg_sig_size;
+	__le64 sg_sig_offset;
+	__le32 sg_hash_tree_size;
+	__le64 sg_hash_tree_offset;
+} __attribute__((packed));
+
+struct incfs_status {
+	struct incfs_md_header is_header;
+	__le32 is_data_blocks_written;
+	__le32 is_hash_blocks_written;
+	__le32 is_dummy[6];
+} __attribute__((packed));
+
+struct incfs_file_verity_signature {
+	struct incfs_md_header vs_header;
+	__le32 vs_size;
+	__le64 vs_offset;
+} __attribute__((packed));
+
+struct metadata_handler {
+	loff_t md_record_offset;
+	loff_t md_prev_record_offset;
+	void *context;
+	union {
+		struct incfs_md_header md_header;
+		struct incfs_blockmap blockmap;
+		struct incfs_file_signature signature;
+		struct incfs_status status;
+		struct incfs_file_verity_signature verity_signature;
+	} md_buffer;
+	int (*handle_blockmap)(struct incfs_blockmap *, struct metadata_handler *);
+	int (*handle_signature)(struct incfs_file_signature *, struct metadata_handler *);
+	int (*handle_status)(struct incfs_status *, struct metadata_handler *);
+	int (*handle_verity_signature)(struct incfs_file_verity_signature *, struct metadata_handler *);
+};
+
+struct incfs_filled_range {
+	__u32 begin;
+	__u32 end;
+};
+
+struct incfs_blockmap_entry {
+	__le32 me_data_offset_lo;
+	__le16 me_data_offset_hi;
+	__le16 me_data_size;
+	__le16 me_flags;
+} __attribute__((packed));
+
+struct data_file_block {
+	loff_t db_backing_file_data_offset;
+	size_t db_stored_size;
+	enum incfs_compression_alg db_comp_alg;
+};
+
+struct incfs_read_data_file_timeouts {
+	u32 min_time_us;
+	u32 min_pending_time_us;
+	u32 max_pending_time_us;
+};
+
+struct ZSTD_inBuffer_s {
+	const void *src;
+	size_t size;
+	size_t pos;
+};
+
+typedef struct ZSTD_inBuffer_s ZSTD_inBuffer;
+
+typedef ZSTD_DStream zstd_dstream;
+
+typedef ZSTD_outBuffer zstd_out_buffer;
+
+typedef ZSTD_inBuffer zstd_in_buffer;
+
+struct dir_file {
+	struct mount_info *mount_info;
+	struct file *backing_dir;
+};
+
+struct incfs_file_data {
+	enum FILL_PERMISSION fd_fill_permission;
+	int fd_get_block_pos;
+	int fd_filled_data_blocks;
+	int fd_filled_hash_blocks;
+};
+
+struct incfs_get_filled_blocks_args {
+	__u64 range_buffer;
+	__u32 range_buffer_size;
+	__u32 start_index;
+	__u32 end_index;
+	__u32 total_blocks_out;
+	__u32 data_blocks_out;
+	__u32 range_buffer_size_out;
+	__u32 index_out;
+};
+
+struct incfs_fill_block {
+	__u32 block_index;
+	__u32 data_len;
+	__u64 data;
+	__u8 compression;
+	__u8 flags;
+	__u16 reserved1;
+	__u32 reserved2;
+	__u64 reserved3;
+};
+
+struct incfs_pending_read_info {
+	incfs_uuid_t file_id;
+	__u64 timestamp_us;
+	__u32 block_index;
+	__u32 serial_number;
+};
+
+struct incfs_pending_read_info2 {
+	incfs_uuid_t file_id;
+	__u64 timestamp_us;
+	__u32 block_index;
+	__u32 serial_number;
+	__u32 uid;
+	__u32 reserved;
+};
+
+enum incfs_metadata_type {
+	INCFS_MD_NONE = 0,
+	INCFS_MD_BLOCK_MAP = 1,
+	INCFS_MD_FILE_ATTR = 2,
+	INCFS_MD_SIGNATURE = 3,
+	INCFS_MD_STATUS = 4,
+	INCFS_MD_VERITY_SIGNATURE = 5,
+};
+
+struct incfs_file_header {
+	__le64 fh_magic;
+	__le64 fh_version;
+	__le16 fh_header_size;
+	__le16 fh_data_block_size;
+	__le32 fh_flags;
+	union {
+		struct {
+			__le64 fh_first_md_offset;
+			__le64 fh_file_size;
+			incfs_uuid_t fh_uuid;
+		};
+		struct {
+			__le64 fh_original_offset;
+			__le64 fh_mapped_file_size;
+			incfs_uuid_t fh_original_uuid;
+		};
+	};
+};
+
+struct signature_info {
+	u32 version;
+	enum incfs_hash_tree_algorithm hash_algorithm;
+	u8 log2_blocksize;
+	struct mem_range salt;
+	struct mem_range root_hash;
+};
+
+struct inode_search {
+	unsigned long ino;
+};
+
+struct incfs_new_file_args {
+	incfs_uuid_t file_id;
+	__u64 size;
+	__u16 mode;
+	__u16 reserved1;
+	__u32 reserved2;
+	__u64 directory_path;
+	__u64 file_name;
+	__u64 file_attr;
+	__u32 file_attr_len;
+	__u32 reserved4;
+	__u64 signature_info;
+	__u64 signature_size;
+	__u64 reserved6;
+};
+
+struct incfs_get_last_read_error_args {
+	incfs_uuid_t file_id_out;
+	__u64 time_us_out;
+	__u32 page_out;
+	__u32 errno_out;
+	__u32 uid_out;
+	__u32 reserved1;
+	__u64 reserved2;
+};
+
+struct incfs_get_read_timeouts_args {
+	__u64 timeouts_array;
+	__u32 timeouts_array_size;
+	__u32 timeouts_array_size_out;
+};
+
+struct incfs_permit_fill {
+	__u32 file_descriptor;
+};
+
+struct incfs_create_mapped_file_args {
+	__u64 size;
+	__u16 mode;
+	__u16 reserved1;
+	__u32 reserved2;
+	__u64 directory_path;
+	__u64 file_name;
+	incfs_uuid_t source_file_id;
+	__u64 source_offset;
+};
+
+struct incfs_set_read_timeouts_args {
+	__u64 timeouts_array;
+	__u32 timeouts_array_size;
+};
+
+struct pending_reads_state {
+	int last_pending_read_sn;
+};
+
+struct log_file_state {
+	struct read_log_state state;
+};
+
+struct blocks_written_file_state {
+	unsigned long blocks_written;
+};
+
+enum parse_parameter {
+	Opt_read_timeout = 0,
+	Opt_readahead_pages = 1,
+	Opt_rlog_pages = 2,
+	Opt_rlog_wakeup_cnt = 3,
+	Opt_report_uid = 4,
+	Opt_sysfs_name = 5,
+	Opt_err___4 = 6,
+};
+
+struct dentry_info {
+	struct path backing_path;
+};
+
+struct incfs_get_file_sig_args {
+	__u64 file_signature;
+	__u32 file_signature_buf_size;
+	__u32 file_signature_len_out;
+};
+
+struct incfs_get_block_count_args {
+	__u32 total_data_blocks_out;
+	__u32 filled_data_blocks_out;
+	__u32 total_hash_blocks_out;
+	__u32 filled_hash_blocks_out;
+};
+
+struct incfs_fill_blocks {
+	__u64 count;
+	__u64 fill_blocks;
+};
+
+struct inode_search___2 {
+	unsigned long ino;
+	struct dentry *backing_dentry;
+	size_t size;
+	bool verity;
+};
+
+enum {
+	Opt_uid___5 = 0,
+	Opt_gid___6 = 1,
+	Opt_mode___4 = 2,
+	Opt_err___5 = 3,
+};
+
+struct debugfs_fsdata {
+	const struct file_operations *real_fops;
+	union {
+		debugfs_automount_t automount;
+		struct {
+			refcount_t active_users;
+			struct completion active_users_drained;
+		};
+	};
+};
+
+struct debugfs_mount_opts {
+	kuid_t uid;
+	kgid_t gid;
+	umode_t mode;
+	unsigned int opts;
+};
+
+struct debugfs_fs_info {
+	struct debugfs_mount_opts mount_opts;
+};
+
+struct debugfs_reg32 {
+	char *name;
+	unsigned long offset;
+};
+
+struct debugfs_blob_wrapper {
+	void *data;
+	unsigned long size;
+};
+
+struct debugfs_regset32 {
+	const struct debugfs_reg32 *regs;
+	int nregs;
+	void *base;
+	struct device *dev;
+};
+
+struct debugfs_devm_entry {
+	int (*read)(struct seq_file *, void *);
+	struct device *dev;
+};
+
+struct tracefs_dir_ops {
+	int (*mkdir)(const char *);
+	int (*rmdir)(const char *);
+};
+
+enum {
+	TRACEFS_EVENT_INODE = 2,
+	TRACEFS_EVENT_TOP_INODE = 4,
+	TRACEFS_GID_PERM_SET = 8,
+	TRACEFS_UID_PERM_SET = 16,
+	TRACEFS_INSTANCE_INODE = 32,
+};
+
+struct tracefs_inode {
+	struct inode vfs_inode;
+	unsigned long flags;
+	void *private;
+};
+
+struct tracefs_mount_opts {
+	kuid_t uid;
+	kgid_t gid;
+	umode_t mode;
+	unsigned int opts;
+};
+
+struct tracefs_fs_info {
+	struct tracefs_mount_opts mount_opts;
+};
+
+struct eventfs_attr {
+	int mode;
+	kuid_t uid;
+	kgid_t gid;
+};
+
+struct eventfs_inode {
+	union {
+		struct list_head list;
+		struct callback_head rcu;
+	};
+	struct list_head children;
+	const struct eventfs_entry *entries;
+	const char *name;
+	struct dentry *events_dir;
+	struct eventfs_attr *entry_attrs;
+	void *data;
+	struct eventfs_attr attr;
+	struct kref kref;
+	unsigned int is_freed: 1;
+	unsigned int is_events: 1;
+	unsigned int nr_entries: 30;
+	unsigned int ino;
+};
+
+enum {
+	EVENTFS_SAVE_MODE = 65536,
+	EVENTFS_SAVE_UID = 131072,
+	EVENTFS_SAVE_GID = 262144,
+	EVENTFS_TOPLEVEL = 524288,
+};
+
+typedef __le32 f2fs_hash_t;
+
+enum page_type {
+	DATA = 0,
+	NODE = 1,
+	META = 2,
+	NR_PAGE_TYPE = 3,
+	META_FLUSH = 4,
+	IPU = 5,
+	OPU = 6,
+};
+
+enum temp_type {
+	HOT = 0,
+	WARM = 1,
+	COLD = 2,
+	NR_TEMP_TYPE = 3,
+};
+
+enum iostat_type {
+	APP_DIRECT_IO = 0,
+	APP_BUFFERED_IO = 1,
+	APP_WRITE_IO = 2,
+	APP_MAPPED_IO = 3,
+	APP_BUFFERED_CDATA_IO = 4,
+	APP_MAPPED_CDATA_IO = 5,
+	FS_DATA_IO = 6,
+	FS_CDATA_IO = 7,
+	FS_NODE_IO = 8,
+	FS_META_IO = 9,
+	FS_GC_DATA_IO = 10,
+	FS_GC_NODE_IO = 11,
+	FS_CP_DATA_IO = 12,
+	FS_CP_NODE_IO = 13,
+	FS_CP_META_IO = 14,
+	APP_DIRECT_READ_IO = 15,
+	APP_BUFFERED_READ_IO = 16,
+	APP_READ_IO = 17,
+	APP_MAPPED_READ_IO = 18,
+	APP_BUFFERED_CDATA_READ_IO = 19,
+	APP_MAPPED_CDATA_READ_IO = 20,
+	FS_DATA_READ_IO = 21,
+	FS_GDATA_READ_IO = 22,
+	FS_CDATA_READ_IO = 23,
+	FS_NODE_READ_IO = 24,
+	FS_META_READ_IO = 25,
+	FS_DISCARD_IO = 26,
+	FS_FLUSH_IO = 27,
+	FS_ZONE_RESET_IO = 28,
+	NR_IO_TYPE = 29,
+};
+
+enum {
+	FI_NEW_INODE = 0,
+	FI_DIRTY_INODE = 1,
+	FI_AUTO_RECOVER = 2,
+	FI_DIRTY_DIR = 3,
+	FI_INC_LINK = 4,
+	FI_ACL_MODE = 5,
+	FI_NO_ALLOC = 6,
+	FI_FREE_NID = 7,
+	FI_NO_EXTENT = 8,
+	FI_INLINE_XATTR = 9,
+	FI_INLINE_DATA = 10,
+	FI_INLINE_DENTRY = 11,
+	FI_APPEND_WRITE = 12,
+	FI_UPDATE_WRITE = 13,
+	FI_NEED_IPU = 14,
+	FI_ATOMIC_FILE = 15,
+	FI_DATA_EXIST = 16,
+	FI_INLINE_DOTS = 17,
+	FI_SKIP_WRITES = 18,
+	FI_OPU_WRITE = 19,
+	FI_DIRTY_FILE = 20,
+	FI_PREALLOCATED_ALL = 21,
+	FI_HOT_DATA = 22,
+	FI_EXTRA_ATTR = 23,
+	FI_PROJ_INHERIT = 24,
+	FI_PIN_FILE = 25,
+	FI_VERITY_IN_PROGRESS = 26,
+	FI_COMPRESSED_FILE = 27,
+	FI_COMPRESS_CORRUPT = 28,
+	FI_MMAP_FILE = 29,
+	FI_ENABLE_COMPRESS = 30,
+	FI_COMPRESS_RELEASED = 31,
+	FI_ALIGNED_WRITE = 32,
+	FI_COW_FILE = 33,
+	FI_ATOMIC_COMMITTED = 34,
+	FI_ATOMIC_REPLACE = 35,
+	FI_OPENED_FILE = 36,
+	FI_MAX = 37,
+};
+
+enum {
+	FAULT_KMALLOC = 0,
+	FAULT_KVMALLOC = 1,
+	FAULT_PAGE_ALLOC = 2,
+	FAULT_PAGE_GET = 3,
+	FAULT_ALLOC_BIO = 4,
+	FAULT_ALLOC_NID = 5,
+	FAULT_ORPHAN = 6,
+	FAULT_BLOCK = 7,
+	FAULT_DIR_DEPTH = 8,
+	FAULT_EVICT_INODE = 9,
+	FAULT_TRUNCATE = 10,
+	FAULT_READ_IO = 11,
+	FAULT_CHECKPOINT = 12,
+	FAULT_DISCARD = 13,
+	FAULT_WRITE_IO = 14,
+	FAULT_SLAB_ALLOC = 15,
+	FAULT_DQUOT_INIT = 16,
+	FAULT_LOCK_OP = 17,
+	FAULT_BLKADDR_VALIDITY = 18,
+	FAULT_BLKADDR_CONSISTENCE = 19,
+	FAULT_NO_SEGMENT = 20,
+	FAULT_MAX = 21,
+};
+
+enum {
+	CP_TIME = 0,
+	REQ_TIME = 1,
+	DISCARD_TIME = 2,
+	GC_TIME = 3,
+	DISABLE_TIME = 4,
+	UMOUNT_DISCARD_TIMEOUT = 5,
+	MAX_TIME = 6,
+};
+
+enum fsync_mode {
+	FSYNC_MODE_POSIX = 0,
+	FSYNC_MODE_STRICT = 1,
+	FSYNC_MODE_NOBARRIER = 2,
+};
+
+enum {
+	ORPHAN_INO = 0,
+	APPEND_INO = 1,
+	UPDATE_INO = 2,
+	TRANS_DIR_INO = 3,
+	FLUSH_INO = 4,
+	MAX_INO_ENTRY = 5,
+};
+
+enum {
+	SBI_IS_DIRTY = 0,
+	SBI_IS_CLOSE = 1,
+	SBI_NEED_FSCK = 2,
+	SBI_POR_DOING = 3,
+	SBI_NEED_SB_WRITE = 4,
+	SBI_NEED_CP = 5,
+	SBI_IS_SHUTDOWN = 6,
+	SBI_IS_RECOVERED = 7,
+	SBI_CP_DISABLED = 8,
+	SBI_CP_DISABLED_QUICK = 9,
+	SBI_QUOTA_NEED_FLUSH = 10,
+	SBI_QUOTA_SKIP_FLUSH = 11,
+	SBI_QUOTA_NEED_REPAIR = 12,
+	SBI_IS_RESIZEFS = 13,
+	SBI_IS_FREEZING = 14,
+	SBI_IS_WRITABLE = 15,
+	MAX_SBI_FLAG = 16,
+};
+
+enum f2fs_error {
+	ERROR_CORRUPTED_CLUSTER = 0,
+	ERROR_FAIL_DECOMPRESSION = 1,
+	ERROR_INVALID_BLKADDR = 2,
+	ERROR_CORRUPTED_DIRENT = 3,
+	ERROR_CORRUPTED_INODE = 4,
+	ERROR_INCONSISTENT_SUMMARY = 5,
+	ERROR_INCONSISTENT_FOOTER = 6,
+	ERROR_INCONSISTENT_SUM_TYPE = 7,
+	ERROR_CORRUPTED_JOURNAL = 8,
+	ERROR_INCONSISTENT_NODE_COUNT = 9,
+	ERROR_INCONSISTENT_BLOCK_COUNT = 10,
+	ERROR_INVALID_CURSEG = 11,
+	ERROR_INCONSISTENT_SIT = 12,
+	ERROR_CORRUPTED_VERITY_XATTR = 13,
+	ERROR_CORRUPTED_XATTR = 14,
+	ERROR_INVALID_NODE_REFERENCE = 15,
+	ERROR_INCONSISTENT_NAT = 16,
+	ERROR_MAX = 17,
+};
+
+enum extent_type {
+	EX_READ = 0,
+	EX_BLOCK_AGE = 1,
+	NR_EXTENT_CACHES = 2,
+};
+
+enum {
+	PAGE_PRIVATE_NOT_POINTER = 0,
+	PAGE_PRIVATE_ONGOING_MIGRATION = 1,
+	PAGE_PRIVATE_INLINE_INODE = 2,
+	PAGE_PRIVATE_REF_RESOURCE = 3,
+	PAGE_PRIVATE_MAX = 4,
+};
+
+enum count_type {
+	F2FS_DIRTY_DENTS = 0,
+	F2FS_DIRTY_DATA = 1,
+	F2FS_DIRTY_QDATA = 2,
+	F2FS_DIRTY_NODES = 3,
+	F2FS_DIRTY_META = 4,
+	F2FS_DIRTY_IMETA = 5,
+	F2FS_WB_CP_DATA = 6,
+	F2FS_WB_DATA = 7,
+	F2FS_RD_DATA = 8,
+	F2FS_RD_NODE = 9,
+	F2FS_RD_META = 10,
+	F2FS_DIO_WRITE = 11,
+	F2FS_DIO_READ = 12,
+	NR_COUNT_TYPE = 13,
+};
+
+struct f2fs_rwsem {
+	struct rw_semaphore internal_rwsem;
+	wait_queue_head_t read_waiters;
+};
+
+typedef u32 nid_t;
+
+struct extent_tree;
+
+struct f2fs_inode_info {
+	struct inode vfs_inode;
+	unsigned long i_flags;
+	unsigned char i_advise;
+	unsigned char i_dir_level;
+	union {
+		unsigned int i_current_depth;
+		unsigned short i_gc_failures;
+	};
+	unsigned int i_pino;
+	umode_t i_acl_mode;
+	unsigned long flags[1];
+	struct f2fs_rwsem i_sem;
+	atomic_t dirty_pages;
+	f2fs_hash_t chash;
+	unsigned int clevel;
+	struct task_struct *task;
+	struct task_struct *cp_task;
+	struct task_struct *wb_task;
+	nid_t i_xattr_nid;
+	loff_t last_disk_size;
+	spinlock_t i_size_lock;
+	struct dquot __attribute__((btf_type_tag("rcu"))) *i_dquot[3];
+	qsize_t i_reserved_quota;
+	struct list_head dirty_list;
+	struct list_head gdirty_list;
+	struct task_struct *atomic_write_task;
+	struct extent_tree *extent_tree[2];
+	union {
+		struct inode *cow_inode;
+		struct inode *atomic_inode;
+	};
+	struct f2fs_rwsem i_gc_rwsem[2];
+	struct f2fs_rwsem i_xattr_sem;
+	int i_extra_isize;
+	kprojid_t i_projid;
+	int i_inline_xattr_size;
+	struct timespec64 i_crtime;
+	struct timespec64 i_disk_time[3];
+	atomic_t i_compr_blocks;
+	unsigned char i_compress_algorithm;
+	unsigned char i_log_cluster_size;
+	unsigned char i_compress_level;
+	unsigned char i_compress_flag;
+	unsigned int i_cluster_size;
+	unsigned int atomic_write_cnt;
+	loff_t original_i_size;
+};
+
+typedef u32 block_t;
+
+struct extent_info {
+	unsigned int fofs;
+	unsigned int len;
+	union {
+		struct {
+			block_t blk;
+			unsigned int c_len;
+		};
+		struct {
+			unsigned long long age;
+			unsigned long long last_blocks;
+		};
+	};
+};
+
+struct extent_node;
+
+struct extent_tree {
+	nid_t ino;
+	enum extent_type type;
+	struct rb_root_cached root;
+	struct extent_node *cached_en;
+	struct list_head list;
+	rwlock_t lock;
+	atomic_t node_cnt;
+	bool largest_updated;
+	struct extent_info largest;
+};
+
+struct extent_node {
+	struct rb_node rb_node;
+	struct extent_info ei;
+	struct list_head list;
+	struct extent_tree *et;
+};
+
+struct f2fs_dir_entry {
+	__le32 hash_code;
+	__le32 ino;
+	__le16 name_len;
+	__u8 file_type;
+} __attribute__((packed));
+
+struct f2fs_dentry_block {
+	__u8 dentry_bitmap[27];
+	__u8 reserved[3];
+	struct f2fs_dir_entry dentry[214];
+	__u8 filename[1712];
+};
+
+struct f2fs_extent {
+	__le32 fofs;
+	__le32 blk;
+	__le32 len;
+};
+
+struct f2fs_inode {
+	__le16 i_mode;
+	__u8 i_advise;
+	__u8 i_inline;
+	__le32 i_uid;
+	__le32 i_gid;
+	__le32 i_links;
+	__le64 i_size;
+	__le64 i_blocks;
+	__le64 i_atime;
+	__le64 i_ctime;
+	__le64 i_mtime;
+	__le32 i_atime_nsec;
+	__le32 i_ctime_nsec;
+	__le32 i_mtime_nsec;
+	__le32 i_generation;
+	union {
+		__le32 i_current_depth;
+		__le16 i_gc_failures;
+	};
+	__le32 i_xattr_nid;
+	__le32 i_flags;
+	__le32 i_pino;
+	__le32 i_namelen;
+	__u8 i_name[255];
+	__u8 i_dir_level;
+	struct f2fs_extent i_ext;
+	union {
+		struct {
+			__le16 i_extra_isize;
+			__le16 i_inline_xattr_size;
+			__le32 i_projid;
+			__le32 i_inode_checksum;
+			__le64 i_crtime;
+			__le32 i_crtime_nsec;
+			__le64 i_compr_blocks;
+			__u8 i_compress_algorithm;
+			__u8 i_log_cluster_size;
+			__le16 i_compress_flag;
+			__le32 i_extra_end[0];
+		} __attribute__((packed));
+		__le32 i_addr[923];
+	};
+	__le32 i_nid[5];
+};
+
+struct direct_node {
+	__le32 addr[1018];
+};
+
+struct indirect_node {
+	__le32 nid[1018];
+};
+
+struct node_footer {
+	__le32 nid;
+	__le32 ino;
+	__le32 flag;
+	__le64 cp_ver;
+	__le32 next_blkaddr;
+} __attribute__((packed));
+
+struct f2fs_node {
+	union {
+		struct f2fs_inode i;
+		struct direct_node dn;
+		struct indirect_node in;
+	};
+	struct node_footer footer;
+};
+
+struct ckpt_req_control {
+	struct task_struct *f2fs_issue_ckpt;
+	int ckpt_thread_ioprio;
+	wait_queue_head_t ckpt_wait_queue;
+	atomic_t issued_ckpt;
+	atomic_t total_ckpt;
+	atomic_t queued_ckpt;
+	struct llist_head issue_list;
+	spinlock_t stat_lock;
+	unsigned int cur_time;
+	unsigned int peak_time;
+};
+
+struct inode_management {
+	struct xarray ino_root;
+	spinlock_t ino_lock;
+	struct list_head ino_list;
+	unsigned long ino_num;
+};
+
+struct extent_tree_info {
+	struct xarray extent_tree_root;
+	struct mutex extent_tree_lock;
+	struct list_head extent_list;
+	spinlock_t extent_lock;
+	atomic_t total_ext_tree;
+	struct list_head zombie_list;
+	atomic_t total_zombie_tree;
+	atomic_t total_ext_node;
+};
+
+struct f2fs_mount_info {
+	unsigned int opt;
+	block_t root_reserved_blocks;
+	kuid_t s_resuid;
+	kgid_t s_resgid;
+	int active_logs;
+	int inline_xattr_size;
+	char *s_qf_names[3];
+	int s_jquota_fmt;
+	int alloc_mode;
+	int fsync_mode;
+	int fs_mode;
+	int bggc_mode;
+	int memory_mode;
+	int errors;
+	int discard_unit;
+	struct fscrypt_dummy_policy dummy_enc_policy;
+	block_t unusable_cap_perc;
+	block_t unusable_cap;
+	unsigned char compress_algorithm;
+	unsigned char compress_log_size;
+	unsigned char compress_level;
+	bool compress_chksum;
+	unsigned char compress_ext_cnt;
+	unsigned char nocompress_ext_cnt;
+	int compress_mode;
+	unsigned char extensions[128];
+	unsigned char noextensions[128];
+};
+
+struct atgc_management {
+	bool atgc_enabled;
+	struct rb_root_cached root;
+	struct list_head victim_list;
+	unsigned int victim_count;
+	unsigned int candidate_ratio;
+	unsigned int max_candidate_count;
+	unsigned int age_weight;
+	unsigned long long age_threshold;
+};
+
+struct f2fs_super_block;
+
+struct f2fs_nm_info;
+
+struct f2fs_sm_info;
+
+struct f2fs_bio_info;
+
+struct f2fs_checkpoint;
+
+struct f2fs_gc_kthread;
+
+struct f2fs_stat_info;
+
+struct f2fs_dev_info;
+
+struct iostat_lat_info;
+
+struct f2fs_sb_info {
+	struct super_block *sb;
+	struct proc_dir_entry *s_proc;
+	struct f2fs_super_block *raw_super;
+	struct f2fs_rwsem sb_lock;
+	int valid_super_block;
+	unsigned long s_flag;
+	struct mutex writepages;
+	unsigned int blocks_per_blkz;
+	unsigned int max_open_zones;
+	struct f2fs_nm_info *nm_info;
+	struct inode *node_inode;
+	struct f2fs_sm_info *sm_info;
+	struct f2fs_bio_info *write_io[3];
+	struct f2fs_rwsem io_order_lock;
+	unsigned long page_eio_ofs[3];
+	int page_eio_cnt[3];
+	struct f2fs_checkpoint *ckpt;
+	int cur_cp_pack;
+	spinlock_t cp_lock;
+	struct inode *meta_inode;
+	struct f2fs_rwsem cp_global_sem;
+	struct f2fs_rwsem cp_rwsem;
+	struct f2fs_rwsem node_write;
+	struct f2fs_rwsem node_change;
+	wait_queue_head_t cp_wait;
+	unsigned long last_time[6];
+	long interval_time[6];
+	struct ckpt_req_control cprc_info;
+	struct inode_management im[5];
+	spinlock_t fsync_node_lock;
+	struct list_head fsync_node_list;
+	unsigned int fsync_seg_id;
+	unsigned int fsync_node_num;
+	unsigned int max_orphans;
+	struct list_head inode_list[3];
+	spinlock_t inode_lock[3];
+	struct mutex flush_lock;
+	struct extent_tree_info extent_tree[2];
+	atomic64_t allocated_data_blocks;
+	unsigned int hot_data_age_threshold;
+	unsigned int warm_data_age_threshold;
+	unsigned int last_age_weight;
+	unsigned int log_sectors_per_block;
+	unsigned int log_blocksize;
+	unsigned int blocksize;
+	unsigned int root_ino_num;
+	unsigned int node_ino_num;
+	unsigned int meta_ino_num;
+	unsigned int log_blocks_per_seg;
+	unsigned int blocks_per_seg;
+	unsigned int unusable_blocks_per_sec;
+	unsigned int segs_per_sec;
+	unsigned int secs_per_zone;
+	unsigned int total_sections;
+	unsigned int total_node_count;
+	unsigned int total_valid_node_count;
+	int dir_level;
+	bool readdir_ra;
+	u64 max_io_bytes;
+	block_t user_block_count;
+	block_t total_valid_block_count;
+	block_t discard_blks;
+	block_t last_valid_block_count;
+	block_t reserved_blocks;
+	block_t current_reserved_blocks;
+	block_t unusable_block_count;
+	unsigned int nquota_files;
+	struct f2fs_rwsem quota_sem;
+	atomic_t nr_pages[13];
+	struct percpu_counter alloc_valid_block_count;
+	struct percpu_counter rf_node_block_count;
+	atomic_t wb_sync_req[2];
+	struct percpu_counter total_valid_inode_count;
+	struct f2fs_mount_info mount_opt;
+	struct f2fs_rwsem gc_lock;
+	struct f2fs_gc_kthread *gc_thread;
+	struct atgc_management am;
+	unsigned int cur_victim_sec;
+	unsigned int gc_mode;
+	unsigned int next_victim_seg[2];
+	spinlock_t gc_remaining_trials_lock;
+	unsigned int gc_remaining_trials;
+	unsigned long long skipped_gc_rwsem;
+	unsigned short gc_pin_file_threshold;
+	struct f2fs_rwsem pin_sem;
+	unsigned int max_victim_search;
+	unsigned int migration_granularity;
+	struct f2fs_stat_info *stat_info;
+	atomic_t meta_count[4];
+	unsigned int segment_count[2];
+	unsigned int block_count[2];
+	atomic_t inplace_count;
+	atomic64_t total_hit_ext[2];
+	atomic64_t read_hit_rbtree[2];
+	atomic64_t read_hit_cached[2];
+	atomic64_t read_hit_largest;
+	atomic_t inline_xattr;
+	atomic_t inline_inode;
+	atomic_t inline_dir;
+	atomic_t compr_inode;
+	atomic64_t compr_blocks;
+	atomic_t swapfile_inode;
+	atomic_t atomic_files;
+	atomic_t max_aw_cnt;
+	unsigned int io_skip_bggc;
+	unsigned int other_skip_bggc;
+	unsigned int ndirty_inode[3];
+	atomic_t cp_call_count[2];
+	spinlock_t stat_lock;
+	unsigned int data_io_flag;
+	unsigned int node_io_flag;
+	struct kobject s_kobj;
+	struct completion s_kobj_unregister;
+	struct kobject s_stat_kobj;
+	struct completion s_stat_kobj_unregister;
+	struct kobject s_feature_list_kobj;
+	struct completion s_feature_list_kobj_unregister;
+	struct list_head s_list;
+	struct mutex umount_mutex;
+	unsigned int shrinker_run_no;
+	int s_ndevs;
+	struct f2fs_dev_info *devs;
+	unsigned int dirty_device;
+	spinlock_t dev_lock;
+	bool aligned_blksize;
+	u64 sectors_written_start;
+	u64 kbytes_written;
+	struct crypto_shash *s_chksum_driver;
+	__u32 s_chksum_seed;
+	struct workqueue_struct *post_read_wq;
+	struct work_struct s_error_work;
+	unsigned char errors[16];
+	unsigned char stop_reason[32];
+	spinlock_t error_lock;
+	bool error_dirty;
+	struct kmem_cache *inline_xattr_slab;
+	unsigned int inline_xattr_slab_size;
+	unsigned int gc_segment_mode;
+	unsigned int gc_reclaimed_segs[7];
+	unsigned long seq_file_ra_mul;
+	int max_fragment_chunk;
+	int max_fragment_hole;
+	atomic64_t current_atomic_write;
+	s64 peak_atomic_write;
+	u64 committed_atomic_block;
+	u64 revoked_atomic_block;
+	struct kmem_cache *page_array_slab;
+	unsigned int page_array_slab_size;
+	u64 compr_written_block;
+	u64 compr_saved_block;
+	u32 compr_new_inode;
+	struct inode *compress_inode;
+	unsigned int compress_percent;
+	unsigned int compress_watermark;
+	atomic_t compress_page_hit;
+	spinlock_t iostat_lock;
+	unsigned long long iostat_count[29];
+	unsigned long long iostat_bytes[29];
+	unsigned long long prev_iostat_bytes[29];
+	bool iostat_enable;
+	unsigned long iostat_next_period;
+	unsigned int iostat_period_ms;
+	spinlock_t iostat_lat_lock;
+	struct iostat_lat_info *iostat_io_lat;
+};
+
+struct f2fs_device {
+	__u8 path[64];
+	__le32 total_segments;
+};
+
+struct f2fs_super_block {
+	__le32 magic;
+	__le16 major_ver;
+	__le16 minor_ver;
+	__le32 log_sectorsize;
+	__le32 log_sectors_per_block;
+	__le32 log_blocksize;
+	__le32 log_blocks_per_seg;
+	__le32 segs_per_sec;
+	__le32 secs_per_zone;
+	__le32 checksum_offset;
+	__le64 block_count;
+	__le32 section_count;
+	__le32 segment_count;
+	__le32 segment_count_ckpt;
+	__le32 segment_count_sit;
+	__le32 segment_count_nat;
+	__le32 segment_count_ssa;
+	__le32 segment_count_main;
+	__le32 segment0_blkaddr;
+	__le32 cp_blkaddr;
+	__le32 sit_blkaddr;
+	__le32 nat_blkaddr;
+	__le32 ssa_blkaddr;
+	__le32 main_blkaddr;
+	__le32 root_ino;
+	__le32 node_ino;
+	__le32 meta_ino;
+	__u8 uuid[16];
+	__le16 volume_name[512];
+	__le32 extension_count;
+	__u8 extension_list[512];
+	__le32 cp_payload;
+	__u8 version[256];
+	__u8 init_version[256];
+	__le32 feature;
+	__u8 encryption_level;
+	__u8 encrypt_pw_salt[16];
+	struct f2fs_device devs[8];
+	__le32 qf_ino[3];
+	__u8 hot_ext_count;
+	__le16 s_encoding;
+	__le16 s_encoding_flags;
+	__u8 s_stop_reason[32];
+	__u8 s_errors[16];
+	__u8 reserved[258];
+	__le32 crc;
+} __attribute__((packed));
+
+struct f2fs_nm_info {
+	block_t nat_blkaddr;
+	nid_t max_nid;
+	nid_t available_nids;
+	nid_t next_scan_nid;
+	nid_t max_rf_node_blocks;
+	unsigned int ram_thresh;
+	unsigned int ra_nid_pages;
+	unsigned int dirty_nats_ratio;
+	struct xarray nat_root;
+	struct xarray nat_set_root;
+	struct f2fs_rwsem nat_tree_lock;
+	struct list_head nat_entries;
+	spinlock_t nat_list_lock;
+	unsigned int nat_cnt[3];
+	unsigned int nat_blocks;
+	struct xarray free_nid_root;
+	struct list_head free_nid_list;
+	unsigned int nid_cnt[2];
+	spinlock_t nid_list_lock;
+	struct mutex build_lock;
+	unsigned char **free_nid_bitmap;
+	unsigned char *nat_block_bitmap;
+	unsigned short *free_nid_count;
+	char *nat_bitmap;
+	unsigned int nat_bits_blocks;
+	unsigned char *nat_bits;
+	unsigned char *full_nat_bits;
+	unsigned char *empty_nat_bits;
+	int bitmap_size;
+};
+
+struct sit_info;
+
+struct free_segmap_info;
+
+struct dirty_seglist_info;
+
+struct curseg_info;
+
+struct flush_cmd_control;
+
+struct discard_cmd_control;
+
+struct f2fs_sm_info {
+	struct sit_info *sit_info;
+	struct free_segmap_info *free_info;
+	struct dirty_seglist_info *dirty_info;
+	struct curseg_info *curseg_array;
+	struct f2fs_rwsem curseg_lock;
+	block_t seg0_blkaddr;
+	block_t main_blkaddr;
+	block_t ssa_blkaddr;
+	unsigned int segment_count;
+	unsigned int main_segments;
+	unsigned int reserved_segments;
+	unsigned int additional_reserved_segments;
+	unsigned int ovp_segments;
+	unsigned int rec_prefree_segments;
+	struct list_head sit_entry_set;
+	unsigned int ipu_policy;
+	unsigned int min_ipu_util;
+	unsigned int min_fsync_blocks;
+	unsigned int min_seq_blocks;
+	unsigned int min_hot_blocks;
+	unsigned int min_ssr_sections;
+	struct flush_cmd_control *fcc_info;
+	struct discard_cmd_control *dcc_info;
+};
+
+struct flush_cmd_control {
+	struct task_struct *f2fs_issue_flush;
+	wait_queue_head_t flush_wait_queue;
+	atomic_t issued_flush;
+	atomic_t queued_flush;
+	struct llist_head issue_list;
+	struct llist_node *dispatch_list;
+};
+
+struct discard_cmd_control {
+	struct task_struct *f2fs_issue_discard;
+	struct list_head entry_list;
+	struct list_head pend_list[512];
+	struct list_head wait_list;
+	struct list_head fstrim_list;
+	wait_queue_head_t discard_wait_queue;
+	struct mutex cmd_lock;
+	unsigned int nr_discards;
+	unsigned int max_discards;
+	unsigned int max_discard_request;
+	unsigned int min_discard_issue_time;
+	unsigned int mid_discard_issue_time;
+	unsigned int max_discard_issue_time;
+	unsigned int discard_io_aware_gran;
+	unsigned int discard_urgent_util;
+	unsigned int discard_granularity;
+	unsigned int max_ordered_discard;
+	unsigned int discard_io_aware;
+	unsigned int undiscard_blks;
+	unsigned int next_pos;
+	atomic_t issued_discard;
+	atomic_t queued_discard;
+	atomic_t discard_cmd_cnt;
+	struct rb_root_cached root;
+	bool rbtree_check;
+	bool discard_wake;
+};
+
+struct f2fs_io_info {
+	struct f2fs_sb_info *sbi;
+	nid_t ino;
+	enum page_type type;
+	enum temp_type temp;
+	enum req_op op;
+	blk_opf_t op_flags;
+	block_t new_blkaddr;
+	block_t old_blkaddr;
+	struct page *page;
+	struct page *encrypted_page;
+	struct page *compressed_page;
+	struct list_head list;
+	unsigned int compr_blocks;
+	unsigned int need_lock: 8;
+	unsigned int version: 8;
+	unsigned int submitted: 1;
+	unsigned int in_list: 1;
+	unsigned int is_por: 1;
+	unsigned int encrypted: 1;
+	unsigned int meta_gc: 1;
+	enum iostat_type io_type;
+	struct writeback_control *io_wbc;
+	struct bio **bio;
+	sector_t *last_block;
+};
+
+struct f2fs_bio_info {
+	struct f2fs_sb_info *sbi;
+	struct bio *bio;
+	sector_t last_block_in_bio;
+	struct f2fs_io_info fio;
+	struct completion zone_wait;
+	struct bio *zone_pending_bio;
+	void *bi_private;
+	struct f2fs_rwsem io_rwsem;
+	spinlock_t io_lock;
+	struct list_head io_list;
+	struct list_head bio_list;
+	struct f2fs_rwsem bio_list_lock;
+};
+
+struct f2fs_checkpoint {
+	__le64 checkpoint_ver;
+	__le64 user_block_count;
+	__le64 valid_block_count;
+	__le32 rsvd_segment_count;
+	__le32 overprov_segment_count;
+	__le32 free_segment_count;
+	__le32 cur_node_segno[8];
+	__le16 cur_node_blkoff[8];
+	__le32 cur_data_segno[8];
+	__le16 cur_data_blkoff[8];
+	__le32 ckpt_flags;
+	__le32 cp_pack_total_block_count;
+	__le32 cp_pack_start_sum;
+	__le32 valid_node_count;
+	__le32 valid_inode_count;
+	__le32 next_free_nid;
+	__le32 sit_ver_bitmap_bytesize;
+	__le32 nat_ver_bitmap_bytesize;
+	__le32 checksum_offset;
+	__le64 elapsed_time;
+	unsigned char alloc_type[16];
+	unsigned char sit_nat_version_bitmap[0];
+};
+
+struct f2fs_stat_info {
+	struct list_head stat_list;
+	struct f2fs_sb_info *sbi;
+	int all_area_segs;
+	int sit_area_segs;
+	int nat_area_segs;
+	int ssa_area_segs;
+	int main_area_segs;
+	int main_area_sections;
+	int main_area_zones;
+	unsigned long long hit_cached[2];
+	unsigned long long hit_rbtree[2];
+	unsigned long long total_ext[2];
+	unsigned long long hit_total[2];
+	int ext_tree[2];
+	int zombie_tree[2];
+	int ext_node[2];
+	unsigned long long ext_mem[2];
+	unsigned long long hit_largest;
+	unsigned long long allocated_data_blocks;
+	int ndirty_node;
+	int ndirty_dent;
+	int ndirty_meta;
+	int ndirty_imeta;
+	int ndirty_data;
+	int ndirty_qdata;
+	unsigned int ndirty_dirs;
+	unsigned int ndirty_files;
+	unsigned int nquota_files;
+	unsigned int ndirty_all;
+	int nats;
+	int dirty_nats;
+	int sits;
+	int dirty_sits;
+	int free_nids;
+	int avail_nids;
+	int alloc_nids;
+	int total_count;
+	int utilization;
+	int nr_wb_cp_data;
+	int nr_wb_data;
+	int nr_rd_data;
+	int nr_rd_node;
+	int nr_rd_meta;
+	int nr_dio_read;
+	int nr_dio_write;
+	unsigned int io_skip_bggc;
+	unsigned int other_skip_bggc;
+	int nr_flushing;
+	int nr_flushed;
+	int flush_list_empty;
+	int nr_discarding;
+	int nr_discarded;
+	int nr_discard_cmd;
+	unsigned int undiscard_blks;
+	int nr_issued_ckpt;
+	int nr_total_ckpt;
+	int nr_queued_ckpt;
+	unsigned int cur_ckpt_time;
+	unsigned int peak_ckpt_time;
+	int inline_xattr;
+	int inline_inode;
+	int inline_dir;
+	int append;
+	int update;
+	int orphans;
+	int compr_inode;
+	int swapfile_inode;
+	unsigned long long compr_blocks;
+	int aw_cnt;
+	int max_aw_cnt;
+	unsigned int valid_count;
+	unsigned int valid_node_count;
+	unsigned int valid_inode_count;
+	unsigned int discard_blks;
+	unsigned int bimodal;
+	unsigned int avg_vblocks;
+	int util_free;
+	int util_valid;
+	int util_invalid;
+	int rsvd_segs;
+	int overp_segs;
+	int dirty_count;
+	int node_pages;
+	int meta_pages;
+	int compress_pages;
+	int compress_page_hit;
+	int prefree_count;
+	int free_segs;
+	int free_secs;
+	int cp_call_count[2];
+	int cp_count;
+	int gc_call_count[2];
+	int gc_segs[4];
+	int gc_secs[4];
+	int tot_blks;
+	int data_blks;
+	int node_blks;
+	int bg_data_blks;
+	int bg_node_blks;
+	int curseg[8];
+	int cursec[8];
+	int curzone[8];
+	unsigned int dirty_seg[8];
+	unsigned int full_seg[8];
+	unsigned int valid_blks[8];
+	unsigned int meta_count[4];
+	unsigned int segment_count[2];
+	unsigned int block_count[2];
+	unsigned int inplace_count;
+	unsigned long long base_mem;
+	unsigned long long cache_mem;
+	unsigned long long page_mem;
+};
+
+struct f2fs_dev_info {
+	struct block_device *bdev;
+	char path[64];
+	unsigned int total_segments;
+	block_t start_blk;
+	block_t end_blk;
+	unsigned int nr_blkz;
+	unsigned long *blkz_seq;
+};
+
+struct f2fs_filename {
+	const struct qstr *usr_fname;
+	struct fscrypt_str disk_name;
+	f2fs_hash_t hash;
+	struct fscrypt_str crypto_buf;
+	struct fscrypt_str cf_name;
+};
+
+struct f2fs_dentry_ptr {
+	struct inode *inode;
+	void *bitmap;
+	struct f2fs_dir_entry *dentry;
+	__u8 (*filename)[8];
+	int max;
+	int nr_bitmap;
+};
+
+enum {
+	META_CP = 0,
+	META_NAT = 1,
+	META_SIT = 2,
+	META_SSA = 3,
+	META_MAX = 4,
+	META_POR = 5,
+	DATA_GENERIC = 6,
+	DATA_GENERIC_ENHANCE = 7,
+	DATA_GENERIC_ENHANCE_READ = 8,
+	DATA_GENERIC_ENHANCE_UPDATE = 9,
+	META_GENERIC = 10,
+};
+
+enum {
+	ALLOC_NODE = 0,
+	LOOKUP_NODE = 1,
+	LOOKUP_NODE_RA = 2,
+};
+
+enum stop_cp_reason {
+	STOP_CP_REASON_SHUTDOWN = 0,
+	STOP_CP_REASON_FAULT_INJECT = 1,
+	STOP_CP_REASON_META_PAGE = 2,
+	STOP_CP_REASON_WRITE_FAIL = 3,
+	STOP_CP_REASON_CORRUPTED_SUMMARY = 4,
+	STOP_CP_REASON_UPDATE_INODE = 5,
+	STOP_CP_REASON_FLUSH_FAIL = 6,
+	STOP_CP_REASON_NO_SEGMENT = 7,
+	STOP_CP_REASON_MAX = 8,
+};
+
+enum {
+	CURSEG_HOT_DATA = 0,
+	CURSEG_WARM_DATA = 1,
+	CURSEG_COLD_DATA = 2,
+	CURSEG_HOT_NODE = 3,
+	CURSEG_WARM_NODE = 4,
+	CURSEG_COLD_NODE = 5,
+	NR_PERSISTENT_LOG = 6,
+	CURSEG_COLD_DATA_PINNED = 6,
+	CURSEG_ALL_DATA_ATGC = 7,
+	NO_CHECK_TYPE = 8,
+};
+
+enum {
+	F2FS_GET_BLOCK_DEFAULT = 0,
+	F2FS_GET_BLOCK_FIEMAP = 1,
+	F2FS_GET_BLOCK_BMAP = 2,
+	F2FS_GET_BLOCK_DIO = 3,
+	F2FS_GET_BLOCK_PRE_DIO = 4,
+	F2FS_GET_BLOCK_PRE_AIO = 5,
+	F2FS_GET_BLOCK_PRECACHE = 6,
+};
+
+enum cp_reason_type {
+	CP_NO_NEEDED = 0,
+	CP_NON_REGULAR = 1,
+	CP_COMPRESSED = 2,
+	CP_HARDLINK = 3,
+	CP_SB_NEED_CP = 4,
+	CP_WRONG_PINO = 5,
+	CP_NO_SPC_ROLL = 6,
+	CP_NODE_NEED_CP = 7,
+	CP_FASTBOOT_MODE = 8,
+	CP_SPEC_LOG_NUM = 9,
+	CP_RECOVER_DIR = 10,
+};
+
+enum inode_type {
+	DIR_INODE = 0,
+	FILE_INODE = 1,
+	DIRTY_META = 2,
+	NR_INODE_TYPE = 3,
+};
+
+enum {
+	COLD_BIT_SHIFT = 0,
+	FSYNC_BIT_SHIFT = 1,
+	DENT_BIT_SHIFT = 2,
+	OFFSET_BIT_SHIFT = 3,
+};
+
+enum compress_flag {
+	COMPRESS_CHKSUM = 0,
+	COMPRESS_MAX_FLAG = 1,
+};
+
+enum compress_algorithm_type {
+	COMPRESS_LZO = 0,
+	COMPRESS_LZ4 = 1,
+	COMPRESS_ZSTD = 2,
+	COMPRESS_LZORLE = 3,
+	COMPRESS_MAX = 4,
+};
+
+enum {
+	BG_GC = 0,
+	FG_GC = 1,
+};
+
+enum {
+	BACKGROUND = 0,
+	FOREGROUND = 1,
+	MAX_CALL_TYPE = 2,
+	TOTAL_CALL = 1,
+};
+
+enum {
+	FS_MODE_ADAPTIVE = 0,
+	FS_MODE_LFS = 1,
+	FS_MODE_FRAGMENT_SEG = 2,
+	FS_MODE_FRAGMENT_BLK = 3,
+};
+
+enum {
+	GC_CB = 0,
+	GC_GREEDY = 1,
+	GC_AT = 2,
+	ALLOC_NEXT = 3,
+	FLUSH_DEVICE = 4,
+	MAX_GC_POLICY = 5,
+};
+
+enum {
+	COMPR_MODE_FS = 0,
+	COMPR_MODE_USER = 1,
+};
+
+struct seg_entry;
+
+struct sec_entry;
+
+struct sit_info {
+	block_t sit_base_addr;
+	block_t sit_blocks;
+	block_t written_valid_blocks;
+	char *bitmap;
+	char *sit_bitmap;
+	unsigned int bitmap_size;
+	unsigned long *tmp_map;
+	unsigned long *dirty_sentries_bitmap;
+	unsigned int dirty_sentries;
+	unsigned int sents_per_block;
+	struct rw_semaphore sentry_lock;
+	struct seg_entry *sentries;
+	struct sec_entry *sec_entries;
+	unsigned long long elapsed_time;
+	unsigned long long mounted_time;
+	unsigned long long min_mtime;
+	unsigned long long max_mtime;
+	unsigned long long dirty_min_mtime;
+	unsigned long long dirty_max_mtime;
+	unsigned int last_victim[5];
+};
+
+struct seg_entry {
+	unsigned int type: 6;
+	unsigned int valid_blocks: 10;
+	unsigned int ckpt_valid_blocks: 10;
+	unsigned int padding: 6;
+	unsigned char *cur_valid_map;
+	unsigned char *ckpt_valid_map;
+	unsigned char *discard_map;
+	unsigned long long mtime;
+};
+
+struct sec_entry {
+	unsigned int valid_blocks;
+};
+
+struct free_segmap_info {
+	unsigned int start_segno;
+	unsigned int free_segments;
+	unsigned int free_sections;
+	spinlock_t segmap_lock;
+	unsigned long *free_segmap;
+	unsigned long *free_secmap;
+};
+
+struct dirty_seglist_info {
+	unsigned long *dirty_segmap[8];
+	unsigned long *dirty_secmap;
+	struct mutex seglist_lock;
+	int nr_dirty[8];
+	unsigned long *victim_secmap;
+	unsigned long *pinned_secmap;
+	unsigned int pinned_secmap_cnt;
+	bool enable_pin_section;
+};
+
+struct f2fs_summary_block;
+
+struct f2fs_journal;
+
+struct curseg_info {
+	struct mutex curseg_mutex;
+	struct f2fs_summary_block *sum_blk;
+	struct rw_semaphore journal_rwsem;
+	struct f2fs_journal *journal;
+	unsigned char alloc_type;
+	unsigned short seg_type;
+	unsigned int segno;
+	unsigned short next_blkoff;
+	unsigned int zone;
+	unsigned int next_segno;
+	int fragment_remained_chunk;
+	bool inited;
+};
+
+struct f2fs_summary {
+	__le32 nid;
+	union {
+		__u8 reserved[3];
+		struct {
+			__u8 version;
+			__le16 ofs_in_node;
+		} __attribute__((packed));
+	};
+} __attribute__((packed));
+
+struct f2fs_nat_entry {
+	__u8 version;
+	__le32 ino;
+	__le32 block_addr;
+} __attribute__((packed));
+
+struct nat_journal_entry {
+	__le32 nid;
+	struct f2fs_nat_entry ne;
+} __attribute__((packed));
+
+struct nat_journal {
+	struct nat_journal_entry entries[38];
+	__u8 reserved[11];
+};
+
+struct f2fs_sit_entry {
+	__le16 vblocks;
+	__u8 valid_map[64];
+	__le64 mtime;
+} __attribute__((packed));
+
+struct sit_journal_entry {
+	__le32 segno;
+	struct f2fs_sit_entry se;
+} __attribute__((packed));
+
+struct sit_journal {
+	struct sit_journal_entry entries[6];
+	__u8 reserved[37];
+};
+
+struct f2fs_extra_info {
+	__le64 kbytes_written;
+	__u8 reserved[497];
+} __attribute__((packed));
+
+struct f2fs_journal {
+	union {
+		__le16 n_nats;
+		__le16 n_sits;
+	};
+	union {
+		struct nat_journal nat_j;
+		struct sit_journal sit_j;
+		struct f2fs_extra_info info;
+	};
+} __attribute__((packed));
+
+struct summary_footer {
+	unsigned char entry_type;
+	__le32 check_sum;
+} __attribute__((packed));
+
+struct f2fs_summary_block {
+	struct f2fs_summary entries[512];
+	struct f2fs_journal journal;
+	struct summary_footer footer;
+};
+
+struct f2fs_gc_kthread {
+	struct task_struct *f2fs_gc_task;
+	wait_queue_head_t gc_wait_queue_head;
+	unsigned int urgent_sleep_time;
+	unsigned int min_sleep_time;
+	unsigned int max_sleep_time;
+	unsigned int no_gc_sleep_time;
+	bool gc_wake;
+	wait_queue_head_t fggc_wq;
+};
+
+struct iostat_lat_info {
+	unsigned long sum_lat[9];
+	unsigned long peak_lat[9];
+	unsigned int bio_cnt[9];
+};
+
+struct f2fs_gc_range {
+	__u32 sync;
+	__u64 start;
+	__u64 len;
+};
+
+struct f2fs_defragment {
+	__u64 start;
+	__u64 len;
+};
+
+struct f2fs_move_range {
+	__u32 dst_fd;
+	__u64 pos_in;
+	__u64 pos_out;
+	__u64 len;
+};
+
+struct f2fs_flush_device {
+	__u32 dev_num;
+	__u32 segments;
+};
+
+struct f2fs_sectrim_range {
+	__u64 start;
+	__u64 len;
+	__u64 flags;
+};
+
+struct f2fs_comp_option {
+	__u8 algorithm;
+	__u8 log_cluster_size;
+};
+
+struct dnode_of_data {
+	struct inode *inode;
+	struct page *inode_page;
+	struct page *node_page;
+	nid_t nid;
+	unsigned int ofs_in_node;
+	bool inode_page_locked;
+	bool node_changed;
+	char cur_level;
+	char max_level;
+	block_t data_blkaddr;
+};
+
+struct f2fs_map_blocks {
+	struct block_device *m_bdev;
+	block_t m_pblk;
+	block_t m_lblk;
+	unsigned int m_len;
+	unsigned int m_flags;
+	unsigned long *m_next_pgofs;
+	unsigned long *m_next_extent;
+	int m_seg_type;
+	bool m_may_create;
+	bool m_multidev_dio;
+};
+
+struct f2fs_gc_control {
+	unsigned int victim_segno;
+	int init_gc_type;
+	bool no_bg_gc;
+	bool should_migrate_blocks;
+	bool err_gc_skipped;
+	unsigned int nr_free_secs;
+};
+
+struct node_info {
+	nid_t nid;
+	nid_t ino;
+	block_t blk_addr;
+	unsigned char version;
+	unsigned char flag;
+};
+
+struct compat_f2fs_gc_range {
+	u32 sync;
+	compat_u64 start;
+	compat_u64 len;
+} __attribute__((packed));
+
+struct compat_f2fs_move_range {
+	u32 dst_fd;
+	compat_u64 pos_in;
+	compat_u64 pos_out;
+	compat_u64 len;
+} __attribute__((packed));
+
+typedef void (*btf_trace_f2fs_sync_file_enter)(void *, struct inode *);
+
+typedef void (*btf_trace_f2fs_sync_file_exit)(void *, struct inode *, int, int, int);
+
+typedef void (*btf_trace_f2fs_sync_fs)(void *, struct super_block *, int);
+
+typedef void (*btf_trace_f2fs_iget)(void *, struct inode *);
+
+typedef void (*btf_trace_f2fs_iget_exit)(void *, struct inode *, int);
+
+typedef void (*btf_trace_f2fs_evict_inode)(void *, struct inode *);
+
+typedef void (*btf_trace_f2fs_new_inode)(void *, struct inode *, int);
+
+typedef void (*btf_trace_f2fs_unlink_enter)(void *, struct inode *, struct dentry *);
+
+typedef void (*btf_trace_f2fs_unlink_exit)(void *, struct inode *, int);
+
+typedef void (*btf_trace_f2fs_drop_inode)(void *, struct inode *, int);
+
+typedef void (*btf_trace_f2fs_truncate)(void *, struct inode *);
+
+typedef void (*btf_trace_f2fs_truncate_data_blocks_range)(void *, struct inode *, nid_t, unsigned int, int);
+
+typedef void (*btf_trace_f2fs_truncate_blocks_enter)(void *, struct inode *, u64);
+
+typedef void (*btf_trace_f2fs_truncate_blocks_exit)(void *, struct inode *, int);
+
+typedef void (*btf_trace_f2fs_truncate_inode_blocks_enter)(void *, struct inode *, u64);
+
+typedef void (*btf_trace_f2fs_truncate_inode_blocks_exit)(void *, struct inode *, int);
+
+typedef void (*btf_trace_f2fs_truncate_nodes_enter)(void *, struct inode *, nid_t, block_t);
+
+typedef void (*btf_trace_f2fs_truncate_nodes_exit)(void *, struct inode *, int);
+
+typedef void (*btf_trace_f2fs_truncate_node)(void *, struct inode *, nid_t, block_t);
+
+typedef void (*btf_trace_f2fs_truncate_partial_nodes)(void *, struct inode *, nid_t *, int, int);
+
+typedef void (*btf_trace_f2fs_file_write_iter)(void *, struct inode *, loff_t, size_t, ssize_t);
+
+typedef void (*btf_trace_f2fs_map_blocks)(void *, struct inode *, struct f2fs_map_blocks *, int, int);
+
+typedef void (*btf_trace_f2fs_background_gc)(void *, struct super_block *, unsigned int, unsigned int, unsigned int);
+
+typedef void (*btf_trace_f2fs_gc_begin)(void *, struct super_block *, int, bool, unsigned int, long long, long long, long long, unsigned int, unsigned int, int, unsigned int);
+
+typedef void (*btf_trace_f2fs_gc_end)(void *, struct super_block *, int, int, int, long long, long long, long long, unsigned int, unsigned int, int, unsigned int);
+
+struct victim_sel_policy;
+
+typedef void (*btf_trace_f2fs_get_victim)(void *, struct super_block *, int, int, struct victim_sel_policy *, unsigned int, unsigned int, unsigned int);
+
+struct victim_sel_policy {
+	int alloc_mode;
+	int gc_mode;
+	unsigned long *dirty_bitmap;
+	unsigned int max_search;
+	unsigned int offset;
+	unsigned int ofs_unit;
+	unsigned int min_cost;
+	unsigned long long oldest_age;
+	unsigned int min_segno;
+	unsigned long long age;
+	unsigned long long age_threshold;
+};
+
+typedef void (*btf_trace_f2fs_lookup_start)(void *, struct inode *, struct dentry *, unsigned int);
+
+typedef void (*btf_trace_f2fs_lookup_end)(void *, struct inode *, struct dentry *, nid_t, int);
+
+typedef void (*btf_trace_f2fs_rename_start)(void *, struct inode *, struct dentry *, struct inode *, struct dentry *, unsigned int);
+
+typedef void (*btf_trace_f2fs_rename_end)(void *, struct dentry *, struct dentry *, unsigned int, int);
+
+typedef void (*btf_trace_f2fs_readdir)(void *, struct inode *, loff_t, loff_t, int);
+
+typedef void (*btf_trace_f2fs_fallocate)(void *, struct inode *, int, loff_t, loff_t, int);
+
+typedef void (*btf_trace_f2fs_direct_IO_enter)(void *, struct inode *, struct kiocb *, long, int);
+
+typedef void (*btf_trace_f2fs_direct_IO_exit)(void *, struct inode *, loff_t, unsigned long, int, int);
+
+typedef void (*btf_trace_f2fs_reserve_new_blocks)(void *, struct inode *, nid_t, unsigned int, blkcnt_t);
+
+typedef void (*btf_trace_f2fs_submit_page_bio)(void *, struct page *, struct f2fs_io_info *);
+
+typedef void (*btf_trace_f2fs_submit_page_write)(void *, struct page *, struct f2fs_io_info *);
+
+typedef void (*btf_trace_f2fs_prepare_write_bio)(void *, struct super_block *, int, struct bio *);
+
+typedef void (*btf_trace_f2fs_prepare_read_bio)(void *, struct super_block *, int, struct bio *);
+
+typedef void (*btf_trace_f2fs_submit_read_bio)(void *, struct super_block *, int, struct bio *);
+
+typedef void (*btf_trace_f2fs_submit_write_bio)(void *, struct super_block *, int, struct bio *);
+
+typedef void (*btf_trace_f2fs_write_begin)(void *, struct inode *, loff_t, unsigned int);
+
+typedef void (*btf_trace_f2fs_write_end)(void *, struct inode *, loff_t, unsigned int, unsigned int);
+
+typedef void (*btf_trace_f2fs_writepage)(void *, struct folio *, int);
+
+typedef void (*btf_trace_f2fs_do_write_data_page)(void *, struct folio *, int);
+
+typedef void (*btf_trace_f2fs_readpage)(void *, struct folio *, int);
+
+typedef void (*btf_trace_f2fs_set_page_dirty)(void *, struct folio *, int);
+
+typedef void (*btf_trace_f2fs_replace_atomic_write_block)(void *, struct inode *, struct inode *, unsigned long, block_t, block_t, bool);
+
+typedef void (*btf_trace_f2fs_filemap_fault)(void *, struct inode *, unsigned long, vm_flags_t, vm_fault_t);
+
+typedef void (*btf_trace_f2fs_vm_page_mkwrite)(void *, struct inode *, unsigned long, vm_flags_t, vm_fault_t);
+
+typedef void (*btf_trace_f2fs_writepages)(void *, struct inode *, struct writeback_control *, int);
+
+typedef void (*btf_trace_f2fs_readpages)(void *, struct inode *, unsigned long, unsigned int);
+
+typedef void (*btf_trace_f2fs_write_checkpoint)(void *, struct super_block *, int, const char *);
+
+typedef void (*btf_trace_f2fs_queue_discard)(void *, struct block_device *, block_t, block_t);
+
+typedef void (*btf_trace_f2fs_issue_discard)(void *, struct block_device *, block_t, block_t);
+
+typedef void (*btf_trace_f2fs_remove_discard)(void *, struct block_device *, block_t, block_t);
+
+typedef void (*btf_trace_f2fs_queue_reset_zone)(void *, struct block_device *, block_t);
+
+typedef void (*btf_trace_f2fs_issue_reset_zone)(void *, struct block_device *, block_t);
+
+typedef void (*btf_trace_f2fs_issue_flush)(void *, struct block_device *, unsigned int, unsigned int, int);
+
+typedef void (*btf_trace_f2fs_lookup_extent_tree_start)(void *, struct inode *, unsigned int, enum extent_type);
+
+typedef void (*btf_trace_f2fs_lookup_read_extent_tree_end)(void *, struct inode *, unsigned int, struct extent_info *);
+
+typedef void (*btf_trace_f2fs_lookup_age_extent_tree_end)(void *, struct inode *, unsigned int, struct extent_info *);
+
+typedef void (*btf_trace_f2fs_update_read_extent_tree_range)(void *, struct inode *, unsigned int, unsigned int, block_t, unsigned int);
+
+typedef void (*btf_trace_f2fs_update_age_extent_tree_range)(void *, struct inode *, unsigned int, unsigned int, unsigned long long, unsigned long long);
+
+typedef void (*btf_trace_f2fs_shrink_extent_tree)(void *, struct f2fs_sb_info *, unsigned int, unsigned int, enum extent_type);
+
+typedef void (*btf_trace_f2fs_destroy_extent_tree)(void *, struct inode *, unsigned int, enum extent_type);
+
+typedef void (*btf_trace_f2fs_sync_dirty_inodes_enter)(void *, struct super_block *, int, s64);
+
+typedef void (*btf_trace_f2fs_sync_dirty_inodes_exit)(void *, struct super_block *, int, s64);
+
+typedef void (*btf_trace_f2fs_shutdown)(void *, struct f2fs_sb_info *, unsigned int, int);
+
+typedef void (*btf_trace_f2fs_compress_pages_start)(void *, struct inode *, unsigned long, unsigned int, unsigned char);
+
+typedef void (*btf_trace_f2fs_decompress_pages_start)(void *, struct inode *, unsigned long, unsigned int, unsigned char);
+
+typedef void (*btf_trace_f2fs_compress_pages_end)(void *, struct inode *, unsigned long, unsigned int, int);
+
+typedef void (*btf_trace_f2fs_decompress_pages_end)(void *, struct inode *, unsigned long, unsigned int, int);
+
+typedef void (*btf_trace_f2fs_iostat)(void *, struct f2fs_sb_info *, unsigned long long *);
+
+struct f2fs_iostat_latency {
+	unsigned int peak_lat;
+	unsigned int avg_lat;
+	unsigned int cnt;
+};
+
+typedef void (*btf_trace_f2fs_iostat_latency)(void *, struct f2fs_sb_info *, struct f2fs_iostat_latency(*)[3]);
+
+typedef void (*btf_trace_f2fs_bmap)(void *, struct inode *, sector_t, sector_t);
+
+typedef void (*btf_trace_f2fs_fiemap)(void *, struct inode *, sector_t, sector_t, unsigned long long, unsigned int, int);
+
+typedef void (*btf_trace_f2fs_dataread_start)(void *, struct inode *, loff_t, int, pid_t, char *, char *);
+
+typedef void (*btf_trace_f2fs_dataread_end)(void *, struct inode *, loff_t, int);
+
+typedef void (*btf_trace_f2fs_datawrite_start)(void *, struct inode *, loff_t, int, pid_t, char *, char *);
+
+typedef void (*btf_trace_f2fs_datawrite_end)(void *, struct inode *, loff_t, int);
+
+struct f2fs_sb_encodings {
+	__u16 magic;
+	char *name;
+	unsigned int version;
+};
+
+enum errors_option {
+	MOUNT_ERRORS_READONLY = 0,
+	MOUNT_ERRORS_CONTINUE = 1,
+	MOUNT_ERRORS_PANIC = 2,
+};
+
+enum iostat_lat_type {
+	READ_IO = 0,
+	WRITE_SYNC_IO = 1,
+	WRITE_ASYNC_IO = 2,
+	MAX_IO_TYPE = 3,
+};
+
+enum {
+	BGGC_MODE_ON = 0,
+	BGGC_MODE_OFF = 1,
+	BGGC_MODE_SYNC = 2,
+};
+
+enum {
+	DISCARD_UNIT_BLOCK = 0,
+	DISCARD_UNIT_SEGMENT = 1,
+	DISCARD_UNIT_SECTION = 2,
+};
+
+enum {
+	ALLOC_MODE_DEFAULT = 0,
+	ALLOC_MODE_REUSE = 1,
+};
+
+enum {
+	MEMORY_MODE_NORMAL = 0,
+	MEMORY_MODE_LOW = 1,
+};
+
+enum {
+	Opt_gc_background = 0,
+	Opt_disable_roll_forward = 1,
+	Opt_norecovery = 2,
+	Opt_discard___4 = 3,
+	Opt_nodiscard___2 = 4,
+	Opt_noheap = 5,
+	Opt_heap = 6,
+	Opt_user_xattr___2 = 7,
+	Opt_nouser_xattr = 8,
+	Opt_acl___2 = 9,
+	Opt_noacl = 10,
+	Opt_active_logs = 11,
+	Opt_disable_ext_identify = 12,
+	Opt_inline_xattr = 13,
+	Opt_noinline_xattr = 14,
+	Opt_inline_xattr_size = 15,
+	Opt_inline_data = 16,
+	Opt_inline_dentry = 17,
+	Opt_noinline_dentry = 18,
+	Opt_flush_merge = 19,
+	Opt_noflush_merge = 20,
+	Opt_barrier___2 = 21,
+	Opt_nobarrier___2 = 22,
+	Opt_fastboot = 23,
+	Opt_extent_cache = 24,
+	Opt_noextent_cache = 25,
+	Opt_noinline_data = 26,
+	Opt_data_flush = 27,
+	Opt_reserve_root = 28,
+	Opt_resgid___2 = 29,
+	Opt_resuid___2 = 30,
+	Opt_mode___5 = 31,
+	Opt_fault_injection = 32,
+	Opt_fault_type = 33,
+	Opt_lazytime = 34,
+	Opt_nolazytime = 35,
+	Opt_quota___3 = 36,
+	Opt_noquota___2 = 37,
+	Opt_usrquota___3 = 38,
+	Opt_grpquota___3 = 39,
+	Opt_prjquota___2 = 40,
+	Opt_usrjquota___2 = 41,
+	Opt_grpjquota___2 = 42,
+	Opt_prjjquota = 43,
+	Opt_offusrjquota = 44,
+	Opt_offgrpjquota = 45,
+	Opt_offprjjquota = 46,
+	Opt_jqfmt_vfsold = 47,
+	Opt_jqfmt_vfsv0 = 48,
+	Opt_jqfmt_vfsv1 = 49,
+	Opt_alloc = 50,
+	Opt_fsync = 51,
+	Opt_test_dummy_encryption___2 = 52,
+	Opt_inlinecrypt___2 = 53,
+	Opt_checkpoint_disable = 54,
+	Opt_checkpoint_disable_cap = 55,
+	Opt_checkpoint_disable_cap_perc = 56,
+	Opt_checkpoint_enable = 57,
+	Opt_checkpoint_merge = 58,
+	Opt_nocheckpoint_merge = 59,
+	Opt_compress_algorithm = 60,
+	Opt_compress_log_size = 61,
+	Opt_compress_extension = 62,
+	Opt_nocompress_extension = 63,
+	Opt_compress_chksum = 64,
+	Opt_compress_mode = 65,
+	Opt_compress_cache = 66,
+	Opt_atgc = 67,
+	Opt_gc_merge = 68,
+	Opt_nogc_merge = 69,
+	Opt_discard_unit = 70,
+	Opt_memory_mode = 71,
+	Opt_age_extent_cache = 72,
+	Opt_errors___3 = 73,
+	Opt_err___6 = 74,
+};
+
+enum {
+	GC_NORMAL = 0,
+	GC_IDLE_CB = 1,
+	GC_IDLE_GREEDY = 2,
+	GC_IDLE_AT = 3,
+	GC_URGENT_HIGH = 4,
+	GC_URGENT_LOW = 5,
+	GC_URGENT_MID = 6,
+	MAX_GC_MODE = 7,
+};
+
+enum blk_zone_type {
+	BLK_ZONE_TYPE_CONVENTIONAL = 1,
+	BLK_ZONE_TYPE_SEQWRITE_REQ = 2,
+	BLK_ZONE_TYPE_SEQWRITE_PREF = 3,
+};
+
+enum {
+	F2FS_IPU_FORCE = 0,
+	F2FS_IPU_SSR = 1,
+	F2FS_IPU_UTIL = 2,
+	F2FS_IPU_SSR_UTIL = 3,
+	F2FS_IPU_FSYNC = 4,
+	F2FS_IPU_ASYNC = 5,
+	F2FS_IPU_NOCACHE = 6,
+	F2FS_IPU_HONOR_OPU_WRITE = 7,
+	F2FS_IPU_MAX = 8,
+};
+
+struct trace_event_raw_f2fs__inode {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	ino_t pino;
+	umode_t mode;
+	loff_t size;
+	unsigned int nlink;
+	blkcnt_t blocks;
+	__u8 advise;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_sync_file_exit {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	int cp_reason;
+	int datasync;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_sync_fs {
+	struct trace_entry ent;
+	dev_t dev;
+	int dirty;
+	int wait;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs__inode_exit {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	umode_t mode;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_unlink_enter {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	loff_t size;
+	blkcnt_t blocks;
+	u32 __data_loc_name;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_truncate_data_blocks_range {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	nid_t nid;
+	unsigned int ofs;
+	int free;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs__truncate_op {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	loff_t size;
+	blkcnt_t blocks;
+	u64 from;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs__truncate_node {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	nid_t nid;
+	block_t blk_addr;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_truncate_partial_nodes {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	nid_t nid[3];
+	int depth;
+	int err;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_file_write_iter {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	loff_t offset;
+	size_t length;
+	ssize_t ret;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_map_blocks {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	block_t m_lblk;
+	block_t m_pblk;
+	unsigned int m_len;
+	unsigned int m_flags;
+	int m_seg_type;
+	bool m_may_create;
+	bool m_multidev_dio;
+	int flag;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_background_gc {
+	struct trace_entry ent;
+	dev_t dev;
+	unsigned int wait_ms;
+	unsigned int prefree;
+	unsigned int free;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_gc_begin {
+	struct trace_entry ent;
+	dev_t dev;
+	int gc_type;
+	bool no_bg_gc;
+	unsigned int nr_free_secs;
+	long long dirty_nodes;
+	long long dirty_dents;
+	long long dirty_imeta;
+	unsigned int free_sec;
+	unsigned int free_seg;
+	int reserved_seg;
+	unsigned int prefree_seg;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_gc_end {
+	struct trace_entry ent;
+	dev_t dev;
+	int ret;
+	int seg_freed;
+	int sec_freed;
+	long long dirty_nodes;
+	long long dirty_dents;
+	long long dirty_imeta;
+	unsigned int free_sec;
+	unsigned int free_seg;
+	int reserved_seg;
+	unsigned int prefree_seg;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_get_victim {
+	struct trace_entry ent;
+	dev_t dev;
+	int type;
+	int gc_type;
+	int alloc_mode;
+	int gc_mode;
+	unsigned int victim;
+	unsigned int cost;
+	unsigned int ofs_unit;
+	unsigned int pre_victim;
+	unsigned int prefree;
+	unsigned int free;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_lookup_start {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	u32 __data_loc_name;
+	unsigned int flags;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_lookup_end {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	u32 __data_loc_name;
+	nid_t cino;
+	int err;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_rename_start {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	u32 __data_loc_old_name;
+	ino_t new_pino;
+	u32 __data_loc_new_name;
+	unsigned int flags;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_rename_end {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	u32 __data_loc_old_name;
+	u32 __data_loc_new_name;
+	unsigned int flags;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_readdir {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	loff_t start;
+	loff_t end;
+	int err;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_fallocate {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	int mode;
+	loff_t offset;
+	loff_t len;
+	loff_t size;
+	blkcnt_t blocks;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_direct_IO_enter {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	loff_t ki_pos;
+	int ki_flags;
+	u16 ki_ioprio;
+	unsigned long len;
+	int rw;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_direct_IO_exit {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	loff_t pos;
+	unsigned long len;
+	int rw;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_reserve_new_blocks {
+	struct trace_entry ent;
+	dev_t dev;
+	nid_t nid;
+	unsigned int ofs_in_node;
+	blkcnt_t count;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs__submit_page_bio {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	unsigned long index;
+	block_t old_blkaddr;
+	block_t new_blkaddr;
+	enum req_op op;
+	blk_opf_t op_flags;
+	int temp;
+	int type;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs__bio {
+	struct trace_entry ent;
+	dev_t dev;
+	dev_t target;
+	enum req_op op;
+	blk_opf_t op_flags;
+	int type;
+	sector_t sector;
+	unsigned int size;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_write_begin {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	loff_t pos;
+	unsigned int len;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_write_end {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	loff_t pos;
+	unsigned int len;
+	unsigned int copied;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs__folio {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	int type;
+	int dir;
+	unsigned long index;
+	int dirty;
+	int uptodate;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_replace_atomic_write_block {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	ino_t cow_ino;
+	unsigned long index;
+	block_t old_addr;
+	block_t new_addr;
+	bool recovery;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_mmap {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	unsigned long index;
+	vm_flags_t flags;
+	vm_fault_t ret;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_writepages {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	int type;
+	int dir;
+	long nr_to_write;
+	long pages_skipped;
+	loff_t range_start;
+	loff_t range_end;
+	unsigned long writeback_index;
+	int sync_mode;
+	char for_kupdate;
+	char for_background;
+	char tagged_writepages;
+	char for_reclaim;
+	char range_cyclic;
+	char for_sync;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_readpages {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	unsigned long start;
+	unsigned int nrpage;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_write_checkpoint {
+	struct trace_entry ent;
+	dev_t dev;
+	int reason;
+	u32 __data_loc_dest_msg;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_discard {
+	struct trace_entry ent;
+	dev_t dev;
+	block_t blkstart;
+	block_t blklen;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_reset_zone {
+	struct trace_entry ent;
+	dev_t dev;
+	block_t blkstart;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_issue_flush {
+	struct trace_entry ent;
+	dev_t dev;
+	unsigned int nobarrier;
+	unsigned int flush_merge;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_lookup_extent_tree_start {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	unsigned int pgofs;
+	enum extent_type type;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_lookup_read_extent_tree_end {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	unsigned int pgofs;
+	unsigned int fofs;
+	unsigned int len;
+	u32 blk;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_lookup_age_extent_tree_end {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	unsigned int pgofs;
+	unsigned int fofs;
+	unsigned int len;
+	unsigned long long age;
+	unsigned long long blocks;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_update_read_extent_tree_range {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	unsigned int pgofs;
+	u32 blk;
+	unsigned int len;
+	unsigned int c_len;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_update_age_extent_tree_range {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	unsigned int pgofs;
+	unsigned int len;
+	unsigned long long age;
+	unsigned long long blocks;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_shrink_extent_tree {
+	struct trace_entry ent;
+	dev_t dev;
+	unsigned int node_cnt;
+	unsigned int tree_cnt;
+	enum extent_type type;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_destroy_extent_tree {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	unsigned int node_cnt;
+	enum extent_type type;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_sync_dirty_inodes {
+	struct trace_entry ent;
+	dev_t dev;
+	int type;
+	s64 count;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_shutdown {
+	struct trace_entry ent;
+	dev_t dev;
+	unsigned int mode;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_zip_start {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	unsigned long idx;
+	unsigned int size;
+	unsigned int algtype;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_zip_end {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	unsigned long idx;
+	unsigned int size;
+	unsigned int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_iostat {
+	struct trace_entry ent;
+	dev_t dev;
+	unsigned long long app_dio;
+	unsigned long long app_bio;
+	unsigned long long app_wio;
+	unsigned long long app_mio;
+	unsigned long long app_bcdio;
+	unsigned long long app_mcdio;
+	unsigned long long fs_dio;
+	unsigned long long fs_cdio;
+	unsigned long long fs_nio;
+	unsigned long long fs_mio;
+	unsigned long long fs_gc_dio;
+	unsigned long long fs_gc_nio;
+	unsigned long long fs_cp_dio;
+	unsigned long long fs_cp_nio;
+	unsigned long long fs_cp_mio;
+	unsigned long long app_drio;
+	unsigned long long app_brio;
+	unsigned long long app_rio;
+	unsigned long long app_mrio;
+	unsigned long long app_bcrio;
+	unsigned long long app_mcrio;
+	unsigned long long fs_drio;
+	unsigned long long fs_gdrio;
+	unsigned long long fs_cdrio;
+	unsigned long long fs_nrio;
+	unsigned long long fs_mrio;
+	unsigned long long fs_discard;
+	unsigned long long fs_reset_zone;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_iostat_latency {
+	struct trace_entry ent;
+	dev_t dev;
+	unsigned int d_rd_peak;
+	unsigned int d_rd_avg;
+	unsigned int d_rd_cnt;
+	unsigned int n_rd_peak;
+	unsigned int n_rd_avg;
+	unsigned int n_rd_cnt;
+	unsigned int m_rd_peak;
+	unsigned int m_rd_avg;
+	unsigned int m_rd_cnt;
+	unsigned int d_wr_s_peak;
+	unsigned int d_wr_s_avg;
+	unsigned int d_wr_s_cnt;
+	unsigned int n_wr_s_peak;
+	unsigned int n_wr_s_avg;
+	unsigned int n_wr_s_cnt;
+	unsigned int m_wr_s_peak;
+	unsigned int m_wr_s_avg;
+	unsigned int m_wr_s_cnt;
+	unsigned int d_wr_as_peak;
+	unsigned int d_wr_as_avg;
+	unsigned int d_wr_as_cnt;
+	unsigned int n_wr_as_peak;
+	unsigned int n_wr_as_avg;
+	unsigned int n_wr_as_cnt;
+	unsigned int m_wr_as_peak;
+	unsigned int m_wr_as_avg;
+	unsigned int m_wr_as_cnt;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_bmap {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	sector_t lblock;
+	sector_t pblock;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs_fiemap {
+	struct trace_entry ent;
+	dev_t dev;
+	ino_t ino;
+	sector_t lblock;
+	sector_t pblock;
+	unsigned long long len;
+	unsigned int flags;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs__rw_start {
+	struct trace_entry ent;
+	u32 __data_loc_pathbuf;
+	loff_t offset;
+	int bytes;
+	loff_t i_size;
+	u32 __data_loc_cmdline;
+	pid_t pid;
+	ino_t ino;
+	char __data[0];
+};
+
+struct trace_event_raw_f2fs__rw_end {
+	struct trace_entry ent;
+	ino_t ino;
+	loff_t offset;
+	int bytes;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_f2fs_unlink_enter {
+	u32 name;
+};
+
+struct trace_event_data_offsets_f2fs_lookup_start {
+	u32 name;
+};
+
+struct trace_event_data_offsets_f2fs_lookup_end {
+	u32 name;
+};
+
+struct trace_event_data_offsets_f2fs_write_checkpoint {
+	u32 dest_msg;
+};
+
+struct cp_control {
+	int reason;
+	__u64 trim_start;
+	__u64 trim_end;
+	__u64 trim_minlen;
+};
+
+struct f2fs_report_zones_args {
+	struct f2fs_sb_info *sbi;
+	struct f2fs_dev_info *dev;
+};
+
+struct trace_event_data_offsets_f2fs__inode {};
+
+struct trace_event_data_offsets_f2fs__inode_exit {};
+
+struct trace_event_data_offsets_f2fs_sync_file_exit {};
+
+struct trace_event_data_offsets_f2fs_sync_fs {};
+
+struct trace_event_data_offsets_f2fs_truncate_data_blocks_range {};
+
+struct trace_event_data_offsets_f2fs__truncate_op {};
+
+struct trace_event_data_offsets_f2fs__truncate_node {};
+
+struct trace_event_data_offsets_f2fs_truncate_partial_nodes {};
+
+struct trace_event_data_offsets_f2fs_file_write_iter {};
+
+struct trace_event_data_offsets_f2fs_map_blocks {};
+
+struct trace_event_data_offsets_f2fs_background_gc {};
+
+struct trace_event_data_offsets_f2fs_gc_begin {};
+
+struct trace_event_data_offsets_f2fs_gc_end {};
+
+struct trace_event_data_offsets_f2fs_get_victim {};
+
+struct trace_event_data_offsets_f2fs_rename_start {
+	u32 old_name;
+	u32 new_name;
+};
+
+struct trace_event_data_offsets_f2fs_rename_end {
+	u32 old_name;
+	u32 new_name;
+};
+
+struct trace_event_data_offsets_f2fs_readdir {};
+
+struct trace_event_data_offsets_f2fs_fallocate {};
+
+struct trace_event_data_offsets_f2fs_direct_IO_enter {};
+
+struct trace_event_data_offsets_f2fs_direct_IO_exit {};
+
+struct trace_event_data_offsets_f2fs_reserve_new_blocks {};
+
+struct trace_event_data_offsets_f2fs__submit_page_bio {};
+
+struct trace_event_data_offsets_f2fs__bio {};
+
+struct trace_event_data_offsets_f2fs_write_begin {};
+
+struct trace_event_data_offsets_f2fs_write_end {};
+
+struct trace_event_data_offsets_f2fs__folio {};
+
+struct trace_event_data_offsets_f2fs_replace_atomic_write_block {};
+
+struct trace_event_data_offsets_f2fs_mmap {};
+
+struct trace_event_data_offsets_f2fs_writepages {};
+
+struct trace_event_data_offsets_f2fs_readpages {};
+
+struct trace_event_data_offsets_f2fs_discard {};
+
+struct trace_event_data_offsets_f2fs_reset_zone {};
+
+struct trace_event_data_offsets_f2fs_issue_flush {};
+
+struct trace_event_data_offsets_f2fs_lookup_extent_tree_start {};
+
+struct trace_event_data_offsets_f2fs_lookup_read_extent_tree_end {};
+
+struct trace_event_data_offsets_f2fs_lookup_age_extent_tree_end {};
+
+struct trace_event_data_offsets_f2fs_update_read_extent_tree_range {};
+
+struct trace_event_data_offsets_f2fs_update_age_extent_tree_range {};
+
+struct trace_event_data_offsets_f2fs_shrink_extent_tree {};
+
+struct trace_event_data_offsets_f2fs_destroy_extent_tree {};
+
+struct trace_event_data_offsets_f2fs_sync_dirty_inodes {};
+
+struct trace_event_data_offsets_f2fs_shutdown {};
+
+struct trace_event_data_offsets_f2fs_zip_start {};
+
+struct trace_event_data_offsets_f2fs_zip_end {};
+
+struct trace_event_data_offsets_f2fs_iostat {};
+
+struct trace_event_data_offsets_f2fs_iostat_latency {};
+
+struct trace_event_data_offsets_f2fs_bmap {};
+
+struct trace_event_data_offsets_f2fs_fiemap {};
+
+struct trace_event_data_offsets_f2fs__rw_start {
+	u32 pathbuf;
+	u32 cmdline;
+};
+
+struct trace_event_data_offsets_f2fs__rw_end {};
+
+enum nat_state {
+	TOTAL_NAT = 0,
+	DIRTY_NAT = 1,
+	RECLAIMABLE_NAT = 2,
+	MAX_NAT_STATE = 3,
+};
+
+enum nid_state {
+	FREE_NID = 0,
+	PREALLOC_NID = 1,
+	MAX_NID_STATE = 2,
+};
+
+enum dirty_type {
+	DIRTY_HOT_DATA = 0,
+	DIRTY_WARM_DATA = 1,
+	DIRTY_COLD_DATA = 2,
+	DIRTY_HOT_NODE = 3,
+	DIRTY_WARM_NODE = 4,
+	DIRTY_COLD_NODE = 5,
+	DIRTY___2 = 6,
+	PRE = 7,
+	NR_DIRTY_TYPE = 8,
+};
+
+enum {
+	NAT_BITMAP = 0,
+	SIT_BITMAP = 1,
+};
+
+struct ino_entry {
+	struct list_head list;
+	nid_t ino;
+	unsigned int dirty_device;
+};
+
+struct f2fs_orphan_block {
+	__le32 ino[1020];
+	__le32 reserved;
+	__le16 blk_addr;
+	__le16 blk_count;
+	__le32 entry_count;
+	__le32 check_sum;
+};
+
+struct free_nid {
+	struct list_head list;
+	nid_t nid;
+	int state;
+};
+
+struct ckpt_req {
+	struct completion wait;
+	struct llist_node llnode;
+	int ret;
+	ktime_t queue_time;
+};
+
+enum {
+	LFS = 0,
+	SSR = 1,
+	AT_SSR = 2,
+};
+
+enum need_lock_type {
+	LOCK_REQ = 0,
+	LOCK_DONE = 1,
+	LOCK_RETRY = 2,
+};
+
+struct victim_entry {
+	struct rb_node rb_node;
+	unsigned long long mtime;
+	unsigned int segno;
+	struct list_head list;
+};
+
+struct inode_entry {
+	struct list_head list;
+	struct inode *inode;
+};
+
+struct gc_inode_list {
+	struct list_head ilist;
+	struct xarray iroot;
+};
+
+enum bio_post_read_step___2 {
+	STEP_DECRYPT___2 = 1,
+	STEP_DECOMPRESS = 2,
+	STEP_VERITY___2 = 4,
+};
+
+enum mem_type {
+	FREE_NIDS = 0,
+	NAT_ENTRIES = 1,
+	DIRTY_DENTS = 2,
+	INO_ENTRIES = 3,
+	READ_EXTENT_CACHE = 4,
+	AGE_EXTENT_CACHE = 5,
+	DISCARD_CACHE = 6,
+	COMPRESS_PAGE = 7,
+	BASE_CHECK = 8,
+};
+
+struct bio_entry {
+	struct bio *bio;
+	struct list_head list;
+};
+
+struct bio_post_read_ctx___2 {
+	struct bio *bio;
+	struct f2fs_sb_info *sbi;
+	struct work_struct work;
+	unsigned int enabled_steps;
+	bool decompression_attempted;
+	block_t fs_blkaddr;
+};
+
+struct bio_iostat_ctx {
+	struct f2fs_sb_info *sbi;
+	unsigned long submit_ts;
+	enum page_type type;
+	struct bio_post_read_ctx___2 *post_read_ctx;
+};
+
+struct bvec_iter_all {
+	struct bio_vec bv;
+	int idx;
+	unsigned int done;
+};
+
+struct compress_data;
+
+struct compress_ctx {
+	struct inode *inode;
+	unsigned long cluster_idx;
+	unsigned int cluster_size;
+	unsigned int log_cluster_size;
+	struct page **rpages;
+	unsigned int nr_rpages;
+	struct page **cpages;
+	unsigned int nr_cpages;
+	unsigned int valid_nr_cpages;
+	void *rbuf;
+	struct compress_data *cbuf;
+	size_t rlen;
+	size_t clen;
+	void *private;
+	void *private2;
+};
+
+struct compress_data {
+	__le32 clen;
+	__le32 chksum;
+	__le32 reserved[4];
+	u8 cdata[0];
+};
+
+struct decompress_io_ctx {
+	u32 magic;
+	struct inode *inode;
+	unsigned long cluster_idx;
+	unsigned int cluster_size;
+	unsigned int log_cluster_size;
+	struct page **rpages;
+	unsigned int nr_rpages;
+	struct page **cpages;
+	unsigned int nr_cpages;
+	struct page **tpages;
+	void *rbuf;
+	struct compress_data *cbuf;
+	size_t rlen;
+	size_t clen;
+	atomic_t remaining_pages;
+	refcount_t refcnt;
+	bool failed;
+	bool need_verity;
+	void *private;
+	void *private2;
+	struct work_struct verity_work;
+	struct work_struct free_work;
+};
+
+enum {
+	IS_CHECKPOINTED = 0,
+	HAS_FSYNCED_INODE = 1,
+	HAS_LAST_FSYNC = 2,
+	IS_DIRTY = 3,
+	IS_PREALLOC = 4,
+};
+
+enum {
+	NAT_JOURNAL = 0,
+	SIT_JOURNAL = 1,
+};
+
+struct fsync_node_entry {
+	struct list_head list;
+	struct page *page;
+	unsigned int seq_id;
+};
+
+struct nat_entry {
+	struct list_head list;
+	struct node_info ni;
+};
+
+struct f2fs_nat_block {
+	struct f2fs_nat_entry entries[455];
+};
+
+struct nat_entry_set {
+	struct list_head set_list;
+	struct list_head entry_list;
+	nid_t set;
+	unsigned int entry_cnt;
+};
+
+enum {
+	DPOLICY_BG = 0,
+	DPOLICY_FORCE = 1,
+	DPOLICY_FSTRIM = 2,
+	DPOLICY_UMOUNT = 3,
+	MAX_DPOLICY = 4,
+};
+
+enum {
+	D_PREP = 0,
+	D_PARTIAL = 1,
+	D_SUBMIT = 2,
+	D_DONE = 3,
+};
+
+enum {
+	DPOLICY_IO_AWARE_DISABLE = 0,
+	DPOLICY_IO_AWARE_ENABLE = 1,
+	DPOLICY_IO_AWARE_MAX = 2,
+};
+
+enum blk_zone_cond {
+	BLK_ZONE_COND_NOT_WP = 0,
+	BLK_ZONE_COND_EMPTY = 1,
+	BLK_ZONE_COND_IMP_OPEN = 2,
+	BLK_ZONE_COND_EXP_OPEN = 3,
+	BLK_ZONE_COND_CLOSED = 4,
+	BLK_ZONE_COND_READONLY = 13,
+	BLK_ZONE_COND_FULL = 14,
+	BLK_ZONE_COND_OFFLINE = 15,
+};
+
+struct flush_cmd {
+	struct completion wait;
+	struct llist_node llnode;
+	nid_t ino;
+	int ret;
+};
+
+struct discard_entry {
+	struct list_head list;
+	block_t start_blkaddr;
+	unsigned char discard_map[64];
+};
+
+struct sit_entry_set {
+	struct list_head set_list;
+	unsigned int start_segno;
+	unsigned int entry_cnt;
+};
+
+struct revoke_entry {
+	struct list_head list;
+	block_t old_addr;
+	unsigned long index;
+};
+
+struct discard_info {
+	block_t lstart;
+	block_t len;
+	block_t start;
+};
+
+struct discard_cmd {
+	struct rb_node rb_node;
+	struct discard_info di;
+	struct list_head list;
+	struct completion wait;
+	struct block_device *bdev;
+	unsigned short ref;
+	unsigned char state;
+	unsigned char queued;
+	int error;
+	spinlock_t lock;
+	unsigned short bio_ref;
+};
+
+struct f2fs_sit_block {
+	struct f2fs_sit_entry entries[55];
+};
+
+struct check_zone_write_pointer_args {
+	struct f2fs_sb_info *sbi;
+	struct f2fs_dev_info *fdev;
+};
+
+struct discard_policy {
+	int type;
+	unsigned int min_interval;
+	unsigned int mid_interval;
+	unsigned int max_interval;
+	unsigned int max_requests;
+	unsigned int io_aware_gran;
+	bool io_aware;
+	bool sync;
+	bool ordered;
+	bool timeout;
+	unsigned int granularity;
+};
+
+struct fsync_inode_entry {
+	struct list_head list;
+	struct inode *inode;
+	block_t blkaddr;
+	block_t last_dentry;
+};
+
+struct f2fs_attr {
+	struct attribute attr;
+	ssize_t (*show)(struct f2fs_attr *, struct f2fs_sb_info *, char *);
+	ssize_t (*store)(struct f2fs_attr *, struct f2fs_sb_info *, const char *, size_t);
+	int struct_type;
+	int offset;
+	int id;
+};
+
+enum {
+	GC_THREAD = 0,
+	SM_INFO = 1,
+	DCC_INFO = 2,
+	NM_INFO = 3,
+	F2FS_SBI = 4,
+	STAT_INFO = 5,
+	RESERVED_BLOCKS = 6,
+	CPRC_INFO = 7,
+	ATGC_INFO = 8,
+};
+
+struct f2fs_xattr_entry {
+	__u8 e_name_index;
+	__u8 e_name_len;
+	__le16 e_value_size;
+	char e_name[0];
+};
+
+struct f2fs_xattr_header {
+	__le32 h_magic;
+	__le32 h_refcount;
+	__u32 h_reserved[4];
+};
+
+struct f2fs_acl_header {
+	__le32 a_version;
+};
+
+struct f2fs_acl_entry {
+	__le16 e_tag;
+	__le16 e_perm;
+	__le32 e_id;
+};
+
+struct fsverity_descriptor_location {
+	__le32 version;
+	__le32 size;
+	__le64 pos;
+};
+
+struct f2fs_compress_ops {
+	int (*init_compress_ctx)(struct compress_ctx *);
+	void (*destroy_compress_ctx)(struct compress_ctx *);
+	int (*compress_pages)(struct compress_ctx *);
+	int (*init_decompress_ctx)(struct decompress_io_ctx *);
+	void (*destroy_decompress_ctx)(struct decompress_io_ctx *);
+	int (*decompress_pages)(struct decompress_io_ctx *);
+	bool (*is_level_valid)(int);
+};
+
+struct compress_io_ctx {
+	u32 magic;
+	struct inode *inode;
+	struct page **rpages;
+	unsigned int nr_rpages;
+	atomic_t pending_pages;
+};
+
+typedef enum {
+	ZSTD_fast = 1,
+	ZSTD_dfast = 2,
+	ZSTD_greedy = 3,
+	ZSTD_lazy = 4,
+	ZSTD_lazy2 = 5,
+	ZSTD_btlazy2 = 6,
+	ZSTD_btopt = 7,
+	ZSTD_btultra = 8,
+	ZSTD_btultra2 = 9,
+} ZSTD_strategy;
+
+typedef struct {
+	unsigned int windowLog;
+	unsigned int chainLog;
+	unsigned int hashLog;
+	unsigned int searchLog;
+	unsigned int minMatch;
+	unsigned int targetLength;
+	ZSTD_strategy strategy;
+} ZSTD_compressionParameters;
+
+typedef struct {
+	int contentSizeFlag;
+	int checksumFlag;
+	int noDictIDFlag;
+} ZSTD_frameParameters;
+
+typedef struct {
+	ZSTD_compressionParameters cParams;
+	ZSTD_frameParameters fParams;
+} ZSTD_parameters;
+
+typedef ZSTD_parameters zstd_parameters;
+
+typedef ZSTD_compressionParameters zstd_compression_parameters;
+
+typedef enum {
+	ZSTDcs_created = 0,
+	ZSTDcs_init = 1,
+	ZSTDcs_ongoing = 2,
+	ZSTDcs_ending = 3,
+} ZSTD_compressionStage_e;
+
+typedef enum {
+	ZSTD_dictDefaultAttach = 0,
+	ZSTD_dictForceAttach = 1,
+	ZSTD_dictForceCopy = 2,
+	ZSTD_dictForceLoad = 3,
+} ZSTD_dictAttachPref_e;
+
+typedef enum {
+	ZSTD_ps_auto = 0,
+	ZSTD_ps_enable = 1,
+	ZSTD_ps_disable = 2,
+} ZSTD_paramSwitch_e;
+
+typedef struct {
+	ZSTD_paramSwitch_e enableLdm;
+	U32 hashLog;
+	U32 bucketSizeLog;
+	U32 minMatchLength;
+	U32 hashRateLog;
+	U32 windowLog;
+} ldmParams_t;
+
+typedef enum {
+	ZSTD_sf_noBlockDelimiters = 0,
+	ZSTD_sf_explicitBlockDelimiters = 1,
+} ZSTD_sequenceFormat_e;
+
+struct ZSTD_CCtx_params_s {
+	ZSTD_format_e format;
+	ZSTD_compressionParameters cParams;
+	ZSTD_frameParameters fParams;
+	int compressionLevel;
+	int forceWindow;
+	size_t targetCBlockSize;
+	int srcSizeHint;
+	ZSTD_dictAttachPref_e attachDictPref;
+	ZSTD_paramSwitch_e literalCompressionMode;
+	int nbWorkers;
+	size_t jobSize;
+	int overlapLog;
+	int rsyncable;
+	ldmParams_t ldmParams;
+	int enableDedicatedDictSearch;
+	ZSTD_bufferMode_e inBufferMode;
+	ZSTD_bufferMode_e outBufferMode;
+	ZSTD_sequenceFormat_e blockDelimiters;
+	int validateSequences;
+	ZSTD_paramSwitch_e useBlockSplitter;
+	ZSTD_paramSwitch_e useRowMatchFinder;
+	int deterministicRefPrefix;
+	ZSTD_customMem customMem;
+};
+
+typedef struct ZSTD_CCtx_params_s ZSTD_CCtx_params;
+
+typedef enum {
+	ZSTD_cwksp_alloc_objects = 0,
+	ZSTD_cwksp_alloc_buffers = 1,
+	ZSTD_cwksp_alloc_aligned = 2,
+} ZSTD_cwksp_alloc_phase_e;
+
+typedef enum {
+	ZSTD_cwksp_dynamic_alloc = 0,
+	ZSTD_cwksp_static_alloc = 1,
+} ZSTD_cwksp_static_alloc_e;
+
+typedef struct {
+	void *workspace;
+	void *workspaceEnd;
+	void *objectEnd;
+	void *tableEnd;
+	void *tableValidEnd;
+	void *allocStart;
+	BYTE allocFailed;
+	int workspaceOversizedDuration;
+	ZSTD_cwksp_alloc_phase_e phase;
+	ZSTD_cwksp_static_alloc_e isStatic;
+} ZSTD_cwksp;
+
+struct POOL_ctx_s;
+
+typedef struct POOL_ctx_s ZSTD_threadPool;
+
+typedef struct {
+	unsigned int offset;
+	unsigned int litLength;
+	unsigned int matchLength;
+	unsigned int rep;
+} ZSTD_Sequence;
+
+typedef struct {
+	int collectSequences;
+	ZSTD_Sequence *seqStart;
+	size_t seqIndex;
+	size_t maxSequences;
+} SeqCollector;
+
+typedef enum {
+	ZSTD_llt_none = 0,
+	ZSTD_llt_literalLength = 1,
+	ZSTD_llt_matchLength = 2,
+} ZSTD_longLengthType_e;
+
+struct seqDef_s;
+
+typedef struct seqDef_s seqDef;
+
+typedef struct {
+	seqDef *sequencesStart;
+	seqDef *sequences;
+	BYTE *litStart;
+	BYTE *lit;
+	BYTE *llCode;
+	BYTE *mlCode;
+	BYTE *ofCode;
+	size_t maxNbSeq;
+	size_t maxNbLit;
+	ZSTD_longLengthType_e longLengthType;
+	U32 longLengthPos;
+} seqStore_t;
+
+typedef struct {
+	const BYTE *nextSrc;
+	const BYTE *base;
+	const BYTE *dictBase;
+	U32 dictLimit;
+	U32 lowLimit;
+	U32 nbOverflowCorrections;
+} ZSTD_window_t;
+
+typedef struct {
+	U32 offset;
+	U32 checksum;
+} ldmEntry_t;
+
+typedef struct {
+	const BYTE *split;
+	U32 hash;
+	U32 checksum;
+	ldmEntry_t *bucket;
+} ldmMatchCandidate_t;
+
+typedef struct {
+	ZSTD_window_t window;
+	ldmEntry_t *hashTable;
+	U32 loadedDictEnd;
+	BYTE *bucketOffsets;
+	size_t splitIndices[64];
+	ldmMatchCandidate_t matchCandidates[64];
+} ldmState_t;
+
+typedef struct {
+	U32 offset;
+	U32 litLength;
+	U32 matchLength;
+} rawSeq;
+
+typedef struct {
+	rawSeq *seq;
+	size_t pos;
+	size_t posInSequence;
+	size_t size;
+	size_t capacity;
+} rawSeqStore_t;
+
+typedef size_t HUF_CElt;
+
+typedef enum {
+	HUF_repeat_none = 0,
+	HUF_repeat_check = 1,
+	HUF_repeat_valid = 2,
+} HUF_repeat;
+
+typedef struct {
+	HUF_CElt CTable[257];
+	HUF_repeat repeatMode;
+} ZSTD_hufCTables_t;
+
+typedef unsigned int FSE_CTable;
+
+typedef enum {
+	FSE_repeat_none = 0,
+	FSE_repeat_check = 1,
+	FSE_repeat_valid = 2,
+} FSE_repeat;
+
+typedef struct {
+	FSE_CTable offcodeCTable[193];
+	FSE_CTable matchlengthCTable[363];
+	FSE_CTable litlengthCTable[329];
+	FSE_repeat offcode_repeatMode;
+	FSE_repeat matchlength_repeatMode;
+	FSE_repeat litlength_repeatMode;
+} ZSTD_fseCTables_t;
+
+typedef struct {
+	ZSTD_hufCTables_t huf;
+	ZSTD_fseCTables_t fse;
+} ZSTD_entropyCTables_t;
+
+typedef struct {
+	ZSTD_entropyCTables_t entropy;
+	U32 rep[3];
+} ZSTD_compressedBlockState_t;
+
+typedef struct {
+	U32 off;
+	U32 len;
+} ZSTD_match_t;
+
+typedef struct {
+	int price;
+	U32 off;
+	U32 mlen;
+	U32 litlen;
+	U32 rep[3];
+} ZSTD_optimal_t;
+
+typedef enum {
+	zop_dynamic = 0,
+	zop_predef = 1,
+} ZSTD_OptPrice_e;
+
+typedef struct {
+	unsigned int *litFreq;
+	unsigned int *litLengthFreq;
+	unsigned int *matchLengthFreq;
+	unsigned int *offCodeFreq;
+	ZSTD_match_t *matchTable;
+	ZSTD_optimal_t *priceTable;
+	U32 litSum;
+	U32 litLengthSum;
+	U32 matchLengthSum;
+	U32 offCodeSum;
+	U32 litSumBasePrice;
+	U32 litLengthSumBasePrice;
+	U32 matchLengthSumBasePrice;
+	U32 offCodeSumBasePrice;
+	ZSTD_OptPrice_e priceType;
+	const ZSTD_entropyCTables_t *symbolCosts;
+	ZSTD_paramSwitch_e literalCompressionMode;
+} optState_t;
+
+struct ZSTD_matchState_t;
+
+typedef struct ZSTD_matchState_t ZSTD_matchState_t;
+
+struct ZSTD_matchState_t {
+	ZSTD_window_t window;
+	U32 loadedDictEnd;
+	U32 nextToUpdate;
+	U32 hashLog3;
+	U32 rowHashLog;
+	U16 *tagTable;
+	U32 hashCache[8];
+	U32 *hashTable;
+	U32 *hashTable3;
+	U32 *chainTable;
+	U32 forceNonContiguous;
+	int dedicatedDictSearch;
+	optState_t opt;
+	const ZSTD_matchState_t *dictMatchState;
+	ZSTD_compressionParameters cParams;
+	const rawSeqStore_t *ldmSeqStore;
+};
+
+typedef struct {
+	ZSTD_compressedBlockState_t *prevCBlock;
+	ZSTD_compressedBlockState_t *nextCBlock;
+	ZSTD_matchState_t matchState;
+} ZSTD_blockState_t;
+
+typedef enum {
+	ZSTDb_not_buffered = 0,
+	ZSTDb_buffered = 1,
+} ZSTD_buffered_policy_e;
+
+typedef enum {
+	zcss_init = 0,
+	zcss_load = 1,
+	zcss_flush = 2,
+} ZSTD_cStreamStage;
+
+typedef enum {
+	ZSTD_dct_auto = 0,
+	ZSTD_dct_rawContent = 1,
+	ZSTD_dct_fullDict = 2,
+} ZSTD_dictContentType_e;
+
+struct ZSTD_CDict_s;
+
+typedef struct ZSTD_CDict_s ZSTD_CDict;
+
+typedef struct {
+	void *dictBuffer;
+	const void *dict;
+	size_t dictSize;
+	ZSTD_dictContentType_e dictContentType;
+	ZSTD_CDict *cdict;
+} ZSTD_localDict;
+
+struct ZSTD_prefixDict_s {
+	const void *dict;
+	size_t dictSize;
+	ZSTD_dictContentType_e dictContentType;
+};
+
+typedef struct ZSTD_prefixDict_s ZSTD_prefixDict;
+
+typedef enum {
+	set_basic = 0,
+	set_rle = 1,
+	set_compressed = 2,
+	set_repeat = 3,
+} symbolEncodingType_e;
+
+typedef struct {
+	symbolEncodingType_e hType;
+	BYTE hufDesBuffer[128];
+	size_t hufDesSize;
+} ZSTD_hufCTablesMetadata_t;
+
+typedef struct {
+	symbolEncodingType_e llType;
+	symbolEncodingType_e ofType;
+	symbolEncodingType_e mlType;
+	BYTE fseTablesBuffer[133];
+	size_t fseTablesSize;
+	size_t lastCountSize;
+} ZSTD_fseCTablesMetadata_t;
+
+typedef struct {
+	ZSTD_hufCTablesMetadata_t hufMetadata;
+	ZSTD_fseCTablesMetadata_t fseMetadata;
+} ZSTD_entropyCTablesMetadata_t;
+
+typedef struct {
+	seqStore_t fullSeqStoreChunk;
+	seqStore_t firstHalfSeqStore;
+	seqStore_t secondHalfSeqStore;
+	seqStore_t currSeqStore;
+	seqStore_t nextSeqStore;
+	U32 partitions[196];
+	ZSTD_entropyCTablesMetadata_t entropyMetadata;
+} ZSTD_blockSplitCtx;
+
+struct ZSTD_CCtx_s {
+	ZSTD_compressionStage_e stage;
+	int cParamsChanged;
+	int bmi2;
+	ZSTD_CCtx_params requestedParams;
+	ZSTD_CCtx_params appliedParams;
+	ZSTD_CCtx_params simpleApiParams;
+	U32 dictID;
+	size_t dictContentSize;
+	ZSTD_cwksp workspace;
+	size_t blockSize;
+	unsigned long long pledgedSrcSizePlusOne;
+	unsigned long long consumedSrcSize;
+	unsigned long long producedCSize;
+	struct xxh64_state xxhState;
+	ZSTD_customMem customMem;
+	ZSTD_threadPool *pool;
+	size_t staticSize;
+	SeqCollector seqCollector;
+	int isFirstBlock;
+	int initialized;
+	seqStore_t seqStore;
+	ldmState_t ldmState;
+	rawSeq *ldmSequences;
+	size_t maxNbLdmSequences;
+	rawSeqStore_t externSeqStore;
+	ZSTD_blockState_t blockState;
+	U32 *entropyWorkspace;
+	ZSTD_buffered_policy_e bufferedPolicy;
+	char *inBuff;
+	size_t inBuffSize;
+	size_t inToCompress;
+	size_t inBuffPos;
+	size_t inBuffTarget;
+	char *outBuff;
+	size_t outBuffSize;
+	size_t outBuffContentSize;
+	size_t outBuffFlushedSize;
+	ZSTD_cStreamStage streamStage;
+	U32 frameEnded;
+	ZSTD_inBuffer expectedInBuffer;
+	size_t expectedOutBufferSize;
+	ZSTD_localDict localDict;
+	const ZSTD_CDict *cdict;
+	ZSTD_prefixDict prefixDict;
+	ZSTD_blockSplitCtx blockSplitCtx;
+};
+
+typedef struct ZSTD_CCtx_s ZSTD_CCtx;
+
+typedef ZSTD_CCtx ZSTD_CStream;
+
+typedef ZSTD_CStream zstd_cstream;
+
+typedef enum {
+	ZSTD_error_no_error = 0,
+	ZSTD_error_GENERIC = 1,
+	ZSTD_error_prefix_unknown = 10,
+	ZSTD_error_version_unsupported = 12,
+	ZSTD_error_frameParameter_unsupported = 14,
+	ZSTD_error_frameParameter_windowTooLarge = 16,
+	ZSTD_error_corruption_detected = 20,
+	ZSTD_error_checksum_wrong = 22,
+	ZSTD_error_dictionary_corrupted = 30,
+	ZSTD_error_dictionary_wrong = 32,
+	ZSTD_error_dictionaryCreation_failed = 34,
+	ZSTD_error_parameter_unsupported = 40,
+	ZSTD_error_parameter_outOfBound = 42,
+	ZSTD_error_tableLog_tooLarge = 44,
+	ZSTD_error_maxSymbolValue_tooLarge = 46,
+	ZSTD_error_maxSymbolValue_tooSmall = 48,
+	ZSTD_error_stage_wrong = 60,
+	ZSTD_error_init_missing = 62,
+	ZSTD_error_memory_allocation = 64,
+	ZSTD_error_workSpace_tooSmall = 66,
+	ZSTD_error_dstSize_tooSmall = 70,
+	ZSTD_error_srcSize_wrong = 72,
+	ZSTD_error_dstBuffer_null = 74,
+	ZSTD_error_frameIndex_tooLarge = 100,
+	ZSTD_error_seekableIO = 102,
+	ZSTD_error_dstBuffer_wrong = 104,
+	ZSTD_error_srcBuffer_wrong = 105,
+	ZSTD_error_maxCode = 120,
+} ZSTD_ErrorCode;
+
+typedef ZSTD_ErrorCode zstd_error_code;
+
+enum pstore_type_id {
+	PSTORE_TYPE_DMESG = 0,
+	PSTORE_TYPE_MCE = 1,
+	PSTORE_TYPE_CONSOLE = 2,
+	PSTORE_TYPE_FTRACE = 3,
+	PSTORE_TYPE_PPC_RTAS = 4,
+	PSTORE_TYPE_PPC_OF = 5,
+	PSTORE_TYPE_PPC_COMMON = 6,
+	PSTORE_TYPE_PMSG = 7,
+	PSTORE_TYPE_PPC_OPAL = 8,
+	PSTORE_TYPE_MAX = 9,
+};
+
+enum {
+	Opt_kmsg_bytes = 0,
+	Opt_err___7 = 1,
+};
+
+struct pstore_record;
+
+struct pstore_private {
+	struct list_head list;
+	struct dentry *dentry;
+	struct pstore_record *record;
+	size_t total_size;
+};
+
+struct pstore_info;
+
+struct pstore_record {
+	struct pstore_info *psi;
+	enum pstore_type_id type;
+	u64 id;
+	struct timespec64 time;
+	char *buf;
+	ssize_t size;
+	ssize_t ecc_notice_size;
+	void *priv;
+	int count;
+	enum kmsg_dump_reason reason;
+	unsigned int part;
+	bool compressed;
+};
+
+struct pstore_info {
+	struct module *owner;
+	const char *name;
+	spinlock_t buf_lock;
+	char *buf;
+	size_t bufsize;
+	struct mutex read_mutex;
+	int flags;
+	int max_reason;
+	void *data;
+	int (*open)(struct pstore_info *);
+	int (*close)(struct pstore_info *);
+	ssize_t (*read)(struct pstore_record *);
+	int (*write)(struct pstore_record *);
+	int (*write_user)(struct pstore_record *, const char __attribute__((btf_type_tag("user"))) *);
+	int (*erase)(struct pstore_record *);
+};
+
+struct pstore_ftrace_record {
+	unsigned long ip;
+	unsigned long parent_ip;
+	u64 ts;
+};
+
+struct pstore_ftrace_seq_data {
+	const void *ptr;
+	size_t off;
+	size_t size;
+};
+
+typedef unsigned char Byte;
+
+typedef unsigned long uLong;
+
+struct internal_state;
+
+struct z_stream_s {
+	const Byte *next_in;
+	uLong avail_in;
+	uLong total_in;
+	Byte *next_out;
+	uLong avail_out;
+	uLong total_out;
+	char *msg;
+	struct internal_state *state;
+	void *workspace;
+	int data_type;
+	uLong adler;
+	uLong reserved;
+};
+
+struct internal_state {
+	int dummy;
+};
+
+typedef struct z_stream_s z_stream;
+
+typedef z_stream *z_streamp;
+
+struct persistent_ram_ecc_info {
+	int block_size;
+	int ecc_size;
+	int symsize;
+	int poly;
+	uint16_t *par;
+};
+
+struct persistent_ram_zone;
+
+struct ramoops_context {
+	struct persistent_ram_zone **dprzs;
+	struct persistent_ram_zone *cprz;
+	struct persistent_ram_zone **fprzs;
+	struct persistent_ram_zone *mprz;
+	phys_addr_t phys_addr;
+	unsigned long size;
+	unsigned int memtype;
+	size_t record_size;
+	size_t console_size;
+	size_t ftrace_size;
+	size_t pmsg_size;
+	u32 flags;
+	struct persistent_ram_ecc_info ecc_info;
+	unsigned int max_dump_cnt;
+	unsigned int dump_write_cnt;
+	unsigned int dump_read_cnt;
+	unsigned int console_read_cnt;
+	unsigned int max_ftrace_cnt;
+	unsigned int ftrace_read_cnt;
+	unsigned int pmsg_read_cnt;
+	struct pstore_info pstore;
+};
+
+struct persistent_ram_buffer;
+
+struct rs_control;
+
+struct persistent_ram_zone {
+	phys_addr_t paddr;
+	size_t size;
+	void *vaddr;
+	char *label;
+	enum pstore_type_id type;
+	u32 flags;
+	raw_spinlock_t buffer_lock;
+	struct persistent_ram_buffer *buffer;
+	size_t buffer_size;
+	char *par_buffer;
+	char *par_header;
+	struct rs_control *rs_decoder;
+	int corrected_bytes;
+	int bad_blocks;
+	struct persistent_ram_ecc_info ecc_info;
+	char *old_log;
+	size_t old_log_size;
+};
+
+struct ramoops_platform_data {
+	unsigned long mem_size;
+	phys_addr_t mem_address;
+	unsigned int mem_type;
+	unsigned long record_size;
+	unsigned long console_size;
+	unsigned long ftrace_size;
+	unsigned long pmsg_size;
+	int max_reason;
+	u32 flags;
+	struct persistent_ram_ecc_info ecc_info;
+};
+
+struct persistent_ram_buffer {
+	uint32_t sig;
+	atomic_t start;
+	atomic_t size;
+	uint8_t data[0];
+};
+
+struct rs_codec;
+
+struct rs_control {
+	struct rs_codec *codec;
+	uint16_t buffers[0];
+};
+
+struct rs_codec {
+	int mm;
+	int nn;
+	uint16_t *alpha_to;
+	uint16_t *index_of;
+	uint16_t *genpoly;
+	int nroots;
+	int fcr;
+	int prim;
+	int iprim;
+	int gfpoly;
+	int (*gffunc)(int);
+	int users;
+	struct list_head list;
+};
+
+typedef void (*btf_trace_erofs_lookup)(void *, struct inode *, struct dentry *, unsigned int);
+
+typedef void (*btf_trace_erofs_fill_inode)(void *, struct inode *);
+
+typedef void (*btf_trace_erofs_read_folio)(void *, struct folio *, bool);
+
+typedef void (*btf_trace_erofs_readpages)(void *, struct inode *, unsigned long, unsigned int, bool);
+
+struct erofs_map_blocks;
+
+typedef void (*btf_trace_erofs_map_blocks_enter)(void *, struct inode *, struct erofs_map_blocks *, unsigned int);
+
+enum erofs_kmap_type {
+	EROFS_NO_KMAP = 0,
+	EROFS_KMAP = 1,
+};
+
+struct erofs_buf {
+	struct inode *inode;
+	struct page *page;
+	void *base;
+	enum erofs_kmap_type kmap_type;
+};
+
+typedef u64 erofs_off_t;
+
+struct erofs_map_blocks {
+	struct erofs_buf buf;
+	erofs_off_t m_pa;
+	erofs_off_t m_la;
+	u64 m_plen;
+	u64 m_llen;
+	unsigned short m_deviceid;
+	char m_algorithmformat;
+	unsigned int m_flags;
+};
+
+typedef void (*btf_trace_z_erofs_map_blocks_iter_enter)(void *, struct inode *, struct erofs_map_blocks *, unsigned int);
+
+typedef void (*btf_trace_erofs_map_blocks_exit)(void *, struct inode *, struct erofs_map_blocks *, unsigned int, int);
+
+typedef void (*btf_trace_z_erofs_map_blocks_iter_exit)(void *, struct inode *, struct erofs_map_blocks *, unsigned int, int);
+
+typedef void (*btf_trace_erofs_destroy_inode)(void *, struct inode *);
+
+enum {
+	EROFS_ZIP_CACHE_DISABLED = 0,
+	EROFS_ZIP_CACHE_READAHEAD = 1,
+	EROFS_ZIP_CACHE_READAROUND = 2,
+};
+
+enum {
+	EROFS_SYNC_DECOMPRESS_AUTO = 0,
+	EROFS_SYNC_DECOMPRESS_FORCE_ON = 1,
+	EROFS_SYNC_DECOMPRESS_FORCE_OFF = 2,
+};
+
+enum {
+	Opt_user_xattr___3 = 0,
+	Opt_acl___3 = 1,
+	Opt_cache_strategy = 2,
+	Opt_dax___2 = 3,
+	Opt_dax_enum = 4,
+	Opt_device = 5,
+	Opt_fsid = 6,
+	Opt_domain_id = 7,
+	Opt_err___8 = 8,
+};
+
+typedef u32 erofs_blk_t;
+
+typedef u64 erofs_nid_t;
+
+struct erofs_inode {
+	erofs_nid_t nid;
+	unsigned long flags;
+	unsigned char datalayout;
+	unsigned char inode_isize;
+	unsigned int xattr_isize;
+	unsigned int xattr_name_filter;
+	unsigned int xattr_shared_count;
+	unsigned int *xattr_shared_xattrs;
+	union {
+		erofs_blk_t raw_blkaddr;
+		struct {
+			unsigned short chunkformat;
+			unsigned char chunkbits;
+		};
+		struct {
+			unsigned short z_advise;
+			unsigned char z_algorithmtype[2];
+			unsigned char z_logical_clusterbits;
+			unsigned long z_tailextent_headlcn;
+			union {
+				struct {
+					erofs_off_t z_idataoff;
+					unsigned short z_idata_size;
+				};
+				erofs_off_t z_fragmentoff;
+			};
+		};
+	};
+	struct inode vfs_inode;
+};
+
+struct trace_event_raw_erofs_lookup {
+	struct trace_entry ent;
+	dev_t dev;
+	erofs_nid_t nid;
+	u32 __data_loc_name;
+	unsigned int flags;
+	char __data[0];
+};
+
+struct erofs_mount_opts {
+	unsigned char cache_strategy;
+	unsigned int sync_decompress;
+	unsigned int max_sync_decompress_pages;
+	unsigned int mount_opt;
+};
+
+struct erofs_sb_lz4_info {
+	u16 max_distance_pages;
+	u16 max_pclusterblks;
+};
+
+struct fscache_volume;
+
+struct erofs_dev_context;
+
+struct erofs_xattr_prefix_item;
+
+struct erofs_fscache;
+
+struct erofs_domain;
+
+struct erofs_sb_info {
+	struct erofs_mount_opts opt;
+	struct list_head list;
+	struct mutex umount_mutex;
+	struct xarray managed_pslots;
+	unsigned int shrinker_run_no;
+	u16 available_compr_algs;
+	struct inode *managed_cache;
+	struct erofs_sb_lz4_info lz4;
+	struct inode *packed_inode;
+	struct erofs_dev_context *devs;
+	struct dax_device *dax_dev;
+	u64 dax_part_off;
+	u64 total_blocks;
+	u32 primarydevice_blocks;
+	u32 meta_blkaddr;
+	u32 xattr_blkaddr;
+	u32 xattr_prefix_start;
+	u8 xattr_prefix_count;
+	struct erofs_xattr_prefix_item *xattr_prefixes;
+	unsigned int xattr_filter_reserved;
+	u16 device_id_mask;
+	unsigned char islotbits;
+	unsigned char blkszbits;
+	u32 sb_size;
+	u32 build_time_nsec;
+	u64 build_time;
+	erofs_nid_t root_nid;
+	erofs_nid_t packed_nid;
+	u64 inos;
+	u8 uuid[16];
+	u8 volume_name[16];
+	u32 feature_compat;
+	u32 feature_incompat;
+	struct kobject s_kobj;
+	struct completion s_kobj_unregister;
+	struct fscache_volume *volume;
+	struct erofs_fscache *s_fscache;
+	struct erofs_domain *domain;
+	char *fsid;
+	char *domain_id;
+};
+
+struct erofs_dev_context {
+	struct idr tree;
+	struct rw_semaphore rwsem;
+	unsigned int extra_devices;
+	bool flatdev;
+};
+
+struct erofs_xattr_long_prefix;
+
+struct erofs_xattr_prefix_item {
+	struct erofs_xattr_long_prefix *prefix;
+	u8 infix_len;
+};
+
+struct erofs_xattr_long_prefix {
+	__u8 base_index;
+	char infix[0];
+};
+
+struct fscache_cookie;
+
+struct erofs_fscache {
+	struct fscache_cookie *cookie;
+	struct inode *inode;
+	struct erofs_domain *domain;
+	struct list_head node;
+	refcount_t ref;
+	char *name;
+};
+
+struct erofs_domain {
+	refcount_t ref;
+	struct list_head list;
+	struct fscache_volume *volume;
+	char *domain_id;
+};
+
+struct trace_event_raw_erofs_fill_inode {
+	struct trace_entry ent;
+	dev_t dev;
+	erofs_nid_t nid;
+	erofs_blk_t blkaddr;
+	unsigned int ofs;
+	char __data[0];
+};
+
+struct trace_event_raw_erofs_read_folio {
+	struct trace_entry ent;
+	dev_t dev;
+	erofs_nid_t nid;
+	int dir;
+	unsigned long index;
+	int uptodate;
+	bool raw;
+	char __data[0];
+};
+
+struct trace_event_raw_erofs_readpages {
+	struct trace_entry ent;
+	dev_t dev;
+	erofs_nid_t nid;
+	unsigned long start;
+	unsigned int nrpage;
+	bool raw;
+	char __data[0];
+};
+
+struct trace_event_raw_erofs__map_blocks_enter {
+	struct trace_entry ent;
+	dev_t dev;
+	erofs_nid_t nid;
+	erofs_off_t la;
+	u64 llen;
+	unsigned int flags;
+	char __data[0];
+};
+
+struct trace_event_raw_erofs__map_blocks_exit {
+	struct trace_entry ent;
+	dev_t dev;
+	erofs_nid_t nid;
+	unsigned int flags;
+	erofs_off_t la;
+	erofs_off_t pa;
+	u64 llen;
+	u64 plen;
+	unsigned int mflags;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_erofs_destroy_inode {
+	struct trace_entry ent;
+	dev_t dev;
+	erofs_nid_t nid;
+	char __data[0];
+};
+
+struct erofs_super_block {
+	__le32 magic;
+	__le32 checksum;
+	__le32 feature_compat;
+	__u8 blkszbits;
+	__u8 sb_extslots;
+	__le16 root_nid;
+	__le64 inos;
+	__le64 build_time;
+	__le32 build_time_nsec;
+	__le32 blocks;
+	__le32 meta_blkaddr;
+	__le32 xattr_blkaddr;
+	__u8 uuid[16];
+	__u8 volume_name[16];
+	__le32 feature_incompat;
+	union {
+		__le16 available_compr_algs;
+		__le16 lz4_max_distance;
+	} u1;
+	__le16 extra_devices;
+	__le16 devt_slotoff;
+	__u8 dirblkbits;
+	__u8 xattr_prefix_count;
+	__le32 xattr_prefix_start;
+	__le64 packed_nid;
+	__u8 xattr_filter_reserved;
+	__u8 reserved2[23];
+};
+
+struct trace_event_data_offsets_erofs_lookup {
+	u32 name;
+};
+
+struct erofs_fs_context {
+	struct erofs_mount_opts opt;
+	struct erofs_dev_context *devs;
+	char *fsid;
+	char *domain_id;
+};
+
+struct bdev_handle {
+	struct block_device *bdev;
+	void *holder;
+};
+
+struct trace_event_data_offsets_erofs_fill_inode {};
+
+struct trace_event_data_offsets_erofs_read_folio {};
+
+struct trace_event_data_offsets_erofs_readpages {};
+
+struct trace_event_data_offsets_erofs__map_blocks_enter {};
+
+struct trace_event_data_offsets_erofs__map_blocks_exit {};
+
+struct trace_event_data_offsets_erofs_destroy_inode {};
+
+struct erofs_device_info {
+	char *path;
+	struct erofs_fscache *fscache;
+	struct bdev_handle *bdev_handle;
+	struct dax_device *dax_dev;
+	u64 dax_part_off;
+	u32 blocks;
+	u32 mapped_blkaddr;
+};
+
+struct erofs_deviceslot {
+	u8 tag[64];
+	__le32 blocks;
+	__le32 mapped_blkaddr;
+	u8 reserved[56];
+};
+
+enum {
+	EROFS_INODE_FLAT_PLAIN = 0,
+	EROFS_INODE_COMPRESSED_FULL = 1,
+	EROFS_INODE_FLAT_INLINE = 2,
+	EROFS_INODE_COMPRESSED_COMPACT = 3,
+	EROFS_INODE_CHUNK_BASED = 4,
+	EROFS_INODE_DATALAYOUT_MAX = 5,
+};
+
+struct erofs_inode_chunk_info {
+	__le16 format;
+	__le16 reserved;
+};
+
+union erofs_inode_i_u {
+	__le32 compressed_blocks;
+	__le32 raw_blkaddr;
+	__le32 rdev;
+	struct erofs_inode_chunk_info c;
+};
+
+struct erofs_inode_extended {
+	__le16 i_format;
+	__le16 i_xattr_icount;
+	__le16 i_mode;
+	__le16 i_reserved;
+	__le64 i_size;
+	union erofs_inode_i_u i_u;
+	__le32 i_ino;
+	__le32 i_uid;
+	__le32 i_gid;
+	__le64 i_mtime;
+	__le32 i_mtime_nsec;
+	__le32 i_nlink;
+	__u8 i_reserved2[16];
+};
+
+struct erofs_inode_compact {
+	__le16 i_format;
+	__le16 i_xattr_icount;
+	__le16 i_mode;
+	__le16 i_nlink;
+	__le32 i_size;
+	__le32 i_reserved;
+	union erofs_inode_i_u i_u;
+	__le32 i_ino;
+	__le16 i_uid;
+	__le16 i_gid;
+	__le32 i_reserved2;
+};
+
+struct erofs_inode_chunk_index {
+	__le16 advise;
+	__le16 device_id;
+	__le32 blkaddr;
+};
+
+struct erofs_map_dev {
+	struct erofs_fscache *m_fscache;
+	struct block_device *m_bdev;
+	struct dax_device *m_daxdev;
+	u64 m_dax_part_off;
+	erofs_off_t m_pa;
+	unsigned int m_deviceid;
+};
+
+struct erofs_dirent {
+	__le64 nid;
+	__le16 nameoff;
+	__u8 file_type;
+	__u8 reserved;
+} __attribute__((packed));
+
+struct erofs_qstr {
+	const unsigned char *name;
+	const unsigned char *end;
+};
+
+struct erofs_attr {
+	struct attribute attr;
+	short attr_id;
+	int struct_type;
+	int offset;
+};
+
+enum {
+	attr_feature___2 = 0,
+	attr_pointer_ui___2 = 1,
+	attr_pointer_bool = 2,
+};
+
+enum {
+	struct_erofs_sb_info = 0,
+	struct_erofs_mount_opts = 1,
+};
+
+struct erofs_xattr_entry {
+	__u8 e_name_len;
+	__u8 e_name_index;
+	__le16 e_value_size;
+	char e_name[0];
+};
+
+struct erofs_xattr_iter {
+	struct super_block *sb;
+	struct erofs_buf buf;
+	erofs_off_t pos;
+	void *kaddr;
+	char *buffer;
+	int buffer_size;
+	int buffer_ofs;
+	int index;
+	int infix_len;
+	struct qstr name;
+	struct dentry *dentry;
+};
+
+struct erofs_xattr_ibody_header {
+	__le32 h_name_filter;
+	__u8 h_shared_count;
+	__u8 h_reserved2[7];
+	__le32 h_shared_xattrs[0];
+};
+
+struct z_erofs_decompress_req;
+
+struct z_erofs_decompressor {
+	int (*config)(struct super_block *, struct erofs_super_block *, void *, int);
+	int (*decompress)(struct z_erofs_decompress_req *, struct page **);
+	char *name;
+};
+
+struct z_erofs_decompress_req {
+	struct super_block *sb;
+	struct page **in;
+	struct page **out;
+	unsigned short pageofs_in;
+	unsigned short pageofs_out;
+	unsigned int inputsize;
+	unsigned int outputsize;
+	unsigned int alg;
+	bool inplace_io;
+	bool partial_decoding;
+	bool fillgaps;
+	gfp_t gfp;
+};
+
+enum {
+	Z_EROFS_COMPRESSION_LZ4 = 0,
+	Z_EROFS_COMPRESSION_LZMA = 1,
+	Z_EROFS_COMPRESSION_DEFLATE = 2,
+	Z_EROFS_COMPRESSION_MAX = 3,
+};
+
+enum {
+	Z_EROFS_COMPRESSION_SHIFTED = 3,
+	Z_EROFS_COMPRESSION_INTERLACED = 4,
+	Z_EROFS_COMPRESSION_RUNTIME_MAX = 5,
+};
+
+struct z_erofs_lz4_decompress_ctx {
+	struct z_erofs_decompress_req *rq;
+	unsigned int inpages;
+	unsigned int outpages;
+	unsigned int oend;
+};
+
+struct z_erofs_lz4_cfgs {
+	__le16 max_distance;
+	__le16 max_pclusterblks;
+	u8 reserved[10];
+};
+
+enum {
+	Z_EROFS_LCLUSTER_TYPE_PLAIN = 0,
+	Z_EROFS_LCLUSTER_TYPE_HEAD1 = 1,
+	Z_EROFS_LCLUSTER_TYPE_NONHEAD = 2,
+	Z_EROFS_LCLUSTER_TYPE_HEAD2 = 3,
+	Z_EROFS_LCLUSTER_TYPE_MAX = 4,
+};
+
+struct z_erofs_map_header {
+	union {
+		__le32 h_fragmentoff;
+		struct {
+			__le16 h_reserved1;
+			__le16 h_idata_size;
+		};
+	};
+	__le16 h_advise;
+	__u8 h_algorithmtype;
+	__u8 h_clusterbits;
+};
+
+struct z_erofs_maprecorder {
+	struct inode *inode;
+	struct erofs_map_blocks *map;
+	void *kaddr;
+	unsigned long lcn;
+	u8 type;
+	u8 headtype;
+	u16 clusterofs;
+	u16 delta[2];
+	erofs_blk_t pblk;
+	erofs_blk_t compressedblks;
+	erofs_off_t nextpackoff;
+	bool partialref;
+};
+
+struct z_erofs_lcluster_index {
+	__le16 di_advise;
+	__le16 di_clusterofs;
+	union {
+		__le32 blkaddr;
+		__le16 delta[2];
+	} di_u;
+};
+
+struct z_erofs_pcluster_slab {
+	struct kmem_cache *slab;
+	unsigned int maxpages;
+	char name[48];
+};
+
+enum z_erofs_pclustermode {
+	Z_EROFS_PCLUSTER_INFLIGHT = 0,
+	Z_EROFS_PCLUSTER_FOLLOWED_NOINPLACE = 1,
+	Z_EROFS_PCLUSTER_FOLLOWED = 2,
+};
+
+enum {
+	JQ_BYPASS = 0,
+	JQ_SUBMIT = 1,
+	NR_JOBQUEUES = 2,
+};
+
+struct z_erofs_bvec {
+	struct page *page;
+	int offset;
+	unsigned int end;
+};
+
+struct z_erofs_bvset_inline {
+	struct page *nextpage;
+	struct z_erofs_bvec bvec[2];
+};
+
+struct erofs_workgroup {
+	unsigned long index;
+	struct lockref lockref;
+};
+
+typedef void *z_erofs_next_pcluster_t;
+
+struct z_erofs_pcluster {
+	struct erofs_workgroup obj;
+	struct mutex lock;
+	z_erofs_next_pcluster_t next;
+	unsigned int length;
+	unsigned int vcnt;
+	unsigned int pclustersize;
+	unsigned short pageofs_out;
+	unsigned short pageofs_in;
+	union {
+		struct z_erofs_bvset_inline bvset;
+		struct callback_head rcu;
+	};
+	unsigned char algorithmformat;
+	bool partial;
+	bool multibases;
+	bool besteffort;
+	struct z_erofs_bvec compressed_bvecs[0];
+};
+
+struct z_erofs_bvset {
+	struct page *nextpage;
+	struct z_erofs_bvec bvec[0];
+};
+
+struct z_erofs_decompressqueue {
+	struct super_block *sb;
+	atomic_t pending_bios;
+	z_erofs_next_pcluster_t head;
+	union {
+		struct completion done;
+		struct work_struct work;
+		struct kthread_work kthread_work;
+	} u;
+	bool eio;
+	bool sync;
+};
+
+struct z_erofs_bvec_item {
+	struct z_erofs_bvec bvec;
+	struct list_head list;
+};
+
+struct z_erofs_bvec_iter {
+	struct page *bvpage;
+	struct z_erofs_bvset *bvset;
+	unsigned int nr;
+	unsigned int cur;
+};
+
+struct z_erofs_decompress_frontend {
+	struct inode * const inode;
+	struct erofs_map_blocks map;
+	struct z_erofs_bvec_iter biter;
+	struct page *pagepool;
+	struct page *candidate_bvpage;
+	struct z_erofs_pcluster *pcl;
+	z_erofs_next_pcluster_t owned_head;
+	enum z_erofs_pclustermode mode;
+	erofs_off_t headoffset;
+	unsigned int icur;
+};
+
+struct z_erofs_decompress_backend {
+	struct page *onstack_pages[32];
+	struct super_block *sb;
+	struct z_erofs_pcluster *pcl;
+	struct page **decompressed_pages;
+	struct page **compressed_pages;
+	struct list_head decompressed_secondary_bvecs;
+	struct page **pagepool;
+	unsigned int onstack_used;
+	unsigned int nr_pages;
+};
+
+struct z_erofs_gbuf {
+	spinlock_t lock;
+	void *ptr;
+	struct page **pages;
+	unsigned int nrpages;
+};
+
+struct key_user {
+	struct rb_node node;
+	struct mutex cons_lock;
+	spinlock_t lock;
+	refcount_t usage;
+	atomic_t nkeys;
+	atomic_t nikeys;
+	kuid_t uid;
+	int qnkeys;
+	int qnbytes;
+};
+
+enum key_notification_subtype {
+	NOTIFY_KEY_INSTANTIATED = 0,
+	NOTIFY_KEY_UPDATED = 1,
+	NOTIFY_KEY_LINKED = 2,
+	NOTIFY_KEY_UNLINKED = 3,
+	NOTIFY_KEY_CLEARED = 4,
+	NOTIFY_KEY_REVOKED = 5,
+	NOTIFY_KEY_INVALIDATED = 6,
+	NOTIFY_KEY_SETATTR = 7,
+};
+
+struct assoc_array_ops {
+	unsigned long (*get_key_chunk)(const void *, int);
+	unsigned long (*get_object_key_chunk)(const void *, int);
+	bool (*compare_object)(const void *, const void *);
+	int (*diff_objects)(const void *, const void *);
+	void (*free_object)(void *);
+};
+
+struct assoc_array_shortcut {
+	struct assoc_array_ptr *back_pointer;
+	int parent_slot;
+	int skip_to_level;
+	struct assoc_array_ptr *next_node;
+	unsigned long index_key[0];
+};
+
+struct assoc_array_node {
+	struct assoc_array_ptr *back_pointer;
+	u8 parent_slot;
+	struct assoc_array_ptr *slots[16];
+	unsigned long nr_leaves_on_branch;
+};
+
+struct assoc_array_edit {
+	struct callback_head rcu;
+	struct assoc_array *array;
+	const struct assoc_array_ops *ops;
+	const struct assoc_array_ops *ops_for_excised_subtree;
+	struct assoc_array_ptr *leaf;
+	struct assoc_array_ptr **leaf_p;
+	struct assoc_array_ptr *dead_leaf;
+	struct assoc_array_ptr *new_meta[3];
+	struct assoc_array_ptr *excised_meta[1];
+	struct assoc_array_ptr *excised_subtree;
+	struct assoc_array_ptr **set_backpointers[16];
+	struct assoc_array_ptr *set_backpointers_to;
+	struct assoc_array_node *adjust_count_on;
+	long adjust_count_by;
+	struct {
+		struct assoc_array_ptr **ptr;
+		struct assoc_array_ptr *to;
+	} set[2];
+	struct {
+		u8 *p;
+		u8 to;
+	} set_parent_slot[1];
+	u8 segment_cache[17];
+};
+
+struct keyring_search_context {
+	struct keyring_index_key index_key;
+	const struct cred *cred;
+	struct key_match_data match_data;
+	unsigned int flags;
+	int (*iterator)(const void *, void *);
+	int skipped_ret;
+	bool possessed;
+	key_ref_t result;
+	time64_t now;
+};
+
+struct keyring_read_iterator_context {
+	size_t buflen;
+	size_t count;
+	key_serial_t *buffer;
+};
+
+struct keyctl_dh_params {
+	union {
+		__s32 private;
+		__s32 priv;
+	};
+	__s32 prime;
+	__s32 base;
+};
+
+struct keyctl_kdf_params {
+	char __attribute__((btf_type_tag("user"))) *hashname;
+	char __attribute__((btf_type_tag("user"))) *otherinfo;
+	__u32 otherinfolen;
+	__u32 __spare[8];
+};
+
+struct keyctl_pkey_query {
+	__u32 supported_ops;
+	__u32 key_size;
+	__u16 max_data_size;
+	__u16 max_sig_size;
+	__u16 max_enc_size;
+	__u16 max_dec_size;
+	__u32 __spare[10];
+};
+
+struct keyctl_pkey_params {
+	__s32 key_id;
+	__u32 in_len;
+	union {
+		__u32 out_len;
+		__u32 in2_len;
+	};
+	__u32 __spare[7];
+};
+
+struct request_key_auth {
+	struct callback_head rcu;
+	struct key *target_key;
+	struct key *dest_keyring;
+	const struct cred *cred;
+	void *callout_info;
+	size_t callout_len;
+	pid_t pid;
+	char op[8];
+};
+
+enum {
+	Opt_err___9 = 0,
+	Opt_enc = 1,
+	Opt_hash = 2,
+};
+
+enum lsm_order {
+	LSM_ORDER_FIRST = -1,
+	LSM_ORDER_MUTABLE = 0,
+	LSM_ORDER_LAST = 1,
+};
+
+struct lsm_blob_sizes;
+
+struct lsm_info {
+	const char *name;
+	enum lsm_order order;
+	unsigned long flags;
+	int *enabled;
+	int (*init)();
+	struct lsm_blob_sizes *blobs;
+};
+
+struct lsm_blob_sizes {
+	int lbs_cred;
+	int lbs_file;
+	int lbs_inode;
+	int lbs_superblock;
+	int lbs_ipc;
+	int lbs_msg_msg;
+	int lbs_task;
+	int lbs_xattr_count;
+};
+
+struct msg_msg;
+
+struct sctp_association;
+
+union security_list_options {
+	int (*binder_set_context_mgr)(const struct cred *);
+	int (*binder_transaction)(const struct cred *, const struct cred *);
+	int (*binder_transfer_binder)(const struct cred *, const struct cred *);
+	int (*binder_transfer_file)(const struct cred *, const struct cred *, const struct file *);
+	int (*ptrace_access_check)(struct task_struct *, unsigned int);
+	int (*ptrace_traceme)(struct task_struct *);
+	int (*capget)(const struct task_struct *, kernel_cap_t *, kernel_cap_t *, kernel_cap_t *);
+	int (*capset)(struct cred *, const struct cred *, const kernel_cap_t *, const kernel_cap_t *, const kernel_cap_t *);
+	int (*capable)(const struct cred *, struct user_namespace *, int, unsigned int);
+	int (*quotactl)(int, int, int, struct super_block *);
+	int (*quota_on)(struct dentry *);
+	int (*syslog)(int);
+	int (*settime)(const struct timespec64 *, const struct timezone *);
+	int (*vm_enough_memory)(struct mm_struct *, long);
+	int (*bprm_creds_for_exec)(struct linux_binprm *);
+	int (*bprm_creds_from_file)(struct linux_binprm *, struct file *);
+	int (*bprm_check_security)(struct linux_binprm *);
+	void (*bprm_committing_creds)(struct linux_binprm *);
+	void (*bprm_committed_creds)(struct linux_binprm *);
+	int (*fs_context_submount)(struct fs_context *, struct super_block *);
+	int (*fs_context_dup)(struct fs_context *, struct fs_context *);
+	int (*fs_context_parse_param)(struct fs_context *, struct fs_parameter *);
+	int (*sb_alloc_security)(struct super_block *);
+	void (*sb_delete)(struct super_block *);
+	void (*sb_free_security)(struct super_block *);
+	void (*sb_free_mnt_opts)(void *);
+	int (*sb_eat_lsm_opts)(char *, void **);
+	int (*sb_mnt_opts_compat)(struct super_block *, void *);
+	int (*sb_remount)(struct super_block *, void *);
+	int (*sb_kern_mount)(struct super_block *);
+	int (*sb_show_options)(struct seq_file *, struct super_block *);
+	int (*sb_statfs)(struct dentry *);
+	int (*sb_mount)(const char *, const struct path *, const char *, unsigned long, void *);
+	int (*sb_umount)(struct vfsmount *, int);
+	int (*sb_pivotroot)(const struct path *, const struct path *);
+	int (*sb_set_mnt_opts)(struct super_block *, void *, unsigned long, unsigned long *);
+	int (*sb_clone_mnt_opts)(const struct super_block *, struct super_block *, unsigned long, unsigned long *);
+	int (*move_mount)(const struct path *, const struct path *);
+	int (*dentry_init_security)(struct dentry *, int, const struct qstr *, const char **, void **, u32 *);
+	int (*dentry_create_files_as)(struct dentry *, int, struct qstr *, const struct cred *, struct cred *);
+	int (*path_notify)(const struct path *, u64, unsigned int);
+	int (*inode_alloc_security)(struct inode *);
+	void (*inode_free_security)(struct inode *);
+	int (*inode_init_security)(struct inode *, struct inode *, const struct qstr *, struct xattr *, int *);
+	int (*inode_init_security_anon)(struct inode *, const struct qstr *, const struct inode *);
+	int (*inode_create)(struct inode *, struct dentry *, umode_t);
+	int (*inode_link)(struct dentry *, struct inode *, struct dentry *);
+	int (*inode_unlink)(struct inode *, struct dentry *);
+	int (*inode_symlink)(struct inode *, struct dentry *, const char *);
+	int (*inode_mkdir)(struct inode *, struct dentry *, umode_t);
+	int (*inode_rmdir)(struct inode *, struct dentry *);
+	int (*inode_mknod)(struct inode *, struct dentry *, umode_t, dev_t);
+	int (*inode_rename)(struct inode *, struct dentry *, struct inode *, struct dentry *);
+	int (*inode_readlink)(struct dentry *);
+	int (*inode_follow_link)(struct dentry *, struct inode *, bool);
+	int (*inode_permission)(struct inode *, int);
+	int (*inode_setattr)(struct dentry *, struct iattr *);
+	int (*inode_getattr)(const struct path *);
+	int (*inode_setxattr)(struct mnt_idmap *, struct dentry *, const char *, const void *, size_t, int);
+	void (*inode_post_setxattr)(struct dentry *, const char *, const void *, size_t, int);
+	int (*inode_getxattr)(struct dentry *, const char *);
+	int (*inode_listxattr)(struct dentry *);
+	int (*inode_removexattr)(struct mnt_idmap *, struct dentry *, const char *);
+	int (*inode_set_acl)(struct mnt_idmap *, struct dentry *, const char *, struct posix_acl *);
+	int (*inode_get_acl)(struct mnt_idmap *, struct dentry *, const char *);
+	int (*inode_remove_acl)(struct mnt_idmap *, struct dentry *, const char *);
+	int (*inode_need_killpriv)(struct dentry *);
+	int (*inode_killpriv)(struct mnt_idmap *, struct dentry *);
+	int (*inode_getsecurity)(struct mnt_idmap *, struct inode *, const char *, void **, bool);
+	int (*inode_setsecurity)(struct inode *, const char *, const void *, size_t, int);
+	int (*inode_listsecurity)(struct inode *, char *, size_t);
+	void (*inode_getsecid)(struct inode *, u32 *);
+	int (*inode_copy_up)(struct dentry *, struct cred **);
+	int (*inode_copy_up_xattr)(const char *);
+	int (*kernfs_init_security)(struct kernfs_node *, struct kernfs_node *);
+	int (*file_permission)(struct file *, int);
+	int (*file_alloc_security)(struct file *);
+	void (*file_free_security)(struct file *);
+	int (*file_ioctl)(struct file *, unsigned int, unsigned long);
+	int (*file_ioctl_compat)(struct file *, unsigned int, unsigned long);
+	int (*mmap_addr)(unsigned long);
+	int (*mmap_file)(struct file *, unsigned long, unsigned long, unsigned long);
+	int (*file_mprotect)(struct vm_area_struct *, unsigned long, unsigned long);
+	int (*file_lock)(struct file *, unsigned int);
+	int (*file_fcntl)(struct file *, unsigned int, unsigned long);
+	void (*file_set_fowner)(struct file *);
+	int (*file_send_sigiotask)(struct task_struct *, struct fown_struct *, int);
+	int (*file_receive)(struct file *);
+	int (*file_open)(struct file *);
+	int (*file_truncate)(struct file *);
+	int (*task_alloc)(struct task_struct *, unsigned long);
+	void (*task_free)(struct task_struct *);
+	int (*cred_alloc_blank)(struct cred *, gfp_t);
+	void (*cred_free)(struct cred *);
+	int (*cred_prepare)(struct cred *, const struct cred *, gfp_t);
+	void (*cred_transfer)(struct cred *, const struct cred *);
+	void (*cred_getsecid)(const struct cred *, u32 *);
+	int (*kernel_act_as)(struct cred *, u32);
+	int (*kernel_create_files_as)(struct cred *, struct inode *);
+	int (*kernel_module_request)(char *);
+	int (*kernel_load_data)(enum kernel_load_data_id, bool);
+	int (*kernel_post_load_data)(char *, loff_t, enum kernel_load_data_id, char *);
+	int (*kernel_read_file)(struct file *, enum kernel_read_file_id, bool);
+	int (*kernel_post_read_file)(struct file *, char *, loff_t, enum kernel_read_file_id);
+	int (*task_fix_setuid)(struct cred *, const struct cred *, int);
+	int (*task_fix_setgid)(struct cred *, const struct cred *, int);
+	int (*task_fix_setgroups)(struct cred *, const struct cred *);
+	int (*task_setpgid)(struct task_struct *, pid_t);
+	int (*task_getpgid)(struct task_struct *);
+	int (*task_getsid)(struct task_struct *);
+	void (*current_getsecid_subj)(u32 *);
+	void (*task_getsecid_obj)(struct task_struct *, u32 *);
+	int (*task_setnice)(struct task_struct *, int);
+	int (*task_setioprio)(struct task_struct *, int);
+	int (*task_getioprio)(struct task_struct *);
+	int (*task_prlimit)(const struct cred *, const struct cred *, unsigned int);
+	int (*task_setrlimit)(struct task_struct *, unsigned int, struct rlimit *);
+	int (*task_setscheduler)(struct task_struct *);
+	int (*task_getscheduler)(struct task_struct *);
+	int (*task_movememory)(struct task_struct *);
+	int (*task_kill)(struct task_struct *, struct kernel_siginfo *, int, const struct cred *);
+	int (*task_prctl)(int, unsigned long, unsigned long, unsigned long, unsigned long);
+	void (*task_to_inode)(struct task_struct *, struct inode *);
+	int (*userns_create)(const struct cred *);
+	int (*ipc_permission)(struct kern_ipc_perm *, short);
+	void (*ipc_getsecid)(struct kern_ipc_perm *, u32 *);
+	int (*msg_msg_alloc_security)(struct msg_msg *);
+	void (*msg_msg_free_security)(struct msg_msg *);
+	int (*msg_queue_alloc_security)(struct kern_ipc_perm *);
+	void (*msg_queue_free_security)(struct kern_ipc_perm *);
+	int (*msg_queue_associate)(struct kern_ipc_perm *, int);
+	int (*msg_queue_msgctl)(struct kern_ipc_perm *, int);
+	int (*msg_queue_msgsnd)(struct kern_ipc_perm *, struct msg_msg *, int);
+	int (*msg_queue_msgrcv)(struct kern_ipc_perm *, struct msg_msg *, struct task_struct *, long, int);
+	int (*shm_alloc_security)(struct kern_ipc_perm *);
+	void (*shm_free_security)(struct kern_ipc_perm *);
+	int (*shm_associate)(struct kern_ipc_perm *, int);
+	int (*shm_shmctl)(struct kern_ipc_perm *, int);
+	int (*shm_shmat)(struct kern_ipc_perm *, char __attribute__((btf_type_tag("user"))) *, int);
+	int (*sem_alloc_security)(struct kern_ipc_perm *);
+	void (*sem_free_security)(struct kern_ipc_perm *);
+	int (*sem_associate)(struct kern_ipc_perm *, int);
+	int (*sem_semctl)(struct kern_ipc_perm *, int);
+	int (*sem_semop)(struct kern_ipc_perm *, struct sembuf *, unsigned int, int);
+	int (*netlink_send)(struct sock *, struct sk_buff *);
+	void (*d_instantiate)(struct dentry *, struct inode *);
+	int (*getprocattr)(struct task_struct *, const char *, char **);
+	int (*setprocattr)(const char *, void *, size_t);
+	int (*ismaclabel)(const char *);
+	int (*secid_to_secctx)(u32, char **, u32 *);
+	int (*secctx_to_secid)(const char *, u32, u32 *);
+	void (*release_secctx)(char *, u32);
+	void (*inode_invalidate_secctx)(struct inode *);
+	int (*inode_notifysecctx)(struct inode *, void *, u32);
+	int (*inode_setsecctx)(struct dentry *, void *, u32);
+	int (*inode_getsecctx)(struct inode *, void **, u32 *);
+	int (*unix_stream_connect)(struct sock *, struct sock *, struct sock *);
+	int (*unix_may_send)(struct socket *, struct socket *);
+	int (*socket_create)(int, int, int, int);
+	int (*socket_post_create)(struct socket *, int, int, int, int);
+	int (*socket_socketpair)(struct socket *, struct socket *);
+	int (*socket_bind)(struct socket *, struct sockaddr *, int);
+	int (*socket_connect)(struct socket *, struct sockaddr *, int);
+	int (*socket_listen)(struct socket *, int);
+	int (*socket_accept)(struct socket *, struct socket *);
+	int (*socket_sendmsg)(struct socket *, struct msghdr *, int);
+	int (*socket_recvmsg)(struct socket *, struct msghdr *, int, int);
+	int (*socket_getsockname)(struct socket *);
+	int (*socket_getpeername)(struct socket *);
+	int (*socket_getsockopt)(struct socket *, int, int);
+	int (*socket_setsockopt)(struct socket *, int, int);
+	int (*socket_shutdown)(struct socket *, int);
+	int (*socket_sock_rcv_skb)(struct sock *, struct sk_buff *);
+	int (*socket_getpeersec_stream)(struct socket *, sockptr_t, sockptr_t, unsigned int);
+	int (*socket_getpeersec_dgram)(struct socket *, struct sk_buff *, u32 *);
+	int (*sk_alloc_security)(struct sock *, int, gfp_t);
+	void (*sk_free_security)(struct sock *);
+	void (*sk_clone_security)(const struct sock *, struct sock *);
+	void (*sk_getsecid)(const struct sock *, u32 *);
+	void (*sock_graft)(struct sock *, struct socket *);
+	int (*inet_conn_request)(const struct sock *, struct sk_buff *, struct request_sock *);
+	void (*inet_csk_clone)(struct sock *, const struct request_sock *);
+	void (*inet_conn_established)(struct sock *, struct sk_buff *);
+	int (*secmark_relabel_packet)(u32);
+	void (*secmark_refcount_inc)();
+	void (*secmark_refcount_dec)();
+	void (*req_classify_flow)(const struct request_sock *, struct flowi_common *);
+	int (*tun_dev_alloc_security)(void **);
+	void (*tun_dev_free_security)(void *);
+	int (*tun_dev_create)();
+	int (*tun_dev_attach_queue)(void *);
+	int (*tun_dev_attach)(struct sock *, void *);
+	int (*tun_dev_open)(void *);
+	int (*sctp_assoc_request)(struct sctp_association *, struct sk_buff *);
+	int (*sctp_bind_connect)(struct sock *, int, struct sockaddr *, int);
+	void (*sctp_sk_clone)(struct sctp_association *, struct sock *, struct sock *);
+	int (*sctp_assoc_established)(struct sctp_association *, struct sk_buff *);
+	int (*mptcp_add_subflow)(struct sock *, struct sock *);
+	int (*key_alloc)(struct key *, const struct cred *, unsigned long);
+	void (*key_free)(struct key *);
+	int (*key_permission)(key_ref_t, const struct cred *, enum key_need_perm);
+	int (*key_getsecurity)(struct key *, char **);
+	int (*audit_rule_init)(u32, u32, char *, void **);
+	int (*audit_rule_known)(struct audit_krule *);
+	int (*audit_rule_match)(u32, u32, u32, void *);
+	void (*audit_rule_free)(void *);
+	int (*bpf)(int, union bpf_attr *, unsigned int);
+	int (*bpf_map)(struct bpf_map *, fmode_t);
+	int (*bpf_prog)(struct bpf_prog *);
+	int (*bpf_map_alloc_security)(struct bpf_map *);
+	void (*bpf_map_free_security)(struct bpf_map *);
+	int (*bpf_prog_alloc_security)(struct bpf_prog_aux *);
+	void (*bpf_prog_free_security)(struct bpf_prog_aux *);
+	int (*locked_down)(enum lockdown_reason);
+	int (*perf_event_open)(struct perf_event_attr *, int);
+	int (*perf_event_alloc)(struct perf_event *);
+	void (*perf_event_free)(struct perf_event *);
+	int (*perf_event_read)(struct perf_event *);
+	int (*perf_event_write)(struct perf_event *);
+	int (*uring_override_creds)(const struct cred *);
+	int (*uring_sqpoll)();
+	int (*uring_cmd)(struct io_uring_cmd *);
+};
+
+struct security_hook_list {
+	struct hlist_node list;
+	struct hlist_head *head;
+	union security_list_options hook;
+	const char *lsm;
+};
+
+struct vfs_cap_data {
+	__le32 magic_etc;
+	struct {
+		__le32 permitted;
+		__le32 inheritable;
+	} data[2];
+};
+
+struct vfs_ns_cap_data {
+	__le32 magic_etc;
+	struct {
+		__le32 permitted;
+		__le32 inheritable;
+	} data[2];
+	__le32 rootid;
+};
+
+struct security_hook_heads {
+	struct hlist_head binder_set_context_mgr;
+	struct hlist_head binder_transaction;
+	struct hlist_head binder_transfer_binder;
+	struct hlist_head binder_transfer_file;
+	struct hlist_head ptrace_access_check;
+	struct hlist_head ptrace_traceme;
+	struct hlist_head capget;
+	struct hlist_head capset;
+	struct hlist_head capable;
+	struct hlist_head quotactl;
+	struct hlist_head quota_on;
+	struct hlist_head syslog;
+	struct hlist_head settime;
+	struct hlist_head vm_enough_memory;
+	struct hlist_head bprm_creds_for_exec;
+	struct hlist_head bprm_creds_from_file;
+	struct hlist_head bprm_check_security;
+	struct hlist_head bprm_committing_creds;
+	struct hlist_head bprm_committed_creds;
+	struct hlist_head fs_context_submount;
+	struct hlist_head fs_context_dup;
+	struct hlist_head fs_context_parse_param;
+	struct hlist_head sb_alloc_security;
+	struct hlist_head sb_delete;
+	struct hlist_head sb_free_security;
+	struct hlist_head sb_free_mnt_opts;
+	struct hlist_head sb_eat_lsm_opts;
+	struct hlist_head sb_mnt_opts_compat;
+	struct hlist_head sb_remount;
+	struct hlist_head sb_kern_mount;
+	struct hlist_head sb_show_options;
+	struct hlist_head sb_statfs;
+	struct hlist_head sb_mount;
+	struct hlist_head sb_umount;
+	struct hlist_head sb_pivotroot;
+	struct hlist_head sb_set_mnt_opts;
+	struct hlist_head sb_clone_mnt_opts;
+	struct hlist_head move_mount;
+	struct hlist_head dentry_init_security;
+	struct hlist_head dentry_create_files_as;
+	struct hlist_head path_notify;
+	struct hlist_head inode_alloc_security;
+	struct hlist_head inode_free_security;
+	struct hlist_head inode_init_security;
+	struct hlist_head inode_init_security_anon;
+	struct hlist_head inode_create;
+	struct hlist_head inode_link;
+	struct hlist_head inode_unlink;
+	struct hlist_head inode_symlink;
+	struct hlist_head inode_mkdir;
+	struct hlist_head inode_rmdir;
+	struct hlist_head inode_mknod;
+	struct hlist_head inode_rename;
+	struct hlist_head inode_readlink;
+	struct hlist_head inode_follow_link;
+	struct hlist_head inode_permission;
+	struct hlist_head inode_setattr;
+	struct hlist_head inode_getattr;
+	struct hlist_head inode_setxattr;
+	struct hlist_head inode_post_setxattr;
+	struct hlist_head inode_getxattr;
+	struct hlist_head inode_listxattr;
+	struct hlist_head inode_removexattr;
+	struct hlist_head inode_set_acl;
+	struct hlist_head inode_get_acl;
+	struct hlist_head inode_remove_acl;
+	struct hlist_head inode_need_killpriv;
+	struct hlist_head inode_killpriv;
+	struct hlist_head inode_getsecurity;
+	struct hlist_head inode_setsecurity;
+	struct hlist_head inode_listsecurity;
+	struct hlist_head inode_getsecid;
+	struct hlist_head inode_copy_up;
+	struct hlist_head inode_copy_up_xattr;
+	struct hlist_head kernfs_init_security;
+	struct hlist_head file_permission;
+	struct hlist_head file_alloc_security;
+	struct hlist_head file_free_security;
+	struct hlist_head file_ioctl;
+	struct hlist_head file_ioctl_compat;
+	struct hlist_head mmap_addr;
+	struct hlist_head mmap_file;
+	struct hlist_head file_mprotect;
+	struct hlist_head file_lock;
+	struct hlist_head file_fcntl;
+	struct hlist_head file_set_fowner;
+	struct hlist_head file_send_sigiotask;
+	struct hlist_head file_receive;
+	struct hlist_head file_open;
+	struct hlist_head file_truncate;
+	struct hlist_head task_alloc;
+	struct hlist_head task_free;
+	struct hlist_head cred_alloc_blank;
+	struct hlist_head cred_free;
+	struct hlist_head cred_prepare;
+	struct hlist_head cred_transfer;
+	struct hlist_head cred_getsecid;
+	struct hlist_head kernel_act_as;
+	struct hlist_head kernel_create_files_as;
+	struct hlist_head kernel_module_request;
+	struct hlist_head kernel_load_data;
+	struct hlist_head kernel_post_load_data;
+	struct hlist_head kernel_read_file;
+	struct hlist_head kernel_post_read_file;
+	struct hlist_head task_fix_setuid;
+	struct hlist_head task_fix_setgid;
+	struct hlist_head task_fix_setgroups;
+	struct hlist_head task_setpgid;
+	struct hlist_head task_getpgid;
+	struct hlist_head task_getsid;
+	struct hlist_head current_getsecid_subj;
+	struct hlist_head task_getsecid_obj;
+	struct hlist_head task_setnice;
+	struct hlist_head task_setioprio;
+	struct hlist_head task_getioprio;
+	struct hlist_head task_prlimit;
+	struct hlist_head task_setrlimit;
+	struct hlist_head task_setscheduler;
+	struct hlist_head task_getscheduler;
+	struct hlist_head task_movememory;
+	struct hlist_head task_kill;
+	struct hlist_head task_prctl;
+	struct hlist_head task_to_inode;
+	struct hlist_head userns_create;
+	struct hlist_head ipc_permission;
+	struct hlist_head ipc_getsecid;
+	struct hlist_head msg_msg_alloc_security;
+	struct hlist_head msg_msg_free_security;
+	struct hlist_head msg_queue_alloc_security;
+	struct hlist_head msg_queue_free_security;
+	struct hlist_head msg_queue_associate;
+	struct hlist_head msg_queue_msgctl;
+	struct hlist_head msg_queue_msgsnd;
+	struct hlist_head msg_queue_msgrcv;
+	struct hlist_head shm_alloc_security;
+	struct hlist_head shm_free_security;
+	struct hlist_head shm_associate;
+	struct hlist_head shm_shmctl;
+	struct hlist_head shm_shmat;
+	struct hlist_head sem_alloc_security;
+	struct hlist_head sem_free_security;
+	struct hlist_head sem_associate;
+	struct hlist_head sem_semctl;
+	struct hlist_head sem_semop;
+	struct hlist_head netlink_send;
+	struct hlist_head d_instantiate;
+	struct hlist_head getprocattr;
+	struct hlist_head setprocattr;
+	struct hlist_head ismaclabel;
+	struct hlist_head secid_to_secctx;
+	struct hlist_head secctx_to_secid;
+	struct hlist_head release_secctx;
+	struct hlist_head inode_invalidate_secctx;
+	struct hlist_head inode_notifysecctx;
+	struct hlist_head inode_setsecctx;
+	struct hlist_head inode_getsecctx;
+	struct hlist_head unix_stream_connect;
+	struct hlist_head unix_may_send;
+	struct hlist_head socket_create;
+	struct hlist_head socket_post_create;
+	struct hlist_head socket_socketpair;
+	struct hlist_head socket_bind;
+	struct hlist_head socket_connect;
+	struct hlist_head socket_listen;
+	struct hlist_head socket_accept;
+	struct hlist_head socket_sendmsg;
+	struct hlist_head socket_recvmsg;
+	struct hlist_head socket_getsockname;
+	struct hlist_head socket_getpeername;
+	struct hlist_head socket_getsockopt;
+	struct hlist_head socket_setsockopt;
+	struct hlist_head socket_shutdown;
+	struct hlist_head socket_sock_rcv_skb;
+	struct hlist_head socket_getpeersec_stream;
+	struct hlist_head socket_getpeersec_dgram;
+	struct hlist_head sk_alloc_security;
+	struct hlist_head sk_free_security;
+	struct hlist_head sk_clone_security;
+	struct hlist_head sk_getsecid;
+	struct hlist_head sock_graft;
+	struct hlist_head inet_conn_request;
+	struct hlist_head inet_csk_clone;
+	struct hlist_head inet_conn_established;
+	struct hlist_head secmark_relabel_packet;
+	struct hlist_head secmark_refcount_inc;
+	struct hlist_head secmark_refcount_dec;
+	struct hlist_head req_classify_flow;
+	struct hlist_head tun_dev_alloc_security;
+	struct hlist_head tun_dev_free_security;
+	struct hlist_head tun_dev_create;
+	struct hlist_head tun_dev_attach_queue;
+	struct hlist_head tun_dev_attach;
+	struct hlist_head tun_dev_open;
+	struct hlist_head sctp_assoc_request;
+	struct hlist_head sctp_bind_connect;
+	struct hlist_head sctp_sk_clone;
+	struct hlist_head sctp_assoc_established;
+	struct hlist_head mptcp_add_subflow;
+	struct hlist_head key_alloc;
+	struct hlist_head key_free;
+	struct hlist_head key_permission;
+	struct hlist_head key_getsecurity;
+	struct hlist_head audit_rule_init;
+	struct hlist_head audit_rule_known;
+	struct hlist_head audit_rule_match;
+	struct hlist_head audit_rule_free;
+	struct hlist_head bpf;
+	struct hlist_head bpf_map;
+	struct hlist_head bpf_prog;
+	struct hlist_head bpf_map_alloc_security;
+	struct hlist_head bpf_map_free_security;
+	struct hlist_head bpf_prog_alloc_security;
+	struct hlist_head bpf_prog_free_security;
+	struct hlist_head locked_down;
+	struct hlist_head perf_event_open;
+	struct hlist_head perf_event_alloc;
+	struct hlist_head perf_event_free;
+	struct hlist_head perf_event_read;
+	struct hlist_head perf_event_write;
+	struct hlist_head uring_override_creds;
+	struct hlist_head uring_sqpoll;
+	struct hlist_head uring_cmd;
+};
+
+enum lsm_event {
+	LSM_POLICY_CHANGE = 0,
+};
+
+struct msg_msgseg;
+
+struct msg_msg {
+	struct list_head m_list;
+	long m_type;
+	size_t m_ts;
+	struct msg_msgseg *next;
+	void *security;
+};
+
+struct security_class_mapping {
+	const char *name;
+	const char *perms[33];
+};
+
+struct ethtool_drvinfo {
+	__u32 cmd;
+	char driver[32];
+	char version[32];
+	char fw_version[32];
+	char bus_info[32];
+	char erom_version[32];
+	char reserved2[12];
+	__u32 n_priv_flags;
+	__u32 n_stats;
+	__u32 testinfo_len;
+	__u32 eedump_len;
+	__u32 regdump_len;
+};
+
+struct ethtool_regs {
+	__u32 cmd;
+	__u32 version;
+	__u32 len;
+	__u8 data[0];
+};
+
+struct ethtool_wolinfo {
+	__u32 cmd;
+	__u32 supported;
+	__u32 wolopts;
+	__u8 sopass[6];
+};
+
+enum ethtool_link_ext_substate_autoneg {
+	ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_PARTNER_DETECTED = 1,
+	ETHTOOL_LINK_EXT_SUBSTATE_AN_ACK_NOT_RECEIVED = 2,
+	ETHTOOL_LINK_EXT_SUBSTATE_AN_NEXT_PAGE_EXCHANGE_FAILED = 3,
+	ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_PARTNER_DETECTED_FORCE_MODE = 4,
+	ETHTOOL_LINK_EXT_SUBSTATE_AN_FEC_MISMATCH_DURING_OVERRIDE = 5,
+	ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_HCD = 6,
+};
+
+enum ethtool_link_ext_substate_link_training {
+	ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_FRAME_LOCK_NOT_ACQUIRED = 1,
+	ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_LINK_INHIBIT_TIMEOUT = 2,
+	ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_LINK_PARTNER_DID_NOT_SET_RECEIVER_READY = 3,
+	ETHTOOL_LINK_EXT_SUBSTATE_LT_REMOTE_FAULT = 4,
+};
+
+enum ethtool_link_ext_substate_link_logical_mismatch {
+	ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_ACQUIRE_BLOCK_LOCK = 1,
+	ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_ACQUIRE_AM_LOCK = 2,
+	ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_GET_ALIGN_STATUS = 3,
+	ETHTOOL_LINK_EXT_SUBSTATE_LLM_FC_FEC_IS_NOT_LOCKED = 4,
+	ETHTOOL_LINK_EXT_SUBSTATE_LLM_RS_FEC_IS_NOT_LOCKED = 5,
+};
+
+enum ethtool_link_ext_substate_bad_signal_integrity {
+	ETHTOOL_LINK_EXT_SUBSTATE_BSI_LARGE_NUMBER_OF_PHYSICAL_ERRORS = 1,
+	ETHTOOL_LINK_EXT_SUBSTATE_BSI_UNSUPPORTED_RATE = 2,
+	ETHTOOL_LINK_EXT_SUBSTATE_BSI_SERDES_REFERENCE_CLOCK_LOST = 3,
+	ETHTOOL_LINK_EXT_SUBSTATE_BSI_SERDES_ALOS = 4,
+};
+
+enum ethtool_link_ext_substate_cable_issue {
+	ETHTOOL_LINK_EXT_SUBSTATE_CI_UNSUPPORTED_CABLE = 1,
+	ETHTOOL_LINK_EXT_SUBSTATE_CI_CABLE_TEST_FAILURE = 2,
+};
+
+enum ethtool_link_ext_substate_module {
+	ETHTOOL_LINK_EXT_SUBSTATE_MODULE_CMIS_NOT_READY = 1,
+};
+
+enum ethtool_link_ext_state {
+	ETHTOOL_LINK_EXT_STATE_AUTONEG = 0,
+	ETHTOOL_LINK_EXT_STATE_LINK_TRAINING_FAILURE = 1,
+	ETHTOOL_LINK_EXT_STATE_LINK_LOGICAL_MISMATCH = 2,
+	ETHTOOL_LINK_EXT_STATE_BAD_SIGNAL_INTEGRITY = 3,
+	ETHTOOL_LINK_EXT_STATE_NO_CABLE = 4,
+	ETHTOOL_LINK_EXT_STATE_CABLE_ISSUE = 5,
+	ETHTOOL_LINK_EXT_STATE_EEPROM_ISSUE = 6,
+	ETHTOOL_LINK_EXT_STATE_CALIBRATION_FAILURE = 7,
+	ETHTOOL_LINK_EXT_STATE_POWER_BUDGET_EXCEEDED = 8,
+	ETHTOOL_LINK_EXT_STATE_OVERHEAT = 9,
+	ETHTOOL_LINK_EXT_STATE_MODULE = 10,
+};
+
+struct ethtool_link_ext_state_info {
+	enum ethtool_link_ext_state link_ext_state;
+	union {
+		enum ethtool_link_ext_substate_autoneg autoneg;
+		enum ethtool_link_ext_substate_link_training link_training;
+		enum ethtool_link_ext_substate_link_logical_mismatch link_logical_mismatch;
+		enum ethtool_link_ext_substate_bad_signal_integrity bad_signal_integrity;
+		enum ethtool_link_ext_substate_cable_issue cable_issue;
+		enum ethtool_link_ext_substate_module module;
+		u32 __link_ext_substate;
+	};
+};
+
+struct ethtool_link_ext_stats {
+	u64 link_down_events;
+};
+
+struct ethtool_eeprom {
+	__u32 cmd;
+	__u32 magic;
+	__u32 offset;
+	__u32 len;
+	__u8 data[0];
+};
+
+struct ethtool_coalesce {
+	__u32 cmd;
+	__u32 rx_coalesce_usecs;
+	__u32 rx_max_coalesced_frames;
+	__u32 rx_coalesce_usecs_irq;
+	__u32 rx_max_coalesced_frames_irq;
+	__u32 tx_coalesce_usecs;
+	__u32 tx_max_coalesced_frames;
+	__u32 tx_coalesce_usecs_irq;
+	__u32 tx_max_coalesced_frames_irq;
+	__u32 stats_block_coalesce_usecs;
+	__u32 use_adaptive_rx_coalesce;
+	__u32 use_adaptive_tx_coalesce;
+	__u32 pkt_rate_low;
+	__u32 rx_coalesce_usecs_low;
+	__u32 rx_max_coalesced_frames_low;
+	__u32 tx_coalesce_usecs_low;
+	__u32 tx_max_coalesced_frames_low;
+	__u32 pkt_rate_high;
+	__u32 rx_coalesce_usecs_high;
+	__u32 rx_max_coalesced_frames_high;
+	__u32 tx_coalesce_usecs_high;
+	__u32 tx_max_coalesced_frames_high;
+	__u32 rate_sample_interval;
+};
+
+struct kernel_ethtool_coalesce {
+	u8 use_cqe_mode_tx;
+	u8 use_cqe_mode_rx;
+	u32 tx_aggr_max_bytes;
+	u32 tx_aggr_max_frames;
+	u32 tx_aggr_time_usecs;
+};
+
+struct ethtool_ringparam {
+	__u32 cmd;
+	__u32 rx_max_pending;
+	__u32 rx_mini_max_pending;
+	__u32 rx_jumbo_max_pending;
+	__u32 tx_max_pending;
+	__u32 rx_pending;
+	__u32 rx_mini_pending;
+	__u32 rx_jumbo_pending;
+	__u32 tx_pending;
+};
+
+struct kernel_ethtool_ringparam {
+	u32 rx_buf_len;
+	u8 tcp_data_split;
+	u8 tx_push;
+	u8 rx_push;
+	u32 cqe_size;
+	u32 tx_push_buf_len;
+	u32 tx_push_buf_max_len;
+};
+
+enum ethtool_mac_stats_src {
+	ETHTOOL_MAC_STATS_SRC_AGGREGATE = 0,
+	ETHTOOL_MAC_STATS_SRC_EMAC = 1,
+	ETHTOOL_MAC_STATS_SRC_PMAC = 2,
+};
+
+struct ethtool_pause_stats {
+	enum ethtool_mac_stats_src src;
+	union {
+		struct {
+			u64 tx_pause_frames;
+			u64 rx_pause_frames;
+		};
+		struct {
+			u64 tx_pause_frames;
+			u64 rx_pause_frames;
+		} stats;
+	};
+};
+
+struct ethtool_pauseparam {
+	__u32 cmd;
+	__u32 autoneg;
+	__u32 rx_pause;
+	__u32 tx_pause;
+};
+
+struct ethtool_test {
+	__u32 cmd;
+	__u32 flags;
+	__u32 reserved;
+	__u32 len;
+	__u64 data[0];
+};
+
+struct ethtool_stats {
+	__u32 cmd;
+	__u32 n_stats;
+	__u64 data[0];
+};
+
+struct ethtool_tcpip4_spec {
+	__be32 ip4src;
+	__be32 ip4dst;
+	__be16 psrc;
+	__be16 pdst;
+	__u8 tos;
+};
+
+struct ethtool_ah_espip4_spec {
+	__be32 ip4src;
+	__be32 ip4dst;
+	__be32 spi;
+	__u8 tos;
+};
+
+struct ethtool_usrip4_spec {
+	__be32 ip4src;
+	__be32 ip4dst;
+	__be32 l4_4_bytes;
+	__u8 tos;
+	__u8 ip_ver;
+	__u8 proto;
+};
+
+struct ethtool_tcpip6_spec {
+	__be32 ip6src[4];
+	__be32 ip6dst[4];
+	__be16 psrc;
+	__be16 pdst;
+	__u8 tclass;
+};
+
+struct ethtool_ah_espip6_spec {
+	__be32 ip6src[4];
+	__be32 ip6dst[4];
+	__be32 spi;
+	__u8 tclass;
+};
+
+struct ethtool_usrip6_spec {
+	__be32 ip6src[4];
+	__be32 ip6dst[4];
+	__be32 l4_4_bytes;
+	__u8 tclass;
+	__u8 l4_proto;
+};
+
+struct ethhdr {
+	unsigned char h_dest[6];
+	unsigned char h_source[6];
+	__be16 h_proto;
+};
+
+union ethtool_flow_union {
+	struct ethtool_tcpip4_spec tcp_ip4_spec;
+	struct ethtool_tcpip4_spec udp_ip4_spec;
+	struct ethtool_tcpip4_spec sctp_ip4_spec;
+	struct ethtool_ah_espip4_spec ah_ip4_spec;
+	struct ethtool_ah_espip4_spec esp_ip4_spec;
+	struct ethtool_usrip4_spec usr_ip4_spec;
+	struct ethtool_tcpip6_spec tcp_ip6_spec;
+	struct ethtool_tcpip6_spec udp_ip6_spec;
+	struct ethtool_tcpip6_spec sctp_ip6_spec;
+	struct ethtool_ah_espip6_spec ah_ip6_spec;
+	struct ethtool_ah_espip6_spec esp_ip6_spec;
+	struct ethtool_usrip6_spec usr_ip6_spec;
+	struct ethhdr ether_spec;
+	__u8 hdata[52];
+};
+
+struct ethtool_flow_ext {
+	__u8 padding[2];
+	unsigned char h_dest[6];
+	__be16 vlan_etype;
+	__be16 vlan_tci;
+	__be32 data[2];
+};
+
+struct ethtool_rx_flow_spec {
+	__u32 flow_type;
+	union ethtool_flow_union h_u;
+	struct ethtool_flow_ext h_ext;
+	union ethtool_flow_union m_u;
+	struct ethtool_flow_ext m_ext;
+	__u64 ring_cookie;
+	__u32 location;
+};
+
+struct ethtool_rxnfc {
+	__u32 cmd;
+	__u32 flow_type;
+	__u64 data;
+	struct ethtool_rx_flow_spec fs;
+	union {
+		__u32 rule_cnt;
+		__u32 rss_context;
+	};
+	__u32 rule_locs[0];
+};
+
+struct ethtool_flash {
+	__u32 cmd;
+	__u32 region;
+	char data[128];
+};
+
+struct ethtool_channels {
+	__u32 cmd;
+	__u32 max_rx;
+	__u32 max_tx;
+	__u32 max_other;
+	__u32 max_combined;
+	__u32 rx_count;
+	__u32 tx_count;
+	__u32 other_count;
+	__u32 combined_count;
+};
+
+struct ethtool_dump {
+	__u32 cmd;
+	__u32 version;
+	__u32 flag;
+	__u32 len;
+	__u8 data[0];
+};
+
+struct ethtool_ts_info {
+	__u32 cmd;
+	__u32 so_timestamping;
+	__s32 phc_index;
+	__u32 tx_types;
+	__u32 tx_reserved[3];
+	__u32 rx_filters;
+	__u32 rx_reserved[3];
+};
+
+struct ethtool_modinfo {
+	__u32 cmd;
+	__u32 type;
+	__u32 eeprom_len;
+	__u32 reserved[8];
+};
+
+struct ethtool_eee {
+	__u32 cmd;
+	__u32 supported;
+	__u32 advertised;
+	__u32 lp_advertised;
+	__u32 eee_active;
+	__u32 eee_enabled;
+	__u32 tx_lpi_enabled;
+	__u32 tx_lpi_timer;
+	__u32 reserved[2];
+};
+
+struct ethtool_tunable {
+	__u32 cmd;
+	__u32 id;
+	__u32 type_id;
+	__u32 len;
+	void *data[0];
+};
+
+struct ethtool_link_settings {
+	__u32 cmd;
+	__u32 speed;
+	__u8 duplex;
+	__u8 port;
+	__u8 phy_address;
+	__u8 autoneg;
+	__u8 mdio_support;
+	__u8 eth_tp_mdix;
+	__u8 eth_tp_mdix_ctrl;
+	__s8 link_mode_masks_nwords;
+	__u8 transceiver;
+	__u8 master_slave_cfg;
+	__u8 master_slave_state;
+	__u8 rate_matching;
+	__u32 reserved[7];
+	__u32 link_mode_masks[0];
+};
+
+struct ethtool_link_ksettings {
+	struct ethtool_link_settings base;
+	struct {
+		unsigned long supported[2];
+		unsigned long advertising[2];
+		unsigned long lp_advertising[2];
+	} link_modes;
+	u32 lanes;
+};
+
+struct ethtool_fec_stat {
+	u64 total;
+	u64 lanes[8];
+};
+
+struct ethtool_fec_stats {
+	struct ethtool_fec_stat corrected_blocks;
+	struct ethtool_fec_stat uncorrectable_blocks;
+	struct ethtool_fec_stat corrected_bits;
+};
+
+struct ethtool_fecparam {
+	__u32 cmd;
+	__u32 active_fec;
+	__u32 fec;
+	__u32 reserved;
+};
+
+struct ethtool_module_eeprom {
+	u32 offset;
+	u32 length;
+	u8 page;
+	u8 bank;
+	u8 i2c_address;
+	u8 *data;
+};
+
+struct ethtool_eth_phy_stats {
+	enum ethtool_mac_stats_src src;
+	union {
+		struct {
+			u64 SymbolErrorDuringCarrier;
+		};
+		struct {
+			u64 SymbolErrorDuringCarrier;
+		} stats;
+	};
+};
+
+struct ethtool_eth_mac_stats {
+	enum ethtool_mac_stats_src src;
+	union {
+		struct {
+			u64 FramesTransmittedOK;
+			u64 SingleCollisionFrames;
+			u64 MultipleCollisionFrames;
+			u64 FramesReceivedOK;
+			u64 FrameCheckSequenceErrors;
+			u64 AlignmentErrors;
+			u64 OctetsTransmittedOK;
+			u64 FramesWithDeferredXmissions;
+			u64 LateCollisions;
+			u64 FramesAbortedDueToXSColls;
+			u64 FramesLostDueToIntMACXmitError;
+			u64 CarrierSenseErrors;
+			u64 OctetsReceivedOK;
+			u64 FramesLostDueToIntMACRcvError;
+			u64 MulticastFramesXmittedOK;
+			u64 BroadcastFramesXmittedOK;
+			u64 FramesWithExcessiveDeferral;
+			u64 MulticastFramesReceivedOK;
+			u64 BroadcastFramesReceivedOK;
+			u64 InRangeLengthErrors;
+			u64 OutOfRangeLengthField;
+			u64 FrameTooLongErrors;
+		};
+		struct {
+			u64 FramesTransmittedOK;
+			u64 SingleCollisionFrames;
+			u64 MultipleCollisionFrames;
+			u64 FramesReceivedOK;
+			u64 FrameCheckSequenceErrors;
+			u64 AlignmentErrors;
+			u64 OctetsTransmittedOK;
+			u64 FramesWithDeferredXmissions;
+			u64 LateCollisions;
+			u64 FramesAbortedDueToXSColls;
+			u64 FramesLostDueToIntMACXmitError;
+			u64 CarrierSenseErrors;
+			u64 OctetsReceivedOK;
+			u64 FramesLostDueToIntMACRcvError;
+			u64 MulticastFramesXmittedOK;
+			u64 BroadcastFramesXmittedOK;
+			u64 FramesWithExcessiveDeferral;
+			u64 MulticastFramesReceivedOK;
+			u64 BroadcastFramesReceivedOK;
+			u64 InRangeLengthErrors;
+			u64 OutOfRangeLengthField;
+			u64 FrameTooLongErrors;
+		} stats;
+	};
+};
+
+struct ethtool_eth_ctrl_stats {
+	enum ethtool_mac_stats_src src;
+	union {
+		struct {
+			u64 MACControlFramesTransmitted;
+			u64 MACControlFramesReceived;
+			u64 UnsupportedOpcodesReceived;
+		};
+		struct {
+			u64 MACControlFramesTransmitted;
+			u64 MACControlFramesReceived;
+			u64 UnsupportedOpcodesReceived;
+		} stats;
+	};
+};
+
+struct ethtool_rmon_stats {
+	enum ethtool_mac_stats_src src;
+	union {
+		struct {
+			u64 undersize_pkts;
+			u64 oversize_pkts;
+			u64 fragments;
+			u64 jabbers;
+			u64 hist[10];
+			u64 hist_tx[10];
+		};
+		struct {
+			u64 undersize_pkts;
+			u64 oversize_pkts;
+			u64 fragments;
+			u64 jabbers;
+			u64 hist[10];
+			u64 hist_tx[10];
+		} stats;
+	};
+};
+
+struct ethtool_rmon_hist_range {
+	u16 low;
+	u16 high;
+};
+
+enum ethtool_module_power_mode_policy {
+	ETHTOOL_MODULE_POWER_MODE_POLICY_HIGH = 1,
+	ETHTOOL_MODULE_POWER_MODE_POLICY_AUTO = 2,
+};
+
+enum ethtool_module_power_mode {
+	ETHTOOL_MODULE_POWER_MODE_LOW = 1,
+	ETHTOOL_MODULE_POWER_MODE_HIGH = 2,
+};
+
+struct ethtool_module_power_mode_params {
+	enum ethtool_module_power_mode_policy policy;
+	enum ethtool_module_power_mode mode;
+};
+
+enum ethtool_mm_verify_status {
+	ETHTOOL_MM_VERIFY_STATUS_UNKNOWN = 0,
+	ETHTOOL_MM_VERIFY_STATUS_INITIAL = 1,
+	ETHTOOL_MM_VERIFY_STATUS_VERIFYING = 2,
+	ETHTOOL_MM_VERIFY_STATUS_SUCCEEDED = 3,
+	ETHTOOL_MM_VERIFY_STATUS_FAILED = 4,
+	ETHTOOL_MM_VERIFY_STATUS_DISABLED = 5,
+};
+
+struct ethtool_mm_state {
+	u32 verify_time;
+	u32 max_verify_time;
+	enum ethtool_mm_verify_status verify_status;
+	bool tx_enabled;
+	bool tx_active;
+	bool pmac_enabled;
+	bool verify_enabled;
+	u32 tx_min_frag_size;
+	u32 rx_min_frag_size;
+};
+
+struct ethtool_mm_cfg {
+	u32 verify_time;
+	bool verify_enabled;
+	bool tx_enabled;
+	bool pmac_enabled;
+	u32 tx_min_frag_size;
+};
+
+struct ethtool_mm_stats {
+	u64 MACMergeFrameAssErrorCount;
+	u64 MACMergeFrameSmdErrorCount;
+	u64 MACMergeFrameAssOkCount;
+	u64 MACMergeFragCountRx;
+	u64 MACMergeFragCountTx;
+	u64 MACMergeHoldCount;
+};
+
+struct selinux_audit_data;
+
+typedef void (*btf_trace_selinux_audited)(void *, struct selinux_audit_data *, char *, char *, const char *);
+
+struct selinux_audit_data {
+	u32 ssid;
+	u32 tsid;
+	u16 tclass;
+	u32 requested;
+	u32 audited;
+	u32 denied;
+	int result;
+};
+
+struct avc_cache_stats {
+	unsigned int lookups;
+	unsigned int misses;
+	unsigned int allocations;
+	unsigned int reclaims;
+	unsigned int frees;
+};
+
+struct avc_cache {
+	struct hlist_head slots[512];
+	spinlock_t slots_lock[512];
+	atomic_t lru_hint;
+	atomic_t active_nodes;
+	u32 latest_notif;
+};
+
+struct selinux_avc {
+	unsigned int avc_cache_threshold;
+	struct avc_cache avc_cache;
+};
+
+struct avc_callback_node {
+	int (*callback)(u32);
+	u32 events;
+	struct avc_callback_node *next;
+};
+
+struct av_decision {
+	u32 allowed;
+	u32 auditallow;
+	u32 auditdeny;
+	u32 seqno;
+	u32 flags;
+};
+
+struct avc_xperms_node;
+
+struct avc_entry {
+	u32 ssid;
+	u32 tsid;
+	u16 tclass;
+	struct av_decision avd;
+	struct avc_xperms_node *xp_node;
+};
+
+struct avc_node {
+	struct avc_entry ae;
+	struct hlist_node list;
+	struct callback_head rhead;
+};
+
+struct extended_perms_data {
+	u32 p[8];
+};
+
+struct extended_perms {
+	u16 len;
+	struct extended_perms_data drivers;
+};
+
+struct avc_xperms_node {
+	struct extended_perms xp;
+	struct list_head xpd_head;
+};
+
+struct trace_event_raw_selinux_audited {
+	struct trace_entry ent;
+	u32 requested;
+	u32 denied;
+	u32 audited;
+	int result;
+	u32 __data_loc_scontext;
+	u32 __data_loc_tcontext;
+	u32 __data_loc_tclass;
+	char __data[0];
+};
+
+struct extended_perms_decision {
+	u8 used;
+	u8 driver;
+	struct extended_perms_data *allowed;
+	struct extended_perms_data *auditallow;
+	struct extended_perms_data *dontaudit;
+};
+
+struct avc_xperms_decision_node {
+	struct extended_perms_decision xpd;
+	struct list_head xpd_list;
+};
+
+struct lsm_network_audit;
+
+struct lsm_ioctlop_audit;
+
+struct lsm_ibpkey_audit;
+
+struct lsm_ibendport_audit;
+
+struct common_audit_data {
+	char type;
+	union {
+		struct path path;
+		struct dentry *dentry;
+		struct inode *inode;
+		struct lsm_network_audit *net;
+		int cap;
+		int ipc_id;
+		struct task_struct *tsk;
+		struct {
+			key_serial_t key;
+			char *key_desc;
+		} key_struct;
+		char *kmod_name;
+		struct lsm_ioctlop_audit *op;
+		struct file *file;
+		struct lsm_ibpkey_audit *ibpkey;
+		struct lsm_ibendport_audit *ibendport;
+		int reason;
+		const char *anonclass;
+	} u;
+	union {
+		struct selinux_audit_data *selinux_audit_data;
+	};
+};
+
+struct lsm_network_audit {
+	int netif;
+	const struct sock *sk;
+	u16 family;
+	__be16 dport;
+	__be16 sport;
+	union {
+		struct {
+			__be32 daddr;
+			__be32 saddr;
+		} v4;
+		struct {
+			struct in6_addr daddr;
+			struct in6_addr saddr;
+		} v6;
+	} fam;
+};
+
+struct lsm_ioctlop_audit {
+	struct path path;
+	u16 cmd;
+};
+
+struct lsm_ibpkey_audit {
+	u64 subnet_prefix;
+	u16 pkey;
+};
+
+struct lsm_ibendport_audit {
+	const char *dev_name;
+	u8 port;
+};
+
+struct trace_event_data_offsets_selinux_audited {
+	u32 scontext;
+	u32 tcontext;
+	u32 tclass;
+};
+
+struct selinux_policy;
+
+struct selinux_state {
+	bool enforcing;
+	bool initialized;
+	bool policycap[8];
+	bool android_netlink_route;
+	bool android_netlink_getneigh;
+	struct page *status_page;
+	struct mutex status_lock;
+	struct selinux_policy __attribute__((btf_type_tag("rcu"))) *policy;
+	struct mutex policy_mutex;
+};
+
+struct xfrm_address_filter;
+
+struct xfrm_state_walk {
+	struct list_head all;
+	u8 state;
+	u8 dying;
+	u8 proto;
+	u32 seq;
+	struct xfrm_address_filter *filter;
+};
+
+struct xfrm_replay_state {
+	__u32 oseq;
+	__u32 seq;
+	__u32 bitmap;
+};
+
+enum xfrm_replay_mode {
+	XFRM_REPLAY_MODE_LEGACY = 0,
+	XFRM_REPLAY_MODE_BMP = 1,
+	XFRM_REPLAY_MODE_ESN = 2,
+};
+
+struct xfrm_stats {
+	__u32 replay_window;
+	__u32 replay;
+	__u32 integrity_failed;
+};
+
+struct xfrm_mode {
+	u8 encap;
+	u8 family;
+	u8 flags;
+};
+
+struct xfrm_algo_auth;
+
+struct xfrm_algo;
+
+struct xfrm_algo_aead;
+
+struct xfrm_encap_tmpl;
+
+struct xfrm_replay_state_esn;
+
+struct xfrm_type;
+
+struct xfrm_type_offload;
+
+struct xfrm_state {
+	possible_net_t xs_net;
+	union {
+		struct hlist_node gclist;
+		struct hlist_node bydst;
+	};
+	struct hlist_node bysrc;
+	struct hlist_node byspi;
+	struct hlist_node byseq;
+	refcount_t refcnt;
+	spinlock_t lock;
+	struct xfrm_id id;
+	struct xfrm_selector sel;
+	struct xfrm_mark mark;
+	u32 if_id;
+	u32 tfcpad;
+	u32 genid;
+	struct xfrm_state_walk km;
+	struct {
+		u32 reqid;
+		u8 mode;
+		u8 replay_window;
+		u8 aalgo;
+		u8 ealgo;
+		u8 calgo;
+		u8 flags;
+		u16 family;
+		xfrm_address_t saddr;
+		int header_len;
+		int trailer_len;
+		u32 extra_flags;
+		struct xfrm_mark smark;
+	} props;
+	struct xfrm_lifetime_cfg lft;
+	struct xfrm_algo_auth *aalg;
+	struct xfrm_algo *ealg;
+	struct xfrm_algo *calg;
+	struct xfrm_algo_aead *aead;
+	const char *geniv;
+	__be16 new_mapping_sport;
+	u32 new_mapping;
+	u32 mapping_maxage;
+	struct xfrm_encap_tmpl *encap;
+	struct sock __attribute__((btf_type_tag("rcu"))) *encap_sk;
+	xfrm_address_t *coaddr;
+	struct xfrm_state *tunnel;
+	atomic_t tunnel_users;
+	struct xfrm_replay_state replay;
+	struct xfrm_replay_state_esn *replay_esn;
+	struct xfrm_replay_state preplay;
+	struct xfrm_replay_state_esn *preplay_esn;
+	enum xfrm_replay_mode repl_mode;
+	u32 xflags;
+	u32 replay_maxage;
+	u32 replay_maxdiff;
+	struct timer_list rtimer;
+	struct xfrm_stats stats;
+	struct xfrm_lifetime_cur curlft;
+	struct hrtimer mtimer;
+	struct xfrm_dev_offload xso;
+	long saved_tmo;
+	time64_t lastused;
+	struct page_frag xfrag;
+	const struct xfrm_type *type;
+	struct xfrm_mode inner_mode;
+	struct xfrm_mode inner_mode_iaf;
+	struct xfrm_mode outer_mode;
+	const struct xfrm_type_offload *type_offload;
+	struct xfrm_sec_ctx *security;
+	void *data;
+};
+
+struct xfrm_address_filter {
+	xfrm_address_t saddr;
+	xfrm_address_t daddr;
+	__u16 family;
+	__u8 splen;
+	__u8 dplen;
+};
+
+struct xfrm_algo_auth {
+	char alg_name[64];
+	unsigned int alg_key_len;
+	unsigned int alg_trunc_len;
+	char alg_key[0];
+};
+
+struct xfrm_algo {
+	char alg_name[64];
+	unsigned int alg_key_len;
+	char alg_key[0];
+};
+
+struct xfrm_algo_aead {
+	char alg_name[64];
+	unsigned int alg_key_len;
+	unsigned int alg_icv_len;
+	char alg_key[0];
+};
+
+struct xfrm_encap_tmpl {
+	__u16 encap_type;
+	__be16 encap_sport;
+	__be16 encap_dport;
+	xfrm_address_t encap_oa;
+};
+
+struct xfrm_replay_state_esn {
+	unsigned int bmp_len;
+	__u32 oseq;
+	__u32 seq;
+	__u32 oseq_hi;
+	__u32 seq_hi;
+	__u32 replay_window;
+	__u32 bmp[0];
+};
+
+struct xfrm_type {
+	struct module *owner;
+	u8 proto;
+	u8 flags;
+	int (*init_state)(struct xfrm_state *, struct netlink_ext_ack *);
+	void (*destructor)(struct xfrm_state *);
+	int (*input)(struct xfrm_state *, struct sk_buff *);
+	int (*output)(struct xfrm_state *, struct sk_buff *);
+	int (*reject)(struct xfrm_state *, struct sk_buff *, const struct flowi *);
+};
+
+struct xfrm_type_offload {
+	struct module *owner;
+	u8 proto;
+	void (*encap)(struct xfrm_state *, struct sk_buff *);
+	int (*input_tail)(struct xfrm_state *, struct sk_buff *);
+	int (*xmit)(struct xfrm_state *, struct sk_buff *, netdev_features_t);
+};
+
+struct xfrm_sec_ctx {
+	__u8 ctx_doi;
+	__u8 ctx_alg;
+	__u16 ctx_len;
+	__u32 ctx_sid;
+	char ctx_str[0];
+};
+
+struct rt6key {
+	struct in6_addr addr;
+	int plen;
+};
+
+struct rtable;
+
+struct fnhe_hash_bucket;
+
+struct fib_nh_common {
+	struct net_device *nhc_dev;
+	netdevice_tracker nhc_dev_tracker;
+	int nhc_oif;
+	unsigned char nhc_scope;
+	u8 nhc_family;
+	u8 nhc_gw_family;
+	unsigned char nhc_flags;
+	struct lwtunnel_state *nhc_lwtstate;
+	union {
+		__be32 ipv4;
+		struct in6_addr ipv6;
+	} nhc_gw;
+	int nhc_weight;
+	atomic_t nhc_upper_bound;
+	struct rtable __attribute__((btf_type_tag("rcu"))) * __attribute__((btf_type_tag("percpu"))) *nhc_pcpu_rth_output;
+	struct rtable __attribute__((btf_type_tag("rcu"))) *nhc_rth_input;
+	struct fnhe_hash_bucket __attribute__((btf_type_tag("rcu"))) *nhc_exceptions;
+};
+
+struct rt6_exception_bucket;
+
+struct fib6_nh {
+	struct fib_nh_common nh_common;
+	unsigned long last_probe;
+	struct rt6_info * __attribute__((btf_type_tag("percpu"))) *rt6i_pcpu;
+	struct rt6_exception_bucket __attribute__((btf_type_tag("rcu"))) *rt6i_exception_bucket;
+};
+
+struct fib6_node;
+
+struct dst_metrics;
+
+struct nexthop;
+
+struct fib6_info {
+	struct fib6_table *fib6_table;
+	struct fib6_info __attribute__((btf_type_tag("rcu"))) *fib6_next;
+	struct fib6_node __attribute__((btf_type_tag("rcu"))) *fib6_node;
+	union {
+		struct list_head fib6_siblings;
+		struct list_head nh_list;
+	};
+	unsigned int fib6_nsiblings;
+	refcount_t fib6_ref;
+	unsigned long expires;
+	struct dst_metrics *fib6_metrics;
+	struct rt6key fib6_dst;
+	u32 fib6_flags;
+	struct rt6key fib6_src;
+	struct rt6key fib6_prefsrc;
+	u32 fib6_metric;
+	u8 fib6_protocol;
+	u8 fib6_type;
+	u8 offload;
+	u8 trap;
+	u8 offload_failed;
+	u8 should_flush: 1;
+	u8 dst_nocount: 1;
+	u8 dst_nopolicy: 1;
+	u8 fib6_destroying: 1;
+	u8 unused: 4;
+	struct callback_head rcu;
+	struct nexthop *nh;
+	u64 android_kabi_reserved1;
+	struct fib6_nh fib6_nh[0];
+};
+
+struct fib6_node {
+	struct fib6_node __attribute__((btf_type_tag("rcu"))) *parent;
+	struct fib6_node __attribute__((btf_type_tag("rcu"))) *left;
+	struct fib6_node __attribute__((btf_type_tag("rcu"))) *right;
+	struct fib6_info __attribute__((btf_type_tag("rcu"))) *leaf;
+	__u16 fn_bit;
+	__u16 fn_flags;
+	int fn_sernum;
+	struct fib6_info __attribute__((btf_type_tag("rcu"))) *rr_ptr;
+	struct callback_head rcu;
+	u64 android_kabi_reserved1;
+};
+
+struct fib6_table {
+	struct hlist_node tb6_hlist;
+	u32 tb6_id;
+	spinlock_t tb6_lock;
+	struct fib6_node tb6_root;
+	struct inet_peer_base tb6_peers;
+	unsigned int flags;
+	unsigned int fib_seq;
+};
+
+struct dst_metrics {
+	u32 metrics[17];
+	refcount_t refcnt;
+};
+
+struct rtable {
+	struct dst_entry dst;
+	int rt_genid;
+	unsigned int rt_flags;
+	__u16 rt_type;
+	__u8 rt_is_input;
+	__u8 rt_uses_gateway;
+	int rt_iif;
+	u8 rt_gw_family;
+	union {
+		__be32 rt_gw4;
+		struct in6_addr rt_gw6;
+	};
+	u32 rt_mtu_locked: 1;
+	u32 rt_pmtu: 31;
+};
+
+struct fib_nh_exception;
+
+struct fnhe_hash_bucket {
+	struct fib_nh_exception __attribute__((btf_type_tag("rcu"))) *chain;
+};
+
+struct fib_nh_exception {
+	struct fib_nh_exception __attribute__((btf_type_tag("rcu"))) *fnhe_next;
+	int fnhe_genid;
+	__be32 fnhe_daddr;
+	u32 fnhe_pmtu;
+	bool fnhe_mtu_locked;
+	__be32 fnhe_gw;
+	unsigned long fnhe_expires;
+	struct rtable __attribute__((btf_type_tag("rcu"))) *fnhe_rth_input;
+	struct rtable __attribute__((btf_type_tag("rcu"))) *fnhe_rth_output;
+	unsigned long fnhe_stamp;
+	struct callback_head rcu;
+};
+
+struct rt6_info {
+	struct dst_entry dst;
+	struct fib6_info __attribute__((btf_type_tag("rcu"))) *from;
+	int sernum;
+	struct rt6key rt6i_dst;
+	struct rt6key rt6i_src;
+	struct in6_addr rt6i_gateway;
+	struct inet6_dev *rt6i_idev;
+	u32 rt6i_flags;
+	unsigned short rt6i_nfheader_len;
+	u64 android_kabi_reserved1;
+};
+
+struct rt6_exception_bucket {
+	struct hlist_head chain;
+	int depth;
+};
+
+struct rt6_statistics {
+	__u32 fib_nodes;
+	__u32 fib_route_nodes;
+	__u32 fib_rt_entries;
+	__u32 fib_rt_cache;
+	__u32 fib_discarded_routes;
+	atomic_t fib_rt_alloc;
+};
+
+struct hashtab_node;
+
+struct hashtab {
+	struct hashtab_node **htable;
+	u32 size;
+	u32 nel;
+};
+
+struct symtab {
+	struct hashtab table;
+	u32 nprim;
+};
+
+struct avtab_node;
+
+struct avtab {
+	struct avtab_node **htable;
+	u32 nel;
+	u32 nslot;
+	u32 mask;
+};
+
+struct ebitmap_node;
+
+struct ebitmap {
+	struct ebitmap_node *node;
+	u32 highbit;
+};
+
+struct class_datum;
+
+struct role_datum;
+
+struct user_datum;
+
+struct type_datum;
+
+struct cond_bool_datum;
+
+struct cond_node;
+
+struct role_allow;
+
+struct ocontext;
+
+struct genfs;
+
+struct policydb {
+	int mls_enabled;
+	int android_netlink_route;
+	int android_netlink_getneigh;
+	struct symtab symtab[8];
+	char **sym_val_to_name[8];
+	struct class_datum **class_val_to_struct;
+	struct role_datum **role_val_to_struct;
+	struct user_datum **user_val_to_struct;
+	struct type_datum **type_val_to_struct;
+	struct avtab te_avtab;
+	struct hashtab role_tr;
+	struct ebitmap filename_trans_ttypes;
+	struct hashtab filename_trans;
+	u32 compat_filename_trans_count;
+	struct cond_bool_datum **bool_val_to_struct;
+	struct avtab te_cond_avtab;
+	struct cond_node *cond_list;
+	u32 cond_list_len;
+	struct role_allow *role_allow;
+	struct ocontext *ocontexts[9];
+	struct genfs *genfs;
+	struct hashtab range_tr;
+	struct ebitmap *type_attr_map_array;
+	struct ebitmap policycaps;
+	struct ebitmap permissive_map;
+	size_t len;
+	unsigned int policyvers;
+	unsigned int reject_unknown: 1;
+	unsigned int allow_unknown: 1;
+	u16 process_class;
+	u32 process_trans_perms;
+};
+
+struct selinux_mapping;
+
+struct selinux_map {
+	struct selinux_mapping *mapping;
+	u16 size;
+};
+
+struct sidtab;
+
+struct selinux_policy {
+	struct sidtab *sidtab;
+	struct policydb policydb;
+	struct selinux_map map;
+	u32 latest_granting;
+};
+
+struct in_addr {
+	__be32 s_addr;
+};
+
+struct sockaddr_in {
+	__kernel_sa_family_t sin_family;
+	__be16 sin_port;
+	struct in_addr sin_addr;
+	unsigned char __pad[8];
+};
+
+struct sockaddr_in6 {
+	unsigned short sin6_family;
+	__be16 sin6_port;
+	__be32 sin6_flowinfo;
+	struct in6_addr sin6_addr;
+	__u32 sin6_scope_id;
+};
+
+union sctp_addr {
+	struct sockaddr_in v4;
+	struct sockaddr_in6 v6;
+	struct sockaddr sa;
+};
+
+struct sctp_tsnmap {
+	unsigned long *tsn_map;
+	__u32 base_tsn;
+	__u32 cumulative_tsn_ack_point;
+	__u32 max_tsn_seen;
+	__u16 len;
+	__u16 pending_data;
+	__u16 num_dup_tsns;
+	__be32 dup_tsns[16];
+};
+
+struct sctp_inithdr_host {
+	__u32 init_tag;
+	__u32 a_rwnd;
+	__u16 num_outbound_streams;
+	__u16 num_inbound_streams;
+	__u32 initial_tsn;
+};
+
+enum sctp_endpoint_type {
+	SCTP_EP_TYPE_SOCKET = 0,
+	SCTP_EP_TYPE_ASSOCIATION = 1,
+};
+
+struct sctp_chunk;
+
+struct sctp_inq {
+	struct list_head in_chunk_list;
+	struct sctp_chunk *in_progress;
+	struct work_struct immediate;
+};
+
+struct sctp_bind_addr {
+	__u16 port;
+	struct list_head address_list;
+};
+
+struct sctp_ep_common {
+	enum sctp_endpoint_type type;
+	refcount_t refcnt;
+	bool dead;
+	struct sock *sk;
+	struct net *net;
+	struct sctp_inq inqueue;
+	struct sctp_bind_addr bind_addr;
+};
+
+typedef __s32 sctp_assoc_t;
+
+struct sctp_cookie {
+	__u32 my_vtag;
+	__u32 peer_vtag;
+	__u32 my_ttag;
+	__u32 peer_ttag;
+	ktime_t expiration;
+	__u16 sinit_num_ostreams;
+	__u16 sinit_max_instreams;
+	__u32 initial_tsn;
+	union sctp_addr peer_addr;
+	__u16 my_port;
+	__u8 prsctp_capable;
+	__u8 padding;
+	__u32 adaptation_ind;
+	__u8 auth_random[36];
+	__u8 auth_hmacs[10];
+	__u8 auth_chunks[20];
+	__u32 raw_addr_list_len;
+};
+
+enum sctp_state {
+	SCTP_STATE_CLOSED = 0,
+	SCTP_STATE_COOKIE_WAIT = 1,
+	SCTP_STATE_COOKIE_ECHOED = 2,
+	SCTP_STATE_ESTABLISHED = 3,
+	SCTP_STATE_SHUTDOWN_PENDING = 4,
+	SCTP_STATE_SHUTDOWN_SENT = 5,
+	SCTP_STATE_SHUTDOWN_RECEIVED = 6,
+	SCTP_STATE_SHUTDOWN_ACK_SENT = 7,
+};
+
+struct sctp_stream_out_ext;
+
+struct sctp_stream_out {
+	union {
+		__u32 mid;
+		__u16 ssn;
+	};
+	__u32 mid_uo;
+	struct sctp_stream_out_ext *ext;
+	__u8 state;
+};
+
+struct sctp_stream_in {
+	union {
+		__u32 mid;
+		__u16 ssn;
+	};
+	__u32 mid_uo;
+	__u32 fsn;
+	__u32 fsn_uo;
+	char pd_mode;
+	char pd_mode_uo;
+};
+
+struct sctp_stream_interleave;
+
+struct sctp_stream {
+	struct {
+		struct __genradix tree;
+		struct sctp_stream_out type[0];
+	} out;
+	struct {
+		struct __genradix tree;
+		struct sctp_stream_in type[0];
+	} in;
+	__u16 outcnt;
+	__u16 incnt;
+	struct sctp_stream_out *out_curr;
+	union {
+		struct {
+			struct list_head prio_list;
+		};
+		struct {
+			struct list_head rr_list;
+			struct sctp_stream_out_ext *rr_next;
+		};
+		struct {
+			struct list_head fc_list;
+		};
+	};
+	struct sctp_stream_interleave *si;
+};
+
+struct sctp_sched_ops;
+
+struct sctp_outq {
+	struct sctp_association *asoc;
+	struct list_head out_chunk_list;
+	struct sctp_sched_ops *sched;
+	unsigned int out_qlen;
+	unsigned int error;
+	struct list_head control_chunk_list;
+	struct list_head sacked;
+	struct list_head retransmit;
+	struct list_head abandoned;
+	__u32 outstanding_bytes;
+	char fast_rtx;
+	char cork;
+};
+
+struct sctp_ulpq {
+	char pd_mode;
+	struct sctp_association *asoc;
+	struct sk_buff_head reasm;
+	struct sk_buff_head reasm_uo;
+	struct sk_buff_head lobby;
+};
+
+struct sctp_priv_assoc_stats {
+	struct __kernel_sockaddr_storage obs_rto_ipaddr;
+	__u64 max_obs_rto;
+	__u64 isacks;
+	__u64 osacks;
+	__u64 opackets;
+	__u64 ipackets;
+	__u64 rtxchunks;
+	__u64 outofseqtsns;
+	__u64 idupchunks;
+	__u64 gapcnt;
+	__u64 ouodchunks;
+	__u64 iuodchunks;
+	__u64 oodchunks;
+	__u64 iodchunks;
+	__u64 octrlchunks;
+	__u64 ictrlchunks;
+};
+
+struct sctp_endpoint;
+
+struct sctp_transport;
+
+struct sctp_random_param;
+
+struct sctp_chunks_param;
+
+struct sctp_hmac_algo_param;
+
+struct sctp_auth_bytes;
+
+struct sctp_shared_key;
+
+struct sctp_association {
+	struct sctp_ep_common base;
+	struct list_head asocs;
+	sctp_assoc_t assoc_id;
+	struct sctp_endpoint *ep;
+	struct sctp_cookie c;
+	struct {
+		struct list_head transport_addr_list;
+		__u32 rwnd;
+		__u16 transport_count;
+		__u16 port;
+		struct sctp_transport *primary_path;
+		union sctp_addr primary_addr;
+		struct sctp_transport *active_path;
+		struct sctp_transport *retran_path;
+		struct sctp_transport *last_sent_to;
+		struct sctp_transport *last_data_from;
+		struct sctp_tsnmap tsn_map;
+		__be16 addip_disabled_mask;
+		__u16 ecn_capable: 1;
+		__u16 ipv4_address: 1;
+		__u16 ipv6_address: 1;
+		__u16 asconf_capable: 1;
+		__u16 prsctp_capable: 1;
+		__u16 reconf_capable: 1;
+		__u16 intl_capable: 1;
+		__u16 auth_capable: 1;
+		__u16 sack_needed: 1;
+		__u16 sack_generation: 1;
+		__u16 zero_window_announced: 1;
+		__u32 sack_cnt;
+		__u32 adaptation_ind;
+		struct sctp_inithdr_host i;
+		void *cookie;
+		int cookie_len;
+		__u32 addip_serial;
+		struct sctp_random_param *peer_random;
+		struct sctp_chunks_param *peer_chunks;
+		struct sctp_hmac_algo_param *peer_hmacs;
+	} peer;
+	enum sctp_state state;
+	int overall_error_count;
+	ktime_t cookie_life;
+	unsigned long rto_initial;
+	unsigned long rto_max;
+	unsigned long rto_min;
+	int max_burst;
+	int max_retrans;
+	__u16 pf_retrans;
+	__u16 ps_retrans;
+	__u16 max_init_attempts;
+	__u16 init_retries;
+	unsigned long max_init_timeo;
+	unsigned long hbinterval;
+	unsigned long probe_interval;
+	__be16 encap_port;
+	__u16 pathmaxrxt;
+	__u32 flowlabel;
+	__u8 dscp;
+	__u8 pmtu_pending;
+	__u32 pathmtu;
+	__u32 param_flags;
+	__u32 sackfreq;
+	unsigned long sackdelay;
+	unsigned long timeouts[12];
+	struct timer_list timers[12];
+	struct sctp_transport *shutdown_last_sent_to;
+	struct sctp_transport *init_last_sent_to;
+	int shutdown_retries;
+	__u32 next_tsn;
+	__u32 ctsn_ack_point;
+	__u32 adv_peer_ack_point;
+	__u32 highest_sacked;
+	__u32 fast_recovery_exit;
+	__u8 fast_recovery;
+	__u16 unack_data;
+	__u32 rtx_data_chunks;
+	__u32 rwnd;
+	__u32 a_rwnd;
+	__u32 rwnd_over;
+	__u32 rwnd_press;
+	int sndbuf_used;
+	atomic_t rmem_alloc;
+	wait_queue_head_t wait;
+	__u32 frag_point;
+	__u32 user_frag;
+	int init_err_counter;
+	int init_cycle;
+	__u16 default_stream;
+	__u16 default_flags;
+	__u32 default_ppid;
+	__u32 default_context;
+	__u32 default_timetolive;
+	__u32 default_rcv_context;
+	struct sctp_stream stream;
+	struct sctp_outq outqueue;
+	struct sctp_ulpq ulpq;
+	__u32 last_ecne_tsn;
+	__u32 last_cwr_tsn;
+	int numduptsns;
+	struct sctp_chunk *addip_last_asconf;
+	struct list_head asconf_ack_list;
+	struct list_head addip_chunk_list;
+	__u32 addip_serial;
+	int src_out_of_asoc_ok;
+	union sctp_addr *asconf_addr_del_pending;
+	struct sctp_transport *new_transport;
+	struct list_head endpoint_shared_keys;
+	struct sctp_auth_bytes *asoc_shared_key;
+	struct sctp_shared_key *shkey;
+	__u16 default_hmac_id;
+	__u16 active_key_id;
+	__u8 need_ecne: 1;
+	__u8 temp: 1;
+	__u8 pf_expose: 2;
+	__u8 force_delay: 1;
+	__u8 strreset_enable;
+	__u8 strreset_outstanding;
+	__u32 strreset_outseq;
+	__u32 strreset_inseq;
+	__u32 strreset_result[2];
+	struct sctp_chunk *strreset_chunk;
+	struct sctp_priv_assoc_stats stats;
+	int sent_cnt_removable;
+	__u16 subscribe;
+	__u64 abandoned_unsent[3];
+	__u64 abandoned_sent[3];
+	u32 secid;
+	u32 peer_secid;
+	struct callback_head rcu;
+};
+
+struct sctp_paramhdr;
+
+struct sctp_cookie_preserve_param;
+
+struct sctp_hostname_param;
+
+struct sctp_cookie_param;
+
+struct sctp_supported_addrs_param;
+
+struct sctp_ipv4addr_param;
+
+struct sctp_ipv6addr_param;
+
+union sctp_addr_param;
+
+struct sctp_adaptation_ind_param;
+
+struct sctp_supported_ext_param;
+
+struct sctp_addip_param;
+
+union sctp_params {
+	void *v;
+	struct sctp_paramhdr *p;
+	struct sctp_cookie_preserve_param *life;
+	struct sctp_hostname_param *dns;
+	struct sctp_cookie_param *cookie;
+	struct sctp_supported_addrs_param *sat;
+	struct sctp_ipv4addr_param *v4;
+	struct sctp_ipv6addr_param *v6;
+	union sctp_addr_param *addr;
+	struct sctp_adaptation_ind_param *aind;
+	struct sctp_supported_ext_param *ext;
+	struct sctp_random_param *random;
+	struct sctp_chunks_param *chunks;
+	struct sctp_hmac_algo_param *hmac_algo;
+	struct sctp_addip_param *addip;
+};
+
+struct sctp_sndrcvinfo {
+	__u16 sinfo_stream;
+	__u16 sinfo_ssn;
+	__u16 sinfo_flags;
+	__u32 sinfo_ppid;
+	__u32 sinfo_context;
+	__u32 sinfo_timetolive;
+	__u32 sinfo_tsn;
+	__u32 sinfo_cumtsn;
+	sctp_assoc_t sinfo_assoc_id;
+};
+
+struct sctp_datahdr;
+
+struct sctp_inithdr;
+
+struct sctp_sackhdr;
+
+struct sctp_heartbeathdr;
+
+struct sctp_sender_hb_info;
+
+struct sctp_shutdownhdr;
+
+struct sctp_signed_cookie;
+
+struct sctp_ecnehdr;
+
+struct sctp_cwrhdr;
+
+struct sctp_errhdr;
+
+struct sctp_addiphdr;
+
+struct sctp_fwdtsn_hdr;
+
+struct sctp_authhdr;
+
+struct sctp_idatahdr;
+
+struct sctp_ifwdtsn_hdr;
+
+struct sctp_chunkhdr;
+
+struct sctphdr;
+
+struct sctp_datamsg;
+
+struct sctp_chunk {
+	struct list_head list;
+	refcount_t refcnt;
+	int sent_count;
+	union {
+		struct list_head transmitted_list;
+		struct list_head stream_list;
+	};
+	struct list_head frag_list;
+	struct sk_buff *skb;
+	union {
+		struct sk_buff *head_skb;
+		struct sctp_shared_key *shkey;
+	};
+	union sctp_params param_hdr;
+	union {
+		__u8 *v;
+		struct sctp_datahdr *data_hdr;
+		struct sctp_inithdr *init_hdr;
+		struct sctp_sackhdr *sack_hdr;
+		struct sctp_heartbeathdr *hb_hdr;
+		struct sctp_sender_hb_info *hbs_hdr;
+		struct sctp_shutdownhdr *shutdown_hdr;
+		struct sctp_signed_cookie *cookie_hdr;
+		struct sctp_ecnehdr *ecne_hdr;
+		struct sctp_cwrhdr *ecn_cwr_hdr;
+		struct sctp_errhdr *err_hdr;
+		struct sctp_addiphdr *addip_hdr;
+		struct sctp_fwdtsn_hdr *fwdtsn_hdr;
+		struct sctp_authhdr *auth_hdr;
+		struct sctp_idatahdr *idata_hdr;
+		struct sctp_ifwdtsn_hdr *ifwdtsn_hdr;
+	} subh;
+	__u8 *chunk_end;
+	struct sctp_chunkhdr *chunk_hdr;
+	struct sctphdr *sctp_hdr;
+	struct sctp_sndrcvinfo sinfo;
+	struct sctp_association *asoc;
+	struct sctp_ep_common *rcvr;
+	unsigned long sent_at;
+	union sctp_addr source;
+	union sctp_addr dest;
+	struct sctp_datamsg *msg;
+	struct sctp_transport *transport;
+	struct sk_buff *auth_chunk;
+	__u16 rtt_in_progress: 1;
+	__u16 has_tsn: 1;
+	__u16 has_ssn: 1;
+	__u16 singleton: 1;
+	__u16 end_of_packet: 1;
+	__u16 ecn_ce_done: 1;
+	__u16 pdiscard: 1;
+	__u16 tsn_gap_acked: 1;
+	__u16 data_accepted: 1;
+	__u16 auth: 1;
+	__u16 has_asconf: 1;
+	__u16 pmtu_probe: 1;
+	__u16 tsn_missing_report: 2;
+	__u16 fast_retransmit: 2;
+};
+
+struct sctp_shared_key {
+	struct list_head key_list;
+	struct sctp_auth_bytes *key;
+	refcount_t refcnt;
+	__u16 key_id;
+	__u8 deactivated;
+};
+
+struct sctp_auth_bytes {
+	refcount_t refcnt;
+	__u32 len;
+	__u8 data[0];
+};
+
+struct sctp_paramhdr {
+	__be16 type;
+	__be16 length;
+};
+
+struct sctp_cookie_preserve_param {
+	struct sctp_paramhdr param_hdr;
+	__be32 lifespan_increment;
+};
+
+struct sctp_hostname_param {
+	struct sctp_paramhdr param_hdr;
+	uint8_t hostname[0];
+};
+
+struct sctp_cookie_param {
+	struct sctp_paramhdr p;
+	__u8 body[0];
+};
+
+struct sctp_supported_addrs_param {
+	struct sctp_paramhdr param_hdr;
+	__be16 types[0];
+};
+
+struct sctp_ipv4addr_param {
+	struct sctp_paramhdr param_hdr;
+	struct in_addr addr;
+};
+
+struct sctp_ipv6addr_param {
+	struct sctp_paramhdr param_hdr;
+	struct in6_addr addr;
+};
+
+union sctp_addr_param {
+	struct sctp_paramhdr p;
+	struct sctp_ipv4addr_param v4;
+	struct sctp_ipv6addr_param v6;
+};
+
+struct sctp_adaptation_ind_param {
+	struct sctp_paramhdr param_hdr;
+	__be32 adaptation_ind;
+};
+
+struct sctp_supported_ext_param {
+	struct sctp_paramhdr param_hdr;
+	__u8 chunks[0];
+};
+
+struct sctp_random_param {
+	struct sctp_paramhdr param_hdr;
+	__u8 random_val[0];
+};
+
+struct sctp_chunks_param {
+	struct sctp_paramhdr param_hdr;
+	__u8 chunks[0];
+};
+
+struct sctp_hmac_algo_param {
+	struct sctp_paramhdr param_hdr;
+	__be16 hmac_ids[0];
+};
+
+struct sctp_addip_param {
+	struct sctp_paramhdr param_hdr;
+	__be32 crr_id;
+};
+
+struct sctp_datahdr {
+	__be32 tsn;
+	__be16 stream;
+	__be16 ssn;
+	__u32 ppid;
+};
+
+struct sctp_inithdr {
+	__be32 init_tag;
+	__be32 a_rwnd;
+	__be16 num_outbound_streams;
+	__be16 num_inbound_streams;
+	__be32 initial_tsn;
+};
+
+struct sctp_sackhdr {
+	__be32 cum_tsn_ack;
+	__be32 a_rwnd;
+	__be16 num_gap_ack_blocks;
+	__be16 num_dup_tsns;
+};
+
+struct sctp_heartbeathdr {
+	struct sctp_paramhdr info;
+};
+
+struct sctp_sender_hb_info {
+	struct sctp_paramhdr param_hdr;
+	union sctp_addr daddr;
+	unsigned long sent_at;
+	__u64 hb_nonce;
+	__u32 probe_size;
+};
+
+struct sctp_shutdownhdr {
+	__be32 cum_tsn_ack;
+};
+
+struct sctp_signed_cookie {
+	__u8 signature[32];
+	__u32 __pad;
+	struct sctp_cookie c;
+} __attribute__((packed));
+
+struct sctp_ecnehdr {
+	__be32 lowest_tsn;
+};
+
+struct sctp_cwrhdr {
+	__be32 lowest_tsn;
+};
+
+struct sctp_errhdr {
+	__be16 cause;
+	__be16 length;
+};
+
+struct sctp_addiphdr {
+	__be32 serial;
+};
+
+struct sctp_fwdtsn_hdr {
+	__be32 new_cum_tsn;
+};
+
+struct sctp_authhdr {
+	__be16 shkey_id;
+	__be16 hmac_id;
+};
+
+struct sctp_idatahdr {
+	__be32 tsn;
+	__be16 stream;
+	__be16 reserved;
+	__be32 mid;
+	union {
+		__u32 ppid;
+		__be32 fsn;
+	};
+	__u8 payload[0];
+};
+
+struct sctp_ifwdtsn_hdr {
+	__be32 new_cum_tsn;
+};
+
+struct sctp_chunkhdr {
+	__u8 type;
+	__u8 flags;
+	__be16 length;
+};
+
+struct sctphdr {
+	__be16 source;
+	__be16 dest;
+	__be32 vtag;
+	__le32 checksum;
+};
+
+struct sctp_datamsg {
+	struct list_head chunks;
+	refcount_t refcnt;
+	unsigned long expires_at;
+	int send_error;
+	u8 send_failed: 1;
+	u8 can_delay: 1;
+	u8 abandoned: 1;
+};
+
+struct sctp_packet {
+	__u16 source_port;
+	__u16 destination_port;
+	__u32 vtag;
+	struct list_head chunk_list;
+	size_t overhead;
+	size_t size;
+	size_t max_size;
+	struct sctp_transport *transport;
+	struct sctp_chunk *auth;
+	u8 has_cookie_echo: 1;
+	u8 has_sack: 1;
+	u8 has_auth: 1;
+	u8 has_data: 1;
+	u8 ipfragok: 1;
+};
+
+struct sctp_af;
+
+struct sctp_transport {
+	struct list_head transports;
+	struct rhlist_head node;
+	refcount_t refcnt;
+	__u32 rto_pending: 1;
+	__u32 hb_sent: 1;
+	__u32 pmtu_pending: 1;
+	__u32 dst_pending_confirm: 1;
+	__u32 sack_generation: 1;
+	u32 dst_cookie;
+	struct flowi fl;
+	union sctp_addr ipaddr;
+	struct sctp_af *af_specific;
+	struct sctp_association *asoc;
+	unsigned long rto;
+	__u32 rtt;
+	__u32 rttvar;
+	__u32 srtt;
+	__u32 cwnd;
+	__u32 ssthresh;
+	__u32 partial_bytes_acked;
+	__u32 flight_size;
+	__u32 burst_limited;
+	struct dst_entry *dst;
+	union sctp_addr saddr;
+	unsigned long hbinterval;
+	unsigned long probe_interval;
+	unsigned long sackdelay;
+	__u32 sackfreq;
+	atomic_t mtu_info;
+	ktime_t last_time_heard;
+	unsigned long last_time_sent;
+	unsigned long last_time_ecne_reduced;
+	__be16 encap_port;
+	__u16 pathmaxrxt;
+	__u32 flowlabel;
+	__u8 dscp;
+	__u16 pf_retrans;
+	__u16 ps_retrans;
+	__u32 pathmtu;
+	__u32 param_flags;
+	int init_sent_count;
+	int state;
+	unsigned short error_count;
+	struct timer_list T3_rtx_timer;
+	struct timer_list hb_timer;
+	struct timer_list proto_unreach_timer;
+	struct timer_list reconf_timer;
+	struct timer_list probe_timer;
+	struct list_head transmitted;
+	struct sctp_packet packet;
+	struct list_head send_ready;
+	struct {
+		__u32 next_tsn_at_change;
+		char changeover_active;
+		char cycling_changeover;
+		char cacc_saw_newack;
+	} cacc;
+	struct {
+		__u16 pmtu;
+		__u16 probe_size;
+		__u16 probe_high;
+		__u8 probe_count;
+		__u8 state;
+	} pl;
+	__u64 hb_nonce;
+	struct callback_head rcu;
+};
+
+enum sctp_scope {
+	SCTP_SCOPE_GLOBAL = 0,
+	SCTP_SCOPE_PRIVATE = 1,
+	SCTP_SCOPE_LINK = 2,
+	SCTP_SCOPE_LOOPBACK = 3,
+	SCTP_SCOPE_UNUSABLE = 4,
+};
+
+struct sctp_sock;
+
+struct sctp_af {
+	int (*sctp_xmit)(struct sk_buff *, struct sctp_transport *);
+	int (*setsockopt)(struct sock *, int, int, sockptr_t, unsigned int);
+	int (*getsockopt)(struct sock *, int, int, char __attribute__((btf_type_tag("user"))) *, int __attribute__((btf_type_tag("user"))) *);
+	void (*get_dst)(struct sctp_transport *, union sctp_addr *, struct flowi *, struct sock *);
+	void (*get_saddr)(struct sctp_sock *, struct sctp_transport *, struct flowi *);
+	void (*copy_addrlist)(struct list_head *, struct net_device *);
+	int (*cmp_addr)(const union sctp_addr *, const union sctp_addr *);
+	void (*addr_copy)(union sctp_addr *, union sctp_addr *);
+	void (*from_skb)(union sctp_addr *, struct sk_buff *, int);
+	void (*from_sk)(union sctp_addr *, struct sock *);
+	bool (*from_addr_param)(union sctp_addr *, union sctp_addr_param *, __be16, int);
+	int (*to_addr_param)(const union sctp_addr *, union sctp_addr_param *);
+	int (*addr_valid)(union sctp_addr *, struct sctp_sock *, const struct sk_buff *);
+	enum sctp_scope (*scope)(union sctp_addr *);
+	void (*inaddr_any)(union sctp_addr *, __be16);
+	int (*is_any)(const union sctp_addr *);
+	int (*available)(union sctp_addr *, struct sctp_sock *);
+	int (*skb_iif)(const struct sk_buff *);
+	int (*skb_sdif)(const struct sk_buff *);
+	int (*is_ce)(const struct sk_buff *);
+	void (*seq_dump_addr)(struct seq_file *, union sctp_addr *);
+	void (*ecn_capable)(struct sock *);
+	__u16 net_header_len;
+	int sockaddr_len;
+	int (*ip_options_len)(struct sock *);
+	sa_family_t sa_family;
+	struct list_head list;
+};
+
+struct ip_options;
+
+struct inet_cork {
+	unsigned int flags;
+	__be32 addr;
+	struct ip_options *opt;
+	unsigned int fragsize;
+	int length;
+	struct dst_entry *dst;
+	u8 tx_flags;
+	__u8 ttl;
+	__s16 tos;
+	char priority;
+	__u16 gso_size;
+	u64 transmit_time;
+	u32 mark;
+};
+
+struct inet_cork_full {
+	struct inet_cork base;
+	struct flowi fl;
+};
+
+struct ipv6_pinfo;
+
+struct ip_options_rcu;
+
+struct ip_mc_socklist;
+
+struct inet_sock {
+	struct sock sk;
+	struct ipv6_pinfo *pinet6;
+	unsigned long inet_flags;
+	__be32 inet_saddr;
+	__s16 uc_ttl;
+	__be16 inet_sport;
+	struct ip_options_rcu __attribute__((btf_type_tag("rcu"))) *inet_opt;
+	atomic_t inet_id;
+	__u8 tos;
+	__u8 min_ttl;
+	__u8 mc_ttl;
+	__u8 pmtudisc;
+	__u8 rcv_tos;
+	__u8 convert_csum;
+	int uc_index;
+	int mc_index;
+	__be32 mc_addr;
+	struct {
+		__u16 lo;
+		__u16 hi;
+	} local_port_range;
+	struct ip_mc_socklist __attribute__((btf_type_tag("rcu"))) *mc_list;
+	struct inet_cork_full cork;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+enum sctp_socket_type {
+	SCTP_SOCKET_UDP = 0,
+	SCTP_SOCKET_UDP_HIGH_BANDWIDTH = 1,
+	SCTP_SOCKET_TCP = 2,
+};
+
+struct sctp_rtoinfo {
+	sctp_assoc_t srto_assoc_id;
+	__u32 srto_initial;
+	__u32 srto_max;
+	__u32 srto_min;
+};
+
+struct sctp_paddrparams {
+	sctp_assoc_t spp_assoc_id;
+	struct __kernel_sockaddr_storage spp_address;
+	__u32 spp_hbinterval;
+	__u16 spp_pathmaxrxt;
+	__u32 spp_pathmtu;
+	__u32 spp_sackdelay;
+	__u32 spp_flags;
+	__u32 spp_ipv6_flowlabel;
+	__u8 spp_dscp;
+	int: 0;
+} __attribute__((packed));
+
+struct sctp_assocparams {
+	sctp_assoc_t sasoc_assoc_id;
+	__u16 sasoc_asocmaxrxt;
+	__u16 sasoc_number_peer_destinations;
+	__u32 sasoc_peer_rwnd;
+	__u32 sasoc_local_rwnd;
+	__u32 sasoc_cookie_life;
+};
+
+struct sctp_initmsg {
+	__u16 sinit_num_ostreams;
+	__u16 sinit_max_instreams;
+	__u16 sinit_max_attempts;
+	__u16 sinit_max_init_timeo;
+};
+
+struct sctp_pf;
+
+struct sctp_bind_bucket;
+
+struct sctp_sock {
+	struct inet_sock inet;
+	enum sctp_socket_type type;
+	struct sctp_pf *pf;
+	struct crypto_shash *hmac;
+	char *sctp_hmac_alg;
+	struct sctp_endpoint *ep;
+	struct sctp_bind_bucket *bind_hash;
+	__u16 default_stream;
+	__u32 default_ppid;
+	__u16 default_flags;
+	__u32 default_context;
+	__u32 default_timetolive;
+	__u32 default_rcv_context;
+	int max_burst;
+	__u32 hbinterval;
+	__u32 probe_interval;
+	__be16 udp_port;
+	__be16 encap_port;
+	__u16 pathmaxrxt;
+	__u32 flowlabel;
+	__u8 dscp;
+	__u16 pf_retrans;
+	__u16 ps_retrans;
+	__u32 pathmtu;
+	__u32 sackdelay;
+	__u32 sackfreq;
+	__u32 param_flags;
+	__u32 default_ss;
+	struct sctp_rtoinfo rtoinfo;
+	struct sctp_paddrparams paddrparam;
+	struct sctp_assocparams assocparams;
+	__u16 subscribe;
+	struct sctp_initmsg initmsg;
+	int user_frag;
+	__u32 autoclose;
+	__u32 adaptation_ind;
+	__u32 pd_point;
+	__u16 nodelay: 1;
+	__u16 pf_expose: 2;
+	__u16 reuse: 1;
+	__u16 disable_fragments: 1;
+	__u16 v4mapped: 1;
+	__u16 frag_interleave: 1;
+	__u16 recvrcvinfo: 1;
+	__u16 recvnxtinfo: 1;
+	__u16 data_ready_signalled: 1;
+	atomic_t pd_mode;
+	struct sk_buff_head pd_lobby;
+	struct list_head auto_asconf_list;
+	int do_auto_asconf;
+};
+
+struct in6_pktinfo {
+	struct in6_addr ipi6_addr;
+	int ipi6_ifindex;
+};
+
+struct ipv6_txoptions;
+
+struct inet6_cork {
+	struct ipv6_txoptions *opt;
+	u8 hop_limit;
+	u8 tclass;
+};
+
+struct ipv6_mc_socklist;
+
+struct ipv6_ac_socklist;
+
+struct ipv6_fl_socklist;
+
+struct ipv6_pinfo {
+	struct in6_addr saddr;
+	struct in6_pktinfo sticky_pktinfo;
+	const struct in6_addr *daddr_cache;
+	__be32 flow_label;
+	__u32 frag_size;
+	__u16 __unused_1: 7;
+	__s16 hop_limit: 9;
+	__u16 mc_loop: 1;
+	__u16 __unused_2: 6;
+	__s16 mcast_hops: 9;
+	int ucast_oif;
+	int mcast_oif;
+	union {
+		struct {
+			__u16 srcrt: 1;
+			__u16 osrcrt: 1;
+			__u16 rxinfo: 1;
+			__u16 rxoinfo: 1;
+			__u16 rxhlim: 1;
+			__u16 rxohlim: 1;
+			__u16 hopopts: 1;
+			__u16 ohopopts: 1;
+			__u16 dstopts: 1;
+			__u16 odstopts: 1;
+			__u16 rxflow: 1;
+			__u16 rxtclass: 1;
+			__u16 rxpmtu: 1;
+			__u16 rxorigdstaddr: 1;
+			__u16 recvfragsize: 1;
+		} bits;
+		__u16 all;
+	} rxopt;
+	__u16 recverr: 1;
+	__u16 sndflow: 1;
+	__u16 repflow: 1;
+	__u16 pmtudisc: 3;
+	__u16 padding: 1;
+	__u16 srcprefs: 3;
+	__u16 dontfrag: 1;
+	__u16 autoflowlabel: 1;
+	__u16 autoflowlabel_set: 1;
+	__u16 mc_all: 1;
+	__u16 recverr_rfc4884: 1;
+	__u16 rtalert_isolate: 1;
+	__u8 min_hopcount;
+	__u8 tclass;
+	__be32 rcv_flowinfo;
+	__u32 dst_cookie;
+	struct ipv6_mc_socklist __attribute__((btf_type_tag("rcu"))) *ipv6_mc_list;
+	struct ipv6_ac_socklist *ipv6_ac_list;
+	struct ipv6_fl_socklist __attribute__((btf_type_tag("rcu"))) *ipv6_fl_list;
+	struct ipv6_txoptions __attribute__((btf_type_tag("rcu"))) *opt;
+	struct sk_buff *pktoptions;
+	struct sk_buff *rxpmtu;
+	struct inet6_cork cork;
+};
+
+struct ip6_sf_socklist;
+
+struct ipv6_mc_socklist {
+	struct in6_addr addr;
+	int ifindex;
+	unsigned int sfmode;
+	struct ipv6_mc_socklist __attribute__((btf_type_tag("rcu"))) *next;
+	struct ip6_sf_socklist __attribute__((btf_type_tag("rcu"))) *sflist;
+	struct callback_head rcu;
+};
+
+struct ip6_sf_socklist {
+	unsigned int sl_max;
+	unsigned int sl_count;
+	struct callback_head rcu;
+	struct in6_addr sl_addr[0];
+};
+
+struct ipv6_ac_socklist {
+	struct in6_addr acl_addr;
+	int acl_ifindex;
+	struct ipv6_ac_socklist *acl_next;
+};
+
+struct ip6_flowlabel;
+
+struct ipv6_fl_socklist {
+	struct ipv6_fl_socklist __attribute__((btf_type_tag("rcu"))) *next;
+	struct ip6_flowlabel *fl;
+	struct callback_head rcu;
+};
+
+struct ip6_flowlabel {
+	struct ip6_flowlabel __attribute__((btf_type_tag("rcu"))) *next;
+	__be32 label;
+	atomic_t users;
+	struct in6_addr dst;
+	struct ipv6_txoptions *opt;
+	unsigned long linger;
+	struct callback_head rcu;
+	u8 share;
+	union {
+		struct pid *pid;
+		kuid_t uid;
+	} owner;
+	unsigned long lastuse;
+	unsigned long expires;
+	struct net *fl_net;
+};
+
+struct ipv6_opt_hdr;
+
+struct ipv6_rt_hdr;
+
+struct ipv6_txoptions {
+	refcount_t refcnt;
+	int tot_len;
+	__u16 opt_flen;
+	__u16 opt_nflen;
+	struct ipv6_opt_hdr *hopopt;
+	struct ipv6_opt_hdr *dst0opt;
+	struct ipv6_rt_hdr *srcrt;
+	struct ipv6_opt_hdr *dst1opt;
+	struct callback_head rcu;
+};
+
+struct ipv6_opt_hdr {
+	__u8 nexthdr;
+	__u8 hdrlen;
+};
+
+struct ipv6_rt_hdr {
+	__u8 nexthdr;
+	__u8 hdrlen;
+	__u8 type;
+	__u8 segments_left;
+};
+
+struct ip_options {
+	__be32 faddr;
+	__be32 nexthop;
+	unsigned char optlen;
+	unsigned char srr;
+	unsigned char rr;
+	unsigned char ts;
+	unsigned char is_strictroute: 1;
+	unsigned char srr_is_hit: 1;
+	unsigned char is_changed: 1;
+	unsigned char rr_needaddr: 1;
+	unsigned char ts_needtime: 1;
+	unsigned char ts_needaddr: 1;
+	unsigned char router_alert;
+	unsigned char cipso;
+	unsigned char __pad2;
+	unsigned char __data[0];
+};
+
+struct ip_options_rcu {
+	struct callback_head rcu;
+	struct ip_options opt;
+};
+
+struct ip_mreqn {
+	struct in_addr imr_multiaddr;
+	struct in_addr imr_address;
+	int imr_ifindex;
+};
+
+struct ip_sf_socklist;
+
+struct ip_mc_socklist {
+	struct ip_mc_socklist __attribute__((btf_type_tag("rcu"))) *next_rcu;
+	struct ip_mreqn multi;
+	unsigned int sfmode;
+	struct ip_sf_socklist __attribute__((btf_type_tag("rcu"))) *sflist;
+	struct callback_head rcu;
+};
+
+struct sctp_ulpevent;
+
+struct sctp_pf {
+	void (*event_msgname)(struct sctp_ulpevent *, char *, int *);
+	void (*skb_msgname)(struct sk_buff *, char *, int *);
+	int (*af_supported)(sa_family_t, struct sctp_sock *);
+	int (*cmp_addr)(const union sctp_addr *, const union sctp_addr *, struct sctp_sock *);
+	int (*bind_verify)(struct sctp_sock *, union sctp_addr *);
+	int (*send_verify)(struct sctp_sock *, union sctp_addr *);
+	int (*supported_addrs)(const struct sctp_sock *, __be16 *);
+	struct sock * (*create_accept_sk)(struct sock *, struct sctp_association *, bool);
+	int (*addr_to_user)(struct sctp_sock *, union sctp_addr *);
+	void (*to_sk_saddr)(union sctp_addr *, struct sock *);
+	void (*to_sk_daddr)(union sctp_addr *, struct sock *);
+	void (*copy_ip_options)(struct sock *, struct sock *);
+	struct sctp_af *af;
+};
+
+struct sctp_ulpevent {
+	struct sctp_association *asoc;
+	struct sctp_chunk *chunk;
+	unsigned int rmem_len;
+	union {
+		__u32 mid;
+		__u16 ssn;
+	};
+	union {
+		__u32 ppid;
+		__u32 fsn;
+	};
+	__u32 tsn;
+	__u32 cumtsn;
+	__u16 stream;
+	__u16 flags;
+	__u16 msg_flags;
+} __attribute__((packed));
+
+struct sctp_endpoint {
+	struct sctp_ep_common base;
+	struct hlist_node node;
+	int hashent;
+	struct list_head asocs;
+	__u8 secret_key[32];
+	__u8 *digest;
+	__u32 sndbuf_policy;
+	__u32 rcvbuf_policy;
+	struct crypto_shash **auth_hmacs;
+	struct sctp_hmac_algo_param *auth_hmacs_list;
+	struct sctp_chunks_param *auth_chunk_list;
+	struct list_head endpoint_shared_keys;
+	__u16 active_key_id;
+	__u8 ecn_enable: 1;
+	__u8 auth_enable: 1;
+	__u8 intl_enable: 1;
+	__u8 prsctp_enable: 1;
+	__u8 asconf_enable: 1;
+	__u8 reconf_enable: 1;
+	__u8 strreset_enable;
+	struct callback_head rcu;
+};
+
+struct sctp_bind_bucket {
+	unsigned short port;
+	signed char fastreuse;
+	signed char fastreuseport;
+	kuid_t fastuid;
+	struct hlist_node node;
+	struct hlist_head owner;
+	struct net *net;
+};
+
+struct sctp_stream_priorities;
+
+struct sctp_stream_out_ext {
+	__u64 abandoned_unsent[3];
+	__u64 abandoned_sent[3];
+	struct list_head outq;
+	union {
+		struct {
+			struct list_head prio_list;
+			struct sctp_stream_priorities *prio_head;
+		};
+		struct {
+			struct list_head rr_list;
+		};
+		struct {
+			struct list_head fc_list;
+			__u32 fc_length;
+			__u16 fc_weight;
+		};
+	};
+};
+
+struct sctp_stream_priorities {
+	struct list_head prio_sched;
+	struct list_head active;
+	struct sctp_stream_out_ext *next;
+	__u16 prio;
+	__u16 users;
+};
+
+struct sctp_stream_interleave {
+	__u16 data_chunk_len;
+	__u16 ftsn_chunk_len;
+	struct sctp_chunk * (*make_datafrag)(const struct sctp_association *, const struct sctp_sndrcvinfo *, int, __u8, gfp_t);
+	void (*assign_number)(struct sctp_chunk *);
+	bool (*validate_data)(struct sctp_chunk *);
+	int (*ulpevent_data)(struct sctp_ulpq *, struct sctp_chunk *, gfp_t);
+	int (*enqueue_event)(struct sctp_ulpq *, struct sctp_ulpevent *);
+	void (*renege_events)(struct sctp_ulpq *, struct sctp_chunk *, gfp_t);
+	void (*start_pd)(struct sctp_ulpq *, gfp_t);
+	void (*abort_pd)(struct sctp_ulpq *, gfp_t);
+	void (*generate_ftsn)(struct sctp_outq *, __u32);
+	bool (*validate_ftsn)(struct sctp_chunk *);
+	void (*report_ftsn)(struct sctp_ulpq *, __u32);
+	void (*handle_ftsn)(struct sctp_ulpq *, struct sctp_chunk *);
+};
+
+enum nf_hook_ops_type {
+	NF_HOOK_OP_UNDEFINED = 0,
+	NF_HOOK_OP_NF_TABLES = 1,
+	NF_HOOK_OP_BPF = 2,
+};
+
+struct nf_hook_ops {
+	nf_hookfn *hook;
+	struct net_device *dev;
+	void *priv;
+	u8 pf;
+	enum nf_hook_ops_type hook_ops_type: 8;
+	unsigned int hooknum;
+	int priority;
+};
+
+enum label_initialized {
+	LABEL_INVALID = 0,
+	LABEL_INITIALIZED = 1,
+	LABEL_PENDING = 2,
+};
+
+enum {
+	POLICYDB_CAP_NETPEER = 0,
+	POLICYDB_CAP_OPENPERM = 1,
+	POLICYDB_CAP_EXTSOCKCLASS = 2,
+	POLICYDB_CAP_ALWAYSNETWORK = 3,
+	POLICYDB_CAP_CGROUPSECLABEL = 4,
+	POLICYDB_CAP_NNP_NOSUID_TRANSITION = 5,
+	POLICYDB_CAP_GENFS_SECLABEL_SYMLINKS = 6,
+	POLICYDB_CAP_IOCTL_SKIP_CLOEXEC = 7,
+	__POLICYDB_CAP_MAX = 8,
+};
+
+struct sk_security_struct {
+	u32 sid;
+	u32 peer_sid;
+	u16 sclass;
+	enum {
+		SCTP_ASSOC_UNSET = 0,
+		SCTP_ASSOC_SET = 1,
+	} sctp_assoc_state;
+};
+
+enum {
+	Opt_error = -1,
+	Opt_context = 0,
+	Opt_defcontext = 1,
+	Opt_fscontext = 2,
+	Opt_rootcontext = 3,
+	Opt_seclabel = 4,
+};
+
+enum {
+	TCP_ESTABLISHED = 1,
+	TCP_SYN_SENT = 2,
+	TCP_SYN_RECV = 3,
+	TCP_FIN_WAIT1 = 4,
+	TCP_FIN_WAIT2 = 5,
+	TCP_TIME_WAIT = 6,
+	TCP_CLOSE = 7,
+	TCP_CLOSE_WAIT = 8,
+	TCP_LAST_ACK = 9,
+	TCP_LISTEN = 10,
+	TCP_CLOSING = 11,
+	TCP_NEW_SYN_RECV = 12,
+	TCP_MAX_STATES = 13,
+};
+
+struct inode_security_struct {
+	struct inode *inode;
+	struct list_head list;
+	u32 task_sid;
+	u32 sid;
+	u16 sclass;
+	unsigned char initialized;
+	spinlock_t lock;
+};
+
+struct tty_file_private {
+	struct tty_struct *tty;
+	struct file *file;
+	struct list_head list;
+};
+
+struct socket_alloc {
+	struct socket socket;
+	struct inode vfs_inode;
+};
+
+struct inet_skb_parm {
+	int iif;
+	struct ip_options opt;
+	u16 flags;
+	u16 frag_max_size;
+};
+
+struct inet6_skb_parm {
+	int iif;
+	__be16 ra;
+	__u16 dst0;
+	__u16 srcrt;
+	__u16 dst1;
+	__u16 lastopt;
+	__u16 nhoff;
+	__u16 flags;
+	__u16 dsthao;
+	__u16 frag_max_size;
+	__u16 srhoff;
+};
+
+struct task_security_struct {
+	u32 osid;
+	u32 sid;
+	u32 exec_sid;
+	u32 create_sid;
+	u32 keycreate_sid;
+	u32 sockcreate_sid;
+};
+
+struct superblock_security_struct {
+	u32 sid;
+	u32 def_sid;
+	u32 mntpoint_sid;
+	unsigned short behavior;
+	unsigned short flags;
+	struct mutex lock;
+	struct list_head isec_head;
+	spinlock_t isec_lock;
+};
+
+struct file_security_struct {
+	u32 sid;
+	u32 fown_sid;
+	u32 isid;
+	u32 pseqno;
+};
+
+struct bpf_security_struct {
+	u32 sid;
+};
+
+struct ipc_security_struct {
+	u16 sclass;
+	u32 sid;
+};
+
+struct msg_security_struct {
+	u32 sid;
+};
+
+typedef __u16 __sum16;
+
+struct iphdr {
+	__u8 ihl: 4;
+	__u8 version: 4;
+	__u8 tos;
+	__be16 tot_len;
+	__be16 id;
+	__be16 frag_off;
+	__u8 ttl;
+	__u8 protocol;
+	__sum16 check;
+	union {
+		struct {
+			__be32 saddr;
+			__be32 daddr;
+		};
+		struct {
+			__be32 saddr;
+			__be32 daddr;
+		} addrs;
+	};
+};
+
+struct tcphdr {
+	__be16 source;
+	__be16 dest;
+	__be32 seq;
+	__be32 ack_seq;
+	__u16 res1: 4;
+	__u16 doff: 4;
+	__u16 fin: 1;
+	__u16 syn: 1;
+	__u16 rst: 1;
+	__u16 psh: 1;
+	__u16 ack: 1;
+	__u16 urg: 1;
+	__u16 ece: 1;
+	__u16 cwr: 1;
+	__be16 window;
+	__sum16 check;
+	__be16 urg_ptr;
+};
+
+struct dccp_hdr {
+	__be16 dccph_sport;
+	__be16 dccph_dport;
+	__u8 dccph_doff;
+	__u8 dccph_cscov: 4;
+	__u8 dccph_ccval: 4;
+	__sum16 dccph_checksum;
+	__u8 dccph_x: 1;
+	__u8 dccph_type: 4;
+	__u8 dccph_reserved: 3;
+	__u8 dccph_seq2;
+	__be16 dccph_seq;
+};
+
+struct udphdr {
+	__be16 source;
+	__be16 dest;
+	__be16 len;
+	__sum16 check;
+};
+
+struct ipv6hdr {
+	__u8 priority: 4;
+	__u8 version: 4;
+	__u8 flow_lbl[3];
+	__be16 payload_len;
+	__u8 nexthdr;
+	__u8 hop_limit;
+	union {
+		struct {
+			struct in6_addr saddr;
+			struct in6_addr daddr;
+		};
+		struct {
+			struct in6_addr saddr;
+			struct in6_addr daddr;
+		} addrs;
+	};
+};
+
+struct selinux_mnt_opts {
+	u32 fscontext_sid;
+	u32 context_sid;
+	u32 rootcontext_sid;
+	u32 defcontext_sid;
+};
+
+struct tun_security_struct {
+	u32 sid;
+};
+
+struct key_security_struct {
+	u32 sid;
+};
+
+struct perf_event_security_struct {
+	u32 sid;
+};
+
+enum sel_inos {
+	SEL_ROOT_INO = 2,
+	SEL_LOAD = 3,
+	SEL_ENFORCE = 4,
+	SEL_CONTEXT = 5,
+	SEL_ACCESS = 6,
+	SEL_CREATE = 7,
+	SEL_RELABEL = 8,
+	SEL_USER = 9,
+	SEL_POLICYVERS = 10,
+	SEL_COMMIT_BOOLS = 11,
+	SEL_MLS = 12,
+	SEL_DISABLE = 13,
+	SEL_MEMBER = 14,
+	SEL_CHECKREQPROT = 15,
+	SEL_COMPAT_NET = 16,
+	SEL_REJECT_UNKNOWN = 17,
+	SEL_DENY_UNKNOWN = 18,
+	SEL_STATUS = 19,
+	SEL_POLICY = 20,
+	SEL_VALIDATE_TRANS = 21,
+	SEL_INO_NEXT = 22,
+};
+
+struct selinux_fs_info {
+	struct dentry *bool_dir;
+	unsigned int bool_num;
+	char **bool_pending_names;
+	int *bool_pending_values;
+	struct dentry *class_dir;
+	unsigned long last_class_ino;
+	bool policy_opened;
+	struct dentry *policycap_dir;
+	unsigned long last_ino;
+	struct super_block *sb;
+};
+
+struct selinux_policy_convert_data;
+
+struct selinux_load_state {
+	struct selinux_policy *policy;
+	struct selinux_policy_convert_data *convert_data;
+};
+
+struct policy_load_memory {
+	size_t len;
+	void *data;
+};
+
+enum {
+	SELNL_MSG_SETENFORCE = 16,
+	SELNL_MSG_POLICYLOAD = 17,
+	SELNL_MSG_MAX = 18,
+};
+
+enum selinux_nlgroups {
+	SELNLGRP_NONE = 0,
+	SELNLGRP_AVC = 1,
+	__SELNLGRP_MAX = 2,
+};
+
+struct selnl_msg_setenforce {
+	__s32 val;
+};
+
+struct selnl_msg_policyload {
+	__u32 seqno;
+};
+
+struct nlmsg_perm {
+	u16 nlmsg_type;
+	u32 perm;
+};
+
+enum {
+	RTM_BASE = 16,
+	RTM_NEWLINK = 16,
+	RTM_DELLINK = 17,
+	RTM_GETLINK = 18,
+	RTM_SETLINK = 19,
+	RTM_NEWADDR = 20,
+	RTM_DELADDR = 21,
+	RTM_GETADDR = 22,
+	RTM_NEWROUTE = 24,
+	RTM_DELROUTE = 25,
+	RTM_GETROUTE = 26,
+	RTM_NEWNEIGH = 28,
+	RTM_DELNEIGH = 29,
+	RTM_GETNEIGH = 30,
+	RTM_NEWRULE = 32,
+	RTM_DELRULE = 33,
+	RTM_GETRULE = 34,
+	RTM_NEWQDISC = 36,
+	RTM_DELQDISC = 37,
+	RTM_GETQDISC = 38,
+	RTM_NEWTCLASS = 40,
+	RTM_DELTCLASS = 41,
+	RTM_GETTCLASS = 42,
+	RTM_NEWTFILTER = 44,
+	RTM_DELTFILTER = 45,
+	RTM_GETTFILTER = 46,
+	RTM_NEWACTION = 48,
+	RTM_DELACTION = 49,
+	RTM_GETACTION = 50,
+	RTM_NEWPREFIX = 52,
+	RTM_GETMULTICAST = 58,
+	RTM_GETANYCAST = 62,
+	RTM_NEWNEIGHTBL = 64,
+	RTM_GETNEIGHTBL = 66,
+	RTM_SETNEIGHTBL = 67,
+	RTM_NEWNDUSEROPT = 68,
+	RTM_NEWADDRLABEL = 72,
+	RTM_DELADDRLABEL = 73,
+	RTM_GETADDRLABEL = 74,
+	RTM_GETDCB = 78,
+	RTM_SETDCB = 79,
+	RTM_NEWNETCONF = 80,
+	RTM_DELNETCONF = 81,
+	RTM_GETNETCONF = 82,
+	RTM_NEWMDB = 84,
+	RTM_DELMDB = 85,
+	RTM_GETMDB = 86,
+	RTM_NEWNSID = 88,
+	RTM_DELNSID = 89,
+	RTM_GETNSID = 90,
+	RTM_NEWSTATS = 92,
+	RTM_GETSTATS = 94,
+	RTM_SETSTATS = 95,
+	RTM_NEWCACHEREPORT = 96,
+	RTM_NEWCHAIN = 100,
+	RTM_DELCHAIN = 101,
+	RTM_GETCHAIN = 102,
+	RTM_NEWNEXTHOP = 104,
+	RTM_DELNEXTHOP = 105,
+	RTM_GETNEXTHOP = 106,
+	RTM_NEWLINKPROP = 108,
+	RTM_DELLINKPROP = 109,
+	RTM_GETLINKPROP = 110,
+	RTM_NEWVLAN = 112,
+	RTM_DELVLAN = 113,
+	RTM_GETVLAN = 114,
+	RTM_NEWNEXTHOPBUCKET = 116,
+	RTM_DELNEXTHOPBUCKET = 117,
+	RTM_GETNEXTHOPBUCKET = 118,
+	RTM_NEWTUNNEL = 120,
+	RTM_DELTUNNEL = 121,
+	RTM_GETTUNNEL = 122,
+	__RTM_MAX = 123,
+};
+
+struct netif_security_struct {
+	struct net *ns;
+	int ifindex;
+	u32 sid;
+};
+
+struct sel_netif {
+	struct list_head list;
+	struct netif_security_struct nsec;
+	struct callback_head callback_head;
+};
+
+struct sel_netnode_bkt {
+	unsigned int size;
+	struct list_head list;
+};
+
+struct netnode_security_struct {
+	union {
+		__be32 ipv4;
+		struct in6_addr ipv6;
+	} addr;
+	u32 sid;
+	u16 family;
+};
+
+struct sel_netnode {
+	struct netnode_security_struct nsec;
+	struct list_head list;
+	struct callback_head rcu;
+};
+
+struct sel_netport_bkt {
+	int size;
+	struct list_head list;
+};
+
+struct netport_security_struct {
+	u32 sid;
+	u16 port;
+	u8 protocol;
+};
+
+struct sel_netport {
+	struct netport_security_struct psec;
+	struct list_head list;
+	struct callback_head rcu;
+};
+
+struct selinux_kernel_status {
+	u32 version;
+	u32 sequence;
+	u32 enforcing;
+	u32 policyload;
+	u32 deny_unknown;
+};
+
+struct ebitmap_node {
+	struct ebitmap_node *next;
+	unsigned long maps[6];
+	u32 startbit;
+};
+
+struct policy_file {
+	char *data;
+	size_t len;
+};
+
+struct hashtab_node {
+	void *key;
+	void *datum;
+	struct hashtab_node *next;
+};
+
+struct hashtab_key_params {
+	u32 (*hash)(const void *);
+	int (*cmp)(const void *, const void *);
+};
+
+struct mls_level {
+	u32 sens;
+	struct ebitmap cat;
+};
+
+struct mls_range {
+	struct mls_level level[2];
+};
+
+struct context {
+	u32 user;
+	u32 role;
+	u32 type;
+	u32 len;
+	struct mls_range range;
+	char *str;
+};
+
+struct sidtab_str_cache;
+
+struct sidtab_entry {
+	u32 sid;
+	u32 hash;
+	struct context context;
+	struct sidtab_str_cache __attribute__((btf_type_tag("rcu"))) *cache;
+	struct hlist_node list;
+};
+
+struct sidtab_str_cache {
+	struct callback_head rcu_member;
+	struct list_head lru_member;
+	struct sidtab_entry *parent;
+	u32 len;
+	char str[0];
+};
+
+struct sidtab_node_inner;
+
+struct sidtab_node_leaf;
+
+union sidtab_entry_inner {
+	struct sidtab_node_inner *ptr_inner;
+	struct sidtab_node_leaf *ptr_leaf;
+};
+
+struct sidtab_isid_entry {
+	int set;
+	struct sidtab_entry entry;
+};
+
+struct sidtab_convert_params;
+
+struct sidtab {
+	union sidtab_entry_inner roots[4];
+	u32 count;
+	struct sidtab_convert_params *convert;
+	bool frozen;
+	spinlock_t lock;
+	u32 cache_free_slots;
+	struct list_head cache_lru_list;
+	spinlock_t cache_lock;
+	struct sidtab_isid_entry isids[27];
+	struct hlist_head context_to_sid[512];
+};
+
+struct sidtab_node_inner {
+	union sidtab_entry_inner entries[512];
+};
+
+struct sidtab_node_leaf {
+	struct sidtab_entry entries[39];
+};
+
+struct convert_context_args;
+
+struct sidtab_convert_params {
+	struct convert_context_args *args;
+	struct sidtab *target;
+};
+
+struct convert_context_args {
+	struct policydb *oldp;
+	struct policydb *newp;
+};
+
+struct common_datum;
+
+struct constraint_node;
+
+struct class_datum {
+	u32 value;
+	char *comkey;
+	struct common_datum *comdatum;
+	struct symtab permissions;
+	struct constraint_node *constraints;
+	struct constraint_node *validatetrans;
+	char default_user;
+	char default_role;
+	char default_type;
+	char default_range;
+};
+
+struct common_datum {
+	u32 value;
+	struct symtab permissions;
+};
+
+struct constraint_expr;
+
+struct constraint_node {
+	u32 permissions;
+	struct constraint_expr *expr;
+	struct constraint_node *next;
+};
+
+struct type_set;
+
+struct constraint_expr {
+	u32 expr_type;
+	u32 attr;
+	u32 op;
+	struct ebitmap names;
+	struct type_set *type_names;
+	struct constraint_expr *next;
+};
+
+struct type_set {
+	struct ebitmap types;
+	struct ebitmap negset;
+	u32 flags;
+};
+
+struct role_datum {
+	u32 value;
+	u32 bounds;
+	struct ebitmap dominates;
+	struct ebitmap types;
+};
+
+struct user_datum {
+	u32 value;
+	u32 bounds;
+	struct ebitmap roles;
+	struct mls_range range;
+	struct mls_level dfltlevel;
+};
+
+struct type_datum {
+	u32 value;
+	u32 bounds;
+	unsigned char primary;
+	unsigned char attribute;
+};
+
+struct avtab_key {
+	u16 source_type;
+	u16 target_type;
+	u16 target_class;
+	u16 specified;
+};
+
+struct avtab_extended_perms;
+
+struct avtab_datum {
+	union {
+		u32 data;
+		struct avtab_extended_perms *xperms;
+	} u;
+};
+
+struct avtab_node {
+	struct avtab_key key;
+	struct avtab_datum datum;
+	struct avtab_node *next;
+};
+
+struct avtab_extended_perms {
+	u8 specified;
+	u8 driver;
+	struct extended_perms_data perms;
+};
+
+struct cond_bool_datum {
+	__u32 value;
+	int state;
+};
+
+struct role_allow {
+	u32 role;
+	u32 new_role;
+	struct role_allow *next;
+};
+
+struct ocontext {
+	union {
+		char *name;
+		struct {
+			u8 protocol;
+			u16 low_port;
+			u16 high_port;
+		} port;
+		struct {
+			u32 addr;
+			u32 mask;
+		} node;
+		struct {
+			u32 addr[4];
+			u32 mask[4];
+		} node6;
+		struct {
+			u64 subnet_prefix;
+			u16 low_pkey;
+			u16 high_pkey;
+		} ibpkey;
+		struct {
+			char *dev_name;
+			u8 port;
+		} ibendport;
+	} u;
+	union {
+		u32 sclass;
+		u32 behavior;
+	} v;
+	struct context context[2];
+	u32 sid[2];
+	struct ocontext *next;
+};
+
+struct genfs {
+	char *fstype;
+	struct ocontext *head;
+	struct genfs *next;
+};
+
+struct policydb_compat_info {
+	unsigned int version;
+	unsigned int sym_num;
+	unsigned int ocon_num;
+};
+
+struct cond_expr_node;
+
+struct cond_expr {
+	struct cond_expr_node *nodes;
+	u32 len;
+};
+
+struct cond_av_list {
+	struct avtab_node **nodes;
+	u32 len;
+};
+
+struct cond_node {
+	int cur_state;
+	struct cond_expr expr;
+	struct cond_av_list true_list;
+	struct cond_av_list false_list;
+};
+
+struct cond_expr_node {
+	u32 expr_type;
+	u32 boolean;
+};
+
+struct filename_trans_key {
+	u32 ttype;
+	u16 tclass;
+	const char *name;
+};
+
+struct range_trans {
+	u32 source_type;
+	u32 target_type;
+	u32 target_class;
+};
+
+struct role_trans_key {
+	u32 role;
+	u32 type;
+	u32 tclass;
+};
+
+struct filename_trans_datum {
+	struct ebitmap stypes;
+	u32 otype;
+	struct filename_trans_datum *next;
+};
+
+struct level_datum {
+	struct mls_level *level;
+	unsigned char isalias;
+};
+
+struct role_trans_datum {
+	u32 new_role;
+};
+
+struct perm_datum {
+	u32 value;
+};
+
+struct policy_data {
+	struct policydb *p;
+	void *fp;
+};
+
+struct cat_datum {
+	u32 value;
+	unsigned char isalias;
+};
+
+struct selinux_mapping {
+	u16 value;
+	u16 num_perms;
+	u32 perms[32];
+};
+
+struct selinux_audit_rule {
+	u32 au_seqno;
+	struct context au_ctxt;
+};
+
+struct selinux_policy_convert_data {
+	struct convert_context_args args;
+	struct sidtab_convert_params sidtab_params;
+};
+
+struct cond_insertf_data {
+	struct policydb *p;
+	struct avtab_node **dst;
+	struct cond_av_list *other;
+};
+
+struct scm_stat {
+	atomic_t nr_fds;
+};
+
+struct unix_address;
+
+struct unix_sock {
+	struct sock sk;
+	struct unix_address *addr;
+	struct path path;
+	struct mutex iolock;
+	struct mutex bindlock;
+	struct sock *peer;
+	struct list_head link;
+	unsigned long inflight;
+	spinlock_t lock;
+	unsigned long gc_flags;
+	struct socket_wq peer_wq;
+	wait_queue_entry_t peer_wake;
+	struct scm_stat scm_stat;
+	struct sk_buff *oob_skb;
+	long: 64;
+};
+
+struct sockaddr_un {
+	__kernel_sa_family_t sun_family;
+	char sun_path[108];
+};
+
+struct unix_address {
+	refcount_t refcnt;
+	int len;
+	struct sockaddr_un name[0];
+};
+
+enum integrity_status {
+	INTEGRITY_PASS = 0,
+	INTEGRITY_PASS_IMMUTABLE = 1,
+	INTEGRITY_FAIL = 2,
+	INTEGRITY_FAIL_IMMUTABLE = 3,
+	INTEGRITY_NOLABEL = 4,
+	INTEGRITY_NOXATTRS = 5,
+	INTEGRITY_UNKNOWN = 6,
+};
+
+struct ima_digest_data;
+
+struct integrity_iint_cache {
+	struct rb_node rb_node;
+	struct mutex mutex;
+	struct inode *inode;
+	u64 version;
+	unsigned long flags;
+	unsigned long measured_pcrs;
+	unsigned long atomic_flags;
+	unsigned long real_ino;
+	dev_t real_dev;
+	enum integrity_status ima_file_status: 4;
+	enum integrity_status ima_mmap_status: 4;
+	enum integrity_status ima_bprm_status: 4;
+	enum integrity_status ima_read_status: 4;
+	enum integrity_status ima_creds_status: 4;
+	enum integrity_status evm_status: 4;
+	struct ima_digest_data *ima_hash;
+};
+
+struct ima_digest_data {
+	u8 algo;
+	u8 length;
+	union {
+		struct {
+			u8 unused;
+			u8 type;
+		} sha1;
+		struct {
+			u8 type;
+			u8 algo;
+		} ng;
+		u8 data[2];
+	} xattr;
+	u8 digest[0];
+};
+
+enum {
+	CRYPTO_MSG_ALG_REQUEST = 0,
+	CRYPTO_MSG_ALG_REGISTER = 1,
+	CRYPTO_MSG_ALG_LOADED = 2,
+};
+
+struct crypto_larval {
+	struct crypto_alg alg;
+	struct crypto_alg *adult;
+	struct completion completion;
+	u32 mask;
+	bool test_started;
+};
+
+struct crypto_cipher {
+	struct crypto_tfm base;
+};
+
+struct crypto_comp {
+	struct crypto_tfm base;
+};
+
+struct crypto_queue {
+	struct list_head list;
+	struct list_head *backlog;
+	unsigned int qlen;
+	unsigned int max_qlen;
+};
+
+struct crypto_engine {
+	char name[30];
+	bool idling;
+	bool busy;
+	bool running;
+	bool retry_support;
+	struct list_head list;
+	spinlock_t queue_lock;
+	struct crypto_queue queue;
+	struct device *dev;
+	bool rt;
+	int (*prepare_crypt_hardware)(struct crypto_engine *);
+	int (*unprepare_crypt_hardware)(struct crypto_engine *);
+	int (*do_batch_requests)(struct crypto_engine *);
+	struct kthread_worker *kworker;
+	struct kthread_work pump_requests;
+	void *priv_data;
+	struct crypto_async_request *cur_req;
+};
+
+struct crypto_engine_op {
+	int (*do_one_request)(struct crypto_engine *, void *);
+};
+
+struct crypto_engine_alg {
+	struct crypto_alg base;
+	struct crypto_engine_op op;
+};
+
+struct aead_engine_alg {
+	struct aead_alg base;
+	struct crypto_engine_op op;
+};
+
+struct ahash_request;
+
+struct crypto_ahash;
+
+struct ahash_alg {
+	int (*init)(struct ahash_request *);
+	int (*update)(struct ahash_request *);
+	int (*final)(struct ahash_request *);
+	int (*finup)(struct ahash_request *);
+	int (*digest)(struct ahash_request *);
+	int (*export)(struct ahash_request *, void *);
+	int (*import)(struct ahash_request *, const void *);
+	int (*setkey)(struct crypto_ahash *, const u8 *, unsigned int);
+	int (*init_tfm)(struct crypto_ahash *);
+	void (*exit_tfm)(struct crypto_ahash *);
+	int (*clone_tfm)(struct crypto_ahash *, struct crypto_ahash *);
+	struct hash_alg_common halg;
+};
+
+struct ahash_request {
+	struct crypto_async_request base;
+	unsigned int nbytes;
+	struct scatterlist *src;
+	u8 *result;
+	void *priv;
+	void *__ctx[0];
+};
+
+struct crypto_ahash {
+	int (*init)(struct ahash_request *);
+	int (*update)(struct ahash_request *);
+	int (*final)(struct ahash_request *);
+	int (*finup)(struct ahash_request *);
+	int (*digest)(struct ahash_request *);
+	int (*export)(struct ahash_request *, void *);
+	int (*import)(struct ahash_request *, const void *);
+	int (*setkey)(struct crypto_ahash *, const u8 *, unsigned int);
+	unsigned int statesize;
+	unsigned int reqsize;
+	struct crypto_tfm base;
+};
+
+struct ahash_engine_alg {
+	struct ahash_alg base;
+	struct crypto_engine_op op;
+};
+
+struct akcipher_request;
+
+struct crypto_akcipher;
+
+struct akcipher_alg {
+	int (*sign)(struct akcipher_request *);
+	int (*verify)(struct akcipher_request *);
+	int (*encrypt)(struct akcipher_request *);
+	int (*decrypt)(struct akcipher_request *);
+	int (*set_pub_key)(struct crypto_akcipher *, const void *, unsigned int);
+	int (*set_priv_key)(struct crypto_akcipher *, const void *, unsigned int);
+	unsigned int (*max_size)(struct crypto_akcipher *);
+	int (*init)(struct crypto_akcipher *);
+	void (*exit)(struct crypto_akcipher *);
+	struct crypto_alg base;
+};
+
+struct akcipher_request {
+	struct crypto_async_request base;
+	struct scatterlist *src;
+	struct scatterlist *dst;
+	unsigned int src_len;
+	unsigned int dst_len;
+	void *__ctx[0];
+};
+
+struct crypto_akcipher {
+	unsigned int reqsize;
+	struct crypto_tfm base;
+};
+
+struct skcipher_engine_alg {
+	struct skcipher_alg base;
+	struct crypto_engine_op op;
+};
+
+struct akcipher_engine_alg {
+	struct akcipher_alg base;
+	struct crypto_engine_op op;
+};
+
+struct kpp_engine_alg {
+	struct kpp_alg base;
+	struct crypto_engine_op op;
+};
+
+enum {
+	CRYPTOA_UNSPEC = 0,
+	CRYPTOA_ALG = 1,
+	CRYPTOA_TYPE = 2,
+	__CRYPTOA_MAX = 3,
+};
+
+struct rtattr {
+	unsigned short rta_len;
+	unsigned short rta_type;
+};
+
+struct crypto_attr_type {
+	u32 type;
+	u32 mask;
+};
+
+struct crypto_attr_alg {
+	char name[128];
+};
+
+struct aead_instance {
+	void (*free)(struct aead_instance *);
+	union {
+		struct {
+			char head[64];
+			struct crypto_instance base;
+		} s;
+		struct aead_alg alg;
+	};
+};
+
+struct crypto_istat_aead {
+	atomic64_t encrypt_cnt;
+	atomic64_t encrypt_tlen;
+	atomic64_t decrypt_cnt;
+	atomic64_t decrypt_tlen;
+	atomic64_t err_cnt;
+};
+
+struct crypto_aead_spawn {
+	struct crypto_spawn base;
+};
+
+struct crypto_rng;
+
+struct rng_alg {
+	int (*generate)(struct crypto_rng *, const u8 *, unsigned int, u8 *, unsigned int);
+	int (*seed)(struct crypto_rng *, const u8 *, unsigned int);
+	void (*set_ent)(struct crypto_rng *, const u8 *, unsigned int);
+	unsigned int seedsize;
+	struct crypto_alg base;
+};
+
+struct crypto_rng {
+	struct crypto_tfm base;
+};
+
+struct crypto_sync_skcipher;
+
+struct aead_geniv_ctx {
+	spinlock_t lock;
+	struct crypto_aead *child;
+	struct crypto_sync_skcipher *sknull;
+	u8 salt[0];
+};
+
+enum {
+	SKCIPHER_WALK_PHYS = 1,
+	SKCIPHER_WALK_SLOW = 2,
+	SKCIPHER_WALK_COPY = 4,
+	SKCIPHER_WALK_DIFF = 8,
+	SKCIPHER_WALK_SLEEP = 16,
+};
+
+struct skcipher_walk_buffer {
+	struct list_head entry;
+	struct scatter_walk dst;
+	unsigned int len;
+	u8 *data;
+	u8 buffer[0];
+};
+
+struct crypto_sync_skcipher {
+	struct crypto_skcipher base;
+};
+
+struct skcipher_instance {
+	void (*free)(struct skcipher_instance *);
+	union {
+		struct {
+			char head[64];
+			struct crypto_instance base;
+		} s;
+		struct skcipher_alg alg;
+	};
+};
+
+struct crypto_istat_cipher {
+	atomic64_t encrypt_cnt;
+	atomic64_t encrypt_tlen;
+	atomic64_t decrypt_cnt;
+	atomic64_t decrypt_tlen;
+	atomic64_t err_cnt;
+};
+
+struct crypto_cipher_spawn {
+	struct crypto_spawn base;
+};
+
+struct skcipher_ctx_simple {
+	struct crypto_cipher *cipher;
+};
+
+struct crypto_skcipher_spawn {
+	struct crypto_spawn base;
+};
+
+struct ahash_instance {
+	void (*free)(struct ahash_instance *);
+	union {
+		struct {
+			char head[96];
+			struct crypto_instance base;
+		} s;
+		struct ahash_alg alg;
+	};
+};
+
+struct crypto_hash_walk {
+	char *data;
+	unsigned int offset;
+	unsigned int alignmask;
+	struct page *pg;
+	unsigned int entrylen;
+	unsigned int total;
+	struct scatterlist *sg;
+	unsigned int flags;
+};
+
+struct crypto_ahash_spawn {
+	struct crypto_spawn base;
+};
+
+struct shash_instance {
+	void (*free)(struct shash_instance *);
+	union {
+		struct {
+			char head[120];
+			struct crypto_instance base;
+		} s;
+		struct shash_alg alg;
+	};
+};
+
+struct crypto_istat_hash {
+	atomic64_t hash_cnt;
+	atomic64_t hash_tlen;
+	atomic64_t err_cnt;
+};
+
+struct crypto_shash_spawn {
+	struct crypto_spawn base;
+};
+
+struct akcipher_instance {
+	void (*free)(struct akcipher_instance *);
+	union {
+		struct {
+			char head[72];
+			struct crypto_instance base;
+		} s;
+		struct akcipher_alg alg;
+	};
+};
+
+struct crypto_istat_akcipher {
+	atomic64_t encrypt_cnt;
+	atomic64_t encrypt_tlen;
+	atomic64_t decrypt_cnt;
+	atomic64_t decrypt_tlen;
+	atomic64_t verify_cnt;
+	atomic64_t sign_cnt;
+	atomic64_t err_cnt;
+};
+
+struct crypto_akcipher_sync_data {
+	struct crypto_akcipher *tfm;
+	const void *src;
+	void *dst;
+	unsigned int slen;
+	unsigned int dlen;
+	struct akcipher_request *req;
+	struct crypto_wait cwait;
+	struct scatterlist sg;
+	u8 *buf;
+};
+
+struct crypto_akcipher_spawn {
+	struct crypto_spawn base;
+};
+
+struct crypto_sig {
+	struct crypto_tfm base;
+};
+
+struct kpp_instance {
+	void (*free)(struct kpp_instance *);
+	union {
+		struct {
+			char head[48];
+			struct crypto_instance base;
+		} s;
+		struct kpp_alg alg;
+	};
+};
+
+struct crypto_istat_kpp {
+	atomic64_t setsecret_cnt;
+	atomic64_t generate_public_key_cnt;
+	atomic64_t compute_shared_secret_cnt;
+	atomic64_t err_cnt;
+};
+
+struct crypto_kpp_spawn {
+	struct crypto_spawn base;
+};
+
+typedef int (*asn1_action_t)(void *, size_t, unsigned char, const void *, size_t);
+
+struct asn1_decoder {
+	const unsigned char *machine;
+	size_t machlen;
+	const asn1_action_t *actions;
+};
+
+struct gcry_mpi;
+
+typedef struct gcry_mpi *MPI;
+
+struct rsa_mpi_key {
+	MPI n;
+	MPI e;
+	MPI d;
+	MPI p;
+	MPI q;
+	MPI dp;
+	MPI dq;
+	MPI qinv;
+};
+
+typedef unsigned long mpi_limb_t;
+
+struct gcry_mpi {
+	int alloced;
+	int nlimbs;
+	int nbits;
+	int sign;
+	unsigned int flags;
+	mpi_limb_t *d;
+};
+
+struct rsa_key {
+	const u8 *n;
+	const u8 *e;
+	const u8 *d;
+	const u8 *p;
+	const u8 *q;
+	const u8 *dp;
+	const u8 *dq;
+	const u8 *qinv;
+	size_t n_sz;
+	size_t e_sz;
+	size_t d_sz;
+	size_t p_sz;
+	size_t q_sz;
+	size_t dp_sz;
+	size_t dq_sz;
+	size_t qinv_sz;
+};
+
+struct rsa_asn1_template {
+	const char *name;
+	const u8 *data;
+	size_t size;
+};
+
+struct pkcs1pad_inst_ctx {
+	struct crypto_akcipher_spawn spawn;
+	const struct rsa_asn1_template *digest_info;
+};
+
+struct pkcs1pad_ctx {
+	struct crypto_akcipher *child;
+	unsigned int key_size;
+};
+
+struct pkcs1pad_request {
+	struct scatterlist in_sg[2];
+	struct scatterlist out_sg[1];
+	uint8_t *in_buf;
+	uint8_t *out_buf;
+	struct akcipher_request child_req;
+};
+
+struct acomp_req;
+
+struct crypto_acomp {
+	int (*compress)(struct acomp_req *);
+	int (*decompress)(struct acomp_req *);
+	void (*dst_free)(struct scatterlist *);
+	unsigned int reqsize;
+	struct crypto_tfm base;
+};
+
+struct acomp_req {
+	struct crypto_async_request base;
+	struct scatterlist *src;
+	struct scatterlist *dst;
+	unsigned int slen;
+	unsigned int dlen;
+	u32 flags;
+	void *__ctx[0];
+};
+
+struct comp_alg_common {
+	struct crypto_alg base;
+};
+
+struct acomp_alg {
+	int (*compress)(struct acomp_req *);
+	int (*decompress)(struct acomp_req *);
+	void (*dst_free)(struct scatterlist *);
+	int (*init)(struct crypto_acomp *);
+	void (*exit)(struct crypto_acomp *);
+	unsigned int reqsize;
+	union {
+		struct {
+			struct crypto_alg base;
+		};
+		struct comp_alg_common calg;
+	};
+};
+
+struct crypto_istat_compress {
+	atomic64_t compress_cnt;
+	atomic64_t compress_tlen;
+	atomic64_t decompress_cnt;
+	atomic64_t decompress_tlen;
+	atomic64_t err_cnt;
+};
+
+struct scomp_scratch {
+	spinlock_t lock;
+	void *src;
+	void *dst;
+};
+
+struct crypto_scomp;
+
+struct scomp_alg {
+	void * (*alloc_ctx)(struct crypto_scomp *);
+	void (*free_ctx)(struct crypto_scomp *, void *);
+	int (*compress)(struct crypto_scomp *, const u8 *, unsigned int, u8 *, unsigned int *, void *);
+	int (*decompress)(struct crypto_scomp *, const u8 *, unsigned int, u8 *, unsigned int *, void *);
+	union {
+		struct {
+			struct crypto_alg base;
+		};
+		struct comp_alg_common calg;
+	};
+};
+
+struct crypto_scomp {
+	struct crypto_tfm base;
+};
+
+struct cryptomgr_param {
+	struct rtattr *tb[34];
+	struct {
+		struct rtattr attr;
+		struct crypto_attr_type data;
+	} type;
+	struct {
+		struct rtattr attr;
+		struct crypto_attr_alg data;
+	} attrs[32];
+	char template[128];
+	struct crypto_larval *larval;
+	u32 otype;
+	u32 omask;
+};
+
+struct cmac_desc_ctx {
+	unsigned int len;
+	u8 ctx[0];
+};
+
+struct cmac_tfm_ctx {
+	struct crypto_cipher *child;
+	u8 ctx[0];
+};
+
+struct hmac_ctx {
+	struct crypto_shash *hash;
+};
+
+typedef u32 u_int32_t;
+
+struct xcbc_tfm_ctx {
+	struct crypto_cipher *child;
+	u8 ctx[0];
+};
+
+struct xcbc_desc_ctx {
+	unsigned int len;
+	u8 ctx[0];
+};
+
+struct md5_state {
+	u32 hash[4];
+	u32 block[16];
+	u64 byte_count;
+};
+
+struct sha1_state;
+
+typedef void sha1_block_fn(struct sha1_state *, const u8 *, int);
+
+struct sha1_state {
+	u32 state[5];
+	u64 count;
+	u8 buffer[64];
+};
+
+struct sha3_state {
+	u64 st[25];
+	unsigned int rsiz;
+	unsigned int rsizw;
+	unsigned int partial;
+	u8 buf[144];
+};
+
+enum blake2b_lengths {
+	BLAKE2B_BLOCK_SIZE = 128,
+	BLAKE2B_HASH_SIZE = 64,
+	BLAKE2B_KEY_SIZE = 64,
+	BLAKE2B_160_HASH_SIZE = 20,
+	BLAKE2B_256_HASH_SIZE = 32,
+	BLAKE2B_384_HASH_SIZE = 48,
+	BLAKE2B_512_HASH_SIZE = 64,
+};
+
+enum blake2b_iv {
+	BLAKE2B_IV0 = 7640891576956012808ULL,
+	BLAKE2B_IV1 = 13503953896175478587ULL,
+	BLAKE2B_IV2 = 4354685564936845355ULL,
+	BLAKE2B_IV3 = 11912009170470909681ULL,
+	BLAKE2B_IV4 = 5840696475078001361ULL,
+	BLAKE2B_IV5 = 11170449401992604703ULL,
+	BLAKE2B_IV6 = 2270897969802886507ULL,
+	BLAKE2B_IV7 = 6620516959819538809ULL,
+};
+
+struct blake2b_state {
+	u64 h[8];
+	u64 t[2];
+	u64 f[2];
+	u8 buf[128];
+	unsigned int buflen;
+	unsigned int outlen;
+};
+
+typedef void (*blake2b_compress_t)(struct blake2b_state *, const u8 *, size_t, u32);
+
+struct blake2b_tfm_ctx {
+	u8 key[64];
+	unsigned int keylen;
+};
+
+struct crypto_cts_reqctx {
+	struct scatterlist sg[2];
+	unsigned int offset;
+	struct skcipher_request subreq;
+};
+
+struct crypto_cts_ctx {
+	struct crypto_skcipher *child;
+};
+
+struct xts_instance_ctx {
+	struct crypto_skcipher_spawn spawn;
+	struct crypto_cipher_spawn tweak_spawn;
+};
+
+typedef struct {
+	__le64 b;
+	__le64 a;
+} le128;
+
+struct xts_request_ctx {
+	le128 t;
+	struct scatterlist *tail;
+	struct scatterlist sg[2];
+	struct skcipher_request subreq;
+};
+
+struct xts_tfm_ctx {
+	struct crypto_skcipher *child;
+	struct crypto_cipher *tweak;
+};
+
+struct crypto_rfc3686_ctx {
+	struct crypto_skcipher *child;
+	u8 nonce[4];
+};
+
+struct crypto_rfc3686_req_ctx {
+	u8 iv[16];
+	struct skcipher_request subreq;
+};
+
+struct hctr2_instance_ctx {
+	struct crypto_cipher_spawn blockcipher_spawn;
+	struct crypto_skcipher_spawn xctr_spawn;
+	struct crypto_shash_spawn polyval_spawn;
+};
+
+struct hctr2_tfm_ctx {
+	struct crypto_cipher *blockcipher;
+	struct crypto_skcipher *xctr;
+	struct crypto_shash *polyval;
+	u8 L[16];
+	int hashed_tweak_offset;
+};
+
+struct hctr2_request_ctx {
+	u8 first_block[16];
+	u8 xctr_iv[16];
+	struct scatterlist *bulk_part_dst;
+	struct scatterlist *bulk_part_src;
+	struct scatterlist sg_src[2];
+	struct scatterlist sg_dst[2];
+	union {
+		struct shash_desc hash_desc;
+		struct skcipher_request xctr_req;
+	} u;
+};
+
+struct sg_page_iter {
+	struct scatterlist *sg;
+	unsigned int sg_pgoffset;
+	unsigned int __nents;
+	int __pg_advance;
+};
+
+struct sg_mapping_iter {
+	struct page *page;
+	void *addr;
+	size_t length;
+	size_t consumed;
+	struct sg_page_iter piter;
+	unsigned int __offset;
+	unsigned int __remaining;
+	unsigned int __flags;
+};
+
+struct adiantum_instance_ctx {
+	struct crypto_skcipher_spawn streamcipher_spawn;
+	struct crypto_cipher_spawn blockcipher_spawn;
+	struct crypto_shash_spawn hash_spawn;
+};
+
+struct adiantum_tfm_ctx {
+	struct crypto_skcipher *streamcipher;
+	struct crypto_cipher *blockcipher;
+	struct crypto_shash *hash;
+	struct poly1305_core_key header_hash_key;
+};
+
+struct adiantum_request_ctx {
+	union {
+		u8 bytes[32];
+		__le32 words[8];
+		le128 bignum;
+	} rbuf;
+	bool enc;
+	le128 header_hash;
+	union {
+		struct shash_desc hash_desc;
+		struct skcipher_request streamcipher_req;
+	} u;
+};
+
+struct nhpoly1305_state {
+	struct poly1305_state poly_state;
+	u8 buffer[16];
+	unsigned int buflen;
+	unsigned int nh_remaining;
+	__le64 nh_hash[4];
+};
+
+struct nhpoly1305_key {
+	struct poly1305_core_key poly_key;
+	u32 nh_key[268];
+};
+
+typedef void (*nh_t)(const u32 *, const u8 *, size_t, __le64 *);
+
+struct crypto_rfc4543_instance_ctx {
+	struct crypto_aead_spawn aead;
+};
+
+struct gcm_instance_ctx {
+	struct crypto_skcipher_spawn ctr;
+	struct crypto_ahash_spawn ghash;
+};
+
+typedef struct {
+	__be64 a;
+	__be64 b;
+} be128;
+
+struct crypto_gcm_ghash_ctx {
+	unsigned int cryptlen;
+	struct scatterlist *src;
+	int (*complete)(struct aead_request *, u32);
+};
+
+struct crypto_gcm_req_priv_ctx {
+	u8 iv[16];
+	u8 auth_tag[16];
+	u8 iauth_tag[16];
+	struct scatterlist src[3];
+	struct scatterlist dst[3];
+	struct scatterlist sg;
+	struct crypto_gcm_ghash_ctx ghash_ctx;
+	union {
+		struct ahash_request ahreq;
+		struct skcipher_request skreq;
+	} u;
+};
+
+struct crypto_gcm_ctx {
+	struct crypto_skcipher *ctr;
+	struct crypto_ahash *ghash;
+};
+
+struct crypto_rfc4543_ctx {
+	struct crypto_aead *child;
+	struct crypto_sync_skcipher *null;
+	u8 nonce[4];
+};
+
+struct crypto_rfc4106_ctx {
+	struct crypto_aead *child;
+	u8 nonce[4];
+};
+
+struct crypto_rfc4106_req_ctx {
+	struct scatterlist src[3];
+	struct scatterlist dst[3];
+	struct aead_request subreq;
+};
+
+struct crypto_rfc4543_req_ctx {
+	struct aead_request subreq;
+};
+
+struct ccm_instance_ctx {
+	struct crypto_skcipher_spawn ctr;
+	struct crypto_ahash_spawn mac;
+};
+
+struct crypto_ccm_req_priv_ctx {
+	u8 odata[16];
+	u8 idata[16];
+	u8 auth_tag[16];
+	u32 flags;
+	struct scatterlist src[3];
+	struct scatterlist dst[3];
+	union {
+		struct ahash_request ahreq;
+		struct skcipher_request skreq;
+	};
+};
+
+struct cbcmac_tfm_ctx {
+	struct crypto_cipher *child;
+};
+
+struct cbcmac_desc_ctx {
+	unsigned int len;
+};
+
+struct crypto_ccm_ctx {
+	struct crypto_ahash *mac;
+	struct crypto_skcipher *ctr;
+};
+
+struct crypto_rfc4309_ctx {
+	struct crypto_aead *child;
+	u8 nonce[3];
+};
+
+struct crypto_rfc4309_req_ctx {
+	struct scatterlist src[3];
+	struct scatterlist dst[3];
+	struct aead_request subreq;
+};
+
+struct chachapoly_instance_ctx {
+	struct crypto_skcipher_spawn chacha;
+	struct crypto_ahash_spawn poly;
+	unsigned int saltlen;
+};
+
+struct chachapoly_ctx {
+	struct crypto_skcipher *chacha;
+	struct crypto_ahash *poly;
+	unsigned int saltlen;
+	u8 salt[0];
+};
+
+struct poly_req {
+	u8 pad[16];
+	struct {
+		__le64 assoclen;
+		__le64 cryptlen;
+	} tail;
+	struct scatterlist src[1];
+	struct ahash_request req;
+};
+
+struct chacha_req {
+	u8 iv[16];
+	struct scatterlist src[1];
+	struct skcipher_request req;
+};
+
+struct chachapoly_req_ctx {
+	struct scatterlist src[2];
+	struct scatterlist dst[2];
+	u8 key[32];
+	u8 tag[16];
+	unsigned int cryptlen;
+	unsigned int assoclen;
+	u32 flags;
+	union {
+		struct poly_req poly;
+		struct chacha_req chacha;
+	} u;
+};
+
+struct cryptd_cpu_queue;
+
+struct cryptd_queue {
+	struct cryptd_cpu_queue __attribute__((btf_type_tag("percpu"))) *cpu_queue;
+};
+
+struct cryptd_cpu_queue {
+	struct crypto_queue queue;
+	struct work_struct work;
+};
+
+struct cryptd_skcipher {
+	struct crypto_skcipher base;
+};
+
+struct cryptd_ahash {
+	struct crypto_ahash base;
+};
+
+struct cryptd_aead {
+	struct crypto_aead base;
+};
+
+struct skcipherd_instance_ctx {
+	struct crypto_skcipher_spawn spawn;
+	struct cryptd_queue *queue;
+};
+
+struct aead_instance_ctx {
+	struct crypto_aead_spawn aead_spawn;
+	struct cryptd_queue *queue;
+};
+
+struct hashd_instance_ctx {
+	struct crypto_shash_spawn spawn;
+	struct cryptd_queue *queue;
+};
+
+struct cryptd_skcipher_request_ctx {
+	struct skcipher_request req;
+};
+
+struct cryptd_instance_ctx {
+	struct crypto_spawn spawn;
+	struct cryptd_queue *queue;
+};
+
+struct cryptd_skcipher_ctx {
+	refcount_t refcnt;
+	struct crypto_skcipher *child;
+};
+
+struct cryptd_hash_request_ctx {
+	crypto_completion_t complete;
+	void *data;
+	struct shash_desc desc;
+};
+
+struct cryptd_hash_ctx {
+	refcount_t refcnt;
+	struct crypto_shash *child;
+};
+
+struct cryptd_aead_request_ctx {
+	struct aead_request req;
+};
+
+struct cryptd_aead_ctx {
+	refcount_t refcnt;
+	struct crypto_aead *child;
+};
+
+struct des_ctx {
+	u32 expkey[32];
+};
+
+struct des3_ede_ctx {
+	u32 expkey[96];
+};
+
+struct deflate_ctx {
+	struct z_stream_s comp_stream;
+	struct z_stream_s decomp_stream;
+};
+
+struct chksum_ctx {
+	u32 key;
+};
+
+struct chksum_desc_ctx {
+	u32 crc;
+};
+
+enum {
+	CRYPTO_AUTHENC_KEYA_UNSPEC = 0,
+	CRYPTO_AUTHENC_KEYA_PARAM = 1,
+};
+
+struct authenc_instance_ctx {
+	struct crypto_ahash_spawn auth;
+	struct crypto_skcipher_spawn enc;
+	unsigned int reqoff;
+};
+
+struct crypto_authenc_keys {
+	const u8 *authkey;
+	const u8 *enckey;
+	unsigned int authkeylen;
+	unsigned int enckeylen;
+};
+
+struct crypto_authenc_key_param {
+	__be32 enckeylen;
+};
+
+struct crypto_authenc_ctx {
+	struct crypto_ahash *auth;
+	struct crypto_skcipher *enc;
+	struct crypto_sync_skcipher *null;
+};
+
+struct authenc_request_ctx {
+	struct scatterlist src[2];
+	struct scatterlist dst[2];
+	char tail[0];
+};
+
+struct authenc_esn_instance_ctx {
+	struct crypto_ahash_spawn auth;
+	struct crypto_skcipher_spawn enc;
+};
+
+struct crypto_authenc_esn_ctx {
+	unsigned int reqoff;
+	struct crypto_ahash *auth;
+	struct crypto_skcipher *enc;
+	struct crypto_sync_skcipher *null;
+};
+
+struct authenc_esn_request_ctx {
+	struct scatterlist src[2];
+	struct scatterlist dst[2];
+	char tail[0];
+};
+
+struct lzo_ctx {
+	void *lzo_comp_mem;
+};
+
+struct lzorle_ctx {
+	void *lzorle_comp_mem;
+};
+
+struct lz4_ctx {
+	void *lz4_comp_mem;
+};
+
+struct crypto_istat_rng {
+	atomic64_t generate_cnt;
+	atomic64_t generate_tlen;
+	atomic64_t seed_cnt;
+	atomic64_t err_cnt;
+};
+
+struct prng_context {
+	spinlock_t prng_lock;
+	unsigned char rand_data[16];
+	unsigned char last_rand_data[16];
+	unsigned char DT[16];
+	unsigned char I[16];
+	unsigned char V[16];
+	u32 rand_data_valid;
+	struct crypto_cipher *tfm;
+	u32 flags;
+};
+
+struct drbg_state;
+
+struct drbg_state_ops {
+	int (*update)(struct drbg_state *, struct list_head *, int);
+	int (*generate)(struct drbg_state *, unsigned char *, unsigned int, struct list_head *);
+	int (*crypto_init)(struct drbg_state *);
+	int (*crypto_fini)(struct drbg_state *);
+};
+
+enum drbg_seed_state {
+	DRBG_SEED_STATE_UNSEEDED = 0,
+	DRBG_SEED_STATE_PARTIAL = 1,
+	DRBG_SEED_STATE_FULL = 2,
+};
+
+struct drbg_string {
+	const unsigned char *buf;
+	size_t len;
+	struct list_head list;
+};
+
+struct drbg_core;
+
+struct drbg_state {
+	struct mutex drbg_mutex;
+	unsigned char *V;
+	unsigned char *Vbuf;
+	unsigned char *C;
+	unsigned char *Cbuf;
+	size_t reseed_ctr;
+	size_t reseed_threshold;
+	unsigned char *scratchpad;
+	unsigned char *scratchpadbuf;
+	void *priv_data;
+	struct crypto_skcipher *ctr_handle;
+	struct skcipher_request *ctr_req;
+	__u8 *outscratchpadbuf;
+	__u8 *outscratchpad;
+	struct crypto_wait ctr_wait;
+	struct scatterlist sg_in;
+	struct scatterlist sg_out;
+	enum drbg_seed_state seeded;
+	unsigned long last_seed_time;
+	bool pr;
+	bool fips_primed;
+	unsigned char *prev;
+	struct crypto_rng *jent;
+	const struct drbg_state_ops *d_ops;
+	const struct drbg_core *core;
+	struct drbg_string test_data;
+};
+
+typedef uint32_t drbg_flag_t;
+
+struct drbg_core {
+	drbg_flag_t flags;
+	__u8 statelen;
+	__u8 blocklen_bytes;
+	char cra_name[128];
+	char backend_cra_name[128];
+};
+
+enum drbg_prefixes {
+	DRBG_PREFIX0 = 0,
+	DRBG_PREFIX1 = 1,
+	DRBG_PREFIX2 = 2,
+	DRBG_PREFIX3 = 3,
+};
+
+struct sdesc {
+	struct shash_desc shash;
+	char ctx[0];
+};
+
+typedef unsigned char u8___2;
+
+struct rand_data {
+	void *hash_state;
+	__u64 prev_time;
+	__u64 last_delta;
+	__s64 last_delta2;
+	unsigned int osr;
+	unsigned char *mem;
+	unsigned int memlocation;
+	unsigned int memblocks;
+	unsigned int memblocksize;
+	unsigned int memaccessloops;
+	unsigned int rct_count;
+	unsigned int apt_observations;
+	unsigned int apt_count;
+	unsigned int apt_base;
+	unsigned int apt_base_set: 1;
+};
+
+struct jitterentropy {
+	spinlock_t jent_lock;
+	struct rand_data *entropy_collector;
+	struct crypto_shash *tfm;
+	struct shash_desc *sdesc;
+};
+
+struct gf128mul_4k {
+	be128 t[256];
+};
+
+struct ghash_ctx {
+	struct gf128mul_4k *gf128;
+};
+
+struct ghash_desc_ctx {
+	u8 buffer[16];
+	u32 bytes;
+};
+
+struct polyval_desc_ctx___2 {
+	union {
+		u8 buffer[16];
+		be128 buffer128;
+	};
+	u32 bytes;
+};
+
+struct polyval_tfm_ctx___2 {
+	struct gf128mul_4k *gf128;
+};
+
+typedef ZSTD_CCtx zstd_cctx;
+
+typedef ZSTD_DCtx zstd_dctx;
+
+struct zstd_ctx {
+	zstd_cctx *cctx;
+	zstd_dctx *dctx;
+	void *cwksp;
+	void *dwksp;
+};
+
+struct ecc_point {
+	u64 *x;
+	u64 *y;
+	u8 ndigits;
+};
+
+struct ecc_curve {
+	char *name;
+	struct ecc_point g;
+	u64 *p;
+	u64 *n;
+	u64 *a;
+	u64 *b;
+};
+
+typedef struct {
+	u64 m_low;
+	u64 m_high;
+} uint128_t;
+
+struct essiv_tfm_ctx {
+	union {
+		struct crypto_skcipher *skcipher;
+		struct crypto_aead *aead;
+	} u;
+	struct crypto_cipher *essiv_cipher;
+	struct crypto_shash *hash;
+	int ivoffset;
+};
+
+struct essiv_instance_ctx {
+	union {
+		struct crypto_skcipher_spawn skcipher_spawn;
+		struct crypto_aead_spawn aead_spawn;
+	} u;
+	char essiv_cipher_name[128];
+	char shash_driver_name[128];
+};
+
+struct essiv_aead_request_ctx {
+	struct scatterlist sg[4];
+	u8 *assoc;
+	struct aead_request aead_req;
+};
+
+struct ecdh {
+	char *key;
+	unsigned short key_size;
+};
+
+struct ecdh_ctx {
+	unsigned int curve_id;
+	unsigned int ndigits;
+	u64 private_key[8];
+};
+
+enum {
+	CRYPTO_KPP_SECRET_TYPE_UNKNOWN = 0,
+	CRYPTO_KPP_SECRET_TYPE_DH = 1,
+	CRYPTO_KPP_SECRET_TYPE_ECDH = 2,
+};
+
+struct kpp_secret {
+	unsigned short type;
+	unsigned short len;
+};
+
+enum asymmetric_payload_bits {
+	asym_crypto = 0,
+	asym_subtype = 1,
+	asym_key_ids = 2,
+	asym_auth = 3,
+};
+
+struct asymmetric_key_parser {
+	struct list_head link;
+	struct module *owner;
+	const char *name;
+	int (*parse)(struct key_preparsed_payload *);
+};
+
+struct asymmetric_key_ids {
+	void *id[3];
+};
+
+struct asymmetric_key_id {
+	unsigned short len;
+	unsigned char data[0];
+};
+
+struct public_key_signature;
+
+struct asymmetric_key_subtype {
+	struct module *owner;
+	const char *name;
+	unsigned short name_len;
+	void (*describe)(const struct key *, struct seq_file *);
+	void (*destroy)(void *, void *);
+	int (*query)(const struct kernel_pkey_params *, struct kernel_pkey_query *);
+	int (*eds_op)(struct kernel_pkey_params *, const void *, void *);
+	int (*verify_signature)(const struct key *, const struct public_key_signature *);
+};
+
+struct public_key_signature {
+	struct asymmetric_key_id *auth_ids[3];
+	u8 *s;
+	u8 *digest;
+	u32 s_size;
+	u32 digest_size;
+	const char *pkey_algo;
+	const char *hash_algo;
+	const char *encoding;
+};
+
+struct public_key {
+	void *key;
+	u32 keylen;
+	enum OID algo;
+	void *params;
+	u32 paramlen;
+	bool key_is_private;
+	const char *id_type;
+	const char *pkey_algo;
+	unsigned long key_eflags;
+};
+
+enum asn1_tag {
+	ASN1_EOC = 0,
+	ASN1_BOOL = 1,
+	ASN1_INT = 2,
+	ASN1_BTS = 3,
+	ASN1_OTS = 4,
+	ASN1_NULL = 5,
+	ASN1_OID = 6,
+	ASN1_ODE = 7,
+	ASN1_EXT = 8,
+	ASN1_REAL = 9,
+	ASN1_ENUM = 10,
+	ASN1_EPDV = 11,
+	ASN1_UTF8STR = 12,
+	ASN1_RELOID = 13,
+	ASN1_SEQ = 16,
+	ASN1_SET = 17,
+	ASN1_NUMSTR = 18,
+	ASN1_PRNSTR = 19,
+	ASN1_TEXSTR = 20,
+	ASN1_VIDSTR = 21,
+	ASN1_IA5STR = 22,
+	ASN1_UNITIM = 23,
+	ASN1_GENTIM = 24,
+	ASN1_GRASTR = 25,
+	ASN1_VISSTR = 26,
+	ASN1_GENSTR = 27,
+	ASN1_UNISTR = 28,
+	ASN1_CHRSTR = 29,
+	ASN1_BMPSTR = 30,
+	ASN1_LONG_TAG = 31,
+};
+
+struct x509_certificate {
+	struct x509_certificate *next;
+	struct x509_certificate *signer;
+	struct public_key *pub;
+	struct public_key_signature *sig;
+	char *issuer;
+	char *subject;
+	struct asymmetric_key_id *id;
+	struct asymmetric_key_id *skid;
+	time64_t valid_from;
+	time64_t valid_to;
+	const void *tbs;
+	unsigned int tbs_size;
+	unsigned int raw_sig_size;
+	const void *raw_sig;
+	const void *raw_serial;
+	unsigned int raw_serial_size;
+	unsigned int raw_issuer_size;
+	const void *raw_issuer;
+	const void *raw_subject;
+	unsigned int raw_subject_size;
+	unsigned int raw_skid_size;
+	const void *raw_skid;
+	unsigned int index;
+	bool seen;
+	bool verified;
+	bool self_signed;
+	bool unsupported_sig;
+	bool blacklisted;
+};
+
+struct x509_parse_context {
+	struct x509_certificate *cert;
+	unsigned long data;
+	const void *key;
+	size_t key_size;
+	const void *params;
+	size_t params_size;
+	enum OID key_algo;
+	enum OID last_oid;
+	enum OID sig_algo;
+	u8 o_size;
+	u8 cn_size;
+	u8 email_size;
+	u16 o_offset;
+	u16 cn_offset;
+	u16 email_offset;
+	unsigned int raw_akid_size;
+	const void *raw_akid;
+	const void *akid_raw_issuer;
+	unsigned int akid_raw_issuer_size;
+};
+
+enum blacklist_hash_type {
+	BLACKLIST_HASH_X509_TBS = 1,
+	BLACKLIST_HASH_BINARY = 2,
+};
+
+enum asn1_class {
+	ASN1_UNIV = 0,
+	ASN1_APPL = 1,
+	ASN1_CONT = 2,
+	ASN1_PRIV = 3,
+};
+
+struct pkcs7_signed_info {
+	struct pkcs7_signed_info *next;
+	struct x509_certificate *signer;
+	unsigned int index;
+	bool unsupported_crypto;
+	bool blacklisted;
+	const void *msgdigest;
+	unsigned int msgdigest_len;
+	unsigned int authattrs_len;
+	const void *authattrs;
+	unsigned long aa_set;
+	time64_t signing_time;
+	struct public_key_signature *sig;
+};
+
+struct pkcs7_parse_context {
+	struct pkcs7_message *msg;
+	struct pkcs7_signed_info *sinfo;
+	struct pkcs7_signed_info **ppsinfo;
+	struct x509_certificate *certs;
+	struct x509_certificate **ppcerts;
+	unsigned long data;
+	enum OID last_oid;
+	unsigned int x509_index;
+	unsigned int sinfo_index;
+	const void *raw_serial;
+	unsigned int raw_serial_size;
+	unsigned int raw_issuer_size;
+	const void *raw_issuer;
+	const void *raw_skid;
+	unsigned int raw_skid_size;
+	bool expect_skid;
+};
+
+struct simd_skcipher_alg {
+	const char *ialg_name;
+	struct skcipher_alg alg;
+};
+
+struct simd_aead_alg {
+	const char *ialg_name;
+	struct aead_alg alg;
+};
+
+struct simd_skcipher_ctx {
+	struct cryptd_skcipher *cryptd_tfm;
+};
+
+struct simd_aead_ctx {
+	struct cryptd_aead *cryptd_tfm;
+};
+
+struct blk_flush_queue {
+	spinlock_t mq_flush_lock;
+	unsigned int flush_pending_idx: 1;
+	unsigned int flush_running_idx: 1;
+	blk_status_t rq_status;
+	unsigned long flush_pending_since;
+	struct list_head flush_queue[2];
+	unsigned long flush_data_in_flight;
+	struct request *flush_rq;
+};
+
+enum {
+	DISK_EVENT_FLAG_POLL = 1,
+	DISK_EVENT_FLAG_UEVENT = 2,
+	DISK_EVENT_FLAG_BLOCK_ON_EXCL_WRITE = 4,
+};
+
+enum {
+	DISK_EVENT_MEDIA_CHANGE = 1,
+	DISK_EVENT_EJECT_REQUEST = 2,
+};
+
+struct bdev_inode {
+	struct block_device bdev;
+	struct inode vfs_inode;
+};
+
+enum {
+	DIO_SHOULD_DIRTY = 1,
+	DIO_IS_SYNC = 2,
+};
+
+struct blkdev_dio {
+	union {
+		struct kiocb *iocb;
+		struct task_struct *waiter;
+	};
+	size_t size;
+	atomic_t ref;
+	unsigned int flags;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct bio bio;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+enum rq_qos_id {
+	RQ_QOS_WBT = 0,
+	RQ_QOS_LATENCY = 1,
+	RQ_QOS_COST = 2,
+};
+
+struct rq_qos_ops;
+
+struct rq_qos {
+	const struct rq_qos_ops *ops;
+	struct gendisk *disk;
+	enum rq_qos_id id;
+	struct rq_qos *next;
+	struct dentry *debugfs_dir;
+};
+
+struct blk_mq_debugfs_attr;
+
+struct rq_qos_ops {
+	void (*throttle)(struct rq_qos *, struct bio *);
+	void (*track)(struct rq_qos *, struct request *, struct bio *);
+	void (*merge)(struct rq_qos *, struct request *, struct bio *);
+	void (*issue)(struct rq_qos *, struct request *);
+	void (*requeue)(struct rq_qos *, struct request *);
+	void (*done)(struct rq_qos *, struct request *);
+	void (*done_bio)(struct rq_qos *, struct bio *);
+	void (*cleanup)(struct rq_qos *, struct bio *);
+	void (*queue_depth_changed)(struct rq_qos *);
+	void (*exit)(struct rq_qos *);
+	const struct blk_mq_debugfs_attr *debugfs_attrs;
+};
+
+struct blk_mq_debugfs_attr {
+	const char *name;
+	umode_t mode;
+	int (*show)(void *, struct seq_file *);
+	ssize_t (*write)(void *, const char __attribute__((btf_type_tag("user"))) *, size_t, loff_t *);
+	const struct seq_operations *seq_ops;
+};
+
+struct blkg_iostat {
+	u64 bytes[3];
+	u64 ios[3];
+};
+
+struct blkg_iostat_set {
+	struct u64_stats_sync sync;
+	struct blkcg_gq *blkg;
+	struct llist_node lnode;
+	int lqueued;
+	struct blkg_iostat cur;
+	struct blkg_iostat last;
+};
+
+struct blkcg;
+
+struct blkg_policy_data;
+
+struct blkcg_gq {
+	struct request_queue *q;
+	struct list_head q_node;
+	struct hlist_node blkcg_node;
+	struct blkcg *blkcg;
+	struct blkcg_gq *parent;
+	struct percpu_ref refcnt;
+	bool online;
+	struct blkg_iostat_set __attribute__((btf_type_tag("percpu"))) *iostat_cpu;
+	struct blkg_iostat_set iostat;
+	struct blkg_policy_data *pd[6];
+	union {
+		struct work_struct async_bio_work;
+		struct work_struct free_work;
+	};
+	atomic_t use_delay;
+	atomic64_t delay_nsec;
+	atomic64_t delay_start;
+	u64 last_delay;
+	int last_use;
+	struct callback_head callback_head;
+	u64 android_oem_data1;
+};
+
+struct blkcg_policy_data;
+
+struct blkcg {
+	struct cgroup_subsys_state css;
+	spinlock_t lock;
+	refcount_t online_pin;
+	struct xarray blkg_tree;
+	struct blkcg_gq __attribute__((btf_type_tag("rcu"))) *blkg_hint;
+	struct hlist_head blkg_list;
+	struct blkcg_policy_data *cpd[6];
+	struct list_head all_blkcgs_node;
+	struct llist_head __attribute__((btf_type_tag("percpu"))) *lhead;
+	struct list_head cgwb_list;
+	u64 android_oem_data1;
+};
+
+struct blkcg_policy_data {
+	struct blkcg *blkcg;
+	int plid;
+};
+
+struct blkg_policy_data {
+	struct blkcg_gq *blkg;
+	int plid;
+	bool online;
+};
+
+struct biovec_slab {
+	int nr_vecs;
+	char *name;
+	struct kmem_cache *slab;
+};
+
+struct bio_slab {
+	struct kmem_cache *slab;
+	unsigned int slab_ref;
+	unsigned int slab_size;
+	char name[8];
+};
+
+struct blk_mq_ctxs {
+	struct kobject kobj;
+	struct blk_mq_ctx __attribute__((btf_type_tag("percpu"))) *queue_ctx;
+};
+
+struct elevator_type;
+
+struct elevator_queue {
+	struct elevator_type *type;
+	void *elevator_data;
+	struct kobject kobj;
+	struct mutex sysfs_lock;
+	unsigned long flags;
+	struct hlist_head hash[64];
+};
+
+enum elv_merge {
+	ELEVATOR_NO_MERGE = 0,
+	ELEVATOR_FRONT_MERGE = 1,
+	ELEVATOR_BACK_MERGE = 2,
+	ELEVATOR_DISCARD_MERGE = 3,
+};
+
+typedef unsigned int blk_insert_t;
+
+struct blk_mq_alloc_data;
+
+struct elevator_mq_ops {
+	int (*init_sched)(struct request_queue *, struct elevator_type *);
+	void (*exit_sched)(struct elevator_queue *);
+	int (*init_hctx)(struct blk_mq_hw_ctx *, unsigned int);
+	void (*exit_hctx)(struct blk_mq_hw_ctx *, unsigned int);
+	void (*depth_updated)(struct blk_mq_hw_ctx *);
+	bool (*allow_merge)(struct request_queue *, struct request *, struct bio *);
+	bool (*bio_merge)(struct request_queue *, struct bio *, unsigned int);
+	int (*request_merge)(struct request_queue *, struct request **, struct bio *);
+	void (*request_merged)(struct request_queue *, struct request *, enum elv_merge);
+	void (*requests_merged)(struct request_queue *, struct request *, struct request *);
+	void (*limit_depth)(blk_opf_t, struct blk_mq_alloc_data *);
+	void (*prepare_request)(struct request *);
+	void (*finish_request)(struct request *);
+	void (*insert_requests)(struct blk_mq_hw_ctx *, struct list_head *, blk_insert_t);
+	struct request * (*dispatch_request)(struct blk_mq_hw_ctx *);
+	bool (*has_work)(struct blk_mq_hw_ctx *);
+	void (*completed_request)(struct request *, u64);
+	void (*requeue_request)(struct request *);
+	struct request * (*former_request)(struct request_queue *, struct request *);
+	struct request * (*next_request)(struct request_queue *, struct request *);
+	void (*init_icq)(struct io_cq *);
+	void (*exit_icq)(struct io_cq *);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct elv_fs_entry;
+
+struct elevator_type {
+	struct kmem_cache *icq_cache;
+	struct elevator_mq_ops ops;
+	size_t icq_size;
+	size_t icq_align;
+	struct elv_fs_entry *elevator_attrs;
+	const char *elevator_name;
+	const char *elevator_alias;
+	const unsigned int elevator_features;
+	struct module *elevator_owner;
+	const struct blk_mq_debugfs_attr *queue_debugfs_attrs;
+	const struct blk_mq_debugfs_attr *hctx_debugfs_attrs;
+	char icq_cache_name[22];
+	struct list_head list;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+typedef __u32 blk_mq_req_flags_t;
+
+struct blk_mq_alloc_data {
+	struct request_queue *q;
+	blk_mq_req_flags_t flags;
+	unsigned int shallow_depth;
+	blk_opf_t cmd_flags;
+	req_flags_t rq_flags;
+	unsigned int nr_tags;
+	struct request **cached_rq;
+	struct blk_mq_ctx *ctx;
+	struct blk_mq_hw_ctx *hctx;
+};
+
+struct elv_fs_entry {
+	struct attribute attr;
+	ssize_t (*show)(struct elevator_queue *, char *);
+	ssize_t (*store)(struct elevator_queue *, const char *, size_t);
+};
+
+enum {
+	BLK_MQ_F_SHOULD_MERGE = 1,
+	BLK_MQ_F_TAG_QUEUE_SHARED = 2,
+	BLK_MQ_F_STACKING = 4,
+	BLK_MQ_F_TAG_HCTX_SHARED = 8,
+	BLK_MQ_F_BLOCKING = 32,
+	BLK_MQ_F_NO_SCHED = 64,
+	BLK_MQ_F_NO_SCHED_BY_DEFAULT = 128,
+	BLK_MQ_F_ALLOC_POLICY_START_BIT = 8,
+	BLK_MQ_F_ALLOC_POLICY_BITS = 1,
+	BLK_MQ_S_STOPPED = 0,
+	BLK_MQ_S_TAG_ACTIVE = 1,
+	BLK_MQ_S_SCHED_RESTART = 2,
+	BLK_MQ_S_INACTIVE = 3,
+	BLK_MQ_MAX_DEPTH = 10240,
+	BLK_MQ_CPU_WORK_BATCH = 8,
+};
+
+typedef void (*btf_trace_block_touch_buffer)(void *, struct buffer_head *);
+
+typedef void (*btf_trace_block_dirty_buffer)(void *, struct buffer_head *);
+
+typedef void (*btf_trace_block_rq_requeue)(void *, struct request *);
+
+typedef void (*btf_trace_block_rq_complete)(void *, struct request *, blk_status_t, unsigned int);
+
+typedef void (*btf_trace_block_rq_error)(void *, struct request *, blk_status_t, unsigned int);
+
+typedef void (*btf_trace_block_rq_insert)(void *, struct request *);
+
+typedef void (*btf_trace_block_rq_issue)(void *, struct request *);
+
+typedef void (*btf_trace_block_rq_merge)(void *, struct request *);
+
+typedef void (*btf_trace_block_io_start)(void *, struct request *);
+
+typedef void (*btf_trace_block_io_done)(void *, struct request *);
+
+typedef void (*btf_trace_block_bio_complete)(void *, struct request_queue *, struct bio *);
+
+typedef void (*btf_trace_block_bio_bounce)(void *, struct bio *);
+
+typedef void (*btf_trace_block_bio_backmerge)(void *, struct bio *);
+
+typedef void (*btf_trace_block_bio_frontmerge)(void *, struct bio *);
+
+typedef void (*btf_trace_block_bio_queue)(void *, struct bio *);
+
+typedef void (*btf_trace_block_getrq)(void *, struct bio *);
+
+typedef void (*btf_trace_block_plug)(void *, struct request_queue *);
+
+typedef void (*btf_trace_block_unplug)(void *, struct request_queue *, unsigned int, bool);
+
+typedef void (*btf_trace_block_split)(void *, struct bio *, unsigned int);
+
+typedef void (*btf_trace_block_bio_remap)(void *, struct bio *, dev_t, sector_t);
+
+typedef void (*btf_trace_block_rq_remap)(void *, struct request *, dev_t, sector_t);
+
+enum {
+	BLK_MQ_REQ_NOWAIT = 1,
+	BLK_MQ_REQ_RESERVED = 2,
+	BLK_MQ_REQ_PM = 4,
+};
+
+enum blkg_rwstat_type {
+	BLKG_RWSTAT_READ = 0,
+	BLKG_RWSTAT_WRITE = 1,
+	BLKG_RWSTAT_SYNC = 2,
+	BLKG_RWSTAT_ASYNC = 3,
+	BLKG_RWSTAT_DISCARD = 4,
+	BLKG_RWSTAT_NR = 5,
+	BLKG_RWSTAT_TOTAL = 5,
+};
+
+struct blk_plug_cb;
+
+typedef void (*blk_plug_cb_fn)(struct blk_plug_cb *, bool);
+
+struct blk_plug_cb {
+	struct list_head list;
+	blk_plug_cb_fn callback;
+	void *data;
+};
+
+struct trace_event_raw_block_buffer {
+	struct trace_entry ent;
+	dev_t dev;
+	sector_t sector;
+	size_t size;
+	char __data[0];
+};
+
+struct trace_event_raw_block_rq_requeue {
+	struct trace_entry ent;
+	dev_t dev;
+	sector_t sector;
+	unsigned int nr_sector;
+	unsigned short ioprio;
+	char rwbs[10];
+	u32 __data_loc_cmd;
+	char __data[0];
+};
+
+struct trace_event_raw_block_rq_completion {
+	struct trace_entry ent;
+	dev_t dev;
+	sector_t sector;
+	unsigned int nr_sector;
+	int error;
+	unsigned short ioprio;
+	char rwbs[10];
+	u32 __data_loc_cmd;
+	char __data[0];
+};
+
+struct trace_event_raw_block_rq {
+	struct trace_entry ent;
+	dev_t dev;
+	sector_t sector;
+	unsigned int nr_sector;
+	unsigned int bytes;
+	unsigned short ioprio;
+	char rwbs[10];
+	char comm[16];
+	u32 __data_loc_cmd;
+	char __data[0];
+};
+
+struct trace_event_raw_block_bio_complete {
+	struct trace_entry ent;
+	dev_t dev;
+	sector_t sector;
+	unsigned int nr_sector;
+	int error;
+	char rwbs[10];
+	char __data[0];
+};
+
+struct trace_event_raw_block_bio {
+	struct trace_entry ent;
+	dev_t dev;
+	sector_t sector;
+	unsigned int nr_sector;
+	char rwbs[10];
+	char comm[16];
+	char __data[0];
+};
+
+struct trace_event_raw_block_plug {
+	struct trace_entry ent;
+	char comm[16];
+	char __data[0];
+};
+
+struct trace_event_raw_block_unplug {
+	struct trace_entry ent;
+	int nr_rq;
+	char comm[16];
+	char __data[0];
+};
+
+struct trace_event_raw_block_split {
+	struct trace_entry ent;
+	dev_t dev;
+	sector_t sector;
+	sector_t new_sector;
+	char rwbs[10];
+	char comm[16];
+	char __data[0];
+};
+
+struct trace_event_raw_block_bio_remap {
+	struct trace_entry ent;
+	dev_t dev;
+	sector_t sector;
+	unsigned int nr_sector;
+	dev_t old_dev;
+	sector_t old_sector;
+	char rwbs[10];
+	char __data[0];
+};
+
+struct trace_event_raw_block_rq_remap {
+	struct trace_entry ent;
+	dev_t dev;
+	sector_t sector;
+	unsigned int nr_sector;
+	dev_t old_dev;
+	sector_t old_sector;
+	unsigned int nr_bios;
+	char rwbs[10];
+	char __data[0];
+};
+
+struct throtl_service_queue {
+	struct throtl_service_queue *parent_sq;
+	struct list_head queued[2];
+	unsigned int nr_queued[2];
+	struct rb_root_cached pending_tree;
+	unsigned int nr_pending;
+	unsigned long first_pending_disptime;
+	struct timer_list pending_timer;
+};
+
+struct throtl_grp;
+
+struct throtl_qnode {
+	struct list_head node;
+	struct bio_list bios;
+	struct throtl_grp *tg;
+};
+
+struct blkg_rwstat {
+	struct percpu_counter cpu_cnt[5];
+	atomic64_t aux_cnt[5];
+};
+
+struct throtl_grp {
+	struct blkg_policy_data pd;
+	struct rb_node rb_node;
+	struct throtl_data *td;
+	struct throtl_service_queue service_queue;
+	struct throtl_qnode qnode_on_self[2];
+	struct throtl_qnode qnode_on_parent[2];
+	unsigned long disptime;
+	unsigned int flags;
+	bool has_rules_bps[2];
+	bool has_rules_iops[2];
+	uint64_t bps[4];
+	uint64_t bps_conf[4];
+	unsigned int iops[4];
+	unsigned int iops_conf[4];
+	uint64_t bytes_disp[2];
+	unsigned int io_disp[2];
+	unsigned long last_low_overflow_time[2];
+	uint64_t last_bytes_disp[2];
+	unsigned int last_io_disp[2];
+	long long carryover_bytes[2];
+	int carryover_ios[2];
+	unsigned long last_check_time;
+	unsigned long latency_target;
+	unsigned long latency_target_conf;
+	unsigned long slice_start[2];
+	unsigned long slice_end[2];
+	unsigned long last_finish_time;
+	unsigned long checked_last_finish_time;
+	unsigned long avg_idletime;
+	unsigned long idletime_threshold;
+	unsigned long idletime_threshold_conf;
+	unsigned int bio_cnt;
+	unsigned int bad_bio_cnt;
+	unsigned long bio_cnt_reset_time;
+	struct blkg_rwstat stat_bytes;
+	struct blkg_rwstat stat_ios;
+};
+
+typedef struct blkcg_policy_data *blkcg_pol_alloc_cpd_fn(gfp_t);
+
+typedef void blkcg_pol_free_cpd_fn(struct blkcg_policy_data *);
+
+typedef struct blkg_policy_data *blkcg_pol_alloc_pd_fn(struct gendisk *, struct blkcg *, gfp_t);
+
+typedef void blkcg_pol_init_pd_fn(struct blkg_policy_data *);
+
+typedef void blkcg_pol_online_pd_fn(struct blkg_policy_data *);
+
+typedef void blkcg_pol_offline_pd_fn(struct blkg_policy_data *);
+
+typedef void blkcg_pol_free_pd_fn(struct blkg_policy_data *);
+
+typedef void blkcg_pol_reset_pd_stats_fn(struct blkg_policy_data *);
+
+typedef void blkcg_pol_stat_pd_fn(struct blkg_policy_data *, struct seq_file *);
+
+struct blkcg_policy {
+	int plid;
+	struct cftype *dfl_cftypes;
+	struct cftype *legacy_cftypes;
+	blkcg_pol_alloc_cpd_fn *cpd_alloc_fn;
+	blkcg_pol_free_cpd_fn *cpd_free_fn;
+	blkcg_pol_alloc_pd_fn *pd_alloc_fn;
+	blkcg_pol_init_pd_fn *pd_init_fn;
+	blkcg_pol_online_pd_fn *pd_online_fn;
+	blkcg_pol_offline_pd_fn *pd_offline_fn;
+	blkcg_pol_free_pd_fn *pd_free_fn;
+	blkcg_pol_reset_pd_stats_fn *pd_reset_stats_fn;
+	blkcg_pol_stat_pd_fn *pd_stat_fn;
+};
+
+struct trace_event_data_offsets_block_buffer {};
+
+struct trace_event_data_offsets_block_rq_requeue {
+	u32 cmd;
+};
+
+struct trace_event_data_offsets_block_rq_completion {
+	u32 cmd;
+};
+
+struct trace_event_data_offsets_block_rq {
+	u32 cmd;
+};
+
+struct trace_event_data_offsets_block_bio_complete {};
+
+struct trace_event_data_offsets_block_bio {};
+
+struct trace_event_data_offsets_block_plug {};
+
+struct trace_event_data_offsets_block_unplug {};
+
+struct trace_event_data_offsets_block_split {};
+
+struct trace_event_data_offsets_block_bio_remap {};
+
+struct trace_event_data_offsets_block_rq_remap {};
+
+struct queue_sysfs_entry {
+	struct attribute attr;
+	ssize_t (*show)(struct request_queue *, char *);
+	ssize_t (*store)(struct request_queue *, const char *, size_t);
+};
+
+enum {
+	REQ_FSEQ_PREFLUSH = 1,
+	REQ_FSEQ_DATA = 2,
+	REQ_FSEQ_POSTFLUSH = 4,
+	REQ_FSEQ_DONE = 8,
+	REQ_FSEQ_ACTIONS = 7,
+	FLUSH_PENDING_TIMEOUT = 1250,
+};
+
+enum {
+	BLK_MQ_NO_TAG = 4294967295,
+	BLK_MQ_TAG_MIN = 1,
+	BLK_MQ_TAG_MAX = 4294967294,
+};
+
+enum hctx_type {
+	HCTX_TYPE_DEFAULT = 0,
+	HCTX_TYPE_READ = 1,
+	HCTX_TYPE_POLL = 2,
+	HCTX_MAX_TYPES = 3,
+};
+
+enum {
+	ICQ_EXITED = 4,
+	ICQ_DESTROYED = 8,
+};
+
+struct rq_map_data {
+	struct page **pages;
+	unsigned long offset;
+	unsigned short page_order;
+	unsigned short nr_entries;
+	bool null_mapped;
+	bool from_user;
+};
+
+struct bio_map_data {
+	bool is_our_pages: 1;
+	bool is_null_mapped: 1;
+	struct iov_iter iter;
+	struct iovec iov[0];
+};
+
+enum bio_merge_status {
+	BIO_MERGE_OK = 0,
+	BIO_MERGE_NONE = 1,
+	BIO_MERGE_FAILED = 2,
+};
+
+struct req_iterator {
+	struct bvec_iter iter;
+	struct bio *bio;
+};
+
+enum prep_dispatch {
+	PREP_DISPATCH_OK = 0,
+	PREP_DISPATCH_NO_TAG = 1,
+	PREP_DISPATCH_NO_BUDGET = 2,
+};
+
+struct blk_mq_qe_pair {
+	struct list_head node;
+	struct request_queue *q;
+	struct elevator_type *type;
+};
+
+typedef bool busy_tag_iter_fn(struct request *, void *);
+
+typedef bool (*sb_for_each_fn)(struct sbitmap *, unsigned int, void *);
+
+struct flush_busy_ctx_data {
+	struct blk_mq_hw_ctx *hctx;
+	struct list_head *list;
+};
+
+struct dispatch_rq_data {
+	struct blk_mq_hw_ctx *hctx;
+	struct request *rq;
+};
+
+struct blk_expired_data {
+	bool has_timedout_rq;
+	unsigned long next;
+	unsigned long timeout_start;
+};
+
+struct rq_iter_data {
+	struct blk_mq_hw_ctx *hctx;
+	bool has_rq;
+};
+
+struct mq_inflight {
+	struct block_device *part;
+	unsigned int inflight[2];
+};
+
+struct blk_rq_wait {
+	struct completion done;
+	blk_status_t ret;
+};
+
+enum {
+	BLK_MQ_UNIQUE_TAG_BITS = 16,
+	BLK_MQ_UNIQUE_TAG_MASK = 65535,
+};
+
+struct sbq_wait {
+	struct sbitmap_queue *sbq;
+	struct wait_queue_entry wait;
+};
+
+struct bt_iter_data {
+	struct blk_mq_hw_ctx *hctx;
+	struct request_queue *q;
+	busy_tag_iter_fn *fn;
+	void *data;
+	bool reserved;
+};
+
+struct bt_tags_iter_data {
+	struct blk_mq_tags *tags;
+	busy_tag_iter_fn *fn;
+	void *data;
+	unsigned int flags;
+};
+
+struct blk_rq_stat;
+
+struct blk_stat_callback {
+	struct list_head list;
+	struct timer_list timer;
+	struct blk_rq_stat __attribute__((btf_type_tag("percpu"))) *cpu_stat;
+	int (*bucket_fn)(const struct request *);
+	unsigned int buckets;
+	struct blk_rq_stat *stat;
+	void (*timer_fn)(struct blk_stat_callback *);
+	void *data;
+	struct callback_head rcu;
+};
+
+struct blk_rq_stat {
+	u64 mean;
+	u64 min;
+	u64 max;
+	u32 nr_samples;
+	u64 batch;
+};
+
+struct blk_queue_stats {
+	struct list_head callbacks;
+	spinlock_t lock;
+	int accounting;
+};
+
+struct blk_mq_hw_ctx_sysfs_entry {
+	struct attribute attr;
+	ssize_t (*show)(struct blk_mq_hw_ctx *, char *);
+};
+
+typedef u32 compat_caddr_t;
+
+struct hd_geometry {
+	unsigned char heads;
+	unsigned char sectors;
+	unsigned short cylinders;
+	unsigned long start;
+};
+
+struct pr_keys {
+	u32 generation;
+	u32 num_keys;
+	u64 keys[0];
+};
+
+struct pr_held_reservation {
+	u64 key;
+	u32 generation;
+	enum pr_type type;
+};
+
+struct blkpg_ioctl_arg {
+	int op;
+	int flags;
+	int datalen;
+	void __attribute__((btf_type_tag("user"))) *data;
+};
+
+struct blkpg_partition {
+	long long start;
+	long long length;
+	int pno;
+	char devname[64];
+	char volname[64];
+};
+
+struct pr_preempt {
+	__u64 old_key;
+	__u64 new_key;
+	__u32 type;
+	__u32 flags;
+};
+
+struct pr_clear {
+	__u64 key;
+	__u32 flags;
+	__u32 __pad;
+};
+
+struct pr_reservation {
+	__u64 key;
+	__u32 type;
+	__u32 flags;
+};
+
+struct pr_registration {
+	__u64 old_key;
+	__u64 new_key;
+	__u32 flags;
+	__u32 __pad;
+};
+
+struct compat_hd_geometry {
+	unsigned char heads;
+	unsigned char sectors;
+	unsigned short cylinders;
+	u32 start;
+};
+
+struct compat_blkpg_ioctl_arg {
+	compat_int_t op;
+	compat_int_t flags;
+	compat_int_t datalen;
+	compat_caddr_t data;
+};
+
+struct badblocks {
+	struct device *dev;
+	int count;
+	int unacked_exist;
+	int shift;
+	u64 *page;
+	int changed;
+	seqlock_t lock;
+	sector_t sector;
+	sector_t size;
+};
+
+struct blk_major_name {
+	struct blk_major_name *next;
+	int major;
+	char name[16];
+	void (*probe)(dev_t);
+};
+
+enum {
+	GENHD_FL_REMOVABLE = 1,
+	GENHD_FL_HIDDEN = 2,
+	GENHD_FL_NO_PART = 4,
+};
+
+struct klist;
+
+struct klist_node;
+
+struct klist_iter {
+	struct klist *i_klist;
+	struct klist_node *i_cur;
+};
+
+struct subsys_private;
+
+struct class_dev_iter {
+	struct klist_iter ki;
+	const struct device_type *type;
+	struct subsys_private *sp;
+};
+
+struct klist {
+	spinlock_t k_lock;
+	struct list_head k_list;
+	void (*get)(struct klist_node *);
+	void (*put)(struct klist_node *);
+};
+
+struct klist_node {
+	void *n_klist;
+	struct list_head n_node;
+	struct kref n_ref;
+};
+
+enum {
+	IOPRIO_WHO_PROCESS = 1,
+	IOPRIO_WHO_PGRP = 2,
+	IOPRIO_WHO_USER = 3,
+};
+
+struct parsed_partitions {
+	struct gendisk *disk;
+	char name[32];
+	struct {
+		sector_t from;
+		sector_t size;
+		int flags;
+		bool has_info;
+		struct partition_meta_info info;
+	} *parts;
+	int next;
+	int limit;
+	bool access_beyond_eod;
+	char *pp_buf;
+};
+
+typedef struct {
+	struct folio *v;
+} Sector;
+
+enum msdos_sys_ind {
+	DOS_EXTENDED_PARTITION = 5,
+	LINUX_EXTENDED_PARTITION = 133,
+	WIN98_EXTENDED_PARTITION = 15,
+	LINUX_DATA_PARTITION = 131,
+	LINUX_LVM_PARTITION = 142,
+	LINUX_RAID_PARTITION = 253,
+	SOLARIS_X86_PARTITION = 130,
+	NEW_SOLARIS_X86_PARTITION = 191,
+	DM6_AUX1PARTITION = 81,
+	DM6_AUX3PARTITION = 83,
+	DM6_PARTITION = 84,
+	EZD_PARTITION = 85,
+	FREEBSD_PARTITION = 165,
+	OPENBSD_PARTITION = 166,
+	NETBSD_PARTITION = 169,
+	BSDI_PARTITION = 183,
+	MINIX_PARTITION = 129,
+	UNIXWARE_PARTITION = 99,
+};
+
+struct msdos_partition {
+	u8 boot_ind;
+	u8 head;
+	u8 sector;
+	u8 cyl;
+	u8 sys_ind;
+	u8 end_head;
+	u8 end_sector;
+	u8 end_cyl;
+	__le32 start_sect;
+	__le32 nr_sects;
+};
+
+struct _gpt_header {
+	__le64 signature;
+	__le32 revision;
+	__le32 header_size;
+	__le32 header_crc32;
+	__le32 reserved1;
+	__le64 my_lba;
+	__le64 alternate_lba;
+	__le64 first_usable_lba;
+	__le64 last_usable_lba;
+	efi_guid_t disk_guid;
+	__le64 partition_entry_lba;
+	__le32 num_partition_entries;
+	__le32 sizeof_partition_entry;
+	__le32 partition_entry_array_crc32;
+} __attribute__((packed));
+
+typedef struct _gpt_header gpt_header;
+
+struct _gpt_entry_attributes {
+	u64 required_to_function: 1;
+	u64 reserved: 47;
+	u64 type_guid_specific: 16;
+};
+
+typedef struct _gpt_entry_attributes gpt_entry_attributes;
+
+struct _gpt_entry {
+	efi_guid_t partition_type_guid;
+	efi_guid_t unique_partition_guid;
+	__le64 starting_lba;
+	__le64 ending_lba;
+	gpt_entry_attributes attributes;
+	__le16 partition_name[36];
+};
+
+typedef struct _gpt_entry gpt_entry;
+
+struct _gpt_mbr_record {
+	u8 boot_indicator;
+	u8 start_head;
+	u8 start_sector;
+	u8 start_track;
+	u8 os_type;
+	u8 end_head;
+	u8 end_sector;
+	u8 end_track;
+	__le32 starting_lba;
+	__le32 size_in_lba;
+};
+
+typedef struct _gpt_mbr_record gpt_mbr_record;
+
+struct _legacy_mbr {
+	u8 boot_code[440];
+	__le32 unique_mbr_signature;
+	__le16 unknown;
+	gpt_mbr_record partition_record[4];
+	__le16 signature;
+} __attribute__((packed));
+
+typedef struct _legacy_mbr legacy_mbr;
+
+struct rq_wait;
+
+typedef bool acquire_inflight_cb_t(struct rq_wait *, void *);
+
+struct rq_qos_wait_data {
+	struct wait_queue_entry wq;
+	struct task_struct *task;
+	struct rq_wait *rqw;
+	acquire_inflight_cb_t *cb;
+	void *private_data;
+	bool got_token;
+};
+
+struct rq_wait {
+	wait_queue_head_t wait;
+	atomic_t inflight;
+};
+
+struct rq_depth {
+	unsigned int max_depth;
+	int scale_step;
+	bool scaled_max;
+	unsigned int queue_depth;
+	unsigned int default_depth;
+};
+
+typedef void cleanup_cb_t(struct rq_wait *, void *);
+
+struct disk_events {
+	struct list_head node;
+	struct gendisk *disk;
+	spinlock_t lock;
+	struct mutex block_mutex;
+	int block;
+	unsigned int pending;
+	unsigned int clearing;
+	long poll_msecs;
+	struct delayed_work dwork;
+};
+
+struct blk_ia_range_sysfs_entry {
+	struct attribute attr;
+	ssize_t (*show)(struct blk_independent_access_range *, char *);
+};
+
+struct uuidcmp {
+	const char *uuid;
+	int len;
+};
+
+struct sg_io_v4;
+
+typedef int bsg_sg_io_fn(struct request_queue *, struct sg_io_v4 *, bool, unsigned int);
+
+struct bsg_device {
+	struct request_queue *queue;
+	struct device device;
+	struct cdev cdev;
+	int max_queue;
+	unsigned int timeout;
+	unsigned int reserved_size;
+	bsg_sg_io_fn *sg_io_fn;
+};
+
+struct sg_io_v4 {
+	__s32 guard;
+	__u32 protocol;
+	__u32 subprotocol;
+	__u32 request_len;
+	__u64 request;
+	__u64 request_tag;
+	__u32 request_attr;
+	__u32 request_priority;
+	__u32 request_extra;
+	__u32 max_response_len;
+	__u64 response;
+	__u32 dout_iovec_count;
+	__u32 dout_xfer_len;
+	__u32 din_iovec_count;
+	__u32 din_xfer_len;
+	__u64 dout_xferp;
+	__u64 din_xferp;
+	__u32 timeout;
+	__u32 flags;
+	__u64 usr_ptr;
+	__u32 spare_in;
+	__u32 driver_status;
+	__u32 transport_status;
+	__u32 device_status;
+	__u32 retry_delay;
+	__u32 info;
+	__u32 duration;
+	__u32 response_len;
+	__s32 din_resid;
+	__s32 dout_resid;
+	__u64 generated_tag;
+	__u32 spare_out;
+	__u32 padding;
+};
+
+struct bsg_job;
+
+typedef int bsg_job_fn(struct bsg_job *);
+
+typedef enum blk_eh_timer_return bsg_timeout_fn(struct request *);
+
+struct bsg_set {
+	struct blk_mq_tag_set tag_set;
+	struct bsg_device *bd;
+	bsg_job_fn *job_fn;
+	bsg_timeout_fn *timeout_fn;
+};
+
+struct bsg_buffer {
+	unsigned int payload_len;
+	int sg_cnt;
+	struct scatterlist *sg_list;
+};
+
+struct bsg_job {
+	struct device *dev;
+	struct kref kref;
+	unsigned int timeout;
+	void *request;
+	void *reply;
+	unsigned int request_len;
+	unsigned int reply_len;
+	struct bsg_buffer request_payload;
+	struct bsg_buffer reply_payload;
+	int result;
+	unsigned int reply_payload_rcv_len;
+	struct request *bidi_rq;
+	struct bio *bidi_bio;
+	void *dd_data;
+};
+
+enum blkg_iostat_type {
+	BLKG_IOSTAT_READ = 0,
+	BLKG_IOSTAT_WRITE = 1,
+	BLKG_IOSTAT_DISCARD = 2,
+	BLKG_IOSTAT_NR = 3,
+};
+
+struct blkg_conf_ctx {
+	char *input;
+	char *body;
+	struct block_device *bdev;
+	struct blkcg_gq *blkg;
+};
+
+struct blkg_rwstat_sample {
+	u64 cnt[5];
+};
+
+struct latency_bucket {
+	unsigned long total_latency;
+	int samples;
+};
+
+struct avg_latency_bucket {
+	unsigned long latency;
+	bool valid;
+};
+
+struct throtl_data {
+	struct throtl_service_queue service_queue;
+	struct request_queue *queue;
+	unsigned int nr_queued[2];
+	unsigned int throtl_slice;
+	struct work_struct dispatch_work;
+	unsigned int limit_index;
+	bool limit_valid[2];
+	unsigned long low_upgrade_time;
+	unsigned long low_downgrade_time;
+	unsigned int scale;
+	struct latency_bucket tmp_buckets[18];
+	struct avg_latency_bucket avg_buckets[18];
+	struct latency_bucket __attribute__((btf_type_tag("percpu"))) *latency_buckets[2];
+	unsigned long last_calculate_time;
+	unsigned long filtered_latency;
+	bool track_bio_latency;
+};
+
+enum tg_state_flags {
+	THROTL_TG_PENDING = 1,
+	THROTL_TG_WAS_EMPTY = 2,
+	THROTL_TG_CANCELING = 4,
+};
+
+enum {
+	LIMIT_LOW = 0,
+	LIMIT_MAX = 1,
+	LIMIT_CNT = 2,
+};
+
+enum prio_policy {
+	POLICY_NO_CHANGE = 0,
+	POLICY_PROMOTE_TO_RT = 1,
+	POLICY_RESTRICT_TO_BE = 2,
+	POLICY_ALL_TO_IDLE = 3,
+	POLICY_NONE_TO_RT = 4,
+};
+
+struct ioprio_blkcg {
+	struct blkcg_policy_data cpd;
+	enum prio_policy prio_policy;
+};
+
+struct ioprio_blkg {
+	struct blkg_policy_data pd;
+};
+
+struct ioc_gq;
+
+struct ioc_now;
+
+typedef void (*btf_trace_iocost_iocg_activate)(void *, struct ioc_gq *, const char *, struct ioc_now *, u64, u64, u64);
+
+struct iocg_stat {
+	u64 usage_us;
+	u64 wait_us;
+	u64 indebt_us;
+	u64 indelay_us;
+};
+
+struct ioc;
+
+struct iocg_pcpu_stat;
+
+struct ioc_gq {
+	struct blkg_policy_data pd;
+	struct ioc *ioc;
+	u32 cfg_weight;
+	u32 weight;
+	u32 active;
+	u32 inuse;
+	u32 last_inuse;
+	s64 saved_margin;
+	sector_t cursor;
+	atomic64_t vtime;
+	atomic64_t done_vtime;
+	u64 abs_vdebt;
+	u64 delay;
+	u64 delay_at;
+	atomic64_t active_period;
+	struct list_head active_list;
+	u64 child_active_sum;
+	u64 child_inuse_sum;
+	u64 child_adjusted_sum;
+	int hweight_gen;
+	u32 hweight_active;
+	u32 hweight_inuse;
+	u32 hweight_donating;
+	u32 hweight_after_donation;
+	struct list_head walk_list;
+	struct list_head surplus_list;
+	struct wait_queue_head waitq;
+	struct hrtimer waitq_timer;
+	u64 activated_at;
+	struct iocg_pcpu_stat __attribute__((btf_type_tag("percpu"))) *pcpu_stat;
+	struct iocg_stat stat;
+	struct iocg_stat last_stat;
+	u64 last_stat_abs_vusage;
+	u64 usage_delta_us;
+	u64 wait_since;
+	u64 indebt_since;
+	u64 indelay_since;
+	int level;
+	struct ioc_gq *ancestors[0];
+};
+
+struct ioc_params {
+	u32 qos[6];
+	u64 i_lcoefs[6];
+	u64 lcoefs[6];
+	u32 too_fast_vrate_pct;
+	u32 too_slow_vrate_pct;
+};
+
+struct ioc_margins {
+	s64 min;
+	s64 low;
+	s64 target;
+};
+
+enum ioc_running {
+	IOC_IDLE = 0,
+	IOC_RUNNING = 1,
+	IOC_STOP = 2,
+};
+
+struct ioc_pcpu_stat;
+
+struct ioc {
+	struct rq_qos rqos;
+	bool enabled;
+	struct ioc_params params;
+	struct ioc_margins margins;
+	u32 period_us;
+	u32 timer_slack_ns;
+	u64 vrate_min;
+	u64 vrate_max;
+	spinlock_t lock;
+	struct timer_list timer;
+	struct list_head active_iocgs;
+	struct ioc_pcpu_stat __attribute__((btf_type_tag("percpu"))) *pcpu_stat;
+	enum ioc_running running;
+	atomic64_t vtime_rate;
+	u64 vtime_base_rate;
+	s64 vtime_err;
+	seqcount_spinlock_t period_seqcount;
+	u64 period_at;
+	u64 period_at_vtime;
+	atomic64_t cur_period;
+	int busy_level;
+	bool weights_updated;
+	atomic_t hweight_gen;
+	u64 dfgv_period_at;
+	u64 dfgv_period_rem;
+	u64 dfgv_usage_us_sum;
+	u64 autop_too_fast_at;
+	u64 autop_too_slow_at;
+	int autop_idx;
+	bool user_qos_params: 1;
+	bool user_cost_model: 1;
+};
+
+struct ioc_missed {
+	local_t nr_met;
+	local_t nr_missed;
+	u32 last_met;
+	u32 last_missed;
+};
+
+struct ioc_pcpu_stat {
+	struct ioc_missed missed[2];
+	local64_t rq_wait_ns;
+	u64 last_rq_wait_ns;
+};
+
+struct iocg_pcpu_stat {
+	local64_t abs_vusage;
+};
+
+struct ioc_now {
+	u64 now_ns;
+	u64 now;
+	u64 vnow;
+};
+
+typedef void (*btf_trace_iocost_iocg_idle)(void *, struct ioc_gq *, const char *, struct ioc_now *, u64, u64, u64);
+
+typedef void (*btf_trace_iocost_inuse_shortage)(void *, struct ioc_gq *, const char *, struct ioc_now *, u32, u32, u64, u64);
+
+typedef void (*btf_trace_iocost_inuse_transfer)(void *, struct ioc_gq *, const char *, struct ioc_now *, u32, u32, u64, u64);
+
+typedef void (*btf_trace_iocost_inuse_adjust)(void *, struct ioc_gq *, const char *, struct ioc_now *, u32, u32, u64, u64);
+
+typedef void (*btf_trace_iocost_ioc_vrate_adj)(void *, struct ioc *, u64, u32 *, u32, int, int);
+
+typedef void (*btf_trace_iocost_iocg_forgive_debt)(void *, struct ioc_gq *, const char *, struct ioc_now *, u32, u64, u64, u64, u64);
+
+enum {
+	MILLION = 1000000,
+	MIN_PERIOD = 1000,
+	MAX_PERIOD = 1000000,
+	MARGIN_MIN_PCT = 10,
+	MARGIN_LOW_PCT = 20,
+	MARGIN_TARGET_PCT = 50,
+	INUSE_ADJ_STEP_PCT = 25,
+	TIMER_SLACK_PCT = 1,
+	WEIGHT_ONE = 65536,
+};
+
+enum {
+	QOS_RPPM = 0,
+	QOS_RLAT = 1,
+	QOS_WPPM = 2,
+	QOS_WLAT = 3,
+	QOS_MIN = 4,
+	QOS_MAX = 5,
+	NR_QOS_PARAMS = 6,
+};
+
+enum {
+	QOS_ENABLE = 0,
+	QOS_CTRL = 1,
+	NR_QOS_CTRL_PARAMS = 2,
+};
+
+enum {
+	VTIME_PER_SEC_SHIFT = 37ULL,
+	VTIME_PER_SEC = 137438953472ULL,
+	VTIME_PER_USEC = 137438ULL,
+	VTIME_PER_NSEC = 137ULL,
+	VRATE_MIN_PPM = 10000ULL,
+	VRATE_MAX_PPM = 100000000ULL,
+	VRATE_MIN = 1374ULL,
+	VRATE_CLAMP_ADJ_PCT = 4ULL,
+	AUTOP_CYCLE_NSEC = 10000000000ULL,
+};
+
+enum {
+	AUTOP_INVALID = 0,
+	AUTOP_HDD = 1,
+	AUTOP_SSD_QD1 = 2,
+	AUTOP_SSD_DFL = 3,
+	AUTOP_SSD_FAST = 4,
+};
+
+enum {
+	RQ_WAIT_BUSY_PCT = 5,
+	UNBUSY_THR_PCT = 75,
+	MIN_DELAY_THR_PCT = 500,
+	MAX_DELAY_THR_PCT = 25000,
+	MIN_DELAY = 250,
+	MAX_DELAY = 250000,
+	DFGV_USAGE_PCT = 50,
+	DFGV_PERIOD = 100000,
+	MAX_LAGGING_PERIODS = 10,
+	IOC_PAGE_SHIFT = 12,
+	IOC_PAGE_SIZE = 4096,
+	IOC_SECT_TO_PAGE_SHIFT = 3,
+	LCOEF_RANDIO_PAGES = 4096,
+};
+
+enum {
+	I_LCOEF_RBPS = 0,
+	I_LCOEF_RSEQIOPS = 1,
+	I_LCOEF_RRANDIOPS = 2,
+	I_LCOEF_WBPS = 3,
+	I_LCOEF_WSEQIOPS = 4,
+	I_LCOEF_WRANDIOPS = 5,
+	NR_I_LCOEFS = 6,
+};
+
+enum {
+	LCOEF_RPAGE = 0,
+	LCOEF_RSEQIO = 1,
+	LCOEF_RRANDIO = 2,
+	LCOEF_WPAGE = 3,
+	LCOEF_WSEQIO = 4,
+	LCOEF_WRANDIO = 5,
+	NR_LCOEFS = 6,
+};
+
+enum {
+	COST_CTRL = 0,
+	COST_MODEL = 1,
+	NR_COST_CTRL_PARAMS = 2,
+};
+
+struct trace_event_raw_iocost_iocg_state {
+	struct trace_entry ent;
+	u32 __data_loc_devname;
+	u32 __data_loc_cgroup;
+	u64 now;
+	u64 vnow;
+	u64 vrate;
+	u64 last_period;
+	u64 cur_period;
+	u64 vtime;
+	u32 weight;
+	u32 inuse;
+	u64 hweight_active;
+	u64 hweight_inuse;
+	char __data[0];
+};
+
+struct trace_event_raw_iocg_inuse_update {
+	struct trace_entry ent;
+	u32 __data_loc_devname;
+	u32 __data_loc_cgroup;
+	u64 now;
+	u32 old_inuse;
+	u32 new_inuse;
+	u64 old_hweight_inuse;
+	u64 new_hweight_inuse;
+	char __data[0];
+};
+
+struct trace_event_raw_iocost_ioc_vrate_adj {
+	struct trace_entry ent;
+	u32 __data_loc_devname;
+	u64 old_vrate;
+	u64 new_vrate;
+	int busy_level;
+	u32 read_missed_ppm;
+	u32 write_missed_ppm;
+	u32 rq_wait_pct;
+	int nr_lagging;
+	int nr_shortages;
+	char __data[0];
+};
+
+struct trace_event_raw_iocost_iocg_forgive_debt {
+	struct trace_entry ent;
+	u32 __data_loc_devname;
+	u32 __data_loc_cgroup;
+	u64 now;
+	u64 vnow;
+	u32 usage_pct;
+	u64 old_debt;
+	u64 new_debt;
+	u64 old_delay;
+	u64 new_delay;
+	char __data[0];
+};
+
+struct ioc_cgrp {
+	struct blkcg_policy_data cpd;
+	unsigned int dfl_weight;
+};
+
+struct iocg_wait {
+	struct wait_queue_entry wait;
+	struct bio *bio;
+	u64 abs_cost;
+	bool committed;
+};
+
+struct trace_event_data_offsets_iocost_ioc_vrate_adj {
+	u32 devname;
+};
+
+struct trace_event_data_offsets_iocost_iocg_state {
+	u32 devname;
+	u32 cgroup;
+};
+
+struct trace_event_data_offsets_iocg_inuse_update {
+	u32 devname;
+	u32 cgroup;
+};
+
+struct trace_event_data_offsets_iocost_iocg_forgive_debt {
+	u32 devname;
+	u32 cgroup;
+};
+
+struct iocg_wake_ctx {
+	struct ioc_gq *iocg;
+	u32 hw_inuse;
+	s64 vbudget;
+};
+
+enum dd_prio {
+	DD_RT_PRIO = 0,
+	DD_BE_PRIO = 1,
+	DD_IDLE_PRIO = 2,
+	DD_PRIO_MAX = 2,
+};
+
+enum dd_data_dir {
+	DD_READ = 0,
+	DD_WRITE = 1,
+};
+
+struct io_stats_per_prio {
+	uint32_t inserted;
+	uint32_t merged;
+	uint32_t dispatched;
+	atomic_t completed;
+};
+
+struct dd_per_prio {
+	struct list_head dispatch;
+	struct rb_root sort_list[2];
+	struct list_head fifo_list[2];
+	sector_t latest_pos[2];
+	struct io_stats_per_prio stats;
+};
+
+struct deadline_data {
+	struct dd_per_prio per_prio[3];
+	enum dd_data_dir last_dir;
+	unsigned int batching;
+	unsigned int starved;
+	int fifo_expire[2];
+	int fifo_batch;
+	int writes_starved;
+	int front_merges;
+	u32 async_depth;
+	int prio_aging_expire;
+	spinlock_t lock;
+	spinlock_t zone_lock;
+};
+
+typedef void (*btf_trace_kyber_latency)(void *, dev_t, const char *, const char *, unsigned int, unsigned int, unsigned int, unsigned int);
+
+typedef void (*btf_trace_kyber_adjust)(void *, dev_t, const char *, unsigned int);
+
+typedef void (*btf_trace_kyber_throttled)(void *, dev_t, const char *);
+
+enum {
+	KYBER_READ = 0,
+	KYBER_WRITE = 1,
+	KYBER_DISCARD = 2,
+	KYBER_OTHER = 3,
+	KYBER_NUM_DOMAINS = 4,
+};
+
+enum {
+	KYBER_TOTAL_LATENCY = 0,
+	KYBER_IO_LATENCY = 1,
+};
+
+enum {
+	KYBER_LATENCY_SHIFT = 2,
+	KYBER_GOOD_BUCKETS = 4,
+	KYBER_LATENCY_BUCKETS = 8,
+};
+
+enum {
+	KYBER_ASYNC_PERCENT = 75,
+};
+
+struct trace_event_raw_kyber_latency {
+	struct trace_entry ent;
+	dev_t dev;
+	char domain[16];
+	char type[8];
+	u8 percentile;
+	u8 numerator;
+	u8 denominator;
+	unsigned int samples;
+	char __data[0];
+};
+
+struct trace_event_raw_kyber_adjust {
+	struct trace_entry ent;
+	dev_t dev;
+	char domain[16];
+	unsigned int depth;
+	char __data[0];
+};
+
+struct trace_event_raw_kyber_throttled {
+	struct trace_entry ent;
+	dev_t dev;
+	char domain[16];
+	char __data[0];
+};
+
+struct kyber_cpu_latency {
+	atomic_t buckets[48];
+};
+
+struct kyber_queue_data {
+	struct request_queue *q;
+	dev_t dev;
+	struct sbitmap_queue domain_tokens[4];
+	unsigned int async_depth;
+	struct kyber_cpu_latency __attribute__((btf_type_tag("percpu"))) *cpu_latency;
+	struct timer_list timer;
+	unsigned int latency_buckets[48];
+	unsigned long latency_timeout[3];
+	int domain_p99[3];
+	u64 latency_targets[3];
+};
+
+struct kyber_ctx_queue {
+	spinlock_t lock;
+	struct list_head rq_list[4];
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct kyber_hctx_data {
+	spinlock_t lock;
+	struct list_head rqs[4];
+	unsigned int cur_domain;
+	unsigned int batching;
+	struct kyber_ctx_queue *kcqs;
+	struct sbitmap kcq_map[4];
+	struct sbq_wait domain_wait[4];
+	struct sbq_wait_state *domain_ws[4];
+	atomic_t wait_index[4];
+};
+
+struct flush_kcq_data {
+	struct kyber_hctx_data *khd;
+	unsigned int sched_domain;
+	struct list_head *list;
+};
+
+struct trace_event_data_offsets_kyber_latency {};
+
+struct trace_event_data_offsets_kyber_adjust {};
+
+struct trace_event_data_offsets_kyber_throttled {};
+
+enum bfqq_state_flags {
+	BFQQF_just_created = 0,
+	BFQQF_busy = 1,
+	BFQQF_wait_request = 2,
+	BFQQF_non_blocking_wait_rq = 3,
+	BFQQF_fifo_expire = 4,
+	BFQQF_has_short_ttime = 5,
+	BFQQF_sync = 6,
+	BFQQF_IO_bound = 7,
+	BFQQF_in_large_burst = 8,
+	BFQQF_softrt_update = 9,
+	BFQQF_coop = 10,
+	BFQQF_split_coop = 11,
+};
+
+enum bfqq_expiration {
+	BFQQE_TOO_IDLE = 0,
+	BFQQE_BUDGET_TIMEOUT = 1,
+	BFQQE_BUDGET_EXHAUSTED = 2,
+	BFQQE_NO_MORE_REQUESTS = 3,
+	BFQQE_PREEMPTED = 4,
+};
+
+struct bfq_weight_counter {
+	unsigned int weight;
+	unsigned int num_active;
+	struct rb_node weights_node;
+};
+
+struct bfq_sched_data;
+
+struct bfq_queue;
+
+struct bfq_entity {
+	struct rb_node rb_node;
+	bool on_st_or_in_serv;
+	u64 start;
+	u64 finish;
+	struct rb_root *tree;
+	u64 min_start;
+	int service;
+	int budget;
+	int allocated;
+	int dev_weight;
+	int weight;
+	int new_weight;
+	int orig_weight;
+	struct bfq_entity *parent;
+	struct bfq_sched_data *my_sched_data;
+	struct bfq_sched_data *sched_data;
+	int prio_changed;
+	bool in_groups_with_pending_reqs;
+	struct bfq_queue *last_bfqq_created;
+};
+
+struct bfq_ttime {
+	u64 last_end_request;
+	u64 ttime_total;
+	unsigned long ttime_samples;
+	u64 ttime_mean;
+};
+
+struct bfq_data;
+
+struct bfq_io_cq;
+
+struct bfq_queue {
+	int ref;
+	int stable_ref;
+	struct bfq_data *bfqd;
+	unsigned short ioprio;
+	unsigned short ioprio_class;
+	unsigned short new_ioprio;
+	unsigned short new_ioprio_class;
+	u64 last_serv_time_ns;
+	unsigned int inject_limit;
+	unsigned long decrease_time_jif;
+	struct bfq_queue *new_bfqq;
+	struct rb_node pos_node;
+	struct rb_root *pos_root;
+	struct rb_root sort_list;
+	struct request *next_rq;
+	int queued[2];
+	int meta_pending;
+	struct list_head fifo;
+	struct bfq_entity entity;
+	struct bfq_weight_counter *weight_counter;
+	int max_budget;
+	unsigned long budget_timeout;
+	int dispatched;
+	unsigned long flags;
+	struct list_head bfqq_list;
+	struct bfq_ttime ttime;
+	u64 io_start_time;
+	u64 tot_idle_time;
+	u32 seek_history;
+	struct hlist_node burst_list_node;
+	sector_t last_request_pos;
+	unsigned int requests_within_timer;
+	pid_t pid;
+	struct bfq_io_cq *bic;
+	unsigned long wr_cur_max_time;
+	unsigned long soft_rt_next_start;
+	unsigned long last_wr_start_finish;
+	unsigned int wr_coeff;
+	unsigned long last_idle_bklogged;
+	unsigned long service_from_backlogged;
+	unsigned long service_from_wr;
+	unsigned long wr_start_at_switch_to_srt;
+	unsigned long split_time;
+	unsigned long first_IO_time;
+	unsigned long creation_time;
+	struct bfq_queue *waker_bfqq;
+	struct bfq_queue *tentative_waker_bfqq;
+	unsigned int num_waker_detections;
+	u64 waker_detection_started;
+	struct hlist_node woken_list_node;
+	struct hlist_head woken_list;
+	unsigned int actuator_idx;
+};
+
+struct bfq_group;
+
+struct bfq_data {
+	struct request_queue *queue;
+	struct list_head dispatch;
+	struct bfq_group *root_group;
+	struct rb_root_cached queue_weights_tree;
+	unsigned int num_groups_with_pending_reqs;
+	unsigned int busy_queues[3];
+	int wr_busy_queues;
+	int queued;
+	int tot_rq_in_driver;
+	int rq_in_driver[8];
+	bool nonrot_with_queueing;
+	int max_rq_in_driver;
+	int hw_tag_samples;
+	int hw_tag;
+	int budgets_assigned;
+	struct hrtimer idle_slice_timer;
+	struct bfq_queue *in_service_queue;
+	sector_t last_position;
+	sector_t in_serv_last_pos;
+	u64 last_completion;
+	struct bfq_queue *last_completed_rq_bfqq;
+	struct bfq_queue *last_bfqq_created;
+	u64 last_empty_occupied_ns;
+	bool wait_dispatch;
+	struct request *waited_rq;
+	bool rqs_injected;
+	u64 first_dispatch;
+	u64 last_dispatch;
+	ktime_t last_budget_start;
+	ktime_t last_idling_start;
+	unsigned long last_idling_start_jiffies;
+	int peak_rate_samples;
+	u32 sequential_samples;
+	u64 tot_sectors_dispatched;
+	u32 last_rq_max_size;
+	u64 delta_from_first;
+	u32 peak_rate;
+	int bfq_max_budget;
+	struct list_head active_list[8];
+	struct list_head idle_list;
+	u64 bfq_fifo_expire[2];
+	unsigned int bfq_back_penalty;
+	unsigned int bfq_back_max;
+	u32 bfq_slice_idle;
+	int bfq_user_max_budget;
+	unsigned int bfq_timeout;
+	bool strict_guarantees;
+	unsigned long last_ins_in_burst;
+	unsigned long bfq_burst_interval;
+	int burst_size;
+	struct bfq_entity *burst_parent_entity;
+	unsigned long bfq_large_burst_thresh;
+	bool large_burst;
+	struct hlist_head burst_list;
+	bool low_latency;
+	unsigned int bfq_wr_coeff;
+	unsigned int bfq_wr_rt_max_time;
+	unsigned int bfq_wr_min_idle_time;
+	unsigned long bfq_wr_min_inter_arr_async;
+	unsigned int bfq_wr_max_softrt_rate;
+	u64 rate_dur_prod;
+	struct bfq_queue oom_bfqq;
+	spinlock_t lock;
+	struct bfq_io_cq *bio_bic;
+	struct bfq_queue *bio_bfqq;
+	unsigned int word_depths[4];
+	unsigned int full_depth_shift;
+	unsigned int num_actuators;
+	sector_t sector[8];
+	sector_t nr_sectors[8];
+	struct blk_independent_access_range ia_ranges[8];
+	unsigned int actuator_load_threshold;
+};
+
+struct bfq_service_tree {
+	struct rb_root active;
+	struct rb_root idle;
+	struct bfq_entity *first_idle;
+	struct bfq_entity *last_idle;
+	u64 vtime;
+	unsigned long wsum;
+};
+
+struct bfq_sched_data {
+	struct bfq_entity *in_service_entity;
+	struct bfq_entity *next_in_service;
+	struct bfq_service_tree service_tree[3];
+	unsigned long bfq_class_idle_last_service;
+};
+
+struct bfqg_stats {
+	struct blkg_rwstat bytes;
+	struct blkg_rwstat ios;
+};
+
+struct bfq_group {
+	struct blkg_policy_data pd;
+	char blkg_path[128];
+	refcount_t ref;
+	struct bfq_entity entity;
+	struct bfq_sched_data sched_data;
+	struct bfq_data *bfqd;
+	struct bfq_queue *async_bfqq[128];
+	struct bfq_queue *async_idle_bfqq[8];
+	struct bfq_entity *my_entity;
+	int active_entities;
+	int num_queues_with_pending_reqs;
+	struct rb_root rq_pos_tree;
+	struct bfqg_stats stats;
+};
+
+struct bfq_iocq_bfqq_data {
+	bool saved_has_short_ttime;
+	bool saved_IO_bound;
+	u64 saved_io_start_time;
+	u64 saved_tot_idle_time;
+	bool saved_in_large_burst;
+	bool was_in_burst_list;
+	unsigned int saved_weight;
+	unsigned long saved_wr_coeff;
+	unsigned long saved_last_wr_start_finish;
+	unsigned long saved_service_from_wr;
+	unsigned long saved_wr_start_at_switch_to_srt;
+	unsigned int saved_wr_cur_max_time;
+	struct bfq_ttime saved_ttime;
+	u64 saved_last_serv_time_ns;
+	unsigned int saved_inject_limit;
+	unsigned long saved_decrease_time_jif;
+	struct bfq_queue *stable_merge_bfqq;
+	bool stably_merged;
+};
+
+struct bfq_io_cq {
+	struct io_cq icq;
+	struct bfq_queue *bfqq[16];
+	int ioprio;
+	uint64_t blkcg_serial_nr;
+	struct bfq_iocq_bfqq_data bfqq_data[8];
+	unsigned int requests;
+};
+
+struct bfq_group_data {
+	struct blkcg_policy_data pd;
+	unsigned int weight;
+};
+
+enum blk_zone_report_flags {
+	BLK_ZONE_REP_CAPACITY = 1,
+};
+
+struct zone_report_args {
+	struct blk_zone __attribute__((btf_type_tag("user"))) *zones;
+};
+
+struct blk_zone_report {
+	__u64 sector;
+	__u32 nr_zones;
+	__u32 flags;
+	struct blk_zone zones[0];
+};
+
+struct blk_zone_range {
+	__u64 sector;
+	__u64 nr_sectors;
+};
+
+struct blk_revalidate_zone_args {
+	struct gendisk *disk;
+	unsigned long *conv_zones_bitmap;
+	unsigned long *seq_zones_wlock;
+	unsigned int nr_zones;
+	sector_t zone_sectors;
+	sector_t sector;
+};
+
+typedef void (*btf_trace_wbt_stat)(void *, struct backing_dev_info *, struct blk_rq_stat *);
+
+typedef void (*btf_trace_wbt_lat)(void *, struct backing_dev_info *, unsigned long);
+
+typedef void (*btf_trace_wbt_step)(void *, struct backing_dev_info *, const char *, int, unsigned long, unsigned int, unsigned int, unsigned int);
+
+typedef void (*btf_trace_wbt_timer)(void *, struct backing_dev_info *, unsigned int, int, unsigned int);
+
+enum {
+	WBT_STATE_ON_DEFAULT = 1,
+	WBT_STATE_ON_MANUAL = 2,
+	WBT_STATE_OFF_DEFAULT = 3,
+	WBT_STATE_OFF_MANUAL = 4,
+};
+
+enum {
+	WBT_RWQ_BG = 0,
+	WBT_RWQ_KSWAPD = 1,
+	WBT_RWQ_DISCARD = 2,
+	WBT_NUM_RWQ = 3,
+};
+
+enum {
+	RWB_DEF_DEPTH = 16,
+	RWB_WINDOW_NSEC = 100000000,
+	RWB_MIN_WRITE_SAMPLES = 3,
+	RWB_UNKNOWN_BUMP = 5,
+};
+
+enum {
+	LAT_OK = 1,
+	LAT_UNKNOWN = 2,
+	LAT_UNKNOWN_WRITES = 3,
+	LAT_EXCEEDED = 4,
+};
+
+enum wbt_flags {
+	WBT_TRACKED = 1,
+	WBT_READ = 2,
+	WBT_KSWAPD = 4,
+	WBT_DISCARD = 8,
+	WBT_NR_BITS = 4,
+};
+
+struct trace_event_raw_wbt_stat {
+	struct trace_entry ent;
+	char name[32];
+	s64 rmean;
+	u64 rmin;
+	u64 rmax;
+	s64 rnr_samples;
+	s64 rtime;
+	s64 wmean;
+	u64 wmin;
+	u64 wmax;
+	s64 wnr_samples;
+	s64 wtime;
+	char __data[0];
+};
+
+struct trace_event_raw_wbt_lat {
+	struct trace_entry ent;
+	char name[32];
+	unsigned long lat;
+	char __data[0];
+};
+
+struct trace_event_raw_wbt_step {
+	struct trace_entry ent;
+	char name[32];
+	const char *msg;
+	int step;
+	unsigned long window;
+	unsigned int bg;
+	unsigned int normal;
+	unsigned int max;
+	char __data[0];
+};
+
+struct trace_event_raw_wbt_timer {
+	struct trace_entry ent;
+	char name[32];
+	unsigned int status;
+	int step;
+	unsigned int inflight;
+	char __data[0];
+};
+
+struct rq_wb {
+	unsigned int wb_background;
+	unsigned int wb_normal;
+	short enable_state;
+	unsigned int unknown_cnt;
+	u64 win_nsec;
+	u64 cur_win_nsec;
+	struct blk_stat_callback *cb;
+	u64 sync_issue;
+	void *sync_cookie;
+	unsigned int wc;
+	unsigned long last_issue;
+	unsigned long last_comp;
+	unsigned long min_lat_nsec;
+	struct rq_qos rqos;
+	struct rq_wait rq_wait[3];
+	struct rq_depth rq_depth;
+};
+
+struct wbt_wait_data {
+	struct rq_wb *rwb;
+	enum wbt_flags wb_acct;
+	blk_opf_t opf;
+};
+
+struct trace_event_data_offsets_wbt_stat {};
+
+struct trace_event_data_offsets_wbt_lat {};
+
+struct trace_event_data_offsets_wbt_step {};
+
+struct trace_event_data_offsets_wbt_timer {};
+
+struct show_busy_params {
+	struct seq_file *m;
+	struct blk_mq_hw_ctx *hctx;
+};
+
+struct blk_crypto_mode {
+	const char *name;
+	const char *cipher_str;
+	unsigned int keysize;
+	unsigned int security_strength;
+	unsigned int ivsize;
+};
+
+struct blk_crypto_ll_ops {
+	int (*keyslot_program)(struct blk_crypto_profile *, const struct blk_crypto_key *, unsigned int);
+	int (*keyslot_evict)(struct blk_crypto_profile *, const struct blk_crypto_key *, unsigned int);
+	int (*derive_sw_secret)(struct blk_crypto_profile *, const u8 *, size_t, u8 *);
+};
+
+struct blk_crypto_profile {
+	struct blk_crypto_ll_ops ll_ops;
+	unsigned int max_dun_bytes_supported;
+	unsigned int key_types_supported;
+	unsigned int modes_supported[5];
+	struct device *dev;
+	unsigned int num_slots;
+	struct rw_semaphore lock;
+	struct lock_class_key lockdep_key;
+	wait_queue_head_t idle_slots_wait_queue;
+	struct list_head idle_slots;
+	spinlock_t idle_slots_lock;
+	struct hlist_head *slot_hashtable;
+	unsigned int log_slot_ht_size;
+	struct blk_crypto_keyslot *slots;
+};
+
+struct blk_crypto_keyslot {
+	atomic_t slot_refs;
+	struct list_head idle_slot_node;
+	struct hlist_node hash_node;
+	const struct blk_crypto_key *key;
+	struct blk_crypto_profile *profile;
+};
+
+struct blk_crypto_attr {
+	struct attribute attr;
+	ssize_t (*show)(struct blk_crypto_profile *, struct blk_crypto_attr *, char *);
+};
+
+struct blk_crypto_kobj {
+	struct kobject kobj;
+	struct blk_crypto_profile *profile;
+};
+
+struct blk_crypto_fallback_keyslot {
+	enum blk_crypto_mode_num crypto_mode;
+	struct crypto_skcipher *tfms[5];
+};
+
+struct bio_fallback_crypt_ctx {
+	struct bio_crypt_ctx crypt_ctx;
+	struct bvec_iter crypt_iter;
+	union {
+		struct {
+			struct work_struct work;
+			struct bio *bio;
+		};
+		struct {
+			void *bi_private_orig;
+			bio_end_io_t *bi_end_io_orig;
+		};
+	};
+};
+
+union blk_crypto_iv {
+	__le64 dun[4];
+	u8 bytes[32];
+};
+
+struct bd_holder_disk {
+	struct list_head list;
+	struct kobject *holder_dir;
+	int refcnt;
+};
+
+struct io_cache_entry {
+	struct io_wq_work_node node;
+};
+
+struct io_rsrc_put {
+	u64 tag;
+	union {
+		void *rsrc;
+		struct file *file;
+		struct io_mapped_ubuf *buf;
+	};
+};
+
+struct io_rsrc_node {
+	union {
+		struct io_cache_entry cache;
+		struct io_ring_ctx *ctx;
+	};
+	int refs;
+	bool empty;
+	u16 type;
+	struct list_head node;
+	struct io_rsrc_put item;
+};
+
+struct io_mapped_ubuf {
+	u64 ubuf;
+	u64 ubuf_end;
+	unsigned int nr_bvecs;
+	unsigned long acct_pages;
+	struct bio_vec bvec[0];
+};
+
+struct io_buffer {
+	struct list_head list;
+	__u64 addr;
+	__u32 len;
+	__u16 bid;
+	__u16 bgid;
+};
+
+struct io_uring_buf_ring;
+
+struct io_buffer_list {
+	union {
+		struct list_head buf_list;
+		struct {
+			struct page **buf_pages;
+			struct io_uring_buf_ring *buf_ring;
+		};
+		struct callback_head rcu;
+	};
+	__u16 bgid;
+	__u16 buf_nr_pages;
+	__u16 nr_entries;
+	__u16 head;
+	__u16 mask;
+	atomic_t refs;
+	__u8 is_mapped;
+	__u8 is_mmap;
+};
+
+struct io_uring_buf {
+	__u64 addr;
+	__u32 len;
+	__u16 bid;
+	__u16 resv;
+};
+
+struct io_uring_buf_ring {
+	union {
+		struct {
+			__u64 resv1;
+			__u32 resv2;
+			__u16 resv3;
+			__u16 tail;
+		};
+		struct {
+			struct {} __empty_bufs;
+			struct io_uring_buf bufs[0];
+		};
+	};
+};
+
+struct io_poll {
+	struct file *file;
+	struct wait_queue_head *head;
+	__poll_t events;
+	int retries;
+	struct wait_queue_entry wait;
+};
+
+struct async_poll {
+	union {
+		struct io_poll poll;
+		struct io_cache_entry cache;
+	};
+	struct io_poll *double_poll;
+};
+
+struct io_sq_data {
+	refcount_t refs;
+	atomic_t park_pending;
+	struct mutex lock;
+	struct list_head ctx_list;
+	struct task_struct *thread;
+	struct wait_queue_head wait;
+	unsigned int sq_thread_idle;
+	int sq_cpu;
+	pid_t task_pid;
+	pid_t task_tgid;
+	unsigned long state;
+	struct completion exited;
+};
+
+struct io_rsrc_data {
+	struct io_ring_ctx *ctx;
+	u64 **tags;
+	unsigned int nr;
+	u16 rsrc_type;
+	bool quiesce;
+};
+
+typedef void (*btf_trace_io_uring_create)(void *, int, void *, u32, u32, u32);
+
+typedef void (*btf_trace_io_uring_register)(void *, void *, unsigned int, unsigned int, unsigned int, long);
+
+typedef void (*btf_trace_io_uring_file_get)(void *, struct io_kiocb *, int);
+
+typedef void (*btf_trace_io_uring_queue_async_work)(void *, struct io_kiocb *, int);
+
+typedef void (*btf_trace_io_uring_defer)(void *, struct io_kiocb *);
+
+typedef void (*btf_trace_io_uring_link)(void *, struct io_kiocb *, struct io_kiocb *);
+
+typedef void (*btf_trace_io_uring_cqring_wait)(void *, void *, int);
+
+typedef void (*btf_trace_io_uring_fail_link)(void *, struct io_kiocb *, struct io_kiocb *);
+
+typedef void (*btf_trace_io_uring_complete)(void *, void *, void *, u64, int, unsigned int, u64, u64);
+
+typedef void (*btf_trace_io_uring_submit_req)(void *, struct io_kiocb *);
+
+typedef void (*btf_trace_io_uring_poll_arm)(void *, struct io_kiocb *, int, int);
+
+typedef void (*btf_trace_io_uring_task_add)(void *, struct io_kiocb *, int);
+
+typedef void (*btf_trace_io_uring_req_failed)(void *, const struct io_uring_sqe *, struct io_kiocb *, int);
+
+typedef void (*btf_trace_io_uring_cqe_overflow)(void *, void *, unsigned long long, s32, u32, void *);
+
+typedef void (*btf_trace_io_uring_task_work_run)(void *, void *, unsigned int, unsigned int);
+
+typedef void (*btf_trace_io_uring_short_write)(void *, void *, u64, u64, u64);
+
+typedef void (*btf_trace_io_uring_local_work_run)(void *, void *, int, unsigned int);
+
+struct creds;
+
+enum {
+	REQ_F_FIXED_FILE = 1,
+	REQ_F_IO_DRAIN = 2,
+	REQ_F_LINK = 4,
+	REQ_F_HARDLINK = 8,
+	REQ_F_FORCE_ASYNC = 16,
+	REQ_F_BUFFER_SELECT = 32,
+	REQ_F_CQE_SKIP = 64,
+	REQ_F_FAIL = 256,
+	REQ_F_INFLIGHT = 512,
+	REQ_F_CUR_POS = 1024,
+	REQ_F_NOWAIT = 2048,
+	REQ_F_LINK_TIMEOUT = 4096,
+	REQ_F_NEED_CLEANUP = 8192,
+	REQ_F_POLLED = 16384,
+	REQ_F_BUFFER_SELECTED = 32768,
+	REQ_F_BUFFER_RING = 65536,
+	REQ_F_REISSUE = 131072,
+	REQ_F_SUPPORT_NOWAIT = 536870912,
+	REQ_F_ISREG = 1073741824,
+	REQ_F_CREDS = 262144,
+	REQ_F_REFCOUNT = 524288,
+	REQ_F_ARM_LTIMEOUT = 1048576,
+	REQ_F_ASYNC_DATA = 2097152,
+	REQ_F_SKIP_LINK_CQES = 4194304,
+	REQ_F_SINGLE_POLL = 8388608,
+	REQ_F_DOUBLE_POLL = 16777216,
+	REQ_F_PARTIAL_IO = 33554432,
+	REQ_F_APOLL_MULTISHOT = 67108864,
+	REQ_F_CLEAR_POLLIN = 134217728,
+	REQ_F_HASH_LOCKED = 268435456,
+};
+
+enum {
+	IO_WQ_WORK_CANCEL = 1,
+	IO_WQ_WORK_HASHED = 2,
+	IO_WQ_WORK_UNBOUND = 4,
+	IO_WQ_WORK_CONCURRENT = 16,
+	IO_WQ_HASH_SHIFT = 24,
+};
+
+enum {
+	IO_CHECK_CQ_OVERFLOW_BIT = 0,
+	IO_CHECK_CQ_DROPPED_BIT = 1,
+};
+
+enum io_uring_cmd_flags {
+	IO_URING_F_COMPLETE_DEFER = 1,
+	IO_URING_F_UNLOCKED = 2,
+	IO_URING_F_MULTISHOT = 4,
+	IO_URING_F_IOWQ = 8,
+	IO_URING_F_NONBLOCK = -2147483648,
+	IO_URING_F_SQE128 = 256,
+	IO_URING_F_CQE32 = 512,
+	IO_URING_F_IOPOLL = 1024,
+};
+
+enum {
+	IO_APOLL_OK = 0,
+	IO_APOLL_ABORTED = 1,
+	IO_APOLL_READY = 2,
+};
+
+enum {
+	IO_EVENTFD_OP_SIGNAL_BIT = 0,
+	IO_EVENTFD_OP_FREE_BIT = 1,
+};
+
+enum {
+	IORING_CQE_BUFFER_SHIFT = 16,
+};
+
+enum {
+	IOU_F_TWQ_LAZY_WAKE = 1,
+};
+
+enum {
+	IOU_OK = 0,
+	IOU_ISSUE_SKIP_COMPLETE = -529,
+	IOU_REQUEUE = -3072,
+	IOU_STOP_MULTISHOT = -125,
+};
+
+enum {
+	REQ_F_FIXED_FILE_BIT = 0,
+	REQ_F_IO_DRAIN_BIT = 1,
+	REQ_F_LINK_BIT = 2,
+	REQ_F_HARDLINK_BIT = 3,
+	REQ_F_FORCE_ASYNC_BIT = 4,
+	REQ_F_BUFFER_SELECT_BIT = 5,
+	REQ_F_CQE_SKIP_BIT = 6,
+	REQ_F_FAIL_BIT = 8,
+	REQ_F_INFLIGHT_BIT = 9,
+	REQ_F_CUR_POS_BIT = 10,
+	REQ_F_NOWAIT_BIT = 11,
+	REQ_F_LINK_TIMEOUT_BIT = 12,
+	REQ_F_NEED_CLEANUP_BIT = 13,
+	REQ_F_POLLED_BIT = 14,
+	REQ_F_BUFFER_SELECTED_BIT = 15,
+	REQ_F_BUFFER_RING_BIT = 16,
+	REQ_F_REISSUE_BIT = 17,
+	REQ_F_CREDS_BIT = 18,
+	REQ_F_REFCOUNT_BIT = 19,
+	REQ_F_ARM_LTIMEOUT_BIT = 20,
+	REQ_F_ASYNC_DATA_BIT = 21,
+	REQ_F_SKIP_LINK_CQES_BIT = 22,
+	REQ_F_SINGLE_POLL_BIT = 23,
+	REQ_F_DOUBLE_POLL_BIT = 24,
+	REQ_F_PARTIAL_IO_BIT = 25,
+	REQ_F_APOLL_MULTISHOT_BIT = 26,
+	REQ_F_CLEAR_POLLIN_BIT = 27,
+	REQ_F_HASH_LOCKED_BIT = 28,
+	REQ_F_SUPPORT_NOWAIT_BIT = 29,
+	REQ_F_ISREG_BIT = 30,
+	__REQ_F_LAST_BIT = 31,
+};
+
+enum io_uring_op {
+	IORING_OP_NOP = 0,
+	IORING_OP_READV = 1,
+	IORING_OP_WRITEV = 2,
+	IORING_OP_FSYNC = 3,
+	IORING_OP_READ_FIXED = 4,
+	IORING_OP_WRITE_FIXED = 5,
+	IORING_OP_POLL_ADD = 6,
+	IORING_OP_POLL_REMOVE = 7,
+	IORING_OP_SYNC_FILE_RANGE = 8,
+	IORING_OP_SENDMSG = 9,
+	IORING_OP_RECVMSG = 10,
+	IORING_OP_TIMEOUT = 11,
+	IORING_OP_TIMEOUT_REMOVE = 12,
+	IORING_OP_ACCEPT = 13,
+	IORING_OP_ASYNC_CANCEL = 14,
+	IORING_OP_LINK_TIMEOUT = 15,
+	IORING_OP_CONNECT = 16,
+	IORING_OP_FALLOCATE = 17,
+	IORING_OP_OPENAT = 18,
+	IORING_OP_CLOSE = 19,
+	IORING_OP_FILES_UPDATE = 20,
+	IORING_OP_STATX = 21,
+	IORING_OP_READ = 22,
+	IORING_OP_WRITE = 23,
+	IORING_OP_FADVISE = 24,
+	IORING_OP_MADVISE = 25,
+	IORING_OP_SEND = 26,
+	IORING_OP_RECV = 27,
+	IORING_OP_OPENAT2 = 28,
+	IORING_OP_EPOLL_CTL = 29,
+	IORING_OP_SPLICE = 30,
+	IORING_OP_PROVIDE_BUFFERS = 31,
+	IORING_OP_REMOVE_BUFFERS = 32,
+	IORING_OP_TEE = 33,
+	IORING_OP_SHUTDOWN = 34,
+	IORING_OP_RENAMEAT = 35,
+	IORING_OP_UNLINKAT = 36,
+	IORING_OP_MKDIRAT = 37,
+	IORING_OP_SYMLINKAT = 38,
+	IORING_OP_LINKAT = 39,
+	IORING_OP_MSG_RING = 40,
+	IORING_OP_FSETXATTR = 41,
+	IORING_OP_SETXATTR = 42,
+	IORING_OP_FGETXATTR = 43,
+	IORING_OP_GETXATTR = 44,
+	IORING_OP_SOCKET = 45,
+	IORING_OP_URING_CMD = 46,
+	IORING_OP_SEND_ZC = 47,
+	IORING_OP_SENDMSG_ZC = 48,
+	IORING_OP_LAST = 49,
+};
+
+enum {
+	IOSQE_FIXED_FILE_BIT = 0,
+	IOSQE_IO_DRAIN_BIT = 1,
+	IOSQE_IO_LINK_BIT = 2,
+	IOSQE_IO_HARDLINK_BIT = 3,
+	IOSQE_ASYNC_BIT = 4,
+	IOSQE_BUFFER_SELECT_BIT = 5,
+	IOSQE_CQE_SKIP_SUCCESS_BIT = 6,
+};
+
+enum io_wq_cancel {
+	IO_WQ_CANCEL_OK = 0,
+	IO_WQ_CANCEL_RUNNING = 1,
+	IO_WQ_CANCEL_NOTFOUND = 2,
+};
+
+enum {
+	IORING_REGISTER_BUFFERS = 0,
+	IORING_UNREGISTER_BUFFERS = 1,
+	IORING_REGISTER_FILES = 2,
+	IORING_UNREGISTER_FILES = 3,
+	IORING_REGISTER_EVENTFD = 4,
+	IORING_UNREGISTER_EVENTFD = 5,
+	IORING_REGISTER_FILES_UPDATE = 6,
+	IORING_REGISTER_EVENTFD_ASYNC = 7,
+	IORING_REGISTER_PROBE = 8,
+	IORING_REGISTER_PERSONALITY = 9,
+	IORING_UNREGISTER_PERSONALITY = 10,
+	IORING_REGISTER_RESTRICTIONS = 11,
+	IORING_REGISTER_ENABLE_RINGS = 12,
+	IORING_REGISTER_FILES2 = 13,
+	IORING_REGISTER_FILES_UPDATE2 = 14,
+	IORING_REGISTER_BUFFERS2 = 15,
+	IORING_REGISTER_BUFFERS_UPDATE = 16,
+	IORING_REGISTER_IOWQ_AFF = 17,
+	IORING_UNREGISTER_IOWQ_AFF = 18,
+	IORING_REGISTER_IOWQ_MAX_WORKERS = 19,
+	IORING_REGISTER_RING_FDS = 20,
+	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 = 26,
+	IORING_REGISTER_USE_REGISTERED_RING = 2147483648,
+};
+
+enum {
+	IORING_RSRC_FILE = 0,
+	IORING_RSRC_BUFFER = 1,
+};
+
+enum {
+	IORING_RESTRICTION_REGISTER_OP = 0,
+	IORING_RESTRICTION_SQE_OP = 1,
+	IORING_RESTRICTION_SQE_FLAGS_ALLOWED = 2,
+	IORING_RESTRICTION_SQE_FLAGS_REQUIRED = 3,
+	IORING_RESTRICTION_LAST = 4,
+};
+
+struct trace_event_raw_io_uring_create {
+	struct trace_entry ent;
+	int fd;
+	void *ctx;
+	u32 sq_entries;
+	u32 cq_entries;
+	u32 flags;
+	char __data[0];
+};
+
+struct trace_event_raw_io_uring_register {
+	struct trace_entry ent;
+	void *ctx;
+	unsigned int opcode;
+	unsigned int nr_files;
+	unsigned int nr_bufs;
+	long ret;
+	char __data[0];
+};
+
+struct trace_event_raw_io_uring_file_get {
+	struct trace_entry ent;
+	void *ctx;
+	void *req;
+	u64 user_data;
+	int fd;
+	char __data[0];
+};
+
+struct trace_event_raw_io_uring_queue_async_work {
+	struct trace_entry ent;
+	void *ctx;
+	void *req;
+	u64 user_data;
+	u8 opcode;
+	unsigned int flags;
+	struct io_wq_work *work;
+	int rw;
+	u32 __data_loc_op_str;
+	char __data[0];
+};
+
+struct trace_event_raw_io_uring_defer {
+	struct trace_entry ent;
+	void *ctx;
+	void *req;
+	unsigned long long data;
+	u8 opcode;
+	u32 __data_loc_op_str;
+	char __data[0];
+};
+
+struct trace_event_raw_io_uring_link {
+	struct trace_entry ent;
+	void *ctx;
+	void *req;
+	void *target_req;
+	char __data[0];
+};
+
+struct trace_event_raw_io_uring_cqring_wait {
+	struct trace_entry ent;
+	void *ctx;
+	int min_events;
+	char __data[0];
+};
+
+struct trace_event_raw_io_uring_fail_link {
+	struct trace_entry ent;
+	void *ctx;
+	void *req;
+	unsigned long long user_data;
+	u8 opcode;
+	void *link;
+	u32 __data_loc_op_str;
+	char __data[0];
+};
+
+struct trace_event_raw_io_uring_complete {
+	struct trace_entry ent;
+	void *ctx;
+	void *req;
+	u64 user_data;
+	int res;
+	unsigned int cflags;
+	u64 extra1;
+	u64 extra2;
+	char __data[0];
+};
+
+struct trace_event_raw_io_uring_submit_req {
+	struct trace_entry ent;
+	void *ctx;
+	void *req;
+	unsigned long long user_data;
+	u8 opcode;
+	u32 flags;
+	bool sq_thread;
+	u32 __data_loc_op_str;
+	char __data[0];
+};
+
+struct trace_event_raw_io_uring_poll_arm {
+	struct trace_entry ent;
+	void *ctx;
+	void *req;
+	unsigned long long user_data;
+	u8 opcode;
+	int mask;
+	int events;
+	u32 __data_loc_op_str;
+	char __data[0];
+};
+
+struct trace_event_raw_io_uring_task_add {
+	struct trace_entry ent;
+	void *ctx;
+	void *req;
+	unsigned long long user_data;
+	u8 opcode;
+	int mask;
+	u32 __data_loc_op_str;
+	char __data[0];
+};
+
+struct trace_event_raw_io_uring_req_failed {
+	struct trace_entry ent;
+	void *ctx;
+	void *req;
+	unsigned long long user_data;
+	u8 opcode;
+	u8 flags;
+	u8 ioprio;
+	u64 off;
+	u64 addr;
+	u32 len;
+	u32 op_flags;
+	u16 buf_index;
+	u16 personality;
+	u32 file_index;
+	u64 pad1;
+	u64 addr3;
+	int error;
+	u32 __data_loc_op_str;
+	char __data[0];
+};
+
+struct trace_event_raw_io_uring_cqe_overflow {
+	struct trace_entry ent;
+	void *ctx;
+	unsigned long long user_data;
+	s32 res;
+	u32 cflags;
+	void *ocqe;
+	char __data[0];
+};
+
+struct trace_event_raw_io_uring_task_work_run {
+	struct trace_entry ent;
+	void *tctx;
+	unsigned int count;
+	unsigned int loops;
+	char __data[0];
+};
+
+struct trace_event_raw_io_uring_short_write {
+	struct trace_entry ent;
+	void *ctx;
+	u64 fpos;
+	u64 wanted;
+	u64 got;
+	char __data[0];
+};
+
+struct trace_event_raw_io_uring_local_work_run {
+	struct trace_entry ent;
+	void *ctx;
+	int count;
+	unsigned int loops;
+	char __data[0];
+};
+
+struct io_defer_entry {
+	struct list_head list;
+	struct io_kiocb *req;
+	u32 seq;
+};
+
+struct io_tctx_node {
+	struct list_head ctx_node;
+	struct task_struct *task;
+	struct io_ring_ctx *ctx;
+};
+
+struct io_overflow_cqe {
+	struct list_head list;
+	struct io_uring_cqe cqe;
+};
+
+struct io_wait_queue {
+	struct wait_queue_entry wq;
+	struct io_ring_ctx *ctx;
+	unsigned int cq_tail;
+	unsigned int nr_timeouts;
+	ktime_t timeout;
+};
+
+struct io_tctx_exit {
+	struct callback_head task_work;
+	struct completion completion;
+	struct io_ring_ctx *ctx;
+};
+
+struct io_sqring_offsets {
+	__u32 head;
+	__u32 tail;
+	__u32 ring_mask;
+	__u32 ring_entries;
+	__u32 flags;
+	__u32 dropped;
+	__u32 array;
+	__u32 resv1;
+	__u64 user_addr;
+};
+
+struct io_cqring_offsets {
+	__u32 head;
+	__u32 tail;
+	__u32 ring_mask;
+	__u32 ring_entries;
+	__u32 overflow;
+	__u32 cqes;
+	__u32 flags;
+	__u32 resv1;
+	__u64 user_addr;
+};
+
+struct io_uring_params {
+	__u32 sq_entries;
+	__u32 cq_entries;
+	__u32 flags;
+	__u32 sq_thread_cpu;
+	__u32 sq_thread_idle;
+	__u32 features;
+	__u32 wq_fd;
+	__u32 resv[3];
+	struct io_sqring_offsets sq_off;
+	struct io_cqring_offsets cq_off;
+};
+
+struct trace_event_data_offsets_io_uring_queue_async_work {
+	u32 op_str;
+};
+
+struct trace_event_data_offsets_io_uring_defer {
+	u32 op_str;
+};
+
+struct trace_event_data_offsets_io_uring_fail_link {
+	u32 op_str;
+};
+
+struct trace_event_data_offsets_io_uring_submit_req {
+	u32 op_str;
+};
+
+struct trace_event_data_offsets_io_uring_poll_arm {
+	u32 op_str;
+};
+
+struct trace_event_data_offsets_io_uring_task_add {
+	u32 op_str;
+};
+
+struct trace_event_data_offsets_io_uring_req_failed {
+	u32 op_str;
+};
+
+struct io_cold_def {
+	unsigned short async_size;
+	const char *name;
+	int (*prep_async)(struct io_kiocb *);
+	void (*cleanup)(struct io_kiocb *);
+	void (*fail)(struct io_kiocb *);
+};
+
+struct io_issue_def {
+	unsigned int needs_file: 1;
+	unsigned int plug: 1;
+	unsigned int hash_reg_file: 1;
+	unsigned int unbound_nonreg_file: 1;
+	unsigned int pollin: 1;
+	unsigned int pollout: 1;
+	unsigned int poll_exclusive: 1;
+	unsigned int buffer_select: 1;
+	unsigned int not_supported: 1;
+	unsigned int audit_skip: 1;
+	unsigned int ioprio: 1;
+	unsigned int iopoll: 1;
+	unsigned int iopoll_queue: 1;
+	unsigned int manual_alloc: 1;
+	int (*issue)(struct io_kiocb *, unsigned int);
+	int (*prep)(struct io_kiocb *, const struct io_uring_sqe *);
+};
+
+typedef bool work_cancel_fn(struct io_wq_work *, void *);
+
+struct io_uring_getevents_arg {
+	__u64 sigmask;
+	__u32 sigmask_sz;
+	__u32 pad;
+	__u64 ts;
+};
+
+struct io_uring_file_index_range {
+	__u32 off;
+	__u32 len;
+	__u64 resv;
+};
+
+struct trace_event_data_offsets_io_uring_create {};
+
+struct trace_event_data_offsets_io_uring_register {};
+
+struct trace_event_data_offsets_io_uring_file_get {};
+
+struct trace_event_data_offsets_io_uring_link {};
+
+struct trace_event_data_offsets_io_uring_cqring_wait {};
+
+struct trace_event_data_offsets_io_uring_complete {};
+
+struct trace_event_data_offsets_io_uring_cqe_overflow {};
+
+struct trace_event_data_offsets_io_uring_task_work_run {};
+
+struct trace_event_data_offsets_io_uring_short_write {};
+
+struct trace_event_data_offsets_io_uring_local_work_run {};
+
+struct io_task_cancel {
+	struct task_struct *task;
+	bool all;
+};
+
+struct io_uring_probe_op {
+	__u8 op;
+	__u8 resv;
+	__u16 flags;
+	__u32 resv2;
+};
+
+struct io_uring_probe {
+	__u8 last_op;
+	__u8 ops_len;
+	__u16 resv;
+	__u32 resv2[3];
+	struct io_uring_probe_op ops[0];
+};
+
+struct io_uring_restriction {
+	__u16 opcode;
+	union {
+		__u8 register_op;
+		__u8 sqe_op;
+		__u8 sqe_flags;
+	};
+	__u8 resv;
+	__u32 resv2[3];
+};
+
+struct io_xattr {
+	struct file *file;
+	struct xattr_ctx ctx;
+	struct filename *filename;
+};
+
+struct io_rename {
+	struct file *file;
+	int old_dfd;
+	int new_dfd;
+	struct filename *oldpath;
+	struct filename *newpath;
+	int flags;
+};
+
+struct io_unlink {
+	struct file *file;
+	int dfd;
+	int flags;
+	struct filename *filename;
+};
+
+struct io_mkdir {
+	struct file *file;
+	int dfd;
+	umode_t mode;
+	struct filename *filename;
+};
+
+struct io_link {
+	struct file *file;
+	int old_dfd;
+	int new_dfd;
+	struct filename *oldpath;
+	struct filename *newpath;
+	int flags;
+};
+
+struct io_splice {
+	struct file *file_out;
+	loff_t off_out;
+	loff_t off_in;
+	u64 len;
+	int splice_fd_in;
+	unsigned int flags;
+};
+
+struct io_sync {
+	struct file *file;
+	loff_t len;
+	loff_t off;
+	int flags;
+	int mode;
+};
+
+struct io_madvise {
+	struct file *file;
+	u64 addr;
+	u32 len;
+	u32 advice;
+};
+
+struct io_fadvise {
+	struct file *file;
+	u64 offset;
+	u32 len;
+	u32 advice;
+};
+
+struct io_open {
+	struct file *file;
+	int dfd;
+	u32 file_slot;
+	struct filename *filename;
+	struct open_how how;
+	unsigned long nofile;
+};
+
+struct io_close {
+	struct file *file;
+	int fd;
+	u32 file_slot;
+};
+
+enum {
+	SOCKET_URING_OP_SIOCINQ = 0,
+	SOCKET_URING_OP_SIOCOUTQ = 1,
+};
+
+struct io_epoll {
+	struct file *file;
+	int epfd;
+	int op;
+	int fd;
+	struct epoll_event event;
+};
+
+struct io_statx {
+	struct file *file;
+	int dfd;
+	unsigned int mask;
+	unsigned int flags;
+	struct filename *filename;
+	struct statx __attribute__((btf_type_tag("user"))) *buffer;
+};
+
+enum {
+	SKBFL_ZEROCOPY_ENABLE = 1,
+	SKBFL_SHARED_FRAG = 2,
+	SKBFL_PURE_ZEROCOPY = 4,
+	SKBFL_DONT_ORPHAN = 8,
+	SKBFL_MANAGED_FRAG_REFS = 16,
+};
+
+struct io_shutdown {
+	struct file *file;
+	int how;
+};
+
+struct compat_msghdr;
+
+struct user_msghdr;
+
+struct io_sr_msg {
+	struct file *file;
+	union {
+		struct compat_msghdr __attribute__((btf_type_tag("user"))) *umsg_compat;
+		struct user_msghdr __attribute__((btf_type_tag("user"))) *umsg;
+		void __attribute__((btf_type_tag("user"))) *buf;
+	};
+	unsigned int len;
+	unsigned int done_io;
+	unsigned int msg_flags;
+	unsigned int nr_multishot_loops;
+	u16 flags;
+	u16 addr_len;
+	u16 buf_group;
+	void __attribute__((btf_type_tag("user"))) *addr;
+	void __attribute__((btf_type_tag("user"))) *msg_control;
+	struct io_kiocb *notif;
+};
+
+struct compat_msghdr {
+	compat_uptr_t msg_name;
+	compat_int_t msg_namelen;
+	compat_uptr_t msg_iov;
+	compat_size_t msg_iovlen;
+	compat_uptr_t msg_control;
+	compat_size_t msg_controllen;
+	compat_uint_t msg_flags;
+};
+
+struct user_msghdr {
+	void __attribute__((btf_type_tag("user"))) *msg_name;
+	int msg_namelen;
+	struct iovec __attribute__((btf_type_tag("user"))) *msg_iov;
+	__kernel_size_t msg_iovlen;
+	void __attribute__((btf_type_tag("user"))) *msg_control;
+	__kernel_size_t msg_controllen;
+	unsigned int msg_flags;
+};
+
+struct io_accept {
+	struct file *file;
+	struct sockaddr __attribute__((btf_type_tag("user"))) *addr;
+	int __attribute__((btf_type_tag("user"))) *addr_len;
+	int flags;
+	u32 file_slot;
+	unsigned long nofile;
+};
+
+struct io_socket {
+	struct file *file;
+	int domain;
+	int type;
+	int protocol;
+	int flags;
+	u32 file_slot;
+	unsigned long nofile;
+};
+
+struct io_connect {
+	struct file *file;
+	struct sockaddr __attribute__((btf_type_tag("user"))) *addr;
+	int addr_len;
+	bool in_progress;
+	bool seen_econnaborted;
+};
+
+struct io_async_msghdr {
+	union {
+		struct iovec fast_iov[8];
+		struct {
+			struct iovec fast_iov_one;
+			__kernel_size_t controllen;
+			int namelen;
+			__kernel_size_t payloadlen;
+		};
+		struct io_cache_entry cache;
+	};
+	struct iovec *free_iov;
+	struct sockaddr __attribute__((btf_type_tag("user"))) *uaddr;
+	struct msghdr msg;
+	struct __kernel_sockaddr_storage addr;
+};
+
+struct io_notif_data {
+	struct file *file;
+	struct ubuf_info uarg;
+	unsigned long account_pages;
+	bool zc_report;
+	bool zc_used;
+	bool zc_copied;
+};
+
+struct io_uring_recvmsg_out {
+	__u32 namelen;
+	__u32 controllen;
+	__u32 payloadlen;
+	__u32 flags;
+};
+
+struct io_recvmsg_multishot_hdr {
+	struct io_uring_recvmsg_out msg;
+	struct __kernel_sockaddr_storage addr;
+};
+
+struct io_async_connect {
+	struct __kernel_sockaddr_storage address;
+};
+
+typedef s32 compat_ssize_t;
+
+enum {
+	IORING_MSG_DATA = 0,
+	IORING_MSG_SEND_FD = 1,
+};
+
+struct io_msg {
+	struct file *file;
+	struct file *src_file;
+	struct callback_head tw;
+	u64 user_data;
+	u32 len;
+	u32 cmd;
+	u32 src_fd;
+	union {
+		u32 dst_fd;
+		u32 cqe_flags;
+	};
+	u32 flags;
+};
+
+struct io_timeout {
+	struct file *file;
+	u32 off;
+	u32 target_seq;
+	u32 repeats;
+	struct list_head list;
+	struct io_kiocb *head;
+	struct io_kiocb *prev;
+};
+
+struct io_timeout_rem {
+	struct file *file;
+	u64 addr;
+	struct timespec64 ts;
+	u32 flags;
+	bool ltimeout;
+};
+
+struct io_timeout_data {
+	struct io_kiocb *req;
+	struct hrtimer timer;
+	struct timespec64 ts;
+	enum hrtimer_mode mode;
+	u32 flags;
+};
+
+struct io_cancel_data {
+	struct io_ring_ctx *ctx;
+	union {
+		u64 data;
+		struct file *file;
+	};
+	u8 opcode;
+	u32 flags;
+	int seq;
+};
+
+enum {
+	IO_SQ_THREAD_SHOULD_STOP = 0,
+	IO_SQ_THREAD_SHOULD_PARK = 1,
+};
+
+typedef void io_wq_work_fn(struct io_wq_work *);
+
+typedef struct io_wq_work *free_work_fn(struct io_wq_work *);
+
+struct io_wq_data {
+	struct io_wq_hash *hash;
+	struct task_struct *task;
+	io_wq_work_fn *do_work;
+	free_work_fn *free_work;
+};
+
+struct io_uring_rsrc_update {
+	__u32 offset;
+	__u32 resv;
+	__u64 data;
+};
+
+enum {
+	IOU_POLL_DONE = 0,
+	IOU_POLL_NO_ACTION = 1,
+	IOU_POLL_REMOVE_POLL_USE_RES = 2,
+	IOU_POLL_REISSUE = 3,
+	IOU_POLL_REQUEUE = 4,
+};
+
+struct io_poll_update {
+	struct file *file;
+	u64 old_user_data;
+	u64 new_user_data;
+	__poll_t events;
+	bool update_events;
+	bool update_user_data;
+};
+
+struct io_poll_table {
+	struct poll_table_struct pt;
+	struct io_kiocb *req;
+	int nr_entries;
+	int error;
+	bool owning;
+	__poll_t result_mask;
+};
+
+struct io_cancel {
+	struct file *file;
+	u64 addr;
+	u32 flags;
+	s32 fd;
+	u8 opcode;
+};
+
+struct io_uring_sync_cancel_reg {
+	__u64 addr;
+	__s32 fd;
+	__u32 flags;
+	struct __kernel_timespec timeout;
+	__u8 opcode;
+	__u8 pad[7];
+	__u64 pad2[3];
+};
+
+enum {
+	IOU_PBUF_RING_MMAP = 1,
+};
+
+struct io_provide_buf {
+	struct file *file;
+	__u64 addr;
+	__u32 len;
+	__u32 bgid;
+	__u32 nbufs;
+	__u16 bid;
+};
+
+struct io_buf_free {
+	struct hlist_node list;
+	void *mem;
+	size_t size;
+	int inuse;
+};
+
+struct io_uring_buf_reg {
+	__u64 ring_addr;
+	__u32 ring_entries;
+	__u16 bgid;
+	__u16 flags;
+	__u64 resv[3];
+};
+
+struct io_rsrc_update {
+	struct file *file;
+	u64 arg;
+	u32 nr_args;
+	u32 offset;
+};
+
+struct io_uring_rsrc_update2 {
+	__u32 offset;
+	__u32 resv;
+	__u64 data;
+	__u64 tags;
+	__u32 nr;
+	__u32 resv2;
+};
+
+struct io_uring_rsrc_register {
+	__u32 nr;
+	__u32 flags;
+	__u64 resv2;
+	__u64 data;
+	__u64 tags;
+};
+
+struct io_rw {
+	struct kiocb kiocb;
+	u64 addr;
+	u32 len;
+	rwf_t flags;
+};
+
+struct iov_iter_state {
+	size_t iov_offset;
+	size_t count;
+	unsigned long nr_segs;
+};
+
+struct io_rw_state {
+	struct iov_iter iter;
+	struct iov_iter_state iter_state;
+	struct iovec fast_iov[8];
+};
+
+struct io_async_rw {
+	struct io_rw_state s;
+	const struct iovec *free_iovec;
+	size_t bytes_done;
+	struct wait_page_queue wpq;
+};
+
+enum {
+	IO_WQ_BIT_EXIT = 0,
+};
+
+enum {
+	IO_WORKER_F_UP = 1,
+	IO_WORKER_F_RUNNING = 2,
+	IO_WORKER_F_FREE = 4,
+	IO_WORKER_F_BOUND = 8,
+};
+
+enum {
+	IO_ACCT_STALLED_BIT = 0,
+};
+
+enum {
+	IO_WQ_ACCT_BOUND = 0,
+	IO_WQ_ACCT_UNBOUND = 1,
+	IO_WQ_ACCT_NR = 2,
+};
+
+struct io_wq_acct {
+	unsigned int nr_workers;
+	unsigned int max_workers;
+	int index;
+	atomic_t nr_running;
+	raw_spinlock_t lock;
+	struct io_wq_work_list work_list;
+	unsigned long flags;
+};
+
+struct io_wq {
+	unsigned long state;
+	free_work_fn *free_work;
+	io_wq_work_fn *do_work;
+	struct io_wq_hash *hash;
+	atomic_t worker_refs;
+	struct completion worker_done;
+	struct hlist_node cpuhp_node;
+	struct task_struct *task;
+	struct io_wq_acct acct[2];
+	raw_spinlock_t lock;
+	struct hlist_nulls_head free_list;
+	struct list_head all_list;
+	struct wait_queue_entry wait;
+	struct io_wq_work *hash_tail[64];
+	cpumask_var_t cpu_mask;
+};
+
+struct io_worker {
+	refcount_t ref;
+	unsigned int flags;
+	struct hlist_nulls_node nulls_node;
+	struct list_head all_list;
+	struct task_struct *task;
+	struct io_wq *wq;
+	struct io_wq_work *cur_work;
+	struct io_wq_work *next_work;
+	raw_spinlock_t lock;
+	struct completion ref_done;
+	unsigned long create_state;
+	struct callback_head create_work;
+	int create_index;
+	union {
+		struct callback_head rcu;
+		struct work_struct work;
+	};
+};
+
+struct io_cb_cancel_data {
+	work_cancel_fn *fn;
+	void *data;
+	int nr_running;
+	int nr_pending;
+	bool cancel_all;
+};
+
+struct online_data {
+	unsigned int cpu;
+	bool online;
+};
+
+struct wrapper {
+	cmp_func_t cmp;
+	swap_func_t swap;
+};
+
+enum {
+	MAX_OPT_ARGS = 3,
+};
+
+enum {
+	REG_OP_ISFREE = 0,
+	REG_OP_ALLOC = 1,
+	REG_OP_RELEASE = 2,
+};
+
+struct region {
+	unsigned int start;
+	unsigned int off;
+	unsigned int group_len;
+	unsigned int end;
+	unsigned int nbits;
+};
+
+typedef void sg_free_fn(struct scatterlist *, unsigned int);
+
+struct sg_append_table {
+	struct sg_table sgt;
+	struct scatterlist *prv;
+	unsigned int total_nents;
+};
+
+typedef struct scatterlist *sg_alloc_fn(unsigned int, gfp_t);
+
+struct sg_dma_page_iter {
+	struct sg_page_iter base;
+};
+
+struct csum_state {
+	__wsum csum;
+	size_t off;
+};
+
+union nested_table {
+	union nested_table __attribute__((btf_type_tag("rcu"))) *table;
+	struct rhash_lock_head __attribute__((btf_type_tag("rcu"))) *bucket;
+};
+
+struct rhashtable_walker {
+	struct list_head list;
+	struct bucket_table *tbl;
+};
+
+struct rhashtable_iter {
+	struct rhashtable *ht;
+	struct rhash_head *p;
+	struct rhlist_head *list;
+	struct rhashtable_walker walker;
+	unsigned int slot;
+	unsigned int skip;
+	bool end_of_table;
+};
+
+struct once_work {
+	struct work_struct work;
+	struct static_key_true *key;
+	struct module *module;
+};
+
+struct genradix_node {
+	union {
+		struct genradix_node *children[512];
+		u8 data[4096];
+	};
+};
+
+struct genradix_iter {
+	size_t offset;
+	size_t pos;
+};
+
+enum string_size_units {
+	STRING_UNITS_10 = 0,
+	STRING_UNITS_2 = 1,
+};
+
+struct strarray {
+	char **array;
+	size_t n;
+};
+
+struct kunit_hooks_table {
+	void (*fail_current_test)(const char *, int, const char *, ...);
+	void * (*get_static_stub_address)(struct kunit *, void *);
+};
+
+struct reciprocal_value_adv {
+	u32 m;
+	u8 sh;
+	u8 exp;
+	bool is_wide_m;
+};
+
+struct gf128mul_64k {
+	struct gf128mul_4k *t[16];
+};
+
+enum blake2s_iv {
+	BLAKE2S_IV0 = 1779033703,
+	BLAKE2S_IV1 = 3144134277,
+	BLAKE2S_IV2 = 1013904242,
+	BLAKE2S_IV3 = 2773480762,
+	BLAKE2S_IV4 = 1359893119,
+	BLAKE2S_IV5 = 2600822924,
+	BLAKE2S_IV6 = 528734635,
+	BLAKE2S_IV7 = 1541459225,
+};
+
+typedef mpi_limb_t *mpi_ptr_t;
+
+typedef int mpi_size_t;
+
+typedef mpi_limb_t UWtype;
+
+typedef unsigned int UHWtype;
+
+struct mpi_ec_ctx;
+
+struct field_table {
+	const char *p;
+	void (*addm)(MPI, MPI, MPI, struct mpi_ec_ctx *);
+	void (*subm)(MPI, MPI, MPI, struct mpi_ec_ctx *);
+	void (*mulm)(MPI, MPI, MPI, struct mpi_ec_ctx *);
+	void (*mul2)(MPI, MPI, struct mpi_ec_ctx *);
+	void (*pow2)(MPI, const MPI, struct mpi_ec_ctx *);
+};
+
+struct barrett_ctx_s;
+
+typedef struct barrett_ctx_s *mpi_barrett_t;
+
+enum gcry_mpi_ec_models {
+	MPI_EC_WEIERSTRASS = 0,
+	MPI_EC_MONTGOMERY = 1,
+	MPI_EC_EDWARDS = 2,
+};
+
+enum ecc_dialects {
+	ECC_DIALECT_STANDARD = 0,
+	ECC_DIALECT_ED25519 = 1,
+	ECC_DIALECT_SAFECURVE = 2,
+};
+
+struct gcry_mpi_point;
+
+typedef struct gcry_mpi_point *MPI_POINT;
+
+struct mpi_ec_ctx {
+	enum gcry_mpi_ec_models model;
+	enum ecc_dialects dialect;
+	int flags;
+	unsigned int nbits;
+	MPI p;
+	MPI a;
+	MPI b;
+	MPI_POINT G;
+	MPI n;
+	unsigned int h;
+	MPI_POINT Q;
+	MPI d;
+	const char *name;
+	struct {
+		struct {
+			unsigned int a_is_pminus3: 1;
+			unsigned int two_inv_p: 1;
+		} valid;
+		int a_is_pminus3;
+		MPI two_inv_p;
+		mpi_barrett_t p_barrett;
+		MPI scratch[11];
+	} t;
+	void (*addm)(MPI, MPI, MPI, struct mpi_ec_ctx *);
+	void (*subm)(MPI, MPI, MPI, struct mpi_ec_ctx *);
+	void (*mulm)(MPI, MPI, MPI, struct mpi_ec_ctx *);
+	void (*pow2)(MPI, const MPI, struct mpi_ec_ctx *);
+	void (*mul2)(MPI, MPI, struct mpi_ec_ctx *);
+};
+
+struct gcry_mpi_point {
+	MPI x;
+	MPI y;
+	MPI z;
+};
+
+enum gcry_mpi_constants {
+	MPI_C_ZERO = 0,
+	MPI_C_ONE = 1,
+	MPI_C_TWO = 2,
+	MPI_C_THREE = 3,
+	MPI_C_FOUR = 4,
+	MPI_C_EIGHT = 5,
+};
+
+enum gcry_mpi_format {
+	GCRYMPI_FMT_NONE = 0,
+	GCRYMPI_FMT_STD = 1,
+	GCRYMPI_FMT_PGP = 2,
+	GCRYMPI_FMT_SSH = 3,
+	GCRYMPI_FMT_HEX = 4,
+	GCRYMPI_FMT_USG = 5,
+	GCRYMPI_FMT_OPAQUE = 8,
+};
+
+struct barrett_ctx_s {
+	MPI m;
+	int m_copied;
+	int k;
+	MPI y;
+	MPI r1;
+	MPI r2;
+	MPI r3;
+};
+
+struct karatsuba_ctx {
+	struct karatsuba_ctx *next;
+	mpi_ptr_t tspace;
+	mpi_size_t tspace_size;
+	mpi_ptr_t tp;
+	mpi_size_t tp_size;
+};
+
+typedef long mpi_limb_signed_t;
+
+enum devm_ioremap_type {
+	DEVM_IOREMAP = 0,
+	DEVM_IOREMAP_UC = 1,
+	DEVM_IOREMAP_WC = 2,
+	DEVM_IOREMAP_NP = 3,
+};
+
+enum {
+	PCI_STD_RESOURCES = 0,
+	PCI_STD_RESOURCE_END = 5,
+	PCI_ROM_RESOURCE = 6,
+	PCI_IOV_RESOURCES = 7,
+	PCI_IOV_RESOURCE_END = 12,
+	PCI_BRIDGE_RESOURCES = 13,
+	PCI_BRIDGE_RESOURCE_END = 16,
+	PCI_NUM_RESOURCES = 17,
+	DEVICE_COUNT_RESOURCE = 17,
+};
+
+struct pcim_iomap_devres {
+	void *table[6];
+};
+
+struct arch_io_reserve_memtype_wc_devres {
+	resource_size_t start;
+	resource_size_t size;
+};
+
+enum assoc_array_walk_status {
+	assoc_array_walk_tree_empty = 0,
+	assoc_array_walk_found_terminal_node = 1,
+	assoc_array_walk_found_wrong_shortcut = 2,
+};
+
+struct assoc_array_walk_result {
+	struct {
+		struct assoc_array_node *node;
+		int level;
+		int slot;
+	} terminal_node;
+	struct {
+		struct assoc_array_shortcut *shortcut;
+		int level;
+		int sc_level;
+		unsigned long sc_segments;
+		unsigned long dissimilarity;
+	} wrong_shortcut;
+};
+
+struct assoc_array_delete_collapse_context {
+	struct assoc_array_node *node;
+	const void *skip_leaf;
+	int slot;
+};
+
+struct linear_range {
+	unsigned int min;
+	unsigned int min_sel;
+	unsigned int max_sel;
+	unsigned int step;
+};
+
+struct xxh32_state {
+	uint32_t total_len_32;
+	uint32_t large_len;
+	uint32_t v1;
+	uint32_t v2;
+	uint32_t v3;
+	uint32_t v4;
+	uint32_t mem32[4];
+	uint32_t memsize;
+};
+
+struct gen_pool_chunk {
+	struct list_head next_chunk;
+	atomic_long_t avail;
+	phys_addr_t phys_addr;
+	void *owner;
+	unsigned long start_addr;
+	unsigned long end_addr;
+	unsigned long bits[0];
+};
+
+struct gen_pool;
+
+typedef unsigned long (*genpool_algo_t)(unsigned long *, unsigned long, unsigned long, unsigned int, void *, struct gen_pool *, unsigned long);
+
+struct gen_pool {
+	spinlock_t lock;
+	struct list_head chunks;
+	int min_alloc_order;
+	genpool_algo_t algo;
+	void *data;
+	const char *name;
+};
+
+struct genpool_data_align {
+	int align;
+};
+
+struct genpool_data_fixed {
+	unsigned long offset;
+};
+
+typedef enum {
+	HEAD = 0,
+	FLAGS = 1,
+	TIME = 2,
+	OS = 3,
+	EXLEN = 4,
+	EXTRA = 5,
+	NAME = 6,
+	COMMENT = 7,
+	HCRC = 8,
+	DICTID = 9,
+	DICT = 10,
+	TYPE = 11,
+	TYPEDO = 12,
+	STORED = 13,
+	COPY = 14,
+	TABLE = 15,
+	LENLENS = 16,
+	CODELENS = 17,
+	LEN = 18,
+	LENEXT = 19,
+	DIST = 20,
+	DISTEXT = 21,
+	MATCH = 22,
+	LIT = 23,
+	CHECK = 24,
+	LENGTH = 25,
+	DONE = 26,
+	BAD = 27,
+	MEM = 28,
+	SYNC = 29,
+} inflate_mode;
+
+typedef struct {
+	unsigned char op;
+	unsigned char bits;
+	unsigned short val;
+} code;
+
+struct inflate_state {
+	inflate_mode mode;
+	int last;
+	int wrap;
+	int havedict;
+	int flags;
+	unsigned int dmax;
+	unsigned long check;
+	unsigned long total;
+	unsigned int wbits;
+	unsigned int wsize;
+	unsigned int whave;
+	unsigned int write;
+	unsigned char *window;
+	unsigned long hold;
+	unsigned int bits;
+	unsigned int length;
+	unsigned int offset;
+	unsigned int extra;
+	const code *lencode;
+	const code *distcode;
+	unsigned int lenbits;
+	unsigned int distbits;
+	unsigned int ncode;
+	unsigned int nlen;
+	unsigned int ndist;
+	unsigned int have;
+	code *next;
+	unsigned short lens[320];
+	unsigned short work[288];
+	code codes[2048];
+};
+
+struct inflate_workspace {
+	struct inflate_state inflate_state;
+	unsigned char working_window[32768];
+};
+
+typedef enum {
+	CODES = 0,
+	LENS = 1,
+	DISTS = 2,
+} codetype;
+
+typedef unsigned int uInt;
+
+typedef unsigned short ush;
+
+typedef enum {
+	need_more = 0,
+	block_done = 1,
+	finish_started = 2,
+	finish_done = 3,
+} block_state;
+
+struct deflate_state;
+
+typedef struct deflate_state deflate_state;
+
+typedef block_state (*compress_func)(deflate_state *, int);
+
+struct config_s {
+	ush good_length;
+	ush max_lazy;
+	ush nice_length;
+	ush max_chain;
+	compress_func func;
+};
+
+typedef struct config_s config;
+
+typedef unsigned long ulg;
+
+typedef ush Pos;
+
+typedef unsigned int IPos;
+
+struct ct_data_s {
+	union {
+		ush freq;
+		ush code;
+	} fc;
+	union {
+		ush dad;
+		ush len;
+	} dl;
+};
+
+typedef struct ct_data_s ct_data;
+
+struct static_tree_desc_s;
+
+typedef struct static_tree_desc_s static_tree_desc;
+
+struct tree_desc_s {
+	ct_data *dyn_tree;
+	int max_code;
+	static_tree_desc *stat_desc;
+};
+
+typedef unsigned char uch;
+
+struct deflate_state {
+	z_streamp strm;
+	int status;
+	Byte *pending_buf;
+	ulg pending_buf_size;
+	Byte *pending_out;
+	int pending;
+	int noheader;
+	Byte data_type;
+	Byte method;
+	int last_flush;
+	uInt w_size;
+	uInt w_bits;
+	uInt w_mask;
+	Byte *window;
+	ulg window_size;
+	Pos *prev;
+	Pos *head;
+	uInt ins_h;
+	uInt hash_size;
+	uInt hash_bits;
+	uInt hash_mask;
+	uInt hash_shift;
+	long block_start;
+	uInt match_length;
+	IPos prev_match;
+	int match_available;
+	uInt strstart;
+	uInt match_start;
+	uInt lookahead;
+	uInt prev_length;
+	uInt max_chain_length;
+	uInt max_lazy_match;
+	int level;
+	int strategy;
+	uInt good_match;
+	int nice_match;
+	struct ct_data_s dyn_ltree[573];
+	struct ct_data_s dyn_dtree[61];
+	struct ct_data_s bl_tree[39];
+	struct tree_desc_s l_desc;
+	struct tree_desc_s d_desc;
+	struct tree_desc_s bl_desc;
+	ush bl_count[16];
+	int heap[573];
+	int heap_len;
+	int heap_max;
+	uch depth[573];
+	uch *l_buf;
+	uInt lit_bufsize;
+	uInt last_lit;
+	ush *d_buf;
+	ulg opt_len;
+	ulg static_len;
+	ulg compressed_len;
+	uInt matches;
+	int last_eob_len;
+	ush bi_buf;
+	int bi_valid;
+};
+
+struct static_tree_desc_s {
+	const ct_data *static_tree;
+	const int *extra_bits;
+	int extra_base;
+	int elems;
+	int max_length;
+};
+
+struct deflate_workspace {
+	deflate_state deflate_memory;
+	Byte *window_memory;
+	Pos *prev_memory;
+	Pos *head_memory;
+	char *overlay_memory;
+};
+
+typedef struct deflate_workspace deflate_workspace;
+
+typedef struct tree_desc_s tree_desc;
+
+enum {
+	RS_DECODE_LAMBDA = 0,
+	RS_DECODE_SYN = 1,
+	RS_DECODE_B = 2,
+	RS_DECODE_T = 3,
+	RS_DECODE_OMEGA = 4,
+	RS_DECODE_ROOT = 5,
+	RS_DECODE_REG = 6,
+	RS_DECODE_LOC = 7,
+	RS_DECODE_NUM_BUFFERS = 8,
+};
+
+typedef struct {
+	uint32_t hashTable[4096];
+	uint32_t currentOffset;
+	uint32_t initCheck;
+	const uint8_t *dictionary;
+	uint8_t *bufferStart;
+	uint32_t dictSize;
+} LZ4_stream_t_internal;
+
+typedef union {
+	unsigned long long table[2052];
+	LZ4_stream_t_internal internal_donotuse;
+} LZ4_stream_t;
+
+typedef uintptr_t uptrval;
+
+typedef enum {
+	noLimit = 0,
+	limitedOutput = 1,
+} limitedOutput_directive;
+
+typedef enum {
+	byPtr = 0,
+	byU32 = 1,
+	byU16 = 2,
+} tableType_t;
+
+typedef enum {
+	noDict = 0,
+	withPrefix64k = 1,
+	usingExtDict = 2,
+} dict_directive;
+
+typedef enum {
+	noDictIssue = 0,
+	dictSmall = 1,
+} dictIssue_directive;
+
+typedef struct {
+	unsigned int hashTable[32768];
+	unsigned short chainTable[65536];
+	const unsigned char *end;
+	const unsigned char *base;
+	const unsigned char *dictBase;
+	unsigned int dictLimit;
+	unsigned int lowLimit;
+	unsigned int nextToUpdate;
+	unsigned int compressionLevel;
+} LZ4HC_CCtx_internal;
+
+typedef union {
+	size_t table[32774];
+	LZ4HC_CCtx_internal internal_donotuse;
+} LZ4_streamHC_t;
+
+typedef enum {
+	endOnOutputSize = 0,
+	endOnInputSize = 1,
+} endCondition_directive;
+
+typedef enum {
+	decode_full_block = 0,
+	partial_decode = 1,
+} earlyEnd_directive;
+
+typedef struct {
+	const uint8_t *externalDict;
+	size_t extDictSize;
+	const uint8_t *prefixEnd;
+	size_t prefixSize;
+} LZ4_streamDecode_t_internal;
+
+typedef union {
+	unsigned long long table[4];
+	LZ4_streamDecode_t_internal internal_donotuse;
+} LZ4_streamDecode_t;
+
+typedef enum {
+	ZSTD_reset_session_only = 1,
+	ZSTD_reset_parameters = 2,
+	ZSTD_reset_session_and_parameters = 3,
+} ZSTD_ResetDirective;
+
+typedef enum {
+	ZSTD_c_compressionLevel = 100,
+	ZSTD_c_windowLog = 101,
+	ZSTD_c_hashLog = 102,
+	ZSTD_c_chainLog = 103,
+	ZSTD_c_searchLog = 104,
+	ZSTD_c_minMatch = 105,
+	ZSTD_c_targetLength = 106,
+	ZSTD_c_strategy = 107,
+	ZSTD_c_enableLongDistanceMatching = 160,
+	ZSTD_c_ldmHashLog = 161,
+	ZSTD_c_ldmMinMatch = 162,
+	ZSTD_c_ldmBucketSizeLog = 163,
+	ZSTD_c_ldmHashRateLog = 164,
+	ZSTD_c_contentSizeFlag = 200,
+	ZSTD_c_checksumFlag = 201,
+	ZSTD_c_dictIDFlag = 202,
+	ZSTD_c_nbWorkers = 400,
+	ZSTD_c_jobSize = 401,
+	ZSTD_c_overlapLog = 402,
+	ZSTD_c_experimentalParam1 = 500,
+	ZSTD_c_experimentalParam2 = 10,
+	ZSTD_c_experimentalParam3 = 1000,
+	ZSTD_c_experimentalParam4 = 1001,
+	ZSTD_c_experimentalParam5 = 1002,
+	ZSTD_c_experimentalParam6 = 1003,
+	ZSTD_c_experimentalParam7 = 1004,
+	ZSTD_c_experimentalParam8 = 1005,
+	ZSTD_c_experimentalParam9 = 1006,
+	ZSTD_c_experimentalParam10 = 1007,
+	ZSTD_c_experimentalParam11 = 1008,
+	ZSTD_c_experimentalParam12 = 1009,
+	ZSTD_c_experimentalParam13 = 1010,
+	ZSTD_c_experimentalParam14 = 1011,
+	ZSTD_c_experimentalParam15 = 1012,
+} ZSTD_cParameter;
+
+typedef struct {
+	int deltaFindState;
+	U32 deltaNbBits;
+} FSE_symbolCompressionTransform;
+
+typedef struct {
+	size_t bitContainer;
+	unsigned int bitPos;
+	char *startPtr;
+	char *ptr;
+	char *endPtr;
+} BIT_CStream_t;
+
+typedef struct {
+	ptrdiff_t value;
+	const void *stateTable;
+	const void *symbolTT;
+	unsigned int stateLog;
+} FSE_CState_t;
+
+typedef enum {
+	trustInput = 0,
+	checkMaxSymbolValue = 1,
+} HIST_checkInput_e;
+
+typedef s16 int16_t;
+
+typedef int16_t S16;
+
+typedef struct {
+	FSE_CTable CTable[59];
+	U32 scratchBuffer[41];
+	unsigned int count[13];
+	S16 norm[13];
+} HUF_CompressWeightsWksp;
+
+typedef struct {
+	HUF_CompressWeightsWksp wksp;
+	BYTE bitsToWeight[13];
+	BYTE huffWeight[255];
+} HUF_WriteCTableWksp;
+
+struct nodeElt_s {
+	U32 count;
+	U16 parent;
+	BYTE byte;
+	BYTE nbBits;
+};
+
+typedef struct nodeElt_s nodeElt;
+
+typedef nodeElt huffNodeTable[512];
+
+typedef struct {
+	U16 base;
+	U16 curr;
+} rankPos;
+
+typedef struct {
+	huffNodeTable huffNodeTbl;
+	rankPos rankPosition[192];
+} HUF_buildCTable_wksp_tables;
+
+typedef struct {
+	unsigned int count[256];
+	HUF_CElt CTable[257];
+	union {
+		HUF_buildCTable_wksp_tables buildCTable_wksp;
+		HUF_WriteCTableWksp writeCTable_wksp;
+		U32 hist_wksp[1024];
+	} wksps;
+} HUF_compress_tables_t;
+
+typedef struct {
+	size_t bitContainer[2];
+	size_t bitPos[2];
+	BYTE *startPtr;
+	BYTE *ptr;
+	BYTE *endPtr;
+} HUF_CStream_t;
+
+typedef enum {
+	HUF_singleStream = 0,
+	HUF_fourStreams = 1,
+} HUF_nbStreams_e;
+
+typedef size_t (*ZSTD_blockCompressor)(ZSTD_matchState_t *, seqStore_t *, U32 *, const void *, size_t);
+
+struct seqDef_s {
+	U32 offBase;
+	U16 litLength;
+	U16 mlBase;
+};
+
+typedef uint8_t U8;
+
+enum {
+	ZSTDbss_compress = 0,
+	ZSTDbss_noCompress = 1,
+};
+
+struct ZSTD_CDict_s {
+	const void *dictContent;
+	size_t dictContentSize;
+	ZSTD_dictContentType_e dictContentType;
+	U32 *entropyWorkspace;
+	ZSTD_cwksp workspace;
+	ZSTD_matchState_t matchState;
+	ZSTD_compressedBlockState_t cBlockState;
+	ZSTD_customMem customMem;
+	U32 dictID;
+	int compressionLevel;
+	ZSTD_paramSwitch_e useRowMatchFinder;
+};
+
+typedef struct {
+	U32 f1c;
+	U32 f1d;
+	U32 f7b;
+	U32 f7c;
+} ZSTD_cpuid_t;
+
+typedef struct {
+	size_t error;
+	int lowerBound;
+	int upperBound;
+} ZSTD_bounds;
+
+typedef enum {
+	ZSTD_cpm_noAttachDict = 0,
+	ZSTD_cpm_attachDict = 1,
+	ZSTD_cpm_createCDict = 2,
+	ZSTD_cpm_unknown = 3,
+} ZSTD_cParamMode_e;
+
+typedef enum {
+	ZSTD_e_continue = 0,
+	ZSTD_e_flush = 1,
+	ZSTD_e_end = 2,
+} ZSTD_EndDirective;
+
+typedef struct {
+	U32 LLtype;
+	U32 Offtype;
+	U32 MLtype;
+	size_t size;
+	size_t lastCountSize;
+} ZSTD_symbolEncodingTypeStats_t;
+
+struct repcodes_s {
+	U32 rep[3];
+};
+
+typedef struct repcodes_s repcodes_t;
+
+typedef struct {
+	U32 *splitLocations;
+	size_t idx;
+} seqStoreSplits;
+
+typedef enum {
+	ZSTD_dtlm_fast = 0,
+	ZSTD_dtlm_full = 1,
+} ZSTD_dictTableLoadMethod_e;
+
+typedef enum {
+	ZSTD_dlm_byCopy = 0,
+	ZSTD_dlm_byRef = 1,
+} ZSTD_dictLoadMethod_e;
+
+typedef struct {
+	U32 idx;
+	U32 posInSequence;
+	size_t posInSrc;
+} ZSTD_sequencePosition;
+
+typedef size_t (*ZSTD_sequenceCopier)(ZSTD_CCtx *, ZSTD_sequencePosition *, const ZSTD_Sequence * const, size_t, const void *, size_t);
+
+typedef enum {
+	ZSTD_defaultDisallowed = 0,
+	ZSTD_defaultAllowed = 1,
+} ZSTD_defaultPolicy_e;
+
+typedef enum {
+	ZSTD_noDict = 0,
+	ZSTD_extDict = 1,
+	ZSTD_dictMatchState = 2,
+	ZSTD_dedicatedDictSearch = 3,
+} ZSTD_dictMode_e;
+
+typedef enum {
+	ZSTD_no_overlap = 0,
+	ZSTD_overlap_src_before_dst = 1,
+} ZSTD_overlap_e;
+
+typedef struct {
+	unsigned long long ingested;
+	unsigned long long consumed;
+	unsigned long long produced;
+	unsigned long long flushed;
+	unsigned int currentJobID;
+	unsigned int nbActiveWorkers;
+} ZSTD_frameProgression;
+
+typedef enum {
+	ZSTDcrp_makeClean = 0,
+	ZSTDcrp_leaveDirty = 1,
+} ZSTD_compResetPolicy_e;
+
+typedef enum {
+	ZSTDirp_continue = 0,
+	ZSTDirp_reset = 1,
+} ZSTD_indexResetPolicy_e;
+
+typedef enum {
+	ZSTD_resetTarget_CDict = 0,
+	ZSTD_resetTarget_CCtx = 1,
+} ZSTD_resetTarget_e;
+
+typedef struct {
+	S16 norm[53];
+	U32 wksp[285];
+} ZSTD_BuildCTableWksp;
+
+typedef struct {
+	U32 litLength;
+	U32 matchLength;
+} ZSTD_sequenceLength;
+
+typedef enum {
+	search_hashChain = 0,
+	search_binaryTree = 1,
+	search_rowHash = 2,
+} searchMethod_e;
+
+typedef U64 ZSTD_VecMask;
+
+typedef struct {
+	U64 rolling;
+	U64 stopMask;
+} ldmRollingHashState_t;
+
+typedef U32 (*ZSTD_getAllMatchesFn)(ZSTD_match_t *, ZSTD_matchState_t *, U32 *, const BYTE *, const BYTE *, const U32 *, const U32, const U32);
+
+typedef struct {
+	rawSeqStore_t seqStore;
+	U32 startPosInBlock;
+	U32 endPosInBlock;
+	U32 offset;
+} ZSTD_optLdm_t;
+
+typedef ZSTD_frameHeader zstd_frame_header;
+
+typedef struct {
+	U32 tableTime;
+	U32 decode256Time;
+} algo_time_t;
+
+typedef struct {
+	BYTE nbBits;
+	BYTE byte;
+} HUF_DEltX1;
+
+typedef struct {
+	U32 rankVal[13];
+	U32 rankStart[13];
+	U32 statsWksp[218];
+	BYTE symbols[256];
+	BYTE huffWeight[256];
+} HUF_ReadDTableX1_Workspace;
+
+typedef struct {
+	U16 sequence;
+	BYTE nbBits;
+	BYTE length;
+} HUF_DEltX2;
+
+typedef U32 rankValCol_t[13];
+
+typedef struct {
+	BYTE symbol;
+} sortedSymbol_t;
+
+typedef struct {
+	rankValCol_t rankVal[12];
+	U32 rankStats[13];
+	U32 rankStart0[15];
+	sortedSymbol_t sortedSymbol[256];
+	BYTE weightList[256];
+	U32 calleeWksp[218];
+} HUF_ReadDTableX2_Workspace;
+
+typedef struct {
+	BYTE maxTableLog;
+	BYTE tableType;
+	BYTE tableLog;
+	BYTE reserved;
+} DTableDesc;
+
+typedef struct {
+	size_t bitContainer;
+	unsigned int bitsConsumed;
+	const char *ptr;
+	const char *start;
+	const char *limitPtr;
+} BIT_DStream_t;
+
+typedef enum {
+	BIT_DStream_unfinished = 0,
+	BIT_DStream_endOfBuffer = 1,
+	BIT_DStream_completed = 2,
+	BIT_DStream_overflow = 3,
+} BIT_DStream_status;
+
+struct ZSTD_DDict_s {
+	void *dictBuffer;
+	const void *dictContent;
+	size_t dictSize;
+	ZSTD_entropyDTables_t entropy;
+	U32 dictID;
+	U32 entropyPresent;
+	ZSTD_customMem cMem;
+};
+
+typedef struct {
+	size_t compressedSize;
+	unsigned long long decompressedBound;
+} ZSTD_frameSizeInfo;
+
+typedef struct {
+	blockType_e blockType;
+	U32 lastBlock;
+	U32 origSize;
+} blockProperties_t;
+
+typedef enum {
+	not_streaming = 0,
+	is_streaming = 1,
+} streaming_operation;
+
+typedef enum {
+	ZSTD_d_windowLogMax = 100,
+	ZSTD_d_experimentalParam1 = 1000,
+	ZSTD_d_experimentalParam2 = 1001,
+	ZSTD_d_experimentalParam3 = 1002,
+	ZSTD_d_experimentalParam4 = 1003,
+} ZSTD_dParameter;
+
+typedef enum {
+	ZSTDnit_frameHeader = 0,
+	ZSTDnit_blockHeader = 1,
+	ZSTDnit_block = 2,
+	ZSTDnit_lastBlock = 3,
+	ZSTDnit_checksum = 4,
+	ZSTDnit_skippableFrame = 5,
+} ZSTD_nextInputType_e;
+
+typedef enum {
+	ZSTD_lo_isRegularOffset = 0,
+	ZSTD_lo_isLongOffset = 1,
+} ZSTD_longOffset_e;
+
+typedef struct {
+	U32 fastMode;
+	U32 tableLog;
+} ZSTD_seqSymbol_header;
+
+typedef struct {
+	size_t litLength;
+	size_t matchLength;
+	size_t offset;
+} seq_t;
+
+typedef struct {
+	size_t state;
+	const ZSTD_seqSymbol *table;
+} ZSTD_fseState;
+
+typedef struct {
+	BIT_DStream_t DStream;
+	ZSTD_fseState stateLL;
+	ZSTD_fseState stateOffb;
+	ZSTD_fseState stateML;
+	size_t prevOffset[3];
+} seqState_t;
+
+typedef ZSTD_ErrorCode ERR_enum;
+
+typedef unsigned int FSE_DTable;
+
+typedef struct {
+	U16 tableLog;
+	U16 fastMode;
+} FSE_DTableHeader;
+
+typedef struct {
+	unsigned short newState;
+	unsigned char symbol;
+	unsigned char nbBits;
+} FSE_decode_t;
+
+typedef struct {
+	short ncount[256];
+	FSE_DTable dtable[0];
+} FSE_DecompressWksp;
+
+typedef struct {
+	size_t state;
+	const void *table;
+} FSE_DState_t;
+
+enum xz_ret {
+	XZ_OK = 0,
+	XZ_STREAM_END = 1,
+	XZ_UNSUPPORTED_CHECK = 2,
+	XZ_MEM_ERROR = 3,
+	XZ_MEMLIMIT_ERROR = 4,
+	XZ_FORMAT_ERROR = 5,
+	XZ_OPTIONS_ERROR = 6,
+	XZ_DATA_ERROR = 7,
+	XZ_BUF_ERROR = 8,
+};
+
+typedef uint64_t vli_type;
+
+struct xz_dec_hash {
+	vli_type unpadded;
+	vli_type uncompressed;
+	uint32_t crc32;
+};
+
+enum xz_check {
+	XZ_CHECK_NONE = 0,
+	XZ_CHECK_CRC32 = 1,
+	XZ_CHECK_CRC64 = 4,
+	XZ_CHECK_SHA256 = 10,
+};
+
+enum xz_mode {
+	XZ_SINGLE = 0,
+	XZ_PREALLOC = 1,
+	XZ_DYNALLOC = 2,
+};
+
+struct xz_dec_lzma2;
+
+struct xz_dec_bcj;
+
+struct xz_dec {
+	enum {
+		SEQ_STREAM_HEADER = 0,
+		SEQ_BLOCK_START = 1,
+		SEQ_BLOCK_HEADER = 2,
+		SEQ_BLOCK_UNCOMPRESS = 3,
+		SEQ_BLOCK_PADDING = 4,
+		SEQ_BLOCK_CHECK = 5,
+		SEQ_INDEX = 6,
+		SEQ_INDEX_PADDING = 7,
+		SEQ_INDEX_CRC32 = 8,
+		SEQ_STREAM_FOOTER = 9,
+	} sequence;
+	uint32_t pos;
+	vli_type vli;
+	size_t in_start;
+	size_t out_start;
+	uint32_t crc32;
+	enum xz_check check_type;
+	enum xz_mode mode;
+	bool allow_buf_error;
+	struct {
+		vli_type compressed;
+		vli_type uncompressed;
+		uint32_t size;
+	} block_header;
+	struct {
+		vli_type compressed;
+		vli_type uncompressed;
+		vli_type count;
+		struct xz_dec_hash hash;
+	} block;
+	struct {
+		enum {
+			SEQ_INDEX_COUNT = 0,
+			SEQ_INDEX_UNPADDED = 1,
+			SEQ_INDEX_UNCOMPRESSED = 2,
+		} sequence;
+		vli_type size;
+		vli_type count;
+		struct xz_dec_hash hash;
+	} index;
+	struct {
+		size_t pos;
+		size_t size;
+		uint8_t buf[1024];
+	} temp;
+	struct xz_dec_lzma2 *lzma2;
+	struct xz_dec_bcj *bcj;
+	bool bcj_active;
+};
+
+struct xz_buf {
+	const uint8_t *in;
+	size_t in_pos;
+	size_t in_size;
+	uint8_t *out;
+	size_t out_pos;
+	size_t out_size;
+};
+
+enum lzma2_seq {
+	SEQ_CONTROL = 0,
+	SEQ_UNCOMPRESSED_1 = 1,
+	SEQ_UNCOMPRESSED_2 = 2,
+	SEQ_COMPRESSED_0 = 3,
+	SEQ_COMPRESSED_1 = 4,
+	SEQ_PROPERTIES = 5,
+	SEQ_LZMA_PREPARE = 6,
+	SEQ_LZMA_RUN = 7,
+	SEQ_COPY = 8,
+};
+
+enum lzma_state {
+	STATE_LIT_LIT = 0,
+	STATE_MATCH_LIT_LIT = 1,
+	STATE_REP_LIT_LIT = 2,
+	STATE_SHORTREP_LIT_LIT = 3,
+	STATE_MATCH_LIT = 4,
+	STATE_REP_LIT = 5,
+	STATE_SHORTREP_LIT = 6,
+	STATE_LIT_MATCH = 7,
+	STATE_LIT_LONGREP = 8,
+	STATE_LIT_SHORTREP = 9,
+	STATE_NONLIT_MATCH = 10,
+	STATE_NONLIT_REP = 11,
+};
+
+struct rc_dec {
+	uint32_t range;
+	uint32_t code;
+	uint32_t init_bytes_left;
+	const uint8_t *in;
+	size_t in_pos;
+	size_t in_limit;
+};
+
+struct dictionary {
+	uint8_t *buf;
+	size_t start;
+	size_t pos;
+	size_t full;
+	size_t limit;
+	size_t end;
+	uint32_t size;
+	uint32_t size_max;
+	uint32_t allocated;
+	enum xz_mode mode;
+};
+
+struct lzma2_dec {
+	enum lzma2_seq sequence;
+	enum lzma2_seq next_sequence;
+	uint32_t uncompressed;
+	uint32_t compressed;
+	bool need_dict_reset;
+	bool need_props;
+};
+
+struct lzma_len_dec {
+	uint16_t choice;
+	uint16_t choice2;
+	uint16_t low[128];
+	uint16_t mid[128];
+	uint16_t high[256];
+};
+
+struct lzma_dec {
+	uint32_t rep0;
+	uint32_t rep1;
+	uint32_t rep2;
+	uint32_t rep3;
+	enum lzma_state state;
+	uint32_t len;
+	uint32_t lc;
+	uint32_t literal_pos_mask;
+	uint32_t pos_mask;
+	uint16_t is_match[192];
+	uint16_t is_rep[12];
+	uint16_t is_rep0[12];
+	uint16_t is_rep1[12];
+	uint16_t is_rep2[12];
+	uint16_t is_rep0_long[192];
+	uint16_t dist_slot[256];
+	uint16_t dist_special[114];
+	uint16_t dist_align[16];
+	struct lzma_len_dec match_len_dec;
+	struct lzma_len_dec rep_len_dec;
+	uint16_t literal[12288];
+};
+
+struct xz_dec_lzma2 {
+	struct rc_dec rc;
+	struct dictionary dict;
+	struct lzma2_dec lzma2;
+	struct lzma_dec lzma;
+	struct {
+		uint32_t size;
+		uint8_t buf[63];
+	} temp;
+};
+
+struct xz_dec_bcj {
+	enum {
+		BCJ_X86 = 4,
+		BCJ_POWERPC = 5,
+		BCJ_IA64 = 6,
+		BCJ_ARM = 7,
+		BCJ_ARMTHUMB = 8,
+		BCJ_SPARC = 9,
+	} type;
+	enum xz_ret ret;
+	bool single_call;
+	uint32_t pos;
+	uint32_t x86_prev_mask;
+	uint8_t *out;
+	size_t out_pos;
+	size_t out_size;
+	struct {
+		size_t filtered;
+		size_t size;
+		uint8_t buf[16];
+	} temp;
+};
+
+struct ts_config;
+
+struct ts_state;
+
+struct ts_ops {
+	const char *name;
+	struct ts_config * (*init)(const void *, unsigned int, gfp_t, int);
+	unsigned int (*find)(struct ts_config *, struct ts_state *);
+	void (*destroy)(struct ts_config *);
+	void * (*get_pattern)(struct ts_config *);
+	unsigned int (*get_pattern_len)(struct ts_config *);
+	struct module *owner;
+	struct list_head list;
+};
+
+struct ts_config {
+	struct ts_ops *ops;
+	int flags;
+	unsigned int (*get_next_block)(unsigned int, const u8 **, struct ts_config *, struct ts_state *);
+	void (*finish)(struct ts_config *, struct ts_state *);
+};
+
+struct ts_state {
+	unsigned int offset;
+	char cb[48];
+};
+
+struct ts_linear_state {
+	unsigned int len;
+	const void *data;
+};
+
+struct ts_kmp {
+	u8 *pattern;
+	unsigned int pattern_len;
+	unsigned int prefix_tbl[0];
+};
+
+struct ts_bm {
+	u8 *pattern;
+	unsigned int patlen;
+	unsigned int bad_shift[256];
+	unsigned int good_shift[0];
+};
+
+enum {
+	TS_FSM_SPECIFIC = 0,
+	TS_FSM_WILDCARD = 1,
+	TS_FSM_DIGIT = 2,
+	TS_FSM_XDIGIT = 3,
+	TS_FSM_PRINT = 4,
+	TS_FSM_ALPHA = 5,
+	TS_FSM_ALNUM = 6,
+	TS_FSM_ASCII = 7,
+	TS_FSM_CNTRL = 8,
+	TS_FSM_GRAPH = 9,
+	TS_FSM_LOWER = 10,
+	TS_FSM_UPPER = 11,
+	TS_FSM_PUNCT = 12,
+	TS_FSM_SPACE = 13,
+	__TS_FSM_TYPE_MAX = 14,
+};
+
+enum {
+	TS_FSM_SINGLE = 0,
+	TS_FSM_PERHAPS = 1,
+	TS_FSM_ANY = 2,
+	TS_FSM_MULTI = 3,
+	TS_FSM_HEAD_IGNORE = 4,
+	__TS_FSM_RECUR_MAX = 5,
+};
+
+struct ts_fsm_token {
+	__u16 type;
+	__u8 recur;
+	__u8 value;
+};
+
+struct ts_fsm {
+	unsigned int ntokens;
+	struct ts_fsm_token tokens[0];
+};
+
+struct ddebug_table {
+	struct list_head link;
+	struct list_head maps;
+	const char *mod_name;
+	unsigned int num_ddebugs;
+	struct _ddebug *ddebugs;
+};
+
+struct ddebug_class_param {
+	union {
+		unsigned long *bits;
+		unsigned int *lvl;
+	};
+	char flags[8];
+	const struct ddebug_class_map *map;
+};
+
+struct ddebug_query {
+	const char *filename;
+	const char *module;
+	const char *function;
+	const char *format;
+	const char *class_string;
+	unsigned int first_lineno;
+	unsigned int last_lineno;
+};
+
+struct flag_settings {
+	unsigned int flags;
+	unsigned int mask;
+};
+
+struct flagsbuf {
+	char buf[8];
+};
+
+struct ddebug_iter {
+	struct ddebug_table *table;
+	int idx;
+};
+
+enum nla_policy_validation {
+	NLA_VALIDATE_NONE = 0,
+	NLA_VALIDATE_RANGE = 1,
+	NLA_VALIDATE_RANGE_WARN_TOO_LONG = 2,
+	NLA_VALIDATE_MIN = 3,
+	NLA_VALIDATE_MAX = 4,
+	NLA_VALIDATE_MASK = 5,
+	NLA_VALIDATE_RANGE_PTR = 6,
+	NLA_VALIDATE_FUNCTION = 7,
+};
+
+enum {
+	NLA_UNSPEC = 0,
+	NLA_U8 = 1,
+	NLA_U16 = 2,
+	NLA_U32 = 3,
+	NLA_U64 = 4,
+	NLA_STRING = 5,
+	NLA_FLAG = 6,
+	NLA_MSECS = 7,
+	NLA_NESTED = 8,
+	NLA_NESTED_ARRAY = 9,
+	NLA_NUL_STRING = 10,
+	NLA_BINARY = 11,
+	NLA_S8 = 12,
+	NLA_S16 = 13,
+	NLA_S32 = 14,
+	NLA_S64 = 15,
+	NLA_BITFIELD32 = 16,
+	NLA_REJECT = 17,
+	NLA_BE16 = 18,
+	NLA_BE32 = 19,
+	__NLA_TYPE_MAX = 20,
+};
+
+enum netlink_validation {
+	NL_VALIDATE_LIBERAL = 0,
+	NL_VALIDATE_TRAILING = 1,
+	NL_VALIDATE_MAXTYPE = 2,
+	NL_VALIDATE_UNSPEC = 4,
+	NL_VALIDATE_STRICT_ATTRS = 8,
+	NL_VALIDATE_NESTED = 16,
+};
+
+struct nla_bitfield32 {
+	__u32 value;
+	__u32 selector;
+};
+
+struct cpu_rmap {
+	struct kref refcount;
+	u16 size;
+	void **obj;
+	struct {
+		u16 index;
+		u16 dist;
+	} near[0];
+};
+
+struct irq_glue {
+	struct irq_affinity_notify notify;
+	struct cpu_rmap *rmap;
+	u16 index;
+};
+
+struct sg_pool {
+	size_t size;
+	char *name;
+	struct kmem_cache *slab;
+	mempool_t *pool;
+};
+
+union handle_parts {
+	depot_stack_handle_t handle;
+	struct {
+		u32 pool_index: 16;
+		u32 offset: 10;
+		u32 valid: 1;
+		u32 extra: 5;
+	};
+};
+
+struct stack_record {
+	struct stack_record *next;
+	u32 hash;
+	u32 size;
+	union handle_parts handle;
+	unsigned long entries[0];
+};
+
+enum asn1_opcode {
+	ASN1_OP_MATCH = 0,
+	ASN1_OP_MATCH_OR_SKIP = 1,
+	ASN1_OP_MATCH_ACT = 2,
+	ASN1_OP_MATCH_ACT_OR_SKIP = 3,
+	ASN1_OP_MATCH_JUMP = 4,
+	ASN1_OP_MATCH_JUMP_OR_SKIP = 5,
+	ASN1_OP_MATCH_ANY = 8,
+	ASN1_OP_MATCH_ANY_OR_SKIP = 9,
+	ASN1_OP_MATCH_ANY_ACT = 10,
+	ASN1_OP_MATCH_ANY_ACT_OR_SKIP = 11,
+	ASN1_OP_COND_MATCH_OR_SKIP = 17,
+	ASN1_OP_COND_MATCH_ACT_OR_SKIP = 19,
+	ASN1_OP_COND_MATCH_JUMP_OR_SKIP = 21,
+	ASN1_OP_COND_MATCH_ANY = 24,
+	ASN1_OP_COND_MATCH_ANY_OR_SKIP = 25,
+	ASN1_OP_COND_MATCH_ANY_ACT = 26,
+	ASN1_OP_COND_MATCH_ANY_ACT_OR_SKIP = 27,
+	ASN1_OP_COND_FAIL = 28,
+	ASN1_OP_COMPLETE = 29,
+	ASN1_OP_ACT = 30,
+	ASN1_OP_MAYBE_ACT = 31,
+	ASN1_OP_END_SEQ = 32,
+	ASN1_OP_END_SET = 33,
+	ASN1_OP_END_SEQ_OF = 34,
+	ASN1_OP_END_SET_OF = 35,
+	ASN1_OP_END_SEQ_ACT = 36,
+	ASN1_OP_END_SET_ACT = 37,
+	ASN1_OP_END_SEQ_OF_ACT = 38,
+	ASN1_OP_END_SET_OF_ACT = 39,
+	ASN1_OP_RETURN = 40,
+	ASN1_OP__NR = 41,
+};
+
+enum asn1_method {
+	ASN1_PRIM = 0,
+	ASN1_CONS = 1,
+};
+
+struct font_desc {
+	int idx;
+	const char *name;
+	unsigned int width;
+	unsigned int height;
+	unsigned int charcount;
+	const void *data;
+	int pref;
+};
+
+struct font_data {
+	unsigned int extra[4];
+	const unsigned char data[0];
+};
+
+typedef u16 ucs2_char_t;
+
+enum ubsan_checks {
+	ubsan_add_overflow = 0,
+	ubsan_builtin_unreachable = 1,
+	ubsan_cfi_check_fail = 2,
+	ubsan_divrem_overflow = 3,
+	ubsan_dynamic_type_cache_miss = 4,
+	ubsan_float_cast_overflow = 5,
+	ubsan_function_type_mismatch = 6,
+	ubsan_implicit_conversion = 7,
+	ubsan_invalid_builtin = 8,
+	ubsan_invalid_objc_cast = 9,
+	ubsan_load_invalid_value = 10,
+	ubsan_missing_return = 11,
+	ubsan_mul_overflow = 12,
+	ubsan_negate_overflow = 13,
+	ubsan_nullability_arg = 14,
+	ubsan_nullability_return = 15,
+	ubsan_nonnull_arg = 16,
+	ubsan_nonnull_return = 17,
+	ubsan_out_of_bounds = 18,
+	ubsan_pointer_overflow = 19,
+	ubsan_shift_out_of_bounds = 20,
+	ubsan_sub_overflow = 21,
+	ubsan_type_mismatch = 22,
+	ubsan_alignment_assumption = 23,
+	ubsan_vla_bound_not_positive = 24,
+};
+
+struct node_groups {
+	unsigned int id;
+	union {
+		unsigned int ngroups;
+		unsigned int ncpus;
+	};
+};
+
+struct msr {
+	union {
+		struct {
+			u32 l;
+			u32 h;
+		};
+		u64 q;
+	};
+};
+
+struct msr_info {
+	u32 msr_no;
+	struct msr reg;
+	struct msr *msrs;
+	int err;
+};
+
+struct msr_info_completion {
+	struct msr_info msr;
+	struct completion done;
+};
+
+struct msr_regs_info {
+	u32 *regs;
+	int err;
+};
+
+typedef void (*btf_trace_read_msr)(void *, unsigned int, u64, int);
+
+typedef void (*btf_trace_write_msr)(void *, unsigned int, u64, int);
+
+typedef void (*btf_trace_rdpmc)(void *, unsigned int, u64, int);
+
+struct trace_event_raw_msr_trace_class {
+	struct trace_entry ent;
+	unsigned int msr;
+	u64 val;
+	int failed;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_msr_trace_class {};
+
+struct acpi_probe_entry;
+
+typedef bool (*acpi_probe_entry_validate_subtbl)(struct acpi_subtable_header *, struct acpi_probe_entry *);
+
+struct acpi_probe_entry {
+	__u8 id[5];
+	__u8 type;
+	acpi_probe_entry_validate_subtbl subtable_valid;
+	union {
+		acpi_tbl_table_handler probe_table;
+		acpi_tbl_entry_handler probe_subtbl;
+	};
+	kernel_ulong_t driver_data;
+};
+
+typedef int (*of_irq_init_cb_t)(struct device_node *, struct device_node *);
+
+struct of_dev_auxdata {
+	char *compatible;
+	resource_size_t phys_addr;
+	char *name;
+	void *platform_data;
+};
+
+struct clk_bulk_data;
+
+struct simple_pm_bus {
+	struct clk_bulk_data *clks;
+	int num_clks;
+};
+
+struct clk_bulk_data {
+	const char *id;
+	struct clk *clk;
+};
+
+enum phy_mode {
+	PHY_MODE_INVALID = 0,
+	PHY_MODE_USB_HOST = 1,
+	PHY_MODE_USB_HOST_LS = 2,
+	PHY_MODE_USB_HOST_FS = 3,
+	PHY_MODE_USB_HOST_HS = 4,
+	PHY_MODE_USB_HOST_SS = 5,
+	PHY_MODE_USB_DEVICE = 6,
+	PHY_MODE_USB_DEVICE_LS = 7,
+	PHY_MODE_USB_DEVICE_FS = 8,
+	PHY_MODE_USB_DEVICE_HS = 9,
+	PHY_MODE_USB_DEVICE_SS = 10,
+	PHY_MODE_USB_OTG = 11,
+	PHY_MODE_UFS_HS_A = 12,
+	PHY_MODE_UFS_HS_B = 13,
+	PHY_MODE_PCIE = 14,
+	PHY_MODE_ETHERNET = 15,
+	PHY_MODE_MIPI_DPHY = 16,
+	PHY_MODE_SATA = 17,
+	PHY_MODE_LVDS = 18,
+	PHY_MODE_DP = 19,
+};
+
+enum phy_media {
+	PHY_MEDIA_DEFAULT = 0,
+	PHY_MEDIA_SR = 1,
+	PHY_MEDIA_DAC = 2,
+};
+
+enum device_link_state {
+	DL_STATE_NONE = -1,
+	DL_STATE_DORMANT = 0,
+	DL_STATE_AVAILABLE = 1,
+	DL_STATE_CONSUMER_PROBE = 2,
+	DL_STATE_ACTIVE = 3,
+	DL_STATE_SUPPLIER_UNBIND = 4,
+};
+
+struct phy;
+
+struct phy_lookup {
+	struct list_head node;
+	const char *dev_id;
+	const char *con_id;
+	struct phy *phy;
+};
+
+struct phy_attrs {
+	u32 bus_width;
+	u32 max_link_rate;
+	enum phy_mode mode;
+};
+
+struct phy_ops;
+
+struct regulator;
+
+struct phy {
+	struct device dev;
+	int id;
+	const struct phy_ops *ops;
+	struct mutex mutex;
+	int init_count;
+	int power_count;
+	struct phy_attrs attrs;
+	struct regulator *pwr;
+	struct dentry *debugfs;
+};
+
+union phy_configure_opts;
+
+struct phy_ops {
+	int (*init)(struct phy *);
+	int (*exit)(struct phy *);
+	int (*power_on)(struct phy *);
+	int (*power_off)(struct phy *);
+	int (*set_mode)(struct phy *, enum phy_mode, int);
+	int (*set_media)(struct phy *, enum phy_media);
+	int (*set_speed)(struct phy *, int);
+	int (*configure)(struct phy *, union phy_configure_opts *);
+	int (*validate)(struct phy *, enum phy_mode, int, union phy_configure_opts *);
+	int (*reset)(struct phy *);
+	int (*calibrate)(struct phy *);
+	void (*release)(struct phy *);
+	struct module *owner;
+};
+
+struct phy_configure_opts_mipi_dphy {
+	unsigned int clk_miss;
+	unsigned int clk_post;
+	unsigned int clk_pre;
+	unsigned int clk_prepare;
+	unsigned int clk_settle;
+	unsigned int clk_term_en;
+	unsigned int clk_trail;
+	unsigned int clk_zero;
+	unsigned int d_term_en;
+	unsigned int eot;
+	unsigned int hs_exit;
+	unsigned int hs_prepare;
+	unsigned int hs_settle;
+	unsigned int hs_skip;
+	unsigned int hs_trail;
+	unsigned int hs_zero;
+	unsigned int init;
+	unsigned int lpx;
+	unsigned int ta_get;
+	unsigned int ta_go;
+	unsigned int ta_sure;
+	unsigned int wakeup;
+	unsigned long hs_clk_rate;
+	unsigned long lp_clk_rate;
+	unsigned char lanes;
+};
+
+struct phy_configure_opts_dp {
+	unsigned int link_rate;
+	unsigned int lanes;
+	unsigned int voltage[4];
+	unsigned int pre[4];
+	u8 ssc: 1;
+	u8 set_rate: 1;
+	u8 set_lanes: 1;
+	u8 set_voltages: 1;
+};
+
+struct phy_configure_opts_lvds {
+	unsigned int bits_per_lane_and_dclk_cycle;
+	unsigned long differential_clk_rate;
+	unsigned int lanes;
+	bool is_slave;
+};
+
+union phy_configure_opts {
+	struct phy_configure_opts_mipi_dphy mipi_dphy;
+	struct phy_configure_opts_dp dp;
+	struct phy_configure_opts_lvds lvds;
+};
+
+struct phy_provider {
+	struct device *dev;
+	struct device_node *children;
+	struct module *owner;
+	struct list_head list;
+	struct phy * (*of_xlate)(struct device *, struct of_phandle_args *);
+};
+
+struct device_link {
+	struct device *supplier;
+	struct list_head s_node;
+	struct device *consumer;
+	struct list_head c_node;
+	struct device link_dev;
+	enum device_link_state status;
+	u32 flags;
+	refcount_t rpm_active;
+	struct kref kref;
+	struct work_struct rm_work;
+	bool supplier_preactivated;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+typedef void (*btf_trace_gpio_direction)(void *, unsigned int, int, int);
+
+typedef void (*btf_trace_gpio_value)(void *, unsigned int, int, int);
+
+enum gpio_lookup_flags {
+	GPIO_ACTIVE_HIGH = 0,
+	GPIO_ACTIVE_LOW = 1,
+	GPIO_OPEN_DRAIN = 2,
+	GPIO_OPEN_SOURCE = 4,
+	GPIO_PERSISTENT = 0,
+	GPIO_TRANSITORY = 8,
+	GPIO_PULL_UP = 16,
+	GPIO_PULL_DOWN = 32,
+	GPIO_PULL_DISABLE = 64,
+	GPIO_LOOKUP_FLAGS_DEFAULT = 0,
+};
+
+enum gpiod_flags {
+	GPIOD_ASIS = 0,
+	GPIOD_IN = 1,
+	GPIOD_OUT_LOW = 3,
+	GPIOD_OUT_HIGH = 7,
+	GPIOD_OUT_LOW_OPEN_DRAIN = 11,
+	GPIOD_OUT_HIGH_OPEN_DRAIN = 15,
+};
+
+enum pin_config_param {
+	PIN_CONFIG_BIAS_BUS_HOLD = 0,
+	PIN_CONFIG_BIAS_DISABLE = 1,
+	PIN_CONFIG_BIAS_HIGH_IMPEDANCE = 2,
+	PIN_CONFIG_BIAS_PULL_DOWN = 3,
+	PIN_CONFIG_BIAS_PULL_PIN_DEFAULT = 4,
+	PIN_CONFIG_BIAS_PULL_UP = 5,
+	PIN_CONFIG_DRIVE_OPEN_DRAIN = 6,
+	PIN_CONFIG_DRIVE_OPEN_SOURCE = 7,
+	PIN_CONFIG_DRIVE_PUSH_PULL = 8,
+	PIN_CONFIG_DRIVE_STRENGTH = 9,
+	PIN_CONFIG_DRIVE_STRENGTH_UA = 10,
+	PIN_CONFIG_INPUT_DEBOUNCE = 11,
+	PIN_CONFIG_INPUT_ENABLE = 12,
+	PIN_CONFIG_INPUT_SCHMITT = 13,
+	PIN_CONFIG_INPUT_SCHMITT_ENABLE = 14,
+	PIN_CONFIG_MODE_LOW_POWER = 15,
+	PIN_CONFIG_MODE_PWM = 16,
+	PIN_CONFIG_OUTPUT = 17,
+	PIN_CONFIG_OUTPUT_ENABLE = 18,
+	PIN_CONFIG_OUTPUT_IMPEDANCE_OHMS = 19,
+	PIN_CONFIG_PERSIST_STATE = 20,
+	PIN_CONFIG_POWER_SOURCE = 21,
+	PIN_CONFIG_SKEW_DELAY = 22,
+	PIN_CONFIG_SLEEP_HARDWARE_STATE = 23,
+	PIN_CONFIG_SLEW_RATE = 24,
+	PIN_CONFIG_END = 127,
+	PIN_CONFIG_MAX = 255,
+};
+
+enum {
+	GPIOLINE_CHANGED_REQUESTED = 1,
+	GPIOLINE_CHANGED_RELEASED = 2,
+	GPIOLINE_CHANGED_CONFIG = 3,
+};
+
+struct gpio_chip;
+
+struct gpio_desc;
+
+struct gpio_device {
+	struct device dev;
+	struct cdev chrdev;
+	int id;
+	struct device *mockdev;
+	struct module *owner;
+	struct gpio_chip *chip;
+	struct gpio_desc *descs;
+	int base;
+	u16 ngpio;
+	const char *label;
+	void *data;
+	struct list_head list;
+	struct blocking_notifier_head line_state_notifier;
+	struct blocking_notifier_head device_notifier;
+	struct rw_semaphore sem;
+	u64 android_kabi_reserved1;
+};
+
+struct gpio_chip {
+	const char *label;
+	struct gpio_device *gpiodev;
+	struct device *parent;
+	struct fwnode_handle *fwnode;
+	struct module *owner;
+	int (*request)(struct gpio_chip *, unsigned int);
+	void (*free)(struct gpio_chip *, unsigned int);
+	int (*get_direction)(struct gpio_chip *, unsigned int);
+	int (*direction_input)(struct gpio_chip *, unsigned int);
+	int (*direction_output)(struct gpio_chip *, unsigned int, int);
+	int (*get)(struct gpio_chip *, unsigned int);
+	int (*get_multiple)(struct gpio_chip *, unsigned long *, unsigned long *);
+	void (*set)(struct gpio_chip *, unsigned int, int);
+	void (*set_multiple)(struct gpio_chip *, unsigned long *, unsigned long *);
+	int (*set_config)(struct gpio_chip *, unsigned int, unsigned long);
+	int (*to_irq)(struct gpio_chip *, unsigned int);
+	void (*dbg_show)(struct seq_file *, struct gpio_chip *);
+	int (*init_valid_mask)(struct gpio_chip *, unsigned long *, unsigned int);
+	int (*add_pin_ranges)(struct gpio_chip *);
+	int (*en_hw_timestamp)(struct gpio_chip *, u32, unsigned long);
+	int (*dis_hw_timestamp)(struct gpio_chip *, u32, unsigned long);
+	int base;
+	u16 ngpio;
+	u16 offset;
+	const char * const *names;
+	bool can_sleep;
+	unsigned long (*read_reg)(void *);
+	void (*write_reg)(void *, unsigned long);
+	bool be_bits;
+	void *reg_dat;
+	void *reg_set;
+	void *reg_clr;
+	void *reg_dir_out;
+	void *reg_dir_in;
+	bool bgpio_dir_unreadable;
+	int bgpio_bits;
+	raw_spinlock_t bgpio_lock;
+	unsigned long bgpio_data;
+	unsigned long bgpio_dir;
+	unsigned long *valid_mask;
+	unsigned int of_gpio_n_cells;
+	int (*of_xlate)(struct gpio_chip *, const struct of_phandle_args *, u32 *);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct gpio_desc {
+	struct gpio_device *gdev;
+	unsigned long flags;
+	const char *label;
+	const char *name;
+	unsigned int debounce_period_us;
+	u64 android_kabi_reserved1;
+};
+
+struct trace_event_raw_gpio_direction {
+	struct trace_entry ent;
+	unsigned int gpio;
+	int in;
+	int err;
+	char __data[0];
+};
+
+struct trace_event_raw_gpio_value {
+	struct trace_entry ent;
+	unsigned int gpio;
+	int get;
+	int value;
+	char __data[0];
+};
+
+struct gpiod_hog {
+	struct list_head list;
+	const char *chip_label;
+	u16 chip_hwnum;
+	const char *line_name;
+	unsigned long lflags;
+	int dflags;
+};
+
+struct gpiod_lookup {
+	const char *key;
+	u16 chip_hwnum;
+	const char *con_id;
+	unsigned int idx;
+	unsigned long flags;
+};
+
+struct gpiod_lookup_table {
+	struct list_head list;
+	const char *dev_id;
+	struct gpiod_lookup table[0];
+};
+
+typedef struct {
+	spinlock_t *lock;
+	unsigned long flags;
+} class_spinlock_irqsave_t;
+
+struct gpio_array;
+
+struct gpio_descs {
+	struct gpio_array *info;
+	unsigned int ndescs;
+	struct gpio_desc *desc[0];
+};
+
+struct gpio_array {
+	struct gpio_desc **desc;
+	unsigned int size;
+	struct gpio_chip *chip;
+	unsigned long *get_mask;
+	unsigned long *set_mask;
+	u64 android_kabi_reserved1;
+	unsigned long invert_mask[0];
+};
+
+struct trace_event_data_offsets_gpio_direction {};
+
+struct trace_event_data_offsets_gpio_value {};
+
+struct gpio {
+	unsigned int gpio;
+	unsigned long flags;
+	const char *label;
+};
+
+enum of_gpio_flags {
+	OF_GPIO_ACTIVE_LOW = 1,
+	OF_GPIO_SINGLE_ENDED = 2,
+	OF_GPIO_OPEN_DRAIN = 4,
+	OF_GPIO_TRANSITORY = 8,
+	OF_GPIO_PULL_UP = 16,
+	OF_GPIO_PULL_DOWN = 32,
+	OF_GPIO_PULL_DISABLE = 64,
+};
+
+typedef struct gpio_desc * (*of_find_gpio_quirk)(struct device_node *, const char *, unsigned int, enum of_gpio_flags *);
+
+struct of_rename_gpio {
+	const char *con_id;
+	const char *legacy_id;
+	const char *compatible;
+};
+
+enum gpio_v2_line_flag {
+	GPIO_V2_LINE_FLAG_USED = 1,
+	GPIO_V2_LINE_FLAG_ACTIVE_LOW = 2,
+	GPIO_V2_LINE_FLAG_INPUT = 4,
+	GPIO_V2_LINE_FLAG_OUTPUT = 8,
+	GPIO_V2_LINE_FLAG_EDGE_RISING = 16,
+	GPIO_V2_LINE_FLAG_EDGE_FALLING = 32,
+	GPIO_V2_LINE_FLAG_OPEN_DRAIN = 64,
+	GPIO_V2_LINE_FLAG_OPEN_SOURCE = 128,
+	GPIO_V2_LINE_FLAG_BIAS_PULL_UP = 256,
+	GPIO_V2_LINE_FLAG_BIAS_PULL_DOWN = 512,
+	GPIO_V2_LINE_FLAG_BIAS_DISABLED = 1024,
+	GPIO_V2_LINE_FLAG_EVENT_CLOCK_REALTIME = 2048,
+	GPIO_V2_LINE_FLAG_EVENT_CLOCK_HTE = 4096,
+};
+
+enum gpio_v2_line_changed_type {
+	GPIO_V2_LINE_CHANGED_REQUESTED = 1,
+	GPIO_V2_LINE_CHANGED_RELEASED = 2,
+	GPIO_V2_LINE_CHANGED_CONFIG = 3,
+};
+
+enum gpio_v2_line_attr_id {
+	GPIO_V2_LINE_ATTR_ID_FLAGS = 1,
+	GPIO_V2_LINE_ATTR_ID_OUTPUT_VALUES = 2,
+	GPIO_V2_LINE_ATTR_ID_DEBOUNCE = 3,
+};
+
+enum gpio_v2_line_event_id {
+	GPIO_V2_LINE_EVENT_RISING_EDGE = 1,
+	GPIO_V2_LINE_EVENT_FALLING_EDGE = 2,
+};
+
+struct gpioevent_data {
+	__u64 timestamp;
+	__u32 id;
+};
+
+struct lineevent_state {
+	struct gpio_device *gdev;
+	const char *label;
+	struct gpio_desc *desc;
+	u32 eflags;
+	int irq;
+	wait_queue_head_t wait;
+	struct notifier_block device_unregistered_nb;
+	struct {
+		union {
+			struct __kfifo kfifo;
+			struct gpioevent_data *type;
+			const struct gpioevent_data *const_type;
+			char (*rectype)[0];
+			struct gpioevent_data *ptr;
+			const struct gpioevent_data *ptr_const;
+		};
+		struct gpioevent_data buf[16];
+	} events;
+	u64 timestamp;
+};
+
+struct linereq;
+
+struct line {
+	struct gpio_desc *desc;
+	struct linereq *req;
+	unsigned int irq;
+	u64 edflags;
+	u64 timestamp_ns;
+	u32 req_seqno;
+	u32 line_seqno;
+	struct delayed_work work;
+	unsigned int sw_debounced;
+	unsigned int level;
+};
+
+struct gpio_v2_line_event {
+	__u64 timestamp_ns;
+	__u32 id;
+	__u32 offset;
+	__u32 seqno;
+	__u32 line_seqno;
+	__u32 padding[6];
+};
+
+struct linereq {
+	struct gpio_device *gdev;
+	const char *label;
+	u32 num_lines;
+	wait_queue_head_t wait;
+	struct notifier_block device_unregistered_nb;
+	u32 event_buffer_size;
+	struct {
+		union {
+			struct __kfifo kfifo;
+			struct gpio_v2_line_event *type;
+			const struct gpio_v2_line_event *const_type;
+			char (*rectype)[0];
+			struct gpio_v2_line_event *ptr;
+			const struct gpio_v2_line_event *ptr_const;
+		};
+		struct gpio_v2_line_event buf[0];
+	} events;
+	atomic_t seqno;
+	struct mutex config_mutex;
+	struct line lines[0];
+};
+
+struct gpio_v2_line_attribute {
+	__u32 id;
+	__u32 padding;
+	union {
+		__u64 flags;
+		__u64 values;
+		__u32 debounce_period_us;
+	};
+};
+
+struct gpio_v2_line_info {
+	char name[32];
+	char consumer[32];
+	__u32 offset;
+	__u32 num_attrs;
+	__u64 flags;
+	struct gpio_v2_line_attribute attrs[10];
+	__u32 padding[4];
+};
+
+struct gpio_v2_line_info_changed {
+	struct gpio_v2_line_info info;
+	__u64 timestamp_ns;
+	__u32 event_type;
+	__u32 padding[5];
+};
+
+struct gpio_chardev_data {
+	struct gpio_device *gdev;
+	wait_queue_head_t wait;
+	struct {
+		union {
+			struct __kfifo kfifo;
+			struct gpio_v2_line_info_changed *type;
+			const struct gpio_v2_line_info_changed *const_type;
+			char (*rectype)[0];
+			struct gpio_v2_line_info_changed *ptr;
+			const struct gpio_v2_line_info_changed *ptr_const;
+		};
+		struct gpio_v2_line_info_changed buf[32];
+	} events;
+	struct notifier_block lineinfo_changed_nb;
+	struct notifier_block device_unregistered_nb;
+	unsigned long *watched_lines;
+	atomic_t watch_abi_version;
+};
+
+typedef ssize_t (*read_fn)(struct file *, char __attribute__((btf_type_tag("user"))) *, size_t, loff_t *);
+
+struct gpioline_info {
+	__u32 line_offset;
+	__u32 flags;
+	char name[32];
+	char consumer[32];
+};
+
+struct gpioline_info_changed {
+	struct gpioline_info info;
+	__u64 timestamp;
+	__u32 event_type;
+	__u32 padding[5];
+};
+
+typedef __poll_t (*poll_fn)(struct file *, struct poll_table_struct *);
+
+typedef long (*ioctl_fn)(struct file *, unsigned int, unsigned long);
+
+struct gpio_v2_line_config_attribute {
+	struct gpio_v2_line_attribute attr;
+	__u64 mask;
+};
+
+struct gpio_v2_line_config {
+	__u64 flags;
+	__u32 num_attrs;
+	__u32 padding[5];
+	struct gpio_v2_line_config_attribute attrs[10];
+};
+
+struct gpio_v2_line_request {
+	__u32 offsets[64];
+	char consumer[32];
+	struct gpio_v2_line_config config;
+	__u32 num_lines;
+	__u32 event_buffer_size;
+	__u32 padding[5];
+	__s32 fd;
+};
+
+struct gpiohandle_request {
+	__u32 lineoffsets[64];
+	__u32 flags;
+	__u8 default_values[64];
+	char consumer_label[32];
+	__u32 lines;
+	int fd;
+};
+
+struct linehandle_state {
+	struct gpio_device *gdev;
+	const char *label;
+	struct gpio_desc *descs[64];
+	u32 num_descs;
+};
+
+struct gpiochip_info {
+	char name[32];
+	char label[32];
+	__u32 lines;
+};
+
+struct gpioevent_request {
+	__u32 lineoffset;
+	__u32 handleflags;
+	__u32 eventflags;
+	char consumer_label[32];
+	int fd;
+};
+
+struct gpiohandle_data {
+	__u8 values[64];
+};
+
+struct gpiohandle_config {
+	__u32 flags;
+	__u8 default_values[64];
+	__u32 padding[4];
+};
+
+struct gpio_v2_line_values {
+	__u64 bits;
+	__u64 mask;
+};
+
+struct acpi_device_status {
+	u32 present: 1;
+	u32 enabled: 1;
+	u32 show_in_ui: 1;
+	u32 functional: 1;
+	u32 battery_present: 1;
+	u32 reserved: 27;
+};
+
+struct acpi_device_flags {
+	u32 dynamic_status: 1;
+	u32 removable: 1;
+	u32 ejectable: 1;
+	u32 power_manageable: 1;
+	u32 match_driver: 1;
+	u32 initialized: 1;
+	u32 visited: 1;
+	u32 hotplug_notify: 1;
+	u32 is_dock_station: 1;
+	u32 of_compatible_ok: 1;
+	u32 coherent_dma: 1;
+	u32 cca_seen: 1;
+	u32 enumeration_by_parent: 1;
+	u32 honor_deps: 1;
+	u32 reserved: 18;
+};
+
+typedef char acpi_bus_id[8];
+
+struct acpi_pnp_type {
+	u32 hardware_id: 1;
+	u32 bus_address: 1;
+	u32 platform_id: 1;
+	u32 backlight: 1;
+	u32 reserved: 28;
+};
+
+typedef u64 acpi_bus_address;
+
+typedef char acpi_device_name[40];
+
+typedef char acpi_device_class[20];
+
+struct acpi_device_pnp {
+	acpi_bus_id bus_id;
+	int instance_no;
+	struct acpi_pnp_type type;
+	acpi_bus_address bus_address;
+	char *unique_id;
+	struct list_head ids;
+	acpi_device_name device_name;
+	acpi_device_class device_class;
+	union acpi_object *str_obj;
+};
+
+struct acpi_device_power_flags {
+	u32 explicit_get: 1;
+	u32 power_resources: 1;
+	u32 inrush_current: 1;
+	u32 power_removed: 1;
+	u32 ignore_parent: 1;
+	u32 dsw_present: 1;
+	u32 reserved: 26;
+};
+
+struct acpi_device_power_state {
+	struct {
+		u8 valid: 1;
+		u8 explicit_set: 1;
+		u8 reserved: 6;
+	} flags;
+	int power;
+	int latency;
+	struct list_head resources;
+};
+
+struct acpi_device_power {
+	int state;
+	struct acpi_device_power_flags flags;
+	struct acpi_device_power_state states[5];
+	u8 state_for_enumeration;
+};
+
+struct acpi_device_wakeup_flags {
+	u8 valid: 1;
+	u8 notifier_present: 1;
+};
+
+struct acpi_device_wakeup_context {
+	void (*func)(struct acpi_device_wakeup_context *);
+	struct device *dev;
+};
+
+struct acpi_device_wakeup {
+	acpi_handle gpe_device;
+	u64 gpe_number;
+	u64 sleep_state;
+	struct list_head resources;
+	struct acpi_device_wakeup_flags flags;
+	struct acpi_device_wakeup_context context;
+	struct wakeup_source *ws;
+	int prepare_count;
+	int enable_count;
+};
+
+struct acpi_device_perf_flags {
+	u8 reserved: 8;
+};
+
+struct acpi_device_perf_state;
+
+struct acpi_device_perf {
+	int state;
+	struct acpi_device_perf_flags flags;
+	int state_count;
+	struct acpi_device_perf_state *states;
+};
+
+struct acpi_device_dir {
+	struct proc_dir_entry *entry;
+};
+
+struct acpi_device_data {
+	const union acpi_object *pointer;
+	struct list_head properties;
+	const union acpi_object *of_compatible;
+	struct list_head subnodes;
+};
+
+struct acpi_scan_handler;
+
+struct acpi_hotplug_context;
+
+struct acpi_gpio_mapping;
+
+struct acpi_device {
+	u32 pld_crc;
+	int device_type;
+	acpi_handle handle;
+	struct fwnode_handle fwnode;
+	struct list_head wakeup_list;
+	struct list_head del_list;
+	struct acpi_device_status status;
+	struct acpi_device_flags flags;
+	struct acpi_device_pnp pnp;
+	struct acpi_device_power power;
+	struct acpi_device_wakeup wakeup;
+	struct acpi_device_perf performance;
+	struct acpi_device_dir dir;
+	struct acpi_device_data data;
+	struct acpi_scan_handler *handler;
+	struct acpi_hotplug_context *hp;
+	const struct acpi_gpio_mapping *driver_gpios;
+	void *driver_data;
+	struct device dev;
+	unsigned int physical_node_count;
+	unsigned int dep_unmet;
+	struct list_head physical_node_list;
+	struct mutex physical_node_lock;
+	void (*remove)(struct acpi_device *);
+};
+
+struct acpi_device_perf_state {
+	struct {
+		u8 valid: 1;
+		u8 reserved: 7;
+	} flags;
+	u8 power;
+	u8 performance;
+	int latency;
+};
+
+struct acpi_hotplug_profile {
+	struct kobject kobj;
+	int (*scan_dependent)(struct acpi_device *);
+	void (*notify_online)(struct acpi_device *);
+	bool enabled: 1;
+	bool demand_offline: 1;
+};
+
+struct acpi_scan_handler {
+	const struct acpi_device_id *ids;
+	struct list_head list_node;
+	bool (*match)(const char *, const struct acpi_device_id **);
+	int (*attach)(struct acpi_device *, const struct acpi_device_id *);
+	void (*detach)(struct acpi_device *);
+	void (*bind)(struct device *);
+	void (*unbind)(struct device *);
+	struct acpi_hotplug_profile hotplug;
+};
+
+struct acpi_hotplug_context {
+	struct acpi_device *self;
+	int (*notify)(struct acpi_device *, u32);
+	void (*uevent)(struct acpi_device *, u32);
+	void (*fixup)(struct acpi_device *);
+};
+
+struct acpi_gpio_params;
+
+struct acpi_gpio_mapping {
+	const char *name;
+	const struct acpi_gpio_params *data;
+	unsigned int size;
+	unsigned int quirks;
+};
+
+struct acpi_gpio_params {
+	unsigned int crs_entry_index;
+	unsigned int line_index;
+	bool active_low;
+};
+
+struct acpi_gpio_event {
+	struct list_head node;
+	acpi_handle handle;
+	irq_handler_t handler;
+	unsigned int pin;
+	unsigned int irq;
+	unsigned long irqflags;
+	bool irq_is_wake;
+	bool irq_requested;
+	struct gpio_desc *desc;
+};
+
+typedef u8 acpi_adr_space_type;
+
+struct acpi_gpio_connection {
+	struct list_head node;
+	unsigned int pin;
+	struct gpio_desc *desc;
+};
+
+struct acpi_connection_info {
+	u8 *connection;
+	u16 length;
+	u8 access_length;
+};
+
+struct acpi_gpio_chip {
+	struct acpi_connection_info conn_info;
+	struct list_head conns;
+	struct mutex conn_lock;
+	struct gpio_chip *chip;
+	struct list_head events;
+	struct list_head deferred_req_irqs_list_entry;
+};
+
+typedef void (*acpi_object_handler)(acpi_handle, void *);
+
+struct acpi_resource;
+
+typedef acpi_status (*acpi_walk_resource_callback)(struct acpi_resource *, void *);
+
+struct acpi_resource_irq {
+	u8 descriptor_length;
+	u8 triggering;
+	u8 polarity;
+	u8 shareable;
+	u8 wake_capable;
+	u8 interrupt_count;
+	union {
+		u8 interrupt;
+		struct {
+			struct {} __Empty_interrupts;
+			u8 interrupts[0];
+		};
+	};
+};
+
+struct acpi_resource_dma {
+	u8 type;
+	u8 bus_master;
+	u8 transfer;
+	u8 channel_count;
+	union {
+		u8 channel;
+		struct {
+			struct {} __Empty_channels;
+			u8 channels[0];
+		};
+	};
+};
+
+struct acpi_resource_start_dependent {
+	u8 descriptor_length;
+	u8 compatibility_priority;
+	u8 performance_robustness;
+};
+
+struct acpi_resource_io {
+	u8 io_decode;
+	u8 alignment;
+	u8 address_length;
+	u16 minimum;
+	u16 maximum;
+} __attribute__((packed));
+
+struct acpi_resource_fixed_io {
+	u16 address;
+	u8 address_length;
+} __attribute__((packed));
+
+struct acpi_resource_fixed_dma {
+	u16 request_lines;
+	u16 channels;
+	u8 width;
+} __attribute__((packed));
+
+struct acpi_resource_vendor {
+	u16 byte_length;
+	u8 byte_data[0];
+};
+
+struct acpi_resource_vendor_typed {
+	u16 byte_length;
+	u8 uuid_subtype;
+	u8 uuid[16];
+	u8 byte_data[0];
+} __attribute__((packed));
+
+struct acpi_resource_end_tag {
+	u8 checksum;
+};
+
+struct acpi_resource_memory24 {
+	u8 write_protect;
+	u16 minimum;
+	u16 maximum;
+	u16 alignment;
+	u16 address_length;
+} __attribute__((packed));
+
+struct acpi_resource_memory32 {
+	u8 write_protect;
+	u32 minimum;
+	u32 maximum;
+	u32 alignment;
+	u32 address_length;
+} __attribute__((packed));
+
+struct acpi_resource_fixed_memory32 {
+	u8 write_protect;
+	u32 address;
+	u32 address_length;
+} __attribute__((packed));
+
+struct acpi_memory_attribute {
+	u8 write_protect;
+	u8 caching;
+	u8 range_type;
+	u8 translation;
+};
+
+struct acpi_io_attribute {
+	u8 range_type;
+	u8 translation;
+	u8 translation_type;
+	u8 reserved1;
+};
+
+union acpi_resource_attribute {
+	struct acpi_memory_attribute mem;
+	struct acpi_io_attribute io;
+	u8 type_specific;
+};
+
+struct acpi_address16_attribute {
+	u16 granularity;
+	u16 minimum;
+	u16 maximum;
+	u16 translation_offset;
+	u16 address_length;
+};
+
+struct acpi_resource_source {
+	u8 index;
+	u16 string_length;
+	char *string_ptr;
+} __attribute__((packed));
+
+struct acpi_resource_address16 {
+	u8 resource_type;
+	u8 producer_consumer;
+	u8 decode;
+	u8 min_address_fixed;
+	u8 max_address_fixed;
+	union acpi_resource_attribute info;
+	struct acpi_address16_attribute address;
+	struct acpi_resource_source resource_source;
+} __attribute__((packed));
+
+struct acpi_address32_attribute {
+	u32 granularity;
+	u32 minimum;
+	u32 maximum;
+	u32 translation_offset;
+	u32 address_length;
+};
+
+struct acpi_resource_address32 {
+	u8 resource_type;
+	u8 producer_consumer;
+	u8 decode;
+	u8 min_address_fixed;
+	u8 max_address_fixed;
+	union acpi_resource_attribute info;
+	struct acpi_address32_attribute address;
+	struct acpi_resource_source resource_source;
+} __attribute__((packed));
+
+struct acpi_address64_attribute {
+	u64 granularity;
+	u64 minimum;
+	u64 maximum;
+	u64 translation_offset;
+	u64 address_length;
+};
+
+struct acpi_resource_address64 {
+	u8 resource_type;
+	u8 producer_consumer;
+	u8 decode;
+	u8 min_address_fixed;
+	u8 max_address_fixed;
+	union acpi_resource_attribute info;
+	struct acpi_address64_attribute address;
+	struct acpi_resource_source resource_source;
+} __attribute__((packed));
+
+struct acpi_resource_extended_address64 {
+	u8 resource_type;
+	u8 producer_consumer;
+	u8 decode;
+	u8 min_address_fixed;
+	u8 max_address_fixed;
+	union acpi_resource_attribute info;
+	u8 revision_ID;
+	struct acpi_address64_attribute address;
+	u64 type_specific;
+} __attribute__((packed));
+
+struct acpi_resource_extended_irq {
+	u8 producer_consumer;
+	u8 triggering;
+	u8 polarity;
+	u8 shareable;
+	u8 wake_capable;
+	u8 interrupt_count;
+	struct acpi_resource_source resource_source;
+	union {
+		u32 interrupt;
+		struct {
+			struct {} __Empty_interrupts;
+			u32 interrupts[0];
+		};
+	};
+} __attribute__((packed));
+
+struct acpi_resource_generic_register {
+	u8 space_id;
+	u8 bit_width;
+	u8 bit_offset;
+	u8 access_size;
+	u64 address;
+} __attribute__((packed));
+
+struct acpi_resource_gpio {
+	u8 revision_id;
+	u8 connection_type;
+	u8 producer_consumer;
+	u8 pin_config;
+	u8 shareable;
+	u8 wake_capable;
+	u8 io_restriction;
+	u8 triggering;
+	u8 polarity;
+	u16 drive_strength;
+	u16 debounce_timeout;
+	u16 pin_table_length;
+	u16 vendor_length;
+	struct acpi_resource_source resource_source;
+	u16 *pin_table;
+	u8 *vendor_data;
+} __attribute__((packed));
+
+struct acpi_resource_i2c_serialbus {
+	u8 revision_id;
+	u8 type;
+	u8 producer_consumer;
+	u8 slave_mode;
+	u8 connection_sharing;
+	u8 type_revision_id;
+	u16 type_data_length;
+	u16 vendor_length;
+	struct acpi_resource_source resource_source;
+	u8 *vendor_data;
+	u8 access_mode;
+	u16 slave_address;
+	u32 connection_speed;
+} __attribute__((packed));
+
+struct acpi_resource_spi_serialbus {
+	u8 revision_id;
+	u8 type;
+	u8 producer_consumer;
+	u8 slave_mode;
+	u8 connection_sharing;
+	u8 type_revision_id;
+	u16 type_data_length;
+	u16 vendor_length;
+	struct acpi_resource_source resource_source;
+	u8 *vendor_data;
+	u8 wire_mode;
+	u8 device_polarity;
+	u8 data_bit_length;
+	u8 clock_phase;
+	u8 clock_polarity;
+	u16 device_selection;
+	u32 connection_speed;
+} __attribute__((packed));
+
+struct acpi_resource_uart_serialbus {
+	u8 revision_id;
+	u8 type;
+	u8 producer_consumer;
+	u8 slave_mode;
+	u8 connection_sharing;
+	u8 type_revision_id;
+	u16 type_data_length;
+	u16 vendor_length;
+	struct acpi_resource_source resource_source;
+	u8 *vendor_data;
+	u8 endian;
+	u8 data_bits;
+	u8 stop_bits;
+	u8 flow_control;
+	u8 parity;
+	u8 lines_enabled;
+	u16 rx_fifo_size;
+	u16 tx_fifo_size;
+	u32 default_baud_rate;
+} __attribute__((packed));
+
+struct acpi_resource_csi2_serialbus {
+	u8 revision_id;
+	u8 type;
+	u8 producer_consumer;
+	u8 slave_mode;
+	u8 connection_sharing;
+	u8 type_revision_id;
+	u16 type_data_length;
+	u16 vendor_length;
+	struct acpi_resource_source resource_source;
+	u8 *vendor_data;
+	u8 local_port_instance;
+	u8 phy_type;
+} __attribute__((packed));
+
+struct acpi_resource_common_serialbus {
+	u8 revision_id;
+	u8 type;
+	u8 producer_consumer;
+	u8 slave_mode;
+	u8 connection_sharing;
+	u8 type_revision_id;
+	u16 type_data_length;
+	u16 vendor_length;
+	struct acpi_resource_source resource_source;
+	u8 *vendor_data;
+} __attribute__((packed));
+
+struct acpi_resource_pin_function {
+	u8 revision_id;
+	u8 pin_config;
+	u8 shareable;
+	u16 function_number;
+	u16 pin_table_length;
+	u16 vendor_length;
+	struct acpi_resource_source resource_source;
+	u16 *pin_table;
+	u8 *vendor_data;
+} __attribute__((packed));
+
+struct acpi_resource_pin_config {
+	u8 revision_id;
+	u8 producer_consumer;
+	u8 shareable;
+	u8 pin_config_type;
+	u32 pin_config_value;
+	u16 pin_table_length;
+	u16 vendor_length;
+	struct acpi_resource_source resource_source;
+	u16 *pin_table;
+	u8 *vendor_data;
+} __attribute__((packed));
+
+struct acpi_resource_label {
+	u16 string_length;
+	char *string_ptr;
+} __attribute__((packed));
+
+struct acpi_resource_pin_group {
+	u8 revision_id;
+	u8 producer_consumer;
+	u16 pin_table_length;
+	u16 vendor_length;
+	u16 *pin_table;
+	struct acpi_resource_label resource_label;
+	u8 *vendor_data;
+} __attribute__((packed));
+
+struct acpi_resource_pin_group_function {
+	u8 revision_id;
+	u8 producer_consumer;
+	u8 shareable;
+	u16 function_number;
+	u16 vendor_length;
+	struct acpi_resource_source resource_source;
+	struct acpi_resource_label resource_source_label;
+	u8 *vendor_data;
+} __attribute__((packed));
+
+struct acpi_resource_pin_group_config {
+	u8 revision_id;
+	u8 producer_consumer;
+	u8 shareable;
+	u8 pin_config_type;
+	u32 pin_config_value;
+	u16 vendor_length;
+	struct acpi_resource_source resource_source;
+	struct acpi_resource_label resource_source_label;
+	u8 *vendor_data;
+} __attribute__((packed));
+
+struct acpi_resource_clock_input {
+	u8 revision_id;
+	u8 mode;
+	u8 scale;
+	u16 frequency_divisor;
+	u32 frequency_numerator;
+	struct acpi_resource_source resource_source;
+} __attribute__((packed));
+
+struct acpi_resource_address {
+	u8 resource_type;
+	u8 producer_consumer;
+	u8 decode;
+	u8 min_address_fixed;
+	u8 max_address_fixed;
+	union acpi_resource_attribute info;
+};
+
+union acpi_resource_data {
+	struct acpi_resource_irq irq;
+	struct acpi_resource_dma dma;
+	struct acpi_resource_start_dependent start_dpf;
+	struct acpi_resource_io io;
+	struct acpi_resource_fixed_io fixed_io;
+	struct acpi_resource_fixed_dma fixed_dma;
+	struct acpi_resource_vendor vendor;
+	struct acpi_resource_vendor_typed vendor_typed;
+	struct acpi_resource_end_tag end_tag;
+	struct acpi_resource_memory24 memory24;
+	struct acpi_resource_memory32 memory32;
+	struct acpi_resource_fixed_memory32 fixed_memory32;
+	struct acpi_resource_address16 address16;
+	struct acpi_resource_address32 address32;
+	struct acpi_resource_address64 address64;
+	struct acpi_resource_extended_address64 ext_address64;
+	struct acpi_resource_extended_irq extended_irq;
+	struct acpi_resource_generic_register generic_reg;
+	struct acpi_resource_gpio gpio;
+	struct acpi_resource_i2c_serialbus i2c_serial_bus;
+	struct acpi_resource_spi_serialbus spi_serial_bus;
+	struct acpi_resource_uart_serialbus uart_serial_bus;
+	struct acpi_resource_csi2_serialbus csi2_serial_bus;
+	struct acpi_resource_common_serialbus common_serial_bus;
+	struct acpi_resource_pin_function pin_function;
+	struct acpi_resource_pin_config pin_config;
+	struct acpi_resource_pin_group pin_group;
+	struct acpi_resource_pin_group_function pin_group_function;
+	struct acpi_resource_pin_group_config pin_group_config;
+	struct acpi_resource_clock_input clock_input;
+	struct acpi_resource_address address;
+};
+
+struct acpi_resource {
+	u32 type;
+	u32 length;
+	union acpi_resource_data data;
+};
+
+struct acpi_gpio_info {
+	struct acpi_device *adev;
+	enum gpiod_flags flags;
+	bool gpioint;
+	int pin_config;
+	int polarity;
+	int triggering;
+	bool wake_capable;
+	unsigned int debounce;
+	unsigned int quirks;
+};
+
+struct acpi_gpio_lookup {
+	struct acpi_gpio_info info;
+	int index;
+	u16 pin_index;
+	bool active_low;
+	struct gpio_desc *desc;
+	int n;
+};
+
+typedef acpi_status (*acpi_adr_space_handler)(u32, acpi_physical_address, u32, u64 *, void *, void *);
+
+typedef acpi_status (*acpi_adr_space_setup)(acpi_handle, u32, void *, void **);
+
+typedef u64 acpi_size;
+
+struct acpi_buffer {
+	acpi_size length;
+	void *pointer;
+};
+
+struct acpi_gpiolib_dmi_quirk {
+	bool no_edge_events_on_boot;
+	char *ignore_wake;
+	char *ignore_interrupt;
+};
+
+struct software_node {
+	const char *name;
+	const struct software_node *parent;
+	const struct property_entry *properties;
+};
+
+struct bgpio_pdata {
+	const char *label;
+	int base;
+	int ngpio;
+};
+
+enum {
+	pci_channel_io_normal = 1,
+	pci_channel_io_frozen = 2,
+	pci_channel_io_perm_failure = 3,
+};
+
+struct rcec_ea {
+	u8 nextbusn;
+	u8 lastbusn;
+	u32 bitmap;
+};
+
+struct pci_sriov {
+	int pos;
+	int nres;
+	u32 cap;
+	u16 ctrl;
+	u16 total_VFs;
+	u16 initial_VFs;
+	u16 num_VFs;
+	u16 offset;
+	u16 stride;
+	u16 vf_device;
+	u32 pgsz;
+	u8 link;
+	u8 max_VF_buses;
+	u16 driver_max_VFs;
+	struct pci_dev *dev;
+	struct pci_dev *self;
+	u32 class;
+	u8 hdr_type;
+	u16 subsystem_vendor;
+	u16 subsystem_device;
+	resource_size_t barsz[6];
+	bool drivers_autoprobe;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+typedef u64 pci_bus_addr_t;
+
+struct pci_bus_region {
+	pci_bus_addr_t start;
+	pci_bus_addr_t end;
+};
+
+enum pci_fixup_pass {
+	pci_fixup_early = 0,
+	pci_fixup_header = 1,
+	pci_fixup_final = 2,
+	pci_fixup_enable = 3,
+	pci_fixup_resume = 4,
+	pci_fixup_suspend = 5,
+	pci_fixup_resume_early = 6,
+	pci_fixup_suspend_late = 7,
+};
+
+struct pci_bus_resource {
+	struct list_head list;
+	struct resource *res;
+	unsigned int flags;
+};
+
+enum pci_bar_type {
+	pci_bar_unknown = 0,
+	pci_bar_io = 1,
+	pci_bar_mem32 = 2,
+	pci_bar_mem64 = 3,
+};
+
+enum pci_bus_speed {
+	PCI_SPEED_33MHz = 0,
+	PCI_SPEED_66MHz = 1,
+	PCI_SPEED_66MHz_PCIX = 2,
+	PCI_SPEED_100MHz_PCIX = 3,
+	PCI_SPEED_133MHz_PCIX = 4,
+	PCI_SPEED_66MHz_PCIX_ECC = 5,
+	PCI_SPEED_100MHz_PCIX_ECC = 6,
+	PCI_SPEED_133MHz_PCIX_ECC = 7,
+	PCI_SPEED_66MHz_PCIX_266 = 9,
+	PCI_SPEED_100MHz_PCIX_266 = 10,
+	PCI_SPEED_133MHz_PCIX_266 = 11,
+	AGP_UNKNOWN = 12,
+	AGP_1X = 13,
+	AGP_2X = 14,
+	AGP_4X = 15,
+	AGP_8X = 16,
+	PCI_SPEED_66MHz_PCIX_533 = 17,
+	PCI_SPEED_100MHz_PCIX_533 = 18,
+	PCI_SPEED_133MHz_PCIX_533 = 19,
+	PCIE_SPEED_2_5GT = 20,
+	PCIE_SPEED_5_0GT = 21,
+	PCIE_SPEED_8_0GT = 22,
+	PCIE_SPEED_16_0GT = 23,
+	PCIE_SPEED_32_0GT = 24,
+	PCIE_SPEED_64_0GT = 25,
+	PCI_SPEED_UNKNOWN = 255,
+};
+
+enum pci_bus_flags {
+	PCI_BUS_FLAGS_NO_MSI = 1,
+	PCI_BUS_FLAGS_NO_MMRBC = 2,
+	PCI_BUS_FLAGS_NO_AERSID = 4,
+	PCI_BUS_FLAGS_NO_EXTCFG = 8,
+};
+
+enum pcie_bus_config_types {
+	PCIE_BUS_TUNE_OFF = 0,
+	PCIE_BUS_DEFAULT = 1,
+	PCIE_BUS_SAFE = 2,
+	PCIE_BUS_PERFORMANCE = 3,
+	PCIE_BUS_PEER2PEER = 4,
+};
+
+enum {
+	PCI_REASSIGN_ALL_RSRC = 1,
+	PCI_REASSIGN_ALL_BUS = 2,
+	PCI_PROBE_ONLY = 4,
+	PCI_CAN_SKIP_ISA_ALIGN = 8,
+	PCI_ENABLE_PROC_DOMAINS = 16,
+	PCI_COMPAT_DOMAIN_0 = 32,
+	PCI_SCAN_ALL_PCIE_DEVS = 64,
+};
+
+enum pci_dev_flags {
+	PCI_DEV_FLAGS_MSI_INTX_DISABLE_BUG = 1,
+	PCI_DEV_FLAGS_NO_D3 = 2,
+	PCI_DEV_FLAGS_ASSIGNED = 4,
+	PCI_DEV_FLAGS_ACS_ENABLED_QUIRK = 8,
+	PCI_DEV_FLAG_PCIE_BRIDGE_ALIAS = 32,
+	PCI_DEV_FLAGS_NO_BUS_RESET = 64,
+	PCI_DEV_FLAGS_NO_PM_RESET = 128,
+	PCI_DEV_FLAGS_VPD_REF_F0 = 256,
+	PCI_DEV_FLAGS_BRIDGE_XLATE_ROOT = 512,
+	PCI_DEV_FLAGS_NO_FLR_RESET = 1024,
+	PCI_DEV_FLAGS_NO_RELAXED_ORDERING = 2048,
+	PCI_DEV_FLAGS_HAS_MSI_MASKING = 4096,
+};
+
+struct hotplug_slot_ops;
+
+struct hotplug_slot {
+	const struct hotplug_slot_ops *ops;
+	struct list_head slot_list;
+	struct pci_slot *pci_slot;
+	struct module *owner;
+	const char *mod_name;
+};
+
+struct hotplug_slot_ops {
+	int (*enable_slot)(struct hotplug_slot *);
+	int (*disable_slot)(struct hotplug_slot *);
+	int (*set_attention_status)(struct hotplug_slot *, u8);
+	int (*hardware_test)(struct hotplug_slot *, u32);
+	int (*get_power_status)(struct hotplug_slot *, u8 *);
+	int (*get_attention_status)(struct hotplug_slot *, u8 *);
+	int (*get_latch_status)(struct hotplug_slot *, u8 *);
+	int (*get_adapter_status)(struct hotplug_slot *, u8 *);
+	int (*reset_slot)(struct hotplug_slot *, bool);
+};
+
+struct pci_host_bridge {
+	struct device dev;
+	struct pci_bus *bus;
+	struct pci_ops *ops;
+	struct pci_ops *child_ops;
+	void *sysdata;
+	int busnr;
+	int domain_nr;
+	struct list_head windows;
+	struct list_head dma_ranges;
+	u8 (*swizzle_irq)(struct pci_dev *, u8 *);
+	int (*map_irq)(const struct pci_dev *, u8, u8);
+	void (*release_fn)(struct pci_host_bridge *);
+	void *release_data;
+	unsigned int ignore_reset_delay: 1;
+	unsigned int no_ext_tags: 1;
+	unsigned int no_inc_mrrs: 1;
+	unsigned int native_aer: 1;
+	unsigned int native_pcie_hotplug: 1;
+	unsigned int native_shpc_hotplug: 1;
+	unsigned int native_pme: 1;
+	unsigned int native_ltr: 1;
+	unsigned int native_dpc: 1;
+	unsigned int native_cxl_error: 1;
+	unsigned int preserve_config: 1;
+	unsigned int size_windows: 1;
+	unsigned int msi_domain: 1;
+	resource_size_t (*align_resource)(struct pci_dev *, const struct resource *, resource_size_t, resource_size_t, resource_size_t);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	unsigned long private[0];
+};
+
+struct pci_domain_busn_res {
+	struct list_head list;
+	struct resource res;
+	int domain_nr;
+};
+
+typedef int (*arch_set_vga_state_t)(struct pci_dev *, bool, unsigned int, u32);
+
+struct pci_reset_fn_method {
+	int (*reset_fn)(struct pci_dev *, bool);
+	char *name;
+};
+
+struct bus_attribute {
+	struct attribute attr;
+	ssize_t (*show)(const struct bus_type *, char *);
+	ssize_t (*store)(const struct bus_type *, const char *, size_t);
+};
+
+enum pcie_reset_state {
+	pcie_deassert_reset = 1,
+	pcie_warm_reset = 2,
+	pcie_hot_reset = 3,
+};
+
+enum pcie_link_width {
+	PCIE_LNK_WIDTH_RESRV = 0,
+	PCIE_LNK_X1 = 1,
+	PCIE_LNK_X2 = 2,
+	PCIE_LNK_X4 = 4,
+	PCIE_LNK_X8 = 8,
+	PCIE_LNK_X12 = 12,
+	PCIE_LNK_X16 = 16,
+	PCIE_LNK_X32 = 32,
+	PCIE_LNK_WIDTH_UNKNOWN = 255,
+};
+
+struct pci_cap_saved_data {
+	u16 cap_nr;
+	bool cap_extended;
+	unsigned int size;
+	u32 data[0];
+};
+
+struct pci_cap_saved_state {
+	struct hlist_node next;
+	struct pci_cap_saved_data cap;
+};
+
+struct pci_pme_device {
+	struct list_head list;
+	struct pci_dev *dev;
+};
+
+struct pci_devres {
+	unsigned int enabled: 1;
+	unsigned int pinned: 1;
+	unsigned int orig_intx: 1;
+	unsigned int restore_intx: 1;
+	unsigned int mwi: 1;
+	u32 region_mask;
+};
+
+struct pci_saved_state {
+	u32 config_space[16];
+	struct pci_cap_saved_data cap[0];
+};
+
+struct driver_attribute {
+	struct attribute attr;
+	ssize_t (*show)(struct device_driver *, char *);
+	ssize_t (*store)(struct device_driver *, const char *, size_t);
+};
+
+enum pci_ers_result {
+	PCI_ERS_RESULT_NONE = 1,
+	PCI_ERS_RESULT_CAN_RECOVER = 2,
+	PCI_ERS_RESULT_NEED_RESET = 3,
+	PCI_ERS_RESULT_DISCONNECT = 4,
+	PCI_ERS_RESULT_RECOVERED = 5,
+	PCI_ERS_RESULT_NO_AER_DRIVER = 6,
+};
+
+struct pci_dynid {
+	struct list_head node;
+	struct pci_device_id id;
+};
+
+struct pcie_device {
+	int irq;
+	struct pci_dev *port;
+	u32 service;
+	void *priv_data;
+	struct device device;
+};
+
+struct pcie_port_service_driver {
+	const char *name;
+	int (*probe)(struct pcie_device *);
+	void (*remove)(struct pcie_device *);
+	int (*suspend)(struct pcie_device *);
+	int (*resume_noirq)(struct pcie_device *);
+	int (*resume)(struct pcie_device *);
+	int (*runtime_suspend)(struct pcie_device *);
+	int (*runtime_resume)(struct pcie_device *);
+	int (*slot_reset)(struct pcie_device *);
+	int port_type;
+	u32 service;
+	struct device_driver driver;
+};
+
+struct drv_dev_and_id {
+	struct pci_driver *drv;
+	struct pci_dev *dev;
+	const struct pci_device_id *id;
+};
+
+enum pci_mmap_api {
+	PCI_MMAP_SYSFS = 0,
+	PCI_MMAP_PROCFS = 1,
+};
+
+enum pci_mmap_state {
+	pci_mmap_io = 0,
+	pci_mmap_mem = 1,
+};
+
+enum enable_type {
+	undefined = -1,
+	user_disabled = 0,
+	auto_disabled = 1,
+	user_enabled = 2,
+	auto_enabled = 3,
+};
+
+enum release_type {
+	leaf_only = 0,
+	whole_subtree = 1,
+};
+
+struct pci_dev_resource {
+	struct list_head list;
+	struct resource *res;
+	struct pci_dev *dev;
+	resource_size_t start;
+	resource_size_t end;
+	resource_size_t add_size;
+	resource_size_t min_align;
+	unsigned long flags;
+};
+
+enum support_mode {
+	ALLOW_LEGACY = 0,
+	DENY_LEGACY = 1,
+};
+
+struct msix_entry {
+	u32 vector;
+	u16 entry;
+};
+
+struct portdrv_service_data {
+	struct pcie_port_service_driver *drv;
+	struct device *dev;
+	u32 service;
+};
+
+typedef int (*pcie_callback_t)(struct pcie_device *);
+
+struct walk_rcec_data {
+	struct pci_dev *rcec;
+	int (*user_callback)(struct pci_dev *, void *);
+	void *user_data;
+};
+
+struct pcie_link_state {
+	struct pci_dev *pdev;
+	struct pci_dev *downstream;
+	struct pcie_link_state *root;
+	struct pcie_link_state *parent;
+	struct list_head sibling;
+	u32 aspm_support: 7;
+	u32 aspm_enabled: 7;
+	u32 aspm_capable: 7;
+	u32 aspm_default: 7;
+	int: 4;
+	u32 aspm_disable: 7;
+	u32 clkpm_capable: 1;
+	u32 clkpm_enabled: 1;
+	u32 clkpm_default: 1;
+	u32 clkpm_disable: 1;
+};
+
+struct aer_stats {
+	u64 dev_cor_errs[16];
+	u64 dev_fatal_errs[27];
+	u64 dev_nonfatal_errs[27];
+	u64 dev_total_cor_errs;
+	u64 dev_total_fatal_errs;
+	u64 dev_total_nonfatal_errs;
+	u64 rootport_total_cor_errs;
+	u64 rootport_total_fatal_errs;
+	u64 rootport_total_nonfatal_errs;
+};
+
+struct aer_err_source {
+	unsigned int status;
+	unsigned int id;
+};
+
+struct aer_header_log_regs {
+	unsigned int dw0;
+	unsigned int dw1;
+	unsigned int dw2;
+	unsigned int dw3;
+};
+
+struct aer_err_info {
+	struct pci_dev *dev[5];
+	int error_dev_num;
+	unsigned int id: 16;
+	unsigned int severity: 2;
+	unsigned int __pad1: 5;
+	unsigned int multi_error_valid: 1;
+	unsigned int first_error: 5;
+	unsigned int __pad2: 2;
+	unsigned int tlp_header_valid: 1;
+	unsigned int status;
+	unsigned int mask;
+	struct aer_header_log_regs tlp;
+};
+
+struct aer_rpc {
+	struct pci_dev *rpd;
+	struct {
+		union {
+			struct __kfifo kfifo;
+			struct aer_err_source *type;
+			const struct aer_err_source *const_type;
+			char (*rectype)[0];
+			struct aer_err_source *ptr;
+			const struct aer_err_source *ptr_const;
+		};
+		struct aer_err_source buf[128];
+	} aer_fifo;
+};
+
+struct pcie_pme_service_data {
+	spinlock_t lock;
+	struct pcie_device *srv;
+	struct work_struct work;
+	bool noirq;
+};
+
+struct pci_filp_private {
+	enum pci_mmap_state mmap_state;
+	int write_combine;
+};
+
+struct pci_slot_attribute {
+	struct attribute attr;
+	ssize_t (*show)(struct pci_slot *, char *);
+	ssize_t (*store)(struct pci_slot *, const char *, size_t);
+};
+
+struct hpx_type0 {
+	u32 revision;
+	u8 cache_line_size;
+	u8 latency_timer;
+	u8 enable_serr;
+	u8 enable_perr;
+};
+
+enum pm_qos_flags_status {
+	PM_QOS_FLAGS_UNDEFINED = -1,
+	PM_QOS_FLAGS_NONE = 0,
+	PM_QOS_FLAGS_SOME = 1,
+	PM_QOS_FLAGS_ALL = 2,
+};
+
+enum hpx_type3_cfg_loc {
+	HPX_CFG_PCICFG = 0,
+	HPX_CFG_PCIE_CAP = 1,
+	HPX_CFG_PCIE_CAP_EXT = 2,
+	HPX_CFG_VEND_CAP = 3,
+	HPX_CFG_DVSEC = 4,
+	HPX_CFG_MAX = 5,
+};
+
+enum hpx_type3_fn_type {
+	HPX_FN_NORMAL = 1,
+	HPX_FN_SRIOV_PHYS = 2,
+	HPX_FN_SRIOV_VIRT = 4,
+};
+
+struct hpx_type1 {
+	u32 revision;
+	u8 max_mem_read;
+	u8 avg_max_split;
+	u16 tot_max_split;
+};
+
+struct hpx_type2 {
+	u32 revision;
+	u32 unc_err_mask_and;
+	u32 unc_err_mask_or;
+	u32 unc_err_sever_and;
+	u32 unc_err_sever_or;
+	u32 cor_err_mask_and;
+	u32 cor_err_mask_or;
+	u32 adv_err_cap_and;
+	u32 adv_err_cap_or;
+	u16 pci_exp_devctl_and;
+	u16 pci_exp_devctl_or;
+	u16 pci_exp_lnkctl_and;
+	u16 pci_exp_lnkctl_or;
+	u32 sec_unc_err_sever_and;
+	u32 sec_unc_err_sever_or;
+	u32 sec_unc_err_mask_and;
+	u32 sec_unc_err_mask_or;
+};
+
+struct hpx_type3 {
+	u16 device_type;
+	u16 function_type;
+	u16 config_space_location;
+	u16 pci_exp_cap_id;
+	u16 pci_exp_cap_ver;
+	u16 pci_exp_vendor_id;
+	u16 dvsec_id;
+	u16 dvsec_rev;
+	u16 match_offset;
+	u32 match_mask_and;
+	u32 match_value;
+	u16 reg_offset;
+	u32 reg_mask_and;
+	u32 reg_mask_or;
+};
+
+struct acpi_pci_root {
+	struct acpi_device *device;
+	struct pci_bus *bus;
+	u16 segment;
+	int bridge_type;
+	struct resource secondary;
+	u32 osc_support_set;
+	u32 osc_control_set;
+	u32 osc_ext_support_set;
+	u32 osc_ext_control_set;
+	phys_addr_t mcfg_addr;
+};
+
+struct of_pci_range {
+	union {
+		u64 pci_addr;
+		u64 bus_addr;
+	};
+	u64 cpu_addr;
+	u64 size;
+	u32 flags;
+};
+
+struct of_bus;
+
+struct of_pci_range_parser {
+	struct device_node *node;
+	struct of_bus *bus;
+	const __be32 *range;
+	const __be32 *end;
+	int na;
+	int ns;
+	int pna;
+	bool dma;
+};
+
+struct pci_dev_reset_methods {
+	u16 vendor;
+	u16 device;
+	int (*reset)(struct pci_dev *, bool);
+};
+
+struct pci_dev_acs_enabled {
+	u16 vendor;
+	u16 device;
+	int (*acs_enabled)(struct pci_dev *, u16);
+};
+
+struct pci_dev_acs_ops {
+	u16 vendor;
+	u16 device;
+	int (*enable_acs)(struct pci_dev *);
+	int (*disable_acs_redir)(struct pci_dev *);
+};
+
+enum pci_irq_reroute_variant {
+	INTEL_IRQ_REROUTE_VARIANT = 1,
+	MAX_IRQ_REROUTE_VARIANTS = 3,
+};
+
+enum {
+	NVME_REG_CAP = 0,
+	NVME_REG_VS = 8,
+	NVME_REG_INTMS = 12,
+	NVME_REG_INTMC = 16,
+	NVME_REG_CC = 20,
+	NVME_REG_CSTS = 28,
+	NVME_REG_NSSR = 32,
+	NVME_REG_AQA = 36,
+	NVME_REG_ASQ = 40,
+	NVME_REG_ACQ = 48,
+	NVME_REG_CMBLOC = 56,
+	NVME_REG_CMBSZ = 60,
+	NVME_REG_BPINFO = 64,
+	NVME_REG_BPRSEL = 68,
+	NVME_REG_BPMBL = 72,
+	NVME_REG_CMBMSC = 80,
+	NVME_REG_CRTO = 104,
+	NVME_REG_PMRCAP = 3584,
+	NVME_REG_PMRCTL = 3588,
+	NVME_REG_PMRSTS = 3592,
+	NVME_REG_PMREBS = 3596,
+	NVME_REG_PMRSWTP = 3600,
+	NVME_REG_DBS = 4096,
+};
+
+enum {
+	NVME_CC_ENABLE = 1,
+	NVME_CC_EN_SHIFT = 0,
+	NVME_CC_CSS_SHIFT = 4,
+	NVME_CC_MPS_SHIFT = 7,
+	NVME_CC_AMS_SHIFT = 11,
+	NVME_CC_SHN_SHIFT = 14,
+	NVME_CC_IOSQES_SHIFT = 16,
+	NVME_CC_IOCQES_SHIFT = 20,
+	NVME_CC_CSS_NVM = 0,
+	NVME_CC_CSS_CSI = 96,
+	NVME_CC_CSS_MASK = 112,
+	NVME_CC_AMS_RR = 0,
+	NVME_CC_AMS_WRRU = 2048,
+	NVME_CC_AMS_VS = 14336,
+	NVME_CC_SHN_NONE = 0,
+	NVME_CC_SHN_NORMAL = 16384,
+	NVME_CC_SHN_ABRUPT = 32768,
+	NVME_CC_SHN_MASK = 49152,
+	NVME_CC_IOSQES = 393216,
+	NVME_CC_IOCQES = 4194304,
+	NVME_CC_CRIME = 16777216,
+};
+
+enum {
+	NVME_CSTS_RDY = 1,
+	NVME_CSTS_CFS = 2,
+	NVME_CSTS_NSSRO = 16,
+	NVME_CSTS_PP = 32,
+	NVME_CSTS_SHST_NORMAL = 0,
+	NVME_CSTS_SHST_OCCUR = 4,
+	NVME_CSTS_SHST_CMPLT = 8,
+	NVME_CSTS_SHST_MASK = 12,
+};
+
+enum {
+	SWITCHTEC_GAS_MRPC_OFFSET = 0,
+	SWITCHTEC_GAS_TOP_CFG_OFFSET = 4096,
+	SWITCHTEC_GAS_SW_EVENT_OFFSET = 6144,
+	SWITCHTEC_GAS_SYS_INFO_OFFSET = 8192,
+	SWITCHTEC_GAS_FLASH_INFO_OFFSET = 8704,
+	SWITCHTEC_GAS_PART_CFG_OFFSET = 16384,
+	SWITCHTEC_GAS_NTB_OFFSET = 65536,
+	SWITCHTEC_GAS_PFF_CSR_OFFSET = 1261568,
+};
+
+enum {
+	SWITCHTEC_NTB_REG_INFO_OFFSET = 0,
+	SWITCHTEC_NTB_REG_CTRL_OFFSET = 16384,
+	SWITCHTEC_NTB_REG_DBMSG_OFFSET = 409600,
+};
+
+struct pci_fixup {
+	u16 vendor;
+	u16 device;
+	u32 class;
+	unsigned int class_shift;
+	int hook_offset;
+};
+
+struct nt_partition_info {
+	u32 xlink_enabled;
+	u32 target_part_low;
+	u32 target_part_high;
+	u32 reserved;
+};
+
+struct ntb_info_regs {
+	u8 partition_count;
+	u8 partition_id;
+	u16 reserved1;
+	u64 ep_map;
+	u16 requester_id;
+	u16 reserved2;
+	u32 reserved3[4];
+	struct nt_partition_info ntp_info[48];
+} __attribute__((packed));
+
+struct ntb_ctrl_regs {
+	u32 partition_status;
+	u32 partition_op;
+	u32 partition_ctrl;
+	u32 bar_setup;
+	u32 bar_error;
+	u16 lut_table_entries;
+	u16 lut_table_offset;
+	u32 lut_error;
+	u16 req_id_table_size;
+	u16 req_id_table_offset;
+	u32 req_id_error;
+	u32 reserved1[7];
+	struct {
+		u32 ctl;
+		u32 win_size;
+		u64 xlate_addr;
+	} bar_entry[6];
+	struct {
+		u32 win_size;
+		u32 reserved[3];
+	} bar_ext_entry[6];
+	u32 reserved2[192];
+	u32 req_id_table[512];
+	u32 reserved3[256];
+	u64 lut_entry[512];
+};
+
+enum smbios_attr_enum {
+	SMBIOS_ATTR_NONE = 0,
+	SMBIOS_ATTR_LABEL_SHOW = 1,
+	SMBIOS_ATTR_INSTANCE_SHOW = 2,
+};
+
+enum dmi_device_type {
+	DMI_DEV_TYPE_ANY = 0,
+	DMI_DEV_TYPE_OTHER = 1,
+	DMI_DEV_TYPE_UNKNOWN = 2,
+	DMI_DEV_TYPE_VIDEO = 3,
+	DMI_DEV_TYPE_SCSI = 4,
+	DMI_DEV_TYPE_ETHERNET = 5,
+	DMI_DEV_TYPE_TOKENRING = 6,
+	DMI_DEV_TYPE_SOUND = 7,
+	DMI_DEV_TYPE_PATA = 8,
+	DMI_DEV_TYPE_SATA = 9,
+	DMI_DEV_TYPE_SAS = 10,
+	DMI_DEV_TYPE_IPMI = -1,
+	DMI_DEV_TYPE_OEM_STRING = -2,
+	DMI_DEV_TYPE_DEV_ONBOARD = -3,
+	DMI_DEV_TYPE_DEV_SLOT = -4,
+};
+
+enum acpi_attr_enum {
+	ACPI_ATTR_LABEL_SHOW = 0,
+	ACPI_ATTR_INDEX_SHOW = 1,
+};
+
+struct dmi_device {
+	struct list_head list;
+	int type;
+	const char *name;
+	void *device_data;
+};
+
+struct dmi_dev_onboard {
+	struct dmi_device dev;
+	int instance;
+	int segment;
+	int bus;
+	int devfn;
+};
+
+struct vga_device {
+	struct list_head list;
+	struct pci_dev *pdev;
+	unsigned int decodes;
+	unsigned int owns;
+	unsigned int locks;
+	unsigned int io_lock_cnt;
+	unsigned int mem_lock_cnt;
+	unsigned int io_norm_cnt;
+	unsigned int mem_norm_cnt;
+	bool bridge_has_one_vga;
+	bool is_firmware_default;
+	unsigned int (*set_decode)(struct pci_dev *, bool);
+};
+
+struct vga_arb_user_card {
+	struct pci_dev *pdev;
+	unsigned int mem_cnt;
+	unsigned int io_cnt;
+};
+
+struct vga_arb_private {
+	struct list_head list;
+	struct pci_dev *target;
+	struct vga_arb_user_card cards[16];
+	spinlock_t lock;
+};
+
+enum pci_interrupt_pin {
+	PCI_INTERRUPT_UNKNOWN = 0,
+	PCI_INTERRUPT_INTA = 1,
+	PCI_INTERRUPT_INTB = 2,
+	PCI_INTERRUPT_INTC = 3,
+	PCI_INTERRUPT_INTD = 4,
+};
+
+enum pci_barno {
+	NO_BAR = -1,
+	BAR_0 = 0,
+	BAR_1 = 1,
+	BAR_2 = 2,
+	BAR_3 = 3,
+	BAR_4 = 4,
+	BAR_5 = 5,
+};
+
+enum pci_epc_irq_type {
+	PCI_EPC_IRQ_UNKNOWN = 0,
+	PCI_EPC_IRQ_LEGACY = 1,
+	PCI_EPC_IRQ_MSI = 2,
+	PCI_EPC_IRQ_MSIX = 3,
+};
+
+enum pci_epc_interface_type {
+	UNKNOWN_INTERFACE = -1,
+	PRIMARY_INTERFACE = 0,
+	SECONDARY_INTERFACE = 1,
+};
+
+struct pci_epc_ops;
+
+struct pci_epc_mem;
+
+struct pci_epc {
+	struct device dev;
+	struct list_head pci_epf;
+	struct mutex list_lock;
+	const struct pci_epc_ops *ops;
+	struct pci_epc_mem **windows;
+	struct pci_epc_mem *mem;
+	unsigned int num_windows;
+	u8 max_functions;
+	u8 *max_vfs;
+	struct config_group *group;
+	struct mutex lock;
+	unsigned long function_num_map;
+};
+
+struct pci_epf_header;
+
+struct pci_epf_bar;
+
+struct pci_epc_features;
+
+struct pci_epc_ops {
+	int (*write_header)(struct pci_epc *, u8, u8, struct pci_epf_header *);
+	int (*set_bar)(struct pci_epc *, u8, u8, struct pci_epf_bar *);
+	void (*clear_bar)(struct pci_epc *, u8, u8, struct pci_epf_bar *);
+	int (*map_addr)(struct pci_epc *, u8, u8, phys_addr_t, u64, size_t);
+	void (*unmap_addr)(struct pci_epc *, u8, u8, phys_addr_t);
+	int (*set_msi)(struct pci_epc *, u8, u8, u8);
+	int (*get_msi)(struct pci_epc *, u8, u8);
+	int (*set_msix)(struct pci_epc *, u8, u8, u16, enum pci_barno, u32);
+	int (*get_msix)(struct pci_epc *, u8, u8);
+	int (*raise_irq)(struct pci_epc *, u8, u8, enum pci_epc_irq_type, u16);
+	int (*map_msi_irq)(struct pci_epc *, u8, u8, phys_addr_t, u8, u32, u32 *, u32 *);
+	int (*start)(struct pci_epc *);
+	void (*stop)(struct pci_epc *);
+	const struct pci_epc_features * (*get_features)(struct pci_epc *, u8, u8);
+	struct module *owner;
+};
+
+struct pci_epf_header {
+	u16 vendorid;
+	u16 deviceid;
+	u8 revid;
+	u8 progif_code;
+	u8 subclass_code;
+	u8 baseclass_code;
+	u8 cache_line_size;
+	u16 subsys_vendor_id;
+	u16 subsys_id;
+	enum pci_interrupt_pin interrupt_pin;
+};
+
+struct pci_epf_bar {
+	dma_addr_t phys_addr;
+	void *addr;
+	size_t size;
+	enum pci_barno barno;
+	int flags;
+};
+
+struct pci_epc_features {
+	unsigned int linkup_notifier: 1;
+	unsigned int core_init_notifier: 1;
+	unsigned int msi_capable: 1;
+	unsigned int msix_capable: 1;
+	u8 reserved_bar;
+	u8 bar_fixed_64bit;
+	u64 bar_fixed_size[6];
+	size_t align;
+};
+
+struct pci_epc_mem_window {
+	phys_addr_t phys_base;
+	size_t size;
+	size_t page_size;
+};
+
+struct pci_epc_mem {
+	struct pci_epc_mem_window window;
+	unsigned long *bitmap;
+	int pages;
+	struct mutex lock;
+};
+
+struct pci_epf_driver;
+
+struct pci_epf_device_id;
+
+struct pci_epc_event_ops;
+
+struct pci_epf {
+	struct device dev;
+	const char *name;
+	struct pci_epf_header *header;
+	struct pci_epf_bar bar[6];
+	u8 msi_interrupts;
+	u16 msix_interrupts;
+	u8 func_no;
+	u8 vfunc_no;
+	struct pci_epc *epc;
+	struct pci_epf *epf_pf;
+	struct pci_epf_driver *driver;
+	const struct pci_epf_device_id *id;
+	struct list_head list;
+	struct mutex lock;
+	struct pci_epc *sec_epc;
+	struct list_head sec_epc_list;
+	struct pci_epf_bar sec_epc_bar[6];
+	u8 sec_epc_func_no;
+	struct config_group *group;
+	unsigned int is_bound;
+	unsigned int is_vf;
+	unsigned long vfunction_num_map;
+	struct list_head pci_vepf;
+	const struct pci_epc_event_ops *event_ops;
+};
+
+struct pci_epf_ops;
+
+struct pci_epf_driver {
+	int (*probe)(struct pci_epf *, const struct pci_epf_device_id *);
+	void (*remove)(struct pci_epf *);
+	struct device_driver driver;
+	struct pci_epf_ops *ops;
+	struct module *owner;
+	struct list_head epf_group;
+	const struct pci_epf_device_id *id_table;
+};
+
+struct pci_epf_device_id {
+	char name[20];
+	kernel_ulong_t driver_data;
+};
+
+struct pci_epf_ops {
+	int (*bind)(struct pci_epf *);
+	void (*unbind)(struct pci_epf *);
+	struct config_group * (*add_cfs)(struct pci_epf *, struct config_group *);
+};
+
+struct pci_epc_event_ops {
+	int (*core_init)(struct pci_epf *);
+	int (*link_up)(struct pci_epf *);
+	int (*link_down)(struct pci_epf *);
+	int (*bme)(struct pci_epf *);
+};
+
+struct dw_edma_plat_ops {
+	int (*irq_vector)(struct device *, unsigned int);
+	u64 (*pci_address)(struct device *, phys_addr_t);
+};
+
+enum dw_pcie_ltssm {
+	DW_PCIE_LTSSM_DETECT_QUIET = 0,
+	DW_PCIE_LTSSM_DETECT_ACT = 1,
+	DW_PCIE_LTSSM_L0 = 17,
+	DW_PCIE_LTSSM_L2_IDLE = 21,
+	DW_PCIE_LTSSM_UNKNOWN = 4294967295,
+};
+
+enum dw_edma_map_format {
+	EDMA_MF_EDMA_LEGACY = 0,
+	EDMA_MF_EDMA_UNROLL = 1,
+	EDMA_MF_HDMA_COMPAT = 5,
+	EDMA_MF_HDMA_NATIVE = 7,
+};
+
+enum dw_pcie_app_clk {
+	DW_PCIE_DBI_CLK = 0,
+	DW_PCIE_MSTR_CLK = 1,
+	DW_PCIE_SLV_CLK = 2,
+	DW_PCIE_NUM_APP_CLKS = 3,
+};
+
+enum dw_pcie_core_clk {
+	DW_PCIE_PIPE_CLK = 0,
+	DW_PCIE_CORE_CLK = 1,
+	DW_PCIE_AUX_CLK = 2,
+	DW_PCIE_REF_CLK = 3,
+	DW_PCIE_NUM_CORE_CLKS = 4,
+};
+
+enum dw_pcie_app_rst {
+	DW_PCIE_DBI_RST = 0,
+	DW_PCIE_MSTR_RST = 1,
+	DW_PCIE_SLV_RST = 2,
+	DW_PCIE_NUM_APP_RSTS = 3,
+};
+
+enum dw_pcie_core_rst {
+	DW_PCIE_NON_STICKY_RST = 0,
+	DW_PCIE_STICKY_RST = 1,
+	DW_PCIE_CORE_RST = 2,
+	DW_PCIE_PIPE_RST = 3,
+	DW_PCIE_PHY_RST = 4,
+	DW_PCIE_HOT_RST = 5,
+	DW_PCIE_PWR_RST = 6,
+	DW_PCIE_NUM_CORE_RSTS = 7,
+};
+
+enum dw_edma_chip_flags {
+	DW_EDMA_CHIP_LOCAL = 1,
+};
+
+struct dw_pcie_host_ops;
+
+struct dw_pcie_rp {
+	bool has_msi_ctrl: 1;
+	bool cfg0_io_shared: 1;
+	u64 cfg0_base;
+	void *va_cfg0_base;
+	u32 cfg0_size;
+	resource_size_t io_base;
+	phys_addr_t io_bus_addr;
+	u32 io_size;
+	int irq;
+	const struct dw_pcie_host_ops *ops;
+	int msi_irq[8];
+	struct irq_domain *irq_domain;
+	struct irq_domain *msi_domain;
+	dma_addr_t msi_data;
+	struct irq_chip *msi_irq_chip;
+	u32 num_vectors;
+	u32 irq_mask[8];
+	struct pci_host_bridge *bridge;
+	raw_spinlock_t lock;
+	unsigned long msi_irq_in_use[4];
+};
+
+struct dw_pcie_ep_ops;
+
+struct dw_pcie_ep {
+	struct pci_epc *epc;
+	struct list_head func_list;
+	const struct dw_pcie_ep_ops *ops;
+	phys_addr_t phys_base;
+	size_t addr_size;
+	size_t page_size;
+	u8 bar_to_atu[6];
+	phys_addr_t *outbound_addr;
+	unsigned long *ib_window_map;
+	unsigned long *ob_window_map;
+	void *msi_mem;
+	phys_addr_t msi_mem_phys;
+	struct pci_epf_bar *epf_bar[6];
+};
+
+struct dw_edma_region {
+	u64 paddr;
+	union {
+		void *mem;
+		void *io;
+	} vaddr;
+	size_t sz;
+};
+
+struct dw_edma;
+
+struct dw_edma_chip {
+	struct device *dev;
+	int nr_irqs;
+	const struct dw_edma_plat_ops *ops;
+	u32 flags;
+	void *reg_base;
+	u16 ll_wr_cnt;
+	u16 ll_rd_cnt;
+	struct dw_edma_region ll_region_wr[8];
+	struct dw_edma_region ll_region_rd[8];
+	struct dw_edma_region dt_region_wr[8];
+	struct dw_edma_region dt_region_rd[8];
+	enum dw_edma_map_format mf;
+	struct dw_edma *dw;
+};
+
+struct reset_control;
+
+struct reset_control_bulk_data {
+	const char *id;
+	struct reset_control *rstc;
+};
+
+struct dw_pcie_ops;
+
+struct dw_pcie {
+	struct device *dev;
+	void *dbi_base;
+	void *dbi_base2;
+	void *atu_base;
+	size_t atu_size;
+	u32 num_ib_windows;
+	u32 num_ob_windows;
+	u32 region_align;
+	u64 region_limit;
+	struct dw_pcie_rp pp;
+	struct dw_pcie_ep ep;
+	const struct dw_pcie_ops *ops;
+	u32 version;
+	u32 type;
+	unsigned long caps;
+	int num_lanes;
+	int link_gen;
+	u8 n_fts[2];
+	struct dw_edma_chip edma;
+	struct clk_bulk_data app_clks[3];
+	struct clk_bulk_data core_clks[4];
+	struct reset_control_bulk_data app_rsts[3];
+	struct reset_control_bulk_data core_rsts[7];
+	struct gpio_desc *pe_rst;
+	bool suspended;
+};
+
+struct dw_pcie_host_ops {
+	int (*host_init)(struct dw_pcie_rp *);
+	void (*host_deinit)(struct dw_pcie_rp *);
+	int (*msi_host_init)(struct dw_pcie_rp *);
+	void (*pme_turn_off)(struct dw_pcie_rp *);
+};
+
+struct dw_pcie_ep_ops {
+	void (*ep_init)(struct dw_pcie_ep *);
+	int (*raise_irq)(struct dw_pcie_ep *, u8, enum pci_epc_irq_type, u16);
+	const struct pci_epc_features * (*get_features)(struct dw_pcie_ep *);
+	unsigned int (*func_conf_select)(struct dw_pcie_ep *, u8);
+};
+
+struct dw_pcie_ops {
+	u64 (*cpu_addr_fixup)(struct dw_pcie *, u64);
+	u32 (*read_dbi)(struct dw_pcie *, void *, u32, size_t);
+	void (*write_dbi)(struct dw_pcie *, void *, u32, size_t, u32);
+	void (*write_dbi2)(struct dw_pcie *, void *, u32, size_t, u32);
+	int (*link_up)(struct dw_pcie *);
+	enum dw_pcie_ltssm (*get_ltssm)(struct dw_pcie *);
+	int (*start_link)(struct dw_pcie *);
+	void (*stop_link)(struct dw_pcie *);
+};
+
+struct dw_pcie_ep_func {
+	struct list_head list;
+	u8 func_no;
+	u8 msi_cap;
+	u8 msix_cap;
+};
+
+struct pci_epf_msix_tbl {
+	u64 msg_addr;
+	u32 msg_data;
+	u32 vector_ctrl;
+};
+
+enum dw_pcie_device_mode {
+	DW_PCIE_UNKNOWN_TYPE = 0,
+	DW_PCIE_EP_TYPE = 1,
+	DW_PCIE_LEG_EP_TYPE = 2,
+	DW_PCIE_RC_TYPE = 3,
+};
+
+struct dw_plat_pcie_of_data {
+	enum dw_pcie_device_mode mode;
+};
+
+struct dw_plat_pcie {
+	struct dw_pcie *pci;
+	enum dw_pcie_device_mode mode;
+};
+
+enum hdmi_infoframe_type {
+	HDMI_INFOFRAME_TYPE_VENDOR = 129,
+	HDMI_INFOFRAME_TYPE_AVI = 130,
+	HDMI_INFOFRAME_TYPE_SPD = 131,
+	HDMI_INFOFRAME_TYPE_AUDIO = 132,
+	HDMI_INFOFRAME_TYPE_DRM = 135,
+};
+
+enum hdmi_colorspace {
+	HDMI_COLORSPACE_RGB = 0,
+	HDMI_COLORSPACE_YUV422 = 1,
+	HDMI_COLORSPACE_YUV444 = 2,
+	HDMI_COLORSPACE_YUV420 = 3,
+	HDMI_COLORSPACE_RESERVED4 = 4,
+	HDMI_COLORSPACE_RESERVED5 = 5,
+	HDMI_COLORSPACE_RESERVED6 = 6,
+	HDMI_COLORSPACE_IDO_DEFINED = 7,
+};
+
+enum hdmi_scan_mode {
+	HDMI_SCAN_MODE_NONE = 0,
+	HDMI_SCAN_MODE_OVERSCAN = 1,
+	HDMI_SCAN_MODE_UNDERSCAN = 2,
+	HDMI_SCAN_MODE_RESERVED = 3,
+};
+
+enum hdmi_colorimetry {
+	HDMI_COLORIMETRY_NONE = 0,
+	HDMI_COLORIMETRY_ITU_601 = 1,
+	HDMI_COLORIMETRY_ITU_709 = 2,
+	HDMI_COLORIMETRY_EXTENDED = 3,
+};
+
+enum hdmi_picture_aspect {
+	HDMI_PICTURE_ASPECT_NONE = 0,
+	HDMI_PICTURE_ASPECT_4_3 = 1,
+	HDMI_PICTURE_ASPECT_16_9 = 2,
+	HDMI_PICTURE_ASPECT_64_27 = 3,
+	HDMI_PICTURE_ASPECT_256_135 = 4,
+	HDMI_PICTURE_ASPECT_RESERVED = 5,
+};
+
+enum hdmi_active_aspect {
+	HDMI_ACTIVE_ASPECT_16_9_TOP = 2,
+	HDMI_ACTIVE_ASPECT_14_9_TOP = 3,
+	HDMI_ACTIVE_ASPECT_16_9_CENTER = 4,
+	HDMI_ACTIVE_ASPECT_PICTURE = 8,
+	HDMI_ACTIVE_ASPECT_4_3 = 9,
+	HDMI_ACTIVE_ASPECT_16_9 = 10,
+	HDMI_ACTIVE_ASPECT_14_9 = 11,
+	HDMI_ACTIVE_ASPECT_4_3_SP_14_9 = 13,
+	HDMI_ACTIVE_ASPECT_16_9_SP_14_9 = 14,
+	HDMI_ACTIVE_ASPECT_16_9_SP_4_3 = 15,
+};
+
+enum hdmi_extended_colorimetry {
+	HDMI_EXTENDED_COLORIMETRY_XV_YCC_601 = 0,
+	HDMI_EXTENDED_COLORIMETRY_XV_YCC_709 = 1,
+	HDMI_EXTENDED_COLORIMETRY_S_YCC_601 = 2,
+	HDMI_EXTENDED_COLORIMETRY_OPYCC_601 = 3,
+	HDMI_EXTENDED_COLORIMETRY_OPRGB = 4,
+	HDMI_EXTENDED_COLORIMETRY_BT2020_CONST_LUM = 5,
+	HDMI_EXTENDED_COLORIMETRY_BT2020 = 6,
+	HDMI_EXTENDED_COLORIMETRY_RESERVED = 7,
+};
+
+enum hdmi_quantization_range {
+	HDMI_QUANTIZATION_RANGE_DEFAULT = 0,
+	HDMI_QUANTIZATION_RANGE_LIMITED = 1,
+	HDMI_QUANTIZATION_RANGE_FULL = 2,
+	HDMI_QUANTIZATION_RANGE_RESERVED = 3,
+};
+
+enum hdmi_nups {
+	HDMI_NUPS_UNKNOWN = 0,
+	HDMI_NUPS_HORIZONTAL = 1,
+	HDMI_NUPS_VERTICAL = 2,
+	HDMI_NUPS_BOTH = 3,
+};
+
+enum hdmi_ycc_quantization_range {
+	HDMI_YCC_QUANTIZATION_RANGE_LIMITED = 0,
+	HDMI_YCC_QUANTIZATION_RANGE_FULL = 1,
+};
+
+enum hdmi_content_type {
+	HDMI_CONTENT_TYPE_GRAPHICS = 0,
+	HDMI_CONTENT_TYPE_PHOTO = 1,
+	HDMI_CONTENT_TYPE_CINEMA = 2,
+	HDMI_CONTENT_TYPE_GAME = 3,
+};
+
+enum hdmi_spd_sdi {
+	HDMI_SPD_SDI_UNKNOWN = 0,
+	HDMI_SPD_SDI_DSTB = 1,
+	HDMI_SPD_SDI_DVDP = 2,
+	HDMI_SPD_SDI_DVHS = 3,
+	HDMI_SPD_SDI_HDDVR = 4,
+	HDMI_SPD_SDI_DVC = 5,
+	HDMI_SPD_SDI_DSC = 6,
+	HDMI_SPD_SDI_VCD = 7,
+	HDMI_SPD_SDI_GAME = 8,
+	HDMI_SPD_SDI_PC = 9,
+	HDMI_SPD_SDI_BD = 10,
+	HDMI_SPD_SDI_SACD = 11,
+	HDMI_SPD_SDI_HDDVD = 12,
+	HDMI_SPD_SDI_PMP = 13,
+};
+
+enum hdmi_audio_coding_type {
+	HDMI_AUDIO_CODING_TYPE_STREAM = 0,
+	HDMI_AUDIO_CODING_TYPE_PCM = 1,
+	HDMI_AUDIO_CODING_TYPE_AC3 = 2,
+	HDMI_AUDIO_CODING_TYPE_MPEG1 = 3,
+	HDMI_AUDIO_CODING_TYPE_MP3 = 4,
+	HDMI_AUDIO_CODING_TYPE_MPEG2 = 5,
+	HDMI_AUDIO_CODING_TYPE_AAC_LC = 6,
+	HDMI_AUDIO_CODING_TYPE_DTS = 7,
+	HDMI_AUDIO_CODING_TYPE_ATRAC = 8,
+	HDMI_AUDIO_CODING_TYPE_DSD = 9,
+	HDMI_AUDIO_CODING_TYPE_EAC3 = 10,
+	HDMI_AUDIO_CODING_TYPE_DTS_HD = 11,
+	HDMI_AUDIO_CODING_TYPE_MLP = 12,
+	HDMI_AUDIO_CODING_TYPE_DST = 13,
+	HDMI_AUDIO_CODING_TYPE_WMA_PRO = 14,
+	HDMI_AUDIO_CODING_TYPE_CXT = 15,
+};
+
+enum hdmi_audio_sample_size {
+	HDMI_AUDIO_SAMPLE_SIZE_STREAM = 0,
+	HDMI_AUDIO_SAMPLE_SIZE_16 = 1,
+	HDMI_AUDIO_SAMPLE_SIZE_20 = 2,
+	HDMI_AUDIO_SAMPLE_SIZE_24 = 3,
+};
+
+enum hdmi_audio_sample_frequency {
+	HDMI_AUDIO_SAMPLE_FREQUENCY_STREAM = 0,
+	HDMI_AUDIO_SAMPLE_FREQUENCY_32000 = 1,
+	HDMI_AUDIO_SAMPLE_FREQUENCY_44100 = 2,
+	HDMI_AUDIO_SAMPLE_FREQUENCY_48000 = 3,
+	HDMI_AUDIO_SAMPLE_FREQUENCY_88200 = 4,
+	HDMI_AUDIO_SAMPLE_FREQUENCY_96000 = 5,
+	HDMI_AUDIO_SAMPLE_FREQUENCY_176400 = 6,
+	HDMI_AUDIO_SAMPLE_FREQUENCY_192000 = 7,
+};
+
+enum hdmi_audio_coding_type_ext {
+	HDMI_AUDIO_CODING_TYPE_EXT_CT = 0,
+	HDMI_AUDIO_CODING_TYPE_EXT_HE_AAC = 1,
+	HDMI_AUDIO_CODING_TYPE_EXT_HE_AAC_V2 = 2,
+	HDMI_AUDIO_CODING_TYPE_EXT_MPEG_SURROUND = 3,
+	HDMI_AUDIO_CODING_TYPE_EXT_MPEG4_HE_AAC = 4,
+	HDMI_AUDIO_CODING_TYPE_EXT_MPEG4_HE_AAC_V2 = 5,
+	HDMI_AUDIO_CODING_TYPE_EXT_MPEG4_AAC_LC = 6,
+	HDMI_AUDIO_CODING_TYPE_EXT_DRA = 7,
+	HDMI_AUDIO_CODING_TYPE_EXT_MPEG4_HE_AAC_SURROUND = 8,
+	HDMI_AUDIO_CODING_TYPE_EXT_MPEG4_AAC_LC_SURROUND = 10,
+};
+
+enum hdmi_3d_structure {
+	HDMI_3D_STRUCTURE_INVALID = -1,
+	HDMI_3D_STRUCTURE_FRAME_PACKING = 0,
+	HDMI_3D_STRUCTURE_FIELD_ALTERNATIVE = 1,
+	HDMI_3D_STRUCTURE_LINE_ALTERNATIVE = 2,
+	HDMI_3D_STRUCTURE_SIDE_BY_SIDE_FULL = 3,
+	HDMI_3D_STRUCTURE_L_DEPTH = 4,
+	HDMI_3D_STRUCTURE_L_DEPTH_GFX_GFX_DEPTH = 5,
+	HDMI_3D_STRUCTURE_TOP_AND_BOTTOM = 6,
+	HDMI_3D_STRUCTURE_SIDE_BY_SIDE_HALF = 8,
+};
+
+enum hdmi_eotf {
+	HDMI_EOTF_TRADITIONAL_GAMMA_SDR = 0,
+	HDMI_EOTF_TRADITIONAL_GAMMA_HDR = 1,
+	HDMI_EOTF_SMPTE_ST2084 = 2,
+	HDMI_EOTF_BT_2100_HLG = 3,
+};
+
+enum hdmi_metadata_type {
+	HDMI_STATIC_METADATA_TYPE1 = 0,
+};
+
+struct hdmi_any_infoframe {
+	enum hdmi_infoframe_type type;
+	unsigned char version;
+	unsigned char length;
+};
+
+struct hdmi_avi_infoframe {
+	enum hdmi_infoframe_type type;
+	unsigned char version;
+	unsigned char length;
+	bool itc;
+	unsigned char pixel_repeat;
+	enum hdmi_colorspace colorspace;
+	enum hdmi_scan_mode scan_mode;
+	enum hdmi_colorimetry colorimetry;
+	enum hdmi_picture_aspect picture_aspect;
+	enum hdmi_active_aspect active_aspect;
+	enum hdmi_extended_colorimetry extended_colorimetry;
+	enum hdmi_quantization_range quantization_range;
+	enum hdmi_nups nups;
+	unsigned char video_code;
+	enum hdmi_ycc_quantization_range ycc_quantization_range;
+	enum hdmi_content_type content_type;
+	unsigned short top_bar;
+	unsigned short bottom_bar;
+	unsigned short left_bar;
+	unsigned short right_bar;
+};
+
+struct hdmi_spd_infoframe {
+	enum hdmi_infoframe_type type;
+	unsigned char version;
+	unsigned char length;
+	char vendor[8];
+	char product[16];
+	enum hdmi_spd_sdi sdi;
+};
+
+struct hdmi_audio_infoframe {
+	enum hdmi_infoframe_type type;
+	unsigned char version;
+	unsigned char length;
+	unsigned char channels;
+	enum hdmi_audio_coding_type coding_type;
+	enum hdmi_audio_sample_size sample_size;
+	enum hdmi_audio_sample_frequency sample_frequency;
+	enum hdmi_audio_coding_type_ext coding_type_ext;
+	unsigned char channel_allocation;
+	unsigned char level_shift_value;
+	bool downmix_inhibit;
+};
+
+struct hdmi_vendor_infoframe {
+	enum hdmi_infoframe_type type;
+	unsigned char version;
+	unsigned char length;
+	unsigned int oui;
+	u8 vic;
+	enum hdmi_3d_structure s3d_struct;
+	unsigned int s3d_ext_data;
+};
+
+struct hdmi_drm_infoframe {
+	enum hdmi_infoframe_type type;
+	unsigned char version;
+	unsigned char length;
+	enum hdmi_eotf eotf;
+	enum hdmi_metadata_type metadata_type;
+	struct {
+		u16 x;
+		u16 y;
+	} display_primaries[3];
+	struct {
+		u16 x;
+		u16 y;
+	} white_point;
+	u16 max_display_mastering_luminance;
+	u16 min_display_mastering_luminance;
+	u16 max_cll;
+	u16 max_fall;
+};
+
+union hdmi_vendor_any_infoframe {
+	struct {
+		enum hdmi_infoframe_type type;
+		unsigned char version;
+		unsigned char length;
+		unsigned int oui;
+	} any;
+	struct hdmi_vendor_infoframe hdmi;
+};
+
+struct dp_sdp_header {
+	u8 HB0;
+	u8 HB1;
+	u8 HB2;
+	u8 HB3;
+};
+
+struct dp_sdp {
+	struct dp_sdp_header sdp_header;
+	u8 db[32];
+};
+
+union hdmi_infoframe {
+	struct hdmi_any_infoframe any;
+	struct hdmi_avi_infoframe avi;
+	struct hdmi_spd_infoframe spd;
+	union hdmi_vendor_any_infoframe vendor;
+	struct hdmi_audio_infoframe audio;
+	struct hdmi_drm_infoframe drm;
+};
+
+enum backlight_type {
+	BACKLIGHT_RAW = 1,
+	BACKLIGHT_PLATFORM = 2,
+	BACKLIGHT_FIRMWARE = 3,
+	BACKLIGHT_TYPE_MAX = 4,
+};
+
+enum backlight_scale {
+	BACKLIGHT_SCALE_UNKNOWN = 0,
+	BACKLIGHT_SCALE_LINEAR = 1,
+	BACKLIGHT_SCALE_NON_LINEAR = 2,
+};
+
+enum backlight_update_reason {
+	BACKLIGHT_UPDATE_HOTKEY = 0,
+	BACKLIGHT_UPDATE_SYSFS = 1,
+};
+
+enum backlight_notification {
+	BACKLIGHT_REGISTERED = 0,
+	BACKLIGHT_UNREGISTERED = 1,
+};
+
+struct backlight_properties {
+	int brightness;
+	int max_brightness;
+	int power;
+	int fb_blank;
+	enum backlight_type type;
+	unsigned int state;
+	enum backlight_scale scale;
+};
+
+struct backlight_ops;
+
+struct backlight_device {
+	struct backlight_properties props;
+	struct mutex update_lock;
+	struct mutex ops_lock;
+	const struct backlight_ops *ops;
+	struct notifier_block fb_notif;
+	struct list_head entry;
+	struct device dev;
+	bool fb_bl_on[32];
+	int use_count;
+};
+
+struct fb_info;
+
+struct backlight_ops {
+	unsigned int options;
+	int (*update_status)(struct backlight_device *);
+	int (*get_brightness)(struct backlight_device *);
+	int (*check_fb)(struct backlight_device *, struct fb_info *);
+};
+
+struct fb_bitfield {
+	__u32 offset;
+	__u32 length;
+	__u32 msb_right;
+};
+
+struct fb_var_screeninfo {
+	__u32 xres;
+	__u32 yres;
+	__u32 xres_virtual;
+	__u32 yres_virtual;
+	__u32 xoffset;
+	__u32 yoffset;
+	__u32 bits_per_pixel;
+	__u32 grayscale;
+	struct fb_bitfield red;
+	struct fb_bitfield green;
+	struct fb_bitfield blue;
+	struct fb_bitfield transp;
+	__u32 nonstd;
+	__u32 activate;
+	__u32 height;
+	__u32 width;
+	__u32 accel_flags;
+	__u32 pixclock;
+	__u32 left_margin;
+	__u32 right_margin;
+	__u32 upper_margin;
+	__u32 lower_margin;
+	__u32 hsync_len;
+	__u32 vsync_len;
+	__u32 sync;
+	__u32 vmode;
+	__u32 rotate;
+	__u32 colorspace;
+	__u32 reserved[4];
+};
+
+struct fb_fix_screeninfo {
+	char id[16];
+	unsigned long smem_start;
+	__u32 smem_len;
+	__u32 type;
+	__u32 type_aux;
+	__u32 visual;
+	__u16 xpanstep;
+	__u16 ypanstep;
+	__u16 ywrapstep;
+	__u32 line_length;
+	unsigned long mmio_start;
+	__u32 mmio_len;
+	__u32 accel;
+	__u16 capabilities;
+	__u16 reserved[2];
+};
+
+struct fb_chroma {
+	__u32 redx;
+	__u32 greenx;
+	__u32 bluex;
+	__u32 whitex;
+	__u32 redy;
+	__u32 greeny;
+	__u32 bluey;
+	__u32 whitey;
+};
+
+struct fb_videomode;
+
+struct fb_monspecs {
+	struct fb_chroma chroma;
+	struct fb_videomode *modedb;
+	__u8 manufacturer[4];
+	__u8 monitor[14];
+	__u8 serial_no[14];
+	__u8 ascii[14];
+	__u32 modedb_len;
+	__u32 model;
+	__u32 serial;
+	__u32 year;
+	__u32 week;
+	__u32 hfmin;
+	__u32 hfmax;
+	__u32 dclkmin;
+	__u32 dclkmax;
+	__u16 input;
+	__u16 dpms;
+	__u16 signal;
+	__u16 vfmin;
+	__u16 vfmax;
+	__u16 gamma;
+	__u16 gtf: 1;
+	__u16 misc;
+	__u8 version;
+	__u8 revision;
+	__u8 max_x;
+	__u8 max_y;
+};
+
+struct fb_pixmap {
+	u8 *addr;
+	u32 size;
+	u32 offset;
+	u32 buf_align;
+	u32 scan_align;
+	u32 access_align;
+	u32 flags;
+	u32 blit_x;
+	u32 blit_y;
+	void (*writeio)(struct fb_info *, void *, void *, unsigned int);
+	void (*readio)(struct fb_info *, void *, void *, unsigned int);
+};
+
+struct fb_cmap {
+	__u32 start;
+	__u32 len;
+	__u16 *red;
+	__u16 *green;
+	__u16 *blue;
+	__u16 *transp;
+};
+
+struct fb_ops;
+
+struct fb_info {
+	refcount_t count;
+	int node;
+	int flags;
+	int fbcon_rotate_hint;
+	struct mutex lock;
+	struct mutex mm_lock;
+	struct fb_var_screeninfo var;
+	struct fb_fix_screeninfo fix;
+	struct fb_monspecs monspecs;
+	struct fb_pixmap pixmap;
+	struct fb_pixmap sprite;
+	struct fb_cmap cmap;
+	struct list_head modelist;
+	struct fb_videomode *mode;
+	const struct fb_ops *fbops;
+	struct device *device;
+	struct device *dev;
+	int class_flag;
+	union {
+		char *screen_base;
+		char *screen_buffer;
+	};
+	unsigned long screen_size;
+	void *pseudo_palette;
+	u32 state;
+	void *fbcon_par;
+	void *par;
+	bool skip_vt_switch;
+};
+
+struct fb_videomode {
+	const char *name;
+	u32 refresh;
+	u32 xres;
+	u32 yres;
+	u32 pixclock;
+	u32 left_margin;
+	u32 right_margin;
+	u32 upper_margin;
+	u32 lower_margin;
+	u32 hsync_len;
+	u32 vsync_len;
+	u32 sync;
+	u32 vmode;
+	u32 flag;
+};
+
+struct fb_fillrect;
+
+struct fb_copyarea;
+
+struct fb_image;
+
+struct fb_cursor;
+
+struct fb_blit_caps;
+
+struct fb_ops {
+	struct module *owner;
+	int (*fb_open)(struct fb_info *, int);
+	int (*fb_release)(struct fb_info *, int);
+	ssize_t (*fb_read)(struct fb_info *, char __attribute__((btf_type_tag("user"))) *, size_t, loff_t *);
+	ssize_t (*fb_write)(struct fb_info *, const char __attribute__((btf_type_tag("user"))) *, size_t, loff_t *);
+	int (*fb_check_var)(struct fb_var_screeninfo *, struct fb_info *);
+	int (*fb_set_par)(struct fb_info *);
+	int (*fb_setcolreg)(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, struct fb_info *);
+	int (*fb_setcmap)(struct fb_cmap *, struct fb_info *);
+	int (*fb_blank)(int, struct fb_info *);
+	int (*fb_pan_display)(struct fb_var_screeninfo *, struct fb_info *);
+	void (*fb_fillrect)(struct fb_info *, const struct fb_fillrect *);
+	void (*fb_copyarea)(struct fb_info *, const struct fb_copyarea *);
+	void (*fb_imageblit)(struct fb_info *, const struct fb_image *);
+	int (*fb_cursor)(struct fb_info *, struct fb_cursor *);
+	int (*fb_sync)(struct fb_info *);
+	int (*fb_ioctl)(struct fb_info *, unsigned int, unsigned long);
+	int (*fb_compat_ioctl)(struct fb_info *, unsigned int, unsigned long);
+	int (*fb_mmap)(struct fb_info *, struct vm_area_struct *);
+	void (*fb_get_caps)(struct fb_info *, struct fb_blit_caps *, struct fb_var_screeninfo *);
+	void (*fb_destroy)(struct fb_info *);
+	int (*fb_debug_enter)(struct fb_info *);
+	int (*fb_debug_leave)(struct fb_info *);
+};
+
+struct fb_fillrect {
+	__u32 dx;
+	__u32 dy;
+	__u32 width;
+	__u32 height;
+	__u32 color;
+	__u32 rop;
+};
+
+struct fb_copyarea {
+	__u32 dx;
+	__u32 dy;
+	__u32 width;
+	__u32 height;
+	__u32 sx;
+	__u32 sy;
+};
+
+struct fb_image {
+	__u32 dx;
+	__u32 dy;
+	__u32 width;
+	__u32 height;
+	__u32 fg_color;
+	__u32 bg_color;
+	__u8 depth;
+	const char *data;
+	struct fb_cmap cmap;
+};
+
+struct fbcurpos {
+	__u16 x;
+	__u16 y;
+};
+
+struct fb_cursor {
+	__u16 set;
+	__u16 enable;
+	__u16 rop;
+	const char *mask;
+	struct fbcurpos hot;
+	struct fb_image image;
+};
+
+struct fb_blit_caps {
+	u32 x;
+	u32 y;
+	u32 len;
+	u32 flags;
+};
+
+enum display_flags {
+	DISPLAY_FLAGS_HSYNC_LOW = 1,
+	DISPLAY_FLAGS_HSYNC_HIGH = 2,
+	DISPLAY_FLAGS_VSYNC_LOW = 4,
+	DISPLAY_FLAGS_VSYNC_HIGH = 8,
+	DISPLAY_FLAGS_DE_LOW = 16,
+	DISPLAY_FLAGS_DE_HIGH = 32,
+	DISPLAY_FLAGS_PIXDATA_POSEDGE = 64,
+	DISPLAY_FLAGS_PIXDATA_NEGEDGE = 128,
+	DISPLAY_FLAGS_INTERLACED = 256,
+	DISPLAY_FLAGS_DOUBLESCAN = 512,
+	DISPLAY_FLAGS_DOUBLECLK = 1024,
+	DISPLAY_FLAGS_SYNC_POSEDGE = 2048,
+	DISPLAY_FLAGS_SYNC_NEGEDGE = 4096,
+};
+
+struct display_timing;
+
+struct display_timings {
+	unsigned int num_timings;
+	unsigned int native_mode;
+	struct display_timing **timings;
+};
+
+struct timing_entry {
+	u32 min;
+	u32 typ;
+	u32 max;
+};
+
+struct display_timing {
+	struct timing_entry pixelclock;
+	struct timing_entry hactive;
+	struct timing_entry hfront_porch;
+	struct timing_entry hback_porch;
+	struct timing_entry hsync_len;
+	struct timing_entry vactive;
+	struct timing_entry vfront_porch;
+	struct timing_entry vback_porch;
+	struct timing_entry vsync_len;
+	enum display_flags flags;
+};
+
+struct videomode {
+	unsigned long pixelclock;
+	u32 hactive;
+	u32 hfront_porch;
+	u32 hback_porch;
+	u32 hsync_len;
+	u32 vactive;
+	u32 vfront_porch;
+	u32 vback_porch;
+	u32 vsync_len;
+	enum display_flags flags;
+};
+
+union acpi_name_union {
+	u32 integer;
+	char ascii[4];
+};
+
+typedef u16 acpi_owner_id;
+
+struct acpi_table_desc {
+	acpi_physical_address address;
+	struct acpi_table_header *pointer;
+	u32 length;
+	union acpi_name_union signature;
+	acpi_owner_id owner_id;
+	u8 flags;
+	u16 validation_count;
+};
+
+enum acpi_cedt_type {
+	ACPI_CEDT_TYPE_CHBS = 0,
+	ACPI_CEDT_TYPE_CFMWS = 1,
+	ACPI_CEDT_TYPE_CXIMS = 2,
+	ACPI_CEDT_TYPE_RDPAS = 3,
+	ACPI_CEDT_TYPE_RESERVED = 4,
+};
+
+enum acpi_subtable_type {
+	ACPI_SUBTABLE_COMMON = 0,
+	ACPI_SUBTABLE_HMAT = 1,
+	ACPI_SUBTABLE_PRMT = 2,
+	ACPI_SUBTABLE_CEDT = 3,
+};
+
+struct acpi_madt_io_sapic {
+	struct acpi_subtable_header header;
+	u8 id;
+	u8 reserved;
+	u32 global_irq_base;
+	u64 address;
+};
+
+struct acpi_madt_interrupt_source {
+	struct acpi_subtable_header header;
+	u16 inti_flags;
+	u8 type;
+	u8 id;
+	u8 eid;
+	u8 io_sapic_vector;
+	u32 global_irq;
+	u32 flags;
+};
+
+struct acpi_madt_generic_interrupt {
+	struct acpi_subtable_header header;
+	u16 reserved;
+	u32 cpu_interface_number;
+	u32 uid;
+	u32 flags;
+	u32 parking_version;
+	u32 performance_interrupt;
+	u64 parked_address;
+	u64 base_address;
+	u64 gicv_base_address;
+	u64 gich_base_address;
+	u32 vgic_interrupt;
+	u64 gicr_base_address;
+	u64 arm_mpidr;
+	u8 efficiency_class;
+	u8 reserved2[1];
+	u16 spe_interrupt;
+	u16 trbe_interrupt;
+} __attribute__((packed));
+
+struct acpi_madt_generic_distributor {
+	struct acpi_subtable_header header;
+	u16 reserved;
+	u32 gic_id;
+	u64 base_address;
+	u32 global_irq_base;
+	u8 version;
+	u8 reserved2[3];
+};
+
+struct acpi_madt_core_pic {
+	struct acpi_subtable_header header;
+	u8 version;
+	u32 processor_id;
+	u32 core_id;
+	u32 flags;
+} __attribute__((packed));
+
+struct acpi_madt_rintc {
+	struct acpi_subtable_header header;
+	u8 version;
+	u8 reserved;
+	u32 flags;
+	u64 hart_id;
+	u32 uid;
+	u32 ext_intc_id;
+	u64 imsic_addr;
+	u32 imsic_size;
+} __attribute__((packed));
+
+struct acpi_subtable_entry {
+	union acpi_subtable_headers *hdr;
+	enum acpi_subtable_type type;
+};
+
+enum acpi_predicate {
+	all_versions = 0,
+	less_than_or_equal = 1,
+	equal = 2,
+	greater_than_or_equal = 3,
+};
+
+struct acpi_platform_list {
+	char oem_id[7];
+	char oem_table_id[9];
+	u32 oem_revision;
+	char *table;
+	enum acpi_predicate pred;
+	char *reason;
+	u32 data;
+};
+
+struct acpi_osi_config {
+	u8 default_disabling;
+	unsigned int linux_enable: 1;
+	unsigned int linux_dmi: 1;
+	unsigned int linux_cmdline: 1;
+	unsigned int darwin_enable: 1;
+	unsigned int darwin_dmi: 1;
+	unsigned int darwin_cmdline: 1;
+};
+
+struct acpi_osi_entry {
+	char string[64];
+	bool enable;
+};
+
+typedef u32 (*acpi_interface_handler)(acpi_string, u32);
+
+typedef u32 (*acpi_osd_handler)(void *);
+
+struct acpi_ioremap {
+	struct list_head list;
+	void *virt;
+	acpi_physical_address phys;
+	acpi_size size;
+	union {
+		unsigned long refcount;
+		struct rcu_work rwork;
+	} track;
+};
+
+typedef void (*acpi_osd_exec_callback)(void *);
+
+struct acpi_os_dpc {
+	acpi_osd_exec_callback function;
+	void *context;
+	struct work_struct work;
+};
+
+struct acpi_hp_work {
+	struct work_struct work;
+	struct acpi_device *adev;
+	u32 src;
+};
+
+struct acpi_predefined_names {
+	const char *name;
+	u8 type;
+	char *val;
+};
+
+struct acpi_pci_id {
+	u16 segment;
+	u16 bus;
+	u16 device;
+	u16 function;
+};
+
+typedef enum {
+	OSL_GLOBAL_LOCK_HANDLER = 0,
+	OSL_NOTIFY_HANDLER = 1,
+	OSL_GPE_HANDLER = 2,
+	OSL_DEBUGGER_MAIN_THREAD = 3,
+	OSL_DEBUGGER_EXEC_THREAD = 4,
+	OSL_EC_POLL_HANDLER = 5,
+	OSL_EC_BURST_HANDLER = 6,
+} acpi_execute_type;
+
+struct acpi_device_bus_id {
+	const char *bus_id;
+	struct ida instance_ida;
+	struct list_head node;
+};
+
+struct acpi_pld_info {
+	u8 revision;
+	u8 ignore_color;
+	u8 red;
+	u8 green;
+	u8 blue;
+	u16 width;
+	u16 height;
+	u8 user_visible;
+	u8 dock;
+	u8 lid;
+	u8 panel;
+	u8 vertical_position;
+	u8 horizontal_position;
+	u8 shape;
+	u8 group_orientation;
+	u8 group_token;
+	u8 group_position;
+	u8 bay;
+	u8 ejectable;
+	u8 ospm_eject_required;
+	u8 cabinet_number;
+	u8 card_cage_number;
+	u8 reference;
+	u8 rotation;
+	u8 order;
+	u8 reserved;
+	u16 vertical_offset;
+	u16 horizontal_offset;
+};
+
+struct acpi_handle_list {
+	u32 count;
+	acpi_handle handles[10];
+};
+
+struct acpi_dev_match_info {
+	struct acpi_device_id hid[2];
+	const char *uid;
+	s64 hrv;
+};
+
+struct nvs_region {
+	__u64 phys_start;
+	__u64 size;
+	struct list_head node;
+};
+
+struct nvs_page {
+	unsigned long phys_start;
+	unsigned int size;
+	void *kaddr;
+	void *data;
+	bool unmap;
+	struct list_head node;
+};
+
+struct acpi_wakeup_handler {
+	struct list_head list_node;
+	bool (*wakeup)(void *);
+	void *context;
+};
+
+typedef u32 acpi_event_status;
+
+struct acpi_data_node;
+
+struct acpi_data_node_attr {
+	struct attribute attr;
+	ssize_t (*show)(struct acpi_data_node *, char *);
+	ssize_t (*store)(struct acpi_data_node *, const char *, size_t);
+};
+
+struct acpi_data_node {
+	const char *name;
+	acpi_handle handle;
+	struct fwnode_handle fwnode;
+	struct fwnode_handle *parent;
+	struct acpi_device_data data;
+	struct list_head sibling;
+	struct kobject kobj;
+	struct completion kobj_done;
+};
+
+struct acpi_hardware_id {
+	struct list_head list;
+	const char *id;
+};
+
+typedef void (*acpi_notify_handler)(acpi_handle, u32, void *);
+
+struct acpi_device_physical_node {
+	unsigned int node_id;
+	struct list_head node;
+	struct device *dev;
+	bool put_online: 1;
+};
+
+typedef int (*acpi_op_add)(struct acpi_device *);
+
+typedef void (*acpi_op_remove)(struct acpi_device *);
+
+typedef void (*acpi_op_notify)(struct acpi_device *, u32);
+
+struct acpi_device_ops {
+	acpi_op_add add;
+	acpi_op_remove remove;
+	acpi_op_notify notify;
+};
+
+struct acpi_driver {
+	char name[80];
+	char class[80];
+	const struct acpi_device_id *ids;
+	unsigned int flags;
+	struct acpi_device_ops ops;
+	struct device_driver drv;
+	struct module *owner;
+};
+
+struct acpi_osc_context {
+	char *uuid_str;
+	int rev;
+	struct acpi_buffer cap;
+	struct acpi_buffer ret;
+};
+
+typedef acpi_status (*acpi_table_handler)(u32, void *, void *);
+
+struct acpi_dev_walk_context {
+	int (*fn)(struct acpi_device *, void *);
+	void *data;
+};
+
+struct acpi_bus_type {
+	struct list_head list;
+	const char *name;
+	bool (*match)(struct device *);
+	struct acpi_device * (*find_companion)(struct device *);
+	void (*setup)(struct device *);
+};
+
+struct find_child_walk_data {
+	struct acpi_device *adev;
+	u64 address;
+	int score;
+	bool check_sta;
+	bool check_children;
+};
+
+enum acpi_reconfig_event {
+	ACPI_RECONFIG_DEVICE_ADD = 0,
+	ACPI_RECONFIG_DEVICE_REMOVE = 1,
+};
+
+enum acpi_bus_device_type {
+	ACPI_BUS_TYPE_DEVICE = 0,
+	ACPI_BUS_TYPE_POWER = 1,
+	ACPI_BUS_TYPE_PROCESSOR = 2,
+	ACPI_BUS_TYPE_THERMAL = 3,
+	ACPI_BUS_TYPE_POWER_BUTTON = 4,
+	ACPI_BUS_TYPE_SLEEP_BUTTON = 5,
+	ACPI_BUS_TYPE_ECDT_EC = 6,
+	ACPI_BUS_DEVICE_TYPE_COUNT = 7,
+};
+
+struct acpi_dep_data {
+	struct list_head node;
+	acpi_handle supplier;
+	acpi_handle consumer;
+	bool honor_dep;
+	bool met;
+	bool free_when_met;
+};
+
+struct acpi_scan_clear_dep_work {
+	struct work_struct work;
+	struct acpi_device *adev;
+};
+
+typedef acpi_status (*acpi_walk_callback)(acpi_handle, u32, void *, void **);
+
+struct acpi_pnp_device_id {
+	u32 length;
+	char *string;
+};
+
+struct acpi_pnp_device_id_list {
+	u32 count;
+	u32 list_size;
+	struct acpi_pnp_device_id ids[0];
+};
+
+struct acpi_device_info {
+	u32 info_size;
+	u32 name;
+	acpi_object_type type;
+	u8 param_count;
+	u16 valid;
+	u8 flags;
+	u8 highest_dstates[4];
+	u8 lowest_dstates[5];
+	u64 address;
+	struct acpi_pnp_device_id hardware_id;
+	struct acpi_pnp_device_id unique_id;
+	struct acpi_pnp_device_id class_code;
+	struct acpi_pnp_device_id_list compatible_id_list;
+};
+
+struct acpi_table_stao {
+	struct acpi_table_header header;
+	u8 ignore_uart;
+} __attribute__((packed));
+
+struct acpi_table_spcr {
+	struct acpi_table_header header;
+	u8 interface_type;
+	u8 reserved[3];
+	struct acpi_generic_address serial_port;
+	u8 interrupt_type;
+	u8 pc_interrupt;
+	u32 interrupt;
+	u8 baud_rate;
+	u8 parity;
+	u8 stop_bits;
+	u8 flow_control;
+	u8 terminal_type;
+	u8 reserved1;
+	u16 pci_device_id;
+	u16 pci_vendor_id;
+	u8 pci_bus;
+	u8 pci_device;
+	u8 pci_function;
+	u32 pci_flags;
+	u8 pci_segment;
+	u32 reserved2;
+} __attribute__((packed));
+
+struct irq_override_cmp {
+	const struct dmi_system_id *system;
+	unsigned char irq;
+	unsigned char triggering;
+	unsigned char polarity;
+	unsigned char shareable;
+	bool override;
+};
+
+struct res_proc_context {
+	struct list_head *list;
+	int (*preproc)(struct acpi_resource *, void *);
+	void *preproc_data;
+	int count;
+	int error;
+};
+
+struct resource_win {
+	struct resource res;
+	resource_size_t offset;
+};
+
+struct acpi_lpi_state {
+	u32 min_residency;
+	u32 wake_latency;
+	u32 flags;
+	u32 arch_flags;
+	u32 res_cnt_freq;
+	u32 enable_parent_state;
+	u64 address;
+	u8 index;
+	u8 entry_method;
+	char desc[32];
+};
+
+struct acpi_processor_power {
+	int count;
+	union {
+		struct acpi_processor_cx states[8];
+		struct acpi_lpi_state lpi_states[8];
+	};
+	int timer_broadcast_on_state;
+};
+
+struct acpi_pct_register {
+	u8 descriptor;
+	u16 length;
+	u8 space_id;
+	u8 bit_width;
+	u8 bit_offset;
+	u8 reserved;
+	u64 address;
+} __attribute__((packed));
+
+struct acpi_tsd_package {
+	u64 num_entries;
+	u64 revision;
+	u64 domain;
+	u64 coord_type;
+	u64 num_processors;
+};
+
+struct acpi_processor_tx {
+	u16 power;
+	u16 performance;
+};
+
+struct acpi_processor_tx_tss;
+
+struct acpi_processor;
+
+struct acpi_processor_throttling {
+	unsigned int state;
+	unsigned int platform_limit;
+	struct acpi_pct_register control_register;
+	struct acpi_pct_register status_register;
+	unsigned int state_count;
+	struct acpi_processor_tx_tss *states_tss;
+	struct acpi_tsd_package domain_info;
+	cpumask_var_t shared_cpu_map;
+	int (*acpi_processor_get_throttling)(struct acpi_processor *);
+	int (*acpi_processor_set_throttling)(struct acpi_processor *, int, bool);
+	u32 address;
+	u8 duty_offset;
+	u8 duty_width;
+	u8 tsd_valid_flag;
+	unsigned int shared_type;
+	struct acpi_processor_tx states[16];
+};
+
+struct acpi_processor_lx {
+	int px;
+	int tx;
+};
+
+struct acpi_processor_limit {
+	struct acpi_processor_lx state;
+	struct acpi_processor_lx thermal;
+	struct acpi_processor_lx user;
+};
+
+struct acpi_processor_performance;
+
+struct acpi_processor {
+	acpi_handle handle;
+	u32 acpi_id;
+	phys_cpuid_t phys_id;
+	u32 id;
+	u32 pblk;
+	int performance_platform_limit;
+	int throttling_platform_limit;
+	struct acpi_processor_flags flags;
+	struct acpi_processor_power power;
+	struct acpi_processor_performance *performance;
+	struct acpi_processor_throttling throttling;
+	struct acpi_processor_limit limit;
+	struct thermal_cooling_device *cdev;
+	struct device *dev;
+	struct freq_qos_request perflib_req;
+	struct freq_qos_request thermal_req;
+};
+
+struct acpi_psd_package {
+	u64 num_entries;
+	u64 revision;
+	u64 domain;
+	u64 coord_type;
+	u64 num_processors;
+};
+
+struct acpi_processor_px;
+
+struct acpi_processor_performance {
+	unsigned int state;
+	unsigned int platform_limit;
+	struct acpi_pct_register control_register;
+	struct acpi_pct_register status_register;
+	unsigned int state_count;
+	struct acpi_processor_px *states;
+	struct acpi_psd_package domain_info;
+	cpumask_var_t shared_cpu_map;
+	unsigned int shared_type;
+};
+
+struct acpi_processor_px {
+	u64 core_frequency;
+	u64 power;
+	u64 transition_latency;
+	u64 bus_master_latency;
+	u64 control;
+	u64 status;
+};
+
+struct acpi_processor_tx_tss {
+	u64 freqpercentage;
+	u64 power;
+	u64 transition_latency;
+	u64 control;
+	u64 status;
+};
+
+struct thermal_cooling_device_ops;
+
+struct thermal_cooling_device {
+	int id;
+	char *type;
+	unsigned long max_state;
+	struct device device;
+	struct device_node *np;
+	void *devdata;
+	void *stats;
+	const struct thermal_cooling_device_ops *ops;
+	bool updated;
+	struct mutex lock;
+	struct list_head thermal_instances;
+	struct list_head node;
+	u64 android_kabi_reserved1;
+};
+
+struct thermal_cooling_device_ops {
+	int (*get_max_state)(struct thermal_cooling_device *, unsigned long *);
+	int (*get_cur_state)(struct thermal_cooling_device *, unsigned long *);
+	int (*set_cur_state)(struct thermal_cooling_device *, unsigned long);
+	int (*get_requested_power)(struct thermal_cooling_device *, u32 *);
+	int (*state2power)(struct thermal_cooling_device *, unsigned long, u32 *);
+	int (*power2state)(struct thermal_cooling_device *, u32, unsigned long *);
+	u64 android_kabi_reserved1;
+};
+
+struct acpi_processor_errata {
+	u8 smp;
+	struct {
+		u8 throttle: 1;
+		u8 fdma: 1;
+		u8 reserved: 6;
+		u32 bmisx;
+	} piix4;
+};
+
+enum acpi_ec_event_state {
+	EC_EVENT_READY = 0,
+	EC_EVENT_IN_PROGRESS = 1,
+	EC_EVENT_COMPLETE = 2,
+};
+
+struct transaction;
+
+struct acpi_ec {
+	acpi_handle handle;
+	acpi_handle address_space_handler_holder;
+	int gpe;
+	int irq;
+	unsigned long command_addr;
+	unsigned long data_addr;
+	bool global_lock;
+	unsigned long flags;
+	unsigned long reference_count;
+	struct mutex mutex;
+	wait_queue_head_t wait;
+	struct list_head list;
+	struct transaction *curr;
+	spinlock_t lock;
+	struct work_struct work;
+	unsigned long timestamp;
+	enum acpi_ec_event_state event_state;
+	unsigned int events_to_process;
+	unsigned int events_in_progress;
+	unsigned int queries_in_progress;
+	bool busy_polling;
+	unsigned int polling_guard;
+};
+
+struct transaction {
+	const u8 *wdata;
+	u8 *rdata;
+	unsigned short irq_count;
+	u8 command;
+	u8 wi;
+	u8 ri;
+	u8 wlen;
+	u8 rlen;
+	u8 flags;
+};
+
+enum ec_command {
+	ACPI_EC_COMMAND_READ = 128,
+	ACPI_EC_COMMAND_WRITE = 129,
+	ACPI_EC_BURST_ENABLE = 130,
+	ACPI_EC_BURST_DISABLE = 131,
+	ACPI_EC_COMMAND_QUERY = 132,
+};
+
+enum {
+	EC_FLAGS_QUERY_ENABLED = 0,
+	EC_FLAGS_EVENT_HANDLER_INSTALLED = 1,
+	EC_FLAGS_EC_HANDLER_INSTALLED = 2,
+	EC_FLAGS_EC_REG_CALLED = 3,
+	EC_FLAGS_QUERY_METHODS_INSTALLED = 4,
+	EC_FLAGS_STARTED = 5,
+	EC_FLAGS_STOPPED = 6,
+	EC_FLAGS_EVENTS_MASKED = 7,
+};
+
+typedef int (*acpi_ec_query_func)(void *);
+
+struct acpi_ec_query_handler {
+	struct list_head node;
+	acpi_ec_query_func func;
+	acpi_handle handle;
+	void *data;
+	u8 query_bit;
+	struct kref kref;
+};
+
+struct acpi_ec_query {
+	struct transaction transaction;
+	struct work_struct work;
+	struct acpi_ec_query_handler *handler;
+	struct acpi_ec *ec;
+};
+
+typedef u32 (*acpi_gpe_handler)(acpi_handle, u32, void *);
+
+struct acpi_table_ecdt {
+	struct acpi_table_header header;
+	struct acpi_generic_address control;
+	struct acpi_generic_address data;
+	u32 uid;
+	u8 gpe;
+	u8 id[0];
+} __attribute__((packed));
+
+struct pci_osc_bit_struct {
+	u32 bit;
+	char *desc;
+};
+
+enum acpi_bridge_type {
+	ACPI_BRIDGE_TYPE_PCIE = 1,
+	ACPI_BRIDGE_TYPE_CXL = 2,
+};
+
+struct acpi_pci_root_ops;
+
+struct acpi_pci_root_info {
+	struct acpi_pci_root *root;
+	struct acpi_device *bridge;
+	struct acpi_pci_root_ops *ops;
+	struct list_head resources;
+	char name[16];
+};
+
+struct acpi_pci_root_ops {
+	struct pci_ops *pci_ops;
+	int (*init_info)(struct acpi_pci_root_info *);
+	void (*release_info)(struct acpi_pci_root_info *);
+	int (*prepare_resources)(struct acpi_pci_root_info *);
+};
+
+struct acpi_pci_link_irq {
+	u32 active;
+	u8 triggering;
+	u8 polarity;
+	u8 resource_type;
+	u8 possible_count;
+	u32 possible[16];
+	u8 initialized: 1;
+	u8 reserved: 7;
+};
+
+struct acpi_pci_link {
+	struct list_head list;
+	struct acpi_device *device;
+	struct acpi_pci_link_irq irq;
+	int refcnt;
+};
+
+struct prt_quirk {
+	const struct dmi_system_id *system;
+	unsigned int segment;
+	unsigned int bus;
+	unsigned int device;
+	unsigned char pin;
+	const char *source;
+	const char *actual_source;
+};
+
+struct acpi_pci_routing_table {
+	u32 length;
+	u32 pin;
+	u64 address;
+	u32 source_index;
+	union {
+		char pad[4];
+		struct {
+			struct {} __Empty_source;
+			char source[0];
+		};
+	};
+};
+
+struct acpi_prt_entry {
+	struct acpi_pci_id id;
+	u8 pin;
+	acpi_handle link;
+	u32 index;
+};
+
+struct apd_private_data;
+
+struct apd_device_desc {
+	unsigned int fixed_clk_rate;
+	struct property_entry *properties;
+	int (*setup)(struct apd_private_data *);
+};
+
+struct apd_private_data {
+	struct clk *clk;
+	struct acpi_device *adev;
+	const struct apd_device_desc *dev_desc;
+};
+
+struct acpi_power_resource;
+
+struct acpi_power_resource_entry {
+	struct list_head node;
+	struct acpi_power_resource *resource;
+};
+
+struct acpi_power_resource {
+	struct acpi_device device;
+	struct list_head list_node;
+	u32 system_level;
+	u32 order;
+	unsigned int ref_count;
+	u8 state;
+	struct mutex resource_lock;
+	struct list_head dependents;
+};
+
+struct acpi_power_dependent_device {
+	struct device *dev;
+	struct list_head node;
+};
+
+enum {
+	ACPI_GENL_CMD_UNSPEC = 0,
+	ACPI_GENL_CMD_EVENT = 1,
+	__ACPI_GENL_CMD_MAX = 2,
+};
+
+enum {
+	ACPI_GENL_ATTR_UNSPEC = 0,
+	ACPI_GENL_ATTR_EVENT = 1,
+	__ACPI_GENL_ATTR_MAX = 2,
+};
+
+struct acpi_bus_event {
+	struct list_head node;
+	acpi_device_class device_class;
+	acpi_bus_id bus_id;
+	u32 type;
+	u32 data;
+};
+
+struct acpi_genl_event {
+	acpi_device_class device_class;
+	char bus_id[15];
+	u32 type;
+	u32 data;
+};
+
+struct acpi_ged_event {
+	struct list_head node;
+	struct device *dev;
+	unsigned int gsi;
+	unsigned int irq;
+	acpi_handle handle;
+};
+
+struct acpi_ged_device {
+	struct device *dev;
+	struct list_head event_list;
+};
+
+struct event_counter {
+	u32 count;
+	u32 flags;
+};
+
+struct acpi_data_attr;
+
+struct acpi_data_obj {
+	char *name;
+	int (*fn)(void *, struct acpi_data_attr *);
+};
+
+struct acpi_data_attr {
+	struct bin_attribute attr;
+	u64 addr;
+};
+
+struct acpi_table_attr {
+	struct bin_attribute attr;
+	char name[4];
+	int instance;
+	char filename[8];
+	struct list_head node;
+};
+
+typedef void (*acpi_gbl_event_handler)(u32, acpi_handle, u32, void *);
+
+struct acpi_table_bert {
+	struct acpi_table_header header;
+	u32 region_length;
+	u64 address;
+};
+
+struct acpi_table_ccel {
+	struct acpi_table_header header;
+	u8 CCtype;
+	u8 Ccsub_type;
+	u16 reserved;
+	u64 log_area_minimum_length;
+	u64 log_area_start_address;
+};
+
+struct acpi_device_properties {
+	const guid_t *guid;
+	union acpi_object *properties;
+	struct list_head list;
+	void **bufs;
+};
+
+struct override_status_id {
+	struct acpi_device_id hid[2];
+	struct x86_cpu_id cpu_ids[2];
+	struct dmi_system_id dmi_ids[2];
+	const char *uid;
+	const char *path;
+	unsigned long long status;
+};
+
+struct lpi_constraints {
+	acpi_handle handle;
+	int min_dstate;
+};
+
+struct amd_lps0_hid_device_data {
+	const bool check_off_by_one;
+};
+
+struct acpi_s2idle_dev_ops {
+	struct list_head list_node;
+	void (*prepare)();
+	void (*check)();
+	void (*restore)();
+};
+
+struct lpi_device_constraint_amd {
+	char *name;
+	int enabled;
+	int function_states;
+	int min_dstate;
+};
+
+struct lpi_device_info {
+	char *name;
+	int enabled;
+	union acpi_object *package;
+};
+
+struct lpi_device_constraint {
+	int uid;
+	int min_dstate;
+	int function_states;
+};
+
+struct acpi_lpat {
+	int temp;
+	int raw;
+};
+
+struct acpi_lpat_conversion_table {
+	struct acpi_lpat *lpat;
+	int lpat_count;
+};
+
+struct lpit_residency_info {
+	struct acpi_generic_address gaddr;
+	u64 frequency;
+	void *iomem_addr;
+};
+
+struct acpi_lpit_header {
+	u32 type;
+	u32 length;
+	u16 unique_id;
+	u16 reserved;
+	u32 flags;
+};
+
+struct acpi_lpit_native {
+	struct acpi_lpit_header header;
+	struct acpi_generic_address entry_trigger;
+	u32 residency;
+	u32 latency;
+	struct acpi_generic_address residency_counter;
+	u64 counter_frequency;
+};
+
+struct acpi_table_lpit {
+	struct acpi_table_header header;
+};
+
+struct acpi_prmt_module_info {
+	u16 revision;
+	u16 length;
+	u8 module_guid[16];
+	u16 major_rev;
+	u16 minor_rev;
+	u16 handler_info_count;
+	u32 handler_info_offset;
+	u64 mmio_list_pointer;
+} __attribute__((packed));
+
+struct acpi_prmt_handler_info {
+	u16 revision;
+	u16 length;
+	u8 handler_guid[16];
+	u64 handler_address;
+	u64 static_data_buffer_address;
+	u64 acpi_param_buffer_address;
+} __attribute__((packed));
+
+struct prm_buffer {
+	u8 prm_status;
+	u64 efi_status;
+	u8 prm_cmd;
+	guid_t handler_guid;
+} __attribute__((packed));
+
+struct prm_handler_info {
+	guid_t guid;
+	efi_status_t (*handler_addr)(u64, void *);
+	u64 static_data_buffer_addr;
+	u64 acpi_param_buffer_addr;
+	struct list_head handler_list;
+};
+
+struct prm_mmio_info;
+
+struct prm_module_info {
+	guid_t guid;
+	u16 major_rev;
+	u16 minor_rev;
+	u16 handler_count;
+	struct prm_mmio_info *mmio_info;
+	bool updatable;
+	struct list_head module_list;
+	struct prm_handler_info handlers[0];
+};
+
+struct prm_mmio_addr_range {
+	u64 phys_addr;
+	u64 virt_addr;
+	u32 length;
+} __attribute__((packed));
+
+struct prm_mmio_info {
+	u64 mmio_count;
+	struct prm_mmio_addr_range addr_ranges[0];
+};
+
+typedef u64 acpi_integer;
+
+struct prm_context_buffer {
+	char signature[4];
+	u16 revision;
+	u16 reserved;
+	guid_t identifier;
+	u64 static_data_buffer;
+	struct prm_mmio_info *mmio_ranges;
+};
+
+struct acpi_pcc_info {
+	u8 subspace_id;
+	u16 length;
+	u8 *internal_buffer;
+};
+
+struct mbox_client {
+	struct device *dev;
+	bool tx_block;
+	unsigned long tx_tout;
+	bool knows_txdone;
+	void (*rx_callback)(struct mbox_client *, void *);
+	void (*tx_prepare)(struct mbox_client *, void *);
+	void (*tx_done)(struct mbox_client *, void *, int);
+};
+
+struct pcc_mbox_chan;
+
+struct pcc_data {
+	struct pcc_mbox_chan *pcc_chan;
+	void *pcc_comm_addr;
+	struct completion done;
+	struct mbox_client cl;
+	struct acpi_pcc_info ctx;
+};
+
+struct mbox_chan;
+
+struct pcc_mbox_chan {
+	struct mbox_chan *mchan;
+	u64 shmem_base_addr;
+	u64 shmem_size;
+	u32 latency;
+	u32 max_access_rate;
+	u16 min_turnaround_time;
+};
+
+struct mbox_controller;
+
+struct mbox_chan {
+	struct mbox_controller *mbox;
+	unsigned int txdone_method;
+	struct mbox_client *cl;
+	struct completion tx_complete;
+	void *active_req;
+	unsigned int msg_count;
+	unsigned int msg_free;
+	void *msg_data[20];
+	spinlock_t lock;
+	void *con_priv;
+};
+
+struct mbox_chan_ops;
+
+struct mbox_controller {
+	struct device *dev;
+	const struct mbox_chan_ops *ops;
+	struct mbox_chan *chans;
+	int num_chans;
+	bool txdone_irq;
+	bool txdone_poll;
+	unsigned int txpoll_period;
+	struct mbox_chan * (*of_xlate)(struct mbox_controller *, const struct of_phandle_args *);
+	struct hrtimer poll_hrt;
+	spinlock_t poll_hrt_lock;
+	struct list_head node;
+};
+
+struct mbox_chan_ops {
+	int (*send_data)(struct mbox_chan *, void *);
+	int (*flush)(struct mbox_chan *, unsigned long);
+	int (*startup)(struct mbox_chan *);
+	void (*shutdown)(struct mbox_chan *);
+	bool (*last_tx_done)(struct mbox_chan *);
+	bool (*peek_data)(struct mbox_chan *);
+};
+
+union acpi_operand_object;
+
+struct acpi_object_common {
+	union acpi_operand_object *next_object;
+	u8 descriptor_type;
+	u8 type;
+	u16 reference_count;
+	u8 flags;
+};
+
+struct acpi_object_integer {
+	union acpi_operand_object *next_object;
+	u8 descriptor_type;
+	u8 type;
+	u16 reference_count;
+	u8 flags;
+	u8 fill[3];
+	u64 value;
+};
+
+struct acpi_object_string {
+	union acpi_operand_object *next_object;
+	u8 descriptor_type;
+	u8 type;
+	u16 reference_count;
+	u8 flags;
+	char *pointer;
+	u32 length;
+};
+
+struct acpi_namespace_node;
+
+struct acpi_object_buffer {
+	union acpi_operand_object *next_object;
+	u8 descriptor_type;
+	u8 type;
+	u16 reference_count;
+	u8 flags;
+	u8 *pointer;
+	u32 length;
+	u32 aml_length;
+	u8 *aml_start;
+	struct acpi_namespace_node *node;
+};
+
+struct acpi_object_package {
+	union acpi_operand_object *next_object;
+	u8 descriptor_type;
+	u8 type;
+	u16 reference_count;
+	u8 flags;
+	struct acpi_namespace_node *node;
+	union acpi_operand_object **elements;
+	u8 *aml_start;
+	u32 aml_length;
+	u32 count;
+};
+
+struct acpi_object_event {
+	union acpi_operand_object *next_object;
+	u8 descriptor_type;
+	u8 type;
+	u16 reference_count;
+	u8 flags;
+	void *os_semaphore;
+};
+
+struct acpi_walk_state;
+
+typedef acpi_status (*acpi_internal_method)(struct acpi_walk_state *);
+
+struct acpi_object_method {
+	union acpi_operand_object *next_object;
+	u8 descriptor_type;
+	u8 type;
+	u16 reference_count;
+	u8 flags;
+	u8 info_flags;
+	u8 param_count;
+	u8 sync_level;
+	union acpi_operand_object *mutex;
+	union acpi_operand_object *node;
+	u8 *aml_start;
+	union {
+		acpi_internal_method implementation;
+		union acpi_operand_object *handler;
+	} dispatch;
+	u32 aml_length;
+	acpi_owner_id owner_id;
+	u8 thread_count;
+};
+
+struct acpi_thread_state;
+
+struct acpi_object_mutex {
+	union acpi_operand_object *next_object;
+	u8 descriptor_type;
+	u8 type;
+	u16 reference_count;
+	u8 flags;
+	u8 sync_level;
+	u16 acquisition_depth;
+	void *os_mutex;
+	u64 thread_id;
+	struct acpi_thread_state *owner_thread;
+	union acpi_operand_object *prev;
+	union acpi_operand_object *next;
+	struct acpi_namespace_node *node;
+	u8 original_sync_level;
+};
+
+struct acpi_object_region {
+	union acpi_operand_object *next_object;
+	u8 descriptor_type;
+	u8 type;
+	u16 reference_count;
+	u8 flags;
+	u8 space_id;
+	struct acpi_namespace_node *node;
+	union acpi_operand_object *handler;
+	union acpi_operand_object *next;
+	acpi_physical_address address;
+	u32 length;
+	void *pointer;
+};
+
+struct acpi_object_notify_common {
+	union acpi_operand_object *next_object;
+	u8 descriptor_type;
+	u8 type;
+	u16 reference_count;
+	u8 flags;
+	union acpi_operand_object *notify_list[2];
+	union acpi_operand_object *handler;
+};
+
+struct acpi_gpe_block_info;
+
+struct acpi_object_device {
+	union acpi_operand_object *next_object;
+	u8 descriptor_type;
+	u8 type;
+	u16 reference_count;
+	u8 flags;
+	union acpi_operand_object *notify_list[2];
+	union acpi_operand_object *handler;
+	struct acpi_gpe_block_info *gpe_block;
+};
+
+struct acpi_object_power_resource {
+	union acpi_operand_object *next_object;
+	u8 descriptor_type;
+	u8 type;
+	u16 reference_count;
+	u8 flags;
+	union acpi_operand_object *notify_list[2];
+	union acpi_operand_object *handler;
+	u32 system_level;
+	u32 resource_order;
+};
+
+struct acpi_object_processor {
+	union acpi_operand_object *next_object;
+	u8 descriptor_type;
+	u8 type;
+	u16 reference_count;
+	u8 flags;
+	u8 proc_id;
+	u8 length;
+	union acpi_operand_object *notify_list[2];
+	union acpi_operand_object *handler;
+	acpi_io_address address;
+};
+
+struct acpi_object_thermal_zone {
+	union acpi_operand_object *next_object;
+	u8 descriptor_type;
+	u8 type;
+	u16 reference_count;
+	u8 flags;
+	union acpi_operand_object *notify_list[2];
+	union acpi_operand_object *handler;
+};
+
+struct acpi_object_field_common {
+	union acpi_operand_object *next_object;
+	u8 descriptor_type;
+	u8 type;
+	u16 reference_count;
+	u8 flags;
+	u8 field_flags;
+	u8 attribute;
+	u8 access_byte_width;
+	struct acpi_namespace_node *node;
+	u32 bit_length;
+	u32 base_byte_offset;
+	u32 value;
+	u8 start_field_bit_offset;
+	u8 access_length;
+	union acpi_operand_object *region_obj;
+};
+
+struct acpi_object_region_field {
+	union acpi_operand_object *next_object;
+	u8 descriptor_type;
+	u8 type;
+	u16 reference_count;
+	u8 flags;
+	u8 field_flags;
+	u8 attribute;
+	u8 access_byte_width;
+	struct acpi_namespace_node *node;
+	u32 bit_length;
+	u32 base_byte_offset;
+	u32 value;
+	u8 start_field_bit_offset;
+	u8 access_length;
+	u16 resource_length;
+	union acpi_operand_object *region_obj;
+	u8 *resource_buffer;
+	u16 pin_number_index;
+	u8 *internal_pcc_buffer;
+};
+
+struct acpi_object_buffer_field {
+	union acpi_operand_object *next_object;
+	u8 descriptor_type;
+	u8 type;
+	u16 reference_count;
+	u8 flags;
+	u8 field_flags;
+	u8 attribute;
+	u8 access_byte_width;
+	struct acpi_namespace_node *node;
+	u32 bit_length;
+	u32 base_byte_offset;
+	u32 value;
+	u8 start_field_bit_offset;
+	u8 access_length;
+	u8 is_create_field;
+	union acpi_operand_object *buffer_obj;
+};
+
+struct acpi_object_bank_field {
+	union acpi_operand_object *next_object;
+	u8 descriptor_type;
+	u8 type;
+	u16 reference_count;
+	u8 flags;
+	u8 field_flags;
+	u8 attribute;
+	u8 access_byte_width;
+	struct acpi_namespace_node *node;
+	u32 bit_length;
+	u32 base_byte_offset;
+	u32 value;
+	u8 start_field_bit_offset;
+	u8 access_length;
+	union acpi_operand_object *region_obj;
+	union acpi_operand_object *bank_obj;
+};
+
+struct acpi_object_index_field {
+	union acpi_operand_object *next_object;
+	u8 descriptor_type;
+	u8 type;
+	u16 reference_count;
+	u8 flags;
+	u8 field_flags;
+	u8 attribute;
+	u8 access_byte_width;
+	struct acpi_namespace_node *node;
+	u32 bit_length;
+	u32 base_byte_offset;
+	u32 value;
+	u8 start_field_bit_offset;
+	u8 access_length;
+	union acpi_operand_object *index_obj;
+	union acpi_operand_object *data_obj;
+};
+
+struct acpi_object_notify_handler {
+	union acpi_operand_object *next_object;
+	u8 descriptor_type;
+	u8 type;
+	u16 reference_count;
+	u8 flags;
+	struct acpi_namespace_node *node;
+	u32 handler_type;
+	acpi_notify_handler handler;
+	void *context;
+	union acpi_operand_object *next[2];
+};
+
+struct acpi_object_addr_handler {
+	union acpi_operand_object *next_object;
+	u8 descriptor_type;
+	u8 type;
+	u16 reference_count;
+	u8 flags;
+	u8 space_id;
+	u8 handler_flags;
+	acpi_adr_space_handler handler;
+	struct acpi_namespace_node *node;
+	void *context;
+	void *context_mutex;
+	acpi_adr_space_setup setup;
+	union acpi_operand_object *region_list;
+	union acpi_operand_object *next;
+};
+
+struct acpi_object_reference {
+	union acpi_operand_object *next_object;
+	u8 descriptor_type;
+	u8 type;
+	u16 reference_count;
+	u8 flags;
+	u8 class;
+	u8 target_type;
+	u8 resolved;
+	void *object;
+	struct acpi_namespace_node *node;
+	union acpi_operand_object **where;
+	u8 *index_pointer;
+	u8 *aml;
+	u32 value;
+};
+
+struct acpi_object_extra {
+	union acpi_operand_object *next_object;
+	u8 descriptor_type;
+	u8 type;
+	u16 reference_count;
+	u8 flags;
+	struct acpi_namespace_node *method_REG;
+	struct acpi_namespace_node *scope_node;
+	void *region_context;
+	u8 *aml_start;
+	u32 aml_length;
+};
+
+struct acpi_object_data {
+	union acpi_operand_object *next_object;
+	u8 descriptor_type;
+	u8 type;
+	u16 reference_count;
+	u8 flags;
+	acpi_object_handler handler;
+	void *pointer;
+};
+
+struct acpi_object_cache_list {
+	union acpi_operand_object *next_object;
+	u8 descriptor_type;
+	u8 type;
+	u16 reference_count;
+	u8 flags;
+	union acpi_operand_object *next;
+};
+
+struct acpi_namespace_node {
+	union acpi_operand_object *object;
+	u8 descriptor_type;
+	u8 type;
+	u16 flags;
+	union acpi_name_union name;
+	struct acpi_namespace_node *parent;
+	struct acpi_namespace_node *child;
+	struct acpi_namespace_node *peer;
+	acpi_owner_id owner_id;
+};
+
+union acpi_operand_object {
+	struct acpi_object_common common;
+	struct acpi_object_integer integer;
+	struct acpi_object_string string;
+	struct acpi_object_buffer buffer;
+	struct acpi_object_package package;
+	struct acpi_object_event event;
+	struct acpi_object_method method;
+	struct acpi_object_mutex mutex;
+	struct acpi_object_region region;
+	struct acpi_object_notify_common common_notify;
+	struct acpi_object_device device;
+	struct acpi_object_power_resource power_resource;
+	struct acpi_object_processor processor;
+	struct acpi_object_thermal_zone thermal_zone;
+	struct acpi_object_field_common common_field;
+	struct acpi_object_region_field field;
+	struct acpi_object_buffer_field buffer_field;
+	struct acpi_object_bank_field bank_field;
+	struct acpi_object_index_field index_field;
+	struct acpi_object_notify_handler notify;
+	struct acpi_object_addr_handler address_space;
+	struct acpi_object_reference reference;
+	struct acpi_object_extra extra;
+	struct acpi_object_data data;
+	struct acpi_object_cache_list cache;
+	struct acpi_namespace_node node;
+};
+
+union acpi_parse_object;
+
+union acpi_generic_state;
+
+struct acpi_parse_state {
+	u8 *aml_start;
+	u8 *aml;
+	u8 *aml_end;
+	u8 *pkg_start;
+	u8 *pkg_end;
+	union acpi_parse_object *start_op;
+	struct acpi_namespace_node *start_node;
+	union acpi_generic_state *scope;
+	union acpi_parse_object *start_scope;
+	u32 aml_size;
+};
+
+typedef acpi_status (*acpi_parse_downwards)(struct acpi_walk_state *, union acpi_parse_object **);
+
+typedef acpi_status (*acpi_parse_upwards)(struct acpi_walk_state *);
+
+struct acpi_opcode_info;
+
+struct acpi_walk_state {
+	struct acpi_walk_state *next;
+	u8 descriptor_type;
+	u8 walk_type;
+	u16 opcode;
+	u8 next_op_info;
+	u8 num_operands;
+	u8 operand_index;
+	acpi_owner_id owner_id;
+	u8 last_predicate;
+	u8 current_result;
+	u8 return_used;
+	u8 scope_depth;
+	u8 pass_number;
+	u8 namespace_override;
+	u8 result_size;
+	u8 result_count;
+	u8 *aml;
+	u32 arg_types;
+	u32 method_breakpoint;
+	u32 user_breakpoint;
+	u32 parse_flags;
+	struct acpi_parse_state parser_state;
+	u32 prev_arg_types;
+	u32 arg_count;
+	u16 method_nesting_depth;
+	u8 method_is_nested;
+	struct acpi_namespace_node arguments[7];
+	struct acpi_namespace_node local_variables[8];
+	union acpi_operand_object *operands[9];
+	union acpi_operand_object **params;
+	u8 *aml_last_while;
+	union acpi_operand_object **caller_return_desc;
+	union acpi_generic_state *control_state;
+	struct acpi_namespace_node *deferred_node;
+	union acpi_operand_object *implicit_return_obj;
+	struct acpi_namespace_node *method_call_node;
+	union acpi_parse_object *method_call_op;
+	union acpi_operand_object *method_desc;
+	struct acpi_namespace_node *method_node;
+	char *method_pathname;
+	union acpi_parse_object *op;
+	const struct acpi_opcode_info *op_info;
+	union acpi_parse_object *origin;
+	union acpi_operand_object *result_obj;
+	union acpi_generic_state *results;
+	union acpi_operand_object *return_desc;
+	union acpi_generic_state *scope_info;
+	union acpi_parse_object *prev_op;
+	union acpi_parse_object *next_op;
+	struct acpi_thread_state *thread;
+	acpi_parse_downwards descending_callback;
+	acpi_parse_upwards ascending_callback;
+};
+
+union acpi_parse_value {
+	u64 integer;
+	u32 size;
+	char *string;
+	u8 *buffer;
+	char *name;
+	union acpi_parse_object *arg;
+};
+
+struct acpi_parse_obj_common {
+	union acpi_parse_object *parent;
+	u8 descriptor_type;
+	u8 flags;
+	u16 aml_opcode;
+	u8 *aml;
+	union acpi_parse_object *next;
+	struct acpi_namespace_node *node;
+	union acpi_parse_value value;
+	u8 arg_list_length;
+};
+
+struct acpi_parse_obj_named {
+	union acpi_parse_object *parent;
+	u8 descriptor_type;
+	u8 flags;
+	u16 aml_opcode;
+	u8 *aml;
+	union acpi_parse_object *next;
+	struct acpi_namespace_node *node;
+	union acpi_parse_value value;
+	u8 arg_list_length;
+	char *path;
+	u8 *data;
+	u32 length;
+	u32 name;
+};
+
+struct acpi_parse_obj_asl {
+	union acpi_parse_object *parent;
+	u8 descriptor_type;
+	u8 flags;
+	u16 aml_opcode;
+	u8 *aml;
+	union acpi_parse_object *next;
+	struct acpi_namespace_node *node;
+	union acpi_parse_value value;
+	u8 arg_list_length;
+	union acpi_parse_object *child;
+	union acpi_parse_object *parent_method;
+	char *filename;
+	u8 file_changed;
+	char *parent_filename;
+	char *external_name;
+	char *namepath;
+	char name_seg[4];
+	u32 extra_value;
+	u32 column;
+	u32 line_number;
+	u32 logical_line_number;
+	u32 logical_byte_offset;
+	u32 end_line;
+	u32 end_logical_line;
+	u32 acpi_btype;
+	u32 aml_length;
+	u32 aml_subtree_length;
+	u32 final_aml_length;
+	u32 final_aml_offset;
+	u32 compile_flags;
+	u16 parse_opcode;
+	u8 aml_opcode_length;
+	u8 aml_pkg_len_bytes;
+	u8 extra;
+	char parse_op_name[20];
+};
+
+union acpi_parse_object {
+	struct acpi_parse_obj_common common;
+	struct acpi_parse_obj_named named;
+	struct acpi_parse_obj_asl asl;
+};
+
+struct acpi_common_state {
+	void *next;
+	u8 descriptor_type;
+	u8 flags;
+	u16 value;
+	u16 state;
+};
+
+struct acpi_control_state {
+	void *next;
+	u8 descriptor_type;
+	u8 flags;
+	u16 value;
+	u16 state;
+	u16 opcode;
+	union acpi_parse_object *predicate_op;
+	u8 *aml_predicate_start;
+	u8 *package_end;
+	u64 loop_timeout;
+};
+
+struct acpi_update_state {
+	void *next;
+	u8 descriptor_type;
+	u8 flags;
+	u16 value;
+	u16 state;
+	union acpi_operand_object *object;
+};
+
+struct acpi_scope_state {
+	void *next;
+	u8 descriptor_type;
+	u8 flags;
+	u16 value;
+	u16 state;
+	struct acpi_namespace_node *node;
+};
+
+struct acpi_pscope_state {
+	void *next;
+	u8 descriptor_type;
+	u8 flags;
+	u16 value;
+	u16 state;
+	u32 arg_count;
+	union acpi_parse_object *op;
+	u8 *arg_end;
+	u8 *pkg_end;
+	u32 arg_list;
+};
+
+struct acpi_pkg_state {
+	void *next;
+	u8 descriptor_type;
+	u8 flags;
+	u16 value;
+	u16 state;
+	u32 index;
+	union acpi_operand_object *source_object;
+	union acpi_operand_object *dest_object;
+	struct acpi_walk_state *walk_state;
+	void *this_target_obj;
+	u32 num_packages;
+};
+
+struct acpi_thread_state {
+	void *next;
+	u8 descriptor_type;
+	u8 flags;
+	u16 value;
+	u16 state;
+	u8 current_sync_level;
+	struct acpi_walk_state *walk_state_list;
+	union acpi_operand_object *acquired_mutex_list;
+	u64 thread_id;
+};
+
+struct acpi_result_values {
+	void *next;
+	u8 descriptor_type;
+	u8 flags;
+	u16 value;
+	u16 state;
+	union acpi_operand_object *obj_desc[8];
+};
+
+struct acpi_global_notify_handler;
+
+struct acpi_notify_info {
+	void *next;
+	u8 descriptor_type;
+	u8 flags;
+	u16 value;
+	u16 state;
+	u8 handler_list_id;
+	struct acpi_namespace_node *node;
+	union acpi_operand_object *handler_list_head;
+	struct acpi_global_notify_handler *global;
+};
+
+union acpi_generic_state {
+	struct acpi_common_state common;
+	struct acpi_control_state control;
+	struct acpi_update_state update;
+	struct acpi_scope_state scope;
+	struct acpi_pscope_state parse_scope;
+	struct acpi_pkg_state pkg;
+	struct acpi_thread_state thread;
+	struct acpi_result_values results;
+	struct acpi_notify_info notify;
+};
+
+struct acpi_global_notify_handler {
+	acpi_notify_handler handler;
+	void *context;
+};
+
+struct acpi_opcode_info {
+	u32 parse_args;
+	u32 runtime_args;
+	u16 flags;
+	u8 object_type;
+	u8 class;
+	u8 type;
+};
+
+struct acpi_gpe_xrupt_info;
+
+struct acpi_gpe_register_info;
+
+struct acpi_gpe_event_info;
+
+struct acpi_gpe_block_info {
+	struct acpi_namespace_node *node;
+	struct acpi_gpe_block_info *previous;
+	struct acpi_gpe_block_info *next;
+	struct acpi_gpe_xrupt_info *xrupt_block;
+	struct acpi_gpe_register_info *register_info;
+	struct acpi_gpe_event_info *event_info;
+	u64 address;
+	u32 register_count;
+	u16 gpe_count;
+	u16 block_base_number;
+	u8 space_id;
+	u8 initialized;
+};
+
+struct acpi_gpe_xrupt_info {
+	struct acpi_gpe_xrupt_info *previous;
+	struct acpi_gpe_xrupt_info *next;
+	struct acpi_gpe_block_info *gpe_block_list_head;
+	u32 interrupt_number;
+};
+
+struct acpi_gpe_address {
+	u8 space_id;
+	u64 address;
+};
+
+struct acpi_gpe_register_info {
+	struct acpi_gpe_address status_address;
+	struct acpi_gpe_address enable_address;
+	u16 base_gpe_number;
+	u8 enable_for_wake;
+	u8 enable_for_run;
+	u8 mask_for_run;
+	u8 enable_mask;
+};
+
+struct acpi_gpe_handler_info;
+
+struct acpi_gpe_notify_info;
+
+union acpi_gpe_dispatch_info {
+	struct acpi_namespace_node *method_node;
+	struct acpi_gpe_handler_info *handler;
+	struct acpi_gpe_notify_info *notify_list;
+};
+
+struct acpi_gpe_event_info {
+	union acpi_gpe_dispatch_info dispatch;
+	struct acpi_gpe_register_info *register_info;
+	u8 flags;
+	u8 gpe_number;
+	u8 runtime_count;
+	u8 disable_for_dispatch;
+};
+
+struct acpi_gpe_handler_info {
+	acpi_gpe_handler address;
+	void *context;
+	struct acpi_namespace_node *method_node;
+	u8 original_flags;
+	u8 originally_enabled;
+};
+
+struct acpi_gpe_notify_info {
+	struct acpi_namespace_node *device_node;
+	struct acpi_gpe_notify_info *next;
+};
+
+union acpi_predefined_info;
+
+struct acpi_evaluate_info {
+	struct acpi_namespace_node *prefix_node;
+	const char *relative_pathname;
+	union acpi_operand_object **parameters;
+	struct acpi_namespace_node *node;
+	union acpi_operand_object *obj_desc;
+	char *full_pathname;
+	const union acpi_predefined_info *predefined;
+	union acpi_operand_object *return_object;
+	union acpi_operand_object *parent_package;
+	u32 return_flags;
+	u32 return_btype;
+	u16 param_count;
+	u16 node_flags;
+	u8 pass_number;
+	u8 return_object_type;
+	u8 flags;
+};
+
+struct acpi_name_info {
+	char name[4];
+	u16 argument_list;
+	u8 expected_btypes;
+} __attribute__((packed));
+
+struct acpi_package_info {
+	u8 type;
+	u8 object_type1;
+	u8 count1;
+	u8 object_type2;
+	u8 count2;
+	u16 reserved;
+} __attribute__((packed));
+
+struct acpi_package_info2 {
+	u8 type;
+	u8 count;
+	u8 object_type[4];
+	u8 reserved;
+};
+
+struct acpi_package_info3 {
+	u8 type;
+	u8 count;
+	u8 object_type[2];
+	u8 tail_object_type;
+	u16 reserved;
+} __attribute__((packed));
+
+struct acpi_package_info4 {
+	u8 type;
+	u8 object_type1;
+	u8 count1;
+	u8 sub_object_types;
+	u8 pkg_count;
+	u16 reserved;
+} __attribute__((packed));
+
+union acpi_predefined_info {
+	struct acpi_name_info info;
+	struct acpi_package_info ret_info;
+	struct acpi_package_info2 ret_info2;
+	struct acpi_package_info3 ret_info3;
+	struct acpi_package_info4 ret_info4;
+};
+
+enum {
+	ACPI_REFCLASS_LOCAL = 0,
+	ACPI_REFCLASS_ARG = 1,
+	ACPI_REFCLASS_REFOF = 2,
+	ACPI_REFCLASS_INDEX = 3,
+	ACPI_REFCLASS_TABLE = 4,
+	ACPI_REFCLASS_NAME = 5,
+	ACPI_REFCLASS_DEBUG = 6,
+	ACPI_REFCLASS_MAX = 6,
+};
+
+struct acpi_common_descriptor {
+	void *common_pointer;
+	u8 descriptor_type;
+};
+
+union acpi_descriptor {
+	struct acpi_common_descriptor common;
+	union acpi_operand_object object;
+	struct acpi_namespace_node node;
+	union acpi_parse_object op;
+};
+
+typedef enum {
+	ACPI_IMODE_LOAD_PASS1 = 1,
+	ACPI_IMODE_LOAD_PASS2 = 2,
+	ACPI_IMODE_EXECUTE = 3,
+} acpi_interpreter_mode;
+
+struct acpi_create_field_info {
+	struct acpi_namespace_node *region_node;
+	struct acpi_namespace_node *field_node;
+	struct acpi_namespace_node *register_node;
+	struct acpi_namespace_node *data_register_node;
+	struct acpi_namespace_node *connection_node;
+	u8 *resource_buffer;
+	u32 bank_value;
+	u32 field_bit_position;
+	u32 field_bit_length;
+	u16 resource_length;
+	u16 pin_number_index;
+	u8 field_flags;
+	u8 attribute;
+	u8 field_type;
+	u8 access_length;
+};
+
+struct acpi_init_walk_info {
+	u32 table_index;
+	u32 object_count;
+	u32 method_count;
+	u32 serial_method_count;
+	u32 non_serial_method_count;
+	u32 serialized_method_count;
+	u32 device_count;
+	u32 op_region_count;
+	u32 field_count;
+	u32 buffer_count;
+	u32 package_count;
+	u32 op_region_init;
+	u32 field_init;
+	u32 buffer_init;
+	u32 package_init;
+	acpi_owner_id owner_id;
+};
+
+typedef u32 acpi_name;
+
+enum {
+	AML_FIELD_ACCESS_ANY = 0,
+	AML_FIELD_ACCESS_BYTE = 1,
+	AML_FIELD_ACCESS_WORD = 2,
+	AML_FIELD_ACCESS_DWORD = 3,
+	AML_FIELD_ACCESS_QWORD = 4,
+	AML_FIELD_ACCESS_BUFFER = 5,
+};
+
+typedef acpi_status (*acpi_execute_op)(struct acpi_walk_state *);
+
+typedef u32 acpi_mutex_handle;
+
+struct acpi_gpe_walk_info {
+	struct acpi_namespace_node *gpe_device;
+	struct acpi_gpe_block_info *gpe_block;
+	u16 count;
+	acpi_owner_id owner_id;
+	u8 execute_by_owner_id;
+};
+
+typedef acpi_status (*acpi_gpe_callback)(struct acpi_gpe_xrupt_info *, struct acpi_gpe_block_info *, void *);
+
+struct acpi_gpe_device_info {
+	u32 index;
+	u32 next_block_base_index;
+	acpi_status status;
+	struct acpi_namespace_node *gpe_device;
+};
+
+typedef u32 (*acpi_event_handler)(void *);
+
+struct acpi_reg_walk_info {
+	u32 function;
+	u32 reg_run_count;
+	acpi_adr_space_type space_id;
+};
+
+struct acpi_ffh_info {
+	u64 offset;
+	u64 length;
+};
+
+struct acpi_mem_mapping;
+
+struct acpi_mem_space_context {
+	u32 length;
+	acpi_physical_address address;
+	struct acpi_mem_mapping *cur_mm;
+	struct acpi_mem_mapping *first_mm;
+};
+
+struct acpi_mem_mapping {
+	acpi_physical_address physical_address;
+	u8 *logical_address;
+	acpi_size length;
+	struct acpi_mem_mapping *next_mm;
+};
+
+struct acpi_data_table_mapping {
+	void *pointer;
+};
+
+typedef u32 (*acpi_sci_handler)(void *);
+
+struct acpi_sci_handler_info {
+	struct acpi_sci_handler_info *next;
+	acpi_sci_handler address;
+	void *context;
+};
+
+enum {
+	AML_FIELD_UPDATE_PRESERVE = 0,
+	AML_FIELD_UPDATE_WRITE_AS_ONES = 32,
+	AML_FIELD_UPDATE_WRITE_AS_ZEROS = 64,
+};
+
+struct acpi_signal_fatal_info {
+	u32 type;
+	u32 code;
+	u32 argument;
+};
+
+enum {
+	MATCH_MTR = 0,
+	MATCH_MEQ = 1,
+	MATCH_MLE = 2,
+	MATCH_MLT = 3,
+	MATCH_MGE = 4,
+	MATCH_MGT = 5,
+};
+
+enum {
+	AML_FIELD_ATTRIB_QUICK = 2,
+	AML_FIELD_ATTRIB_SEND_RECEIVE = 4,
+	AML_FIELD_ATTRIB_BYTE = 6,
+	AML_FIELD_ATTRIB_WORD = 8,
+	AML_FIELD_ATTRIB_BLOCK = 10,
+	AML_FIELD_ATTRIB_BYTES = 11,
+	AML_FIELD_ATTRIB_PROCESS_CALL = 12,
+	AML_FIELD_ATTRIB_BLOCK_PROCESS_CALL = 13,
+	AML_FIELD_ATTRIB_RAW_BYTES = 14,
+	AML_FIELD_ATTRIB_RAW_PROCESS_BYTES = 15,
+};
+
+typedef enum {
+	ACPI_TRACE_AML_METHOD = 0,
+	ACPI_TRACE_AML_OPCODE = 1,
+	ACPI_TRACE_AML_REGION = 2,
+} acpi_trace_event_type;
+
+struct acpi_gpe_block_status_context {
+	struct acpi_gpe_register_info *gpe_skip_register_info;
+	u8 gpe_skip_mask;
+	u8 retval;
+};
+
+struct acpi_bit_register_info {
+	u8 parent_register;
+	u8 bit_position;
+	u16 access_bit_mask;
+};
+
+struct acpi_port_info {
+	char *name;
+	u16 start;
+	u16 end;
+	u8 osi_dependency;
+};
+
+struct acpi_table_facs {
+	char signature[4];
+	u32 length;
+	u32 hardware_signature;
+	u32 firmware_waking_vector;
+	u32 global_lock;
+	u32 flags;
+	u64 xfirmware_waking_vector;
+	u8 version;
+	u8 reserved[3];
+	u32 ospm_flags;
+	u8 reserved1[24];
+};
+
+struct acpi_pci_device {
+	acpi_handle device;
+	struct acpi_pci_device *next;
+};
+
+struct acpi_device_walk_info {
+	struct acpi_table_desc *table_desc;
+	struct acpi_evaluate_info *evaluate_info;
+	u32 device_count;
+	u32 num_STA;
+	u32 num_INI;
+};
+
+typedef acpi_status (*acpi_pkg_callback)(u8, union acpi_operand_object *, union acpi_generic_state *, void *);
+
+enum acpi_return_package_types {
+	ACPI_PTYPE1_FIXED = 1,
+	ACPI_PTYPE1_VAR = 2,
+	ACPI_PTYPE1_OPTION = 3,
+	ACPI_PTYPE2 = 4,
+	ACPI_PTYPE2_COUNT = 5,
+	ACPI_PTYPE2_PKG_COUNT = 6,
+	ACPI_PTYPE2_FIXED = 7,
+	ACPI_PTYPE2_MIN = 8,
+	ACPI_PTYPE2_REV_FIXED = 9,
+	ACPI_PTYPE2_FIX_VAR = 10,
+	ACPI_PTYPE2_VAR_VAR = 11,
+	ACPI_PTYPE2_UUID_PAIR = 12,
+	ACPI_PTYPE_CUSTOM = 13,
+};
+
+typedef acpi_status (*acpi_object_converter)(struct acpi_namespace_node *, union acpi_operand_object *, union acpi_operand_object **);
+
+struct acpi_simple_repair_info {
+	char name[4];
+	u32 unexpected_btypes;
+	u32 package_index;
+	acpi_object_converter object_converter;
+};
+
+typedef acpi_status (*acpi_repair_function)(struct acpi_evaluate_info *, union acpi_operand_object **);
+
+struct acpi_repair_info {
+	char name[4];
+	acpi_repair_function repair_function;
+};
+
+struct acpi_namestring_info {
+	const char *external_name;
+	const char *next_external_char;
+	char *internal_name;
+	u32 length;
+	u32 num_segments;
+	u32 num_carats;
+	u8 fully_qualified;
+};
+
+struct acpi_rw_lock {
+	void *writer_mutex;
+	void *reader_mutex;
+	u32 num_readers;
+};
+
+struct acpi_get_devices_info {
+	acpi_walk_callback user_function;
+	void *context;
+	const char *hid;
+};
+
+struct acpi_rsconvert_info {
+	u8 opcode;
+	u8 resource_offset;
+	u8 aml_offset;
+	u8 value;
+};
+
+struct aml_resource_small_header {
+	u8 descriptor_type;
+};
+
+struct aml_resource_large_header {
+	u8 descriptor_type;
+	u16 resource_length;
+} __attribute__((packed));
+
+struct aml_resource_irq {
+	u8 descriptor_type;
+	u16 irq_mask;
+	u8 flags;
+} __attribute__((packed));
+
+struct aml_resource_dma {
+	u8 descriptor_type;
+	u8 dma_channel_mask;
+	u8 flags;
+};
+
+struct aml_resource_start_dependent {
+	u8 descriptor_type;
+	u8 flags;
+};
+
+struct aml_resource_end_dependent {
+	u8 descriptor_type;
+};
+
+struct aml_resource_io {
+	u8 descriptor_type;
+	u8 flags;
+	u16 minimum;
+	u16 maximum;
+	u8 alignment;
+	u8 address_length;
+};
+
+struct aml_resource_fixed_io {
+	u8 descriptor_type;
+	u16 address;
+	u8 address_length;
+} __attribute__((packed));
+
+struct aml_resource_fixed_dma {
+	u8 descriptor_type;
+	u16 request_lines;
+	u16 channels;
+	u8 width;
+} __attribute__((packed));
+
+struct aml_resource_vendor_small {
+	u8 descriptor_type;
+};
+
+struct aml_resource_end_tag {
+	u8 descriptor_type;
+	u8 checksum;
+};
+
+struct aml_resource_memory24 {
+	u8 descriptor_type;
+	u16 resource_length;
+	u8 flags;
+	u16 minimum;
+	u16 maximum;
+	u16 alignment;
+	u16 address_length;
+} __attribute__((packed));
+
+struct aml_resource_generic_register {
+	u8 descriptor_type;
+	u16 resource_length;
+	u8 address_space_id;
+	u8 bit_width;
+	u8 bit_offset;
+	u8 access_size;
+	u64 address;
+} __attribute__((packed));
+
+struct aml_resource_vendor_large {
+	u8 descriptor_type;
+	u16 resource_length;
+} __attribute__((packed));
+
+struct aml_resource_memory32 {
+	u8 descriptor_type;
+	u16 resource_length;
+	u8 flags;
+	u32 minimum;
+	u32 maximum;
+	u32 alignment;
+	u32 address_length;
+} __attribute__((packed));
+
+struct aml_resource_fixed_memory32 {
+	u8 descriptor_type;
+	u16 resource_length;
+	u8 flags;
+	u32 address;
+	u32 address_length;
+} __attribute__((packed));
+
+struct aml_resource_address16 {
+	u8 descriptor_type;
+	u16 resource_length;
+	u8 resource_type;
+	u8 flags;
+	u8 specific_flags;
+	u16 granularity;
+	u16 minimum;
+	u16 maximum;
+	u16 translation_offset;
+	u16 address_length;
+} __attribute__((packed));
+
+struct aml_resource_address32 {
+	u8 descriptor_type;
+	u16 resource_length;
+	u8 resource_type;
+	u8 flags;
+	u8 specific_flags;
+	u32 granularity;
+	u32 minimum;
+	u32 maximum;
+	u32 translation_offset;
+	u32 address_length;
+} __attribute__((packed));
+
+struct aml_resource_address64 {
+	u8 descriptor_type;
+	u16 resource_length;
+	u8 resource_type;
+	u8 flags;
+	u8 specific_flags;
+	u64 granularity;
+	u64 minimum;
+	u64 maximum;
+	u64 translation_offset;
+	u64 address_length;
+} __attribute__((packed));
+
+struct aml_resource_extended_address64 {
+	u8 descriptor_type;
+	u16 resource_length;
+	u8 resource_type;
+	u8 flags;
+	u8 specific_flags;
+	u8 revision_ID;
+	u8 reserved;
+	u64 granularity;
+	u64 minimum;
+	u64 maximum;
+	u64 translation_offset;
+	u64 address_length;
+	u64 type_specific;
+} __attribute__((packed));
+
+struct aml_resource_extended_irq {
+	u8 descriptor_type;
+	u16 resource_length;
+	u8 flags;
+	u8 interrupt_count;
+	union {
+		u32 interrupt;
+		struct {
+			struct {} __Empty_interrupts;
+			u32 interrupts[0];
+		};
+	};
+} __attribute__((packed));
+
+struct aml_resource_gpio {
+	u8 descriptor_type;
+	u16 resource_length;
+	u8 revision_id;
+	u8 connection_type;
+	u16 flags;
+	u16 int_flags;
+	u8 pin_config;
+	u16 drive_strength;
+	u16 debounce_timeout;
+	u16 pin_table_offset;
+	u8 res_source_index;
+	u16 res_source_offset;
+	u16 vendor_offset;
+	u16 vendor_length;
+} __attribute__((packed));
+
+struct aml_resource_i2c_serialbus {
+	u8 descriptor_type;
+	u16 resource_length;
+	u8 revision_id;
+	u8 res_source_index;
+	u8 type;
+	u8 flags;
+	u16 type_specific_flags;
+	u8 type_revision_id;
+	u16 type_data_length;
+	u32 connection_speed;
+	u16 slave_address;
+} __attribute__((packed));
+
+struct aml_resource_spi_serialbus {
+	u8 descriptor_type;
+	u16 resource_length;
+	u8 revision_id;
+	u8 res_source_index;
+	u8 type;
+	u8 flags;
+	u16 type_specific_flags;
+	u8 type_revision_id;
+	u16 type_data_length;
+	u32 connection_speed;
+	u8 data_bit_length;
+	u8 clock_phase;
+	u8 clock_polarity;
+	u16 device_selection;
+} __attribute__((packed));
+
+struct aml_resource_uart_serialbus {
+	u8 descriptor_type;
+	u16 resource_length;
+	u8 revision_id;
+	u8 res_source_index;
+	u8 type;
+	u8 flags;
+	u16 type_specific_flags;
+	u8 type_revision_id;
+	u16 type_data_length;
+	u32 default_baud_rate;
+	u16 rx_fifo_size;
+	u16 tx_fifo_size;
+	u8 parity;
+	u8 lines_enabled;
+} __attribute__((packed));
+
+struct aml_resource_csi2_serialbus {
+	u8 descriptor_type;
+	u16 resource_length;
+	u8 revision_id;
+	u8 res_source_index;
+	u8 type;
+	u8 flags;
+	u16 type_specific_flags;
+	u8 type_revision_id;
+	u16 type_data_length;
+} __attribute__((packed));
+
+struct aml_resource_common_serialbus {
+	u8 descriptor_type;
+	u16 resource_length;
+	u8 revision_id;
+	u8 res_source_index;
+	u8 type;
+	u8 flags;
+	u16 type_specific_flags;
+	u8 type_revision_id;
+	u16 type_data_length;
+} __attribute__((packed));
+
+struct aml_resource_pin_function {
+	u8 descriptor_type;
+	u16 resource_length;
+	u8 revision_id;
+	u16 flags;
+	u8 pin_config;
+	u16 function_number;
+	u16 pin_table_offset;
+	u8 res_source_index;
+	u16 res_source_offset;
+	u16 vendor_offset;
+	u16 vendor_length;
+} __attribute__((packed));
+
+struct aml_resource_pin_config {
+	u8 descriptor_type;
+	u16 resource_length;
+	u8 revision_id;
+	u16 flags;
+	u8 pin_config_type;
+	u32 pin_config_value;
+	u16 pin_table_offset;
+	u8 res_source_index;
+	u16 res_source_offset;
+	u16 vendor_offset;
+	u16 vendor_length;
+} __attribute__((packed));
+
+struct aml_resource_pin_group {
+	u8 descriptor_type;
+	u16 resource_length;
+	u8 revision_id;
+	u16 flags;
+	u16 pin_table_offset;
+	u16 label_offset;
+	u16 vendor_offset;
+	u16 vendor_length;
+} __attribute__((packed));
+
+struct aml_resource_pin_group_function {
+	u8 descriptor_type;
+	u16 resource_length;
+	u8 revision_id;
+	u16 flags;
+	u16 function_number;
+	u8 res_source_index;
+	u16 res_source_offset;
+	u16 res_source_label_offset;
+	u16 vendor_offset;
+	u16 vendor_length;
+} __attribute__((packed));
+
+struct aml_resource_pin_group_config {
+	u8 descriptor_type;
+	u16 resource_length;
+	u8 revision_id;
+	u16 flags;
+	u8 pin_config_type;
+	u32 pin_config_value;
+	u8 res_source_index;
+	u16 res_source_offset;
+	u16 res_source_label_offset;
+	u16 vendor_offset;
+	u16 vendor_length;
+} __attribute__((packed));
+
+struct aml_resource_clock_input {
+	u8 descriptor_type;
+	u16 resource_length;
+	u8 revision_id;
+	u16 flags;
+	u16 frequency_divisor;
+	u32 frequency_numerator;
+} __attribute__((packed));
+
+struct aml_resource_address {
+	u8 descriptor_type;
+	u16 resource_length;
+	u8 resource_type;
+	u8 flags;
+	u8 specific_flags;
+} __attribute__((packed));
+
+union aml_resource {
+	u8 descriptor_type;
+	struct aml_resource_small_header small_header;
+	struct aml_resource_large_header large_header;
+	struct aml_resource_irq irq;
+	struct aml_resource_dma dma;
+	struct aml_resource_start_dependent start_dpf;
+	struct aml_resource_end_dependent end_dpf;
+	struct aml_resource_io io;
+	struct aml_resource_fixed_io fixed_io;
+	struct aml_resource_fixed_dma fixed_dma;
+	struct aml_resource_vendor_small vendor_small;
+	struct aml_resource_end_tag end_tag;
+	struct aml_resource_memory24 memory24;
+	struct aml_resource_generic_register generic_reg;
+	struct aml_resource_vendor_large vendor_large;
+	struct aml_resource_memory32 memory32;
+	struct aml_resource_fixed_memory32 fixed_memory32;
+	struct aml_resource_address16 address16;
+	struct aml_resource_address32 address32;
+	struct aml_resource_address64 address64;
+	struct aml_resource_extended_address64 ext_address64;
+	struct aml_resource_extended_irq extended_irq;
+	struct aml_resource_gpio gpio;
+	struct aml_resource_i2c_serialbus i2c_serial_bus;
+	struct aml_resource_spi_serialbus spi_serial_bus;
+	struct aml_resource_uart_serialbus uart_serial_bus;
+	struct aml_resource_csi2_serialbus csi2_serial_bus;
+	struct aml_resource_common_serialbus common_serial_bus;
+	struct aml_resource_pin_function pin_function;
+	struct aml_resource_pin_config pin_config;
+	struct aml_resource_pin_group pin_group;
+	struct aml_resource_pin_group_function pin_group_function;
+	struct aml_resource_pin_group_config pin_group_config;
+	struct aml_resource_clock_input clock_input;
+	struct aml_resource_address address;
+	u32 dword_item;
+	u16 word_item;
+	u8 byte_item;
+};
+
+typedef u16 acpi_rs_length;
+
+typedef acpi_status (*acpi_walk_aml_callback)(u8 *, u32, u32, u8, void **);
+
+enum {
+	ACPI_RSC_INITGET = 0,
+	ACPI_RSC_INITSET = 1,
+	ACPI_RSC_FLAGINIT = 2,
+	ACPI_RSC_1BITFLAG = 3,
+	ACPI_RSC_2BITFLAG = 4,
+	ACPI_RSC_3BITFLAG = 5,
+	ACPI_RSC_6BITFLAG = 6,
+	ACPI_RSC_ADDRESS = 7,
+	ACPI_RSC_BITMASK = 8,
+	ACPI_RSC_BITMASK16 = 9,
+	ACPI_RSC_COUNT = 10,
+	ACPI_RSC_COUNT16 = 11,
+	ACPI_RSC_COUNT_GPIO_PIN = 12,
+	ACPI_RSC_COUNT_GPIO_RES = 13,
+	ACPI_RSC_COUNT_GPIO_VEN = 14,
+	ACPI_RSC_COUNT_SERIAL_RES = 15,
+	ACPI_RSC_COUNT_SERIAL_VEN = 16,
+	ACPI_RSC_DATA8 = 17,
+	ACPI_RSC_EXIT_EQ = 18,
+	ACPI_RSC_EXIT_LE = 19,
+	ACPI_RSC_EXIT_NE = 20,
+	ACPI_RSC_LENGTH = 21,
+	ACPI_RSC_MOVE_GPIO_PIN = 22,
+	ACPI_RSC_MOVE_GPIO_RES = 23,
+	ACPI_RSC_MOVE_SERIAL_RES = 24,
+	ACPI_RSC_MOVE_SERIAL_VEN = 25,
+	ACPI_RSC_MOVE8 = 26,
+	ACPI_RSC_MOVE16 = 27,
+	ACPI_RSC_MOVE32 = 28,
+	ACPI_RSC_MOVE64 = 29,
+	ACPI_RSC_SET8 = 30,
+	ACPI_RSC_SOURCE = 31,
+	ACPI_RSC_SOURCEX = 32,
+};
+
+typedef u32 acpi_rsdesc_size;
+
+struct acpi_vendor_uuid {
+	u8 subtype;
+	u8 data[16];
+};
+
+struct acpi_vendor_walk_info {
+	struct acpi_vendor_uuid *uuid;
+	struct acpi_buffer *buffer;
+	acpi_status status;
+};
+
+struct acpi_fadt_info {
+	const char *name;
+	u16 address64;
+	u16 address32;
+	u16 length;
+	u8 default_length;
+	u8 flags;
+};
+
+struct acpi_fadt_pm_info {
+	struct acpi_generic_address *target;
+	u16 source;
+	u8 register_num;
+};
+
+struct acpi_table_rsdp {
+	char signature[8];
+	u8 checksum;
+	char oem_id[6];
+	u8 revision;
+	u32 rsdt_physical_address;
+	u32 length;
+	u64 xsdt_physical_address;
+	u8 extended_checksum;
+	u8 reserved[3];
+} __attribute__((packed));
+
+struct acpi_address_range {
+	struct acpi_address_range *next;
+	struct acpi_namespace_node *region_node;
+	acpi_physical_address start_address;
+	acpi_physical_address end_address;
+};
+
+struct acpi_table_cdat {
+	u32 length;
+	u8 revision;
+	u8 checksum;
+	u8 reserved[6];
+	u32 sequence;
+};
+
+struct acpi_pkg_info {
+	u8 *free_space;
+	acpi_size length;
+	u32 object_space;
+	u32 num_packages;
+};
+
+struct acpi_exception_info {
+	char *name;
+};
+
+struct acpi_comment_node {
+	char *comment;
+	struct acpi_comment_node *next;
+};
+
+struct acpi_fixed_event_info {
+	u8 status_register_id;
+	u8 enable_register_id;
+	u16 status_bit_mask;
+	u16 enable_bit_mask;
+};
+
+struct acpi_table_fadt {
+	struct acpi_table_header header;
+	u32 facs;
+	u32 dsdt;
+	u8 model;
+	u8 preferred_profile;
+	u16 sci_interrupt;
+	u32 smi_command;
+	u8 acpi_enable;
+	u8 acpi_disable;
+	u8 s4_bios_request;
+	u8 pstate_control;
+	u32 pm1a_event_block;
+	u32 pm1b_event_block;
+	u32 pm1a_control_block;
+	u32 pm1b_control_block;
+	u32 pm2_control_block;
+	u32 pm_timer_block;
+	u32 gpe0_block;
+	u32 gpe1_block;
+	u8 pm1_event_length;
+	u8 pm1_control_length;
+	u8 pm2_control_length;
+	u8 pm_timer_length;
+	u8 gpe0_block_length;
+	u8 gpe1_block_length;
+	u8 gpe1_base;
+	u8 cst_control;
+	u16 c2_latency;
+	u16 c3_latency;
+	u16 flush_size;
+	u16 flush_stride;
+	u8 duty_offset;
+	u8 duty_width;
+	u8 day_alarm;
+	u8 month_alarm;
+	u8 century;
+	u16 boot_flags;
+	u8 reserved;
+	u32 flags;
+	struct acpi_generic_address reset_register;
+	u8 reset_value;
+	u16 arm_boot_flags;
+	u8 minor_revision;
+	u64 Xfacs;
+	u64 Xdsdt;
+	struct acpi_generic_address xpm1a_event_block;
+	struct acpi_generic_address xpm1b_event_block;
+	struct acpi_generic_address xpm1a_control_block;
+	struct acpi_generic_address xpm1b_control_block;
+	struct acpi_generic_address xpm2_control_block;
+	struct acpi_generic_address xpm_timer_block;
+	struct acpi_generic_address xgpe0_block;
+	struct acpi_generic_address xgpe1_block;
+	struct acpi_generic_address sleep_control;
+	struct acpi_generic_address sleep_status;
+	u64 hypervisor_id;
+} __attribute__((packed));
+
+struct acpi_table_list {
+	struct acpi_table_desc *tables;
+	u32 current_table_count;
+	u32 max_table_count;
+	u8 flags;
+};
+
+struct acpi_mutex_info {
+	void *mutex;
+	u32 use_count;
+	u64 thread_id;
+};
+
+typedef acpi_status (*acpi_exception_handler)(acpi_status, acpi_name, u16, u32, void *);
+
+typedef acpi_status (*acpi_init_handler)(acpi_handle, u32);
+
+struct acpi_ged_handler_info {
+	struct acpi_ged_handler_info *next;
+	u32 int_id;
+	struct acpi_namespace_node *evt_method;
+};
+
+struct acpi_interface_info {
+	char *name;
+	struct acpi_interface_info *next;
+	u8 flags;
+	u8 value;
+};
+
+struct acpi_fixed_event_handler {
+	acpi_event_handler handler;
+	void *context;
+};
+
+enum {
+	ACPI_BUTTON_LID_INIT_IGNORE = 0,
+	ACPI_BUTTON_LID_INIT_OPEN = 1,
+	ACPI_BUTTON_LID_INIT_METHOD = 2,
+	ACPI_BUTTON_LID_INIT_DISABLED = 3,
+};
+
+struct input_dev;
+
+struct acpi_button {
+	unsigned int type;
+	struct input_dev *input;
+	char phys[32];
+	unsigned long pushed;
+	int last_state;
+	ktime_t last_time;
+	bool suspended;
+	bool lid_state_initialized;
+};
+
+struct input_id {
+	__u16 bustype;
+	__u16 vendor;
+	__u16 product;
+	__u16 version;
+};
+
+struct input_keymap_entry;
+
+struct ff_device;
+
+struct input_dev_poller;
+
+struct input_mt;
+
+struct input_absinfo;
+
+struct input_handle;
+
+struct input_value;
+
+struct input_dev {
+	const char *name;
+	const char *phys;
+	const char *uniq;
+	struct input_id id;
+	unsigned long propbit[1];
+	unsigned long evbit[1];
+	unsigned long keybit[12];
+	unsigned long relbit[1];
+	unsigned long absbit[1];
+	unsigned long mscbit[1];
+	unsigned long ledbit[1];
+	unsigned long sndbit[1];
+	unsigned long ffbit[2];
+	unsigned long swbit[1];
+	unsigned int hint_events_per_packet;
+	unsigned int keycodemax;
+	unsigned int keycodesize;
+	void *keycode;
+	int (*setkeycode)(struct input_dev *, const struct input_keymap_entry *, unsigned int *);
+	int (*getkeycode)(struct input_dev *, struct input_keymap_entry *);
+	struct ff_device *ff;
+	struct input_dev_poller *poller;
+	unsigned int repeat_key;
+	struct timer_list timer;
+	int rep[2];
+	struct input_mt *mt;
+	struct input_absinfo *absinfo;
+	unsigned long key[12];
+	unsigned long led[1];
+	unsigned long snd[1];
+	unsigned long sw[1];
+	int (*open)(struct input_dev *);
+	void (*close)(struct input_dev *);
+	int (*flush)(struct input_dev *, struct file *);
+	int (*event)(struct input_dev *, unsigned int, unsigned int, int);
+	struct input_handle __attribute__((btf_type_tag("rcu"))) *grab;
+	spinlock_t event_lock;
+	struct mutex mutex;
+	unsigned int users;
+	bool going_away;
+	struct device dev;
+	struct list_head h_list;
+	struct list_head node;
+	unsigned int num_vals;
+	unsigned int max_vals;
+	struct input_value *vals;
+	bool devres_managed;
+	ktime_t timestamp[3];
+	bool inhibited;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct input_keymap_entry {
+	__u8 flags;
+	__u8 len;
+	__u16 index;
+	__u32 keycode;
+	__u8 scancode[32];
+};
+
+struct ff_effect;
+
+struct ff_device {
+	int (*upload)(struct input_dev *, struct ff_effect *, struct ff_effect *);
+	int (*erase)(struct input_dev *, int);
+	int (*playback)(struct input_dev *, int, int);
+	void (*set_gain)(struct input_dev *, u16);
+	void (*set_autocenter)(struct input_dev *, u16);
+	void (*destroy)(struct ff_device *);
+	void *private;
+	unsigned long ffbit[2];
+	struct mutex mutex;
+	int max_effects;
+	struct ff_effect *effects;
+	u64 android_kabi_reserved1;
+	struct file *effect_owners[0];
+};
+
+struct ff_envelope {
+	__u16 attack_length;
+	__u16 attack_level;
+	__u16 fade_length;
+	__u16 fade_level;
+};
+
+struct ff_constant_effect {
+	__s16 level;
+	struct ff_envelope envelope;
+};
+
+struct ff_ramp_effect {
+	__s16 start_level;
+	__s16 end_level;
+	struct ff_envelope envelope;
+};
+
+struct ff_periodic_effect {
+	__u16 waveform;
+	__u16 period;
+	__s16 magnitude;
+	__s16 offset;
+	__u16 phase;
+	struct ff_envelope envelope;
+	__u32 custom_len;
+	__s16 __attribute__((btf_type_tag("user"))) *custom_data;
+};
+
+struct ff_condition_effect {
+	__u16 right_saturation;
+	__u16 left_saturation;
+	__s16 right_coeff;
+	__s16 left_coeff;
+	__u16 deadband;
+	__s16 center;
+};
+
+struct ff_rumble_effect {
+	__u16 strong_magnitude;
+	__u16 weak_magnitude;
+};
+
+struct ff_trigger {
+	__u16 button;
+	__u16 interval;
+};
+
+struct ff_replay {
+	__u16 length;
+	__u16 delay;
+};
+
+struct ff_effect {
+	__u16 type;
+	__s16 id;
+	__u16 direction;
+	struct ff_trigger trigger;
+	struct ff_replay replay;
+	union {
+		struct ff_constant_effect constant;
+		struct ff_ramp_effect ramp;
+		struct ff_periodic_effect periodic;
+		struct ff_condition_effect condition[2];
+		struct ff_rumble_effect rumble;
+	} u;
+};
+
+struct input_absinfo {
+	__s32 value;
+	__s32 minimum;
+	__s32 maximum;
+	__s32 fuzz;
+	__s32 flat;
+	__s32 resolution;
+};
+
+struct input_handler;
+
+struct input_handle {
+	void *private;
+	int open;
+	const char *name;
+	struct input_dev *dev;
+	struct input_handler *handler;
+	struct list_head d_node;
+	struct list_head h_node;
+	u64 android_kabi_reserved1;
+};
+
+struct input_device_id;
+
+struct input_handler {
+	void *private;
+	void (*event)(struct input_handle *, unsigned int, unsigned int, int);
+	void (*events)(struct input_handle *, const struct input_value *, unsigned int);
+	bool (*filter)(struct input_handle *, unsigned int, unsigned int, int);
+	bool (*match)(struct input_handler *, struct input_dev *);
+	int (*connect)(struct input_handler *, struct input_dev *, const struct input_device_id *);
+	void (*disconnect)(struct input_handle *);
+	void (*start)(struct input_handle *);
+	bool legacy_minors;
+	int minor;
+	const char *name;
+	const struct input_device_id *id_table;
+	struct list_head h_list;
+	struct list_head node;
+	u64 android_kabi_reserved1;
+};
+
+struct input_value {
+	__u16 type;
+	__u16 code;
+	__s32 value;
+};
+
+struct input_device_id {
+	kernel_ulong_t flags;
+	__u16 bustype;
+	__u16 vendor;
+	__u16 product;
+	__u16 version;
+	kernel_ulong_t evbit[1];
+	kernel_ulong_t keybit[12];
+	kernel_ulong_t relbit[1];
+	kernel_ulong_t absbit[1];
+	kernel_ulong_t mscbit[1];
+	kernel_ulong_t ledbit[1];
+	kernel_ulong_t sndbit[1];
+	kernel_ulong_t ffbit[2];
+	kernel_ulong_t swbit[1];
+	kernel_ulong_t propbit[1];
+	kernel_ulong_t driver_info;
+};
+
+struct acpi_lpi_states_array {
+	unsigned int size;
+	unsigned int composite_states_size;
+	struct acpi_lpi_state *entries;
+	struct acpi_lpi_state *composite_states[8];
+};
+
+struct throttling_tstate {
+	unsigned int cpu;
+	int target_state;
+};
+
+struct acpi_processor_throttling_arg {
+	struct acpi_processor *pr;
+	int target_state;
+	bool force;
+};
+
+struct container_dev {
+	struct device dev;
+	int (*offline)(struct container_dev *);
+};
+
+struct acpi_pci_ioapic {
+	acpi_handle root_handle;
+	acpi_handle handle;
+	u32 gsi_base;
+	struct resource res;
+	struct pci_dev *pdev;
+	struct list_head list;
+};
+
+struct cppc_pcc_data {
+	struct pcc_mbox_chan *pcc_channel;
+	void *pcc_comm_addr;
+	bool pcc_channel_acquired;
+	unsigned int deadline_us;
+	unsigned int pcc_mpar;
+	unsigned int pcc_mrtt;
+	unsigned int pcc_nominal;
+	bool pending_pcc_write_cmd;
+	bool platform_owns_pcc;
+	unsigned int pcc_write_cnt;
+	struct rw_semaphore pcc_lock;
+	wait_queue_head_t pcc_write_wait_q;
+	ktime_t last_cmd_cmpl_time;
+	ktime_t last_mpar_reset;
+	int mpar_count;
+	int refcount;
+};
+
+struct cpc_register_resource {
+	acpi_object_type type;
+	u64 *sys_mem_vaddr;
+	union {
+		struct cpc_reg reg;
+		u64 int_value;
+	} cpc_entry;
+};
+
+struct cpc_desc {
+	int num_entries;
+	int version;
+	int cpu_id;
+	int write_cmd_status;
+	int write_cmd_id;
+	struct cpc_register_resource cpc_regs[21];
+	struct acpi_psd_package domain_info;
+	struct kobject kobj;
+};
+
+enum cppc_regs {
+	HIGHEST_PERF = 0,
+	NOMINAL_PERF = 1,
+	LOW_NON_LINEAR_PERF = 2,
+	LOWEST_PERF = 3,
+	GUARANTEED_PERF = 4,
+	DESIRED_PERF = 5,
+	MIN_PERF = 6,
+	MAX_PERF = 7,
+	PERF_REDUC_TOLERANCE = 8,
+	TIME_WINDOW = 9,
+	CTR_WRAP_TIME = 10,
+	REFERENCE_CTR = 11,
+	DELIVERED_CTR = 12,
+	PERF_LIMITED = 13,
+	ENABLE = 14,
+	AUTO_SEL_ENABLE = 15,
+	AUTO_ACT_WINDOW = 16,
+	ENERGY_PERF = 17,
+	REFERENCE_PERF = 18,
+	LOWEST_FREQ = 19,
+	NOMINAL_FREQ = 20,
+};
+
+struct cppc_perf_ctrls {
+	u32 max_perf;
+	u32 min_perf;
+	u32 desired_perf;
+	u32 energy_perf;
+};
+
+struct cppc_perf_fb_ctrs {
+	u64 reference;
+	u64 delivered;
+	u64 reference_perf;
+	u64 wraparound_time;
+};
+
+struct cppc_cpudata {
+	struct list_head node;
+	struct cppc_perf_caps perf_caps;
+	struct cppc_perf_ctrls perf_ctrls;
+	struct cppc_perf_fb_ctrs perf_fb_ctrs;
+	unsigned int shared_type;
+	cpumask_var_t shared_cpu_map;
+};
+
+struct acpi_pcct_shared_memory {
+	u32 signature;
+	u16 command;
+	u16 status;
+};
+
+struct pnp_resource {
+	struct list_head list;
+	struct resource res;
+};
+
+struct pnp_port {
+	resource_size_t min;
+	resource_size_t max;
+	resource_size_t align;
+	resource_size_t size;
+	unsigned char flags;
+};
+
+typedef struct {
+	unsigned long bits[4];
+} pnp_irq_mask_t;
+
+struct pnp_irq {
+	pnp_irq_mask_t map;
+	unsigned char flags;
+};
+
+struct pnp_dma {
+	unsigned char map;
+	unsigned char flags;
+};
+
+struct pnp_mem {
+	resource_size_t min;
+	resource_size_t max;
+	resource_size_t align;
+	resource_size_t size;
+	unsigned char flags;
+};
+
+struct pnp_option {
+	struct list_head list;
+	unsigned int flags;
+	unsigned long type;
+	union {
+		struct pnp_port port;
+		struct pnp_irq irq;
+		struct pnp_dma dma;
+		struct pnp_mem mem;
+	} u;
+};
+
+struct pnp_info_buffer {
+	char *buffer;
+	char *curr;
+	unsigned long size;
+	unsigned long len;
+	int stop;
+	int error;
+};
+
+typedef struct pnp_info_buffer pnp_info_buffer_t;
+
+struct pnp_fixup {
+	char id[7];
+	void (*quirk_function)(struct pnp_dev *);
+};
+
+struct acpipnp_parse_option_s {
+	struct pnp_dev *dev;
+	unsigned int option_flags;
+};
+
+struct dma_chan___2;
+
+struct dma_chan_tbl_ent {
+	struct dma_chan___2 *chan;
+};
+
+typedef s32 dma_cookie_t;
+
+struct dma_device;
+
+struct dma_chan_dev;
+
+struct dma_chan_percpu;
+
+struct dma_router;
+
+struct dma_chan___2 {
+	struct dma_device *device;
+	struct device *slave;
+	dma_cookie_t cookie;
+	dma_cookie_t completed_cookie;
+	int chan_id;
+	struct dma_chan_dev *dev;
+	const char *name;
+	char *dbg_client_name;
+	struct list_head device_node;
+	struct dma_chan_percpu __attribute__((btf_type_tag("percpu"))) *local;
+	int client_count;
+	int table_count;
+	struct dma_router *router;
+	void *route_data;
+	void *private;
+};
+
+typedef bool (*dma_filter_fn)(struct dma_chan___2 *, void *);
+
+struct dma_slave_map;
+
+struct dma_filter {
+	dma_filter_fn fn;
+	int mapcnt;
+	const struct dma_slave_map *map;
+};
+
+typedef struct {
+	unsigned long bits[1];
+} dma_cap_mask_t;
+
+enum dma_desc_metadata_mode {
+	DESC_METADATA_NONE = 0,
+	DESC_METADATA_CLIENT = 1,
+	DESC_METADATA_ENGINE = 2,
+};
+
+enum dmaengine_alignment {
+	DMAENGINE_ALIGN_1_BYTE = 0,
+	DMAENGINE_ALIGN_2_BYTES = 1,
+	DMAENGINE_ALIGN_4_BYTES = 2,
+	DMAENGINE_ALIGN_8_BYTES = 3,
+	DMAENGINE_ALIGN_16_BYTES = 4,
+	DMAENGINE_ALIGN_32_BYTES = 5,
+	DMAENGINE_ALIGN_64_BYTES = 6,
+	DMAENGINE_ALIGN_128_BYTES = 7,
+	DMAENGINE_ALIGN_256_BYTES = 8,
+};
+
+enum dma_residue_granularity {
+	DMA_RESIDUE_GRANULARITY_DESCRIPTOR = 0,
+	DMA_RESIDUE_GRANULARITY_SEGMENT = 1,
+	DMA_RESIDUE_GRANULARITY_BURST = 2,
+};
+
+enum sum_check_flags {
+	SUM_CHECK_P_RESULT = 1,
+	SUM_CHECK_Q_RESULT = 2,
+};
+
+enum dma_transfer_direction {
+	DMA_MEM_TO_MEM = 0,
+	DMA_MEM_TO_DEV = 1,
+	DMA_DEV_TO_MEM = 2,
+	DMA_DEV_TO_DEV = 3,
+	DMA_TRANS_NONE = 4,
+};
+
+enum dma_status {
+	DMA_COMPLETE = 0,
+	DMA_IN_PROGRESS = 1,
+	DMA_PAUSED = 2,
+	DMA_ERROR = 3,
+	DMA_OUT_OF_ORDER = 4,
+};
+
+struct dma_async_tx_descriptor;
+
+struct dma_interleaved_template;
+
+struct dma_slave_caps;
+
+struct dma_slave_config;
+
+struct dma_tx_state;
+
+struct dma_device {
+	struct kref ref;
+	unsigned int chancnt;
+	unsigned int privatecnt;
+	struct list_head channels;
+	struct list_head global_node;
+	struct dma_filter filter;
+	dma_cap_mask_t cap_mask;
+	enum dma_desc_metadata_mode desc_metadata_modes;
+	unsigned short max_xor;
+	unsigned short max_pq;
+	enum dmaengine_alignment copy_align;
+	enum dmaengine_alignment xor_align;
+	enum dmaengine_alignment pq_align;
+	enum dmaengine_alignment fill_align;
+	int dev_id;
+	struct device *dev;
+	struct module *owner;
+	struct ida chan_ida;
+	u32 src_addr_widths;
+	u32 dst_addr_widths;
+	u32 directions;
+	u32 min_burst;
+	u32 max_burst;
+	u32 max_sg_burst;
+	bool descriptor_reuse;
+	enum dma_residue_granularity residue_granularity;
+	int (*device_alloc_chan_resources)(struct dma_chan___2 *);
+	int (*device_router_config)(struct dma_chan___2 *);
+	void (*device_free_chan_resources)(struct dma_chan___2 *);
+	struct dma_async_tx_descriptor * (*device_prep_dma_memcpy)(struct dma_chan___2 *, dma_addr_t, dma_addr_t, size_t, unsigned long);
+	struct dma_async_tx_descriptor * (*device_prep_dma_xor)(struct dma_chan___2 *, dma_addr_t, dma_addr_t *, unsigned int, size_t, unsigned long);
+	struct dma_async_tx_descriptor * (*device_prep_dma_xor_val)(struct dma_chan___2 *, dma_addr_t *, unsigned int, size_t, enum sum_check_flags *, unsigned long);
+	struct dma_async_tx_descriptor * (*device_prep_dma_pq)(struct dma_chan___2 *, dma_addr_t *, dma_addr_t *, unsigned int, const unsigned char *, size_t, unsigned long);
+	struct dma_async_tx_descriptor * (*device_prep_dma_pq_val)(struct dma_chan___2 *, dma_addr_t *, dma_addr_t *, unsigned int, const unsigned char *, size_t, enum sum_check_flags *, unsigned long);
+	struct dma_async_tx_descriptor * (*device_prep_dma_memset)(struct dma_chan___2 *, dma_addr_t, int, size_t, unsigned long);
+	struct dma_async_tx_descriptor * (*device_prep_dma_memset_sg)(struct dma_chan___2 *, struct scatterlist *, unsigned int, int, unsigned long);
+	struct dma_async_tx_descriptor * (*device_prep_dma_interrupt)(struct dma_chan___2 *, unsigned long);
+	struct dma_async_tx_descriptor * (*device_prep_slave_sg)(struct dma_chan___2 *, struct scatterlist *, unsigned int, enum dma_transfer_direction, unsigned long, void *);
+	struct dma_async_tx_descriptor * (*device_prep_dma_cyclic)(struct dma_chan___2 *, dma_addr_t, size_t, size_t, enum dma_transfer_direction, unsigned long);
+	struct dma_async_tx_descriptor * (*device_prep_interleaved_dma)(struct dma_chan___2 *, struct dma_interleaved_template *, unsigned long);
+	struct dma_async_tx_descriptor * (*device_prep_dma_imm_data)(struct dma_chan___2 *, dma_addr_t, u64, unsigned long);
+	void (*device_caps)(struct dma_chan___2 *, struct dma_slave_caps *);
+	int (*device_config)(struct dma_chan___2 *, struct dma_slave_config *);
+	int (*device_pause)(struct dma_chan___2 *);
+	int (*device_resume)(struct dma_chan___2 *);
+	int (*device_terminate_all)(struct dma_chan___2 *);
+	void (*device_synchronize)(struct dma_chan___2 *);
+	enum dma_status (*device_tx_status)(struct dma_chan___2 *, dma_cookie_t, struct dma_tx_state *);
+	void (*device_issue_pending)(struct dma_chan___2 *);
+	void (*device_release)(struct dma_device *);
+	void (*dbg_summary_show)(struct seq_file *, struct dma_device *);
+	struct dentry *dbg_dev_root;
+};
+
+struct dma_slave_map {
+	const char *devname;
+	const char *slave;
+	void *param;
+};
+
+enum dma_ctrl_flags {
+	DMA_PREP_INTERRUPT = 1,
+	DMA_CTRL_ACK = 2,
+	DMA_PREP_PQ_DISABLE_P = 4,
+	DMA_PREP_PQ_DISABLE_Q = 8,
+	DMA_PREP_CONTINUE = 16,
+	DMA_PREP_FENCE = 32,
+	DMA_CTRL_REUSE = 64,
+	DMA_PREP_CMD = 128,
+	DMA_PREP_REPEAT = 256,
+	DMA_PREP_LOAD_EOT = 512,
+};
+
+typedef void (*dma_async_tx_callback)(void *);
+
+struct dmaengine_result;
+
+typedef void (*dma_async_tx_callback_result)(void *, const struct dmaengine_result *);
+
+struct dmaengine_unmap_data;
+
+struct dma_descriptor_metadata_ops;
+
+struct dma_async_tx_descriptor {
+	dma_cookie_t cookie;
+	enum dma_ctrl_flags flags;
+	dma_addr_t phys;
+	struct dma_chan___2 *chan;
+	dma_cookie_t (*tx_submit)(struct dma_async_tx_descriptor *);
+	int (*desc_free)(struct dma_async_tx_descriptor *);
+	dma_async_tx_callback callback;
+	dma_async_tx_callback_result callback_result;
+	void *callback_param;
+	struct dmaengine_unmap_data *unmap;
+	enum dma_desc_metadata_mode desc_metadata_mode;
+	struct dma_descriptor_metadata_ops *metadata_ops;
+	struct dma_async_tx_descriptor *next;
+	struct dma_async_tx_descriptor *parent;
+	spinlock_t lock;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+enum dmaengine_tx_result {
+	DMA_TRANS_NOERROR = 0,
+	DMA_TRANS_READ_FAILED = 1,
+	DMA_TRANS_WRITE_FAILED = 2,
+	DMA_TRANS_ABORTED = 3,
+};
+
+struct dmaengine_result {
+	enum dmaengine_tx_result result;
+	u32 residue;
+};
+
+struct dmaengine_unmap_data {
+	u8 map_cnt;
+	u8 to_cnt;
+	u8 from_cnt;
+	u8 bidi_cnt;
+	struct device *dev;
+	struct kref kref;
+	size_t len;
+	dma_addr_t addr[0];
+};
+
+struct dma_descriptor_metadata_ops {
+	int (*attach)(struct dma_async_tx_descriptor *, void *, size_t);
+	void * (*get_ptr)(struct dma_async_tx_descriptor *, size_t *, size_t *);
+	int (*set_len)(struct dma_async_tx_descriptor *, size_t);
+};
+
+struct data_chunk {
+	size_t size;
+	size_t icg;
+	size_t dst_icg;
+	size_t src_icg;
+};
+
+struct dma_interleaved_template {
+	dma_addr_t src_start;
+	dma_addr_t dst_start;
+	enum dma_transfer_direction dir;
+	bool src_inc;
+	bool dst_inc;
+	bool src_sgl;
+	bool dst_sgl;
+	size_t numf;
+	size_t frame_size;
+	struct data_chunk sgl[0];
+};
+
+struct dma_slave_caps {
+	u32 src_addr_widths;
+	u32 dst_addr_widths;
+	u32 directions;
+	u32 min_burst;
+	u32 max_burst;
+	u32 max_sg_burst;
+	bool cmd_pause;
+	bool cmd_resume;
+	bool cmd_terminate;
+	enum dma_residue_granularity residue_granularity;
+	bool descriptor_reuse;
+};
+
+enum dma_slave_buswidth {
+	DMA_SLAVE_BUSWIDTH_UNDEFINED = 0,
+	DMA_SLAVE_BUSWIDTH_1_BYTE = 1,
+	DMA_SLAVE_BUSWIDTH_2_BYTES = 2,
+	DMA_SLAVE_BUSWIDTH_3_BYTES = 3,
+	DMA_SLAVE_BUSWIDTH_4_BYTES = 4,
+	DMA_SLAVE_BUSWIDTH_8_BYTES = 8,
+	DMA_SLAVE_BUSWIDTH_16_BYTES = 16,
+	DMA_SLAVE_BUSWIDTH_32_BYTES = 32,
+	DMA_SLAVE_BUSWIDTH_64_BYTES = 64,
+	DMA_SLAVE_BUSWIDTH_128_BYTES = 128,
+};
+
+struct dma_slave_config {
+	enum dma_transfer_direction direction;
+	phys_addr_t src_addr;
+	phys_addr_t dst_addr;
+	enum dma_slave_buswidth src_addr_width;
+	enum dma_slave_buswidth dst_addr_width;
+	u32 src_maxburst;
+	u32 dst_maxburst;
+	u32 src_port_window_size;
+	u32 dst_port_window_size;
+	bool device_fc;
+	void *peripheral_config;
+	size_t peripheral_size;
+};
+
+struct dma_tx_state {
+	dma_cookie_t last;
+	dma_cookie_t used;
+	u32 residue;
+	u32 in_flight_bytes;
+};
+
+struct dma_chan_dev {
+	struct dma_chan___2 *chan;
+	struct device device;
+	int dev_id;
+	bool chan_dma_dev;
+};
+
+struct dma_chan_percpu {
+	unsigned long memcpy_count;
+	unsigned long bytes_transferred;
+};
+
+struct dma_router {
+	struct device *dev;
+	void (*route_free)(struct device *, void *);
+};
+
+struct dmaengine_unmap_pool {
+	struct kmem_cache *cache;
+	const char *name;
+	mempool_t *pool;
+	size_t size;
+};
+
+enum dma_transaction_type {
+	DMA_MEMCPY = 0,
+	DMA_XOR = 1,
+	DMA_PQ = 2,
+	DMA_XOR_VAL = 3,
+	DMA_PQ_VAL = 4,
+	DMA_MEMSET = 5,
+	DMA_MEMSET_SG = 6,
+	DMA_INTERRUPT = 7,
+	DMA_PRIVATE = 8,
+	DMA_ASYNC_TX = 9,
+	DMA_SLAVE = 10,
+	DMA_CYCLIC = 11,
+	DMA_INTERLEAVE = 12,
+	DMA_COMPLETION_NO_ORDER = 13,
+	DMA_REPEAT = 14,
+	DMA_LOAD_EOT = 15,
+	DMA_TX_TYPE_END = 16,
+};
+
+struct virt_dma_desc {
+	struct dma_async_tx_descriptor tx;
+	struct dmaengine_result tx_result;
+	struct list_head node;
+};
+
+struct virt_dma_chan {
+	struct dma_chan___2 chan;
+	struct tasklet_struct task;
+	void (*desc_free)(struct virt_dma_desc *);
+	spinlock_t lock;
+	struct list_head desc_allocated;
+	struct list_head desc_submitted;
+	struct list_head desc_issued;
+	struct list_head desc_completed;
+	struct list_head desc_terminated;
+	struct virt_dma_desc *cyclic;
+};
+
+struct dmaengine_desc_callback {
+	dma_async_tx_callback callback;
+	dma_async_tx_callback_result callback_result;
+	void *callback_param;
+};
+
+struct acpi_dma_spec;
+
+struct acpi_dma {
+	struct list_head dma_controllers;
+	struct device *dev;
+	struct dma_chan___2 * (*acpi_dma_xlate)(struct acpi_dma_spec *, struct acpi_dma *);
+	void *data;
+	unsigned short base_request_line;
+	unsigned short end_request_line;
+};
+
+struct acpi_dma_spec {
+	int chan_id;
+	int slave_id;
+	struct device *dev;
+};
+
+struct acpi_csrt_group {
+	u32 length;
+	u32 vendor_id;
+	u32 subvendor_id;
+	u16 device_id;
+	u16 subdevice_id;
+	u16 revision;
+	u16 reserved;
+	u32 shared_info_length;
+};
+
+struct acpi_csrt_shared_info {
+	u16 major_version;
+	u16 minor_version;
+	u32 mmio_base_low;
+	u32 mmio_base_high;
+	u32 gsi_interrupt;
+	u8 interrupt_polarity;
+	u8 interrupt_mode;
+	u8 num_channels;
+	u8 dma_address_width;
+	u16 base_request_line;
+	u16 num_handshake_signals;
+	u32 max_block_size;
+};
+
+struct acpi_table_csrt {
+	struct acpi_table_header header;
+};
+
+struct acpi_dma_parser_data {
+	struct acpi_dma_spec dma_spec;
+	size_t index;
+	size_t n;
+};
+
+struct acpi_dma_filter_info {
+	dma_cap_mask_t dma_cap;
+	dma_filter_fn filter_fn;
+};
+
+struct of_dma {
+	struct list_head of_dma_controllers;
+	struct device_node *of_node;
+	struct dma_chan___2 * (*of_dma_xlate)(struct of_phandle_args *, struct of_dma *);
+	void * (*of_dma_route_allocate)(struct of_phandle_args *, struct of_dma *);
+	struct dma_router *dma_router;
+	void *of_dma_data;
+};
+
+struct of_dma_filter_info {
+	dma_cap_mask_t dma_cap;
+	dma_filter_fn filter_fn;
+};
+
+enum dw_dmac_flags {
+	DW_DMA_IS_CYCLIC = 0,
+	DW_DMA_IS_SOFT_LLP = 1,
+	DW_DMA_IS_PAUSED = 2,
+	DW_DMA_IS_INITIALIZED = 3,
+};
+
+enum dw_dma_fc {
+	DW_DMA_FC_D_M2M = 0,
+	DW_DMA_FC_D_M2P = 1,
+	DW_DMA_FC_D_P2M = 2,
+	DW_DMA_FC_D_P2P = 3,
+	DW_DMA_FC_P_P2M = 4,
+	DW_DMA_FC_SP_P2P = 5,
+	DW_DMA_FC_P_M2P = 6,
+	DW_DMA_FC_DP_P2P = 7,
+};
+
+struct dw_dma_slave {
+	struct device *dma_dev;
+	u8 src_id;
+	u8 dst_id;
+	u8 m_master;
+	u8 p_master;
+	u8 channels;
+	bool hs_polarity;
+};
+
+struct dw_dma_chan {
+	struct dma_chan___2 chan;
+	void *ch_regs;
+	u8 mask;
+	u8 priority;
+	enum dma_transfer_direction direction;
+	struct list_head *tx_node_active;
+	spinlock_t lock;
+	unsigned long flags;
+	struct list_head active_list;
+	struct list_head queue;
+	unsigned int descs_allocated;
+	unsigned int block_size;
+	bool nollp;
+	u32 max_burst;
+	struct dw_dma_slave dws;
+	struct dma_slave_config dma_sconfig;
+};
+
+struct dw_dma_platform_data;
+
+struct dw_dma {
+	struct dma_device dma;
+	char name[20];
+	void *regs;
+	struct dma_pool *desc_pool;
+	struct tasklet_struct tasklet;
+	struct dw_dma_chan *chan;
+	u8 all_chan_mask;
+	u8 in_use;
+	void (*initialize_chan)(struct dw_dma_chan *);
+	void (*suspend_chan)(struct dw_dma_chan *, bool);
+	void (*resume_chan)(struct dw_dma_chan *, bool);
+	u32 (*prepare_ctllo)(struct dw_dma_chan *);
+	void (*encode_maxburst)(struct dw_dma_chan *, u32 *);
+	u32 (*bytes2block)(struct dw_dma_chan *, size_t, unsigned int, size_t *);
+	size_t (*block2bytes)(struct dw_dma_chan *, u32, u32);
+	void (*set_device_name)(struct dw_dma *, int);
+	void (*disable)(struct dw_dma *);
+	void (*enable)(struct dw_dma *);
+	struct dw_dma_platform_data *pdata;
+};
+
+struct dw_dma_platform_data {
+	u32 nr_masters;
+	u32 nr_channels;
+	u32 chan_allocation_order;
+	u32 chan_priority;
+	u32 block_size;
+	u32 data_width[4];
+	u32 multi_block[8];
+	u32 max_burst[8];
+	u32 protctl;
+	u32 quirks;
+};
+
+struct dw_lli {
+	__le32 sar;
+	__le32 dar;
+	__le32 llp;
+	__le32 ctllo;
+	__le32 ctlhi;
+	__le32 sstat;
+	__le32 dstat;
+};
+
+struct dw_desc {
+	struct dw_lli lli;
+	struct list_head desc_node;
+	struct list_head tx_list;
+	struct dma_async_tx_descriptor txd;
+	size_t len;
+	size_t total_len;
+	u32 residue;
+};
+
+struct dw_dma_chan_regs {
+	u32 SAR;
+	u32 __pad_SAR;
+	u32 DAR;
+	u32 __pad_DAR;
+	u32 LLP;
+	u32 __pad_LLP;
+	u32 CTL_LO;
+	u32 CTL_HI;
+	u32 SSTAT;
+	u32 __pad_SSTAT;
+	u32 DSTAT;
+	u32 __pad_DSTAT;
+	u32 SSTATAR;
+	u32 __pad_SSTATAR;
+	u32 DSTATAR;
+	u32 __pad_DSTATAR;
+	u32 CFG_LO;
+	u32 CFG_HI;
+	u32 SGR;
+	u32 __pad_SGR;
+	u32 DSR;
+	u32 __pad_DSR;
+};
+
+struct dw_dma_irq_regs {
+	u32 XFER;
+	u32 __pad_XFER;
+	u32 BLOCK;
+	u32 __pad_BLOCK;
+	u32 SRC_TRAN;
+	u32 __pad_SRC_TRAN;
+	u32 DST_TRAN;
+	u32 __pad_DST_TRAN;
+	u32 ERROR;
+	u32 __pad_ERROR;
+};
+
+struct dw_dma_regs {
+	struct dw_dma_chan_regs CHAN[8];
+	struct dw_dma_irq_regs RAW;
+	struct dw_dma_irq_regs STATUS;
+	struct dw_dma_irq_regs MASK;
+	struct dw_dma_irq_regs CLEAR;
+	u32 STATUS_INT;
+	u32 __pad_STATUS_INT;
+	u32 REQ_SRC;
+	u32 __pad_REQ_SRC;
+	u32 REQ_DST;
+	u32 __pad_REQ_DST;
+	u32 SGL_REQ_SRC;
+	u32 __pad_SGL_REQ_SRC;
+	u32 SGL_REQ_DST;
+	u32 __pad_SGL_REQ_DST;
+	u32 LAST_SRC;
+	u32 __pad_LAST_SRC;
+	u32 LAST_DST;
+	u32 __pad_LAST_DST;
+	u32 CFG;
+	u32 __pad_CFG;
+	u32 CH_EN;
+	u32 __pad_CH_EN;
+	u32 ID;
+	u32 __pad_ID;
+	u32 TEST;
+	u32 __pad_TEST;
+	u32 CLASS_PRIORITY0;
+	u32 __pad_CLASS_PRIORITY0;
+	u32 CLASS_PRIORITY1;
+	u32 __pad_CLASS_PRIORITY1;
+	u32 __reserved;
+	u32 DWC_PARAMS[8];
+	u32 MULTI_BLK_TYPE;
+	u32 MAX_BLK_SIZE;
+	u32 DW_PARAMS;
+	u32 COMP_TYPE;
+	u32 COMP_VERSION;
+	u32 FIFO_PARTITION0;
+	u32 __pad_FIFO_PARTITION0;
+	u32 FIFO_PARTITION1;
+	u32 __pad_FIFO_PARTITION1;
+	u32 SAI_ERR;
+	u32 __pad_SAI_ERR;
+	u32 GLOBAL_CFG;
+	u32 __pad_GLOBAL_CFG;
+};
+
+struct dw_dma_chip {
+	struct device *dev;
+	int id;
+	int irq;
+	void *regs;
+	struct clk *clk;
+	struct dw_dma *dw;
+	const struct dw_dma_platform_data *pdata;
+};
+
+struct hsu_dma_sg;
+
+struct hsu_dma_desc {
+	struct virt_dma_desc vdesc;
+	enum dma_transfer_direction direction;
+	struct hsu_dma_sg *sg;
+	unsigned int nents;
+	size_t length;
+	unsigned int active;
+	enum dma_status status;
+};
+
+struct hsu_dma_sg {
+	dma_addr_t addr;
+	unsigned int len;
+};
+
+struct hsu_dma_chan {
+	struct virt_dma_chan vchan;
+	void *reg;
+	enum dma_transfer_direction direction;
+	struct dma_slave_config config;
+	struct hsu_dma_desc *desc;
+};
+
+struct hsu_dma;
+
+struct hsu_dma_chip {
+	struct device *dev;
+	int irq;
+	void *regs;
+	unsigned int length;
+	unsigned int offset;
+	struct hsu_dma *hsu;
+};
+
+struct hsu_dma {
+	struct dma_device dma;
+	struct hsu_dma_chan *chan;
+	unsigned short nr_channels;
+};
+
+struct qcom_smem_state_ops {
+	int (*update_bits)(void *, u32, u32);
+};
+
+struct qcom_smem_state {
+	struct kref refcount;
+	bool orphan;
+	struct list_head list;
+	struct device_node *of_node;
+	void *priv;
+	struct qcom_smem_state_ops ops;
+};
+
+struct vring_desc;
+
+typedef struct vring_desc vring_desc_t;
+
+struct vring_avail;
+
+typedef struct vring_avail vring_avail_t;
+
+struct vring_used;
+
+typedef struct vring_used vring_used_t;
+
+struct vring {
+	unsigned int num;
+	vring_desc_t *desc;
+	vring_avail_t *avail;
+	vring_used_t *used;
+};
+
+struct vring_desc_state_split;
+
+struct vring_desc_extra;
+
+struct vring_virtqueue_split {
+	struct vring vring;
+	u16 avail_flags_shadow;
+	u16 avail_idx_shadow;
+	struct vring_desc_state_split *desc_state;
+	struct vring_desc_extra *desc_extra;
+	dma_addr_t queue_dma_addr;
+	size_t queue_size_in_bytes;
+	u32 vring_align;
+	bool may_reduce_num;
+};
+
+struct vring_packed_desc;
+
+struct vring_packed_desc_event;
+
+struct vring_desc_state_packed;
+
+struct vring_virtqueue_packed {
+	struct {
+		unsigned int num;
+		struct vring_packed_desc *desc;
+		struct vring_packed_desc_event *driver;
+		struct vring_packed_desc_event *device;
+	} vring;
+	bool avail_wrap_counter;
+	u16 avail_used_flags;
+	u16 next_avail_idx;
+	u16 event_flags_shadow;
+	struct vring_desc_state_packed *desc_state;
+	struct vring_desc_extra *desc_extra;
+	dma_addr_t ring_dma_addr;
+	dma_addr_t driver_event_dma_addr;
+	dma_addr_t device_event_dma_addr;
+	size_t ring_size_in_bytes;
+	size_t event_size_in_bytes;
+};
+
+struct vring_virtqueue {
+	struct virtqueue vq;
+	bool packed_ring;
+	bool use_dma_api;
+	bool weak_barriers;
+	bool broken;
+	bool indirect;
+	bool event;
+	bool premapped;
+	bool do_unmap;
+	unsigned int free_head;
+	unsigned int num_added;
+	u16 last_used_idx;
+	bool event_triggered;
+	union {
+		struct vring_virtqueue_split split;
+		struct vring_virtqueue_packed packed;
+	};
+	bool (*notify)(struct virtqueue *);
+	bool we_own_ring;
+	struct device *dma_dev;
+};
+
+typedef __u64 __virtio64;
+
+typedef __u32 __virtio32;
+
+typedef __u16 __virtio16;
+
+struct vring_desc {
+	__virtio64 addr;
+	__virtio32 len;
+	__virtio16 flags;
+	__virtio16 next;
+};
+
+struct vring_avail {
+	__virtio16 flags;
+	__virtio16 idx;
+	__virtio16 ring[0];
+};
+
+struct vring_used_elem {
+	__virtio32 id;
+	__virtio32 len;
+};
+
+typedef struct vring_used_elem vring_used_elem_t;
+
+struct vring_used {
+	__virtio16 flags;
+	__virtio16 idx;
+	vring_used_elem_t ring[0];
+};
+
+struct vring_desc_state_split {
+	void *data;
+	struct vring_desc *indir_desc;
+};
+
+struct vring_desc_extra {
+	dma_addr_t addr;
+	u32 len;
+	u16 flags;
+	u16 next;
+};
+
+struct vring_packed_desc {
+	__le64 addr;
+	__le32 len;
+	__le16 id;
+	__le16 flags;
+};
+
+struct vring_packed_desc_event {
+	__le16 off_wrap;
+	__le16 flags;
+};
+
+struct vring_desc_state_packed {
+	void *data;
+	struct vring_packed_desc *indir_desc;
+	u16 num;
+	u16 last;
+};
+
+typedef void (*btf_trace_regulator_enable)(void *, const char *);
+
+typedef void (*btf_trace_regulator_enable_delay)(void *, const char *);
+
+typedef void (*btf_trace_regulator_enable_complete)(void *, const char *);
+
+typedef void (*btf_trace_regulator_disable)(void *, const char *);
+
+typedef void (*btf_trace_regulator_disable_complete)(void *, const char *);
+
+typedef void (*btf_trace_regulator_bypass_enable)(void *, const char *);
+
+typedef void (*btf_trace_regulator_bypass_enable_complete)(void *, const char *);
+
+typedef void (*btf_trace_regulator_bypass_disable)(void *, const char *);
+
+typedef void (*btf_trace_regulator_bypass_disable_complete)(void *, const char *);
+
+typedef void (*btf_trace_regulator_set_voltage)(void *, const char *, int, int);
+
+typedef void (*btf_trace_regulator_set_voltage_complete)(void *, const char *, unsigned int);
+
+struct ww_class {
+	atomic_long_t stamp;
+	struct lock_class_key acquire_key;
+	struct lock_class_key mutex_key;
+	const char *acquire_name;
+	const char *mutex_name;
+	unsigned int is_wait_die;
+};
+
+struct regulator_dev;
+
+struct regulator_coupler {
+	struct list_head list;
+	int (*attach_regulator)(struct regulator_coupler *, struct regulator_dev *);
+	int (*detach_regulator)(struct regulator_coupler *, struct regulator_dev *);
+	int (*balance_voltage)(struct regulator_coupler *, struct regulator_dev *, suspend_state_t);
+};
+
+struct coupling_desc {
+	struct regulator_dev **coupled_rdevs;
+	struct regulator_coupler *coupler;
+	int n_resolved;
+	int n_coupled;
+};
+
+struct regulator_desc;
+
+struct regulation_constraints;
+
+struct regmap;
+
+struct regulator_enable_gpio;
+
+struct regulator_dev {
+	const struct regulator_desc *desc;
+	int exclusive;
+	u32 use_count;
+	u32 open_count;
+	u32 bypass_count;
+	struct list_head list;
+	struct list_head consumer_list;
+	struct coupling_desc coupling_desc;
+	struct blocking_notifier_head notifier;
+	struct ww_mutex mutex;
+	struct task_struct *mutex_owner;
+	int ref_cnt;
+	struct module *owner;
+	struct device dev;
+	struct regulation_constraints *constraints;
+	struct regulator *supply;
+	const char *supply_name;
+	struct regmap *regmap;
+	struct delayed_work disable_work;
+	void *reg_data;
+	struct dentry *debugfs;
+	struct regulator_enable_gpio *ena_pin;
+	unsigned int ena_gpio_state: 1;
+	unsigned int is_switch: 1;
+	ktime_t last_off;
+	int cached_err;
+	bool use_cached_err;
+	spinlock_t err_lock;
+	u64 android_kabi_reserved1;
+};
+
+enum regulator_type {
+	REGULATOR_VOLTAGE = 0,
+	REGULATOR_CURRENT = 1,
+};
+
+struct regulator_config;
+
+struct regulator_ops;
+
+struct regulator_desc {
+	const char *name;
+	const char *supply_name;
+	const char *of_match;
+	bool of_match_full_name;
+	const char *regulators_node;
+	int (*of_parse_cb)(struct device_node *, const struct regulator_desc *, struct regulator_config *);
+	int id;
+	unsigned int continuous_voltage_range: 1;
+	unsigned int n_voltages;
+	unsigned int n_current_limits;
+	const struct regulator_ops *ops;
+	int irq;
+	enum regulator_type type;
+	struct module *owner;
+	unsigned int min_uV;
+	unsigned int uV_step;
+	unsigned int linear_min_sel;
+	int fixed_uV;
+	unsigned int ramp_delay;
+	int min_dropout_uV;
+	const struct linear_range *linear_ranges;
+	const unsigned int *linear_range_selectors_bitfield;
+	int n_linear_ranges;
+	const unsigned int *volt_table;
+	const unsigned int *curr_table;
+	unsigned int vsel_range_reg;
+	unsigned int vsel_range_mask;
+	unsigned int vsel_reg;
+	unsigned int vsel_mask;
+	unsigned int vsel_step;
+	unsigned int csel_reg;
+	unsigned int csel_mask;
+	unsigned int apply_reg;
+	unsigned int apply_bit;
+	unsigned int enable_reg;
+	unsigned int enable_mask;
+	unsigned int enable_val;
+	unsigned int disable_val;
+	bool enable_is_inverted;
+	unsigned int bypass_reg;
+	unsigned int bypass_mask;
+	unsigned int bypass_val_on;
+	unsigned int bypass_val_off;
+	unsigned int active_discharge_on;
+	unsigned int active_discharge_off;
+	unsigned int active_discharge_mask;
+	unsigned int active_discharge_reg;
+	unsigned int soft_start_reg;
+	unsigned int soft_start_mask;
+	unsigned int soft_start_val_on;
+	unsigned int pull_down_reg;
+	unsigned int pull_down_mask;
+	unsigned int pull_down_val_on;
+	unsigned int ramp_reg;
+	unsigned int ramp_mask;
+	const unsigned int *ramp_delay_table;
+	unsigned int n_ramp_values;
+	unsigned int enable_time;
+	unsigned int off_on_delay;
+	unsigned int poll_enabled_time;
+	unsigned int (*of_map_mode)(unsigned int);
+	u64 android_kabi_reserved1;
+};
+
+struct regulator_init_data;
+
+struct regulator_config {
+	struct device *dev;
+	const struct regulator_init_data *init_data;
+	void *driver_data;
+	struct device_node *of_node;
+	struct regmap *regmap;
+	struct gpio_desc *ena_gpiod;
+};
+
+struct regulator_state {
+	int uV;
+	int min_uV;
+	int max_uV;
+	unsigned int mode;
+	int enabled;
+	bool changeable;
+};
+
+struct notification_limit {
+	int prot;
+	int err;
+	int warn;
+};
+
+struct regulation_constraints {
+	const char *name;
+	int min_uV;
+	int max_uV;
+	int uV_offset;
+	int min_uA;
+	int max_uA;
+	int ilim_uA;
+	int system_load;
+	u32 *max_spread;
+	int max_uV_step;
+	unsigned int valid_modes_mask;
+	unsigned int valid_ops_mask;
+	int input_uV;
+	struct regulator_state state_disk;
+	struct regulator_state state_mem;
+	struct regulator_state state_standby;
+	struct notification_limit over_curr_limits;
+	struct notification_limit over_voltage_limits;
+	struct notification_limit under_voltage_limits;
+	struct notification_limit temp_limits;
+	suspend_state_t initial_state;
+	unsigned int initial_mode;
+	unsigned int ramp_delay;
+	unsigned int settling_time;
+	unsigned int settling_time_up;
+	unsigned int settling_time_down;
+	unsigned int enable_time;
+	unsigned int active_discharge;
+	unsigned int always_on: 1;
+	unsigned int boot_on: 1;
+	unsigned int apply_uV: 1;
+	unsigned int ramp_disable: 1;
+	unsigned int soft_start: 1;
+	unsigned int pull_down: 1;
+	unsigned int over_current_protection: 1;
+	unsigned int over_current_detection: 1;
+	unsigned int over_voltage_detection: 1;
+	unsigned int under_voltage_detection: 1;
+	unsigned int over_temp_detection: 1;
+};
+
+struct regulator_consumer_supply;
+
+struct regulator_init_data {
+	const char *supply_regulator;
+	struct regulation_constraints constraints;
+	int num_consumer_supplies;
+	struct regulator_consumer_supply *consumer_supplies;
+	int (*regulator_init)(void *);
+	void *driver_data;
+};
+
+struct regulator_consumer_supply {
+	const char *dev_name;
+	const char *supply;
+};
+
+struct regulator_ops {
+	int (*list_voltage)(struct regulator_dev *, unsigned int);
+	int (*set_voltage)(struct regulator_dev *, int, int, unsigned int *);
+	int (*map_voltage)(struct regulator_dev *, int, int);
+	int (*set_voltage_sel)(struct regulator_dev *, unsigned int);
+	int (*get_voltage)(struct regulator_dev *);
+	int (*get_voltage_sel)(struct regulator_dev *);
+	int (*set_current_limit)(struct regulator_dev *, int, int);
+	int (*get_current_limit)(struct regulator_dev *);
+	int (*set_input_current_limit)(struct regulator_dev *, int);
+	int (*set_over_current_protection)(struct regulator_dev *, int, int, bool);
+	int (*set_over_voltage_protection)(struct regulator_dev *, int, int, bool);
+	int (*set_under_voltage_protection)(struct regulator_dev *, int, int, bool);
+	int (*set_thermal_protection)(struct regulator_dev *, int, int, bool);
+	int (*set_active_discharge)(struct regulator_dev *, bool);
+	int (*enable)(struct regulator_dev *);
+	int (*disable)(struct regulator_dev *);
+	int (*is_enabled)(struct regulator_dev *);
+	int (*set_mode)(struct regulator_dev *, unsigned int);
+	unsigned int (*get_mode)(struct regulator_dev *);
+	int (*get_error_flags)(struct regulator_dev *, unsigned int *);
+	int (*enable_time)(struct regulator_dev *);
+	int (*set_ramp_delay)(struct regulator_dev *, int);
+	int (*set_voltage_time)(struct regulator_dev *, int, int);
+	int (*set_voltage_time_sel)(struct regulator_dev *, unsigned int, unsigned int);
+	int (*set_soft_start)(struct regulator_dev *);
+	int (*get_status)(struct regulator_dev *);
+	unsigned int (*get_optimum_mode)(struct regulator_dev *, int, int, int);
+	int (*set_load)(struct regulator_dev *, int);
+	int (*set_bypass)(struct regulator_dev *, bool);
+	int (*get_bypass)(struct regulator_dev *, bool *);
+	int (*set_suspend_voltage)(struct regulator_dev *, int);
+	int (*set_suspend_enable)(struct regulator_dev *);
+	int (*set_suspend_disable)(struct regulator_dev *);
+	int (*set_suspend_mode)(struct regulator_dev *, unsigned int);
+	int (*resume)(struct regulator_dev *);
+	int (*set_pull_down)(struct regulator_dev *);
+	u64 android_kabi_reserved1;
+};
+
+struct regulator_voltage {
+	int min_uV;
+	int max_uV;
+};
+
+struct regulator {
+	struct device *dev;
+	struct list_head list;
+	unsigned int always_on: 1;
+	unsigned int bypass: 1;
+	unsigned int device_link: 1;
+	int uA_load;
+	unsigned int enable_count;
+	unsigned int deferred_disables;
+	struct regulator_voltage voltage[5];
+	const char *supply_name;
+	struct device_attribute dev_attr;
+	struct regulator_dev *rdev;
+	struct dentry *debugfs;
+};
+
+struct regulator_enable_gpio {
+	struct list_head list;
+	struct gpio_desc *gpiod;
+	u32 enable_count;
+	u32 request_count;
+};
+
+enum regulator_get_type {
+	NORMAL_GET = 0,
+	EXCLUSIVE_GET = 1,
+	OPTIONAL_GET = 2,
+	MAX_GET_TYPE = 3,
+};
+
+enum regulator_status {
+	REGULATOR_STATUS_OFF = 0,
+	REGULATOR_STATUS_ON = 1,
+	REGULATOR_STATUS_ERROR = 2,
+	REGULATOR_STATUS_FAST = 3,
+	REGULATOR_STATUS_NORMAL = 4,
+	REGULATOR_STATUS_IDLE = 5,
+	REGULATOR_STATUS_STANDBY = 6,
+	REGULATOR_STATUS_BYPASS = 7,
+	REGULATOR_STATUS_UNDEFINED = 8,
+};
+
+enum regulator_detection_severity {
+	REGULATOR_SEVERITY_PROT = 0,
+	REGULATOR_SEVERITY_ERR = 1,
+	REGULATOR_SEVERITY_WARN = 2,
+};
+
+enum regulator_active_discharge {
+	REGULATOR_ACTIVE_DISCHARGE_DEFAULT = 0,
+	REGULATOR_ACTIVE_DISCHARGE_DISABLE = 1,
+	REGULATOR_ACTIVE_DISCHARGE_ENABLE = 2,
+};
+
+struct trace_event_raw_regulator_basic {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	char __data[0];
+};
+
+struct trace_event_raw_regulator_range {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	int min;
+	int max;
+	char __data[0];
+};
+
+struct trace_event_raw_regulator_value {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	unsigned int val;
+	char __data[0];
+};
+
+struct regulator_map {
+	struct list_head list;
+	const char *dev_name;
+	const char *supply;
+	struct regulator_dev *regulator;
+};
+
+struct regulator_supply_alias {
+	struct list_head list;
+	struct device *src_dev;
+	const char *src_supply;
+	struct device *alias_dev;
+	const char *alias_supply;
+};
+
+struct trace_event_data_offsets_regulator_basic {
+	u32 name;
+};
+
+struct trace_event_data_offsets_regulator_range {
+	u32 name;
+};
+
+struct trace_event_data_offsets_regulator_value {
+	u32 name;
+};
+
+struct pre_voltage_change_data {
+	unsigned long old_uV;
+	unsigned long min_uV;
+	unsigned long max_uV;
+};
+
+struct summary_lock_data {
+	struct ww_acquire_ctx *ww_ctx;
+	struct regulator_dev **new_contended_rdev;
+	struct regulator_dev **old_contended_rdev;
+};
+
+struct regulator_bulk_data {
+	const char *supply;
+	int init_load_uA;
+	struct regulator *consumer;
+	int ret;
+};
+
+struct summary_data {
+	struct seq_file *s;
+	struct regulator_dev *parent;
+	int level;
+};
+
+struct fixed_voltage_config {
+	const char *supply_name;
+	const char *input_supply;
+	int microvolts;
+	unsigned int startup_delay;
+	unsigned int off_on_delay;
+	unsigned int enabled_at_boot: 1;
+	struct regulator_init_data *init_data;
+};
+
+struct fixed_regulator_data {
+	struct fixed_voltage_config cfg;
+	struct regulator_init_data init_data;
+	struct platform_device pdev;
+};
+
+struct regulator_bulk_devres {
+	struct regulator_bulk_data *consumers;
+	int num_consumers;
+};
+
+struct regulator_supply_alias_match {
+	struct device *dev;
+	const char *id;
+};
+
+struct regulator_irq_data;
+
+struct regulator_irq_desc {
+	const char *name;
+	int fatal_cnt;
+	int reread_ms;
+	int irq_off_ms;
+	bool skip_off;
+	bool high_prio;
+	void *data;
+	int (*die)(struct regulator_irq_data *);
+	int (*map_event)(int, struct regulator_irq_data *, unsigned long *);
+	int (*renable)(struct regulator_irq_data *);
+};
+
+struct regulator_err_state;
+
+struct regulator_irq_data {
+	struct regulator_err_state *states;
+	int num_states;
+	void *data;
+	long opaque;
+};
+
+struct regulator_err_state {
+	struct regulator_dev *rdev;
+	unsigned long notifs;
+	unsigned long errors;
+	int possible_errs;
+};
+
+struct regulator_notifier_match {
+	struct regulator *regulator;
+	struct notifier_block *nb;
+};
+
+enum {
+	REGULATOR_ERROR_CLEARED = 0,
+	REGULATOR_FAILED_RETRY = 1,
+	REGULATOR_ERROR_ON = 2,
+};
+
+struct regulator_irq {
+	struct regulator_irq_data rdata;
+	struct regulator_irq_desc desc;
+	int irq;
+	int retry_cnt;
+	struct delayed_work isr_work;
+};
+
+struct of_regulator_match {
+	const char *name;
+	void *driver_data;
+	struct regulator_init_data *init_data;
+	struct device_node *of_node;
+	const struct regulator_desc *desc;
+};
+
+struct devm_of_regulator_matches {
+	struct of_regulator_match *matches;
+	unsigned int num_matches;
+};
+
+struct fixed_dev_type {
+	bool has_enable_clock;
+	bool has_performance_state;
+};
+
+struct fixed_voltage_data {
+	struct regulator_desc desc;
+	struct regulator_dev *dev;
+	struct clk *enable_clock;
+	unsigned int enable_counter;
+	int performance_state;
+};
+
+struct serial_struct32 {
+	compat_int_t type;
+	compat_int_t line;
+	compat_uint_t port;
+	compat_int_t irq;
+	compat_int_t flags;
+	compat_int_t xmit_fifo_size;
+	compat_int_t custom_divisor;
+	compat_int_t baud_base;
+	unsigned short close_delay;
+	char io_type;
+	char reserved_char;
+	compat_int_t hub6;
+	unsigned short closing_wait;
+	unsigned short closing_wait2;
+	compat_uint_t iomem_base;
+	unsigned short iomem_reg_shift;
+	unsigned int port_high;
+	compat_int_t reserved;
+};
+
+enum {
+	ERASE = 0,
+	WERASE = 1,
+	KILL = 2,
+};
+
+struct n_tty_data {
+	size_t read_head;
+	size_t commit_head;
+	size_t canon_head;
+	size_t echo_head;
+	size_t echo_commit;
+	size_t echo_mark;
+	unsigned long char_map[4];
+	unsigned long overrun_time;
+	unsigned int num_overrun;
+	bool no_room;
+	unsigned char lnext: 1;
+	unsigned char erasing: 1;
+	unsigned char raw: 1;
+	unsigned char real_raw: 1;
+	unsigned char icanon: 1;
+	unsigned char push: 1;
+	u8 read_buf[4096];
+	unsigned long read_flags[64];
+	u8 echo_buf[4096];
+	size_t read_tail;
+	size_t line_start;
+	size_t lookahead_count;
+	unsigned int column;
+	unsigned int canon_column;
+	size_t echo_tail;
+	struct mutex atomic_read_lock;
+	struct mutex output_lock;
+};
+
+struct termios {
+	tcflag_t c_iflag;
+	tcflag_t c_oflag;
+	tcflag_t c_cflag;
+	tcflag_t c_lflag;
+	cc_t c_line;
+	cc_t c_cc[19];
+};
+
+struct termios2 {
+	tcflag_t c_iflag;
+	tcflag_t c_oflag;
+	tcflag_t c_cflag;
+	tcflag_t c_lflag;
+	cc_t c_line;
+	cc_t c_cc[19];
+	speed_t c_ispeed;
+	speed_t c_ospeed;
+};
+
+struct termio {
+	unsigned short c_iflag;
+	unsigned short c_oflag;
+	unsigned short c_cflag;
+	unsigned short c_lflag;
+	unsigned char c_line;
+	unsigned char c_cc[8];
+};
+
+struct ldsem_waiter {
+	struct list_head list;
+	struct task_struct *task;
+};
+
+struct tty_audit_buf {
+	struct mutex mutex;
+	dev_t dev;
+	bool icanon;
+	size_t valid;
+	u8 *data;
+};
+
+struct sysrq_state {
+	struct input_handle handle;
+	struct work_struct reinject_work;
+	unsigned long key_down[12];
+	unsigned int alt;
+	unsigned int alt_use;
+	unsigned int shift;
+	unsigned int shift_use;
+	bool active;
+	bool need_reinject;
+	bool reinjecting;
+	bool reset_canceled;
+	bool reset_requested;
+	unsigned long reset_keybit[12];
+	int reset_seq_len;
+	int reset_seq_cnt;
+	int reset_seq_version;
+	struct timer_list keyreset_timer;
+};
+
+struct hvc_struct;
+
+struct hv_ops {
+	int (*get_chars)(uint32_t, char *, int);
+	int (*put_chars)(uint32_t, const char *, int);
+	int (*flush)(uint32_t, bool);
+	int (*notifier_add)(struct hvc_struct *, int);
+	void (*notifier_del)(struct hvc_struct *, int);
+	void (*notifier_hangup)(struct hvc_struct *, int);
+	int (*tiocmget)(struct hvc_struct *);
+	int (*tiocmset)(struct hvc_struct *, unsigned int, unsigned int);
+	void (*dtr_rts)(struct hvc_struct *, bool);
+};
+
+struct hvc_struct {
+	struct tty_port port;
+	spinlock_t lock;
+	int index;
+	int do_wakeup;
+	char *outbuf;
+	int outbuf_size;
+	int n_outbuf;
+	uint32_t vtermno;
+	const struct hv_ops *ops;
+	int irq_requested;
+	int data;
+	struct winsize ws;
+	struct work_struct tty_resize;
+	struct list_head next;
+	unsigned long flags;
+};
+
+enum uart_pm_state {
+	UART_PM_STATE_ON = 0,
+	UART_PM_STATE_OFF = 3,
+	UART_PM_STATE_UNDEFINED = 4,
+};
+
+typedef u64 upf_t;
+
+typedef unsigned int upstat_t;
+
+struct circ_buf {
+	char *buf;
+	int head;
+	int tail;
+};
+
+struct uart_port;
+
+struct uart_state {
+	struct tty_port port;
+	enum uart_pm_state pm_state;
+	struct circ_buf xmit;
+	atomic_t refcount;
+	wait_queue_head_t remove_wait;
+	struct uart_port *uart_port;
+};
+
+struct uart_icount {
+	__u32 cts;
+	__u32 dsr;
+	__u32 rng;
+	__u32 dcd;
+	__u32 rx;
+	__u32 tx;
+	__u32 frame;
+	__u32 overrun;
+	__u32 parity;
+	__u32 brk;
+	__u32 buf_overrun;
+};
+
+struct serial_rs485 {
+	__u32 flags;
+	__u32 delay_rts_before_send;
+	__u32 delay_rts_after_send;
+	union {
+		__u32 padding[5];
+		struct {
+			__u8 addr_recv;
+			__u8 addr_dest;
+			__u8 padding0[2];
+			__u32 padding1[4];
+		};
+	};
+};
+
+struct serial_iso7816 {
+	__u32 flags;
+	__u32 tg;
+	__u32 sc_fi;
+	__u32 sc_di;
+	__u32 clk;
+	__u32 reserved[5];
+};
+
+struct uart_ops;
+
+struct serial_port_device;
+
+struct uart_port {
+	spinlock_t lock;
+	unsigned long iobase;
+	unsigned char *membase;
+	unsigned int (*serial_in)(struct uart_port *, int);
+	void (*serial_out)(struct uart_port *, int, int);
+	void (*set_termios)(struct uart_port *, struct ktermios *, const struct ktermios *);
+	void (*set_ldisc)(struct uart_port *, struct ktermios *);
+	unsigned int (*get_mctrl)(struct uart_port *);
+	void (*set_mctrl)(struct uart_port *, unsigned int);
+	unsigned int (*get_divisor)(struct uart_port *, unsigned int, unsigned int *);
+	void (*set_divisor)(struct uart_port *, unsigned int, unsigned int, unsigned int);
+	int (*startup)(struct uart_port *);
+	void (*shutdown)(struct uart_port *);
+	void (*throttle)(struct uart_port *);
+	void (*unthrottle)(struct uart_port *);
+	int (*handle_irq)(struct uart_port *);
+	void (*pm)(struct uart_port *, unsigned int, unsigned int);
+	void (*handle_break)(struct uart_port *);
+	int (*rs485_config)(struct uart_port *, struct ktermios *, struct serial_rs485 *);
+	int (*iso7816_config)(struct uart_port *, struct serial_iso7816 *);
+	unsigned int ctrl_id;
+	unsigned int port_id;
+	unsigned int irq;
+	unsigned long irqflags;
+	unsigned int uartclk;
+	unsigned int fifosize;
+	unsigned char x_char;
+	unsigned char regshift;
+	unsigned char iotype;
+	unsigned char quirks;
+	unsigned int read_status_mask;
+	unsigned int ignore_status_mask;
+	struct uart_state *state;
+	struct uart_icount icount;
+	struct console *cons;
+	upf_t flags;
+	upstat_t status;
+	bool hw_stopped;
+	unsigned int mctrl;
+	unsigned int frame_time;
+	unsigned int type;
+	const struct uart_ops *ops;
+	unsigned int custom_divisor;
+	unsigned int line;
+	unsigned int minor;
+	resource_size_t mapbase;
+	resource_size_t mapsize;
+	struct device *dev;
+	struct serial_port_device *port_dev;
+	unsigned long sysrq;
+	u8 sysrq_ch;
+	unsigned char has_sysrq;
+	unsigned char sysrq_seq;
+	unsigned char hub6;
+	unsigned char suspended;
+	unsigned char console_reinit;
+	const char *name;
+	struct attribute_group *attr_group;
+	const struct attribute_group **tty_groups;
+	struct serial_rs485 rs485;
+	struct serial_rs485 rs485_supported;
+	struct gpio_desc *rs485_term_gpio;
+	struct gpio_desc *rs485_rx_during_tx_gpio;
+	struct serial_iso7816 iso7816;
+	void *private_data;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct uart_ops {
+	unsigned int (*tx_empty)(struct uart_port *);
+	void (*set_mctrl)(struct uart_port *, unsigned int);
+	unsigned int (*get_mctrl)(struct uart_port *);
+	void (*stop_tx)(struct uart_port *);
+	void (*start_tx)(struct uart_port *);
+	void (*throttle)(struct uart_port *);
+	void (*unthrottle)(struct uart_port *);
+	void (*send_xchar)(struct uart_port *, char);
+	void (*stop_rx)(struct uart_port *);
+	void (*start_rx)(struct uart_port *);
+	void (*enable_ms)(struct uart_port *);
+	void (*break_ctl)(struct uart_port *, int);
+	int (*startup)(struct uart_port *);
+	void (*shutdown)(struct uart_port *);
+	void (*flush_buffer)(struct uart_port *);
+	void (*set_termios)(struct uart_port *, struct ktermios *, const struct ktermios *);
+	void (*set_ldisc)(struct uart_port *, struct ktermios *);
+	void (*pm)(struct uart_port *, unsigned int, unsigned int);
+	const char * (*type)(struct uart_port *);
+	void (*release_port)(struct uart_port *);
+	int (*request_port)(struct uart_port *);
+	void (*config_port)(struct uart_port *, int);
+	int (*verify_port)(struct uart_port *, struct serial_struct *);
+	int (*ioctl)(struct uart_port *, unsigned int, unsigned long);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct serial_port_device {
+	struct device dev;
+	struct uart_port *port;
+	unsigned int tx_enabled: 1;
+};
+
+struct serial_ctrl_device {
+	struct device dev;
+	struct ida port_ida;
+};
+
+struct uart_driver {
+	struct module *owner;
+	const char *driver_name;
+	const char *dev_name;
+	int major;
+	int minor;
+	int nr;
+	struct console *cons;
+	struct uart_state *state;
+	struct tty_driver *tty_driver;
+	u64 android_kabi_reserved1;
+};
+
+struct uart_match {
+	struct uart_port *port;
+	struct uart_driver *driver;
+};
+
+struct earlycon_device {
+	struct console *con;
+	struct uart_port port;
+	char options[32];
+	unsigned int baud;
+};
+
+struct earlycon_id {
+	char name[15];
+	char name_term;
+	char compatible[128];
+	int (*setup)(struct earlycon_device *, const char *);
+};
+
+struct mctrl_gpios;
+
+struct uart_8250_dma;
+
+struct uart_8250_ops;
+
+struct uart_8250_em485;
+
+struct uart_8250_port {
+	struct uart_port port;
+	struct timer_list timer;
+	struct list_head list;
+	u32 capabilities;
+	u16 bugs;
+	unsigned int tx_loadsz;
+	unsigned char acr;
+	unsigned char fcr;
+	unsigned char ier;
+	unsigned char lcr;
+	unsigned char mcr;
+	unsigned char cur_iotype;
+	unsigned int rpm_tx_active;
+	unsigned char canary;
+	unsigned char probe;
+	struct mctrl_gpios *gpios;
+	u16 lsr_saved_flags;
+	u16 lsr_save_mask;
+	unsigned char msr_saved_flags;
+	struct uart_8250_dma *dma;
+	const struct uart_8250_ops *ops;
+	u32 (*dl_read)(struct uart_8250_port *);
+	void (*dl_write)(struct uart_8250_port *, u32);
+	struct uart_8250_em485 *em485;
+	void (*rs485_start_tx)(struct uart_8250_port *);
+	void (*rs485_stop_tx)(struct uart_8250_port *);
+	struct delayed_work overrun_backoff;
+	u32 overrun_backoff_time_ms;
+};
+
+struct uart_8250_dma {
+	int (*tx_dma)(struct uart_8250_port *);
+	int (*rx_dma)(struct uart_8250_port *);
+	void (*prepare_tx_dma)(struct uart_8250_port *);
+	void (*prepare_rx_dma)(struct uart_8250_port *);
+	dma_filter_fn fn;
+	void *rx_param;
+	void *tx_param;
+	struct dma_slave_config rxconf;
+	struct dma_slave_config txconf;
+	struct dma_chan___2 *rxchan;
+	struct dma_chan___2 *txchan;
+	phys_addr_t rx_dma_addr;
+	phys_addr_t tx_dma_addr;
+	dma_addr_t rx_addr;
+	dma_addr_t tx_addr;
+	dma_cookie_t rx_cookie;
+	dma_cookie_t tx_cookie;
+	void *rx_buf;
+	size_t rx_size;
+	size_t tx_size;
+	unsigned char tx_running;
+	unsigned char tx_err;
+	unsigned char rx_running;
+};
+
+struct uart_8250_ops {
+	int (*setup_irq)(struct uart_8250_port *);
+	void (*release_irq)(struct uart_8250_port *);
+	void (*setup_timer)(struct uart_8250_port *);
+};
+
+struct uart_8250_em485 {
+	struct hrtimer start_tx_timer;
+	struct hrtimer stop_tx_timer;
+	struct hrtimer *active_timer;
+	struct uart_8250_port *port;
+	unsigned int tx_stopped: 1;
+};
+
+struct old_serial_port {
+	unsigned int uart;
+	unsigned int baud_base;
+	unsigned int port;
+	unsigned int irq;
+	upf_t flags;
+	unsigned char io_type;
+	unsigned char *iomem_base;
+	unsigned short iomem_reg_shift;
+};
+
+enum {
+	PLAT8250_DEV_LEGACY = -1,
+	PLAT8250_DEV_PLATFORM = 0,
+	PLAT8250_DEV_PLATFORM1 = 1,
+	PLAT8250_DEV_PLATFORM2 = 2,
+	PLAT8250_DEV_FOURPORT = 3,
+	PLAT8250_DEV_ACCENT = 4,
+	PLAT8250_DEV_BOCA = 5,
+	PLAT8250_DEV_EXAR_ST16C554 = 6,
+	PLAT8250_DEV_HUB6 = 7,
+	PLAT8250_DEV_AU1X00 = 8,
+	PLAT8250_DEV_SM501 = 9,
+};
+
+struct irq_info {
+	struct hlist_node node;
+	int irq;
+	spinlock_t lock;
+	struct list_head *head;
+};
+
+struct plat_serial8250_port {
+	unsigned long iobase;
+	void *membase;
+	resource_size_t mapbase;
+	resource_size_t mapsize;
+	unsigned int uartclk;
+	unsigned int irq;
+	unsigned long irqflags;
+	void *private_data;
+	unsigned char regshift;
+	unsigned char iotype;
+	unsigned char hub6;
+	unsigned char has_sysrq;
+	unsigned int type;
+	upf_t flags;
+	u16 bugs;
+	unsigned int (*serial_in)(struct uart_port *, int);
+	void (*serial_out)(struct uart_port *, int, int);
+	u32 (*dl_read)(struct uart_8250_port *);
+	void (*dl_write)(struct uart_8250_port *, u32);
+	void (*set_termios)(struct uart_port *, struct ktermios *, const struct ktermios *);
+	void (*set_ldisc)(struct uart_port *, struct ktermios *);
+	unsigned int (*get_mctrl)(struct uart_port *);
+	int (*handle_irq)(struct uart_port *);
+	void (*pm)(struct uart_port *, unsigned int, unsigned int);
+	void (*handle_break)(struct uart_port *);
+};
+
+struct serial8250_config {
+	const char *name;
+	unsigned short fifo_size;
+	unsigned short tx_loadsz;
+	unsigned char fcr;
+	unsigned char rxtrig_bytes[4];
+	unsigned int flags;
+};
+
+struct dw8250_port_data {
+	int line;
+	struct uart_8250_dma dma;
+	u8 dlf_size;
+	bool hw_rs485_support;
+};
+
+struct dw8250_platform_data;
+
+struct dw8250_data {
+	struct dw8250_port_data data;
+	const struct dw8250_platform_data *pdata;
+	int msr_mask_on;
+	int msr_mask_off;
+	struct clk *clk;
+	struct clk *pclk;
+	struct notifier_block clk_notifier;
+	struct work_struct clk_work;
+	struct reset_control *rst;
+	unsigned int skip_autocfg: 1;
+	unsigned int uart_16550_compatible: 1;
+};
+
+struct dw8250_platform_data {
+	u8 usr_reg;
+	u32 cpr_val;
+	unsigned int quirks;
+};
+
+struct serial_private;
+
+struct pciserial_board;
+
+struct pci_serial_quirk {
+	u32 vendor;
+	u32 device;
+	u32 subvendor;
+	u32 subdevice;
+	int (*probe)(struct pci_dev *);
+	int (*init)(struct pci_dev *);
+	int (*setup)(struct serial_private *, const struct pciserial_board *, struct uart_8250_port *, int);
+	void (*exit)(struct pci_dev *);
+};
+
+struct serial_private {
+	struct pci_dev *dev;
+	unsigned int nr;
+	struct pci_serial_quirk *quirk;
+	const struct pciserial_board *board;
+	int line[0];
+};
+
+struct pciserial_board {
+	unsigned int flags;
+	unsigned int num_ports;
+	unsigned int base_baud;
+	unsigned int uart_offset;
+	unsigned int reg_shift;
+	unsigned int first_offset;
+};
+
+struct timedia_struct {
+	int num;
+	const unsigned short *ids;
+};
+
+enum pci_board_num_t {
+	pbn_default = 0,
+	pbn_b0_1_115200 = 1,
+	pbn_b0_2_115200 = 2,
+	pbn_b0_4_115200 = 3,
+	pbn_b0_5_115200 = 4,
+	pbn_b0_8_115200 = 5,
+	pbn_b0_1_921600 = 6,
+	pbn_b0_2_921600 = 7,
+	pbn_b0_4_921600 = 8,
+	pbn_b0_2_1130000 = 9,
+	pbn_b0_4_1152000 = 10,
+	pbn_b0_4_1250000 = 11,
+	pbn_b0_2_1843200 = 12,
+	pbn_b0_4_1843200 = 13,
+	pbn_b0_1_15625000 = 14,
+	pbn_b0_bt_1_115200 = 15,
+	pbn_b0_bt_2_115200 = 16,
+	pbn_b0_bt_4_115200 = 17,
+	pbn_b0_bt_8_115200 = 18,
+	pbn_b0_bt_1_460800 = 19,
+	pbn_b0_bt_2_460800 = 20,
+	pbn_b0_bt_4_460800 = 21,
+	pbn_b0_bt_1_921600 = 22,
+	pbn_b0_bt_2_921600 = 23,
+	pbn_b0_bt_4_921600 = 24,
+	pbn_b0_bt_8_921600 = 25,
+	pbn_b1_1_115200 = 26,
+	pbn_b1_2_115200 = 27,
+	pbn_b1_4_115200 = 28,
+	pbn_b1_8_115200 = 29,
+	pbn_b1_16_115200 = 30,
+	pbn_b1_1_921600 = 31,
+	pbn_b1_2_921600 = 32,
+	pbn_b1_4_921600 = 33,
+	pbn_b1_8_921600 = 34,
+	pbn_b1_2_1250000 = 35,
+	pbn_b1_bt_1_115200 = 36,
+	pbn_b1_bt_2_115200 = 37,
+	pbn_b1_bt_4_115200 = 38,
+	pbn_b1_bt_2_921600 = 39,
+	pbn_b1_1_1382400 = 40,
+	pbn_b1_2_1382400 = 41,
+	pbn_b1_4_1382400 = 42,
+	pbn_b1_8_1382400 = 43,
+	pbn_b2_1_115200 = 44,
+	pbn_b2_2_115200 = 45,
+	pbn_b2_4_115200 = 46,
+	pbn_b2_8_115200 = 47,
+	pbn_b2_1_460800 = 48,
+	pbn_b2_4_460800 = 49,
+	pbn_b2_8_460800 = 50,
+	pbn_b2_16_460800 = 51,
+	pbn_b2_1_921600 = 52,
+	pbn_b2_4_921600 = 53,
+	pbn_b2_8_921600 = 54,
+	pbn_b2_8_1152000 = 55,
+	pbn_b2_bt_1_115200 = 56,
+	pbn_b2_bt_2_115200 = 57,
+	pbn_b2_bt_4_115200 = 58,
+	pbn_b2_bt_2_921600 = 59,
+	pbn_b2_bt_4_921600 = 60,
+	pbn_b3_2_115200 = 61,
+	pbn_b3_4_115200 = 62,
+	pbn_b3_8_115200 = 63,
+	pbn_b4_bt_2_921600 = 64,
+	pbn_b4_bt_4_921600 = 65,
+	pbn_b4_bt_8_921600 = 66,
+	pbn_panacom = 67,
+	pbn_panacom2 = 68,
+	pbn_panacom4 = 69,
+	pbn_plx_romulus = 70,
+	pbn_oxsemi = 71,
+	pbn_oxsemi_1_15625000 = 72,
+	pbn_oxsemi_2_15625000 = 73,
+	pbn_oxsemi_4_15625000 = 74,
+	pbn_oxsemi_8_15625000 = 75,
+	pbn_intel_i960 = 76,
+	pbn_sgi_ioc3 = 77,
+	pbn_computone_4 = 78,
+	pbn_computone_6 = 79,
+	pbn_computone_8 = 80,
+	pbn_sbsxrsio = 81,
+	pbn_pasemi_1682M = 82,
+	pbn_ni8430_2 = 83,
+	pbn_ni8430_4 = 84,
+	pbn_ni8430_8 = 85,
+	pbn_ni8430_16 = 86,
+	pbn_ADDIDATA_PCIe_1_3906250 = 87,
+	pbn_ADDIDATA_PCIe_2_3906250 = 88,
+	pbn_ADDIDATA_PCIe_4_3906250 = 89,
+	pbn_ADDIDATA_PCIe_8_3906250 = 90,
+	pbn_ce4100_1_115200 = 91,
+	pbn_omegapci = 92,
+	pbn_NETMOS9900_2s_115200 = 93,
+	pbn_brcm_trumanage = 94,
+	pbn_fintek_4 = 95,
+	pbn_fintek_8 = 96,
+	pbn_fintek_12 = 97,
+	pbn_fintek_F81504A = 98,
+	pbn_fintek_F81508A = 99,
+	pbn_fintek_F81512A = 100,
+	pbn_wch382_2 = 101,
+	pbn_wch384_4 = 102,
+	pbn_wch384_8 = 103,
+	pbn_sunix_pci_1s = 104,
+	pbn_sunix_pci_2s = 105,
+	pbn_sunix_pci_4s = 106,
+	pbn_sunix_pci_8s = 107,
+	pbn_sunix_pci_16s = 108,
+	pbn_titan_1_4000000 = 109,
+	pbn_titan_2_4000000 = 110,
+	pbn_titan_4_4000000 = 111,
+	pbn_titan_8_4000000 = 112,
+	pbn_moxa8250_2p = 113,
+	pbn_moxa8250_4p = 114,
+	pbn_moxa8250_8p = 115,
+};
+
+struct f815xxa_data {
+	spinlock_t lock;
+	int idx;
+};
+
+struct exar8250;
+
+struct exar8250_board {
+	unsigned int num_ports;
+	unsigned int reg_shift;
+	int (*setup)(struct exar8250 *, struct pci_dev *, struct uart_8250_port *, int);
+	void (*exit)(struct pci_dev *);
+};
+
+struct exar8250 {
+	unsigned int nr;
+	struct exar8250_board *board;
+	void *virt;
+	int line[0];
+};
+
+struct exar8250_platform {
+	int (*rs485_config)(struct uart_port *, struct ktermios *, struct serial_rs485 *);
+	const struct serial_rs485 *rs485_supported;
+	int (*register_gpio)(struct pci_dev *, struct uart_8250_port *);
+	void (*unregister_gpio)(struct uart_8250_port *);
+};
+
+struct lpss8250;
+
+struct lpss8250_board {
+	unsigned long freq;
+	unsigned int base_baud;
+	int (*setup)(struct lpss8250 *, struct uart_port *);
+	void (*exit)(struct lpss8250 *);
+};
+
+struct lpss8250 {
+	struct dw8250_port_data data;
+	struct lpss8250_board *board;
+	struct dw_dma_chip dma_chip;
+	struct dw_dma_slave dma_param;
+	u8 dma_maxburst;
+};
+
+struct mid8250;
+
+struct mid8250_board {
+	unsigned int flags;
+	unsigned long freq;
+	unsigned int base_baud;
+	int (*setup)(struct mid8250 *, struct uart_port *);
+	void (*exit)(struct mid8250 *);
+};
+
+struct mid8250 {
+	int line;
+	int dma_index;
+	struct pci_dev *dma_dev;
+	struct uart_8250_dma dma;
+	struct mid8250_board *board;
+	struct hsu_dma_chip dma_chip;
+};
+
+struct hsu_dma_slave {
+	struct device *dma_dev;
+	int chan_id;
+};
+
+struct pericom8250 {
+	void *virt;
+	unsigned int nr;
+	int line[0];
+};
+
+struct of_serial_info {
+	struct clk *clk;
+	struct reset_control *rst;
+	int type;
+	int line;
+};
+
+struct s3c24xx_uart_info;
+
+struct s3c24xx_serial_drv_data;
+
+struct s3c2410_uartcfg;
+
+struct s3c24xx_uart_dma;
+
+struct s3c24xx_uart_port {
+	unsigned char rx_claimed;
+	unsigned char tx_claimed;
+	unsigned char rx_enabled;
+	unsigned char tx_enabled;
+	unsigned int pm_level;
+	unsigned long baudclk_rate;
+	unsigned int min_dma_size;
+	unsigned int rx_irq;
+	unsigned int tx_irq;
+	unsigned int tx_in_progress;
+	unsigned int tx_mode;
+	unsigned int rx_mode;
+	const struct s3c24xx_uart_info *info;
+	struct clk *clk;
+	struct clk *baudclk;
+	struct uart_port port;
+	const struct s3c24xx_serial_drv_data *drv_data;
+	const struct s3c2410_uartcfg *cfg;
+	struct s3c24xx_uart_dma *dma;
+};
+
+enum s3c24xx_port_type {
+	TYPE_S3C24XX = 0,
+	TYPE_S3C6400 = 1,
+	TYPE_APPLE_S5L = 2,
+};
+
+struct s3c24xx_uart_info {
+	const char *name;
+	enum s3c24xx_port_type type;
+	unsigned int port_type;
+	unsigned int fifosize;
+	unsigned long rx_fifomask;
+	unsigned long rx_fifoshift;
+	unsigned long rx_fifofull;
+	unsigned long tx_fifomask;
+	unsigned long tx_fifoshift;
+	unsigned long tx_fifofull;
+	unsigned int def_clk_sel;
+	unsigned long num_clks;
+	unsigned long clksel_mask;
+	unsigned long clksel_shift;
+	unsigned long ucon_mask;
+	unsigned int has_divslot: 1;
+};
+
+struct s3c2410_uartcfg {
+	unsigned char hwport;
+	unsigned char unused;
+	unsigned short flags;
+	upf_t uart_flags;
+	unsigned int clk_sel;
+	unsigned int has_fracval;
+	unsigned long ucon;
+	unsigned long ulcon;
+	unsigned long ufcon;
+};
+
+struct s3c24xx_serial_drv_data {
+	const struct s3c24xx_uart_info info;
+	const struct s3c2410_uartcfg def_cfg;
+	const unsigned int fifosize[4];
+};
+
+struct s3c24xx_uart_dma {
+	unsigned int rx_chan_id;
+	unsigned int tx_chan_id;
+	struct dma_slave_config rx_conf;
+	struct dma_slave_config tx_conf;
+	struct dma_chan___2 *rx_chan;
+	struct dma_chan___2 *tx_chan;
+	dma_addr_t rx_addr;
+	dma_addr_t tx_addr;
+	dma_cookie_t rx_cookie;
+	dma_cookie_t tx_cookie;
+	char *rx_buf;
+	dma_addr_t tx_transfer_addr;
+	size_t rx_size;
+	size_t tx_size;
+	struct dma_async_tx_descriptor *tx_desc;
+	struct dma_async_tx_descriptor *rx_desc;
+	int tx_bytes_requested;
+	int rx_bytes_requested;
+};
+
+struct samsung_early_console_data {
+	u32 txfull_mask;
+	u32 rxfifo_mask;
+};
+
+enum mctrl_gpio_idx {
+	UART_GPIO_CTS = 0,
+	UART_GPIO_DSR = 1,
+	UART_GPIO_DCD = 2,
+	UART_GPIO_RNG = 3,
+	UART_GPIO_RI = 3,
+	UART_GPIO_RTS = 4,
+	UART_GPIO_DTR = 5,
+	UART_GPIO_MAX = 6,
+};
+
+struct mctrl_gpios {
+	struct uart_port *port;
+	struct gpio_desc *gpio[6];
+	int irq[6];
+	unsigned int mctrl_prev;
+	bool mctrl_on;
+};
+
+enum serdev_parity {
+	SERDEV_PARITY_NONE = 0,
+	SERDEV_PARITY_EVEN = 1,
+	SERDEV_PARITY_ODD = 2,
+};
+
+struct serdev_controller;
+
+struct serdev_device_ops;
+
+struct serdev_device {
+	struct device dev;
+	int nr;
+	struct serdev_controller *ctrl;
+	const struct serdev_device_ops *ops;
+	struct completion write_comp;
+	struct mutex write_lock;
+};
+
+struct serdev_controller_ops;
+
+struct serdev_controller {
+	struct device dev;
+	unsigned int nr;
+	struct serdev_device *serdev;
+	const struct serdev_controller_ops *ops;
+};
+
+struct serdev_controller_ops {
+	int (*write_buf)(struct serdev_controller *, const unsigned char *, size_t);
+	void (*write_flush)(struct serdev_controller *);
+	int (*write_room)(struct serdev_controller *);
+	int (*open)(struct serdev_controller *);
+	void (*close)(struct serdev_controller *);
+	void (*set_flow_control)(struct serdev_controller *, bool);
+	int (*set_parity)(struct serdev_controller *, enum serdev_parity);
+	unsigned int (*set_baudrate)(struct serdev_controller *, unsigned int);
+	void (*wait_until_sent)(struct serdev_controller *, long);
+	int (*get_tiocm)(struct serdev_controller *);
+	int (*set_tiocm)(struct serdev_controller *, unsigned int, unsigned int);
+	int (*break_ctl)(struct serdev_controller *, unsigned int);
+};
+
+struct serdev_device_ops {
+	int (*receive_buf)(struct serdev_device *, const unsigned char *, size_t);
+	void (*write_wakeup)(struct serdev_device *);
+};
+
+struct serdev_device_driver {
+	struct device_driver driver;
+	int (*probe)(struct serdev_device *);
+	void (*remove)(struct serdev_device *);
+};
+
+struct acpi_serdev_lookup {
+	acpi_handle device_handle;
+	acpi_handle controller_handle;
+	int n;
+	int index;
+};
+
+struct serport {
+	struct tty_port *port;
+	struct tty_struct *tty;
+	struct tty_driver *tty_drv;
+	int tty_idx;
+	unsigned long flags;
+};
+
+struct memdev {
+	const char *name;
+	const struct file_operations *fops;
+	fmode_t fmode;
+	umode_t mode;
+};
+
+struct timer_rand_state {
+	unsigned long last_time;
+	long last_delta;
+	long last_delta2;
+};
+
+enum {
+	CRNG_EMPTY = 0,
+	CRNG_EARLY = 1,
+	CRNG_READY = 2,
+};
+
+struct batch_u8 {
+	u8 entropy[96];
+	local_lock_t lock;
+	unsigned long generation;
+	unsigned int position;
+};
+
+struct batch_u16 {
+	u16 entropy[48];
+	local_lock_t lock;
+	unsigned long generation;
+	unsigned int position;
+};
+
+struct batch_u32 {
+	u32 entropy[24];
+	local_lock_t lock;
+	unsigned long generation;
+	unsigned int position;
+};
+
+struct batch_u64 {
+	u64 entropy[12];
+	local_lock_t lock;
+	unsigned long generation;
+	unsigned int position;
+};
+
+struct crng {
+	u8 key[32];
+	unsigned long generation;
+	local_lock_t lock;
+};
+
+struct fast_pool {
+	unsigned long pool[4];
+	unsigned long last;
+	unsigned int count;
+	struct timer_list mix;
+};
+
+enum {
+	MIX_INFLIGHT = 2147483648,
+};
+
+enum {
+	POOL_BITS = 256,
+	POOL_READY_BITS = 256,
+	POOL_EARLY_BITS = 128,
+};
+
+enum {
+	CRNG_RESEED_START_INTERVAL = 250,
+	CRNG_RESEED_INTERVAL = 15000,
+};
+
+enum {
+	NUM_TRIAL_SAMPLES = 8192,
+	MAX_SAMPLES_PER_BIT = 16,
+};
+
+struct entropy_timer_state {
+	unsigned long entropy;
+	struct timer_list timer;
+	atomic_t samples;
+	unsigned int samples_per_bit;
+};
+
+struct hpets;
+
+struct hpet;
+
+struct hpet_timer;
+
+struct hpet_dev {
+	struct hpets *hd_hpets;
+	struct hpet *hd_hpet;
+	struct hpet_timer *hd_timer;
+	unsigned long hd_ireqfreq;
+	unsigned long hd_irqdata;
+	wait_queue_head_t hd_waitqueue;
+	struct fasync_struct *hd_async_queue;
+	unsigned int hd_flags;
+	unsigned int hd_irq;
+	unsigned int hd_hdwirq;
+	char hd_name[7];
+};
+
+struct hpets {
+	struct hpets *hp_next;
+	struct hpet *hp_hpet;
+	unsigned long hp_hpet_phys;
+	struct clocksource *hp_clocksource;
+	unsigned long long hp_tick_freq;
+	unsigned long hp_delta;
+	unsigned int hp_ntimer;
+	unsigned int hp_which;
+	struct hpet_dev hp_dev[0];
+};
+
+struct hpet_timer {
+	u64 hpet_config;
+	union {
+		u64 _hpet_hc64;
+		u32 _hpet_hc32;
+		unsigned long _hpet_compare;
+	} _u1;
+	u64 hpet_fsb[2];
+};
+
+struct hpet {
+	u64 hpet_cap;
+	u64 res0;
+	u64 hpet_config;
+	u64 res1;
+	u64 hpet_isr;
+	u64 res2[25];
+	union {
+		u64 _hpet_mc64;
+		u32 _hpet_mc32;
+		unsigned long _hpet_mc;
+	} _u0;
+	u64 res3;
+	struct hpet_timer hpet_timers[0];
+};
+
+struct hpet_info {
+	unsigned long hi_ireqfreq;
+	unsigned long hi_flags;
+	unsigned short hi_hpet;
+	unsigned short hi_timer;
+};
+
+struct compat_hpet_info {
+	compat_ulong_t hi_ireqfreq;
+	compat_ulong_t hi_flags;
+	unsigned short hi_hpet;
+	unsigned short hi_timer;
+};
+
+struct hwrng {
+	const char *name;
+	int (*init)(struct hwrng *);
+	void (*cleanup)(struct hwrng *);
+	int (*data_present)(struct hwrng *, int);
+	int (*data_read)(struct hwrng *, u32 *);
+	int (*read)(struct hwrng *, void *, size_t, bool);
+	unsigned long priv;
+	unsigned short quality;
+	struct list_head list;
+	struct kref ref;
+	struct completion cleanup_done;
+	struct completion dying;
+};
+
+struct intel_rng_hw {
+	struct pci_dev *dev;
+	void *mem;
+	u8 bios_cntl_off;
+	u8 bios_cntl_val;
+	u8 fwh_dec_en1_off;
+	u8 fwh_dec_en1_val;
+};
+
+struct amd768_priv {
+	void *iobase;
+	struct pci_dev *pcidev;
+	u32 pmbase;
+};
+
+struct iommu_group {
+	struct kobject kobj;
+	struct kobject *devices_kobj;
+	struct list_head devices;
+	struct xarray pasid_array;
+	struct mutex mutex;
+	void *iommu_data;
+	void (*iommu_data_release)(void *);
+	char *name;
+	int id;
+	struct iommu_domain *default_domain;
+	struct iommu_domain *blocking_domain;
+	struct iommu_domain *domain;
+	struct list_head entry;
+	unsigned int owner_cnt;
+	void *owner;
+};
+
+struct iommu_group_attribute {
+	struct attribute attr;
+	ssize_t (*show)(struct iommu_group *, char *);
+	ssize_t (*store)(struct iommu_group *, const char *, size_t);
+};
+
+enum iommu_fault_type {
+	IOMMU_FAULT_DMA_UNRECOV = 1,
+	IOMMU_FAULT_PAGE_REQ = 2,
+};
+
+enum fsl_mc_pool_type {
+	FSL_MC_POOL_DPMCP = 0,
+	FSL_MC_POOL_DPBP = 1,
+	FSL_MC_POOL_DPCON = 2,
+	FSL_MC_POOL_IRQ = 3,
+	FSL_MC_NUM_POOL_TYPES = 4,
+};
+
+enum iommu_resv_type {
+	IOMMU_RESV_DIRECT = 0,
+	IOMMU_RESV_DIRECT_RELAXABLE = 1,
+	IOMMU_RESV_RESERVED = 2,
+	IOMMU_RESV_MSI = 3,
+	IOMMU_RESV_SW_MSI = 4,
+};
+
+enum {
+	IOMMU_SET_DOMAIN_MUST_SUCCEED = 1,
+};
+
+struct group_device {
+	struct list_head list;
+	struct device *dev;
+	char *name;
+};
+
+struct fsl_mc_obj_desc {
+	char type[16];
+	int id;
+	u16 vendor;
+	u16 ver_major;
+	u16 ver_minor;
+	u8 irq_count;
+	u8 region_count;
+	u32 state;
+	char label[16];
+	u16 flags;
+};
+
+struct fsl_mc_io;
+
+struct fsl_mc_device_irq;
+
+struct fsl_mc_resource;
+
+struct fsl_mc_device {
+	struct device dev;
+	u64 dma_mask;
+	u16 flags;
+	u32 icid;
+	u16 mc_handle;
+	struct fsl_mc_io *mc_io;
+	struct fsl_mc_obj_desc obj_desc;
+	struct resource *regions;
+	struct fsl_mc_device_irq **irqs;
+	struct fsl_mc_resource *resource;
+	struct device_link *consumer_link;
+	const char *driver_override;
+};
+
+struct fsl_mc_io {
+	struct device *dev;
+	u16 flags;
+	u32 portal_size;
+	phys_addr_t portal_phys_addr;
+	void *portal_virt_addr;
+	struct fsl_mc_device *dpmcp_dev;
+	union {
+		struct mutex mutex;
+		raw_spinlock_t spinlock;
+	};
+};
+
+struct fsl_mc_resource_pool;
+
+struct fsl_mc_resource {
+	enum fsl_mc_pool_type type;
+	s32 id;
+	void *data;
+	struct fsl_mc_resource_pool *parent_pool;
+	struct list_head node;
+};
+
+struct fsl_mc_device_irq {
+	unsigned int virq;
+	struct fsl_mc_device *mc_dev;
+	u8 dev_irq_index;
+	struct fsl_mc_resource resource;
+};
+
+struct iommu_resv_region {
+	struct list_head list;
+	phys_addr_t start;
+	size_t length;
+	int prot;
+	enum iommu_resv_type type;
+	void (*free)(struct device *, struct iommu_resv_region *);
+};
+
+struct group_for_pci_data {
+	struct pci_dev *pdev;
+	struct iommu_group *group;
+};
+
+typedef void (*btf_trace_add_device_to_group)(void *, int, struct device *);
+
+typedef void (*btf_trace_remove_device_from_group)(void *, int, struct device *);
+
+typedef void (*btf_trace_attach_device_to_domain)(void *, struct device *);
+
+typedef void (*btf_trace_map)(void *, unsigned long, phys_addr_t, size_t);
+
+typedef void (*btf_trace_unmap)(void *, unsigned long, size_t, size_t);
+
+typedef void (*btf_trace_io_page_fault)(void *, struct device *, unsigned long, int);
+
+struct trace_event_raw_iommu_group_event {
+	struct trace_entry ent;
+	int gid;
+	u32 __data_loc_device;
+	char __data[0];
+};
+
+struct trace_event_raw_iommu_device_event {
+	struct trace_entry ent;
+	u32 __data_loc_device;
+	char __data[0];
+};
+
+struct trace_event_raw_map {
+	struct trace_entry ent;
+	u64 iova;
+	u64 paddr;
+	size_t size;
+	char __data[0];
+};
+
+struct trace_event_raw_unmap {
+	struct trace_entry ent;
+	u64 iova;
+	size_t size;
+	size_t unmapped_size;
+	char __data[0];
+};
+
+struct trace_event_raw_iommu_error {
+	struct trace_entry ent;
+	u32 __data_loc_device;
+	u32 __data_loc_driver;
+	u64 iova;
+	int flags;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_iommu_group_event {
+	u32 device;
+};
+
+struct trace_event_data_offsets_iommu_device_event {
+	u32 device;
+};
+
+struct trace_event_data_offsets_map {};
+
+struct trace_event_data_offsets_unmap {};
+
+struct trace_event_data_offsets_iommu_error {
+	u32 device;
+	u32 driver;
+};
+
+struct iova {
+	struct rb_node node;
+	unsigned long pfn_hi;
+	unsigned long pfn_lo;
+};
+
+struct iova_rcache;
+
+struct iova_domain {
+	spinlock_t iova_rbtree_lock;
+	struct rb_root rbroot;
+	struct rb_node *cached_node;
+	struct rb_node *cached32_node;
+	unsigned long granule;
+	unsigned long start_pfn;
+	unsigned long dma_32bit_pfn;
+	unsigned long max32_alloc_size;
+	struct iova anchor;
+	struct iova_rcache *rcaches;
+	struct hlist_node cpuhp_dead;
+	u64 android_vendor_data1;
+};
+
+enum iommu_dma_cookie_type {
+	IOMMU_DMA_IOVA_COOKIE = 0,
+	IOMMU_DMA_MSI_COOKIE = 1,
+};
+
+struct iova_fq;
+
+struct iommu_dma_cookie {
+	enum iommu_dma_cookie_type type;
+	union {
+		struct {
+			struct iova_domain iovad;
+			struct iova_fq __attribute__((btf_type_tag("percpu"))) *fq;
+			atomic64_t fq_flush_start_cnt;
+			atomic64_t fq_flush_finish_cnt;
+			struct timer_list fq_timer;
+			atomic_t fq_timer_on;
+		};
+		dma_addr_t msi_iova;
+	};
+	struct list_head msi_page_list;
+	struct iommu_domain *fq_domain;
+	struct mutex mutex;
+};
+
+struct iova_fq_entry {
+	unsigned long iova_pfn;
+	unsigned long pages;
+	struct list_head freelist;
+	u64 counter;
+};
+
+struct iova_fq {
+	struct iova_fq_entry entries[256];
+	unsigned int head;
+	unsigned int tail;
+	spinlock_t lock;
+};
+
+struct iommu_dma_msi_page {
+	struct list_head list;
+	dma_addr_t iova;
+	phys_addr_t phys;
+};
+
+struct iova_magazine;
+
+struct iova_cpu_rcache {
+	spinlock_t lock;
+	struct iova_magazine *loaded;
+	struct iova_magazine *prev;
+};
+
+struct iova_magazine {
+	unsigned long size;
+	unsigned long pfns[127];
+};
+
+struct iova_rcache {
+	spinlock_t lock;
+	unsigned long depot_size;
+	struct iova_magazine *depot[32];
+	struct iova_cpu_rcache __attribute__((btf_type_tag("percpu"))) *cpu_rcaches;
+};
+
+struct of_phandle_iterator {
+	const char *cells_name;
+	int cell_count;
+	const struct device_node *parent;
+	const __be32 *list_end;
+	const __be32 *phandle_end;
+	const __be32 *cur;
+	uint32_t cur_count;
+	phandle phandle;
+	struct device_node *node;
+};
+
+struct of_pci_iommu_alias_info {
+	struct device *dev;
+	struct device_node *np;
+};
+
+enum switch_power_state {
+	DRM_SWITCH_POWER_ON = 0,
+	DRM_SWITCH_POWER_OFF = 1,
+	DRM_SWITCH_POWER_CHANGING = 2,
+	DRM_SWITCH_POWER_DYNAMIC_OFF = 3,
+};
+
+struct drm_modeset_lock {
+	struct ww_mutex mutex;
+	struct list_head head;
+};
+
+struct drm_modeset_acquire_ctx;
+
+struct drm_mode_config_funcs;
+
+struct drm_property;
+
+struct drm_atomic_state;
+
+struct drm_mode_config_helper_funcs;
+
+struct drm_mode_config {
+	struct mutex mutex;
+	struct drm_modeset_lock connection_mutex;
+	struct drm_modeset_acquire_ctx *acquire_ctx;
+	struct mutex idr_mutex;
+	struct idr object_idr;
+	struct idr tile_idr;
+	struct mutex fb_lock;
+	int num_fb;
+	struct list_head fb_list;
+	spinlock_t connector_list_lock;
+	int num_connector;
+	struct ida connector_ida;
+	struct list_head connector_list;
+	struct llist_head connector_free_list;
+	struct work_struct connector_free_work;
+	int num_encoder;
+	struct list_head encoder_list;
+	int num_total_plane;
+	struct list_head plane_list;
+	int num_crtc;
+	struct list_head crtc_list;
+	struct list_head property_list;
+	struct list_head privobj_list;
+	int min_width;
+	int min_height;
+	int max_width;
+	int max_height;
+	const struct drm_mode_config_funcs *funcs;
+	bool poll_enabled;
+	bool poll_running;
+	bool delayed_event;
+	struct delayed_work output_poll_work;
+	struct mutex blob_lock;
+	struct list_head property_blob_list;
+	struct drm_property *edid_property;
+	struct drm_property *dpms_property;
+	struct drm_property *path_property;
+	struct drm_property *tile_property;
+	struct drm_property *link_status_property;
+	struct drm_property *plane_type_property;
+	struct drm_property *prop_src_x;
+	struct drm_property *prop_src_y;
+	struct drm_property *prop_src_w;
+	struct drm_property *prop_src_h;
+	struct drm_property *prop_crtc_x;
+	struct drm_property *prop_crtc_y;
+	struct drm_property *prop_crtc_w;
+	struct drm_property *prop_crtc_h;
+	struct drm_property *prop_fb_id;
+	struct drm_property *prop_in_fence_fd;
+	struct drm_property *prop_out_fence_ptr;
+	struct drm_property *prop_crtc_id;
+	struct drm_property *prop_fb_damage_clips;
+	struct drm_property *prop_active;
+	struct drm_property *prop_mode_id;
+	struct drm_property *prop_vrr_enabled;
+	struct drm_property *dvi_i_subconnector_property;
+	struct drm_property *dvi_i_select_subconnector_property;
+	struct drm_property *dp_subconnector_property;
+	struct drm_property *tv_subconnector_property;
+	struct drm_property *tv_select_subconnector_property;
+	struct drm_property *legacy_tv_mode_property;
+	struct drm_property *tv_mode_property;
+	struct drm_property *tv_left_margin_property;
+	struct drm_property *tv_right_margin_property;
+	struct drm_property *tv_top_margin_property;
+	struct drm_property *tv_bottom_margin_property;
+	struct drm_property *tv_brightness_property;
+	struct drm_property *tv_contrast_property;
+	struct drm_property *tv_flicker_reduction_property;
+	struct drm_property *tv_overscan_property;
+	struct drm_property *tv_saturation_property;
+	struct drm_property *tv_hue_property;
+	struct drm_property *scaling_mode_property;
+	struct drm_property *aspect_ratio_property;
+	struct drm_property *content_type_property;
+	struct drm_property *degamma_lut_property;
+	struct drm_property *degamma_lut_size_property;
+	struct drm_property *ctm_property;
+	struct drm_property *gamma_lut_property;
+	struct drm_property *gamma_lut_size_property;
+	struct drm_property *suggested_x_property;
+	struct drm_property *suggested_y_property;
+	struct drm_property *non_desktop_property;
+	struct drm_property *panel_orientation_property;
+	struct drm_property *writeback_fb_id_property;
+	struct drm_property *writeback_pixel_formats_property;
+	struct drm_property *writeback_out_fence_ptr_property;
+	struct drm_property *hdr_output_metadata_property;
+	struct drm_property *content_protection_property;
+	struct drm_property *hdcp_content_type_property;
+	uint32_t preferred_depth;
+	uint32_t prefer_shadow;
+	bool quirk_addfb_prefer_xbgr_30bpp;
+	bool quirk_addfb_prefer_host_byte_order;
+	bool async_page_flip;
+	bool fb_modifiers_not_supported;
+	bool normalize_zpos;
+	struct drm_property *modifiers_property;
+	uint32_t cursor_width;
+	uint32_t cursor_height;
+	struct drm_atomic_state *suspend_state;
+	const struct drm_mode_config_helper_funcs *helper_private;
+};
+
+struct drm_vram_mm;
+
+struct drm_driver;
+
+struct drm_minor;
+
+struct drm_master;
+
+struct drm_vblank_crtc;
+
+struct drm_vma_offset_manager;
+
+struct drm_fb_helper;
+
+struct drm_device {
+	int if_version;
+	struct kref ref;
+	struct device *dev;
+	struct {
+		struct list_head resources;
+		void *final_kfree;
+		spinlock_t lock;
+	} managed;
+	const struct drm_driver *driver;
+	void *dev_private;
+	struct drm_minor *primary;
+	struct drm_minor *render;
+	struct drm_minor *accel;
+	bool registered;
+	struct drm_master *master;
+	u32 driver_features;
+	bool unplugged;
+	struct inode *anon_inode;
+	char *unique;
+	struct mutex struct_mutex;
+	struct mutex master_mutex;
+	atomic_t open_count;
+	struct mutex filelist_mutex;
+	struct list_head filelist;
+	struct list_head filelist_internal;
+	struct mutex clientlist_mutex;
+	struct list_head clientlist;
+	bool vblank_disable_immediate;
+	struct drm_vblank_crtc *vblank;
+	spinlock_t vblank_time_lock;
+	spinlock_t vbl_lock;
+	u32 max_vblank_count;
+	struct list_head vblank_event_list;
+	spinlock_t event_lock;
+	unsigned int num_crtcs;
+	struct drm_mode_config mode_config;
+	struct mutex object_name_lock;
+	struct idr object_name_idr;
+	struct drm_vma_offset_manager *vma_offset_manager;
+	struct drm_vram_mm *vram_mm;
+	enum switch_power_state switch_power_state;
+	struct drm_fb_helper *fb_helper;
+	struct mutex debugfs_mutex;
+	struct list_head debugfs_list;
+};
+
+struct drm_file;
+
+struct drm_gem_object;
+
+struct dma_buf;
+
+struct dma_buf_attachment;
+
+struct drm_mode_create_dumb;
+
+struct drm_printer;
+
+struct drm_ioctl_desc;
+
+struct drm_driver {
+	int (*load)(struct drm_device *, unsigned long);
+	int (*open)(struct drm_device *, struct drm_file *);
+	void (*postclose)(struct drm_device *, struct drm_file *);
+	void (*lastclose)(struct drm_device *);
+	void (*unload)(struct drm_device *);
+	void (*release)(struct drm_device *);
+	void (*master_set)(struct drm_device *, struct drm_file *, bool);
+	void (*master_drop)(struct drm_device *, struct drm_file *);
+	void (*debugfs_init)(struct drm_minor *);
+	struct drm_gem_object * (*gem_create_object)(struct drm_device *, size_t);
+	int (*prime_handle_to_fd)(struct drm_device *, struct drm_file *, uint32_t, uint32_t, int *);
+	int (*prime_fd_to_handle)(struct drm_device *, struct drm_file *, int, uint32_t *);
+	struct drm_gem_object * (*gem_prime_import)(struct drm_device *, struct dma_buf *);
+	struct drm_gem_object * (*gem_prime_import_sg_table)(struct drm_device *, struct dma_buf_attachment *, struct sg_table *);
+	int (*dumb_create)(struct drm_file *, struct drm_device *, struct drm_mode_create_dumb *);
+	int (*dumb_map_offset)(struct drm_file *, struct drm_device *, uint32_t, uint64_t *);
+	void (*show_fdinfo)(struct drm_printer *, struct drm_file *);
+	int major;
+	int minor;
+	int patchlevel;
+	char *name;
+	char *desc;
+	char *date;
+	u32 driver_features;
+	const struct drm_ioctl_desc *ioctls;
+	int num_ioctls;
+	const struct file_operations *fops;
+};
+
+struct drm_mode_create_dumb {
+	__u32 height;
+	__u32 width;
+	__u32 bpp;
+	__u32 flags;
+	__u32 handle;
+	__u32 pitch;
+	__u64 size;
+};
+
+struct drm_printer {
+	void (*printfn)(struct drm_printer *, struct va_format *);
+	void (*puts)(struct drm_printer *, const char *);
+	void *arg;
+	const char *prefix;
+};
+
+enum drm_ioctl_flags {
+	DRM_AUTH = 1,
+	DRM_MASTER = 2,
+	DRM_ROOT_ONLY = 4,
+	DRM_UNLOCKED = 16,
+	DRM_RENDER_ALLOW = 32,
+};
+
+typedef int drm_ioctl_t(struct drm_device *, void *, struct drm_file *);
+
+struct drm_ioctl_desc {
+	unsigned int cmd;
+	enum drm_ioctl_flags flags;
+	drm_ioctl_t *func;
+	const char *name;
+};
+
+struct drm_master {
+	struct kref refcount;
+	struct drm_device *dev;
+	char *unique;
+	int unique_len;
+	struct idr magic_map;
+	void *driver_priv;
+	struct drm_master *lessor;
+	int lessee_id;
+	struct list_head lessee_list;
+	struct list_head lessees;
+	struct idr leases;
+	struct idr lessee_idr;
+};
+
+struct drm_modeset_acquire_ctx {
+	struct ww_acquire_ctx ww_ctx;
+	struct drm_modeset_lock *contended;
+	depot_stack_handle_t stack_depot;
+	struct list_head locked;
+	bool trylock_only;
+	bool interruptible;
+};
+
+enum drm_mode_status {
+	MODE_OK = 0,
+	MODE_HSYNC = 1,
+	MODE_VSYNC = 2,
+	MODE_H_ILLEGAL = 3,
+	MODE_V_ILLEGAL = 4,
+	MODE_BAD_WIDTH = 5,
+	MODE_NOMODE = 6,
+	MODE_NO_INTERLACE = 7,
+	MODE_NO_DBLESCAN = 8,
+	MODE_NO_VSCAN = 9,
+	MODE_MEM = 10,
+	MODE_VIRTUAL_X = 11,
+	MODE_VIRTUAL_Y = 12,
+	MODE_MEM_VIRT = 13,
+	MODE_NOCLOCK = 14,
+	MODE_CLOCK_HIGH = 15,
+	MODE_CLOCK_LOW = 16,
+	MODE_CLOCK_RANGE = 17,
+	MODE_BAD_HVALUE = 18,
+	MODE_BAD_VVALUE = 19,
+	MODE_BAD_VSCAN = 20,
+	MODE_HSYNC_NARROW = 21,
+	MODE_HSYNC_WIDE = 22,
+	MODE_HBLANK_NARROW = 23,
+	MODE_HBLANK_WIDE = 24,
+	MODE_VSYNC_NARROW = 25,
+	MODE_VSYNC_WIDE = 26,
+	MODE_VBLANK_NARROW = 27,
+	MODE_VBLANK_WIDE = 28,
+	MODE_PANEL = 29,
+	MODE_INTERLACE_WIDTH = 30,
+	MODE_ONE_WIDTH = 31,
+	MODE_ONE_HEIGHT = 32,
+	MODE_ONE_SIZE = 33,
+	MODE_NO_REDUCED = 34,
+	MODE_NO_STEREO = 35,
+	MODE_NO_420 = 36,
+	MODE_STALE = -3,
+	MODE_BAD = -2,
+	MODE_ERROR = -1,
+};
+
+struct drm_framebuffer;
+
+struct drm_mode_fb_cmd2;
+
+struct drm_format_info;
+
+struct drm_display_mode;
+
+struct drm_mode_config_funcs {
+	struct drm_framebuffer * (*fb_create)(struct drm_device *, struct drm_file *, const struct drm_mode_fb_cmd2 *);
+	const struct drm_format_info * (*get_format_info)(const struct drm_mode_fb_cmd2 *);
+	void (*output_poll_changed)(struct drm_device *);
+	enum drm_mode_status (*mode_valid)(struct drm_device *, const struct drm_display_mode *);
+	int (*atomic_check)(struct drm_device *, struct drm_atomic_state *);
+	int (*atomic_commit)(struct drm_device *, struct drm_atomic_state *, bool);
+	struct drm_atomic_state * (*atomic_state_alloc)(struct drm_device *);
+	void (*atomic_state_clear)(struct drm_atomic_state *);
+	void (*atomic_state_free)(struct drm_atomic_state *);
+};
+
+struct drm_mode_fb_cmd2 {
+	__u32 fb_id;
+	__u32 width;
+	__u32 height;
+	__u32 pixel_format;
+	__u32 flags;
+	__u32 handles[4];
+	__u32 pitches[4];
+	__u32 offsets[4];
+	__u64 modifier[4];
+};
+
+struct drm_format_info {
+	u32 format;
+	u8 depth;
+	u8 num_planes;
+	union {
+		u8 cpp[4];
+		u8 char_per_block[4];
+	};
+	u8 block_w[4];
+	u8 block_h[4];
+	u8 hsub;
+	u8 vsub;
+	bool has_alpha;
+	bool is_yuv;
+	bool is_color_indexed;
+};
+
+struct drm_display_mode {
+	int clock;
+	u16 hdisplay;
+	u16 hsync_start;
+	u16 hsync_end;
+	u16 htotal;
+	u16 hskew;
+	u16 vdisplay;
+	u16 vsync_start;
+	u16 vsync_end;
+	u16 vtotal;
+	u16 vscan;
+	u32 flags;
+	int crtc_clock;
+	u16 crtc_hdisplay;
+	u16 crtc_hblank_start;
+	u16 crtc_hblank_end;
+	u16 crtc_hsync_start;
+	u16 crtc_hsync_end;
+	u16 crtc_htotal;
+	u16 crtc_hskew;
+	u16 crtc_vdisplay;
+	u16 crtc_vblank_start;
+	u16 crtc_vblank_end;
+	u16 crtc_vsync_start;
+	u16 crtc_vsync_end;
+	u16 crtc_vtotal;
+	u16 width_mm;
+	u16 height_mm;
+	u8 type;
+	bool expose_to_userspace;
+	struct list_head head;
+	char name[32];
+	enum drm_mode_status status;
+	enum hdmi_picture_aspect picture_aspect_ratio;
+};
+
+struct drm_mode_config_helper_funcs {
+	void (*atomic_commit_tail)(struct drm_atomic_state *);
+	int (*atomic_commit_setup)(struct drm_atomic_state *);
+};
+
+struct drm_debugfs_info {
+	const char *name;
+	int (*show)(struct seq_file *, void *);
+	u32 driver_features;
+	void *data;
+};
+
+enum drm_gem_object_status {
+	DRM_GEM_OBJECT_RESIDENT = 1,
+	DRM_GEM_OBJECT_PURGEABLE = 2,
+};
+
+enum drm_color_encoding {
+	DRM_COLOR_YCBCR_BT601 = 0,
+	DRM_COLOR_YCBCR_BT709 = 1,
+	DRM_COLOR_YCBCR_BT2020 = 2,
+	DRM_COLOR_ENCODING_MAX = 3,
+};
+
+enum drm_color_range {
+	DRM_COLOR_YCBCR_LIMITED_RANGE = 0,
+	DRM_COLOR_YCBCR_FULL_RANGE = 1,
+	DRM_COLOR_RANGE_MAX = 2,
+};
+
+enum drm_scaling_filter {
+	DRM_SCALING_FILTER_DEFAULT = 0,
+	DRM_SCALING_FILTER_NEAREST_NEIGHBOR = 1,
+};
+
+enum drm_plane_type {
+	DRM_PLANE_TYPE_OVERLAY = 0,
+	DRM_PLANE_TYPE_PRIMARY = 1,
+	DRM_PLANE_TYPE_CURSOR = 2,
+};
+
+enum drm_connector_registration_state {
+	DRM_CONNECTOR_INITIALIZING = 0,
+	DRM_CONNECTOR_REGISTERED = 1,
+	DRM_CONNECTOR_UNREGISTERED = 2,
+};
+
+enum drm_connector_status {
+	connector_status_connected = 1,
+	connector_status_disconnected = 2,
+	connector_status_unknown = 3,
+};
+
+enum subpixel_order {
+	SubPixelUnknown = 0,
+	SubPixelHorizontalRGB = 1,
+	SubPixelHorizontalBGR = 2,
+	SubPixelVerticalRGB = 3,
+	SubPixelVerticalBGR = 4,
+	SubPixelNone = 5,
+};
+
+enum drm_link_status {
+	DRM_LINK_STATUS_GOOD = 0,
+	DRM_LINK_STATUS_BAD = 1,
+};
+
+enum drm_mode_subconnector {
+	DRM_MODE_SUBCONNECTOR_Automatic = 0,
+	DRM_MODE_SUBCONNECTOR_Unknown = 0,
+	DRM_MODE_SUBCONNECTOR_VGA = 1,
+	DRM_MODE_SUBCONNECTOR_DVID = 3,
+	DRM_MODE_SUBCONNECTOR_DVIA = 4,
+	DRM_MODE_SUBCONNECTOR_Composite = 5,
+	DRM_MODE_SUBCONNECTOR_SVIDEO = 6,
+	DRM_MODE_SUBCONNECTOR_Component = 8,
+	DRM_MODE_SUBCONNECTOR_SCART = 9,
+	DRM_MODE_SUBCONNECTOR_DisplayPort = 10,
+	DRM_MODE_SUBCONNECTOR_HDMIA = 11,
+	DRM_MODE_SUBCONNECTOR_Native = 15,
+	DRM_MODE_SUBCONNECTOR_Wireless = 18,
+};
+
+enum drm_colorspace {
+	DRM_MODE_COLORIMETRY_DEFAULT = 0,
+	DRM_MODE_COLORIMETRY_NO_DATA = 0,
+	DRM_MODE_COLORIMETRY_SMPTE_170M_YCC = 1,
+	DRM_MODE_COLORIMETRY_BT709_YCC = 2,
+	DRM_MODE_COLORIMETRY_XVYCC_601 = 3,
+	DRM_MODE_COLORIMETRY_XVYCC_709 = 4,
+	DRM_MODE_COLORIMETRY_SYCC_601 = 5,
+	DRM_MODE_COLORIMETRY_OPYCC_601 = 6,
+	DRM_MODE_COLORIMETRY_OPRGB = 7,
+	DRM_MODE_COLORIMETRY_BT2020_CYCC = 8,
+	DRM_MODE_COLORIMETRY_BT2020_RGB = 9,
+	DRM_MODE_COLORIMETRY_BT2020_YCC = 10,
+	DRM_MODE_COLORIMETRY_DCI_P3_RGB_D65 = 11,
+	DRM_MODE_COLORIMETRY_DCI_P3_RGB_THEATER = 12,
+	DRM_MODE_COLORIMETRY_RGB_WIDE_FIXED = 13,
+	DRM_MODE_COLORIMETRY_RGB_WIDE_FLOAT = 14,
+	DRM_MODE_COLORIMETRY_BT601_YCC = 15,
+	DRM_MODE_COLORIMETRY_COUNT = 16,
+};
+
+enum drm_privacy_screen_status {
+	PRIVACY_SCREEN_DISABLED = 0,
+	PRIVACY_SCREEN_ENABLED = 1,
+	PRIVACY_SCREEN_DISABLED_LOCKED = 2,
+	PRIVACY_SCREEN_ENABLED_LOCKED = 3,
+};
+
+enum drm_connector_force {
+	DRM_FORCE_UNSPECIFIED = 0,
+	DRM_FORCE_OFF = 1,
+	DRM_FORCE_ON = 2,
+	DRM_FORCE_ON_DIGITAL = 3,
+};
+
+enum drm_panel_orientation {
+	DRM_MODE_PANEL_ORIENTATION_UNKNOWN = -1,
+	DRM_MODE_PANEL_ORIENTATION_NORMAL = 0,
+	DRM_MODE_PANEL_ORIENTATION_BOTTOM_UP = 1,
+	DRM_MODE_PANEL_ORIENTATION_LEFT_UP = 2,
+	DRM_MODE_PANEL_ORIENTATION_RIGHT_UP = 3,
+};
+
+enum drm_connector_tv_mode {
+	DRM_MODE_TV_MODE_NTSC = 0,
+	DRM_MODE_TV_MODE_NTSC_443 = 1,
+	DRM_MODE_TV_MODE_NTSC_J = 2,
+	DRM_MODE_TV_MODE_PAL = 3,
+	DRM_MODE_TV_MODE_PAL_M = 4,
+	DRM_MODE_TV_MODE_PAL_N = 5,
+	DRM_MODE_TV_MODE_SECAM = 6,
+	DRM_MODE_TV_MODE_MAX = 7,
+};
+
+enum drm_debug_category {
+	DRM_UT_CORE = 0,
+	DRM_UT_DRIVER = 1,
+	DRM_UT_KMS = 2,
+	DRM_UT_PRIME = 3,
+	DRM_UT_ATOMIC = 4,
+	DRM_UT_VBL = 5,
+	DRM_UT_STATE = 6,
+	DRM_UT_LEASE = 7,
+	DRM_UT_DP = 8,
+	DRM_UT_DRMRES = 9,
+};
+
+enum drm_bridge_attach_flags {
+	DRM_BRIDGE_ATTACH_NO_CONNECTOR = 1,
+};
+
+enum drm_bridge_ops {
+	DRM_BRIDGE_OP_DETECT = 1,
+	DRM_BRIDGE_OP_EDID = 2,
+	DRM_BRIDGE_OP_HPD = 4,
+	DRM_BRIDGE_OP_MODES = 8,
+};
+
+enum drm_driver_feature {
+	DRIVER_GEM = 1,
+	DRIVER_MODESET = 2,
+	DRIVER_RENDER = 8,
+	DRIVER_ATOMIC = 16,
+	DRIVER_SYNCOBJ = 32,
+	DRIVER_SYNCOBJ_TIMELINE = 64,
+	DRIVER_COMPUTE_ACCEL = 128,
+	DRIVER_GEM_GPUVA = 256,
+	DRIVER_CURSOR_HOTSPOT = 512,
+	DRIVER_USE_AGP = 33554432,
+	DRIVER_LEGACY = 67108864,
+	DRIVER_PCI_DMA = 134217728,
+	DRIVER_SG = 268435456,
+	DRIVER_HAVE_DMA = 536870912,
+	DRIVER_HAVE_IRQ = 1073741824,
+};
+
+struct drm_crtc;
+
+struct drm_pending_vblank_event;
+
+struct drm_crtc_commit {
+	struct drm_crtc *crtc;
+	struct kref ref;
+	struct completion flip_done;
+	struct completion hw_done;
+	struct completion cleanup_done;
+	struct list_head commit_entry;
+	struct drm_pending_vblank_event *event;
+	bool abort_completion;
+};
+
+struct drm_object_properties;
+
+struct drm_mode_object {
+	uint32_t id;
+	uint32_t type;
+	struct drm_object_properties *properties;
+	struct kref refcount;
+	void (*free_cb)(struct kref *);
+};
+
+struct drm_object_properties {
+	int count;
+	struct drm_property *properties[96];
+	uint64_t values[96];
+};
+
+struct drm_crtc_crc_entry;
+
+struct drm_crtc_crc {
+	spinlock_t lock;
+	const char *source;
+	bool opened;
+	bool overflow;
+	struct drm_crtc_crc_entry *entries;
+	int head;
+	int tail;
+	size_t values_cnt;
+	wait_queue_head_t wq;
+};
+
+struct drm_plane;
+
+struct drm_crtc_funcs;
+
+struct drm_crtc_helper_funcs;
+
+struct drm_crtc_state;
+
+struct drm_self_refresh_data;
+
+struct drm_crtc {
+	struct drm_device *dev;
+	struct device_node *port;
+	struct list_head head;
+	char *name;
+	struct drm_modeset_lock mutex;
+	struct drm_mode_object base;
+	struct drm_plane *primary;
+	struct drm_plane *cursor;
+	unsigned int index;
+	int cursor_x;
+	int cursor_y;
+	bool enabled;
+	struct drm_display_mode mode;
+	struct drm_display_mode hwmode;
+	int x;
+	int y;
+	const struct drm_crtc_funcs *funcs;
+	uint32_t gamma_size;
+	uint16_t *gamma_store;
+	const struct drm_crtc_helper_funcs *helper_private;
+	struct drm_object_properties properties;
+	struct drm_property *scaling_filter_property;
+	struct drm_crtc_state *state;
+	struct list_head commit_list;
+	spinlock_t commit_lock;
+	struct dentry *debugfs_entry;
+	struct drm_crtc_crc crc;
+	unsigned int fence_context;
+	spinlock_t fence_lock;
+	unsigned long fence_seqno;
+	char timeline_name[32];
+	struct drm_self_refresh_data *self_refresh_data;
+};
+
+typedef unsigned int drm_magic_t;
+
+struct drm_prime_file_private {
+	struct mutex lock;
+	struct rb_root dmabufs;
+	struct rb_root handles;
+};
+
+struct drm_file {
+	bool authenticated;
+	bool stereo_allowed;
+	bool universal_planes;
+	bool atomic;
+	bool aspect_ratio_allowed;
+	bool writeback_connectors;
+	bool was_master;
+	bool is_master;
+	bool supports_virtualized_cursor_plane;
+	struct drm_master *master;
+	spinlock_t master_lookup_lock;
+	struct pid __attribute__((btf_type_tag("rcu"))) *pid;
+	u64 client_id;
+	drm_magic_t magic;
+	struct list_head lhead;
+	struct drm_minor *minor;
+	struct idr object_idr;
+	spinlock_t table_lock;
+	struct idr syncobj_idr;
+	spinlock_t syncobj_table_lock;
+	struct file *filp;
+	void *driver_priv;
+	struct list_head fbs;
+	struct mutex fbs_lock;
+	struct list_head blobs;
+	wait_queue_head_t event_wait;
+	struct list_head pending_event_list;
+	struct list_head event_list;
+	int event_space;
+	struct mutex event_read_lock;
+	struct drm_prime_file_private prime;
+};
+
+struct drm_minor {
+	int index;
+	int type;
+	struct device *kdev;
+	struct drm_device *dev;
+	struct dentry *debugfs_root;
+	struct list_head debugfs_list;
+	struct mutex debugfs_lock;
+};
+
+struct drm_mm;
+
+struct drm_mm_node {
+	unsigned long color;
+	u64 start;
+	u64 size;
+	struct drm_mm *mm;
+	struct list_head node_list;
+	struct list_head hole_stack;
+	struct rb_node rb;
+	struct rb_node rb_hole_size;
+	struct rb_node rb_hole_addr;
+	u64 __subtree_last;
+	u64 hole_size;
+	u64 subtree_max_hole;
+	unsigned long flags;
+};
+
+struct drm_vma_offset_node {
+	rwlock_t vm_lock;
+	struct drm_mm_node vm_node;
+	struct rb_root vm_files;
+	void *driver_private;
+};
+
+struct dma_resv_list;
+
+struct dma_resv {
+	struct ww_mutex lock;
+	struct dma_resv_list __attribute__((btf_type_tag("rcu"))) *fences;
+};
+
+struct drm_gem_object_funcs;
+
+struct drm_gem_lru;
+
+struct drm_gem_object {
+	struct kref refcount;
+	unsigned int handle_count;
+	struct drm_device *dev;
+	struct file *filp;
+	struct drm_vma_offset_node vma_node;
+	size_t size;
+	int name;
+	struct dma_buf *dma_buf;
+	struct dma_buf_attachment *import_attach;
+	struct dma_resv *resv;
+	struct dma_resv _resv;
+	struct {
+		struct list_head list;
+	} gpuva;
+	const struct drm_gem_object_funcs *funcs;
+	struct list_head lru_node;
+	struct drm_gem_lru *lru;
+};
+
+struct drm_mm {
+	void (*color_adjust)(const struct drm_mm_node *, unsigned long, u64 *, u64 *);
+	struct list_head hole_stack;
+	struct drm_mm_node head_node;
+	struct rb_root_cached interval_tree;
+	struct rb_root_cached holes_size;
+	struct rb_root holes_addr;
+	unsigned long scan_active;
+};
+
+struct dma_fence;
+
+struct dma_resv_list {
+	struct callback_head rcu;
+	u32 num_fences;
+	u32 max_fences;
+	struct dma_fence __attribute__((btf_type_tag("rcu"))) *table[0];
+};
+
+struct iosys_map;
+
+struct drm_gem_object_funcs {
+	void (*free)(struct drm_gem_object *);
+	int (*open)(struct drm_gem_object *, struct drm_file *);
+	void (*close)(struct drm_gem_object *, struct drm_file *);
+	void (*print_info)(struct drm_printer *, unsigned int, const struct drm_gem_object *);
+	struct dma_buf * (*export)(struct drm_gem_object *, int);
+	int (*pin)(struct drm_gem_object *);
+	void (*unpin)(struct drm_gem_object *);
+	struct sg_table * (*get_sg_table)(struct drm_gem_object *);
+	int (*vmap)(struct drm_gem_object *, struct iosys_map *);
+	void (*vunmap)(struct drm_gem_object *, struct iosys_map *);
+	int (*mmap)(struct drm_gem_object *, struct vm_area_struct *);
+	int (*evict)(struct drm_gem_object *);
+	enum drm_gem_object_status (*status)(struct drm_gem_object *);
+	const struct vm_operations_struct *vm_ops;
+};
+
+struct drm_gem_lru {
+	struct mutex *lock;
+	long count;
+	struct list_head list;
+};
+
+struct drm_vblank_crtc {
+	struct drm_device *dev;
+	wait_queue_head_t queue;
+	struct timer_list disable_timer;
+	seqlock_t seqlock;
+	atomic64_t count;
+	ktime_t time;
+	atomic_t refcount;
+	u32 last;
+	u32 max_vblank_count;
+	unsigned int inmodeset;
+	unsigned int pipe;
+	int framedur_ns;
+	int linedur_ns;
+	struct drm_display_mode hwmode;
+	bool enabled;
+	struct kthread_worker *worker;
+	struct list_head pending_work;
+	wait_queue_head_t work_wait_queue;
+};
+
+struct drm_framebuffer_funcs;
+
+struct drm_framebuffer {
+	struct drm_device *dev;
+	struct list_head head;
+	struct drm_mode_object base;
+	char comm[16];
+	const struct drm_format_info *format;
+	const struct drm_framebuffer_funcs *funcs;
+	unsigned int pitches[4];
+	unsigned int offsets[4];
+	uint64_t modifier;
+	unsigned int width;
+	unsigned int height;
+	int flags;
+	int hot_x;
+	int hot_y;
+	struct list_head filp_head;
+	struct drm_gem_object *obj[4];
+};
+
+struct drm_property {
+	struct list_head head;
+	struct drm_mode_object base;
+	uint32_t flags;
+	char name[32];
+	uint32_t num_values;
+	uint64_t *values;
+	struct drm_device *dev;
+	struct list_head enum_list;
+};
+
+struct drm_clip_rect;
+
+struct drm_framebuffer_funcs {
+	void (*destroy)(struct drm_framebuffer *);
+	int (*create_handle)(struct drm_framebuffer *, struct drm_file *, unsigned int *);
+	int (*dirty)(struct drm_framebuffer *, struct drm_file *, unsigned int, unsigned int, struct drm_clip_rect *, unsigned int);
+};
+
+struct drm_clip_rect {
+	unsigned short x1;
+	unsigned short y1;
+	unsigned short x2;
+	unsigned short y2;
+};
+
+struct __drm_planes_state;
+
+struct __drm_crtcs_state;
+
+struct __drm_connnectors_state;
+
+struct __drm_private_objs_state;
+
+struct drm_atomic_state {
+	struct kref ref;
+	struct drm_device *dev;
+	bool allow_modeset: 1;
+	bool legacy_cursor_update: 1;
+	bool async_update: 1;
+	bool duplicated: 1;
+	struct __drm_planes_state *planes;
+	struct __drm_crtcs_state *crtcs;
+	int num_connector;
+	struct __drm_connnectors_state *connectors;
+	int num_private_objs;
+	struct __drm_private_objs_state *private_objs;
+	struct drm_modeset_acquire_ctx *acquire_ctx;
+	struct drm_crtc_commit *fake_commit;
+	struct work_struct commit_work;
+};
+
+struct drm_plane_state;
+
+struct __drm_planes_state {
+	struct drm_plane *ptr;
+	struct drm_plane_state *state;
+	struct drm_plane_state *old_state;
+	struct drm_plane_state *new_state;
+};
+
+struct drm_plane_funcs;
+
+struct drm_plane_helper_funcs;
+
+struct drm_plane {
+	struct drm_device *dev;
+	struct list_head head;
+	char *name;
+	struct drm_modeset_lock mutex;
+	struct drm_mode_object base;
+	uint32_t possible_crtcs;
+	uint32_t *format_types;
+	unsigned int format_count;
+	bool format_default;
+	uint64_t *modifiers;
+	unsigned int modifier_count;
+	struct drm_crtc *crtc;
+	struct drm_framebuffer *fb;
+	struct drm_framebuffer *old_fb;
+	const struct drm_plane_funcs *funcs;
+	struct drm_object_properties properties;
+	enum drm_plane_type type;
+	unsigned int index;
+	const struct drm_plane_helper_funcs *helper_private;
+	struct drm_plane_state *state;
+	struct drm_property *alpha_property;
+	struct drm_property *zpos_property;
+	struct drm_property *rotation_property;
+	struct drm_property *blend_mode_property;
+	struct drm_property *color_encoding_property;
+	struct drm_property *color_range_property;
+	struct drm_property *scaling_filter_property;
+};
+
+struct drm_plane_funcs {
+	int (*update_plane)(struct drm_plane *, struct drm_crtc *, struct drm_framebuffer *, int, int, unsigned int, unsigned int, uint32_t, uint32_t, uint32_t, uint32_t, struct drm_modeset_acquire_ctx *);
+	int (*disable_plane)(struct drm_plane *, struct drm_modeset_acquire_ctx *);
+	void (*destroy)(struct drm_plane *);
+	void (*reset)(struct drm_plane *);
+	int (*set_property)(struct drm_plane *, struct drm_property *, uint64_t);
+	struct drm_plane_state * (*atomic_duplicate_state)(struct drm_plane *);
+	void (*atomic_destroy_state)(struct drm_plane *, struct drm_plane_state *);
+	int (*atomic_set_property)(struct drm_plane *, struct drm_plane_state *, struct drm_property *, uint64_t);
+	int (*atomic_get_property)(struct drm_plane *, const struct drm_plane_state *, struct drm_property *, uint64_t *);
+	int (*late_register)(struct drm_plane *);
+	void (*early_unregister)(struct drm_plane *);
+	void (*atomic_print_state)(struct drm_printer *, const struct drm_plane_state *);
+	bool (*format_mod_supported)(struct drm_plane *, uint32_t, uint64_t);
+};
+
+struct drm_rect {
+	int x1;
+	int y1;
+	int x2;
+	int y2;
+};
+
+struct drm_property_blob;
+
+struct drm_plane_state {
+	struct drm_plane *plane;
+	struct drm_crtc *crtc;
+	struct drm_framebuffer *fb;
+	struct dma_fence *fence;
+	int32_t crtc_x;
+	int32_t crtc_y;
+	uint32_t crtc_w;
+	uint32_t crtc_h;
+	uint32_t src_x;
+	uint32_t src_y;
+	uint32_t src_h;
+	uint32_t src_w;
+	u16 alpha;
+	uint16_t pixel_blend_mode;
+	unsigned int rotation;
+	unsigned int zpos;
+	unsigned int normalized_zpos;
+	enum drm_color_encoding color_encoding;
+	enum drm_color_range color_range;
+	struct drm_property_blob *fb_damage_clips;
+	bool ignore_damage_clips;
+	struct drm_rect src;
+	struct drm_rect dst;
+	bool visible;
+	enum drm_scaling_filter scaling_filter;
+	struct drm_crtc_commit *commit;
+	struct drm_atomic_state *state;
+};
+
+struct dma_fence_ops;
+
+struct dma_fence {
+	spinlock_t *lock;
+	const struct dma_fence_ops *ops;
+	union {
+		struct list_head cb_list;
+		ktime_t timestamp;
+		struct callback_head rcu;
+	};
+	u64 context;
+	u64 seqno;
+	unsigned long flags;
+	struct kref refcount;
+	int error;
+};
+
+struct dma_fence_ops {
+	bool use_64bit_seqno;
+	const char * (*get_driver_name)(struct dma_fence *);
+	const char * (*get_timeline_name)(struct dma_fence *);
+	bool (*enable_signaling)(struct dma_fence *);
+	bool (*signaled)(struct dma_fence *);
+	long (*wait)(struct dma_fence *, bool, long);
+	void (*release)(struct dma_fence *);
+	void (*fence_value_str)(struct dma_fence *, char *, int);
+	void (*timeline_value_str)(struct dma_fence *, char *, int);
+	void (*set_deadline)(struct dma_fence *, ktime_t);
+};
+
+struct drm_property_blob {
+	struct drm_mode_object base;
+	struct drm_device *dev;
+	struct list_head head_global;
+	struct list_head head_file;
+	size_t length;
+	void *data;
+};
+
+struct drm_plane_helper_funcs {
+	int (*prepare_fb)(struct drm_plane *, struct drm_plane_state *);
+	void (*cleanup_fb)(struct drm_plane *, struct drm_plane_state *);
+	int (*begin_fb_access)(struct drm_plane *, struct drm_plane_state *);
+	void (*end_fb_access)(struct drm_plane *, struct drm_plane_state *);
+	int (*atomic_check)(struct drm_plane *, struct drm_atomic_state *);
+	void (*atomic_update)(struct drm_plane *, struct drm_atomic_state *);
+	void (*atomic_enable)(struct drm_plane *, struct drm_atomic_state *);
+	void (*atomic_disable)(struct drm_plane *, struct drm_atomic_state *);
+	int (*atomic_async_check)(struct drm_plane *, struct drm_atomic_state *);
+	void (*atomic_async_update)(struct drm_plane *, struct drm_atomic_state *);
+};
+
+struct __drm_crtcs_state {
+	struct drm_crtc *ptr;
+	struct drm_crtc_state *state;
+	struct drm_crtc_state *old_state;
+	struct drm_crtc_state *new_state;
+	struct drm_crtc_commit *commit;
+	s32 __attribute__((btf_type_tag("user"))) *out_fence_ptr;
+	u64 last_vblank_count;
+};
+
+struct drm_crtc_state {
+	struct drm_crtc *crtc;
+	bool enable;
+	bool active;
+	bool planes_changed: 1;
+	bool mode_changed: 1;
+	bool active_changed: 1;
+	bool connectors_changed: 1;
+	bool zpos_changed: 1;
+	bool color_mgmt_changed: 1;
+	bool no_vblank: 1;
+	u32 plane_mask;
+	u32 connector_mask;
+	u32 encoder_mask;
+	struct drm_display_mode adjusted_mode;
+	struct drm_display_mode mode;
+	struct drm_property_blob *mode_blob;
+	struct drm_property_blob *degamma_lut;
+	struct drm_property_blob *ctm;
+	struct drm_property_blob *gamma_lut;
+	u32 target_vblank;
+	bool async_flip;
+	bool vrr_enabled;
+	bool self_refresh_active;
+	enum drm_scaling_filter scaling_filter;
+	struct drm_pending_vblank_event *event;
+	struct drm_crtc_commit *commit;
+	struct drm_atomic_state *state;
+};
+
+struct drm_event {
+	__u32 type;
+	__u32 length;
+};
+
+struct drm_event_vblank {
+	struct drm_event base;
+	__u64 user_data;
+	__u32 tv_sec;
+	__u32 tv_usec;
+	__u32 sequence;
+	__u32 crtc_id;
+};
+
+struct drm_event_crtc_sequence {
+	struct drm_event base;
+	__u64 user_data;
+	__s64 time_ns;
+	__u64 sequence;
+};
+
+struct drm_pending_event {
+	struct completion *completion;
+	void (*completion_release)(struct completion *);
+	struct drm_event *event;
+	struct dma_fence *fence;
+	struct drm_file *file_priv;
+	struct list_head link;
+	struct list_head pending_link;
+};
+
+struct drm_pending_vblank_event {
+	struct drm_pending_event base;
+	unsigned int pipe;
+	u64 sequence;
+	union {
+		struct drm_event base;
+		struct drm_event_vblank vbl;
+		struct drm_event_crtc_sequence seq;
+	} event;
+};
+
+struct drm_connector;
+
+struct drm_connector_state;
+
+struct __drm_connnectors_state {
+	struct drm_connector *ptr;
+	struct drm_connector_state *state;
+	struct drm_connector_state *old_state;
+	struct drm_connector_state *new_state;
+	s32 __attribute__((btf_type_tag("user"))) *out_fence_ptr;
+};
+
+struct drm_scrambling {
+	bool supported;
+	bool low_rates;
+};
+
+struct drm_scdc {
+	bool supported;
+	bool read_request;
+	struct drm_scrambling scrambling;
+};
+
+struct drm_hdmi_dsc_cap {
+	bool v_1p2;
+	bool native_420;
+	bool all_bpp;
+	u8 bpc_supported;
+	u8 max_slices;
+	int clk_per_slice;
+	u8 max_lanes;
+	u8 max_frl_rate_per_lane;
+	u8 total_chunk_kbytes;
+};
+
+struct drm_hdmi_info {
+	struct drm_scdc scdc;
+	unsigned long y420_vdb_modes[4];
+	unsigned long y420_cmdb_modes[4];
+	u8 y420_dc_modes;
+	u8 max_frl_rate_per_lane;
+	u8 max_lanes;
+	struct drm_hdmi_dsc_cap dsc_cap;
+};
+
+struct drm_monitor_range_info {
+	u16 min_vfreq;
+	u16 max_vfreq;
+};
+
+struct drm_luminance_range_info {
+	u32 min_luminance;
+	u32 max_luminance;
+};
+
+struct drm_display_info {
+	unsigned int width_mm;
+	unsigned int height_mm;
+	unsigned int bpc;
+	enum subpixel_order subpixel_order;
+	int panel_orientation;
+	u32 color_formats;
+	const u32 *bus_formats;
+	unsigned int num_bus_formats;
+	u32 bus_flags;
+	int max_tmds_clock;
+	bool dvi_dual;
+	bool is_hdmi;
+	bool has_audio;
+	bool has_hdmi_infoframe;
+	bool rgb_quant_range_selectable;
+	u8 edid_hdmi_rgb444_dc_modes;
+	u8 edid_hdmi_ycbcr444_dc_modes;
+	u8 cea_rev;
+	struct drm_hdmi_info hdmi;
+	bool non_desktop;
+	struct drm_monitor_range_info monitor_range;
+	struct drm_luminance_range_info luminance_range;
+	u8 mso_stream_count;
+	u8 mso_pixel_overlap;
+	u32 max_dsc_bpp;
+	u8 *vics;
+	int vics_len;
+	u32 quirks;
+};
+
+struct drm_privacy_screen;
+
+struct drm_connector_tv_margins {
+	unsigned int bottom;
+	unsigned int left;
+	unsigned int right;
+	unsigned int top;
+};
+
+struct drm_cmdline_mode {
+	char name[32];
+	bool specified;
+	bool refresh_specified;
+	bool bpp_specified;
+	unsigned int pixel_clock;
+	int xres;
+	int yres;
+	int bpp;
+	int refresh;
+	bool rb;
+	bool interlace;
+	bool cvt;
+	bool margins;
+	enum drm_connector_force force;
+	unsigned int rotation_reflection;
+	enum drm_panel_orientation panel_orientation;
+	struct drm_connector_tv_margins tv_margins;
+	enum drm_connector_tv_mode tv_mode;
+	bool tv_mode_specified;
+};
+
+struct hdr_static_metadata {
+	__u8 eotf;
+	__u8 metadata_type;
+	__u16 max_cll;
+	__u16 max_fall;
+	__u16 min_cll;
+};
+
+struct hdr_sink_metadata {
+	__u32 metadata_type;
+	union {
+		struct hdr_static_metadata hdmi_type1;
+	};
+};
+
+struct drm_connector_funcs;
+
+struct drm_connector_helper_funcs;
+
+struct drm_edid;
+
+struct drm_encoder;
+
+struct i2c_adapter;
+
+struct drm_tile_group;
+
+struct drm_connector {
+	struct drm_device *dev;
+	struct device *kdev;
+	struct device_attribute *attr;
+	struct fwnode_handle *fwnode;
+	struct list_head head;
+	struct list_head global_connector_list_entry;
+	struct drm_mode_object base;
+	char *name;
+	struct mutex mutex;
+	unsigned int index;
+	int connector_type;
+	int connector_type_id;
+	bool interlace_allowed;
+	bool doublescan_allowed;
+	bool stereo_allowed;
+	bool ycbcr_420_allowed;
+	enum drm_connector_registration_state registration_state;
+	struct list_head modes;
+	enum drm_connector_status status;
+	struct list_head probed_modes;
+	struct drm_display_info display_info;
+	const struct drm_connector_funcs *funcs;
+	struct drm_property_blob *edid_blob_ptr;
+	struct drm_object_properties properties;
+	struct drm_property *scaling_mode_property;
+	struct drm_property *vrr_capable_property;
+	struct drm_property *colorspace_property;
+	struct drm_property_blob *path_blob_ptr;
+	struct drm_property *max_bpc_property;
+	struct drm_privacy_screen *privacy_screen;
+	struct notifier_block privacy_screen_notifier;
+	struct drm_property *privacy_screen_sw_state_property;
+	struct drm_property *privacy_screen_hw_state_property;
+	uint8_t polled;
+	int dpms;
+	const struct drm_connector_helper_funcs *helper_private;
+	struct drm_cmdline_mode cmdline_mode;
+	enum drm_connector_force force;
+	const struct drm_edid *edid_override;
+	struct mutex edid_override_mutex;
+	u64 epoch_counter;
+	u32 possible_encoders;
+	struct drm_encoder *encoder;
+	uint8_t eld[128];
+	bool latency_present[2];
+	int video_latency[2];
+	int audio_latency[2];
+	struct i2c_adapter *ddc;
+	int null_edid_counter;
+	unsigned int bad_edid_counter;
+	bool edid_corrupt;
+	u8 real_edid_checksum;
+	struct dentry *debugfs_entry;
+	struct drm_connector_state *state;
+	struct drm_property_blob *tile_blob_ptr;
+	bool has_tile;
+	struct drm_tile_group *tile_group;
+	bool tile_is_single_monitor;
+	uint8_t num_h_tile;
+	uint8_t num_v_tile;
+	uint8_t tile_h_loc;
+	uint8_t tile_v_loc;
+	uint16_t tile_h_size;
+	uint16_t tile_v_size;
+	struct llist_node free_node;
+	struct hdr_sink_metadata hdr_sink_metadata;
+};
+
+struct drm_connector_funcs {
+	int (*dpms)(struct drm_connector *, int);
+	void (*reset)(struct drm_connector *);
+	enum drm_connector_status (*detect)(struct drm_connector *, bool);
+	void (*force)(struct drm_connector *);
+	int (*fill_modes)(struct drm_connector *, uint32_t, uint32_t);
+	int (*set_property)(struct drm_connector *, struct drm_property *, uint64_t);
+	int (*late_register)(struct drm_connector *);
+	void (*early_unregister)(struct drm_connector *);
+	void (*destroy)(struct drm_connector *);
+	struct drm_connector_state * (*atomic_duplicate_state)(struct drm_connector *);
+	void (*atomic_destroy_state)(struct drm_connector *, struct drm_connector_state *);
+	int (*atomic_set_property)(struct drm_connector *, struct drm_connector_state *, struct drm_property *, uint64_t);
+	int (*atomic_get_property)(struct drm_connector *, const struct drm_connector_state *, struct drm_property *, uint64_t *);
+	void (*atomic_print_state)(struct drm_printer *, const struct drm_connector_state *);
+	void (*oob_hotplug_event)(struct drm_connector *);
+	void (*debugfs_init)(struct drm_connector *, struct dentry *);
+};
+
+struct drm_tv_connector_state {
+	enum drm_mode_subconnector select_subconnector;
+	enum drm_mode_subconnector subconnector;
+	struct drm_connector_tv_margins margins;
+	unsigned int legacy_mode;
+	unsigned int mode;
+	unsigned int brightness;
+	unsigned int contrast;
+	unsigned int flicker_reduction;
+	unsigned int overscan;
+	unsigned int saturation;
+	unsigned int hue;
+};
+
+struct drm_writeback_job;
+
+struct drm_connector_state {
+	struct drm_connector *connector;
+	struct drm_crtc *crtc;
+	struct drm_encoder *best_encoder;
+	enum drm_link_status link_status;
+	struct drm_atomic_state *state;
+	struct drm_crtc_commit *commit;
+	struct drm_tv_connector_state tv;
+	bool self_refresh_aware;
+	enum hdmi_picture_aspect picture_aspect_ratio;
+	unsigned int content_type;
+	unsigned int hdcp_content_type;
+	unsigned int scaling_mode;
+	unsigned int content_protection;
+	enum drm_colorspace colorspace;
+	struct drm_writeback_job *writeback_job;
+	u8 max_requested_bpc;
+	u8 max_bpc;
+	enum drm_privacy_screen_status privacy_screen_sw_state;
+	struct drm_property_blob *hdr_output_metadata;
+};
+
+struct drm_encoder_funcs;
+
+struct drm_encoder_helper_funcs;
+
+struct drm_encoder {
+	struct drm_device *dev;
+	struct list_head head;
+	struct drm_mode_object base;
+	char *name;
+	int encoder_type;
+	unsigned int index;
+	uint32_t possible_crtcs;
+	uint32_t possible_clones;
+	struct drm_crtc *crtc;
+	struct list_head bridge_chain;
+	const struct drm_encoder_funcs *funcs;
+	const struct drm_encoder_helper_funcs *helper_private;
+};
+
+struct drm_encoder_funcs {
+	void (*reset)(struct drm_encoder *);
+	void (*destroy)(struct drm_encoder *);
+	int (*late_register)(struct drm_encoder *);
+	void (*early_unregister)(struct drm_encoder *);
+};
+
+struct drm_encoder_helper_funcs {
+	void (*dpms)(struct drm_encoder *, int);
+	enum drm_mode_status (*mode_valid)(struct drm_encoder *, const struct drm_display_mode *);
+	bool (*mode_fixup)(struct drm_encoder *, const struct drm_display_mode *, struct drm_display_mode *);
+	void (*prepare)(struct drm_encoder *);
+	void (*commit)(struct drm_encoder *);
+	void (*mode_set)(struct drm_encoder *, struct drm_display_mode *, struct drm_display_mode *);
+	void (*atomic_mode_set)(struct drm_encoder *, struct drm_crtc_state *, struct drm_connector_state *);
+	enum drm_connector_status (*detect)(struct drm_encoder *, struct drm_connector *);
+	void (*atomic_disable)(struct drm_encoder *, struct drm_atomic_state *);
+	void (*atomic_enable)(struct drm_encoder *, struct drm_atomic_state *);
+	void (*disable)(struct drm_encoder *);
+	void (*enable)(struct drm_encoder *);
+	int (*atomic_check)(struct drm_encoder *, struct drm_crtc_state *, struct drm_connector_state *);
+};
+
+struct drm_writeback_connector;
+
+struct drm_writeback_job {
+	struct drm_writeback_connector *connector;
+	bool prepared;
+	struct work_struct cleanup_work;
+	struct list_head list_entry;
+	struct drm_framebuffer *fb;
+	struct dma_fence *out_fence;
+	void *priv;
+};
+
+struct drm_writeback_connector {
+	struct drm_connector base;
+	struct drm_encoder encoder;
+	struct drm_property_blob *pixel_formats_blob_ptr;
+	spinlock_t job_lock;
+	struct list_head job_queue;
+	unsigned int fence_context;
+	spinlock_t fence_lock;
+	unsigned long fence_seqno;
+	char timeline_name[32];
+};
+
+struct drm_connector_helper_funcs {
+	int (*get_modes)(struct drm_connector *);
+	int (*detect_ctx)(struct drm_connector *, struct drm_modeset_acquire_ctx *, bool);
+	enum drm_mode_status (*mode_valid)(struct drm_connector *, struct drm_display_mode *);
+	int (*mode_valid_ctx)(struct drm_connector *, struct drm_display_mode *, struct drm_modeset_acquire_ctx *, enum drm_mode_status *);
+	struct drm_encoder * (*best_encoder)(struct drm_connector *);
+	struct drm_encoder * (*atomic_best_encoder)(struct drm_connector *, struct drm_atomic_state *);
+	int (*atomic_check)(struct drm_connector *, struct drm_atomic_state *);
+	void (*atomic_commit)(struct drm_connector *, struct drm_atomic_state *);
+	int (*prepare_writeback_job)(struct drm_writeback_connector *, struct drm_writeback_job *);
+	void (*cleanup_writeback_job)(struct drm_writeback_connector *, struct drm_writeback_job *);
+	void (*enable_hpd)(struct drm_connector *);
+	void (*disable_hpd)(struct drm_connector *);
+};
+
+struct edid;
+
+struct drm_edid {
+	size_t size;
+	const struct edid *edid;
+};
+
+struct drm_tile_group {
+	struct kref refcount;
+	struct drm_device *dev;
+	int id;
+	u8 group_data[8];
+};
+
+struct drm_private_obj;
+
+struct drm_private_state;
+
+struct __drm_private_objs_state {
+	struct drm_private_obj *ptr;
+	struct drm_private_state *state;
+	struct drm_private_state *old_state;
+	struct drm_private_state *new_state;
+};
+
+struct drm_private_state_funcs;
+
+struct drm_private_obj {
+	struct list_head head;
+	struct drm_modeset_lock lock;
+	struct drm_private_state *state;
+	const struct drm_private_state_funcs *funcs;
+};
+
+struct drm_private_state {
+	struct drm_atomic_state *state;
+	struct drm_private_obj *obj;
+};
+
+struct drm_private_state_funcs {
+	struct drm_private_state * (*atomic_duplicate_state)(struct drm_private_obj *);
+	void (*atomic_destroy_state)(struct drm_private_obj *, struct drm_private_state *);
+	void (*atomic_print_state)(struct drm_printer *, const struct drm_private_state *);
+};
+
+struct drm_vma_offset_manager {
+	rwlock_t vm_lock;
+	struct drm_mm vm_addr_space_mm;
+};
+
+struct drm_mode_set;
+
+struct drm_crtc_funcs {
+	void (*reset)(struct drm_crtc *);
+	int (*cursor_set)(struct drm_crtc *, struct drm_file *, uint32_t, uint32_t, uint32_t);
+	int (*cursor_set2)(struct drm_crtc *, struct drm_file *, uint32_t, uint32_t, uint32_t, int32_t, int32_t);
+	int (*cursor_move)(struct drm_crtc *, int, int);
+	int (*gamma_set)(struct drm_crtc *, u16 *, u16 *, u16 *, uint32_t, struct drm_modeset_acquire_ctx *);
+	void (*destroy)(struct drm_crtc *);
+	int (*set_config)(struct drm_mode_set *, struct drm_modeset_acquire_ctx *);
+	int (*page_flip)(struct drm_crtc *, struct drm_framebuffer *, struct drm_pending_vblank_event *, uint32_t, struct drm_modeset_acquire_ctx *);
+	int (*page_flip_target)(struct drm_crtc *, struct drm_framebuffer *, struct drm_pending_vblank_event *, uint32_t, uint32_t, struct drm_modeset_acquire_ctx *);
+	int (*set_property)(struct drm_crtc *, struct drm_property *, uint64_t);
+	struct drm_crtc_state * (*atomic_duplicate_state)(struct drm_crtc *);
+	void (*atomic_destroy_state)(struct drm_crtc *, struct drm_crtc_state *);
+	int (*atomic_set_property)(struct drm_crtc *, struct drm_crtc_state *, struct drm_property *, uint64_t);
+	int (*atomic_get_property)(struct drm_crtc *, const struct drm_crtc_state *, struct drm_property *, uint64_t *);
+	int (*late_register)(struct drm_crtc *);
+	void (*early_unregister)(struct drm_crtc *);
+	int (*set_crc_source)(struct drm_crtc *, const char *);
+	int (*verify_crc_source)(struct drm_crtc *, const char *, size_t *);
+	const char * const * (*get_crc_sources)(struct drm_crtc *, size_t *);
+	void (*atomic_print_state)(struct drm_printer *, const struct drm_crtc_state *);
+	u32 (*get_vblank_counter)(struct drm_crtc *);
+	int (*enable_vblank)(struct drm_crtc *);
+	void (*disable_vblank)(struct drm_crtc *);
+	bool (*get_vblank_timestamp)(struct drm_crtc *, int *, ktime_t *, bool);
+};
+
+struct drm_mode_set {
+	struct drm_framebuffer *fb;
+	struct drm_crtc *crtc;
+	struct drm_display_mode *mode;
+	uint32_t x;
+	uint32_t y;
+	struct drm_connector **connectors;
+	size_t num_connectors;
+};
+
+enum mode_set_atomic {
+	LEAVE_ATOMIC_MODE_SET = 0,
+	ENTER_ATOMIC_MODE_SET = 1,
+};
+
+struct drm_crtc_helper_funcs {
+	void (*dpms)(struct drm_crtc *, int);
+	void (*prepare)(struct drm_crtc *);
+	void (*commit)(struct drm_crtc *);
+	enum drm_mode_status (*mode_valid)(struct drm_crtc *, const struct drm_display_mode *);
+	bool (*mode_fixup)(struct drm_crtc *, const struct drm_display_mode *, struct drm_display_mode *);
+	int (*mode_set)(struct drm_crtc *, struct drm_display_mode *, struct drm_display_mode *, int, int, struct drm_framebuffer *);
+	void (*mode_set_nofb)(struct drm_crtc *);
+	int (*mode_set_base)(struct drm_crtc *, int, int, struct drm_framebuffer *);
+	int (*mode_set_base_atomic)(struct drm_crtc *, struct drm_framebuffer *, int, int, enum mode_set_atomic);
+	void (*disable)(struct drm_crtc *);
+	int (*atomic_check)(struct drm_crtc *, struct drm_atomic_state *);
+	void (*atomic_begin)(struct drm_crtc *, struct drm_atomic_state *);
+	void (*atomic_flush)(struct drm_crtc *, struct drm_atomic_state *);
+	void (*atomic_enable)(struct drm_crtc *, struct drm_atomic_state *);
+	void (*atomic_disable)(struct drm_crtc *, struct drm_atomic_state *);
+	bool (*get_scanout_position)(struct drm_crtc *, bool, int *, int *, ktime_t *, ktime_t *, const struct drm_display_mode *);
+};
+
+struct drm_crtc_crc_entry {
+	bool has_frame_counter;
+	uint32_t frame;
+	uint32_t crcs[10];
+};
+
+struct drm_bridge_timings;
+
+struct drm_bridge_funcs;
+
+struct drm_bridge {
+	struct drm_private_obj base;
+	struct drm_device *dev;
+	struct drm_encoder *encoder;
+	struct list_head chain_node;
+	struct device_node *of_node;
+	struct list_head list;
+	const struct drm_bridge_timings *timings;
+	const struct drm_bridge_funcs *funcs;
+	void *driver_private;
+	enum drm_bridge_ops ops;
+	int type;
+	bool interlace_allowed;
+	bool pre_enable_prev_first;
+	struct i2c_adapter *ddc;
+	struct mutex hpd_mutex;
+	void (*hpd_cb)(void *, enum drm_connector_status);
+	void *hpd_data;
+};
+
+struct drm_bridge_timings {
+	u32 input_bus_flags;
+	u32 setup_time_ps;
+	u32 hold_time_ps;
+	bool dual_link;
+};
+
+struct drm_bridge_state;
+
+struct drm_bridge_funcs {
+	int (*attach)(struct drm_bridge *, enum drm_bridge_attach_flags);
+	void (*detach)(struct drm_bridge *);
+	enum drm_mode_status (*mode_valid)(struct drm_bridge *, const struct drm_display_info *, const struct drm_display_mode *);
+	bool (*mode_fixup)(struct drm_bridge *, const struct drm_display_mode *, struct drm_display_mode *);
+	void (*disable)(struct drm_bridge *);
+	void (*post_disable)(struct drm_bridge *);
+	void (*mode_set)(struct drm_bridge *, const struct drm_display_mode *, const struct drm_display_mode *);
+	void (*pre_enable)(struct drm_bridge *);
+	void (*enable)(struct drm_bridge *);
+	void (*atomic_pre_enable)(struct drm_bridge *, struct drm_bridge_state *);
+	void (*atomic_enable)(struct drm_bridge *, struct drm_bridge_state *);
+	void (*atomic_disable)(struct drm_bridge *, struct drm_bridge_state *);
+	void (*atomic_post_disable)(struct drm_bridge *, struct drm_bridge_state *);
+	struct drm_bridge_state * (*atomic_duplicate_state)(struct drm_bridge *);
+	void (*atomic_destroy_state)(struct drm_bridge *, struct drm_bridge_state *);
+	u32 * (*atomic_get_output_bus_fmts)(struct drm_bridge *, struct drm_bridge_state *, struct drm_crtc_state *, struct drm_connector_state *, unsigned int *);
+	u32 * (*atomic_get_input_bus_fmts)(struct drm_bridge *, struct drm_bridge_state *, struct drm_crtc_state *, struct drm_connector_state *, u32, unsigned int *);
+	int (*atomic_check)(struct drm_bridge *, struct drm_bridge_state *, struct drm_crtc_state *, struct drm_connector_state *);
+	struct drm_bridge_state * (*atomic_reset)(struct drm_bridge *);
+	enum drm_connector_status (*detect)(struct drm_bridge *);
+	int (*get_modes)(struct drm_bridge *, struct drm_connector *);
+	const struct drm_edid * (*edid_read)(struct drm_bridge *, struct drm_connector *);
+	struct edid * (*get_edid)(struct drm_bridge *, struct drm_connector *);
+	void (*hpd_notify)(struct drm_bridge *, enum drm_connector_status);
+	void (*hpd_enable)(struct drm_bridge *);
+	void (*hpd_disable)(struct drm_bridge *);
+	void (*debugfs_init)(struct drm_bridge *, struct dentry *);
+};
+
+struct drm_bus_cfg {
+	u32 format;
+	u32 flags;
+};
+
+struct drm_bridge_state {
+	struct drm_private_state base;
+	struct drm_bridge *bridge;
+	struct drm_bus_cfg input_bus_cfg;
+	struct drm_bus_cfg output_bus_cfg;
+};
+
+struct drm_connector_list_iter {
+	struct drm_device *dev;
+	struct drm_connector *conn;
+};
+
+struct drm_mode_rect {
+	__s32 x1;
+	__s32 y1;
+	__s32 x2;
+	__s32 y2;
+};
+
+struct drm_debugfs_entry {
+	struct drm_device *dev;
+	struct drm_debugfs_info file;
+	struct list_head list;
+};
+
+struct drm_mode_modeinfo {
+	__u32 clock;
+	__u16 hdisplay;
+	__u16 hsync_start;
+	__u16 hsync_end;
+	__u16 htotal;
+	__u16 hskew;
+	__u16 vdisplay;
+	__u16 vsync_start;
+	__u16 vsync_end;
+	__u16 vtotal;
+	__u16 vscan;
+	__u32 vrefresh;
+	__u32 flags;
+	__u32 type;
+	char name[32];
+};
+
+struct sync_file;
+
+struct drm_out_fence_state {
+	s32 __attribute__((btf_type_tag("user"))) *out_fence_ptr;
+	struct sync_file *sync_file;
+	int fd;
+};
+
+struct dma_fence_cb;
+
+typedef void (*dma_fence_func_t)(struct dma_fence *, struct dma_fence_cb *);
+
+struct dma_fence_cb {
+	struct list_head node;
+	dma_fence_func_t func;
+};
+
+struct sync_file {
+	struct file *file;
+	char user_name[32];
+	struct list_head sync_file_list;
+	wait_queue_head_t wq;
+	unsigned long flags;
+	struct dma_fence *fence;
+	struct dma_fence_cb cb;
+};
+
+struct drm_mode_atomic {
+	__u32 flags;
+	__u32 count_objs;
+	__u64 objs_ptr;
+	__u64 count_props_ptr;
+	__u64 props_ptr;
+	__u64 prop_values_ptr;
+	__u64 reserved;
+	__u64 user_data;
+};
+
+struct drm_auth {
+	drm_magic_t magic;
+};
+
+struct drm_prop_enum_list {
+	int type;
+	const char *name;
+};
+
+struct est_timings {
+	u8 t1;
+	u8 t2;
+	u8 mfg_rsvd;
+};
+
+struct std_timing {
+	u8 hsize;
+	u8 vfreq_aspect;
+};
+
+struct detailed_pixel_timing {
+	u8 hactive_lo;
+	u8 hblank_lo;
+	u8 hactive_hblank_hi;
+	u8 vactive_lo;
+	u8 vblank_lo;
+	u8 vactive_vblank_hi;
+	u8 hsync_offset_lo;
+	u8 hsync_pulse_width_lo;
+	u8 vsync_offset_pulse_width_lo;
+	u8 hsync_vsync_offset_pulse_width_hi;
+	u8 width_mm_lo;
+	u8 height_mm_lo;
+	u8 width_height_mm_hi;
+	u8 hborder;
+	u8 vborder;
+	u8 misc;
+};
+
+struct detailed_data_string {
+	u8 str[13];
+};
+
+struct detailed_data_monitor_range {
+	u8 min_vfreq;
+	u8 max_vfreq;
+	u8 min_hfreq_khz;
+	u8 max_hfreq_khz;
+	u8 pixel_clock_mhz;
+	u8 flags;
+	union {
+		struct {
+			u8 reserved;
+			u8 hfreq_start_khz;
+			u8 c;
+			__le16 m;
+			u8 k;
+			u8 j;
+		} __attribute__((packed)) gtf2;
+		struct {
+			u8 version;
+			u8 data1;
+			u8 data2;
+			u8 supported_aspects;
+			u8 flags;
+			u8 supported_scalings;
+			u8 preferred_refresh;
+		} cvt;
+	} formula;
+};
+
+struct detailed_data_wpindex {
+	u8 white_yx_lo;
+	u8 white_x_hi;
+	u8 white_y_hi;
+	u8 gamma;
+};
+
+struct cvt_timing {
+	u8 code[3];
+};
+
+struct detailed_non_pixel {
+	u8 pad1;
+	u8 type;
+	u8 pad2;
+	union {
+		struct detailed_data_string str;
+		struct detailed_data_monitor_range range;
+		struct detailed_data_wpindex color;
+		struct std_timing timings[6];
+		struct cvt_timing cvt[4];
+	} data;
+};
+
+struct detailed_timing {
+	__le16 pixel_clock;
+	union {
+		struct detailed_pixel_timing pixel_data;
+		struct detailed_non_pixel other_data;
+	} data;
+};
+
+struct edid {
+	u8 header[8];
+	u8 mfg_id[2];
+	u8 prod_code[2];
+	u32 serial;
+	u8 mfg_week;
+	u8 mfg_year;
+	u8 version;
+	u8 revision;
+	u8 input;
+	u8 width_cm;
+	u8 height_cm;
+	u8 gamma;
+	u8 features;
+	u8 red_green_lo;
+	u8 blue_white_lo;
+	u8 red_x;
+	u8 red_y;
+	u8 green_x;
+	u8 green_y;
+	u8 blue_x;
+	u8 blue_y;
+	u8 white_x;
+	u8 white_y;
+	struct est_timings established_timings;
+	struct std_timing standard_timings[8];
+	struct detailed_timing detailed_timings[4];
+	u8 extensions;
+	u8 checksum;
+};
+
+struct iosys_map {
+	union {
+		void *vaddr_iomem;
+		void *vaddr;
+	};
+	bool is_iomem;
+};
+
+struct drm_client_funcs;
+
+struct drm_client_dev {
+	struct drm_device *dev;
+	const char *name;
+	struct list_head list;
+	const struct drm_client_funcs *funcs;
+	struct drm_file *file;
+	struct mutex modeset_mutex;
+	struct drm_mode_set *modesets;
+	bool hotplug_failed;
+};
+
+struct drm_client_funcs {
+	struct module *owner;
+	void (*unregister)(struct drm_client_dev *);
+	int (*restore)(struct drm_client_dev *);
+	int (*hotplug)(struct drm_client_dev *);
+};
+
+struct drm_client_buffer {
+	struct drm_client_dev *client;
+	u32 pitch;
+	struct drm_gem_object *gem;
+	struct iosys_map map;
+	struct drm_framebuffer *fb;
+};
+
+struct drm_mode_fb_cmd {
+	__u32 fb_id;
+	__u32 width;
+	__u32 height;
+	__u32 pitch;
+	__u32 bpp;
+	__u32 depth;
+	__u32 handle;
+};
+
+struct drm_client_offset {
+	int x;
+	int y;
+};
+
+enum drm_color_lut_tests {
+	DRM_COLOR_LUT_EQUAL_CHANNELS = 1,
+	DRM_COLOR_LUT_NON_DECREASING = 2,
+};
+
+struct drm_color_lut {
+	__u16 red;
+	__u16 green;
+	__u16 blue;
+	__u16 reserved;
+};
+
+struct drm_mode_crtc_lut {
+	__u32 crtc_id;
+	__u32 gamma_size;
+	__u64 red;
+	__u64 green;
+	__u64 blue;
+};
+
+struct drm_conn_prop_enum_list {
+	int type;
+	const char *name;
+	struct ida ida;
+};
+
+typedef void (*drmres_release_t)(struct drm_device *, void *);
+
+struct drm_panel_funcs;
+
+struct drm_panel {
+	struct device *dev;
+	struct backlight_device *backlight;
+	const struct drm_panel_funcs *funcs;
+	int connector_type;
+	struct list_head list;
+	struct list_head followers;
+	struct mutex follower_lock;
+	bool prepare_prev_first;
+	bool prepared;
+	bool enabled;
+};
+
+struct drm_panel_funcs {
+	int (*prepare)(struct drm_panel *);
+	int (*enable)(struct drm_panel *);
+	int (*disable)(struct drm_panel *);
+	int (*unprepare)(struct drm_panel *);
+	int (*get_modes)(struct drm_panel *, struct drm_connector *);
+	enum drm_panel_orientation (*get_orientation)(struct drm_panel *);
+	int (*get_timings)(struct drm_panel *, unsigned int, struct display_timing *);
+	void (*debugfs_init)(struct drm_panel *, struct dentry *);
+};
+
+struct drm_mode_obj_set_property {
+	__u64 value;
+	__u32 prop_id;
+	__u32 obj_id;
+	__u32 obj_type;
+};
+
+struct drm_mode_connector_set_property {
+	__u64 value;
+	__u32 prop_id;
+	__u32 connector_id;
+};
+
+struct drm_mode_get_connector {
+	__u64 encoders_ptr;
+	__u64 modes_ptr;
+	__u64 props_ptr;
+	__u64 prop_values_ptr;
+	__u32 count_modes;
+	__u32 count_props;
+	__u32 count_encoders;
+	__u32 encoder_id;
+	__u32 connector_id;
+	__u32 connector_type;
+	__u32 connector_type_id;
+	__u32 connection;
+	__u32 mm_width;
+	__u32 mm_height;
+	__u32 subpixel;
+	__u32 pad;
+};
+
+struct drm_mode_crtc {
+	__u64 set_connectors_ptr;
+	__u32 count_connectors;
+	__u32 crtc_id;
+	__u32 fb_id;
+	__u32 x;
+	__u32 y;
+	__u32 gamma_size;
+	__u32 mode_valid;
+	struct drm_mode_modeinfo mode;
+};
+
+struct displayid_block {
+	u8 tag;
+	u8 rev;
+	u8 num_bytes;
+};
+
+struct displayid_header {
+	u8 rev;
+	u8 bytes;
+	u8 prod_id;
+	u8 ext_count;
+};
+
+struct displayid_iter {
+	const struct drm_edid *drm_edid;
+	const u8 *section;
+	int length;
+	int idx;
+	int ext_index;
+	u8 version;
+	u8 primary_use;
+};
+
+enum drm_minor_type {
+	DRM_MINOR_PRIMARY = 0,
+	DRM_MINOR_CONTROL = 1,
+	DRM_MINOR_RENDER = 2,
+	DRM_MINOR_ACCEL = 32,
+};
+
+struct drm_mode_map_dumb {
+	__u32 handle;
+	__u32 pad;
+	__u64 offset;
+};
+
+struct drm_mode_destroy_dumb {
+	__u32 handle;
+};
+
+struct edid_quirk {
+	u32 panel_id;
+	u32 quirks;
+};
+
+struct minimode {
+	short w;
+	short h;
+	short r;
+	short rb;
+};
+
+struct stereo_mandatory_mode {
+	int width;
+	int height;
+	int vrefresh;
+	unsigned int flags;
+};
+
+enum edid_block_status {
+	EDID_BLOCK_OK = 0,
+	EDID_BLOCK_READ_FAIL = 1,
+	EDID_BLOCK_NULL = 2,
+	EDID_BLOCK_ZERO = 3,
+	EDID_BLOCK_HEADER_CORRUPT = 4,
+	EDID_BLOCK_HEADER_REPAIR = 5,
+	EDID_BLOCK_HEADER_FIXED = 6,
+	EDID_BLOCK_CHECKSUM = 7,
+	EDID_BLOCK_VERSION = 8,
+};
+
+struct cea_db {
+	u8 tag_length;
+	u8 data[0];
+};
+
+struct displayid_vesa_vendor_specific_block {
+	struct displayid_block base;
+	u8 oui[3];
+	u8 data_structure_type;
+	u8 mso;
+};
+
+struct displayid_detailed_timings_1 {
+	u8 pixel_clock[3];
+	u8 flags;
+	u8 hactive[2];
+	u8 hblank[2];
+	u8 hsync[2];
+	u8 hsw[2];
+	u8 vactive[2];
+	u8 vblank[2];
+	u8 vsync[2];
+	u8 vsw[2];
+};
+
+struct displayid_detailed_timing_block {
+	struct displayid_block base;
+	struct displayid_detailed_timings_1 timings[0];
+};
+
+struct displayid_tiled_block {
+	struct displayid_block base;
+	u8 tile_cap;
+	u8 topo[3];
+	u8 tile_size[4];
+	u8 tile_pixel_bezel[5];
+	u8 topology_id[8];
+};
+
+struct i2c_algorithm;
+
+struct i2c_lock_operations;
+
+struct i2c_bus_recovery_info;
+
+struct i2c_adapter_quirks;
+
+struct i2c_adapter {
+	struct module *owner;
+	unsigned int class;
+	const struct i2c_algorithm *algo;
+	void *algo_data;
+	const struct i2c_lock_operations *lock_ops;
+	struct rt_mutex bus_lock;
+	struct rt_mutex mux_lock;
+	int timeout;
+	int retries;
+	struct device dev;
+	unsigned long locked_flags;
+	int nr;
+	char name[48];
+	struct completion dev_released;
+	struct mutex userspace_clients_lock;
+	struct list_head userspace_clients;
+	struct i2c_bus_recovery_info *bus_recovery_info;
+	const struct i2c_adapter_quirks *quirks;
+	struct irq_domain *host_notify_domain;
+	struct regulator *bus_regulator;
+};
+
+struct i2c_msg;
+
+union i2c_smbus_data;
+
+struct i2c_algorithm {
+	int (*master_xfer)(struct i2c_adapter *, struct i2c_msg *, int);
+	int (*master_xfer_atomic)(struct i2c_adapter *, struct i2c_msg *, int);
+	int (*smbus_xfer)(struct i2c_adapter *, u16, unsigned short, char, u8, int, union i2c_smbus_data *);
+	int (*smbus_xfer_atomic)(struct i2c_adapter *, u16, unsigned short, char, u8, int, union i2c_smbus_data *);
+	u32 (*functionality)(struct i2c_adapter *);
+};
+
+struct i2c_msg {
+	__u16 addr;
+	__u16 flags;
+	__u16 len;
+	__u8 *buf;
+};
+
+union i2c_smbus_data {
+	__u8 byte;
+	__u16 word;
+	__u8 block[34];
+};
+
+struct i2c_lock_operations {
+	void (*lock_bus)(struct i2c_adapter *, unsigned int);
+	int (*trylock_bus)(struct i2c_adapter *, unsigned int);
+	void (*unlock_bus)(struct i2c_adapter *, unsigned int);
+};
+
+struct pinctrl;
+
+struct pinctrl_state;
+
+struct i2c_bus_recovery_info {
+	int (*recover_bus)(struct i2c_adapter *);
+	int (*get_scl)(struct i2c_adapter *);
+	void (*set_scl)(struct i2c_adapter *, int);
+	int (*get_sda)(struct i2c_adapter *);
+	void (*set_sda)(struct i2c_adapter *, int);
+	int (*get_bus_free)(struct i2c_adapter *);
+	void (*prepare_recovery)(struct i2c_adapter *);
+	void (*unprepare_recovery)(struct i2c_adapter *);
+	struct gpio_desc *scl_gpiod;
+	struct gpio_desc *sda_gpiod;
+	struct pinctrl *pinctrl;
+	struct pinctrl_state *pins_default;
+	struct pinctrl_state *pins_gpio;
+};
+
+struct i2c_adapter_quirks {
+	u64 flags;
+	int max_num_msgs;
+	u16 max_write_len;
+	u16 max_read_len;
+	u16 max_comb_1st_msg_len;
+	u16 max_comb_2nd_msg_len;
+};
+
+typedef void detailed_cb(const struct detailed_timing *, void *);
+
+struct drm_edid_iter {
+	const struct drm_edid *drm_edid;
+	int index;
+};
+
+struct cea_db_iter {
+	struct drm_edid_iter edid_iter;
+	struct displayid_iter displayid_iter;
+	const u8 *collection;
+	int index;
+	int end;
+};
+
+struct cea_sad {
+	u8 format;
+	u8 channels;
+	u8 freq;
+	u8 byte2;
+};
+
+struct detailed_mode_closure {
+	struct drm_connector *connector;
+	const struct drm_edid *drm_edid;
+	bool preferred;
+	int modes;
+};
+
+typedef int read_block_fn(void *, u8 *, unsigned int, size_t);
+
+struct drm_mode_get_encoder {
+	__u32 encoder_id;
+	__u32 encoder_type;
+	__u32 crtc_id;
+	__u32 possible_crtcs;
+	__u32 possible_clones;
+};
+
+enum dma_resv_usage {
+	DMA_RESV_USAGE_KERNEL = 0,
+	DMA_RESV_USAGE_WRITE = 1,
+	DMA_RESV_USAGE_READ = 2,
+	DMA_RESV_USAGE_BOOKKEEP = 3,
+};
+
+struct drm_memory_stats {
+	u64 shared;
+	u64 private;
+	u64 resident;
+	u64 purgeable;
+	u64 active;
+};
+
+struct drm_mode_rmfb_work {
+	struct work_struct work;
+	struct list_head fbs;
+};
+
+struct drm_mode_fb_dirty_cmd {
+	__u32 fb_id;
+	__u32 flags;
+	__u32 color;
+	__u32 num_clips;
+	__u64 clips_ptr;
+};
+
+struct dma_buf_poll_cb_t {
+	struct dma_fence_cb cb;
+	wait_queue_head_t *poll;
+	__poll_t active;
+};
+
+struct dma_buf_ops;
+
+struct dma_buf_sysfs_entry;
+
+struct dma_buf {
+	size_t size;
+	struct file *file;
+	struct list_head attachments;
+	const struct dma_buf_ops *ops;
+	unsigned int vmapping_counter;
+	struct iosys_map vmap_ptr;
+	const char *exp_name;
+	const char *name;
+	spinlock_t name_lock;
+	struct module *owner;
+	struct list_head list_node;
+	void *priv;
+	struct dma_resv *resv;
+	wait_queue_head_t poll;
+	struct dma_buf_poll_cb_t cb_in;
+	struct dma_buf_poll_cb_t cb_out;
+	struct dma_buf_sysfs_entry *sysfs_entry;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct dma_buf_ops {
+	bool cache_sgt_mapping;
+	int (*attach)(struct dma_buf *, struct dma_buf_attachment *);
+	void (*detach)(struct dma_buf *, struct dma_buf_attachment *);
+	int (*pin)(struct dma_buf_attachment *);
+	void (*unpin)(struct dma_buf_attachment *);
+	struct sg_table * (*map_dma_buf)(struct dma_buf_attachment *, enum dma_data_direction);
+	void (*unmap_dma_buf)(struct dma_buf_attachment *, struct sg_table *, enum dma_data_direction);
+	void (*release)(struct dma_buf *);
+	int (*begin_cpu_access)(struct dma_buf *, enum dma_data_direction);
+	int (*begin_cpu_access_partial)(struct dma_buf *, enum dma_data_direction, unsigned int, unsigned int);
+	int (*end_cpu_access)(struct dma_buf *, enum dma_data_direction);
+	int (*end_cpu_access_partial)(struct dma_buf *, enum dma_data_direction, unsigned int, unsigned int);
+	int (*mmap)(struct dma_buf *, struct vm_area_struct *);
+	int (*vmap)(struct dma_buf *, struct iosys_map *);
+	void (*vunmap)(struct dma_buf *, struct iosys_map *);
+	int (*get_flags)(struct dma_buf *, unsigned long *);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct dma_buf_attach_ops;
+
+struct dma_buf_attachment {
+	struct dma_buf *dmabuf;
+	struct device *dev;
+	struct list_head node;
+	struct sg_table *sgt;
+	enum dma_data_direction dir;
+	bool peer2peer;
+	const struct dma_buf_attach_ops *importer_ops;
+	void *importer_priv;
+	void *priv;
+	unsigned long dma_map_attrs;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct dma_buf_attach_ops {
+	bool allow_peer2peer;
+	void (*move_notify)(struct dma_buf_attachment *);
+	u64 android_kabi_reserved1;
+};
+
+struct dma_buf_sysfs_entry {
+	union {
+		struct kobject kobj;
+		struct work_struct sysfs_add_work;
+	};
+	struct dma_buf *dmabuf;
+};
+
+struct drm_gem_close {
+	__u32 handle;
+	__u32 pad;
+};
+
+struct drm_gem_flink {
+	__u32 handle;
+	__u32 name;
+};
+
+struct drm_gem_open {
+	__u32 name;
+	__u32 handle;
+	__u64 size;
+};
+
+enum drm_stat_type {
+	_DRM_STAT_LOCK = 0,
+	_DRM_STAT_OPENS = 1,
+	_DRM_STAT_CLOSES = 2,
+	_DRM_STAT_IOCTLS = 3,
+	_DRM_STAT_LOCKS = 4,
+	_DRM_STAT_UNLOCKS = 5,
+	_DRM_STAT_VALUE = 6,
+	_DRM_STAT_BYTE = 7,
+	_DRM_STAT_COUNT = 8,
+	_DRM_STAT_IRQ = 9,
+	_DRM_STAT_PRIMARY = 10,
+	_DRM_STAT_SECONDARY = 11,
+	_DRM_STAT_DMA = 12,
+	_DRM_STAT_SPECIAL = 13,
+	_DRM_STAT_MISSED = 14,
+};
+
+struct drm_unique {
+	__kernel_size_t unique_len;
+	char __attribute__((btf_type_tag("user"))) *unique;
+};
+
+struct drm_client {
+	int idx;
+	int auth;
+	unsigned long pid;
+	unsigned long uid;
+	unsigned long magic;
+	unsigned long iocs;
+};
+
+struct drm_version {
+	int version_major;
+	int version_minor;
+	int version_patchlevel;
+	__kernel_size_t name_len;
+	char __attribute__((btf_type_tag("user"))) *name;
+	__kernel_size_t date_len;
+	char __attribute__((btf_type_tag("user"))) *date;
+	__kernel_size_t desc_len;
+	char __attribute__((btf_type_tag("user"))) *desc;
+};
+
+struct drm_stats {
+	unsigned long count;
+	struct {
+		unsigned long value;
+		enum drm_stat_type type;
+	} data[15];
+};
+
+struct drm_set_version {
+	int drm_di_major;
+	int drm_di_minor;
+	int drm_dd_major;
+	int drm_dd_minor;
+};
+
+struct drm_get_cap {
+	__u64 capability;
+	__u64 value;
+};
+
+struct drm_set_client_cap {
+	__u64 capability;
+	__u64 value;
+};
+
+struct drm_mode_create_lease {
+	__u64 object_ids;
+	__u32 object_count;
+	__u32 flags;
+	__u32 lessee_id;
+	__u32 fd;
+};
+
+struct drm_mode_list_lessees {
+	__u32 count_lessees;
+	__u32 pad;
+	__u64 lessees_ptr;
+};
+
+struct drm_mode_get_lease {
+	__u32 count_objects;
+	__u32 pad;
+	__u64 objects_ptr;
+};
+
+struct drm_mode_revoke_lease {
+	__u32 lessee_id;
+};
+
+struct drmres_node {
+	struct list_head entry;
+	drmres_release_t release;
+	const char *name;
+	size_t size;
+};
+
+struct drmres {
+	struct drmres_node node;
+	u8 data[0];
+};
+
+enum drm_mm_insert_mode {
+	DRM_MM_INSERT_BEST = 0,
+	DRM_MM_INSERT_LOW = 1,
+	DRM_MM_INSERT_HIGH = 2,
+	DRM_MM_INSERT_EVICT = 3,
+	DRM_MM_INSERT_ONCE = 2147483648,
+	DRM_MM_INSERT_HIGHEST = 2147483650,
+	DRM_MM_INSERT_LOWEST = 2147483649,
+};
+
+struct drm_mm_scan {
+	struct drm_mm *mm;
+	u64 size;
+	u64 alignment;
+	u64 remainder_mask;
+	u64 range_start;
+	u64 range_end;
+	u64 hit_start;
+	u64 hit_end;
+	unsigned long color;
+	enum drm_mm_insert_mode mode;
+};
+
+struct drm_mode_card_res {
+	__u64 fb_id_ptr;
+	__u64 crtc_id_ptr;
+	__u64 connector_id_ptr;
+	__u64 encoder_id_ptr;
+	__u32 count_fbs;
+	__u32 count_crtcs;
+	__u32 count_connectors;
+	__u32 count_encoders;
+	__u32 min_width;
+	__u32 max_width;
+	__u32 min_height;
+	__u32 max_height;
+};
+
+struct drm_mode_obj_get_properties {
+	__u64 props_ptr;
+	__u64 prop_values_ptr;
+	__u32 count_props;
+	__u32 obj_id;
+	__u32 obj_type;
+};
+
+struct analog_param_range {
+	unsigned int min;
+	unsigned int typ;
+	unsigned int max;
+};
+
+struct analog_param_field {
+	unsigned int even;
+	unsigned int odd;
+};
+
+struct analog_parameters {
+	unsigned int num_lines;
+	unsigned int line_duration_ns;
+	struct analog_param_range hact_ns;
+	struct analog_param_range hfp_ns;
+	struct analog_param_range hslen_ns;
+	struct analog_param_range hbp_ns;
+	struct analog_param_range hblk_ns;
+	unsigned int bt601_hfp;
+	struct analog_param_field vfp_lines;
+	struct analog_param_field vslen_lines;
+	struct analog_param_field vbp_lines;
+};
+
+struct drm_named_mode {
+	const char *name;
+	unsigned int pixel_clock_khz;
+	unsigned int xres;
+	unsigned int yres;
+	unsigned int flags;
+	unsigned int tv_mode;
+};
+
+enum drm_mode_analog {
+	DRM_MODE_ANALOG_NTSC = 0,
+	DRM_MODE_ANALOG_PAL = 1,
+};
+
+enum drm_bus_flags {
+	DRM_BUS_FLAG_DE_LOW = 1,
+	DRM_BUS_FLAG_DE_HIGH = 2,
+	DRM_BUS_FLAG_PIXDATA_DRIVE_POSEDGE = 4,
+	DRM_BUS_FLAG_PIXDATA_DRIVE_NEGEDGE = 8,
+	DRM_BUS_FLAG_PIXDATA_SAMPLE_POSEDGE = 8,
+	DRM_BUS_FLAG_PIXDATA_SAMPLE_NEGEDGE = 4,
+	DRM_BUS_FLAG_DATA_MSB_TO_LSB = 16,
+	DRM_BUS_FLAG_DATA_LSB_TO_MSB = 32,
+	DRM_BUS_FLAG_SYNC_DRIVE_POSEDGE = 64,
+	DRM_BUS_FLAG_SYNC_DRIVE_NEGEDGE = 128,
+	DRM_BUS_FLAG_SYNC_SAMPLE_POSEDGE = 128,
+	DRM_BUS_FLAG_SYNC_SAMPLE_NEGEDGE = 64,
+	DRM_BUS_FLAG_SHARP_SIGNALS = 256,
+};
+
+struct drm_format_modifier {
+	__u64 formats;
+	__u32 offset;
+	__u32 pad;
+	__u64 modifier;
+};
+
+struct drm_format_modifier_blob {
+	__u32 version;
+	__u32 flags;
+	__u32 count_formats;
+	__u32 formats_offset;
+	__u32 count_modifiers;
+	__u32 modifiers_offset;
+};
+
+struct drm_mode_cursor2 {
+	__u32 flags;
+	__u32 crtc_id;
+	__s32 x;
+	__s32 y;
+	__u32 width;
+	__u32 height;
+	__u32 handle;
+	__s32 hot_x;
+	__s32 hot_y;
+};
+
+struct drm_mode_get_plane_res {
+	__u64 plane_id_ptr;
+	__u32 count_planes;
+};
+
+struct drm_mode_get_plane {
+	__u32 plane_id;
+	__u32 crtc_id;
+	__u32 fb_id;
+	__u32 possible_crtcs;
+	__u32 gamma_size;
+	__u32 count_format_types;
+	__u64 format_type_ptr;
+};
+
+struct drm_mode_set_plane {
+	__u32 plane_id;
+	__u32 crtc_id;
+	__u32 fb_id;
+	__u32 flags;
+	__s32 crtc_x;
+	__s32 crtc_y;
+	__u32 crtc_w;
+	__u32 crtc_h;
+	__u32 src_x;
+	__u32 src_y;
+	__u32 src_h;
+	__u32 src_w;
+};
+
+struct drm_mode_cursor {
+	__u32 flags;
+	__u32 crtc_id;
+	__s32 x;
+	__s32 y;
+	__u32 width;
+	__u32 height;
+	__u32 handle;
+};
+
+struct drm_mode_crtc_page_flip_target {
+	__u32 crtc_id;
+	__u32 fb_id;
+	__u32 flags;
+	__u32 sequence;
+	__u64 user_data;
+};
+
+struct drm_prime_member {
+	struct dma_buf *dma_buf;
+	uint32_t handle;
+	struct rb_node dmabuf_rb;
+	struct rb_node handle_rb;
+};
+
+struct dma_buf_export_info {
+	const char *exp_name;
+	struct module *owner;
+	const struct dma_buf_ops *ops;
+	size_t size;
+	int flags;
+	struct dma_resv *resv;
+	void *priv;
+	unsigned long dma_map_attrs;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct drm_prime_handle {
+	__u32 handle;
+	__u32 flags;
+	__s32 fd;
+};
+
+struct drm_print_iterator {
+	void *data;
+	ssize_t start;
+	ssize_t remain;
+	ssize_t offset;
+};
+
+struct drm_property_enum {
+	uint64_t value;
+	struct list_head head;
+	char name[32];
+};
+
+struct drm_mode_get_property {
+	__u64 values_ptr;
+	__u64 enum_blob_ptr;
+	__u32 prop_id;
+	__u32 flags;
+	char name[32];
+	__u32 count_values;
+	__u32 count_enum_blobs;
+};
+
+struct drm_mode_property_enum {
+	__u64 value;
+	char name[32];
+};
+
+struct drm_mode_get_blob {
+	__u32 blob_id;
+	__u32 length;
+	__u64 data;
+};
+
+struct drm_mode_create_blob {
+	__u64 data;
+	__u32 length;
+	__u32 blob_id;
+};
+
+struct drm_mode_destroy_blob {
+	__u32 blob_id;
+};
+
+enum dma_fence_flag_bits {
+	DMA_FENCE_FLAG_SIGNALED_BIT = 0,
+	DMA_FENCE_FLAG_TIMESTAMP_BIT = 1,
+	DMA_FENCE_FLAG_ENABLE_SIGNAL_BIT = 2,
+	DMA_FENCE_FLAG_USER_BITS = 3,
+};
+
+struct syncobj_wait_entry {
+	struct list_head node;
+	struct task_struct *task;
+	struct dma_fence *fence;
+	struct dma_fence_cb fence_cb;
+	u64 point;
+};
+
+struct drm_syncobj;
+
+struct syncobj_eventfd_entry {
+	struct list_head node;
+	struct dma_fence *fence;
+	struct dma_fence_cb fence_cb;
+	struct drm_syncobj *syncobj;
+	struct eventfd_ctx *ev_fd_ctx;
+	u64 point;
+	u32 flags;
+};
+
+struct drm_syncobj {
+	struct kref refcount;
+	struct dma_fence __attribute__((btf_type_tag("rcu"))) *fence;
+	struct list_head cb_list;
+	struct list_head ev_fd_list;
+	spinlock_t lock;
+	struct file *file;
+};
+
+struct dma_fence_chain {
+	struct dma_fence base;
+	struct dma_fence __attribute__((btf_type_tag("rcu"))) *prev;
+	u64 prev_seqno;
+	struct dma_fence *fence;
+	union {
+		struct dma_fence_cb cb;
+		struct irq_work work;
+	};
+	spinlock_t lock;
+};
+
+struct drm_syncobj_transfer {
+	__u32 src_handle;
+	__u32 dst_handle;
+	__u64 src_point;
+	__u64 dst_point;
+	__u32 flags;
+	__u32 pad;
+};
+
+struct dma_fence_unwrap {
+	struct dma_fence *chain;
+	struct dma_fence *array;
+	unsigned int index;
+};
+
+struct drm_syncobj_wait {
+	__u64 handles;
+	__s64 timeout_nsec;
+	__u32 count_handles;
+	__u32 flags;
+	__u32 first_signaled;
+	__u32 pad;
+};
+
+struct drm_syncobj_timeline_wait {
+	__u64 handles;
+	__u64 points;
+	__s64 timeout_nsec;
+	__u32 count_handles;
+	__u32 flags;
+	__u32 first_signaled;
+	__u32 pad;
+};
+
+struct drm_syncobj_create {
+	__u32 handle;
+	__u32 flags;
+};
+
+struct drm_syncobj_destroy {
+	__u32 handle;
+	__u32 pad;
+};
+
+struct drm_syncobj_handle {
+	__u32 handle;
+	__u32 flags;
+	__s32 fd;
+	__u32 pad;
+};
+
+struct drm_syncobj_eventfd {
+	__u32 handle;
+	__u32 flags;
+	__u64 point;
+	__s32 fd;
+	__u32 pad;
+};
+
+struct drm_syncobj_array {
+	__u64 handles;
+	__u32 count_handles;
+	__u32 pad;
+};
+
+struct drm_syncobj_timeline_array {
+	__u64 handles;
+	__u64 points;
+	__u32 count_handles;
+	__u32 flags;
+};
+
+struct class_attribute {
+	struct attribute attr;
+	ssize_t (*show)(const struct class *, const struct class_attribute *, char *);
+	ssize_t (*store)(const struct class *, const struct class_attribute *, const char *, size_t);
+};
+
+struct class_attribute_string {
+	struct class_attribute attr;
+	char *str;
+};
+
+struct component_ops {
+	int (*bind)(struct device *, struct device *, void *);
+	void (*unbind)(struct device *, struct device *, void *);
+};
+
+typedef void (*btf_trace_drm_vblank_event)(void *, int, unsigned int, ktime_t, bool);
+
+typedef void (*btf_trace_drm_vblank_event_queued)(void *, struct drm_file *, int, unsigned int);
+
+typedef void (*btf_trace_drm_vblank_event_delivered)(void *, struct drm_file *, int, unsigned int);
+
+struct trace_event_raw_drm_vblank_event {
+	struct trace_entry ent;
+	int crtc;
+	unsigned int seq;
+	ktime_t time;
+	bool high_prec;
+	char __data[0];
+};
+
+struct trace_event_raw_drm_vblank_event_queued {
+	struct trace_entry ent;
+	struct drm_file *file;
+	int crtc;
+	unsigned int seq;
+	char __data[0];
+};
+
+struct trace_event_raw_drm_vblank_event_delivered {
+	struct trace_entry ent;
+	struct drm_file *file;
+	int crtc;
+	unsigned int seq;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_drm_vblank_event {};
+
+struct trace_event_data_offsets_drm_vblank_event_queued {};
+
+struct trace_event_data_offsets_drm_vblank_event_delivered {};
+
+enum drm_vblank_seq_type {
+	_DRM_VBLANK_ABSOLUTE = 0,
+	_DRM_VBLANK_RELATIVE = 1,
+	_DRM_VBLANK_HIGH_CRTC_MASK = 62,
+	_DRM_VBLANK_EVENT = 67108864,
+	_DRM_VBLANK_FLIP = 134217728,
+	_DRM_VBLANK_NEXTONMISS = 268435456,
+	_DRM_VBLANK_SECONDARY = 536870912,
+	_DRM_VBLANK_SIGNAL = 1073741824,
+};
+
+struct drm_wait_vblank_request {
+	enum drm_vblank_seq_type type;
+	unsigned int sequence;
+	unsigned long signal;
+};
+
+struct drm_wait_vblank_reply {
+	enum drm_vblank_seq_type type;
+	unsigned int sequence;
+	long tval_sec;
+	long tval_usec;
+};
+
+union drm_wait_vblank {
+	struct drm_wait_vblank_request request;
+	struct drm_wait_vblank_reply reply;
+};
+
+typedef bool (*drm_vblank_get_scanout_position_func)(struct drm_crtc *, bool, int *, int *, ktime_t *, ktime_t *, const struct drm_display_mode *);
+
+struct drm_modeset_ctl {
+	__u32 crtc;
+	__u32 cmd;
+};
+
+struct drm_crtc_get_sequence {
+	__u32 crtc_id;
+	__u32 active;
+	__u64 sequence;
+	__s64 sequence_ns;
+};
+
+struct drm_crtc_queue_sequence {
+	__u32 crtc_id;
+	__u32 flags;
+	__u64 sequence;
+	__u64 user_data;
+};
+
+struct drm_vblank_work {
+	struct kthread_work base;
+	struct drm_vblank_crtc *vblank;
+	u64 count;
+	int cancelling;
+	struct list_head node;
+};
+
+struct drm_vma_offset_file {
+	struct rb_node vm_rb;
+	struct drm_file *vm_tag;
+	unsigned long vm_count;
+};
+
+struct drm_gpuva_op;
+
+struct drm_gpuva_fn_ops {
+	struct drm_gpuva_op * (*op_alloc)();
+	void (*op_free)(struct drm_gpuva_op *);
+	int (*sm_step_map)(struct drm_gpuva_op *, void *);
+	int (*sm_step_remap)(struct drm_gpuva_op *, void *);
+	int (*sm_step_unmap)(struct drm_gpuva_op *, void *);
+};
+
+struct drm_gpuva_op_map {
+	struct {
+		u64 addr;
+		u64 range;
+	} va;
+	struct {
+		u64 offset;
+		struct drm_gem_object *obj;
+	} gem;
+};
+
+struct drm_gpuva_op_unmap;
+
+struct drm_gpuva_op_remap {
+	struct drm_gpuva_op_map *prev;
+	struct drm_gpuva_op_map *next;
+	struct drm_gpuva_op_unmap *unmap;
+};
+
+struct drm_gpuva;
+
+struct drm_gpuva_op_unmap {
+	struct drm_gpuva *va;
+	bool keep;
+};
+
+struct drm_gpuva_op_prefetch {
+	struct drm_gpuva *va;
+};
+
+enum drm_gpuva_op_type {
+	DRM_GPUVA_OP_MAP = 0,
+	DRM_GPUVA_OP_REMAP = 1,
+	DRM_GPUVA_OP_UNMAP = 2,
+	DRM_GPUVA_OP_PREFETCH = 3,
+};
+
+struct drm_gpuva_op {
+	struct list_head entry;
+	enum drm_gpuva_op_type op;
+	union {
+		struct drm_gpuva_op_map map;
+		struct drm_gpuva_op_remap remap;
+		struct drm_gpuva_op_unmap unmap;
+		struct drm_gpuva_op_prefetch prefetch;
+	};
+};
+
+enum drm_gpuva_flags {
+	DRM_GPUVA_INVALIDATED = 1,
+	DRM_GPUVA_SPARSE = 2,
+	DRM_GPUVA_USERBITS = 4,
+};
+
+struct drm_gpuva_manager;
+
+struct drm_gpuva {
+	struct drm_gpuva_manager *mgr;
+	enum drm_gpuva_flags flags;
+	struct {
+		u64 addr;
+		u64 range;
+	} va;
+	struct {
+		u64 offset;
+		struct drm_gem_object *obj;
+		struct list_head entry;
+	} gem;
+	struct {
+		struct rb_node node;
+		struct list_head entry;
+		u64 __subtree_last;
+	} rb;
+};
+
+struct drm_gpuva_manager {
+	const char *name;
+	u64 mm_start;
+	u64 mm_range;
+	struct {
+		struct rb_root_cached tree;
+		struct list_head list;
+	} rb;
+	struct drm_gpuva kernel_alloc_node;
+	const struct drm_gpuva_fn_ops *ops;
+};
+
+struct drm_gpuva_ops {
+	struct list_head list;
+};
+
+typedef int drm_ioctl_compat_t(struct file *, unsigned int, unsigned long);
+
+struct drm_version_32 {
+	int version_major;
+	int version_minor;
+	int version_patchlevel;
+	u32 name_len;
+	u32 name;
+	u32 date_len;
+	u32 date;
+	u32 desc_len;
+	u32 desc;
+};
+
+typedef struct drm_version_32 drm_version32_t;
+
+struct drm_unique32 {
+	u32 unique_len;
+	u32 unique;
+};
+
+typedef struct drm_unique32 drm_unique32_t;
+
+struct drm_client32 {
+	int idx;
+	int auth;
+	u32 pid;
+	u32 uid;
+	u32 magic;
+	u32 iocs;
+};
+
+typedef struct drm_client32 drm_client32_t;
+
+struct drm_stats32 {
+	u32 count;
+	struct {
+		u32 value;
+		enum drm_stat_type type;
+	} data[15];
+};
+
+typedef struct drm_stats32 drm_stats32_t;
+
+struct drm_wait_vblank_request32 {
+	enum drm_vblank_seq_type type;
+	unsigned int sequence;
+	u32 signal;
+};
+
+struct drm_wait_vblank_reply32 {
+	enum drm_vblank_seq_type type;
+	unsigned int sequence;
+	s32 tval_sec;
+	s32 tval_usec;
+};
+
+union drm_wait_vblank32 {
+	struct drm_wait_vblank_request32 request;
+	struct drm_wait_vblank_reply32 reply;
+};
+
+typedef union drm_wait_vblank32 drm_wait_vblank32_t;
+
+struct drm_mode_fb_cmd232 {
+	u32 fb_id;
+	u32 width;
+	u32 height;
+	u32 pixel_format;
+	u32 flags;
+	u32 handles[4];
+	u32 pitches[4];
+	u32 offsets[4];
+	u64 modifier[4];
+} __attribute__((packed));
+
+enum {
+	FB_BLANK_UNBLANK = 0,
+	FB_BLANK_NORMAL = 1,
+	FB_BLANK_VSYNC_SUSPEND = 2,
+	FB_BLANK_HSYNC_SUSPEND = 3,
+	FB_BLANK_POWERDOWN = 4,
+};
+
+struct drm_panel_follower_funcs;
+
+struct drm_panel_follower {
+	const struct drm_panel_follower_funcs *funcs;
+	struct list_head list;
+	struct drm_panel *panel;
+};
+
+struct drm_panel_follower_funcs {
+	int (*panel_prepared)(struct drm_panel_follower *);
+	int (*panel_unpreparing)(struct drm_panel_follower *);
+};
+
+enum drm_of_lvds_pixels {
+	DRM_OF_LVDS_EVEN = 1,
+	DRM_OF_LVDS_ODD = 2,
+};
+
+enum drm_lvds_dual_link_pixels {
+	DRM_LVDS_DUAL_LINK_EVEN_ODD_PIXELS = 0,
+	DRM_LVDS_DUAL_LINK_ODD_EVEN_PIXELS = 1,
+};
+
+enum mipi_dsi_pixel_format {
+	MIPI_DSI_FMT_RGB888 = 0,
+	MIPI_DSI_FMT_RGB666 = 1,
+	MIPI_DSI_FMT_RGB666_PACKED = 2,
+	MIPI_DSI_FMT_RGB565 = 3,
+};
+
+struct component_master_ops {
+	int (*bind)(struct device *);
+	void (*unbind)(struct device *);
+};
+
+struct of_endpoint {
+	unsigned int port;
+	unsigned int id;
+	const struct device_node *local_node;
+};
+
+struct mipi_dsi_host_ops;
+
+struct mipi_dsi_host {
+	struct device *dev;
+	const struct mipi_dsi_host_ops *ops;
+	struct list_head list;
+};
+
+struct mipi_dsi_device;
+
+struct mipi_dsi_msg;
+
+struct mipi_dsi_host_ops {
+	int (*attach)(struct mipi_dsi_host *, struct mipi_dsi_device *);
+	int (*detach)(struct mipi_dsi_host *, struct mipi_dsi_device *);
+	ssize_t (*transfer)(struct mipi_dsi_host *, const struct mipi_dsi_msg *);
+};
+
+struct drm_dsc_config;
+
+struct mipi_dsi_device {
+	struct mipi_dsi_host *host;
+	struct device dev;
+	bool attached;
+	char name[20];
+	unsigned int channel;
+	unsigned int lanes;
+	enum mipi_dsi_pixel_format format;
+	unsigned long mode_flags;
+	unsigned long hs_rate;
+	unsigned long lp_rate;
+	struct drm_dsc_config *dsc;
+};
+
+struct mipi_dsi_msg {
+	u8 channel;
+	u8 type;
+	u16 flags;
+	size_t tx_len;
+	const void *tx_buf;
+	size_t rx_len;
+	void *rx_buf;
+};
+
+struct drm_info_list;
+
+struct drm_info_node {
+	struct drm_minor *minor;
+	const struct drm_info_list *info_ent;
+	struct list_head list;
+	struct dentry *dent;
+};
+
+struct drm_info_list {
+	const char *name;
+	int (*show)(struct seq_file *, void *);
+	u32 driver_features;
+	void *data;
+};
+
+struct drm_dmi_panel_orientation_data {
+	int width;
+	int height;
+	const char * const *bios_dates;
+	int orientation;
+};
+
+struct drm_gem_shmem_object {
+	struct drm_gem_object base;
+	struct page **pages;
+	unsigned int pages_use_count;
+	int madv;
+	struct list_head madv_list;
+	struct sg_table *sgt;
+	void *vaddr;
+	unsigned int vmap_use_count;
+	bool pages_mark_dirty_on_put: 1;
+	bool pages_mark_accessed_on_put: 1;
+	bool map_wc: 1;
+};
+
+struct drm_bridge_connector {
+	struct drm_connector base;
+	struct drm_encoder *encoder;
+	struct drm_bridge *bridge_edid;
+	struct drm_bridge *bridge_hpd;
+	struct drm_bridge *bridge_detect;
+	struct drm_bridge *bridge_modes;
+};
+
+struct drm_atomic_helper_damage_iter {
+	struct drm_rect plane_src;
+	const struct drm_rect *clips;
+	uint32_t num_clips;
+	uint32_t curr_clip;
+	bool full_update;
+};
+
+enum i2c_alert_protocol {
+	I2C_PROTOCOL_SMBUS_ALERT = 0,
+	I2C_PROTOCOL_SMBUS_HOST_NOTIFY = 1,
+};
+
+struct i2c_client;
+
+struct i2c_device_id;
+
+struct i2c_board_info;
+
+struct i2c_driver {
+	unsigned int class;
+	int (*probe)(struct i2c_client *);
+	void (*remove)(struct i2c_client *);
+	void (*shutdown)(struct i2c_client *);
+	void (*alert)(struct i2c_client *, enum i2c_alert_protocol, unsigned int);
+	int (*command)(struct i2c_client *, unsigned int, void *);
+	struct device_driver driver;
+	const struct i2c_device_id *id_table;
+	int (*detect)(struct i2c_client *, struct i2c_board_info *);
+	const unsigned short *address_list;
+	struct list_head clients;
+	u32 flags;
+};
+
+struct i2c_client {
+	unsigned short flags;
+	unsigned short addr;
+	char name[20];
+	struct i2c_adapter *adapter;
+	struct device dev;
+	int init_irq;
+	int irq;
+	struct list_head detected;
+	void *devres_group_id;
+};
+
+struct i2c_device_id {
+	char name[20];
+	kernel_ulong_t driver_data;
+};
+
+struct i2c_board_info {
+	char type[20];
+	unsigned short flags;
+	unsigned short addr;
+	const char *dev_name;
+	void *platform_data;
+	struct device_node *of_node;
+	struct fwnode_handle *fwnode;
+	const struct software_node *swnode;
+	const struct resource *resources;
+	unsigned int num_resources;
+	int irq;
+};
+
+struct drm_encoder_slave;
+
+struct drm_i2c_encoder_driver {
+	struct i2c_driver i2c_driver;
+	int (*encoder_init)(struct i2c_client *, struct drm_device *, struct drm_encoder_slave *);
+};
+
+struct drm_encoder_slave_funcs;
+
+struct drm_encoder_slave {
+	struct drm_encoder base;
+	const struct drm_encoder_slave_funcs *slave_funcs;
+	void *slave_priv;
+	void *bus_priv;
+};
+
+struct drm_encoder_slave_funcs {
+	void (*set_config)(struct drm_encoder *, void *);
+	void (*destroy)(struct drm_encoder *);
+	void (*dpms)(struct drm_encoder *, int);
+	void (*save)(struct drm_encoder *);
+	void (*restore)(struct drm_encoder *);
+	bool (*mode_fixup)(struct drm_encoder *, const struct drm_display_mode *, struct drm_display_mode *);
+	int (*mode_valid)(struct drm_encoder *, struct drm_display_mode *);
+	void (*mode_set)(struct drm_encoder *, struct drm_display_mode *, struct drm_display_mode *);
+	enum drm_connector_status (*detect)(struct drm_encoder *, struct drm_connector *);
+	int (*get_modes)(struct drm_encoder *, struct drm_connector *);
+	int (*create_resources)(struct drm_encoder *, struct drm_connector *);
+	int (*set_property)(struct drm_encoder *, struct drm_connector *, struct drm_property *, uint64_t);
+};
+
+struct drm_flip_work;
+
+typedef void (*drm_flip_func_t)(struct drm_flip_work *, void *);
+
+struct drm_flip_work {
+	const char *name;
+	drm_flip_func_t func;
+	struct work_struct worker;
+	struct list_head queued;
+	struct list_head commited;
+	spinlock_t lock;
+};
+
+struct drm_flip_task {
+	struct list_head node;
+	void *data;
+};
+
+struct drm_shadow_plane_state {
+	struct drm_plane_state base;
+	struct iosys_map map[4];
+	struct iosys_map data[4];
+};
+
+struct drm_simple_display_pipe_funcs;
+
+struct drm_simple_display_pipe {
+	struct drm_crtc crtc;
+	struct drm_plane plane;
+	struct drm_encoder encoder;
+	struct drm_connector *connector;
+	const struct drm_simple_display_pipe_funcs *funcs;
+};
+
+struct drm_simple_display_pipe_funcs {
+	enum drm_mode_status (*mode_valid)(struct drm_simple_display_pipe *, const struct drm_display_mode *);
+	void (*enable)(struct drm_simple_display_pipe *, struct drm_crtc_state *, struct drm_plane_state *);
+	void (*disable)(struct drm_simple_display_pipe *);
+	int (*check)(struct drm_simple_display_pipe *, struct drm_plane_state *, struct drm_crtc_state *);
+	void (*update)(struct drm_simple_display_pipe *, struct drm_plane_state *);
+	int (*prepare_fb)(struct drm_simple_display_pipe *, struct drm_plane_state *);
+	void (*cleanup_fb)(struct drm_simple_display_pipe *, struct drm_plane_state *);
+	int (*begin_fb_access)(struct drm_simple_display_pipe *, struct drm_plane_state *);
+	void (*end_fb_access)(struct drm_simple_display_pipe *, struct drm_plane_state *);
+	int (*enable_vblank)(struct drm_simple_display_pipe *);
+	void (*disable_vblank)(struct drm_simple_display_pipe *);
+	void (*reset_crtc)(struct drm_simple_display_pipe *);
+	struct drm_crtc_state * (*duplicate_crtc_state)(struct drm_simple_display_pipe *);
+	void (*destroy_crtc_state)(struct drm_simple_display_pipe *, struct drm_crtc_state *);
+	void (*reset_plane)(struct drm_simple_display_pipe *);
+	struct drm_plane_state * (*duplicate_plane_state)(struct drm_simple_display_pipe *);
+	void (*destroy_plane_state)(struct drm_simple_display_pipe *, struct drm_plane_state *);
+};
+
+struct drm_afbc_framebuffer {
+	struct drm_framebuffer base;
+	u32 block_width;
+	u32 block_height;
+	u32 aligned_width;
+	u32 aligned_height;
+	u32 offset;
+	u32 afbc_size;
+};
+
+struct drm_fb_helper_funcs;
+
+struct drm_fb_helper {
+	struct drm_client_dev client;
+	struct drm_client_buffer *buffer;
+	struct drm_framebuffer *fb;
+	struct drm_device *dev;
+	const struct drm_fb_helper_funcs *funcs;
+	struct fb_info *info;
+	u32 pseudo_palette[17];
+	struct drm_clip_rect damage_clip;
+	spinlock_t damage_lock;
+	struct work_struct damage_work;
+	struct work_struct resume_work;
+	struct mutex lock;
+	struct list_head kernel_fb_list;
+	bool delayed_hotplug;
+	bool deferred_setup;
+	int preferred_bpp;
+};
+
+struct drm_fb_helper_surface_size;
+
+struct drm_fb_helper_funcs {
+	int (*fb_probe)(struct drm_fb_helper *, struct drm_fb_helper_surface_size *);
+	int (*fb_dirty)(struct drm_fb_helper *, struct drm_clip_rect *);
+};
+
+struct drm_fb_helper_surface_size {
+	u32 fb_width;
+	u32 fb_height;
+	u32 surface_width;
+	u32 surface_height;
+	u32 surface_bpp;
+	u32 surface_depth;
+};
+
+struct ewma_psr_time {
+	unsigned long internal;
+};
+
+struct drm_self_refresh_data {
+	struct drm_crtc *crtc;
+	struct delayed_work entry_work;
+	struct mutex avg_mutex;
+	struct ewma_psr_time entry_avg_ms;
+	struct ewma_psr_time exit_avg_ms;
+};
+
+struct panel_bridge {
+	struct drm_bridge bridge;
+	struct drm_connector connector;
+	struct drm_panel *panel;
+	u32 connector_type;
+};
+
+enum {
+	MIPI_DSI_V_SYNC_START = 1,
+	MIPI_DSI_V_SYNC_END = 17,
+	MIPI_DSI_H_SYNC_START = 33,
+	MIPI_DSI_H_SYNC_END = 49,
+	MIPI_DSI_COMPRESSION_MODE = 7,
+	MIPI_DSI_END_OF_TRANSMISSION = 8,
+	MIPI_DSI_COLOR_MODE_OFF = 2,
+	MIPI_DSI_COLOR_MODE_ON = 18,
+	MIPI_DSI_SHUTDOWN_PERIPHERAL = 34,
+	MIPI_DSI_TURN_ON_PERIPHERAL = 50,
+	MIPI_DSI_GENERIC_SHORT_WRITE_0_PARAM = 3,
+	MIPI_DSI_GENERIC_SHORT_WRITE_1_PARAM = 19,
+	MIPI_DSI_GENERIC_SHORT_WRITE_2_PARAM = 35,
+	MIPI_DSI_GENERIC_READ_REQUEST_0_PARAM = 4,
+	MIPI_DSI_GENERIC_READ_REQUEST_1_PARAM = 20,
+	MIPI_DSI_GENERIC_READ_REQUEST_2_PARAM = 36,
+	MIPI_DSI_DCS_SHORT_WRITE = 5,
+	MIPI_DSI_DCS_SHORT_WRITE_PARAM = 21,
+	MIPI_DSI_DCS_READ = 6,
+	MIPI_DSI_EXECUTE_QUEUE = 22,
+	MIPI_DSI_SET_MAXIMUM_RETURN_PACKET_SIZE = 55,
+	MIPI_DSI_NULL_PACKET = 9,
+	MIPI_DSI_BLANKING_PACKET = 25,
+	MIPI_DSI_GENERIC_LONG_WRITE = 41,
+	MIPI_DSI_DCS_LONG_WRITE = 57,
+	MIPI_DSI_PICTURE_PARAMETER_SET = 10,
+	MIPI_DSI_COMPRESSED_PIXEL_STREAM = 11,
+	MIPI_DSI_LOOSELY_PACKED_PIXEL_STREAM_YCBCR20 = 12,
+	MIPI_DSI_PACKED_PIXEL_STREAM_YCBCR24 = 28,
+	MIPI_DSI_PACKED_PIXEL_STREAM_YCBCR16 = 44,
+	MIPI_DSI_PACKED_PIXEL_STREAM_30 = 13,
+	MIPI_DSI_PACKED_PIXEL_STREAM_36 = 29,
+	MIPI_DSI_PACKED_PIXEL_STREAM_YCBCR12 = 61,
+	MIPI_DSI_PACKED_PIXEL_STREAM_16 = 14,
+	MIPI_DSI_PACKED_PIXEL_STREAM_18 = 30,
+	MIPI_DSI_PIXEL_STREAM_3BYTE_18 = 46,
+	MIPI_DSI_PACKED_PIXEL_STREAM_24 = 62,
+};
+
+enum {
+	MIPI_DCS_NOP = 0,
+	MIPI_DCS_SOFT_RESET = 1,
+	MIPI_DCS_GET_COMPRESSION_MODE = 3,
+	MIPI_DCS_GET_DISPLAY_ID = 4,
+	MIPI_DCS_GET_ERROR_COUNT_ON_DSI = 5,
+	MIPI_DCS_GET_RED_CHANNEL = 6,
+	MIPI_DCS_GET_GREEN_CHANNEL = 7,
+	MIPI_DCS_GET_BLUE_CHANNEL = 8,
+	MIPI_DCS_GET_DISPLAY_STATUS = 9,
+	MIPI_DCS_GET_POWER_MODE = 10,
+	MIPI_DCS_GET_ADDRESS_MODE = 11,
+	MIPI_DCS_GET_PIXEL_FORMAT = 12,
+	MIPI_DCS_GET_DISPLAY_MODE = 13,
+	MIPI_DCS_GET_SIGNAL_MODE = 14,
+	MIPI_DCS_GET_DIAGNOSTIC_RESULT = 15,
+	MIPI_DCS_ENTER_SLEEP_MODE = 16,
+	MIPI_DCS_EXIT_SLEEP_MODE = 17,
+	MIPI_DCS_ENTER_PARTIAL_MODE = 18,
+	MIPI_DCS_ENTER_NORMAL_MODE = 19,
+	MIPI_DCS_GET_IMAGE_CHECKSUM_RGB = 20,
+	MIPI_DCS_GET_IMAGE_CHECKSUM_CT = 21,
+	MIPI_DCS_EXIT_INVERT_MODE = 32,
+	MIPI_DCS_ENTER_INVERT_MODE = 33,
+	MIPI_DCS_SET_GAMMA_CURVE = 38,
+	MIPI_DCS_SET_DISPLAY_OFF = 40,
+	MIPI_DCS_SET_DISPLAY_ON = 41,
+	MIPI_DCS_SET_COLUMN_ADDRESS = 42,
+	MIPI_DCS_SET_PAGE_ADDRESS = 43,
+	MIPI_DCS_WRITE_MEMORY_START = 44,
+	MIPI_DCS_WRITE_LUT = 45,
+	MIPI_DCS_READ_MEMORY_START = 46,
+	MIPI_DCS_SET_PARTIAL_ROWS = 48,
+	MIPI_DCS_SET_PARTIAL_COLUMNS = 49,
+	MIPI_DCS_SET_SCROLL_AREA = 51,
+	MIPI_DCS_SET_TEAR_OFF = 52,
+	MIPI_DCS_SET_TEAR_ON = 53,
+	MIPI_DCS_SET_ADDRESS_MODE = 54,
+	MIPI_DCS_SET_SCROLL_START = 55,
+	MIPI_DCS_EXIT_IDLE_MODE = 56,
+	MIPI_DCS_ENTER_IDLE_MODE = 57,
+	MIPI_DCS_SET_PIXEL_FORMAT = 58,
+	MIPI_DCS_WRITE_MEMORY_CONTINUE = 60,
+	MIPI_DCS_SET_3D_CONTROL = 61,
+	MIPI_DCS_READ_MEMORY_CONTINUE = 62,
+	MIPI_DCS_GET_3D_CONTROL = 63,
+	MIPI_DCS_SET_VSYNC_TIMING = 64,
+	MIPI_DCS_SET_TEAR_SCANLINE = 68,
+	MIPI_DCS_GET_SCANLINE = 69,
+	MIPI_DCS_SET_DISPLAY_BRIGHTNESS = 81,
+	MIPI_DCS_GET_DISPLAY_BRIGHTNESS = 82,
+	MIPI_DCS_WRITE_CONTROL_DISPLAY = 83,
+	MIPI_DCS_GET_CONTROL_DISPLAY = 84,
+	MIPI_DCS_WRITE_POWER_SAVE = 85,
+	MIPI_DCS_GET_POWER_SAVE = 86,
+	MIPI_DCS_SET_CABC_MIN_BRIGHTNESS = 94,
+	MIPI_DCS_GET_CABC_MIN_BRIGHTNESS = 95,
+	MIPI_DCS_READ_DDB_START = 161,
+	MIPI_DCS_READ_PPS_START = 162,
+	MIPI_DCS_READ_DDB_CONTINUE = 168,
+	MIPI_DCS_READ_PPS_CONTINUE = 169,
+};
+
+enum mipi_dsi_dcs_tear_mode {
+	MIPI_DSI_DCS_TEAR_MODE_VBLANK = 0,
+	MIPI_DSI_DCS_TEAR_MODE_VHBLANK = 1,
+};
+
+struct drm_dsc_rc_range_parameters {
+	u8 range_min_qp;
+	u8 range_max_qp;
+	u8 range_bpg_offset;
+};
+
+struct drm_dsc_config {
+	u8 line_buf_depth;
+	u8 bits_per_component;
+	bool convert_rgb;
+	u8 slice_count;
+	u16 slice_width;
+	u16 slice_height;
+	bool simple_422;
+	u16 pic_width;
+	u16 pic_height;
+	u8 rc_tgt_offset_high;
+	u8 rc_tgt_offset_low;
+	u16 bits_per_pixel;
+	u8 rc_edge_factor;
+	u8 rc_quant_incr_limit1;
+	u8 rc_quant_incr_limit0;
+	u16 initial_xmit_delay;
+	u16 initial_dec_delay;
+	bool block_pred_enable;
+	u8 first_line_bpg_offset;
+	u16 initial_offset;
+	u16 rc_buf_thresh[14];
+	struct drm_dsc_rc_range_parameters rc_range_params[15];
+	u16 rc_model_size;
+	u8 flatness_min_qp;
+	u8 flatness_max_qp;
+	u8 initial_scale_value;
+	u16 scale_decrement_interval;
+	u16 scale_increment_interval;
+	u16 nfl_bpg_offset;
+	u16 slice_bpg_offset;
+	u16 final_offset;
+	bool vbr_enable;
+	u8 mux_word_size;
+	u16 slice_chunk_size;
+	u16 rc_bits;
+	u8 dsc_version_minor;
+	u8 dsc_version_major;
+	bool native_422;
+	bool native_420;
+	u8 second_line_bpg_offset;
+	u16 nsl_bpg_offset;
+	u16 second_line_offset_adj;
+};
+
+struct mipi_dsi_driver {
+	struct device_driver driver;
+	int (*probe)(struct mipi_dsi_device *);
+	void (*remove)(struct mipi_dsi_device *);
+	void (*shutdown)(struct mipi_dsi_device *);
+};
+
+struct mipi_dsi_device_info {
+	char type[20];
+	u32 channel;
+	struct device_node *node;
+};
+
+struct mipi_dsi_packet {
+	size_t size;
+	u8 header[4];
+	size_t payload_length;
+	const u8 *payload;
+};
+
+struct drm_dsc_picture_parameter_set {
+	u8 dsc_version;
+	u8 pps_identifier;
+	u8 pps_reserved;
+	u8 pps_3;
+	u8 pps_4;
+	u8 bits_per_pixel_low;
+	__be16 pic_height;
+	__be16 pic_width;
+	__be16 slice_height;
+	__be16 slice_width;
+	__be16 chunk_size;
+	u8 initial_xmit_delay_high;
+	u8 initial_xmit_delay_low;
+	__be16 initial_dec_delay;
+	u8 pps20_reserved;
+	u8 initial_scale_value;
+	__be16 scale_increment_interval;
+	u8 scale_decrement_interval_high;
+	u8 scale_decrement_interval_low;
+	u8 pps26_reserved;
+	u8 first_line_bpg_offset;
+	__be16 nfl_bpg_offset;
+	__be16 slice_bpg_offset;
+	__be16 initial_offset;
+	__be16 final_offset;
+	u8 flatness_min_qp;
+	u8 flatness_max_qp;
+	__be16 rc_model_size;
+	u8 rc_edge_factor;
+	u8 rc_quant_incr_limit0;
+	u8 rc_quant_incr_limit1;
+	u8 rc_tgt_offset;
+	u8 rc_buf_thresh[14];
+	__be16 rc_range_parameters[15];
+	u8 native_422_420;
+	u8 second_line_bpg_offset;
+	__be16 nsl_bpg_offset;
+	__be16 second_line_offset_adj;
+	u32 pps_long_94_reserved;
+	u32 pps_long_98_reserved;
+	u32 pps_long_102_reserved;
+	u32 pps_long_106_reserved;
+	u32 pps_long_110_reserved;
+	u32 pps_long_114_reserved;
+	u32 pps_long_118_reserved;
+	u32 pps_long_122_reserved;
+	__be16 pps_short_126_reserved;
+} __attribute__((packed));
+
+struct ttm_kmap_iter;
+
+struct ttm_kmap_iter_ops {
+	void (*map_local)(struct ttm_kmap_iter *, struct iosys_map *, unsigned long);
+	void (*unmap_local)(struct ttm_kmap_iter *, struct iosys_map *);
+	bool maps_tt;
+};
+
+struct ttm_kmap_iter {
+	const struct ttm_kmap_iter_ops *ops;
+};
+
+enum ttm_caching {
+	ttm_uncached = 0,
+	ttm_write_combined = 1,
+	ttm_cached = 2,
+};
+
+enum ttm_bo_type {
+	ttm_bo_type_device = 0,
+	ttm_bo_type_kernel = 1,
+	ttm_bo_type_sg = 2,
+};
+
+struct ttm_tt;
+
+struct ttm_kmap_iter_tt {
+	struct ttm_kmap_iter base;
+	struct ttm_tt *tt;
+	pgprot_t prot;
+};
+
+struct ttm_tt {
+	struct page **pages;
+	uint32_t page_flags;
+	uint32_t num_pages;
+	struct sg_table *sg;
+	dma_addr_t *dma_address;
+	struct file *swap_storage;
+	enum ttm_caching caching;
+};
+
+struct ttm_device;
+
+struct ttm_resource;
+
+struct ttm_lru_bulk_move;
+
+struct ttm_buffer_object {
+	struct drm_gem_object base;
+	struct ttm_device *bdev;
+	enum ttm_bo_type type;
+	uint32_t page_alignment;
+	void (*destroy)(struct ttm_buffer_object *);
+	struct kref kref;
+	struct ttm_resource *resource;
+	struct ttm_tt *ttm;
+	bool deleted;
+	struct ttm_lru_bulk_move *bulk_move;
+	unsigned int priority;
+	unsigned int pin_count;
+	struct work_struct delayed_delete;
+	struct sg_table *sg;
+};
+
+struct ttm_resource_manager_func;
+
+struct ttm_resource_manager {
+	bool use_type;
+	bool use_tt;
+	struct ttm_device *bdev;
+	uint64_t size;
+	const struct ttm_resource_manager_func *func;
+	spinlock_t move_lock;
+	struct dma_fence *move;
+	struct list_head lru[4];
+	uint64_t usage;
+};
+
+struct ttm_pool;
+
+struct ttm_pool_type {
+	struct ttm_pool *pool;
+	unsigned int order;
+	enum ttm_caching caching;
+	struct list_head shrinker_list;
+	spinlock_t lock;
+	struct list_head pages;
+};
+
+struct ttm_pool {
+	struct device *dev;
+	int nid;
+	bool use_dma_alloc;
+	bool use_dma32;
+	struct {
+		struct ttm_pool_type orders[11];
+	} caching[3];
+};
+
+struct ttm_device_funcs;
+
+struct ttm_device {
+	struct list_head device_list;
+	const struct ttm_device_funcs *funcs;
+	struct ttm_resource_manager sysman;
+	struct ttm_resource_manager *man_drv[8];
+	struct drm_vma_offset_manager *vma_manager;
+	struct ttm_pool pool;
+	spinlock_t lru_lock;
+	struct list_head pinned;
+	struct address_space *dev_mapping;
+	struct workqueue_struct *wq;
+};
+
+struct ttm_operation_ctx;
+
+struct ttm_place;
+
+struct ttm_placement;
+
+struct ttm_device_funcs {
+	struct ttm_tt * (*ttm_tt_create)(struct ttm_buffer_object *, uint32_t);
+	int (*ttm_tt_populate)(struct ttm_device *, struct ttm_tt *, struct ttm_operation_ctx *);
+	void (*ttm_tt_unpopulate)(struct ttm_device *, struct ttm_tt *);
+	void (*ttm_tt_destroy)(struct ttm_device *, struct ttm_tt *);
+	bool (*eviction_valuable)(struct ttm_buffer_object *, const struct ttm_place *);
+	void (*evict_flags)(struct ttm_buffer_object *, struct ttm_placement *);
+	int (*move)(struct ttm_buffer_object *, bool, struct ttm_operation_ctx *, struct ttm_resource *, struct ttm_place *);
+	void (*delete_mem_notify)(struct ttm_buffer_object *);
+	void (*swap_notify)(struct ttm_buffer_object *);
+	int (*io_mem_reserve)(struct ttm_device *, struct ttm_resource *);
+	void (*io_mem_free)(struct ttm_device *, struct ttm_resource *);
+	unsigned long (*io_mem_pfn)(struct ttm_buffer_object *, unsigned long);
+	int (*access_memory)(struct ttm_buffer_object *, unsigned long, void *, int, int);
+	void (*release_notify)(struct ttm_buffer_object *);
+};
+
+struct ttm_operation_ctx {
+	bool interruptible;
+	bool no_wait_gpu;
+	bool gfp_retry_mayfail;
+	bool allow_res_evict;
+	bool force_alloc;
+	struct dma_resv *resv;
+	uint64_t bytes_moved;
+};
+
+struct ttm_place {
+	unsigned int fpfn;
+	unsigned int lpfn;
+	uint32_t mem_type;
+	uint32_t flags;
+};
+
+struct ttm_bus_placement {
+	void *addr;
+	phys_addr_t offset;
+	bool is_iomem;
+	enum ttm_caching caching;
+};
+
+struct ttm_resource {
+	unsigned long start;
+	size_t size;
+	uint32_t mem_type;
+	uint32_t placement;
+	struct ttm_bus_placement bus;
+	struct ttm_buffer_object *bo;
+	struct list_head lru;
+};
+
+struct ttm_resource_manager_func {
+	int (*alloc)(struct ttm_resource_manager *, struct ttm_buffer_object *, const struct ttm_place *, struct ttm_resource **);
+	void (*free)(struct ttm_resource_manager *, struct ttm_resource *);
+	bool (*intersects)(struct ttm_resource_manager *, struct ttm_resource *, const struct ttm_place *, size_t);
+	bool (*compatible)(struct ttm_resource_manager *, struct ttm_resource *, const struct ttm_place *, size_t);
+	void (*debug)(struct ttm_resource_manager *, struct drm_printer *);
+};
+
+struct ttm_lru_bulk_move_pos {
+	struct ttm_resource *first;
+	struct ttm_resource *last;
+};
+
+struct ttm_lru_bulk_move {
+	struct ttm_lru_bulk_move_pos pos[32];
+};
+
+struct ttm_placement {
+	unsigned int num_placement;
+	const struct ttm_place *placement;
+	unsigned int num_busy_placement;
+	const struct ttm_place *busy_placement;
+};
+
+struct dma_resv_iter {
+	struct dma_resv *obj;
+	enum dma_resv_usage usage;
+	struct dma_fence *fence;
+	enum dma_resv_usage fence_usage;
+	unsigned int index;
+	struct dma_resv_list *fences;
+	unsigned int num_fences;
+	bool is_restarted;
+};
+
+struct ttm_resource_cursor {
+	unsigned int priority;
+};
+
+struct ttm_bo_kmap_obj {
+	void *virtual;
+	struct page *page;
+	enum {
+		ttm_bo_map_iomap = 129,
+		ttm_bo_map_vmap = 2,
+		ttm_bo_map_kmap = 3,
+		ttm_bo_map_premapped = 132,
+	} bo_kmap_type;
+	struct ttm_buffer_object *bo;
+};
+
+struct ttm_transfer_obj {
+	struct ttm_buffer_object base;
+	struct ttm_buffer_object *bo;
+};
+
+struct ttm_kmap_iter_linear_io {
+	struct ttm_kmap_iter base;
+	struct iosys_map dmap;
+	bool needs_unmap;
+};
+
+struct ttm_validate_buffer {
+	struct list_head head;
+	struct ttm_buffer_object *bo;
+	unsigned int num_shared;
+};
+
+struct ttm_range_mgr_node {
+	struct ttm_resource base;
+	struct drm_mm_node mm_nodes[0];
+};
+
+struct ttm_range_manager {
+	struct ttm_resource_manager manager;
+	struct drm_mm mm;
+	spinlock_t lock;
+};
+
+struct io_mapping;
+
+struct ttm_kmap_iter_iomap {
+	struct ttm_kmap_iter base;
+	struct io_mapping *iomap;
+	struct sg_table *st;
+	resource_size_t start;
+	struct {
+		struct scatterlist *sg;
+		unsigned long i;
+		unsigned long end;
+		unsigned long offs;
+	} cache;
+};
+
+struct io_mapping {
+	resource_size_t base;
+	unsigned long size;
+	pgprot_t prot;
+	void *iomem;
+};
+
+struct ttm_pool_dma {
+	dma_addr_t addr;
+	unsigned long vaddr;
+};
+
+struct ttm_global {
+	struct page *dummy_read_page;
+	struct list_head device_list;
+	atomic_t bo_count;
+};
+
+typedef void (*btf_trace_gpu_mem_total)(void *, uint32_t, uint32_t, uint64_t);
+
+struct trace_event_raw_gpu_mem_total {
+	struct trace_entry ent;
+	uint32_t gpu_id;
+	uint32_t pid;
+	uint64_t size;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_gpu_mem_total {};
+
+struct aggregate_device;
+
+struct component {
+	struct list_head node;
+	struct aggregate_device *adev;
+	bool bound;
+	const struct component_ops *ops;
+	int subcomponent;
+	struct device *dev;
+};
+
+struct component_match;
+
+struct aggregate_device {
+	struct list_head node;
+	bool bound;
+	const struct component_master_ops *ops;
+	struct device *parent;
+	struct component_match *match;
+};
+
+struct component_match_array;
+
+struct component_match {
+	size_t alloc;
+	size_t num;
+	struct component_match_array *compare;
+};
+
+struct component_match_array {
+	void *data;
+	int (*compare)(struct device *, void *);
+	int (*compare_typed)(struct device *, int, void *);
+	void (*release)(struct device *, void *);
+	struct component *component;
+	bool duplicate;
+};
+
+struct device_private {
+	struct klist klist_children;
+	struct klist_node knode_parent;
+	struct klist_node knode_driver;
+	struct klist_node knode_bus;
+	struct klist_node knode_class;
+	struct list_head deferred_probe;
+	struct device_driver *async_driver;
+	char *deferred_probe_reason;
+	struct device *device;
+	u8 dead: 1;
+};
+
+struct driver_private {
+	struct kobject kobj;
+	struct klist klist_devices;
+	struct klist_node knode_bus;
+	struct module_kobject *mkobj;
+	struct device_driver *driver;
+};
+
+struct wake_irq {
+	struct device *dev;
+	unsigned int status;
+	int irq;
+	const char *name;
+};
+
+enum dpm_order {
+	DPM_ORDER_NONE = 0,
+	DPM_ORDER_DEV_AFTER_PARENT = 1,
+	DPM_ORDER_PARENT_BEFORE_DEV = 2,
+	DPM_ORDER_DEV_LAST = 3,
+};
+
+struct fwnode_link {
+	struct fwnode_handle *supplier;
+	struct list_head s_hook;
+	struct fwnode_handle *consumer;
+	struct list_head c_hook;
+	u8 flags;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+};
+
+struct class_dir {
+	struct kobject kobj;
+	const struct class *class;
+};
+
+struct root_device {
+	struct device dev;
+	struct module *owner;
+};
+
+struct subsys_private {
+	struct kset subsys;
+	struct kset *devices_kset;
+	struct list_head interfaces;
+	struct mutex mutex;
+	struct kset *drivers_kset;
+	struct klist klist_devices;
+	struct klist klist_drivers;
+	struct blocking_notifier_head bus_notifier;
+	unsigned int drivers_autoprobe: 1;
+	const struct bus_type *bus;
+	struct device *dev_root;
+	struct kset glue_dirs;
+	const struct class *class;
+	struct lock_class_key lock_key;
+};
+
+union device_attr_group_devres {
+	const struct attribute_group *group;
+	const struct attribute_group **groups;
+};
+
+struct subsys_interface {
+	const char *name;
+	struct bus_type *subsys;
+	struct list_head node;
+	int (*add_dev)(struct device *, struct subsys_interface *);
+	void (*remove_dev)(struct device *, struct subsys_interface *);
+};
+
+struct subsys_dev_iter {
+	struct klist_iter ki;
+	const struct device_type *type;
+};
+
+struct device_attach_data {
+	struct device *dev;
+	bool check_async;
+	bool want_async;
+	bool have_async;
+};
+
+struct class_compat {
+	struct kobject *kobj;
+};
+
+struct platform_object {
+	struct platform_device pdev;
+	char name[0];
+};
+
+struct irq_affinity_devres {
+	unsigned int count;
+	unsigned int irq[0];
+};
+
+struct cpu_attr {
+	struct device_attribute attr;
+	const struct cpumask * const map;
+};
+
+struct probe;
+
+struct kobj_map {
+	struct probe *probes[255];
+	struct mutex *lock;
+};
+
+struct probe {
+	struct probe *next;
+	dev_t dev;
+	unsigned long range;
+	struct module *owner;
+	kobj_probe_t *get;
+	int (*lock)(dev_t, void *);
+	void *data;
+};
+
+struct devres_node {
+	struct list_head entry;
+	dr_release_t release;
+	const char *name;
+	size_t size;
+};
+
+struct devres {
+	struct devres_node node;
+	u8 data[0];
+};
+
+struct devres_group {
+	struct devres_node node[2];
+	void *id;
+	int color;
+};
+
+struct action_devres {
+	void *data;
+	void (*action)(void *);
+};
+
+struct pages_devres {
+	unsigned long addr;
+	unsigned int order;
+};
+
+struct attribute_container;
+
+struct internal_container {
+	struct klist_node node;
+	struct attribute_container *cont;
+	struct device classdev;
+};
+
+struct attribute_container {
+	struct list_head node;
+	struct klist containers;
+	struct class *class;
+	const struct attribute_group *grp;
+	struct device_attribute **attrs;
+	int (*match)(struct attribute_container *, struct device *);
+	unsigned long flags;
+};
+
+struct transport_container;
+
+struct transport_class {
+	struct class class;
+	int (*setup)(struct transport_container *, struct device *, struct device *);
+	int (*configure)(struct transport_container *, struct device *, struct device *);
+	int (*remove)(struct transport_container *, struct device *, struct device *);
+};
+
+struct transport_container {
+	struct attribute_container ac;
+	const struct attribute_group *statistics;
+};
+
+struct anon_transport_class {
+	struct transport_class tclass;
+	struct attribute_container container;
+};
+
+typedef enum {
+	PHY_INTERFACE_MODE_NA = 0,
+	PHY_INTERFACE_MODE_INTERNAL = 1,
+	PHY_INTERFACE_MODE_MII = 2,
+	PHY_INTERFACE_MODE_GMII = 3,
+	PHY_INTERFACE_MODE_SGMII = 4,
+	PHY_INTERFACE_MODE_TBI = 5,
+	PHY_INTERFACE_MODE_REVMII = 6,
+	PHY_INTERFACE_MODE_RMII = 7,
+	PHY_INTERFACE_MODE_REVRMII = 8,
+	PHY_INTERFACE_MODE_RGMII = 9,
+	PHY_INTERFACE_MODE_RGMII_ID = 10,
+	PHY_INTERFACE_MODE_RGMII_RXID = 11,
+	PHY_INTERFACE_MODE_RGMII_TXID = 12,
+	PHY_INTERFACE_MODE_RTBI = 13,
+	PHY_INTERFACE_MODE_SMII = 14,
+	PHY_INTERFACE_MODE_XGMII = 15,
+	PHY_INTERFACE_MODE_XLGMII = 16,
+	PHY_INTERFACE_MODE_MOCA = 17,
+	PHY_INTERFACE_MODE_PSGMII = 18,
+	PHY_INTERFACE_MODE_QSGMII = 19,
+	PHY_INTERFACE_MODE_TRGMII = 20,
+	PHY_INTERFACE_MODE_100BASEX = 21,
+	PHY_INTERFACE_MODE_1000BASEX = 22,
+	PHY_INTERFACE_MODE_2500BASEX = 23,
+	PHY_INTERFACE_MODE_5GBASER = 24,
+	PHY_INTERFACE_MODE_RXAUI = 25,
+	PHY_INTERFACE_MODE_XAUI = 26,
+	PHY_INTERFACE_MODE_10GBASER = 27,
+	PHY_INTERFACE_MODE_25GBASER = 28,
+	PHY_INTERFACE_MODE_USXGMII = 29,
+	PHY_INTERFACE_MODE_10GKR = 30,
+	PHY_INTERFACE_MODE_QUSGMII = 31,
+	PHY_INTERFACE_MODE_1000BASEKX = 32,
+	PHY_INTERFACE_MODE_MAX = 33,
+} phy_interface_t;
+
+typedef void * (*devcon_match_fn_t)(const struct fwnode_handle *, const char *, void *);
+
+struct cache_type_info {
+	const char *size_prop;
+	const char *line_size_props[2];
+	const char *nr_sets_prop;
+};
+
+struct swnode {
+	struct kobject kobj;
+	struct fwnode_handle fwnode;
+	const struct software_node *node;
+	int id;
+	struct ida child_ids;
+	struct list_head entry;
+	struct list_head children;
+	struct swnode *parent;
+	unsigned int allocated: 1;
+	unsigned int managed: 1;
+};
+
+struct software_node_ref_args {
+	const struct software_node *node;
+	unsigned int nargs;
+	u64 args[8];
+};
+
+struct dev_pm_domain_attach_data {
+	const char * const *pd_names;
+	const u32 num_pd_names;
+	const u32 pd_flags;
+};
+
+struct dev_pm_domain_list {
+	struct device **pd_devs;
+	struct device_link **pd_links;
+	u32 num_pds;
+};
+
+typedef int (*pm_callback_t)(struct device *);
+
+struct suspend_stats {
+	int success;
+	int fail;
+	int failed_freeze;
+	int failed_prepare;
+	int failed_suspend;
+	int failed_suspend_late;
+	int failed_suspend_noirq;
+	int failed_resume;
+	int failed_resume_early;
+	int failed_resume_noirq;
+	int last_failed_dev;
+	char failed_devs[80];
+	int last_failed_errno;
+	int errno[2];
+	int last_failed_step;
+	u64 last_hw_sleep;
+	u64 total_hw_sleep;
+	u64 max_hw_sleep;
+	enum suspend_stat_step failed_steps[2];
+};
+
+struct firmware_fallback_config {
+	unsigned int force_sysfs_fallback;
+	unsigned int ignore_sysfs_fallback;
+	int old_timeout;
+	int loading_timeout;
+};
+
+struct firmware_cache {
+	spinlock_t lock;
+	struct list_head head;
+	int state;
+};
+
+enum fw_status {
+	FW_STATUS_UNKNOWN = 0,
+	FW_STATUS_LOADING = 1,
+	FW_STATUS_DONE = 2,
+	FW_STATUS_ABORTED = 3,
+};
+
+enum fw_opt {
+	FW_OPT_UEVENT = 1,
+	FW_OPT_NOWAIT = 2,
+	FW_OPT_USERHELPER = 4,
+	FW_OPT_NO_WARN = 8,
+	FW_OPT_NOCACHE = 16,
+	FW_OPT_NOFALLBACK_SYSFS = 32,
+	FW_OPT_FALLBACK_PLATFORM = 64,
+	FW_OPT_PARTIAL = 128,
+};
+
+struct fw_state {
+	struct completion completion;
+	enum fw_status status;
+};
+
+struct fw_priv {
+	struct kref ref;
+	struct list_head list;
+	struct firmware_cache *fwc;
+	struct fw_state fw_st;
+	void *data;
+	size_t size;
+	size_t allocated_size;
+	size_t offset;
+	u32 opt_flags;
+	bool is_paged_buf;
+	struct page **pages;
+	int nr_pages;
+	int page_array_size;
+	bool need_uevent;
+	struct list_head pending_list;
+	const char *fw_name;
+};
+
+struct firmware_work {
+	struct work_struct work;
+	struct module *module;
+	const char *name;
+	struct device *device;
+	void *context;
+	void (*cont)(const struct firmware *, void *);
+	u32 opt_flags;
+};
+
+struct fw_sysfs {
+	bool nowait;
+	struct device dev;
+	struct fw_priv *fw_priv;
+	struct firmware *fw;
+	void *fw_upload_priv;
+};
+
+struct builtin_fw {
+	char *name;
+	void *data;
+	unsigned long size;
+};
+
+struct for_each_memory_block_cb_data {
+	walk_memory_blocks_func_t func;
+	void *arg;
+};
+
+typedef void (*btf_trace_regmap_reg_write)(void *, struct regmap *, unsigned int, unsigned int);
+
+typedef void (*regmap_lock)(void *);
+
+typedef void (*regmap_unlock)(void *);
+
+struct regmap_format {
+	size_t buf_size;
+	size_t reg_bytes;
+	size_t pad_bytes;
+	size_t val_bytes;
+	s8 reg_shift;
+	void (*format_write)(struct regmap *, unsigned int, unsigned int);
+	void (*format_reg)(void *, unsigned int, unsigned int);
+	void (*format_val)(void *, unsigned int, unsigned int);
+	unsigned int (*parse_val)(const void *);
+	void (*parse_inplace)(void *);
+};
+
+enum regcache_type {
+	REGCACHE_NONE = 0,
+	REGCACHE_RBTREE = 1,
+	REGCACHE_FLAT = 2,
+	REGCACHE_MAPLE = 3,
+};
+
+struct hwspinlock;
+
+struct regmap_bus;
+
+struct regmap_access_table;
+
+struct regcache_ops;
+
+struct reg_default;
+
+struct reg_sequence;
+
+struct regmap {
+	union {
+		struct mutex mutex;
+		struct {
+			spinlock_t spinlock;
+			unsigned long spinlock_flags;
+		};
+		struct {
+			raw_spinlock_t raw_spinlock;
+			unsigned long raw_spinlock_flags;
+		};
+	};
+	regmap_lock lock;
+	regmap_unlock unlock;
+	void *lock_arg;
+	gfp_t alloc_flags;
+	unsigned int reg_base;
+	struct device *dev;
+	void *work_buf;
+	struct regmap_format format;
+	const struct regmap_bus *bus;
+	void *bus_context;
+	const char *name;
+	bool async;
+	spinlock_t async_lock;
+	wait_queue_head_t async_waitq;
+	struct list_head async_list;
+	struct list_head async_free;
+	int async_ret;
+	bool debugfs_disable;
+	struct dentry *debugfs;
+	const char *debugfs_name;
+	unsigned int debugfs_reg_len;
+	unsigned int debugfs_val_len;
+	unsigned int debugfs_tot_len;
+	struct list_head debugfs_off_cache;
+	struct mutex cache_lock;
+	unsigned int max_register;
+	bool (*writeable_reg)(struct device *, unsigned int);
+	bool (*readable_reg)(struct device *, unsigned int);
+	bool (*volatile_reg)(struct device *, unsigned int);
+	bool (*precious_reg)(struct device *, unsigned int);
+	bool (*writeable_noinc_reg)(struct device *, unsigned int);
+	bool (*readable_noinc_reg)(struct device *, unsigned int);
+	const struct regmap_access_table *wr_table;
+	const struct regmap_access_table *rd_table;
+	const struct regmap_access_table *volatile_table;
+	const struct regmap_access_table *precious_table;
+	const struct regmap_access_table *wr_noinc_table;
+	const struct regmap_access_table *rd_noinc_table;
+	int (*reg_read)(void *, unsigned int, unsigned int *);
+	int (*reg_write)(void *, unsigned int, unsigned int);
+	int (*reg_update_bits)(void *, unsigned int, unsigned int, unsigned int);
+	int (*read)(void *, const void *, size_t, void *, size_t);
+	int (*write)(void *, const void *, size_t);
+	bool defer_caching;
+	unsigned long read_flag_mask;
+	unsigned long write_flag_mask;
+	int reg_shift;
+	int reg_stride;
+	int reg_stride_order;
+	bool force_write_field;
+	const struct regcache_ops *cache_ops;
+	enum regcache_type cache_type;
+	unsigned int cache_size_raw;
+	unsigned int cache_word_size;
+	unsigned int num_reg_defaults;
+	unsigned int num_reg_defaults_raw;
+	bool cache_only;
+	bool cache_bypass;
+	bool cache_free;
+	struct reg_default *reg_defaults;
+	const void *reg_defaults_raw;
+	void *cache;
+	bool cache_dirty;
+	bool no_sync_defaults;
+	struct reg_sequence *patch;
+	int patch_regs;
+	bool use_single_read;
+	bool use_single_write;
+	bool can_multi_write;
+	size_t max_raw_read;
+	size_t max_raw_write;
+	struct rb_root range_tree;
+	void *selector_work_buf;
+	struct hwspinlock *hwlock;
+	bool can_sleep;
+};
+
+typedef int (*regmap_hw_write)(void *, const void *, size_t);
+
+typedef int (*regmap_hw_gather_write)(void *, const void *, size_t, const void *, size_t);
+
+struct regmap_async;
+
+typedef int (*regmap_hw_async_write)(void *, const void *, size_t, const void *, size_t, struct regmap_async *);
+
+typedef int (*regmap_hw_reg_write)(void *, unsigned int, unsigned int);
+
+typedef int (*regmap_hw_reg_noinc_write)(void *, unsigned int, const void *, size_t);
+
+typedef int (*regmap_hw_reg_update_bits)(void *, unsigned int, unsigned int, unsigned int);
+
+typedef int (*regmap_hw_read)(void *, const void *, size_t, void *, size_t);
+
+typedef int (*regmap_hw_reg_read)(void *, unsigned int, unsigned int *);
+
+typedef int (*regmap_hw_reg_noinc_read)(void *, unsigned int, void *, size_t);
+
+typedef void (*regmap_hw_free_context)(void *);
+
+typedef struct regmap_async * (*regmap_hw_async_alloc)();
+
+enum regmap_endian {
+	REGMAP_ENDIAN_DEFAULT = 0,
+	REGMAP_ENDIAN_BIG = 1,
+	REGMAP_ENDIAN_LITTLE = 2,
+	REGMAP_ENDIAN_NATIVE = 3,
+};
+
+struct regmap_bus {
+	bool fast_io;
+	bool free_on_exit;
+	regmap_hw_write write;
+	regmap_hw_gather_write gather_write;
+	regmap_hw_async_write async_write;
+	regmap_hw_reg_write reg_write;
+	regmap_hw_reg_noinc_write reg_noinc_write;
+	regmap_hw_reg_update_bits reg_update_bits;
+	regmap_hw_read read;
+	regmap_hw_reg_read reg_read;
+	regmap_hw_reg_noinc_read reg_noinc_read;
+	regmap_hw_free_context free_context;
+	regmap_hw_async_alloc async_alloc;
+	u8 read_flag_mask;
+	enum regmap_endian reg_format_endian_default;
+	enum regmap_endian val_format_endian_default;
+	size_t max_raw_read;
+	size_t max_raw_write;
+	u64 android_kabi_reserved1;
+};
+
+struct regmap_async {
+	struct list_head list;
+	struct regmap *map;
+	void *work_buf;
+};
+
+struct regmap_range;
+
+struct regmap_access_table {
+	const struct regmap_range *yes_ranges;
+	unsigned int n_yes_ranges;
+	const struct regmap_range *no_ranges;
+	unsigned int n_no_ranges;
+};
+
+struct regmap_range {
+	unsigned int range_min;
+	unsigned int range_max;
+};
+
+struct regcache_ops {
+	const char *name;
+	enum regcache_type type;
+	int (*init)(struct regmap *);
+	int (*exit)(struct regmap *);
+	void (*debugfs_init)(struct regmap *);
+	int (*read)(struct regmap *, unsigned int, unsigned int *);
+	int (*write)(struct regmap *, unsigned int, unsigned int);
+	int (*sync)(struct regmap *, unsigned int, unsigned int);
+	int (*drop)(struct regmap *, unsigned int, unsigned int);
+};
+
+struct reg_default {
+	unsigned int reg;
+	unsigned int def;
+};
+
+struct reg_sequence {
+	unsigned int reg;
+	unsigned int def;
+	unsigned int delay_us;
+};
+
+typedef void (*btf_trace_regmap_reg_read)(void *, struct regmap *, unsigned int, unsigned int);
+
+typedef void (*btf_trace_regmap_reg_read_cache)(void *, struct regmap *, unsigned int, unsigned int);
+
+typedef void (*btf_trace_regmap_bulk_write)(void *, struct regmap *, unsigned int, const void *, int);
+
+typedef void (*btf_trace_regmap_bulk_read)(void *, struct regmap *, unsigned int, const void *, int);
+
+typedef void (*btf_trace_regmap_hw_read_start)(void *, struct regmap *, unsigned int, int);
+
+typedef void (*btf_trace_regmap_hw_read_done)(void *, struct regmap *, unsigned int, int);
+
+typedef void (*btf_trace_regmap_hw_write_start)(void *, struct regmap *, unsigned int, int);
+
+typedef void (*btf_trace_regmap_hw_write_done)(void *, struct regmap *, unsigned int, int);
+
+typedef void (*btf_trace_regcache_sync)(void *, struct regmap *, const char *, const char *);
+
+typedef void (*btf_trace_regmap_cache_only)(void *, struct regmap *, bool);
+
+typedef void (*btf_trace_regmap_cache_bypass)(void *, struct regmap *, bool);
+
+typedef void (*btf_trace_regmap_async_write_start)(void *, struct regmap *, unsigned int, int);
+
+typedef void (*btf_trace_regmap_async_io_complete)(void *, struct regmap *);
+
+typedef void (*btf_trace_regmap_async_complete_start)(void *, struct regmap *);
+
+typedef void (*btf_trace_regmap_async_complete_done)(void *, struct regmap *);
+
+typedef void (*btf_trace_regcache_drop_region)(void *, struct regmap *, unsigned int, unsigned int);
+
+struct trace_event_raw_regmap_reg {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	unsigned int reg;
+	unsigned int val;
+	char __data[0];
+};
+
+struct trace_event_raw_regmap_bulk {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	unsigned int reg;
+	u32 __data_loc_buf;
+	int val_len;
+	char __data[0];
+};
+
+struct trace_event_raw_regmap_block {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	unsigned int reg;
+	int count;
+	char __data[0];
+};
+
+struct trace_event_raw_regcache_sync {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	u32 __data_loc_status;
+	u32 __data_loc_type;
+	char __data[0];
+};
+
+struct trace_event_raw_regmap_bool {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	int flag;
+	char __data[0];
+};
+
+struct trace_event_raw_regmap_async {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	char __data[0];
+};
+
+struct trace_event_raw_regcache_drop_region {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	unsigned int from;
+	unsigned int to;
+	char __data[0];
+};
+
+struct regmap_range_node {
+	struct rb_node node;
+	const char *name;
+	struct regmap *map;
+	unsigned int range_min;
+	unsigned int range_max;
+	unsigned int selector_reg;
+	unsigned int selector_mask;
+	int selector_shift;
+	unsigned int window_start;
+	unsigned int window_len;
+};
+
+struct trace_event_data_offsets_regmap_reg {
+	u32 name;
+};
+
+struct trace_event_data_offsets_regmap_bulk {
+	u32 name;
+	u32 buf;
+};
+
+struct trace_event_data_offsets_regmap_block {
+	u32 name;
+};
+
+struct trace_event_data_offsets_regmap_bool {
+	u32 name;
+};
+
+struct trace_event_data_offsets_regmap_async {
+	u32 name;
+};
+
+struct trace_event_data_offsets_regcache_drop_region {
+	u32 name;
+};
+
+struct regmap_range_cfg;
+
+struct regmap_config {
+	const char *name;
+	int reg_bits;
+	int reg_stride;
+	int reg_shift;
+	unsigned int reg_base;
+	int pad_bits;
+	int val_bits;
+	bool (*writeable_reg)(struct device *, unsigned int);
+	bool (*readable_reg)(struct device *, unsigned int);
+	bool (*volatile_reg)(struct device *, unsigned int);
+	bool (*precious_reg)(struct device *, unsigned int);
+	bool (*writeable_noinc_reg)(struct device *, unsigned int);
+	bool (*readable_noinc_reg)(struct device *, unsigned int);
+	bool disable_locking;
+	regmap_lock lock;
+	regmap_unlock unlock;
+	void *lock_arg;
+	int (*reg_read)(void *, unsigned int, unsigned int *);
+	int (*reg_write)(void *, unsigned int, unsigned int);
+	int (*reg_update_bits)(void *, unsigned int, unsigned int, unsigned int);
+	int (*read)(void *, const void *, size_t, void *, size_t);
+	int (*write)(void *, const void *, size_t);
+	size_t max_raw_read;
+	size_t max_raw_write;
+	bool fast_io;
+	bool io_port;
+	unsigned int max_register;
+	const struct regmap_access_table *wr_table;
+	const struct regmap_access_table *rd_table;
+	const struct regmap_access_table *volatile_table;
+	const struct regmap_access_table *precious_table;
+	const struct regmap_access_table *wr_noinc_table;
+	const struct regmap_access_table *rd_noinc_table;
+	const struct reg_default *reg_defaults;
+	unsigned int num_reg_defaults;
+	enum regcache_type cache_type;
+	const void *reg_defaults_raw;
+	unsigned int num_reg_defaults_raw;
+	unsigned long read_flag_mask;
+	unsigned long write_flag_mask;
+	bool zero_flag_mask;
+	bool use_single_read;
+	bool use_single_write;
+	bool use_relaxed_mmio;
+	bool can_multi_write;
+	enum regmap_endian reg_format_endian;
+	enum regmap_endian val_format_endian;
+	const struct regmap_range_cfg *ranges;
+	unsigned int num_ranges;
+	bool use_hwlock;
+	bool use_raw_spinlock;
+	unsigned int hwlock_id;
+	unsigned int hwlock_mode;
+	bool can_sleep;
+	u64 android_kabi_reserved1;
+};
+
+struct regmap_range_cfg {
+	const char *name;
+	unsigned int range_min;
+	unsigned int range_max;
+	unsigned int selector_reg;
+	unsigned int selector_mask;
+	int selector_shift;
+	unsigned int window_start;
+	unsigned int window_len;
+	u64 android_kabi_reserved1;
+};
+
+struct regmap_field {
+	struct regmap *regmap;
+	unsigned int mask;
+	unsigned int shift;
+	unsigned int reg;
+	unsigned int id_size;
+	unsigned int id_offset;
+};
+
+struct reg_field {
+	unsigned int reg;
+	unsigned int lsb;
+	unsigned int msb;
+	unsigned int id_size;
+	unsigned int id_offset;
+};
+
+struct trace_event_data_offsets_regcache_sync {
+	u32 name;
+	u32 status;
+	u32 type;
+};
+
+struct regcache_rbtree_node {
+	void *block;
+	unsigned long *cache_present;
+	unsigned int base_reg;
+	unsigned int blklen;
+	struct rb_node node;
+};
+
+struct regcache_rbtree_ctx {
+	struct rb_root root;
+	struct regcache_rbtree_node *cached_rbnode;
+};
+
+struct regmap_debugfs_node {
+	struct regmap *map;
+	struct list_head link;
+};
+
+struct regmap_debugfs_off_cache {
+	struct list_head list;
+	off_t min;
+	off_t max;
+	unsigned int base_reg;
+	unsigned int max_reg;
+};
+
+struct spi_delay {
+	u16 value;
+	u8 unit;
+};
+
+struct spi_controller;
+
+struct spi_statistics;
+
+struct spi_device {
+	struct device dev;
+	struct spi_controller *controller;
+	struct spi_controller *master;
+	u32 max_speed_hz;
+	u8 chip_select;
+	u8 bits_per_word;
+	bool rt;
+	u32 mode;
+	int irq;
+	void *controller_state;
+	void *controller_data;
+	char modalias[32];
+	const char *driver_override;
+	struct gpio_desc *cs_gpiod;
+	struct spi_delay word_delay;
+	struct spi_delay cs_setup;
+	struct spi_delay cs_hold;
+	struct spi_delay cs_inactive;
+	struct spi_statistics __attribute__((btf_type_tag("percpu"))) *pcpu_statistics;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct spi_message;
+
+struct spi_transfer;
+
+struct spi_controller_mem_ops;
+
+struct spi_controller_mem_caps;
+
+struct spi_controller {
+	struct device dev;
+	struct list_head list;
+	s16 bus_num;
+	u16 num_chipselect;
+	u16 dma_alignment;
+	u32 mode_bits;
+	u32 buswidth_override_bits;
+	u32 bits_per_word_mask;
+	u32 min_speed_hz;
+	u32 max_speed_hz;
+	u16 flags;
+	bool devm_allocated;
+	union {
+		bool slave;
+		bool target;
+	};
+	size_t (*max_transfer_size)(struct spi_device *);
+	size_t (*max_message_size)(struct spi_device *);
+	struct mutex io_mutex;
+	struct mutex add_lock;
+	spinlock_t bus_lock_spinlock;
+	struct mutex bus_lock_mutex;
+	bool bus_lock_flag;
+	int (*setup)(struct spi_device *);
+	int (*set_cs_timing)(struct spi_device *);
+	int (*transfer)(struct spi_device *, struct spi_message *);
+	void (*cleanup)(struct spi_device *);
+	bool (*can_dma)(struct spi_controller *, struct spi_device *, struct spi_transfer *);
+	struct device *dma_map_dev;
+	struct device *cur_rx_dma_dev;
+	struct device *cur_tx_dma_dev;
+	bool queued;
+	struct kthread_worker *kworker;
+	struct kthread_work pump_messages;
+	spinlock_t queue_lock;
+	struct list_head queue;
+	struct spi_message *cur_msg;
+	struct completion cur_msg_completion;
+	bool cur_msg_incomplete;
+	bool cur_msg_need_completion;
+	bool busy;
+	bool running;
+	bool rt;
+	bool auto_runtime_pm;
+	bool cur_msg_mapped;
+	char last_cs;
+	bool last_cs_mode_high;
+	bool fallback;
+	struct completion xfer_completion;
+	size_t max_dma_len;
+	int (*prepare_transfer_hardware)(struct spi_controller *);
+	int (*transfer_one_message)(struct spi_controller *, struct spi_message *);
+	int (*unprepare_transfer_hardware)(struct spi_controller *);
+	int (*prepare_message)(struct spi_controller *, struct spi_message *);
+	int (*unprepare_message)(struct spi_controller *, struct spi_message *);
+	union {
+		int (*slave_abort)(struct spi_controller *);
+		int (*target_abort)(struct spi_controller *);
+	};
+	void (*set_cs)(struct spi_device *, bool);
+	int (*transfer_one)(struct spi_controller *, struct spi_device *, struct spi_transfer *);
+	void (*handle_err)(struct spi_controller *, struct spi_message *);
+	const struct spi_controller_mem_ops *mem_ops;
+	const struct spi_controller_mem_caps *mem_caps;
+	struct gpio_desc **cs_gpiods;
+	bool use_gpio_descriptors;
+	s8 unused_native_cs;
+	s8 max_native_cs;
+	struct spi_statistics __attribute__((btf_type_tag("percpu"))) *pcpu_statistics;
+	struct dma_chan___2 *dma_tx;
+	struct dma_chan___2 *dma_rx;
+	void *dummy_rx;
+	void *dummy_tx;
+	int (*fw_translate_cs)(struct spi_controller *, unsigned int);
+	bool ptp_sts_supported;
+	unsigned long irq_flags;
+	bool queue_empty;
+	bool must_async;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct ptp_system_timestamp;
+
+struct spi_transfer {
+	const void *tx_buf;
+	void *rx_buf;
+	unsigned int len;
+	u16 error;
+	dma_addr_t tx_dma;
+	dma_addr_t rx_dma;
+	struct sg_table tx_sg;
+	struct sg_table rx_sg;
+	unsigned int dummy_data: 1;
+	unsigned int cs_off: 1;
+	unsigned int cs_change: 1;
+	unsigned int tx_nbits: 3;
+	unsigned int rx_nbits: 3;
+	unsigned int timestamped: 1;
+	u8 bits_per_word;
+	struct spi_delay delay;
+	struct spi_delay cs_change_delay;
+	struct spi_delay word_delay;
+	u32 speed_hz;
+	u32 effective_speed_hz;
+	unsigned int ptp_sts_word_pre;
+	unsigned int ptp_sts_word_post;
+	struct ptp_system_timestamp *ptp_sts;
+	struct list_head transfer_list;
+	u64 android_kabi_reserved1;
+};
+
+struct spi_message {
+	struct list_head transfers;
+	struct spi_device *spi;
+	unsigned int is_dma_mapped: 1;
+	bool prepared;
+	int status;
+	void (*complete)(void *);
+	void *context;
+	unsigned int frame_length;
+	unsigned int actual_length;
+	struct list_head queue;
+	void *state;
+	struct list_head resources;
+	u64 android_kabi_reserved1;
+	struct spi_transfer t[0];
+};
+
+struct spi_mem;
+
+struct spi_mem_op;
+
+struct spi_mem_dirmap_desc;
+
+struct spi_controller_mem_ops {
+	int (*adjust_op_size)(struct spi_mem *, struct spi_mem_op *);
+	bool (*supports_op)(struct spi_mem *, const struct spi_mem_op *);
+	int (*exec_op)(struct spi_mem *, const struct spi_mem_op *);
+	const char * (*get_name)(struct spi_mem *);
+	int (*dirmap_create)(struct spi_mem_dirmap_desc *);
+	void (*dirmap_destroy)(struct spi_mem_dirmap_desc *);
+	ssize_t (*dirmap_read)(struct spi_mem_dirmap_desc *, u64, size_t, void *);
+	ssize_t (*dirmap_write)(struct spi_mem_dirmap_desc *, u64, size_t, const void *);
+	int (*poll_status)(struct spi_mem *, const struct spi_mem_op *, u16, u16, unsigned long, unsigned long, unsigned long);
+};
+
+struct spi_controller_mem_caps {
+	bool dtr;
+	bool ecc;
+};
+
+struct spi_statistics {
+	struct u64_stats_sync syncp;
+	u64_stats_t messages;
+	u64_stats_t transfers;
+	u64_stats_t errors;
+	u64_stats_t timedout;
+	u64_stats_t spi_sync;
+	u64_stats_t spi_sync_immediate;
+	u64_stats_t spi_async;
+	u64_stats_t bytes;
+	u64_stats_t bytes_rx;
+	u64_stats_t bytes_tx;
+	u64_stats_t transfer_bytes_histo[17];
+	u64_stats_t transfers_split_maxsize;
+};
+
+struct regmap_async_spi {
+	struct regmap_async core;
+	struct spi_message m;
+	struct spi_transfer t[2];
+};
+
+struct spmi_controller;
+
+struct spmi_device {
+	struct device dev;
+	struct spmi_controller *ctrl;
+	u8 usid;
+};
+
+struct spmi_controller {
+	struct device dev;
+	unsigned int nr;
+	int (*cmd)(struct spmi_controller *, u8, u8);
+	int (*read_cmd)(struct spmi_controller *, u8, u8, u16, u8 *, size_t);
+	int (*write_cmd)(struct spmi_controller *, u8, u8, u16, const u8 *, size_t);
+	u64 android_kabi_reserved1;
+};
+
+struct regmap_mmio_context {
+	void *regs;
+	unsigned int val_bytes;
+	bool big_endian;
+	bool attached_clk;
+	struct clk *clk;
+	void (*reg_write)(struct regmap_mmio_context *, unsigned int, unsigned int);
+	unsigned int (*reg_read)(struct regmap_mmio_context *, unsigned int);
+};
+
+struct regmap_irq_chip;
+
+struct regmap_irq_chip_data {
+	struct mutex lock;
+	struct irq_chip irq_chip;
+	struct regmap *map;
+	const struct regmap_irq_chip *chip;
+	int irq_base;
+	struct irq_domain *domain;
+	int irq;
+	int wake_count;
+	void *status_reg_buf;
+	unsigned int *main_status_buf;
+	unsigned int *status_buf;
+	unsigned int *mask_buf;
+	unsigned int *mask_buf_def;
+	unsigned int *wake_buf;
+	unsigned int *type_buf;
+	unsigned int *type_buf_def;
+	unsigned int **config_buf;
+	unsigned int irq_reg_stride;
+	unsigned int (*get_irq_reg)(struct regmap_irq_chip_data *, unsigned int, int);
+	unsigned int clear_status: 1;
+};
+
+struct regmap_irq_sub_irq_map;
+
+struct regmap_irq;
+
+struct regmap_irq_chip {
+	const char *name;
+	unsigned int main_status;
+	unsigned int num_main_status_bits;
+	struct regmap_irq_sub_irq_map *sub_reg_offsets;
+	int num_main_regs;
+	unsigned int status_base;
+	unsigned int mask_base;
+	unsigned int unmask_base;
+	unsigned int ack_base;
+	unsigned int wake_base;
+	const unsigned int *config_base;
+	unsigned int irq_reg_stride;
+	unsigned int init_ack_masked: 1;
+	unsigned int mask_unmask_non_inverted: 1;
+	unsigned int use_ack: 1;
+	unsigned int ack_invert: 1;
+	unsigned int clear_ack: 1;
+	unsigned int status_invert: 1;
+	unsigned int wake_invert: 1;
+	unsigned int type_in_mask: 1;
+	unsigned int clear_on_unmask: 1;
+	unsigned int runtime_pm: 1;
+	unsigned int no_status: 1;
+	int num_regs;
+	const struct regmap_irq *irqs;
+	int num_irqs;
+	int num_config_bases;
+	int num_config_regs;
+	int (*handle_pre_irq)(void *);
+	int (*handle_post_irq)(void *);
+	int (*handle_mask_sync)(int, unsigned int, unsigned int, void *);
+	int (*set_type_config)(unsigned int **, unsigned int, const struct regmap_irq *, int, void *);
+	unsigned int (*get_irq_reg)(struct regmap_irq_chip_data *, unsigned int, int);
+	void *irq_drv_data;
+};
+
+struct regmap_irq_sub_irq_map {
+	unsigned int num_regs;
+	unsigned int *offset;
+};
+
+struct regmap_irq_type {
+	unsigned int type_reg_offset;
+	unsigned int type_reg_mask;
+	unsigned int type_rising_val;
+	unsigned int type_falling_val;
+	unsigned int type_level_low_val;
+	unsigned int type_level_high_val;
+	unsigned int types_supported;
+};
+
+struct regmap_irq {
+	unsigned int reg_offset;
+	unsigned int mask;
+	struct regmap_irq_type type;
+};
+
+struct soc_device_attribute {
+	const char *machine;
+	const char *family;
+	const char *revision;
+	const char *serial_number;
+	const char *soc_id;
+	const void *data;
+	const struct attribute_group *custom_attr_group;
+};
+
+struct soc_device {
+	struct device dev;
+	struct soc_device_attribute *attr;
+	int soc_dev_num;
+};
+
+struct devcd_entry {
+	struct device devcd_dev;
+	void *data;
+	size_t datalen;
+	struct mutex mutex;
+	bool delete_work;
+	struct module *owner;
+	ssize_t (*read)(char *, loff_t, size_t, void *, size_t);
+	void (*free)(void *);
+	struct delayed_work del_wk;
+	struct device *failing_dev;
+};
+
+typedef void (*irq_write_msi_msg_t)(struct msi_desc *, struct msi_msg *);
+
+struct platform_msi_priv_data {
+	struct device *dev;
+	void *host_data;
+	msi_alloc_info_t arg;
+	irq_write_msi_msg_t write_msg;
+	int devid;
+};
+
+typedef void (*btf_trace_devres_log)(void *, struct device *, const char *, void *, const char *, size_t);
+
+struct trace_event_raw_devres {
+	struct trace_entry ent;
+	u32 __data_loc_devname;
+	struct device *dev;
+	const char *op;
+	void *node;
+	const char *name;
+	size_t size;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_devres {
+	u32 devname;
+};
+
+struct brd_device {
+	int brd_number;
+	struct gendisk *brd_disk;
+	struct list_head brd_list;
+	struct xarray brd_pages;
+	u64 brd_nr_pages;
+};
+
+enum {
+	Lo_unbound = 0,
+	Lo_bound = 1,
+	Lo_rundown = 2,
+	Lo_deleting = 3,
+};
+
+enum {
+	LO_FLAGS_READ_ONLY = 1,
+	LO_FLAGS_AUTOCLEAR = 4,
+	LO_FLAGS_PARTSCAN = 8,
+	LO_FLAGS_DIRECT_IO = 16,
+};
+
+struct loop_device {
+	int lo_number;
+	loff_t lo_offset;
+	loff_t lo_sizelimit;
+	int lo_flags;
+	char lo_file_name[64];
+	struct file *lo_backing_file;
+	struct block_device *lo_device;
+	gfp_t old_gfp_mask;
+	spinlock_t lo_lock;
+	int lo_state;
+	spinlock_t lo_work_lock;
+	struct workqueue_struct *workqueue;
+	struct work_struct rootcg_work;
+	struct list_head rootcg_cmd_list;
+	struct list_head idle_worker_list;
+	struct rb_root worker_tree;
+	struct timer_list timer;
+	bool use_dio;
+	bool sysfs_inited;
+	struct request_queue *lo_queue;
+	struct blk_mq_tag_set tag_set;
+	struct gendisk *lo_disk;
+	struct mutex lo_mutex;
+	bool idr_visible;
+};
+
+struct loop_worker {
+	struct rb_node rb_node;
+	struct work_struct work;
+	struct list_head cmd_list;
+	struct list_head idle_list;
+	struct loop_device *lo;
+	struct cgroup_subsys_state *blkcg_css;
+	unsigned long last_ran_at;
+};
+
+struct loop_cmd {
+	struct list_head list_entry;
+	bool use_aio;
+	atomic_t ref;
+	long ret;
+	struct kiocb iocb;
+	struct bio_vec *bvec;
+	struct cgroup_subsys_state *blkcg_css;
+	struct cgroup_subsys_state *memcg_css;
+};
+
+typedef u16 compat_dev_t;
+
+struct compat_loop_info {
+	compat_int_t lo_number;
+	compat_dev_t lo_device;
+	compat_ulong_t lo_inode;
+	compat_dev_t lo_rdevice;
+	compat_int_t lo_offset;
+	compat_int_t lo_encrypt_type;
+	compat_int_t lo_encrypt_key_size;
+	compat_int_t lo_flags;
+	char lo_name[64];
+	unsigned char lo_encrypt_key[32];
+	compat_ulong_t lo_init[2];
+	char reserved[4];
+};
+
+struct loop_info64 {
+	__u64 lo_device;
+	__u64 lo_inode;
+	__u64 lo_rdevice;
+	__u64 lo_offset;
+	__u64 lo_sizelimit;
+	__u32 lo_number;
+	__u32 lo_encrypt_type;
+	__u32 lo_encrypt_key_size;
+	__u32 lo_flags;
+	__u8 lo_file_name[64];
+	__u8 lo_crypt_name[64];
+	__u8 lo_encrypt_key[32];
+	__u64 lo_init[2];
+};
+
+typedef unsigned long __kernel_old_dev_t;
+
+struct loop_info {
+	int lo_number;
+	__kernel_old_dev_t lo_device;
+	unsigned long lo_inode;
+	__kernel_old_dev_t lo_rdevice;
+	int lo_offset;
+	int lo_encrypt_type;
+	int lo_encrypt_key_size;
+	int lo_flags;
+	char lo_name[64];
+	unsigned char lo_encrypt_key[32];
+	unsigned long lo_init[2];
+	char reserved[4];
+};
+
+struct loop_config {
+	__u32 fd;
+	__u32 block_size;
+	struct loop_info64 info;
+	__u64 __reserved[8];
+};
+
+struct ublk_io {
+	__u64 addr;
+	unsigned int flags;
+	int res;
+	struct io_uring_cmd *cmd;
+};
+
+struct ublk_device;
+
+struct ublk_queue {
+	int q_id;
+	int q_depth;
+	unsigned long flags;
+	struct task_struct *ubq_daemon;
+	char *io_cmd_buf;
+	struct llist_head io_cmds;
+	unsigned long io_addr;
+	unsigned int max_io_sz;
+	bool force_abort;
+	bool timeout;
+	unsigned short nr_io_ready;
+	spinlock_t cancel_lock;
+	struct ublk_device *dev;
+	struct ublk_io ios[0];
+};
+
+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;
+	__u32 owner_uid;
+	__u32 owner_gid;
+	__u64 reserved1;
+	__u64 reserved2;
+};
+
+struct ublk_param_basic {
+	__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_param_devt {
+	__u32 char_major;
+	__u32 char_minor;
+	__u32 disk_major;
+	__u32 disk_minor;
+};
+
+struct ublk_param_zoned {
+	__u32 max_open_zones;
+	__u32 max_active_zones;
+	__u32 max_zone_append_sectors;
+	__u8 reserved[20];
+};
+
+struct ublk_params {
+	__u32 len;
+	__u32 types;
+	struct ublk_param_basic basic;
+	struct ublk_param_discard discard;
+	struct ublk_param_devt devt;
+	struct ublk_param_zoned zoned;
+};
+
+struct ublk_device {
+	struct gendisk *ub_disk;
+	char *__queues;
+	unsigned int queue_size;
+	struct ublksrv_ctrl_dev_info dev_info;
+	struct blk_mq_tag_set tag_set;
+	struct cdev cdev;
+	struct device cdev_dev;
+	unsigned long state;
+	int ub_number;
+	struct mutex mutex;
+	spinlock_t mm_lock;
+	struct mm_struct *mm;
+	struct ublk_params params;
+	struct completion completion;
+	unsigned int nr_queues_ready;
+	unsigned int nr_privileged_daemon;
+	struct delayed_work monitor_work;
+	struct work_struct quiesce_work;
+	struct work_struct stop_work;
+};
+
+struct ublksrv_ctrl_cmd {
+	__u32 dev_id;
+	__u16 queue_id;
+	__u16 len;
+	__u64 addr;
+	__u64 data[1];
+	__u16 dev_path_len;
+	__u16 pad;
+	__u32 reserved;
+};
+
+struct ublk_rq_data {
+	struct llist_node node;
+	struct kref ref;
+	__u64 sector;
+	__u32 operation;
+	__u32 nr_zones;
+};
+
+struct ublksrv_io_desc {
+	__u32 op_flags;
+	union {
+		__u32 nr_sectors;
+		__u32 nr_zones;
+	};
+	__u64 start_sector;
+	__u64 addr;
+};
+
+struct ublk_uring_cmd_pdu {
+	struct ublk_queue *ubq;
+};
+
+struct ublk_io_iter {
+	struct page *pages[32];
+	struct bio *bio;
+	struct bvec_iter iter;
+};
+
+struct ublksrv_io_cmd {
+	__u16 q_id;
+	__u16 tag;
+	__s32 result;
+	union {
+		__u64 addr;
+		__u64 zone_append_lba;
+	};
+};
+
+struct ublk_params_header {
+	__u32 len;
+	__u32 types;
+};
+
+struct sram_config {
+	int (*init)();
+	bool map_only_reserved;
+};
+
+struct sram_reserve {
+	struct list_head list;
+	u32 start;
+	u32 size;
+	struct resource res;
+	bool export;
+	bool pool;
+	bool protect_exec;
+	const char *label;
+};
+
+struct sram_partition {
+	void *base;
+	struct gen_pool *pool;
+	struct bin_attribute battr;
+	struct mutex lock;
+	struct list_head list;
+};
+
+struct sram_dev {
+	const struct sram_config *config;
+	struct device *dev;
+	void *virt_base;
+	bool no_memory_wc;
+	struct gen_pool *pool;
+	struct sram_partition *partition;
+	u32 partitions;
+};
+
+struct io_stats {
+	u64 read_bytes;
+	u64 write_bytes;
+	u64 rchar;
+	u64 wchar;
+	u64 fsync;
+};
+
+struct uid_entry {
+	uid_t uid;
+	u64 utime;
+	u64 stime;
+	int state;
+	struct io_stats io[4];
+	struct hlist_node hash;
+};
+
+struct update_stats_work {
+	uid_t uid;
+	struct task_io_accounting ioac;
+	u64 utime;
+	u64 stime;
+	struct llist_node node;
+};
+
+struct task_entry {
+	char comm[256];
+	pid_t pid;
+	struct io_stats io[4];
+	struct hlist_node hash;
+};
+
+struct syscon {
+	struct device_node *np;
+	struct regmap *regmap;
+	struct reset_control *reset;
+	struct list_head list;
+};
+
+struct syscon_platform_data {
+	const char *label;
+};
+
+enum nvdimm_passphrase_type {
+	NVDIMM_USER = 0,
+	NVDIMM_MASTER = 1,
+};
+
+enum nvdimm_fwa_state {
+	NVDIMM_FWA_INVALID = 0,
+	NVDIMM_FWA_IDLE = 1,
+	NVDIMM_FWA_ARMED = 2,
+	NVDIMM_FWA_BUSY = 3,
+	NVDIMM_FWA_ARM_OVERFLOW = 4,
+};
+
+enum nvdimm_fwa_result {
+	NVDIMM_FWA_RESULT_INVALID = 0,
+	NVDIMM_FWA_RESULT_NONE = 1,
+	NVDIMM_FWA_RESULT_SUCCESS = 2,
+	NVDIMM_FWA_RESULT_NOTSTAGED = 3,
+	NVDIMM_FWA_RESULT_NEEDRESET = 4,
+	NVDIMM_FWA_RESULT_FAIL = 5,
+};
+
+enum nvdimm_fwa_trigger {
+	NVDIMM_FWA_ARM = 0,
+	NVDIMM_FWA_DISARM = 1,
+};
+
+enum nvdimm_fwa_capability {
+	NVDIMM_FWA_CAP_INVALID = 0,
+	NVDIMM_FWA_CAP_NONE = 1,
+	NVDIMM_FWA_CAP_QUIESCE = 2,
+	NVDIMM_FWA_CAP_LIVE = 3,
+};
+
+enum {
+	ND_CMD_IMPLEMENTED = 0,
+	ND_CMD_ARS_CAP = 1,
+	ND_CMD_ARS_START = 2,
+	ND_CMD_ARS_STATUS = 3,
+	ND_CMD_CLEAR_ERROR = 4,
+	ND_CMD_SMART = 1,
+	ND_CMD_SMART_THRESHOLD = 2,
+	ND_CMD_DIMM_FLAGS = 3,
+	ND_CMD_GET_CONFIG_SIZE = 4,
+	ND_CMD_GET_CONFIG_DATA = 5,
+	ND_CMD_SET_CONFIG_DATA = 6,
+	ND_CMD_VENDOR_EFFECT_LOG_SIZE = 7,
+	ND_CMD_VENDOR_EFFECT_LOG = 8,
+	ND_CMD_VENDOR = 9,
+	ND_CMD_CALL = 10,
+};
+
+struct nvdimm_bus;
+
+struct nvdimm_map {
+	struct nvdimm_bus *nvdimm_bus;
+	struct list_head list;
+	resource_size_t offset;
+	unsigned long flags;
+	size_t size;
+	union {
+		void *mem;
+		void *iomem;
+	};
+	struct kref kref;
+};
+
+struct badrange {
+	struct list_head list;
+	spinlock_t lock;
+};
+
+struct nvdimm_bus_descriptor;
+
+struct nvdimm_bus {
+	struct nvdimm_bus_descriptor *nd_desc;
+	wait_queue_head_t wait;
+	struct list_head list;
+	struct device dev;
+	int id;
+	int probe_active;
+	atomic_t ioctl_active;
+	struct list_head mapping_list;
+	struct mutex reconfig_mutex;
+	struct badrange badrange;
+};
+
+struct nvdimm;
+
+typedef int (*ndctl_fn)(struct nvdimm_bus_descriptor *, struct nvdimm *, unsigned int, void *, unsigned int, int *);
+
+struct nvdimm_bus_fw_ops;
+
+struct nvdimm_bus_descriptor {
+	const struct attribute_group **attr_groups;
+	unsigned long cmd_mask;
+	unsigned long dimm_family_mask;
+	unsigned long bus_family_mask;
+	struct module *module;
+	char *provider_name;
+	struct device_node *of_node;
+	ndctl_fn ndctl;
+	int (*flush_probe)(struct nvdimm_bus_descriptor *);
+	int (*clear_to_send)(struct nvdimm_bus_descriptor *, struct nvdimm *, unsigned int, void *);
+	const struct nvdimm_bus_fw_ops *fw_ops;
+};
+
+struct nvdimm_security_ops;
+
+struct nvdimm_fw_ops;
+
+struct nvdimm {
+	unsigned long flags;
+	void *provider_data;
+	unsigned long cmd_mask;
+	struct device dev;
+	atomic_t busy;
+	int id;
+	int num_flush;
+	struct resource *flush_wpq;
+	const char *dimm_id;
+	struct {
+		const struct nvdimm_security_ops *ops;
+		unsigned long flags;
+		unsigned long ext_flags;
+		unsigned int overwrite_tmo;
+		struct kernfs_node *overwrite_state;
+	} sec;
+	struct delayed_work dwork;
+	const struct nvdimm_fw_ops *fw_ops;
+};
+
+struct nvdimm_key_data;
+
+struct nvdimm_security_ops {
+	unsigned long (*get_flags)(struct nvdimm *, enum nvdimm_passphrase_type);
+	int (*freeze)(struct nvdimm *);
+	int (*change_key)(struct nvdimm *, const struct nvdimm_key_data *, const struct nvdimm_key_data *, enum nvdimm_passphrase_type);
+	int (*unlock)(struct nvdimm *, const struct nvdimm_key_data *);
+	int (*disable)(struct nvdimm *, const struct nvdimm_key_data *);
+	int (*erase)(struct nvdimm *, const struct nvdimm_key_data *, enum nvdimm_passphrase_type);
+	int (*overwrite)(struct nvdimm *, const struct nvdimm_key_data *);
+	int (*query_overwrite)(struct nvdimm *);
+	int (*disable_master)(struct nvdimm *, const struct nvdimm_key_data *);
+};
+
+struct nvdimm_key_data {
+	u8 data[32];
+};
+
+struct nvdimm_fw_ops {
+	enum nvdimm_fwa_state (*activate_state)(struct nvdimm *);
+	enum nvdimm_fwa_result (*activate_result)(struct nvdimm *);
+	int (*arm)(struct nvdimm *, enum nvdimm_fwa_trigger);
+};
+
+struct nvdimm_bus_fw_ops {
+	enum nvdimm_fwa_state (*activate_state)(struct nvdimm_bus_descriptor *);
+	enum nvdimm_fwa_capability (*capability)(struct nvdimm_bus_descriptor *);
+	int (*activate)(struct nvdimm_bus_descriptor *);
+};
+
+struct nd_cmd_desc {
+	int in_num;
+	int out_num;
+	u32 in_sizes[5];
+	int out_sizes[5];
+};
+
+enum nvdimm_event {
+	NVDIMM_REVALIDATE_POISON = 0,
+	NVDIMM_REVALIDATE_REGION = 1,
+};
+
+struct nd_device_driver {
+	struct device_driver drv;
+	unsigned long type;
+	int (*probe)(struct device *);
+	void (*remove)(struct device *);
+	void (*shutdown)(struct device *);
+	void (*notify)(struct device *, enum nvdimm_event);
+};
+
+enum nd_async_mode {
+	ND_SYNC = 0,
+	ND_ASYNC = 1,
+};
+
+enum nd_ioctl_mode {
+	BUS_IOCTL = 0,
+	DIMM_IOCTL = 1,
+};
+
+enum {
+	NDD_UNARMED = 1,
+	NDD_LOCKED = 2,
+	NDD_SECURITY_OVERWRITE = 3,
+	NDD_WORK_PENDING = 4,
+	NDD_LABELING = 6,
+	NDD_INCOHERENT = 7,
+	NDD_REGISTER_SYNC = 8,
+	ND_IOCTL_MAX_BUFLEN = 4194304,
+	ND_CMD_MAX_ELEM = 5,
+	ND_CMD_MAX_ENVELOPE = 256,
+	ND_MAX_MAPPINGS = 32,
+	ND_REGION_PAGEMAP = 0,
+	ND_REGION_PERSIST_CACHE = 1,
+	ND_REGION_PERSIST_MEMCTRL = 2,
+	ND_REGION_ASYNC = 3,
+	ND_REGION_CXL = 4,
+	DPA_RESOURCE_ADJUSTED = 1,
+};
+
+enum nvdimm_claim_class {
+	NVDIMM_CCLASS_NONE = 0,
+	NVDIMM_CCLASS_BTT = 1,
+	NVDIMM_CCLASS_BTT2 = 2,
+	NVDIMM_CCLASS_PFN = 3,
+	NVDIMM_CCLASS_DAX = 4,
+	NVDIMM_CCLASS_UNKNOWN = 5,
+};
+
+enum nd_pfn_mode {
+	PFN_MODE_NONE = 0,
+	PFN_MODE_RAM = 1,
+	PFN_MODE_PMEM = 2,
+};
+
+struct nd_cmd_pkg {
+	__u64 nd_family;
+	__u64 nd_command;
+	__u32 nd_size_in;
+	__u32 nd_size_out;
+	__u32 nd_reserved2[9];
+	__u32 nd_fw_size;
+	unsigned char nd_payload[0];
+};
+
+struct nd_cmd_clear_error {
+	__u64 address;
+	__u64 length;
+	__u32 status;
+	__u8 reserved[4];
+	__u64 cleared;
+};
+
+struct nd_namespace_common {
+	int force_raw;
+	struct device dev;
+	struct device *claim;
+	enum nvdimm_claim_class claim_class;
+	int (*rw_bytes)(struct nd_namespace_common *, resource_size_t, void *, size_t, int, unsigned long);
+};
+
+struct nd_namespace_io {
+	struct nd_namespace_common common;
+	struct resource res;
+	resource_size_t size;
+	void *addr;
+	struct badblocks bb;
+};
+
+struct badrange_entry {
+	u64 start;
+	u64 length;
+	struct list_head list;
+};
+
+struct clear_badblocks_context {
+	resource_size_t phys;
+	resource_size_t cleared;
+};
+
+struct nvdimm_drvdata;
+
+struct nd_mapping {
+	struct nvdimm *nvdimm;
+	u64 start;
+	u64 size;
+	int position;
+	struct list_head labels;
+	struct mutex lock;
+	struct nvdimm_drvdata *ndd;
+};
+
+struct nd_interleave_set;
+
+struct nd_percpu_lane;
+
+struct nd_region {
+	struct device dev;
+	struct ida ns_ida;
+	struct ida btt_ida;
+	struct ida pfn_ida;
+	struct ida dax_ida;
+	unsigned long flags;
+	struct device *ns_seed;
+	struct device *btt_seed;
+	struct device *pfn_seed;
+	struct device *dax_seed;
+	unsigned long align;
+	u16 ndr_mappings;
+	u64 ndr_size;
+	u64 ndr_start;
+	int id;
+	int num_lanes;
+	int ro;
+	int numa_node;
+	int target_node;
+	void *provider_data;
+	struct kernfs_node *bb_state;
+	struct badblocks bb;
+	struct nd_interleave_set *nd_set;
+	struct nd_percpu_lane __attribute__((btf_type_tag("percpu"))) *lane;
+	int (*flush)(struct nd_region *, struct bio *);
+	struct nd_mapping mapping[0];
+};
+
+struct nd_interleave_set {
+	u64 cookie1;
+	u64 cookie2;
+	u64 altcookie;
+	guid_t type_guid;
+};
+
+struct nd_percpu_lane {
+	int count;
+	spinlock_t lock;
+};
+
+struct nd_cmd_get_config_size {
+	__u32 status;
+	__u32 config_size;
+	__u32 max_xfer;
+};
+
+struct nvdimm_drvdata {
+	struct device *dev;
+	int nslabel_size;
+	struct nd_cmd_get_config_size nsarea;
+	void *data;
+	bool cxl;
+	int ns_current;
+	int ns_next;
+	struct resource dpa;
+	struct kref kref;
+};
+
+struct nd_cmd_vendor_hdr {
+	__u32 opcode;
+	__u32 in_length;
+	__u8 in_buf[0];
+};
+
+struct nd_cmd_set_config_hdr {
+	__u32 in_offset;
+	__u32 in_length;
+	__u8 in_buf[0];
+};
+
+struct btt;
+
+struct nd_btt {
+	struct device dev;
+	struct nd_namespace_common *ndns;
+	struct btt *btt;
+	unsigned long lbasize;
+	u64 size;
+	uuid_t *uuid;
+	int id;
+	int initial_offset;
+	u16 version_major;
+	u16 version_minor;
+};
+
+struct nd_cmd_ars_cap {
+	__u64 address;
+	__u64 length;
+	__u32 status;
+	__u32 max_ars_out;
+	__u32 clear_err_unit;
+	__u16 flags;
+	__u16 reserved;
+};
+
+struct nd_pfn_sb;
+
+struct nd_pfn {
+	int id;
+	uuid_t *uuid;
+	struct device dev;
+	unsigned long align;
+	unsigned long npfns;
+	enum nd_pfn_mode mode;
+	struct nd_pfn_sb *pfn_sb;
+	struct nd_namespace_common *ndns;
+};
+
+struct nd_pfn_sb {
+	u8 signature[16];
+	u8 uuid[16];
+	u8 parent_uuid[16];
+	__le32 flags;
+	__le16 version_major;
+	__le16 version_minor;
+	__le64 dataoff;
+	__le64 npfns;
+	__le32 mode;
+	__le32 start_pad;
+	__le32 end_trunc;
+	__le32 align;
+	__le32 page_size;
+	__le16 page_struct_size;
+	u8 padding[3994];
+	__le64 checksum;
+};
+
+struct nd_dax {
+	struct nd_pfn nd_pfn;
+};
+
+enum nvdimm_security_bits {
+	NVDIMM_SECURITY_DISABLED = 0,
+	NVDIMM_SECURITY_UNLOCKED = 1,
+	NVDIMM_SECURITY_LOCKED = 2,
+	NVDIMM_SECURITY_FROZEN = 3,
+	NVDIMM_SECURITY_OVERWRITE = 4,
+};
+
+struct nd_cmd_get_config_data_hdr {
+	__u32 in_offset;
+	__u32 in_length;
+	__u32 status;
+	__u8 out_buf[0];
+};
+
+struct nd_label_id {
+	char id[50];
+};
+
+struct nvdimm_pmu {
+	struct pmu pmu;
+	struct device *dev;
+	int cpu;
+	struct hlist_node node;
+	enum cpuhp_state cpuhp_state;
+	struct cpumask arch_cpumask;
+};
+
+enum {
+	ND_MAX_LANES = 256,
+	INT_LBASIZE_ALIGNMENT = 64,
+	NVDIMM_IO_ATOMIC = 1,
+};
+
+struct nd_namespace_label;
+
+struct nd_label_ent {
+	struct list_head list;
+	unsigned long flags;
+	struct nd_namespace_label *label;
+};
+
+struct nvdimm_cxl_label {
+	u8 type[16];
+	u8 uuid[16];
+	u8 name[64];
+	__le32 flags;
+	__le16 nrange;
+	__le16 position;
+	__le64 dpa;
+	__le64 rawsize;
+	__le32 slot;
+	__le32 align;
+	u8 region_uuid[16];
+	u8 abstraction_uuid[16];
+	__le16 lbasize;
+	u8 reserved[86];
+	__le64 checksum;
+};
+
+struct nvdimm_efi_label {
+	u8 uuid[16];
+	u8 name[64];
+	__le32 flags;
+	__le16 nlabel;
+	__le16 position;
+	__le64 isetcookie;
+	__le64 lbasize;
+	__le64 dpa;
+	__le64 rawsize;
+	__le32 slot;
+	u8 align;
+	u8 reserved[3];
+	guid_t type_guid;
+	guid_t abstraction_guid;
+	u8 reserved2[88];
+	__le64 checksum;
+};
+
+struct nd_namespace_label {
+	union {
+		struct nvdimm_cxl_label cxl;
+		struct nvdimm_efi_label efi;
+	};
+};
+
+struct nd_region_data {
+	int ns_count;
+	int ns_active;
+	unsigned int hints_shift;
+	void *flush_wpq[0];
+};
+
+struct nd_namespace_index {
+	u8 sig[16];
+	u8 flags[3];
+	u8 labelsize;
+	__le32 seq;
+	__le64 myoff;
+	__le64 mysize;
+	__le64 otheroff;
+	__le64 labeloff;
+	__le32 nslot;
+	__le16 major;
+	__le16 minor;
+	__le64 checksum;
+	u8 free[0];
+};
+
+struct nd_mapping_desc;
+
+struct nd_region_desc {
+	struct resource *res;
+	struct nd_mapping_desc *mapping;
+	u16 num_mappings;
+	const struct attribute_group **attr_groups;
+	struct nd_interleave_set *nd_set;
+	void *provider_data;
+	int num_lanes;
+	int numa_node;
+	int target_node;
+	unsigned long flags;
+	int memregion;
+	struct device_node *of_node;
+	int (*flush)(struct nd_region *, struct bio *);
+};
+
+struct nd_mapping_desc {
+	struct nvdimm *nvdimm;
+	u64 start;
+	u64 size;
+	int position;
+};
+
+struct conflict_context {
+	struct nd_region *nd_region;
+	resource_size_t start;
+	resource_size_t size;
+};
+
+enum {
+	ND_MIN_NAMESPACE_SIZE = 4096,
+};
+
+enum alloc_loc {
+	ALLOC_ERR = 0,
+	ALLOC_BEFORE = 1,
+	ALLOC_MID = 2,
+	ALLOC_AFTER = 3,
+};
+
+enum nd_label_flags {
+	ND_LABEL_REAP = 0,
+};
+
+enum {
+	NSINDEX_SIG_LEN = 16,
+	NSINDEX_ALIGN = 256,
+	NSINDEX_SEQ_MASK = 3,
+	NSLABEL_UUID_LEN = 16,
+	NSLABEL_NAME_LEN = 64,
+	NSLABEL_FLAG_ROLABEL = 1,
+	NSLABEL_FLAG_LOCAL = 2,
+	NSLABEL_FLAG_BTT = 4,
+	NSLABEL_FLAG_UPDATING = 8,
+	BTT_ALIGN = 4096,
+	BTTINFO_SIG_LEN = 16,
+	BTTINFO_UUID_LEN = 16,
+	BTTINFO_FLAG_ERROR = 1,
+	BTTINFO_MAJOR_VERSION = 1,
+	ND_LABEL_MIN_SIZE = 1024,
+	ND_LABEL_ID_SIZE = 50,
+	ND_NSINDEX_INIT = 1,
+};
+
+struct nd_namespace_pmem {
+	struct nd_namespace_io nsio;
+	unsigned long lbasize;
+	char *alt_name;
+	uuid_t *uuid;
+	int id;
+};
+
+struct btt {
+	struct gendisk *btt_disk;
+	struct list_head arena_list;
+	struct dentry *debugfs_dir;
+	struct nd_btt *nd_btt;
+	u64 nlba;
+	unsigned long long rawsize;
+	u32 lbasize;
+	u32 sector_size;
+	struct nd_region *nd_region;
+	struct mutex init_lock;
+	int init_state;
+	int num_arenas;
+	struct badblocks *phys_bb;
+};
+
+struct nd_gen_sb {
+	char reserved[4088];
+	__le64 checksum;
+};
+
+struct btt_sb {
+	u8 signature[16];
+	u8 uuid[16];
+	u8 parent_uuid[16];
+	__le32 flags;
+	__le16 version_major;
+	__le16 version_minor;
+	__le32 external_lbasize;
+	__le32 external_nlba;
+	__le32 internal_lbasize;
+	__le32 internal_nlba;
+	__le32 nfree;
+	__le32 infosize;
+	__le64 nextoff;
+	__le64 dataoff;
+	__le64 mapoff;
+	__le64 logoff;
+	__le64 info2off;
+	u8 padding[3968];
+	__le64 checksum;
+};
+
+enum dax_access_mode {
+	DAX_ACCESS = 0,
+	DAX_RECOVERY_WRITE = 1,
+};
+
+struct dax_operations {
+	long (*direct_access)(struct dax_device *, unsigned long, long, enum dax_access_mode, void **, pfn_t *);
+	bool (*dax_supported)(struct dax_device *, struct block_device *, int, sector_t, sector_t);
+	int (*zero_page_range)(struct dax_device *, unsigned long, size_t);
+	size_t (*recovery_write)(struct dax_device *, unsigned long, void *, size_t, struct iov_iter *);
+};
+
+struct pmem_device {
+	phys_addr_t phys_addr;
+	phys_addr_t data_offset;
+	u64 pfn_flags;
+	void *virt_addr;
+	size_t size;
+	u32 pfn_pad;
+	struct kernfs_node *bb_state;
+	struct badblocks bb;
+	struct dax_device *dax_dev;
+	struct gendisk *disk;
+	struct dev_pagemap pgmap;
+};
+
+enum btt_init_state {
+	INIT_UNCHECKED = 0,
+	INIT_NOTFOUND = 1,
+	INIT_READY = 2,
+};
+
+enum log_ent_request {
+	LOG_NEW_ENT = 0,
+	LOG_OLD_ENT = 1,
+};
+
+struct free_entry;
+
+struct aligned_lock;
+
+struct arena_info {
+	u64 size;
+	u64 external_lba_start;
+	u32 internal_nlba;
+	u32 internal_lbasize;
+	u32 external_nlba;
+	u32 external_lbasize;
+	u32 nfree;
+	u16 version_major;
+	u16 version_minor;
+	u32 sector_size;
+	u64 nextoff;
+	u64 infooff;
+	u64 dataoff;
+	u64 mapoff;
+	u64 logoff;
+	u64 info2off;
+	struct free_entry *freelist;
+	u32 *rtt;
+	struct aligned_lock *map_locks;
+	struct nd_btt *nd_btt;
+	struct list_head list;
+	struct dentry *debugfs_dir;
+	u32 flags;
+	struct mutex err_lock;
+	int log_index[2];
+};
+
+struct free_entry {
+	u32 block;
+	u8 sub;
+	u8 seq;
+	u8 has_err;
+};
+
+struct aligned_lock {
+	union {
+		spinlock_t lock;
+		u8 cacheline_padding[64];
+	};
+};
+
+struct log_entry {
+	__le32 lba;
+	__le32 old_map;
+	__le32 new_map;
+	__le32 seq;
+};
+
+struct log_group {
+	struct log_entry ent[4];
+};
+
+struct bio_integrity_payload {
+	struct bio *bip_bio;
+	struct bvec_iter bip_iter;
+	unsigned short bip_vcnt;
+	unsigned short bip_max_vcnt;
+	unsigned short bip_flags;
+	int: 0;
+	struct bvec_iter bio_iter;
+	struct work_struct bip_work;
+	struct bio_vec *bip_vec;
+	struct bio_vec bip_inline_vecs[0];
+};
+
+struct of_pmem_private {
+	struct nvdimm_bus_descriptor bus_desc;
+	struct nvdimm_bus *bus;
+};
+
+enum dax_device_flags {
+	DAXDEV_ALIVE = 0,
+	DAXDEV_WRITE_CACHE = 1,
+	DAXDEV_SYNC = 2,
+	DAXDEV_NOCACHE = 3,
+	DAXDEV_NOMC = 4,
+};
+
+struct dax_holder_operations;
+
+struct dax_device {
+	struct inode inode;
+	struct cdev cdev;
+	void *private;
+	unsigned long flags;
+	const struct dax_operations *ops;
+	void *holder_data;
+	const struct dax_holder_operations *holder_ops;
+};
+
+struct dax_holder_operations {
+	int (*notify_failure)(struct dax_device *, u64, u64, int);
+};
+
+enum dax_driver_type {
+	DAXDRV_KMEM_TYPE = 0,
+	DAXDRV_DEVICE_TYPE = 1,
+};
+
+enum id_action {
+	ID_REMOVE = 0,
+	ID_ADD = 1,
+};
+
+struct dax_id {
+	struct list_head list;
+	char dev_name[30];
+};
+
+struct dax_region;
+
+struct dev_dax_range;
+
+struct dev_dax {
+	struct dax_region *region;
+	struct dax_device *dax_dev;
+	unsigned int align;
+	int target_node;
+	bool dyn_id;
+	int id;
+	struct ida ida;
+	struct device dev;
+	struct dev_pagemap *pgmap;
+	int nr_range;
+	struct dev_dax_range *ranges;
+};
+
+struct dax_region {
+	int id;
+	int target_node;
+	struct kref kref;
+	struct device *dev;
+	unsigned int align;
+	struct ida ida;
+	struct resource res;
+	struct device *seed;
+	struct device *youngest;
+};
+
+struct dax_mapping;
+
+struct dev_dax_range {
+	unsigned long pgoff;
+	struct range range;
+	struct dax_mapping *mapping;
+};
+
+struct dax_mapping {
+	struct device dev;
+	int range_id;
+	int id;
+};
+
+struct dax_device_driver {
+	struct device_driver drv;
+	struct list_head ids;
+	enum dax_driver_type type;
+	int (*probe)(struct dev_dax *);
+	void (*remove)(struct dev_dax *);
+};
+
+struct dev_dax_data {
+	struct dax_region *dax_region;
+	struct dev_pagemap *pgmap;
+	resource_size_t size;
+	int id;
+};
+
+struct dma_buf_list {
+	struct list_head head;
+	struct mutex lock;
+};
+
+struct dma_buf_import_sync_file {
+	__u32 flags;
+	__s32 fd;
+};
+
+struct dma_buf_export_sync_file {
+	__u32 flags;
+	__s32 fd;
+};
+
+struct dma_buf_sync {
+	__u64 flags;
+};
+
+typedef void (*btf_trace_dma_fence_emit)(void *, struct dma_fence *);
+
+typedef void (*btf_trace_dma_fence_init)(void *, struct dma_fence *);
+
+typedef void (*btf_trace_dma_fence_destroy)(void *, struct dma_fence *);
+
+typedef void (*btf_trace_dma_fence_enable_signal)(void *, struct dma_fence *);
+
+typedef void (*btf_trace_dma_fence_signaled)(void *, struct dma_fence *);
+
+typedef void (*btf_trace_dma_fence_wait_start)(void *, struct dma_fence *);
+
+typedef void (*btf_trace_dma_fence_wait_end)(void *, struct dma_fence *);
+
+struct trace_event_raw_dma_fence {
+	struct trace_entry ent;
+	u32 __data_loc_driver;
+	u32 __data_loc_timeline;
+	unsigned int context;
+	unsigned int seqno;
+	char __data[0];
+};
+
+struct default_wait_cb {
+	struct dma_fence_cb base;
+	struct task_struct *task;
+};
+
+struct trace_event_data_offsets_dma_fence {
+	u32 driver;
+	u32 timeline;
+};
+
+struct dma_fence_array;
+
+struct dma_fence_array_cb {
+	struct dma_fence_cb cb;
+	struct dma_fence_array *array;
+};
+
+struct dma_fence_array {
+	struct dma_fence base;
+	spinlock_t lock;
+	unsigned int num_fences;
+	atomic_t num_pending;
+	struct dma_fence **fences;
+	struct irq_work work;
+};
+
+struct dma_heap_ops;
+
+struct dma_heap {
+	const char *name;
+	const struct dma_heap_ops *ops;
+	void *priv;
+	dev_t heap_devt;
+	struct list_head list;
+	struct cdev heap_cdev;
+	struct kref refcount;
+	struct device *heap_dev;
+};
+
+struct dma_heap_ops {
+	struct dma_buf * (*allocate)(struct dma_heap *, unsigned long, u32, u64);
+	long (*get_pool_size)(struct dma_heap *);
+};
+
+struct dma_heap_allocation_data {
+	__u64 len;
+	__u32 fd;
+	__u32 fd_flags;
+	__u64 heap_flags;
+};
+
+struct dma_heap_export_info {
+	const char *name;
+	const struct dma_heap_ops *ops;
+	void *priv;
+};
+
+enum df_reason {
+	DF_NORMAL = 0,
+	DF_UNDER_PRESSURE = 1,
+};
+
+struct deferred_freelist_item {
+	size_t nr_pages;
+	void (*free)(struct deferred_freelist_item *, enum df_reason);
+	struct list_head list;
+};
+
+enum {
+	POOL_LOWPAGE = 0,
+	POOL_HIGHPAGE = 1,
+	POOL_TYPE_SIZE = 2,
+};
+
+struct dmabuf_page_pool {
+	int count[2];
+	struct list_head items[2];
+	spinlock_t lock;
+	gfp_t gfp_mask;
+	unsigned int order;
+	struct list_head list;
+};
+
+struct sync_merge_data {
+	char name[32];
+	__s32 fd2;
+	__s32 fence;
+	__u32 flags;
+	__u32 pad;
+};
+
+struct sync_file_info {
+	char name[32];
+	__s32 status;
+	__u32 flags;
+	__u32 num_fences;
+	__u32 pad;
+	__u64 sync_fence_info;
+};
+
+struct sync_fence_info {
+	char obj_name[32];
+	char driver_name[32];
+	__s32 status;
+	__u32 flags;
+	__u64 timestamp_ns;
+};
+
+struct dma_buf_stats_attribute {
+	struct attribute attr;
+	ssize_t (*show)(struct dma_buf *, struct dma_buf_stats_attribute *, char *);
+};
+
+struct scsi_cmnd;
+
+typedef void (*btf_trace_scsi_dispatch_cmd_start)(void *, struct scsi_cmnd *);
+
+enum scsi_cmnd_submitter {
+	SUBMITTED_BY_BLOCK_LAYER = 0,
+	SUBMITTED_BY_SCSI_ERROR_HANDLER = 1,
+	SUBMITTED_BY_SCSI_RESET_IOCTL = 2,
+} __attribute__((mode(byte)));
+
+struct scsi_data_buffer {
+	struct sg_table table;
+	unsigned int length;
+};
+
+struct scsi_device;
+
+struct scsi_cmnd {
+	struct scsi_device *device;
+	struct list_head eh_entry;
+	struct delayed_work abort_work;
+	struct callback_head rcu;
+	int eh_eflags;
+	int budget_token;
+	unsigned long jiffies_at_alloc;
+	int retries;
+	int allowed;
+	unsigned char prot_op;
+	unsigned char prot_type;
+	unsigned char prot_flags;
+	enum scsi_cmnd_submitter submitter;
+	unsigned short cmd_len;
+	enum dma_data_direction sc_data_direction;
+	unsigned char cmnd[32];
+	struct scsi_data_buffer sdb;
+	struct scsi_data_buffer *prot_sdb;
+	unsigned int underflow;
+	unsigned int transfersize;
+	unsigned int resid_len;
+	unsigned int sense_len;
+	unsigned char *sense_buffer;
+	int flags;
+	unsigned long state;
+	unsigned int extra_len;
+	unsigned char *host_scribble;
+	int result;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+typedef __u64 blist_flags_t;
+
+enum scsi_device_state {
+	SDEV_CREATED = 1,
+	SDEV_RUNNING = 2,
+	SDEV_CANCEL = 3,
+	SDEV_DEL = 4,
+	SDEV_QUIESCE = 5,
+	SDEV_OFFLINE = 6,
+	SDEV_TRANSPORT_OFFLINE = 7,
+	SDEV_BLOCK = 8,
+	SDEV_CREATED_BLOCK = 9,
+};
+
+struct Scsi_Host;
+
+struct scsi_vpd;
+
+struct scsi_target;
+
+struct scsi_device_handler;
+
+struct scsi_device {
+	struct Scsi_Host *host;
+	struct request_queue *request_queue;
+	struct list_head siblings;
+	struct list_head same_target_siblings;
+	struct sbitmap budget_map;
+	atomic_t device_blocked;
+	atomic_t restarts;
+	spinlock_t list_lock;
+	struct list_head starved_entry;
+	unsigned short queue_depth;
+	unsigned short max_queue_depth;
+	unsigned short last_queue_full_depth;
+	unsigned short last_queue_full_count;
+	unsigned long last_queue_full_time;
+	unsigned long queue_ramp_up_period;
+	unsigned long last_queue_ramp_up;
+	unsigned int id;
+	unsigned int channel;
+	u64 lun;
+	unsigned int manufacturer;
+	unsigned int sector_size;
+	void *hostdata;
+	unsigned char type;
+	char scsi_level;
+	char inq_periph_qual;
+	struct mutex inquiry_mutex;
+	unsigned char inquiry_len;
+	unsigned char *inquiry;
+	const char *vendor;
+	const char *model;
+	const char *rev;
+	struct scsi_vpd __attribute__((btf_type_tag("rcu"))) *vpd_pg0;
+	struct scsi_vpd __attribute__((btf_type_tag("rcu"))) *vpd_pg83;
+	struct scsi_vpd __attribute__((btf_type_tag("rcu"))) *vpd_pg80;
+	struct scsi_vpd __attribute__((btf_type_tag("rcu"))) *vpd_pg89;
+	struct scsi_vpd __attribute__((btf_type_tag("rcu"))) *vpd_pgb0;
+	struct scsi_vpd __attribute__((btf_type_tag("rcu"))) *vpd_pgb1;
+	struct scsi_vpd __attribute__((btf_type_tag("rcu"))) *vpd_pgb2;
+	struct scsi_target *sdev_target;
+	blist_flags_t sdev_bflags;
+	unsigned int eh_timeout;
+	unsigned int manage_system_start_stop: 1;
+	unsigned int manage_runtime_start_stop: 1;
+	unsigned int manage_shutdown: 1;
+	unsigned int force_runtime_start_on_system_start: 1;
+	unsigned int removable: 1;
+	unsigned int changed: 1;
+	unsigned int busy: 1;
+	unsigned int lockable: 1;
+	unsigned int locked: 1;
+	unsigned int borken: 1;
+	unsigned int disconnect: 1;
+	unsigned int soft_reset: 1;
+	unsigned int sdtr: 1;
+	unsigned int wdtr: 1;
+	unsigned int ppr: 1;
+	unsigned int tagged_supported: 1;
+	unsigned int simple_tags: 1;
+	unsigned int was_reset: 1;
+	unsigned int expecting_cc_ua: 1;
+	unsigned int use_10_for_rw: 1;
+	unsigned int use_10_for_ms: 1;
+	unsigned int set_dbd_for_ms: 1;
+	unsigned int read_before_ms: 1;
+	unsigned int no_report_opcodes: 1;
+	unsigned int no_write_same: 1;
+	unsigned int use_16_for_rw: 1;
+	unsigned int use_16_for_sync: 1;
+	unsigned int skip_ms_page_8: 1;
+	unsigned int skip_ms_page_3f: 1;
+	unsigned int skip_vpd_pages: 1;
+	unsigned int try_vpd_pages: 1;
+	unsigned int use_192_bytes_for_3f: 1;
+	unsigned int no_start_on_add: 1;
+	unsigned int allow_restart: 1;
+	unsigned int no_start_on_resume: 1;
+	unsigned int start_stop_pwr_cond: 1;
+	unsigned int no_uld_attach: 1;
+	unsigned int select_no_atn: 1;
+	unsigned int fix_capacity: 1;
+	unsigned int guess_capacity: 1;
+	unsigned int retry_hwerror: 1;
+	unsigned int last_sector_bug: 1;
+	unsigned int no_read_disc_info: 1;
+	unsigned int no_read_capacity_16: 1;
+	unsigned int try_rc_10_first: 1;
+	unsigned int security_supported: 1;
+	unsigned int is_visible: 1;
+	unsigned int wce_default_on: 1;
+	unsigned int no_dif: 1;
+	unsigned int broken_fua: 1;
+	unsigned int lun_in_cdb: 1;
+	unsigned int unmap_limit_for_ws: 1;
+	unsigned int rpm_autosuspend: 1;
+	unsigned int ignore_media_change: 1;
+	unsigned int silence_suspend: 1;
+	unsigned int no_vpd_size: 1;
+	unsigned int cdl_supported: 1;
+	unsigned int cdl_enable: 1;
+	unsigned int queue_stopped;
+	bool offline_already;
+	atomic_t disk_events_disable_depth;
+	unsigned long supported_events[1];
+	unsigned long pending_events[1];
+	struct list_head event_list;
+	struct work_struct event_work;
+	unsigned int max_device_blocked;
+	atomic_t iorequest_cnt;
+	atomic_t iodone_cnt;
+	atomic_t ioerr_cnt;
+	atomic_t iotmo_cnt;
+	struct device sdev_gendev;
+	struct device sdev_dev;
+	struct work_struct requeue_work;
+	struct scsi_device_handler *handler;
+	void *handler_data;
+	size_t dma_drain_len;
+	void *dma_drain_buf;
+	unsigned int sg_timeout;
+	unsigned int sg_reserved_size;
+	struct bsg_device *bsg_dev;
+	unsigned char access_state;
+	struct mutex state_mutex;
+	enum scsi_device_state sdev_state;
+	struct task_struct *quiesced_by;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+	unsigned long sdev_data[0];
+};
+
+enum scsi_host_state {
+	SHOST_CREATED = 1,
+	SHOST_RUNNING = 2,
+	SHOST_CANCEL = 3,
+	SHOST_DEL = 4,
+	SHOST_RECOVERY = 5,
+	SHOST_CANCEL_RECOVERY = 6,
+	SHOST_DEL_RECOVERY = 7,
+};
+
+struct scsi_host_template;
+
+struct scsi_transport_template;
+
+struct Scsi_Host {
+	struct list_head __devices;
+	struct list_head __targets;
+	struct list_head starved_list;
+	spinlock_t default_lock;
+	spinlock_t *host_lock;
+	struct mutex scan_mutex;
+	struct list_head eh_abort_list;
+	struct list_head eh_cmd_q;
+	struct task_struct *ehandler;
+	struct completion *eh_action;
+	wait_queue_head_t host_wait;
+	const struct scsi_host_template *hostt;
+	struct scsi_transport_template *transportt;
+	struct kref tagset_refcnt;
+	struct completion tagset_freed;
+	struct blk_mq_tag_set tag_set;
+	atomic_t host_blocked;
+	unsigned int host_failed;
+	unsigned int host_eh_scheduled;
+	unsigned int host_no;
+	int eh_deadline;
+	unsigned long last_reset;
+	unsigned int max_channel;
+	unsigned int max_id;
+	u64 max_lun;
+	unsigned int unique_id;
+	unsigned short max_cmd_len;
+	int this_id;
+	int can_queue;
+	short cmd_per_lun;
+	unsigned short sg_tablesize;
+	unsigned short sg_prot_tablesize;
+	unsigned int max_sectors;
+	unsigned int opt_sectors;
+	unsigned int max_segment_size;
+	unsigned long dma_boundary;
+	unsigned long virt_boundary_mask;
+	unsigned int nr_hw_queues;
+	unsigned int nr_maps;
+	unsigned int active_mode: 2;
+	unsigned int host_self_blocked: 1;
+	unsigned int reverse_ordering: 1;
+	unsigned int tmf_in_progress: 1;
+	unsigned int async_scan: 1;
+	unsigned int eh_noresume: 1;
+	unsigned int no_write_same: 1;
+	unsigned int host_tagset: 1;
+	unsigned int queuecommand_may_block: 1;
+	unsigned int short_inquiry: 1;
+	unsigned int no_scsi2_lun_in_cdb: 1;
+	char work_q_name[20];
+	struct workqueue_struct *work_q;
+	struct workqueue_struct *tmf_work_q;
+	unsigned int max_host_blocked;
+	unsigned int prot_capabilities;
+	unsigned char prot_guard_type;
+	unsigned long base;
+	unsigned long io_port;
+	unsigned char n_io_port;
+	unsigned char dma_channel;
+	unsigned int irq;
+	enum scsi_host_state shost_state;
+	struct device shost_gendev;
+	struct device shost_dev;
+	void *shost_data;
+	struct device *dma_dev;
+	int rpm_autosuspend_delay;
+	u64 android_kabi_reserved1;
+	unsigned long hostdata[0];
+};
+
+enum scsi_timeout_action {
+	SCSI_EH_DONE = 0,
+	SCSI_EH_RESET_TIMER = 1,
+	SCSI_EH_NOT_HANDLED = 2,
+};
+
+struct scsi_host_template {
+	unsigned int cmd_size;
+	int (*queuecommand)(struct Scsi_Host *, struct scsi_cmnd *);
+	void (*commit_rqs)(struct Scsi_Host *, u16);
+	struct module *module;
+	const char *name;
+	const char * (*info)(struct Scsi_Host *);
+	int (*ioctl)(struct scsi_device *, unsigned int, void __attribute__((btf_type_tag("user"))) *);
+	int (*compat_ioctl)(struct scsi_device *, unsigned int, void __attribute__((btf_type_tag("user"))) *);
+	int (*init_cmd_priv)(struct Scsi_Host *, struct scsi_cmnd *);
+	int (*exit_cmd_priv)(struct Scsi_Host *, struct scsi_cmnd *);
+	int (*eh_abort_handler)(struct scsi_cmnd *);
+	int (*eh_device_reset_handler)(struct scsi_cmnd *);
+	int (*eh_target_reset_handler)(struct scsi_cmnd *);
+	int (*eh_bus_reset_handler)(struct scsi_cmnd *);
+	int (*eh_host_reset_handler)(struct scsi_cmnd *);
+	int (*slave_alloc)(struct scsi_device *);
+	int (*slave_configure)(struct scsi_device *);
+	void (*slave_destroy)(struct scsi_device *);
+	int (*target_alloc)(struct scsi_target *);
+	void (*target_destroy)(struct scsi_target *);
+	int (*scan_finished)(struct Scsi_Host *, unsigned long);
+	void (*scan_start)(struct Scsi_Host *);
+	int (*change_queue_depth)(struct scsi_device *, int);
+	void (*map_queues)(struct Scsi_Host *);
+	int (*mq_poll)(struct Scsi_Host *, unsigned int);
+	bool (*dma_need_drain)(struct request *);
+	int (*bios_param)(struct scsi_device *, struct block_device *, sector_t, int *);
+	void (*unlock_native_capacity)(struct scsi_device *);
+	int (*show_info)(struct seq_file *, struct Scsi_Host *);
+	int (*write_info)(struct Scsi_Host *, char *, int);
+	enum scsi_timeout_action (*eh_timed_out)(struct scsi_cmnd *);
+	bool (*eh_should_retry_cmd)(struct scsi_cmnd *);
+	int (*host_reset)(struct Scsi_Host *, int);
+	const char *proc_name;
+	int can_queue;
+	int this_id;
+	unsigned short sg_tablesize;
+	unsigned short sg_prot_tablesize;
+	unsigned int max_sectors;
+	unsigned int max_segment_size;
+	unsigned long dma_boundary;
+	unsigned long virt_boundary_mask;
+	short cmd_per_lun;
+	int tag_alloc_policy;
+	unsigned int track_queue_depth: 1;
+	unsigned int supported_mode: 2;
+	unsigned int emulated: 1;
+	unsigned int skip_settle_delay: 1;
+	unsigned int no_write_same: 1;
+	unsigned int host_tagset: 1;
+	unsigned int queuecommand_may_block: 1;
+	unsigned int max_host_blocked;
+	const struct attribute_group **shost_groups;
+	const struct attribute_group **sdev_groups;
+	u64 vendor_id;
+	u64 android_oem_data1;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+enum scsi_target_state {
+	STARGET_CREATED = 1,
+	STARGET_RUNNING = 2,
+	STARGET_REMOVE = 3,
+	STARGET_CREATED_REMOVE = 4,
+	STARGET_DEL = 5,
+};
+
+struct scsi_target {
+	struct scsi_device *starget_sdev_user;
+	struct list_head siblings;
+	struct list_head devices;
+	struct device dev;
+	struct kref reap_ref;
+	unsigned int channel;
+	unsigned int id;
+	unsigned int create: 1;
+	unsigned int single_lun: 1;
+	unsigned int pdt_1f_for_no_lun: 1;
+	unsigned int no_report_luns: 1;
+	unsigned int expecting_lun_change: 1;
+	atomic_t target_busy;
+	atomic_t target_blocked;
+	unsigned int can_queue;
+	unsigned int max_target_blocked;
+	char scsi_level;
+	enum scsi_target_state state;
+	void *hostdata;
+	unsigned long starget_data[0];
+};
+
+struct scsi_vpd {
+	struct callback_head rcu;
+	int len;
+	unsigned char data[0];
+};
+
+typedef void (*btf_trace_scsi_dispatch_cmd_error)(void *, struct scsi_cmnd *, int);
+
+typedef void (*btf_trace_scsi_dispatch_cmd_done)(void *, struct scsi_cmnd *);
+
+typedef void (*btf_trace_scsi_dispatch_cmd_timeout)(void *, struct scsi_cmnd *);
+
+typedef void (*btf_trace_scsi_eh_wakeup)(void *, struct Scsi_Host *);
+
+enum scsi_vpd_parameters {
+	SCSI_VPD_HEADER_SIZE = 4,
+	SCSI_VPD_LIST_SIZE = 36,
+};
+
+struct trace_event_raw_scsi_dispatch_cmd_start {
+	struct trace_entry ent;
+	unsigned int host_no;
+	unsigned int channel;
+	unsigned int id;
+	unsigned int lun;
+	unsigned int opcode;
+	unsigned int cmd_len;
+	int driver_tag;
+	int scheduler_tag;
+	unsigned int data_sglen;
+	unsigned int prot_sglen;
+	unsigned char prot_op;
+	u32 __data_loc_cmnd;
+	char __data[0];
+};
+
+struct trace_event_raw_scsi_dispatch_cmd_error {
+	struct trace_entry ent;
+	unsigned int host_no;
+	unsigned int channel;
+	unsigned int id;
+	unsigned int lun;
+	int rtn;
+	unsigned int opcode;
+	unsigned int cmd_len;
+	int driver_tag;
+	int scheduler_tag;
+	unsigned int data_sglen;
+	unsigned int prot_sglen;
+	unsigned char prot_op;
+	u32 __data_loc_cmnd;
+	char __data[0];
+};
+
+struct trace_event_raw_scsi_cmd_done_timeout_template {
+	struct trace_entry ent;
+	unsigned int host_no;
+	unsigned int channel;
+	unsigned int id;
+	unsigned int lun;
+	int result;
+	unsigned int opcode;
+	unsigned int cmd_len;
+	int driver_tag;
+	int scheduler_tag;
+	unsigned int data_sglen;
+	unsigned int prot_sglen;
+	unsigned char prot_op;
+	u32 __data_loc_cmnd;
+	u8 sense_key;
+	u8 asc;
+	u8 ascq;
+	char __data[0];
+};
+
+struct trace_event_raw_scsi_eh_wakeup {
+	struct trace_entry ent;
+	unsigned int host_no;
+	char __data[0];
+};
+
+struct scsi_driver {
+	struct device_driver gendrv;
+	int (*resume)(struct device *);
+	void (*rescan)(struct device *);
+	blk_status_t (*init_command)(struct scsi_cmnd *);
+	void (*uninit_command)(struct scsi_cmnd *);
+	int (*done)(struct scsi_cmnd *);
+	int (*eh_action)(struct scsi_cmnd *, int);
+	void (*eh_reset)(struct scsi_cmnd *);
+};
+
+struct trace_event_data_offsets_scsi_dispatch_cmd_start {
+	u32 cmnd;
+};
+
+struct trace_event_data_offsets_scsi_dispatch_cmd_error {
+	u32 cmnd;
+};
+
+struct trace_event_data_offsets_scsi_cmd_done_timeout_template {
+	u32 cmnd;
+};
+
+struct scsi_sense_hdr {
+	u8 response_code;
+	u8 sense_key;
+	u8 asc;
+	u8 ascq;
+	u8 byte4;
+	u8 byte5;
+	u8 byte6;
+	u8 additional_length;
+};
+
+struct scsi_exec_args {
+	unsigned char *sense;
+	unsigned int sense_len;
+	struct scsi_sense_hdr *sshdr;
+	blk_mq_req_flags_t req_flags;
+	int scmd_flags;
+	int *resid;
+};
+
+struct scsi_mode_data {
+	__u32 length;
+	__u16 block_descriptor_length;
+	__u8 medium_type;
+	__u8 device_specific;
+	__u8 header_length;
+	__u8 longlba: 1;
+};
+
+struct trace_event_data_offsets_scsi_eh_wakeup {};
+
+enum scsi_host_status {
+	DID_OK = 0,
+	DID_NO_CONNECT = 1,
+	DID_BUS_BUSY = 2,
+	DID_TIME_OUT = 3,
+	DID_BAD_TARGET = 4,
+	DID_ABORT = 5,
+	DID_PARITY = 6,
+	DID_ERROR = 7,
+	DID_RESET = 8,
+	DID_BAD_INTR = 9,
+	DID_PASSTHROUGH = 10,
+	DID_SOFT_ERROR = 11,
+	DID_IMM_RETRY = 12,
+	DID_REQUEUE = 13,
+	DID_TRANSPORT_DISRUPTED = 14,
+	DID_TRANSPORT_FAILFAST = 15,
+	DID_TRANSPORT_MARGINAL = 20,
+};
+
+struct scsi_transport_template {
+	struct transport_container host_attrs;
+	struct transport_container target_attrs;
+	struct transport_container device_attrs;
+	int (*user_scan)(struct Scsi_Host *, uint, uint, u64);
+	int device_size;
+	int device_private_offset;
+	int target_size;
+	int target_private_offset;
+	int host_size;
+	unsigned int create_work_queue: 1;
+	void (*eh_strategy_handler)(struct Scsi_Host *);
+};
+
+struct scsi_host_busy_iter_data {
+	bool (*fn)(struct scsi_cmnd *, void *);
+	void *priv;
+};
+
+enum scsi_msg_byte {
+	COMMAND_COMPLETE = 0,
+	EXTENDED_MESSAGE = 1,
+	SAVE_POINTERS = 2,
+	RESTORE_POINTERS = 3,
+	DISCONNECT = 4,
+	INITIATOR_ERROR = 5,
+	ABORT_TASK_SET = 6,
+	MESSAGE_REJECT = 7,
+	NOP___2 = 8,
+	MSG_PARITY_ERROR = 9,
+	LINKED_CMD_COMPLETE = 10,
+	LINKED_FLG_CMD_COMPLETE = 11,
+	TARGET_RESET = 12,
+	ABORT_TASK = 13,
+	CLEAR_TASK_SET = 14,
+	INITIATE_RECOVERY = 15,
+	RELEASE_RECOVERY = 16,
+	TERMINATE_IO_PROC = 17,
+	CLEAR_ACA = 22,
+	LOGICAL_UNIT_RESET = 23,
+	SIMPLE_QUEUE_TAG = 32,
+	HEAD_OF_QUEUE_TAG = 33,
+	ORDERED_QUEUE_TAG = 34,
+	IGNORE_WIDE_RESIDUE = 35,
+	ACA = 36,
+	QAS_REQUEST = 85,
+	BUS_DEVICE_RESET = 12,
+	ABORT = 6,
+};
+
+enum sam_status {
+	SAM_STAT_GOOD = 0,
+	SAM_STAT_CHECK_CONDITION = 2,
+	SAM_STAT_CONDITION_MET = 4,
+	SAM_STAT_BUSY = 8,
+	SAM_STAT_INTERMEDIATE = 16,
+	SAM_STAT_INTERMEDIATE_CONDITION_MET = 20,
+	SAM_STAT_RESERVATION_CONFLICT = 24,
+	SAM_STAT_COMMAND_TERMINATED = 34,
+	SAM_STAT_TASK_SET_FULL = 40,
+	SAM_STAT_ACA_ACTIVE = 48,
+	SAM_STAT_TASK_ABORTED = 64,
+};
+
+struct request_sense;
+
+struct cdrom_generic_command {
+	unsigned char cmd[12];
+	unsigned char __attribute__((btf_type_tag("user"))) *buffer;
+	unsigned int buflen;
+	int stat;
+	struct request_sense __attribute__((btf_type_tag("user"))) *sense;
+	unsigned char data_direction;
+	int quiet;
+	int timeout;
+	union {
+		void __attribute__((btf_type_tag("user"))) *reserved[1];
+		void __attribute__((btf_type_tag("user"))) *unused;
+	};
+};
+
+struct request_sense {
+	__u8 error_code: 7;
+	__u8 valid: 1;
+	__u8 segment_number;
+	__u8 sense_key: 4;
+	__u8 reserved2: 1;
+	__u8 ili: 1;
+	__u8 reserved1: 2;
+	__u8 information[4];
+	__u8 add_sense_len;
+	__u8 command_info[4];
+	__u8 asc;
+	__u8 ascq;
+	__u8 fruc;
+	__u8 sks[3];
+	__u8 asb[46];
+};
+
+struct sg_io_hdr {
+	int interface_id;
+	int dxfer_direction;
+	unsigned char cmd_len;
+	unsigned char mx_sb_len;
+	unsigned short iovec_count;
+	unsigned int dxfer_len;
+	void __attribute__((btf_type_tag("user"))) *dxferp;
+	unsigned char __attribute__((btf_type_tag("user"))) *cmdp;
+	void __attribute__((btf_type_tag("user"))) *sbp;
+	unsigned int timeout;
+	unsigned int flags;
+	int pack_id;
+	void __attribute__((btf_type_tag("user"))) *usr_ptr;
+	unsigned char status;
+	unsigned char masked_status;
+	unsigned char msg_status;
+	unsigned char sb_len_wr;
+	unsigned short host_status;
+	unsigned short driver_status;
+	int resid;
+	unsigned int duration;
+	unsigned int info;
+};
+
+struct compat_cdrom_generic_command {
+	unsigned char cmd[12];
+	compat_caddr_t buffer;
+	compat_uint_t buflen;
+	compat_int_t stat;
+	compat_caddr_t sense;
+	unsigned char data_direction;
+	unsigned char pad[3];
+	compat_int_t quiet;
+	compat_int_t timeout;
+	compat_caddr_t unused;
+};
+
+struct scsi_idlun {
+	__u32 dev_id;
+	__u32 host_unique_id;
+};
+
+struct scsi_ioctl_command {
+	unsigned int inlen;
+	unsigned int outlen;
+	unsigned char data[0];
+};
+
+struct compat_sg_io_hdr {
+	compat_int_t interface_id;
+	compat_int_t dxfer_direction;
+	unsigned char cmd_len;
+	unsigned char mx_sb_len;
+	unsigned short iovec_count;
+	compat_uint_t dxfer_len;
+	compat_uint_t dxferp;
+	compat_uptr_t cmdp;
+	compat_uptr_t sbp;
+	compat_uint_t timeout;
+	compat_uint_t flags;
+	compat_int_t pack_id;
+	compat_uptr_t usr_ptr;
+	unsigned char status;
+	unsigned char masked_status;
+	unsigned char msg_status;
+	unsigned char sb_len_wr;
+	unsigned short host_status;
+	unsigned short driver_status;
+	compat_int_t resid;
+	compat_uint_t duration;
+	compat_uint_t info;
+};
+
+enum scsi_disposition {
+	NEEDS_RETRY = 8193,
+	SUCCESS = 8194,
+	FAILED = 8195,
+	QUEUED = 8196,
+	SOFT_ERROR = 8197,
+	ADD_TO_MLQUEUE = 8198,
+	TIMEOUT_ERROR = 8199,
+	SCSI_RETURN_NOT_HANDLED = 8200,
+	FAST_IO_FAIL = 8201,
+};
+
+enum scsi_ml_status {
+	SCSIML_STAT_OK = 0,
+	SCSIML_STAT_RESV_CONFLICT = 1,
+	SCSIML_STAT_NOSPC = 2,
+	SCSIML_STAT_MED_ERROR = 3,
+	SCSIML_STAT_TGT_FAILURE = 4,
+	SCSIML_STAT_DL_TIMEOUT = 5,
+};
+
+enum scsi_prot_operations {
+	SCSI_PROT_NORMAL = 0,
+	SCSI_PROT_READ_INSERT = 1,
+	SCSI_PROT_WRITE_STRIP = 2,
+	SCSI_PROT_READ_STRIP = 3,
+	SCSI_PROT_WRITE_INSERT = 4,
+	SCSI_PROT_READ_PASS = 5,
+	SCSI_PROT_WRITE_PASS = 6,
+};
+
+enum scsi_device_event {
+	SDEV_EVT_MEDIA_CHANGE = 1,
+	SDEV_EVT_INQUIRY_CHANGE_REPORTED = 2,
+	SDEV_EVT_CAPACITY_CHANGE_REPORTED = 3,
+	SDEV_EVT_SOFT_THRESHOLD_REACHED_REPORTED = 4,
+	SDEV_EVT_MODE_PARAMETER_CHANGE_REPORTED = 5,
+	SDEV_EVT_LUN_CHANGE_REPORTED = 6,
+	SDEV_EVT_ALUA_STATE_CHANGE_REPORTED = 7,
+	SDEV_EVT_POWER_ON_RESET_OCCURRED = 8,
+	SDEV_EVT_FIRST = 1,
+	SDEV_EVT_LAST = 8,
+	SDEV_EVT_MAXBITS = 9,
+};
+
+typedef void (*activate_complete)(void *, int);
+
+struct scsi_device_handler {
+	struct list_head list;
+	struct module *module;
+	const char *name;
+	enum scsi_disposition (*check_sense)(struct scsi_device *, struct scsi_sense_hdr *);
+	int (*attach)(struct scsi_device *);
+	void (*detach)(struct scsi_device *);
+	int (*activate)(struct scsi_device *, activate_complete, void *);
+	blk_status_t (*prep_fn)(struct scsi_device *, struct request *);
+	int (*set_params)(struct scsi_device *, const char *);
+	void (*rescan)(struct scsi_device *);
+};
+
+struct scsi_eh_save {
+	int result;
+	unsigned int resid_len;
+	int eh_eflags;
+	enum dma_data_direction data_direction;
+	unsigned int underflow;
+	unsigned char cmd_len;
+	unsigned char prot_op;
+	unsigned char cmnd[32];
+	struct scsi_data_buffer sdb;
+	struct scatterlist sense_sgl;
+};
+
+enum {
+	ACTION_FAIL = 0,
+	ACTION_REPREP = 1,
+	ACTION_DELAYED_REPREP = 2,
+	ACTION_RETRY = 3,
+	ACTION_DELAYED_RETRY = 4,
+};
+
+enum scsi_host_prot_capabilities {
+	SHOST_DIF_TYPE1_PROTECTION = 1,
+	SHOST_DIF_TYPE2_PROTECTION = 2,
+	SHOST_DIF_TYPE3_PROTECTION = 4,
+	SHOST_DIX_TYPE0_PROTECTION = 8,
+	SHOST_DIX_TYPE1_PROTECTION = 16,
+	SHOST_DIX_TYPE2_PROTECTION = 32,
+	SHOST_DIX_TYPE3_PROTECTION = 64,
+};
+
+struct scsi_event {
+	enum scsi_device_event evt_type;
+	struct list_head node;
+};
+
+enum scsi_scan_mode {
+	SCSI_SCAN_INITIAL = 0,
+	SCSI_SCAN_RESCAN = 1,
+	SCSI_SCAN_MANUAL = 2,
+};
+
+enum scsi_timeouts {
+	SCSI_DEFAULT_EH_TIMEOUT = 2500,
+};
+
+struct async_scan_data {
+	struct list_head list;
+	struct Scsi_Host *shost;
+	struct completion prev_finished;
+};
+
+struct scsi_lun {
+	__u8 scsi_lun[8];
+};
+
+enum scsi_devinfo_key {
+	SCSI_DEVINFO_GLOBAL = 0,
+	SCSI_DEVINFO_SPI = 1,
+};
+
+struct scsi_dev_info_list {
+	struct list_head dev_info_list;
+	char vendor[8];
+	char model[16];
+	blist_flags_t flags;
+	unsigned int compatible;
+};
+
+struct scsi_dev_info_list_table {
+	struct list_head node;
+	struct list_head scsi_dev_info_list;
+	const char *name;
+	int key;
+};
+
+struct scsi_varlen_cdb_hdr {
+	__u8 opcode;
+	__u8 control;
+	__u8 misc[5];
+	__u8 additional_cdb_length;
+	__be16 service_action;
+};
+
+enum scsi_pr_type {
+	SCSI_PR_WRITE_EXCLUSIVE = 1,
+	SCSI_PR_EXCLUSIVE_ACCESS = 3,
+	SCSI_PR_WRITE_EXCLUSIVE_REG_ONLY = 5,
+	SCSI_PR_EXCLUSIVE_ACCESS_REG_ONLY = 6,
+	SCSI_PR_WRITE_EXCLUSIVE_ALL_REGS = 7,
+	SCSI_PR_EXCLUSIVE_ACCESS_ALL_REGS = 8,
+};
+
+enum pr_status {
+	PR_STS_SUCCESS = 0,
+	PR_STS_IOERR = 2,
+	PR_STS_RESERVATION_CONFLICT = 24,
+	PR_STS_RETRY_PATH_FAILURE = 917504,
+	PR_STS_PATH_FAST_FAILED = 983040,
+	PR_STS_PATH_FAILED = 65536,
+};
+
+enum {
+	SD_DEF_XFER_BLOCKS = 65535,
+	SD_MAX_XFER_BLOCKS = 4294967295,
+	SD_MAX_WS10_BLOCKS = 65535,
+	SD_MAX_WS16_BLOCKS = 8388607,
+};
+
+enum {
+	SD_LBP_FULL = 0,
+	SD_LBP_UNMAP = 1,
+	SD_LBP_WS16 = 2,
+	SD_LBP_WS10 = 3,
+	SD_LBP_ZERO = 4,
+	SD_LBP_DISABLE = 5,
+};
+
+enum t10_dif_type {
+	T10_PI_TYPE0_PROTECTION = 0,
+	T10_PI_TYPE1_PROTECTION = 1,
+	T10_PI_TYPE2_PROTECTION = 2,
+	T10_PI_TYPE3_PROTECTION = 3,
+};
+
+enum {
+	SD_ZERO_WRITE = 0,
+	SD_ZERO_WS = 1,
+	SD_ZERO_WS16_UNMAP = 2,
+	SD_ZERO_WS10_UNMAP = 3,
+};
+
+enum bip_flags {
+	BIP_BLOCK_INTEGRITY = 1,
+	BIP_MAPPED_INTEGRITY = 2,
+	BIP_CTRL_NOCHECK = 4,
+	BIP_DISK_NOCHECK = 8,
+	BIP_IP_CHECKSUM = 16,
+};
+
+enum scsi_prot_flags {
+	SCSI_PROT_TRANSFER_PI = 1,
+	SCSI_PROT_GUARD_CHECK = 2,
+	SCSI_PROT_REF_CHECK = 4,
+	SCSI_PROT_REF_INCREMENT = 8,
+	SCSI_PROT_IP_CHECKSUM = 16,
+};
+
+enum {
+	SD_EXT_CDB_SIZE = 32,
+	SD_MEMPOOL_SIZE = 2,
+};
+
+struct opal_dev;
+
+struct zoned_disk_info {
+	u32 nr_zones;
+	u32 zone_blocks;
+};
+
+struct scsi_disk {
+	struct scsi_device *device;
+	struct device disk_dev;
+	struct gendisk *disk;
+	struct opal_dev *opal_dev;
+	struct zoned_disk_info early_zone_info;
+	struct zoned_disk_info zone_info;
+	u32 zones_optimal_open;
+	u32 zones_optimal_nonseq;
+	u32 zones_max_open;
+	u32 zone_starting_lba_gran;
+	u32 *zones_wp_offset;
+	spinlock_t zones_wp_offset_lock;
+	u32 *rev_wp_offset;
+	struct mutex rev_mutex;
+	struct work_struct zone_wp_offset_work;
+	char *zone_wp_update_buf;
+	atomic_t openers;
+	sector_t capacity;
+	int max_retries;
+	u32 min_xfer_blocks;
+	u32 max_xfer_blocks;
+	u32 opt_xfer_blocks;
+	u32 max_ws_blocks;
+	u32 max_unmap_blocks;
+	u32 unmap_granularity;
+	u32 unmap_alignment;
+	u32 index;
+	unsigned int physical_block_size;
+	unsigned int max_medium_access_timeouts;
+	unsigned int medium_access_timed_out;
+	u8 media_present;
+	u8 write_prot;
+	u8 protection_type;
+	u8 provisioning_mode;
+	u8 zeroing_mode;
+	u8 nr_actuators;
+	bool suspended;
+	unsigned int ATO: 1;
+	unsigned int cache_override: 1;
+	unsigned int WCE: 1;
+	unsigned int RCD: 1;
+	unsigned int DPOFUA: 1;
+	unsigned int first_scan: 1;
+	unsigned int lbpme: 1;
+	unsigned int lbprz: 1;
+	unsigned int lbpu: 1;
+	unsigned int lbpws: 1;
+	unsigned int lbpws10: 1;
+	unsigned int lbpvpd: 1;
+	unsigned int ws10: 1;
+	unsigned int ws16: 1;
+	unsigned int rc_basis: 2;
+	unsigned int zoned: 2;
+	unsigned int urswrz: 1;
+	unsigned int security: 1;
+	unsigned int ignore_medium_access_errors: 1;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+typedef void (*btf_trace_scsi_prepare_zone_append)(void *, struct scsi_cmnd *, sector_t, unsigned int);
+
+typedef void (*btf_trace_scsi_zone_wp_update)(void *, struct scsi_cmnd *, sector_t, unsigned int, unsigned int);
+
+enum zbc_zone_type {
+	ZBC_ZONE_TYPE_CONV = 1,
+	ZBC_ZONE_TYPE_SEQWRITE_REQ = 2,
+	ZBC_ZONE_TYPE_SEQWRITE_PREF = 3,
+	ZBC_ZONE_TYPE_SEQ_OR_BEFORE_REQ = 4,
+	ZBC_ZONE_TYPE_GAP = 5,
+};
+
+enum zbc_zone_cond {
+	ZBC_ZONE_COND_NO_WP = 0,
+	ZBC_ZONE_COND_EMPTY = 1,
+	ZBC_ZONE_COND_IMP_OPEN = 2,
+	ZBC_ZONE_COND_EXP_OPEN = 3,
+	ZBC_ZONE_COND_CLOSED = 4,
+	ZBC_ZONE_COND_READONLY = 13,
+	ZBC_ZONE_COND_FULL = 14,
+	ZBC_ZONE_COND_OFFLINE = 15,
+};
+
+enum zbc_zone_alignment_method {
+	ZBC_CONSTANT_ZONE_LENGTH = 1,
+	ZBC_CONSTANT_ZONE_START_OFFSET = 8,
+};
+
+struct trace_event_raw_scsi_prepare_zone_append {
+	struct trace_entry ent;
+	unsigned int host_no;
+	unsigned int channel;
+	unsigned int id;
+	unsigned int lun;
+	sector_t lba;
+	unsigned int wp_offset;
+	char __data[0];
+};
+
+struct trace_event_raw_scsi_zone_wp_update {
+	struct trace_entry ent;
+	unsigned int host_no;
+	unsigned int channel;
+	unsigned int id;
+	unsigned int lun;
+	sector_t rq_sector;
+	unsigned int wp_offset;
+	unsigned int good_bytes;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_scsi_prepare_zone_append {};
+
+struct trace_event_data_offsets_scsi_zone_wp_update {};
+
+struct nvme_command;
+
+typedef void (*btf_trace_nvme_setup_cmd)(void *, struct request *, struct nvme_command *);
+
+struct nvme_sgl_desc {
+	__le64 addr;
+	__le32 length;
+	__u8 rsvd[3];
+	__u8 type;
+};
+
+struct nvme_keyed_sgl_desc {
+	__le64 addr;
+	__u8 length[3];
+	__u8 key[4];
+	__u8 type;
+};
+
+union nvme_data_ptr {
+	struct {
+		__le64 prp1;
+		__le64 prp2;
+	};
+	struct nvme_sgl_desc sgl;
+	struct nvme_keyed_sgl_desc ksgl;
+};
+
+struct nvme_common_command {
+	__u8 opcode;
+	__u8 flags;
+	__u16 command_id;
+	__le32 nsid;
+	__le32 cdw2[2];
+	__le64 metadata;
+	union nvme_data_ptr dptr;
+	union {
+		struct {
+			__le32 cdw10;
+			__le32 cdw11;
+			__le32 cdw12;
+			__le32 cdw13;
+			__le32 cdw14;
+			__le32 cdw15;
+		};
+		struct {
+			__le32 cdw10;
+			__le32 cdw11;
+			__le32 cdw12;
+			__le32 cdw13;
+			__le32 cdw14;
+			__le32 cdw15;
+		} cdws;
+	};
+};
+
+struct nvme_rw_command {
+	__u8 opcode;
+	__u8 flags;
+	__u16 command_id;
+	__le32 nsid;
+	__le32 cdw2;
+	__le32 cdw3;
+	__le64 metadata;
+	union nvme_data_ptr dptr;
+	__le64 slba;
+	__le16 length;
+	__le16 control;
+	__le32 dsmgmt;
+	__le32 reftag;
+	__le16 apptag;
+	__le16 appmask;
+};
+
+struct nvme_identify {
+	__u8 opcode;
+	__u8 flags;
+	__u16 command_id;
+	__le32 nsid;
+	__u64 rsvd2[2];
+	union nvme_data_ptr dptr;
+	__u8 cns;
+	__u8 rsvd3;
+	__le16 ctrlid;
+	__u8 rsvd11[3];
+	__u8 csi;
+	__u32 rsvd12[4];
+};
+
+struct nvme_features {
+	__u8 opcode;
+	__u8 flags;
+	__u16 command_id;
+	__le32 nsid;
+	__u64 rsvd2[2];
+	union nvme_data_ptr dptr;
+	__le32 fid;
+	__le32 dword11;
+	__le32 dword12;
+	__le32 dword13;
+	__le32 dword14;
+	__le32 dword15;
+};
+
+struct nvme_create_cq {
+	__u8 opcode;
+	__u8 flags;
+	__u16 command_id;
+	__u32 rsvd1[5];
+	__le64 prp1;
+	__u64 rsvd8;
+	__le16 cqid;
+	__le16 qsize;
+	__le16 cq_flags;
+	__le16 irq_vector;
+	__u32 rsvd12[4];
+};
+
+struct nvme_create_sq {
+	__u8 opcode;
+	__u8 flags;
+	__u16 command_id;
+	__u32 rsvd1[5];
+	__le64 prp1;
+	__u64 rsvd8;
+	__le16 sqid;
+	__le16 qsize;
+	__le16 sq_flags;
+	__le16 cqid;
+	__u32 rsvd12[4];
+};
+
+struct nvme_delete_queue {
+	__u8 opcode;
+	__u8 flags;
+	__u16 command_id;
+	__u32 rsvd1[9];
+	__le16 qid;
+	__u16 rsvd10;
+	__u32 rsvd11[5];
+};
+
+struct nvme_download_firmware {
+	__u8 opcode;
+	__u8 flags;
+	__u16 command_id;
+	__u32 rsvd1[5];
+	union nvme_data_ptr dptr;
+	__le32 numd;
+	__le32 offset;
+	__u32 rsvd12[4];
+};
+
+struct nvme_format_cmd {
+	__u8 opcode;
+	__u8 flags;
+	__u16 command_id;
+	__le32 nsid;
+	__u64 rsvd2[4];
+	__le32 cdw10;
+	__u32 rsvd11[5];
+};
+
+struct nvme_dsm_cmd {
+	__u8 opcode;
+	__u8 flags;
+	__u16 command_id;
+	__le32 nsid;
+	__u64 rsvd2[2];
+	union nvme_data_ptr dptr;
+	__le32 nr;
+	__le32 attributes;
+	__u32 rsvd12[4];
+};
+
+struct nvme_write_zeroes_cmd {
+	__u8 opcode;
+	__u8 flags;
+	__u16 command_id;
+	__le32 nsid;
+	__u64 rsvd2;
+	__le64 metadata;
+	union nvme_data_ptr dptr;
+	__le64 slba;
+	__le16 length;
+	__le16 control;
+	__le32 dsmgmt;
+	__le32 reftag;
+	__le16 apptag;
+	__le16 appmask;
+};
+
+struct nvme_zone_mgmt_send_cmd {
+	__u8 opcode;
+	__u8 flags;
+	__u16 command_id;
+	__le32 nsid;
+	__le32 cdw2[2];
+	__le64 metadata;
+	union nvme_data_ptr dptr;
+	__le64 slba;
+	__le32 cdw12;
+	__u8 zsa;
+	__u8 select_all;
+	__u8 rsvd13[2];
+	__le32 cdw14[2];
+};
+
+struct nvme_zone_mgmt_recv_cmd {
+	__u8 opcode;
+	__u8 flags;
+	__u16 command_id;
+	__le32 nsid;
+	__le64 rsvd2[2];
+	union nvme_data_ptr dptr;
+	__le64 slba;
+	__le32 numd;
+	__u8 zra;
+	__u8 zrasf;
+	__u8 pr;
+	__u8 rsvd13;
+	__le32 cdw14[2];
+};
+
+struct nvme_abort_cmd {
+	__u8 opcode;
+	__u8 flags;
+	__u16 command_id;
+	__u32 rsvd1[9];
+	__le16 sqid;
+	__u16 cid;
+	__u32 rsvd11[5];
+};
+
+struct nvme_get_log_page_command {
+	__u8 opcode;
+	__u8 flags;
+	__u16 command_id;
+	__le32 nsid;
+	__u64 rsvd2[2];
+	union nvme_data_ptr dptr;
+	__u8 lid;
+	__u8 lsp;
+	__le16 numdl;
+	__le16 numdu;
+	__u16 rsvd11;
+	union {
+		struct {
+			__le32 lpol;
+			__le32 lpou;
+		};
+		__le64 lpo;
+	};
+	__u8 rsvd14[3];
+	__u8 csi;
+	__u32 rsvd15;
+};
+
+struct nvmf_common_command {
+	__u8 opcode;
+	__u8 resv1;
+	__u16 command_id;
+	__u8 fctype;
+	__u8 resv2[35];
+	__u8 ts[24];
+};
+
+struct nvmf_connect_command {
+	__u8 opcode;
+	__u8 resv1;
+	__u16 command_id;
+	__u8 fctype;
+	__u8 resv2[19];
+	union nvme_data_ptr dptr;
+	__le16 recfmt;
+	__le16 qid;
+	__le16 sqsize;
+	__u8 cattr;
+	__u8 resv3;
+	__le32 kato;
+	__u8 resv4[12];
+};
+
+struct nvmf_property_set_command {
+	__u8 opcode;
+	__u8 resv1;
+	__u16 command_id;
+	__u8 fctype;
+	__u8 resv2[35];
+	__u8 attrib;
+	__u8 resv3[3];
+	__le32 offset;
+	__le64 value;
+	__u8 resv4[8];
+};
+
+struct nvmf_property_get_command {
+	__u8 opcode;
+	__u8 resv1;
+	__u16 command_id;
+	__u8 fctype;
+	__u8 resv2[35];
+	__u8 attrib;
+	__u8 resv3[3];
+	__le32 offset;
+	__u8 resv4[16];
+};
+
+struct nvmf_auth_common_command {
+	__u8 opcode;
+	__u8 resv1;
+	__u16 command_id;
+	__u8 fctype;
+	__u8 resv2[19];
+	union nvme_data_ptr dptr;
+	__u8 resv3;
+	__u8 spsp0;
+	__u8 spsp1;
+	__u8 secp;
+	__le32 al_tl;
+	__u8 resv4[16];
+};
+
+struct nvmf_auth_send_command {
+	__u8 opcode;
+	__u8 resv1;
+	__u16 command_id;
+	__u8 fctype;
+	__u8 resv2[19];
+	union nvme_data_ptr dptr;
+	__u8 resv3;
+	__u8 spsp0;
+	__u8 spsp1;
+	__u8 secp;
+	__le32 tl;
+	__u8 resv4[16];
+};
+
+struct nvmf_auth_receive_command {
+	__u8 opcode;
+	__u8 resv1;
+	__u16 command_id;
+	__u8 fctype;
+	__u8 resv2[19];
+	union nvme_data_ptr dptr;
+	__u8 resv3;
+	__u8 spsp0;
+	__u8 spsp1;
+	__u8 secp;
+	__le32 al;
+	__u8 resv4[16];
+};
+
+struct nvme_dbbuf {
+	__u8 opcode;
+	__u8 flags;
+	__u16 command_id;
+	__u32 rsvd1[5];
+	__le64 prp1;
+	__le64 prp2;
+	__u32 rsvd12[6];
+};
+
+struct nvme_directive_cmd {
+	__u8 opcode;
+	__u8 flags;
+	__u16 command_id;
+	__le32 nsid;
+	__u64 rsvd2[2];
+	union nvme_data_ptr dptr;
+	__le32 numd;
+	__u8 doper;
+	__u8 dtype;
+	__le16 dspec;
+	__u8 endir;
+	__u8 tdtype;
+	__u16 rsvd15;
+	__u32 rsvd16[3];
+};
+
+struct nvme_command {
+	union {
+		struct nvme_common_command common;
+		struct nvme_rw_command rw;
+		struct nvme_identify identify;
+		struct nvme_features features;
+		struct nvme_create_cq create_cq;
+		struct nvme_create_sq create_sq;
+		struct nvme_delete_queue delete_queue;
+		struct nvme_download_firmware dlfw;
+		struct nvme_format_cmd format;
+		struct nvme_dsm_cmd dsm;
+		struct nvme_write_zeroes_cmd write_zeroes;
+		struct nvme_zone_mgmt_send_cmd zms;
+		struct nvme_zone_mgmt_recv_cmd zmr;
+		struct nvme_abort_cmd abort;
+		struct nvme_get_log_page_command get_log_page;
+		struct nvmf_common_command fabrics;
+		struct nvmf_connect_command connect;
+		struct nvmf_property_set_command prop_set;
+		struct nvmf_property_get_command prop_get;
+		struct nvmf_auth_common_command auth_common;
+		struct nvmf_auth_send_command auth_send;
+		struct nvmf_auth_receive_command auth_receive;
+		struct nvme_dbbuf dbbuf;
+		struct nvme_directive_cmd directive;
+	};
+};
+
+typedef void (*btf_trace_nvme_complete_rq)(void *, struct request *);
+
+struct nvme_ctrl;
+
+typedef void (*btf_trace_nvme_async_event)(void *, struct nvme_ctrl *, u32);
+
+enum nvme_ctrl_state {
+	NVME_CTRL_NEW = 0,
+	NVME_CTRL_LIVE = 1,
+	NVME_CTRL_RESETTING = 2,
+	NVME_CTRL_CONNECTING = 3,
+	NVME_CTRL_DELETING = 4,
+	NVME_CTRL_DELETING_NOIO = 5,
+	NVME_CTRL_DEAD = 6,
+};
+
+struct nvme_id_power_state {
+	__le16 max_power;
+	__u8 rsvd2;
+	__u8 flags;
+	__le32 entry_lat;
+	__le32 exit_lat;
+	__u8 read_tput;
+	__u8 read_lat;
+	__u8 write_tput;
+	__u8 write_lat;
+	__le16 idle_power;
+	__u8 idle_scale;
+	__u8 rsvd19;
+	__le16 active_power;
+	__u8 active_work_scale;
+	__u8 rsvd23[9];
+};
+
+struct nvme_fault_inject {};
+
+enum nvme_ctrl_type {
+	NVME_CTRL_IO = 1,
+	NVME_CTRL_DISC = 2,
+	NVME_CTRL_ADMIN = 3,
+};
+
+enum nvme_dctype {
+	NVME_DCTYPE_NOT_REPORTED = 0,
+	NVME_DCTYPE_DDC = 1,
+	NVME_DCTYPE_CDC = 2,
+};
+
+struct nvme_ctrl_ops;
+
+struct nvme_subsystem;
+
+struct nvme_effects_log;
+
+struct nvme_ana_rsp_hdr;
+
+struct nvmf_ctrl_options;
+
+struct nvme_ctrl {
+	bool comp_seen;
+	bool identified;
+	enum nvme_ctrl_state state;
+	spinlock_t lock;
+	struct mutex scan_lock;
+	const struct nvme_ctrl_ops *ops;
+	struct request_queue *admin_q;
+	struct request_queue *connect_q;
+	struct request_queue *fabrics_q;
+	struct device *dev;
+	int instance;
+	int numa_node;
+	struct blk_mq_tag_set *tagset;
+	struct blk_mq_tag_set *admin_tagset;
+	struct list_head namespaces;
+	struct rw_semaphore namespaces_rwsem;
+	struct device ctrl_device;
+	struct device *device;
+	struct cdev cdev;
+	struct work_struct reset_work;
+	struct work_struct delete_work;
+	wait_queue_head_t state_wq;
+	struct nvme_subsystem *subsys;
+	struct list_head subsys_entry;
+	struct opal_dev *opal_dev;
+	char name[12];
+	u16 cntlid;
+	u16 mtfa;
+	u32 ctrl_config;
+	u32 queue_count;
+	u64 cap;
+	u32 max_hw_sectors;
+	u32 max_segments;
+	u32 max_integrity_segments;
+	u32 max_discard_sectors;
+	u32 max_discard_segments;
+	u32 max_zeroes_sectors;
+	u32 max_zone_append;
+	u16 crdt[3];
+	u16 oncs;
+	u32 dmrsl;
+	u16 oacs;
+	u16 sqsize;
+	u32 max_namespaces;
+	atomic_t abort_limit;
+	u8 vwc;
+	u32 vs;
+	u32 sgls;
+	u16 kas;
+	u8 npss;
+	u8 apsta;
+	u16 wctemp;
+	u16 cctemp;
+	u32 oaes;
+	u32 aen_result;
+	u32 ctratt;
+	unsigned int shutdown_timeout;
+	unsigned int kato;
+	bool subsystem;
+	unsigned long quirks;
+	struct nvme_id_power_state psd[32];
+	struct nvme_effects_log *effects;
+	struct xarray cels;
+	struct work_struct scan_work;
+	struct work_struct async_event_work;
+	struct delayed_work ka_work;
+	struct delayed_work failfast_work;
+	struct nvme_command ka_cmd;
+	unsigned long ka_last_check_time;
+	struct work_struct fw_act_work;
+	unsigned long events;
+	u8 anacap;
+	u8 anatt;
+	u32 anagrpmax;
+	u32 nanagrpid;
+	struct mutex ana_lock;
+	struct nvme_ana_rsp_hdr *ana_log_buf;
+	size_t ana_log_size;
+	struct timer_list anatt_timer;
+	struct work_struct ana_work;
+	u64 ps_max_latency_us;
+	bool apst_enabled;
+	u16 hmmaxd;
+	u32 hmpre;
+	u32 hmmin;
+	u32 hmminds;
+	u32 ioccsz;
+	u32 iorcsz;
+	u16 icdoff;
+	u16 maxcmd;
+	int nr_reconnects;
+	unsigned long flags;
+	struct nvmf_ctrl_options *opts;
+	struct page *discard_page;
+	unsigned long discard_page_busy;
+	struct nvme_fault_inject fault_inject;
+	enum nvme_ctrl_type cntrltype;
+	enum nvme_dctype dctype;
+};
+
+struct nvme_ctrl_ops {
+	const char *name;
+	struct module *module;
+	unsigned int flags;
+	const struct attribute_group **dev_attr_groups;
+	int (*reg_read32)(struct nvme_ctrl *, u32, u32 *);
+	int (*reg_write32)(struct nvme_ctrl *, u32, u32);
+	int (*reg_read64)(struct nvme_ctrl *, u32, u64 *);
+	void (*free_ctrl)(struct nvme_ctrl *);
+	void (*submit_async_event)(struct nvme_ctrl *);
+	void (*delete_ctrl)(struct nvme_ctrl *);
+	void (*stop_ctrl)(struct nvme_ctrl *);
+	int (*get_address)(struct nvme_ctrl *, char *, int);
+	void (*print_device_info)(struct nvme_ctrl *);
+	bool (*supports_pci_p2pdma)(struct nvme_ctrl *);
+};
+
+enum nvme_subsys_type {
+	NVME_NQN_DISC = 1,
+	NVME_NQN_NVME = 2,
+	NVME_NQN_CURR = 3,
+};
+
+enum nvme_iopolicy {
+	NVME_IOPOLICY_NUMA = 0,
+	NVME_IOPOLICY_RR = 1,
+};
+
+struct nvme_subsystem {
+	int instance;
+	struct device dev;
+	struct kref ref;
+	struct list_head entry;
+	struct mutex lock;
+	struct list_head ctrls;
+	struct list_head nsheads;
+	char subnqn[223];
+	char serial[20];
+	char model[40];
+	char firmware_rev[8];
+	u8 cmic;
+	enum nvme_subsys_type subtype;
+	u16 vendor_id;
+	u16 awupf;
+	struct ida ns_ida;
+	enum nvme_iopolicy iopolicy;
+};
+
+struct nvme_effects_log {
+	__le32 acs[256];
+	__le32 iocs[256];
+	__u8 resv[2048];
+};
+
+struct nvme_ana_rsp_hdr {
+	__le64 chgcnt;
+	__le16 ngrps;
+	__le16 rsvd10[3];
+};
+
+struct nvmf_host;
+
+struct nvmf_ctrl_options {
+	unsigned int mask;
+	int max_reconnects;
+	char *transport;
+	char *subsysnqn;
+	char *traddr;
+	char *trsvcid;
+	char *host_traddr;
+	char *host_iface;
+	size_t queue_size;
+	unsigned int nr_io_queues;
+	unsigned int reconnect_delay;
+	bool discovery_nqn;
+	bool duplicate_connect;
+	unsigned int kato;
+	struct nvmf_host *host;
+	char *dhchap_secret;
+	char *dhchap_ctrl_secret;
+	bool disable_sqflow;
+	bool hdr_digest;
+	bool data_digest;
+	unsigned int nr_write_queues;
+	unsigned int nr_poll_queues;
+	int tos;
+	int fast_io_fail_tmo;
+};
+
+struct nvmf_host {
+	struct kref ref;
+	struct list_head list;
+	char nqn[223];
+	uuid_t id;
+};
+
+typedef void (*btf_trace_nvme_sq)(void *, struct request *, __le16, int);
+
+struct nvme_core_quirk_entry {
+	u16 vid;
+	const char *mn;
+	const char *fr;
+	unsigned long quirks;
+};
+
+enum nvme_disposition {
+	COMPLETE = 0,
+	RETRY = 1,
+	FAILOVER = 2,
+	AUTHENTICATE = 3,
+};
+
+enum {
+	NVME_SC_SUCCESS = 0,
+	NVME_SC_INVALID_OPCODE = 1,
+	NVME_SC_INVALID_FIELD = 2,
+	NVME_SC_CMDID_CONFLICT = 3,
+	NVME_SC_DATA_XFER_ERROR = 4,
+	NVME_SC_POWER_LOSS = 5,
+	NVME_SC_INTERNAL = 6,
+	NVME_SC_ABORT_REQ = 7,
+	NVME_SC_ABORT_QUEUE = 8,
+	NVME_SC_FUSED_FAIL = 9,
+	NVME_SC_FUSED_MISSING = 10,
+	NVME_SC_INVALID_NS = 11,
+	NVME_SC_CMD_SEQ_ERROR = 12,
+	NVME_SC_SGL_INVALID_LAST = 13,
+	NVME_SC_SGL_INVALID_COUNT = 14,
+	NVME_SC_SGL_INVALID_DATA = 15,
+	NVME_SC_SGL_INVALID_METADATA = 16,
+	NVME_SC_SGL_INVALID_TYPE = 17,
+	NVME_SC_CMB_INVALID_USE = 18,
+	NVME_SC_PRP_INVALID_OFFSET = 19,
+	NVME_SC_ATOMIC_WU_EXCEEDED = 20,
+	NVME_SC_OP_DENIED = 21,
+	NVME_SC_SGL_INVALID_OFFSET = 22,
+	NVME_SC_RESERVED = 23,
+	NVME_SC_HOST_ID_INCONSIST = 24,
+	NVME_SC_KA_TIMEOUT_EXPIRED = 25,
+	NVME_SC_KA_TIMEOUT_INVALID = 26,
+	NVME_SC_ABORTED_PREEMPT_ABORT = 27,
+	NVME_SC_SANITIZE_FAILED = 28,
+	NVME_SC_SANITIZE_IN_PROGRESS = 29,
+	NVME_SC_SGL_INVALID_GRANULARITY = 30,
+	NVME_SC_CMD_NOT_SUP_CMB_QUEUE = 31,
+	NVME_SC_NS_WRITE_PROTECTED = 32,
+	NVME_SC_CMD_INTERRUPTED = 33,
+	NVME_SC_TRANSIENT_TR_ERR = 34,
+	NVME_SC_ADMIN_COMMAND_MEDIA_NOT_READY = 36,
+	NVME_SC_INVALID_IO_CMD_SET = 44,
+	NVME_SC_LBA_RANGE = 128,
+	NVME_SC_CAP_EXCEEDED = 129,
+	NVME_SC_NS_NOT_READY = 130,
+	NVME_SC_RESERVATION_CONFLICT = 131,
+	NVME_SC_FORMAT_IN_PROGRESS = 132,
+	NVME_SC_CQ_INVALID = 256,
+	NVME_SC_QID_INVALID = 257,
+	NVME_SC_QUEUE_SIZE = 258,
+	NVME_SC_ABORT_LIMIT = 259,
+	NVME_SC_ABORT_MISSING = 260,
+	NVME_SC_ASYNC_LIMIT = 261,
+	NVME_SC_FIRMWARE_SLOT = 262,
+	NVME_SC_FIRMWARE_IMAGE = 263,
+	NVME_SC_INVALID_VECTOR = 264,
+	NVME_SC_INVALID_LOG_PAGE = 265,
+	NVME_SC_INVALID_FORMAT = 266,
+	NVME_SC_FW_NEEDS_CONV_RESET = 267,
+	NVME_SC_INVALID_QUEUE = 268,
+	NVME_SC_FEATURE_NOT_SAVEABLE = 269,
+	NVME_SC_FEATURE_NOT_CHANGEABLE = 270,
+	NVME_SC_FEATURE_NOT_PER_NS = 271,
+	NVME_SC_FW_NEEDS_SUBSYS_RESET = 272,
+	NVME_SC_FW_NEEDS_RESET = 273,
+	NVME_SC_FW_NEEDS_MAX_TIME = 274,
+	NVME_SC_FW_ACTIVATE_PROHIBITED = 275,
+	NVME_SC_OVERLAPPING_RANGE = 276,
+	NVME_SC_NS_INSUFFICIENT_CAP = 277,
+	NVME_SC_NS_ID_UNAVAILABLE = 278,
+	NVME_SC_NS_ALREADY_ATTACHED = 280,
+	NVME_SC_NS_IS_PRIVATE = 281,
+	NVME_SC_NS_NOT_ATTACHED = 282,
+	NVME_SC_THIN_PROV_NOT_SUPP = 283,
+	NVME_SC_CTRL_LIST_INVALID = 284,
+	NVME_SC_SELT_TEST_IN_PROGRESS = 285,
+	NVME_SC_BP_WRITE_PROHIBITED = 286,
+	NVME_SC_CTRL_ID_INVALID = 287,
+	NVME_SC_SEC_CTRL_STATE_INVALID = 288,
+	NVME_SC_CTRL_RES_NUM_INVALID = 289,
+	NVME_SC_RES_ID_INVALID = 290,
+	NVME_SC_PMR_SAN_PROHIBITED = 291,
+	NVME_SC_ANA_GROUP_ID_INVALID = 292,
+	NVME_SC_ANA_ATTACH_FAILED = 293,
+	NVME_SC_BAD_ATTRIBUTES = 384,
+	NVME_SC_INVALID_PI = 385,
+	NVME_SC_READ_ONLY = 386,
+	NVME_SC_ONCS_NOT_SUPPORTED = 387,
+	NVME_SC_CONNECT_FORMAT = 384,
+	NVME_SC_CONNECT_CTRL_BUSY = 385,
+	NVME_SC_CONNECT_INVALID_PARAM = 386,
+	NVME_SC_CONNECT_RESTART_DISC = 387,
+	NVME_SC_CONNECT_INVALID_HOST = 388,
+	NVME_SC_DISCOVERY_RESTART = 400,
+	NVME_SC_AUTH_REQUIRED = 401,
+	NVME_SC_ZONE_BOUNDARY_ERROR = 440,
+	NVME_SC_ZONE_FULL = 441,
+	NVME_SC_ZONE_READ_ONLY = 442,
+	NVME_SC_ZONE_OFFLINE = 443,
+	NVME_SC_ZONE_INVALID_WRITE = 444,
+	NVME_SC_ZONE_TOO_MANY_ACTIVE = 445,
+	NVME_SC_ZONE_TOO_MANY_OPEN = 446,
+	NVME_SC_ZONE_INVALID_TRANSITION = 447,
+	NVME_SC_WRITE_FAULT = 640,
+	NVME_SC_READ_ERROR = 641,
+	NVME_SC_GUARD_CHECK = 642,
+	NVME_SC_APPTAG_CHECK = 643,
+	NVME_SC_REFTAG_CHECK = 644,
+	NVME_SC_COMPARE_FAILED = 645,
+	NVME_SC_ACCESS_DENIED = 646,
+	NVME_SC_UNWRITTEN_BLOCK = 647,
+	NVME_SC_INTERNAL_PATH_ERROR = 768,
+	NVME_SC_ANA_PERSISTENT_LOSS = 769,
+	NVME_SC_ANA_INACCESSIBLE = 770,
+	NVME_SC_ANA_TRANSITION = 771,
+	NVME_SC_CTRL_PATH_ERROR = 864,
+	NVME_SC_HOST_PATH_ERROR = 880,
+	NVME_SC_HOST_ABORTED_CMD = 881,
+	NVME_SC_CRD = 6144,
+	NVME_SC_MORE = 8192,
+	NVME_SC_DNR = 16384,
+};
+
+enum {
+	NVME_REQ_CANCELLED = 1,
+	NVME_REQ_USERCMD = 2,
+	NVME_MPATH_IO_STATS = 4,
+};
+
+enum nvme_ana_state {
+	NVME_ANA_OPTIMIZED = 1,
+	NVME_ANA_NONOPTIMIZED = 2,
+	NVME_ANA_INACCESSIBLE = 3,
+	NVME_ANA_PERSISTENT_LOSS = 4,
+	NVME_ANA_CHANGE = 15,
+};
+
+enum {
+	NVME_CMD_FUSE_FIRST = 1,
+	NVME_CMD_FUSE_SECOND = 2,
+	NVME_CMD_SGL_METABUF = 64,
+	NVME_CMD_SGL_METASEG = 128,
+	NVME_CMD_SGL_ALL = 192,
+};
+
+enum nvme_ctrl_flags {
+	NVME_CTRL_FAILFAST_EXPIRED = 0,
+	NVME_CTRL_ADMIN_Q_STOPPED = 1,
+	NVME_CTRL_STARTED_ONCE = 2,
+	NVME_CTRL_STOPPED = 3,
+	NVME_CTRL_SKIP_ID_CNS_CS = 4,
+	NVME_CTRL_DIRTY_CAPABILITY = 5,
+	NVME_CTRL_FROZEN = 6,
+};
+
+enum nvmf_capsule_command {
+	nvme_fabrics_type_property_set = 0,
+	nvme_fabrics_type_connect = 1,
+	nvme_fabrics_type_property_get = 4,
+	nvme_fabrics_type_auth_send = 5,
+	nvme_fabrics_type_auth_receive = 6,
+};
+
+enum nvme_zone_mgmt_action {
+	NVME_ZONE_CLOSE = 1,
+	NVME_ZONE_FINISH = 2,
+	NVME_ZONE_OPEN = 3,
+	NVME_ZONE_RESET = 4,
+	NVME_ZONE_OFFLINE = 5,
+	NVME_ZONE_SET_DESC_EXT = 16,
+};
+
+enum nvme_opcode {
+	nvme_cmd_flush = 0,
+	nvme_cmd_write = 1,
+	nvme_cmd_read = 2,
+	nvme_cmd_write_uncor = 4,
+	nvme_cmd_compare = 5,
+	nvme_cmd_write_zeroes = 8,
+	nvme_cmd_dsm = 9,
+	nvme_cmd_verify = 12,
+	nvme_cmd_resv_register = 13,
+	nvme_cmd_resv_report = 14,
+	nvme_cmd_resv_acquire = 17,
+	nvme_cmd_resv_release = 21,
+	nvme_cmd_zone_mgmt_send = 121,
+	nvme_cmd_zone_mgmt_recv = 122,
+	nvme_cmd_zone_append = 125,
+	nvme_cmd_vendor_start = 128,
+};
+
+enum {
+	NVME_CMD_EFFECTS_CSUPP = 1,
+	NVME_CMD_EFFECTS_LBCC = 2,
+	NVME_CMD_EFFECTS_NCC = 4,
+	NVME_CMD_EFFECTS_NIC = 8,
+	NVME_CMD_EFFECTS_CCC = 16,
+	NVME_CMD_EFFECTS_CSE_MASK = 458752,
+	NVME_CMD_EFFECTS_UUID_SEL = 524288,
+	NVME_CMD_EFFECTS_SCOPE_MASK = 4293918720,
+};
+
+enum nvme_admin_opcode {
+	nvme_admin_delete_sq = 0,
+	nvme_admin_create_sq = 1,
+	nvme_admin_get_log_page = 2,
+	nvme_admin_delete_cq = 4,
+	nvme_admin_create_cq = 5,
+	nvme_admin_identify = 6,
+	nvme_admin_abort_cmd = 8,
+	nvme_admin_set_features = 9,
+	nvme_admin_get_features = 10,
+	nvme_admin_async_event = 12,
+	nvme_admin_ns_mgmt = 13,
+	nvme_admin_activate_fw = 16,
+	nvme_admin_download_fw = 17,
+	nvme_admin_dev_self_test = 20,
+	nvme_admin_ns_attach = 21,
+	nvme_admin_keep_alive = 24,
+	nvme_admin_directive_send = 25,
+	nvme_admin_directive_recv = 26,
+	nvme_admin_virtual_mgmt = 28,
+	nvme_admin_nvme_mi_send = 29,
+	nvme_admin_nvme_mi_recv = 30,
+	nvme_admin_dbbuf = 124,
+	nvme_admin_format_nvm = 128,
+	nvme_admin_security_send = 129,
+	nvme_admin_security_recv = 130,
+	nvme_admin_sanitize_nvm = 132,
+	nvme_admin_get_lba_status = 134,
+	nvme_admin_vendor_start = 192,
+};
+
+enum {
+	NVME_QUEUE_PHYS_CONTIG = 1,
+	NVME_CQ_IRQ_ENABLED = 2,
+	NVME_SQ_PRIO_URGENT = 0,
+	NVME_SQ_PRIO_HIGH = 2,
+	NVME_SQ_PRIO_MEDIUM = 4,
+	NVME_SQ_PRIO_LOW = 6,
+	NVME_FEAT_ARBITRATION = 1,
+	NVME_FEAT_POWER_MGMT = 2,
+	NVME_FEAT_LBA_RANGE = 3,
+	NVME_FEAT_TEMP_THRESH = 4,
+	NVME_FEAT_ERR_RECOVERY = 5,
+	NVME_FEAT_VOLATILE_WC = 6,
+	NVME_FEAT_NUM_QUEUES = 7,
+	NVME_FEAT_IRQ_COALESCE = 8,
+	NVME_FEAT_IRQ_CONFIG = 9,
+	NVME_FEAT_WRITE_ATOMIC = 10,
+	NVME_FEAT_ASYNC_EVENT = 11,
+	NVME_FEAT_AUTO_PST = 12,
+	NVME_FEAT_HOST_MEM_BUF = 13,
+	NVME_FEAT_TIMESTAMP = 14,
+	NVME_FEAT_KATO = 15,
+	NVME_FEAT_HCTM = 16,
+	NVME_FEAT_NOPSC = 17,
+	NVME_FEAT_RRL = 18,
+	NVME_FEAT_PLM_CONFIG = 19,
+	NVME_FEAT_PLM_WINDOW = 20,
+	NVME_FEAT_HOST_BEHAVIOR = 22,
+	NVME_FEAT_SANITIZE = 23,
+	NVME_FEAT_SW_PROGRESS = 128,
+	NVME_FEAT_HOST_ID = 129,
+	NVME_FEAT_RESV_MASK = 130,
+	NVME_FEAT_RESV_PERSIST = 131,
+	NVME_FEAT_WRITE_PROTECT = 132,
+	NVME_FEAT_VENDOR_START = 192,
+	NVME_FEAT_VENDOR_END = 255,
+	NVME_LOG_ERROR = 1,
+	NVME_LOG_SMART = 2,
+	NVME_LOG_FW_SLOT = 3,
+	NVME_LOG_CHANGED_NS = 4,
+	NVME_LOG_CMD_EFFECTS = 5,
+	NVME_LOG_DEVICE_SELF_TEST = 6,
+	NVME_LOG_TELEMETRY_HOST = 7,
+	NVME_LOG_TELEMETRY_CTRL = 8,
+	NVME_LOG_ENDURANCE_GROUP = 9,
+	NVME_LOG_ANA = 12,
+	NVME_LOG_DISC = 112,
+	NVME_LOG_RESERVATION = 128,
+	NVME_FWACT_REPL = 0,
+	NVME_FWACT_REPL_ACTV = 8,
+	NVME_FWACT_ACTV = 16,
+};
+
+enum nvme_quirks {
+	NVME_QUIRK_STRIPE_SIZE = 1,
+	NVME_QUIRK_IDENTIFY_CNS = 2,
+	NVME_QUIRK_DEALLOCATE_ZEROES = 4,
+	NVME_QUIRK_DELAY_BEFORE_CHK_RDY = 8,
+	NVME_QUIRK_NO_APST = 16,
+	NVME_QUIRK_NO_DEEPEST_PS = 32,
+	NVME_QUIRK_MEDIUM_PRIO_SQ = 128,
+	NVME_QUIRK_IGNORE_DEV_SUBNQN = 256,
+	NVME_QUIRK_DISABLE_WRITE_ZEROES = 512,
+	NVME_QUIRK_SIMPLE_SUSPEND = 1024,
+	NVME_QUIRK_SINGLE_VECTOR = 2048,
+	NVME_QUIRK_128_BYTES_SQES = 4096,
+	NVME_QUIRK_SHARED_TAGS = 8192,
+	NVME_QUIRK_NO_TEMP_THRESH_CHANGE = 16384,
+	NVME_QUIRK_NO_NS_DESC_LIST = 32768,
+	NVME_QUIRK_DMA_ADDRESS_BITS_48 = 65536,
+	NVME_QUIRK_SKIP_CID_GEN = 131072,
+	NVME_QUIRK_BOGUS_NID = 262144,
+	NVME_QUIRK_NO_SECONDARY_TEMP_THRESH = 524288,
+	NVME_QUIRK_FORCE_NO_SIMPLE_SUSPEND = 1048576,
+};
+
+enum {
+	NVME_CAP_CSS_NVM = 1,
+	NVME_CAP_CSS_CSI = 64,
+};
+
+enum {
+	NVME_CAP_CRMS_CRWMS = 576460752303423488ULL,
+	NVME_CAP_CRMS_CRIMS = 1152921504606846976ULL,
+};
+
+enum {
+	NVME_AER_ERROR = 0,
+	NVME_AER_SMART = 1,
+	NVME_AER_NOTICE = 2,
+	NVME_AER_CSS = 6,
+	NVME_AER_VS = 7,
+};
+
+enum {
+	NVME_AER_ERROR_PERSIST_INT_ERR = 3,
+};
+
+enum nvmf_fabrics_opcode {
+	nvme_fabrics_command = 127,
+};
+
+enum nvme_ns_features {
+	NVME_NS_EXT_LBAS = 1,
+	NVME_NS_METADATA_SUPPORTED = 2,
+	NVME_NS_DEAC = 3,
+};
+
+enum {
+	NVME_RW_LR = 32768,
+	NVME_RW_FUA = 16384,
+	NVME_RW_APPEND_PIREMAP = 512,
+	NVME_RW_DSM_FREQ_UNSPEC = 0,
+	NVME_RW_DSM_FREQ_TYPICAL = 1,
+	NVME_RW_DSM_FREQ_RARE = 2,
+	NVME_RW_DSM_FREQ_READS = 3,
+	NVME_RW_DSM_FREQ_WRITES = 4,
+	NVME_RW_DSM_FREQ_RW = 5,
+	NVME_RW_DSM_FREQ_ONCE = 6,
+	NVME_RW_DSM_FREQ_PREFETCH = 7,
+	NVME_RW_DSM_FREQ_TEMP = 8,
+	NVME_RW_DSM_LATENCY_NONE = 0,
+	NVME_RW_DSM_LATENCY_IDLE = 16,
+	NVME_RW_DSM_LATENCY_NORM = 32,
+	NVME_RW_DSM_LATENCY_LOW = 48,
+	NVME_RW_DSM_SEQ_REQ = 64,
+	NVME_RW_DSM_COMPRESSED = 128,
+	NVME_RW_PRINFO_PRCHK_REF = 1024,
+	NVME_RW_PRINFO_PRCHK_APP = 2048,
+	NVME_RW_PRINFO_PRCHK_GUARD = 4096,
+	NVME_RW_PRINFO_PRACT = 8192,
+	NVME_RW_DTYPE_STREAMS = 16,
+	NVME_WZ_DEAC = 512,
+};
+
+enum {
+	NVME_NS_FEAT_THIN = 1,
+	NVME_NS_FEAT_ATOMICS = 2,
+	NVME_NS_FEAT_IO_OPT = 16,
+	NVME_NS_ATTR_RO = 1,
+	NVME_NS_FLBAS_LBA_MASK = 15,
+	NVME_NS_FLBAS_LBA_UMASK = 96,
+	NVME_NS_FLBAS_LBA_SHIFT = 1,
+	NVME_NS_FLBAS_META_EXT = 16,
+	NVME_NS_NMIC_SHARED = 1,
+	NVME_LBAF_RP_BEST = 0,
+	NVME_LBAF_RP_BETTER = 1,
+	NVME_LBAF_RP_GOOD = 2,
+	NVME_LBAF_RP_DEGRADED = 3,
+	NVME_NS_DPC_PI_LAST = 16,
+	NVME_NS_DPC_PI_FIRST = 8,
+	NVME_NS_DPC_PI_TYPE3 = 4,
+	NVME_NS_DPC_PI_TYPE2 = 2,
+	NVME_NS_DPC_PI_TYPE1 = 1,
+	NVME_NS_DPS_PI_FIRST = 8,
+	NVME_NS_DPS_PI_MASK = 7,
+	NVME_NS_DPS_PI_TYPE1 = 1,
+	NVME_NS_DPS_PI_TYPE2 = 2,
+	NVME_NS_DPS_PI_TYPE3 = 3,
+};
+
+enum {
+	NVME_NVM_NS_16B_GUARD = 0,
+	NVME_NVM_NS_32B_GUARD = 1,
+	NVME_NVM_NS_64B_GUARD = 2,
+};
+
+enum {
+	NVME_DSMGMT_IDR = 1,
+	NVME_DSMGMT_IDW = 2,
+	NVME_DSMGMT_AD = 4,
+};
+
+enum {
+	NVME_ID_CNS_NS = 0,
+	NVME_ID_CNS_CTRL = 1,
+	NVME_ID_CNS_NS_ACTIVE_LIST = 2,
+	NVME_ID_CNS_NS_DESC_LIST = 3,
+	NVME_ID_CNS_CS_NS = 5,
+	NVME_ID_CNS_CS_CTRL = 6,
+	NVME_ID_CNS_NS_CS_INDEP = 8,
+	NVME_ID_CNS_NS_PRESENT_LIST = 16,
+	NVME_ID_CNS_NS_PRESENT = 17,
+	NVME_ID_CNS_CTRL_NS_LIST = 18,
+	NVME_ID_CNS_CTRL_LIST = 19,
+	NVME_ID_CNS_SCNDRY_CTRL_LIST = 21,
+	NVME_ID_CNS_NS_GRANULARITY = 22,
+	NVME_ID_CNS_UUID_LIST = 23,
+};
+
+enum {
+	NVME_CTRL_CMIC_MULTI_PORT = 1,
+	NVME_CTRL_CMIC_MULTI_CTRL = 2,
+	NVME_CTRL_CMIC_ANA = 8,
+	NVME_CTRL_ONCS_COMPARE = 1,
+	NVME_CTRL_ONCS_WRITE_UNCORRECTABLE = 2,
+	NVME_CTRL_ONCS_DSM = 4,
+	NVME_CTRL_ONCS_WRITE_ZEROES = 8,
+	NVME_CTRL_ONCS_RESERVATIONS = 32,
+	NVME_CTRL_ONCS_TIMESTAMP = 64,
+	NVME_CTRL_VWC_PRESENT = 1,
+	NVME_CTRL_OACS_SEC_SUPP = 1,
+	NVME_CTRL_OACS_NS_MNGT_SUPP = 8,
+	NVME_CTRL_OACS_DIRECTIVES = 32,
+	NVME_CTRL_OACS_DBBUF_SUPP = 256,
+	NVME_CTRL_LPA_CMD_EFFECTS_LOG = 2,
+	NVME_CTRL_CTRATT_128_ID = 1,
+	NVME_CTRL_CTRATT_NON_OP_PSP = 2,
+	NVME_CTRL_CTRATT_NVM_SETS = 4,
+	NVME_CTRL_CTRATT_READ_RECV_LVLS = 8,
+	NVME_CTRL_CTRATT_ENDURANCE_GROUPS = 16,
+	NVME_CTRL_CTRATT_PREDICTABLE_LAT = 32,
+	NVME_CTRL_CTRATT_NAMESPACE_GRANULARITY = 128,
+	NVME_CTRL_CTRATT_UUID_LIST = 512,
+};
+
+enum {
+	NVME_CSI_NVM = 0,
+	NVME_CSI_ZNS = 2,
+};
+
+enum {
+	NVME_PS_FLAGS_MAX_POWER_SCALE = 1,
+	NVME_PS_FLAGS_NON_OP_STATE = 2,
+};
+
+enum {
+	NVME_ENABLE_ACRE = 1,
+	NVME_ENABLE_LBAFEE = 1,
+};
+
+enum nvme_ctrl_attr {
+	NVME_CTRL_ATTR_HID_128_BIT = 1,
+	NVME_CTRL_ATTR_TBKAS = 64,
+	NVME_CTRL_ATTR_ELBAS = 32768,
+};
+
+enum {
+	NVME_AER_NOTICE_NS_CHANGED = 0,
+	NVME_AER_NOTICE_FW_ACT_STARTING = 1,
+	NVME_AER_NOTICE_ANA = 3,
+	NVME_AER_NOTICE_DISC_CHANGED = 240,
+};
+
+enum {
+	NVME_AEN_CFG_NS_ATTR = 256,
+	NVME_AEN_CFG_FW_ACT = 512,
+	NVME_AEN_CFG_ANA_CHANGE = 2048,
+	NVME_AEN_CFG_DISC_CHANGE = -2147483648,
+};
+
+enum {
+	NVME_NIDT_EUI64 = 1,
+	NVME_NIDT_NGUID = 2,
+	NVME_NIDT_UUID = 3,
+	NVME_NIDT_CSI = 4,
+};
+
+enum {
+	NVME_NSTAT_NRDY = 1,
+};
+
+enum {
+	NVME_ID_NS_NVM_STS_MASK = 127,
+	NVME_ID_NS_NVM_GUARD_SHIFT = 7,
+	NVME_ID_NS_NVM_GUARD_MASK = 3,
+};
+
+struct nvme_ns_head;
+
+struct nvme_ns {
+	struct list_head list;
+	struct nvme_ctrl *ctrl;
+	struct request_queue *queue;
+	struct gendisk *disk;
+	enum nvme_ana_state ana_state;
+	u32 ana_grpid;
+	struct list_head siblings;
+	struct kref kref;
+	struct nvme_ns_head *head;
+	int lba_shift;
+	u16 ms;
+	u16 pi_size;
+	u16 sgs;
+	u32 sws;
+	u8 pi_type;
+	u8 guard_type;
+	u64 zsze;
+	unsigned long features;
+	unsigned long flags;
+	struct cdev cdev;
+	struct device cdev_device;
+	struct nvme_fault_inject fault_inject;
+};
+
+struct nvme_ns_ids {
+	u8 eui64[8];
+	u8 nguid[16];
+	uuid_t uuid;
+	u8 csi;
+};
+
+struct nvme_ns_head {
+	struct list_head list;
+	struct srcu_struct srcu;
+	struct nvme_subsystem *subsys;
+	unsigned int ns_id;
+	struct nvme_ns_ids ids;
+	struct list_head entry;
+	struct kref ref;
+	bool shared;
+	int instance;
+	struct nvme_effects_log *effects;
+	struct cdev cdev;
+	struct device cdev_device;
+	struct gendisk *disk;
+	struct bio_list requeue_list;
+	spinlock_t requeue_lock;
+	struct work_struct requeue_work;
+	struct mutex lock;
+	unsigned long flags;
+	struct nvme_ns __attribute__((btf_type_tag("rcu"))) *current_path[0];
+};
+
+struct trace_event_raw_nvme_setup_cmd {
+	struct trace_entry ent;
+	char disk[32];
+	int ctrl_id;
+	int qid;
+	u8 opcode;
+	u8 flags;
+	u8 fctype;
+	u16 cid;
+	u32 nsid;
+	bool metadata;
+	u8 cdw10[24];
+	char __data[0];
+};
+
+struct trace_event_raw_nvme_complete_rq {
+	struct trace_entry ent;
+	char disk[32];
+	int ctrl_id;
+	int qid;
+	int cid;
+	u64 result;
+	u8 retries;
+	u8 flags;
+	u16 status;
+	char __data[0];
+};
+
+struct trace_event_raw_nvme_async_event {
+	struct trace_entry ent;
+	int ctrl_id;
+	u32 result;
+	char __data[0];
+};
+
+struct trace_event_raw_nvme_sq {
+	struct trace_entry ent;
+	int ctrl_id;
+	char disk[32];
+	int qid;
+	u16 sq_head;
+	u16 sq_tail;
+	char __data[0];
+};
+
+union nvme_result {
+	__le16 u16;
+	__le32 u32;
+	__le64 u64;
+};
+
+struct nvme_id_ctrl {
+	__le16 vid;
+	__le16 ssvid;
+	char sn[20];
+	char mn[40];
+	char fr[8];
+	__u8 rab;
+	__u8 ieee[3];
+	__u8 cmic;
+	__u8 mdts;
+	__le16 cntlid;
+	__le32 ver;
+	__le32 rtd3r;
+	__le32 rtd3e;
+	__le32 oaes;
+	__le32 ctratt;
+	__u8 rsvd100[11];
+	__u8 cntrltype;
+	__u8 fguid[16];
+	__le16 crdt1;
+	__le16 crdt2;
+	__le16 crdt3;
+	__u8 rsvd134[122];
+	__le16 oacs;
+	__u8 acl;
+	__u8 aerl;
+	__u8 frmw;
+	__u8 lpa;
+	__u8 elpe;
+	__u8 npss;
+	__u8 avscc;
+	__u8 apsta;
+	__le16 wctemp;
+	__le16 cctemp;
+	__le16 mtfa;
+	__le32 hmpre;
+	__le32 hmmin;
+	__u8 tnvmcap[16];
+	__u8 unvmcap[16];
+	__le32 rpmbs;
+	__le16 edstt;
+	__u8 dsto;
+	__u8 fwug;
+	__le16 kas;
+	__le16 hctma;
+	__le16 mntmt;
+	__le16 mxtmt;
+	__le32 sanicap;
+	__le32 hmminds;
+	__le16 hmmaxd;
+	__u8 rsvd338[4];
+	__u8 anatt;
+	__u8 anacap;
+	__le32 anagrpmax;
+	__le32 nanagrpid;
+	__u8 rsvd352[160];
+	__u8 sqes;
+	__u8 cqes;
+	__le16 maxcmd;
+	__le32 nn;
+	__le16 oncs;
+	__le16 fuses;
+	__u8 fna;
+	__u8 vwc;
+	__le16 awun;
+	__le16 awupf;
+	__u8 nvscc;
+	__u8 nwpc;
+	__le16 acwu;
+	__u8 rsvd534[2];
+	__le32 sgls;
+	__le32 mnan;
+	__u8 rsvd544[224];
+	char subnqn[256];
+	__u8 rsvd1024[768];
+	__le32 ioccsz;
+	__le32 iorcsz;
+	__le16 icdoff;
+	__u8 ctrattr;
+	__u8 msdbd;
+	__u8 rsvd1804[2];
+	__u8 dctype;
+	__u8 rsvd1807[241];
+	struct nvme_id_power_state psd[32];
+	__u8 vs[1024];
+};
+
+struct nvme_feat_host_behavior {
+	__u8 acre;
+	__u8 etdas;
+	__u8 lbafee;
+	__u8 resv1[509];
+};
+
+struct nvme_id_ctrl_nvm {
+	__u8 vsl;
+	__u8 wzsl;
+	__u8 wusl;
+	__u8 dmrl;
+	__le32 dmrsl;
+	__le64 dmsl;
+	__u8 rsvd16[4080];
+};
+
+struct nvme_fw_slot_info_log {
+	__u8 afi;
+	__u8 rsvd1[7];
+	__le64 frs[7];
+	__u8 rsvd64[448];
+};
+
+struct nvme_ns_info {
+	struct nvme_ns_ids ids;
+	u32 nsid;
+	__le32 anagrpid;
+	bool is_shared;
+	bool is_readonly;
+	bool is_ready;
+	bool is_removed;
+};
+
+struct nvme_ns_id_desc {
+	__u8 nidt;
+	__u8 nidl;
+	__le16 reserved;
+};
+
+struct nvme_lbaf {
+	__le16 ms;
+	__u8 ds;
+	__u8 rp;
+};
+
+struct nvme_id_ns {
+	__le64 nsze;
+	__le64 ncap;
+	__le64 nuse;
+	__u8 nsfeat;
+	__u8 nlbaf;
+	__u8 flbas;
+	__u8 mc;
+	__u8 dpc;
+	__u8 dps;
+	__u8 nmic;
+	__u8 rescap;
+	__u8 fpi;
+	__u8 dlfeat;
+	__le16 nawun;
+	__le16 nawupf;
+	__le16 nacwu;
+	__le16 nabsn;
+	__le16 nabo;
+	__le16 nabspf;
+	__le16 noiob;
+	__u8 nvmcap[16];
+	__le16 npwg;
+	__le16 npwa;
+	__le16 npdg;
+	__le16 npda;
+	__le16 nows;
+	__u8 rsvd74[18];
+	__le32 anagrpid;
+	__u8 rsvd96[3];
+	__u8 nsattr;
+	__le16 nvmsetid;
+	__le16 endgid;
+	__u8 nguid[16];
+	__u8 eui64[8];
+	struct nvme_lbaf lbaf[64];
+	__u8 vs[3712];
+};
+
+struct nvme_id_ns_cs_indep {
+	__u8 nsfeat;
+	__u8 nmic;
+	__u8 rescap;
+	__u8 fpi;
+	__le32 anagrpid;
+	__u8 nsattr;
+	__u8 rsvd9;
+	__le16 nvmsetid;
+	__le16 endgid;
+	__u8 nstat;
+	__u8 rsvd15[4081];
+};
+
+struct nvme_id_ns_nvm {
+	__le64 lbstm;
+	__u8 pic;
+	__u8 rsvd9[3];
+	__le32 elbaf[64];
+	__u8 rsvd268[3828];
+};
+
+struct trace_event_data_offsets_nvme_setup_cmd {};
+
+struct trace_event_data_offsets_nvme_complete_rq {};
+
+struct trace_event_data_offsets_nvme_async_event {};
+
+struct trace_event_data_offsets_nvme_sq {};
+
+struct nvme_request {
+	struct nvme_command *cmd;
+	union nvme_result result;
+	u8 genctr;
+	u8 retries;
+	u8 flags;
+	u16 status;
+	unsigned long start_time;
+	struct nvme_ctrl *ctrl;
+};
+
+struct nvme_dsm_range {
+	__le32 cattr;
+	__le32 nlb;
+	__le64 slba;
+};
+
+struct nvme_feat_auto_pst {
+	__le64 entries[32];
+};
+
+enum {
+	NVME_IOCTL_VEC = 1,
+	NVME_IOCTL_PARTITION = 2,
+};
+
+struct nvme_uring_cmd_pdu {
+	union {
+		struct bio *bio;
+		struct request *req;
+	};
+	u32 meta_len;
+	u32 nvme_status;
+	union {
+		struct {
+			void *meta;
+			void __attribute__((btf_type_tag("user"))) *meta_buffer;
+		};
+		u64 result;
+	} u;
+};
+
+struct nvme_user_io {
+	__u8 opcode;
+	__u8 flags;
+	__u16 control;
+	__u16 nblocks;
+	__u16 rsvd;
+	__u64 metadata;
+	__u64 addr;
+	__u64 slba;
+	__u32 dsmgmt;
+	__u32 reftag;
+	__u16 apptag;
+	__u16 appmask;
+};
+
+struct nvme_uring_cmd {
+	__u8 opcode;
+	__u8 flags;
+	__u16 rsvd1;
+	__u32 nsid;
+	__u32 cdw2;
+	__u32 cdw3;
+	__u64 metadata;
+	__u64 addr;
+	__u32 metadata_len;
+	__u32 data_len;
+	__u32 cdw10;
+	__u32 cdw11;
+	__u32 cdw12;
+	__u32 cdw13;
+	__u32 cdw14;
+	__u32 cdw15;
+	__u32 timeout_ms;
+	__u32 rsvd2;
+};
+
+struct nvme_uring_data {
+	__u64 metadata;
+	__u64 addr;
+	__u32 data_len;
+	__u32 metadata_len;
+	__u32 timeout_ms;
+};
+
+struct nvme_passthru_cmd {
+	__u8 opcode;
+	__u8 flags;
+	__u16 rsvd1;
+	__u32 nsid;
+	__u32 cdw2;
+	__u32 cdw3;
+	__u64 metadata;
+	__u64 addr;
+	__u32 metadata_len;
+	__u32 data_len;
+	__u32 cdw10;
+	__u32 cdw11;
+	__u32 cdw12;
+	__u32 cdw13;
+	__u32 cdw14;
+	__u32 cdw15;
+	__u32 timeout_ms;
+	__u32 result;
+};
+
+struct nvme_passthru_cmd64 {
+	__u8 opcode;
+	__u8 flags;
+	__u16 rsvd1;
+	__u32 nsid;
+	__u32 cdw2;
+	__u32 cdw3;
+	__u64 metadata;
+	__u64 addr;
+	__u32 metadata_len;
+	union {
+		__u32 data_len;
+		__u32 vec_cnt;
+	};
+	__u32 cdw10;
+	__u32 cdw11;
+	__u32 cdw12;
+	__u32 cdw13;
+	__u32 cdw14;
+	__u32 cdw15;
+	__u32 timeout_ms;
+	__u32 rsvd2;
+	__u64 result;
+};
+
+enum nvme_pr_type {
+	NVME_PR_WRITE_EXCLUSIVE = 1,
+	NVME_PR_EXCLUSIVE_ACCESS = 2,
+	NVME_PR_WRITE_EXCLUSIVE_REG_ONLY = 3,
+	NVME_PR_EXCLUSIVE_ACCESS_REG_ONLY = 4,
+	NVME_PR_WRITE_EXCLUSIVE_ALL_REGS = 5,
+	NVME_PR_EXCLUSIVE_ACCESS_ALL_REGS = 6,
+};
+
+enum nvme_eds {
+	NVME_EXTENDED_DATA_STRUCT = 1,
+};
+
+struct nvme_registered_ctrl {
+	__le16 cntlid;
+	__u8 rcsts;
+	__u8 rsvd3[5];
+	__le64 hostid;
+	__le64 rkey;
+};
+
+struct nvme_reservation_status {
+	__le32 gen;
+	__u8 rtype;
+	__u8 regctl[2];
+	__u8 resv5[2];
+	__u8 ptpls;
+	__u8 resv10[14];
+	struct nvme_registered_ctrl regctl_ds[0];
+};
+
+struct nvme_registered_ctrl_ext {
+	__le16 cntlid;
+	__u8 rcsts;
+	__u8 rsvd3[5];
+	__le64 rkey;
+	__u8 hostid[16];
+	__u8 rsvd32[32];
+};
+
+struct nvme_reservation_status_ext {
+	__le32 gen;
+	__u8 rtype;
+	__u8 regctl[2];
+	__u8 resv5[2];
+	__u8 ptpls;
+	__u8 resv10[14];
+	__u8 rsvd24[40];
+	struct nvme_registered_ctrl_ext regctl_eds[0];
+};
+
+struct nvme_ana_group_desc {
+	__le32 grpid;
+	__le32 nnsids;
+	__le64 chgcnt;
+	__u8 state;
+	__u8 rsvd17[15];
+	__le32 nsids[0];
+};
+
+enum {
+	NVME_ZRA_ZONE_REPORT = 0,
+	NVME_ZRASF_ZONE_REPORT_ALL = 0,
+	NVME_ZRASF_ZONE_STATE_EMPTY = 1,
+	NVME_ZRASF_ZONE_STATE_IMP_OPEN = 2,
+	NVME_ZRASF_ZONE_STATE_EXP_OPEN = 3,
+	NVME_ZRASF_ZONE_STATE_CLOSED = 4,
+	NVME_ZRASF_ZONE_STATE_READONLY = 5,
+	NVME_ZRASF_ZONE_STATE_FULL = 6,
+	NVME_ZRASF_ZONE_STATE_OFFLINE = 7,
+	NVME_REPORT_ZONE_PARTIAL = 1,
+};
+
+enum {
+	NVME_ZONE_TYPE_SEQWRITE_REQ = 2,
+};
+
+struct nvme_id_ctrl_zns {
+	__u8 zasl;
+	__u8 rsvd1[4095];
+};
+
+struct nvme_zone_descriptor {
+	__u8 zt;
+	__u8 zs;
+	__u8 za;
+	__u8 rsvd3[5];
+	__le64 zcap;
+	__le64 zslba;
+	__le64 wp;
+	__u8 rsvd32[32];
+};
+
+struct nvme_zns_lbafe {
+	__le64 zsze;
+	__u8 zdes;
+	__u8 rsvd9[7];
+};
+
+struct nvme_id_ns_zns {
+	__le16 zoc;
+	__le16 ozcs;
+	__le32 mar;
+	__le32 mor;
+	__le32 rrl;
+	__le32 frl;
+	__u8 rsvd20[2796];
+	struct nvme_zns_lbafe lbafe[64];
+	__u8 vs[256];
+};
+
+struct nvme_zone_report {
+	__le64 nr_zones;
+	__u8 resv8[56];
+	struct nvme_zone_descriptor entries[0];
+};
+
+enum {
+	NVME_HOST_MEM_ENABLE = 1,
+	NVME_HOST_MEM_RETURN = 2,
+};
+
+enum {
+	NVME_CMBMSC_CRE = 1,
+	NVME_CMBMSC_CMSE = 2,
+};
+
+enum {
+	NVME_CMBSZ_SQS = 1,
+	NVME_CMBSZ_CQS = 2,
+	NVME_CMBSZ_LISTS = 4,
+	NVME_CMBSZ_RDS = 8,
+	NVME_CMBSZ_WDS = 16,
+	NVME_CMBSZ_SZ_SHIFT = 12,
+	NVME_CMBSZ_SZ_MASK = 1048575,
+	NVME_CMBSZ_SZU_SHIFT = 8,
+	NVME_CMBSZ_SZU_MASK = 15,
+};
+
+enum {
+	NVME_SGL_FMT_DATA_DESC = 0,
+	NVME_SGL_FMT_SEG_DESC = 2,
+	NVME_SGL_FMT_LAST_SEG_DESC = 3,
+	NVME_KEY_SGL_FMT_DATA_DESC = 4,
+	NVME_TRANSPORT_SGL_DATA_DESC = 5,
+};
+
+struct nvme_queue;
+
+struct nvme_host_mem_buf_desc;
+
+struct nvme_dev {
+	struct nvme_queue *queues;
+	struct blk_mq_tag_set tagset;
+	struct blk_mq_tag_set admin_tagset;
+	u32 *dbs;
+	struct device *dev;
+	struct dma_pool *prp_page_pool;
+	struct dma_pool *prp_small_pool;
+	unsigned int online_queues;
+	unsigned int max_qid;
+	unsigned int io_queues[3];
+	unsigned int num_vecs;
+	u32 q_depth;
+	int io_sqes;
+	u32 db_stride;
+	void *bar;
+	unsigned long bar_mapped_size;
+	struct mutex shutdown_lock;
+	bool subsystem;
+	u64 cmb_size;
+	bool cmb_use_sqes;
+	u32 cmbsz;
+	u32 cmbloc;
+	struct nvme_ctrl ctrl;
+	u32 last_ps;
+	bool hmb;
+	mempool_t *iod_mempool;
+	__le32 *dbbuf_dbs;
+	dma_addr_t dbbuf_dbs_dma_addr;
+	__le32 *dbbuf_eis;
+	dma_addr_t dbbuf_eis_dma_addr;
+	u64 host_mem_size;
+	u32 nr_host_mem_descs;
+	dma_addr_t host_mem_descs_dma;
+	struct nvme_host_mem_buf_desc *host_mem_descs;
+	void **host_mem_desc_bufs;
+	unsigned int nr_allocated_queues;
+	unsigned int nr_write_queues;
+	unsigned int nr_poll_queues;
+};
+
+struct nvme_completion;
+
+struct nvme_queue {
+	struct nvme_dev *dev;
+	spinlock_t sq_lock;
+	void *sq_cmds;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	spinlock_t cq_poll_lock;
+	struct nvme_completion *cqes;
+	dma_addr_t sq_dma_addr;
+	dma_addr_t cq_dma_addr;
+	u32 *q_db;
+	u32 q_depth;
+	u16 cq_vector;
+	u16 sq_tail;
+	u16 last_sq_tail;
+	u16 cq_head;
+	u16 qid;
+	u8 cq_phase;
+	u8 sqes;
+	unsigned long flags;
+	__le32 *dbbuf_sq_db;
+	__le32 *dbbuf_cq_db;
+	__le32 *dbbuf_sq_ei;
+	__le32 *dbbuf_cq_ei;
+	struct completion delete_done;
+};
+
+struct nvme_completion {
+	union nvme_result result;
+	__le16 sq_head;
+	__le16 sq_id;
+	__u16 command_id;
+	__le16 status;
+};
+
+struct nvme_host_mem_buf_desc {
+	__le64 addr;
+	__le32 size;
+	__u32 rsvd;
+};
+
+union nvme_descriptor {
+	struct nvme_sgl_desc *sg_list;
+	__le64 *prp_list;
+};
+
+struct nvme_iod {
+	struct nvme_request req;
+	struct nvme_command cmd;
+	bool aborted;
+	s8 nr_allocations;
+	unsigned int dma_len;
+	dma_addr_t first_dma;
+	dma_addr_t meta_dma;
+	struct sg_table sgt;
+	union nvme_descriptor list[5];
+};
+
+typedef void (*btf_trace_spi_controller_idle)(void *, struct spi_controller *);
+
+struct ptp_system_timestamp {
+	struct timespec64 pre_ts;
+	struct timespec64 post_ts;
+};
+
+struct spi_mem {
+	struct spi_device *spi;
+	void *drvpriv;
+	const char *name;
+};
+
+enum spi_mem_data_dir {
+	SPI_MEM_NO_DATA = 0,
+	SPI_MEM_DATA_IN = 1,
+	SPI_MEM_DATA_OUT = 2,
+};
+
+struct spi_mem_op {
+	struct {
+		u8 nbytes;
+		u8 buswidth;
+		u8 dtr: 1;
+		u8 __pad: 7;
+		u16 opcode;
+	} cmd;
+	struct {
+		u8 nbytes;
+		u8 buswidth;
+		u8 dtr: 1;
+		u8 __pad: 7;
+		u64 val;
+	} addr;
+	struct {
+		u8 nbytes;
+		u8 buswidth;
+		u8 dtr: 1;
+		u8 __pad: 7;
+	} dummy;
+	struct {
+		u8 buswidth;
+		u8 dtr: 1;
+		u8 ecc: 1;
+		u8 __pad: 6;
+		enum spi_mem_data_dir dir;
+		unsigned int nbytes;
+		union {
+			void *in;
+			const void *out;
+		} buf;
+	} data;
+};
+
+struct spi_mem_dirmap_info {
+	struct spi_mem_op op_tmpl;
+	u64 offset;
+	u64 length;
+};
+
+struct spi_mem_dirmap_desc {
+	struct spi_mem *mem;
+	struct spi_mem_dirmap_info info;
+	unsigned int nodirmap;
+	void *priv;
+};
+
+typedef void (*btf_trace_spi_controller_busy)(void *, struct spi_controller *);
+
+typedef void (*btf_trace_spi_setup)(void *, struct spi_device *, int);
+
+typedef void (*btf_trace_spi_set_cs)(void *, struct spi_device *, bool);
+
+typedef void (*btf_trace_spi_message_submit)(void *, struct spi_message *);
+
+typedef void (*btf_trace_spi_message_start)(void *, struct spi_message *);
+
+typedef void (*btf_trace_spi_message_done)(void *, struct spi_message *);
+
+typedef void (*btf_trace_spi_transfer_start)(void *, struct spi_message *, struct spi_transfer *);
+
+typedef void (*btf_trace_spi_transfer_stop)(void *, struct spi_message *, struct spi_transfer *);
+
+struct spi_board_info {
+	char modalias[32];
+	const void *platform_data;
+	const struct software_node *swnode;
+	void *controller_data;
+	int irq;
+	u32 max_speed_hz;
+	u16 bus_num;
+	u16 chip_select;
+	u32 mode;
+	u64 android_kabi_reserved1;
+};
+
+struct boardinfo {
+	struct list_head list;
+	struct spi_board_info board_info;
+};
+
+struct trace_event_raw_spi_controller {
+	struct trace_entry ent;
+	int bus_num;
+	char __data[0];
+};
+
+struct trace_event_raw_spi_setup {
+	struct trace_entry ent;
+	int bus_num;
+	int chip_select;
+	unsigned long mode;
+	unsigned int bits_per_word;
+	unsigned int max_speed_hz;
+	int status;
+	char __data[0];
+};
+
+struct trace_event_raw_spi_set_cs {
+	struct trace_entry ent;
+	int bus_num;
+	int chip_select;
+	unsigned long mode;
+	bool enable;
+	char __data[0];
+};
+
+struct trace_event_raw_spi_message {
+	struct trace_entry ent;
+	int bus_num;
+	int chip_select;
+	struct spi_message *msg;
+	char __data[0];
+};
+
+struct trace_event_raw_spi_message_done {
+	struct trace_entry ent;
+	int bus_num;
+	int chip_select;
+	struct spi_message *msg;
+	unsigned int frame;
+	unsigned int actual;
+	char __data[0];
+};
+
+struct trace_event_raw_spi_transfer {
+	struct trace_entry ent;
+	int bus_num;
+	int chip_select;
+	struct spi_transfer *xfer;
+	int len;
+	u32 __data_loc_rx_buf;
+	u32 __data_loc_tx_buf;
+	char __data[0];
+};
+
+struct spi_device_id;
+
+struct spi_driver {
+	const struct spi_device_id *id_table;
+	int (*probe)(struct spi_device *);
+	void (*remove)(struct spi_device *);
+	void (*shutdown)(struct spi_device *);
+	struct device_driver driver;
+	u64 android_kabi_reserved1;
+};
+
+struct spi_device_id {
+	char name[32];
+	kernel_ulong_t driver_data;
+};
+
+typedef void (*spi_res_release_t)(struct spi_controller *, struct spi_message *, void *);
+
+struct spi_res {
+	struct list_head entry;
+	spi_res_release_t release;
+	unsigned long long data[0];
+};
+
+struct trace_event_data_offsets_spi_transfer {
+	u32 rx_buf;
+	u32 tx_buf;
+};
+
+struct spi_replaced_transfers;
+
+typedef void (*spi_replaced_release_t)(struct spi_controller *, struct spi_message *, struct spi_replaced_transfers *);
+
+struct spi_replaced_transfers {
+	spi_replaced_release_t release;
+	void *extradata;
+	struct list_head replaced_transfers;
+	struct list_head *replaced_after;
+	size_t inserted;
+	struct spi_transfer inserted_transfers[0];
+};
+
+struct trace_event_data_offsets_spi_controller {};
+
+struct trace_event_data_offsets_spi_setup {};
+
+struct trace_event_data_offsets_spi_set_cs {};
+
+struct trace_event_data_offsets_spi_message {};
+
+struct trace_event_data_offsets_spi_message_done {};
+
+struct acpi_spi_lookup {
+	struct spi_controller *ctlr;
+	u32 max_speed_hz;
+	u32 mode;
+	int irq;
+	u8 bits_per_word;
+	u8 chip_select;
+	int n;
+	int index;
+};
+
+struct spi_mem_driver {
+	struct spi_driver spidrv;
+	int (*probe)(struct spi_mem *);
+	int (*remove)(struct spi_mem *);
+	void (*shutdown)(struct spi_mem *);
+};
+
+typedef void (*btf_trace_spmi_write_begin)(void *, u8, u8, u16, u8, const u8 *);
+
+typedef void (*btf_trace_spmi_write_end)(void *, u8, u8, u16, int);
+
+typedef void (*btf_trace_spmi_read_begin)(void *, u8, u8, u16);
+
+typedef void (*btf_trace_spmi_read_end)(void *, u8, u8, u16, int, u8, const u8 *);
+
+typedef void (*btf_trace_spmi_cmd)(void *, u8, u8, int);
+
+struct trace_event_raw_spmi_write_begin {
+	struct trace_entry ent;
+	u8 opcode;
+	u8 sid;
+	u16 addr;
+	u8 len;
+	u32 __data_loc_buf;
+	char __data[0];
+};
+
+struct trace_event_raw_spmi_write_end {
+	struct trace_entry ent;
+	u8 opcode;
+	u8 sid;
+	u16 addr;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_spmi_read_begin {
+	struct trace_entry ent;
+	u8 opcode;
+	u8 sid;
+	u16 addr;
+	char __data[0];
+};
+
+struct trace_event_raw_spmi_read_end {
+	struct trace_entry ent;
+	u8 opcode;
+	u8 sid;
+	u16 addr;
+	int ret;
+	u8 len;
+	u32 __data_loc_buf;
+	char __data[0];
+};
+
+struct trace_event_raw_spmi_cmd {
+	struct trace_entry ent;
+	u8 opcode;
+	u8 sid;
+	int ret;
+	char __data[0];
+};
+
+struct spmi_driver {
+	struct device_driver driver;
+	int (*probe)(struct spmi_device *);
+	void (*remove)(struct spmi_device *);
+	void (*shutdown)(struct spmi_device *);
+	u64 android_kabi_reserved1;
+};
+
+struct trace_event_data_offsets_spmi_write_begin {
+	u32 buf;
+};
+
+struct trace_event_data_offsets_spmi_read_end {
+	u32 buf;
+};
+
+struct trace_event_data_offsets_spmi_write_end {};
+
+struct trace_event_data_offsets_spmi_read_begin {};
+
+struct trace_event_data_offsets_spmi_cmd {};
+
+enum {
+	NETIF_F_SG_BIT = 0,
+	NETIF_F_IP_CSUM_BIT = 1,
+	__UNUSED_NETIF_F_1 = 2,
+	NETIF_F_HW_CSUM_BIT = 3,
+	NETIF_F_IPV6_CSUM_BIT = 4,
+	NETIF_F_HIGHDMA_BIT = 5,
+	NETIF_F_FRAGLIST_BIT = 6,
+	NETIF_F_HW_VLAN_CTAG_TX_BIT = 7,
+	NETIF_F_HW_VLAN_CTAG_RX_BIT = 8,
+	NETIF_F_HW_VLAN_CTAG_FILTER_BIT = 9,
+	NETIF_F_VLAN_CHALLENGED_BIT = 10,
+	NETIF_F_GSO_BIT = 11,
+	NETIF_F_LLTX_BIT = 12,
+	NETIF_F_NETNS_LOCAL_BIT = 13,
+	NETIF_F_GRO_BIT = 14,
+	NETIF_F_LRO_BIT = 15,
+	NETIF_F_GSO_SHIFT = 16,
+	NETIF_F_TSO_BIT = 16,
+	NETIF_F_GSO_ROBUST_BIT = 17,
+	NETIF_F_TSO_ECN_BIT = 18,
+	NETIF_F_TSO_MANGLEID_BIT = 19,
+	NETIF_F_TSO6_BIT = 20,
+	NETIF_F_FSO_BIT = 21,
+	NETIF_F_GSO_GRE_BIT = 22,
+	NETIF_F_GSO_GRE_CSUM_BIT = 23,
+	NETIF_F_GSO_IPXIP4_BIT = 24,
+	NETIF_F_GSO_IPXIP6_BIT = 25,
+	NETIF_F_GSO_UDP_TUNNEL_BIT = 26,
+	NETIF_F_GSO_UDP_TUNNEL_CSUM_BIT = 27,
+	NETIF_F_GSO_PARTIAL_BIT = 28,
+	NETIF_F_GSO_TUNNEL_REMCSUM_BIT = 29,
+	NETIF_F_GSO_SCTP_BIT = 30,
+	NETIF_F_GSO_ESP_BIT = 31,
+	NETIF_F_GSO_UDP_BIT = 32,
+	NETIF_F_GSO_UDP_L4_BIT = 33,
+	NETIF_F_GSO_FRAGLIST_BIT = 34,
+	NETIF_F_GSO_LAST = 34,
+	NETIF_F_FCOE_CRC_BIT = 35,
+	NETIF_F_SCTP_CRC_BIT = 36,
+	NETIF_F_FCOE_MTU_BIT = 37,
+	NETIF_F_NTUPLE_BIT = 38,
+	NETIF_F_RXHASH_BIT = 39,
+	NETIF_F_RXCSUM_BIT = 40,
+	NETIF_F_NOCACHE_COPY_BIT = 41,
+	NETIF_F_LOOPBACK_BIT = 42,
+	NETIF_F_RXFCS_BIT = 43,
+	NETIF_F_RXALL_BIT = 44,
+	NETIF_F_HW_VLAN_STAG_TX_BIT = 45,
+	NETIF_F_HW_VLAN_STAG_RX_BIT = 46,
+	NETIF_F_HW_VLAN_STAG_FILTER_BIT = 47,
+	NETIF_F_HW_L2FW_DOFFLOAD_BIT = 48,
+	NETIF_F_HW_TC_BIT = 49,
+	NETIF_F_HW_ESP_BIT = 50,
+	NETIF_F_HW_ESP_TX_CSUM_BIT = 51,
+	NETIF_F_RX_UDP_TUNNEL_PORT_BIT = 52,
+	NETIF_F_HW_TLS_TX_BIT = 53,
+	NETIF_F_HW_TLS_RX_BIT = 54,
+	NETIF_F_GRO_HW_BIT = 55,
+	NETIF_F_HW_TLS_RECORD_BIT = 56,
+	NETIF_F_GRO_FRAGLIST_BIT = 57,
+	NETIF_F_HW_MACSEC_BIT = 58,
+	NETIF_F_GRO_UDP_FWD_BIT = 59,
+	NETIF_F_HW_HSR_TAG_INS_BIT = 60,
+	NETIF_F_HW_HSR_TAG_RM_BIT = 61,
+	NETIF_F_HW_HSR_FWD_BIT = 62,
+	NETIF_F_HW_HSR_DUP_BIT = 63,
+	NETDEV_FEATURE_COUNT = 64,
+};
+
+enum {
+	SKBTX_HW_TSTAMP = 1,
+	SKBTX_SW_TSTAMP = 2,
+	SKBTX_IN_PROGRESS = 4,
+	SKBTX_HW_TSTAMP_USE_CYCLES = 8,
+	SKBTX_WIFI_STATUS = 16,
+	SKBTX_HW_TSTAMP_NETDEV = 32,
+	SKBTX_SCHED_TSTAMP = 64,
+};
+
+enum {
+	IFLA_UNSPEC = 0,
+	IFLA_ADDRESS = 1,
+	IFLA_BROADCAST = 2,
+	IFLA_IFNAME = 3,
+	IFLA_MTU = 4,
+	IFLA_LINK = 5,
+	IFLA_QDISC = 6,
+	IFLA_STATS = 7,
+	IFLA_COST = 8,
+	IFLA_PRIORITY = 9,
+	IFLA_MASTER = 10,
+	IFLA_WIRELESS = 11,
+	IFLA_PROTINFO = 12,
+	IFLA_TXQLEN = 13,
+	IFLA_MAP = 14,
+	IFLA_WEIGHT = 15,
+	IFLA_OPERSTATE = 16,
+	IFLA_LINKMODE = 17,
+	IFLA_LINKINFO = 18,
+	IFLA_NET_NS_PID = 19,
+	IFLA_IFALIAS = 20,
+	IFLA_NUM_VF = 21,
+	IFLA_VFINFO_LIST = 22,
+	IFLA_STATS64 = 23,
+	IFLA_VF_PORTS = 24,
+	IFLA_PORT_SELF = 25,
+	IFLA_AF_SPEC = 26,
+	IFLA_GROUP = 27,
+	IFLA_NET_NS_FD = 28,
+	IFLA_EXT_MASK = 29,
+	IFLA_PROMISCUITY = 30,
+	IFLA_NUM_TX_QUEUES = 31,
+	IFLA_NUM_RX_QUEUES = 32,
+	IFLA_CARRIER = 33,
+	IFLA_PHYS_PORT_ID = 34,
+	IFLA_CARRIER_CHANGES = 35,
+	IFLA_PHYS_SWITCH_ID = 36,
+	IFLA_LINK_NETNSID = 37,
+	IFLA_PHYS_PORT_NAME = 38,
+	IFLA_PROTO_DOWN = 39,
+	IFLA_GSO_MAX_SEGS = 40,
+	IFLA_GSO_MAX_SIZE = 41,
+	IFLA_PAD = 42,
+	IFLA_XDP = 43,
+	IFLA_EVENT = 44,
+	IFLA_NEW_NETNSID = 45,
+	IFLA_IF_NETNSID = 46,
+	IFLA_TARGET_NETNSID = 46,
+	IFLA_CARRIER_UP_COUNT = 47,
+	IFLA_CARRIER_DOWN_COUNT = 48,
+	IFLA_NEW_IFINDEX = 49,
+	IFLA_MIN_MTU = 50,
+	IFLA_MAX_MTU = 51,
+	IFLA_PROP_LIST = 52,
+	IFLA_ALT_IFNAME = 53,
+	IFLA_PERM_ADDRESS = 54,
+	IFLA_PROTO_DOWN_REASON = 55,
+	IFLA_PARENT_DEV_NAME = 56,
+	IFLA_PARENT_DEV_BUS_NAME = 57,
+	IFLA_GRO_MAX_SIZE = 58,
+	IFLA_TSO_MAX_SIZE = 59,
+	IFLA_TSO_MAX_SEGS = 60,
+	IFLA_ALLMULTI = 61,
+	IFLA_DEVLINK_PORT = 62,
+	IFLA_GSO_IPV4_MAX_SIZE = 63,
+	IFLA_GRO_IPV4_MAX_SIZE = 64,
+	__IFLA_MAX = 65,
+};
+
+struct ip_tunnel_parm {
+	char name[16];
+	int link;
+	__be16 i_flags;
+	__be16 o_flags;
+	__be32 i_key;
+	__be32 o_key;
+	struct iphdr iph;
+};
+
+struct nh_info;
+
+struct nh_group;
+
+struct nexthop {
+	struct rb_node rb_node;
+	struct list_head fi_list;
+	struct list_head f6i_list;
+	struct list_head fdb_list;
+	struct list_head grp_list;
+	struct net *net;
+	u32 id;
+	u8 protocol;
+	u8 nh_flags;
+	bool is_group;
+	refcount_t refcnt;
+	struct callback_head rcu;
+	union {
+		struct nh_info __attribute__((btf_type_tag("rcu"))) *nh_info;
+		struct nh_group __attribute__((btf_type_tag("rcu"))) *nh_grp;
+	};
+};
+
+struct fib_info;
+
+struct fib_nh {
+	struct fib_nh_common nh_common;
+	struct hlist_node nh_hash;
+	struct fib_info *nh_parent;
+	__be32 nh_saddr;
+	int nh_saddr_genid;
+};
+
+struct nh_info {
+	struct hlist_node dev_hash;
+	struct nexthop *nh_parent;
+	u8 family;
+	bool reject_nh;
+	bool fdb_nh;
+	union {
+		struct fib_nh_common fib_nhc;
+		struct fib_nh fib_nh;
+		struct fib6_nh fib6_nh;
+	};
+};
+
+struct fib_info {
+	struct hlist_node fib_hash;
+	struct hlist_node fib_lhash;
+	struct list_head nh_list;
+	struct net *fib_net;
+	refcount_t fib_treeref;
+	refcount_t fib_clntref;
+	unsigned int fib_flags;
+	unsigned char fib_dead;
+	unsigned char fib_protocol;
+	unsigned char fib_scope;
+	unsigned char fib_type;
+	__be32 fib_prefsrc;
+	u32 fib_tb_id;
+	u32 fib_priority;
+	struct dst_metrics *fib_metrics;
+	int fib_nhs;
+	bool fib_nh_is_v6;
+	bool nh_updated;
+	bool pfsrc_removed;
+	struct nexthop *nh;
+	struct callback_head rcu;
+	struct fib_nh fib_nh[0];
+};
+
+struct nh_grp_entry {
+	struct nexthop *nh;
+	u8 weight;
+	union {
+		struct {
+			atomic_t upper_bound;
+		} hthr;
+		struct {
+			struct list_head uw_nh_entry;
+			u16 count_buckets;
+			u16 wants_buckets;
+		} res;
+	};
+	struct list_head nh_list;
+	struct nexthop *nh_parent;
+};
+
+struct nh_res_table;
+
+struct nh_group {
+	struct nh_group *spare;
+	u16 num_nh;
+	bool is_multipath;
+	bool hash_threshold;
+	bool resilient;
+	bool fdb_nh;
+	bool has_v4;
+	struct nh_res_table __attribute__((btf_type_tag("rcu"))) *res_table;
+	struct nh_grp_entry nh_entries[0];
+};
+
+struct nh_res_bucket {
+	struct nh_grp_entry __attribute__((btf_type_tag("rcu"))) *nh_entry;
+	atomic_long_t used_time;
+	unsigned long migrated_time;
+	bool occupied;
+	u8 nh_flags;
+};
+
+struct nh_res_table {
+	struct net *net;
+	u32 nhg_id;
+	struct delayed_work upkeep_dw;
+	struct list_head uw_nh_entries;
+	unsigned long unbalanced_since;
+	u32 idle_timer;
+	u32 unbalanced_timer;
+	u16 num_nh_buckets;
+	struct nh_res_bucket nh_buckets[0];
+};
+
+enum noise_lengths {
+	NOISE_PUBLIC_KEY_LEN = 32,
+	NOISE_SYMMETRIC_KEY_LEN = 32,
+	NOISE_TIMESTAMP_LEN = 12,
+	NOISE_AUTHTAG_LEN = 16,
+	NOISE_HASH_LEN = 32,
+};
+
+enum index_hashtable_type {
+	INDEX_HASHTABLE_HANDSHAKE = 1,
+	INDEX_HASHTABLE_KEYPAIR = 2,
+};
+
+enum noise_handshake_state {
+	HANDSHAKE_ZEROED = 0,
+	HANDSHAKE_CREATED_INITIATION = 1,
+	HANDSHAKE_CONSUMED_INITIATION = 2,
+	HANDSHAKE_CREATED_RESPONSE = 3,
+	HANDSHAKE_CONSUMED_RESPONSE = 4,
+};
+
+enum message_type {
+	MESSAGE_INVALID = 0,
+	MESSAGE_HANDSHAKE_INITIATION = 1,
+	MESSAGE_HANDSHAKE_RESPONSE = 2,
+	MESSAGE_HANDSHAKE_COOKIE = 3,
+	MESSAGE_DATA = 4,
+};
+
+enum limits {
+	REKEY_AFTER_MESSAGES = 1152921504606846976ULL,
+	REJECT_AFTER_MESSAGES = 18446744073709543486ULL,
+	REKEY_TIMEOUT = 5ULL,
+	REKEY_TIMEOUT_JITTER_MAX_JIFFIES = 83ULL,
+	REKEY_AFTER_TIME = 120ULL,
+	REJECT_AFTER_TIME = 180ULL,
+	INITIATIONS_PER_SECOND = 50ULL,
+	MAX_PEERS_PER_DEVICE = 1048576ULL,
+	KEEPALIVE_TIMEOUT = 10ULL,
+	MAX_TIMER_HANDSHAKES = 18ULL,
+	MAX_QUEUED_INCOMING_HANDSHAKES = 4096ULL,
+	MAX_STAGED_PACKETS = 128ULL,
+	MAX_QUEUED_PACKETS = 1024ULL,
+};
+
+struct wg_peer;
+
+struct index_hashtable_entry {
+	struct wg_peer *peer;
+	struct hlist_node index_hash;
+	enum index_hashtable_type type;
+	__le32 index;
+};
+
+struct noise_symmetric_key {
+	u8 key[32];
+	u64 birthdate;
+	bool is_valid;
+};
+
+struct noise_replay_counter {
+	u64 counter;
+	spinlock_t lock;
+	unsigned long backtrack[128];
+};
+
+struct noise_keypair {
+	struct index_hashtable_entry entry;
+	struct noise_symmetric_key sending;
+	atomic64_t sending_counter;
+	struct noise_symmetric_key receiving;
+	struct noise_replay_counter receiving_counter;
+	__le32 remote_index;
+	bool i_am_the_initiator;
+	struct kref refcount;
+	struct callback_head rcu;
+	u64 internal_id;
+};
+
+struct prev_queue {
+	struct sk_buff *head;
+	struct sk_buff *tail;
+	struct sk_buff *peeked;
+	struct {
+		struct sk_buff *next;
+		struct sk_buff *prev;
+	} empty;
+	atomic_t count;
+};
+
+struct noise_keypairs {
+	struct noise_keypair __attribute__((btf_type_tag("rcu"))) *current_keypair;
+	struct noise_keypair __attribute__((btf_type_tag("rcu"))) *previous_keypair;
+	struct noise_keypair __attribute__((btf_type_tag("rcu"))) *next_keypair;
+	spinlock_t keypair_update_lock;
+};
+
+struct endpoint {
+	union {
+		struct sockaddr addr;
+		struct sockaddr_in addr4;
+		struct sockaddr_in6 addr6;
+	};
+	union {
+		struct {
+			struct in_addr src4;
+			int src_if4;
+		};
+		struct in6_addr src6;
+	};
+};
+
+struct dst_cache_pcpu;
+
+struct dst_cache {
+	struct dst_cache_pcpu __attribute__((btf_type_tag("percpu"))) *cache;
+	unsigned long reset_ts;
+};
+
+struct noise_static_identity;
+
+struct noise_handshake {
+	struct index_hashtable_entry entry;
+	enum noise_handshake_state state;
+	u64 last_initiation_consumption;
+	struct noise_static_identity *static_identity;
+	u8 ephemeral_private[32];
+	u8 remote_static[32];
+	u8 remote_ephemeral[32];
+	u8 precomputed_static_static[32];
+	u8 preshared_key[32];
+	u8 hash[32];
+	u8 chaining_key[32];
+	u8 latest_timestamp[12];
+	__le32 remote_index;
+	struct rw_semaphore lock;
+};
+
+struct cookie {
+	u64 birthdate;
+	bool is_valid;
+	u8 cookie[16];
+	bool have_sent_mac1;
+	u8 last_mac1_sent[16];
+	u8 cookie_decryption_key[32];
+	u8 message_mac1_key[32];
+	struct rw_semaphore lock;
+};
+
+struct gro_list {
+	struct list_head list;
+	int count;
+};
+
+struct napi_struct {
+	struct list_head poll_list;
+	unsigned long state;
+	int weight;
+	int defer_hard_irqs_count;
+	unsigned long gro_bitmask;
+	int (*poll)(struct napi_struct *, int);
+	int list_owner;
+	struct net_device *dev;
+	struct gro_list gro_hash[8];
+	struct sk_buff *skb;
+	struct list_head rx_list;
+	int rx_count;
+	unsigned int napi_id;
+	struct hrtimer timer;
+	struct task_struct *thread;
+	struct list_head dev_list;
+	struct hlist_node napi_hash_node;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct wg_device;
+
+struct wg_peer {
+	struct wg_device *device;
+	struct prev_queue tx_queue;
+	struct prev_queue rx_queue;
+	struct sk_buff_head staged_packet_queue;
+	int serial_work_cpu;
+	bool is_dead;
+	struct noise_keypairs keypairs;
+	struct endpoint endpoint;
+	struct dst_cache endpoint_cache;
+	rwlock_t endpoint_lock;
+	struct noise_handshake handshake;
+	atomic64_t last_sent_handshake;
+	struct work_struct transmit_handshake_work;
+	struct work_struct clear_peer_work;
+	struct work_struct transmit_packet_work;
+	struct cookie latest_cookie;
+	struct hlist_node pubkey_hash;
+	u64 rx_bytes;
+	u64 tx_bytes;
+	struct timer_list timer_retransmit_handshake;
+	struct timer_list timer_send_keepalive;
+	struct timer_list timer_new_handshake;
+	struct timer_list timer_zero_key_material;
+	struct timer_list timer_persistent_keepalive;
+	unsigned int timer_handshake_attempts;
+	u16 persistent_keepalive_interval;
+	bool timer_need_another_keepalive;
+	bool sent_lastminute_handshake;
+	struct timespec64 walltime_last_handshake;
+	struct kref refcount;
+	struct callback_head rcu;
+	struct list_head peer_list;
+	struct list_head allowedips_list;
+	struct napi_struct napi;
+	u64 internal_id;
+};
+
+struct multicore_worker;
+
+struct crypt_queue {
+	struct ptr_ring ring;
+	struct multicore_worker __attribute__((btf_type_tag("percpu"))) *worker;
+	int last_cpu;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct noise_static_identity {
+	u8 static_public[32];
+	u8 static_private[32];
+	struct rw_semaphore lock;
+	bool has_identity;
+};
+
+struct cookie_checker {
+	u8 secret[32];
+	u8 cookie_encryption_key[32];
+	u8 message_mac1_key[32];
+	u64 secret_birthdate;
+	struct rw_semaphore secret_lock;
+	struct wg_device *device;
+};
+
+struct allowedips_node;
+
+struct allowedips {
+	struct allowedips_node __attribute__((btf_type_tag("rcu"))) *root4;
+	struct allowedips_node __attribute__((btf_type_tag("rcu"))) *root6;
+	u64 seq;
+};
+
+struct pubkey_hashtable;
+
+struct index_hashtable;
+
+struct wg_device {
+	struct net_device *dev;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct crypt_queue encrypt_queue;
+	struct crypt_queue decrypt_queue;
+	struct crypt_queue handshake_queue;
+	struct sock __attribute__((btf_type_tag("rcu"))) *sock4;
+	struct sock __attribute__((btf_type_tag("rcu"))) *sock6;
+	struct net __attribute__((btf_type_tag("rcu"))) *creating_net;
+	struct noise_static_identity static_identity;
+	struct workqueue_struct *packet_crypt_wq;
+	struct workqueue_struct *handshake_receive_wq;
+	struct workqueue_struct *handshake_send_wq;
+	struct cookie_checker cookie_checker;
+	struct pubkey_hashtable *peer_hashtable;
+	struct index_hashtable *index_hashtable;
+	struct allowedips peer_allowedips;
+	struct mutex device_update_lock;
+	struct mutex socket_update_lock;
+	struct list_head device_list;
+	struct list_head peer_list;
+	atomic_t handshake_queue_len;
+	unsigned int num_peers;
+	unsigned int device_update_gen;
+	u32 fwmark;
+	u16 incoming_port;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct multicore_worker {
+	void *ptr;
+	struct work_struct work;
+};
+
+struct pubkey_hashtable {
+	struct hlist_head hashtable[2048];
+	siphash_key_t key;
+	struct mutex lock;
+};
+
+struct index_hashtable {
+	struct hlist_head hashtable[8192];
+	spinlock_t lock;
+};
+
+struct allowedips_node {
+	struct wg_peer __attribute__((btf_type_tag("rcu"))) *peer;
+	struct allowedips_node __attribute__((btf_type_tag("rcu"))) *bit[2];
+	u8 cidr;
+	u8 bit_at_a;
+	u8 bit_at_b;
+	u8 bitlen;
+	long: 0;
+	u8 bits[16];
+	unsigned long parent_bit_packed;
+	union {
+		struct list_head peer_list;
+		struct callback_head rcu;
+	};
+};
+
+struct dst_cache_pcpu {
+	unsigned long refresh_ts;
+	struct dst_entry *dst;
+	u32 cookie;
+	union {
+		struct in_addr in_saddr;
+		struct in6_addr in6_saddr;
+	};
+};
+
+struct message_header {
+	__le32 type;
+};
+
+struct message_macs {
+	u8 mac1[16];
+	u8 mac2[16];
+};
+
+struct message_handshake_initiation {
+	struct message_header header;
+	__le32 sender_index;
+	u8 unencrypted_ephemeral[32];
+	u8 encrypted_static[48];
+	u8 encrypted_timestamp[28];
+	struct message_macs macs;
+};
+
+struct message_handshake_response {
+	struct message_header header;
+	__le32 sender_index;
+	__le32 receiver_index;
+	u8 unencrypted_ephemeral[32];
+	u8 encrypted_nothing[16];
+	struct message_macs macs;
+};
+
+struct in_ifaddr {
+	struct hlist_node hash;
+	struct in_ifaddr __attribute__((btf_type_tag("rcu"))) *ifa_next;
+	struct in_device *ifa_dev;
+	struct callback_head callback_head;
+	__be32 ifa_local;
+	__be32 ifa_address;
+	__be32 ifa_mask;
+	__u32 ifa_rt_priority;
+	__be32 ifa_broadcast;
+	unsigned char ifa_scope;
+	unsigned char ifa_prefixlen;
+	unsigned char ifa_proto;
+	__u32 ifa_flags;
+	char ifa_label[16];
+	__u32 ifa_valid_lft;
+	__u32 ifa_preferred_lft;
+	unsigned long ifa_cstamp;
+	unsigned long ifa_tstamp;
+};
+
+struct ip_sf_list;
+
+struct ip_mc_list {
+	struct in_device *interface;
+	__be32 multiaddr;
+	unsigned int sfmode;
+	struct ip_sf_list *sources;
+	struct ip_sf_list *tomb;
+	unsigned long sfcount[2];
+	union {
+		struct ip_mc_list *next;
+		struct ip_mc_list __attribute__((btf_type_tag("rcu"))) *next_rcu;
+	};
+	struct ip_mc_list __attribute__((btf_type_tag("rcu"))) *next_hash;
+	struct timer_list timer;
+	int users;
+	refcount_t refcnt;
+	spinlock_t lock;
+	char tm_running;
+	char reporter;
+	char unsolicit_count;
+	char loaded;
+	unsigned char gsquery;
+	unsigned char crcount;
+	struct callback_head rcu;
+};
+
+enum macsec_offload {
+	MACSEC_OFFLOAD_OFF = 0,
+	MACSEC_OFFLOAD_PHY = 1,
+	MACSEC_OFFLOAD_MAC = 2,
+	__MACSEC_OFFLOAD_END = 3,
+	MACSEC_OFFLOAD_MAX = 2,
+};
+
+struct macsec_secy;
+
+struct macsec_rx_sc;
+
+struct macsec_rx_sa;
+
+struct macsec_tx_sa;
+
+struct macsec_tx_sc_stats;
+
+struct macsec_tx_sa_stats;
+
+struct macsec_rx_sc_stats;
+
+struct macsec_rx_sa_stats;
+
+struct macsec_dev_stats;
+
+struct macsec_context {
+	union {
+		struct net_device *netdev;
+		struct phy_device *phydev;
+	};
+	enum macsec_offload offload;
+	struct macsec_secy *secy;
+	struct macsec_rx_sc *rx_sc;
+	struct {
+		bool update_pn;
+		unsigned char assoc_num;
+		u8 key[128];
+		union {
+			struct macsec_rx_sa *rx_sa;
+			struct macsec_tx_sa *tx_sa;
+		};
+	} sa;
+	union {
+		struct macsec_tx_sc_stats *tx_sc_stats;
+		struct macsec_tx_sa_stats *tx_sa_stats;
+		struct macsec_rx_sc_stats *rx_sc_stats;
+		struct macsec_rx_sa_stats *rx_sa_stats;
+		struct macsec_dev_stats *dev_stats;
+	} stats;
+};
+
+typedef u64 sci_t;
+
+enum macsec_validation_type {
+	MACSEC_VALIDATE_DISABLED = 0,
+	MACSEC_VALIDATE_CHECK = 1,
+	MACSEC_VALIDATE_STRICT = 2,
+	__MACSEC_VALIDATE_END = 3,
+	MACSEC_VALIDATE_MAX = 2,
+};
+
+struct pcpu_tx_sc_stats;
+
+struct metadata_dst;
+
+struct macsec_tx_sc {
+	bool active;
+	u8 encoding_sa;
+	bool encrypt;
+	bool send_sci;
+	bool end_station;
+	bool scb;
+	struct macsec_tx_sa __attribute__((btf_type_tag("rcu"))) *sa[4];
+	struct pcpu_tx_sc_stats __attribute__((btf_type_tag("percpu"))) *stats;
+	struct metadata_dst *md_dst;
+};
+
+struct macsec_secy {
+	struct net_device *netdev;
+	unsigned int n_rx_sc;
+	sci_t sci;
+	u16 key_len;
+	u16 icv_len;
+	enum macsec_validation_type validate_frames;
+	bool xpn;
+	bool operational;
+	bool protect_frames;
+	bool replay_protect;
+	u32 replay_window;
+	struct macsec_tx_sc tx_sc;
+	struct macsec_rx_sc __attribute__((btf_type_tag("rcu"))) *rx_sc;
+};
+
+union salt {
+	struct {
+		u32 ssci;
+		u64 pn;
+	} __attribute__((packed));
+	u8 bytes[12];
+};
+
+typedef union salt salt_t;
+
+struct macsec_key {
+	u8 id[16];
+	struct crypto_aead *tfm;
+	salt_t salt;
+};
+
+typedef u32 ssci_t;
+
+union pn {
+	struct {
+		u32 lower;
+		u32 upper;
+	};
+	u64 full64;
+};
+
+typedef union pn pn_t;
+
+struct macsec_tx_sa {
+	struct macsec_key key;
+	ssci_t ssci;
+	spinlock_t lock;
+	union {
+		pn_t next_pn_halves;
+		u64 next_pn;
+	};
+	refcount_t refcnt;
+	bool active;
+	struct macsec_tx_sa_stats __attribute__((btf_type_tag("percpu"))) *stats;
+	struct callback_head rcu;
+};
+
+struct macsec_tx_sa_stats {
+	__u32 OutPktsProtected;
+	__u32 OutPktsEncrypted;
+};
+
+struct macsec_tx_sc_stats {
+	__u64 OutPktsProtected;
+	__u64 OutPktsEncrypted;
+	__u64 OutOctetsProtected;
+	__u64 OutOctetsEncrypted;
+};
+
+struct pcpu_tx_sc_stats {
+	struct macsec_tx_sc_stats stats;
+	struct u64_stats_sync syncp;
+};
+
+struct ip_tunnel_key {
+	__be64 tun_id;
+	union {
+		struct {
+			__be32 src;
+			__be32 dst;
+		} ipv4;
+		struct {
+			struct in6_addr src;
+			struct in6_addr dst;
+		} ipv6;
+	} u;
+	__be16 tun_flags;
+	u8 tos;
+	u8 ttl;
+	__be32 label;
+	u32 nhid;
+	__be16 tp_src;
+	__be16 tp_dst;
+	__u8 flow_flags;
+};
+
+struct ip_tunnel_encap {
+	u16 type;
+	u16 flags;
+	__be16 sport;
+	__be16 dport;
+};
+
+struct ip_tunnel_info {
+	struct ip_tunnel_key key;
+	struct ip_tunnel_encap encap;
+	struct dst_cache dst_cache;
+	u8 options_len;
+	u8 mode;
+};
+
+struct hw_port_info {
+	struct net_device *lower_dev;
+	u32 port_id;
+};
+
+struct macsec_info {
+	sci_t sci;
+};
+
+struct xfrm_md_info {
+	u32 if_id;
+	int link;
+	struct dst_entry *dst_orig;
+};
+
+enum metadata_type {
+	METADATA_IP_TUNNEL = 0,
+	METADATA_HW_PORT_MUX = 1,
+	METADATA_MACSEC = 2,
+	METADATA_XFRM = 3,
+};
+
+struct metadata_dst {
+	struct dst_entry dst;
+	enum metadata_type type;
+	union {
+		struct ip_tunnel_info tun_info;
+		struct hw_port_info port_info;
+		struct macsec_info macsec_info;
+		struct xfrm_md_info xfrm_info;
+	} u;
+};
+
+struct pcpu_rx_sc_stats;
+
+struct macsec_rx_sc {
+	struct macsec_rx_sc __attribute__((btf_type_tag("rcu"))) *next;
+	sci_t sci;
+	bool active;
+	struct macsec_rx_sa __attribute__((btf_type_tag("rcu"))) *sa[4];
+	struct pcpu_rx_sc_stats __attribute__((btf_type_tag("percpu"))) *stats;
+	refcount_t refcnt;
+	struct callback_head callback_head;
+};
+
+struct macsec_rx_sa {
+	struct macsec_key key;
+	ssci_t ssci;
+	spinlock_t lock;
+	union {
+		pn_t next_pn_halves;
+		u64 next_pn;
+	};
+	refcount_t refcnt;
+	bool active;
+	struct macsec_rx_sa_stats __attribute__((btf_type_tag("percpu"))) *stats;
+	struct macsec_rx_sc *sc;
+	struct callback_head rcu;
+};
+
+struct macsec_rx_sa_stats {
+	__u32 InPktsOK;
+	__u32 InPktsInvalid;
+	__u32 InPktsNotValid;
+	__u32 InPktsNotUsingSA;
+	__u32 InPktsUnusedSA;
+};
+
+struct macsec_rx_sc_stats {
+	__u64 InOctetsValidated;
+	__u64 InOctetsDecrypted;
+	__u64 InPktsUnchecked;
+	__u64 InPktsDelayed;
+	__u64 InPktsOK;
+	__u64 InPktsInvalid;
+	__u64 InPktsLate;
+	__u64 InPktsNotValid;
+	__u64 InPktsNotUsingSA;
+	__u64 InPktsUnusedSA;
+};
+
+struct pcpu_rx_sc_stats {
+	struct macsec_rx_sc_stats stats;
+	struct u64_stats_sync syncp;
+};
+
+struct macsec_dev_stats {
+	__u64 OutPktsUntagged;
+	__u64 InPktsUntagged;
+	__u64 OutPktsTooLong;
+	__u64 InPktsNoTag;
+	__u64 InPktsBadTag;
+	__u64 InPktsUnknownSCI;
+	__u64 InPktsNoSCI;
+	__u64 InPktsOverrun;
+};
+
+enum message_alignments {
+	MESSAGE_PADDING_MULTIPLE = 16,
+	MESSAGE_MINIMUM_LENGTH = 32,
+};
+
+enum {
+	WG_NETDEV_FEATURES = 1126357076009ULL,
+};
+
+enum {
+	IPV4_DEVCONF_FORWARDING = 1,
+	IPV4_DEVCONF_MC_FORWARDING = 2,
+	IPV4_DEVCONF_PROXY_ARP = 3,
+	IPV4_DEVCONF_ACCEPT_REDIRECTS = 4,
+	IPV4_DEVCONF_SECURE_REDIRECTS = 5,
+	IPV4_DEVCONF_SEND_REDIRECTS = 6,
+	IPV4_DEVCONF_SHARED_MEDIA = 7,
+	IPV4_DEVCONF_RP_FILTER = 8,
+	IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE = 9,
+	IPV4_DEVCONF_BOOTP_RELAY = 10,
+	IPV4_DEVCONF_LOG_MARTIANS = 11,
+	IPV4_DEVCONF_TAG = 12,
+	IPV4_DEVCONF_ARPFILTER = 13,
+	IPV4_DEVCONF_MEDIUM_ID = 14,
+	IPV4_DEVCONF_NOXFRM = 15,
+	IPV4_DEVCONF_NOPOLICY = 16,
+	IPV4_DEVCONF_FORCE_IGMP_VERSION = 17,
+	IPV4_DEVCONF_ARP_ANNOUNCE = 18,
+	IPV4_DEVCONF_ARP_IGNORE = 19,
+	IPV4_DEVCONF_PROMOTE_SECONDARIES = 20,
+	IPV4_DEVCONF_ARP_ACCEPT = 21,
+	IPV4_DEVCONF_ARP_NOTIFY = 22,
+	IPV4_DEVCONF_ACCEPT_LOCAL = 23,
+	IPV4_DEVCONF_SRC_VMARK = 24,
+	IPV4_DEVCONF_PROXY_ARP_PVLAN = 25,
+	IPV4_DEVCONF_ROUTE_LOCALNET = 26,
+	IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL = 27,
+	IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL = 28,
+	IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 29,
+	IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 30,
+	IPV4_DEVCONF_DROP_GRATUITOUS_ARP = 31,
+	IPV4_DEVCONF_BC_FORWARDING = 32,
+	IPV4_DEVCONF_ARP_EVICT_NOCARRIER = 33,
+	__IPV4_DEVCONF_MAX = 34,
+};
+
+enum in6_addr_gen_mode {
+	IN6_ADDR_GEN_MODE_EUI64 = 0,
+	IN6_ADDR_GEN_MODE_NONE = 1,
+	IN6_ADDR_GEN_MODE_STABLE_PRIVACY = 2,
+	IN6_ADDR_GEN_MODE_RANDOM = 3,
+};
+
+struct packet_cb {
+	u64 nonce;
+	struct noise_keypair *keypair;
+	atomic_t state;
+	u32 mtu;
+	u8 ds;
+};
+
+enum {
+	NAPI_STATE_SCHED = 0,
+	NAPI_STATE_MISSED = 1,
+	NAPI_STATE_DISABLE = 2,
+	NAPI_STATE_NPSVC = 3,
+	NAPI_STATE_LISTED = 4,
+	NAPI_STATE_NO_BUSY_POLL = 5,
+	NAPI_STATE_IN_BUSY_POLL = 6,
+	NAPI_STATE_PREFER_BUSY_POLL = 7,
+	NAPI_STATE_THREADED = 8,
+	NAPI_STATE_SCHED_THREADED = 9,
+};
+
+enum netdev_state_t {
+	__LINK_STATE_START = 0,
+	__LINK_STATE_PRESENT = 1,
+	__LINK_STATE_NOCARRIER = 2,
+	__LINK_STATE_LINKWATCH_PENDING = 3,
+	__LINK_STATE_DORMANT = 4,
+	__LINK_STATE_TESTING = 5,
+};
+
+struct udp_hslot;
+
+struct udp_table {
+	struct udp_hslot *hash;
+	struct udp_hslot *hash2;
+	unsigned int mask;
+	unsigned int log;
+};
+
+struct udp_hslot {
+	struct hlist_head head;
+	int count;
+	spinlock_t lock;
+};
+
+enum {
+	HANDSHAKE_DSCP = 136,
+};
+
+enum packet_state {
+	PACKET_STATE_UNCRYPTED = 0,
+	PACKET_STATE_CRYPTED = 1,
+	PACKET_STATE_DEAD = 2,
+};
+
+enum {
+	INET_ECN_NOT_ECT = 0,
+	INET_ECN_ECT_1 = 1,
+	INET_ECN_ECT_0 = 2,
+	INET_ECN_CE = 3,
+	INET_ECN_MASK = 3,
+};
+
+struct message_data {
+	struct message_header header;
+	__le32 key_idx;
+	__le64 counter;
+	u8 encrypted_data[0];
+};
+
+struct message_handshake_cookie {
+	struct message_header header;
+	__le32 receiver_index;
+	u8 nonce[24];
+	u8 encrypted_cookie[32];
+};
+
+struct vlan_hdr {
+	__be16 h_vlan_TCI;
+	__be16 h_vlan_encapsulated_proto;
+};
+
+struct flow_dissector_key_control {
+	u16 thoff;
+	u16 addr_type;
+	u32 flags;
+};
+
+struct flow_dissector_key_basic {
+	__be16 n_proto;
+	u8 ip_proto;
+	u8 padding;
+};
+
+struct flow_keys_basic {
+	struct flow_dissector_key_control control;
+	struct flow_dissector_key_basic basic;
+};
+
+struct flow_dissector {
+	unsigned long long used_keys;
+	unsigned short offset[33];
+};
+
+enum cookie_mac_state {
+	INVALID_MAC = 0,
+	VALID_MAC_BUT_NO_COOKIE = 1,
+	VALID_MAC_WITH_COOKIE_BUT_RATELIMITED = 2,
+	VALID_MAC_WITH_COOKIE = 3,
+};
+
+enum counter_values {
+	COUNTER_BITS_TOTAL = 8192,
+	COUNTER_REDUNDANT_BITS = 64,
+	COUNTER_WINDOW_SIZE = 8128,
+};
+
+enum gro_result {
+	GRO_MERGED = 0,
+	GRO_MERGED_FREE = 1,
+	GRO_HELD = 2,
+	GRO_NORMAL = 3,
+	GRO_CONSUMED = 4,
+};
+
+typedef enum gro_result gro_result_t;
+
+struct udp_tunnel_info {
+	unsigned short type;
+	sa_family_t sa_family;
+	__be16 port;
+	u8 hw_priv;
+};
+
+struct udp_tunnel_nic_shared {
+	struct udp_tunnel_nic *udp_tunnel_nic_info;
+	struct list_head devices;
+};
+
+enum rt_scope_t {
+	RT_SCOPE_UNIVERSE = 0,
+	RT_SCOPE_SITE = 200,
+	RT_SCOPE_LINK = 253,
+	RT_SCOPE_HOST = 254,
+	RT_SCOPE_NOWHERE = 255,
+};
+
+enum {
+	RTAX_UNSPEC = 0,
+	RTAX_LOCK = 1,
+	RTAX_MTU = 2,
+	RTAX_WINDOW = 3,
+	RTAX_RTT = 4,
+	RTAX_RTTVAR = 5,
+	RTAX_SSTHRESH = 6,
+	RTAX_CWND = 7,
+	RTAX_ADVMSS = 8,
+	RTAX_REORDERING = 9,
+	RTAX_HOPLIMIT = 10,
+	RTAX_INITCWND = 11,
+	RTAX_FEATURES = 12,
+	RTAX_RTO_MIN = 13,
+	RTAX_INITRWND = 14,
+	RTAX_QUICKACK = 15,
+	RTAX_CC_ALGO = 16,
+	RTAX_FASTOPEN_NO_COOKIE = 17,
+	__RTAX_MAX = 18,
+};
+
+struct udp_port_cfg {
+	u8 family;
+	union {
+		struct in_addr local_ip;
+		struct in6_addr local_ip6;
+	};
+	union {
+		struct in_addr peer_ip;
+		struct in6_addr peer_ip6;
+	};
+	__be16 local_udp_port;
+	__be16 peer_udp_port;
+	int bind_ifindex;
+	unsigned int use_udp_checksums: 1;
+	unsigned int use_udp6_tx_checksums: 1;
+	unsigned int use_udp6_rx_checksums: 1;
+	unsigned int ipv6_v6only: 1;
+};
+
+typedef int (*udp_tunnel_encap_rcv_t)(struct sock *, struct sk_buff *);
+
+typedef int (*udp_tunnel_encap_err_lookup_t)(struct sock *, struct sk_buff *);
+
+typedef void (*udp_tunnel_encap_err_rcv_t)(struct sock *, struct sk_buff *, int, __be16, u32, u8 *);
+
+typedef void (*udp_tunnel_encap_destroy_t)(struct sock *);
+
+typedef struct sk_buff * (*udp_tunnel_gro_receive_t)(struct sock *, struct list_head *, struct sk_buff *);
+
+typedef int (*udp_tunnel_gro_complete_t)(struct sock *, struct sk_buff *, int);
+
+struct udp_tunnel_sock_cfg {
+	void *sk_user_data;
+	__u8 encap_type;
+	udp_tunnel_encap_rcv_t encap_rcv;
+	udp_tunnel_encap_err_lookup_t encap_err_lookup;
+	udp_tunnel_encap_err_rcv_t encap_err_rcv;
+	udp_tunnel_encap_destroy_t encap_destroy;
+	udp_tunnel_gro_receive_t gro_receive;
+	udp_tunnel_gro_complete_t gro_complete;
+};
+
+typedef struct {
+	unsigned long key[2];
+} hsiphash_key_t;
+
+enum {
+	PACKETS_PER_SECOND = 20,
+	PACKETS_BURSTABLE = 5,
+	PACKET_COST = 50000000,
+	TOKEN_MAX = 250000000,
+};
+
+struct ratelimiter_entry {
+	u64 last_time_ns;
+	u64 tokens;
+	u64 ip;
+	void *net;
+	spinlock_t lock;
+	struct hlist_node hash;
+	struct callback_head rcu;
+};
+
+enum cookie_values {
+	COOKIE_SECRET_MAX_AGE = 120,
+	COOKIE_SECRET_LATENCY = 5,
+	COOKIE_NONCE_LEN = 24,
+	COOKIE_LEN = 16,
+};
+
+enum {
+	COOKIE_KEY_LABEL_LEN = 8,
+};
+
+enum wgdevice_attribute {
+	WGDEVICE_A_UNSPEC = 0,
+	WGDEVICE_A_IFINDEX = 1,
+	WGDEVICE_A_IFNAME = 2,
+	WGDEVICE_A_PRIVATE_KEY = 3,
+	WGDEVICE_A_PUBLIC_KEY = 4,
+	WGDEVICE_A_FLAGS = 5,
+	WGDEVICE_A_LISTEN_PORT = 6,
+	WGDEVICE_A_FWMARK = 7,
+	WGDEVICE_A_PEERS = 8,
+	__WGDEVICE_A_LAST = 9,
+};
+
+enum wg_cmd {
+	WG_CMD_GET_DEVICE = 0,
+	WG_CMD_SET_DEVICE = 1,
+	__WG_CMD_MAX = 2,
+};
+
+enum wgpeer_attribute {
+	WGPEER_A_UNSPEC = 0,
+	WGPEER_A_PUBLIC_KEY = 1,
+	WGPEER_A_PRESHARED_KEY = 2,
+	WGPEER_A_FLAGS = 3,
+	WGPEER_A_ENDPOINT = 4,
+	WGPEER_A_PERSISTENT_KEEPALIVE_INTERVAL = 5,
+	WGPEER_A_LAST_HANDSHAKE_TIME = 6,
+	WGPEER_A_RX_BYTES = 7,
+	WGPEER_A_TX_BYTES = 8,
+	WGPEER_A_ALLOWEDIPS = 9,
+	WGPEER_A_PROTOCOL_VERSION = 10,
+	__WGPEER_A_LAST = 11,
+};
+
+enum wgallowedip_attribute {
+	WGALLOWEDIP_A_UNSPEC = 0,
+	WGALLOWEDIP_A_FAMILY = 1,
+	WGALLOWEDIP_A_IPADDR = 2,
+	WGALLOWEDIP_A_CIDR_MASK = 3,
+	__WGALLOWEDIP_A_LAST = 4,
+};
+
+enum wgdevice_flag {
+	WGDEVICE_F_REPLACE_PEERS = 1,
+	__WGDEVICE_F_ALL = 1,
+};
+
+enum wgpeer_flag {
+	WGPEER_F_REMOVE_ME = 1,
+	WGPEER_F_REPLACE_ALLOWEDIPS = 2,
+	WGPEER_F_UPDATE_ONLY = 4,
+	__WGPEER_F_ALL = 7,
+};
+
+struct dump_ctx {
+	struct wg_device *wg;
+	struct wg_peer *next_peer;
+	u64 allowedips_seq;
+	struct allowedips_node *next_allowedip;
+};
+
+struct genl_dumpit_info {
+	struct genl_split_ops op;
+	struct genl_info info;
+};
+
+struct qdisc_walker {
+	int stop;
+	int skip;
+	int count;
+	int (*fn)(struct Qdisc *, unsigned long, struct qdisc_walker *);
+};
+
+struct ifb_q_stats_desc {
+	char desc[32];
+	size_t offset;
+};
+
+enum netdev_queue_state_t {
+	__QUEUE_STATE_DRV_XOFF = 0,
+	__QUEUE_STATE_STACK_XOFF = 1,
+	__QUEUE_STATE_FROZEN = 2,
+};
+
+enum ethtool_stringset {
+	ETH_SS_TEST = 0,
+	ETH_SS_STATS = 1,
+	ETH_SS_PRIV_FLAGS = 2,
+	ETH_SS_NTUPLE_FILTERS = 3,
+	ETH_SS_FEATURES = 4,
+	ETH_SS_RSS_HASH_FUNCS = 5,
+	ETH_SS_TUNABLES = 6,
+	ETH_SS_PHY_STATS = 7,
+	ETH_SS_PHY_TUNABLES = 8,
+	ETH_SS_LINK_MODES = 9,
+	ETH_SS_MSG_CLASSES = 10,
+	ETH_SS_WOL_MODES = 11,
+	ETH_SS_SOF_TIMESTAMPING = 12,
+	ETH_SS_TS_TX_TYPES = 13,
+	ETH_SS_TS_RX_FILTERS = 14,
+	ETH_SS_UDP_TUNNEL_TYPES = 15,
+	ETH_SS_STATS_STD = 16,
+	ETH_SS_STATS_ETH_PHY = 17,
+	ETH_SS_STATS_ETH_MAC = 18,
+	ETH_SS_STATS_ETH_CTRL = 19,
+	ETH_SS_STATS_RMON = 20,
+	ETH_SS_COUNT = 21,
+};
+
+struct ifb_q_stats {
+	u64 packets;
+	u64 bytes;
+	struct u64_stats_sync sync;
+};
+
+struct ifb_q_private {
+	struct net_device *dev;
+	struct tasklet_struct ifb_tasklet;
+	int tasklet_pending;
+	int txqnum;
+	struct sk_buff_head rq;
+	struct sk_buff_head tq;
+	struct ifb_q_stats rx_stats;
+	struct ifb_q_stats tx_stats;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct ifb_dev_private {
+	struct ifb_q_private *tx_private;
+};
+
+struct mdio_bus_stats {
+	u64_stats_t transfers;
+	u64_stats_t errors;
+	u64_stats_t writes;
+	u64_stats_t reads;
+	struct u64_stats_sync syncp;
+};
+
+struct mdio_device;
+
+struct phy_package_shared;
+
+struct mii_bus {
+	struct module *owner;
+	const char *name;
+	char id[61];
+	void *priv;
+	int (*read)(struct mii_bus *, int, int);
+	int (*write)(struct mii_bus *, int, int, u16);
+	int (*read_c45)(struct mii_bus *, int, int, int);
+	int (*write_c45)(struct mii_bus *, int, int, int, u16);
+	int (*reset)(struct mii_bus *);
+	struct mdio_bus_stats stats[32];
+	struct mutex mdio_lock;
+	struct device *parent;
+	enum {
+		MDIOBUS_ALLOCATED = 1,
+		MDIOBUS_REGISTERED = 2,
+		MDIOBUS_UNREGISTERED = 3,
+		MDIOBUS_RELEASED = 4,
+	} state;
+	struct device dev;
+	struct mdio_device *mdio_map[32];
+	u32 phy_mask;
+	u32 phy_ignore_ta_mask;
+	int irq[32];
+	int reset_delay_us;
+	int reset_post_delay_us;
+	struct gpio_desc *reset_gpiod;
+	struct mutex shared_lock;
+	struct phy_package_shared *shared[32];
+};
+
+struct mdio_device {
+	struct device dev;
+	struct mii_bus *bus;
+	char modalias[32];
+	int (*bus_match)(struct device *, struct device_driver *);
+	void (*device_free)(struct mdio_device *);
+	void (*device_remove)(struct mdio_device *);
+	int addr;
+	int flags;
+	struct gpio_desc *reset_gpio;
+	struct reset_control *reset_ctrl;
+	unsigned int reset_assert_delay;
+	unsigned int reset_deassert_delay;
+};
+
+struct phy_package_shared {
+	int addr;
+	refcount_t refcnt;
+	unsigned long flags;
+	size_t priv_size;
+	void *priv;
+};
+
+struct mdio_board_info {
+	const char *bus_id;
+	char modalias[32];
+	int mdio_addr;
+	const void *platform_data;
+};
+
+struct mdio_board_entry {
+	struct list_head list;
+	struct mdio_board_info board_info;
+};
+
+struct phylib_stubs {
+	int (*hwtstamp_get)(struct phy_device *, struct kernel_hwtstamp_config *);
+	int (*hwtstamp_set)(struct phy_device *, struct kernel_hwtstamp_config *, struct netlink_ext_ack *);
+};
+
+struct mdiobus_devres {
+	struct mii_bus *mii;
+};
+
+struct sfp_eeprom_id;
+
+struct sfp_upstream_ops {
+	void (*attach)(void *, struct sfp_bus *);
+	void (*detach)(void *, struct sfp_bus *);
+	int (*module_insert)(void *, const struct sfp_eeprom_id *);
+	void (*module_remove)(void *);
+	int (*module_start)(void *);
+	void (*module_stop)(void *);
+	void (*link_down)(void *);
+	void (*link_up)(void *);
+	int (*connect_phy)(void *, struct phy_device *);
+	void (*disconnect_phy)(void *);
+};
+
+struct sfp_eeprom_base {
+	u8 phys_id;
+	u8 phys_ext_id;
+	u8 connector;
+	u8 if_1x_copper_passive: 1;
+	u8 if_1x_copper_active: 1;
+	u8 if_1x_lx: 1;
+	u8 if_1x_sx: 1;
+	u8 e10g_base_sr: 1;
+	u8 e10g_base_lr: 1;
+	u8 e10g_base_lrm: 1;
+	u8 e10g_base_er: 1;
+	u8 sonet_oc3_short_reach: 1;
+	u8 sonet_oc3_smf_intermediate_reach: 1;
+	u8 sonet_oc3_smf_long_reach: 1;
+	u8 unallocated_5_3: 1;
+	u8 sonet_oc12_short_reach: 1;
+	u8 sonet_oc12_smf_intermediate_reach: 1;
+	u8 sonet_oc12_smf_long_reach: 1;
+	u8 unallocated_5_7: 1;
+	u8 sonet_oc48_short_reach: 1;
+	u8 sonet_oc48_intermediate_reach: 1;
+	u8 sonet_oc48_long_reach: 1;
+	u8 sonet_reach_bit2: 1;
+	u8 sonet_reach_bit1: 1;
+	u8 sonet_oc192_short_reach: 1;
+	u8 escon_smf_1310_laser: 1;
+	u8 escon_mmf_1310_led: 1;
+	u8 e1000_base_sx: 1;
+	u8 e1000_base_lx: 1;
+	u8 e1000_base_cx: 1;
+	u8 e1000_base_t: 1;
+	u8 e100_base_lx: 1;
+	u8 e100_base_fx: 1;
+	u8 e_base_bx10: 1;
+	u8 e_base_px: 1;
+	u8 fc_tech_electrical_inter_enclosure: 1;
+	u8 fc_tech_lc: 1;
+	u8 fc_tech_sa: 1;
+	u8 fc_ll_m: 1;
+	u8 fc_ll_l: 1;
+	u8 fc_ll_i: 1;
+	u8 fc_ll_s: 1;
+	u8 fc_ll_v: 1;
+	u8 unallocated_8_0: 1;
+	u8 unallocated_8_1: 1;
+	u8 sfp_ct_passive: 1;
+	u8 sfp_ct_active: 1;
+	u8 fc_tech_ll: 1;
+	u8 fc_tech_sl: 1;
+	u8 fc_tech_sn: 1;
+	u8 fc_tech_electrical_intra_enclosure: 1;
+	u8 fc_media_sm: 1;
+	u8 unallocated_9_1: 1;
+	u8 fc_media_m5: 1;
+	u8 fc_media_m6: 1;
+	u8 fc_media_tv: 1;
+	u8 fc_media_mi: 1;
+	u8 fc_media_tp: 1;
+	u8 fc_media_tw: 1;
+	u8 fc_speed_100: 1;
+	u8 unallocated_10_1: 1;
+	u8 fc_speed_200: 1;
+	u8 fc_speed_3200: 1;
+	u8 fc_speed_400: 1;
+	u8 fc_speed_1600: 1;
+	u8 fc_speed_800: 1;
+	u8 fc_speed_1200: 1;
+	u8 encoding;
+	u8 br_nominal;
+	u8 rate_id;
+	u8 link_len[6];
+	char vendor_name[16];
+	u8 extended_cc;
+	char vendor_oui[3];
+	char vendor_pn[16];
+	char vendor_rev[4];
+	union {
+		__be16 optical_wavelength;
+		__be16 cable_compliance;
+		struct {
+			u8 sff8431_app_e: 1;
+			u8 fc_pi_4_app_h: 1;
+			u8 reserved60_2: 6;
+			u8 reserved61: 8;
+		} passive;
+		struct {
+			u8 sff8431_app_e: 1;
+			u8 fc_pi_4_app_h: 1;
+			u8 sff8431_lim: 1;
+			u8 fc_pi_4_lim: 1;
+			u8 reserved60_4: 4;
+			u8 reserved61: 8;
+		} active;
+	};
+	u8 reserved62;
+	u8 cc_base;
+};
+
+struct sfp_eeprom_ext {
+	__be16 options;
+	u8 br_max;
+	u8 br_min;
+	char vendor_sn[16];
+	char datecode[8];
+	u8 diagmon;
+	u8 enhopts;
+	u8 sff8472_compliance;
+	u8 cc_ext;
+};
+
+struct sfp_eeprom_id {
+	struct sfp_eeprom_base base;
+	struct sfp_eeprom_ext ext;
+};
+
+struct phy_c45_device_ids {
+	u32 devices_in_package;
+	u32 mmds_present;
+	u32 device_ids[32];
+};
+
+enum phy_state {
+	PHY_DOWN = 0,
+	PHY_READY = 1,
+	PHY_HALTED = 2,
+	PHY_ERROR = 3,
+	PHY_UP = 4,
+	PHY_RUNNING = 5,
+	PHY_NOLINK = 6,
+	PHY_CABLETEST = 7,
+};
+
+struct pse_control;
+
+struct phy_driver;
+
+struct phy_led_trigger;
+
+struct phylink;
+
+struct mii_timestamper;
+
+struct phy_device {
+	struct mdio_device mdio;
+	struct phy_driver *drv;
+	struct device_link *devlink;
+	u32 phy_id;
+	struct phy_c45_device_ids c45_ids;
+	unsigned int is_c45: 1;
+	unsigned int is_internal: 1;
+	unsigned int is_pseudo_fixed_link: 1;
+	unsigned int is_gigabit_capable: 1;
+	unsigned int has_fixups: 1;
+	unsigned int suspended: 1;
+	unsigned int suspended_by_mdio_bus: 1;
+	unsigned int sysfs_links: 1;
+	unsigned int loopback_enabled: 1;
+	unsigned int downshifted_rate: 1;
+	unsigned int is_on_sfp_module: 1;
+	unsigned int mac_managed_pm: 1;
+	unsigned int wol_enabled: 1;
+	unsigned int autoneg: 1;
+	unsigned int link: 1;
+	unsigned int autoneg_complete: 1;
+	unsigned int interrupts: 1;
+	unsigned int irq_suspended: 1;
+	unsigned int irq_rerun: 1;
+	int rate_matching;
+	enum phy_state state;
+	u32 dev_flags;
+	phy_interface_t interface;
+	int speed;
+	int duplex;
+	int port;
+	int pause;
+	int asym_pause;
+	u8 master_slave_get;
+	u8 master_slave_set;
+	u8 master_slave_state;
+	unsigned long supported[2];
+	unsigned long advertising[2];
+	unsigned long lp_advertising[2];
+	unsigned long adv_old[2];
+	unsigned long supported_eee[2];
+	unsigned long advertising_eee[2];
+	bool eee_enabled;
+	unsigned long host_interfaces[1];
+	u32 eee_broken_modes;
+	struct phy_led_trigger *phy_led_triggers;
+	unsigned int phy_num_led_triggers;
+	struct phy_led_trigger *last_triggered;
+	struct phy_led_trigger *led_link_trigger;
+	struct list_head leds;
+	int irq;
+	void *priv;
+	struct phy_package_shared *shared;
+	struct sk_buff *skb;
+	void *ehdr;
+	struct nlattr *nest;
+	struct delayed_work state_queue;
+	struct mutex lock;
+	bool sfp_bus_attached;
+	struct sfp_bus *sfp_bus;
+	struct phylink *phylink;
+	struct net_device *attached_dev;
+	struct mii_timestamper *mii_ts;
+	struct pse_control *psec;
+	u8 mdix;
+	u8 mdix_ctrl;
+	int pma_extable;
+	unsigned int link_down_events;
+	void (*phy_link_change)(struct phy_device *, bool);
+	void (*adjust_link)(struct net_device *);
+	const struct macsec_ops *macsec_ops;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct mdio_driver_common {
+	struct device_driver driver;
+	int flags;
+};
+
+enum led_brightness {
+	LED_OFF = 0,
+	LED_ON = 1,
+	LED_HALF = 127,
+	LED_FULL = 255,
+};
+
+struct phy_tdr_config;
+
+struct phy_plca_cfg;
+
+struct phy_plca_status;
+
+struct phy_driver {
+	struct mdio_driver_common mdiodrv;
+	u32 phy_id;
+	char *name;
+	u32 phy_id_mask;
+	const unsigned long * const features;
+	u32 flags;
+	const void *driver_data;
+	int (*soft_reset)(struct phy_device *);
+	int (*config_init)(struct phy_device *);
+	int (*probe)(struct phy_device *);
+	int (*get_features)(struct phy_device *);
+	int (*get_rate_matching)(struct phy_device *, phy_interface_t);
+	int (*suspend)(struct phy_device *);
+	int (*resume)(struct phy_device *);
+	int (*config_aneg)(struct phy_device *);
+	int (*aneg_done)(struct phy_device *);
+	int (*read_status)(struct phy_device *);
+	int (*config_intr)(struct phy_device *);
+	irqreturn_t (*handle_interrupt)(struct phy_device *);
+	void (*remove)(struct phy_device *);
+	int (*match_phy_device)(struct phy_device *);
+	int (*set_wol)(struct phy_device *, struct ethtool_wolinfo *);
+	void (*get_wol)(struct phy_device *, struct ethtool_wolinfo *);
+	void (*link_change_notify)(struct phy_device *);
+	int (*read_mmd)(struct phy_device *, int, u16);
+	int (*write_mmd)(struct phy_device *, int, u16, u16);
+	int (*read_page)(struct phy_device *);
+	int (*write_page)(struct phy_device *, int);
+	int (*module_info)(struct phy_device *, struct ethtool_modinfo *);
+	int (*module_eeprom)(struct phy_device *, struct ethtool_eeprom *, u8 *);
+	int (*cable_test_start)(struct phy_device *);
+	int (*cable_test_tdr_start)(struct phy_device *, const struct phy_tdr_config *);
+	int (*cable_test_get_status)(struct phy_device *, bool *);
+	int (*get_sset_count)(struct phy_device *);
+	void (*get_strings)(struct phy_device *, u8 *);
+	void (*get_stats)(struct phy_device *, struct ethtool_stats *, u64 *);
+	int (*get_tunable)(struct phy_device *, struct ethtool_tunable *, void *);
+	int (*set_tunable)(struct phy_device *, struct ethtool_tunable *, const void *);
+	int (*set_loopback)(struct phy_device *, bool);
+	int (*get_sqi)(struct phy_device *);
+	int (*get_sqi_max)(struct phy_device *);
+	int (*get_plca_cfg)(struct phy_device *, struct phy_plca_cfg *);
+	int (*set_plca_cfg)(struct phy_device *, const struct phy_plca_cfg *);
+	int (*get_plca_status)(struct phy_device *, struct phy_plca_status *);
+	int (*led_brightness_set)(struct phy_device *, u8, enum led_brightness);
+	int (*led_blink_set)(struct phy_device *, u8, unsigned long *, unsigned long *);
+	int (*led_hw_is_supported)(struct phy_device *, u8, unsigned long);
+	int (*led_hw_control_set)(struct phy_device *, u8, unsigned long);
+	int (*led_hw_control_get)(struct phy_device *, u8, unsigned long *);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct phy_tdr_config {
+	u32 first;
+	u32 last;
+	u32 step;
+	s8 pair;
+};
+
+struct phy_plca_cfg {
+	int version;
+	int enabled;
+	int node_id;
+	int node_cnt;
+	int to_tmr;
+	int burst_cnt;
+	int burst_tmr;
+};
+
+struct phy_plca_status {
+	bool pst;
+};
+
+struct phylink_link_state {
+	unsigned long advertising[2];
+	unsigned long lp_advertising[2];
+	phy_interface_t interface;
+	int speed;
+	int duplex;
+	int pause;
+	int rate_matching;
+	unsigned int link: 1;
+	unsigned int an_complete: 1;
+};
+
+struct phylink_mac_ops;
+
+struct phylink_config;
+
+struct phylink_pcs;
+
+struct phylink {
+	struct net_device *netdev;
+	const struct phylink_mac_ops *mac_ops;
+	struct phylink_config *config;
+	struct phylink_pcs *pcs;
+	struct device *dev;
+	unsigned int old_link_state: 1;
+	unsigned long phylink_disable_state;
+	struct phy_device *phydev;
+	phy_interface_t link_interface;
+	u8 cfg_link_an_mode;
+	u8 cur_link_an_mode;
+	u8 link_port;
+	unsigned long supported[2];
+	struct phylink_link_state link_config;
+	phy_interface_t cur_interface;
+	struct gpio_desc *link_gpio;
+	unsigned int link_irq;
+	struct timer_list link_poll;
+	void (*get_fixed_state)(struct net_device *, struct phylink_link_state *);
+	struct mutex state_mutex;
+	struct phylink_link_state phy_state;
+	struct work_struct resolve;
+	unsigned int pcs_neg_mode;
+	unsigned int pcs_state;
+	bool mac_link_dropped;
+	bool using_mac_select_pcs;
+	struct sfp_bus *sfp_bus;
+	bool sfp_may_have_phy;
+	unsigned long sfp_interfaces[1];
+	unsigned long sfp_support[2];
+	u8 sfp_port;
+};
+
+struct phylink_mac_ops {
+	void (*validate)(struct phylink_config *, unsigned long *, struct phylink_link_state *);
+	struct phylink_pcs * (*mac_select_pcs)(struct phylink_config *, phy_interface_t);
+	int (*mac_prepare)(struct phylink_config *, unsigned int, phy_interface_t);
+	void (*mac_config)(struct phylink_config *, unsigned int, const struct phylink_link_state *);
+	int (*mac_finish)(struct phylink_config *, unsigned int, phy_interface_t);
+	void (*mac_link_down)(struct phylink_config *, unsigned int, phy_interface_t);
+	void (*mac_link_up)(struct phylink_config *, struct phy_device *, unsigned int, phy_interface_t, int, int, bool, bool);
+};
+
+enum phylink_op_type {
+	PHYLINK_NETDEV = 0,
+	PHYLINK_DEV = 1,
+};
+
+struct phylink_config {
+	struct device *dev;
+	enum phylink_op_type type;
+	bool poll_fixed_state;
+	bool mac_managed_pm;
+	bool ovr_an_inband;
+	void (*get_fixed_state)(struct phylink_config *, struct phylink_link_state *);
+	unsigned long supported_interfaces[1];
+	unsigned long mac_capabilities;
+};
+
+struct phylink_pcs_ops;
+
+struct phylink_pcs {
+	const struct phylink_pcs_ops *ops;
+	struct phylink *phylink;
+	bool neg_mode;
+	bool poll;
+};
+
+struct phylink_pcs_ops {
+	int (*pcs_validate)(struct phylink_pcs *, unsigned long *, const struct phylink_link_state *);
+	int (*pcs_enable)(struct phylink_pcs *);
+	void (*pcs_disable)(struct phylink_pcs *);
+	void (*pcs_pre_config)(struct phylink_pcs *, phy_interface_t);
+	int (*pcs_post_config)(struct phylink_pcs *, phy_interface_t);
+	void (*pcs_get_state)(struct phylink_pcs *, struct phylink_link_state *);
+	int (*pcs_config)(struct phylink_pcs *, unsigned int, phy_interface_t, const unsigned long *, bool);
+	void (*pcs_an_restart)(struct phylink_pcs *);
+	void (*pcs_link_up)(struct phylink_pcs *, unsigned int, phy_interface_t, int, int);
+};
+
+struct mii_timestamper {
+	bool (*rxtstamp)(struct mii_timestamper *, struct sk_buff *, int);
+	void (*txtstamp)(struct mii_timestamper *, struct sk_buff *, int);
+	int (*hwtstamp)(struct mii_timestamper *, struct ifreq *);
+	void (*link_state)(struct mii_timestamper *, struct phy_device *);
+	int (*ts_info)(struct mii_timestamper *, struct ethtool_ts_info *);
+	struct device *device;
+};
+
+enum ethtool_link_mode_bit_indices {
+	ETHTOOL_LINK_MODE_10baseT_Half_BIT = 0,
+	ETHTOOL_LINK_MODE_10baseT_Full_BIT = 1,
+	ETHTOOL_LINK_MODE_100baseT_Half_BIT = 2,
+	ETHTOOL_LINK_MODE_100baseT_Full_BIT = 3,
+	ETHTOOL_LINK_MODE_1000baseT_Half_BIT = 4,
+	ETHTOOL_LINK_MODE_1000baseT_Full_BIT = 5,
+	ETHTOOL_LINK_MODE_Autoneg_BIT = 6,
+	ETHTOOL_LINK_MODE_TP_BIT = 7,
+	ETHTOOL_LINK_MODE_AUI_BIT = 8,
+	ETHTOOL_LINK_MODE_MII_BIT = 9,
+	ETHTOOL_LINK_MODE_FIBRE_BIT = 10,
+	ETHTOOL_LINK_MODE_BNC_BIT = 11,
+	ETHTOOL_LINK_MODE_10000baseT_Full_BIT = 12,
+	ETHTOOL_LINK_MODE_Pause_BIT = 13,
+	ETHTOOL_LINK_MODE_Asym_Pause_BIT = 14,
+	ETHTOOL_LINK_MODE_2500baseX_Full_BIT = 15,
+	ETHTOOL_LINK_MODE_Backplane_BIT = 16,
+	ETHTOOL_LINK_MODE_1000baseKX_Full_BIT = 17,
+	ETHTOOL_LINK_MODE_10000baseKX4_Full_BIT = 18,
+	ETHTOOL_LINK_MODE_10000baseKR_Full_BIT = 19,
+	ETHTOOL_LINK_MODE_10000baseR_FEC_BIT = 20,
+	ETHTOOL_LINK_MODE_20000baseMLD2_Full_BIT = 21,
+	ETHTOOL_LINK_MODE_20000baseKR2_Full_BIT = 22,
+	ETHTOOL_LINK_MODE_40000baseKR4_Full_BIT = 23,
+	ETHTOOL_LINK_MODE_40000baseCR4_Full_BIT = 24,
+	ETHTOOL_LINK_MODE_40000baseSR4_Full_BIT = 25,
+	ETHTOOL_LINK_MODE_40000baseLR4_Full_BIT = 26,
+	ETHTOOL_LINK_MODE_56000baseKR4_Full_BIT = 27,
+	ETHTOOL_LINK_MODE_56000baseCR4_Full_BIT = 28,
+	ETHTOOL_LINK_MODE_56000baseSR4_Full_BIT = 29,
+	ETHTOOL_LINK_MODE_56000baseLR4_Full_BIT = 30,
+	ETHTOOL_LINK_MODE_25000baseCR_Full_BIT = 31,
+	ETHTOOL_LINK_MODE_25000baseKR_Full_BIT = 32,
+	ETHTOOL_LINK_MODE_25000baseSR_Full_BIT = 33,
+	ETHTOOL_LINK_MODE_50000baseCR2_Full_BIT = 34,
+	ETHTOOL_LINK_MODE_50000baseKR2_Full_BIT = 35,
+	ETHTOOL_LINK_MODE_100000baseKR4_Full_BIT = 36,
+	ETHTOOL_LINK_MODE_100000baseSR4_Full_BIT = 37,
+	ETHTOOL_LINK_MODE_100000baseCR4_Full_BIT = 38,
+	ETHTOOL_LINK_MODE_100000baseLR4_ER4_Full_BIT = 39,
+	ETHTOOL_LINK_MODE_50000baseSR2_Full_BIT = 40,
+	ETHTOOL_LINK_MODE_1000baseX_Full_BIT = 41,
+	ETHTOOL_LINK_MODE_10000baseCR_Full_BIT = 42,
+	ETHTOOL_LINK_MODE_10000baseSR_Full_BIT = 43,
+	ETHTOOL_LINK_MODE_10000baseLR_Full_BIT = 44,
+	ETHTOOL_LINK_MODE_10000baseLRM_Full_BIT = 45,
+	ETHTOOL_LINK_MODE_10000baseER_Full_BIT = 46,
+	ETHTOOL_LINK_MODE_2500baseT_Full_BIT = 47,
+	ETHTOOL_LINK_MODE_5000baseT_Full_BIT = 48,
+	ETHTOOL_LINK_MODE_FEC_NONE_BIT = 49,
+	ETHTOOL_LINK_MODE_FEC_RS_BIT = 50,
+	ETHTOOL_LINK_MODE_FEC_BASER_BIT = 51,
+	ETHTOOL_LINK_MODE_50000baseKR_Full_BIT = 52,
+	ETHTOOL_LINK_MODE_50000baseSR_Full_BIT = 53,
+	ETHTOOL_LINK_MODE_50000baseCR_Full_BIT = 54,
+	ETHTOOL_LINK_MODE_50000baseLR_ER_FR_Full_BIT = 55,
+	ETHTOOL_LINK_MODE_50000baseDR_Full_BIT = 56,
+	ETHTOOL_LINK_MODE_100000baseKR2_Full_BIT = 57,
+	ETHTOOL_LINK_MODE_100000baseSR2_Full_BIT = 58,
+	ETHTOOL_LINK_MODE_100000baseCR2_Full_BIT = 59,
+	ETHTOOL_LINK_MODE_100000baseLR2_ER2_FR2_Full_BIT = 60,
+	ETHTOOL_LINK_MODE_100000baseDR2_Full_BIT = 61,
+	ETHTOOL_LINK_MODE_200000baseKR4_Full_BIT = 62,
+	ETHTOOL_LINK_MODE_200000baseSR4_Full_BIT = 63,
+	ETHTOOL_LINK_MODE_200000baseLR4_ER4_FR4_Full_BIT = 64,
+	ETHTOOL_LINK_MODE_200000baseDR4_Full_BIT = 65,
+	ETHTOOL_LINK_MODE_200000baseCR4_Full_BIT = 66,
+	ETHTOOL_LINK_MODE_100baseT1_Full_BIT = 67,
+	ETHTOOL_LINK_MODE_1000baseT1_Full_BIT = 68,
+	ETHTOOL_LINK_MODE_400000baseKR8_Full_BIT = 69,
+	ETHTOOL_LINK_MODE_400000baseSR8_Full_BIT = 70,
+	ETHTOOL_LINK_MODE_400000baseLR8_ER8_FR8_Full_BIT = 71,
+	ETHTOOL_LINK_MODE_400000baseDR8_Full_BIT = 72,
+	ETHTOOL_LINK_MODE_400000baseCR8_Full_BIT = 73,
+	ETHTOOL_LINK_MODE_FEC_LLRS_BIT = 74,
+	ETHTOOL_LINK_MODE_100000baseKR_Full_BIT = 75,
+	ETHTOOL_LINK_MODE_100000baseSR_Full_BIT = 76,
+	ETHTOOL_LINK_MODE_100000baseLR_ER_FR_Full_BIT = 77,
+	ETHTOOL_LINK_MODE_100000baseCR_Full_BIT = 78,
+	ETHTOOL_LINK_MODE_100000baseDR_Full_BIT = 79,
+	ETHTOOL_LINK_MODE_200000baseKR2_Full_BIT = 80,
+	ETHTOOL_LINK_MODE_200000baseSR2_Full_BIT = 81,
+	ETHTOOL_LINK_MODE_200000baseLR2_ER2_FR2_Full_BIT = 82,
+	ETHTOOL_LINK_MODE_200000baseDR2_Full_BIT = 83,
+	ETHTOOL_LINK_MODE_200000baseCR2_Full_BIT = 84,
+	ETHTOOL_LINK_MODE_400000baseKR4_Full_BIT = 85,
+	ETHTOOL_LINK_MODE_400000baseSR4_Full_BIT = 86,
+	ETHTOOL_LINK_MODE_400000baseLR4_ER4_FR4_Full_BIT = 87,
+	ETHTOOL_LINK_MODE_400000baseDR4_Full_BIT = 88,
+	ETHTOOL_LINK_MODE_400000baseCR4_Full_BIT = 89,
+	ETHTOOL_LINK_MODE_100baseFX_Half_BIT = 90,
+	ETHTOOL_LINK_MODE_100baseFX_Full_BIT = 91,
+	ETHTOOL_LINK_MODE_10baseT1L_Full_BIT = 92,
+	ETHTOOL_LINK_MODE_800000baseCR8_Full_BIT = 93,
+	ETHTOOL_LINK_MODE_800000baseKR8_Full_BIT = 94,
+	ETHTOOL_LINK_MODE_800000baseDR8_Full_BIT = 95,
+	ETHTOOL_LINK_MODE_800000baseDR8_2_Full_BIT = 96,
+	ETHTOOL_LINK_MODE_800000baseSR8_Full_BIT = 97,
+	ETHTOOL_LINK_MODE_800000baseVR8_Full_BIT = 98,
+	ETHTOOL_LINK_MODE_10baseT1S_Full_BIT = 99,
+	ETHTOOL_LINK_MODE_10baseT1S_Half_BIT = 100,
+	ETHTOOL_LINK_MODE_10baseT1S_P2MP_Half_BIT = 101,
+	__ETHTOOL_LINK_MODE_MASK_NBITS = 102,
+};
+
+enum {
+	MLO_PAUSE_NONE = 0,
+	MLO_PAUSE_RX = 1,
+	MLO_PAUSE_TX = 2,
+	MLO_PAUSE_TXRX_MASK = 3,
+	MLO_PAUSE_AN = 4,
+	MLO_AN_PHY = 0,
+	MLO_AN_FIXED = 1,
+	MLO_AN_INBAND = 2,
+	PHYLINK_PCS_NEG_NONE = 0,
+	PHYLINK_PCS_NEG_ENABLED = 16,
+	PHYLINK_PCS_NEG_OUTBAND = 32,
+	PHYLINK_PCS_NEG_INBAND = 64,
+	PHYLINK_PCS_NEG_INBAND_DISABLED = 64,
+	PHYLINK_PCS_NEG_INBAND_ENABLED = 80,
+	MAC_SYM_PAUSE = 1,
+	MAC_ASYM_PAUSE = 2,
+	MAC_10HD = 4,
+	MAC_10FD = 8,
+	MAC_10 = 12,
+	MAC_100HD = 16,
+	MAC_100FD = 32,
+	MAC_100 = 48,
+	MAC_1000HD = 64,
+	MAC_1000FD = 128,
+	MAC_1000 = 192,
+	MAC_2500FD = 256,
+	MAC_5000FD = 512,
+	MAC_10000FD = 1024,
+	MAC_20000FD = 2048,
+	MAC_25000FD = 4096,
+	MAC_40000FD = 8192,
+	MAC_50000FD = 16384,
+	MAC_56000FD = 32768,
+	MAC_100000FD = 65536,
+	MAC_200000FD = 131072,
+	MAC_400000FD = 262144,
+};
+
+enum {
+	PHYLINK_DISABLE_STOPPED = 0,
+	PHYLINK_DISABLE_LINK = 1,
+	PHYLINK_DISABLE_MAC_WOL = 2,
+	PCS_STATE_DOWN = 0,
+	PCS_STATE_STARTING = 1,
+	PCS_STATE_STARTED = 2,
+};
+
+struct mii_ioctl_data {
+	__u16 phy_id;
+	__u16 reg_num;
+	__u16 val_in;
+	__u16 val_out;
+};
+
+struct phy_setting {
+	u32 speed;
+	u8 duplex;
+	u8 bit;
+};
+
+struct fixed_phy_status {
+	int link;
+	int speed;
+	int duplex;
+	int pause;
+	int asym_pause;
+};
+
+struct led_classdev;
+
+struct led_hw_trigger_type;
+
+struct led_trigger {
+	const char *name;
+	int (*activate)(struct led_classdev *);
+	void (*deactivate)(struct led_classdev *);
+	struct led_hw_trigger_type *trigger_type;
+	spinlock_t leddev_list_lock;
+	struct list_head led_cdevs;
+	struct list_head next_trig;
+	const struct attribute_group **groups;
+};
+
+struct phy_led_trigger {
+	struct led_trigger trigger;
+	char name[76];
+	unsigned int speed;
+};
+
+struct led_pattern;
+
+struct led_classdev {
+	const char *name;
+	unsigned int brightness;
+	unsigned int max_brightness;
+	unsigned int color;
+	int flags;
+	unsigned long work_flags;
+	void (*brightness_set)(struct led_classdev *, enum led_brightness);
+	int (*brightness_set_blocking)(struct led_classdev *, enum led_brightness);
+	enum led_brightness (*brightness_get)(struct led_classdev *);
+	int (*blink_set)(struct led_classdev *, unsigned long *, unsigned long *);
+	int (*pattern_set)(struct led_classdev *, struct led_pattern *, u32, int);
+	int (*pattern_clear)(struct led_classdev *);
+	struct device *dev;
+	const struct attribute_group **groups;
+	struct list_head node;
+	const char *default_trigger;
+	unsigned long blink_delay_on;
+	unsigned long blink_delay_off;
+	struct timer_list blink_timer;
+	int blink_brightness;
+	int new_blink_brightness;
+	void (*flash_resume)(struct led_classdev *);
+	struct work_struct set_brightness_work;
+	int delayed_set_value;
+	unsigned long delayed_delay_on;
+	unsigned long delayed_delay_off;
+	struct rw_semaphore trigger_lock;
+	struct led_trigger *trigger;
+	struct list_head trig_list;
+	void *trigger_data;
+	bool activated;
+	struct led_hw_trigger_type *trigger_type;
+	const char *hw_control_trigger;
+	int (*hw_control_is_supported)(struct led_classdev *, unsigned long);
+	int (*hw_control_set)(struct led_classdev *, unsigned long);
+	int (*hw_control_get)(struct led_classdev *, unsigned long *);
+	struct device * (*hw_control_get_device)(struct led_classdev *);
+	struct mutex led_access;
+};
+
+struct led_pattern {
+	u32 delta_t;
+	int brightness;
+};
+
+struct led_hw_trigger_type {
+	int dummy;
+};
+
+enum {
+	ETHTOOL_MSG_KERNEL_NONE = 0,
+	ETHTOOL_MSG_STRSET_GET_REPLY = 1,
+	ETHTOOL_MSG_LINKINFO_GET_REPLY = 2,
+	ETHTOOL_MSG_LINKINFO_NTF = 3,
+	ETHTOOL_MSG_LINKMODES_GET_REPLY = 4,
+	ETHTOOL_MSG_LINKMODES_NTF = 5,
+	ETHTOOL_MSG_LINKSTATE_GET_REPLY = 6,
+	ETHTOOL_MSG_DEBUG_GET_REPLY = 7,
+	ETHTOOL_MSG_DEBUG_NTF = 8,
+	ETHTOOL_MSG_WOL_GET_REPLY = 9,
+	ETHTOOL_MSG_WOL_NTF = 10,
+	ETHTOOL_MSG_FEATURES_GET_REPLY = 11,
+	ETHTOOL_MSG_FEATURES_SET_REPLY = 12,
+	ETHTOOL_MSG_FEATURES_NTF = 13,
+	ETHTOOL_MSG_PRIVFLAGS_GET_REPLY = 14,
+	ETHTOOL_MSG_PRIVFLAGS_NTF = 15,
+	ETHTOOL_MSG_RINGS_GET_REPLY = 16,
+	ETHTOOL_MSG_RINGS_NTF = 17,
+	ETHTOOL_MSG_CHANNELS_GET_REPLY = 18,
+	ETHTOOL_MSG_CHANNELS_NTF = 19,
+	ETHTOOL_MSG_COALESCE_GET_REPLY = 20,
+	ETHTOOL_MSG_COALESCE_NTF = 21,
+	ETHTOOL_MSG_PAUSE_GET_REPLY = 22,
+	ETHTOOL_MSG_PAUSE_NTF = 23,
+	ETHTOOL_MSG_EEE_GET_REPLY = 24,
+	ETHTOOL_MSG_EEE_NTF = 25,
+	ETHTOOL_MSG_TSINFO_GET_REPLY = 26,
+	ETHTOOL_MSG_CABLE_TEST_NTF = 27,
+	ETHTOOL_MSG_CABLE_TEST_TDR_NTF = 28,
+	ETHTOOL_MSG_TUNNEL_INFO_GET_REPLY = 29,
+	ETHTOOL_MSG_FEC_GET_REPLY = 30,
+	ETHTOOL_MSG_FEC_NTF = 31,
+	ETHTOOL_MSG_MODULE_EEPROM_GET_REPLY = 32,
+	ETHTOOL_MSG_STATS_GET_REPLY = 33,
+	ETHTOOL_MSG_PHC_VCLOCKS_GET_REPLY = 34,
+	ETHTOOL_MSG_MODULE_GET_REPLY = 35,
+	ETHTOOL_MSG_MODULE_NTF = 36,
+	ETHTOOL_MSG_PSE_GET_REPLY = 37,
+	ETHTOOL_MSG_RSS_GET_REPLY = 38,
+	ETHTOOL_MSG_PLCA_GET_CFG_REPLY = 39,
+	ETHTOOL_MSG_PLCA_GET_STATUS_REPLY = 40,
+	ETHTOOL_MSG_PLCA_NTF = 41,
+	ETHTOOL_MSG_MM_GET_REPLY = 42,
+	ETHTOOL_MSG_MM_NTF = 43,
+	__ETHTOOL_MSG_KERNEL_CNT = 44,
+	ETHTOOL_MSG_KERNEL_MAX = 43,
+};
+
+struct ethtool_phy_ops {
+	int (*get_sset_count)(struct phy_device *);
+	int (*get_strings)(struct phy_device *, u8 *);
+	int (*get_stats)(struct phy_device *, struct ethtool_stats *, u64 *);
+	int (*get_plca_cfg)(struct phy_device *, struct phy_plca_cfg *);
+	int (*set_plca_cfg)(struct phy_device *, const struct phy_plca_cfg *, struct netlink_ext_ack *);
+	int (*get_plca_status)(struct phy_device *, struct phy_plca_status *);
+	int (*start_cable_test)(struct phy_device *, struct netlink_ext_ack *);
+	int (*start_cable_test_tdr)(struct phy_device *, struct netlink_ext_ack *, const struct phy_tdr_config *);
+};
+
+struct phy_fixup {
+	struct list_head list;
+	char bus_id[64];
+	u32 phy_uid;
+	u32 phy_uid_mask;
+	int (*run)(struct phy_device *);
+};
+
+struct phy_led {
+	struct list_head list;
+	struct phy_device *phydev;
+	struct led_classdev led_cdev;
+	u8 index;
+};
+
+struct led_init_data {
+	struct fwnode_handle *fwnode;
+	const char *default_label;
+	const char *devicename;
+	bool devname_mandatory;
+};
+
+typedef void (*btf_trace_mdio_access)(void *, struct mii_bus *, char, u8, unsigned int, u16, int);
+
+struct trace_event_raw_mdio_access {
+	struct trace_entry ent;
+	char busid[61];
+	char read;
+	u8 addr;
+	u16 val;
+	unsigned int regnum;
+	char __data[0];
+};
+
+struct mdio_driver {
+	struct mdio_driver_common mdiodrv;
+	int (*probe)(struct mdio_device *);
+	void (*remove)(struct mdio_device *);
+	void (*shutdown)(struct mdio_device *);
+};
+
+struct trace_event_data_offsets_mdio_access {};
+
+struct mdio_bus_stat_attr {
+	int addr;
+	unsigned int field_offset;
+};
+
+struct swmii_regs {
+	u16 bmsr;
+	u16 lpa;
+	u16 lpagb;
+	u16 estat;
+};
+
+enum {
+	SWMII_SPEED_10 = 0,
+	SWMII_SPEED_100 = 1,
+	SWMII_SPEED_1000 = 2,
+	SWMII_DUPLEX_HALF = 0,
+	SWMII_DUPLEX_FULL = 1,
+};
+
+struct fixed_mdio_bus {
+	struct mii_bus *mii_bus;
+	struct list_head phys;
+};
+
+struct fixed_phy {
+	int addr;
+	struct phy_device *phydev;
+	struct fixed_phy_status status;
+	bool no_carrier;
+	int (*link_update)(struct net_device *, struct fixed_phy_status *);
+	struct list_head node;
+	struct gpio_desc *link_gpiod;
+};
+
+struct wpan_phy;
+
+struct wpan_dev_header_ops;
+
+struct wpan_dev {
+	struct wpan_phy *wpan_phy;
+	int iftype;
+	struct list_head list;
+	struct net_device *netdev;
+	const struct wpan_dev_header_ops *header_ops;
+	struct net_device *lowpan_dev;
+	u32 identifier;
+	__le16 pan_id;
+	__le16 short_addr;
+	__le64 extended_addr;
+	atomic_t bsn;
+	atomic_t dsn;
+	u8 min_be;
+	u8 max_be;
+	u8 csma_retries;
+	s8 frame_retries;
+	bool lbt;
+	bool ackreq;
+};
+
+enum nl802154_supported_bool_states {
+	NL802154_SUPPORTED_BOOL_FALSE = 0,
+	NL802154_SUPPORTED_BOOL_TRUE = 1,
+	__NL802154_SUPPORTED_BOOL_INVALD = 2,
+	NL802154_SUPPORTED_BOOL_BOTH = 3,
+	__NL802154_SUPPORTED_BOOL_AFTER_LAST = 4,
+	NL802154_SUPPORTED_BOOL_MAX = 3,
+};
+
+struct wpan_phy_supported {
+	u32 channels[32];
+	u32 cca_modes;
+	u32 cca_opts;
+	u32 iftypes;
+	enum nl802154_supported_bool_states lbt;
+	u8 min_minbe;
+	u8 max_minbe;
+	u8 min_maxbe;
+	u8 max_maxbe;
+	u8 min_csma_backoffs;
+	u8 max_csma_backoffs;
+	s8 min_frame_retries;
+	s8 max_frame_retries;
+	size_t tx_powers_size;
+	size_t cca_ed_levels_size;
+	const s32 *tx_powers;
+	const s32 *cca_ed_levels;
+};
+
+enum nl802154_cca_modes {
+	__NL802154_CCA_INVALID = 0,
+	NL802154_CCA_ENERGY = 1,
+	NL802154_CCA_CARRIER = 2,
+	NL802154_CCA_ENERGY_CARRIER = 3,
+	NL802154_CCA_ALOHA = 4,
+	NL802154_CCA_UWB_SHR = 5,
+	NL802154_CCA_UWB_MULTIPLEXED = 6,
+	__NL802154_CCA_ATTR_AFTER_LAST = 7,
+	NL802154_CCA_ATTR_MAX = 6,
+};
+
+enum nl802154_cca_opts {
+	NL802154_CCA_OPT_ENERGY_CARRIER_AND = 0,
+	NL802154_CCA_OPT_ENERGY_CARRIER_OR = 1,
+	__NL802154_CCA_OPT_ATTR_AFTER_LAST = 2,
+	NL802154_CCA_OPT_ATTR_MAX = 1,
+};
+
+struct wpan_phy_cca {
+	enum nl802154_cca_modes mode;
+	enum nl802154_cca_opts opt;
+};
+
+enum ieee802154_filtering_level {
+	IEEE802154_FILTERING_NONE = 0,
+	IEEE802154_FILTERING_1_FCS = 1,
+	IEEE802154_FILTERING_2_PROMISCUOUS = 2,
+	IEEE802154_FILTERING_3_SCAN = 3,
+	IEEE802154_FILTERING_4_FRAME_FIELDS = 4,
+};
+
+struct wpan_phy {
+	const void *privid;
+	unsigned long flags;
+	u8 current_channel;
+	u8 current_page;
+	struct wpan_phy_supported supported;
+	s32 transmit_power;
+	struct wpan_phy_cca cca;
+	__le64 perm_extended_addr;
+	s32 cca_ed_level;
+	u32 symbol_duration;
+	u16 lifs_period;
+	u16 sifs_period;
+	struct device dev;
+	possible_net_t _net;
+	spinlock_t queue_lock;
+	atomic_t ongoing_txs;
+	atomic_t hold_txs;
+	wait_queue_head_t sync_txq;
+	enum ieee802154_filtering_level filtering;
+	long: 0;
+	char priv[0];
+};
+
+struct ieee802154_addr;
+
+struct wpan_dev_header_ops {
+	int (*create)(struct sk_buff *, struct net_device *, const struct ieee802154_addr *, const struct ieee802154_addr *, unsigned int);
+};
+
+struct ieee802154_addr {
+	u8 mode;
+	__le16 pan_id;
+	union {
+		__le16 short_addr;
+		__le64 extended_addr;
+	};
+};
+
+enum {
+	NETIF_MSG_DRV_BIT = 0,
+	NETIF_MSG_PROBE_BIT = 1,
+	NETIF_MSG_LINK_BIT = 2,
+	NETIF_MSG_TIMER_BIT = 3,
+	NETIF_MSG_IFDOWN_BIT = 4,
+	NETIF_MSG_IFUP_BIT = 5,
+	NETIF_MSG_RX_ERR_BIT = 6,
+	NETIF_MSG_TX_ERR_BIT = 7,
+	NETIF_MSG_TX_QUEUED_BIT = 8,
+	NETIF_MSG_INTR_BIT = 9,
+	NETIF_MSG_TX_DONE_BIT = 10,
+	NETIF_MSG_RX_STATUS_BIT = 11,
+	NETIF_MSG_PKTDATA_BIT = 12,
+	NETIF_MSG_HW_BIT = 13,
+	NETIF_MSG_WOL_BIT = 14,
+	NETIF_MSG_CLASS_COUNT = 15,
+};
+
+enum {
+	IFLA_TUN_UNSPEC = 0,
+	IFLA_TUN_OWNER = 1,
+	IFLA_TUN_GROUP = 2,
+	IFLA_TUN_TYPE = 3,
+	IFLA_TUN_PI = 4,
+	IFLA_TUN_VNET_HDR = 5,
+	IFLA_TUN_PERSIST = 6,
+	IFLA_TUN_MULTI_QUEUE = 7,
+	IFLA_TUN_NUM_QUEUES = 8,
+	IFLA_TUN_NUM_DISABLED_QUEUES = 9,
+	__IFLA_TUN_MAX = 10,
+};
+
+enum {
+	SKB_GSO_TCPV4 = 1,
+	SKB_GSO_DODGY = 2,
+	SKB_GSO_TCP_ECN = 4,
+	SKB_GSO_TCP_FIXEDID = 8,
+	SKB_GSO_TCPV6 = 16,
+	SKB_GSO_FCOE = 32,
+	SKB_GSO_GRE = 64,
+	SKB_GSO_GRE_CSUM = 128,
+	SKB_GSO_IPXIP4 = 256,
+	SKB_GSO_IPXIP6 = 512,
+	SKB_GSO_UDP_TUNNEL = 1024,
+	SKB_GSO_UDP_TUNNEL_CSUM = 2048,
+	SKB_GSO_PARTIAL = 4096,
+	SKB_GSO_TUNNEL_REMCSUM = 8192,
+	SKB_GSO_SCTP = 16384,
+	SKB_GSO_ESP = 32768,
+	SKB_GSO_UDP = 65536,
+	SKB_GSO_UDP_L4 = 131072,
+	SKB_GSO_FRAGLIST = 262144,
+};
+
+enum xdp_mem_type {
+	MEM_TYPE_PAGE_SHARED = 0,
+	MEM_TYPE_PAGE_ORDER0 = 1,
+	MEM_TYPE_PAGE_POOL = 2,
+	MEM_TYPE_XSK_BUFF_POOL = 3,
+	MEM_TYPE_MAX = 4,
+};
+
+struct tun_struct;
+
+struct tun_flow_entry {
+	struct hlist_node hash_link;
+	struct callback_head rcu;
+	struct tun_struct *tun;
+	u32 rxhash;
+	u32 rps_rxhash;
+	int queue_index;
+	long: 64;
+	unsigned long updated;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct tap_filter {
+	unsigned int count;
+	u32 mask[2];
+	unsigned char addr[48];
+};
+
+struct tun_file;
+
+struct tun_prog;
+
+struct tun_struct {
+	struct tun_file __attribute__((btf_type_tag("rcu"))) *tfiles[256];
+	unsigned int numqueues;
+	unsigned int flags;
+	kuid_t owner;
+	kgid_t group;
+	struct net_device *dev;
+	netdev_features_t set_features;
+	int align;
+	int vnet_hdr_sz;
+	int sndbuf;
+	struct tap_filter txflt;
+	struct sock_fprog fprog;
+	bool filter_attached;
+	u32 msg_enable;
+	spinlock_t lock;
+	struct hlist_head flows[1024];
+	struct timer_list flow_gc_timer;
+	unsigned long ageing_time;
+	unsigned int numdisabled;
+	struct list_head disabled;
+	void *security;
+	u32 flow_count;
+	u32 rx_batched;
+	atomic_long_t rx_frame_errors;
+	struct bpf_prog __attribute__((btf_type_tag("rcu"))) *xdp_prog;
+	struct tun_prog __attribute__((btf_type_tag("rcu"))) *steering_prog;
+	struct tun_prog __attribute__((btf_type_tag("rcu"))) *filter_prog;
+	struct ethtool_link_ksettings link_ksettings;
+	struct file *file;
+	struct ifreq *ifr;
+};
+
+struct tun_file {
+	struct sock sk;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct socket socket;
+	struct tun_struct __attribute__((btf_type_tag("rcu"))) *tun;
+	struct fasync_struct *fasync;
+	unsigned int flags;
+	union {
+		u16 queue_index;
+		unsigned int ifindex;
+	};
+	struct napi_struct napi;
+	bool napi_enabled;
+	bool napi_frags_enabled;
+	struct mutex napi_mutex;
+	struct list_head next;
+	struct tun_struct *detached;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct ptr_ring tx_ring;
+	struct xdp_rxq_info xdp_rxq;
+};
+
+struct tun_prog {
+	struct callback_head rcu;
+	struct bpf_prog *prog;
+};
+
+struct rps_sock_flow_table {
+	u32 mask;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	u32 ents[0];
+};
+
+struct tun_pi {
+	__u16 flags;
+	__be16 proto;
+};
+
+struct virtio_net_hdr {
+	__u8 flags;
+	__u8 gso_type;
+	__virtio16 hdr_len;
+	__virtio16 gso_size;
+	__virtio16 csum_start;
+	__virtio16 csum_offset;
+};
+
+struct veth {
+	__be16 h_vlan_proto;
+	__be16 h_vlan_TCI;
+};
+
+struct nf_conntrack {
+	refcount_t use;
+};
+
+struct tun_page {
+	struct page *page;
+	int count;
+};
+
+struct tun_xdp_hdr {
+	int buflen;
+	struct virtio_net_hdr gso;
+};
+
+struct tun_filter {
+	__u16 flags;
+	__u16 count;
+	__u8 addr[0];
+};
+
+struct tun_msg_ctl {
+	unsigned short type;
+	unsigned short num;
+	void *ptr;
+};
+
+struct page_pool_params {
+	unsigned int flags;
+	unsigned int order;
+	unsigned int pool_size;
+	int nid;
+	struct device *dev;
+	struct napi_struct *napi;
+	enum dma_data_direction dma_dir;
+	unsigned int max_len;
+	unsigned int offset;
+	void (*init_callback)(struct page *, void *);
+	void *init_arg;
+};
+
+struct pp_alloc_cache {
+	u32 count;
+	struct page *cache[128];
+};
+
+struct page_pool {
+	struct page_pool_params p;
+	long frag_users;
+	struct page *frag_page;
+	unsigned int frag_offset;
+	u32 pages_state_hold_cnt;
+	struct delayed_work release_dw;
+	void (*disconnect)(void *);
+	unsigned long defer_start;
+	unsigned long defer_warn;
+	u32 xdp_mem_id;
+	struct pp_alloc_cache alloc;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct ptr_ring ring;
+	atomic_t pages_state_release_cnt;
+	refcount_t user_cnt;
+	u64 destroy_cnt;
+	u64 android_kabi_reserved1;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct veth_q_stat_desc {
+	char desc[32];
+	size_t offset;
+};
+
+enum {
+	VETH_INFO_UNSPEC = 0,
+	VETH_INFO_PEER = 1,
+	__VETH_INFO_MAX = 2,
+};
+
+struct veth_stats {
+	u64 rx_drops;
+	u64 xdp_packets;
+	u64 xdp_bytes;
+	u64 xdp_redirect;
+	u64 xdp_drops;
+	u64 xdp_tx;
+	u64 xdp_tx_err;
+	u64 peer_tq_xdp_xmit;
+	u64 peer_tq_xdp_xmit_err;
+};
+
+struct veth_rq_stats {
+	struct veth_stats vs;
+	struct u64_stats_sync syncp;
+};
+
+struct veth_rq {
+	struct napi_struct xdp_napi;
+	struct napi_struct __attribute__((btf_type_tag("rcu"))) *napi;
+	struct net_device *dev;
+	struct bpf_prog __attribute__((btf_type_tag("rcu"))) *xdp_prog;
+	struct xdp_mem_info xdp_mem;
+	struct veth_rq_stats stats;
+	bool rx_notify_masked;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct ptr_ring xdp_ring;
+	struct xdp_rxq_info xdp_rxq;
+	struct page_pool *page_pool;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct ifinfomsg {
+	unsigned char ifi_family;
+	unsigned char __ifi_pad;
+	unsigned short ifi_type;
+	int ifi_index;
+	unsigned int ifi_flags;
+	unsigned int ifi_change;
+};
+
+struct veth_priv {
+	struct net_device __attribute__((btf_type_tag("rcu"))) *peer;
+	atomic64_t dropped;
+	struct bpf_prog *_xdp_prog;
+	struct veth_rq *rq;
+	unsigned int requested_headroom;
+};
+
+struct veth_xdp_tx_bq {
+	struct xdp_frame *q[16];
+	unsigned int count;
+};
+
+struct veth_xdp_buff {
+	struct xdp_buff xdp;
+	struct sk_buff *skb;
+};
+
+struct uio_mem;
+
+struct map_sysfs_entry {
+	struct attribute attr;
+	ssize_t (*show)(struct uio_mem *, char *);
+	ssize_t (*store)(struct uio_mem *, const char *, size_t);
+};
+
+struct uio_map;
+
+struct uio_mem {
+	const char *name;
+	phys_addr_t addr;
+	unsigned long offs;
+	resource_size_t size;
+	int memtype;
+	void *internal_addr;
+	struct uio_map *map;
+};
+
+struct uio_map {
+	struct kobject kobj;
+	struct uio_mem *mem;
+};
+
+struct uio_port;
+
+struct portio_sysfs_entry {
+	struct attribute attr;
+	ssize_t (*show)(struct uio_port *, char *);
+	ssize_t (*store)(struct uio_port *, const char *, size_t);
+};
+
+struct uio_portio;
+
+struct uio_port {
+	const char *name;
+	unsigned long start;
+	unsigned long size;
+	int porttype;
+	struct uio_portio *portio;
+};
+
+struct uio_portio {
+	struct kobject kobj;
+	struct uio_port *port;
+};
+
+struct uio_info;
+
+struct uio_device {
+	struct module *owner;
+	struct device dev;
+	int minor;
+	atomic_t event;
+	struct fasync_struct *async_queue;
+	wait_queue_head_t wait;
+	struct uio_info *info;
+	struct mutex info_lock;
+	struct kobject *map_dir;
+	struct kobject *portio_dir;
+	u64 android_kabi_reserved1;
+};
+
+struct uio_info {
+	struct uio_device *uio_dev;
+	const char *name;
+	const char *version;
+	struct uio_mem mem[5];
+	struct uio_port port[5];
+	long irq;
+	unsigned long irq_flags;
+	void *priv;
+	irqreturn_t (*handler)(int, struct uio_info *);
+	int (*mmap)(struct uio_info *, struct vm_area_struct *);
+	int (*open)(struct uio_info *, struct inode *);
+	int (*release)(struct uio_info *, struct inode *);
+	int (*irqcontrol)(struct uio_info *, s32);
+	u64 android_kabi_reserved1;
+};
+
+struct uio_listener {
+	struct uio_device *dev;
+	s32 event_count;
+};
+
+enum usb_otg_state {
+	OTG_STATE_UNDEFINED = 0,
+	OTG_STATE_B_IDLE = 1,
+	OTG_STATE_B_SRP_INIT = 2,
+	OTG_STATE_B_PERIPHERAL = 3,
+	OTG_STATE_B_WAIT_ACON = 4,
+	OTG_STATE_B_HOST = 5,
+	OTG_STATE_A_IDLE = 6,
+	OTG_STATE_A_WAIT_VRISE = 7,
+	OTG_STATE_A_WAIT_BCON = 8,
+	OTG_STATE_A_HOST = 9,
+	OTG_STATE_A_SUSPEND = 10,
+	OTG_STATE_A_PERIPHERAL = 11,
+	OTG_STATE_A_WAIT_VFALL = 12,
+	OTG_STATE_A_VBUS_ERR = 13,
+};
+
+enum usb_device_speed {
+	USB_SPEED_UNKNOWN = 0,
+	USB_SPEED_LOW = 1,
+	USB_SPEED_FULL = 2,
+	USB_SPEED_HIGH = 3,
+	USB_SPEED_WIRELESS = 4,
+	USB_SPEED_SUPER = 5,
+	USB_SPEED_SUPER_PLUS = 6,
+};
+
+enum usb_ssp_rate {
+	USB_SSP_GEN_UNKNOWN = 0,
+	USB_SSP_GEN_2x1 = 1,
+	USB_SSP_GEN_1x2 = 2,
+	USB_SSP_GEN_2x2 = 3,
+};
+
+enum usb_device_state {
+	USB_STATE_NOTATTACHED = 0,
+	USB_STATE_ATTACHED = 1,
+	USB_STATE_POWERED = 2,
+	USB_STATE_RECONNECTING = 3,
+	USB_STATE_UNAUTHENTICATED = 4,
+	USB_STATE_DEFAULT = 5,
+	USB_STATE_ADDRESS = 6,
+	USB_STATE_CONFIGURED = 7,
+	USB_STATE_SUSPENDED = 8,
+};
+
+enum usb_dr_mode {
+	USB_DR_MODE_UNKNOWN = 0,
+	USB_DR_MODE_HOST = 1,
+	USB_DR_MODE_PERIPHERAL = 2,
+	USB_DR_MODE_OTG = 3,
+};
+
+struct usb_endpoint_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bEndpointAddress;
+	__u8 bmAttributes;
+	__le16 wMaxPacketSize;
+	__u8 bInterval;
+	__u8 bRefresh;
+	__u8 bSynchAddress;
+} __attribute__((packed));
+
+struct usb_otg_caps {
+	u16 otg_rev;
+	bool hnp_support;
+	bool srp_support;
+	bool adp_support;
+};
+
+enum usb_interface_condition {
+	USB_INTERFACE_UNBOUND = 0,
+	USB_INTERFACE_BINDING = 1,
+	USB_INTERFACE_BOUND = 2,
+	USB_INTERFACE_UNBINDING = 3,
+};
+
+enum usb_wireless_status {
+	USB_WIRELESS_STATUS_NA = 0,
+	USB_WIRELESS_STATUS_DISCONNECTED = 1,
+	USB_WIRELESS_STATUS_CONNECTED = 2,
+};
+
+enum usb3_link_state {
+	USB3_LPM_U0 = 0,
+	USB3_LPM_U1 = 1,
+	USB3_LPM_U2 = 2,
+	USB3_LPM_U3 = 3,
+};
+
+enum usb_phy_type {
+	USB_PHY_TYPE_UNDEFINED = 0,
+	USB_PHY_TYPE_USB2 = 1,
+	USB_PHY_TYPE_USB3 = 2,
+};
+
+enum usb_phy_events {
+	USB_EVENT_NONE = 0,
+	USB_EVENT_VBUS = 1,
+	USB_EVENT_ID = 2,
+	USB_EVENT_CHARGER = 3,
+	USB_EVENT_ENUMERATED = 4,
+};
+
+enum usb_charger_type {
+	UNKNOWN_TYPE = 0,
+	SDP_TYPE = 1,
+	DCP_TYPE = 2,
+	CDP_TYPE = 3,
+	ACA_TYPE = 4,
+};
+
+enum usb_charger_state {
+	USB_CHARGER_DEFAULT = 0,
+	USB_CHARGER_PRESENT = 1,
+	USB_CHARGER_ABSENT = 2,
+};
+
+enum usb_dev_authorize_policy {
+	USB_DEVICE_AUTHORIZE_NONE = 0,
+	USB_DEVICE_AUTHORIZE_ALL = 1,
+	USB_DEVICE_AUTHORIZE_INTERNAL = 2,
+};
+
+enum usb_port_connect_type {
+	USB_PORT_CONNECT_TYPE_UNKNOWN = 0,
+	USB_PORT_CONNECT_TYPE_HOT_PLUG = 1,
+	USB_PORT_CONNECT_TYPE_HARD_WIRED = 2,
+	USB_PORT_NOT_USED = 3,
+};
+
+struct usb_host_interface;
+
+struct usb_interface_assoc_descriptor;
+
+struct usb_interface {
+	struct usb_host_interface *altsetting;
+	struct usb_host_interface *cur_altsetting;
+	unsigned int num_altsetting;
+	struct usb_interface_assoc_descriptor *intf_assoc;
+	int minor;
+	enum usb_interface_condition condition;
+	unsigned int sysfs_files_created: 1;
+	unsigned int ep_devs_created: 1;
+	unsigned int unregistering: 1;
+	unsigned int needs_remote_wakeup: 1;
+	unsigned int needs_altsetting0: 1;
+	unsigned int needs_binding: 1;
+	unsigned int resetting_device: 1;
+	unsigned int authorized: 1;
+	enum usb_wireless_status wireless_status;
+	struct work_struct wireless_status_work;
+	struct device dev;
+	struct device *usb_dev;
+	struct work_struct reset_ws;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct usb_interface_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bInterfaceNumber;
+	__u8 bAlternateSetting;
+	__u8 bNumEndpoints;
+	__u8 bInterfaceClass;
+	__u8 bInterfaceSubClass;
+	__u8 bInterfaceProtocol;
+	__u8 iInterface;
+};
+
+struct usb_host_endpoint;
+
+struct usb_host_interface {
+	struct usb_interface_descriptor desc;
+	int extralen;
+	unsigned char *extra;
+	struct usb_host_endpoint *endpoint;
+	char *string;
+};
+
+struct usb_ss_ep_comp_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bMaxBurst;
+	__u8 bmAttributes;
+	__le16 wBytesPerInterval;
+};
+
+struct usb_ssp_isoc_ep_comp_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__le16 wReseved;
+	__le32 dwBytesPerInterval;
+};
+
+struct ep_device;
+
+struct usb_host_endpoint {
+	struct usb_endpoint_descriptor desc;
+	struct usb_ss_ep_comp_descriptor ss_ep_comp;
+	struct usb_ssp_isoc_ep_comp_descriptor ssp_isoc_ep_comp;
+	long: 0;
+	struct list_head urb_list;
+	void *hcpriv;
+	struct ep_device *ep_dev;
+	unsigned char *extra;
+	int extralen;
+	int enabled;
+	int streams;
+	long: 0;
+} __attribute__((packed));
+
+struct usb_interface_assoc_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bFirstInterface;
+	__u8 bInterfaceCount;
+	__u8 bFunctionClass;
+	__u8 bFunctionSubClass;
+	__u8 bFunctionProtocol;
+	__u8 iFunction;
+};
+
+struct usb_descriptor_header {
+	__u8 bLength;
+	__u8 bDescriptorType;
+};
+
+struct usb_device;
+
+struct each_dev_arg {
+	void *data;
+	int (*fn)(struct usb_device *, void *);
+};
+
+struct usb_device_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__le16 bcdUSB;
+	__u8 bDeviceClass;
+	__u8 bDeviceSubClass;
+	__u8 bDeviceProtocol;
+	__u8 bMaxPacketSize0;
+	__le16 idVendor;
+	__le16 idProduct;
+	__le16 bcdDevice;
+	__u8 iManufacturer;
+	__u8 iProduct;
+	__u8 iSerialNumber;
+	__u8 bNumConfigurations;
+};
+
+struct usb2_lpm_parameters {
+	unsigned int besl;
+	int timeout;
+};
+
+struct usb3_lpm_parameters {
+	unsigned int mel;
+	unsigned int pel;
+	unsigned int sel;
+	int timeout;
+};
+
+struct usb_tt;
+
+struct usb_bus;
+
+struct usb_host_bos;
+
+struct usb_host_config;
+
+struct usb_device {
+	int devnum;
+	char devpath[16];
+	u32 route;
+	enum usb_device_state state;
+	enum usb_device_speed speed;
+	unsigned int rx_lanes;
+	unsigned int tx_lanes;
+	enum usb_ssp_rate ssp_rate;
+	struct usb_tt *tt;
+	int ttport;
+	unsigned int toggle[2];
+	struct usb_device *parent;
+	struct usb_bus *bus;
+	struct usb_host_endpoint ep0;
+	struct device dev;
+	struct usb_device_descriptor descriptor;
+	struct usb_host_bos *bos;
+	struct usb_host_config *config;
+	struct usb_host_config *actconfig;
+	struct usb_host_endpoint *ep_in[16];
+	struct usb_host_endpoint *ep_out[16];
+	char **rawdescriptors;
+	unsigned short bus_mA;
+	u8 portnum;
+	u8 level;
+	u8 devaddr;
+	unsigned int can_submit: 1;
+	unsigned int persist_enabled: 1;
+	unsigned int reset_in_progress: 1;
+	unsigned int have_langid: 1;
+	unsigned int authorized: 1;
+	unsigned int authenticated: 1;
+	unsigned int lpm_capable: 1;
+	unsigned int lpm_devinit_allow: 1;
+	unsigned int usb2_hw_lpm_capable: 1;
+	unsigned int usb2_hw_lpm_besl_capable: 1;
+	unsigned int usb2_hw_lpm_enabled: 1;
+	unsigned int usb2_hw_lpm_allowed: 1;
+	unsigned int usb3_lpm_u1_enabled: 1;
+	unsigned int usb3_lpm_u2_enabled: 1;
+	int string_langid;
+	char *product;
+	char *manufacturer;
+	char *serial;
+	struct list_head filelist;
+	int maxchild;
+	u32 quirks;
+	atomic_t urbnum;
+	unsigned long active_duration;
+	unsigned long connect_time;
+	unsigned int do_remote_wakeup: 1;
+	unsigned int reset_resume: 1;
+	unsigned int port_is_suspended: 1;
+	int slot_id;
+	struct usb2_lpm_parameters l1_params;
+	struct usb3_lpm_parameters u1_params;
+	struct usb3_lpm_parameters u2_params;
+	unsigned int lpm_disable_count;
+	u16 hub_delay;
+	unsigned int use_generic_driver: 1;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct usb_tt {
+	struct usb_device *hub;
+	int multi;
+	unsigned int think_time;
+	void *hcpriv;
+	spinlock_t lock;
+	struct list_head clear_list;
+	struct work_struct clear_work;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct usb_devmap {
+	unsigned long devicemap[2];
+};
+
+struct mon_bus;
+
+struct usb_bus {
+	struct device *controller;
+	struct device *sysdev;
+	int busnum;
+	const char *bus_name;
+	u8 uses_pio_for_control;
+	u8 otg_port;
+	unsigned int is_b_host: 1;
+	unsigned int b_hnp_enable: 1;
+	unsigned int no_stop_on_short: 1;
+	unsigned int no_sg_constraint: 1;
+	unsigned int sg_tablesize;
+	int devnum_next;
+	struct mutex devnum_next_mutex;
+	struct usb_devmap devmap;
+	struct usb_device *root_hub;
+	struct usb_bus *hs_companion;
+	int bandwidth_allocated;
+	int bandwidth_int_reqs;
+	int bandwidth_isoc_reqs;
+	unsigned int resuming_ports;
+	struct mon_bus *mon_bus;
+	int monitored;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct usb_bos_descriptor;
+
+struct usb_ext_cap_descriptor;
+
+struct usb_ss_cap_descriptor;
+
+struct usb_ssp_cap_descriptor;
+
+struct usb_ss_container_id_descriptor;
+
+struct usb_ptm_cap_descriptor;
+
+struct usb_host_bos {
+	struct usb_bos_descriptor *desc;
+	struct usb_ext_cap_descriptor *ext_cap;
+	struct usb_ss_cap_descriptor *ss_cap;
+	struct usb_ssp_cap_descriptor *ssp_cap;
+	struct usb_ss_container_id_descriptor *ss_id;
+	struct usb_ptm_cap_descriptor *ptm_cap;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct usb_bos_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__le16 wTotalLength;
+	__u8 bNumDeviceCaps;
+} __attribute__((packed));
+
+struct usb_ext_cap_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDevCapabilityType;
+	__le32 bmAttributes;
+} __attribute__((packed));
+
+struct usb_ss_cap_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDevCapabilityType;
+	__u8 bmAttributes;
+	__le16 wSpeedSupported;
+	__u8 bFunctionalitySupport;
+	__u8 bU1devExitLat;
+	__le16 bU2DevExitLat;
+};
+
+struct usb_ssp_cap_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDevCapabilityType;
+	__u8 bReserved;
+	__le32 bmAttributes;
+	__le16 wFunctionalitySupport;
+	__le16 wReserved;
+	union {
+		__le32 legacy_padding;
+		struct {
+			struct {} __empty_bmSublinkSpeedAttr;
+			__le32 bmSublinkSpeedAttr[0];
+		};
+	};
+};
+
+struct usb_ss_container_id_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDevCapabilityType;
+	__u8 bReserved;
+	__u8 ContainerID[16];
+};
+
+struct usb_ptm_cap_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDevCapabilityType;
+};
+
+struct usb_config_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__le16 wTotalLength;
+	__u8 bNumInterfaces;
+	__u8 bConfigurationValue;
+	__u8 iConfiguration;
+	__u8 bmAttributes;
+	__u8 bMaxPower;
+} __attribute__((packed));
+
+struct usb_interface_cache;
+
+struct usb_host_config {
+	struct usb_config_descriptor desc;
+	char *string;
+	struct usb_interface_assoc_descriptor *intf_assoc[16];
+	struct usb_interface *interface[32];
+	struct usb_interface_cache *intf_cache[32];
+	unsigned char *extra;
+	int extralen;
+};
+
+struct usb_interface_cache {
+	unsigned int num_altsetting;
+	struct kref ref;
+	struct usb_host_interface altsetting[0];
+};
+
+struct giveback_urb_bh {
+	bool running;
+	bool high_prio;
+	spinlock_t lock;
+	struct list_head head;
+	struct tasklet_struct bh;
+	struct usb_host_endpoint *completing_ep;
+};
+
+struct urb;
+
+struct hc_driver;
+
+struct usb_phy;
+
+struct usb_phy_roothub;
+
+struct usb_hcd {
+	struct usb_bus self;
+	struct kref kref;
+	const char *product_desc;
+	int speed;
+	char irq_descr[24];
+	struct timer_list rh_timer;
+	struct urb *status_urb;
+	struct work_struct wakeup_work;
+	struct work_struct died_work;
+	const struct hc_driver *driver;
+	struct usb_phy *usb_phy;
+	struct usb_phy_roothub *phy_roothub;
+	unsigned long flags;
+	enum usb_dev_authorize_policy dev_policy;
+	unsigned int rh_registered: 1;
+	unsigned int rh_pollable: 1;
+	unsigned int msix_enabled: 1;
+	unsigned int msi_enabled: 1;
+	unsigned int skip_phy_initialization: 1;
+	unsigned int uses_new_polling: 1;
+	unsigned int has_tt: 1;
+	unsigned int amd_resume_bug: 1;
+	unsigned int can_do_streams: 1;
+	unsigned int tpl_support: 1;
+	unsigned int cant_recv_wakeups: 1;
+	unsigned int irq;
+	void *regs;
+	resource_size_t rsrc_start;
+	resource_size_t rsrc_len;
+	unsigned int power_budget;
+	struct giveback_urb_bh high_prio_bh;
+	struct giveback_urb_bh low_prio_bh;
+	struct mutex *address0_mutex;
+	struct mutex *bandwidth_mutex;
+	struct usb_hcd *shared_hcd;
+	struct usb_hcd *primary_hcd;
+	struct dma_pool *pool[4];
+	int state;
+	struct gen_pool *localmem_pool;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+	unsigned long hcd_priv[0];
+};
+
+typedef void (*usb_complete_t)(struct urb *);
+
+struct usb_iso_packet_descriptor {
+	unsigned int offset;
+	unsigned int length;
+	unsigned int actual_length;
+	int status;
+};
+
+struct usb_anchor;
+
+struct urb {
+	struct kref kref;
+	int unlinked;
+	void *hcpriv;
+	atomic_t use_count;
+	atomic_t reject;
+	struct list_head urb_list;
+	struct list_head anchor_list;
+	struct usb_anchor *anchor;
+	struct usb_device *dev;
+	struct usb_host_endpoint *ep;
+	unsigned int pipe;
+	unsigned int stream_id;
+	int status;
+	unsigned int transfer_flags;
+	void *transfer_buffer;
+	dma_addr_t transfer_dma;
+	struct scatterlist *sg;
+	int num_mapped_sgs;
+	int num_sgs;
+	u32 transfer_buffer_length;
+	u32 actual_length;
+	unsigned char *setup_packet;
+	dma_addr_t setup_dma;
+	int start_frame;
+	int number_of_packets;
+	int interval;
+	int error_count;
+	void *context;
+	usb_complete_t complete;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+	struct usb_iso_packet_descriptor iso_frame_desc[0];
+};
+
+struct usb_anchor {
+	struct list_head urb_list;
+	wait_queue_head_t wait;
+	spinlock_t lock;
+	atomic_t suspend_wakeups;
+	unsigned int poisoned: 1;
+};
+
+struct hc_driver {
+	const char *description;
+	const char *product_desc;
+	size_t hcd_priv_size;
+	irqreturn_t (*irq)(struct usb_hcd *);
+	int flags;
+	int (*reset)(struct usb_hcd *);
+	int (*start)(struct usb_hcd *);
+	int (*pci_suspend)(struct usb_hcd *, bool);
+	int (*pci_resume)(struct usb_hcd *, pm_message_t);
+	int (*pci_poweroff_late)(struct usb_hcd *, bool);
+	void (*stop)(struct usb_hcd *);
+	void (*shutdown)(struct usb_hcd *);
+	int (*get_frame_number)(struct usb_hcd *);
+	int (*urb_enqueue)(struct usb_hcd *, struct urb *, gfp_t);
+	int (*urb_dequeue)(struct usb_hcd *, struct urb *, int);
+	int (*map_urb_for_dma)(struct usb_hcd *, struct urb *, gfp_t);
+	void (*unmap_urb_for_dma)(struct usb_hcd *, struct urb *);
+	void (*endpoint_disable)(struct usb_hcd *, struct usb_host_endpoint *);
+	void (*endpoint_reset)(struct usb_hcd *, struct usb_host_endpoint *);
+	int (*hub_status_data)(struct usb_hcd *, char *);
+	int (*hub_control)(struct usb_hcd *, u16, u16, u16, char *, u16);
+	int (*bus_suspend)(struct usb_hcd *);
+	int (*bus_resume)(struct usb_hcd *);
+	int (*start_port_reset)(struct usb_hcd *, unsigned int);
+	unsigned long (*get_resuming_ports)(struct usb_hcd *);
+	void (*relinquish_port)(struct usb_hcd *, int);
+	int (*port_handed_over)(struct usb_hcd *, int);
+	void (*clear_tt_buffer_complete)(struct usb_hcd *, struct usb_host_endpoint *);
+	int (*alloc_dev)(struct usb_hcd *, struct usb_device *);
+	void (*free_dev)(struct usb_hcd *, struct usb_device *);
+	int (*alloc_streams)(struct usb_hcd *, struct usb_device *, struct usb_host_endpoint **, unsigned int, unsigned int, gfp_t);
+	int (*free_streams)(struct usb_hcd *, struct usb_device *, struct usb_host_endpoint **, unsigned int, gfp_t);
+	int (*add_endpoint)(struct usb_hcd *, struct usb_device *, struct usb_host_endpoint *);
+	int (*drop_endpoint)(struct usb_hcd *, struct usb_device *, struct usb_host_endpoint *);
+	int (*check_bandwidth)(struct usb_hcd *, struct usb_device *);
+	void (*reset_bandwidth)(struct usb_hcd *, struct usb_device *);
+	int (*address_device)(struct usb_hcd *, struct usb_device *, unsigned int);
+	int (*enable_device)(struct usb_hcd *, struct usb_device *);
+	int (*update_hub_device)(struct usb_hcd *, struct usb_device *, struct usb_tt *, gfp_t);
+	int (*reset_device)(struct usb_hcd *, struct usb_device *);
+	int (*update_device)(struct usb_hcd *, struct usb_device *);
+	int (*set_usb2_hw_lpm)(struct usb_hcd *, struct usb_device *, int);
+	int (*enable_usb3_lpm_timeout)(struct usb_hcd *, struct usb_device *, enum usb3_link_state);
+	int (*disable_usb3_lpm_timeout)(struct usb_hcd *, struct usb_device *, enum usb3_link_state);
+	int (*find_raw_port_number)(struct usb_hcd *, int);
+	int (*port_power)(struct usb_hcd *, int, bool);
+	int (*submit_single_step_set_feature)(struct usb_hcd *, struct urb *, int);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct usb_charger_current {
+	unsigned int sdp_min;
+	unsigned int sdp_max;
+	unsigned int dcp_min;
+	unsigned int dcp_max;
+	unsigned int cdp_min;
+	unsigned int cdp_max;
+	unsigned int aca_min;
+	unsigned int aca_max;
+};
+
+struct usb_otg;
+
+struct usb_phy_io_ops;
+
+struct extcon_dev;
+
+struct usb_phy {
+	struct device *dev;
+	const char *label;
+	unsigned int flags;
+	enum usb_phy_type type;
+	enum usb_phy_events last_event;
+	struct usb_otg *otg;
+	struct device *io_dev;
+	struct usb_phy_io_ops *io_ops;
+	void *io_priv;
+	struct extcon_dev *edev;
+	struct extcon_dev *id_edev;
+	struct notifier_block vbus_nb;
+	struct notifier_block id_nb;
+	struct notifier_block type_nb;
+	enum usb_charger_type chg_type;
+	enum usb_charger_state chg_state;
+	struct usb_charger_current chg_cur;
+	struct work_struct chg_work;
+	struct atomic_notifier_head notifier;
+	u16 port_status;
+	u16 port_change;
+	struct list_head head;
+	int (*init)(struct usb_phy *);
+	void (*shutdown)(struct usb_phy *);
+	int (*set_vbus)(struct usb_phy *, int);
+	int (*set_power)(struct usb_phy *, unsigned int);
+	int (*set_suspend)(struct usb_phy *, int);
+	int (*set_wakeup)(struct usb_phy *, bool);
+	int (*notify_connect)(struct usb_phy *, enum usb_device_speed);
+	int (*notify_disconnect)(struct usb_phy *, enum usb_device_speed);
+	enum usb_charger_type (*charger_detect)(struct usb_phy *);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct usb_gadget;
+
+struct usb_otg {
+	u8 default_a;
+	struct phy *phy;
+	struct usb_phy *usb_phy;
+	struct usb_bus *host;
+	struct usb_gadget *gadget;
+	enum usb_otg_state state;
+	int (*set_host)(struct usb_otg *, struct usb_bus *);
+	int (*set_peripheral)(struct usb_otg *, struct usb_gadget *);
+	int (*set_vbus)(struct usb_otg *, bool);
+	int (*start_srp)(struct usb_otg *);
+	int (*start_hnp)(struct usb_otg *);
+	u64 android_kabi_reserved1;
+};
+
+struct usb_phy_io_ops {
+	int (*read)(struct usb_phy *, u32);
+	int (*write)(struct usb_phy *, u32, u32);
+};
+
+struct usb_hub_status {
+	__le16 wHubStatus;
+	__le16 wHubChange;
+};
+
+struct usb_port_status {
+	__le16 wPortStatus;
+	__le16 wPortChange;
+	__le32 dwExtPortStatus;
+};
+
+struct usb_hub_descriptor;
+
+struct usb_port;
+
+struct usb_hub {
+	struct device *intfdev;
+	struct usb_device *hdev;
+	struct kref kref;
+	struct urb *urb;
+	u8 (*buffer)[8];
+	union {
+		struct usb_hub_status hub;
+		struct usb_port_status port;
+	} *status;
+	struct mutex status_mutex;
+	int error;
+	int nerrors;
+	unsigned long event_bits[1];
+	unsigned long change_bits[1];
+	unsigned long removed_bits[1];
+	unsigned long wakeup_bits[1];
+	unsigned long power_bits[1];
+	unsigned long child_usage_bits[1];
+	unsigned long warm_reset_bits[1];
+	struct usb_hub_descriptor *descriptor;
+	struct usb_tt tt;
+	unsigned int mA_per_port;
+	unsigned int wakeup_enabled_descendants;
+	unsigned int limited_power: 1;
+	unsigned int quiescing: 1;
+	unsigned int disconnected: 1;
+	unsigned int in_reset: 1;
+	unsigned int quirk_disable_autosuspend: 1;
+	unsigned int quirk_check_port_auto_suspend: 1;
+	unsigned int has_indicators: 1;
+	u8 indicator[31];
+	struct delayed_work leds;
+	struct delayed_work init_work;
+	struct work_struct events;
+	spinlock_t irq_urb_lock;
+	struct timer_list irq_urb_retry;
+	struct usb_port **ports;
+	struct list_head onboard_hub_devs;
+};
+
+struct usb_hub_descriptor {
+	__u8 bDescLength;
+	__u8 bDescriptorType;
+	__u8 bNbrPorts;
+	__le16 wHubCharacteristics;
+	__u8 bPwrOn2PwrGood;
+	__u8 bHubContrCurrent;
+	union {
+		struct {
+			__u8 DeviceRemovable[4];
+			__u8 PortPwrCtrlMask[4];
+		} hs;
+		struct {
+			__u8 bHubHdrDecLat;
+			__le16 wHubDelay;
+			__le16 DeviceRemovable;
+		} __attribute__((packed)) ss;
+	} u;
+} __attribute__((packed));
+
+typedef u32 usb_port_location_t;
+
+struct usb_dev_state;
+
+struct usb_port {
+	struct usb_device *child;
+	struct device dev;
+	struct usb_dev_state *port_owner;
+	struct usb_port *peer;
+	struct dev_pm_qos_request *req;
+	enum usb_port_connect_type connect_type;
+	enum usb_device_state state;
+	struct kernfs_node *state_kn;
+	usb_port_location_t location;
+	struct mutex status_lock;
+	u32 over_current_count;
+	u8 portnum;
+	u32 quirks;
+	unsigned int early_stop: 1;
+	unsigned int ignore_event: 1;
+	unsigned int is_superspeed: 1;
+	unsigned int usb3_lpm_u1_permit: 1;
+	unsigned int usb3_lpm_u2_permit: 1;
+};
+
+struct usbdrv_wrap {
+	struct device_driver driver;
+	int for_devices;
+};
+
+struct usb_device_id;
+
+struct usb_device_driver {
+	const char *name;
+	bool (*match)(struct usb_device *);
+	int (*probe)(struct usb_device *);
+	void (*disconnect)(struct usb_device *);
+	int (*suspend)(struct usb_device *, pm_message_t);
+	int (*resume)(struct usb_device *, pm_message_t);
+	const struct attribute_group **dev_groups;
+	struct usbdrv_wrap drvwrap;
+	const struct usb_device_id *id_table;
+	unsigned int supports_autosuspend: 1;
+	unsigned int generic_subclass: 1;
+};
+
+struct usb_device_id {
+	__u16 match_flags;
+	__u16 idVendor;
+	__u16 idProduct;
+	__u16 bcdDevice_lo;
+	__u16 bcdDevice_hi;
+	__u8 bDeviceClass;
+	__u8 bDeviceSubClass;
+	__u8 bDeviceProtocol;
+	__u8 bInterfaceClass;
+	__u8 bInterfaceSubClass;
+	__u8 bInterfaceProtocol;
+	__u8 bInterfaceNumber;
+	kernel_ulong_t driver_info;
+};
+
+struct usb_dynids {
+	spinlock_t lock;
+	struct list_head list;
+};
+
+struct usb_driver {
+	const char *name;
+	int (*probe)(struct usb_interface *, const struct usb_device_id *);
+	void (*disconnect)(struct usb_interface *);
+	int (*unlocked_ioctl)(struct usb_interface *, unsigned int, void *);
+	int (*suspend)(struct usb_interface *, pm_message_t);
+	int (*resume)(struct usb_interface *);
+	int (*reset_resume)(struct usb_interface *);
+	int (*pre_reset)(struct usb_interface *);
+	int (*post_reset)(struct usb_interface *);
+	const struct usb_device_id *id_table;
+	const struct attribute_group **dev_groups;
+	struct usb_dynids dynids;
+	struct usbdrv_wrap drvwrap;
+	unsigned int no_dynamic_id: 1;
+	unsigned int supports_autosuspend: 1;
+	unsigned int disable_hub_initiated_lpm: 1;
+	unsigned int soft_unbind: 1;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct find_interface_arg {
+	int minor;
+	struct device_driver *drv;
+};
+
+enum hub_led_mode {
+	INDICATOR_AUTO = 0,
+	INDICATOR_CYCLE = 1,
+	INDICATOR_GREEN_BLINK = 2,
+	INDICATOR_GREEN_BLINK_OFF = 3,
+	INDICATOR_AMBER_BLINK = 4,
+	INDICATOR_AMBER_BLINK_OFF = 5,
+	INDICATOR_ALT_BLINK = 6,
+	INDICATOR_ALT_BLINK_OFF = 7,
+} __attribute__((mode(byte)));
+
+enum hub_quiescing_type {
+	HUB_DISCONNECT = 0,
+	HUB_PRE_RESET = 1,
+	HUB_SUSPEND = 2,
+};
+
+enum hub_activation_type {
+	HUB_INIT = 0,
+	HUB_INIT2 = 1,
+	HUB_INIT3 = 2,
+	HUB_POST_RESET = 3,
+	HUB_RESUME = 4,
+	HUB_RESET_RESUME = 5,
+};
+
+struct usb_tt_clear {
+	struct list_head clear_list;
+	unsigned int tt;
+	u16 devinfo;
+	struct usb_hcd *hcd;
+	struct usb_host_endpoint *ep;
+};
+
+struct usb_qualifier_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__le16 bcdUSB;
+	__u8 bDeviceClass;
+	__u8 bDeviceSubClass;
+	__u8 bDeviceProtocol;
+	__u8 bMaxPacketSize0;
+	__u8 bNumConfigurations;
+	__u8 bRESERVED;
+};
+
+struct usbdevfs_hub_portinfo {
+	char nports;
+	char port[127];
+};
+
+struct usb_set_sel_req {
+	__u8 u1_sel;
+	__u8 u1_pel;
+	__le16 u2_sel;
+	__le16 u2_pel;
+};
+
+struct usb_mon_operations {
+	void (*urb_submit)(struct usb_bus *, struct urb *);
+	void (*urb_submit_error)(struct usb_bus *, struct urb *, int);
+	void (*urb_complete)(struct usb_bus *, struct urb *, int);
+};
+
+enum usb_led_event {
+	USB_LED_EVENT_HOST = 0,
+	USB_LED_EVENT_GADGET = 1,
+};
+
+struct usb_ctrlrequest {
+	__u8 bRequestType;
+	__u8 bRequest;
+	__le16 wValue;
+	__le16 wIndex;
+	__le16 wLength;
+};
+
+struct usb_cdc_union_desc {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubType;
+	__u8 bMasterInterface0;
+	__u8 bSlaveInterface0;
+};
+
+struct usb_cdc_country_functional_desc {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubType;
+	__u8 iCountryCodeRelDate;
+	__le16 wCountyCode0;
+};
+
+struct usb_cdc_header_desc {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubType;
+	__le16 bcdCDC;
+} __attribute__((packed));
+
+struct usb_cdc_acm_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubType;
+	__u8 bmCapabilities;
+};
+
+struct usb_cdc_ether_desc {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubType;
+	__u8 iMACAddress;
+	__le32 bmEthernetStatistics;
+	__le16 wMaxSegmentSize;
+	__le16 wNumberMCFilters;
+	__u8 bNumberPowerFilters;
+} __attribute__((packed));
+
+struct usb_cdc_call_mgmt_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubType;
+	__u8 bmCapabilities;
+	__u8 bDataInterface;
+};
+
+struct usb_cdc_dmm_desc {
+	__u8 bFunctionLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u16 bcdVersion;
+	__le16 wMaxCommand;
+} __attribute__((packed));
+
+struct usb_cdc_mdlm_desc {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubType;
+	__le16 bcdVersion;
+	__u8 bGUID[16];
+} __attribute__((packed));
+
+struct usb_cdc_mdlm_detail_desc {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubType;
+	__u8 bGuidDescriptorType;
+	__u8 bDetailData[0];
+};
+
+struct usb_cdc_ncm_desc {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubType;
+	__le16 bcdNcmVersion;
+	__u8 bmNetworkCapabilities;
+} __attribute__((packed));
+
+struct usb_cdc_mbim_desc {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubType;
+	__le16 bcdMBIMVersion;
+	__le16 wMaxControlMessage;
+	__u8 bNumberFilters;
+	__u8 bMaxFilterSize;
+	__le16 wMaxSegmentSize;
+	__u8 bmNetworkCapabilities;
+} __attribute__((packed));
+
+struct usb_cdc_mbim_extended_desc {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubType;
+	__le16 bcdMBIMExtendedVersion;
+	__u8 bMaxOutstandingCommandMessages;
+	__le16 wMTU;
+} __attribute__((packed));
+
+struct set_config_request {
+	struct usb_device *udev;
+	int config;
+	struct work_struct work;
+	struct list_head node;
+};
+
+struct usb_sg_request {
+	int status;
+	size_t bytes;
+	spinlock_t lock;
+	struct usb_device *dev;
+	int pipe;
+	int entries;
+	struct urb **urbs;
+	int count;
+	struct completion complete;
+};
+
+struct api_context {
+	struct completion done;
+	int status;
+};
+
+struct usb_cdc_network_terminal_desc;
+
+struct usb_cdc_obex_desc;
+
+struct usb_cdc_parsed_header {
+	struct usb_cdc_union_desc *usb_cdc_union_desc;
+	struct usb_cdc_header_desc *usb_cdc_header_desc;
+	struct usb_cdc_call_mgmt_descriptor *usb_cdc_call_mgmt_descriptor;
+	struct usb_cdc_acm_descriptor *usb_cdc_acm_descriptor;
+	struct usb_cdc_country_functional_desc *usb_cdc_country_functional_desc;
+	struct usb_cdc_network_terminal_desc *usb_cdc_network_terminal_desc;
+	struct usb_cdc_ether_desc *usb_cdc_ether_desc;
+	struct usb_cdc_dmm_desc *usb_cdc_dmm_desc;
+	struct usb_cdc_mdlm_desc *usb_cdc_mdlm_desc;
+	struct usb_cdc_mdlm_detail_desc *usb_cdc_mdlm_detail_desc;
+	struct usb_cdc_obex_desc *usb_cdc_obex_desc;
+	struct usb_cdc_ncm_desc *usb_cdc_ncm_desc;
+	struct usb_cdc_mbim_desc *usb_cdc_mbim_desc;
+	struct usb_cdc_mbim_extended_desc *usb_cdc_mbim_extended_desc;
+	bool phonet_magic_present;
+};
+
+struct usb_cdc_network_terminal_desc {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubType;
+	__u8 bEntityId;
+	__u8 iName;
+	__u8 bChannelIndex;
+	__u8 bPhysicalInterface;
+};
+
+struct usb_cdc_obex_desc {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubType;
+	__le16 bcdVersion;
+} __attribute__((packed));
+
+struct usb_dynid {
+	struct list_head node;
+	struct usb_device_id id;
+};
+
+struct usb_dev_cap_header {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDevCapabilityType;
+};
+
+struct usb_class_driver {
+	char *name;
+	char * (*devnode)(const struct device *, umode_t *);
+	const struct file_operations *fops;
+	int minor_base;
+};
+
+struct ep_device {
+	struct usb_endpoint_descriptor *desc;
+	struct usb_device *udev;
+	struct device dev;
+};
+
+enum snoop_when {
+	SUBMIT = 0,
+	COMPLETE___2 = 1,
+};
+
+struct usb_dev_state {
+	struct list_head list;
+	struct usb_device *dev;
+	struct file *file;
+	spinlock_t lock;
+	struct list_head async_pending;
+	struct list_head async_completed;
+	struct list_head memory_list;
+	wait_queue_head_t wait;
+	wait_queue_head_t wait_for_resume;
+	unsigned int discsignr;
+	struct pid *disc_pid;
+	const struct cred *cred;
+	sigval_t disccontext;
+	unsigned long ifclaimed;
+	u32 disabled_bulk_eps;
+	unsigned long interface_allowed_mask;
+	int not_yet_resumed;
+	bool suspend_allowed;
+	bool privileges_dropped;
+};
+
+struct usb_memory;
+
+struct async {
+	struct list_head asynclist;
+	struct usb_dev_state *ps;
+	struct pid *pid;
+	const struct cred *cred;
+	unsigned int signr;
+	unsigned int ifnum;
+	void __attribute__((btf_type_tag("user"))) *userbuffer;
+	void __attribute__((btf_type_tag("user"))) *userurb;
+	sigval_t userurb_sigval;
+	struct urb *urb;
+	struct usb_memory *usbm;
+	unsigned int mem_usage;
+	int status;
+	u8 bulk_addr;
+	u8 bulk_status;
+};
+
+struct usb_memory {
+	struct list_head memlist;
+	int vma_use_count;
+	int urb_use_count;
+	u32 size;
+	void *mem;
+	dma_addr_t dma_handle;
+	unsigned long vm_start;
+	struct usb_dev_state *ps;
+};
+
+struct usbdevfs_iso_packet_desc {
+	unsigned int length;
+	unsigned int actual_length;
+	unsigned int status;
+};
+
+struct usbdevfs_urb {
+	unsigned char type;
+	unsigned char endpoint;
+	int status;
+	unsigned int flags;
+	void __attribute__((btf_type_tag("user"))) *buffer;
+	int buffer_length;
+	int actual_length;
+	int start_frame;
+	union {
+		int number_of_packets;
+		unsigned int stream_id;
+	};
+	int error_count;
+	unsigned int signr;
+	void __attribute__((btf_type_tag("user"))) *usercontext;
+	struct usbdevfs_iso_packet_desc iso_frame_desc[0];
+};
+
+struct usbdevfs_urb32 {
+	unsigned char type;
+	unsigned char endpoint;
+	compat_int_t status;
+	compat_uint_t flags;
+	compat_caddr_t buffer;
+	compat_int_t buffer_length;
+	compat_int_t actual_length;
+	compat_int_t start_frame;
+	compat_int_t number_of_packets;
+	compat_int_t error_count;
+	compat_uint_t signr;
+	compat_caddr_t usercontext;
+	struct usbdevfs_iso_packet_desc iso_frame_desc[0];
+};
+
+struct usbdevfs_ioctl32 {
+	s32 ifno;
+	s32 ioctl_code;
+	compat_caddr_t data;
+};
+
+struct usbdevfs_ioctl {
+	int ifno;
+	int ioctl_code;
+	void __attribute__((btf_type_tag("user"))) *data;
+};
+
+struct usbdevfs_setinterface {
+	unsigned int interface;
+	unsigned int altsetting;
+};
+
+struct usbdevfs_ctrltransfer {
+	__u8 bRequestType;
+	__u8 bRequest;
+	__u16 wValue;
+	__u16 wIndex;
+	__u16 wLength;
+	__u32 timeout;
+	void __attribute__((btf_type_tag("user"))) *data;
+};
+
+struct usbdevfs_disconnectsignal {
+	unsigned int signr;
+	void __attribute__((btf_type_tag("user"))) *context;
+};
+
+struct usbdevfs_bulktransfer32 {
+	compat_uint_t ep;
+	compat_uint_t len;
+	compat_uint_t timeout;
+	compat_caddr_t data;
+};
+
+struct usbdevfs_bulktransfer {
+	unsigned int ep;
+	unsigned int len;
+	unsigned int timeout;
+	void __attribute__((btf_type_tag("user"))) *data;
+};
+
+struct usbdevfs_getdriver {
+	unsigned int interface;
+	char driver[256];
+};
+
+struct usbdevfs_disconnect_claim {
+	unsigned int interface;
+	unsigned int flags;
+	char driver[256];
+};
+
+struct usbdevfs_ctrltransfer32 {
+	u8 bRequestType;
+	u8 bRequest;
+	u16 wValue;
+	u16 wIndex;
+	u16 wLength;
+	u32 timeout;
+	compat_caddr_t data;
+};
+
+struct usbdevfs_disconnectsignal32 {
+	compat_int_t signr;
+	compat_caddr_t context;
+};
+
+struct usbdevfs_connectinfo {
+	unsigned int devnum;
+	unsigned char slow;
+};
+
+struct usbdevfs_conninfo_ex {
+	__u32 size;
+	__u32 busnum;
+	__u32 devnum;
+	__u32 speed;
+	__u8 num_ports;
+	__u8 ports[7];
+};
+
+struct usbdevfs_streams {
+	unsigned int num_streams;
+	unsigned int num_eps;
+	unsigned char eps[0];
+};
+
+struct quirk_entry {
+	u16 vid;
+	u16 pid;
+	u32 flags;
+};
+
+struct class_info {
+	int class;
+	char *class_name;
+};
+
+struct usb_phy_roothub {
+	struct phy *phy;
+	struct list_head list;
+};
+
+typedef void (*companion_fn)(struct pci_dev *, struct usb_hcd *, struct pci_dev *, struct usb_hcd *);
+
+struct phy_devm {
+	struct usb_phy *phy;
+	struct notifier_block *nb;
+};
+
+enum usb_phy_interface {
+	USBPHY_INTERFACE_MODE_UNKNOWN = 0,
+	USBPHY_INTERFACE_MODE_UTMI = 1,
+	USBPHY_INTERFACE_MODE_UTMIW = 2,
+	USBPHY_INTERFACE_MODE_ULPI = 3,
+	USBPHY_INTERFACE_MODE_SERIAL = 4,
+	USBPHY_INTERFACE_MODE_HSIC = 5,
+};
+
+struct usb_ep;
+
+struct usb_request {
+	void *buf;
+	unsigned int length;
+	dma_addr_t dma;
+	struct scatterlist *sg;
+	unsigned int num_sgs;
+	unsigned int num_mapped_sgs;
+	unsigned int stream_id: 16;
+	unsigned int is_last: 1;
+	unsigned int no_interrupt: 1;
+	unsigned int zero: 1;
+	unsigned int short_not_ok: 1;
+	unsigned int dma_mapped: 1;
+	void (*complete)(struct usb_ep *, struct usb_request *);
+	void *context;
+	struct list_head list;
+	unsigned int frame_number;
+	int status;
+	unsigned int actual;
+	u64 android_kabi_reserved1;
+};
+
+struct dwc3_ep;
+
+struct dwc3_trb;
+
+struct dwc3_request {
+	struct usb_request request;
+	struct list_head list;
+	struct dwc3_ep *dep;
+	struct scatterlist *sg;
+	struct scatterlist *start_sg;
+	unsigned int num_pending_sgs;
+	unsigned int num_queued_sgs;
+	unsigned int remaining;
+	unsigned int status;
+	u8 epnum;
+	struct dwc3_trb *trb;
+	dma_addr_t trb_dma;
+	unsigned int num_trbs;
+	unsigned int needs_extra_trb: 1;
+	unsigned int direction: 1;
+	unsigned int mapped: 1;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct ulpi;
+
+enum dwc3_ep0_next {
+	DWC3_EP0_UNKNOWN = 0,
+	DWC3_EP0_COMPLETE = 1,
+	DWC3_EP0_NRDY_DATA = 2,
+	DWC3_EP0_NRDY_STATUS = 3,
+};
+
+enum dwc3_ep0_state {
+	EP0_UNCONNECTED = 0,
+	EP0_SETUP_PHASE = 1,
+	EP0_DATA_PHASE = 2,
+	EP0_STATUS_PHASE = 3,
+};
+
+enum dwc3_link_state {
+	DWC3_LINK_STATE_U0 = 0,
+	DWC3_LINK_STATE_U1 = 1,
+	DWC3_LINK_STATE_U2 = 2,
+	DWC3_LINK_STATE_U3 = 3,
+	DWC3_LINK_STATE_SS_DIS = 4,
+	DWC3_LINK_STATE_RX_DET = 5,
+	DWC3_LINK_STATE_SS_INACT = 6,
+	DWC3_LINK_STATE_POLL = 7,
+	DWC3_LINK_STATE_RECOV = 8,
+	DWC3_LINK_STATE_HRESET = 9,
+	DWC3_LINK_STATE_CMPLY = 10,
+	DWC3_LINK_STATE_LPBK = 11,
+	DWC3_LINK_STATE_RESET = 14,
+	DWC3_LINK_STATE_RESUME = 15,
+	DWC3_LINK_STATE_MASK = 15,
+};
+
+struct dwc3_hwparams {
+	u32 hwparams0;
+	u32 hwparams1;
+	u32 hwparams2;
+	u32 hwparams3;
+	u32 hwparams4;
+	u32 hwparams5;
+	u32 hwparams6;
+	u32 hwparams7;
+	u32 hwparams8;
+	u32 hwparams9;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct dwc3_event_buffer;
+
+struct usb_gadget_driver;
+
+struct usb_role_switch;
+
+struct power_supply;
+
+struct dwc3 {
+	struct work_struct drd_work;
+	struct dwc3_trb *ep0_trb;
+	void *bounce;
+	u8 *setup_buf;
+	dma_addr_t ep0_trb_addr;
+	dma_addr_t bounce_addr;
+	struct dwc3_request ep0_usb_req;
+	struct completion ep0_in_setup;
+	spinlock_t lock;
+	struct mutex mutex;
+	struct device *dev;
+	struct device *sysdev;
+	struct platform_device *xhci;
+	struct resource xhci_resources[2];
+	struct dwc3_event_buffer *ev_buf;
+	struct dwc3_ep *eps[32];
+	struct usb_gadget *gadget;
+	struct usb_gadget_driver *gadget_driver;
+	struct clk *bus_clk;
+	struct clk *ref_clk;
+	struct clk *susp_clk;
+	struct reset_control *reset;
+	struct usb_phy *usb2_phy;
+	struct usb_phy *usb3_phy;
+	struct phy *usb2_generic_phy;
+	struct phy *usb3_generic_phy;
+	bool phys_ready;
+	struct ulpi *ulpi;
+	bool ulpi_ready;
+	void *regs;
+	size_t regs_size;
+	enum usb_dr_mode dr_mode;
+	u32 current_dr_role;
+	u32 desired_dr_role;
+	struct extcon_dev *edev;
+	struct notifier_block edev_nb;
+	enum usb_phy_interface hsphy_mode;
+	struct usb_role_switch *role_sw;
+	enum usb_dr_mode role_switch_default_mode;
+	struct power_supply *usb_psy;
+	u32 fladj;
+	u32 ref_clk_per;
+	u32 irq_gadget;
+	u32 otg_irq;
+	u32 current_otg_role;
+	u32 desired_otg_role;
+	bool otg_restart_host;
+	u32 u1u2;
+	u32 maximum_speed;
+	u32 gadget_max_speed;
+	enum usb_ssp_rate max_ssp_rate;
+	enum usb_ssp_rate gadget_ssp_rate;
+	u32 ip;
+	u32 revision;
+	u32 version_type;
+	enum dwc3_ep0_next ep0_next_event;
+	enum dwc3_ep0_state ep0state;
+	enum dwc3_link_state link_state;
+	u16 u2sel;
+	u16 u2pel;
+	u8 u1sel;
+	u8 u1pel;
+	u8 speed;
+	u8 num_eps;
+	struct dwc3_hwparams hwparams;
+	struct debugfs_regset32 *regset;
+	u32 dbg_lsp_select;
+	u8 test_mode;
+	u8 test_mode_nr;
+	u8 lpm_nyet_threshold;
+	u8 hird_threshold;
+	u8 rx_thr_num_pkt;
+	u8 rx_max_burst;
+	u8 tx_thr_num_pkt;
+	u8 tx_max_burst;
+	u8 rx_thr_num_pkt_prd;
+	u8 rx_max_burst_prd;
+	u8 tx_thr_num_pkt_prd;
+	u8 tx_max_burst_prd;
+	u8 tx_fifo_resize_max_num;
+	u8 clear_stall_protocol;
+	u16 num_hc_interrupters;
+	const char *hsphy_interface;
+	unsigned int connected: 1;
+	unsigned int softconnect: 1;
+	unsigned int delayed_status: 1;
+	unsigned int ep0_bounced: 1;
+	unsigned int ep0_expect_in: 1;
+	unsigned int sysdev_is_parent: 1;
+	unsigned int has_lpm_erratum: 1;
+	unsigned int is_utmi_l1_suspend: 1;
+	unsigned int is_fpga: 1;
+	unsigned int pending_events: 1;
+	unsigned int do_fifo_resize: 1;
+	unsigned int pullups_connected: 1;
+	unsigned int setup_packet_pending: 1;
+	unsigned int three_stage_setup: 1;
+	unsigned int dis_start_transfer_quirk: 1;
+	unsigned int usb3_lpm_capable: 1;
+	unsigned int usb2_lpm_disable: 1;
+	unsigned int usb2_gadget_lpm_disable: 1;
+	unsigned int disable_scramble_quirk: 1;
+	unsigned int u2exit_lfps_quirk: 1;
+	unsigned int u2ss_inp3_quirk: 1;
+	unsigned int req_p1p2p3_quirk: 1;
+	unsigned int del_p1p2p3_quirk: 1;
+	unsigned int del_phy_power_chg_quirk: 1;
+	unsigned int lfps_filter_quirk: 1;
+	unsigned int rx_detect_poll_quirk: 1;
+	unsigned int dis_u3_susphy_quirk: 1;
+	unsigned int dis_u2_susphy_quirk: 1;
+	unsigned int dis_enblslpm_quirk: 1;
+	unsigned int dis_u1_entry_quirk: 1;
+	unsigned int dis_u2_entry_quirk: 1;
+	unsigned int dis_rxdet_inp3_quirk: 1;
+	unsigned int dis_u2_freeclk_exists_quirk: 1;
+	unsigned int dis_del_phy_power_chg_quirk: 1;
+	unsigned int dis_tx_ipgap_linecheck_quirk: 1;
+	unsigned int resume_hs_terminations: 1;
+	unsigned int ulpi_ext_vbus_drv: 1;
+	unsigned int parkmode_disable_ss_quirk: 1;
+	unsigned int parkmode_disable_hs_quirk: 1;
+	unsigned int gfladj_refclk_lpm_sel: 1;
+	unsigned int tx_de_emphasis_quirk: 1;
+	unsigned int tx_de_emphasis: 2;
+	unsigned int dis_metastability_quirk: 1;
+	unsigned int dis_split_quirk: 1;
+	unsigned int async_callbacks: 1;
+	unsigned int sys_wakeup: 1;
+	unsigned int wakeup_configured: 1;
+	unsigned int suspended: 1;
+	u16 imod_interval;
+	int max_cfg_eps;
+	int last_fifo_depth;
+	int num_ep_resized;
+	struct dentry *debug_root;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct dwc3_trb {
+	u32 bpl;
+	u32 bph;
+	u32 size;
+	u32 ctrl;
+};
+
+struct usb_ep_caps {
+	unsigned int type_control: 1;
+	unsigned int type_iso: 1;
+	unsigned int type_bulk: 1;
+	unsigned int type_int: 1;
+	unsigned int dir_in: 1;
+	unsigned int dir_out: 1;
+};
+
+struct usb_ep_ops;
+
+struct usb_ep {
+	void *driver_data;
+	const char *name;
+	const struct usb_ep_ops *ops;
+	struct list_head ep_list;
+	struct usb_ep_caps caps;
+	bool claimed;
+	bool enabled;
+	unsigned int maxpacket: 16;
+	unsigned int maxpacket_limit: 16;
+	unsigned int max_streams: 16;
+	unsigned int mult: 2;
+	unsigned int maxburst: 5;
+	u8 address;
+	const struct usb_endpoint_descriptor *desc;
+	const struct usb_ss_ep_comp_descriptor *comp_desc;
+	u64 android_kabi_reserved1;
+};
+
+struct usb_ep_ops {
+	int (*enable)(struct usb_ep *, const struct usb_endpoint_descriptor *);
+	int (*disable)(struct usb_ep *);
+	void (*dispose)(struct usb_ep *);
+	struct usb_request * (*alloc_request)(struct usb_ep *, gfp_t);
+	void (*free_request)(struct usb_ep *, struct usb_request *);
+	int (*queue)(struct usb_ep *, struct usb_request *, gfp_t);
+	int (*dequeue)(struct usb_ep *, struct usb_request *);
+	int (*set_halt)(struct usb_ep *, int);
+	int (*set_wedge)(struct usb_ep *);
+	int (*fifo_status)(struct usb_ep *);
+	void (*fifo_flush)(struct usb_ep *);
+	u64 android_kabi_reserved1;
+};
+
+struct dwc3_ep {
+	struct usb_ep endpoint;
+	struct list_head cancelled_list;
+	struct list_head pending_list;
+	struct list_head started_list;
+	void *regs;
+	struct dwc3_trb *trb_pool;
+	dma_addr_t trb_pool_dma;
+	struct dwc3 *dwc;
+	u32 saved_state;
+	unsigned int flags;
+	u8 trb_enqueue;
+	u8 trb_dequeue;
+	u8 number;
+	u8 type;
+	u8 resource_index;
+	u32 frame_number;
+	u32 interval;
+	char name[20];
+	unsigned int direction: 1;
+	unsigned int stream_capable: 1;
+	u8 combo_num;
+	int start_cmd_status;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct dwc3_event_buffer {
+	void *buf;
+	void *cache;
+	unsigned int length;
+	unsigned int lpos;
+	unsigned int count;
+	unsigned int flags;
+	dma_addr_t dma;
+	struct dwc3 *dwc;
+	u64 android_kabi_reserved1;
+};
+
+struct usb_udc;
+
+struct usb_gadget_ops;
+
+struct usb_gadget {
+	struct work_struct work;
+	struct usb_udc *udc;
+	const struct usb_gadget_ops *ops;
+	struct usb_ep *ep0;
+	struct list_head ep_list;
+	enum usb_device_speed speed;
+	enum usb_device_speed max_speed;
+	enum usb_ssp_rate ssp_rate;
+	enum usb_ssp_rate max_ssp_rate;
+	enum usb_device_state state;
+	const char *name;
+	struct device dev;
+	unsigned int isoch_delay;
+	unsigned int out_epnum;
+	unsigned int in_epnum;
+	unsigned int mA;
+	struct usb_otg_caps *otg_caps;
+	unsigned int sg_supported: 1;
+	unsigned int is_otg: 1;
+	unsigned int is_a_peripheral: 1;
+	unsigned int b_hnp_enable: 1;
+	unsigned int a_hnp_support: 1;
+	unsigned int a_alt_hnp_support: 1;
+	unsigned int hnp_polling_support: 1;
+	unsigned int host_request_flag: 1;
+	unsigned int quirk_ep_out_aligned_size: 1;
+	unsigned int quirk_altset_not_supp: 1;
+	unsigned int quirk_stall_not_supp: 1;
+	unsigned int quirk_zlp_not_supp: 1;
+	unsigned int quirk_avoids_skb_reserve: 1;
+	unsigned int is_selfpowered: 1;
+	unsigned int deactivated: 1;
+	unsigned int connected: 1;
+	unsigned int lpm_capable: 1;
+	unsigned int wakeup_capable: 1;
+	unsigned int wakeup_armed: 1;
+	int irq;
+	int id_number;
+};
+
+struct usb_dcd_config_params;
+
+struct usb_gadget_ops {
+	int (*get_frame)(struct usb_gadget *);
+	int (*wakeup)(struct usb_gadget *);
+	int (*func_wakeup)(struct usb_gadget *, int);
+	int (*set_remote_wakeup)(struct usb_gadget *, int);
+	int (*set_selfpowered)(struct usb_gadget *, int);
+	int (*vbus_session)(struct usb_gadget *, int);
+	int (*vbus_draw)(struct usb_gadget *, unsigned int);
+	int (*pullup)(struct usb_gadget *, int);
+	int (*ioctl)(struct usb_gadget *, unsigned int, unsigned long);
+	void (*get_config_params)(struct usb_gadget *, struct usb_dcd_config_params *);
+	int (*udc_start)(struct usb_gadget *, struct usb_gadget_driver *);
+	int (*udc_stop)(struct usb_gadget *);
+	void (*udc_set_speed)(struct usb_gadget *, enum usb_device_speed);
+	void (*udc_set_ssp_rate)(struct usb_gadget *, enum usb_ssp_rate);
+	void (*udc_async_callbacks)(struct usb_gadget *, bool);
+	struct usb_ep * (*match_ep)(struct usb_gadget *, struct usb_endpoint_descriptor *, struct usb_ss_ep_comp_descriptor *);
+	int (*check_config)(struct usb_gadget *);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct usb_dcd_config_params {
+	__u8 bU1devExitLat;
+	__le16 bU2DevExitLat;
+	__u8 besl_baseline;
+	__u8 besl_deep;
+};
+
+struct usb_gadget_driver {
+	char *function;
+	enum usb_device_speed max_speed;
+	int (*bind)(struct usb_gadget *, struct usb_gadget_driver *);
+	void (*unbind)(struct usb_gadget *);
+	int (*setup)(struct usb_gadget *, const struct usb_ctrlrequest *);
+	void (*disconnect)(struct usb_gadget *);
+	void (*suspend)(struct usb_gadget *);
+	void (*resume)(struct usb_gadget *);
+	void (*reset)(struct usb_gadget *);
+	struct device_driver driver;
+	char *udc_name;
+	unsigned int match_existing_only: 1;
+	bool is_bound: 1;
+};
+
+struct power_supply_desc;
+
+struct power_supply_battery_info;
+
+struct thermal_zone_device;
+
+struct power_supply {
+	const struct power_supply_desc *desc;
+	char **supplied_to;
+	size_t num_supplicants;
+	char **supplied_from;
+	size_t num_supplies;
+	struct device_node *of_node;
+	void *drv_data;
+	struct device dev;
+	struct work_struct changed_work;
+	struct delayed_work deferred_register_work;
+	spinlock_t changed_lock;
+	bool changed;
+	bool initialized;
+	bool removing;
+	atomic_t use_cnt;
+	struct power_supply_battery_info *battery_info;
+	struct thermal_zone_device *tzd;
+	struct thermal_cooling_device *tcd;
+	struct led_trigger *charging_full_trig;
+	char *charging_full_trig_name;
+	struct led_trigger *charging_trig;
+	char *charging_trig_name;
+	struct led_trigger *full_trig;
+	char *full_trig_name;
+	struct led_trigger *online_trig;
+	char *online_trig_name;
+	struct led_trigger *charging_blink_full_solid_trig;
+	char *charging_blink_full_solid_trig_name;
+	u64 android_kabi_reserved1;
+};
+
+enum power_supply_type {
+	POWER_SUPPLY_TYPE_UNKNOWN = 0,
+	POWER_SUPPLY_TYPE_BATTERY = 1,
+	POWER_SUPPLY_TYPE_UPS = 2,
+	POWER_SUPPLY_TYPE_MAINS = 3,
+	POWER_SUPPLY_TYPE_USB = 4,
+	POWER_SUPPLY_TYPE_USB_DCP = 5,
+	POWER_SUPPLY_TYPE_USB_CDP = 6,
+	POWER_SUPPLY_TYPE_USB_ACA = 7,
+	POWER_SUPPLY_TYPE_USB_TYPE_C = 8,
+	POWER_SUPPLY_TYPE_USB_PD = 9,
+	POWER_SUPPLY_TYPE_USB_PD_DRP = 10,
+	POWER_SUPPLY_TYPE_APPLE_BRICK_ID = 11,
+	POWER_SUPPLY_TYPE_WIRELESS = 12,
+};
+
+enum power_supply_usb_type {
+	POWER_SUPPLY_USB_TYPE_UNKNOWN = 0,
+	POWER_SUPPLY_USB_TYPE_SDP = 1,
+	POWER_SUPPLY_USB_TYPE_DCP = 2,
+	POWER_SUPPLY_USB_TYPE_CDP = 3,
+	POWER_SUPPLY_USB_TYPE_ACA = 4,
+	POWER_SUPPLY_USB_TYPE_C = 5,
+	POWER_SUPPLY_USB_TYPE_PD = 6,
+	POWER_SUPPLY_USB_TYPE_PD_DRP = 7,
+	POWER_SUPPLY_USB_TYPE_PD_PPS = 8,
+	POWER_SUPPLY_USB_TYPE_APPLE_BRICK_ID = 9,
+};
+
+enum power_supply_property {
+	POWER_SUPPLY_PROP_STATUS = 0,
+	POWER_SUPPLY_PROP_CHARGE_TYPE = 1,
+	POWER_SUPPLY_PROP_HEALTH = 2,
+	POWER_SUPPLY_PROP_PRESENT = 3,
+	POWER_SUPPLY_PROP_ONLINE = 4,
+	POWER_SUPPLY_PROP_AUTHENTIC = 5,
+	POWER_SUPPLY_PROP_TECHNOLOGY = 6,
+	POWER_SUPPLY_PROP_CYCLE_COUNT = 7,
+	POWER_SUPPLY_PROP_VOLTAGE_MAX = 8,
+	POWER_SUPPLY_PROP_VOLTAGE_MIN = 9,
+	POWER_SUPPLY_PROP_VOLTAGE_MAX_DESIGN = 10,
+	POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN = 11,
+	POWER_SUPPLY_PROP_VOLTAGE_NOW = 12,
+	POWER_SUPPLY_PROP_VOLTAGE_AVG = 13,
+	POWER_SUPPLY_PROP_VOLTAGE_OCV = 14,
+	POWER_SUPPLY_PROP_VOLTAGE_BOOT = 15,
+	POWER_SUPPLY_PROP_CURRENT_MAX = 16,
+	POWER_SUPPLY_PROP_CURRENT_NOW = 17,
+	POWER_SUPPLY_PROP_CURRENT_AVG = 18,
+	POWER_SUPPLY_PROP_CURRENT_BOOT = 19,
+	POWER_SUPPLY_PROP_POWER_NOW = 20,
+	POWER_SUPPLY_PROP_POWER_AVG = 21,
+	POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN = 22,
+	POWER_SUPPLY_PROP_CHARGE_EMPTY_DESIGN = 23,
+	POWER_SUPPLY_PROP_CHARGE_FULL = 24,
+	POWER_SUPPLY_PROP_CHARGE_EMPTY = 25,
+	POWER_SUPPLY_PROP_CHARGE_NOW = 26,
+	POWER_SUPPLY_PROP_CHARGE_AVG = 27,
+	POWER_SUPPLY_PROP_CHARGE_COUNTER = 28,
+	POWER_SUPPLY_PROP_CONSTANT_CHARGE_CURRENT = 29,
+	POWER_SUPPLY_PROP_CONSTANT_CHARGE_CURRENT_MAX = 30,
+	POWER_SUPPLY_PROP_CONSTANT_CHARGE_VOLTAGE = 31,
+	POWER_SUPPLY_PROP_CONSTANT_CHARGE_VOLTAGE_MAX = 32,
+	POWER_SUPPLY_PROP_CHARGE_CONTROL_LIMIT = 33,
+	POWER_SUPPLY_PROP_CHARGE_CONTROL_LIMIT_MAX = 34,
+	POWER_SUPPLY_PROP_CHARGE_CONTROL_START_THRESHOLD = 35,
+	POWER_SUPPLY_PROP_CHARGE_CONTROL_END_THRESHOLD = 36,
+	POWER_SUPPLY_PROP_CHARGE_BEHAVIOUR = 37,
+	POWER_SUPPLY_PROP_INPUT_CURRENT_LIMIT = 38,
+	POWER_SUPPLY_PROP_INPUT_VOLTAGE_LIMIT = 39,
+	POWER_SUPPLY_PROP_INPUT_POWER_LIMIT = 40,
+	POWER_SUPPLY_PROP_ENERGY_FULL_DESIGN = 41,
+	POWER_SUPPLY_PROP_ENERGY_EMPTY_DESIGN = 42,
+	POWER_SUPPLY_PROP_ENERGY_FULL = 43,
+	POWER_SUPPLY_PROP_ENERGY_EMPTY = 44,
+	POWER_SUPPLY_PROP_ENERGY_NOW = 45,
+	POWER_SUPPLY_PROP_ENERGY_AVG = 46,
+	POWER_SUPPLY_PROP_CAPACITY = 47,
+	POWER_SUPPLY_PROP_CAPACITY_ALERT_MIN = 48,
+	POWER_SUPPLY_PROP_CAPACITY_ALERT_MAX = 49,
+	POWER_SUPPLY_PROP_CAPACITY_ERROR_MARGIN = 50,
+	POWER_SUPPLY_PROP_CAPACITY_LEVEL = 51,
+	POWER_SUPPLY_PROP_TEMP = 52,
+	POWER_SUPPLY_PROP_TEMP_MAX = 53,
+	POWER_SUPPLY_PROP_TEMP_MIN = 54,
+	POWER_SUPPLY_PROP_TEMP_ALERT_MIN = 55,
+	POWER_SUPPLY_PROP_TEMP_ALERT_MAX = 56,
+	POWER_SUPPLY_PROP_TEMP_AMBIENT = 57,
+	POWER_SUPPLY_PROP_TEMP_AMBIENT_ALERT_MIN = 58,
+	POWER_SUPPLY_PROP_TEMP_AMBIENT_ALERT_MAX = 59,
+	POWER_SUPPLY_PROP_TIME_TO_EMPTY_NOW = 60,
+	POWER_SUPPLY_PROP_TIME_TO_EMPTY_AVG = 61,
+	POWER_SUPPLY_PROP_TIME_TO_FULL_NOW = 62,
+	POWER_SUPPLY_PROP_TIME_TO_FULL_AVG = 63,
+	POWER_SUPPLY_PROP_TYPE = 64,
+	POWER_SUPPLY_PROP_USB_TYPE = 65,
+	POWER_SUPPLY_PROP_SCOPE = 66,
+	POWER_SUPPLY_PROP_PRECHARGE_CURRENT = 67,
+	POWER_SUPPLY_PROP_CHARGE_TERM_CURRENT = 68,
+	POWER_SUPPLY_PROP_CALIBRATE = 69,
+	POWER_SUPPLY_PROP_MANUFACTURE_YEAR = 70,
+	POWER_SUPPLY_PROP_MANUFACTURE_MONTH = 71,
+	POWER_SUPPLY_PROP_MANUFACTURE_DAY = 72,
+	POWER_SUPPLY_PROP_MODEL_NAME = 73,
+	POWER_SUPPLY_PROP_MANUFACTURER = 74,
+	POWER_SUPPLY_PROP_SERIAL_NUMBER = 75,
+};
+
+union power_supply_propval;
+
+struct power_supply_desc {
+	const char *name;
+	enum power_supply_type type;
+	const enum power_supply_usb_type *usb_types;
+	size_t num_usb_types;
+	const enum power_supply_property *properties;
+	size_t num_properties;
+	int (*get_property)(struct power_supply *, enum power_supply_property, union power_supply_propval *);
+	int (*set_property)(struct power_supply *, enum power_supply_property, const union power_supply_propval *);
+	int (*property_is_writeable)(struct power_supply *, enum power_supply_property);
+	void (*external_power_changed)(struct power_supply *);
+	void (*set_charged)(struct power_supply *);
+	bool no_thermal;
+	int use_for_apm;
+	u64 android_kabi_reserved1;
+};
+
+union power_supply_propval {
+	int intval;
+	const char *strval;
+};
+
+struct power_supply_maintenance_charge_table;
+
+struct power_supply_battery_ocv_table;
+
+struct power_supply_resistance_temp_table;
+
+struct power_supply_vbat_ri_table;
+
+struct power_supply_battery_info {
+	unsigned int technology;
+	int energy_full_design_uwh;
+	int charge_full_design_uah;
+	int voltage_min_design_uv;
+	int voltage_max_design_uv;
+	int tricklecharge_current_ua;
+	int precharge_current_ua;
+	int precharge_voltage_max_uv;
+	int charge_term_current_ua;
+	int charge_restart_voltage_uv;
+	int overvoltage_limit_uv;
+	int constant_charge_current_max_ua;
+	int constant_charge_voltage_max_uv;
+	struct power_supply_maintenance_charge_table *maintenance_charge;
+	int maintenance_charge_size;
+	int alert_low_temp_charge_current_ua;
+	int alert_low_temp_charge_voltage_uv;
+	int alert_high_temp_charge_current_ua;
+	int alert_high_temp_charge_voltage_uv;
+	int factory_internal_resistance_uohm;
+	int factory_internal_resistance_charging_uohm;
+	int ocv_temp[20];
+	int temp_ambient_alert_min;
+	int temp_ambient_alert_max;
+	int temp_alert_min;
+	int temp_alert_max;
+	int temp_min;
+	int temp_max;
+	struct power_supply_battery_ocv_table *ocv_table[20];
+	int ocv_table_size[20];
+	struct power_supply_resistance_temp_table *resist_table;
+	int resist_table_size;
+	struct power_supply_vbat_ri_table *vbat2ri_discharging;
+	int vbat2ri_discharging_size;
+	struct power_supply_vbat_ri_table *vbat2ri_charging;
+	int vbat2ri_charging_size;
+	int bti_resistance_ohm;
+	int bti_resistance_tolerance;
+	u64 android_kabi_reserved1;
+};
+
+struct power_supply_maintenance_charge_table {
+	int charge_current_max_ua;
+	int charge_voltage_max_uv;
+	int charge_safety_timer_minutes;
+};
+
+struct power_supply_battery_ocv_table {
+	int ocv;
+	int capacity;
+};
+
+struct power_supply_resistance_temp_table {
+	int temp;
+	int resistance;
+};
+
+struct power_supply_vbat_ri_table {
+	int vbat_uv;
+	int ri_uohm;
+};
+
+typedef void (*btf_trace_dwc3_readl)(void *, void *, u32, u32);
+
+typedef void (*btf_trace_dwc3_writel)(void *, void *, u32, u32);
+
+typedef void (*btf_trace_dwc3_event)(void *, u32, struct dwc3 *);
+
+typedef void (*btf_trace_dwc3_ctrl_req)(void *, struct usb_ctrlrequest *);
+
+typedef void (*btf_trace_dwc3_alloc_request)(void *, struct dwc3_request *);
+
+typedef void (*btf_trace_dwc3_free_request)(void *, struct dwc3_request *);
+
+typedef void (*btf_trace_dwc3_ep_queue)(void *, struct dwc3_request *);
+
+typedef void (*btf_trace_dwc3_ep_dequeue)(void *, struct dwc3_request *);
+
+typedef void (*btf_trace_dwc3_gadget_giveback)(void *, struct dwc3_request *);
+
+typedef void (*btf_trace_dwc3_gadget_generic_cmd)(void *, unsigned int, u32, int);
+
+struct dwc3_gadget_ep_cmd_params;
+
+typedef void (*btf_trace_dwc3_gadget_ep_cmd)(void *, struct dwc3_ep *, unsigned int, struct dwc3_gadget_ep_cmd_params *, int);
+
+struct dwc3_gadget_ep_cmd_params {
+	u32 param2;
+	u32 param1;
+	u32 param0;
+};
+
+typedef void (*btf_trace_dwc3_prepare_trb)(void *, struct dwc3_ep *, struct dwc3_trb *);
+
+typedef void (*btf_trace_dwc3_complete_trb)(void *, struct dwc3_ep *, struct dwc3_trb *);
+
+typedef void (*btf_trace_dwc3_gadget_ep_enable)(void *, struct dwc3_ep *);
+
+typedef void (*btf_trace_dwc3_gadget_ep_disable)(void *, struct dwc3_ep *);
+
+struct trace_event_raw_dwc3_log_io {
+	struct trace_entry ent;
+	void *base;
+	u32 offset;
+	u32 value;
+	char __data[0];
+};
+
+struct trace_event_raw_dwc3_log_event {
+	struct trace_entry ent;
+	u32 event;
+	u32 ep0state;
+	char __data[0];
+};
+
+struct trace_event_raw_dwc3_log_ctrl {
+	struct trace_entry ent;
+	__u8 bRequestType;
+	__u8 bRequest;
+	__u16 wValue;
+	__u16 wIndex;
+	__u16 wLength;
+	char __data[0];
+};
+
+struct trace_event_raw_dwc3_log_request {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	struct dwc3_request *req;
+	unsigned int actual;
+	unsigned int length;
+	int status;
+	int zero;
+	int short_not_ok;
+	int no_interrupt;
+	char __data[0];
+};
+
+struct trace_event_raw_dwc3_log_generic_cmd {
+	struct trace_entry ent;
+	unsigned int cmd;
+	u32 param;
+	int status;
+	char __data[0];
+};
+
+struct trace_event_raw_dwc3_log_gadget_ep_cmd {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	unsigned int cmd;
+	u32 param0;
+	u32 param1;
+	u32 param2;
+	int cmd_status;
+	char __data[0];
+};
+
+struct trace_event_raw_dwc3_log_trb {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	struct dwc3_trb *trb;
+	u32 bpl;
+	u32 bph;
+	u32 size;
+	u32 ctrl;
+	u32 type;
+	u32 enqueue;
+	u32 dequeue;
+	char __data[0];
+};
+
+struct trace_event_raw_dwc3_log_ep {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	unsigned int maxpacket;
+	unsigned int maxpacket_limit;
+	unsigned int max_streams;
+	unsigned int maxburst;
+	unsigned int flags;
+	unsigned int direction;
+	u8 trb_enqueue;
+	u8 trb_dequeue;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_dwc3_log_request {
+	u32 name;
+};
+
+struct trace_event_data_offsets_dwc3_log_gadget_ep_cmd {
+	u32 name;
+};
+
+struct trace_event_data_offsets_dwc3_log_trb {
+	u32 name;
+};
+
+struct trace_event_data_offsets_dwc3_log_ep {
+	u32 name;
+};
+
+struct dwc3_event_type {
+	u32 is_devspec: 1;
+	u32 type: 7;
+	u32 reserved8_31: 24;
+};
+
+struct dwc3_event_depevt {
+	u32 one_bit: 1;
+	u32 endpoint_number: 5;
+	u32 endpoint_event: 4;
+	u32 reserved11_10: 2;
+	u32 status: 4;
+	u32 parameters: 16;
+};
+
+struct dwc3_event_devt {
+	u32 one_bit: 1;
+	u32 device_event: 7;
+	u32 type: 4;
+	u32 reserved15_12: 4;
+	u32 event_info: 9;
+	u32 reserved31_25: 7;
+};
+
+struct dwc3_event_gevt {
+	u32 one_bit: 1;
+	u32 device_event: 7;
+	u32 phy_port_number: 4;
+	u32 reserved31_12: 20;
+};
+
+union dwc3_event {
+	u32 raw;
+	struct dwc3_event_type type;
+	struct dwc3_event_depevt depevt;
+	struct dwc3_event_devt devt;
+	struct dwc3_event_gevt gevt;
+};
+
+struct trace_event_data_offsets_dwc3_log_io {};
+
+struct trace_event_data_offsets_dwc3_log_event {};
+
+struct trace_event_data_offsets_dwc3_log_ctrl {};
+
+struct trace_event_data_offsets_dwc3_log_generic_cmd {};
+
+struct timing {
+	u8 u1sel;
+	u8 u1pel;
+	__le16 u2sel;
+	__le16 u2pel;
+};
+
+enum usb_role {
+	USB_ROLE_NONE = 0,
+	USB_ROLE_HOST = 1,
+	USB_ROLE_DEVICE = 2,
+};
+
+typedef int (*usb_role_switch_set_t)(struct usb_role_switch *, enum usb_role);
+
+typedef enum usb_role (*usb_role_switch_get_t)(struct usb_role_switch *);
+
+struct usb_role_switch_desc {
+	struct fwnode_handle *fwnode;
+	struct device *usb2_port;
+	struct device *usb3_port;
+	struct device *udc;
+	usb_role_switch_set_t set;
+	usb_role_switch_get_t get;
+	bool allow_userspace_control;
+	void *driver_data;
+	const char *name;
+};
+
+struct dwc3_ep_file_map {
+	const char name[25];
+	const struct file_operations * const fops;
+};
+
+struct dwc3_pci {
+	struct platform_device *dwc3;
+	struct pci_dev *pci;
+	guid_t guid;
+	unsigned int has_dsm_for_pm: 1;
+	struct work_struct wakeup_work;
+};
+
+struct dwc3_haps {
+	struct platform_device *dwc3;
+	struct pci_dev *pci;
+};
+
+enum amd_chipset_gen {
+	NOT_AMD_CHIPSET = 0,
+	AMD_CHIPSET_SB600 = 1,
+	AMD_CHIPSET_SB700 = 2,
+	AMD_CHIPSET_SB800 = 3,
+	AMD_CHIPSET_HUDSON2 = 4,
+	AMD_CHIPSET_BOLTON = 5,
+	AMD_CHIPSET_YANGTZE = 6,
+	AMD_CHIPSET_TAISHAN = 7,
+	AMD_CHIPSET_UNKNOWN = 8,
+};
+
+struct amd_chipset_type {
+	enum amd_chipset_gen gen;
+	u8 rev;
+};
+
+struct amd_chipset_info {
+	struct pci_dev *nb_dev;
+	struct pci_dev *smbus_dev;
+	int nb_type;
+	struct amd_chipset_type sb_type;
+	int isoc_reqs;
+	int probe_count;
+	bool need_pll_quirk;
+};
+
+enum ehci_hrtimer_event {
+	EHCI_HRTIMER_POLL_ASS = 0,
+	EHCI_HRTIMER_POLL_PSS = 1,
+	EHCI_HRTIMER_POLL_DEAD = 2,
+	EHCI_HRTIMER_UNLINK_INTR = 3,
+	EHCI_HRTIMER_FREE_ITDS = 4,
+	EHCI_HRTIMER_ACTIVE_UNLINK = 5,
+	EHCI_HRTIMER_START_UNLINK_INTR = 6,
+	EHCI_HRTIMER_ASYNC_UNLINKS = 7,
+	EHCI_HRTIMER_IAA_WATCHDOG = 8,
+	EHCI_HRTIMER_DISABLE_PERIODIC = 9,
+	EHCI_HRTIMER_DISABLE_ASYNC = 10,
+	EHCI_HRTIMER_IO_WATCHDOG = 11,
+	EHCI_HRTIMER_NUM_EVENTS = 12,
+};
+
+enum ehci_rh_state {
+	EHCI_RH_HALTED = 0,
+	EHCI_RH_SUSPENDED = 1,
+	EHCI_RH_RUNNING = 2,
+	EHCI_RH_STOPPING = 3,
+};
+
+struct ehci_caps;
+
+struct ehci_regs;
+
+struct ehci_dbg_port;
+
+struct ehci_qh;
+
+union ehci_shadow;
+
+struct ehci_itd;
+
+struct ehci_sitd;
+
+struct ehci_hcd {
+	enum ehci_hrtimer_event next_hrtimer_event;
+	unsigned int enabled_hrtimer_events;
+	ktime_t hr_timeouts[12];
+	struct hrtimer hrtimer;
+	int PSS_poll_count;
+	int ASS_poll_count;
+	int died_poll_count;
+	struct ehci_caps *caps;
+	struct ehci_regs *regs;
+	struct ehci_dbg_port *debug;
+	__u32 hcs_params;
+	spinlock_t lock;
+	enum ehci_rh_state rh_state;
+	bool scanning: 1;
+	bool need_rescan: 1;
+	bool intr_unlinking: 1;
+	bool iaa_in_progress: 1;
+	bool async_unlinking: 1;
+	bool shutdown: 1;
+	struct ehci_qh *qh_scan_next;
+	struct ehci_qh *async;
+	struct ehci_qh *dummy;
+	struct list_head async_unlink;
+	struct list_head async_idle;
+	unsigned int async_unlink_cycle;
+	unsigned int async_count;
+	__le32 old_current;
+	__le32 old_token;
+	unsigned int periodic_size;
+	__le32 *periodic;
+	dma_addr_t periodic_dma;
+	struct list_head intr_qh_list;
+	unsigned int i_thresh;
+	union ehci_shadow *pshadow;
+	struct list_head intr_unlink_wait;
+	struct list_head intr_unlink;
+	unsigned int intr_unlink_wait_cycle;
+	unsigned int intr_unlink_cycle;
+	unsigned int now_frame;
+	unsigned int last_iso_frame;
+	unsigned int intr_count;
+	unsigned int isoc_count;
+	unsigned int periodic_count;
+	unsigned int uframe_periodic_max;
+	struct list_head cached_itd_list;
+	struct ehci_itd *last_itd_to_free;
+	struct list_head cached_sitd_list;
+	struct ehci_sitd *last_sitd_to_free;
+	unsigned long reset_done[15];
+	unsigned long bus_suspended;
+	unsigned long companion_ports;
+	unsigned long owned_ports;
+	unsigned long port_c_suspend;
+	unsigned long suspended_ports;
+	unsigned long resuming_ports;
+	struct dma_pool *qh_pool;
+	struct dma_pool *qtd_pool;
+	struct dma_pool *itd_pool;
+	struct dma_pool *sitd_pool;
+	unsigned int random_frame;
+	unsigned long next_statechange;
+	ktime_t last_periodic_enable;
+	u32 command;
+	unsigned int no_selective_suspend: 1;
+	unsigned int has_fsl_port_bug: 1;
+	unsigned int has_fsl_hs_errata: 1;
+	unsigned int has_fsl_susp_errata: 1;
+	unsigned int has_ci_pec_bug: 1;
+	unsigned int big_endian_mmio: 1;
+	unsigned int big_endian_desc: 1;
+	unsigned int big_endian_capbase: 1;
+	unsigned int has_amcc_usb23: 1;
+	unsigned int need_io_watchdog: 1;
+	unsigned int amd_pll_fix: 1;
+	unsigned int use_dummy_qh: 1;
+	unsigned int has_synopsys_hc_bug: 1;
+	unsigned int frame_index_bug: 1;
+	unsigned int need_oc_pp_cycle: 1;
+	unsigned int imx28_write_fix: 1;
+	unsigned int spurious_oc: 1;
+	unsigned int is_aspeed: 1;
+	unsigned int zx_wakeup_clear_needed: 1;
+	__le32 *ohci_hcctrl_reg;
+	unsigned int has_hostpc: 1;
+	unsigned int has_tdi_phy_lpm: 1;
+	unsigned int has_ppcd: 1;
+	u8 sbrn;
+	u8 bandwidth[64];
+	u8 tt_budget[64];
+	struct list_head tt_list;
+	unsigned long priv[0];
+};
+
+struct ehci_caps {
+	u32 hc_capbase;
+	u32 hcs_params;
+	u32 hcc_params;
+	u8 portroute[8];
+};
+
+struct ehci_regs {
+	u32 command;
+	u32 status;
+	u32 intr_enable;
+	u32 frame_index;
+	u32 segment;
+	u32 frame_list;
+	u32 async_next;
+	u32 reserved1[2];
+	u32 txfill_tuning;
+	u32 reserved2[6];
+	u32 configured_flag;
+	union {
+		u32 port_status[15];
+		struct {
+			u32 reserved3[9];
+			u32 usbmode;
+		};
+	};
+	union {
+		struct {
+			u32 reserved4;
+			u32 hostpc[15];
+		};
+		u32 brcm_insnreg[4];
+	};
+	u32 reserved5[2];
+	u32 usbmode_ex;
+};
+
+struct ehci_dbg_port {
+	u32 control;
+	u32 pids;
+	u32 data03;
+	u32 data47;
+	u32 address;
+};
+
+struct ehci_fstn;
+
+union ehci_shadow {
+	struct ehci_qh *qh;
+	struct ehci_itd *itd;
+	struct ehci_sitd *sitd;
+	struct ehci_fstn *fstn;
+	__le32 *hw_next;
+	void *ptr;
+};
+
+struct ehci_per_sched {
+	struct usb_device *udev;
+	struct usb_host_endpoint *ep;
+	struct list_head ps_list;
+	u16 tt_usecs;
+	u16 cs_mask;
+	u16 period;
+	u16 phase;
+	u8 bw_phase;
+	u8 phase_uf;
+	u8 usecs;
+	u8 c_usecs;
+	u8 bw_uperiod;
+	u8 bw_period;
+};
+
+struct ehci_qh_hw;
+
+struct ehci_qtd;
+
+struct ehci_qh {
+	struct ehci_qh_hw *hw;
+	dma_addr_t qh_dma;
+	union ehci_shadow qh_next;
+	struct list_head qtd_list;
+	struct list_head intr_node;
+	struct ehci_qtd *dummy;
+	struct list_head unlink_node;
+	struct ehci_per_sched ps;
+	unsigned int unlink_cycle;
+	u8 qh_state;
+	u8 xacterrs;
+	u8 unlink_reason;
+	u8 gap_uf;
+	unsigned int is_out: 1;
+	unsigned int clearing_tt: 1;
+	unsigned int dequeue_during_giveback: 1;
+	unsigned int should_be_inactive: 1;
+};
+
+struct ehci_qh_hw {
+	__le32 hw_next;
+	__le32 hw_info1;
+	__le32 hw_info2;
+	__le32 hw_current;
+	__le32 hw_qtd_next;
+	__le32 hw_alt_next;
+	__le32 hw_token;
+	__le32 hw_buf[5];
+	__le32 hw_buf_hi[5];
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct ehci_iso_stream;
+
+struct ehci_itd {
+	__le32 hw_next;
+	__le32 hw_transaction[8];
+	__le32 hw_bufp[7];
+	__le32 hw_bufp_hi[7];
+	dma_addr_t itd_dma;
+	union ehci_shadow itd_next;
+	struct urb *urb;
+	struct ehci_iso_stream *stream;
+	struct list_head itd_list;
+	unsigned int frame;
+	unsigned int pg;
+	unsigned int index[8];
+	long: 64;
+};
+
+struct ehci_iso_stream {
+	struct ehci_qh_hw *hw;
+	u8 bEndpointAddress;
+	u8 highspeed;
+	struct list_head td_list;
+	struct list_head free_list;
+	struct ehci_per_sched ps;
+	unsigned int next_uframe;
+	__le32 splits;
+	u16 uperiod;
+	u16 maxp;
+	unsigned int bandwidth;
+	__le32 buf0;
+	__le32 buf1;
+	__le32 buf2;
+	__le32 address;
+};
+
+struct ehci_sitd {
+	__le32 hw_next;
+	__le32 hw_fullspeed_ep;
+	__le32 hw_uframe;
+	__le32 hw_results;
+	__le32 hw_buf[2];
+	__le32 hw_backpointer;
+	__le32 hw_buf_hi[2];
+	dma_addr_t sitd_dma;
+	union ehci_shadow sitd_next;
+	struct urb *urb;
+	struct ehci_iso_stream *stream;
+	struct list_head sitd_list;
+	unsigned int frame;
+	unsigned int index;
+};
+
+struct ehci_fstn {
+	__le32 hw_next;
+	__le32 hw_prev;
+	dma_addr_t fstn_dma;
+	union ehci_shadow fstn_next;
+	long: 64;
+};
+
+struct ehci_qtd {
+	__le32 hw_next;
+	__le32 hw_alt_next;
+	__le32 hw_token;
+	__le32 hw_buf[5];
+	__le32 hw_buf_hi[5];
+	dma_addr_t qtd_dma;
+	struct list_head qtd_list;
+	struct urb *urb;
+	size_t length;
+};
+
+struct ehci_tt {
+	u16 bandwidth[8];
+	struct list_head tt_list;
+	struct list_head ps_list;
+	struct usb_tt *usb_tt;
+	int tt_port;
+};
+
+struct ehci_iso_packet {
+	u64 bufp;
+	__le32 transaction;
+	u8 cross;
+	u32 buf1;
+};
+
+struct ehci_iso_sched {
+	struct list_head td_list;
+	unsigned int span;
+	unsigned int first_packet;
+	struct ehci_iso_packet packet[0];
+};
+
+struct ehci_driver_overrides {
+	size_t extra_priv_size;
+	int (*reset)(struct usb_hcd *);
+	int (*port_power)(struct usb_hcd *, int, bool);
+};
+
+struct usb_ehci_pdata {
+	int caps_offset;
+	unsigned int has_tt: 1;
+	unsigned int has_synopsys_hc_bug: 1;
+	unsigned int big_endian_desc: 1;
+	unsigned int big_endian_mmio: 1;
+	unsigned int no_io_watchdog: 1;
+	unsigned int reset_on_resume: 1;
+	unsigned int dma_mask_64: 1;
+	unsigned int spurious_oc: 1;
+	int (*power_on)(struct platform_device *);
+	void (*power_off)(struct platform_device *);
+	void (*power_suspend)(struct platform_device *);
+	int (*pre_setup)(struct usb_hcd *);
+};
+
+struct ehci_platform_priv {
+	struct clk *clks[4];
+	struct reset_control *rsts;
+	bool reset_on_resume;
+	bool quirk_poll;
+	struct timer_list poll_timer;
+	struct delayed_work poll_work;
+};
+
+enum xhci_ring_type {
+	TYPE_CTRL = 0,
+	TYPE_ISOC = 1,
+	TYPE_BULK = 2,
+	TYPE_INTR = 3,
+	TYPE_STREAM = 4,
+	TYPE_COMMAND = 5,
+	TYPE_EVENT = 6,
+};
+
+enum xhci_overhead_type {
+	LS_OVERHEAD_TYPE = 0,
+	FS_OVERHEAD_TYPE = 1,
+	HS_OVERHEAD_TYPE = 2,
+};
+
+enum xhci_cancelled_td_status {
+	TD_DIRTY = 0,
+	TD_HALTED = 1,
+	TD_CLEARING_CACHE = 2,
+	TD_CLEARED = 3,
+};
+
+enum xhci_setup_dev {
+	SETUP_CONTEXT_ONLY = 0,
+	SETUP_CONTEXT_ADDRESS = 1,
+};
+
+struct s3_save {
+	u32 command;
+	u32 dev_nt;
+	u64 dcbaa_ptr;
+	u32 config_reg;
+};
+
+struct xhci_bus_state {
+	unsigned long bus_suspended;
+	unsigned long next_statechange;
+	u32 port_c_suspend;
+	u32 suspended_ports;
+	u32 port_remote_wakeup;
+	unsigned long resuming_ports;
+};
+
+struct xhci_port;
+
+struct xhci_hub {
+	struct xhci_port **ports;
+	unsigned int num_ports;
+	struct usb_hcd *hcd;
+	struct xhci_bus_state bus_state;
+	u8 maj_rev;
+	u8 min_rev;
+};
+
+struct xhci_cap_regs;
+
+struct xhci_op_regs;
+
+struct xhci_run_regs;
+
+struct xhci_doorbell_array;
+
+struct xhci_device_context_array;
+
+struct xhci_interrupter;
+
+struct xhci_ring;
+
+struct xhci_command;
+
+struct xhci_scratchpad;
+
+struct xhci_virt_device;
+
+struct xhci_root_port_bw_info;
+
+struct xhci_port_cap;
+
+struct xhci_hcd {
+	struct usb_hcd *main_hcd;
+	struct usb_hcd *shared_hcd;
+	struct xhci_cap_regs *cap_regs;
+	struct xhci_op_regs *op_regs;
+	struct xhci_run_regs *run_regs;
+	struct xhci_doorbell_array *dba;
+	__u32 hcs_params1;
+	__u32 hcs_params2;
+	__u32 hcs_params3;
+	__u32 hcc_params;
+	__u32 hcc_params2;
+	spinlock_t lock;
+	u8 sbrn;
+	u16 hci_version;
+	u8 max_slots;
+	u16 max_interrupters;
+	u8 max_ports;
+	u8 isoc_threshold;
+	u32 imod_interval;
+	int event_ring_max;
+	int page_size;
+	int page_shift;
+	int msix_count;
+	struct clk *clk;
+	struct clk *reg_clk;
+	struct reset_control *reset;
+	struct xhci_device_context_array *dcbaa;
+	struct xhci_interrupter **interrupters;
+	struct xhci_ring *cmd_ring;
+	unsigned int cmd_ring_state;
+	struct list_head cmd_list;
+	unsigned int cmd_ring_reserved_trbs;
+	struct delayed_work cmd_timer;
+	struct completion cmd_ring_stop_completion;
+	struct xhci_command *current_cmd;
+	struct xhci_scratchpad *scratchpad;
+	struct mutex mutex;
+	struct xhci_virt_device *devs[256];
+	struct xhci_root_port_bw_info *rh_bw;
+	struct dma_pool *device_pool;
+	struct dma_pool *segment_pool;
+	struct dma_pool *small_streams_pool;
+	struct dma_pool *medium_streams_pool;
+	unsigned int xhc_state;
+	unsigned long run_graceperiod;
+	struct s3_save s3;
+	unsigned long long quirks;
+	unsigned int num_active_eps;
+	unsigned int limit_active_eps;
+	struct xhci_port *hw_ports;
+	struct xhci_hub usb2_rhub;
+	struct xhci_hub usb3_rhub;
+	unsigned int hw_lpm_support: 1;
+	unsigned int broken_suspend: 1;
+	unsigned int allow_single_roothub: 1;
+	u32 *ext_caps;
+	unsigned int num_ext_caps;
+	struct xhci_port_cap *port_caps;
+	unsigned int num_port_caps;
+	struct timer_list comp_mode_recovery_timer;
+	u32 port_status_u0;
+	u16 test_mode;
+	struct dentry *debugfs_root;
+	struct dentry *debugfs_slots;
+	struct list_head regset_list;
+	void *dbc;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+	unsigned long priv[0];
+};
+
+struct xhci_cap_regs {
+	__le32 hc_capbase;
+	__le32 hcs_params1;
+	__le32 hcs_params2;
+	__le32 hcs_params3;
+	__le32 hcc_params;
+	__le32 db_off;
+	__le32 run_regs_off;
+	__le32 hcc_params2;
+};
+
+struct xhci_op_regs {
+	__le32 command;
+	__le32 status;
+	__le32 page_size;
+	__le32 reserved1;
+	__le32 reserved2;
+	__le32 dev_notification;
+	__le64 cmd_ring;
+	__le32 reserved3[4];
+	__le64 dcbaa_ptr;
+	__le32 config_reg;
+	__le32 reserved4[241];
+	__le32 port_status_base;
+	__le32 port_power_base;
+	__le32 port_link_base;
+	__le32 reserved5;
+	__le32 reserved6[1016];
+};
+
+struct xhci_intr_reg {
+	__le32 irq_pending;
+	__le32 irq_control;
+	__le32 erst_size;
+	__le32 rsvd;
+	__le64 erst_base;
+	__le64 erst_dequeue;
+};
+
+struct xhci_run_regs {
+	__le32 microframe_index;
+	__le32 rsvd[7];
+	struct xhci_intr_reg ir_set[128];
+};
+
+struct xhci_doorbell_array {
+	__le32 doorbell[256];
+};
+
+struct xhci_device_context_array {
+	__le64 dev_context_ptrs[256];
+	dma_addr_t dma;
+};
+
+struct xhci_erst_entry;
+
+struct xhci_erst {
+	struct xhci_erst_entry *entries;
+	unsigned int num_entries;
+	dma_addr_t erst_dma_addr;
+	unsigned int erst_size;
+	u64 android_kabi_reserved1;
+};
+
+struct xhci_interrupter {
+	struct xhci_ring *event_ring;
+	struct xhci_erst erst;
+	struct xhci_intr_reg *ir_set;
+	unsigned int intr_num;
+	bool ip_autoclear;
+	bool skip_events;
+	u32 isoc_bei_interval;
+	u32 s3_irq_pending;
+	u32 s3_irq_control;
+	u32 s3_erst_size;
+	u64 s3_erst_base;
+	u64 s3_erst_dequeue;
+};
+
+struct xhci_segment;
+
+union xhci_trb;
+
+struct xhci_ring {
+	struct xhci_segment *first_seg;
+	struct xhci_segment *last_seg;
+	union xhci_trb *enqueue;
+	struct xhci_segment *enq_seg;
+	union xhci_trb *dequeue;
+	struct xhci_segment *deq_seg;
+	struct list_head td_list;
+	u32 cycle_state;
+	unsigned int stream_id;
+	unsigned int num_segs;
+	unsigned int num_trbs_free;
+	unsigned int bounce_buf_len;
+	enum xhci_ring_type type;
+	bool last_td_was_short;
+	struct xarray *trb_address_map;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct xhci_segment {
+	union xhci_trb *trbs;
+	struct xhci_segment *next;
+	unsigned int num;
+	dma_addr_t dma;
+	dma_addr_t bounce_dma;
+	void *bounce_buf;
+	unsigned int bounce_offs;
+	unsigned int bounce_len;
+	u64 android_kabi_reserved1;
+};
+
+struct xhci_link_trb {
+	__le64 segment_ptr;
+	__le32 intr_target;
+	__le32 control;
+};
+
+struct xhci_transfer_event {
+	__le64 buffer;
+	__le32 transfer_len;
+	__le32 flags;
+};
+
+struct xhci_event_cmd {
+	__le64 cmd_trb;
+	__le32 status;
+	__le32 flags;
+};
+
+struct xhci_generic_trb {
+	__le32 field[4];
+};
+
+union xhci_trb {
+	struct xhci_link_trb link;
+	struct xhci_transfer_event trans_event;
+	struct xhci_event_cmd event_cmd;
+	struct xhci_generic_trb generic;
+};
+
+struct xhci_erst_entry {
+	__le64 seg_addr;
+	__le32 seg_size;
+	__le32 rsvd;
+};
+
+struct xhci_container_ctx;
+
+struct xhci_command {
+	struct xhci_container_ctx *in_ctx;
+	u32 status;
+	int slot_id;
+	struct completion *completion;
+	union xhci_trb *command_trb;
+	struct list_head cmd_list;
+	unsigned int timeout_ms;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct xhci_container_ctx {
+	unsigned int type;
+	int size;
+	u8 *bytes;
+	dma_addr_t dma;
+};
+
+struct xhci_scratchpad {
+	u64 *sp_array;
+	dma_addr_t sp_dma;
+	void **sp_buffers;
+};
+
+struct xhci_bw_info {
+	unsigned int ep_interval;
+	unsigned int mult;
+	unsigned int num_packets;
+	unsigned int max_packet_size;
+	unsigned int max_esit_payload;
+	unsigned int type;
+};
+
+struct xhci_sideband;
+
+struct xhci_stream_info;
+
+struct xhci_virt_ep {
+	struct xhci_virt_device *vdev;
+	unsigned int ep_index;
+	struct xhci_ring *ring;
+	struct xhci_stream_info *stream_info;
+	struct xhci_ring *new_ring;
+	unsigned int err_count;
+	unsigned int ep_state;
+	struct list_head cancelled_td_list;
+	struct xhci_hcd *xhci;
+	struct xhci_segment *queued_deq_seg;
+	union xhci_trb *queued_deq_ptr;
+	bool skip;
+	struct xhci_bw_info bw_info;
+	struct list_head bw_endpoint_list;
+	int next_frame_id;
+	bool use_extended_tbc;
+	struct xhci_sideband *sideband;
+};
+
+struct xhci_interval_bw_table;
+
+struct xhci_tt_bw_info;
+
+struct xhci_virt_device {
+	int slot_id;
+	struct usb_device *udev;
+	struct xhci_container_ctx *out_ctx;
+	struct xhci_container_ctx *in_ctx;
+	struct xhci_virt_ep eps[31];
+	u8 fake_port;
+	u8 real_port;
+	struct xhci_interval_bw_table *bw_table;
+	struct xhci_tt_bw_info *tt_info;
+	unsigned long flags;
+	u16 current_mel;
+	void *debugfs_private;
+	struct xhci_sideband *sideband;
+};
+
+struct xhci_stream_ctx;
+
+struct xhci_stream_info {
+	struct xhci_ring **stream_rings;
+	unsigned int num_streams;
+	struct xhci_stream_ctx *stream_ctx_array;
+	unsigned int num_stream_ctxs;
+	dma_addr_t ctx_array_dma;
+	struct xarray trb_address_map;
+	struct xhci_command *free_streams_command;
+};
+
+struct xhci_stream_ctx {
+	__le64 stream_ring;
+	__le32 reserved[2];
+};
+
+struct xhci_interval_bw {
+	unsigned int num_packets;
+	struct list_head endpoints;
+	unsigned int overhead[3];
+};
+
+struct xhci_interval_bw_table {
+	unsigned int interval0_esit_payload;
+	struct xhci_interval_bw interval_bw[16];
+	unsigned int bw_used;
+	unsigned int ss_bw_in;
+	unsigned int ss_bw_out;
+};
+
+struct xhci_tt_bw_info {
+	struct list_head tt_list;
+	int slot_id;
+	int ttport;
+	struct xhci_interval_bw_table bw_table;
+	int active_eps;
+};
+
+struct xhci_root_port_bw_info {
+	struct list_head tts;
+	unsigned int num_active_tts;
+	struct xhci_interval_bw_table bw_table;
+};
+
+struct xhci_port {
+	__le32 *addr;
+	int hw_portnum;
+	int hcd_portnum;
+	struct xhci_hub *rhub;
+	struct xhci_port_cap *port_cap;
+	unsigned int lpm_incapable: 1;
+	unsigned long resume_timestamp;
+	bool rexit_active;
+	struct completion rexit_done;
+	struct completion u3exit_done;
+};
+
+struct xhci_port_cap {
+	u32 *psi;
+	u8 psi_count;
+	u8 psi_uid_count;
+	u8 maj_rev;
+	u8 min_rev;
+};
+
+struct xhci_input_control_ctx {
+	__le32 drop_flags;
+	__le32 add_flags;
+	__le32 rsvd2[6];
+};
+
+struct xhci_ep_ctx {
+	__le32 ep_info;
+	__le32 ep_info2;
+	__le64 deq;
+	__le32 tx_info;
+	__le32 reserved[3];
+};
+
+struct xhci_slot_ctx {
+	__le32 dev_info;
+	__le32 dev_info2;
+	__le32 tt_info;
+	__le32 dev_state;
+	__le32 reserved[4];
+};
+
+struct xhci_td {
+	struct list_head td_list;
+	struct list_head cancelled_td_list;
+	int status;
+	enum xhci_cancelled_td_status cancel_status;
+	struct urb *urb;
+	struct xhci_segment *start_seg;
+	union xhci_trb *first_trb;
+	union xhci_trb *last_trb;
+	struct xhci_segment *last_trb_seg;
+	struct xhci_segment *bounce_seg;
+	bool urb_length_set;
+	bool error_mid_td;
+	unsigned int num_trbs;
+};
+
+struct urb_priv {
+	int num_tds;
+	int num_tds_done;
+	struct xhci_td td[0];
+};
+
+typedef void (*xhci_get_quirks_t)(struct device *, struct xhci_hcd *);
+
+struct xhci_driver_overrides {
+	size_t extra_priv_size;
+	int (*reset)(struct usb_hcd *);
+	int (*start)(struct usb_hcd *);
+	int (*add_endpoint)(struct usb_hcd *, struct usb_device *, struct usb_host_endpoint *);
+	int (*drop_endpoint)(struct usb_hcd *, struct usb_device *, struct usb_host_endpoint *);
+	int (*check_bandwidth)(struct usb_hcd *, struct usb_device *);
+	void (*reset_bandwidth)(struct usb_hcd *, struct usb_device *);
+	int (*update_hub_device)(struct usb_hcd *, struct usb_device *, struct usb_tt *, gfp_t);
+	int (*hub_control)(struct usb_hcd *, u16, u16, u16, char *, u16);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+enum xhci_ep_reset_type {
+	EP_HARD_RESET = 0,
+	EP_SOFT_RESET = 1,
+};
+
+typedef void (*btf_trace_xhci_dbg_address)(void *, struct va_format *);
+
+typedef void (*btf_trace_xhci_dbg_context_change)(void *, struct va_format *);
+
+typedef void (*btf_trace_xhci_dbg_quirks)(void *, struct va_format *);
+
+typedef void (*btf_trace_xhci_dbg_reset_ep)(void *, struct va_format *);
+
+typedef void (*btf_trace_xhci_dbg_cancel_urb)(void *, struct va_format *);
+
+typedef void (*btf_trace_xhci_dbg_init)(void *, struct va_format *);
+
+typedef void (*btf_trace_xhci_dbg_ring_expansion)(void *, struct va_format *);
+
+typedef void (*btf_trace_xhci_address_ctx)(void *, struct xhci_hcd *, struct xhci_container_ctx *, unsigned int);
+
+typedef void (*btf_trace_xhci_handle_event)(void *, struct xhci_ring *, struct xhci_generic_trb *);
+
+typedef void (*btf_trace_xhci_handle_command)(void *, struct xhci_ring *, struct xhci_generic_trb *);
+
+typedef void (*btf_trace_xhci_handle_transfer)(void *, struct xhci_ring *, struct xhci_generic_trb *);
+
+typedef void (*btf_trace_xhci_queue_trb)(void *, struct xhci_ring *, struct xhci_generic_trb *);
+
+typedef void (*btf_trace_xhci_dbc_handle_event)(void *, struct xhci_ring *, struct xhci_generic_trb *);
+
+typedef void (*btf_trace_xhci_dbc_handle_transfer)(void *, struct xhci_ring *, struct xhci_generic_trb *);
+
+typedef void (*btf_trace_xhci_dbc_gadget_ep_queue)(void *, struct xhci_ring *, struct xhci_generic_trb *);
+
+typedef void (*btf_trace_xhci_free_virt_device)(void *, struct xhci_virt_device *);
+
+typedef void (*btf_trace_xhci_alloc_virt_device)(void *, struct xhci_virt_device *);
+
+typedef void (*btf_trace_xhci_setup_device)(void *, struct xhci_virt_device *);
+
+typedef void (*btf_trace_xhci_setup_addressable_virt_device)(void *, struct xhci_virt_device *);
+
+typedef void (*btf_trace_xhci_stop_device)(void *, struct xhci_virt_device *);
+
+typedef void (*btf_trace_xhci_urb_enqueue)(void *, struct urb *);
+
+typedef void (*btf_trace_xhci_urb_giveback)(void *, struct urb *);
+
+typedef void (*btf_trace_xhci_urb_dequeue)(void *, struct urb *);
+
+typedef void (*btf_trace_xhci_handle_cmd_stop_ep)(void *, struct xhci_ep_ctx *);
+
+typedef void (*btf_trace_xhci_handle_cmd_set_deq_ep)(void *, struct xhci_ep_ctx *);
+
+typedef void (*btf_trace_xhci_handle_cmd_reset_ep)(void *, struct xhci_ep_ctx *);
+
+typedef void (*btf_trace_xhci_handle_cmd_config_ep)(void *, struct xhci_ep_ctx *);
+
+typedef void (*btf_trace_xhci_add_endpoint)(void *, struct xhci_ep_ctx *);
+
+typedef void (*btf_trace_xhci_alloc_dev)(void *, struct xhci_slot_ctx *);
+
+typedef void (*btf_trace_xhci_free_dev)(void *, struct xhci_slot_ctx *);
+
+typedef void (*btf_trace_xhci_handle_cmd_disable_slot)(void *, struct xhci_slot_ctx *);
+
+typedef void (*btf_trace_xhci_discover_or_reset_device)(void *, struct xhci_slot_ctx *);
+
+typedef void (*btf_trace_xhci_setup_device_slot)(void *, struct xhci_slot_ctx *);
+
+typedef void (*btf_trace_xhci_handle_cmd_addr_dev)(void *, struct xhci_slot_ctx *);
+
+typedef void (*btf_trace_xhci_handle_cmd_reset_dev)(void *, struct xhci_slot_ctx *);
+
+typedef void (*btf_trace_xhci_handle_cmd_set_deq)(void *, struct xhci_slot_ctx *);
+
+typedef void (*btf_trace_xhci_configure_endpoint)(void *, struct xhci_slot_ctx *);
+
+typedef void (*btf_trace_xhci_address_ctrl_ctx)(void *, struct xhci_input_control_ctx *);
+
+typedef void (*btf_trace_xhci_configure_endpoint_ctrl_ctx)(void *, struct xhci_input_control_ctx *);
+
+typedef void (*btf_trace_xhci_ring_alloc)(void *, struct xhci_ring *);
+
+typedef void (*btf_trace_xhci_ring_free)(void *, struct xhci_ring *);
+
+typedef void (*btf_trace_xhci_ring_expansion)(void *, struct xhci_ring *);
+
+typedef void (*btf_trace_xhci_inc_enq)(void *, struct xhci_ring *);
+
+typedef void (*btf_trace_xhci_inc_deq)(void *, struct xhci_ring *);
+
+typedef void (*btf_trace_xhci_handle_port_status)(void *, u32, u32);
+
+typedef void (*btf_trace_xhci_get_port_status)(void *, u32, u32);
+
+typedef void (*btf_trace_xhci_hub_status_data)(void *, u32, u32);
+
+typedef void (*btf_trace_xhci_ring_ep_doorbell)(void *, u32, u32);
+
+typedef void (*btf_trace_xhci_ring_host_doorbell)(void *, u32, u32);
+
+struct dbc_request;
+
+typedef void (*btf_trace_xhci_dbc_alloc_request)(void *, struct dbc_request *);
+
+struct xhci_dbc;
+
+struct dbc_request {
+	void *buf;
+	unsigned int length;
+	dma_addr_t dma;
+	void (*complete)(struct xhci_dbc *, struct dbc_request *);
+	struct list_head list_pool;
+	int status;
+	unsigned int actual;
+	struct xhci_dbc *dbc;
+	struct list_head list_pending;
+	dma_addr_t trb_dma;
+	union xhci_trb *trb;
+	unsigned int direction: 1;
+};
+
+enum dbc_state {
+	DS_DISABLED = 0,
+	DS_INITIALIZED = 1,
+	DS_ENABLED = 2,
+	DS_CONNECTED = 3,
+	DS_CONFIGURED = 4,
+	DS_STALLED = 5,
+};
+
+struct dbc_ep {
+	struct xhci_dbc *dbc;
+	struct list_head list_pending;
+	struct xhci_ring *ring;
+	unsigned int direction: 1;
+};
+
+struct dbc_regs;
+
+struct dbc_str_descs;
+
+struct dbc_driver;
+
+struct xhci_dbc {
+	spinlock_t lock;
+	struct device *dev;
+	struct xhci_hcd *xhci;
+	struct dbc_regs *regs;
+	struct xhci_ring *ring_evt;
+	struct xhci_ring *ring_in;
+	struct xhci_ring *ring_out;
+	struct xhci_erst erst;
+	struct xhci_container_ctx *ctx;
+	struct dbc_str_descs *string;
+	dma_addr_t string_dma;
+	size_t string_size;
+	u16 idVendor;
+	u16 idProduct;
+	u16 bcdDevice;
+	u8 bInterfaceProtocol;
+	enum dbc_state state;
+	struct delayed_work event_work;
+	unsigned int resume_required: 1;
+	struct dbc_ep eps[2];
+	const struct dbc_driver *driver;
+	void *priv;
+};
+
+struct dbc_regs {
+	__le32 capability;
+	__le32 doorbell;
+	__le32 ersts;
+	__le32 __reserved_0;
+	__le64 erstba;
+	__le64 erdp;
+	__le32 control;
+	__le32 status;
+	__le32 portsc;
+	__le32 __reserved_1;
+	__le64 dccp;
+	__le32 devinfo1;
+	__le32 devinfo2;
+};
+
+struct dbc_str_descs {
+	char string0[64];
+	char manufacturer[64];
+	char product[64];
+	char serial[64];
+};
+
+struct dbc_driver {
+	int (*configure)(struct xhci_dbc *);
+	void (*disconnect)(struct xhci_dbc *);
+};
+
+typedef void (*btf_trace_xhci_dbc_free_request)(void *, struct dbc_request *);
+
+typedef void (*btf_trace_xhci_dbc_queue_request)(void *, struct dbc_request *);
+
+typedef void (*btf_trace_xhci_dbc_giveback_request)(void *, struct dbc_request *);
+
+struct trace_event_raw_xhci_log_msg {
+	struct trace_entry ent;
+	u32 __data_loc_msg;
+	char __data[0];
+};
+
+struct trace_event_raw_xhci_log_ctx {
+	struct trace_entry ent;
+	int ctx_64;
+	unsigned int ctx_type;
+	dma_addr_t ctx_dma;
+	u8 *ctx_va;
+	unsigned int ctx_ep_num;
+	u32 __data_loc_ctx_data;
+	char __data[0];
+};
+
+struct trace_event_raw_xhci_log_trb {
+	struct trace_entry ent;
+	u32 type;
+	u32 field0;
+	u32 field1;
+	u32 field2;
+	u32 field3;
+	char __data[0];
+};
+
+struct trace_event_raw_xhci_log_free_virt_dev {
+	struct trace_entry ent;
+	void *vdev;
+	unsigned long long out_ctx;
+	unsigned long long in_ctx;
+	u8 fake_port;
+	u8 real_port;
+	u16 current_mel;
+	char __data[0];
+};
+
+struct trace_event_raw_xhci_log_virt_dev {
+	struct trace_entry ent;
+	void *vdev;
+	unsigned long long out_ctx;
+	unsigned long long in_ctx;
+	int devnum;
+	int state;
+	int speed;
+	u8 portnum;
+	u8 level;
+	int slot_id;
+	char __data[0];
+};
+
+struct trace_event_raw_xhci_log_urb {
+	struct trace_entry ent;
+	void *urb;
+	unsigned int pipe;
+	unsigned int stream;
+	int status;
+	unsigned int flags;
+	int num_mapped_sgs;
+	int num_sgs;
+	int length;
+	int actual;
+	int epnum;
+	int dir_in;
+	int type;
+	int slot_id;
+	char __data[0];
+};
+
+struct trace_event_raw_xhci_log_ep_ctx {
+	struct trace_entry ent;
+	u32 info;
+	u32 info2;
+	u64 deq;
+	u32 tx_info;
+	char __data[0];
+};
+
+struct trace_event_raw_xhci_log_slot_ctx {
+	struct trace_entry ent;
+	u32 info;
+	u32 info2;
+	u32 tt_info;
+	u32 state;
+	char __data[0];
+};
+
+struct trace_event_raw_xhci_log_ctrl_ctx {
+	struct trace_entry ent;
+	u32 drop;
+	u32 add;
+	char __data[0];
+};
+
+struct trace_event_raw_xhci_log_ring {
+	struct trace_entry ent;
+	u32 type;
+	void *ring;
+	dma_addr_t enq;
+	dma_addr_t deq;
+	dma_addr_t enq_seg;
+	dma_addr_t deq_seg;
+	unsigned int num_segs;
+	unsigned int stream_id;
+	unsigned int cycle_state;
+	unsigned int bounce_buf_len;
+	char __data[0];
+};
+
+struct trace_event_raw_xhci_log_portsc {
+	struct trace_entry ent;
+	u32 portnum;
+	u32 portsc;
+	char __data[0];
+};
+
+struct trace_event_raw_xhci_log_doorbell {
+	struct trace_entry ent;
+	u32 slot;
+	u32 doorbell;
+	char __data[0];
+};
+
+struct trace_event_raw_xhci_dbc_log_request {
+	struct trace_entry ent;
+	struct dbc_request *req;
+	bool dir;
+	unsigned int actual;
+	unsigned int length;
+	int status;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_xhci_log_msg {
+	u32 msg;
+};
+
+struct trace_event_data_offsets_xhci_log_ctx {
+	u32 ctx_data;
+};
+
+struct trace_event_data_offsets_xhci_log_trb {};
+
+struct trace_event_data_offsets_xhci_log_free_virt_dev {};
+
+struct trace_event_data_offsets_xhci_log_virt_dev {};
+
+struct trace_event_data_offsets_xhci_log_urb {};
+
+struct trace_event_data_offsets_xhci_log_ep_ctx {};
+
+struct trace_event_data_offsets_xhci_log_slot_ctx {};
+
+struct trace_event_data_offsets_xhci_log_ctrl_ctx {};
+
+struct trace_event_data_offsets_xhci_log_ring {};
+
+struct trace_event_data_offsets_xhci_log_portsc {};
+
+struct trace_event_data_offsets_xhci_log_doorbell {};
+
+struct trace_event_data_offsets_xhci_dbc_log_request {};
+
+struct xhci_file_map {
+	const char *name;
+	int (*show)(struct seq_file *, void *);
+};
+
+struct xhci_regset {
+	char name[32];
+	struct debugfs_regset32 regset;
+	size_t nregs;
+	struct list_head list;
+};
+
+struct xhci_ep_priv {
+	char name[32];
+	struct dentry *root;
+	struct xhci_stream_info *stream_info;
+	struct xhci_ring *show_ring;
+	unsigned int stream_id;
+};
+
+struct xhci_slot_priv {
+	char name[32];
+	struct dentry *root;
+	struct xhci_ep_priv *eps[31];
+	struct xhci_virt_device *dev;
+};
+
+struct xhci_driver_data {
+	u64 quirks;
+	const char *firmware;
+};
+
+struct xhci_plat_priv {
+	const char *firmware_name;
+	unsigned long long quirks;
+	void (*plat_start)(struct usb_hcd *);
+	int (*init_quirk)(struct usb_hcd *);
+	int (*suspend_quirk)(struct usb_hcd *);
+	int (*resume_quirk)(struct usb_hcd *);
+};
+
+enum {
+	US_FL_SINGLE_LUN = 1,
+	US_FL_NEED_OVERRIDE = 2,
+	US_FL_SCM_MULT_TARG = 4,
+	US_FL_FIX_INQUIRY = 8,
+	US_FL_FIX_CAPACITY = 16,
+	US_FL_IGNORE_RESIDUE = 32,
+	US_FL_BULK32 = 64,
+	US_FL_NOT_LOCKABLE = 128,
+	US_FL_GO_SLOW = 256,
+	US_FL_NO_WP_DETECT = 512,
+	US_FL_MAX_SECTORS_64 = 1024,
+	US_FL_IGNORE_DEVICE = 2048,
+	US_FL_CAPACITY_HEURISTICS = 4096,
+	US_FL_MAX_SECTORS_MIN = 8192,
+	US_FL_BULK_IGNORE_TAG = 16384,
+	US_FL_SANE_SENSE = 32768,
+	US_FL_CAPACITY_OK = 65536,
+	US_FL_BAD_SENSE = 131072,
+	US_FL_NO_READ_DISC_INFO = 262144,
+	US_FL_NO_READ_CAPACITY_16 = 524288,
+	US_FL_INITIAL_READ10 = 1048576,
+	US_FL_WRITE_CACHE = 2097152,
+	US_FL_NEEDS_CAP16 = 4194304,
+	US_FL_IGNORE_UAS = 8388608,
+	US_FL_BROKEN_FUA = 16777216,
+	US_FL_NO_ATA_1X = 33554432,
+	US_FL_NO_REPORT_OPCODES = 67108864,
+	US_FL_MAX_SECTORS_240 = 134217728,
+	US_FL_NO_REPORT_LUNS = 268435456,
+	US_FL_ALWAYS_SYNC = 536870912,
+	US_FL_NO_SAME = 1073741824,
+	US_FL_SENSE_AFTER_SYNC = 2147483648,
+};
+
+enum {
+	SUBMIT_STATUS_URB = 2,
+	ALLOC_DATA_IN_URB = 4,
+	SUBMIT_DATA_IN_URB = 8,
+	ALLOC_DATA_OUT_URB = 16,
+	SUBMIT_DATA_OUT_URB = 32,
+	ALLOC_CMD_URB = 64,
+	SUBMIT_CMD_URB = 128,
+	COMMAND_INFLIGHT = 256,
+	DATA_IN_URB_INFLIGHT = 512,
+	DATA_OUT_URB_INFLIGHT = 1024,
+	COMMAND_ABORTED = 2048,
+	IS_IN_WORK_LIST = 4096,
+};
+
+enum {
+	IU_ID_COMMAND = 1,
+	IU_ID_STATUS = 3,
+	IU_ID_RESPONSE = 4,
+	IU_ID_TASK_MGMT = 5,
+	IU_ID_READ_READY = 6,
+	IU_ID_WRITE_READY = 7,
+};
+
+enum {
+	RC_TMF_COMPLETE = 0,
+	RC_INVALID_INFO_UNIT = 2,
+	RC_TMF_NOT_SUPPORTED = 4,
+	RC_TMF_FAILED = 5,
+	RC_TMF_SUCCEEDED = 8,
+	RC_INCORRECT_LUN = 9,
+	RC_OVERLAPPED_TAG = 10,
+};
+
+enum {
+	CMD_PIPE_ID = 1,
+	STATUS_PIPE_ID = 2,
+	DATA_IN_PIPE_ID = 3,
+	DATA_OUT_PIPE_ID = 4,
+	UAS_SIMPLE_TAG = 0,
+	UAS_HEAD_TAG = 1,
+	UAS_ORDERED_TAG = 2,
+	UAS_ACA = 4,
+};
+
+struct uas_dev_info {
+	struct usb_interface *intf;
+	struct usb_device *udev;
+	struct usb_anchor cmd_urbs;
+	struct usb_anchor sense_urbs;
+	struct usb_anchor data_urbs;
+	unsigned long flags;
+	int qdepth;
+	int resetting;
+	unsigned int cmd_pipe;
+	unsigned int status_pipe;
+	unsigned int data_in_pipe;
+	unsigned int data_out_pipe;
+	unsigned int use_streams: 1;
+	unsigned int shutdown: 1;
+	struct scsi_cmnd *cmnd[256];
+	spinlock_t lock;
+	struct work_struct work;
+	struct work_struct scan_work;
+};
+
+struct response_iu {
+	__u8 iu_id;
+	__u8 rsvd1;
+	__be16 tag;
+	__u8 add_response_info[3];
+	__u8 response_code;
+};
+
+struct uas_cmd_info {
+	unsigned int state;
+	unsigned int uas_tag;
+	struct urb *cmd_urb;
+	struct urb *data_in_urb;
+	struct urb *data_out_urb;
+};
+
+struct sense_iu {
+	__u8 iu_id;
+	__u8 rsvd1;
+	__be16 tag;
+	__be16 status_qual;
+	__u8 status;
+	__u8 rsvd7[7];
+	__be16 len;
+	__u8 sense[96];
+};
+
+struct command_iu {
+	__u8 iu_id;
+	__u8 rsvd1;
+	__be16 tag;
+	__u8 prio_attr;
+	__u8 rsvd5;
+	__u8 len;
+	__u8 rsvd7;
+	struct scsi_lun lun;
+	__u8 cdb[16];
+};
+
+struct iu {
+	__u8 iu_id;
+	__u8 rsvd1;
+	__be16 tag;
+};
+
+struct us_data;
+
+typedef int (*trans_cmnd)(struct scsi_cmnd *, struct us_data *);
+
+typedef int (*trans_reset)(struct us_data *);
+
+typedef void (*proto_cmnd)(struct scsi_cmnd *, struct us_data *);
+
+typedef void (*extra_data_destructor)(void *);
+
+typedef void (*pm_hook)(struct us_data *, int);
+
+struct us_unusual_dev;
+
+struct us_data {
+	struct mutex dev_mutex;
+	struct usb_device *pusb_dev;
+	struct usb_interface *pusb_intf;
+	const struct us_unusual_dev *unusual_dev;
+	unsigned long fflags;
+	unsigned long dflags;
+	unsigned int send_bulk_pipe;
+	unsigned int recv_bulk_pipe;
+	unsigned int send_ctrl_pipe;
+	unsigned int recv_ctrl_pipe;
+	unsigned int recv_intr_pipe;
+	char *transport_name;
+	char *protocol_name;
+	__le32 bcs_signature;
+	u8 subclass;
+	u8 protocol;
+	u8 max_lun;
+	u8 ifnum;
+	u8 ep_bInterval;
+	trans_cmnd transport;
+	trans_reset transport_reset;
+	proto_cmnd proto_handler;
+	struct scsi_cmnd *srb;
+	unsigned int tag;
+	char scsi_name[32];
+	struct urb *current_urb;
+	struct usb_ctrlrequest *cr;
+	struct usb_sg_request current_sg;
+	unsigned char *iobuf;
+	dma_addr_t iobuf_dma;
+	struct task_struct *ctl_thread;
+	struct completion cmnd_ready;
+	struct completion notify;
+	wait_queue_head_t delay_wait;
+	struct delayed_work scan_dwork;
+	void *extra;
+	extra_data_destructor extra_destructor;
+	pm_hook suspend_resume_hook;
+	int use_last_sector_hacks;
+	int last_sector_retries;
+};
+
+struct us_unusual_dev {
+	const char *vendorName;
+	const char *productName;
+	__u8 useProtocol;
+	__u8 useTransport;
+	int (*initFunction)(struct us_data *);
+};
+
+enum xfer_buf_dir {
+	TO_XFER_BUF = 0,
+	FROM_XFER_BUF = 1,
+};
+
+struct bulk_cb_wrap {
+	__le32 Signature;
+	__u32 Tag;
+	__le32 DataTransferLength;
+	__u8 Flags;
+	__u8 Lun;
+	__u8 Length;
+	__u8 CDB[16];
+};
+
+struct bulk_cs_wrap {
+	__le32 Signature;
+	__u32 Tag;
+	__le32 Residue;
+	__u8 Status;
+};
+
+struct swoc_info {
+	__u8 rev;
+	__u8 reserved[8];
+	__u16 LinuxSKU;
+	__u16 LinuxVer;
+	__u8 reserved2[47];
+} __attribute__((packed));
+
+struct ignore_entry {
+	u16 vid;
+	u16 pid;
+	u16 bcdmin;
+	u16 bcdmax;
+};
+
+struct usb_string;
+
+struct usb_gadget_strings {
+	u16 language;
+	struct usb_string *strings;
+};
+
+struct usb_string {
+	u8 id;
+	const char *s;
+};
+
+struct usb_otg20_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bmAttributes;
+	__le16 bcdOTG;
+} __attribute__((packed));
+
+struct usb_otg_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bmAttributes;
+};
+
+struct usb_configuration;
+
+struct usb_os_desc_table;
+
+struct usb_function_instance;
+
+struct usb_function {
+	const char *name;
+	struct usb_gadget_strings **strings;
+	struct usb_descriptor_header **fs_descriptors;
+	struct usb_descriptor_header **hs_descriptors;
+	struct usb_descriptor_header **ss_descriptors;
+	struct usb_descriptor_header **ssp_descriptors;
+	struct usb_configuration *config;
+	struct usb_os_desc_table *os_desc_table;
+	unsigned int os_desc_n;
+	int (*bind)(struct usb_configuration *, struct usb_function *);
+	void (*unbind)(struct usb_configuration *, struct usb_function *);
+	void (*free_func)(struct usb_function *);
+	struct module *mod;
+	int (*set_alt)(struct usb_function *, unsigned int, unsigned int);
+	int (*get_alt)(struct usb_function *, unsigned int);
+	void (*disable)(struct usb_function *);
+	int (*setup)(struct usb_function *, const struct usb_ctrlrequest *);
+	bool (*req_match)(struct usb_function *, const struct usb_ctrlrequest *, bool);
+	void (*suspend)(struct usb_function *);
+	void (*resume)(struct usb_function *);
+	int (*get_status)(struct usb_function *);
+	int (*func_suspend)(struct usb_function *, u8);
+	bool func_suspended;
+	bool func_wakeup_armed;
+	struct list_head list;
+	unsigned long endpoints[1];
+	const struct usb_function_instance *fi;
+	unsigned int bind_deactivated: 1;
+};
+
+struct usb_composite_dev;
+
+struct usb_configuration {
+	const char *label;
+	struct usb_gadget_strings **strings;
+	const struct usb_descriptor_header **descriptors;
+	void (*unbind)(struct usb_configuration *);
+	int (*setup)(struct usb_configuration *, const struct usb_ctrlrequest *);
+	u8 bConfigurationValue;
+	u8 iConfiguration;
+	u8 bmAttributes;
+	u16 MaxPower;
+	struct usb_composite_dev *cdev;
+	struct list_head list;
+	struct list_head functions;
+	u8 next_interface_id;
+	unsigned int superspeed: 1;
+	unsigned int highspeed: 1;
+	unsigned int fullspeed: 1;
+	unsigned int superspeed_plus: 1;
+	struct usb_function *interface[16];
+};
+
+struct android_uevent_opts {
+	struct device *dev;
+	int device_id;
+	bool connected;
+	bool configured;
+	bool sw_connected;
+	struct work_struct work;
+	struct ida function_ida;
+};
+
+struct usb_composite_driver;
+
+struct usb_composite_dev {
+	struct usb_gadget *gadget;
+	struct usb_request *req;
+	struct usb_request *os_desc_req;
+	struct usb_configuration *config;
+	u8 qw_sign[14];
+	u8 b_vendor_code;
+	struct usb_configuration *os_desc_config;
+	unsigned int use_os_string: 1;
+	u16 bcd_webusb_version;
+	u8 b_webusb_vendor_code;
+	char landing_page[260];
+	unsigned int use_webusb: 1;
+	unsigned int suspended: 1;
+	struct usb_device_descriptor desc;
+	struct list_head configs;
+	struct list_head gstrings;
+	struct usb_composite_driver *driver;
+	u8 next_string_id;
+	char *def_manufacturer;
+	struct usb_string *usb_strings;
+	unsigned int deactivations;
+	int delayed_status;
+	spinlock_t lock;
+	struct android_uevent_opts android_opts;
+	unsigned int setup_pending: 1;
+	unsigned int os_desc_pending: 1;
+};
+
+struct usb_composite_driver {
+	const char *name;
+	const struct usb_device_descriptor *dev;
+	struct usb_gadget_strings **strings;
+	enum usb_device_speed max_speed;
+	unsigned int needs_serial: 1;
+	int (*bind)(struct usb_composite_dev *);
+	int (*unbind)(struct usb_composite_dev *);
+	void (*disconnect)(struct usb_composite_dev *);
+	void (*suspend)(struct usb_composite_dev *);
+	void (*resume)(struct usb_composite_dev *);
+	struct usb_gadget_driver gadget_driver;
+};
+
+struct usb_os_desc;
+
+struct usb_os_desc_table {
+	int if_id;
+	struct usb_os_desc *os_desc;
+};
+
+struct usb_os_desc {
+	char *ext_compat_id;
+	struct list_head ext_prop;
+	int ext_prop_len;
+	int ext_prop_count;
+	struct mutex *opts_mutex;
+	struct config_group group;
+	struct module *owner;
+};
+
+struct usb_function_driver;
+
+struct usb_function_instance {
+	struct config_group group;
+	struct list_head cfs_list;
+	struct usb_function_driver *fd;
+	int (*set_inst_name)(struct usb_function_instance *, const char *);
+	void (*free_func_inst)(struct usb_function_instance *);
+};
+
+struct usb_function_driver {
+	const char *name;
+	struct module *mod;
+	struct list_head list;
+	struct usb_function_instance * (*alloc_inst)();
+	struct usb_function * (*alloc_func)(struct usb_function_instance *);
+};
+
+enum {
+	USB_GADGET_MANUFACTURER_IDX = 0,
+	USB_GADGET_PRODUCT_IDX = 1,
+	USB_GADGET_SERIAL_IDX = 2,
+	USB_GADGET_FIRST_AVAIL_IDX = 3,
+};
+
+struct webusb_url_descriptor {
+	u8 bLength;
+	u8 bDescriptorType;
+	u8 bScheme;
+	u8 URL[252];
+};
+
+struct usb_gadget_string_container {
+	struct list_head list;
+	u8 *stash[0];
+};
+
+struct usb_webusb_cap_data {
+	__le16 bcdVersion;
+	u8 bVendorCode;
+	u8 iLandingPage;
+};
+
+struct usb_os_desc_ext_prop {
+	struct list_head entry;
+	u8 type;
+	int name_len;
+	char *name;
+	int data_len;
+	char *data;
+	struct config_item item;
+};
+
+struct usb_os_string {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 qwSignature[14];
+	__u8 bMS_VendorCode;
+	__u8 bPad;
+};
+
+struct usb_string_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	union {
+		__le16 legacy_padding;
+		struct {
+			struct {} __empty_wData;
+			__le16 wData[0];
+		};
+	};
+};
+
+struct usb_plat_dev_cap_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDevCapabilityType;
+	__u8 bReserved;
+	__u8 UUID[16];
+	__u8 CapabilityData[0];
+};
+
+struct usb_composite_overwrite {
+	u16 idVendor;
+	u16 idProduct;
+	u16 bcdDevice;
+	char *serial_number;
+	char *manufacturer;
+	char *product;
+};
+
+struct gadget_info {
+	struct config_group group;
+	struct config_group functions_group;
+	struct config_group configs_group;
+	struct config_group strings_group;
+	struct config_group os_desc_group;
+	struct config_group webusb_group;
+	struct mutex lock;
+	struct usb_gadget_strings *gstrings[3];
+	struct list_head string_list;
+	struct list_head available_func;
+	struct usb_composite_driver composite;
+	struct usb_composite_dev cdev;
+	bool use_os_desc;
+	char b_vendor_code;
+	char qw_sign[14];
+	bool use_webusb;
+	u16 bcd_webusb_version;
+	u8 b_webusb_vendor_code;
+	char landing_page[260];
+	spinlock_t spinlock;
+	bool unbind;
+};
+
+struct config_usb_cfg {
+	struct config_group group;
+	struct config_group strings_group;
+	struct list_head string_list;
+	struct usb_configuration c;
+	struct list_head func_list;
+	struct usb_gadget_strings *gstrings[3];
+};
+
+struct gadget_config_name {
+	struct usb_gadget_strings stringtab_dev;
+	struct usb_string strings;
+	char *configuration;
+	struct config_group group;
+	struct list_head list;
+};
+
+struct gadget_language {
+	struct usb_gadget_strings stringtab_dev;
+	struct usb_string strings[3];
+	char *manufacturer;
+	char *product;
+	char *serialnumber;
+	struct config_group group;
+	struct list_head list;
+	struct list_head gadget_strings;
+	unsigned int nstrings;
+};
+
+struct gadget_string {
+	struct config_item item;
+	struct list_head list;
+	char string[126];
+	struct usb_string usb_string;
+};
+
+struct usb_udc {
+	struct usb_gadget_driver *driver;
+	struct usb_gadget *gadget;
+	struct device dev;
+	struct list_head list;
+	bool vbus;
+	bool started;
+	bool allow_connect;
+	struct work_struct vbus_work;
+	struct mutex connect_lock;
+};
+
+typedef void (*btf_trace_usb_gadget_frame_number)(void *, struct usb_gadget *, int);
+
+typedef void (*btf_trace_usb_gadget_wakeup)(void *, struct usb_gadget *, int);
+
+typedef void (*btf_trace_usb_gadget_set_remote_wakeup)(void *, struct usb_gadget *, int);
+
+typedef void (*btf_trace_usb_gadget_set_selfpowered)(void *, struct usb_gadget *, int);
+
+typedef void (*btf_trace_usb_gadget_clear_selfpowered)(void *, struct usb_gadget *, int);
+
+typedef void (*btf_trace_usb_gadget_vbus_connect)(void *, struct usb_gadget *, int);
+
+typedef void (*btf_trace_usb_gadget_vbus_draw)(void *, struct usb_gadget *, int);
+
+typedef void (*btf_trace_usb_gadget_vbus_disconnect)(void *, struct usb_gadget *, int);
+
+typedef void (*btf_trace_usb_gadget_connect)(void *, struct usb_gadget *, int);
+
+typedef void (*btf_trace_usb_gadget_disconnect)(void *, struct usb_gadget *, int);
+
+typedef void (*btf_trace_usb_gadget_deactivate)(void *, struct usb_gadget *, int);
+
+typedef void (*btf_trace_usb_gadget_activate)(void *, struct usb_gadget *, int);
+
+typedef void (*btf_trace_usb_ep_set_maxpacket_limit)(void *, struct usb_ep *, int);
+
+typedef void (*btf_trace_usb_ep_enable)(void *, struct usb_ep *, int);
+
+typedef void (*btf_trace_usb_ep_disable)(void *, struct usb_ep *, int);
+
+typedef void (*btf_trace_usb_ep_set_halt)(void *, struct usb_ep *, int);
+
+typedef void (*btf_trace_usb_ep_clear_halt)(void *, struct usb_ep *, int);
+
+typedef void (*btf_trace_usb_ep_set_wedge)(void *, struct usb_ep *, int);
+
+typedef void (*btf_trace_usb_ep_fifo_status)(void *, struct usb_ep *, int);
+
+typedef void (*btf_trace_usb_ep_fifo_flush)(void *, struct usb_ep *, int);
+
+typedef void (*btf_trace_usb_ep_alloc_request)(void *, struct usb_ep *, struct usb_request *, int);
+
+typedef void (*btf_trace_usb_ep_free_request)(void *, struct usb_ep *, struct usb_request *, int);
+
+typedef void (*btf_trace_usb_ep_queue)(void *, struct usb_ep *, struct usb_request *, int);
+
+typedef void (*btf_trace_usb_ep_dequeue)(void *, struct usb_ep *, struct usb_request *, int);
+
+typedef void (*btf_trace_usb_gadget_giveback_request)(void *, struct usb_ep *, struct usb_request *, int);
+
+struct trace_event_raw_udc_log_gadget {
+	struct trace_entry ent;
+	enum usb_device_speed speed;
+	enum usb_device_speed max_speed;
+	enum usb_device_state state;
+	unsigned int mA;
+	unsigned int sg_supported;
+	unsigned int is_otg;
+	unsigned int is_a_peripheral;
+	unsigned int b_hnp_enable;
+	unsigned int a_hnp_support;
+	unsigned int hnp_polling_support;
+	unsigned int host_request_flag;
+	unsigned int quirk_ep_out_aligned_size;
+	unsigned int quirk_altset_not_supp;
+	unsigned int quirk_stall_not_supp;
+	unsigned int quirk_zlp_not_supp;
+	unsigned int is_selfpowered;
+	unsigned int deactivated;
+	unsigned int connected;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_udc_log_ep {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	unsigned int maxpacket;
+	unsigned int maxpacket_limit;
+	unsigned int max_streams;
+	unsigned int mult;
+	unsigned int maxburst;
+	u8 address;
+	bool claimed;
+	bool enabled;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_udc_log_req {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	unsigned int length;
+	unsigned int actual;
+	unsigned int num_sgs;
+	unsigned int num_mapped_sgs;
+	unsigned int stream_id;
+	unsigned int no_interrupt;
+	unsigned int zero;
+	unsigned int short_not_ok;
+	int status;
+	int ret;
+	struct usb_request *req;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_udc_log_ep {
+	u32 name;
+};
+
+struct trace_event_data_offsets_udc_log_req {
+	u32 name;
+};
+
+struct trace_event_data_offsets_udc_log_gadget {};
+
+struct f_serial_opts {
+	struct usb_function_instance func_inst;
+	u8 port_num;
+};
+
+struct usb_cdc_line_coding {
+	__le32 dwDTERate;
+	__u8 bCharFormat;
+	__u8 bParityType;
+	__u8 bDataBits;
+} __attribute__((packed));
+
+struct gs_port;
+
+struct gserial {
+	struct usb_function func;
+	struct gs_port *ioport;
+	struct usb_ep *in;
+	struct usb_ep *out;
+	struct usb_cdc_line_coding port_line_coding;
+	void (*connect)(struct gserial *);
+	void (*disconnect)(struct gserial *);
+	int (*send_break)(struct gserial *, int);
+};
+
+struct f_acm {
+	struct gserial port;
+	u8 ctrl_id;
+	u8 data_id;
+	u8 port_num;
+	u8 pending;
+	spinlock_t lock;
+	struct usb_ep *notify;
+	struct usb_request *notify_req;
+	struct usb_cdc_line_coding port_line_coding;
+	u16 port_handshake_bits;
+	u16 serial_state;
+};
+
+struct usb_cdc_notification {
+	__u8 bmRequestType;
+	__u8 bNotificationType;
+	__le16 wValue;
+	__le16 wIndex;
+	__le16 wLength;
+};
+
+struct portmaster {
+	struct mutex lock;
+	struct gs_port *port;
+};
+
+struct kfifo {
+	union {
+		struct __kfifo kfifo;
+		unsigned char *type;
+		const unsigned char *const_type;
+		char (*rectype)[0];
+		void *ptr;
+		const void *ptr_const;
+	};
+	unsigned char buf[0];
+};
+
+struct gs_port {
+	struct tty_port port;
+	spinlock_t port_lock;
+	struct gserial *port_usb;
+	u8 port_num;
+	struct list_head read_pool;
+	int read_started;
+	int read_allocated;
+	struct list_head read_queue;
+	unsigned int n_read;
+	struct delayed_work push;
+	struct list_head write_pool;
+	int write_started;
+	int write_allocated;
+	struct kfifo port_write_buf;
+	wait_queue_head_t drain_wait;
+	bool write_busy;
+	wait_queue_head_t close_wait;
+	bool suspended;
+	bool start_delayed;
+	struct usb_cdc_line_coding port_line_coding;
+};
+
+struct f_gser {
+	struct gserial port;
+	u8 data_id;
+	u8 port_num;
+};
+
+struct gether;
+
+struct eth_dev {
+	spinlock_t lock;
+	struct gether *port_usb;
+	struct net_device *net;
+	struct usb_gadget *gadget;
+	spinlock_t req_lock;
+	struct list_head tx_reqs;
+	struct list_head rx_reqs;
+	atomic_t tx_qlen;
+	struct sk_buff_head rx_frames;
+	unsigned int qmult;
+	unsigned int header_len;
+	struct sk_buff * (*wrap)(struct gether *, struct sk_buff *);
+	int (*unwrap)(struct gether *, struct sk_buff *, struct sk_buff_head *);
+	struct work_struct work;
+	unsigned long todo;
+	bool zlp;
+	bool no_skb_reserve;
+	bool ifname_set;
+	u8 host_mac[6];
+	u8 dev_mac[6];
+};
+
+struct gether {
+	struct usb_function func;
+	struct eth_dev *ioport;
+	struct usb_ep *in_ep;
+	struct usb_ep *out_ep;
+	bool is_zlp_ok;
+	u16 cdc_filter;
+	u32 header_len;
+	bool is_fixed;
+	u32 fixed_out_len;
+	u32 fixed_in_len;
+	bool supports_multi_frame;
+	struct sk_buff * (*wrap)(struct gether *, struct sk_buff *);
+	int (*unwrap)(struct gether *, struct sk_buff *, struct sk_buff_head *);
+	void (*open)(struct gether *);
+	void (*close)(struct gether *);
+	bool is_suspend;
+};
+
+struct ndp_parser_opts {
+	u32 nth_sign;
+	u32 ndp_sign;
+	unsigned int nth_size;
+	unsigned int ndp_size;
+	unsigned int dpe_size;
+	unsigned int ndplen_align;
+	unsigned int dgram_item_len;
+	unsigned int block_length;
+	unsigned int ndp_index;
+	unsigned int reserved1;
+	unsigned int reserved2;
+	unsigned int next_ndp_index;
+};
+
+struct usb_cdc_ncm_ntb_parameters {
+	__le16 wLength;
+	__le16 bmNtbFormatsSupported;
+	__le32 dwNtbInMaxSize;
+	__le16 wNdpInDivisor;
+	__le16 wNdpInPayloadRemainder;
+	__le16 wNdpInAlignment;
+	__le16 wPadding1;
+	__le32 dwNtbOutMaxSize;
+	__le16 wNdpOutDivisor;
+	__le16 wNdpOutPayloadRemainder;
+	__le16 wNdpOutAlignment;
+	__le16 wNtbOutMaxDatagrams;
+};
+
+enum ncm_notify_state {
+	NCM_NOTIFY_NONE = 0,
+	NCM_NOTIFY_CONNECT = 1,
+	NCM_NOTIFY_SPEED = 2,
+};
+
+struct f_ncm_opts {
+	struct usb_function_instance func_inst;
+	struct net_device *net;
+	bool bound;
+	struct config_group *ncm_interf_group;
+	struct usb_os_desc ncm_os_desc;
+	char ncm_ext_compat_id[16];
+	struct mutex lock;
+	int refcnt;
+};
+
+struct f_ncm {
+	struct gether port;
+	u8 ctrl_id;
+	u8 data_id;
+	char ethaddr[14];
+	struct usb_ep *notify;
+	struct usb_request *notify_req;
+	u8 notify_state;
+	atomic_t notify_count;
+	bool is_open;
+	const struct ndp_parser_opts *parser_opts;
+	bool is_crc;
+	u32 ndp_sign;
+	spinlock_t lock;
+	struct net_device *netdev;
+	struct sk_buff *skb_tx_data;
+	struct sk_buff *skb_tx_ndp;
+	u16 ndp_dgram_count;
+	struct hrtimer task_timer;
+};
+
+enum ecm_notify_state {
+	ECM_NOTIFY_NONE = 0,
+	ECM_NOTIFY_CONNECT = 1,
+	ECM_NOTIFY_SPEED = 2,
+};
+
+struct f_ecm_opts {
+	struct usb_function_instance func_inst;
+	struct net_device *net;
+	bool bound;
+	struct mutex lock;
+	int refcnt;
+};
+
+struct f_ecm {
+	struct gether port;
+	u8 ctrl_id;
+	u8 data_id;
+	char ethaddr[14];
+	struct usb_ep *notify;
+	struct usb_request *notify_req;
+	u8 notify_state;
+	atomic_t notify_count;
+	bool is_open;
+};
+
+struct f_eem_opts {
+	struct usb_function_instance func_inst;
+	struct net_device *net;
+	bool bound;
+	struct mutex lock;
+	int refcnt;
+};
+
+struct f_eem {
+	struct gether port;
+	u8 ctrl_id;
+};
+
+struct in_context {
+	struct sk_buff *skb;
+	struct usb_ep *ep;
+};
+
+enum fsg_buffer_state {
+	BUF_STATE_SENDING = -2,
+	BUF_STATE_RECEIVING = -1,
+	BUF_STATE_EMPTY = 0,
+	BUF_STATE_FULL = 1,
+};
+
+enum fsg_state {
+	FSG_STATE_NORMAL = 0,
+	FSG_STATE_ABORT_BULK_OUT = 1,
+	FSG_STATE_PROTOCOL_RESET = 2,
+	FSG_STATE_CONFIG_CHANGE = 3,
+	FSG_STATE_EXIT = 4,
+	FSG_STATE_TERMINATED = 5,
+};
+
+enum data_direction {
+	DATA_DIR_UNKNOWN = 0,
+	DATA_DIR_FROM_HOST = 1,
+	DATA_DIR_TO_HOST = 2,
+	DATA_DIR_NONE = 3,
+};
+
+enum {
+	FSG_STRING_INTERFACE = 0,
+};
+
+struct fsg_lun {
+	struct file *filp;
+	loff_t file_length;
+	loff_t num_sectors;
+	unsigned int initially_ro: 1;
+	unsigned int ro: 1;
+	unsigned int removable: 1;
+	unsigned int cdrom: 1;
+	unsigned int prevent_medium_removal: 1;
+	unsigned int registered: 1;
+	unsigned int info_valid: 1;
+	unsigned int nofua: 1;
+	u32 sense_data;
+	u32 sense_data_info;
+	u32 unit_attention_data;
+	unsigned int blkbits;
+	unsigned int blksize;
+	struct device dev;
+	const char *name;
+	const char **name_pfx;
+	char inquiry_string[29];
+};
+
+struct fsg_lun_opts {
+	struct config_group group;
+	struct fsg_lun *lun;
+	int lun_id;
+};
+
+struct fsg_common;
+
+struct fsg_opts {
+	struct fsg_common *common;
+	struct usb_function_instance func_inst;
+	struct fsg_lun_opts lun0;
+	struct config_group *default_groups[2];
+	bool no_configfs;
+	struct mutex lock;
+	int refcnt;
+};
+
+struct fsg_dev;
+
+struct fsg_buffhd;
+
+struct fsg_common {
+	struct usb_gadget *gadget;
+	struct usb_composite_dev *cdev;
+	struct fsg_dev *fsg;
+	wait_queue_head_t io_wait;
+	wait_queue_head_t fsg_wait;
+	struct rw_semaphore filesem;
+	spinlock_t lock;
+	struct usb_ep *ep0;
+	struct usb_request *ep0req;
+	unsigned int ep0_req_tag;
+	struct fsg_buffhd *next_buffhd_to_fill;
+	struct fsg_buffhd *next_buffhd_to_drain;
+	struct fsg_buffhd *buffhds;
+	unsigned int fsg_num_buffers;
+	int cmnd_size;
+	u8 cmnd[16];
+	unsigned int lun;
+	struct fsg_lun *luns[16];
+	struct fsg_lun *curlun;
+	unsigned int bulk_out_maxpacket;
+	enum fsg_state state;
+	unsigned int exception_req_tag;
+	void *exception_arg;
+	enum data_direction data_dir;
+	u32 data_size;
+	u32 data_size_from_cmnd;
+	u32 tag;
+	u32 residue;
+	u32 usb_amount_left;
+	unsigned int can_stall: 1;
+	unsigned int free_storage_on_release: 1;
+	unsigned int phase_error: 1;
+	unsigned int short_packet_received: 1;
+	unsigned int bad_lun_okay: 1;
+	unsigned int running: 1;
+	unsigned int sysfs: 1;
+	struct completion thread_notifier;
+	struct task_struct *thread_task;
+	void *private_data;
+	char inquiry_string[29];
+};
+
+struct fsg_dev {
+	struct usb_function function;
+	struct usb_gadget *gadget;
+	struct fsg_common *common;
+	u16 interface_number;
+	unsigned int bulk_in_enabled: 1;
+	unsigned int bulk_out_enabled: 1;
+	unsigned long atomic_bitflags;
+	struct usb_ep *bulk_in;
+	struct usb_ep *bulk_out;
+};
+
+struct fsg_buffhd {
+	void *buf;
+	enum fsg_buffer_state state;
+	struct fsg_buffhd *next;
+	unsigned int bulk_out_intended_length;
+	struct usb_request *inreq;
+	struct usb_request *outreq;
+};
+
+struct fsg_lun_config {
+	const char *filename;
+	char ro;
+	char removable;
+	char cdrom;
+	char nofua;
+	char inquiry_string[29];
+};
+
+struct fsg_operations;
+
+struct fsg_config {
+	unsigned int nluns;
+	struct fsg_lun_config luns[16];
+	const struct fsg_operations *ops;
+	void *private_data;
+	const char *vendor_name;
+	const char *product_name;
+	char can_stall;
+	unsigned int fsg_num_buffers;
+};
+
+struct fsg_module_parameters {
+	char *file[16];
+	bool ro[16];
+	bool removable[16];
+	bool cdrom[16];
+	bool nofua[16];
+	unsigned int file_count;
+	unsigned int ro_count;
+	unsigned int removable_count;
+	unsigned int cdrom_count;
+	unsigned int nofua_count;
+	unsigned int luns;
+	bool stall;
+};
+
+enum ffs_state {
+	FFS_READ_DESCRIPTORS = 0,
+	FFS_READ_STRINGS = 1,
+	FFS_ACTIVE = 2,
+	FFS_DEACTIVATED = 3,
+	FFS_CLOSING = 4,
+};
+
+enum ffs_setup_state {
+	FFS_NO_SETUP = 0,
+	FFS_SETUP_PENDING = 1,
+	FFS_SETUP_CANCELLED = 2,
+};
+
+enum {
+	Opt_no_disconnect = 0,
+	Opt_rmode = 1,
+	Opt_fmode = 2,
+	Opt_mode___6 = 3,
+	Opt_uid___6 = 4,
+	Opt_gid___7 = 5,
+};
+
+enum usb_functionfs_event_type {
+	FUNCTIONFS_BIND = 0,
+	FUNCTIONFS_UNBIND = 1,
+	FUNCTIONFS_ENABLE = 2,
+	FUNCTIONFS_DISABLE = 3,
+	FUNCTIONFS_SETUP = 4,
+	FUNCTIONFS_SUSPEND = 5,
+	FUNCTIONFS_RESUME = 6,
+};
+
+enum {
+	FUNCTIONFS_DESCRIPTORS_MAGIC = 1,
+	FUNCTIONFS_STRINGS_MAGIC = 2,
+	FUNCTIONFS_DESCRIPTORS_MAGIC_V2 = 3,
+};
+
+enum functionfs_flags {
+	FUNCTIONFS_HAS_FS_DESC = 1,
+	FUNCTIONFS_HAS_HS_DESC = 2,
+	FUNCTIONFS_HAS_SS_DESC = 4,
+	FUNCTIONFS_HAS_MS_OS_DESC = 8,
+	FUNCTIONFS_VIRTUAL_ADDR = 16,
+	FUNCTIONFS_EVENTFD = 32,
+	FUNCTIONFS_ALL_CTRL_RECIP = 64,
+	FUNCTIONFS_CONFIG0_SETUP = 128,
+};
+
+enum ffs_entity_type {
+	FFS_DESCRIPTOR = 0,
+	FFS_INTERFACE = 1,
+	FFS_STRING = 2,
+	FFS_ENDPOINT = 3,
+};
+
+enum ffs_os_desc_type {
+	FFS_OS_DESC = 0,
+	FFS_OS_DESC_EXT_COMPAT = 1,
+	FFS_OS_DESC_EXT_PROP = 2,
+};
+
+struct ffs_data;
+
+struct f_fs_opts;
+
+struct ffs_dev {
+	struct ffs_data *ffs_data;
+	struct f_fs_opts *opts;
+	struct list_head entry;
+	char name[41];
+	bool mounted;
+	bool desc_ready;
+	bool single;
+	int (*ffs_ready_callback)(struct ffs_data *);
+	void (*ffs_closed_callback)(struct ffs_data *);
+	void * (*ffs_acquire_dev_callback)(struct ffs_dev *);
+	void (*ffs_release_dev_callback)(struct ffs_dev *);
+};
+
+struct ffs_file_perms {
+	umode_t mode;
+	kuid_t uid;
+	kgid_t gid;
+};
+
+struct ffs_function;
+
+struct ffs_epfile;
+
+struct ffs_data {
+	struct usb_gadget *gadget;
+	struct mutex mutex;
+	spinlock_t eps_lock;
+	struct usb_request *ep0req;
+	struct completion ep0req_completion;
+	refcount_t ref;
+	atomic_t opened;
+	enum ffs_state state;
+	enum ffs_setup_state setup_state;
+	struct {
+		u8 types[4];
+		unsigned short count;
+		unsigned short can_stall;
+		struct usb_ctrlrequest setup;
+		wait_queue_head_t waitq;
+	} ev;
+	unsigned long flags;
+	wait_queue_head_t wait;
+	struct ffs_function *func;
+	const char *dev_name;
+	void *private_data;
+	const void *raw_descs_data;
+	const void *raw_descs;
+	unsigned int raw_descs_length;
+	unsigned int fs_descs_count;
+	unsigned int hs_descs_count;
+	unsigned int ss_descs_count;
+	unsigned int ms_os_descs_count;
+	unsigned int ms_os_descs_ext_prop_count;
+	unsigned int ms_os_descs_ext_prop_name_len;
+	unsigned int ms_os_descs_ext_prop_data_len;
+	void *ms_os_descs_ext_prop_avail;
+	void *ms_os_descs_ext_prop_name_avail;
+	void *ms_os_descs_ext_prop_data_avail;
+	unsigned int user_flags;
+	u8 eps_addrmap[31];
+	unsigned short strings_count;
+	unsigned short interfaces_count;
+	unsigned short eps_count;
+	unsigned short _pad1;
+	const void *raw_strings;
+	struct usb_gadget_strings **stringtabs;
+	struct super_block *sb;
+	struct ffs_file_perms file_perms;
+	struct eventfd_ctx *ffs_eventfd;
+	struct workqueue_struct *io_completion_wq;
+	bool no_disconnect;
+	struct work_struct reset_work;
+	struct ffs_epfile *epfiles;
+};
+
+struct ffs_ep;
+
+struct ffs_function {
+	struct usb_configuration *conf;
+	struct usb_gadget *gadget;
+	struct ffs_data *ffs;
+	struct ffs_ep *eps;
+	u8 eps_revmap[16];
+	short *interfaces_nums;
+	struct usb_function function;
+};
+
+struct ffs_ep {
+	struct usb_ep *ep;
+	struct usb_request *req;
+	struct usb_endpoint_descriptor *descs[3];
+	u8 num;
+};
+
+struct ffs_buffer;
+
+struct ffs_epfile {
+	struct mutex mutex;
+	struct ffs_data *ffs;
+	struct ffs_ep *ep;
+	struct dentry *dentry;
+	struct ffs_buffer *read_buffer;
+	char name[5];
+	unsigned char in;
+	unsigned char isoc;
+	unsigned char _pad;
+};
+
+struct ffs_buffer {
+	size_t length;
+	char *data;
+	char storage[0];
+};
+
+struct f_fs_opts {
+	struct usb_function_instance func_inst;
+	struct ffs_dev *dev;
+	unsigned int refcnt;
+	bool no_configfs;
+};
+
+struct ffs_io_data {
+	bool aio;
+	bool read;
+	struct kiocb *kiocb;
+	struct iov_iter data;
+	const void *to_free;
+	char *buf;
+	struct mm_struct *mm;
+	struct work_struct work;
+	struct usb_ep *ep;
+	struct usb_request *req;
+	struct sg_table sgt;
+	bool use_sg;
+	struct ffs_data *ffs;
+	int status;
+	struct completion done;
+};
+
+typedef int (*ffs_entity_callback)(enum ffs_entity_type, u8 *, struct usb_descriptor_header *, void *);
+
+struct ffs_desc_helper {
+	struct ffs_data *ffs;
+	unsigned int interfaces_count;
+	unsigned int eps_count;
+};
+
+struct usb_os_desc_header {
+	__u8 interface;
+	__le32 dwLength;
+	__le16 bcdVersion;
+	__le16 wIndex;
+	union {
+		struct {
+			__u8 bCount;
+			__u8 Reserved;
+		};
+		__le16 wCount;
+	};
+} __attribute__((packed));
+
+typedef int (*ffs_os_desc_callback)(enum ffs_os_desc_type, struct usb_os_desc_header *, void *, unsigned int, void *);
+
+struct usb_ext_prop_desc {
+	__le32 dwSize;
+	__le32 dwPropertyDataType;
+	__le16 wPropertyNameLength;
+} __attribute__((packed));
+
+struct usb_ext_compat_desc {
+	__u8 bFirstInterfaceNumber;
+	__u8 Reserved1;
+	__u8 CompatibleID[8];
+	__u8 SubCompatibleID[8];
+	__u8 Reserved2[6];
+};
+
+struct ffs_sb_fill_data {
+	struct ffs_file_perms perms;
+	umode_t root_mode;
+	const char *dev_name;
+	bool no_disconnect;
+	struct ffs_data *ffs_data;
+};
+
+struct usb_functionfs_event {
+	union {
+		struct usb_ctrlrequest setup;
+	} u;
+	__u8 type;
+	__u8 _pad[3];
+};
+
+typedef unsigned long snd_pcm_uframes_t;
+
+struct snd_pcm_substream;
+
+struct snd_pcm_hw_params;
+
+struct snd_pcm_audio_tstamp_config;
+
+struct snd_pcm_audio_tstamp_report;
+
+struct snd_pcm_ops {
+	int (*open)(struct snd_pcm_substream *);
+	int (*close)(struct snd_pcm_substream *);
+	int (*ioctl)(struct snd_pcm_substream *, unsigned int, void *);
+	int (*hw_params)(struct snd_pcm_substream *, struct snd_pcm_hw_params *);
+	int (*hw_free)(struct snd_pcm_substream *);
+	int (*prepare)(struct snd_pcm_substream *);
+	int (*trigger)(struct snd_pcm_substream *, int);
+	int (*sync_stop)(struct snd_pcm_substream *);
+	snd_pcm_uframes_t (*pointer)(struct snd_pcm_substream *);
+	int (*get_time_info)(struct snd_pcm_substream *, struct timespec64 *, struct timespec64 *, struct snd_pcm_audio_tstamp_config *, struct snd_pcm_audio_tstamp_report *);
+	int (*fill_silence)(struct snd_pcm_substream *, int, unsigned long, unsigned long);
+	int (*copy)(struct snd_pcm_substream *, int, unsigned long, struct iov_iter *, unsigned long);
+	struct page * (*page)(struct snd_pcm_substream *, unsigned long);
+	int (*mmap)(struct snd_pcm_substream *, struct vm_area_struct *);
+	int (*ack)(struct snd_pcm_substream *);
+	u64 android_kabi_reserved1;
+};
+
+struct snd_dma_device {
+	int type;
+	enum dma_data_direction dir;
+	bool need_sync;
+	struct device *dev;
+};
+
+struct snd_dma_buffer {
+	struct snd_dma_device dev;
+	unsigned char *area;
+	dma_addr_t addr;
+	size_t bytes;
+	void *private_data;
+};
+
+struct snd_pcm_group {
+	spinlock_t lock;
+	struct mutex mutex;
+	struct list_head substreams;
+	refcount_t refs;
+};
+
+struct snd_pcm;
+
+struct snd_pcm_str;
+
+struct snd_pcm_runtime;
+
+struct snd_timer;
+
+struct snd_pcm_substream {
+	struct snd_pcm *pcm;
+	struct snd_pcm_str *pstr;
+	void *private_data;
+	int number;
+	char name[32];
+	int stream;
+	struct pm_qos_request latency_pm_qos_req;
+	size_t buffer_bytes_max;
+	struct snd_dma_buffer dma_buffer;
+	size_t dma_max;
+	const struct snd_pcm_ops *ops;
+	struct snd_pcm_runtime *runtime;
+	struct snd_timer *timer;
+	unsigned int timer_running: 1;
+	long wait_time;
+	struct snd_pcm_substream *next;
+	struct list_head link_list;
+	struct snd_pcm_group self_group;
+	struct snd_pcm_group *group;
+	int ref_count;
+	atomic_t mmap_count;
+	unsigned int f_flags;
+	void (*pcm_release)(struct snd_pcm_substream *);
+	struct pid *pid;
+	unsigned int hw_opened: 1;
+	unsigned int managed_buffer_alloc: 1;
+	u64 android_kabi_reserved1;
+};
+
+struct snd_kcontrol;
+
+struct snd_pcm_str {
+	int stream;
+	struct snd_pcm *pcm;
+	unsigned int substream_count;
+	unsigned int substream_opened;
+	struct snd_pcm_substream *substream;
+	struct snd_kcontrol *chmap_kctl;
+	struct device *dev;
+	u64 android_kabi_reserved1;
+};
+
+struct snd_card;
+
+struct snd_pcm {
+	struct snd_card *card;
+	struct list_head list;
+	int device;
+	unsigned int info_flags;
+	unsigned short dev_class;
+	unsigned short dev_subclass;
+	char id[64];
+	char name[80];
+	struct snd_pcm_str streams[2];
+	struct mutex open_mutex;
+	wait_queue_head_t open_wait;
+	void *private_data;
+	void (*private_free)(struct snd_pcm *);
+	bool internal;
+	bool nonatomic;
+	bool no_device_suspend;
+	u64 android_kabi_reserved1;
+};
+
+struct snd_shutdown_f_ops;
+
+struct snd_info_entry;
+
+struct snd_card {
+	int number;
+	char id[16];
+	char driver[16];
+	char shortname[32];
+	char longname[80];
+	char irq_descr[32];
+	char mixername[80];
+	char components[128];
+	struct module *module;
+	void *private_data;
+	void (*private_free)(struct snd_card *);
+	struct list_head devices;
+	struct device *ctl_dev;
+	unsigned int last_numid;
+	struct rw_semaphore controls_rwsem;
+	rwlock_t ctl_files_rwlock;
+	int controls_count;
+	size_t user_ctl_alloc_size;
+	struct list_head controls;
+	struct list_head ctl_files;
+	struct xarray ctl_numids;
+	struct xarray ctl_hash;
+	bool ctl_hash_collision;
+	struct snd_info_entry *proc_root;
+	struct proc_dir_entry *proc_root_link;
+	struct list_head files_list;
+	struct snd_shutdown_f_ops *s_f_ops;
+	spinlock_t files_lock;
+	int shutdown;
+	struct completion *release_completion;
+	struct device *dev;
+	struct device card_dev;
+	const struct attribute_group *dev_groups[4];
+	bool registered;
+	bool managed;
+	bool releasing;
+	int sync_irq;
+	wait_queue_head_t remove_sleep;
+	size_t total_pcm_alloc_bytes;
+	struct mutex memory_mutex;
+	unsigned int power_state;
+	atomic_t power_ref;
+	wait_queue_head_t power_sleep;
+	wait_queue_head_t power_ref_sleep;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+typedef int snd_kcontrol_tlv_rw_t(struct snd_kcontrol *, int, unsigned int, unsigned int __attribute__((btf_type_tag("user"))) *);
+
+typedef int snd_ctl_elem_iface_t;
+
+struct snd_ctl_elem_id {
+	unsigned int numid;
+	snd_ctl_elem_iface_t iface;
+	unsigned int device;
+	unsigned int subdevice;
+	unsigned char name[44];
+	unsigned int index;
+};
+
+struct snd_ctl_elem_info;
+
+typedef int snd_kcontrol_info_t(struct snd_kcontrol *, struct snd_ctl_elem_info *);
+
+struct snd_ctl_elem_value;
+
+typedef int snd_kcontrol_get_t(struct snd_kcontrol *, struct snd_ctl_elem_value *);
+
+typedef int snd_kcontrol_put_t(struct snd_kcontrol *, struct snd_ctl_elem_value *);
+
+struct snd_ctl_file;
+
+struct snd_kcontrol_volatile {
+	struct snd_ctl_file *owner;
+	unsigned int access;
+};
+
+struct snd_kcontrol {
+	struct list_head list;
+	struct snd_ctl_elem_id id;
+	unsigned int count;
+	snd_kcontrol_info_t *info;
+	snd_kcontrol_get_t *get;
+	snd_kcontrol_put_t *put;
+	union {
+		snd_kcontrol_tlv_rw_t *c;
+		const unsigned int *p;
+	} tlv;
+	unsigned long private_value;
+	void *private_data;
+	void (*private_free)(struct snd_kcontrol *);
+	struct snd_kcontrol_volatile vd[0];
+};
+
+typedef int snd_ctl_elem_type_t;
+
+struct snd_ctl_elem_info {
+	struct snd_ctl_elem_id id;
+	snd_ctl_elem_type_t type;
+	unsigned int access;
+	unsigned int count;
+	__kernel_pid_t owner;
+	union {
+		struct {
+			long min;
+			long max;
+			long step;
+		} integer;
+		struct {
+			long long min;
+			long long max;
+			long long step;
+		} integer64;
+		struct {
+			unsigned int items;
+			unsigned int item;
+			char name[64];
+			__u64 names_ptr;
+			unsigned int names_length;
+		} enumerated;
+		unsigned char reserved[128];
+	} value;
+	unsigned char reserved[64];
+};
+
+struct snd_aes_iec958 {
+	unsigned char status[24];
+	unsigned char subcode[147];
+	unsigned char pad;
+	unsigned char dig_subframe[4];
+};
+
+struct snd_ctl_elem_value {
+	struct snd_ctl_elem_id id;
+	unsigned int indirect: 1;
+	union {
+		union {
+			long value[128];
+			long *value_ptr;
+		} integer;
+		union {
+			long long value[64];
+			long long *value_ptr;
+		} integer64;
+		union {
+			unsigned int item[128];
+			unsigned int *item_ptr;
+		} enumerated;
+		union {
+			unsigned char data[512];
+			unsigned char *data_ptr;
+		} bytes;
+		struct snd_aes_iec958 iec958;
+	} value;
+	unsigned char reserved[128];
+};
+
+struct snd_fasync;
+
+struct snd_ctl_file {
+	struct list_head list;
+	struct snd_card *card;
+	struct pid *pid;
+	int preferred_subdevice[2];
+	wait_queue_head_t change_sleep;
+	spinlock_t read_lock;
+	struct snd_fasync *fasync;
+	int subscribed;
+	struct list_head events;
+};
+
+typedef int snd_pcm_state_t;
+
+typedef long snd_pcm_sframes_t;
+
+typedef int snd_pcm_access_t;
+
+typedef int snd_pcm_format_t;
+
+typedef int snd_pcm_subformat_t;
+
+union snd_pcm_sync_id {
+	unsigned char id[16];
+	unsigned short id16[8];
+	unsigned int id32[4];
+};
+
+struct snd_pcm_hardware {
+	unsigned int info;
+	u64 formats;
+	unsigned int rates;
+	unsigned int rate_min;
+	unsigned int rate_max;
+	unsigned int channels_min;
+	unsigned int channels_max;
+	size_t buffer_bytes_max;
+	size_t period_bytes_min;
+	size_t period_bytes_max;
+	unsigned int periods_min;
+	unsigned int periods_max;
+	size_t fifo_size;
+};
+
+struct snd_mask {
+	__u32 bits[8];
+};
+
+struct snd_interval {
+	unsigned int min;
+	unsigned int max;
+	unsigned int openmin: 1;
+	unsigned int openmax: 1;
+	unsigned int integer: 1;
+	unsigned int empty: 1;
+};
+
+struct snd_pcm_hw_rule;
+
+struct snd_pcm_hw_constraints {
+	struct snd_mask masks[3];
+	struct snd_interval intervals[12];
+	unsigned int rules_num;
+	unsigned int rules_all;
+	struct snd_pcm_hw_rule *rules;
+};
+
+struct snd_pcm_audio_tstamp_config {
+	u32 type_requested: 4;
+	u32 report_delay: 1;
+};
+
+struct snd_pcm_audio_tstamp_report {
+	u32 valid: 1;
+	u32 actual_type: 4;
+	u32 accuracy_report: 1;
+	u32 accuracy;
+};
+
+struct snd_pcm_mmap_status;
+
+struct snd_pcm_mmap_control;
+
+struct snd_pcm_runtime {
+	snd_pcm_state_t state;
+	snd_pcm_state_t suspended_state;
+	struct snd_pcm_substream *trigger_master;
+	struct timespec64 trigger_tstamp;
+	bool trigger_tstamp_latched;
+	int overrange;
+	snd_pcm_uframes_t avail_max;
+	snd_pcm_uframes_t hw_ptr_base;
+	snd_pcm_uframes_t hw_ptr_interrupt;
+	unsigned long hw_ptr_jiffies;
+	unsigned long hw_ptr_buffer_jiffies;
+	snd_pcm_sframes_t delay;
+	u64 hw_ptr_wrap;
+	snd_pcm_access_t access;
+	snd_pcm_format_t format;
+	snd_pcm_subformat_t subformat;
+	unsigned int rate;
+	unsigned int channels;
+	snd_pcm_uframes_t period_size;
+	unsigned int periods;
+	snd_pcm_uframes_t buffer_size;
+	snd_pcm_uframes_t min_align;
+	size_t byte_align;
+	unsigned int frame_bits;
+	unsigned int sample_bits;
+	unsigned int info;
+	unsigned int rate_num;
+	unsigned int rate_den;
+	unsigned int no_period_wakeup: 1;
+	int tstamp_mode;
+	unsigned int period_step;
+	snd_pcm_uframes_t start_threshold;
+	snd_pcm_uframes_t stop_threshold;
+	snd_pcm_uframes_t silence_threshold;
+	snd_pcm_uframes_t silence_size;
+	snd_pcm_uframes_t boundary;
+	snd_pcm_uframes_t silence_start;
+	snd_pcm_uframes_t silence_filled;
+	union snd_pcm_sync_id sync;
+	struct snd_pcm_mmap_status *status;
+	struct snd_pcm_mmap_control *control;
+	snd_pcm_uframes_t twake;
+	wait_queue_head_t sleep;
+	wait_queue_head_t tsleep;
+	struct snd_fasync *fasync;
+	bool stop_operating;
+	struct mutex buffer_mutex;
+	atomic_t buffer_accessing;
+	void *private_data;
+	void (*private_free)(struct snd_pcm_runtime *);
+	struct snd_pcm_hardware hw;
+	struct snd_pcm_hw_constraints hw_constraints;
+	unsigned int timer_resolution;
+	int tstamp_type;
+	unsigned char *dma_area;
+	dma_addr_t dma_addr;
+	size_t dma_bytes;
+	struct snd_dma_buffer *dma_buffer_p;
+	unsigned int buffer_changed: 1;
+	struct snd_pcm_audio_tstamp_config audio_tstamp_config;
+	struct snd_pcm_audio_tstamp_report audio_tstamp_report;
+	struct timespec64 driver_tstamp;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+typedef char __pad_before_uframe[0];
+
+typedef char __pad_after_uframe[0];
+
+struct snd_pcm_mmap_status {
+	snd_pcm_state_t state;
+	__u32 pad1;
+	__pad_before_uframe __pad1;
+	snd_pcm_uframes_t hw_ptr;
+	__pad_after_uframe __pad2;
+	struct __kernel_timespec tstamp;
+	snd_pcm_state_t suspended_state;
+	__u32 pad3;
+	struct __kernel_timespec audio_tstamp;
+};
+
+struct snd_pcm_mmap_control {
+	__pad_before_uframe __pad1;
+	snd_pcm_uframes_t appl_ptr;
+	__pad_before_uframe __pad2;
+	__pad_before_uframe __pad3;
+	snd_pcm_uframes_t avail_min;
+	__pad_after_uframe __pad4;
+};
+
+typedef int (*snd_pcm_hw_rule_func_t)(struct snd_pcm_hw_params *, struct snd_pcm_hw_rule *);
+
+struct snd_pcm_hw_rule {
+	unsigned int cond;
+	int var;
+	int deps[5];
+	snd_pcm_hw_rule_func_t func;
+	void *private;
+};
+
+struct snd_pcm_hw_params {
+	unsigned int flags;
+	struct snd_mask masks[3];
+	struct snd_mask mres[5];
+	struct snd_interval intervals[12];
+	struct snd_interval ires[9];
+	unsigned int rmask;
+	unsigned int cmask;
+	unsigned int info;
+	unsigned int msbits;
+	unsigned int rate_num;
+	unsigned int rate_den;
+	snd_pcm_uframes_t fifo_size;
+	unsigned char reserved[64];
+};
+
+struct snd_kcontrol_new {
+	snd_ctl_elem_iface_t iface;
+	unsigned int device;
+	unsigned int subdevice;
+	const char *name;
+	unsigned int index;
+	unsigned int access;
+	unsigned int count;
+	snd_kcontrol_info_t *info;
+	snd_kcontrol_get_t *get;
+	snd_kcontrol_put_t *put;
+	union {
+		snd_kcontrol_tlv_rw_t *c;
+		const unsigned int *p;
+	} tlv;
+	unsigned long private_value;
+};
+
+enum {
+	SNDRV_PCM_STREAM_PLAYBACK = 0,
+	SNDRV_PCM_STREAM_CAPTURE = 1,
+	SNDRV_PCM_STREAM_LAST = 1,
+};
+
+enum {
+	UAC_FBACK_CTRL = 0,
+	UAC_P_PITCH_CTRL = 1,
+	UAC_MUTE_CTRL = 2,
+	UAC_VOLUME_CTRL = 3,
+	UAC_RATE_CTRL = 4,
+};
+
+struct snd_uac_chip;
+
+struct uac_rtd_params {
+	struct snd_uac_chip *uac;
+	bool ep_enabled;
+	struct snd_pcm_substream *ss;
+	ssize_t hw_ptr;
+	void *rbuf;
+	unsigned int pitch;
+	unsigned int max_psize;
+	struct usb_request **reqs;
+	struct usb_request *req_fback;
+	bool fb_ep_enabled;
+	int fu_id;
+	struct snd_kcontrol *snd_kctl_volume;
+	struct snd_kcontrol *snd_kctl_mute;
+	s16 volume_min;
+	s16 volume_max;
+	s16 volume_res;
+	s16 volume;
+	int mute;
+	struct snd_kcontrol *snd_kctl_rate;
+	int srate;
+	int active;
+	spinlock_t lock;
+};
+
+struct g_audio;
+
+struct snd_uac_chip {
+	struct g_audio *audio_dev;
+	struct uac_rtd_params p_prm;
+	struct uac_rtd_params c_prm;
+	struct snd_card *card;
+	struct snd_pcm *pcm;
+	unsigned long long p_residue_mil;
+	unsigned int p_interval;
+	unsigned int p_framesize;
+};
+
+struct uac_fu_params {
+	int id;
+	bool mute_present;
+	bool volume_present;
+	s16 volume_min;
+	s16 volume_max;
+	s16 volume_res;
+};
+
+struct uac_params {
+	int p_chmask;
+	int p_srates[10];
+	int p_ssize;
+	struct uac_fu_params p_fu;
+	int c_chmask;
+	int c_srates[10];
+	int c_ssize;
+	struct uac_fu_params c_fu;
+	int req_number;
+	int fb_max;
+};
+
+struct g_audio {
+	struct usb_function func;
+	struct usb_gadget *gadget;
+	struct usb_ep *in_ep;
+	struct usb_ep *out_ep;
+	struct usb_ep *in_ep_fback;
+	unsigned int in_ep_maxpsize;
+	unsigned int out_ep_maxpsize;
+	int (*notify)(struct g_audio *, int, int);
+	struct snd_uac_chip *uac;
+	struct uac_params params;
+};
+
+typedef int snd_pcm_hw_param_t;
+
+struct uac2_feature_unit_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bUnitID;
+	__u8 bSourceID;
+	__u8 bmaControls[0];
+};
+
+struct uac_clock_source_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bClockID;
+	__u8 bmAttributes;
+	__u8 bmControls;
+	__u8 bAssocTerminal;
+	__u8 iClockSource;
+};
+
+struct uac2_input_terminal_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bTerminalID;
+	__le16 wTerminalType;
+	__u8 bAssocTerminal;
+	__u8 bCSourceID;
+	__u8 bNrChannels;
+	__le32 bmChannelConfig;
+	__u8 iChannelNames;
+	__le16 bmControls;
+	__u8 iTerminal;
+} __attribute__((packed));
+
+struct uac2_output_terminal_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bTerminalID;
+	__le16 wTerminalType;
+	__u8 bAssocTerminal;
+	__u8 bSourceID;
+	__u8 bCSourceID;
+	__le16 bmControls;
+	__u8 iTerminal;
+} __attribute__((packed));
+
+struct uac2_as_header_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bTerminalLink;
+	__u8 bmControls;
+	__u8 bFormatType;
+	__le32 bmFormats;
+	__u8 bNrChannels;
+	__le32 bmChannelConfig;
+	__u8 iChannelNames;
+} __attribute__((packed));
+
+struct uac2_format_type_i_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bFormatType;
+	__u8 bSubslotSize;
+	__u8 bBitResolution;
+};
+
+struct uac2_ac_header_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__le16 bcdADC;
+	__u8 bCategory;
+	__le16 wTotalLength;
+	__u8 bmControls;
+} __attribute__((packed));
+
+struct uac2_iso_endpoint_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bmAttributes;
+	__u8 bmControls;
+	__u8 bLockDelayUnits;
+	__le16 wLockDelay;
+};
+
+enum {
+	STR_ASSOC = 0,
+	STR_IF_CTRL = 1,
+	STR_CLKSRC_IN = 2,
+	STR_CLKSRC_OUT = 3,
+	STR_USB_IT = 4,
+	STR_IO_IT = 5,
+	STR_USB_OT = 6,
+	STR_IO_OT = 7,
+	STR_FU_IN = 8,
+	STR_FU_OUT = 9,
+	STR_AS_OUT_ALT0 = 10,
+	STR_AS_OUT_ALT1 = 11,
+	STR_AS_IN_ALT0 = 12,
+	STR_AS_IN_ALT1 = 13,
+};
+
+struct f_uac2_opts {
+	struct usb_function_instance func_inst;
+	int p_chmask;
+	int p_srates[10];
+	int p_ssize;
+	u8 p_hs_bint;
+	int c_chmask;
+	int c_srates[10];
+	int c_ssize;
+	int c_sync;
+	u8 c_hs_bint;
+	bool p_mute_present;
+	bool p_volume_present;
+	s16 p_volume_min;
+	s16 p_volume_max;
+	s16 p_volume_res;
+	bool c_mute_present;
+	bool c_volume_present;
+	s16 c_volume_min;
+	s16 c_volume_max;
+	s16 c_volume_res;
+	int req_number;
+	int fb_max;
+	bool bound;
+	char function_name[32];
+	struct mutex lock;
+	int refcnt;
+};
+
+struct f_uac2 {
+	struct g_audio g_audio;
+	u8 ac_intf;
+	u8 as_in_intf;
+	u8 as_out_intf;
+	u8 ac_alt;
+	u8 as_in_alt;
+	u8 as_out_alt;
+	struct usb_ctrlrequest setup_cr;
+	struct usb_ep *int_ep;
+	atomic_t int_count;
+	int clock_id;
+};
+
+struct cntrl_cur_lay2 {
+	__le16 wCUR;
+};
+
+struct cntrl_cur_lay3 {
+	__le32 dCUR;
+};
+
+struct cntrl_range_lay2 {
+	__le16 wNumSubRanges;
+	__le16 wMIN;
+	__le16 wMAX;
+	__le16 wRES;
+};
+
+struct cntrl_subrange_lay3 {
+	__le32 dMIN;
+	__le32 dMAX;
+	__le32 dRES;
+};
+
+struct cntrl_ranges_lay3_srates {
+	__le16 wNumSubRanges;
+	struct cntrl_subrange_lay3 r[10];
+} __attribute__((packed));
+
+struct uac2_interrupt_data_msg {
+	__u8 bInfo;
+	__u8 bAttribute;
+	__le16 wValue;
+	__le16 wIndex;
+};
+
+struct uvc_control_endpoint_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubType;
+	__le16 wMaxTransferSize;
+} __attribute__((packed));
+
+enum media_pad_signal_type {
+	PAD_SIGNAL_DEFAULT = 0,
+	PAD_SIGNAL_ANALOG = 1,
+	PAD_SIGNAL_DV = 2,
+	PAD_SIGNAL_AUDIO = 3,
+};
+
+enum media_request_state {
+	MEDIA_REQUEST_STATE_IDLE = 0,
+	MEDIA_REQUEST_STATE_VALIDATING = 1,
+	MEDIA_REQUEST_STATE_QUEUED = 2,
+	MEDIA_REQUEST_STATE_COMPLETE = 3,
+	MEDIA_REQUEST_STATE_CLEANING = 4,
+	MEDIA_REQUEST_STATE_UPDATING = 5,
+	NR_OF_MEDIA_REQUEST_STATE = 6,
+};
+
+enum media_entity_type {
+	MEDIA_ENTITY_TYPE_BASE = 0,
+	MEDIA_ENTITY_TYPE_VIDEO_DEVICE = 1,
+	MEDIA_ENTITY_TYPE_V4L2_SUBDEV = 2,
+};
+
+enum v4l2_priority {
+	V4L2_PRIORITY_UNSET = 0,
+	V4L2_PRIORITY_BACKGROUND = 1,
+	V4L2_PRIORITY_INTERACTIVE = 2,
+	V4L2_PRIORITY_RECORD = 3,
+	V4L2_PRIORITY_DEFAULT = 2,
+};
+
+enum v4l2_subdev_ir_mode {
+	V4L2_SUBDEV_IR_MODE_PULSE_WIDTH = 0,
+};
+
+enum v4l2_mbus_frame_desc_type {
+	V4L2_MBUS_FRAME_DESC_TYPE_UNDEFINED = 0,
+	V4L2_MBUS_FRAME_DESC_TYPE_PARALLEL = 1,
+	V4L2_MBUS_FRAME_DESC_TYPE_CSI2 = 2,
+};
+
+enum v4l2_mbus_frame_desc_flags {
+	V4L2_MBUS_FRAME_DESC_FL_LEN_MAX = 1,
+	V4L2_MBUS_FRAME_DESC_FL_BLOB = 2,
+};
+
+enum v4l2_mbus_type {
+	V4L2_MBUS_UNKNOWN = 0,
+	V4L2_MBUS_PARALLEL = 1,
+	V4L2_MBUS_BT656 = 2,
+	V4L2_MBUS_CSI1 = 3,
+	V4L2_MBUS_CCP2 = 4,
+	V4L2_MBUS_CSI2_DPHY = 5,
+	V4L2_MBUS_CSI2_CPHY = 6,
+	V4L2_MBUS_DPI = 7,
+	V4L2_MBUS_INVALID = 8,
+};
+
+enum v4l2_subdev_format_whence {
+	V4L2_SUBDEV_FORMAT_TRY = 0,
+	V4L2_SUBDEV_FORMAT_ACTIVE = 1,
+};
+
+enum v4l2_async_match_type {
+	V4L2_ASYNC_MATCH_TYPE_I2C = 0,
+	V4L2_ASYNC_MATCH_TYPE_FWNODE = 1,
+};
+
+enum vb2_buffer_state {
+	VB2_BUF_STATE_DEQUEUED = 0,
+	VB2_BUF_STATE_IN_REQUEST = 1,
+	VB2_BUF_STATE_PREPARING = 2,
+	VB2_BUF_STATE_QUEUED = 3,
+	VB2_BUF_STATE_ACTIVE = 4,
+	VB2_BUF_STATE_DONE = 5,
+	VB2_BUF_STATE_ERROR = 6,
+};
+
+enum vfl_devnode_type {
+	VFL_TYPE_VIDEO = 0,
+	VFL_TYPE_VBI = 1,
+	VFL_TYPE_RADIO = 2,
+	VFL_TYPE_SUBDEV = 3,
+	VFL_TYPE_SDR = 4,
+	VFL_TYPE_TOUCH = 5,
+	VFL_TYPE_MAX = 6,
+};
+
+enum vfl_devnode_direction {
+	VFL_DIR_RX = 0,
+	VFL_DIR_TX = 1,
+	VFL_DIR_M2M = 2,
+};
+
+enum uvc_state {
+	UVC_STATE_DISCONNECTED = 0,
+	UVC_STATE_CONNECTED = 1,
+	UVC_STATE_STREAMING = 2,
+};
+
+enum uvc_buffer_state {
+	UVC_BUF_STATE_IDLE = 0,
+	UVC_BUF_STATE_QUEUED = 1,
+	UVC_BUF_STATE_ACTIVE = 2,
+	UVC_BUF_STATE_DONE = 3,
+	UVC_BUF_STATE_ERROR = 4,
+};
+
+struct uvc_descriptor_header {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubType;
+};
+
+struct uvc_camera_terminal_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubType;
+	__u8 bTerminalID;
+	__le16 wTerminalType;
+	__u8 bAssocTerminal;
+	__u8 iTerminal;
+	__le16 wObjectiveFocalLengthMin;
+	__le16 wObjectiveFocalLengthMax;
+	__le16 wOcularFocalLength;
+	__u8 bControlSize;
+	__u8 bmControls[3];
+};
+
+struct uvc_processing_unit_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubType;
+	__u8 bUnitID;
+	__u8 bSourceID;
+	__le16 wMaxMultiplier;
+	__u8 bControlSize;
+	__u8 bmControls[2];
+	__u8 iProcessing;
+	__u8 bmVideoStandards;
+} __attribute__((packed));
+
+struct uvc_output_terminal_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubType;
+	__u8 bTerminalID;
+	__le16 wTerminalType;
+	__u8 bAssocTerminal;
+	__u8 bSourceID;
+	__u8 iTerminal;
+} __attribute__((packed));
+
+struct uvcg_streaming_header;
+
+struct f_uvc_opts {
+	struct usb_function_instance func_inst;
+	unsigned int streaming_interval;
+	unsigned int streaming_maxpacket;
+	unsigned int streaming_maxburst;
+	unsigned int control_interface;
+	unsigned int streaming_interface;
+	char function_name[32];
+	unsigned int last_unit_id;
+	bool enable_interrupt_ep;
+	const struct uvc_descriptor_header * const *fs_control;
+	const struct uvc_descriptor_header * const *ss_control;
+	const struct uvc_descriptor_header * const *fs_streaming;
+	const struct uvc_descriptor_header * const *hs_streaming;
+	const struct uvc_descriptor_header * const *ss_streaming;
+	struct uvc_camera_terminal_descriptor uvc_camera_terminal;
+	struct uvc_processing_unit_descriptor uvc_processing;
+	struct uvc_output_terminal_descriptor uvc_output_terminal;
+	struct uvc_descriptor_header *uvc_fs_control_cls[5];
+	struct uvc_descriptor_header *uvc_ss_control_cls[5];
+	struct list_head extension_units;
+	struct uvc_descriptor_header **uvc_fs_streaming_cls;
+	struct uvc_descriptor_header **uvc_hs_streaming_cls;
+	struct uvc_descriptor_header **uvc_ss_streaming_cls;
+	u8 iad_index;
+	u8 vs0_index;
+	u8 vs1_index;
+	struct mutex lock;
+	int refcnt;
+	struct uvcg_streaming_header *header;
+};
+
+struct uvc_input_header_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubType;
+	__u8 bNumFormats;
+	__le16 wTotalLength;
+	__u8 bEndpointAddress;
+	__u8 bmInfo;
+	__u8 bTerminalLink;
+	__u8 bStillCaptureMethod;
+	__u8 bTriggerSupport;
+	__u8 bTriggerUsage;
+	__u8 bControlSize;
+	__u8 bmaControls[0];
+} __attribute__((packed));
+
+struct uvcg_streaming_header {
+	struct config_item item;
+	struct uvc_input_header_descriptor desc;
+	unsigned int linked;
+	struct list_head formats;
+	unsigned int num_fmt;
+};
+
+struct uvcg_extension_unit_descriptor {
+	u8 bLength;
+	u8 bDescriptorType;
+	u8 bDescriptorSubType;
+	u8 bUnitID;
+	u8 guidExtensionCode[16];
+	u8 bNumControls;
+	u8 bNrInPins;
+	u8 *baSourceID;
+	u8 bControlSize;
+	u8 *bmControls;
+	u8 iExtension;
+} __attribute__((packed));
+
+struct uvcg_extension {
+	struct config_item item;
+	struct list_head list;
+	u8 string_descriptor_index;
+	struct uvcg_extension_unit_descriptor desc;
+};
+
+struct media_device;
+
+struct media_gobj {
+	struct media_device *mdev;
+	u32 id;
+	struct list_head list;
+};
+
+struct media_pad;
+
+struct media_entity_operations;
+
+struct media_entity {
+	struct media_gobj graph_obj;
+	const char *name;
+	enum media_entity_type obj_type;
+	u32 function;
+	unsigned long flags;
+	u16 num_pads;
+	u16 num_links;
+	u16 num_backlinks;
+	int internal_idx;
+	struct media_pad *pads;
+	struct list_head links;
+	const struct media_entity_operations *ops;
+	int use_count;
+	union {
+		struct {
+			u32 major;
+			u32 minor;
+		} dev;
+	} info;
+};
+
+struct media_pipeline {
+	bool allocated;
+	struct media_device *mdev;
+	struct list_head pads;
+	int start_count;
+};
+
+typedef __u64 v4l2_std_id;
+
+struct media_intf_devnode;
+
+struct v4l2_file_operations;
+
+struct v4l2_device;
+
+struct v4l2_ctrl_handler;
+
+struct vb2_queue;
+
+struct v4l2_prio_state;
+
+struct v4l2_ioctl_ops;
+
+struct video_device {
+	struct media_entity entity;
+	struct media_intf_devnode *intf_devnode;
+	struct media_pipeline pipe;
+	const struct v4l2_file_operations *fops;
+	u32 device_caps;
+	struct device dev;
+	struct cdev *cdev;
+	struct v4l2_device *v4l2_dev;
+	struct device *dev_parent;
+	struct v4l2_ctrl_handler *ctrl_handler;
+	struct vb2_queue *queue;
+	struct v4l2_prio_state *prio;
+	char name[32];
+	enum vfl_devnode_type vfl_type;
+	enum vfl_devnode_direction vfl_dir;
+	int minor;
+	u16 num;
+	unsigned long flags;
+	int index;
+	spinlock_t fh_lock;
+	struct list_head fh_list;
+	int dev_debug;
+	v4l2_std_id tvnorms;
+	void (*release)(struct video_device *);
+	const struct v4l2_ioctl_ops *ioctl_ops;
+	unsigned long valid_ioctls[3];
+	struct mutex *lock;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct v4l2_prio_state {
+	atomic_t prios[4];
+};
+
+struct v4l2_subdev;
+
+struct v4l2_device {
+	struct device *dev;
+	struct media_device *mdev;
+	struct list_head subdevs;
+	spinlock_t lock;
+	char name[36];
+	void (*notify)(struct v4l2_subdev *, unsigned int, void *);
+	struct v4l2_ctrl_handler *ctrl_handler;
+	struct v4l2_prio_state prio;
+	struct kref ref;
+	void (*release)(struct v4l2_device *);
+};
+
+struct vb2_ops;
+
+struct vb2_mem_ops;
+
+struct vb2_buf_ops;
+
+struct vb2_buffer;
+
+struct vb2_fileio_data;
+
+struct vb2_threadio_data;
+
+struct vb2_queue {
+	unsigned int type;
+	unsigned int io_modes;
+	struct device *dev;
+	unsigned long dma_attrs;
+	unsigned int bidirectional: 1;
+	unsigned int fileio_read_once: 1;
+	unsigned int fileio_write_immediately: 1;
+	unsigned int allow_zero_bytesused: 1;
+	unsigned int quirk_poll_must_check_waiting_for_buffers: 1;
+	unsigned int supports_requests: 1;
+	unsigned int requires_requests: 1;
+	unsigned int uses_qbuf: 1;
+	unsigned int uses_requests: 1;
+	unsigned int allow_cache_hints: 1;
+	unsigned int non_coherent_mem: 1;
+	struct mutex *lock;
+	void *owner;
+	const struct vb2_ops *ops;
+	const struct vb2_mem_ops *mem_ops;
+	const struct vb2_buf_ops *buf_ops;
+	void *drv_priv;
+	u32 subsystem_flags;
+	unsigned int buf_struct_size;
+	u32 timestamp_flags;
+	gfp_t gfp_flags;
+	u32 min_buffers_needed;
+	struct device *alloc_devs[8];
+	struct mutex mmap_lock;
+	unsigned int memory;
+	enum dma_data_direction dma_dir;
+	struct vb2_buffer *bufs[64];
+	unsigned int num_buffers;
+	struct list_head queued_list;
+	unsigned int queued_count;
+	atomic_t owned_by_drv_count;
+	struct list_head done_list;
+	spinlock_t done_lock;
+	wait_queue_head_t done_wq;
+	unsigned int streaming: 1;
+	unsigned int start_streaming_called: 1;
+	unsigned int error: 1;
+	unsigned int waiting_for_buffers: 1;
+	unsigned int waiting_in_dqbuf: 1;
+	unsigned int is_multiplanar: 1;
+	unsigned int is_output: 1;
+	unsigned int copy_timestamp: 1;
+	unsigned int last_buffer_dequeued: 1;
+	struct vb2_fileio_data *fileio;
+	struct vb2_threadio_data *threadio;
+	char name[32];
+};
+
+struct uvc_video_queue {
+	struct vb2_queue queue;
+	unsigned int flags;
+	__u32 sequence;
+	unsigned int buf_used;
+	bool use_sg;
+	spinlock_t irqlock;
+	struct list_head irqqueue;
+};
+
+struct uvc_device;
+
+struct uvc_buffer;
+
+struct uvc_video {
+	struct uvc_device *uvc;
+	struct usb_ep *ep;
+	struct work_struct pump;
+	struct workqueue_struct *async_wq;
+	u8 bpp;
+	u32 fcc;
+	unsigned int width;
+	unsigned int height;
+	unsigned int imagesize;
+	struct mutex mutex;
+	unsigned int uvc_num_requests;
+	bool is_enabled;
+	unsigned int req_size;
+	struct list_head ureqs;
+	struct list_head req_free;
+	struct list_head req_ready;
+	spinlock_t req_lock;
+	unsigned int req_int_count;
+	void (*encode)(struct usb_request *, struct uvc_video *, struct uvc_buffer *);
+	__u32 payload_size;
+	__u32 max_payload_size;
+	struct uvc_video_queue queue;
+	unsigned int fid;
+};
+
+struct uvc_device {
+	struct video_device vdev;
+	struct v4l2_device v4l2_dev;
+	enum uvc_state state;
+	struct usb_function func;
+	struct uvc_video video;
+	bool func_connected;
+	wait_queue_head_t func_connected_queue;
+	struct uvcg_streaming_header *header;
+	struct {
+		const struct uvc_descriptor_header * const *fs_control;
+		const struct uvc_descriptor_header * const *ss_control;
+		const struct uvc_descriptor_header * const *fs_streaming;
+		const struct uvc_descriptor_header * const *hs_streaming;
+		const struct uvc_descriptor_header * const *ss_streaming;
+		struct list_head *extension_units;
+	} desc;
+	unsigned int control_intf;
+	struct usb_ep *interrupt_ep;
+	struct usb_request *control_req;
+	void *control_buf;
+	bool enable_interrupt_ep;
+	unsigned int streaming_intf;
+	unsigned int event_length;
+	unsigned int event_setup_out: 1;
+};
+
+struct media_entity_enum {
+	unsigned long *bmap;
+	int idx_max;
+};
+
+struct media_graph {
+	struct {
+		struct media_entity *entity;
+		struct list_head *link;
+	} stack[16];
+	struct media_entity_enum ent_enum;
+	int top;
+};
+
+struct media_devnode;
+
+struct media_device_ops;
+
+struct media_device {
+	struct device *dev;
+	struct media_devnode *devnode;
+	char model[32];
+	char driver_name[32];
+	char serial[40];
+	char bus_info[32];
+	u32 hw_revision;
+	u64 topology_version;
+	u32 id;
+	struct ida entity_internal_idx;
+	int entity_internal_idx_max;
+	struct list_head entities;
+	struct list_head interfaces;
+	struct list_head pads;
+	struct list_head links;
+	struct list_head entity_notify;
+	struct mutex graph_mutex;
+	struct media_graph pm_count_walk;
+	void *source_priv;
+	int (*enable_source)(struct media_entity *, struct media_pipeline *);
+	void (*disable_source)(struct media_entity *);
+	const struct media_device_ops *ops;
+	struct mutex req_queue_mutex;
+	atomic_t request_id;
+};
+
+struct media_file_operations;
+
+struct media_devnode {
+	struct media_device *media_dev;
+	const struct media_file_operations *fops;
+	struct device dev;
+	struct cdev cdev;
+	struct device *parent;
+	int minor;
+	unsigned long flags;
+	void (*release)(struct media_devnode *);
+};
+
+struct media_file_operations {
+	struct module *owner;
+	ssize_t (*read)(struct file *, char __attribute__((btf_type_tag("user"))) *, size_t, loff_t *);
+	ssize_t (*write)(struct file *, const char __attribute__((btf_type_tag("user"))) *, size_t, loff_t *);
+	__poll_t (*poll)(struct file *, struct poll_table_struct *);
+	long (*ioctl)(struct file *, unsigned int, unsigned long);
+	long (*compat_ioctl)(struct file *, unsigned int, unsigned long);
+	int (*open)(struct file *);
+	int (*release)(struct file *);
+};
+
+struct media_link;
+
+struct media_request;
+
+struct media_device_ops {
+	int (*link_notify)(struct media_link *, u32, unsigned int);
+	struct media_request * (*req_alloc)(struct media_device *);
+	void (*req_free)(struct media_request *);
+	int (*req_validate)(struct media_request *);
+	void (*req_queue)(struct media_request *);
+};
+
+struct media_interface;
+
+struct media_link {
+	struct media_gobj graph_obj;
+	struct list_head list;
+	union {
+		struct media_gobj *gobj0;
+		struct media_pad *source;
+		struct media_interface *intf;
+	};
+	union {
+		struct media_gobj *gobj1;
+		struct media_pad *sink;
+		struct media_entity *entity;
+	};
+	struct media_link *reverse;
+	unsigned long flags;
+	bool is_backlink;
+};
+
+struct media_pad {
+	struct media_gobj graph_obj;
+	struct media_entity *entity;
+	u16 index;
+	u16 num_links;
+	enum media_pad_signal_type sig_type;
+	unsigned long flags;
+	struct media_pipeline *pipe;
+};
+
+struct media_interface {
+	struct media_gobj graph_obj;
+	struct list_head links;
+	u32 type;
+	u32 flags;
+};
+
+struct media_request {
+	struct media_device *mdev;
+	struct kref kref;
+	char debug_str[27];
+	enum media_request_state state;
+	unsigned int updating_count;
+	unsigned int access_count;
+	struct list_head objects;
+	unsigned int num_incomplete_objects;
+	wait_queue_head_t poll_wait;
+	spinlock_t lock;
+};
+
+struct media_entity_operations {
+	int (*get_fwnode_pad)(struct media_entity *, struct fwnode_endpoint *);
+	int (*link_setup)(struct media_entity *, const struct media_pad *, const struct media_pad *, u32);
+	int (*link_validate)(struct media_link *);
+	bool (*has_pad_interdep)(struct media_entity *, unsigned int, unsigned int);
+};
+
+struct media_intf_devnode {
+	struct media_interface intf;
+	u32 major;
+	u32 minor;
+};
+
+struct v4l2_file_operations {
+	struct module *owner;
+	ssize_t (*read)(struct file *, char __attribute__((btf_type_tag("user"))) *, size_t, loff_t *);
+	ssize_t (*write)(struct file *, const char __attribute__((btf_type_tag("user"))) *, size_t, loff_t *);
+	__poll_t (*poll)(struct file *, struct poll_table_struct *);
+	long (*unlocked_ioctl)(struct file *, unsigned int, unsigned long);
+	long (*compat_ioctl32)(struct file *, unsigned int, unsigned long);
+	unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long);
+	int (*mmap)(struct file *, struct vm_area_struct *);
+	int (*open)(struct file *);
+	int (*release)(struct file *);
+	u64 android_kabi_reserved1;
+};
+
+struct v4l2_subdev_ops;
+
+struct v4l2_subdev_internal_ops;
+
+struct v4l2_async_notifier;
+
+struct v4l2_subdev_platform_data;
+
+struct v4l2_subdev_state;
+
+struct v4l2_subdev {
+	struct media_entity entity;
+	struct list_head list;
+	struct module *owner;
+	bool owner_v4l2_dev;
+	u32 flags;
+	struct v4l2_device *v4l2_dev;
+	const struct v4l2_subdev_ops *ops;
+	const struct v4l2_subdev_internal_ops *internal_ops;
+	struct v4l2_ctrl_handler *ctrl_handler;
+	char name[32];
+	u32 grp_id;
+	void *dev_priv;
+	void *host_priv;
+	struct video_device *devnode;
+	struct device *dev;
+	struct fwnode_handle *fwnode;
+	struct list_head async_list;
+	struct list_head async_subdev_endpoint_list;
+	struct v4l2_async_notifier *subdev_notifier;
+	struct list_head asc_list;
+	struct v4l2_subdev_platform_data *pdata;
+	struct mutex *state_lock;
+	struct led_classdev *privacy_led;
+	struct v4l2_subdev_state *active_state;
+	u64 enabled_streams;
+};
+
+struct v4l2_subdev_core_ops;
+
+struct v4l2_subdev_tuner_ops;
+
+struct v4l2_subdev_audio_ops;
+
+struct v4l2_subdev_video_ops;
+
+struct v4l2_subdev_vbi_ops;
+
+struct v4l2_subdev_ir_ops;
+
+struct v4l2_subdev_sensor_ops;
+
+struct v4l2_subdev_pad_ops;
+
+struct v4l2_subdev_ops {
+	const struct v4l2_subdev_core_ops *core;
+	const struct v4l2_subdev_tuner_ops *tuner;
+	const struct v4l2_subdev_audio_ops *audio;
+	const struct v4l2_subdev_video_ops *video;
+	const struct v4l2_subdev_vbi_ops *vbi;
+	const struct v4l2_subdev_ir_ops *ir;
+	const struct v4l2_subdev_sensor_ops *sensor;
+	const struct v4l2_subdev_pad_ops *pad;
+};
+
+struct v4l2_subdev_io_pin_config;
+
+struct v4l2_fh;
+
+struct v4l2_event_subscription;
+
+struct v4l2_subdev_core_ops {
+	int (*log_status)(struct v4l2_subdev *);
+	int (*s_io_pin_config)(struct v4l2_subdev *, size_t, struct v4l2_subdev_io_pin_config *);
+	int (*init)(struct v4l2_subdev *, u32);
+	int (*load_fw)(struct v4l2_subdev *);
+	int (*reset)(struct v4l2_subdev *, u32);
+	int (*s_gpio)(struct v4l2_subdev *, u32);
+	long (*command)(struct v4l2_subdev *, unsigned int, void *);
+	long (*ioctl)(struct v4l2_subdev *, unsigned int, void *);
+	long (*compat_ioctl32)(struct v4l2_subdev *, unsigned int, unsigned long);
+	int (*s_power)(struct v4l2_subdev *, int);
+	int (*interrupt_service_routine)(struct v4l2_subdev *, u32, bool *);
+	int (*subscribe_event)(struct v4l2_subdev *, struct v4l2_fh *, struct v4l2_event_subscription *);
+	int (*unsubscribe_event)(struct v4l2_subdev *, struct v4l2_fh *, struct v4l2_event_subscription *);
+};
+
+struct v4l2_subdev_io_pin_config {
+	u32 flags;
+	u8 pin;
+	u8 function;
+	u8 value;
+	u8 strength;
+};
+
+struct v4l2_m2m_ctx;
+
+struct v4l2_fh {
+	struct list_head list;
+	struct video_device *vdev;
+	struct v4l2_ctrl_handler *ctrl_handler;
+	enum v4l2_priority prio;
+	wait_queue_head_t wait;
+	struct mutex subscribe_lock;
+	struct list_head subscribed;
+	struct list_head available;
+	unsigned int navailable;
+	u32 sequence;
+	struct v4l2_m2m_ctx *m2m_ctx;
+};
+
+struct v4l2_event_subscription {
+	__u32 type;
+	__u32 id;
+	__u32 flags;
+	__u32 reserved[5];
+};
+
+struct tuner_setup;
+
+struct v4l2_frequency;
+
+struct v4l2_frequency_band;
+
+struct v4l2_tuner;
+
+struct v4l2_modulator;
+
+struct v4l2_priv_tun_config;
+
+struct v4l2_subdev_tuner_ops {
+	int (*standby)(struct v4l2_subdev *);
+	int (*s_radio)(struct v4l2_subdev *);
+	int (*s_frequency)(struct v4l2_subdev *, const struct v4l2_frequency *);
+	int (*g_frequency)(struct v4l2_subdev *, struct v4l2_frequency *);
+	int (*enum_freq_bands)(struct v4l2_subdev *, struct v4l2_frequency_band *);
+	int (*g_tuner)(struct v4l2_subdev *, struct v4l2_tuner *);
+	int (*s_tuner)(struct v4l2_subdev *, const struct v4l2_tuner *);
+	int (*g_modulator)(struct v4l2_subdev *, struct v4l2_modulator *);
+	int (*s_modulator)(struct v4l2_subdev *, const struct v4l2_modulator *);
+	int (*s_type_addr)(struct v4l2_subdev *, struct tuner_setup *);
+	int (*s_config)(struct v4l2_subdev *, const struct v4l2_priv_tun_config *);
+};
+
+struct v4l2_frequency {
+	__u32 tuner;
+	__u32 type;
+	__u32 frequency;
+	__u32 reserved[8];
+};
+
+struct v4l2_frequency_band {
+	__u32 tuner;
+	__u32 type;
+	__u32 index;
+	__u32 capability;
+	__u32 rangelow;
+	__u32 rangehigh;
+	__u32 modulation;
+	__u32 reserved[9];
+};
+
+struct v4l2_tuner {
+	__u32 index;
+	__u8 name[32];
+	__u32 type;
+	__u32 capability;
+	__u32 rangelow;
+	__u32 rangehigh;
+	__u32 rxsubchans;
+	__u32 audmode;
+	__s32 signal;
+	__s32 afc;
+	__u32 reserved[4];
+};
+
+struct v4l2_modulator {
+	__u32 index;
+	__u8 name[32];
+	__u32 capability;
+	__u32 rangelow;
+	__u32 rangehigh;
+	__u32 txsubchans;
+	__u32 type;
+	__u32 reserved[3];
+};
+
+struct v4l2_priv_tun_config {
+	int tuner;
+	void *priv;
+};
+
+struct v4l2_subdev_audio_ops {
+	int (*s_clock_freq)(struct v4l2_subdev *, u32);
+	int (*s_i2s_clock_freq)(struct v4l2_subdev *, u32);
+	int (*s_routing)(struct v4l2_subdev *, u32, u32, u32);
+	int (*s_stream)(struct v4l2_subdev *, int);
+};
+
+struct v4l2_fract;
+
+struct v4l2_subdev_frame_interval;
+
+struct v4l2_dv_timings;
+
+struct v4l2_subdev_video_ops {
+	int (*s_routing)(struct v4l2_subdev *, u32, u32, u32);
+	int (*s_crystal_freq)(struct v4l2_subdev *, u32, u32);
+	int (*g_std)(struct v4l2_subdev *, v4l2_std_id *);
+	int (*s_std)(struct v4l2_subdev *, v4l2_std_id);
+	int (*s_std_output)(struct v4l2_subdev *, v4l2_std_id);
+	int (*g_std_output)(struct v4l2_subdev *, v4l2_std_id *);
+	int (*querystd)(struct v4l2_subdev *, v4l2_std_id *);
+	int (*g_tvnorms)(struct v4l2_subdev *, v4l2_std_id *);
+	int (*g_tvnorms_output)(struct v4l2_subdev *, v4l2_std_id *);
+	int (*g_input_status)(struct v4l2_subdev *, u32 *);
+	int (*s_stream)(struct v4l2_subdev *, int);
+	int (*g_pixelaspect)(struct v4l2_subdev *, struct v4l2_fract *);
+	int (*g_frame_interval)(struct v4l2_subdev *, struct v4l2_subdev_frame_interval *);
+	int (*s_frame_interval)(struct v4l2_subdev *, struct v4l2_subdev_frame_interval *);
+	int (*s_dv_timings)(struct v4l2_subdev *, struct v4l2_dv_timings *);
+	int (*g_dv_timings)(struct v4l2_subdev *, struct v4l2_dv_timings *);
+	int (*query_dv_timings)(struct v4l2_subdev *, struct v4l2_dv_timings *);
+	int (*s_rx_buffer)(struct v4l2_subdev *, void *, unsigned int *);
+	int (*pre_streamon)(struct v4l2_subdev *, u32);
+	int (*post_streamoff)(struct v4l2_subdev *);
+};
+
+struct v4l2_fract {
+	__u32 numerator;
+	__u32 denominator;
+};
+
+struct v4l2_subdev_frame_interval {
+	__u32 pad;
+	struct v4l2_fract interval;
+	__u32 stream;
+	__u32 reserved[8];
+};
+
+struct v4l2_bt_timings {
+	__u32 width;
+	__u32 height;
+	__u32 interlaced;
+	__u32 polarities;
+	__u64 pixelclock;
+	__u32 hfrontporch;
+	__u32 hsync;
+	__u32 hbackporch;
+	__u32 vfrontporch;
+	__u32 vsync;
+	__u32 vbackporch;
+	__u32 il_vfrontporch;
+	__u32 il_vsync;
+	__u32 il_vbackporch;
+	__u32 standards;
+	__u32 flags;
+	struct v4l2_fract picture_aspect;
+	__u8 cea861_vic;
+	__u8 hdmi_vic;
+	__u8 reserved[46];
+} __attribute__((packed));
+
+struct v4l2_dv_timings {
+	__u32 type;
+	union {
+		struct v4l2_bt_timings bt;
+		__u32 reserved[32];
+	};
+};
+
+struct v4l2_decode_vbi_line;
+
+struct v4l2_sliced_vbi_data;
+
+struct v4l2_sliced_vbi_cap;
+
+struct v4l2_vbi_format;
+
+struct v4l2_sliced_vbi_format;
+
+struct v4l2_subdev_vbi_ops {
+	int (*decode_vbi_line)(struct v4l2_subdev *, struct v4l2_decode_vbi_line *);
+	int (*s_vbi_data)(struct v4l2_subdev *, const struct v4l2_sliced_vbi_data *);
+	int (*g_vbi_data)(struct v4l2_subdev *, struct v4l2_sliced_vbi_data *);
+	int (*g_sliced_vbi_cap)(struct v4l2_subdev *, struct v4l2_sliced_vbi_cap *);
+	int (*s_raw_fmt)(struct v4l2_subdev *, struct v4l2_vbi_format *);
+	int (*g_sliced_fmt)(struct v4l2_subdev *, struct v4l2_sliced_vbi_format *);
+	int (*s_sliced_fmt)(struct v4l2_subdev *, struct v4l2_sliced_vbi_format *);
+};
+
+struct v4l2_decode_vbi_line {
+	u32 is_second_field;
+	u8 *p;
+	u32 line;
+	u32 type;
+};
+
+struct v4l2_sliced_vbi_data {
+	__u32 id;
+	__u32 field;
+	__u32 line;
+	__u32 reserved;
+	__u8 data[48];
+};
+
+struct v4l2_sliced_vbi_cap {
+	__u16 service_set;
+	__u16 service_lines[48];
+	__u32 type;
+	__u32 reserved[3];
+};
+
+struct v4l2_vbi_format {
+	__u32 sampling_rate;
+	__u32 offset;
+	__u32 samples_per_line;
+	__u32 sample_format;
+	__s32 start[2];
+	__u32 count[2];
+	__u32 flags;
+	__u32 reserved[2];
+};
+
+struct v4l2_sliced_vbi_format {
+	__u16 service_set;
+	__u16 service_lines[48];
+	__u32 io_size;
+	__u32 reserved[2];
+};
+
+struct v4l2_subdev_ir_parameters;
+
+struct v4l2_subdev_ir_ops {
+	int (*rx_read)(struct v4l2_subdev *, u8 *, size_t, ssize_t *);
+	int (*rx_g_parameters)(struct v4l2_subdev *, struct v4l2_subdev_ir_parameters *);
+	int (*rx_s_parameters)(struct v4l2_subdev *, struct v4l2_subdev_ir_parameters *);
+	int (*tx_write)(struct v4l2_subdev *, u8 *, size_t, ssize_t *);
+	int (*tx_g_parameters)(struct v4l2_subdev *, struct v4l2_subdev_ir_parameters *);
+	int (*tx_s_parameters)(struct v4l2_subdev *, struct v4l2_subdev_ir_parameters *);
+};
+
+struct v4l2_subdev_ir_parameters {
+	unsigned int bytes_per_data_element;
+	enum v4l2_subdev_ir_mode mode;
+	bool enable;
+	bool interrupt_enable;
+	bool shutdown;
+	bool modulation;
+	u32 max_pulse_width;
+	unsigned int carrier_freq;
+	unsigned int duty_cycle;
+	bool invert_level;
+	bool invert_carrier_sense;
+	u32 noise_filter_min_width;
+	unsigned int carrier_range_lower;
+	unsigned int carrier_range_upper;
+	u32 resolution;
+};
+
+struct v4l2_subdev_sensor_ops {
+	int (*g_skip_top_lines)(struct v4l2_subdev *, u32 *);
+	int (*g_skip_frames)(struct v4l2_subdev *, u32 *);
+};
+
+struct v4l2_subdev_mbus_code_enum;
+
+struct v4l2_subdev_frame_size_enum;
+
+struct v4l2_subdev_frame_interval_enum;
+
+struct v4l2_subdev_format;
+
+struct v4l2_subdev_selection;
+
+struct v4l2_edid;
+
+struct v4l2_dv_timings_cap;
+
+struct v4l2_enum_dv_timings;
+
+struct v4l2_mbus_frame_desc;
+
+struct v4l2_mbus_config;
+
+struct v4l2_subdev_krouting;
+
+struct v4l2_subdev_pad_ops {
+	int (*init_cfg)(struct v4l2_subdev *, struct v4l2_subdev_state *);
+	int (*enum_mbus_code)(struct v4l2_subdev *, struct v4l2_subdev_state *, struct v4l2_subdev_mbus_code_enum *);
+	int (*enum_frame_size)(struct v4l2_subdev *, struct v4l2_subdev_state *, struct v4l2_subdev_frame_size_enum *);
+	int (*enum_frame_interval)(struct v4l2_subdev *, struct v4l2_subdev_state *, struct v4l2_subdev_frame_interval_enum *);
+	int (*get_fmt)(struct v4l2_subdev *, struct v4l2_subdev_state *, struct v4l2_subdev_format *);
+	int (*set_fmt)(struct v4l2_subdev *, struct v4l2_subdev_state *, struct v4l2_subdev_format *);
+	int (*get_selection)(struct v4l2_subdev *, struct v4l2_subdev_state *, struct v4l2_subdev_selection *);
+	int (*set_selection)(struct v4l2_subdev *, struct v4l2_subdev_state *, struct v4l2_subdev_selection *);
+	int (*get_edid)(struct v4l2_subdev *, struct v4l2_edid *);
+	int (*set_edid)(struct v4l2_subdev *, struct v4l2_edid *);
+	int (*dv_timings_cap)(struct v4l2_subdev *, struct v4l2_dv_timings_cap *);
+	int (*enum_dv_timings)(struct v4l2_subdev *, struct v4l2_enum_dv_timings *);
+	int (*link_validate)(struct v4l2_subdev *, struct media_link *, struct v4l2_subdev_format *, struct v4l2_subdev_format *);
+	int (*get_frame_desc)(struct v4l2_subdev *, unsigned int, struct v4l2_mbus_frame_desc *);
+	int (*set_frame_desc)(struct v4l2_subdev *, unsigned int, struct v4l2_mbus_frame_desc *);
+	int (*get_mbus_config)(struct v4l2_subdev *, unsigned int, struct v4l2_mbus_config *);
+	int (*set_routing)(struct v4l2_subdev *, struct v4l2_subdev_state *, enum v4l2_subdev_format_whence, struct v4l2_subdev_krouting *);
+	int (*enable_streams)(struct v4l2_subdev *, struct v4l2_subdev_state *, u32, u64);
+	int (*disable_streams)(struct v4l2_subdev *, struct v4l2_subdev_state *, u32, u64);
+};
+
+struct v4l2_subdev_route;
+
+struct v4l2_subdev_krouting {
+	unsigned int num_routes;
+	struct v4l2_subdev_route *routes;
+};
+
+struct v4l2_subdev_stream_config;
+
+struct v4l2_subdev_stream_configs {
+	u32 num_configs;
+	struct v4l2_subdev_stream_config *configs;
+};
+
+struct v4l2_subdev_pad_config;
+
+struct v4l2_subdev_state {
+	struct mutex _lock;
+	struct mutex *lock;
+	struct v4l2_subdev_pad_config *pads;
+	struct v4l2_subdev_krouting routing;
+	struct v4l2_subdev_stream_configs stream_configs;
+};
+
+struct v4l2_mbus_framefmt {
+	__u32 width;
+	__u32 height;
+	__u32 code;
+	__u32 field;
+	__u32 colorspace;
+	union {
+		__u16 ycbcr_enc;
+		__u16 hsv_enc;
+	};
+	__u16 quantization;
+	__u16 xfer_func;
+	__u16 flags;
+	__u16 reserved[10];
+};
+
+struct v4l2_rect {
+	__s32 left;
+	__s32 top;
+	__u32 width;
+	__u32 height;
+};
+
+struct v4l2_subdev_pad_config {
+	struct v4l2_mbus_framefmt try_fmt;
+	struct v4l2_rect try_crop;
+	struct v4l2_rect try_compose;
+};
+
+struct v4l2_subdev_route {
+	__u32 sink_pad;
+	__u32 sink_stream;
+	__u32 source_pad;
+	__u32 source_stream;
+	__u32 flags;
+	__u32 reserved[5];
+};
+
+struct v4l2_subdev_stream_config {
+	u32 pad;
+	u32 stream;
+	bool enabled;
+	struct v4l2_mbus_framefmt fmt;
+	struct v4l2_rect crop;
+	struct v4l2_rect compose;
+};
+
+struct v4l2_subdev_mbus_code_enum {
+	__u32 pad;
+	__u32 index;
+	__u32 code;
+	__u32 which;
+	__u32 flags;
+	__u32 stream;
+	__u32 reserved[6];
+};
+
+struct v4l2_subdev_frame_size_enum {
+	__u32 index;
+	__u32 pad;
+	__u32 code;
+	__u32 min_width;
+	__u32 max_width;
+	__u32 min_height;
+	__u32 max_height;
+	__u32 which;
+	__u32 stream;
+	__u32 reserved[7];
+};
+
+struct v4l2_subdev_frame_interval_enum {
+	__u32 index;
+	__u32 pad;
+	__u32 code;
+	__u32 width;
+	__u32 height;
+	struct v4l2_fract interval;
+	__u32 which;
+	__u32 stream;
+	__u32 reserved[7];
+};
+
+struct v4l2_subdev_format {
+	__u32 which;
+	__u32 pad;
+	struct v4l2_mbus_framefmt format;
+	__u32 stream;
+	__u32 reserved[7];
+};
+
+struct v4l2_subdev_selection {
+	__u32 which;
+	__u32 pad;
+	__u32 target;
+	__u32 flags;
+	struct v4l2_rect r;
+	__u32 stream;
+	__u32 reserved[7];
+};
+
+struct v4l2_edid {
+	__u32 pad;
+	__u32 start_block;
+	__u32 blocks;
+	__u32 reserved[5];
+	__u8 *edid;
+};
+
+struct v4l2_bt_timings_cap {
+	__u32 min_width;
+	__u32 max_width;
+	__u32 min_height;
+	__u32 max_height;
+	__u64 min_pixelclock;
+	__u64 max_pixelclock;
+	__u32 standards;
+	__u32 capabilities;
+	__u32 reserved[16];
+};
+
+struct v4l2_dv_timings_cap {
+	__u32 type;
+	__u32 pad;
+	__u32 reserved[2];
+	union {
+		struct v4l2_bt_timings_cap bt;
+		__u32 raw_data[32];
+	};
+};
+
+struct v4l2_enum_dv_timings {
+	__u32 index;
+	__u32 pad;
+	__u32 reserved[2];
+	struct v4l2_dv_timings timings;
+};
+
+struct v4l2_mbus_frame_desc_entry_csi2 {
+	u8 vc;
+	u8 dt;
+};
+
+struct v4l2_mbus_frame_desc_entry {
+	enum v4l2_mbus_frame_desc_flags flags;
+	u32 stream;
+	u32 pixelcode;
+	u32 length;
+	union {
+		struct v4l2_mbus_frame_desc_entry_csi2 csi2;
+	} bus;
+};
+
+struct v4l2_mbus_frame_desc {
+	enum v4l2_mbus_frame_desc_type type;
+	struct v4l2_mbus_frame_desc_entry entry[8];
+	unsigned short num_entries;
+};
+
+struct v4l2_mbus_config_parallel {
+	unsigned int flags;
+	unsigned char bus_width;
+	unsigned char data_shift;
+};
+
+struct v4l2_mbus_config_mipi_csi1 {
+	unsigned char clock_inv: 1;
+	unsigned char strobe: 1;
+	bool lane_polarity[2];
+	unsigned char data_lane;
+	unsigned char clock_lane;
+};
+
+struct v4l2_mbus_config_mipi_csi2 {
+	unsigned int flags;
+	unsigned char data_lanes[8];
+	unsigned char clock_lane;
+	unsigned char num_data_lanes;
+	bool lane_polarities[9];
+};
+
+struct v4l2_mbus_config {
+	enum v4l2_mbus_type type;
+	union {
+		struct v4l2_mbus_config_parallel parallel;
+		struct v4l2_mbus_config_mipi_csi1 mipi_csi1;
+		struct v4l2_mbus_config_mipi_csi2 mipi_csi2;
+	} bus;
+};
+
+struct v4l2_subdev_fh;
+
+struct v4l2_subdev_internal_ops {
+	int (*registered)(struct v4l2_subdev *);
+	void (*unregistered)(struct v4l2_subdev *);
+	int (*open)(struct v4l2_subdev *, struct v4l2_subdev_fh *);
+	int (*close)(struct v4l2_subdev *, struct v4l2_subdev_fh *);
+	void (*release)(struct v4l2_subdev *);
+};
+
+struct v4l2_subdev_fh {
+	struct v4l2_fh vfh;
+	struct module *owner;
+	struct v4l2_subdev_state *state;
+	u64 client_caps;
+};
+
+struct v4l2_async_notifier_operations;
+
+struct v4l2_async_notifier {
+	const struct v4l2_async_notifier_operations *ops;
+	struct v4l2_device *v4l2_dev;
+	struct v4l2_subdev *sd;
+	struct v4l2_async_notifier *parent;
+	struct list_head waiting_list;
+	struct list_head done_list;
+	struct list_head notifier_entry;
+};
+
+struct v4l2_async_connection;
+
+struct v4l2_async_notifier_operations {
+	int (*bound)(struct v4l2_async_notifier *, struct v4l2_subdev *, struct v4l2_async_connection *);
+	int (*complete)(struct v4l2_async_notifier *);
+	void (*unbind)(struct v4l2_async_notifier *, struct v4l2_subdev *, struct v4l2_async_connection *);
+	void (*destroy)(struct v4l2_async_connection *);
+};
+
+struct v4l2_async_match_desc {
+	enum v4l2_async_match_type type;
+	union {
+		struct fwnode_handle *fwnode;
+		struct {
+			int adapter_id;
+			unsigned short address;
+		} i2c;
+	};
+};
+
+struct v4l2_async_connection {
+	struct v4l2_async_match_desc match;
+	struct v4l2_async_notifier *notifier;
+	struct list_head asc_entry;
+	struct list_head asc_subdev_entry;
+	struct v4l2_subdev *sd;
+};
+
+struct v4l2_subdev_platform_data {
+	struct regulator_bulk_data *regulators;
+	int num_regulators;
+	void *host_priv;
+};
+
+struct vb2_ops {
+	int (*queue_setup)(struct vb2_queue *, unsigned int *, unsigned int *, unsigned int *, struct device **);
+	void (*wait_prepare)(struct vb2_queue *);
+	void (*wait_finish)(struct vb2_queue *);
+	int (*buf_out_validate)(struct vb2_buffer *);
+	int (*buf_init)(struct vb2_buffer *);
+	int (*buf_prepare)(struct vb2_buffer *);
+	void (*buf_finish)(struct vb2_buffer *);
+	void (*buf_cleanup)(struct vb2_buffer *);
+	int (*prepare_streaming)(struct vb2_queue *);
+	int (*start_streaming)(struct vb2_queue *, unsigned int);
+	void (*stop_streaming)(struct vb2_queue *);
+	void (*unprepare_streaming)(struct vb2_queue *);
+	void (*buf_queue)(struct vb2_buffer *);
+	void (*buf_request_complete)(struct vb2_buffer *);
+};
+
+struct media_request_object_ops;
+
+struct media_request_object {
+	const struct media_request_object_ops *ops;
+	void *priv;
+	struct media_request *req;
+	struct list_head list;
+	struct kref kref;
+	bool completed;
+};
+
+struct vb2_plane {
+	void *mem_priv;
+	struct dma_buf *dbuf;
+	unsigned int dbuf_mapped;
+	unsigned int bytesused;
+	unsigned int length;
+	unsigned int min_length;
+	union {
+		unsigned int offset;
+		unsigned long userptr;
+		int fd;
+	} m;
+	unsigned int data_offset;
+};
+
+struct vb2_buffer {
+	struct vb2_queue *vb2_queue;
+	unsigned int index;
+	unsigned int type;
+	unsigned int memory;
+	unsigned int num_planes;
+	u64 timestamp;
+	struct media_request *request;
+	struct media_request_object req_obj;
+	enum vb2_buffer_state state;
+	unsigned int synced: 1;
+	unsigned int prepared: 1;
+	unsigned int copied_timestamp: 1;
+	unsigned int skip_cache_sync_on_prepare: 1;
+	unsigned int skip_cache_sync_on_finish: 1;
+	struct vb2_plane planes[8];
+	struct list_head queued_entry;
+	struct list_head done_entry;
+};
+
+struct media_request_object_ops {
+	int (*prepare)(struct media_request_object *);
+	void (*unprepare)(struct media_request_object *);
+	void (*queue)(struct media_request_object *);
+	void (*unbind)(struct media_request_object *);
+	void (*release)(struct media_request_object *);
+};
+
+struct vb2_mem_ops {
+	void * (*alloc)(struct vb2_buffer *, struct device *, unsigned long);
+	void (*put)(void *);
+	struct dma_buf * (*get_dmabuf)(struct vb2_buffer *, void *, unsigned long);
+	void * (*get_userptr)(struct vb2_buffer *, struct device *, unsigned long, unsigned long);
+	void (*put_userptr)(void *);
+	void (*prepare)(void *);
+	void (*finish)(void *);
+	void * (*attach_dmabuf)(struct vb2_buffer *, struct device *, struct dma_buf *, unsigned long);
+	void (*detach_dmabuf)(void *);
+	int (*map_dmabuf)(void *);
+	void (*unmap_dmabuf)(void *);
+	void * (*vaddr)(struct vb2_buffer *, void *);
+	void * (*cookie)(struct vb2_buffer *, void *);
+	unsigned int (*num_users)(void *);
+	int (*mmap)(void *, struct vm_area_struct *);
+};
+
+struct vb2_buf_ops {
+	int (*verify_planes_array)(struct vb2_buffer *, const void *);
+	void (*init_buffer)(struct vb2_buffer *);
+	void (*fill_user_buffer)(struct vb2_buffer *, void *);
+	int (*fill_vb2_buffer)(struct vb2_buffer *, struct vb2_plane *);
+	void (*copy_timestamp)(struct vb2_buffer *, const void *);
+};
+
+enum v4l2_buf_type {
+	V4L2_BUF_TYPE_VIDEO_CAPTURE = 1,
+	V4L2_BUF_TYPE_VIDEO_OUTPUT = 2,
+	V4L2_BUF_TYPE_VIDEO_OVERLAY = 3,
+	V4L2_BUF_TYPE_VBI_CAPTURE = 4,
+	V4L2_BUF_TYPE_VBI_OUTPUT = 5,
+	V4L2_BUF_TYPE_SLICED_VBI_CAPTURE = 6,
+	V4L2_BUF_TYPE_SLICED_VBI_OUTPUT = 7,
+	V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY = 8,
+	V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE = 9,
+	V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE = 10,
+	V4L2_BUF_TYPE_SDR_CAPTURE = 11,
+	V4L2_BUF_TYPE_SDR_OUTPUT = 12,
+	V4L2_BUF_TYPE_META_CAPTURE = 13,
+	V4L2_BUF_TYPE_META_OUTPUT = 14,
+	V4L2_BUF_TYPE_PRIVATE = 128,
+};
+
+struct v4l2_capability;
+
+struct v4l2_fmtdesc;
+
+struct v4l2_format;
+
+struct v4l2_requestbuffers;
+
+struct v4l2_buffer;
+
+struct v4l2_exportbuffer;
+
+struct v4l2_create_buffers;
+
+struct v4l2_framebuffer;
+
+struct v4l2_input;
+
+struct v4l2_output;
+
+struct v4l2_queryctrl;
+
+struct v4l2_query_ext_ctrl;
+
+struct v4l2_control;
+
+struct v4l2_ext_controls;
+
+struct v4l2_querymenu;
+
+struct v4l2_audio;
+
+struct v4l2_audioout;
+
+struct v4l2_selection;
+
+struct v4l2_jpegcompression;
+
+struct v4l2_enc_idx;
+
+struct v4l2_encoder_cmd;
+
+struct v4l2_decoder_cmd;
+
+struct v4l2_streamparm;
+
+struct v4l2_hw_freq_seek;
+
+struct v4l2_frmsizeenum;
+
+struct v4l2_frmivalenum;
+
+struct v4l2_ioctl_ops {
+	int (*vidioc_querycap)(struct file *, void *, struct v4l2_capability *);
+	int (*vidioc_enum_fmt_vid_cap)(struct file *, void *, struct v4l2_fmtdesc *);
+	int (*vidioc_enum_fmt_vid_overlay)(struct file *, void *, struct v4l2_fmtdesc *);
+	int (*vidioc_enum_fmt_vid_out)(struct file *, void *, struct v4l2_fmtdesc *);
+	int (*vidioc_enum_fmt_sdr_cap)(struct file *, void *, struct v4l2_fmtdesc *);
+	int (*vidioc_enum_fmt_sdr_out)(struct file *, void *, struct v4l2_fmtdesc *);
+	int (*vidioc_enum_fmt_meta_cap)(struct file *, void *, struct v4l2_fmtdesc *);
+	int (*vidioc_enum_fmt_meta_out)(struct file *, void *, struct v4l2_fmtdesc *);
+	int (*vidioc_g_fmt_vid_cap)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_g_fmt_vid_overlay)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_g_fmt_vid_out)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_g_fmt_vid_out_overlay)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_g_fmt_vbi_cap)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_g_fmt_vbi_out)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_g_fmt_sliced_vbi_cap)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_g_fmt_sliced_vbi_out)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_g_fmt_vid_cap_mplane)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_g_fmt_vid_out_mplane)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_g_fmt_sdr_cap)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_g_fmt_sdr_out)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_g_fmt_meta_cap)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_g_fmt_meta_out)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_s_fmt_vid_cap)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_s_fmt_vid_overlay)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_s_fmt_vid_out)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_s_fmt_vid_out_overlay)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_s_fmt_vbi_cap)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_s_fmt_vbi_out)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_s_fmt_sliced_vbi_cap)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_s_fmt_sliced_vbi_out)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_s_fmt_vid_cap_mplane)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_s_fmt_vid_out_mplane)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_s_fmt_sdr_cap)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_s_fmt_sdr_out)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_s_fmt_meta_cap)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_s_fmt_meta_out)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_try_fmt_vid_cap)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_try_fmt_vid_overlay)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_try_fmt_vid_out)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_try_fmt_vid_out_overlay)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_try_fmt_vbi_cap)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_try_fmt_vbi_out)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_try_fmt_sliced_vbi_cap)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_try_fmt_sliced_vbi_out)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_try_fmt_vid_cap_mplane)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_try_fmt_vid_out_mplane)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_try_fmt_sdr_cap)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_try_fmt_sdr_out)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_try_fmt_meta_cap)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_try_fmt_meta_out)(struct file *, void *, struct v4l2_format *);
+	int (*vidioc_reqbufs)(struct file *, void *, struct v4l2_requestbuffers *);
+	int (*vidioc_querybuf)(struct file *, void *, struct v4l2_buffer *);
+	int (*vidioc_qbuf)(struct file *, void *, struct v4l2_buffer *);
+	int (*vidioc_expbuf)(struct file *, void *, struct v4l2_exportbuffer *);
+	int (*vidioc_dqbuf)(struct file *, void *, struct v4l2_buffer *);
+	int (*vidioc_create_bufs)(struct file *, void *, struct v4l2_create_buffers *);
+	int (*vidioc_prepare_buf)(struct file *, void *, struct v4l2_buffer *);
+	int (*vidioc_overlay)(struct file *, void *, unsigned int);
+	int (*vidioc_g_fbuf)(struct file *, void *, struct v4l2_framebuffer *);
+	int (*vidioc_s_fbuf)(struct file *, void *, const struct v4l2_framebuffer *);
+	int (*vidioc_streamon)(struct file *, void *, enum v4l2_buf_type);
+	int (*vidioc_streamoff)(struct file *, void *, enum v4l2_buf_type);
+	int (*vidioc_g_std)(struct file *, void *, v4l2_std_id *);
+	int (*vidioc_s_std)(struct file *, void *, v4l2_std_id);
+	int (*vidioc_querystd)(struct file *, void *, v4l2_std_id *);
+	int (*vidioc_enum_input)(struct file *, void *, struct v4l2_input *);
+	int (*vidioc_g_input)(struct file *, void *, unsigned int *);
+	int (*vidioc_s_input)(struct file *, void *, unsigned int);
+	int (*vidioc_enum_output)(struct file *, void *, struct v4l2_output *);
+	int (*vidioc_g_output)(struct file *, void *, unsigned int *);
+	int (*vidioc_s_output)(struct file *, void *, unsigned int);
+	int (*vidioc_queryctrl)(struct file *, void *, struct v4l2_queryctrl *);
+	int (*vidioc_query_ext_ctrl)(struct file *, void *, struct v4l2_query_ext_ctrl *);
+	int (*vidioc_g_ctrl)(struct file *, void *, struct v4l2_control *);
+	int (*vidioc_s_ctrl)(struct file *, void *, struct v4l2_control *);
+	int (*vidioc_g_ext_ctrls)(struct file *, void *, struct v4l2_ext_controls *);
+	int (*vidioc_s_ext_ctrls)(struct file *, void *, struct v4l2_ext_controls *);
+	int (*vidioc_try_ext_ctrls)(struct file *, void *, struct v4l2_ext_controls *);
+	int (*vidioc_querymenu)(struct file *, void *, struct v4l2_querymenu *);
+	int (*vidioc_enumaudio)(struct file *, void *, struct v4l2_audio *);
+	int (*vidioc_g_audio)(struct file *, void *, struct v4l2_audio *);
+	int (*vidioc_s_audio)(struct file *, void *, const struct v4l2_audio *);
+	int (*vidioc_enumaudout)(struct file *, void *, struct v4l2_audioout *);
+	int (*vidioc_g_audout)(struct file *, void *, struct v4l2_audioout *);
+	int (*vidioc_s_audout)(struct file *, void *, const struct v4l2_audioout *);
+	int (*vidioc_g_modulator)(struct file *, void *, struct v4l2_modulator *);
+	int (*vidioc_s_modulator)(struct file *, void *, const struct v4l2_modulator *);
+	int (*vidioc_g_pixelaspect)(struct file *, void *, int, struct v4l2_fract *);
+	int (*vidioc_g_selection)(struct file *, void *, struct v4l2_selection *);
+	int (*vidioc_s_selection)(struct file *, void *, struct v4l2_selection *);
+	int (*vidioc_g_jpegcomp)(struct file *, void *, struct v4l2_jpegcompression *);
+	int (*vidioc_s_jpegcomp)(struct file *, void *, const struct v4l2_jpegcompression *);
+	int (*vidioc_g_enc_index)(struct file *, void *, struct v4l2_enc_idx *);
+	int (*vidioc_encoder_cmd)(struct file *, void *, struct v4l2_encoder_cmd *);
+	int (*vidioc_try_encoder_cmd)(struct file *, void *, struct v4l2_encoder_cmd *);
+	int (*vidioc_decoder_cmd)(struct file *, void *, struct v4l2_decoder_cmd *);
+	int (*vidioc_try_decoder_cmd)(struct file *, void *, struct v4l2_decoder_cmd *);
+	int (*vidioc_g_parm)(struct file *, void *, struct v4l2_streamparm *);
+	int (*vidioc_s_parm)(struct file *, void *, struct v4l2_streamparm *);
+	int (*vidioc_g_tuner)(struct file *, void *, struct v4l2_tuner *);
+	int (*vidioc_s_tuner)(struct file *, void *, const struct v4l2_tuner *);
+	int (*vidioc_g_frequency)(struct file *, void *, struct v4l2_frequency *);
+	int (*vidioc_s_frequency)(struct file *, void *, const struct v4l2_frequency *);
+	int (*vidioc_enum_freq_bands)(struct file *, void *, struct v4l2_frequency_band *);
+	int (*vidioc_g_sliced_vbi_cap)(struct file *, void *, struct v4l2_sliced_vbi_cap *);
+	int (*vidioc_log_status)(struct file *, void *);
+	int (*vidioc_s_hw_freq_seek)(struct file *, void *, const struct v4l2_hw_freq_seek *);
+	int (*vidioc_enum_framesizes)(struct file *, void *, struct v4l2_frmsizeenum *);
+	int (*vidioc_enum_frameintervals)(struct file *, void *, struct v4l2_frmivalenum *);
+	int (*vidioc_s_dv_timings)(struct file *, void *, struct v4l2_dv_timings *);
+	int (*vidioc_g_dv_timings)(struct file *, void *, struct v4l2_dv_timings *);
+	int (*vidioc_query_dv_timings)(struct file *, void *, struct v4l2_dv_timings *);
+	int (*vidioc_enum_dv_timings)(struct file *, void *, struct v4l2_enum_dv_timings *);
+	int (*vidioc_dv_timings_cap)(struct file *, void *, struct v4l2_dv_timings_cap *);
+	int (*vidioc_g_edid)(struct file *, void *, struct v4l2_edid *);
+	int (*vidioc_s_edid)(struct file *, void *, struct v4l2_edid *);
+	int (*vidioc_subscribe_event)(struct v4l2_fh *, const struct v4l2_event_subscription *);
+	int (*vidioc_unsubscribe_event)(struct v4l2_fh *, const struct v4l2_event_subscription *);
+	long (*vidioc_default)(struct file *, void *, bool, unsigned int, void *);
+};
+
+struct v4l2_timecode {
+	__u32 type;
+	__u32 flags;
+	__u8 frames;
+	__u8 seconds;
+	__u8 minutes;
+	__u8 hours;
+	__u8 userbits[4];
+};
+
+struct vb2_v4l2_buffer {
+	struct vb2_buffer vb2_buf;
+	__u32 flags;
+	__u32 field;
+	struct v4l2_timecode timecode;
+	__u32 sequence;
+	__s32 request_fd;
+	bool is_held;
+	struct vb2_plane planes[8];
+	u64 android_kabi_reserved1;
+};
+
+struct uvc_buffer {
+	struct vb2_v4l2_buffer buf;
+	struct list_head queue;
+	enum uvc_buffer_state state;
+	void *mem;
+	struct sg_table *sgt;
+	struct scatterlist *sg;
+	unsigned int offset;
+	unsigned int length;
+	unsigned int bytesused;
+};
+
+struct v4l2_event_vsync {
+	__u8 field;
+};
+
+struct v4l2_event_ctrl {
+	__u32 changes;
+	__u32 type;
+	union {
+		__s32 value;
+		__s64 value64;
+	};
+	__u32 flags;
+	__s32 minimum;
+	__s32 maximum;
+	__s32 step;
+	__s32 default_value;
+};
+
+struct v4l2_event_frame_sync {
+	__u32 frame_sequence;
+};
+
+struct v4l2_event_src_change {
+	__u32 changes;
+};
+
+struct v4l2_event_motion_det {
+	__u32 flags;
+	__u32 frame_sequence;
+	__u32 region_mask;
+};
+
+struct v4l2_event {
+	__u32 type;
+	union {
+		struct v4l2_event_vsync vsync;
+		struct v4l2_event_ctrl ctrl;
+		struct v4l2_event_frame_sync frame_sync;
+		struct v4l2_event_src_change src_change;
+		struct v4l2_event_motion_det motion_det;
+		__u8 data[64];
+	} u;
+	__u32 pending;
+	__u32 sequence;
+	struct __kernel_timespec timestamp;
+	__u32 id;
+	__u32 reserved[8];
+};
+
+struct uvc_request_data {
+	__s32 length;
+	__u8 data[60];
+};
+
+struct uvc_event {
+	union {
+		enum usb_device_speed speed;
+		struct usb_ctrlrequest req;
+		struct uvc_request_data data;
+	};
+};
+
+struct uvc_header_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubType;
+	__le16 bcdUVC;
+	__le16 wTotalLength;
+	__le32 dwClockFrequency;
+	__u8 bInCollection;
+	__u8 baInterfaceNr[0];
+} __attribute__((packed));
+
+enum vb2_io_modes {
+	VB2_MMAP = 1,
+	VB2_USERPTR = 2,
+	VB2_READ = 4,
+	VB2_WRITE = 8,
+	VB2_DMABUF = 16,
+};
+
+enum v4l2_field {
+	V4L2_FIELD_ANY = 0,
+	V4L2_FIELD_NONE = 1,
+	V4L2_FIELD_TOP = 2,
+	V4L2_FIELD_BOTTOM = 3,
+	V4L2_FIELD_INTERLACED = 4,
+	V4L2_FIELD_SEQ_TB = 5,
+	V4L2_FIELD_SEQ_BT = 6,
+	V4L2_FIELD_ALTERNATE = 7,
+	V4L2_FIELD_INTERLACED_TB = 8,
+	V4L2_FIELD_INTERLACED_BT = 9,
+};
+
+struct v4l2_requestbuffers {
+	__u32 count;
+	__u32 type;
+	__u32 memory;
+	__u32 capabilities;
+	__u8 flags;
+	__u8 reserved[3];
+};
+
+struct __kernel_v4l2_timeval {
+	long long tv_sec;
+	long long tv_usec;
+};
+
+struct v4l2_plane;
+
+struct v4l2_buffer {
+	__u32 index;
+	__u32 type;
+	__u32 bytesused;
+	__u32 flags;
+	__u32 field;
+	struct __kernel_v4l2_timeval timestamp;
+	struct v4l2_timecode timecode;
+	__u32 sequence;
+	__u32 memory;
+	union {
+		__u32 offset;
+		unsigned long userptr;
+		struct v4l2_plane *planes;
+		__s32 fd;
+	} m;
+	__u32 length;
+	__u32 reserved2;
+	union {
+		__s32 request_fd;
+		__u32 reserved;
+	};
+};
+
+struct v4l2_plane {
+	__u32 bytesused;
+	__u32 length;
+	union {
+		__u32 mem_offset;
+		unsigned long userptr;
+		__s32 fd;
+	} m;
+	__u32 data_offset;
+	__u32 reserved[11];
+};
+
+struct v4l2_capability {
+	__u8 driver[16];
+	__u8 card[32];
+	__u8 bus_info[32];
+	__u32 version;
+	__u32 capabilities;
+	__u32 device_caps;
+	__u32 reserved[3];
+};
+
+struct v4l2_fmtdesc {
+	__u32 index;
+	__u32 type;
+	__u32 flags;
+	__u8 description[32];
+	__u32 pixelformat;
+	__u32 mbus_code;
+	__u32 reserved[3];
+};
+
+struct v4l2_pix_format {
+	__u32 width;
+	__u32 height;
+	__u32 pixelformat;
+	__u32 field;
+	__u32 bytesperline;
+	__u32 sizeimage;
+	__u32 colorspace;
+	__u32 priv;
+	__u32 flags;
+	union {
+		__u32 ycbcr_enc;
+		__u32 hsv_enc;
+	};
+	__u32 quantization;
+	__u32 xfer_func;
+};
+
+struct v4l2_plane_pix_format {
+	__u32 sizeimage;
+	__u32 bytesperline;
+	__u16 reserved[6];
+};
+
+struct v4l2_pix_format_mplane {
+	__u32 width;
+	__u32 height;
+	__u32 pixelformat;
+	__u32 field;
+	__u32 colorspace;
+	struct v4l2_plane_pix_format plane_fmt[8];
+	__u8 num_planes;
+	__u8 flags;
+	union {
+		__u8 ycbcr_enc;
+		__u8 hsv_enc;
+	};
+	__u8 quantization;
+	__u8 xfer_func;
+	__u8 reserved[7];
+};
+
+struct v4l2_clip;
+
+struct v4l2_window {
+	struct v4l2_rect w;
+	__u32 field;
+	__u32 chromakey;
+	struct v4l2_clip *clips;
+	__u32 clipcount;
+	void __attribute__((btf_type_tag("user"))) *bitmap;
+	__u8 global_alpha;
+};
+
+struct v4l2_sdr_format {
+	__u32 pixelformat;
+	__u32 buffersize;
+	__u8 reserved[24];
+};
+
+struct v4l2_meta_format {
+	__u32 dataformat;
+	__u32 buffersize;
+};
+
+struct v4l2_format {
+	__u32 type;
+	union {
+		struct v4l2_pix_format pix;
+		struct v4l2_pix_format_mplane pix_mp;
+		struct v4l2_window win;
+		struct v4l2_vbi_format vbi;
+		struct v4l2_sliced_vbi_format sliced;
+		struct v4l2_sdr_format sdr;
+		struct v4l2_meta_format meta;
+		__u8 raw_data[200];
+	} fmt;
+};
+
+struct v4l2_clip {
+	struct v4l2_rect c;
+	struct v4l2_clip __attribute__((btf_type_tag("user"))) *next;
+};
+
+struct v4l2_exportbuffer {
+	__u32 type;
+	__u32 index;
+	__u32 plane;
+	__u32 flags;
+	__s32 fd;
+	__u32 reserved[11];
+};
+
+struct v4l2_create_buffers {
+	__u32 index;
+	__u32 count;
+	__u32 memory;
+	struct v4l2_format format;
+	__u32 capabilities;
+	__u32 flags;
+	__u32 reserved[6];
+};
+
+struct v4l2_framebuffer {
+	__u32 capability;
+	__u32 flags;
+	void *base;
+	struct {
+		__u32 width;
+		__u32 height;
+		__u32 pixelformat;
+		__u32 field;
+		__u32 bytesperline;
+		__u32 sizeimage;
+		__u32 colorspace;
+		__u32 priv;
+	} fmt;
+};
+
+struct v4l2_input {
+	__u32 index;
+	__u8 name[32];
+	__u32 type;
+	__u32 audioset;
+	__u32 tuner;
+	v4l2_std_id std;
+	__u32 status;
+	__u32 capabilities;
+	__u32 reserved[3];
+};
+
+struct v4l2_output {
+	__u32 index;
+	__u8 name[32];
+	__u32 type;
+	__u32 audioset;
+	__u32 modulator;
+	v4l2_std_id std;
+	__u32 capabilities;
+	__u32 reserved[3];
+};
+
+struct v4l2_queryctrl {
+	__u32 id;
+	__u32 type;
+	__u8 name[32];
+	__s32 minimum;
+	__s32 maximum;
+	__s32 step;
+	__s32 default_value;
+	__u32 flags;
+	__u32 reserved[2];
+};
+
+struct v4l2_query_ext_ctrl {
+	__u32 id;
+	__u32 type;
+	char name[32];
+	__s64 minimum;
+	__s64 maximum;
+	__u64 step;
+	__s64 default_value;
+	__u32 flags;
+	__u32 elem_size;
+	__u32 elems;
+	__u32 nr_of_dims;
+	__u32 dims[4];
+	__u32 reserved[32];
+};
+
+struct v4l2_control {
+	__u32 id;
+	__s32 value;
+};
+
+struct v4l2_ext_control;
+
+struct v4l2_ext_controls {
+	union {
+		__u32 which;
+	};
+	__u32 count;
+	__u32 error_idx;
+	__s32 request_fd;
+	__u32 reserved[1];
+	struct v4l2_ext_control *controls;
+};
+
+struct v4l2_area;
+
+struct v4l2_ctrl_h264_sps;
+
+struct v4l2_ctrl_h264_pps;
+
+struct v4l2_ctrl_h264_scaling_matrix;
+
+struct v4l2_ctrl_h264_pred_weights;
+
+struct v4l2_ctrl_h264_slice_params;
+
+struct v4l2_ctrl_h264_decode_params;
+
+struct v4l2_ctrl_fwht_params;
+
+struct v4l2_ctrl_vp8_frame;
+
+struct v4l2_ctrl_mpeg2_sequence;
+
+struct v4l2_ctrl_mpeg2_picture;
+
+struct v4l2_ctrl_mpeg2_quantisation;
+
+struct v4l2_ctrl_vp9_compressed_hdr;
+
+struct v4l2_ctrl_vp9_frame;
+
+struct v4l2_ctrl_hevc_sps;
+
+struct v4l2_ctrl_hevc_pps;
+
+struct v4l2_ctrl_hevc_slice_params;
+
+struct v4l2_ctrl_hevc_scaling_matrix;
+
+struct v4l2_ctrl_hevc_decode_params;
+
+struct v4l2_ctrl_av1_sequence;
+
+struct v4l2_ctrl_av1_tile_group_entry;
+
+struct v4l2_ctrl_av1_frame;
+
+struct v4l2_ctrl_av1_film_grain;
+
+struct v4l2_ext_control {
+	__u32 id;
+	__u32 size;
+	__u32 reserved2[1];
+	union {
+		__s32 value;
+		__s64 value64;
+		char __attribute__((btf_type_tag("user"))) *string;
+		__u8 __attribute__((btf_type_tag("user"))) *p_u8;
+		__u16 __attribute__((btf_type_tag("user"))) *p_u16;
+		__u32 __attribute__((btf_type_tag("user"))) *p_u32;
+		__s32 __attribute__((btf_type_tag("user"))) *p_s32;
+		__s64 __attribute__((btf_type_tag("user"))) *p_s64;
+		struct v4l2_area __attribute__((btf_type_tag("user"))) *p_area;
+		struct v4l2_ctrl_h264_sps __attribute__((btf_type_tag("user"))) *p_h264_sps;
+		struct v4l2_ctrl_h264_pps *p_h264_pps;
+		struct v4l2_ctrl_h264_scaling_matrix __attribute__((btf_type_tag("user"))) *p_h264_scaling_matrix;
+		struct v4l2_ctrl_h264_pred_weights __attribute__((btf_type_tag("user"))) *p_h264_pred_weights;
+		struct v4l2_ctrl_h264_slice_params __attribute__((btf_type_tag("user"))) *p_h264_slice_params;
+		struct v4l2_ctrl_h264_decode_params __attribute__((btf_type_tag("user"))) *p_h264_decode_params;
+		struct v4l2_ctrl_fwht_params __attribute__((btf_type_tag("user"))) *p_fwht_params;
+		struct v4l2_ctrl_vp8_frame __attribute__((btf_type_tag("user"))) *p_vp8_frame;
+		struct v4l2_ctrl_mpeg2_sequence __attribute__((btf_type_tag("user"))) *p_mpeg2_sequence;
+		struct v4l2_ctrl_mpeg2_picture __attribute__((btf_type_tag("user"))) *p_mpeg2_picture;
+		struct v4l2_ctrl_mpeg2_quantisation __attribute__((btf_type_tag("user"))) *p_mpeg2_quantisation;
+		struct v4l2_ctrl_vp9_compressed_hdr __attribute__((btf_type_tag("user"))) *p_vp9_compressed_hdr_probs;
+		struct v4l2_ctrl_vp9_frame __attribute__((btf_type_tag("user"))) *p_vp9_frame;
+		struct v4l2_ctrl_hevc_sps __attribute__((btf_type_tag("user"))) *p_hevc_sps;
+		struct v4l2_ctrl_hevc_pps __attribute__((btf_type_tag("user"))) *p_hevc_pps;
+		struct v4l2_ctrl_hevc_slice_params __attribute__((btf_type_tag("user"))) *p_hevc_slice_params;
+		struct v4l2_ctrl_hevc_scaling_matrix __attribute__((btf_type_tag("user"))) *p_hevc_scaling_matrix;
+		struct v4l2_ctrl_hevc_decode_params __attribute__((btf_type_tag("user"))) *p_hevc_decode_params;
+		struct v4l2_ctrl_av1_sequence __attribute__((btf_type_tag("user"))) *p_av1_sequence;
+		struct v4l2_ctrl_av1_tile_group_entry __attribute__((btf_type_tag("user"))) *p_av1_tile_group_entry;
+		struct v4l2_ctrl_av1_frame __attribute__((btf_type_tag("user"))) *p_av1_frame;
+		struct v4l2_ctrl_av1_film_grain __attribute__((btf_type_tag("user"))) *p_av1_film_grain;
+		void __attribute__((btf_type_tag("user"))) *ptr;
+	};
+} __attribute__((packed));
+
+struct v4l2_area {
+	__u32 width;
+	__u32 height;
+};
+
+struct v4l2_ctrl_h264_sps {
+	__u8 profile_idc;
+	__u8 constraint_set_flags;
+	__u8 level_idc;
+	__u8 seq_parameter_set_id;
+	__u8 chroma_format_idc;
+	__u8 bit_depth_luma_minus8;
+	__u8 bit_depth_chroma_minus8;
+	__u8 log2_max_frame_num_minus4;
+	__u8 pic_order_cnt_type;
+	__u8 log2_max_pic_order_cnt_lsb_minus4;
+	__u8 max_num_ref_frames;
+	__u8 num_ref_frames_in_pic_order_cnt_cycle;
+	__s32 offset_for_ref_frame[255];
+	__s32 offset_for_non_ref_pic;
+	__s32 offset_for_top_to_bottom_field;
+	__u16 pic_width_in_mbs_minus1;
+	__u16 pic_height_in_map_units_minus1;
+	__u32 flags;
+};
+
+struct v4l2_ctrl_h264_pps {
+	__u8 pic_parameter_set_id;
+	__u8 seq_parameter_set_id;
+	__u8 num_slice_groups_minus1;
+	__u8 num_ref_idx_l0_default_active_minus1;
+	__u8 num_ref_idx_l1_default_active_minus1;
+	__u8 weighted_bipred_idc;
+	__s8 pic_init_qp_minus26;
+	__s8 pic_init_qs_minus26;
+	__s8 chroma_qp_index_offset;
+	__s8 second_chroma_qp_index_offset;
+	__u16 flags;
+};
+
+struct v4l2_ctrl_h264_scaling_matrix {
+	__u8 scaling_list_4x4[96];
+	__u8 scaling_list_8x8[384];
+};
+
+struct v4l2_h264_weight_factors {
+	__s16 luma_weight[32];
+	__s16 luma_offset[32];
+	__s16 chroma_weight[64];
+	__s16 chroma_offset[64];
+};
+
+struct v4l2_ctrl_h264_pred_weights {
+	__u16 luma_log2_weight_denom;
+	__u16 chroma_log2_weight_denom;
+	struct v4l2_h264_weight_factors weight_factors[2];
+};
+
+struct v4l2_h264_reference {
+	__u8 fields;
+	__u8 index;
+};
+
+struct v4l2_ctrl_h264_slice_params {
+	__u32 header_bit_size;
+	__u32 first_mb_in_slice;
+	__u8 slice_type;
+	__u8 colour_plane_id;
+	__u8 redundant_pic_cnt;
+	__u8 cabac_init_idc;
+	__s8 slice_qp_delta;
+	__s8 slice_qs_delta;
+	__u8 disable_deblocking_filter_idc;
+	__s8 slice_alpha_c0_offset_div2;
+	__s8 slice_beta_offset_div2;
+	__u8 num_ref_idx_l0_active_minus1;
+	__u8 num_ref_idx_l1_active_minus1;
+	__u8 reserved;
+	struct v4l2_h264_reference ref_pic_list0[32];
+	struct v4l2_h264_reference ref_pic_list1[32];
+	__u32 flags;
+};
+
+struct v4l2_h264_dpb_entry {
+	__u64 reference_ts;
+	__u32 pic_num;
+	__u16 frame_num;
+	__u8 fields;
+	__u8 reserved[5];
+	__s32 top_field_order_cnt;
+	__s32 bottom_field_order_cnt;
+	__u32 flags;
+};
+
+struct v4l2_ctrl_h264_decode_params {
+	struct v4l2_h264_dpb_entry dpb[16];
+	__u16 nal_ref_idc;
+	__u16 frame_num;
+	__s32 top_field_order_cnt;
+	__s32 bottom_field_order_cnt;
+	__u16 idr_pic_id;
+	__u16 pic_order_cnt_lsb;
+	__s32 delta_pic_order_cnt_bottom;
+	__s32 delta_pic_order_cnt0;
+	__s32 delta_pic_order_cnt1;
+	__u32 dec_ref_pic_marking_bit_size;
+	__u32 pic_order_cnt_bit_size;
+	__u32 slice_group_change_cycle;
+	__u32 reserved;
+	__u32 flags;
+};
+
+struct v4l2_ctrl_fwht_params {
+	__u64 backward_ref_ts;
+	__u32 version;
+	__u32 width;
+	__u32 height;
+	__u32 flags;
+	__u32 colorspace;
+	__u32 xfer_func;
+	__u32 ycbcr_enc;
+	__u32 quantization;
+};
+
+struct v4l2_vp8_segment {
+	__s8 quant_update[4];
+	__s8 lf_update[4];
+	__u8 segment_probs[3];
+	__u8 padding;
+	__u32 flags;
+};
+
+struct v4l2_vp8_loop_filter {
+	__s8 ref_frm_delta[4];
+	__s8 mb_mode_delta[4];
+	__u8 sharpness_level;
+	__u8 level;
+	__u16 padding;
+	__u32 flags;
+};
+
+struct v4l2_vp8_quantization {
+	__u8 y_ac_qi;
+	__s8 y_dc_delta;
+	__s8 y2_dc_delta;
+	__s8 y2_ac_delta;
+	__s8 uv_dc_delta;
+	__s8 uv_ac_delta;
+	__u16 padding;
+};
+
+struct v4l2_vp8_entropy {
+	__u8 coeff_probs[1056];
+	__u8 y_mode_probs[4];
+	__u8 uv_mode_probs[3];
+	__u8 mv_probs[38];
+	__u8 padding[3];
+};
+
+struct v4l2_vp8_entropy_coder_state {
+	__u8 range;
+	__u8 value;
+	__u8 bit_count;
+	__u8 padding;
+};
+
+struct v4l2_ctrl_vp8_frame {
+	struct v4l2_vp8_segment segment;
+	struct v4l2_vp8_loop_filter lf;
+	struct v4l2_vp8_quantization quant;
+	struct v4l2_vp8_entropy entropy;
+	struct v4l2_vp8_entropy_coder_state coder_state;
+	__u16 width;
+	__u16 height;
+	__u8 horizontal_scale;
+	__u8 vertical_scale;
+	__u8 version;
+	__u8 prob_skip_false;
+	__u8 prob_intra;
+	__u8 prob_last;
+	__u8 prob_gf;
+	__u8 num_dct_parts;
+	__u32 first_part_size;
+	__u32 first_part_header_bits;
+	__u32 dct_part_sizes[8];
+	__u64 last_frame_ts;
+	__u64 golden_frame_ts;
+	__u64 alt_frame_ts;
+	__u64 flags;
+};
+
+struct v4l2_ctrl_mpeg2_sequence {
+	__u16 horizontal_size;
+	__u16 vertical_size;
+	__u32 vbv_buffer_size;
+	__u16 profile_and_level_indication;
+	__u8 chroma_format;
+	__u8 flags;
+};
+
+struct v4l2_ctrl_mpeg2_picture {
+	__u64 backward_ref_ts;
+	__u64 forward_ref_ts;
+	__u32 flags;
+	__u8 f_code[4];
+	__u8 picture_coding_type;
+	__u8 picture_structure;
+	__u8 intra_dc_precision;
+	__u8 reserved[5];
+};
+
+struct v4l2_ctrl_mpeg2_quantisation {
+	__u8 intra_quantiser_matrix[64];
+	__u8 non_intra_quantiser_matrix[64];
+	__u8 chroma_intra_quantiser_matrix[64];
+	__u8 chroma_non_intra_quantiser_matrix[64];
+};
+
+struct v4l2_vp9_mv_probs {
+	__u8 joint[3];
+	__u8 sign[2];
+	__u8 classes[20];
+	__u8 class0_bit[2];
+	__u8 bits[20];
+	__u8 class0_fr[12];
+	__u8 fr[6];
+	__u8 class0_hp[2];
+	__u8 hp[2];
+};
+
+struct v4l2_ctrl_vp9_compressed_hdr {
+	__u8 tx_mode;
+	__u8 tx8[2];
+	__u8 tx16[4];
+	__u8 tx32[6];
+	__u8 coef[1728];
+	__u8 skip[3];
+	__u8 inter_mode[21];
+	__u8 interp_filter[8];
+	__u8 is_inter[4];
+	__u8 comp_mode[5];
+	__u8 single_ref[10];
+	__u8 comp_ref[5];
+	__u8 y_mode[36];
+	__u8 uv_mode[90];
+	__u8 partition[48];
+	struct v4l2_vp9_mv_probs mv;
+};
+
+struct v4l2_vp9_loop_filter {
+	__s8 ref_deltas[4];
+	__s8 mode_deltas[2];
+	__u8 level;
+	__u8 sharpness;
+	__u8 flags;
+	__u8 reserved[7];
+};
+
+struct v4l2_vp9_quantization {
+	__u8 base_q_idx;
+	__s8 delta_q_y_dc;
+	__s8 delta_q_uv_dc;
+	__s8 delta_q_uv_ac;
+	__u8 reserved[4];
+};
+
+struct v4l2_vp9_segmentation {
+	__s16 feature_data[32];
+	__u8 feature_enabled[8];
+	__u8 tree_probs[7];
+	__u8 pred_probs[3];
+	__u8 flags;
+	__u8 reserved[5];
+};
+
+struct v4l2_ctrl_vp9_frame {
+	struct v4l2_vp9_loop_filter lf;
+	struct v4l2_vp9_quantization quant;
+	struct v4l2_vp9_segmentation seg;
+	__u32 flags;
+	__u16 compressed_header_size;
+	__u16 uncompressed_header_size;
+	__u16 frame_width_minus_1;
+	__u16 frame_height_minus_1;
+	__u16 render_width_minus_1;
+	__u16 render_height_minus_1;
+	__u64 last_frame_ts;
+	__u64 golden_frame_ts;
+	__u64 alt_frame_ts;
+	__u8 ref_frame_sign_bias;
+	__u8 reset_frame_context;
+	__u8 frame_context_idx;
+	__u8 profile;
+	__u8 bit_depth;
+	__u8 interpolation_filter;
+	__u8 tile_cols_log2;
+	__u8 tile_rows_log2;
+	__u8 reference_mode;
+	__u8 reserved[7];
+};
+
+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;
+};
+
+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;
+};
+
+struct v4l2_hevc_pred_weight_table {
+	__s8 delta_luma_weight_l0[16];
+	__s8 luma_offset_l0[16];
+	__s8 delta_chroma_weight_l0[32];
+	__s8 chroma_offset_l0[32];
+	__s8 delta_luma_weight_l1[16];
+	__s8 luma_offset_l1[16];
+	__s8 delta_chroma_weight_l1[32];
+	__s8 chroma_offset_l1[32];
+	__u8 luma_log2_weight_denom;
+	__s8 delta_chroma_log2_weight_denom;
+};
+
+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[16];
+	__u8 ref_idx_l1[16];
+	__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;
+};
+
+struct v4l2_ctrl_hevc_scaling_matrix {
+	__u8 scaling_list_4x4[96];
+	__u8 scaling_list_8x8[384];
+	__u8 scaling_list_16x16[384];
+	__u8 scaling_list_32x32[128];
+	__u8 scaling_list_dc_coef_16x16[6];
+	__u8 scaling_list_dc_coef_32x32[2];
+};
+
+struct v4l2_hevc_dpb_entry {
+	__u64 timestamp;
+	__u8 flags;
+	__u8 field_pic;
+	__u16 reserved;
+	__s32 pic_order_cnt_val;
+};
+
+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[16];
+	__u8 poc_st_curr_after[16];
+	__u8 poc_lt_curr[16];
+	__u8 num_delta_pocs_of_ref_rps_idx;
+	__u8 reserved[3];
+	struct v4l2_hevc_dpb_entry dpb[16];
+	__u64 flags;
+};
+
+struct v4l2_ctrl_av1_sequence {
+	__u32 flags;
+	__u8 seq_profile;
+	__u8 order_hint_bits;
+	__u8 bit_depth;
+	__u8 reserved;
+	__u16 max_frame_width_minus_1;
+	__u16 max_frame_height_minus_1;
+};
+
+struct v4l2_ctrl_av1_tile_group_entry {
+	__u32 tile_offset;
+	__u32 tile_size;
+	__u32 tile_row;
+	__u32 tile_col;
+};
+
+struct v4l2_av1_tile_info {
+	__u8 flags;
+	__u8 context_update_tile_id;
+	__u8 tile_cols;
+	__u8 tile_rows;
+	__u32 mi_col_starts[65];
+	__u32 mi_row_starts[65];
+	__u32 width_in_sbs_minus_1[64];
+	__u32 height_in_sbs_minus_1[64];
+	__u8 tile_size_bytes;
+	__u8 reserved[3];
+};
+
+struct v4l2_av1_quantization {
+	__u8 flags;
+	__u8 base_q_idx;
+	__s8 delta_q_y_dc;
+	__s8 delta_q_u_dc;
+	__s8 delta_q_u_ac;
+	__s8 delta_q_v_dc;
+	__s8 delta_q_v_ac;
+	__u8 qm_y;
+	__u8 qm_u;
+	__u8 qm_v;
+	__u8 delta_q_res;
+};
+
+struct v4l2_av1_segmentation {
+	__u8 flags;
+	__u8 last_active_seg_id;
+	__u8 feature_enabled[8];
+	__s16 feature_data[64];
+};
+
+struct v4l2_av1_loop_filter {
+	__u8 flags;
+	__u8 level[4];
+	__u8 sharpness;
+	__s8 ref_deltas[8];
+	__s8 mode_deltas[2];
+	__u8 delta_lf_res;
+};
+
+struct v4l2_av1_cdef {
+	__u8 damping_minus_3;
+	__u8 bits;
+	__u8 y_pri_strength[8];
+	__u8 y_sec_strength[8];
+	__u8 uv_pri_strength[8];
+	__u8 uv_sec_strength[8];
+};
+
+enum v4l2_av1_frame_restoration_type {
+	V4L2_AV1_FRAME_RESTORE_NONE = 0,
+	V4L2_AV1_FRAME_RESTORE_WIENER = 1,
+	V4L2_AV1_FRAME_RESTORE_SGRPROJ = 2,
+	V4L2_AV1_FRAME_RESTORE_SWITCHABLE = 3,
+};
+
+struct v4l2_av1_loop_restoration {
+	__u8 flags;
+	__u8 lr_unit_shift;
+	__u8 lr_uv_shift;
+	__u8 reserved;
+	enum v4l2_av1_frame_restoration_type frame_restoration_type[3];
+	__u32 loop_restoration_size[3];
+};
+
+enum v4l2_av1_warp_model {
+	V4L2_AV1_WARP_MODEL_IDENTITY = 0,
+	V4L2_AV1_WARP_MODEL_TRANSLATION = 1,
+	V4L2_AV1_WARP_MODEL_ROTZOOM = 2,
+	V4L2_AV1_WARP_MODEL_AFFINE = 3,
+};
+
+struct v4l2_av1_global_motion {
+	__u8 flags[8];
+	enum v4l2_av1_warp_model type[8];
+	__s32 params[48];
+	__u8 invalid;
+	__u8 reserved[3];
+};
+
+enum v4l2_av1_frame_type {
+	V4L2_AV1_KEY_FRAME = 0,
+	V4L2_AV1_INTER_FRAME = 1,
+	V4L2_AV1_INTRA_ONLY_FRAME = 2,
+	V4L2_AV1_SWITCH_FRAME = 3,
+};
+
+enum v4l2_av1_interpolation_filter {
+	V4L2_AV1_INTERPOLATION_FILTER_EIGHTTAP = 0,
+	V4L2_AV1_INTERPOLATION_FILTER_EIGHTTAP_SMOOTH = 1,
+	V4L2_AV1_INTERPOLATION_FILTER_EIGHTTAP_SHARP = 2,
+	V4L2_AV1_INTERPOLATION_FILTER_BILINEAR = 3,
+	V4L2_AV1_INTERPOLATION_FILTER_SWITCHABLE = 4,
+};
+
+enum v4l2_av1_tx_mode {
+	V4L2_AV1_TX_MODE_ONLY_4X4 = 0,
+	V4L2_AV1_TX_MODE_LARGEST = 1,
+	V4L2_AV1_TX_MODE_SELECT = 2,
+};
+
+struct v4l2_ctrl_av1_frame {
+	struct v4l2_av1_tile_info tile_info;
+	struct v4l2_av1_quantization quantization;
+	__u8 superres_denom;
+	struct v4l2_av1_segmentation segmentation;
+	struct v4l2_av1_loop_filter loop_filter;
+	struct v4l2_av1_cdef cdef;
+	__u8 skip_mode_frame[2];
+	__u8 primary_ref_frame;
+	struct v4l2_av1_loop_restoration loop_restoration;
+	struct v4l2_av1_global_motion global_motion;
+	__u32 flags;
+	enum v4l2_av1_frame_type frame_type;
+	__u32 order_hint;
+	__u32 upscaled_width;
+	enum v4l2_av1_interpolation_filter interpolation_filter;
+	enum v4l2_av1_tx_mode tx_mode;
+	__u32 frame_width_minus_1;
+	__u32 frame_height_minus_1;
+	__u16 render_width_minus_1;
+	__u16 render_height_minus_1;
+	__u32 current_frame_id;
+	__u32 buffer_removal_time[32];
+	__u8 reserved[4];
+	__u32 order_hints[8];
+	__u64 reference_frame_ts[8];
+	__s8 ref_frame_idx[7];
+	__u8 refresh_frame_flags;
+};
+
+struct v4l2_ctrl_av1_film_grain {
+	__u8 flags;
+	__u8 cr_mult;
+	__u16 grain_seed;
+	__u8 film_grain_params_ref_idx;
+	__u8 num_y_points;
+	__u8 point_y_value[16];
+	__u8 point_y_scaling[16];
+	__u8 num_cb_points;
+	__u8 point_cb_value[16];
+	__u8 point_cb_scaling[16];
+	__u8 num_cr_points;
+	__u8 point_cr_value[16];
+	__u8 point_cr_scaling[16];
+	__u8 grain_scaling_minus_8;
+	__u8 ar_coeff_lag;
+	__u8 ar_coeffs_y_plus_128[25];
+	__u8 ar_coeffs_cb_plus_128[25];
+	__u8 ar_coeffs_cr_plus_128[25];
+	__u8 ar_coeff_shift_minus_6;
+	__u8 grain_scale_shift;
+	__u8 cb_mult;
+	__u8 cb_luma_mult;
+	__u8 cr_luma_mult;
+	__u16 cb_offset;
+	__u16 cr_offset;
+	__u8 reserved[4];
+};
+
+struct v4l2_querymenu {
+	__u32 id;
+	__u32 index;
+	union {
+		__u8 name[32];
+		__s64 value;
+	};
+	__u32 reserved;
+} __attribute__((packed));
+
+struct v4l2_audio {
+	__u32 index;
+	__u8 name[32];
+	__u32 capability;
+	__u32 mode;
+	__u32 reserved[2];
+};
+
+struct v4l2_audioout {
+	__u32 index;
+	__u8 name[32];
+	__u32 capability;
+	__u32 mode;
+	__u32 reserved[2];
+};
+
+struct v4l2_selection {
+	__u32 type;
+	__u32 target;
+	__u32 flags;
+	struct v4l2_rect r;
+	__u32 reserved[9];
+};
+
+struct v4l2_jpegcompression {
+	int quality;
+	int APPn;
+	int APP_len;
+	char APP_data[60];
+	int COM_len;
+	char COM_data[60];
+	__u32 jpeg_markers;
+};
+
+struct v4l2_enc_idx_entry {
+	__u64 offset;
+	__u64 pts;
+	__u32 length;
+	__u32 flags;
+	__u32 reserved[2];
+};
+
+struct v4l2_enc_idx {
+	__u32 entries;
+	__u32 entries_cap;
+	__u32 reserved[4];
+	struct v4l2_enc_idx_entry entry[64];
+};
+
+struct v4l2_encoder_cmd {
+	__u32 cmd;
+	__u32 flags;
+	union {
+		struct {
+			__u32 data[8];
+		} raw;
+	};
+};
+
+struct v4l2_decoder_cmd {
+	__u32 cmd;
+	__u32 flags;
+	union {
+		struct {
+			__u64 pts;
+		} stop;
+		struct {
+			__s32 speed;
+			__u32 format;
+		} start;
+		struct {
+			__u32 data[16];
+		} raw;
+	};
+};
+
+struct v4l2_captureparm {
+	__u32 capability;
+	__u32 capturemode;
+	struct v4l2_fract timeperframe;
+	__u32 extendedmode;
+	__u32 readbuffers;
+	__u32 reserved[4];
+};
+
+struct v4l2_outputparm {
+	__u32 capability;
+	__u32 outputmode;
+	struct v4l2_fract timeperframe;
+	__u32 extendedmode;
+	__u32 writebuffers;
+	__u32 reserved[4];
+};
+
+struct v4l2_streamparm {
+	__u32 type;
+	union {
+		struct v4l2_captureparm capture;
+		struct v4l2_outputparm output;
+		__u8 raw_data[200];
+	} parm;
+};
+
+struct v4l2_hw_freq_seek {
+	__u32 tuner;
+	__u32 type;
+	__u32 seek_upward;
+	__u32 wrap_around;
+	__u32 spacing;
+	__u32 rangelow;
+	__u32 rangehigh;
+	__u32 reserved[5];
+};
+
+struct v4l2_frmsize_discrete {
+	__u32 width;
+	__u32 height;
+};
+
+struct v4l2_frmsize_stepwise {
+	__u32 min_width;
+	__u32 max_width;
+	__u32 step_width;
+	__u32 min_height;
+	__u32 max_height;
+	__u32 step_height;
+};
+
+struct v4l2_frmsizeenum {
+	__u32 index;
+	__u32 pixel_format;
+	__u32 type;
+	union {
+		struct v4l2_frmsize_discrete discrete;
+		struct v4l2_frmsize_stepwise stepwise;
+	};
+	__u32 reserved[2];
+};
+
+struct v4l2_frmival_stepwise {
+	struct v4l2_fract min;
+	struct v4l2_fract max;
+	struct v4l2_fract step;
+};
+
+struct v4l2_frmivalenum {
+	__u32 index;
+	__u32 pixel_format;
+	__u32 width;
+	__u32 height;
+	__u32 type;
+	union {
+		struct v4l2_fract discrete;
+		struct v4l2_frmival_stepwise stepwise;
+	};
+	__u32 reserved[2];
+};
+
+enum uvcg_format_type {
+	UVCG_UNCOMPRESSED = 0,
+	UVCG_MJPEG = 1,
+};
+
+enum v4l2_colorspace {
+	V4L2_COLORSPACE_DEFAULT = 0,
+	V4L2_COLORSPACE_SMPTE170M = 1,
+	V4L2_COLORSPACE_SMPTE240M = 2,
+	V4L2_COLORSPACE_REC709 = 3,
+	V4L2_COLORSPACE_BT878 = 4,
+	V4L2_COLORSPACE_470_SYSTEM_M = 5,
+	V4L2_COLORSPACE_470_SYSTEM_BG = 6,
+	V4L2_COLORSPACE_JPEG = 7,
+	V4L2_COLORSPACE_SRGB = 8,
+	V4L2_COLORSPACE_OPRGB = 9,
+	V4L2_COLORSPACE_BT2020 = 10,
+	V4L2_COLORSPACE_RAW = 11,
+	V4L2_COLORSPACE_DCI_P3 = 12,
+	V4L2_COLORSPACE_LAST = 13,
+};
+
+enum v4l2_frmsizetypes {
+	V4L2_FRMSIZE_TYPE_DISCRETE = 1,
+	V4L2_FRMSIZE_TYPE_CONTINUOUS = 2,
+	V4L2_FRMSIZE_TYPE_STEPWISE = 3,
+};
+
+enum v4l2_frmivaltypes {
+	V4L2_FRMIVAL_TYPE_DISCRETE = 1,
+	V4L2_FRMIVAL_TYPE_CONTINUOUS = 2,
+	V4L2_FRMIVAL_TYPE_STEPWISE = 3,
+};
+
+struct uvcg_format;
+
+struct uvcg_format_ptr {
+	struct uvcg_format *fmt;
+	struct list_head entry;
+};
+
+struct uvcg_color_matching;
+
+struct uvcg_format {
+	struct config_group group;
+	enum uvcg_format_type type;
+	unsigned int linked;
+	struct list_head frames;
+	unsigned int num_frames;
+	__u8 bmaControls[1];
+	struct uvcg_color_matching *color_matching;
+};
+
+struct uvc_color_matching_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubType;
+	__u8 bColorPrimaries;
+	__u8 bTransferCharacteristics;
+	__u8 bMatrixCoefficients;
+};
+
+struct uvcg_color_matching {
+	struct config_group group;
+	struct uvc_color_matching_descriptor desc;
+	unsigned int refcnt;
+};
+
+struct uvc_format_uncompressed {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubType;
+	__u8 bFormatIndex;
+	__u8 bNumFrameDescriptors;
+	__u8 guidFormat[16];
+	__u8 bBitsPerPixel;
+	__u8 bDefaultFrameIndex;
+	__u8 bAspectRatioX;
+	__u8 bAspectRatioY;
+	__u8 bmInterlaceFlags;
+	__u8 bCopyProtect;
+};
+
+struct uvcg_uncompressed {
+	struct uvcg_format fmt;
+	struct uvc_format_uncompressed desc;
+};
+
+struct uvcg_frame;
+
+struct uvcg_frame_ptr {
+	struct uvcg_frame *frm;
+	struct list_head entry;
+};
+
+struct uvcg_frame {
+	struct config_item item;
+	enum uvcg_format_type fmt_type;
+	struct {
+		u8 b_length;
+		u8 b_descriptor_type;
+		u8 b_descriptor_subtype;
+		u8 b_frame_index;
+		u8 bm_capabilities;
+		u16 w_width;
+		u16 w_height;
+		u32 dw_min_bit_rate;
+		u32 dw_max_bit_rate;
+		u32 dw_max_video_frame_buffer_size;
+		u32 dw_default_frame_interval;
+		u8 b_frame_interval_type;
+	} __attribute__((packed)) frame;
+	u32 *dw_frame_interval;
+};
+
+struct uvc_file_handle {
+	struct v4l2_fh vfh;
+	struct uvc_video *device;
+	bool is_uvc_app_handle;
+};
+
+struct uvc_format_desc {
+	u8 guid[16];
+	u32 fcc;
+};
+
+struct v4l2_subscribed_event;
+
+struct v4l2_subscribed_event_ops {
+	int (*add)(struct v4l2_subscribed_event *, unsigned int);
+	void (*del)(struct v4l2_subscribed_event *);
+	void (*replace)(struct v4l2_event *, const struct v4l2_event *);
+	void (*merge)(const struct v4l2_event *, struct v4l2_event *);
+};
+
+struct v4l2_kevent {
+	struct list_head list;
+	struct v4l2_subscribed_event *sev;
+	struct v4l2_event event;
+	u64 ts;
+};
+
+struct v4l2_subscribed_event {
+	struct list_head list;
+	u32 type;
+	u32 id;
+	u32 flags;
+	struct v4l2_fh *fh;
+	struct list_head node;
+	const struct v4l2_subscribed_event_ops *ops;
+	unsigned int elems;
+	unsigned int first;
+	unsigned int in_use;
+	struct v4l2_kevent events[0];
+};
+
+struct uvc_request {
+	struct usb_request *req;
+	u8 *req_buffer;
+	struct uvc_video *video;
+	struct sg_table sgt;
+	u8 header[12];
+	struct uvc_buffer *last_buf;
+	struct list_head list;
+};
+
+struct uvcg_config_group_type {
+	struct config_item_type type;
+	const char *name;
+	const struct uvcg_config_group_type **children;
+	int (*create_children)(struct config_group *);
+};
+
+enum uvc_color_primaries_values {
+	UVC_COLOR_PRIMARIES_UNSPECIFIED = 0,
+	UVC_COLOR_PRIMARIES_BT_709_SRGB = 1,
+	UVC_COLOR_PRIMARIES_BT_470_2_M = 2,
+	UVC_COLOR_PRIMARIES_BT_470_2_B_G = 3,
+	UVC_COLOR_PRIMARIES_SMPTE_170M = 4,
+	UVC_COLOR_PRIMARIES_SMPTE_240M = 5,
+};
+
+enum uvc_transfer_characteristics_values {
+	UVC_TRANSFER_CHARACTERISTICS_UNSPECIFIED = 0,
+	UVC_TRANSFER_CHARACTERISTICS_BT_709 = 1,
+	UVC_TRANSFER_CHARACTERISTICS_BT_470_2_M = 2,
+	UVC_TRANSFER_CHARACTERISTICS_BT_470_2_B_G = 3,
+	UVC_TRANSFER_CHARACTERISTICS_SMPTE_170M = 4,
+	UVC_TRANSFER_CHARACTERISTICS_SMPTE_240M = 5,
+	UVC_TRANSFER_CHARACTERISTICS_LINEAR = 6,
+	UVC_TRANSFER_CHARACTERISTICS_SRGB = 7,
+};
+
+enum uvc_matrix_coefficients {
+	UVC_MATRIX_COEFFICIENTS_UNSPECIFIED = 0,
+	UVC_MATRIX_COEFFICIENTS_BT_709 = 1,
+	UVC_MATRIX_COEFFICIENTS_FCC = 2,
+	UVC_MATRIX_COEFFICIENTS_BT_470_2_B_G = 3,
+	UVC_MATRIX_COEFFICIENTS_SMPTE_170M = 4,
+	UVC_MATRIX_COEFFICIENTS_SMPTE_240M = 5,
+};
+
+enum uvcg_strm_type {
+	UVCG_HEADER = 0,
+	UVCG_FORMAT = 1,
+	UVCG_FRAME = 2,
+	UVCG_COLOR_MATCHING = 3,
+};
+
+struct uvc_header_descriptor_1 {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubType;
+	__le16 bcdUVC;
+	__le16 wTotalLength;
+	__le32 dwClockFrequency;
+	__u8 bInCollection;
+	__u8 baInterfaceNr[1];
+} __attribute__((packed));
+
+struct uvcg_control_header {
+	struct config_item item;
+	struct uvc_header_descriptor_1 desc;
+	unsigned int linked;
+};
+
+struct uvcg_control_class_group {
+	struct config_group group;
+	const char *name;
+};
+
+struct uvc_format_mjpeg {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubType;
+	__u8 bFormatIndex;
+	__u8 bNumFrameDescriptors;
+	__u8 bmFlags;
+	__u8 bDefaultFrameIndex;
+	__u8 bAspectRatioX;
+	__u8 bAspectRatioY;
+	__u8 bmInterlaceFlags;
+	__u8 bCopyProtect;
+};
+
+struct uvcg_mjpeg {
+	struct uvcg_format fmt;
+	struct uvc_format_mjpeg desc;
+};
+
+struct uvcg_streaming_class_group {
+	struct config_group group;
+	const char *name;
+};
+
+struct snd_device;
+
+struct snd_device_ops {
+	int (*dev_free)(struct snd_device *);
+	int (*dev_register)(struct snd_device *);
+	int (*dev_disconnect)(struct snd_device *);
+	u64 android_kabi_reserved1;
+};
+
+enum snd_device_state {
+	SNDRV_DEV_BUILD = 0,
+	SNDRV_DEV_REGISTERED = 1,
+	SNDRV_DEV_DISCONNECTED = 2,
+};
+
+enum snd_device_type {
+	SNDRV_DEV_LOWLEVEL = 0,
+	SNDRV_DEV_INFO = 1,
+	SNDRV_DEV_BUS = 2,
+	SNDRV_DEV_CODEC = 3,
+	SNDRV_DEV_PCM = 4,
+	SNDRV_DEV_COMPRESS = 5,
+	SNDRV_DEV_RAWMIDI = 6,
+	SNDRV_DEV_TIMER = 7,
+	SNDRV_DEV_SEQUENCER = 8,
+	SNDRV_DEV_HWDEP = 9,
+	SNDRV_DEV_JACK = 10,
+	SNDRV_DEV_CONTROL = 11,
+};
+
+struct snd_device {
+	struct list_head list;
+	struct snd_card *card;
+	enum snd_device_state state;
+	enum snd_device_type type;
+	void *device_data;
+	const struct snd_device_ops *ops;
+	u64 android_kabi_reserved1;
+};
+
+struct snd_info_buffer;
+
+struct snd_info_entry_text {
+	void (*read)(struct snd_info_entry *, struct snd_info_buffer *);
+	void (*write)(struct snd_info_entry *, struct snd_info_buffer *);
+};
+
+struct snd_info_entry_ops;
+
+struct snd_info_entry {
+	const char *name;
+	umode_t mode;
+	long size;
+	unsigned short content;
+	union {
+		struct snd_info_entry_text text;
+		const struct snd_info_entry_ops *ops;
+	} c;
+	struct snd_info_entry *parent;
+	struct module *module;
+	void *private_data;
+	void (*private_free)(struct snd_info_entry *);
+	struct proc_dir_entry *p;
+	struct mutex access;
+	struct list_head children;
+	struct list_head list;
+	u64 android_kabi_reserved1;
+};
+
+struct snd_info_buffer {
+	char *buffer;
+	unsigned int curr;
+	unsigned int size;
+	unsigned int len;
+	int stop;
+	int error;
+};
+
+struct snd_info_entry_ops {
+	int (*open)(struct snd_info_entry *, unsigned short, void **);
+	int (*release)(struct snd_info_entry *, unsigned short, void *);
+	ssize_t (*read)(struct snd_info_entry *, void *, struct file *, char __attribute__((btf_type_tag("user"))) *, size_t, loff_t);
+	ssize_t (*write)(struct snd_info_entry *, void *, struct file *, const char __attribute__((btf_type_tag("user"))) *, size_t, loff_t);
+	loff_t (*llseek)(struct snd_info_entry *, void *, struct file *, loff_t, int);
+	__poll_t (*poll)(struct snd_info_entry *, void *, struct file *, poll_table *);
+	int (*ioctl)(struct snd_info_entry *, void *, struct file *, unsigned int, unsigned long);
+	int (*mmap)(struct snd_info_entry *, void *, struct inode *, struct file *, struct vm_area_struct *);
+	u64 android_kabi_reserved1;
+};
+
+struct snd_rawmidi_substream;
+
+struct snd_rawmidi_ops {
+	int (*open)(struct snd_rawmidi_substream *);
+	int (*close)(struct snd_rawmidi_substream *);
+	void (*trigger)(struct snd_rawmidi_substream *, int);
+	void (*drain)(struct snd_rawmidi_substream *);
+};
+
+struct snd_rawmidi;
+
+struct snd_rawmidi_str;
+
+struct snd_rawmidi_runtime;
+
+struct snd_rawmidi_substream {
+	struct list_head list;
+	int stream;
+	int number;
+	bool opened;
+	bool append;
+	bool active_sensing;
+	unsigned int framing;
+	unsigned int clock_type;
+	int use_count;
+	size_t bytes;
+	spinlock_t lock;
+	struct snd_rawmidi *rmidi;
+	struct snd_rawmidi_str *pstr;
+	char name[32];
+	struct snd_rawmidi_runtime *runtime;
+	struct pid *pid;
+	const struct snd_rawmidi_ops *ops;
+};
+
+struct snd_rawmidi_str {
+	unsigned int substream_count;
+	unsigned int substream_opened;
+	struct list_head substreams;
+};
+
+struct snd_rawmidi_global_ops;
+
+struct snd_rawmidi {
+	struct snd_card *card;
+	struct list_head list;
+	unsigned int device;
+	unsigned int info_flags;
+	char id[64];
+	char name[80];
+	const struct snd_rawmidi_global_ops *ops;
+	struct snd_rawmidi_str streams[2];
+	void *private_data;
+	void (*private_free)(struct snd_rawmidi *);
+	struct mutex open_mutex;
+	wait_queue_head_t open_wait;
+	struct device *dev;
+	struct snd_info_entry *proc_entry;
+};
+
+struct snd_seq_port_info;
+
+struct snd_rawmidi_global_ops {
+	int (*dev_register)(struct snd_rawmidi *);
+	int (*dev_unregister)(struct snd_rawmidi *);
+	void (*get_port_info)(struct snd_rawmidi *, int, struct snd_seq_port_info *);
+	long (*ioctl)(struct snd_rawmidi *, unsigned int, void __attribute__((btf_type_tag("user"))) *);
+	void (*proc_read)(struct snd_info_entry *, struct snd_info_buffer *);
+};
+
+struct snd_rawmidi_runtime {
+	struct snd_rawmidi_substream *substream;
+	unsigned int drain: 1;
+	unsigned int oss: 1;
+	unsigned char *buffer;
+	size_t buffer_size;
+	size_t appl_ptr;
+	size_t hw_ptr;
+	size_t avail_min;
+	size_t avail;
+	size_t xruns;
+	size_t align;
+	int buffer_ref;
+	wait_queue_head_t sleep;
+	void (*event)(struct snd_rawmidi_substream *);
+	struct work_struct event_work;
+	void *private_data;
+	void (*private_free)(struct snd_rawmidi_substream *);
+};
+
+struct uac1_ac_header_descriptor_1 {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__le16 bcdADC;
+	__le16 wTotalLength;
+	__u8 bInCollection;
+	__u8 baInterfaceNr[1];
+} __attribute__((packed));
+
+struct usb_ms_header_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__le16 bcdMSC;
+	__le16 wTotalLength;
+} __attribute__((packed));
+
+struct usb_ms_endpoint_descriptor_16 {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bNumEmbMIDIJack;
+	__u8 baAssocJackID[16];
+};
+
+enum {
+	STATE_INITIAL = 0,
+	STATE_1PARAM = 1,
+	STATE_2PARAM_1 = 2,
+	STATE_2PARAM_2 = 3,
+	STATE_SYSEX_0 = 4,
+	STATE_SYSEX_1 = 5,
+	STATE_SYSEX_2 = 6,
+	STATE_REAL_TIME = 7,
+	STATE_FINISHED = 8,
+};
+
+enum {
+	SNDRV_RAWMIDI_STREAM_OUTPUT = 0,
+	SNDRV_RAWMIDI_STREAM_INPUT = 1,
+	SNDRV_RAWMIDI_STREAM_LAST = 1,
+};
+
+struct f_midi_info {
+	struct device *dev;
+	int card_number;
+	u32 rmidi_device;
+	bool configured;
+	spinlock_t lock;
+};
+
+struct f_midi_opts {
+	struct usb_function_instance func_inst;
+	int index;
+	char *id;
+	bool id_allocated;
+	unsigned int in_ports;
+	unsigned int out_ports;
+	unsigned int buflen;
+	unsigned int qlen;
+	struct mutex lock;
+	int refcnt;
+	struct f_midi_info android_midi_info;
+};
+
+struct gmidi_in_port {
+	struct snd_rawmidi_substream *substream;
+	int active;
+	uint8_t cable;
+	uint8_t state;
+	uint8_t data[2];
+};
+
+struct f_midi {
+	struct usb_function func;
+	struct usb_gadget *gadget;
+	struct usb_ep *in_ep;
+	struct usb_ep *out_ep;
+	struct snd_card *card;
+	struct snd_rawmidi *rmidi;
+	u8 ms_id;
+	struct snd_rawmidi_substream *out_substream[16];
+	unsigned long out_triggered;
+	struct work_struct work;
+	unsigned int in_ports;
+	unsigned int out_ports;
+	int index;
+	char *id;
+	unsigned int buflen;
+	unsigned int qlen;
+	struct {
+		union {
+			struct __kfifo kfifo;
+			struct usb_request **type;
+			const struct usb_request **const_type;
+			char (*rectype)[0];
+			struct usb_request **ptr;
+			struct usb_request * const *ptr_const;
+		};
+		struct usb_request *buf[0];
+	} in_req_fifo;
+	spinlock_t transmit_lock;
+	unsigned int in_last_port;
+	unsigned char free_ref;
+	struct gmidi_in_port in_ports_array[0];
+};
+
+struct usb_midi_in_jack_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bJackType;
+	__u8 bJackID;
+	__u8 iJack;
+};
+
+struct usb_midi_source_pin {
+	__u8 baSourceID;
+	__u8 baSourcePin;
+};
+
+struct usb_midi_out_jack_descriptor_1 {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bJackType;
+	__u8 bJackID;
+	__u8 bNrInputPins;
+	struct usb_midi_source_pin pins[1];
+	__u8 iJack;
+};
+
+struct hid_class_descriptor {
+	__u8 bDescriptorType;
+	__le16 wDescriptorLength;
+} __attribute__((packed));
+
+struct hid_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__le16 bcdHID;
+	__u8 bCountryCode;
+	__u8 bNumDescriptors;
+	struct hid_class_descriptor desc[1];
+} __attribute__((packed));
+
+struct f_hid_opts {
+	struct usb_function_instance func_inst;
+	int minor;
+	unsigned char subclass;
+	unsigned char protocol;
+	unsigned char no_out_endpoint;
+	unsigned short report_length;
+	unsigned short report_desc_length;
+	unsigned char *report_desc;
+	bool report_desc_alloc;
+	struct mutex lock;
+	int refcnt;
+};
+
+struct f_hidg {
+	unsigned char bInterfaceSubClass;
+	unsigned char bInterfaceProtocol;
+	unsigned char protocol;
+	unsigned char idle;
+	unsigned short report_desc_length;
+	char *report_desc;
+	unsigned short report_length;
+	bool use_out_ep;
+	spinlock_t read_spinlock;
+	wait_queue_head_t read_queue;
+	struct list_head completed_out_req;
+	unsigned int qlen;
+	char *set_report_buf;
+	unsigned int set_report_length;
+	spinlock_t write_spinlock;
+	bool write_pending;
+	wait_queue_head_t write_queue;
+	struct usb_request *req;
+	struct device dev;
+	struct cdev cdev;
+	struct usb_function func;
+	struct usb_ep *in_ep;
+	struct usb_ep *out_ep;
+};
+
+struct f_hidg_req_list {
+	struct usb_request *req;
+	unsigned int pos;
+	struct list_head list;
+};
+
+struct acc_dev {
+	struct usb_function function;
+	struct usb_composite_dev *cdev;
+	spinlock_t lock;
+	struct kref kref;
+	struct usb_ep *ep_in;
+	struct usb_ep *ep_out;
+	bool online;
+	bool disconnected;
+	char manufacturer[256];
+	char model[256];
+	char description[256];
+	char version[256];
+	char uri[256];
+	char serial[256];
+	int string_index;
+	int start_requested;
+	int audio_mode;
+	struct list_head tx_idle;
+	wait_queue_head_t read_wq;
+	wait_queue_head_t write_wq;
+	struct usb_request *rx_req[2];
+	int rx_done;
+	struct delayed_work start_work;
+	struct work_struct getprotocol_work;
+	struct work_struct sendstring_work;
+	struct work_struct hid_work;
+	struct list_head hid_list;
+	struct list_head new_hid_list;
+	struct list_head dead_hid_list;
+};
+
+struct hid_device;
+
+struct hid_report;
+
+struct hid_ll_driver {
+	int (*start)(struct hid_device *);
+	void (*stop)(struct hid_device *);
+	int (*open)(struct hid_device *);
+	void (*close)(struct hid_device *);
+	int (*power)(struct hid_device *, int);
+	int (*parse)(struct hid_device *);
+	void (*request)(struct hid_device *, struct hid_report *, int);
+	int (*wait)(struct hid_device *);
+	int (*raw_request)(struct hid_device *, unsigned char, __u8 *, size_t, unsigned char, int);
+	int (*output_report)(struct hid_device *, __u8 *, size_t);
+	int (*idle)(struct hid_device *, int, int, int);
+	bool (*may_wakeup)(struct hid_device *);
+	unsigned int max_buffer_size;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+enum hid_type {
+	HID_TYPE_OTHER = 0,
+	HID_TYPE_USBMOUSE = 1,
+	HID_TYPE_USBNONE = 2,
+};
+
+struct hid_report_enum {
+	unsigned int numbered;
+	struct list_head report_list;
+	struct hid_report *report_id_hash[256];
+};
+
+enum hid_battery_status {
+	HID_BATTERY_UNKNOWN = 0,
+	HID_BATTERY_QUERIED = 1,
+	HID_BATTERY_REPORTED = 2,
+};
+
+struct hid_bpf_prog_list;
+
+struct hid_bpf {
+	u8 *device_data;
+	u32 allocated_data;
+	struct hid_bpf_prog_list __attribute__((btf_type_tag("rcu"))) *progs[2];
+	bool destroyed;
+	spinlock_t progs_lock;
+};
+
+struct hid_collection;
+
+struct hid_driver;
+
+struct hid_field;
+
+struct hid_usage;
+
+struct hid_device {
+	__u8 *dev_rdesc;
+	unsigned int dev_rsize;
+	__u8 *rdesc;
+	unsigned int rsize;
+	struct hid_collection *collection;
+	unsigned int collection_size;
+	unsigned int maxcollection;
+	unsigned int maxapplication;
+	__u16 bus;
+	__u16 group;
+	__u32 vendor;
+	__u32 product;
+	__u32 version;
+	enum hid_type type;
+	unsigned int country;
+	struct hid_report_enum report_enum[3];
+	struct work_struct led_work;
+	struct semaphore driver_input_lock;
+	struct device dev;
+	struct hid_driver *driver;
+	void *devres_group_id;
+	const struct hid_ll_driver *ll_driver;
+	struct mutex ll_open_lock;
+	unsigned int ll_open_count;
+	struct power_supply *battery;
+	__s32 battery_capacity;
+	__s32 battery_min;
+	__s32 battery_max;
+	__s32 battery_report_type;
+	__s32 battery_report_id;
+	__s32 battery_charge_status;
+	enum hid_battery_status battery_status;
+	bool battery_avoid_query;
+	ktime_t battery_ratelimit_time;
+	unsigned long status;
+	unsigned int claimed;
+	unsigned int quirks;
+	unsigned int initial_quirks;
+	bool io_started;
+	struct list_head inputs;
+	void *hiddev;
+	void *hidraw;
+	char name[128];
+	char phys[64];
+	char uniq[64];
+	void *driver_data;
+	int (*ff_init)(struct hid_device *);
+	int (*hiddev_connect)(struct hid_device *, unsigned int);
+	void (*hiddev_disconnect)(struct hid_device *);
+	void (*hiddev_hid_event)(struct hid_device *, struct hid_field *, struct hid_usage *, __s32);
+	void (*hiddev_report_event)(struct hid_device *, struct hid_report *);
+	unsigned short debug;
+	struct dentry *debug_dir;
+	struct dentry *debug_rdesc;
+	struct dentry *debug_events;
+	struct list_head debug_list;
+	spinlock_t debug_list_lock;
+	wait_queue_head_t debug_wait;
+	struct kref ref;
+	unsigned int id;
+	struct hid_bpf bpf;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct hid_collection {
+	int parent_idx;
+	unsigned int type;
+	unsigned int usage;
+	unsigned int level;
+};
+
+enum hid_report_type {
+	HID_INPUT_REPORT = 0,
+	HID_OUTPUT_REPORT = 1,
+	HID_FEATURE_REPORT = 2,
+	HID_REPORT_TYPES = 3,
+};
+
+struct hid_field_entry;
+
+struct hid_report {
+	struct list_head list;
+	struct list_head hidinput_list;
+	struct list_head field_entry_list;
+	unsigned int id;
+	enum hid_report_type type;
+	unsigned int application;
+	struct hid_field *field[256];
+	struct hid_field_entry *field_entries;
+	unsigned int maxfield;
+	unsigned int size;
+	struct hid_device *device;
+	bool tool_active;
+	unsigned int tool;
+	u64 android_kabi_reserved1;
+};
+
+struct hid_input;
+
+struct hid_field {
+	unsigned int physical;
+	unsigned int logical;
+	unsigned int application;
+	struct hid_usage *usage;
+	unsigned int maxusage;
+	unsigned int flags;
+	unsigned int report_offset;
+	unsigned int report_size;
+	unsigned int report_count;
+	unsigned int report_type;
+	__s32 *value;
+	__s32 *new_value;
+	__s32 *usages_priorities;
+	__s32 logical_minimum;
+	__s32 logical_maximum;
+	__s32 physical_minimum;
+	__s32 physical_maximum;
+	__s32 unit_exponent;
+	unsigned int unit;
+	bool ignored;
+	struct hid_report *report;
+	unsigned int index;
+	struct hid_input *hidinput;
+	__u16 dpad;
+	unsigned int slot_idx;
+};
+
+struct hid_usage {
+	unsigned int hid;
+	unsigned int collection_index;
+	unsigned int usage_index;
+	__s8 resolution_multiplier;
+	__s8 wheel_factor;
+	__u16 code;
+	__u8 type;
+	__s8 hat_min;
+	__s8 hat_max;
+	__s8 hat_dir;
+	__s16 wheel_accumulated;
+};
+
+struct hid_input {
+	struct list_head list;
+	struct hid_report *report;
+	struct input_dev *input;
+	const char *name;
+	struct list_head reports;
+	unsigned int application;
+	bool registered;
+	u64 android_kabi_reserved1;
+};
+
+struct hid_field_entry {
+	struct list_head list;
+	struct hid_field *field;
+	unsigned int index;
+	__s32 priority;
+};
+
+struct hid_device_id;
+
+struct hid_report_id;
+
+struct hid_usage_id;
+
+struct hid_driver {
+	char *name;
+	const struct hid_device_id *id_table;
+	struct list_head dyn_list;
+	spinlock_t dyn_lock;
+	bool (*match)(struct hid_device *, bool);
+	int (*probe)(struct hid_device *, const struct hid_device_id *);
+	void (*remove)(struct hid_device *);
+	const struct hid_report_id *report_table;
+	int (*raw_event)(struct hid_device *, struct hid_report *, u8 *, int);
+	const struct hid_usage_id *usage_table;
+	int (*event)(struct hid_device *, struct hid_field *, struct hid_usage *, __s32);
+	void (*report)(struct hid_device *, struct hid_report *);
+	__u8 * (*report_fixup)(struct hid_device *, __u8 *, unsigned int *);
+	int (*input_mapping)(struct hid_device *, struct hid_input *, struct hid_field *, struct hid_usage *, unsigned long **, int *);
+	int (*input_mapped)(struct hid_device *, struct hid_input *, struct hid_field *, struct hid_usage *, unsigned long **, int *);
+	int (*input_configured)(struct hid_device *, struct hid_input *);
+	void (*feature_mapping)(struct hid_device *, struct hid_field *, struct hid_usage *);
+	int (*suspend)(struct hid_device *, pm_message_t);
+	int (*resume)(struct hid_device *);
+	int (*reset_resume)(struct hid_device *);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	struct device_driver driver;
+};
+
+struct hid_device_id {
+	__u16 bus;
+	__u16 group;
+	__u32 vendor;
+	__u32 product;
+	kernel_ulong_t driver_data;
+};
+
+struct hid_report_id {
+	__u32 report_type;
+};
+
+struct hid_usage_id {
+	__u32 usage_hid;
+	__u32 usage_type;
+	__u32 usage_code;
+};
+
+struct hid_bpf_prog_list {
+	u16 prog_idx[64];
+	u8 prog_cnt;
+};
+
+struct acc_hid_dev {
+	struct list_head list;
+	struct hid_device *hid;
+	struct acc_dev *dev;
+	int id;
+	u8 *report_desc;
+	int report_desc_len;
+	int report_desc_offset;
+};
+
+struct acc_instance {
+	struct usb_function_instance func_inst;
+	const char *name;
+};
+
+enum typec_data_role {
+	TYPEC_DEVICE = 0,
+	TYPEC_HOST = 1,
+};
+
+enum typec_role {
+	TYPEC_SINK = 0,
+	TYPEC_SOURCE = 1,
+};
+
+enum typec_pwr_opmode {
+	TYPEC_PWR_MODE_USB = 0,
+	TYPEC_PWR_MODE_1_5A = 1,
+	TYPEC_PWR_MODE_3_0A = 2,
+	TYPEC_PWR_MODE_PD = 3,
+};
+
+enum typec_port_type {
+	TYPEC_PORT_SRC = 0,
+	TYPEC_PORT_SNK = 1,
+	TYPEC_PORT_DRP = 2,
+};
+
+enum typec_orientation {
+	TYPEC_ORIENTATION_NONE = 0,
+	TYPEC_ORIENTATION_NORMAL = 1,
+	TYPEC_ORIENTATION_REVERSE = 2,
+};
+
+enum typec_port_data {
+	TYPEC_PORT_DFP = 0,
+	TYPEC_PORT_UFP = 1,
+	TYPEC_PORT_DRD = 2,
+};
+
+enum usb_pd_svdm_ver {
+	SVDM_VER_1_0 = 0,
+	SVDM_VER_2_0 = 1,
+	SVDM_VER_MAX = 1,
+};
+
+enum typec_accessory {
+	TYPEC_ACCESSORY_NONE = 0,
+	TYPEC_ACCESSORY_AUDIO = 1,
+	TYPEC_ACCESSORY_DEBUG = 2,
+};
+
+enum typec_plug_index {
+	TYPEC_PLUG_SOP_P = 0,
+	TYPEC_PLUG_SOP_PP = 1,
+};
+
+enum typec_plug_type {
+	USB_PLUG_NONE = 0,
+	USB_PLUG_TYPE_A = 1,
+	USB_PLUG_TYPE_B = 2,
+	USB_PLUG_TYPE_C = 3,
+	USB_PLUG_CAPTIVE = 4,
+};
+
+struct usb_power_delivery;
+
+struct typec_switch;
+
+struct typec_mux;
+
+struct typec_retimer;
+
+struct typec_capability;
+
+struct typec_operations;
+
+struct typec_port {
+	unsigned int id;
+	struct device dev;
+	struct ida mode_ids;
+	struct usb_power_delivery *pd;
+	int prefer_role;
+	enum typec_data_role data_role;
+	enum typec_role pwr_role;
+	enum typec_role vconn_role;
+	enum typec_pwr_opmode pwr_opmode;
+	enum typec_port_type port_type;
+	struct mutex port_type_lock;
+	enum typec_orientation orientation;
+	struct typec_switch *sw;
+	struct typec_mux *mux;
+	struct typec_retimer *retimer;
+	const struct typec_capability *cap;
+	const struct typec_operations *ops;
+	u64 android_kabi_reserved1;
+};
+
+struct usb_power_delivery {
+	struct device dev;
+	int id;
+	u16 revision;
+	u16 version;
+};
+
+struct typec_capability {
+	enum typec_port_type type;
+	enum typec_port_data data;
+	u16 revision;
+	u16 pd_revision;
+	enum usb_pd_svdm_ver svdm_version;
+	int prefer_role;
+	enum typec_accessory accessory[3];
+	unsigned int orientation_aware: 1;
+	struct fwnode_handle *fwnode;
+	void *driver_data;
+	struct usb_power_delivery *pd;
+	const struct typec_operations *ops;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct typec_operations {
+	int (*try_role)(struct typec_port *, int);
+	int (*dr_set)(struct typec_port *, enum typec_data_role);
+	int (*pr_set)(struct typec_port *, enum typec_role);
+	int (*vconn_set)(struct typec_port *, enum typec_role);
+	int (*port_type_set)(struct typec_port *, enum typec_port_type);
+	struct usb_power_delivery ** (*pd_get)(struct typec_port *);
+	int (*pd_set)(struct typec_port *, struct usb_power_delivery *);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct typec_altmode_ops;
+
+struct typec_altmode {
+	struct device dev;
+	u16 svid;
+	int mode;
+	u32 vdo;
+	unsigned int active: 1;
+	char *desc;
+	const struct typec_altmode_ops *ops;
+	u64 android_kabi_reserved1;
+};
+
+struct altmode {
+	unsigned int id;
+	struct typec_altmode adev;
+	struct typec_mux *mux;
+	struct typec_retimer *retimer;
+	enum typec_port_data roles;
+	struct attribute *attrs[5];
+	char group_name[8];
+	struct attribute_group group;
+	const struct attribute_group *groups[2];
+	struct altmode *partner;
+	struct altmode *plug[2];
+	u64 android_kabi_reserved1;
+};
+
+struct typec_altmode_ops {
+	int (*enter)(struct typec_altmode *, u32 *);
+	int (*exit)(struct typec_altmode *);
+	void (*attention)(struct typec_altmode *, u32);
+	int (*vdm)(struct typec_altmode *, const u32, const u32 *, int);
+	int (*notify)(struct typec_altmode *, unsigned long, void *);
+	int (*activate)(struct typec_altmode *, int);
+	u64 android_kabi_reserved1;
+};
+
+struct usb_pd_identity;
+
+struct typec_cable {
+	struct device dev;
+	enum typec_plug_type type;
+	struct usb_pd_identity *identity;
+	unsigned int active: 1;
+	u16 pd_revision;
+	u64 android_kabi_reserved1;
+};
+
+struct usb_pd_identity {
+	u32 id_header;
+	u32 cert_stat;
+	u32 product;
+	u32 vdo[3];
+};
+
+struct typec_partner {
+	struct device dev;
+	unsigned int usb_pd: 1;
+	struct usb_pd_identity *identity;
+	enum typec_accessory accessory;
+	struct ida mode_ids;
+	int num_altmodes;
+	u16 pd_revision;
+	enum usb_pd_svdm_ver svdm_version;
+	struct usb_power_delivery *pd;
+	u64 android_kabi_reserved1;
+};
+
+struct typec_plug {
+	struct device dev;
+	enum typec_plug_index index;
+	struct ida mode_ids;
+	int num_altmodes;
+	u64 android_kabi_reserved1;
+};
+
+struct typec_device_id {
+	__u16 svid;
+	__u8 mode;
+	kernel_ulong_t driver_data;
+};
+
+struct usb_power_delivery_desc {
+	u16 revision;
+	u16 version;
+};
+
+struct typec_mux_state {
+	struct typec_altmode *alt;
+	unsigned long mode;
+	void *data;
+};
+
+struct typec_altmode_desc {
+	u16 svid;
+	u8 mode;
+	u32 vdo;
+	enum typec_port_data roles;
+};
+
+struct typec_partner_desc {
+	unsigned int usb_pd: 1;
+	enum typec_accessory accessory;
+	struct usb_pd_identity *identity;
+	u16 pd_revision;
+};
+
+struct typec_plug_desc {
+	enum typec_plug_index index;
+};
+
+struct typec_cable_desc {
+	enum typec_plug_type type;
+	unsigned int active: 1;
+	struct usb_pd_identity *identity;
+	u16 pd_revision;
+};
+
+struct typec_switch_dev;
+
+typedef int (*typec_switch_set_fn_t)(struct typec_switch_dev *, enum typec_orientation);
+
+struct typec_switch_dev {
+	struct device dev;
+	typec_switch_set_fn_t set;
+	u64 android_kabi_reserved1;
+};
+
+struct typec_mux_dev;
+
+typedef int (*typec_mux_set_fn_t)(struct typec_mux_dev *, struct typec_mux_state *);
+
+struct typec_mux_dev {
+	struct device dev;
+	typec_mux_set_fn_t set;
+	u64 android_kabi_reserved1;
+};
+
+struct typec_switch {
+	struct typec_switch_dev *sw_devs[3];
+	unsigned int num_sw_devs;
+};
+
+struct typec_mux {
+	struct typec_mux_dev *mux_devs[3];
+	unsigned int num_mux_devs;
+};
+
+struct typec_switch_desc {
+	struct fwnode_handle *fwnode;
+	typec_switch_set_fn_t set;
+	const char *name;
+	void *drvdata;
+};
+
+struct typec_mux_desc {
+	struct fwnode_handle *fwnode;
+	typec_mux_set_fn_t set;
+	const char *name;
+	void *drvdata;
+};
+
+enum {
+	TYPEC_STATE_SAFE = 0,
+	TYPEC_STATE_USB = 1,
+	TYPEC_STATE_MODAL = 2,
+};
+
+struct typec_retimer_state;
+
+typedef int (*typec_retimer_set_fn_t)(struct typec_retimer *, struct typec_retimer_state *);
+
+struct typec_retimer {
+	struct device dev;
+	typec_retimer_set_fn_t set;
+};
+
+struct typec_retimer_state {
+	struct typec_altmode *alt;
+	unsigned long mode;
+	void *data;
+};
+
+struct typec_altmode_driver {
+	const struct typec_device_id *id_table;
+	int (*probe)(struct typec_altmode *);
+	void (*remove)(struct typec_altmode *);
+	struct device_driver driver;
+};
+
+enum pd_pdo_type {
+	PDO_TYPE_FIXED = 0,
+	PDO_TYPE_BATT = 1,
+	PDO_TYPE_VAR = 2,
+	PDO_TYPE_APDO = 3,
+};
+
+enum pd_apdo_type {
+	APDO_TYPE_PPS = 0,
+};
+
+struct usb_power_delivery_capabilities {
+	struct device dev;
+	struct usb_power_delivery *pd;
+	enum typec_role role;
+};
+
+struct pdo {
+	struct device dev;
+	int object_position;
+	u32 pdo;
+};
+
+struct usb_power_delivery_capabilities_desc {
+	u32 pdo[7];
+	enum typec_role role;
+};
+
+struct typec_retimer_desc {
+	struct fwnode_handle *fwnode;
+	typec_retimer_set_fn_t set;
+	const char *name;
+	void *drvdata;
+};
+
+struct each_port_arg {
+	struct typec_port *port;
+	struct component_match *match;
+};
+
+enum dp_state {
+	DP_STATE_IDLE = 0,
+	DP_STATE_ENTER = 1,
+	DP_STATE_UPDATE = 2,
+	DP_STATE_CONFIGURE = 3,
+	DP_STATE_EXIT = 4,
+};
+
+enum {
+	DP_PIN_ASSIGN_A = 0,
+	DP_PIN_ASSIGN_B = 1,
+	DP_PIN_ASSIGN_C = 2,
+	DP_PIN_ASSIGN_D = 3,
+	DP_PIN_ASSIGN_E = 4,
+	DP_PIN_ASSIGN_F = 5,
+};
+
+enum {
+	DP_CONF_USB = 0,
+	DP_CONF_DFP_D = 1,
+	DP_CONF_UFP_D = 2,
+	DP_CONF_DUAL_D = 3,
+};
+
+struct typec_displayport_data {
+	u32 status;
+	u32 conf;
+};
+
+struct dp_altmode {
+	struct typec_displayport_data data;
+	enum dp_state state;
+	bool hpd;
+	bool pending_hpd;
+	struct mutex lock;
+	struct work_struct work;
+	struct typec_altmode *alt;
+	const struct typec_altmode *port;
+	struct fwnode_handle *connector_fwnode;
+};
+
+enum typec_cc_status {
+	TYPEC_CC_OPEN = 0,
+	TYPEC_CC_RA = 1,
+	TYPEC_CC_RD = 2,
+	TYPEC_CC_RP_DEF = 3,
+	TYPEC_CC_RP_1_5 = 4,
+	TYPEC_CC_RP_3_0 = 5,
+};
+
+enum typec_cc_polarity {
+	TYPEC_POLARITY_CC1 = 0,
+	TYPEC_POLARITY_CC2 = 1,
+};
+
+enum tcpm_transmit_type {
+	TCPC_TX_SOP = 0,
+	TCPC_TX_SOP_PRIME = 1,
+	TCPC_TX_SOP_PRIME_PRIME = 2,
+	TCPC_TX_SOP_DEBUG_PRIME = 3,
+	TCPC_TX_SOP_DEBUG_PRIME_PRIME = 4,
+	TCPC_TX_HARD_RESET = 5,
+	TCPC_TX_CABLE_RESET = 6,
+	TCPC_TX_BIST_MODE_2 = 7,
+};
+
+enum pd_msg_request {
+	PD_MSG_NONE = 0,
+	PD_MSG_CTRL_REJECT = 1,
+	PD_MSG_CTRL_WAIT = 2,
+	PD_MSG_CTRL_NOT_SUPP = 3,
+	PD_MSG_DATA_SINK_CAP = 4,
+	PD_MSG_DATA_SOURCE_CAP = 5,
+};
+
+enum tcpm_state {
+	INVALID_STATE = 0,
+	TOGGLING = 1,
+	CHECK_CONTAMINANT = 2,
+	SRC_UNATTACHED = 3,
+	SRC_ATTACH_WAIT = 4,
+	SRC_ATTACHED = 5,
+	SRC_STARTUP = 6,
+	SRC_SEND_CAPABILITIES = 7,
+	SRC_SEND_CAPABILITIES_TIMEOUT = 8,
+	SRC_NEGOTIATE_CAPABILITIES = 9,
+	SRC_TRANSITION_SUPPLY = 10,
+	SRC_READY = 11,
+	SRC_WAIT_NEW_CAPABILITIES = 12,
+	SNK_UNATTACHED = 13,
+	SNK_ATTACH_WAIT = 14,
+	SNK_DEBOUNCED = 15,
+	SNK_ATTACHED = 16,
+	SNK_STARTUP = 17,
+	SNK_DISCOVERY = 18,
+	SNK_DISCOVERY_DEBOUNCE = 19,
+	SNK_DISCOVERY_DEBOUNCE_DONE = 20,
+	SNK_WAIT_CAPABILITIES = 21,
+	SNK_NEGOTIATE_CAPABILITIES = 22,
+	SNK_NEGOTIATE_PPS_CAPABILITIES = 23,
+	SNK_TRANSITION_SINK = 24,
+	SNK_TRANSITION_SINK_VBUS = 25,
+	SNK_READY = 26,
+	ACC_UNATTACHED = 27,
+	DEBUG_ACC_ATTACHED = 28,
+	AUDIO_ACC_ATTACHED = 29,
+	AUDIO_ACC_DEBOUNCE = 30,
+	HARD_RESET_SEND = 31,
+	HARD_RESET_START = 32,
+	SRC_HARD_RESET_VBUS_OFF = 33,
+	SRC_HARD_RESET_VBUS_ON = 34,
+	SNK_HARD_RESET_SINK_OFF = 35,
+	SNK_HARD_RESET_WAIT_VBUS = 36,
+	SNK_HARD_RESET_SINK_ON = 37,
+	SOFT_RESET = 38,
+	SRC_SOFT_RESET_WAIT_SNK_TX = 39,
+	SNK_SOFT_RESET = 40,
+	SOFT_RESET_SEND = 41,
+	DR_SWAP_ACCEPT = 42,
+	DR_SWAP_SEND = 43,
+	DR_SWAP_SEND_TIMEOUT = 44,
+	DR_SWAP_CANCEL = 45,
+	DR_SWAP_CHANGE_DR = 46,
+	PR_SWAP_ACCEPT = 47,
+	PR_SWAP_SEND = 48,
+	PR_SWAP_SEND_TIMEOUT = 49,
+	PR_SWAP_CANCEL = 50,
+	PR_SWAP_START = 51,
+	PR_SWAP_SRC_SNK_TRANSITION_OFF = 52,
+	PR_SWAP_SRC_SNK_SOURCE_OFF = 53,
+	PR_SWAP_SRC_SNK_SOURCE_OFF_CC_DEBOUNCED = 54,
+	PR_SWAP_SRC_SNK_SINK_ON = 55,
+	PR_SWAP_SNK_SRC_SINK_OFF = 56,
+	PR_SWAP_SNK_SRC_SOURCE_ON = 57,
+	PR_SWAP_SNK_SRC_SOURCE_ON_VBUS_RAMPED_UP = 58,
+	VCONN_SWAP_ACCEPT = 59,
+	VCONN_SWAP_SEND = 60,
+	VCONN_SWAP_SEND_TIMEOUT = 61,
+	VCONN_SWAP_CANCEL = 62,
+	VCONN_SWAP_START = 63,
+	VCONN_SWAP_WAIT_FOR_VCONN = 64,
+	VCONN_SWAP_TURN_ON_VCONN = 65,
+	VCONN_SWAP_TURN_OFF_VCONN = 66,
+	FR_SWAP_SEND = 67,
+	FR_SWAP_SEND_TIMEOUT = 68,
+	FR_SWAP_SNK_SRC_TRANSITION_TO_OFF = 69,
+	FR_SWAP_SNK_SRC_NEW_SINK_READY = 70,
+	FR_SWAP_SNK_SRC_SOURCE_VBUS_APPLIED = 71,
+	FR_SWAP_CANCEL = 72,
+	SNK_TRY = 73,
+	SNK_TRY_WAIT = 74,
+	SNK_TRY_WAIT_DEBOUNCE = 75,
+	SNK_TRY_WAIT_DEBOUNCE_CHECK_VBUS = 76,
+	SRC_TRYWAIT = 77,
+	SRC_TRYWAIT_DEBOUNCE = 78,
+	SRC_TRYWAIT_UNATTACHED = 79,
+	SRC_TRY = 80,
+	SRC_TRY_WAIT = 81,
+	SRC_TRY_DEBOUNCE = 82,
+	SNK_TRYWAIT = 83,
+	SNK_TRYWAIT_DEBOUNCE = 84,
+	SNK_TRYWAIT_VBUS = 85,
+	BIST_RX = 86,
+	GET_STATUS_SEND = 87,
+	GET_STATUS_SEND_TIMEOUT = 88,
+	GET_PPS_STATUS_SEND = 89,
+	GET_PPS_STATUS_SEND_TIMEOUT = 90,
+	GET_SINK_CAP = 91,
+	GET_SINK_CAP_TIMEOUT = 92,
+	ERROR_RECOVERY = 93,
+	PORT_RESET = 94,
+	PORT_RESET_WAIT_OFF = 95,
+	AMS_START = 96,
+	CHUNK_NOT_SUPP = 97,
+};
+
+enum tcpm_transmit_status {
+	TCPC_TX_SUCCESS = 0,
+	TCPC_TX_DISCARDED = 1,
+	TCPC_TX_FAILED = 2,
+};
+
+enum vdm_states {
+	VDM_STATE_ERR_BUSY = -3,
+	VDM_STATE_ERR_SEND = -2,
+	VDM_STATE_ERR_TMOUT = -1,
+	VDM_STATE_DONE = 0,
+	VDM_STATE_READY = 1,
+	VDM_STATE_BUSY = 2,
+	VDM_STATE_WAIT_RSP_BUSY = 3,
+	VDM_STATE_SEND_MESSAGE = 4,
+};
+
+enum frs_typec_current {
+	FRS_NOT_SUPPORTED = 0,
+	FRS_DEFAULT_POWER = 1,
+	FRS_5V_1P5A = 2,
+	FRS_5V_3A = 3,
+};
+
+enum tcpm_ams {
+	NONE_AMS = 0,
+	POWER_NEGOTIATION = 1,
+	GOTOMIN = 2,
+	SOFT_RESET_AMS = 3,
+	HARD_RESET = 4,
+	CABLE_RESET = 5,
+	GET_SOURCE_CAPABILITIES = 6,
+	GET_SINK_CAPABILITIES = 7,
+	POWER_ROLE_SWAP = 8,
+	FAST_ROLE_SWAP = 9,
+	DATA_ROLE_SWAP = 10,
+	VCONN_SWAP = 11,
+	SOURCE_ALERT = 12,
+	GETTING_SOURCE_EXTENDED_CAPABILITIES = 13,
+	GETTING_SOURCE_SINK_STATUS = 14,
+	GETTING_BATTERY_CAPABILITIES = 15,
+	GETTING_BATTERY_STATUS = 16,
+	GETTING_MANUFACTURER_INFORMATION = 17,
+	SECURITY = 18,
+	FIRMWARE_UPDATE = 19,
+	DISCOVER_IDENTITY = 20,
+	SOURCE_STARTUP_CABLE_PLUG_DISCOVER_IDENTITY = 21,
+	DISCOVER_SVIDS = 22,
+	DISCOVER_MODES = 23,
+	DFP_TO_UFP_ENTER_MODE = 24,
+	DFP_TO_UFP_EXIT_MODE = 25,
+	DFP_TO_CABLE_PLUG_ENTER_MODE = 26,
+	DFP_TO_CABLE_PLUG_EXIT_MODE = 27,
+	ATTENTION = 28,
+	BIST = 29,
+	UNSTRUCTURED_VDMS = 30,
+	STRUCTURED_VDMS = 31,
+	COUNTRY_INFO = 32,
+	COUNTRY_CODES = 33,
+};
+
+enum pd_ctrl_msg_type {
+	PD_CTRL_GOOD_CRC = 1,
+	PD_CTRL_GOTO_MIN = 2,
+	PD_CTRL_ACCEPT = 3,
+	PD_CTRL_REJECT = 4,
+	PD_CTRL_PING = 5,
+	PD_CTRL_PS_RDY = 6,
+	PD_CTRL_GET_SOURCE_CAP = 7,
+	PD_CTRL_GET_SINK_CAP = 8,
+	PD_CTRL_DR_SWAP = 9,
+	PD_CTRL_PR_SWAP = 10,
+	PD_CTRL_VCONN_SWAP = 11,
+	PD_CTRL_WAIT = 12,
+	PD_CTRL_SOFT_RESET = 13,
+	PD_CTRL_NOT_SUPP = 16,
+	PD_CTRL_GET_SOURCE_CAP_EXT = 17,
+	PD_CTRL_GET_STATUS = 18,
+	PD_CTRL_FR_SWAP = 19,
+	PD_CTRL_GET_PPS_STATUS = 20,
+	PD_CTRL_GET_COUNTRY_CODES = 21,
+};
+
+enum pd_ext_msg_type {
+	PD_EXT_SOURCE_CAP_EXT = 1,
+	PD_EXT_STATUS = 2,
+	PD_EXT_GET_BATT_CAP = 3,
+	PD_EXT_GET_BATT_STATUS = 4,
+	PD_EXT_BATT_CAP = 5,
+	PD_EXT_GET_MANUFACTURER_INFO = 6,
+	PD_EXT_MANUFACTURER_INFO = 7,
+	PD_EXT_SECURITY_REQUEST = 8,
+	PD_EXT_SECURITY_RESPONSE = 9,
+	PD_EXT_FW_UPDATE_REQUEST = 10,
+	PD_EXT_FW_UPDATE_RESPONSE = 11,
+	PD_EXT_PPS_STATUS = 12,
+	PD_EXT_COUNTRY_INFO = 13,
+	PD_EXT_COUNTRY_CODES = 14,
+};
+
+enum pd_data_msg_type {
+	PD_DATA_SOURCE_CAP = 1,
+	PD_DATA_REQUEST = 2,
+	PD_DATA_BIST = 3,
+	PD_DATA_SINK_CAP = 4,
+	PD_DATA_BATT_STATUS = 5,
+	PD_DATA_ALERT = 6,
+	PD_DATA_GET_COUNTRY_INFO = 7,
+	PD_DATA_ENTER_USB = 8,
+	PD_DATA_VENDOR_DEF = 15,
+};
+
+enum pdo_err {
+	PDO_NO_ERR = 0,
+	PDO_ERR_NO_VSAFE5V = 1,
+	PDO_ERR_VSAFE5V_NOT_FIRST = 2,
+	PDO_ERR_PDO_TYPE_NOT_IN_ORDER = 3,
+	PDO_ERR_FIXED_NOT_SORTED = 4,
+	PDO_ERR_VARIABLE_BATT_NOT_SORTED = 5,
+	PDO_ERR_DUPE_PDO = 6,
+	PDO_ERR_PPS_APDO_NOT_SORTED = 7,
+	PDO_ERR_DUPE_PPS_APDO = 8,
+};
+
+enum adev_actions {
+	ADEV_NONE = 0,
+	ADEV_NOTIFY_USB_AND_QUEUE_VDM = 1,
+	ADEV_QUEUE_VDM = 2,
+	ADEV_QUEUE_VDM_SEND_EXIT_MODE_ON_FAIL = 3,
+	ADEV_ATTENTION = 4,
+};
+
+enum tcpm_psy_online_states {
+	TCPM_PSY_OFFLINE = 0,
+	TCPM_PSY_FIXED_ONLINE = 1,
+	TCPM_PSY_PROG_ONLINE = 2,
+};
+
+struct pd_chunked_ext_message_data {
+	__le16 header;
+	u8 data[26];
+};
+
+struct pd_message {
+	__le16 header;
+	union {
+		__le32 payload[7];
+		struct pd_chunked_ext_message_data ext_msg;
+	};
+} __attribute__((packed));
+
+struct tcpm_port;
+
+struct pd_rx_event {
+	struct kthread_work work;
+	struct tcpm_port *port;
+	struct pd_message msg;
+};
+
+struct pd_pps_data {
+	u32 min_volt;
+	u32 req_min_volt;
+	u32 max_volt;
+	u32 req_max_volt;
+	u32 max_curr;
+	u32 req_max_curr;
+	u32 req_out_volt;
+	u32 req_op_curr;
+	bool supported;
+	bool active;
+};
+
+struct pd_mode_data {
+	int svid_index;
+	int nsvids;
+	u16 svids[16];
+	int altmodes;
+	struct typec_altmode_desc altmode_desc[96];
+};
+
+struct tcpc_dev;
+
+struct pd_data;
+
+struct tcpm_port {
+	struct device *dev;
+	struct mutex lock;
+	struct kthread_worker *wq;
+	struct typec_capability typec_caps;
+	struct typec_port *typec_port;
+	struct tcpc_dev *tcpc;
+	struct usb_role_switch *role_sw;
+	enum typec_role vconn_role;
+	enum typec_role pwr_role;
+	enum typec_data_role data_role;
+	enum typec_pwr_opmode pwr_opmode;
+	struct usb_pd_identity partner_ident;
+	struct typec_partner_desc partner_desc;
+	struct typec_partner *partner;
+	enum typec_cc_status cc_req;
+	enum typec_cc_status src_rp;
+	enum typec_cc_status cc1;
+	enum typec_cc_status cc2;
+	enum typec_cc_polarity polarity;
+	bool attached;
+	bool connected;
+	bool registered;
+	bool pd_supported;
+	enum typec_port_type port_type;
+	bool vbus_present;
+	bool vbus_vsafe0v;
+	bool vbus_never_low;
+	bool vbus_source;
+	bool vbus_charge;
+	bool send_discover;
+	bool op_vsafe5v;
+	int try_role;
+	int try_snk_count;
+	int try_src_count;
+	enum pd_msg_request queued_message;
+	enum tcpm_state enter_state;
+	enum tcpm_state prev_state;
+	enum tcpm_state state;
+	enum tcpm_state delayed_state;
+	ktime_t delayed_runtime;
+	unsigned long delay_ms;
+	spinlock_t pd_event_lock;
+	u32 pd_events;
+	struct kthread_work event_work;
+	struct hrtimer state_machine_timer;
+	struct kthread_work state_machine;
+	struct hrtimer vdm_state_machine_timer;
+	struct kthread_work vdm_state_machine;
+	struct hrtimer enable_frs_timer;
+	struct kthread_work enable_frs;
+	struct hrtimer send_discover_timer;
+	struct kthread_work send_discover_work;
+	bool state_machine_running;
+	bool vdm_sm_running;
+	struct completion tx_complete;
+	enum tcpm_transmit_status tx_status;
+	struct mutex swap_lock;
+	bool swap_pending;
+	bool non_pd_role_swap;
+	struct completion swap_complete;
+	int swap_status;
+	unsigned int negotiated_rev;
+	unsigned int message_id;
+	unsigned int caps_count;
+	unsigned int hard_reset_count;
+	bool pd_capable;
+	bool explicit_contract;
+	unsigned int rx_msgid;
+	struct usb_power_delivery **pds;
+	struct pd_data **pd_list;
+	struct usb_power_delivery_capabilities *port_source_caps;
+	struct usb_power_delivery_capabilities *port_sink_caps;
+	struct usb_power_delivery *partner_pd;
+	struct usb_power_delivery_capabilities *partner_source_caps;
+	struct usb_power_delivery_capabilities *partner_sink_caps;
+	struct usb_power_delivery *selected_pd;
+	u32 sink_request;
+	u32 source_caps[7];
+	unsigned int nr_source_caps;
+	u32 sink_caps[7];
+	unsigned int nr_sink_caps;
+	unsigned int pd_count;
+	u32 src_pdo[7];
+	unsigned int nr_src_pdo;
+	u32 snk_pdo[7];
+	unsigned int nr_snk_pdo;
+	u32 snk_vdo_v1[6];
+	unsigned int nr_snk_vdo_v1;
+	u32 snk_vdo[6];
+	unsigned int nr_snk_vdo;
+	unsigned int operating_snk_mw;
+	bool update_sink_caps;
+	u32 req_current_limit;
+	u32 req_supply_voltage;
+	u32 current_limit;
+	u32 supply_voltage;
+	struct power_supply *psy;
+	struct power_supply_desc psy_desc;
+	enum power_supply_usb_type usb_type;
+	u32 bist_request;
+	enum vdm_states vdm_state;
+	u32 vdm_retries;
+	u32 vdo_data[7];
+	u8 vdo_count;
+	u32 vdo_retry;
+	struct pd_pps_data pps_data;
+	struct completion pps_complete;
+	bool pps_pending;
+	int pps_status;
+	struct pd_mode_data mode_data;
+	struct typec_altmode *partner_altmode[96];
+	struct typec_altmode *port_altmode[96];
+	unsigned long max_wait;
+	bool self_powered;
+	enum frs_typec_current new_source_frs_current;
+	bool sink_cap_done;
+	enum tcpm_state upcoming_state;
+	enum tcpm_ams ams;
+	enum tcpm_ams next_ams;
+	bool in_ams;
+	bool auto_vbus_discharge_enabled;
+	bool slow_charger_loop;
+	bool potential_contaminant;
+	struct dentry *dentry;
+	struct mutex logbuffer_lock;
+	int logbuffer_head;
+	int logbuffer_tail;
+	u8 *logbuffer[1024];
+};
+
+struct tcpc_dev {
+	struct fwnode_handle *fwnode;
+	int (*init)(struct tcpc_dev *);
+	int (*get_vbus)(struct tcpc_dev *);
+	int (*get_current_limit)(struct tcpc_dev *);
+	int (*set_cc)(struct tcpc_dev *, enum typec_cc_status);
+	int (*apply_rc)(struct tcpc_dev *, enum typec_cc_status, enum typec_cc_polarity);
+	int (*get_cc)(struct tcpc_dev *, enum typec_cc_status *, enum typec_cc_status *);
+	int (*set_polarity)(struct tcpc_dev *, enum typec_cc_polarity);
+	int (*set_vconn)(struct tcpc_dev *, bool);
+	int (*set_vbus)(struct tcpc_dev *, bool, bool);
+	int (*set_current_limit)(struct tcpc_dev *, u32, u32);
+	int (*set_pd_rx)(struct tcpc_dev *, bool);
+	int (*set_roles)(struct tcpc_dev *, bool, enum typec_role, enum typec_data_role);
+	int (*start_toggling)(struct tcpc_dev *, enum typec_port_type, enum typec_cc_status);
+	int (*try_role)(struct tcpc_dev *, int);
+	int (*pd_transmit)(struct tcpc_dev *, enum tcpm_transmit_type, const struct pd_message *, unsigned int);
+	int (*set_bist_data)(struct tcpc_dev *, bool);
+	int (*enable_frs)(struct tcpc_dev *, bool);
+	void (*frs_sourcing_vbus)(struct tcpc_dev *);
+	int (*enable_auto_vbus_discharge)(struct tcpc_dev *, bool);
+	int (*set_auto_vbus_discharge_threshold)(struct tcpc_dev *, enum typec_pwr_opmode, bool, u32);
+	bool (*is_vbus_vsafe0v)(struct tcpc_dev *);
+	void (*set_partner_usb_comm_capable)(struct tcpc_dev *, bool);
+	void (*check_contaminant)(struct tcpc_dev *);
+};
+
+struct pd_data {
+	struct usb_power_delivery *pd;
+	struct usb_power_delivery_capabilities *source_cap;
+	struct usb_power_delivery_capabilities_desc source_desc;
+	struct usb_power_delivery_capabilities *sink_cap;
+	struct usb_power_delivery_capabilities_desc sink_desc;
+	unsigned int operating_snk_mw;
+};
+
+struct power_supply_config {
+	struct device_node *of_node;
+	struct fwnode_handle *fwnode;
+	void *drv_data;
+	const struct attribute_group **attr_grp;
+	char **supplied_to;
+	size_t num_supplicants;
+	u64 android_kabi_reserved1;
+};
+
+struct tcpci_data;
+
+struct tcpci {
+	struct device *dev;
+	struct tcpm_port *port;
+	struct regmap *regmap;
+	unsigned int alert_mask;
+	bool controls_vbus;
+	struct tcpc_dev tcpc;
+	struct tcpci_data *data;
+};
+
+struct tcpci_data {
+	struct regmap *regmap;
+	unsigned char TX_BUF_BYTE_x_hidden: 1;
+	unsigned char auto_discharge_disconnect: 1;
+	unsigned char vbus_vsafe0v: 1;
+	int (*init)(struct tcpci *, struct tcpci_data *);
+	int (*set_vconn)(struct tcpci *, struct tcpci_data *, bool);
+	int (*start_drp_toggling)(struct tcpci *, struct tcpci_data *, enum typec_cc_status);
+	int (*set_vbus)(struct tcpci *, struct tcpci_data *, bool, bool);
+	void (*frs_sourcing_vbus)(struct tcpci *, struct tcpci_data *);
+	void (*set_partner_usb_comm_capable)(struct tcpci *, struct tcpci_data *, bool);
+	void (*check_contaminant)(struct tcpci *, struct tcpci_data *);
+};
+
+struct tcpci_chip {
+	struct tcpci *tcpci;
+	struct tcpci_data data;
+};
+
+enum {
+	TYPEC_MODE_USB2 = 2,
+	TYPEC_MODE_USB3 = 3,
+	TYPEC_MODE_USB4 = 4,
+	TYPEC_MODE_AUDIO = 5,
+	TYPEC_MODE_DEBUG = 6,
+};
+
+struct ucsi_connector;
+
+struct ucsi_work {
+	struct delayed_work work;
+	struct list_head node;
+	unsigned long delay;
+	unsigned int count;
+	struct ucsi_connector *con;
+	int (*cb)(struct ucsi_connector *);
+};
+
+struct ucsi_connector_status {
+	u16 change;
+	u16 flags;
+	u32 request_data_obj;
+	u8 pwr_status;
+} __attribute__((packed));
+
+struct ucsi_connector_capability {
+	u8 op_mode;
+	u8 flags;
+};
+
+struct ucsi;
+
+struct ucsi_connector {
+	int num;
+	struct ucsi *ucsi;
+	struct mutex lock;
+	struct work_struct work;
+	struct completion complete;
+	struct workqueue_struct *wq;
+	struct list_head partner_tasks;
+	struct typec_port *port;
+	struct typec_partner *partner;
+	struct typec_altmode *port_altmode[30];
+	struct typec_altmode *partner_altmode[30];
+	struct typec_capability typec_cap;
+	struct ucsi_connector_status status;
+	struct ucsi_connector_capability cap;
+	struct power_supply *psy;
+	struct power_supply_desc psy_desc;
+	u32 rdo;
+	u32 src_pdos[7];
+	int num_pdos;
+	struct usb_power_delivery *pd;
+	struct usb_power_delivery_capabilities *port_source_caps;
+	struct usb_power_delivery_capabilities *port_sink_caps;
+	struct usb_power_delivery *partner_pd;
+	struct usb_power_delivery_capabilities *partner_source_caps;
+	struct usb_power_delivery_capabilities *partner_sink_caps;
+	struct usb_role_switch *usb_role_sw;
+};
+
+struct driver_data;
+
+struct ucsi_capability {
+	u32 attributes;
+	u8 num_connectors;
+	u8 features;
+	u16 reserved_1;
+	u8 num_alt_modes;
+	u8 reserved_2;
+	u16 bc_version;
+	u16 pd_version;
+	u16 typec_version;
+};
+
+struct ucsi_operations;
+
+struct ucsi_debugfs_entry;
+
+struct ucsi {
+	u16 version;
+	struct device *dev;
+	struct driver_data *driver_data;
+	const struct ucsi_operations *ops;
+	struct ucsi_capability cap;
+	struct ucsi_connector *connector;
+	struct ucsi_debugfs_entry *debugfs;
+	struct work_struct resume_work;
+	struct delayed_work work;
+	int work_count;
+	struct mutex ppm_lock;
+	u64 ntfy;
+	unsigned long flags;
+};
+
+struct ucsi_altmode;
+
+struct ucsi_operations {
+	int (*read)(struct ucsi *, unsigned int, void *, size_t);
+	int (*sync_write)(struct ucsi *, unsigned int, const void *, size_t);
+	int (*async_write)(struct ucsi *, unsigned int, const void *, size_t);
+	bool (*update_altmodes)(struct ucsi *, struct ucsi_altmode *, struct ucsi_altmode *);
+};
+
+struct ucsi_altmode {
+	u16 svid;
+	u32 mid;
+} __attribute__((packed));
+
+struct ucsi_data {
+	u64 low;
+	u64 high;
+};
+
+struct ucsi_debugfs_entry {
+	u64 command;
+	struct ucsi_data response;
+	u32 status;
+	struct dentry *dentry;
+};
+
+typedef void (*btf_trace_ucsi_run_command)(void *, u64, int);
+
+typedef void (*btf_trace_ucsi_reset_ppm)(void *, u64, int);
+
+typedef void (*btf_trace_ucsi_connector_change)(void *, int, struct ucsi_connector_status *);
+
+typedef void (*btf_trace_ucsi_register_port)(void *, int, struct ucsi_connector_status *);
+
+typedef void (*btf_trace_ucsi_register_altmode)(void *, u8, struct typec_altmode *);
+
+struct trace_event_raw_ucsi_log_command {
+	struct trace_entry ent;
+	u64 ctrl;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_ucsi_log_connector_status {
+	struct trace_entry ent;
+	int port;
+	u16 change;
+	u8 opmode;
+	u8 connected;
+	u8 pwr_dir;
+	u8 partner_flags;
+	u8 partner_type;
+	u32 request_data_obj;
+	u8 bc_status;
+	char __data[0];
+};
+
+struct trace_event_raw_ucsi_log_register_altmode {
+	struct trace_entry ent;
+	u8 recipient;
+	u16 svid;
+	u8 mode;
+	u32 vdo;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_ucsi_log_command {};
+
+struct trace_event_data_offsets_ucsi_log_connector_status {};
+
+struct trace_event_data_offsets_ucsi_log_register_altmode {};
+
+enum ucsi_psy_online_states {
+	UCSI_PSY_OFFLINE = 0,
+	UCSI_PSY_FIXED_ONLINE = 1,
+	UCSI_PSY_PROG_ONLINE = 2,
+};
+
+enum {
+	POWER_SUPPLY_SCOPE_UNKNOWN = 0,
+	POWER_SUPPLY_SCOPE_SYSTEM = 1,
+	POWER_SUPPLY_SCOPE_DEVICE = 2,
+};
+
+struct ucsi_dp {
+	struct typec_displayport_data data;
+	struct ucsi_connector *con;
+	struct typec_altmode *alt;
+	struct work_struct work;
+	int offset;
+	bool override;
+	bool initialized;
+	u32 header;
+	u32 *vdo_data;
+	u8 vdo_size;
+};
+
+struct usb_role_switch {
+	struct device dev;
+	struct mutex lock;
+	struct module *module;
+	enum usb_role role;
+	bool registered;
+	struct device *usb2_port;
+	struct device *usb3_port;
+	struct device *udc;
+	usb_role_switch_set_t set;
+	usb_role_switch_get_t get;
+	bool allow_userspace_control;
+};
+
+enum serio_event_type {
+	SERIO_RESCAN_PORT = 0,
+	SERIO_RECONNECT_PORT = 1,
+	SERIO_RECONNECT_SUBTREE = 2,
+	SERIO_REGISTER_PORT = 3,
+	SERIO_ATTACH_DRIVER = 4,
+};
+
+struct serio_device_id {
+	__u8 type;
+	__u8 extra;
+	__u8 id;
+	__u8 proto;
+};
+
+struct serio_driver;
+
+struct serio {
+	void *port_data;
+	char name[32];
+	char phys[32];
+	char firmware_id[128];
+	bool manual_bind;
+	struct serio_device_id id;
+	spinlock_t lock;
+	int (*write)(struct serio *, unsigned char);
+	int (*open)(struct serio *);
+	void (*close)(struct serio *);
+	int (*start)(struct serio *);
+	void (*stop)(struct serio *);
+	struct serio *parent;
+	struct list_head child_node;
+	struct list_head children;
+	unsigned int depth;
+	struct serio_driver *drv;
+	struct mutex drv_mutex;
+	struct device dev;
+	struct list_head node;
+	struct mutex *ps2_cmd_mutex;
+	u64 android_kabi_reserved1;
+};
+
+struct serio_driver {
+	const char *description;
+	const struct serio_device_id *id_table;
+	bool manual_bind;
+	void (*write_wakeup)(struct serio *);
+	irqreturn_t (*interrupt)(struct serio *, unsigned char, unsigned int);
+	int (*connect)(struct serio *, struct serio_driver *);
+	int (*reconnect)(struct serio *);
+	int (*fast_reconnect)(struct serio *);
+	void (*disconnect)(struct serio *);
+	void (*cleanup)(struct serio *);
+	struct device_driver driver;
+	u64 android_kabi_reserved1;
+};
+
+struct serio_event {
+	enum serio_event_type type;
+	void *object;
+	struct module *owner;
+	struct list_head node;
+};
+
+enum i8042_controller_reset_mode {
+	I8042_RESET_NEVER = 0,
+	I8042_RESET_ALWAYS = 1,
+	I8042_RESET_ON_S2RAM = 2,
+};
+
+struct i8042_port {
+	struct serio *serio;
+	int irq;
+	bool exists;
+	bool driver_bound;
+	signed char mux;
+};
+
+struct serport___2 {
+	struct tty_struct *tty;
+	wait_queue_head_t wait;
+	struct serio *serio;
+	struct serio_device_id id;
+	spinlock_t lock;
+	unsigned long flags;
+};
+
+enum ps2_disposition {
+	PS2_PROCESS = 0,
+	PS2_IGNORE = 1,
+	PS2_ERROR = 2,
+};
+
+struct ps2dev;
+
+typedef enum ps2_disposition (*ps2_pre_receive_handler_t)(struct ps2dev *, u8, unsigned int);
+
+typedef void (*ps2_receive_handler_t)(struct ps2dev *, u8);
+
+struct ps2dev {
+	struct serio *serio;
+	struct mutex cmd_mutex;
+	wait_queue_head_t wait;
+	unsigned long flags;
+	u8 cmdbuf[8];
+	u8 cmdcnt;
+	u8 nak;
+	ps2_pre_receive_handler_t pre_receive_handler;
+	ps2_receive_handler_t receive_handler;
+};
+
+enum input_clock_type {
+	INPUT_CLK_REAL = 0,
+	INPUT_CLK_MONO = 1,
+	INPUT_CLK_BOOT = 2,
+	INPUT_CLK_MAX = 3,
+};
+
+struct input_mt_slot {
+	int abs[14];
+	unsigned int frame;
+	unsigned int key;
+};
+
+struct input_mt {
+	int trkid;
+	int num_slots;
+	int slot;
+	unsigned int flags;
+	unsigned int frame;
+	int *red;
+	struct input_mt_slot slots[0];
+};
+
+union input_seq_state {
+	struct {
+		unsigned short pos;
+		bool mutex_acquired;
+	};
+	void *p;
+};
+
+struct input_devres {
+	struct input_dev *input;
+};
+
+struct ff_periodic_effect_compat {
+	__u16 waveform;
+	__u16 period;
+	__s16 magnitude;
+	__s16 offset;
+	__u16 phase;
+	struct ff_envelope envelope;
+	__u32 custom_len;
+	compat_uptr_t custom_data;
+};
+
+struct ff_effect_compat {
+	__u16 type;
+	__s16 id;
+	__u16 direction;
+	struct ff_trigger trigger;
+	struct ff_replay replay;
+	union {
+		struct ff_constant_effect constant;
+		struct ff_ramp_effect ramp;
+		struct ff_periodic_effect_compat periodic;
+		struct ff_condition_effect condition[2];
+		struct ff_rumble_effect rumble;
+	} u;
+};
+
+struct input_event_compat {
+	compat_ulong_t sec;
+	compat_ulong_t usec;
+	__u16 type;
+	__u16 code;
+	__s32 value;
+};
+
+struct input_event {
+	__kernel_ulong_t __sec;
+	__kernel_ulong_t __usec;
+	__u16 type;
+	__u16 code;
+	__s32 value;
+};
+
+struct input_mt_pos {
+	s16 x;
+	s16 y;
+};
+
+struct input_dev_poller {
+	void (*poll)(struct input_dev *);
+	unsigned int poll_interval;
+	unsigned int poll_interval_max;
+	unsigned int poll_interval_min;
+	struct input_dev *input;
+	struct delayed_work work;
+};
+
+struct touchscreen_properties {
+	unsigned int max_x;
+	unsigned int max_y;
+	bool invert_x;
+	bool invert_y;
+	bool swap_x_y;
+};
+
+struct ml_effect_state {
+	struct ff_effect *effect;
+	unsigned long flags;
+	int count;
+	unsigned long play_at;
+	unsigned long stop_at;
+	unsigned long adj_at;
+};
+
+struct ml_device {
+	void *private;
+	struct ml_effect_state states[16];
+	int gain;
+	struct timer_list timer;
+	struct input_dev *dev;
+	int (*play_effect)(struct input_dev *, void *, struct ff_effect *);
+};
+
+struct vivaldi_data {
+	u32 function_row_physmap[24];
+	unsigned int num_function_row_keys;
+};
+
+struct input_led {
+	struct led_classdev cdev;
+	struct input_handle *handle;
+	unsigned int code;
+};
+
+struct input_leds {
+	struct input_handle handle;
+	unsigned int num_leds;
+	struct input_led leds[0];
+};
+
+struct evdev;
+
+struct evdev_client {
+	unsigned int head;
+	unsigned int tail;
+	unsigned int packet_head;
+	spinlock_t buffer_lock;
+	wait_queue_head_t wait;
+	struct fasync_struct *fasync;
+	struct evdev *evdev;
+	struct list_head node;
+	enum input_clock_type clk_type;
+	bool revoked;
+	unsigned long *evmasks[32];
+	unsigned int bufsize;
+	struct input_event buffer[0];
+};
+
+struct evdev {
+	int open;
+	struct input_handle handle;
+	struct evdev_client __attribute__((btf_type_tag("rcu"))) *grab;
+	struct list_head client_list;
+	spinlock_t client_lock;
+	struct mutex mutex;
+	struct device dev;
+	struct cdev cdev;
+	bool exist;
+};
+
+struct input_mask {
+	__u32 type;
+	__u32 codes_size;
+	__u64 codes_ptr;
+};
+
+struct atkbd {
+	struct ps2dev ps2dev;
+	struct input_dev *dev;
+	char name[64];
+	char phys[32];
+	unsigned short id;
+	unsigned short keycode[512];
+	unsigned long force_release_mask[8];
+	unsigned char set;
+	bool translated;
+	bool extra;
+	bool write;
+	bool softrepeat;
+	bool softraw;
+	bool scroll;
+	bool enabled;
+	unsigned char emul;
+	bool resend;
+	bool release;
+	unsigned long xl_bit;
+	unsigned int last;
+	unsigned long time;
+	unsigned long err_count;
+	struct delayed_work event_work;
+	unsigned long event_jiffies;
+	unsigned long event_mask;
+	struct mutex mutex;
+	struct vivaldi_data vdata;
+};
+
+struct gpio_keys_button {
+	unsigned int code;
+	int gpio;
+	int active_low;
+	const char *desc;
+	unsigned int type;
+	int wakeup;
+	int wakeup_event_action;
+	int debounce_interval;
+	bool can_disable;
+	int value;
+	unsigned int irq;
+};
+
+struct gpio_button_data {
+	const struct gpio_keys_button *button;
+	struct input_dev *input;
+	struct gpio_desc *gpiod;
+	unsigned short *code;
+	struct hrtimer release_timer;
+	unsigned int release_delay;
+	struct delayed_work work;
+	struct hrtimer debounce_timer;
+	unsigned int software_debounce;
+	unsigned int irq;
+	unsigned int wakeup_trigger_type;
+	spinlock_t lock;
+	bool disabled;
+	bool key_pressed;
+	bool suspended;
+	bool debounce_use_hrtimer;
+};
+
+struct gpio_keys_platform_data;
+
+struct gpio_keys_drvdata {
+	const struct gpio_keys_platform_data *pdata;
+	struct input_dev *input;
+	struct mutex disable_lock;
+	unsigned short *keymap;
+	struct gpio_button_data data[0];
+};
+
+struct gpio_keys_platform_data {
+	const struct gpio_keys_button *buttons;
+	int nbuttons;
+	unsigned int poll_interval;
+	unsigned int rep: 1;
+	int (*enable)(struct device *);
+	void (*disable)(struct device *);
+	const char *name;
+};
+
+struct xpad_device {
+	u16 idVendor;
+	u16 idProduct;
+	char *name;
+	u8 mapping;
+	u8 xtype;
+};
+
+struct xboxone_init_packet {
+	u16 idVendor;
+	u16 idProduct;
+	const u8 *data;
+	u8 len;
+};
+
+struct xpad_output_packet {
+	u8 data[64];
+	u8 len;
+	bool pending;
+};
+
+struct usb_xpad {
+	struct input_dev *dev;
+	struct input_dev __attribute__((btf_type_tag("rcu"))) *x360w_dev;
+	struct usb_device *udev;
+	struct usb_interface *intf;
+	bool pad_present;
+	bool input_created;
+	struct urb *irq_in;
+	unsigned char *idata;
+	dma_addr_t idata_dma;
+	struct urb *irq_out;
+	struct usb_anchor irq_out_anchor;
+	bool irq_out_active;
+	u8 odata_serial;
+	unsigned char *odata;
+	dma_addr_t odata_dma;
+	spinlock_t odata_lock;
+	struct xpad_output_packet out_packets[1];
+	int last_out_packet;
+	int init_seq;
+	char phys[64];
+	int mapping;
+	int xtype;
+	int packet_type;
+	int pad_nr;
+	const char *name;
+	struct work_struct work;
+	time64_t mode_btn_down_ts;
+};
+
+enum uinput_state {
+	UIST_NEW_DEVICE = 0,
+	UIST_SETUP_COMPLETE = 1,
+	UIST_CREATED = 2,
+};
+
+struct uinput_request;
+
+struct uinput_device {
+	struct input_dev *dev;
+	struct mutex mutex;
+	enum uinput_state state;
+	wait_queue_head_t waitq;
+	unsigned char ready;
+	unsigned char head;
+	unsigned char tail;
+	struct input_event buff[16];
+	unsigned int ff_effects_max;
+	struct uinput_request *requests[16];
+	wait_queue_head_t requests_waitq;
+	spinlock_t requests_lock;
+};
+
+struct uinput_request {
+	unsigned int id;
+	unsigned int code;
+	int retval;
+	struct completion done;
+	union {
+		unsigned int effect_id;
+		struct {
+			struct ff_effect *effect;
+			struct ff_effect *old;
+		} upload;
+	} u;
+};
+
+struct uinput_user_dev {
+	char name[80];
+	struct input_id id;
+	__u32 ff_effects_max;
+	__s32 absmax[64];
+	__s32 absmin[64];
+	__s32 absfuzz[64];
+	__s32 absflat[64];
+};
+
+struct uinput_ff_upload {
+	__u32 request_id;
+	__s32 retval;
+	struct ff_effect effect;
+	struct ff_effect old;
+};
+
+struct uinput_ff_erase {
+	__u32 request_id;
+	__s32 retval;
+	__u32 effect_id;
+};
+
+struct uinput_setup {
+	struct input_id id;
+	char name[80];
+	__u32 ff_effects_max;
+};
+
+struct uinput_ff_upload_compat {
+	__u32 request_id;
+	__s32 retval;
+	struct ff_effect_compat effect;
+	struct ff_effect_compat old;
+};
+
+struct uinput_abs_setup {
+	__u16 code;
+	struct input_absinfo absinfo;
+};
+
+typedef void (*btf_trace_rtc_set_time)(void *, time64_t, int);
+
+typedef void (*btf_trace_rtc_read_time)(void *, time64_t, int);
+
+typedef void (*btf_trace_rtc_set_alarm)(void *, time64_t, int);
+
+typedef void (*btf_trace_rtc_read_alarm)(void *, time64_t, int);
+
+typedef void (*btf_trace_rtc_irq_set_freq)(void *, int, int);
+
+typedef void (*btf_trace_rtc_irq_set_state)(void *, int, int);
+
+typedef void (*btf_trace_rtc_alarm_irq_enable)(void *, unsigned int, int);
+
+typedef void (*btf_trace_rtc_set_offset)(void *, long, int);
+
+typedef void (*btf_trace_rtc_read_offset)(void *, long, int);
+
+typedef void (*btf_trace_rtc_timer_enqueue)(void *, struct rtc_timer *);
+
+typedef void (*btf_trace_rtc_timer_dequeue)(void *, struct rtc_timer *);
+
+typedef void (*btf_trace_rtc_timer_fired)(void *, struct rtc_timer *);
+
+enum {
+	none = 0,
+	day = 1,
+	month = 2,
+	year = 3,
+};
+
+struct trace_event_raw_rtc_time_alarm_class {
+	struct trace_entry ent;
+	time64_t secs;
+	int err;
+	char __data[0];
+};
+
+struct trace_event_raw_rtc_irq_set_freq {
+	struct trace_entry ent;
+	int freq;
+	int err;
+	char __data[0];
+};
+
+struct trace_event_raw_rtc_irq_set_state {
+	struct trace_entry ent;
+	int enabled;
+	int err;
+	char __data[0];
+};
+
+struct trace_event_raw_rtc_alarm_irq_enable {
+	struct trace_entry ent;
+	unsigned int enabled;
+	int err;
+	char __data[0];
+};
+
+struct trace_event_raw_rtc_offset_class {
+	struct trace_entry ent;
+	long offset;
+	int err;
+	char __data[0];
+};
+
+struct trace_event_raw_rtc_timer_class {
+	struct trace_entry ent;
+	struct rtc_timer *timer;
+	ktime_t expires;
+	ktime_t period;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_rtc_time_alarm_class {};
+
+struct trace_event_data_offsets_rtc_irq_set_freq {};
+
+struct trace_event_data_offsets_rtc_irq_set_state {};
+
+struct trace_event_data_offsets_rtc_alarm_irq_enable {};
+
+struct trace_event_data_offsets_rtc_offset_class {};
+
+struct trace_event_data_offsets_rtc_timer_class {};
+
+enum nvmem_type {
+	NVMEM_TYPE_UNKNOWN = 0,
+	NVMEM_TYPE_EEPROM = 1,
+	NVMEM_TYPE_OTP = 2,
+	NVMEM_TYPE_BATTERY_BACKED = 3,
+	NVMEM_TYPE_FRAM = 4,
+};
+
+typedef int (*nvmem_reg_read_t)(void *, unsigned int, void *, size_t);
+
+typedef int (*nvmem_reg_write_t)(void *, unsigned int, void *, size_t);
+
+struct nvmem_cell_info;
+
+struct nvmem_keepout;
+
+struct nvmem_layout;
+
+struct nvmem_config {
+	struct device *dev;
+	const char *name;
+	int id;
+	struct module *owner;
+	const struct nvmem_cell_info *cells;
+	int ncells;
+	bool add_legacy_fixed_of_cells;
+	const struct nvmem_keepout *keepout;
+	unsigned int nkeepout;
+	enum nvmem_type type;
+	bool read_only;
+	bool root_only;
+	bool ignore_wp;
+	struct nvmem_layout *layout;
+	struct device_node *of_node;
+	bool no_of_node;
+	nvmem_reg_read_t reg_read;
+	nvmem_reg_write_t reg_write;
+	int size;
+	int word_size;
+	int stride;
+	void *priv;
+	bool compat;
+	struct device *base_dev;
+};
+
+typedef int (*nvmem_cell_post_process_t)(void *, const char *, int, unsigned int, void *, size_t);
+
+struct nvmem_cell_info {
+	const char *name;
+	unsigned int offset;
+	size_t raw_len;
+	unsigned int bytes;
+	unsigned int bit_offset;
+	unsigned int nbits;
+	struct device_node *np;
+	nvmem_cell_post_process_t read_post_process;
+	void *priv;
+};
+
+struct nvmem_keepout {
+	unsigned int start;
+	unsigned int end;
+	unsigned char value;
+};
+
+struct nvmem_device;
+
+struct nvmem_layout {
+	const char *name;
+	const struct of_device_id *of_match_table;
+	int (*add_cells)(struct device *, struct nvmem_device *, struct nvmem_layout *);
+	void (*fixup_cell_info)(struct nvmem_device *, struct nvmem_layout *, struct nvmem_cell_info *);
+	struct module *owner;
+	struct list_head node;
+};
+
+struct mc146818_get_time_callback_param {
+	struct rtc_time *time;
+	unsigned char ctrl;
+	unsigned char century;
+};
+
+struct cmos_rtc {
+	struct rtc_device *rtc;
+	struct device *dev;
+	int irq;
+	struct resource *iomem;
+	time64_t alarm_expires;
+	void (*wake_on)(struct device *);
+	void (*wake_off)(struct device *);
+	u8 enabled_wake;
+	u8 suspend_ctrl;
+	u8 day_alrm;
+	u8 mon_alrm;
+	u8 century;
+	struct rtc_wkalrm saved_wkalrm;
+};
+
+struct cmos_read_alarm_callback_param {
+	struct cmos_rtc *cmos;
+	struct rtc_time *time;
+	unsigned char rtc_control;
+};
+
+struct cmos_set_alarm_callback_param {
+	struct cmos_rtc *cmos;
+	unsigned char mon;
+	unsigned char mday;
+	unsigned char hrs;
+	unsigned char min;
+	unsigned char sec;
+	struct rtc_wkalrm *t;
+};
+
+struct cmos_rtc_board_info {
+	void (*wake_on)(struct device *);
+	void (*wake_off)(struct device *);
+	u32 flags;
+	int address_space;
+	u8 rtc_day_alarm;
+	u8 rtc_mon_alarm;
+	u8 rtc_century;
+};
+
+struct i2c_devinfo {
+	struct list_head list;
+	int busnum;
+	struct i2c_board_info board_info;
+};
+
+typedef void (*btf_trace_i2c_write)(void *, const struct i2c_adapter *, const struct i2c_msg *, int);
+
+typedef void (*btf_trace_i2c_read)(void *, const struct i2c_adapter *, const struct i2c_msg *, int);
+
+typedef void (*btf_trace_i2c_reply)(void *, const struct i2c_adapter *, const struct i2c_msg *, int);
+
+typedef void (*btf_trace_i2c_result)(void *, const struct i2c_adapter *, int, int);
+
+struct trace_event_raw_i2c_write {
+	struct trace_entry ent;
+	int adapter_nr;
+	__u16 msg_nr;
+	__u16 addr;
+	__u16 flags;
+	__u16 len;
+	u32 __data_loc_buf;
+	char __data[0];
+};
+
+struct trace_event_raw_i2c_read {
+	struct trace_entry ent;
+	int adapter_nr;
+	__u16 msg_nr;
+	__u16 addr;
+	__u16 flags;
+	__u16 len;
+	char __data[0];
+};
+
+struct trace_event_raw_i2c_reply {
+	struct trace_entry ent;
+	int adapter_nr;
+	__u16 msg_nr;
+	__u16 addr;
+	__u16 flags;
+	__u16 len;
+	u32 __data_loc_buf;
+	char __data[0];
+};
+
+struct trace_event_raw_i2c_result {
+	struct trace_entry ent;
+	int adapter_nr;
+	__u16 nr_msgs;
+	__s16 ret;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_i2c_write {
+	u32 buf;
+};
+
+struct trace_event_data_offsets_i2c_reply {
+	u32 buf;
+};
+
+struct trace_event_data_offsets_i2c_read {};
+
+struct trace_event_data_offsets_i2c_result {};
+
+struct i2c_timings {
+	u32 bus_freq_hz;
+	u32 scl_rise_ns;
+	u32 scl_fall_ns;
+	u32 scl_int_delay_ns;
+	u32 sda_fall_ns;
+	u32 sda_hold_ns;
+	u32 digital_filter_width_ns;
+	u32 analog_filter_cutoff_freq_hz;
+};
+
+struct i2c_cmd_arg {
+	unsigned int cmd;
+	void *arg;
+};
+
+struct i2c_device_identity {
+	u16 manufacturer_id;
+	u16 part_id;
+	u8 die_revision;
+};
+
+typedef void (*btf_trace_smbus_write)(void *, const struct i2c_adapter *, u16, unsigned short, char, u8, int, const union i2c_smbus_data *);
+
+typedef void (*btf_trace_smbus_read)(void *, const struct i2c_adapter *, u16, unsigned short, char, u8, int);
+
+typedef void (*btf_trace_smbus_reply)(void *, const struct i2c_adapter *, u16, unsigned short, char, u8, int, const union i2c_smbus_data *, int);
+
+typedef void (*btf_trace_smbus_result)(void *, const struct i2c_adapter *, u16, unsigned short, char, u8, int, int);
+
+struct trace_event_raw_smbus_write {
+	struct trace_entry ent;
+	int adapter_nr;
+	__u16 addr;
+	__u16 flags;
+	__u8 command;
+	__u8 len;
+	__u32 protocol;
+	__u8 buf[34];
+	char __data[0];
+};
+
+struct trace_event_raw_smbus_read {
+	struct trace_entry ent;
+	int adapter_nr;
+	__u16 flags;
+	__u16 addr;
+	__u8 command;
+	__u32 protocol;
+	__u8 buf[34];
+	char __data[0];
+};
+
+struct trace_event_raw_smbus_reply {
+	struct trace_entry ent;
+	int adapter_nr;
+	__u16 addr;
+	__u16 flags;
+	__u8 command;
+	__u8 len;
+	__u32 protocol;
+	__u8 buf[34];
+	char __data[0];
+};
+
+struct trace_event_raw_smbus_result {
+	struct trace_entry ent;
+	int adapter_nr;
+	__u16 addr;
+	__u16 flags;
+	__u8 read_write;
+	__u8 command;
+	__s16 res;
+	__u32 protocol;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_smbus_write {};
+
+struct trace_event_data_offsets_smbus_read {};
+
+struct trace_event_data_offsets_smbus_reply {};
+
+struct trace_event_data_offsets_smbus_result {};
+
+struct i2c_smbus_alert_setup {
+	int irq;
+};
+
+enum i2c_driver_flags {
+	I2C_DRV_ACPI_WAIVE_D0_PROBE = 1,
+};
+
+struct gsb_buffer {
+	u8 status;
+	u8 len;
+	union {
+		u16 wdata;
+		u8 bdata;
+		struct {
+			struct {} __empty_data;
+			u8 data[0];
+		};
+	};
+};
+
+struct i2c_acpi_irq_context {
+	int irq;
+	bool wake_capable;
+};
+
+struct i2c_acpi_lookup {
+	struct i2c_board_info *info;
+	acpi_handle adapter_handle;
+	acpi_handle device_handle;
+	acpi_handle search_handle;
+	int n;
+	int index;
+	u32 speed;
+	u32 min_speed;
+	u32 force_speed;
+};
+
+struct i2c_acpi_handler_data {
+	struct acpi_connection_info info;
+	struct i2c_adapter *adapter;
+};
+
+enum i3c_error_code {
+	I3C_ERROR_UNKNOWN = 0,
+	I3C_ERROR_M0 = 1,
+	I3C_ERROR_M1 = 2,
+	I3C_ERROR_M2 = 3,
+};
+
+enum i3c_bus_mode {
+	I3C_BUS_MODE_PURE = 0,
+	I3C_BUS_MODE_MIXED_FAST = 1,
+	I3C_BUS_MODE_MIXED_LIMITED = 2,
+	I3C_BUS_MODE_MIXED_SLOW = 3,
+};
+
+struct i3c_dev_desc;
+
+struct i3c_bus {
+	struct i3c_dev_desc *cur_master;
+	int id;
+	unsigned long addrslots[4];
+	enum i3c_bus_mode mode;
+	struct {
+		unsigned long i3c;
+		unsigned long i2c;
+	} scl_rate;
+	struct {
+		struct list_head i3c;
+		struct list_head i2c;
+	} devs;
+	struct rw_semaphore lock;
+};
+
+struct i3c_master_controller;
+
+struct i3c_i2c_dev_desc {
+	struct list_head node;
+	struct i3c_master_controller *master;
+	void *master_priv;
+};
+
+struct i3c_device_info {
+	u64 pid;
+	u8 bcr;
+	u8 dcr;
+	u8 static_addr;
+	u8 dyn_addr;
+	u8 hdr_cap;
+	u8 max_read_ds;
+	u8 max_write_ds;
+	u8 max_ibi_len;
+	u32 max_read_turnaround;
+	u16 max_read_len;
+	u16 max_write_len;
+};
+
+struct i3c_device_ibi_info;
+
+struct i3c_device;
+
+struct i3c_dev_boardinfo;
+
+struct i3c_dev_desc {
+	struct i3c_i2c_dev_desc common;
+	struct i3c_device_info info;
+	struct mutex ibi_lock;
+	struct i3c_device_ibi_info *ibi;
+	struct i3c_device *dev;
+	const struct i3c_dev_boardinfo *boardinfo;
+};
+
+struct i3c_master_controller_ops;
+
+struct i3c_master_controller {
+	struct device dev;
+	struct i3c_dev_desc *this;
+	struct i2c_adapter i2c;
+	const struct i3c_master_controller_ops *ops;
+	unsigned int secondary: 1;
+	unsigned int init_done: 1;
+	struct {
+		struct list_head i3c;
+		struct list_head i2c;
+	} boardinfo;
+	struct i3c_bus bus;
+	struct workqueue_struct *wq;
+};
+
+struct i3c_ccc_cmd;
+
+struct i3c_priv_xfer;
+
+struct i2c_dev_desc;
+
+struct i3c_ibi_setup;
+
+struct i3c_ibi_slot;
+
+struct i3c_master_controller_ops {
+	int (*bus_init)(struct i3c_master_controller *);
+	void (*bus_cleanup)(struct i3c_master_controller *);
+	int (*attach_i3c_dev)(struct i3c_dev_desc *);
+	int (*reattach_i3c_dev)(struct i3c_dev_desc *, u8);
+	void (*detach_i3c_dev)(struct i3c_dev_desc *);
+	int (*do_daa)(struct i3c_master_controller *);
+	bool (*supports_ccc_cmd)(struct i3c_master_controller *, const struct i3c_ccc_cmd *);
+	int (*send_ccc_cmd)(struct i3c_master_controller *, struct i3c_ccc_cmd *);
+	int (*priv_xfers)(struct i3c_dev_desc *, struct i3c_priv_xfer *, int);
+	int (*attach_i2c_dev)(struct i2c_dev_desc *);
+	void (*detach_i2c_dev)(struct i2c_dev_desc *);
+	int (*i2c_xfers)(struct i2c_dev_desc *, const struct i2c_msg *, int);
+	int (*request_ibi)(struct i3c_dev_desc *, const struct i3c_ibi_setup *);
+	void (*free_ibi)(struct i3c_dev_desc *);
+	int (*enable_ibi)(struct i3c_dev_desc *);
+	int (*disable_ibi)(struct i3c_dev_desc *);
+	void (*recycle_ibi_slot)(struct i3c_dev_desc *, struct i3c_ibi_slot *);
+};
+
+struct i3c_ccc_cmd_dest;
+
+struct i3c_ccc_cmd {
+	u8 rnw;
+	u8 id;
+	unsigned int ndests;
+	struct i3c_ccc_cmd_dest *dests;
+	enum i3c_error_code err;
+};
+
+struct i3c_ccc_cmd_payload {
+	u16 len;
+	void *data;
+};
+
+struct i3c_ccc_cmd_dest {
+	u8 addr;
+	struct i3c_ccc_cmd_payload payload;
+};
+
+struct i3c_priv_xfer {
+	u8 rnw;
+	u16 len;
+	union {
+		void *in;
+		const void *out;
+	} data;
+	enum i3c_error_code err;
+};
+
+struct i2c_dev_desc {
+	struct i3c_i2c_dev_desc common;
+	struct i2c_client *dev;
+	u16 addr;
+	u8 lvr;
+};
+
+struct i3c_ibi_payload;
+
+struct i3c_ibi_setup {
+	unsigned int max_payload_len;
+	unsigned int num_slots;
+	void (*handler)(struct i3c_device *, const struct i3c_ibi_payload *);
+};
+
+struct i3c_device {
+	struct device dev;
+	struct i3c_dev_desc *desc;
+	struct i3c_bus *bus;
+};
+
+struct i3c_ibi_payload {
+	unsigned int len;
+	const void *data;
+};
+
+struct i3c_ibi_slot {
+	struct work_struct work;
+	struct i3c_dev_desc *dev;
+	unsigned int len;
+	void *data;
+};
+
+struct i3c_device_ibi_info {
+	struct completion all_ibis_handled;
+	atomic_t pending_ibis;
+	unsigned int max_payload_len;
+	unsigned int num_slots;
+	unsigned int enabled;
+	void (*handler)(struct i3c_device *, const struct i3c_ibi_payload *);
+};
+
+struct i3c_dev_boardinfo {
+	struct list_head node;
+	u8 init_dyn_addr;
+	u8 static_addr;
+	u64 pid;
+	struct device_node *of_node;
+};
+
+struct i3c_device_id {
+	__u8 match_flags;
+	__u8 dcr;
+	__u16 manuf_id;
+	__u16 part_id;
+	__u16 extra_info;
+	const void *data;
+};
+
+struct i3c_driver {
+	struct device_driver driver;
+	int (*probe)(struct i3c_device *);
+	void (*remove)(struct i3c_device *);
+	const struct i3c_device_id *id_table;
+};
+
+enum i3c_addr_slot_status {
+	I3C_ADDR_SLOT_FREE = 0,
+	I3C_ADDR_SLOT_RSVD = 1,
+	I3C_ADDR_SLOT_I2C_DEV = 2,
+	I3C_ADDR_SLOT_I3C_DEV = 3,
+	I3C_ADDR_SLOT_STATUS_MASK = 3,
+};
+
+struct i3c_generic_ibi_slot {
+	struct list_head node;
+	struct i3c_ibi_slot base;
+};
+
+struct i2c_dev_boardinfo {
+	struct list_head node;
+	struct i2c_board_info base;
+	u8 lvr;
+};
+
+struct i3c_ccc_getpid {
+	u8 pid[6];
+};
+
+struct i3c_ccc_getbcr {
+	u8 bcr;
+};
+
+struct i3c_ccc_getdcr {
+	u8 dcr;
+};
+
+struct i3c_generic_ibi_pool {
+	spinlock_t lock;
+	unsigned int num_slots;
+	struct i3c_generic_ibi_slot *slots;
+	void *payload_buf;
+	struct list_head free_slots;
+	struct list_head pending;
+};
+
+struct i3c_ccc_events {
+	u8 events;
+};
+
+struct i3c_ccc_dev_desc {
+	u8 dyn_addr;
+	union {
+		u8 dcr;
+		u8 lvr;
+	};
+	u8 bcr;
+	u8 static_addr;
+};
+
+struct i3c_ccc_defslvs {
+	u8 count;
+	struct i3c_ccc_dev_desc master;
+	struct i3c_ccc_dev_desc slaves[0];
+};
+
+struct i3c_ccc_getmxds {
+	u8 maxwr;
+	u8 maxrd;
+	u8 maxrdturn[3];
+};
+
+struct i3c_ccc_mrl {
+	__be16 read_len;
+	u8 ibi_len;
+} __attribute__((packed));
+
+struct i3c_ccc_mwl {
+	__be16 len;
+};
+
+struct i3c_ccc_gethdrcap {
+	u8 modes;
+};
+
+struct i3c_ccc_setda {
+	u8 addr;
+};
+
+enum rc_proto {
+	RC_PROTO_UNKNOWN = 0,
+	RC_PROTO_OTHER = 1,
+	RC_PROTO_RC5 = 2,
+	RC_PROTO_RC5X_20 = 3,
+	RC_PROTO_RC5_SZ = 4,
+	RC_PROTO_JVC = 5,
+	RC_PROTO_SONY12 = 6,
+	RC_PROTO_SONY15 = 7,
+	RC_PROTO_SONY20 = 8,
+	RC_PROTO_NEC = 9,
+	RC_PROTO_NECX = 10,
+	RC_PROTO_NEC32 = 11,
+	RC_PROTO_SANYO = 12,
+	RC_PROTO_MCIR2_KBD = 13,
+	RC_PROTO_MCIR2_MSE = 14,
+	RC_PROTO_RC6_0 = 15,
+	RC_PROTO_RC6_6A_20 = 16,
+	RC_PROTO_RC6_6A_24 = 17,
+	RC_PROTO_RC6_6A_32 = 18,
+	RC_PROTO_RC6_MCE = 19,
+	RC_PROTO_SHARP = 20,
+	RC_PROTO_XMP = 21,
+	RC_PROTO_CEC = 22,
+	RC_PROTO_IMON = 23,
+	RC_PROTO_RCMM12 = 24,
+	RC_PROTO_RCMM24 = 25,
+	RC_PROTO_RCMM32 = 26,
+	RC_PROTO_XBOX_DVD = 27,
+	RC_PROTO_MAX = 27,
+};
+
+enum rc_driver_type {
+	RC_DRIVER_SCANCODE = 0,
+	RC_DRIVER_IR_RAW = 1,
+	RC_DRIVER_IR_RAW_TX = 2,
+};
+
+enum ir_kbd_get_key_fn {
+	IR_KBD_GET_KEY_CUSTOM = 0,
+	IR_KBD_GET_KEY_PIXELVIEW = 1,
+	IR_KBD_GET_KEY_HAUP = 2,
+	IR_KBD_GET_KEY_KNC1 = 3,
+	IR_KBD_GET_KEY_GENIATECH = 4,
+	IR_KBD_GET_KEY_FUSIONHDTV = 5,
+	IR_KBD_GET_KEY_HAUP_XVR = 6,
+	IR_KBD_GET_KEY_AVERMEDIA_CARDBUS = 7,
+};
+
+struct rc_dev;
+
+struct IR_i2c {
+	char *ir_codes;
+	struct i2c_client *c;
+	struct rc_dev *rc;
+	unsigned char old;
+	u32 polling_interval;
+	struct delayed_work work;
+	char phys[32];
+	int (*get_key)(struct IR_i2c *, enum rc_proto *, u32 *, u8 *);
+	struct i2c_client *tx_c;
+	struct mutex lock;
+	unsigned int carrier;
+	unsigned int duty_cycle;
+};
+
+struct rc_map_table;
+
+struct rc_map {
+	struct rc_map_table *scan;
+	unsigned int size;
+	unsigned int len;
+	unsigned int alloc;
+	enum rc_proto rc_proto;
+	const char *name;
+	spinlock_t lock;
+};
+
+struct rc_scancode_filter {
+	u32 data;
+	u32 mask;
+};
+
+struct ir_raw_event_ctrl;
+
+struct rc_dev {
+	struct device dev;
+	bool managed_alloc;
+	const struct attribute_group *sysfs_groups[5];
+	const char *device_name;
+	const char *input_phys;
+	struct input_id input_id;
+	const char *driver_name;
+	const char *map_name;
+	struct rc_map rc_map;
+	struct mutex lock;
+	unsigned int minor;
+	struct ir_raw_event_ctrl *raw;
+	struct input_dev *input_dev;
+	enum rc_driver_type driver_type;
+	bool idle;
+	bool encode_wakeup;
+	u64 allowed_protocols;
+	u64 enabled_protocols;
+	u64 allowed_wakeup_protocols;
+	enum rc_proto wakeup_protocol;
+	struct rc_scancode_filter scancode_filter;
+	struct rc_scancode_filter scancode_wakeup_filter;
+	u32 scancode_mask;
+	u32 users;
+	void *priv;
+	spinlock_t keylock;
+	bool keypressed;
+	unsigned long keyup_jiffies;
+	struct timer_list timer_keyup;
+	struct timer_list timer_repeat;
+	u32 last_keycode;
+	enum rc_proto last_protocol;
+	u64 last_scancode;
+	u8 last_toggle;
+	u32 timeout;
+	u32 min_timeout;
+	u32 max_timeout;
+	u32 rx_resolution;
+	u32 tx_resolution;
+	struct device lirc_dev;
+	struct cdev lirc_cdev;
+	ktime_t gap_start;
+	spinlock_t lirc_fh_lock;
+	struct list_head lirc_fh;
+	bool registered;
+	int (*change_protocol)(struct rc_dev *, u64 *);
+	int (*open)(struct rc_dev *);
+	void (*close)(struct rc_dev *);
+	int (*s_tx_mask)(struct rc_dev *, u32);
+	int (*s_tx_carrier)(struct rc_dev *, u32);
+	int (*s_tx_duty_cycle)(struct rc_dev *, u32);
+	int (*s_rx_carrier_range)(struct rc_dev *, u32, u32);
+	int (*tx_ir)(struct rc_dev *, unsigned int *, unsigned int);
+	void (*s_idle)(struct rc_dev *, bool);
+	int (*s_wideband_receiver)(struct rc_dev *, int);
+	int (*s_carrier_report)(struct rc_dev *, int);
+	int (*s_filter)(struct rc_dev *, struct rc_scancode_filter *);
+	int (*s_wakeup_filter)(struct rc_dev *, struct rc_scancode_filter *);
+	int (*s_timeout)(struct rc_dev *, unsigned int);
+};
+
+struct rc_map_table {
+	u64 scancode;
+	u32 keycode;
+};
+
+struct code_block {
+	u8 length;
+	u16 pulse[7];
+	u8 carrier_pulse;
+	u8 carrier_space;
+	u16 space[8];
+	u8 codes[61];
+	u8 csum[2];
+} __attribute__((packed));
+
+struct IR_i2c_init_data {
+	char *ir_codes;
+	const char *name;
+	u64 type;
+	u32 polling_interval;
+	int (*get_key)(struct IR_i2c *, enum rc_proto *, u32 *, u8 *);
+	enum ir_kbd_get_key_fn internal_get_key_func;
+	struct rc_dev *rc_dev;
+};
+
+struct media_ioctl_info {
+	unsigned int cmd;
+	unsigned short flags;
+	long (*fn)(struct media_device *, void *);
+	long (*arg_from_user)(void *, void __attribute__((btf_type_tag("user"))) *, unsigned int);
+	long (*arg_to_user)(void __attribute__((btf_type_tag("user"))) *, void *, unsigned int);
+};
+
+enum media_gobj_type {
+	MEDIA_GRAPH_ENTITY = 0,
+	MEDIA_GRAPH_PAD = 1,
+	MEDIA_GRAPH_LINK = 2,
+	MEDIA_GRAPH_INTF_DEVNODE = 3,
+};
+
+struct media_entity_notify {
+	struct list_head list;
+	void *notify_data;
+	void (*notify)(struct media_entity *, void *);
+};
+
+struct media_links_enum32 {
+	__u32 entity;
+	compat_uptr_t pads;
+	compat_uptr_t links;
+	__u32 reserved[4];
+};
+
+struct media_pad_desc;
+
+struct media_link_desc;
+
+struct media_links_enum {
+	__u32 entity;
+	struct media_pad_desc __attribute__((btf_type_tag("user"))) *pads;
+	struct media_link_desc __attribute__((btf_type_tag("user"))) *links;
+	__u32 reserved[4];
+};
+
+struct media_pad_desc {
+	__u32 entity;
+	__u16 index;
+	__u32 flags;
+	__u32 reserved[2];
+};
+
+struct media_link_desc {
+	struct media_pad_desc source;
+	struct media_pad_desc sink;
+	__u32 flags;
+	__u32 reserved[2];
+};
+
+struct media_device_info {
+	char driver[16];
+	char model[32];
+	char serial[40];
+	char bus_info[32];
+	__u32 media_version;
+	__u32 hw_revision;
+	__u32 driver_version;
+	__u32 reserved[31];
+};
+
+struct media_entity_desc {
+	__u32 id;
+	char name[32];
+	__u32 type;
+	__u32 revision;
+	__u32 flags;
+	__u32 group_id;
+	__u16 pads;
+	__u16 links;
+	__u32 reserved[4];
+	union {
+		struct {
+			__u32 major;
+			__u32 minor;
+		} dev;
+		__u8 raw[184];
+	};
+};
+
+struct media_v2_entity {
+	__u32 id;
+	char name[64];
+	__u32 function;
+	__u32 flags;
+	__u32 reserved[5];
+};
+
+struct media_v2_intf_devnode {
+	__u32 major;
+	__u32 minor;
+};
+
+struct media_v2_interface {
+	__u32 id;
+	__u32 intf_type;
+	__u32 flags;
+	__u32 reserved[9];
+	union {
+		struct media_v2_intf_devnode devnode;
+		__u32 raw[16];
+	};
+};
+
+struct media_v2_pad {
+	__u32 id;
+	__u32 entity_id;
+	__u32 flags;
+	__u32 index;
+	__u32 reserved[4];
+};
+
+struct media_v2_link {
+	__u32 id;
+	__u32 source_id;
+	__u32 sink_id;
+	__u32 flags;
+	__u32 reserved[6];
+};
+
+struct media_v2_topology {
+	__u64 topology_version;
+	__u32 num_entities;
+	__u32 reserved1;
+	__u64 ptr_entities;
+	__u32 num_interfaces;
+	__u32 reserved2;
+	__u64 ptr_interfaces;
+	__u32 num_pads;
+	__u32 reserved3;
+	__u64 ptr_pads;
+	__u32 num_links;
+	__u32 reserved4;
+	__u64 ptr_links;
+};
+
+struct media_pipeline_pad {
+	struct list_head list;
+	struct media_pipeline *pipe;
+	struct media_pad *pad;
+};
+
+struct media_pipeline_walk_entry;
+
+struct media_pipeline_walk {
+	struct media_device *mdev;
+	struct {
+		unsigned int size;
+		int top;
+		struct media_pipeline_walk_entry *entries;
+	} stack;
+};
+
+struct media_pipeline_walk_entry {
+	struct media_pad *pad;
+	struct list_head *links;
+};
+
+struct media_pipeline_pad_iter {
+	struct list_head *cursor;
+};
+
+struct media_pipeline_entity_iter {
+	struct media_entity_enum ent_enum;
+	struct list_head *cursor;
+};
+
+struct media_device_instance {
+	struct media_device mdev;
+	struct module *owner;
+	struct list_head list;
+	struct kref refcount;
+};
+
+struct v4l2_async_subdev_endpoint {
+	struct list_head async_subdev_endpoint_entry;
+	struct fwnode_handle *endpoint;
+};
+
+enum v4l2_fwnode_bus_type {
+	V4L2_FWNODE_BUS_TYPE_GUESS = 0,
+	V4L2_FWNODE_BUS_TYPE_CSI2_CPHY = 1,
+	V4L2_FWNODE_BUS_TYPE_CSI1 = 2,
+	V4L2_FWNODE_BUS_TYPE_CCP2 = 3,
+	V4L2_FWNODE_BUS_TYPE_CSI2_DPHY = 4,
+	V4L2_FWNODE_BUS_TYPE_PARALLEL = 5,
+	V4L2_FWNODE_BUS_TYPE_BT656 = 6,
+	V4L2_FWNODE_BUS_TYPE_DPI = 7,
+	NR_OF_V4L2_FWNODE_BUS_TYPE = 8,
+};
+
+struct v4l2_fwnode_bus_conv {
+	enum v4l2_fwnode_bus_type fwnode_bus_type;
+	enum v4l2_mbus_type mbus_type;
+	const char *name;
+};
+
+enum v4l2_connector_type {
+	V4L2_CONN_UNKNOWN = 0,
+	V4L2_CONN_COMPOSITE = 1,
+	V4L2_CONN_SVIDEO = 2,
+};
+
+struct v4l2_fwnode_connector_conv {
+	enum v4l2_connector_type type;
+	const char *compatible;
+};
+
+struct v4l2_fwnode_int_props {
+	const char *name;
+	const char * const *props;
+	unsigned int nprops;
+};
+
+enum v4l2_fwnode_orientation {
+	V4L2_FWNODE_ORIENTATION_FRONT = 0,
+	V4L2_FWNODE_ORIENTATION_BACK = 1,
+	V4L2_FWNODE_ORIENTATION_EXTERNAL = 2,
+};
+
+struct v4l2_fwnode_link {
+	struct fwnode_handle *local_node;
+	unsigned int local_port;
+	unsigned int local_id;
+	struct fwnode_handle *remote_node;
+	unsigned int remote_port;
+	unsigned int remote_id;
+};
+
+struct v4l2_connector_link {
+	struct list_head head;
+	struct v4l2_fwnode_link fwnode_link;
+};
+
+struct v4l2_fwnode_endpoint {
+	struct fwnode_endpoint base;
+	enum v4l2_mbus_type bus_type;
+	struct {
+		struct v4l2_mbus_config_parallel parallel;
+		struct v4l2_mbus_config_mipi_csi1 mipi_csi1;
+		struct v4l2_mbus_config_mipi_csi2 mipi_csi2;
+	} bus;
+	u64 *link_frequencies;
+	unsigned int nr_of_link_frequencies;
+};
+
+struct v4l2_fwnode_connector_analog {
+	v4l2_std_id sdtv_stds;
+};
+
+struct v4l2_fwnode_connector {
+	const char *name;
+	const char *label;
+	enum v4l2_connector_type type;
+	struct list_head links;
+	unsigned int nr_of_links;
+	union {
+		struct v4l2_fwnode_connector_analog analog;
+	} connector;
+};
+
+struct v4l2_fwnode_device_properties {
+	enum v4l2_fwnode_orientation orientation;
+	unsigned int rotation;
+};
+
+enum v4l2_video_device_flags {
+	V4L2_FL_REGISTERED = 0,
+	V4L2_FL_USES_V4L2_FH = 1,
+	V4L2_FL_QUIRK_INVERTED_CROP = 2,
+	V4L2_FL_SUBDEV_RO_DEVNODE = 3,
+};
+
+enum v4l2_m2m_entity_type {
+	MEM2MEM_ENT_TYPE_SOURCE = 0,
+	MEM2MEM_ENT_TYPE_SINK = 1,
+	MEM2MEM_ENT_TYPE_PROC = 2,
+};
+
+enum v4l2_memory {
+	V4L2_MEMORY_MMAP = 1,
+	V4L2_MEMORY_USERPTR = 2,
+	V4L2_MEMORY_OVERLAY = 3,
+	V4L2_MEMORY_DMABUF = 4,
+};
+
+struct v4l2_m2m_buffer {
+	struct vb2_v4l2_buffer vb;
+	struct list_head list;
+};
+
+struct v4l2_m2m_queue_ctx {
+	struct vb2_queue q;
+	struct list_head rdy_queue;
+	spinlock_t rdy_spinlock;
+	u8 num_rdy;
+	bool buffered;
+};
+
+struct v4l2_m2m_dev;
+
+struct v4l2_m2m_ctx {
+	struct mutex *q_lock;
+	bool new_frame;
+	bool is_draining;
+	struct vb2_v4l2_buffer *last_src_buf;
+	bool next_buf_last;
+	bool has_stopped;
+	struct v4l2_m2m_dev *m2m_dev;
+	struct v4l2_m2m_queue_ctx cap_q_ctx;
+	struct v4l2_m2m_queue_ctx out_q_ctx;
+	struct list_head queue;
+	unsigned long job_flags;
+	wait_queue_head_t finished;
+	void *priv;
+};
+
+struct v4l2_m2m_ops;
+
+struct v4l2_m2m_dev {
+	struct v4l2_m2m_ctx *curr_ctx;
+	struct media_entity *source;
+	struct media_pad source_pad;
+	struct media_entity sink;
+	struct media_pad sink_pad;
+	struct media_entity proc;
+	struct media_pad proc_pads[2];
+	struct media_intf_devnode *intf_devnode;
+	struct list_head job_queue;
+	spinlock_t job_spinlock;
+	struct work_struct job_work;
+	unsigned long job_queue_flags;
+	const struct v4l2_m2m_ops *m2m_ops;
+};
+
+struct v4l2_m2m_ops {
+	void (*device_run)(void *);
+	int (*job_ready)(void *);
+	void (*job_abort)(void *);
+};
+
+enum v4l2_ycbcr_encoding {
+	V4L2_YCBCR_ENC_DEFAULT = 0,
+	V4L2_YCBCR_ENC_601 = 1,
+	V4L2_YCBCR_ENC_709 = 2,
+	V4L2_YCBCR_ENC_XV601 = 3,
+	V4L2_YCBCR_ENC_XV709 = 4,
+	V4L2_YCBCR_ENC_BT2020 = 6,
+	V4L2_YCBCR_ENC_BT2020_CONST_LUM = 7,
+	V4L2_YCBCR_ENC_SMPTE240M = 8,
+	V4L2_YCBCR_ENC_LAST = 9,
+};
+
+enum v4l2_quantization {
+	V4L2_QUANTIZATION_DEFAULT = 0,
+	V4L2_QUANTIZATION_FULL_RANGE = 1,
+	V4L2_QUANTIZATION_LIM_RANGE = 2,
+};
+
+enum v4l2_xfer_func {
+	V4L2_XFER_FUNC_DEFAULT = 0,
+	V4L2_XFER_FUNC_709 = 1,
+	V4L2_XFER_FUNC_SRGB = 2,
+	V4L2_XFER_FUNC_OPRGB = 3,
+	V4L2_XFER_FUNC_SMPTE240M = 4,
+	V4L2_XFER_FUNC_NONE = 5,
+	V4L2_XFER_FUNC_DCI_P3 = 6,
+	V4L2_XFER_FUNC_SMPTE2084 = 7,
+	V4L2_XFER_FUNC_LAST = 8,
+};
+
+struct v4l2_hdmi_colorimetry {
+	enum v4l2_colorspace colorspace;
+	enum v4l2_ycbcr_encoding ycbcr_enc;
+	enum v4l2_quantization quantization;
+	enum v4l2_xfer_func xfer_func;
+};
+
+typedef bool v4l2_check_dv_timings_fnc(const struct v4l2_dv_timings *, void *);
+
+struct std_descr {
+	v4l2_std_id std;
+	const char *descr;
+};
+
+struct v4l2_ioctl_info {
+	unsigned int ioctl;
+	u32 flags;
+	const char * const name;
+	int (*func)(const struct v4l2_ioctl_ops *, struct file *, void *, void *);
+	void (*debug)(const void *, bool);
+};
+
+struct v4l2_ctrl;
+
+typedef void (*v4l2_ctrl_notify_fnc)(struct v4l2_ctrl *, void *);
+
+struct v4l2_ctrl_ref;
+
+struct v4l2_ctrl_handler {
+	struct mutex _lock;
+	struct mutex *lock;
+	struct list_head ctrls;
+	struct list_head ctrl_refs;
+	struct v4l2_ctrl_ref *cached;
+	struct v4l2_ctrl_ref **buckets;
+	v4l2_ctrl_notify_fnc notify;
+	void *notify_priv;
+	u16 nr_of_buckets;
+	int error;
+	bool request_is_queued;
+	struct list_head requests;
+	struct list_head requests_queued;
+	struct media_request_object req_obj;
+	u64 android_kabi_reserved1;
+};
+
+struct v4l2_ctrl_hdr10_cll_info;
+
+struct v4l2_ctrl_hdr10_mastering_display;
+
+union v4l2_ctrl_ptr {
+	s32 *p_s32;
+	s64 *p_s64;
+	u8 *p_u8;
+	u16 *p_u16;
+	u32 *p_u32;
+	char *p_char;
+	struct v4l2_ctrl_mpeg2_sequence *p_mpeg2_sequence;
+	struct v4l2_ctrl_mpeg2_picture *p_mpeg2_picture;
+	struct v4l2_ctrl_mpeg2_quantisation *p_mpeg2_quantisation;
+	struct v4l2_ctrl_fwht_params *p_fwht_params;
+	struct v4l2_ctrl_h264_sps *p_h264_sps;
+	struct v4l2_ctrl_h264_pps *p_h264_pps;
+	struct v4l2_ctrl_h264_scaling_matrix *p_h264_scaling_matrix;
+	struct v4l2_ctrl_h264_slice_params *p_h264_slice_params;
+	struct v4l2_ctrl_h264_decode_params *p_h264_decode_params;
+	struct v4l2_ctrl_h264_pred_weights *p_h264_pred_weights;
+	struct v4l2_ctrl_vp8_frame *p_vp8_frame;
+	struct v4l2_ctrl_hevc_sps *p_hevc_sps;
+	struct v4l2_ctrl_hevc_pps *p_hevc_pps;
+	struct v4l2_ctrl_hevc_slice_params *p_hevc_slice_params;
+	struct v4l2_ctrl_vp9_compressed_hdr *p_vp9_compressed_hdr_probs;
+	struct v4l2_ctrl_vp9_frame *p_vp9_frame;
+	struct v4l2_ctrl_hdr10_cll_info *p_hdr10_cll;
+	struct v4l2_ctrl_hdr10_mastering_display *p_hdr10_mastering;
+	struct v4l2_area *p_area;
+	struct v4l2_ctrl_av1_sequence *p_av1_sequence;
+	struct v4l2_ctrl_av1_tile_group_entry *p_av1_tile_group_entry;
+	struct v4l2_ctrl_av1_frame *p_av1_frame;
+	struct v4l2_ctrl_av1_film_grain *p_av1_film_grain;
+	void *p;
+	const void *p_const;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct v4l2_ctrl_helper;
+
+struct v4l2_ctrl_ref {
+	struct list_head node;
+	struct v4l2_ctrl_ref *next;
+	struct v4l2_ctrl *ctrl;
+	struct v4l2_ctrl_helper *helper;
+	bool from_other_dev;
+	bool req_done;
+	bool p_req_valid;
+	bool p_req_array_enomem;
+	u32 p_req_array_alloc_elems;
+	u32 p_req_elems;
+	union v4l2_ctrl_ptr p_req;
+	u64 android_kabi_reserved1;
+};
+
+enum v4l2_ctrl_type {
+	V4L2_CTRL_TYPE_INTEGER = 1,
+	V4L2_CTRL_TYPE_BOOLEAN = 2,
+	V4L2_CTRL_TYPE_MENU = 3,
+	V4L2_CTRL_TYPE_BUTTON = 4,
+	V4L2_CTRL_TYPE_INTEGER64 = 5,
+	V4L2_CTRL_TYPE_CTRL_CLASS = 6,
+	V4L2_CTRL_TYPE_STRING = 7,
+	V4L2_CTRL_TYPE_BITMASK = 8,
+	V4L2_CTRL_TYPE_INTEGER_MENU = 9,
+	V4L2_CTRL_COMPOUND_TYPES = 256,
+	V4L2_CTRL_TYPE_U8 = 256,
+	V4L2_CTRL_TYPE_U16 = 257,
+	V4L2_CTRL_TYPE_U32 = 258,
+	V4L2_CTRL_TYPE_AREA = 262,
+	V4L2_CTRL_TYPE_HDR10_CLL_INFO = 272,
+	V4L2_CTRL_TYPE_HDR10_MASTERING_DISPLAY = 273,
+	V4L2_CTRL_TYPE_H264_SPS = 512,
+	V4L2_CTRL_TYPE_H264_PPS = 513,
+	V4L2_CTRL_TYPE_H264_SCALING_MATRIX = 514,
+	V4L2_CTRL_TYPE_H264_SLICE_PARAMS = 515,
+	V4L2_CTRL_TYPE_H264_DECODE_PARAMS = 516,
+	V4L2_CTRL_TYPE_H264_PRED_WEIGHTS = 517,
+	V4L2_CTRL_TYPE_FWHT_PARAMS = 544,
+	V4L2_CTRL_TYPE_VP8_FRAME = 576,
+	V4L2_CTRL_TYPE_MPEG2_QUANTISATION = 592,
+	V4L2_CTRL_TYPE_MPEG2_SEQUENCE = 593,
+	V4L2_CTRL_TYPE_MPEG2_PICTURE = 594,
+	V4L2_CTRL_TYPE_VP9_COMPRESSED_HDR = 608,
+	V4L2_CTRL_TYPE_VP9_FRAME = 609,
+	V4L2_CTRL_TYPE_HEVC_SPS = 624,
+	V4L2_CTRL_TYPE_HEVC_PPS = 625,
+	V4L2_CTRL_TYPE_HEVC_SLICE_PARAMS = 626,
+	V4L2_CTRL_TYPE_HEVC_SCALING_MATRIX = 627,
+	V4L2_CTRL_TYPE_HEVC_DECODE_PARAMS = 628,
+	V4L2_CTRL_TYPE_AV1_SEQUENCE = 640,
+	V4L2_CTRL_TYPE_AV1_TILE_GROUP_ENTRY = 641,
+	V4L2_CTRL_TYPE_AV1_FRAME = 642,
+	V4L2_CTRL_TYPE_AV1_FILM_GRAIN = 643,
+};
+
+struct v4l2_ctrl_ops;
+
+struct v4l2_ctrl_type_ops;
+
+struct v4l2_ctrl {
+	struct list_head node;
+	struct list_head ev_subs;
+	struct v4l2_ctrl_handler *handler;
+	struct v4l2_ctrl **cluster;
+	unsigned int ncontrols;
+	unsigned int done: 1;
+	unsigned int is_new: 1;
+	unsigned int has_changed: 1;
+	unsigned int is_private: 1;
+	unsigned int is_auto: 1;
+	unsigned int is_int: 1;
+	unsigned int is_string: 1;
+	unsigned int is_ptr: 1;
+	unsigned int is_array: 1;
+	unsigned int is_dyn_array: 1;
+	unsigned int has_volatiles: 1;
+	unsigned int call_notify: 1;
+	unsigned int manual_mode_value: 8;
+	const struct v4l2_ctrl_ops *ops;
+	const struct v4l2_ctrl_type_ops *type_ops;
+	u32 id;
+	const char *name;
+	enum v4l2_ctrl_type type;
+	s64 minimum;
+	s64 maximum;
+	s64 default_value;
+	u32 elems;
+	u32 elem_size;
+	u32 new_elems;
+	u32 dims[4];
+	u32 nr_of_dims;
+	union {
+		u64 step;
+		u64 menu_skip_mask;
+	};
+	union {
+		const char * const *qmenu;
+		const s64 *qmenu_int;
+	};
+	unsigned long flags;
+	void *priv;
+	void *p_array;
+	u32 p_array_alloc_elems;
+	s32 val;
+	struct {
+		s32 val;
+	} cur;
+	union v4l2_ctrl_ptr p_def;
+	union v4l2_ctrl_ptr p_new;
+	union v4l2_ctrl_ptr p_cur;
+	u64 android_kabi_reserved1;
+};
+
+struct v4l2_ctrl_ops {
+	int (*g_volatile_ctrl)(struct v4l2_ctrl *);
+	int (*try_ctrl)(struct v4l2_ctrl *);
+	int (*s_ctrl)(struct v4l2_ctrl *);
+	u64 android_kabi_reserved1;
+};
+
+struct v4l2_ctrl_type_ops {
+	bool (*equal)(const struct v4l2_ctrl *, union v4l2_ctrl_ptr, union v4l2_ctrl_ptr);
+	void (*init)(const struct v4l2_ctrl *, u32, union v4l2_ctrl_ptr);
+	void (*log)(const struct v4l2_ctrl *);
+	int (*validate)(const struct v4l2_ctrl *, union v4l2_ctrl_ptr);
+	u64 android_kabi_reserved1;
+};
+
+struct v4l2_ctrl_hdr10_cll_info {
+	__u16 max_content_light_level;
+	__u16 max_pic_average_light_level;
+};
+
+struct v4l2_ctrl_hdr10_mastering_display {
+	__u16 display_primaries_x[3];
+	__u16 display_primaries_y[3];
+	__u16 white_point_x;
+	__u16 white_point_y;
+	__u32 max_display_mastering_luminance;
+	__u32 min_display_mastering_luminance;
+};
+
+enum v4l2_hsv_encoding {
+	V4L2_HSV_ENC_180 = 128,
+	V4L2_HSV_ENC_256 = 129,
+};
+
+enum v4l2_tuner_type {
+	V4L2_TUNER_RADIO = 1,
+	V4L2_TUNER_ANALOG_TV = 2,
+	V4L2_TUNER_DIGITAL_TV = 3,
+	V4L2_TUNER_SDR = 4,
+	V4L2_TUNER_RF = 5,
+};
+
+struct v4l2_subdev_routing {
+	__u32 which;
+	__u32 num_routes;
+	__u64 routes;
+	__u32 reserved[6];
+};
+
+struct v4l2_standard {
+	__u32 index;
+	v4l2_std_id id;
+	__u8 name[24];
+	struct v4l2_fract frameperiod;
+	__u32 framelines;
+	__u32 reserved[4];
+};
+
+typedef long (*v4l2_kioctl)(struct file *, unsigned int, void *);
+
+struct v4l2_cropcap {
+	__u32 type;
+	struct v4l2_rect bounds;
+	struct v4l2_rect defrect;
+	struct v4l2_fract pixelaspect;
+};
+
+struct v4l2_crop {
+	__u32 type;
+	struct v4l2_rect c;
+};
+
+struct v4l2_dbg_match {
+	__u32 type;
+	union {
+		__u32 addr;
+		char name[32];
+	};
+};
+
+struct v4l2_dbg_register {
+	struct v4l2_dbg_match match;
+	__u32 size;
+	__u64 reg;
+	__u64 val;
+};
+
+struct v4l2_dbg_chip_info {
+	struct v4l2_dbg_match match;
+	char name[32];
+	__u32 flags;
+	__u32 reserved[32];
+};
+
+typedef bool (*v4l2_ctrl_filter)(const struct v4l2_ctrl *);
+
+enum v4l2_subdev_routing_restriction {
+	V4L2_SUBDEV_ROUTING_NO_1_TO_N = 1,
+	V4L2_SUBDEV_ROUTING_NO_N_TO_1 = 2,
+	V4L2_SUBDEV_ROUTING_NO_SINK_STREAM_MIX = 4,
+	V4L2_SUBDEV_ROUTING_NO_SOURCE_STREAM_MIX = 8,
+	V4L2_SUBDEV_ROUTING_NO_SINK_MULTIPLEXING = 16,
+	V4L2_SUBDEV_ROUTING_NO_SOURCE_MULTIPLEXING = 32,
+	V4L2_SUBDEV_ROUTING_ONLY_1_TO_1 = 3,
+	V4L2_SUBDEV_ROUTING_NO_STREAM_MIX = 12,
+	V4L2_SUBDEV_ROUTING_NO_MULTIPLEXING = 48,
+};
+
+struct v4l2_subdev_crop {
+	__u32 which;
+	__u32 pad;
+	struct v4l2_rect rect;
+	__u32 stream;
+	__u32 reserved[7];
+};
+
+struct v4l2_subdev_client_capability {
+	__u64 capabilities;
+};
+
+struct v4l2_subdev_capability {
+	__u32 version;
+	__u32 capabilities;
+	__u32 reserved[14];
+};
+
+struct v4l2_format_info {
+	u32 format;
+	u8 pixel_enc;
+	u8 mem_planes;
+	u8 comp_planes;
+	u8 bpp[4];
+	u8 bpp_div[4];
+	u8 hdiv;
+	u8 vdiv;
+	u8 block_w[4];
+	u8 block_h[4];
+};
+
+struct v4l2_ctrl_config {
+	const struct v4l2_ctrl_ops *ops;
+	const struct v4l2_ctrl_type_ops *type_ops;
+	u32 id;
+	const char *name;
+	enum v4l2_ctrl_type type;
+	s64 min;
+	s64 max;
+	u64 step;
+	s64 def;
+	union v4l2_ctrl_ptr p_def;
+	u32 dims[4];
+	u32 elem_size;
+	u32 flags;
+	u64 menu_skip_mask;
+	const char * const *qmenu;
+	const s64 *qmenu_int;
+	unsigned int is_private: 1;
+	u64 android_kabi_reserved1;
+};
+
+struct v4l2_ctrl_helper {
+	struct v4l2_ctrl_ref *mref;
+	struct v4l2_ctrl_ref *ref;
+	u32 next;
+};
+
+struct v4l2_ext_controls32 {
+	__u32 which;
+	__u32 count;
+	__u32 error_idx;
+	__s32 request_fd;
+	__u32 reserved[1];
+	compat_caddr_t controls;
+};
+
+struct v4l2_buffer32_time32 {
+	__u32 index;
+	__u32 type;
+	__u32 bytesused;
+	__u32 flags;
+	__u32 field;
+	struct old_timeval32 timestamp;
+	struct v4l2_timecode timecode;
+	__u32 sequence;
+	__u32 memory;
+	union {
+		__u32 offset;
+		compat_long_t userptr;
+		compat_caddr_t planes;
+		__s32 fd;
+	} m;
+	__u32 length;
+	__u32 reserved2;
+	__s32 request_fd;
+};
+
+struct v4l2_edid32 {
+	__u32 pad;
+	__u32 start_block;
+	__u32 blocks;
+	__u32 reserved[5];
+	compat_caddr_t edid;
+};
+
+struct v4l2_framebuffer32 {
+	__u32 capability;
+	__u32 flags;
+	compat_caddr_t base;
+	struct {
+		__u32 width;
+		__u32 height;
+		__u32 pixelformat;
+		__u32 field;
+		__u32 bytesperline;
+		__u32 sizeimage;
+		__u32 colorspace;
+		__u32 priv;
+	} fmt;
+};
+
+typedef s64 compat_s64;
+
+struct v4l2_buffer32 {
+	__u32 index;
+	__u32 type;
+	__u32 bytesused;
+	__u32 flags;
+	__u32 field;
+	struct {
+		compat_s64 tv_sec;
+		compat_s64 tv_usec;
+	} timestamp;
+	struct v4l2_timecode timecode;
+	__u32 sequence;
+	__u32 memory;
+	union {
+		__u32 offset;
+		compat_long_t userptr;
+		compat_caddr_t planes;
+		__s32 fd;
+	} m;
+	__u32 length;
+	__u32 reserved2;
+	__s32 request_fd;
+} __attribute__((packed));
+
+struct v4l2_input32 {
+	__u32 index;
+	__u8 name[32];
+	__u32 type;
+	__u32 audioset;
+	__u32 tuner;
+	compat_u64 std;
+	__u32 status;
+	__u32 capabilities;
+	__u32 reserved[3];
+} __attribute__((packed));
+
+struct v4l2_standard32 {
+	__u32 index;
+	compat_u64 id;
+	__u8 name[24];
+	struct v4l2_fract frameperiod;
+	__u32 framelines;
+	__u32 reserved[4];
+} __attribute__((packed));
+
+struct v4l2_window32 {
+	struct v4l2_rect w;
+	__u32 field;
+	__u32 chromakey;
+	compat_caddr_t clips;
+	__u32 clipcount;
+	compat_caddr_t bitmap;
+	__u8 global_alpha;
+};
+
+struct v4l2_format32 {
+	__u32 type;
+	union {
+		struct v4l2_pix_format pix;
+		struct v4l2_pix_format_mplane pix_mp;
+		struct v4l2_window32 win;
+		struct v4l2_vbi_format vbi;
+		struct v4l2_sliced_vbi_format sliced;
+		struct v4l2_sdr_format sdr;
+		struct v4l2_meta_format meta;
+		__u8 raw_data[200];
+	} fmt;
+};
+
+struct v4l2_create_buffers32 {
+	__u32 index;
+	__u32 count;
+	__u32 memory;
+	struct v4l2_format32 format;
+	__u32 capabilities;
+	__u32 flags;
+	__u32 reserved[6];
+};
+
+struct v4l2_event32 {
+	__u32 type;
+	union {
+		compat_s64 value64;
+		__u8 data[64];
+	} u;
+	__u32 pending;
+	__u32 sequence;
+	struct {
+		compat_s64 tv_sec;
+		compat_s64 tv_nsec;
+	} timestamp;
+	__u32 id;
+	__u32 reserved[8];
+} __attribute__((packed));
+
+struct v4l2_event32_time32 {
+	__u32 type;
+	union {
+		compat_s64 value64;
+		__u8 data[64];
+	} u;
+	__u32 pending;
+	__u32 sequence;
+	struct old_timespec32 timestamp;
+	__u32 id;
+	__u32 reserved[8];
+} __attribute__((packed));
+
+struct v4l2_plane32 {
+	__u32 bytesused;
+	__u32 length;
+	union {
+		__u32 mem_offset;
+		compat_long_t userptr;
+		__s32 fd;
+	} m;
+	__u32 data_offset;
+	__u32 reserved[11];
+};
+
+struct v4l2_ext_control32 {
+	__u32 id;
+	__u32 size;
+	__u32 reserved2[1];
+	union {
+		__s32 value;
+		__s64 value64;
+		compat_caddr_t string;
+	};
+} __attribute__((packed));
+
+typedef void (*btf_trace_v4l2_dqbuf)(void *, int, struct v4l2_buffer *);
+
+typedef void (*btf_trace_v4l2_qbuf)(void *, int, struct v4l2_buffer *);
+
+typedef void (*btf_trace_vb2_v4l2_buf_done)(void *, struct vb2_queue *, struct vb2_buffer *);
+
+typedef void (*btf_trace_vb2_v4l2_buf_queue)(void *, struct vb2_queue *, struct vb2_buffer *);
+
+typedef void (*btf_trace_vb2_v4l2_dqbuf)(void *, struct vb2_queue *, struct vb2_buffer *);
+
+typedef void (*btf_trace_vb2_v4l2_qbuf)(void *, struct vb2_queue *, struct vb2_buffer *);
+
+struct trace_event_raw_v4l2_event_class {
+	struct trace_entry ent;
+	int minor;
+	u32 index;
+	u32 type;
+	u32 bytesused;
+	u32 flags;
+	u32 field;
+	s64 timestamp;
+	u32 timecode_type;
+	u32 timecode_flags;
+	u8 timecode_frames;
+	u8 timecode_seconds;
+	u8 timecode_minutes;
+	u8 timecode_hours;
+	u8 timecode_userbits0;
+	u8 timecode_userbits1;
+	u8 timecode_userbits2;
+	u8 timecode_userbits3;
+	u32 sequence;
+	char __data[0];
+};
+
+struct trace_event_raw_vb2_v4l2_event_class {
+	struct trace_entry ent;
+	int minor;
+	u32 flags;
+	u32 field;
+	u64 timestamp;
+	u32 timecode_type;
+	u32 timecode_flags;
+	u8 timecode_frames;
+	u8 timecode_seconds;
+	u8 timecode_minutes;
+	u8 timecode_hours;
+	u8 timecode_userbits0;
+	u8 timecode_userbits1;
+	u8 timecode_userbits2;
+	u8 timecode_userbits3;
+	u32 sequence;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_v4l2_event_class {};
+
+struct trace_event_data_offsets_vb2_v4l2_event_class {};
+
+enum v4l2_i2c_tuner_type {
+	ADDRS_RADIO = 0,
+	ADDRS_DEMOD = 1,
+	ADDRS_TV = 2,
+	ADDRS_TV_WITH_DEMOD = 3,
+};
+
+enum rc_filter_type {
+	RC_FILTER_NORMAL = 0,
+	RC_FILTER_WAKEUP = 1,
+	RC_FILTER_MAX = 2,
+};
+
+struct rc_filter_attribute {
+	struct device_attribute attr;
+	enum rc_filter_type type;
+	bool mask;
+};
+
+struct rc_map_list {
+	struct list_head list;
+	struct rc_map map;
+};
+
+struct ir_raw_event {
+	union {
+		u32 duration;
+		u32 carrier;
+	};
+	u8 duty_cycle;
+	unsigned int pulse: 1;
+	unsigned int overflow: 1;
+	unsigned int timeout: 1;
+	unsigned int carrier_report: 1;
+};
+
+struct ir_raw_event_ctrl {
+	struct list_head list;
+	struct task_struct *thread;
+	struct {
+		union {
+			struct __kfifo kfifo;
+			struct ir_raw_event *type;
+			const struct ir_raw_event *const_type;
+			char (*rectype)[0];
+			struct ir_raw_event *ptr;
+			const struct ir_raw_event *ptr_const;
+		};
+		struct ir_raw_event buf[512];
+	} kfifo;
+	ktime_t last_event;
+	struct rc_dev *dev;
+	spinlock_t edge_spinlock;
+	struct timer_list edge_handle;
+	struct ir_raw_event prev_ev;
+	struct ir_raw_event this_ev;
+	u32 bpf_sample;
+	struct bpf_prog_array __attribute__((btf_type_tag("rcu"))) *progs;
+};
+
+struct lirc_scancode {
+	__u64 timestamp;
+	__u16 flags;
+	__u16 rc_proto;
+	__u32 keycode;
+	__u64 scancode;
+};
+
+struct ir_raw_handler {
+	struct list_head list;
+	u64 protocols;
+	int (*decode)(struct rc_dev *, struct ir_raw_event);
+	int (*encode)(enum rc_proto, u32, struct ir_raw_event *, unsigned int);
+	u32 carrier;
+	u32 min_timeout;
+	int (*raw_register)(struct rc_dev *);
+	int (*raw_unregister)(struct rc_dev *);
+};
+
+struct ir_raw_timings_manchester {
+	unsigned int leader_pulse;
+	unsigned int leader_space;
+	unsigned int clock;
+	unsigned int invert: 1;
+	unsigned int trailer_space;
+};
+
+struct ir_raw_timings_pd {
+	unsigned int header_pulse;
+	unsigned int header_space;
+	unsigned int bit_pulse;
+	unsigned int bit_space[2];
+	unsigned int trailer_pulse;
+	unsigned int trailer_space;
+	unsigned int msb_first: 1;
+};
+
+struct ir_raw_timings_pl {
+	unsigned int header_pulse;
+	unsigned int bit_space;
+	unsigned int bit_pulse[2];
+	unsigned int trailer_space;
+	unsigned int msb_first: 1;
+};
+
+struct lirc_fh {
+	struct list_head list;
+	struct rc_dev *rc;
+	int carrier_low;
+	struct {
+		union {
+			struct __kfifo kfifo;
+			unsigned int *type;
+			const unsigned int *const_type;
+			char (*rectype)[0];
+			unsigned int *ptr;
+			const unsigned int *ptr_const;
+		};
+		unsigned int buf[0];
+	} rawir;
+	struct {
+		union {
+			struct __kfifo kfifo;
+			struct lirc_scancode *type;
+			const struct lirc_scancode *const_type;
+			char (*rectype)[0];
+			struct lirc_scancode *ptr;
+			const struct lirc_scancode *ptr_const;
+		};
+		struct lirc_scancode buf[0];
+	} scancodes;
+	wait_queue_head_t wait_poll;
+	u8 send_mode;
+	u8 rec_mode;
+};
+
+typedef u64 (*btf_bpf_rc_repeat)(u32 *);
+
+typedef u64 (*btf_bpf_rc_keydown)(u32 *, u32, u64, u32);
+
+typedef u64 (*btf_bpf_rc_pointer_rel)(u32 *, s32, s32);
+
+struct cec_devnode {
+	struct device dev;
+	struct cdev cdev;
+	int minor;
+	struct mutex lock;
+	bool registered;
+	bool unregistered;
+	struct mutex lock_fhs;
+	struct list_head fhs;
+};
+
+struct cec_log_addrs {
+	__u8 log_addr[4];
+	__u16 log_addr_mask;
+	__u8 cec_version;
+	__u8 num_log_addrs;
+	__u32 vendor_id;
+	__u32 flags;
+	char osd_name[15];
+	__u8 primary_device_type[4];
+	__u8 log_addr_type[4];
+	__u8 all_device_types[4];
+	__u8 features[48];
+};
+
+struct cec_drm_connector_info {
+	__u32 card_no;
+	__u32 connector_id;
+};
+
+struct cec_connector_info {
+	__u32 type;
+	union {
+		struct cec_drm_connector_info drm;
+		__u32 raw[16];
+	};
+};
+
+struct cec_data;
+
+struct cec_adap_ops;
+
+struct cec_fh;
+
+struct cec_notifier;
+
+struct cec_pin;
+
+struct cec_adapter {
+	struct module *owner;
+	char name[32];
+	struct cec_devnode devnode;
+	struct mutex lock;
+	struct rc_dev *rc;
+	struct list_head transmit_queue;
+	unsigned int transmit_queue_sz;
+	struct list_head wait_queue;
+	struct cec_data *transmitting;
+	bool transmit_in_progress;
+	bool transmit_in_progress_aborted;
+	unsigned int xfer_timeout_ms;
+	struct task_struct *kthread_config;
+	struct completion config_completion;
+	struct task_struct *kthread;
+	wait_queue_head_t kthread_waitq;
+	const struct cec_adap_ops *ops;
+	void *priv;
+	u32 capabilities;
+	u8 available_log_addrs;
+	u16 phys_addr;
+	bool needs_hpd;
+	bool is_enabled;
+	bool is_configuring;
+	bool must_reconfigure;
+	bool is_configured;
+	bool cec_pin_is_high;
+	bool adap_controls_phys_addr;
+	u8 last_initiator;
+	u32 monitor_all_cnt;
+	u32 monitor_pin_cnt;
+	u32 follower_cnt;
+	struct cec_fh *cec_follower;
+	struct cec_fh *cec_initiator;
+	bool passthrough;
+	struct cec_log_addrs log_addrs;
+	struct cec_connector_info conn_info;
+	u32 tx_timeouts;
+	struct cec_notifier *notifier;
+	struct cec_pin *pin;
+	struct dentry *cec_dir;
+	u32 sequence;
+	char input_phys[32];
+};
+
+struct cec_msg {
+	__u64 tx_ts;
+	__u64 rx_ts;
+	__u32 len;
+	__u32 timeout;
+	__u32 sequence;
+	__u32 flags;
+	__u8 msg[16];
+	__u8 reply;
+	__u8 rx_status;
+	__u8 tx_status;
+	__u8 tx_arb_lost_cnt;
+	__u8 tx_nack_cnt;
+	__u8 tx_low_drive_cnt;
+	__u8 tx_error_cnt;
+};
+
+struct cec_data {
+	struct list_head list;
+	struct list_head xfer_list;
+	struct cec_adapter *adap;
+	struct cec_msg msg;
+	struct cec_fh *fh;
+	struct delayed_work work;
+	struct completion c;
+	u8 attempts;
+	bool blocking;
+	bool completed;
+};
+
+struct cec_event_state_change {
+	__u16 phys_addr;
+	__u16 log_addr_mask;
+	__u16 have_conn_info;
+};
+
+struct cec_event_lost_msgs {
+	__u32 lost_msgs;
+};
+
+struct cec_event {
+	__u64 ts;
+	__u32 event;
+	__u32 flags;
+	union {
+		struct cec_event_state_change state_change;
+		struct cec_event_lost_msgs lost_msgs;
+		__u32 raw[16];
+	};
+};
+
+struct cec_event_entry {
+	struct list_head list;
+	struct cec_event ev;
+};
+
+struct cec_fh {
+	struct list_head list;
+	struct list_head xfer_list;
+	struct cec_adapter *adap;
+	u8 mode_initiator;
+	u8 mode_follower;
+	wait_queue_head_t wait;
+	struct mutex lock;
+	struct list_head events[8];
+	u16 queued_events[8];
+	unsigned int total_queued_events;
+	struct cec_event_entry core_events[2];
+	struct list_head msgs;
+	unsigned int queued_msgs;
+};
+
+struct cec_adap_ops {
+	int (*adap_enable)(struct cec_adapter *, bool);
+	int (*adap_monitor_all_enable)(struct cec_adapter *, bool);
+	int (*adap_monitor_pin_enable)(struct cec_adapter *, bool);
+	int (*adap_log_addr)(struct cec_adapter *, u8);
+	void (*adap_unconfigured)(struct cec_adapter *);
+	int (*adap_transmit)(struct cec_adapter *, u8, u32, struct cec_msg *);
+	void (*adap_nb_transmit_canceled)(struct cec_adapter *, const struct cec_msg *);
+	void (*adap_status)(struct cec_adapter *, struct seq_file *);
+	void (*adap_free)(struct cec_adapter *);
+	int (*error_inj_show)(struct cec_adapter *, struct seq_file *);
+	bool (*error_inj_parse_line)(struct cec_adapter *, char *);
+	void (*configured)(struct cec_adapter *);
+	int (*received)(struct cec_adapter *, struct cec_msg *);
+};
+
+struct cec_msg_entry {
+	struct list_head list;
+	struct cec_msg msg;
+};
+
+enum cec_pin_state {
+	CEC_ST_OFF = 0,
+	CEC_ST_IDLE = 1,
+	CEC_ST_TX_WAIT = 2,
+	CEC_ST_TX_WAIT_FOR_HIGH = 3,
+	CEC_ST_TX_START_BIT_LOW = 4,
+	CEC_ST_TX_START_BIT_HIGH = 5,
+	CEC_ST_TX_START_BIT_HIGH_SHORT = 6,
+	CEC_ST_TX_START_BIT_HIGH_LONG = 7,
+	CEC_ST_TX_START_BIT_LOW_CUSTOM = 8,
+	CEC_ST_TX_START_BIT_HIGH_CUSTOM = 9,
+	CEC_ST_TX_DATA_BIT_0_LOW = 10,
+	CEC_ST_TX_DATA_BIT_0_HIGH = 11,
+	CEC_ST_TX_DATA_BIT_0_HIGH_SHORT = 12,
+	CEC_ST_TX_DATA_BIT_0_HIGH_LONG = 13,
+	CEC_ST_TX_DATA_BIT_1_LOW = 14,
+	CEC_ST_TX_DATA_BIT_1_HIGH = 15,
+	CEC_ST_TX_DATA_BIT_1_HIGH_SHORT = 16,
+	CEC_ST_TX_DATA_BIT_1_HIGH_LONG = 17,
+	CEC_ST_TX_DATA_BIT_1_HIGH_PRE_SAMPLE = 18,
+	CEC_ST_TX_DATA_BIT_1_HIGH_POST_SAMPLE = 19,
+	CEC_ST_TX_DATA_BIT_1_HIGH_POST_SAMPLE_SHORT = 20,
+	CEC_ST_TX_DATA_BIT_1_HIGH_POST_SAMPLE_LONG = 21,
+	CEC_ST_TX_DATA_BIT_LOW_CUSTOM = 22,
+	CEC_ST_TX_DATA_BIT_HIGH_CUSTOM = 23,
+	CEC_ST_TX_PULSE_LOW_CUSTOM = 24,
+	CEC_ST_TX_PULSE_HIGH_CUSTOM = 25,
+	CEC_ST_TX_LOW_DRIVE = 26,
+	CEC_ST_RX_START_BIT_LOW = 27,
+	CEC_ST_RX_START_BIT_HIGH = 28,
+	CEC_ST_RX_DATA_SAMPLE = 29,
+	CEC_ST_RX_DATA_POST_SAMPLE = 30,
+	CEC_ST_RX_DATA_WAIT_FOR_LOW = 31,
+	CEC_ST_RX_ACK_LOW = 32,
+	CEC_ST_RX_ACK_LOW_POST = 33,
+	CEC_ST_RX_ACK_HIGH_POST = 34,
+	CEC_ST_RX_ACK_FINISH = 35,
+	CEC_ST_RX_LOW_DRIVE = 36,
+	CEC_ST_RX_IRQ = 37,
+	CEC_PIN_STATES = 38,
+};
+
+struct cec_pin_ops;
+
+struct cec_pin {
+	struct cec_adapter *adap;
+	const struct cec_pin_ops *ops;
+	struct task_struct *kthread;
+	wait_queue_head_t kthread_waitq;
+	struct hrtimer timer;
+	ktime_t ts;
+	unsigned int wait_usecs;
+	u16 la_mask;
+	bool monitor_all;
+	bool rx_eom;
+	bool enabled_irq;
+	bool enable_irq_failed;
+	enum cec_pin_state state;
+	struct cec_msg tx_msg;
+	u32 tx_bit;
+	bool tx_nacked;
+	u32 tx_signal_free_time;
+	bool tx_toggle;
+	struct cec_msg rx_msg;
+	u32 rx_bit;
+	bool rx_toggle;
+	u32 rx_start_bit_low_too_short_cnt;
+	u64 rx_start_bit_low_too_short_ts;
+	u32 rx_start_bit_low_too_short_delta;
+	u32 rx_start_bit_too_short_cnt;
+	u64 rx_start_bit_too_short_ts;
+	u32 rx_start_bit_too_short_delta;
+	u32 rx_start_bit_too_long_cnt;
+	u32 rx_data_bit_too_short_cnt;
+	u64 rx_data_bit_too_short_ts;
+	u32 rx_data_bit_too_short_delta;
+	u32 rx_data_bit_too_long_cnt;
+	u32 rx_low_drive_cnt;
+	struct cec_msg work_rx_msg;
+	u8 work_tx_status;
+	ktime_t work_tx_ts;
+	atomic_t work_irq_change;
+	atomic_t work_pin_num_events;
+	unsigned int work_pin_events_wr;
+	unsigned int work_pin_events_rd;
+	ktime_t work_pin_ts[128];
+	u8 work_pin_events[128];
+	bool work_pin_events_dropped;
+	u32 work_pin_events_dropped_cnt;
+	ktime_t timer_ts;
+	u32 timer_cnt;
+	u32 timer_100us_overruns;
+	u32 timer_300us_overruns;
+	u32 timer_max_overrun;
+	u32 timer_sum_overrun;
+	u32 tx_custom_low_usecs;
+	u32 tx_custom_high_usecs;
+	bool tx_ignore_nack_until_eom;
+	bool tx_custom_pulse;
+	bool tx_generated_poll;
+	bool tx_post_eom;
+	u8 tx_extra_bytes;
+	u32 tx_low_drive_cnt;
+};
+
+struct cec_pin_ops {
+	int (*read)(struct cec_adapter *);
+	void (*low)(struct cec_adapter *);
+	void (*high)(struct cec_adapter *);
+	bool (*enable_irq)(struct cec_adapter *);
+	void (*disable_irq)(struct cec_adapter *);
+	void (*free)(struct cec_adapter *);
+	void (*status)(struct cec_adapter *, struct seq_file *);
+	int (*read_hpd)(struct cec_adapter *);
+	int (*read_5v)(struct cec_adapter *);
+	int (*received)(struct cec_adapter *, struct cec_msg *);
+};
+
+struct cec_caps {
+	char driver[32];
+	char name[32];
+	__u32 available_log_addrs;
+	__u32 capabilities;
+	__u32 version;
+};
+
+struct cec_notifier {
+	struct mutex lock;
+	struct list_head head;
+	struct kref kref;
+	struct device *hdmi_dev;
+	struct cec_connector_info conn_info;
+	const char *port_name;
+	struct cec_adapter *cec_adap;
+	u16 phys_addr;
+};
+
+struct cec_state {
+	const char * const name;
+	unsigned int usecs;
+};
+
+enum vb2_memory {
+	VB2_MEMORY_UNKNOWN = 0,
+	VB2_MEMORY_MMAP = 1,
+	VB2_MEMORY_USERPTR = 2,
+	VB2_MEMORY_DMABUF = 4,
+};
+
+struct vb2_fileio_buf {
+	void *vaddr;
+	unsigned int size;
+	unsigned int pos;
+	unsigned int queued: 1;
+};
+
+struct vb2_fileio_data {
+	unsigned int count;
+	unsigned int type;
+	unsigned int memory;
+	struct vb2_fileio_buf bufs[64];
+	unsigned int cur_index;
+	unsigned int initial_index;
+	unsigned int q_count;
+	unsigned int dq_count;
+	unsigned int read_once: 1;
+	unsigned int write_immediately: 1;
+};
+
+typedef int (*vb2_thread_fnc)(struct vb2_buffer *, void *);
+
+struct vb2_threadio_data {
+	struct task_struct *thread;
+	vb2_thread_fnc fnc;
+	void *priv;
+	bool stop;
+};
+
+struct frame_vector {
+	unsigned int nr_allocated;
+	unsigned int nr_frames;
+	bool got_ref;
+	bool is_pfns;
+	void *ptrs[0];
+};
+
+typedef void (*btf_trace_vb2_buf_done)(void *, struct vb2_queue *, struct vb2_buffer *);
+
+typedef void (*btf_trace_vb2_buf_queue)(void *, struct vb2_queue *, struct vb2_buffer *);
+
+typedef void (*btf_trace_vb2_dqbuf)(void *, struct vb2_queue *, struct vb2_buffer *);
+
+typedef void (*btf_trace_vb2_qbuf)(void *, struct vb2_queue *, struct vb2_buffer *);
+
+struct trace_event_raw_vb2_event_class {
+	struct trace_entry ent;
+	void *owner;
+	u32 queued_count;
+	int owned_by_drv_count;
+	u32 index;
+	u32 type;
+	u32 bytesused;
+	u64 timestamp;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_vb2_event_class {};
+
+struct vb2_vmarea_handler {
+	refcount_t *refcount;
+	void (*put)(void *);
+	void *arg;
+};
+
+struct vb2_dc_buf {
+	struct device *dev;
+	void *vaddr;
+	unsigned long size;
+	void *cookie;
+	dma_addr_t dma_addr;
+	unsigned long attrs;
+	enum dma_data_direction dma_dir;
+	struct sg_table *dma_sgt;
+	struct frame_vector *vec;
+	struct vb2_vmarea_handler handler;
+	refcount_t refcount;
+	struct sg_table *sgt_base;
+	struct dma_buf_attachment *db_attach;
+	struct vb2_buffer *vb;
+	bool non_coherent_mem;
+};
+
+struct vb2_dc_attachment {
+	struct sg_table sgt;
+	enum dma_data_direction dma_dir;
+};
+
+struct vb2_dma_sg_buf {
+	struct device *dev;
+	void *vaddr;
+	struct page **pages;
+	struct frame_vector *vec;
+	int offset;
+	enum dma_data_direction dma_dir;
+	struct sg_table sg_table;
+	struct sg_table *dma_sgt;
+	size_t size;
+	unsigned int num_pages;
+	refcount_t refcount;
+	struct vb2_vmarea_handler handler;
+	struct dma_buf_attachment *db_attach;
+	struct vb2_buffer *vb;
+};
+
+struct vb2_dma_sg_attachment {
+	struct sg_table sgt;
+	enum dma_data_direction dma_dir;
+};
+
+struct vb2_vmalloc_buf {
+	void *vaddr;
+	struct frame_vector *vec;
+	enum dma_data_direction dma_dir;
+	unsigned long size;
+	refcount_t refcount;
+	struct vb2_vmarea_handler handler;
+	struct dma_buf *dbuf;
+};
+
+struct vb2_vmalloc_attachment {
+	struct sg_table sgt;
+	enum dma_data_direction dma_dir;
+};
+
+enum gspca_packet_type {
+	DISCARD_PACKET = 0,
+	FIRST_PACKET = 1,
+	INTER_PACKET = 2,
+	LAST_PACKET = 3,
+};
+
+struct gspca_buffer {
+	struct vb2_v4l2_buffer vb;
+	struct list_head list;
+};
+
+struct framerates;
+
+struct cam {
+	const struct v4l2_pix_format *cam_mode;
+	const struct framerates *mode_framerates;
+	u32 bulk_size;
+	u32 input_flags;
+	u8 nmodes;
+	u8 no_urb_create;
+	u8 bulk_nurbs;
+	u8 bulk;
+	u8 npkt;
+	u8 needs_full_bandwidth;
+};
+
+struct sd_desc;
+
+struct gspca_dev {
+	struct video_device vdev;
+	struct module *module;
+	struct v4l2_device v4l2_dev;
+	struct usb_device *dev;
+	struct input_dev *input_dev;
+	char phys[64];
+	struct cam cam;
+	const struct sd_desc *sd_desc;
+	struct v4l2_ctrl_handler ctrl_handler;
+	struct {
+		struct v4l2_ctrl *autogain;
+		struct v4l2_ctrl *exposure;
+		struct v4l2_ctrl *gain;
+		int exp_too_low_cnt;
+		int exp_too_high_cnt;
+	};
+	__u8 *usb_buf;
+	struct urb *urb[4];
+	struct urb *int_urb;
+	u8 *image;
+	u32 image_len;
+	__u8 last_packet_type;
+	__s8 empty_packet;
+	bool streaming;
+	__u8 curr_mode;
+	struct v4l2_pix_format pixfmt;
+	__u32 sequence;
+	struct vb2_queue queue;
+	spinlock_t qlock;
+	struct list_head buf_list;
+	wait_queue_head_t wq;
+	struct mutex usb_lock;
+	int usb_err;
+	u16 pkt_size;
+	char frozen;
+	bool present;
+	char memory;
+	__u8 iface;
+	__u8 alt;
+	int xfer_ep;
+	u8 audio;
+};
+
+struct framerates {
+	const u8 *rates;
+	int nrates;
+};
+
+typedef int (*cam_cf_op)(struct gspca_dev *, const struct usb_device_id *);
+
+typedef int (*cam_op)(struct gspca_dev *);
+
+typedef void (*cam_v_op)(struct gspca_dev *);
+
+typedef void (*cam_pkt_op)(struct gspca_dev *, u8 *, int);
+
+typedef int (*cam_get_jpg_op)(struct gspca_dev *, struct v4l2_jpegcompression *);
+
+typedef int (*cam_set_jpg_op)(struct gspca_dev *, const struct v4l2_jpegcompression *);
+
+typedef void (*cam_streamparm_op)(struct gspca_dev *, struct v4l2_streamparm *);
+
+typedef void (*cam_format_op)(struct gspca_dev *, struct v4l2_format *);
+
+typedef int (*cam_frmsize_op)(struct gspca_dev *, struct v4l2_frmsizeenum *);
+
+typedef int (*cam_int_pkt_op)(struct gspca_dev *, u8 *, int);
+
+struct sd_desc {
+	const char *name;
+	cam_cf_op config;
+	cam_op init;
+	cam_op init_controls;
+	cam_v_op probe_error;
+	cam_op start;
+	cam_pkt_op pkt_scan;
+	cam_op isoc_init;
+	cam_op isoc_nego;
+	cam_v_op stopN;
+	cam_v_op stop0;
+	cam_v_op dq_callback;
+	cam_get_jpg_op get_jcomp;
+	cam_set_jpg_op set_jcomp;
+	cam_streamparm_op get_streamparm;
+	cam_streamparm_op set_streamparm;
+	cam_format_op try_fmt;
+	cam_frmsize_op enum_framesizes;
+	cam_int_pkt_op int_pkt_scan;
+	u8 other_input;
+};
+
+struct ep_tb_s {
+	u32 alt;
+	u32 bandwidth;
+};
+
+struct uvc_driver {
+	struct usb_driver driver;
+};
+
+struct uvc_control_mapping;
+
+struct uvc_device_info {
+	u32 quirks;
+	u32 meta_format;
+	u16 uvc_version;
+	const struct uvc_control_mapping **mappings;
+};
+
+struct uvc_control_mapping {
+	struct list_head list;
+	struct list_head ev_subs;
+	u32 id;
+	char *name;
+	u8 entity[16];
+	u8 selector;
+	u8 size;
+	u8 offset;
+	enum v4l2_ctrl_type v4l2_type;
+	u32 data_type;
+	const u32 *menu_mapping;
+	const char (*menu_names)[32];
+	unsigned long menu_mask;
+	u32 master_id;
+	s32 master_manual;
+	u32 slave_ids[2];
+	s32 (*get)(struct uvc_control_mapping *, u8, const u8 *);
+	void (*set)(struct uvc_control_mapping *, s32, u8 *);
+};
+
+enum uvc_buffer_state___2 {
+	UVC_BUF_STATE_IDLE___2 = 0,
+	UVC_BUF_STATE_QUEUED___2 = 1,
+	UVC_BUF_STATE_ACTIVE___2 = 2,
+	UVC_BUF_STATE_READY = 3,
+	UVC_BUF_STATE_DONE___2 = 4,
+	UVC_BUF_STATE_ERROR___2 = 5,
+};
+
+enum uvc_handle_state {
+	UVC_HANDLE_PASSIVE = 0,
+	UVC_HANDLE_ACTIVE = 1,
+};
+
+struct uvc_device___2;
+
+struct uvc_control;
+
+struct uvc_entity {
+	struct list_head list;
+	struct list_head chain;
+	unsigned int flags;
+	u16 id;
+	u16 type;
+	char name[64];
+	u8 guid[16];
+	struct video_device *vdev;
+	struct v4l2_subdev subdev;
+	unsigned int num_pads;
+	unsigned int num_links;
+	struct media_pad *pads;
+	union {
+		struct {
+			u16 wObjectiveFocalLengthMin;
+			u16 wObjectiveFocalLengthMax;
+			u16 wOcularFocalLength;
+			u8 bControlSize;
+			u8 *bmControls;
+		} camera;
+		struct {
+			u8 bControlSize;
+			u8 *bmControls;
+			u8 bTransportModeSize;
+			u8 *bmTransportModes;
+		} media;
+		struct {} output;
+		struct {
+			u16 wMaxMultiplier;
+			u8 bControlSize;
+			u8 *bmControls;
+			u8 bmVideoStandards;
+		} processing;
+		struct {} selector;
+		struct {
+			u8 bNumControls;
+			u8 bControlSize;
+			u8 *bmControls;
+			u8 *bmControlsType;
+		} extension;
+		struct {
+			u8 bControlSize;
+			u8 *bmControls;
+			struct gpio_desc *gpio_privacy;
+			int irq;
+		} gpio;
+	};
+	u8 bNrInPins;
+	u8 *baSourceID;
+	int (*get_info)(struct uvc_device___2 *, struct uvc_entity *, u8, u8 *);
+	int (*get_cur)(struct uvc_device___2 *, struct uvc_entity *, u8, void *, u16);
+	unsigned int ncontrols;
+	struct uvc_control *controls;
+};
+
+struct uvc_video_chain;
+
+struct uvc_ctrl_work {
+	struct work_struct work;
+	struct urb *urb;
+	struct uvc_video_chain *chain;
+	struct uvc_control *ctrl;
+	const void *data;
+};
+
+struct uvc_status;
+
+struct uvc_device___2 {
+	struct usb_device *udev;
+	struct usb_interface *intf;
+	unsigned long warnings;
+	u32 quirks;
+	int intfnum;
+	char name[32];
+	const struct uvc_device_info *info;
+	struct mutex lock;
+	unsigned int users;
+	atomic_t nmappings;
+	struct media_device mdev;
+	struct v4l2_device vdev;
+	u16 uvc_version;
+	u32 clock_frequency;
+	struct list_head entities;
+	struct list_head chains;
+	struct list_head streams;
+	struct kref ref;
+	struct usb_host_endpoint *int_ep;
+	struct urb *int_urb;
+	struct uvc_status *status;
+	bool flush_status;
+	struct input_dev *input;
+	char input_phys[64];
+	struct uvc_ctrl_work async_ctrl;
+	struct uvc_entity *gpio_unit;
+};
+
+struct uvc_status_control {
+	u8 bSelector;
+	u8 bAttribute;
+	u8 bValue[11];
+};
+
+struct uvc_status_streaming {
+	u8 button;
+};
+
+struct uvc_status {
+	u8 bStatusType;
+	u8 bOriginator;
+	u8 bEvent;
+	union {
+		struct uvc_status_control control;
+		struct uvc_status_streaming streaming;
+	};
+};
+
+struct uvc_video_chain {
+	struct uvc_device___2 *dev;
+	struct list_head list;
+	struct list_head entities;
+	struct uvc_entity *processing;
+	struct uvc_entity *selector;
+	struct mutex ctrl_mutex;
+	struct v4l2_prio_state prio;
+	u32 caps;
+	u8 ctrl_class_bitmap;
+};
+
+struct uvc_control_info {
+	struct list_head mappings;
+	u8 entity[16];
+	u8 index;
+	u8 selector;
+	u16 size;
+	u32 flags;
+};
+
+struct uvc_fh;
+
+struct uvc_control {
+	struct uvc_entity *entity;
+	struct uvc_control_info info;
+	u8 index;
+	u8 dirty: 1;
+	u8 loaded: 1;
+	u8 modified: 1;
+	u8 cached: 1;
+	u8 initialized: 1;
+	u8 *uvc_data;
+	struct uvc_fh *handle;
+};
+
+struct uvc_streaming;
+
+struct uvc_fh {
+	struct v4l2_fh vfh;
+	struct uvc_video_chain *chain;
+	struct uvc_streaming *stream;
+	enum uvc_handle_state state;
+};
+
+struct uvc_video_queue___2 {
+	struct vb2_queue queue;
+	struct mutex mutex;
+	unsigned int flags;
+	unsigned int buf_used;
+	spinlock_t irqlock;
+	struct list_head irqqueue;
+};
+
+struct uvc_stats_frame {
+	unsigned int size;
+	unsigned int first_data;
+	unsigned int nb_packets;
+	unsigned int nb_empty;
+	unsigned int nb_invalid;
+	unsigned int nb_errors;
+	unsigned int nb_pts;
+	unsigned int nb_pts_diffs;
+	unsigned int last_pts_diff;
+	bool has_initial_pts;
+	bool has_early_pts;
+	u32 pts;
+	unsigned int nb_scr;
+	unsigned int nb_scr_diffs;
+	u16 scr_sof;
+	u32 scr_stc;
+};
+
+struct uvc_stats_stream {
+	ktime_t start_ts;
+	ktime_t stop_ts;
+	unsigned int nb_frames;
+	unsigned int nb_packets;
+	unsigned int nb_empty;
+	unsigned int nb_invalid;
+	unsigned int nb_errors;
+	unsigned int nb_pts_constant;
+	unsigned int nb_pts_early;
+	unsigned int nb_pts_initial;
+	unsigned int nb_scr_count_ok;
+	unsigned int nb_scr_diffs_ok;
+	unsigned int scr_sof_count;
+	unsigned int scr_sof;
+	unsigned int min_sof;
+	unsigned int max_sof;
+};
+
+struct uvc_streaming_header {
+	u8 bNumFormats;
+	u8 bEndpointAddress;
+	u8 bTerminalLink;
+	u8 bControlSize;
+	u8 *bmaControls;
+	u8 bmInfo;
+	u8 bStillCaptureMethod;
+	u8 bTriggerSupport;
+	u8 bTriggerUsage;
+};
+
+struct uvc_streaming_control {
+	__u16 bmHint;
+	__u8 bFormatIndex;
+	__u8 bFrameIndex;
+	__u32 dwFrameInterval;
+	__u16 wKeyFrameRate;
+	__u16 wPFrameRate;
+	__u16 wCompQuality;
+	__u16 wCompWindowSize;
+	__u16 wDelay;
+	__u32 dwMaxVideoFrameSize;
+	__u32 dwMaxPayloadTransferSize;
+	__u32 dwClockFrequency;
+	__u8 bmFramingInfo;
+	__u8 bPreferedVersion;
+	__u8 bMinVersion;
+	__u8 bMaxVersion;
+} __attribute__((packed));
+
+struct uvc_buffer___2;
+
+struct uvc_copy_op {
+	struct uvc_buffer___2 *buf;
+	void *dst;
+	const __u8 *src;
+	size_t len;
+};
+
+struct uvc_urb {
+	struct urb *urb;
+	struct uvc_streaming *stream;
+	char *buffer;
+	dma_addr_t dma;
+	struct sg_table *sgt;
+	unsigned int async_operations;
+	struct uvc_copy_op copy_operations[32];
+	struct work_struct work;
+};
+
+struct uvc_clock_sample;
+
+struct uvc_clock {
+	struct uvc_clock_sample *samples;
+	unsigned int head;
+	unsigned int count;
+	unsigned int size;
+	u16 last_sof;
+	u16 sof_offset;
+	u8 last_scr[6];
+	spinlock_t lock;
+};
+
+struct uvc_format;
+
+struct uvc_frame;
+
+struct uvc_streaming {
+	struct list_head list;
+	struct uvc_device___2 *dev;
+	struct video_device vdev;
+	struct uvc_video_chain *chain;
+	atomic_t active;
+	struct usb_interface *intf;
+	int intfnum;
+	u16 maxpsize;
+	struct uvc_streaming_header header;
+	enum v4l2_buf_type type;
+	unsigned int nformats;
+	const struct uvc_format *formats;
+	struct uvc_streaming_control ctrl;
+	const struct uvc_format *def_format;
+	const struct uvc_format *cur_format;
+	const struct uvc_frame *cur_frame;
+	struct mutex mutex;
+	unsigned int frozen: 1;
+	struct uvc_video_queue___2 queue;
+	struct workqueue_struct *async_wq;
+	void (*decode)(struct uvc_urb *, struct uvc_buffer___2 *, struct uvc_buffer___2 *);
+	struct {
+		struct video_device vdev;
+		struct uvc_video_queue___2 queue;
+		u32 format;
+	} meta;
+	struct {
+		u8 header[256];
+		unsigned int header_size;
+		int skip_payload;
+		u32 payload_size;
+		u32 max_payload_size;
+	} bulk;
+	struct uvc_urb uvc_urb[5];
+	unsigned int urb_size;
+	u32 sequence;
+	u8 last_fid;
+	struct dentry *debugfs_dir;
+	struct {
+		struct uvc_stats_frame frame;
+		struct uvc_stats_stream stream;
+	} stats;
+	struct uvc_clock clock;
+};
+
+struct uvc_format {
+	u8 type;
+	u8 index;
+	u8 bpp;
+	enum v4l2_colorspace colorspace;
+	enum v4l2_xfer_func xfer_func;
+	enum v4l2_ycbcr_encoding ycbcr_enc;
+	u32 fcc;
+	u32 flags;
+	unsigned int nframes;
+	const struct uvc_frame *frames;
+};
+
+struct uvc_frame {
+	u8 bFrameIndex;
+	u8 bmCapabilities;
+	u16 wWidth;
+	u16 wHeight;
+	u32 dwMinBitRate;
+	u32 dwMaxBitRate;
+	u32 dwMaxVideoFrameBufferSize;
+	u8 bFrameIntervalType;
+	u32 dwDefaultFrameInterval;
+	const u32 *dwFrameInterval;
+};
+
+struct uvc_buffer___2 {
+	struct vb2_v4l2_buffer buf;
+	struct list_head queue;
+	enum uvc_buffer_state___2 state;
+	unsigned int error;
+	void *mem;
+	unsigned int length;
+	unsigned int bytesused;
+	u32 pts;
+	struct kref ref;
+};
+
+struct uvc_clock_sample {
+	u32 dev_stc;
+	u16 dev_sof;
+	u16 host_sof;
+	ktime_t host_time;
+};
+
+struct uvc_xu_control_query {
+	__u8 unit;
+	__u8 selector;
+	__u8 query;
+	__u16 size;
+	__u8 __attribute__((btf_type_tag("user"))) *data;
+};
+
+struct uvc_menu_info;
+
+struct uvc_xu_control_mapping {
+	__u32 id;
+	__u8 name[32];
+	__u8 entity[16];
+	__u8 selector;
+	__u8 size;
+	__u8 offset;
+	__u32 v4l2_type;
+	__u32 data_type;
+	struct uvc_menu_info __attribute__((btf_type_tag("user"))) *menu_info;
+	__u32 menu_count;
+	__u32 reserved[4];
+};
+
+struct uvc_menu_info {
+	__u32 value;
+	__u8 name[32];
+};
+
+struct uvc_xu_control_mapping32 {
+	u32 id;
+	u8 name[32];
+	u8 entity[16];
+	u8 selector;
+	u8 size;
+	u8 offset;
+	u32 v4l2_type;
+	u32 data_type;
+	compat_caddr_t menu_info;
+	u32 menu_count;
+	u32 reserved[4];
+};
+
+struct uvc_xu_control_query32 {
+	u8 unit;
+	u8 selector;
+	u8 query;
+	u16 size;
+	compat_caddr_t data;
+};
+
+struct uvc_meta_buf {
+	__u64 ns;
+	__u16 sof;
+	__u8 length;
+	__u8 flags;
+	__u8 buf[0];
+} __attribute__((packed));
+
+struct uvc_ctrl_fixup {
+	struct usb_device_id id;
+	u8 entity;
+	u8 selector;
+	u8 flags;
+};
+
+struct uvc_ctrl_blacklist {
+	struct usb_device_id id;
+	u8 index;
+};
+
+struct uvc_debugfs_buffer {
+	size_t count;
+	char data[1024];
+};
+
+enum thermal_device_mode {
+	THERMAL_DEVICE_DISABLED = 0,
+	THERMAL_DEVICE_ENABLED = 1,
+};
+
+enum thermal_trend {
+	THERMAL_TREND_STABLE = 0,
+	THERMAL_TREND_RAISING = 1,
+	THERMAL_TREND_DROPPING = 2,
+};
+
+struct thermal_trip;
+
+struct thermal_zone_device_ops {
+	int (*bind)(struct thermal_zone_device *, struct thermal_cooling_device *);
+	int (*unbind)(struct thermal_zone_device *, struct thermal_cooling_device *);
+	int (*get_temp)(struct thermal_zone_device *, int *);
+	int (*set_trips)(struct thermal_zone_device *, int, int);
+	int (*change_mode)(struct thermal_zone_device *, enum thermal_device_mode);
+	int (*set_trip_temp)(struct thermal_zone_device *, int, int);
+	int (*set_trip_hyst)(struct thermal_zone_device *, int, int);
+	int (*get_crit_temp)(struct thermal_zone_device *, int *);
+	int (*set_emul_temp)(struct thermal_zone_device *, int);
+	int (*get_trend)(struct thermal_zone_device *, const struct thermal_trip *, enum thermal_trend *);
+	void (*hot)(struct thermal_zone_device *);
+	void (*critical)(struct thermal_zone_device *);
+	u64 android_kabi_reserved1;
+};
+
+enum thermal_notify_event {
+	THERMAL_EVENT_UNSPECIFIED = 0,
+	THERMAL_EVENT_TEMP_SAMPLE = 1,
+	THERMAL_TRIP_VIOLATED = 2,
+	THERMAL_TRIP_CHANGED = 3,
+	THERMAL_DEVICE_DOWN = 4,
+	THERMAL_DEVICE_UP = 5,
+	THERMAL_DEVICE_POWER_CAPABILITY_CHANGED = 6,
+	THERMAL_TABLE_CHANGED = 7,
+	THERMAL_EVENT_KEEP_ALIVE = 8,
+};
+
+struct thermal_attr;
+
+struct thermal_zone_params;
+
+struct thermal_governor;
+
+struct thermal_zone_device {
+	int id;
+	char type[20];
+	struct device device;
+	struct attribute_group trips_attribute_group;
+	struct thermal_attr *trip_temp_attrs;
+	struct thermal_attr *trip_type_attrs;
+	struct thermal_attr *trip_hyst_attrs;
+	enum thermal_device_mode mode;
+	void *devdata;
+	struct thermal_trip *trips;
+	int num_trips;
+	unsigned long trips_disabled;
+	unsigned long passive_delay_jiffies;
+	unsigned long polling_delay_jiffies;
+	int temperature;
+	int last_temperature;
+	int emul_temperature;
+	int passive;
+	int prev_low_trip;
+	int prev_high_trip;
+	atomic_t need_update;
+	struct thermal_zone_device_ops *ops;
+	struct thermal_zone_params *tzp;
+	struct thermal_governor *governor;
+	void *governor_data;
+	struct list_head thermal_instances;
+	struct ida ida;
+	struct mutex lock;
+	struct list_head node;
+	struct delayed_work poll_queue;
+	enum thermal_notify_event notify_event;
+	bool suspended;
+	u64 android_kabi_reserved1;
+};
+
+enum thermal_trip_type {
+	THERMAL_TRIP_ACTIVE = 0,
+	THERMAL_TRIP_PASSIVE = 1,
+	THERMAL_TRIP_HOT = 2,
+	THERMAL_TRIP_CRITICAL = 3,
+};
+
+struct thermal_trip {
+	int temperature;
+	int hysteresis;
+	enum thermal_trip_type type;
+	void *priv;
+};
+
+struct thermal_zone_params {
+	char governor_name[20];
+	bool no_hwmon;
+	u32 sustainable_power;
+	s32 k_po;
+	s32 k_pu;
+	s32 k_i;
+	s32 k_d;
+	s32 integral_cutoff;
+	int slope;
+	int offset;
+	u64 android_kabi_reserved1;
+};
+
+struct thermal_governor {
+	char name[20];
+	int (*bind_to_tz)(struct thermal_zone_device *);
+	void (*unbind_from_tz)(struct thermal_zone_device *);
+	int (*throttle)(struct thermal_zone_device *, int);
+	struct list_head governor_list;
+	u64 android_kabi_reserved1;
+};
+
+enum {
+	POWER_SUPPLY_TECHNOLOGY_UNKNOWN = 0,
+	POWER_SUPPLY_TECHNOLOGY_NiMH = 1,
+	POWER_SUPPLY_TECHNOLOGY_LION = 2,
+	POWER_SUPPLY_TECHNOLOGY_LIPO = 3,
+	POWER_SUPPLY_TECHNOLOGY_LiFe = 4,
+	POWER_SUPPLY_TECHNOLOGY_NiCd = 5,
+	POWER_SUPPLY_TECHNOLOGY_LiMn = 6,
+};
+
+enum power_supply_notifier_events {
+	PSY_EVENT_PROP_CHANGED = 0,
+};
+
+struct match_device_node_array_param {
+	struct device_node *parent_of_node;
+	struct power_supply **psy;
+	ssize_t psy_size;
+	ssize_t psy_count;
+};
+
+struct psy_am_i_supplied_data {
+	struct power_supply *psy;
+	unsigned int count;
+};
+
+struct psy_get_supplier_prop_data {
+	struct power_supply *psy;
+	enum power_supply_property psp;
+	union power_supply_propval *val;
+};
+
+struct power_supply_attr {
+	const char *prop_name;
+	char attr_name[31];
+	struct device_attribute dev_attr;
+	const char * const *text_values;
+	int text_values_len;
+};
+
+enum power_supply_charge_behaviour {
+	POWER_SUPPLY_CHARGE_BEHAVIOUR_AUTO = 0,
+	POWER_SUPPLY_CHARGE_BEHAVIOUR_INHIBIT_CHARGE = 1,
+	POWER_SUPPLY_CHARGE_BEHAVIOUR_FORCE_DISCHARGE = 2,
+};
+
+enum {
+	POWER_SUPPLY_STATUS_UNKNOWN = 0,
+	POWER_SUPPLY_STATUS_CHARGING = 1,
+	POWER_SUPPLY_STATUS_DISCHARGING = 2,
+	POWER_SUPPLY_STATUS_NOT_CHARGING = 3,
+	POWER_SUPPLY_STATUS_FULL = 4,
+};
+
+typedef void (*btf_trace_thermal_temperature)(void *, struct thermal_zone_device *);
+
+struct thermal_attr {
+	struct device_attribute attr;
+	char name[20];
+};
+
+typedef void (*btf_trace_cdev_update)(void *, struct thermal_cooling_device *, unsigned long);
+
+typedef void (*btf_trace_thermal_zone_trip)(void *, struct thermal_zone_device *, int, enum thermal_trip_type);
+
+typedef void (*btf_trace_thermal_power_cpu_get_power_simple)(void *, int, u32);
+
+typedef void (*btf_trace_thermal_power_cpu_limit)(void *, const struct cpumask *, unsigned int, unsigned long, u32);
+
+struct devfreq_dev_status;
+
+typedef void (*btf_trace_thermal_power_devfreq_get_power)(void *, struct thermal_cooling_device *, struct devfreq_dev_status *, unsigned long, u32);
+
+struct devfreq_dev_status {
+	unsigned long total_time;
+	unsigned long busy_time;
+	unsigned long current_frequency;
+	void *private_data;
+};
+
+typedef void (*btf_trace_thermal_power_devfreq_limit)(void *, struct thermal_cooling_device *, unsigned long, unsigned long, u32);
+
+struct thermal_instance {
+	int id;
+	char name[20];
+	struct thermal_zone_device *tz;
+	struct thermal_cooling_device *cdev;
+	const struct thermal_trip *trip;
+	bool initialized;
+	unsigned long upper;
+	unsigned long lower;
+	unsigned long target;
+	char attr_name[20];
+	struct device_attribute attr;
+	char weight_attr_name[20];
+	struct device_attribute weight_attr;
+	struct list_head tz_node;
+	struct list_head cdev_node;
+	unsigned int weight;
+	bool upper_no_limit;
+};
+
+struct trace_event_raw_thermal_temperature {
+	struct trace_entry ent;
+	u32 __data_loc_thermal_zone;
+	int id;
+	int temp_prev;
+	int temp;
+	char __data[0];
+};
+
+struct trace_event_raw_cdev_update {
+	struct trace_entry ent;
+	u32 __data_loc_type;
+	unsigned long target;
+	char __data[0];
+};
+
+struct trace_event_raw_thermal_zone_trip {
+	struct trace_entry ent;
+	u32 __data_loc_thermal_zone;
+	int id;
+	int trip;
+	enum thermal_trip_type trip_type;
+	char __data[0];
+};
+
+struct trace_event_raw_thermal_power_cpu_get_power_simple {
+	struct trace_entry ent;
+	int cpu;
+	u32 power;
+	char __data[0];
+};
+
+struct trace_event_raw_thermal_power_cpu_limit {
+	struct trace_entry ent;
+	u32 __data_loc_cpumask;
+	unsigned int freq;
+	unsigned long cdev_state;
+	u32 power;
+	char __data[0];
+};
+
+struct trace_event_raw_thermal_power_devfreq_get_power {
+	struct trace_entry ent;
+	u32 __data_loc_type;
+	unsigned long freq;
+	u32 busy_time;
+	u32 total_time;
+	u32 power;
+	char __data[0];
+};
+
+struct trace_event_raw_thermal_power_devfreq_limit {
+	struct trace_entry ent;
+	u32 __data_loc_type;
+	unsigned int freq;
+	unsigned long cdev_state;
+	u32 power;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_thermal_temperature {
+	u32 thermal_zone;
+};
+
+struct trace_event_data_offsets_cdev_update {
+	u32 type;
+};
+
+struct trace_event_data_offsets_thermal_zone_trip {
+	u32 thermal_zone;
+};
+
+struct trace_event_data_offsets_thermal_power_cpu_limit {
+	u32 cpumask;
+};
+
+struct trace_event_data_offsets_thermal_power_devfreq_get_power {
+	u32 type;
+};
+
+struct trace_event_data_offsets_thermal_power_devfreq_limit {
+	u32 type;
+};
+
+struct trace_event_data_offsets_thermal_power_cpu_get_power_simple {};
+
+struct cooling_dev_stats {
+	spinlock_t lock;
+	unsigned int total_trans;
+	unsigned long state;
+	ktime_t last_time;
+	ktime_t *time_in_state;
+	unsigned int *trans_table;
+};
+
+struct param;
+
+typedef int (*cb_t)(struct param *);
+
+struct thermal_genl_cpu_caps;
+
+struct param {
+	struct nlattr **attrs;
+	struct sk_buff *msg;
+	const char *name;
+	int tz_id;
+	int cdev_id;
+	int trip_id;
+	int trip_temp;
+	int trip_type;
+	int trip_hyst;
+	int temp;
+	int cdev_state;
+	int cdev_max_state;
+	struct thermal_genl_cpu_caps *cpu_capabilities;
+	int cpu_capabilities_count;
+};
+
+struct thermal_genl_cpu_caps {
+	int cpu;
+	int performance;
+	int efficiency;
+};
+
+enum thermal_genl_sampling {
+	THERMAL_GENL_SAMPLING_TEMP = 0,
+	__THERMAL_GENL_SAMPLING_MAX = 1,
+};
+
+enum thermal_genl_attr {
+	THERMAL_GENL_ATTR_UNSPEC = 0,
+	THERMAL_GENL_ATTR_TZ = 1,
+	THERMAL_GENL_ATTR_TZ_ID = 2,
+	THERMAL_GENL_ATTR_TZ_TEMP = 3,
+	THERMAL_GENL_ATTR_TZ_TRIP = 4,
+	THERMAL_GENL_ATTR_TZ_TRIP_ID = 5,
+	THERMAL_GENL_ATTR_TZ_TRIP_TYPE = 6,
+	THERMAL_GENL_ATTR_TZ_TRIP_TEMP = 7,
+	THERMAL_GENL_ATTR_TZ_TRIP_HYST = 8,
+	THERMAL_GENL_ATTR_TZ_MODE = 9,
+	THERMAL_GENL_ATTR_TZ_NAME = 10,
+	THERMAL_GENL_ATTR_TZ_CDEV_WEIGHT = 11,
+	THERMAL_GENL_ATTR_TZ_GOV = 12,
+	THERMAL_GENL_ATTR_TZ_GOV_NAME = 13,
+	THERMAL_GENL_ATTR_CDEV = 14,
+	THERMAL_GENL_ATTR_CDEV_ID = 15,
+	THERMAL_GENL_ATTR_CDEV_CUR_STATE = 16,
+	THERMAL_GENL_ATTR_CDEV_MAX_STATE = 17,
+	THERMAL_GENL_ATTR_CDEV_NAME = 18,
+	THERMAL_GENL_ATTR_GOV_NAME = 19,
+	THERMAL_GENL_ATTR_CPU_CAPABILITY = 20,
+	THERMAL_GENL_ATTR_CPU_CAPABILITY_ID = 21,
+	THERMAL_GENL_ATTR_CPU_CAPABILITY_PERFORMANCE = 22,
+	THERMAL_GENL_ATTR_CPU_CAPABILITY_EFFICIENCY = 23,
+	__THERMAL_GENL_ATTR_MAX = 24,
+};
+
+enum thermal_genl_event {
+	THERMAL_GENL_EVENT_UNSPEC = 0,
+	THERMAL_GENL_EVENT_TZ_CREATE = 1,
+	THERMAL_GENL_EVENT_TZ_DELETE = 2,
+	THERMAL_GENL_EVENT_TZ_DISABLE = 3,
+	THERMAL_GENL_EVENT_TZ_ENABLE = 4,
+	THERMAL_GENL_EVENT_TZ_TRIP_UP = 5,
+	THERMAL_GENL_EVENT_TZ_TRIP_DOWN = 6,
+	THERMAL_GENL_EVENT_TZ_TRIP_CHANGE = 7,
+	THERMAL_GENL_EVENT_TZ_TRIP_ADD = 8,
+	THERMAL_GENL_EVENT_TZ_TRIP_DELETE = 9,
+	THERMAL_GENL_EVENT_CDEV_ADD = 10,
+	THERMAL_GENL_EVENT_CDEV_DELETE = 11,
+	THERMAL_GENL_EVENT_CDEV_STATE_UPDATE = 12,
+	THERMAL_GENL_EVENT_TZ_GOV_CHANGE = 13,
+	THERMAL_GENL_EVENT_CPU_CAPABILITY_CHANGE = 14,
+	__THERMAL_GENL_EVENT_MAX = 15,
+};
+
+struct cpufreq_cooling_device {
+	u32 last_load;
+	unsigned int cpufreq_state;
+	unsigned int max_level;
+	struct em_perf_domain *em;
+	struct cpufreq_policy *policy;
+	struct thermal_cooling_device_ops cooling_ops;
+	struct freq_qos_request qos_req;
+};
+
+struct idle_inject_device;
+
+struct cpuidle_cooling_device {
+	struct idle_inject_device *ii_dev;
+	unsigned long state;
+};
+
+enum devfreq_timer {
+	DEVFREQ_TIMER_DEFERRABLE = 0,
+	DEVFREQ_TIMER_DELAYED = 1,
+	DEVFREQ_TIMER_NUM = 2,
+};
+
+struct devfreq;
+
+struct devfreq_cooling_power;
+
+struct devfreq_cooling_device {
+	struct thermal_cooling_device *cdev;
+	struct thermal_cooling_device_ops cooling_ops;
+	struct devfreq *devfreq;
+	unsigned long cooling_state;
+	u32 *freq_table;
+	size_t max_state;
+	struct devfreq_cooling_power *power_ops;
+	u32 res_util;
+	int capped_state;
+	struct dev_pm_qos_request req_max_freq;
+	struct em_perf_domain *em_pd;
+};
+
+struct devfreq_stats {
+	unsigned int total_trans;
+	unsigned int *trans_table;
+	u64 *time_in_state;
+	u64 last_update;
+};
+
+struct devfreq_dev_profile;
+
+struct devfreq_governor;
+
+struct opp_table;
+
+struct devfreq {
+	struct list_head node;
+	struct mutex lock;
+	struct device dev;
+	struct devfreq_dev_profile *profile;
+	const struct devfreq_governor *governor;
+	struct opp_table *opp_table;
+	struct notifier_block nb;
+	struct delayed_work work;
+	unsigned long *freq_table;
+	unsigned int max_state;
+	unsigned long previous_freq;
+	struct devfreq_dev_status last_status;
+	void *data;
+	void *governor_data;
+	struct dev_pm_qos_request user_min_freq_req;
+	struct dev_pm_qos_request user_max_freq_req;
+	unsigned long scaling_min_freq;
+	unsigned long scaling_max_freq;
+	bool stop_polling;
+	unsigned long suspend_freq;
+	unsigned long resume_freq;
+	atomic_t suspend_count;
+	struct devfreq_stats stats;
+	struct srcu_notifier_head transition_notifier_list;
+	struct thermal_cooling_device *cdev;
+	struct notifier_block nb_min;
+	struct notifier_block nb_max;
+};
+
+struct devfreq_dev_profile {
+	unsigned long initial_freq;
+	unsigned int polling_ms;
+	enum devfreq_timer timer;
+	int (*target)(struct device *, unsigned long *, u32);
+	int (*get_dev_status)(struct device *, struct devfreq_dev_status *);
+	int (*get_cur_freq)(struct device *, unsigned long *);
+	void (*exit)(struct device *);
+	unsigned long *freq_table;
+	unsigned int max_state;
+	bool is_cooling_device;
+};
+
+struct devfreq_governor {
+	struct list_head node;
+	const char name[16];
+	const u64 attrs;
+	const u64 flags;
+	int (*get_target_freq)(struct devfreq *, unsigned long *);
+	int (*event_handler)(struct devfreq *, unsigned int, void *);
+};
+
+struct devfreq_cooling_power {
+	int (*get_real_power)(struct devfreq *, u32 *, unsigned long, unsigned long);
+};
+
+struct _thermal_state {
+	u64 next_check;
+	u64 last_interrupt_time;
+	struct delayed_work therm_work;
+	unsigned long count;
+	unsigned long last_count;
+	unsigned long max_time_ms;
+	unsigned long total_time_ms;
+	bool rate_control_active;
+	bool new_event;
+	u8 level;
+	u8 sample_index;
+	u8 sample_count;
+	u8 average;
+	u8 baseline_temp;
+	u8 temp_samples[3];
+};
+
+struct thermal_state {
+	struct _thermal_state core_throttle;
+	struct _thermal_state core_power_limit;
+	struct _thermal_state package_throttle;
+	struct _thermal_state package_power_limit;
+	struct _thermal_state core_thresh0;
+	struct _thermal_state core_thresh1;
+	struct _thermal_state pkg_thresh0;
+	struct _thermal_state pkg_thresh1;
+};
+
+struct watchdog_device;
+
+typedef void (*btf_trace_watchdog_start)(void *, struct watchdog_device *, int);
+
+struct watchdog_info;
+
+struct watchdog_ops;
+
+struct watchdog_governor;
+
+struct watchdog_core_data;
+
+struct watchdog_device {
+	int id;
+	struct device *parent;
+	const struct attribute_group **groups;
+	const struct watchdog_info *info;
+	const struct watchdog_ops *ops;
+	const struct watchdog_governor *gov;
+	unsigned int bootstatus;
+	unsigned int timeout;
+	unsigned int pretimeout;
+	unsigned int min_timeout;
+	unsigned int max_timeout;
+	unsigned int min_hw_heartbeat_ms;
+	unsigned int max_hw_heartbeat_ms;
+	struct notifier_block reboot_nb;
+	struct notifier_block restart_nb;
+	struct notifier_block pm_nb;
+	void *driver_data;
+	struct watchdog_core_data *wd_data;
+	unsigned long status;
+	struct list_head deferred;
+};
+
+struct watchdog_info {
+	__u32 options;
+	__u32 firmware_version;
+	__u8 identity[32];
+};
+
+struct watchdog_ops {
+	struct module *owner;
+	int (*start)(struct watchdog_device *);
+	int (*stop)(struct watchdog_device *);
+	int (*ping)(struct watchdog_device *);
+	unsigned int (*status)(struct watchdog_device *);
+	int (*set_timeout)(struct watchdog_device *, unsigned int);
+	int (*set_pretimeout)(struct watchdog_device *, unsigned int);
+	unsigned int (*get_timeleft)(struct watchdog_device *);
+	int (*restart)(struct watchdog_device *, unsigned long, void *);
+	long (*ioctl)(struct watchdog_device *, unsigned int, unsigned long);
+};
+
+struct watchdog_governor {
+	const char name[20];
+	void (*pretimeout)(struct watchdog_device *);
+};
+
+struct watchdog_core_data {
+	struct device dev;
+	struct cdev cdev;
+	struct watchdog_device *wdd;
+	struct mutex lock;
+	ktime_t last_keepalive;
+	ktime_t last_hw_keepalive;
+	ktime_t open_deadline;
+	struct hrtimer timer;
+	struct kthread_work work;
+	unsigned long status;
+};
+
+typedef void (*btf_trace_watchdog_ping)(void *, struct watchdog_device *, int);
+
+typedef void (*btf_trace_watchdog_stop)(void *, struct watchdog_device *, int);
+
+typedef void (*btf_trace_watchdog_set_timeout)(void *, struct watchdog_device *, unsigned int, int);
+
+struct trace_event_raw_watchdog_template {
+	struct trace_entry ent;
+	int id;
+	int err;
+	char __data[0];
+};
+
+struct trace_event_raw_watchdog_set_timeout {
+	struct trace_entry ent;
+	int id;
+	unsigned int timeout;
+	int err;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_watchdog_template {};
+
+struct trace_event_data_offsets_watchdog_set_timeout {};
+
+enum dm_uevent_type {
+	DM_UEVENT_PATH_FAILED = 0,
+	DM_UEVENT_PATH_REINSTATED = 1,
+};
+
+struct mapped_device;
+
+struct dm_uevent {
+	struct mapped_device *md;
+	enum kobject_action action;
+	struct kobj_uevent_env ku_env;
+	struct list_head elist;
+	char name[128];
+	char uuid[129];
+};
+
+struct dm_table;
+
+struct target_type;
+
+struct dm_target {
+	struct dm_table *table;
+	struct target_type *type;
+	sector_t begin;
+	sector_t len;
+	uint32_t max_io_len;
+	unsigned int num_flush_bios;
+	unsigned int num_discard_bios;
+	unsigned int num_secure_erase_bios;
+	unsigned int num_write_zeroes_bios;
+	unsigned int per_io_data_size;
+	void *private;
+	char *error;
+	bool flush_supported: 1;
+	bool discards_supported: 1;
+	bool max_discard_granularity: 1;
+	bool max_secure_erase_granularity: 1;
+	bool max_write_zeroes_granularity: 1;
+	bool limit_swap_bios: 1;
+	bool emulate_zone_append: 1;
+	bool accounts_remapped_io: 1;
+	bool needs_bio_set_dev: 1;
+	bool flush_bypasses_map: 1;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+typedef int (*dm_ctr_fn)(struct dm_target *, unsigned int, char **);
+
+typedef void (*dm_dtr_fn)(struct dm_target *);
+
+typedef int (*dm_map_fn)(struct dm_target *, struct bio *);
+
+union map_info___2;
+
+typedef int (*dm_clone_and_map_request_fn)(struct dm_target *, struct request *, union map_info___2 *, struct request **);
+
+typedef void (*dm_release_clone_request_fn)(struct request *, union map_info___2 *);
+
+typedef int (*dm_endio_fn)(struct dm_target *, struct bio *, blk_status_t *);
+
+typedef int (*dm_request_endio_fn)(struct dm_target *, struct request *, blk_status_t, union map_info___2 *);
+
+typedef void (*dm_presuspend_fn)(struct dm_target *);
+
+typedef void (*dm_presuspend_undo_fn)(struct dm_target *);
+
+typedef void (*dm_postsuspend_fn)(struct dm_target *);
+
+typedef int (*dm_preresume_fn)(struct dm_target *);
+
+typedef void (*dm_resume_fn)(struct dm_target *);
+
+typedef enum {
+	STATUSTYPE_INFO = 0,
+	STATUSTYPE_TABLE = 1,
+	STATUSTYPE_IMA = 2,
+} status_type_t;
+
+typedef void (*dm_status_fn)(struct dm_target *, status_type_t, unsigned int, char *, unsigned int);
+
+typedef int (*dm_message_fn)(struct dm_target *, unsigned int, char **, char *, unsigned int);
+
+typedef int (*dm_prepare_ioctl_fn)(struct dm_target *, struct block_device **);
+
+struct dm_report_zones_args;
+
+typedef int (*dm_report_zones_fn)(struct dm_target *, struct dm_report_zones_args *, unsigned int);
+
+typedef int (*dm_busy_fn)(struct dm_target *);
+
+struct dm_dev;
+
+typedef int (*iterate_devices_callout_fn)(struct dm_target *, struct dm_dev *, sector_t, sector_t, void *);
+
+typedef int (*dm_iterate_devices_fn)(struct dm_target *, iterate_devices_callout_fn, void *);
+
+typedef void (*dm_io_hints_fn)(struct dm_target *, struct queue_limits *);
+
+typedef long (*dm_dax_direct_access_fn)(struct dm_target *, unsigned long, long, enum dax_access_mode, void **, pfn_t *);
+
+typedef int (*dm_dax_zero_page_range_fn)(struct dm_target *, unsigned long, size_t);
+
+typedef size_t (*dm_dax_recovery_write_fn)(struct dm_target *, unsigned long, void *, size_t, struct iov_iter *);
+
+struct target_type {
+	uint64_t features;
+	const char *name;
+	struct module *module;
+	unsigned int version[3];
+	dm_ctr_fn ctr;
+	dm_dtr_fn dtr;
+	dm_map_fn map;
+	dm_clone_and_map_request_fn clone_and_map_rq;
+	dm_release_clone_request_fn release_clone_rq;
+	dm_endio_fn end_io;
+	dm_request_endio_fn rq_end_io;
+	dm_presuspend_fn presuspend;
+	dm_presuspend_undo_fn presuspend_undo;
+	dm_postsuspend_fn postsuspend;
+	dm_preresume_fn preresume;
+	dm_resume_fn resume;
+	dm_status_fn status;
+	dm_message_fn message;
+	dm_prepare_ioctl_fn prepare_ioctl;
+	dm_report_zones_fn report_zones;
+	dm_busy_fn busy;
+	dm_iterate_devices_fn iterate_devices;
+	dm_io_hints_fn io_hints;
+	dm_dax_direct_access_fn direct_access;
+	dm_dax_zero_page_range_fn dax_zero_page_range;
+	dm_dax_recovery_write_fn dax_recovery_write;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	struct list_head list;
+};
+
+union map_info___2 {
+	void *ptr;
+};
+
+struct dm_report_zones_args {
+	struct dm_target *tgt;
+	sector_t next_sector;
+	void *orig_data;
+	report_zones_cb orig_cb;
+	unsigned int zone_idx;
+	sector_t start;
+};
+
+struct dm_dev {
+	struct block_device *bdev;
+	struct dax_device *dax_dev;
+	blk_mode_t mode;
+	char name[16];
+};
+
+enum dm_queue_mode {
+	DM_TYPE_NONE = 0,
+	DM_TYPE_BIO_BASED = 1,
+	DM_TYPE_REQUEST_BASED = 2,
+	DM_TYPE_DAX_BIO_BASED = 3,
+};
+
+struct dm_stats_last_position;
+
+struct dm_stats {
+	struct mutex mutex;
+	struct list_head list;
+	struct dm_stats_last_position __attribute__((btf_type_tag("percpu"))) *last;
+	bool precise_timestamps;
+};
+
+struct dm_kobject_holder {
+	struct kobject kobj;
+	struct completion completion;
+};
+
+struct dm_io;
+
+struct dm_md_mempools;
+
+struct mapped_device {
+	struct mutex suspend_lock;
+	struct mutex table_devices_lock;
+	struct list_head table_devices;
+	void __attribute__((btf_type_tag("rcu"))) *map;
+	unsigned long flags;
+	struct mutex type_lock;
+	enum dm_queue_mode type;
+	int numa_node_id;
+	struct request_queue *queue;
+	atomic_t holders;
+	atomic_t open_count;
+	struct dm_target *immutable_target;
+	struct target_type *immutable_target_type;
+	char name[16];
+	struct gendisk *disk;
+	struct dax_device *dax_dev;
+	wait_queue_head_t wait;
+	unsigned long __attribute__((btf_type_tag("percpu"))) *pending_io;
+	struct hd_geometry geometry;
+	struct workqueue_struct *wq;
+	struct work_struct work;
+	spinlock_t deferred_lock;
+	struct bio_list deferred;
+	struct work_struct requeue_work;
+	struct dm_io *requeue_list;
+	void *interface_ptr;
+	wait_queue_head_t eventq;
+	atomic_t event_nr;
+	atomic_t uevent_seq;
+	struct list_head uevent_list;
+	spinlock_t uevent_lock;
+	bool init_tio_pdu: 1;
+	struct blk_mq_tag_set *tag_set;
+	struct dm_stats stats;
+	unsigned int internal_suspend_count;
+	int swap_bios;
+	struct semaphore swap_bios_semaphore;
+	struct mutex swap_bios_lock;
+	struct dm_md_mempools *mempools;
+	struct dm_kobject_holder kobj_holder;
+	struct srcu_struct io_barrier;
+	unsigned int nr_zones;
+	unsigned int *zwp_offset;
+};
+
+struct dm_table {
+	struct mapped_device *md;
+	enum dm_queue_mode type;
+	unsigned int depth;
+	unsigned int counts[16];
+	sector_t *index[16];
+	unsigned int num_targets;
+	unsigned int num_allocated;
+	sector_t *highs;
+	struct dm_target *targets;
+	struct target_type *immutable_target_type;
+	bool integrity_supported: 1;
+	bool singleton: 1;
+	bool integrity_added: 1;
+	bool flush_bypasses_map: 1;
+	blk_mode_t mode;
+	struct list_head devices;
+	struct rw_semaphore devices_lock;
+	void (*event_fn)(void *);
+	void *event_context;
+	struct dm_md_mempools *mempools;
+	struct blk_crypto_profile *crypto_profile;
+};
+
+struct dm_md_mempools {
+	struct bio_set bs;
+	struct bio_set io_bs;
+};
+
+typedef u16 blk_short_t;
+
+struct dm_stats_aux {
+	bool merged;
+	unsigned long long duration_ns;
+};
+
+struct dm_target_io {
+	unsigned short magic;
+	blk_short_t flags;
+	unsigned int target_bio_nr;
+	struct dm_io *io;
+	struct dm_target *ti;
+	unsigned int *len_ptr;
+	sector_t old_sector;
+	struct bio clone;
+};
+
+struct dm_io {
+	unsigned short magic;
+	blk_short_t flags;
+	spinlock_t lock;
+	unsigned long start_time;
+	void *data;
+	struct dm_io *next;
+	struct dm_stats_aux stats_aux;
+	blk_status_t status;
+	atomic_t io_count;
+	struct mapped_device *md;
+	struct bio *orig_bio;
+	unsigned int sector_offset;
+	unsigned int sectors;
+	struct dm_target_io tio;
+};
+
+struct dm_stats_last_position {
+	sector_t last_sector;
+	unsigned int last_rw;
+};
+
+struct orig_bio_details {
+	enum req_op op;
+	unsigned int nr_sectors;
+};
+
+enum {
+	DM_TIO_INSIDE_DM_IO = 0,
+	DM_TIO_IS_DUPLICATE_BIO = 1,
+};
+
+enum {
+	DM_IO_ACCOUNTED = 0,
+	DM_IO_WAS_SPLIT = 1,
+	DM_IO_BLK_STAT = 2,
+};
+
+struct table_device {
+	struct list_head list;
+	refcount_t count;
+	struct dm_dev dm_dev;
+};
+
+struct dm_dev_internal {
+	struct list_head list;
+	refcount_t count;
+	struct dm_dev *dm_dev;
+};
+
+struct clone_info {
+	struct dm_table *map;
+	struct bio *bio;
+	struct dm_io *io;
+	sector_t sector;
+	unsigned int sector_count;
+	bool is_abnormal_io: 1;
+	bool submit_as_polled: 1;
+};
+
+struct dm_pr {
+	u64 old_key;
+	u64 new_key;
+	u32 flags;
+	bool abort;
+	bool fail_early;
+	int ret;
+	enum pr_type type;
+	struct pr_keys *read_keys;
+	struct pr_held_reservation *rsv;
+};
+
+enum suspend_mode {
+	PRESUSPEND = 0,
+	PRESUSPEND_UNDO = 1,
+	POSTSUSPEND = 2,
+};
+
+struct dm_crypto_profile {
+	struct blk_crypto_profile profile;
+	struct mapped_device *md;
+};
+
+struct dm_arg_set {
+	unsigned int argc;
+	char **argv;
+};
+
+struct dm_arg {
+	unsigned int min;
+	unsigned int max;
+	char *error;
+};
+
+struct dm_derive_sw_secret_args {
+	const u8 *eph_key;
+	size_t eph_key_size;
+	u8 *sw_secret;
+	int err;
+};
+
+struct linear_c {
+	struct dm_dev *dev;
+	sector_t start;
+};
+
+struct stripe {
+	struct dm_dev *dev;
+	sector_t physical_start;
+	atomic_t error_count;
+};
+
+struct stripe_c {
+	uint32_t stripes;
+	int stripes_shift;
+	sector_t stripe_width;
+	uint32_t chunk_size;
+	int chunk_size_shift;
+	struct dm_target *ti;
+	struct work_struct trigger_event;
+	struct stripe stripe[0];
+};
+
+struct dm_ioctl;
+
+typedef int (*ioctl_fn___2)(struct file *, struct dm_ioctl *, size_t);
+
+struct dm_ioctl {
+	__u32 version[3];
+	__u32 data_size;
+	__u32 data_start;
+	__u32 target_count;
+	__s32 open_count;
+	__u32 flags;
+	__u32 event_nr;
+	__u32 padding;
+	__u64 dev;
+	char name[128];
+	char uuid[129];
+	char data[7];
+};
+
+enum {
+	DM_VERSION_CMD = 0,
+	DM_REMOVE_ALL_CMD = 1,
+	DM_LIST_DEVICES_CMD = 2,
+	DM_DEV_CREATE_CMD = 3,
+	DM_DEV_REMOVE_CMD = 4,
+	DM_DEV_RENAME_CMD = 5,
+	DM_DEV_SUSPEND_CMD = 6,
+	DM_DEV_STATUS_CMD = 7,
+	DM_DEV_WAIT_CMD = 8,
+	DM_TABLE_LOAD_CMD = 9,
+	DM_TABLE_CLEAR_CMD = 10,
+	DM_TABLE_DEPS_CMD = 11,
+	DM_TABLE_STATUS_CMD = 12,
+	DM_LIST_VERSIONS_CMD = 13,
+	DM_TARGET_MSG_CMD = 14,
+	DM_DEV_SET_GEOMETRY_CMD = 15,
+	DM_DEV_ARM_POLL_CMD = 16,
+	DM_GET_TARGET_VERSION_CMD = 17,
+};
+
+struct hash_cell {
+	struct rb_node name_node;
+	struct rb_node uuid_node;
+	bool name_set;
+	bool uuid_set;
+	char *name;
+	char *uuid;
+	struct mapped_device *md;
+	struct dm_table *new_map;
+};
+
+struct dm_target_spec {
+	__u64 sector_start;
+	__u64 length;
+	__s32 status;
+	__u32 next;
+	char target_type[16];
+};
+
+struct dm_target_msg {
+	__u64 sector;
+	char message[0];
+};
+
+struct dm_target_deps {
+	__u32 count;
+	__u32 padding;
+	__u64 dev[0];
+};
+
+struct dm_target_versions;
+
+struct vers_iter {
+	size_t param_size;
+	struct dm_target_versions *vers;
+	struct dm_target_versions *old_vers;
+	char *end;
+	uint32_t flags;
+};
+
+struct dm_target_versions {
+	__u32 next;
+	__u32 version[3];
+	char name[0];
+};
+
+struct dm_file {
+	volatile unsigned int global_event_nr;
+};
+
+struct dm_name_list {
+	__u64 dev;
+	__u32 next;
+	char name[0];
+};
+
+enum dm_io_mem_type {
+	DM_IO_PAGE_LIST = 0,
+	DM_IO_BIO = 1,
+	DM_IO_VMA = 2,
+	DM_IO_KMEM = 3,
+};
+
+struct page_list;
+
+struct dm_io_memory {
+	enum dm_io_mem_type type;
+	unsigned int offset;
+	union {
+		struct page_list *pl;
+		struct bio *bio;
+		void *vma;
+		void *addr;
+	} ptr;
+};
+
+typedef void (*io_notify_fn)(unsigned long, void *);
+
+struct dm_io_notify {
+	io_notify_fn fn;
+	void *context;
+};
+
+struct dm_io_client;
+
+struct dm_io_request {
+	blk_opf_t bi_opf;
+	struct dm_io_memory mem;
+	struct dm_io_notify notify;
+	struct dm_io_client *client;
+};
+
+struct page_list {
+	struct page_list *next;
+	struct page *page;
+};
+
+struct dm_io_client {
+	mempool_t pool;
+	struct bio_set bios;
+};
+
+struct dpages {
+	void (*get_page)(struct dpages *, struct page **, unsigned long *, unsigned int *);
+	void (*next_page)(struct dpages *);
+	union {
+		unsigned int context_u;
+		struct bvec_iter context_bi;
+	};
+	void *context_ptr;
+	void *vma_invalidate_address;
+	unsigned long vma_invalidate_size;
+};
+
+struct dm_io_region {
+	struct block_device *bdev;
+	sector_t sector;
+	sector_t count;
+};
+
+struct io {
+	unsigned long error_bits;
+	atomic_t count;
+	struct dm_io_client *client;
+	io_notify_fn callback;
+	void *context;
+	void *vma_invalidate_address;
+	unsigned long vma_invalidate_size;
+	long: 64;
+};
+
+struct sync_io {
+	unsigned long error_bits;
+	struct completion wait;
+};
+
+struct dm_kcopyd_throttle;
+
+struct dm_kcopyd_client {
+	struct page_list *pages;
+	unsigned int nr_reserved_pages;
+	unsigned int nr_free_pages;
+	unsigned int sub_job_size;
+	struct dm_io_client *io_client;
+	wait_queue_head_t destroyq;
+	mempool_t job_pool;
+	struct workqueue_struct *kcopyd_wq;
+	struct work_struct kcopyd_work;
+	struct dm_kcopyd_throttle *throttle;
+	atomic_t nr_jobs;
+	spinlock_t job_lock;
+	struct list_head callback_jobs;
+	struct list_head complete_jobs;
+	struct list_head io_jobs;
+	struct list_head pages_jobs;
+};
+
+struct dm_kcopyd_throttle {
+	unsigned int throttle;
+	unsigned int num_io_jobs;
+	unsigned int io_period;
+	unsigned int total_period;
+	unsigned int last_jiffies;
+};
+
+typedef void (*dm_kcopyd_notify_fn)(int, unsigned long, void *);
+
+struct kcopyd_job {
+	struct dm_kcopyd_client *kc;
+	struct list_head list;
+	unsigned int flags;
+	int read_err;
+	unsigned long write_err;
+	enum req_op op;
+	struct dm_io_region source;
+	unsigned int num_dests;
+	struct dm_io_region dests[8];
+	struct page_list *pages;
+	dm_kcopyd_notify_fn fn;
+	void *context;
+	struct mutex lock;
+	atomic_t sub_jobs;
+	sector_t progress;
+	sector_t write_offset;
+	struct kcopyd_job *master_job;
+};
+
+struct dm_sysfs_attr {
+	struct attribute attr;
+	ssize_t (*show)(struct mapped_device *, char *);
+	ssize_t (*store)(struct mapped_device *, const char *, size_t);
+};
+
+struct dm_stat_percpu {
+	unsigned long long sectors[2];
+	unsigned long long ios[2];
+	unsigned long long merges[2];
+	unsigned long long ticks[2];
+	unsigned long long io_ticks[2];
+	unsigned long long io_ticks_total;
+	unsigned long long time_in_queue;
+	unsigned long long *histogram;
+};
+
+struct dm_stat_shared {
+	atomic_t in_flight[2];
+	unsigned long long stamp;
+	struct dm_stat_percpu tmp;
+};
+
+struct dm_stat {
+	struct list_head list_entry;
+	int id;
+	unsigned int stat_flags;
+	size_t n_entries;
+	sector_t start;
+	sector_t end;
+	sector_t step;
+	unsigned int n_histogram_entries;
+	unsigned long long *histogram_boundaries;
+	const char *program_id;
+	const char *aux_data;
+	struct callback_head callback_head;
+	size_t shared_alloc_size;
+	size_t percpu_alloc_size;
+	size_t histogram_alloc_size;
+	struct dm_stat_percpu *stat_percpu[32];
+	struct dm_stat_shared stat_shared[0];
+};
+
+struct dm_rq_target_io;
+
+struct dm_rq_clone_bio_info {
+	struct bio *orig;
+	struct dm_rq_target_io *tio;
+	struct bio clone;
+};
+
+struct dm_rq_target_io {
+	struct mapped_device *md;
+	struct dm_target *ti;
+	struct request *orig;
+	struct request *clone;
+	struct kthread_work work;
+	blk_status_t error;
+	union map_info___2 info;
+	struct dm_stats_aux stats_aux;
+	unsigned long duration_jiffies;
+	unsigned int n_sectors;
+	unsigned int completed;
+};
+
+enum new_flag {
+	NF_FRESH = 0,
+	NF_READ = 1,
+	NF_GET = 2,
+	NF_PREFETCH = 3,
+};
+
+enum evict_result {
+	ER_EVICT = 0,
+	ER_DONT_EVICT = 1,
+	ER_STOP = 2,
+};
+
+enum data_mode {
+	DATA_MODE_SLAB = 0,
+	DATA_MODE_GET_FREE_PAGES = 1,
+	DATA_MODE_VMALLOC = 2,
+	DATA_MODE_LIMIT = 3,
+};
+
+enum it_action {
+	IT_NEXT = 0,
+	IT_COMPLETE = 1,
+};
+
+struct lru_entry {
+	struct list_head list;
+	atomic_t referenced;
+};
+
+struct dm_bufio_client;
+
+struct dm_buffer {
+	struct rb_node node;
+	sector_t block;
+	void *data;
+	unsigned char data_mode;
+	atomic_t hold_count;
+	unsigned long last_accessed;
+	unsigned long state;
+	struct lru_entry lru;
+	unsigned char list_mode;
+	blk_status_t read_error;
+	blk_status_t write_error;
+	unsigned int dirty_start;
+	unsigned int dirty_end;
+	unsigned int write_start;
+	unsigned int write_end;
+	struct list_head write_list;
+	struct dm_bufio_client *c;
+	void (*end_io)(struct dm_buffer *, blk_status_t);
+};
+
+struct lru {
+	struct list_head *cursor;
+	unsigned long count;
+	struct list_head iterators;
+};
+
+struct buffer_tree {
+	union {
+		struct rw_semaphore lock;
+		rwlock_t spinlock;
+	} u;
+	struct rb_root root;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct dm_buffer_cache {
+	struct lru lru[2];
+	unsigned int num_locks;
+	bool no_sleep;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct buffer_tree trees[0];
+};
+
+struct dm_bufio_client {
+	struct block_device *bdev;
+	unsigned int block_size;
+	s8 sectors_per_block_bits;
+	bool no_sleep;
+	struct mutex lock;
+	spinlock_t spinlock;
+	int async_write_error;
+	void (*alloc_callback)(struct dm_buffer *);
+	void (*write_callback)(struct dm_buffer *);
+	struct kmem_cache *slab_buffer;
+	struct kmem_cache *slab_cache;
+	struct dm_io_client *dm_io;
+	struct list_head reserved_buffers;
+	unsigned int need_reserved_buffers;
+	unsigned int minimum_buffers;
+	sector_t start;
+	struct shrinker shrinker;
+	struct work_struct shrink_work;
+	atomic_long_t need_shrink;
+	wait_queue_head_t free_buffer_wait;
+	struct list_head client_list;
+	unsigned long oldest_buffer;
+	long: 64;
+	struct dm_buffer_cache cache;
+};
+
+struct lru_iter {
+	struct lru *lru;
+	struct list_head list;
+	struct lru_entry *stop;
+	struct lru_entry *e;
+};
+
+typedef enum evict_result (*b_predicate)(struct dm_buffer *, void *);
+
+struct lock_history {
+	struct dm_buffer_cache *cache;
+	bool write;
+	unsigned int previous;
+	unsigned int no_previous;
+};
+
+struct evict_wrapper {
+	struct lock_history *lh;
+	b_predicate pred;
+	void *context;
+};
+
+typedef bool (*iter_predicate)(struct lru_entry *, void *);
+
+typedef void (*b_release)(struct dm_buffer *);
+
+typedef enum it_action (*iter_fn)(struct dm_buffer *, void *);
+
+struct evict_params {
+	gfp_t gfp;
+	unsigned long age_hz;
+	unsigned long last_accessed;
+};
+
+struct write_context {
+	int no_wait;
+	struct list_head *write_list;
+};
+
+typedef enum evict_result (*le_predicate)(struct lru_entry *, void *);
+
+struct crypt_config;
+
+struct dm_crypt_request;
+
+struct crypt_iv_operations {
+	int (*ctr)(struct crypt_config *, struct dm_target *, const char *);
+	void (*dtr)(struct crypt_config *);
+	int (*init)(struct crypt_config *);
+	int (*wipe)(struct crypt_config *);
+	int (*generator)(struct crypt_config *, u8 *, struct dm_crypt_request *);
+	int (*post)(struct crypt_config *, u8 *, struct dm_crypt_request *);
+};
+
+struct iv_benbi_private {
+	int shift;
+};
+
+struct iv_lmk_private {
+	struct crypto_shash *hash_tfm;
+	u8 *seed;
+};
+
+struct iv_tcw_private {
+	struct crypto_shash *crc32_tfm;
+	u8 *iv_seed;
+	u8 *whitening;
+};
+
+struct iv_elephant_private {
+	struct crypto_skcipher *tfm;
+};
+
+struct crypt_config {
+	struct dm_dev *dev;
+	sector_t start;
+	struct percpu_counter n_allocated_pages;
+	struct workqueue_struct *io_queue;
+	struct workqueue_struct *crypt_queue;
+	spinlock_t write_thread_lock;
+	struct task_struct *write_thread;
+	struct rb_root write_tree;
+	char *cipher_string;
+	char *cipher_auth;
+	char *key_string;
+	const struct crypt_iv_operations *iv_gen_ops;
+	union {
+		struct iv_benbi_private benbi;
+		struct iv_lmk_private lmk;
+		struct iv_tcw_private tcw;
+		struct iv_elephant_private elephant;
+	} iv_gen_private;
+	u64 iv_offset;
+	unsigned int iv_size;
+	unsigned short sector_size;
+	unsigned char sector_shift;
+	union {
+		struct crypto_skcipher **tfms;
+		struct crypto_aead **tfms_aead;
+	} cipher_tfm;
+	unsigned int tfms_count;
+	unsigned long cipher_flags;
+	unsigned int dmreq_start;
+	unsigned int per_bio_data_size;
+	unsigned long flags;
+	unsigned int key_size;
+	unsigned int key_parts;
+	unsigned int key_extra_size;
+	unsigned int key_mac_size;
+	unsigned int integrity_tag_size;
+	unsigned int integrity_iv_size;
+	unsigned int on_disk_tag_size;
+	unsigned int tag_pool_max_sectors;
+	mempool_t tag_pool;
+	mempool_t req_pool;
+	mempool_t page_pool;
+	struct bio_set bs;
+	struct mutex bio_alloc_lock;
+	u8 *authenc_key;
+	u8 key[0];
+};
+
+struct convert_context;
+
+struct dm_crypt_request {
+	struct convert_context *ctx;
+	struct scatterlist sg_in[4];
+	struct scatterlist sg_out[4];
+	u64 iv_sector;
+};
+
+struct convert_context {
+	struct completion restart;
+	struct bio *bio_in;
+	struct bvec_iter iter_in;
+	struct bio *bio_out;
+	struct bvec_iter iter_out;
+	atomic_t cc_pending;
+	u64 cc_sector;
+	union {
+		struct skcipher_request *req;
+		struct aead_request *req_aead;
+	} r;
+	bool aead_recheck;
+	bool aead_failed;
+};
+
+enum flags {
+	DM_CRYPT_SUSPENDED = 0,
+	DM_CRYPT_KEY_VALID = 1,
+	DM_CRYPT_SAME_CPU = 2,
+	DM_CRYPT_NO_OFFLOAD = 3,
+	DM_CRYPT_NO_READ_WORKQUEUE = 4,
+	DM_CRYPT_NO_WRITE_WORKQUEUE = 5,
+	DM_CRYPT_WRITE_INLINE = 6,
+};
+
+enum cipher_flags {
+	CRYPT_MODE_INTEGRITY_AEAD = 0,
+	CRYPT_IV_LARGE_SECTORS = 1,
+	CRYPT_ENCRYPT_PREPROCESS = 2,
+};
+
+struct dm_crypt_io {
+	struct crypt_config *cc;
+	struct bio *base_bio;
+	u8 *integrity_metadata;
+	bool integrity_metadata_from_pool: 1;
+	struct work_struct work;
+	struct convert_context ctx;
+	atomic_t io_pending;
+	blk_status_t error;
+	sector_t sector;
+	struct bvec_iter saved_bi_iter;
+	struct rb_node rb_node;
+};
+
+struct dm_default_key_cipher {
+	const char *name;
+	enum blk_crypto_mode_num mode_num;
+	int key_size;
+};
+
+struct default_key_c {
+	struct dm_dev *dev;
+	sector_t start;
+	const char *cipher_string;
+	u64 iv_offset;
+	unsigned int sector_size;
+	unsigned int sector_bits;
+	struct blk_crypto_key key;
+	enum blk_crypto_key_type key_type;
+	u64 max_dun;
+};
+
+struct dm_exception_table {
+	uint32_t hash_mask;
+	unsigned int hash_shift;
+	struct hlist_bl_head *table;
+};
+
+typedef sector_t chunk_t;
+
+struct dm_exception_store;
+
+struct dm_snapshot {
+	struct rw_semaphore lock;
+	struct dm_dev *origin;
+	struct dm_dev *cow;
+	struct dm_target *ti;
+	struct list_head list;
+	int valid;
+	int snapshot_overflowed;
+	int active;
+	atomic_t pending_exceptions_count;
+	spinlock_t pe_allocation_lock;
+	sector_t exception_start_sequence;
+	sector_t exception_complete_sequence;
+	struct rb_root out_of_order_tree;
+	mempool_t pending_pool;
+	struct dm_exception_table pending;
+	struct dm_exception_table complete;
+	spinlock_t pe_lock;
+	spinlock_t tracked_chunk_lock;
+	struct hlist_head tracked_chunk_hash[16];
+	struct dm_exception_store *store;
+	unsigned int in_progress;
+	struct wait_queue_head in_progress_wait;
+	struct dm_kcopyd_client *kcopyd_client;
+	unsigned long state_bits;
+	chunk_t first_merging_chunk;
+	int num_merging_chunks;
+	bool merge_failed: 1;
+	bool discard_zeroes_cow: 1;
+	bool discard_passdown_origin: 1;
+	struct bio_list bios_queued_during_merge;
+};
+
+struct dm_exception_store_type;
+
+struct dm_exception_store {
+	struct dm_exception_store_type *type;
+	struct dm_snapshot *snap;
+	unsigned int chunk_size;
+	unsigned int chunk_mask;
+	unsigned int chunk_shift;
+	void *context;
+	bool userspace_supports_overflow;
+};
+
+struct dm_exception;
+
+struct dm_exception_store_type {
+	const char *name;
+	struct module *module;
+	int (*ctr)(struct dm_exception_store *, char *);
+	void (*dtr)(struct dm_exception_store *);
+	int (*read_metadata)(struct dm_exception_store *, int (*)(void *, chunk_t, chunk_t), void *);
+	int (*prepare_exception)(struct dm_exception_store *, struct dm_exception *);
+	void (*commit_exception)(struct dm_exception_store *, struct dm_exception *, int, void (*)(void *, int), void *);
+	int (*prepare_merge)(struct dm_exception_store *, chunk_t *, chunk_t *);
+	int (*commit_merge)(struct dm_exception_store *, int);
+	void (*drop_snapshot)(struct dm_exception_store *);
+	unsigned int (*status)(struct dm_exception_store *, status_type_t, char *, unsigned int);
+	void (*usage)(struct dm_exception_store *, sector_t *, sector_t *, sector_t *);
+	struct list_head list;
+};
+
+struct dm_exception {
+	struct hlist_bl_node hash_list;
+	chunk_t old_chunk;
+	chunk_t new_chunk;
+};
+
+struct origin {
+	struct block_device *bdev;
+	struct list_head hash_list;
+	struct list_head snapshots;
+};
+
+struct dm_snap_pending_exception {
+	struct dm_exception e;
+	struct bio_list origin_bios;
+	struct bio_list snapshot_bios;
+	struct dm_snapshot *snap;
+	int started;
+	int copy_error;
+	sector_t exception_sequence;
+	struct rb_node out_of_order_node;
+	struct bio *full_bio;
+	bio_end_io_t *full_bio_end_io;
+};
+
+struct dm_snap_tracked_chunk {
+	struct hlist_node node;
+	chunk_t chunk;
+};
+
+struct dm_origin {
+	struct dm_dev *dev;
+	struct dm_target *ti;
+	unsigned int split_boundary;
+	struct list_head hash_list;
+};
+
+struct dm_exception_table_lock {
+	struct hlist_bl_head *complete_slot;
+	struct hlist_bl_head *pending_slot;
+};
+
+struct transient_c {
+	sector_t next_free;
+};
+
+struct mdata_req {
+	struct dm_io_region *where;
+	struct dm_io_request *io_req;
+	struct work_struct work;
+	int result;
+};
+
+struct disk_exception {
+	__le64 old_chunk;
+	__le64 new_chunk;
+};
+
+struct commit_callback;
+
+struct pstore {
+	struct dm_exception_store *store;
+	int version;
+	int valid;
+	uint32_t exceptions_per_area;
+	void *area;
+	void *zero_area;
+	void *header_area;
+	chunk_t current_area;
+	chunk_t next_free;
+	uint32_t current_committed;
+	atomic_t pending_count;
+	uint32_t callback_count;
+	struct commit_callback *callbacks;
+	struct dm_io_client *io_client;
+	struct workqueue_struct *metadata_wq;
+};
+
+struct commit_callback {
+	void (*callback)(void *, int);
+	void *context;
+};
+
+struct disk_header {
+	__le32 magic;
+	__le32 valid;
+	__le32 version;
+	__le32 chunk_size;
+};
+
+struct core_exception {
+	uint64_t old_chunk;
+	uint64_t new_chunk;
+};
+
+enum verity_mode {
+	DM_VERITY_MODE_EIO = 0,
+	DM_VERITY_MODE_LOGGING = 1,
+	DM_VERITY_MODE_RESTART = 2,
+	DM_VERITY_MODE_PANIC = 3,
+};
+
+enum verity_block_type {
+	DM_VERITY_BLOCK_TYPE_DATA = 0,
+	DM_VERITY_BLOCK_TYPE_METADATA = 1,
+};
+
+struct dm_verity_fec_io {
+	struct rs_control *rs;
+	int erasures[253];
+	u8 *bufs[256];
+	unsigned int nbufs;
+	u8 *output;
+	unsigned int level;
+};
+
+struct dm_verity_fec;
+
+struct dm_verity {
+	struct dm_dev *data_dev;
+	struct dm_dev *hash_dev;
+	struct dm_target *ti;
+	struct dm_bufio_client *bufio;
+	char *alg_name;
+	struct crypto_ahash *ahash_tfm;
+	struct crypto_shash *shash_tfm;
+	u8 *root_digest;
+	u8 *salt;
+	u8 *initial_hashstate;
+	u8 *zero_digest;
+	unsigned int salt_size;
+	sector_t data_start;
+	sector_t hash_start;
+	sector_t data_blocks;
+	sector_t hash_blocks;
+	unsigned char data_dev_block_bits;
+	unsigned char hash_dev_block_bits;
+	unsigned char hash_per_block_bits;
+	unsigned char levels;
+	unsigned char version;
+	bool hash_failed: 1;
+	bool use_tasklet: 1;
+	unsigned char mb_max_msgs;
+	unsigned int digest_size;
+	unsigned int hash_reqsize;
+	enum verity_mode mode;
+	unsigned int corrupted_errs;
+	struct workqueue_struct *verify_wq;
+	sector_t hash_level_block[63];
+	struct dm_verity_fec *fec;
+	unsigned long *validated_blocks;
+	char *signature_key_desc;
+	struct dm_io_client *io;
+	mempool_t recheck_pool;
+};
+
+struct dm_verity_fec {
+	struct dm_dev *dev;
+	struct dm_bufio_client *data_bufio;
+	struct dm_bufio_client *bufio;
+	size_t io_size;
+	sector_t start;
+	sector_t blocks;
+	sector_t rounds;
+	sector_t hash_blocks;
+	unsigned char roots;
+	unsigned char rsn;
+	mempool_t rs_pool;
+	mempool_t prealloc_pool;
+	mempool_t extra_pool;
+	mempool_t output_pool;
+	struct kmem_cache *cache;
+};
+
+struct pending_block {
+	void *data;
+	sector_t blkno;
+	u8 want_digest[64];
+	u8 real_digest[64];
+};
+
+struct dm_verity_io {
+	struct dm_verity *v;
+	bio_end_io_t *orig_bi_end_io;
+	struct bvec_iter iter;
+	sector_t block;
+	unsigned int n_blocks;
+	bool in_tasklet;
+	struct work_struct work;
+	u8 tmp_digest[64];
+	int num_pending;
+	struct pending_block pending_blocks[2];
+};
+
+struct dm_verity_prefetch_work {
+	struct work_struct work;
+	struct dm_verity *v;
+	unsigned short ioprio;
+	sector_t block;
+	unsigned int n_blocks;
+};
+
+struct buffer_aux {
+	int hash_verified;
+};
+
+struct dm_verity_sig_opts {
+	unsigned int sig_size;
+	u8 *sig;
+};
+
+struct dm_user_message {
+	__u64 seq;
+	__u64 type;
+	__u64 flags;
+	__u64 sector;
+	__u64 len;
+	__u8 buf[0];
+};
+
+struct target;
+
+struct message {
+	struct dm_user_message msg;
+	struct bio *bio;
+	size_t posn_to_user;
+	size_t total_to_user;
+	size_t posn_from_user;
+	size_t total_from_user;
+	struct list_head from_user;
+	struct list_head to_user;
+	u64 return_type;
+	u64 return_flags;
+	struct delayed_work work;
+	bool delayed;
+	struct target *t;
+};
+
+struct target {
+	struct mutex lock;
+	struct wait_queue_head wq;
+	mempool_t message_pool;
+	u64 next_seq_to_map;
+	u64 next_seq_to_user;
+	struct list_head to_user;
+	struct miscdevice miscdev;
+	struct kref references;
+	int dm_destroyed;
+	bool daemon_terminated;
+};
+
+struct channel {
+	struct target *target;
+	struct mutex lock;
+	struct message *cur_to_user;
+	struct message *cur_from_user;
+	ssize_t to_user_error;
+	ssize_t from_user_error;
+	struct list_head from_user;
+	struct message scratch_message_from_user;
+};
+
+enum scrub_type {
+	SCRUB_UNKNOWN = 0,
+	SCRUB_NONE = 1,
+	SCRUB_SW_PROG = 2,
+	SCRUB_SW_SRC = 3,
+	SCRUB_SW_PROG_SRC = 4,
+	SCRUB_SW_TUNABLE = 5,
+	SCRUB_HW_PROG = 6,
+	SCRUB_HW_SRC = 7,
+	SCRUB_HW_PROG_SRC = 8,
+	SCRUB_HW_TUNABLE = 9,
+};
+
+enum edac_mc_layer_type {
+	EDAC_MC_LAYER_BRANCH = 0,
+	EDAC_MC_LAYER_CHANNEL = 1,
+	EDAC_MC_LAYER_SLOT = 2,
+	EDAC_MC_LAYER_CHIP_SELECT = 3,
+	EDAC_MC_LAYER_ALL_MEM = 4,
+};
+
+enum hw_event_mc_err_type {
+	HW_EVENT_ERR_CORRECTED = 0,
+	HW_EVENT_ERR_UNCORRECTED = 1,
+	HW_EVENT_ERR_DEFERRED = 2,
+	HW_EVENT_ERR_FATAL = 3,
+	HW_EVENT_ERR_INFO = 4,
+};
+
+enum dev_type {
+	DEV_UNKNOWN = 0,
+	DEV_X1 = 1,
+	DEV_X2 = 2,
+	DEV_X4 = 3,
+	DEV_X8 = 4,
+	DEV_X16 = 5,
+	DEV_X32 = 6,
+	DEV_X64 = 7,
+};
+
+enum mem_type___2 {
+	MEM_EMPTY = 0,
+	MEM_RESERVED = 1,
+	MEM_UNKNOWN = 2,
+	MEM_FPM = 3,
+	MEM_EDO = 4,
+	MEM_BEDO = 5,
+	MEM_SDR = 6,
+	MEM_RDR = 7,
+	MEM_DDR = 8,
+	MEM_RDDR = 9,
+	MEM_RMBS = 10,
+	MEM_DDR2 = 11,
+	MEM_FB_DDR2 = 12,
+	MEM_RDDR2 = 13,
+	MEM_XDR = 14,
+	MEM_DDR3 = 15,
+	MEM_RDDR3 = 16,
+	MEM_LRDDR3 = 17,
+	MEM_LPDDR3 = 18,
+	MEM_DDR4 = 19,
+	MEM_RDDR4 = 20,
+	MEM_LRDDR4 = 21,
+	MEM_LPDDR4 = 22,
+	MEM_DDR5 = 23,
+	MEM_RDDR5 = 24,
+	MEM_LRDDR5 = 25,
+	MEM_NVDIMM = 26,
+	MEM_WIO2 = 27,
+	MEM_HBM2 = 28,
+};
+
+enum edac_type {
+	EDAC_UNKNOWN = 0,
+	EDAC_NONE = 1,
+	EDAC_RESERVED = 2,
+	EDAC_PARITY = 3,
+	EDAC_EC = 4,
+	EDAC_SECDED = 5,
+	EDAC_S2ECD2ED = 6,
+	EDAC_S4ECD4ED = 7,
+	EDAC_S8ECD8ED = 8,
+	EDAC_S16ECD16ED = 9,
+};
+
+struct mcidev_sysfs_attribute;
+
+struct edac_raw_error_desc {
+	char location[256];
+	char label[296];
+	long grain;
+	u16 error_count;
+	enum hw_event_mc_err_type type;
+	int top_layer;
+	int mid_layer;
+	int low_layer;
+	unsigned long page_frame_number;
+	unsigned long offset_in_page;
+	unsigned long syndrome;
+	const char *msg;
+	const char *other_detail;
+};
+
+struct csrow_info;
+
+struct edac_mc_layer;
+
+struct dimm_info;
+
+struct mem_ctl_info {
+	struct device dev;
+	struct bus_type *bus;
+	struct list_head link;
+	struct module *owner;
+	unsigned long mtype_cap;
+	unsigned long edac_ctl_cap;
+	unsigned long edac_cap;
+	unsigned long scrub_cap;
+	enum scrub_type scrub_mode;
+	int (*set_sdram_scrub_rate)(struct mem_ctl_info *, u32);
+	int (*get_sdram_scrub_rate)(struct mem_ctl_info *);
+	void (*edac_check)(struct mem_ctl_info *);
+	unsigned long (*ctl_page_to_phys)(struct mem_ctl_info *, unsigned long);
+	int mc_idx;
+	struct csrow_info **csrows;
+	unsigned int nr_csrows;
+	unsigned int num_cschannel;
+	unsigned int n_layers;
+	struct edac_mc_layer *layers;
+	bool csbased;
+	unsigned int tot_dimms;
+	struct dimm_info **dimms;
+	struct device *pdev;
+	const char *mod_name;
+	const char *ctl_name;
+	const char *dev_name;
+	void *pvt_info;
+	unsigned long start_time;
+	u32 ce_noinfo_count;
+	u32 ue_noinfo_count;
+	u32 ue_mc;
+	u32 ce_mc;
+	struct completion complete;
+	const struct mcidev_sysfs_attribute *mc_driver_sysfs_attributes;
+	struct delayed_work work;
+	struct edac_raw_error_desc error_desc;
+	int op_state;
+	struct dentry *debugfs;
+	u8 fake_inject_layer[3];
+	bool fake_inject_ue;
+	u16 fake_inject_count;
+};
+
+struct rank_info;
+
+struct csrow_info {
+	struct device dev;
+	unsigned long first_page;
+	unsigned long last_page;
+	unsigned long page_mask;
+	int csrow_idx;
+	u32 ue_count;
+	u32 ce_count;
+	struct mem_ctl_info *mci;
+	u32 nr_channels;
+	struct rank_info **channels;
+};
+
+struct rank_info {
+	int chan_idx;
+	struct csrow_info *csrow;
+	struct dimm_info *dimm;
+	u32 ce_count;
+};
+
+struct dimm_info {
+	struct device dev;
+	char label[32];
+	unsigned int location[3];
+	struct mem_ctl_info *mci;
+	unsigned int idx;
+	u32 grain;
+	enum dev_type dtype;
+	enum mem_type___2 mtype;
+	enum edac_type edac_mode;
+	u32 nr_pages;
+	unsigned int csrow;
+	unsigned int cschannel;
+	u16 smbios_handle;
+	u32 ce_count;
+	u32 ue_count;
+};
+
+struct edac_mc_layer {
+	enum edac_mc_layer_type type;
+	unsigned int size;
+	bool is_virt_csrow;
+};
+
+struct edac_device_counter {
+	u32 ue_count;
+	u32 ce_count;
+};
+
+struct edac_dev_sysfs_attribute;
+
+struct edac_device_instance;
+
+struct edac_device_block;
+
+struct edac_dev_sysfs_block_attribute;
+
+struct edac_device_ctl_info {
+	struct list_head link;
+	struct module *owner;
+	int dev_idx;
+	int log_ue;
+	int log_ce;
+	int panic_on_ue;
+	unsigned int poll_msec;
+	unsigned long delay;
+	struct edac_dev_sysfs_attribute *sysfs_attributes;
+	struct bus_type *edac_subsys;
+	int op_state;
+	struct delayed_work work;
+	void (*edac_check)(struct edac_device_ctl_info *);
+	struct device *dev;
+	const char *mod_name;
+	const char *ctl_name;
+	const char *dev_name;
+	void *pvt_info;
+	unsigned long start_time;
+	struct completion removal_complete;
+	char name[32];
+	u32 nr_instances;
+	struct edac_device_instance *instances;
+	struct edac_device_block *blocks;
+	struct edac_dev_sysfs_block_attribute *attribs;
+	struct edac_device_counter counters;
+	struct kobject kobj;
+};
+
+struct edac_dev_sysfs_attribute {
+	struct attribute attr;
+	ssize_t (*show)(struct edac_device_ctl_info *, char *);
+	ssize_t (*store)(struct edac_device_ctl_info *, const char *, size_t);
+};
+
+struct edac_device_instance {
+	struct edac_device_ctl_info *ctl;
+	char name[35];
+	struct edac_device_counter counters;
+	u32 nr_blocks;
+	struct edac_device_block *blocks;
+	struct kobject kobj;
+};
+
+struct edac_device_block {
+	struct edac_device_instance *instance;
+	char name[32];
+	struct edac_device_counter counters;
+	int nr_attribs;
+	struct edac_dev_sysfs_block_attribute *block_attributes;
+	struct kobject kobj;
+};
+
+struct edac_dev_sysfs_block_attribute {
+	struct attribute attr;
+	ssize_t (*show)(struct kobject *, struct attribute *, char *);
+	ssize_t (*store)(struct kobject *, struct attribute *, const char *, size_t);
+	struct edac_device_block *block;
+	unsigned int value;
+};
+
+struct dev_ch_attribute {
+	struct device_attribute attr;
+	unsigned int channel;
+};
+
+struct ctl_info_attribute {
+	struct attribute attr;
+	ssize_t (*show)(struct edac_device_ctl_info *, char *);
+	ssize_t (*store)(struct edac_device_ctl_info *, const char *, size_t);
+};
+
+struct instance_attribute {
+	struct attribute attr;
+	ssize_t (*show)(struct edac_device_instance *, char *);
+	ssize_t (*store)(struct edac_device_instance *, const char *, size_t);
+};
+
+struct edac_pci_counter {
+	atomic_t pe_count;
+	atomic_t npe_count;
+};
+
+struct edac_pci_ctl_info {
+	struct list_head link;
+	int pci_idx;
+	struct bus_type *edac_subsys;
+	int op_state;
+	struct delayed_work work;
+	void (*edac_check)(struct edac_pci_ctl_info *);
+	struct device *dev;
+	const char *mod_name;
+	const char *ctl_name;
+	const char *dev_name;
+	void *pvt_info;
+	unsigned long start_time;
+	struct completion complete;
+	char name[32];
+	struct edac_pci_counter counters;
+	struct kobject kobj;
+};
+
+struct edac_pci_gen_data {
+	int edac_idx;
+};
+
+struct edac_pci_dev_attribute {
+	struct attribute attr;
+	void *value;
+	ssize_t (*show)(void *, char *);
+	ssize_t (*store)(void *, const char *, size_t);
+};
+
+struct instance_attribute___2 {
+	struct attribute attr;
+	ssize_t (*show)(struct edac_pci_ctl_info *, char *);
+	ssize_t (*store)(struct edac_pci_ctl_info *, const char *, size_t);
+};
+
+typedef void (*pci_parity_check_fn_t)(struct pci_dev *);
+
+enum opp_table_access {
+	OPP_TABLE_ACCESS_UNKNOWN = 0,
+	OPP_TABLE_ACCESS_EXCLUSIVE = 1,
+	OPP_TABLE_ACCESS_SHARED = 2,
+};
+
+enum dev_pm_opp_event {
+	OPP_EVENT_ADD = 0,
+	OPP_EVENT_REMOVE = 1,
+	OPP_EVENT_ENABLE = 2,
+	OPP_EVENT_DISABLE = 3,
+	OPP_EVENT_ADJUST_VOLTAGE = 4,
+};
+
+struct dev_pm_opp_supply;
+
+struct dev_pm_opp_icc_bw;
+
+struct dev_pm_opp {
+	struct list_head node;
+	struct kref kref;
+	bool available;
+	bool dynamic;
+	bool turbo;
+	bool suspend;
+	bool removed;
+	unsigned long *rates;
+	unsigned int level;
+	struct dev_pm_opp_supply *supplies;
+	struct dev_pm_opp_icc_bw *bandwidth;
+	unsigned long clock_latency_ns;
+	struct dev_pm_opp **required_opps;
+	struct opp_table *opp_table;
+	struct device_node *np;
+	struct dentry *dentry;
+	const char *of_name;
+};
+
+struct dev_pm_opp_supply {
+	unsigned long u_volt;
+	unsigned long u_volt_min;
+	unsigned long u_volt_max;
+	unsigned long u_amp;
+	unsigned long u_watt;
+};
+
+struct dev_pm_opp_icc_bw {
+	u32 avg;
+	u32 peak;
+};
+
+typedef int (*config_clks_t)(struct device *, struct opp_table *, struct dev_pm_opp *, void *, bool);
+
+typedef int (*config_regulators_t)(struct device *, struct dev_pm_opp *, struct dev_pm_opp *, struct regulator **, unsigned int);
+
+struct icc_path;
+
+struct opp_table {
+	struct list_head node;
+	struct list_head lazy;
+	struct blocking_notifier_head head;
+	struct list_head dev_list;
+	struct list_head opp_list;
+	struct kref kref;
+	struct mutex lock;
+	struct device_node *np;
+	unsigned long clock_latency_ns_max;
+	unsigned int voltage_tolerance_v1;
+	unsigned int parsed_static_opps;
+	enum opp_table_access shared_opp;
+	unsigned long rate_clk_single;
+	struct dev_pm_opp *current_opp;
+	struct dev_pm_opp *suspend_opp;
+	struct mutex genpd_virt_dev_lock;
+	struct device **genpd_virt_devs;
+	struct opp_table **required_opp_tables;
+	unsigned int required_opp_count;
+	unsigned int *supported_hw;
+	unsigned int supported_hw_count;
+	const char *prop_name;
+	config_clks_t config_clks;
+	struct clk **clks;
+	struct clk *clk;
+	int clk_count;
+	config_regulators_t config_regulators;
+	struct regulator **regulators;
+	int regulator_count;
+	struct icc_path **paths;
+	unsigned int path_count;
+	bool enabled;
+	bool is_genpd;
+	int (*set_required_opps)(struct device *, struct opp_table *, struct dev_pm_opp *, bool);
+	struct dentry *dentry;
+	char dentry_name[255];
+};
+
+struct opp_device {
+	struct list_head node;
+	const struct device *dev;
+	struct dentry *dentry;
+};
+
+struct opp_config_data {
+	struct opp_table *opp_table;
+	unsigned int flags;
+};
+
+struct dev_pm_opp_data {
+	unsigned int level;
+	unsigned long freq;
+	unsigned long u_volt;
+};
+
+struct dev_pm_opp_config {
+	const char * const *clk_names;
+	config_clks_t config_clks;
+	const char *prop_name;
+	config_regulators_t config_regulators;
+	const unsigned int *supported_hw;
+	unsigned int supported_hw_count;
+	const char * const *regulator_names;
+	const char * const *genpd_names;
+	struct device ***virt_devs;
+};
+
+struct em_data_callback {};
+
+struct cpufreq_policy_data;
+
+struct freq_attr;
+
+struct cpufreq_driver {
+	char name[16];
+	u16 flags;
+	void *driver_data;
+	int (*init)(struct cpufreq_policy *);
+	int (*verify)(struct cpufreq_policy_data *);
+	int (*setpolicy)(struct cpufreq_policy *);
+	int (*target)(struct cpufreq_policy *, unsigned int, unsigned int);
+	int (*target_index)(struct cpufreq_policy *, unsigned int);
+	unsigned int (*fast_switch)(struct cpufreq_policy *, unsigned int);
+	void (*adjust_perf)(unsigned int, unsigned long, unsigned long, unsigned long);
+	unsigned int (*get_intermediate)(struct cpufreq_policy *, unsigned int);
+	int (*target_intermediate)(struct cpufreq_policy *, unsigned int);
+	unsigned int (*get)(unsigned int);
+	void (*update_limits)(unsigned int);
+	int (*bios_limit)(int, unsigned int *);
+	int (*online)(struct cpufreq_policy *);
+	int (*offline)(struct cpufreq_policy *);
+	int (*exit)(struct cpufreq_policy *);
+	int (*suspend)(struct cpufreq_policy *);
+	int (*resume)(struct cpufreq_policy *);
+	void (*ready)(struct cpufreq_policy *);
+	struct freq_attr **attr;
+	bool boost_enabled;
+	int (*set_boost)(struct cpufreq_policy *, int);
+	void (*register_em)(struct cpufreq_policy *);
+};
+
+struct cpufreq_policy_data {
+	struct cpufreq_cpuinfo cpuinfo;
+	struct cpufreq_frequency_table *freq_table;
+	unsigned int cpu;
+	unsigned int min;
+	unsigned int max;
+};
+
+struct freq_attr {
+	struct attribute attr;
+	ssize_t (*show)(struct cpufreq_policy *, char *);
+	ssize_t (*store)(struct cpufreq_policy *, const char *, size_t);
+};
+
+struct cpufreq_stats {
+	unsigned int total_trans;
+	unsigned long long last_time;
+	unsigned int max_state;
+	unsigned int state_num;
+	unsigned int last_index;
+	u64 *time_in_state;
+	unsigned int *freq_table;
+	unsigned int *trans_table;
+	unsigned int reset_pending;
+	unsigned long long reset_time;
+};
+
+struct cpu_freqs {
+	unsigned int offset;
+	unsigned int max_state;
+	unsigned int last_index;
+	unsigned int freq_table[0];
+};
+
+struct dbs_data;
+
+struct policy_dbs_info;
+
+struct dbs_governor {
+	struct cpufreq_governor gov;
+	struct kobj_type kobj_type;
+	struct dbs_data *gdbs_data;
+	unsigned int (*gov_dbs_update)(struct cpufreq_policy *);
+	struct policy_dbs_info * (*alloc)();
+	void (*free)(struct policy_dbs_info *);
+	int (*init)(struct dbs_data *);
+	void (*exit)(struct dbs_data *);
+	void (*start)(struct cpufreq_policy *);
+};
+
+struct dbs_data {
+	struct gov_attr_set attr_set;
+	struct dbs_governor *gov;
+	void *tuners;
+	unsigned int ignore_nice_load;
+	unsigned int sampling_rate;
+	unsigned int sampling_down_factor;
+	unsigned int up_threshold;
+	unsigned int io_is_busy;
+};
+
+struct policy_dbs_info {
+	struct cpufreq_policy *policy;
+	struct mutex update_mutex;
+	u64 last_sample_time;
+	s64 sample_delay_ns;
+	atomic_t work_count;
+	struct irq_work irq_work;
+	struct work_struct work;
+	struct dbs_data *dbs_data;
+	struct list_head list;
+	unsigned int rate_mult;
+	unsigned int idle_periods;
+	bool is_shared;
+	bool work_in_progress;
+};
+
+struct cs_policy_dbs_info {
+	struct policy_dbs_info policy_dbs;
+	unsigned int down_skip;
+	unsigned int requested_freq;
+};
+
+struct cs_dbs_tuners {
+	unsigned int down_threshold;
+	unsigned int freq_step;
+};
+
+struct cpu_dbs_info {
+	u64 prev_cpu_idle;
+	u64 prev_update_time;
+	u64 prev_cpu_nice;
+	unsigned int prev_load;
+	struct update_util_data update_util;
+	struct policy_dbs_info *policy_dbs;
+};
+
+struct pstate_data {
+	int current_pstate;
+	int min_pstate;
+	int max_pstate;
+	int max_pstate_physical;
+	int perf_ctl_scaling;
+	int scaling;
+	int turbo_pstate;
+	unsigned int min_freq;
+	unsigned int max_freq;
+	unsigned int turbo_freq;
+};
+
+struct vid_data {
+	int min;
+	int max;
+	int turbo;
+	int32_t ratio;
+};
+
+struct sample {
+	int32_t core_avg_perf;
+	int32_t busy_scaled;
+	u64 aperf;
+	u64 mperf;
+	u64 tsc;
+	u64 time;
+};
+
+struct cpudata {
+	int cpu;
+	unsigned int policy;
+	struct update_util_data update_util;
+	bool update_util_set;
+	struct pstate_data pstate;
+	struct vid_data vid;
+	u64 last_update;
+	u64 last_sample_time;
+	u64 aperf_mperf_shift;
+	u64 prev_aperf;
+	u64 prev_mperf;
+	u64 prev_tsc;
+	u64 prev_cummulative_iowait;
+	struct sample sample;
+	int32_t min_perf_ratio;
+	int32_t max_perf_ratio;
+	struct acpi_processor_performance acpi_perf_data;
+	bool valid_pss_table;
+	unsigned int iowait_boost;
+	s16 epp_powersave;
+	s16 epp_policy;
+	s16 epp_default;
+	s16 epp_cached;
+	u64 hwp_req_cached;
+	u64 hwp_cap_cached;
+	u64 last_io_update;
+	unsigned int sched_flags;
+	u32 hwp_boost_min;
+	bool suspended;
+	struct delayed_work hwp_notify_work;
+};
+
+struct pstate_funcs {
+	int (*get_max)(int);
+	int (*get_max_physical)(int);
+	int (*get_min)(int);
+	int (*get_turbo)(int);
+	int (*get_scaling)();
+	int (*get_cpu_scaling)(int);
+	int (*get_aperf_mperf_shift)();
+	u64 (*get_val)(struct cpudata *, int);
+	void (*get_vid)(struct cpudata *);
+};
+
+struct global_params {
+	bool no_turbo;
+	bool turbo_disabled;
+	bool turbo_disabled_mf;
+	int max_perf_pct;
+	int min_perf_pct;
+};
+
+enum energy_perf_value_index___2 {
+	EPP_INDEX_DEFAULT = 0,
+	EPP_INDEX_PERFORMANCE = 1,
+	EPP_INDEX_BALANCE_PERFORMANCE = 2,
+	EPP_INDEX_BALANCE_POWERSAVE = 3,
+	EPP_INDEX_POWERSAVE = 4,
+};
+
+enum acpi_preferred_pm_profiles {
+	PM_UNSPECIFIED = 0,
+	PM_DESKTOP = 1,
+	PM_MOBILE = 2,
+	PM_WORKSTATION = 3,
+	PM_ENTERPRISE_SERVER = 4,
+	PM_SOHO_SERVER = 5,
+	PM_APPLIANCE_PC = 6,
+	PM_PERFORMANCE_SERVER = 7,
+	PM_TABLET = 8,
+	NR_PM_PROFILES = 9,
+};
+
+enum {
+	PSS = 0,
+	PPC = 1,
+};
+
+struct cpuidle_governor {
+	char name[16];
+	struct list_head governor_list;
+	unsigned int rating;
+	int (*enable)(struct cpuidle_driver *, struct cpuidle_device *);
+	void (*disable)(struct cpuidle_driver *, struct cpuidle_device *);
+	int (*select)(struct cpuidle_driver *, struct cpuidle_device *, bool *);
+	void (*reflect)(struct cpuidle_device *, int);
+};
+
+struct cpuidle_state_attr {
+	struct attribute attr;
+	ssize_t (*show)(struct cpuidle_state *, struct cpuidle_state_usage *, char *);
+	ssize_t (*store)(struct cpuidle_state *, struct cpuidle_state_usage *, const char *, size_t);
+};
+
+struct cpuidle_state_kobj {
+	struct cpuidle_state *state;
+	struct cpuidle_state_usage *state_usage;
+	struct completion kobj_unregister;
+	struct kobject kobj;
+	struct cpuidle_device *device;
+};
+
+struct cpuidle_device_kobj {
+	struct cpuidle_device *dev;
+	struct completion kobj_unregister;
+	struct kobject kobj;
+};
+
+struct cpuidle_attr {
+	struct attribute attr;
+	ssize_t (*show)(struct cpuidle_device *, char *);
+	ssize_t (*store)(struct cpuidle_device *, const char *, size_t);
+};
+
+struct menu_device {
+	int needs_update;
+	int tick_wakeup;
+	u64 next_timer_ns;
+	unsigned int bucket;
+	unsigned int correction_factor[12];
+	unsigned int intervals[8];
+	int interval_ptr;
+};
+
+struct mmc_host;
+
+struct mmc_request;
+
+typedef void (*btf_trace_mmc_request_start)(void *, struct mmc_host *, struct mmc_request *);
+
+typedef unsigned int mmc_pm_flag_t;
+
+struct mmc_ios {
+	unsigned int clock;
+	unsigned short vdd;
+	unsigned int power_delay_ms;
+	unsigned char bus_mode;
+	unsigned char chip_select;
+	unsigned char power_mode;
+	unsigned char bus_width;
+	unsigned char timing;
+	unsigned char signal_voltage;
+	unsigned char drv_type;
+	bool enhanced_strobe;
+};
+
+struct mmc_ctx {
+	struct task_struct *task;
+};
+
+struct mmc_slot {
+	int cd_irq;
+	bool cd_wake_enabled;
+	void *handler_priv;
+};
+
+struct mmc_supply {
+	struct regulator *vmmc;
+	struct regulator *vqmmc;
+};
+
+struct mmc_host_ops;
+
+struct mmc_pwrseq;
+
+struct mmc_card;
+
+struct mmc_bus_ops;
+
+struct mmc_cqe_ops;
+
+struct mmc_host {
+	struct device *parent;
+	struct device class_dev;
+	int index;
+	const struct mmc_host_ops *ops;
+	struct mmc_pwrseq *pwrseq;
+	unsigned int f_min;
+	unsigned int f_max;
+	unsigned int f_init;
+	u32 ocr_avail;
+	u32 ocr_avail_sdio;
+	u32 ocr_avail_sd;
+	u32 ocr_avail_mmc;
+	struct wakeup_source *ws;
+	u32 max_current_330;
+	u32 max_current_300;
+	u32 max_current_180;
+	u32 caps;
+	u32 caps2;
+	int fixed_drv_type;
+	mmc_pm_flag_t pm_caps;
+	unsigned int max_seg_size;
+	unsigned short max_segs;
+	unsigned short unused;
+	unsigned int max_req_size;
+	unsigned int max_blk_size;
+	unsigned int max_blk_count;
+	unsigned int max_busy_timeout;
+	spinlock_t lock;
+	struct mmc_ios ios;
+	unsigned int use_spi_crc: 1;
+	unsigned int claimed: 1;
+	unsigned int doing_init_tune: 1;
+	unsigned int can_retune: 1;
+	unsigned int doing_retune: 1;
+	unsigned int retune_now: 1;
+	unsigned int retune_paused: 1;
+	unsigned int retune_crc_disable: 1;
+	unsigned int can_dma_map_merge: 1;
+	unsigned int vqmmc_enabled: 1;
+	int rescan_disable;
+	int rescan_entered;
+	int need_retune;
+	int hold_retune;
+	unsigned int retune_period;
+	struct timer_list retune_timer;
+	bool trigger_card_event;
+	struct mmc_card *card;
+	wait_queue_head_t wq;
+	struct mmc_ctx *claimer;
+	int claim_cnt;
+	struct mmc_ctx default_ctx;
+	struct delayed_work detect;
+	int detect_change;
+	struct mmc_slot slot;
+	const struct mmc_bus_ops *bus_ops;
+	unsigned int sdio_irqs;
+	struct task_struct *sdio_irq_thread;
+	struct work_struct sdio_irq_work;
+	bool sdio_irq_pending;
+	atomic_t sdio_irq_thread_abort;
+	mmc_pm_flag_t pm_flags;
+	struct led_trigger *led;
+	bool regulator_enabled;
+	struct mmc_supply supply;
+	struct dentry *debugfs_root;
+	struct mmc_request *ongoing_mrq;
+	unsigned int actual_clock;
+	unsigned int slotno;
+	int dsr_req;
+	u32 dsr;
+	const struct mmc_cqe_ops *cqe_ops;
+	void *cqe_private;
+	int cqe_qdepth;
+	bool cqe_enabled;
+	bool cqe_on;
+	bool cqe_recovery_reset_always;
+	struct blk_crypto_profile crypto_profile;
+	bool hsq_enabled;
+	int hsq_depth;
+	u32 err_stats[15];
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	long: 64;
+	long: 64;
+	unsigned long private[0];
+};
+
+struct mmc_host_ops {
+	void (*post_req)(struct mmc_host *, struct mmc_request *, int);
+	void (*pre_req)(struct mmc_host *, struct mmc_request *);
+	void (*request)(struct mmc_host *, struct mmc_request *);
+	int (*request_atomic)(struct mmc_host *, struct mmc_request *);
+	void (*set_ios)(struct mmc_host *, struct mmc_ios *);
+	int (*get_ro)(struct mmc_host *);
+	int (*get_cd)(struct mmc_host *);
+	void (*enable_sdio_irq)(struct mmc_host *, int);
+	void (*ack_sdio_irq)(struct mmc_host *);
+	void (*init_card)(struct mmc_host *, struct mmc_card *);
+	int (*start_signal_voltage_switch)(struct mmc_host *, struct mmc_ios *);
+	int (*card_busy)(struct mmc_host *);
+	int (*execute_tuning)(struct mmc_host *, u32);
+	int (*prepare_hs400_tuning)(struct mmc_host *, struct mmc_ios *);
+	int (*execute_hs400_tuning)(struct mmc_host *, struct mmc_card *);
+	int (*prepare_sd_hs_tuning)(struct mmc_host *, struct mmc_card *);
+	int (*execute_sd_hs_tuning)(struct mmc_host *, struct mmc_card *);
+	int (*hs400_prepare_ddr)(struct mmc_host *);
+	void (*hs400_downgrade)(struct mmc_host *);
+	void (*hs400_complete)(struct mmc_host *);
+	void (*hs400_enhanced_strobe)(struct mmc_host *, struct mmc_ios *);
+	int (*select_drive_strength)(struct mmc_card *, unsigned int, int, int, int *);
+	void (*card_hw_reset)(struct mmc_host *);
+	void (*card_event)(struct mmc_host *);
+	int (*multi_io_quirk)(struct mmc_card *, unsigned int, int);
+	int (*init_sd_express)(struct mmc_host *, struct mmc_ios *);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct mmc_command;
+
+struct mmc_data;
+
+struct mmc_request {
+	struct mmc_command *sbc;
+	struct mmc_command *cmd;
+	struct mmc_data *data;
+	struct mmc_command *stop;
+	struct completion completion;
+	struct completion cmd_completion;
+	void (*done)(struct mmc_request *);
+	void (*recovery_notifier)(struct mmc_request *);
+	struct mmc_host *host;
+	bool cap_cmd_during_tfr;
+	int tag;
+	const struct bio_crypt_ctx *crypto_ctx;
+	int crypto_key_slot;
+};
+
+struct mmc_command {
+	u32 opcode;
+	u32 arg;
+	u32 resp[4];
+	unsigned int flags;
+	unsigned int retries;
+	int error;
+	unsigned int busy_timeout;
+	struct mmc_data *data;
+	struct mmc_request *mrq;
+};
+
+struct mmc_data {
+	unsigned int timeout_ns;
+	unsigned int timeout_clks;
+	unsigned int blksz;
+	unsigned int blocks;
+	unsigned int blk_addr;
+	int error;
+	unsigned int flags;
+	unsigned int bytes_xfered;
+	struct mmc_command *stop;
+	struct mmc_request *mrq;
+	unsigned int sg_len;
+	int sg_count;
+	struct scatterlist *sg;
+	s32 host_cookie;
+};
+
+struct mmc_cid {
+	unsigned int manfid;
+	char prod_name[8];
+	unsigned char prv;
+	unsigned int serial;
+	unsigned short oemid;
+	unsigned short year;
+	unsigned char hwrev;
+	unsigned char fwrev;
+	unsigned char month;
+};
+
+struct mmc_csd {
+	unsigned char structure;
+	unsigned char mmca_vsn;
+	unsigned short cmdclass;
+	unsigned short taac_clks;
+	unsigned int taac_ns;
+	unsigned int c_size;
+	unsigned int r2w_factor;
+	unsigned int max_dtr;
+	unsigned int erase_size;
+	unsigned int read_blkbits;
+	unsigned int write_blkbits;
+	unsigned int capacity;
+	unsigned int read_partial: 1;
+	unsigned int read_misalign: 1;
+	unsigned int write_partial: 1;
+	unsigned int write_misalign: 1;
+	unsigned int dsr_imp: 1;
+};
+
+struct mmc_ext_csd {
+	u8 rev;
+	u8 erase_group_def;
+	u8 sec_feature_support;
+	u8 rel_sectors;
+	u8 rel_param;
+	bool enhanced_rpmb_supported;
+	u8 part_config;
+	u8 cache_ctrl;
+	u8 rst_n_function;
+	u8 max_packed_writes;
+	u8 max_packed_reads;
+	u8 packed_event_en;
+	unsigned int part_time;
+	unsigned int sa_timeout;
+	unsigned int generic_cmd6_time;
+	unsigned int power_off_longtime;
+	u8 power_off_notification;
+	unsigned int hs_max_dtr;
+	unsigned int hs200_max_dtr;
+	unsigned int sectors;
+	unsigned int hc_erase_size;
+	unsigned int hc_erase_timeout;
+	unsigned int sec_trim_mult;
+	unsigned int sec_erase_mult;
+	unsigned int trim_timeout;
+	bool partition_setting_completed;
+	unsigned long long enhanced_area_offset;
+	unsigned int enhanced_area_size;
+	unsigned int cache_size;
+	bool hpi_en;
+	bool hpi;
+	unsigned int hpi_cmd;
+	bool bkops;
+	bool man_bkops_en;
+	bool auto_bkops_en;
+	unsigned int data_sector_size;
+	unsigned int data_tag_unit_size;
+	unsigned int boot_ro_lock;
+	bool boot_ro_lockable;
+	bool ffu_capable;
+	bool cmdq_en;
+	bool cmdq_support;
+	unsigned int cmdq_depth;
+	u8 fwrev[8];
+	u8 raw_exception_status;
+	u8 raw_partition_support;
+	u8 raw_rpmb_size_mult;
+	u8 raw_erased_mem_count;
+	u8 strobe_support;
+	u8 raw_ext_csd_structure;
+	u8 raw_card_type;
+	u8 raw_driver_strength;
+	u8 out_of_int_time;
+	u8 raw_pwr_cl_52_195;
+	u8 raw_pwr_cl_26_195;
+	u8 raw_pwr_cl_52_360;
+	u8 raw_pwr_cl_26_360;
+	u8 raw_s_a_timeout;
+	u8 raw_hc_erase_gap_size;
+	u8 raw_erase_timeout_mult;
+	u8 raw_hc_erase_grp_size;
+	u8 raw_boot_mult;
+	u8 raw_sec_trim_mult;
+	u8 raw_sec_erase_mult;
+	u8 raw_sec_feature_support;
+	u8 raw_trim_mult;
+	u8 raw_pwr_cl_200_195;
+	u8 raw_pwr_cl_200_360;
+	u8 raw_pwr_cl_ddr_52_195;
+	u8 raw_pwr_cl_ddr_52_360;
+	u8 raw_pwr_cl_ddr_200_360;
+	u8 raw_bkops_status;
+	u8 raw_sectors[4];
+	u8 pre_eol_info;
+	u8 device_life_time_est_typ_a;
+	u8 device_life_time_est_typ_b;
+	unsigned int feature_support;
+};
+
+struct sd_scr {
+	unsigned char sda_vsn;
+	unsigned char sda_spec3;
+	unsigned char sda_spec4;
+	unsigned char sda_specx;
+	unsigned char bus_widths;
+	unsigned char cmds;
+};
+
+struct sd_ssr {
+	unsigned int au;
+	unsigned int erase_timeout;
+	unsigned int erase_offset;
+};
+
+struct sd_switch_caps {
+	unsigned int hs_max_dtr;
+	unsigned int uhs_max_dtr;
+	unsigned int sd3_bus_mode;
+	unsigned int sd3_drv_type;
+	unsigned int sd3_curr_limit;
+};
+
+struct sd_ext_reg {
+	u8 fno;
+	u8 page;
+	u16 offset;
+	u8 rev;
+	u8 feature_enabled;
+	u8 feature_support;
+};
+
+struct sdio_cccr {
+	unsigned int sdio_vsn;
+	unsigned int sd_vsn;
+	unsigned int multi_block: 1;
+	unsigned int low_speed: 1;
+	unsigned int wide_bus: 1;
+	unsigned int high_power: 1;
+	unsigned int high_speed: 1;
+	unsigned int disable_cd: 1;
+	unsigned int enable_async_irq: 1;
+};
+
+struct sdio_cis {
+	unsigned short vendor;
+	unsigned short device;
+	unsigned short blksize;
+	unsigned int max_dtr;
+};
+
+struct mmc_part {
+	u64 size;
+	unsigned int part_cfg;
+	char name[20];
+	bool force_ro;
+	unsigned int area_type;
+	u64 android_kabi_reserved1;
+};
+
+struct sdio_func;
+
+struct sdio_func_tuple;
+
+struct mmc_card {
+	struct mmc_host *host;
+	struct device dev;
+	u32 ocr;
+	unsigned int rca;
+	unsigned int type;
+	unsigned int state;
+	unsigned int quirks;
+	unsigned int quirk_max_rate;
+	bool written_flag;
+	bool reenable_cmdq;
+	unsigned int erase_size;
+	unsigned int erase_shift;
+	unsigned int pref_erase;
+	unsigned int eg_boundary;
+	unsigned int erase_arg;
+	u8 erased_byte;
+	u32 raw_cid[4];
+	u32 raw_csd[4];
+	u32 raw_scr[2];
+	u32 raw_ssr[16];
+	struct mmc_cid cid;
+	struct mmc_csd csd;
+	struct mmc_ext_csd ext_csd;
+	struct sd_scr scr;
+	struct sd_ssr ssr;
+	struct sd_switch_caps sw_caps;
+	struct sd_ext_reg ext_power;
+	struct sd_ext_reg ext_perf;
+	unsigned int sdio_funcs;
+	atomic_t sdio_funcs_probed;
+	struct sdio_cccr cccr;
+	struct sdio_cis cis;
+	struct sdio_func *sdio_func[7];
+	struct sdio_func *sdio_single_irq;
+	u8 major_rev;
+	u8 minor_rev;
+	unsigned int num_info;
+	const char **info;
+	struct sdio_func_tuple *tuples;
+	unsigned int sd_bus_speed;
+	unsigned int mmc_avail_type;
+	unsigned int drive_strength;
+	struct dentry *debugfs_root;
+	struct mmc_part part[7];
+	unsigned int nr_parts;
+	struct workqueue_struct *complete_wq;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct mmc_pwrseq_ops;
+
+struct mmc_pwrseq {
+	const struct mmc_pwrseq_ops *ops;
+	struct device *dev;
+	struct list_head pwrseq_node;
+	struct module *owner;
+};
+
+struct mmc_pwrseq_ops {
+	void (*pre_power_on)(struct mmc_host *);
+	void (*post_power_on)(struct mmc_host *);
+	void (*power_off)(struct mmc_host *);
+	void (*reset)(struct mmc_host *);
+};
+
+struct mmc_bus_ops {
+	void (*remove)(struct mmc_host *);
+	void (*detect)(struct mmc_host *);
+	int (*pre_suspend)(struct mmc_host *);
+	int (*suspend)(struct mmc_host *);
+	int (*resume)(struct mmc_host *);
+	int (*runtime_suspend)(struct mmc_host *);
+	int (*runtime_resume)(struct mmc_host *);
+	int (*alive)(struct mmc_host *);
+	int (*shutdown)(struct mmc_host *);
+	int (*hw_reset)(struct mmc_host *);
+	int (*sw_reset)(struct mmc_host *);
+	bool (*cache_enabled)(struct mmc_host *);
+	int (*flush_cache)(struct mmc_host *);
+};
+
+struct mmc_cqe_ops {
+	int (*cqe_enable)(struct mmc_host *, struct mmc_card *);
+	void (*cqe_disable)(struct mmc_host *);
+	int (*cqe_request)(struct mmc_host *, struct mmc_request *);
+	void (*cqe_post_req)(struct mmc_host *, struct mmc_request *);
+	void (*cqe_off)(struct mmc_host *);
+	int (*cqe_wait_for_idle)(struct mmc_host *);
+	bool (*cqe_timeout)(struct mmc_host *, struct mmc_request *, bool *);
+	void (*cqe_recovery_start)(struct mmc_host *);
+	void (*cqe_recovery_finish)(struct mmc_host *);
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+typedef void (*btf_trace_mmc_request_done)(void *, struct mmc_host *, struct mmc_request *);
+
+enum mmc_busy_cmd {
+	MMC_BUSY_CMD6 = 0,
+	MMC_BUSY_ERASE = 1,
+	MMC_BUSY_HPI = 2,
+	MMC_BUSY_EXTR_SINGLE = 3,
+	MMC_BUSY_IO = 4,
+};
+
+enum mmc_err_stat {
+	MMC_ERR_CMD_TIMEOUT = 0,
+	MMC_ERR_CMD_CRC = 1,
+	MMC_ERR_DAT_TIMEOUT = 2,
+	MMC_ERR_DAT_CRC = 3,
+	MMC_ERR_AUTO_CMD = 4,
+	MMC_ERR_ADMA = 5,
+	MMC_ERR_TUNING = 6,
+	MMC_ERR_CMDQ_RED = 7,
+	MMC_ERR_CMDQ_GCE = 8,
+	MMC_ERR_CMDQ_ICCE = 9,
+	MMC_ERR_REQ_TIMEOUT = 10,
+	MMC_ERR_CMDQ_REQ_TIMEOUT = 11,
+	MMC_ERR_ICE_CFG = 12,
+	MMC_ERR_CTRL_TIMEOUT = 13,
+	MMC_ERR_UNEXPECTED_IRQ = 14,
+	MMC_ERR_MAX = 15,
+};
+
+struct trace_event_raw_mmc_request_start {
+	struct trace_entry ent;
+	u32 cmd_opcode;
+	u32 cmd_arg;
+	unsigned int cmd_flags;
+	unsigned int cmd_retries;
+	u32 stop_opcode;
+	u32 stop_arg;
+	unsigned int stop_flags;
+	unsigned int stop_retries;
+	u32 sbc_opcode;
+	u32 sbc_arg;
+	unsigned int sbc_flags;
+	unsigned int sbc_retries;
+	unsigned int blocks;
+	unsigned int blk_addr;
+	unsigned int blksz;
+	unsigned int data_flags;
+	int tag;
+	unsigned int can_retune;
+	unsigned int doing_retune;
+	unsigned int retune_now;
+	int need_retune;
+	int hold_retune;
+	unsigned int retune_period;
+	struct mmc_request *mrq;
+	u32 __data_loc_name;
+	char __data[0];
+};
+
+struct trace_event_raw_mmc_request_done {
+	struct trace_entry ent;
+	u32 cmd_opcode;
+	int cmd_err;
+	u32 cmd_resp[4];
+	unsigned int cmd_retries;
+	u32 stop_opcode;
+	int stop_err;
+	u32 stop_resp[4];
+	unsigned int stop_retries;
+	u32 sbc_opcode;
+	int sbc_err;
+	u32 sbc_resp[4];
+	unsigned int sbc_retries;
+	unsigned int bytes_xfered;
+	int data_err;
+	int tag;
+	unsigned int can_retune;
+	unsigned int doing_retune;
+	unsigned int retune_now;
+	int need_retune;
+	int hold_retune;
+	unsigned int retune_period;
+	struct mmc_request *mrq;
+	u32 __data_loc_name;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_mmc_request_start {
+	u32 name;
+};
+
+struct trace_event_data_offsets_mmc_request_done {
+	u32 name;
+};
+
+struct mmc_driver {
+	struct device_driver drv;
+	int (*probe)(struct mmc_card *);
+	void (*remove)(struct mmc_card *);
+	void (*shutdown)(struct mmc_card *);
+};
+
+struct mmc_clk_phase {
+	bool valid;
+	u16 in_deg;
+	u16 out_deg;
+};
+
+struct mmc_clk_phase_map {
+	struct mmc_clk_phase phase[11];
+};
+
+struct mmc_fixup {
+	const char *name;
+	u64 rev_start;
+	u64 rev_end;
+	unsigned int manfid;
+	unsigned short oemid;
+	unsigned short year;
+	unsigned char month;
+	u16 cis_vendor;
+	u16 cis_device;
+	unsigned int ext_csd_rev;
+	const char *of_compatible;
+	void (*vendor_fixup)(struct mmc_card *, int);
+	int data;
+};
+
+struct mmc_op_cond_busy_data {
+	struct mmc_host *host;
+	u32 ocr;
+	struct mmc_command *cmd;
+};
+
+struct mmc_busy_data {
+	struct mmc_card *card;
+	bool retry_crc_err;
+	enum mmc_busy_cmd busy_cmd;
+};
+
+struct sd_busy_data {
+	struct mmc_card *card;
+	u8 *reg_buf;
+};
+
+typedef void sdio_irq_handler_t(struct sdio_func *);
+
+struct sdio_func {
+	struct mmc_card *card;
+	struct device dev;
+	sdio_irq_handler_t *irq_handler;
+	unsigned int num;
+	unsigned char class;
+	unsigned short vendor;
+	unsigned short device;
+	unsigned int max_blksize;
+	unsigned int cur_blksize;
+	unsigned int enable_timeout;
+	unsigned int state;
+	u8 *tmpbuf;
+	u8 major_rev;
+	u8 minor_rev;
+	unsigned int num_info;
+	const char **info;
+	struct sdio_func_tuple *tuples;
+};
+
+struct sdio_func_tuple {
+	struct sdio_func_tuple *next;
+	unsigned char code;
+	unsigned char size;
+	unsigned char data[0];
+};
+
+struct sdio_device_id;
+
+struct sdio_driver {
+	char *name;
+	const struct sdio_device_id *id_table;
+	int (*probe)(struct sdio_func *, const struct sdio_device_id *);
+	void (*remove)(struct sdio_func *);
+	struct device_driver drv;
+};
+
+struct sdio_device_id {
+	__u8 class;
+	__u16 vendor;
+	__u16 device;
+	kernel_ulong_t driver_data;
+};
+
+typedef int tpl_parse_t(struct mmc_card *, struct sdio_func *, const unsigned char *, unsigned int);
+
+struct cis_tpl {
+	unsigned char code;
+	unsigned char min_size;
+	tpl_parse_t *parse;
+};
+
+struct mmc_gpio {
+	struct gpio_desc *ro_gpio;
+	struct gpio_desc *cd_gpio;
+	irqreturn_t (*cd_gpio_isr)(int, void *);
+	char *ro_label;
+	char *cd_label;
+	u32 cd_debounce_delay_ms;
+	int cd_irq;
+};
+
+enum mmc_drv_op {
+	MMC_DRV_OP_IOCTL = 0,
+	MMC_DRV_OP_IOCTL_RPMB = 1,
+	MMC_DRV_OP_BOOT_WP = 2,
+	MMC_DRV_OP_GET_CARD_STATUS = 3,
+	MMC_DRV_OP_GET_EXT_CSD = 4,
+};
+
+struct mmc_blk_request {
+	struct mmc_request mrq;
+	struct mmc_command sbc;
+	struct mmc_command cmd;
+	struct mmc_command stop;
+	struct mmc_data data;
+};
+
+struct mmc_queue_req {
+	struct mmc_blk_request brq;
+	struct scatterlist *sg;
+	enum mmc_drv_op drv_op;
+	int drv_op_result;
+	void *drv_op_data;
+	unsigned int ioc_count;
+	int retries;
+};
+
+enum mmc_issued {
+	MMC_REQ_STARTED = 0,
+	MMC_REQ_BUSY = 1,
+	MMC_REQ_FAILED_TO_START = 2,
+	MMC_REQ_FINISHED = 3,
+};
+
+enum mmc_issue_type {
+	MMC_ISSUE_SYNC = 0,
+	MMC_ISSUE_DCMD = 1,
+	MMC_ISSUE_ASYNC = 2,
+	MMC_ISSUE_MAX = 3,
+};
+
+struct mmc_blk_data;
+
+struct mmc_queue {
+	struct mmc_card *card;
+	struct mmc_ctx ctx;
+	struct blk_mq_tag_set tag_set;
+	struct mmc_blk_data *blkdata;
+	struct request_queue *queue;
+	spinlock_t lock;
+	int in_flight[3];
+	unsigned int cqe_busy;
+	bool busy;
+	bool recovery_needed;
+	bool in_recovery;
+	bool rw_wait;
+	bool waiting;
+	struct work_struct recovery_work;
+	wait_queue_head_t wait;
+	struct request *recovery_req;
+	struct request *complete_req;
+	struct mutex complete_lock;
+	struct work_struct complete_work;
+};
+
+struct mmc_blk_data {
+	struct device *parent;
+	struct gendisk *disk;
+	struct mmc_queue queue;
+	struct list_head part;
+	struct list_head rpmbs;
+	unsigned int flags;
+	struct kref kref;
+	unsigned int read_only;
+	unsigned int part_type;
+	unsigned int reset_done;
+	unsigned int part_curr;
+	int area_type;
+	struct dentry *status_dentry;
+	struct dentry *ext_csd_dentry;
+};
+
+struct mmc_ioc_cmd {
+	int write_flag;
+	int is_acmd;
+	__u32 opcode;
+	__u32 arg;
+	__u32 response[4];
+	unsigned int flags;
+	unsigned int blksz;
+	unsigned int blocks;
+	unsigned int postsleep_min_us;
+	unsigned int postsleep_max_us;
+	unsigned int data_timeout_ns;
+	unsigned int cmd_timeout_ms;
+	__u32 __pad;
+	__u64 data_ptr;
+};
+
+struct mmc_ioc_multi_cmd {
+	__u64 num_of_cmds;
+	struct mmc_ioc_cmd cmds[0];
+};
+
+struct mmc_rpmb_data {
+	struct device dev;
+	struct cdev chrdev;
+	int id;
+	unsigned int part_index;
+	struct mmc_blk_data *md;
+	struct list_head node;
+};
+
+struct mmc_blk_busy_data {
+	struct mmc_card *card;
+	u32 status;
+};
+
+struct mmc_blk_ioc_data {
+	struct mmc_ioc_cmd ic;
+	unsigned char *buf;
+	u64 buf_bytes;
+	unsigned int flags;
+	struct mmc_rpmb_data *rpmb;
+};
+
+enum sdhci_reset_reason {
+	SDHCI_RESET_FOR_INIT = 0,
+	SDHCI_RESET_FOR_REQUEST_ERROR = 1,
+	SDHCI_RESET_FOR_REQUEST_ERROR_DATA_ONLY = 2,
+	SDHCI_RESET_FOR_TUNING_ABORT = 3,
+	SDHCI_RESET_FOR_CARD_REMOVED = 4,
+	SDHCI_RESET_FOR_CQE_RECOVERY = 5,
+};
+
+enum sdhci_cookie {
+	COOKIE_UNMAPPED = 0,
+	COOKIE_PRE_MAPPED = 1,
+	COOKIE_MAPPED = 2,
+};
+
+struct sdhci_ops;
+
+struct sdhci_host {
+	const char *hw_name;
+	unsigned int quirks;
+	unsigned int quirks2;
+	int irq;
+	void *ioaddr;
+	phys_addr_t mapbase;
+	char *bounce_buffer;
+	dma_addr_t bounce_addr;
+	unsigned int bounce_buffer_size;
+	const struct sdhci_ops *ops;
+	struct mmc_host *mmc;
+	struct mmc_host_ops mmc_host_ops;
+	u64 dma_mask;
+	struct led_classdev led;
+	char led_name[32];
+	spinlock_t lock;
+	int flags;
+	unsigned int version;
+	unsigned int max_clk;
+	unsigned int timeout_clk;
+	u8 max_timeout_count;
+	unsigned int clk_mul;
+	unsigned int clock;
+	u8 pwr;
+	u8 drv_type;
+	bool reinit_uhs;
+	bool runtime_suspended;
+	bool bus_on;
+	bool preset_enabled;
+	bool pending_reset;
+	bool irq_wake_enabled;
+	bool v4_mode;
+	bool use_external_dma;
+	bool always_defer_done;
+	struct mmc_request *mrqs_done[2];
+	struct mmc_command *cmd;
+	struct mmc_command *data_cmd;
+	struct mmc_command *deferred_cmd;
+	struct mmc_data *data;
+	unsigned int data_early: 1;
+	struct sg_mapping_iter sg_miter;
+	unsigned int blocks;
+	int sg_count;
+	int max_adma;
+	void *adma_table;
+	void *align_buffer;
+	size_t adma_table_sz;
+	size_t align_buffer_sz;
+	dma_addr_t adma_addr;
+	dma_addr_t align_addr;
+	unsigned int desc_sz;
+	unsigned int alloc_desc_sz;
+	struct workqueue_struct *complete_wq;
+	struct work_struct complete_work;
+	struct timer_list timer;
+	struct timer_list data_timer;
+	u32 caps;
+	u32 caps1;
+	bool read_caps;
+	bool sdhci_core_to_disable_vqmmc;
+	unsigned int ocr_avail_sdio;
+	unsigned int ocr_avail_sd;
+	unsigned int ocr_avail_mmc;
+	u32 ocr_mask;
+	unsigned int timing;
+	u32 thread_isr;
+	u32 ier;
+	bool cqe_on;
+	u32 cqe_ier;
+	u32 cqe_err_ier;
+	wait_queue_head_t buf_ready_int;
+	unsigned int tuning_done;
+	unsigned int tuning_count;
+	unsigned int tuning_mode;
+	unsigned int tuning_err;
+	int tuning_delay;
+	int tuning_loop_count;
+	u32 sdma_boundary;
+	u32 adma_table_cnt;
+	u64 data_timeout;
+	u64 android_kabi_reserved1;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	unsigned long private[0];
+};
+
+struct sdhci_ops {
+	u32 (*read_l)(struct sdhci_host *, int);
+	u16 (*read_w)(struct sdhci_host *, int);
+	u8 (*read_b)(struct sdhci_host *, int);
+	void (*write_l)(struct sdhci_host *, u32, int);
+	void (*write_w)(struct sdhci_host *, u16, int);
+	void (*write_b)(struct sdhci_host *, u8, int);
+	void (*set_clock)(struct sdhci_host *, unsigned int);
+	void (*set_power)(struct sdhci_host *, unsigned char, unsigned short);
+	u32 (*irq)(struct sdhci_host *, u32);
+	int (*set_dma_mask)(struct sdhci_host *);
+	int (*enable_dma)(struct sdhci_host *);
+	unsigned int (*get_max_clock)(struct sdhci_host *);
+	unsigned int (*get_min_clock)(struct sdhci_host *);
+	unsigned int (*get_timeout_clock)(struct sdhci_host *);
+	unsigned int (*get_max_timeout_count)(struct sdhci_host *);
+	void (*set_timeout)(struct sdhci_host *, struct mmc_command *);
+	void (*set_bus_width)(struct sdhci_host *, int);
+	void (*platform_send_init_74_clocks)(struct sdhci_host *, u8);
+	unsigned int (*get_ro)(struct sdhci_host *);
+	void (*reset)(struct sdhci_host *, u8);
+	int (*platform_execute_tuning)(struct sdhci_host *, u32);
+	void (*set_uhs_signaling)(struct sdhci_host *, unsigned int);
+	void (*hw_reset)(struct sdhci_host *);
+	void (*adma_workaround)(struct sdhci_host *, u32);
+	void (*card_event)(struct sdhci_host *);
+	void (*voltage_switch)(struct sdhci_host *);
+	void (*adma_write_desc)(struct sdhci_host *, void **, dma_addr_t, int, unsigned int);
+	void (*copy_to_bounce_buffer)(struct sdhci_host *, struct mmc_data *, unsigned int);
+	void (*request_done)(struct sdhci_host *, struct mmc_request *);
+	void (*dump_vendor_regs)(struct sdhci_host *);
+	u64 android_kabi_reserved1;
+};
+
+struct sdhci_adma2_64_desc {
+	__le16 cmd;
+	__le16 len;
+	__le32 addr_lo;
+	__le32 addr_hi;
+};
+
+struct sdhci_pltfm_host {
+	struct clk *clk;
+	unsigned int clock;
+	u16 xfer_mode_shadow;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	unsigned long private[0];
+};
+
+struct sdhci_pltfm_data {
+	const struct sdhci_ops *ops;
+	unsigned int quirks;
+	unsigned int quirks2;
+};
+
+typedef void (*btf_trace_ufshcd_clk_gating)(void *, const char *, int);
+
+typedef void (*btf_trace_ufshcd_clk_scaling)(void *, const char *, const char *, const char *, u32, u32);
+
+typedef void (*btf_trace_ufshcd_auto_bkops_state)(void *, const char *, const char *);
+
+typedef void (*btf_trace_ufshcd_profile_hibern8)(void *, const char *, const char *, s64, int);
+
+typedef void (*btf_trace_ufshcd_profile_clk_gating)(void *, const char *, const char *, s64, int);
+
+typedef void (*btf_trace_ufshcd_profile_clk_scaling)(void *, const char *, const char *, s64, int);
+
+typedef void (*btf_trace_ufshcd_system_suspend)(void *, const char *, int, s64, int, int);
+
+typedef void (*btf_trace_ufshcd_system_resume)(void *, const char *, int, s64, int, int);
+
+typedef void (*btf_trace_ufshcd_runtime_suspend)(void *, const char *, int, s64, int, int);
+
+typedef void (*btf_trace_ufshcd_runtime_resume)(void *, const char *, int, s64, int, int);
+
+typedef void (*btf_trace_ufshcd_init)(void *, const char *, int, s64, int, int);
+
+typedef void (*btf_trace_ufshcd_wl_suspend)(void *, const char *, int, s64, int, int);
+
+typedef void (*btf_trace_ufshcd_wl_resume)(void *, const char *, int, s64, int, int);
+
+typedef void (*btf_trace_ufshcd_wl_runtime_suspend)(void *, const char *, int, s64, int, int);
+
+typedef void (*btf_trace_ufshcd_wl_runtime_resume)(void *, const char *, int, s64, int, int);
+
+enum ufs_trace_str_t {
+	UFS_CMD_SEND = 0,
+	UFS_CMD_COMP = 1,
+	UFS_DEV_COMP = 2,
+	UFS_QUERY_SEND = 3,
+	UFS_QUERY_COMP = 4,
+	UFS_QUERY_ERR = 5,
+	UFS_TM_SEND = 6,
+	UFS_TM_COMP = 7,
+	UFS_TM_ERR = 8,
+};
+
+typedef void (*btf_trace_ufshcd_command)(void *, const char *, enum ufs_trace_str_t, unsigned int, u32, u32, int, u32, u64, u8, u8);
+
+typedef void (*btf_trace_ufshcd_uic_command)(void *, const char *, enum ufs_trace_str_t, u32, u32, u32, u32);
+
+enum ufs_trace_tsf_t {
+	UFS_TSF_CDB = 0,
+	UFS_TSF_OSF = 1,
+	UFS_TSF_TM_INPUT = 2,
+	UFS_TSF_TM_OUTPUT = 3,
+};
+
+typedef void (*btf_trace_ufshcd_upiu)(void *, const char *, enum ufs_trace_str_t, void *, void *, enum ufs_trace_tsf_t);
+
+typedef void (*btf_trace_ufshcd_exception_event)(void *, const char *, u16);
+
+enum ufs_dev_pwr_mode {
+	UFS_ACTIVE_PWR_MODE = 1,
+	UFS_SLEEP_PWR_MODE = 2,
+	UFS_POWERDOWN_PWR_MODE = 3,
+	UFS_DEEPSLEEP_PWR_MODE = 4,
+};
+
+enum uic_link_state {
+	UIC_LINK_OFF_STATE = 0,
+	UIC_LINK_ACTIVE_STATE = 1,
+	UIC_LINK_HIBERN8_STATE = 2,
+	UIC_LINK_BROKEN_STATE = 3,
+};
+
+struct ufs_pm_lvl_states {
+	enum ufs_dev_pwr_mode dev_state;
+	enum uic_link_state link_state;
+};
+
+struct ufs_dev_quirk {
+	u16 wmanufacturerid;
+	const u8 *model;
+	unsigned int quirk;
+};
+
+enum ufs_ref_clk_freq {
+	REF_CLK_FREQ_19_2_MHZ = 0,
+	REF_CLK_FREQ_26_MHZ = 1,
+	REF_CLK_FREQ_38_4_MHZ = 2,
+	REF_CLK_FREQ_52_MHZ = 3,
+	REF_CLK_FREQ_INVAL = -1,
+};
+
+struct ufs_ref_clk {
+	unsigned long freq_hz;
+	enum ufs_ref_clk_freq val;
+};
+
+struct devfreq_simple_ondemand_data {
+	unsigned int upthreshold;
+	unsigned int downdifferential;
+};
+
+struct ufs_hba_variant_params {
+	struct devfreq_dev_profile devfreq_profile;
+	struct devfreq_simple_ondemand_data ondemand_data;
+	u16 hba_enable_delay_us;
+	u32 wb_flush_threshold;
+};
+
+enum ufs_pm_level {
+	UFS_PM_LVL_0 = 0,
+	UFS_PM_LVL_1 = 1,
+	UFS_PM_LVL_2 = 2,
+	UFS_PM_LVL_3 = 3,
+	UFS_PM_LVL_4 = 4,
+	UFS_PM_LVL_5 = 5,
+	UFS_PM_LVL_6 = 6,
+	UFS_PM_LVL_MAX = 7,
+};
+
+enum ufs_notify_change_status {
+	PRE_CHANGE = 0,
+	POST_CHANGE = 1,
+};
+
+enum uic_cmd_dme {
+	UIC_CMD_DME_GET = 1,
+	UIC_CMD_DME_SET = 2,
+	UIC_CMD_DME_PEER_GET = 3,
+	UIC_CMD_DME_PEER_SET = 4,
+	UIC_CMD_DME_POWERON = 16,
+	UIC_CMD_DME_POWEROFF = 17,
+	UIC_CMD_DME_ENABLE = 18,
+	UIC_CMD_DME_RESET = 20,
+	UIC_CMD_DME_END_PT_RST = 21,
+	UIC_CMD_DME_LINK_STARTUP = 22,
+	UIC_CMD_DME_HIBER_ENTER = 23,
+	UIC_CMD_DME_HIBER_EXIT = 24,
+	UIC_CMD_DME_TEST_MODE = 26,
+};
+
+enum ufs_pm_op {
+	UFS_RUNTIME_PM = 0,
+	UFS_SYSTEM_PM = 1,
+	UFS_SHUTDOWN_PM = 2,
+};
+
+enum ufs_event_type {
+	UFS_EVT_PA_ERR = 0,
+	UFS_EVT_DL_ERR = 1,
+	UFS_EVT_NL_ERR = 2,
+	UFS_EVT_TL_ERR = 3,
+	UFS_EVT_DME_ERR = 4,
+	UFS_EVT_AUTO_HIBERN8_ERR = 5,
+	UFS_EVT_FATAL_ERR = 6,
+	UFS_EVT_LINK_STARTUP_FAIL = 7,
+	UFS_EVT_RESUME_ERR = 8,
+	UFS_EVT_SUSPEND_ERR = 9,
+	UFS_EVT_WL_SUSP_ERR = 10,
+	UFS_EVT_WL_RES_ERR = 11,
+	UFS_EVT_DEV_RESET = 12,
+	UFS_EVT_HOST_RESET = 13,
+	UFS_EVT_ABORT = 14,
+	UFS_EVT_CNT = 15,
+};
+
+enum ufshcd_state {
+	UFSHCD_STATE_RESET = 0,
+	UFSHCD_STATE_OPERATIONAL = 1,
+	UFSHCD_STATE_EH_SCHEDULED_NON_FATAL = 2,
+	UFSHCD_STATE_EH_SCHEDULED_FATAL = 3,
+	UFSHCD_STATE_ERROR = 4,
+};
+
+enum dev_cmd_type {
+	DEV_CMD_TYPE_NOP = 0,
+	DEV_CMD_TYPE_QUERY = 1,
+	DEV_CMD_TYPE_RPMB = 2,
+};
+
+enum clk_gating_state {
+	CLKS_OFF = 0,
+	CLKS_ON = 1,
+	REQ_CLKS_OFF = 2,
+	REQ_CLKS_ON = 3,
+};
+
+enum bkops_status {
+	BKOPS_STATUS_NO_OP = 0,
+	BKOPS_STATUS_NON_CRITICAL = 1,
+	BKOPS_STATUS_PERF_IMPACT = 2,
+	BKOPS_STATUS_CRITICAL = 3,
+	BKOPS_STATUS_MAX = 3,
+};
+
+enum {
+	REG_CONTROLLER_CAPABILITIES = 0,
+	REG_MCQCAP = 4,
+	REG_UFS_VERSION = 8,
+	REG_CONTROLLER_DEV_ID = 16,
+	REG_CONTROLLER_PROD_ID = 20,
+	REG_AUTO_HIBERNATE_IDLE_TIMER = 24,
+	REG_INTERRUPT_STATUS = 32,
+	REG_INTERRUPT_ENABLE = 36,
+	REG_CONTROLLER_STATUS = 48,
+	REG_CONTROLLER_ENABLE = 52,
+	REG_UIC_ERROR_CODE_PHY_ADAPTER_LAYER = 56,
+	REG_UIC_ERROR_CODE_DATA_LINK_LAYER = 60,
+	REG_UIC_ERROR_CODE_NETWORK_LAYER = 64,
+	REG_UIC_ERROR_CODE_TRANSPORT_LAYER = 68,
+	REG_UIC_ERROR_CODE_DME = 72,
+	REG_UTP_TRANSFER_REQ_INT_AGG_CONTROL = 76,
+	REG_UTP_TRANSFER_REQ_LIST_BASE_L = 80,
+	REG_UTP_TRANSFER_REQ_LIST_BASE_H = 84,
+	REG_UTP_TRANSFER_REQ_DOOR_BELL = 88,
+	REG_UTP_TRANSFER_REQ_LIST_CLEAR = 92,
+	REG_UTP_TRANSFER_REQ_LIST_RUN_STOP = 96,
+	REG_UTP_TASK_REQ_LIST_BASE_L = 112,
+	REG_UTP_TASK_REQ_LIST_BASE_H = 116,
+	REG_UTP_TASK_REQ_DOOR_BELL = 120,
+	REG_UTP_TASK_REQ_LIST_CLEAR = 124,
+	REG_UTP_TASK_REQ_LIST_RUN_STOP = 128,
+	REG_UIC_COMMAND = 144,
+	REG_UIC_COMMAND_ARG_1 = 148,
+	REG_UIC_COMMAND_ARG_2 = 152,
+	REG_UIC_COMMAND_ARG_3 = 156,
+	UFSHCI_REG_SPACE_SIZE = 160,
+	REG_UFS_CCAP = 256,
+	REG_UFS_CRYPTOCAP = 260,
+	REG_UFS_MEM_CFG = 768,
+	REG_UFS_MCQ_CFG = 896,
+	REG_UFS_ESILBA = 900,
+	REG_UFS_ESIUBA = 904,
+	UFSHCI_CRYPTO_REG_SPACE_SIZE = 1024,
+};
+
+enum ufs_unipro_ver {
+	UFS_UNIPRO_VER_RESERVED = 0,
+	UFS_UNIPRO_VER_1_40 = 1,
+	UFS_UNIPRO_VER_1_41 = 2,
+	UFS_UNIPRO_VER_1_6 = 3,
+	UFS_UNIPRO_VER_1_61 = 4,
+	UFS_UNIPRO_VER_1_8 = 5,
+	UFS_UNIPRO_VER_MAX = 6,
+	UFS_UNIPRO_VER_MASK = 15,
+};
+
+enum ufshcd_quirks {
+	UFSHCD_QUIRK_BROKEN_INTR_AGGR = 1,
+	UFSHCD_QUIRK_DELAY_BEFORE_DME_CMDS = 2,
+	UFSHCD_QUIRK_BROKEN_LCC = 4,
+	UFSHCD_QUIRK_BROKEN_PA_RXHSUNTERMCAP = 8,
+	UFSHCD_QUIRK_DME_PEER_ACCESS_AUTO_MODE = 16,
+	UFSHCD_QUIRK_BROKEN_UFS_HCI_VERSION = 32,
+	UFSHCI_QUIRK_BROKEN_REQ_LIST_CLR = 64,
+	UFSHCI_QUIRK_SKIP_RESET_INTR_AGGR = 128,
+	UFSHCI_QUIRK_BROKEN_HCE = 256,
+	UFSHCD_QUIRK_PRDT_BYTE_GRAN = 512,
+	UFSHCD_QUIRK_BROKEN_OCS_FATAL_ERROR = 1024,
+	UFSHCD_QUIRK_BROKEN_AUTO_HIBERN8 = 2048,
+	UFSHCI_QUIRK_SKIP_MANUAL_WB_FLUSH_CTRL = 4096,
+	UFSHCD_QUIRK_SKIP_DEF_UNIPRO_TIMEOUT_SETTING = 8192,
+	UFSHCD_QUIRK_BROKEN_UIC_CMD = 32768,
+	UFSHCD_QUIRK_SKIP_PH_CONFIGURATION = 65536,
+	UFSHCD_QUIRK_BROKEN_64BIT_ADDRESS = 131072,
+	UFSHCD_QUIRK_HIBERN_FASTAUTO = 262144,
+	UFSHCD_QUIRK_REINIT_AFTER_MAX_GEAR_SWITCH = 524288,
+	UFSHCD_QUIRK_MCQ_BROKEN_INTR = 1048576,
+	UFSHCD_QUIRK_MCQ_BROKEN_RTC = 2097152,
+};
+
+enum query_opcode {
+	UPIU_QUERY_OPCODE_NOP = 0,
+	UPIU_QUERY_OPCODE_READ_DESC = 1,
+	UPIU_QUERY_OPCODE_WRITE_DESC = 2,
+	UPIU_QUERY_OPCODE_READ_ATTR = 3,
+	UPIU_QUERY_OPCODE_WRITE_ATTR = 4,
+	UPIU_QUERY_OPCODE_READ_FLAG = 5,
+	UPIU_QUERY_OPCODE_SET_FLAG = 6,
+	UPIU_QUERY_OPCODE_CLEAR_FLAG = 7,
+	UPIU_QUERY_OPCODE_TOGGLE_FLAG = 8,
+};
+
+enum flag_idn {
+	QUERY_FLAG_IDN_FDEVICEINIT = 1,
+	QUERY_FLAG_IDN_PERMANENT_WPE = 2,
+	QUERY_FLAG_IDN_PWR_ON_WPE = 3,
+	QUERY_FLAG_IDN_BKOPS_EN = 4,
+	QUERY_FLAG_IDN_LIFE_SPAN_MODE_ENABLE = 5,
+	QUERY_FLAG_IDN_PURGE_ENABLE = 6,
+	QUERY_FLAG_IDN_RESERVED2 = 7,
+	QUERY_FLAG_IDN_FPHYRESOURCEREMOVAL = 8,
+	QUERY_FLAG_IDN_BUSY_RTC = 9,
+	QUERY_FLAG_IDN_RESERVED3 = 10,
+	QUERY_FLAG_IDN_PERMANENTLY_DISABLE_FW_UPDATE = 11,
+	QUERY_FLAG_IDN_WB_EN = 14,
+	QUERY_FLAG_IDN_WB_BUFF_FLUSH_EN = 15,
+	QUERY_FLAG_IDN_WB_BUFF_FLUSH_DURING_HIBERN8 = 16,
+	QUERY_FLAG_IDN_HPB_RESET = 17,
+	QUERY_FLAG_IDN_HPB_EN = 18,
+};
+
+enum {
+	UPIU_QUERY_FUNC_STANDARD_READ_REQUEST = 1,
+	UPIU_QUERY_FUNC_STANDARD_WRITE_REQUEST = 129,
+};
+
+enum attr_idn {
+	QUERY_ATTR_IDN_BOOT_LU_EN = 0,
+	QUERY_ATTR_IDN_MAX_HPB_SINGLE_CMD = 1,
+	QUERY_ATTR_IDN_POWER_MODE = 2,
+	QUERY_ATTR_IDN_ACTIVE_ICC_LVL = 3,
+	QUERY_ATTR_IDN_OOO_DATA_EN = 4,
+	QUERY_ATTR_IDN_BKOPS_STATUS = 5,
+	QUERY_ATTR_IDN_PURGE_STATUS = 6,
+	QUERY_ATTR_IDN_MAX_DATA_IN = 7,
+	QUERY_ATTR_IDN_MAX_DATA_OUT = 8,
+	QUERY_ATTR_IDN_DYN_CAP_NEEDED = 9,
+	QUERY_ATTR_IDN_REF_CLK_FREQ = 10,
+	QUERY_ATTR_IDN_CONF_DESC_LOCK = 11,
+	QUERY_ATTR_IDN_MAX_NUM_OF_RTT = 12,
+	QUERY_ATTR_IDN_EE_CONTROL = 13,
+	QUERY_ATTR_IDN_EE_STATUS = 14,
+	QUERY_ATTR_IDN_SECONDS_PASSED = 15,
+	QUERY_ATTR_IDN_CNTX_CONF = 16,
+	QUERY_ATTR_IDN_CORR_PRG_BLK_NUM = 17,
+	QUERY_ATTR_IDN_RESERVED2 = 18,
+	QUERY_ATTR_IDN_RESERVED3 = 19,
+	QUERY_ATTR_IDN_FFU_STATUS = 20,
+	QUERY_ATTR_IDN_PSA_STATE = 21,
+	QUERY_ATTR_IDN_PSA_DATA_SIZE = 22,
+	QUERY_ATTR_IDN_REF_CLK_GATING_WAIT_TIME = 23,
+	QUERY_ATTR_IDN_CASE_ROUGH_TEMP = 24,
+	QUERY_ATTR_IDN_HIGH_TEMP_BOUND = 25,
+	QUERY_ATTR_IDN_LOW_TEMP_BOUND = 26,
+	QUERY_ATTR_IDN_WB_FLUSH_STATUS = 28,
+	QUERY_ATTR_IDN_AVAIL_WB_BUFF_SIZE = 29,
+	QUERY_ATTR_IDN_WB_BUFF_LIFE_TIME_EST = 30,
+	QUERY_ATTR_IDN_CURR_WB_BUFF_SIZE = 31,
+	QUERY_ATTR_IDN_EXT_IID_EN = 42,
+	QUERY_ATTR_IDN_TIMESTAMP = 48,
+};
+
+enum desc_idn {
+	QUERY_DESC_IDN_DEVICE = 0,
+	QUERY_DESC_IDN_CONFIGURATION = 1,
+	QUERY_DESC_IDN_UNIT = 2,
+	QUERY_DESC_IDN_RFU_0 = 3,
+	QUERY_DESC_IDN_INTERCONNECT = 4,
+	QUERY_DESC_IDN_STRING = 5,
+	QUERY_DESC_IDN_RFU_1 = 6,
+	QUERY_DESC_IDN_GEOMETRY = 7,
+	QUERY_DESC_IDN_POWER = 8,
+	QUERY_DESC_IDN_HEALTH = 9,
+	QUERY_DESC_IDN_MAX = 10,
+};
+
+enum desc_header_offset {
+	QUERY_DESC_LENGTH_OFFSET = 0,
+	QUERY_DESC_DESC_TYPE_OFFSET = 1,
+};
+
+enum ufs_hs_gear_tag {
+	UFS_HS_DONT_CHANGE = 0,
+	UFS_HS_G1 = 1,
+	UFS_HS_G2 = 2,
+	UFS_HS_G3 = 3,
+	UFS_HS_G4 = 4,
+	UFS_HS_G5 = 5,
+};
+
+enum {
+	FAST_MODE = 1,
+	SLOW_MODE = 2,
+	FASTAUTO_MODE = 4,
+	SLOWAUTO_MODE = 5,
+	UNCHANGED = 7,
+};
+
+enum {
+	UFSHCD_EH_IN_PROGRESS = 1,
+};
+
+enum utp_ocs {
+	OCS_SUCCESS = 0,
+	OCS_INVALID_CMD_TABLE_ATTR = 1,
+	OCS_INVALID_PRDT_ATTR = 2,
+	OCS_MISMATCH_DATA_BUF_SIZE = 3,
+	OCS_MISMATCH_RESP_UPIU_SIZE = 4,
+	OCS_PEER_COMM_FAILURE = 5,
+	OCS_ABORTED = 6,
+	OCS_FATAL_ERROR = 7,
+	OCS_DEVICE_FATAL_ERROR = 8,
+	OCS_INVALID_CRYPTO_CONFIG = 9,
+	OCS_GENERAL_CRYPTO_ERROR = 10,
+	OCS_INVALID_COMMAND_STATUS = 15,
+};
+
+enum {
+	UTP_CMD_TYPE_SCSI = 0,
+	UTP_CMD_TYPE_UFS = 1,
+	UTP_CMD_TYPE_DEV_MANAGE = 2,
+};
+
+enum {
+	UTP_CMD_TYPE_UFS_STORAGE = 1,
+};
+
+enum {
+	MASK_OCS = 15,
+};
+
+enum upiu_request_transaction {
+	UPIU_TRANSACTION_NOP_OUT = 0,
+	UPIU_TRANSACTION_COMMAND = 1,
+	UPIU_TRANSACTION_DATA_OUT = 2,
+	UPIU_TRANSACTION_TASK_REQ = 4,
+	UPIU_TRANSACTION_QUERY_REQ = 22,
+};
+
+enum {
+	UFS_UPIU_REPORT_LUNS_WLUN = 129,
+	UFS_UPIU_UFS_DEVICE_WLUN = 208,
+	UFS_UPIU_BOOT_WLUN = 176,
+	UFS_UPIU_RPMB_WLUN = 196,
+};
+
+enum {
+	MASK_TRANSFER_REQUESTS_SLOTS = 31,
+	MASK_TASK_MANAGEMENT_REQUEST_SLOTS = 458752,
+	MASK_EHSLUTRD_SUPPORTED = 4194304,
+	MASK_AUTO_HIBERN8_SUPPORT = 8388608,
+	MASK_64_ADDRESSING_SUPPORT = 16777216,
+	MASK_OUT_OF_ORDER_DATA_DELIVERY_SUPPORT = 33554432,
+	MASK_UIC_DME_TEST_MODE_SUPPORT = 67108864,
+	MASK_CRYPTO_SUPPORT = 268435456,
+	MASK_MCQ_SUPPORT = 1073741824,
+};
+
+enum {
+	UFS_ABORT_TASK = 1,
+	UFS_ABORT_TASK_SET = 2,
+	UFS_CLEAR_TASK_SET = 4,
+	UFS_LOGICAL_RESET = 8,
+	UFS_QUERY_TASK = 128,
+	UFS_QUERY_TASK_SET = 129,
+};
+
+enum {
+	UPIU_TASK_MANAGEMENT_FUNC_COMPL = 0,
+	UPIU_TASK_MANAGEMENT_FUNC_NOT_SUPPORTED = 4,
+	UPIU_TASK_MANAGEMENT_FUNC_SUCCEEDED = 8,
+	UPIU_TASK_MANAGEMENT_FUNC_FAILED = 5,
+	UPIU_INCORRECT_LOGICAL_UNIT_NO = 9,
+};
+
+enum {
+	UFSHCD_MAX_CHANNEL = 0,
+	UFSHCD_MAX_ID = 1,
+	UFSHCD_CMD_PER_LUN = 31,
+	UFSHCD_CAN_QUEUE = 31,
+};
+
+enum ufshcd_caps {
+	UFSHCD_CAP_CLK_GATING = 1,
+	UFSHCD_CAP_HIBERN8_WITH_CLK_GATING = 2,
+	UFSHCD_CAP_CLK_SCALING = 4,
+	UFSHCD_CAP_AUTO_BKOPS_SUSPEND = 8,
+	UFSHCD_CAP_INTR_AGGR = 16,
+	UFSHCD_CAP_KEEP_AUTO_BKOPS_ENABLED_EXCEPT_SUSPEND = 32,
+	UFSHCD_CAP_RPM_AUTOSUSPEND = 64,
+	UFSHCD_CAP_WB_EN = 128,
+	UFSHCD_CAP_CRYPTO = 256,
+	UFSHCD_CAP_AGGR_POWER_COLLAPSE = 512,
+	UFSHCD_CAP_DEEPSLEEP = 1024,
+	UFSHCD_CAP_TEMP_NOTIF = 2048,
+	UFSHCD_CAP_WB_WITH_CLK_SCALING = 4096,
+};
+
+enum {
+	UIC_CMD_TIMEOUT_DEFAULT = 500,
+	UIC_CMD_TIMEOUT_MAX = 2000,
+};
+
+enum {
+	PWR_OK = 0,
+	PWR_LOCAL = 1,
+	PWR_REMOTE = 2,
+	PWR_BUSY = 3,
+	PWR_ERROR_CAP = 4,
+	PWR_FATAL_ERROR = 5,
+};
+
+enum {
+	INTERRUPT_MASK_ALL_VER_10 = 200703,
+	INTERRUPT_MASK_RW_VER_10 = 196608,
+	INTERRUPT_MASK_ALL_VER_11 = 204799,
+	INTERRUPT_MASK_ALL_VER_21 = 466943,
+};
+
+enum ufshcd_android_quirks {
+	UFSHCD_ANDROID_QUIRK_CUSTOM_CRYPTO_PROFILE = 1,
+	UFSHCD_ANDROID_QUIRK_BROKEN_CRYPTO_ENABLE = 2,
+	UFSHCD_ANDROID_QUIRK_KEYS_IN_PRDT = 4,
+};
+
+enum {
+	UPIU_RSP_FLAG_UNDERFLOW = 32,
+	UPIU_RSP_FLAG_OVERFLOW = 64,
+};
+
+enum upiu_response_transaction {
+	UPIU_TRANSACTION_NOP_IN = 32,
+	UPIU_TRANSACTION_RESPONSE = 33,
+	UPIU_TRANSACTION_DATA_IN = 34,
+	UPIU_TRANSACTION_TASK_RSP = 36,
+	UPIU_TRANSACTION_READY_XFER = 49,
+	UPIU_TRANSACTION_QUERY_RSP = 54,
+	UPIU_TRANSACTION_REJECT_UPIU = 63,
+};
+
+enum {
+	MASK_EE_STATUS = 65535,
+	MASK_EE_DYNCAP_EVENT = 1,
+	MASK_EE_SYSPOOL_EVENT = 2,
+	MASK_EE_URGENT_BKOPS = 4,
+	MASK_EE_TOO_HIGH_TEMP = 8,
+	MASK_EE_TOO_LOW_TEMP = 16,
+	MASK_EE_WRITEBOOSTER_EVENT = 32,
+	MASK_EE_PERFORMANCE_THROTTLING = 64,
+};
+
+enum {
+	WB_BUF_MODE_LU_DEDICATED = 0,
+	WB_BUF_MODE_SHARED = 1,
+};
+
+enum {
+	UFSHCD_POLL_FROM_INTERRUPT_CONTEXT = -1,
+};
+
+enum {
+	UFSHCD_UIC_DL_PA_INIT_ERROR = 1,
+	UFSHCD_UIC_DL_NAC_RECEIVED_ERROR = 2,
+	UFSHCD_UIC_DL_TCx_REPLAY_ERROR = 4,
+	UFSHCD_UIC_NL_ERROR = 8,
+	UFSHCD_UIC_TL_ERROR = 16,
+	UFSHCD_UIC_DME_ERROR = 32,
+	UFSHCD_UIC_PA_GENERIC_ERROR = 64,
+};
+
+enum utp_data_direction {
+	UTP_NO_DATA_TRANSFER = 0,
+	UTP_HOST_TO_DEVICE = 1,
+	UTP_DEVICE_TO_HOST = 2,
+};
+
+enum {
+	UPIU_CMD_FLAGS_NONE = 0,
+	UPIU_CMD_FLAGS_WRITE = 32,
+	UPIU_CMD_FLAGS_READ = 64,
+};
+
+enum {
+	MASK_TM_SERVICE_RESP = 255,
+};
+
+enum ufs_pwm_gear_tag {
+	UFS_PWM_DONT_CHANGE = 0,
+	UFS_PWM_G1 = 1,
+	UFS_PWM_G2 = 2,
+	UFS_PWM_G3 = 3,
+	UFS_PWM_G4 = 4,
+	UFS_PWM_G5 = 5,
+	UFS_PWM_G6 = 6,
+	UFS_PWM_G7 = 7,
+};
+
+enum ufs_lanes {
+	UFS_LANE_DONT_CHANGE = 0,
+	UFS_LANE_1 = 1,
+	UFS_LANE_2 = 2,
+};
+
+enum geometry_desc_param {
+	GEOMETRY_DESC_PARAM_LEN = 0,
+	GEOMETRY_DESC_PARAM_TYPE = 1,
+	GEOMETRY_DESC_PARAM_DEV_CAP = 4,
+	GEOMETRY_DESC_PARAM_MAX_NUM_LUN = 12,
+	GEOMETRY_DESC_PARAM_SEG_SIZE = 13,
+	GEOMETRY_DESC_PARAM_ALLOC_UNIT_SIZE = 17,
+	GEOMETRY_DESC_PARAM_MIN_BLK_SIZE = 18,
+	GEOMETRY_DESC_PARAM_OPT_RD_BLK_SIZE = 19,
+	GEOMETRY_DESC_PARAM_OPT_WR_BLK_SIZE = 20,
+	GEOMETRY_DESC_PARAM_MAX_IN_BUF_SIZE = 21,
+	GEOMETRY_DESC_PARAM_MAX_OUT_BUF_SIZE = 22,
+	GEOMETRY_DESC_PARAM_RPMB_RW_SIZE = 23,
+	GEOMETRY_DESC_PARAM_DYN_CAP_RSRC_PLC = 24,
+	GEOMETRY_DESC_PARAM_DATA_ORDER = 25,
+	GEOMETRY_DESC_PARAM_MAX_NUM_CTX = 26,
+	GEOMETRY_DESC_PARAM_TAG_UNIT_SIZE = 27,
+	GEOMETRY_DESC_PARAM_TAG_RSRC_SIZE = 28,
+	GEOMETRY_DESC_PARAM_SEC_RM_TYPES = 29,
+	GEOMETRY_DESC_PARAM_MEM_TYPES = 30,
+	GEOMETRY_DESC_PARAM_SCM_MAX_NUM_UNITS = 32,
+	GEOMETRY_DESC_PARAM_SCM_CAP_ADJ_FCTR = 36,
+	GEOMETRY_DESC_PARAM_NPM_MAX_NUM_UNITS = 38,
+	GEOMETRY_DESC_PARAM_NPM_CAP_ADJ_FCTR = 42,
+	GEOMETRY_DESC_PARAM_ENM1_MAX_NUM_UNITS = 44,
+	GEOMETRY_DESC_PARAM_ENM1_CAP_ADJ_FCTR = 48,
+	GEOMETRY_DESC_PARAM_ENM2_MAX_NUM_UNITS = 50,
+	GEOMETRY_DESC_PARAM_ENM2_CAP_ADJ_FCTR = 54,
+	GEOMETRY_DESC_PARAM_ENM3_MAX_NUM_UNITS = 56,
+	GEOMETRY_DESC_PARAM_ENM3_CAP_ADJ_FCTR = 60,
+	GEOMETRY_DESC_PARAM_ENM4_MAX_NUM_UNITS = 62,
+	GEOMETRY_DESC_PARAM_ENM4_CAP_ADJ_FCTR = 66,
+	GEOMETRY_DESC_PARAM_OPT_LOG_BLK_SIZE = 68,
+	GEOMETRY_DESC_PARAM_HPB_REGION_SIZE = 72,
+	GEOMETRY_DESC_PARAM_HPB_NUMBER_LU = 73,
+	GEOMETRY_DESC_PARAM_HPB_SUBREGION_SIZE = 74,
+	GEOMETRY_DESC_PARAM_HPB_MAX_ACTIVE_REGS = 75,
+	GEOMETRY_DESC_PARAM_WB_MAX_ALLOC_UNITS = 79,
+	GEOMETRY_DESC_PARAM_WB_MAX_WB_LUNS = 83,
+	GEOMETRY_DESC_PARAM_WB_BUFF_CAP_ADJ = 84,
+	GEOMETRY_DESC_PARAM_WB_SUP_RED_TYPE = 85,
+	GEOMETRY_DESC_PARAM_WB_SUP_WB_TYPE = 86,
+};
+
+enum device_desc_param {
+	DEVICE_DESC_PARAM_LEN = 0,
+	DEVICE_DESC_PARAM_TYPE = 1,
+	DEVICE_DESC_PARAM_DEVICE_TYPE = 2,
+	DEVICE_DESC_PARAM_DEVICE_CLASS = 3,
+	DEVICE_DESC_PARAM_DEVICE_SUB_CLASS = 4,
+	DEVICE_DESC_PARAM_PRTCL = 5,
+	DEVICE_DESC_PARAM_NUM_LU = 6,
+	DEVICE_DESC_PARAM_NUM_WLU = 7,
+	DEVICE_DESC_PARAM_BOOT_ENBL = 8,
+	DEVICE_DESC_PARAM_DESC_ACCSS_ENBL = 9,
+	DEVICE_DESC_PARAM_INIT_PWR_MODE = 10,
+	DEVICE_DESC_PARAM_HIGH_PR_LUN = 11,
+	DEVICE_DESC_PARAM_SEC_RMV_TYPE = 12,
+	DEVICE_DESC_PARAM_SEC_LU = 13,
+	DEVICE_DESC_PARAM_BKOP_TERM_LT = 14,
+	DEVICE_DESC_PARAM_ACTVE_ICC_LVL = 15,
+	DEVICE_DESC_PARAM_SPEC_VER = 16,
+	DEVICE_DESC_PARAM_MANF_DATE = 18,
+	DEVICE_DESC_PARAM_MANF_NAME = 20,
+	DEVICE_DESC_PARAM_PRDCT_NAME = 21,
+	DEVICE_DESC_PARAM_SN = 22,
+	DEVICE_DESC_PARAM_OEM_ID = 23,
+	DEVICE_DESC_PARAM_MANF_ID = 24,
+	DEVICE_DESC_PARAM_UD_OFFSET = 26,
+	DEVICE_DESC_PARAM_UD_LEN = 27,
+	DEVICE_DESC_PARAM_RTT_CAP = 28,
+	DEVICE_DESC_PARAM_FRQ_RTC = 29,
+	DEVICE_DESC_PARAM_UFS_FEAT = 31,
+	DEVICE_DESC_PARAM_FFU_TMT = 32,
+	DEVICE_DESC_PARAM_Q_DPTH = 33,
+	DEVICE_DESC_PARAM_DEV_VER = 34,
+	DEVICE_DESC_PARAM_NUM_SEC_WPA = 36,
+	DEVICE_DESC_PARAM_PSA_MAX_DATA = 37,
+	DEVICE_DESC_PARAM_PSA_TMT = 41,
+	DEVICE_DESC_PARAM_PRDCT_REV = 42,
+	DEVICE_DESC_PARAM_HPB_VER = 64,
+	DEVICE_DESC_PARAM_HPB_CONTROL = 66,
+	DEVICE_DESC_PARAM_EXT_UFS_FEATURE_SUP = 79,
+	DEVICE_DESC_PARAM_WB_PRESRV_USRSPC_EN = 83,
+	DEVICE_DESC_PARAM_WB_TYPE = 84,
+	DEVICE_DESC_PARAM_WB_SHARED_ALLOC_UNITS = 85,
+};
+
+enum {
+	UFS_DEV_LOW_TEMP_NOTIF = 16,
+	UFS_DEV_HIGH_TEMP_NOTIF = 32,
+	UFS_DEV_EXT_TEMP_NOTIF = 64,
+	UFS_DEV_HPB_SUPPORT = 128,
+	UFS_DEV_WRITE_BOOSTER_SUP = 256,
+	UFS_DEV_EXT_IID_SUP = 65536,
+};
+
+enum unit_desc_param {
+	UNIT_DESC_PARAM_LEN = 0,
+	UNIT_DESC_PARAM_TYPE = 1,
+	UNIT_DESC_PARAM_UNIT_INDEX = 2,
+	UNIT_DESC_PARAM_LU_ENABLE = 3,
+	UNIT_DESC_PARAM_BOOT_LUN_ID = 4,
+	UNIT_DESC_PARAM_LU_WR_PROTECT = 5,
+	UNIT_DESC_PARAM_LU_Q_DEPTH = 6,
+	UNIT_DESC_PARAM_PSA_SENSITIVE = 7,
+	UNIT_DESC_PARAM_MEM_TYPE = 8,
+	UNIT_DESC_PARAM_DATA_RELIABILITY = 9,
+	UNIT_DESC_PARAM_LOGICAL_BLK_SIZE = 10,
+	UNIT_DESC_PARAM_LOGICAL_BLK_COUNT = 11,
+	UNIT_DESC_PARAM_ERASE_BLK_SIZE = 19,
+	UNIT_DESC_PARAM_PROVISIONING_TYPE = 23,
+	UNIT_DESC_PARAM_PHY_MEM_RSRC_CNT = 24,
+	UNIT_DESC_PARAM_CTX_CAPABILITIES = 32,
+	UNIT_DESC_PARAM_LARGE_UNIT_SIZE_M1 = 34,
+	UNIT_DESC_PARAM_HPB_LU_MAX_ACTIVE_RGNS = 35,
+	UNIT_DESC_PARAM_HPB_PIN_RGN_START_OFF = 37,
+	UNIT_DESC_PARAM_HPB_NUM_PIN_RGNS = 39,
+	UNIT_DESC_PARAM_WB_BUF_ALLOC_UNITS = 41,
+};
+
+enum {
+	PA_HS_MODE_A = 1,
+	PA_HS_MODE_B = 2,
+};
+
+enum power_desc_param_offset {
+	PWR_DESC_LEN = 0,
+	PWR_DESC_TYPE = 1,
+	PWR_DESC_ACTIVE_LVLS_VCC_0 = 2,
+	PWR_DESC_ACTIVE_LVLS_VCCQ_0 = 34,
+	PWR_DESC_ACTIVE_LVLS_VCCQ2_0 = 66,
+};
+
+enum {
+	UFSHCD_NANO_AMP = 0,
+	UFSHCD_MICRO_AMP = 1,
+	UFSHCD_MILI_AMP = 2,
+	UFSHCD_AMP = 3,
+};
+
+enum {
+	UPIU_COMMAND_SET_TYPE_SCSI = 0,
+	UPIU_COMMAND_SET_TYPE_UFS = 1,
+	UPIU_COMMAND_SET_TYPE_QUERY = 2,
+};
+
+enum ufs_lu_wp_type {
+	UFS_LU_NO_WP = 0,
+	UFS_LU_POWER_ON_WP = 1,
+	UFS_LU_PERM_WP = 2,
+};
+
+enum rpmb_unit_desc_param {
+	RPMB_UNIT_DESC_PARAM_LEN = 0,
+	RPMB_UNIT_DESC_PARAM_TYPE = 1,
+	RPMB_UNIT_DESC_PARAM_UNIT_INDEX = 2,
+	RPMB_UNIT_DESC_PARAM_LU_ENABLE = 3,
+	RPMB_UNIT_DESC_PARAM_BOOT_LUN_ID = 4,
+	RPMB_UNIT_DESC_PARAM_LU_WR_PROTECT = 5,
+	RPMB_UNIT_DESC_PARAM_LU_Q_DEPTH = 6,
+	RPMB_UNIT_DESC_PARAM_PSA_SENSITIVE = 7,
+	RPMB_UNIT_DESC_PARAM_MEM_TYPE = 8,
+	RPMB_UNIT_DESC_PARAM_REGION_EN = 9,
+	RPMB_UNIT_DESC_PARAM_LOGICAL_BLK_SIZE = 10,
+	RPMB_UNIT_DESC_PARAM_LOGICAL_BLK_COUNT = 11,
+	RPMB_UNIT_DESC_PARAM_REGION0_SIZE = 19,
+	RPMB_UNIT_DESC_PARAM_REGION1_SIZE = 20,
+	RPMB_UNIT_DESC_PARAM_REGION2_SIZE = 21,
+	RPMB_UNIT_DESC_PARAM_REGION3_SIZE = 22,
+	RPMB_UNIT_DESC_PARAM_PROVISIONING_TYPE = 23,
+	RPMB_UNIT_DESC_PARAM_PHY_MEM_RSRC_CNT = 24,
+};
+
+enum {
+	MASK_EXT_IID_SUPPORT = 1024,
+};
+
+enum {
+	TASK_REQ_UPIU_SIZE_DWORDS = 8,
+	TASK_RSP_UPIU_SIZE_DWORDS = 8,
+	ALIGNED_UPIU_SIZE = 512,
+};
+
+struct trace_event_raw_ufshcd_clk_gating {
+	struct trace_entry ent;
+	u32 __data_loc_dev_name;
+	int state;
+	char __data[0];
+};
+
+struct trace_event_raw_ufshcd_clk_scaling {
+	struct trace_entry ent;
+	u32 __data_loc_dev_name;
+	u32 __data_loc_state;
+	u32 __data_loc_clk;
+	u32 prev_state;
+	u32 curr_state;
+	char __data[0];
+};
+
+struct trace_event_raw_ufshcd_auto_bkops_state {
+	struct trace_entry ent;
+	u32 __data_loc_dev_name;
+	u32 __data_loc_state;
+	char __data[0];
+};
+
+struct trace_event_raw_ufshcd_profiling_template {
+	struct trace_entry ent;
+	u32 __data_loc_dev_name;
+	u32 __data_loc_profile_info;
+	s64 time_us;
+	int err;
+	char __data[0];
+};
+
+struct trace_event_raw_ufshcd_template {
+	struct trace_entry ent;
+	s64 usecs;
+	int err;
+	u32 __data_loc_dev_name;
+	int dev_state;
+	int link_state;
+	char __data[0];
+};
+
+struct trace_event_raw_ufshcd_command {
+	struct trace_entry ent;
+	u32 __data_loc_dev_name;
+	enum ufs_trace_str_t str_t;
+	unsigned int tag;
+	u32 doorbell;
+	u32 hwq_id;
+	u32 intr;
+	u64 lba;
+	int transfer_len;
+	u8 opcode;
+	u8 group_id;
+	char __data[0];
+};
+
+struct trace_event_raw_ufshcd_uic_command {
+	struct trace_entry ent;
+	u32 __data_loc_dev_name;
+	enum ufs_trace_str_t str_t;
+	u32 cmd;
+	u32 arg1;
+	u32 arg2;
+	u32 arg3;
+	char __data[0];
+};
+
+struct trace_event_raw_ufshcd_upiu {
+	struct trace_entry ent;
+	u32 __data_loc_dev_name;
+	enum ufs_trace_str_t str_t;
+	unsigned char hdr[12];
+	unsigned char tsf[16];
+	enum ufs_trace_tsf_t tsf_t;
+	char __data[0];
+};
+
+struct trace_event_raw_ufshcd_exception_event {
+	struct trace_entry ent;
+	u32 __data_loc_dev_name;
+	u16 status;
+	char __data[0];
+};
+
+struct utp_upiu_cmd {
+	__be32 exp_data_transfer_len;
+	__u8 cdb[16];
+};
+
+struct utp_upiu_query {
+	__u8 opcode;
+	__u8 idn;
+	__u8 index;
+	__u8 selector;
+	__be16 reserved_osf;
+	__be16 length;
+	__be32 value;
+	__be32 reserved[2];
+};
+
+struct utp_upiu_header {
+	union {
+		struct {
+			__be32 dword_0;
+			__be32 dword_1;
+			__be32 dword_2;
+		};
+		struct {
+			__u8 transaction_code;
+			__u8 flags;
+			__u8 lun;
+			__u8 task_tag;
+			__u8 command_set_type: 4;
+			__u8 iid: 4;
+			union {
+				__u8 tm_function;
+				__u8 query_function;
+			};
+			__u8 response;
+			__u8 status;
+			__u8 ehs_length;
+			__u8 device_information;
+			__be16 data_segment_length;
+		};
+	};
+};
+
+struct utp_upiu_req {
+	struct utp_upiu_header header;
+	union {
+		struct utp_upiu_cmd sc;
+		struct utp_upiu_query qr;
+		struct utp_upiu_query uc;
+	};
+};
+
+struct ufs_clk_info {
+	struct list_head list;
+	struct clk *clk;
+	const char *name;
+	u32 max_freq;
+	u32 min_freq;
+	u32 curr_freq;
+	bool keep_link_active;
+	bool enabled;
+};
+
+struct utp_upiu_query_v4_0 {
+	__u8 opcode;
+	__u8 idn;
+	__u8 index;
+	__u8 selector;
+	__u8 osf3;
+	__u8 osf4;
+	__be16 osf5;
+	__be32 osf6;
+	__be32 osf7;
+	__be32 reserved;
+};
+
+struct utp_cmd_rsp {
+	__be32 residual_transfer_count;
+	__be32 reserved[4];
+	__be16 sense_data_len;
+	u8 sense_data[18];
+};
+
+struct utp_upiu_rsp {
+	struct utp_upiu_header header;
+	union {
+		struct utp_cmd_rsp sr;
+		struct utp_upiu_query qr;
+	};
+};
+
+struct ufshcd_sg_entry {
+	__le64 addr;
+	__le32 reserved;
+	__le32 size;
+};
+
+struct ufs_event_hist {
+	int pos;
+	u32 val[8];
+	u64 tstamp[8];
+	unsigned long long cnt;
+};
+
+struct ufs_stats {
+	u32 last_intr_status;
+	u64 last_intr_ts;
+	u32 hibern8_exit_cnt;
+	u64 last_hibern8_exit_tstamp;
+	struct ufs_event_hist event[15];
+};
+
+struct ufs_query_req {
+	u8 query_func;
+	struct utp_upiu_query upiu_req;
+};
+
+struct ufs_query_res {
+	struct utp_upiu_query upiu_res;
+};
+
+struct ufs_query {
+	struct ufs_query_req request;
+	u8 *descriptor;
+	struct ufs_query_res response;
+};
+
+struct ufs_dev_cmd {
+	enum dev_cmd_type type;
+	struct mutex lock;
+	struct completion *complete;
+	struct ufs_query query;
+};
+
+struct ufs_dev_info {
+	bool f_power_on_wp_en;
+	bool is_lu_power_on_wp;
+	u8 max_lu_supported;
+	u16 wmanufacturerid;
+	u8 *model;
+	u16 wspecversion;
+	u32 clk_gating_wait_us;
+	u8 bqueuedepth;
+	bool wb_enabled;
+	bool wb_buf_flush_enabled;
+	u8 wb_dedicated_lu;
+	u8 wb_buffer_type;
+	bool b_rpm_dev_flush_capable;
+	u8 b_presrv_uspc_en;
+	bool b_advanced_rpmb_en;
+	bool b_ext_iid_en;
+	u64 android_oem_data1;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+struct ufs_vreg;
+
+struct ufs_vreg_info {
+	struct ufs_vreg *vcc;
+	struct ufs_vreg *vccq;
+	struct ufs_vreg *vccq2;
+	struct ufs_vreg *vdd_hba;
+};
+
+struct ufs_pa_layer_attr {
+	u32 gear_rx;
+	u32 gear_tx;
+	u32 lane_rx;
+	u32 lane_tx;
+	u32 pwr_rx;
+	u32 pwr_tx;
+	u32 hs_rate;
+};
+
+struct ufs_pwr_mode_info {
+	bool is_valid;
+	struct ufs_pa_layer_attr info;
+};
+
+struct ufs_clk_gating {
+	struct delayed_work gate_work;
+	struct work_struct ungate_work;
+	enum clk_gating_state state;
+	unsigned long delay_ms;
+	bool is_suspended;
+	struct device_attribute delay_attr;
+	struct device_attribute enable_attr;
+	bool is_enabled;
+	bool is_initialized;
+	int active_reqs;
+	struct workqueue_struct *clk_gating_workq;
+	u64 android_kabi_reserved1;
+};
+
+struct ufs_clk_scaling {
+	int active_reqs;
+	unsigned long tot_busy_t;
+	ktime_t window_start_t;
+	ktime_t busy_start_t;
+	struct device_attribute enable_attr;
+	struct ufs_pa_layer_attr saved_pwr_info;
+	struct workqueue_struct *workq;
+	struct work_struct suspend_work;
+	struct work_struct resume_work;
+	u32 min_gear;
+	bool is_enabled;
+	bool is_allowed;
+	bool is_initialized;
+	bool is_busy_started;
+	bool is_suspended;
+	bool suspend_on_no_request;
+	u64 android_kabi_reserved1;
+};
+
+struct ufs_hba_monitor {
+	unsigned long chunk_size;
+	unsigned long nr_sec_rw[2];
+	ktime_t total_busy[2];
+	unsigned long nr_req[2];
+	ktime_t lat_sum[2];
+	ktime_t lat_max[2];
+	ktime_t lat_min[2];
+	u32 nr_queued[2];
+	ktime_t busy_start_ts[2];
+	ktime_t enabled_ts;
+	bool enabled;
+};
+
+union ufs_crypto_capabilities {
+	__le32 reg_val;
+	struct {
+		u8 num_crypto_cap;
+		u8 config_count;
+		u8 reserved;
+		u8 config_array_ptr;
+	};
+};
+
+struct ufshcd_res_info {
+	const char *name;
+	struct resource *resource;
+	void *base;
+};
+
+struct ufshcd_mcq_opr_info_t {
+	unsigned long offset;
+	unsigned long stride;
+	void *base;
+};
+
+struct utp_transfer_cmd_desc;
+
+struct utp_transfer_req_desc;
+
+struct utp_task_req_desc;
+
+struct ufshcd_lrb;
+
+struct ufs_hba_variant_ops;
+
+struct uic_command;
+
+union ufs_crypto_cap_entry;
+
+struct ufs_hw_queue;
+
+struct ufs_hba {
+	void *mmio_base;
+	struct utp_transfer_cmd_desc *ucdl_base_addr;
+	struct utp_transfer_req_desc *utrdl_base_addr;
+	struct utp_task_req_desc *utmrdl_base_addr;
+	dma_addr_t ucdl_dma_addr;
+	dma_addr_t utrdl_dma_addr;
+	dma_addr_t utmrdl_dma_addr;
+	struct Scsi_Host *host;
+	struct device *dev;
+	struct scsi_device *ufs_device_wlun;
+	enum ufs_dev_pwr_mode curr_dev_pwr_mode;
+	enum uic_link_state uic_link_state;
+	enum ufs_pm_level rpm_lvl;
+	enum ufs_pm_level spm_lvl;
+	int pm_op_in_progress;
+	u32 ahit;
+	struct ufshcd_lrb *lrb;
+	unsigned long outstanding_tasks;
+	spinlock_t outstanding_lock;
+	unsigned long outstanding_reqs;
+	u32 capabilities;
+	int nutrs;
+	u32 mcq_capabilities;
+	int nutmrs;
+	u32 reserved_slot;
+	u32 ufs_version;
+	const struct ufs_hba_variant_ops *vops;
+	struct ufs_hba_variant_params *vps;
+	void *priv;
+	size_t sg_entry_size;
+	unsigned int irq;
+	bool is_irq_enabled;
+	enum ufs_ref_clk_freq dev_ref_clk_freq;
+	unsigned int quirks;
+	unsigned int android_quirks;
+	unsigned int dev_quirks;
+	struct blk_mq_tag_set tmf_tag_set;
+	struct request_queue *tmf_queue;
+	struct request **tmf_rqs;
+	struct uic_command *active_uic_cmd;
+	struct mutex uic_cmd_mutex;
+	struct completion *uic_async_done;
+	enum ufshcd_state ufshcd_state;
+	u32 eh_flags;
+	u32 intr_mask;
+	u16 ee_ctrl_mask;
+	u16 ee_drv_mask;
+	u16 ee_usr_mask;
+	struct mutex ee_ctrl_mutex;
+	bool is_powered;
+	bool shutting_down;
+	struct semaphore host_sem;
+	struct workqueue_struct *eh_wq;
+	struct work_struct eh_work;
+	struct work_struct eeh_work;
+	u32 errors;
+	u32 uic_error;
+	u32 saved_err;
+	u32 saved_uic_err;
+	struct ufs_stats ufs_stats;
+	bool force_reset;
+	bool force_pmc;
+	bool silence_err_logs;
+	struct ufs_dev_cmd dev_cmd;
+	ktime_t last_dme_cmd_tstamp;
+	int nop_out_timeout;
+	struct ufs_dev_info dev_info;
+	bool auto_bkops_enabled;
+	struct ufs_vreg_info vreg_info;
+	struct list_head clk_list_head;
+	int req_abort_count;
+	u32 lanes_per_direction;
+	struct ufs_pa_layer_attr pwr_info;
+	struct ufs_pwr_mode_info max_pwr_info;
+	struct ufs_clk_gating clk_gating;
+	u32 caps;
+	struct devfreq *devfreq;
+	struct ufs_clk_scaling clk_scaling;
+	bool system_suspending;
+	bool is_sys_suspended;
+	enum bkops_status urgent_bkops_lvl;
+	bool is_urgent_bkops_lvl_checked;
+	struct mutex wb_mutex;
+	struct rw_semaphore clk_scaling_lock;
+	atomic_t scsi_block_reqs_cnt;
+	struct device bsg_dev;
+	struct request_queue *bsg_queue;
+	struct delayed_work rpm_dev_flush_recheck_work;
+	struct ufs_hba_monitor monitor;
+	union ufs_crypto_capabilities crypto_capabilities;
+	union ufs_crypto_cap_entry *crypto_cap_array;
+	u32 crypto_cfg_register;
+	struct blk_crypto_profile crypto_profile;
+	struct dentry *debugfs_root;
+	struct delayed_work debugfs_ee_work;
+	u32 debugfs_ee_rate_limit_ms;
+	u32 luns_avail;
+	unsigned int nr_hw_queues;
+	unsigned int nr_queues[3];
+	bool complete_put;
+	bool ext_iid_sup;
+	bool scsi_host_added;
+	bool mcq_sup;
+	bool mcq_enabled;
+	struct ufshcd_res_info res[7];
+	void *mcq_base;
+	struct ufs_hw_queue *uhq;
+	struct ufs_hw_queue *dev_cmd_queue;
+	struct ufshcd_mcq_opr_info_t mcq_opr[4];
+	u64 android_oem_data1;
+};
+
+struct utp_transfer_cmd_desc {
+	u8 command_upiu[512];
+	u8 response_upiu[512];
+	u8 prd_table[0];
+};
+
+struct request_desc_header {
+	u8 cci;
+	u8 ehs_length;
+	u8 reserved2: 7;
+	u8 enable_crypto: 1;
+	u8 interrupt: 1;
+	u8 data_direction: 2;
+	u8 reserved1: 1;
+	u8 command_type: 4;
+	__le32 dunl;
+	u8 ocs;
+	u8 cds;
+	__le16 ldbc;
+	__le32 dunu;
+};
+
+struct utp_transfer_req_desc {
+	struct request_desc_header header;
+	__le64 command_desc_base_addr;
+	__le16 response_upiu_length;
+	__le16 response_upiu_offset;
+	__le16 prd_table_length;
+	__le16 prd_table_offset;
+};
+
+struct utp_task_req_desc {
+	struct request_desc_header header;
+	struct {
+		struct utp_upiu_header req_header;
+		__be32 input_param1;
+		__be32 input_param2;
+		__be32 input_param3;
+		__be32 __reserved1[2];
+	} upiu_req;
+	struct {
+		struct utp_upiu_header rsp_header;
+		__be32 output_param1;
+		__be32 output_param2;
+		__be32 __reserved2[3];
+	} upiu_rsp;
+};
+
+struct ufshcd_lrb {
+	struct utp_transfer_req_desc *utr_descriptor_ptr;
+	struct utp_upiu_req *ucd_req_ptr;
+	struct utp_upiu_rsp *ucd_rsp_ptr;
+	struct ufshcd_sg_entry *ucd_prdt_ptr;
+	dma_addr_t utrd_dma_addr;
+	dma_addr_t ucd_req_dma_addr;
+	dma_addr_t ucd_rsp_dma_addr;
+	dma_addr_t ucd_prdt_dma_addr;
+	struct scsi_cmnd *cmd;
+	int scsi_status;
+	int command_type;
+	int task_tag;
+	u8 lun;
+	bool intr_cmd;
+	ktime_t issue_time_stamp;
+	u64 issue_time_stamp_local_clock;
+	ktime_t compl_time_stamp;
+	u64 compl_time_stamp_local_clock;
+	int crypto_key_slot;
+	u64 data_unit_num;
+	bool req_abort_skip;
+	u64 android_kabi_reserved1;
+};
+
+union ufs_crypto_cfg_entry;
+
+struct ufs_hba_variant_ops {
+	const char *name;
+	int (*init)(struct ufs_hba *);
+	void (*exit)(struct ufs_hba *);
+	u32 (*get_ufs_hci_version)(struct ufs_hba *);
+	int (*clk_scale_notify)(struct ufs_hba *, bool, enum ufs_notify_change_status);
+	int (*setup_clocks)(struct ufs_hba *, bool, enum ufs_notify_change_status);
+	int (*hce_enable_notify)(struct ufs_hba *, enum ufs_notify_change_status);
+	int (*link_startup_notify)(struct ufs_hba *, enum ufs_notify_change_status);
+	int (*pwr_change_notify)(struct ufs_hba *, enum ufs_notify_change_status, struct ufs_pa_layer_attr *, struct ufs_pa_layer_attr *);
+	void (*setup_xfer_req)(struct ufs_hba *, int, bool);
+	void (*setup_task_mgmt)(struct ufs_hba *, int, u8);
+	void (*hibern8_notify)(struct ufs_hba *, enum uic_cmd_dme, enum ufs_notify_change_status);
+	int (*apply_dev_quirks)(struct ufs_hba *);
+	void (*fixup_dev_quirks)(struct ufs_hba *);
+	int (*suspend)(struct ufs_hba *, enum ufs_pm_op, enum ufs_notify_change_status);
+	int (*resume)(struct ufs_hba *, enum ufs_pm_op);
+	void (*dbg_register_dump)(struct ufs_hba *);
+	int (*phy_initialization)(struct ufs_hba *);
+	int (*device_reset)(struct ufs_hba *);
+	void (*config_scaling_param)(struct ufs_hba *, struct devfreq_dev_profile *, struct devfreq_simple_ondemand_data *);
+	int (*program_key)(struct ufs_hba *, const union ufs_crypto_cfg_entry *, int);
+	void (*event_notify)(struct ufs_hba *, enum ufs_event_type, void *);
+	void (*reinit_notify)(struct ufs_hba *);
+	int (*mcq_config_resource)(struct ufs_hba *);
+	int (*get_hba_mac)(struct ufs_hba *);
+	int (*op_runtime_config)(struct ufs_hba *);
+	int (*get_outstanding_cqs)(struct ufs_hba *, unsigned long *);
+	int (*config_esi)(struct ufs_hba *);
+	void (*config_scsi_dev)(struct scsi_device *);
+};
+
+union ufs_crypto_cfg_entry {
+	__le32 reg_val[32];
+	struct {
+		u8 crypto_key[64];
+		u8 data_unit_size;
+		u8 crypto_cap_idx;
+		u8 reserved_1;
+		u8 config_enable;
+		u8 reserved_multi_host;
+		u8 reserved_2;
+		u8 vsb[2];
+		u8 reserved_3[56];
+	};
+};
+
+struct uic_command {
+	u32 command;
+	u32 argument1;
+	u32 argument2;
+	u32 argument3;
+	int cmd_active;
+	struct completion done;
+};
+
+struct ufs_vreg {
+	struct regulator *reg;
+	const char *name;
+	bool always_on;
+	bool enabled;
+	int max_uA;
+};
+
+union ufs_crypto_cap_entry {
+	__le32 reg_val;
+	struct {
+		u8 algorithm_id;
+		u8 sdus_mask;
+		u8 key_size;
+		u8 reserved;
+	};
+};
+
+struct cq_entry;
+
+struct ufs_hw_queue {
+	void *mcq_sq_head;
+	void *mcq_sq_tail;
+	void *mcq_cq_head;
+	void *mcq_cq_tail;
+	struct utp_transfer_req_desc *sqe_base_addr;
+	dma_addr_t sqe_dma_addr;
+	struct cq_entry *cqe_base_addr;
+	dma_addr_t cqe_dma_addr;
+	u32 max_entries;
+	u32 id;
+	u32 sq_tail_slot;
+	spinlock_t sq_lock;
+	u32 cq_tail_slot;
+	u32 cq_head_slot;
+	spinlock_t cq_lock;
+	struct mutex sq_mutex;
+};
+
+struct cq_entry {
+	__le64 command_desc_base_addr;
+	__le16 response_upiu_length;
+	__le16 response_upiu_offset;
+	__le16 prd_table_length;
+	__le16 prd_table_offset;
+	__le32 status;
+	__le32 reserved[3];
+};
+
+struct trace_event_data_offsets_ufshcd_clk_gating {
+	u32 dev_name;
+};
+
+struct trace_event_data_offsets_ufshcd_template {
+	u32 dev_name;
+};
+
+struct trace_event_data_offsets_ufshcd_command {
+	u32 dev_name;
+};
+
+struct trace_event_data_offsets_ufshcd_uic_command {
+	u32 dev_name;
+};
+
+struct trace_event_data_offsets_ufshcd_upiu {
+	u32 dev_name;
+};
+
+struct trace_event_data_offsets_ufshcd_exception_event {
+	u32 dev_name;
+};
+
+struct trace_event_data_offsets_ufshcd_clk_scaling {
+	u32 dev_name;
+	u32 state;
+	u32 clk;
+};
+
+struct trace_event_data_offsets_ufshcd_auto_bkops_state {
+	u32 dev_name;
+	u32 state;
+};
+
+struct trace_event_data_offsets_ufshcd_profiling_template {
+	u32 dev_name;
+	u32 profile_info;
+};
+
+struct uc_string_id {
+	u8 len;
+	u8 type;
+	wchar_t uc[0];
+};
+
+struct ufs_arpmb_meta {
+	__be16 req_resp_type;
+	__u8 nonce[16];
+	__be32 write_counter;
+	__be16 addr_lun;
+	__be16 block_count;
+	__be16 result;
+} __attribute__((packed));
+
+struct ufs_ehs {
+	__u8 length;
+	__u8 ehs_type;
+	__be16 ehssub_type;
+	struct ufs_arpmb_meta meta;
+	__u8 mac_key[32];
+};
+
+enum interconnect_desc_param {
+	INTERCONNECT_DESC_PARAM_LEN = 0,
+	INTERCONNECT_DESC_PARAM_TYPE = 1,
+	INTERCONNECT_DESC_PARAM_UNIPRO_VER = 2,
+	INTERCONNECT_DESC_PARAM_MPHY_VER = 4,
+};
+
+enum health_desc_param {
+	HEALTH_DESC_PARAM_LEN = 0,
+	HEALTH_DESC_PARAM_TYPE = 1,
+	HEALTH_DESC_PARAM_EOL_INFO = 2,
+	HEALTH_DESC_PARAM_LIFE_TIME_EST_A = 3,
+	HEALTH_DESC_PARAM_LIFE_TIME_EST_B = 4,
+};
+
+enum ufshcd_mcq_opr {
+	OPR_SQD = 0,
+	OPR_SQIS = 1,
+	OPR_CQD = 2,
+	OPR_CQIS = 3,
+	OPR_MAX = 4,
+};
+
+enum {
+	REG_CQIS = 0,
+	REG_CQIE = 4,
+};
+
+enum {
+	REG_SQATTR = 0,
+	REG_SQLBA = 4,
+	REG_SQUBA = 8,
+	REG_SQDAO = 12,
+	REG_SQISAO = 16,
+	REG_CQATTR = 32,
+	REG_CQLBA = 36,
+	REG_CQUBA = 40,
+	REG_CQDAO = 44,
+	REG_CQISAO = 48,
+};
+
+enum {
+	REG_SQHP = 0,
+	REG_SQTP = 4,
+	REG_SQRTC = 8,
+	REG_SQCTI = 12,
+	REG_SQRTS = 16,
+};
+
+enum {
+	REG_CQHP = 0,
+	REG_CQTP = 4,
+};
+
+enum {
+	SQ_START = 0,
+	SQ_STOP = 1,
+	SQ_ICU = 2,
+};
+
+enum {
+	SQ_STS = 1,
+	SQ_CUS = 2,
+};
+
+struct ufs_debugfs_attr {
+	const char *name;
+	mode_t mode;
+	const struct file_operations *fops;
+};
+
+enum ufs_bsg_msg_code {
+	UPIU_TRANSACTION_UIC_CMD = 31,
+	UPIU_TRANSACTION_ARPMB_CMD = 32,
+};
+
+enum ufs_rpmb_op_type {
+	UFS_RPMB_WRITE_KEY = 1,
+	UFS_RPMB_READ_CNT = 2,
+	UFS_RPMB_WRITE = 3,
+	UFS_RPMB_READ = 4,
+	UFS_RPMB_READ_RESP = 5,
+	UFS_RPMB_SEC_CONF_WRITE = 6,
+	UFS_RPMB_SEC_CONF_READ = 7,
+	UFS_RPMB_PURGE_ENABLE = 8,
+	UFS_RPMB_PURGE_STATUS_READ = 9,
+};
+
+struct ufs_bsg_request {
+	__u32 msgcode;
+	struct utp_upiu_req upiu_req;
+};
+
+struct ufs_rpmb_request {
+	struct ufs_bsg_request bsg_request;
+	struct ufs_ehs ehs_req;
+};
+
+struct ufs_bsg_reply {
+	int result;
+	__u32 reply_payload_rcv_len;
+	struct utp_upiu_req upiu_rsp;
+};
+
+struct ufs_rpmb_reply {
+	struct ufs_bsg_reply bsg_reply;
+	struct ufs_ehs ehs_rsp;
+};
+
+enum ufs_crypto_alg {
+	UFS_CRYPTO_ALG_AES_XTS = 0,
+	UFS_CRYPTO_ALG_BITLOCKER_AES_CBC = 1,
+	UFS_CRYPTO_ALG_AES_ECB = 2,
+	UFS_CRYPTO_ALG_ESSIV_AES_CBC = 3,
+};
+
+enum ufs_crypto_key_size {
+	UFS_CRYPTO_KEY_SIZE_INVALID = 0,
+	UFS_CRYPTO_KEY_SIZE_128 = 1,
+	UFS_CRYPTO_KEY_SIZE_192 = 2,
+	UFS_CRYPTO_KEY_SIZE_256 = 3,
+	UFS_CRYPTO_KEY_SIZE_512 = 4,
+};
+
+struct ufs_crypto_alg_entry {
+	enum ufs_crypto_alg ufs_alg;
+	enum ufs_crypto_key_size ufs_key_size;
+};
+
+struct ufshcd_dme_attr_val {
+	u32 attr_sel;
+	u32 mib_val;
+	u8 peer;
+};
+
+enum clk_div_values {
+	DWC_UFS_REG_HCLKDIV_DIV_62_5 = 62,
+	DWC_UFS_REG_HCLKDIV_DIV_125 = 125,
+	DWC_UFS_REG_HCLKDIV_DIV_200 = 200,
+};
+
+enum dwc_specific_registers {
+	DWC_UFS_REG_HCLKDIV = 252,
+};
+
+enum link_status {
+	UFSHCD_LINK_IS_DOWN = 1,
+	UFSHCD_LINK_IS_UP = 2,
+};
+
+enum intel_ufs_dsm_func_id {
+	INTEL_DSM_FNS = 0,
+	INTEL_DSM_RESET = 1,
+};
+
+struct ufs_host {
+	void (*late_init)(struct ufs_hba *);
+};
+
+struct intel_host {
+	struct ufs_host ufs_host;
+	u32 dsm_fns;
+	u32 active_ltr;
+	u32 idle_ltr;
+	struct dentry *debugfs_root;
+	struct gpio_desc *reset_gpio;
+};
+
+struct ufs_dev_params {
+	u32 pwm_rx_gear;
+	u32 pwm_tx_gear;
+	u32 hs_rx_gear;
+	u32 hs_tx_gear;
+	u32 rx_lanes;
+	u32 tx_lanes;
+	u32 rx_pwr_pwm;
+	u32 tx_pwr_pwm;
+	u32 rx_pwr_hs;
+	u32 tx_pwr_hs;
+	u32 hs_rate;
+	u32 desired_working_mode;
+};
+
+enum led_default_state {
+	LEDS_DEFSTATE_OFF = 0,
+	LEDS_DEFSTATE_ON = 1,
+	LEDS_DEFSTATE_KEEP = 2,
+};
+
+struct led_properties {
+	u32 color;
+	bool color_present;
+	const char *function;
+	u32 func_enum;
+	bool func_enum_present;
+	const char *label;
+};
+
+struct led_lookup_data {
+	struct list_head list;
+	const char *provider;
+	const char *dev_id;
+	const char *con_id;
+};
+
+struct led_flash_setting {
+	u32 min;
+	u32 max;
+	u32 step;
+	u32 val;
+};
+
+struct led_flash_ops;
+
+struct led_classdev_flash {
+	struct led_classdev led_cdev;
+	const struct led_flash_ops *ops;
+	struct led_flash_setting brightness;
+	struct led_flash_setting timeout;
+	const struct attribute_group *sysfs_groups[5];
+};
+
+struct led_flash_ops {
+	int (*flash_brightness_set)(struct led_classdev_flash *, u32);
+	int (*flash_brightness_get)(struct led_classdev_flash *, u32 *);
+	int (*strobe_set)(struct led_classdev_flash *, bool);
+	int (*strobe_get)(struct led_classdev_flash *, bool *);
+	int (*timeout_set)(struct led_classdev_flash *, u32);
+	int (*fault_get)(struct led_classdev_flash *, u32 *);
+};
+
+struct mc_subled;
+
+struct led_classdev_mc {
+	struct led_classdev led_cdev;
+	unsigned int num_colors;
+	struct mc_subled *subled_info;
+};
+
+struct mc_subled {
+	unsigned int color_index;
+	unsigned int brightness;
+	unsigned int intensity;
+	unsigned int channel;
+};
+
+struct transient_trig_data {
+	int activate;
+	int state;
+	int restore_state;
+	unsigned long duration;
+	struct timer_list timer;
+	struct led_classdev *led_cdev;
+};
+
+struct dmi_memdev_info {
+	const char *device;
+	const char *bank;
+	u64 size;
+	u16 handle;
+	u8 type;
+};
+
+enum dmi_entry_type {
+	DMI_ENTRY_BIOS = 0,
+	DMI_ENTRY_SYSTEM = 1,
+	DMI_ENTRY_BASEBOARD = 2,
+	DMI_ENTRY_CHASSIS = 3,
+	DMI_ENTRY_PROCESSOR = 4,
+	DMI_ENTRY_MEM_CONTROLLER = 5,
+	DMI_ENTRY_MEM_MODULE = 6,
+	DMI_ENTRY_CACHE = 7,
+	DMI_ENTRY_PORT_CONNECTOR = 8,
+	DMI_ENTRY_SYSTEM_SLOT = 9,
+	DMI_ENTRY_ONBOARD_DEVICE = 10,
+	DMI_ENTRY_OEMSTRINGS = 11,
+	DMI_ENTRY_SYSCONF = 12,
+	DMI_ENTRY_BIOS_LANG = 13,
+	DMI_ENTRY_GROUP_ASSOC = 14,
+	DMI_ENTRY_SYSTEM_EVENT_LOG = 15,
+	DMI_ENTRY_PHYS_MEM_ARRAY = 16,
+	DMI_ENTRY_MEM_DEVICE = 17,
+	DMI_ENTRY_32_MEM_ERROR = 18,
+	DMI_ENTRY_MEM_ARRAY_MAPPED_ADDR = 19,
+	DMI_ENTRY_MEM_DEV_MAPPED_ADDR = 20,
+	DMI_ENTRY_BUILTIN_POINTING_DEV = 21,
+	DMI_ENTRY_PORTABLE_BATTERY = 22,
+	DMI_ENTRY_SYSTEM_RESET = 23,
+	DMI_ENTRY_HW_SECURITY = 24,
+	DMI_ENTRY_SYSTEM_POWER_CONTROLS = 25,
+	DMI_ENTRY_VOLTAGE_PROBE = 26,
+	DMI_ENTRY_COOLING_DEV = 27,
+	DMI_ENTRY_TEMP_PROBE = 28,
+	DMI_ENTRY_ELECTRICAL_CURRENT_PROBE = 29,
+	DMI_ENTRY_OOB_REMOTE_ACCESS = 30,
+	DMI_ENTRY_BIS_ENTRY = 31,
+	DMI_ENTRY_SYSTEM_BOOT = 32,
+	DMI_ENTRY_MGMT_DEV = 33,
+	DMI_ENTRY_MGMT_DEV_COMPONENT = 34,
+	DMI_ENTRY_MGMT_DEV_THRES = 35,
+	DMI_ENTRY_MEM_CHANNEL = 36,
+	DMI_ENTRY_IPMI_DEV = 37,
+	DMI_ENTRY_SYS_POWER_SUPPLY = 38,
+	DMI_ENTRY_ADDITIONAL = 39,
+	DMI_ENTRY_ONBOARD_DEV_EXT = 40,
+	DMI_ENTRY_MGMT_CONTROLLER_HOST = 41,
+	DMI_ENTRY_INACTIVE = 126,
+	DMI_ENTRY_END_OF_TABLE = 127,
+};
+
+struct dmi_header {
+	u8 type;
+	u8 length;
+	u16 handle;
+};
+
+struct dmi_device_attribute {
+	struct device_attribute dev_attr;
+	int field;
+};
+
+struct mafield {
+	const char *prefix;
+	int field;
+};
+
+struct firmware_map_entry;
+
+struct memmap_attribute {
+	struct attribute attr;
+	ssize_t (*show)(struct firmware_map_entry *, char *);
+};
+
+struct firmware_map_entry {
+	u64 start;
+	u64 end;
+	const char *type;
+	struct list_head list;
+	struct kobject kobj;
+};
+
+typedef efi_status_t efi_get_time_t(efi_time_t *, efi_time_cap_t *);
+
+typedef efi_status_t efi_set_time_t(efi_time_t *);
+
+typedef efi_status_t efi_get_wakeup_time_t(efi_bool_t *, efi_bool_t *, efi_time_t *);
+
+typedef efi_status_t efi_set_wakeup_time_t(efi_bool_t, efi_time_t *);
+
+typedef efi_status_t efi_get_variable_t(efi_char16_t *, efi_guid_t *, u32 *, unsigned long *, void *);
+
+typedef efi_status_t efi_get_next_variable_t(unsigned long *, efi_char16_t *, efi_guid_t *);
+
+typedef efi_status_t efi_set_variable_t(efi_char16_t *, efi_guid_t *, u32, unsigned long, void *);
+
+typedef efi_status_t efi_query_variable_info_t(u32, u64 *, u64 *, u64 *);
+
+typedef efi_status_t efi_update_capsule_t(efi_capsule_header_t **, unsigned long, unsigned long);
+
+typedef efi_status_t efi_query_capsule_caps_t(efi_capsule_header_t **, unsigned long, u64 *, int *);
+
+typedef efi_status_t efi_get_next_high_mono_count_t(u32 *);
+
+typedef void efi_reset_system_t(int, efi_status_t, unsigned long, efi_char16_t *);
+
+struct efi {
+	const efi_runtime_services_t *runtime;
+	unsigned int runtime_version;
+	unsigned int runtime_supported_mask;
+	unsigned long acpi;
+	unsigned long acpi20;
+	unsigned long smbios;
+	unsigned long smbios3;
+	unsigned long esrt;
+	unsigned long tpm_log;
+	unsigned long tpm_final_log;
+	unsigned long mokvar_table;
+	unsigned long coco_secret;
+	unsigned long unaccepted;
+	efi_get_time_t *get_time;
+	efi_set_time_t *set_time;
+	efi_get_wakeup_time_t *get_wakeup_time;
+	efi_set_wakeup_time_t *set_wakeup_time;
+	efi_get_variable_t *get_variable;
+	efi_get_next_variable_t *get_next_variable;
+	efi_set_variable_t *set_variable;
+	efi_set_variable_t *set_variable_nonblocking;
+	efi_query_variable_info_t *query_variable_info;
+	efi_query_variable_info_t *query_variable_info_nonblocking;
+	efi_update_capsule_t *update_capsule;
+	efi_query_capsule_caps_t *query_capsule_caps;
+	efi_get_next_high_mono_count_t *get_next_high_mono_count;
+	efi_reset_system_t *reset_system;
+	struct efi_memory_map memmap;
+	unsigned long flags;
+};
+
+struct linux_efi_memreserve {
+	int size;
+	atomic_t count;
+	phys_addr_t next;
+	struct {
+		phys_addr_t base;
+		phys_addr_t size;
+	} entry[0];
+};
+
+typedef efi_status_t efi_query_variable_store_t(u32, unsigned long, bool);
+
+struct efivar_operations {
+	efi_get_variable_t *get_variable;
+	efi_get_next_variable_t *get_next_variable;
+	efi_set_variable_t *set_variable;
+	efi_set_variable_t *set_variable_nonblocking;
+	efi_query_variable_store_t *query_variable_store;
+	efi_query_variable_info_t *query_variable_info;
+};
+
+struct efivars {
+	struct kset *kset;
+	const struct efivar_operations *ops;
+};
+
+struct linux_efi_random_seed {
+	u32 size;
+	u8 bits[0];
+};
+
+typedef struct {
+	u16 version;
+	u16 length;
+	u32 runtime_services_supported;
+} efi_rt_properties_table_t;
+
+struct linux_efi_initrd {
+	unsigned long base;
+	unsigned long size;
+};
+
+typedef struct {
+	u32 version;
+	u32 num_entries;
+	u32 desc_size;
+	u32 flags;
+	efi_memory_desc_t entry[0];
+} efi_memory_attributes_table_t;
+
+enum tcpa_event_types {
+	PREBOOT = 0,
+	POST_CODE = 1,
+	UNUSED = 2,
+	NO_ACTION = 3,
+	SEPARATOR = 4,
+	ACTION = 5,
+	EVENT_TAG = 6,
+	SCRTM_CONTENTS = 7,
+	SCRTM_VERSION = 8,
+	CPU_MICROCODE = 9,
+	PLATFORM_CONFIG_FLAGS = 10,
+	TABLE_OF_DEVICES = 11,
+	COMPACT_HASH = 12,
+	IPL = 13,
+	IPL_PARTITION_DATA = 14,
+	NONHOST_CODE = 15,
+	NONHOST_CONFIG = 16,
+	NONHOST_INFO = 17,
+};
+
+struct tpm_digest {
+	u16 alg_id;
+	u8 digest[64];
+};
+
+struct tcg_pcr_event2_head {
+	u32 pcr_idx;
+	u32 event_type;
+	u32 count;
+	struct tpm_digest digests[0];
+};
+
+struct tcg_efi_specid_event_algs {
+	u16 alg_id;
+	u16 digest_size;
+};
+
+struct tcg_efi_specid_event_head {
+	u8 signature[16];
+	u32 platform_class;
+	u8 spec_version_minor;
+	u8 spec_version_major;
+	u8 spec_errata;
+	u8 uintnsize;
+	u32 num_algs;
+	struct tcg_efi_specid_event_algs digest_sizes[0];
+};
+
+struct tcg_event_field {
+	u32 event_size;
+	u8 event[0];
+};
+
+struct tcg_pcr_event {
+	u32 pcr_idx;
+	u32 event_type;
+	u8 digest[20];
+	u32 event_size;
+	u8 event[0];
+};
+
+struct linux_efi_tpm_eventlog {
+	u32 size;
+	u32 final_events_preboot_size;
+	u8 version;
+	u8 log[0];
+};
+
+struct efi_tcg2_final_events_table {
+	u64 version;
+	u64 nr_events;
+	u8 events[0];
+};
+
+struct efi_system_resource_table {
+	u32 fw_resource_count;
+	u32 fw_resource_count_max;
+	u64 fw_resource_version;
+	u8 entries[0];
+};
+
+struct esre_entry;
+
+struct esre_attribute {
+	struct attribute attr;
+	ssize_t (*show)(struct esre_entry *, char *);
+	ssize_t (*store)(struct esre_entry *, const char *, size_t);
+};
+
+struct efi_system_resource_entry_v1;
+
+struct esre_entry {
+	union {
+		struct efi_system_resource_entry_v1 *esre1;
+	} esre;
+	struct kobject kobj;
+	struct list_head list;
+};
+
+struct efi_system_resource_entry_v1 {
+	efi_guid_t fw_class;
+	u32 fw_type;
+	u32 fw_version;
+	u32 lowest_supported_fw_version;
+	u32 capsule_flags;
+	u32 last_attempt_version;
+	u32 last_attempt_status;
+};
+
+union efi_rts_args;
+
+struct efi_runtime_work {
+	union efi_rts_args *args;
+	efi_status_t status;
+	struct work_struct work;
+	enum efi_rts_ids efi_rts_id;
+	struct completion efi_rts_comp;
+	const void *caller;
+};
+
+union efi_rts_args {
+	struct {
+		efi_time_t *time;
+		efi_time_cap_t *capabilities;
+	} GET_TIME;
+	struct {
+		efi_time_t *time;
+	} SET_TIME;
+	struct {
+		efi_bool_t *enabled;
+		efi_bool_t *pending;
+		efi_time_t *time;
+	} GET_WAKEUP_TIME;
+	struct {
+		efi_bool_t enable;
+		efi_time_t *time;
+	} SET_WAKEUP_TIME;
+	struct {
+		efi_char16_t *name;
+		efi_guid_t *vendor;
+		u32 *attr;
+		unsigned long *data_size;
+		void *data;
+	} GET_VARIABLE;
+	struct {
+		unsigned long *name_size;
+		efi_char16_t *name;
+		efi_guid_t *vendor;
+	} GET_NEXT_VARIABLE;
+	struct {
+		efi_char16_t *name;
+		efi_guid_t *vendor;
+		u32 attr;
+		unsigned long data_size;
+		void *data;
+	} SET_VARIABLE;
+	struct {
+		u32 attr;
+		u64 *storage_space;
+		u64 *remaining_space;
+		u64 *max_variable_size;
+	} QUERY_VARIABLE_INFO;
+	struct {
+		u32 *high_count;
+	} GET_NEXT_HIGH_MONO_COUNT;
+	struct {
+		efi_capsule_header_t **capsules;
+		unsigned long count;
+		unsigned long sg_list;
+	} UPDATE_CAPSULE;
+	struct {
+		efi_capsule_header_t **capsules;
+		unsigned long count;
+		u64 *max_size;
+		int *reset_type;
+	} QUERY_CAPSULE_CAPS;
+	struct {
+		efi_status_t (*acpi_prm_handler)(u64, void *);
+		u64 param_buffer_addr;
+		void *context;
+	} ACPI_PRM_HANDLER;
+};
+
+struct hid_global {
+	unsigned int usage_page;
+	__s32 logical_minimum;
+	__s32 logical_maximum;
+	__s32 physical_minimum;
+	__s32 physical_maximum;
+	__s32 unit_exponent;
+	unsigned int unit;
+	unsigned int report_id;
+	unsigned int report_size;
+	unsigned int report_count;
+};
+
+struct hid_local {
+	unsigned int usage[12288];
+	u8 usage_size[12288];
+	unsigned int collection_index[12288];
+	unsigned int usage_index;
+	unsigned int usage_minimum;
+	unsigned int delimiter_depth;
+	unsigned int delimiter_branch;
+};
+
+struct hid_parser {
+	struct hid_global global;
+	struct hid_global global_stack[4];
+	unsigned int global_stack_ptr;
+	struct hid_local local;
+	unsigned int *collection_stack;
+	unsigned int collection_stack_ptr;
+	unsigned int collection_stack_size;
+	struct hid_device *device;
+	unsigned int scan_flags;
+	u64 android_kabi_reserved1;
+};
+
+struct hid_item {
+	unsigned int format;
+	__u8 size;
+	__u8 type;
+	__u8 tag;
+	union {
+		__u8 u8;
+		__s8 s8;
+		__u16 u16;
+		__s16 s16;
+		__u32 u32;
+		__s32 s32;
+		__u8 *longdata;
+	} data;
+};
+
+enum hid_class_request {
+	HID_REQ_GET_REPORT = 1,
+	HID_REQ_GET_IDLE = 2,
+	HID_REQ_GET_PROTOCOL = 3,
+	HID_REQ_SET_REPORT = 9,
+	HID_REQ_SET_IDLE = 10,
+	HID_REQ_SET_PROTOCOL = 11,
+};
+
+struct hiddev {
+	int minor;
+	int exist;
+	int open;
+	struct mutex existancelock;
+	wait_queue_head_t wait;
+	struct hid_device *hid;
+	struct list_head list;
+	spinlock_t list_lock;
+	bool initialized;
+};
+
+struct hidraw {
+	unsigned int minor;
+	int exist;
+	int open;
+	wait_queue_head_t wait;
+	struct hid_device *hid;
+	struct device *dev;
+	spinlock_t list_lock;
+	struct list_head list;
+};
+
+struct hid_dynid {
+	struct list_head list;
+	struct hid_device_id id;
+};
+
+struct usage_priority {
+	__u32 usage;
+	bool global;
+	unsigned int slot_overwrite;
+};
+
+typedef bool (*hid_usage_cmp_t)(struct hid_usage *, unsigned int, unsigned int);
+
+struct quirks_list_struct {
+	struct hid_device_id hid_bl_item;
+	struct list_head node;
+};
+
+struct hid_usage_entry {
+	unsigned int page;
+	unsigned int usage;
+	const char *description;
+};
+
+struct hid_debug_list {
+	struct {
+		union {
+			struct __kfifo kfifo;
+			char *type;
+			const char *const_type;
+			char (*rectype)[0];
+			char *ptr;
+			const char *ptr_const;
+		};
+		char buf[0];
+	} hid_debug_fifo;
+	struct fasync_struct *fasync;
+	struct hid_device *hdev;
+	struct list_head node;
+	struct mutex read_mutex;
+};
+
+struct hidraw_report {
+	__u8 *value;
+	int len;
+};
+
+struct hidraw_list {
+	struct hidraw_report buffer[64];
+	int head;
+	int tail;
+	struct fasync_struct *fasync;
+	struct hidraw *hidraw;
+	struct list_head node;
+	struct mutex read_mutex;
+};
+
+struct hidraw_devinfo {
+	__u32 bustype;
+	__s16 vendor;
+	__s16 product;
+};
+
+enum uhid_legacy_event_type {
+	UHID_CREATE = 0,
+	UHID_OUTPUT_EV = 7,
+	UHID_INPUT = 8,
+	UHID_FEATURE = 9,
+	UHID_FEATURE_ANSWER = 10,
+};
+
+enum uhid_event_type {
+	__UHID_LEGACY_CREATE = 0,
+	UHID_DESTROY = 1,
+	UHID_START = 2,
+	UHID_STOP = 3,
+	UHID_OPEN = 4,
+	UHID_CLOSE = 5,
+	UHID_OUTPUT = 6,
+	__UHID_LEGACY_OUTPUT_EV = 7,
+	__UHID_LEGACY_INPUT = 8,
+	UHID_GET_REPORT = 9,
+	UHID_GET_REPORT_REPLY = 10,
+	UHID_CREATE2 = 11,
+	UHID_INPUT2 = 12,
+	UHID_SET_REPORT = 13,
+	UHID_SET_REPORT_REPLY = 14,
+};
+
+enum uhid_dev_flag {
+	UHID_DEV_NUMBERED_FEATURE_REPORTS = 1,
+	UHID_DEV_NUMBERED_OUTPUT_REPORTS = 2,
+	UHID_DEV_NUMBERED_INPUT_REPORTS = 4,
+};
+
+enum uhid_report_type {
+	UHID_FEATURE_REPORT = 0,
+	UHID_OUTPUT_REPORT = 1,
+	UHID_INPUT_REPORT = 2,
+};
+
+struct uhid_create_req {
+	__u8 name[128];
+	__u8 phys[64];
+	__u8 uniq[64];
+	__u8 __attribute__((btf_type_tag("user"))) *rd_data;
+	__u16 rd_size;
+	__u16 bus;
+	__u32 vendor;
+	__u32 product;
+	__u32 version;
+	__u32 country;
+} __attribute__((packed));
+
+struct uhid_input_req {
+	__u8 data[4096];
+	__u16 size;
+};
+
+struct uhid_output_req {
+	__u8 data[4096];
+	__u16 size;
+	__u8 rtype;
+} __attribute__((packed));
+
+struct uhid_output_ev_req {
+	__u16 type;
+	__u16 code;
+	__s32 value;
+};
+
+struct uhid_feature_req {
+	__u32 id;
+	__u8 rnum;
+	__u8 rtype;
+} __attribute__((packed));
+
+struct uhid_get_report_req {
+	__u32 id;
+	__u8 rnum;
+	__u8 rtype;
+} __attribute__((packed));
+
+struct uhid_feature_answer_req {
+	__u32 id;
+	__u16 err;
+	__u16 size;
+	__u8 data[4096];
+};
+
+struct uhid_get_report_reply_req {
+	__u32 id;
+	__u16 err;
+	__u16 size;
+	__u8 data[4096];
+};
+
+struct uhid_create2_req {
+	__u8 name[128];
+	__u8 phys[64];
+	__u8 uniq[64];
+	__u16 rd_size;
+	__u16 bus;
+	__u32 vendor;
+	__u32 product;
+	__u32 version;
+	__u32 country;
+	__u8 rd_data[4096];
+};
+
+struct uhid_input2_req {
+	__u16 size;
+	__u8 data[4096];
+};
+
+struct uhid_set_report_req {
+	__u32 id;
+	__u8 rnum;
+	__u8 rtype;
+	__u16 size;
+	__u8 data[4096];
+};
+
+struct uhid_set_report_reply_req {
+	__u32 id;
+	__u16 err;
+} __attribute__((packed));
+
+struct uhid_start_req {
+	__u64 dev_flags;
+};
+
+struct uhid_event {
+	__u32 type;
+	union {
+		struct uhid_create_req create;
+		struct uhid_input_req input;
+		struct uhid_output_req output;
+		struct uhid_output_ev_req output_ev;
+		struct uhid_feature_req feature;
+		struct uhid_get_report_req get_report;
+		struct uhid_feature_answer_req feature_answer;
+		struct uhid_get_report_reply_req get_report_reply;
+		struct uhid_create2_req create2;
+		struct uhid_input2_req input2;
+		struct uhid_set_report_req set_report;
+		struct uhid_set_report_reply_req set_report_reply;
+		struct uhid_start_req start;
+	} u;
+} __attribute__((packed));
+
+struct uhid_device {
+	struct mutex devlock;
+	bool running;
+	__u8 *rd_data;
+	uint rd_size;
+	struct hid_device *hid;
+	struct uhid_event input_buf;
+	wait_queue_head_t waitq;
+	spinlock_t qlock;
+	__u8 head;
+	__u8 tail;
+	struct uhid_event *outq[32];
+	struct mutex report_lock;
+	wait_queue_head_t report_wait;
+	bool report_running;
+	u32 report_id;
+	u32 report_type;
+	struct uhid_event report_buf;
+	struct work_struct worker;
+};
+
+struct uhid_create_req_compat {
+	__u8 name[128];
+	__u8 phys[64];
+	__u8 uniq[64];
+	compat_uptr_t rd_data;
+	__u16 rd_size;
+	__u16 bus;
+	__u32 vendor;
+	__u32 product;
+	__u32 version;
+	__u32 country;
+};
+
+struct apple_key_translation {
+	u16 from;
+	u16 to;
+	u8 flags;
+};
+
+struct apple_non_apple_keyboard {
+	char *name;
+};
+
+struct apple_sc_backlight;
+
+struct apple_sc {
+	struct hid_device *hdev;
+	unsigned long quirks;
+	unsigned int fn_on;
+	unsigned int fn_found;
+	unsigned long pressed_numlock[12];
+	struct timer_list battery_timer;
+	struct apple_sc_backlight *backlight;
+};
+
+struct apple_sc_backlight {
+	struct led_classdev cdev;
+	struct hid_device *hdev;
+	unsigned short backlight_off;
+	unsigned short backlight_on_min;
+	unsigned short backlight_on_max;
+};
+
+struct apple_backlight_config_report {
+	u8 report_id;
+	u8 version;
+	u16 backlight_off;
+	u16 backlight_on_min;
+	u16 backlight_on_max;
+};
+
+struct apple_backlight_set_report {
+	u8 report_id;
+	u8 version;
+	u16 backlight;
+	u16 rate;
+};
+
+struct lg_drv_data {
+	unsigned long quirks;
+	void *device_props;
+};
+
+enum lg_g15_model {
+	LG_G15 = 0,
+	LG_G15_V2 = 1,
+	LG_G510 = 2,
+	LG_G510_USB_AUDIO = 3,
+	LG_Z10 = 4,
+};
+
+enum lg_g15_led_type {
+	LG_G15_KBD_BRIGHTNESS = 0,
+	LG_G15_LCD_BRIGHTNESS = 1,
+	LG_G15_BRIGHTNESS_MAX = 2,
+	LG_G15_MACRO_PRESET1 = 2,
+	LG_G15_MACRO_PRESET2 = 3,
+	LG_G15_MACRO_PRESET3 = 4,
+	LG_G15_MACRO_RECORD = 5,
+	LG_G15_LED_MAX = 6,
+};
+
+struct lg_g15_led {
+	struct led_classdev cdev;
+	enum led_brightness brightness;
+	enum lg_g15_led_type led;
+	u8 red;
+	u8 green;
+	u8 blue;
+};
+
+struct lg_g15_data {
+	u8 transfer_buf[20];
+	struct mutex mutex;
+	struct work_struct work;
+	struct input_dev *input;
+	struct hid_device *hdev;
+	enum lg_g15_model model;
+	struct lg_g15_led leds[6];
+	bool game_mode_enabled;
+};
+
+enum recvr_type {
+	recvr_type_dj = 0,
+	recvr_type_hidpp = 1,
+	recvr_type_gaming_hidpp = 2,
+	recvr_type_mouse_only = 3,
+	recvr_type_27mhz = 4,
+	recvr_type_bluetooth = 5,
+	recvr_type_dinovo = 6,
+};
+
+struct dj_device;
+
+struct dj_receiver_dev {
+	struct hid_device *mouse;
+	struct hid_device *keyboard;
+	struct hid_device *hidpp;
+	struct dj_device *paired_dj_devices[8];
+	struct list_head list;
+	struct kref kref;
+	struct work_struct work;
+	struct kfifo notif_fifo;
+	unsigned long last_query;
+	bool ready;
+	enum recvr_type type;
+	unsigned int unnumbered_application;
+	spinlock_t lock;
+};
+
+struct dj_device {
+	struct hid_device *hdev;
+	struct dj_receiver_dev *dj_receiver_dev;
+	u64 reports_supported;
+	u8 device_index;
+};
+
+struct dj_report {
+	u8 report_id;
+	u8 device_index;
+	u8 report_type;
+	u8 report_params[12];
+};
+
+struct hidpp_event {
+	u8 report_id;
+	u8 device_index;
+	u8 sub_id;
+	u8 params[17];
+};
+
+struct dj_workitem {
+	u8 type;
+	u8 device_index;
+	u8 device_type;
+	u8 quad_id_msb;
+	u8 quad_id_lsb;
+	u64 reports_supported;
+};
+
+enum {
+	POWER_SUPPLY_CAPACITY_LEVEL_UNKNOWN = 0,
+	POWER_SUPPLY_CAPACITY_LEVEL_CRITICAL = 1,
+	POWER_SUPPLY_CAPACITY_LEVEL_LOW = 2,
+	POWER_SUPPLY_CAPACITY_LEVEL_NORMAL = 3,
+	POWER_SUPPLY_CAPACITY_LEVEL_HIGH = 4,
+	POWER_SUPPLY_CAPACITY_LEVEL_FULL = 5,
+};
+
+enum {
+	POWER_SUPPLY_CHARGE_TYPE_UNKNOWN = 0,
+	POWER_SUPPLY_CHARGE_TYPE_NONE = 1,
+	POWER_SUPPLY_CHARGE_TYPE_TRICKLE = 2,
+	POWER_SUPPLY_CHARGE_TYPE_FAST = 3,
+	POWER_SUPPLY_CHARGE_TYPE_STANDARD = 4,
+	POWER_SUPPLY_CHARGE_TYPE_ADAPTIVE = 5,
+	POWER_SUPPLY_CHARGE_TYPE_CUSTOM = 6,
+	POWER_SUPPLY_CHARGE_TYPE_LONGLIFE = 7,
+	POWER_SUPPLY_CHARGE_TYPE_BYPASS = 8,
+	POWER_SUPPLY_CHARGE_TYPE_TAPER_EXT = 50,
+};
+
+struct hidpp_battery {
+	u8 feature_index;
+	u8 solar_feature_index;
+	u8 voltage_feature_index;
+	u8 adc_measurement_feature_index;
+	struct power_supply_desc desc;
+	struct power_supply *ps;
+	char name[64];
+	int status;
+	int capacity;
+	int level;
+	int voltage;
+	int charge_type;
+	bool online;
+	u8 supported_levels_1004;
+};
+
+struct hidpp_scroll_counter {
+	int wheel_multiplier;
+	int remainder;
+	int direction;
+	unsigned long long last_time;
+};
+
+struct hidpp_device {
+	struct hid_device *hid_dev;
+	struct input_dev *input;
+	struct mutex send_mutex;
+	void *send_receive_buf;
+	char *name;
+	wait_queue_head_t wait;
+	int very_long_report_length;
+	bool answer_available;
+	u8 protocol_major;
+	u8 protocol_minor;
+	void *private_data;
+	struct work_struct work;
+	struct kfifo delayed_work_fifo;
+	atomic_t connected;
+	struct input_dev *delayed_input;
+	unsigned long quirks;
+	unsigned long capabilities;
+	u8 supported_reports;
+	struct hidpp_battery battery;
+	struct hidpp_scroll_counter vertical_wheel_counter;
+	u8 wireless_feature_index;
+};
+
+struct hidpp_ff_private_data;
+
+struct hidpp_ff_work_data {
+	struct work_struct work;
+	struct hidpp_ff_private_data *data;
+	int effect_id;
+	u8 command;
+	u8 params[20];
+	u8 size;
+};
+
+struct hidpp_ff_private_data {
+	struct hidpp_device *hidpp;
+	u8 feature_index;
+	u8 version;
+	u16 gain;
+	s16 range;
+	u8 slot_autocenter;
+	u8 num_effects;
+	int *effect_ids;
+	struct workqueue_struct *wq;
+	atomic_t workqueue_size;
+};
+
+struct fap {
+	u8 feature_index;
+	u8 funcindex_clientid;
+	u8 params[60];
+};
+
+struct rap {
+	u8 sub_id;
+	u8 reg_address;
+	u8 params[60];
+};
+
+struct hidpp_report {
+	u8 report_id;
+	u8 device_index;
+	union {
+		struct fap fap;
+		struct rap rap;
+		u8 rawbytes[62];
+	};
+};
+
+struct k400_private_data {
+	u8 feature_index;
+};
+
+struct wtp_data {
+	u16 x_size;
+	u16 y_size;
+	u8 finger_count;
+	u8 mt_feature_index;
+	u8 button_feature_index;
+	u8 maxcontacts;
+	bool flip_y;
+	unsigned int resolution;
+};
+
+struct hidpp_touchpad_raw_xy_finger {
+	u8 contact_type;
+	u8 contact_status;
+	u16 x;
+	u16 y;
+	u8 z;
+	u8 area;
+	u8 finger_id;
+};
+
+struct hidpp_touchpad_raw_xy {
+	u16 timestamp;
+	struct hidpp_touchpad_raw_xy_finger fingers[2];
+	u8 spurious_flag;
+	u8 end_of_frame;
+	u8 finger_count;
+	u8 button;
+};
+
+struct hidpp_touchpad_fw_items {
+	uint8_t presence;
+	uint8_t desired_state;
+	uint8_t state;
+	uint8_t persistent;
+};
+
+struct hidpp_touchpad_raw_info {
+	u16 x_size;
+	u16 y_size;
+	u8 z_range;
+	u8 area_range;
+	u8 timestamp_unit;
+	u8 maxcontacts;
+	u8 origin;
+	u16 res;
+};
+
+struct magicmouse_sc {
+	struct input_dev *input;
+	unsigned long quirks;
+	int ntouches;
+	int scroll_accel;
+	unsigned long scroll_jiffies;
+	struct {
+		short x;
+		short y;
+		short scroll_x;
+		short scroll_y;
+		short scroll_x_hr;
+		short scroll_y_hr;
+		u8 size;
+		bool scroll_x_active;
+		bool scroll_y_active;
+	} touches[16];
+	int tracking_ids[16];
+	struct hid_device *hdev;
+	struct delayed_work work;
+	struct timer_list battery_timer;
+};
+
+enum {
+	MAGNITUDE_STRONG = 2,
+	MAGNITUDE_WEAK = 3,
+	MAGNITUDE_NUM = 4,
+};
+
+struct ms_data {
+	unsigned long quirks;
+	struct hid_device *hdev;
+	struct work_struct ff_worker;
+	__u8 strong;
+	__u8 weak;
+	void *output_report_dmabuf;
+};
+
+struct xb1s_ff_report {
+	__u8 report_id;
+	__u8 enable;
+	__u8 magnitude[4];
+	__u8 duration_10ms;
+	__u8 start_delay_10ms;
+	__u8 loop_count;
+};
+
+struct mt_class {
+	__s32 name;
+	__s32 quirks;
+	__s32 sn_move;
+	__s32 sn_width;
+	__s32 sn_height;
+	__s32 sn_pressure;
+	__u8 maxcontacts;
+	bool is_indirect;
+	bool export_all_inputs;
+};
+
+enum latency_mode {
+	HID_LATENCY_NORMAL = 0,
+	HID_LATENCY_HIGH = 1,
+};
+
+struct mt_device {
+	struct mt_class mtclass;
+	struct timer_list release_timer;
+	struct hid_device *hdev;
+	unsigned long mt_io_flags;
+	__u8 inputmode_value;
+	__u8 maxcontacts;
+	bool is_buttonpad;
+	bool serial_maybe;
+	struct list_head applications;
+	struct list_head reports;
+};
+
+struct mt_application {
+	struct list_head list;
+	unsigned int application;
+	unsigned int report_id;
+	struct list_head mt_usages;
+	__s32 quirks;
+	__s32 *scantime;
+	__s32 scantime_logical_max;
+	__s32 *raw_cc;
+	int left_button_state;
+	unsigned int mt_flags;
+	unsigned long *pending_palm_slots;
+	__u8 num_received;
+	__u8 num_expected;
+	__u8 buttons_count;
+	__u8 touches_by_report;
+	__s32 dev_time;
+	unsigned long jiffies;
+	int timestamp;
+	int prev_scantime;
+	bool have_contact_count;
+};
+
+struct mt_report_data {
+	struct list_head list;
+	struct hid_report *report;
+	struct mt_application *application;
+	bool is_mt_collection;
+};
+
+struct mt_usages {
+	struct list_head list;
+	__s32 *x;
+	__s32 *y;
+	__s32 *cx;
+	__s32 *cy;
+	__s32 *p;
+	__s32 *w;
+	__s32 *h;
+	__s32 *a;
+	__s32 *contactid;
+	bool *tip_state;
+	bool *inrange_state;
+	bool *confidence_state;
+};
+
+enum joycon_ctlr_state {
+	JOYCON_CTLR_STATE_INIT = 0,
+	JOYCON_CTLR_STATE_READ = 1,
+	JOYCON_CTLR_STATE_REMOVED = 2,
+};
+
+enum joycon_ctlr_type {
+	JOYCON_CTLR_TYPE_JCL = 1,
+	JOYCON_CTLR_TYPE_JCR = 2,
+	JOYCON_CTLR_TYPE_PRO = 3,
+};
+
+enum joycon_msg_type {
+	JOYCON_MSG_TYPE_NONE = 0,
+	JOYCON_MSG_TYPE_USB = 1,
+	JOYCON_MSG_TYPE_SUBCMD = 2,
+};
+
+struct joycon_stick_cal {
+	s32 max;
+	s32 min;
+	s32 center;
+};
+
+struct joycon_imu_cal {
+	s16 offset[3];
+	s16 scale[3];
+};
+
+struct joycon_ctlr {
+	struct hid_device *hdev;
+	struct input_dev *input;
+	struct led_classdev leds[4];
+	struct led_classdev home_led;
+	enum joycon_ctlr_state ctlr_state;
+	spinlock_t lock;
+	u8 mac_addr[6];
+	char *mac_addr_str;
+	enum joycon_ctlr_type ctlr_type;
+	enum joycon_msg_type msg_type;
+	u8 subcmd_num;
+	struct mutex output_mutex;
+	u8 input_buf[84];
+	wait_queue_head_t wait;
+	bool received_resp;
+	u8 usb_ack_match;
+	u8 subcmd_ack_match;
+	bool received_input_report;
+	unsigned int last_input_report_msecs;
+	unsigned int last_subcmd_sent_msecs;
+	unsigned int consecutive_valid_report_deltas;
+	struct joycon_stick_cal left_stick_cal_x;
+	struct joycon_stick_cal left_stick_cal_y;
+	struct joycon_stick_cal right_stick_cal_x;
+	struct joycon_stick_cal right_stick_cal_y;
+	struct joycon_imu_cal accel_cal;
+	struct joycon_imu_cal gyro_cal;
+	s32 imu_cal_accel_divisor[3];
+	s32 imu_cal_gyro_divisor[3];
+	struct power_supply *battery;
+	struct power_supply_desc battery_desc;
+	u8 battery_capacity;
+	bool battery_charging;
+	bool host_powered;
+	u8 rumble_data[64];
+	int rumble_queue_head;
+	int rumble_queue_tail;
+	struct workqueue_struct *rumble_queue;
+	struct work_struct rumble_worker;
+	unsigned int rumble_msecs;
+	u16 rumble_ll_freq;
+	u16 rumble_lh_freq;
+	u16 rumble_rl_freq;
+	u16 rumble_rh_freq;
+	unsigned short rumble_zero_countdown;
+	struct input_dev *imu_input;
+	bool imu_first_packet_received;
+	unsigned int imu_timestamp_us;
+	unsigned int imu_last_pkt_ms;
+	unsigned int imu_delta_samples_count;
+	unsigned int imu_delta_samples_sum;
+	unsigned int imu_avg_delta_ms;
+};
+
+struct joycon_subcmd_request {
+	u8 output_id;
+	u8 packet_num;
+	u8 rumble_data[8];
+	u8 subcmd_id;
+	u8 data[0];
+};
+
+struct joycon_subcmd_reply {
+	u8 ack;
+	u8 id;
+	u8 data[0];
+};
+
+struct joycon_input_report {
+	u8 id;
+	u8 timer;
+	u8 bat_con;
+	u8 button_status[3];
+	u8 left_stick[3];
+	u8 right_stick[3];
+	u8 vibrator_report;
+	union {
+		struct joycon_subcmd_reply subcmd_reply;
+		u8 imu_raw_bytes[36];
+	};
+};
+
+struct joycon_imu_data {
+	s16 accel_x;
+	s16 accel_y;
+	s16 accel_z;
+	s16 gyro_x;
+	s16 gyro_y;
+	s16 gyro_z;
+};
+
+struct joycon_rumble_output {
+	u8 output_id;
+	u8 packet_num;
+	u8 rumble_data[8];
+};
+
+struct pcmidi_snd;
+
+struct pcmidi_sustain {
+	unsigned long in_use;
+	struct pcmidi_snd *pm;
+	struct timer_list timer;
+	unsigned char status;
+	unsigned char note;
+	unsigned char velocity;
+};
+
+struct pk_device;
+
+struct pcmidi_snd {
+	struct pk_device *pk;
+	unsigned short ifnum;
+	struct hid_report *pcmidi_report6;
+	struct input_dev *input_ep82;
+	unsigned short midi_mode;
+	unsigned short midi_sustain_mode;
+	unsigned short midi_sustain;
+	unsigned short midi_channel;
+	short midi_octave;
+	struct pcmidi_sustain sustained_notes[32];
+	unsigned short fn_state;
+	unsigned short last_key[24];
+	spinlock_t rawmidi_in_lock;
+	struct snd_card *card;
+	struct snd_rawmidi *rwmidi;
+	struct snd_rawmidi_substream *in_substream;
+	struct snd_rawmidi_substream *out_substream;
+	unsigned long in_triggered;
+	unsigned long out_active;
+};
+
+struct pk_device {
+	unsigned long quirks;
+	struct hid_device *hdev;
+	struct pcmidi_snd *pm;
+};
+
+struct picolcd_pending;
+
+struct picolcd_data {
+	struct hid_device *hdev;
+	struct dentry *debug_reset;
+	struct dentry *debug_eeprom;
+	struct dentry *debug_flash;
+	struct mutex mutex_flash;
+	int addr_sz;
+	u8 version[2];
+	unsigned short opmode_delay;
+	u8 pressed_keys[2];
+	struct input_dev *input_keys;
+	unsigned short keycode[17];
+	spinlock_t lock;
+	struct mutex mutex;
+	struct picolcd_pending *pending;
+	int status;
+};
+
+struct picolcd_pending {
+	struct hid_report *out_report;
+	struct hid_report *in_report;
+	struct completion ready;
+	int raw_size;
+	u8 raw_data[64];
+};
+
+struct plt_drv_data {
+	unsigned long device_type;
+	unsigned long last_volume_key_ts;
+	u32 quirks;
+};
+
+struct ps_led_info {
+	const char *name;
+	const char *color;
+	int max_brightness;
+	enum led_brightness (*brightness_get)(struct led_classdev *);
+	int (*brightness_set)(struct led_classdev *, enum led_brightness);
+	int (*blink_set)(struct led_classdev *, unsigned long *, unsigned long *);
+};
+
+enum dualshock4_dongle_state {
+	DONGLE_DISCONNECTED = 0,
+	DONGLE_CALIBRATING = 1,
+	DONGLE_CONNECTED = 2,
+	DONGLE_DISABLED = 3,
+};
+
+struct ps_device {
+	struct list_head list;
+	struct hid_device *hdev;
+	spinlock_t lock;
+	uint32_t player_id;
+	struct power_supply_desc battery_desc;
+	struct power_supply *battery;
+	uint8_t battery_capacity;
+	int battery_status;
+	const char *input_dev_name;
+	uint8_t mac_address[6];
+	uint32_t hw_version;
+	uint32_t fw_version;
+	int (*parse_report)(struct ps_device *, struct hid_report *, u8 *, int);
+	void (*remove)(struct ps_device *);
+};
+
+struct ps_calibration_data {
+	int abs_code;
+	short bias;
+	int sens_numer;
+	int sens_denom;
+};
+
+struct dualshock4 {
+	struct ps_device base;
+	struct input_dev *gamepad;
+	struct input_dev *sensors;
+	struct input_dev *touchpad;
+	struct ps_calibration_data accel_calib_data[3];
+	struct ps_calibration_data gyro_calib_data[3];
+	enum dualshock4_dongle_state dongle_state;
+	struct work_struct dongle_hotplug_worker;
+	bool sensor_timestamp_initialized;
+	uint32_t prev_sensor_timestamp;
+	uint32_t sensor_timestamp_us;
+	bool update_bt_poll_interval;
+	uint8_t bt_poll_interval;
+	bool update_rumble;
+	uint8_t motor_left;
+	uint8_t motor_right;
+	bool update_lightbar;
+	bool update_lightbar_blink;
+	bool lightbar_enabled;
+	uint8_t lightbar_red;
+	uint8_t lightbar_green;
+	uint8_t lightbar_blue;
+	uint8_t lightbar_blink_on;
+	uint8_t lightbar_blink_off;
+	struct led_classdev lightbar_leds[4];
+	struct work_struct output_worker;
+	bool output_worker_initialized;
+	void *output_report_dmabuf;
+};
+
+struct dualshock4_input_report_common {
+	uint8_t x;
+	uint8_t y;
+	uint8_t rx;
+	uint8_t ry;
+	uint8_t buttons[3];
+	uint8_t z;
+	uint8_t rz;
+	__le16 sensor_timestamp;
+	uint8_t sensor_temperature;
+	__le16 gyro[3];
+	__le16 accel[3];
+	uint8_t reserved2[5];
+	uint8_t status[2];
+	uint8_t reserved3;
+} __attribute__((packed));
+
+struct dualshock4_touch_point {
+	uint8_t contact;
+	uint8_t x_lo;
+	uint8_t x_hi: 4;
+	uint8_t y_lo: 4;
+	uint8_t y_hi;
+};
+
+struct dualshock4_touch_report {
+	uint8_t timestamp;
+	struct dualshock4_touch_point points[2];
+};
+
+struct dualshock4_input_report_usb {
+	uint8_t report_id;
+	struct dualshock4_input_report_common common;
+	uint8_t num_touch_reports;
+	struct dualshock4_touch_report touch_reports[3];
+	uint8_t reserved[3];
+};
+
+struct dualshock4_input_report_bt {
+	uint8_t report_id;
+	uint8_t reserved[2];
+	struct dualshock4_input_report_common common;
+	uint8_t num_touch_reports;
+	struct dualshock4_touch_report touch_reports[4];
+	uint8_t reserved2[2];
+	__le32 crc32;
+} __attribute__((packed));
+
+struct dualsense {
+	struct ps_device base;
+	struct input_dev *gamepad;
+	struct input_dev *sensors;
+	struct input_dev *touchpad;
+	uint16_t update_version;
+	struct ps_calibration_data accel_calib_data[3];
+	struct ps_calibration_data gyro_calib_data[3];
+	bool sensor_timestamp_initialized;
+	uint32_t prev_sensor_timestamp;
+	uint32_t sensor_timestamp_us;
+	bool use_vibration_v2;
+	bool update_rumble;
+	uint8_t motor_left;
+	uint8_t motor_right;
+	struct led_classdev_mc lightbar;
+	bool update_lightbar;
+	uint8_t lightbar_red;
+	uint8_t lightbar_green;
+	uint8_t lightbar_blue;
+	bool update_mic_mute;
+	bool mic_muted;
+	bool last_btn_mic_state;
+	bool update_player_leds;
+	uint8_t player_leds_state;
+	struct led_classdev player_leds[5];
+	struct work_struct output_worker;
+	bool output_worker_initialized;
+	void *output_report_dmabuf;
+	uint8_t output_seq;
+};
+
+struct dualsense_touch_point {
+	uint8_t contact;
+	uint8_t x_lo;
+	uint8_t x_hi: 4;
+	uint8_t y_lo: 4;
+	uint8_t y_hi;
+};
+
+struct dualsense_input_report {
+	uint8_t x;
+	uint8_t y;
+	uint8_t rx;
+	uint8_t ry;
+	uint8_t z;
+	uint8_t rz;
+	uint8_t seq_number;
+	uint8_t buttons[4];
+	uint8_t reserved[4];
+	__le16 gyro[3];
+	__le16 accel[3];
+	__le32 sensor_timestamp;
+	uint8_t reserved2;
+	struct dualsense_touch_point points[2];
+	uint8_t reserved3[12];
+	uint8_t status;
+	uint8_t reserved4[10];
+} __attribute__((packed));
+
+struct dualshock4_output_report_bt;
+
+struct dualshock4_output_report_usb;
+
+struct dualshock4_output_report_common;
+
+struct dualshock4_output_report {
+	uint8_t *data;
+	uint8_t len;
+	struct dualshock4_output_report_bt *bt;
+	struct dualshock4_output_report_usb *usb;
+	struct dualshock4_output_report_common *common;
+};
+
+struct dualshock4_output_report_common {
+	uint8_t valid_flag0;
+	uint8_t valid_flag1;
+	uint8_t reserved;
+	uint8_t motor_right;
+	uint8_t motor_left;
+	uint8_t lightbar_red;
+	uint8_t lightbar_green;
+	uint8_t lightbar_blue;
+	uint8_t lightbar_blink_on;
+	uint8_t lightbar_blink_off;
+};
+
+struct dualshock4_output_report_bt {
+	uint8_t report_id;
+	uint8_t hw_control;
+	uint8_t audio_control;
+	struct dualshock4_output_report_common common;
+	uint8_t reserved[61];
+	__le32 crc32;
+} __attribute__((packed));
+
+struct dualshock4_output_report_usb {
+	uint8_t report_id;
+	struct dualshock4_output_report_common common;
+	uint8_t reserved[21];
+};
+
+struct dualsense_output_report_bt;
+
+struct dualsense_output_report_usb;
+
+struct dualsense_output_report_common;
+
+struct dualsense_output_report {
+	uint8_t *data;
+	uint8_t len;
+	struct dualsense_output_report_bt *bt;
+	struct dualsense_output_report_usb *usb;
+	struct dualsense_output_report_common *common;
+};
+
+struct dualsense_output_report_common {
+	uint8_t valid_flag0;
+	uint8_t valid_flag1;
+	uint8_t motor_right;
+	uint8_t motor_left;
+	uint8_t reserved[4];
+	uint8_t mute_button_led;
+	uint8_t power_save_control;
+	uint8_t reserved2[28];
+	uint8_t valid_flag2;
+	uint8_t reserved3[2];
+	uint8_t lightbar_setup;
+	uint8_t led_brightness;
+	uint8_t player_leds;
+	uint8_t lightbar_red;
+	uint8_t lightbar_green;
+	uint8_t lightbar_blue;
+};
+
+struct dualsense_output_report_bt {
+	uint8_t report_id;
+	uint8_t seq_tag;
+	uint8_t tag;
+	struct dualsense_output_report_common common;
+	uint8_t reserved[24];
+	__le32 crc32;
+} __attribute__((packed));
+
+struct dualsense_output_report_usb {
+	uint8_t report_id;
+	struct dualsense_output_report_common common;
+	uint8_t reserved[15];
+};
+
+struct roccat_report {
+	uint8_t *value;
+};
+
+struct roccat_device {
+	unsigned int minor;
+	int report_size;
+	int open;
+	int exist;
+	wait_queue_head_t wait;
+	struct device *dev;
+	struct hid_device *hid;
+	struct list_head readers;
+	struct mutex readers_lock;
+	struct roccat_report cbuf[16];
+	int cbuf_end;
+	struct mutex cbuf_lock;
+};
+
+struct roccat_reader {
+	struct list_head node;
+	struct roccat_device *device;
+	int cbuf_start;
+};
+
+enum roccat_common2_commands {
+	ROCCAT_COMMON_COMMAND_CONTROL = 4,
+};
+
+enum roccat_common2_control_states {
+	ROCCAT_COMMON_CONTROL_STATUS_CRITICAL = 0,
+	ROCCAT_COMMON_CONTROL_STATUS_OK = 1,
+	ROCCAT_COMMON_CONTROL_STATUS_INVALID = 2,
+	ROCCAT_COMMON_CONTROL_STATUS_BUSY = 3,
+	ROCCAT_COMMON_CONTROL_STATUS_CRITICAL_NEW = 4,
+};
+
+struct roccat_common2_control {
+	uint8_t command;
+	uint8_t value;
+	uint8_t request;
+};
+
+struct roccat_common2_device {
+	int roccat_claimed;
+	int chrdev_minor;
+	struct mutex lock;
+};
+
+enum arvo_commands {
+	ARVO_COMMAND_MODE_KEY = 3,
+	ARVO_COMMAND_BUTTON = 4,
+	ARVO_COMMAND_INFO = 5,
+	ARVO_COMMAND_KEY_MASK = 6,
+	ARVO_COMMAND_ACTUAL_PROFILE = 7,
+};
+
+enum arvo_special_report_event_masks {
+	ARVO_SPECIAL_REPORT_EVENT_MASK_ACTION = 240,
+	ARVO_SPECIAL_REPORT_EVENT_MASK_BUTTON = 15,
+};
+
+enum arvo_special_report_events {
+	ARVO_SPECIAL_REPORT_EVENT_ACTION_PRESS = 16,
+	ARVO_SPECIAL_REPORT_EVENT_ACTION_RELEASE = 0,
+};
+
+enum arvo_roccat_report_action {
+	ARVO_ROCCAT_REPORT_ACTION_RELEASE = 0,
+	ARVO_ROCCAT_REPORT_ACTION_PRESS = 1,
+};
+
+struct arvo_special_report {
+	uint8_t unknown1;
+	uint8_t event;
+	uint8_t unknown2;
+};
+
+struct arvo_device {
+	int roccat_claimed;
+	int chrdev_minor;
+	struct mutex arvo_lock;
+	int actual_profile;
+};
+
+struct arvo_actual_profile {
+	uint8_t command;
+	uint8_t actual_profile;
+};
+
+struct arvo_roccat_report {
+	uint8_t profile;
+	uint8_t button;
+	uint8_t action;
+};
+
+struct arvo_mode_key {
+	uint8_t command;
+	uint8_t state;
+};
+
+struct arvo_key_mask {
+	uint8_t command;
+	uint8_t key_mask;
+};
+
+enum {
+	ISKU_PROFILE_NUM = 5,
+	ISKU_USB_INTERFACE_PROTOCOL = 0,
+};
+
+enum isku_commands {
+	ISKU_COMMAND_CONTROL = 4,
+	ISKU_COMMAND_ACTUAL_PROFILE = 5,
+	ISKU_COMMAND_KEY_MASK = 7,
+	ISKU_COMMAND_KEYS_FUNCTION = 8,
+	ISKU_COMMAND_KEYS_EASYZONE = 9,
+	ISKU_COMMAND_KEYS_MEDIA = 10,
+	ISKU_COMMAND_KEYS_THUMBSTER = 11,
+	ISKU_COMMAND_KEYS_MACRO = 13,
+	ISKU_COMMAND_MACRO = 14,
+	ISKU_COMMAND_INFO = 15,
+	ISKU_COMMAND_LIGHT = 16,
+	ISKU_COMMAND_RESET = 17,
+	ISKU_COMMAND_KEYS_CAPSLOCK = 19,
+	ISKU_COMMAND_LAST_SET = 20,
+	ISKU_COMMAND_15 = 21,
+	ISKU_COMMAND_TALK = 22,
+	ISKU_COMMAND_TALKFX = 23,
+	ISKU_COMMAND_FIRMWARE_WRITE = 27,
+	ISKU_COMMAND_FIRMWARE_WRITE_CONTROL = 28,
+};
+
+enum isku_report_numbers {
+	ISKU_REPORT_NUMBER_BUTTON = 3,
+};
+
+enum isku_report_button_events {
+	ISKU_REPORT_BUTTON_EVENT_PROFILE = 2,
+};
+
+enum {
+	ISKU_SIZE_CONTROL = 3,
+	ISKU_SIZE_INFO = 6,
+	ISKU_SIZE_KEY_MASK = 6,
+	ISKU_SIZE_KEYS_FUNCTION = 41,
+	ISKU_SIZE_KEYS_EASYZONE = 65,
+	ISKU_SIZE_KEYS_MEDIA = 29,
+	ISKU_SIZE_KEYS_THUMBSTER = 23,
+	ISKU_SIZE_KEYS_MACRO = 35,
+	ISKU_SIZE_KEYS_CAPSLOCK = 6,
+	ISKU_SIZE_LAST_SET = 20,
+	ISKU_SIZE_LIGHT = 16,
+	ISKU_SIZE_MACRO = 2083,
+	ISKU_SIZE_RESET = 3,
+	ISKU_SIZE_TALK = 16,
+	ISKU_SIZE_TALKFX = 16,
+};
+
+struct isku_report_button {
+	uint8_t number;
+	uint8_t zero;
+	uint8_t event;
+	uint8_t data1;
+	uint8_t data2;
+};
+
+struct isku_device {
+	int roccat_claimed;
+	int chrdev_minor;
+	struct mutex isku_lock;
+	int actual_profile;
+};
+
+struct isku_actual_profile {
+	uint8_t command;
+	uint8_t size;
+	uint8_t actual_profile;
+};
+
+struct isku_roccat_report {
+	uint8_t event;
+	uint8_t data1;
+	uint8_t data2;
+	uint8_t profile;
+};
+
+enum kone_commands {
+	kone_command_profile = 90,
+	kone_command_settings = 346,
+	kone_command_firmware_version = 602,
+	kone_command_weight = 1114,
+	kone_command_calibrate = 1370,
+	kone_command_confirm_write = 1626,
+	kone_command_firmware = 3674,
+};
+
+enum kone_mouse_events {
+	kone_mouse_event_osd_dpi = 160,
+	kone_mouse_event_osd_profile = 176,
+	kone_mouse_event_calibration = 192,
+	kone_mouse_event_call_overlong_macro = 224,
+	kone_mouse_event_multimedia = 225,
+	kone_mouse_event_switch_dpi = 240,
+	kone_mouse_event_switch_profile = 241,
+};
+
+enum kone_keystroke_actions {
+	kone_keystroke_action_press = 0,
+	kone_keystroke_action_release = 1,
+};
+
+struct kone_mouse_event {
+	uint8_t report_number;
+	uint8_t button;
+	uint16_t x;
+	uint16_t y;
+	uint8_t wheel;
+	union {
+		struct {
+			uint8_t tilt;
+			uint8_t unknown;
+			uint8_t event;
+			uint8_t value;
+			uint8_t macro_key;
+		};
+		struct {
+			uint8_t tilt;
+			uint8_t unknown;
+			uint8_t event;
+			uint8_t value;
+			uint8_t macro_key;
+		} wipe;
+	};
+};
+
+struct kone_settings {
+	uint16_t size;
+	uint8_t startup_profile;
+	uint8_t unknown1;
+	uint8_t tcu;
+	uint8_t unknown2[23];
+	uint8_t calibration_data[4];
+	uint8_t unknown3[2];
+	uint16_t checksum;
+};
+
+struct kone_light_info {
+	uint8_t number;
+	uint8_t mod;
+	uint8_t red;
+	uint8_t green;
+	uint8_t blue;
+};
+
+struct kone_keystroke {
+	uint8_t key;
+	uint8_t action;
+	uint16_t period;
+};
+
+struct kone_button_info {
+	uint8_t number;
+	uint8_t type;
+	uint8_t macro_type;
+	uint8_t macro_set_name[16];
+	uint8_t macro_name[16];
+	uint8_t count;
+	struct kone_keystroke keystrokes[20];
+};
+
+struct kone_profile {
+	uint16_t size;
+	uint16_t unused;
+	uint8_t profile;
+	uint16_t main_sensitivity;
+	uint8_t xy_sensitivity_enabled;
+	uint16_t x_sensitivity;
+	uint16_t y_sensitivity;
+	uint8_t dpi_rate;
+	uint8_t startup_dpi;
+	uint8_t polling_rate;
+	uint8_t dcu_flag;
+	uint8_t light_effect_1;
+	uint8_t light_effect_2;
+	uint8_t light_effect_3;
+	uint8_t light_effect_speed;
+	struct kone_light_info light_infos[5];
+	struct kone_button_info button_infos[8];
+	uint16_t checksum;
+} __attribute__((packed));
+
+struct kone_device {
+	int actual_profile;
+	int actual_dpi;
+	struct kone_mouse_event last_mouse_event;
+	long: 0;
+	struct mutex kone_lock;
+	struct kone_profile profiles[5];
+	struct kone_settings settings;
+	long: 0;
+	int firmware_version;
+	int roccat_claimed;
+	int chrdev_minor;
+	long: 0;
+} __attribute__((packed));
+
+struct kone_roccat_report {
+	uint8_t event;
+	uint8_t value;
+	uint8_t key;
+};
+
+enum koneplus_commands {
+	KONEPLUS_COMMAND_ACTUAL_PROFILE = 5,
+	KONEPLUS_COMMAND_CONTROL = 4,
+	KONEPLUS_COMMAND_PROFILE_SETTINGS = 6,
+	KONEPLUS_COMMAND_PROFILE_BUTTONS = 7,
+	KONEPLUS_COMMAND_MACRO = 8,
+	KONEPLUS_COMMAND_INFO = 9,
+	KONEPLUS_COMMAND_TCU = 12,
+	KONEPLUS_COMMAND_TCU_IMAGE = 12,
+	KONEPLUS_COMMAND_E = 14,
+	KONEPLUS_COMMAND_SENSOR = 15,
+	KONEPLUS_COMMAND_TALK = 16,
+	KONEPLUS_COMMAND_FIRMWARE_WRITE = 27,
+	KONEPLUS_COMMAND_FIRMWARE_WRITE_CONTROL = 28,
+};
+
+enum {
+	KONEPLUS_SIZE_ACTUAL_PROFILE = 3,
+	KONEPLUS_SIZE_CONTROL = 3,
+	KONEPLUS_SIZE_FIRMWARE_WRITE = 1026,
+	KONEPLUS_SIZE_INFO = 6,
+	KONEPLUS_SIZE_MACRO = 2082,
+	KONEPLUS_SIZE_PROFILE_SETTINGS = 43,
+	KONEPLUS_SIZE_PROFILE_BUTTONS = 77,
+	KONEPLUS_SIZE_SENSOR = 6,
+	KONEPLUS_SIZE_TALK = 16,
+	KONEPLUS_SIZE_TCU = 4,
+	KONEPLUS_SIZE_TCU_IMAGE = 1028,
+};
+
+enum koneplus_mouse_report_numbers {
+	KONEPLUS_MOUSE_REPORT_NUMBER_HID = 1,
+	KONEPLUS_MOUSE_REPORT_NUMBER_AUDIO = 2,
+	KONEPLUS_MOUSE_REPORT_NUMBER_BUTTON = 3,
+};
+
+enum koneplus_mouse_report_button_types {
+	KONEPLUS_MOUSE_REPORT_BUTTON_TYPE_PROFILE = 32,
+	KONEPLUS_MOUSE_REPORT_BUTTON_TYPE_QUICKLAUNCH = 96,
+	KONEPLUS_MOUSE_REPORT_BUTTON_TYPE_TIMER = 128,
+	KONEPLUS_MOUSE_REPORT_BUTTON_TYPE_CPI = 176,
+	KONEPLUS_MOUSE_REPORT_BUTTON_TYPE_SENSITIVITY = 192,
+	KONEPLUS_MOUSE_REPORT_BUTTON_TYPE_MULTIMEDIA = 240,
+	KONEPLUS_MOUSE_REPORT_TALK = 255,
+};
+
+enum koneplus_mouse_report_button_action {
+	KONEPLUS_MOUSE_REPORT_BUTTON_ACTION_PRESS = 0,
+	KONEPLUS_MOUSE_REPORT_BUTTON_ACTION_RELEASE = 1,
+};
+
+enum koneplus_control_requests {
+	KONEPLUS_CONTROL_REQUEST_PROFILE_SETTINGS = 128,
+	KONEPLUS_CONTROL_REQUEST_PROFILE_BUTTONS = 144,
+};
+
+struct koneplus_mouse_report_button {
+	uint8_t report_number;
+	uint8_t zero1;
+	uint8_t type;
+	uint8_t data1;
+	uint8_t data2;
+	uint8_t zero2;
+	uint8_t unknown[2];
+};
+
+struct koneplus_device {
+	int actual_profile;
+	int roccat_claimed;
+	int chrdev_minor;
+	struct mutex koneplus_lock;
+};
+
+struct koneplus_actual_profile {
+	uint8_t command;
+	uint8_t size;
+	uint8_t actual_profile;
+};
+
+struct koneplus_roccat_report {
+	uint8_t type;
+	uint8_t data1;
+	uint8_t data2;
+	uint8_t profile;
+};
+
+struct koneplus_info {
+	uint8_t command;
+	uint8_t size;
+	uint8_t firmware_version;
+	uint8_t unknown[3];
+};
+
+enum {
+	KONEPURE_MOUSE_REPORT_NUMBER_BUTTON = 3,
+};
+
+enum kovaplus_control_requests {
+	KOVAPLUS_CONTROL_REQUEST_PROFILE_SETTINGS = 16,
+	KOVAPLUS_CONTROL_REQUEST_PROFILE_BUTTONS = 32,
+};
+
+enum kovaplus_commands {
+	KOVAPLUS_COMMAND_ACTUAL_PROFILE = 5,
+	KOVAPLUS_COMMAND_CONTROL = 4,
+	KOVAPLUS_COMMAND_PROFILE_SETTINGS = 6,
+	KOVAPLUS_COMMAND_PROFILE_BUTTONS = 7,
+	KOVAPLUS_COMMAND_INFO = 9,
+	KOVAPLUS_COMMAND_A = 10,
+};
+
+enum {
+	KOVAPLUS_SIZE_CONTROL = 3,
+	KOVAPLUS_SIZE_INFO = 6,
+	KOVAPLUS_SIZE_PROFILE_SETTINGS = 16,
+	KOVAPLUS_SIZE_PROFILE_BUTTONS = 23,
+};
+
+enum kovaplus_mouse_report_numbers {
+	KOVAPLUS_MOUSE_REPORT_NUMBER_MOUSE = 1,
+	KOVAPLUS_MOUSE_REPORT_NUMBER_AUDIO = 2,
+	KOVAPLUS_MOUSE_REPORT_NUMBER_BUTTON = 3,
+	KOVAPLUS_MOUSE_REPORT_NUMBER_KBD = 4,
+};
+
+enum kovaplus_mouse_report_button_types {
+	KOVAPLUS_MOUSE_REPORT_BUTTON_TYPE_PROFILE_1 = 32,
+	KOVAPLUS_MOUSE_REPORT_BUTTON_TYPE_PROFILE_2 = 48,
+	KOVAPLUS_MOUSE_REPORT_BUTTON_TYPE_MACRO = 64,
+	KOVAPLUS_MOUSE_REPORT_BUTTON_TYPE_SHORTCUT = 80,
+	KOVAPLUS_MOUSE_REPORT_BUTTON_TYPE_QUICKLAUNCH = 96,
+	KOVAPLUS_MOUSE_REPORT_BUTTON_TYPE_TIMER = 128,
+	KOVAPLUS_MOUSE_REPORT_BUTTON_TYPE_CPI = 176,
+	KOVAPLUS_MOUSE_REPORT_BUTTON_TYPE_SENSITIVITY = 192,
+	KOVAPLUS_MOUSE_REPORT_BUTTON_TYPE_MULTIMEDIA = 240,
+};
+
+struct kovaplus_mouse_report_button {
+	uint8_t report_number;
+	uint8_t unknown1;
+	uint8_t type;
+	uint8_t data1;
+	uint8_t data2;
+};
+
+struct kovaplus_profile_settings {
+	uint8_t command;
+	uint8_t size;
+	uint8_t profile_index;
+	uint8_t unknown1;
+	uint8_t sensitivity_x;
+	uint8_t sensitivity_y;
+	uint8_t cpi_levels_enabled;
+	uint8_t cpi_startup_level;
+	uint8_t data[8];
+};
+
+struct kovaplus_profile_buttons {
+	uint8_t command;
+	uint8_t size;
+	uint8_t profile_index;
+	uint8_t data[20];
+};
+
+struct kovaplus_device {
+	int actual_profile;
+	int actual_cpi;
+	int actual_x_sensitivity;
+	int actual_y_sensitivity;
+	int roccat_claimed;
+	int chrdev_minor;
+	struct mutex kovaplus_lock;
+	struct kovaplus_profile_settings profile_settings[5];
+	struct kovaplus_profile_buttons profile_buttons[5];
+};
+
+struct kovaplus_actual_profile {
+	uint8_t command;
+	uint8_t size;
+	uint8_t actual_profile;
+};
+
+struct kovaplus_roccat_report {
+	uint8_t type;
+	uint8_t profile;
+	uint8_t button;
+	uint8_t data1;
+	uint8_t data2;
+};
+
+struct kovaplus_info {
+	uint8_t command;
+	uint8_t size;
+	uint8_t firmware_version;
+	uint8_t unknown[3];
+};
+
+enum {
+	LUA_SIZE_CONTROL = 8,
+};
+
+enum lua_commands {
+	LUA_COMMAND_CONTROL = 3,
+};
+
+struct lua_device {
+	struct mutex lua_lock;
+};
+
+enum pyra_commands {
+	PYRA_COMMAND_CONTROL = 4,
+	PYRA_COMMAND_SETTINGS = 5,
+	PYRA_COMMAND_PROFILE_SETTINGS = 6,
+	PYRA_COMMAND_PROFILE_BUTTONS = 7,
+	PYRA_COMMAND_INFO = 9,
+	PYRA_COMMAND_B = 11,
+};
+
+enum {
+	PYRA_SIZE_CONTROL = 3,
+	PYRA_SIZE_INFO = 6,
+	PYRA_SIZE_PROFILE_SETTINGS = 13,
+	PYRA_SIZE_PROFILE_BUTTONS = 19,
+	PYRA_SIZE_SETTINGS = 3,
+};
+
+enum pyra_control_requests {
+	PYRA_CONTROL_REQUEST_PROFILE_SETTINGS = 16,
+	PYRA_CONTROL_REQUEST_PROFILE_BUTTONS = 32,
+};
+
+enum pyra_mouse_report_numbers {
+	PYRA_MOUSE_REPORT_NUMBER_HID = 1,
+	PYRA_MOUSE_REPORT_NUMBER_AUDIO = 2,
+	PYRA_MOUSE_REPORT_NUMBER_BUTTON = 3,
+};
+
+enum pyra_mouse_event_button_types {
+	PYRA_MOUSE_EVENT_BUTTON_TYPE_TILT = 16,
+	PYRA_MOUSE_EVENT_BUTTON_TYPE_PROFILE_1 = 32,
+	PYRA_MOUSE_EVENT_BUTTON_TYPE_PROFILE_2 = 48,
+	PYRA_MOUSE_EVENT_BUTTON_TYPE_MACRO = 64,
+	PYRA_MOUSE_EVENT_BUTTON_TYPE_SHORTCUT = 80,
+	PYRA_MOUSE_EVENT_BUTTON_TYPE_QUICKLAUNCH = 96,
+	PYRA_MOUSE_EVENT_BUTTON_TYPE_CPI = 176,
+	PYRA_MOUSE_EVENT_BUTTON_TYPE_SENSITIVITY = 192,
+	PYRA_MOUSE_EVENT_BUTTON_TYPE_MULTIMEDIA = 240,
+};
+
+enum {
+	PYRA_MOUSE_EVENT_BUTTON_PRESS = 0,
+	PYRA_MOUSE_EVENT_BUTTON_RELEASE = 1,
+};
+
+struct pyra_mouse_event_button {
+	uint8_t report_number;
+	uint8_t unknown;
+	uint8_t type;
+	uint8_t data1;
+	uint8_t data2;
+};
+
+struct pyra_settings {
+	uint8_t command;
+	uint8_t size;
+	uint8_t startup_profile;
+};
+
+struct pyra_profile_settings {
+	uint8_t command;
+	uint8_t size;
+	uint8_t number;
+	uint8_t xysync;
+	uint8_t x_sensitivity;
+	uint8_t y_sensitivity;
+	uint8_t x_cpi;
+	uint8_t y_cpi;
+	uint8_t lightswitch;
+	uint8_t light_effect;
+	uint8_t handedness;
+	uint16_t checksum;
+} __attribute__((packed));
+
+struct pyra_device {
+	int actual_profile;
+	int actual_cpi;
+	int roccat_claimed;
+	int chrdev_minor;
+	struct mutex pyra_lock;
+	struct pyra_profile_settings profile_settings[5];
+};
+
+struct pyra_roccat_report {
+	uint8_t type;
+	uint8_t value;
+	uint8_t key;
+};
+
+struct pyra_info {
+	uint8_t command;
+	uint8_t size;
+	uint8_t firmware_version;
+	uint8_t unknown1;
+	uint8_t unknown2;
+	uint8_t unknown3;
+};
+
+enum {
+	RYOS_REPORT_NUMBER_SPECIAL = 3,
+	RYOS_USB_INTERFACE_PROTOCOL = 0,
+};
+
+enum {
+	SAVU_MOUSE_REPORT_NUMBER_SPECIAL = 3,
+};
+
+struct savu_mouse_report_special {
+	uint8_t report_number;
+	uint8_t zero;
+	uint8_t type;
+	uint8_t data[2];
+};
+
+struct savu_roccat_report {
+	uint8_t type;
+	uint8_t data[2];
+};
+
+struct sixaxis_rumble {
+	u8 padding;
+	u8 right_duration;
+	u8 right_motor_on;
+	u8 left_duration;
+	u8 left_motor_force;
+};
+
+struct sixaxis_led {
+	u8 time_enabled;
+	u8 duty_length;
+	u8 enabled;
+	u8 duty_off;
+	u8 duty_on;
+};
+
+struct sixaxis_output_report {
+	u8 report_id;
+	struct sixaxis_rumble rumble;
+	u8 padding[4];
+	u8 leds_bitmap;
+	struct sixaxis_led led[4];
+	struct sixaxis_led _reserved;
+};
+
+union sixaxis_output_report_01 {
+	struct sixaxis_output_report data;
+	u8 buf[36];
+};
+
+enum sony_worker {
+	SONY_WORKER_STATE = 0,
+};
+
+struct sony_sc {
+	spinlock_t lock;
+	struct list_head list_node;
+	struct hid_device *hdev;
+	struct input_dev *touchpad;
+	struct input_dev *sensor_dev;
+	struct led_classdev *leds[4];
+	unsigned long quirks;
+	struct work_struct state_worker;
+	void (*send_output_report)(struct sony_sc *);
+	struct power_supply *battery;
+	struct power_supply_desc battery_desc;
+	int device_id;
+	u8 *output_report_dmabuf;
+	u8 left;
+	u8 right;
+	u8 mac_address[6];
+	u8 state_worker_initialized;
+	u8 defer_initialization;
+	u8 battery_capacity;
+	int battery_status;
+	u8 led_state[4];
+	u8 led_delay_on[4];
+	u8 led_delay_off[4];
+	u8 led_count;
+	struct urb *ghl_urb;
+	struct timer_list ghl_poke_timer;
+};
+
+struct motion_output_report_02 {
+	u8 type;
+	u8 zero;
+	u8 r;
+	u8 g;
+	u8 b;
+	u8 zero2;
+	u8 rumble;
+};
+
+struct steam_device {
+	struct list_head list;
+	spinlock_t lock;
+	struct hid_device *hdev;
+	struct hid_device *client_hdev;
+	struct mutex mutex;
+	bool client_opened;
+	struct input_dev __attribute__((btf_type_tag("rcu"))) *input;
+	unsigned long quirks;
+	struct work_struct work_connect;
+	bool connected;
+	char serial_no[11];
+	struct power_supply_desc battery_desc;
+	struct power_supply __attribute__((btf_type_tag("rcu"))) *battery;
+	u8 battery_charge;
+	u16 voltage;
+	struct delayed_work heartbeat;
+	struct work_struct rumble_work;
+	u16 rumble_left;
+	u16 rumble_right;
+};
+
+enum uclogic_params_pen_inrange {
+	UCLOGIC_PARAMS_PEN_INRANGE_NORMAL = 0,
+	UCLOGIC_PARAMS_PEN_INRANGE_INVERTED = 1,
+	UCLOGIC_PARAMS_PEN_INRANGE_NONE = 2,
+};
+
+struct uclogic_params_pen_subreport {
+	__u8 value;
+	__u8 id;
+};
+
+struct uclogic_params_pen {
+	bool usage_invalid;
+	__u8 *desc_ptr;
+	unsigned int desc_size;
+	unsigned int id;
+	struct uclogic_params_pen_subreport subreport_list[3];
+	enum uclogic_params_pen_inrange inrange;
+	bool fragmented_hires;
+	bool tilt_y_flipped;
+};
+
+struct uclogic_params_frame {
+	__u8 *desc_ptr;
+	unsigned int desc_size;
+	unsigned int id;
+	const char *suffix;
+	unsigned int re_lsb;
+	unsigned int dev_id_byte;
+	unsigned int touch_byte;
+	__s8 touch_flip_at;
+	__s8 touch_max;
+	unsigned int bitmap_dial_byte;
+};
+
+struct uclogic_raw_event_hook;
+
+struct uclogic_params {
+	bool invalid;
+	__u8 *desc_ptr;
+	unsigned int desc_size;
+	struct uclogic_params_pen pen;
+	struct uclogic_params_frame frame_list[3];
+	struct uclogic_raw_event_hook *event_hooks;
+};
+
+struct uclogic_drvdata {
+	struct uclogic_params params;
+	__u8 *desc_ptr;
+	unsigned int desc_size;
+	struct input_dev *pen_input;
+	struct timer_list inrange_timer;
+	u8 re_state;
+	unsigned long quirks;
+};
+
+struct uclogic_raw_event_hook {
+	struct hid_device *hdev;
+	__u8 *event;
+	size_t size;
+	struct work_struct work;
+	struct list_head list;
+};
+
+enum uclogic_rdesc_ph_id {
+	UCLOGIC_RDESC_PEN_PH_ID_X_LM = 0,
+	UCLOGIC_RDESC_PEN_PH_ID_X_PM = 1,
+	UCLOGIC_RDESC_PEN_PH_ID_Y_LM = 2,
+	UCLOGIC_RDESC_PEN_PH_ID_Y_PM = 3,
+	UCLOGIC_RDESC_PEN_PH_ID_PRESSURE_LM = 4,
+	UCLOGIC_RDESC_FRAME_PH_ID_UM = 5,
+	UCLOGIC_RDESC_PH_ID_NUM = 6,
+};
+
+enum uclogic_params_frame_type {
+	UCLOGIC_PARAMS_FRAME_BUTTONS = 0,
+	UCLOGIC_PARAMS_FRAME_DIAL = 1,
+	UCLOGIC_PARAMS_FRAME_MOUSE = 2,
+};
+
+struct wacom_features {
+	const char *name;
+	int x_max;
+	int y_max;
+	int pressure_max;
+	int distance_max;
+	int type;
+	int x_resolution;
+	int y_resolution;
+	int numbered_buttons;
+	int offset_left;
+	int offset_right;
+	int offset_top;
+	int offset_bottom;
+	int device_type;
+	int x_phy;
+	int y_phy;
+	unsigned int unit;
+	int unitExpo;
+	int x_fuzz;
+	int y_fuzz;
+	int pressure_fuzz;
+	int distance_fuzz;
+	int tilt_fuzz;
+	unsigned int quirks;
+	unsigned int touch_max;
+	int oVid;
+	int oPid;
+	int pktlen;
+	bool check_for_hid_type;
+	int hid_type;
+};
+
+enum {
+	PENPARTNER = 0,
+	GRAPHIRE = 1,
+	GRAPHIRE_BT = 2,
+	WACOM_G4 = 3,
+	PTU = 4,
+	PL = 5,
+	DTU = 6,
+	DTUS = 7,
+	DTUSX = 8,
+	INTUOS = 9,
+	INTUOS3S = 10,
+	INTUOS3 = 11,
+	INTUOS3L = 12,
+	INTUOS4S = 13,
+	INTUOS4 = 14,
+	INTUOS4WL = 15,
+	INTUOS4L = 16,
+	INTUOS5S = 17,
+	INTUOS5 = 18,
+	INTUOS5L = 19,
+	INTUOSPS = 20,
+	INTUOSPM = 21,
+	INTUOSPL = 22,
+	INTUOSP2_BT = 23,
+	INTUOSP2S_BT = 24,
+	INTUOSHT3_BT = 25,
+	WACOM_21UX2 = 26,
+	WACOM_22HD = 27,
+	DTK = 28,
+	WACOM_24HD = 29,
+	WACOM_27QHD = 30,
+	CINTIQ_HYBRID = 31,
+	CINTIQ_COMPANION_2 = 32,
+	CINTIQ = 33,
+	WACOM_BEE = 34,
+	WACOM_13HD = 35,
+	WACOM_MO = 36,
+	BAMBOO_PEN = 37,
+	INTUOSHT = 38,
+	INTUOSHT2 = 39,
+	BAMBOO_TOUCH = 40,
+	BAMBOO_PT = 41,
+	WACOM_24HDT = 42,
+	WACOM_27QHDT = 43,
+	BAMBOO_PAD = 44,
+	WIRELESS = 45,
+	REMOTE = 46,
+	TABLETPC = 47,
+	TABLETPCE = 48,
+	TABLETPC2FG = 49,
+	MTSCREEN = 50,
+	MTTPC = 51,
+	MTTPC_B = 52,
+	HID_GENERIC = 53,
+	BOOTLOADER = 54,
+	MAX_TYPE = 55,
+};
+
+enum wacom_worker {
+	WACOM_WORKER_WIRELESS = 0,
+	WACOM_WORKER_BATTERY = 1,
+	WACOM_WORKER_REMOTE = 2,
+	WACOM_WORKER_MODE_CHANGE = 3,
+};
+
+struct hid_data {
+	__s16 inputmode;
+	__s16 inputmode_index;
+	bool sense_state;
+	bool inrange_state;
+	bool invert_state;
+	bool tipswitch;
+	bool barrelswitch;
+	bool barrelswitch2;
+	bool barrelswitch3;
+	bool serialhi;
+	bool confidence;
+	int x;
+	int y;
+	int pressure;
+	int width;
+	int height;
+	int id;
+	int cc_report;
+	int cc_index;
+	int cc_value_index;
+	int last_slot_field;
+	int num_expected;
+	int num_received;
+	int bat_status;
+	int battery_capacity;
+	int bat_charging;
+	int bat_connected;
+	int ps_connected;
+	bool pad_input_event_flag;
+	unsigned short sequence_number;
+	ktime_t time_delayed;
+};
+
+struct wacom_shared;
+
+struct kfifo_rec_ptr_2;
+
+struct wacom_wac {
+	char name[64];
+	char pen_name[64];
+	char touch_name[64];
+	char pad_name[64];
+	unsigned char data[361];
+	int tool[2];
+	int id[2];
+	__u64 serial[2];
+	bool probe_complete;
+	bool reporting_data;
+	struct wacom_features features;
+	struct wacom_shared *shared;
+	struct input_dev *pen_input;
+	struct input_dev *touch_input;
+	struct input_dev *pad_input;
+	struct kfifo_rec_ptr_2 *pen_fifo;
+	int pid;
+	int num_contacts_left;
+	u8 bt_features;
+	u8 bt_high_speed;
+	int mode_report;
+	int mode_value;
+	struct hid_data hid_data;
+	bool has_mute_touch_switch;
+	bool is_soft_touch_switch;
+	bool has_mode_change;
+	bool is_direct_mode;
+	bool is_invalid_bt_frame;
+};
+
+struct wacom_group_leds;
+
+struct wacom_leds {
+	struct wacom_group_leds *groups;
+	unsigned int count;
+	u8 llv;
+	u8 hlv;
+	u8 img_lum;
+	u8 max_llv;
+	u8 max_hlv;
+};
+
+struct wacom;
+
+struct wacom_battery {
+	struct wacom *wacom;
+	struct power_supply_desc bat_desc;
+	struct power_supply *battery;
+	char bat_name[64];
+	int bat_status;
+	int battery_capacity;
+	int bat_charging;
+	int bat_connected;
+	int ps_connected;
+};
+
+struct wacom_remote;
+
+struct wacom {
+	struct usb_device *usbdev;
+	struct usb_interface *intf;
+	struct wacom_wac wacom_wac;
+	struct hid_device *hdev;
+	struct mutex lock;
+	struct work_struct wireless_work;
+	struct work_struct battery_work;
+	struct work_struct remote_work;
+	struct delayed_work init_work;
+	struct wacom_remote *remote;
+	struct work_struct mode_change_work;
+	struct timer_list idleprox_timer;
+	bool generic_has_leds;
+	struct wacom_leds led;
+	struct wacom_battery battery;
+	bool resources;
+};
+
+struct wacom_shared {
+	bool stylus_in_proximity;
+	bool touch_down;
+	unsigned int touch_max;
+	int type;
+	struct input_dev *touch_input;
+	struct hid_device *pen;
+	struct hid_device *touch;
+	bool has_mute_touch_switch;
+	bool is_touch_on;
+};
+
+struct kfifo_rec_ptr_2 {
+	union {
+		struct __kfifo kfifo;
+		unsigned char *type;
+		const unsigned char *const_type;
+		char (*rectype)[2];
+		void *ptr;
+		const void *ptr_const;
+	};
+	unsigned char buf[0];
+};
+
+struct wacom_remote {
+	spinlock_t remote_lock;
+	struct kfifo remote_fifo;
+	struct kobject *remote_dir;
+	struct {
+		struct attribute_group group;
+		u32 serial;
+		struct input_dev *input;
+		bool registered;
+		struct wacom_battery battery;
+		ktime_t active_time;
+	} remotes[5];
+};
+
+struct wacom_led;
+
+struct wacom_group_leds {
+	u8 select;
+	struct wacom_led *leds;
+	unsigned int count;
+	struct device *dev;
+};
+
+struct wacom_led {
+	struct led_classdev cdev;
+	struct led_trigger trigger;
+	struct wacom *wacom;
+	unsigned int group;
+	unsigned int id;
+	u8 llv;
+	u8 hlv;
+	bool held;
+};
+
+struct wacom_remote_work_data {
+	struct {
+		u32 serial;
+	} remote[5];
+};
+
+struct wacom_hdev_data {
+	struct list_head list;
+	struct kref kref;
+	struct hid_device *dev;
+	struct wacom_shared shared;
+};
+
+struct wacom_sysfs_group_devres {
+	const struct attribute_group *group;
+	struct kobject *root;
+};
+
+struct wiimote_data;
+
+struct wiiproto_handler {
+	__u8 id;
+	size_t size;
+	void (*func)(struct wiimote_data *, const __u8 *);
+};
+
+struct wiimote_buf {
+	__u8 data[16384];
+	size_t size;
+};
+
+struct wiimote_queue {
+	spinlock_t lock;
+	struct work_struct worker;
+	__u8 head;
+	__u8 tail;
+	struct wiimote_buf outq[32];
+};
+
+struct wiimote_state {
+	spinlock_t lock;
+	__u32 flags;
+	__u8 accel_split[2];
+	__u8 drm;
+	__u8 devtype;
+	__u8 exttype;
+	__u8 mp;
+	struct mutex sync;
+	struct completion ready;
+	int cmd;
+	__u32 opt;
+	__u8 cmd_battery;
+	__u8 cmd_err;
+	__u8 *cmd_read_buf;
+	__u8 cmd_read_size;
+	__u16 calib_bboard[12];
+	__s16 calib_pro_sticks[4];
+	__u8 pressure_drums[7];
+	__u8 cache_rumble;
+};
+
+struct wiimote_debug;
+
+struct wiimote_data {
+	struct hid_device *hdev;
+	struct input_dev *input;
+	struct work_struct rumble_worker;
+	struct led_classdev *leds[4];
+	struct input_dev *accel;
+	struct input_dev *ir;
+	struct power_supply *battery;
+	struct power_supply_desc battery_desc;
+	struct input_dev *mp;
+	struct timer_list timer;
+	struct wiimote_debug *debug;
+	union {
+		struct input_dev *input;
+	} extension;
+	struct wiimote_queue queue;
+	struct wiimote_state state;
+	struct work_struct init_worker;
+};
+
+enum wiiproto_reqs {
+	WIIPROTO_REQ_NULL = 0,
+	WIIPROTO_REQ_RUMBLE = 16,
+	WIIPROTO_REQ_LED = 17,
+	WIIPROTO_REQ_DRM = 18,
+	WIIPROTO_REQ_IR1 = 19,
+	WIIPROTO_REQ_SREQ = 21,
+	WIIPROTO_REQ_WMEM = 22,
+	WIIPROTO_REQ_RMEM = 23,
+	WIIPROTO_REQ_IR2 = 26,
+	WIIPROTO_REQ_STATUS = 32,
+	WIIPROTO_REQ_DATA = 33,
+	WIIPROTO_REQ_RETURN = 34,
+	WIIPROTO_REQ_DRM_K = 48,
+	WIIPROTO_REQ_DRM_KA = 49,
+	WIIPROTO_REQ_DRM_KE = 50,
+	WIIPROTO_REQ_DRM_KAI = 51,
+	WIIPROTO_REQ_DRM_KEE = 52,
+	WIIPROTO_REQ_DRM_KAE = 53,
+	WIIPROTO_REQ_DRM_KIE = 54,
+	WIIPROTO_REQ_DRM_KAIE = 55,
+	WIIPROTO_REQ_DRM_E = 61,
+	WIIPROTO_REQ_DRM_SKAI1 = 62,
+	WIIPROTO_REQ_DRM_SKAI2 = 63,
+	WIIPROTO_REQ_MAX = 64,
+};
+
+enum wiimote_devtype {
+	WIIMOTE_DEV_PENDING = 0,
+	WIIMOTE_DEV_UNKNOWN = 1,
+	WIIMOTE_DEV_GENERIC = 2,
+	WIIMOTE_DEV_GEN10 = 3,
+	WIIMOTE_DEV_GEN20 = 4,
+	WIIMOTE_DEV_BALANCE_BOARD = 5,
+	WIIMOTE_DEV_PRO_CONTROLLER = 6,
+	WIIMOTE_DEV_NUM = 7,
+};
+
+enum wiimote_exttype {
+	WIIMOTE_EXT_NONE = 0,
+	WIIMOTE_EXT_UNKNOWN = 1,
+	WIIMOTE_EXT_NUNCHUK = 2,
+	WIIMOTE_EXT_CLASSIC_CONTROLLER = 3,
+	WIIMOTE_EXT_BALANCE_BOARD = 4,
+	WIIMOTE_EXT_PRO_CONTROLLER = 5,
+	WIIMOTE_EXT_DRUMS = 6,
+	WIIMOTE_EXT_GUITAR = 7,
+	WIIMOTE_EXT_TURNTABLE = 8,
+	WIIMOTE_EXT_NUM = 9,
+};
+
+enum wiimod_module {
+	WIIMOD_KEYS = 0,
+	WIIMOD_RUMBLE = 1,
+	WIIMOD_BATTERY = 2,
+	WIIMOD_LED1 = 3,
+	WIIMOD_LED2 = 4,
+	WIIMOD_LED3 = 5,
+	WIIMOD_LED4 = 6,
+	WIIMOD_ACCEL = 7,
+	WIIMOD_IR = 8,
+	WIIMOD_BUILTIN_MP = 9,
+	WIIMOD_NO_MP = 10,
+	WIIMOD_NUM = 11,
+	WIIMOD_NULL = 11,
+};
+
+enum wiimote_mptype {
+	WIIMOTE_MP_NONE = 0,
+	WIIMOTE_MP_UNKNOWN = 1,
+	WIIMOTE_MP_SINGLE = 2,
+	WIIMOTE_MP_PASSTHROUGH_NUNCHUK = 3,
+	WIIMOTE_MP_PASSTHROUGH_CLASSIC = 4,
+};
+
+struct wiimod_ops {
+	__u16 flags;
+	unsigned long arg;
+	int (*probe)(const struct wiimod_ops *, struct wiimote_data *);
+	void (*remove)(const struct wiimod_ops *, struct wiimote_data *);
+	void (*in_keys)(struct wiimote_data *, const __u8 *);
+	void (*in_accel)(struct wiimote_data *, const __u8 *);
+	void (*in_ir)(struct wiimote_data *, const __u8 *, bool, unsigned int);
+	void (*in_mp)(struct wiimote_data *, const __u8 *);
+	void (*in_ext)(struct wiimote_data *, const __u8 *);
+};
+
+enum wiiproto_keys {
+	WIIPROTO_KEY_LEFT = 0,
+	WIIPROTO_KEY_RIGHT = 1,
+	WIIPROTO_KEY_UP = 2,
+	WIIPROTO_KEY_DOWN = 3,
+	WIIPROTO_KEY_PLUS = 4,
+	WIIPROTO_KEY_MINUS = 5,
+	WIIPROTO_KEY_ONE = 6,
+	WIIPROTO_KEY_TWO = 7,
+	WIIPROTO_KEY_A = 8,
+	WIIPROTO_KEY_B = 9,
+	WIIPROTO_KEY_HOME = 10,
+	WIIPROTO_KEY_COUNT = 11,
+};
+
+enum wiimod_nunchuk_keys {
+	WIIMOD_NUNCHUK_KEY_C = 0,
+	WIIMOD_NUNCHUK_KEY_Z = 1,
+	WIIMOD_NUNCHUK_KEY_NUM = 2,
+};
+
+enum wiimod_classic_keys {
+	WIIMOD_CLASSIC_KEY_A = 0,
+	WIIMOD_CLASSIC_KEY_B = 1,
+	WIIMOD_CLASSIC_KEY_X = 2,
+	WIIMOD_CLASSIC_KEY_Y = 3,
+	WIIMOD_CLASSIC_KEY_ZL = 4,
+	WIIMOD_CLASSIC_KEY_ZR = 5,
+	WIIMOD_CLASSIC_KEY_PLUS = 6,
+	WIIMOD_CLASSIC_KEY_MINUS = 7,
+	WIIMOD_CLASSIC_KEY_HOME = 8,
+	WIIMOD_CLASSIC_KEY_LEFT = 9,
+	WIIMOD_CLASSIC_KEY_RIGHT = 10,
+	WIIMOD_CLASSIC_KEY_UP = 11,
+	WIIMOD_CLASSIC_KEY_DOWN = 12,
+	WIIMOD_CLASSIC_KEY_LT = 13,
+	WIIMOD_CLASSIC_KEY_RT = 14,
+	WIIMOD_CLASSIC_KEY_NUM = 15,
+};
+
+enum wiimod_pro_keys {
+	WIIMOD_PRO_KEY_A = 0,
+	WIIMOD_PRO_KEY_B = 1,
+	WIIMOD_PRO_KEY_X = 2,
+	WIIMOD_PRO_KEY_Y = 3,
+	WIIMOD_PRO_KEY_PLUS = 4,
+	WIIMOD_PRO_KEY_MINUS = 5,
+	WIIMOD_PRO_KEY_HOME = 6,
+	WIIMOD_PRO_KEY_LEFT = 7,
+	WIIMOD_PRO_KEY_RIGHT = 8,
+	WIIMOD_PRO_KEY_UP = 9,
+	WIIMOD_PRO_KEY_DOWN = 10,
+	WIIMOD_PRO_KEY_TL = 11,
+	WIIMOD_PRO_KEY_TR = 12,
+	WIIMOD_PRO_KEY_ZL = 13,
+	WIIMOD_PRO_KEY_ZR = 14,
+	WIIMOD_PRO_KEY_THUMBL = 15,
+	WIIMOD_PRO_KEY_THUMBR = 16,
+	WIIMOD_PRO_KEY_NUM = 17,
+};
+
+enum wiimod_guitar_keys {
+	WIIMOD_GUITAR_KEY_G = 0,
+	WIIMOD_GUITAR_KEY_R = 1,
+	WIIMOD_GUITAR_KEY_Y = 2,
+	WIIMOD_GUITAR_KEY_B = 3,
+	WIIMOD_GUITAR_KEY_O = 4,
+	WIIMOD_GUITAR_KEY_UP = 5,
+	WIIMOD_GUITAR_KEY_DOWN = 6,
+	WIIMOD_GUITAR_KEY_PLUS = 7,
+	WIIMOD_GUITAR_KEY_MINUS = 8,
+	WIIMOD_GUITAR_KEY_NUM = 9,
+};
+
+enum wiimod_turntable_keys {
+	WIIMOD_TURNTABLE_KEY_G_RIGHT = 0,
+	WIIMOD_TURNTABLE_KEY_R_RIGHT = 1,
+	WIIMOD_TURNTABLE_KEY_B_RIGHT = 2,
+	WIIMOD_TURNTABLE_KEY_G_LEFT = 3,
+	WIIMOD_TURNTABLE_KEY_R_LEFT = 4,
+	WIIMOD_TURNTABLE_KEY_B_LEFT = 5,
+	WIIMOD_TURNTABLE_KEY_EUPHORIA = 6,
+	WIIMOD_TURNTABLE_KEY_PLUS = 7,
+	WIIMOD_TURNTABLE_KEY_MINUS = 8,
+	WIIMOD_TURNTABLE_KEY_NUM = 9,
+};
+
+struct wiimote_debug {
+	struct wiimote_data *wdata;
+	struct dentry *eeprom;
+	struct dentry *drm;
+};
+
+struct hid_control_fifo {
+	unsigned char dir;
+	struct hid_report *report;
+	char *raw_report;
+};
+
+struct hid_output_fifo {
+	struct hid_report *report;
+	char *raw_report;
+};
+
+struct usbhid_device {
+	struct hid_device *hid;
+	struct usb_interface *intf;
+	int ifnum;
+	unsigned int bufsize;
+	struct urb *urbin;
+	char *inbuf;
+	dma_addr_t inbuf_dma;
+	struct urb *urbctrl;
+	struct usb_ctrlrequest *cr;
+	struct hid_control_fifo ctrl[256];
+	unsigned char ctrlhead;
+	unsigned char ctrltail;
+	char *ctrlbuf;
+	dma_addr_t ctrlbuf_dma;
+	unsigned long last_ctrl;
+	struct urb *urbout;
+	struct hid_output_fifo out[256];
+	unsigned char outhead;
+	unsigned char outtail;
+	char *outbuf;
+	dma_addr_t outbuf_dma;
+	unsigned long last_out;
+	struct mutex mutex;
+	spinlock_t lock;
+	unsigned long iofl;
+	struct timer_list io_retry;
+	unsigned long stop_retry;
+	unsigned int retry_delay;
+	struct work_struct reset_work;
+	wait_queue_head_t wait;
+};
+
+struct hiddev_usage_ref {
+	__u32 report_type;
+	__u32 report_id;
+	__u32 field_index;
+	__u32 usage_index;
+	__u32 usage_code;
+	__s32 value;
+};
+
+struct hiddev_list {
+	struct hiddev_usage_ref buffer[2048];
+	int head;
+	int tail;
+	unsigned int flags;
+	struct fasync_struct *fasync;
+	struct hiddev *hiddev;
+	struct list_head node;
+	struct mutex thread_lock;
+};
+
+struct hiddev_report_info {
+	__u32 report_type;
+	__u32 report_id;
+	__u32 num_fields;
+};
+
+struct hiddev_event {
+	unsigned int hid;
+	int value;
+};
+
+struct hiddev_collection_info {
+	__u32 index;
+	__u32 type;
+	__u32 usage;
+	__u32 level;
+};
+
+struct hiddev_field_info {
+	__u32 report_type;
+	__u32 report_id;
+	__u32 field_index;
+	__u32 maxusage;
+	__u32 flags;
+	__u32 physical;
+	__u32 logical;
+	__u32 application;
+	__s32 logical_minimum;
+	__s32 logical_maximum;
+	__s32 physical_minimum;
+	__s32 physical_maximum;
+	__u32 unit_exponent;
+	__u32 unit;
+};
+
+struct hiddev_devinfo {
+	__u32 bustype;
+	__u32 busnum;
+	__u32 devnum;
+	__u32 ifnum;
+	__s16 vendor;
+	__s16 product;
+	__s16 version;
+	__u32 num_applications;
+};
+
+struct hiddev_usage_ref_multi {
+	struct hiddev_usage_ref uref;
+	__u32 num_values;
+	__s32 values[1024];
+};
+
+struct alias_prop {
+	struct list_head link;
+	const char *alias;
+	struct device_node *np;
+	int id;
+	char stem[0];
+};
+
+struct of_bus {
+	const char *name;
+	const char *addresses;
+	int (*match)(struct device_node *);
+	void (*count_cells)(struct device_node *, int *, int *);
+	u64 (*map)(__be32 *, const __be32 *, int, int, int);
+	int (*translate)(__be32 *, u64, int);
+	bool has_flags;
+	unsigned int (*get_flags)(const __be32 *);
+};
+
+enum {
+	LOGIC_PIO_INDIRECT = 0,
+	LOGIC_PIO_CPU_MMIO = 1,
+};
+
+struct logic_pio_host_ops;
+
+struct logic_pio_hwaddr {
+	struct list_head list;
+	struct fwnode_handle *fwnode;
+	resource_size_t hw_start;
+	resource_size_t io_start;
+	resource_size_t size;
+	unsigned long flags;
+	void *hostdata;
+	const struct logic_pio_host_ops *ops;
+};
+
+struct logic_pio_host_ops {
+	u32 (*in)(void *, unsigned long, size_t);
+	void (*out)(void *, unsigned long, u32, size_t);
+	u32 (*ins)(void *, unsigned long, void *, size_t, unsigned int);
+	void (*outs)(void *, unsigned long, const void *, size_t, unsigned int);
+};
+
+struct of_intc_desc {
+	struct list_head list;
+	of_irq_init_cb_t irq_init_cb;
+	struct device_node *dev;
+	struct device_node *interrupt_parent;
+};
+
+struct vsock_sock;
+
+struct sockaddr_vm;
+
+struct vsock_transport_recv_notify_data;
+
+struct vsock_transport_send_notify_data;
+
+struct vsock_transport {
+	struct module *module;
+	int (*init)(struct vsock_sock *, struct vsock_sock *);
+	void (*destruct)(struct vsock_sock *);
+	void (*release)(struct vsock_sock *);
+	int (*cancel_pkt)(struct vsock_sock *);
+	int (*connect)(struct vsock_sock *);
+	int (*dgram_bind)(struct vsock_sock *, struct sockaddr_vm *);
+	int (*dgram_dequeue)(struct vsock_sock *, struct msghdr *, size_t, int);
+	int (*dgram_enqueue)(struct vsock_sock *, struct sockaddr_vm *, struct msghdr *, size_t);
+	bool (*dgram_allow)(u32, u32);
+	ssize_t (*stream_dequeue)(struct vsock_sock *, struct msghdr *, size_t, int);
+	ssize_t (*stream_enqueue)(struct vsock_sock *, struct msghdr *, size_t);
+	s64 (*stream_has_data)(struct vsock_sock *);
+	s64 (*stream_has_space)(struct vsock_sock *);
+	u64 (*stream_rcvhiwat)(struct vsock_sock *);
+	bool (*stream_is_active)(struct vsock_sock *);
+	bool (*stream_allow)(u32, u32);
+	ssize_t (*seqpacket_dequeue)(struct vsock_sock *, struct msghdr *, int);
+	int (*seqpacket_enqueue)(struct vsock_sock *, struct msghdr *, size_t);
+	bool (*seqpacket_allow)(u32);
+	u32 (*seqpacket_has_data)(struct vsock_sock *);
+	int (*notify_poll_in)(struct vsock_sock *, size_t, bool *);
+	int (*notify_poll_out)(struct vsock_sock *, size_t, bool *);
+	int (*notify_recv_init)(struct vsock_sock *, size_t, struct vsock_transport_recv_notify_data *);
+	int (*notify_recv_pre_block)(struct vsock_sock *, size_t, struct vsock_transport_recv_notify_data *);
+	int (*notify_recv_pre_dequeue)(struct vsock_sock *, size_t, struct vsock_transport_recv_notify_data *);
+	int (*notify_recv_post_dequeue)(struct vsock_sock *, size_t, ssize_t, bool, struct vsock_transport_recv_notify_data *);
+	int (*notify_send_init)(struct vsock_sock *, struct vsock_transport_send_notify_data *);
+	int (*notify_send_pre_block)(struct vsock_sock *, struct vsock_transport_send_notify_data *);
+	int (*notify_send_pre_enqueue)(struct vsock_sock *, struct vsock_transport_send_notify_data *);
+	int (*notify_send_post_enqueue)(struct vsock_sock *, ssize_t, struct vsock_transport_send_notify_data *);
+	void (*notify_buffer_size)(struct vsock_sock *, u64 *);
+	int (*notify_set_rcvlowat)(struct vsock_sock *, int);
+	int (*shutdown)(struct vsock_sock *, int);
+	u32 (*get_local_cid)();
+	int (*read_skb)(struct vsock_sock *, skb_read_actor_t);
+};
+
+struct virtio_transport {
+	struct vsock_transport transport;
+	int (*send_pkt)(struct sk_buff *);
+};
+
+struct sockaddr_vm {
+	__kernel_sa_family_t svm_family;
+	unsigned short svm_reserved1;
+	unsigned int svm_port;
+	unsigned int svm_cid;
+	__u8 svm_flags;
+	unsigned char svm_zero[3];
+};
+
+struct vsock_sock {
+	struct sock sk;
+	const struct vsock_transport *transport;
+	struct sockaddr_vm local_addr;
+	struct sockaddr_vm remote_addr;
+	struct list_head bound_table;
+	struct list_head connected_table;
+	bool trusted;
+	bool cached_peer_allow_dgram;
+	u32 cached_peer;
+	const struct cred *owner;
+	long connect_timeout;
+	struct sock *listener;
+	struct list_head pending_links;
+	struct list_head accept_queue;
+	bool rejected;
+	struct delayed_work connect_work;
+	struct delayed_work pending_work;
+	struct delayed_work close_work;
+	bool close_work_scheduled;
+	u32 peer_shutdown;
+	bool sent_request;
+	bool ignore_connecting_rst;
+	u64 buffer_size;
+	u64 buffer_min_size;
+	u64 buffer_max_size;
+	void *trans;
+};
+
+struct vsock_transport_recv_notify_data {
+	u64 data1;
+	u64 data2;
+	bool notify_on_block;
+};
+
+struct vsock_transport_send_notify_data {
+	u64 data1;
+	u64 data2;
+};
+
+enum {
+	VHOST_VSOCK_FEATURES = 13908312066ULL,
+};
+
+enum {
+	VHOST_VSOCK_BACKEND_FEATURES = 2,
+};
+
+enum {
+	VSOCK_VQ_RX = 0,
+	VSOCK_VQ_TX = 1,
+	VSOCK_VQ_EVENT = 2,
+	VSOCK_VQ_MAX = 3,
+};
+
+enum virtio_vsock_rw {
+	VIRTIO_VSOCK_SEQ_EOM = 1,
+	VIRTIO_VSOCK_SEQ_EOR = 2,
+};
+
+struct vhost_virtqueue;
+
+struct vhost_iotlb;
+
+struct vhost_iotlb_msg;
+
+struct vhost_dev {
+	struct mm_struct *mm;
+	struct mutex mutex;
+	struct vhost_virtqueue **vqs;
+	int nvqs;
+	struct eventfd_ctx *log_ctx;
+	struct vhost_iotlb *umem;
+	struct vhost_iotlb *iotlb;
+	spinlock_t iotlb_lock;
+	struct list_head read_list;
+	struct list_head pending_list;
+	wait_queue_head_t wait;
+	int iov_limit;
+	int weight;
+	int byte_weight;
+	struct xarray worker_xa;
+	bool use_worker;
+	int (*msg_handler)(struct vhost_dev *, u32, struct vhost_iotlb_msg *);
+};
+
+struct vhost_vring_call {
+	struct eventfd_ctx *ctx;
+	struct irq_bypass_producer producer;
+};
+
+struct vhost_work;
+
+typedef void (*vhost_work_fn_t)(struct vhost_work *);
+
+struct vhost_work {
+	struct llist_node node;
+	vhost_work_fn_t fn;
+	unsigned long flags;
+};
+
+struct vhost_poll {
+	poll_table table;
+	wait_queue_head_t *wqh;
+	wait_queue_entry_t wait;
+	struct vhost_work work;
+	__poll_t mask;
+	struct vhost_dev *dev;
+	struct vhost_virtqueue *vq;
+};
+
+struct vhost_worker;
+
+struct vhost_iotlb_map;
+
+struct vhost_log;
+
+struct vhost_virtqueue {
+	struct vhost_dev *dev;
+	struct vhost_worker __attribute__((btf_type_tag("rcu"))) *worker;
+	struct mutex mutex;
+	unsigned int num;
+	vring_desc_t __attribute__((btf_type_tag("user"))) *desc;
+	vring_avail_t __attribute__((btf_type_tag("user"))) *avail;
+	vring_used_t __attribute__((btf_type_tag("user"))) *used;
+	const struct vhost_iotlb_map *meta_iotlb[3];
+	struct file *kick;
+	struct vhost_vring_call call_ctx;
+	struct eventfd_ctx *error_ctx;
+	struct eventfd_ctx *log_ctx;
+	struct vhost_poll poll;
+	vhost_work_fn_t handle_kick;
+	u16 last_avail_idx;
+	u16 avail_idx;
+	u16 last_used_idx;
+	u16 used_flags;
+	u16 signalled_used;
+	bool signalled_used_valid;
+	bool log_used;
+	u64 log_addr;
+	struct iovec iov[1024];
+	struct iovec iotlb_iov[64];
+	struct iovec *indirect;
+	struct vring_used_elem *heads;
+	struct vhost_iotlb *umem;
+	struct vhost_iotlb *iotlb;
+	void *private_data;
+	u64 acked_features;
+	u64 acked_backend_features;
+	void __attribute__((btf_type_tag("user"))) *log_base;
+	struct vhost_log *log;
+	struct iovec log_iov[64];
+	bool is_le;
+	u32 busyloop_timeout;
+};
+
+struct vhost_vsock {
+	struct vhost_dev dev;
+	struct vhost_virtqueue vqs[2];
+	struct hlist_node hash;
+	struct vhost_work send_pkt_work;
+	struct sk_buff_head send_pkt_queue;
+	atomic_t queued_replies;
+	u32 guest_cid;
+	bool seqpacket_allow;
+};
+
+struct vhost_worker {
+	struct vhost_task *vtsk;
+	struct mutex mutex;
+	struct llist_head work_list;
+	u64 kcov_handle;
+	u32 id;
+	int attachment_cnt;
+};
+
+struct vhost_iotlb_map {
+	struct rb_node rb;
+	struct list_head link;
+	u64 start;
+	u64 last;
+	u64 size;
+	u64 addr;
+	u32 perm;
+	u32 flags_padding;
+	u64 __subtree_last;
+	void *opaque;
+};
+
+struct vhost_iotlb {
+	struct rb_root_cached root;
+	struct list_head list;
+	unsigned int limit;
+	unsigned int nmaps;
+	unsigned int flags;
+};
+
+struct vhost_log {
+	u64 addr;
+	u64 len;
+};
+
+struct vhost_iotlb_msg {
+	__u64 iova;
+	__u64 size;
+	__u64 uaddr;
+	__u8 perm;
+	__u8 type;
+};
+
+struct virtio_vsock_hdr {
+	__le64 src_cid;
+	__le64 dst_cid;
+	__le32 src_port;
+	__le32 dst_port;
+	__le32 len;
+	__le16 type;
+	__le16 op;
+	__le32 flags;
+	__le32 buf_alloc;
+	__le32 fwd_cnt;
+} __attribute__((packed));
+
+struct virtio_vsock_skb_cb {
+	bool reply;
+	bool tap_delivered;
+};
+
+enum vhost_uaddr_type {
+	VHOST_ADDR_DESC = 0,
+	VHOST_ADDR_AVAIL = 1,
+	VHOST_ADDR_USED = 2,
+	VHOST_NUM_ADDRS = 3,
+};
+
+struct vhost_msg {
+	int type;
+	union {
+		struct vhost_iotlb_msg iotlb;
+		__u8 padding[64];
+	};
+};
+
+struct vhost_msg_v2 {
+	__u32 type;
+	__u32 asid;
+	union {
+		struct vhost_iotlb_msg iotlb;
+		__u8 padding[64];
+	};
+};
+
+struct vhost_msg_node {
+	union {
+		struct vhost_msg msg;
+		struct vhost_msg_v2 msg_v2;
+	};
+	struct vhost_virtqueue *vq;
+	struct list_head node;
+};
+
+struct vhost_flush_struct {
+	struct vhost_work work;
+	struct completion wait_event;
+};
+
+struct vhost_worker_state {
+	unsigned int worker_id;
+};
+
+struct vhost_vring_addr {
+	unsigned int index;
+	unsigned int flags;
+	__u64 desc_user_addr;
+	__u64 used_user_addr;
+	__u64 avail_user_addr;
+	__u64 log_guest_addr;
+};
+
+struct vhost_vring_state {
+	unsigned int index;
+	unsigned int num;
+};
+
+struct vhost_memory_region {
+	__u64 guest_phys_addr;
+	__u64 memory_size;
+	__u64 userspace_addr;
+	__u64 flags_padding;
+};
+
+struct vhost_memory {
+	__u32 nregions;
+	__u32 padding;
+	struct vhost_memory_region regions[0];
+};
+
+struct vhost_vring_worker {
+	unsigned int index;
+	unsigned int worker_id;
+};
+
+struct vhost_vring_file {
+	unsigned int index;
+	int fd;
+};
+
+struct ashmem_area;
+
+struct ashmem_range {
+	struct list_head lru;
+	struct list_head unpinned;
+	struct ashmem_area *asma;
+	size_t pgstart;
+	size_t pgend;
+	unsigned int purged;
+};
+
+struct ashmem_area {
+	char name[267];
+	struct list_head unpinned_list;
+	struct file *file;
+	size_t size;
+	unsigned long prot_mask;
+};
+
+struct ashmem_pin {
+	__u32 offset;
+	__u32 len;
+};
+
+struct pcc_chan_reg {
+	void *vaddr;
+	struct acpi_generic_address *gas;
+	u64 preserve_mask;
+	u64 set_mask;
+	u64 status_mask;
+};
+
+struct pcc_chan_info {
+	struct pcc_mbox_chan chan;
+	struct pcc_chan_reg db;
+	struct pcc_chan_reg plat_irq_ack;
+	struct pcc_chan_reg cmd_complete;
+	struct pcc_chan_reg cmd_update;
+	struct pcc_chan_reg error;
+	int plat_irq;
+};
+
+enum acpi_pcct_type {
+	ACPI_PCCT_TYPE_GENERIC_SUBSPACE = 0,
+	ACPI_PCCT_TYPE_HW_REDUCED_SUBSPACE = 1,
+	ACPI_PCCT_TYPE_HW_REDUCED_SUBSPACE_TYPE2 = 2,
+	ACPI_PCCT_TYPE_EXT_PCC_MASTER_SUBSPACE = 3,
+	ACPI_PCCT_TYPE_EXT_PCC_SLAVE_SUBSPACE = 4,
+	ACPI_PCCT_TYPE_HW_REG_COMM_SUBSPACE = 5,
+	ACPI_PCCT_TYPE_RESERVED = 6,
+};
+
+struct acpi_pcct_subspace {
+	struct acpi_subtable_header header;
+	u8 reserved[6];
+	u64 base_address;
+	u64 length;
+	struct acpi_generic_address doorbell_register;
+	u64 preserve_mask;
+	u64 write_mask;
+	u32 latency;
+	u32 max_access_rate;
+	u16 min_turnaround_time;
+} __attribute__((packed));
+
+struct acpi_table_pcct {
+	struct acpi_table_header header;
+	u32 flags;
+	u64 reserved;
+};
+
+struct acpi_pcct_hw_reduced {
+	struct acpi_subtable_header header;
+	u32 platform_interrupt;
+	u8 flags;
+	u8 reserved;
+	u64 base_address;
+	u64 length;
+	struct acpi_generic_address doorbell_register;
+	u64 preserve_mask;
+	u64 write_mask;
+	u32 latency;
+	u32 max_access_rate;
+	u16 min_turnaround_time;
+} __attribute__((packed));
+
+struct acpi_pcct_ext_pcc_master {
+	struct acpi_subtable_header header;
+	u32 platform_interrupt;
+	u8 flags;
+	u8 reserved1;
+	u64 base_address;
+	u32 length;
+	struct acpi_generic_address doorbell_register;
+	u64 preserve_mask;
+	u64 write_mask;
+	u32 latency;
+	u32 max_access_rate;
+	u32 min_turnaround_time;
+	struct acpi_generic_address platform_ack_register;
+	u64 ack_preserve_mask;
+	u64 ack_set_mask;
+	u64 reserved2;
+	struct acpi_generic_address cmd_complete_register;
+	u64 cmd_complete_mask;
+	struct acpi_generic_address cmd_update_register;
+	u64 cmd_update_preserve_mask;
+	u64 cmd_update_set_mask;
+	struct acpi_generic_address error_status_register;
+	u64 error_status_mask;
+} __attribute__((packed));
+
+struct acpi_pcct_hw_reduced_type2 {
+	struct acpi_subtable_header header;
+	u32 platform_interrupt;
+	u8 flags;
+	u8 reserved;
+	u64 base_address;
+	u64 length;
+	struct acpi_generic_address doorbell_register;
+	u64 preserve_mask;
+	u64 write_mask;
+	u32 latency;
+	u32 max_access_rate;
+	u16 min_turnaround_time;
+	struct acpi_generic_address platform_ack_register;
+	u64 ack_preserve_mask;
+	u64 ack_write_mask;
+} __attribute__((packed));
+
+struct rproc;
+
+typedef int (*rproc_handle_resource_t)(struct rproc *, void *, int, int);
+
+enum rproc_dump_mechanism {
+	RPROC_COREDUMP_DISABLED = 0,
+	RPROC_COREDUMP_ENABLED = 1,
+	RPROC_COREDUMP_INLINE = 2,
+};
+
+struct rproc_ops;
+
+struct resource_table;
+
+struct rproc {
+	struct list_head node;
+	struct iommu_domain *domain;
+	const char *name;
+	const char *firmware;
+	void *priv;
+	struct rproc_ops *ops;
+	struct device dev;
+	atomic_t power;
+	unsigned int state;
+	enum rproc_dump_mechanism dump_conf;
+	struct mutex lock;
+	struct dentry *dbg_dir;
+	struct list_head traces;
+	int num_traces;
+	struct list_head carveouts;
+	struct list_head mappings;
+	u64 bootaddr;
+	struct list_head rvdevs;
+	struct list_head subdevs;
+	struct idr notifyids;
+	int index;
+	struct work_struct crash_handler;
+	unsigned int crash_cnt;
+	bool recovery_disabled;
+	int max_notifyid;
+	struct resource_table *table_ptr;
+	struct resource_table *clean_table;
+	struct resource_table *cached_table;
+	size_t table_sz;
+	bool has_iommu;
+	bool auto_boot;
+	bool sysfs_read_only;
+	struct list_head dump_segments;
+	int nb_vdev;
+	u8 elf_class;
+	u16 elf_machine;
+	struct cdev cdev;
+	bool cdev_put_on_release;
+	unsigned long features[1];
+};
+
+struct rproc_ops {
+	int (*prepare)(struct rproc *);
+	int (*unprepare)(struct rproc *);
+	int (*start)(struct rproc *);
+	int (*stop)(struct rproc *);
+	int (*attach)(struct rproc *);
+	int (*detach)(struct rproc *);
+	void (*kick)(struct rproc *, int);
+	void * (*da_to_va)(struct rproc *, u64, size_t, bool *);
+	int (*parse_fw)(struct rproc *, const struct firmware *);
+	int (*handle_rsc)(struct rproc *, u32, void *, int, int);
+	struct resource_table * (*find_loaded_rsc_table)(struct rproc *, const struct firmware *);
+	struct resource_table * (*get_loaded_rsc_table)(struct rproc *, size_t *);
+	int (*load)(struct rproc *, const struct firmware *);
+	int (*sanity_check)(struct rproc *, const struct firmware *);
+	u64 (*get_boot_addr)(struct rproc *, const struct firmware *);
+	unsigned long (*panic)(struct rproc *);
+	void (*coredump)(struct rproc *);
+};
+
+struct resource_table {
+	u32 ver;
+	u32 num;
+	u32 reserved[2];
+	u32 offset[0];
+};
+
+enum rproc_state {
+	RPROC_OFFLINE = 0,
+	RPROC_SUSPENDED = 1,
+	RPROC_RUNNING = 2,
+	RPROC_CRASHED = 3,
+	RPROC_DELETED = 4,
+	RPROC_ATTACHED = 5,
+	RPROC_DETACHED = 6,
+	RPROC_LAST = 7,
+};
+
+enum rproc_features {
+	RPROC_FEAT_ATTACH_ON_RECOVERY = 0,
+	RPROC_MAX_FEATURES = 1,
+};
+
+enum rproc_crash_type {
+	RPROC_MMUFAULT = 0,
+	RPROC_WATCHDOG = 1,
+	RPROC_FATAL_ERROR = 2,
+};
+
+enum fw_resource_type {
+	RSC_CARVEOUT = 0,
+	RSC_DEVMEM = 1,
+	RSC_TRACE = 2,
+	RSC_VDEV = 3,
+	RSC_LAST = 4,
+	RSC_VENDOR_START = 128,
+	RSC_VENDOR_END = 512,
+};
+
+enum rsc_handling_status {
+	RSC_HANDLED = 0,
+	RSC_IGNORED = 1,
+};
+
+struct rproc_mem_entry {
+	void *va;
+	bool is_iomem;
+	dma_addr_t dma;
+	size_t len;
+	u32 da;
+	void *priv;
+	char name[32];
+	struct list_head node;
+	u32 rsc_offset;
+	u32 flags;
+	u32 of_resm_idx;
+	int (*alloc)(struct rproc *, struct rproc_mem_entry *);
+	int (*release)(struct rproc *, struct rproc_mem_entry *);
+};
+
+struct rproc_debug_trace {
+	struct rproc *rproc;
+	struct dentry *tfile;
+	struct list_head node;
+	struct rproc_mem_entry trace_mem;
+};
+
+struct rproc_subdev {
+	struct list_head node;
+	int (*prepare)(struct rproc_subdev *);
+	int (*start)(struct rproc_subdev *);
+	void (*stop)(struct rproc_subdev *, bool);
+	void (*unprepare)(struct rproc_subdev *);
+};
+
+struct rproc_vdev;
+
+struct rproc_vring {
+	void *va;
+	int num;
+	u32 da;
+	u32 align;
+	int notifyid;
+	struct rproc_vdev *rvdev;
+	struct virtqueue *vq;
+};
+
+struct rproc_vdev {
+	struct rproc_subdev subdev;
+	struct platform_device *pdev;
+	unsigned int id;
+	struct list_head node;
+	struct rproc *rproc;
+	struct rproc_vring vring[2];
+	u32 rsc_offset;
+	u32 index;
+};
+
+struct fw_rsc_vdev_vring {
+	u32 da;
+	u32 align;
+	u32 num;
+	u32 notifyid;
+	u32 pa;
+};
+
+struct fw_rsc_vdev {
+	u32 id;
+	u32 notifyid;
+	u32 dfeatures;
+	u32 gfeatures;
+	u32 config_len;
+	u8 status;
+	u8 num_of_vrings;
+	u8 reserved[2];
+	struct fw_rsc_vdev_vring vring[0];
+};
+
+struct fw_rsc_hdr {
+	u32 type;
+	u8 data[0];
+};
+
+struct fw_rsc_carveout {
+	u32 da;
+	u32 pa;
+	u32 len;
+	u32 flags;
+	u32 reserved;
+	u8 name[32];
+};
+
+struct fw_rsc_devmem {
+	u32 da;
+	u32 pa;
+	u32 len;
+	u32 flags;
+	u32 reserved;
+	u8 name[32];
+};
+
+struct fw_rsc_trace {
+	u32 da;
+	u32 len;
+	u32 reserved;
+	u8 name[32];
+};
+
+struct rproc_vdev_data {
+	u32 rsc_offset;
+	unsigned int id;
+	u32 index;
+	struct fw_rsc_vdev *rsc;
+};
+
+struct rproc_dump_segment {
+	struct list_head node;
+	dma_addr_t da;
+	size_t size;
+	void *priv;
+	void (*dump)(struct rproc *, struct rproc_dump_segment *, void *, size_t, size_t);
+	loff_t offset;
+};
+
+struct rproc_coredump_state {
+	struct rproc *rproc;
+	void *header;
+	struct completion dump_done;
+};
+
+struct rpmsg_device_id {
+	char name[32];
+	kernel_ulong_t driver_data;
+};
+
+struct rpmsg_endpoint;
+
+struct rpmsg_device_ops;
+
+struct rpmsg_device {
+	struct device dev;
+	struct rpmsg_device_id id;
+	const char *driver_override;
+	u32 src;
+	u32 dst;
+	struct rpmsg_endpoint *ept;
+	bool announce;
+	bool little_endian;
+	const struct rpmsg_device_ops *ops;
+};
+
+typedef int (*rpmsg_rx_cb_t)(struct rpmsg_device *, void *, int, void *, u32);
+
+typedef int (*rpmsg_flowcontrol_cb_t)(struct rpmsg_device *, void *, bool);
+
+struct rpmsg_endpoint_ops;
+
+struct rpmsg_endpoint {
+	struct rpmsg_device *rpdev;
+	struct kref refcount;
+	rpmsg_rx_cb_t cb;
+	rpmsg_flowcontrol_cb_t flow_cb;
+	struct mutex cb_lock;
+	u32 addr;
+	void *priv;
+	const struct rpmsg_endpoint_ops *ops;
+};
+
+struct rpmsg_endpoint_ops {
+	void (*destroy_ept)(struct rpmsg_endpoint *);
+	int (*send)(struct rpmsg_endpoint *, void *, int);
+	int (*sendto)(struct rpmsg_endpoint *, void *, int, u32);
+	int (*send_offchannel)(struct rpmsg_endpoint *, u32, u32, void *, int);
+	int (*trysend)(struct rpmsg_endpoint *, void *, int);
+	int (*trysendto)(struct rpmsg_endpoint *, void *, int, u32);
+	int (*trysend_offchannel)(struct rpmsg_endpoint *, u32, u32, void *, int);
+	__poll_t (*poll)(struct rpmsg_endpoint *, struct file *, poll_table *);
+	int (*set_flow_control)(struct rpmsg_endpoint *, bool, u32);
+	ssize_t (*get_mtu)(struct rpmsg_endpoint *);
+};
+
+struct rpmsg_channel_info;
+
+struct rpmsg_device_ops {
+	struct rpmsg_device * (*create_channel)(struct rpmsg_device *, struct rpmsg_channel_info *);
+	int (*release_channel)(struct rpmsg_device *, struct rpmsg_channel_info *);
+	struct rpmsg_endpoint * (*create_ept)(struct rpmsg_device *, rpmsg_rx_cb_t, void *, struct rpmsg_channel_info);
+	int (*announce_create)(struct rpmsg_device *);
+	int (*announce_destroy)(struct rpmsg_device *);
+};
+
+struct rpmsg_channel_info {
+	char name[32];
+	u32 src;
+	u32 dst;
+};
+
+struct rpmsg_driver {
+	struct device_driver drv;
+	const struct rpmsg_device_id *id_table;
+	int (*probe)(struct rpmsg_device *);
+	void (*remove)(struct rpmsg_device *);
+	int (*callback)(struct rpmsg_device *, void *, int, void *, u32);
+	int (*flowcontrol)(struct rpmsg_device *, void *, bool);
+};
+
+struct rpmsg_eptdev {
+	struct device dev;
+	struct cdev cdev;
+	struct rpmsg_device *rpdev;
+	struct rpmsg_channel_info chinfo;
+	struct mutex ept_lock;
+	struct rpmsg_endpoint *ept;
+	struct rpmsg_endpoint *default_ept;
+	spinlock_t queue_lock;
+	struct sk_buff_head queue;
+	wait_queue_head_t readq;
+	bool remote_flow_restricted;
+	bool remote_flow_updated;
+};
+
+typedef void (*btf_trace_devfreq_frequency)(void *, struct devfreq *, unsigned long, unsigned long);
+
+typedef void (*btf_trace_devfreq_monitor)(void *, struct devfreq *);
+
+struct trace_event_raw_devfreq_frequency {
+	struct trace_entry ent;
+	u32 __data_loc_dev_name;
+	unsigned long freq;
+	unsigned long prev_freq;
+	unsigned long busy_time;
+	unsigned long total_time;
+	char __data[0];
+};
+
+struct trace_event_raw_devfreq_monitor {
+	struct trace_entry ent;
+	unsigned long freq;
+	unsigned long busy_time;
+	unsigned long total_time;
+	unsigned int polling_ms;
+	u32 __data_loc_dev_name;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_devfreq_frequency {
+	u32 dev_name;
+};
+
+struct trace_event_data_offsets_devfreq_monitor {
+	u32 dev_name;
+};
+
+struct devfreq_freqs {
+	unsigned long old;
+	unsigned long new;
+};
+
+struct devfreq_notifier_devres {
+	struct devfreq *devfreq;
+	struct notifier_block *nb;
+	unsigned int list;
+};
+
+struct devfreq_event_desc;
+
+struct devfreq_event_dev {
+	struct list_head node;
+	struct device dev;
+	struct mutex lock;
+	u32 enable_count;
+	const struct devfreq_event_desc *desc;
+};
+
+struct devfreq_event_ops;
+
+struct devfreq_event_desc {
+	const char *name;
+	u32 event_type;
+	void *driver_data;
+	const struct devfreq_event_ops *ops;
+};
+
+struct devfreq_event_data;
+
+struct devfreq_event_ops {
+	int (*enable)(struct devfreq_event_dev *);
+	int (*disable)(struct devfreq_event_dev *);
+	int (*reset)(struct devfreq_event_dev *);
+	int (*set_event)(struct devfreq_event_dev *);
+	int (*get_event)(struct devfreq_event_dev *, struct devfreq_event_data *);
+};
+
+struct devfreq_event_data {
+	unsigned long load_count;
+	unsigned long total_count;
+};
+
+struct __extcon_info {
+	unsigned int type;
+	unsigned int id;
+	const char *name;
+};
+
+struct extcon_cable;
+
+struct extcon_dev {
+	const char *name;
+	const unsigned int *supported_cable;
+	const u32 *mutually_exclusive;
+	struct device dev;
+	unsigned int id;
+	struct raw_notifier_head nh_all;
+	struct raw_notifier_head *nh;
+	struct list_head entry;
+	int max_supported;
+	spinlock_t lock;
+	u32 state;
+	struct device_type extcon_dev_type;
+	struct extcon_cable *cables;
+	struct attribute_group attr_g_muex;
+	struct attribute **attrs_muex;
+	struct device_attribute *d_attrs_muex;
+};
+
+union extcon_property_value {
+	int intval;
+};
+
+struct extcon_cable {
+	struct extcon_dev *edev;
+	int cable_index;
+	struct attribute_group attr_g;
+	struct device_attribute attr_name;
+	struct device_attribute attr_state;
+	struct attribute *attrs[3];
+	union extcon_property_value usb_propval[3];
+	union extcon_property_value chg_propval[1];
+	union extcon_property_value jack_propval[1];
+	union extcon_property_value disp_propval[2];
+	unsigned long usb_bits[1];
+	unsigned long chg_bits[1];
+	unsigned long jack_bits[1];
+	unsigned long disp_bits[1];
+};
+
+struct extcon_dev_notifier_devres {
+	struct extcon_dev *edev;
+	unsigned int id;
+	struct notifier_block *nb;
+};
+
+struct iio_dev;
+
+struct iio_buffer_setup_ops {
+	int (*preenable)(struct iio_dev *);
+	int (*postenable)(struct iio_dev *);
+	int (*predisable)(struct iio_dev *);
+	int (*postdisable)(struct iio_dev *);
+	bool (*validate_scan_mask)(struct iio_dev *, const unsigned long *);
+};
+
+struct iio_buffer;
+
+struct iio_trigger;
+
+struct iio_poll_func;
+
+struct iio_chan_spec;
+
+struct iio_info;
+
+struct iio_dev {
+	int modes;
+	struct device dev;
+	struct iio_buffer *buffer;
+	int scan_bytes;
+	const unsigned long *available_scan_masks;
+	unsigned int masklength;
+	const unsigned long *active_scan_mask;
+	bool scan_timestamp;
+	struct iio_trigger *trig;
+	struct iio_poll_func *pollfunc;
+	struct iio_poll_func *pollfunc_event;
+	const struct iio_chan_spec *channels;
+	int num_channels;
+	const char *name;
+	const char *label;
+	const struct iio_info *info;
+	const struct iio_buffer_setup_ops *setup_ops;
+	void *priv;
+};
+
+enum iio_buffer_direction {
+	IIO_BUFFER_DIRECTION_IN = 0,
+	IIO_BUFFER_DIRECTION_OUT = 1,
+};
+
+struct iio_buffer_access_funcs;
+
+struct iio_dev_attr;
+
+struct iio_buffer {
+	unsigned int length;
+	unsigned long flags;
+	size_t bytes_per_datum;
+	enum iio_buffer_direction direction;
+	const struct iio_buffer_access_funcs *access;
+	long *scan_mask;
+	struct list_head demux_list;
+	wait_queue_head_t pollq;
+	unsigned int watermark;
+	bool scan_timestamp;
+	struct list_head buffer_attr_list;
+	struct attribute_group buffer_group;
+	const struct iio_dev_attr **attrs;
+	void *demux_bounce;
+	struct list_head attached_entry;
+	struct list_head buffer_list;
+	struct kref ref;
+};
+
+struct iio_buffer_access_funcs {
+	int (*store_to)(struct iio_buffer *, const void *);
+	int (*read)(struct iio_buffer *, size_t, char __attribute__((btf_type_tag("user"))) *);
+	size_t (*data_available)(struct iio_buffer *);
+	int (*remove_from)(struct iio_buffer *, void *);
+	int (*write)(struct iio_buffer *, size_t, const char __attribute__((btf_type_tag("user"))) *);
+	size_t (*space_available)(struct iio_buffer *);
+	int (*request_update)(struct iio_buffer *);
+	int (*set_bytes_per_datum)(struct iio_buffer *, size_t);
+	int (*set_length)(struct iio_buffer *, unsigned int);
+	int (*enable)(struct iio_buffer *, struct iio_dev *);
+	int (*disable)(struct iio_buffer *, struct iio_dev *);
+	void (*release)(struct iio_buffer *);
+	unsigned int modes;
+	unsigned int flags;
+};
+
+struct iio_dev_attr {
+	struct device_attribute dev_attr;
+	u64 address;
+	struct list_head l;
+	const struct iio_chan_spec *c;
+	struct iio_buffer *buffer;
+};
+
+enum iio_chan_type {
+	IIO_VOLTAGE = 0,
+	IIO_CURRENT = 1,
+	IIO_POWER = 2,
+	IIO_ACCEL = 3,
+	IIO_ANGL_VEL = 4,
+	IIO_MAGN = 5,
+	IIO_LIGHT = 6,
+	IIO_INTENSITY = 7,
+	IIO_PROXIMITY = 8,
+	IIO_TEMP = 9,
+	IIO_INCLI = 10,
+	IIO_ROT = 11,
+	IIO_ANGL = 12,
+	IIO_TIMESTAMP = 13,
+	IIO_CAPACITANCE = 14,
+	IIO_ALTVOLTAGE = 15,
+	IIO_CCT = 16,
+	IIO_PRESSURE = 17,
+	IIO_HUMIDITYRELATIVE = 18,
+	IIO_ACTIVITY = 19,
+	IIO_STEPS = 20,
+	IIO_ENERGY = 21,
+	IIO_DISTANCE = 22,
+	IIO_VELOCITY = 23,
+	IIO_CONCENTRATION = 24,
+	IIO_RESISTANCE = 25,
+	IIO_PH = 26,
+	IIO_UVINDEX = 27,
+	IIO_ELECTRICALCONDUCTIVITY = 28,
+	IIO_COUNT = 29,
+	IIO_INDEX = 30,
+	IIO_GRAVITY = 31,
+	IIO_POSITIONRELATIVE = 32,
+	IIO_PHASE = 33,
+	IIO_MASSCONCENTRATION = 34,
+};
+
+enum iio_endian {
+	IIO_CPU = 0,
+	IIO_BE = 1,
+	IIO_LE = 2,
+};
+
+struct iio_event_spec;
+
+struct iio_chan_spec_ext_info;
+
+struct iio_chan_spec {
+	enum iio_chan_type type;
+	int channel;
+	int channel2;
+	unsigned long address;
+	int scan_index;
+	struct {
+		char sign;
+		u8 realbits;
+		u8 storagebits;
+		u8 shift;
+		u8 repeat;
+		enum iio_endian endianness;
+	} scan_type;
+	long info_mask_separate;
+	long info_mask_separate_available;
+	long info_mask_shared_by_type;
+	long info_mask_shared_by_type_available;
+	long info_mask_shared_by_dir;
+	long info_mask_shared_by_dir_available;
+	long info_mask_shared_by_all;
+	long info_mask_shared_by_all_available;
+	const struct iio_event_spec *event_spec;
+	unsigned int num_event_specs;
+	const struct iio_chan_spec_ext_info *ext_info;
+	const char *extend_name;
+	const char *datasheet_name;
+	unsigned int modified: 1;
+	unsigned int indexed: 1;
+	unsigned int output: 1;
+	unsigned int differential: 1;
+};
+
+enum iio_event_type {
+	IIO_EV_TYPE_THRESH = 0,
+	IIO_EV_TYPE_MAG = 1,
+	IIO_EV_TYPE_ROC = 2,
+	IIO_EV_TYPE_THRESH_ADAPTIVE = 3,
+	IIO_EV_TYPE_MAG_ADAPTIVE = 4,
+	IIO_EV_TYPE_CHANGE = 5,
+	IIO_EV_TYPE_MAG_REFERENCED = 6,
+	IIO_EV_TYPE_GESTURE = 7,
+};
+
+enum iio_event_direction {
+	IIO_EV_DIR_EITHER = 0,
+	IIO_EV_DIR_RISING = 1,
+	IIO_EV_DIR_FALLING = 2,
+	IIO_EV_DIR_NONE = 3,
+	IIO_EV_DIR_SINGLETAP = 4,
+	IIO_EV_DIR_DOUBLETAP = 5,
+};
+
+struct iio_event_spec {
+	enum iio_event_type type;
+	enum iio_event_direction dir;
+	unsigned long mask_separate;
+	unsigned long mask_shared_by_type;
+	unsigned long mask_shared_by_dir;
+	unsigned long mask_shared_by_all;
+};
+
+enum iio_shared_by {
+	IIO_SEPARATE = 0,
+	IIO_SHARED_BY_TYPE = 1,
+	IIO_SHARED_BY_DIR = 2,
+	IIO_SHARED_BY_ALL = 3,
+};
+
+struct iio_chan_spec_ext_info {
+	const char *name;
+	enum iio_shared_by shared;
+	ssize_t (*read)(struct iio_dev *, uintptr_t, const struct iio_chan_spec *, char *);
+	ssize_t (*write)(struct iio_dev *, uintptr_t, const struct iio_chan_spec *, const char *, size_t);
+	uintptr_t private;
+};
+
+enum iio_event_info {
+	IIO_EV_INFO_ENABLE = 0,
+	IIO_EV_INFO_VALUE = 1,
+	IIO_EV_INFO_HYSTERESIS = 2,
+	IIO_EV_INFO_PERIOD = 3,
+	IIO_EV_INFO_HIGH_PASS_FILTER_3DB = 4,
+	IIO_EV_INFO_LOW_PASS_FILTER_3DB = 5,
+	IIO_EV_INFO_TIMEOUT = 6,
+	IIO_EV_INFO_RESET_TIMEOUT = 7,
+	IIO_EV_INFO_TAP2_MIN_DELAY = 8,
+	IIO_EV_INFO_RUNNING_PERIOD = 9,
+	IIO_EV_INFO_RUNNING_COUNT = 10,
+};
+
+struct iio_info {
+	const struct attribute_group *event_attrs;
+	const struct attribute_group *attrs;
+	int (*read_raw)(struct iio_dev *, const struct iio_chan_spec *, int *, int *, long);
+	int (*read_raw_multi)(struct iio_dev *, const struct iio_chan_spec *, int, int *, int *, long);
+	int (*read_avail)(struct iio_dev *, const struct iio_chan_spec *, const int **, int *, int *, long);
+	int (*write_raw)(struct iio_dev *, const struct iio_chan_spec *, int, int, long);
+	int (*read_label)(struct iio_dev *, const struct iio_chan_spec *, char *);
+	int (*write_raw_get_fmt)(struct iio_dev *, const struct iio_chan_spec *, long);
+	int (*read_event_config)(struct iio_dev *, const struct iio_chan_spec *, enum iio_event_type, enum iio_event_direction);
+	int (*write_event_config)(struct iio_dev *, const struct iio_chan_spec *, enum iio_event_type, enum iio_event_direction, int);
+	int (*read_event_value)(struct iio_dev *, const struct iio_chan_spec *, enum iio_event_type, enum iio_event_direction, enum iio_event_info, int *, int *);
+	int (*write_event_value)(struct iio_dev *, const struct iio_chan_spec *, enum iio_event_type, enum iio_event_direction, enum iio_event_info, int, int);
+	int (*validate_trigger)(struct iio_dev *, struct iio_trigger *);
+	int (*update_scan_mode)(struct iio_dev *, const unsigned long *);
+	int (*debugfs_reg_access)(struct iio_dev *, unsigned int, unsigned int, unsigned int *);
+	int (*fwnode_xlate)(struct iio_dev *, const struct fwnode_reference_args *);
+	int (*hwfifo_set_watermark)(struct iio_dev *, unsigned int);
+	int (*hwfifo_flush_to_buffer)(struct iio_dev *, unsigned int);
+};
+
+struct iio_mount_matrix {
+	const char *rotation[9];
+};
+
+enum iio_available_type {
+	IIO_AVAIL_LIST = 0,
+	IIO_AVAIL_RANGE = 1,
+};
+
+struct iio_event_interface;
+
+struct iio_ioctl_handler;
+
+struct iio_dev_opaque {
+	struct iio_dev indio_dev;
+	int currentmode;
+	int id;
+	struct module *driver_module;
+	struct mutex mlock;
+	struct lock_class_key mlock_key;
+	struct mutex info_exist_lock;
+	bool trig_readonly;
+	struct iio_event_interface *event_interface;
+	struct iio_buffer **attached_buffers;
+	unsigned int attached_buffers_cnt;
+	struct iio_ioctl_handler *buffer_ioctl_handler;
+	struct list_head buffer_list;
+	struct list_head channel_attr_list;
+	struct attribute_group chan_attr_group;
+	struct list_head ioctl_handlers;
+	const struct attribute_group **groups;
+	int groupcounter;
+	struct attribute_group legacy_scan_el_group;
+	struct attribute_group legacy_buffer_group;
+	void *bounce_buffer;
+	size_t bounce_buffer_size;
+	unsigned int scan_index_timestamp;
+	clockid_t clock_id;
+	struct cdev chrdev;
+	unsigned long flags;
+	struct dentry *debugfs_dentry;
+	unsigned int cached_reg_addr;
+	char read_buf[20];
+	unsigned int read_buf_len;
+};
+
+struct iio_ioctl_handler {
+	struct list_head entry;
+	long (*ioctl)(struct iio_dev *, struct file *, unsigned int, unsigned long);
+};
+
+struct iio_const_attr {
+	const char *string;
+	struct device_attribute dev_attr;
+};
+
+struct iio_enum {
+	const char * const *items;
+	unsigned int num_items;
+	int (*set)(struct iio_dev *, const struct iio_chan_spec *, unsigned int);
+	int (*get)(struct iio_dev *, const struct iio_chan_spec *);
+};
+
+typedef const struct iio_mount_matrix *iio_get_mount_matrix_t(const struct iio_dev *, const struct iio_chan_spec *);
+
+struct iio_event_data {
+	__u64 id;
+	__s64 timestamp;
+};
+
+struct iio_event_interface {
+	wait_queue_head_t wait;
+	struct {
+		union {
+			struct __kfifo kfifo;
+			struct iio_event_data *type;
+			const struct iio_event_data *const_type;
+			char (*rectype)[0];
+			struct iio_event_data *ptr;
+			const struct iio_event_data *ptr_const;
+		};
+		struct iio_event_data buf[16];
+	} det_events;
+	struct list_head dev_attr_list;
+	unsigned long flags;
+	struct attribute_group group;
+	struct mutex read_lock;
+	struct iio_ioctl_handler ioctl_handler;
+};
+
+struct iio_dev_buffer_pair {
+	struct iio_dev *indio_dev;
+	struct iio_buffer *buffer;
+};
+
+enum iio_chan_info_enum {
+	IIO_CHAN_INFO_RAW = 0,
+	IIO_CHAN_INFO_PROCESSED = 1,
+	IIO_CHAN_INFO_SCALE = 2,
+	IIO_CHAN_INFO_OFFSET = 3,
+	IIO_CHAN_INFO_CALIBSCALE = 4,
+	IIO_CHAN_INFO_CALIBBIAS = 5,
+	IIO_CHAN_INFO_PEAK = 6,
+	IIO_CHAN_INFO_PEAK_SCALE = 7,
+	IIO_CHAN_INFO_QUADRATURE_CORRECTION_RAW = 8,
+	IIO_CHAN_INFO_AVERAGE_RAW = 9,
+	IIO_CHAN_INFO_LOW_PASS_FILTER_3DB_FREQUENCY = 10,
+	IIO_CHAN_INFO_HIGH_PASS_FILTER_3DB_FREQUENCY = 11,
+	IIO_CHAN_INFO_SAMP_FREQ = 12,
+	IIO_CHAN_INFO_FREQUENCY = 13,
+	IIO_CHAN_INFO_PHASE = 14,
+	IIO_CHAN_INFO_HARDWAREGAIN = 15,
+	IIO_CHAN_INFO_HYSTERESIS = 16,
+	IIO_CHAN_INFO_HYSTERESIS_RELATIVE = 17,
+	IIO_CHAN_INFO_INT_TIME = 18,
+	IIO_CHAN_INFO_ENABLE = 19,
+	IIO_CHAN_INFO_CALIBHEIGHT = 20,
+	IIO_CHAN_INFO_CALIBWEIGHT = 21,
+	IIO_CHAN_INFO_DEBOUNCE_COUNT = 22,
+	IIO_CHAN_INFO_DEBOUNCE_TIME = 23,
+	IIO_CHAN_INFO_CALIBEMISSIVITY = 24,
+	IIO_CHAN_INFO_OVERSAMPLING_RATIO = 25,
+	IIO_CHAN_INFO_THERMOCOUPLE_TYPE = 26,
+	IIO_CHAN_INFO_CALIBAMBIENT = 27,
+	IIO_CHAN_INFO_ZEROPOINT = 28,
+};
+
+struct iio_map;
+
+struct iio_map_internal {
+	struct iio_dev *indio_dev;
+	struct iio_map *map;
+	struct list_head l;
+};
+
+struct iio_map {
+	const char *adc_channel_label;
+	const char *consumer_dev_name;
+	const char *consumer_channel;
+	void *consumer_data;
+};
+
+struct iio_channel {
+	struct iio_dev *indio_dev;
+	const struct iio_chan_spec *channel;
+	void *data;
+};
+
+struct iio_demux_table {
+	unsigned int from;
+	unsigned int to;
+	unsigned int length;
+	struct list_head l;
+};
+
+struct iio_device_config {
+	unsigned int mode;
+	unsigned int watermark;
+	const unsigned long *scan_mask;
+	unsigned int scan_bytes;
+	bool scan_timestamp;
+};
+
+struct iio_subirq {
+	bool enabled;
+};
+
+struct iio_trigger_ops;
+
+struct iio_trigger {
+	const struct iio_trigger_ops *ops;
+	struct module *owner;
+	int id;
+	const char *name;
+	struct device dev;
+	struct list_head list;
+	struct list_head alloc_list;
+	atomic_t use_count;
+	struct irq_chip subirq_chip;
+	int subirq_base;
+	struct iio_subirq subirqs[2];
+	unsigned long pool[1];
+	struct mutex pool_lock;
+	bool attached_own_device;
+	struct work_struct reenable_work;
+};
+
+struct iio_trigger_ops {
+	int (*set_trigger_state)(struct iio_trigger *, bool);
+	void (*reenable)(struct iio_trigger *);
+	int (*validate_device)(struct iio_trigger *, struct iio_dev *);
+};
+
+struct iio_poll_func {
+	struct iio_dev *indio_dev;
+	irqreturn_t (*h)(int, void *);
+	irqreturn_t (*thread)(int, void *);
+	int type;
+	char *name;
+	int irq;
+	s64 timestamp;
+};
+
+struct dtpm;
+
+struct dtpm_subsys_ops {
+	const char *name;
+	int (*init)();
+	void (*exit)();
+	int (*setup)(struct dtpm *, struct device_node *);
+};
+
+struct powercap_zone_ops;
+
+struct powercap_zone_constraint;
+
+struct powercap_zone {
+	int id;
+	char *name;
+	void *control_type_inst;
+	const struct powercap_zone_ops *ops;
+	struct device dev;
+	int const_id_cnt;
+	struct idr idr;
+	struct idr *parent_idr;
+	void *private_data;
+	struct attribute **zone_dev_attrs;
+	int zone_attr_count;
+	struct attribute_group dev_zone_attr_group;
+	const struct attribute_group *dev_attr_groups[2];
+	bool allocated;
+	struct powercap_zone_constraint *constraints;
+};
+
+struct dtpm_ops;
+
+struct dtpm {
+	struct powercap_zone zone;
+	struct dtpm *parent;
+	struct list_head sibling;
+	struct list_head children;
+	struct dtpm_ops *ops;
+	unsigned long flags;
+	u64 power_limit;
+	u64 power_max;
+	u64 power_min;
+	int weight;
+};
+
+struct powercap_zone_ops {
+	int (*get_max_energy_range_uj)(struct powercap_zone *, u64 *);
+	int (*get_energy_uj)(struct powercap_zone *, u64 *);
+	int (*reset_energy_uj)(struct powercap_zone *);
+	int (*get_max_power_range_uw)(struct powercap_zone *, u64 *);
+	int (*get_power_uw)(struct powercap_zone *, u64 *);
+	int (*set_enable)(struct powercap_zone *, bool);
+	int (*get_enable)(struct powercap_zone *, bool *);
+	int (*release)(struct powercap_zone *);
+};
+
+struct powercap_zone_constraint_ops;
+
+struct powercap_zone_constraint {
+	int id;
+	struct powercap_zone *power_zone;
+	const struct powercap_zone_constraint_ops *ops;
+};
+
+struct powercap_zone_constraint_ops {
+	int (*set_power_limit_uw)(struct powercap_zone *, int, u64);
+	int (*get_power_limit_uw)(struct powercap_zone *, int, u64 *);
+	int (*set_time_window_us)(struct powercap_zone *, int, u64);
+	int (*get_time_window_us)(struct powercap_zone *, int, u64 *);
+	int (*get_max_power_uw)(struct powercap_zone *, int, u64 *);
+	int (*get_min_power_uw)(struct powercap_zone *, int, u64 *);
+	int (*get_max_time_window_us)(struct powercap_zone *, int, u64 *);
+	int (*get_min_time_window_us)(struct powercap_zone *, int, u64 *);
+	const char * (*get_name)(struct powercap_zone *, int);
+};
+
+struct dtpm_ops {
+	u64 (*set_power_uw)(struct dtpm *, u64);
+	u64 (*get_power_uw)(struct dtpm *);
+	int (*update_power_uw)(struct dtpm *);
+	void (*release)(struct dtpm *);
+};
+
+struct powercap_control_type_ops;
+
+struct powercap_control_type {
+	struct device dev;
+	struct idr idr;
+	int nr_zones;
+	const struct powercap_control_type_ops *ops;
+	struct mutex lock;
+	bool allocated;
+	struct list_head node;
+};
+
+struct powercap_control_type_ops {
+	int (*set_enable)(struct powercap_control_type *, bool);
+	int (*get_enable)(struct powercap_control_type *, bool *);
+	int (*release)(struct powercap_control_type *);
+};
+
+struct dtpm_node;
+
+typedef struct dtpm * (*dtpm_node_callback_t)(const struct dtpm_node *, struct dtpm *);
+
+enum DTPM_NODE_TYPE {
+	DTPM_NODE_VIRTUAL = 0,
+	DTPM_NODE_DT = 1,
+};
+
+struct dtpm_node {
+	enum DTPM_NODE_TYPE type;
+	const char *name;
+	struct dtpm_node *parent;
+};
+
+struct powercap_constraint_attr {
+	struct device_attribute power_limit_attr;
+	struct device_attribute time_window_attr;
+	struct device_attribute max_power_attr;
+	struct device_attribute min_power_attr;
+	struct device_attribute max_time_window_attr;
+	struct device_attribute min_time_window_attr;
+	struct device_attribute name_attr;
+};
+
+struct idle_inject_thread {
+	struct task_struct *tsk;
+	int should_run;
+};
+
+struct idle_inject_device {
+	struct hrtimer timer;
+	unsigned int idle_duration_us;
+	unsigned int run_duration_us;
+	unsigned int latency_us;
+	bool (*update)();
+	unsigned long cpumask[0];
+};
+
+typedef void (*btf_trace_mc_event)(void *, const unsigned int, const char *, const char *, const int, const u8, const s8, const s8, const s8, unsigned long, const u8, unsigned long, const char *);
+
+struct cper_sec_proc_arm;
+
+typedef void (*btf_trace_arm_event)(void *, const struct cper_sec_proc_arm *);
+
+struct cper_sec_proc_arm {
+	u32 validation_bits;
+	u16 err_info_num;
+	u16 context_info_num;
+	u32 section_length;
+	u8 affinity_level;
+	u8 reserved[3];
+	u64 mpidr;
+	u64 midr;
+	u32 running_state;
+	u32 psci_state;
+};
+
+typedef void (*btf_trace_non_standard_event)(void *, const guid_t *, const guid_t *, const char *, const u8, const u8 *, const u32);
+
+typedef void (*btf_trace_aer_event)(void *, const char *, const u32, const u8, const u8, struct aer_header_log_regs *);
+
+struct trace_event_raw_mc_event {
+	struct trace_entry ent;
+	unsigned int error_type;
+	u32 __data_loc_msg;
+	u32 __data_loc_label;
+	u16 error_count;
+	u8 mc_index;
+	s8 top_layer;
+	s8 middle_layer;
+	s8 lower_layer;
+	long address;
+	u8 grain_bits;
+	long syndrome;
+	u32 __data_loc_driver_detail;
+	char __data[0];
+};
+
+struct trace_event_raw_arm_event {
+	struct trace_entry ent;
+	u64 mpidr;
+	u64 midr;
+	u32 running_state;
+	u32 psci_state;
+	u8 affinity;
+	char __data[0];
+};
+
+struct trace_event_raw_non_standard_event {
+	struct trace_entry ent;
+	char sec_type[16];
+	char fru_id[16];
+	u32 __data_loc_fru_text;
+	u8 sev;
+	u32 len;
+	u32 __data_loc_buf;
+	char __data[0];
+};
+
+struct trace_event_raw_aer_event {
+	struct trace_entry ent;
+	u32 __data_loc_dev_name;
+	u32 status;
+	u8 severity;
+	u8 tlp_header_valid;
+	u32 tlp_header[4];
+	char __data[0];
+};
+
+struct trace_event_data_offsets_non_standard_event {
+	u32 fru_text;
+	u32 buf;
+};
+
+struct trace_event_data_offsets_aer_event {
+	u32 dev_name;
+};
+
+struct trace_event_data_offsets_mc_event {
+	u32 msg;
+	u32 label;
+	u32 driver_detail;
+};
+
+struct trace_event_data_offsets_arm_event {};
+
+struct binder_features {
+	bool oneway_spam_detection;
+	bool extended_error;
+};
+
+enum binderfs_stats_mode {
+	binderfs_stats_mode_unset = 0,
+	binderfs_stats_mode_global = 1,
+};
+
+enum binderfs_param {
+	Opt_max___2 = 0,
+	Opt_stats_mode = 1,
+};
+
+enum binder_work_type {
+	BINDER_WORK_TRANSACTION = 1,
+	BINDER_WORK_TRANSACTION_COMPLETE = 2,
+	BINDER_WORK_TRANSACTION_PENDING = 3,
+	BINDER_WORK_TRANSACTION_ONEWAY_SPAM_SUSPECT = 4,
+	BINDER_WORK_RETURN_ERROR = 5,
+	BINDER_WORK_NODE = 6,
+	BINDER_WORK_DEAD_BINDER = 7,
+	BINDER_WORK_DEAD_BINDER_AND_CLEAR = 8,
+	BINDER_WORK_CLEAR_DEATH_NOTIFICATION = 9,
+};
+
+struct binderfs_device {
+	char name[256];
+	__u32 major;
+	__u32 minor;
+};
+
+struct binderfs_mount_opts {
+	int max;
+	int stats_mode;
+};
+
+struct binderfs_info {
+	struct ipc_namespace *ipc_ns;
+	struct dentry *control_dentry;
+	kuid_t root_uid;
+	kgid_t root_gid;
+	struct binderfs_mount_opts mount_opts;
+	int device_count;
+	struct dentry *proc_log_dir;
+};
+
+struct binder_node;
+
+struct binder_context {
+	struct binder_node *binder_context_mgr_node;
+	struct mutex context_mgr_node_lock;
+	kuid_t binder_context_mgr_uid;
+	const char *name;
+};
+
+struct binder_device {
+	struct hlist_node hlist;
+	struct miscdevice miscdev;
+	struct binder_context context;
+	struct inode *binderfs_inode;
+	refcount_t ref;
+};
+
+struct binder_work {
+	struct list_head entry;
+	enum binder_work_type type;
+	u64 android_oem_data1;
+};
+
+typedef __u64 binder_uintptr_t;
+
+struct binder_proc;
+
+struct binder_node {
+	int debug_id;
+	spinlock_t lock;
+	struct binder_work work;
+	union {
+		struct rb_node rb_node;
+		struct hlist_node dead_node;
+	};
+	struct binder_proc *proc;
+	struct hlist_head refs;
+	int internal_strong_refs;
+	int local_weak_refs;
+	int local_strong_refs;
+	int tmp_refs;
+	binder_uintptr_t ptr;
+	binder_uintptr_t cookie;
+	struct {
+		u8 has_strong_ref: 1;
+		u8 pending_strong_ref: 1;
+		u8 has_weak_ref: 1;
+		u8 pending_weak_ref: 1;
+	};
+	struct {
+		u8 sched_policy: 2;
+		u8 inherit_rt: 1;
+		u8 accept_fds: 1;
+		u8 txn_security_ctx: 1;
+		u8 min_priority;
+	};
+	bool has_async_transaction;
+	struct list_head async_todo;
+};
+
+struct binder_stats {
+	atomic_t br[21];
+	atomic_t bc[19];
+	atomic_t obj_created[7];
+	atomic_t obj_deleted[7];
+};
+
+struct binder_priority {
+	unsigned int sched_policy;
+	int prio;
+};
+
+struct binder_lru_page;
+
+struct binder_alloc {
+	spinlock_t lock;
+	struct vm_area_struct *vma;
+	struct mm_struct *mm;
+	unsigned long buffer;
+	struct list_head buffers;
+	struct rb_root free_buffers;
+	struct rb_root allocated_buffers;
+	size_t free_async_space;
+	struct binder_lru_page *pages;
+	size_t buffer_size;
+	int pid;
+	size_t pages_high;
+	bool oneway_spam_detected;
+	u64 android_oem_data1;
+};
+
+struct binder_proc {
+	struct hlist_node proc_node;
+	struct rb_root threads;
+	struct rb_root nodes;
+	struct rb_root refs_by_desc;
+	struct rb_root refs_by_node;
+	struct list_head waiting_threads;
+	int pid;
+	struct task_struct *tsk;
+	const struct cred *cred;
+	struct hlist_node deferred_work_node;
+	int deferred_work;
+	int outstanding_txns;
+	bool is_dead;
+	bool is_frozen;
+	bool sync_recv;
+	bool async_recv;
+	wait_queue_head_t freeze_wait;
+	struct list_head todo;
+	struct binder_stats stats;
+	struct list_head delivered_death;
+	u32 max_threads;
+	int requested_threads;
+	int requested_threads_started;
+	int tmp_ref;
+	struct binder_priority default_priority;
+	struct dentry *debugfs_entry;
+	struct binder_alloc alloc;
+	struct binder_context *context;
+	spinlock_t inner_lock;
+	spinlock_t outer_lock;
+	struct dentry *binderfs_entry;
+	bool oneway_spam_detection_enabled;
+	u64 android_oem_data1;
+};
+
+struct binder_lru_page {
+	struct list_head lru;
+	struct page *page_ptr;
+	struct binder_alloc *alloc;
+};
+
+struct binder_debugfs_entry {
+	const char *name;
+	umode_t mode;
+	const struct file_operations *fops;
+	void *data;
+};
+
+typedef void (*btf_trace_binder_ioctl)(void *, unsigned int, unsigned long);
+
+typedef void (*btf_trace_binder_lock)(void *, const char *);
+
+typedef void (*btf_trace_binder_locked)(void *, const char *);
+
+typedef void (*btf_trace_binder_unlock)(void *, const char *);
+
+typedef void (*btf_trace_binder_ioctl_done)(void *, int);
+
+typedef void (*btf_trace_binder_write_done)(void *, int);
+
+typedef void (*btf_trace_binder_read_done)(void *, int);
+
+typedef void (*btf_trace_binder_set_priority)(void *, int, int, unsigned int, unsigned int, unsigned int);
+
+typedef void (*btf_trace_binder_wait_for_work)(void *, bool, bool, bool);
+
+struct binder_transaction;
+
+typedef void (*btf_trace_binder_txn_latency_free)(void *, struct binder_transaction *, int, int, int, int);
+
+struct binder_thread;
+
+struct binder_buffer;
+
+struct binder_transaction {
+	int debug_id;
+	struct binder_work work;
+	struct binder_thread *from;
+	pid_t from_pid;
+	pid_t from_tid;
+	struct binder_transaction *from_parent;
+	struct binder_proc *to_proc;
+	struct binder_thread *to_thread;
+	struct binder_transaction *to_parent;
+	unsigned int need_reply: 1;
+	struct binder_buffer *buffer;
+	unsigned int code;
+	unsigned int flags;
+	struct binder_priority priority;
+	struct binder_priority saved_priority;
+	bool set_priority_called;
+	bool is_nested;
+	kuid_t sender_euid;
+	ktime_t start_time;
+	struct list_head fd_fixups;
+	binder_uintptr_t security_ctx;
+	spinlock_t lock;
+	u64 android_vendor_data1;
+	u64 android_oem_data1;
+};
+
+struct binder_error {
+	struct binder_work work;
+	uint32_t cmd;
+};
+
+struct binder_extended_error {
+	__u32 id;
+	__u32 command;
+	__s32 param;
+};
+
+enum binder_prio_state {
+	BINDER_PRIO_SET = 0,
+	BINDER_PRIO_PENDING = 1,
+	BINDER_PRIO_ABORT = 2,
+};
+
+struct binder_thread {
+	struct binder_proc *proc;
+	struct rb_node rb_node;
+	struct list_head waiting_thread_node;
+	int pid;
+	int looper;
+	bool looper_need_return;
+	struct binder_transaction *transaction_stack;
+	struct list_head todo;
+	bool process_todo;
+	struct binder_error return_error;
+	struct binder_error reply_error;
+	struct binder_extended_error ee;
+	wait_queue_head_t wait;
+	struct binder_stats stats;
+	atomic_t tmp_ref;
+	bool is_dead;
+	struct task_struct *task;
+	spinlock_t prio_lock;
+	struct binder_priority prio_next;
+	enum binder_prio_state prio_state;
+};
+
+struct binder_buffer {
+	struct list_head entry;
+	struct rb_node rb_node;
+	unsigned int free: 1;
+	unsigned int clear_on_free: 1;
+	unsigned int allow_user_free: 1;
+	unsigned int async_transaction: 1;
+	unsigned int oneway_spam_suspect: 1;
+	unsigned int debug_id: 27;
+	struct binder_transaction *transaction;
+	struct binder_node *target_node;
+	size_t data_size;
+	size_t offsets_size;
+	size_t extra_buffers_size;
+	unsigned long user_data;
+	int pid;
+};
+
+typedef void (*btf_trace_binder_transaction)(void *, bool, struct binder_transaction *, struct binder_node *);
+
+typedef void (*btf_trace_binder_transaction_received)(void *, struct binder_transaction *);
+
+struct binder_ref_data;
+
+typedef void (*btf_trace_binder_transaction_node_to_ref)(void *, struct binder_transaction *, struct binder_node *, struct binder_ref_data *);
+
+struct binder_ref_data {
+	int debug_id;
+	uint32_t desc;
+	int strong;
+	int weak;
+};
+
+typedef void (*btf_trace_binder_transaction_ref_to_node)(void *, struct binder_transaction *, struct binder_node *, struct binder_ref_data *);
+
+typedef void (*btf_trace_binder_transaction_ref_to_ref)(void *, struct binder_transaction *, struct binder_node *, struct binder_ref_data *, struct binder_ref_data *);
+
+typedef void (*btf_trace_binder_transaction_fd_send)(void *, struct binder_transaction *, int, size_t);
+
+typedef void (*btf_trace_binder_transaction_fd_recv)(void *, struct binder_transaction *, int, size_t);
+
+typedef void (*btf_trace_binder_transaction_alloc_buf)(void *, struct binder_buffer *);
+
+typedef void (*btf_trace_binder_transaction_buffer_release)(void *, struct binder_buffer *);
+
+typedef void (*btf_trace_binder_transaction_failed_buffer_release)(void *, struct binder_buffer *);
+
+typedef void (*btf_trace_binder_transaction_update_buffer_release)(void *, struct binder_buffer *);
+
+typedef void (*btf_trace_binder_update_page_range)(void *, struct binder_alloc *, bool, unsigned long, unsigned long);
+
+typedef void (*btf_trace_binder_alloc_lru_start)(void *, const struct binder_alloc *, size_t);
+
+typedef void (*btf_trace_binder_alloc_lru_end)(void *, const struct binder_alloc *, size_t);
+
+typedef void (*btf_trace_binder_free_lru_start)(void *, const struct binder_alloc *, size_t);
+
+typedef void (*btf_trace_binder_free_lru_end)(void *, const struct binder_alloc *, size_t);
+
+typedef void (*btf_trace_binder_alloc_page_start)(void *, const struct binder_alloc *, size_t);
+
+typedef void (*btf_trace_binder_alloc_page_end)(void *, const struct binder_alloc *, size_t);
+
+typedef void (*btf_trace_binder_unmap_user_start)(void *, const struct binder_alloc *, size_t);
+
+typedef void (*btf_trace_binder_unmap_user_end)(void *, const struct binder_alloc *, size_t);
+
+typedef void (*btf_trace_binder_unmap_kernel_start)(void *, const struct binder_alloc *, size_t);
+
+typedef void (*btf_trace_binder_unmap_kernel_end)(void *, const struct binder_alloc *, size_t);
+
+typedef void (*btf_trace_binder_command)(void *, uint32_t);
+
+typedef void (*btf_trace_binder_return)(void *, uint32_t);
+
+struct binder_transaction_log_entry {
+	int debug_id;
+	int debug_id_done;
+	int call_type;
+	int from_proc;
+	int from_thread;
+	int target_handle;
+	int to_proc;
+	int to_thread;
+	int to_node;
+	int data_size;
+	int offsets_size;
+	int return_error_line;
+	uint32_t return_error;
+	uint32_t return_error_param;
+	char context_name[256];
+};
+
+struct binder_transaction_log {
+	atomic_t cur;
+	bool full;
+	struct binder_transaction_log_entry entry[32];
+};
+
+enum {
+	BINDER_LOOPER_STATE_REGISTERED = 1,
+	BINDER_LOOPER_STATE_ENTERED = 2,
+	BINDER_LOOPER_STATE_EXITED = 4,
+	BINDER_LOOPER_STATE_INVALID = 8,
+	BINDER_LOOPER_STATE_WAITING = 16,
+	BINDER_LOOPER_STATE_POLL = 32,
+};
+
+enum binder_stat_types {
+	BINDER_STAT_PROC = 0,
+	BINDER_STAT_THREAD = 1,
+	BINDER_STAT_NODE = 2,
+	BINDER_STAT_REF = 3,
+	BINDER_STAT_DEATH = 4,
+	BINDER_STAT_TRANSACTION = 5,
+	BINDER_STAT_TRANSACTION_COMPLETE = 6,
+	BINDER_STAT_COUNT = 7,
+};
+
+enum binder_driver_return_protocol {
+	BR_ERROR = 2147774976,
+	BR_OK = 29185,
+	BR_TRANSACTION_SEC_CTX = 2152231426,
+	BR_TRANSACTION = 2151707138,
+	BR_REPLY = 2151707139,
+	BR_ACQUIRE_RESULT = 2147774980,
+	BR_DEAD_REPLY = 29189,
+	BR_TRANSACTION_COMPLETE = 29190,
+	BR_INCREFS = 2148561415,
+	BR_ACQUIRE = 2148561416,
+	BR_RELEASE = 2148561417,
+	BR_DECREFS = 2148561418,
+	BR_ATTEMPT_ACQUIRE = 2149085707,
+	BR_NOOP = 29196,
+	BR_SPAWN_LOOPER = 29197,
+	BR_FINISHED = 29198,
+	BR_DEAD_BINDER = 2148037135,
+	BR_CLEAR_DEATH_NOTIFICATION_DONE = 2148037136,
+	BR_FAILED_REPLY = 29201,
+	BR_FROZEN_REPLY = 29202,
+	BR_ONEWAY_SPAM_SUSPECT = 29203,
+	BR_TRANSACTION_PENDING_FROZEN = 29204,
+};
+
+enum {
+	BINDER_DEBUG_USER_ERROR = 1,
+	BINDER_DEBUG_FAILED_TRANSACTION = 2,
+	BINDER_DEBUG_DEAD_TRANSACTION = 4,
+	BINDER_DEBUG_OPEN_CLOSE = 8,
+	BINDER_DEBUG_DEAD_BINDER = 16,
+	BINDER_DEBUG_DEATH_NOTIFICATION = 32,
+	BINDER_DEBUG_READ_WRITE = 64,
+	BINDER_DEBUG_USER_REFS = 128,
+	BINDER_DEBUG_THREADS = 256,
+	BINDER_DEBUG_TRANSACTION = 512,
+	BINDER_DEBUG_TRANSACTION_COMPLETE = 1024,
+	BINDER_DEBUG_FREE_BUFFER = 2048,
+	BINDER_DEBUG_INTERNAL_REFS = 4096,
+	BINDER_DEBUG_PRIORITY_CAP = 8192,
+	BINDER_DEBUG_SPINLOCKS = 16384,
+};
+
+enum {
+	BINDER_WRITE_READ = 3224396289,
+	BINDER_SET_IDLE_TIMEOUT = 1074291203,
+	BINDER_SET_MAX_THREADS = 1074029061,
+	BINDER_SET_IDLE_PRIORITY = 1074029062,
+	BINDER_SET_CONTEXT_MGR = 1074029063,
+	BINDER_THREAD_EXIT = 1074029064,
+	BINDER_VERSION = 3221512713,
+	BINDER_GET_NODE_DEBUG_INFO = 3222823435,
+	BINDER_GET_NODE_INFO_FOR_REF = 3222823436,
+	BINDER_SET_CONTEXT_MGR_EXT = 1075339789,
+	BINDER_FREEZE = 1074553358,
+	BINDER_GET_FROZEN_INFO = 3222037007,
+	BINDER_ENABLE_ONEWAY_SPAM_DETECTION = 1074029072,
+	BINDER_GET_EXTENDED_ERROR = 3222037009,
+};
+
+enum binder_driver_command_protocol {
+	BC_TRANSACTION = 1077961472,
+	BC_REPLY = 1077961473,
+	BC_ACQUIRE_RESULT = 1074029314,
+	BC_FREE_BUFFER = 1074291459,
+	BC_INCREFS = 1074029316,
+	BC_ACQUIRE = 1074029317,
+	BC_RELEASE = 1074029318,
+	BC_DECREFS = 1074029319,
+	BC_INCREFS_DONE = 1074815752,
+	BC_ACQUIRE_DONE = 1074815753,
+	BC_ATTEMPT_ACQUIRE = 1074291466,
+	BC_REGISTER_LOOPER = 25355,
+	BC_ENTER_LOOPER = 25356,
+	BC_EXIT_LOOPER = 25357,
+	BC_REQUEST_DEATH_NOTIFICATION = 1074553614,
+	BC_CLEAR_DEATH_NOTIFICATION = 1074553615,
+	BC_DEAD_BINDER_DONE = 1074291472,
+	BC_TRANSACTION_SG = 1078485777,
+	BC_REPLY_SG = 1078485778,
+};
+
+enum {
+	BINDER_TYPE_BINDER = 1935813253,
+	BINDER_TYPE_WEAK_BINDER = 2002922117,
+	BINDER_TYPE_HANDLE = 1936206469,
+	BINDER_TYPE_WEAK_HANDLE = 2003315333,
+	BINDER_TYPE_FD = 1717840517,
+	BINDER_TYPE_FDA = 1717854597,
+	BINDER_TYPE_PTR = 1886661253,
+};
+
+enum transaction_flags {
+	TF_ONE_WAY = 1,
+	TF_ROOT_OBJECT = 4,
+	TF_STATUS_CODE = 8,
+	TF_ACCEPT_FDS = 16,
+	TF_CLEAR_BUF = 32,
+	TF_UPDATE_TXN = 64,
+};
+
+enum flat_binder_object_flags {
+	FLAT_BINDER_FLAG_PRIORITY_MASK = 255,
+	FLAT_BINDER_FLAG_ACCEPTS_FDS = 256,
+	FLAT_BINDER_FLAG_SCHED_POLICY_MASK = 1536,
+	FLAT_BINDER_FLAG_INHERIT_RT = 2048,
+	FLAT_BINDER_FLAG_TXN_SECURITY_CTX = 4096,
+};
+
+enum flat_binder_object_shifts {
+	FLAT_BINDER_FLAG_SCHED_POLICY_SHIFT = 9,
+};
+
+enum {
+	BINDER_BUFFER_FLAG_HAS_PARENT = 1,
+};
+
+enum binder_deferred_state {
+	BINDER_DEFERRED_FLUSH = 1,
+	BINDER_DEFERRED_RELEASE = 2,
+};
+
+struct binder_ref_death {
+	struct binder_work work;
+	binder_uintptr_t cookie;
+};
+
+struct binder_ref {
+	struct binder_ref_data data;
+	struct rb_node rb_node_desc;
+	struct rb_node rb_node_node;
+	struct hlist_node node_entry;
+	struct binder_proc *proc;
+	struct binder_node *node;
+	struct binder_ref_death *death;
+};
+
+struct dbitmap {
+	unsigned int nbits;
+	unsigned long *map;
+};
+
+struct binder_proc_wrap {
+	struct binder_proc proc;
+	struct dbitmap dmap;
+};
+
+struct binder_object_header {
+	__u32 type;
+};
+
+struct flat_binder_object {
+	struct binder_object_header hdr;
+	__u32 flags;
+	union {
+		binder_uintptr_t binder;
+		__u32 handle;
+	};
+	binder_uintptr_t cookie;
+};
+
+typedef __u64 binder_size_t;
+
+struct binder_fd_array_object {
+	struct binder_object_header hdr;
+	__u32 pad;
+	binder_size_t num_fds;
+	binder_size_t parent;
+	binder_size_t parent_offset;
+};
+
+struct binder_task_work_cb {
+	struct callback_head twork;
+	struct file *file;
+};
+
+struct binder_fd_object {
+	struct binder_object_header hdr;
+	__u32 pad_flags;
+	union {
+		binder_uintptr_t pad_binder;
+		__u32 fd;
+	};
+	binder_uintptr_t cookie;
+};
+
+struct binder_buffer_object {
+	struct binder_object_header hdr;
+	__u32 flags;
+	binder_uintptr_t buffer;
+	binder_size_t length;
+	binder_size_t parent;
+	binder_size_t parent_offset;
+};
+
+struct binder_ptr_fixup {
+	binder_size_t offset;
+	size_t skip_size;
+	binder_uintptr_t fixup_data;
+	struct list_head node;
+};
+
+struct binder_sg_copy {
+	binder_size_t offset;
+	const void __attribute__((btf_type_tag("user"))) *sender_uaddr;
+	size_t length;
+	struct list_head node;
+};
+
+struct binder_txn_fd_fixup {
+	struct list_head fixup_entry;
+	struct file *file;
+	size_t offset;
+	int target_fd;
+};
+
+struct trace_event_raw_binder_ioctl {
+	struct trace_entry ent;
+	unsigned int cmd;
+	unsigned long arg;
+	char __data[0];
+};
+
+struct trace_event_raw_binder_lock_class {
+	struct trace_entry ent;
+	const char *tag;
+	char __data[0];
+};
+
+struct trace_event_raw_binder_function_return_class {
+	struct trace_entry ent;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_binder_set_priority {
+	struct trace_entry ent;
+	int proc;
+	int thread;
+	unsigned int old_prio;
+	unsigned int new_prio;
+	unsigned int desired_prio;
+	char __data[0];
+};
+
+struct trace_event_raw_binder_wait_for_work {
+	struct trace_entry ent;
+	bool proc_work;
+	bool transaction_stack;
+	bool thread_todo;
+	char __data[0];
+};
+
+struct trace_event_raw_binder_txn_latency_free {
+	struct trace_entry ent;
+	int debug_id;
+	int from_proc;
+	int from_thread;
+	int to_proc;
+	int to_thread;
+	unsigned int code;
+	unsigned int flags;
+	char __data[0];
+};
+
+struct trace_event_raw_binder_transaction {
+	struct trace_entry ent;
+	int debug_id;
+	int target_node;
+	int to_proc;
+	int to_thread;
+	int reply;
+	unsigned int code;
+	unsigned int flags;
+	char __data[0];
+};
+
+struct trace_event_raw_binder_transaction_received {
+	struct trace_entry ent;
+	int debug_id;
+	char __data[0];
+};
+
+struct trace_event_raw_binder_transaction_node_to_ref {
+	struct trace_entry ent;
+	int debug_id;
+	int node_debug_id;
+	binder_uintptr_t node_ptr;
+	int ref_debug_id;
+	uint32_t ref_desc;
+	char __data[0];
+};
+
+struct trace_event_raw_binder_transaction_ref_to_node {
+	struct trace_entry ent;
+	int debug_id;
+	int ref_debug_id;
+	uint32_t ref_desc;
+	int node_debug_id;
+	binder_uintptr_t node_ptr;
+	char __data[0];
+};
+
+struct trace_event_raw_binder_transaction_ref_to_ref {
+	struct trace_entry ent;
+	int debug_id;
+	int node_debug_id;
+	int src_ref_debug_id;
+	uint32_t src_ref_desc;
+	int dest_ref_debug_id;
+	uint32_t dest_ref_desc;
+	char __data[0];
+};
+
+struct trace_event_raw_binder_transaction_fd_send {
+	struct trace_entry ent;
+	int debug_id;
+	int fd;
+	size_t offset;
+	char __data[0];
+};
+
+struct trace_event_raw_binder_transaction_fd_recv {
+	struct trace_entry ent;
+	int debug_id;
+	int fd;
+	size_t offset;
+	char __data[0];
+};
+
+struct trace_event_raw_binder_buffer_class {
+	struct trace_entry ent;
+	int debug_id;
+	size_t data_size;
+	size_t offsets_size;
+	size_t extra_buffers_size;
+	char __data[0];
+};
+
+struct trace_event_raw_binder_update_page_range {
+	struct trace_entry ent;
+	int proc;
+	bool allocate;
+	size_t offset;
+	size_t size;
+	char __data[0];
+};
+
+struct trace_event_raw_binder_lru_page_class {
+	struct trace_entry ent;
+	int proc;
+	size_t page_index;
+	char __data[0];
+};
+
+struct trace_event_raw_binder_command {
+	struct trace_entry ent;
+	uint32_t cmd;
+	char __data[0];
+};
+
+struct trace_event_raw_binder_return {
+	struct trace_entry ent;
+	uint32_t cmd;
+	char __data[0];
+};
+
+struct binder_freeze_info {
+	__u32 pid;
+	__u32 enable;
+	__u32 timeout_ms;
+};
+
+struct binder_transaction_data {
+	union {
+		__u32 handle;
+		binder_uintptr_t ptr;
+	} target;
+	binder_uintptr_t cookie;
+	__u32 code;
+	__u32 flags;
+	__kernel_pid_t sender_pid;
+	__kernel_uid32_t sender_euid;
+	binder_size_t data_size;
+	binder_size_t offsets_size;
+	union {
+		struct {
+			binder_uintptr_t buffer;
+			binder_uintptr_t offsets;
+		} ptr;
+		__u8 buf[8];
+	} data;
+};
+
+struct binder_transaction_data_sg {
+	struct binder_transaction_data transaction_data;
+	binder_size_t buffers_size;
+};
+
+struct binder_transaction_data_secctx {
+	struct binder_transaction_data transaction_data;
+	binder_uintptr_t secctx;
+};
+
+struct binder_object {
+	union {
+		struct binder_object_header hdr;
+		struct flat_binder_object fbo;
+		struct binder_fd_object fdo;
+		struct binder_buffer_object bbo;
+		struct binder_fd_array_object fdao;
+	};
+};
+
+struct binder_node_info_for_ref {
+	__u32 handle;
+	__u32 strong_count;
+	__u32 weak_count;
+	__u32 reserved1;
+	__u32 reserved2;
+	__u32 reserved3;
+};
+
+struct binder_node_debug_info {
+	binder_uintptr_t ptr;
+	binder_uintptr_t cookie;
+	__u32 has_strong_ref;
+	__u32 has_weak_ref;
+};
+
+struct binder_frozen_status_info {
+	__u32 pid;
+	__u32 sync_recv;
+	__u32 async_recv;
+};
+
+struct binder_version {
+	__s32 protocol_version;
+};
+
+struct trace_event_data_offsets_binder_ioctl {};
+
+struct trace_event_data_offsets_binder_lock_class {};
+
+struct trace_event_data_offsets_binder_function_return_class {};
+
+struct trace_event_data_offsets_binder_set_priority {};
+
+struct trace_event_data_offsets_binder_wait_for_work {};
+
+struct trace_event_data_offsets_binder_txn_latency_free {};
+
+struct trace_event_data_offsets_binder_transaction {};
+
+struct trace_event_data_offsets_binder_transaction_received {};
+
+struct trace_event_data_offsets_binder_transaction_node_to_ref {};
+
+struct trace_event_data_offsets_binder_transaction_ref_to_node {};
+
+struct trace_event_data_offsets_binder_transaction_ref_to_ref {};
+
+struct trace_event_data_offsets_binder_transaction_fd_send {};
+
+struct trace_event_data_offsets_binder_transaction_fd_recv {};
+
+struct trace_event_data_offsets_binder_buffer_class {};
+
+struct trace_event_data_offsets_binder_update_page_range {};
+
+struct trace_event_data_offsets_binder_lru_page_class {};
+
+struct trace_event_data_offsets_binder_command {};
+
+struct trace_event_data_offsets_binder_return {};
+
+struct binder_write_read {
+	binder_size_t write_size;
+	binder_size_t write_consumed;
+	binder_uintptr_t write_buffer;
+	binder_size_t read_size;
+	binder_size_t read_consumed;
+	binder_uintptr_t read_buffer;
+};
+
+enum {
+	BINDER_DEBUG_USER_ERROR___2 = 1,
+	BINDER_DEBUG_OPEN_CLOSE___2 = 2,
+	BINDER_DEBUG_BUFFER_ALLOC = 4,
+	BINDER_DEBUG_BUFFER_ALLOC_ASYNC = 8,
+};
+
+struct ads_entry {
+	char *name;
+	void *addr;
+};
+
+enum android_debug_symbol {
+	ADS_PER_CPU_START = 0,
+	ADS_PER_CPU_END = 1,
+	ADS_TEXT = 2,
+	ADS_SEND = 3,
+	ADS_MEM_BLOCK = 4,
+	ADS_INIT_MM = 5,
+	ADS_ITERATE_SUPERS = 6,
+	ADS_DROP_SLAB = 7,
+	ADS_FREE_PAGES = 8,
+	ADS_COMPACT_PAGES = 9,
+	ADS_SHOW_MEM = 10,
+	ADS_TOTAL_CMA = 11,
+	ADS_SLAB_CACHES = 12,
+	ADS_SLAB_MUTEX = 13,
+	ADS_END = 14,
+};
+
+enum android_debug_per_cpu_symbol {
+	ADS_IRQ_STACK_PTR = 0,
+	ADS_DEBUG_PER_CPU_END = 1,
+};
+
+struct packet_type {
+	__be16 type;
+	bool ignore_outgoing;
+	struct net_device *dev;
+	netdevice_tracker dev_tracker;
+	int (*func)(struct sk_buff *, struct net_device *, struct packet_type *, struct net_device *);
+	void (*list_func)(struct list_head *, struct packet_type *, struct net_device *);
+	bool (*id_match)(struct packet_type *, struct sock *);
+	struct net *af_packet_net;
+	void *af_packet_priv;
+	struct list_head list;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct gzvm_vcpu;
+
+struct kernel_info {
+	__u8 enabled_all;
+	__u8 enabled_base_relative;
+	__u8 enabled_absolute_percpu;
+	__u8 enabled_cfi_clang;
+	__u32 num_syms;
+	__u16 name_len;
+	__u16 bit_per_long;
+	__u16 module_name_len;
+	__u16 symbol_len;
+	__u64 _addresses_pa;
+	__u64 _relative_pa;
+	__u64 _stext_pa;
+	__u64 _etext_pa;
+	__u64 _sinittext_pa;
+	__u64 _einittext_pa;
+	__u64 _end_pa;
+	__u64 _offsets_pa;
+	__u64 _names_pa;
+	__u64 _token_table_pa;
+	__u64 _token_index_pa;
+	__u64 _markers_pa;
+	__u32 thread_size;
+	__u64 swapper_pg_dir_pa;
+	__u8 last_uts_release[64];
+	__u8 build_info[256];
+	__u32 enabled_modules_tree_lookup;
+	__u32 mod_mem_offset;
+	__u32 mod_kallsyms_offset;
+} __attribute__((packed));
+
+struct kernel_all_info {
+	__u32 magic_number;
+	__u32 combined_checksum;
+	struct kernel_info info;
+};
+
+struct reserved_mem_ops;
+
+struct reserved_mem {
+	const char *name;
+	unsigned long fdt_node;
+	unsigned long phandle;
+	const struct reserved_mem_ops *ops;
+	phys_addr_t base;
+	phys_addr_t size;
+	void *priv;
+};
+
+struct reserved_mem_ops {
+	int (*device_init)(struct reserved_mem *, struct device *);
+	void (*device_release)(struct reserved_mem *, struct device *);
+};
+
+enum {
+	NVMEM_ADD = 1,
+	NVMEM_REMOVE = 2,
+	NVMEM_CELL_ADD = 3,
+	NVMEM_CELL_REMOVE = 4,
+	NVMEM_LAYOUT_ADD = 5,
+	NVMEM_LAYOUT_REMOVE = 6,
+};
+
+struct nvmem_device {
+	struct module *owner;
+	struct device dev;
+	int stride;
+	int word_size;
+	int id;
+	struct kref refcnt;
+	size_t size;
+	bool read_only;
+	bool root_only;
+	int flags;
+	enum nvmem_type type;
+	struct bin_attribute eeprom;
+	struct device *base_dev;
+	struct list_head cells;
+	const struct nvmem_keepout *keepout;
+	unsigned int nkeepout;
+	nvmem_reg_read_t reg_read;
+	nvmem_reg_write_t reg_write;
+	struct gpio_desc *wp_gpio;
+	struct nvmem_layout *layout;
+	void *priv;
+};
+
+struct nvmem_cell_table {
+	const char *nvmem_name;
+	const struct nvmem_cell_info *cells;
+	size_t ncells;
+	struct list_head node;
+};
+
+struct nvmem_cell_entry {
+	const char *name;
+	int offset;
+	size_t raw_len;
+	int bytes;
+	int bit_offset;
+	int nbits;
+	nvmem_cell_post_process_t read_post_process;
+	void *priv;
+	struct device_node *np;
+	struct nvmem_device *nvmem;
+	struct list_head node;
+};
+
+struct nvmem_cell_lookup {
+	const char *nvmem_name;
+	const char *cell_name;
+	const char *dev_id;
+	const char *con_id;
+	struct list_head node;
+};
+
+struct nvmem_cell {
+	struct nvmem_cell_entry *entry;
+	const char *id;
+	int index;
+};
+
+enum gnss_type {
+	GNSS_TYPE_NMEA = 0,
+	GNSS_TYPE_SIRF = 1,
+	GNSS_TYPE_UBX = 2,
+	GNSS_TYPE_MTK = 3,
+	GNSS_TYPE_COUNT = 4,
+};
+
+struct gnss_operations;
+
+struct gnss_device {
+	struct device dev;
+	struct cdev cdev;
+	int id;
+	enum gnss_type type;
+	unsigned long flags;
+	struct rw_semaphore rwsem;
+	const struct gnss_operations *ops;
+	unsigned int count;
+	unsigned int disconnected: 1;
+	struct mutex read_mutex;
+	struct kfifo read_fifo;
+	wait_queue_head_t read_queue;
+	struct mutex write_mutex;
+	char *write_buf;
+};
+
+struct gnss_operations {
+	int (*open)(struct gnss_device *);
+	void (*close)(struct gnss_device *);
+	int (*write_raw)(struct gnss_device *, const unsigned char *, size_t);
+};
+
+struct icc_node;
+
+typedef void (*btf_trace_icc_set_bw)(void *, struct icc_path *, struct icc_node *, int, u32, u32);
+
+struct icc_req {
+	struct hlist_node req_node;
+	struct icc_node *node;
+	struct device *dev;
+	bool enabled;
+	u32 tag;
+	u32 avg_bw;
+	u32 peak_bw;
+};
+
+struct icc_path {
+	const char *name;
+	size_t num_nodes;
+	struct icc_req reqs[0];
+};
+
+struct icc_provider;
+
+struct icc_node {
+	int id;
+	const char *name;
+	struct icc_node **links;
+	size_t num_links;
+	struct icc_provider *provider;
+	struct list_head node_list;
+	struct list_head search_list;
+	struct icc_node *reverse;
+	u8 is_traversed: 1;
+	struct hlist_head req_list;
+	u32 avg_bw;
+	u32 peak_bw;
+	u32 init_avg;
+	u32 init_peak;
+	void *data;
+};
+
+struct icc_node_data;
+
+struct icc_provider {
+	struct list_head provider_list;
+	struct list_head nodes;
+	int (*set)(struct icc_node *, struct icc_node *);
+	int (*aggregate)(struct icc_node *, u32, u32, u32, u32 *, u32 *);
+	void (*pre_aggregate)(struct icc_node *);
+	int (*get_bw)(struct icc_node *, u32 *, u32 *);
+	struct icc_node * (*xlate)(struct of_phandle_args *, void *);
+	struct icc_node_data * (*xlate_extended)(struct of_phandle_args *, void *);
+	struct device *dev;
+	int users;
+	bool inter_set;
+	void *data;
+};
+
+struct icc_node_data {
+	struct icc_node *node;
+	u32 tag;
+};
+
+typedef void (*btf_trace_icc_set_bw_end)(void *, struct icc_path *, int);
+
+struct trace_event_raw_icc_set_bw {
+	struct trace_entry ent;
+	u32 __data_loc_path_name;
+	u32 __data_loc_dev;
+	u32 __data_loc_node_name;
+	u32 avg_bw;
+	u32 peak_bw;
+	u32 node_avg_bw;
+	u32 node_peak_bw;
+	char __data[0];
+};
+
+struct trace_event_raw_icc_set_bw_end {
+	struct trace_entry ent;
+	u32 __data_loc_path_name;
+	u32 __data_loc_dev;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_icc_set_bw {
+	u32 path_name;
+	u32 dev;
+	u32 node_name;
+};
+
+struct trace_event_data_offsets_icc_set_bw_end {
+	u32 path_name;
+	u32 dev;
+};
+
+struct icc_onecell_data {
+	unsigned int num_nodes;
+	struct icc_node *nodes[0];
+};
+
+struct icc_bulk_data {
+	struct icc_path *path;
+	const char *name;
+	u32 avg_bw;
+	u32 peak_bw;
+};
+
+struct icc_bulk_devres {
+	struct icc_bulk_data *paths;
+	int num_paths;
+};
+
+struct debugfs_path {
+	const char *src;
+	const char *dst;
+	struct icc_path *path;
+	struct list_head list;
+};
+
+struct snd_minor {
+	int type;
+	int card;
+	int device;
+	const struct file_operations *f_ops;
+	void *private_data;
+	struct device *dev;
+	struct snd_card *card_ptr;
+	u64 android_kabi_reserved1;
+};
+
+enum {
+	SNDRV_DEVICE_TYPE_CONTROL = 0,
+	SNDRV_DEVICE_TYPE_SEQUENCER = 1,
+	SNDRV_DEVICE_TYPE_TIMER = 2,
+	SNDRV_DEVICE_TYPE_HWDEP = 3,
+	SNDRV_DEVICE_TYPE_RAWMIDI = 4,
+	SNDRV_DEVICE_TYPE_PCM_PLAYBACK = 5,
+	SNDRV_DEVICE_TYPE_PCM_CAPTURE = 6,
+	SNDRV_DEVICE_TYPE_COMPRESS = 7,
+};
+
+struct snd_monitor_file {
+	struct file *file;
+	const struct file_operations *disconnected_f_op;
+	struct list_head shutdown_list;
+	struct list_head list;
+};
+
+struct snd_ctl_layer_ops {
+	struct snd_ctl_layer_ops *next;
+	const char *module_name;
+	void (*lregister)(struct snd_card *);
+	void (*ldisconnect)(struct snd_card *);
+	void (*lnotify)(struct snd_card *, unsigned int, struct snd_kcontrol *, unsigned int);
+};
+
+enum snd_ctl_add_mode {
+	CTL_ADD_EXCLUSIVE = 0,
+	CTL_REPLACE = 1,
+	CTL_ADD_ON_REPLACE = 2,
+};
+
+enum sndrv_ctl_event_type {
+	SNDRV_CTL_EVENT_ELEM = 0,
+	SNDRV_CTL_EVENT_LAST = 0,
+};
+
+enum {
+	SNDRV_CTL_TLV_OP_READ = 0,
+	SNDRV_CTL_TLV_OP_WRITE = 1,
+	SNDRV_CTL_TLV_OP_CMD = -1,
+};
+
+enum {
+	SNDRV_CTL_IOCTL_ELEM_LIST32 = 3225965840,
+	SNDRV_CTL_IOCTL_ELEM_INFO32 = 3239073041,
+	SNDRV_CTL_IOCTL_ELEM_READ32 = 3267646738,
+	SNDRV_CTL_IOCTL_ELEM_WRITE32 = 3267646739,
+	SNDRV_CTL_IOCTL_ELEM_ADD32 = 3239073047,
+	SNDRV_CTL_IOCTL_ELEM_REPLACE32 = 3239073048,
+};
+
+enum {
+	SND_CTL_SUBDEV_PCM = 0,
+	SND_CTL_SUBDEV_RAWMIDI = 1,
+	SND_CTL_SUBDEV_ITEMS = 2,
+};
+
+struct snd_kctl_event {
+	struct list_head list;
+	struct snd_ctl_elem_id id;
+	unsigned int mask;
+};
+
+typedef int (*snd_kctl_ioctl_func_t)(struct snd_card *, struct snd_ctl_file *, unsigned int, unsigned long);
+
+struct snd_kctl_ioctl {
+	struct list_head list;
+	snd_kctl_ioctl_func_t fioctl;
+};
+
+struct snd_ctl_elem_list {
+	unsigned int offset;
+	unsigned int space;
+	unsigned int used;
+	unsigned int count;
+	struct snd_ctl_elem_id __attribute__((btf_type_tag("user"))) *pids;
+	unsigned char reserved[50];
+};
+
+struct snd_ctl_card_info {
+	int card;
+	int pad;
+	unsigned char id[16];
+	unsigned char driver[16];
+	unsigned char name[32];
+	unsigned char longname[80];
+	unsigned char reserved_[16];
+	unsigned char mixername[80];
+	unsigned char components[128];
+};
+
+struct snd_ctl_elem_info32 {
+	struct snd_ctl_elem_id id;
+	s32 type;
+	u32 access;
+	u32 count;
+	s32 owner;
+	union {
+		struct {
+			s32 min;
+			s32 max;
+			s32 step;
+		} integer;
+		struct {
+			u64 min;
+			u64 max;
+			u64 step;
+		} integer64;
+		struct {
+			u32 items;
+			u32 item;
+			char name[64];
+			u64 names_ptr;
+			u32 names_length;
+		} enumerated;
+		unsigned char reserved[128];
+	} value;
+	unsigned char reserved[64];
+};
+
+struct snd_ctl_elem_value32 {
+	struct snd_ctl_elem_id id;
+	unsigned int indirect;
+	union {
+		s32 integer[128];
+		unsigned char data[512];
+	} value;
+	unsigned char reserved[128];
+};
+
+struct snd_ctl_elem_list32 {
+	u32 offset;
+	u32 space;
+	u32 used;
+	u32 count;
+	u32 pids;
+	unsigned char reserved[50];
+};
+
+struct user_element {
+	struct snd_ctl_elem_info info;
+	struct snd_card *card;
+	char *elem_data;
+	unsigned long elem_data_size;
+	void *tlv_data;
+	unsigned long tlv_data_size;
+	void *priv_data;
+};
+
+struct snd_ctl_event {
+	int type;
+	union {
+		struct {
+			unsigned int mask;
+			struct snd_ctl_elem_id id;
+		} elem;
+		unsigned char data8[60];
+	} data;
+};
+
+struct snd_ctl_tlv {
+	unsigned int numid;
+	unsigned int length;
+	unsigned int tlv[0];
+};
+
+struct snd_fasync {
+	struct fasync_struct *fasync;
+	int signal;
+	int poll;
+	int on;
+	struct list_head list;
+};
+
+struct snd_pci_quirk {
+	unsigned short subvendor;
+	unsigned short subdevice;
+	unsigned short subdevice_mask;
+	int value;
+};
+
+struct snd_info_private_data {
+	struct snd_info_buffer *rbuffer;
+	struct snd_info_buffer *wbuffer;
+	struct snd_info_entry *entry;
+	void *file_private_data;
+};
+
+struct snd_dma_data {
+	int dma;
+};
+
+struct link_ctl_info {
+	snd_ctl_elem_type_t type;
+	int count;
+	int min_val;
+	int max_val;
+};
+
+struct link_master;
+
+struct link_follower {
+	struct list_head list;
+	struct link_master *master;
+	struct link_ctl_info info;
+	int vals[2];
+	unsigned int flags;
+	struct snd_kcontrol *kctl;
+	struct snd_kcontrol follower;
+};
+
+struct link_master {
+	struct list_head followers;
+	struct link_ctl_info info;
+	int val;
+	unsigned int tlv[4];
+	void (*hook)(void *, int);
+	void *hook_private_data;
+};
+
+enum snd_jack_types {
+	SND_JACK_HEADPHONE = 1,
+	SND_JACK_MICROPHONE = 2,
+	SND_JACK_HEADSET = 3,
+	SND_JACK_LINEOUT = 4,
+	SND_JACK_MECHANICAL = 8,
+	SND_JACK_VIDEOOUT = 16,
+	SND_JACK_AVOUT = 20,
+	SND_JACK_LINEIN = 32,
+	SND_JACK_BTN_0 = 16384,
+	SND_JACK_BTN_1 = 8192,
+	SND_JACK_BTN_2 = 4096,
+	SND_JACK_BTN_3 = 2048,
+	SND_JACK_BTN_4 = 1024,
+	SND_JACK_BTN_5 = 512,
+};
+
+struct snd_jack;
+
+struct snd_jack_kctl {
+	struct snd_kcontrol *kctl;
+	struct list_head list;
+	unsigned int mask_bits;
+	struct snd_jack *jack;
+	bool sw_inject_enable;
+};
+
+struct snd_jack {
+	struct list_head kctl_list;
+	struct snd_card *card;
+	const char *id;
+	struct input_dev *input_dev;
+	struct mutex input_dev_lock;
+	int registered;
+	int type;
+	char name[100];
+	unsigned int key[6];
+	int hw_status_cache;
+	void *private_data;
+	void (*private_free)(struct snd_jack *);
+	u64 android_kabi_reserved1;
+};
+
+enum {
+	SNDRV_HWDEP_IOCTL_DSP_LOAD32 = 1079003139,
+};
+
+struct snd_hwdep;
+
+struct snd_hwdep_dsp_status;
+
+struct snd_hwdep_dsp_image;
+
+struct snd_hwdep_ops {
+	long long (*llseek)(struct snd_hwdep *, struct file *, long long, int);
+	long (*read)(struct snd_hwdep *, char __attribute__((btf_type_tag("user"))) *, long, loff_t *);
+	long (*write)(struct snd_hwdep *, const char __attribute__((btf_type_tag("user"))) *, long, loff_t *);
+	int (*open)(struct snd_hwdep *, struct file *);
+	int (*release)(struct snd_hwdep *, struct file *);
+	__poll_t (*poll)(struct snd_hwdep *, struct file *, poll_table *);
+	int (*ioctl)(struct snd_hwdep *, struct file *, unsigned int, unsigned long);
+	int (*ioctl_compat)(struct snd_hwdep *, struct file *, unsigned int, unsigned long);
+	int (*mmap)(struct snd_hwdep *, struct file *, struct vm_area_struct *);
+	int (*dsp_status)(struct snd_hwdep *, struct snd_hwdep_dsp_status *);
+	int (*dsp_load)(struct snd_hwdep *, struct snd_hwdep_dsp_image *);
+	u64 android_kabi_reserved1;
+};
+
+struct snd_hwdep {
+	struct snd_card *card;
+	struct list_head list;
+	int device;
+	char id[32];
+	char name[80];
+	int iface;
+	struct snd_hwdep_ops ops;
+	wait_queue_head_t open_wait;
+	void *private_data;
+	void (*private_free)(struct snd_hwdep *);
+	struct device *dev;
+	struct mutex open_mutex;
+	int used;
+	unsigned int dsp_loaded;
+	unsigned int exclusive: 1;
+	u64 android_kabi_reserved1;
+};
+
+struct snd_hwdep_dsp_status {
+	unsigned int version;
+	unsigned char id[32];
+	unsigned int num_dsps;
+	unsigned int dsp_loaded;
+	unsigned int chip_ready;
+	unsigned char reserved[16];
+};
+
+struct snd_hwdep_dsp_image {
+	unsigned int index;
+	unsigned char name[64];
+	unsigned char __attribute__((btf_type_tag("user"))) *image;
+	size_t length;
+	unsigned long driver_data;
+};
+
+struct snd_hwdep_info {
+	unsigned int device;
+	int card;
+	unsigned char id[64];
+	unsigned char name[80];
+	int iface;
+	unsigned char reserved[64];
+};
+
+struct snd_hwdep_dsp_image32 {
+	u32 index;
+	unsigned char name[64];
+	u32 image;
+	u32 length;
+	u32 driver_data;
+};
+
+struct snd_timer_hardware {
+	unsigned int flags;
+	unsigned long resolution;
+	unsigned long resolution_min;
+	unsigned long resolution_max;
+	unsigned long ticks;
+	int (*open)(struct snd_timer *);
+	int (*close)(struct snd_timer *);
+	unsigned long (*c_resolution)(struct snd_timer *);
+	int (*start)(struct snd_timer *);
+	int (*stop)(struct snd_timer *);
+	int (*set_period)(struct snd_timer *, unsigned long, unsigned long);
+	int (*precise_resolution)(struct snd_timer *, unsigned long *, unsigned long *);
+	u64 android_kabi_reserved1;
+};
+
+struct snd_timer {
+	int tmr_class;
+	struct snd_card *card;
+	struct module *module;
+	int tmr_device;
+	int tmr_subdevice;
+	char id[64];
+	char name[80];
+	unsigned int flags;
+	int running;
+	unsigned long sticks;
+	void *private_data;
+	void (*private_free)(struct snd_timer *);
+	struct snd_timer_hardware hw;
+	spinlock_t lock;
+	struct list_head device_list;
+	struct list_head open_list_head;
+	struct list_head active_list_head;
+	struct list_head ack_list_head;
+	struct list_head sack_list_head;
+	struct work_struct task_work;
+	int max_instances;
+	int num_instances;
+	u64 android_kabi_reserved1;
+};
+
+enum {
+	SNDRV_TIMER_CLASS_NONE = -1,
+	SNDRV_TIMER_CLASS_SLAVE = 0,
+	SNDRV_TIMER_CLASS_GLOBAL = 1,
+	SNDRV_TIMER_CLASS_CARD = 2,
+	SNDRV_TIMER_CLASS_PCM = 3,
+	SNDRV_TIMER_CLASS_LAST = 3,
+};
+
+enum {
+	SNDRV_TIMER_SCLASS_NONE = 0,
+	SNDRV_TIMER_SCLASS_APPLICATION = 1,
+	SNDRV_TIMER_SCLASS_SEQUENCER = 2,
+	SNDRV_TIMER_SCLASS_OSS_SEQUENCER = 3,
+	SNDRV_TIMER_SCLASS_LAST = 3,
+};
+
+enum {
+	SNDRV_TIMER_EVENT_RESOLUTION = 0,
+	SNDRV_TIMER_EVENT_TICK = 1,
+	SNDRV_TIMER_EVENT_START = 2,
+	SNDRV_TIMER_EVENT_STOP = 3,
+	SNDRV_TIMER_EVENT_CONTINUE = 4,
+	SNDRV_TIMER_EVENT_PAUSE = 5,
+	SNDRV_TIMER_EVENT_EARLY = 6,
+	SNDRV_TIMER_EVENT_SUSPEND = 7,
+	SNDRV_TIMER_EVENT_RESUME = 8,
+	SNDRV_TIMER_EVENT_MSTART = 12,
+	SNDRV_TIMER_EVENT_MSTOP = 13,
+	SNDRV_TIMER_EVENT_MCONTINUE = 14,
+	SNDRV_TIMER_EVENT_MPAUSE = 15,
+	SNDRV_TIMER_EVENT_MSUSPEND = 17,
+	SNDRV_TIMER_EVENT_MRESUME = 18,
+};
+
+enum timer_tread_format {
+	TREAD_FORMAT_NONE = 0,
+	TREAD_FORMAT_TIME64 = 1,
+	TREAD_FORMAT_TIME32 = 2,
+};
+
+enum {
+	SNDRV_TIMER_IOCTL_GPARAMS32 = 1077695492,
+	SNDRV_TIMER_IOCTL_INFO32 = 2162185233,
+	SNDRV_TIMER_IOCTL_STATUS_COMPAT32 = 1079530516,
+	SNDRV_TIMER_IOCTL_STATUS_COMPAT64 = 1080054804,
+};
+
+struct snd_timer_instance {
+	struct snd_timer *timer;
+	char *owner;
+	unsigned int flags;
+	void *private_data;
+	void (*private_free)(struct snd_timer_instance *);
+	void (*callback)(struct snd_timer_instance *, unsigned long, unsigned long);
+	void (*ccallback)(struct snd_timer_instance *, int, struct timespec64 *, unsigned long);
+	void (*disconnect)(struct snd_timer_instance *);
+	void *callback_data;
+	unsigned long ticks;
+	unsigned long cticks;
+	unsigned long pticks;
+	unsigned long resolution;
+	unsigned long lost;
+	int slave_class;
+	unsigned int slave_id;
+	struct list_head open_list;
+	struct list_head active_list;
+	struct list_head ack_list;
+	struct list_head slave_list_head;
+	struct list_head slave_active_head;
+	struct snd_timer_instance *master;
+	u64 android_kabi_reserved1;
+};
+
+struct snd_timer_system_private {
+	struct timer_list tlist;
+	struct snd_timer *snd_timer;
+	unsigned long last_expires;
+	unsigned long last_jiffies;
+	unsigned long correction;
+};
+
+struct snd_timer_id {
+	int dev_class;
+	int dev_sclass;
+	int card;
+	int device;
+	int subdevice;
+};
+
+struct snd_timer_gparams32 {
+	struct snd_timer_id tid;
+	u32 period_num;
+	u32 period_den;
+	unsigned char reserved[32];
+};
+
+struct snd_timer_gparams {
+	struct snd_timer_id tid;
+	unsigned long period_num;
+	unsigned long period_den;
+	unsigned char reserved[32];
+};
+
+struct snd_timer_info32 {
+	u32 flags;
+	s32 card;
+	unsigned char id[64];
+	unsigned char name[80];
+	u32 reserved0;
+	u32 resolution;
+	unsigned char reserved[64];
+};
+
+struct snd_timer_read;
+
+struct snd_timer_tread64;
+
+struct snd_timer_user {
+	struct snd_timer_instance *timeri;
+	int tread;
+	unsigned long ticks;
+	unsigned long overrun;
+	int qhead;
+	int qtail;
+	int qused;
+	int queue_size;
+	bool disconnected;
+	struct snd_timer_read *queue;
+	struct snd_timer_tread64 *tqueue;
+	spinlock_t qlock;
+	unsigned long last_resolution;
+	unsigned int filter;
+	struct timespec64 tstamp;
+	wait_queue_head_t qchange_sleep;
+	struct snd_fasync *fasync;
+	struct mutex ioctl_lock;
+};
+
+struct snd_timer_read {
+	unsigned int resolution;
+	unsigned int ticks;
+};
+
+struct snd_timer_tread64 {
+	int event;
+	u8 pad1[4];
+	s64 tstamp_sec;
+	s64 tstamp_nsec;
+	unsigned int val;
+	u8 pad2[4];
+};
+
+struct snd_timer_params {
+	unsigned int flags;
+	unsigned int ticks;
+	unsigned int queue_size;
+	unsigned int reserved0;
+	unsigned int filter;
+	unsigned char reserved[60];
+};
+
+struct snd_timer_ginfo {
+	struct snd_timer_id tid;
+	unsigned int flags;
+	int card;
+	unsigned char id[64];
+	unsigned char name[80];
+	unsigned long reserved0;
+	unsigned long resolution;
+	unsigned long resolution_min;
+	unsigned long resolution_max;
+	unsigned int clients;
+	unsigned char reserved[32];
+};
+
+struct snd_timer_info {
+	unsigned int flags;
+	int card;
+	unsigned char id[64];
+	unsigned char name[80];
+	unsigned long reserved0;
+	unsigned long resolution;
+	unsigned char reserved[64];
+};
+
+struct snd_timer_select {
+	struct snd_timer_id id;
+	unsigned char reserved[32];
+};
+
+struct snd_timer_gstatus {
+	struct snd_timer_id tid;
+	unsigned long resolution;
+	unsigned long resolution_num;
+	unsigned long resolution_den;
+	unsigned char reserved[32];
+};
+
+struct snd_timer_tread32 {
+	int event;
+	s32 tstamp_sec;
+	s32 tstamp_nsec;
+	unsigned int val;
+};
+
+struct snd_timer_status32 {
+	s32 tstamp_sec;
+	s32 tstamp_nsec;
+	unsigned int resolution;
+	unsigned int lost;
+	unsigned int overrun;
+	unsigned int queue;
+	unsigned char reserved[64];
+};
+
+struct snd_timer_status64 {
+	s64 tstamp_sec;
+	s64 tstamp_nsec;
+	unsigned int resolution;
+	unsigned int lost;
+	unsigned int overrun;
+	unsigned int queue;
+	unsigned char reserved[64];
+};
+
+struct snd_hrtimer {
+	struct snd_timer *timer;
+	struct hrtimer hrt;
+	bool in_callback;
+};
+
+enum {
+	SNDRV_PCM_CLASS_GENERIC = 0,
+	SNDRV_PCM_CLASS_MULTI = 1,
+	SNDRV_PCM_CLASS_MODEM = 2,
+	SNDRV_PCM_CLASS_DIGITIZER = 3,
+	SNDRV_PCM_CLASS_LAST = 3,
+};
+
+struct snd_pcm_info {
+	unsigned int device;
+	unsigned int subdevice;
+	int stream;
+	int card;
+	unsigned char id[64];
+	unsigned char name[80];
+	unsigned char subname[32];
+	int dev_class;
+	int dev_subclass;
+	unsigned int subdevices_count;
+	unsigned int subdevices_avail;
+	union snd_pcm_sync_id sync;
+	unsigned char reserved[64];
+};
+
+struct snd_pcm_hw_constraint_list {
+	const unsigned int *list;
+	unsigned int count;
+	unsigned int mask;
+};
+
+struct action_ops {
+	int (*pre_action)(struct snd_pcm_substream *, snd_pcm_state_t);
+	int (*do_action)(struct snd_pcm_substream *, snd_pcm_state_t);
+	void (*undo_action)(struct snd_pcm_substream *, snd_pcm_state_t);
+	void (*post_action)(struct snd_pcm_substream *, snd_pcm_state_t);
+};
+
+enum {
+	SNDRV_PCM_AUDIO_TSTAMP_TYPE_COMPAT = 0,
+	SNDRV_PCM_AUDIO_TSTAMP_TYPE_DEFAULT = 1,
+	SNDRV_PCM_AUDIO_TSTAMP_TYPE_LINK = 2,
+	SNDRV_PCM_AUDIO_TSTAMP_TYPE_LINK_ABSOLUTE = 3,
+	SNDRV_PCM_AUDIO_TSTAMP_TYPE_LINK_ESTIMATED = 4,
+	SNDRV_PCM_AUDIO_TSTAMP_TYPE_LINK_SYNCHRONIZED = 5,
+	SNDRV_PCM_AUDIO_TSTAMP_TYPE_LAST = 5,
+};
+
+enum {
+	SNDRV_PCM_TSTAMP_NONE = 0,
+	SNDRV_PCM_TSTAMP_ENABLE = 1,
+	SNDRV_PCM_TSTAMP_LAST = 1,
+};
+
+enum {
+	SNDRV_PCM_TSTAMP_TYPE_GETTIMEOFDAY = 0,
+	SNDRV_PCM_TSTAMP_TYPE_MONOTONIC = 1,
+	SNDRV_PCM_TSTAMP_TYPE_MONOTONIC_RAW = 2,
+	SNDRV_PCM_TSTAMP_TYPE_LAST = 2,
+};
+
+enum snd_dma_sync_mode {
+	SNDRV_DMA_SYNC_CPU = 0,
+	SNDRV_DMA_SYNC_DEVICE = 1,
+};
+
+enum {
+	SNDRV_PCM_IOCTL_HW_REFINE32 = 3260825872,
+	SNDRV_PCM_IOCTL_HW_PARAMS32 = 3260825873,
+	SNDRV_PCM_IOCTL_SW_PARAMS32 = 3228057875,
+	SNDRV_PCM_IOCTL_STATUS_COMPAT32 = 2154578208,
+	SNDRV_PCM_IOCTL_STATUS_EXT_COMPAT32 = 3228320036,
+	SNDRV_PCM_IOCTL_DELAY32 = 2147762465,
+	SNDRV_PCM_IOCTL_CHANNEL_INFO32 = 2148548914,
+	SNDRV_PCM_IOCTL_REWIND32 = 1074020678,
+	SNDRV_PCM_IOCTL_FORWARD32 = 1074020681,
+	SNDRV_PCM_IOCTL_WRITEI_FRAMES32 = 1074544976,
+	SNDRV_PCM_IOCTL_READI_FRAMES32 = 2148286801,
+	SNDRV_PCM_IOCTL_WRITEN_FRAMES32 = 1074544978,
+	SNDRV_PCM_IOCTL_READN_FRAMES32 = 2148286803,
+	SNDRV_PCM_IOCTL_STATUS_COMPAT64 = 2155888928,
+	SNDRV_PCM_IOCTL_STATUS_EXT_COMPAT64 = 3229630756,
+};
+
+enum {
+	SNDRV_PCM_MMAP_OFFSET_DATA = 0,
+	SNDRV_PCM_MMAP_OFFSET_STATUS_OLD = 2147483648,
+	SNDRV_PCM_MMAP_OFFSET_CONTROL_OLD = 2164260864,
+	SNDRV_PCM_MMAP_OFFSET_STATUS_NEW = 2181038080,
+	SNDRV_PCM_MMAP_OFFSET_CONTROL_NEW = 2197815296,
+	SNDRV_PCM_MMAP_OFFSET_STATUS = 2181038080,
+	SNDRV_PCM_MMAP_OFFSET_CONTROL = 2197815296,
+};
+
+typedef char __pad_before_u32[0];
+
+struct __snd_pcm_mmap_control64_buggy {
+	__pad_before_u32 __pad1;
+	__u32 appl_ptr;
+	__pad_before_u32 __pad2;
+	__pad_before_u32 __pad3;
+	__u32 avail_min;
+	__pad_after_uframe __pad4;
+};
+
+typedef u64 u_int64_t;
+
+struct snd_pcm_file {
+	struct snd_pcm_substream *substream;
+	int no_compat_mmap;
+	unsigned int user_pversion;
+};
+
+struct snd_pcm_status64 {
+	snd_pcm_state_t state;
+	u8 rsvd[4];
+	s64 trigger_tstamp_sec;
+	s64 trigger_tstamp_nsec;
+	s64 tstamp_sec;
+	s64 tstamp_nsec;
+	snd_pcm_uframes_t appl_ptr;
+	snd_pcm_uframes_t hw_ptr;
+	snd_pcm_sframes_t delay;
+	snd_pcm_uframes_t avail;
+	snd_pcm_uframes_t avail_max;
+	snd_pcm_uframes_t overrange;
+	snd_pcm_state_t suspended_state;
+	__u32 audio_tstamp_data;
+	s64 audio_tstamp_sec;
+	s64 audio_tstamp_nsec;
+	s64 driver_tstamp_sec;
+	s64 driver_tstamp_nsec;
+	__u32 audio_tstamp_accuracy;
+	unsigned char reserved[20];
+};
+
+struct snd_pcm_sw_params {
+	int tstamp_mode;
+	unsigned int period_step;
+	unsigned int sleep_min;
+	snd_pcm_uframes_t avail_min;
+	snd_pcm_uframes_t xfer_align;
+	snd_pcm_uframes_t start_threshold;
+	snd_pcm_uframes_t stop_threshold;
+	snd_pcm_uframes_t silence_threshold;
+	snd_pcm_uframes_t silence_size;
+	snd_pcm_uframes_t boundary;
+	unsigned int proto;
+	unsigned int tstamp_type;
+	unsigned char reserved[56];
+};
+
+struct snd_pcm_status32 {
+	snd_pcm_state_t state;
+	s32 trigger_tstamp_sec;
+	s32 trigger_tstamp_nsec;
+	s32 tstamp_sec;
+	s32 tstamp_nsec;
+	u32 appl_ptr;
+	u32 hw_ptr;
+	s32 delay;
+	u32 avail;
+	u32 avail_max;
+	u32 overrange;
+	snd_pcm_state_t suspended_state;
+	u32 audio_tstamp_data;
+	s32 audio_tstamp_sec;
+	s32 audio_tstamp_nsec;
+	s32 driver_tstamp_sec;
+	s32 driver_tstamp_nsec;
+	u32 audio_tstamp_accuracy;
+	unsigned char reserved[36];
+};
+
+struct snd_pcm_channel_info {
+	unsigned int channel;
+	__kernel_off_t offset;
+	unsigned int first;
+	unsigned int step;
+};
+
+struct snd_pcm_mmap_status32 {
+	snd_pcm_state_t state;
+	s32 pad1;
+	u32 hw_ptr;
+	s32 tstamp_sec;
+	s32 tstamp_nsec;
+	snd_pcm_state_t suspended_state;
+	s32 audio_tstamp_sec;
+	s32 audio_tstamp_nsec;
+};
+
+struct snd_pcm_mmap_control32 {
+	u32 appl_ptr;
+	u32 avail_min;
+};
+
+struct snd_pcm_sync_ptr32 {
+	u32 flags;
+	union {
+		struct snd_pcm_mmap_status32 status;
+		unsigned char reserved[64];
+	} s;
+	union {
+		struct snd_pcm_mmap_control32 control;
+		unsigned char reserved[64];
+	} c;
+};
+
+struct snd_pcm_sync_ptr {
+	__u32 flags;
+	__u32 pad1;
+	union {
+		struct snd_pcm_mmap_status status;
+		unsigned char reserved[64];
+	} s;
+	union {
+		struct snd_pcm_mmap_control control;
+		unsigned char reserved[64];
+	} c;
+};
+
+struct snd_xferi {
+	snd_pcm_sframes_t result;
+	void __attribute__((btf_type_tag("user"))) *buf;
+	snd_pcm_uframes_t frames;
+};
+
+struct snd_xfern {
+	snd_pcm_sframes_t result;
+	void __attribute__((btf_type_tag("user"))) * __attribute__((btf_type_tag("user"))) *bufs;
+	snd_pcm_uframes_t frames;
+};
+
+struct snd_pcm_hw_params32 {
+	u32 flags;
+	struct snd_mask masks[3];
+	struct snd_mask mres[5];
+	struct snd_interval intervals[12];
+	struct snd_interval ires[9];
+	u32 rmask;
+	u32 cmask;
+	u32 info;
+	u32 msbits;
+	u32 rate_num;
+	u32 rate_den;
+	u32 fifo_size;
+	unsigned char reserved[64];
+};
+
+struct snd_pcm_sw_params32 {
+	s32 tstamp_mode;
+	u32 period_step;
+	u32 sleep_min;
+	u32 avail_min;
+	u32 xfer_align;
+	u32 start_threshold;
+	u32 stop_threshold;
+	u32 silence_threshold;
+	u32 silence_size;
+	u32 boundary;
+	u32 proto;
+	u32 tstamp_type;
+	unsigned char reserved[56];
+};
+
+struct snd_pcm_channel_info32 {
+	u32 channel;
+	u32 offset;
+	u32 first;
+	u32 step;
+};
+
+struct snd_xferi32 {
+	s32 result;
+	u32 buf;
+	u32 frames;
+};
+
+struct snd_xfern32 {
+	s32 result;
+	u32 bufs;
+	u32 frames;
+};
+
+struct compat_snd_pcm_status64 {
+	snd_pcm_state_t state;
+	u8 rsvd[4];
+	s64 trigger_tstamp_sec;
+	s64 trigger_tstamp_nsec;
+	s64 tstamp_sec;
+	s64 tstamp_nsec;
+	u32 appl_ptr;
+	u32 hw_ptr;
+	s32 delay;
+	u32 avail;
+	u32 avail_max;
+	u32 overrange;
+	snd_pcm_state_t suspended_state;
+	u32 audio_tstamp_data;
+	s64 audio_tstamp_sec;
+	s64 audio_tstamp_nsec;
+	s64 driver_tstamp_sec;
+	s64 driver_tstamp_nsec;
+	u32 audio_tstamp_accuracy;
+	unsigned char reserved[20];
+};
+
+struct snd_pcm_chmap_elem {
+	unsigned char channels;
+	unsigned char map[15];
+};
+
+enum {
+	SNDRV_CHMAP_UNKNOWN = 0,
+	SNDRV_CHMAP_NA = 1,
+	SNDRV_CHMAP_MONO = 2,
+	SNDRV_CHMAP_FL = 3,
+	SNDRV_CHMAP_FR = 4,
+	SNDRV_CHMAP_RL = 5,
+	SNDRV_CHMAP_RR = 6,
+	SNDRV_CHMAP_FC = 7,
+	SNDRV_CHMAP_LFE = 8,
+	SNDRV_CHMAP_SL = 9,
+	SNDRV_CHMAP_SR = 10,
+	SNDRV_CHMAP_RC = 11,
+	SNDRV_CHMAP_FLC = 12,
+	SNDRV_CHMAP_FRC = 13,
+	SNDRV_CHMAP_RLC = 14,
+	SNDRV_CHMAP_RRC = 15,
+	SNDRV_CHMAP_FLW = 16,
+	SNDRV_CHMAP_FRW = 17,
+	SNDRV_CHMAP_FLH = 18,
+	SNDRV_CHMAP_FCH = 19,
+	SNDRV_CHMAP_FRH = 20,
+	SNDRV_CHMAP_TC = 21,
+	SNDRV_CHMAP_TFL = 22,
+	SNDRV_CHMAP_TFR = 23,
+	SNDRV_CHMAP_TFC = 24,
+	SNDRV_CHMAP_TRL = 25,
+	SNDRV_CHMAP_TRR = 26,
+	SNDRV_CHMAP_TRC = 27,
+	SNDRV_CHMAP_TFLC = 28,
+	SNDRV_CHMAP_TFRC = 29,
+	SNDRV_CHMAP_TSL = 30,
+	SNDRV_CHMAP_TSR = 31,
+	SNDRV_CHMAP_LLFE = 32,
+	SNDRV_CHMAP_RLFE = 33,
+	SNDRV_CHMAP_BC = 34,
+	SNDRV_CHMAP_BLC = 35,
+	SNDRV_CHMAP_BRC = 36,
+	SNDRV_CHMAP_LAST = 36,
+};
+
+typedef int (*pcm_transfer_f)(struct snd_pcm_substream *, int, unsigned long, struct iov_iter *, unsigned long);
+
+struct snd_ratden {
+	unsigned int num_min;
+	unsigned int num_max;
+	unsigned int num_step;
+	unsigned int den;
+};
+
+struct snd_pcm_chmap {
+	struct snd_pcm *pcm;
+	int stream;
+	struct snd_kcontrol *kctl;
+	const struct snd_pcm_chmap_elem *chmap;
+	unsigned int max_channels;
+	unsigned int channel_mask;
+	void *private_data;
+};
+
+struct snd_ratnum {
+	unsigned int num;
+	unsigned int den_min;
+	unsigned int den_max;
+	unsigned int den_step;
+};
+
+struct snd_pcm_hw_constraint_ranges {
+	unsigned int count;
+	const struct snd_interval *ranges;
+	unsigned int mask;
+};
+
+struct snd_pcm_hw_constraint_ratnums {
+	int nrats;
+	const struct snd_ratnum *rats;
+};
+
+struct snd_pcm_hw_constraint_ratdens {
+	int nrats;
+	const struct snd_ratden *rats;
+};
+
+typedef int (*pcm_copy_f)(struct snd_pcm_substream *, snd_pcm_uframes_t, void *, snd_pcm_uframes_t, snd_pcm_uframes_t, pcm_transfer_f, bool);
+
+struct pcm_format_data {
+	unsigned char width;
+	unsigned char phys;
+	signed char le;
+	signed char signd;
+	unsigned char silence[8];
+};
+
+struct snd_malloc_ops {
+	void * (*alloc)(struct snd_dma_buffer *, size_t);
+	void (*free)(struct snd_dma_buffer *);
+	dma_addr_t (*get_addr)(struct snd_dma_buffer *, size_t);
+	struct page * (*get_page)(struct snd_dma_buffer *, size_t);
+	unsigned int (*get_chunk_size)(struct snd_dma_buffer *, unsigned int, unsigned int);
+	int (*mmap)(struct snd_dma_buffer *, struct vm_area_struct *);
+	void (*sync)(struct snd_dma_buffer *, enum snd_dma_sync_mode);
+};
+
+struct snd_dma_sg_fallback {
+	bool use_dma_alloc_coherent;
+	size_t count;
+	struct page **pages;
+	dma_addr_t *addrs;
+};
+
+struct dmaengine_pcm_runtime_data {
+	struct dma_chan___2 *dma_chan;
+	dma_cookie_t cookie;
+	unsigned int pos;
+};
+
+struct snd_dmaengine_dai_dma_data {
+	dma_addr_t addr;
+	enum dma_slave_buswidth addr_width;
+	u32 maxburst;
+	void *filter_data;
+	const char *chan_name;
+	unsigned int fifo_size;
+	unsigned int flags;
+	void *peripheral_config;
+	size_t peripheral_size;
+};
+
+enum {
+	SNDRV_RAWMIDI_IOCTL_PARAMS32 = 3223344912,
+	SNDRV_RAWMIDI_IOCTL_STATUS_COMPAT32 = 3223607072,
+	SNDRV_RAWMIDI_IOCTL_STATUS_COMPAT64 = 3224393504,
+};
+
+struct snd_rawmidi_framing_tstamp {
+	__u8 frame_type;
+	__u8 length;
+	__u8 reserved[2];
+	__u32 tv_nsec;
+	__u64 tv_sec;
+	__u8 data[16];
+};
+
+struct snd_rawmidi_info {
+	unsigned int device;
+	unsigned int subdevice;
+	int stream;
+	int card;
+	unsigned int flags;
+	unsigned char id[64];
+	unsigned char name[80];
+	unsigned char subname[32];
+	unsigned int subdevices_count;
+	unsigned int subdevices_avail;
+	unsigned char reserved[64];
+};
+
+struct snd_rawmidi_file {
+	struct snd_rawmidi *rmidi;
+	struct snd_rawmidi_substream *input;
+	struct snd_rawmidi_substream *output;
+	unsigned int user_pversion;
+};
+
+struct snd_rawmidi_status64 {
+	int stream;
+	u8 rsvd[4];
+	s64 tstamp_sec;
+	s64 tstamp_nsec;
+	size_t avail;
+	size_t xruns;
+	unsigned char reserved[16];
+};
+
+struct snd_rawmidi_params32 {
+	s32 stream;
+	u32 buffer_size;
+	u32 avail_min;
+	unsigned int no_active_sensing;
+	unsigned int mode;
+	unsigned char reserved[12];
+};
+
+struct snd_rawmidi_params {
+	int stream;
+	size_t buffer_size;
+	size_t avail_min;
+	unsigned int no_active_sensing: 1;
+	unsigned int mode;
+	unsigned char reserved[12];
+};
+
+struct compat_snd_rawmidi_status64 {
+	s32 stream;
+	u8 rsvd[4];
+	s64 tstamp_sec;
+	s64 tstamp_nsec;
+	u32 avail;
+	u32 xruns;
+	unsigned char reserved[16];
+};
+
+struct snd_rawmidi_status32 {
+	s32 stream;
+	s32 tstamp_sec;
+	s32 tstamp_nsec;
+	u32 avail;
+	u32 xruns;
+	unsigned char reserved[16];
+};
+
+enum snd_compr_direction {
+	SND_COMPRESS_PLAYBACK = 0,
+	SND_COMPRESS_CAPTURE = 1,
+};
+
+struct snd_compr_tstamp {
+	__u32 byte_offset;
+	__u32 copied_total;
+	__u32 pcm_frames;
+	__u32 pcm_io_frames;
+	__u32 sampling_rate;
+};
+
+struct snd_compr_ops;
+
+struct snd_compr_runtime;
+
+struct snd_compr;
+
+struct snd_compr_stream {
+	const char *name;
+	struct snd_compr_ops *ops;
+	struct snd_compr_runtime *runtime;
+	struct snd_compr *device;
+	struct delayed_work error_work;
+	enum snd_compr_direction direction;
+	bool metadata_set;
+	bool next_track;
+	bool partial_drain;
+	bool pause_in_draining;
+	void *private_data;
+	struct snd_dma_buffer dma_buffer;
+	u64 android_kabi_reserved1;
+};
+
+struct snd_compr_params;
+
+struct snd_codec;
+
+struct snd_compr_metadata;
+
+struct snd_compr_caps;
+
+struct snd_compr_codec_caps;
+
+struct snd_compr_ops {
+	int (*open)(struct snd_compr_stream *);
+	int (*free)(struct snd_compr_stream *);
+	int (*set_params)(struct snd_compr_stream *, struct snd_compr_params *);
+	int (*get_params)(struct snd_compr_stream *, struct snd_codec *);
+	int (*set_metadata)(struct snd_compr_stream *, struct snd_compr_metadata *);
+	int (*get_metadata)(struct snd_compr_stream *, struct snd_compr_metadata *);
+	int (*trigger)(struct snd_compr_stream *, int);
+	int (*pointer)(struct snd_compr_stream *, struct snd_compr_tstamp *);
+	int (*copy)(struct snd_compr_stream *, char __attribute__((btf_type_tag("user"))) *, size_t);
+	int (*mmap)(struct snd_compr_stream *, struct vm_area_struct *);
+	int (*ack)(struct snd_compr_stream *, size_t);
+	int (*get_caps)(struct snd_compr_stream *, struct snd_compr_caps *);
+	int (*get_codec_caps)(struct snd_compr_stream *, struct snd_compr_codec_caps *);
+	u64 android_kabi_reserved1;
+};
+
+struct snd_compressed_buffer {
+	__u32 fragment_size;
+	__u32 fragments;
+};
+
+struct snd_enc_wma {
+	__u32 super_block_align;
+};
+
+struct snd_enc_vorbis {
+	__s32 quality;
+	__u32 managed;
+	__u32 max_bit_rate;
+	__u32 min_bit_rate;
+	__u32 downmix;
+};
+
+struct snd_enc_real {
+	__u32 quant_bits;
+	__u32 start_region;
+	__u32 num_regions;
+};
+
+struct snd_enc_flac {
+	__u32 num;
+	__u32 gain;
+};
+
+struct snd_enc_generic {
+	__u32 bw;
+	__s32 reserved[15];
+};
+
+struct snd_dec_flac {
+	__u16 sample_size;
+	__u16 min_blk_size;
+	__u16 max_blk_size;
+	__u16 min_frame_size;
+	__u16 max_frame_size;
+	__u16 reserved;
+};
+
+struct snd_dec_wma {
+	__u32 encoder_option;
+	__u32 adv_encoder_option;
+	__u32 adv_encoder_option2;
+	__u32 reserved;
+};
+
+struct snd_dec_alac {
+	__u32 frame_length;
+	__u8 compatible_version;
+	__u8 pb;
+	__u8 mb;
+	__u8 kb;
+	__u32 max_run;
+	__u32 max_frame_bytes;
+};
+
+struct snd_dec_ape {
+	__u16 compatible_version;
+	__u16 compression_level;
+	__u32 format_flags;
+	__u32 blocks_per_frame;
+	__u32 final_frame_blocks;
+	__u32 total_frames;
+	__u32 seek_table_present;
+};
+
+union snd_codec_options {
+	struct snd_enc_wma wma;
+	struct snd_enc_vorbis vorbis;
+	struct snd_enc_real real;
+	struct snd_enc_flac flac;
+	struct snd_enc_generic generic;
+	struct snd_dec_flac flac_d;
+	struct snd_dec_wma wma_d;
+	struct snd_dec_alac alac_d;
+	struct snd_dec_ape ape_d;
+};
+
+struct snd_codec {
+	__u32 id;
+	__u32 ch_in;
+	__u32 ch_out;
+	__u32 sample_rate;
+	__u32 bit_rate;
+	__u32 rate_control;
+	__u32 profile;
+	__u32 level;
+	__u32 ch_mode;
+	__u32 format;
+	__u32 align;
+	union snd_codec_options options;
+	__u32 reserved[3];
+};
+
+struct snd_compr_params {
+	struct snd_compressed_buffer buffer;
+	struct snd_codec codec;
+	__u8 no_wake_mode;
+};
+
+struct snd_compr_metadata {
+	__u32 key;
+	__u32 value[8];
+};
+
+struct snd_compr_caps {
+	__u32 num_codecs;
+	__u32 direction;
+	__u32 min_fragment_size;
+	__u32 max_fragment_size;
+	__u32 min_fragments;
+	__u32 max_fragments;
+	__u32 codecs[32];
+	__u32 reserved[11];
+};
+
+struct snd_codec_desc {
+	__u32 max_ch;
+	__u32 sample_rates[32];
+	__u32 num_sample_rates;
+	__u32 bit_rate[32];
+	__u32 num_bitrates;
+	__u32 rate_control;
+	__u32 profiles;
+	__u32 modes;
+	__u32 formats;
+	__u32 min_buffer;
+	__u32 reserved[15];
+};
+
+struct snd_compr_codec_caps {
+	__u32 codec;
+	__u32 num_descriptors;
+	struct snd_codec_desc descriptor[32];
+};
+
+struct snd_compr_runtime {
+	snd_pcm_state_t state;
+	struct snd_compr_ops *ops;
+	void *buffer;
+	u64 buffer_size;
+	u32 fragment_size;
+	u32 fragments;
+	u64 total_bytes_available;
+	u64 total_bytes_transferred;
+	wait_queue_head_t sleep;
+	void *private_data;
+	unsigned char *dma_area;
+	dma_addr_t dma_addr;
+	size_t dma_bytes;
+	struct snd_dma_buffer *dma_buffer_p;
+	u64 android_kabi_reserved1;
+};
+
+struct snd_compr {
+	const char *name;
+	struct device *dev;
+	struct snd_compr_ops *ops;
+	void *private_data;
+	struct snd_card *card;
+	unsigned int direction;
+	struct mutex lock;
+	int device;
+	bool use_pause_in_draining;
+	u64 android_kabi_reserved1;
+};
+
+struct snd_compr_avail {
+	__u64 avail;
+	struct snd_compr_tstamp tstamp;
+} __attribute__((packed));
+
+struct snd_compr_file {
+	unsigned long caps;
+	struct snd_compr_stream stream;
+};
+
+struct snd_usb_audio;
+
+struct snd_usb_platform_ops {
+	void (*connect_cb)(struct snd_usb_audio *);
+	void (*disconnect_cb)(struct snd_usb_audio *);
+	void (*suspend_cb)(struct usb_interface *, pm_message_t);
+	void (*resume_cb)(struct usb_interface *);
+};
+
+struct snd_usb_audio {
+	int index;
+	struct usb_device *dev;
+	struct snd_card *card;
+	struct usb_interface *intf[16];
+	u32 usb_id;
+	uint16_t quirk_type;
+	struct mutex mutex;
+	unsigned int system_suspend;
+	atomic_t active;
+	atomic_t shutdown;
+	atomic_t usage_count;
+	wait_queue_head_t shutdown_wait;
+	unsigned int quirk_flags;
+	unsigned int need_delayed_register: 1;
+	int num_interfaces;
+	int last_iface;
+	int num_suspended_intf;
+	int sample_rate_read_error;
+	int badd_profile;
+	struct list_head pcm_list;
+	struct list_head ep_list;
+	struct list_head iface_ref_list;
+	struct list_head clock_ref_list;
+	int pcm_devs;
+	unsigned int num_rawmidis;
+	struct list_head midi_list;
+	struct list_head midi_v2_list;
+	struct list_head mixer_list;
+	int setup;
+	bool generic_implicit_fb;
+	bool autoclock;
+	bool lowlatency;
+	struct usb_host_interface *ctrl_intf;
+	struct media_device *media_dev;
+	struct media_intf_devnode *ctl_intf_media_devnode;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct usb_audio_device_name {
+	u32 id;
+	const char *vendor_name;
+	const char *product_name;
+	const char *profile_name;
+};
+
+struct snd_usb_audio_quirk {
+	const char *vendor_name;
+	const char *product_name;
+	int16_t ifnum;
+	uint16_t type;
+	const void *data;
+};
+
+struct snd_usb_stream;
+
+struct audioformat;
+
+struct snd_usb_power_domain;
+
+struct snd_usb_endpoint;
+
+struct media_ctl;
+
+struct snd_usb_substream {
+	struct snd_usb_stream *stream;
+	struct usb_device *dev;
+	struct snd_pcm_substream *pcm_substream;
+	int direction;
+	int endpoint;
+	const struct audioformat *cur_audiofmt;
+	struct snd_usb_power_domain *str_pd;
+	unsigned int channels_max;
+	unsigned int txfr_quirk: 1;
+	unsigned int tx_length_quirk: 1;
+	unsigned int fmt_type;
+	unsigned int pkt_offset_adj;
+	unsigned int stream_offset_adj;
+	unsigned int running: 1;
+	unsigned int period_elapsed_pending;
+	unsigned int buffer_bytes;
+	unsigned int inflight_bytes;
+	unsigned int hwptr_done;
+	unsigned int transfer_done;
+	unsigned int frame_limit;
+	unsigned int ep_num;
+	struct snd_usb_endpoint *data_endpoint;
+	struct snd_usb_endpoint *sync_endpoint;
+	unsigned long flags;
+	unsigned int speed;
+	u64 formats;
+	unsigned int num_formats;
+	struct list_head fmt_list;
+	spinlock_t lock;
+	unsigned int last_frame_number;
+	struct {
+		int marker;
+		int channel;
+		int byte_idx;
+	} dsd_dop;
+	bool trigger_tstamp_pending_update;
+	bool lowlatency_playback;
+	struct media_ctl *media_ctl;
+	u64 android_kabi_reserved1;
+};
+
+struct snd_usb_stream {
+	struct snd_usb_audio *chip;
+	struct snd_pcm *pcm;
+	int pcm_index;
+	unsigned int fmt_type;
+	struct snd_usb_substream substream[2];
+	struct list_head list;
+};
+
+struct audioformat {
+	struct list_head list;
+	u64 formats;
+	unsigned int channels;
+	unsigned int fmt_type;
+	unsigned int fmt_bits;
+	unsigned int frame_size;
+	unsigned char iface;
+	unsigned char altsetting;
+	unsigned char ep_idx;
+	unsigned char altset_idx;
+	unsigned char attributes;
+	unsigned char endpoint;
+	unsigned char ep_attr;
+	bool implicit_fb;
+	unsigned char sync_ep;
+	unsigned char sync_iface;
+	unsigned char sync_altsetting;
+	unsigned char sync_ep_idx;
+	unsigned char datainterval;
+	unsigned char protocol;
+	unsigned int maxpacksize;
+	unsigned int rates;
+	unsigned int rate_min;
+	unsigned int rate_max;
+	unsigned int nr_rates;
+	unsigned int *rate_table;
+	unsigned char clock;
+	struct snd_pcm_chmap_elem *chmap;
+	bool dsd_dop;
+	bool dsd_bitrev;
+	bool dsd_raw;
+};
+
+struct snd_usb_power_domain {
+	int pd_id;
+	int pd_d1d0_rec;
+	int pd_d2d0_rec;
+};
+
+struct snd_urb_ctx {
+	struct urb *urb;
+	unsigned int buffer_size;
+	struct snd_usb_substream *subs;
+	struct snd_usb_endpoint *ep;
+	int index;
+	int packets;
+	int queued;
+	int packet_size[48];
+	struct list_head ready_list;
+};
+
+struct snd_usb_packet_info {
+	uint32_t packet_size[48];
+	int packets;
+};
+
+struct snd_usb_iface_ref;
+
+struct snd_usb_clock_ref;
+
+struct snd_usb_endpoint {
+	struct snd_usb_audio *chip;
+	struct snd_usb_iface_ref *iface_ref;
+	struct snd_usb_clock_ref *clock_ref;
+	int opened;
+	atomic_t running;
+	int ep_num;
+	int type;
+	unsigned char iface;
+	unsigned char altsetting;
+	unsigned char ep_idx;
+	atomic_t state;
+	int (*prepare_data_urb)(struct snd_usb_substream *, struct urb *, bool);
+	void (*retire_data_urb)(struct snd_usb_substream *, struct urb *);
+	struct snd_usb_substream *data_subs;
+	struct snd_usb_endpoint *sync_source;
+	struct snd_usb_endpoint *sync_sink;
+	struct snd_urb_ctx urb[12];
+	struct snd_usb_packet_info next_packet[12];
+	unsigned int next_packet_head;
+	unsigned int next_packet_queued;
+	struct list_head ready_playback_urbs;
+	unsigned int nurbs;
+	unsigned long active_mask;
+	unsigned long unlink_mask;
+	atomic_t submitted_urbs;
+	char *syncbuf;
+	dma_addr_t sync_dma;
+	unsigned int pipe;
+	unsigned int packsize[2];
+	unsigned int sample_rem;
+	unsigned int sample_accum;
+	unsigned int pps;
+	unsigned int freqn;
+	unsigned int freqm;
+	int freqshift;
+	unsigned int freqmax;
+	unsigned int phase;
+	unsigned int maxpacksize;
+	unsigned int maxframesize;
+	unsigned int max_urb_frames;
+	unsigned int curpacksize;
+	unsigned int curframesize;
+	unsigned int syncmaxsize;
+	unsigned int fill_max: 1;
+	unsigned int tenor_fb_quirk: 1;
+	unsigned int datainterval;
+	unsigned int syncinterval;
+	unsigned char silence_value;
+	unsigned int stride;
+	int skip_packets;
+	bool implicit_fb_sync;
+	bool lowlatency_playback;
+	bool need_setup;
+	bool need_prepare;
+	bool fixed_rate;
+	const struct audioformat *cur_audiofmt;
+	unsigned int cur_rate;
+	snd_pcm_format_t cur_format;
+	unsigned int cur_channels;
+	unsigned int cur_frame_bytes;
+	unsigned int cur_period_frames;
+	unsigned int cur_period_bytes;
+	unsigned int cur_buffer_periods;
+	spinlock_t lock;
+	struct list_head list;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct media_ctl {
+	struct media_device *media_dev;
+	struct media_entity media_entity;
+	struct media_intf_devnode *intf_devnode;
+	struct media_link *intf_link;
+	struct media_pad media_pad;
+	struct media_pipeline media_pipe;
+};
+
+struct usb_mixer_elem_list;
+
+struct usbmix_connector_map;
+
+struct rc_config;
+
+struct media_mixer_ctl;
+
+struct usb_mixer_interface {
+	struct snd_usb_audio *chip;
+	struct usb_host_interface *hostif;
+	struct list_head list;
+	unsigned int ignore_ctl_error;
+	struct urb *urb;
+	struct usb_mixer_elem_list **id_elems;
+	int protocol;
+	const struct usbmix_connector_map *connector_map;
+	const struct rc_config *rc_cfg;
+	u32 rc_code;
+	wait_queue_head_t rc_waitq;
+	struct urb *rc_urb;
+	struct usb_ctrlrequest *rc_setup_packet;
+	u8 rc_buffer[6];
+	struct media_mixer_ctl *media_mixer_ctl;
+	bool disconnected;
+	void *private_data;
+	void (*private_free)(struct usb_mixer_interface *);
+	void (*private_suspend)(struct usb_mixer_interface *);
+};
+
+typedef void (*usb_mixer_elem_dump_func_t)(struct snd_info_buffer *, struct usb_mixer_elem_list *);
+
+typedef int (*usb_mixer_elem_resume_func_t)(struct usb_mixer_elem_list *);
+
+struct usb_mixer_elem_list {
+	struct usb_mixer_interface *mixer;
+	struct usb_mixer_elem_list *next_id_elem;
+	struct snd_kcontrol *kctl;
+	unsigned int id;
+	bool is_std_info;
+	usb_mixer_elem_dump_func_t dump;
+	usb_mixer_elem_resume_func_t resume;
+};
+
+struct usbmix_connector_map {
+	u8 id;
+	u8 delegated_id;
+	u8 control;
+	u8 channel;
+};
+
+struct rc_config {
+	u32 usb_id;
+	u8 offset;
+	u8 length;
+	u8 packet_length;
+	u8 min_packet_length;
+	u8 mute_mixer_id;
+	u32 mute_code;
+};
+
+struct media_mixer_ctl {
+	struct media_device *media_dev;
+	struct media_entity media_entity;
+	struct media_intf_devnode *intf_devnode;
+	struct media_link *intf_link;
+	struct media_pad media_pad[3];
+	struct media_pipeline media_pipe;
+};
+
+struct uac1_ac_header_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__le16 bcdADC;
+	__le16 wTotalLength;
+	__u8 bInCollection;
+	__u8 baInterfaceNr[0];
+} __attribute__((packed));
+
+struct uac3_clock_source_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bClockID;
+	__u8 bmAttributes;
+	__le32 bmControls;
+	__u8 bReferenceTerminal;
+	__le16 wClockSourceStr;
+} __attribute__((packed));
+
+union uac23_clock_source_desc {
+	struct uac_clock_source_descriptor v2;
+	struct uac3_clock_source_descriptor v3;
+};
+
+struct uac_clock_selector_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bClockID;
+	__u8 bNrInPins;
+	__u8 baCSourceID[0];
+};
+
+struct uac3_clock_selector_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bClockID;
+	__u8 bNrInPins;
+	__u8 baCSourceID[0];
+};
+
+union uac23_clock_selector_desc {
+	struct uac_clock_selector_descriptor v2;
+	struct uac3_clock_selector_descriptor v3;
+};
+
+struct uac_clock_multiplier_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bClockID;
+	__u8 bCSourceID;
+	__u8 bmControls;
+	__u8 iClockMultiplier;
+};
+
+union uac23_clock_multiplier_desc {
+	struct uac_clock_multiplier_descriptor v2;
+	struct uac_clock_multiplier_descriptor v3;
+};
+
+enum {
+	EP_STATE_STOPPED = 0,
+	EP_STATE_RUNNING = 1,
+	EP_STATE_STOPPING = 2,
+};
+
+struct snd_usb_iface_ref {
+	unsigned char iface;
+	bool need_setup;
+	int opened;
+	int altset;
+	struct list_head list;
+};
+
+struct snd_usb_clock_ref {
+	unsigned char clock;
+	atomic_t locked;
+	int opened;
+	int rate;
+	bool need_setup;
+	struct list_head list;
+};
+
+struct uac_format_type_ii_ext_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bFormatType;
+	__le16 wMaxBitRate;
+	__le16 wSamplesPerFrame;
+	__u8 bHeaderLength;
+	__u8 bSideBandProtocol;
+};
+
+struct uac_format_type_ii_discrete_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bFormatType;
+	__le16 wMaxBitRate;
+	__le16 wSamplesPerFrame;
+	__u8 bSamFreqType;
+	__u8 tSamFreq[0];
+} __attribute__((packed));
+
+struct uac3_as_header_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bTerminalLink;
+	__le32 bmControls;
+	__le16 wClusterDescrID;
+	__le64 bmFormats;
+	__u8 bSubslotSize;
+	__u8 bBitResolution;
+	__le16 bmAuxProtocols;
+	__u8 bControlSize;
+} __attribute__((packed));
+
+struct uac_format_type_i_ext_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bFormatType;
+	__u8 bSubslotSize;
+	__u8 bBitResolution;
+	__u8 bHeaderLength;
+	__u8 bControlSize;
+	__u8 bSideBandProtocol;
+};
+
+struct uac_format_type_i_discrete_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bFormatType;
+	__u8 bNrChannels;
+	__u8 bSubframeSize;
+	__u8 bBitResolution;
+	__u8 bSamFreqType;
+	__u8 tSamFreq[0];
+};
+
+struct uac_format_type_i_continuous_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bFormatType;
+	__u8 bNrChannels;
+	__u8 bSubframeSize;
+	__u8 bBitResolution;
+	__u8 bSamFreqType;
+	__u8 tLowerSamFreq[3];
+	__u8 tUpperSamFreq[3];
+};
+
+struct snd_usb_implicit_fb_match {
+	unsigned int id;
+	unsigned int iface_class;
+	unsigned int ep_num;
+	unsigned int iface;
+	int type;
+};
+
+enum {
+	IMPLICIT_FB_NONE = 0,
+	IMPLICIT_FB_GENERIC = 1,
+	IMPLICIT_FB_FIXED = 2,
+	IMPLICIT_FB_BOTH = 3,
+};
+
+struct usbmix_name_map;
+
+struct usbmix_selector_map;
+
+struct usbmix_ctl_map {
+	u32 id;
+	const struct usbmix_name_map *map;
+	const struct usbmix_selector_map *selector_map;
+	const struct usbmix_connector_map *connector_map;
+};
+
+struct usbmix_dB_map;
+
+struct usbmix_name_map {
+	int id;
+	const char *name;
+	int control;
+	const struct usbmix_dB_map *dB;
+};
+
+struct usbmix_dB_map {
+	int min;
+	int max;
+	bool min_mute;
+};
+
+struct usbmix_selector_map {
+	int id;
+	int count;
+	const char **names;
+};
+
+struct uac3_badd_profile {
+	int subclass;
+	const char *name;
+	int c_chmask;
+	int p_chmask;
+	int st_chmask;
+};
+
+struct iterm_name_combo {
+	int type;
+	char *name;
+};
+
+struct usb_feature_control_info {
+	int control;
+	const char *name;
+	int type;
+	int type_uac2;
+};
+
+struct procunit_value_info {
+	int control;
+	const char *suffix;
+	int val_type;
+	int min_value;
+};
+
+struct procunit_info {
+	int type;
+	char *name;
+	const struct procunit_value_info *values;
+};
+
+enum {
+	USB_MIXER_BOOLEAN = 0,
+	USB_MIXER_INV_BOOLEAN = 1,
+	USB_MIXER_S8 = 2,
+	USB_MIXER_U8 = 3,
+	USB_MIXER_S16 = 4,
+	USB_MIXER_U16 = 5,
+	USB_MIXER_S32 = 6,
+	USB_MIXER_U32 = 7,
+	USB_MIXER_BESPOKEN = 8,
+};
+
+enum {
+	USB_XU_CLOCK_RATE = 58113,
+	USB_XU_CLOCK_SOURCE = 58114,
+	USB_XU_DIGITAL_IO_STATUS = 58115,
+	USB_XU_DEVICE_OPTIONS = 58116,
+	USB_XU_DIRECT_MONITORING = 58117,
+	USB_XU_METERING = 58118,
+};
+
+struct usb_mixer_elem_info {
+	struct usb_mixer_elem_list head;
+	unsigned int control;
+	unsigned int cmask;
+	unsigned int idx_off;
+	unsigned int ch_readonly;
+	unsigned int master_readonly;
+	int channels;
+	int val_type;
+	int min;
+	int max;
+	int res;
+	int dBmin;
+	int dBmax;
+	int cached;
+	int cache_val[16];
+	u8 initialized;
+	u8 min_mute;
+	void *private_data;
+};
+
+struct usb_audio_term {
+	int id;
+	int type;
+	int channels;
+	unsigned int chconfig;
+	int name;
+};
+
+struct mixer_build {
+	struct snd_usb_audio *chip;
+	struct usb_mixer_interface *mixer;
+	unsigned char *buffer;
+	unsigned int buflen;
+	unsigned long unitbitmap[4];
+	unsigned long termbitmap[4];
+	struct usb_audio_term oterm;
+	const struct usbmix_name_map *map;
+	const struct usbmix_selector_map *selector_map;
+};
+
+struct uac3_output_terminal_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bTerminalID;
+	__le16 wTerminalType;
+	__u8 bAssocTerminal;
+	__u8 bSourceID;
+	__u8 bCSourceID;
+	__le32 bmControls;
+	__le16 wExTerminalDescrID;
+	__le16 wConnectorsDescrID;
+	__le16 wTerminalDescrStr;
+} __attribute__((packed));
+
+struct uac1_output_terminal_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bTerminalID;
+	__le16 wTerminalType;
+	__u8 bAssocTerminal;
+	__u8 bSourceID;
+	__u8 iTerminal;
+} __attribute__((packed));
+
+struct uac_feature_unit_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bUnitID;
+	__u8 bSourceID;
+	__u8 bControlSize;
+	__u8 bmaControls[0];
+};
+
+struct uac_selector_unit_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bUintID;
+	__u8 bNrInPins;
+	__u8 baSourceID[0];
+};
+
+struct uac3_input_terminal_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bTerminalID;
+	__le16 wTerminalType;
+	__u8 bAssocTerminal;
+	__u8 bCSourceID;
+	__le32 bmControls;
+	__le16 wClusterDescrID;
+	__le16 wExTerminalDescrID;
+	__le16 wConnectorsDescrID;
+	__le16 wTerminalDescrStr;
+};
+
+struct uac_mixer_unit_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bUnitID;
+	__u8 bNrInPins;
+	__u8 baSourceID[0];
+};
+
+struct uac3_feature_unit_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bUnitID;
+	__u8 bSourceID;
+	__u8 bmaControls[0];
+};
+
+struct uac_processing_unit_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bUnitID;
+	__le16 wProcessType;
+	__u8 bNrInPins;
+	__u8 baSourceID[0];
+} __attribute__((packed));
+
+struct uac2_effect_unit_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bUnitID;
+	__le16 wEffectType;
+	__u8 bSourceID;
+	__u8 bmaControls[0];
+} __attribute__((packed));
+
+struct uac_input_terminal_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bTerminalID;
+	__le16 wTerminalType;
+	__u8 bAssocTerminal;
+	__u8 bNrChannels;
+	__le16 wChannelConfig;
+	__u8 iChannelNames;
+	__u8 iTerminal;
+};
+
+struct uac3_cluster_header_descriptor {
+	__le16 wLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__le16 wDescriptorID;
+	__u8 bNrChannels;
+} __attribute__((packed));
+
+struct uac2_connectors_ctl_blk {
+	__u8 bNrChannels;
+	__le32 bmChannelConfig;
+	__u8 iChannelNames;
+} __attribute__((packed));
+
+struct uac3_insertion_ctl_blk {
+	__u8 bSize;
+	__u8 bmConInserted;
+};
+
+struct uac1_status_word {
+	__u8 bStatusType;
+	__u8 bOriginator;
+};
+
+struct sb_jack {
+	int unitid;
+	const char *name;
+};
+
+struct std_mono_table {
+	unsigned int unitid;
+	unsigned int control;
+	unsigned int cmask;
+	int val_type;
+	const char *name;
+	snd_kcontrol_tlv_rw_t *tlv_callback;
+};
+
+struct snd_djm_ctl;
+
+struct snd_djm_device {
+	const char *name;
+	const struct snd_djm_ctl *controls;
+	size_t ncontrols;
+};
+
+struct snd_djm_ctl {
+	const char *name;
+	const u16 *options;
+	size_t noptions;
+	u16 default_value;
+	u16 wIndex;
+};
+
+enum {
+	SNDRV_HWDEP_IFACE_OPL2 = 0,
+	SNDRV_HWDEP_IFACE_OPL3 = 1,
+	SNDRV_HWDEP_IFACE_OPL4 = 2,
+	SNDRV_HWDEP_IFACE_SB16CSP = 3,
+	SNDRV_HWDEP_IFACE_EMU10K1 = 4,
+	SNDRV_HWDEP_IFACE_YSS225 = 5,
+	SNDRV_HWDEP_IFACE_ICS2115 = 6,
+	SNDRV_HWDEP_IFACE_SSCAPE = 7,
+	SNDRV_HWDEP_IFACE_VX = 8,
+	SNDRV_HWDEP_IFACE_MIXART = 9,
+	SNDRV_HWDEP_IFACE_USX2Y = 10,
+	SNDRV_HWDEP_IFACE_EMUX_WAVETABLE = 11,
+	SNDRV_HWDEP_IFACE_BLUETOOTH = 12,
+	SNDRV_HWDEP_IFACE_USX2Y_PCM = 13,
+	SNDRV_HWDEP_IFACE_PCXHR = 14,
+	SNDRV_HWDEP_IFACE_SB_RC = 15,
+	SNDRV_HWDEP_IFACE_HDA = 16,
+	SNDRV_HWDEP_IFACE_USB_STREAM = 17,
+	SNDRV_HWDEP_IFACE_FW_DICE = 18,
+	SNDRV_HWDEP_IFACE_FW_FIREWORKS = 19,
+	SNDRV_HWDEP_IFACE_FW_BEBOB = 20,
+	SNDRV_HWDEP_IFACE_FW_OXFW = 21,
+	SNDRV_HWDEP_IFACE_FW_DIGI00X = 22,
+	SNDRV_HWDEP_IFACE_FW_TASCAM = 23,
+	SNDRV_HWDEP_IFACE_LINE6 = 24,
+	SNDRV_HWDEP_IFACE_FW_MOTU = 25,
+	SNDRV_HWDEP_IFACE_FW_FIREFACE = 26,
+	SNDRV_HWDEP_IFACE_LAST = 26,
+};
+
+enum snd_rme_domain {
+	SND_RME_DOMAIN_SYSTEM = 0,
+	SND_RME_DOMAIN_AES = 1,
+	SND_RME_DOMAIN_SPDIF = 2,
+};
+
+enum snd_rme_clock_status {
+	SND_RME_CLOCK_NOLOCK = 0,
+	SND_RME_CLOCK_LOCK = 1,
+	SND_RME_CLOCK_SYNC = 2,
+};
+
+enum {
+	SND_BBFPRO_CTL_REG1 = 0,
+	SND_BBFPRO_CTL_REG2 = 1,
+};
+
+struct scarlett_mixer_elem_enum_info {
+	int start;
+	int len;
+	int offsets[5];
+	const char * const *names;
+};
+
+struct scarlett_mixer_control {
+	unsigned char num;
+	unsigned char type;
+	const char *name;
+};
+
+struct scarlett_device_info {
+	int matrix_in;
+	int matrix_out;
+	int input_len;
+	int output_len;
+	struct scarlett_mixer_elem_enum_info opt_master;
+	struct scarlett_mixer_elem_enum_info opt_matrix;
+	int matrix_mux_init[18];
+	int num_controls;
+	const struct scarlett_mixer_control controls[10];
+};
+
+enum {
+	SCARLETT_OUTPUTS = 0,
+	SCARLETT_SWITCH_IMPEDANCE = 1,
+	SCARLETT_SWITCH_PAD = 2,
+	SCARLETT_SWITCH_GAIN = 3,
+};
+
+enum {
+	SCARLETT_OFFSET_PCM = 0,
+	SCARLETT_OFFSET_ANALOG = 1,
+	SCARLETT_OFFSET_SPDIF = 2,
+	SCARLETT_OFFSET_ADAT = 3,
+	SCARLETT_OFFSET_MIX = 4,
+};
+
+struct scarlett2_device_info;
+
+struct scarlett2_device_entry {
+	const u32 usb_id;
+	const struct scarlett2_device_info *info;
+	const char *series_name;
+};
+
+struct scarlett2_mux_entry {
+	u8 port_type;
+	u8 start;
+	u8 count;
+};
+
+struct scarlett2_device_info {
+	u8 has_msd_mode;
+	u8 config_set;
+	u8 line_out_hw_vol;
+	u8 has_speaker_switching;
+	u8 has_talkback;
+	u8 level_input_count;
+	u8 level_input_first;
+	u8 pad_input_count;
+	u8 air_input_count;
+	u8 phantom_count;
+	u8 inputs_per_phantom;
+	u8 direct_monitor;
+	u8 line_out_remap_enable;
+	u8 line_out_remap[10];
+	const char * const line_out_descrs[10];
+	const int port_count[12];
+	struct scarlett2_mux_entry mux_assignment[30];
+};
+
+struct scarlett2_config {
+	u8 offset;
+	u8 size;
+	u8 activate;
+};
+
+struct scarlett2_port {
+	u16 id;
+	const char * const src_descr;
+	int src_num_offset;
+	const char * const dst_descr;
+};
+
+enum {
+	SCARLETT2_PORT_TYPE_NONE = 0,
+	SCARLETT2_PORT_TYPE_ANALOGUE = 1,
+	SCARLETT2_PORT_TYPE_SPDIF = 2,
+	SCARLETT2_PORT_TYPE_ADAT = 3,
+	SCARLETT2_PORT_TYPE_MIX = 4,
+	SCARLETT2_PORT_TYPE_PCM = 5,
+	SCARLETT2_PORT_TYPE_COUNT = 6,
+};
+
+enum {
+	SCARLETT2_PORT_IN = 0,
+	SCARLETT2_PORT_OUT = 1,
+	SCARLETT2_PORT_DIRNS = 2,
+};
+
+enum {
+	SCARLETT2_CONFIG_DIM_MUTE = 0,
+	SCARLETT2_CONFIG_LINE_OUT_VOLUME = 1,
+	SCARLETT2_CONFIG_MUTE_SWITCH = 2,
+	SCARLETT2_CONFIG_SW_HW_SWITCH = 3,
+	SCARLETT2_CONFIG_LEVEL_SWITCH = 4,
+	SCARLETT2_CONFIG_PAD_SWITCH = 5,
+	SCARLETT2_CONFIG_MSD_SWITCH = 6,
+	SCARLETT2_CONFIG_AIR_SWITCH = 7,
+	SCARLETT2_CONFIG_STANDALONE_SWITCH = 8,
+	SCARLETT2_CONFIG_PHANTOM_SWITCH = 9,
+	SCARLETT2_CONFIG_PHANTOM_PERSISTENCE = 10,
+	SCARLETT2_CONFIG_DIRECT_MONITOR = 11,
+	SCARLETT2_CONFIG_MONITOR_OTHER_SWITCH = 12,
+	SCARLETT2_CONFIG_MONITOR_OTHER_ENABLE = 13,
+	SCARLETT2_CONFIG_TALKBACK_MAP = 14,
+	SCARLETT2_CONFIG_COUNT = 15,
+};
+
+enum {
+	SCARLETT2_CONFIG_SET_NO_MIXER = 0,
+	SCARLETT2_CONFIG_SET_GEN_2 = 1,
+	SCARLETT2_CONFIG_SET_GEN_3 = 2,
+	SCARLETT2_CONFIG_SET_CLARETT = 3,
+	SCARLETT2_CONFIG_SET_COUNT = 4,
+};
+
+enum {
+	SCARLETT2_BUTTON_MUTE = 0,
+	SCARLETT2_BUTTON_DIM = 1,
+	SCARLETT2_DIM_MUTE_COUNT = 2,
+};
+
+struct scarlett2_data {
+	struct usb_mixer_interface *mixer;
+	struct mutex usb_mutex;
+	struct mutex data_mutex;
+	struct delayed_work work;
+	const struct scarlett2_device_info *info;
+	const char *series_name;
+	__u8 bInterfaceNumber;
+	__u8 bEndpointAddress;
+	__u16 wMaxPacketSize;
+	__u8 bInterval;
+	int num_mux_srcs;
+	int num_mux_dsts;
+	u16 scarlett2_seq;
+	u8 sync_updated;
+	u8 vol_updated;
+	u8 input_other_updated;
+	u8 monitor_other_updated;
+	u8 mux_updated;
+	u8 speaker_switching_switched;
+	u8 sync;
+	u8 master_vol;
+	u8 vol[10];
+	u8 vol_sw_hw_switch[10];
+	u8 mute_switch[10];
+	u8 level_switch[2];
+	u8 pad_switch[8];
+	u8 dim_mute[2];
+	u8 air_switch[8];
+	u8 phantom_switch[2];
+	u8 phantom_persistence;
+	u8 direct_monitor_switch;
+	u8 speaker_switching_switch;
+	u8 talkback_switch;
+	u8 talkback_map[12];
+	u8 msd_switch;
+	u8 standalone_switch;
+	struct snd_kcontrol *sync_ctl;
+	struct snd_kcontrol *master_vol_ctl;
+	struct snd_kcontrol *vol_ctls[10];
+	struct snd_kcontrol *sw_hw_ctls[10];
+	struct snd_kcontrol *mute_ctls[10];
+	struct snd_kcontrol *dim_mute_ctls[2];
+	struct snd_kcontrol *level_ctls[2];
+	struct snd_kcontrol *pad_ctls[8];
+	struct snd_kcontrol *air_ctls[8];
+	struct snd_kcontrol *phantom_ctls[2];
+	struct snd_kcontrol *mux_ctls[77];
+	struct snd_kcontrol *direct_monitor_ctl;
+	struct snd_kcontrol *speaker_switching_ctl;
+	struct snd_kcontrol *talkback_ctl;
+	u8 mux[77];
+	u8 mix[300];
+};
+
+struct scarlett2_usb_volume_status {
+	u8 dim_mute[2];
+	u8 pad1;
+	s16 sw_vol[10];
+	s16 hw_vol[10];
+	u8 mute_switch[10];
+	u8 sw_hw_switch[10];
+	u8 pad3[6];
+	s16 master_vol;
+} __attribute__((packed));
+
+struct scarlett2_usb_packet {
+	__le32 cmd;
+	__le16 size;
+	__le16 seq;
+	__le32 error;
+	__le32 pad;
+	u8 data[0];
+};
+
+struct snd_us16x08_control_params {
+	const struct snd_kcontrol_new *kcontrol_new;
+	int control_id;
+	int type;
+	int num_channels;
+	const char *name;
+	int default_val;
+};
+
+struct snd_us16x08_comp_store {
+	u8 val[96];
+};
+
+struct snd_us16x08_eq_store {
+	u8 val[256];
+};
+
+struct snd_us16x08_meter_store {
+	int meter_level[16];
+	int master_level[2];
+	int comp_index;
+	int comp_active_index;
+	int comp_level[16];
+	struct snd_us16x08_comp_store *comp_store;
+};
+
+struct s1810c_ctl_packet {
+	u32 a;
+	u32 b;
+	u32 fixed1;
+	u32 fixed2;
+	u32 c;
+	u32 d;
+	u32 e;
+};
+
+struct s1810_mixer_state {
+	uint16_t seqnum;
+	struct mutex usb_mutex;
+	struct mutex data_mutex;
+};
+
+struct s1810c_state_packet {
+	u32 fields[63];
+};
+
+enum {
+	UAC3_PD_STATE_D0 = 0,
+	UAC3_PD_STATE_D1 = 1,
+	UAC3_PD_STATE_D2 = 2,
+};
+
+struct uac3_power_domain_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bPowerDomainID;
+	__le16 waRecoveryTime1;
+	__le16 waRecoveryTime2;
+	__u8 bNrEntities;
+	__u8 baEntityID[0];
+} __attribute__((packed));
+
+typedef int (*quirk_func_t)(struct snd_usb_audio *, struct usb_interface *, struct usb_driver *, const struct snd_usb_audio_quirk *);
+
+typedef s8 int8_t;
+
+struct snd_usb_midi_endpoint_info {
+	int8_t out_ep;
+	uint8_t out_interval;
+	int8_t in_ep;
+	uint8_t in_interval;
+	uint16_t out_cables;
+	uint16_t in_cables;
+	int16_t assoc_in_jacks[16];
+	int16_t assoc_out_jacks[16];
+};
+
+struct usb_audio_quirk_flags_table {
+	u32 id;
+	u32 flags;
+};
+
+enum quirk_type {
+	QUIRK_IGNORE_INTERFACE = 0,
+	QUIRK_COMPOSITE = 1,
+	QUIRK_AUTODETECT = 2,
+	QUIRK_MIDI_STANDARD_INTERFACE = 3,
+	QUIRK_MIDI_FIXED_ENDPOINT = 4,
+	QUIRK_MIDI_YAMAHA = 5,
+	QUIRK_MIDI_ROLAND = 6,
+	QUIRK_MIDI_MIDIMAN = 7,
+	QUIRK_MIDI_NOVATION = 8,
+	QUIRK_MIDI_RAW_BYTES = 9,
+	QUIRK_MIDI_EMAGIC = 10,
+	QUIRK_MIDI_CME = 11,
+	QUIRK_MIDI_AKAI = 12,
+	QUIRK_MIDI_US122L = 13,
+	QUIRK_MIDI_FTDI = 14,
+	QUIRK_MIDI_CH345 = 15,
+	QUIRK_AUDIO_STANDARD_INTERFACE = 16,
+	QUIRK_AUDIO_FIXED_ENDPOINT = 17,
+	QUIRK_AUDIO_EDIROL_UAXX = 18,
+	QUIRK_AUDIO_STANDARD_MIXER = 19,
+	QUIRK_TYPE_COUNT = 20,
+};
+
+enum {
+	EMU_QUIRK_SR_44100HZ = 0,
+	EMU_QUIRK_SR_48000HZ = 1,
+	EMU_QUIRK_SR_88200HZ = 2,
+	EMU_QUIRK_SR_96000HZ = 3,
+	EMU_QUIRK_SR_176400HZ = 4,
+	EMU_QUIRK_SR_192000HZ = 5,
+};
+
+struct usb_ms_endpoint_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bNumEmbMIDIJack;
+	__u8 baAssocJackID[0];
+};
+
+struct uac1_as_header_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bTerminalLink;
+	__u8 bDelay;
+	__le16 wFormatTag;
+} __attribute__((packed));
+
+struct usb_midi_out_jack_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bJackType;
+	__u8 bJackID;
+	__u8 bNrInputPins;
+	struct usb_midi_source_pin pins[0];
+};
+
+struct uac3_iso_endpoint_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__le32 bmControls;
+	__u8 bLockDelayUnits;
+	__le16 wLockDelay;
+} __attribute__((packed));
+
+struct uac3_hc_descriptor_header {
+	__le16 wLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__le16 wDescriptorID;
+};
+
+struct uac3_cluster_segment_descriptor {
+	__le16 wLength;
+	__u8 bSegmentType;
+} __attribute__((packed));
+
+struct uac3_cluster_information_segment_descriptor {
+	__le16 wLength;
+	__u8 bSegmentType;
+	__u8 bChPurpose;
+	__u8 bChRelationship;
+	__u8 bChGroupID;
+};
+
+struct uac_iso_endpoint_descriptor {
+	__u8 bLength;
+	__u8 bDescriptorType;
+	__u8 bDescriptorSubtype;
+	__u8 bmAttributes;
+	__u8 bLockDelayUnits;
+	__le16 wLockDelay;
+} __attribute__((packed));
+
+struct usb_desc_validator {
+	unsigned char protocol;
+	unsigned char type;
+	bool (*func)(const void *, const struct usb_desc_validator *);
+	size_t size;
+};
+
+struct snd_usb_midi_in_endpoint;
+
+struct snd_usb_midi_out_endpoint;
+
+struct usb_protocol_ops {
+	void (*input)(struct snd_usb_midi_in_endpoint *, uint8_t *, int);
+	void (*output)(struct snd_usb_midi_out_endpoint *, struct urb *);
+	void (*output_packet)(struct urb *, uint8_t, uint8_t, uint8_t, uint8_t);
+	void (*init_out_endpoint)(struct snd_usb_midi_out_endpoint *);
+	void (*finish_out_endpoint)(struct snd_usb_midi_out_endpoint *);
+};
+
+struct usbmidi_in_port {
+	struct snd_rawmidi_substream *substream;
+	u8 running_status_length;
+};
+
+struct snd_usb_midi;
+
+struct snd_usb_midi_in_endpoint {
+	struct snd_usb_midi *umidi;
+	struct urb *urbs[7];
+	struct usbmidi_in_port ports[16];
+	u8 seen_f5;
+	bool in_sysex;
+	u8 last_cin;
+	u8 error_resubmit;
+	int current_port;
+};
+
+struct snd_usb_midi_endpoint {
+	struct snd_usb_midi_out_endpoint *out;
+	struct snd_usb_midi_in_endpoint *in;
+};
+
+struct snd_usb_midi {
+	struct usb_device *dev;
+	struct snd_card *card;
+	struct usb_interface *iface;
+	const struct snd_usb_audio_quirk *quirk;
+	struct snd_rawmidi *rmidi;
+	const struct usb_protocol_ops *usb_protocol_ops;
+	struct list_head list;
+	struct timer_list error_timer;
+	spinlock_t disc_lock;
+	struct rw_semaphore disc_rwsem;
+	struct mutex mutex;
+	u32 usb_id;
+	int next_midi_device;
+	struct snd_usb_midi_endpoint endpoints[2];
+	unsigned long input_triggered;
+	unsigned int opened[2];
+	unsigned char disconnected;
+	unsigned char input_running;
+	struct snd_kcontrol *roland_load_ctl;
+};
+
+struct snd_seq_addr {
+	unsigned char client;
+	unsigned char port;
+};
+
+struct snd_seq_port_info {
+	struct snd_seq_addr addr;
+	char name[64];
+	unsigned int capability;
+	unsigned int type;
+	int midi_channels;
+	int midi_voices;
+	int synth_voices;
+	int read_use;
+	int write_use;
+	void *kernel;
+	unsigned int flags;
+	unsigned char time_queue;
+	unsigned char direction;
+	unsigned char ump_group;
+	char reserved[57];
+};
+
+struct out_urb_context {
+	struct urb *urb;
+	struct snd_usb_midi_out_endpoint *ep;
+};
+
+struct usbmidi_out_port {
+	struct snd_usb_midi_out_endpoint *ep;
+	struct snd_rawmidi_substream *substream;
+	int active;
+	uint8_t cable;
+	uint8_t state;
+	uint8_t data[2];
+};
+
+struct snd_usb_midi_out_endpoint {
+	struct snd_usb_midi *umidi;
+	struct out_urb_context urbs[7];
+	unsigned int active_urbs;
+	unsigned int drain_urbs;
+	int max_transfer;
+	struct work_struct work;
+	unsigned int next_urb;
+	spinlock_t buffer_lock;
+	struct usbmidi_out_port ports[16];
+	int current_port;
+	wait_queue_head_t drain_wait;
+};
+
+struct port_info {
+	u32 id;
+	short port;
+	short voices;
+	const char *name;
+	unsigned int seq_flags;
+};
+
+struct snd_soc_acpi_codecs {
+	int num_codecs;
+	u8 codecs[48];
+};
+
+struct snd_soc_acpi_link_adr;
+
+struct snd_soc_dai_driver;
+
+struct snd_soc_acpi_mach_params {
+	u32 acpi_ipc_irq_index;
+	const char *platform;
+	u32 codec_mask;
+	u32 dmic_num;
+	bool common_hdmi_codec_drv;
+	u32 link_mask;
+	const struct snd_soc_acpi_link_adr *links;
+	u32 i2s_link_mask;
+	u32 num_dai_drivers;
+	struct snd_soc_dai_driver *dai_drivers;
+	unsigned short subsystem_vendor;
+	unsigned short subsystem_device;
+	bool subsystem_id_set;
+};
+
+struct snd_soc_acpi_mach {
+	u8 id[16];
+	const char *uid;
+	const struct snd_soc_acpi_codecs *comp_ids;
+	const u32 link_mask;
+	const struct snd_soc_acpi_link_adr *links;
+	const char *drv_name;
+	const char *fw_filename;
+	const char *tplg_filename;
+	const char *board;
+	struct snd_soc_acpi_mach * (*machine_quirk)(void *);
+	const void *quirk_data;
+	void *pdata;
+	struct snd_soc_acpi_mach_params mach_params;
+	const char *sof_tplg_filename;
+	const u32 tplg_quirk_mask;
+};
+
+struct snd_soc_acpi_adr_device;
+
+struct snd_soc_acpi_link_adr {
+	const u32 mask;
+	const u32 num_adr;
+	const struct snd_soc_acpi_adr_device *adr_d;
+};
+
+struct snd_soc_acpi_endpoint;
+
+struct snd_soc_acpi_adr_device {
+	const u64 adr;
+	const u8 num_endpoints;
+	const struct snd_soc_acpi_endpoint *endpoints;
+	const char *name_prefix;
+};
+
+struct snd_soc_acpi_endpoint {
+	u8 num;
+	u8 aggregated;
+	u8 group_position;
+	u8 group_id;
+};
+
+struct snd_soc_acpi_package_context {
+	char *name;
+	int length;
+	struct acpi_buffer *format;
+	struct acpi_buffer *state;
+	bool data_valid;
+};
+
+struct sdw_slave_id {
+	__u16 mfg_id;
+	__u16 part_id;
+	__u8 class_id;
+	__u8 unique_id;
+	__u8 sdw_version: 4;
+};
+
+struct sdw_extended_slave_id {
+	int link_id;
+	struct sdw_slave_id id;
+};
+
+struct snd_soc_card;
+
+typedef void (*btf_trace_snd_soc_bias_level_start)(void *, struct snd_soc_card *, int);
+
+enum snd_soc_pcm_subclass {
+	SND_SOC_PCM_CLASS_PCM = 0,
+	SND_SOC_PCM_CLASS_BE = 1,
+};
+
+enum snd_soc_bias_level {
+	SND_SOC_BIAS_OFF = 0,
+	SND_SOC_BIAS_STANDBY = 1,
+	SND_SOC_BIAS_PREPARE = 2,
+	SND_SOC_BIAS_ON = 3,
+};
+
+struct snd_soc_component;
+
+struct snd_soc_dapm_widget;
+
+struct snd_soc_dapm_context {
+	enum snd_soc_bias_level bias_level;
+	unsigned int idle_bias_off: 1;
+	unsigned int suspend_bias_off: 1;
+	struct device *dev;
+	struct snd_soc_component *component;
+	struct snd_soc_card *card;
+	enum snd_soc_bias_level target_bias_level;
+	struct list_head list;
+	struct snd_soc_dapm_widget *wcache_sink;
+	struct snd_soc_dapm_widget *wcache_source;
+	struct dentry *debugfs_dapm;
+};
+
+struct snd_soc_dapm_stats {
+	int power_checks;
+	int path_checks;
+	int neighbour_checks;
+};
+
+struct snd_soc_dai_link;
+
+struct snd_soc_codec_conf;
+
+struct snd_soc_aux_dev;
+
+struct snd_soc_dapm_route;
+
+struct snd_soc_dapm_update;
+
+struct snd_soc_card {
+	const char *name;
+	const char *long_name;
+	const char *driver_name;
+	const char *components;
+	char dmi_longname[80];
+	unsigned short pci_subsystem_vendor;
+	unsigned short pci_subsystem_device;
+	bool pci_subsystem_set;
+	char topology_shortname[32];
+	struct device *dev;
+	struct snd_card *snd_card;
+	struct module *owner;
+	struct mutex mutex;
+	struct mutex dapm_mutex;
+	struct mutex pcm_mutex;
+	enum snd_soc_pcm_subclass pcm_subclass;
+	int (*probe)(struct snd_soc_card *);
+	int (*late_probe)(struct snd_soc_card *);
+	void (*fixup_controls)(struct snd_soc_card *);
+	int (*remove)(struct snd_soc_card *);
+	int (*suspend_pre)(struct snd_soc_card *);
+	int (*suspend_post)(struct snd_soc_card *);
+	int (*resume_pre)(struct snd_soc_card *);
+	int (*resume_post)(struct snd_soc_card *);
+	int (*set_bias_level)(struct snd_soc_card *, struct snd_soc_dapm_context *, enum snd_soc_bias_level);
+	int (*set_bias_level_post)(struct snd_soc_card *, struct snd_soc_dapm_context *, enum snd_soc_bias_level);
+	int (*add_dai_link)(struct snd_soc_card *, struct snd_soc_dai_link *);
+	void (*remove_dai_link)(struct snd_soc_card *, struct snd_soc_dai_link *);
+	long pmdown_time;
+	struct snd_soc_dai_link *dai_link;
+	int num_links;
+	struct list_head rtd_list;
+	int num_rtd;
+	struct snd_soc_codec_conf *codec_conf;
+	int num_configs;
+	struct snd_soc_aux_dev *aux_dev;
+	int num_aux_devs;
+	struct list_head aux_comp_list;
+	const struct snd_kcontrol_new *controls;
+	int num_controls;
+	const struct snd_soc_dapm_widget *dapm_widgets;
+	int num_dapm_widgets;
+	const struct snd_soc_dapm_route *dapm_routes;
+	int num_dapm_routes;
+	const struct snd_soc_dapm_widget *of_dapm_widgets;
+	int num_of_dapm_widgets;
+	const struct snd_soc_dapm_route *of_dapm_routes;
+	int num_of_dapm_routes;
+	struct list_head component_dev_list;
+	struct list_head list;
+	struct list_head widgets;
+	struct list_head paths;
+	struct list_head dapm_list;
+	struct list_head dapm_dirty;
+	struct list_head dobj_list;
+	struct snd_soc_dapm_context dapm;
+	struct snd_soc_dapm_stats dapm_stats;
+	struct snd_soc_dapm_update *update;
+	struct dentry *debugfs_card_root;
+	struct work_struct deferred_resume_work;
+	u32 pop_time;
+	unsigned int instantiated: 1;
+	unsigned int topology_shortname_created: 1;
+	unsigned int fully_routed: 1;
+	unsigned int disable_route_checks: 1;
+	unsigned int probed: 1;
+	unsigned int component_chaining: 1;
+	void *drvdata;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+};
+
+struct snd_soc_component_driver;
+
+struct snd_soc_component {
+	const char *name;
+	int id;
+	const char *name_prefix;
+	struct device *dev;
+	struct snd_soc_card *card;
+	unsigned int active;
+	unsigned int suspended: 1;
+	struct list_head list;
+	struct list_head card_aux_list;
+	struct list_head card_list;
+	const struct snd_soc_component_driver *driver;
+	struct list_head dai_list;
+	int num_dai;
+	struct regmap *regmap;
+	int val_bytes;
+	struct mutex io_mutex;
+	struct list_head dobj_list;
+	struct snd_soc_dapm_context dapm;
+	int (*init)(struct snd_soc_component *);
+	void *mark_module;
+	struct snd_pcm_substream *mark_open;
+	struct snd_pcm_substream *mark_hw_params;
+	struct snd_pcm_substream *mark_trigger;
+	struct snd_compr_stream *mark_compr_open;
+	void *mark_pm;
+	struct dentry *debugfs_root;
+	const char *debugfs_prefix;
+};
+
+enum snd_soc_dapm_type {
+	snd_soc_dapm_input = 0,
+	snd_soc_dapm_output = 1,
+	snd_soc_dapm_mux = 2,
+	snd_soc_dapm_demux = 3,
+	snd_soc_dapm_mixer = 4,
+	snd_soc_dapm_mixer_named_ctl = 5,
+	snd_soc_dapm_pga = 6,
+	snd_soc_dapm_out_drv = 7,
+	snd_soc_dapm_adc = 8,
+	snd_soc_dapm_dac = 9,
+	snd_soc_dapm_micbias = 10,
+	snd_soc_dapm_mic = 11,
+	snd_soc_dapm_hp = 12,
+	snd_soc_dapm_spk = 13,
+	snd_soc_dapm_line = 14,
+	snd_soc_dapm_switch = 15,
+	snd_soc_dapm_vmid = 16,
+	snd_soc_dapm_pre = 17,
+	snd_soc_dapm_post = 18,
+	snd_soc_dapm_supply = 19,
+	snd_soc_dapm_pinctrl = 20,
+	snd_soc_dapm_regulator_supply = 21,
+	snd_soc_dapm_clock_supply = 22,
+	snd_soc_dapm_aif_in = 23,
+	snd_soc_dapm_aif_out = 24,
+	snd_soc_dapm_siggen = 25,
+	snd_soc_dapm_sink = 26,
+	snd_soc_dapm_dai_in = 27,
+	snd_soc_dapm_dai_out = 28,
+	snd_soc_dapm_dai_link = 29,
+	snd_soc_dapm_kcontrol = 30,
+	snd_soc_dapm_buffer = 31,
+	snd_soc_dapm_scheduler = 32,
+	snd_soc_dapm_effect = 33,
+	snd_soc_dapm_src = 34,
+	snd_soc_dapm_asrc = 35,
+	snd_soc_dapm_encoder = 36,
+	snd_soc_dapm_decoder = 37,
+	SND_SOC_DAPM_TYPE_COUNT = 38,
+};
+
+enum snd_soc_trigger_order {
+	SND_SOC_TRIGGER_ORDER_DEFAULT = 0,
+	SND_SOC_TRIGGER_ORDER_LDC = 1,
+	SND_SOC_TRIGGER_ORDER_MAX = 2,
+};
+
+struct snd_soc_pcm_runtime;
+
+struct snd_soc_jack;
+
+struct snd_compress_ops;
+
+struct snd_soc_component_driver {
+	const char *name;
+	const struct snd_kcontrol_new *controls;
+	unsigned int num_controls;
+	const struct snd_soc_dapm_widget *dapm_widgets;
+	unsigned int num_dapm_widgets;
+	const struct snd_soc_dapm_route *dapm_routes;
+	unsigned int num_dapm_routes;
+	int (*probe)(struct snd_soc_component *);
+	void (*remove)(struct snd_soc_component *);
+	int (*suspend)(struct snd_soc_component *);
+	int (*resume)(struct snd_soc_component *);
+	unsigned int (*read)(struct snd_soc_component *, unsigned int);
+	int (*write)(struct snd_soc_component *, unsigned int, unsigned int);
+	int (*pcm_construct)(struct snd_soc_component *, struct snd_soc_pcm_runtime *);
+	void (*pcm_destruct)(struct snd_soc_component *, struct snd_pcm *);
+	int (*set_sysclk)(struct snd_soc_component *, int, int, unsigned int, int);
+	int (*set_pll)(struct snd_soc_component *, int, int, unsigned int, unsigned int);
+	int (*set_jack)(struct snd_soc_component *, struct snd_soc_jack *, void *);
+	int (*get_jack_type)(struct snd_soc_component *);
+	int (*of_xlate_dai_name)(struct snd_soc_component *, const struct of_phandle_args *, const char **);
+	int (*of_xlate_dai_id)(struct snd_soc_component *, struct device_node *);
+	void (*seq_notifier)(struct snd_soc_component *, enum snd_soc_dapm_type, int);
+	int (*stream_event)(struct snd_soc_component *, int);
+	int (*set_bias_level)(struct snd_soc_component *, enum snd_soc_bias_level);
+	int (*open)(struct snd_soc_component *, struct snd_pcm_substream *);
+	int (*close)(struct snd_soc_component *, struct snd_pcm_substream *);
+	int (*ioctl)(struct snd_soc_component *, struct snd_pcm_substream *, unsigned int, void *);
+	int (*hw_params)(struct snd_soc_component *, struct snd_pcm_substream *, struct snd_pcm_hw_params *);
+	int (*hw_free)(struct snd_soc_component *, struct snd_pcm_substream *);
+	int (*prepare)(struct snd_soc_component *, struct snd_pcm_substream *);
+	int (*trigger)(struct snd_soc_component *, struct snd_pcm_substream *, int);
+	int (*sync_stop)(struct snd_soc_component *, struct snd_pcm_substream *);
+	snd_pcm_uframes_t (*pointer)(struct snd_soc_component *, struct snd_pcm_substream *);
+	int (*get_time_info)(struct snd_soc_component *, struct snd_pcm_substream *, struct timespec64 *, struct timespec64 *, struct snd_pcm_audio_tstamp_config *, struct snd_pcm_audio_tstamp_report *);
+	int (*copy)(struct snd_soc_component *, struct snd_pcm_substream *, int, unsigned long, struct iov_iter *, unsigned long);
+	struct page * (*page)(struct snd_soc_component *, struct snd_pcm_substream *, unsigned long);
+	int (*mmap)(struct snd_soc_component *, struct snd_pcm_substream *, struct vm_area_struct *);
+	int (*ack)(struct snd_soc_component *, struct snd_pcm_substream *);
+	snd_pcm_sframes_t (*delay)(struct snd_soc_component *, struct snd_pcm_substream *);
+	const struct snd_compress_ops *compress_ops;
+	int probe_order;
+	int remove_order;
+	enum snd_soc_trigger_order trigger_start;
+	enum snd_soc_trigger_order trigger_stop;
+	unsigned int module_get_upon_open: 1;
+	unsigned int idle_bias_on: 1;
+	unsigned int suspend_bias_off: 1;
+	unsigned int use_pmdown_time: 1;
+	unsigned int endianness: 1;
+	unsigned int legacy_dai_naming: 1;
+	const char *ignore_machine;
+	const char *topology_name_prefix;
+	int (*be_hw_params_fixup)(struct snd_soc_pcm_runtime *, struct snd_pcm_hw_params *);
+	bool use_dai_pcm_id;
+	int be_pcm_base;
+	const char *debugfs_prefix;
+};
+
+enum snd_soc_dobj_type {
+	SND_SOC_DOBJ_NONE = 0,
+	SND_SOC_DOBJ_MIXER = 1,
+	SND_SOC_DOBJ_BYTES = 2,
+	SND_SOC_DOBJ_ENUM = 3,
+	SND_SOC_DOBJ_GRAPH = 4,
+	SND_SOC_DOBJ_WIDGET = 5,
+	SND_SOC_DOBJ_DAI_LINK = 6,
+	SND_SOC_DOBJ_PCM = 7,
+	SND_SOC_DOBJ_CODEC_LINK = 8,
+	SND_SOC_DOBJ_BACKEND_LINK = 9,
+};
+
+struct snd_soc_dobj_control {
+	struct snd_kcontrol *kcontrol;
+	char **dtexts;
+	unsigned long *dvalues;
+};
+
+struct snd_soc_dobj_widget {
+	unsigned int *kcontrol_type;
+};
+
+struct snd_soc_dobj {
+	enum snd_soc_dobj_type type;
+	unsigned int index;
+	struct list_head list;
+	int (*unload)(struct snd_soc_component *, struct snd_soc_dobj *);
+	union {
+		struct snd_soc_dobj_control control;
+		struct snd_soc_dobj_widget widget;
+	};
+	void *private;
+};
+
+struct snd_soc_dapm_widget {
+	enum snd_soc_dapm_type id;
+	const char *name;
+	const char *sname;
+	struct list_head list;
+	struct snd_soc_dapm_context *dapm;
+	void *priv;
+	struct regulator *regulator;
+	struct pinctrl *pinctrl;
+	int reg;
+	unsigned char shift;
+	unsigned int mask;
+	unsigned int on_val;
+	unsigned int off_val;
+	unsigned char power: 1;
+	unsigned char active: 1;
+	unsigned char connected: 1;
+	unsigned char new: 1;
+	unsigned char force: 1;
+	unsigned char ignore_suspend: 1;
+	unsigned char new_power: 1;
+	unsigned char power_checked: 1;
+	unsigned char is_supply: 1;
+	unsigned char is_ep: 2;
+	unsigned char no_wname_in_kcontrol_name: 1;
+	int subseq;
+	int (*power_check)(struct snd_soc_dapm_widget *);
+	unsigned short event_flags;
+	int (*event)(struct snd_soc_dapm_widget *, struct snd_kcontrol *, int);
+	int num_kcontrols;
+	const struct snd_kcontrol_new *kcontrol_news;
+	struct snd_kcontrol **kcontrols;
+	struct snd_soc_dobj dobj;
+	struct list_head edges[2];
+	struct list_head work_list;
+	struct list_head power_list;
+	struct list_head dirty;
+	int endpoints[2];
+	struct clk *clk;
+	int channel;
+};
+
+struct snd_soc_dapm_route {
+	const char *sink;
+	const char *control;
+	const char *source;
+	int (*connected)(struct snd_soc_dapm_widget *, struct snd_soc_dapm_widget *);
+	struct snd_soc_dobj dobj;
+};
+
+enum snd_soc_dpcm_update {
+	SND_SOC_DPCM_UPDATE_NO = 0,
+	SND_SOC_DPCM_UPDATE_BE = 1,
+	SND_SOC_DPCM_UPDATE_FE = 2,
+};
+
+enum snd_soc_dpcm_state {
+	SND_SOC_DPCM_STATE_NEW = 0,
+	SND_SOC_DPCM_STATE_OPEN = 1,
+	SND_SOC_DPCM_STATE_HW_PARAMS = 2,
+	SND_SOC_DPCM_STATE_PREPARE = 3,
+	SND_SOC_DPCM_STATE_START = 4,
+	SND_SOC_DPCM_STATE_STOP = 5,
+	SND_SOC_DPCM_STATE_PAUSED = 6,
+	SND_SOC_DPCM_STATE_SUSPEND = 7,
+	SND_SOC_DPCM_STATE_HW_FREE = 8,
+	SND_SOC_DPCM_STATE_CLOSE = 9,
+};
+
+struct snd_soc_dpcm_runtime {
+	struct list_head be_clients;
+	struct list_head fe_clients;
+	int users;
+	struct snd_pcm_hw_params hw_params;
+	enum snd_soc_dpcm_update runtime_update;
+	enum snd_soc_dpcm_state state;
+	int trigger_pending;
+	int be_start;
+	int be_pause;
+	bool fe_pause;
+};
+
+struct snd_soc_dai;
+
+struct snd_soc_pcm_runtime {
+	struct device *dev;
+	struct snd_soc_card *card;
+	struct snd_soc_dai_link *dai_link;
+	struct snd_pcm_ops ops;
+	unsigned int c2c_params_select;
+	struct snd_soc_dpcm_runtime dpcm[2];
+	struct snd_soc_dapm_widget *c2c_widget[2];
+	long pmdown_time;
+	struct snd_pcm *pcm;
+	struct snd_compr *compr;
+	struct snd_soc_dai **dais;
+	struct delayed_work delayed_work;
+	void (*close_delayed_work_func)(struct snd_soc_pcm_runtime *);
+	struct dentry *debugfs_dpcm_root;
+	unsigned int num;
+	struct list_head list;
+	struct snd_pcm_substream *mark_startup;
+	struct snd_pcm_substream *mark_hw_params;
+	struct snd_pcm_substream *mark_trigger;
+	struct snd_compr_stream *mark_compr_startup;
+	unsigned int pop_wait: 1;
+	unsigned int fe_compr: 1;
+	bool initialized;
+	int num_components;
+	u64 android_kabi_reserved1;
+	struct snd_soc_component *components[0];
+};
+
+enum snd_soc_dpcm_trigger {
+	SND_SOC_DPCM_TRIGGER_PRE = 0,
+	SND_SOC_DPCM_TRIGGER_POST = 1,
+	SND_SOC_DPCM_TRIGGER_BESPOKE = 2,
+};
+
+struct snd_soc_dai_link_component;
+
+struct snd_soc_dai_link_codec_ch_map;
+
+struct snd_soc_pcm_stream;
+
+struct snd_soc_ops;
+
+struct snd_soc_compr_ops;
+
+struct snd_soc_dai_link {
+	const char *name;
+	const char *stream_name;
+	struct snd_soc_dai_link_component *cpus;
+	unsigned int num_cpus;
+	struct snd_soc_dai_link_component *codecs;
+	unsigned int num_codecs;
+	struct snd_soc_dai_link_codec_ch_map *codec_ch_maps;
+	struct snd_soc_dai_link_component *platforms;
+	unsigned int num_platforms;
+	int id;
+	const struct snd_soc_pcm_stream *c2c_params;
+	unsigned int num_c2c_params;
+	unsigned int dai_fmt;
+	enum snd_soc_dpcm_trigger trigger[2];
+	int (*init)(struct snd_soc_pcm_runtime *);
+	void (*exit)(struct snd_soc_pcm_runtime *);
+	int (*be_hw_params_fixup)(struct snd_soc_pcm_runtime *, struct snd_pcm_hw_params *);
+	const struct snd_soc_ops *ops;
+	const struct snd_soc_compr_ops *compr_ops;
+	enum snd_soc_trigger_order trigger_start;
+	enum snd_soc_trigger_order trigger_stop;
+	unsigned int nonatomic: 1;
+	unsigned int playback_only: 1;
+	unsigned int capture_only: 1;
+	unsigned int ignore_suspend: 1;
+	unsigned int symmetric_rate: 1;
+	unsigned int symmetric_channels: 1;
+	unsigned int symmetric_sample_bits: 1;
+	unsigned int no_pcm: 1;
+	unsigned int dynamic: 1;
+	unsigned int dpcm_capture: 1;
+	unsigned int dpcm_playback: 1;
+	unsigned int dpcm_merged_format: 1;
+	unsigned int dpcm_merged_chan: 1;
+	unsigned int dpcm_merged_rate: 1;
+	unsigned int ignore_pmdown_time: 1;
+	unsigned int ignore: 1;
+	struct snd_soc_dobj dobj;
+	u64 android_kabi_reserved1;
+};
+
+struct snd_soc_dai_link_component {
+	const char *name;
+	struct device_node *of_node;
+	const char *dai_name;
+	struct of_phandle_args *dai_args;
+};
+
+struct snd_soc_dai_link_codec_ch_map {
+	unsigned int connected_cpu_id;
+	unsigned int ch_mask;
+};
+
+struct snd_soc_pcm_stream {
+	const char *stream_name;
+	u64 formats;
+	unsigned int rates;
+	unsigned int rate_min;
+	unsigned int rate_max;
+	unsigned int channels_min;
+	unsigned int channels_max;
+	unsigned int sig_bits;
+};
+
+struct snd_soc_ops {
+	int (*startup)(struct snd_pcm_substream *);
+	void (*shutdown)(struct snd_pcm_substream *);
+	int (*hw_params)(struct snd_pcm_substream *, struct snd_pcm_hw_params *);
+	int (*hw_free)(struct snd_pcm_substream *);
+	int (*prepare)(struct snd_pcm_substream *);
+	int (*trigger)(struct snd_pcm_substream *, int);
+};
+
+struct snd_soc_compr_ops {
+	int (*startup)(struct snd_compr_stream *);
+	void (*shutdown)(struct snd_compr_stream *);
+	int (*set_params)(struct snd_compr_stream *);
+};
+
+struct snd_soc_dai_stream {
+	struct snd_soc_dapm_widget *widget;
+	unsigned int active;
+	unsigned int tdm_mask;
+	void *dma_data;
+};
+
+struct snd_soc_dai {
+	const char *name;
+	int id;
+	struct device *dev;
+	struct snd_soc_dai_driver *driver;
+	struct snd_soc_dai_stream stream[2];
+	unsigned int rate;
+	unsigned int channels;
+	unsigned int sample_bits;
+	struct snd_soc_component *component;
+	struct list_head list;
+	struct snd_pcm_substream *mark_startup;
+	struct snd_pcm_substream *mark_hw_params;
+	struct snd_pcm_substream *mark_trigger;
+	struct snd_compr_stream *mark_compr_startup;
+	unsigned int probed: 1;
+};
+
+struct snd_soc_dai_ops;
+
+struct snd_soc_cdai_ops;
+
+struct snd_soc_dai_driver {
+	const char *name;
+	unsigned int id;
+	unsigned int base;
+	struct snd_soc_dobj dobj;
+	struct of_phandle_args *dai_args;
+	const struct snd_soc_dai_ops *ops;
+	const struct snd_soc_cdai_ops *cops;
+	struct snd_soc_pcm_stream capture;
+	struct snd_soc_pcm_stream playback;
+	unsigned int symmetric_rate: 1;
+	unsigned int symmetric_channels: 1;
+	unsigned int symmetric_sample_bits: 1;
+};
+
+struct snd_soc_dai_ops {
+	int (*probe)(struct snd_soc_dai *);
+	int (*remove)(struct snd_soc_dai *);
+	int (*compress_new)(struct snd_soc_pcm_runtime *, int);
+	int (*pcm_new)(struct snd_soc_pcm_runtime *, struct snd_soc_dai *);
+	int (*set_sysclk)(struct snd_soc_dai *, int, unsigned int, int);
+	int (*set_pll)(struct snd_soc_dai *, int, int, unsigned int, unsigned int);
+	int (*set_clkdiv)(struct snd_soc_dai *, int, int);
+	int (*set_bclk_ratio)(struct snd_soc_dai *, unsigned int);
+	int (*set_fmt)(struct snd_soc_dai *, unsigned int);
+	int (*xlate_tdm_slot_mask)(unsigned int, unsigned int *, unsigned int *);
+	int (*set_tdm_slot)(struct snd_soc_dai *, unsigned int, unsigned int, int, int);
+	int (*set_channel_map)(struct snd_soc_dai *, unsigned int, unsigned int *, unsigned int, unsigned int *);
+	int (*get_channel_map)(struct snd_soc_dai *, unsigned int *, unsigned int *, unsigned int *, unsigned int *);
+	int (*set_tristate)(struct snd_soc_dai *, int);
+	int (*set_stream)(struct snd_soc_dai *, void *, int);
+	void * (*get_stream)(struct snd_soc_dai *, int);
+	int (*mute_stream)(struct snd_soc_dai *, int, int);
+	int (*startup)(struct snd_pcm_substream *, struct snd_soc_dai *);
+	void (*shutdown)(struct snd_pcm_substream *, struct snd_soc_dai *);
+	int (*hw_params)(struct snd_pcm_substream *, struct snd_pcm_hw_params *, struct snd_soc_dai *);
+	int (*hw_free)(struct snd_pcm_substream *, struct snd_soc_dai *);
+	int (*prepare)(struct snd_pcm_substream *, struct snd_soc_dai *);
+	int (*trigger)(struct snd_pcm_substream *, int, struct snd_soc_dai *);
+	int (*bespoke_trigger)(struct snd_pcm_substream *, int, struct snd_soc_dai *);
+	snd_pcm_sframes_t (*delay)(struct snd_pcm_substream *, struct snd_soc_dai *);
+	u64 *auto_selectable_formats;
+	int num_auto_selectable_formats;
+	int probe_order;
+	int remove_order;
+	unsigned int no_capture_mute: 1;
+	unsigned int mute_unmute_on_trigger: 1;
+};
+
+struct snd_soc_cdai_ops {
+	int (*startup)(struct snd_compr_stream *, struct snd_soc_dai *);
+	int (*shutdown)(struct snd_compr_stream *, struct snd_soc_dai *);
+	int (*set_params)(struct snd_compr_stream *, struct snd_compr_params *, struct snd_soc_dai *);
+	int (*get_params)(struct snd_compr_stream *, struct snd_codec *, struct snd_soc_dai *);
+	int (*set_metadata)(struct snd_compr_stream *, struct snd_compr_metadata *, struct snd_soc_dai *);
+	int (*get_metadata)(struct snd_compr_stream *, struct snd_compr_metadata *, struct snd_soc_dai *);
+	int (*trigger)(struct snd_compr_stream *, int, struct snd_soc_dai *);
+	int (*pointer)(struct snd_compr_stream *, struct snd_compr_tstamp *, struct snd_soc_dai *);
+	int (*ack)(struct snd_compr_stream *, size_t, struct snd_soc_dai *);
+};
+
+struct snd_soc_jack {
+	struct mutex mutex;
+	struct snd_jack *jack;
+	struct snd_soc_card *card;
+	struct list_head pins;
+	int status;
+	struct blocking_notifier_head notifier;
+	struct list_head jack_zones;
+};
+
+struct snd_compress_ops {
+	int (*open)(struct snd_soc_component *, struct snd_compr_stream *);
+	int (*free)(struct snd_soc_component *, struct snd_compr_stream *);
+	int (*set_params)(struct snd_soc_component *, struct snd_compr_stream *, struct snd_compr_params *);
+	int (*get_params)(struct snd_soc_component *, struct snd_compr_stream *, struct snd_codec *);
+	int (*set_metadata)(struct snd_soc_component *, struct snd_compr_stream *, struct snd_compr_metadata *);
+	int (*get_metadata)(struct snd_soc_component *, struct snd_compr_stream *, struct snd_compr_metadata *);
+	int (*trigger)(struct snd_soc_component *, struct snd_compr_stream *, int);
+	int (*pointer)(struct snd_soc_component *, struct snd_compr_stream *, struct snd_compr_tstamp *);
+	int (*copy)(struct snd_soc_component *, struct snd_compr_stream *, char __attribute__((btf_type_tag("user"))) *, size_t);
+	int (*mmap)(struct snd_soc_component *, struct snd_compr_stream *, struct vm_area_struct *);
+	int (*ack)(struct snd_soc_component *, struct snd_compr_stream *, size_t);
+	int (*get_caps)(struct snd_soc_component *, struct snd_compr_stream *, struct snd_compr_caps *);
+	int (*get_codec_caps)(struct snd_soc_component *, struct snd_compr_stream *, struct snd_compr_codec_caps *);
+};
+
+struct snd_soc_codec_conf {
+	struct snd_soc_dai_link_component dlc;
+	const char *name_prefix;
+};
+
+struct snd_soc_aux_dev {
+	struct snd_soc_dai_link_component dlc;
+	int (*init)(struct snd_soc_component *);
+};
+
+struct snd_soc_dapm_update {
+	struct snd_kcontrol *kcontrol;
+	int reg;
+	int mask;
+	int val;
+	int reg2;
+	int mask2;
+	int val2;
+	bool has_second_set;
+};
+
+typedef void (*btf_trace_snd_soc_bias_level_done)(void *, struct snd_soc_card *, int);
+
+typedef void (*btf_trace_snd_soc_dapm_start)(void *, struct snd_soc_card *);
+
+typedef void (*btf_trace_snd_soc_dapm_done)(void *, struct snd_soc_card *);
+
+typedef void (*btf_trace_snd_soc_dapm_widget_power)(void *, struct snd_soc_dapm_widget *, int);
+
+typedef void (*btf_trace_snd_soc_dapm_widget_event_start)(void *, struct snd_soc_dapm_widget *, int);
+
+typedef void (*btf_trace_snd_soc_dapm_widget_event_done)(void *, struct snd_soc_dapm_widget *, int);
+
+typedef void (*btf_trace_snd_soc_dapm_walk_done)(void *, struct snd_soc_card *);
+
+enum snd_soc_dapm_direction {
+	SND_SOC_DAPM_DIR_IN = 0,
+	SND_SOC_DAPM_DIR_OUT = 1,
+};
+
+struct snd_soc_dapm_path;
+
+typedef void (*btf_trace_snd_soc_dapm_path)(void *, struct snd_soc_dapm_widget *, enum snd_soc_dapm_direction, struct snd_soc_dapm_path *);
+
+struct snd_soc_dapm_path {
+	const char *name;
+	union {
+		struct {
+			struct snd_soc_dapm_widget *source;
+			struct snd_soc_dapm_widget *sink;
+		};
+		struct snd_soc_dapm_widget *node[2];
+	};
+	u32 connect: 1;
+	u32 walking: 1;
+	u32 weak: 1;
+	u32 is_supply: 1;
+	int (*connected)(struct snd_soc_dapm_widget *, struct snd_soc_dapm_widget *);
+	struct list_head list_node[2];
+	struct list_head list_kcontrol;
+	struct list_head list;
+};
+
+typedef void (*btf_trace_snd_soc_dapm_connected)(void *, int, int);
+
+typedef void (*btf_trace_snd_soc_jack_irq)(void *, const char *);
+
+typedef void (*btf_trace_snd_soc_jack_report)(void *, struct snd_soc_jack *, int, int);
+
+typedef void (*btf_trace_snd_soc_jack_notify)(void *, struct snd_soc_jack *, int);
+
+struct trace_event_raw_snd_soc_card {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	int val;
+	char __data[0];
+};
+
+struct trace_event_raw_snd_soc_dapm_basic {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	char __data[0];
+};
+
+struct trace_event_raw_snd_soc_dapm_widget {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	int val;
+	char __data[0];
+};
+
+struct trace_event_raw_snd_soc_dapm_walk_done {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	int power_checks;
+	int path_checks;
+	int neighbour_checks;
+	char __data[0];
+};
+
+struct trace_event_raw_snd_soc_dapm_path {
+	struct trace_entry ent;
+	u32 __data_loc_wname;
+	u32 __data_loc_pname;
+	u32 __data_loc_pnname;
+	int path_node;
+	int path_connect;
+	int path_dir;
+	char __data[0];
+};
+
+struct trace_event_raw_snd_soc_dapm_connected {
+	struct trace_entry ent;
+	int paths;
+	int stream;
+	char __data[0];
+};
+
+struct trace_event_raw_snd_soc_jack_irq {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	char __data[0];
+};
+
+struct trace_event_raw_snd_soc_jack_report {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	int mask;
+	int val;
+	char __data[0];
+};
+
+struct trace_event_raw_snd_soc_jack_notify {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	int val;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_snd_soc_card {
+	u32 name;
+};
+
+struct trace_event_data_offsets_snd_soc_dapm_basic {
+	u32 name;
+};
+
+struct trace_event_data_offsets_snd_soc_dapm_widget {
+	u32 name;
+};
+
+struct trace_event_data_offsets_snd_soc_dapm_walk_done {
+	u32 name;
+};
+
+struct trace_event_data_offsets_snd_soc_jack_irq {
+	u32 name;
+};
+
+struct trace_event_data_offsets_snd_soc_jack_report {
+	u32 name;
+};
+
+struct trace_event_data_offsets_snd_soc_jack_notify {
+	u32 name;
+};
+
+struct trace_event_data_offsets_snd_soc_dapm_path {
+	u32 wname;
+	u32 pname;
+	u32 pnname;
+};
+
+struct trace_event_data_offsets_snd_soc_dapm_connected {};
+
+struct soc_mixer_control {
+	int min;
+	int max;
+	int platform_max;
+	int reg;
+	int rreg;
+	unsigned int shift;
+	unsigned int rshift;
+	unsigned int sign_bit;
+	unsigned int invert: 1;
+	unsigned int autodisable: 1;
+	struct snd_soc_dobj dobj;
+	u64 android_kabi_reserved1;
+};
+
+struct soc_enum {
+	int reg;
+	unsigned char shift_l;
+	unsigned char shift_r;
+	unsigned int items;
+	unsigned int mask;
+	const char * const *texts;
+	const unsigned int *values;
+	unsigned int autodisable: 1;
+	struct snd_soc_dobj dobj;
+	u64 android_kabi_reserved1;
+};
+
+struct snd_soc_dapm_widget_list {
+	int num_widgets;
+	struct snd_soc_dapm_widget *widgets[0];
+};
+
+struct dapm_kcontrol_data {
+	unsigned int value;
+	struct snd_soc_dapm_widget *widget;
+	struct list_head paths;
+	struct snd_soc_dapm_widget_list *wlist;
+};
+
+struct snd_soc_dapm_pinctrl_priv {
+	const char *active_state;
+	const char *sleep_state;
+};
+
+struct snd_soc_jack_pin {
+	struct list_head list;
+	const char *pin;
+	int mask;
+	bool invert;
+};
+
+struct snd_soc_jack_zone {
+	unsigned int min_mv;
+	unsigned int max_mv;
+	unsigned int jack_type;
+	unsigned int debounce_time;
+	struct list_head list;
+};
+
+struct snd_soc_jack_gpio {
+	unsigned int gpio;
+	unsigned int idx;
+	struct device *gpiod_dev;
+	const char *name;
+	int report;
+	int invert;
+	int debounce_time;
+	bool wake;
+	struct snd_soc_jack *jack;
+	struct delayed_work work;
+	struct notifier_block pm_notifier;
+	struct gpio_desc *desc;
+	void *data;
+	int (*jack_status_check)(void *);
+};
+
+struct jack_gpio_tbl {
+	int count;
+	struct snd_soc_jack *jack;
+	struct snd_soc_jack_gpio *gpios;
+};
+
+enum snd_soc_dpcm_link_state {
+	SND_SOC_DPCM_LINK_STATE_NEW = 0,
+	SND_SOC_DPCM_LINK_STATE_FREE = 1,
+};
+
+struct snd_soc_dpcm {
+	struct snd_soc_pcm_runtime *be;
+	struct snd_soc_pcm_runtime *fe;
+	enum snd_soc_dpcm_link_state state;
+	struct list_head list_be;
+	struct list_head list_fe;
+	struct dentry *debugfs_state;
+};
+
+struct snd_dmaengine_pcm_config {
+	int (*prepare_slave_config)(struct snd_pcm_substream *, struct snd_pcm_hw_params *, struct dma_slave_config *);
+	struct dma_chan___2 * (*compat_request_channel)(struct snd_soc_pcm_runtime *, struct snd_pcm_substream *);
+	int (*process)(struct snd_pcm_substream *, int, unsigned long, unsigned long);
+	dma_filter_fn compat_filter_fn;
+	struct device *dma_dev;
+	const char *chan_names[2];
+	const struct snd_pcm_hardware *pcm_hardware;
+	unsigned int prealloc_buffer_size;
+};
+
+struct soc_mreg_control {
+	long min;
+	long max;
+	unsigned int regbase;
+	unsigned int regcount;
+	unsigned int nbits;
+	unsigned int invert;
+};
+
+struct soc_bytes {
+	int base;
+	int num_regs;
+	u32 mask;
+};
+
+struct soc_bytes_ext {
+	int max;
+	struct snd_soc_dobj dobj;
+	int (*get)(struct snd_kcontrol *, unsigned int __attribute__((btf_type_tag("user"))) *, unsigned int);
+	int (*put)(struct snd_kcontrol *, const unsigned int __attribute__((btf_type_tag("user"))) *, unsigned int);
+};
+
+struct snd_soc_tplg_kcontrol_ops {
+	u32 id;
+	int (*get)(struct snd_kcontrol *, struct snd_ctl_elem_value *);
+	int (*put)(struct snd_kcontrol *, struct snd_ctl_elem_value *);
+	int (*info)(struct snd_kcontrol *, struct snd_ctl_elem_info *);
+};
+
+struct soc_tplg_map {
+	int uid;
+	int kid;
+};
+
+struct snd_soc_tplg_hdr {
+	__le32 magic;
+	__le32 abi;
+	__le32 version;
+	__le32 type;
+	__le32 size;
+	__le32 vendor_type;
+	__le32 payload_size;
+	__le32 index;
+	__le32 count;
+};
+
+struct snd_soc_tplg_io_ops {
+	__le32 get;
+	__le32 put;
+	__le32 info;
+};
+
+struct snd_soc_tplg_tlv_dbscale {
+	__le32 min;
+	__le32 step;
+	__le32 mute;
+};
+
+struct snd_soc_tplg_ctl_tlv {
+	__le32 size;
+	__le32 type;
+	union {
+		__le32 data[32];
+		struct snd_soc_tplg_tlv_dbscale scale;
+	};
+};
+
+struct snd_soc_tplg_ctl_hdr {
+	__le32 size;
+	__le32 type;
+	char name[44];
+	__le32 access;
+	struct snd_soc_tplg_io_ops ops;
+	struct snd_soc_tplg_ctl_tlv tlv;
+};
+
+struct snd_soc_tplg_channel {
+	__le32 size;
+	__le32 reg;
+	__le32 shift;
+	__le32 id;
+};
+
+struct snd_soc_tplg_vendor_uuid_elem {
+	__le32 token;
+	char uuid[16];
+};
+
+struct snd_soc_tplg_vendor_value_elem {
+	__le32 token;
+	__le32 value;
+};
+
+struct snd_soc_tplg_vendor_string_elem {
+	__le32 token;
+	char string[44];
+};
+
+struct snd_soc_tplg_vendor_array {
+	__le32 size;
+	__le32 type;
+	__le32 num_elems;
+	union {
+		struct {
+			struct {} __empty_uuid;
+			struct snd_soc_tplg_vendor_uuid_elem uuid[0];
+		};
+		struct {
+			struct {} __empty_value;
+			struct snd_soc_tplg_vendor_value_elem value[0];
+		};
+		struct {
+			struct {} __empty_string;
+			struct snd_soc_tplg_vendor_string_elem string[0];
+		};
+	};
+};
+
+struct snd_soc_tplg_private {
+	__le32 size;
+	union {
+		struct {
+			struct {} __empty_data;
+			char data[0];
+		};
+		struct {
+			struct {} __empty_array;
+			struct snd_soc_tplg_vendor_array array[0];
+		};
+	};
+};
+
+struct snd_soc_tplg_mixer_control {
+	struct snd_soc_tplg_ctl_hdr hdr;
+	__le32 size;
+	__le32 min;
+	__le32 max;
+	__le32 platform_max;
+	__le32 invert;
+	__le32 num_channels;
+	struct snd_soc_tplg_channel channel[8];
+	struct snd_soc_tplg_private priv;
+};
+
+struct snd_soc_tplg_bytes_control {
+	struct snd_soc_tplg_ctl_hdr hdr;
+	__le32 size;
+	__le32 max;
+	__le32 mask;
+	__le32 base;
+	__le32 num_regs;
+	struct snd_soc_tplg_io_ops ext_ops;
+	struct snd_soc_tplg_private priv;
+};
+
+struct snd_soc_tplg_enum_control {
+	struct snd_soc_tplg_ctl_hdr hdr;
+	__le32 size;
+	__le32 num_channels;
+	struct snd_soc_tplg_channel channel[8];
+	__le32 items;
+	__le32 mask;
+	__le32 count;
+	char texts[704];
+	__le32 values[176];
+	struct snd_soc_tplg_private priv;
+};
+
+struct snd_soc_tplg_dapm_graph_elem {
+	char sink[44];
+	char control[44];
+	char source[44];
+};
+
+struct snd_soc_tplg_dapm_widget {
+	__le32 size;
+	__le32 id;
+	char name[44];
+	char sname[44];
+	__le32 reg;
+	__le32 shift;
+	__le32 mask;
+	__le32 subseq;
+	__le32 invert;
+	__le32 ignore_suspend;
+	__le16 event_flags;
+	__le16 event_type;
+	__le32 num_kcontrols;
+	struct snd_soc_tplg_private priv;
+};
+
+struct snd_soc_tplg_stream {
+	__le32 size;
+	char name[44];
+	__le64 format;
+	__le32 rate;
+	__le32 period_bytes;
+	__le32 buffer_bytes;
+	__le32 channels;
+};
+
+struct snd_soc_tplg_stream_caps {
+	__le32 size;
+	char name[44];
+	__le64 formats;
+	__le32 rates;
+	__le32 rate_min;
+	__le32 rate_max;
+	__le32 channels_min;
+	__le32 channels_max;
+	__le32 periods_min;
+	__le32 periods_max;
+	__le32 period_size_min;
+	__le32 period_size_max;
+	__le32 buffer_size_min;
+	__le32 buffer_size_max;
+	__le32 sig_bits;
+};
+
+struct snd_soc_tplg_pcm {
+	__le32 size;
+	char pcm_name[44];
+	char dai_name[44];
+	__le32 pcm_id;
+	__le32 dai_id;
+	__le32 playback;
+	__le32 capture;
+	__le32 compress;
+	struct snd_soc_tplg_stream stream[8];
+	__le32 num_streams;
+	struct snd_soc_tplg_stream_caps caps[2];
+	__le32 flag_mask;
+	__le32 flags;
+	struct snd_soc_tplg_private priv;
+} __attribute__((packed));
+
+struct snd_soc_tplg_stream_caps_v4 {
+	__le32 size;
+	char name[44];
+	__le64 formats;
+	__le32 rates;
+	__le32 rate_min;
+	__le32 rate_max;
+	__le32 channels_min;
+	__le32 channels_max;
+	__le32 periods_min;
+	__le32 periods_max;
+	__le32 period_size_min;
+	__le32 period_size_max;
+	__le32 buffer_size_min;
+	__le32 buffer_size_max;
+} __attribute__((packed));
+
+struct snd_soc_tplg_pcm_v4 {
+	__le32 size;
+	char pcm_name[44];
+	char dai_name[44];
+	__le32 pcm_id;
+	__le32 dai_id;
+	__le32 playback;
+	__le32 capture;
+	__le32 compress;
+	struct snd_soc_tplg_stream stream[8];
+	__le32 num_streams;
+	struct snd_soc_tplg_stream_caps_v4 caps[2];
+} __attribute__((packed));
+
+struct snd_soc_tplg_dai {
+	__le32 size;
+	char dai_name[44];
+	__le32 dai_id;
+	__le32 playback;
+	__le32 capture;
+	struct snd_soc_tplg_stream_caps caps[2];
+	__le32 flag_mask;
+	__le32 flags;
+	struct snd_soc_tplg_private priv;
+} __attribute__((packed));
+
+struct snd_soc_tplg_hw_config {
+	__le32 size;
+	__le32 id;
+	__le32 fmt;
+	__u8 clock_gated;
+	__u8 invert_bclk;
+	__u8 invert_fsync;
+	__u8 bclk_provider;
+	__u8 fsync_provider;
+	__u8 mclk_direction;
+	__le16 reserved;
+	__le32 mclk_rate;
+	__le32 bclk_rate;
+	__le32 fsync_rate;
+	__le32 tdm_slots;
+	__le32 tdm_slot_width;
+	__le32 tx_slots;
+	__le32 rx_slots;
+	__le32 tx_channels;
+	__le32 tx_chanmap[8];
+	__le32 rx_channels;
+	__le32 rx_chanmap[8];
+};
+
+struct snd_soc_tplg_link_config {
+	__le32 size;
+	__le32 id;
+	char name[44];
+	char stream_name[44];
+	struct snd_soc_tplg_stream stream[8];
+	__le32 num_streams;
+	struct snd_soc_tplg_hw_config hw_config[8];
+	__le32 num_hw_configs;
+	__le32 default_hw_config_id;
+	__le32 flag_mask;
+	__le32 flags;
+	struct snd_soc_tplg_private priv;
+};
+
+struct snd_soc_tplg_link_config_v4 {
+	__le32 size;
+	__le32 id;
+	struct snd_soc_tplg_stream stream[8];
+	__le32 num_streams;
+} __attribute__((packed));
+
+struct snd_soc_tplg_manifest {
+	__le32 size;
+	__le32 control_elems;
+	__le32 widget_elems;
+	__le32 graph_elems;
+	__le32 pcm_elems;
+	__le32 dai_link_elems;
+	__le32 dai_elems;
+	__le32 reserved[20];
+	struct snd_soc_tplg_private priv;
+};
+
+struct snd_soc_tplg_manifest_v4 {
+	__le32 size;
+	__le32 control_elems;
+	__le32 widget_elems;
+	__le32 graph_elems;
+	__le32 pcm_elems;
+	__le32 dai_link_elems;
+	struct snd_soc_tplg_private priv;
+};
+
+struct snd_soc_tplg_bytes_ext_ops;
+
+struct snd_soc_tplg_ops;
+
+struct soc_tplg {
+	const struct firmware *fw;
+	const u8 *pos;
+	const u8 *hdr_pos;
+	unsigned int pass;
+	struct device *dev;
+	struct snd_soc_component *comp;
+	u32 index;
+	const struct snd_soc_tplg_kcontrol_ops *io_ops;
+	int io_ops_count;
+	const struct snd_soc_tplg_bytes_ext_ops *bytes_ext_ops;
+	int bytes_ext_ops_count;
+	struct snd_soc_tplg_ops *ops;
+};
+
+struct snd_soc_tplg_bytes_ext_ops {
+	u32 id;
+	int (*get)(struct snd_kcontrol *, unsigned int __attribute__((btf_type_tag("user"))) *, unsigned int);
+	int (*put)(struct snd_kcontrol *, const unsigned int __attribute__((btf_type_tag("user"))) *, unsigned int);
+};
+
+struct snd_soc_tplg_ops {
+	int (*control_load)(struct snd_soc_component *, int, struct snd_kcontrol_new *, struct snd_soc_tplg_ctl_hdr *);
+	int (*control_unload)(struct snd_soc_component *, struct snd_soc_dobj *);
+	int (*dapm_route_load)(struct snd_soc_component *, int, struct snd_soc_dapm_route *);
+	int (*dapm_route_unload)(struct snd_soc_component *, struct snd_soc_dobj *);
+	int (*widget_load)(struct snd_soc_component *, int, struct snd_soc_dapm_widget *, struct snd_soc_tplg_dapm_widget *);
+	int (*widget_ready)(struct snd_soc_component *, int, struct snd_soc_dapm_widget *, struct snd_soc_tplg_dapm_widget *);
+	int (*widget_unload)(struct snd_soc_component *, struct snd_soc_dobj *);
+	int (*dai_load)(struct snd_soc_component *, int, struct snd_soc_dai_driver *, struct snd_soc_tplg_pcm *, struct snd_soc_dai *);
+	int (*dai_unload)(struct snd_soc_component *, struct snd_soc_dobj *);
+	int (*link_load)(struct snd_soc_component *, int, struct snd_soc_dai_link *, struct snd_soc_tplg_link_config *);
+	int (*link_unload)(struct snd_soc_component *, struct snd_soc_dobj *);
+	int (*vendor_load)(struct snd_soc_component *, int, struct snd_soc_tplg_hdr *);
+	int (*vendor_unload)(struct snd_soc_component *, struct snd_soc_tplg_hdr *);
+	int (*complete)(struct snd_soc_component *);
+	int (*manifest)(struct snd_soc_component *, int, struct snd_soc_tplg_manifest *);
+	const struct snd_soc_tplg_kcontrol_ops *io_ops;
+	int io_ops_count;
+	const struct snd_soc_tplg_bytes_ext_ops *bytes_ext_ops;
+	int bytes_ext_ops_count;
+};
+
+struct snd_soc_tplg_widget_events {
+	u16 type;
+	int (*event_handler)(struct snd_soc_dapm_widget *, struct snd_kcontrol *, int);
+};
+
+struct dmaengine_pcm {
+	struct dma_chan___2 *chan[2];
+	const struct snd_dmaengine_pcm_config *config;
+	struct snd_soc_component component;
+	unsigned int flags;
+};
+
+struct skl_machine_pdata {
+	bool use_tplg_pcm;
+};
+
+enum {
+	APL_RVP = 0,
+};
+
+struct sst_ops;
+
+struct compress_sst_ops;
+
+struct sst_device {
+	char *name;
+	struct device *dev;
+	struct sst_ops *ops;
+	struct platform_device *pdev;
+	struct compress_sst_ops *compr_ops;
+};
+
+struct snd_sst_params;
+
+struct pcm_stream_info;
+
+struct snd_sst_bytes_v2;
+
+struct sst_ops {
+	int (*open)(struct device *, struct snd_sst_params *);
+	int (*stream_init)(struct device *, struct pcm_stream_info *);
+	int (*stream_start)(struct device *, int);
+	int (*stream_drop)(struct device *, int);
+	int (*stream_pause)(struct device *, int);
+	int (*stream_pause_release)(struct device *, int);
+	int (*stream_read_tstamp)(struct device *, struct pcm_stream_info *);
+	int (*send_byte_stream)(struct device *, struct snd_sst_bytes_v2 *);
+	int (*close)(struct device *, unsigned int);
+	int (*power)(struct device *, bool);
+};
+
+struct snd_pcm_params {
+	u8 num_chan;
+	u8 pcm_wd_sz;
+	u8 use_offload_path;
+	u8 reserved2;
+	u32 sfreq;
+	u8 channel_map[8];
+};
+
+struct snd_mp3_params {
+	u8 num_chan;
+	u8 pcm_wd_sz;
+	u8 crc_check;
+	u8 reserved1;
+	u16 reserved2;
+};
+
+struct snd_aac_params {
+	u8 num_chan;
+	u8 pcm_wd_sz;
+	u8 bdownsample;
+	u8 bs_format;
+	u16 reser2;
+	u32 externalsr;
+	u8 sbr_signalling;
+	u8 reser1;
+	u16 reser3;
+} __attribute__((packed));
+
+struct snd_wma_params {
+	u8 num_chan;
+	u8 pcm_wd_sz;
+	u16 reserved1;
+	u32 brate;
+	u32 sfreq;
+	u32 channel_mask;
+	u16 format_tag;
+	u16 block_align;
+	u16 wma_encode_opt;
+	u8 op_align;
+	u8 reserved;
+};
+
+union snd_sst_codec_params {
+	struct snd_pcm_params pcm_params;
+	struct snd_mp3_params mp3_params;
+	struct snd_aac_params aac_params;
+	struct snd_wma_params wma_params;
+};
+
+struct snd_sst_stream_params {
+	union snd_sst_codec_params uc;
+};
+
+struct sst_address_info {
+	u32 addr;
+	u32 size;
+};
+
+struct snd_sst_alloc_params_ext {
+	__u16 sg_count;
+	__u16 reserved;
+	__u32 frag_size;
+	struct sst_address_info ring_buf_info[8];
+};
+
+struct snd_sst_params {
+	u32 result;
+	u32 stream_id;
+	u8 codec;
+	u8 ops;
+	u8 stream_type;
+	u8 device_type;
+	u8 task;
+	struct snd_sst_stream_params sparams;
+	long: 0;
+	struct snd_sst_alloc_params_ext aparams;
+} __attribute__((packed));
+
+struct pcm_stream_info {
+	int str_id;
+	void *arg;
+	void (*period_elapsed)(void *);
+	unsigned long long buffer_ptr;
+	unsigned long long pcm_delay;
+	int sfreq;
+};
+
+struct snd_sst_bytes_v2 {
+	u8 type;
+	u8 ipc_msg;
+	u8 block;
+	u8 task_id;
+	u8 pipe_id;
+	u8 rsvd;
+	u16 len;
+	char bytes[0];
+};
+
+struct sst_compress_cb;
+
+struct compress_sst_ops {
+	const char *name;
+	int (*open)(struct device *, struct snd_sst_params *, struct sst_compress_cb *);
+	int (*stream_start)(struct device *, unsigned int);
+	int (*stream_drop)(struct device *, unsigned int);
+	int (*stream_drain)(struct device *, unsigned int);
+	int (*stream_partial_drain)(struct device *, unsigned int);
+	int (*stream_pause)(struct device *, unsigned int);
+	int (*stream_pause_release)(struct device *, unsigned int);
+	int (*tstamp)(struct device *, unsigned int, struct snd_compr_tstamp *);
+	int (*ack)(struct device *, unsigned int, unsigned long);
+	int (*close)(struct device *, unsigned int);
+	int (*get_caps)(struct snd_compr_caps *);
+	int (*get_codec_caps)(struct snd_compr_codec_caps *);
+	int (*set_metadata)(struct device *, unsigned int, struct snd_compr_metadata *);
+	int (*power)(struct device *, bool);
+};
+
+struct sst_compress_cb {
+	void *param;
+	void (*compr_cb)(void *);
+	void *drain_cb_param;
+	void (*drain_notify)(void *);
+};
+
+struct sst_dev_stream_map {
+	u8 dev_num;
+	u8 subdev_num;
+	u8 direction;
+	u8 device_id;
+	u8 task_id;
+	u8 status;
+};
+
+enum stream_type {
+	SST_STREAM_TYPE_NONE = 0,
+	SST_STREAM_TYPE_MUSIC = 1,
+};
+
+enum sst_drv_status {
+	SST_PLATFORM_INIT = 1,
+	SST_PLATFORM_STARTED = 2,
+	SST_PLATFORM_RUNNING = 3,
+	SST_PLATFORM_PAUSED = 4,
+	SST_PLATFORM_DROPPED = 5,
+};
+
+enum sst_codec_types {
+	SST_CODEC_TYPE_UNKNOWN = 0,
+	SST_CODEC_TYPE_PCM = 1,
+	SST_CODEC_TYPE_MP3 = 2,
+	SST_CODEC_TYPE_MP24 = 3,
+	SST_CODEC_TYPE_AAC = 4,
+	SST_CODEC_TYPE_AACP = 5,
+	SST_CODEC_TYPE_eAACP = 6,
+};
+
+struct sst_runtime_stream {
+	int stream_status;
+	unsigned int id;
+	size_t bytes_written;
+	struct pcm_stream_info stream_info;
+	struct sst_ops *ops;
+	struct compress_sst_ops *compr_ops;
+	spinlock_t status_lock;
+};
+
+union sst_location_id {
+	struct {
+		u8 cell_nbr_idx;
+		u8 path_id;
+	} p;
+	u16 f;
+};
+
+struct sst_destination_id {
+	union sst_location_id location_id;
+	u16 module_id;
+};
+
+struct sst_dsp_header {
+	struct sst_destination_id dst;
+	u16 command_id;
+	u16 length;
+};
+
+struct sst_cmd_sba_hw_set_ssp {
+	struct sst_dsp_header header;
+	u16 selection;
+	u16 switch_state;
+	u16 nb_bits_per_slots: 6;
+	u16 nb_slots: 4;
+	u16 mode: 3;
+	u16 duplex: 3;
+	u16 active_tx_slot_map: 8;
+	u16 reserved1: 8;
+	u16 active_rx_slot_map: 8;
+	u16 reserved2: 8;
+	u16 frame_sync_frequency;
+	u16 frame_sync_polarity: 8;
+	u16 data_polarity: 8;
+	u16 frame_sync_width;
+	u16 ssp_protocol: 8;
+	u16 start_delay: 8;
+};
+
+struct sst_platform_data;
+
+struct sst_data {
+	struct platform_device *pdev;
+	struct sst_platform_data *pdata;
+	struct snd_sst_bytes_v2 *byte_stream;
+	struct mutex lock;
+	struct snd_soc_card *soc_card;
+	struct sst_cmd_sba_hw_set_ssp ssp_cmd;
+};
+
+struct sst_platform_data {
+	struct sst_dev_stream_map *pdev_strm_map;
+	unsigned int strm_map_size;
+};
+
+struct sst_gain_value {
+	u16 ramp_duration;
+	s16 l_gain;
+	s16 r_gain;
+	bool mute;
+};
+
+struct sst_ssp_config {
+	u8 ssp_id;
+	u8 bits_per_slot;
+	u8 slots;
+	u8 ssp_mode;
+	u8 pcm_mode;
+	u8 duplex;
+	u8 ssp_protocol;
+	u8 fs_frequency;
+	u8 active_slot_map;
+	u8 start_delay;
+	u16 fs_width;
+	u8 frame_sync_polarity;
+	u8 data_polarity;
+};
+
+enum sst_cmd {
+	SBA_IDLE = 14,
+	SBA_VB_SET_SPEECH_PATH = 26,
+	MMX_SET_GAIN = 33,
+	SBA_VB_SET_GAIN = 33,
+	FBA_VB_RX_CNI = 35,
+	MMX_SET_GAIN_TIMECONST = 36,
+	SBA_VB_SET_TIMECONST = 36,
+	SBA_VB_START = 85,
+	SBA_SET_SWM = 114,
+	SBA_SET_MDRP = 116,
+	SBA_HW_SET_SSP = 117,
+	SBA_SET_MEDIA_LOOP_MAP = 118,
+	SBA_SET_MEDIA_PATH = 119,
+	MMX_SET_MEDIA_PATH = 119,
+	SBA_VB_LPRO = 126,
+	SBA_VB_SET_FIR = 128,
+	SBA_VB_SET_IIR = 129,
+	SBA_SET_SSP_SLOT_MAP = 130,
+};
+
+enum sst_ipc_msg {
+	SST_IPC_IA_CMD = 1,
+	SST_IPC_IA_SET_PARAMS = 2,
+	SST_IPC_IA_GET_PARAMS = 3,
+};
+
+enum sst_flag {
+	SST_FLAG_BLOCKED = 1,
+	SST_FLAG_NONBLOCK = 2,
+};
+
+enum sst_task {
+	SST_TASK_SBA = 1,
+	SST_TASK_MMX = 3,
+};
+
+enum sst_ssp_protocol {
+	SSP_MODE_PCM = 0,
+	SSP_MODE_I2S = 1,
+};
+
+enum sst_ssp_pcm_mode {
+	SSP_PCM_MODE_NORMAL = 0,
+	SSP_PCM_MODE_NETWORK = 1,
+};
+
+enum sst_ssp_port_id {
+	SSP_MODEM = 0,
+	SSP_BT = 1,
+	SSP_FM = 2,
+	SSP_CODEC = 3,
+};
+
+enum sst_dsp_switch {
+	SST_SWITCH_OFF = 0,
+	SST_SWITCH_ON = 3,
+};
+
+enum sst_cmd_type {
+	SST_CMD_BYTES_SET = 1,
+	SST_CMD_BYTES_GET = 2,
+};
+
+enum sst_ssp_mode {
+	SSP_MODE_PROVIDER = 0,
+	SSP_MODE_CONSUMER = 1,
+};
+
+enum sst_ssp_fs_polarity {
+	SSP_FS_ACTIVE_LOW = 0,
+	SSP_FS_ACTIVE_HIGH = 1,
+};
+
+enum sst_gain_kcontrol_type {
+	SST_GAIN_TLV = 0,
+	SST_GAIN_MUTE = 1,
+	SST_GAIN_RAMP_DURATION = 2,
+};
+
+enum sst_algo_kcontrol_type {
+	SST_ALGO_PARAMS = 0,
+	SST_ALGO_BYPASS = 1,
+};
+
+enum sst_path_switch {
+	SST_PATH_OFF = 0,
+	SST_PATH_ON = 1,
+};
+
+enum sst_swm_state {
+	SST_SWM_OFF = 0,
+	SST_SWM_ON = 3,
+};
+
+struct sst_module {
+	struct snd_kcontrol *kctl;
+	struct list_head node;
+};
+
+struct sst_algo_control {
+	enum sst_algo_kcontrol_type type;
+	int max;
+	u16 module_id;
+	u16 pipe_id;
+	u16 task_id;
+	u16 cmd_id;
+	bool bypass;
+	unsigned char *params;
+	struct snd_soc_dapm_widget *w;
+};
+
+struct sst_enum {
+	bool tx;
+	unsigned short reg;
+	unsigned int max;
+	const char * const *texts;
+	struct snd_soc_dapm_widget *w;
+};
+
+struct sst_pcm_format;
+
+struct sst_ids {
+	u16 location_id;
+	u16 module_id;
+	u8 task_id;
+	u8 format;
+	u8 reg;
+	const char *parent_wname;
+	struct snd_soc_dapm_widget *parent_w;
+	struct list_head algo_list;
+	struct list_head gain_list;
+	const struct sst_pcm_format *pcm_fmt;
+};
+
+struct sst_gain_mixer_control {
+	bool stereo;
+	enum sst_gain_kcontrol_type type;
+	struct sst_gain_value *gain_val;
+	int max;
+	int min;
+	u16 instance_id;
+	u16 module_id;
+	u16 pipe_id;
+	u16 task_id;
+	char pname[44];
+	struct snd_soc_dapm_widget *w;
+};
+
+struct swm_input_ids {
+	struct sst_destination_id input_id;
+};
+
+struct gain_cell {
+	struct sst_destination_id dest;
+	s16 cell_gain_left;
+	s16 cell_gain_right;
+	u16 gain_time_constant;
+};
+
+struct sst_cmd_set_gain_dual {
+	struct sst_dsp_header header;
+	u16 gain_cell_num;
+	struct gain_cell cell_gains[1];
+};
+
+struct sst_cmd_generic {
+	struct sst_dsp_header header;
+};
+
+struct sst_cmd_set_media_path {
+	struct sst_dsp_header header;
+	u16 switch_state;
+};
+
+struct pcm_cfg {
+	u8 s_length: 2;
+	u8 rate: 3;
+	u8 format: 3;
+};
+
+union sba_media_loop_params {
+	struct {
+		u16 rsvd: 8;
+		struct pcm_cfg cfg;
+	} part;
+	u16 full;
+};
+
+struct sst_cmd_sba_set_media_loop_map {
+	struct sst_dsp_header header;
+	u16 switch_state;
+	union sba_media_loop_params param;
+	u16 map;
+};
+
+struct sst_cmd_set_swm {
+	struct sst_dsp_header header;
+	struct sst_destination_id output_id;
+	u16 switch_state;
+	u16 nb_inputs;
+	struct swm_input_ids input[6];
+};
+
+struct sst_param_sba_ssp_slot_map {
+	struct sst_dsp_header header;
+	u16 param_id;
+	u16 param_len;
+	u16 ssp_index;
+	u8 rx_slot_map[8];
+	u8 tx_slot_map[8];
+};
+
+struct sst_cmd_set_params {
+	struct sst_destination_id dst;
+	u16 command_id;
+	char params[0];
+};
+
+struct intel_sst_drv;
+
+struct ipc_post;
+
+struct intel_sst_ops {
+	irqreturn_t (*interrupt)(int, void *);
+	irqreturn_t (*irq_thread)(int, void *);
+	void (*clear_interrupt)(struct intel_sst_drv *);
+	int (*start)(struct intel_sst_drv *);
+	int (*reset)(struct intel_sst_drv *);
+	void (*process_reply)(struct intel_sst_drv *, struct ipc_post *);
+	int (*post_message)(struct intel_sst_drv *, struct ipc_post *, bool);
+	void (*process_message)(struct ipc_post *);
+	void (*set_bypass)(bool);
+	int (*save_dsp_context)(struct intel_sst_drv *);
+	void (*restore_dsp_context)();
+	int (*alloc_stream)(struct intel_sst_drv *, void *);
+	void (*post_download)(struct intel_sst_drv *);
+};
+
+struct snd_sst_alloc_mrfld {
+	u16 codec_type;
+	u8 operation;
+	u8 sg_count;
+	struct sst_address_info ring_buf_info[8];
+	u32 frag_size;
+	u32 ts;
+	struct snd_sst_stream_params codec_params;
+};
+
+struct stream_info {
+	unsigned int status;
+	unsigned int prev;
+	unsigned int resume_status;
+	unsigned int resume_prev;
+	struct mutex lock;
+	struct snd_sst_alloc_mrfld alloc_param;
+	void *pcm_substream;
+	void (*period_elapsed)(void *);
+	unsigned int sfreq;
+	u32 cumm_bytes;
+	void *compr_cb_param;
+	void (*compr_cb)(void *);
+	void *drain_cb_param;
+	void (*drain_notify)(void *);
+	unsigned int num_ch;
+	unsigned int pipe_id;
+	unsigned int task_id;
+};
+
+struct sst_sg_list {
+	struct scatterlist *src;
+	struct scatterlist *dst;
+	int list_len;
+	unsigned int sg_idx;
+};
+
+struct sst_info {
+	u32 iram_start;
+	u32 iram_end;
+	bool iram_use;
+	u32 dram_start;
+	u32 dram_end;
+	bool dram_use;
+	u32 imr_start;
+	u32 imr_end;
+	bool imr_use;
+	u32 mailbox_start;
+	bool use_elf;
+	bool lpe_viewpt_rqd;
+	unsigned int max_streams;
+	u32 dma_max_len;
+	u8 num_probes;
+};
+
+struct sst_ipc_reg {
+	int ipcx;
+	int ipcd;
+};
+
+struct sst_mem_mgr {
+	phys_addr_t current_base;
+	int avail;
+	unsigned int count;
+};
+
+struct snd_sst_fw_version {
+	u8 build;
+	u8 minor;
+	u8 major;
+	u8 type;
+};
+
+struct sst_platform_info;
+
+struct sst_fw_save;
+
+struct intel_sst_drv {
+	int sst_state;
+	int irq_num;
+	unsigned short dev_id;
+	void *ddr;
+	void *shim;
+	void *mailbox;
+	void *iram;
+	void *dram;
+	unsigned int mailbox_add;
+	unsigned int iram_base;
+	unsigned int dram_base;
+	unsigned int shim_phy_add;
+	unsigned int iram_end;
+	unsigned int dram_end;
+	unsigned int ddr_end;
+	unsigned int ddr_base;
+	unsigned int mailbox_recv_offset;
+	struct list_head block_list;
+	struct list_head ipc_dispatch_list;
+	struct sst_platform_info *pdata;
+	struct list_head rx_list;
+	struct work_struct ipc_post_msg_wq;
+	wait_queue_head_t wait_queue;
+	struct workqueue_struct *post_msg_wq;
+	unsigned int tstamp;
+	struct stream_info streams[26];
+	spinlock_t ipc_spin_lock;
+	spinlock_t block_lock;
+	spinlock_t rx_msg_lock;
+	struct pci_dev *pci;
+	struct device *dev;
+	volatile unsigned long pvt_id;
+	struct mutex sst_lock;
+	unsigned int stream_cnt;
+	unsigned int csr_value;
+	void *fw_in_mem;
+	struct sst_sg_list fw_sg_list;
+	struct sst_sg_list library_list;
+	struct intel_sst_ops *ops;
+	struct sst_info info;
+	struct pm_qos_request *qos;
+	unsigned int use_dma;
+	unsigned int use_lli;
+	atomic_t fw_clear_context;
+	bool lib_dwnld_reqd;
+	struct list_head memcpy_list;
+	struct sst_ipc_reg ipc_reg;
+	struct sst_mem_mgr lib_mem_mgr;
+	char firmware_name[32];
+	struct snd_sst_fw_version fw_version;
+	struct sst_fw_save *fw_save;
+};
+
+struct sst_ipc_info;
+
+struct sst_res_info;
+
+struct sst_lib_dnld_info;
+
+struct sst_platform_info {
+	const struct sst_info *probe_data;
+	const struct sst_ipc_info *ipc_info;
+	const struct sst_res_info *res_info;
+	const struct sst_lib_dnld_info *lib_info;
+	const char *platform;
+	bool streams_lost_on_suspend;
+};
+
+struct sst_ipc_info {
+	int ipc_offset;
+	unsigned int mbox_recv_off;
+};
+
+struct sst_res_info {
+	unsigned int shim_offset;
+	unsigned int shim_size;
+	unsigned int shim_phy_addr;
+	unsigned int ssp0_offset;
+	unsigned int ssp0_size;
+	unsigned int dma0_offset;
+	unsigned int dma0_size;
+	unsigned int dma1_offset;
+	unsigned int dma1_size;
+	unsigned int iram_offset;
+	unsigned int iram_size;
+	unsigned int dram_offset;
+	unsigned int dram_size;
+	unsigned int mbox_offset;
+	unsigned int mbox_size;
+	unsigned int acpi_lpe_res_index;
+	unsigned int acpi_ddr_index;
+	unsigned int acpi_ipc_irq_index;
+};
+
+struct sst_lib_dnld_info {
+	unsigned int mod_base;
+	unsigned int mod_end;
+	unsigned int mod_table_offset;
+	unsigned int mod_table_size;
+	bool mod_ddr_dnld;
+};
+
+struct sst_fw_save {
+	void *iram;
+	void *dram;
+	void *sram;
+	void *ddr;
+};
+
+union ipc_header {
+	struct {
+		u32 msg_id: 8;
+		u32 str_id: 5;
+		u32 large: 1;
+		u32 reserved: 2;
+		u32 data: 14;
+		u32 done: 1;
+		u32 busy: 1;
+	} part;
+	u32 full;
+};
+
+union ipc_header_high {
+	struct {
+		u32 msg_id: 8;
+		u32 task_id: 4;
+		u32 drv_id: 4;
+		u32 rsvd1: 8;
+		u32 result: 4;
+		u32 res_rqd: 1;
+		u32 large: 1;
+		u32 done: 1;
+		u32 busy: 1;
+	} part;
+	u32 full;
+};
+
+union ipc_header_mrfld {
+	struct {
+		u32 header_low_payload;
+		union ipc_header_high header_high;
+	} p;
+	u64 full;
+};
+
+struct ipc_post {
+	struct list_head node;
+	union ipc_header header;
+	bool is_large;
+	bool is_process_reply;
+	union ipc_header_mrfld mrfld_header;
+	long: 0;
+	char *mailbox_data;
+} __attribute__((packed));
+
+enum sst_states {
+	SST_FW_LOADING = 1,
+	SST_FW_RUNNING = 2,
+	SST_RESET = 3,
+	SST_SHUTDOWN = 4,
+};
+
+enum sst_audio_device_id_mrfld {
+	PIPE_ID_OUT_START = 0,
+	PIPE_CODEC_OUT0 = 2,
+	PIPE_CODEC_OUT1 = 3,
+	PIPE_SPROT_LOOP_OUT = 4,
+	PIPE_MEDIA_LOOP1_OUT = 5,
+	PIPE_MEDIA_LOOP2_OUT = 6,
+	PIPE_VOIP_OUT = 12,
+	PIPE_PCM0_OUT = 13,
+	PIPE_PCM1_OUT = 14,
+	PIPE_PCM2_OUT = 15,
+	PIPE_MEDIA0_OUT = 18,
+	PIPE_MEDIA1_OUT = 19,
+	PIPE_ID_IN_START = 128,
+	PIPE_CODEC_IN0 = 130,
+	PIPE_CODEC_IN1 = 131,
+	PIPE_SPROT_LOOP_IN = 132,
+	PIPE_MEDIA_LOOP1_IN = 133,
+	PIPE_MEDIA_LOOP2_IN = 134,
+	PIPE_VOIP_IN = 140,
+	PIPE_PCM0_IN = 141,
+	PIPE_PCM1_IN = 142,
+	PIPE_MEDIA0_IN = 143,
+	PIPE_MEDIA1_IN = 144,
+	PIPE_MEDIA2_IN = 145,
+	PIPE_MEDIA3_IN = 156,
+	PIPE_RSVD = 255,
+};
+
+enum sst_audio_task_id_mrfld {
+	SST_TASK_ID_NONE = 0,
+	SST_TASK_ID_SBA = 1,
+	SST_TASK_ID_MEDIA = 3,
+	SST_TASK_ID_MAX = 3,
+};
+
+enum ipc_ia_msg_id {
+	IPC_CMD = 1,
+	IPC_SET_PARAMS = 2,
+	IPC_GET_PARAMS = 3,
+	IPC_INVALID = 255,
+};
+
+enum sst_stream_states {
+	STREAM_UN_INIT = 0,
+	STREAM_RUNNING = 1,
+	STREAM_PAUSED = 2,
+	STREAM_INIT = 3,
+};
+
+struct sst_block {
+	bool condition;
+	int ret_code;
+	void *data;
+	u32 size;
+	bool on;
+	u32 msg_id;
+	u32 drv_id;
+	struct list_head node;
+};
+
+union interrupt_reg_mrfld {
+	struct {
+		u64 done_interrupt: 1;
+		u64 busy_interrupt: 1;
+		u64 rsvd: 62;
+	} part;
+	u64 full;
+};
+
+union sst_imr_reg_mrfld {
+	struct {
+		u64 done_interrupt: 1;
+		u64 busy_interrupt: 1;
+		u64 rsvd: 62;
+	} part;
+	u64 full;
+};
+
+enum ackData {
+	IPC_ACK_SUCCESS = 0,
+	IPC_ACK_FAILURE = 1,
+};
+
+struct ipc_dsp_hdr {
+	u16 mod_index_id: 8;
+	u16 pipe_id: 8;
+	u16 mod_id;
+	u16 cmd_id;
+	u16 length;
+};
+
+struct sst_fw_build_info {
+	unsigned char date[16];
+	unsigned char time[16];
+};
+
+struct ipc_header_fw_init {
+	struct snd_sst_fw_version fw_version;
+	struct sst_fw_build_info build_info;
+	u16 result;
+	u8 module_id;
+	u8 debug_info;
+};
+
+enum sst_error_codes {
+	SST_SUCCESS = 0,
+	SST_ERR_INVALID_STREAM_ID = 1,
+	SST_ERR_INVALID_MSG_ID = 2,
+	SST_ERR_INVALID_STREAM_OP = 3,
+	SST_ERR_INVALID_PARAMS = 4,
+	SST_ERR_INVALID_CODEC = 5,
+	SST_ERR_INVALID_MEDIA_TYPE = 6,
+	SST_ERR_STREAM_ERR = 7,
+	SST_ERR_STREAM_IN_USE = 15,
+};
+
+enum snd_sst_bytes_type {
+	SND_SST_BYTES_SET = 1,
+	SND_SST_BYTES_GET = 2,
+};
+
+struct snd_sst_str_type {
+	u8 codec_type;
+	u8 str_type;
+	u8 operation;
+	u8 protected_str;
+	u8 time_slots;
+	u8 reserved;
+	u16 result;
+};
+
+struct module_info {
+	u32 lib_version;
+	u32 lib_type;
+	u32 media_type;
+	u8 lib_name[12];
+	u32 lib_caps;
+	unsigned char b_date[16];
+	unsigned char b_time[16];
+};
+
+struct lib_slot_info {
+	u8 slot_num;
+	u8 reserved1;
+	u16 reserved2;
+	u32 iram_size;
+	u32 dram_size;
+	u32 iram_offset;
+	u32 dram_offset;
+};
+
+struct snd_sst_lib_download {
+	struct module_info lib_info;
+	struct lib_slot_info slot_info;
+	u32 mod_entry_pt;
+};
+
+struct snd_sst_alloc_response {
+	struct snd_sst_str_type str_type;
+	struct snd_sst_lib_download lib_dnld;
+};
+
+struct snd_sst_tstamp {
+	u64 ring_buffer_counter;
+	u64 hardware_counter;
+	u64 frames_decoded;
+	u64 bytes_decoded;
+	u64 bytes_copied;
+	u32 sampling_frequency;
+	u32 channel_peak[8];
+} __attribute__((packed));
+
+enum sst_ram_type {
+	SST_IRAM = 1,
+	SST_DRAM = 2,
+	SST_DDR = 5,
+	SST_CUSTOM_INFO = 7,
+};
+
+struct sst_memcpy_list {
+	struct list_head memcpylist;
+	void *dstn;
+	const void *src;
+	u32 size;
+	bool is_io;
+};
+
+struct sst_fw_header {
+	unsigned char signature[4];
+	u32 file_size;
+	u32 modules;
+	u32 file_format;
+	u32 reserved[4];
+};
+
+struct fw_module_header {
+	unsigned char signature[4];
+	u32 mod_size;
+	u32 blocks;
+	u32 type;
+	u32 entry_point;
+};
+
+struct fw_block_info {
+	enum sst_ram_type type;
+	u32 size;
+	u32 ram_offset;
+	u32 rsvd;
+};
+
+union config_status_reg_mrfld {
+	struct {
+		u64 lpe_reset: 1;
+		u64 lpe_reset_vector: 1;
+		u64 runstall: 1;
+		u64 pwaitmode: 1;
+		u64 clk_sel: 3;
+		u64 rsvd2: 1;
+		u64 sst_clk: 3;
+		u64 xt_snoop: 1;
+		u64 rsvd3: 4;
+		u64 clk_sel1: 6;
+		u64 clk_enable: 3;
+		u64 rsvd4: 6;
+		u64 slim0baseclk: 1;
+		u64 rsvd: 32;
+	} part;
+	u64 full;
+};
+
+enum {
+	SND_INTEL_DSP_DRIVER_ANY = 0,
+	SND_INTEL_DSP_DRIVER_LEGACY = 1,
+	SND_INTEL_DSP_DRIVER_SST = 2,
+	SND_INTEL_DSP_DRIVER_SOF = 3,
+	SND_INTEL_DSP_DRIVER_AVS = 4,
+	SND_INTEL_DSP_DRIVER_LAST = 4,
+};
+
+struct config_entry {
+	u32 flags;
+	u16 device;
+	u8 acpi_hid[16];
+	const struct dmi_system_id *dmi_table;
+	const struct snd_soc_acpi_codecs *codec_hid;
+};
+
+enum nhlt_link_type {
+	NHLT_LINK_HDA = 0,
+	NHLT_LINK_DSP = 1,
+	NHLT_LINK_DMIC = 2,
+	NHLT_LINK_SSP = 3,
+	NHLT_LINK_INVALID = 4,
+};
+
+enum {
+	NHLT_CONFIG_TYPE_GENERIC = 0,
+	NHLT_CONFIG_TYPE_MIC_ARRAY = 1,
+};
+
+enum {
+	NHLT_MIC_ARRAY_2CH_SMALL = 10,
+	NHLT_MIC_ARRAY_2CH_BIG = 11,
+	NHLT_MIC_ARRAY_4CH_1ST_GEOM = 12,
+	NHLT_MIC_ARRAY_4CH_L_SHAPED = 13,
+	NHLT_MIC_ARRAY_4CH_2ND_GEOM = 14,
+	NHLT_MIC_ARRAY_VENDOR_DEFINED = 15,
+};
+
+enum nhlt_device_type {
+	NHLT_DEVICE_BT = 0,
+	NHLT_DEVICE_DMIC = 1,
+	NHLT_DEVICE_I2S = 4,
+	NHLT_DEVICE_INVALID = 5,
+};
+
+struct nhlt_device_specific_config {
+	u8 virtual_slot;
+	u8 config_type;
+};
+
+struct nhlt_dmic_array_config {
+	struct nhlt_device_specific_config device_config;
+	u8 array_type;
+};
+
+struct wav_fmt {
+	u16 fmt_tag;
+	u16 channels;
+	u32 samples_per_sec;
+	u32 avg_bytes_per_sec;
+	u16 block_align;
+	u16 bits_per_sample;
+	u16 cb_size;
+} __attribute__((packed));
+
+union samples {
+	u16 valid_bits_per_sample;
+	u16 samples_per_block;
+	u16 reserved;
+};
+
+struct wav_fmt_ext {
+	struct wav_fmt fmt;
+	union samples sample;
+	u32 channel_mask;
+	u8 sub_fmt[16];
+};
+
+struct nhlt_specific_cfg {
+	u32 size;
+	u8 caps[0];
+};
+
+struct nhlt_fmt_cfg {
+	struct wav_fmt_ext fmt_ext;
+	struct nhlt_specific_cfg config;
+};
+
+struct nhlt_fmt {
+	u8 fmt_count;
+	struct nhlt_fmt_cfg fmt_config[0];
+} __attribute__((packed));
+
+struct nhlt_vendor_dmic_array_config {
+	struct nhlt_dmic_array_config dmic_config;
+	u8 nb_mics;
+};
+
+struct nhlt_endpoint {
+	u32 length;
+	u8 linktype;
+	u8 instance_id;
+	u16 vendor_id;
+	u16 device_id;
+	u16 revision_id;
+	u32 subsystem_id;
+	u8 device_type;
+	u8 direction;
+	u8 virtual_bus_id;
+	struct nhlt_specific_cfg config;
+} __attribute__((packed));
+
+struct nhlt_acpi_table {
+	struct acpi_table_header header;
+	u8 endpoint_count;
+	struct nhlt_endpoint desc[0];
+} __attribute__((packed));
+
+struct sdw_intel_acpi_info {
+	acpi_handle handle;
+	int count;
+	u32 link_mask;
+};
+
+struct net_device_devres {
+	struct net_device *ndev;
+};
+
+struct net_proto_family {
+	int family;
+	int (*create)(struct net *, struct socket *, int, int);
+	struct module *owner;
+};
+
+struct iw_request_info {
+	__u16 cmd;
+	__u16 flags;
+};
+
+struct iw_point {
+	void __attribute__((btf_type_tag("user"))) *pointer;
+	__u16 length;
+	__u16 flags;
+};
+
+struct iw_param {
+	__s32 value;
+	__u8 fixed;
+	__u8 disabled;
+	__u16 flags;
+};
+
+struct iw_freq {
+	__s32 m;
+	__s16 e;
+	__u8 i;
+	__u8 flags;
+};
+
+struct iw_quality {
+	__u8 qual;
+	__u8 level;
+	__u8 noise;
+	__u8 updated;
+};
+
+union iwreq_data {
+	char name[16];
+	struct iw_point essid;
+	struct iw_param nwid;
+	struct iw_freq freq;
+	struct iw_param sens;
+	struct iw_param bitrate;
+	struct iw_param txpower;
+	struct iw_param rts;
+	struct iw_param frag;
+	__u32 mode;
+	struct iw_param retry;
+	struct iw_point encoding;
+	struct iw_param power;
+	struct iw_quality qual;
+	struct sockaddr ap_addr;
+	struct sockaddr addr;
+	struct iw_param param;
+	struct iw_point data;
+};
+
+struct iw_priv_args {
+	__u32 cmd;
+	__u16 set_args;
+	__u16 get_args;
+	char name[16];
+};
+
+struct iw_discarded {
+	__u32 nwid;
+	__u32 code;
+	__u32 fragment;
+	__u32 retries;
+	__u32 misc;
+};
+
+struct iw_missed {
+	__u32 beacon;
+};
+
+struct iw_statistics {
+	__u16 status;
+	struct iw_quality qual;
+	struct iw_discarded discard;
+	struct iw_missed miss;
+};
+
+struct libipw_device;
+
+struct iw_spy_data;
+
+struct iw_public_data {
+	struct iw_spy_data *spy_data;
+	struct libipw_device *libipw;
+};
+
+typedef unsigned char u_char;
+
+struct iw_spy_data {
+	int spy_number;
+	u_char spy_address[48];
+	struct iw_quality spy_stat[8];
+	struct iw_quality spy_thr_low;
+	struct iw_quality spy_thr_high;
+	u_char spy_thr_under[8];
+};
+
+enum {
+	SOF_TIMESTAMPING_TX_HARDWARE = 1,
+	SOF_TIMESTAMPING_TX_SOFTWARE = 2,
+	SOF_TIMESTAMPING_RX_HARDWARE = 4,
+	SOF_TIMESTAMPING_RX_SOFTWARE = 8,
+	SOF_TIMESTAMPING_SOFTWARE = 16,
+	SOF_TIMESTAMPING_SYS_HARDWARE = 32,
+	SOF_TIMESTAMPING_RAW_HARDWARE = 64,
+	SOF_TIMESTAMPING_OPT_ID = 128,
+	SOF_TIMESTAMPING_TX_SCHED = 256,
+	SOF_TIMESTAMPING_TX_ACK = 512,
+	SOF_TIMESTAMPING_OPT_CMSG = 1024,
+	SOF_TIMESTAMPING_OPT_TSONLY = 2048,
+	SOF_TIMESTAMPING_OPT_STATS = 4096,
+	SOF_TIMESTAMPING_OPT_PKTINFO = 8192,
+	SOF_TIMESTAMPING_OPT_TX_SWHW = 16384,
+	SOF_TIMESTAMPING_BIND_PHC = 32768,
+	SOF_TIMESTAMPING_OPT_ID_TCP = 65536,
+	SOF_TIMESTAMPING_LAST = 65536,
+	SOF_TIMESTAMPING_MASK = 131071,
+};
+
+enum {
+	SOCK_WAKE_IO = 0,
+	SOCK_WAKE_WAITD = 1,
+	SOCK_WAKE_SPACE = 2,
+	SOCK_WAKE_URG = 3,
+};
+
+enum sock_shutdown_cmd {
+	SHUT_RD = 0,
+	SHUT_WR = 1,
+	SHUT_RDWR = 2,
+};
+
+struct sock_ee_data_rfc4884 {
+	__u16 len;
+	__u8 flags;
+	__u8 reserved;
+};
+
+struct sock_extended_err {
+	__u32 ee_errno;
+	__u8 ee_origin;
+	__u8 ee_type;
+	__u8 ee_code;
+	__u8 ee_pad;
+	__u32 ee_info;
+	union {
+		__u32 ee_data;
+		struct sock_ee_data_rfc4884 ee_rfc4884;
+	};
+};
+
+struct sock_exterr_skb {
+	union {
+		struct inet_skb_parm h4;
+		struct inet6_skb_parm h6;
+	} header;
+	struct sock_extended_err ee;
+	u16 addr_offset;
+	__be16 port;
+	u8 opt_stats: 1;
+	u8 unused: 7;
+};
+
+struct compat_mmsghdr {
+	struct compat_msghdr msg_hdr;
+	compat_uint_t msg_len;
+};
+
+struct compat_ifmap {
+	compat_ulong_t mem_start;
+	compat_ulong_t mem_end;
+	unsigned short base_addr;
+	unsigned char irq;
+	unsigned char dma;
+	unsigned char port;
+};
+
+struct compat_if_settings {
+	unsigned int type;
+	unsigned int size;
+	compat_uptr_t ifs_ifsu;
+};
+
+struct compat_ifreq {
+	union {
+		char ifrn_name[16];
+	} ifr_ifrn;
+	union {
+		struct sockaddr ifru_addr;
+		struct sockaddr ifru_dstaddr;
+		struct sockaddr ifru_broadaddr;
+		struct sockaddr ifru_netmask;
+		struct sockaddr ifru_hwaddr;
+		short ifru_flags;
+		compat_int_t ifru_ivalue;
+		compat_int_t ifru_mtu;
+		struct compat_ifmap ifru_map;
+		char ifru_slave[16];
+		char ifru_newname[16];
+		compat_caddr_t ifru_data;
+		struct compat_if_settings ifru_settings;
+	} ifr_ifru;
+};
+
+struct sock_skb_cb {
+	u32 dropcount;
+};
+
+struct mmsghdr {
+	struct user_msghdr msg_hdr;
+	unsigned int msg_len;
+};
+
+struct __kernel_old_timespec {
+	__kernel_old_time_t tv_sec;
+	long tv_nsec;
+};
+
+struct __kernel_sock_timeval {
+	__s64 tv_sec;
+	__s64 tv_usec;
+};
+
+struct scm_ts_pktinfo {
+	__u32 if_index;
+	__u32 pkt_length;
+	__u32 reserved[2];
+};
+
+struct scm_timestamping_internal {
+	struct timespec64 ts[3];
+};
+
+struct ifconf {
+	int ifc_len;
+	union {
+		char __attribute__((btf_type_tag("user"))) *ifcu_buf;
+		struct ifreq __attribute__((btf_type_tag("user"))) *ifcu_req;
+	} ifc_ifcu;
+};
+
+struct used_address {
+	struct __kernel_sockaddr_storage name;
+	unsigned int name_len;
+};
+
+struct netdev_name_node {
+	struct hlist_node hlist;
+	struct list_head list;
+	struct net_device *dev;
+	const char *name;
+};
+
+enum {
+	INET_FLAGS_PKTINFO = 0,
+	INET_FLAGS_TTL = 1,
+	INET_FLAGS_TOS = 2,
+	INET_FLAGS_RECVOPTS = 3,
+	INET_FLAGS_RETOPTS = 4,
+	INET_FLAGS_PASSSEC = 5,
+	INET_FLAGS_ORIGDSTADDR = 6,
+	INET_FLAGS_CHECKSUM = 7,
+	INET_FLAGS_RECVFRAGSIZE = 8,
+	INET_FLAGS_RECVERR = 9,
+	INET_FLAGS_RECVERR_RFC4884 = 10,
+	INET_FLAGS_FREEBIND = 11,
+	INET_FLAGS_HDRINCL = 12,
+	INET_FLAGS_MC_LOOP = 13,
+	INET_FLAGS_MC_ALL = 14,
+	INET_FLAGS_TRANSPARENT = 15,
+	INET_FLAGS_IS_ICSK = 16,
+	INET_FLAGS_NODEFRAG = 17,
+	INET_FLAGS_BIND_ADDRESS_NO_PORT = 18,
+	INET_FLAGS_DEFER_CONNECT = 19,
+};
+
+enum sk_pacing {
+	SK_PACING_NONE = 0,
+	SK_PACING_NEEDED = 1,
+	SK_PACING_FQ = 2,
+};
+
+enum txtime_flags {
+	SOF_TXTIME_DEADLINE_MODE = 1,
+	SOF_TXTIME_REPORT_ERRORS = 2,
+	SOF_TXTIME_FLAGS_LAST = 2,
+	SOF_TXTIME_FLAGS_MASK = 3,
+};
+
+enum {
+	SK_MEMINFO_RMEM_ALLOC = 0,
+	SK_MEMINFO_RCVBUF = 1,
+	SK_MEMINFO_WMEM_ALLOC = 2,
+	SK_MEMINFO_SNDBUF = 3,
+	SK_MEMINFO_FWD_ALLOC = 4,
+	SK_MEMINFO_WMEM_QUEUED = 5,
+	SK_MEMINFO_OPTMEM = 6,
+	SK_MEMINFO_BACKLOG = 7,
+	SK_MEMINFO_DROPS = 8,
+	SK_MEMINFO_VARS = 9,
+};
+
+enum sknetlink_groups {
+	SKNLGRP_NONE = 0,
+	SKNLGRP_INET_TCP_DESTROY = 1,
+	SKNLGRP_INET_UDP_DESTROY = 2,
+	SKNLGRP_INET6_TCP_DESTROY = 3,
+	SKNLGRP_INET6_UDP_DESTROY = 4,
+	__SKNLGRP_MAX = 5,
+};
+
+enum {
+	XFRM_POLICY_IN = 0,
+	XFRM_POLICY_OUT = 1,
+	XFRM_POLICY_FWD = 2,
+	XFRM_POLICY_MASK = 3,
+	XFRM_POLICY_MAX = 3,
+};
+
+struct fastopen_queue {
+	struct request_sock *rskq_rst_head;
+	struct request_sock *rskq_rst_tail;
+	spinlock_t lock;
+	int qlen;
+	int max_qlen;
+	struct tcp_fastopen_context __attribute__((btf_type_tag("rcu"))) *ctx;
+};
+
+struct request_sock_queue {
+	spinlock_t rskq_lock;
+	u8 rskq_defer_accept;
+	u32 synflood_warned;
+	atomic_t qlen;
+	atomic_t young;
+	struct request_sock *rskq_accept_head;
+	struct request_sock *rskq_accept_tail;
+	struct fastopen_queue fastopenq;
+};
+
+struct inet_bind_bucket;
+
+struct inet_bind2_bucket;
+
+struct inet_connection_sock_af_ops;
+
+struct tcp_ulp_ops;
+
+struct inet_connection_sock {
+	struct inet_sock icsk_inet;
+	struct request_sock_queue icsk_accept_queue;
+	struct inet_bind_bucket *icsk_bind_hash;
+	struct inet_bind2_bucket *icsk_bind2_hash;
+	unsigned long icsk_timeout;
+	struct timer_list icsk_retransmit_timer;
+	struct timer_list icsk_delack_timer;
+	__u32 icsk_rto;
+	__u32 icsk_rto_min;
+	__u32 icsk_delack_max;
+	__u32 icsk_pmtu_cookie;
+	const struct tcp_congestion_ops *icsk_ca_ops;
+	const struct inet_connection_sock_af_ops *icsk_af_ops;
+	const struct tcp_ulp_ops *icsk_ulp_ops;
+	void __attribute__((btf_type_tag("rcu"))) *icsk_ulp_data;
+	void (*icsk_clean_acked)(struct sock *, u32);
+	unsigned int (*icsk_sync_mss)(struct sock *, u32);
+	__u8 icsk_ca_state: 5;
+	__u8 icsk_ca_initialized: 1;
+	__u8 icsk_ca_setsockopt: 1;
+	__u8 icsk_ca_dst_locked: 1;
+	__u8 icsk_retransmits;
+	__u8 icsk_pending;
+	__u8 icsk_backoff;
+	__u8 icsk_syn_retries;
+	__u8 icsk_probes_out;
+	__u16 icsk_ext_hdr_len;
+	struct {
+		__u8 pending;
+		__u8 quick;
+		__u8 pingpong;
+		__u8 retry;
+		__u32 ato;
+		unsigned long timeout;
+		__u32 lrcvtime;
+		__u16 last_seg_size;
+		__u16 rcv_mss;
+	} icsk_ack;
+	struct {
+		int search_high;
+		int search_low;
+		u32 probe_size: 31;
+		u32 enabled: 1;
+		u32 probe_timestamp;
+	} icsk_mtup;
+	u32 icsk_probes_tstamp;
+	u32 icsk_user_timeout;
+	u64 android_kabi_reserved1;
+	u64 icsk_ca_priv[13];
+};
+
+struct tcp_rack {
+	u64 mstamp;
+	u32 rtt_us;
+	u32 end_seq;
+	u32 last_delivered;
+	u8 reo_wnd_steps;
+	u8 reo_wnd_persist: 5;
+	u8 dsack_seen: 1;
+	u8 advanced: 1;
+};
+
+struct minmax_sample {
+	u32 t;
+	u32 v;
+};
+
+struct minmax {
+	struct minmax_sample s[3];
+};
+
+struct tcp_options_received {
+	int ts_recent_stamp;
+	u32 ts_recent;
+	u32 rcv_tsval;
+	u32 rcv_tsecr;
+	u16 saw_tstamp: 1;
+	u16 tstamp_ok: 1;
+	u16 dsack: 1;
+	u16 wscale_ok: 1;
+	u16 sack_ok: 3;
+	u16 smc_ok: 1;
+	u16 snd_wscale: 4;
+	u16 rcv_wscale: 4;
+	u8 saw_unknown: 1;
+	u8 unused: 7;
+	u8 num_sacks;
+	u16 user_mss;
+	u16 mss_clamp;
+};
+
+struct tcp_sack_block {
+	u32 start_seq;
+	u32 end_seq;
+};
+
+struct tcp_fastopen_request;
+
+struct tcp_sock {
+	struct inet_connection_sock inet_conn;
+	u16 tcp_header_len;
+	u16 gso_segs;
+	__be32 pred_flags;
+	u64 bytes_received;
+	u32 segs_in;
+	u32 data_segs_in;
+	u32 rcv_nxt;
+	u32 copied_seq;
+	u32 rcv_wup;
+	u32 snd_nxt;
+	u32 segs_out;
+	u32 data_segs_out;
+	u64 bytes_sent;
+	u64 bytes_acked;
+	u32 dsack_dups;
+	u32 snd_una;
+	u32 snd_sml;
+	u32 rcv_tstamp;
+	u32 lsndtime;
+	u32 last_oow_ack_time;
+	u32 compressed_ack_rcv_nxt;
+	u32 tsoffset;
+	struct list_head tsq_node;
+	struct list_head tsorted_sent_queue;
+	u32 snd_wl1;
+	u32 snd_wnd;
+	u32 max_window;
+	u32 mss_cache;
+	u32 window_clamp;
+	u32 rcv_ssthresh;
+	u8 scaling_ratio;
+	struct tcp_rack rack;
+	u16 advmss;
+	u8 compressed_ack;
+	u8 dup_ack_counter: 2;
+	u8 tlp_retrans: 1;
+	u8 unused: 5;
+	u32 chrono_start;
+	u32 chrono_stat[3];
+	u8 chrono_type: 2;
+	u8 rate_app_limited: 1;
+	u8 fastopen_connect: 1;
+	u8 fastopen_no_cookie: 1;
+	u8 is_sack_reneg: 1;
+	u8 fastopen_client_fail: 2;
+	u8 nonagle: 4;
+	u8 thin_lto: 1;
+	u8 recvmsg_inq: 1;
+	u8 repair: 1;
+	u8 frto: 1;
+	u8 repair_queue;
+	u8 save_syn: 2;
+	u8 syn_data: 1;
+	u8 syn_fastopen: 1;
+	u8 syn_fastopen_exp: 1;
+	u8 syn_fastopen_ch: 1;
+	u8 syn_data_acked: 1;
+	u8 is_cwnd_limited: 1;
+	u32 tlp_high_seq;
+	u32 tcp_tx_delay;
+	u64 tcp_wstamp_ns;
+	u64 tcp_clock_cache;
+	u64 tcp_mstamp;
+	u32 srtt_us;
+	u32 mdev_us;
+	u32 mdev_max_us;
+	u32 rttvar_us;
+	u32 rtt_seq;
+	struct minmax rtt_min;
+	u32 packets_out;
+	u32 retrans_out;
+	u32 max_packets_out;
+	u32 cwnd_usage_seq;
+	u16 urg_data;
+	u8 ecn_flags;
+	u8 keepalive_probes;
+	u32 reordering;
+	u32 reord_seen;
+	u32 snd_up;
+	struct tcp_options_received rx_opt;
+	u32 snd_ssthresh;
+	u32 snd_cwnd;
+	u32 snd_cwnd_cnt;
+	u32 snd_cwnd_clamp;
+	u32 snd_cwnd_used;
+	u32 snd_cwnd_stamp;
+	u32 prior_cwnd;
+	u32 prr_delivered;
+	u32 prr_out;
+	u32 delivered;
+	u32 delivered_ce;
+	u32 lost;
+	u32 app_limited;
+	u64 first_tx_mstamp;
+	u64 delivered_mstamp;
+	u32 rate_delivered;
+	u32 rate_interval_us;
+	u32 rcv_wnd;
+	u32 write_seq;
+	u32 notsent_lowat;
+	u32 pushed_seq;
+	u32 lost_out;
+	u32 sacked_out;
+	struct hrtimer pacing_timer;
+	struct hrtimer compressed_ack_timer;
+	struct sk_buff *lost_skb_hint;
+	struct sk_buff *retransmit_skb_hint;
+	struct rb_root out_of_order_queue;
+	struct sk_buff *ooo_last_skb;
+	struct tcp_sack_block duplicate_sack[1];
+	struct tcp_sack_block selective_acks[4];
+	struct tcp_sack_block recv_sack_cache[4];
+	struct sk_buff *highest_sack;
+	int lost_cnt_hint;
+	u32 prior_ssthresh;
+	u32 high_seq;
+	u32 retrans_stamp;
+	u32 undo_marker;
+	int undo_retrans;
+	u64 bytes_retrans;
+	u32 total_retrans;
+	u32 urg_seq;
+	unsigned int keepalive_time;
+	unsigned int keepalive_intvl;
+	int linger2;
+	u8 bpf_sock_ops_cb_flags;
+	u8 bpf_chg_cc_inprogress: 1;
+	u16 timeout_rehash;
+	u32 rcv_ooopack;
+	u32 rcv_rtt_last_tsecr;
+	struct {
+		u32 rtt_us;
+		u32 seq;
+		u64 time;
+	} rcv_rtt_est;
+	struct {
+		u32 space;
+		u32 seq;
+		u64 time;
+	} rcvq_space;
+	struct {
+		u32 probe_seq_start;
+		u32 probe_seq_end;
+	} mtu_probe;
+	u32 plb_rehash;
+	u32 mtu_info;
+	struct tcp_fastopen_request *fastopen_req;
+	struct request_sock __attribute__((btf_type_tag("rcu"))) *fastopen_rsk;
+	struct saved_syn *saved_syn;
+	u64 android_oem_data1;
+	u64 android_kabi_reserved1;
+};
+
+struct inet_bind_bucket {
+	possible_net_t ib_net;
+	int l3mdev;
+	unsigned short port;
+	signed char fastreuse;
+	signed char fastreuseport;
+	kuid_t fastuid;
+	struct in6_addr fast_v6_rcv_saddr;
+	__be32 fast_rcv_saddr;
+	unsigned short fast_sk_family;
+	bool fast_ipv6_only;
+	struct hlist_node node;
+	struct hlist_head owners;
+};
+
+struct inet_bind2_bucket {
+	possible_net_t ib_net;
+	int l3mdev;
+	unsigned short port;
+	unsigned short family;
+	union {
+		struct in6_addr v6_rcv_saddr;
+		__be32 rcv_saddr;
+	};
+	struct hlist_node node;
+	struct hlist_head owners;
+	struct hlist_head deathrow;
+};
+
+struct inet_connection_sock_af_ops {
+	int (*queue_xmit)(struct sock *, struct sk_buff *, struct flowi *);
+	void (*send_check)(struct sock *, struct sk_buff *);
+	int (*rebuild_header)(struct sock *);
+	void (*sk_rx_dst_set)(struct sock *, const struct sk_buff *);
+	int (*conn_request)(struct sock *, struct sk_buff *);
+	struct sock * (*syn_recv_sock)(const struct sock *, struct sk_buff *, struct request_sock *, struct dst_entry *, struct request_sock *, bool *);
+	u16 net_header_len;
+	u16 net_frag_header_len;
+	u16 sockaddr_len;
+	int (*setsockopt)(struct sock *, int, int, sockptr_t, unsigned int);
+	int (*getsockopt)(struct sock *, int, int, char __attribute__((btf_type_tag("user"))) *, int __attribute__((btf_type_tag("user"))) *);
+	void (*addr2sockaddr)(struct sock *, struct sockaddr *);
+	void (*mtu_reduced)(struct sock *);
+	u64 android_kabi_reserved1;
+};
+
+struct tcp_ulp_ops {
+	struct list_head list;
+	int (*init)(struct sock *);
+	void (*update)(struct sock *, struct proto *, void (*)(struct sock *));
+	void (*release)(struct sock *);
+	int (*get_info)(struct sock *, struct sk_buff *);
+	size_t (*get_info_size)(const struct sock *);
+	void (*clone)(const struct request_sock *, struct sock *, const gfp_t);
+	char name[16];
+	struct module *owner;
+};
+
+struct tcp_fastopen_cookie {
+	__le64 val[2];
+	s8 len;
+	bool exp;
+};
+
+struct tcp_fastopen_request {
+	struct tcp_fastopen_cookie cookie;
+	struct msghdr *data;
+	size_t size;
+	int copied;
+	struct ubuf_info *uarg;
+};
+
+struct cmsghdr {
+	__kernel_size_t cmsg_len;
+	int cmsg_level;
+	int cmsg_type;
+};
+
+struct net_protocol {
+	int (*handler)(struct sk_buff *);
+	int (*err_handler)(struct sk_buff *, u32);
+	unsigned int no_policy: 1;
+	unsigned int icmp_strict_tag_validation: 1;
+};
+
+struct udp_sock {
+	struct inet_sock inet;
+	unsigned long udp_flags;
+	int pending;
+	__u8 encap_type;
+	__u16 len;
+	__u16 gso_size;
+	__u16 pcslen;
+	__u16 pcrlen;
+	int (*encap_rcv)(struct sock *, struct sk_buff *);
+	void (*encap_err_rcv)(struct sock *, struct sk_buff *, int, __be16, u32, u8 *);
+	int (*encap_err_lookup)(struct sock *, struct sk_buff *);
+	void (*encap_destroy)(struct sock *);
+	struct sk_buff * (*gro_receive)(struct sock *, struct list_head *, struct sk_buff *);
+	int (*gro_complete)(struct sock *, struct sk_buff *, int);
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct sk_buff_head reader_queue;
+	int forward_deficit;
+	int forward_threshold;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+typedef void (*android_dst_ops_negative_advice_new_t)(struct sock *, struct dst_entry *);
+
+struct ucred {
+	__u32 pid;
+	__u32 uid;
+	__u32 gid;
+};
+
+struct linger {
+	int l_onoff;
+	int l_linger;
+};
+
+struct sock_txtime {
+	__kernel_clockid_t clockid;
+	__u32 flags;
+};
+
+struct so_timestamping {
+	int flags;
+	int bind_phc;
+};
+
+typedef unsigned short mifi_t;
+
+struct sioc_mif_req6 {
+	mifi_t mifi;
+	unsigned long icount;
+	unsigned long ocount;
+	unsigned long ibytes;
+	unsigned long obytes;
+};
+
+struct sioc_sg_req6 {
+	struct sockaddr_in6 src;
+	struct sockaddr_in6 grp;
+	unsigned long pktcnt;
+	unsigned long bytecnt;
+	unsigned long wrong_if;
+};
+
+struct sockcm_cookie {
+	u64 transmit_time;
+	u32 mark;
+	u32 tsflags;
+};
+
+struct inet_request_sock {
+	struct request_sock req;
+	u16 snd_wscale: 4;
+	u16 rcv_wscale: 4;
+	u16 tstamp_ok: 1;
+	u16 sack_ok: 1;
+	u16 wscale_ok: 1;
+	u16 ecn_ok: 1;
+	u16 acked: 1;
+	u16 no_srccheck: 1;
+	u16 smc_ok: 1;
+	u32 ir_mark;
+	union {
+		struct ip_options_rcu __attribute__((btf_type_tag("rcu"))) *ireq_opt;
+		struct {
+			struct ipv6_txoptions *ipv6_opt;
+			struct sk_buff *pktopts;
+		};
+	};
+};
+
+struct tcp_request_sock_ops;
+
+struct tcp_request_sock {
+	struct inet_request_sock req;
+	const struct tcp_request_sock_ops *af_specific;
+	u64 snt_synack;
+	bool tfo_listener;
+	bool is_mptcp;
+	u32 txhash;
+	u32 rcv_isn;
+	u32 snt_isn;
+	u32 ts_off;
+	u32 last_oow_ack_time;
+	u32 rcv_nxt;
+	u8 syn_tos;
+};
+
+enum tcp_synack_type {
+	TCP_SYNACK_NORMAL = 0,
+	TCP_SYNACK_FASTOPEN = 1,
+	TCP_SYNACK_COOKIE = 2,
+};
+
+struct tcp_request_sock_ops {
+	u16 mss_clamp;
+	struct dst_entry * (*route_req)(const struct sock *, struct sk_buff *, struct flowi *, struct request_sock *);
+	u32 (*init_seq)(const struct sk_buff *);
+	u32 (*init_ts_off)(const struct net *, const struct sk_buff *);
+	int (*send_synack)(const struct sock *, struct dst_entry *, struct flowi *, struct request_sock *, struct tcp_fastopen_cookie *, enum tcp_synack_type, struct sk_buff *);
+};
+
+struct drop_reason_list {
+	const char * const *reasons;
+	size_t n_reasons;
+};
+
+struct skb_checksum_ops {
+	__wsum (*update)(const void *, int, __wsum);
+	__wsum (*combine)(__wsum, __wsum, int, int);
+};
+
+struct page_frag_1k {
+	void *va;
+	u16 offset;
+	bool pfmemalloc;
+};
+
+struct napi_alloc_cache {
+	struct page_frag_cache page;
+	struct page_frag_1k page_small;
+	unsigned int skb_count;
+	void *skb_cache[64];
+};
+
+enum skb_drop_reason_subsys {
+	SKB_DROP_REASON_SUBSYS_CORE = 0,
+	SKB_DROP_REASON_SUBSYS_MAC80211_UNUSABLE = 1,
+	SKB_DROP_REASON_SUBSYS_MAC80211_MONITOR = 2,
+	SKB_DROP_REASON_SUBSYS_OPENVSWITCH = 3,
+	SKB_DROP_REASON_SUBSYS_NUM = 4,
+};
+
+enum {
+	SKB_FCLONE_UNAVAILABLE = 0,
+	SKB_FCLONE_ORIG = 1,
+	SKB_FCLONE_CLONE = 2,
+};
+
+enum {
+	SCM_TSTAMP_SND = 0,
+	SCM_TSTAMP_SCHED = 1,
+	SCM_TSTAMP_ACK = 2,
+};
+
+enum skb_ext_id {
+	SKB_EXT_SEC_PATH = 0,
+	SKB_EXT_NUM = 1,
+};
+
+struct sk_buff_fclones {
+	struct sk_buff skb1;
+	struct sk_buff skb2;
+	refcount_t fclone_ref;
+};
+
+struct mmpin {
+	struct user_struct *user;
+	unsigned int num_pg;
+};
+
+struct ubuf_info_msgzc {
+	struct ubuf_info ubuf;
+	union {
+		struct {
+			unsigned long desc;
+			void *ctx;
+		};
+		struct {
+			u32 id;
+			u16 len;
+			u16 zerocopy: 1;
+			u32 bytelen;
+		};
+	};
+	struct mmpin mmp;
+};
+
+struct skb_seq_state {
+	__u32 lower_offset;
+	__u32 upper_offset;
+	__u32 frag_idx;
+	__u32 stepped_offset;
+	struct sk_buff *root_skb;
+	struct sk_buff *cur_skb;
+	__u8 *frag_data;
+	__u32 frag_off;
+};
+
+struct skb_gso_cb {
+	union {
+		int mac_offset;
+		int data_offset;
+	};
+	int encap_level;
+	__wsum csum;
+	__u16 csum_start;
+};
+
+struct sd_flow_limit;
+
+struct softnet_data {
+	struct list_head poll_list;
+	struct sk_buff_head process_queue;
+	unsigned int processed;
+	unsigned int time_squeeze;
+	struct softnet_data *rps_ipi_list;
+	bool in_net_rx_action;
+	bool in_napi_threaded_poll;
+	struct sd_flow_limit __attribute__((btf_type_tag("rcu"))) *flow_limit;
+	struct Qdisc *output_queue;
+	struct Qdisc **output_queue_tailp;
+	struct sk_buff *completion_queue;
+	struct {
+		u16 recursion;
+		u8 more;
+		u8 skip_txqueue;
+	} xmit;
+	long: 64;
+	long: 64;
+	long: 64;
+	unsigned int input_queue_head;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	call_single_data_t csd;
+	struct softnet_data *rps_ipi_next;
+	unsigned int cpu;
+	unsigned int input_queue_tail;
+	unsigned int received_rps;
+	unsigned int dropped;
+	struct sk_buff_head input_pkt_queue;
+	struct napi_struct backlog;
+	spinlock_t defer_lock;
+	int defer_count;
+	int defer_ipi_scheduled;
+	struct sk_buff *defer_list;
+	long: 64;
+	call_single_data_t defer_csd;
+};
+
+struct sd_flow_limit {
+	u64 count;
+	unsigned int num_buckets;
+	unsigned int history_head;
+	u16 history[128];
+	u8 buckets[0];
+};
+
+struct ip_auth_hdr {
+	__u8 nexthdr;
+	__u8 hdrlen;
+	__be16 reserved;
+	__be32 spi;
+	__be32 seq_no;
+	__u8 auth_data[0];
+};
+
+struct frag_hdr {
+	__u8 nexthdr;
+	__u8 reserved;
+	__be16 frag_off;
+	__be32 identification;
+};
+
+struct vlan_ethhdr {
+	union {
+		struct {
+			unsigned char h_dest[6];
+			unsigned char h_source[6];
+		};
+		struct {
+			unsigned char h_dest[6];
+			unsigned char h_source[6];
+		} addrs;
+	};
+	__be16 h_vlan_proto;
+	__be16 h_vlan_TCI;
+	__be16 h_vlan_encapsulated_proto;
+};
+
+struct mpls_shim_hdr {
+	__be32 label_stack_entry;
+};
+
+struct skb_free_array {
+	unsigned int skb_count;
+	void *skb_array[16];
+};
+
+struct xfrm_offload {
+	struct {
+		__u32 low;
+		__u32 hi;
+	} seq;
+	__u32 flags;
+	__u32 status;
+	__u8 proto;
+	__u8 inner_ipproto;
+};
+
+struct sec_path {
+	int len;
+	int olen;
+	int verified_cnt;
+	struct xfrm_state *xvec[6];
+	struct xfrm_offload ovec[1];
+};
+
+typedef int (*sendmsg_func)(struct sock *, struct msghdr *);
+
+struct scm_fp_list {
+	short count;
+	short max;
+	struct user_struct *user;
+	struct file *fp[253];
+};
+
+struct scm_cookie {
+	struct pid *pid;
+	struct scm_fp_list *fp;
+	struct scm_creds creds;
+	u32 secid;
+};
+
+struct scm_timestamping64 {
+	struct __kernel_timespec ts[3];
+};
+
+struct scm_timestamping {
+	struct __kernel_old_timespec ts[3];
+};
+
+enum {
+	TCA_STATS_UNSPEC = 0,
+	TCA_STATS_BASIC = 1,
+	TCA_STATS_RATE_EST = 2,
+	TCA_STATS_QUEUE = 3,
+	TCA_STATS_APP = 4,
+	TCA_STATS_RATE_EST64 = 5,
+	TCA_STATS_PAD = 6,
+	TCA_STATS_BASIC_HW = 7,
+	TCA_STATS_PKT64 = 8,
+	__TCA_STATS_MAX = 9,
+};
+
+struct gnet_stats_rate_est64 {
+	__u64 bps;
+	__u64 pps;
+};
+
+struct gnet_stats_basic {
+	__u64 bytes;
+	__u32 packets;
+};
+
+struct gnet_stats_rate_est {
+	__u32 bps;
+	__u32 pps;
+};
+
+struct gnet_estimator {
+	signed char interval;
+	unsigned char ewma_log;
+};
+
+struct pcpu_gen_cookie;
+
+struct gen_cookie {
+	struct pcpu_gen_cookie __attribute__((btf_type_tag("percpu"))) *local;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	atomic64_t forward_last;
+	atomic64_t reverse_last;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct pcpu_gen_cookie {
+	local_t nesting;
+	u64 last;
+};
+
+enum rtnl_link_flags {
+	RTNL_FLAG_DOIT_UNLOCKED = 1,
+	RTNL_FLAG_BULK_DEL_SUPPORTED = 2,
+};
+
+enum rtnetlink_groups {
+	RTNLGRP_NONE = 0,
+	RTNLGRP_LINK = 1,
+	RTNLGRP_NOTIFY = 2,
+	RTNLGRP_NEIGH = 3,
+	RTNLGRP_TC = 4,
+	RTNLGRP_IPV4_IFADDR = 5,
+	RTNLGRP_IPV4_MROUTE = 6,
+	RTNLGRP_IPV4_ROUTE = 7,
+	RTNLGRP_IPV4_RULE = 8,
+	RTNLGRP_IPV6_IFADDR = 9,
+	RTNLGRP_IPV6_MROUTE = 10,
+	RTNLGRP_IPV6_ROUTE = 11,
+	RTNLGRP_IPV6_IFINFO = 12,
+	RTNLGRP_DECnet_IFADDR = 13,
+	RTNLGRP_NOP2 = 14,
+	RTNLGRP_DECnet_ROUTE = 15,
+	RTNLGRP_DECnet_RULE = 16,
+	RTNLGRP_NOP4 = 17,
+	RTNLGRP_IPV6_PREFIX = 18,
+	RTNLGRP_IPV6_RULE = 19,
+	RTNLGRP_ND_USEROPT = 20,
+	RTNLGRP_PHONET_IFADDR = 21,
+	RTNLGRP_PHONET_ROUTE = 22,
+	RTNLGRP_DCB = 23,
+	RTNLGRP_IPV4_NETCONF = 24,
+	RTNLGRP_IPV6_NETCONF = 25,
+	RTNLGRP_MDB = 26,
+	RTNLGRP_MPLS_ROUTE = 27,
+	RTNLGRP_NSID = 28,
+	RTNLGRP_MPLS_NETCONF = 29,
+	RTNLGRP_IPV4_MROUTE_R = 30,
+	RTNLGRP_IPV6_MROUTE_R = 31,
+	RTNLGRP_NEXTHOP = 32,
+	RTNLGRP_BRVLAN = 33,
+	RTNLGRP_MCTP_IFADDR = 34,
+	RTNLGRP_TUNNEL = 35,
+	RTNLGRP_STATS = 36,
+	__RTNLGRP_MAX = 37,
+};
+
+enum {
+	NETNSA_NONE = 0,
+	NETNSA_NSID = 1,
+	NETNSA_PID = 2,
+	NETNSA_FD = 3,
+	NETNSA_TARGET_NSID = 4,
+	NETNSA_CURRENT_NSID = 5,
+	__NETNSA_MAX = 6,
+};
+
+struct net_fill_args {
+	u32 portid;
+	u32 seq;
+	int flags;
+	int cmd;
+	int nsid;
+	bool add_ref;
+	int ref_nsid;
+};
+
+struct rtnl_net_dump_cb {
+	struct net *tgt_net;
+	struct net *ref_net;
+	struct sk_buff *skb;
+	struct net_fill_args fillargs;
+	int idx;
+	int s_idx;
+};
+
+typedef int (*rtnl_doit_func)(struct sk_buff *, struct nlmsghdr *, struct netlink_ext_ack *);
+
+typedef int (*rtnl_dumpit_func)(struct sk_buff *, struct netlink_callback *);
+
+struct rtgenmsg {
+	unsigned char rtgen_family;
+};
+
+struct pppoe_tag {
+	__be16 tag_type;
+	__be16 tag_len;
+	char tag_data[0];
+};
+
+struct pppoe_hdr {
+	__u8 type: 4;
+	__u8 ver: 4;
+	__u8 code;
+	__be16 sid;
+	__be16 length;
+	struct pppoe_tag tag[0];
+};
+
+enum flow_dissector_key_id {
+	FLOW_DISSECTOR_KEY_CONTROL = 0,
+	FLOW_DISSECTOR_KEY_BASIC = 1,
+	FLOW_DISSECTOR_KEY_IPV4_ADDRS = 2,
+	FLOW_DISSECTOR_KEY_IPV6_ADDRS = 3,
+	FLOW_DISSECTOR_KEY_PORTS = 4,
+	FLOW_DISSECTOR_KEY_PORTS_RANGE = 5,
+	FLOW_DISSECTOR_KEY_ICMP = 6,
+	FLOW_DISSECTOR_KEY_ETH_ADDRS = 7,
+	FLOW_DISSECTOR_KEY_TIPC = 8,
+	FLOW_DISSECTOR_KEY_ARP = 9,
+	FLOW_DISSECTOR_KEY_VLAN = 10,
+	FLOW_DISSECTOR_KEY_FLOW_LABEL = 11,
+	FLOW_DISSECTOR_KEY_GRE_KEYID = 12,
+	FLOW_DISSECTOR_KEY_MPLS_ENTROPY = 13,
+	FLOW_DISSECTOR_KEY_ENC_KEYID = 14,
+	FLOW_DISSECTOR_KEY_ENC_IPV4_ADDRS = 15,
+	FLOW_DISSECTOR_KEY_ENC_IPV6_ADDRS = 16,
+	FLOW_DISSECTOR_KEY_ENC_CONTROL = 17,
+	FLOW_DISSECTOR_KEY_ENC_PORTS = 18,
+	FLOW_DISSECTOR_KEY_MPLS = 19,
+	FLOW_DISSECTOR_KEY_TCP = 20,
+	FLOW_DISSECTOR_KEY_IP = 21,
+	FLOW_DISSECTOR_KEY_CVLAN = 22,
+	FLOW_DISSECTOR_KEY_ENC_IP = 23,
+	FLOW_DISSECTOR_KEY_ENC_OPTS = 24,
+	FLOW_DISSECTOR_KEY_META = 25,
+	FLOW_DISSECTOR_KEY_CT = 26,
+	FLOW_DISSECTOR_KEY_HASH = 27,
+	FLOW_DISSECTOR_KEY_NUM_OF_VLANS = 28,
+	FLOW_DISSECTOR_KEY_PPPOE = 29,
+	FLOW_DISSECTOR_KEY_L2TPV3 = 30,
+	FLOW_DISSECTOR_KEY_CFM = 31,
+	FLOW_DISSECTOR_KEY_IPSEC = 32,
+	FLOW_DISSECTOR_KEY_MAX = 33,
+};
+
+struct flow_dissector_key {
+	enum flow_dissector_key_id key_id;
+	size_t offset;
+};
+
+struct nf_conn;
+
+struct nf_ct_event {
+	struct nf_conn *ct;
+	u32 portid;
+	int report;
+};
+
+union nf_inet_addr {
+	__u32 all[4];
+	__be32 ip;
+	__be32 ip6[4];
+	struct in_addr in;
+	struct in6_addr in6;
+};
+
+union nf_conntrack_man_proto {
+	__be16 all;
+	struct {
+		__be16 port;
+	} tcp;
+	struct {
+		__be16 port;
+	} udp;
+	struct {
+		__be16 id;
+	} icmp;
+	struct {
+		__be16 port;
+	} dccp;
+	struct {
+		__be16 port;
+	} sctp;
+	struct {
+		__be16 key;
+	} gre;
+};
+
+typedef u16 u_int16_t;
+
+struct nf_conntrack_man {
+	union nf_inet_addr u3;
+	union nf_conntrack_man_proto u;
+	u_int16_t l3num;
+};
+
+struct nf_conntrack_tuple {
+	struct nf_conntrack_man src;
+	struct {
+		union nf_inet_addr u3;
+		union {
+			__be16 all;
+			struct {
+				__be16 port;
+			} tcp;
+			struct {
+				__be16 port;
+			} udp;
+			struct {
+				u_int8_t type;
+				u_int8_t code;
+			} icmp;
+			struct {
+				__be16 port;
+			} dccp;
+			struct {
+				__be16 port;
+			} sctp;
+			struct {
+				__be16 key;
+			} gre;
+		} u;
+		u_int8_t protonum;
+		struct {} __nfct_hash_offsetend;
+		u_int8_t dir;
+	} dst;
+};
+
+struct nf_conntrack_tuple_hash {
+	struct hlist_nulls_node hnnode;
+	struct nf_conntrack_tuple tuple;
+};
+
+struct nf_ct_dccp {
+	u_int8_t role[2];
+	u_int8_t state;
+	u_int8_t last_pkt;
+	u_int8_t last_dir;
+	u_int64_t handshake_seq;
+};
+
+enum sctp_conntrack {
+	SCTP_CONNTRACK_NONE = 0,
+	SCTP_CONNTRACK_CLOSED = 1,
+	SCTP_CONNTRACK_COOKIE_WAIT = 2,
+	SCTP_CONNTRACK_COOKIE_ECHOED = 3,
+	SCTP_CONNTRACK_ESTABLISHED = 4,
+	SCTP_CONNTRACK_SHUTDOWN_SENT = 5,
+	SCTP_CONNTRACK_SHUTDOWN_RECD = 6,
+	SCTP_CONNTRACK_SHUTDOWN_ACK_SENT = 7,
+	SCTP_CONNTRACK_HEARTBEAT_SENT = 8,
+	SCTP_CONNTRACK_HEARTBEAT_ACKED = 9,
+	SCTP_CONNTRACK_MAX = 10,
+};
+
+struct ip_ct_sctp {
+	enum sctp_conntrack state;
+	__be32 vtag[2];
+	u8 init[2];
+	u8 last_dir;
+	u8 flags;
+};
+
+struct ip_ct_tcp_state {
+	u_int32_t td_end;
+	u_int32_t td_maxend;
+	u_int32_t td_maxwin;
+	u_int32_t td_maxack;
+	u_int8_t td_scale;
+	u_int8_t flags;
+};
+
+struct ip_ct_tcp {
+	struct ip_ct_tcp_state seen[2];
+	u_int8_t state;
+	u_int8_t last_dir;
+	u_int8_t retrans;
+	u_int8_t last_index;
+	u_int32_t last_seq;
+	u_int32_t last_ack;
+	u_int32_t last_end;
+	u_int16_t last_win;
+	u_int8_t last_wscale;
+	u_int8_t last_flags;
+};
+
+struct nf_ct_udp {
+	unsigned long stream_ts;
+};
+
+struct nf_ct_gre {
+	unsigned int stream_timeout;
+	unsigned int timeout;
+};
+
+union nf_conntrack_proto {
+	struct nf_ct_dccp dccp;
+	struct ip_ct_sctp sctp;
+	struct ip_ct_tcp tcp;
+	struct nf_ct_udp udp;
+	struct nf_ct_gre gre;
+	unsigned int tmpl_padto;
+};
+
+struct nf_ct_ext;
+
+struct nf_conn {
+	struct nf_conntrack ct_general;
+	spinlock_t lock;
+	u32 timeout;
+	struct nf_conntrack_tuple_hash tuplehash[2];
+	unsigned long status;
+	possible_net_t ct_net;
+	struct hlist_node nat_bysource;
+	struct {} __nfct_init_offset;
+	struct nf_conn *master;
+	u_int32_t mark;
+	u_int32_t secmark;
+	struct nf_ct_ext *ext;
+	union nf_conntrack_proto proto;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_oem_data1;
+};
+
+struct nf_ct_ext {
+	u8 offset[5];
+	u8 len;
+	unsigned int gen_id;
+	long: 0;
+	char data[0];
+};
+
+struct nf_conntrack_expect;
+
+struct nf_exp_event {
+	struct nf_conntrack_expect *exp;
+	u32 portid;
+	int report;
+};
+
+struct nf_conntrack_tuple_mask {
+	struct {
+		union nf_inet_addr u3;
+		union nf_conntrack_man_proto u;
+	} src;
+};
+
+enum ip_conntrack_dir {
+	IP_CT_DIR_ORIGINAL = 0,
+	IP_CT_DIR_REPLY = 1,
+	IP_CT_DIR_MAX = 2,
+};
+
+struct nf_conntrack_helper;
+
+struct nf_conntrack_expect {
+	struct hlist_node lnode;
+	struct hlist_node hnode;
+	struct nf_conntrack_tuple tuple;
+	struct nf_conntrack_tuple_mask mask;
+	refcount_t use;
+	unsigned int flags;
+	unsigned int class;
+	void (*expectfn)(struct nf_conn *, struct nf_conntrack_expect *);
+	struct nf_conntrack_helper *helper;
+	struct nf_conn *master;
+	struct timer_list timeout;
+	union nf_inet_addr saved_addr;
+	union nf_conntrack_man_proto saved_proto;
+	enum ip_conntrack_dir dir;
+	struct callback_head rcu;
+};
+
+struct tcf_walker {
+	int stop;
+	int skip;
+	int count;
+	bool nonempty;
+	unsigned long cookie;
+	int (*fn)(struct tcf_proto *, void *, struct tcf_walker *);
+};
+
+struct tc_action;
+
+struct tcf_exts_miss_cookie_node;
+
+struct tcf_exts {
+	__u32 type;
+	int nr_actions;
+	struct tc_action **actions;
+	struct net *net;
+	netns_tracker ns_tracker;
+	struct tcf_exts_miss_cookie_node *miss_cookie_node;
+	int action;
+	int police;
+};
+
+struct tcf_t {
+	__u64 install;
+	__u64 lastuse;
+	__u64 expires;
+	__u64 firstuse;
+};
+
+struct tc_action_ops;
+
+struct tcf_idrinfo;
+
+struct tc_cookie;
+
+struct tc_action {
+	const struct tc_action_ops *ops;
+	__u32 type;
+	struct tcf_idrinfo *idrinfo;
+	u32 tcfa_index;
+	refcount_t tcfa_refcnt;
+	atomic_t tcfa_bindcnt;
+	int tcfa_action;
+	struct tcf_t tcfa_tm;
+	long: 64;
+	struct gnet_stats_basic_sync tcfa_bstats;
+	struct gnet_stats_basic_sync tcfa_bstats_hw;
+	struct gnet_stats_queue tcfa_qstats;
+	struct net_rate_estimator __attribute__((btf_type_tag("rcu"))) *tcfa_rate_est;
+	spinlock_t tcfa_lock;
+	struct gnet_stats_basic_sync __attribute__((btf_type_tag("percpu"))) *cpu_bstats;
+	struct gnet_stats_basic_sync __attribute__((btf_type_tag("percpu"))) *cpu_bstats_hw;
+	struct gnet_stats_queue __attribute__((btf_type_tag("percpu"))) *cpu_qstats;
+	struct tc_cookie __attribute__((btf_type_tag("rcu"))) *user_cookie;
+	struct tcf_chain __attribute__((btf_type_tag("rcu"))) *goto_chain;
+	u32 tcfa_flags;
+	u8 hw_stats;
+	u8 used_hw_stats;
+	bool used_hw_stats_valid;
+	u32 in_hw_count;
+};
+
+enum tca_id {
+	TCA_ID_UNSPEC = 0,
+	TCA_ID_POLICE = 1,
+	TCA_ID_GACT = 5,
+	TCA_ID_IPT = 6,
+	TCA_ID_PEDIT = 7,
+	TCA_ID_MIRRED = 8,
+	TCA_ID_NAT = 9,
+	TCA_ID_XT = 10,
+	TCA_ID_SKBEDIT = 11,
+	TCA_ID_VLAN = 12,
+	TCA_ID_BPF = 13,
+	TCA_ID_CONNMARK = 14,
+	TCA_ID_SKBMOD = 15,
+	TCA_ID_CSUM = 16,
+	TCA_ID_TUNNEL_KEY = 17,
+	TCA_ID_SIMP = 22,
+	TCA_ID_IFE = 25,
+	TCA_ID_SAMPLE = 26,
+	TCA_ID_CTINFO = 27,
+	TCA_ID_MPLS = 28,
+	TCA_ID_CT = 29,
+	TCA_ID_GATE = 30,
+	__TCA_ID_MAX = 255,
+};
+
+typedef void (*tc_action_priv_destructor)(void *);
+
+struct psample_group;
+
+struct tc_action_ops {
+	struct list_head head;
+	char kind[16];
+	enum tca_id id;
+	unsigned int net_id;
+	size_t size;
+	struct module *owner;
+	int (*act)(struct sk_buff *, const struct tc_action *, struct tcf_result *);
+	int (*dump)(struct sk_buff *, struct tc_action *, int, int);
+	void (*cleanup)(struct tc_action *);
+	int (*lookup)(struct net *, struct tc_action **, u32);
+	int (*init)(struct net *, struct nlattr *, struct nlattr *, struct tc_action **, struct tcf_proto *, u32, struct netlink_ext_ack *);
+	int (*walk)(struct net *, struct sk_buff *, struct netlink_callback *, int, const struct tc_action_ops *, struct netlink_ext_ack *);
+	void (*stats_update)(struct tc_action *, u64, u64, u64, u64, bool);
+	size_t (*get_fill_size)(const struct tc_action *);
+	struct net_device * (*get_dev)(const struct tc_action *, tc_action_priv_destructor *);
+	struct psample_group * (*get_psample_group)(const struct tc_action *, tc_action_priv_destructor *);
+	int (*offload_act_setup)(struct tc_action *, void *, u32 *, bool, struct netlink_ext_ack *);
+};
+
+struct tcf_idrinfo {
+	struct mutex lock;
+	struct idr action_idr;
+	struct net *net;
+};
+
+struct tc_cookie {
+	u8 *data;
+	u32 len;
+	struct callback_head rcu;
+};
+
+enum devlink_port_type {
+	DEVLINK_PORT_TYPE_NOTSET = 0,
+	DEVLINK_PORT_TYPE_AUTO = 1,
+	DEVLINK_PORT_TYPE_ETH = 2,
+	DEVLINK_PORT_TYPE_IB = 3,
+};
+
+enum devlink_port_flavour {
+	DEVLINK_PORT_FLAVOUR_PHYSICAL = 0,
+	DEVLINK_PORT_FLAVOUR_CPU = 1,
+	DEVLINK_PORT_FLAVOUR_DSA = 2,
+	DEVLINK_PORT_FLAVOUR_PCI_PF = 3,
+	DEVLINK_PORT_FLAVOUR_PCI_VF = 4,
+	DEVLINK_PORT_FLAVOUR_VIRTUAL = 5,
+	DEVLINK_PORT_FLAVOUR_UNUSED = 6,
+	DEVLINK_PORT_FLAVOUR_PCI_SF = 7,
+};
+
+struct devlink_port_phys_attrs {
+	u32 port_number;
+	u32 split_subport_number;
+};
+
+struct devlink_port_pci_pf_attrs {
+	u32 controller;
+	u16 pf;
+	u8 external: 1;
+};
+
+struct devlink_port_pci_vf_attrs {
+	u32 controller;
+	u16 pf;
+	u16 vf;
+	u8 external: 1;
+};
+
+struct devlink_port_pci_sf_attrs {
+	u32 controller;
+	u32 sf;
+	u16 pf;
+	u8 external: 1;
+};
+
+struct devlink_port_attrs {
+	u8 split: 1;
+	u8 splittable: 1;
+	u32 lanes;
+	enum devlink_port_flavour flavour;
+	struct netdev_phys_item_id switch_id;
+	union {
+		struct devlink_port_phys_attrs phys;
+		struct devlink_port_pci_pf_attrs pci_pf;
+		struct devlink_port_pci_vf_attrs pci_vf;
+		struct devlink_port_pci_sf_attrs pci_sf;
+	};
+};
+
+struct devlink;
+
+struct devlink_port_ops;
+
+struct ib_device;
+
+struct devlink_rate;
+
+struct devlink_linecard;
+
+struct devlink_port {
+	struct list_head list;
+	struct list_head region_list;
+	struct devlink *devlink;
+	const struct devlink_port_ops *ops;
+	unsigned int index;
+	spinlock_t type_lock;
+	enum devlink_port_type type;
+	enum devlink_port_type desired_type;
+	union {
+		struct {
+			struct net_device *netdev;
+			int ifindex;
+			char ifname[16];
+		} type_eth;
+		struct {
+			struct ib_device *ibdev;
+		} type_ib;
+	};
+	struct devlink_port_attrs attrs;
+	u8 attrs_set: 1;
+	u8 switch_port: 1;
+	u8 registered: 1;
+	u8 initialized: 1;
+	struct delayed_work type_warn_dw;
+	struct list_head reporter_list;
+	struct devlink_rate *devlink_rate;
+	struct devlink_linecard *linecard;
+};
+
+enum devlink_port_fn_state {
+	DEVLINK_PORT_FN_STATE_INACTIVE = 0,
+	DEVLINK_PORT_FN_STATE_ACTIVE = 1,
+};
+
+enum devlink_port_fn_opstate {
+	DEVLINK_PORT_FN_OPSTATE_DETACHED = 0,
+	DEVLINK_PORT_FN_OPSTATE_ATTACHED = 1,
+};
+
+struct devlink_port_ops {
+	int (*port_split)(struct devlink *, struct devlink_port *, unsigned int, struct netlink_ext_ack *);
+	int (*port_unsplit)(struct devlink *, struct devlink_port *, struct netlink_ext_ack *);
+	int (*port_type_set)(struct devlink_port *, enum devlink_port_type);
+	int (*port_del)(struct devlink *, struct devlink_port *, struct netlink_ext_ack *);
+	int (*port_fn_hw_addr_get)(struct devlink_port *, u8 *, int *, struct netlink_ext_ack *);
+	int (*port_fn_hw_addr_set)(struct devlink_port *, const u8 *, int, struct netlink_ext_ack *);
+	int (*port_fn_roce_get)(struct devlink_port *, bool *, struct netlink_ext_ack *);
+	int (*port_fn_roce_set)(struct devlink_port *, bool, struct netlink_ext_ack *);
+	int (*port_fn_migratable_get)(struct devlink_port *, bool *, struct netlink_ext_ack *);
+	int (*port_fn_migratable_set)(struct devlink_port *, bool, struct netlink_ext_ack *);
+	int (*port_fn_state_get)(struct devlink_port *, enum devlink_port_fn_state *, enum devlink_port_fn_opstate *, struct netlink_ext_ack *);
+	int (*port_fn_state_set)(struct devlink_port *, enum devlink_port_fn_state, struct netlink_ext_ack *);
+	int (*port_fn_ipsec_crypto_get)(struct devlink_port *, bool *, struct netlink_ext_ack *);
+	int (*port_fn_ipsec_crypto_set)(struct devlink_port *, bool, struct netlink_ext_ack *);
+	int (*port_fn_ipsec_packet_get)(struct devlink_port *, bool *, struct netlink_ext_ack *);
+	int (*port_fn_ipsec_packet_set)(struct devlink_port *, bool, struct netlink_ext_ack *);
+};
+
+enum devlink_rate_type {
+	DEVLINK_RATE_TYPE_LEAF = 0,
+	DEVLINK_RATE_TYPE_NODE = 1,
+};
+
+struct devlink_rate {
+	struct list_head list;
+	enum devlink_rate_type type;
+	struct devlink *devlink;
+	void *priv;
+	u64 tx_share;
+	u64 tx_max;
+	struct devlink_rate *parent;
+	union {
+		struct devlink_port *devlink_port;
+		struct {
+			char *name;
+			refcount_t refcnt;
+		};
+	};
+	u32 tx_priority;
+	u32 tx_weight;
+};
+
+enum ip_conntrack_info {
+	IP_CT_ESTABLISHED = 0,
+	IP_CT_RELATED = 1,
+	IP_CT_NEW = 2,
+	IP_CT_IS_REPLY = 3,
+	IP_CT_ESTABLISHED_REPLY = 3,
+	IP_CT_RELATED_REPLY = 4,
+	IP_CT_NUMBER = 5,
+	IP_CT_UNTRACKED = 7,
+};
+
+enum {
+	TCA_FLOWER_KEY_CT_FLAGS_NEW = 1,
+	TCA_FLOWER_KEY_CT_FLAGS_ESTABLISHED = 2,
+	TCA_FLOWER_KEY_CT_FLAGS_RELATED = 4,
+	TCA_FLOWER_KEY_CT_FLAGS_TRACKED = 8,
+	TCA_FLOWER_KEY_CT_FLAGS_INVALID = 16,
+	TCA_FLOWER_KEY_CT_FLAGS_REPLY = 32,
+	__TCA_FLOWER_KEY_CT_FLAGS_MAX = 33,
+};
+
+enum flow_dissect_ret {
+	FLOW_DISSECT_RET_OUT_GOOD = 0,
+	FLOW_DISSECT_RET_OUT_BAD = 1,
+	FLOW_DISSECT_RET_PROTO_AGAIN = 2,
+	FLOW_DISSECT_RET_IPPROTO_AGAIN = 3,
+	FLOW_DISSECT_RET_CONTINUE = 4,
+};
+
+enum bpf_ret_code {
+	BPF_OK = 0,
+	BPF_DROP = 2,
+	BPF_REDIRECT = 7,
+	BPF_LWT_REROUTE = 128,
+	BPF_FLOW_DISSECTOR_CONTINUE = 129,
+};
+
+enum lwtunnel_encap_types {
+	LWTUNNEL_ENCAP_NONE = 0,
+	LWTUNNEL_ENCAP_MPLS = 1,
+	LWTUNNEL_ENCAP_IP = 2,
+	LWTUNNEL_ENCAP_ILA = 3,
+	LWTUNNEL_ENCAP_IP6 = 4,
+	LWTUNNEL_ENCAP_SEG6 = 5,
+	LWTUNNEL_ENCAP_BPF = 6,
+	LWTUNNEL_ENCAP_SEG6_LOCAL = 7,
+	LWTUNNEL_ENCAP_RPL = 8,
+	LWTUNNEL_ENCAP_IOAM6 = 9,
+	LWTUNNEL_ENCAP_XFRM = 10,
+	__LWTUNNEL_ENCAP_MAX = 11,
+};
+
+enum batadv_packettype {
+	BATADV_IV_OGM = 0,
+	BATADV_BCAST = 1,
+	BATADV_CODED = 2,
+	BATADV_ELP = 3,
+	BATADV_OGM2 = 4,
+	BATADV_MCAST = 5,
+	BATADV_UNICAST = 64,
+	BATADV_UNICAST_FRAG = 65,
+	BATADV_UNICAST_4ADDR = 66,
+	BATADV_ICMP = 67,
+	BATADV_UNICAST_TVLV = 68,
+};
+
+struct _flow_keys_digest_data {
+	__be16 n_proto;
+	u8 ip_proto;
+	u8 padding;
+	__be32 ports;
+	__be32 src;
+	__be32 dst;
+};
+
+union tcp_word_hdr {
+	struct tcphdr hdr;
+	__be32 words[5];
+};
+
+struct mpls_label {
+	__be32 entry;
+};
+
+struct flow_dissector_mpls_lse {
+	u32 mpls_ttl: 8;
+	u32 mpls_bos: 1;
+	u32 mpls_tc: 3;
+	u32 mpls_label: 20;
+};
+
+struct flow_dissector_key_mpls {
+	struct flow_dissector_mpls_lse ls[7];
+	u8 used_lses;
+};
+
+struct flow_dissector_key_keyid {
+	__be32 keyid;
+};
+
+struct flow_dissector_key_ip {
+	__u8 tos;
+	__u8 ttl;
+};
+
+struct batadv_unicast_packet {
+	__u8 packet_type;
+	__u8 version;
+	__u8 ttl;
+	__u8 ttvn;
+	__u8 dest[6];
+};
+
+struct arphdr {
+	__be16 ar_hrd;
+	__be16 ar_pro;
+	unsigned char ar_hln;
+	unsigned char ar_pln;
+	__be16 ar_op;
+};
+
+struct flow_dissector_key_arp {
+	__u32 sip;
+	__u32 tip;
+	__u8 op;
+	unsigned char sha[6];
+	unsigned char tha[6];
+};
+
+struct tipc_basic_hdr {
+	__be32 w[4];
+};
+
+struct flow_dissector_key_cfm {
+	u8 mdl_ver;
+	u8 opcode;
+};
+
+struct flow_dissector_key_ipsec {
+	__be32 spi;
+};
+
+struct flow_dissector_key_icmp {
+	struct {
+		u8 type;
+		u8 code;
+	};
+	u16 id;
+};
+
+struct icmphdr {
+	__u8 type;
+	__u8 code;
+	__sum16 checksum;
+	union {
+		struct {
+			__be16 id;
+			__be16 sequence;
+		} echo;
+		__be32 gateway;
+		struct {
+			__be16 __unused;
+			__be16 mtu;
+		} frag;
+		__u8 reserved[4];
+	} un;
+};
+
+struct flow_dissector_key_tcp {
+	__be16 flags;
+};
+
+struct gre_base_hdr {
+	__be16 flags;
+	__be16 protocol;
+};
+
+struct ip_esp_hdr {
+	__be32 spi;
+	__be32 seq_no;
+	__u8 enc_data[0];
+};
+
+struct flow_dissector_key_l2tpv3 {
+	__be32 session_id;
+};
+
+struct flow_dissector_key_ports {
+	union {
+		__be32 ports;
+		struct {
+			__be16 src;
+			__be16 dst;
+		};
+	};
+};
+
+struct flow_dissector_key_ipv4_addrs {
+	__be32 src;
+	__be32 dst;
+};
+
+struct flow_dissector_key_ipv6_addrs {
+	struct in6_addr src;
+	struct in6_addr dst;
+};
+
+struct flow_dissector_key_tipc {
+	__be32 key;
+};
+
+struct flow_dissector_key_addrs {
+	union {
+		struct flow_dissector_key_ipv4_addrs v4addrs;
+		struct flow_dissector_key_ipv6_addrs v6addrs;
+		struct flow_dissector_key_tipc tipckey;
+	};
+};
+
+struct flow_dissector_key_tags {
+	u32 flow_label;
+};
+
+struct flow_dissector_key_vlan {
+	union {
+		struct {
+			u16 vlan_id: 12;
+			u16 vlan_dei: 1;
+			u16 vlan_priority: 3;
+		};
+		__be16 vlan_tci;
+	};
+	__be16 vlan_tpid;
+	__be16 vlan_eth_type;
+	u16 padding;
+};
+
+struct flow_keys {
+	struct flow_dissector_key_control control;
+	struct flow_dissector_key_basic basic;
+	struct flow_dissector_key_tags tags;
+	struct flow_dissector_key_vlan vlan;
+	struct flow_dissector_key_vlan cvlan;
+	struct flow_dissector_key_keyid keyid;
+	struct flow_dissector_key_ports ports;
+	struct flow_dissector_key_icmp icmp;
+	struct flow_dissector_key_addrs addrs;
+	long: 0;
+};
+
+struct flow_dissector_key_meta {
+	int ingress_ifindex;
+	u16 ingress_iftype;
+	u8 l2_miss;
+};
+
+struct flow_dissector_key_ct {
+	u16 ct_state;
+	u16 ct_zone;
+	u32 ct_mark;
+	u32 ct_labels[4];
+};
+
+struct nf_conn_labels {
+	unsigned long bits[2];
+};
+
+struct flow_dissector_key_enc_opts {
+	u8 data[255];
+	u8 len;
+	__be16 dst_opt_type;
+};
+
+struct flow_dissector_key_hash {
+	u32 hash;
+};
+
+struct clock_identity {
+	u8 id[8];
+};
+
+struct port_identity {
+	struct clock_identity clock_identity;
+	__be16 port_number;
+};
+
+struct ptp_header {
+	u8 tsmt;
+	u8 ver;
+	__be16 message_length;
+	u8 domain_number;
+	u8 reserved1;
+	u8 flag_field[2];
+	__be64 correction;
+	__be32 reserved2;
+	struct port_identity source_port_identity;
+	__be16 sequence_id;
+	u8 control;
+	u8 log_message_interval;
+} __attribute__((packed));
+
+struct hsr_tag {
+	__be16 path_and_LSDU_size;
+	__be16 sequence_nr;
+	__be16 encap_proto;
+};
+
+struct flow_dissector_key_eth_addrs {
+	unsigned char dst[6];
+	unsigned char src[6];
+};
+
+struct flow_dissector_key_num_of_vlans {
+	u8 num_of_vlans;
+};
+
+struct flow_dissector_key_pppoe {
+	__be16 session_id;
+	__be16 ppp_proto;
+	__be16 type;
+};
+
+struct flow_keys_digest {
+	u8 data[16];
+};
+
+struct rps_map;
+
+struct rps_dev_flow_table;
+
+struct netdev_rx_queue {
+	struct xdp_rxq_info xdp_rxq;
+	struct rps_map __attribute__((btf_type_tag("rcu"))) *rps_map;
+	struct rps_dev_flow_table __attribute__((btf_type_tag("rcu"))) *rps_flow_table;
+	struct kobject kobj;
+	struct net_device *dev;
+	netdevice_tracker dev_tracker;
+	struct xsk_buff_pool *pool;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+	u64 android_kabi_reserved3;
+	u64 android_kabi_reserved4;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct rps_map {
+	unsigned int len;
+	struct callback_head rcu;
+	u16 cpus[0];
+};
+
+struct rps_dev_flow {
+	u16 cpu;
+	u16 filter;
+	unsigned int last_qtail;
+};
+
+struct rps_dev_flow_table {
+	unsigned int mask;
+	struct callback_head rcu;
+	struct rps_dev_flow flows[0];
+};
+
+struct bpf_xdp_link {
+	struct bpf_link link;
+	struct net_device *dev;
+	int flags;
+};
+
+enum xps_map_type {
+	XPS_CPUS = 0,
+	XPS_RXQS = 1,
+	XPS_MAPS_MAX = 2,
+};
+
+enum qdisc_state_t {
+	__QDISC_STATE_SCHED = 0,
+	__QDISC_STATE_DEACTIVATED = 1,
+	__QDISC_STATE_MISSED = 2,
+	__QDISC_STATE_DRAINING = 3,
+};
+
+enum {
+	NAPIF_STATE_SCHED = 1,
+	NAPIF_STATE_MISSED = 2,
+	NAPIF_STATE_DISABLE = 4,
+	NAPIF_STATE_NPSVC = 8,
+	NAPIF_STATE_LISTED = 16,
+	NAPIF_STATE_NO_BUSY_POLL = 32,
+	NAPIF_STATE_IN_BUSY_POLL = 64,
+	NAPIF_STATE_PREFER_BUSY_POLL = 128,
+	NAPIF_STATE_THREADED = 256,
+	NAPIF_STATE_SCHED_THREADED = 512,
+};
+
+enum {
+	LINUX_MIB_NUM = 0,
+	LINUX_MIB_SYNCOOKIESSENT = 1,
+	LINUX_MIB_SYNCOOKIESRECV = 2,
+	LINUX_MIB_SYNCOOKIESFAILED = 3,
+	LINUX_MIB_EMBRYONICRSTS = 4,
+	LINUX_MIB_PRUNECALLED = 5,
+	LINUX_MIB_RCVPRUNED = 6,
+	LINUX_MIB_OFOPRUNED = 7,
+	LINUX_MIB_OUTOFWINDOWICMPS = 8,
+	LINUX_MIB_LOCKDROPPEDICMPS = 9,
+	LINUX_MIB_ARPFILTER = 10,
+	LINUX_MIB_TIMEWAITED = 11,
+	LINUX_MIB_TIMEWAITRECYCLED = 12,
+	LINUX_MIB_TIMEWAITKILLED = 13,
+	LINUX_MIB_PAWSACTIVEREJECTED = 14,
+	LINUX_MIB_PAWSESTABREJECTED = 15,
+	LINUX_MIB_DELAYEDACKS = 16,
+	LINUX_MIB_DELAYEDACKLOCKED = 17,
+	LINUX_MIB_DELAYEDACKLOST = 18,
+	LINUX_MIB_LISTENOVERFLOWS = 19,
+	LINUX_MIB_LISTENDROPS = 20,
+	LINUX_MIB_TCPHPHITS = 21,
+	LINUX_MIB_TCPPUREACKS = 22,
+	LINUX_MIB_TCPHPACKS = 23,
+	LINUX_MIB_TCPRENORECOVERY = 24,
+	LINUX_MIB_TCPSACKRECOVERY = 25,
+	LINUX_MIB_TCPSACKRENEGING = 26,
+	LINUX_MIB_TCPSACKREORDER = 27,
+	LINUX_MIB_TCPRENOREORDER = 28,
+	LINUX_MIB_TCPTSREORDER = 29,
+	LINUX_MIB_TCPFULLUNDO = 30,
+	LINUX_MIB_TCPPARTIALUNDO = 31,
+	LINUX_MIB_TCPDSACKUNDO = 32,
+	LINUX_MIB_TCPLOSSUNDO = 33,
+	LINUX_MIB_TCPLOSTRETRANSMIT = 34,
+	LINUX_MIB_TCPRENOFAILURES = 35,
+	LINUX_MIB_TCPSACKFAILURES = 36,
+	LINUX_MIB_TCPLOSSFAILURES = 37,
+	LINUX_MIB_TCPFASTRETRANS = 38,
+	LINUX_MIB_TCPSLOWSTARTRETRANS = 39,
+	LINUX_MIB_TCPTIMEOUTS = 40,
+	LINUX_MIB_TCPLOSSPROBES = 41,
+	LINUX_MIB_TCPLOSSPROBERECOVERY = 42,
+	LINUX_MIB_TCPRENORECOVERYFAIL = 43,
+	LINUX_MIB_TCPSACKRECOVERYFAIL = 44,
+	LINUX_MIB_TCPRCVCOLLAPSED = 45,
+	LINUX_MIB_TCPDSACKOLDSENT = 46,
+	LINUX_MIB_TCPDSACKOFOSENT = 47,
+	LINUX_MIB_TCPDSACKRECV = 48,
+	LINUX_MIB_TCPDSACKOFORECV = 49,
+	LINUX_MIB_TCPABORTONDATA = 50,
+	LINUX_MIB_TCPABORTONCLOSE = 51,
+	LINUX_MIB_TCPABORTONMEMORY = 52,
+	LINUX_MIB_TCPABORTONTIMEOUT = 53,
+	LINUX_MIB_TCPABORTONLINGER = 54,
+	LINUX_MIB_TCPABORTFAILED = 55,
+	LINUX_MIB_TCPMEMORYPRESSURES = 56,
+	LINUX_MIB_TCPMEMORYPRESSURESCHRONO = 57,
+	LINUX_MIB_TCPSACKDISCARD = 58,
+	LINUX_MIB_TCPDSACKIGNOREDOLD = 59,
+	LINUX_MIB_TCPDSACKIGNOREDNOUNDO = 60,
+	LINUX_MIB_TCPSPURIOUSRTOS = 61,
+	LINUX_MIB_TCPMD5NOTFOUND = 62,
+	LINUX_MIB_TCPMD5UNEXPECTED = 63,
+	LINUX_MIB_TCPMD5FAILURE = 64,
+	LINUX_MIB_SACKSHIFTED = 65,
+	LINUX_MIB_SACKMERGED = 66,
+	LINUX_MIB_SACKSHIFTFALLBACK = 67,
+	LINUX_MIB_TCPBACKLOGDROP = 68,
+	LINUX_MIB_PFMEMALLOCDROP = 69,
+	LINUX_MIB_TCPMINTTLDROP = 70,
+	LINUX_MIB_TCPDEFERACCEPTDROP = 71,
+	LINUX_MIB_IPRPFILTER = 72,
+	LINUX_MIB_TCPTIMEWAITOVERFLOW = 73,
+	LINUX_MIB_TCPREQQFULLDOCOOKIES = 74,
+	LINUX_MIB_TCPREQQFULLDROP = 75,
+	LINUX_MIB_TCPRETRANSFAIL = 76,
+	LINUX_MIB_TCPRCVCOALESCE = 77,
+	LINUX_MIB_TCPBACKLOGCOALESCE = 78,
+	LINUX_MIB_TCPOFOQUEUE = 79,
+	LINUX_MIB_TCPOFODROP = 80,
+	LINUX_MIB_TCPOFOMERGE = 81,
+	LINUX_MIB_TCPCHALLENGEACK = 82,
+	LINUX_MIB_TCPSYNCHALLENGE = 83,
+	LINUX_MIB_TCPFASTOPENACTIVE = 84,
+	LINUX_MIB_TCPFASTOPENACTIVEFAIL = 85,
+	LINUX_MIB_TCPFASTOPENPASSIVE = 86,
+	LINUX_MIB_TCPFASTOPENPASSIVEFAIL = 87,
+	LINUX_MIB_TCPFASTOPENLISTENOVERFLOW = 88,
+	LINUX_MIB_TCPFASTOPENCOOKIEREQD = 89,
+	LINUX_MIB_TCPFASTOPENBLACKHOLE = 90,
+	LINUX_MIB_TCPSPURIOUS_RTX_HOSTQUEUES = 91,
+	LINUX_MIB_BUSYPOLLRXPACKETS = 92,
+	LINUX_MIB_TCPAUTOCORKING = 93,
+	LINUX_MIB_TCPFROMZEROWINDOWADV = 94,
+	LINUX_MIB_TCPTOZEROWINDOWADV = 95,
+	LINUX_MIB_TCPWANTZEROWINDOWADV = 96,
+	LINUX_MIB_TCPSYNRETRANS = 97,
+	LINUX_MIB_TCPORIGDATASENT = 98,
+	LINUX_MIB_TCPHYSTARTTRAINDETECT = 99,
+	LINUX_MIB_TCPHYSTARTTRAINCWND = 100,
+	LINUX_MIB_TCPHYSTARTDELAYDETECT = 101,
+	LINUX_MIB_TCPHYSTARTDELAYCWND = 102,
+	LINUX_MIB_TCPACKSKIPPEDSYNRECV = 103,
+	LINUX_MIB_TCPACKSKIPPEDPAWS = 104,
+	LINUX_MIB_TCPACKSKIPPEDSEQ = 105,
+	LINUX_MIB_TCPACKSKIPPEDFINWAIT2 = 106,
+	LINUX_MIB_TCPACKSKIPPEDTIMEWAIT = 107,
+	LINUX_MIB_TCPACKSKIPPEDCHALLENGE = 108,
+	LINUX_MIB_TCPWINPROBE = 109,
+	LINUX_MIB_TCPKEEPALIVE = 110,
+	LINUX_MIB_TCPMTUPFAIL = 111,
+	LINUX_MIB_TCPMTUPSUCCESS = 112,
+	LINUX_MIB_TCPDELIVERED = 113,
+	LINUX_MIB_TCPDELIVEREDCE = 114,
+	LINUX_MIB_TCPACKCOMPRESSED = 115,
+	LINUX_MIB_TCPZEROWINDOWDROP = 116,
+	LINUX_MIB_TCPRCVQDROP = 117,
+	LINUX_MIB_TCPWQUEUETOOBIG = 118,
+	LINUX_MIB_TCPFASTOPENPASSIVEALTKEY = 119,
+	LINUX_MIB_TCPTIMEOUTREHASH = 120,
+	LINUX_MIB_TCPDUPLICATEDATAREHASH = 121,
+	LINUX_MIB_TCPDSACKRECVSEGS = 122,
+	LINUX_MIB_TCPDSACKIGNOREDDUBIOUS = 123,
+	LINUX_MIB_TCPMIGRATEREQSUCCESS = 124,
+	LINUX_MIB_TCPMIGRATEREQFAILURE = 125,
+	LINUX_MIB_TCPPLBREHASH = 126,
+	__LINUX_MIB_MAX = 127,
+};
+
+enum netdev_offload_xstats_type {
+	NETDEV_OFFLOAD_XSTATS_TYPE_L3 = 1,
+};
+
+enum bpf_xdp_mode {
+	XDP_MODE_SKB = 0,
+	XDP_MODE_DRV = 1,
+	XDP_MODE_HW = 2,
+	__MAX_XDP_MODE = 3,
+};
+
+enum {
+	IF_OPER_UNKNOWN = 0,
+	IF_OPER_NOTPRESENT = 1,
+	IF_OPER_DOWN = 2,
+	IF_OPER_LOWERLAYERDOWN = 3,
+	IF_OPER_TESTING = 4,
+	IF_OPER_DORMANT = 5,
+	IF_OPER_UP = 6,
+};
+
+enum {
+	NFPROTO_UNSPEC = 0,
+	NFPROTO_INET = 1,
+	NFPROTO_IPV4 = 2,
+	NFPROTO_ARP = 3,
+	NFPROTO_NETDEV = 5,
+	NFPROTO_BRIDGE = 7,
+	NFPROTO_IPV6 = 10,
+	NFPROTO_NUMPROTO = 11,
+};
+
+enum nf_dev_hooks {
+	NF_NETDEV_INGRESS = 0,
+	NF_NETDEV_EGRESS = 1,
+	NF_NETDEV_NUMHOOKS = 2,
+};
+
+enum tcx_action_base {
+	TCX_NEXT = -1,
+	TCX_PASS = 0,
+	TCX_DROP = 2,
+	TCX_REDIRECT = 7,
+};
+
+enum qdisc_state2_t {
+	__QDISC_STATE2_RUNNING = 0,
+};
+
+struct netdev_adjacent {
+	struct net_device *dev;
+	netdevice_tracker dev_tracker;
+	bool master;
+	bool ignore;
+	u16 ref_nr;
+	void *private;
+	struct list_head list;
+	struct callback_head rcu;
+};
+
+struct dev_kfree_skb_cb {
+	enum skb_drop_reason reason;
+};
+
+struct tc_skb_cb {
+	struct qdisc_skb_cb qdisc_cb;
+	u16 mru;
+	u8 post_ct: 1;
+	u8 post_ct_snat: 1;
+	u8 post_ct_dnat: 1;
+	u16 zone;
+};
+
+struct netdev_net_notifier {
+	struct list_head list;
+	struct notifier_block *nb;
+};
+
+struct net_device_path_stack {
+	int num_paths;
+	struct net_device_path path[5];
+};
+
+struct netdev_nested_priv {
+	unsigned char flags;
+	void *data;
+};
+
+struct netdev_notifier_offload_xstats_rd;
+
+struct netdev_notifier_offload_xstats_ru;
+
+struct netdev_notifier_offload_xstats_info {
+	struct netdev_notifier_info info;
+	enum netdev_offload_xstats_type type;
+	union {
+		struct netdev_notifier_offload_xstats_rd *report_delta;
+		struct netdev_notifier_offload_xstats_ru *report_used;
+	};
+};
+
+struct netdev_notifier_offload_xstats_rd {
+	struct rtnl_hw_stats64 stats;
+	bool used;
+};
+
+struct netdev_notifier_offload_xstats_ru {
+	bool used;
+};
+
+typedef int (*bpf_op_t)(struct net_device *, struct netdev_bpf *);
+
+struct netdev_notifier_change_info {
+	struct netdev_notifier_info info;
+	unsigned int flags_changed;
+};
+
+struct netdev_notifier_changeupper_info {
+	struct netdev_notifier_info info;
+	struct net_device *upper_dev;
+	bool master;
+	bool linking;
+	void *upper_info;
+};
+
+struct ifslave {
+	__s32 slave_id;
+	char slave_name[16];
+	__s8 link;
+	__s8 state;
+	__u32 link_failure_count;
+};
+
+typedef struct ifslave ifslave;
+
+struct ifbond {
+	__s32 bond_mode;
+	__s32 num_slaves;
+	__s32 miimon;
+};
+
+typedef struct ifbond ifbond;
+
+struct netdev_bonding_info {
+	ifslave slave;
+	ifbond master;
+};
+
+struct netdev_notifier_bonding_info {
+	struct netdev_notifier_info info;
+	struct netdev_bonding_info bonding_info;
+};
+
+struct netdev_notifier_changelowerstate_info {
+	struct netdev_notifier_info info;
+	void *lower_state_info;
+};
+
+struct netdev_notifier_info_ext {
+	struct netdev_notifier_info info;
+	union {
+		u32 mtu;
+	} ext;
+};
+
+struct netdev_notifier_pre_changeaddr_info {
+	struct netdev_notifier_info info;
+	const unsigned char *dev_addr;
+};
+
+struct netdev_hw_addr {
+	struct list_head list;
+	struct rb_node node;
+	unsigned char addr[32];
+	unsigned char type;
+	bool global_use;
+	int sync_cnt;
+	int refcount;
+	int synced;
+	struct callback_head callback_head;
+};
+
+struct xfrm_dst {
+	union {
+		struct dst_entry dst;
+		struct rtable rt;
+		struct rt6_info rt6;
+	} u;
+	struct dst_entry *route;
+	struct dst_entry *child;
+	struct dst_entry *path;
+	struct xfrm_policy *pols[2];
+	int num_pols;
+	int num_xfrms;
+	u32 xfrm_genid;
+	u32 policy_genid;
+	u32 route_mtu_cached;
+	u32 child_mtu_cached;
+	u32 route_cookie;
+	u32 path_cookie;
+};
+
+struct neigh_sysctl_table {
+	struct ctl_table_header *sysctl_header;
+	struct ctl_table neigh_vars[22];
+};
+
+enum {
+	NEIGH_VAR_MCAST_PROBES = 0,
+	NEIGH_VAR_UCAST_PROBES = 1,
+	NEIGH_VAR_APP_PROBES = 2,
+	NEIGH_VAR_MCAST_REPROBES = 3,
+	NEIGH_VAR_RETRANS_TIME = 4,
+	NEIGH_VAR_BASE_REACHABLE_TIME = 5,
+	NEIGH_VAR_DELAY_PROBE_TIME = 6,
+	NEIGH_VAR_INTERVAL_PROBE_TIME_MS = 7,
+	NEIGH_VAR_GC_STALETIME = 8,
+	NEIGH_VAR_QUEUE_LEN_BYTES = 9,
+	NEIGH_VAR_PROXY_QLEN = 10,
+	NEIGH_VAR_ANYCAST_DELAY = 11,
+	NEIGH_VAR_PROXY_DELAY = 12,
+	NEIGH_VAR_LOCKTIME = 13,
+	NEIGH_VAR_QUEUE_LEN = 14,
+	NEIGH_VAR_RETRANS_TIME_MS = 15,
+	NEIGH_VAR_BASE_REACHABLE_TIME_MS = 16,
+	NEIGH_VAR_GC_INTERVAL = 17,
+	NEIGH_VAR_GC_THRESH1 = 18,
+	NEIGH_VAR_GC_THRESH2 = 19,
+	NEIGH_VAR_GC_THRESH3 = 20,
+	NEIGH_VAR_MAX = 21,
+};
+
+enum {
+	NEIGH_ARP_TABLE = 0,
+	NEIGH_ND_TABLE = 1,
+	NEIGH_DN_TABLE = 2,
+	NEIGH_NR_TABLES = 3,
+	NEIGH_LINK_TABLE = 3,
+};
+
+enum netevent_notif_type {
+	NETEVENT_NEIGH_UPDATE = 1,
+	NETEVENT_REDIRECT = 2,
+	NETEVENT_DELAY_PROBE_TIME_UPDATE = 3,
+	NETEVENT_IPV4_MPATH_HASH_UPDATE = 4,
+	NETEVENT_IPV6_MPATH_HASH_UPDATE = 5,
+	NETEVENT_IPV4_FWD_UPDATE_PRIORITY_UPDATE = 6,
+};
+
+enum {
+	NDA_UNSPEC = 0,
+	NDA_DST = 1,
+	NDA_LLADDR = 2,
+	NDA_CACHEINFO = 3,
+	NDA_PROBES = 4,
+	NDA_VLAN = 5,
+	NDA_PORT = 6,
+	NDA_VNI = 7,
+	NDA_IFINDEX = 8,
+	NDA_MASTER = 9,
+	NDA_LINK_NETNSID = 10,
+	NDA_SRC_VNI = 11,
+	NDA_PROTOCOL = 12,
+	NDA_NH_ID = 13,
+	NDA_FDB_EXT_ATTRS = 14,
+	NDA_FLAGS_EXT = 15,
+	NDA_NDM_STATE_MASK = 16,
+	NDA_NDM_FLAGS_MASK = 17,
+	__NDA_MAX = 18,
+};
+
+enum {
+	RTN_UNSPEC = 0,
+	RTN_UNICAST = 1,
+	RTN_LOCAL = 2,
+	RTN_BROADCAST = 3,
+	RTN_ANYCAST = 4,
+	RTN_MULTICAST = 5,
+	RTN_BLACKHOLE = 6,
+	RTN_UNREACHABLE = 7,
+	RTN_PROHIBIT = 8,
+	RTN_THROW = 9,
+	RTN_NAT = 10,
+	RTN_XRESOLVE = 11,
+	__RTN_MAX = 12,
+};
+
+enum {
+	NDTA_UNSPEC = 0,
+	NDTA_NAME = 1,
+	NDTA_THRESH1 = 2,
+	NDTA_THRESH2 = 3,
+	NDTA_THRESH3 = 4,
+	NDTA_CONFIG = 5,
+	NDTA_PARMS = 6,
+	NDTA_STATS = 7,
+	NDTA_GC_INTERVAL = 8,
+	NDTA_PAD = 9,
+	__NDTA_MAX = 10,
+};
+
+enum {
+	NDTPA_UNSPEC = 0,
+	NDTPA_IFINDEX = 1,
+	NDTPA_REFCNT = 2,
+	NDTPA_REACHABLE_TIME = 3,
+	NDTPA_BASE_REACHABLE_TIME = 4,
+	NDTPA_RETRANS_TIME = 5,
+	NDTPA_GC_STALETIME = 6,
+	NDTPA_DELAY_PROBE_TIME = 7,
+	NDTPA_QUEUE_LEN = 8,
+	NDTPA_APP_PROBES = 9,
+	NDTPA_UCAST_PROBES = 10,
+	NDTPA_MCAST_PROBES = 11,
+	NDTPA_ANYCAST_DELAY = 12,
+	NDTPA_PROXY_DELAY = 13,
+	NDTPA_PROXY_QLEN = 14,
+	NDTPA_LOCKTIME = 15,
+	NDTPA_QUEUE_LENBYTES = 16,
+	NDTPA_MCAST_REPROBES = 17,
+	NDTPA_PAD = 18,
+	NDTPA_INTERVAL_PROBE_TIME_MS = 19,
+	__NDTPA_MAX = 20,
+};
+
+struct neighbour_cb {
+	unsigned long sched_next;
+	unsigned int flags;
+};
+
+struct neigh_seq_state {
+	struct seq_net_private p;
+	struct neigh_table *tbl;
+	struct neigh_hash_table *nht;
+	void * (*neigh_sub_iter)(struct neigh_seq_state *, struct neighbour *, loff_t *);
+	unsigned int bucket;
+	unsigned int flags;
+};
+
+struct neigh_dump_filter {
+	int master_idx;
+	int dev_idx;
+};
+
+struct ndtmsg {
+	__u8 ndtm_family;
+	__u8 ndtm_pad1;
+	__u16 ndtm_pad2;
+};
+
+struct ndt_config {
+	__u16 ndtc_key_len;
+	__u16 ndtc_entry_size;
+	__u32 ndtc_entries;
+	__u32 ndtc_last_flush;
+	__u32 ndtc_last_rand;
+	__u32 ndtc_hash_rnd;
+	__u32 ndtc_hash_mask;
+	__u32 ndtc_hash_chain_gc;
+	__u32 ndtc_proxy_qlen;
+};
+
+struct ndt_stats {
+	__u64 ndts_allocs;
+	__u64 ndts_destroys;
+	__u64 ndts_hash_grows;
+	__u64 ndts_res_failed;
+	__u64 ndts_lookups;
+	__u64 ndts_hits;
+	__u64 ndts_rcv_probes_mcast;
+	__u64 ndts_rcv_probes_ucast;
+	__u64 ndts_periodic_gc_runs;
+	__u64 ndts_forced_gc_runs;
+	__u64 ndts_table_fulls;
+};
+
+struct nda_cacheinfo {
+	__u32 ndm_confirmed;
+	__u32 ndm_used;
+	__u32 ndm_updated;
+	__u32 ndm_refcnt;
+};
+
+struct rtnl_link {
+	rtnl_doit_func doit;
+	rtnl_dumpit_func dumpit;
+	struct module *owner;
+	unsigned int flags;
+	struct callback_head rcu;
+};
+
+enum rtattr_type_t {
+	RTA_UNSPEC = 0,
+	RTA_DST = 1,
+	RTA_SRC = 2,
+	RTA_IIF = 3,
+	RTA_OIF = 4,
+	RTA_GATEWAY = 5,
+	RTA_PRIORITY = 6,
+	RTA_PREFSRC = 7,
+	RTA_METRICS = 8,
+	RTA_MULTIPATH = 9,
+	RTA_PROTOINFO = 10,
+	RTA_FLOW = 11,
+	RTA_CACHEINFO = 12,
+	RTA_SESSION = 13,
+	RTA_MP_ALGO = 14,
+	RTA_TABLE = 15,
+	RTA_MARK = 16,
+	RTA_MFC_STATS = 17,
+	RTA_VIA = 18,
+	RTA_NEWDST = 19,
+	RTA_PREF = 20,
+	RTA_ENCAP_TYPE = 21,
+	RTA_ENCAP = 22,
+	RTA_EXPIRES = 23,
+	RTA_PAD = 24,
+	RTA_UID = 25,
+	RTA_TTL_PROPAGATE = 26,
+	RTA_IP_PROTO = 27,
+	RTA_SPORT = 28,
+	RTA_DPORT = 29,
+	RTA_NH_ID = 30,
+	__RTA_MAX = 31,
+};
+
+enum {
+	IFLA_BRIDGE_FLAGS = 0,
+	IFLA_BRIDGE_MODE = 1,
+	IFLA_BRIDGE_VLAN_INFO = 2,
+	IFLA_BRIDGE_VLAN_TUNNEL_INFO = 3,
+	IFLA_BRIDGE_MRP = 4,
+	IFLA_BRIDGE_CFM = 5,
+	IFLA_BRIDGE_MST = 6,
+	__IFLA_BRIDGE_MAX = 7,
+};
+
+enum {
+	IFLA_BRPORT_UNSPEC = 0,
+	IFLA_BRPORT_STATE = 1,
+	IFLA_BRPORT_PRIORITY = 2,
+	IFLA_BRPORT_COST = 3,
+	IFLA_BRPORT_MODE = 4,
+	IFLA_BRPORT_GUARD = 5,
+	IFLA_BRPORT_PROTECT = 6,
+	IFLA_BRPORT_FAST_LEAVE = 7,
+	IFLA_BRPORT_LEARNING = 8,
+	IFLA_BRPORT_UNICAST_FLOOD = 9,
+	IFLA_BRPORT_PROXYARP = 10,
+	IFLA_BRPORT_LEARNING_SYNC = 11,
+	IFLA_BRPORT_PROXYARP_WIFI = 12,
+	IFLA_BRPORT_ROOT_ID = 13,
+	IFLA_BRPORT_BRIDGE_ID = 14,
+	IFLA_BRPORT_DESIGNATED_PORT = 15,
+	IFLA_BRPORT_DESIGNATED_COST = 16,
+	IFLA_BRPORT_ID = 17,
+	IFLA_BRPORT_NO = 18,
+	IFLA_BRPORT_TOPOLOGY_CHANGE_ACK = 19,
+	IFLA_BRPORT_CONFIG_PENDING = 20,
+	IFLA_BRPORT_MESSAGE_AGE_TIMER = 21,
+	IFLA_BRPORT_FORWARD_DELAY_TIMER = 22,
+	IFLA_BRPORT_HOLD_TIMER = 23,
+	IFLA_BRPORT_FLUSH = 24,
+	IFLA_BRPORT_MULTICAST_ROUTER = 25,
+	IFLA_BRPORT_PAD = 26,
+	IFLA_BRPORT_MCAST_FLOOD = 27,
+	IFLA_BRPORT_MCAST_TO_UCAST = 28,
+	IFLA_BRPORT_VLAN_TUNNEL = 29,
+	IFLA_BRPORT_BCAST_FLOOD = 30,
+	IFLA_BRPORT_GROUP_FWD_MASK = 31,
+	IFLA_BRPORT_NEIGH_SUPPRESS = 32,
+	IFLA_BRPORT_ISOLATED = 33,
+	IFLA_BRPORT_BACKUP_PORT = 34,
+	IFLA_BRPORT_MRP_RING_OPEN = 35,
+	IFLA_BRPORT_MRP_IN_OPEN = 36,
+	IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT = 37,
+	IFLA_BRPORT_MCAST_EHT_HOSTS_CNT = 38,
+	IFLA_BRPORT_LOCKED = 39,
+	IFLA_BRPORT_MAB = 40,
+	IFLA_BRPORT_MCAST_N_GROUPS = 41,
+	IFLA_BRPORT_MCAST_MAX_GROUPS = 42,
+	IFLA_BRPORT_NEIGH_VLAN_SUPPRESS = 43,
+	IFLA_BRPORT_BACKUP_NHID = 44,
+	__IFLA_BRPORT_MAX = 45,
+};
+
+enum {
+	IFLA_STATS_UNSPEC = 0,
+	IFLA_STATS_LINK_64 = 1,
+	IFLA_STATS_LINK_XSTATS = 2,
+	IFLA_STATS_LINK_XSTATS_SLAVE = 3,
+	IFLA_STATS_LINK_OFFLOAD_XSTATS = 4,
+	IFLA_STATS_AF_SPEC = 5,
+	__IFLA_STATS_MAX = 6,
+};
+
+enum {
+	IFLA_OFFLOAD_XSTATS_UNSPEC = 0,
+	IFLA_OFFLOAD_XSTATS_CPU_HIT = 1,
+	IFLA_OFFLOAD_XSTATS_HW_S_INFO = 2,
+	IFLA_OFFLOAD_XSTATS_L3_STATS = 3,
+	__IFLA_OFFLOAD_XSTATS_MAX = 4,
+};
+
+enum rtnl_kinds {
+	RTNL_KIND_NEW = 0,
+	RTNL_KIND_DEL = 1,
+	RTNL_KIND_GET = 2,
+	RTNL_KIND_SET = 3,
+};
+
+enum {
+	IFLA_EVENT_NONE = 0,
+	IFLA_EVENT_REBOOT = 1,
+	IFLA_EVENT_FEATURES = 2,
+	IFLA_EVENT_BONDING_FAILOVER = 3,
+	IFLA_EVENT_NOTIFY_PEERS = 4,
+	IFLA_EVENT_IGMP_RESEND = 5,
+	IFLA_EVENT_BONDING_OPTIONS = 6,
+};
+
+enum {
+	IFLA_PROTO_DOWN_REASON_UNSPEC = 0,
+	IFLA_PROTO_DOWN_REASON_MASK = 1,
+	IFLA_PROTO_DOWN_REASON_VALUE = 2,
+	__IFLA_PROTO_DOWN_REASON_CNT = 3,
+	IFLA_PROTO_DOWN_REASON_MAX = 2,
+};
+
+enum {
+	IFLA_VF_INFO_UNSPEC = 0,
+	IFLA_VF_INFO = 1,
+	__IFLA_VF_INFO_MAX = 2,
+};
+
+enum {
+	IFLA_VF_UNSPEC = 0,
+	IFLA_VF_MAC = 1,
+	IFLA_VF_VLAN = 2,
+	IFLA_VF_TX_RATE = 3,
+	IFLA_VF_SPOOFCHK = 4,
+	IFLA_VF_LINK_STATE = 5,
+	IFLA_VF_RATE = 6,
+	IFLA_VF_RSS_QUERY_EN = 7,
+	IFLA_VF_STATS = 8,
+	IFLA_VF_TRUST = 9,
+	IFLA_VF_IB_NODE_GUID = 10,
+	IFLA_VF_IB_PORT_GUID = 11,
+	IFLA_VF_VLAN_LIST = 12,
+	IFLA_VF_BROADCAST = 13,
+	__IFLA_VF_MAX = 14,
+};
+
+enum {
+	IFLA_VF_VLAN_INFO_UNSPEC = 0,
+	IFLA_VF_VLAN_INFO = 1,
+	__IFLA_VF_VLAN_INFO_MAX = 2,
+};
+
+enum {
+	IFLA_VF_STATS_RX_PACKETS = 0,
+	IFLA_VF_STATS_TX_PACKETS = 1,
+	IFLA_VF_STATS_RX_BYTES = 2,
+	IFLA_VF_STATS_TX_BYTES = 3,
+	IFLA_VF_STATS_BROADCAST = 4,
+	IFLA_VF_STATS_MULTICAST = 5,
+	IFLA_VF_STATS_PAD = 6,
+	IFLA_VF_STATS_RX_DROPPED = 7,
+	IFLA_VF_STATS_TX_DROPPED = 8,
+	__IFLA_VF_STATS_MAX = 9,
+};
+
+enum {
+	IFLA_VF_PORT_UNSPEC = 0,
+	IFLA_VF_PORT = 1,
+	__IFLA_VF_PORT_MAX = 2,
+};
+
+enum {
+	IFLA_PORT_UNSPEC = 0,
+	IFLA_PORT_VF = 1,
+	IFLA_PORT_PROFILE = 2,
+	IFLA_PORT_VSI_TYPE = 3,
+	IFLA_PORT_INSTANCE_UUID = 4,
+	IFLA_PORT_HOST_UUID = 5,
+	IFLA_PORT_REQUEST = 6,
+	IFLA_PORT_RESPONSE = 7,
+	__IFLA_PORT_MAX = 8,
+};
+
+enum {
+	XDP_ATTACHED_NONE = 0,
+	XDP_ATTACHED_DRV = 1,
+	XDP_ATTACHED_SKB = 2,
+	XDP_ATTACHED_HW = 3,
+	XDP_ATTACHED_MULTI = 4,
+};
+
+enum {
+	IFLA_XDP_UNSPEC = 0,
+	IFLA_XDP_FD = 1,
+	IFLA_XDP_ATTACHED = 2,
+	IFLA_XDP_FLAGS = 3,
+	IFLA_XDP_PROG_ID = 4,
+	IFLA_XDP_DRV_PROG_ID = 5,
+	IFLA_XDP_SKB_PROG_ID = 6,
+	IFLA_XDP_HW_PROG_ID = 7,
+	IFLA_XDP_EXPECTED_FD = 8,
+	__IFLA_XDP_MAX = 9,
+};
+
+enum {
+	IFLA_INFO_UNSPEC = 0,
+	IFLA_INFO_KIND = 1,
+	IFLA_INFO_DATA = 2,
+	IFLA_INFO_XSTATS = 3,
+	IFLA_INFO_SLAVE_KIND = 4,
+	IFLA_INFO_SLAVE_DATA = 5,
+	__IFLA_INFO_MAX = 6,
+};
+
+enum {
+	IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC = 0,
+	IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST = 1,
+	IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED = 2,
+	__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX = 3,
+};
+
+enum {
+	IFLA_STATS_GETSET_UNSPEC = 0,
+	IFLA_STATS_GET_FILTERS = 1,
+	IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS = 2,
+	__IFLA_STATS_GETSET_MAX = 3,
+};
+
+enum {
+	MDBA_SET_ENTRY_UNSPEC = 0,
+	MDBA_SET_ENTRY = 1,
+	MDBA_SET_ENTRY_ATTRS = 2,
+	__MDBA_SET_ENTRY_MAX = 3,
+};
+
+struct rtnl_af_ops {
+	struct list_head list;
+	int family;
+	int (*fill_link_af)(struct sk_buff *, const struct net_device *, u32);
+	size_t (*get_link_af_size)(const struct net_device *, u32);
+	int (*validate_link_af)(const struct net_device *, const struct nlattr *, struct netlink_ext_ack *);
+	int (*set_link_af)(struct net_device *, const struct nlattr *, struct netlink_ext_ack *);
+	int (*fill_stats_af)(struct sk_buff *, const struct net_device *);
+	size_t (*get_stats_af_size)(const struct net_device *);
+};
+
+struct rtnl_offload_xstats_request_used {
+	bool request;
+	bool used;
+};
+
+struct rtnl_newlink_tbs {
+	struct nlattr *tb[65];
+	struct nlattr *attr[51];
+	struct nlattr *slave_attr[45];
+};
+
+struct if_stats_msg {
+	__u8 family;
+	__u8 pad1;
+	__u16 pad2;
+	__u32 ifindex;
+	__u32 filter_mask;
+};
+
+struct br_port_msg {
+	__u8 family;
+	__u32 ifindex;
+};
+
+struct rtnl_link_stats {
+	__u32 rx_packets;
+	__u32 tx_packets;
+	__u32 rx_bytes;
+	__u32 tx_bytes;
+	__u32 rx_errors;
+	__u32 tx_errors;
+	__u32 rx_dropped;
+	__u32 tx_dropped;
+	__u32 multicast;
+	__u32 collisions;
+	__u32 rx_length_errors;
+	__u32 rx_over_errors;
+	__u32 rx_crc_errors;
+	__u32 rx_frame_errors;
+	__u32 rx_fifo_errors;
+	__u32 rx_missed_errors;
+	__u32 tx_aborted_errors;
+	__u32 tx_carrier_errors;
+	__u32 tx_fifo_errors;
+	__u32 tx_heartbeat_errors;
+	__u32 tx_window_errors;
+	__u32 rx_compressed;
+	__u32 tx_compressed;
+	__u32 rx_nohandler;
+};
+
+struct netlink_dump_control {
+	int (*start)(struct netlink_callback *);
+	int (*dump)(struct sk_buff *, struct netlink_callback *);
+	int (*done)(struct netlink_callback *);
+	struct netlink_ext_ack *extack;
+	void *data;
+	struct module *module;
+	u32 min_dump_alloc;
+};
+
+struct ifla_vf_mac {
+	__u32 vf;
+	__u8 mac[32];
+};
+
+struct ifla_vf_vlan {
+	__u32 vf;
+	__u32 vlan;
+	__u32 qos;
+};
+
+struct ifla_vf_vlan_info {
+	__u32 vf;
+	__u32 vlan;
+	__u32 qos;
+	__be16 vlan_proto;
+};
+
+struct ifla_vf_tx_rate {
+	__u32 vf;
+	__u32 rate;
+};
+
+struct ifla_vf_rate {
+	__u32 vf;
+	__u32 min_tx_rate;
+	__u32 max_tx_rate;
+};
+
+struct ifla_vf_spoofchk {
+	__u32 vf;
+	__u32 setting;
+};
+
+struct ifla_vf_link_state {
+	__u32 vf;
+	__u32 link_state;
+};
+
+struct ifla_vf_rss_query_en {
+	__u32 vf;
+	__u32 setting;
+};
+
+struct ifla_vf_trust {
+	__u32 vf;
+	__u32 setting;
+};
+
+struct rtnl_stats_dump_filters {
+	u32 mask[6];
+};
+
+struct rta_cacheinfo {
+	__u32 rta_clntref;
+	__u32 rta_lastuse;
+	__s32 rta_expires;
+	__u32 rta_error;
+	__u32 rta_used;
+	__u32 rta_id;
+	__u32 rta_ts;
+	__u32 rta_tsage;
+};
+
+struct rtnl_mdb_dump_ctx {
+	long idx;
+};
+
+struct rtnl_link_ifmap {
+	__u64 mem_start;
+	__u64 mem_end;
+	__u64 base_addr;
+	__u16 irq;
+	__u8 dma;
+	__u8 port;
+};
+
+struct ifla_vf_broadcast {
+	__u8 broadcast[32];
+};
+
+struct br_mdb_entry {
+	__u32 ifindex;
+	__u8 state;
+	__u8 flags;
+	__u16 vid;
+	struct {
+		union {
+			__be32 ip4;
+			struct in6_addr ip6;
+			unsigned char mac_addr[6];
+		} u;
+		__be16 proto;
+	} addr;
+};
+
+enum {
+	IF_LINK_MODE_DEFAULT = 0,
+	IF_LINK_MODE_DORMANT = 1,
+	IF_LINK_MODE_TESTING = 2,
+};
+
+enum lw_bits {
+	LW_URGENT = 0,
+};
+
+struct xdp_umem;
+
+struct xsk_queue;
+
+struct xdp_buff_xsk;
+
+struct xdp_desc;
+
+struct xsk_buff_pool {
+	struct device *dev;
+	struct net_device *netdev;
+	struct list_head xsk_tx_list;
+	spinlock_t xsk_tx_list_lock;
+	refcount_t users;
+	struct xdp_umem *umem;
+	struct work_struct work;
+	struct list_head free_list;
+	struct list_head xskb_list;
+	u32 heads_cnt;
+	u16 queue_id;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct xsk_queue *fq;
+	struct xsk_queue *cq;
+	dma_addr_t *dma_pages;
+	struct xdp_buff_xsk *heads;
+	struct xdp_desc *tx_descs;
+	u64 chunk_mask;
+	u64 addrs_cnt;
+	u32 free_list_cnt;
+	u32 dma_pages_cnt;
+	u32 free_heads_cnt;
+	u32 headroom;
+	u32 chunk_size;
+	u32 chunk_shift;
+	u32 frame_len;
+	u8 cached_need_wakeup;
+	bool uses_need_wakeup;
+	bool dma_need_sync;
+	bool unaligned;
+	void *addrs;
+	spinlock_t cq_lock;
+	struct xdp_buff_xsk *free_heads[0];
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct xdp_umem {
+	void *addrs;
+	u64 size;
+	u32 headroom;
+	u32 chunk_size;
+	u32 chunks;
+	u32 npgs;
+	struct user_struct *user;
+	refcount_t users;
+	u8 flags;
+	bool zc;
+	struct page **pgs;
+	int id;
+	struct list_head xsk_dma_list;
+	struct work_struct work;
+};
+
+struct xdp_buff_xsk {
+	struct xdp_buff xdp;
+	u8 cb[24];
+	dma_addr_t dma;
+	dma_addr_t frame_dma;
+	struct xsk_buff_pool *pool;
+	u64 orig_addr;
+	struct list_head free_list_node;
+	struct list_head xskb_list_node;
+};
+
+struct xdp_desc {
+	__u64 addr;
+	__u32 len;
+	__u32 options;
+};
+
+struct seg6_pernet_data {
+	struct mutex lock;
+	struct in6_addr __attribute__((btf_type_tag("rcu"))) *tun_src;
+};
+
+struct ipv6_bpf_stub {
+	int (*inet6_bind)(struct sock *, struct sockaddr *, int, u32);
+	struct sock * (*udp6_lib_lookup)(struct net *, const struct in6_addr *, __be16, const struct in6_addr *, __be16, int, int, struct udp_table *, struct sk_buff *);
+	int (*ipv6_setsockopt)(struct sock *, int, int, sockptr_t, unsigned int);
+	int (*ipv6_getsockopt)(struct sock *, int, int, sockptr_t, sockptr_t);
+	int (*ipv6_dev_get_saddr)(struct net *, const struct net_device *, const struct in6_addr *, unsigned int, struct in6_addr *);
+};
+
+struct bpf_scratchpad {
+	union {
+		__be32 diff[128];
+		u8 buff[512];
+	};
+};
+
+enum {
+	BPF_F_NEIGH = 2,
+	BPF_F_PEER = 4,
+	BPF_F_NEXTHOP = 8,
+};
+
+enum {
+	BPF_F_RECOMPUTE_CSUM = 1,
+	BPF_F_INVALIDATE_HASH = 2,
+};
+
+enum bpf_hdr_start_off {
+	BPF_HDR_START_MAC = 0,
+	BPF_HDR_START_NET = 1,
+};
+
+enum {
+	BPF_F_HDR_FIELD_MASK = 15,
+};
+
+enum {
+	BPF_F_PSEUDO_HDR = 16,
+	BPF_F_MARK_MANGLED_0 = 32,
+	BPF_F_MARK_ENFORCE = 64,
+};
+
+enum {
+	BPF_CSUM_LEVEL_QUERY = 0,
+	BPF_CSUM_LEVEL_INC = 1,
+	BPF_CSUM_LEVEL_DEC = 2,
+	BPF_CSUM_LEVEL_RESET = 3,
+};
+
+enum {
+	BPF_F_INGRESS = 1,
+};
+
+enum {
+	IPSTATS_MIB_NUM = 0,
+	IPSTATS_MIB_INPKTS = 1,
+	IPSTATS_MIB_INOCTETS = 2,
+	IPSTATS_MIB_INDELIVERS = 3,
+	IPSTATS_MIB_OUTFORWDATAGRAMS = 4,
+	IPSTATS_MIB_OUTREQUESTS = 5,
+	IPSTATS_MIB_OUTOCTETS = 6,
+	IPSTATS_MIB_INHDRERRORS = 7,
+	IPSTATS_MIB_INTOOBIGERRORS = 8,
+	IPSTATS_MIB_INNOROUTES = 9,
+	IPSTATS_MIB_INADDRERRORS = 10,
+	IPSTATS_MIB_INUNKNOWNPROTOS = 11,
+	IPSTATS_MIB_INTRUNCATEDPKTS = 12,
+	IPSTATS_MIB_INDISCARDS = 13,
+	IPSTATS_MIB_OUTDISCARDS = 14,
+	IPSTATS_MIB_OUTNOROUTES = 15,
+	IPSTATS_MIB_REASMTIMEOUT = 16,
+	IPSTATS_MIB_REASMREQDS = 17,
+	IPSTATS_MIB_REASMOKS = 18,
+	IPSTATS_MIB_REASMFAILS = 19,
+	IPSTATS_MIB_FRAGOKS = 20,
+	IPSTATS_MIB_FRAGFAILS = 21,
+	IPSTATS_MIB_FRAGCREATES = 22,
+	IPSTATS_MIB_INMCASTPKTS = 23,
+	IPSTATS_MIB_OUTMCASTPKTS = 24,
+	IPSTATS_MIB_INBCASTPKTS = 25,
+	IPSTATS_MIB_OUTBCASTPKTS = 26,
+	IPSTATS_MIB_INMCASTOCTETS = 27,
+	IPSTATS_MIB_OUTMCASTOCTETS = 28,
+	IPSTATS_MIB_INBCASTOCTETS = 29,
+	IPSTATS_MIB_OUTBCASTOCTETS = 30,
+	IPSTATS_MIB_CSUMERRORS = 31,
+	IPSTATS_MIB_NOECTPKTS = 32,
+	IPSTATS_MIB_ECT1PKTS = 33,
+	IPSTATS_MIB_ECT0PKTS = 34,
+	IPSTATS_MIB_CEPKTS = 35,
+	IPSTATS_MIB_REASM_OVERLAPS = 36,
+	IPSTATS_MIB_OUTPKTS = 37,
+	__IPSTATS_MIB_MAX = 38,
+};
+
+enum {
+	BPF_F_ADJ_ROOM_FIXED_GSO = 1,
+	BPF_F_ADJ_ROOM_ENCAP_L3_IPV4 = 2,
+	BPF_F_ADJ_ROOM_ENCAP_L3_IPV6 = 4,
+	BPF_F_ADJ_ROOM_ENCAP_L4_GRE = 8,
+	BPF_F_ADJ_ROOM_ENCAP_L4_UDP = 16,
+	BPF_F_ADJ_ROOM_NO_CSUM_RESET = 32,
+	BPF_F_ADJ_ROOM_ENCAP_L2_ETH = 64,
+	BPF_F_ADJ_ROOM_DECAP_L3_IPV4 = 128,
+	BPF_F_ADJ_ROOM_DECAP_L3_IPV6 = 256,
+};
+
+enum {
+	BPF_ADJ_ROOM_ENCAP_L2_MASK = 255,
+	BPF_ADJ_ROOM_ENCAP_L2_SHIFT = 56,
+};
+
+enum bpf_adj_room_mode {
+	BPF_ADJ_ROOM_NET = 0,
+	BPF_ADJ_ROOM_MAC = 1,
+};
+
+struct xdp_sock {
+	struct sock sk;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct xsk_queue *rx;
+	struct net_device *dev;
+	struct xdp_umem *umem;
+	struct list_head flush_node;
+	struct xsk_buff_pool *pool;
+	u16 queue_id;
+	bool zc;
+	bool sg;
+	enum {
+		XSK_READY = 0,
+		XSK_BOUND = 1,
+		XSK_UNBOUND = 2,
+	} state;
+	long: 64;
+	struct xsk_queue *tx;
+	struct list_head tx_list;
+	spinlock_t rx_lock;
+	u64 rx_dropped;
+	u64 rx_queue_full;
+	struct sk_buff *skb;
+	struct list_head map_list;
+	spinlock_t map_list_lock;
+	struct mutex mutex;
+	struct xsk_queue *fq_tmp;
+	struct xsk_queue *cq_tmp;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+enum {
+	BPF_F_TUNINFO_IPV6 = 1,
+};
+
+enum {
+	BPF_F_TUNINFO_FLAGS = 16,
+};
+
+enum {
+	BPF_F_ZERO_CSUM_TX = 2,
+	BPF_F_DONT_FRAGMENT = 4,
+	BPF_F_SEQ_NUMBER = 8,
+	BPF_F_NO_TUNNEL_KEY = 16,
+};
+
+enum {
+	TCP_BPF_IW = 1001,
+	TCP_BPF_SNDCWND_CLAMP = 1002,
+	TCP_BPF_DELACK_MAX = 1003,
+	TCP_BPF_RTO_MIN = 1004,
+	TCP_BPF_SYN = 1005,
+	TCP_BPF_SYN_IP = 1006,
+	TCP_BPF_SYN_MAC = 1007,
+};
+
+enum {
+	BPF_SOCK_OPS_RTO_CB_FLAG = 1,
+	BPF_SOCK_OPS_RETRANS_CB_FLAG = 2,
+	BPF_SOCK_OPS_STATE_CB_FLAG = 4,
+	BPF_SOCK_OPS_RTT_CB_FLAG = 8,
+	BPF_SOCK_OPS_PARSE_ALL_HDR_OPT_CB_FLAG = 16,
+	BPF_SOCK_OPS_PARSE_UNKNOWN_HDR_OPT_CB_FLAG = 32,
+	BPF_SOCK_OPS_WRITE_HDR_OPT_CB_FLAG = 64,
+	BPF_SOCK_OPS_ALL_CB_FLAGS = 127,
+};
+
+enum {
+	BPF_FIB_LOOKUP_DIRECT = 1,
+	BPF_FIB_LOOKUP_OUTPUT = 2,
+	BPF_FIB_LOOKUP_SKIP_NEIGH = 4,
+	BPF_FIB_LOOKUP_TBID = 8,
+	BPF_FIB_LOOKUP_SRC = 16,
+};
+
+enum {
+	BPF_FIB_LKUP_RET_SUCCESS = 0,
+	BPF_FIB_LKUP_RET_BLACKHOLE = 1,
+	BPF_FIB_LKUP_RET_UNREACHABLE = 2,
+	BPF_FIB_LKUP_RET_PROHIBIT = 3,
+	BPF_FIB_LKUP_RET_NOT_FWDED = 4,
+	BPF_FIB_LKUP_RET_FWD_DISABLED = 5,
+	BPF_FIB_LKUP_RET_UNSUPP_LWT = 6,
+	BPF_FIB_LKUP_RET_NO_NEIGH = 7,
+	BPF_FIB_LKUP_RET_FRAG_NEEDED = 8,
+	BPF_FIB_LKUP_RET_NO_SRC_ADDR = 9,
+};
+
+enum rt_class_t {
+	RT_TABLE_UNSPEC = 0,
+	RT_TABLE_COMPAT = 252,
+	RT_TABLE_DEFAULT = 253,
+	RT_TABLE_MAIN = 254,
+	RT_TABLE_LOCAL = 255,
+	RT_TABLE_MAX = 4294967295,
+};
+
+enum bpf_check_mtu_ret {
+	BPF_MTU_CHK_RET_SUCCESS = 0,
+	BPF_MTU_CHK_RET_FRAG_NEEDED = 1,
+	BPF_MTU_CHK_RET_SEGS_TOOBIG = 2,
+};
+
+enum bpf_check_mtu_flags {
+	BPF_MTU_CHK_SEGS = 1,
+};
+
+enum {
+	BPF_LOAD_HDR_OPT_TCP_SYN = 1,
+};
+
+enum {
+	BPF_SOCK_OPS_VOID = 0,
+	BPF_SOCK_OPS_TIMEOUT_INIT = 1,
+	BPF_SOCK_OPS_RWND_INIT = 2,
+	BPF_SOCK_OPS_TCP_CONNECT_CB = 3,
+	BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB = 4,
+	BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB = 5,
+	BPF_SOCK_OPS_NEEDS_ECN = 6,
+	BPF_SOCK_OPS_BASE_RTT = 7,
+	BPF_SOCK_OPS_RTO_CB = 8,
+	BPF_SOCK_OPS_RETRANS_CB = 9,
+	BPF_SOCK_OPS_STATE_CB = 10,
+	BPF_SOCK_OPS_TCP_LISTEN_CB = 11,
+	BPF_SOCK_OPS_RTT_CB = 12,
+	BPF_SOCK_OPS_PARSE_HDR_OPT_CB = 13,
+	BPF_SOCK_OPS_HDR_OPT_LEN_CB = 14,
+	BPF_SOCK_OPS_WRITE_HDR_OPT_CB = 15,
+};
+
+enum {
+	BPF_SKB_TSTAMP_UNSPEC = 0,
+	BPF_SKB_TSTAMP_DELIVERY_MONO = 1,
+};
+
+enum {
+	BPF_SK_LOOKUP_F_REPLACE = 1,
+	BPF_SK_LOOKUP_F_NO_REUSEPORT = 2,
+};
+
+typedef u64 (*btf_bpf_skb_get_pay_offset)(struct sk_buff *);
+
+typedef u64 (*btf_bpf_skb_get_nlattr)(struct sk_buff *, u32, u32);
+
+typedef u64 (*btf_bpf_skb_get_nlattr_nest)(struct sk_buff *, u32, u32);
+
+typedef u64 (*btf_bpf_skb_load_helper_8)(const struct sk_buff *, const void *, int, int);
+
+typedef u64 (*btf_bpf_skb_load_helper_8_no_cache)(const struct sk_buff *, int);
+
+typedef u64 (*btf_bpf_skb_load_helper_16)(const struct sk_buff *, const void *, int, int);
+
+typedef u64 (*btf_bpf_skb_load_helper_16_no_cache)(const struct sk_buff *, int);
+
+typedef u64 (*btf_bpf_skb_load_helper_32)(const struct sk_buff *, const void *, int, int);
+
+typedef u64 (*btf_bpf_skb_load_helper_32_no_cache)(const struct sk_buff *, int);
+
+typedef u64 (*btf_bpf_skb_store_bytes)(struct sk_buff *, u32, const void *, u32, u64);
+
+typedef u64 (*btf_bpf_skb_load_bytes)(const struct sk_buff *, u32, void *, u32);
+
+typedef u64 (*btf_bpf_flow_dissector_load_bytes)(const struct bpf_flow_dissector *, u32, void *, u32);
+
+typedef u64 (*btf_bpf_skb_load_bytes_relative)(const struct sk_buff *, u32, void *, u32, u32);
+
+typedef u64 (*btf_bpf_skb_pull_data)(struct sk_buff *, u32);
+
+typedef u64 (*btf_bpf_sk_fullsock)(struct sock *);
+
+typedef u64 (*btf_sk_skb_pull_data)(struct sk_buff *, u32);
+
+typedef u64 (*btf_bpf_l3_csum_replace)(struct sk_buff *, u32, u64, u64, u64);
+
+typedef u64 (*btf_bpf_l4_csum_replace)(struct sk_buff *, u32, u64, u64, u64);
+
+typedef u64 (*btf_bpf_csum_diff)(__be32 *, u32, __be32 *, u32, __wsum);
+
+typedef u64 (*btf_bpf_csum_update)(struct sk_buff *, __wsum);
+
+typedef u64 (*btf_bpf_csum_level)(struct sk_buff *, u64);
+
+typedef u64 (*btf_bpf_clone_redirect)(struct sk_buff *, u32, u64);
+
+typedef u64 (*btf_bpf_redirect)(u32, u64);
+
+typedef u64 (*btf_bpf_redirect_peer)(u32, u64);
+
+struct bpf_redir_neigh;
+
+typedef u64 (*btf_bpf_redirect_neigh)(u32, struct bpf_redir_neigh *, int, u64);
+
+struct bpf_redir_neigh {
+	__u32 nh_family;
+	union {
+		__be32 ipv4_nh;
+		__u32 ipv6_nh[4];
+	};
+};
+
+typedef u64 (*btf_bpf_msg_apply_bytes)(struct sk_msg *, u32);
+
+typedef u64 (*btf_bpf_msg_cork_bytes)(struct sk_msg *, u32);
+
+typedef u64 (*btf_bpf_msg_pull_data)(struct sk_msg *, u32, u32, u64);
+
+typedef u64 (*btf_bpf_msg_push_data)(struct sk_msg *, u32, u32, u64);
+
+typedef u64 (*btf_bpf_msg_pop_data)(struct sk_msg *, u32, u32, u64);
+
+typedef u64 (*btf_bpf_get_cgroup_classid)(const struct sk_buff *);
+
+typedef u64 (*btf_bpf_get_route_realm)(const struct sk_buff *);
+
+typedef u64 (*btf_bpf_get_hash_recalc)(struct sk_buff *);
+
+typedef u64 (*btf_bpf_set_hash_invalid)(struct sk_buff *);
+
+typedef u64 (*btf_bpf_set_hash)(struct sk_buff *, u32);
+
+typedef u64 (*btf_bpf_skb_vlan_push)(struct sk_buff *, __be16, u16);
+
+typedef u64 (*btf_bpf_skb_vlan_pop)(struct sk_buff *);
+
+typedef u64 (*btf_bpf_skb_change_proto)(struct sk_buff *, __be16, u64);
+
+typedef u64 (*btf_bpf_skb_change_type)(struct sk_buff *, u32);
+
+typedef u64 (*btf_sk_skb_adjust_room)(struct sk_buff *, s32, u32, u64);
+
+typedef u64 (*btf_bpf_skb_adjust_room)(struct sk_buff *, s32, u32, u64);
+
+typedef u64 (*btf_bpf_skb_change_tail)(struct sk_buff *, u32, u64);
+
+typedef u64 (*btf_sk_skb_change_tail)(struct sk_buff *, u32, u64);
+
+typedef u64 (*btf_bpf_skb_change_head)(struct sk_buff *, u32, u64);
+
+typedef u64 (*btf_sk_skb_change_head)(struct sk_buff *, u32, u64);
+
+typedef u64 (*btf_bpf_xdp_get_buff_len)(struct xdp_buff *);
+
+typedef u64 (*btf_bpf_xdp_adjust_head)(struct xdp_buff *, int);
+
+typedef u64 (*btf_bpf_xdp_load_bytes)(struct xdp_buff *, u32, void *, u32);
+
+typedef u64 (*btf_bpf_xdp_store_bytes)(struct xdp_buff *, u32, void *, u32);
+
+typedef u64 (*btf_bpf_xdp_adjust_tail)(struct xdp_buff *, int);
+
+typedef u64 (*btf_bpf_xdp_adjust_meta)(struct xdp_buff *, int);
+
+typedef u64 (*btf_bpf_xdp_redirect)(u32, u64);
+
+typedef u64 (*btf_bpf_xdp_redirect_map)(struct bpf_map *, u64, u64);
+
+typedef u64 (*btf_bpf_skb_event_output)(struct sk_buff *, struct bpf_map *, u64, void *, u64);
+
+struct bpf_tunnel_key;
+
+typedef u64 (*btf_bpf_skb_get_tunnel_key)(struct sk_buff *, struct bpf_tunnel_key *, u32, u64);
+
+struct bpf_tunnel_key {
+	__u32 tunnel_id;
+	union {
+		__u32 remote_ipv4;
+		__u32 remote_ipv6[4];
+	};
+	__u8 tunnel_tos;
+	__u8 tunnel_ttl;
+	union {
+		__u16 tunnel_ext;
+		__be16 tunnel_flags;
+	};
+	__u32 tunnel_label;
+	union {
+		__u32 local_ipv4;
+		__u32 local_ipv6[4];
+	};
+};
+
+typedef u64 (*btf_bpf_skb_get_tunnel_opt)(struct sk_buff *, u8 *, u32);
+
+typedef u64 (*btf_bpf_skb_set_tunnel_key)(struct sk_buff *, const struct bpf_tunnel_key *, u32, u64);
+
+typedef u64 (*btf_bpf_skb_set_tunnel_opt)(struct sk_buff *, const u8 *, u32);
+
+typedef u64 (*btf_bpf_skb_under_cgroup)(struct sk_buff *, struct bpf_map *, u32);
+
+typedef u64 (*btf_bpf_skb_cgroup_id)(const struct sk_buff *);
+
+typedef u64 (*btf_bpf_skb_ancestor_cgroup_id)(const struct sk_buff *, int);
+
+typedef u64 (*btf_bpf_sk_cgroup_id)(struct sock *);
+
+typedef u64 (*btf_bpf_sk_ancestor_cgroup_id)(struct sock *, int);
+
+typedef u64 (*btf_bpf_xdp_event_output)(struct xdp_buff *, struct bpf_map *, u64, void *, u64);
+
+typedef u64 (*btf_bpf_get_socket_cookie)(struct sk_buff *);
+
+typedef u64 (*btf_bpf_get_socket_cookie_sock_addr)(struct bpf_sock_addr_kern *);
+
+typedef u64 (*btf_bpf_get_socket_cookie_sock)(struct sock *);
+
+typedef u64 (*btf_bpf_get_socket_ptr_cookie)(struct sock *);
+
+typedef u64 (*btf_bpf_get_socket_cookie_sock_ops)(struct bpf_sock_ops_kern *);
+
+typedef u64 (*btf_bpf_get_netns_cookie_sock)(struct sock *);
+
+typedef u64 (*btf_bpf_get_netns_cookie_sock_addr)(struct bpf_sock_addr_kern *);
+
+typedef u64 (*btf_bpf_get_netns_cookie_sock_ops)(struct bpf_sock_ops_kern *);
+
+typedef u64 (*btf_bpf_get_netns_cookie_sk_msg)(struct sk_msg *);
+
+typedef u64 (*btf_bpf_get_socket_uid)(struct sk_buff *);
+
+typedef u64 (*btf_bpf_sk_setsockopt)(struct sock *, int, int, char *, int);
+
+typedef u64 (*btf_bpf_sk_getsockopt)(struct sock *, int, int, char *, int);
+
+typedef u64 (*btf_bpf_unlocked_sk_setsockopt)(struct sock *, int, int, char *, int);
+
+typedef u64 (*btf_bpf_unlocked_sk_getsockopt)(struct sock *, int, int, char *, int);
+
+typedef u64 (*btf_bpf_sock_addr_setsockopt)(struct bpf_sock_addr_kern *, int, int, char *, int);
+
+typedef u64 (*btf_bpf_sock_addr_getsockopt)(struct bpf_sock_addr_kern *, int, int, char *, int);
+
+typedef u64 (*btf_bpf_sock_ops_setsockopt)(struct bpf_sock_ops_kern *, int, int, char *, int);
+
+typedef u64 (*btf_bpf_sock_ops_getsockopt)(struct bpf_sock_ops_kern *, int, int, char *, int);
+
+typedef u64 (*btf_bpf_sock_ops_cb_flags_set)(struct bpf_sock_ops_kern *, int);
+
+typedef u64 (*btf_bpf_bind)(struct bpf_sock_addr_kern *, struct sockaddr *, int);
+
+struct bpf_xfrm_state;
+
+typedef u64 (*btf_bpf_skb_get_xfrm_state)(struct sk_buff *, u32, struct bpf_xfrm_state *, u32, u64);
+
+struct bpf_xfrm_state {
+	__u32 reqid;
+	__u32 spi;
+	__u16 family;
+	__u16 ext;
+	union {
+		__u32 remote_ipv4;
+		__u32 remote_ipv6[4];
+	};
+};
+
+struct bpf_fib_lookup;
+
+typedef u64 (*btf_bpf_xdp_fib_lookup)(struct xdp_buff *, struct bpf_fib_lookup *, int, u32);
+
+struct bpf_fib_lookup {
+	__u8 family;
+	__u8 l4_protocol;
+	__be16 sport;
+	__be16 dport;
+	union {
+		__u16 tot_len;
+		__u16 mtu_result;
+	};
+	__u32 ifindex;
+	union {
+		__u8 tos;
+		__be32 flowinfo;
+		__u32 rt_metric;
+	};
+	union {
+		__be32 ipv4_src;
+		__u32 ipv6_src[4];
+	};
+	union {
+		__be32 ipv4_dst;
+		__u32 ipv6_dst[4];
+	};
+	union {
+		struct {
+			__be16 h_vlan_proto;
+			__be16 h_vlan_TCI;
+		};
+		__u32 tbid;
+	};
+	__u8 smac[6];
+	__u8 dmac[6];
+};
+
+typedef u64 (*btf_bpf_skb_fib_lookup)(struct sk_buff *, struct bpf_fib_lookup *, int, u32);
+
+typedef u64 (*btf_bpf_skb_check_mtu)(struct sk_buff *, u32, u32 *, s32, u64);
+
+typedef u64 (*btf_bpf_xdp_check_mtu)(struct xdp_buff *, u32, u32 *, s32, u64);
+
+typedef u64 (*btf_bpf_lwt_in_push_encap)(struct sk_buff *, u32, void *, u32);
+
+typedef u64 (*btf_bpf_lwt_xmit_push_encap)(struct sk_buff *, u32, void *, u32);
+
+struct bpf_sock_tuple;
+
+typedef u64 (*btf_bpf_skc_lookup_tcp)(struct sk_buff *, struct bpf_sock_tuple *, u32, u64, u64);
+
+struct bpf_sock_tuple {
+	union {
+		struct {
+			__be32 saddr;
+			__be32 daddr;
+			__be16 sport;
+			__be16 dport;
+		} ipv4;
+		struct {
+			__be32 saddr[4];
+			__be32 daddr[4];
+			__be16 sport;
+			__be16 dport;
+		} ipv6;
+	};
+};
+
+typedef u64 (*btf_bpf_sk_lookup_tcp)(struct sk_buff *, struct bpf_sock_tuple *, u32, u64, u64);
+
+typedef u64 (*btf_bpf_sk_lookup_udp)(struct sk_buff *, struct bpf_sock_tuple *, u32, u64, u64);
+
+typedef u64 (*btf_bpf_tc_skc_lookup_tcp)(struct sk_buff *, struct bpf_sock_tuple *, u32, u64, u64);
+
+typedef u64 (*btf_bpf_tc_sk_lookup_tcp)(struct sk_buff *, struct bpf_sock_tuple *, u32, u64, u64);
+
+typedef u64 (*btf_bpf_tc_sk_lookup_udp)(struct sk_buff *, struct bpf_sock_tuple *, u32, u64, u64);
+
+typedef u64 (*btf_bpf_sk_release)(struct sock *);
+
+typedef u64 (*btf_bpf_xdp_sk_lookup_udp)(struct xdp_buff *, struct bpf_sock_tuple *, u32, u32, u64);
+
+typedef u64 (*btf_bpf_xdp_skc_lookup_tcp)(struct xdp_buff *, struct bpf_sock_tuple *, u32, u32, u64);
+
+typedef u64 (*btf_bpf_xdp_sk_lookup_tcp)(struct xdp_buff *, struct bpf_sock_tuple *, u32, u32, u64);
+
+typedef u64 (*btf_bpf_sock_addr_skc_lookup_tcp)(struct bpf_sock_addr_kern *, struct bpf_sock_tuple *, u32, u64, u64);
+
+typedef u64 (*btf_bpf_sock_addr_sk_lookup_tcp)(struct bpf_sock_addr_kern *, struct bpf_sock_tuple *, u32, u64, u64);
+
+typedef u64 (*btf_bpf_sock_addr_sk_lookup_udp)(struct bpf_sock_addr_kern *, struct bpf_sock_tuple *, u32, u64, u64);
+
+struct bpf_tcp_sock {
+	__u32 snd_cwnd;
+	__u32 srtt_us;
+	__u32 rtt_min;
+	__u32 snd_ssthresh;
+	__u32 rcv_nxt;
+	__u32 snd_nxt;
+	__u32 snd_una;
+	__u32 mss_cache;
+	__u32 ecn_flags;
+	__u32 rate_delivered;
+	__u32 rate_interval_us;
+	__u32 packets_out;
+	__u32 retrans_out;
+	__u32 total_retrans;
+	__u32 segs_in;
+	__u32 data_segs_in;
+	__u32 segs_out;
+	__u32 data_segs_out;
+	__u32 lost_out;
+	__u32 sacked_out;
+	__u64 bytes_received;
+	__u64 bytes_acked;
+	__u32 dsack_dups;
+	__u32 delivered;
+	__u32 delivered_ce;
+	__u32 icsk_retransmits;
+};
+
+typedef u64 (*btf_bpf_tcp_sock)(struct sock *);
+
+typedef u64 (*btf_bpf_get_listener_sock)(struct sock *);
+
+typedef u64 (*btf_bpf_skb_ecn_set_ce)(struct sk_buff *);
+
+typedef u64 (*btf_bpf_tcp_check_syncookie)(struct sock *, void *, u32, struct tcphdr *, u32);
+
+typedef u64 (*btf_bpf_tcp_gen_syncookie)(struct sock *, void *, u32, struct tcphdr *, u32);
+
+typedef u64 (*btf_bpf_sk_assign)(struct sk_buff *, struct sock *, u64);
+
+typedef u64 (*btf_bpf_sock_ops_load_hdr_opt)(struct bpf_sock_ops_kern *, void *, u32, u64);
+
+typedef u64 (*btf_bpf_sock_ops_store_hdr_opt)(struct bpf_sock_ops_kern *, const void *, u32, u64);
+
+typedef u64 (*btf_bpf_sock_ops_reserve_hdr_opt)(struct bpf_sock_ops_kern *, u32, u64);
+
+typedef u64 (*btf_bpf_skb_set_tstamp)(struct sk_buff *, u64, u32);
+
+typedef u64 (*btf_sk_select_reuseport)(struct sk_reuseport_kern *, struct bpf_map *, void *, u32);
+
+typedef u64 (*btf_sk_reuseport_load_bytes)(const struct sk_reuseport_kern *, u32, void *, u32);
+
+typedef u64 (*btf_sk_reuseport_load_bytes_relative)(const struct sk_reuseport_kern *, u32, void *, u32, u32);
+
+typedef u64 (*btf_bpf_sk_lookup_assign)(struct bpf_sk_lookup_kern *, struct sock *, u64);
+
+typedef u64 (*btf_bpf_skc_to_tcp6_sock)(struct sock *);
+
+typedef u64 (*btf_bpf_skc_to_tcp_sock)(struct sock *);
+
+typedef u64 (*btf_bpf_skc_to_tcp_timewait_sock)(struct sock *);
+
+typedef u64 (*btf_bpf_skc_to_tcp_request_sock)(struct sock *);
+
+typedef u64 (*btf_bpf_skc_to_udp6_sock)(struct sock *);
+
+typedef u64 (*btf_bpf_skc_to_unix_sock)(struct sock *);
+
+typedef u64 (*btf_bpf_skc_to_mptcp_sock)(struct sock *);
+
+typedef u64 (*btf_bpf_sock_from_file)(struct file *);
+
+struct strp_msg {
+	int full_len;
+	int offset;
+};
+
+struct tls_strparser {
+	struct sock *sk;
+	u32 mark: 8;
+	u32 stopped: 1;
+	u32 copy_mode: 1;
+	u32 mixed_decrypted: 1;
+	bool msg_ready;
+	struct strp_msg stm;
+	struct sk_buff *anchor;
+	struct work_struct work;
+};
+
+struct tls_sw_context_rx {
+	struct crypto_aead *aead_recv;
+	struct crypto_wait async_wait;
+	struct sk_buff_head rx_list;
+	void (*saved_data_ready)(struct sock *);
+	u8 reader_present;
+	u8 async_capable: 1;
+	u8 zc_capable: 1;
+	u8 reader_contended: 1;
+	struct tls_strparser strp;
+	atomic_t decrypt_pending;
+	struct sk_buff_head async_hold;
+	struct wait_queue_head wq;
+	u64 android_kabi_reserved1;
+};
+
+struct tcp6_sock {
+	struct tcp_sock tcp;
+	struct ipv6_pinfo inet6;
+};
+
+struct inet_timewait_sock {
+	struct sock_common __tw_common;
+	__u32 tw_mark;
+	volatile unsigned char tw_substate;
+	unsigned char tw_rcv_wscale;
+	__be16 tw_sport;
+	unsigned int tw_transparent: 1;
+	unsigned int tw_flowlabel: 20;
+	unsigned int tw_pad: 3;
+	unsigned int tw_tos: 8;
+	u32 tw_txhash;
+	u32 tw_priority;
+	struct timer_list tw_timer;
+	struct inet_bind_bucket *tw_tb;
+	struct inet_bind2_bucket *tw_tb2;
+	struct hlist_node tw_bind2_node;
+};
+
+struct tcp_timewait_sock {
+	struct inet_timewait_sock tw_sk;
+	u32 tw_rcv_wnd;
+	u32 tw_ts_offset;
+	u32 tw_ts_recent;
+	u32 tw_last_oow_ack_time;
+	int tw_ts_recent_stamp;
+	u32 tw_tx_delay;
+};
+
+struct udp6_sock {
+	struct udp_sock udp;
+	struct ipv6_pinfo inet6;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct mptcp_sock {};
+
+struct tls_prot_info {
+	u16 version;
+	u16 cipher_type;
+	u16 prepend_size;
+	u16 tag_size;
+	u16 overhead_size;
+	u16 iv_size;
+	u16 salt_size;
+	u16 rec_seq_size;
+	u16 aad_size;
+	u16 tail_size;
+};
+
+struct cipher_context {
+	char *iv;
+	char *rec_seq;
+};
+
+struct tls_crypto_info {
+	__u16 version;
+	__u16 cipher_type;
+};
+
+struct tls12_crypto_info_aes_gcm_128 {
+	struct tls_crypto_info info;
+	unsigned char iv[8];
+	unsigned char key[16];
+	unsigned char salt[4];
+	unsigned char rec_seq[8];
+};
+
+struct tls12_crypto_info_aes_gcm_256 {
+	struct tls_crypto_info info;
+	unsigned char iv[8];
+	unsigned char key[32];
+	unsigned char salt[4];
+	unsigned char rec_seq[8];
+};
+
+struct tls12_crypto_info_chacha20_poly1305 {
+	struct tls_crypto_info info;
+	unsigned char iv[12];
+	unsigned char key[32];
+	unsigned char salt[0];
+	unsigned char rec_seq[8];
+};
+
+struct tls12_crypto_info_sm4_gcm {
+	struct tls_crypto_info info;
+	unsigned char iv[8];
+	unsigned char key[16];
+	unsigned char salt[4];
+	unsigned char rec_seq[8];
+};
+
+struct tls12_crypto_info_sm4_ccm {
+	struct tls_crypto_info info;
+	unsigned char iv[8];
+	unsigned char key[16];
+	unsigned char salt[4];
+	unsigned char rec_seq[8];
+};
+
+union tls_crypto_context {
+	struct tls_crypto_info info;
+	union {
+		struct tls12_crypto_info_aes_gcm_128 aes_gcm_128;
+		struct tls12_crypto_info_aes_gcm_256 aes_gcm_256;
+		struct tls12_crypto_info_chacha20_poly1305 chacha20_poly1305;
+		struct tls12_crypto_info_sm4_gcm sm4_gcm;
+		struct tls12_crypto_info_sm4_ccm sm4_ccm;
+	};
+};
+
+struct tls_context {
+	struct tls_prot_info prot_info;
+	u8 tx_conf: 3;
+	u8 rx_conf: 3;
+	u8 zerocopy_sendfile: 1;
+	u8 rx_no_pad: 1;
+	int (*push_pending_record)(struct sock *, int);
+	void (*sk_write_space)(struct sock *);
+	void *priv_ctx_tx;
+	void *priv_ctx_rx;
+	struct net_device __attribute__((btf_type_tag("rcu"))) *netdev;
+	struct cipher_context tx;
+	struct cipher_context rx;
+	struct scatterlist *partially_sent_record;
+	u16 partially_sent_offset;
+	bool splicing_pages;
+	bool pending_open_record_frags;
+	struct mutex tx_lock;
+	unsigned long flags;
+	struct proto *sk_proto;
+	struct sock *sk;
+	void (*sk_destruct)(struct sock *);
+	union tls_crypto_context crypto_send;
+	union tls_crypto_context crypto_recv;
+	struct list_head list;
+	refcount_t refcount;
+	struct callback_head rcu;
+};
+
+struct fib_result {
+	__be32 prefix;
+	unsigned char prefixlen;
+	unsigned char nh_sel;
+	unsigned char type;
+	unsigned char scope;
+	u32 tclassid;
+	struct fib_nh_common *nhc;
+	struct fib_info *fi;
+	struct fib_table *table;
+	struct hlist_head *fa_head;
+};
+
+struct fib6_result {
+	struct fib6_nh *nh;
+	struct fib6_info *f6i;
+	u32 fib6_flags;
+	u8 fib6_type;
+	struct rt6_info *rt6;
+};
+
+struct sock_diag_handler {
+	__u8 family;
+	int (*dump)(struct sk_buff *, struct nlmsghdr *);
+	int (*get_info)(struct sk_buff *, struct sock *);
+	int (*destroy)(struct sk_buff *, struct nlmsghdr *);
+};
+
+struct broadcast_sk {
+	struct sock *sk;
+	struct work_struct work;
+};
+
+struct sock_diag_req {
+	__u8 sdiag_family;
+	__u8 sdiag_protocol;
+};
+
+enum hwtstamp_tx_types {
+	HWTSTAMP_TX_OFF = 0,
+	HWTSTAMP_TX_ON = 1,
+	HWTSTAMP_TX_ONESTEP_SYNC = 2,
+	HWTSTAMP_TX_ONESTEP_P2P = 3,
+	__HWTSTAMP_TX_CNT = 4,
+};
+
+enum hwtstamp_rx_filters {
+	HWTSTAMP_FILTER_NONE = 0,
+	HWTSTAMP_FILTER_ALL = 1,
+	HWTSTAMP_FILTER_SOME = 2,
+	HWTSTAMP_FILTER_PTP_V1_L4_EVENT = 3,
+	HWTSTAMP_FILTER_PTP_V1_L4_SYNC = 4,
+	HWTSTAMP_FILTER_PTP_V1_L4_DELAY_REQ = 5,
+	HWTSTAMP_FILTER_PTP_V2_L4_EVENT = 6,
+	HWTSTAMP_FILTER_PTP_V2_L4_SYNC = 7,
+	HWTSTAMP_FILTER_PTP_V2_L4_DELAY_REQ = 8,
+	HWTSTAMP_FILTER_PTP_V2_L2_EVENT = 9,
+	HWTSTAMP_FILTER_PTP_V2_L2_SYNC = 10,
+	HWTSTAMP_FILTER_PTP_V2_L2_DELAY_REQ = 11,
+	HWTSTAMP_FILTER_PTP_V2_EVENT = 12,
+	HWTSTAMP_FILTER_PTP_V2_SYNC = 13,
+	HWTSTAMP_FILTER_PTP_V2_DELAY_REQ = 14,
+	HWTSTAMP_FILTER_NTP_ALL = 15,
+	__HWTSTAMP_FILTER_CNT = 16,
+};
+
+enum hwtstamp_flags {
+	HWTSTAMP_FLAG_BONDED_PHC_INDEX = 1,
+	HWTSTAMP_FLAG_LAST = 1,
+	HWTSTAMP_FLAG_MASK = 1,
+};
+
+struct hwtstamp_config {
+	int flags;
+	int tx_type;
+	int rx_filter;
+};
+
+struct compat_ifconf {
+	compat_int_t ifc_len;
+	compat_caddr_t ifcbuf;
+};
+
+struct tso_t {
+	int next_frag_idx;
+	int size;
+	void *data;
+	u16 ip_id;
+	u8 tlen;
+	bool ipv6;
+	u32 tcp_seq;
+};
+
+enum fib_event_type {
+	FIB_EVENT_ENTRY_REPLACE = 0,
+	FIB_EVENT_ENTRY_APPEND = 1,
+	FIB_EVENT_ENTRY_ADD = 2,
+	FIB_EVENT_ENTRY_DEL = 3,
+	FIB_EVENT_RULE_ADD = 4,
+	FIB_EVENT_RULE_DEL = 5,
+	FIB_EVENT_NH_ADD = 6,
+	FIB_EVENT_NH_DEL = 7,
+	FIB_EVENT_VIF_ADD = 8,
+	FIB_EVENT_VIF_DEL = 9,
+};
+
+struct fib_notifier_net {
+	struct list_head fib_notifier_ops;
+	struct atomic_notifier_head fib_chain;
+};
+
+struct fib_notifier_info {
+	int family;
+	struct netlink_ext_ack *extack;
+};
+
+struct xdp_frame_bulk {
+	int count;
+	void *xa;
+	void *q[16];
+};
+
+struct xdp_attachment_info {
+	struct bpf_prog *prog;
+	u32 flags;
+};
+
+enum flow_action_id {
+	FLOW_ACTION_ACCEPT = 0,
+	FLOW_ACTION_DROP = 1,
+	FLOW_ACTION_TRAP = 2,
+	FLOW_ACTION_GOTO = 3,
+	FLOW_ACTION_REDIRECT = 4,
+	FLOW_ACTION_MIRRED = 5,
+	FLOW_ACTION_REDIRECT_INGRESS = 6,
+	FLOW_ACTION_MIRRED_INGRESS = 7,
+	FLOW_ACTION_VLAN_PUSH = 8,
+	FLOW_ACTION_VLAN_POP = 9,
+	FLOW_ACTION_VLAN_MANGLE = 10,
+	FLOW_ACTION_TUNNEL_ENCAP = 11,
+	FLOW_ACTION_TUNNEL_DECAP = 12,
+	FLOW_ACTION_MANGLE = 13,
+	FLOW_ACTION_ADD = 14,
+	FLOW_ACTION_CSUM = 15,
+	FLOW_ACTION_MARK = 16,
+	FLOW_ACTION_PTYPE = 17,
+	FLOW_ACTION_PRIORITY = 18,
+	FLOW_ACTION_RX_QUEUE_MAPPING = 19,
+	FLOW_ACTION_WAKE = 20,
+	FLOW_ACTION_QUEUE = 21,
+	FLOW_ACTION_SAMPLE = 22,
+	FLOW_ACTION_POLICE = 23,
+	FLOW_ACTION_CT = 24,
+	FLOW_ACTION_CT_METADATA = 25,
+	FLOW_ACTION_MPLS_PUSH = 26,
+	FLOW_ACTION_MPLS_POP = 27,
+	FLOW_ACTION_MPLS_MANGLE = 28,
+	FLOW_ACTION_GATE = 29,
+	FLOW_ACTION_PPPOE_PUSH = 30,
+	FLOW_ACTION_JUMP = 31,
+	FLOW_ACTION_PIPE = 32,
+	FLOW_ACTION_VLAN_PUSH_ETH = 33,
+	FLOW_ACTION_VLAN_POP_ETH = 34,
+	FLOW_ACTION_CONTINUE = 35,
+	NUM_FLOW_ACTIONS = 36,
+};
+
+enum flow_action_hw_stats {
+	FLOW_ACTION_HW_STATS_IMMEDIATE = 1,
+	FLOW_ACTION_HW_STATS_DELAYED = 2,
+	FLOW_ACTION_HW_STATS_ANY = 3,
+	FLOW_ACTION_HW_STATS_DISABLED = 4,
+	FLOW_ACTION_HW_STATS_DONT_CARE = 7,
+};
+
+enum flow_action_mangle_base {
+	FLOW_ACT_MANGLE_UNSPEC = 0,
+	FLOW_ACT_MANGLE_HDR_TYPE_ETH = 1,
+	FLOW_ACT_MANGLE_HDR_TYPE_IP4 = 2,
+	FLOW_ACT_MANGLE_HDR_TYPE_IP6 = 3,
+	FLOW_ACT_MANGLE_HDR_TYPE_TCP = 4,
+	FLOW_ACT_MANGLE_HDR_TYPE_UDP = 5,
+};
+
+enum offload_act_command {
+	FLOW_ACT_REPLACE = 0,
+	FLOW_ACT_DESTROY = 1,
+	FLOW_ACT_STATS = 2,
+};
+
+enum flow_block_binder_type {
+	FLOW_BLOCK_BINDER_TYPE_UNSPEC = 0,
+	FLOW_BLOCK_BINDER_TYPE_CLSACT_INGRESS = 1,
+	FLOW_BLOCK_BINDER_TYPE_CLSACT_EGRESS = 2,
+	FLOW_BLOCK_BINDER_TYPE_RED_EARLY_DROP = 3,
+	FLOW_BLOCK_BINDER_TYPE_RED_MARK = 4,
+};
+
+enum flow_block_command {
+	FLOW_BLOCK_BIND = 0,
+	FLOW_BLOCK_UNBIND = 1,
+};
+
+struct flow_block_cb;
+
+struct flow_block_indr {
+	struct list_head list;
+	struct net_device *dev;
+	struct Qdisc *sch;
+	enum flow_block_binder_type binder_type;
+	void *data;
+	void *cb_priv;
+	void (*cleanup)(struct flow_block_cb *);
+};
+
+struct flow_block_cb {
+	struct list_head driver_list;
+	struct list_head list;
+	flow_setup_cb_t *cb;
+	void *cb_ident;
+	void *cb_priv;
+	void (*release)(void *);
+	struct flow_block_indr indr;
+	unsigned int refcnt;
+};
+
+typedef int flow_indr_block_bind_cb_t(struct net_device *, struct Qdisc *, void *, enum tc_setup_type, void *, void *, void (*)(struct flow_block_cb *));
+
+struct flow_indr_dev {
+	struct list_head list;
+	flow_indr_block_bind_cb_t *cb;
+	void *cb_priv;
+	refcount_t refcnt;
+};
+
+struct flow_indir_dev_info {
+	void *data;
+	struct net_device *dev;
+	struct Qdisc *sch;
+	enum tc_setup_type type;
+	void (*cleanup)(struct flow_block_cb *);
+	struct list_head list;
+	enum flow_block_command command;
+	enum flow_block_binder_type binder_type;
+	struct list_head *cb_list;
+};
+
+struct flow_block_offload {
+	enum flow_block_command command;
+	enum flow_block_binder_type binder_type;
+	bool block_shared;
+	bool unlocked_driver_cb;
+	struct net *net;
+	struct flow_block *block;
+	struct list_head cb_list;
+	struct list_head *driver_block_list;
+	struct netlink_ext_ack *extack;
+	struct Qdisc *sch;
+	struct list_head *cb_list_head;
+};
+
+struct flow_match {
+	struct flow_dissector *dissector;
+	void *mask;
+	void *key;
+};
+
+typedef void (*action_destr)(void *);
+
+struct nf_flowtable;
+
+struct action_gate_entry;
+
+struct flow_action_cookie;
+
+struct flow_action_entry {
+	enum flow_action_id id;
+	u32 hw_index;
+	unsigned long cookie;
+	u64 miss_cookie;
+	enum flow_action_hw_stats hw_stats;
+	action_destr destructor;
+	void *destructor_priv;
+	union {
+		u32 chain_index;
+		struct net_device *dev;
+		struct {
+			u16 vid;
+			__be16 proto;
+			u8 prio;
+		} vlan;
+		struct {
+			unsigned char dst[6];
+			unsigned char src[6];
+		} vlan_push_eth;
+		struct {
+			enum flow_action_mangle_base htype;
+			u32 offset;
+			u32 mask;
+			u32 val;
+		} mangle;
+		struct ip_tunnel_info *tunnel;
+		u32 csum_flags;
+		u32 mark;
+		u16 ptype;
+		u16 rx_queue;
+		u32 priority;
+		struct {
+			u32 ctx;
+			u32 index;
+			u8 vf;
+		} queue;
+		struct {
+			struct psample_group *psample_group;
+			u32 rate;
+			u32 trunc_size;
+			bool truncate;
+		} sample;
+		struct {
+			u32 burst;
+			u64 rate_bytes_ps;
+			u64 peakrate_bytes_ps;
+			u32 avrate;
+			u16 overhead;
+			u64 burst_pkt;
+			u64 rate_pkt_ps;
+			u32 mtu;
+			struct {
+				enum flow_action_id act_id;
+				u32 extval;
+			} exceed;
+			struct {
+				enum flow_action_id act_id;
+				u32 extval;
+			} notexceed;
+		} police;
+		struct {
+			int action;
+			u16 zone;
+			struct nf_flowtable *flow_table;
+		} ct;
+		struct {
+			unsigned long cookie;
+			u32 mark;
+			u32 labels[4];
+			bool orig_dir;
+		} ct_metadata;
+		struct {
+			u32 label;
+			__be16 proto;
+			u8 tc;
+			u8 bos;
+			u8 ttl;
+		} mpls_push;
+		struct {
+			__be16 proto;
+		} mpls_pop;
+		struct {
+			u32 label;
+			u8 tc;
+			u8 bos;
+			u8 ttl;
+		} mpls_mangle;
+		struct {
+			s32 prio;
+			u64 basetime;
+			u64 cycletime;
+			u64 cycletimeext;
+			u32 num_entries;
+			struct action_gate_entry *entries;
+		} gate;
+		struct {
+			u16 sid;
+		} pppoe;
+	};
+	struct flow_action_cookie *user_cookie;
+};
+
+struct flow_action {
+	unsigned int num_entries;
+	struct flow_action_entry entries[0];
+};
+
+struct flow_rule {
+	struct flow_match match;
+	struct flow_action action;
+};
+
+struct flow_action_cookie {
+	u32 cookie_len;
+	u8 cookie[0];
+};
+
+struct flow_stats {
+	u64 pkts;
+	u64 bytes;
+	u64 drops;
+	u64 lastused;
+	enum flow_action_hw_stats used_hw_stats;
+	bool used_hw_stats_valid;
+};
+
+struct flow_offload_action {
+	struct netlink_ext_ack *extack;
+	enum offload_act_command command;
+	enum flow_action_id id;
+	u32 index;
+	unsigned long cookie;
+	struct flow_stats stats;
+	struct flow_action action;
+};
+
+struct flow_match_meta {
+	struct flow_dissector_key_meta *key;
+	struct flow_dissector_key_meta *mask;
+};
+
+struct flow_match_basic {
+	struct flow_dissector_key_basic *key;
+	struct flow_dissector_key_basic *mask;
+};
+
+struct flow_match_control {
+	struct flow_dissector_key_control *key;
+	struct flow_dissector_key_control *mask;
+};
+
+struct flow_match_eth_addrs {
+	struct flow_dissector_key_eth_addrs *key;
+	struct flow_dissector_key_eth_addrs *mask;
+};
+
+struct flow_match_vlan {
+	struct flow_dissector_key_vlan *key;
+	struct flow_dissector_key_vlan *mask;
+};
+
+struct flow_match_arp {
+	struct flow_dissector_key_arp *key;
+	struct flow_dissector_key_arp *mask;
+};
+
+struct flow_match_ipv4_addrs {
+	struct flow_dissector_key_ipv4_addrs *key;
+	struct flow_dissector_key_ipv4_addrs *mask;
+};
+
+struct flow_match_ipv6_addrs {
+	struct flow_dissector_key_ipv6_addrs *key;
+	struct flow_dissector_key_ipv6_addrs *mask;
+};
+
+struct flow_match_ip {
+	struct flow_dissector_key_ip *key;
+	struct flow_dissector_key_ip *mask;
+};
+
+struct flow_match_ports {
+	struct flow_dissector_key_ports *key;
+	struct flow_dissector_key_ports *mask;
+};
+
+struct flow_dissector_key_ports_range;
+
+struct flow_match_ports_range {
+	struct flow_dissector_key_ports_range *key;
+	struct flow_dissector_key_ports_range *mask;
+};
+
+struct flow_dissector_key_ports_range {
+	union {
+		struct flow_dissector_key_ports tp;
+		struct {
+			struct flow_dissector_key_ports tp_min;
+			struct flow_dissector_key_ports tp_max;
+		};
+	};
+};
+
+struct flow_match_tcp {
+	struct flow_dissector_key_tcp *key;
+	struct flow_dissector_key_tcp *mask;
+};
+
+struct flow_match_ipsec {
+	struct flow_dissector_key_ipsec *key;
+	struct flow_dissector_key_ipsec *mask;
+};
+
+struct flow_match_icmp {
+	struct flow_dissector_key_icmp *key;
+	struct flow_dissector_key_icmp *mask;
+};
+
+struct flow_match_mpls {
+	struct flow_dissector_key_mpls *key;
+	struct flow_dissector_key_mpls *mask;
+};
+
+struct flow_match_enc_keyid {
+	struct flow_dissector_key_keyid *key;
+	struct flow_dissector_key_keyid *mask;
+};
+
+struct flow_match_enc_opts {
+	struct flow_dissector_key_enc_opts *key;
+	struct flow_dissector_key_enc_opts *mask;
+};
+
+struct flow_match_ct {
+	struct flow_dissector_key_ct *key;
+	struct flow_dissector_key_ct *mask;
+};
+
+struct flow_match_pppoe {
+	struct flow_dissector_key_pppoe *key;
+	struct flow_dissector_key_pppoe *mask;
+};
+
+struct flow_match_l2tpv3 {
+	struct flow_dissector_key_l2tpv3 *key;
+	struct flow_dissector_key_l2tpv3 *mask;
+};
+
+struct offload_callbacks {
+	struct sk_buff * (*gso_segment)(struct sk_buff *, netdev_features_t);
+	struct sk_buff * (*gro_receive)(struct list_head *, struct sk_buff *);
+	int (*gro_complete)(struct sk_buff *, int);
+};
+
+struct packet_offload {
+	__be16 type;
+	u16 priority;
+	struct offload_callbacks callbacks;
+	struct list_head list;
+};
+
+struct napi_gro_cb {
+	union {
+		struct {
+			void *frag0;
+			unsigned int frag0_len;
+		};
+		struct {
+			struct sk_buff *last;
+			unsigned long age;
+		};
+	};
+	int data_offset;
+	u16 flush;
+	u16 flush_id;
+	u16 count;
+	u16 proto;
+	union {
+		struct {
+			u16 gro_remcsum_start;
+			u8 same_flow: 1;
+			u8 encap_mark: 1;
+			u8 csum_valid: 1;
+			u8 csum_cnt: 3;
+			u8 free: 2;
+			u8 is_ipv6: 1;
+			u8 is_fou: 1;
+			u8 is_atomic: 1;
+			u8 recursion_counter: 4;
+			u8 is_flist: 1;
+		};
+		struct {
+			u16 gro_remcsum_start;
+			u8 same_flow: 1;
+			u8 encap_mark: 1;
+			u8 csum_valid: 1;
+			u8 csum_cnt: 3;
+			u8 free: 2;
+			u8 is_ipv6: 1;
+			u8 is_fou: 1;
+			u8 is_atomic: 1;
+			u8 recursion_counter: 4;
+			u8 is_flist: 1;
+		} zeroed;
+	};
+	__wsum csum;
+};
+
+enum {
+	NETDEV_A_DEV_IFINDEX = 1,
+	NETDEV_A_DEV_PAD = 2,
+	NETDEV_A_DEV_XDP_FEATURES = 3,
+	NETDEV_A_DEV_XDP_ZC_MAX_SEGS = 4,
+	__NETDEV_A_DEV_MAX = 5,
+	NETDEV_A_DEV_MAX = 4,
+};
+
+enum {
+	NETDEV_CMD_DEV_GET = 1,
+	NETDEV_CMD_DEV_ADD_NTF = 2,
+	NETDEV_CMD_DEV_DEL_NTF = 3,
+	NETDEV_CMD_DEV_CHANGE_NTF = 4,
+	__NETDEV_CMD_MAX = 5,
+	NETDEV_CMD_MAX = 4,
+};
+
+enum {
+	NETDEV_NLGRP_MGMT = 0,
+};
+
+struct rx_queue_attribute {
+	struct attribute attr;
+	ssize_t (*show)(struct netdev_rx_queue *, char *);
+	ssize_t (*store)(struct netdev_rx_queue *, const char *, size_t);
+};
+
+struct netdev_queue_attribute {
+	struct attribute attr;
+	ssize_t (*show)(struct netdev_queue *, char *);
+	ssize_t (*store)(struct netdev_queue *, const char *, size_t);
+};
+
+enum {
+	FR_ACT_UNSPEC = 0,
+	FR_ACT_TO_TBL = 1,
+	FR_ACT_GOTO = 2,
+	FR_ACT_NOP = 3,
+	FR_ACT_RES3 = 4,
+	FR_ACT_RES4 = 5,
+	FR_ACT_BLACKHOLE = 6,
+	FR_ACT_UNREACHABLE = 7,
+	FR_ACT_PROHIBIT = 8,
+	__FR_ACT_MAX = 9,
+};
+
+enum {
+	FRA_UNSPEC = 0,
+	FRA_DST = 1,
+	FRA_SRC = 2,
+	FRA_IIFNAME = 3,
+	FRA_GOTO = 4,
+	FRA_UNUSED2 = 5,
+	FRA_PRIORITY = 6,
+	FRA_UNUSED3 = 7,
+	FRA_UNUSED4 = 8,
+	FRA_UNUSED5 = 9,
+	FRA_FWMARK = 10,
+	FRA_FLOW = 11,
+	FRA_TUN_ID = 12,
+	FRA_SUPPRESS_IFGROUP = 13,
+	FRA_SUPPRESS_PREFIXLEN = 14,
+	FRA_TABLE = 15,
+	FRA_FWMASK = 16,
+	FRA_OIFNAME = 17,
+	FRA_PAD = 18,
+	FRA_L3MDEV = 19,
+	FRA_UID_RANGE = 20,
+	FRA_PROTOCOL = 21,
+	FRA_IP_PROTO = 22,
+	FRA_SPORT_RANGE = 23,
+	FRA_DPORT_RANGE = 24,
+	__FRA_MAX = 25,
+};
+
+struct fib_rule_uid_range {
+	__u32 start;
+	__u32 end;
+};
+
+struct fib_rule_notifier_info {
+	struct fib_notifier_info info;
+	struct fib_rule *rule;
+};
+
+typedef void (*btf_trace_kfree_skb)(void *, struct sk_buff *, void *, enum skb_drop_reason);
+
+typedef void (*btf_trace_consume_skb)(void *, struct sk_buff *, void *);
+
+typedef void (*btf_trace_skb_copy_datagram_iovec)(void *, const struct sk_buff *, int);
+
+typedef void (*btf_trace_net_dev_start_xmit)(void *, const struct sk_buff *, const struct net_device *);
+
+typedef void (*btf_trace_net_dev_xmit)(void *, struct sk_buff *, int, struct net_device *, unsigned int);
+
+typedef void (*btf_trace_net_dev_xmit_timeout)(void *, struct net_device *, int);
+
+typedef void (*btf_trace_net_dev_queue)(void *, struct sk_buff *);
+
+typedef void (*btf_trace_netif_receive_skb)(void *, struct sk_buff *);
+
+typedef void (*btf_trace_netif_rx)(void *, struct sk_buff *);
+
+typedef void (*btf_trace_napi_gro_frags_entry)(void *, const struct sk_buff *);
+
+typedef void (*btf_trace_napi_gro_receive_entry)(void *, const struct sk_buff *);
+
+typedef void (*btf_trace_netif_receive_skb_entry)(void *, const struct sk_buff *);
+
+typedef void (*btf_trace_netif_receive_skb_list_entry)(void *, const struct sk_buff *);
+
+typedef void (*btf_trace_netif_rx_entry)(void *, const struct sk_buff *);
+
+typedef void (*btf_trace_napi_gro_frags_exit)(void *, int);
+
+typedef void (*btf_trace_napi_gro_receive_exit)(void *, int);
+
+typedef void (*btf_trace_netif_receive_skb_exit)(void *, int);
+
+typedef void (*btf_trace_netif_rx_exit)(void *, int);
+
+typedef void (*btf_trace_netif_receive_skb_list_exit)(void *, int);
+
+typedef void (*btf_trace_napi_poll)(void *, struct napi_struct *, int, int);
+
+typedef void (*btf_trace_sock_rcvqueue_full)(void *, struct sock *, struct sk_buff *);
+
+typedef void (*btf_trace_sock_exceed_buf_limit)(void *, struct sock *, struct proto *, long, int);
+
+typedef void (*btf_trace_inet_sock_set_state)(void *, const struct sock *, const int, const int);
+
+typedef void (*btf_trace_inet_sk_error_report)(void *, const struct sock *);
+
+typedef void (*btf_trace_sk_data_ready)(void *, const struct sock *);
+
+typedef void (*btf_trace_sock_send_length)(void *, struct sock *, int, int);
+
+typedef void (*btf_trace_sock_recv_length)(void *, struct sock *, int, int);
+
+typedef void (*btf_trace_udp_fail_queue_rcv_skb)(void *, int, struct sock *);
+
+typedef void (*btf_trace_tcp_retransmit_skb)(void *, const struct sock *, const struct sk_buff *);
+
+typedef void (*btf_trace_tcp_send_reset)(void *, const struct sock *, const struct sk_buff *);
+
+typedef void (*btf_trace_tcp_receive_reset)(void *, struct sock *);
+
+typedef void (*btf_trace_tcp_destroy_sock)(void *, struct sock *);
+
+typedef void (*btf_trace_tcp_rcv_space_adjust)(void *, struct sock *);
+
+typedef void (*btf_trace_tcp_retransmit_synack)(void *, const struct sock *, const struct request_sock *);
+
+typedef void (*btf_trace_tcp_probe)(void *, struct sock *, struct sk_buff *);
+
+typedef void (*btf_trace_tcp_bad_csum)(void *, const struct sk_buff *);
+
+typedef void (*btf_trace_tcp_cong_state_set)(void *, struct sock *, const u8);
+
+typedef void (*btf_trace_fib_table_lookup)(void *, u32, const struct flowi4 *, const struct fib_nh_common *, int);
+
+typedef void (*btf_trace_qdisc_dequeue)(void *, struct Qdisc *, const struct netdev_queue *, int, struct sk_buff *);
+
+typedef void (*btf_trace_qdisc_enqueue)(void *, struct Qdisc *, const struct netdev_queue *, struct sk_buff *);
+
+typedef void (*btf_trace_qdisc_reset)(void *, struct Qdisc *);
+
+typedef void (*btf_trace_qdisc_destroy)(void *, struct Qdisc *);
+
+typedef void (*btf_trace_qdisc_create)(void *, const struct Qdisc_ops *, struct net_device *, u32);
+
+typedef void (*btf_trace_br_fdb_add)(void *, struct ndmsg *, struct net_device *, const unsigned char *, u16, u16);
+
+struct net_bridge;
+
+struct net_bridge_port;
+
+typedef void (*btf_trace_br_fdb_external_learn_add)(void *, struct net_bridge *, struct net_bridge_port *, const unsigned char *, u16);
+
+struct bridge_id {
+	unsigned char prio[2];
+	unsigned char addr[6];
+};
+
+typedef struct bridge_id bridge_id;
+
+struct bridge_mcast_other_query {
+	struct timer_list timer;
+	struct timer_list delay_timer;
+};
+
+struct bridge_mcast_own_query {
+	struct timer_list timer;
+	u32 startup_sent;
+};
+
+struct br_ip {
+	union {
+		__be32 ip4;
+		struct in6_addr ip6;
+	} src;
+	union {
+		__be32 ip4;
+		struct in6_addr ip6;
+		unsigned char mac_addr[6];
+	} dst;
+	__be16 proto;
+	__u16 vid;
+};
+
+struct bridge_mcast_querier {
+	struct br_ip addr;
+	int port_ifidx;
+	seqcount_spinlock_t seq;
+};
+
+struct net_bridge_vlan;
+
+struct net_bridge_mcast {
+	struct net_bridge *br;
+	struct net_bridge_vlan *vlan;
+	u32 multicast_last_member_count;
+	u32 multicast_startup_query_count;
+	u8 multicast_querier;
+	u8 multicast_igmp_version;
+	u8 multicast_router;
+	u8 multicast_mld_version;
+	unsigned long multicast_last_member_interval;
+	unsigned long multicast_membership_interval;
+	unsigned long multicast_querier_interval;
+	unsigned long multicast_query_interval;
+	unsigned long multicast_query_response_interval;
+	unsigned long multicast_startup_query_interval;
+	struct hlist_head ip4_mc_router_list;
+	struct timer_list ip4_mc_router_timer;
+	struct bridge_mcast_other_query ip4_other_query;
+	struct bridge_mcast_own_query ip4_own_query;
+	struct bridge_mcast_querier ip4_querier;
+	struct hlist_head ip6_mc_router_list;
+	struct timer_list ip6_mc_router_timer;
+	struct bridge_mcast_other_query ip6_other_query;
+	struct bridge_mcast_own_query ip6_own_query;
+	struct bridge_mcast_querier ip6_querier;
+};
+
+struct bridge_mcast_stats;
+
+struct net_bridge {
+	spinlock_t lock;
+	spinlock_t hash_lock;
+	struct hlist_head frame_type_list;
+	struct net_device *dev;
+	unsigned long options;
+	struct rhashtable fdb_hash_tbl;
+	struct list_head port_list;
+	u16 group_fwd_mask;
+	u16 group_fwd_mask_required;
+	bridge_id designated_root;
+	bridge_id bridge_id;
+	unsigned char topology_change;
+	unsigned char topology_change_detected;
+	u16 root_port;
+	unsigned long max_age;
+	unsigned long hello_time;
+	unsigned long forward_delay;
+	unsigned long ageing_time;
+	unsigned long bridge_max_age;
+	unsigned long bridge_hello_time;
+	unsigned long bridge_forward_delay;
+	unsigned long bridge_ageing_time;
+	u32 root_path_cost;
+	u8 group_addr[6];
+	enum {
+		BR_NO_STP = 0,
+		BR_KERNEL_STP = 1,
+		BR_USER_STP = 2,
+	} stp_enabled;
+	struct net_bridge_mcast multicast_ctx;
+	struct bridge_mcast_stats __attribute__((btf_type_tag("percpu"))) *mcast_stats;
+	u32 hash_max;
+	spinlock_t multicast_lock;
+	struct rhashtable mdb_hash_tbl;
+	struct rhashtable sg_port_tbl;
+	struct hlist_head mcast_gc_list;
+	struct hlist_head mdb_list;
+	struct work_struct mcast_gc_work;
+	struct timer_list hello_timer;
+	struct timer_list tcn_timer;
+	struct timer_list topology_change_timer;
+	struct delayed_work gc_work;
+	struct kobject *ifobj;
+	u32 auto_cnt;
+	struct hlist_head fdb_list;
+};
+
+struct net_bridge_mcast_port {
+	struct net_bridge_port *port;
+	struct net_bridge_vlan *vlan;
+	struct bridge_mcast_own_query ip4_own_query;
+	struct timer_list ip4_mc_router_timer;
+	struct hlist_node ip4_rlist;
+	struct bridge_mcast_own_query ip6_own_query;
+	struct timer_list ip6_mc_router_timer;
+	struct hlist_node ip6_rlist;
+	unsigned char multicast_router;
+	u32 mdb_n_entries;
+	u32 mdb_max_entries;
+};
+
+struct br_tunnel_info {
+	__be64 tunnel_id;
+	struct metadata_dst __attribute__((btf_type_tag("rcu"))) *tunnel_dst;
+};
+
+struct net_bridge_vlan {
+	struct rhash_head vnode;
+	struct rhash_head tnode;
+	u16 vid;
+	u16 flags;
+	u16 priv_flags;
+	u8 state;
+	struct pcpu_sw_netstats __attribute__((btf_type_tag("percpu"))) *stats;
+	union {
+		struct net_bridge *br;
+		struct net_bridge_port *port;
+	};
+	union {
+		refcount_t refcnt;
+		struct net_bridge_vlan *brvlan;
+	};
+	struct br_tunnel_info tinfo;
+	union {
+		struct net_bridge_mcast br_mcast_ctx;
+		struct net_bridge_mcast_port port_mcast_ctx;
+	};
+	u16 msti;
+	struct list_head vlist;
+	struct callback_head rcu;
+};
+
+typedef __u16 port_id;
+
+struct bridge_stp_xstats {
+	__u64 transition_blk;
+	__u64 transition_fwd;
+	__u64 rx_bpdu;
+	__u64 tx_bpdu;
+	__u64 rx_tcn;
+	__u64 tx_tcn;
+};
+
+struct net_bridge_port {
+	struct net_bridge *br;
+	struct net_device *dev;
+	netdevice_tracker dev_tracker;
+	struct list_head list;
+	unsigned long flags;
+	struct net_bridge_port __attribute__((btf_type_tag("rcu"))) *backup_port;
+	u32 backup_nhid;
+	u8 priority;
+	u8 state;
+	u16 port_no;
+	unsigned char topology_change_ack;
+	unsigned char config_pending;
+	port_id port_id;
+	port_id designated_port;
+	bridge_id designated_root;
+	bridge_id designated_bridge;
+	u32 path_cost;
+	u32 designated_cost;
+	unsigned long designated_age;
+	struct timer_list forward_delay_timer;
+	struct timer_list hold_timer;
+	struct timer_list message_age_timer;
+	struct kobject kobj;
+	struct callback_head rcu;
+	struct net_bridge_mcast_port multicast_ctx;
+	struct bridge_mcast_stats __attribute__((btf_type_tag("percpu"))) *mcast_stats;
+	u32 multicast_eht_hosts_limit;
+	u32 multicast_eht_hosts_cnt;
+	struct hlist_head mglist;
+	char sysfs_name[16];
+	u16 group_fwd_mask;
+	u16 backup_redirected_cnt;
+	struct bridge_stp_xstats stp_xstats;
+};
+
+struct br_mcast_stats {
+	__u64 igmp_v1queries[2];
+	__u64 igmp_v2queries[2];
+	__u64 igmp_v3queries[2];
+	__u64 igmp_leaves[2];
+	__u64 igmp_v1reports[2];
+	__u64 igmp_v2reports[2];
+	__u64 igmp_v3reports[2];
+	__u64 igmp_parse_errors;
+	__u64 mld_v1queries[2];
+	__u64 mld_v2queries[2];
+	__u64 mld_leaves[2];
+	__u64 mld_v1reports[2];
+	__u64 mld_v2reports[2];
+	__u64 mld_parse_errors;
+	__u64 mcast_bytes[2];
+	__u64 mcast_packets[2];
+};
+
+struct bridge_mcast_stats {
+	struct br_mcast_stats mstats;
+	struct u64_stats_sync syncp;
+};
+
+struct net_bridge_fdb_entry;
+
+typedef void (*btf_trace_fdb_delete)(void *, struct net_bridge *, struct net_bridge_fdb_entry *);
+
+struct mac_addr {
+	unsigned char addr[6];
+};
+
+typedef struct mac_addr mac_addr;
+
+struct net_bridge_fdb_key {
+	mac_addr addr;
+	u16 vlan_id;
+};
+
+struct net_bridge_fdb_entry {
+	struct rhash_head rhnode;
+	struct net_bridge_port *dst;
+	struct net_bridge_fdb_key key;
+	struct hlist_node fdb_node;
+	unsigned long flags;
+	long: 64;
+	long: 64;
+	unsigned long updated;
+	unsigned long used;
+	struct callback_head rcu;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+typedef void (*btf_trace_br_fdb_update)(void *, struct net_bridge *, struct net_bridge_port *, const unsigned char *, u16, unsigned long);
+
+typedef void (*btf_trace_br_mdb_full)(void *, const struct net_device *, const struct br_ip *);
+
+typedef void (*btf_trace_page_pool_release)(void *, const struct page_pool *, s32, u32, u32);
+
+typedef void (*btf_trace_page_pool_state_release)(void *, const struct page_pool *, const struct page *, u32);
+
+typedef void (*btf_trace_page_pool_state_hold)(void *, const struct page_pool *, const struct page *, u32);
+
+typedef void (*btf_trace_page_pool_update_nid)(void *, const struct page_pool *, int);
+
+typedef void (*btf_trace_neigh_create)(void *, struct neigh_table *, struct net_device *, const void *, const struct neighbour *, bool);
+
+typedef void (*btf_trace_neigh_update)(void *, struct neighbour *, const u8 *, u8, u32, u32);
+
+typedef void (*btf_trace_neigh_update_done)(void *, struct neighbour *, int);
+
+typedef void (*btf_trace_neigh_timer_handler)(void *, struct neighbour *, int);
+
+typedef void (*btf_trace_neigh_event_send_done)(void *, struct neighbour *, int);
+
+typedef void (*btf_trace_neigh_event_send_dead)(void *, struct neighbour *, int);
+
+typedef void (*btf_trace_neigh_cleanup_and_release)(void *, struct neighbour *, int);
+
+enum tcp_ca_state {
+	TCP_CA_Open = 0,
+	TCP_CA_Disorder = 1,
+	TCP_CA_CWR = 2,
+	TCP_CA_Recovery = 3,
+	TCP_CA_Loss = 4,
+};
+
+struct trace_event_raw_kfree_skb {
+	struct trace_entry ent;
+	void *skbaddr;
+	void *location;
+	unsigned short protocol;
+	enum skb_drop_reason reason;
+	char __data[0];
+};
+
+struct trace_event_raw_consume_skb {
+	struct trace_entry ent;
+	void *skbaddr;
+	void *location;
+	char __data[0];
+};
+
+struct trace_event_raw_skb_copy_datagram_iovec {
+	struct trace_entry ent;
+	const void *skbaddr;
+	int len;
+	char __data[0];
+};
+
+struct trace_event_raw_net_dev_start_xmit {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	u16 queue_mapping;
+	const void *skbaddr;
+	bool vlan_tagged;
+	u16 vlan_proto;
+	u16 vlan_tci;
+	u16 protocol;
+	u8 ip_summed;
+	unsigned int len;
+	unsigned int data_len;
+	int network_offset;
+	bool transport_offset_valid;
+	int transport_offset;
+	u8 tx_flags;
+	u16 gso_size;
+	u16 gso_segs;
+	u16 gso_type;
+	char __data[0];
+};
+
+struct trace_event_raw_net_dev_xmit {
+	struct trace_entry ent;
+	void *skbaddr;
+	unsigned int len;
+	int rc;
+	u32 __data_loc_name;
+	char __data[0];
+};
+
+struct trace_event_raw_net_dev_xmit_timeout {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	u32 __data_loc_driver;
+	int queue_index;
+	char __data[0];
+};
+
+struct trace_event_raw_net_dev_template {
+	struct trace_entry ent;
+	void *skbaddr;
+	unsigned int len;
+	u32 __data_loc_name;
+	char __data[0];
+};
+
+struct trace_event_raw_net_dev_rx_verbose_template {
+	struct trace_entry ent;
+	u32 __data_loc_name;
+	unsigned int napi_id;
+	u16 queue_mapping;
+	const void *skbaddr;
+	bool vlan_tagged;
+	u16 vlan_proto;
+	u16 vlan_tci;
+	u16 protocol;
+	u8 ip_summed;
+	u32 hash;
+	bool l4_hash;
+	unsigned int len;
+	unsigned int data_len;
+	unsigned int truesize;
+	bool mac_header_valid;
+	int mac_header;
+	unsigned char nr_frags;
+	u16 gso_size;
+	u16 gso_type;
+	char __data[0];
+};
+
+struct trace_event_raw_net_dev_rx_exit_template {
+	struct trace_entry ent;
+	int ret;
+	char __data[0];
+};
+
+struct trace_event_raw_napi_poll {
+	struct trace_entry ent;
+	struct napi_struct *napi;
+	u32 __data_loc_dev_name;
+	int work;
+	int budget;
+	char __data[0];
+};
+
+struct trace_event_raw_sock_rcvqueue_full {
+	struct trace_entry ent;
+	int rmem_alloc;
+	unsigned int truesize;
+	int sk_rcvbuf;
+	char __data[0];
+};
+
+struct trace_event_raw_sock_exceed_buf_limit {
+	struct trace_entry ent;
+	char name[32];
+	long sysctl_mem[3];
+	long allocated;
+	int sysctl_rmem;
+	int rmem_alloc;
+	int sysctl_wmem;
+	int wmem_alloc;
+	int wmem_queued;
+	int kind;
+	char __data[0];
+};
+
+struct trace_event_raw_inet_sock_set_state {
+	struct trace_entry ent;
+	const void *skaddr;
+	int oldstate;
+	int newstate;
+	__u16 sport;
+	__u16 dport;
+	__u16 family;
+	__u16 protocol;
+	__u8 saddr[4];
+	__u8 daddr[4];
+	__u8 saddr_v6[16];
+	__u8 daddr_v6[16];
+	char __data[0];
+};
+
+struct trace_event_raw_inet_sk_error_report {
+	struct trace_entry ent;
+	int error;
+	__u16 sport;
+	__u16 dport;
+	__u16 family;
+	__u16 protocol;
+	__u8 saddr[4];
+	__u8 daddr[4];
+	__u8 saddr_v6[16];
+	__u8 daddr_v6[16];
+	char __data[0];
+};
+
+struct trace_event_raw_sk_data_ready {
+	struct trace_entry ent;
+	const void *skaddr;
+	__u16 family;
+	__u16 protocol;
+	unsigned long ip;
+	char __data[0];
+};
+
+struct trace_event_raw_sock_msg_length {
+	struct trace_entry ent;
+	void *sk;
+	__u16 family;
+	__u16 protocol;
+	int ret;
+	int flags;
+	char __data[0];
+};
+
+struct trace_event_raw_udp_fail_queue_rcv_skb {
+	struct trace_entry ent;
+	int rc;
+	__u16 lport;
+	char __data[0];
+};
+
+struct trace_event_raw_tcp_event_sk_skb {
+	struct trace_entry ent;
+	const void *skbaddr;
+	const void *skaddr;
+	int state;
+	__u16 sport;
+	__u16 dport;
+	__u16 family;
+	__u8 saddr[4];
+	__u8 daddr[4];
+	__u8 saddr_v6[16];
+	__u8 daddr_v6[16];
+	char __data[0];
+};
+
+struct trace_event_raw_tcp_event_sk {
+	struct trace_entry ent;
+	const void *skaddr;
+	__u16 sport;
+	__u16 dport;
+	__u16 family;
+	__u8 saddr[4];
+	__u8 daddr[4];
+	__u8 saddr_v6[16];
+	__u8 daddr_v6[16];
+	__u64 sock_cookie;
+	char __data[0];
+};
+
+struct trace_event_raw_tcp_retransmit_synack {
+	struct trace_entry ent;
+	const void *skaddr;
+	const void *req;
+	__u16 sport;
+	__u16 dport;
+	__u16 family;
+	__u8 saddr[4];
+	__u8 daddr[4];
+	__u8 saddr_v6[16];
+	__u8 daddr_v6[16];
+	char __data[0];
+};
+
+struct trace_event_raw_tcp_probe {
+	struct trace_entry ent;
+	__u8 saddr[28];
+	__u8 daddr[28];
+	__u16 sport;
+	__u16 dport;
+	__u16 family;
+	__u32 mark;
+	__u16 data_len;
+	__u32 snd_nxt;
+	__u32 snd_una;
+	__u32 snd_cwnd;
+	__u32 ssthresh;
+	__u32 snd_wnd;
+	__u32 srtt;
+	__u32 rcv_wnd;
+	__u64 sock_cookie;
+	char __data[0];
+};
+
+struct trace_event_raw_tcp_event_skb {
+	struct trace_entry ent;
+	const void *skbaddr;
+	__u8 saddr[28];
+	__u8 daddr[28];
+	char __data[0];
+};
+
+struct trace_event_raw_tcp_cong_state_set {
+	struct trace_entry ent;
+	const void *skaddr;
+	__u16 sport;
+	__u16 dport;
+	__u16 family;
+	__u8 saddr[4];
+	__u8 daddr[4];
+	__u8 saddr_v6[16];
+	__u8 daddr_v6[16];
+	__u8 cong_state;
+	char __data[0];
+};
+
+struct trace_event_raw_fib_table_lookup {
+	struct trace_entry ent;
+	u32 tb_id;
+	int err;
+	int oif;
+	int iif;
+	u8 proto;
+	__u8 tos;
+	__u8 scope;
+	__u8 flags;
+	__u8 src[4];
+	__u8 dst[4];
+	__u8 gw4[4];
+	__u8 gw6[16];
+	u16 sport;
+	u16 dport;
+	char name[16];
+	char __data[0];
+};
+
+struct trace_event_raw_qdisc_dequeue {
+	struct trace_entry ent;
+	struct Qdisc *qdisc;
+	const struct netdev_queue *txq;
+	int packets;
+	void *skbaddr;
+	int ifindex;
+	u32 handle;
+	u32 parent;
+	unsigned long txq_state;
+	char __data[0];
+};
+
+struct trace_event_raw_qdisc_enqueue {
+	struct trace_entry ent;
+	struct Qdisc *qdisc;
+	const struct netdev_queue *txq;
+	void *skbaddr;
+	int ifindex;
+	u32 handle;
+	u32 parent;
+	char __data[0];
+};
+
+struct trace_event_raw_qdisc_reset {
+	struct trace_entry ent;
+	u32 __data_loc_dev;
+	u32 __data_loc_kind;
+	u32 parent;
+	u32 handle;
+	char __data[0];
+};
+
+struct trace_event_raw_qdisc_destroy {
+	struct trace_entry ent;
+	u32 __data_loc_dev;
+	u32 __data_loc_kind;
+	u32 parent;
+	u32 handle;
+	char __data[0];
+};
+
+struct trace_event_raw_qdisc_create {
+	struct trace_entry ent;
+	u32 __data_loc_dev;
+	u32 __data_loc_kind;
+	u32 parent;
+	char __data[0];
+};
+
+struct trace_event_raw_br_fdb_add {
+	struct trace_entry ent;
+	u8 ndm_flags;
+	u32 __data_loc_dev;
+	unsigned char addr[6];
+	u16 vid;
+	u16 nlh_flags;
+	char __data[0];
+};
+
+struct trace_event_raw_br_fdb_external_learn_add {
+	struct trace_entry ent;
+	u32 __data_loc_br_dev;
+	u32 __data_loc_dev;
+	unsigned char addr[6];
+	u16 vid;
+	char __data[0];
+};
+
+struct trace_event_raw_fdb_delete {
+	struct trace_entry ent;
+	u32 __data_loc_br_dev;
+	u32 __data_loc_dev;
+	unsigned char addr[6];
+	u16 vid;
+	char __data[0];
+};
+
+struct trace_event_raw_br_fdb_update {
+	struct trace_entry ent;
+	u32 __data_loc_br_dev;
+	u32 __data_loc_dev;
+	unsigned char addr[6];
+	u16 vid;
+	unsigned long flags;
+	char __data[0];
+};
+
+struct trace_event_raw_br_mdb_full {
+	struct trace_entry ent;
+	u32 __data_loc_dev;
+	int af;
+	u16 vid;
+	__u8 src[16];
+	__u8 grp[16];
+	__u8 grpmac[6];
+	char __data[0];
+};
+
+struct trace_event_raw_page_pool_release {
+	struct trace_entry ent;
+	const struct page_pool *pool;
+	s32 inflight;
+	u32 hold;
+	u32 release;
+	u64 cnt;
+	char __data[0];
+};
+
+struct trace_event_raw_page_pool_state_release {
+	struct trace_entry ent;
+	const struct page_pool *pool;
+	const struct page *page;
+	u32 release;
+	unsigned long pfn;
+	char __data[0];
+};
+
+struct trace_event_raw_page_pool_state_hold {
+	struct trace_entry ent;
+	const struct page_pool *pool;
+	const struct page *page;
+	u32 hold;
+	unsigned long pfn;
+	char __data[0];
+};
+
+struct trace_event_raw_page_pool_update_nid {
+	struct trace_entry ent;
+	const struct page_pool *pool;
+	int pool_nid;
+	int new_nid;
+	char __data[0];
+};
+
+struct trace_event_raw_neigh_create {
+	struct trace_entry ent;
+	u32 family;
+	u32 __data_loc_dev;
+	int entries;
+	u8 created;
+	u8 gc_exempt;
+	u8 primary_key4[4];
+	u8 primary_key6[16];
+	char __data[0];
+};
+
+struct trace_event_raw_neigh_update {
+	struct trace_entry ent;
+	u32 family;
+	u32 __data_loc_dev;
+	u8 lladdr[32];
+	u8 lladdr_len;
+	u8 flags;
+	u8 nud_state;
+	u8 type;
+	u8 dead;
+	int refcnt;
+	__u8 primary_key4[4];
+	__u8 primary_key6[16];
+	unsigned long confirmed;
+	unsigned long updated;
+	unsigned long used;
+	u8 new_lladdr[32];
+	u8 new_state;
+	u32 update_flags;
+	u32 pid;
+	char __data[0];
+};
+
+struct trace_event_raw_neigh__update {
+	struct trace_entry ent;
+	u32 family;
+	u32 __data_loc_dev;
+	u8 lladdr[32];
+	u8 lladdr_len;
+	u8 flags;
+	u8 nud_state;
+	u8 type;
+	u8 dead;
+	int refcnt;
+	__u8 primary_key4[4];
+	__u8 primary_key6[16];
+	unsigned long confirmed;
+	unsigned long updated;
+	unsigned long used;
+	u32 err;
+	char __data[0];
+};
+
+struct trace_event_data_offsets_net_dev_start_xmit {
+	u32 name;
+};
+
+struct trace_event_data_offsets_net_dev_xmit {
+	u32 name;
+};
+
+struct trace_event_data_offsets_net_dev_template {
+	u32 name;
+};
+
+struct trace_event_data_offsets_net_dev_rx_verbose_template {
+	u32 name;
+};
+
+struct trace_event_data_offsets_napi_poll {
+	u32 dev_name;
+};
+
+struct trace_event_data_offsets_br_fdb_add {
+	u32 dev;
+};
+
+struct trace_event_data_offsets_br_mdb_full {
+	u32 dev;
+};
+
+struct trace_event_data_offsets_neigh_create {
+	u32 dev;
+};
+
+struct trace_event_data_offsets_neigh_update {
+	u32 dev;
+};
+
+struct trace_event_data_offsets_neigh__update {
+	u32 dev;
+};
+
+struct trace_event_data_offsets_kfree_skb {};
+
+struct trace_event_data_offsets_consume_skb {};
+
+struct trace_event_data_offsets_skb_copy_datagram_iovec {};
+
+struct trace_event_data_offsets_net_dev_xmit_timeout {
+	u32 name;
+	u32 driver;
+};
+
+struct trace_event_data_offsets_net_dev_rx_exit_template {};
+
+struct trace_event_data_offsets_sock_rcvqueue_full {};
+
+struct trace_event_data_offsets_sock_exceed_buf_limit {};
+
+struct trace_event_data_offsets_inet_sock_set_state {};
+
+struct trace_event_data_offsets_inet_sk_error_report {};
+
+struct trace_event_data_offsets_sk_data_ready {};
+
+struct trace_event_data_offsets_sock_msg_length {};
+
+struct trace_event_data_offsets_udp_fail_queue_rcv_skb {};
+
+struct trace_event_data_offsets_tcp_event_sk_skb {};
+
+struct trace_event_data_offsets_tcp_event_sk {};
+
+struct trace_event_data_offsets_tcp_retransmit_synack {};
+
+struct trace_event_data_offsets_tcp_probe {};
+
+struct trace_event_data_offsets_tcp_event_skb {};
+
+struct trace_event_data_offsets_tcp_cong_state_set {};
+
+struct trace_event_data_offsets_fib_table_lookup {};
+
+struct trace_event_data_offsets_qdisc_dequeue {};
+
+struct trace_event_data_offsets_qdisc_enqueue {};
+
+struct trace_event_data_offsets_qdisc_reset {
+	u32 dev;
+	u32 kind;
+};
+
+struct trace_event_data_offsets_qdisc_destroy {
+	u32 dev;
+	u32 kind;
+};
+
+struct trace_event_data_offsets_qdisc_create {
+	u32 dev;
+	u32 kind;
+};
+
+struct trace_event_data_offsets_br_fdb_external_learn_add {
+	u32 br_dev;
+	u32 dev;
+};
+
+struct trace_event_data_offsets_fdb_delete {
+	u32 br_dev;
+	u32 dev;
+};
+
+struct trace_event_data_offsets_br_fdb_update {
+	u32 br_dev;
+	u32 dev;
+};
+
+struct trace_event_data_offsets_page_pool_release {};
+
+struct trace_event_data_offsets_page_pool_state_release {};
+
+struct trace_event_data_offsets_page_pool_state_hold {};
+
+struct trace_event_data_offsets_page_pool_update_nid {};
+
+struct net_test {
+	char name[32];
+	int (*fn)(struct net_device *);
+};
+
+enum ethtool_test_flags {
+	ETH_TEST_FL_OFFLINE = 1,
+	ETH_TEST_FL_FAILED = 2,
+	ETH_TEST_FL_EXTERNAL_LB = 4,
+	ETH_TEST_FL_EXTERNAL_LB_DONE = 8,
+};
+
+struct netsfhdr {
+	__be32 version;
+	__be64 magic;
+	u8 id;
+} __attribute__((packed));
+
+struct net_packet_attrs {
+	const unsigned char *src;
+	const unsigned char *dst;
+	u32 ip_src;
+	u32 ip_dst;
+	bool tcp;
+	u16 sport;
+	u16 dport;
+	int timeout;
+	int size;
+	int max_size;
+	u8 id;
+	u16 queue_mapping;
+};
+
+struct net_test_priv {
+	struct net_packet_attrs *packet;
+	struct packet_type pt;
+	struct completion comp;
+	int double_vlan;
+	int vlan_id;
+	int ok;
+};
+
+struct gro_cell {
+	struct sk_buff_head napi_skbs;
+	struct napi_struct napi;
+};
+
+struct percpu_free_defer {
+	struct callback_head rcu;
+	void __attribute__((btf_type_tag("percpu"))) *ptr;
+};
+
+struct gro_cells {
+	struct gro_cell __attribute__((btf_type_tag("percpu"))) *cells;
+};
+
+enum __sk_action {
+	__SK_DROP = 0,
+	__SK_PASS = 1,
+	__SK_REDIRECT = 2,
+	__SK_NONE = 3,
+};
+
+enum sk_psock_state_bits {
+	SK_PSOCK_TX_ENABLED = 0,
+	SK_PSOCK_RX_STRP_ENABLED = 1,
+};
+
+struct sk_psock_link {
+	struct list_head list;
+	struct bpf_map *map;
+	void *link_raw;
+};
+
+typedef u64 (*btf_bpf_sock_map_update)(struct bpf_sock_ops_kern *, struct bpf_map *, void *, u64);
+
+typedef u64 (*btf_bpf_sk_redirect_map)(struct sk_buff *, struct bpf_map *, u32, u64);
+
+typedef u64 (*btf_bpf_msg_redirect_map)(struct sk_msg *, struct bpf_map *, u32, u64);
+
+typedef u64 (*btf_bpf_sock_hash_update)(struct bpf_sock_ops_kern *, struct bpf_map *, void *, u64);
+
+typedef u64 (*btf_bpf_sk_redirect_hash)(struct sk_buff *, struct bpf_map *, void *, u64);
+
+typedef u64 (*btf_bpf_msg_redirect_hash)(struct sk_msg *, struct bpf_map *, void *, u64);
+
+struct bpf_stab {
+	struct bpf_map map;
+	struct sock **sks;
+	struct sk_psock_progs progs;
+	spinlock_t lock;
+	long: 64;
+	long: 64;
+};
+
+struct bpf_shtab_bucket;
+
+struct bpf_shtab {
+	struct bpf_map map;
+	struct bpf_shtab_bucket *buckets;
+	u32 buckets_num;
+	u32 elem_size;
+	struct sk_psock_progs progs;
+	atomic_t count;
+	long: 64;
+};
+
+struct bpf_shtab_bucket {
+	struct hlist_head head;
+	spinlock_t lock;
+};
+
+struct bpf_shtab_elem {
+	struct callback_head rcu;
+	u32 hash;
+	struct sock *sk;
+	struct hlist_node node;
+	u8 key[0];
+};
+
+struct sock_map_seq_info {
+	struct bpf_map *map;
+	struct sock *sk;
+	u32 index;
+};
+
+struct bpf_iter__sockmap {
+	union {
+		struct bpf_iter_meta *meta;
+	};
+	union {
+		struct bpf_map *map;
+	};
+	union {
+		void *key;
+	};
+	union {
+		struct sock *sk;
+	};
+};
+
+struct sock_hash_seq_info {
+	struct bpf_map *map;
+	struct bpf_shtab *htab;
+	u32 bucket_id;
+};
+
+enum {
+	SK_DIAG_BPF_STORAGE_REQ_NONE = 0,
+	SK_DIAG_BPF_STORAGE_REQ_MAP_FD = 1,
+	__SK_DIAG_BPF_STORAGE_REQ_MAX = 2,
+};
+
+enum {
+	SK_DIAG_BPF_STORAGE_REP_NONE = 0,
+	SK_DIAG_BPF_STORAGE = 1,
+	__SK_DIAG_BPF_STORAGE_REP_MAX = 2,
+};
+
+enum {
+	SK_DIAG_BPF_STORAGE_NONE = 0,
+	SK_DIAG_BPF_STORAGE_PAD = 1,
+	SK_DIAG_BPF_STORAGE_MAP_ID = 2,
+	SK_DIAG_BPF_STORAGE_MAP_VALUE = 3,
+	__SK_DIAG_BPF_STORAGE_MAX = 4,
+};
+
+typedef u64 (*btf_bpf_sk_storage_get)(struct bpf_map *, struct sock *, void *, u64, gfp_t);
+
+typedef u64 (*btf_bpf_sk_storage_delete)(struct bpf_map *, struct sock *);
+
+typedef u64 (*btf_bpf_sk_storage_get_tracing)(struct bpf_map *, struct sock *, void *, u64, gfp_t);
+
+typedef u64 (*btf_bpf_sk_storage_delete_tracing)(struct bpf_map *, struct sock *);
+
+struct bpf_sk_storage_diag {
+	u32 nr_maps;
+	struct bpf_map *maps[0];
+};
+
+struct bpf_iter_seq_sk_storage_map_info {
+	struct bpf_map *map;
+	unsigned int bucket_id;
+	unsigned int skip_elems;
+};
+
+struct bpf_iter__bpf_sk_storage_map {
+	union {
+		struct bpf_iter_meta *meta;
+	};
+	union {
+		struct bpf_map *map;
+	};
+	union {
+		struct sock *sk;
+	};
+	union {
+		void *value;
+	};
+};
+
+struct compat_cmsghdr {
+	compat_size_t cmsg_len;
+	compat_int_t cmsg_level;
+	compat_int_t cmsg_type;
+};
+
+struct llc_addr {
+	unsigned char lsap;
+	unsigned char mac[6];
+};
+
+struct llc_sap {
+	unsigned char state;
+	unsigned char p_bit;
+	unsigned char f_bit;
+	refcount_t refcnt;
+	int (*rcv_func)(struct sk_buff *, struct net_device *, struct packet_type *, struct net_device *);
+	struct llc_addr laddr;
+	struct list_head node;
+	spinlock_t sk_lock;
+	int sk_count;
+	struct hlist_nulls_head sk_laddr_hash[64];
+	struct hlist_head sk_dev_hash[64];
+	struct callback_head rcu;
+};
+
+struct llc_pdu_un {
+	u8 dsap;
+	u8 ssap;
+	u8 ctrl_1;
+};
+
+struct llc_pdu_sn {
+	u8 dsap;
+	u8 ssap;
+	u8 ctrl_1;
+	u8 ctrl_2;
+};
+
+struct datalink_proto {
+	unsigned char type[8];
+	struct llc_sap *sap;
+	unsigned short header_length;
+	int (*rcvfunc)(struct sk_buff *, struct net_device *, struct packet_type *, struct net_device *);
+	int (*request)(struct datalink_proto *, struct sk_buff *, const unsigned char *);
+	struct list_head node;
+};
+
+struct stp_proto {
+	unsigned char group_address[6];
+	void (*rcv)(const struct stp_proto *, struct sk_buff *, struct net_device *);
+	void *data;
+};
+
+enum {
+	TCA_UNSPEC = 0,
+	TCA_KIND = 1,
+	TCA_OPTIONS = 2,
+	TCA_STATS = 3,
+	TCA_XSTATS = 4,
+	TCA_RATE = 5,
+	TCA_FCNT = 6,
+	TCA_STATS2 = 7,
+	TCA_STAB = 8,
+	TCA_PAD = 9,
+	TCA_DUMP_INVISIBLE = 10,
+	TCA_CHAIN = 11,
+	TCA_HW_OFFLOAD = 12,
+	TCA_INGRESS_BLOCK = 13,
+	TCA_EGRESS_BLOCK = 14,
+	TCA_DUMP_FLAGS = 15,
+	TCA_EXT_WARN_MSG = 16,
+	__TCA_MAX = 17,
+};
+
+struct skb_array {
+	struct ptr_ring ring;
+};
+
+struct pfifo_fast_priv {
+	struct skb_array q[3];
+};
+
+struct tc_prio_qopt {
+	int bands;
+	__u8 priomap[16];
+};
+
+struct psched_ratecfg {
+	u64 rate_bytes_ps;
+	u32 mult;
+	u16 overhead;
+	u16 mpu;
+	u8 linklayer;
+	u8 shift;
+};
+
+struct tc_ratespec {
+	unsigned char cell_log;
+	__u8 linklayer;
+	unsigned short overhead;
+	short cell_align;
+	unsigned short mpu;
+	__u32 rate;
+};
+
+struct psched_pktrate {
+	u64 rate_pkts_ps;
+	u32 mult;
+	u8 shift;
+};
+
+struct mini_Qdisc_pair {
+	struct mini_Qdisc miniq1;
+	struct mini_Qdisc miniq2;
+	struct mini_Qdisc __attribute__((btf_type_tag("rcu"))) **p_miniq;
+};
+
+enum tc_mq_command {
+	TC_MQ_CREATE = 0,
+	TC_MQ_DESTROY = 1,
+	TC_MQ_STATS = 2,
+	TC_MQ_GRAFT = 3,
+};
+
+struct tc_qopt_offload_stats {
+	struct gnet_stats_basic_sync *bstats;
+	struct gnet_stats_queue *qstats;
+};
+
+struct tc_mq_opt_offload_graft_params {
+	unsigned long queue;
+	u32 child_handle;
+};
+
+struct tc_mq_qopt_offload {
+	enum tc_mq_command command;
+	u32 handle;
+	union {
+		struct tc_qopt_offload_stats stats;
+		struct tc_mq_opt_offload_graft_params graft_params;
+	};
+};
+
+struct mq_sched {
+	struct Qdisc **qdiscs;
+};
+
+struct sch_frag_data {
+	unsigned long dst;
+	struct qdisc_skb_cb cb;
+	__be16 inner_protocol;
+	u16 vlan_tci;
+	__be16 vlan_proto;
+	unsigned int l2_len;
+	u8 l2_data[18];
+	int (*xmit)(struct sk_buff *);
+};
+
+struct qdisc_rate_table {
+	struct tc_ratespec rate;
+	u32 data[256];
+	struct qdisc_rate_table *next;
+	int refcnt;
+};
+
+enum tc_link_layer {
+	TC_LINKLAYER_UNAWARE = 0,
+	TC_LINKLAYER_ETHERNET = 1,
+	TC_LINKLAYER_ATM = 2,
+};
+
+enum {
+	TCA_STAB_UNSPEC = 0,
+	TCA_STAB_BASE = 1,
+	TCA_STAB_DATA = 2,
+	__TCA_STAB_MAX = 3,
+};
+
+enum tc_root_command {
+	TC_ROOT_GRAFT = 0,
+};
+
+struct Qdisc_class_common {
+	u32 classid;
+	unsigned int filter_cnt;
+	struct hlist_node hnode;
+};
+
+struct qdisc_watchdog {
+	struct hrtimer timer;
+	struct Qdisc *qdisc;
+};
+
+struct check_loop_arg {
+	struct qdisc_walker w;
+	struct Qdisc *p;
+	int depth;
+};
+
+struct tc_bind_class_args {
+	struct qdisc_walker w;
+	unsigned long new_cl;
+	u32 portid;
+	u32 clid;
+};
+
+struct qdisc_dump_args {
+	struct qdisc_walker w;
+	struct sk_buff *skb;
+	struct netlink_callback *cb;
+};
+
+struct tc_root_qopt_offload {
+	enum tc_root_command command;
+	u32 handle;
+	bool ingress;
+};
+
+struct Qdisc_class_hash {
+	struct hlist_head *hash;
+	unsigned int hashsize;
+	unsigned int hashmask;
+	unsigned int hashelems;
+};
+
+struct tc_query_caps_base {
+	enum tc_setup_type type;
+	void *caps;
+};
+
+struct tcf_bind_args {
+	struct tcf_walker w;
+	unsigned long base;
+	unsigned long cl;
+	u32 classid;
+};
+
+enum net_xmit_qdisc_t {
+	__NET_XMIT_STOLEN = 65536,
+	__NET_XMIT_BYPASS = 131072,
+};
+
+struct psample_group {
+	struct list_head list;
+	struct net *net;
+	u32 group_num;
+	u32 refcount;
+	u32 seq;
+	struct callback_head rcu;
+};
+
+struct tcf_exts_miss_cookie_node {
+	const struct tcf_chain *chain;
+	const struct tcf_proto *tp;
+	const struct tcf_exts *exts;
+	u32 chain_index;
+	u32 tp_prio;
+	u32 handle;
+	u32 miss_cookie_base;
+	struct callback_head rcu;
+};
+
+enum {
+	TCA_ACT_UNSPEC = 0,
+	TCA_ACT_KIND = 1,
+	TCA_ACT_OPTIONS = 2,
+	TCA_ACT_INDEX = 3,
+	TCA_ACT_STATS = 4,
+	TCA_ACT_PAD = 5,
+	TCA_ACT_COOKIE = 6,
+	TCA_ACT_FLAGS = 7,
+	TCA_ACT_HW_STATS = 8,
+	TCA_ACT_USED_HW_STATS = 9,
+	TCA_ACT_IN_HW_COUNT = 10,
+	__TCA_ACT_MAX = 11,
+};
+
+enum pedit_header_type {
+	TCA_PEDIT_KEY_EX_HDR_TYPE_NETWORK = 0,
+	TCA_PEDIT_KEY_EX_HDR_TYPE_ETH = 1,
+	TCA_PEDIT_KEY_EX_HDR_TYPE_IP4 = 2,
+	TCA_PEDIT_KEY_EX_HDR_TYPE_IP6 = 3,
+	TCA_PEDIT_KEY_EX_HDR_TYPE_TCP = 4,
+	TCA_PEDIT_KEY_EX_HDR_TYPE_UDP = 5,
+	__PEDIT_HDR_TYPE_MAX = 6,
+};
+
+enum pedit_cmd {
+	TCA_PEDIT_KEY_EX_CMD_SET = 0,
+	TCA_PEDIT_KEY_EX_CMD_ADD = 1,
+	__PEDIT_CMD_MAX = 2,
+};
+
+enum qdisc_class_ops_flags {
+	QDISC_CLASS_OPS_DOIT_UNLOCKED = 1,
+};
+
+enum tcf_proto_ops_flags {
+	TCF_PROTO_OPS_DOIT_UNLOCKED = 1,
+};
+
+struct tcf_block_owner_item {
+	struct list_head list;
+	struct Qdisc *q;
+	enum flow_block_binder_type binder_type;
+};
+
+typedef void tcf_chain_head_change_t(struct tcf_proto *, void *);
+
+struct tcf_filter_chain_list_item {
+	struct list_head list;
+	tcf_chain_head_change_t *chain_head_change;
+	void *chain_head_change_priv;
+};
+
+struct tc_pedit_key;
+
+struct tcf_pedit_key_ex;
+
+struct tcf_pedit_parms {
+	struct tc_pedit_key *tcfp_keys;
+	struct tcf_pedit_key_ex *tcfp_keys_ex;
+	u32 tcfp_off_max_hint;
+	unsigned char tcfp_nkeys;
+	unsigned char tcfp_flags;
+	struct callback_head rcu;
+};
+
+struct tc_pedit_key {
+	__u32 mask;
+	__u32 val;
+	__u32 off;
+	__u32 at;
+	__u32 offmask;
+	__u32 shift;
+};
+
+struct tcf_pedit_key_ex {
+	enum pedit_header_type htype;
+	enum pedit_cmd cmd;
+};
+
+struct tcf_pedit {
+	struct tc_action common;
+	struct tcf_pedit_parms __attribute__((btf_type_tag("rcu"))) *parms;
+	long: 64;
+};
+
+struct tcf_block_ext_info {
+	enum flow_block_binder_type binder_type;
+	tcf_chain_head_change_t *chain_head_change;
+	void *chain_head_change_priv;
+	u32 block_index;
+};
+
+struct tcf_net {
+	spinlock_t idr_lock;
+	struct idr idr;
+};
+
+struct action_gate_entry {
+	u8 gate_state;
+	u32 interval;
+	s32 ipv;
+	s32 maxoctets;
+};
+
+struct tcf_chain_info {
+	struct tcf_proto __attribute__((btf_type_tag("rcu"))) **pprev;
+	struct tcf_proto __attribute__((btf_type_tag("rcu"))) *next;
+};
+
+struct tcf_dump_args {
+	struct tcf_walker w;
+	struct sk_buff *skb;
+	struct netlink_callback *cb;
+	struct tcf_block *block;
+	struct Qdisc *q;
+	u32 parent;
+	bool terse_dump;
+};
+
+struct tcf_qevent {
+	struct tcf_block *block;
+	struct tcf_block_ext_info info;
+	struct tcf_proto __attribute__((btf_type_tag("rcu"))) *filter_chain;
+};
+
+enum {
+	TCA_ROOT_UNSPEC = 0,
+	TCA_ROOT_TAB = 1,
+	TCA_ROOT_FLAGS = 2,
+	TCA_ROOT_COUNT = 3,
+	TCA_ROOT_TIME_DELTA = 4,
+	TCA_ROOT_EXT_WARN_MSG = 5,
+	__TCA_ROOT_MAX = 6,
+};
+
+struct tc_act_pernet_id {
+	struct list_head list;
+	unsigned int id;
+};
+
+struct tcamsg {
+	unsigned char tca_family;
+	unsigned char tca__pad1;
+	unsigned short tca__pad2;
+};
+
+struct tc_action_net {
+	struct tcf_idrinfo *idrinfo;
+	const struct tc_action_ops *ops;
+};
+
+enum {
+	TCA_POLICE_UNSPEC = 0,
+	TCA_POLICE_TBF = 1,
+	TCA_POLICE_RATE = 2,
+	TCA_POLICE_PEAKRATE = 3,
+	TCA_POLICE_AVRATE = 4,
+	TCA_POLICE_RESULT = 5,
+	TCA_POLICE_TM = 6,
+	TCA_POLICE_PAD = 7,
+	TCA_POLICE_RATE64 = 8,
+	TCA_POLICE_PEAKRATE64 = 9,
+	TCA_POLICE_PKTRATE64 = 10,
+	TCA_POLICE_PKTBURST64 = 11,
+	__TCA_POLICE_MAX = 12,
+};
+
+struct tcf_police_params;
+
+struct tcf_police {
+	struct tc_action common;
+	struct tcf_police_params __attribute__((btf_type_tag("rcu"))) *params;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	spinlock_t tcfp_lock;
+	s64 tcfp_toks;
+	s64 tcfp_ptoks;
+	s64 tcfp_pkttoks;
+	s64 tcfp_t_c;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct tcf_police_params {
+	int tcfp_result;
+	u32 tcfp_ewma_rate;
+	s64 tcfp_burst;
+	u32 tcfp_mtu;
+	s64 tcfp_mtu_ptoks;
+	s64 tcfp_pkt_burst;
+	struct psched_ratecfg rate;
+	bool rate_present;
+	struct psched_ratecfg peak;
+	bool peak_present;
+	struct psched_pktrate ppsrate;
+	bool pps_present;
+	struct callback_head rcu;
+};
+
+struct tc_police {
+	__u32 index;
+	int action;
+	__u32 limit;
+	__u32 burst;
+	__u32 mtu;
+	struct tc_ratespec rate;
+	struct tc_ratespec peakrate;
+	int refcnt;
+	int bindcnt;
+	__u32 capab;
+};
+
+enum {
+	TCA_GACT_UNSPEC = 0,
+	TCA_GACT_TM = 1,
+	TCA_GACT_PARMS = 2,
+	TCA_GACT_PROB = 3,
+	TCA_GACT_PAD = 4,
+	__TCA_GACT_MAX = 5,
+};
+
+struct tcf_gact {
+	struct tc_action common;
+};
+
+struct tc_gact {
+	__u32 index;
+	__u32 capab;
+	int action;
+	int refcnt;
+	int bindcnt;
+};
+
+enum {
+	TCA_MIRRED_UNSPEC = 0,
+	TCA_MIRRED_TM = 1,
+	TCA_MIRRED_PARMS = 2,
+	TCA_MIRRED_PAD = 3,
+	__TCA_MIRRED_MAX = 4,
+};
+
+struct tcf_mirred {
+	struct tc_action common;
+	int tcfm_eaction;
+	bool tcfm_mac_header_xmit;
+	struct net_device __attribute__((btf_type_tag("rcu"))) *tcfm_dev;
+	netdevice_tracker tcfm_dev_tracker;
+	struct list_head tcfm_list;
+};
+
+struct tc_mirred {
+	__u32 index;
+	__u32 capab;
+	int action;
+	int refcnt;
+	int bindcnt;
+	int eaction;
+	__u32 ifindex;
+};
+
+enum {
+	TCA_SKBEDIT_UNSPEC = 0,
+	TCA_SKBEDIT_TM = 1,
+	TCA_SKBEDIT_PARMS = 2,
+	TCA_SKBEDIT_PRIORITY = 3,
+	TCA_SKBEDIT_QUEUE_MAPPING = 4,
+	TCA_SKBEDIT_MARK = 5,
+	TCA_SKBEDIT_PAD = 6,
+	TCA_SKBEDIT_PTYPE = 7,
+	TCA_SKBEDIT_MASK = 8,
+	TCA_SKBEDIT_FLAGS = 9,
+	TCA_SKBEDIT_QUEUE_MAPPING_MAX = 10,
+	__TCA_SKBEDIT_MAX = 11,
+};
+
+struct tcf_skbedit_params;
+
+struct tcf_skbedit {
+	struct tc_action common;
+	struct tcf_skbedit_params __attribute__((btf_type_tag("rcu"))) *params;
+	long: 64;
+};
+
+struct tcf_skbedit_params {
+	u32 flags;
+	u32 priority;
+	u32 mark;
+	u32 mask;
+	u16 queue_mapping;
+	u16 mapping_mod;
+	u16 ptype;
+	struct callback_head rcu;
+};
+
+struct tc_skbedit {
+	__u32 index;
+	__u32 capab;
+	int action;
+	int refcnt;
+	int bindcnt;
+};
+
+enum {
+	TCA_ACT_BPF_UNSPEC = 0,
+	TCA_ACT_BPF_TM = 1,
+	TCA_ACT_BPF_PARMS = 2,
+	TCA_ACT_BPF_OPS_LEN = 3,
+	TCA_ACT_BPF_OPS = 4,
+	TCA_ACT_BPF_FD = 5,
+	TCA_ACT_BPF_NAME = 6,
+	TCA_ACT_BPF_PAD = 7,
+	TCA_ACT_BPF_TAG = 8,
+	TCA_ACT_BPF_ID = 9,
+	__TCA_ACT_BPF_MAX = 10,
+};
+
+struct tcf_bpf {
+	struct tc_action common;
+	struct bpf_prog __attribute__((btf_type_tag("rcu"))) *filter;
+	union {
+		u32 bpf_fd;
+		u16 bpf_num_ops;
+	};
+	struct sock_filter *bpf_ops;
+	const char *bpf_name;
+};
+
+struct tcf_bpf_cfg {
+	struct bpf_prog *filter;
+	struct sock_filter *bpf_ops;
+	const char *bpf_name;
+	u16 bpf_num_ops;
+	bool is_ebpf;
+};
+
+struct tc_act_bpf {
+	__u32 index;
+	__u32 capab;
+	int action;
+	int refcnt;
+	int bindcnt;
+};
+
+enum tc_fifo_command {
+	TC_FIFO_REPLACE = 0,
+	TC_FIFO_DESTROY = 1,
+	TC_FIFO_STATS = 2,
+};
+
+struct tc_fifo_qopt {
+	__u32 limit;
+};
+
+struct tc_fifo_qopt_offload {
+	enum tc_fifo_command command;
+	u32 handle;
+	u32 parent;
+	union {
+		struct tc_qopt_offload_stats stats;
+	};
+};
+
+enum tc_htb_command {
+	TC_HTB_CREATE = 0,
+	TC_HTB_DESTROY = 1,
+	TC_HTB_LEAF_ALLOC_QUEUE = 2,
+	TC_HTB_LEAF_TO_INNER = 3,
+	TC_HTB_LEAF_DEL = 4,
+	TC_HTB_LEAF_DEL_LAST = 5,
+	TC_HTB_LEAF_DEL_LAST_FORCE = 6,
+	TC_HTB_NODE_MODIFY = 7,
+	TC_HTB_LEAF_QUERY_QUEUE = 8,
+};
+
+enum htb_cmode {
+	HTB_CANT_SEND = 0,
+	HTB_MAY_BORROW = 1,
+	HTB_CAN_SEND = 2,
+};
+
+enum {
+	TCA_HTB_UNSPEC = 0,
+	TCA_HTB_PARMS = 1,
+	TCA_HTB_INIT = 2,
+	TCA_HTB_CTAB = 3,
+	TCA_HTB_RTAB = 4,
+	TCA_HTB_DIRECT_QLEN = 5,
+	TCA_HTB_RATE64 = 6,
+	TCA_HTB_CEIL64 = 7,
+	TCA_HTB_PAD = 8,
+	TCA_HTB_OFFLOAD = 9,
+	__TCA_HTB_MAX = 10,
+};
+
+struct htb_class_leaf {
+	int deficit[8];
+	struct Qdisc *q;
+	struct netdev_queue *offload_queue;
+};
+
+struct htb_prio {
+	union {
+		struct rb_root row;
+		struct rb_root feed;
+	};
+	struct rb_node *ptr;
+	u32 last_ptr_id;
+};
+
+struct htb_class_inner {
+	struct htb_prio clprio[8];
+};
+
+struct tc_htb_xstats {
+	__u32 lends;
+	__u32 borrows;
+	__u32 giants;
+	__s32 tokens;
+	__s32 ctokens;
+};
+
+struct htb_class {
+	struct Qdisc_class_common common;
+	struct psched_ratecfg rate;
+	struct psched_ratecfg ceil;
+	s64 buffer;
+	s64 cbuffer;
+	s64 mbuffer;
+	u32 prio;
+	int quantum;
+	struct tcf_proto __attribute__((btf_type_tag("rcu"))) *filter_list;
+	struct tcf_block *block;
+	int level;
+	unsigned int children;
+	struct htb_class *parent;
+	struct net_rate_estimator __attribute__((btf_type_tag("rcu"))) *rate_est;
+	struct gnet_stats_basic_sync bstats;
+	struct gnet_stats_basic_sync bstats_bias;
+	struct tc_htb_xstats xstats;
+	s64 tokens;
+	s64 ctokens;
+	s64 t_c;
+	union {
+		struct htb_class_leaf leaf;
+		struct htb_class_inner inner;
+	};
+	s64 pq_key;
+	int prio_activity;
+	enum htb_cmode cmode;
+	struct rb_node pq_node;
+	struct rb_node node[8];
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	unsigned int drops;
+	unsigned int overlimits;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct htb_level {
+	struct rb_root wait_pq;
+	struct htb_prio hprio[8];
+};
+
+struct htb_sched {
+	struct Qdisc_class_hash clhash;
+	int defcls;
+	int rate2quantum;
+	struct tcf_proto __attribute__((btf_type_tag("rcu"))) *filter_list;
+	struct tcf_block *block;
+	unsigned int warned;
+	int direct_qlen;
+	struct work_struct work;
+	struct qdisc_skb_head direct_queue;
+	u32 direct_pkts;
+	u32 overlimits;
+	struct qdisc_watchdog watchdog;
+	s64 now;
+	s64 near_ev_cache[8];
+	int row_mask[8];
+	struct htb_level hlevel[8];
+	struct Qdisc **direct_qdiscs;
+	unsigned int num_direct_qdiscs;
+	bool offload;
+};
+
+struct tc_htb_qopt_offload {
+	struct netlink_ext_ack *extack;
+	enum tc_htb_command command;
+	u32 parent_classid;
+	u16 classid;
+	u16 qid;
+	u32 quantum;
+	u64 rate;
+	u64 ceil;
+	u8 prio;
+};
+
+struct tc_htb_glob {
+	__u32 version;
+	__u32 rate2quantum;
+	__u32 defcls;
+	__u32 debug;
+	__u32 direct_pkts;
+};
+
+struct tc_htb_opt {
+	struct tc_ratespec rate;
+	struct tc_ratespec ceil;
+	__u32 buffer;
+	__u32 cbuffer;
+	__u32 quantum;
+	__u32 level;
+	__u32 prio;
+};
+
+struct ingress_sched_data {
+	struct tcf_block *block;
+	struct tcf_block_ext_info block_info;
+	struct mini_Qdisc_pair miniqp;
+};
+
+struct clsact_sched_data {
+	struct tcf_block *ingress_block;
+	struct tcf_block *egress_block;
+	struct tcf_block_ext_info ingress_block_info;
+	struct tcf_block_ext_info egress_block_info;
+	struct mini_Qdisc_pair miniqp_ingress;
+	struct mini_Qdisc_pair miniqp_egress;
+};
+
+enum {
+	RED_DONT_MARK = 0,
+	RED_PROB_MARK = 1,
+	RED_HARD_MARK = 2,
+};
+
+enum {
+	RED_BELOW_MIN_THRESH = 0,
+	RED_BETWEEN_TRESH = 1,
+	RED_ABOVE_MAX_TRESH = 2,
+};
+
+typedef u16 sfq_index;
+
+struct tc_sfqred_stats {
+	__u32 prob_drop;
+	__u32 forced_drop;
+	__u32 prob_mark;
+	__u32 forced_mark;
+	__u32 prob_mark_head;
+	__u32 forced_mark_head;
+};
+
+struct sfq_head {
+	sfq_index next;
+	sfq_index prev;
+};
+
+struct sfq_slot;
+
+struct red_parms;
+
+struct sfq_sched_data {
+	int limit;
+	unsigned int divisor;
+	u8 headdrop;
+	u8 maxdepth;
+	siphash_key_t perturbation;
+	u8 cur_depth;
+	u8 flags;
+	unsigned short scaled_quantum;
+	struct tcf_proto __attribute__((btf_type_tag("rcu"))) *filter_list;
+	struct tcf_block *block;
+	sfq_index *ht;
+	struct sfq_slot *slots;
+	struct red_parms *red_parms;
+	struct tc_sfqred_stats stats;
+	struct sfq_slot *tail;
+	struct sfq_head dep[128];
+	unsigned int maxflows;
+	int perturb_period;
+	unsigned int quantum;
+	struct timer_list perturb_timer;
+	struct Qdisc *sch;
+};
+
+struct red_vars {
+	int qcount;
+	u32 qR;
+	unsigned long qavg;
+	ktime_t qidlestart;
+};
+
+struct sfq_slot {
+	struct sk_buff *skblist_next;
+	struct sk_buff *skblist_prev;
+	sfq_index qlen;
+	sfq_index next;
+	struct sfq_head dep;
+	unsigned short hash;
+	short allot;
+	unsigned int backlog;
+	struct red_vars vars;
+};
+
+struct red_parms {
+	u32 qth_min;
+	u32 qth_max;
+	u32 Scell_max;
+	u32 max_P;
+	struct reciprocal_value max_P_reciprocal;
+	u32 qth_delta;
+	u32 target_min;
+	u32 target_max;
+	u8 Scell_log;
+	u8 Wlog;
+	u8 Plog;
+	u8 Stab[256];
+};
+
+struct tc_sfq_qopt {
+	unsigned int quantum;
+	int perturb_period;
+	__u32 limit;
+	unsigned int divisor;
+	unsigned int flows;
+};
+
+struct tc_sfq_qopt_v1 {
+	struct tc_sfq_qopt v0;
+	unsigned int depth;
+	unsigned int headdrop;
+	__u32 limit;
+	__u32 qth_min;
+	__u32 qth_max;
+	unsigned char Wlog;
+	unsigned char Plog;
+	unsigned char Scell_log;
+	unsigned char flags;
+	__u32 max_P;
+	struct tc_sfqred_stats stats;
+};
+
+struct tc_sfq_xstats {
+	__s32 allot;
+};
+
+enum tc_tbf_command {
+	TC_TBF_REPLACE = 0,
+	TC_TBF_DESTROY = 1,
+	TC_TBF_STATS = 2,
+	TC_TBF_GRAFT = 3,
+};
+
+enum {
+	TCA_TBF_UNSPEC = 0,
+	TCA_TBF_PARMS = 1,
+	TCA_TBF_RTAB = 2,
+	TCA_TBF_PTAB = 3,
+	TCA_TBF_RATE64 = 4,
+	TCA_TBF_PRATE64 = 5,
+	TCA_TBF_BURST = 6,
+	TCA_TBF_PBURST = 7,
+	TCA_TBF_PAD = 8,
+	__TCA_TBF_MAX = 9,
+};
+
+struct tbf_sched_data {
+	u32 limit;
+	u32 max_size;
+	s64 buffer;
+	s64 mtu;
+	struct psched_ratecfg rate;
+	struct psched_ratecfg peak;
+	s64 tokens;
+	s64 ptokens;
+	s64 t_c;
+	struct Qdisc *qdisc;
+	struct qdisc_watchdog watchdog;
+};
+
+struct tc_tbf_qopt_offload_replace_params {
+	struct psched_ratecfg rate;
+	u32 max_size;
+	struct gnet_stats_queue *qstats;
+};
+
+struct tc_tbf_qopt_offload {
+	enum tc_tbf_command command;
+	u32 handle;
+	u32 parent;
+	union {
+		struct tc_tbf_qopt_offload_replace_params replace_params;
+		struct tc_qopt_offload_stats stats;
+		u32 child_handle;
+	};
+};
+
+struct tc_tbf_qopt {
+	struct tc_ratespec rate;
+	struct tc_ratespec peakrate;
+	__u32 limit;
+	__u32 buffer;
+	__u32 mtu;
+};
+
+enum tc_prio_command {
+	TC_PRIO_REPLACE = 0,
+	TC_PRIO_DESTROY = 1,
+	TC_PRIO_STATS = 2,
+	TC_PRIO_GRAFT = 3,
+};
+
+struct prio_sched_data {
+	int bands;
+	struct tcf_proto __attribute__((btf_type_tag("rcu"))) *filter_list;
+	struct tcf_block *block;
+	u8 prio2band[16];
+	struct Qdisc *queues[16];
+};
+
+struct tc_prio_qopt_offload_params {
+	int bands;
+	u8 priomap[16];
+	struct gnet_stats_queue *qstats;
+};
+
+struct tc_prio_qopt_offload_graft_params {
+	u8 band;
+	u32 child_handle;
+};
+
+struct tc_prio_qopt_offload {
+	enum tc_prio_command command;
+	u32 handle;
+	u32 parent;
+	union {
+		struct tc_prio_qopt_offload_params replace_params;
+		struct tc_qopt_offload_stats stats;
+		struct tc_prio_qopt_offload_graft_params graft_params;
+	};
+};
+
+struct multiq_sched_data {
+	u16 bands;
+	u16 max_bands;
+	u16 curband;
+	struct tcf_proto __attribute__((btf_type_tag("rcu"))) *filter_list;
+	struct tcf_block *block;
+	struct Qdisc **queues;
+};
+
+struct tc_multiq_qopt {
+	__u16 bands;
+	__u16 max_bands;
+};
+
+struct crndstate {
+	u32 last;
+	u32 rho;
+};
+
+struct prng {
+	u64 seed;
+	struct rnd_state prng_state;
+};
+
+struct clgstate {
+	u8 state;
+	u32 a1;
+	u32 a2;
+	u32 a3;
+	u32 a4;
+	u32 a5;
+};
+
+struct tc_netem_slot {
+	__s64 min_delay;
+	__s64 max_delay;
+	__s32 max_packets;
+	__s32 max_bytes;
+	__s64 dist_delay;
+	__s64 dist_jitter;
+};
+
+struct slotstate {
+	u64 slot_next;
+	s32 packets_left;
+	s32 bytes_left;
+};
+
+struct disttable;
+
+struct netem_sched_data {
+	struct rb_root t_root;
+	struct sk_buff *t_head;
+	struct sk_buff *t_tail;
+	struct Qdisc *qdisc;
+	struct qdisc_watchdog watchdog;
+	s64 latency;
+	s64 jitter;
+	u32 loss;
+	u32 ecn;
+	u32 limit;
+	u32 counter;
+	u32 gap;
+	u32 duplicate;
+	u32 reorder;
+	u32 corrupt;
+	u64 rate;
+	s32 packet_overhead;
+	u32 cell_size;
+	struct reciprocal_value cell_size_reciprocal;
+	s32 cell_overhead;
+	struct crndstate delay_cor;
+	struct crndstate loss_cor;
+	struct crndstate dup_cor;
+	struct crndstate reorder_cor;
+	struct crndstate corrupt_cor;
+	struct prng prng;
+	struct disttable *delay_dist;
+	enum {
+		CLG_RANDOM = 0,
+		CLG_4_STATES = 1,
+		CLG_GILB_ELL = 2,
+	} loss_model;
+	enum {
+		TX_IN_GAP_PERIOD = 1,
+		TX_IN_BURST_PERIOD = 2,
+		LOST_IN_GAP_PERIOD = 3,
+		LOST_IN_BURST_PERIOD = 4,
+	} _4_state_model;
+	enum {
+		GOOD_STATE = 1,
+		BAD_STATE = 2,
+	} GE_state_model;
+	struct clgstate clg;
+	struct tc_netem_slot slot_config;
+	struct slotstate slot;
+	struct disttable *slot_dist;
+};
+
+struct disttable {
+	u32 size;
+	s16 table[0];
+};
+
+enum {
+	TCA_NETEM_UNSPEC = 0,
+	TCA_NETEM_CORR = 1,
+	TCA_NETEM_DELAY_DIST = 2,
+	TCA_NETEM_REORDER = 3,
+	TCA_NETEM_CORRUPT = 4,
+	TCA_NETEM_LOSS = 5,
+	TCA_NETEM_RATE = 6,
+	TCA_NETEM_ECN = 7,
+	TCA_NETEM_RATE64 = 8,
+	TCA_NETEM_PAD = 9,
+	TCA_NETEM_LATENCY64 = 10,
+	TCA_NETEM_JITTER64 = 11,
+	TCA_NETEM_SLOT = 12,
+	TCA_NETEM_SLOT_DIST = 13,
+	TCA_NETEM_PRNG_SEED = 14,
+	__TCA_NETEM_MAX = 15,
+};
+
+enum {
+	NETEM_LOSS_UNSPEC = 0,
+	NETEM_LOSS_GI = 1,
+	NETEM_LOSS_GE = 2,
+	__NETEM_LOSS_MAX = 3,
+};
+
+struct netem_skb_cb {
+	u64 time_to_send;
+};
+
+typedef u64 psched_time_t;
+
+struct tc_netem_gemodel {
+	__u32 p;
+	__u32 r;
+	__u32 h;
+	__u32 k1;
+};
+
+struct tc_netem_gimodel {
+	__u32 p13;
+	__u32 p31;
+	__u32 p32;
+	__u32 p14;
+	__u32 p23;
+};
+
+struct tc_netem_corr {
+	__u32 delay_corr;
+	__u32 loss_corr;
+	__u32 dup_corr;
+};
+
+struct tc_netem_reorder {
+	__u32 probability;
+	__u32 correlation;
+};
+
+struct tc_netem_corrupt {
+	__u32 probability;
+	__u32 correlation;
+};
+
+struct tc_netem_rate {
+	__u32 rate;
+	__s32 packet_overhead;
+	__u32 cell_size;
+	__s32 cell_overhead;
+};
+
+struct tc_netem_qopt {
+	__u32 latency;
+	__u32 limit;
+	__u32 loss;
+	__u32 gap;
+	__u32 duplicate;
+	__u32 jitter;
+};
+
+enum {
+	TCA_CODEL_UNSPEC = 0,
+	TCA_CODEL_TARGET = 1,
+	TCA_CODEL_LIMIT = 2,
+	TCA_CODEL_INTERVAL = 3,
+	TCA_CODEL_ECN = 4,
+	TCA_CODEL_CE_THRESHOLD = 5,
+	__TCA_CODEL_MAX = 6,
+};
+
+typedef u32 codel_time_t;
+
+struct codel_skb_cb {
+	codel_time_t enqueue_time;
+	unsigned int mem_usage;
+};
+
+struct codel_vars {
+	u32 count;
+	u32 lastcount;
+	bool dropping;
+	u16 rec_inv_sqrt;
+	codel_time_t first_above_time;
+	codel_time_t drop_next;
+	codel_time_t ldelay;
+};
+
+struct codel_params {
+	codel_time_t target;
+	codel_time_t ce_threshold;
+	codel_time_t interval;
+	u32 mtu;
+	bool ecn;
+	u8 ce_threshold_selector;
+	u8 ce_threshold_mask;
+};
+
+struct codel_stats {
+	u32 maxpacket;
+	u32 drop_count;
+	u32 drop_len;
+	u32 ecn_mark;
+	u32 ce_mark;
+};
+
+typedef u32 (*codel_skb_len_t)(const struct sk_buff *);
+
+typedef codel_time_t (*codel_skb_time_t)(const struct sk_buff *);
+
+typedef void (*codel_skb_drop_t)(struct sk_buff *, void *);
+
+typedef struct sk_buff * (*codel_skb_dequeue_t)(struct codel_vars *, void *);
+
+struct codel_sched_data {
+	struct codel_params params;
+	struct codel_vars vars;
+	struct codel_stats stats;
+	u32 drop_overlimit;
+};
+
+struct tc_codel_xstats {
+	__u32 maxpacket;
+	__u32 count;
+	__u32 lastcount;
+	__u32 ldelay;
+	__s32 drop_next;
+	__u32 drop_overlimit;
+	__u32 ecn_mark;
+	__u32 dropping;
+	__u32 ce_mark;
+};
+
+typedef s32 codel_tdiff_t;
+
+enum {
+	TCA_FQ_CODEL_XSTATS_QDISC = 0,
+	TCA_FQ_CODEL_XSTATS_CLASS = 1,
+};
+
+enum {
+	TCA_FQ_CODEL_UNSPEC = 0,
+	TCA_FQ_CODEL_TARGET = 1,
+	TCA_FQ_CODEL_LIMIT = 2,
+	TCA_FQ_CODEL_INTERVAL = 3,
+	TCA_FQ_CODEL_ECN = 4,
+	TCA_FQ_CODEL_FLOWS = 5,
+	TCA_FQ_CODEL_QUANTUM = 6,
+	TCA_FQ_CODEL_CE_THRESHOLD = 7,
+	TCA_FQ_CODEL_DROP_BATCH_SIZE = 8,
+	TCA_FQ_CODEL_MEMORY_LIMIT = 9,
+	TCA_FQ_CODEL_CE_THRESHOLD_SELECTOR = 10,
+	TCA_FQ_CODEL_CE_THRESHOLD_MASK = 11,
+	__TCA_FQ_CODEL_MAX = 12,
+};
+
+struct fq_codel_flow {
+	struct sk_buff *head;
+	struct sk_buff *tail;
+	struct list_head flowchain;
+	int deficit;
+	struct codel_vars cvars;
+};
+
+struct fq_codel_sched_data {
+	struct tcf_proto __attribute__((btf_type_tag("rcu"))) *filter_list;
+	struct tcf_block *block;
+	struct fq_codel_flow *flows;
+	u32 *backlogs;
+	u32 flows_cnt;
+	u32 quantum;
+	u32 drop_batch_size;
+	u32 memory_limit;
+	struct codel_params cparams;
+	struct codel_stats cstats;
+	u32 memory_usage;
+	u32 drop_overmemory;
+	u32 drop_overlimit;
+	u32 new_flow_count;
+	struct list_head new_flows;
+	struct list_head old_flows;
+};
+
+struct tc_fq_codel_qd_stats {
+	__u32 maxpacket;
+	__u32 drop_overlimit;
+	__u32 ecn_mark;
+	__u32 new_flow_count;
+	__u32 new_flows_len;
+	__u32 old_flows_len;
+	__u32 ce_mark;
+	__u32 memory_usage;
+	__u32 drop_overmemory;
+};
+
+struct tc_fq_codel_cl_stats {
+	__s32 deficit;
+	__u32 ldelay;
+	__u32 count;
+	__u32 lastcount;
+	__u32 dropping;
+	__s32 drop_next;
+};
+
+struct tc_fq_codel_xstats {
+	__u32 type;
+	union {
+		struct tc_fq_codel_qd_stats qdisc_stats;
+		struct tc_fq_codel_cl_stats class_stats;
+	};
+};
+
+struct fq_flow {
+	struct rb_root t_root;
+	struct sk_buff *head;
+	union {
+		struct sk_buff *tail;
+		unsigned long age;
+	};
+	struct rb_node fq_node;
+	struct sock *sk;
+	u32 socket_hash;
+	int qlen;
+	int credit;
+	struct fq_flow *next;
+	struct rb_node rate_node;
+	u64 time_next_packet;
+	long: 64;
+	long: 64;
+};
+
+enum {
+	TCA_FQ_UNSPEC = 0,
+	TCA_FQ_PLIMIT = 1,
+	TCA_FQ_FLOW_PLIMIT = 2,
+	TCA_FQ_QUANTUM = 3,
+	TCA_FQ_INITIAL_QUANTUM = 4,
+	TCA_FQ_RATE_ENABLE = 5,
+	TCA_FQ_FLOW_DEFAULT_RATE = 6,
+	TCA_FQ_FLOW_MAX_RATE = 7,
+	TCA_FQ_BUCKETS_LOG = 8,
+	TCA_FQ_FLOW_REFILL_DELAY = 9,
+	TCA_FQ_ORPHAN_MASK = 10,
+	TCA_FQ_LOW_RATE_THRESHOLD = 11,
+	TCA_FQ_CE_THRESHOLD = 12,
+	TCA_FQ_TIMER_SLACK = 13,
+	TCA_FQ_HORIZON = 14,
+	TCA_FQ_HORIZON_DROP = 15,
+	__TCA_FQ_MAX = 16,
+};
+
+struct fq_skb_cb {
+	u64 time_to_send;
+};
+
+struct fq_flow_head {
+	struct fq_flow *first;
+	struct fq_flow *last;
+};
+
+struct fq_sched_data {
+	struct fq_flow_head new_flows;
+	struct fq_flow_head old_flows;
+	struct rb_root delayed;
+	u64 time_next_delayed_flow;
+	u64 ktime_cache;
+	unsigned long unthrottle_latency_ns;
+	struct fq_flow internal;
+	u32 quantum;
+	u32 initial_quantum;
+	u32 flow_refill_delay;
+	u32 flow_plimit;
+	unsigned long flow_max_rate;
+	u64 ce_threshold;
+	u64 horizon;
+	u32 orphan_mask;
+	u32 low_rate_threshold;
+	struct rb_root *fq_root;
+	u8 rate_enable;
+	u8 fq_trees_log;
+	u8 horizon_drop;
+	u32 flows;
+	u32 inactive_flows;
+	u32 throttled_flows;
+	u64 stat_gc_flows;
+	u64 stat_internal_packets;
+	u64 stat_throttled;
+	u64 stat_ce_mark;
+	u64 stat_horizon_drops;
+	u64 stat_horizon_caps;
+	u64 stat_flows_plimit;
+	u64 stat_pkts_too_long;
+	u64 stat_allocation_errors;
+	u32 timer_slack;
+	struct qdisc_watchdog watchdog;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct tc_fq_qd_stats {
+	__u64 gc_flows;
+	__u64 highprio_packets;
+	__u64 tcp_retrans;
+	__u64 throttled;
+	__u64 flows_plimit;
+	__u64 pkts_too_long;
+	__u64 allocation_errors;
+	__s64 time_next_delayed_flow;
+	__u32 flows;
+	__u32 inactive_flows;
+	__u32 throttled_flows;
+	__u32 unthrottle_latency_ns;
+	__u64 ce_mark;
+	__u64 horizon_drops;
+	__u64 horizon_caps;
+};
+
+enum tc_clsu32_command {
+	TC_CLSU32_NEW_KNODE = 0,
+	TC_CLSU32_REPLACE_KNODE = 1,
+	TC_CLSU32_DELETE_KNODE = 2,
+	TC_CLSU32_NEW_HNODE = 3,
+	TC_CLSU32_REPLACE_HNODE = 4,
+	TC_CLSU32_DELETE_HNODE = 5,
+};
+
+enum {
+	TCA_U32_UNSPEC = 0,
+	TCA_U32_CLASSID = 1,
+	TCA_U32_HASH = 2,
+	TCA_U32_LINK = 3,
+	TCA_U32_DIVISOR = 4,
+	TCA_U32_SEL = 5,
+	TCA_U32_POLICE = 6,
+	TCA_U32_ACT = 7,
+	TCA_U32_INDEV = 8,
+	TCA_U32_PCNT = 9,
+	TCA_U32_MARK = 10,
+	TCA_U32_FLAGS = 11,
+	TCA_U32_PAD = 12,
+	__TCA_U32_MAX = 13,
+};
+
+struct tc_u32_key {
+	__be32 mask;
+	__be32 val;
+	int off;
+	int offmask;
+};
+
+struct tc_u32_sel {
+	unsigned char flags;
+	unsigned char offshift;
+	unsigned char nkeys;
+	__be16 offmask;
+	__u16 off;
+	short offoff;
+	short hoff;
+	__be32 hmask;
+	struct tc_u32_key keys[0];
+};
+
+struct tc_u_hnode;
+
+struct tc_u_knode {
+	struct tc_u_knode __attribute__((btf_type_tag("rcu"))) *next;
+	u32 handle;
+	struct tc_u_hnode __attribute__((btf_type_tag("rcu"))) *ht_up;
+	struct tcf_exts exts;
+	int ifindex;
+	u8 fshift;
+	struct tcf_result res;
+	struct tc_u_hnode __attribute__((btf_type_tag("rcu"))) *ht_down;
+	u32 flags;
+	unsigned int in_hw_count;
+	u32 val;
+	u32 mask;
+	u32 __attribute__((btf_type_tag("percpu"))) *pcpu_success;
+	struct rcu_work rwork;
+	struct tc_u32_sel sel;
+};
+
+struct tc_u_hnode {
+	struct tc_u_hnode __attribute__((btf_type_tag("rcu"))) *next;
+	u32 handle;
+	u32 prio;
+	int refcnt;
+	unsigned int divisor;
+	struct idr handle_idr;
+	bool is_root;
+	struct callback_head rcu;
+	u32 flags;
+	struct tc_u_knode __attribute__((btf_type_tag("rcu"))) *ht[0];
+};
+
+struct tc_u_common {
+	struct tc_u_hnode __attribute__((btf_type_tag("rcu"))) *hlist;
+	void *ptr;
+	int refcnt;
+	struct idr handle_idr;
+	struct hlist_node hnode;
+	long knodes;
+};
+
+struct tc_cls_u32_knode {
+	struct tcf_exts *exts;
+	struct tcf_result *res;
+	struct tc_u32_sel *sel;
+	u32 handle;
+	u32 val;
+	u32 mask;
+	u32 link_handle;
+	u8 fshift;
+};
+
+struct tc_cls_u32_hnode {
+	u32 handle;
+	u32 prio;
+	unsigned int divisor;
+};
+
+struct flow_cls_common_offload {
+	u32 chain_index;
+	__be16 protocol;
+	u32 prio;
+	struct netlink_ext_ack *extack;
+};
+
+struct tc_cls_u32_offload {
+	struct flow_cls_common_offload common;
+	enum tc_clsu32_command command;
+	union {
+		struct tc_cls_u32_knode knode;
+		struct tc_cls_u32_hnode hnode;
+	};
+};
+
+struct tc_u32_mark {
+	__u32 val;
+	__u32 mask;
+	__u32 success;
+};
+
+enum {
+	TCA_FW_UNSPEC = 0,
+	TCA_FW_CLASSID = 1,
+	TCA_FW_POLICE = 2,
+	TCA_FW_INDEV = 3,
+	TCA_FW_ACT = 4,
+	TCA_FW_MASK = 5,
+	__TCA_FW_MAX = 6,
+};
+
+struct fw_filter {
+	struct fw_filter __attribute__((btf_type_tag("rcu"))) *next;
+	u32 id;
+	struct tcf_result res;
+	int ifindex;
+	struct tcf_exts exts;
+	struct tcf_proto *tp;
+	struct rcu_work rwork;
+};
+
+struct fw_head {
+	u32 mask;
+	struct fw_filter __attribute__((btf_type_tag("rcu"))) *ht[256];
+	struct callback_head rcu;
+};
+
+enum {
+	TCA_BASIC_UNSPEC = 0,
+	TCA_BASIC_CLASSID = 1,
+	TCA_BASIC_EMATCHES = 2,
+	TCA_BASIC_ACT = 3,
+	TCA_BASIC_POLICE = 4,
+	TCA_BASIC_PCNT = 5,
+	TCA_BASIC_PAD = 6,
+	__TCA_BASIC_MAX = 7,
+};
+
+struct tcf_ematch_tree_hdr {
+	__u16 nmatches;
+	__u16 progid;
+};
+
+struct tcf_ematch;
+
+struct tcf_ematch_tree {
+	struct tcf_ematch_tree_hdr hdr;
+	struct tcf_ematch *matches;
+};
+
+struct tc_basic_pcnt;
+
+struct basic_filter {
+	u32 handle;
+	struct tcf_exts exts;
+	struct tcf_ematch_tree ematches;
+	struct tcf_result res;
+	struct tcf_proto *tp;
+	struct list_head link;
+	struct tc_basic_pcnt __attribute__((btf_type_tag("percpu"))) *pf;
+	struct rcu_work rwork;
+};
+
+struct tcf_ematch_ops;
+
+struct tcf_ematch {
+	struct tcf_ematch_ops *ops;
+	unsigned long data;
+	unsigned int datalen;
+	u16 matchid;
+	u16 flags;
+	struct net *net;
+};
+
+struct tcf_pkt_info;
+
+struct tcf_ematch_ops {
+	int kind;
+	int datalen;
+	int (*change)(struct net *, void *, int, struct tcf_ematch *);
+	int (*match)(struct sk_buff *, struct tcf_ematch *, struct tcf_pkt_info *);
+	void (*destroy)(struct tcf_ematch *);
+	int (*dump)(struct sk_buff *, struct tcf_ematch *);
+	struct module *owner;
+	struct list_head link;
+};
+
+struct tcf_pkt_info {
+	unsigned char *ptr;
+	int nexthdr;
+};
+
+struct tc_basic_pcnt {
+	__u64 rcnt;
+	__u64 rhit;
+};
+
+struct basic_head {
+	struct list_head flist;
+	struct idr handle_idr;
+	struct callback_head rcu;
+};
+
+enum {
+	FLOW_KEY_SRC = 0,
+	FLOW_KEY_DST = 1,
+	FLOW_KEY_PROTO = 2,
+	FLOW_KEY_PROTO_SRC = 3,
+	FLOW_KEY_PROTO_DST = 4,
+	FLOW_KEY_IIF = 5,
+	FLOW_KEY_PRIORITY = 6,
+	FLOW_KEY_MARK = 7,
+	FLOW_KEY_NFCT = 8,
+	FLOW_KEY_NFCT_SRC = 9,
+	FLOW_KEY_NFCT_DST = 10,
+	FLOW_KEY_NFCT_PROTO_SRC = 11,
+	FLOW_KEY_NFCT_PROTO_DST = 12,
+	FLOW_KEY_RTCLASSID = 13,
+	FLOW_KEY_SKUID = 14,
+	FLOW_KEY_SKGID = 15,
+	FLOW_KEY_VLAN_TAG = 16,
+	FLOW_KEY_RXHASH = 17,
+	__FLOW_KEY_MAX = 18,
+};
+
+enum {
+	FLOW_MODE_MAP = 0,
+	FLOW_MODE_HASH = 1,
+};
+
+enum {
+	TCA_FLOW_UNSPEC = 0,
+	TCA_FLOW_KEYS = 1,
+	TCA_FLOW_MODE = 2,
+	TCA_FLOW_BASECLASS = 3,
+	TCA_FLOW_RSHIFT = 4,
+	TCA_FLOW_ADDEND = 5,
+	TCA_FLOW_MASK = 6,
+	TCA_FLOW_XOR = 7,
+	TCA_FLOW_DIVISOR = 8,
+	TCA_FLOW_ACT = 9,
+	TCA_FLOW_POLICE = 10,
+	TCA_FLOW_EMATCHES = 11,
+	TCA_FLOW_PERTURB = 12,
+	__TCA_FLOW_MAX = 13,
+};
+
+struct flow_filter {
+	struct list_head list;
+	struct tcf_exts exts;
+	struct tcf_ematch_tree ematches;
+	struct tcf_proto *tp;
+	struct timer_list perturb_timer;
+	u32 perturb_period;
+	u32 handle;
+	u32 nkeys;
+	u32 keymask;
+	u32 mode;
+	u32 mask;
+	u32 xor;
+	u32 rshift;
+	u32 addend;
+	u32 divisor;
+	u32 baseclass;
+	u32 hashrnd;
+	struct rcu_work rwork;
+};
+
+struct flow_head {
+	struct list_head filters;
+	struct callback_head rcu;
+};
+
+enum tc_clsbpf_command {
+	TC_CLSBPF_OFFLOAD = 0,
+	TC_CLSBPF_STATS = 1,
+};
+
+enum {
+	TCA_BPF_UNSPEC = 0,
+	TCA_BPF_ACT = 1,
+	TCA_BPF_POLICE = 2,
+	TCA_BPF_CLASSID = 3,
+	TCA_BPF_OPS_LEN = 4,
+	TCA_BPF_OPS = 5,
+	TCA_BPF_FD = 6,
+	TCA_BPF_NAME = 7,
+	TCA_BPF_FLAGS = 8,
+	TCA_BPF_FLAGS_GEN = 9,
+	TCA_BPF_TAG = 10,
+	TCA_BPF_ID = 11,
+	__TCA_BPF_MAX = 12,
+};
+
+struct cls_bpf_prog {
+	struct bpf_prog *filter;
+	struct list_head link;
+	struct tcf_result res;
+	bool exts_integrated;
+	u32 gen_flags;
+	unsigned int in_hw_count;
+	struct tcf_exts exts;
+	u32 handle;
+	u16 bpf_num_ops;
+	struct sock_filter *bpf_ops;
+	const char *bpf_name;
+	struct tcf_proto *tp;
+	struct rcu_work rwork;
+};
+
+struct tc_cls_bpf_offload {
+	struct flow_cls_common_offload common;
+	enum tc_clsbpf_command command;
+	struct tcf_exts *exts;
+	struct bpf_prog *prog;
+	struct bpf_prog *oldprog;
+	const char *name;
+	bool exts_integrated;
+};
+
+struct cls_bpf_head {
+	struct list_head plist;
+	struct idr handle_idr;
+	struct callback_head rcu;
+};
+
+enum tc_matchall_command {
+	TC_CLSMATCHALL_REPLACE = 0,
+	TC_CLSMATCHALL_DESTROY = 1,
+	TC_CLSMATCHALL_STATS = 2,
+};
+
+enum {
+	TCA_MATCHALL_UNSPEC = 0,
+	TCA_MATCHALL_CLASSID = 1,
+	TCA_MATCHALL_ACT = 2,
+	TCA_MATCHALL_FLAGS = 3,
+	TCA_MATCHALL_PCNT = 4,
+	TCA_MATCHALL_PAD = 5,
+	__TCA_MATCHALL_MAX = 6,
+};
+
+struct tc_matchall_pcnt;
+
+struct cls_mall_head {
+	struct tcf_exts exts;
+	struct tcf_result res;
+	u32 handle;
+	u32 flags;
+	unsigned int in_hw_count;
+	struct tc_matchall_pcnt __attribute__((btf_type_tag("percpu"))) *pf;
+	struct rcu_work rwork;
+	bool deleting;
+};
+
+struct tc_matchall_pcnt {
+	__u64 rhit;
+};
+
+struct tc_cls_matchall_offload {
+	struct flow_cls_common_offload common;
+	enum tc_matchall_command command;
+	struct flow_rule *rule;
+	struct flow_stats stats;
+	bool use_act_stats;
+	unsigned long cookie;
+};
+
+enum {
+	TCA_EMATCH_TREE_UNSPEC = 0,
+	TCA_EMATCH_TREE_HDR = 1,
+	TCA_EMATCH_TREE_LIST = 2,
+	__TCA_EMATCH_TREE_MAX = 3,
+};
+
+struct tcf_ematch_hdr {
+	__u16 matchid;
+	__u16 kind;
+	__u16 flags;
+	__u16 pad;
+};
+
+enum {
+	TCF_EM_ALIGN_U8 = 1,
+	TCF_EM_ALIGN_U16 = 2,
+	TCF_EM_ALIGN_U32 = 4,
+};
+
+enum {
+	TCF_EM_OPND_EQ = 0,
+	TCF_EM_OPND_GT = 1,
+	TCF_EM_OPND_LT = 2,
+};
+
+enum {
+	TCF_LAYER_LINK = 0,
+	TCF_LAYER_NETWORK = 1,
+	TCF_LAYER_TRANSPORT = 2,
+	__TCF_LAYER_MAX = 3,
+};
+
+struct tcf_em_cmp {
+	__u32 val;
+	__u32 mask;
+	__u16 off;
+	__u8 align: 4;
+	__u8 flags: 4;
+	__u8 layer: 4;
+	__u8 opnd: 4;
+};
+
+struct tcf_em_nbyte {
+	__u16 off;
+	__u16 len: 12;
+	__u8 layer: 4;
+};
+
+struct nbyte_data {
+	struct tcf_em_nbyte hdr;
+	char pattern[0];
+};
+
+struct meta_value;
+
+struct meta_obj;
+
+struct meta_ops {
+	void (*get)(struct sk_buff *, struct tcf_pkt_info *, struct meta_value *, struct meta_obj *, int *);
+};
+
+struct tcf_meta_val {
+	__u16 kind;
+	__u8 shift;
+	__u8 op;
+};
+
+struct meta_value {
+	struct tcf_meta_val hdr;
+	unsigned long val;
+	unsigned int len;
+};
+
+struct meta_obj {
+	unsigned long value;
+	unsigned int len;
+};
+
+struct meta_type_ops {
+	void (*destroy)(struct meta_value *);
+	int (*compare)(struct meta_obj *, struct meta_obj *);
+	int (*change)(struct meta_value *, struct nlattr *);
+	void (*apply_extras)(struct meta_value *, struct meta_obj *);
+	int (*dump)(struct sk_buff *, struct meta_value *, int);
+};
+
+enum {
+	TCA_EM_META_UNSPEC = 0,
+	TCA_EM_META_HDR = 1,
+	TCA_EM_META_LVALUE = 2,
+	TCA_EM_META_RVALUE = 3,
+	__TCA_EM_META_MAX = 4,
+};
+
+enum {
+	TCF_META_TYPE_VAR = 0,
+	TCF_META_TYPE_INT = 1,
+	__TCF_META_TYPE_MAX = 2,
+};
+
+enum {
+	TCF_META_ID_VALUE = 0,
+	TCF_META_ID_RANDOM = 1,
+	TCF_META_ID_LOADAVG_0 = 2,
+	TCF_META_ID_LOADAVG_1 = 3,
+	TCF_META_ID_LOADAVG_2 = 4,
+	TCF_META_ID_DEV = 5,
+	TCF_META_ID_PRIORITY = 6,
+	TCF_META_ID_PROTOCOL = 7,
+	TCF_META_ID_PKTTYPE = 8,
+	TCF_META_ID_PKTLEN = 9,
+	TCF_META_ID_DATALEN = 10,
+	TCF_META_ID_MACLEN = 11,
+	TCF_META_ID_NFMARK = 12,
+	TCF_META_ID_TCINDEX = 13,
+	TCF_META_ID_RTCLASSID = 14,
+	TCF_META_ID_RTIIF = 15,
+	TCF_META_ID_SK_FAMILY = 16,
+	TCF_META_ID_SK_STATE = 17,
+	TCF_META_ID_SK_REUSE = 18,
+	TCF_META_ID_SK_BOUND_IF = 19,
+	TCF_META_ID_SK_REFCNT = 20,
+	TCF_META_ID_SK_SHUTDOWN = 21,
+	TCF_META_ID_SK_PROTO = 22,
+	TCF_META_ID_SK_TYPE = 23,
+	TCF_META_ID_SK_RCVBUF = 24,
+	TCF_META_ID_SK_RMEM_ALLOC = 25,
+	TCF_META_ID_SK_WMEM_ALLOC = 26,
+	TCF_META_ID_SK_OMEM_ALLOC = 27,
+	TCF_META_ID_SK_WMEM_QUEUED = 28,
+	TCF_META_ID_SK_RCV_QLEN = 29,
+	TCF_META_ID_SK_SND_QLEN = 30,
+	TCF_META_ID_SK_ERR_QLEN = 31,
+	TCF_META_ID_SK_FORWARD_ALLOCS = 32,
+	TCF_META_ID_SK_SNDBUF = 33,
+	TCF_META_ID_SK_ALLOCS = 34,
+	__TCF_META_ID_SK_ROUTE_CAPS = 35,
+	TCF_META_ID_SK_HASH = 36,
+	TCF_META_ID_SK_LINGERTIME = 37,
+	TCF_META_ID_SK_ACK_BACKLOG = 38,
+	TCF_META_ID_SK_MAX_ACK_BACKLOG = 39,
+	TCF_META_ID_SK_PRIO = 40,
+	TCF_META_ID_SK_RCVLOWAT = 41,
+	TCF_META_ID_SK_RCVTIMEO = 42,
+	TCF_META_ID_SK_SNDTIMEO = 43,
+	TCF_META_ID_SK_SENDMSG_OFF = 44,
+	TCF_META_ID_SK_WRITE_PENDING = 45,
+	TCF_META_ID_VLAN_TAG = 46,
+	TCF_META_ID_RXHASH = 47,
+	__TCF_META_ID_MAX = 48,
+};
+
+struct meta_match {
+	struct meta_value lvalue;
+	struct meta_value rvalue;
+};
+
+struct tcf_meta_hdr {
+	struct tcf_meta_val left;
+	struct tcf_meta_val right;
+};
+
+struct text_match {
+	u16 from_offset;
+	u16 to_offset;
+	u8 from_layer;
+	u8 to_layer;
+	struct ts_config *config;
+};
+
+struct tcf_em_text {
+	char algo[16];
+	__u16 from_offset;
+	__u16 to_offset;
+	__u16 pattern_len;
+	__u8 from_layer: 4;
+	__u8 to_layer: 4;
+	__u8 pad;
+};
+
+typedef void (*btf_trace_netlink_extack)(void *, const char *);
+
+struct listeners;
+
+struct netlink_table {
+	struct rhashtable hash;
+	struct hlist_head mc_list;
+	struct listeners __attribute__((btf_type_tag("rcu"))) *listeners;
+	unsigned int flags;
+	unsigned int groups;
+	struct mutex *cb_mutex;
+	struct module *module;
+	int (*bind)(struct net *, int);
+	void (*unbind)(struct net *, int);
+	void (*release)(struct sock *, unsigned long *);
+	int registered;
+};
+
+struct listeners {
+	struct callback_head rcu;
+	unsigned long masks[0];
+};
+
+enum netlink_skb_flags {
+	NETLINK_SKB_DST = 8,
+};
+
+enum {
+	NETLINK_F_KERNEL_SOCKET = 0,
+	NETLINK_F_RECV_PKTINFO = 1,
+	NETLINK_F_BROADCAST_SEND_ERROR = 2,
+	NETLINK_F_RECV_NO_ENOBUFS = 3,
+	NETLINK_F_LISTEN_ALL_NSID = 4,
+	NETLINK_F_CAP_ACK = 5,
+	NETLINK_F_EXT_ACK = 6,
+	NETLINK_F_STRICT_CHK = 7,
+};
+
+enum {
+	NETLINK_UNCONNECTED = 0,
+	NETLINK_CONNECTED = 1,
+};
+
+enum nlmsgerr_attrs {
+	NLMSGERR_ATTR_UNUSED = 0,
+	NLMSGERR_ATTR_MSG = 1,
+	NLMSGERR_ATTR_OFFS = 2,
+	NLMSGERR_ATTR_COOKIE = 3,
+	NLMSGERR_ATTR_POLICY = 4,
+	NLMSGERR_ATTR_MISS_TYPE = 5,
+	NLMSGERR_ATTR_MISS_NEST = 6,
+	__NLMSGERR_ATTR_MAX = 7,
+	NLMSGERR_ATTR_MAX = 6,
+};
+
+struct trace_event_raw_netlink_extack {
+	struct trace_entry ent;
+	u32 __data_loc_msg;
+	char __data[0];
+};
+
+struct netlink_tap {
+	struct net_device *dev;
+	struct module *module;
+	struct list_head list;
+};
+
+struct netlink_sock {
+	struct sock sk;
+	unsigned long flags;
+	u32 portid;
+	u32 dst_portid;
+	u32 dst_group;
+	u32 subscriptions;
+	u32 ngroups;
+	unsigned long *groups;
+	unsigned long state;
+	size_t max_recvmsg_len;
+	wait_queue_head_t wait;
+	bool bound;
+	bool cb_running;
+	int dump_done_errno;
+	struct netlink_callback cb;
+	struct mutex *cb_mutex;
+	struct mutex cb_def_mutex;
+	void (*netlink_rcv)(struct sk_buff *);
+	int (*netlink_bind)(struct net *, int);
+	void (*netlink_unbind)(struct net *, int);
+	void (*netlink_release)(struct sock *, unsigned long *);
+	struct module *module;
+	struct rhash_head node;
+	struct callback_head rcu;
+	struct work_struct work;
+};
+
+struct sockaddr_nl {
+	__kernel_sa_family_t nl_family;
+	unsigned short nl_pad;
+	__u32 nl_pid;
+	__u32 nl_groups;
+};
+
+struct trace_event_data_offsets_netlink_extack {
+	u32 msg;
+};
+
+struct netlink_tap_net {
+	struct list_head netlink_tap_all;
+	struct mutex netlink_tap_lock;
+};
+
+struct netlink_broadcast_data {
+	struct sock *exclude_sk;
+	struct net *net;
+	u32 portid;
+	u32 group;
+	int failure;
+	int delivery_failure;
+	int congested;
+	int delivered;
+	gfp_t allocation;
+	struct sk_buff *skb;
+	struct sk_buff *skb2;
+	int (*tx_filter)(struct sock *, struct sk_buff *, void *);
+	void *tx_data;
+};
+
+struct netlink_set_err_data {
+	struct sock *exclude_sk;
+	u32 portid;
+	u32 group;
+	int code;
+};
+
+struct netlink_compare_arg {
+	possible_net_t pnet;
+	u32 portid;
+};
+
+struct nl_pktinfo {
+	__u32 group;
+};
+
+struct nl_seq_iter {
+	struct seq_net_private p;
+	struct rhashtable_iter hti;
+	int link;
+};
+
+struct bpf_iter__netlink {
+	union {
+		struct bpf_iter_meta *meta;
+	};
+	union {
+		struct netlink_sock *sk;
+	};
+};
+
+struct nlmsgerr {
+	int error;
+	struct nlmsghdr msg;
+};
+
+struct netlink_notify {
+	struct net *net;
+	u32 portid;
+	int protocol;
+};
+
+enum {
+	CTRL_CMD_UNSPEC = 0,
+	CTRL_CMD_NEWFAMILY = 1,
+	CTRL_CMD_DELFAMILY = 2,
+	CTRL_CMD_GETFAMILY = 3,
+	CTRL_CMD_NEWOPS = 4,
+	CTRL_CMD_DELOPS = 5,
+	CTRL_CMD_GETOPS = 6,
+	CTRL_CMD_NEWMCAST_GRP = 7,
+	CTRL_CMD_DELMCAST_GRP = 8,
+	CTRL_CMD_GETMCAST_GRP = 9,
+	CTRL_CMD_GETPOLICY = 10,
+	__CTRL_CMD_MAX = 11,
+};
+
+enum genl_validate_flags {
+	GENL_DONT_VALIDATE_STRICT = 1,
+	GENL_DONT_VALIDATE_DUMP = 2,
+	GENL_DONT_VALIDATE_DUMP_STRICT = 4,
+};
+
+enum {
+	CTRL_ATTR_UNSPEC = 0,
+	CTRL_ATTR_FAMILY_ID = 1,
+	CTRL_ATTR_FAMILY_NAME = 2,
+	CTRL_ATTR_VERSION = 3,
+	CTRL_ATTR_HDRSIZE = 4,
+	CTRL_ATTR_MAXATTR = 5,
+	CTRL_ATTR_OPS = 6,
+	CTRL_ATTR_MCAST_GROUPS = 7,
+	CTRL_ATTR_POLICY = 8,
+	CTRL_ATTR_OP_POLICY = 9,
+	CTRL_ATTR_OP = 10,
+	__CTRL_ATTR_MAX = 11,
+};
+
+enum {
+	CTRL_ATTR_OP_UNSPEC = 0,
+	CTRL_ATTR_OP_ID = 1,
+	CTRL_ATTR_OP_FLAGS = 2,
+	__CTRL_ATTR_OP_MAX = 3,
+};
+
+enum {
+	CTRL_ATTR_MCAST_GRP_UNSPEC = 0,
+	CTRL_ATTR_MCAST_GRP_NAME = 1,
+	CTRL_ATTR_MCAST_GRP_ID = 2,
+	__CTRL_ATTR_MCAST_GRP_MAX = 3,
+};
+
+enum {
+	CTRL_ATTR_POLICY_UNSPEC = 0,
+	CTRL_ATTR_POLICY_DO = 1,
+	CTRL_ATTR_POLICY_DUMP = 2,
+	__CTRL_ATTR_POLICY_DUMP_MAX = 3,
+	CTRL_ATTR_POLICY_DUMP_MAX = 2,
+};
+
+struct genl_op_iter {
+	const struct genl_family *family;
+	struct genl_split_ops doit;
+	struct genl_split_ops dumpit;
+	int cmd_idx;
+	int entry_idx;
+	u32 cmd;
+	u8 flags;
+};
+
+struct netlink_policy_dump_state;
+
+struct ctrl_dump_policy_ctx {
+	struct netlink_policy_dump_state *state;
+	const struct genl_family *rt;
+	struct genl_op_iter *op_iter;
+	u32 op;
+	u16 fam_id;
+	u8 dump_map: 1;
+	u8 single_op: 1;
+};
+
+struct genl_start_context {
+	const struct genl_family *family;
+	struct nlmsghdr *nlh;
+	struct netlink_ext_ack *extack;
+	const struct genl_split_ops *ops;
+	int hdrlen;
+};
+
+enum netlink_attribute_type {
+	NL_ATTR_TYPE_INVALID = 0,
+	NL_ATTR_TYPE_FLAG = 1,
+	NL_ATTR_TYPE_U8 = 2,
+	NL_ATTR_TYPE_U16 = 3,
+	NL_ATTR_TYPE_U32 = 4,
+	NL_ATTR_TYPE_U64 = 5,
+	NL_ATTR_TYPE_S8 = 6,
+	NL_ATTR_TYPE_S16 = 7,
+	NL_ATTR_TYPE_S32 = 8,
+	NL_ATTR_TYPE_S64 = 9,
+	NL_ATTR_TYPE_BINARY = 10,
+	NL_ATTR_TYPE_STRING = 11,
+	NL_ATTR_TYPE_NUL_STRING = 12,
+	NL_ATTR_TYPE_NESTED = 13,
+	NL_ATTR_TYPE_NESTED_ARRAY = 14,
+	NL_ATTR_TYPE_BITFIELD32 = 15,
+};
+
+enum netlink_policy_type_attr {
+	NL_POLICY_TYPE_ATTR_UNSPEC = 0,
+	NL_POLICY_TYPE_ATTR_TYPE = 1,
+	NL_POLICY_TYPE_ATTR_MIN_VALUE_S = 2,
+	NL_POLICY_TYPE_ATTR_MAX_VALUE_S = 3,
+	NL_POLICY_TYPE_ATTR_MIN_VALUE_U = 4,
+	NL_POLICY_TYPE_ATTR_MAX_VALUE_U = 5,
+	NL_POLICY_TYPE_ATTR_MIN_LENGTH = 6,
+	NL_POLICY_TYPE_ATTR_MAX_LENGTH = 7,
+	NL_POLICY_TYPE_ATTR_POLICY_IDX = 8,
+	NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE = 9,
+	NL_POLICY_TYPE_ATTR_BITFIELD32_MASK = 10,
+	NL_POLICY_TYPE_ATTR_PAD = 11,
+	NL_POLICY_TYPE_ATTR_MASK = 12,
+	__NL_POLICY_TYPE_ATTR_MAX = 13,
+	NL_POLICY_TYPE_ATTR_MAX = 12,
+};
+
+struct netlink_policy_dump_state {
+	unsigned int policy_idx;
+	unsigned int attr_idx;
+	unsigned int n_alloc;
+	struct {
+		const struct nla_policy *policy;
+		unsigned int maxtype;
+	} policies[0];
+};
+
+typedef void (*btf_trace_bpf_test_finish)(void *, int *);
+
+struct bpf_test_timer {
+	enum {
+		NO_PREEMPT = 0,
+		NO_MIGRATE = 1,
+	} mode;
+	u32 i;
+	u64 time_start;
+	u64 time_spent;
+};
+
+enum nf_inet_hooks {
+	NF_INET_PRE_ROUTING = 0,
+	NF_INET_LOCAL_IN = 1,
+	NF_INET_FORWARD = 2,
+	NF_INET_LOCAL_OUT = 3,
+	NF_INET_POST_ROUTING = 4,
+	NF_INET_NUMHOOKS = 5,
+	NF_INET_INGRESS = 5,
+};
+
+struct bpf_fentry_test_t {
+	struct bpf_fentry_test_t *a;
+};
+
+struct trace_event_raw_bpf_test_finish {
+	struct trace_entry ent;
+	int err;
+	char __data[0];
+};
+
+struct xdp_test_data {
+	struct xdp_buff *orig_ctx;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct xdp_rxq_info rxq;
+	struct net_device *dev;
+	struct page_pool *pp;
+	struct xdp_frame **frames;
+	struct sk_buff **skbs;
+	struct xdp_mem_info mem;
+	u32 batch_size;
+	u32 frame_cnt;
+	long: 64;
+	long: 64;
+};
+
+struct xdp_page_head {
+	struct xdp_buff orig_ctx;
+	struct xdp_buff ctx;
+	union {
+		struct {
+			struct {} __empty_frame;
+			struct xdp_frame frame[0];
+		};
+		struct {
+			struct {} __empty_data;
+			u8 data[0];
+		};
+	};
+};
+
+struct trace_event_data_offsets_bpf_test_finish {};
+
+struct prog_test_member1 {
+	int a;
+};
+
+struct prog_test_member {
+	struct prog_test_member1 m;
+	int c;
+};
+
+struct prog_test_ref_kfunc {
+	int a;
+	int b;
+	struct prog_test_member memb;
+	struct prog_test_ref_kfunc *next;
+	refcount_t cnt;
+};
+
+struct bpf_raw_tp_test_run_info {
+	struct bpf_prog *prog;
+	void *ctx;
+	u32 retval;
+};
+
+struct bpf_dummy_ops_test_args {
+	u64 args[12];
+	struct bpf_dummy_ops_state state;
+};
+
+typedef int (*dummy_ops_test_ret_fn)(struct bpf_dummy_ops_state *, ...);
+
+enum ethtool_flags {
+	ETH_FLAG_TXVLAN = 128,
+	ETH_FLAG_RXVLAN = 256,
+	ETH_FLAG_LRO = 32768,
+	ETH_FLAG_NTUPLE = 134217728,
+	ETH_FLAG_RXHASH = 268435456,
+};
+
+enum ethtool_sfeatures_retval_bits {
+	ETHTOOL_F_UNSUPPORTED__BIT = 0,
+	ETHTOOL_F_WISH__BIT = 1,
+	ETHTOOL_F_COMPAT__BIT = 2,
+};
+
+enum tunable_id {
+	ETHTOOL_ID_UNSPEC = 0,
+	ETHTOOL_RX_COPYBREAK = 1,
+	ETHTOOL_TX_COPYBREAK = 2,
+	ETHTOOL_PFC_PREVENTION_TOUT = 3,
+	ETHTOOL_TX_COPYBREAK_BUF_SIZE = 4,
+	__ETHTOOL_TUNABLE_COUNT = 5,
+};
+
+enum tunable_type_id {
+	ETHTOOL_TUNABLE_UNSPEC = 0,
+	ETHTOOL_TUNABLE_U8 = 1,
+	ETHTOOL_TUNABLE_U16 = 2,
+	ETHTOOL_TUNABLE_U32 = 3,
+	ETHTOOL_TUNABLE_U64 = 4,
+	ETHTOOL_TUNABLE_STRING = 5,
+	ETHTOOL_TUNABLE_S8 = 6,
+	ETHTOOL_TUNABLE_S16 = 7,
+	ETHTOOL_TUNABLE_S32 = 8,
+	ETHTOOL_TUNABLE_S64 = 9,
+};
+
+enum phy_tunable_id {
+	ETHTOOL_PHY_ID_UNSPEC = 0,
+	ETHTOOL_PHY_DOWNSHIFT = 1,
+	ETHTOOL_PHY_FAST_LINK_DOWN = 2,
+	ETHTOOL_PHY_EDPD = 3,
+	__ETHTOOL_PHY_TUNABLE_COUNT = 4,
+};
+
+enum ethtool_fec_config_bits {
+	ETHTOOL_FEC_NONE_BIT = 0,
+	ETHTOOL_FEC_AUTO_BIT = 1,
+	ETHTOOL_FEC_OFF_BIT = 2,
+	ETHTOOL_FEC_RS_BIT = 3,
+	ETHTOOL_FEC_BASER_BIT = 4,
+	ETHTOOL_FEC_LLRS_BIT = 5,
+};
+
+struct ethtool_rx_flow_key {
+	struct flow_dissector_key_basic basic;
+	union {
+		struct flow_dissector_key_ipv4_addrs ipv4;
+		struct flow_dissector_key_ipv6_addrs ipv6;
+	};
+	struct flow_dissector_key_ports tp;
+	struct flow_dissector_key_ip ip;
+	struct flow_dissector_key_vlan vlan;
+	struct flow_dissector_key_eth_addrs eth_addrs;
+};
+
+struct ethtool_rx_flow_match {
+	struct flow_dissector dissector;
+	struct ethtool_rx_flow_key key;
+	struct ethtool_rx_flow_key mask;
+};
+
+struct ethtool_devlink_compat {
+	struct devlink *devlink;
+	union {
+		struct ethtool_flash efl;
+		struct ethtool_drvinfo info;
+	};
+};
+
+struct ethtool_value {
+	__u32 cmd;
+	__u32 data;
+};
+
+struct ethtool_rx_flow_rule {
+	struct flow_rule *rule;
+	unsigned long priv[0];
+};
+
+struct ethtool_cmd {
+	__u32 cmd;
+	__u32 supported;
+	__u32 advertising;
+	__u16 speed;
+	__u8 duplex;
+	__u8 port;
+	__u8 phy_address;
+	__u8 transceiver;
+	__u8 autoneg;
+	__u8 mdio_support;
+	__u32 maxtxpkt;
+	__u32 maxrxpkt;
+	__u16 speed_hi;
+	__u8 eth_tp_mdix;
+	__u8 eth_tp_mdix_ctrl;
+	__u32 lp_advertising;
+	__u32 reserved[2];
+};
+
+struct ethtool_link_usettings {
+	struct ethtool_link_settings base;
+	struct {
+		__u32 supported[4];
+		__u32 advertising[4];
+		__u32 lp_advertising[4];
+	} link_modes;
+};
+
+struct compat_ethtool_rx_flow_spec {
+	u32 flow_type;
+	union ethtool_flow_union h_u;
+	struct ethtool_flow_ext h_ext;
+	union ethtool_flow_union m_u;
+	struct ethtool_flow_ext m_ext;
+	compat_u64 ring_cookie;
+	u32 location;
+} __attribute__((packed));
+
+struct compat_ethtool_rxnfc {
+	u32 cmd;
+	u32 flow_type;
+	compat_u64 data;
+	struct compat_ethtool_rx_flow_spec fs;
+	u32 rule_cnt;
+	u32 rule_locs[0];
+} __attribute__((packed));
+
+struct ethtool_rx_flow_spec_input {
+	const struct ethtool_rx_flow_spec *fs;
+	u32 rss_ctx;
+};
+
+struct ethtool_gstrings {
+	__u32 cmd;
+	__u32 string_set;
+	__u32 len;
+	__u8 data[0];
+};
+
+struct ethtool_perm_addr {
+	__u32 cmd;
+	__u32 size;
+	__u8 data[0];
+};
+
+struct ethtool_sset_info {
+	__u32 cmd;
+	__u32 reserved;
+	__u64 sset_mask;
+	__u32 data[0];
+};
+
+struct ethtool_rxfh {
+	__u32 cmd;
+	__u32 rss_context;
+	__u32 indir_size;
+	__u32 key_size;
+	__u8 hfunc;
+	__u8 rsvd8[3];
+	__u32 rsvd32;
+	__u32 rss_config[0];
+};
+
+struct ethtool_get_features_block {
+	__u32 available;
+	__u32 requested;
+	__u32 active;
+	__u32 never_changed;
+};
+
+struct ethtool_gfeatures {
+	__u32 cmd;
+	__u32 size;
+	struct ethtool_get_features_block features[0];
+};
+
+struct ethtool_set_features_block {
+	__u32 valid;
+	__u32 requested;
+};
+
+struct ethtool_sfeatures {
+	__u32 cmd;
+	__u32 size;
+	struct ethtool_set_features_block features[0];
+};
+
+struct ethtool_per_queue_op {
+	__u32 cmd;
+	__u32 sub_command;
+	__u32 queue_mask[128];
+	char data[0];
+};
+
+struct link_mode_info {
+	int speed;
+	u8 lanes;
+	u8 duplex;
+};
+
+typedef void (*ethnl_notify_handler_t)(struct net_device *, unsigned int, const void *);
+
+struct ethnl_req_info;
+
+struct ethnl_reply_data;
+
+struct ethnl_request_ops {
+	u8 request_cmd;
+	u8 reply_cmd;
+	u16 hdr_attr;
+	unsigned int req_info_size;
+	unsigned int reply_data_size;
+	bool allow_nodev_do;
+	u8 set_ntf_cmd;
+	int (*parse_request)(struct ethnl_req_info *, struct nlattr **, struct netlink_ext_ack *);
+	int (*prepare_data)(const struct ethnl_req_info *, struct ethnl_reply_data *, const struct genl_info *);
+	int (*reply_size)(const struct ethnl_req_info *, const struct ethnl_reply_data *);
+	int (*fill_reply)(struct sk_buff *, const struct ethnl_req_info *, const struct ethnl_reply_data *);
+	void (*cleanup_data)(struct ethnl_reply_data *);
+	int (*set_validate)(struct ethnl_req_info *, struct genl_info *);
+	int (*set)(struct ethnl_req_info *, struct genl_info *);
+};
+
+struct ethnl_req_info {
+	struct net_device *dev;
+	netdevice_tracker dev_tracker;
+	u32 flags;
+};
+
+struct ethnl_reply_data {
+	struct net_device *dev;
+};
+
+enum {
+	ETHTOOL_A_HEADER_UNSPEC = 0,
+	ETHTOOL_A_HEADER_DEV_INDEX = 1,
+	ETHTOOL_A_HEADER_DEV_NAME = 2,
+	ETHTOOL_A_HEADER_FLAGS = 3,
+	__ETHTOOL_A_HEADER_CNT = 4,
+	ETHTOOL_A_HEADER_MAX = 3,
+};
+
+enum ethtool_multicast_groups {
+	ETHNL_MCGRP_MONITOR = 0,
+};
+
+struct ethnl_dump_ctx {
+	const struct ethnl_request_ops *ops;
+	struct ethnl_req_info *req_info;
+	struct ethnl_reply_data *reply_data;
+	unsigned long pos_ifindex;
+};
+
+enum {
+	ETHTOOL_A_BITSET_UNSPEC = 0,
+	ETHTOOL_A_BITSET_NOMASK = 1,
+	ETHTOOL_A_BITSET_SIZE = 2,
+	ETHTOOL_A_BITSET_BITS = 3,
+	ETHTOOL_A_BITSET_VALUE = 4,
+	ETHTOOL_A_BITSET_MASK = 5,
+	__ETHTOOL_A_BITSET_CNT = 6,
+	ETHTOOL_A_BITSET_MAX = 5,
+};
+
+enum {
+	ETHTOOL_A_BITSET_BITS_UNSPEC = 0,
+	ETHTOOL_A_BITSET_BITS_BIT = 1,
+	__ETHTOOL_A_BITSET_BITS_CNT = 2,
+	ETHTOOL_A_BITSET_BITS_MAX = 1,
+};
+
+enum {
+	ETHTOOL_A_BITSET_BIT_UNSPEC = 0,
+	ETHTOOL_A_BITSET_BIT_INDEX = 1,
+	ETHTOOL_A_BITSET_BIT_NAME = 2,
+	ETHTOOL_A_BITSET_BIT_VALUE = 3,
+	__ETHTOOL_A_BITSET_BIT_CNT = 4,
+	ETHTOOL_A_BITSET_BIT_MAX = 3,
+};
+
+typedef const char (* const ethnl_string_array_t)[32];
+
+struct strset_info {
+	bool per_dev;
+	bool free_strings;
+	unsigned int count;
+	const char (*strings)[32];
+};
+
+enum {
+	ETHTOOL_A_STRSET_UNSPEC = 0,
+	ETHTOOL_A_STRSET_HEADER = 1,
+	ETHTOOL_A_STRSET_STRINGSETS = 2,
+	ETHTOOL_A_STRSET_COUNTS_ONLY = 3,
+	__ETHTOOL_A_STRSET_CNT = 4,
+	ETHTOOL_A_STRSET_MAX = 3,
+};
+
+enum {
+	ETHTOOL_A_STRINGSETS_UNSPEC = 0,
+	ETHTOOL_A_STRINGSETS_STRINGSET = 1,
+	__ETHTOOL_A_STRINGSETS_CNT = 2,
+	ETHTOOL_A_STRINGSETS_MAX = 1,
+};
+
+enum {
+	ETHTOOL_A_STRINGSET_UNSPEC = 0,
+	ETHTOOL_A_STRINGSET_ID = 1,
+	ETHTOOL_A_STRINGSET_COUNT = 2,
+	ETHTOOL_A_STRINGSET_STRINGS = 3,
+	__ETHTOOL_A_STRINGSET_CNT = 4,
+	ETHTOOL_A_STRINGSET_MAX = 3,
+};
+
+enum {
+	ETHTOOL_A_STRINGS_UNSPEC = 0,
+	ETHTOOL_A_STRINGS_STRING = 1,
+	__ETHTOOL_A_STRINGS_CNT = 2,
+	ETHTOOL_A_STRINGS_MAX = 1,
+};
+
+enum {
+	ETHTOOL_A_STRING_UNSPEC = 0,
+	ETHTOOL_A_STRING_INDEX = 1,
+	ETHTOOL_A_STRING_VALUE = 2,
+	__ETHTOOL_A_STRING_CNT = 3,
+	ETHTOOL_A_STRING_MAX = 2,
+};
+
+struct strset_req_info {
+	struct ethnl_req_info base;
+	u32 req_ids;
+	bool counts_only;
+};
+
+struct strset_reply_data {
+	struct ethnl_reply_data base;
+	struct strset_info sets[21];
+};
+
+enum {
+	ETHTOOL_A_LINKINFO_UNSPEC = 0,
+	ETHTOOL_A_LINKINFO_HEADER = 1,
+	ETHTOOL_A_LINKINFO_PORT = 2,
+	ETHTOOL_A_LINKINFO_PHYADDR = 3,
+	ETHTOOL_A_LINKINFO_TP_MDIX = 4,
+	ETHTOOL_A_LINKINFO_TP_MDIX_CTRL = 5,
+	ETHTOOL_A_LINKINFO_TRANSCEIVER = 6,
+	__ETHTOOL_A_LINKINFO_CNT = 7,
+	ETHTOOL_A_LINKINFO_MAX = 6,
+};
+
+struct linkinfo_reply_data {
+	struct ethnl_reply_data base;
+	struct ethtool_link_ksettings ksettings;
+	struct ethtool_link_settings *lsettings;
+};
+
+enum {
+	ETHTOOL_A_LINKMODES_UNSPEC = 0,
+	ETHTOOL_A_LINKMODES_HEADER = 1,
+	ETHTOOL_A_LINKMODES_AUTONEG = 2,
+	ETHTOOL_A_LINKMODES_OURS = 3,
+	ETHTOOL_A_LINKMODES_PEER = 4,
+	ETHTOOL_A_LINKMODES_SPEED = 5,
+	ETHTOOL_A_LINKMODES_DUPLEX = 6,
+	ETHTOOL_A_LINKMODES_MASTER_SLAVE_CFG = 7,
+	ETHTOOL_A_LINKMODES_MASTER_SLAVE_STATE = 8,
+	ETHTOOL_A_LINKMODES_LANES = 9,
+	ETHTOOL_A_LINKMODES_RATE_MATCHING = 10,
+	__ETHTOOL_A_LINKMODES_CNT = 11,
+	ETHTOOL_A_LINKMODES_MAX = 10,
+};
+
+struct linkmodes_reply_data {
+	struct ethnl_reply_data base;
+	struct ethtool_link_ksettings ksettings;
+	struct ethtool_link_settings *lsettings;
+	bool peer_empty;
+};
+
+enum {
+	ETHTOOL_A_RSS_UNSPEC = 0,
+	ETHTOOL_A_RSS_HEADER = 1,
+	ETHTOOL_A_RSS_CONTEXT = 2,
+	ETHTOOL_A_RSS_HFUNC = 3,
+	ETHTOOL_A_RSS_INDIR = 4,
+	ETHTOOL_A_RSS_HKEY = 5,
+	__ETHTOOL_A_RSS_CNT = 6,
+	ETHTOOL_A_RSS_MAX = 5,
+};
+
+struct rss_req_info {
+	struct ethnl_req_info base;
+	u32 rss_context;
+};
+
+struct rss_reply_data {
+	struct ethnl_reply_data base;
+	u32 indir_size;
+	u32 hkey_size;
+	u32 hfunc;
+	u32 *indir_table;
+	u8 *hkey;
+};
+
+enum {
+	ETHTOOL_A_LINKSTATE_UNSPEC = 0,
+	ETHTOOL_A_LINKSTATE_HEADER = 1,
+	ETHTOOL_A_LINKSTATE_LINK = 2,
+	ETHTOOL_A_LINKSTATE_SQI = 3,
+	ETHTOOL_A_LINKSTATE_SQI_MAX = 4,
+	ETHTOOL_A_LINKSTATE_EXT_STATE = 5,
+	ETHTOOL_A_LINKSTATE_EXT_SUBSTATE = 6,
+	ETHTOOL_A_LINKSTATE_EXT_DOWN_CNT = 7,
+	__ETHTOOL_A_LINKSTATE_CNT = 8,
+	ETHTOOL_A_LINKSTATE_MAX = 7,
+};
+
+struct linkstate_reply_data {
+	struct ethnl_reply_data base;
+	int link;
+	int sqi;
+	int sqi_max;
+	struct ethtool_link_ext_stats link_stats;
+	bool link_ext_state_provided;
+	struct ethtool_link_ext_state_info ethtool_link_ext_state_info;
+};
+
+enum {
+	ETHTOOL_A_DEBUG_UNSPEC = 0,
+	ETHTOOL_A_DEBUG_HEADER = 1,
+	ETHTOOL_A_DEBUG_MSGMASK = 2,
+	__ETHTOOL_A_DEBUG_CNT = 3,
+	ETHTOOL_A_DEBUG_MAX = 2,
+};
+
+struct debug_reply_data {
+	struct ethnl_reply_data base;
+	u32 msg_mask;
+};
+
+enum {
+	ETHTOOL_A_WOL_UNSPEC = 0,
+	ETHTOOL_A_WOL_HEADER = 1,
+	ETHTOOL_A_WOL_MODES = 2,
+	ETHTOOL_A_WOL_SOPASS = 3,
+	__ETHTOOL_A_WOL_CNT = 4,
+	ETHTOOL_A_WOL_MAX = 3,
+};
+
+struct wol_reply_data {
+	struct ethnl_reply_data base;
+	struct ethtool_wolinfo wol;
+	bool show_sopass;
+};
+
+enum {
+	ETHTOOL_A_FEATURES_UNSPEC = 0,
+	ETHTOOL_A_FEATURES_HEADER = 1,
+	ETHTOOL_A_FEATURES_HW = 2,
+	ETHTOOL_A_FEATURES_WANTED = 3,
+	ETHTOOL_A_FEATURES_ACTIVE = 4,
+	ETHTOOL_A_FEATURES_NOCHANGE = 5,
+	__ETHTOOL_A_FEATURES_CNT = 6,
+	ETHTOOL_A_FEATURES_MAX = 5,
+};
+
+struct features_reply_data {
+	struct ethnl_reply_data base;
+	u32 hw[2];
+	u32 wanted[2];
+	u32 active[2];
+	u32 nochange[2];
+	u32 all[2];
+};
+
+enum {
+	ETHTOOL_A_PRIVFLAGS_UNSPEC = 0,
+	ETHTOOL_A_PRIVFLAGS_HEADER = 1,
+	ETHTOOL_A_PRIVFLAGS_FLAGS = 2,
+	__ETHTOOL_A_PRIVFLAGS_CNT = 3,
+	ETHTOOL_A_PRIVFLAGS_MAX = 2,
+};
+
+struct privflags_reply_data {
+	struct ethnl_reply_data base;
+	const char (*priv_flag_names)[32];
+	unsigned int n_priv_flags;
+	u32 priv_flags;
+};
+
+enum {
+	ETHTOOL_TCP_DATA_SPLIT_UNKNOWN = 0,
+	ETHTOOL_TCP_DATA_SPLIT_DISABLED = 1,
+	ETHTOOL_TCP_DATA_SPLIT_ENABLED = 2,
+};
+
+enum {
+	ETHTOOL_A_RINGS_UNSPEC = 0,
+	ETHTOOL_A_RINGS_HEADER = 1,
+	ETHTOOL_A_RINGS_RX_MAX = 2,
+	ETHTOOL_A_RINGS_RX_MINI_MAX = 3,
+	ETHTOOL_A_RINGS_RX_JUMBO_MAX = 4,
+	ETHTOOL_A_RINGS_TX_MAX = 5,
+	ETHTOOL_A_RINGS_RX = 6,
+	ETHTOOL_A_RINGS_RX_MINI = 7,
+	ETHTOOL_A_RINGS_RX_JUMBO = 8,
+	ETHTOOL_A_RINGS_TX = 9,
+	ETHTOOL_A_RINGS_RX_BUF_LEN = 10,
+	ETHTOOL_A_RINGS_TCP_DATA_SPLIT = 11,
+	ETHTOOL_A_RINGS_CQE_SIZE = 12,
+	ETHTOOL_A_RINGS_TX_PUSH = 13,
+	ETHTOOL_A_RINGS_RX_PUSH = 14,
+	ETHTOOL_A_RINGS_TX_PUSH_BUF_LEN = 15,
+	ETHTOOL_A_RINGS_TX_PUSH_BUF_LEN_MAX = 16,
+	__ETHTOOL_A_RINGS_CNT = 17,
+	ETHTOOL_A_RINGS_MAX = 16,
+};
+
+enum ethtool_supported_ring_param {
+	ETHTOOL_RING_USE_RX_BUF_LEN = 1,
+	ETHTOOL_RING_USE_CQE_SIZE = 2,
+	ETHTOOL_RING_USE_TX_PUSH = 4,
+	ETHTOOL_RING_USE_RX_PUSH = 8,
+	ETHTOOL_RING_USE_TX_PUSH_BUF_LEN = 16,
+};
+
+struct rings_reply_data {
+	struct ethnl_reply_data base;
+	struct ethtool_ringparam ringparam;
+	struct kernel_ethtool_ringparam kernel_ringparam;
+	u32 supported_ring_params;
+};
+
+enum {
+	ETHTOOL_A_CHANNELS_UNSPEC = 0,
+	ETHTOOL_A_CHANNELS_HEADER = 1,
+	ETHTOOL_A_CHANNELS_RX_MAX = 2,
+	ETHTOOL_A_CHANNELS_TX_MAX = 3,
+	ETHTOOL_A_CHANNELS_OTHER_MAX = 4,
+	ETHTOOL_A_CHANNELS_COMBINED_MAX = 5,
+	ETHTOOL_A_CHANNELS_RX_COUNT = 6,
+	ETHTOOL_A_CHANNELS_TX_COUNT = 7,
+	ETHTOOL_A_CHANNELS_OTHER_COUNT = 8,
+	ETHTOOL_A_CHANNELS_COMBINED_COUNT = 9,
+	__ETHTOOL_A_CHANNELS_CNT = 10,
+	ETHTOOL_A_CHANNELS_MAX = 9,
+};
+
+struct channels_reply_data {
+	struct ethnl_reply_data base;
+	struct ethtool_channels channels;
+};
+
+enum {
+	ETHTOOL_A_COALESCE_UNSPEC = 0,
+	ETHTOOL_A_COALESCE_HEADER = 1,
+	ETHTOOL_A_COALESCE_RX_USECS = 2,
+	ETHTOOL_A_COALESCE_RX_MAX_FRAMES = 3,
+	ETHTOOL_A_COALESCE_RX_USECS_IRQ = 4,
+	ETHTOOL_A_COALESCE_RX_MAX_FRAMES_IRQ = 5,
+	ETHTOOL_A_COALESCE_TX_USECS = 6,
+	ETHTOOL_A_COALESCE_TX_MAX_FRAMES = 7,
+	ETHTOOL_A_COALESCE_TX_USECS_IRQ = 8,
+	ETHTOOL_A_COALESCE_TX_MAX_FRAMES_IRQ = 9,
+	ETHTOOL_A_COALESCE_STATS_BLOCK_USECS = 10,
+	ETHTOOL_A_COALESCE_USE_ADAPTIVE_RX = 11,
+	ETHTOOL_A_COALESCE_USE_ADAPTIVE_TX = 12,
+	ETHTOOL_A_COALESCE_PKT_RATE_LOW = 13,
+	ETHTOOL_A_COALESCE_RX_USECS_LOW = 14,
+	ETHTOOL_A_COALESCE_RX_MAX_FRAMES_LOW = 15,
+	ETHTOOL_A_COALESCE_TX_USECS_LOW = 16,
+	ETHTOOL_A_COALESCE_TX_MAX_FRAMES_LOW = 17,
+	ETHTOOL_A_COALESCE_PKT_RATE_HIGH = 18,
+	ETHTOOL_A_COALESCE_RX_USECS_HIGH = 19,
+	ETHTOOL_A_COALESCE_RX_MAX_FRAMES_HIGH = 20,
+	ETHTOOL_A_COALESCE_TX_USECS_HIGH = 21,
+	ETHTOOL_A_COALESCE_TX_MAX_FRAMES_HIGH = 22,
+	ETHTOOL_A_COALESCE_RATE_SAMPLE_INTERVAL = 23,
+	ETHTOOL_A_COALESCE_USE_CQE_MODE_TX = 24,
+	ETHTOOL_A_COALESCE_USE_CQE_MODE_RX = 25,
+	ETHTOOL_A_COALESCE_TX_AGGR_MAX_BYTES = 26,
+	ETHTOOL_A_COALESCE_TX_AGGR_MAX_FRAMES = 27,
+	ETHTOOL_A_COALESCE_TX_AGGR_TIME_USECS = 28,
+	__ETHTOOL_A_COALESCE_CNT = 29,
+	ETHTOOL_A_COALESCE_MAX = 28,
+};
+
+struct coalesce_reply_data {
+	struct ethnl_reply_data base;
+	struct ethtool_coalesce coalesce;
+	struct kernel_ethtool_coalesce kernel_coalesce;
+	u32 supported_params;
+};
+
+enum {
+	ETHTOOL_A_PAUSE_UNSPEC = 0,
+	ETHTOOL_A_PAUSE_HEADER = 1,
+	ETHTOOL_A_PAUSE_AUTONEG = 2,
+	ETHTOOL_A_PAUSE_RX = 3,
+	ETHTOOL_A_PAUSE_TX = 4,
+	ETHTOOL_A_PAUSE_STATS = 5,
+	ETHTOOL_A_PAUSE_STATS_SRC = 6,
+	__ETHTOOL_A_PAUSE_CNT = 7,
+	ETHTOOL_A_PAUSE_MAX = 6,
+};
+
+enum {
+	ETHTOOL_A_PAUSE_STAT_UNSPEC = 0,
+	ETHTOOL_A_PAUSE_STAT_PAD = 1,
+	ETHTOOL_A_PAUSE_STAT_TX_FRAMES = 2,
+	ETHTOOL_A_PAUSE_STAT_RX_FRAMES = 3,
+	__ETHTOOL_A_PAUSE_STAT_CNT = 4,
+	ETHTOOL_A_PAUSE_STAT_MAX = 3,
+};
+
+struct pause_req_info {
+	struct ethnl_req_info base;
+	enum ethtool_mac_stats_src src;
+};
+
+struct pause_reply_data {
+	struct ethnl_reply_data base;
+	struct ethtool_pauseparam pauseparam;
+	struct ethtool_pause_stats pausestat;
+};
+
+enum {
+	ETHTOOL_A_EEE_UNSPEC = 0,
+	ETHTOOL_A_EEE_HEADER = 1,
+	ETHTOOL_A_EEE_MODES_OURS = 2,
+	ETHTOOL_A_EEE_MODES_PEER = 3,
+	ETHTOOL_A_EEE_ACTIVE = 4,
+	ETHTOOL_A_EEE_ENABLED = 5,
+	ETHTOOL_A_EEE_TX_LPI_ENABLED = 6,
+	ETHTOOL_A_EEE_TX_LPI_TIMER = 7,
+	__ETHTOOL_A_EEE_CNT = 8,
+	ETHTOOL_A_EEE_MAX = 7,
+};
+
+struct eee_reply_data {
+	struct ethnl_reply_data base;
+	struct ethtool_eee eee;
+};
+
+enum {
+	ETHTOOL_A_TSINFO_UNSPEC = 0,
+	ETHTOOL_A_TSINFO_HEADER = 1,
+	ETHTOOL_A_TSINFO_TIMESTAMPING = 2,
+	ETHTOOL_A_TSINFO_TX_TYPES = 3,
+	ETHTOOL_A_TSINFO_RX_FILTERS = 4,
+	ETHTOOL_A_TSINFO_PHC_INDEX = 5,
+	__ETHTOOL_A_TSINFO_CNT = 6,
+	ETHTOOL_A_TSINFO_MAX = 5,
+};
+
+struct tsinfo_reply_data {
+	struct ethnl_reply_data base;
+	struct ethtool_ts_info ts_info;
+};
+
+enum {
+	ETHTOOL_A_CABLE_TEST_UNSPEC = 0,
+	ETHTOOL_A_CABLE_TEST_HEADER = 1,
+	__ETHTOOL_A_CABLE_TEST_CNT = 2,
+	ETHTOOL_A_CABLE_TEST_MAX = 1,
+};
+
+enum {
+	ETHTOOL_A_CABLE_TEST_NTF_UNSPEC = 0,
+	ETHTOOL_A_CABLE_TEST_NTF_HEADER = 1,
+	ETHTOOL_A_CABLE_TEST_NTF_STATUS = 2,
+	ETHTOOL_A_CABLE_TEST_NTF_NEST = 3,
+	__ETHTOOL_A_CABLE_TEST_NTF_CNT = 4,
+	ETHTOOL_A_CABLE_TEST_NTF_MAX = 3,
+};
+
+enum {
+	ETHTOOL_A_CABLE_TEST_NTF_STATUS_UNSPEC = 0,
+	ETHTOOL_A_CABLE_TEST_NTF_STATUS_STARTED = 1,
+	ETHTOOL_A_CABLE_TEST_NTF_STATUS_COMPLETED = 2,
+};
+
+enum {
+	ETHTOOL_A_CABLE_NEST_UNSPEC = 0,
+	ETHTOOL_A_CABLE_NEST_RESULT = 1,
+	ETHTOOL_A_CABLE_NEST_FAULT_LENGTH = 2,
+	__ETHTOOL_A_CABLE_NEST_CNT = 3,
+	ETHTOOL_A_CABLE_NEST_MAX = 2,
+};
+
+enum {
+	ETHTOOL_A_CABLE_RESULT_UNSPEC = 0,
+	ETHTOOL_A_CABLE_RESULT_PAIR = 1,
+	ETHTOOL_A_CABLE_RESULT_CODE = 2,
+	__ETHTOOL_A_CABLE_RESULT_CNT = 3,
+	ETHTOOL_A_CABLE_RESULT_MAX = 2,
+};
+
+enum {
+	ETHTOOL_A_CABLE_FAULT_LENGTH_UNSPEC = 0,
+	ETHTOOL_A_CABLE_FAULT_LENGTH_PAIR = 1,
+	ETHTOOL_A_CABLE_FAULT_LENGTH_CM = 2,
+	__ETHTOOL_A_CABLE_FAULT_LENGTH_CNT = 3,
+	ETHTOOL_A_CABLE_FAULT_LENGTH_MAX = 2,
+};
+
+enum {
+	ETHTOOL_A_CABLE_TEST_TDR_UNSPEC = 0,
+	ETHTOOL_A_CABLE_TEST_TDR_HEADER = 1,
+	ETHTOOL_A_CABLE_TEST_TDR_CFG = 2,
+	__ETHTOOL_A_CABLE_TEST_TDR_CNT = 3,
+	ETHTOOL_A_CABLE_TEST_TDR_MAX = 2,
+};
+
+enum {
+	ETHTOOL_A_CABLE_TDR_NEST_UNSPEC = 0,
+	ETHTOOL_A_CABLE_TDR_NEST_STEP = 1,
+	ETHTOOL_A_CABLE_TDR_NEST_AMPLITUDE = 2,
+	ETHTOOL_A_CABLE_TDR_NEST_PULSE = 3,
+	__ETHTOOL_A_CABLE_TDR_NEST_CNT = 4,
+	ETHTOOL_A_CABLE_TDR_NEST_MAX = 3,
+};
+
+enum {
+	ETHTOOL_A_CABLE_AMPLITUDE_UNSPEC = 0,
+	ETHTOOL_A_CABLE_AMPLITUDE_PAIR = 1,
+	ETHTOOL_A_CABLE_AMPLITUDE_mV = 2,
+	__ETHTOOL_A_CABLE_AMPLITUDE_CNT = 3,
+	ETHTOOL_A_CABLE_AMPLITUDE_MAX = 2,
+};
+
+enum {
+	ETHTOOL_A_CABLE_PULSE_UNSPEC = 0,
+	ETHTOOL_A_CABLE_PULSE_mV = 1,
+	__ETHTOOL_A_CABLE_PULSE_CNT = 2,
+	ETHTOOL_A_CABLE_PULSE_MAX = 1,
+};
+
+enum {
+	ETHTOOL_A_CABLE_STEP_UNSPEC = 0,
+	ETHTOOL_A_CABLE_STEP_FIRST_DISTANCE = 1,
+	ETHTOOL_A_CABLE_STEP_LAST_DISTANCE = 2,
+	ETHTOOL_A_CABLE_STEP_STEP_DISTANCE = 3,
+	__ETHTOOL_A_CABLE_STEP_CNT = 4,
+	ETHTOOL_A_CABLE_STEP_MAX = 3,
+};
+
+enum {
+	ETHTOOL_A_CABLE_TEST_TDR_CFG_UNSPEC = 0,
+	ETHTOOL_A_CABLE_TEST_TDR_CFG_FIRST = 1,
+	ETHTOOL_A_CABLE_TEST_TDR_CFG_LAST = 2,
+	ETHTOOL_A_CABLE_TEST_TDR_CFG_STEP = 3,
+	ETHTOOL_A_CABLE_TEST_TDR_CFG_PAIR = 4,
+	__ETHTOOL_A_CABLE_TEST_TDR_CFG_CNT = 5,
+	ETHTOOL_A_CABLE_TEST_TDR_CFG_MAX = 4,
+};
+
+enum {
+	ETHTOOL_A_CABLE_PAIR_A = 0,
+	ETHTOOL_A_CABLE_PAIR_B = 1,
+	ETHTOOL_A_CABLE_PAIR_C = 2,
+	ETHTOOL_A_CABLE_PAIR_D = 3,
+};
+
+enum {
+	ETHTOOL_A_TUNNEL_INFO_UNSPEC = 0,
+	ETHTOOL_A_TUNNEL_INFO_HEADER = 1,
+	ETHTOOL_A_TUNNEL_INFO_UDP_PORTS = 2,
+	__ETHTOOL_A_TUNNEL_INFO_CNT = 3,
+	ETHTOOL_A_TUNNEL_INFO_MAX = 2,
+};
+
+enum udp_tunnel_nic_info_flags {
+	UDP_TUNNEL_NIC_INFO_MAY_SLEEP = 1,
+	UDP_TUNNEL_NIC_INFO_OPEN_ONLY = 2,
+	UDP_TUNNEL_NIC_INFO_IPV4_ONLY = 4,
+	UDP_TUNNEL_NIC_INFO_STATIC_IANA_VXLAN = 8,
+};
+
+enum {
+	ETHTOOL_UDP_TUNNEL_TYPE_VXLAN = 0,
+	ETHTOOL_UDP_TUNNEL_TYPE_GENEVE = 1,
+	ETHTOOL_UDP_TUNNEL_TYPE_VXLAN_GPE = 2,
+	__ETHTOOL_UDP_TUNNEL_TYPE_CNT = 3,
+};
+
+enum {
+	ETHTOOL_A_TUNNEL_UDP_UNSPEC = 0,
+	ETHTOOL_A_TUNNEL_UDP_TABLE = 1,
+	__ETHTOOL_A_TUNNEL_UDP_CNT = 2,
+	ETHTOOL_A_TUNNEL_UDP_MAX = 1,
+};
+
+enum {
+	ETHTOOL_A_TUNNEL_UDP_TABLE_UNSPEC = 0,
+	ETHTOOL_A_TUNNEL_UDP_TABLE_SIZE = 1,
+	ETHTOOL_A_TUNNEL_UDP_TABLE_TYPES = 2,
+	ETHTOOL_A_TUNNEL_UDP_TABLE_ENTRY = 3,
+	__ETHTOOL_A_TUNNEL_UDP_TABLE_CNT = 4,
+	ETHTOOL_A_TUNNEL_UDP_TABLE_MAX = 3,
+};
+
+enum {
+	ETHTOOL_A_TUNNEL_UDP_ENTRY_UNSPEC = 0,
+	ETHTOOL_A_TUNNEL_UDP_ENTRY_PORT = 1,
+	ETHTOOL_A_TUNNEL_UDP_ENTRY_TYPE = 2,
+	__ETHTOOL_A_TUNNEL_UDP_ENTRY_CNT = 3,
+	ETHTOOL_A_TUNNEL_UDP_ENTRY_MAX = 2,
+};
+
+struct ethnl_tunnel_info_dump_ctx {
+	struct ethnl_req_info req_info;
+	unsigned long ifindex;
+};
+
+enum {
+	ETHTOOL_A_FEC_UNSPEC = 0,
+	ETHTOOL_A_FEC_HEADER = 1,
+	ETHTOOL_A_FEC_MODES = 2,
+	ETHTOOL_A_FEC_AUTO = 3,
+	ETHTOOL_A_FEC_ACTIVE = 4,
+	ETHTOOL_A_FEC_STATS = 5,
+	__ETHTOOL_A_FEC_CNT = 6,
+	ETHTOOL_A_FEC_MAX = 5,
+};
+
+enum {
+	ETHTOOL_A_FEC_STAT_UNSPEC = 0,
+	ETHTOOL_A_FEC_STAT_PAD = 1,
+	ETHTOOL_A_FEC_STAT_CORRECTED = 2,
+	ETHTOOL_A_FEC_STAT_UNCORR = 3,
+	ETHTOOL_A_FEC_STAT_CORR_BITS = 4,
+	__ETHTOOL_A_FEC_STAT_CNT = 5,
+	ETHTOOL_A_FEC_STAT_MAX = 4,
+};
+
+struct fec_stat_grp {
+	u64 stats[9];
+	u8 cnt;
+};
+
+struct fec_reply_data {
+	struct ethnl_reply_data base;
+	unsigned long fec_link_modes[2];
+	u32 active_fec;
+	u8 fec_auto;
+	struct fec_stat_grp corr;
+	struct fec_stat_grp uncorr;
+	struct fec_stat_grp corr_bits;
+};
+
+enum {
+	ETHTOOL_A_MODULE_EEPROM_UNSPEC = 0,
+	ETHTOOL_A_MODULE_EEPROM_HEADER = 1,
+	ETHTOOL_A_MODULE_EEPROM_OFFSET = 2,
+	ETHTOOL_A_MODULE_EEPROM_LENGTH = 3,
+	ETHTOOL_A_MODULE_EEPROM_PAGE = 4,
+	ETHTOOL_A_MODULE_EEPROM_BANK = 5,
+	ETHTOOL_A_MODULE_EEPROM_I2C_ADDRESS = 6,
+	ETHTOOL_A_MODULE_EEPROM_DATA = 7,
+	__ETHTOOL_A_MODULE_EEPROM_CNT = 8,
+	ETHTOOL_A_MODULE_EEPROM_MAX = 7,
+};
+
+struct eeprom_req_info {
+	struct ethnl_req_info base;
+	u32 offset;
+	u32 length;
+	u8 page;
+	u8 bank;
+	u8 i2c_address;
+};
+
+struct eeprom_reply_data {
+	struct ethnl_reply_data base;
+	u32 length;
+	u8 *data;
+};
+
+enum {
+	ETHTOOL_STATS_ETH_PHY = 0,
+	ETHTOOL_STATS_ETH_MAC = 1,
+	ETHTOOL_STATS_ETH_CTRL = 2,
+	ETHTOOL_STATS_RMON = 3,
+	__ETHTOOL_STATS_CNT = 4,
+};
+
+enum {
+	ETHTOOL_A_STATS_UNSPEC = 0,
+	ETHTOOL_A_STATS_PAD = 1,
+	ETHTOOL_A_STATS_HEADER = 2,
+	ETHTOOL_A_STATS_GROUPS = 3,
+	ETHTOOL_A_STATS_GRP = 4,
+	ETHTOOL_A_STATS_SRC = 5,
+	__ETHTOOL_A_STATS_CNT = 6,
+	ETHTOOL_A_STATS_MAX = 5,
+};
+
+enum {
+	ETHTOOL_A_STATS_GRP_UNSPEC = 0,
+	ETHTOOL_A_STATS_GRP_PAD = 1,
+	ETHTOOL_A_STATS_GRP_ID = 2,
+	ETHTOOL_A_STATS_GRP_SS_ID = 3,
+	ETHTOOL_A_STATS_GRP_STAT = 4,
+	ETHTOOL_A_STATS_GRP_HIST_RX = 5,
+	ETHTOOL_A_STATS_GRP_HIST_TX = 6,
+	ETHTOOL_A_STATS_GRP_HIST_BKT_LOW = 7,
+	ETHTOOL_A_STATS_GRP_HIST_BKT_HI = 8,
+	ETHTOOL_A_STATS_GRP_HIST_VAL = 9,
+	__ETHTOOL_A_STATS_GRP_CNT = 10,
+	ETHTOOL_A_STATS_GRP_MAX = 9,
+};
+
+enum {
+	ETHTOOL_A_STATS_ETH_PHY_5_SYM_ERR = 0,
+	__ETHTOOL_A_STATS_ETH_PHY_CNT = 1,
+	ETHTOOL_A_STATS_ETH_PHY_MAX = 0,
+};
+
+enum {
+	ETHTOOL_A_STATS_ETH_MAC_2_TX_PKT = 0,
+	ETHTOOL_A_STATS_ETH_MAC_3_SINGLE_COL = 1,
+	ETHTOOL_A_STATS_ETH_MAC_4_MULTI_COL = 2,
+	ETHTOOL_A_STATS_ETH_MAC_5_RX_PKT = 3,
+	ETHTOOL_A_STATS_ETH_MAC_6_FCS_ERR = 4,
+	ETHTOOL_A_STATS_ETH_MAC_7_ALIGN_ERR = 5,
+	ETHTOOL_A_STATS_ETH_MAC_8_TX_BYTES = 6,
+	ETHTOOL_A_STATS_ETH_MAC_9_TX_DEFER = 7,
+	ETHTOOL_A_STATS_ETH_MAC_10_LATE_COL = 8,
+	ETHTOOL_A_STATS_ETH_MAC_11_XS_COL = 9,
+	ETHTOOL_A_STATS_ETH_MAC_12_TX_INT_ERR = 10,
+	ETHTOOL_A_STATS_ETH_MAC_13_CS_ERR = 11,
+	ETHTOOL_A_STATS_ETH_MAC_14_RX_BYTES = 12,
+	ETHTOOL_A_STATS_ETH_MAC_15_RX_INT_ERR = 13,
+	ETHTOOL_A_STATS_ETH_MAC_18_TX_MCAST = 14,
+	ETHTOOL_A_STATS_ETH_MAC_19_TX_BCAST = 15,
+	ETHTOOL_A_STATS_ETH_MAC_20_XS_DEFER = 16,
+	ETHTOOL_A_STATS_ETH_MAC_21_RX_MCAST = 17,
+	ETHTOOL_A_STATS_ETH_MAC_22_RX_BCAST = 18,
+	ETHTOOL_A_STATS_ETH_MAC_23_IR_LEN_ERR = 19,
+	ETHTOOL_A_STATS_ETH_MAC_24_OOR_LEN = 20,
+	ETHTOOL_A_STATS_ETH_MAC_25_TOO_LONG_ERR = 21,
+	__ETHTOOL_A_STATS_ETH_MAC_CNT = 22,
+	ETHTOOL_A_STATS_ETH_MAC_MAX = 21,
+};
+
+enum {
+	ETHTOOL_A_STATS_ETH_CTRL_3_TX = 0,
+	ETHTOOL_A_STATS_ETH_CTRL_4_RX = 1,
+	ETHTOOL_A_STATS_ETH_CTRL_5_RX_UNSUP = 2,
+	__ETHTOOL_A_STATS_ETH_CTRL_CNT = 3,
+	ETHTOOL_A_STATS_ETH_CTRL_MAX = 2,
+};
+
+enum {
+	ETHTOOL_A_STATS_RMON_UNDERSIZE = 0,
+	ETHTOOL_A_STATS_RMON_OVERSIZE = 1,
+	ETHTOOL_A_STATS_RMON_FRAG = 2,
+	ETHTOOL_A_STATS_RMON_JABBER = 3,
+	__ETHTOOL_A_STATS_RMON_CNT = 4,
+	ETHTOOL_A_STATS_RMON_MAX = 3,
+};
+
+struct stats_req_info {
+	struct ethnl_req_info base;
+	unsigned long stat_mask[1];
+	enum ethtool_mac_stats_src src;
+};
+
+struct stats_reply_data {
+	struct ethnl_reply_data base;
+	union {
+		struct {
+			struct ethtool_eth_phy_stats phy_stats;
+			struct ethtool_eth_mac_stats mac_stats;
+			struct ethtool_eth_ctrl_stats ctrl_stats;
+			struct ethtool_rmon_stats rmon_stats;
+		};
+		struct {
+			struct ethtool_eth_phy_stats phy_stats;
+			struct ethtool_eth_mac_stats mac_stats;
+			struct ethtool_eth_ctrl_stats ctrl_stats;
+			struct ethtool_rmon_stats rmon_stats;
+		} stats;
+	};
+	const struct ethtool_rmon_hist_range *rmon_ranges;
+};
+
+enum {
+	ETHTOOL_A_PHC_VCLOCKS_UNSPEC = 0,
+	ETHTOOL_A_PHC_VCLOCKS_HEADER = 1,
+	ETHTOOL_A_PHC_VCLOCKS_NUM = 2,
+	ETHTOOL_A_PHC_VCLOCKS_INDEX = 3,
+	__ETHTOOL_A_PHC_VCLOCKS_CNT = 4,
+	ETHTOOL_A_PHC_VCLOCKS_MAX = 3,
+};
+
+struct phc_vclocks_reply_data {
+	struct ethnl_reply_data base;
+	int num;
+	int *index;
+};
+
+enum {
+	ETHTOOL_A_MM_STAT_UNSPEC = 0,
+	ETHTOOL_A_MM_STAT_PAD = 1,
+	ETHTOOL_A_MM_STAT_REASSEMBLY_ERRORS = 2,
+	ETHTOOL_A_MM_STAT_SMD_ERRORS = 3,
+	ETHTOOL_A_MM_STAT_REASSEMBLY_OK = 4,
+	ETHTOOL_A_MM_STAT_RX_FRAG_COUNT = 5,
+	ETHTOOL_A_MM_STAT_TX_FRAG_COUNT = 6,
+	ETHTOOL_A_MM_STAT_HOLD_COUNT = 7,
+	__ETHTOOL_A_MM_STAT_CNT = 8,
+	ETHTOOL_A_MM_STAT_MAX = 7,
+};
+
+enum {
+	ETHTOOL_A_MM_UNSPEC = 0,
+	ETHTOOL_A_MM_HEADER = 1,
+	ETHTOOL_A_MM_PMAC_ENABLED = 2,
+	ETHTOOL_A_MM_TX_ENABLED = 3,
+	ETHTOOL_A_MM_TX_ACTIVE = 4,
+	ETHTOOL_A_MM_TX_MIN_FRAG_SIZE = 5,
+	ETHTOOL_A_MM_RX_MIN_FRAG_SIZE = 6,
+	ETHTOOL_A_MM_VERIFY_ENABLED = 7,
+	ETHTOOL_A_MM_VERIFY_STATUS = 8,
+	ETHTOOL_A_MM_VERIFY_TIME = 9,
+	ETHTOOL_A_MM_MAX_VERIFY_TIME = 10,
+	ETHTOOL_A_MM_STATS = 11,
+	__ETHTOOL_A_MM_CNT = 12,
+	ETHTOOL_A_MM_MAX = 11,
+};
+
+struct mm_reply_data {
+	struct ethnl_reply_data base;
+	struct ethtool_mm_state state;
+	struct ethtool_mm_stats stats;
+};
+
+enum {
+	ETHTOOL_A_MODULE_UNSPEC = 0,
+	ETHTOOL_A_MODULE_HEADER = 1,
+	ETHTOOL_A_MODULE_POWER_MODE_POLICY = 2,
+	ETHTOOL_A_MODULE_POWER_MODE = 3,
+	__ETHTOOL_A_MODULE_CNT = 4,
+	ETHTOOL_A_MODULE_MAX = 3,
+};
+
+struct module_reply_data {
+	struct ethnl_reply_data base;
+	struct ethtool_module_power_mode_params power;
+};
+
+enum ethtool_podl_pse_admin_state {
+	ETHTOOL_PODL_PSE_ADMIN_STATE_UNKNOWN = 1,
+	ETHTOOL_PODL_PSE_ADMIN_STATE_DISABLED = 2,
+	ETHTOOL_PODL_PSE_ADMIN_STATE_ENABLED = 3,
+};
+
+enum ethtool_podl_pse_pw_d_status {
+	ETHTOOL_PODL_PSE_PW_D_STATUS_UNKNOWN = 1,
+	ETHTOOL_PODL_PSE_PW_D_STATUS_DISABLED = 2,
+	ETHTOOL_PODL_PSE_PW_D_STATUS_SEARCHING = 3,
+	ETHTOOL_PODL_PSE_PW_D_STATUS_DELIVERING = 4,
+	ETHTOOL_PODL_PSE_PW_D_STATUS_SLEEP = 5,
+	ETHTOOL_PODL_PSE_PW_D_STATUS_IDLE = 6,
+	ETHTOOL_PODL_PSE_PW_D_STATUS_ERROR = 7,
+};
+
+enum {
+	ETHTOOL_A_PSE_UNSPEC = 0,
+	ETHTOOL_A_PSE_HEADER = 1,
+	ETHTOOL_A_PODL_PSE_ADMIN_STATE = 2,
+	ETHTOOL_A_PODL_PSE_ADMIN_CONTROL = 3,
+	ETHTOOL_A_PODL_PSE_PW_D_STATUS = 4,
+	__ETHTOOL_A_PSE_CNT = 5,
+	ETHTOOL_A_PSE_MAX = 4,
+};
+
+struct pse_control_status {
+	enum ethtool_podl_pse_admin_state podl_admin_state;
+	enum ethtool_podl_pse_pw_d_status podl_pw_status;
+};
+
+struct pse_reply_data {
+	struct ethnl_reply_data base;
+	struct pse_control_status status;
+};
+
+struct pse_control_config {
+	enum ethtool_podl_pse_admin_state admin_cotrol;
+};
+
+enum {
+	ETHTOOL_A_PLCA_UNSPEC = 0,
+	ETHTOOL_A_PLCA_HEADER = 1,
+	ETHTOOL_A_PLCA_VERSION = 2,
+	ETHTOOL_A_PLCA_ENABLED = 3,
+	ETHTOOL_A_PLCA_STATUS = 4,
+	ETHTOOL_A_PLCA_NODE_CNT = 5,
+	ETHTOOL_A_PLCA_NODE_ID = 6,
+	ETHTOOL_A_PLCA_TO_TMR = 7,
+	ETHTOOL_A_PLCA_BURST_CNT = 8,
+	ETHTOOL_A_PLCA_BURST_TMR = 9,
+	__ETHTOOL_A_PLCA_CNT = 10,
+	ETHTOOL_A_PLCA_MAX = 9,
+};
+
+struct plca_reply_data {
+	struct ethnl_reply_data base;
+	struct phy_plca_cfg plca_cfg;
+	struct phy_plca_status plca_st;
+};
+
+struct nf_conntrack_zone {
+	u16 id;
+	u8 flags;
+	u8 dir;
+};
+
+struct nf_queue_entry;
+
+struct nf_ipv6_ops {
+	void (*route_input)(struct sk_buff *);
+	int (*fragment)(struct net *, struct sock *, struct sk_buff *, int (*)(struct net *, struct sock *, struct sk_buff *));
+	int (*reroute)(struct sk_buff *, const struct nf_queue_entry *);
+	u64 android_kabi_reserved1;
+};
+
+struct nf_queue_entry {
+	struct list_head list;
+	struct sk_buff *skb;
+	unsigned int id;
+	unsigned int hook_index;
+	struct nf_hook_state state;
+	u16 size;
+};
+
+struct nfnl_ct_hook {
+	size_t (*build_size)(const struct nf_conn *);
+	int (*build)(struct sk_buff *, struct nf_conn *, enum ip_conntrack_info, u_int16_t, u_int16_t);
+	int (*parse)(const struct nlattr *, struct nf_conn *);
+	int (*attach_expect)(const struct nlattr *, struct nf_conn *, u32, u32);
+	void (*seq_adjust)(struct sk_buff *, struct nf_conn *, enum ip_conntrack_info, s32);
+	u64 android_kabi_reserved1;
+};
+
+struct nf_ct_hook {
+	int (*update)(struct net *, struct sk_buff *);
+	void (*destroy)(struct nf_conntrack *);
+	bool (*get_tuple_skb)(struct nf_conntrack_tuple *, const struct sk_buff *);
+	void (*attach)(struct sk_buff *, const struct sk_buff *);
+	void (*set_closing)(struct nf_conntrack *);
+	int (*confirm)(struct sk_buff *);
+};
+
+struct nf_defrag_hook {
+	struct module *owner;
+	int (*enable)(struct net *);
+	void (*disable)(struct net *);
+};
+
+enum nf_nat_manip_type {
+	NF_NAT_MANIP_SRC = 0,
+	NF_NAT_MANIP_DST = 1,
+};
+
+struct nf_nat_hook {
+	int (*parse_nat_setup)(struct nf_conn *, enum nf_nat_manip_type, const struct nlattr *);
+	void (*decode_session)(struct sk_buff *, struct flowi *);
+	unsigned int (*manip_pkt)(struct sk_buff *, struct nf_conn *, enum nf_nat_manip_type, enum ip_conntrack_dir);
+	void (*remove_nat_bysrc)(struct nf_conn *);
+	u64 android_kabi_reserved1;
+};
+
+struct nf_hook_entries_rcu_head {
+	struct callback_head head;
+	void *allocation;
+};
+
+struct nf_loginfo {
+	u_int8_t type;
+	union {
+		struct {
+			u_int32_t copy_len;
+			u_int16_t group;
+			u_int16_t qthreshold;
+			u_int16_t flags;
+		} ulog;
+		struct {
+			u_int8_t level;
+			u_int8_t logflags;
+		} log;
+	} u;
+};
+
+struct nf_log_buf {
+	unsigned int count;
+	char buf[1020];
+};
+
+struct nf_queue_handler {
+	int (*outfn)(struct nf_queue_entry *, unsigned int);
+	void (*nf_hook_drop)(struct net *);
+};
+
+struct ip_rt_info {
+	__be32 daddr;
+	__be32 saddr;
+	u_int8_t tos;
+	u_int32_t mark;
+};
+
+struct ip6_rt_info {
+	struct in6_addr daddr;
+	struct in6_addr saddr;
+	u_int32_t mark;
+};
+
+struct nf_sockopt_ops {
+	struct list_head list;
+	u_int8_t pf;
+	int set_optmin;
+	int set_optmax;
+	int (*set)(struct sock *, int, sockptr_t, unsigned int);
+	int get_optmin;
+	int get_optmax;
+	int (*get)(struct sock *, int, void __attribute__((btf_type_tag("user"))) *, int *);
+	struct module *owner;
+	u64 android_kabi_reserved1;
+};
+
+enum nf_ip_hook_priorities {
+	NF_IP_PRI_FIRST = -2147483648,
+	NF_IP_PRI_RAW_BEFORE_DEFRAG = -450,
+	NF_IP_PRI_CONNTRACK_DEFRAG = -400,
+	NF_IP_PRI_RAW = -300,
+	NF_IP_PRI_SELINUX_FIRST = -225,
+	NF_IP_PRI_CONNTRACK = -200,
+	NF_IP_PRI_MANGLE = -150,
+	NF_IP_PRI_NAT_DST = -100,
+	NF_IP_PRI_FILTER = 0,
+	NF_IP_PRI_SECURITY = 50,
+	NF_IP_PRI_NAT_SRC = 100,
+	NF_IP_PRI_SELINUX_LAST = 225,
+	NF_IP_PRI_CONNTRACK_HELPER = 300,
+	NF_IP_PRI_CONNTRACK_CONFIRM = 2147483647,
+	NF_IP_PRI_LAST = 2147483647,
+};
+
+struct bpf_nf_link {
+	struct bpf_link link;
+	struct nf_hook_ops hook_ops;
+	struct net *net;
+	u32 dead;
+	const struct nf_defrag_hook *defrag_hook;
+};
+
+enum nfnl_abort_action {
+	NFNL_ABORT_NONE = 0,
+	NFNL_ABORT_AUTOLOAD = 1,
+	NFNL_ABORT_VALIDATE = 2,
+};
+
+struct nfnl_callback;
+
+struct nfnetlink_subsystem {
+	const char *name;
+	__u8 subsys_id;
+	__u8 cb_count;
+	const struct nfnl_callback *cb;
+	struct module *owner;
+	int (*commit)(struct net *, struct sk_buff *);
+	int (*abort)(struct net *, struct sk_buff *, enum nfnl_abort_action);
+	bool (*valid_genid)(struct net *, u32);
+	u64 android_kabi_reserved1;
+};
+
+enum nfnl_callback_type {
+	NFNL_CB_UNSPEC = 0,
+	NFNL_CB_MUTEX = 1,
+	NFNL_CB_RCU = 2,
+	NFNL_CB_BATCH = 3,
+};
+
+struct nfnl_info;
+
+struct nfnl_callback {
+	int (*call)(struct sk_buff *, const struct nfnl_info *, const struct nlattr * const *);
+	const struct nla_policy *policy;
+	enum nfnl_callback_type type;
+	__u16 attr_count;
+	u64 android_kabi_reserved1;
+};
+
+struct nfgenmsg;
+
+struct nfnl_info {
+	struct net *net;
+	struct sock *sk;
+	const struct nlmsghdr *nlh;
+	const struct nfgenmsg *nfmsg;
+	struct netlink_ext_ack *extack;
+};
+
+struct nfgenmsg {
+	__u8 nfgen_family;
+	__u8 version;
+	__be16 res_id;
+};
+
+enum nfnl_batch_attributes {
+	NFNL_BATCH_UNSPEC = 0,
+	NFNL_BATCH_GENID = 1,
+	__NFNL_BATCH_MAX = 2,
+};
+
+enum {
+	NFNL_BATCH_FAILURE = 1,
+	NFNL_BATCH_DONE = 2,
+	NFNL_BATCH_REPLAY = 4,
+};
+
+enum nfnetlink_groups {
+	NFNLGRP_NONE = 0,
+	NFNLGRP_CONNTRACK_NEW = 1,
+	NFNLGRP_CONNTRACK_UPDATE = 2,
+	NFNLGRP_CONNTRACK_DESTROY = 3,
+	NFNLGRP_CONNTRACK_EXP_NEW = 4,
+	NFNLGRP_CONNTRACK_EXP_UPDATE = 5,
+	NFNLGRP_CONNTRACK_EXP_DESTROY = 6,
+	NFNLGRP_NFTABLES = 7,
+	NFNLGRP_ACCT_QUOTA = 8,
+	NFNLGRP_NFTRACE = 9,
+	__NFNLGRP_MAX = 10,
+};
+
+struct nfnl_err {
+	struct list_head head;
+	struct nlmsghdr *nlh;
+	int err;
+	struct netlink_ext_ack extack;
+};
+
+struct nfnl_net {
+	struct sock *nfnl;
+};
+
+enum nfqnl_attr_type {
+	NFQA_UNSPEC = 0,
+	NFQA_PACKET_HDR = 1,
+	NFQA_VERDICT_HDR = 2,
+	NFQA_MARK = 3,
+	NFQA_TIMESTAMP = 4,
+	NFQA_IFINDEX_INDEV = 5,
+	NFQA_IFINDEX_OUTDEV = 6,
+	NFQA_IFINDEX_PHYSINDEV = 7,
+	NFQA_IFINDEX_PHYSOUTDEV = 8,
+	NFQA_HWADDR = 9,
+	NFQA_PAYLOAD = 10,
+	NFQA_CT = 11,
+	NFQA_CT_INFO = 12,
+	NFQA_CAP_LEN = 13,
+	NFQA_SKB_INFO = 14,
+	NFQA_EXP = 15,
+	NFQA_UID = 16,
+	NFQA_GID = 17,
+	NFQA_SECCTX = 18,
+	NFQA_VLAN = 19,
+	NFQA_L2HDR = 20,
+	NFQA_PRIORITY = 21,
+	NFQA_CGROUP_CLASSID = 22,
+	__NFQA_MAX = 23,
+};
+
+enum nfqnl_vlan_attr {
+	NFQA_VLAN_UNSPEC = 0,
+	NFQA_VLAN_PROTO = 1,
+	NFQA_VLAN_TCI = 2,
+	__NFQA_VLAN_MAX = 3,
+};
+
+enum nfqnl_attr_config {
+	NFQA_CFG_UNSPEC = 0,
+	NFQA_CFG_CMD = 1,
+	NFQA_CFG_PARAMS = 2,
+	NFQA_CFG_QUEUE_MAXLEN = 3,
+	NFQA_CFG_MASK = 4,
+	NFQA_CFG_FLAGS = 5,
+	__NFQA_CFG_MAX = 6,
+};
+
+enum nfqnl_msg_config_cmds {
+	NFQNL_CFG_CMD_NONE = 0,
+	NFQNL_CFG_CMD_BIND = 1,
+	NFQNL_CFG_CMD_UNBIND = 2,
+	NFQNL_CFG_CMD_PF_BIND = 3,
+	NFQNL_CFG_CMD_PF_UNBIND = 4,
+};
+
+enum nfqnl_config_mode {
+	NFQNL_COPY_NONE = 0,
+	NFQNL_COPY_META = 1,
+	NFQNL_COPY_PACKET = 2,
+};
+
+enum nfqnl_msg_types {
+	NFQNL_MSG_PACKET = 0,
+	NFQNL_MSG_VERDICT = 1,
+	NFQNL_MSG_CONFIG = 2,
+	NFQNL_MSG_VERDICT_BATCH = 3,
+	NFQNL_MSG_MAX = 4,
+};
+
+enum ip_conntrack_status {
+	IPS_EXPECTED_BIT = 0,
+	IPS_EXPECTED = 1,
+	IPS_SEEN_REPLY_BIT = 1,
+	IPS_SEEN_REPLY = 2,
+	IPS_ASSURED_BIT = 2,
+	IPS_ASSURED = 4,
+	IPS_CONFIRMED_BIT = 3,
+	IPS_CONFIRMED = 8,
+	IPS_SRC_NAT_BIT = 4,
+	IPS_SRC_NAT = 16,
+	IPS_DST_NAT_BIT = 5,
+	IPS_DST_NAT = 32,
+	IPS_NAT_MASK = 48,
+	IPS_SEQ_ADJUST_BIT = 6,
+	IPS_SEQ_ADJUST = 64,
+	IPS_SRC_NAT_DONE_BIT = 7,
+	IPS_SRC_NAT_DONE = 128,
+	IPS_DST_NAT_DONE_BIT = 8,
+	IPS_DST_NAT_DONE = 256,
+	IPS_NAT_DONE_MASK = 384,
+	IPS_DYING_BIT = 9,
+	IPS_DYING = 512,
+	IPS_FIXED_TIMEOUT_BIT = 10,
+	IPS_FIXED_TIMEOUT = 1024,
+	IPS_TEMPLATE_BIT = 11,
+	IPS_TEMPLATE = 2048,
+	IPS_UNTRACKED_BIT = 12,
+	IPS_UNTRACKED = 4096,
+	IPS_NAT_CLASH_BIT = 12,
+	IPS_NAT_CLASH = 4096,
+	IPS_HELPER_BIT = 13,
+	IPS_HELPER = 8192,
+	IPS_OFFLOAD_BIT = 14,
+	IPS_OFFLOAD = 16384,
+	IPS_HW_OFFLOAD_BIT = 15,
+	IPS_HW_OFFLOAD = 32768,
+	IPS_UNCHANGEABLE_MASK = 56313,
+	__IPS_MAX_BIT = 16,
+};
+
+struct nfqnl_instance {
+	struct hlist_node hlist;
+	struct callback_head rcu;
+	u32 peer_portid;
+	unsigned int queue_maxlen;
+	unsigned int copy_range;
+	unsigned int queue_dropped;
+	unsigned int queue_user_dropped;
+	u_int16_t queue_num;
+	u_int8_t copy_mode;
+	u_int32_t flags;
+	long: 0;
+	spinlock_t lock;
+	unsigned int queue_total;
+	unsigned int id_sequence;
+	struct list_head queue_list;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct nfnl_queue_net {
+	spinlock_t instances_lock;
+	struct hlist_head instance_table[16];
+};
+
+typedef int (*nfqnl_cmpfn)(struct nf_queue_entry *, unsigned long);
+
+struct nfqnl_msg_verdict_hdr {
+	__be32 verdict;
+	__be32 id;
+};
+
+struct iter_state {
+	struct seq_net_private p;
+	unsigned int bucket;
+};
+
+struct nfqnl_msg_packet_hdr {
+	__be32 packet_id;
+	__be16 hw_protocol;
+	__u8 hook;
+} __attribute__((packed));
+
+struct nfqnl_msg_packet_hw {
+	__be16 hw_addrlen;
+	__u16 _pad;
+	__u8 hw_addr[8];
+};
+
+struct nfqnl_msg_packet_timestamp {
+	__be64 sec;
+	__be64 usec;
+};
+
+struct nfqnl_msg_config_cmd {
+	__u8 command;
+	__u8 _pad;
+	__be16 pf;
+};
+
+struct nfqnl_msg_config_params {
+	__be32 copy_range;
+	__u8 copy_mode;
+} __attribute__((packed));
+
+enum nfulnl_attr_config {
+	NFULA_CFG_UNSPEC = 0,
+	NFULA_CFG_CMD = 1,
+	NFULA_CFG_MODE = 2,
+	NFULA_CFG_NLBUFSIZ = 3,
+	NFULA_CFG_TIMEOUT = 4,
+	NFULA_CFG_QTHRESH = 5,
+	NFULA_CFG_FLAGS = 6,
+	__NFULA_CFG_MAX = 7,
+};
+
+enum nfulnl_msg_config_cmds {
+	NFULNL_CFG_CMD_NONE = 0,
+	NFULNL_CFG_CMD_BIND = 1,
+	NFULNL_CFG_CMD_UNBIND = 2,
+	NFULNL_CFG_CMD_PF_BIND = 3,
+	NFULNL_CFG_CMD_PF_UNBIND = 4,
+};
+
+enum nfulnl_msg_types {
+	NFULNL_MSG_PACKET = 0,
+	NFULNL_MSG_CONFIG = 1,
+	NFULNL_MSG_MAX = 2,
+};
+
+enum nfulnl_attr_type {
+	NFULA_UNSPEC = 0,
+	NFULA_PACKET_HDR = 1,
+	NFULA_MARK = 2,
+	NFULA_TIMESTAMP = 3,
+	NFULA_IFINDEX_INDEV = 4,
+	NFULA_IFINDEX_OUTDEV = 5,
+	NFULA_IFINDEX_PHYSINDEV = 6,
+	NFULA_IFINDEX_PHYSOUTDEV = 7,
+	NFULA_HWADDR = 8,
+	NFULA_PAYLOAD = 9,
+	NFULA_PREFIX = 10,
+	NFULA_UID = 11,
+	NFULA_SEQ = 12,
+	NFULA_SEQ_GLOBAL = 13,
+	NFULA_GID = 14,
+	NFULA_HWTYPE = 15,
+	NFULA_HWHEADER = 16,
+	NFULA_HWLEN = 17,
+	NFULA_CT = 18,
+	NFULA_CT_INFO = 19,
+	NFULA_VLAN = 20,
+	NFULA_L2HDR = 21,
+	__NFULA_MAX = 22,
+};
+
+enum nfulnl_vlan_attr {
+	NFULA_VLAN_UNSPEC = 0,
+	NFULA_VLAN_PROTO = 1,
+	NFULA_VLAN_TCI = 2,
+	__NFULA_VLAN_MAX = 3,
+};
+
+struct nfulnl_instance {
+	struct hlist_node hlist;
+	spinlock_t lock;
+	refcount_t use;
+	unsigned int qlen;
+	struct sk_buff *skb;
+	struct timer_list timer;
+	struct net *net;
+	netns_tracker ns_tracker;
+	struct user_namespace *peer_user_ns;
+	u32 peer_portid;
+	unsigned int flushtimeout;
+	unsigned int nlbufsiz;
+	unsigned int qthreshold;
+	u_int32_t copy_range;
+	u_int32_t seq;
+	u_int16_t group_num;
+	u_int16_t flags;
+	u_int8_t copy_mode;
+	struct callback_head rcu;
+};
+
+struct nfnl_log_net {
+	spinlock_t instances_lock;
+	struct hlist_head instance_table[16];
+	atomic_t global_seq;
+};
+
+struct nfulnl_msg_packet_hdr {
+	__be16 hw_protocol;
+	__u8 hook;
+	__u8 _pad;
+};
+
+struct nfulnl_msg_packet_hw {
+	__be16 hw_addrlen;
+	__u16 _pad;
+	__u8 hw_addr[8];
+};
+
+struct nfulnl_msg_packet_timestamp {
+	__be64 sec;
+	__be64 usec;
+};
+
+struct nfulnl_msg_config_cmd {
+	__u8 command;
+};
+
+struct nfulnl_msg_config_mode {
+	__be32 copy_range;
+	__u8 copy_mode;
+	__u8 _pad;
+} __attribute__((packed));
+
+struct conntrack_gc_work {
+	struct delayed_work dwork;
+	u32 next_bucket;
+	u32 avg_timeout;
+	u32 count;
+	u32 start_time;
+	bool exiting;
+	bool early_drop;
+};
+
+struct nf_conntrack_expect_policy;
+
+struct nf_conntrack_helper {
+	struct hlist_node hnode;
+	char name[16];
+	refcount_t refcnt;
+	struct module *me;
+	const struct nf_conntrack_expect_policy *expect_policy;
+	struct nf_conntrack_tuple tuple;
+	int (*help)(struct sk_buff *, unsigned int, struct nf_conn *, enum ip_conntrack_info);
+	void (*destroy)(struct nf_conn *);
+	int (*from_nlattr)(struct nlattr *, struct nf_conn *);
+	int (*to_nlattr)(struct sk_buff *, const struct nf_conn *);
+	unsigned int expect_class_max;
+	unsigned int flags;
+	unsigned int queue_num;
+	u16 data_len;
+	char nat_mod_name[16];
+};
+
+struct nf_conntrack_expect_policy {
+	unsigned int max_expected;
+	unsigned int timeout;
+	char name[16];
+};
+
+enum ip_conntrack_events {
+	IPCT_NEW = 0,
+	IPCT_RELATED = 1,
+	IPCT_DESTROY = 2,
+	IPCT_REPLY = 3,
+	IPCT_ASSURED = 4,
+	IPCT_PROTOINFO = 5,
+	IPCT_HELPER = 6,
+	IPCT_MARK = 7,
+	IPCT_SEQADJ = 8,
+	IPCT_NATSEQADJ = 8,
+	IPCT_SECMARK = 9,
+	IPCT_LABEL = 10,
+	IPCT_SYNPROXY = 11,
+	__IPCT_MAX = 12,
+};
+
+enum nf_ct_ecache_state {
+	NFCT_ECACHE_DESTROY_FAIL = 0,
+	NFCT_ECACHE_DESTROY_SENT = 1,
+};
+
+enum ctattr_l4proto {
+	CTA_PROTO_UNSPEC = 0,
+	CTA_PROTO_NUM = 1,
+	CTA_PROTO_SRC_PORT = 2,
+	CTA_PROTO_DST_PORT = 3,
+	CTA_PROTO_ICMP_ID = 4,
+	CTA_PROTO_ICMP_TYPE = 5,
+	CTA_PROTO_ICMP_CODE = 6,
+	CTA_PROTO_ICMPV6_ID = 7,
+	CTA_PROTO_ICMPV6_TYPE = 8,
+	CTA_PROTO_ICMPV6_CODE = 9,
+	__CTA_PROTO_MAX = 10,
+};
+
+enum nf_ct_ext_id {
+	NF_CT_EXT_HELPER = 0,
+	NF_CT_EXT_NAT = 1,
+	NF_CT_EXT_SEQADJ = 2,
+	NF_CT_EXT_ACCT = 3,
+	NF_CT_EXT_ECACHE = 4,
+	NF_CT_EXT_NUM = 5,
+};
+
+enum nf_ct_helper_flags {
+	NF_CT_HELPER_F_USERSPACE = 1,
+	NF_CT_HELPER_F_CONFIGURED = 2,
+};
+
+struct nf_conntrack_l4proto;
+
+struct nf_ct_timeout {
+	__u16 l3num;
+	const struct nf_conntrack_l4proto *l4proto;
+	char data[0];
+};
+
+struct nf_conntrack_l4proto {
+	u_int8_t l4proto;
+	bool allow_clash;
+	u16 nlattr_size;
+	bool (*can_early_drop)(const struct nf_conn *);
+	int (*to_nlattr)(struct sk_buff *, struct nlattr *, struct nf_conn *, bool);
+	int (*from_nlattr)(struct nlattr **, struct nf_conn *);
+	int (*tuple_to_nlattr)(struct sk_buff *, const struct nf_conntrack_tuple *);
+	unsigned int (*nlattr_tuple_size)();
+	int (*nlattr_to_tuple)(struct nlattr **, struct nf_conntrack_tuple *, u_int32_t);
+	const struct nla_policy *nla_policy;
+	struct {
+		int (*nlattr_to_obj)(struct nlattr **, struct net *, void *);
+		int (*obj_to_nlattr)(struct sk_buff *, const void *);
+		u16 obj_size;
+		u16 nlattr_max;
+		const struct nla_policy *nla_policy;
+	} ctnl_timeout;
+	void (*print_conntrack)(struct seq_file *, struct nf_conn *);
+};
+
+struct nf_conntrack_net_ecache {
+	struct delayed_work dwork;
+	spinlock_t dying_lock;
+	struct hlist_nulls_head dying_list;
+};
+
+struct nf_conntrack_net {
+	atomic_t count;
+	unsigned int expect_count;
+	unsigned int users4;
+	unsigned int users6;
+	unsigned int users_bridge;
+	struct ctl_table_header *sysctl_header;
+	struct nf_conntrack_net_ecache ecache;
+};
+
+struct nf_conn_counter {
+	atomic64_t packets;
+	atomic64_t bytes;
+};
+
+struct nf_conn_acct {
+	struct nf_conn_counter counter[2];
+};
+
+struct nf_conn_tstamp {
+	u_int64_t start;
+	u_int64_t stop;
+};
+
+struct nf_conn_help {
+	struct nf_conntrack_helper __attribute__((btf_type_tag("rcu"))) *helper;
+	struct hlist_head expectations;
+	u8 expecting[4];
+	long: 0;
+	char data[32];
+};
+
+struct nf_conntrack_ecache {
+	unsigned long cache;
+	u16 ctmask;
+	u16 expmask;
+	u32 missed;
+	u32 portid;
+};
+
+struct nf_ct_iter_data {
+	struct net *net;
+	void *data;
+	u32 portid;
+	int report;
+};
+
+struct nf_conn_timeout {
+	struct nf_ct_timeout __attribute__((btf_type_tag("rcu"))) *timeout;
+};
+
+enum nf_ct_sysctl_index {
+	NF_SYSCTL_CT_MAX = 0,
+	NF_SYSCTL_CT_COUNT = 1,
+	NF_SYSCTL_CT_BUCKETS = 2,
+	NF_SYSCTL_CT_CHECKSUM = 3,
+	NF_SYSCTL_CT_LOG_INVALID = 4,
+	NF_SYSCTL_CT_EXPECT_MAX = 5,
+	NF_SYSCTL_CT_ACCT = 6,
+	NF_SYSCTL_CT_EVENTS = 7,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_GENERIC = 8,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_TCP_SYN_SENT = 9,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_TCP_SYN_RECV = 10,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_TCP_ESTABLISHED = 11,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_TCP_FIN_WAIT = 12,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_TCP_CLOSE_WAIT = 13,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_TCP_LAST_ACK = 14,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_TCP_TIME_WAIT = 15,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_TCP_CLOSE = 16,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_TCP_RETRANS = 17,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_TCP_UNACK = 18,
+	NF_SYSCTL_CT_PROTO_TCP_LOOSE = 19,
+	NF_SYSCTL_CT_PROTO_TCP_LIBERAL = 20,
+	NF_SYSCTL_CT_PROTO_TCP_IGNORE_INVALID_RST = 21,
+	NF_SYSCTL_CT_PROTO_TCP_MAX_RETRANS = 22,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_UDP = 23,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_UDP_STREAM = 24,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_ICMP = 25,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_ICMPV6 = 26,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_SCTP_CLOSED = 27,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_SCTP_COOKIE_WAIT = 28,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_SCTP_COOKIE_ECHOED = 29,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_SCTP_ESTABLISHED = 30,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_SCTP_SHUTDOWN_SENT = 31,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_SCTP_SHUTDOWN_RECD = 32,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_SCTP_SHUTDOWN_ACK_SENT = 33,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_SCTP_HEARTBEAT_SENT = 34,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_DCCP_REQUEST = 35,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_DCCP_RESPOND = 36,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_DCCP_PARTOPEN = 37,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_DCCP_OPEN = 38,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_DCCP_CLOSEREQ = 39,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_DCCP_CLOSING = 40,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_DCCP_TIMEWAIT = 41,
+	NF_SYSCTL_CT_PROTO_DCCP_LOOSE = 42,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_GRE = 43,
+	NF_SYSCTL_CT_PROTO_TIMEOUT_GRE_STREAM = 44,
+	__NF_SYSCTL_CT_LAST_SYSCTL = 45,
+};
+
+enum udp_conntrack {
+	UDP_CT_UNREPLIED = 0,
+	UDP_CT_REPLIED = 1,
+	UDP_CT_MAX = 2,
+};
+
+enum tcp_conntrack {
+	TCP_CONNTRACK_NONE = 0,
+	TCP_CONNTRACK_SYN_SENT = 1,
+	TCP_CONNTRACK_SYN_RECV = 2,
+	TCP_CONNTRACK_ESTABLISHED = 3,
+	TCP_CONNTRACK_FIN_WAIT = 4,
+	TCP_CONNTRACK_CLOSE_WAIT = 5,
+	TCP_CONNTRACK_LAST_ACK = 6,
+	TCP_CONNTRACK_TIME_WAIT = 7,
+	TCP_CONNTRACK_CLOSE = 8,
+	TCP_CONNTRACK_LISTEN = 9,
+	TCP_CONNTRACK_MAX = 10,
+	TCP_CONNTRACK_IGNORE = 11,
+	TCP_CONNTRACK_RETRANS = 12,
+	TCP_CONNTRACK_UNACK = 13,
+	TCP_CONNTRACK_TIMEOUT_MAX = 14,
+};
+
+enum ct_dccp_states {
+	CT_DCCP_NONE = 0,
+	CT_DCCP_REQUEST = 1,
+	CT_DCCP_RESPOND = 2,
+	CT_DCCP_PARTOPEN = 3,
+	CT_DCCP_OPEN = 4,
+	CT_DCCP_CLOSEREQ = 5,
+	CT_DCCP_CLOSING = 6,
+	CT_DCCP_TIMEWAIT = 7,
+	CT_DCCP_IGNORE = 8,
+	CT_DCCP_INVALID = 9,
+	__CT_DCCP_MAX = 10,
+};
+
+enum gre_conntrack {
+	GRE_CT_UNREPLIED = 0,
+	GRE_CT_REPLIED = 1,
+	GRE_CT_MAX = 2,
+};
+
+struct ct_iter_state {
+	struct seq_net_private p;
+	struct hlist_nulls_head *hash;
+	unsigned int htable_size;
+	unsigned int bucket;
+	u_int64_t time_now;
+};
+
+enum ip_conntrack_expect_events {
+	IPEXP_NEW = 0,
+	IPEXP_DESTROY = 1,
+};
+
+struct ct_expect_iter_state {
+	struct seq_net_private p;
+	unsigned int bucket;
+};
+
+struct nf_ct_helper_expectfn {
+	struct list_head head;
+	const char *name;
+	void (*expectfn)(struct nf_conn *, struct nf_conntrack_expect *);
+};
+
+struct nf_conntrack_nat_helper {
+	struct list_head list;
+	char mod_name[16];
+	struct module *module;
+};
+
+struct nf_ct_bridge_info {
+	struct nf_hook_ops *ops;
+	unsigned int ops_size;
+	struct module *me;
+};
+
+enum nf_ct_tcp_action {
+	NFCT_TCP_IGNORE = 0,
+	NFCT_TCP_INVALID = 1,
+	NFCT_TCP_ACCEPT = 2,
+};
+
+enum tcp_bit_set {
+	TCP_SYN_SET = 0,
+	TCP_SYNACK_SET = 1,
+	TCP_FIN_SET = 2,
+	TCP_ACK_SET = 3,
+	TCP_RST_SET = 4,
+	TCP_NONE_SET = 5,
+};
+
+enum {
+	TCP_FLAG_CWR = 32768,
+	TCP_FLAG_ECE = 16384,
+	TCP_FLAG_URG = 8192,
+	TCP_FLAG_ACK = 4096,
+	TCP_FLAG_PSH = 2048,
+	TCP_FLAG_RST = 1024,
+	TCP_FLAG_SYN = 512,
+	TCP_FLAG_FIN = 256,
+	TCP_RESERVED_BITS = 15,
+	TCP_DATA_OFFSET = 240,
+};
+
+enum ctattr_protoinfo {
+	CTA_PROTOINFO_UNSPEC = 0,
+	CTA_PROTOINFO_TCP = 1,
+	CTA_PROTOINFO_DCCP = 2,
+	CTA_PROTOINFO_SCTP = 3,
+	__CTA_PROTOINFO_MAX = 4,
+};
+
+enum ctattr_protoinfo_tcp {
+	CTA_PROTOINFO_TCP_UNSPEC = 0,
+	CTA_PROTOINFO_TCP_STATE = 1,
+	CTA_PROTOINFO_TCP_WSCALE_ORIGINAL = 2,
+	CTA_PROTOINFO_TCP_WSCALE_REPLY = 3,
+	CTA_PROTOINFO_TCP_FLAGS_ORIGINAL = 4,
+	CTA_PROTOINFO_TCP_FLAGS_REPLY = 5,
+	__CTA_PROTOINFO_TCP_MAX = 6,
+};
+
+struct nf_ct_tcp_flags {
+	__u8 flags;
+	__u8 mask;
+};
+
+struct nf_ct_seqadj {
+	u32 correction_pos;
+	s32 offset_before;
+	s32 offset_after;
+};
+
+struct nf_conn_seqadj {
+	struct nf_ct_seqadj seq[2];
+};
+
+struct tcp_sack_block_wire {
+	__be32 start_seq;
+	__be32 end_seq;
+};
+
+struct icmpv6_echo {
+	__be16 identifier;
+	__be16 sequence;
+};
+
+struct icmpv6_nd_advt {
+	__u32 reserved: 5;
+	__u32 override: 1;
+	__u32 solicited: 1;
+	__u32 router: 1;
+	__u32 reserved2: 24;
+};
+
+struct icmpv6_nd_ra {
+	__u8 hop_limit;
+	__u8 reserved: 3;
+	__u8 router_pref: 2;
+	__u8 home_agent: 1;
+	__u8 other: 1;
+	__u8 managed: 1;
+	__be16 rt_lifetime;
+};
+
+struct icmp6hdr {
+	__u8 icmp6_type;
+	__u8 icmp6_code;
+	__sum16 icmp6_cksum;
+	union {
+		__be32 un_data32[1];
+		__be16 un_data16[2];
+		__u8 un_data8[4];
+		struct icmpv6_echo u_echo;
+		struct icmpv6_nd_advt u_nd_advt;
+		struct icmpv6_nd_ra u_nd_ra;
+	} icmp6_dataun;
+};
+
+struct rd_msg {
+	struct icmp6hdr icmph;
+	struct in6_addr target;
+	struct in6_addr dest;
+	__u8 opt[0];
+};
+
+enum {
+	__ND_OPT_PREFIX_INFO_END = 0,
+	ND_OPT_SOURCE_LL_ADDR = 1,
+	ND_OPT_TARGET_LL_ADDR = 2,
+	ND_OPT_PREFIX_INFO = 3,
+	ND_OPT_REDIRECT_HDR = 4,
+	ND_OPT_MTU = 5,
+	ND_OPT_NONCE = 14,
+	__ND_OPT_ARRAY_MAX = 15,
+	ND_OPT_ROUTE_INFO = 24,
+	ND_OPT_RDNSS = 25,
+	ND_OPT_DNSSL = 31,
+	ND_OPT_6CO = 34,
+	ND_OPT_CAPTIVE_PORTAL = 37,
+	ND_OPT_PREF64 = 38,
+	__ND_OPT_MAX = 39,
+};
+
+enum retry_state {
+	STATE_CONGESTED = 0,
+	STATE_RESTART = 1,
+	STATE_DONE = 2,
+};
+
+enum ct_dccp_roles {
+	CT_DCCP_ROLE_CLIENT = 0,
+	CT_DCCP_ROLE_SERVER = 1,
+	__CT_DCCP_ROLE_MAX = 2,
+};
+
+enum dccp_pkt_type {
+	DCCP_PKT_REQUEST = 0,
+	DCCP_PKT_RESPONSE = 1,
+	DCCP_PKT_DATA = 2,
+	DCCP_PKT_ACK = 3,
+	DCCP_PKT_DATAACK = 4,
+	DCCP_PKT_CLOSEREQ = 5,
+	DCCP_PKT_CLOSE = 6,
+	DCCP_PKT_RESET = 7,
+	DCCP_PKT_SYNC = 8,
+	DCCP_PKT_SYNCACK = 9,
+	DCCP_PKT_INVALID = 10,
+};
+
+enum ctattr_protoinfo_dccp {
+	CTA_PROTOINFO_DCCP_UNSPEC = 0,
+	CTA_PROTOINFO_DCCP_STATE = 1,
+	CTA_PROTOINFO_DCCP_ROLE = 2,
+	CTA_PROTOINFO_DCCP_HANDSHAKE_SEQ = 3,
+	CTA_PROTOINFO_DCCP_PAD = 4,
+	__CTA_PROTOINFO_DCCP_MAX = 5,
+};
+
+struct dccp_hdr_ext {
+	__be32 dccph_seq_low;
+};
+
+struct dccp_hdr_ack_bits {
+	__be16 dccph_reserved1;
+	__be16 dccph_ack_nr_high;
+	__be32 dccph_ack_nr_low;
+};
+
+struct dccp_hdr_request {
+	__be32 dccph_req_service;
+};
+
+struct dccp_hdr_response {
+	struct dccp_hdr_ack_bits dccph_resp_ack;
+	__be32 dccph_resp_service;
+};
+
+struct dccp_hdr_reset {
+	struct dccp_hdr_ack_bits dccph_reset_ack;
+	__u8 dccph_reset_code;
+	__u8 dccph_reset_data[3];
+};
+
+struct nf_conntrack_dccp_buf {
+	struct dccp_hdr dh;
+	struct dccp_hdr_ext ext;
+	union {
+		struct dccp_hdr_ack_bits ack;
+		struct dccp_hdr_request req;
+		struct dccp_hdr_response response;
+		struct dccp_hdr_reset rst;
+	} u;
+};
+
+enum sctp_cid {
+	SCTP_CID_DATA = 0,
+	SCTP_CID_INIT = 1,
+	SCTP_CID_INIT_ACK = 2,
+	SCTP_CID_SACK = 3,
+	SCTP_CID_HEARTBEAT = 4,
+	SCTP_CID_HEARTBEAT_ACK = 5,
+	SCTP_CID_ABORT = 6,
+	SCTP_CID_SHUTDOWN = 7,
+	SCTP_CID_SHUTDOWN_ACK = 8,
+	SCTP_CID_ERROR = 9,
+	SCTP_CID_COOKIE_ECHO = 10,
+	SCTP_CID_COOKIE_ACK = 11,
+	SCTP_CID_ECN_ECNE = 12,
+	SCTP_CID_ECN_CWR = 13,
+	SCTP_CID_SHUTDOWN_COMPLETE = 14,
+	SCTP_CID_AUTH = 15,
+	SCTP_CID_I_DATA = 64,
+	SCTP_CID_FWD_TSN = 192,
+	SCTP_CID_ASCONF = 193,
+	SCTP_CID_I_FWD_TSN = 194,
+	SCTP_CID_ASCONF_ACK = 128,
+	SCTP_CID_RECONF = 130,
+	SCTP_CID_PAD = 132,
+};
+
+enum {
+	SCTP_CHUNK_FLAG_T = 1,
+};
+
+enum ctattr_protoinfo_sctp {
+	CTA_PROTOINFO_SCTP_UNSPEC = 0,
+	CTA_PROTOINFO_SCTP_STATE = 1,
+	CTA_PROTOINFO_SCTP_VTAG_ORIGINAL = 2,
+	CTA_PROTOINFO_SCTP_VTAG_REPLY = 3,
+	__CTA_PROTOINFO_SCTP_MAX = 4,
+};
+
+enum pptp_ctrlsess_state {
+	PPTP_SESSION_NONE = 0,
+	PPTP_SESSION_ERROR = 1,
+	PPTP_SESSION_STOPREQ = 2,
+	PPTP_SESSION_REQUESTED = 3,
+	PPTP_SESSION_CONFIRMED = 4,
+};
+
+enum pptp_ctrlcall_state {
+	PPTP_CALL_NONE = 0,
+	PPTP_CALL_ERROR = 1,
+	PPTP_CALL_OUT_REQ = 2,
+	PPTP_CALL_OUT_CONF = 3,
+	PPTP_CALL_IN_REQ = 4,
+	PPTP_CALL_IN_REP = 5,
+	PPTP_CALL_IN_CONF = 6,
+	PPTP_CALL_CLEAR_REQ = 7,
+};
+
+struct nf_ct_gre_keymap {
+	struct list_head list;
+	struct nf_conntrack_tuple tuple;
+	struct callback_head rcu;
+};
+
+struct nf_ct_pptp_master {
+	enum pptp_ctrlsess_state sstate;
+	enum pptp_ctrlcall_state cstate;
+	__be16 pac_call_id;
+	__be16 pns_call_id;
+	struct nf_ct_gre_keymap *keymap[2];
+};
+
+struct pptp_gre_header {
+	struct gre_base_hdr gre_hd;
+	__be16 payload_len;
+	__be16 call_id;
+	__be32 seq;
+	__be32 ack;
+};
+
+enum {
+	NF_BPF_CT_OPTS_SZ = 12,
+};
+
+enum {
+	BPF_F_CURRENT_NETNS = -1,
+};
+
+struct nf_conn___init {
+	struct nf_conn ct;
+};
+
+struct bpf_ct_opts {
+	s32 netns_id;
+	s32 error;
+	u8 l4proto;
+	u8 dir;
+	u8 reserved[2];
+};
+
+enum cntl_msg_types {
+	IPCTNL_MSG_CT_NEW = 0,
+	IPCTNL_MSG_CT_GET = 1,
+	IPCTNL_MSG_CT_DELETE = 2,
+	IPCTNL_MSG_CT_GET_CTRZERO = 3,
+	IPCTNL_MSG_CT_GET_STATS_CPU = 4,
+	IPCTNL_MSG_CT_GET_STATS = 5,
+	IPCTNL_MSG_CT_GET_DYING = 6,
+	IPCTNL_MSG_CT_GET_UNCONFIRMED = 7,
+	IPCTNL_MSG_MAX = 8,
+};
+
+enum ctattr_type {
+	CTA_UNSPEC = 0,
+	CTA_TUPLE_ORIG = 1,
+	CTA_TUPLE_REPLY = 2,
+	CTA_STATUS = 3,
+	CTA_PROTOINFO = 4,
+	CTA_HELP = 5,
+	CTA_NAT_SRC = 6,
+	CTA_TIMEOUT = 7,
+	CTA_MARK = 8,
+	CTA_COUNTERS_ORIG = 9,
+	CTA_COUNTERS_REPLY = 10,
+	CTA_USE = 11,
+	CTA_ID = 12,
+	CTA_NAT_DST = 13,
+	CTA_TUPLE_MASTER = 14,
+	CTA_SEQ_ADJ_ORIG = 15,
+	CTA_NAT_SEQ_ADJ_ORIG = 15,
+	CTA_SEQ_ADJ_REPLY = 16,
+	CTA_NAT_SEQ_ADJ_REPLY = 16,
+	CTA_SECMARK = 17,
+	CTA_ZONE = 18,
+	CTA_SECCTX = 19,
+	CTA_TIMESTAMP = 20,
+	CTA_MARK_MASK = 21,
+	CTA_LABELS = 22,
+	CTA_LABELS_MASK = 23,
+	CTA_SYNPROXY = 24,
+	CTA_FILTER = 25,
+	CTA_STATUS_MASK = 26,
+	__CTA_MAX = 27,
+};
+
+enum ctattr_tuple {
+	CTA_TUPLE_UNSPEC = 0,
+	CTA_TUPLE_IP = 1,
+	CTA_TUPLE_PROTO = 2,
+	CTA_TUPLE_ZONE = 3,
+	__CTA_TUPLE_MAX = 4,
+};
+
+enum ctattr_ip {
+	CTA_IP_UNSPEC = 0,
+	CTA_IP_V4_SRC = 1,
+	CTA_IP_V4_DST = 2,
+	CTA_IP_V6_SRC = 3,
+	CTA_IP_V6_DST = 4,
+	__CTA_IP_MAX = 5,
+};
+
+enum ctattr_counters {
+	CTA_COUNTERS_UNSPEC = 0,
+	CTA_COUNTERS_PACKETS = 1,
+	CTA_COUNTERS_BYTES = 2,
+	CTA_COUNTERS32_PACKETS = 3,
+	CTA_COUNTERS32_BYTES = 4,
+	CTA_COUNTERS_PAD = 5,
+	__CTA_COUNTERS_MAX = 6,
+};
+
+enum ctattr_tstamp {
+	CTA_TIMESTAMP_UNSPEC = 0,
+	CTA_TIMESTAMP_START = 1,
+	CTA_TIMESTAMP_STOP = 2,
+	CTA_TIMESTAMP_PAD = 3,
+	__CTA_TIMESTAMP_MAX = 4,
+};
+
+enum ctattr_help {
+	CTA_HELP_UNSPEC = 0,
+	CTA_HELP_NAME = 1,
+	CTA_HELP_INFO = 2,
+	__CTA_HELP_MAX = 3,
+};
+
+enum ctattr_secctx {
+	CTA_SECCTX_UNSPEC = 0,
+	CTA_SECCTX_NAME = 1,
+	__CTA_SECCTX_MAX = 2,
+};
+
+enum ctattr_seqadj {
+	CTA_SEQADJ_UNSPEC = 0,
+	CTA_SEQADJ_CORRECTION_POS = 1,
+	CTA_SEQADJ_OFFSET_BEFORE = 2,
+	CTA_SEQADJ_OFFSET_AFTER = 3,
+	__CTA_SEQADJ_MAX = 4,
+};
+
+enum ctattr_synproxy {
+	CTA_SYNPROXY_UNSPEC = 0,
+	CTA_SYNPROXY_ISN = 1,
+	CTA_SYNPROXY_ITS = 2,
+	CTA_SYNPROXY_TSOFF = 3,
+	__CTA_SYNPROXY_MAX = 4,
+};
+
+enum ctnl_exp_msg_types {
+	IPCTNL_MSG_EXP_NEW = 0,
+	IPCTNL_MSG_EXP_GET = 1,
+	IPCTNL_MSG_EXP_DELETE = 2,
+	IPCTNL_MSG_EXP_GET_STATS_CPU = 3,
+	IPCTNL_MSG_EXP_MAX = 4,
+};
+
+enum ctattr_expect {
+	CTA_EXPECT_UNSPEC = 0,
+	CTA_EXPECT_MASTER = 1,
+	CTA_EXPECT_TUPLE = 2,
+	CTA_EXPECT_MASK = 3,
+	CTA_EXPECT_TIMEOUT = 4,
+	CTA_EXPECT_ID = 5,
+	CTA_EXPECT_HELP_NAME = 6,
+	CTA_EXPECT_ZONE = 7,
+	CTA_EXPECT_FLAGS = 8,
+	CTA_EXPECT_CLASS = 9,
+	CTA_EXPECT_NAT = 10,
+	CTA_EXPECT_FN = 11,
+	__CTA_EXPECT_MAX = 12,
+};
+
+enum ctattr_expect_nat {
+	CTA_EXPECT_NAT_UNSPEC = 0,
+	CTA_EXPECT_NAT_DIR = 1,
+	CTA_EXPECT_NAT_TUPLE = 2,
+	__CTA_EXPECT_NAT_MAX = 3,
+};
+
+enum ctattr_expect_stats {
+	CTA_STATS_EXP_UNSPEC = 0,
+	CTA_STATS_EXP_NEW = 1,
+	CTA_STATS_EXP_CREATE = 2,
+	CTA_STATS_EXP_DELETE = 3,
+	__CTA_STATS_EXP_MAX = 4,
+};
+
+enum ctattr_filter {
+	CTA_FILTER_UNSPEC = 0,
+	CTA_FILTER_ORIG_FLAGS = 1,
+	CTA_FILTER_REPLY_FLAGS = 2,
+	__CTA_FILTER_MAX = 3,
+};
+
+enum ctattr_stats_cpu {
+	CTA_STATS_UNSPEC = 0,
+	CTA_STATS_SEARCHED = 1,
+	CTA_STATS_FOUND = 2,
+	CTA_STATS_NEW = 3,
+	CTA_STATS_INVALID = 4,
+	CTA_STATS_IGNORE = 5,
+	CTA_STATS_DELETE = 6,
+	CTA_STATS_DELETE_LIST = 7,
+	CTA_STATS_INSERT = 8,
+	CTA_STATS_INSERT_FAILED = 9,
+	CTA_STATS_DROP = 10,
+	CTA_STATS_EARLY_DROP = 11,
+	CTA_STATS_ERROR = 12,
+	CTA_STATS_SEARCH_RESTART = 13,
+	CTA_STATS_CLASH_RESOLVE = 14,
+	CTA_STATS_CHAIN_TOOLONG = 15,
+	__CTA_STATS_MAX = 16,
+};
+
+enum ctattr_stats_global {
+	CTA_STATS_GLOBAL_UNSPEC = 0,
+	CTA_STATS_GLOBAL_ENTRIES = 1,
+	CTA_STATS_GLOBAL_MAX_ENTRIES = 2,
+	__CTA_STATS_GLOBAL_MAX = 3,
+};
+
+struct ctnetlink_filter_u32 {
+	u32 val;
+	u32 mask;
+};
+
+struct ctnetlink_filter {
+	u8 family;
+	u_int32_t orig_flags;
+	u_int32_t reply_flags;
+	struct nf_conntrack_tuple orig;
+	struct nf_conntrack_tuple reply;
+	struct nf_conntrack_zone zone;
+	struct ctnetlink_filter_u32 mark;
+	struct ctnetlink_filter_u32 status;
+};
+
+struct ctnetlink_list_dump_ctx {
+	struct nf_conn *last;
+	unsigned int cpu;
+	bool done;
+};
+
+enum amanda_strings {
+	SEARCH_CONNECT = 0,
+	SEARCH_NEWLINE = 1,
+	SEARCH_DATA = 2,
+	SEARCH_MESG = 3,
+	SEARCH_INDEX = 4,
+	SEARCH_STATE = 5,
+};
+
+enum nf_ct_ftp_type {
+	NF_CT_FTP_PORT = 0,
+	NF_CT_FTP_PASV = 1,
+	NF_CT_FTP_EPRT = 2,
+	NF_CT_FTP_EPSV = 3,
+};
+
+struct ftp_search {
+	const char *pattern;
+	size_t plen;
+	char skip;
+	char term;
+	enum nf_ct_ftp_type ftptype;
+	int (*getnum)(const char *, size_t, struct nf_conntrack_man *, char, unsigned int *);
+};
+
+struct nf_ct_ftp_master {
+	u_int32_t seq_aft_nl[4];
+	u_int16_t seq_aft_nl_num[2];
+	u_int16_t flags[2];
+};
+
+struct H245_TransportAddress;
+
+typedef struct H245_TransportAddress H245_TransportAddress;
+
+struct TransportAddress;
+
+typedef struct TransportAddress TransportAddress;
+
+struct nfct_h323_nat_hooks {
+	int (*set_h245_addr)(struct sk_buff *, unsigned int, unsigned char **, int, H245_TransportAddress *, union nf_inet_addr *, __be16);
+	int (*set_h225_addr)(struct sk_buff *, unsigned int, unsigned char **, int, TransportAddress *, union nf_inet_addr *, __be16);
+	int (*set_sig_addr)(struct sk_buff *, struct nf_conn *, enum ip_conntrack_info, unsigned int, unsigned char **, TransportAddress *, int);
+	int (*set_ras_addr)(struct sk_buff *, struct nf_conn *, enum ip_conntrack_info, unsigned int, unsigned char **, TransportAddress *, int);
+	int (*nat_rtp_rtcp)(struct sk_buff *, struct nf_conn *, enum ip_conntrack_info, unsigned int, unsigned char **, int, H245_TransportAddress *, __be16, __be16, struct nf_conntrack_expect *, struct nf_conntrack_expect *);
+	int (*nat_t120)(struct sk_buff *, struct nf_conn *, enum ip_conntrack_info, unsigned int, unsigned char **, int, H245_TransportAddress *, __be16, struct nf_conntrack_expect *);
+	int (*nat_h245)(struct sk_buff *, struct nf_conn *, enum ip_conntrack_info, unsigned int, unsigned char **, int, TransportAddress *, __be16, struct nf_conntrack_expect *);
+	int (*nat_callforwarding)(struct sk_buff *, struct nf_conn *, enum ip_conntrack_info, unsigned int, unsigned char **, int, TransportAddress *, __be16, struct nf_conntrack_expect *);
+	int (*nat_q931)(struct sk_buff *, struct nf_conn *, enum ip_conntrack_info, unsigned int, unsigned char **, TransportAddress *, int, __be16, struct nf_conntrack_expect *);
+};
+
+struct UnicastAddress_iPAddress {
+	int options;
+	unsigned int network;
+};
+
+typedef struct UnicastAddress_iPAddress UnicastAddress_iPAddress;
+
+struct UnicastAddress_iP6Address {
+	int options;
+	unsigned int network;
+};
+
+typedef struct UnicastAddress_iP6Address UnicastAddress_iP6Address;
+
+struct UnicastAddress {
+	enum {
+		eUnicastAddress_iPAddress = 0,
+		eUnicastAddress_iPXAddress = 1,
+		eUnicastAddress_iP6Address = 2,
+		eUnicastAddress_netBios = 3,
+		eUnicastAddress_iPSourceRouteAddress = 4,
+		eUnicastAddress_nsap = 5,
+		eUnicastAddress_nonStandardAddress = 6,
+	} choice;
+	union {
+		UnicastAddress_iPAddress iPAddress;
+		UnicastAddress_iP6Address iP6Address;
+	};
+};
+
+typedef struct UnicastAddress UnicastAddress;
+
+struct H245_TransportAddress {
+	enum {
+		eH245_TransportAddress_unicastAddress = 0,
+		eH245_TransportAddress_multicastAddress = 1,
+	} choice;
+	union {
+		UnicastAddress unicastAddress;
+	};
+};
+
+struct TransportAddress_ipAddress {
+	int options;
+	unsigned int ip;
+};
+
+typedef struct TransportAddress_ipAddress TransportAddress_ipAddress;
+
+struct TransportAddress_ip6Address {
+	int options;
+	unsigned int ip;
+};
+
+typedef struct TransportAddress_ip6Address TransportAddress_ip6Address;
+
+struct TransportAddress {
+	enum {
+		eTransportAddress_ipAddress = 0,
+		eTransportAddress_ipSourceRoute = 1,
+		eTransportAddress_ipxAddress = 2,
+		eTransportAddress_ip6Address = 3,
+		eTransportAddress_netBios = 4,
+		eTransportAddress_nsap = 5,
+		eTransportAddress_nonStandardAddress = 6,
+	} choice;
+	union {
+		TransportAddress_ipAddress ipAddress;
+		TransportAddress_ip6Address ip6Address;
+	};
+};
+
+struct GatekeeperRequest {
+	enum {
+		eGatekeeperRequest_nonStandardData = -2147483648,
+		eGatekeeperRequest_gatekeeperIdentifier = 1073741824,
+		eGatekeeperRequest_callServices = 536870912,
+		eGatekeeperRequest_endpointAlias = 268435456,
+		eGatekeeperRequest_alternateEndpoints = 134217728,
+		eGatekeeperRequest_tokens = 67108864,
+		eGatekeeperRequest_cryptoTokens = 33554432,
+		eGatekeeperRequest_authenticationCapability = 16777216,
+		eGatekeeperRequest_algorithmOIDs = 8388608,
+		eGatekeeperRequest_integrity = 4194304,
+		eGatekeeperRequest_integrityCheckValue = 2097152,
+		eGatekeeperRequest_supportsAltGK = 1048576,
+		eGatekeeperRequest_featureSet = 524288,
+		eGatekeeperRequest_genericData = 262144,
+	} options;
+	TransportAddress rasAddress;
+};
+
+typedef struct GatekeeperRequest GatekeeperRequest;
+
+struct GatekeeperConfirm {
+	enum {
+		eGatekeeperConfirm_nonStandardData = -2147483648,
+		eGatekeeperConfirm_gatekeeperIdentifier = 1073741824,
+		eGatekeeperConfirm_alternateGatekeeper = 536870912,
+		eGatekeeperConfirm_authenticationMode = 268435456,
+		eGatekeeperConfirm_tokens = 134217728,
+		eGatekeeperConfirm_cryptoTokens = 67108864,
+		eGatekeeperConfirm_algorithmOID = 33554432,
+		eGatekeeperConfirm_integrity = 16777216,
+		eGatekeeperConfirm_integrityCheckValue = 8388608,
+		eGatekeeperConfirm_featureSet = 4194304,
+		eGatekeeperConfirm_genericData = 2097152,
+	} options;
+	TransportAddress rasAddress;
+};
+
+typedef struct GatekeeperConfirm GatekeeperConfirm;
+
+struct RegistrationRequest_callSignalAddress {
+	int count;
+	TransportAddress item[10];
+};
+
+typedef struct RegistrationRequest_callSignalAddress RegistrationRequest_callSignalAddress;
+
+struct RegistrationRequest_rasAddress {
+	int count;
+	TransportAddress item[10];
+};
+
+typedef struct RegistrationRequest_rasAddress RegistrationRequest_rasAddress;
+
+struct RegistrationRequest {
+	enum {
+		eRegistrationRequest_nonStandardData = -2147483648,
+		eRegistrationRequest_terminalAlias = 1073741824,
+		eRegistrationRequest_gatekeeperIdentifier = 536870912,
+		eRegistrationRequest_alternateEndpoints = 268435456,
+		eRegistrationRequest_timeToLive = 134217728,
+		eRegistrationRequest_tokens = 67108864,
+		eRegistrationRequest_cryptoTokens = 33554432,
+		eRegistrationRequest_integrityCheckValue = 16777216,
+		eRegistrationRequest_keepAlive = 8388608,
+		eRegistrationRequest_endpointIdentifier = 4194304,
+		eRegistrationRequest_willSupplyUUIEs = 2097152,
+		eRegistrationRequest_maintainConnection = 1048576,
+		eRegistrationRequest_alternateTransportAddresses = 524288,
+		eRegistrationRequest_additiveRegistration = 262144,
+		eRegistrationRequest_terminalAliasPattern = 131072,
+		eRegistrationRequest_supportsAltGK = 65536,
+		eRegistrationRequest_usageReportingCapability = 32768,
+		eRegistrationRequest_multipleCalls = 16384,
+		eRegistrationRequest_supportedH248Packages = 8192,
+		eRegistrationRequest_callCreditCapability = 4096,
+		eRegistrationRequest_capacityReportingCapability = 2048,
+		eRegistrationRequest_capacity = 1024,
+		eRegistrationRequest_featureSet = 512,
+		eRegistrationRequest_genericData = 256,
+	} options;
+	RegistrationRequest_callSignalAddress callSignalAddress;
+	RegistrationRequest_rasAddress rasAddress;
+	unsigned int timeToLive;
+};
+
+typedef struct RegistrationRequest RegistrationRequest;
+
+struct RegistrationConfirm_callSignalAddress {
+	int count;
+	TransportAddress item[10];
+};
+
+typedef struct RegistrationConfirm_callSignalAddress RegistrationConfirm_callSignalAddress;
+
+struct RegistrationConfirm {
+	enum {
+		eRegistrationConfirm_nonStandardData = -2147483648,
+		eRegistrationConfirm_terminalAlias = 1073741824,
+		eRegistrationConfirm_gatekeeperIdentifier = 536870912,
+		eRegistrationConfirm_alternateGatekeeper = 268435456,
+		eRegistrationConfirm_timeToLive = 134217728,
+		eRegistrationConfirm_tokens = 67108864,
+		eRegistrationConfirm_cryptoTokens = 33554432,
+		eRegistrationConfirm_integrityCheckValue = 16777216,
+		eRegistrationConfirm_willRespondToIRR = 8388608,
+		eRegistrationConfirm_preGrantedARQ = 4194304,
+		eRegistrationConfirm_maintainConnection = 2097152,
+		eRegistrationConfirm_serviceControl = 1048576,
+		eRegistrationConfirm_supportsAdditiveRegistration = 524288,
+		eRegistrationConfirm_terminalAliasPattern = 262144,
+		eRegistrationConfirm_supportedPrefixes = 131072,
+		eRegistrationConfirm_usageSpec = 65536,
+		eRegistrationConfirm_featureServerAlias = 32768,
+		eRegistrationConfirm_capacityReportingSpec = 16384,
+		eRegistrationConfirm_featureSet = 8192,
+		eRegistrationConfirm_genericData = 4096,
+	} options;
+	RegistrationConfirm_callSignalAddress callSignalAddress;
+	unsigned int timeToLive;
+};
+
+typedef struct RegistrationConfirm RegistrationConfirm;
+
+struct UnregistrationRequest_callSignalAddress {
+	int count;
+	TransportAddress item[10];
+};
+
+typedef struct UnregistrationRequest_callSignalAddress UnregistrationRequest_callSignalAddress;
+
+struct UnregistrationRequest {
+	enum {
+		eUnregistrationRequest_endpointAlias = -2147483648,
+		eUnregistrationRequest_nonStandardData = 1073741824,
+		eUnregistrationRequest_endpointIdentifier = 536870912,
+		eUnregistrationRequest_alternateEndpoints = 268435456,
+		eUnregistrationRequest_gatekeeperIdentifier = 134217728,
+		eUnregistrationRequest_tokens = 67108864,
+		eUnregistrationRequest_cryptoTokens = 33554432,
+		eUnregistrationRequest_integrityCheckValue = 16777216,
+		eUnregistrationRequest_reason = 8388608,
+		eUnregistrationRequest_endpointAliasPattern = 4194304,
+		eUnregistrationRequest_supportedPrefixes = 2097152,
+		eUnregistrationRequest_alternateGatekeeper = 1048576,
+		eUnregistrationRequest_genericData = 524288,
+	} options;
+	UnregistrationRequest_callSignalAddress callSignalAddress;
+};
+
+typedef struct UnregistrationRequest UnregistrationRequest;
+
+struct AdmissionRequest {
+	enum {
+		eAdmissionRequest_callModel = -2147483648,
+		eAdmissionRequest_destinationInfo = 1073741824,
+		eAdmissionRequest_destCallSignalAddress = 536870912,
+		eAdmissionRequest_destExtraCallInfo = 268435456,
+		eAdmissionRequest_srcCallSignalAddress = 134217728,
+		eAdmissionRequest_nonStandardData = 67108864,
+		eAdmissionRequest_callServices = 33554432,
+		eAdmissionRequest_canMapAlias = 16777216,
+		eAdmissionRequest_callIdentifier = 8388608,
+		eAdmissionRequest_srcAlternatives = 4194304,
+		eAdmissionRequest_destAlternatives = 2097152,
+		eAdmissionRequest_gatekeeperIdentifier = 1048576,
+		eAdmissionRequest_tokens = 524288,
+		eAdmissionRequest_cryptoTokens = 262144,
+		eAdmissionRequest_integrityCheckValue = 131072,
+		eAdmissionRequest_transportQOS = 65536,
+		eAdmissionRequest_willSupplyUUIEs = 32768,
+		eAdmissionRequest_callLinkage = 16384,
+		eAdmissionRequest_gatewayDataRate = 8192,
+		eAdmissionRequest_capacity = 4096,
+		eAdmissionRequest_circuitInfo = 2048,
+		eAdmissionRequest_desiredProtocols = 1024,
+		eAdmissionRequest_desiredTunnelledProtocol = 512,
+		eAdmissionRequest_featureSet = 256,
+		eAdmissionRequest_genericData = 128,
+	} options;
+	TransportAddress destCallSignalAddress;
+	TransportAddress srcCallSignalAddress;
+};
+
+typedef struct AdmissionRequest AdmissionRequest;
+
+struct AdmissionConfirm {
+	enum {
+		eAdmissionConfirm_irrFrequency = -2147483648,
+		eAdmissionConfirm_nonStandardData = 1073741824,
+		eAdmissionConfirm_destinationInfo = 536870912,
+		eAdmissionConfirm_destExtraCallInfo = 268435456,
+		eAdmissionConfirm_destinationType = 134217728,
+		eAdmissionConfirm_remoteExtensionAddress = 67108864,
+		eAdmissionConfirm_alternateEndpoints = 33554432,
+		eAdmissionConfirm_tokens = 16777216,
+		eAdmissionConfirm_cryptoTokens = 8388608,
+		eAdmissionConfirm_integrityCheckValue = 4194304,
+		eAdmissionConfirm_transportQOS = 2097152,
+		eAdmissionConfirm_willRespondToIRR = 1048576,
+		eAdmissionConfirm_uuiesRequested = 524288,
+		eAdmissionConfirm_language = 262144,
+		eAdmissionConfirm_alternateTransportAddresses = 131072,
+		eAdmissionConfirm_useSpecifiedTransport = 65536,
+		eAdmissionConfirm_circuitInfo = 32768,
+		eAdmissionConfirm_usageSpec = 16384,
+		eAdmissionConfirm_supportedProtocols = 8192,
+		eAdmissionConfirm_serviceControl = 4096,
+		eAdmissionConfirm_multipleCalls = 2048,
+		eAdmissionConfirm_featureSet = 1024,
+		eAdmissionConfirm_genericData = 512,
+	} options;
+	TransportAddress destCallSignalAddress;
+};
+
+typedef struct AdmissionConfirm AdmissionConfirm;
+
+struct LocationRequest {
+	enum {
+		eLocationRequest_endpointIdentifier = -2147483648,
+		eLocationRequest_nonStandardData = 1073741824,
+		eLocationRequest_sourceInfo = 536870912,
+		eLocationRequest_canMapAlias = 268435456,
+		eLocationRequest_gatekeeperIdentifier = 134217728,
+		eLocationRequest_tokens = 67108864,
+		eLocationRequest_cryptoTokens = 33554432,
+		eLocationRequest_integrityCheckValue = 16777216,
+		eLocationRequest_desiredProtocols = 8388608,
+		eLocationRequest_desiredTunnelledProtocol = 4194304,
+		eLocationRequest_featureSet = 2097152,
+		eLocationRequest_genericData = 1048576,
+		eLocationRequest_hopCount = 524288,
+		eLocationRequest_circuitInfo = 262144,
+	} options;
+	TransportAddress replyAddress;
+};
+
+typedef struct LocationRequest LocationRequest;
+
+struct LocationConfirm {
+	enum {
+		eLocationConfirm_nonStandardData = -2147483648,
+		eLocationConfirm_destinationInfo = 1073741824,
+		eLocationConfirm_destExtraCallInfo = 536870912,
+		eLocationConfirm_destinationType = 268435456,
+		eLocationConfirm_remoteExtensionAddress = 134217728,
+		eLocationConfirm_alternateEndpoints = 67108864,
+		eLocationConfirm_tokens = 33554432,
+		eLocationConfirm_cryptoTokens = 16777216,
+		eLocationConfirm_integrityCheckValue = 8388608,
+		eLocationConfirm_alternateTransportAddresses = 4194304,
+		eLocationConfirm_supportedProtocols = 2097152,
+		eLocationConfirm_multipleCalls = 1048576,
+		eLocationConfirm_featureSet = 524288,
+		eLocationConfirm_genericData = 262144,
+		eLocationConfirm_circuitInfo = 131072,
+		eLocationConfirm_serviceControl = 65536,
+	} options;
+	TransportAddress callSignalAddress;
+	TransportAddress rasAddress;
+};
+
+typedef struct LocationConfirm LocationConfirm;
+
+struct InfoRequestResponse_callSignalAddress {
+	int count;
+	TransportAddress item[10];
+};
+
+typedef struct InfoRequestResponse_callSignalAddress InfoRequestResponse_callSignalAddress;
+
+struct InfoRequestResponse {
+	enum {
+		eInfoRequestResponse_nonStandardData = -2147483648,
+		eInfoRequestResponse_endpointAlias = 1073741824,
+		eInfoRequestResponse_perCallInfo = 536870912,
+		eInfoRequestResponse_tokens = 268435456,
+		eInfoRequestResponse_cryptoTokens = 134217728,
+		eInfoRequestResponse_integrityCheckValue = 67108864,
+		eInfoRequestResponse_needResponse = 33554432,
+		eInfoRequestResponse_capacity = 16777216,
+		eInfoRequestResponse_irrStatus = 8388608,
+		eInfoRequestResponse_unsolicited = 4194304,
+		eInfoRequestResponse_genericData = 2097152,
+	} options;
+	TransportAddress rasAddress;
+	InfoRequestResponse_callSignalAddress callSignalAddress;
+};
+
+typedef struct InfoRequestResponse InfoRequestResponse;
+
+struct RasMessage {
+	enum {
+		eRasMessage_gatekeeperRequest = 0,
+		eRasMessage_gatekeeperConfirm = 1,
+		eRasMessage_gatekeeperReject = 2,
+		eRasMessage_registrationRequest = 3,
+		eRasMessage_registrationConfirm = 4,
+		eRasMessage_registrationReject = 5,
+		eRasMessage_unregistrationRequest = 6,
+		eRasMessage_unregistrationConfirm = 7,
+		eRasMessage_unregistrationReject = 8,
+		eRasMessage_admissionRequest = 9,
+		eRasMessage_admissionConfirm = 10,
+		eRasMessage_admissionReject = 11,
+		eRasMessage_bandwidthRequest = 12,
+		eRasMessage_bandwidthConfirm = 13,
+		eRasMessage_bandwidthReject = 14,
+		eRasMessage_disengageRequest = 15,
+		eRasMessage_disengageConfirm = 16,
+		eRasMessage_disengageReject = 17,
+		eRasMessage_locationRequest = 18,
+		eRasMessage_locationConfirm = 19,
+		eRasMessage_locationReject = 20,
+		eRasMessage_infoRequest = 21,
+		eRasMessage_infoRequestResponse = 22,
+		eRasMessage_nonStandardMessage = 23,
+		eRasMessage_unknownMessageResponse = 24,
+		eRasMessage_requestInProgress = 25,
+		eRasMessage_resourcesAvailableIndicate = 26,
+		eRasMessage_resourcesAvailableConfirm = 27,
+		eRasMessage_infoRequestAck = 28,
+		eRasMessage_infoRequestNak = 29,
+		eRasMessage_serviceControlIndication = 30,
+		eRasMessage_serviceControlResponse = 31,
+	} choice;
+	union {
+		GatekeeperRequest gatekeeperRequest;
+		GatekeeperConfirm gatekeeperConfirm;
+		RegistrationRequest registrationRequest;
+		RegistrationConfirm registrationConfirm;
+		UnregistrationRequest unregistrationRequest;
+		AdmissionRequest admissionRequest;
+		AdmissionConfirm admissionConfirm;
+		LocationRequest locationRequest;
+		LocationConfirm locationConfirm;
+		InfoRequestResponse infoRequestResponse;
+	};
+};
+
+typedef struct RasMessage RasMessage;
+
+struct DataProtocolCapability {
+	enum {
+		eDataProtocolCapability_nonStandard = 0,
+		eDataProtocolCapability_v14buffered = 1,
+		eDataProtocolCapability_v42lapm = 2,
+		eDataProtocolCapability_hdlcFrameTunnelling = 3,
+		eDataProtocolCapability_h310SeparateVCStack = 4,
+		eDataProtocolCapability_h310SingleVCStack = 5,
+		eDataProtocolCapability_transparent = 6,
+		eDataProtocolCapability_segmentationAndReassembly = 7,
+		eDataProtocolCapability_hdlcFrameTunnelingwSAR = 8,
+		eDataProtocolCapability_v120 = 9,
+		eDataProtocolCapability_separateLANStack = 10,
+		eDataProtocolCapability_v76wCompression = 11,
+		eDataProtocolCapability_tcp = 12,
+		eDataProtocolCapability_udp = 13,
+	} choice;
+};
+
+typedef struct DataProtocolCapability DataProtocolCapability;
+
+struct DataApplicationCapability_application {
+	enum {
+		eDataApplicationCapability_application_nonStandard = 0,
+		eDataApplicationCapability_application_t120 = 1,
+		eDataApplicationCapability_application_dsm_cc = 2,
+		eDataApplicationCapability_application_userData = 3,
+		eDataApplicationCapability_application_t84 = 4,
+		eDataApplicationCapability_application_t434 = 5,
+		eDataApplicationCapability_application_h224 = 6,
+		eDataApplicationCapability_application_nlpid = 7,
+		eDataApplicationCapability_application_dsvdControl = 8,
+		eDataApplicationCapability_application_h222DataPartitioning = 9,
+		eDataApplicationCapability_application_t30fax = 10,
+		eDataApplicationCapability_application_t140 = 11,
+		eDataApplicationCapability_application_t38fax = 12,
+		eDataApplicationCapability_application_genericDataCapability = 13,
+	} choice;
+	union {
+		DataProtocolCapability t120;
+	};
+};
+
+typedef struct DataApplicationCapability_application DataApplicationCapability_application;
+
+struct DataApplicationCapability {
+	int options;
+	DataApplicationCapability_application application;
+};
+
+typedef struct DataApplicationCapability DataApplicationCapability;
+
+struct DataType {
+	enum {
+		eDataType_nonStandard = 0,
+		eDataType_nullData = 1,
+		eDataType_videoData = 2,
+		eDataType_audioData = 3,
+		eDataType_data = 4,
+		eDataType_encryptionData = 5,
+		eDataType_h235Control = 6,
+		eDataType_h235Media = 7,
+		eDataType_multiplexedStream = 8,
+	} choice;
+	union {
+		DataApplicationCapability data;
+	};
+};
+
+typedef struct DataType DataType;
+
+struct H2250LogicalChannelParameters {
+	enum {
+		eH2250LogicalChannelParameters_nonStandard = -2147483648,
+		eH2250LogicalChannelParameters_associatedSessionID = 1073741824,
+		eH2250LogicalChannelParameters_mediaChannel = 536870912,
+		eH2250LogicalChannelParameters_mediaGuaranteedDelivery = 268435456,
+		eH2250LogicalChannelParameters_mediaControlChannel = 134217728,
+		eH2250LogicalChannelParameters_mediaControlGuaranteedDelivery = 67108864,
+		eH2250LogicalChannelParameters_silenceSuppression = 33554432,
+		eH2250LogicalChannelParameters_destination = 16777216,
+		eH2250LogicalChannelParameters_dynamicRTPPayloadType = 8388608,
+		eH2250LogicalChannelParameters_mediaPacketization = 4194304,
+		eH2250LogicalChannelParameters_transportCapability = 2097152,
+		eH2250LogicalChannelParameters_redundancyEncoding = 1048576,
+		eH2250LogicalChannelParameters_source = 524288,
+	} options;
+	H245_TransportAddress mediaChannel;
+	H245_TransportAddress mediaControlChannel;
+};
+
+typedef struct H2250LogicalChannelParameters H2250LogicalChannelParameters;
+
+struct OpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters {
+	enum {
+		eOpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters_h222LogicalChannelParameters = 0,
+		eOpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters_h223LogicalChannelParameters = 1,
+		eOpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters_v76LogicalChannelParameters = 2,
+		eOpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters_h2250LogicalChannelParameters = 3,
+		eOpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters_none = 4,
+	} choice;
+	union {
+		H2250LogicalChannelParameters h2250LogicalChannelParameters;
+	};
+};
+
+typedef struct OpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters OpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters;
+
+struct OpenLogicalChannel_forwardLogicalChannelParameters {
+	enum {
+		eOpenLogicalChannel_forwardLogicalChannelParameters_portNumber = -2147483648,
+		eOpenLogicalChannel_forwardLogicalChannelParameters_forwardLogicalChannelDependency = 1073741824,
+		eOpenLogicalChannel_forwardLogicalChannelParameters_replacementFor = 536870912,
+	} options;
+	DataType dataType;
+	OpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters multiplexParameters;
+};
+
+typedef struct OpenLogicalChannel_forwardLogicalChannelParameters OpenLogicalChannel_forwardLogicalChannelParameters;
+
+struct OpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters {
+	enum {
+		eOpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters_h223LogicalChannelParameters = 0,
+		eOpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters_v76LogicalChannelParameters = 1,
+		eOpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters_h2250LogicalChannelParameters = 2,
+	} choice;
+	union {
+		H2250LogicalChannelParameters h2250LogicalChannelParameters;
+	};
+};
+
+typedef struct OpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters OpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters;
+
+struct OpenLogicalChannel_reverseLogicalChannelParameters {
+	enum {
+		eOpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters = -2147483648,
+		eOpenLogicalChannel_reverseLogicalChannelParameters_reverseLogicalChannelDependency = 1073741824,
+		eOpenLogicalChannel_reverseLogicalChannelParameters_replacementFor = 536870912,
+	} options;
+	OpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters multiplexParameters;
+};
+
+typedef struct OpenLogicalChannel_reverseLogicalChannelParameters OpenLogicalChannel_reverseLogicalChannelParameters;
+
+struct NetworkAccessParameters_networkAddress {
+	enum {
+		eNetworkAccessParameters_networkAddress_q2931Address = 0,
+		eNetworkAccessParameters_networkAddress_e164Address = 1,
+		eNetworkAccessParameters_networkAddress_localAreaAddress = 2,
+	} choice;
+	union {
+		H245_TransportAddress localAreaAddress;
+	};
+};
+
+typedef struct NetworkAccessParameters_networkAddress NetworkAccessParameters_networkAddress;
+
+struct NetworkAccessParameters {
+	enum {
+		eNetworkAccessParameters_distribution = -2147483648,
+		eNetworkAccessParameters_externalReference = 1073741824,
+		eNetworkAccessParameters_t120SetupProcedure = 536870912,
+	} options;
+	NetworkAccessParameters_networkAddress networkAddress;
+};
+
+typedef struct NetworkAccessParameters NetworkAccessParameters;
+
+struct OpenLogicalChannel {
+	enum {
+		eOpenLogicalChannel_reverseLogicalChannelParameters = -2147483648,
+		eOpenLogicalChannel_separateStack = 1073741824,
+		eOpenLogicalChannel_encryptionSync = 536870912,
+	} options;
+	OpenLogicalChannel_forwardLogicalChannelParameters forwardLogicalChannelParameters;
+	OpenLogicalChannel_reverseLogicalChannelParameters reverseLogicalChannelParameters;
+	NetworkAccessParameters separateStack;
+};
+
+typedef struct OpenLogicalChannel OpenLogicalChannel;
+
+struct Setup_UUIE_fastStart {
+	int count;
+	OpenLogicalChannel item[30];
+};
+
+typedef struct Setup_UUIE_fastStart Setup_UUIE_fastStart;
+
+struct Setup_UUIE {
+	enum {
+		eSetup_UUIE_h245Address = -2147483648,
+		eSetup_UUIE_sourceAddress = 1073741824,
+		eSetup_UUIE_destinationAddress = 536870912,
+		eSetup_UUIE_destCallSignalAddress = 268435456,
+		eSetup_UUIE_destExtraCallInfo = 134217728,
+		eSetup_UUIE_destExtraCRV = 67108864,
+		eSetup_UUIE_callServices = 33554432,
+		eSetup_UUIE_sourceCallSignalAddress = 16777216,
+		eSetup_UUIE_remoteExtensionAddress = 8388608,
+		eSetup_UUIE_callIdentifier = 4194304,
+		eSetup_UUIE_h245SecurityCapability = 2097152,
+		eSetup_UUIE_tokens = 1048576,
+		eSetup_UUIE_cryptoTokens = 524288,
+		eSetup_UUIE_fastStart = 262144,
+		eSetup_UUIE_mediaWaitForConnect = 131072,
+		eSetup_UUIE_canOverlapSend = 65536,
+		eSetup_UUIE_endpointIdentifier = 32768,
+		eSetup_UUIE_multipleCalls = 16384,
+		eSetup_UUIE_maintainConnection = 8192,
+		eSetup_UUIE_connectionParameters = 4096,
+		eSetup_UUIE_language = 2048,
+		eSetup_UUIE_presentationIndicator = 1024,
+		eSetup_UUIE_screeningIndicator = 512,
+		eSetup_UUIE_serviceControl = 256,
+		eSetup_UUIE_symmetricOperationRequired = 128,
+		eSetup_UUIE_capacity = 64,
+		eSetup_UUIE_circuitInfo = 32,
+		eSetup_UUIE_desiredProtocols = 16,
+		eSetup_UUIE_neededFeatures = 8,
+		eSetup_UUIE_desiredFeatures = 4,
+		eSetup_UUIE_supportedFeatures = 2,
+		eSetup_UUIE_parallelH245Control = 1,
+	} options;
+	TransportAddress h245Address;
+	TransportAddress destCallSignalAddress;
+	TransportAddress sourceCallSignalAddress;
+	Setup_UUIE_fastStart fastStart;
+};
+
+typedef struct Setup_UUIE Setup_UUIE;
+
+struct CallProceeding_UUIE_fastStart {
+	int count;
+	OpenLogicalChannel item[30];
+};
+
+typedef struct CallProceeding_UUIE_fastStart CallProceeding_UUIE_fastStart;
+
+struct CallProceeding_UUIE {
+	enum {
+		eCallProceeding_UUIE_h245Address = -2147483648,
+		eCallProceeding_UUIE_callIdentifier = 1073741824,
+		eCallProceeding_UUIE_h245SecurityMode = 536870912,
+		eCallProceeding_UUIE_tokens = 268435456,
+		eCallProceeding_UUIE_cryptoTokens = 134217728,
+		eCallProceeding_UUIE_fastStart = 67108864,
+		eCallProceeding_UUIE_multipleCalls = 33554432,
+		eCallProceeding_UUIE_maintainConnection = 16777216,
+		eCallProceeding_UUIE_fastConnectRefused = 8388608,
+		eCallProceeding_UUIE_featureSet = 4194304,
+	} options;
+	TransportAddress h245Address;
+	CallProceeding_UUIE_fastStart fastStart;
+};
+
+typedef struct CallProceeding_UUIE CallProceeding_UUIE;
+
+struct Connect_UUIE_fastStart {
+	int count;
+	OpenLogicalChannel item[30];
+};
+
+typedef struct Connect_UUIE_fastStart Connect_UUIE_fastStart;
+
+struct Connect_UUIE {
+	enum {
+		eConnect_UUIE_h245Address = -2147483648,
+		eConnect_UUIE_callIdentifier = 1073741824,
+		eConnect_UUIE_h245SecurityMode = 536870912,
+		eConnect_UUIE_tokens = 268435456,
+		eConnect_UUIE_cryptoTokens = 134217728,
+		eConnect_UUIE_fastStart = 67108864,
+		eConnect_UUIE_multipleCalls = 33554432,
+		eConnect_UUIE_maintainConnection = 16777216,
+		eConnect_UUIE_language = 8388608,
+		eConnect_UUIE_connectedAddress = 4194304,
+		eConnect_UUIE_presentationIndicator = 2097152,
+		eConnect_UUIE_screeningIndicator = 1048576,
+		eConnect_UUIE_fastConnectRefused = 524288,
+		eConnect_UUIE_serviceControl = 262144,
+		eConnect_UUIE_capacity = 131072,
+		eConnect_UUIE_featureSet = 65536,
+	} options;
+	TransportAddress h245Address;
+	Connect_UUIE_fastStart fastStart;
+};
+
+typedef struct Connect_UUIE Connect_UUIE;
+
+struct Alerting_UUIE_fastStart {
+	int count;
+	OpenLogicalChannel item[30];
+};
+
+typedef struct Alerting_UUIE_fastStart Alerting_UUIE_fastStart;
+
+struct Alerting_UUIE {
+	enum {
+		eAlerting_UUIE_h245Address = -2147483648,
+		eAlerting_UUIE_callIdentifier = 1073741824,
+		eAlerting_UUIE_h245SecurityMode = 536870912,
+		eAlerting_UUIE_tokens = 268435456,
+		eAlerting_UUIE_cryptoTokens = 134217728,
+		eAlerting_UUIE_fastStart = 67108864,
+		eAlerting_UUIE_multipleCalls = 33554432,
+		eAlerting_UUIE_maintainConnection = 16777216,
+		eAlerting_UUIE_alertingAddress = 8388608,
+		eAlerting_UUIE_presentationIndicator = 4194304,
+		eAlerting_UUIE_screeningIndicator = 2097152,
+		eAlerting_UUIE_fastConnectRefused = 1048576,
+		eAlerting_UUIE_serviceControl = 524288,
+		eAlerting_UUIE_capacity = 262144,
+		eAlerting_UUIE_featureSet = 131072,
+	} options;
+	TransportAddress h245Address;
+	Alerting_UUIE_fastStart fastStart;
+};
+
+typedef struct Alerting_UUIE Alerting_UUIE;
+
+struct FacilityReason {
+	enum {
+		eFacilityReason_routeCallToGatekeeper = 0,
+		eFacilityReason_callForwarded = 1,
+		eFacilityReason_routeCallToMC = 2,
+		eFacilityReason_undefinedReason = 3,
+		eFacilityReason_conferenceListChoice = 4,
+		eFacilityReason_startH245 = 5,
+		eFacilityReason_noH245 = 6,
+		eFacilityReason_newTokens = 7,
+		eFacilityReason_featureSetUpdate = 8,
+		eFacilityReason_forwardedElements = 9,
+		eFacilityReason_transportedInformation = 10,
+	} choice;
+};
+
+typedef struct FacilityReason FacilityReason;
+
+struct Facility_UUIE_fastStart {
+	int count;
+	OpenLogicalChannel item[30];
+};
+
+typedef struct Facility_UUIE_fastStart Facility_UUIE_fastStart;
+
+struct Facility_UUIE {
+	enum {
+		eFacility_UUIE_alternativeAddress = -2147483648,
+		eFacility_UUIE_alternativeAliasAddress = 1073741824,
+		eFacility_UUIE_conferenceID = 536870912,
+		eFacility_UUIE_callIdentifier = 268435456,
+		eFacility_UUIE_destExtraCallInfo = 134217728,
+		eFacility_UUIE_remoteExtensionAddress = 67108864,
+		eFacility_UUIE_tokens = 33554432,
+		eFacility_UUIE_cryptoTokens = 16777216,
+		eFacility_UUIE_conferences = 8388608,
+		eFacility_UUIE_h245Address = 4194304,
+		eFacility_UUIE_fastStart = 2097152,
+		eFacility_UUIE_multipleCalls = 1048576,
+		eFacility_UUIE_maintainConnection = 524288,
+		eFacility_UUIE_fastConnectRefused = 262144,
+		eFacility_UUIE_serviceControl = 131072,
+		eFacility_UUIE_circuitInfo = 65536,
+		eFacility_UUIE_featureSet = 32768,
+		eFacility_UUIE_destinationInfo = 16384,
+		eFacility_UUIE_h245SecurityMode = 8192,
+	} options;
+	TransportAddress alternativeAddress;
+	FacilityReason reason;
+	TransportAddress h245Address;
+	Facility_UUIE_fastStart fastStart;
+};
+
+typedef struct Facility_UUIE Facility_UUIE;
+
+struct Progress_UUIE_fastStart {
+	int count;
+	OpenLogicalChannel item[30];
+};
+
+typedef struct Progress_UUIE_fastStart Progress_UUIE_fastStart;
+
+struct Progress_UUIE {
+	enum {
+		eProgress_UUIE_h245Address = -2147483648,
+		eProgress_UUIE_h245SecurityMode = 1073741824,
+		eProgress_UUIE_tokens = 536870912,
+		eProgress_UUIE_cryptoTokens = 268435456,
+		eProgress_UUIE_fastStart = 134217728,
+		eProgress_UUIE_multipleCalls = 67108864,
+		eProgress_UUIE_maintainConnection = 33554432,
+		eProgress_UUIE_fastConnectRefused = 16777216,
+	} options;
+	TransportAddress h245Address;
+	Progress_UUIE_fastStart fastStart;
+};
+
+typedef struct Progress_UUIE Progress_UUIE;
+
+struct H323_UU_PDU_h323_message_body {
+	enum {
+		eH323_UU_PDU_h323_message_body_setup = 0,
+		eH323_UU_PDU_h323_message_body_callProceeding = 1,
+		eH323_UU_PDU_h323_message_body_connect = 2,
+		eH323_UU_PDU_h323_message_body_alerting = 3,
+		eH323_UU_PDU_h323_message_body_information = 4,
+		eH323_UU_PDU_h323_message_body_releaseComplete = 5,
+		eH323_UU_PDU_h323_message_body_facility = 6,
+		eH323_UU_PDU_h323_message_body_progress = 7,
+		eH323_UU_PDU_h323_message_body_empty = 8,
+		eH323_UU_PDU_h323_message_body_status = 9,
+		eH323_UU_PDU_h323_message_body_statusInquiry = 10,
+		eH323_UU_PDU_h323_message_body_setupAcknowledge = 11,
+		eH323_UU_PDU_h323_message_body_notify = 12,
+	} choice;
+	union {
+		Setup_UUIE setup;
+		CallProceeding_UUIE callProceeding;
+		Connect_UUIE connect;
+		Alerting_UUIE alerting;
+		Facility_UUIE facility;
+		Progress_UUIE progress;
+	};
+};
+
+typedef struct H323_UU_PDU_h323_message_body H323_UU_PDU_h323_message_body;
+
+struct RequestMessage {
+	enum {
+		eRequestMessage_nonStandard = 0,
+		eRequestMessage_masterSlaveDetermination = 1,
+		eRequestMessage_terminalCapabilitySet = 2,
+		eRequestMessage_openLogicalChannel = 3,
+		eRequestMessage_closeLogicalChannel = 4,
+		eRequestMessage_requestChannelClose = 5,
+		eRequestMessage_multiplexEntrySend = 6,
+		eRequestMessage_requestMultiplexEntry = 7,
+		eRequestMessage_requestMode = 8,
+		eRequestMessage_roundTripDelayRequest = 9,
+		eRequestMessage_maintenanceLoopRequest = 10,
+		eRequestMessage_communicationModeRequest = 11,
+		eRequestMessage_conferenceRequest = 12,
+		eRequestMessage_multilinkRequest = 13,
+		eRequestMessage_logicalChannelRateRequest = 14,
+	} choice;
+	union {
+		OpenLogicalChannel openLogicalChannel;
+	};
+};
+
+typedef struct RequestMessage RequestMessage;
+
+struct OpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters {
+	enum {
+		eOpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters_h222LogicalChannelParameters = 0,
+		eOpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters_h2250LogicalChannelParameters = 1,
+	} choice;
+	union {
+		H2250LogicalChannelParameters h2250LogicalChannelParameters;
+	};
+};
+
+typedef struct OpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters OpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters;
+
+struct OpenLogicalChannelAck_reverseLogicalChannelParameters {
+	enum {
+		eOpenLogicalChannelAck_reverseLogicalChannelParameters_portNumber = -2147483648,
+		eOpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters = 1073741824,
+		eOpenLogicalChannelAck_reverseLogicalChannelParameters_replacementFor = 536870912,
+	} options;
+	OpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters multiplexParameters;
+};
+
+typedef struct OpenLogicalChannelAck_reverseLogicalChannelParameters OpenLogicalChannelAck_reverseLogicalChannelParameters;
+
+struct H2250LogicalChannelAckParameters {
+	enum {
+		eH2250LogicalChannelAckParameters_nonStandard = -2147483648,
+		eH2250LogicalChannelAckParameters_sessionID = 1073741824,
+		eH2250LogicalChannelAckParameters_mediaChannel = 536870912,
+		eH2250LogicalChannelAckParameters_mediaControlChannel = 268435456,
+		eH2250LogicalChannelAckParameters_dynamicRTPPayloadType = 134217728,
+		eH2250LogicalChannelAckParameters_flowControlToZero = 67108864,
+		eH2250LogicalChannelAckParameters_portNumber = 33554432,
+	} options;
+	H245_TransportAddress mediaChannel;
+	H245_TransportAddress mediaControlChannel;
+};
+
+typedef struct H2250LogicalChannelAckParameters H2250LogicalChannelAckParameters;
+
+struct OpenLogicalChannelAck_forwardMultiplexAckParameters {
+	enum {
+		eOpenLogicalChannelAck_forwardMultiplexAckParameters_h2250LogicalChannelAckParameters = 0,
+	} choice;
+	union {
+		H2250LogicalChannelAckParameters h2250LogicalChannelAckParameters;
+	};
+};
+
+typedef struct OpenLogicalChannelAck_forwardMultiplexAckParameters OpenLogicalChannelAck_forwardMultiplexAckParameters;
+
+struct OpenLogicalChannelAck {
+	enum {
+		eOpenLogicalChannelAck_reverseLogicalChannelParameters = -2147483648,
+		eOpenLogicalChannelAck_separateStack = 1073741824,
+		eOpenLogicalChannelAck_forwardMultiplexAckParameters = 536870912,
+		eOpenLogicalChannelAck_encryptionSync = 268435456,
+	} options;
+	OpenLogicalChannelAck_reverseLogicalChannelParameters reverseLogicalChannelParameters;
+	NetworkAccessParameters separateStack;
+	OpenLogicalChannelAck_forwardMultiplexAckParameters forwardMultiplexAckParameters;
+};
+
+typedef struct OpenLogicalChannelAck OpenLogicalChannelAck;
+
+struct ResponseMessage {
+	enum {
+		eResponseMessage_nonStandard = 0,
+		eResponseMessage_masterSlaveDeterminationAck = 1,
+		eResponseMessage_masterSlaveDeterminationReject = 2,
+		eResponseMessage_terminalCapabilitySetAck = 3,
+		eResponseMessage_terminalCapabilitySetReject = 4,
+		eResponseMessage_openLogicalChannelAck = 5,
+		eResponseMessage_openLogicalChannelReject = 6,
+		eResponseMessage_closeLogicalChannelAck = 7,
+		eResponseMessage_requestChannelCloseAck = 8,
+		eResponseMessage_requestChannelCloseReject = 9,
+		eResponseMessage_multiplexEntrySendAck = 10,
+		eResponseMessage_multiplexEntrySendReject = 11,
+		eResponseMessage_requestMultiplexEntryAck = 12,
+		eResponseMessage_requestMultiplexEntryReject = 13,
+		eResponseMessage_requestModeAck = 14,
+		eResponseMessage_requestModeReject = 15,
+		eResponseMessage_roundTripDelayResponse = 16,
+		eResponseMessage_maintenanceLoopAck = 17,
+		eResponseMessage_maintenanceLoopReject = 18,
+		eResponseMessage_communicationModeResponse = 19,
+		eResponseMessage_conferenceResponse = 20,
+		eResponseMessage_multilinkResponse = 21,
+		eResponseMessage_logicalChannelRateAcknowledge = 22,
+		eResponseMessage_logicalChannelRateReject = 23,
+	} choice;
+	union {
+		OpenLogicalChannelAck openLogicalChannelAck;
+	};
+};
+
+typedef struct ResponseMessage ResponseMessage;
+
+struct MultimediaSystemControlMessage {
+	enum {
+		eMultimediaSystemControlMessage_request = 0,
+		eMultimediaSystemControlMessage_response = 1,
+		eMultimediaSystemControlMessage_command = 2,
+		eMultimediaSystemControlMessage_indication = 3,
+	} choice;
+	union {
+		RequestMessage request;
+		ResponseMessage response;
+	};
+};
+
+typedef struct MultimediaSystemControlMessage MultimediaSystemControlMessage;
+
+struct H323_UU_PDU_h245Control {
+	int count;
+	MultimediaSystemControlMessage item[4];
+};
+
+typedef struct H323_UU_PDU_h245Control H323_UU_PDU_h245Control;
+
+struct H323_UU_PDU {
+	enum {
+		eH323_UU_PDU_nonStandardData = -2147483648,
+		eH323_UU_PDU_h4501SupplementaryService = 1073741824,
+		eH323_UU_PDU_h245Tunneling = 536870912,
+		eH323_UU_PDU_h245Control = 268435456,
+		eH323_UU_PDU_nonStandardControl = 134217728,
+		eH323_UU_PDU_callLinkage = 67108864,
+		eH323_UU_PDU_tunnelledSignallingMessage = 33554432,
+		eH323_UU_PDU_provisionalRespToH245Tunneling = 16777216,
+		eH323_UU_PDU_stimulusControl = 8388608,
+		eH323_UU_PDU_genericData = 4194304,
+	} options;
+	H323_UU_PDU_h323_message_body h323_message_body;
+	H323_UU_PDU_h245Control h245Control;
+};
+
+typedef struct H323_UU_PDU H323_UU_PDU;
+
+struct H323_UserInformation {
+	enum {
+		eH323_UserInformation_user_data = -2147483648,
+	} options;
+	H323_UU_PDU h323_uu_pdu;
+};
+
+typedef struct H323_UserInformation H323_UserInformation;
+
+typedef struct {
+	enum {
+		Q931_NationalEscape = 0,
+		Q931_Alerting = 1,
+		Q931_CallProceeding = 2,
+		Q931_Connect = 7,
+		Q931_ConnectAck = 15,
+		Q931_Progress = 3,
+		Q931_Setup = 5,
+		Q931_SetupAck = 13,
+		Q931_Resume = 38,
+		Q931_ResumeAck = 46,
+		Q931_ResumeReject = 34,
+		Q931_Suspend = 37,
+		Q931_SuspendAck = 45,
+		Q931_SuspendReject = 33,
+		Q931_UserInformation = 32,
+		Q931_Disconnect = 69,
+		Q931_Release = 77,
+		Q931_ReleaseComplete = 90,
+		Q931_Restart = 70,
+		Q931_RestartAck = 78,
+		Q931_Segment = 96,
+		Q931_CongestionCtrl = 121,
+		Q931_Information = 123,
+		Q931_Notify = 110,
+		Q931_Status = 125,
+		Q931_StatusEnquiry = 117,
+		Q931_Facility = 98,
+	} MessageType;
+	H323_UserInformation UUIE;
+} Q931;
+
+struct nf_ct_h323_master {
+	__be16 sig_port[2];
+	__be16 rtp_port[8];
+	union {
+		u_int32_t timeout;
+		u_int16_t tpkt_len[2];
+	};
+};
+
+struct field_t {
+	unsigned char type;
+	unsigned char sz;
+	unsigned char lb;
+	unsigned char ub;
+	unsigned short attr;
+	unsigned short offset;
+	const struct field_t *fields;
+};
+
+struct bitstr;
+
+typedef int (*decoder_t)(struct bitstr *, const struct field_t *, char *, int);
+
+struct bitstr {
+	unsigned char *buf;
+	unsigned char *beg;
+	unsigned char *end;
+	unsigned char *cur;
+	unsigned int bit;
+};
+
+struct PptpControlHeader;
+
+union pptp_ctrl_union;
+
+struct nf_nat_pptp_hook {
+	int (*outbound)(struct sk_buff *, struct nf_conn *, enum ip_conntrack_info, unsigned int, struct PptpControlHeader *, union pptp_ctrl_union *);
+	int (*inbound)(struct sk_buff *, struct nf_conn *, enum ip_conntrack_info, unsigned int, struct PptpControlHeader *, union pptp_ctrl_union *);
+	void (*exp_gre)(struct nf_conntrack_expect *, struct nf_conntrack_expect *);
+	void (*expectfn)(struct nf_conn *, struct nf_conntrack_expect *);
+};
+
+struct PptpControlHeader {
+	__be16 messageType;
+	__u16 reserved;
+};
+
+struct PptpStartSessionRequest {
+	__be16 protocolVersion;
+	__u16 reserved1;
+	__be32 framingCapability;
+	__be32 bearerCapability;
+	__be16 maxChannels;
+	__be16 firmwareRevision;
+	__u8 hostName[64];
+	__u8 vendorString[64];
+};
+
+struct PptpStartSessionReply {
+	__be16 protocolVersion;
+	__u8 resultCode;
+	__u8 generalErrorCode;
+	__be32 framingCapability;
+	__be32 bearerCapability;
+	__be16 maxChannels;
+	__be16 firmwareRevision;
+	__u8 hostName[64];
+	__u8 vendorString[64];
+};
+
+struct PptpStopSessionRequest {
+	__u8 reason;
+	__u8 reserved1;
+	__u16 reserved2;
+};
+
+struct PptpStopSessionReply {
+	__u8 resultCode;
+	__u8 generalErrorCode;
+	__u16 reserved1;
+};
+
+struct PptpOutCallRequest {
+	__be16 callID;
+	__be16 callSerialNumber;
+	__be32 minBPS;
+	__be32 maxBPS;
+	__be32 bearerType;
+	__be32 framingType;
+	__be16 packetWindow;
+	__be16 packetProcDelay;
+	__be16 phoneNumberLength;
+	__u16 reserved1;
+	__u8 phoneNumber[64];
+	__u8 subAddress[64];
+};
+
+struct PptpOutCallReply {
+	__be16 callID;
+	__be16 peersCallID;
+	__u8 resultCode;
+	__u8 generalErrorCode;
+	__be16 causeCode;
+	__be32 connectSpeed;
+	__be16 packetWindow;
+	__be16 packetProcDelay;
+	__be32 physChannelID;
+};
+
+struct PptpInCallRequest {
+	__be16 callID;
+	__be16 callSerialNumber;
+	__be32 callBearerType;
+	__be32 physChannelID;
+	__be16 dialedNumberLength;
+	__be16 dialingNumberLength;
+	__u8 dialedNumber[64];
+	__u8 dialingNumber[64];
+	__u8 subAddress[64];
+};
+
+struct PptpInCallReply {
+	__be16 callID;
+	__be16 peersCallID;
+	__u8 resultCode;
+	__u8 generalErrorCode;
+	__be16 packetWindow;
+	__be16 packetProcDelay;
+	__u16 reserved;
+};
+
+struct PptpInCallConnected {
+	__be16 peersCallID;
+	__u16 reserved;
+	__be32 connectSpeed;
+	__be16 packetWindow;
+	__be16 packetProcDelay;
+	__be32 callFramingType;
+};
+
+struct PptpClearCallRequest {
+	__be16 callID;
+	__u16 reserved;
+};
+
+struct PptpCallDisconnectNotify {
+	__be16 callID;
+	__u8 resultCode;
+	__u8 generalErrorCode;
+	__be16 causeCode;
+	__u16 reserved;
+	__u8 callStatistics[128];
+};
+
+struct PptpWanErrorNotify {
+	__be16 peersCallID;
+	__u16 reserved;
+	__be32 crcErrors;
+	__be32 framingErrors;
+	__be32 hardwareOverRuns;
+	__be32 bufferOverRuns;
+	__be32 timeoutErrors;
+	__be32 alignmentErrors;
+};
+
+struct PptpSetLinkInfo {
+	__be16 peersCallID;
+	__u16 reserved;
+	__be32 sendAccm;
+	__be32 recvAccm;
+};
+
+union pptp_ctrl_union {
+	struct PptpStartSessionRequest sreq;
+	struct PptpStartSessionReply srep;
+	struct PptpStopSessionRequest streq;
+	struct PptpStopSessionReply strep;
+	struct PptpOutCallRequest ocreq;
+	struct PptpOutCallReply ocack;
+	struct PptpInCallRequest icreq;
+	struct PptpInCallReply icack;
+	struct PptpInCallConnected iccon;
+	struct PptpClearCallRequest clrreq;
+	struct PptpCallDisconnectNotify disc;
+	struct PptpWanErrorNotify wanerr;
+	struct PptpSetLinkInfo setlink;
+};
+
+struct pptp_pkt_hdr {
+	__u16 packetLength;
+	__be16 packetType;
+	__be32 magicCookie;
+};
+
+enum sane_state {
+	SANE_STATE_NORMAL = 0,
+	SANE_STATE_START_REQUESTED = 1,
+};
+
+struct sane_request {
+	__be32 RPC_code;
+	__be32 handle;
+};
+
+struct sane_reply_net_start {
+	__be32 status;
+	__be16 zero;
+	__be16 port;
+};
+
+struct nf_ct_sane_master {
+	enum sane_state state;
+};
+
+struct tftphdr {
+	__be16 opcode;
+};
+
+enum ctattr_nat {
+	CTA_NAT_UNSPEC = 0,
+	CTA_NAT_V4_MINIP = 1,
+	CTA_NAT_V4_MAXIP = 2,
+	CTA_NAT_PROTO = 3,
+	CTA_NAT_V6_MINIP = 4,
+	CTA_NAT_V6_MAXIP = 5,
+	__CTA_NAT_MAX = 6,
+};
+
+enum ctattr_protonat {
+	CTA_PROTONAT_UNSPEC = 0,
+	CTA_PROTONAT_PORT_MIN = 1,
+	CTA_PROTONAT_PORT_MAX = 2,
+	__CTA_PROTONAT_MAX = 3,
+};
+
+struct nf_nat_pptp {
+	__be16 pns_call_id;
+	__be16 pac_call_id;
+};
+
+union nf_conntrack_nat_help {
+	struct nf_nat_pptp nat_pptp_info;
+};
+
+struct nf_conn_nat {
+	union nf_conntrack_nat_help help;
+	int masq_index;
+};
+
+struct nf_nat_range2 {
+	unsigned int flags;
+	union nf_inet_addr min_addr;
+	union nf_inet_addr max_addr;
+	union nf_conntrack_man_proto min_proto;
+	union nf_conntrack_man_proto max_proto;
+	union nf_conntrack_man_proto base_proto;
+};
+
+struct nf_nat_proto_clean {
+	u8 l3proto;
+	u8 l4proto;
+};
+
+struct nf_nat_lookup_hook_priv {
+	struct nf_hook_entries __attribute__((btf_type_tag("rcu"))) *entries;
+	struct callback_head callback_head;
+};
+
+struct nf_nat_hooks_net {
+	struct nf_hook_ops *nat_hook_ops;
+	unsigned int users;
+};
+
+struct nat_net {
+	struct nf_nat_hooks_net nat_proto_net[11];
+};
+
+struct inet6_ifaddr {
+	struct in6_addr addr;
+	__u32 prefix_len;
+	__u32 rt_priority;
+	__u32 valid_lft;
+	__u32 prefered_lft;
+	refcount_t refcnt;
+	spinlock_t lock;
+	int state;
+	__u32 flags;
+	__u8 dad_probes;
+	__u8 stable_privacy_retry;
+	__u16 scope;
+	__u64 dad_nonce;
+	unsigned long cstamp;
+	unsigned long tstamp;
+	struct delayed_work dad_work;
+	struct inet6_dev *idev;
+	struct fib6_info *rt;
+	struct hlist_node addr_lst;
+	struct list_head if_list;
+	struct list_head if_list_aux;
+	struct list_head tmp_list;
+	struct inet6_ifaddr *ifpub;
+	int regen_count;
+	bool tokenized;
+	u8 ifa_proto;
+	struct callback_head rcu;
+	struct in6_addr peer_addr;
+};
+
+struct masq_dev_work {
+	struct work_struct work;
+	struct net *net;
+	netns_tracker ns_tracker;
+	union nf_inet_addr addr;
+	int ifindex;
+	int (*iter)(struct nf_conn *, void *);
+};
+
+struct nf_conncount_tuple {
+	struct list_head node;
+	struct nf_conntrack_tuple tuple;
+	struct nf_conntrack_zone zone;
+	int cpu;
+	u32 jiffies32;
+};
+
+struct nf_conncount_list {
+	spinlock_t list_lock;
+	u32 last_gc;
+	struct list_head head;
+	unsigned int count;
+};
+
+struct nf_conncount_rb {
+	struct rb_node node;
+	struct nf_conncount_list list;
+	u32 key[5];
+	struct callback_head callback_head;
+};
+
+struct nf_conncount_data {
+	unsigned int keylen;
+	struct rb_root root[256];
+	struct net *net;
+	struct work_struct gc_work;
+	unsigned long pending_trees[4];
+	unsigned int gc_tree;
+};
+
+struct xt_af {
+	struct mutex mutex;
+	struct list_head match;
+	struct list_head target;
+};
+
+enum {
+	MTTG_TRAV_INIT = 0,
+	MTTG_TRAV_NFP_UNSPEC = 1,
+	MTTG_TRAV_NFP_SPEC = 2,
+	MTTG_TRAV_DONE = 3,
+};
+
+struct xt_action_param;
+
+struct xt_mtchk_param;
+
+struct xt_mtdtor_param;
+
+struct xt_match {
+	struct list_head list;
+	const char name[29];
+	u_int8_t revision;
+	bool (*match)(const struct sk_buff *, struct xt_action_param *);
+	int (*checkentry)(const struct xt_mtchk_param *);
+	void (*destroy)(const struct xt_mtdtor_param *);
+	struct module *me;
+	const char *table;
+	unsigned int matchsize;
+	unsigned int usersize;
+	unsigned int hooks;
+	unsigned short proto;
+	unsigned short family;
+};
+
+struct xt_target;
+
+struct xt_action_param {
+	union {
+		const struct xt_match *match;
+		const struct xt_target *target;
+	};
+	union {
+		const void *matchinfo;
+		const void *targinfo;
+	};
+	const struct nf_hook_state *state;
+	unsigned int thoff;
+	u16 fragoff;
+	bool hotdrop;
+};
+
+struct xt_tgchk_param;
+
+struct xt_tgdtor_param;
+
+struct xt_target {
+	struct list_head list;
+	const char name[29];
+	u_int8_t revision;
+	unsigned int (*target)(struct sk_buff *, const struct xt_action_param *);
+	int (*checkentry)(const struct xt_tgchk_param *);
+	void (*destroy)(const struct xt_tgdtor_param *);
+	struct module *me;
+	const char *table;
+	unsigned int targetsize;
+	unsigned int usersize;
+	unsigned int hooks;
+	unsigned short proto;
+	unsigned short family;
+};
+
+struct xt_tgchk_param {
+	struct net *net;
+	const char *table;
+	const void *entryinfo;
+	const struct xt_target *target;
+	void *targinfo;
+	unsigned int hook_mask;
+	u_int8_t family;
+	bool nft_compat;
+};
+
+struct xt_tgdtor_param {
+	struct net *net;
+	const struct xt_target *target;
+	void *targinfo;
+	u_int8_t family;
+};
+
+struct xt_mtchk_param {
+	struct net *net;
+	const char *table;
+	const void *entryinfo;
+	const struct xt_match *match;
+	void *matchinfo;
+	unsigned int hook_mask;
+	u_int8_t family;
+	bool nft_compat;
+};
+
+struct xt_mtdtor_param {
+	struct net *net;
+	const struct xt_match *match;
+	void *matchinfo;
+	u_int8_t family;
+};
+
+struct xt_table_info;
+
+struct xt_table {
+	struct list_head list;
+	unsigned int valid_hooks;
+	struct xt_table_info *private;
+	struct nf_hook_ops *ops;
+	struct module *me;
+	u_int8_t af;
+	int priority;
+	const char name[32];
+};
+
+struct xt_table_info {
+	unsigned int size;
+	unsigned int number;
+	unsigned int initial_entries;
+	unsigned int hook_entry[5];
+	unsigned int underflow[5];
+	unsigned int stacksize;
+	void ***jumpstack;
+	unsigned char entries[0];
+};
+
+struct xt_template {
+	struct list_head list;
+	int (*table_init)(struct net *);
+	struct module *me;
+	char name[32];
+};
+
+struct xt_entry_match {
+	union {
+		struct {
+			__u16 match_size;
+			char name[29];
+			__u8 revision;
+		} user;
+		struct {
+			__u16 match_size;
+			struct xt_match *match;
+		} kernel;
+		__u16 match_size;
+	} u;
+	unsigned char data[0];
+};
+
+struct nf_mttg_trav {
+	struct list_head *head;
+	struct list_head *curr;
+	uint8_t class;
+};
+
+struct xt_counters {
+	__u64 pcnt;
+	__u64 bcnt;
+};
+
+struct xt_entry_target {
+	union {
+		struct {
+			__u16 target_size;
+			char name[29];
+			__u8 revision;
+		} user;
+		struct {
+			__u16 target_size;
+			struct xt_target *target;
+		} kernel;
+		__u16 target_size;
+	} u;
+	unsigned char data[0];
+};
+
+struct xt_error_target {
+	struct xt_entry_target target;
+	char errorname[30];
+};
+
+struct xt_standard_target {
+	struct xt_entry_target target;
+	int verdict;
+};
+
+struct xt_counters_info {
+	char name[32];
+	unsigned int num_counters;
+	struct xt_counters counters[0];
+};
+
+struct xt_pernet {
+	struct list_head tables[11];
+};
+
+struct xt_percpu_counter_alloc_state {
+	unsigned int off;
+	const char __attribute__((btf_type_tag("percpu"))) *mem;
+};
+
+struct xt_tcp {
+	__u16 spts[2];
+	__u16 dpts[2];
+	__u8 option;
+	__u8 flg_mask;
+	__u8 flg_cmp;
+	__u8 invflags;
+};
+
+struct xt_udp {
+	__u16 spts[2];
+	__u16 dpts[2];
+	__u8 invflags;
+};
+
+struct ipt_icmp {
+	__u8 type;
+	__u8 code[2];
+	__u8 invflags;
+};
+
+struct ip6t_icmp {
+	__u8 type;
+	__u8 code[2];
+	__u8 invflags;
+};
+
+struct xt_mark_mtinfo1 {
+	__u32 mark;
+	__u32 mask;
+	__u8 invert;
+};
+
+struct xt_mark_tginfo2 {
+	__u32 mark;
+	__u32 mask;
+};
+
+enum {
+	XT_CONNMARK_SET = 0,
+	XT_CONNMARK_SAVE = 1,
+	XT_CONNMARK_RESTORE = 2,
+};
+
+enum {
+	D_SHIFT_LEFT = 0,
+	D_SHIFT_RIGHT = 1,
+};
+
+struct xt_connmark_mtinfo1 {
+	__u32 mark;
+	__u32 mask;
+	__u8 invert;
+};
+
+struct xt_connmark_tginfo2 {
+	__u32 ctmark;
+	__u32 ctmask;
+	__u32 nfmask;
+	__u8 shift_dir;
+	__u8 shift_bits;
+	__u8 mode;
+};
+
+struct xt_connmark_tginfo1 {
+	__u32 ctmark;
+	__u32 ctmask;
+	__u32 nfmask;
+	__u8 mode;
+};
+
+struct nf_nat_ipv4_range {
+	unsigned int flags;
+	__be32 min_ip;
+	__be32 max_ip;
+	union nf_conntrack_man_proto min;
+	union nf_conntrack_man_proto max;
+};
+
+struct nf_nat_ipv4_multi_range_compat {
+	unsigned int rangesize;
+	struct nf_nat_ipv4_range range[1];
+};
+
+struct nf_nat_range {
+	unsigned int flags;
+	union nf_inet_addr min_addr;
+	union nf_inet_addr max_addr;
+	union nf_conntrack_man_proto min_proto;
+	union nf_conntrack_man_proto max_proto;
+};
+
+struct xt_classify_target_info {
+	__u32 priority;
+};
+
+enum {
+	CONNSECMARK_SAVE = 1,
+	CONNSECMARK_RESTORE = 2,
+};
+
+struct xt_connsecmark_target_info {
+	__u8 mode;
+};
+
+enum {
+	XT_CT_NOTRACK = 1,
+	XT_CT_NOTRACK_ALIAS = 2,
+	XT_CT_ZONE_DIR_ORIG = 4,
+	XT_CT_ZONE_DIR_REPL = 8,
+	XT_CT_ZONE_MARK = 16,
+	XT_CT_MASK = 31,
+};
+
+struct xt_ct_target_info_v1 {
+	__u16 flags;
+	__u16 zone;
+	__u32 ct_events;
+	__u32 exp_events;
+	char helper[16];
+	char timeout[32];
+	struct nf_conn *ct;
+};
+
+struct ipt_ip {
+	struct in_addr src;
+	struct in_addr dst;
+	struct in_addr smsk;
+	struct in_addr dmsk;
+	char iniface[16];
+	char outiface[16];
+	unsigned char iniface_mask[16];
+	unsigned char outiface_mask[16];
+	__u16 proto;
+	__u8 flags;
+	__u8 invflags;
+};
+
+struct ipt_entry {
+	struct ipt_ip ip;
+	unsigned int nfcache;
+	__u16 target_offset;
+	__u16 next_offset;
+	unsigned int comefrom;
+	struct xt_counters counters;
+	unsigned char elems[0];
+};
+
+struct ip6t_ip6 {
+	struct in6_addr src;
+	struct in6_addr dst;
+	struct in6_addr smsk;
+	struct in6_addr dmsk;
+	char iniface[16];
+	char outiface[16];
+	unsigned char iniface_mask[16];
+	unsigned char outiface_mask[16];
+	__u16 proto;
+	__u8 tos;
+	__u8 flags;
+	__u8 invflags;
+};
+
+struct ip6t_entry {
+	struct ip6t_ip6 ipv6;
+	unsigned int nfcache;
+	__u16 target_offset;
+	__u16 next_offset;
+	unsigned int comefrom;
+	struct xt_counters counters;
+	unsigned char elems[0];
+};
+
+struct xt_ct_target_info {
+	__u16 flags;
+	__u16 zone;
+	__u32 ct_events;
+	__u32 exp_events;
+	char helper[16];
+	struct nf_conn *ct;
+};
+
+struct xt_DSCP_info {
+	__u8 dscp;
+};
+
+struct xt_tos_target_info {
+	__u8 tos_value;
+	__u8 tos_mask;
+};
+
+struct xt_nflog_info {
+	__u32 len;
+	__u16 group;
+	__u16 threshold;
+	__u16 flags;
+	__u16 pad;
+	char prefix[64];
+};
+
+struct xt_NFQ_info_v1 {
+	__u16 queuenum;
+	__u16 queues_total;
+};
+
+struct xt_NFQ_info {
+	__u16 queuenum;
+};
+
+struct xt_NFQ_info_v3 {
+	__u16 queuenum;
+	__u16 queues_total;
+	__u16 flags;
+};
+
+struct xt_NFQ_info_v2 {
+	__u16 queuenum;
+	__u16 queues_total;
+	__u16 bypass;
+};
+
+struct xt_secmark_target_info_v1 {
+	__u8 mode;
+	char secctx[256];
+	__u32 secid;
+};
+
+struct xt_secmark_target_info {
+	__u8 mode;
+	__u32 secid;
+	char secctx[256];
+};
+
+enum nf_tproxy_lookup_t {
+	NF_TPROXY_LOOKUP_LISTENER = 0,
+	NF_TPROXY_LOOKUP_ESTABLISHED = 1,
+};
+
+struct xt_tproxy_target_info {
+	__u32 mark_mask;
+	__u32 mark_value;
+	__be32 laddr;
+	__be16 lport;
+};
+
+struct xt_tproxy_target_info_v1 {
+	__u32 mark_mask;
+	__u32 mark_value;
+	union nf_inet_addr laddr;
+	__be16 lport;
+};
+
+struct xt_tcpmss_info {
+	__u16 mss;
+};
+
+struct xt_tee_tginfo;
+
+struct xt_tee_priv {
+	struct list_head list;
+	struct xt_tee_tginfo *tginfo;
+	int oif;
+};
+
+struct xt_tee_tginfo {
+	union nf_inet_addr gw;
+	char oif[16];
+	struct xt_tee_priv *priv;
+};
+
+struct tee_net {
+	struct list_head priv_list;
+	struct mutex lock;
+};
+
+struct idletimer_tg {
+	struct list_head entry;
+	struct alarm alarm;
+	struct timer_list timer;
+	struct work_struct work;
+	struct kobject *kobj;
+	struct device_attribute attr;
+	struct timespec64 delayed_timer_trigger;
+	struct timespec64 last_modified_timer;
+	struct timespec64 last_suspend_time;
+	struct notifier_block pm_nb;
+	int timeout;
+	unsigned int refcnt;
+	u8 timer_type;
+	bool work_pending;
+	bool send_nl_msg;
+	bool active;
+	uid_t uid;
+	bool suspend_time_valid;
+};
+
+struct idletimer_tg_info {
+	__u32 timeout;
+	char label[28];
+	struct idletimer_tg *timer;
+};
+
+struct idletimer_tg_info_v1 {
+	__u32 timeout;
+	char label[28];
+	__u8 send_nl_msg;
+	__u8 timer_type;
+	struct idletimer_tg *timer;
+};
+
+enum xt_bpf_modes {
+	XT_BPF_MODE_BYTECODE = 0,
+	XT_BPF_MODE_FD_PINNED = 1,
+	XT_BPF_MODE_FD_ELF = 2,
+};
+
+struct xt_bpf_info {
+	__u16 bpf_program_num_elem;
+	struct sock_filter bpf_program[64];
+	struct bpf_prog *filter;
+};
+
+struct xt_bpf_info_v1 {
+	__u16 mode;
+	__u16 bpf_program_num_elem;
+	__s32 fd;
+	union {
+		struct sock_filter bpf_program[64];
+		char path[512];
+	};
+	struct bpf_prog *filter;
+};
+
+enum xt_connbytes_what {
+	XT_CONNBYTES_PKTS = 0,
+	XT_CONNBYTES_BYTES = 1,
+	XT_CONNBYTES_AVGPKT = 2,
+};
+
+enum xt_connbytes_direction {
+	XT_CONNBYTES_DIR_ORIGINAL = 0,
+	XT_CONNBYTES_DIR_REPLY = 1,
+	XT_CONNBYTES_DIR_BOTH = 2,
+};
+
+struct xt_connbytes_info {
+	struct {
+		__u64 from;
+		__u64 to;
+	} count;
+	__u8 what;
+	__u8 direction;
+};
+
+enum {
+	XT_CONNLIMIT_INVERT = 1,
+	XT_CONNLIMIT_DADDR = 2,
+};
+
+struct xt_connlimit_info {
+	union {
+		union nf_inet_addr mask;
+	};
+	unsigned int limit;
+	__u32 flags;
+	struct nf_conncount_data *data;
+};
+
+enum {
+	XT_CONNTRACK_STATE = 1,
+	XT_CONNTRACK_PROTO = 2,
+	XT_CONNTRACK_ORIGSRC = 4,
+	XT_CONNTRACK_ORIGDST = 8,
+	XT_CONNTRACK_REPLSRC = 16,
+	XT_CONNTRACK_REPLDST = 32,
+	XT_CONNTRACK_STATUS = 64,
+	XT_CONNTRACK_EXPIRES = 128,
+	XT_CONNTRACK_ORIGSRC_PORT = 256,
+	XT_CONNTRACK_ORIGDST_PORT = 512,
+	XT_CONNTRACK_REPLSRC_PORT = 1024,
+	XT_CONNTRACK_REPLDST_PORT = 2048,
+	XT_CONNTRACK_DIRECTION = 4096,
+	XT_CONNTRACK_STATE_ALIAS = 8192,
+};
+
+struct xt_conntrack_mtinfo2 {
+	union nf_inet_addr origsrc_addr;
+	union nf_inet_addr origsrc_mask;
+	union nf_inet_addr origdst_addr;
+	union nf_inet_addr origdst_mask;
+	union nf_inet_addr replsrc_addr;
+	union nf_inet_addr replsrc_mask;
+	union nf_inet_addr repldst_addr;
+	union nf_inet_addr repldst_mask;
+	__u32 expires_min;
+	__u32 expires_max;
+	__u16 l4proto;
+	__be16 origsrc_port;
+	__be16 origdst_port;
+	__be16 replsrc_port;
+	__be16 repldst_port;
+	__u16 match_flags;
+	__u16 invert_flags;
+	__u16 state_mask;
+	__u16 status_mask;
+};
+
+struct xt_conntrack_mtinfo3 {
+	union nf_inet_addr origsrc_addr;
+	union nf_inet_addr origsrc_mask;
+	union nf_inet_addr origdst_addr;
+	union nf_inet_addr origdst_mask;
+	union nf_inet_addr replsrc_addr;
+	union nf_inet_addr replsrc_mask;
+	union nf_inet_addr repldst_addr;
+	union nf_inet_addr repldst_mask;
+	__u32 expires_min;
+	__u32 expires_max;
+	__u16 l4proto;
+	__u16 origsrc_port;
+	__u16 origdst_port;
+	__u16 replsrc_port;
+	__u16 repldst_port;
+	__u16 match_flags;
+	__u16 invert_flags;
+	__u16 state_mask;
+	__u16 status_mask;
+	__u16 origsrc_port_high;
+	__u16 origdst_port_high;
+	__u16 replsrc_port_high;
+	__u16 repldst_port_high;
+};
+
+struct xt_conntrack_mtinfo1 {
+	union nf_inet_addr origsrc_addr;
+	union nf_inet_addr origsrc_mask;
+	union nf_inet_addr origdst_addr;
+	union nf_inet_addr origdst_mask;
+	union nf_inet_addr replsrc_addr;
+	union nf_inet_addr replsrc_mask;
+	union nf_inet_addr repldst_addr;
+	union nf_inet_addr repldst_mask;
+	__u32 expires_min;
+	__u32 expires_max;
+	__u16 l4proto;
+	__be16 origsrc_port;
+	__be16 origdst_port;
+	__be16 replsrc_port;
+	__be16 repldst_port;
+	__u16 match_flags;
+	__u16 invert_flags;
+	__u8 state_mask;
+	__u8 status_mask;
+};
+
+struct xt_dscp_info {
+	__u8 dscp;
+	__u8 invert;
+};
+
+struct xt_tos_match_info {
+	__u8 tos_mask;
+	__u8 tos_value;
+	__u8 invert;
+};
+
+struct xt_ecn_info {
+	__u8 operation;
+	__u8 invert;
+	__u8 ip_ect;
+	union {
+		struct {
+			__u8 ect;
+		} tcp;
+	} proto;
+};
+
+struct xt_esp {
+	__u32 spis[2];
+	__u8 invflags;
+};
+
+enum {
+	XT_HASHLIMIT_HASH_DIP = 1,
+	XT_HASHLIMIT_HASH_DPT = 2,
+	XT_HASHLIMIT_HASH_SIP = 4,
+	XT_HASHLIMIT_HASH_SPT = 8,
+	XT_HASHLIMIT_INVERT = 16,
+	XT_HASHLIMIT_BYTES = 32,
+	XT_HASHLIMIT_RATE_MATCH = 64,
+};
+
+struct hashlimit_cfg1 {
+	__u32 mode;
+	__u32 avg;
+	__u32 burst;
+	__u32 size;
+	__u32 max;
+	__u32 gc_interval;
+	__u32 expire;
+	__u8 srcmask;
+	__u8 dstmask;
+};
+
+struct hashlimit_cfg2 {
+	__u64 avg;
+	__u64 burst;
+	__u32 mode;
+	__u32 size;
+	__u32 max;
+	__u32 gc_interval;
+	__u32 expire;
+	__u8 srcmask;
+	__u8 dstmask;
+};
+
+struct dsthash_dst {
+	union {
+		struct {
+			__be32 src;
+			__be32 dst;
+		} ip;
+		struct {
+			__be32 src[4];
+			__be32 dst[4];
+		} ip6;
+	};
+	__be16 src_port;
+	__be16 dst_port;
+};
+
+struct dsthash_ent {
+	struct hlist_node node;
+	struct dsthash_dst dst;
+	spinlock_t lock;
+	unsigned long expires;
+	struct {
+		unsigned long prev;
+		union {
+			struct {
+				u_int64_t credit;
+				u_int64_t credit_cap;
+				u_int64_t cost;
+			};
+			struct {
+				u_int32_t interval;
+				u_int32_t prev_window;
+				u_int64_t current_rate;
+				u_int64_t rate;
+				int64_t burst;
+			};
+		};
+	} rateinfo;
+	struct callback_head rcu;
+};
+
+struct hashlimit_cfg3 {
+	__u64 avg;
+	__u64 burst;
+	__u32 mode;
+	__u32 size;
+	__u32 max;
+	__u32 gc_interval;
+	__u32 expire;
+	__u32 interval;
+	__u8 srcmask;
+	__u8 dstmask;
+};
+
+struct xt_hashlimit_htable {
+	struct hlist_node node;
+	refcount_t use;
+	u_int8_t family;
+	bool rnd_initialized;
+	struct hashlimit_cfg3 cfg;
+	spinlock_t lock;
+	u_int32_t rnd;
+	unsigned int count;
+	struct delayed_work gc_work;
+	struct proc_dir_entry *pde;
+	const char *name;
+	struct net *net;
+	struct hlist_head hash[0];
+};
+
+struct hashlimit_net {
+	struct hlist_head htables;
+	struct proc_dir_entry *ipt_hashlimit;
+	struct proc_dir_entry *ip6t_hashlimit;
+};
+
+struct xt_hashlimit_mtinfo1 {
+	char name[16];
+	struct hashlimit_cfg1 cfg;
+	struct xt_hashlimit_htable *hinfo;
+};
+
+struct xt_hashlimit_mtinfo2 {
+	char name[255];
+	struct hashlimit_cfg2 cfg;
+	struct xt_hashlimit_htable *hinfo;
+};
+
+struct xt_hashlimit_mtinfo3 {
+	char name[255];
+	struct hashlimit_cfg3 cfg;
+	struct xt_hashlimit_htable *hinfo;
+};
+
+struct xt_helper_info {
+	int invert;
+	char name[30];
+};
+
+enum {
+	IPT_TTL_EQ = 0,
+	IPT_TTL_NE = 1,
+	IPT_TTL_LT = 2,
+	IPT_TTL_GT = 3,
+};
+
+enum {
+	IP6T_HL_EQ = 0,
+	IP6T_HL_NE = 1,
+	IP6T_HL_LT = 2,
+	IP6T_HL_GT = 3,
+};
+
+struct ipt_ttl_info {
+	__u8 mode;
+	__u8 ttl;
+};
+
+struct ip6t_hl_info {
+	__u8 mode;
+	__u8 hop_limit;
+};
+
+enum {
+	IPRANGE_SRC = 1,
+	IPRANGE_DST = 2,
+	IPRANGE_SRC_INV = 16,
+	IPRANGE_DST_INV = 32,
+};
+
+struct xt_iprange_mtinfo {
+	union nf_inet_addr src_min;
+	union nf_inet_addr src_max;
+	union nf_inet_addr dst_min;
+	union nf_inet_addr dst_max;
+	__u8 flags;
+};
+
+enum xt_l2tp_type {
+	XT_L2TP_TYPE_CONTROL = 0,
+	XT_L2TP_TYPE_DATA = 1,
+};
+
+enum {
+	XT_L2TP_TID = 1,
+	XT_L2TP_SID = 2,
+	XT_L2TP_VERSION = 4,
+	XT_L2TP_TYPE = 8,
+};
+
+struct xt_l2tp_info {
+	__u32 tid;
+	__u32 sid;
+	__u8 version;
+	__u8 type;
+	__u8 flags;
+};
+
+struct l2tp_data {
+	u32 tid;
+	u32 sid;
+	u8 type;
+	u8 version;
+};
+
+union l2tp_val {
+	__be16 val16[2];
+	__be32 val32;
+};
+
+struct xt_length_info {
+	__u16 min;
+	__u16 max;
+	__u8 invert;
+};
+
+struct xt_limit_priv;
+
+struct xt_rateinfo {
+	__u32 avg;
+	__u32 burst;
+	unsigned long prev;
+	__u32 credit;
+	__u32 credit_cap;
+	__u32 cost;
+	struct xt_limit_priv *master;
+};
+
+struct xt_limit_priv {
+	unsigned long prev;
+	u32 credit;
+};
+
+struct xt_mac_info {
+	unsigned char srcaddr[6];
+	int invert;
+};
+
+enum xt_multiport_flags {
+	XT_MULTIPORT_SOURCE = 0,
+	XT_MULTIPORT_DESTINATION = 1,
+	XT_MULTIPORT_EITHER = 2,
+};
+
+struct xt_multiport_v1 {
+	__u8 flags;
+	__u8 count;
+	__u16 ports[15];
+	__u8 pflags[15];
+	__u8 invert;
+};
+
+enum {
+	XT_OWNER_UID = 1,
+	XT_OWNER_GID = 2,
+	XT_OWNER_SOCKET = 4,
+	XT_OWNER_SUPPL_GROUPS = 8,
+};
+
+struct xt_owner_match_info {
+	__u32 uid_min;
+	__u32 uid_max;
+	__u32 gid_min;
+	__u32 gid_max;
+	__u8 match;
+	__u8 invert;
+};
+
+struct xt_pkttype_info {
+	int pkttype;
+	int invert;
+};
+
+enum xt_policy_flags {
+	XT_POLICY_MATCH_IN = 1,
+	XT_POLICY_MATCH_OUT = 2,
+	XT_POLICY_MATCH_NONE = 4,
+	XT_POLICY_MATCH_STRICT = 8,
+};
+
+struct xt_policy_spec {
+	__u8 saddr: 1;
+	__u8 daddr: 1;
+	__u8 proto: 1;
+	__u8 mode: 1;
+	__u8 spi: 1;
+	__u8 reqid: 1;
+};
+
+struct xt_policy_elem {
+	union {
+		struct {
+			union nf_inet_addr saddr;
+			union nf_inet_addr smask;
+			union nf_inet_addr daddr;
+			union nf_inet_addr dmask;
+		};
+	};
+	__be32 spi;
+	__u32 reqid;
+	__u8 proto;
+	__u8 mode;
+	struct xt_policy_spec match;
+	struct xt_policy_spec invert;
+};
+
+struct xt_policy_info {
+	struct xt_policy_elem pol[4];
+	__u16 flags;
+	__u16 len;
+};
+
+enum xt_quota_flags {
+	XT_QUOTA_INVERT = 1,
+};
+
+struct xt_quota_priv;
+
+struct xt_quota_info {
+	__u32 flags;
+	__u32 pad;
+	__u64 quota;
+	struct xt_quota_priv *master;
+};
+
+struct xt_quota_priv {
+	spinlock_t lock;
+	uint64_t quota;
+};
+
+enum xt_quota_flags___2 {
+	XT_QUOTA_INVERT___2 = 1,
+	XT_QUOTA_GROW = 2,
+	XT_QUOTA_PACKET = 4,
+	XT_QUOTA_NO_CHANGE = 8,
+	XT_QUOTA_MASK = 15,
+};
+
+struct xt_quota_counter {
+	u_int64_t quota;
+	spinlock_t lock;
+	struct list_head list;
+	atomic_t ref;
+	char name[15];
+	struct proc_dir_entry *procfs_entry;
+};
+
+struct ulog_packet_msg {
+	unsigned long mark;
+	long timestamp_sec;
+	long timestamp_usec;
+	unsigned int hook;
+	char indev_name[16];
+	char outdev_name[16];
+	size_t data_len;
+	char prefix[32];
+	unsigned char mac_len;
+	unsigned char mac[80];
+	unsigned char payload[0];
+};
+
+typedef struct ulog_packet_msg ulog_packet_msg_t;
+
+struct xt_quota_mtinfo2 {
+	char name[15];
+	u_int8_t flags;
+	__u64 quota;
+	struct xt_quota_counter *master;
+};
+
+struct xt_socket_mtinfo1 {
+	__u8 flags;
+};
+
+enum {
+	XT_SOCKET_TRANSPARENT = 1,
+	XT_SOCKET_NOWILDCARD = 2,
+	XT_SOCKET_RESTORESKMARK = 4,
+};
+
+struct xt_socket_mtinfo2 {
+	__u8 flags;
+};
+
+struct xt_socket_mtinfo3 {
+	__u8 flags;
+};
+
+struct xt_state_info {
+	unsigned int statemask;
+};
+
+enum xt_statistic_flags {
+	XT_STATISTIC_INVERT = 1,
+};
+
+enum xt_statistic_mode {
+	XT_STATISTIC_MODE_RANDOM = 0,
+	XT_STATISTIC_MODE_NTH = 1,
+	__XT_STATISTIC_MODE_MAX = 2,
+};
+
+struct xt_statistic_priv;
+
+struct xt_statistic_info {
+	__u16 mode;
+	__u16 flags;
+	union {
+		struct {
+			__u32 probability;
+		} random;
+		struct {
+			__u32 every;
+			__u32 packet;
+			__u32 count;
+		} nth;
+	} u;
+	struct xt_statistic_priv *master;
+};
+
+struct xt_statistic_priv {
+	atomic_t count;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+enum {
+	XT_STRING_FLAG_INVERT = 1,
+	XT_STRING_FLAG_IGNORECASE = 2,
+};
+
+struct xt_string_info {
+	__u16 from_offset;
+	__u16 to_offset;
+	char algo[16];
+	char pattern[128];
+	__u8 patlen;
+	union {
+		struct {
+			__u8 invert;
+		} v0;
+		struct {
+			__u8 flags;
+		} v1;
+	} u;
+	struct ts_config *config;
+};
+
+enum {
+	XT_TIME_LOCAL_TZ = 1,
+	XT_TIME_CONTIGUOUS = 2,
+	XT_TIME_ALL_MONTHDAYS = 4294967294,
+	XT_TIME_ALL_WEEKDAYS = 254,
+	XT_TIME_MIN_DAYTIME = 0,
+	XT_TIME_MAX_DAYTIME = 86399,
+};
+
+enum {
+	DSE_FIRST = 2039,
+	SECONDS_PER_DAY = 86400,
+};
+
+struct xtm {
+	u_int8_t month;
+	u_int8_t monthday;
+	u_int8_t weekday;
+	u_int8_t hour;
+	u_int8_t minute;
+	u_int8_t second;
+	unsigned int dse;
+};
+
+struct xt_time_info {
+	__u32 date_start;
+	__u32 date_stop;
+	__u32 daytime_start;
+	__u32 daytime_stop;
+	__u32 monthdays_match;
+	__u8 weekdays_match;
+	__u8 flags;
+};
+
+enum xt_u32_ops {
+	XT_U32_AND = 0,
+	XT_U32_LEFTSH = 1,
+	XT_U32_RIGHTSH = 2,
+	XT_U32_AT = 3,
+};
+
+struct xt_u32_location_element {
+	__u32 number;
+	__u8 nextop;
+};
+
+struct xt_u32_value_element {
+	__u32 min;
+	__u32 max;
+};
+
+struct xt_u32_test {
+	struct xt_u32_location_element location[11];
+	struct xt_u32_value_element value[11];
+	__u8 nnums;
+	__u8 nvalues;
+};
+
+struct xt_u32 {
+	struct xt_u32_test tests[11];
+	__u8 ntests;
+	__u8 invert;
+};
+
+struct uncached_list {
+	spinlock_t lock;
+	struct list_head head;
+	struct list_head quarantine;
+};
+
+struct ip_sf_list {
+	struct ip_sf_list *sf_next;
+	unsigned long sf_count[2];
+	__be32 sf_inaddr;
+	unsigned char sf_gsresp;
+	unsigned char sf_oldin;
+	unsigned char sf_crcount;
+};
+
+struct rt_cache_stat {
+	unsigned int in_slow_tot;
+	unsigned int in_slow_mc;
+	unsigned int in_no_route;
+	unsigned int in_brd;
+	unsigned int in_martian_dst;
+	unsigned int in_martian_src;
+	unsigned int out_slow_tot;
+	unsigned int out_slow_mc;
+};
+
+struct ip_sf_socklist {
+	unsigned int sl_max;
+	unsigned int sl_count;
+	struct callback_head rcu;
+	__be32 sl_addr[0];
+};
+
+typedef u8 dscp_t;
+
+struct fib_alias {
+	struct hlist_node fa_list;
+	struct fib_info *fa_info;
+	dscp_t fa_dscp;
+	u8 fa_type;
+	u8 fa_state;
+	u8 fa_slen;
+	u32 tb_id;
+	s16 fa_default;
+	u8 offload;
+	u8 trap;
+	u8 offload_failed;
+	struct callback_head rcu;
+};
+
+struct ipv4_addr_key {
+	__be32 addr;
+	int vif;
+};
+
+struct inetpeer_addr {
+	union {
+		struct ipv4_addr_key a4;
+		struct in6_addr a6;
+		u32 key[4];
+	};
+	__u16 family;
+};
+
+struct inet_peer {
+	struct rb_node rb_node;
+	struct inetpeer_addr daddr;
+	u32 metrics[17];
+	u32 rate_tokens;
+	u32 n_redirects;
+	unsigned long rate_last;
+	union {
+		struct {
+			atomic_t rid;
+		};
+		struct callback_head rcu;
+	};
+	__u32 dtime;
+	refcount_t refcnt;
+};
+
+struct rtmsg {
+	unsigned char rtm_family;
+	unsigned char rtm_dst_len;
+	unsigned char rtm_src_len;
+	unsigned char rtm_tos;
+	unsigned char rtm_table;
+	unsigned char rtm_protocol;
+	unsigned char rtm_scope;
+	unsigned char rtm_type;
+	unsigned int rtm_flags;
+};
+
+struct fib_rt_info {
+	struct fib_info *fi;
+	u32 tb_id;
+	__be32 dst;
+	int dst_len;
+	dscp_t dscp;
+	u8 type;
+	u8 offload: 1;
+	u8 trap: 1;
+	u8 offload_failed: 1;
+	u8 unused: 5;
+};
+
+struct rtvia {
+	__kernel_sa_family_t rtvia_family;
+	__u8 rtvia_addr[0];
+};
+
+struct net_offload {
+	struct offload_callbacks callbacks;
+	unsigned int flags;
+};
+
+struct raw_hashinfo {
+	spinlock_t lock;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	struct hlist_head ht[256];
+};
+
+enum ip_defrag_users {
+	IP_DEFRAG_LOCAL_DELIVER = 0,
+	IP_DEFRAG_CALL_RA_CHAIN = 1,
+	IP_DEFRAG_CONNTRACK_IN = 2,
+	__IP_DEFRAG_CONNTRACK_IN_END = 65537,
+	IP_DEFRAG_CONNTRACK_OUT = 65538,
+	__IP_DEFRAG_CONNTRACK_OUT_END = 131073,
+	IP_DEFRAG_CONNTRACK_BRIDGE_IN = 131074,
+	__IP_DEFRAG_CONNTRACK_BRIDGE_IN = 196609,
+	IP_DEFRAG_VS_IN = 196610,
+	IP_DEFRAG_VS_OUT = 196611,
+	IP_DEFRAG_VS_FWD = 196612,
+	IP_DEFRAG_AF_PACKET = 196613,
+	IP_DEFRAG_MACVLAN = 196614,
+};
+
+enum {
+	XFRM_DEV_OFFLOAD_UNSPECIFIED = 0,
+	XFRM_DEV_OFFLOAD_CRYPTO = 1,
+	XFRM_DEV_OFFLOAD_PACKET = 2,
+};
+
+enum {
+	INET_FRAG_FIRST_IN = 1,
+	INET_FRAG_LAST_IN = 2,
+	INET_FRAG_COMPLETE = 4,
+	INET_FRAG_HASH_DEAD = 8,
+	INET_FRAG_DROP = 16,
+};
+
+struct ipq {
+	struct inet_frag_queue q;
+	u8 ecn;
+	u16 max_df_size;
+	int iif;
+	unsigned int rid;
+	struct inet_peer *peer;
+};
+
+enum pkt_hash_types {
+	PKT_HASH_TYPE_NONE = 0,
+	PKT_HASH_TYPE_L2 = 1,
+	PKT_HASH_TYPE_L3 = 2,
+	PKT_HASH_TYPE_L4 = 3,
+};
+
+enum {
+	LWTUNNEL_XMIT_DONE = 0,
+	LWTUNNEL_XMIT_CONTINUE = 256,
+};
+
+struct ip_frag_state {
+	bool DF;
+	unsigned int hlen;
+	unsigned int ll_rs;
+	unsigned int mtu;
+	unsigned int left;
+	int offset;
+	int ptr;
+	__be16 not_last_frag;
+};
+
+struct ip_fraglist_iter {
+	struct sk_buff *frag;
+	struct iphdr *iph;
+	int offset;
+	unsigned int hlen;
+};
+
+struct ipcm_cookie {
+	struct sockcm_cookie sockc;
+	__be32 addr;
+	int oif;
+	struct ip_options_rcu *opt;
+	__u8 protocol;
+	__u8 ttl;
+	__s16 tos;
+	char priority;
+	__u16 gso_size;
+	u64 android_kabi_reserved1;
+};
+
+struct ip_reply_arg {
+	struct kvec iov[1];
+	int flags;
+	__wsum csum;
+	int csumoffset;
+	int bound_dev_if;
+	u8 tos;
+	kuid_t uid;
+};
+
+struct ip_options_data {
+	struct ip_options_rcu opt;
+	char data[40];
+};
+
+struct in_pktinfo {
+	int ipi_ifindex;
+	struct in_addr ipi_spec_dst;
+	struct in_addr ipi_addr;
+};
+
+struct ip_mreq_source {
+	__be32 imr_multiaddr;
+	__be32 imr_interface;
+	__be32 imr_sourceaddr;
+};
+
+struct ip_msfilter {
+	__be32 imsf_multiaddr;
+	__be32 imsf_interface;
+	__u32 imsf_fmode;
+	__u32 imsf_numsrc;
+	union {
+		__be32 imsf_slist[1];
+		struct {
+			struct {} __empty_imsf_slist_flex;
+			__be32 imsf_slist_flex[0];
+		};
+	};
+};
+
+struct group_source_req {
+	__u32 gsr_interface;
+	struct __kernel_sockaddr_storage gsr_group;
+	struct __kernel_sockaddr_storage gsr_source;
+};
+
+struct compat_group_source_req {
+	__u32 gsr_interface;
+	struct __kernel_sockaddr_storage gsr_group;
+	struct __kernel_sockaddr_storage gsr_source;
+} __attribute__((packed));
+
+struct group_filter {
+	union {
+		struct {
+			__u32 gf_interface_aux;
+			struct __kernel_sockaddr_storage gf_group_aux;
+			__u32 gf_fmode_aux;
+			__u32 gf_numsrc_aux;
+			struct __kernel_sockaddr_storage gf_slist[1];
+		};
+		struct {
+			__u32 gf_interface;
+			struct __kernel_sockaddr_storage gf_group;
+			__u32 gf_fmode;
+			__u32 gf_numsrc;
+			struct __kernel_sockaddr_storage gf_slist_flex[0];
+		};
+	};
+};
+
+struct compat_group_req {
+	__u32 gr_interface;
+	struct __kernel_sockaddr_storage gr_group;
+} __attribute__((packed));
+
+struct group_req {
+	__u32 gr_interface;
+	struct __kernel_sockaddr_storage gr_group;
+};
+
+struct compat_group_filter {
+	union {
+		struct {
+			__u32 gf_interface_aux;
+			struct __kernel_sockaddr_storage gf_group_aux;
+			__u32 gf_fmode_aux;
+			__u32 gf_numsrc_aux;
+			struct __kernel_sockaddr_storage gf_slist[1];
+		} __attribute__((packed));
+		struct {
+			__u32 gf_interface;
+			struct __kernel_sockaddr_storage gf_group;
+			__u32 gf_fmode;
+			__u32 gf_numsrc;
+			struct __kernel_sockaddr_storage gf_slist_flex[0];
+		} __attribute__((packed));
+	};
+};
+
+typedef u32 inet_ehashfn_t(const struct net *, const __be32, const __u16, const __be32, const __be16);
+
+struct tcpvegas_info {
+	__u32 tcpv_enabled;
+	__u32 tcpv_rttcnt;
+	__u32 tcpv_rtt;
+	__u32 tcpv_minrtt;
+};
+
+struct tcp_dctcp_info {
+	__u16 dctcp_enabled;
+	__u16 dctcp_ce_state;
+	__u32 dctcp_alpha;
+	__u32 dctcp_ab_ecn;
+	__u32 dctcp_ab_tot;
+};
+
+struct tcp_bbr_info {
+	__u32 bbr_bw_lo;
+	__u32 bbr_bw_hi;
+	__u32 bbr_min_rtt;
+	__u32 bbr_pacing_gain;
+	__u32 bbr_cwnd_gain;
+};
+
+union tcp_cc_info {
+	struct tcpvegas_info vegas;
+	struct tcp_dctcp_info dctcp;
+	struct tcp_bbr_info bbr;
+};
+
+enum tsq_enum {
+	TSQ_THROTTLED = 0,
+	TSQ_QUEUED = 1,
+	TCP_TSQ_DEFERRED = 2,
+	TCP_WRITE_TIMER_DEFERRED = 3,
+	TCP_DELACK_TIMER_DEFERRED = 4,
+	TCP_MTU_REDUCED_DEFERRED = 5,
+};
+
+enum tcp_chrono {
+	TCP_CHRONO_UNSPEC = 0,
+	TCP_CHRONO_BUSY = 1,
+	TCP_CHRONO_RWND_LIMITED = 2,
+	TCP_CHRONO_SNDBUF_LIMITED = 3,
+	__TCP_CHRONO_MAX = 4,
+};
+
+enum {
+	TCP_NO_QUEUE = 0,
+	TCP_RECV_QUEUE = 1,
+	TCP_SEND_QUEUE = 2,
+	TCP_QUEUES_NR = 3,
+};
+
+enum inet_csk_ack_state_t {
+	ICSK_ACK_SCHED = 1,
+	ICSK_ACK_TIMER = 2,
+	ICSK_ACK_PUSHED = 4,
+	ICSK_ACK_PUSHED2 = 8,
+	ICSK_ACK_NOW = 16,
+	ICSK_ACK_NOMEM = 32,
+};
+
+enum {
+	TCP_CMSG_INQ = 1,
+	TCP_CMSG_TS = 2,
+};
+
+enum {
+	BPF_TCP_ESTABLISHED = 1,
+	BPF_TCP_SYN_SENT = 2,
+	BPF_TCP_SYN_RECV = 3,
+	BPF_TCP_FIN_WAIT1 = 4,
+	BPF_TCP_FIN_WAIT2 = 5,
+	BPF_TCP_TIME_WAIT = 6,
+	BPF_TCP_CLOSE = 7,
+	BPF_TCP_CLOSE_WAIT = 8,
+	BPF_TCP_LAST_ACK = 9,
+	BPF_TCP_LISTEN = 10,
+	BPF_TCP_CLOSING = 11,
+	BPF_TCP_NEW_SYN_RECV = 12,
+	BPF_TCP_MAX_STATES = 13,
+};
+
+enum {
+	TCP_MIB_NUM = 0,
+	TCP_MIB_RTOALGORITHM = 1,
+	TCP_MIB_RTOMIN = 2,
+	TCP_MIB_RTOMAX = 3,
+	TCP_MIB_MAXCONN = 4,
+	TCP_MIB_ACTIVEOPENS = 5,
+	TCP_MIB_PASSIVEOPENS = 6,
+	TCP_MIB_ATTEMPTFAILS = 7,
+	TCP_MIB_ESTABRESETS = 8,
+	TCP_MIB_CURRESTAB = 9,
+	TCP_MIB_INSEGS = 10,
+	TCP_MIB_OUTSEGS = 11,
+	TCP_MIB_RETRANSSEGS = 12,
+	TCP_MIB_INERRS = 13,
+	TCP_MIB_OUTRSTS = 14,
+	TCP_MIB_CSUMERRORS = 15,
+	__TCP_MIB_MAX = 16,
+};
+
+enum {
+	TCP_NLA_PAD = 0,
+	TCP_NLA_BUSY = 1,
+	TCP_NLA_RWND_LIMITED = 2,
+	TCP_NLA_SNDBUF_LIMITED = 3,
+	TCP_NLA_DATA_SEGS_OUT = 4,
+	TCP_NLA_TOTAL_RETRANS = 5,
+	TCP_NLA_PACING_RATE = 6,
+	TCP_NLA_DELIVERY_RATE = 7,
+	TCP_NLA_SND_CWND = 8,
+	TCP_NLA_REORDERING = 9,
+	TCP_NLA_MIN_RTT = 10,
+	TCP_NLA_RECUR_RETRANS = 11,
+	TCP_NLA_DELIVERY_RATE_APP_LMT = 12,
+	TCP_NLA_SNDQ_SIZE = 13,
+	TCP_NLA_CA_STATE = 14,
+	TCP_NLA_SND_SSTHRESH = 15,
+	TCP_NLA_DELIVERED = 16,
+	TCP_NLA_DELIVERED_CE = 17,
+	TCP_NLA_BYTES_SENT = 18,
+	TCP_NLA_BYTES_RETRANS = 19,
+	TCP_NLA_DSACK_DUPS = 20,
+	TCP_NLA_REORD_SEEN = 21,
+	TCP_NLA_SRTT = 22,
+	TCP_NLA_TIMEOUT_REHASH = 23,
+	TCP_NLA_BYTES_NOTSENT = 24,
+	TCP_NLA_EDT = 25,
+	TCP_NLA_TTL = 26,
+	TCP_NLA_REHASH = 27,
+};
+
+struct tcp_skb_cb {
+	__u32 seq;
+	__u32 end_seq;
+	union {
+		__u32 tcp_tw_isn;
+		struct {
+			u16 tcp_gso_segs;
+			u16 tcp_gso_size;
+		};
+	};
+	__u8 tcp_flags;
+	__u8 sacked;
+	__u8 ip_dsfield;
+	__u8 txstamp_ack: 1;
+	__u8 eor: 1;
+	__u8 has_rxtstamp: 1;
+	__u8 unused: 5;
+	__u32 ack_seq;
+	union {
+		struct {
+			__u32 is_app_limited: 1;
+			__u32 delivered_ce: 20;
+			__u32 unused: 11;
+			__u32 delivered;
+			u64 first_tx_mstamp;
+			u64 delivered_mstamp;
+		} tx;
+		union {
+			struct inet_skb_parm h4;
+			struct inet6_skb_parm h6;
+		} header;
+	};
+};
+
+struct tcp_splice_state {
+	struct pipe_inode_info *pipe;
+	size_t len;
+	unsigned int flags;
+};
+
+struct tcp_info {
+	__u8 tcpi_state;
+	__u8 tcpi_ca_state;
+	__u8 tcpi_retransmits;
+	__u8 tcpi_probes;
+	__u8 tcpi_backoff;
+	__u8 tcpi_options;
+	__u8 tcpi_snd_wscale: 4;
+	__u8 tcpi_rcv_wscale: 4;
+	__u8 tcpi_delivery_rate_app_limited: 1;
+	__u8 tcpi_fastopen_client_fail: 2;
+	__u32 tcpi_rto;
+	__u32 tcpi_ato;
+	__u32 tcpi_snd_mss;
+	__u32 tcpi_rcv_mss;
+	__u32 tcpi_unacked;
+	__u32 tcpi_sacked;
+	__u32 tcpi_lost;
+	__u32 tcpi_retrans;
+	__u32 tcpi_fackets;
+	__u32 tcpi_last_data_sent;
+	__u32 tcpi_last_ack_sent;
+	__u32 tcpi_last_data_recv;
+	__u32 tcpi_last_ack_recv;
+	__u32 tcpi_pmtu;
+	__u32 tcpi_rcv_ssthresh;
+	__u32 tcpi_rtt;
+	__u32 tcpi_rttvar;
+	__u32 tcpi_snd_ssthresh;
+	__u32 tcpi_snd_cwnd;
+	__u32 tcpi_advmss;
+	__u32 tcpi_reordering;
+	__u32 tcpi_rcv_rtt;
+	__u32 tcpi_rcv_space;
+	__u32 tcpi_total_retrans;
+	__u64 tcpi_pacing_rate;
+	__u64 tcpi_max_pacing_rate;
+	__u64 tcpi_bytes_acked;
+	__u64 tcpi_bytes_received;
+	__u32 tcpi_segs_out;
+	__u32 tcpi_segs_in;
+	__u32 tcpi_notsent_bytes;
+	__u32 tcpi_min_rtt;
+	__u32 tcpi_data_segs_in;
+	__u32 tcpi_data_segs_out;
+	__u64 tcpi_delivery_rate;
+	__u64 tcpi_busy_time;
+	__u64 tcpi_rwnd_limited;
+	__u64 tcpi_sndbuf_limited;
+	__u32 tcpi_delivered;
+	__u32 tcpi_delivered_ce;
+	__u64 tcpi_bytes_sent;
+	__u64 tcpi_bytes_retrans;
+	__u32 tcpi_dsack_dups;
+	__u32 tcpi_reord_seen;
+	__u32 tcpi_rcv_ooopack;
+	__u32 tcpi_snd_wnd;
+	__u32 tcpi_rcv_wnd;
+	__u32 tcpi_rehash;
+};
+
+struct tcp_zerocopy_receive {
+	__u64 address;
+	__u32 length;
+	__u32 recv_skip_hint;
+	__u32 inq;
+	__s32 err;
+	__u64 copybuf_address;
+	__s32 copybuf_len;
+	__u32 flags;
+	__u64 msg_control;
+	__u64 msg_controllen;
+	__u32 msg_flags;
+	__u32 reserved;
+};
+
+struct tcp_repair_opt {
+	__u32 opt_code;
+	__u32 opt_val;
+};
+
+struct tcp_repair_window {
+	__u32 snd_wl1;
+	__u32 snd_wnd;
+	__u32 max_window;
+	__u32 rcv_wnd;
+	__u32 rcv_wup;
+};
+
+enum tcp_ca_ack_event_flags {
+	CA_ACK_SLOWPATH = 1,
+	CA_ACK_WIN_UPDATE = 2,
+	CA_ACK_ECE = 4,
+};
+
+enum tcp_queue {
+	TCP_FRAG_IN_WRITE_QUEUE = 0,
+	TCP_FRAG_IN_RTX_QUEUE = 1,
+};
+
+enum tcp_fastopen_client_fail {
+	TFO_STATUS_UNSPEC = 0,
+	TFO_COOKIE_UNAVAILABLE = 1,
+	TFO_DATA_NOT_ACKED = 2,
+	TFO_SYN_RETRANSMITTED = 3,
+};
+
+struct tcp_sacktag_state {
+	u64 first_sackt;
+	u64 last_sackt;
+	u32 reord;
+	u32 sack_delivered;
+	int flag;
+	unsigned int mss_now;
+	struct rate_sample *rate;
+};
+
+struct tsq_tasklet {
+	struct tasklet_struct tasklet;
+	struct list_head head;
+};
+
+enum tsq_flags {
+	TSQF_THROTTLED = 1,
+	TSQF_QUEUED = 2,
+	TCPF_TSQ_DEFERRED = 4,
+	TCPF_WRITE_TIMER_DEFERRED = 8,
+	TCPF_DELACK_TIMER_DEFERRED = 16,
+	TCPF_MTU_REDUCED_DEFERRED = 32,
+};
+
+enum {
+	BPF_WRITE_HDR_TCP_CURRENT_MSS = 1,
+	BPF_WRITE_HDR_TCP_SYNACK_COOKIE = 2,
+};
+
+struct mptcp_out_options {};
+
+struct tcp_out_options {
+	u16 options;
+	u16 mss;
+	u8 ws;
+	u8 num_sack_blocks;
+	u8 hash_size;
+	u8 bpf_opt_len;
+	__u8 *hash_location;
+	__u32 tsval;
+	__u32 tsecr;
+	struct tcp_fastopen_cookie *fastopen_cookie;
+	struct mptcp_out_options mptcp;
+};
+
+union tcp_md5_addr {
+	struct in_addr a4;
+	struct in6_addr a6;
+};
+
+struct tcp_md5sig_key {
+	struct hlist_node node;
+	u8 keylen;
+	u8 family;
+	u8 prefixlen;
+	u8 flags;
+	union tcp_md5_addr addr;
+	int l3index;
+	u8 key[80];
+	struct callback_head rcu;
+};
+
+struct tcp_seq_afinfo {
+	sa_family_t family;
+};
+
+enum {
+	ICMP_MIB_NUM = 0,
+	ICMP_MIB_INMSGS = 1,
+	ICMP_MIB_INERRORS = 2,
+	ICMP_MIB_INDESTUNREACHS = 3,
+	ICMP_MIB_INTIMEEXCDS = 4,
+	ICMP_MIB_INPARMPROBS = 5,
+	ICMP_MIB_INSRCQUENCHS = 6,
+	ICMP_MIB_INREDIRECTS = 7,
+	ICMP_MIB_INECHOS = 8,
+	ICMP_MIB_INECHOREPS = 9,
+	ICMP_MIB_INTIMESTAMPS = 10,
+	ICMP_MIB_INTIMESTAMPREPS = 11,
+	ICMP_MIB_INADDRMASKS = 12,
+	ICMP_MIB_INADDRMASKREPS = 13,
+	ICMP_MIB_OUTMSGS = 14,
+	ICMP_MIB_OUTERRORS = 15,
+	ICMP_MIB_OUTDESTUNREACHS = 16,
+	ICMP_MIB_OUTTIMEEXCDS = 17,
+	ICMP_MIB_OUTPARMPROBS = 18,
+	ICMP_MIB_OUTSRCQUENCHS = 19,
+	ICMP_MIB_OUTREDIRECTS = 20,
+	ICMP_MIB_OUTECHOS = 21,
+	ICMP_MIB_OUTECHOREPS = 22,
+	ICMP_MIB_OUTTIMESTAMPS = 23,
+	ICMP_MIB_OUTTIMESTAMPREPS = 24,
+	ICMP_MIB_OUTADDRMASKS = 25,
+	ICMP_MIB_OUTADDRMASKREPS = 26,
+	ICMP_MIB_CSUMERRORS = 27,
+	ICMP_MIB_RATELIMITGLOBAL = 28,
+	ICMP_MIB_RATELIMITHOST = 29,
+	__ICMP_MIB_MAX = 30,
+};
+
+enum tcp_tw_status {
+	TCP_TW_SUCCESS = 0,
+	TCP_TW_RST = 1,
+	TCP_TW_ACK = 2,
+	TCP_TW_SYN = 3,
+};
+
+enum tcp_seq_states {
+	TCP_SEQ_STATE_LISTENING = 0,
+	TCP_SEQ_STATE_ESTABLISHED = 1,
+};
+
+struct tcp_iter_state {
+	struct seq_net_private p;
+	enum tcp_seq_states state;
+	struct sock *syn_wait_sk;
+	int bucket;
+	int offset;
+	int sbucket;
+	int num;
+	loff_t last_pos;
+};
+
+struct bpf_iter__tcp {
+	union {
+		struct bpf_iter_meta *meta;
+	};
+	union {
+		struct sock_common *sk_common;
+	};
+	uid_t uid;
+};
+
+struct bpf_tcp_iter_state {
+	struct tcp_iter_state state;
+	unsigned int cur_sk;
+	unsigned int end_sk;
+	unsigned int max_sk;
+	struct sock **batch;
+	bool st_bucket_done;
+};
+
+struct tcp_metrics_block;
+
+struct tcpm_hash_bucket {
+	struct tcp_metrics_block __attribute__((btf_type_tag("rcu"))) *chain;
+};
+
+struct tcp_fastopen_metrics {
+	u16 mss;
+	u16 syn_loss: 10;
+	u16 try_exp: 2;
+	unsigned long last_syn_loss;
+	struct tcp_fastopen_cookie cookie;
+};
+
+struct tcp_metrics_block {
+	struct tcp_metrics_block __attribute__((btf_type_tag("rcu"))) *tcpm_next;
+	struct net *tcpm_net;
+	struct inetpeer_addr tcpm_saddr;
+	struct inetpeer_addr tcpm_daddr;
+	unsigned long tcpm_stamp;
+	u32 tcpm_lock;
+	u32 tcpm_vals[5];
+	struct tcp_fastopen_metrics tcpm_fastopen;
+	struct callback_head callback_head;
+};
+
+enum tcp_metric_index {
+	TCP_METRIC_RTT = 0,
+	TCP_METRIC_RTTVAR = 1,
+	TCP_METRIC_SSTHRESH = 2,
+	TCP_METRIC_CWND = 3,
+	TCP_METRIC_REORDERING = 4,
+	TCP_METRIC_RTT_US = 5,
+	TCP_METRIC_RTTVAR_US = 6,
+	__TCP_METRIC_MAX = 7,
+};
+
+enum {
+	TCP_METRICS_ATTR_UNSPEC = 0,
+	TCP_METRICS_ATTR_ADDR_IPV4 = 1,
+	TCP_METRICS_ATTR_ADDR_IPV6 = 2,
+	TCP_METRICS_ATTR_AGE = 3,
+	TCP_METRICS_ATTR_TW_TSVAL = 4,
+	TCP_METRICS_ATTR_TW_TS_STAMP = 5,
+	TCP_METRICS_ATTR_VALS = 6,
+	TCP_METRICS_ATTR_FOPEN_MSS = 7,
+	TCP_METRICS_ATTR_FOPEN_SYN_DROPS = 8,
+	TCP_METRICS_ATTR_FOPEN_SYN_DROP_TS = 9,
+	TCP_METRICS_ATTR_FOPEN_COOKIE = 10,
+	TCP_METRICS_ATTR_SADDR_IPV4 = 11,
+	TCP_METRICS_ATTR_SADDR_IPV6 = 12,
+	TCP_METRICS_ATTR_PAD = 13,
+	__TCP_METRICS_ATTR_MAX = 14,
+};
+
+enum {
+	TCP_METRICS_CMD_UNSPEC = 0,
+	TCP_METRICS_CMD_GET = 1,
+	TCP_METRICS_CMD_DEL = 2,
+	__TCP_METRICS_CMD_MAX = 3,
+};
+
+struct tcp_plb_state {
+	u8 consec_cong_rounds: 5;
+	u8 unused: 3;
+	u32 pause_until;
+};
+
+struct icmp_filter {
+	__u32 data;
+};
+
+struct raw_sock {
+	struct inet_sock inet;
+	struct icmp_filter filter;
+	u32 ipmr_table;
+};
+
+struct raw_frag_vec {
+	struct msghdr *msg;
+	union {
+		struct icmphdr icmph;
+		char c[1];
+	} hdr;
+	int hlen;
+};
+
+struct raw_iter_state {
+	struct seq_net_private p;
+	int bucket;
+};
+
+struct udp_seq_afinfo {
+	sa_family_t family;
+	struct udp_table *udp_table;
+};
+
+enum {
+	UDP_FLAGS_CORK = 0,
+	UDP_FLAGS_NO_CHECK6_TX = 1,
+	UDP_FLAGS_NO_CHECK6_RX = 2,
+	UDP_FLAGS_GRO_ENABLED = 3,
+	UDP_FLAGS_ACCEPT_FRAGLIST = 4,
+	UDP_FLAGS_ACCEPT_L4 = 5,
+	UDP_FLAGS_ENCAP_ENABLED = 6,
+	UDP_FLAGS_UDPLITE_SEND_CC = 7,
+	UDP_FLAGS_UDPLITE_RECV_CC = 8,
+};
+
+enum {
+	UDP_MIB_NUM = 0,
+	UDP_MIB_INDATAGRAMS = 1,
+	UDP_MIB_NOPORTS = 2,
+	UDP_MIB_INERRORS = 3,
+	UDP_MIB_OUTDATAGRAMS = 4,
+	UDP_MIB_RCVBUFERRORS = 5,
+	UDP_MIB_SNDBUFERRORS = 6,
+	UDP_MIB_CSUMERRORS = 7,
+	UDP_MIB_IGNOREDMULTI = 8,
+	UDP_MIB_MEMERRORS = 9,
+	__UDP_MIB_MAX = 10,
+};
+
+struct udp_skb_cb {
+	union {
+		struct inet_skb_parm h4;
+		struct inet6_skb_parm h6;
+	} header;
+	__u16 cscov;
+	__u8 partial_cov;
+};
+
+struct ip_tunnel_encap_ops {
+	size_t (*encap_hlen)(struct ip_tunnel_encap *);
+	int (*build_header)(struct sk_buff *, struct ip_tunnel_encap *, u8 *, struct flowi4 *);
+	int (*err_handler)(struct sk_buff *, u32);
+};
+
+struct udp_dev_scratch {
+	u32 _tsize_state;
+	u16 len;
+	bool is_linear;
+	bool csum_unnecessary;
+};
+
+struct bpf_iter__udp {
+	union {
+		struct bpf_iter_meta *meta;
+	};
+	union {
+		struct udp_sock *udp_sk;
+	};
+	uid_t uid;
+	long: 0;
+	int bucket;
+};
+
+struct udp_iter_state {
+	struct seq_net_private p;
+	int bucket;
+};
+
+struct bpf_udp_iter_state {
+	struct udp_iter_state state;
+	unsigned int cur_sk;
+	unsigned int end_sk;
+	unsigned int max_sk;
+	int offset;
+	struct sock **batch;
+	bool st_bucket_done;
+};
+
+struct inet_protosw {
+	struct list_head list;
+	unsigned short type;
+	unsigned short protocol;
+	struct proto *prot;
+	const struct proto_ops *ops;
+	unsigned char flags;
+};
+
+typedef struct sk_buff * (*gro_receive_sk_t)(struct sock *, struct list_head *, struct sk_buff *);
+
+typedef struct sk_buff * (*gro_receive_t)(struct list_head *, struct sk_buff *);
+
+typedef struct sock * (*udp_lookup_t)(const struct sk_buff *, __be16, __be16);
+
+struct arpreq {
+	struct sockaddr arp_pa;
+	struct sockaddr arp_ha;
+	int arp_flags;
+	struct sockaddr arp_netmask;
+	char arp_dev[16];
+};
+
+struct icmp_err {
+	int errno;
+	unsigned int fatal: 1;
+};
+
+struct icmp_control {
+	enum skb_drop_reason (*handler)(struct sk_buff *);
+	short error;
+};
+
+enum {
+	XFRM_LOOKUP_ICMP = 1,
+	XFRM_LOOKUP_QUEUE = 2,
+	XFRM_LOOKUP_KEEP_DST_REF = 4,
+};
+
+struct icmp_bxm {
+	struct sk_buff *skb;
+	int offset;
+	int data_len;
+	struct {
+		struct icmphdr icmph;
+		__be32 times[3];
+	} data;
+	int head_len;
+	struct ip_options_data replyopts;
+};
+
+struct icmp_extobj_hdr {
+	__be16 length;
+	__u8 class_num;
+	__u8 class_type;
+};
+
+struct icmp_ext_hdr {
+	__u8 reserved1: 4;
+	__u8 version: 4;
+	__u8 reserved2;
+	__sum16 checksum;
+};
+
+struct icmp_ext_echo_ctype3_hdr {
+	__be16 afi;
+	__u8 addrlen;
+	__u8 reserved;
+};
+
+struct icmp_ext_echo_iio {
+	struct icmp_extobj_hdr extobj_hdr;
+	union {
+		char name[16];
+		__be32 ifindex;
+		struct {
+			struct icmp_ext_echo_ctype3_hdr ctype3_hdr;
+			union {
+				__be32 ipv4_addr;
+				struct in6_addr ipv6_addr;
+			} ip_addr;
+		} addr;
+	} ident;
+};
+
+struct devinet_sysctl_table {
+	struct ctl_table_header *sysctl_header;
+	struct ctl_table devinet_vars[34];
+};
+
+enum {
+	IFA_UNSPEC = 0,
+	IFA_ADDRESS = 1,
+	IFA_LOCAL = 2,
+	IFA_LABEL = 3,
+	IFA_BROADCAST = 4,
+	IFA_ANYCAST = 5,
+	IFA_CACHEINFO = 6,
+	IFA_MULTICAST = 7,
+	IFA_FLAGS = 8,
+	IFA_RT_PRIORITY = 9,
+	IFA_TARGET_NETNSID = 10,
+	IFA_PROTO = 11,
+	__IFA_MAX = 12,
+};
+
+enum {
+	NETCONFA_UNSPEC = 0,
+	NETCONFA_IFINDEX = 1,
+	NETCONFA_FORWARDING = 2,
+	NETCONFA_RP_FILTER = 3,
+	NETCONFA_MC_FORWARDING = 4,
+	NETCONFA_PROXY_NEIGH = 5,
+	NETCONFA_IGNORE_ROUTES_WITH_LINKDOWN = 6,
+	NETCONFA_INPUT = 7,
+	NETCONFA_BC_FORWARDING = 8,
+	__NETCONFA_MAX = 9,
+};
+
+enum {
+	IFLA_INET_UNSPEC = 0,
+	IFLA_INET_CONF = 1,
+	__IFLA_INET_MAX = 2,
+};
+
+struct ifaddrmsg {
+	__u8 ifa_family;
+	__u8 ifa_prefixlen;
+	__u8 ifa_flags;
+	__u8 ifa_scope;
+	__u32 ifa_index;
+};
+
+struct ifa_cacheinfo {
+	__u32 ifa_prefered;
+	__u32 ifa_valid;
+	__u32 cstamp;
+	__u32 tstamp;
+};
+
+struct inet_fill_args {
+	u32 portid;
+	u32 seq;
+	int event;
+	unsigned int flags;
+	int netnsid;
+	int ifindex;
+};
+
+struct netconfmsg {
+	__u8 ncm_family;
+};
+
+struct in_validator_info {
+	__be32 ivi_addr;
+	struct in_device *ivi_dev;
+	struct netlink_ext_ack *extack;
+};
+
+struct rtentry {
+	unsigned long rt_pad1;
+	struct sockaddr rt_dst;
+	struct sockaddr rt_gateway;
+	struct sockaddr rt_genmask;
+	unsigned short rt_flags;
+	short rt_pad2;
+	unsigned long rt_pad3;
+	void *rt_pad4;
+	short rt_metric;
+	char __attribute__((btf_type_tag("user"))) *rt_dev;
+	unsigned long rt_mtu;
+	unsigned long rt_window;
+	unsigned short rt_irtt;
+};
+
+struct compat_rtentry {
+	u32 rt_pad1;
+	struct sockaddr rt_dst;
+	struct sockaddr rt_gateway;
+	struct sockaddr rt_genmask;
+	unsigned short rt_flags;
+	short rt_pad2;
+	u32 rt_pad3;
+	unsigned char rt_tos;
+	unsigned char rt_class;
+	short rt_pad4;
+	short rt_metric;
+	compat_uptr_t rt_dev;
+	u32 rt_mtu;
+	u32 rt_window;
+	unsigned short rt_irtt;
+};
+
+struct igmphdr {
+	__u8 type;
+	__u8 code;
+	__sum16 csum;
+	__be32 group;
+};
+
+struct igmpv3_query {
+	__u8 type;
+	__u8 code;
+	__sum16 csum;
+	__be32 group;
+	__u8 qrv: 3;
+	__u8 suppress: 1;
+	__u8 resv: 4;
+	__u8 qqic;
+	__be16 nsrcs;
+	__be32 srcs[0];
+};
+
+struct igmpv3_grec {
+	__u8 grec_type;
+	__u8 grec_auxwords;
+	__be16 grec_nsrcs;
+	__be32 grec_mca;
+	__be32 grec_src[0];
+};
+
+struct igmpv3_report {
+	__u8 type;
+	__u8 resv1;
+	__sum16 csum;
+	__be16 resv2;
+	__be16 ngrec;
+	struct igmpv3_grec grec[0];
+};
+
+struct igmp_mc_iter_state {
+	struct seq_net_private p;
+	struct net_device *dev;
+	struct in_device *in_dev;
+};
+
+struct igmp_mcf_iter_state {
+	struct seq_net_private p;
+	struct net_device *dev;
+	struct in_device *idev;
+	struct ip_mc_list *im;
+};
+
+struct nl_info {
+	struct nlmsghdr *nlh;
+	struct net *nl_net;
+	u32 portid;
+	u8 skip_notify: 1;
+	u8 skip_notify_kernel: 1;
+};
+
+struct rtnexthop;
+
+struct fib_config {
+	u8 fc_dst_len;
+	dscp_t fc_dscp;
+	u8 fc_protocol;
+	u8 fc_scope;
+	u8 fc_type;
+	u8 fc_gw_family;
+	u32 fc_table;
+	__be32 fc_dst;
+	union {
+		__be32 fc_gw4;
+		struct in6_addr fc_gw6;
+	};
+	int fc_oif;
+	u32 fc_flags;
+	u32 fc_priority;
+	__be32 fc_prefsrc;
+	u32 fc_nh_id;
+	struct nlattr *fc_mx;
+	struct rtnexthop *fc_mp;
+	int fc_mx_len;
+	int fc_mp_len;
+	u32 fc_flow;
+	u32 fc_nlflags;
+	struct nl_info fc_nlinfo;
+	struct nlattr *fc_encap;
+	u16 fc_encap_type;
+};
+
+struct rtnexthop {
+	unsigned short rtnh_len;
+	unsigned char rtnh_flags;
+	unsigned char rtnh_hops;
+	int rtnh_ifindex;
+};
+
+struct fib_dump_filter {
+	u32 table_id;
+	bool filter_set;
+	bool dump_routes;
+	bool dump_exceptions;
+	unsigned char protocol;
+	unsigned char rt_type;
+	unsigned int flags;
+	struct net_device *dev;
+};
+
+struct fib_result_nl {
+	__be32 fl_addr;
+	u32 fl_mark;
+	unsigned char fl_tos;
+	unsigned char fl_scope;
+	unsigned char tb_id_in;
+	unsigned char tb_id;
+	unsigned char prefixlen;
+	unsigned char nh_sel;
+	unsigned char type;
+	unsigned char scope;
+	int err;
+};
+
+struct fib_prop {
+	int error;
+	u8 scope;
+};
+
+struct fib6_config {
+	u32 fc_table;
+	u32 fc_metric;
+	int fc_dst_len;
+	int fc_src_len;
+	int fc_ifindex;
+	u32 fc_flags;
+	u32 fc_protocol;
+	u16 fc_type;
+	u16 fc_delete_all_nh: 1;
+	u16 fc_ignore_dev_down: 1;
+	u16 __unused: 14;
+	u32 fc_nh_id;
+	struct in6_addr fc_dst;
+	struct in6_addr fc_src;
+	struct in6_addr fc_prefsrc;
+	struct in6_addr fc_gateway;
+	unsigned long fc_expires;
+	struct nlattr *fc_mx;
+	int fc_mx_len;
+	int fc_mp_len;
+	struct nlattr *fc_mp;
+	struct nl_info fc_nlinfo;
+	struct nlattr *fc_encap;
+	u16 fc_encap_type;
+	bool fc_is_fdb;
+	u64 android_kabi_reserved1;
+};
+
+struct fib_nh_notifier_info {
+	struct fib_notifier_info info;
+	struct fib_nh *fib_nh;
+};
+
+typedef unsigned int t_key;
+
+struct key_vector {
+	t_key key;
+	unsigned char pos;
+	unsigned char bits;
+	unsigned char slen;
+	union {
+		struct hlist_head leaf;
+		struct {
+			struct {} __empty_tnode;
+			struct key_vector __attribute__((btf_type_tag("rcu"))) *tnode[0];
+		};
+	};
+};
+
+struct trie {
+	struct key_vector kv[1];
+};
+
+struct tnode {
+	struct callback_head rcu;
+	t_key empty_children;
+	t_key full_children;
+	struct key_vector __attribute__((btf_type_tag("rcu"))) *parent;
+	struct key_vector kv[1];
+};
+
+struct fib_entry_notifier_info {
+	struct fib_notifier_info info;
+	u32 dst;
+	int dst_len;
+	struct fib_info *fi;
+	dscp_t dscp;
+	u8 type;
+	u32 tb_id;
+};
+
+struct trie_stat {
+	unsigned int totdepth;
+	unsigned int maxdepth;
+	unsigned int tnodes;
+	unsigned int leaves;
+	unsigned int nullpointers;
+	unsigned int prefixes;
+	unsigned int nodesizes[32];
+};
+
+struct fib_trie_iter {
+	struct seq_net_private p;
+	struct fib_table *tb;
+	struct key_vector *tnode;
+	unsigned int index;
+	unsigned int depth;
+};
+
+struct fib_route_iter {
+	struct seq_net_private p;
+	struct fib_table *main_tb;
+	struct key_vector *tnode;
+	loff_t pos;
+	t_key key;
+};
+
+struct ipfrag_skb_cb {
+	union {
+		struct inet_skb_parm h4;
+		struct inet6_skb_parm h6;
+	};
+	struct sk_buff *next_frag;
+	int frag_run_len;
+	int ip_defrag_offset;
+};
+
+struct ping_table {
+	struct hlist_head hash[64];
+	spinlock_t lock;
+};
+
+struct pingv6_ops {
+	int (*ipv6_recv_error)(struct sock *, struct msghdr *, int, int *);
+	void (*ip6_datagram_recv_common_ctl)(struct sock *, struct msghdr *, struct sk_buff *);
+	void (*ip6_datagram_recv_specific_ctl)(struct sock *, struct msghdr *, struct sk_buff *);
+	int (*icmpv6_err_convert)(u8, u8, int *);
+	void (*ipv6_icmp_error)(struct sock *, struct sk_buff *, int, __be16, u32, u8 *);
+	int (*ipv6_chk_addr)(struct net *, const struct in6_addr *, const struct net_device *, int);
+};
+
+struct ping_iter_state {
+	struct seq_net_private p;
+	int bucket;
+	sa_family_t family;
+};
+
+struct pingfakehdr {
+	struct icmphdr icmph;
+	struct msghdr *msg;
+	sa_family_t family;
+	__wsum wcheck;
+};
+
+struct ip6_tnl_encap_ops {
+	size_t (*encap_hlen)(struct ip_tunnel_encap *);
+	int (*build_header)(struct sk_buff *, struct ip_tunnel_encap *, u8 *, struct flowi6 *);
+	int (*err_handler)(struct sk_buff *, struct inet6_skb_parm *, u8, u8, int, __be32);
+};
+
+struct lwtunnel_encap_ops {
+	int (*build_state)(struct net *, struct nlattr *, unsigned int, const void *, struct lwtunnel_state **, struct netlink_ext_ack *);
+	void (*destroy_state)(struct lwtunnel_state *);
+	int (*output)(struct net *, struct sock *, struct sk_buff *);
+	int (*input)(struct sk_buff *);
+	int (*fill_encap)(struct sk_buff *, struct lwtunnel_state *);
+	int (*get_encap_size)(struct lwtunnel_state *);
+	int (*cmp_encap)(struct lwtunnel_state *, struct lwtunnel_state *);
+	int (*xmit)(struct sk_buff *);
+	struct module *owner;
+};
+
+enum {
+	IFLA_IPTUN_UNSPEC = 0,
+	IFLA_IPTUN_LINK = 1,
+	IFLA_IPTUN_LOCAL = 2,
+	IFLA_IPTUN_REMOTE = 3,
+	IFLA_IPTUN_TTL = 4,
+	IFLA_IPTUN_TOS = 5,
+	IFLA_IPTUN_ENCAP_LIMIT = 6,
+	IFLA_IPTUN_FLOWINFO = 7,
+	IFLA_IPTUN_FLAGS = 8,
+	IFLA_IPTUN_PROTO = 9,
+	IFLA_IPTUN_PMTUDISC = 10,
+	IFLA_IPTUN_6RD_PREFIX = 11,
+	IFLA_IPTUN_6RD_RELAY_PREFIX = 12,
+	IFLA_IPTUN_6RD_PREFIXLEN = 13,
+	IFLA_IPTUN_6RD_RELAY_PREFIXLEN = 14,
+	IFLA_IPTUN_ENCAP_TYPE = 15,
+	IFLA_IPTUN_ENCAP_FLAGS = 16,
+	IFLA_IPTUN_ENCAP_SPORT = 17,
+	IFLA_IPTUN_ENCAP_DPORT = 18,
+	IFLA_IPTUN_COLLECT_METADATA = 19,
+	IFLA_IPTUN_FWMARK = 20,
+	__IFLA_IPTUN_MAX = 21,
+};
+
+enum lwtunnel_ip_t {
+	LWTUNNEL_IP_UNSPEC = 0,
+	LWTUNNEL_IP_ID = 1,
+	LWTUNNEL_IP_DST = 2,
+	LWTUNNEL_IP_SRC = 3,
+	LWTUNNEL_IP_TTL = 4,
+	LWTUNNEL_IP_TOS = 5,
+	LWTUNNEL_IP_FLAGS = 6,
+	LWTUNNEL_IP_PAD = 7,
+	LWTUNNEL_IP_OPTS = 8,
+	__LWTUNNEL_IP_MAX = 9,
+};
+
+enum {
+	LWTUNNEL_IP_OPTS_UNSPEC = 0,
+	LWTUNNEL_IP_OPTS_GENEVE = 1,
+	LWTUNNEL_IP_OPTS_VXLAN = 2,
+	LWTUNNEL_IP_OPTS_ERSPAN = 3,
+	__LWTUNNEL_IP_OPTS_MAX = 4,
+};
+
+enum {
+	LWTUNNEL_IP_OPT_GENEVE_UNSPEC = 0,
+	LWTUNNEL_IP_OPT_GENEVE_CLASS = 1,
+	LWTUNNEL_IP_OPT_GENEVE_TYPE = 2,
+	LWTUNNEL_IP_OPT_GENEVE_DATA = 3,
+	__LWTUNNEL_IP_OPT_GENEVE_MAX = 4,
+};
+
+enum {
+	LWTUNNEL_IP_OPT_VXLAN_UNSPEC = 0,
+	LWTUNNEL_IP_OPT_VXLAN_GBP = 1,
+	__LWTUNNEL_IP_OPT_VXLAN_MAX = 2,
+};
+
+enum {
+	LWTUNNEL_IP_OPT_ERSPAN_UNSPEC = 0,
+	LWTUNNEL_IP_OPT_ERSPAN_VER = 1,
+	LWTUNNEL_IP_OPT_ERSPAN_INDEX = 2,
+	LWTUNNEL_IP_OPT_ERSPAN_DIR = 3,
+	LWTUNNEL_IP_OPT_ERSPAN_HWID = 4,
+	__LWTUNNEL_IP_OPT_ERSPAN_MAX = 5,
+};
+
+enum lwtunnel_ip6_t {
+	LWTUNNEL_IP6_UNSPEC = 0,
+	LWTUNNEL_IP6_ID = 1,
+	LWTUNNEL_IP6_DST = 2,
+	LWTUNNEL_IP6_SRC = 3,
+	LWTUNNEL_IP6_HOPLIMIT = 4,
+	LWTUNNEL_IP6_TC = 5,
+	LWTUNNEL_IP6_FLAGS = 6,
+	LWTUNNEL_IP6_PAD = 7,
+	LWTUNNEL_IP6_OPTS = 8,
+	__LWTUNNEL_IP6_MAX = 9,
+};
+
+enum nexthop_event_type {
+	NEXTHOP_EVENT_DEL = 0,
+	NEXTHOP_EVENT_REPLACE = 1,
+	NEXTHOP_EVENT_RES_TABLE_PRE_REPLACE = 2,
+	NEXTHOP_EVENT_BUCKET_REPLACE = 3,
+};
+
+enum nh_notifier_info_type {
+	NH_NOTIFIER_INFO_TYPE_SINGLE = 0,
+	NH_NOTIFIER_INFO_TYPE_GRP = 1,
+	NH_NOTIFIER_INFO_TYPE_RES_TABLE = 2,
+	NH_NOTIFIER_INFO_TYPE_RES_BUCKET = 3,
+};
+
+enum {
+	NHA_UNSPEC = 0,
+	NHA_ID = 1,
+	NHA_GROUP = 2,
+	NHA_GROUP_TYPE = 3,
+	NHA_BLACKHOLE = 4,
+	NHA_OIF = 5,
+	NHA_GATEWAY = 6,
+	NHA_ENCAP_TYPE = 7,
+	NHA_ENCAP = 8,
+	NHA_GROUPS = 9,
+	NHA_MASTER = 10,
+	NHA_FDB = 11,
+	NHA_RES_GROUP = 12,
+	NHA_RES_BUCKET = 13,
+	__NHA_MAX = 14,
+};
+
+enum {
+	NEXTHOP_GRP_TYPE_MPATH = 0,
+	NEXTHOP_GRP_TYPE_RES = 1,
+	__NEXTHOP_GRP_TYPE_MAX = 2,
+};
+
+enum {
+	NHA_RES_GROUP_UNSPEC = 0,
+	NHA_RES_GROUP_PAD = 0,
+	NHA_RES_GROUP_BUCKETS = 1,
+	NHA_RES_GROUP_IDLE_TIMER = 2,
+	NHA_RES_GROUP_UNBALANCED_TIMER = 3,
+	NHA_RES_GROUP_UNBALANCED_TIME = 4,
+	__NHA_RES_GROUP_MAX = 5,
+};
+
+enum {
+	NHA_RES_BUCKET_UNSPEC = 0,
+	NHA_RES_BUCKET_PAD = 0,
+	NHA_RES_BUCKET_INDEX = 1,
+	NHA_RES_BUCKET_IDLE_TIME = 2,
+	NHA_RES_BUCKET_NH_ID = 3,
+	__NHA_RES_BUCKET_MAX = 4,
+};
+
+struct nh_notifier_single_info;
+
+struct nh_notifier_grp_info;
+
+struct nh_notifier_res_table_info;
+
+struct nh_notifier_res_bucket_info;
+
+struct nh_notifier_info {
+	struct net *net;
+	struct netlink_ext_ack *extack;
+	u32 id;
+	enum nh_notifier_info_type type;
+	union {
+		struct nh_notifier_single_info *nh;
+		struct nh_notifier_grp_info *nh_grp;
+		struct nh_notifier_res_table_info *nh_res_table;
+		struct nh_notifier_res_bucket_info *nh_res_bucket;
+	};
+};
+
+struct nh_notifier_single_info {
+	struct net_device *dev;
+	u8 gw_family;
+	union {
+		__be32 ipv4;
+		struct in6_addr ipv6;
+	};
+	u8 is_reject: 1;
+	u8 is_fdb: 1;
+	u8 has_encap: 1;
+};
+
+struct nh_notifier_grp_entry_info {
+	u8 weight;
+	u32 id;
+	struct nh_notifier_single_info nh;
+};
+
+struct nh_notifier_grp_info {
+	u16 num_nh;
+	bool is_fdb;
+	struct nh_notifier_grp_entry_info nh_entries[0];
+};
+
+struct nh_notifier_res_table_info {
+	u16 num_nh_buckets;
+	struct nh_notifier_single_info nhs[0];
+};
+
+struct nh_notifier_res_bucket_info {
+	u16 bucket_index;
+	unsigned int idle_timer_ms;
+	bool force;
+	struct nh_notifier_single_info old_nh;
+	struct nh_notifier_single_info new_nh;
+};
+
+struct nh_config {
+	u32 nh_id;
+	u8 nh_family;
+	u8 nh_protocol;
+	u8 nh_blackhole;
+	u8 nh_fdb;
+	u32 nh_flags;
+	int nh_ifindex;
+	struct net_device *dev;
+	union {
+		__be32 ipv4;
+		struct in6_addr ipv6;
+	} gw;
+	struct nlattr *nh_grp;
+	u16 nh_grp_type;
+	u16 nh_grp_res_num_buckets;
+	unsigned long nh_grp_res_idle_timer;
+	unsigned long nh_grp_res_unbalanced_timer;
+	bool nh_grp_res_has_num_buckets;
+	bool nh_grp_res_has_idle_timer;
+	bool nh_grp_res_has_unbalanced_timer;
+	struct nlattr *nh_encap;
+	u16 nh_encap_type;
+	u32 nlflags;
+	struct nl_info nlinfo;
+};
+
+struct nhmsg {
+	unsigned char nh_family;
+	unsigned char nh_scope;
+	unsigned char nh_protocol;
+	unsigned char resvd;
+	unsigned int nh_flags;
+};
+
+struct nexthop_grp {
+	__u32 id;
+	__u8 weight;
+	__u8 resvd1;
+	__u16 resvd2;
+};
+
+struct nh_dump_filter {
+	u32 nh_id;
+	int dev_idx;
+	int master_idx;
+	bool group_filter;
+	bool fdb_filter;
+	u32 res_bucket_nh_id;
+};
+
+struct rtm_dump_nh_ctx {
+	u32 idx;
+};
+
+struct rtm_dump_res_bucket_ctx {
+	struct rtm_dump_nh_ctx nh;
+	u16 bucket_index;
+};
+
+struct rtm_dump_nexthop_bucket_data {
+	struct rtm_dump_res_bucket_ctx *ctx;
+	struct nh_dump_filter filter;
+};
+
+struct udp_tunnel_nic_ops {
+	void (*get_port)(struct net_device *, unsigned int, unsigned int, struct udp_tunnel_info *);
+	void (*set_port_priv)(struct net_device *, unsigned int, unsigned int, u8);
+	void (*add_port)(struct net_device *, struct udp_tunnel_info *);
+	void (*del_port)(struct net_device *, struct udp_tunnel_info *);
+	void (*reset_ntf)(struct net_device *);
+	size_t (*dump_size)(struct net_device *, unsigned int);
+	int (*dump_write)(struct net_device *, unsigned int, struct sk_buff *);
+};
+
+enum tunnel_encap_types {
+	TUNNEL_ENCAP_NONE = 0,
+	TUNNEL_ENCAP_FOU = 1,
+	TUNNEL_ENCAP_GUE = 2,
+	TUNNEL_ENCAP_MPLS = 3,
+};
+
+struct ip_tunnel_prl_entry;
+
+struct ip_tunnel {
+	struct ip_tunnel __attribute__((btf_type_tag("rcu"))) *next;
+	struct hlist_node hash_node;
+	struct net_device *dev;
+	netdevice_tracker dev_tracker;
+	struct net *net;
+	unsigned long err_time;
+	int err_count;
+	u32 i_seqno;
+	atomic_t o_seqno;
+	int tun_hlen;
+	u32 index;
+	u8 erspan_ver;
+	u8 dir;
+	u16 hwid;
+	struct dst_cache dst_cache;
+	struct ip_tunnel_parm parms;
+	int mlink;
+	int encap_hlen;
+	int hlen;
+	struct ip_tunnel_encap encap;
+	struct ip_tunnel_prl_entry __attribute__((btf_type_tag("rcu"))) *prl;
+	unsigned int prl_count;
+	unsigned int ip_tnl_net_id;
+	struct gro_cells gro_cells;
+	__u32 fwmark;
+	bool collect_md;
+	bool ignore_df;
+};
+
+struct ip_tunnel_prl_entry {
+	struct ip_tunnel_prl_entry __attribute__((btf_type_tag("rcu"))) *next;
+	__be32 addr;
+	u16 flags;
+	struct callback_head callback_head;
+};
+
+struct ip_tunnel_net {
+	struct net_device *fb_tunnel_dev;
+	struct rtnl_link_ops *rtnl_link_ops;
+	struct hlist_head tunnels[128];
+	struct ip_tunnel __attribute__((btf_type_tag("rcu"))) *collect_md_tun;
+	int type;
+};
+
+struct tnl_ptk_info {
+	__be16 flags;
+	__be16 proto;
+	__be32 key;
+	__be32 seq;
+	int hdr_len;
+};
+
+struct snmp_mib {
+	const char *name;
+	int entry;
+};
+
+struct fib4_rule {
+	struct fib_rule common;
+	u8 dst_len;
+	u8 src_len;
+	dscp_t dscp;
+	__be32 src;
+	__be32 srcmask;
+	__be32 dst;
+	__be32 dstmask;
+};
+
+enum {
+	MFC_STATIC = 1,
+	MFC_OFFLOAD = 2,
+};
+
+struct mr_mfc {
+	struct rhlist_head mnode;
+	unsigned short mfc_parent;
+	int mfc_flags;
+	union {
+		struct {
+			unsigned long expires;
+			struct sk_buff_head unresolved;
+		} unres;
+		struct {
+			unsigned long last_assert;
+			int minvif;
+			int maxvif;
+			unsigned long bytes;
+			unsigned long pkt;
+			unsigned long wrong_if;
+			unsigned long lastuse;
+			unsigned char ttls[32];
+			refcount_t refcount;
+		} res;
+	} mfc_un;
+	struct list_head list;
+	struct callback_head rcu;
+	void (*free)(struct callback_head *);
+};
+
+struct mr_table_ops {
+	const struct rhashtable_params *rht_params;
+	void *cmparg_any;
+};
+
+struct vif_device {
+	struct net_device __attribute__((btf_type_tag("rcu"))) *dev;
+	netdevice_tracker dev_tracker;
+	unsigned long bytes_in;
+	unsigned long bytes_out;
+	unsigned long pkt_in;
+	unsigned long pkt_out;
+	unsigned long rate_limit;
+	unsigned char threshold;
+	unsigned short flags;
+	int link;
+	struct netdev_phys_item_id dev_parent_id;
+	__be32 local;
+	__be32 remote;
+};
+
+struct mr_table {
+	struct list_head list;
+	possible_net_t net;
+	struct mr_table_ops ops;
+	u32 id;
+	struct sock __attribute__((btf_type_tag("rcu"))) *mroute_sk;
+	struct timer_list ipmr_expire_timer;
+	struct list_head mfc_unres_queue;
+	struct vif_device vif_table[32];
+	struct rhltable mfc_hash;
+	struct list_head mfc_cache_list;
+	int maxvif;
+	atomic_t cache_resolve_queue_len;
+	bool mroute_do_assert;
+	bool mroute_do_pim;
+	bool mroute_do_wrvifwhole;
+	int mroute_reg_vif_num;
+};
+
+struct mr_vif_iter {
+	struct seq_net_private p;
+	struct mr_table *mrt;
+	int ct;
+};
+
+struct mr_mfc_iter {
+	struct seq_net_private p;
+	struct mr_table *mrt;
+	struct list_head *cache;
+	spinlock_t *lock;
+};
+
+struct vif_entry_notifier_info {
+	struct fib_notifier_info info;
+	struct net_device *dev;
+	unsigned short vif_index;
+	unsigned short vif_flags;
+	u32 tb_id;
+};
+
+struct mfc_entry_notifier_info {
+	struct fib_notifier_info info;
+	struct mr_mfc *mfc;
+	u32 tb_id;
+};
+
+struct rta_mfc_stats {
+	__u64 mfcs_packets;
+	__u64 mfcs_bytes;
+	__u64 mfcs_wrong_if;
+};
+
+struct xfrm_tunnel {
+	int (*handler)(struct sk_buff *);
+	int (*cb_handler)(struct sk_buff *, int);
+	int (*err_handler)(struct sk_buff *, u32);
+	struct xfrm_tunnel __attribute__((btf_type_tag("rcu"))) *next;
+	int priority;
+};
+
+struct gre_protocol {
+	int (*handler)(struct sk_buff *);
+	void (*err_handler)(struct sk_buff *, u32);
+};
+
+struct erspan_base_hdr {
+	__u8 vlan_upper: 4;
+	__u8 ver: 4;
+	__u8 vlan: 8;
+	__u8 session_id_upper: 2;
+	__u8 t: 1;
+	__u8 en: 2;
+	__u8 cos: 3;
+	__u8 session_id: 8;
+};
+
+enum {
+	IFLA_GRE_UNSPEC = 0,
+	IFLA_GRE_LINK = 1,
+	IFLA_GRE_IFLAGS = 2,
+	IFLA_GRE_OFLAGS = 3,
+	IFLA_GRE_IKEY = 4,
+	IFLA_GRE_OKEY = 5,
+	IFLA_GRE_LOCAL = 6,
+	IFLA_GRE_REMOTE = 7,
+	IFLA_GRE_TTL = 8,
+	IFLA_GRE_TOS = 9,
+	IFLA_GRE_PMTUDISC = 10,
+	IFLA_GRE_ENCAP_LIMIT = 11,
+	IFLA_GRE_FLOWINFO = 12,
+	IFLA_GRE_FLAGS = 13,
+	IFLA_GRE_ENCAP_TYPE = 14,
+	IFLA_GRE_ENCAP_FLAGS = 15,
+	IFLA_GRE_ENCAP_SPORT = 16,
+	IFLA_GRE_ENCAP_DPORT = 17,
+	IFLA_GRE_COLLECT_METADATA = 18,
+	IFLA_GRE_IGNORE_DF = 19,
+	IFLA_GRE_FWMARK = 20,
+	IFLA_GRE_ERSPAN_INDEX = 21,
+	IFLA_GRE_ERSPAN_VER = 22,
+	IFLA_GRE_ERSPAN_DIR = 23,
+	IFLA_GRE_ERSPAN_HWID = 24,
+	__IFLA_GRE_MAX = 25,
+};
+
+enum erspan_encap_type {
+	ERSPAN_ENCAP_NOVLAN = 0,
+	ERSPAN_ENCAP_ISL = 1,
+	ERSPAN_ENCAP_8021Q = 2,
+	ERSPAN_ENCAP_INFRAME = 3,
+};
+
+enum erspan_bso {
+	BSO_NOERROR = 0,
+	BSO_SHORT = 1,
+	BSO_OVERSIZED = 2,
+	BSO_BAD = 3,
+};
+
+struct qtag_prefix {
+	__be16 eth_type;
+	__be16 tci;
+};
+
+struct erspan_md2 {
+	__be32 timestamp;
+	__be16 sgt;
+	__u8 hwid_upper: 2;
+	__u8 ft: 5;
+	__u8 p: 1;
+	__u8 o: 1;
+	__u8 gra: 2;
+	__u8 dir: 1;
+	__u8 hwid: 4;
+};
+
+struct erspan_metadata {
+	int version;
+	union {
+		__be32 index;
+		struct erspan_md2 md2;
+	} u;
+};
+
+struct udp_tunnel_nic_table_entry;
+
+struct udp_tunnel_nic {
+	struct work_struct work;
+	struct net_device *dev;
+	u8 need_sync: 1;
+	u8 need_replay: 1;
+	u8 work_pending: 1;
+	unsigned int n_tables;
+	unsigned long missed;
+	struct udp_tunnel_nic_table_entry **entries;
+};
+
+struct udp_tunnel_nic_table_entry {
+	__be16 port;
+	u8 type;
+	u8 flags;
+	u16 use_cnt;
+	u8 hw_priv;
+};
+
+enum udp_parsable_tunnel_type {
+	UDP_TUNNEL_TYPE_VXLAN = 1,
+	UDP_TUNNEL_TYPE_GENEVE = 2,
+	UDP_TUNNEL_TYPE_VXLAN_GPE = 4,
+};
+
+enum udp_tunnel_nic_table_entry_flags {
+	UDP_TUNNEL_NIC_ENTRY_ADD = 1,
+	UDP_TUNNEL_NIC_ENTRY_DEL = 2,
+	UDP_TUNNEL_NIC_ENTRY_OP_FAIL = 4,
+	UDP_TUNNEL_NIC_ENTRY_FROZEN = 8,
+};
+
+struct udp_tunnel_nic_shared_node {
+	struct net_device *dev;
+	struct list_head list;
+};
+
+struct xfrm4_protocol {
+	int (*handler)(struct sk_buff *);
+	int (*input_handler)(struct sk_buff *, int, __be32, int);
+	int (*cb_handler)(struct sk_buff *, int);
+	int (*err_handler)(struct sk_buff *, u32);
+	struct xfrm4_protocol __attribute__((btf_type_tag("rcu"))) *next;
+	int priority;
+};
+
+enum {
+	IFLA_VTI_UNSPEC = 0,
+	IFLA_VTI_LINK = 1,
+	IFLA_VTI_IKEY = 2,
+	IFLA_VTI_OKEY = 3,
+	IFLA_VTI_LOCAL = 4,
+	IFLA_VTI_REMOTE = 5,
+	IFLA_VTI_FWMARK = 6,
+	__IFLA_VTI_MAX = 7,
+};
+
+enum {
+	LINUX_MIB_XFRMNUM = 0,
+	LINUX_MIB_XFRMINERROR = 1,
+	LINUX_MIB_XFRMINBUFFERERROR = 2,
+	LINUX_MIB_XFRMINHDRERROR = 3,
+	LINUX_MIB_XFRMINNOSTATES = 4,
+	LINUX_MIB_XFRMINSTATEPROTOERROR = 5,
+	LINUX_MIB_XFRMINSTATEMODEERROR = 6,
+	LINUX_MIB_XFRMINSTATESEQERROR = 7,
+	LINUX_MIB_XFRMINSTATEEXPIRED = 8,
+	LINUX_MIB_XFRMINSTATEMISMATCH = 9,
+	LINUX_MIB_XFRMINSTATEINVALID = 10,
+	LINUX_MIB_XFRMINTMPLMISMATCH = 11,
+	LINUX_MIB_XFRMINNOPOLS = 12,
+	LINUX_MIB_XFRMINPOLBLOCK = 13,
+	LINUX_MIB_XFRMINPOLERROR = 14,
+	LINUX_MIB_XFRMOUTERROR = 15,
+	LINUX_MIB_XFRMOUTBUNDLEGENERROR = 16,
+	LINUX_MIB_XFRMOUTBUNDLECHECKERROR = 17,
+	LINUX_MIB_XFRMOUTNOSTATES = 18,
+	LINUX_MIB_XFRMOUTSTATEPROTOERROR = 19,
+	LINUX_MIB_XFRMOUTSTATEMODEERROR = 20,
+	LINUX_MIB_XFRMOUTSTATESEQERROR = 21,
+	LINUX_MIB_XFRMOUTSTATEEXPIRED = 22,
+	LINUX_MIB_XFRMOUTPOLBLOCK = 23,
+	LINUX_MIB_XFRMOUTPOLDEAD = 24,
+	LINUX_MIB_XFRMOUTPOLERROR = 25,
+	LINUX_MIB_XFRMFWDHDRERROR = 26,
+	LINUX_MIB_XFRMOUTSTATEINVALID = 27,
+	LINUX_MIB_XFRMACQUIREERROR = 28,
+	__LINUX_MIB_XFRMMAX = 29,
+};
+
+struct ip6_tnl;
+
+struct xfrm_tunnel_skb_cb {
+	union {
+		struct inet_skb_parm h4;
+		struct inet6_skb_parm h6;
+	} header;
+	union {
+		struct ip_tunnel *ip4;
+		struct ip6_tnl *ip6;
+	} tunnel;
+};
+
+struct xfrm_spi_skb_cb {
+	struct xfrm_tunnel_skb_cb header;
+	unsigned int daddroff;
+	unsigned int family;
+	__be32 seq;
+};
+
+struct xfrm_mode_skb_cb {
+	struct xfrm_tunnel_skb_cb header;
+	__be16 id;
+	__be16 frag_off;
+	u8 ihl;
+	u8 tos;
+	u8 ttl;
+	u8 protocol;
+	u8 optlen;
+	u8 flow_lbl[3];
+};
+
+struct ip_comp_hdr {
+	__u8 nexthdr;
+	__u8 flags;
+	__be16 cpi;
+};
+
+struct xfrm_skb_cb {
+	struct xfrm_tunnel_skb_cb header;
+	union {
+		struct {
+			__u32 low;
+			__u32 hi;
+		} output;
+		struct {
+			__be32 low;
+			__be32 hi;
+		} input;
+	} seq;
+};
+
+struct esp_skb_cb {
+	struct xfrm_skb_cb xfrm;
+	void *tmp;
+};
+
+struct esp_info {
+	struct ip_esp_hdr *esph;
+	__be64 seqno;
+	int tfclen;
+	int tailen;
+	int plen;
+	int clen;
+	int len;
+	int nfrags;
+	__u8 proto;
+	bool inplace;
+};
+
+struct esp_output_extra {
+	__be32 seqhi;
+	u32 esphoff;
+};
+
+struct xfrm_algo_aead_info {
+	char *geniv;
+	u16 icv_truncbits;
+};
+
+struct xfrm_algo_auth_info {
+	u16 icv_truncbits;
+	u16 icv_fullbits;
+};
+
+struct xfrm_algo_encr_info {
+	char *geniv;
+	u16 blockbits;
+	u16 defkeybits;
+};
+
+struct xfrm_algo_comp_info {
+	u16 threshold;
+};
+
+struct sadb_alg {
+	__u8 sadb_alg_id;
+	__u8 sadb_alg_ivlen;
+	__u16 sadb_alg_minbits;
+	__u16 sadb_alg_maxbits;
+	__u16 sadb_alg_reserved;
+};
+
+struct xfrm_algo_desc {
+	char *name;
+	char *compat;
+	u8 available: 1;
+	u8 pfkey_supported: 1;
+	union {
+		struct xfrm_algo_aead_info aead;
+		struct xfrm_algo_auth_info auth;
+		struct xfrm_algo_encr_info encr;
+		struct xfrm_algo_comp_info comp;
+	} uinfo;
+	struct sadb_alg desc;
+};
+
+enum nf_ip_trace_comments {
+	NF_IP_TRACE_COMMENT_RULE = 0,
+	NF_IP_TRACE_COMMENT_RETURN = 1,
+	NF_IP_TRACE_COMMENT_POLICY = 2,
+};
+
+struct ipt_error {
+	struct ipt_entry entry;
+	struct xt_error_target target;
+};
+
+struct ipt_replace {
+	char name[32];
+	unsigned int valid_hooks;
+	unsigned int num_entries;
+	unsigned int size;
+	unsigned int hook_entry[5];
+	unsigned int underflow[5];
+	unsigned int num_counters;
+	struct xt_counters __attribute__((btf_type_tag("user"))) *counters;
+	struct ipt_entry entries[0];
+};
+
+struct ipt_standard {
+	struct ipt_entry entry;
+	struct xt_standard_target target;
+};
+
+struct ipt_getinfo {
+	char name[32];
+	unsigned int valid_hooks;
+	unsigned int hook_entry[5];
+	unsigned int underflow[5];
+	unsigned int num_entries;
+	unsigned int size;
+};
+
+struct ipt_get_entries {
+	char name[32];
+	unsigned int size;
+	struct ipt_entry entrytable[0];
+};
+
+struct xt_get_revision {
+	char name[29];
+	__u8 revision;
+};
+
+struct iptable_nat_pernet {
+	struct nf_hook_ops *nf_nat_ops;
+};
+
+enum ipt_reject_with {
+	IPT_ICMP_NET_UNREACHABLE = 0,
+	IPT_ICMP_HOST_UNREACHABLE = 1,
+	IPT_ICMP_PROT_UNREACHABLE = 2,
+	IPT_ICMP_PORT_UNREACHABLE = 3,
+	IPT_ICMP_ECHOREPLY = 4,
+	IPT_ICMP_NET_PROHIBITED = 5,
+	IPT_ICMP_HOST_PROHIBITED = 6,
+	IPT_TCP_RESET = 7,
+	IPT_ICMP_ADMIN_PROHIBITED = 8,
+};
+
+struct ipt_reject_info {
+	enum ipt_reject_with with;
+};
+
+struct arpt_devaddr_info {
+	char addr[16];
+	char mask[16];
+};
+
+struct arpt_arp {
+	struct in_addr src;
+	struct in_addr tgt;
+	struct in_addr smsk;
+	struct in_addr tmsk;
+	__u8 arhln;
+	__u8 arhln_mask;
+	struct arpt_devaddr_info src_devaddr;
+	struct arpt_devaddr_info tgt_devaddr;
+	__be16 arpop;
+	__be16 arpop_mask;
+	__be16 arhrd;
+	__be16 arhrd_mask;
+	__be16 arpro;
+	__be16 arpro_mask;
+	char iniface[16];
+	char outiface[16];
+	unsigned char iniface_mask[16];
+	unsigned char outiface_mask[16];
+	__u8 flags;
+	__u16 invflags;
+};
+
+struct arpt_entry {
+	struct arpt_arp arp;
+	__u16 target_offset;
+	__u16 next_offset;
+	unsigned int comefrom;
+	struct xt_counters counters;
+	unsigned char elems[0];
+};
+
+struct arpt_error {
+	struct arpt_entry entry;
+	struct xt_error_target target;
+};
+
+struct arpt_replace {
+	char name[32];
+	unsigned int valid_hooks;
+	unsigned int num_entries;
+	unsigned int size;
+	unsigned int hook_entry[3];
+	unsigned int underflow[3];
+	unsigned int num_counters;
+	struct xt_counters __attribute__((btf_type_tag("user"))) *counters;
+	struct arpt_entry entries[0];
+};
+
+struct arpt_standard {
+	struct arpt_entry entry;
+	struct xt_standard_target target;
+};
+
+struct arpt_getinfo {
+	char name[32];
+	unsigned int valid_hooks;
+	unsigned int hook_entry[3];
+	unsigned int underflow[3];
+	unsigned int num_entries;
+	unsigned int size;
+};
+
+struct arpt_get_entries {
+	char name[32];
+	unsigned int size;
+	struct arpt_entry entrytable[0];
+};
+
+struct arpt_mangle {
+	char src_devaddr[16];
+	char tgt_devaddr[16];
+	union {
+		struct in_addr src_ip;
+	} u_s;
+	union {
+		struct in_addr tgt_ip;
+	} u_t;
+	__u8 flags;
+	int target;
+};
+
+struct inet_diag_req_v2;
+
+struct inet_diag_msg;
+
+struct inet_diag_handler {
+	void (*dump)(struct sk_buff *, struct netlink_callback *, const struct inet_diag_req_v2 *);
+	int (*dump_one)(struct netlink_callback *, const struct inet_diag_req_v2 *);
+	void (*idiag_get_info)(struct sock *, struct inet_diag_msg *, void *);
+	int (*idiag_get_aux)(struct sock *, bool, struct sk_buff *);
+	size_t (*idiag_get_aux_size)(struct sock *, bool);
+	int (*destroy)(struct sk_buff *, const struct inet_diag_req_v2 *);
+	__u16 idiag_type;
+	__u16 idiag_info_size;
+};
+
+struct inet_diag_sockid {
+	__be16 idiag_sport;
+	__be16 idiag_dport;
+	__be32 idiag_src[4];
+	__be32 idiag_dst[4];
+	__u32 idiag_if;
+	__u32 idiag_cookie[2];
+};
+
+struct inet_diag_req_v2 {
+	__u8 sdiag_family;
+	__u8 sdiag_protocol;
+	__u8 idiag_ext;
+	__u8 pad;
+	__u32 idiag_states;
+	struct inet_diag_sockid id;
+};
+
+struct inet_diag_msg {
+	__u8 idiag_family;
+	__u8 idiag_state;
+	__u8 idiag_timer;
+	__u8 idiag_retrans;
+	struct inet_diag_sockid id;
+	__u32 idiag_expires;
+	__u32 idiag_rqueue;
+	__u32 idiag_wqueue;
+	__u32 idiag_uid;
+	__u32 idiag_inode;
+};
+
+enum {
+	INET_DIAG_NONE = 0,
+	INET_DIAG_MEMINFO = 1,
+	INET_DIAG_INFO = 2,
+	INET_DIAG_VEGASINFO = 3,
+	INET_DIAG_CONG = 4,
+	INET_DIAG_TOS = 5,
+	INET_DIAG_TCLASS = 6,
+	INET_DIAG_SKMEMINFO = 7,
+	INET_DIAG_SHUTDOWN = 8,
+	INET_DIAG_DCTCPINFO = 9,
+	INET_DIAG_PROTOCOL = 10,
+	INET_DIAG_SKV6ONLY = 11,
+	INET_DIAG_LOCALS = 12,
+	INET_DIAG_PEERS = 13,
+	INET_DIAG_PAD = 14,
+	INET_DIAG_MARK = 15,
+	INET_DIAG_BBRINFO = 16,
+	INET_DIAG_CLASS_ID = 17,
+	INET_DIAG_MD5SIG = 18,
+	INET_DIAG_ULP_INFO = 19,
+	INET_DIAG_SK_BPF_STORAGES = 20,
+	INET_DIAG_CGROUP_ID = 21,
+	INET_DIAG_SOCKOPT = 22,
+	__INET_DIAG_MAX = 23,
+};
+
+enum {
+	INET_DIAG_REQ_NONE = 0,
+	INET_DIAG_REQ_BYTECODE = 1,
+	INET_DIAG_REQ_SK_BPF_STORAGES = 2,
+	INET_DIAG_REQ_PROTOCOL = 3,
+	__INET_DIAG_REQ_MAX = 4,
+};
+
+enum {
+	INET_DIAG_BC_NOP = 0,
+	INET_DIAG_BC_JMP = 1,
+	INET_DIAG_BC_S_GE = 2,
+	INET_DIAG_BC_S_LE = 3,
+	INET_DIAG_BC_D_GE = 4,
+	INET_DIAG_BC_D_LE = 5,
+	INET_DIAG_BC_AUTO = 6,
+	INET_DIAG_BC_S_COND = 7,
+	INET_DIAG_BC_D_COND = 8,
+	INET_DIAG_BC_DEV_COND = 9,
+	INET_DIAG_BC_MARK_COND = 10,
+	INET_DIAG_BC_S_EQ = 11,
+	INET_DIAG_BC_D_EQ = 12,
+	INET_DIAG_BC_CGROUP_COND = 13,
+};
+
+struct inet_diag_hostcond {
+	__u8 family;
+	__u8 prefix_len;
+	int port;
+	__be32 addr[0];
+};
+
+struct inet_diag_markcond {
+	__u32 mark;
+	__u32 mask;
+};
+
+struct inet_diag_dump_data {
+	struct nlattr *req_nlas[4];
+	struct bpf_sk_storage_diag *bpf_stg_diag;
+};
+
+struct inet_diag_entry {
+	const __be32 *saddr;
+	const __be32 *daddr;
+	u16 sport;
+	u16 dport;
+	u16 family;
+	u16 userlocks;
+	u32 ifindex;
+	u32 mark;
+	u64 cgroup_id;
+};
+
+struct inet_diag_bc_op {
+	unsigned char code;
+	unsigned char yes;
+	unsigned short no;
+};
+
+struct inet_diag_req {
+	__u8 idiag_family;
+	__u8 idiag_src_len;
+	__u8 idiag_dst_len;
+	__u8 idiag_ext;
+	struct inet_diag_sockid id;
+	__u32 idiag_states;
+	__u32 idiag_dbs;
+};
+
+struct inet_diag_sockopt {
+	__u8 recverr: 1;
+	__u8 is_icsk: 1;
+	__u8 freebind: 1;
+	__u8 hdrincl: 1;
+	__u8 mc_loop: 1;
+	__u8 transparent: 1;
+	__u8 mc_all: 1;
+	__u8 nodefrag: 1;
+	__u8 bind_address_no_port: 1;
+	__u8 recverr_rfc4884: 1;
+	__u8 defer_connect: 1;
+	__u8 unused: 5;
+};
+
+struct inet_diag_meminfo {
+	__u32 idiag_rmem;
+	__u32 idiag_wmem;
+	__u32 idiag_fmem;
+	__u32 idiag_tmem;
+};
+
+enum {
+	INET_ULP_INFO_UNSPEC = 0,
+	INET_ULP_INFO_NAME = 1,
+	INET_ULP_INFO_TLS = 2,
+	INET_ULP_INFO_MPTCP = 3,
+	__INET_ULP_INFO_MAX = 4,
+};
+
+struct bictcp {
+	u32 cnt;
+	u32 last_max_cwnd;
+	u32 last_cwnd;
+	u32 last_time;
+	u32 bic_origin_point;
+	u32 bic_K;
+	u32 delay_min;
+	u32 epoch_start;
+	u32 ack_cnt;
+	u32 tcp_cwnd;
+	u16 unused;
+	u8 sample_cnt;
+	u8 found;
+	u32 round_start;
+	u32 end_seq;
+	u32 last_ack;
+	u32 curr_rtt;
+};
+
+enum {
+	TCP_BPF_IPV4 = 0,
+	TCP_BPF_IPV6 = 1,
+	TCP_BPF_NUM_PROTS = 2,
+};
+
+enum {
+	TCP_BPF_BASE = 0,
+	TCP_BPF_TX = 1,
+	TCP_BPF_RX = 2,
+	TCP_BPF_TXRX = 3,
+	TCP_BPF_NUM_CFGS = 4,
+};
+
+struct tx_work {
+	struct delayed_work work;
+	struct sock *sk;
+};
+
+struct tls_rec;
+
+struct tls_sw_context_tx {
+	struct crypto_aead *aead_send;
+	struct crypto_wait async_wait;
+	struct tx_work tx_work;
+	struct tls_rec *open_rec;
+	struct list_head tx_list;
+	atomic_t encrypt_pending;
+	u8 async_capable: 1;
+	unsigned long tx_bitmask;
+	u64 android_kabi_reserved1;
+};
+
+enum {
+	UDP_BPF_IPV4 = 0,
+	UDP_BPF_IPV6 = 1,
+	UDP_BPF_NUM_PROTS = 2,
+};
+
+struct xfrm_policy_afinfo {
+	struct dst_ops *dst_ops;
+	struct dst_entry * (*dst_lookup)(struct net *, int, int, const xfrm_address_t *, const xfrm_address_t *, u32);
+	int (*get_saddr)(struct net *, int, xfrm_address_t *, xfrm_address_t *, u32);
+	int (*fill_dst)(struct xfrm_dst *, struct net_device *, const struct flowi *);
+	struct dst_entry * (*blackhole_route)(struct net *, struct dst_entry *);
+};
+
+struct xfrm_state_afinfo {
+	u8 family;
+	u8 proto;
+	const struct xfrm_type_offload *type_offload_esp;
+	const struct xfrm_type *type_esp;
+	const struct xfrm_type *type_ipip;
+	const struct xfrm_type *type_ipip6;
+	const struct xfrm_type *type_comp;
+	const struct xfrm_type *type_ah;
+	const struct xfrm_type *type_routing;
+	const struct xfrm_type *type_dstopts;
+	int (*output)(struct net *, struct sock *, struct sk_buff *);
+	int (*transport_finish)(struct sk_buff *, int);
+	void (*local_error)(struct sk_buff *, u32);
+};
+
+struct xfrm_input_afinfo {
+	u8 family;
+	bool is_ipip;
+	int (*callback)(struct sk_buff *, u8, int);
+};
+
+typedef u64 (*btf_bpf_tcp_send_ack)(struct tcp_sock *, u32);
+
+struct xfrm_if_decode_session_result;
+
+struct xfrm_if_cb {
+	bool (*decode_session)(struct sk_buff *, unsigned short, struct xfrm_if_decode_session_result *);
+};
+
+struct xfrm_if_decode_session_result {
+	struct net *net;
+	u32 if_id;
+};
+
+enum {
+	XFRM_POLICY_TYPE_MAIN = 0,
+	XFRM_POLICY_TYPE_SUB = 1,
+	XFRM_POLICY_TYPE_MAX = 2,
+	XFRM_POLICY_TYPE_ANY = 255,
+};
+
+enum xfrm_pol_inexact_candidate_type {
+	XFRM_POL_CAND_BOTH = 0,
+	XFRM_POL_CAND_SADDR = 1,
+	XFRM_POL_CAND_DADDR = 2,
+	XFRM_POL_CAND_ANY = 3,
+	XFRM_POL_CAND_MAX = 4,
+};
+
+enum {
+	XFRM_STATE_VOID = 0,
+	XFRM_STATE_ACQ = 1,
+	XFRM_STATE_VALID = 2,
+	XFRM_STATE_ERROR = 3,
+	XFRM_STATE_EXPIRED = 4,
+	XFRM_STATE_DEAD = 5,
+};
+
+struct xfrm_pol_inexact_node {
+	struct rb_node node;
+	union {
+		xfrm_address_t addr;
+		struct callback_head rcu;
+	};
+	u8 prefixlen;
+	struct rb_root root;
+	struct hlist_head hhead;
+};
+
+struct xfrm_pol_inexact_key {
+	possible_net_t net;
+	u32 if_id;
+	u16 family;
+	u8 dir;
+	u8 type;
+};
+
+struct xfrm_pol_inexact_bin {
+	struct xfrm_pol_inexact_key k;
+	struct rhash_head head;
+	struct hlist_head hhead;
+	seqcount_spinlock_t count;
+	struct rb_root root_d;
+	struct rb_root root_s;
+	struct list_head inexact_bins;
+	struct callback_head rcu;
+};
+
+struct ip6_mh {
+	__u8 ip6mh_proto;
+	__u8 ip6mh_hdrlen;
+	__u8 ip6mh_type;
+	__u8 ip6mh_reserved;
+	__u16 ip6mh_cksum;
+	__u8 data[0];
+};
+
+struct xfrm_flo {
+	struct dst_entry *dst_orig;
+	u8 flags;
+};
+
+struct xfrm_pol_inexact_candidates {
+	struct hlist_head *res[4];
+};
+
+struct xfrm_migrate {
+	xfrm_address_t old_daddr;
+	xfrm_address_t old_saddr;
+	xfrm_address_t new_daddr;
+	xfrm_address_t new_saddr;
+	u8 proto;
+	u8 mode;
+	u16 reserved;
+	u32 reqid;
+	u16 old_family;
+	u16 new_family;
+};
+
+struct xfrm_kmaddress {
+	xfrm_address_t local;
+	xfrm_address_t remote;
+	u32 reserved;
+	u16 family;
+};
+
+struct xfrmk_spdinfo {
+	u32 incnt;
+	u32 outcnt;
+	u32 fwdcnt;
+	u32 inscnt;
+	u32 outscnt;
+	u32 fwdscnt;
+	u32 spdhcnt;
+	u32 spdhmcnt;
+};
+
+struct xfrm_policy_walk {
+	struct xfrm_policy_walk_entry walk;
+	u8 type;
+	u32 seq;
+};
+
+enum {
+	XFRM_MSG_BASE = 16,
+	XFRM_MSG_NEWSA = 16,
+	XFRM_MSG_DELSA = 17,
+	XFRM_MSG_GETSA = 18,
+	XFRM_MSG_NEWPOLICY = 19,
+	XFRM_MSG_DELPOLICY = 20,
+	XFRM_MSG_GETPOLICY = 21,
+	XFRM_MSG_ALLOCSPI = 22,
+	XFRM_MSG_ACQUIRE = 23,
+	XFRM_MSG_EXPIRE = 24,
+	XFRM_MSG_UPDPOLICY = 25,
+	XFRM_MSG_UPDSA = 26,
+	XFRM_MSG_POLEXPIRE = 27,
+	XFRM_MSG_FLUSHSA = 28,
+	XFRM_MSG_FLUSHPOLICY = 29,
+	XFRM_MSG_NEWAE = 30,
+	XFRM_MSG_GETAE = 31,
+	XFRM_MSG_REPORT = 32,
+	XFRM_MSG_MIGRATE = 33,
+	XFRM_MSG_NEWSADINFO = 34,
+	XFRM_MSG_GETSADINFO = 35,
+	XFRM_MSG_NEWSPDINFO = 36,
+	XFRM_MSG_GETSPDINFO = 37,
+	XFRM_MSG_MAPPING = 38,
+	XFRM_MSG_SETDEFAULT = 39,
+	XFRM_MSG_GETDEFAULT = 40,
+	__XFRM_MSG_MAX = 41,
+};
+
+enum {
+	XFRM_MODE_FLAG_TUNNEL = 1,
+};
+
+enum xfrm_attr_type_t {
+	XFRMA_UNSPEC = 0,
+	XFRMA_ALG_AUTH = 1,
+	XFRMA_ALG_CRYPT = 2,
+	XFRMA_ALG_COMP = 3,
+	XFRMA_ENCAP = 4,
+	XFRMA_TMPL = 5,
+	XFRMA_SA = 6,
+	XFRMA_POLICY = 7,
+	XFRMA_SEC_CTX = 8,
+	XFRMA_LTIME_VAL = 9,
+	XFRMA_REPLAY_VAL = 10,
+	XFRMA_REPLAY_THRESH = 11,
+	XFRMA_ETIMER_THRESH = 12,
+	XFRMA_SRCADDR = 13,
+	XFRMA_COADDR = 14,
+	XFRMA_LASTUSED = 15,
+	XFRMA_POLICY_TYPE = 16,
+	XFRMA_MIGRATE = 17,
+	XFRMA_ALG_AEAD = 18,
+	XFRMA_KMADDRESS = 19,
+	XFRMA_ALG_AUTH_TRUNC = 20,
+	XFRMA_MARK = 21,
+	XFRMA_TFCPAD = 22,
+	XFRMA_REPLAY_ESN_VAL = 23,
+	XFRMA_SA_EXTRA_FLAGS = 24,
+	XFRMA_PROTO = 25,
+	XFRMA_ADDRESS_FILTER = 26,
+	XFRMA_PAD = 27,
+	XFRMA_OFFLOAD_DEV = 28,
+	XFRMA_SET_MARK = 29,
+	XFRMA_SET_MARK_MASK = 30,
+	XFRMA_IF_ID = 31,
+	XFRMA_MTIMER_THRESH = 32,
+	__XFRMA_MAX = 33,
+};
+
+enum xfrm_ae_ftype_t {
+	XFRM_AE_UNSPEC = 0,
+	XFRM_AE_RTHR = 1,
+	XFRM_AE_RVAL = 2,
+	XFRM_AE_LVAL = 4,
+	XFRM_AE_ETHR = 8,
+	XFRM_AE_CR = 16,
+	XFRM_AE_CE = 32,
+	XFRM_AE_CU = 64,
+	__XFRM_AE_MAX = 65,
+};
+
+enum xfrm_nlgroups {
+	XFRMNLGRP_NONE = 0,
+	XFRMNLGRP_ACQUIRE = 1,
+	XFRMNLGRP_EXPIRE = 2,
+	XFRMNLGRP_SA = 3,
+	XFRMNLGRP_POLICY = 4,
+	XFRMNLGRP_AEVENTS = 5,
+	XFRMNLGRP_REPORT = 6,
+	XFRMNLGRP_MIGRATE = 7,
+	XFRMNLGRP_MAPPING = 8,
+	__XFRMNLGRP_MAX = 9,
+};
+
+struct km_event;
+
+struct xfrm_mgr {
+	struct list_head list;
+	int (*notify)(struct xfrm_state *, const struct km_event *);
+	int (*acquire)(struct xfrm_state *, struct xfrm_tmpl *, struct xfrm_policy *);
+	struct xfrm_policy * (*compile_policy)(struct sock *, int, u8 *, int, int *);
+	int (*new_mapping)(struct xfrm_state *, xfrm_address_t *, __be16);
+	int (*notify_policy)(struct xfrm_policy *, int, const struct km_event *);
+	int (*report)(struct net *, u8, struct xfrm_selector *, xfrm_address_t *);
+	int (*migrate)(const struct xfrm_selector *, u8, u8, const struct xfrm_migrate *, int, const struct xfrm_kmaddress *, const struct xfrm_encap_tmpl *);
+	bool (*is_alive)(const struct km_event *);
+};
+
+struct km_event {
+	union {
+		u32 hard;
+		u32 proto;
+		u32 byid;
+		u32 aevent;
+		u32 type;
+	} data;
+	u32 seq;
+	u32 portid;
+	u32 event;
+	struct net *net;
+};
+
+struct xfrm_user_sec_ctx {
+	__u16 len;
+	__u16 exttype;
+	__u8 ctx_alg;
+	__u8 ctx_doi;
+	__u16 ctx_len;
+};
+
+struct xfrmk_sadinfo {
+	u32 sadhcnt;
+	u32 sadhmcnt;
+	u32 sadcnt;
+};
+
+struct xfrm_trans_tasklet {
+	struct work_struct work;
+	spinlock_t queue_lock;
+	struct sk_buff_head queue;
+};
+
+struct __ip6_tnl_parm {
+	char name[16];
+	int link;
+	__u8 proto;
+	__u8 encap_limit;
+	__u8 hop_limit;
+	bool collect_md;
+	__be32 flowinfo;
+	__u32 flags;
+	struct in6_addr laddr;
+	struct in6_addr raddr;
+	__be16 i_flags;
+	__be16 o_flags;
+	__be32 i_key;
+	__be32 o_key;
+	__u32 fwmark;
+	__u32 index;
+	__u8 erspan_ver;
+	__u8 dir;
+	__u16 hwid;
+};
+
+struct ip6_tnl {
+	struct ip6_tnl __attribute__((btf_type_tag("rcu"))) *next;
+	struct net_device *dev;
+	netdevice_tracker dev_tracker;
+	struct net *net;
+	struct __ip6_tnl_parm parms;
+	struct flowi fl;
+	struct dst_cache dst_cache;
+	struct gro_cells gro_cells;
+	int err_count;
+	unsigned long err_time;
+	__u32 i_seqno;
+	atomic_t o_seqno;
+	int hlen;
+	int tun_hlen;
+	int encap_hlen;
+	struct ip_tunnel_encap encap;
+	int mlink;
+};
+
+struct xfrm_trans_cb {
+	union {
+		struct inet_skb_parm h4;
+		struct inet6_skb_parm h6;
+	} header;
+	int (*finish)(struct net *, struct sock *, struct sk_buff *);
+	struct net *net;
+};
+
+struct ip_beet_phdr {
+	__u8 nexthdr;
+	__u8 hdrlen;
+	__u8 padlen;
+	__u8 reserved;
+};
+
+struct xfrm_algo_list {
+	struct xfrm_algo_desc *algs;
+	int entries;
+	u32 type;
+	u32 mask;
+};
+
+struct xfrm_aead_name {
+	const char *name;
+	int icvbits;
+};
+
+struct xfrm_link {
+	int (*doit)(struct sk_buff *, struct nlmsghdr *, struct nlattr **, struct netlink_ext_ack *);
+	int (*start)(struct netlink_callback *);
+	int (*dump)(struct sk_buff *, struct netlink_callback *);
+	int (*done)(struct netlink_callback *);
+	const struct nla_policy *nla_pol;
+	int nla_max;
+};
+
+enum {
+	XFRM_DEV_OFFLOAD_IN = 1,
+	XFRM_DEV_OFFLOAD_OUT = 2,
+	XFRM_DEV_OFFLOAD_FWD = 3,
+};
+
+enum {
+	XFRM_SHARE_ANY = 0,
+	XFRM_SHARE_SESSION = 1,
+	XFRM_SHARE_USER = 2,
+	XFRM_SHARE_UNIQUE = 3,
+};
+
+enum xfrm_sadattr_type_t {
+	XFRMA_SAD_UNSPEC = 0,
+	XFRMA_SAD_CNT = 1,
+	XFRMA_SAD_HINFO = 2,
+	__XFRMA_SAD_MAX = 3,
+};
+
+enum xfrm_spdattr_type_t {
+	XFRMA_SPD_UNSPEC = 0,
+	XFRMA_SPD_INFO = 1,
+	XFRMA_SPD_HINFO = 2,
+	XFRMA_SPD_IPV4_HTHRESH = 3,
+	XFRMA_SPD_IPV6_HTHRESH = 4,
+	__XFRMA_SPD_MAX = 5,
+};
+
+struct xfrm_userpolicy_info {
+	struct xfrm_selector sel;
+	struct xfrm_lifetime_cfg lft;
+	struct xfrm_lifetime_cur curlft;
+	__u32 priority;
+	__u32 index;
+	__u8 dir;
+	__u8 action;
+	__u8 flags;
+	__u8 share;
+};
+
+struct xfrm_user_tmpl {
+	struct xfrm_id id;
+	__u16 family;
+	xfrm_address_t saddr;
+	__u32 reqid;
+	__u8 mode;
+	__u8 share;
+	__u8 optional;
+	__u32 aalgos;
+	__u32 ealgos;
+	__u32 calgos;
+};
+
+struct xfrm_usersa_info {
+	struct xfrm_selector sel;
+	struct xfrm_id id;
+	xfrm_address_t saddr;
+	struct xfrm_lifetime_cfg lft;
+	struct xfrm_lifetime_cur curlft;
+	struct xfrm_stats stats;
+	__u32 seq;
+	__u32 reqid;
+	__u16 family;
+	__u8 mode;
+	__u8 replay_window;
+	__u8 flags;
+};
+
+struct xfrm_user_expire {
+	struct xfrm_usersa_info state;
+	__u8 hard;
+};
+
+struct xfrm_usersa_id {
+	xfrm_address_t daddr;
+	__be32 spi;
+	__u16 family;
+	__u8 proto;
+};
+
+struct xfrm_usersa_flush {
+	__u8 proto;
+};
+
+struct xfrm_translator {
+	int (*alloc_compat)(struct sk_buff *, const struct nlmsghdr *);
+	struct nlmsghdr * (*rcv_msg_compat)(const struct nlmsghdr *, int, const struct nla_policy *, struct netlink_ext_ack *);
+	int (*xlate_user_policy_sockptr)(u8 **, int);
+	struct module *owner;
+};
+
+struct xfrm_user_acquire {
+	struct xfrm_id id;
+	xfrm_address_t saddr;
+	struct xfrm_selector sel;
+	struct xfrm_userpolicy_info policy;
+	__u32 aalgos;
+	__u32 ealgos;
+	__u32 calgos;
+	__u32 seq;
+};
+
+struct xfrm_user_offload {
+	int ifindex;
+	__u8 flags;
+};
+
+struct xfrm_user_mapping {
+	struct xfrm_usersa_id id;
+	__u32 reqid;
+	xfrm_address_t old_saddr;
+	xfrm_address_t new_saddr;
+	__be16 old_sport;
+	__be16 new_sport;
+};
+
+struct xfrm_userpolicy_id {
+	struct xfrm_selector sel;
+	__u32 index;
+	__u8 dir;
+};
+
+struct xfrm_user_polexpire {
+	struct xfrm_userpolicy_info pol;
+	__u8 hard;
+};
+
+struct xfrm_user_report {
+	__u8 proto;
+	struct xfrm_selector sel;
+};
+
+struct xfrm_user_kmaddress {
+	xfrm_address_t local;
+	xfrm_address_t remote;
+	__u32 reserved;
+	__u16 family;
+};
+
+struct xfrm_user_migrate {
+	xfrm_address_t old_daddr;
+	xfrm_address_t old_saddr;
+	xfrm_address_t new_daddr;
+	xfrm_address_t new_saddr;
+	__u8 proto;
+	__u8 mode;
+	__u16 reserved;
+	__u32 reqid;
+	__u16 old_family;
+	__u16 new_family;
+};
+
+struct xfrm_dump_info {
+	struct sk_buff *in_skb;
+	struct sk_buff *out_skb;
+	u32 nlmsg_seq;
+	u16 nlmsg_flags;
+};
+
+struct xfrm_userpolicy_type {
+	__u8 type;
+	__u16 reserved1;
+	__u8 reserved2;
+};
+
+struct xfrmu_sadhinfo {
+	__u32 sadhcnt;
+	__u32 sadhmcnt;
+};
+
+struct xfrmu_spdinfo {
+	__u32 incnt;
+	__u32 outcnt;
+	__u32 fwdcnt;
+	__u32 inscnt;
+	__u32 outscnt;
+	__u32 fwdscnt;
+};
+
+struct xfrmu_spdhinfo {
+	__u32 spdhcnt;
+	__u32 spdhmcnt;
+};
+
+struct xfrmu_spdhthresh {
+	__u8 lbits;
+	__u8 rbits;
+};
+
+struct xfrm_userpolicy_default {
+	__u8 in;
+	__u8 fwd;
+	__u8 out;
+};
+
+struct xfrm_aevent_id {
+	struct xfrm_usersa_id sa_id;
+	xfrm_address_t saddr;
+	__u32 flags;
+	__u32 reqid;
+};
+
+struct xfrm_userspi_info {
+	struct xfrm_usersa_info info;
+	__u32 min;
+	__u32 max;
+};
+
+struct ipcomp_tfms {
+	struct list_head list;
+	struct crypto_comp * __attribute__((btf_type_tag("percpu"))) *tfms;
+	int users;
+};
+
+struct ipcomp_data {
+	u16 threshold;
+	struct crypto_comp * __attribute__((btf_type_tag("percpu"))) *tfms;
+};
+
+struct xfrm6_tunnel {
+	int (*handler)(struct sk_buff *);
+	int (*cb_handler)(struct sk_buff *, int);
+	int (*err_handler)(struct sk_buff *, struct inet6_skb_parm *, u8, u8, int, __be32);
+	struct xfrm6_tunnel __attribute__((btf_type_tag("rcu"))) *next;
+	int priority;
+};
+
+struct xfrm6_protocol {
+	int (*handler)(struct sk_buff *);
+	int (*input_handler)(struct sk_buff *, int, __be32, int);
+	int (*cb_handler)(struct sk_buff *, int);
+	int (*err_handler)(struct sk_buff *, struct inet6_skb_parm *, u8, u8, int, __be32);
+	struct xfrm6_protocol __attribute__((btf_type_tag("rcu"))) *next;
+	int priority;
+};
+
+enum {
+	LWT_XFRM_UNSPEC = 0,
+	LWT_XFRM_IF_ID = 1,
+	LWT_XFRM_LINK = 2,
+	__LWT_XFRM_MAX = 3,
+};
+
+enum {
+	IFLA_XFRM_UNSPEC = 0,
+	IFLA_XFRM_LINK = 1,
+	IFLA_XFRM_IF_ID = 2,
+	IFLA_XFRM_COLLECT_METADATA = 3,
+	__IFLA_XFRM_MAX = 4,
+};
+
+struct xfrm_if_parms {
+	int link;
+	u32 if_id;
+	bool collect_md;
+};
+
+struct xfrm_if {
+	struct xfrm_if __attribute__((btf_type_tag("rcu"))) *next;
+	struct net_device *dev;
+	struct net *net;
+	struct xfrm_if_parms p;
+	struct gro_cells gro_cells;
+};
+
+struct xfrmi_net {
+	struct xfrm_if __attribute__((btf_type_tag("rcu"))) *xfrmi[256];
+	struct xfrm_if __attribute__((btf_type_tag("rcu"))) *collect_md_xfrmi;
+};
+
+struct bpf_xfrm_info {
+	u32 if_id;
+	int link;
+};
+
+enum unix_socket_lock_class {
+	U_LOCK_NORMAL = 0,
+	U_LOCK_SECOND = 1,
+	U_LOCK_DIAG = 2,
+	U_LOCK_GC_LISTENER = 3,
+};
+
+struct unix_skb_parms {
+	struct pid *pid;
+	kuid_t uid;
+	kgid_t gid;
+	struct scm_fp_list *fp;
+	u32 secid;
+	u32 consumed;
+};
+
+struct bpf_iter__unix {
+	union {
+		struct bpf_iter_meta *meta;
+	};
+	union {
+		struct unix_sock *unix_sk;
+	};
+	uid_t uid;
+};
+
+struct bpf_unix_iter_state {
+	struct seq_net_private p;
+	unsigned int cur_sk;
+	unsigned int end_sk;
+	unsigned int max_sk;
+	struct sock **batch;
+	bool st_bucket_done;
+};
+
+struct unix_stream_read_state {
+	int (*recv_actor)(struct sk_buff *, int, int, struct unix_stream_read_state *);
+	struct socket *socket;
+	struct msghdr *msg;
+	struct pipe_inode_info *pipe;
+	size_t size;
+	int flags;
+	unsigned int splice_flags;
+};
+
+struct ipv6_params {
+	__s32 disable_ipv6;
+	__s32 autoconf;
+};
+
+struct ioam6_pernet_data {
+	struct mutex lock;
+	struct rhashtable namespaces;
+	struct rhashtable schemas;
+};
+
+struct ipv6_stub {
+	int (*ipv6_sock_mc_join)(struct sock *, int, const struct in6_addr *);
+	int (*ipv6_sock_mc_drop)(struct sock *, int, const struct in6_addr *);
+	struct dst_entry * (*ipv6_dst_lookup_flow)(struct net *, const struct sock *, struct flowi6 *, const struct in6_addr *);
+	int (*ipv6_route_input)(struct sk_buff *);
+	struct fib6_table * (*fib6_get_table)(struct net *, u32);
+	int (*fib6_lookup)(struct net *, int, struct flowi6 *, struct fib6_result *, int);
+	int (*fib6_table_lookup)(struct net *, struct fib6_table *, int, struct flowi6 *, struct fib6_result *, int);
+	void (*fib6_select_path)(const struct net *, struct fib6_result *, struct flowi6 *, int, bool, const struct sk_buff *, int);
+	u32 (*ip6_mtu_from_fib6)(const struct fib6_result *, const struct in6_addr *, const struct in6_addr *);
+	int (*fib6_nh_init)(struct net *, struct fib6_nh *, struct fib6_config *, gfp_t, struct netlink_ext_ack *);
+	void (*fib6_nh_release)(struct fib6_nh *);
+	void (*fib6_nh_release_dsts)(struct fib6_nh *);
+	void (*fib6_update_sernum)(struct net *, struct fib6_info *);
+	int (*ip6_del_rt)(struct net *, struct fib6_info *, bool);
+	void (*fib6_rt_update)(struct net *, struct fib6_info *, struct nl_info *);
+	void (*udpv6_encap_enable)();
+	void (*ndisc_send_na)(struct net_device *, const struct in6_addr *, const struct in6_addr *, bool, bool, bool, bool);
+	void (*xfrm6_local_rxpmtu)(struct sk_buff *, u32);
+	int (*xfrm6_udp_encap_rcv)(struct sock *, struct sk_buff *);
+	int (*xfrm6_rcv_encap)(struct sk_buff *, int, __be32, int);
+	struct neigh_table *nd_tbl;
+	int (*ipv6_fragment)(struct net *, struct sock *, struct sk_buff *, int (*)(struct net *, struct sock *, struct sk_buff *));
+	struct net_device * (*ipv6_dev_find)(struct net *, const struct in6_addr *, struct net_device *);
+};
+
+enum flowlabel_reflect {
+	FLOWLABEL_REFLECT_ESTABLISHED = 1,
+	FLOWLABEL_REFLECT_TCP_RESET = 2,
+	FLOWLABEL_REFLECT_ICMPV6_ECHO_REPLIES = 4,
+};
+
+struct in6_rtmsg {
+	struct in6_addr rtmsg_dst;
+	struct in6_addr rtmsg_src;
+	struct in6_addr rtmsg_gateway;
+	__u32 rtmsg_type;
+	__u16 rtmsg_dst_len;
+	__u16 rtmsg_src_len;
+	__u32 rtmsg_metric;
+	unsigned long rtmsg_info;
+	__u32 rtmsg_flags;
+	int rtmsg_ifindex;
+};
+
+struct compat_in6_rtmsg {
+	struct in6_addr rtmsg_dst;
+	struct in6_addr rtmsg_src;
+	struct in6_addr rtmsg_gateway;
+	u32 rtmsg_type;
+	u16 rtmsg_dst_len;
+	u16 rtmsg_src_len;
+	u32 rtmsg_metric;
+	u32 rtmsg_info;
+	u32 rtmsg_flags;
+	s32 rtmsg_ifindex;
+};
+
+struct ac6_iter_state {
+	struct seq_net_private p;
+	struct net_device *dev;
+	struct inet6_dev *idev;
+};
+
+enum {
+	ICMP6_MIB_NUM = 0,
+	ICMP6_MIB_INMSGS = 1,
+	ICMP6_MIB_INERRORS = 2,
+	ICMP6_MIB_OUTMSGS = 3,
+	ICMP6_MIB_OUTERRORS = 4,
+	ICMP6_MIB_CSUMERRORS = 5,
+	ICMP6_MIB_RATELIMITHOST = 6,
+	__ICMP6_MIB_MAX = 7,
+};
+
+struct ip6_frag_state {
+	u8 *prevhdr;
+	unsigned int hlen;
+	unsigned int mtu;
+	unsigned int left;
+	int offset;
+	int ptr;
+	int hroom;
+	int troom;
+	__be32 frag_id;
+	u8 nexthdr;
+};
+
+struct ip6_fraglist_iter {
+	struct ipv6hdr *tmp_hdr;
+	struct sk_buff *frag;
+	int offset;
+	unsigned int hlen;
+	__be32 frag_id;
+	u8 nexthdr;
+};
+
+struct hop_jumbo_hdr {
+	u8 nexthdr;
+	u8 hdrlen;
+	u8 tlv_type;
+	u8 tlv_len;
+	__be32 jumbo_payload_len;
+};
+
+struct ip6_ra_chain {
+	struct ip6_ra_chain *next;
+	struct sock *sk;
+	int sel;
+	void (*destructor)(struct sock *);
+};
+
+struct ipcm6_cookie {
+	struct sockcm_cookie sockc;
+	__s16 hlimit;
+	__s16 tclass;
+	__u16 gso_size;
+	__s8 dontfrag;
+	struct ipv6_txoptions *opt;
+};
+
+struct inet6_protocol {
+	int (*handler)(struct sk_buff *);
+	int (*err_handler)(struct sk_buff *, struct inet6_skb_parm *, u8, u8, int, __be32);
+	unsigned int flags;
+};
+
+enum {
+	INET6_IFADDR_STATE_PREDAD = 0,
+	INET6_IFADDR_STATE_DAD = 1,
+	INET6_IFADDR_STATE_POSTDAD = 2,
+	INET6_IFADDR_STATE_ERRDAD = 3,
+	INET6_IFADDR_STATE_DEAD = 4,
+};
+
+enum {
+	IPV6_SADDR_RULE_INIT = 0,
+	IPV6_SADDR_RULE_LOCAL = 1,
+	IPV6_SADDR_RULE_SCOPE = 2,
+	IPV6_SADDR_RULE_PREFERRED = 3,
+	IPV6_SADDR_RULE_HOA = 4,
+	IPV6_SADDR_RULE_OIF = 5,
+	IPV6_SADDR_RULE_LABEL = 6,
+	IPV6_SADDR_RULE_PRIVACY = 7,
+	IPV6_SADDR_RULE_ORCHID = 8,
+	IPV6_SADDR_RULE_PREFIX = 9,
+	IPV6_SADDR_RULE_NOT_OPTIMISTIC = 10,
+	IPV6_SADDR_RULE_MAX = 11,
+};
+
+enum {
+	DAD_PROCESS = 0,
+	DAD_BEGIN = 1,
+	DAD_ABORT = 2,
+};
+
+enum cleanup_prefix_rt_t {
+	CLEANUP_PREFIX_RT_NOP = 0,
+	CLEANUP_PREFIX_RT_DEL = 1,
+	CLEANUP_PREFIX_RT_EXPIRE = 2,
+};
+
+enum {
+	DEVCONF_FORWARDING = 0,
+	DEVCONF_HOPLIMIT = 1,
+	DEVCONF_MTU6 = 2,
+	DEVCONF_ACCEPT_RA = 3,
+	DEVCONF_ACCEPT_REDIRECTS = 4,
+	DEVCONF_AUTOCONF = 5,
+	DEVCONF_DAD_TRANSMITS = 6,
+	DEVCONF_RTR_SOLICITS = 7,
+	DEVCONF_RTR_SOLICIT_INTERVAL = 8,
+	DEVCONF_RTR_SOLICIT_DELAY = 9,
+	DEVCONF_USE_TEMPADDR = 10,
+	DEVCONF_TEMP_VALID_LFT = 11,
+	DEVCONF_TEMP_PREFERED_LFT = 12,
+	DEVCONF_REGEN_MAX_RETRY = 13,
+	DEVCONF_MAX_DESYNC_FACTOR = 14,
+	DEVCONF_MAX_ADDRESSES = 15,
+	DEVCONF_FORCE_MLD_VERSION = 16,
+	DEVCONF_ACCEPT_RA_DEFRTR = 17,
+	DEVCONF_ACCEPT_RA_PINFO = 18,
+	DEVCONF_ACCEPT_RA_RTR_PREF = 19,
+	DEVCONF_RTR_PROBE_INTERVAL = 20,
+	DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN = 21,
+	DEVCONF_PROXY_NDP = 22,
+	DEVCONF_OPTIMISTIC_DAD = 23,
+	DEVCONF_ACCEPT_SOURCE_ROUTE = 24,
+	DEVCONF_MC_FORWARDING = 25,
+	DEVCONF_DISABLE_IPV6 = 26,
+	DEVCONF_ACCEPT_DAD = 27,
+	DEVCONF_FORCE_TLLAO = 28,
+	DEVCONF_NDISC_NOTIFY = 29,
+	DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL = 30,
+	DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL = 31,
+	DEVCONF_SUPPRESS_FRAG_NDISC = 32,
+	DEVCONF_ACCEPT_RA_FROM_LOCAL = 33,
+	DEVCONF_USE_OPTIMISTIC = 34,
+	DEVCONF_ACCEPT_RA_MTU = 35,
+	DEVCONF_STABLE_SECRET = 36,
+	DEVCONF_USE_OIF_ADDRS_ONLY = 37,
+	DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT = 38,
+	DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 39,
+	DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 40,
+	DEVCONF_DROP_UNSOLICITED_NA = 41,
+	DEVCONF_KEEP_ADDR_ON_DOWN = 42,
+	DEVCONF_RTR_SOLICIT_MAX_INTERVAL = 43,
+	DEVCONF_SEG6_ENABLED = 44,
+	DEVCONF_SEG6_REQUIRE_HMAC = 45,
+	DEVCONF_ENHANCED_DAD = 46,
+	DEVCONF_ADDR_GEN_MODE = 47,
+	DEVCONF_DISABLE_POLICY = 48,
+	DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN = 49,
+	DEVCONF_NDISC_TCLASS = 50,
+	DEVCONF_RPL_SEG_ENABLED = 51,
+	DEVCONF_RA_DEFRTR_METRIC = 52,
+	DEVCONF_IOAM6_ENABLED = 53,
+	DEVCONF_IOAM6_ID = 54,
+	DEVCONF_IOAM6_ID_WIDE = 55,
+	DEVCONF_NDISC_EVICT_NOCARRIER = 56,
+	DEVCONF_ACCEPT_UNTRACKED_NA = 57,
+	DEVCONF_ACCEPT_RA_MIN_LFT = 58,
+	DEVCONF_MAX = 59,
+};
+
+enum {
+	IFLA_INET6_UNSPEC = 0,
+	IFLA_INET6_FLAGS = 1,
+	IFLA_INET6_CONF = 2,
+	IFLA_INET6_STATS = 3,
+	IFLA_INET6_MCAST = 4,
+	IFLA_INET6_CACHEINFO = 5,
+	IFLA_INET6_ICMP6STATS = 6,
+	IFLA_INET6_TOKEN = 7,
+	IFLA_INET6_ADDR_GEN_MODE = 8,
+	IFLA_INET6_RA_MTU = 9,
+	__IFLA_INET6_MAX = 10,
+};
+
+enum {
+	PREFIX_UNSPEC = 0,
+	PREFIX_ADDRESS = 1,
+	PREFIX_CACHEINFO = 2,
+	__PREFIX_MAX = 3,
+};
+
+enum addr_type_t {
+	UNICAST_ADDR = 0,
+	MULTICAST_ADDR = 1,
+	ANYCAST_ADDR = 2,
+};
+
+union fwnet_hwaddr {
+	u8 u[16];
+	struct {
+		__be64 uniq_id;
+		u8 max_rec;
+		u8 sspd;
+		u8 fifo[6];
+	} uc;
+};
+
+struct prefix_cacheinfo {
+	__u32 preferred_time;
+	__u32 valid_time;
+};
+
+struct prefixmsg {
+	unsigned char prefix_family;
+	unsigned char prefix_pad1;
+	unsigned short prefix_pad2;
+	int prefix_ifindex;
+	unsigned char prefix_type;
+	unsigned char prefix_len;
+	unsigned char prefix_flags;
+	unsigned char prefix_pad3;
+};
+
+struct in6_ifreq {
+	struct in6_addr ifr6_addr;
+	__u32 ifr6_prefixlen;
+	int ifr6_ifindex;
+};
+
+struct if6_iter_state {
+	struct seq_net_private p;
+	int bucket;
+	int offset;
+};
+
+struct inet6_fill_args {
+	u32 portid;
+	u32 seq;
+	int event;
+	unsigned int flags;
+	int netnsid;
+	int ifindex;
+	enum addr_type_t type;
+};
+
+struct ipv6_saddr_score {
+	int rule;
+	int addr_type;
+	struct inet6_ifaddr *ifa;
+	unsigned long scorebits[1];
+	int scopedist;
+	int matchlen;
+};
+
+struct ipv6_saddr_dst {
+	const struct in6_addr *addr;
+	int ifindex;
+	int scope;
+	int label;
+	unsigned int prefs;
+};
+
+struct ifa6_config {
+	const struct in6_addr *pfx;
+	unsigned int plen;
+	u8 ifa_proto;
+	const struct in6_addr *peer_pfx;
+	u32 rt_priority;
+	u32 ifa_flags;
+	u32 preferred_lft;
+	u32 valid_lft;
+	u16 scope;
+};
+
+struct in6_validator_info {
+	struct in6_addr i6vi_addr;
+	struct inet6_dev *i6vi_dev;
+	struct netlink_ext_ack *extack;
+};
+
+struct ifla_cacheinfo {
+	__u32 max_reasm_len;
+	__u32 tstamp;
+	__u32 reachable_time;
+	__u32 retrans_time;
+};
+
+struct ip6addrlbl_init_table {
+	const struct in6_addr *prefix;
+	int prefixlen;
+	u32 label;
+};
+
+enum {
+	IFAL_ADDRESS = 1,
+	IFAL_LABEL = 2,
+	__IFAL_MAX = 3,
+};
+
+struct ip6addrlbl_entry {
+	struct in6_addr prefix;
+	int prefixlen;
+	int ifindex;
+	int addrtype;
+	u32 label;
+	struct hlist_node list;
+	struct callback_head rcu;
+};
+
+struct ifaddrlblmsg {
+	__u8 ifal_family;
+	__u8 __ifal_reserved;
+	__u8 ifal_prefixlen;
+	__u8 ifal_flags;
+	__u32 ifal_index;
+	__u32 ifal_seq;
+};
+
+typedef void (*btf_trace_fib6_table_lookup)(void *, const struct net *, const struct fib6_result *, struct fib6_table *, const struct flowi6 *);
+
+enum rt6_nud_state {
+	RT6_NUD_FAIL_HARD = -3,
+	RT6_NUD_FAIL_PROBE = -2,
+	RT6_NUD_FAIL_DO_RR = -1,
+	RT6_NUD_SUCCEED = 1,
+};
+
+struct route_info {
+	__u8 type;
+	__u8 length;
+	__u8 prefix_len;
+	__u8 reserved_l: 3;
+	__u8 route_pref: 2;
+	__u8 reserved_h: 3;
+	__be32 lifetime;
+	__u8 prefix[0];
+};
+
+struct ip6rd_flowi {
+	struct flowi6 fl6;
+	struct in6_addr gateway;
+};
+
+struct rt6_rtnl_dump_arg {
+	struct sk_buff *skb;
+	struct netlink_callback *cb;
+	struct net *net;
+	struct fib_dump_filter filter;
+};
+
+struct trace_event_raw_fib6_table_lookup {
+	struct trace_entry ent;
+	u32 tb_id;
+	int err;
+	int oif;
+	int iif;
+	__u8 tos;
+	__u8 scope;
+	__u8 flags;
+	__u8 src[16];
+	__u8 dst[16];
+	u16 sport;
+	u16 dport;
+	u8 proto;
+	u8 rt_type;
+	char name[16];
+	__u8 gw[16];
+	char __data[0];
+};
+
+struct rt6_exception {
+	struct hlist_node hlist;
+	struct rt6_info *rt6i;
+	unsigned long stamp;
+	struct callback_head rcu;
+};
+
+struct __rt6_probe_work {
+	struct work_struct work;
+	struct in6_addr target;
+	struct net_device *dev;
+	netdevice_tracker dev_tracker;
+};
+
+struct arg_dev_net_ip {
+	struct net *net;
+	struct in6_addr *addr;
+};
+
+struct rt6_mtu_change_arg {
+	struct net_device *dev;
+	unsigned int mtu;
+	struct fib6_info *f6i;
+};
+
+struct rt6_nh {
+	struct fib6_info *fib6_info;
+	struct fib6_config r_cfg;
+	struct list_head next;
+};
+
+struct fib6_nh_dm_arg {
+	struct net *net;
+	const struct in6_addr *saddr;
+	int oif;
+	int flags;
+	struct fib6_nh *nh;
+};
+
+typedef struct rt6_info * (*pol_lookup_t)(struct net *, struct fib6_table *, struct flowi6 *, const struct sk_buff *, int);
+
+struct fib6_gc_args {
+	int timeout;
+	int more;
+};
+
+struct fib6_nh_match_arg {
+	const struct net_device *dev;
+	const struct in6_addr *gw;
+	struct fib6_nh *match;
+};
+
+struct fib6_nh_del_cached_rt_arg {
+	struct fib6_config *cfg;
+	struct fib6_info *f6i;
+};
+
+struct arg_netdev_event {
+	const struct net_device *dev;
+	union {
+		unsigned char nh_flags;
+		unsigned long event;
+	};
+};
+
+struct trace_event_data_offsets_fib6_table_lookup {};
+
+struct fib6_nh_age_excptn_arg {
+	struct fib6_gc_args *gc_args;
+	unsigned long now;
+};
+
+struct fib6_nh_rd_arg {
+	struct fib6_result *res;
+	struct flowi6 *fl6;
+	const struct in6_addr *gw;
+	struct rt6_info **ret;
+};
+
+struct netevent_redirect {
+	struct dst_entry *old;
+	struct dst_entry *new;
+	struct neighbour *neigh;
+	const void *daddr;
+};
+
+struct fib6_nh_exception_dump_walker {
+	struct rt6_rtnl_dump_arg *dump;
+	struct fib6_info *rt;
+	unsigned int flags;
+	unsigned int skip;
+	unsigned int count;
+};
+
+struct fib6_nh_frl_arg {
+	u32 flags;
+	int oif;
+	int strict;
+	int *mpri;
+	bool *do_rr;
+	struct fib6_nh *nh;
+};
+
+struct fib6_nh_excptn_arg {
+	struct rt6_info *rt;
+	int plen;
+};
+
+enum fib6_walk_state {
+	FWS_L = 0,
+	FWS_R = 1,
+	FWS_C = 2,
+	FWS_U = 3,
+};
+
+enum {
+	FIB6_NO_SERNUM_CHANGE = 0,
+};
+
+struct fib6_walker {
+	struct list_head lh;
+	struct fib6_node *root;
+	struct fib6_node *node;
+	struct fib6_info *leaf;
+	enum fib6_walk_state state;
+	unsigned int skip;
+	unsigned int count;
+	unsigned int skip_in_node;
+	int (*func)(struct fib6_walker *);
+	void *args;
+};
+
+struct fib6_cleaner {
+	struct fib6_walker w;
+	struct net *net;
+	int (*func)(struct fib6_info *, void *);
+	int sernum;
+	void *arg;
+	bool skip_notify;
+};
+
+struct fib6_dump_arg {
+	struct net *net;
+	struct notifier_block *nb;
+	struct netlink_ext_ack *extack;
+};
+
+struct fib6_entry_notifier_info {
+	struct fib_notifier_info info;
+	struct fib6_info *rt;
+	unsigned int nsiblings;
+};
+
+struct lookup_args {
+	int offset;
+	const struct in6_addr *addr;
+};
+
+struct bpf_iter__ipv6_route {
+	union {
+		struct bpf_iter_meta *meta;
+	};
+	union {
+		struct fib6_info *rt;
+	};
+};
+
+struct ipv6_route_iter {
+	struct seq_net_private p;
+	struct fib6_walker w;
+	loff_t skip;
+	struct fib6_table *tbl;
+	int sernum;
+};
+
+struct fib6_nh_pcpu_arg {
+	struct fib6_info *from;
+	const struct fib6_table *table;
+};
+
+struct ipv6_sr_hdr {
+	__u8 nexthdr;
+	__u8 hdrlen;
+	__u8 type;
+	__u8 segments_left;
+	__u8 first_segment;
+	__u8 flags;
+	__u16 tag;
+	struct in6_addr segments[0];
+};
+
+struct in6_flowlabel_req {
+	struct in6_addr flr_dst;
+	__be32 flr_label;
+	__u8 flr_action;
+	__u8 flr_share;
+	__u16 flr_flags;
+	__u16 flr_expires;
+	__u16 flr_linger;
+	__u32 __flr_pad;
+};
+
+struct ipv6_mreq {
+	struct in6_addr ipv6mr_multiaddr;
+	int ipv6mr_ifindex;
+};
+
+struct ip6_mtuinfo {
+	struct sockaddr_in6 ip6m_addr;
+	__u32 ip6m_mtu;
+};
+
+enum {
+	NDUSEROPT_UNSPEC = 0,
+	NDUSEROPT_SRCADDR = 1,
+	__NDUSEROPT_MAX = 2,
+};
+
+struct nd_msg {
+	struct icmp6hdr icmph;
+	struct in6_addr target;
+	__u8 opt[0];
+};
+
+struct rs_msg {
+	struct icmp6hdr icmph;
+	__u8 opt[0];
+};
+
+struct ra_msg {
+	struct icmp6hdr icmph;
+	__be32 reachable_time;
+	__be32 retrans_timer;
+};
+
+struct nduseroptmsg {
+	unsigned char nduseropt_family;
+	unsigned char nduseropt_pad1;
+	unsigned short nduseropt_opts_len;
+	int nduseropt_ifindex;
+	__u8 nduseropt_icmp_type;
+	__u8 nduseropt_icmp_code;
+	unsigned short nduseropt_pad2;
+	unsigned int nduseropt_pad3;
+};
+
+typedef u32 inet6_ehashfn_t(const struct net *, const struct in6_addr *, const u16, const struct in6_addr *, const __be16);
+
+typedef int mh_filter_t(struct sock *, struct sk_buff *);
+
+struct icmp6_filter {
+	__u32 data[8];
+};
+
+struct raw6_sock {
+	struct inet_sock inet;
+	__u32 checksum;
+	__u32 offset;
+	struct icmp6_filter filter;
+	__u32 ip6mr_table;
+	struct ipv6_pinfo inet6;
+};
+
+struct raw6_frag_vec {
+	struct msghdr *msg;
+	int hlen;
+	char c[4];
+};
+
+struct icmp6_err {
+	int err;
+	int fatal;
+};
+
+struct ipv6_destopt_hao {
+	__u8 type;
+	__u8 length;
+	struct in6_addr addr;
+} __attribute__((packed));
+
+struct icmpv6_msg {
+	struct sk_buff *skb;
+	int offset;
+	uint8_t type;
+};
+
+struct mld2_grec {
+	__u8 grec_type;
+	__u8 grec_auxwords;
+	__be16 grec_nsrcs;
+	struct in6_addr grec_mca;
+	struct in6_addr grec_src[0];
+};
+
+struct mld2_report {
+	struct icmp6hdr mld2r_hdr;
+	struct mld2_grec mld2r_grec[0];
+};
+
+struct mld_msg {
+	struct icmp6hdr mld_hdr;
+	struct in6_addr mld_mca;
+};
+
+struct mld2_query {
+	struct icmp6hdr mld2q_hdr;
+	struct in6_addr mld2q_mca;
+	__u8 mld2q_qrv: 3;
+	__u8 mld2q_suppress: 1;
+	__u8 mld2q_resv2: 4;
+	__u8 mld2q_qqic;
+	__be16 mld2q_nsrcs;
+	struct in6_addr mld2q_srcs[0];
+};
+
+struct igmp6_mc_iter_state {
+	struct seq_net_private p;
+	struct net_device *dev;
+	struct inet6_dev *idev;
+};
+
+struct igmp6_mcf_iter_state {
+	struct seq_net_private p;
+	struct net_device *dev;
+	struct inet6_dev *idev;
+	struct ifmcaddr6 *im;
+};
+
+enum ip6_defrag_users {
+	IP6_DEFRAG_LOCAL_DELIVER = 0,
+	IP6_DEFRAG_CONNTRACK_IN = 1,
+	__IP6_DEFRAG_CONNTRACK_IN = 65536,
+	IP6_DEFRAG_CONNTRACK_OUT = 65537,
+	__IP6_DEFRAG_CONNTRACK_OUT = 131072,
+	IP6_DEFRAG_CONNTRACK_BRIDGE_IN = 131073,
+	__IP6_DEFRAG_CONNTRACK_BRIDGE_IN = 196608,
+};
+
+struct frag_queue {
+	struct inet_frag_queue q;
+	int iif;
+	__u16 nhoffset;
+	u8 ecn;
+};
+
+struct rt0_hdr {
+	struct ipv6_rt_hdr rt_hdr;
+	__u32 reserved;
+	struct in6_addr addr[0];
+};
+
+struct ipv6_rpl_sr_hdr {
+	__u8 nexthdr;
+	__u8 hdrlen;
+	__u8 type;
+	__u8 segments_left;
+	__u32 cmpre: 4;
+	__u32 cmpri: 4;
+	__u32 reserved: 4;
+	__u32 pad: 4;
+	__u32 reserved1: 16;
+	union {
+		struct {
+			struct {} __empty_addr;
+			struct in6_addr addr[0];
+		};
+		struct {
+			struct {} __empty_data;
+			__u8 data[0];
+		};
+	} segments;
+};
+
+struct ioam6_hdr {
+	__u8 opt_type;
+	__u8 opt_len;
+	char: 8;
+	__u8 type;
+};
+
+struct ioam6_trace_hdr {
+	__be16 namespace_id;
+	char: 2;
+	__u8 overflow: 1;
+	__u8 nodelen: 5;
+	__u8 remlen: 7;
+	union {
+		__be32 type_be32;
+		struct {
+			__u32 bit7: 1;
+			__u32 bit6: 1;
+			__u32 bit5: 1;
+			__u32 bit4: 1;
+			__u32 bit3: 1;
+			__u32 bit2: 1;
+			__u32 bit1: 1;
+			__u32 bit0: 1;
+			__u32 bit15: 1;
+			__u32 bit14: 1;
+			__u32 bit13: 1;
+			__u32 bit12: 1;
+			__u32 bit11: 1;
+			__u32 bit10: 1;
+			__u32 bit9: 1;
+			__u32 bit8: 1;
+			__u32 bit23: 1;
+			__u32 bit22: 1;
+			__u32 bit21: 1;
+			__u32 bit20: 1;
+			__u32 bit19: 1;
+			__u32 bit18: 1;
+			__u32 bit17: 1;
+			__u32 bit16: 1;
+		} type;
+	};
+	__u8 data[0];
+};
+
+struct ioam6_schema;
+
+struct ioam6_namespace {
+	struct rhash_head head;
+	struct callback_head rcu;
+	struct ioam6_schema __attribute__((btf_type_tag("rcu"))) *schema;
+	__be16 id;
+	__be32 data;
+	__be64 data_wide;
+};
+
+struct ioam6_schema {
+	struct rhash_head head;
+	struct callback_head rcu;
+	struct ioam6_namespace __attribute__((btf_type_tag("rcu"))) *ns;
+	u32 id;
+	int len;
+	__be32 hdr;
+	u8 data[0];
+};
+
+struct ip6fl_iter_state {
+	struct seq_net_private p;
+	struct pid_namespace *pid_ns;
+	int bucket;
+};
+
+enum {
+	SEG6_ATTR_UNSPEC = 0,
+	SEG6_ATTR_DST = 1,
+	SEG6_ATTR_DSTLEN = 2,
+	SEG6_ATTR_HMACKEYID = 3,
+	SEG6_ATTR_SECRET = 4,
+	SEG6_ATTR_SECRETLEN = 5,
+	SEG6_ATTR_ALGID = 6,
+	SEG6_ATTR_HMACINFO = 7,
+	__SEG6_ATTR_MAX = 8,
+};
+
+enum {
+	SEG6_CMD_UNSPEC = 0,
+	SEG6_CMD_SETHMAC = 1,
+	SEG6_CMD_DUMPHMAC = 2,
+	SEG6_CMD_SET_TUNSRC = 3,
+	SEG6_CMD_GET_TUNSRC = 4,
+	__SEG6_CMD_MAX = 5,
+};
+
+struct sr6_tlv {
+	__u8 type;
+	__u8 len;
+	__u8 data[0];
+};
+
+enum {
+	IOAM6_ATTR_UNSPEC = 0,
+	IOAM6_ATTR_NS_ID = 1,
+	IOAM6_ATTR_NS_DATA = 2,
+	IOAM6_ATTR_NS_DATA_WIDE = 3,
+	IOAM6_ATTR_SC_ID = 4,
+	IOAM6_ATTR_SC_DATA = 5,
+	IOAM6_ATTR_SC_NONE = 6,
+	IOAM6_ATTR_PAD = 7,
+	__IOAM6_ATTR_MAX = 8,
+};
+
+enum {
+	IOAM6_CMD_UNSPEC = 0,
+	IOAM6_CMD_ADD_NAMESPACE = 1,
+	IOAM6_CMD_DEL_NAMESPACE = 2,
+	IOAM6_CMD_DUMP_NAMESPACES = 3,
+	IOAM6_CMD_ADD_SCHEMA = 4,
+	IOAM6_CMD_DEL_SCHEMA = 5,
+	IOAM6_CMD_DUMP_SCHEMAS = 6,
+	IOAM6_CMD_NS_SET_SCHEMA = 7,
+	__IOAM6_CMD_MAX = 8,
+};
+
+struct mfc6_cache_cmp_arg {
+	struct in6_addr mf6c_mcastgrp;
+	struct in6_addr mf6c_origin;
+};
+
+enum {
+	IP6MRA_CREPORT_UNSPEC = 0,
+	IP6MRA_CREPORT_MSGTYPE = 1,
+	IP6MRA_CREPORT_MIF_ID = 2,
+	IP6MRA_CREPORT_SRC_ADDR = 3,
+	IP6MRA_CREPORT_DST_ADDR = 4,
+	IP6MRA_CREPORT_PKT = 5,
+	__IP6MRA_CREPORT_MAX = 6,
+};
+
+struct mfc6_cache {
+	struct mr_mfc _c;
+	union {
+		struct {
+			struct in6_addr mf6c_mcastgrp;
+			struct in6_addr mf6c_origin;
+		};
+		struct mfc6_cache_cmp_arg cmparg;
+	};
+};
+
+struct mrt6msg {
+	__u8 im6_mbz;
+	__u8 im6_msgtype;
+	__u16 im6_mif;
+	__u32 im6_pad;
+	struct in6_addr im6_src;
+	struct in6_addr im6_dst;
+};
+
+struct ip6mr_result {
+	struct mr_table *mrt;
+};
+
+typedef __u32 if_mask;
+
+struct if_set {
+	if_mask ifs_bits[8];
+};
+
+struct mf6cctl {
+	struct sockaddr_in6 mf6cc_origin;
+	struct sockaddr_in6 mf6cc_mcastgrp;
+	mifi_t mf6cc_parent;
+	struct if_set mf6cc_ifset;
+};
+
+struct mif6ctl {
+	mifi_t mif6c_mifi;
+	unsigned char mif6c_flags;
+	unsigned char vifc_threshold;
+	__u16 mif6c_pifi;
+	unsigned int vifc_rate_limit;
+};
+
+struct compat_sioc_sg_req6 {
+	struct sockaddr_in6 src;
+	struct sockaddr_in6 grp;
+	compat_ulong_t pktcnt;
+	compat_ulong_t bytecnt;
+	compat_ulong_t wrong_if;
+};
+
+struct compat_sioc_mif_req6 {
+	mifi_t mifi;
+	compat_ulong_t icount;
+	compat_ulong_t ocount;
+	compat_ulong_t ibytes;
+	compat_ulong_t obytes;
+};
+
+struct br_input_skb_cb {
+	struct net_device *brdev;
+	u16 frag_max_size;
+	u8 igmp;
+	u8 mrouters_only: 1;
+	u8 proxyarp_replied: 1;
+	u8 src_port_isolated: 1;
+	u8 promisc: 1;
+	u32 backup_nhid;
+};
+
+struct nf_bridge_frag_data;
+
+struct fib6_rule {
+	struct fib_rule common;
+	struct rt6key src;
+	struct rt6key dst;
+	dscp_t dscp;
+};
+
+struct xfrm6_tunnel_spi {
+	struct hlist_node list_byaddr;
+	struct hlist_node list_byspi;
+	xfrm_address_t addr;
+	u32 spi;
+	refcount_t refcnt;
+	struct callback_head callback_head;
+};
+
+struct xfrm6_tunnel_net {
+	struct hlist_head spi_byaddr[256];
+	struct hlist_head spi_byspi[256];
+	u32 spi;
+};
+
+struct mip6_report_rate_limiter {
+	spinlock_t lock;
+	ktime_t stamp;
+	int iif;
+	struct in6_addr src;
+	struct in6_addr dst;
+};
+
+struct rt2_hdr {
+	struct ipv6_rt_hdr rt_hdr;
+	__u32 reserved;
+	struct in6_addr addr;
+};
+
+enum nf_ip_trace_comments___2 {
+	NF_IP6_TRACE_COMMENT_RULE = 0,
+	NF_IP6_TRACE_COMMENT_RETURN = 1,
+	NF_IP6_TRACE_COMMENT_POLICY = 2,
+};
+
+struct ip6t_error {
+	struct ip6t_entry entry;
+	struct xt_error_target target;
+};
+
+struct ip6t_replace {
+	char name[32];
+	unsigned int valid_hooks;
+	unsigned int num_entries;
+	unsigned int size;
+	unsigned int hook_entry[5];
+	unsigned int underflow[5];
+	unsigned int num_counters;
+	struct xt_counters __attribute__((btf_type_tag("user"))) *counters;
+	struct ip6t_entry entries[0];
+};
+
+struct ip6t_standard {
+	struct ip6t_entry entry;
+	struct xt_standard_target target;
+};
+
+struct ip6t_getinfo {
+	char name[32];
+	unsigned int valid_hooks;
+	unsigned int hook_entry[5];
+	unsigned int underflow[5];
+	unsigned int num_entries;
+	unsigned int size;
+};
+
+struct ip6t_get_entries {
+	char name[32];
+	unsigned int size;
+	struct ip6t_entry entrytable[0];
+};
+
+struct nft_ct_frag6_pernet {
+	struct ctl_table_header *nf_frag_frags_hdr;
+	struct fqdir *fqdir;
+};
+
+enum {
+	XT_RPFILTER_LOOSE = 1,
+	XT_RPFILTER_VALID_MARK = 2,
+	XT_RPFILTER_ACCEPT_LOCAL = 4,
+	XT_RPFILTER_INVERT = 8,
+	XT_RPFILTER_OPTION_MASK = 15,
+};
+
+struct xt_rpfilter_info {
+	__u8 flags;
+};
+
+enum ip6t_reject_with {
+	IP6T_ICMP6_NO_ROUTE = 0,
+	IP6T_ICMP6_ADM_PROHIBITED = 1,
+	IP6T_ICMP6_NOT_NEIGHBOUR = 2,
+	IP6T_ICMP6_ADDR_UNREACH = 3,
+	IP6T_ICMP6_PORT_UNREACH = 4,
+	IP6T_ICMP6_ECHOREPLY = 5,
+	IP6T_TCP_RESET = 6,
+	IP6T_ICMP6_POLICY_FAIL = 7,
+	IP6T_ICMP6_REJECT_ROUTE = 8,
+};
+
+struct ip6t_reject_info {
+	__u32 with;
+};
+
+struct vti6_net {
+	struct net_device *fb_tnl_dev;
+	struct ip6_tnl __attribute__((btf_type_tag("rcu"))) *tnls_r_l[32];
+	struct ip6_tnl __attribute__((btf_type_tag("rcu"))) *tnls_wc[1];
+	struct ip6_tnl __attribute__((btf_type_tag("rcu"))) **tnls[2];
+};
+
+struct ip6_tnl_parm2 {
+	char name[16];
+	int link;
+	__u8 proto;
+	__u8 encap_limit;
+	__u8 hop_limit;
+	__be32 flowinfo;
+	__u32 flags;
+	struct in6_addr laddr;
+	struct in6_addr raddr;
+	__be16 i_flags;
+	__be16 o_flags;
+	__be32 i_key;
+	__be32 o_key;
+};
+
+struct sit_net {
+	struct ip_tunnel __attribute__((btf_type_tag("rcu"))) *tunnels_r_l[16];
+	struct ip_tunnel __attribute__((btf_type_tag("rcu"))) *tunnels_r[16];
+	struct ip_tunnel __attribute__((btf_type_tag("rcu"))) *tunnels_l[16];
+	struct ip_tunnel __attribute__((btf_type_tag("rcu"))) *tunnels_wc[1];
+	struct ip_tunnel __attribute__((btf_type_tag("rcu"))) **tunnels[4];
+	struct net_device *fb_tunnel_dev;
+};
+
+struct ip_tunnel_prl {
+	__be32 addr;
+	__u16 flags;
+	__u16 __reserved;
+	__u32 datalen;
+	__u32 __reserved2;
+};
+
+struct ipv6_tlv_tnl_enc_lim {
+	__u8 type;
+	__u8 length;
+	__u8 encap_limit;
+};
+
+struct ipv6_tel_txoption {
+	struct ipv6_txoptions ops;
+	__u8 dst_opt[8];
+};
+
+struct ip6_tnl_net {
+	struct net_device *fb_tnl_dev;
+	struct ip6_tnl __attribute__((btf_type_tag("rcu"))) *tnls_r_l[32];
+	struct ip6_tnl __attribute__((btf_type_tag("rcu"))) *tnls_wc[1];
+	struct ip6_tnl __attribute__((btf_type_tag("rcu"))) **tnls[2];
+	struct ip6_tnl __attribute__((btf_type_tag("rcu"))) *collect_md_tun;
+};
+
+struct ip6_tnl_parm {
+	char name[16];
+	int link;
+	__u8 proto;
+	__u8 encap_limit;
+	__u8 hop_limit;
+	__be32 flowinfo;
+	__u32 flags;
+	struct in6_addr laddr;
+	struct in6_addr raddr;
+};
+
+struct ip6gre_net {
+	struct ip6_tnl __attribute__((btf_type_tag("rcu"))) *tunnels[128];
+	struct ip6_tnl __attribute__((btf_type_tag("rcu"))) *collect_md_tun;
+	struct ip6_tnl __attribute__((btf_type_tag("rcu"))) *collect_md_tun_erspan;
+	struct net_device *fb_tunnel_dev;
+};
+
+enum {
+	IP6_FH_F_FRAG = 1,
+	IP6_FH_F_AUTH = 2,
+	IP6_FH_F_SKIP_RH = 4,
+};
+
+enum tpacket_versions {
+	TPACKET_V1 = 0,
+	TPACKET_V2 = 1,
+	TPACKET_V3 = 2,
+};
+
+enum packet_sock_flags {
+	PACKET_SOCK_ORIGDEV = 0,
+	PACKET_SOCK_AUXDATA = 1,
+	PACKET_SOCK_TX_HAS_OFF = 2,
+	PACKET_SOCK_TP_LOSS = 3,
+	PACKET_SOCK_RUNNING = 4,
+	PACKET_SOCK_PRESSURE = 5,
+	PACKET_SOCK_QDISC_BYPASS = 6,
+};
+
+struct tpacket_stats {
+	unsigned int tp_packets;
+	unsigned int tp_drops;
+};
+
+struct tpacket_stats_v3 {
+	unsigned int tp_packets;
+	unsigned int tp_drops;
+	unsigned int tp_freeze_q_cnt;
+};
+
+union tpacket_stats_u {
+	struct tpacket_stats stats1;
+	struct tpacket_stats_v3 stats3;
+};
+
+struct pgv;
+
+struct tpacket_kbdq_core {
+	struct pgv *pkbdq;
+	unsigned int feature_req_word;
+	unsigned int hdrlen;
+	unsigned char reset_pending_on_curr_blk;
+	unsigned char delete_blk_timer;
+	unsigned short kactive_blk_num;
+	unsigned short blk_sizeof_priv;
+	unsigned short last_kactive_blk_num;
+	char *pkblk_start;
+	char *pkblk_end;
+	int kblk_size;
+	unsigned int max_frame_len;
+	unsigned int knum_blocks;
+	uint64_t knxt_seq_num;
+	char *prev;
+	char *nxt_offset;
+	struct sk_buff *skb;
+	rwlock_t blk_fill_in_prog_lock;
+	unsigned short retire_blk_tov;
+	unsigned short version;
+	unsigned long tov_in_jiffies;
+	struct timer_list retire_blk_timer;
+};
+
+struct packet_ring_buffer {
+	struct pgv *pg_vec;
+	unsigned int head;
+	unsigned int frames_per_block;
+	unsigned int frame_size;
+	unsigned int frame_max;
+	unsigned int pg_vec_order;
+	unsigned int pg_vec_pages;
+	unsigned int pg_vec_len;
+	unsigned int __attribute__((btf_type_tag("percpu"))) *pending_refcnt;
+	union {
+		unsigned long *rx_owner_map;
+		struct tpacket_kbdq_core prb_bdqc;
+	};
+};
+
+struct packet_fanout;
+
+struct packet_rollover;
+
+struct packet_mclist;
+
+struct packet_sock {
+	struct sock sk;
+	struct packet_fanout *fanout;
+	union tpacket_stats_u stats;
+	struct packet_ring_buffer rx_ring;
+	struct packet_ring_buffer tx_ring;
+	int copy_thresh;
+	spinlock_t bind_lock;
+	struct mutex pg_vec_lock;
+	unsigned long flags;
+	int ifindex;
+	u8 vnet_hdr_sz;
+	__be16 num;
+	struct packet_rollover *rollover;
+	struct packet_mclist *mclist;
+	atomic_long_t mapped;
+	enum tpacket_versions tp_version;
+	unsigned int tp_hdrlen;
+	unsigned int tp_reserve;
+	unsigned int tp_tstamp;
+	struct completion skb_completion;
+	struct net_device __attribute__((btf_type_tag("rcu"))) *cached_dev;
+	long: 64;
+	struct packet_type prot_hook;
+	long: 64;
+	long: 64;
+	long: 64;
+	atomic_t tp_drops;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct packet_fanout {
+	possible_net_t net;
+	unsigned int num_members;
+	u32 max_num_members;
+	u16 id;
+	u8 type;
+	u8 flags;
+	union {
+		atomic_t rr_cur;
+		struct bpf_prog __attribute__((btf_type_tag("rcu"))) *bpf_prog;
+	};
+	struct list_head list;
+	spinlock_t lock;
+	refcount_t sk_ref;
+	long: 64;
+	struct packet_type prot_hook;
+	struct sock __attribute__((btf_type_tag("rcu"))) *arr[0];
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct pgv {
+	char *buffer;
+};
+
+struct packet_rollover {
+	int sock;
+	atomic_long_t num;
+	atomic_long_t num_huge;
+	atomic_long_t num_failed;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	u32 history[16];
+};
+
+struct packet_mclist {
+	struct packet_mclist *next;
+	int ifindex;
+	int count;
+	unsigned short type;
+	unsigned short alen;
+	unsigned char addr[32];
+};
+
+struct tpacket_bd_ts {
+	unsigned int ts_sec;
+	union {
+		unsigned int ts_usec;
+		unsigned int ts_nsec;
+	};
+};
+
+struct tpacket_hdr_v1 {
+	__u32 block_status;
+	__u32 num_pkts;
+	__u32 offset_to_first_pkt;
+	__u32 blk_len;
+	__u64 seq_num;
+	struct tpacket_bd_ts ts_first_pkt;
+	struct tpacket_bd_ts ts_last_pkt;
+};
+
+union tpacket_bd_header_u {
+	struct tpacket_hdr_v1 bh1;
+};
+
+struct tpacket_block_desc {
+	__u32 version;
+	__u32 offset_to_priv;
+	union tpacket_bd_header_u hdr;
+};
+
+struct tpacket_hdr_variant1 {
+	__u32 tp_rxhash;
+	__u32 tp_vlan_tci;
+	__u16 tp_vlan_tpid;
+	__u16 tp_padding;
+};
+
+struct tpacket3_hdr {
+	__u32 tp_next_offset;
+	__u32 tp_sec;
+	__u32 tp_nsec;
+	__u32 tp_snaplen;
+	__u32 tp_len;
+	__u32 tp_status;
+	__u16 tp_mac;
+	__u16 tp_net;
+	union {
+		struct tpacket_hdr_variant1 hv1;
+	};
+	__u8 tp_padding[8];
+};
+
+struct sockaddr_ll {
+	unsigned short sll_family;
+	__be16 sll_protocol;
+	int sll_ifindex;
+	unsigned short sll_hatype;
+	unsigned char sll_pkttype;
+	unsigned char sll_halen;
+	unsigned char sll_addr[8];
+};
+
+struct sockaddr_pkt {
+	unsigned short spkt_family;
+	unsigned char spkt_device[14];
+	__be16 spkt_protocol;
+};
+
+struct packet_skb_cb {
+	union {
+		struct sockaddr_pkt pkt;
+		union {
+			unsigned int origlen;
+			struct sockaddr_ll ll;
+		};
+	} sa;
+};
+
+struct tpacket_hdr;
+
+struct tpacket2_hdr;
+
+union tpacket_uhdr {
+	struct tpacket_hdr *h1;
+	struct tpacket2_hdr *h2;
+	struct tpacket3_hdr *h3;
+	void *raw;
+};
+
+struct tpacket_hdr {
+	unsigned long tp_status;
+	unsigned int tp_len;
+	unsigned int tp_snaplen;
+	unsigned short tp_mac;
+	unsigned short tp_net;
+	unsigned int tp_sec;
+	unsigned int tp_usec;
+};
+
+struct tpacket2_hdr {
+	__u32 tp_status;
+	__u32 tp_len;
+	__u32 tp_snaplen;
+	__u16 tp_mac;
+	__u16 tp_net;
+	__u32 tp_sec;
+	__u32 tp_nsec;
+	__u16 tp_vlan_tci;
+	__u16 tp_vlan_tpid;
+	__u8 tp_padding[4];
+};
+
+struct virtio_net_hdr_mrg_rxbuf {
+	struct virtio_net_hdr hdr;
+	__virtio16 num_buffers;
+};
+
+struct tpacket_req {
+	unsigned int tp_block_size;
+	unsigned int tp_block_nr;
+	unsigned int tp_frame_size;
+	unsigned int tp_frame_nr;
+};
+
+struct tpacket_req3 {
+	unsigned int tp_block_size;
+	unsigned int tp_block_nr;
+	unsigned int tp_frame_size;
+	unsigned int tp_frame_nr;
+	unsigned int tp_retire_blk_tov;
+	unsigned int tp_sizeof_priv;
+	unsigned int tp_feature_req_word;
+};
+
+union tpacket_req_u {
+	struct tpacket_req req;
+	struct tpacket_req3 req3;
+};
+
+struct fanout_args {
+	__u16 id;
+	__u16 type_flags;
+	__u32 max_num_members;
+};
+
+struct packet_mreq_max {
+	int mr_ifindex;
+	unsigned short mr_type;
+	unsigned short mr_alen;
+	unsigned char mr_address[32];
+};
+
+struct tpacket_rollover_stats {
+	__u64 tp_all;
+	__u64 tp_huge;
+	__u64 tp_failed;
+};
+
+struct tpacket_auxdata {
+	__u32 tp_status;
+	__u32 tp_len;
+	__u32 tp_snaplen;
+	__u16 tp_mac;
+	__u16 tp_net;
+	__u16 tp_vlan_tci;
+	__u16 tp_vlan_tpid;
+};
+
+struct sadb_msg;
+
+typedef int (*pfkey_handler)(struct sock *, struct sk_buff *, const struct sadb_msg *, void * const *);
+
+struct sadb_msg {
+	__u8 sadb_msg_version;
+	__u8 sadb_msg_type;
+	__u8 sadb_msg_errno;
+	__u8 sadb_msg_satype;
+	__u16 sadb_msg_len;
+	__u16 sadb_msg_reserved;
+	__u32 sadb_msg_seq;
+	__u32 sadb_msg_pid;
+};
+
+enum {
+	IPSEC_MODE_ANY = 0,
+	IPSEC_MODE_TRANSPORT = 1,
+	IPSEC_MODE_TUNNEL = 2,
+	IPSEC_MODE_BEET = 3,
+};
+
+enum {
+	IPSEC_POLICY_DISCARD = 0,
+	IPSEC_POLICY_NONE = 1,
+	IPSEC_POLICY_IPSEC = 2,
+	IPSEC_POLICY_ENTRUST = 3,
+	IPSEC_POLICY_BYPASS = 4,
+};
+
+enum {
+	IPSEC_DIR_ANY = 0,
+	IPSEC_DIR_INBOUND = 1,
+	IPSEC_DIR_OUTBOUND = 2,
+	IPSEC_DIR_FWD = 3,
+	IPSEC_DIR_MAX = 4,
+	IPSEC_DIR_INVALID = 5,
+};
+
+enum {
+	IPSEC_LEVEL_DEFAULT = 0,
+	IPSEC_LEVEL_USE = 1,
+	IPSEC_LEVEL_REQUIRE = 2,
+	IPSEC_LEVEL_UNIQUE = 3,
+};
+
+struct pfkey_sock {
+	struct sock sk;
+	int registered;
+	int promisc;
+	struct {
+		uint8_t msg_version;
+		uint32_t msg_portid;
+		int (*dump)(struct pfkey_sock *);
+		void (*done)(struct pfkey_sock *);
+		union {
+			struct xfrm_policy_walk policy;
+			struct xfrm_state_walk state;
+		} u;
+		struct sk_buff *skb;
+	} dump;
+	struct mutex dump_lock;
+};
+
+struct sadb_x_policy {
+	__u16 sadb_x_policy_len;
+	__u16 sadb_x_policy_exttype;
+	__u16 sadb_x_policy_type;
+	__u8 sadb_x_policy_dir;
+	__u8 sadb_x_policy_reserved;
+	__u32 sadb_x_policy_id;
+	__u32 sadb_x_policy_priority;
+};
+
+struct sadb_x_sec_ctx {
+	__u16 sadb_x_sec_len;
+	__u16 sadb_x_sec_exttype;
+	__u8 sadb_x_ctx_alg;
+	__u8 sadb_x_ctx_doi;
+	__u16 sadb_x_ctx_len;
+};
+
+struct sadb_ext {
+	__u16 sadb_ext_len;
+	__u16 sadb_ext_type;
+};
+
+struct sadb_key {
+	__u16 sadb_key_len;
+	__u16 sadb_key_exttype;
+	__u16 sadb_key_bits;
+	__u16 sadb_key_reserved;
+};
+
+struct sadb_address {
+	__u16 sadb_address_len;
+	__u16 sadb_address_exttype;
+	__u8 sadb_address_proto;
+	__u8 sadb_address_prefixlen;
+	__u16 sadb_address_reserved;
+};
+
+struct sadb_prop {
+	__u16 sadb_prop_len;
+	__u16 sadb_prop_exttype;
+	__u8 sadb_prop_replay;
+	__u8 sadb_prop_reserved[3];
+};
+
+struct sadb_comb {
+	__u8 sadb_comb_auth;
+	__u8 sadb_comb_encrypt;
+	__u16 sadb_comb_flags;
+	__u16 sadb_comb_auth_minbits;
+	__u16 sadb_comb_auth_maxbits;
+	__u16 sadb_comb_encrypt_minbits;
+	__u16 sadb_comb_encrypt_maxbits;
+	__u32 sadb_comb_reserved;
+	__u32 sadb_comb_soft_allocations;
+	__u32 sadb_comb_hard_allocations;
+	__u64 sadb_comb_soft_bytes;
+	__u64 sadb_comb_hard_bytes;
+	__u64 sadb_comb_soft_addtime;
+	__u64 sadb_comb_hard_addtime;
+	__u64 sadb_comb_soft_usetime;
+	__u64 sadb_comb_hard_usetime;
+};
+
+struct sadb_x_ipsecrequest {
+	__u16 sadb_x_ipsecrequest_len;
+	__u16 sadb_x_ipsecrequest_proto;
+	__u8 sadb_x_ipsecrequest_mode;
+	__u8 sadb_x_ipsecrequest_level;
+	__u16 sadb_x_ipsecrequest_reserved1;
+	__u32 sadb_x_ipsecrequest_reqid;
+	__u32 sadb_x_ipsecrequest_reserved2;
+};
+
+struct netns_pfkey {
+	struct hlist_head table;
+	atomic_t socks_nr;
+};
+
+struct sadb_lifetime {
+	__u16 sadb_lifetime_len;
+	__u16 sadb_lifetime_exttype;
+	__u32 sadb_lifetime_allocations;
+	__u64 sadb_lifetime_bytes;
+	__u64 sadb_lifetime_addtime;
+	__u64 sadb_lifetime_usetime;
+};
+
+struct sadb_sa {
+	__u16 sadb_sa_len;
+	__u16 sadb_sa_exttype;
+	__be32 sadb_sa_spi;
+	__u8 sadb_sa_replay;
+	__u8 sadb_sa_state;
+	__u8 sadb_sa_auth;
+	__u8 sadb_sa_encrypt;
+	__u32 sadb_sa_flags;
+};
+
+struct sadb_x_sa2 {
+	__u16 sadb_x_sa2_len;
+	__u16 sadb_x_sa2_exttype;
+	__u8 sadb_x_sa2_mode;
+	__u8 sadb_x_sa2_reserved1;
+	__u16 sadb_x_sa2_reserved2;
+	__u32 sadb_x_sa2_sequence;
+	__u32 sadb_x_sa2_reqid;
+};
+
+struct sadb_x_nat_t_type {
+	__u16 sadb_x_nat_t_type_len;
+	__u16 sadb_x_nat_t_type_exttype;
+	__u8 sadb_x_nat_t_type_type;
+	__u8 sadb_x_nat_t_type_reserved[3];
+};
+
+struct sadb_x_nat_t_port {
+	__u16 sadb_x_nat_t_port_len;
+	__u16 sadb_x_nat_t_port_exttype;
+	__be16 sadb_x_nat_t_port_port;
+	__u16 sadb_x_nat_t_port_reserved;
+};
+
+struct sadb_supported {
+	__u16 sadb_supported_len;
+	__u16 sadb_supported_exttype;
+	__u32 sadb_supported_reserved;
+};
+
+struct sadb_spirange {
+	__u16 sadb_spirange_len;
+	__u16 sadb_spirange_exttype;
+	__u32 sadb_spirange_min;
+	__u32 sadb_spirange_max;
+	__u32 sadb_spirange_reserved;
+};
+
+struct sadb_x_filter {
+	__u16 sadb_x_filter_len;
+	__u16 sadb_x_filter_exttype;
+	__u32 sadb_x_filter_saddr[4];
+	__u32 sadb_x_filter_daddr[4];
+	__u16 sadb_x_filter_family;
+	__u8 sadb_x_filter_splen;
+	__u8 sadb_x_filter_dplen;
+};
+
+enum br_boolopt_id {
+	BR_BOOLOPT_NO_LL_LEARN = 0,
+	BR_BOOLOPT_MCAST_VLAN_SNOOPING = 1,
+	BR_BOOLOPT_MST_ENABLE = 2,
+	BR_BOOLOPT_MAX = 3,
+};
+
+enum net_bridge_opts {
+	BROPT_VLAN_ENABLED = 0,
+	BROPT_VLAN_STATS_ENABLED = 1,
+	BROPT_NF_CALL_IPTABLES = 2,
+	BROPT_NF_CALL_IP6TABLES = 3,
+	BROPT_NF_CALL_ARPTABLES = 4,
+	BROPT_GROUP_ADDR_SET = 5,
+	BROPT_MULTICAST_ENABLED = 6,
+	BROPT_MULTICAST_QUERY_USE_IFADDR = 7,
+	BROPT_MULTICAST_STATS_ENABLED = 8,
+	BROPT_HAS_IPV6_ADDR = 9,
+	BROPT_NEIGH_SUPPRESS_ENABLED = 10,
+	BROPT_MTU_SET_BY_USER = 11,
+	BROPT_VLAN_STATS_PER_PORT = 12,
+	BROPT_NO_LL_LEARN = 13,
+	BROPT_VLAN_BRIDGE_BINDING = 14,
+	BROPT_MCAST_VLAN_SNOOPING_ENABLED = 15,
+	BROPT_MST_ENABLED = 16,
+};
+
+enum switchdev_notifier_type {
+	SWITCHDEV_FDB_ADD_TO_BRIDGE = 1,
+	SWITCHDEV_FDB_DEL_TO_BRIDGE = 2,
+	SWITCHDEV_FDB_ADD_TO_DEVICE = 3,
+	SWITCHDEV_FDB_DEL_TO_DEVICE = 4,
+	SWITCHDEV_FDB_OFFLOADED = 5,
+	SWITCHDEV_FDB_FLUSH_TO_BRIDGE = 6,
+	SWITCHDEV_PORT_OBJ_ADD = 7,
+	SWITCHDEV_PORT_OBJ_DEL = 8,
+	SWITCHDEV_PORT_ATTR_SET = 9,
+	SWITCHDEV_VXLAN_FDB_ADD_TO_BRIDGE = 10,
+	SWITCHDEV_VXLAN_FDB_DEL_TO_BRIDGE = 11,
+	SWITCHDEV_VXLAN_FDB_ADD_TO_DEVICE = 12,
+	SWITCHDEV_VXLAN_FDB_DEL_TO_DEVICE = 13,
+	SWITCHDEV_VXLAN_FDB_OFFLOADED = 14,
+	SWITCHDEV_BRPORT_OFFLOADED = 15,
+	SWITCHDEV_BRPORT_UNOFFLOADED = 16,
+	SWITCHDEV_BRPORT_REPLAY = 17,
+};
+
+struct br_boolopt_multi {
+	__u32 optval;
+	__u32 optmask;
+};
+
+struct nf_br_ops {
+	int (*br_dev_xmit_hook)(struct sk_buff *);
+};
+
+enum br_pkt_type {
+	BR_PKT_UNICAST = 0,
+	BR_PKT_MULTICAST = 1,
+	BR_PKT_BROADCAST = 2,
+};
+
+struct net_bridge_mcast_gc {
+	struct hlist_node gc_node;
+	void (*destroy)(struct net_bridge_mcast_gc *);
+};
+
+struct net_bridge_port_group;
+
+struct net_bridge_mdb_entry {
+	struct rhash_head rhnode;
+	struct net_bridge *br;
+	struct net_bridge_port_group __attribute__((btf_type_tag("rcu"))) *ports;
+	struct br_ip addr;
+	bool host_joined;
+	struct timer_list timer;
+	struct hlist_node mdb_node;
+	struct net_bridge_mcast_gc mcast_gc;
+	struct callback_head rcu;
+};
+
+struct net_bridge_port_group_sg_key {
+	struct net_bridge_port *port;
+	struct br_ip addr;
+};
+
+struct net_bridge_port_group {
+	struct net_bridge_port_group __attribute__((btf_type_tag("rcu"))) *next;
+	struct net_bridge_port_group_sg_key key;
+	unsigned char eth_addr[6];
+	unsigned char flags;
+	unsigned char filter_mode;
+	unsigned char grp_query_rexmit_cnt;
+	unsigned char rt_protocol;
+	struct hlist_head src_list;
+	unsigned int src_ents;
+	struct timer_list timer;
+	struct timer_list rexmit_timer;
+	struct hlist_node mglist;
+	struct rb_root eht_set_tree;
+	struct rb_root eht_host_tree;
+	struct rhash_head rhnode;
+	struct net_bridge_mcast_gc mcast_gc;
+	struct callback_head rcu;
+};
+
+enum {
+	BR_FDB_LOCAL = 0,
+	BR_FDB_STATIC = 1,
+	BR_FDB_STICKY = 2,
+	BR_FDB_ADDED_BY_USER = 3,
+	BR_FDB_ADDED_BY_EXT_LEARN = 4,
+	BR_FDB_OFFLOADED = 5,
+	BR_FDB_NOTIFY = 6,
+	BR_FDB_NOTIFY_INACTIVE = 7,
+	BR_FDB_LOCKED = 8,
+};
+
+enum {
+	NFEA_UNSPEC = 0,
+	NFEA_ACTIVITY_NOTIFY = 1,
+	NFEA_DONT_REFRESH = 2,
+	__NFEA_MAX = 3,
+};
+
+enum {
+	FDB_NOTIFY_BIT = 1,
+	FDB_NOTIFY_INACTIVE_BIT = 2,
+};
+
+struct net_bridge_vlan_group {
+	struct rhashtable vlan_hash;
+	struct rhashtable tunnel_hash;
+	struct list_head vlan_list;
+	u16 num_vlans;
+	u16 pvid;
+	u8 pvid_state;
+};
+
+struct net_bridge_fdb_flush_desc {
+	unsigned long flags;
+	unsigned long flags_mask;
+	int port_ifindex;
+	u16 vlan_id;
+};
+
+struct __fdb_entry {
+	__u8 mac_addr[6];
+	__u8 port_no;
+	__u8 is_local;
+	__u32 ageing_timer_value;
+	__u8 port_hi;
+	__u8 pad0;
+	__u16 unused;
+};
+
+enum {
+	BR_MCAST_DIR_RX = 0,
+	BR_MCAST_DIR_TX = 1,
+	BR_MCAST_DIR_SIZE = 2,
+};
+
+enum {
+	MDB_RTR_TYPE_DISABLED = 0,
+	MDB_RTR_TYPE_TEMP_QUERY = 1,
+	MDB_RTR_TYPE_PERM = 2,
+	MDB_RTR_TYPE_TEMP = 3,
+};
+
+struct br_frame_type {
+	__be16 type;
+	int (*frame_handler)(struct net_bridge_port *, struct sk_buff *);
+	struct hlist_node list;
+};
+
+struct __bridge_info {
+	__u64 designated_root;
+	__u64 bridge_id;
+	__u32 root_path_cost;
+	__u32 max_age;
+	__u32 hello_time;
+	__u32 forward_delay;
+	__u32 bridge_max_age;
+	__u32 bridge_hello_time;
+	__u32 bridge_forward_delay;
+	__u8 topology_change;
+	__u8 topology_change_detected;
+	__u8 root_port;
+	__u8 stp_enabled;
+	__u32 ageing_time;
+	__u32 gc_interval;
+	__u32 hello_timer_value;
+	__u32 tcn_timer_value;
+	__u32 topology_change_timer_value;
+	__u32 gc_timer_value;
+};
+
+struct __port_info {
+	__u64 designated_root;
+	__u64 designated_bridge;
+	__u16 port_id;
+	__u16 designated_port;
+	__u32 path_cost;
+	__u32 designated_cost;
+	__u8 state;
+	__u8 top_change_ack;
+	__u8 config_pending;
+	__u8 unused0;
+	__u32 message_age_timer_value;
+	__u32 forward_delay_timer_value;
+	__u32 hold_timer_value;
+};
+
+enum switchdev_attr_id {
+	SWITCHDEV_ATTR_ID_UNDEFINED = 0,
+	SWITCHDEV_ATTR_ID_PORT_STP_STATE = 1,
+	SWITCHDEV_ATTR_ID_PORT_MST_STATE = 2,
+	SWITCHDEV_ATTR_ID_PORT_BRIDGE_FLAGS = 3,
+	SWITCHDEV_ATTR_ID_PORT_PRE_BRIDGE_FLAGS = 4,
+	SWITCHDEV_ATTR_ID_PORT_MROUTER = 5,
+	SWITCHDEV_ATTR_ID_BRIDGE_AGEING_TIME = 6,
+	SWITCHDEV_ATTR_ID_BRIDGE_VLAN_FILTERING = 7,
+	SWITCHDEV_ATTR_ID_BRIDGE_VLAN_PROTOCOL = 8,
+	SWITCHDEV_ATTR_ID_BRIDGE_MC_DISABLED = 9,
+	SWITCHDEV_ATTR_ID_BRIDGE_MROUTER = 10,
+	SWITCHDEV_ATTR_ID_BRIDGE_MST = 11,
+	SWITCHDEV_ATTR_ID_MRP_PORT_ROLE = 12,
+	SWITCHDEV_ATTR_ID_VLAN_MSTI = 13,
+};
+
+struct switchdev_mst_state {
+	u16 msti;
+	u8 state;
+};
+
+struct switchdev_brport_flags {
+	unsigned long val;
+	unsigned long mask;
+};
+
+struct switchdev_vlan_msti {
+	u16 vid;
+	u16 msti;
+};
+
+struct switchdev_attr {
+	struct net_device *orig_dev;
+	enum switchdev_attr_id id;
+	u32 flags;
+	void *complete_priv;
+	void (*complete)(struct net_device *, int, void *);
+	union {
+		u8 stp_state;
+		struct switchdev_mst_state mst_state;
+		struct switchdev_brport_flags brport_flags;
+		bool mrouter;
+		clock_t ageing_time;
+		bool vlan_filtering;
+		u16 vlan_protocol;
+		bool mst;
+		bool mc_disabled;
+		u8 mrp_port_role;
+		struct switchdev_vlan_msti vlan_msti;
+	} u;
+};
+
+struct br_config_bpdu {
+	unsigned int topology_change: 1;
+	unsigned int topology_change_ack: 1;
+	bridge_id root;
+	int root_path_cost;
+	bridge_id bridge_id;
+	port_id port_id;
+	int message_age;
+	int max_age;
+	int hello_time;
+	int forward_delay;
+};
+
+enum {
+	BR_GROUPFWD_STP = 1,
+	BR_GROUPFWD_MACPAUSE = 2,
+	BR_GROUPFWD_LACP = 4,
+};
+
+enum {
+	IFLA_BR_UNSPEC = 0,
+	IFLA_BR_FORWARD_DELAY = 1,
+	IFLA_BR_HELLO_TIME = 2,
+	IFLA_BR_MAX_AGE = 3,
+	IFLA_BR_AGEING_TIME = 4,
+	IFLA_BR_STP_STATE = 5,
+	IFLA_BR_PRIORITY = 6,
+	IFLA_BR_VLAN_FILTERING = 7,
+	IFLA_BR_VLAN_PROTOCOL = 8,
+	IFLA_BR_GROUP_FWD_MASK = 9,
+	IFLA_BR_ROOT_ID = 10,
+	IFLA_BR_BRIDGE_ID = 11,
+	IFLA_BR_ROOT_PORT = 12,
+	IFLA_BR_ROOT_PATH_COST = 13,
+	IFLA_BR_TOPOLOGY_CHANGE = 14,
+	IFLA_BR_TOPOLOGY_CHANGE_DETECTED = 15,
+	IFLA_BR_HELLO_TIMER = 16,
+	IFLA_BR_TCN_TIMER = 17,
+	IFLA_BR_TOPOLOGY_CHANGE_TIMER = 18,
+	IFLA_BR_GC_TIMER = 19,
+	IFLA_BR_GROUP_ADDR = 20,
+	IFLA_BR_FDB_FLUSH = 21,
+	IFLA_BR_MCAST_ROUTER = 22,
+	IFLA_BR_MCAST_SNOOPING = 23,
+	IFLA_BR_MCAST_QUERY_USE_IFADDR = 24,
+	IFLA_BR_MCAST_QUERIER = 25,
+	IFLA_BR_MCAST_HASH_ELASTICITY = 26,
+	IFLA_BR_MCAST_HASH_MAX = 27,
+	IFLA_BR_MCAST_LAST_MEMBER_CNT = 28,
+	IFLA_BR_MCAST_STARTUP_QUERY_CNT = 29,
+	IFLA_BR_MCAST_LAST_MEMBER_INTVL = 30,
+	IFLA_BR_MCAST_MEMBERSHIP_INTVL = 31,
+	IFLA_BR_MCAST_QUERIER_INTVL = 32,
+	IFLA_BR_MCAST_QUERY_INTVL = 33,
+	IFLA_BR_MCAST_QUERY_RESPONSE_INTVL = 34,
+	IFLA_BR_MCAST_STARTUP_QUERY_INTVL = 35,
+	IFLA_BR_NF_CALL_IPTABLES = 36,
+	IFLA_BR_NF_CALL_IP6TABLES = 37,
+	IFLA_BR_NF_CALL_ARPTABLES = 38,
+	IFLA_BR_VLAN_DEFAULT_PVID = 39,
+	IFLA_BR_PAD = 40,
+	IFLA_BR_VLAN_STATS_ENABLED = 41,
+	IFLA_BR_MCAST_STATS_ENABLED = 42,
+	IFLA_BR_MCAST_IGMP_VERSION = 43,
+	IFLA_BR_MCAST_MLD_VERSION = 44,
+	IFLA_BR_VLAN_STATS_PER_PORT = 45,
+	IFLA_BR_MULTI_BOOLOPT = 46,
+	IFLA_BR_MCAST_QUERIER_STATE = 47,
+	__IFLA_BR_MAX = 48,
+};
+
+enum {
+	LINK_XSTATS_TYPE_UNSPEC = 0,
+	LINK_XSTATS_TYPE_BRIDGE = 1,
+	LINK_XSTATS_TYPE_BOND = 2,
+	__LINK_XSTATS_TYPE_MAX = 3,
+};
+
+enum {
+	BRIDGE_XSTATS_UNSPEC = 0,
+	BRIDGE_XSTATS_VLAN = 1,
+	BRIDGE_XSTATS_MCAST = 2,
+	BRIDGE_XSTATS_PAD = 3,
+	BRIDGE_XSTATS_STP = 4,
+	__BRIDGE_XSTATS_MAX = 5,
+};
+
+struct bridge_vlan_info {
+	__u16 flags;
+	__u16 vid;
+};
+
+struct vtunnel_info {
+	u32 tunid;
+	u16 vid;
+	u16 flags;
+};
+
+enum {
+	IFLA_BRIDGE_VLAN_TUNNEL_UNSPEC = 0,
+	IFLA_BRIDGE_VLAN_TUNNEL_ID = 1,
+	IFLA_BRIDGE_VLAN_TUNNEL_VID = 2,
+	IFLA_BRIDGE_VLAN_TUNNEL_FLAGS = 3,
+	__IFLA_BRIDGE_VLAN_TUNNEL_MAX = 4,
+};
+
+enum {
+	BR_VLFLAG_PER_PORT_STATS = 1,
+	BR_VLFLAG_ADDED_BY_SWITCHDEV = 2,
+	BR_VLFLAG_MCAST_ENABLED = 4,
+	BR_VLFLAG_GLOBAL_MCAST_ENABLED = 8,
+	BR_VLFLAG_NEIGH_SUPPRESS_ENABLED = 16,
+};
+
+struct brport_attribute {
+	struct attribute attr;
+	ssize_t (*show)(struct net_bridge_port *, char *);
+	int (*store)(struct net_bridge_port *, unsigned long);
+	int (*store_raw)(struct net_bridge_port *, char *);
+};
+
+enum {
+	BRIDGE_QUERIER_UNSPEC = 0,
+	BRIDGE_QUERIER_IP_ADDRESS = 1,
+	BRIDGE_QUERIER_IP_PORT = 2,
+	BRIDGE_QUERIER_IP_OTHER_TIMER = 3,
+	BRIDGE_QUERIER_PAD = 4,
+	BRIDGE_QUERIER_IPV6_ADDRESS = 5,
+	BRIDGE_QUERIER_IPV6_PORT = 6,
+	BRIDGE_QUERIER_IPV6_OTHER_TIMER = 7,
+	__BRIDGE_QUERIER_MAX = 8,
+};
+
+enum {
+	PIM_TYPE_HELLO = 0,
+	PIM_TYPE_REGISTER = 1,
+	PIM_TYPE_REGISTER_STOP = 2,
+	PIM_TYPE_JOIN_PRUNE = 3,
+	PIM_TYPE_BOOTSTRAP = 4,
+	PIM_TYPE_ASSERT = 5,
+	PIM_TYPE_GRAFT = 6,
+	PIM_TYPE_GRAFT_ACK = 7,
+	PIM_TYPE_CANDIDATE_RP_ADV = 8,
+};
+
+struct net_bridge_group_src {
+	struct hlist_node node;
+	struct br_ip addr;
+	struct net_bridge_port_group *pg;
+	u8 flags;
+	u8 src_query_rexmit_cnt;
+	struct timer_list timer;
+	struct net_bridge *br;
+	struct net_bridge_mcast_gc mcast_gc;
+	struct callback_head rcu;
+};
+
+struct pimhdr {
+	__u8 type;
+	__u8 reserved;
+	__be16 csum;
+};
+
+struct br_ip_list {
+	struct list_head list;
+	struct br_ip addr;
+};
+
+enum {
+	MDBA_UNSPEC = 0,
+	MDBA_MDB = 1,
+	MDBA_ROUTER = 2,
+	__MDBA_MAX = 3,
+};
+
+enum {
+	MDBA_ROUTER_UNSPEC = 0,
+	MDBA_ROUTER_PORT = 1,
+	__MDBA_ROUTER_MAX = 2,
+};
+
+enum {
+	MDBA_ROUTER_PATTR_UNSPEC = 0,
+	MDBA_ROUTER_PATTR_TIMER = 1,
+	MDBA_ROUTER_PATTR_TYPE = 2,
+	MDBA_ROUTER_PATTR_INET_TIMER = 3,
+	MDBA_ROUTER_PATTR_INET6_TIMER = 4,
+	MDBA_ROUTER_PATTR_VID = 5,
+	__MDBA_ROUTER_PATTR_MAX = 6,
+};
+
+enum {
+	MDBA_MDB_UNSPEC = 0,
+	MDBA_MDB_ENTRY = 1,
+	__MDBA_MDB_MAX = 2,
+};
+
+enum {
+	MDBA_MDB_ENTRY_UNSPEC = 0,
+	MDBA_MDB_ENTRY_INFO = 1,
+	__MDBA_MDB_ENTRY_MAX = 2,
+};
+
+enum {
+	MDBA_MDB_EATTR_UNSPEC = 0,
+	MDBA_MDB_EATTR_TIMER = 1,
+	MDBA_MDB_EATTR_SRC_LIST = 2,
+	MDBA_MDB_EATTR_GROUP_MODE = 3,
+	MDBA_MDB_EATTR_SOURCE = 4,
+	MDBA_MDB_EATTR_RTPROT = 5,
+	MDBA_MDB_EATTR_DST = 6,
+	MDBA_MDB_EATTR_DST_PORT = 7,
+	MDBA_MDB_EATTR_VNI = 8,
+	MDBA_MDB_EATTR_IFINDEX = 9,
+	MDBA_MDB_EATTR_SRC_VNI = 10,
+	__MDBA_MDB_EATTR_MAX = 11,
+};
+
+enum {
+	MDBA_MDB_SRCLIST_UNSPEC = 0,
+	MDBA_MDB_SRCLIST_ENTRY = 1,
+	__MDBA_MDB_SRCLIST_MAX = 2,
+};
+
+enum {
+	MDBA_MDB_SRCATTR_UNSPEC = 0,
+	MDBA_MDB_SRCATTR_ADDRESS = 1,
+	MDBA_MDB_SRCATTR_TIMER = 2,
+	__MDBA_MDB_SRCATTR_MAX = 3,
+};
+
+enum {
+	MDBE_ATTR_UNSPEC = 0,
+	MDBE_ATTR_SOURCE = 1,
+	MDBE_ATTR_SRC_LIST = 2,
+	MDBE_ATTR_GROUP_MODE = 3,
+	MDBE_ATTR_RTPROT = 4,
+	MDBE_ATTR_DST = 5,
+	MDBE_ATTR_DST_PORT = 6,
+	MDBE_ATTR_VNI = 7,
+	MDBE_ATTR_IFINDEX = 8,
+	MDBE_ATTR_SRC_VNI = 9,
+	__MDBE_ATTR_MAX = 10,
+};
+
+enum {
+	MDBE_SRCATTR_UNSPEC = 0,
+	MDBE_SRCATTR_ADDRESS = 1,
+	__MDBE_SRCATTR_MAX = 2,
+};
+
+struct br_mdb_src_entry;
+
+struct br_mdb_config {
+	struct net_bridge *br;
+	struct net_bridge_port *p;
+	struct br_mdb_entry *entry;
+	struct br_ip group;
+	bool src_entry;
+	u8 filter_mode;
+	u16 nlflags;
+	struct br_mdb_src_entry *src_entries;
+	int num_src_entries;
+	u8 rt_protocol;
+};
+
+struct br_mdb_src_entry {
+	struct br_ip addr;
+};
+
+union net_bridge_eht_addr {
+	__be32 ip4;
+	struct in6_addr ip6;
+};
+
+struct net_bridge_group_eht_set {
+	struct rb_node rb_node;
+	union net_bridge_eht_addr src_addr;
+	struct rb_root entry_tree;
+	struct timer_list timer;
+	struct net_bridge_port_group *pg;
+	struct net_bridge *br;
+	struct net_bridge_mcast_gc mcast_gc;
+};
+
+struct net_bridge_group_eht_host;
+
+struct net_bridge_group_eht_set_entry {
+	struct rb_node rb_node;
+	struct hlist_node host_list;
+	union net_bridge_eht_addr h_addr;
+	struct timer_list timer;
+	struct net_bridge *br;
+	struct net_bridge_group_eht_set *eht_set;
+	struct net_bridge_group_eht_host *h_parent;
+	struct net_bridge_mcast_gc mcast_gc;
+};
+
+struct net_bridge_group_eht_host {
+	struct rb_node rb_node;
+	union net_bridge_eht_addr h_addr;
+	struct hlist_head set_entries;
+	unsigned int num_entries;
+	unsigned char filter_mode;
+	struct net_bridge_port_group *pg;
+};
+
+struct devlink_dev_stats {
+	u32 reload_stats[6];
+	u32 remote_reload_stats[6];
+};
+
+struct devlink_dpipe_headers;
+
+struct devlink_ops;
+
+struct devlink {
+	u32 index;
+	struct xarray ports;
+	struct list_head rate_list;
+	struct list_head sb_list;
+	struct list_head dpipe_table_list;
+	struct list_head resource_list;
+	struct xarray params;
+	struct list_head region_list;
+	struct list_head reporter_list;
+	struct devlink_dpipe_headers *dpipe_headers;
+	struct list_head trap_list;
+	struct list_head trap_group_list;
+	struct list_head trap_policer_list;
+	struct list_head linecard_list;
+	const struct devlink_ops *ops;
+	struct xarray snapshot_ids;
+	struct devlink_dev_stats stats;
+	struct device *dev;
+	possible_net_t _net;
+	struct mutex lock;
+	struct lock_class_key lock_key;
+	u8 reload_failed: 1;
+	refcount_t refcount;
+	struct rcu_work rwork;
+	long: 64;
+	long: 64;
+	long: 64;
+	char priv[0];
+};
+
+struct devlink_dpipe_header;
+
+struct devlink_dpipe_headers {
+	struct devlink_dpipe_header **headers;
+	unsigned int headers_count;
+};
+
+struct devlink_dpipe_field;
+
+struct devlink_dpipe_header {
+	const char *name;
+	unsigned int id;
+	struct devlink_dpipe_field *fields;
+	unsigned int fields_count;
+	bool global;
+};
+
+enum devlink_dpipe_field_mapping_type {
+	DEVLINK_DPIPE_FIELD_MAPPING_TYPE_NONE = 0,
+	DEVLINK_DPIPE_FIELD_MAPPING_TYPE_IFINDEX = 1,
+};
+
+struct devlink_dpipe_field {
+	const char *name;
+	unsigned int id;
+	unsigned int bitwidth;
+	enum devlink_dpipe_field_mapping_type mapping_type;
+};
+
+enum devlink_reload_action {
+	DEVLINK_RELOAD_ACTION_UNSPEC = 0,
+	DEVLINK_RELOAD_ACTION_DRIVER_REINIT = 1,
+	DEVLINK_RELOAD_ACTION_FW_ACTIVATE = 2,
+	__DEVLINK_RELOAD_ACTION_MAX = 3,
+	DEVLINK_RELOAD_ACTION_MAX = 2,
+};
+
+enum devlink_reload_limit {
+	DEVLINK_RELOAD_LIMIT_UNSPEC = 0,
+	DEVLINK_RELOAD_LIMIT_NO_RESET = 1,
+	__DEVLINK_RELOAD_LIMIT_MAX = 2,
+	DEVLINK_RELOAD_LIMIT_MAX = 1,
+};
+
+enum devlink_sb_threshold_type {
+	DEVLINK_SB_THRESHOLD_TYPE_STATIC = 0,
+	DEVLINK_SB_THRESHOLD_TYPE_DYNAMIC = 1,
+};
+
+enum devlink_sb_pool_type {
+	DEVLINK_SB_POOL_TYPE_INGRESS = 0,
+	DEVLINK_SB_POOL_TYPE_EGRESS = 1,
+};
+
+enum devlink_eswitch_encap_mode {
+	DEVLINK_ESWITCH_ENCAP_MODE_NONE = 0,
+	DEVLINK_ESWITCH_ENCAP_MODE_BASIC = 1,
+};
+
+enum devlink_trap_action {
+	DEVLINK_TRAP_ACTION_DROP = 0,
+	DEVLINK_TRAP_ACTION_TRAP = 1,
+	DEVLINK_TRAP_ACTION_MIRROR = 2,
+};
+
+enum devlink_selftest_status {
+	DEVLINK_SELFTEST_STATUS_SKIP = 0,
+	DEVLINK_SELFTEST_STATUS_PASS = 1,
+	DEVLINK_SELFTEST_STATUS_FAIL = 2,
+};
+
+struct devlink_sb_pool_info;
+
+struct devlink_info_req;
+
+struct devlink_flash_update_params;
+
+struct devlink_trap;
+
+struct devlink_trap_group;
+
+struct devlink_trap_policer;
+
+struct devlink_port_new_attrs;
+
+struct devlink_ops {
+	u32 supported_flash_update_params;
+	unsigned long reload_actions;
+	unsigned long reload_limits;
+	int (*reload_down)(struct devlink *, bool, enum devlink_reload_action, enum devlink_reload_limit, struct netlink_ext_ack *);
+	int (*reload_up)(struct devlink *, enum devlink_reload_action, enum devlink_reload_limit, u32 *, struct netlink_ext_ack *);
+	int (*sb_pool_get)(struct devlink *, unsigned int, u16, struct devlink_sb_pool_info *);
+	int (*sb_pool_set)(struct devlink *, unsigned int, u16, u32, enum devlink_sb_threshold_type, struct netlink_ext_ack *);
+	int (*sb_port_pool_get)(struct devlink_port *, unsigned int, u16, u32 *);
+	int (*sb_port_pool_set)(struct devlink_port *, unsigned int, u16, u32, struct netlink_ext_ack *);
+	int (*sb_tc_pool_bind_get)(struct devlink_port *, unsigned int, u16, enum devlink_sb_pool_type, u16 *, u32 *);
+	int (*sb_tc_pool_bind_set)(struct devlink_port *, unsigned int, u16, enum devlink_sb_pool_type, u16, u32, struct netlink_ext_ack *);
+	int (*sb_occ_snapshot)(struct devlink *, unsigned int);
+	int (*sb_occ_max_clear)(struct devlink *, unsigned int);
+	int (*sb_occ_port_pool_get)(struct devlink_port *, unsigned int, u16, u32 *, u32 *);
+	int (*sb_occ_tc_port_bind_get)(struct devlink_port *, unsigned int, u16, enum devlink_sb_pool_type, u32 *, u32 *);
+	int (*eswitch_mode_get)(struct devlink *, u16 *);
+	int (*eswitch_mode_set)(struct devlink *, u16, struct netlink_ext_ack *);
+	int (*eswitch_inline_mode_get)(struct devlink *, u8 *);
+	int (*eswitch_inline_mode_set)(struct devlink *, u8, struct netlink_ext_ack *);
+	int (*eswitch_encap_mode_get)(struct devlink *, enum devlink_eswitch_encap_mode *);
+	int (*eswitch_encap_mode_set)(struct devlink *, enum devlink_eswitch_encap_mode, struct netlink_ext_ack *);
+	int (*info_get)(struct devlink *, struct devlink_info_req *, struct netlink_ext_ack *);
+	int (*flash_update)(struct devlink *, struct devlink_flash_update_params *, struct netlink_ext_ack *);
+	int (*trap_init)(struct devlink *, const struct devlink_trap *, void *);
+	void (*trap_fini)(struct devlink *, const struct devlink_trap *, void *);
+	int (*trap_action_set)(struct devlink *, const struct devlink_trap *, enum devlink_trap_action, struct netlink_ext_ack *);
+	int (*trap_group_init)(struct devlink *, const struct devlink_trap_group *);
+	int (*trap_group_set)(struct devlink *, const struct devlink_trap_group *, const struct devlink_trap_policer *, struct netlink_ext_ack *);
+	int (*trap_group_action_set)(struct devlink *, const struct devlink_trap_group *, enum devlink_trap_action, struct netlink_ext_ack *);
+	int (*trap_drop_counter_get)(struct devlink *, const struct devlink_trap *, u64 *);
+	int (*trap_policer_init)(struct devlink *, const struct devlink_trap_policer *);
+	void (*trap_policer_fini)(struct devlink *, const struct devlink_trap_policer *);
+	int (*trap_policer_set)(struct devlink *, const struct devlink_trap_policer *, u64, u64, struct netlink_ext_ack *);
+	int (*trap_policer_counter_get)(struct devlink *, const struct devlink_trap_policer *, u64 *);
+	int (*port_new)(struct devlink *, const struct devlink_port_new_attrs *, struct netlink_ext_ack *, struct devlink_port **);
+	int (*rate_leaf_tx_share_set)(struct devlink_rate *, void *, u64, struct netlink_ext_ack *);
+	int (*rate_leaf_tx_max_set)(struct devlink_rate *, void *, u64, struct netlink_ext_ack *);
+	int (*rate_leaf_tx_priority_set)(struct devlink_rate *, void *, u32, struct netlink_ext_ack *);
+	int (*rate_leaf_tx_weight_set)(struct devlink_rate *, void *, u32, struct netlink_ext_ack *);
+	int (*rate_node_tx_share_set)(struct devlink_rate *, void *, u64, struct netlink_ext_ack *);
+	int (*rate_node_tx_max_set)(struct devlink_rate *, void *, u64, struct netlink_ext_ack *);
+	int (*rate_node_tx_priority_set)(struct devlink_rate *, void *, u32, struct netlink_ext_ack *);
+	int (*rate_node_tx_weight_set)(struct devlink_rate *, void *, u32, struct netlink_ext_ack *);
+	int (*rate_node_new)(struct devlink_rate *, void **, struct netlink_ext_ack *);
+	int (*rate_node_del)(struct devlink_rate *, void *, struct netlink_ext_ack *);
+	int (*rate_leaf_parent_set)(struct devlink_rate *, struct devlink_rate *, void *, void *, struct netlink_ext_ack *);
+	int (*rate_node_parent_set)(struct devlink_rate *, struct devlink_rate *, void *, void *, struct netlink_ext_ack *);
+	bool (*selftest_check)(struct devlink *, unsigned int, struct netlink_ext_ack *);
+	enum devlink_selftest_status (*selftest_run)(struct devlink *, unsigned int, struct netlink_ext_ack *);
+};
+
+struct devlink_sb_pool_info {
+	enum devlink_sb_pool_type pool_type;
+	u32 size;
+	enum devlink_sb_threshold_type threshold_type;
+	u32 cell_size;
+};
+
+struct devlink_flash_update_params {
+	const struct firmware *fw;
+	const char *component;
+	u32 overwrite_mask;
+};
+
+enum devlink_trap_type {
+	DEVLINK_TRAP_TYPE_DROP = 0,
+	DEVLINK_TRAP_TYPE_EXCEPTION = 1,
+	DEVLINK_TRAP_TYPE_CONTROL = 2,
+};
+
+struct devlink_trap {
+	enum devlink_trap_type type;
+	enum devlink_trap_action init_action;
+	bool generic;
+	u16 id;
+	const char *name;
+	u16 init_group_id;
+	u32 metadata_cap;
+};
+
+struct devlink_trap_group {
+	const char *name;
+	u16 id;
+	bool generic;
+	u32 init_policer_id;
+};
+
+struct devlink_trap_policer {
+	u32 id;
+	u64 init_rate;
+	u64 init_burst;
+	u64 max_rate;
+	u64 min_rate;
+	u64 max_burst;
+	u64 min_burst;
+};
+
+struct devlink_port_new_attrs {
+	enum devlink_port_flavour flavour;
+	unsigned int port_index;
+	u32 controller;
+	u32 sfnum;
+	u16 pfnum;
+	u8 port_index_valid: 1;
+	u8 controller_valid: 1;
+	u8 sfnum_valid: 1;
+};
+
+struct ib_core_device {
+	struct device dev;
+	possible_net_t rdma_net;
+	struct kobject *ports_kobj;
+	struct list_head port_list;
+	struct ib_device *owner;
+};
+
+enum rdma_driver_id {
+	RDMA_DRIVER_UNKNOWN = 0,
+	RDMA_DRIVER_MLX5 = 1,
+	RDMA_DRIVER_MLX4 = 2,
+	RDMA_DRIVER_CXGB3 = 3,
+	RDMA_DRIVER_CXGB4 = 4,
+	RDMA_DRIVER_MTHCA = 5,
+	RDMA_DRIVER_BNXT_RE = 6,
+	RDMA_DRIVER_OCRDMA = 7,
+	RDMA_DRIVER_NES = 8,
+	RDMA_DRIVER_I40IW = 9,
+	RDMA_DRIVER_IRDMA = 9,
+	RDMA_DRIVER_VMW_PVRDMA = 10,
+	RDMA_DRIVER_QEDR = 11,
+	RDMA_DRIVER_HNS = 12,
+	RDMA_DRIVER_USNIC = 13,
+	RDMA_DRIVER_RXE = 14,
+	RDMA_DRIVER_HFI1 = 15,
+	RDMA_DRIVER_QIB = 16,
+	RDMA_DRIVER_EFA = 17,
+	RDMA_DRIVER_SIW = 18,
+	RDMA_DRIVER_ERDMA = 19,
+	RDMA_DRIVER_MANA = 20,
+};
+
+enum ib_cq_notify_flags {
+	IB_CQ_SOLICITED = 1,
+	IB_CQ_NEXT_COMP = 2,
+	IB_CQ_SOLICITED_MASK = 3,
+	IB_CQ_REPORT_MISSED_EVENTS = 4,
+};
+
+struct ib_mad;
+
+enum rdma_link_layer {
+	IB_LINK_LAYER_UNSPECIFIED = 0,
+	IB_LINK_LAYER_INFINIBAND = 1,
+	IB_LINK_LAYER_ETHERNET = 2,
+};
+
+enum rdma_netdev_t {
+	RDMA_NETDEV_OPA_VNIC = 0,
+	RDMA_NETDEV_IPOIB = 1,
+};
+
+enum ib_srq_attr_mask {
+	IB_SRQ_MAX_WR = 1,
+	IB_SRQ_LIMIT = 2,
+};
+
+enum ib_mr_type {
+	IB_MR_TYPE_MEM_REG = 0,
+	IB_MR_TYPE_SG_GAPS = 1,
+	IB_MR_TYPE_DM = 2,
+	IB_MR_TYPE_USER = 3,
+	IB_MR_TYPE_DMA = 4,
+	IB_MR_TYPE_INTEGRITY = 5,
+};
+
+enum ib_uverbs_advise_mr_advice {
+	IB_UVERBS_ADVISE_MR_ADVICE_PREFETCH = 0,
+	IB_UVERBS_ADVISE_MR_ADVICE_PREFETCH_WRITE = 1,
+	IB_UVERBS_ADVISE_MR_ADVICE_PREFETCH_NO_FAULT = 2,
+};
+
+struct uverbs_attr_bundle;
+
+struct rdma_cm_id;
+
+struct iw_cm_id;
+
+struct iw_cm_conn_param;
+
+struct ib_qp;
+
+struct ib_send_wr;
+
+struct ib_recv_wr;
+
+struct ib_cq;
+
+struct ib_wc;
+
+struct ib_srq;
+
+struct ib_grh;
+
+struct ib_device_attr;
+
+struct ib_udata;
+
+struct ib_device_modify;
+
+struct ib_port_attr;
+
+struct ib_port_modify;
+
+struct ib_port_immutable;
+
+struct rdma_netdev_alloc_params;
+
+union ib_gid;
+
+struct ib_gid_attr;
+
+struct ib_ucontext;
+
+struct rdma_user_mmap_entry;
+
+struct ib_pd;
+
+struct ib_ah;
+
+struct rdma_ah_init_attr;
+
+struct rdma_ah_attr;
+
+struct ib_srq_init_attr;
+
+struct ib_srq_attr;
+
+struct ib_qp_init_attr;
+
+struct ib_qp_attr;
+
+struct ib_cq_init_attr;
+
+struct ib_mr;
+
+struct ib_sge;
+
+struct ib_mr_status;
+
+struct ib_mw;
+
+struct ib_xrcd;
+
+struct ib_flow;
+
+struct ib_flow_attr;
+
+struct ib_flow_action;
+
+struct ib_wq;
+
+struct ib_wq_init_attr;
+
+struct ib_wq_attr;
+
+struct ib_rwq_ind_table;
+
+struct ib_rwq_ind_table_init_attr;
+
+struct ib_dm;
+
+struct ib_dm_alloc_attr;
+
+struct ib_dm_mr_attr;
+
+struct ib_counters;
+
+struct ib_counters_read_attr;
+
+struct rdma_hw_stats;
+
+struct rdma_counter;
+
+struct ib_device_ops {
+	struct module *owner;
+	enum rdma_driver_id driver_id;
+	u32 uverbs_abi_ver;
+	unsigned int uverbs_no_driver_id_binding: 1;
+	const struct attribute_group *device_group;
+	const struct attribute_group **port_groups;
+	int (*post_send)(struct ib_qp *, const struct ib_send_wr *, const struct ib_send_wr **);
+	int (*post_recv)(struct ib_qp *, const struct ib_recv_wr *, const struct ib_recv_wr **);
+	void (*drain_rq)(struct ib_qp *);
+	void (*drain_sq)(struct ib_qp *);
+	int (*poll_cq)(struct ib_cq *, int, struct ib_wc *);
+	int (*peek_cq)(struct ib_cq *, int);
+	int (*req_notify_cq)(struct ib_cq *, enum ib_cq_notify_flags);
+	int (*post_srq_recv)(struct ib_srq *, const struct ib_recv_wr *, const struct ib_recv_wr **);
+	int (*process_mad)(struct ib_device *, int, u32, const struct ib_wc *, const struct ib_grh *, const struct ib_mad *, struct ib_mad *, size_t *, u16 *);
+	int (*query_device)(struct ib_device *, struct ib_device_attr *, struct ib_udata *);
+	int (*modify_device)(struct ib_device *, int, struct ib_device_modify *);
+	void (*get_dev_fw_str)(struct ib_device *, char *);
+	const struct cpumask * (*get_vector_affinity)(struct ib_device *, int);
+	int (*query_port)(struct ib_device *, u32, struct ib_port_attr *);
+	int (*modify_port)(struct ib_device *, u32, int, struct ib_port_modify *);
+	int (*get_port_immutable)(struct ib_device *, u32, struct ib_port_immutable *);
+	enum rdma_link_layer (*get_link_layer)(struct ib_device *, u32);
+	struct net_device * (*get_netdev)(struct ib_device *, u32);
+	struct net_device * (*alloc_rdma_netdev)(struct ib_device *, u32, enum rdma_netdev_t, const char *, unsigned char, void (*)(struct net_device *));
+	int (*rdma_netdev_get_params)(struct ib_device *, u32, enum rdma_netdev_t, struct rdma_netdev_alloc_params *);
+	int (*query_gid)(struct ib_device *, u32, int, union ib_gid *);
+	int (*add_gid)(const struct ib_gid_attr *, void **);
+	int (*del_gid)(const struct ib_gid_attr *, void **);
+	int (*query_pkey)(struct ib_device *, u32, u16, u16 *);
+	int (*alloc_ucontext)(struct ib_ucontext *, struct ib_udata *);
+	void (*dealloc_ucontext)(struct ib_ucontext *);
+	int (*mmap)(struct ib_ucontext *, struct vm_area_struct *);
+	void (*mmap_free)(struct rdma_user_mmap_entry *);
+	void (*disassociate_ucontext)(struct ib_ucontext *);
+	int (*alloc_pd)(struct ib_pd *, struct ib_udata *);
+	int (*dealloc_pd)(struct ib_pd *, struct ib_udata *);
+	int (*create_ah)(struct ib_ah *, struct rdma_ah_init_attr *, struct ib_udata *);
+	int (*create_user_ah)(struct ib_ah *, struct rdma_ah_init_attr *, struct ib_udata *);
+	int (*modify_ah)(struct ib_ah *, struct rdma_ah_attr *);
+	int (*query_ah)(struct ib_ah *, struct rdma_ah_attr *);
+	int (*destroy_ah)(struct ib_ah *, u32);
+	int (*create_srq)(struct ib_srq *, struct ib_srq_init_attr *, struct ib_udata *);
+	int (*modify_srq)(struct ib_srq *, struct ib_srq_attr *, enum ib_srq_attr_mask, struct ib_udata *);
+	int (*query_srq)(struct ib_srq *, struct ib_srq_attr *);
+	int (*destroy_srq)(struct ib_srq *, struct ib_udata *);
+	int (*create_qp)(struct ib_qp *, struct ib_qp_init_attr *, struct ib_udata *);
+	int (*modify_qp)(struct ib_qp *, struct ib_qp_attr *, int, struct ib_udata *);
+	int (*query_qp)(struct ib_qp *, struct ib_qp_attr *, int, struct ib_qp_init_attr *);
+	int (*destroy_qp)(struct ib_qp *, struct ib_udata *);
+	int (*create_cq)(struct ib_cq *, const struct ib_cq_init_attr *, struct ib_udata *);
+	int (*modify_cq)(struct ib_cq *, u16, u16);
+	int (*destroy_cq)(struct ib_cq *, struct ib_udata *);
+	int (*resize_cq)(struct ib_cq *, int, struct ib_udata *);
+	struct ib_mr * (*get_dma_mr)(struct ib_pd *, int);
+	struct ib_mr * (*reg_user_mr)(struct ib_pd *, u64, u64, u64, int, struct ib_udata *);
+	struct ib_mr * (*reg_user_mr_dmabuf)(struct ib_pd *, u64, u64, u64, int, int, struct ib_udata *);
+	struct ib_mr * (*rereg_user_mr)(struct ib_mr *, int, u64, u64, u64, int, struct ib_pd *, struct ib_udata *);
+	int (*dereg_mr)(struct ib_mr *, struct ib_udata *);
+	struct ib_mr * (*alloc_mr)(struct ib_pd *, enum ib_mr_type, u32);
+	struct ib_mr * (*alloc_mr_integrity)(struct ib_pd *, u32, u32);
+	int (*advise_mr)(struct ib_pd *, enum ib_uverbs_advise_mr_advice, u32, struct ib_sge *, u32, struct uverbs_attr_bundle *);
+	int (*map_mr_sg)(struct ib_mr *, struct scatterlist *, int, unsigned int *);
+	int (*check_mr_status)(struct ib_mr *, u32, struct ib_mr_status *);
+	int (*alloc_mw)(struct ib_mw *, struct ib_udata *);
+	int (*dealloc_mw)(struct ib_mw *);
+	int (*attach_mcast)(struct ib_qp *, union ib_gid *, u16);
+	int (*detach_mcast)(struct ib_qp *, union ib_gid *, u16);
+	int (*alloc_xrcd)(struct ib_xrcd *, struct ib_udata *);
+	int (*dealloc_xrcd)(struct ib_xrcd *, struct ib_udata *);
+	struct ib_flow * (*create_flow)(struct ib_qp *, struct ib_flow_attr *, struct ib_udata *);
+	int (*destroy_flow)(struct ib_flow *);
+	int (*destroy_flow_action)(struct ib_flow_action *);
+	int (*set_vf_link_state)(struct ib_device *, int, u32, int);
+	int (*get_vf_config)(struct ib_device *, int, u32, struct ifla_vf_info *);
+	int (*get_vf_stats)(struct ib_device *, int, u32, struct ifla_vf_stats *);
+	int (*get_vf_guid)(struct ib_device *, int, u32, struct ifla_vf_guid *, struct ifla_vf_guid *);
+	int (*set_vf_guid)(struct ib_device *, int, u32, u64, int);
+	struct ib_wq * (*create_wq)(struct ib_pd *, struct ib_wq_init_attr *, struct ib_udata *);
+	int (*destroy_wq)(struct ib_wq *, struct ib_udata *);
+	int (*modify_wq)(struct ib_wq *, struct ib_wq_attr *, u32, struct ib_udata *);
+	int (*create_rwq_ind_table)(struct ib_rwq_ind_table *, struct ib_rwq_ind_table_init_attr *, struct ib_udata *);
+	int (*destroy_rwq_ind_table)(struct ib_rwq_ind_table *);
+	struct ib_dm * (*alloc_dm)(struct ib_device *, struct ib_ucontext *, struct ib_dm_alloc_attr *, struct uverbs_attr_bundle *);
+	int (*dealloc_dm)(struct ib_dm *, struct uverbs_attr_bundle *);
+	struct ib_mr * (*reg_dm_mr)(struct ib_pd *, struct ib_dm *, struct ib_dm_mr_attr *, struct uverbs_attr_bundle *);
+	int (*create_counters)(struct ib_counters *, struct uverbs_attr_bundle *);
+	int (*destroy_counters)(struct ib_counters *);
+	int (*read_counters)(struct ib_counters *, struct ib_counters_read_attr *, struct uverbs_attr_bundle *);
+	int (*map_mr_sg_pi)(struct ib_mr *, struct scatterlist *, int, unsigned int *, struct scatterlist *, int, unsigned int *);
+	struct rdma_hw_stats * (*alloc_hw_device_stats)(struct ib_device *);
+	struct rdma_hw_stats * (*alloc_hw_port_stats)(struct ib_device *, u32);
+	int (*get_hw_stats)(struct ib_device *, struct rdma_hw_stats *, u32, int);
+	int (*modify_hw_stat)(struct ib_device *, u32, unsigned int, bool);
+	int (*fill_res_mr_entry)(struct sk_buff *, struct ib_mr *);
+	int (*fill_res_mr_entry_raw)(struct sk_buff *, struct ib_mr *);
+	int (*fill_res_cq_entry)(struct sk_buff *, struct ib_cq *);
+	int (*fill_res_cq_entry_raw)(struct sk_buff *, struct ib_cq *);
+	int (*fill_res_qp_entry)(struct sk_buff *, struct ib_qp *);
+	int (*fill_res_qp_entry_raw)(struct sk_buff *, struct ib_qp *);
+	int (*fill_res_cm_id_entry)(struct sk_buff *, struct rdma_cm_id *);
+	int (*enable_driver)(struct ib_device *);
+	void (*dealloc_driver)(struct ib_device *);
+	void (*iw_add_ref)(struct ib_qp *);
+	void (*iw_rem_ref)(struct ib_qp *);
+	struct ib_qp * (*iw_get_qp)(struct ib_device *, int);
+	int (*iw_connect)(struct iw_cm_id *, struct iw_cm_conn_param *);
+	int (*iw_accept)(struct iw_cm_id *, struct iw_cm_conn_param *);
+	int (*iw_reject)(struct iw_cm_id *, const void *, u8);
+	int (*iw_create_listen)(struct iw_cm_id *, int);
+	int (*iw_destroy_listen)(struct iw_cm_id *);
+	int (*counter_bind_qp)(struct rdma_counter *, struct ib_qp *);
+	int (*counter_unbind_qp)(struct ib_qp *);
+	int (*counter_dealloc)(struct rdma_counter *);
+	struct rdma_hw_stats * (*counter_alloc_stats)(struct rdma_counter *);
+	int (*counter_update_stats)(struct rdma_counter *);
+	int (*fill_stat_mr_entry)(struct sk_buff *, struct ib_mr *);
+	int (*query_ucontext)(struct ib_ucontext *, struct uverbs_attr_bundle *);
+	int (*get_numa_node)(struct ib_device *);
+	size_t size_ib_ah;
+	size_t size_ib_counters;
+	size_t size_ib_cq;
+	size_t size_ib_mw;
+	size_t size_ib_pd;
+	size_t size_ib_qp;
+	size_t size_ib_rwq_ind_table;
+	size_t size_ib_srq;
+	size_t size_ib_ucontext;
+	size_t size_ib_xrcd;
+};
+
+enum ib_atomic_cap {
+	IB_ATOMIC_NONE = 0,
+	IB_ATOMIC_HCA = 1,
+	IB_ATOMIC_GLOB = 2,
+};
+
+struct ib_odp_caps {
+	uint64_t general_caps;
+	struct {
+		uint32_t rc_odp_caps;
+		uint32_t uc_odp_caps;
+		uint32_t ud_odp_caps;
+		uint32_t xrc_odp_caps;
+	} per_transport_caps;
+};
+
+struct ib_rss_caps {
+	u32 supported_qpts;
+	u32 max_rwq_indirection_tables;
+	u32 max_rwq_indirection_table_size;
+};
+
+struct ib_tm_caps {
+	u32 max_rndv_hdr_size;
+	u32 max_num_tags;
+	u32 flags;
+	u32 max_ops;
+	u32 max_sge;
+};
+
+struct ib_cq_caps {
+	u16 max_cq_moderation_count;
+	u16 max_cq_moderation_period;
+};
+
+struct ib_device_attr {
+	u64 fw_ver;
+	__be64 sys_image_guid;
+	u64 max_mr_size;
+	u64 page_size_cap;
+	u32 vendor_id;
+	u32 vendor_part_id;
+	u32 hw_ver;
+	int max_qp;
+	int max_qp_wr;
+	u64 device_cap_flags;
+	u64 kernel_cap_flags;
+	int max_send_sge;
+	int max_recv_sge;
+	int max_sge_rd;
+	int max_cq;
+	int max_cqe;
+	int max_mr;
+	int max_pd;
+	int max_qp_rd_atom;
+	int max_ee_rd_atom;
+	int max_res_rd_atom;
+	int max_qp_init_rd_atom;
+	int max_ee_init_rd_atom;
+	enum ib_atomic_cap atomic_cap;
+	enum ib_atomic_cap masked_atomic_cap;
+	int max_ee;
+	int max_rdd;
+	int max_mw;
+	int max_raw_ipv6_qp;
+	int max_raw_ethy_qp;
+	int max_mcast_grp;
+	int max_mcast_qp_attach;
+	int max_total_mcast_qp_attach;
+	int max_ah;
+	int max_srq;
+	int max_srq_wr;
+	int max_srq_sge;
+	unsigned int max_fast_reg_page_list_len;
+	unsigned int max_pi_fast_reg_page_list_len;
+	u16 max_pkeys;
+	u8 local_ca_ack_delay;
+	int sig_prot_cap;
+	int sig_guard_cap;
+	struct ib_odp_caps odp_caps;
+	uint64_t timestamp_mask;
+	uint64_t hca_core_clock;
+	struct ib_rss_caps rss_caps;
+	u32 max_wq_type_rq;
+	u32 raw_packet_caps;
+	struct ib_tm_caps tm_caps;
+	struct ib_cq_caps cq_caps;
+	u64 max_dm_size;
+	u32 max_sgl_rd;
+};
+
+struct hw_stats_device_data;
+
+struct rdma_restrack_root;
+
+struct uapi_definition;
+
+struct ib_port_data;
+
+struct rdma_link_ops;
+
+struct ib_device {
+	struct device *dma_device;
+	struct ib_device_ops ops;
+	char name[64];
+	struct callback_head callback_head;
+	struct list_head event_handler_list;
+	struct rw_semaphore event_handler_rwsem;
+	spinlock_t qp_open_list_lock;
+	struct rw_semaphore client_data_rwsem;
+	struct xarray client_data;
+	struct mutex unregistration_lock;
+	rwlock_t cache_lock;
+	struct ib_port_data *port_data;
+	int num_comp_vectors;
+	union {
+		struct device dev;
+		struct ib_core_device coredev;
+	};
+	const struct attribute_group *groups[4];
+	u64 uverbs_cmd_mask;
+	char node_desc[64];
+	__be64 node_guid;
+	u32 local_dma_lkey;
+	u16 is_switch: 1;
+	u16 kverbs_provider: 1;
+	u16 use_cq_dim: 1;
+	u8 node_type;
+	u32 phys_port_cnt;
+	struct ib_device_attr attrs;
+	struct hw_stats_device_data *hw_stats_data;
+	u32 index;
+	spinlock_t cq_pools_lock;
+	struct list_head cq_pools[3];
+	struct rdma_restrack_root *res;
+	const struct uapi_definition *driver_def;
+	refcount_t refcount;
+	struct completion unreg_completion;
+	struct work_struct unregistration_work;
+	const struct rdma_link_ops *link_ops;
+	struct mutex compat_devs_mutex;
+	struct xarray compat_devs;
+	char iw_ifname[16];
+	u32 iw_driver_flags;
+	u32 lag_flags;
+};
+
+struct ib_uqp_object;
+
+enum ib_qp_type {
+	IB_QPT_SMI = 0,
+	IB_QPT_GSI = 1,
+	IB_QPT_RC = 2,
+	IB_QPT_UC = 3,
+	IB_QPT_UD = 4,
+	IB_QPT_RAW_IPV6 = 5,
+	IB_QPT_RAW_ETHERTYPE = 6,
+	IB_QPT_RAW_PACKET = 8,
+	IB_QPT_XRC_INI = 9,
+	IB_QPT_XRC_TGT = 10,
+	IB_QPT_MAX = 11,
+	IB_QPT_DRIVER = 255,
+	IB_QPT_RESERVED1 = 4096,
+	IB_QPT_RESERVED2 = 4097,
+	IB_QPT_RESERVED3 = 4098,
+	IB_QPT_RESERVED4 = 4099,
+	IB_QPT_RESERVED5 = 4100,
+	IB_QPT_RESERVED6 = 4101,
+	IB_QPT_RESERVED7 = 4102,
+	IB_QPT_RESERVED8 = 4103,
+	IB_QPT_RESERVED9 = 4104,
+	IB_QPT_RESERVED10 = 4105,
+};
+
+enum rdma_restrack_type {
+	RDMA_RESTRACK_PD = 0,
+	RDMA_RESTRACK_CQ = 1,
+	RDMA_RESTRACK_QP = 2,
+	RDMA_RESTRACK_CM_ID = 3,
+	RDMA_RESTRACK_MR = 4,
+	RDMA_RESTRACK_CTX = 5,
+	RDMA_RESTRACK_COUNTER = 6,
+	RDMA_RESTRACK_SRQ = 7,
+	RDMA_RESTRACK_MAX = 8,
+};
+
+struct rdma_restrack_entry {
+	bool valid;
+	u8 no_track: 1;
+	struct kref kref;
+	struct completion comp;
+	struct task_struct *task;
+	const char *kern_name;
+	enum rdma_restrack_type type;
+	bool user;
+	u32 id;
+};
+
+struct ib_event;
+
+struct ib_qp_security;
+
+struct ib_qp {
+	struct ib_device *device;
+	struct ib_pd *pd;
+	struct ib_cq *send_cq;
+	struct ib_cq *recv_cq;
+	spinlock_t mr_lock;
+	int mrs_used;
+	struct list_head rdma_mrs;
+	struct list_head sig_mrs;
+	struct ib_srq *srq;
+	struct ib_xrcd *xrcd;
+	struct list_head xrcd_list;
+	atomic_t usecnt;
+	struct list_head open_list;
+	struct ib_qp *real_qp;
+	struct ib_uqp_object *uobject;
+	void (*event_handler)(struct ib_event *, void *);
+	void *qp_context;
+	const struct ib_gid_attr *av_sgid_attr;
+	const struct ib_gid_attr *alt_path_sgid_attr;
+	u32 qp_num;
+	u32 max_write_sge;
+	u32 max_read_sge;
+	enum ib_qp_type qp_type;
+	struct ib_rwq_ind_table *rwq_ind_tbl;
+	struct ib_qp_security *qp_sec;
+	u32 port;
+	bool integrity_en;
+	struct rdma_restrack_entry res;
+	struct rdma_counter *counter;
+};
+
+struct ib_uobject;
+
+struct ib_pd {
+	u32 local_dma_lkey;
+	u32 flags;
+	struct ib_device *device;
+	struct ib_uobject *uobject;
+	atomic_t usecnt;
+	u32 unsafe_global_rkey;
+	struct ib_mr *__internal_mr;
+	struct rdma_restrack_entry res;
+};
+
+struct ib_uverbs_file;
+
+struct ib_rdmacg_object {};
+
+struct uverbs_api_object;
+
+struct ib_uobject {
+	u64 user_handle;
+	struct ib_uverbs_file *ufile;
+	struct ib_ucontext *context;
+	void *object;
+	struct list_head list;
+	struct ib_rdmacg_object cg_obj;
+	int id;
+	struct kref ref;
+	atomic_t usecnt;
+	struct callback_head rcu;
+	const struct uverbs_api_object *uapi_object;
+};
+
+struct ib_ucontext {
+	struct ib_device *device;
+	struct ib_uverbs_file *ufile;
+	struct ib_rdmacg_object cg_obj;
+	struct rdma_restrack_entry res;
+	struct xarray mmap_xa;
+};
+
+struct ib_sig_attrs;
+
+struct ib_mr {
+	struct ib_device *device;
+	struct ib_pd *pd;
+	u32 lkey;
+	u32 rkey;
+	u64 iova;
+	u64 length;
+	unsigned int page_size;
+	enum ib_mr_type type;
+	bool need_inval;
+	union {
+		struct ib_uobject *uobject;
+		struct list_head qp_entry;
+	};
+	struct ib_dm *dm;
+	struct ib_sig_attrs *sig_attrs;
+	struct rdma_restrack_entry res;
+};
+
+struct ib_dm {
+	struct ib_device *device;
+	u32 length;
+	u32 flags;
+	struct ib_uobject *uobject;
+	atomic_t usecnt;
+};
+
+enum ib_signature_type {
+	IB_SIG_TYPE_NONE = 0,
+	IB_SIG_TYPE_T10_DIF = 1,
+};
+
+enum ib_t10_dif_bg_type {
+	IB_T10DIF_CRC = 0,
+	IB_T10DIF_CSUM = 1,
+};
+
+struct ib_t10_dif_domain {
+	enum ib_t10_dif_bg_type bg_type;
+	u16 pi_interval;
+	u16 bg;
+	u16 app_tag;
+	u32 ref_tag;
+	bool ref_remap;
+	bool app_escape;
+	bool ref_escape;
+	u16 apptag_check_mask;
+};
+
+struct ib_sig_domain {
+	enum ib_signature_type sig_type;
+	union {
+		struct ib_t10_dif_domain dif;
+	} sig;
+};
+
+struct ib_sig_attrs {
+	u8 check_mask;
+	struct ib_sig_domain mem;
+	struct ib_sig_domain wire;
+	int meta_length;
+};
+
+struct irq_poll;
+
+typedef int irq_poll_fn(struct irq_poll *, int);
+
+struct irq_poll {
+	struct list_head list;
+	unsigned long state;
+	int weight;
+	irq_poll_fn *poll;
+};
+
+struct ib_ucq_object;
+
+typedef void (*ib_comp_handler)(struct ib_cq *, void *);
+
+enum ib_poll_context {
+	IB_POLL_SOFTIRQ = 0,
+	IB_POLL_WORKQUEUE = 1,
+	IB_POLL_UNBOUND_WORKQUEUE = 2,
+	IB_POLL_LAST_POOL_TYPE = 2,
+	IB_POLL_DIRECT = 3,
+};
+
+struct dim;
+
+struct ib_cq {
+	struct ib_device *device;
+	struct ib_ucq_object *uobject;
+	ib_comp_handler comp_handler;
+	void (*event_handler)(struct ib_event *, void *);
+	void *cq_context;
+	int cqe;
+	unsigned int cqe_used;
+	atomic_t usecnt;
+	enum ib_poll_context poll_ctx;
+	struct ib_wc *wc;
+	struct list_head pool_entry;
+	union {
+		struct irq_poll iop;
+		struct work_struct work;
+	};
+	struct workqueue_struct *comp_wq;
+	struct dim *dim;
+	ktime_t timestamp;
+	u8 interrupt: 1;
+	u8 shared: 1;
+	unsigned int comp_vector;
+	struct rdma_restrack_entry res;
+};
+
+enum ib_event_type {
+	IB_EVENT_CQ_ERR = 0,
+	IB_EVENT_QP_FATAL = 1,
+	IB_EVENT_QP_REQ_ERR = 2,
+	IB_EVENT_QP_ACCESS_ERR = 3,
+	IB_EVENT_COMM_EST = 4,
+	IB_EVENT_SQ_DRAINED = 5,
+	IB_EVENT_PATH_MIG = 6,
+	IB_EVENT_PATH_MIG_ERR = 7,
+	IB_EVENT_DEVICE_FATAL = 8,
+	IB_EVENT_PORT_ACTIVE = 9,
+	IB_EVENT_PORT_ERR = 10,
+	IB_EVENT_LID_CHANGE = 11,
+	IB_EVENT_PKEY_CHANGE = 12,
+	IB_EVENT_SM_CHANGE = 13,
+	IB_EVENT_SRQ_ERR = 14,
+	IB_EVENT_SRQ_LIMIT_REACHED = 15,
+	IB_EVENT_QP_LAST_WQE_REACHED = 16,
+	IB_EVENT_CLIENT_REREGISTER = 17,
+	IB_EVENT_GID_CHANGE = 18,
+	IB_EVENT_WQ_FATAL = 19,
+};
+
+struct ib_event {
+	struct ib_device *device;
+	union {
+		struct ib_cq *cq;
+		struct ib_qp *qp;
+		struct ib_srq *srq;
+		struct ib_wq *wq;
+		u32 port_num;
+	} element;
+	enum ib_event_type event;
+};
+
+struct ib_usrq_object;
+
+enum ib_srq_type {
+	IB_SRQT_BASIC = 0,
+	IB_SRQT_XRC = 1,
+	IB_SRQT_TM = 2,
+};
+
+struct ib_srq {
+	struct ib_device *device;
+	struct ib_pd *pd;
+	struct ib_usrq_object *uobject;
+	void (*event_handler)(struct ib_event *, void *);
+	void *srq_context;
+	enum ib_srq_type srq_type;
+	atomic_t usecnt;
+	struct {
+		struct ib_cq *cq;
+		union {
+			struct {
+				struct ib_xrcd *xrcd;
+				u32 srq_num;
+			} xrc;
+		};
+	} ext;
+	struct rdma_restrack_entry res;
+};
+
+struct ib_xrcd {
+	struct ib_device *device;
+	atomic_t usecnt;
+	struct inode *inode;
+	struct rw_semaphore tgt_qps_rwsem;
+	struct xarray tgt_qps;
+};
+
+struct ib_uwq_object;
+
+enum ib_wq_state {
+	IB_WQS_RESET = 0,
+	IB_WQS_RDY = 1,
+	IB_WQS_ERR = 2,
+};
+
+enum ib_wq_type {
+	IB_WQT_RQ = 0,
+};
+
+struct ib_wq {
+	struct ib_device *device;
+	struct ib_uwq_object *uobject;
+	void *wq_context;
+	void (*event_handler)(struct ib_event *, void *);
+	struct ib_pd *pd;
+	struct ib_cq *cq;
+	u32 wq_num;
+	enum ib_wq_state state;
+	enum ib_wq_type wq_type;
+	atomic_t usecnt;
+};
+
+enum ib_wc_status {
+	IB_WC_SUCCESS = 0,
+	IB_WC_LOC_LEN_ERR = 1,
+	IB_WC_LOC_QP_OP_ERR = 2,
+	IB_WC_LOC_EEC_OP_ERR = 3,
+	IB_WC_LOC_PROT_ERR = 4,
+	IB_WC_WR_FLUSH_ERR = 5,
+	IB_WC_MW_BIND_ERR = 6,
+	IB_WC_BAD_RESP_ERR = 7,
+	IB_WC_LOC_ACCESS_ERR = 8,
+	IB_WC_REM_INV_REQ_ERR = 9,
+	IB_WC_REM_ACCESS_ERR = 10,
+	IB_WC_REM_OP_ERR = 11,
+	IB_WC_RETRY_EXC_ERR = 12,
+	IB_WC_RNR_RETRY_EXC_ERR = 13,
+	IB_WC_LOC_RDD_VIOL_ERR = 14,
+	IB_WC_REM_INV_RD_REQ_ERR = 15,
+	IB_WC_REM_ABORT_ERR = 16,
+	IB_WC_INV_EECN_ERR = 17,
+	IB_WC_INV_EEC_STATE_ERR = 18,
+	IB_WC_FATAL_ERR = 19,
+	IB_WC_RESP_TIMEOUT_ERR = 20,
+	IB_WC_GENERAL_ERR = 21,
+};
+
+enum ib_wc_opcode {
+	IB_WC_SEND = 0,
+	IB_WC_RDMA_WRITE = 1,
+	IB_WC_RDMA_READ = 2,
+	IB_WC_COMP_SWAP = 3,
+	IB_WC_FETCH_ADD = 4,
+	IB_WC_BIND_MW = 5,
+	IB_WC_LOCAL_INV = 6,
+	IB_WC_LSO = 7,
+	IB_WC_ATOMIC_WRITE = 9,
+	IB_WC_REG_MR = 10,
+	IB_WC_MASKED_COMP_SWAP = 11,
+	IB_WC_MASKED_FETCH_ADD = 12,
+	IB_WC_FLUSH = 8,
+	IB_WC_RECV = 128,
+	IB_WC_RECV_RDMA_WITH_IMM = 129,
+};
+
+struct ib_cqe;
+
+struct ib_wc {
+	union {
+		u64 wr_id;
+		struct ib_cqe *wr_cqe;
+	};
+	enum ib_wc_status status;
+	enum ib_wc_opcode opcode;
+	u32 vendor_err;
+	u32 byte_len;
+	struct ib_qp *qp;
+	union {
+		__be32 imm_data;
+		u32 invalidate_rkey;
+	} ex;
+	u32 src_qp;
+	u32 slid;
+	int wc_flags;
+	u16 pkey_index;
+	u8 sl;
+	u8 dlid_path_bits;
+	u32 port_num;
+	u8 smac[6];
+	u16 vlan_id;
+	u8 network_hdr_type;
+};
+
+struct ib_cqe {
+	void (*done)(struct ib_cq *, struct ib_wc *);
+};
+
+struct dim_stats {
+	int ppms;
+	int bpms;
+	int epms;
+	int cpms;
+	int cpe_ratio;
+};
+
+struct dim_sample {
+	ktime_t time;
+	u32 pkt_ctr;
+	u32 byte_ctr;
+	u16 event_ctr;
+	u32 comp_ctr;
+};
+
+struct dim {
+	u8 state;
+	struct dim_stats prev_stats;
+	struct dim_sample start_sample;
+	struct dim_sample measuring_sample;
+	struct work_struct work;
+	void *priv;
+	u8 profile_ix;
+	u8 mode;
+	u8 tune_state;
+	u8 steps_right;
+	u8 steps_left;
+	u8 tired;
+};
+
+union ib_gid {
+	u8 raw[16];
+	struct {
+		__be64 subnet_prefix;
+		__be64 interface_id;
+	} global;
+};
+
+enum ib_gid_type {
+	IB_GID_TYPE_IB = 0,
+	IB_GID_TYPE_ROCE = 1,
+	IB_GID_TYPE_ROCE_UDP_ENCAP = 2,
+	IB_GID_TYPE_SIZE = 3,
+};
+
+struct ib_gid_attr {
+	struct net_device __attribute__((btf_type_tag("rcu"))) *ndev;
+	struct ib_device *device;
+	union ib_gid gid;
+	enum ib_gid_type gid_type;
+	u16 index;
+	u32 port_num;
+};
+
+struct ib_rwq_ind_table {
+	struct ib_device *device;
+	struct ib_uobject *uobject;
+	atomic_t usecnt;
+	u32 ind_tbl_num;
+	u32 log_ind_tbl_size;
+	struct ib_wq **ind_tbl;
+};
+
+struct ib_ports_pkeys;
+
+struct ib_qp_security {
+	struct ib_qp *qp;
+	struct ib_device *dev;
+	struct mutex mutex;
+	struct ib_ports_pkeys *ports_pkeys;
+	struct list_head shared_qp_list;
+	void *security;
+	bool destroying;
+	atomic_t error_list_count;
+	struct completion error_complete;
+	int error_comps_pending;
+};
+
+enum port_pkey_state {
+	IB_PORT_PKEY_NOT_VALID = 0,
+	IB_PORT_PKEY_VALID = 1,
+	IB_PORT_PKEY_LISTED = 2,
+};
+
+struct ib_port_pkey {
+	enum port_pkey_state state;
+	u16 pkey_index;
+	u32 port_num;
+	struct list_head qp_list;
+	struct list_head to_error_list;
+	struct ib_qp_security *sec;
+};
+
+struct ib_ports_pkeys {
+	struct ib_port_pkey main;
+	struct ib_port_pkey alt;
+};
+
+enum rdma_nl_counter_mode {
+	RDMA_COUNTER_MODE_NONE = 0,
+	RDMA_COUNTER_MODE_AUTO = 1,
+	RDMA_COUNTER_MODE_MANUAL = 2,
+	RDMA_COUNTER_MODE_MAX = 3,
+};
+
+enum rdma_nl_counter_mask {
+	RDMA_COUNTER_MASK_QP_TYPE = 1,
+	RDMA_COUNTER_MASK_PID = 2,
+};
+
+struct auto_mode_param {
+	int qp_type;
+};
+
+struct rdma_counter_mode {
+	enum rdma_nl_counter_mode mode;
+	enum rdma_nl_counter_mask mask;
+	struct auto_mode_param param;
+};
+
+struct rdma_counter {
+	struct rdma_restrack_entry res;
+	struct ib_device *device;
+	uint32_t id;
+	struct kref kref;
+	struct rdma_counter_mode mode;
+	struct mutex lock;
+	struct rdma_hw_stats *stats;
+	u32 port;
+};
+
+struct rdma_stat_desc;
+
+struct rdma_hw_stats {
+	struct mutex lock;
+	unsigned long timestamp;
+	unsigned long lifespan;
+	const struct rdma_stat_desc *descs;
+	unsigned long *is_disabled;
+	int num_counters;
+	u64 value[0];
+};
+
+struct rdma_stat_desc {
+	const char *name;
+	unsigned int flags;
+	const void *priv;
+};
+
+enum ib_wr_opcode {
+	IB_WR_RDMA_WRITE = 0,
+	IB_WR_RDMA_WRITE_WITH_IMM = 1,
+	IB_WR_SEND = 2,
+	IB_WR_SEND_WITH_IMM = 3,
+	IB_WR_RDMA_READ = 4,
+	IB_WR_ATOMIC_CMP_AND_SWP = 5,
+	IB_WR_ATOMIC_FETCH_AND_ADD = 6,
+	IB_WR_BIND_MW = 8,
+	IB_WR_LSO = 10,
+	IB_WR_SEND_WITH_INV = 9,
+	IB_WR_RDMA_READ_WITH_INV = 11,
+	IB_WR_LOCAL_INV = 7,
+	IB_WR_MASKED_ATOMIC_CMP_AND_SWP = 12,
+	IB_WR_MASKED_ATOMIC_FETCH_AND_ADD = 13,
+	IB_WR_FLUSH = 14,
+	IB_WR_ATOMIC_WRITE = 15,
+	IB_WR_REG_MR = 32,
+	IB_WR_REG_MR_INTEGRITY = 33,
+	IB_WR_RESERVED1 = 240,
+	IB_WR_RESERVED2 = 241,
+	IB_WR_RESERVED3 = 242,
+	IB_WR_RESERVED4 = 243,
+	IB_WR_RESERVED5 = 244,
+	IB_WR_RESERVED6 = 245,
+	IB_WR_RESERVED7 = 246,
+	IB_WR_RESERVED8 = 247,
+	IB_WR_RESERVED9 = 248,
+	IB_WR_RESERVED10 = 249,
+};
+
+struct ib_send_wr {
+	struct ib_send_wr *next;
+	union {
+		u64 wr_id;
+		struct ib_cqe *wr_cqe;
+	};
+	struct ib_sge *sg_list;
+	int num_sge;
+	enum ib_wr_opcode opcode;
+	int send_flags;
+	union {
+		__be32 imm_data;
+		u32 invalidate_rkey;
+	} ex;
+};
+
+struct ib_sge {
+	u64 addr;
+	u32 length;
+	u32 lkey;
+};
+
+struct ib_recv_wr {
+	struct ib_recv_wr *next;
+	union {
+		u64 wr_id;
+		struct ib_cqe *wr_cqe;
+	};
+	struct ib_sge *sg_list;
+	int num_sge;
+};
+
+struct ib_grh {
+	__be32 version_tclass_flow;
+	__be16 paylen;
+	u8 next_hdr;
+	u8 hop_limit;
+	union ib_gid sgid;
+	union ib_gid dgid;
+};
+
+struct ib_udata {
+	const void __attribute__((btf_type_tag("user"))) *inbuf;
+	void __attribute__((btf_type_tag("user"))) *outbuf;
+	size_t inlen;
+	size_t outlen;
+};
+
+struct ib_device_modify {
+	u64 sys_image_guid;
+	char node_desc[64];
+};
+
+enum ib_port_state {
+	IB_PORT_NOP = 0,
+	IB_PORT_DOWN = 1,
+	IB_PORT_INIT = 2,
+	IB_PORT_ARMED = 3,
+	IB_PORT_ACTIVE = 4,
+	IB_PORT_ACTIVE_DEFER = 5,
+};
+
+enum ib_mtu {
+	IB_MTU_256 = 1,
+	IB_MTU_512 = 2,
+	IB_MTU_1024 = 3,
+	IB_MTU_2048 = 4,
+	IB_MTU_4096 = 5,
+};
+
+struct ib_port_attr {
+	u64 subnet_prefix;
+	enum ib_port_state state;
+	enum ib_mtu max_mtu;
+	enum ib_mtu active_mtu;
+	u32 phys_mtu;
+	int gid_tbl_len;
+	unsigned int ip_gids: 1;
+	u32 port_cap_flags;
+	u32 max_msg_sz;
+	u32 bad_pkey_cntr;
+	u32 qkey_viol_cntr;
+	u16 pkey_tbl_len;
+	u32 sm_lid;
+	u32 lid;
+	u8 lmc;
+	u8 max_vl_num;
+	u8 sm_sl;
+	u8 subnet_timeout;
+	u8 init_type_reply;
+	u8 active_width;
+	u16 active_speed;
+	u8 phys_state;
+	u16 port_cap_flags2;
+};
+
+struct ib_port_modify {
+	u32 set_port_cap_mask;
+	u32 clr_port_cap_mask;
+	u8 init_type;
+};
+
+struct ib_port_immutable {
+	int pkey_tbl_len;
+	int gid_tbl_len;
+	u32 core_cap_flags;
+	u32 max_mad_size;
+};
+
+struct rdma_netdev_alloc_params {
+	size_t sizeof_priv;
+	unsigned int txqs;
+	unsigned int rxqs;
+	void *param;
+	int (*initialize_rdma_netdev)(struct ib_device *, u32, struct net_device *, void *);
+};
+
+struct rdma_user_mmap_entry {
+	struct kref ref;
+	struct ib_ucontext *ucontext;
+	unsigned long start_pgoff;
+	size_t npages;
+	bool driver_removed;
+};
+
+enum rdma_ah_attr_type {
+	RDMA_AH_ATTR_TYPE_UNDEFINED = 0,
+	RDMA_AH_ATTR_TYPE_IB = 1,
+	RDMA_AH_ATTR_TYPE_ROCE = 2,
+	RDMA_AH_ATTR_TYPE_OPA = 3,
+};
+
+struct ib_ah {
+	struct ib_device *device;
+	struct ib_pd *pd;
+	struct ib_uobject *uobject;
+	const struct ib_gid_attr *sgid_attr;
+	enum rdma_ah_attr_type type;
+};
+
+struct rdma_ah_init_attr {
+	struct rdma_ah_attr *ah_attr;
+	u32 flags;
+	struct net_device *xmit_slave;
+};
+
+struct ib_ah_attr {
+	u16 dlid;
+	u8 src_path_bits;
+};
+
+struct roce_ah_attr {
+	u8 dmac[6];
+};
+
+struct opa_ah_attr {
+	u32 dlid;
+	u8 src_path_bits;
+	bool make_grd;
+};
+
+struct ib_global_route {
+	const struct ib_gid_attr *sgid_attr;
+	union ib_gid dgid;
+	u32 flow_label;
+	u8 sgid_index;
+	u8 hop_limit;
+	u8 traffic_class;
+};
+
+struct rdma_ah_attr {
+	struct ib_global_route grh;
+	u8 sl;
+	u8 static_rate;
+	u32 port_num;
+	u8 ah_flags;
+	enum rdma_ah_attr_type type;
+	union {
+		struct ib_ah_attr ib;
+		struct roce_ah_attr roce;
+		struct opa_ah_attr opa;
+	};
+};
+
+struct ib_srq_attr {
+	u32 max_wr;
+	u32 max_sge;
+	u32 srq_limit;
+};
+
+struct ib_srq_init_attr {
+	void (*event_handler)(struct ib_event *, void *);
+	void *srq_context;
+	struct ib_srq_attr attr;
+	enum ib_srq_type srq_type;
+	struct {
+		struct ib_cq *cq;
+		union {
+			struct {
+				struct ib_xrcd *xrcd;
+			} xrc;
+			struct {
+				u32 max_num_tags;
+			} tag_matching;
+		};
+	} ext;
+};
+
+struct ib_qp_cap {
+	u32 max_send_wr;
+	u32 max_recv_wr;
+	u32 max_send_sge;
+	u32 max_recv_sge;
+	u32 max_inline_data;
+	u32 max_rdma_ctxs;
+};
+
+enum ib_sig_type {
+	IB_SIGNAL_ALL_WR = 0,
+	IB_SIGNAL_REQ_WR = 1,
+};
+
+struct ib_qp_init_attr {
+	void (*event_handler)(struct ib_event *, void *);
+	void *qp_context;
+	struct ib_cq *send_cq;
+	struct ib_cq *recv_cq;
+	struct ib_srq *srq;
+	struct ib_xrcd *xrcd;
+	struct ib_qp_cap cap;
+	enum ib_sig_type sq_sig_type;
+	enum ib_qp_type qp_type;
+	u32 create_flags;
+	u32 port_num;
+	struct ib_rwq_ind_table *rwq_ind_tbl;
+	u32 source_qpn;
+};
+
+enum ib_qp_state {
+	IB_QPS_RESET = 0,
+	IB_QPS_INIT = 1,
+	IB_QPS_RTR = 2,
+	IB_QPS_RTS = 3,
+	IB_QPS_SQD = 4,
+	IB_QPS_SQE = 5,
+	IB_QPS_ERR = 6,
+};
+
+enum ib_mig_state {
+	IB_MIG_MIGRATED = 0,
+	IB_MIG_REARM = 1,
+	IB_MIG_ARMED = 2,
+};
+
+struct ib_qp_attr {
+	enum ib_qp_state qp_state;
+	enum ib_qp_state cur_qp_state;
+	enum ib_mtu path_mtu;
+	enum ib_mig_state path_mig_state;
+	u32 qkey;
+	u32 rq_psn;
+	u32 sq_psn;
+	u32 dest_qp_num;
+	int qp_access_flags;
+	struct ib_qp_cap cap;
+	struct rdma_ah_attr ah_attr;
+	struct rdma_ah_attr alt_ah_attr;
+	u16 pkey_index;
+	u16 alt_pkey_index;
+	u8 en_sqd_async_notify;
+	u8 sq_draining;
+	u8 max_rd_atomic;
+	u8 max_dest_rd_atomic;
+	u8 min_rnr_timer;
+	u32 port_num;
+	u8 timeout;
+	u8 retry_cnt;
+	u8 rnr_retry;
+	u32 alt_port_num;
+	u8 alt_timeout;
+	u32 rate_limit;
+	struct net_device *xmit_slave;
+};
+
+struct ib_cq_init_attr {
+	unsigned int cqe;
+	u32 comp_vector;
+	u32 flags;
+};
+
+enum ib_sig_err_type {
+	IB_SIG_BAD_GUARD = 0,
+	IB_SIG_BAD_REFTAG = 1,
+	IB_SIG_BAD_APPTAG = 2,
+};
+
+struct ib_sig_err {
+	enum ib_sig_err_type err_type;
+	u32 expected;
+	u32 actual;
+	u64 sig_err_offset;
+	u32 key;
+};
+
+struct ib_mr_status {
+	u32 fail_status;
+	struct ib_sig_err sig_err;
+};
+
+enum ib_mw_type {
+	IB_MW_TYPE_1 = 1,
+	IB_MW_TYPE_2 = 2,
+};
+
+struct ib_mw {
+	struct ib_device *device;
+	struct ib_pd *pd;
+	struct ib_uobject *uobject;
+	u32 rkey;
+	enum ib_mw_type type;
+};
+
+struct ib_flow {
+	struct ib_qp *qp;
+	struct ib_device *device;
+	struct ib_uobject *uobject;
+};
+
+enum ib_flow_attr_type {
+	IB_FLOW_ATTR_NORMAL = 0,
+	IB_FLOW_ATTR_ALL_DEFAULT = 1,
+	IB_FLOW_ATTR_MC_DEFAULT = 2,
+	IB_FLOW_ATTR_SNIFFER = 3,
+};
+
+struct ib_flow_eth_filter {
+	u8 dst_mac[6];
+	u8 src_mac[6];
+	__be16 ether_type;
+	__be16 vlan_tag;
+	u8 real_sz[0];
+};
+
+struct ib_flow_spec_eth {
+	u32 type;
+	u16 size;
+	struct ib_flow_eth_filter val;
+	struct ib_flow_eth_filter mask;
+};
+
+struct ib_flow_ib_filter {
+	__be16 dlid;
+	__u8 sl;
+	u8 real_sz[0];
+};
+
+struct ib_flow_spec_ib {
+	u32 type;
+	u16 size;
+	struct ib_flow_ib_filter val;
+	struct ib_flow_ib_filter mask;
+};
+
+struct ib_flow_ipv4_filter {
+	__be32 src_ip;
+	__be32 dst_ip;
+	u8 proto;
+	u8 tos;
+	u8 ttl;
+	u8 flags;
+	u8 real_sz[0];
+};
+
+struct ib_flow_spec_ipv4 {
+	u32 type;
+	u16 size;
+	struct ib_flow_ipv4_filter val;
+	struct ib_flow_ipv4_filter mask;
+};
+
+struct ib_flow_tcp_udp_filter {
+	__be16 dst_port;
+	__be16 src_port;
+	u8 real_sz[0];
+};
+
+struct ib_flow_spec_tcp_udp {
+	u32 type;
+	u16 size;
+	struct ib_flow_tcp_udp_filter val;
+	struct ib_flow_tcp_udp_filter mask;
+};
+
+struct ib_flow_ipv6_filter {
+	u8 src_ip[16];
+	u8 dst_ip[16];
+	__be32 flow_label;
+	u8 next_hdr;
+	u8 traffic_class;
+	u8 hop_limit;
+	u8 real_sz[0];
+};
+
+struct ib_flow_spec_ipv6 {
+	u32 type;
+	u16 size;
+	struct ib_flow_ipv6_filter val;
+	struct ib_flow_ipv6_filter mask;
+};
+
+struct ib_flow_tunnel_filter {
+	__be32 tunnel_id;
+	u8 real_sz[0];
+};
+
+struct ib_flow_spec_tunnel {
+	u32 type;
+	u16 size;
+	struct ib_flow_tunnel_filter val;
+	struct ib_flow_tunnel_filter mask;
+};
+
+struct ib_flow_esp_filter {
+	__be32 spi;
+	__be32 seq;
+	u8 real_sz[0];
+};
+
+struct ib_flow_spec_esp {
+	u32 type;
+	u16 size;
+	struct ib_flow_esp_filter val;
+	struct ib_flow_esp_filter mask;
+};
+
+struct ib_flow_gre_filter {
+	__be16 c_ks_res0_ver;
+	__be16 protocol;
+	__be32 key;
+	u8 real_sz[0];
+};
+
+struct ib_flow_spec_gre {
+	u32 type;
+	u16 size;
+	struct ib_flow_gre_filter val;
+	struct ib_flow_gre_filter mask;
+};
+
+struct ib_flow_mpls_filter {
+	__be32 tag;
+	u8 real_sz[0];
+};
+
+struct ib_flow_spec_mpls {
+	u32 type;
+	u16 size;
+	struct ib_flow_mpls_filter val;
+	struct ib_flow_mpls_filter mask;
+};
+
+enum ib_flow_spec_type {
+	IB_FLOW_SPEC_ETH = 32,
+	IB_FLOW_SPEC_IB = 34,
+	IB_FLOW_SPEC_IPV4 = 48,
+	IB_FLOW_SPEC_IPV6 = 49,
+	IB_FLOW_SPEC_ESP = 52,
+	IB_FLOW_SPEC_TCP = 64,
+	IB_FLOW_SPEC_UDP = 65,
+	IB_FLOW_SPEC_VXLAN_TUNNEL = 80,
+	IB_FLOW_SPEC_GRE = 81,
+	IB_FLOW_SPEC_MPLS = 96,
+	IB_FLOW_SPEC_INNER = 256,
+	IB_FLOW_SPEC_ACTION_TAG = 4096,
+	IB_FLOW_SPEC_ACTION_DROP = 4097,
+	IB_FLOW_SPEC_ACTION_HANDLE = 4098,
+	IB_FLOW_SPEC_ACTION_COUNT = 4099,
+};
+
+struct ib_flow_spec_action_tag {
+	enum ib_flow_spec_type type;
+	u16 size;
+	u32 tag_id;
+};
+
+struct ib_flow_spec_action_drop {
+	enum ib_flow_spec_type type;
+	u16 size;
+};
+
+struct ib_flow_spec_action_handle {
+	enum ib_flow_spec_type type;
+	u16 size;
+	struct ib_flow_action *act;
+};
+
+struct ib_flow_spec_action_count {
+	enum ib_flow_spec_type type;
+	u16 size;
+	struct ib_counters *counters;
+};
+
+union ib_flow_spec {
+	struct {
+		u32 type;
+		u16 size;
+	};
+	struct ib_flow_spec_eth eth;
+	struct ib_flow_spec_ib ib;
+	struct ib_flow_spec_ipv4 ipv4;
+	struct ib_flow_spec_tcp_udp tcp_udp;
+	struct ib_flow_spec_ipv6 ipv6;
+	struct ib_flow_spec_tunnel tunnel;
+	struct ib_flow_spec_esp esp;
+	struct ib_flow_spec_gre gre;
+	struct ib_flow_spec_mpls mpls;
+	struct ib_flow_spec_action_tag flow_tag;
+	struct ib_flow_spec_action_drop drop;
+	struct ib_flow_spec_action_handle action;
+	struct ib_flow_spec_action_count flow_count;
+};
+
+struct ib_flow_attr {
+	enum ib_flow_attr_type type;
+	u16 size;
+	u16 priority;
+	u32 flags;
+	u8 num_of_specs;
+	u32 port;
+	union ib_flow_spec flows[0];
+};
+
+enum ib_flow_action_type {
+	IB_FLOW_ACTION_UNSPECIFIED = 0,
+	IB_FLOW_ACTION_ESP = 1,
+};
+
+struct ib_flow_action {
+	struct ib_device *device;
+	struct ib_uobject *uobject;
+	enum ib_flow_action_type type;
+	atomic_t usecnt;
+};
+
+struct ib_counters {
+	struct ib_device *device;
+	struct ib_uobject *uobject;
+	atomic_t usecnt;
+};
+
+struct ib_wq_init_attr {
+	void *wq_context;
+	enum ib_wq_type wq_type;
+	u32 max_wr;
+	u32 max_sge;
+	struct ib_cq *cq;
+	void (*event_handler)(struct ib_event *, void *);
+	u32 create_flags;
+};
+
+struct ib_wq_attr {
+	enum ib_wq_state wq_state;
+	enum ib_wq_state curr_wq_state;
+	u32 flags;
+	u32 flags_mask;
+};
+
+struct ib_rwq_ind_table_init_attr {
+	u32 log_ind_tbl_size;
+	struct ib_wq **ind_tbl;
+};
+
+struct ib_dm_alloc_attr {
+	u64 length;
+	u32 alignment;
+	u32 flags;
+};
+
+struct ib_dm_mr_attr {
+	u64 length;
+	u64 offset;
+	u32 access_flags;
+};
+
+struct ib_counters_read_attr {
+	u64 *counters_buff;
+	u32 ncounters;
+	u32 flags;
+};
+
+struct ib_pkey_cache;
+
+struct ib_gid_table;
+
+struct ib_port_cache {
+	u64 subnet_prefix;
+	struct ib_pkey_cache *pkey;
+	struct ib_gid_table *gid;
+	u8 lmc;
+	enum ib_port_state port_state;
+};
+
+struct rdma_port_counter {
+	struct rdma_counter_mode mode;
+	struct rdma_hw_stats *hstats;
+	unsigned int num_counters;
+	struct mutex lock;
+};
+
+struct ib_port;
+
+struct ib_port_data {
+	struct ib_device *ib_dev;
+	struct ib_port_immutable immutable;
+	spinlock_t pkey_list_lock;
+	spinlock_t netdev_lock;
+	struct list_head pkey_list;
+	struct ib_port_cache cache;
+	struct net_device __attribute__((btf_type_tag("rcu"))) *netdev;
+	netdevice_tracker netdev_tracker;
+	struct hlist_node ndev_hash_link;
+	struct rdma_port_counter port_counter;
+	struct ib_port *sysfs;
+};
+
+struct rdma_link_ops {
+	struct list_head list;
+	const char *type;
+	int (*newlink)(const char *, struct net_device *);
+};
+
+enum devlink_linecard_state {
+	DEVLINK_LINECARD_STATE_UNSPEC = 0,
+	DEVLINK_LINECARD_STATE_UNPROVISIONED = 1,
+	DEVLINK_LINECARD_STATE_UNPROVISIONING = 2,
+	DEVLINK_LINECARD_STATE_PROVISIONING = 3,
+	DEVLINK_LINECARD_STATE_PROVISIONING_FAILED = 4,
+	DEVLINK_LINECARD_STATE_PROVISIONED = 5,
+	DEVLINK_LINECARD_STATE_ACTIVE = 6,
+	__DEVLINK_LINECARD_STATE_MAX = 7,
+	DEVLINK_LINECARD_STATE_MAX = 6,
+};
+
+struct devlink_linecard_ops;
+
+struct devlink_linecard_type;
+
+struct devlink_linecard {
+	struct list_head list;
+	struct devlink *devlink;
+	unsigned int index;
+	const struct devlink_linecard_ops *ops;
+	void *priv;
+	enum devlink_linecard_state state;
+	struct mutex state_lock;
+	const char *type;
+	struct devlink_linecard_type *types;
+	unsigned int types_count;
+	struct devlink *nested_devlink;
+};
+
+struct devlink_linecard_ops {
+	int (*provision)(struct devlink_linecard *, void *, const char *, const void *, struct netlink_ext_ack *);
+	int (*unprovision)(struct devlink_linecard *, void *, struct netlink_ext_ack *);
+	bool (*same_provision)(struct devlink_linecard *, void *, const char *, const void *);
+	unsigned int (*types_count)(struct devlink_linecard *, void *);
+	void (*types_get)(struct devlink_linecard *, void *, unsigned int, const char **, const void **);
+};
+
+typedef void (*btf_trace_devlink_hwmsg)(void *, const struct devlink *, bool, unsigned long, const u8 *, size_t);
+
+typedef void (*btf_trace_devlink_hwerr)(void *, const struct devlink *, int, const char *);
+
+typedef void (*btf_trace_devlink_health_report)(void *, const struct devlink *, const char *, const char *);
+
+typedef void (*btf_trace_devlink_health_recover_aborted)(void *, const struct devlink *, const char *, bool, u64);
+
+typedef void (*btf_trace_devlink_health_reporter_state_update)(void *, const struct devlink *, const char *, bool);
+
+struct devlink_trap_metadata;
+
+typedef void (*btf_trace_devlink_trap_report)(void *, const struct devlink *, struct sk_buff *, const struct devlink_trap_metadata *);
+
+struct devlink_trap_metadata {
+	const char *trap_name;
+	const char *trap_group_name;
+	struct net_device *input_dev;
+	netdevice_tracker dev_tracker;
+	const struct flow_action_cookie *fa_cookie;
+	enum devlink_trap_type trap_type;
+};
+
+struct trace_event_raw_devlink_hwmsg {
+	struct trace_entry ent;
+	u32 __data_loc_bus_name;
+	u32 __data_loc_dev_name;
+	u32 __data_loc_driver_name;
+	bool incoming;
+	unsigned long type;
+	u32 __data_loc_buf;
+	size_t len;
+	char __data[0];
+};
+
+struct trace_event_raw_devlink_hwerr {
+	struct trace_entry ent;
+	u32 __data_loc_bus_name;
+	u32 __data_loc_dev_name;
+	u32 __data_loc_driver_name;
+	int err;
+	u32 __data_loc_msg;
+	char __data[0];
+};
+
+struct trace_event_raw_devlink_health_report {
+	struct trace_entry ent;
+	u32 __data_loc_bus_name;
+	u32 __data_loc_dev_name;
+	u32 __data_loc_driver_name;
+	u32 __data_loc_reporter_name;
+	u32 __data_loc_msg;
+	char __data[0];
+};
+
+struct trace_event_raw_devlink_health_recover_aborted {
+	struct trace_entry ent;
+	u32 __data_loc_bus_name;
+	u32 __data_loc_dev_name;
+	u32 __data_loc_driver_name;
+	u32 __data_loc_reporter_name;
+	bool health_state;
+	u64 time_since_last_recover;
+	char __data[0];
+};
+
+struct trace_event_raw_devlink_health_reporter_state_update {
+	struct trace_entry ent;
+	u32 __data_loc_bus_name;
+	u32 __data_loc_dev_name;
+	u32 __data_loc_driver_name;
+	u32 __data_loc_reporter_name;
+	u8 new_state;
+	char __data[0];
+};
+
+struct trace_event_raw_devlink_trap_report {
+	struct trace_entry ent;
+	u32 __data_loc_bus_name;
+	u32 __data_loc_dev_name;
+	u32 __data_loc_driver_name;
+	u32 __data_loc_trap_name;
+	u32 __data_loc_trap_group_name;
+	char input_dev_name[16];
+	char __data[0];
+};
+
+struct trace_event_data_offsets_devlink_hwmsg {
+	u32 bus_name;
+	u32 dev_name;
+	u32 driver_name;
+	u32 buf;
+};
+
+struct trace_event_data_offsets_devlink_hwerr {
+	u32 bus_name;
+	u32 dev_name;
+	u32 driver_name;
+	u32 msg;
+};
+
+struct trace_event_data_offsets_devlink_health_report {
+	u32 bus_name;
+	u32 dev_name;
+	u32 driver_name;
+	u32 reporter_name;
+	u32 msg;
+};
+
+struct trace_event_data_offsets_devlink_health_recover_aborted {
+	u32 bus_name;
+	u32 dev_name;
+	u32 driver_name;
+	u32 reporter_name;
+};
+
+struct trace_event_data_offsets_devlink_health_reporter_state_update {
+	u32 bus_name;
+	u32 dev_name;
+	u32 driver_name;
+	u32 reporter_name;
+};
+
+struct trace_event_data_offsets_devlink_trap_report {
+	u32 bus_name;
+	u32 dev_name;
+	u32 driver_name;
+	u32 trap_name;
+	u32 trap_group_name;
+};
+
+enum devlink_attr {
+	DEVLINK_ATTR_UNSPEC = 0,
+	DEVLINK_ATTR_BUS_NAME = 1,
+	DEVLINK_ATTR_DEV_NAME = 2,
+	DEVLINK_ATTR_PORT_INDEX = 3,
+	DEVLINK_ATTR_PORT_TYPE = 4,
+	DEVLINK_ATTR_PORT_DESIRED_TYPE = 5,
+	DEVLINK_ATTR_PORT_NETDEV_IFINDEX = 6,
+	DEVLINK_ATTR_PORT_NETDEV_NAME = 7,
+	DEVLINK_ATTR_PORT_IBDEV_NAME = 8,
+	DEVLINK_ATTR_PORT_SPLIT_COUNT = 9,
+	DEVLINK_ATTR_PORT_SPLIT_GROUP = 10,
+	DEVLINK_ATTR_SB_INDEX = 11,
+	DEVLINK_ATTR_SB_SIZE = 12,
+	DEVLINK_ATTR_SB_INGRESS_POOL_COUNT = 13,
+	DEVLINK_ATTR_SB_EGRESS_POOL_COUNT = 14,
+	DEVLINK_ATTR_SB_INGRESS_TC_COUNT = 15,
+	DEVLINK_ATTR_SB_EGRESS_TC_COUNT = 16,
+	DEVLINK_ATTR_SB_POOL_INDEX = 17,
+	DEVLINK_ATTR_SB_POOL_TYPE = 18,
+	DEVLINK_ATTR_SB_POOL_SIZE = 19,
+	DEVLINK_ATTR_SB_POOL_THRESHOLD_TYPE = 20,
+	DEVLINK_ATTR_SB_THRESHOLD = 21,
+	DEVLINK_ATTR_SB_TC_INDEX = 22,
+	DEVLINK_ATTR_SB_OCC_CUR = 23,
+	DEVLINK_ATTR_SB_OCC_MAX = 24,
+	DEVLINK_ATTR_ESWITCH_MODE = 25,
+	DEVLINK_ATTR_ESWITCH_INLINE_MODE = 26,
+	DEVLINK_ATTR_DPIPE_TABLES = 27,
+	DEVLINK_ATTR_DPIPE_TABLE = 28,
+	DEVLINK_ATTR_DPIPE_TABLE_NAME = 29,
+	DEVLINK_ATTR_DPIPE_TABLE_SIZE = 30,
+	DEVLINK_ATTR_DPIPE_TABLE_MATCHES = 31,
+	DEVLINK_ATTR_DPIPE_TABLE_ACTIONS = 32,
+	DEVLINK_ATTR_DPIPE_TABLE_COUNTERS_ENABLED = 33,
+	DEVLINK_ATTR_DPIPE_ENTRIES = 34,
+	DEVLINK_ATTR_DPIPE_ENTRY = 35,
+	DEVLINK_ATTR_DPIPE_ENTRY_INDEX = 36,
+	DEVLINK_ATTR_DPIPE_ENTRY_MATCH_VALUES = 37,
+	DEVLINK_ATTR_DPIPE_ENTRY_ACTION_VALUES = 38,
+	DEVLINK_ATTR_DPIPE_ENTRY_COUNTER = 39,
+	DEVLINK_ATTR_DPIPE_MATCH = 40,
+	DEVLINK_ATTR_DPIPE_MATCH_VALUE = 41,
+	DEVLINK_ATTR_DPIPE_MATCH_TYPE = 42,
+	DEVLINK_ATTR_DPIPE_ACTION = 43,
+	DEVLINK_ATTR_DPIPE_ACTION_VALUE = 44,
+	DEVLINK_ATTR_DPIPE_ACTION_TYPE = 45,
+	DEVLINK_ATTR_DPIPE_VALUE = 46,
+	DEVLINK_ATTR_DPIPE_VALUE_MASK = 47,
+	DEVLINK_ATTR_DPIPE_VALUE_MAPPING = 48,
+	DEVLINK_ATTR_DPIPE_HEADERS = 49,
+	DEVLINK_ATTR_DPIPE_HEADER = 50,
+	DEVLINK_ATTR_DPIPE_HEADER_NAME = 51,
+	DEVLINK_ATTR_DPIPE_HEADER_ID = 52,
+	DEVLINK_ATTR_DPIPE_HEADER_FIELDS = 53,
+	DEVLINK_ATTR_DPIPE_HEADER_GLOBAL = 54,
+	DEVLINK_ATTR_DPIPE_HEADER_INDEX = 55,
+	DEVLINK_ATTR_DPIPE_FIELD = 56,
+	DEVLINK_ATTR_DPIPE_FIELD_NAME = 57,
+	DEVLINK_ATTR_DPIPE_FIELD_ID = 58,
+	DEVLINK_ATTR_DPIPE_FIELD_BITWIDTH = 59,
+	DEVLINK_ATTR_DPIPE_FIELD_MAPPING_TYPE = 60,
+	DEVLINK_ATTR_PAD = 61,
+	DEVLINK_ATTR_ESWITCH_ENCAP_MODE = 62,
+	DEVLINK_ATTR_RESOURCE_LIST = 63,
+	DEVLINK_ATTR_RESOURCE = 64,
+	DEVLINK_ATTR_RESOURCE_NAME = 65,
+	DEVLINK_ATTR_RESOURCE_ID = 66,
+	DEVLINK_ATTR_RESOURCE_SIZE = 67,
+	DEVLINK_ATTR_RESOURCE_SIZE_NEW = 68,
+	DEVLINK_ATTR_RESOURCE_SIZE_VALID = 69,
+	DEVLINK_ATTR_RESOURCE_SIZE_MIN = 70,
+	DEVLINK_ATTR_RESOURCE_SIZE_MAX = 71,
+	DEVLINK_ATTR_RESOURCE_SIZE_GRAN = 72,
+	DEVLINK_ATTR_RESOURCE_UNIT = 73,
+	DEVLINK_ATTR_RESOURCE_OCC = 74,
+	DEVLINK_ATTR_DPIPE_TABLE_RESOURCE_ID = 75,
+	DEVLINK_ATTR_DPIPE_TABLE_RESOURCE_UNITS = 76,
+	DEVLINK_ATTR_PORT_FLAVOUR = 77,
+	DEVLINK_ATTR_PORT_NUMBER = 78,
+	DEVLINK_ATTR_PORT_SPLIT_SUBPORT_NUMBER = 79,
+	DEVLINK_ATTR_PARAM = 80,
+	DEVLINK_ATTR_PARAM_NAME = 81,
+	DEVLINK_ATTR_PARAM_GENERIC = 82,
+	DEVLINK_ATTR_PARAM_TYPE = 83,
+	DEVLINK_ATTR_PARAM_VALUES_LIST = 84,
+	DEVLINK_ATTR_PARAM_VALUE = 85,
+	DEVLINK_ATTR_PARAM_VALUE_DATA = 86,
+	DEVLINK_ATTR_PARAM_VALUE_CMODE = 87,
+	DEVLINK_ATTR_REGION_NAME = 88,
+	DEVLINK_ATTR_REGION_SIZE = 89,
+	DEVLINK_ATTR_REGION_SNAPSHOTS = 90,
+	DEVLINK_ATTR_REGION_SNAPSHOT = 91,
+	DEVLINK_ATTR_REGION_SNAPSHOT_ID = 92,
+	DEVLINK_ATTR_REGION_CHUNKS = 93,
+	DEVLINK_ATTR_REGION_CHUNK = 94,
+	DEVLINK_ATTR_REGION_CHUNK_DATA = 95,
+	DEVLINK_ATTR_REGION_CHUNK_ADDR = 96,
+	DEVLINK_ATTR_REGION_CHUNK_LEN = 97,
+	DEVLINK_ATTR_INFO_DRIVER_NAME = 98,
+	DEVLINK_ATTR_INFO_SERIAL_NUMBER = 99,
+	DEVLINK_ATTR_INFO_VERSION_FIXED = 100,
+	DEVLINK_ATTR_INFO_VERSION_RUNNING = 101,
+	DEVLINK_ATTR_INFO_VERSION_STORED = 102,
+	DEVLINK_ATTR_INFO_VERSION_NAME = 103,
+	DEVLINK_ATTR_INFO_VERSION_VALUE = 104,
+	DEVLINK_ATTR_SB_POOL_CELL_SIZE = 105,
+	DEVLINK_ATTR_FMSG = 106,
+	DEVLINK_ATTR_FMSG_OBJ_NEST_START = 107,
+	DEVLINK_ATTR_FMSG_PAIR_NEST_START = 108,
+	DEVLINK_ATTR_FMSG_ARR_NEST_START = 109,
+	DEVLINK_ATTR_FMSG_NEST_END = 110,
+	DEVLINK_ATTR_FMSG_OBJ_NAME = 111,
+	DEVLINK_ATTR_FMSG_OBJ_VALUE_TYPE = 112,
+	DEVLINK_ATTR_FMSG_OBJ_VALUE_DATA = 113,
+	DEVLINK_ATTR_HEALTH_REPORTER = 114,
+	DEVLINK_ATTR_HEALTH_REPORTER_NAME = 115,
+	DEVLINK_ATTR_HEALTH_REPORTER_STATE = 116,
+	DEVLINK_ATTR_HEALTH_REPORTER_ERR_COUNT = 117,
+	DEVLINK_ATTR_HEALTH_REPORTER_RECOVER_COUNT = 118,
+	DEVLINK_ATTR_HEALTH_REPORTER_DUMP_TS = 119,
+	DEVLINK_ATTR_HEALTH_REPORTER_GRACEFUL_PERIOD = 120,
+	DEVLINK_ATTR_HEALTH_REPORTER_AUTO_RECOVER = 121,
+	DEVLINK_ATTR_FLASH_UPDATE_FILE_NAME = 122,
+	DEVLINK_ATTR_FLASH_UPDATE_COMPONENT = 123,
+	DEVLINK_ATTR_FLASH_UPDATE_STATUS_MSG = 124,
+	DEVLINK_ATTR_FLASH_UPDATE_STATUS_DONE = 125,
+	DEVLINK_ATTR_FLASH_UPDATE_STATUS_TOTAL = 126,
+	DEVLINK_ATTR_PORT_PCI_PF_NUMBER = 127,
+	DEVLINK_ATTR_PORT_PCI_VF_NUMBER = 128,
+	DEVLINK_ATTR_STATS = 129,
+	DEVLINK_ATTR_TRAP_NAME = 130,
+	DEVLINK_ATTR_TRAP_ACTION = 131,
+	DEVLINK_ATTR_TRAP_TYPE = 132,
+	DEVLINK_ATTR_TRAP_GENERIC = 133,
+	DEVLINK_ATTR_TRAP_METADATA = 134,
+	DEVLINK_ATTR_TRAP_GROUP_NAME = 135,
+	DEVLINK_ATTR_RELOAD_FAILED = 136,
+	DEVLINK_ATTR_HEALTH_REPORTER_DUMP_TS_NS = 137,
+	DEVLINK_ATTR_NETNS_FD = 138,
+	DEVLINK_ATTR_NETNS_PID = 139,
+	DEVLINK_ATTR_NETNS_ID = 140,
+	DEVLINK_ATTR_HEALTH_REPORTER_AUTO_DUMP = 141,
+	DEVLINK_ATTR_TRAP_POLICER_ID = 142,
+	DEVLINK_ATTR_TRAP_POLICER_RATE = 143,
+	DEVLINK_ATTR_TRAP_POLICER_BURST = 144,
+	DEVLINK_ATTR_PORT_FUNCTION = 145,
+	DEVLINK_ATTR_INFO_BOARD_SERIAL_NUMBER = 146,
+	DEVLINK_ATTR_PORT_LANES = 147,
+	DEVLINK_ATTR_PORT_SPLITTABLE = 148,
+	DEVLINK_ATTR_PORT_EXTERNAL = 149,
+	DEVLINK_ATTR_PORT_CONTROLLER_NUMBER = 150,
+	DEVLINK_ATTR_FLASH_UPDATE_STATUS_TIMEOUT = 151,
+	DEVLINK_ATTR_FLASH_UPDATE_OVERWRITE_MASK = 152,
+	DEVLINK_ATTR_RELOAD_ACTION = 153,
+	DEVLINK_ATTR_RELOAD_ACTIONS_PERFORMED = 154,
+	DEVLINK_ATTR_RELOAD_LIMITS = 155,
+	DEVLINK_ATTR_DEV_STATS = 156,
+	DEVLINK_ATTR_RELOAD_STATS = 157,
+	DEVLINK_ATTR_RELOAD_STATS_ENTRY = 158,
+	DEVLINK_ATTR_RELOAD_STATS_LIMIT = 159,
+	DEVLINK_ATTR_RELOAD_STATS_VALUE = 160,
+	DEVLINK_ATTR_REMOTE_RELOAD_STATS = 161,
+	DEVLINK_ATTR_RELOAD_ACTION_INFO = 162,
+	DEVLINK_ATTR_RELOAD_ACTION_STATS = 163,
+	DEVLINK_ATTR_PORT_PCI_SF_NUMBER = 164,
+	DEVLINK_ATTR_RATE_TYPE = 165,
+	DEVLINK_ATTR_RATE_TX_SHARE = 166,
+	DEVLINK_ATTR_RATE_TX_MAX = 167,
+	DEVLINK_ATTR_RATE_NODE_NAME = 168,
+	DEVLINK_ATTR_RATE_PARENT_NODE_NAME = 169,
+	DEVLINK_ATTR_REGION_MAX_SNAPSHOTS = 170,
+	DEVLINK_ATTR_LINECARD_INDEX = 171,
+	DEVLINK_ATTR_LINECARD_STATE = 172,
+	DEVLINK_ATTR_LINECARD_TYPE = 173,
+	DEVLINK_ATTR_LINECARD_SUPPORTED_TYPES = 174,
+	DEVLINK_ATTR_NESTED_DEVLINK = 175,
+	DEVLINK_ATTR_SELFTESTS = 176,
+	DEVLINK_ATTR_RATE_TX_PRIORITY = 177,
+	DEVLINK_ATTR_RATE_TX_WEIGHT = 178,
+	DEVLINK_ATTR_REGION_DIRECT = 179,
+	__DEVLINK_ATTR_MAX = 180,
+	DEVLINK_ATTR_MAX = 179,
+};
+
+struct devlink_nl_dump_state {
+	unsigned long instance;
+	int idx;
+	union {
+		struct {
+			u64 start_offset;
+		};
+		struct {
+			u64 dump_ts;
+		};
+	};
+};
+
+typedef int devlink_nl_dump_one_func_t(struct sk_buff *, struct devlink *, struct netlink_callback *, int);
+
+struct devlink_reload_combination {
+	enum devlink_reload_action action;
+	enum devlink_reload_limit limit;
+};
+
+enum devlink_info_version_type {
+	DEVLINK_INFO_VERSION_TYPE_NONE = 0,
+	DEVLINK_INFO_VERSION_TYPE_COMPONENT = 1,
+};
+
+struct devlink_info_req {
+	struct sk_buff *msg;
+	void (*version_cb)(const char *, enum devlink_info_version_type, void *);
+	void *version_cb_priv;
+};
+
+enum devlink_command {
+	DEVLINK_CMD_UNSPEC = 0,
+	DEVLINK_CMD_GET = 1,
+	DEVLINK_CMD_SET = 2,
+	DEVLINK_CMD_NEW = 3,
+	DEVLINK_CMD_DEL = 4,
+	DEVLINK_CMD_PORT_GET = 5,
+	DEVLINK_CMD_PORT_SET = 6,
+	DEVLINK_CMD_PORT_NEW = 7,
+	DEVLINK_CMD_PORT_DEL = 8,
+	DEVLINK_CMD_PORT_SPLIT = 9,
+	DEVLINK_CMD_PORT_UNSPLIT = 10,
+	DEVLINK_CMD_SB_GET = 11,
+	DEVLINK_CMD_SB_SET = 12,
+	DEVLINK_CMD_SB_NEW = 13,
+	DEVLINK_CMD_SB_DEL = 14,
+	DEVLINK_CMD_SB_POOL_GET = 15,
+	DEVLINK_CMD_SB_POOL_SET = 16,
+	DEVLINK_CMD_SB_POOL_NEW = 17,
+	DEVLINK_CMD_SB_POOL_DEL = 18,
+	DEVLINK_CMD_SB_PORT_POOL_GET = 19,
+	DEVLINK_CMD_SB_PORT_POOL_SET = 20,
+	DEVLINK_CMD_SB_PORT_POOL_NEW = 21,
+	DEVLINK_CMD_SB_PORT_POOL_DEL = 22,
+	DEVLINK_CMD_SB_TC_POOL_BIND_GET = 23,
+	DEVLINK_CMD_SB_TC_POOL_BIND_SET = 24,
+	DEVLINK_CMD_SB_TC_POOL_BIND_NEW = 25,
+	DEVLINK_CMD_SB_TC_POOL_BIND_DEL = 26,
+	DEVLINK_CMD_SB_OCC_SNAPSHOT = 27,
+	DEVLINK_CMD_SB_OCC_MAX_CLEAR = 28,
+	DEVLINK_CMD_ESWITCH_GET = 29,
+	DEVLINK_CMD_ESWITCH_SET = 30,
+	DEVLINK_CMD_DPIPE_TABLE_GET = 31,
+	DEVLINK_CMD_DPIPE_ENTRIES_GET = 32,
+	DEVLINK_CMD_DPIPE_HEADERS_GET = 33,
+	DEVLINK_CMD_DPIPE_TABLE_COUNTERS_SET = 34,
+	DEVLINK_CMD_RESOURCE_SET = 35,
+	DEVLINK_CMD_RESOURCE_DUMP = 36,
+	DEVLINK_CMD_RELOAD = 37,
+	DEVLINK_CMD_PARAM_GET = 38,
+	DEVLINK_CMD_PARAM_SET = 39,
+	DEVLINK_CMD_PARAM_NEW = 40,
+	DEVLINK_CMD_PARAM_DEL = 41,
+	DEVLINK_CMD_REGION_GET = 42,
+	DEVLINK_CMD_REGION_SET = 43,
+	DEVLINK_CMD_REGION_NEW = 44,
+	DEVLINK_CMD_REGION_DEL = 45,
+	DEVLINK_CMD_REGION_READ = 46,
+	DEVLINK_CMD_PORT_PARAM_GET = 47,
+	DEVLINK_CMD_PORT_PARAM_SET = 48,
+	DEVLINK_CMD_PORT_PARAM_NEW = 49,
+	DEVLINK_CMD_PORT_PARAM_DEL = 50,
+	DEVLINK_CMD_INFO_GET = 51,
+	DEVLINK_CMD_HEALTH_REPORTER_GET = 52,
+	DEVLINK_CMD_HEALTH_REPORTER_SET = 53,
+	DEVLINK_CMD_HEALTH_REPORTER_RECOVER = 54,
+	DEVLINK_CMD_HEALTH_REPORTER_DIAGNOSE = 55,
+	DEVLINK_CMD_HEALTH_REPORTER_DUMP_GET = 56,
+	DEVLINK_CMD_HEALTH_REPORTER_DUMP_CLEAR = 57,
+	DEVLINK_CMD_FLASH_UPDATE = 58,
+	DEVLINK_CMD_FLASH_UPDATE_END = 59,
+	DEVLINK_CMD_FLASH_UPDATE_STATUS = 60,
+	DEVLINK_CMD_TRAP_GET = 61,
+	DEVLINK_CMD_TRAP_SET = 62,
+	DEVLINK_CMD_TRAP_NEW = 63,
+	DEVLINK_CMD_TRAP_DEL = 64,
+	DEVLINK_CMD_TRAP_GROUP_GET = 65,
+	DEVLINK_CMD_TRAP_GROUP_SET = 66,
+	DEVLINK_CMD_TRAP_GROUP_NEW = 67,
+	DEVLINK_CMD_TRAP_GROUP_DEL = 68,
+	DEVLINK_CMD_TRAP_POLICER_GET = 69,
+	DEVLINK_CMD_TRAP_POLICER_SET = 70,
+	DEVLINK_CMD_TRAP_POLICER_NEW = 71,
+	DEVLINK_CMD_TRAP_POLICER_DEL = 72,
+	DEVLINK_CMD_HEALTH_REPORTER_TEST = 73,
+	DEVLINK_CMD_RATE_GET = 74,
+	DEVLINK_CMD_RATE_SET = 75,
+	DEVLINK_CMD_RATE_NEW = 76,
+	DEVLINK_CMD_RATE_DEL = 77,
+	DEVLINK_CMD_LINECARD_GET = 78,
+	DEVLINK_CMD_LINECARD_SET = 79,
+	DEVLINK_CMD_LINECARD_NEW = 80,
+	DEVLINK_CMD_LINECARD_DEL = 81,
+	DEVLINK_CMD_SELFTESTS_GET = 82,
+	DEVLINK_CMD_SELFTESTS_RUN = 83,
+	__DEVLINK_CMD_MAX = 84,
+	DEVLINK_CMD_MAX = 83,
+};
+
+enum devlink_attr_selftest_id {
+	DEVLINK_ATTR_SELFTEST_ID_UNSPEC = 0,
+	DEVLINK_ATTR_SELFTEST_ID_FLASH = 1,
+	__DEVLINK_ATTR_SELFTEST_ID_MAX = 2,
+	DEVLINK_ATTR_SELFTEST_ID_MAX = 1,
+};
+
+enum devlink_multicast_groups {
+	DEVLINK_MCGRP_CONFIG = 0,
+};
+
+enum devlink_attr_selftest_result {
+	DEVLINK_ATTR_SELFTEST_RESULT_UNSPEC = 0,
+	DEVLINK_ATTR_SELFTEST_RESULT = 1,
+	DEVLINK_ATTR_SELFTEST_RESULT_ID = 2,
+	DEVLINK_ATTR_SELFTEST_RESULT_STATUS = 3,
+	__DEVLINK_ATTR_SELFTEST_RESULT_MAX = 4,
+	DEVLINK_ATTR_SELFTEST_RESULT_MAX = 3,
+};
+
+struct devlink_flash_notify {
+	const char *status_msg;
+	const char *component;
+	unsigned long done;
+	unsigned long total;
+	unsigned long timeout;
+};
+
+struct devlink_flash_component_lookup_ctx {
+	const char *lookup_name;
+	bool lookup_name_found;
+};
+
+enum devlink_port_function_attr {
+	DEVLINK_PORT_FUNCTION_ATTR_UNSPEC = 0,
+	DEVLINK_PORT_FUNCTION_ATTR_HW_ADDR = 1,
+	DEVLINK_PORT_FN_ATTR_STATE = 2,
+	DEVLINK_PORT_FN_ATTR_OPSTATE = 3,
+	DEVLINK_PORT_FN_ATTR_CAPS = 4,
+	__DEVLINK_PORT_FUNCTION_ATTR_MAX = 5,
+	DEVLINK_PORT_FUNCTION_ATTR_MAX = 4,
+};
+
+enum devlink_port_fn_attr_cap {
+	DEVLINK_PORT_FN_ATTR_CAP_ROCE_BIT = 0,
+	DEVLINK_PORT_FN_ATTR_CAP_MIGRATABLE_BIT = 1,
+	DEVLINK_PORT_FN_ATTR_CAP_IPSEC_CRYPTO_BIT = 2,
+	DEVLINK_PORT_FN_ATTR_CAP_IPSEC_PACKET_BIT = 3,
+	__DEVLINK_PORT_FN_ATTR_CAPS_MAX = 4,
+};
+
+struct devlink_sb {
+	struct list_head list;
+	unsigned int index;
+	u32 size;
+	u16 ingress_pools_count;
+	u16 egress_pools_count;
+	u16 ingress_tc_count;
+	u16 egress_tc_count;
+};
+
+enum devlink_dpipe_match_type {
+	DEVLINK_DPIPE_MATCH_TYPE_FIELD_EXACT = 0,
+};
+
+enum devlink_dpipe_action_type {
+	DEVLINK_DPIPE_ACTION_TYPE_FIELD_MODIFY = 0,
+};
+
+struct devlink_dpipe_table_ops;
+
+struct devlink_dpipe_table {
+	void *priv;
+	struct list_head list;
+	const char *name;
+	bool counters_enabled;
+	bool counter_control_extern;
+	bool resource_valid;
+	u64 resource_id;
+	u64 resource_units;
+	struct devlink_dpipe_table_ops *table_ops;
+	struct callback_head rcu;
+};
+
+struct devlink_dpipe_dump_ctx;
+
+struct devlink_dpipe_table_ops {
+	int (*actions_dump)(void *, struct sk_buff *);
+	int (*matches_dump)(void *, struct sk_buff *);
+	int (*entries_dump)(void *, bool, struct devlink_dpipe_dump_ctx *);
+	int (*counters_set_update)(void *, bool);
+	u64 (*size_get)(void *);
+};
+
+struct devlink_dpipe_dump_ctx {
+	struct genl_info *info;
+	enum devlink_command cmd;
+	struct sk_buff *skb;
+	struct nlattr *nest;
+	void *hdr;
+};
+
+struct devlink_dpipe_value;
+
+struct devlink_dpipe_entry {
+	u64 index;
+	struct devlink_dpipe_value *match_values;
+	unsigned int match_values_count;
+	struct devlink_dpipe_value *action_values;
+	unsigned int action_values_count;
+	u64 counter;
+	bool counter_valid;
+};
+
+struct devlink_dpipe_action;
+
+struct devlink_dpipe_match;
+
+struct devlink_dpipe_value {
+	union {
+		struct devlink_dpipe_action *action;
+		struct devlink_dpipe_match *match;
+	};
+	unsigned int mapping_value;
+	bool mapping_valid;
+	unsigned int value_size;
+	void *value;
+	void *mask;
+};
+
+struct devlink_dpipe_action {
+	enum devlink_dpipe_action_type type;
+	unsigned int header_index;
+	struct devlink_dpipe_header *header;
+	unsigned int field_id;
+};
+
+struct devlink_dpipe_match {
+	enum devlink_dpipe_match_type type;
+	unsigned int header_index;
+	struct devlink_dpipe_header *header;
+	unsigned int field_id;
+};
+
+enum devlink_resource_unit {
+	DEVLINK_RESOURCE_UNIT_ENTRY = 0,
+};
+
+struct devlink_resource_size_params {
+	u64 size_min;
+	u64 size_max;
+	u64 size_granularity;
+	enum devlink_resource_unit unit;
+};
+
+typedef u64 devlink_resource_occ_get_t(void *);
+
+struct devlink_resource {
+	const char *name;
+	u64 id;
+	u64 size;
+	u64 size_new;
+	bool size_valid;
+	struct devlink_resource *parent;
+	struct devlink_resource_size_params size_params;
+	struct list_head list;
+	struct list_head resource_list;
+	devlink_resource_occ_get_t *occ_get;
+	void *occ_get_priv;
+};
+
+enum devlink_param_type {
+	DEVLINK_PARAM_TYPE_U8 = 0,
+	DEVLINK_PARAM_TYPE_U16 = 1,
+	DEVLINK_PARAM_TYPE_U32 = 2,
+	DEVLINK_PARAM_TYPE_STRING = 3,
+	DEVLINK_PARAM_TYPE_BOOL = 4,
+};
+
+struct devlink_param_gset_ctx;
+
+union devlink_param_value;
+
+struct devlink_param {
+	u32 id;
+	const char *name;
+	bool generic;
+	enum devlink_param_type type;
+	unsigned long supported_cmodes;
+	int (*get)(struct devlink *, u32, struct devlink_param_gset_ctx *);
+	int (*set)(struct devlink *, u32, struct devlink_param_gset_ctx *);
+	int (*validate)(struct devlink *, u32, union devlink_param_value, struct netlink_ext_ack *);
+};
+
+union devlink_param_value {
+	u8 vu8;
+	u16 vu16;
+	u32 vu32;
+	char vstr[32];
+	bool vbool;
+};
+
+enum devlink_param_cmode {
+	DEVLINK_PARAM_CMODE_RUNTIME = 0,
+	DEVLINK_PARAM_CMODE_DRIVERINIT = 1,
+	DEVLINK_PARAM_CMODE_PERMANENT = 2,
+	__DEVLINK_PARAM_CMODE_MAX = 3,
+	DEVLINK_PARAM_CMODE_MAX = 2,
+};
+
+struct devlink_param_gset_ctx {
+	union devlink_param_value val;
+	enum devlink_param_cmode cmode;
+};
+
+enum devlink_param_generic_id {
+	DEVLINK_PARAM_GENERIC_ID_INT_ERR_RESET = 0,
+	DEVLINK_PARAM_GENERIC_ID_MAX_MACS = 1,
+	DEVLINK_PARAM_GENERIC_ID_ENABLE_SRIOV = 2,
+	DEVLINK_PARAM_GENERIC_ID_REGION_SNAPSHOT = 3,
+	DEVLINK_PARAM_GENERIC_ID_IGNORE_ARI = 4,
+	DEVLINK_PARAM_GENERIC_ID_MSIX_VEC_PER_PF_MAX = 5,
+	DEVLINK_PARAM_GENERIC_ID_MSIX_VEC_PER_PF_MIN = 6,
+	DEVLINK_PARAM_GENERIC_ID_FW_LOAD_POLICY = 7,
+	DEVLINK_PARAM_GENERIC_ID_RESET_DEV_ON_DRV_PROBE = 8,
+	DEVLINK_PARAM_GENERIC_ID_ENABLE_ROCE = 9,
+	DEVLINK_PARAM_GENERIC_ID_ENABLE_REMOTE_DEV_RESET = 10,
+	DEVLINK_PARAM_GENERIC_ID_ENABLE_ETH = 11,
+	DEVLINK_PARAM_GENERIC_ID_ENABLE_RDMA = 12,
+	DEVLINK_PARAM_GENERIC_ID_ENABLE_VNET = 13,
+	DEVLINK_PARAM_GENERIC_ID_ENABLE_IWARP = 14,
+	DEVLINK_PARAM_GENERIC_ID_IO_EQ_SIZE = 15,
+	DEVLINK_PARAM_GENERIC_ID_EVENT_EQ_SIZE = 16,
+	__DEVLINK_PARAM_GENERIC_ID_MAX = 17,
+	DEVLINK_PARAM_GENERIC_ID_MAX = 16,
+};
+
+struct devlink_param_item {
+	struct list_head list;
+	const struct devlink_param *param;
+	union devlink_param_value driverinit_value;
+	bool driverinit_value_valid;
+	union devlink_param_value driverinit_value_new;
+	bool driverinit_value_new_valid;
+};
+
+struct devlink_region_ops;
+
+struct devlink_port_region_ops;
+
+struct devlink_region {
+	struct devlink *devlink;
+	struct devlink_port *port;
+	struct list_head list;
+	union {
+		const struct devlink_region_ops *ops;
+		const struct devlink_port_region_ops *port_ops;
+	};
+	struct mutex snapshot_lock;
+	struct list_head snapshot_list;
+	u32 max_snapshots;
+	u32 cur_snapshots;
+	u64 size;
+};
+
+struct devlink_region_ops {
+	const char *name;
+	void (*destructor)(const void *);
+	int (*snapshot)(struct devlink *, const struct devlink_region_ops *, struct netlink_ext_ack *, u8 **);
+	int (*read)(struct devlink *, const struct devlink_region_ops *, struct netlink_ext_ack *, u64, u32, u8 *);
+	void *priv;
+};
+
+struct devlink_port_region_ops {
+	const char *name;
+	void (*destructor)(const void *);
+	int (*snapshot)(struct devlink_port *, const struct devlink_port_region_ops *, struct netlink_ext_ack *, u8 **);
+	int (*read)(struct devlink_port *, const struct devlink_port_region_ops *, struct netlink_ext_ack *, u64, u32, u8 *);
+	void *priv;
+};
+
+struct devlink_snapshot {
+	struct list_head list;
+	struct devlink_region *region;
+	u8 *data;
+	u32 id;
+};
+
+typedef int devlink_chunk_fill_t(void *, u8 *, u32, u64, struct netlink_ext_ack *);
+
+enum devlink_health_reporter_state {
+	DEVLINK_HEALTH_REPORTER_STATE_HEALTHY = 0,
+	DEVLINK_HEALTH_REPORTER_STATE_ERROR = 1,
+};
+
+struct devlink_health_reporter_ops;
+
+struct devlink_fmsg;
+
+struct devlink_health_reporter {
+	struct list_head list;
+	void *priv;
+	const struct devlink_health_reporter_ops *ops;
+	struct devlink *devlink;
+	struct devlink_port *devlink_port;
+	struct devlink_fmsg *dump_fmsg;
+	u64 graceful_period;
+	bool auto_recover;
+	bool auto_dump;
+	u8 health_state;
+	u64 dump_ts;
+	u64 dump_real_ts;
+	u64 error_count;
+	u64 recovery_count;
+	u64 last_recovery_ts;
+};
+
+struct devlink_health_reporter_ops {
+	char *name;
+	int (*recover)(struct devlink_health_reporter *, void *, struct netlink_ext_ack *);
+	int (*dump)(struct devlink_health_reporter *, struct devlink_fmsg *, void *, struct netlink_ext_ack *);
+	int (*diagnose)(struct devlink_health_reporter *, struct devlink_fmsg *, struct netlink_ext_ack *);
+	int (*test)(struct devlink_health_reporter *, struct netlink_ext_ack *);
+};
+
+struct devlink_fmsg {
+	struct list_head item_list;
+	bool putting_binary;
+};
+
+struct devlink_fmsg_item {
+	struct list_head list;
+	int attrtype;
+	u8 nla_type;
+	u16 len;
+	int value[0];
+};
+
+enum {
+	DEVLINK_ATTR_TRAP_METADATA_TYPE_IN_PORT = 0,
+	DEVLINK_ATTR_TRAP_METADATA_TYPE_FA_COOKIE = 1,
+};
+
+enum {
+	DEVLINK_ATTR_STATS_RX_PACKETS = 0,
+	DEVLINK_ATTR_STATS_RX_BYTES = 1,
+	DEVLINK_ATTR_STATS_RX_DROPPED = 2,
+	__DEVLINK_ATTR_STATS_MAX = 3,
+	DEVLINK_ATTR_STATS_MAX = 2,
+};
+
+enum devlink_trap_generic_id {
+	DEVLINK_TRAP_GENERIC_ID_SMAC_MC = 0,
+	DEVLINK_TRAP_GENERIC_ID_VLAN_TAG_MISMATCH = 1,
+	DEVLINK_TRAP_GENERIC_ID_INGRESS_VLAN_FILTER = 2,
+	DEVLINK_TRAP_GENERIC_ID_INGRESS_STP_FILTER = 3,
+	DEVLINK_TRAP_GENERIC_ID_EMPTY_TX_LIST = 4,
+	DEVLINK_TRAP_GENERIC_ID_PORT_LOOPBACK_FILTER = 5,
+	DEVLINK_TRAP_GENERIC_ID_BLACKHOLE_ROUTE = 6,
+	DEVLINK_TRAP_GENERIC_ID_TTL_ERROR = 7,
+	DEVLINK_TRAP_GENERIC_ID_TAIL_DROP = 8,
+	DEVLINK_TRAP_GENERIC_ID_NON_IP_PACKET = 9,
+	DEVLINK_TRAP_GENERIC_ID_UC_DIP_MC_DMAC = 10,
+	DEVLINK_TRAP_GENERIC_ID_DIP_LB = 11,
+	DEVLINK_TRAP_GENERIC_ID_SIP_MC = 12,
+	DEVLINK_TRAP_GENERIC_ID_SIP_LB = 13,
+	DEVLINK_TRAP_GENERIC_ID_CORRUPTED_IP_HDR = 14,
+	DEVLINK_TRAP_GENERIC_ID_IPV4_SIP_BC = 15,
+	DEVLINK_TRAP_GENERIC_ID_IPV6_MC_DIP_RESERVED_SCOPE = 16,
+	DEVLINK_TRAP_GENERIC_ID_IPV6_MC_DIP_INTERFACE_LOCAL_SCOPE = 17,
+	DEVLINK_TRAP_GENERIC_ID_MTU_ERROR = 18,
+	DEVLINK_TRAP_GENERIC_ID_UNRESOLVED_NEIGH = 19,
+	DEVLINK_TRAP_GENERIC_ID_RPF = 20,
+	DEVLINK_TRAP_GENERIC_ID_REJECT_ROUTE = 21,
+	DEVLINK_TRAP_GENERIC_ID_IPV4_LPM_UNICAST_MISS = 22,
+	DEVLINK_TRAP_GENERIC_ID_IPV6_LPM_UNICAST_MISS = 23,
+	DEVLINK_TRAP_GENERIC_ID_NON_ROUTABLE = 24,
+	DEVLINK_TRAP_GENERIC_ID_DECAP_ERROR = 25,
+	DEVLINK_TRAP_GENERIC_ID_OVERLAY_SMAC_MC = 26,
+	DEVLINK_TRAP_GENERIC_ID_INGRESS_FLOW_ACTION_DROP = 27,
+	DEVLINK_TRAP_GENERIC_ID_EGRESS_FLOW_ACTION_DROP = 28,
+	DEVLINK_TRAP_GENERIC_ID_STP = 29,
+	DEVLINK_TRAP_GENERIC_ID_LACP = 30,
+	DEVLINK_TRAP_GENERIC_ID_LLDP = 31,
+	DEVLINK_TRAP_GENERIC_ID_IGMP_QUERY = 32,
+	DEVLINK_TRAP_GENERIC_ID_IGMP_V1_REPORT = 33,
+	DEVLINK_TRAP_GENERIC_ID_IGMP_V2_REPORT = 34,
+	DEVLINK_TRAP_GENERIC_ID_IGMP_V3_REPORT = 35,
+	DEVLINK_TRAP_GENERIC_ID_IGMP_V2_LEAVE = 36,
+	DEVLINK_TRAP_GENERIC_ID_MLD_QUERY = 37,
+	DEVLINK_TRAP_GENERIC_ID_MLD_V1_REPORT = 38,
+	DEVLINK_TRAP_GENERIC_ID_MLD_V2_REPORT = 39,
+	DEVLINK_TRAP_GENERIC_ID_MLD_V1_DONE = 40,
+	DEVLINK_TRAP_GENERIC_ID_IPV4_DHCP = 41,
+	DEVLINK_TRAP_GENERIC_ID_IPV6_DHCP = 42,
+	DEVLINK_TRAP_GENERIC_ID_ARP_REQUEST = 43,
+	DEVLINK_TRAP_GENERIC_ID_ARP_RESPONSE = 44,
+	DEVLINK_TRAP_GENERIC_ID_ARP_OVERLAY = 45,
+	DEVLINK_TRAP_GENERIC_ID_IPV6_NEIGH_SOLICIT = 46,
+	DEVLINK_TRAP_GENERIC_ID_IPV6_NEIGH_ADVERT = 47,
+	DEVLINK_TRAP_GENERIC_ID_IPV4_BFD = 48,
+	DEVLINK_TRAP_GENERIC_ID_IPV6_BFD = 49,
+	DEVLINK_TRAP_GENERIC_ID_IPV4_OSPF = 50,
+	DEVLINK_TRAP_GENERIC_ID_IPV6_OSPF = 51,
+	DEVLINK_TRAP_GENERIC_ID_IPV4_BGP = 52,
+	DEVLINK_TRAP_GENERIC_ID_IPV6_BGP = 53,
+	DEVLINK_TRAP_GENERIC_ID_IPV4_VRRP = 54,
+	DEVLINK_TRAP_GENERIC_ID_IPV6_VRRP = 55,
+	DEVLINK_TRAP_GENERIC_ID_IPV4_PIM = 56,
+	DEVLINK_TRAP_GENERIC_ID_IPV6_PIM = 57,
+	DEVLINK_TRAP_GENERIC_ID_UC_LB = 58,
+	DEVLINK_TRAP_GENERIC_ID_LOCAL_ROUTE = 59,
+	DEVLINK_TRAP_GENERIC_ID_EXTERNAL_ROUTE = 60,
+	DEVLINK_TRAP_GENERIC_ID_IPV6_UC_DIP_LINK_LOCAL_SCOPE = 61,
+	DEVLINK_TRAP_GENERIC_ID_IPV6_DIP_ALL_NODES = 62,
+	DEVLINK_TRAP_GENERIC_ID_IPV6_DIP_ALL_ROUTERS = 63,
+	DEVLINK_TRAP_GENERIC_ID_IPV6_ROUTER_SOLICIT = 64,
+	DEVLINK_TRAP_GENERIC_ID_IPV6_ROUTER_ADVERT = 65,
+	DEVLINK_TRAP_GENERIC_ID_IPV6_REDIRECT = 66,
+	DEVLINK_TRAP_GENERIC_ID_IPV4_ROUTER_ALERT = 67,
+	DEVLINK_TRAP_GENERIC_ID_IPV6_ROUTER_ALERT = 68,
+	DEVLINK_TRAP_GENERIC_ID_PTP_EVENT = 69,
+	DEVLINK_TRAP_GENERIC_ID_PTP_GENERAL = 70,
+	DEVLINK_TRAP_GENERIC_ID_FLOW_ACTION_SAMPLE = 71,
+	DEVLINK_TRAP_GENERIC_ID_FLOW_ACTION_TRAP = 72,
+	DEVLINK_TRAP_GENERIC_ID_EARLY_DROP = 73,
+	DEVLINK_TRAP_GENERIC_ID_VXLAN_PARSING = 74,
+	DEVLINK_TRAP_GENERIC_ID_LLC_SNAP_PARSING = 75,
+	DEVLINK_TRAP_GENERIC_ID_VLAN_PARSING = 76,
+	DEVLINK_TRAP_GENERIC_ID_PPPOE_PPP_PARSING = 77,
+	DEVLINK_TRAP_GENERIC_ID_MPLS_PARSING = 78,
+	DEVLINK_TRAP_GENERIC_ID_ARP_PARSING = 79,
+	DEVLINK_TRAP_GENERIC_ID_IP_1_PARSING = 80,
+	DEVLINK_TRAP_GENERIC_ID_IP_N_PARSING = 81,
+	DEVLINK_TRAP_GENERIC_ID_GRE_PARSING = 82,
+	DEVLINK_TRAP_GENERIC_ID_UDP_PARSING = 83,
+	DEVLINK_TRAP_GENERIC_ID_TCP_PARSING = 84,
+	DEVLINK_TRAP_GENERIC_ID_IPSEC_PARSING = 85,
+	DEVLINK_TRAP_GENERIC_ID_SCTP_PARSING = 86,
+	DEVLINK_TRAP_GENERIC_ID_DCCP_PARSING = 87,
+	DEVLINK_TRAP_GENERIC_ID_GTP_PARSING = 88,
+	DEVLINK_TRAP_GENERIC_ID_ESP_PARSING = 89,
+	DEVLINK_TRAP_GENERIC_ID_BLACKHOLE_NEXTHOP = 90,
+	DEVLINK_TRAP_GENERIC_ID_DMAC_FILTER = 91,
+	DEVLINK_TRAP_GENERIC_ID_EAPOL = 92,
+	DEVLINK_TRAP_GENERIC_ID_LOCKED_PORT = 93,
+	__DEVLINK_TRAP_GENERIC_ID_MAX = 94,
+	DEVLINK_TRAP_GENERIC_ID_MAX = 93,
+};
+
+enum devlink_trap_group_generic_id {
+	DEVLINK_TRAP_GROUP_GENERIC_ID_L2_DROPS = 0,
+	DEVLINK_TRAP_GROUP_GENERIC_ID_L3_DROPS = 1,
+	DEVLINK_TRAP_GROUP_GENERIC_ID_L3_EXCEPTIONS = 2,
+	DEVLINK_TRAP_GROUP_GENERIC_ID_BUFFER_DROPS = 3,
+	DEVLINK_TRAP_GROUP_GENERIC_ID_TUNNEL_DROPS = 4,
+	DEVLINK_TRAP_GROUP_GENERIC_ID_ACL_DROPS = 5,
+	DEVLINK_TRAP_GROUP_GENERIC_ID_STP = 6,
+	DEVLINK_TRAP_GROUP_GENERIC_ID_LACP = 7,
+	DEVLINK_TRAP_GROUP_GENERIC_ID_LLDP = 8,
+	DEVLINK_TRAP_GROUP_GENERIC_ID_MC_SNOOPING = 9,
+	DEVLINK_TRAP_GROUP_GENERIC_ID_DHCP = 10,
+	DEVLINK_TRAP_GROUP_GENERIC_ID_NEIGH_DISCOVERY = 11,
+	DEVLINK_TRAP_GROUP_GENERIC_ID_BFD = 12,
+	DEVLINK_TRAP_GROUP_GENERIC_ID_OSPF = 13,
+	DEVLINK_TRAP_GROUP_GENERIC_ID_BGP = 14,
+	DEVLINK_TRAP_GROUP_GENERIC_ID_VRRP = 15,
+	DEVLINK_TRAP_GROUP_GENERIC_ID_PIM = 16,
+	DEVLINK_TRAP_GROUP_GENERIC_ID_UC_LB = 17,
+	DEVLINK_TRAP_GROUP_GENERIC_ID_LOCAL_DELIVERY = 18,
+	DEVLINK_TRAP_GROUP_GENERIC_ID_EXTERNAL_DELIVERY = 19,
+	DEVLINK_TRAP_GROUP_GENERIC_ID_IPV6 = 20,
+	DEVLINK_TRAP_GROUP_GENERIC_ID_PTP_EVENT = 21,
+	DEVLINK_TRAP_GROUP_GENERIC_ID_PTP_GENERAL = 22,
+	DEVLINK_TRAP_GROUP_GENERIC_ID_ACL_SAMPLE = 23,
+	DEVLINK_TRAP_GROUP_GENERIC_ID_ACL_TRAP = 24,
+	DEVLINK_TRAP_GROUP_GENERIC_ID_PARSER_ERROR_DROPS = 25,
+	DEVLINK_TRAP_GROUP_GENERIC_ID_EAPOL = 26,
+	__DEVLINK_TRAP_GROUP_GENERIC_ID_MAX = 27,
+	DEVLINK_TRAP_GROUP_GENERIC_ID_MAX = 26,
+};
+
+struct devlink_trap_policer_item;
+
+struct devlink_stats;
+
+struct devlink_trap_group_item {
+	const struct devlink_trap_group *group;
+	struct devlink_trap_policer_item *policer_item;
+	struct list_head list;
+	struct devlink_stats __attribute__((btf_type_tag("percpu"))) *stats;
+};
+
+struct devlink_trap_policer_item {
+	const struct devlink_trap_policer *policer;
+	u64 rate;
+	u64 burst;
+	struct list_head list;
+};
+
+struct devlink_stats {
+	u64_stats_t rx_bytes;
+	u64_stats_t rx_packets;
+	struct u64_stats_sync syncp;
+};
+
+struct devlink_trap_item {
+	const struct devlink_trap *trap;
+	struct devlink_trap_group_item *group_item;
+	struct list_head list;
+	enum devlink_trap_action action;
+	struct devlink_stats __attribute__((btf_type_tag("percpu"))) *stats;
+	void *priv;
+};
+
+struct devlink_linecard_type {
+	const char *type;
+	const void *priv;
+};
+
+enum vlan_flags {
+	VLAN_FLAG_REORDER_HDR = 1,
+	VLAN_FLAG_GVRP = 2,
+	VLAN_FLAG_LOOSE_BINDING = 4,
+	VLAN_FLAG_MVRP = 8,
+	VLAN_FLAG_BRIDGE_BINDING = 16,
+};
+
+enum vlan_protos {
+	VLAN_PROTO_8021Q = 0,
+	VLAN_PROTO_8021AD = 1,
+	VLAN_PROTO_NUM = 2,
+};
+
+struct vlan_pcpu_stats {
+	u64_stats_t rx_packets;
+	u64_stats_t rx_bytes;
+	u64_stats_t rx_multicast;
+	u64_stats_t tx_packets;
+	u64_stats_t tx_bytes;
+	struct u64_stats_sync syncp;
+	u32 rx_errors;
+	u32 tx_dropped;
+};
+
+struct vlan_vid_info {
+	struct list_head list;
+	__be16 proto;
+	u16 vid;
+	int refcount;
+};
+
+struct vlan_priority_tci_mapping;
+
+struct vlan_dev_priv {
+	unsigned int nr_ingress_mappings;
+	u32 ingress_priority_map[8];
+	unsigned int nr_egress_mappings;
+	struct vlan_priority_tci_mapping *egress_priority_map[16];
+	__be16 vlan_proto;
+	u16 vlan_id;
+	u16 flags;
+	struct net_device *real_dev;
+	netdevice_tracker dev_tracker;
+	unsigned char real_dev_addr[6];
+	struct proc_dir_entry *dent;
+	struct vlan_pcpu_stats __attribute__((btf_type_tag("percpu"))) *vlan_pcpu_stats;
+};
+
+struct vlan_priority_tci_mapping {
+	u32 priority;
+	u16 vlan_qos;
+	struct vlan_priority_tci_mapping *next;
+};
+
+enum nl80211_chan_width {
+	NL80211_CHAN_WIDTH_20_NOHT = 0,
+	NL80211_CHAN_WIDTH_20 = 1,
+	NL80211_CHAN_WIDTH_40 = 2,
+	NL80211_CHAN_WIDTH_80 = 3,
+	NL80211_CHAN_WIDTH_80P80 = 4,
+	NL80211_CHAN_WIDTH_160 = 5,
+	NL80211_CHAN_WIDTH_5 = 6,
+	NL80211_CHAN_WIDTH_10 = 7,
+	NL80211_CHAN_WIDTH_1 = 8,
+	NL80211_CHAN_WIDTH_2 = 9,
+	NL80211_CHAN_WIDTH_4 = 10,
+	NL80211_CHAN_WIDTH_8 = 11,
+	NL80211_CHAN_WIDTH_16 = 12,
+	NL80211_CHAN_WIDTH_320 = 13,
+};
+
+enum ieee80211_edmg_bw_config {
+	IEEE80211_EDMG_BW_CONFIG_4 = 4,
+	IEEE80211_EDMG_BW_CONFIG_5 = 5,
+	IEEE80211_EDMG_BW_CONFIG_6 = 6,
+	IEEE80211_EDMG_BW_CONFIG_7 = 7,
+	IEEE80211_EDMG_BW_CONFIG_8 = 8,
+	IEEE80211_EDMG_BW_CONFIG_9 = 9,
+	IEEE80211_EDMG_BW_CONFIG_10 = 10,
+	IEEE80211_EDMG_BW_CONFIG_11 = 11,
+	IEEE80211_EDMG_BW_CONFIG_12 = 12,
+	IEEE80211_EDMG_BW_CONFIG_13 = 13,
+	IEEE80211_EDMG_BW_CONFIG_14 = 14,
+	IEEE80211_EDMG_BW_CONFIG_15 = 15,
+};
+
+struct ieee80211_edmg {
+	u8 channels;
+	enum ieee80211_edmg_bw_config bw_config;
+};
+
+struct ieee80211_channel;
+
+struct cfg80211_chan_def {
+	struct ieee80211_channel *chan;
+	enum nl80211_chan_width width;
+	u32 center_freq1;
+	u32 center_freq2;
+	struct ieee80211_edmg edmg;
+	u16 freq1_offset;
+};
+
+struct cfg80211_internal_bss;
+
+enum nl80211_iftype {
+	NL80211_IFTYPE_UNSPECIFIED = 0,
+	NL80211_IFTYPE_ADHOC = 1,
+	NL80211_IFTYPE_STATION = 2,
+	NL80211_IFTYPE_AP = 3,
+	NL80211_IFTYPE_AP_VLAN = 4,
+	NL80211_IFTYPE_WDS = 5,
+	NL80211_IFTYPE_MONITOR = 6,
+	NL80211_IFTYPE_MESH_POINT = 7,
+	NL80211_IFTYPE_P2P_CLIENT = 8,
+	NL80211_IFTYPE_P2P_GO = 9,
+	NL80211_IFTYPE_P2P_DEVICE = 10,
+	NL80211_IFTYPE_OCB = 11,
+	NL80211_IFTYPE_NAN = 12,
+	NUM_NL80211_IFTYPES = 13,
+	NL80211_IFTYPE_MAX = 12,
+};
+
+struct cfg80211_conn;
+
+struct cfg80211_cached_keys;
+
+enum ieee80211_bss_type {
+	IEEE80211_BSS_TYPE_ESS = 0,
+	IEEE80211_BSS_TYPE_PBSS = 1,
+	IEEE80211_BSS_TYPE_IBSS = 2,
+	IEEE80211_BSS_TYPE_MBSS = 3,
+	IEEE80211_BSS_TYPE_ANY = 4,
+};
+
+struct wiphy;
+
+struct wiphy_work;
+
+typedef void (*wiphy_work_func_t)(struct wiphy *, struct wiphy_work *);
+
+struct wiphy_work {
+	struct list_head entry;
+	wiphy_work_func_t func;
+};
+
+struct cfg80211_cqm_config;
+
+struct wireless_dev {
+	struct wiphy *wiphy;
+	enum nl80211_iftype iftype;
+	struct list_head list;
+	struct net_device *netdev;
+	u32 identifier;
+	struct list_head mgmt_registrations;
+	u8 mgmt_registrations_need_update: 1;
+	struct mutex mtx;
+	bool use_4addr;
+	bool is_running;
+	bool registered;
+	bool registering;
+	u8 address[6];
+	struct cfg80211_conn *conn;
+	struct cfg80211_cached_keys *connect_keys;
+	enum ieee80211_bss_type conn_bss_type;
+	u32 conn_owner_nlportid;
+	struct work_struct disconnect_wk;
+	u8 disconnect_bssid[6];
+	struct list_head event_list;
+	spinlock_t event_lock;
+	u8 connected: 1;
+	bool ps;
+	int ps_timeout;
+	u32 ap_unexpected_nlportid;
+	u32 owner_nlportid;
+	bool nl_owner_dead;
+	bool cac_started;
+	unsigned long cac_start_time;
+	unsigned int cac_time_ms;
+	struct wiphy_work cqm_rssi_work;
+	struct cfg80211_cqm_config __attribute__((btf_type_tag("rcu"))) *cqm_config;
+	struct list_head pmsr_list;
+	spinlock_t pmsr_lock;
+	struct work_struct pmsr_free_wk;
+	unsigned long unprot_beacon_reported;
+	union {
+		struct {
+			u8 connected_addr[6];
+			u8 ssid[32];
+			u8 ssid_len;
+			long: 0;
+		} client;
+		struct {
+			int beacon_interval;
+			struct cfg80211_chan_def preset_chandef;
+			struct cfg80211_chan_def chandef;
+			u8 id[32];
+			u8 id_len;
+			u8 id_up_len;
+		} mesh;
+		struct {
+			struct cfg80211_chan_def preset_chandef;
+			u8 ssid[32];
+			u8 ssid_len;
+		} ap;
+		struct {
+			struct cfg80211_internal_bss *current_bss;
+			struct cfg80211_chan_def chandef;
+			int beacon_interval;
+			u8 ssid[32];
+			u8 ssid_len;
+		} ibss;
+		struct {
+			struct cfg80211_chan_def chandef;
+		} ocb;
+	} u;
+	struct {
+		u8 addr[6];
+		union {
+			struct {
+				unsigned int beacon_interval;
+				struct cfg80211_chan_def chandef;
+			} ap;
+			struct {
+				struct cfg80211_internal_bss *current_bss;
+			} client;
+		};
+	} links[15];
+	u16 valid_links;
+	u64 android_kabi_reserved1;
+	u64 android_kabi_reserved2;
+};
+
+enum cfg80211_signal_type {
+	CFG80211_SIGNAL_TYPE_NONE = 0,
+	CFG80211_SIGNAL_TYPE_MBM = 1,
+	CFG80211_SIGNAL_TYPE_UNSPEC = 2,
+};
+
+struct rfkill;
+
+struct mac_address;
+
+struct ieee80211_txrx_stypes;
+
+struct ieee80211_iface_combination;
+
+struct wiphy_iftype_akm_suites;
+
+struct wiphy_wowlan_support;
+
+struct cfg80211_wowlan;
+
+struct wiphy_iftype_ext_capab;
+
+struct ieee80211_supported_band;
+
+struct regulatory_request;
+
+struct ieee80211_regdomain;
+
+struct ieee80211_ht_cap;
+
+struct ieee80211_vht_cap;
+
+struct wiphy_coalesce_support;
+
+struct wiphy_vendor_command;
+
+struct nl80211_vendor_cmd_info;
+
+struct cfg80211_pmsr_capabilities;
+
+struct cfg80211_sar_capa;
+
+struct wiphy {
+	struct mutex mtx;
+	u8 perm_addr[6];
+	u8 addr_mask[6];
+	struct mac_address *addresses;
+	const struct ieee80211_txrx_stypes *mgmt_stypes;
+	const struct ieee80211_iface_combination *iface_combinations;
+	int n_iface_combinations;
+	u16 software_iftypes;
+	u16 n_addresses;
+	u16 interface_modes;
+	u16 max_acl_mac_addrs;
+	u32 flags;
+	u32 regulatory_flags;
+	u32 features;
+	u8 ext_features[9];
+	u32 ap_sme_capa;
+	enum cfg80211_signal_type signal_type;
+	int bss_priv_size;
+	u8 max_scan_ssids;
+	u8 max_sched_scan_reqs;
+	u8 max_sched_scan_ssids;
+	u8 max_match_sets;
+	u16 max_scan_ie_len;
+	u16 max_sched_scan_ie_len;
+	u32 max_sched_scan_plans;
+	u32 max_sched_scan_plan_interval;
+	u32 max_sched_scan_plan_iterations;
+	int n_cipher_suites;
+	const u32 *cipher_suites;
+	int n_akm_suites;
+	const u32 *akm_suites;
+	const struct wiphy_iftype_akm_suites *iftype_akm_suites;
+	unsigned int num_iftype_akm_suites;
+	u8 retry_short;
+	u8 retry_long;
+	u32 frag_threshold;
+	u32 rts_threshold;
+	u8 coverage_class;
+	char fw_version[32];
+	u32 hw_version;
+	const struct wiphy_wowlan_support *wowlan;
+	struct cfg80211_wowlan *wowlan_config;
+	u16 max_remain_on_channel_duration;
+	u8 max_num_pmkids;
+	u32 available_antennas_tx;
+	u32 available_antennas_rx;
+	u32 probe_resp_offload;
+	const u8 *extended_capabilities;
+	const u8 *extended_capabilities_mask;
+	u8 extended_capabilities_len;
+	const struct wiphy_iftype_ext_capab *iftype_ext_capab;
+	unsigned int num_iftype_ext_capab;
+	const void *privid;
+	struct ieee80211_supported_band *bands[6];
+	void (*reg_notifier)(struct wiphy *, struct regulatory_request *);
+	const struct ieee80211_regdomain __attribute__((btf_type_tag("rcu"))) *regd;
+	struct device dev;
+	bool registered;
+	struct dentry *debugfsdir;
+	const struct ieee80211_ht_cap *ht_capa_mod_mask;
+	const struct ieee80211_vht_cap *vht_capa_mod_mask;
+	struct list_head wdev_list;
+	possible_net_t _net;
+	const struct wiphy_coalesce_support *coalesce;
+	const struct wiphy_vendor_command *vendor_commands;
+	const struct nl80211_vendor_cmd_info *vendor_events;
+	int n_vendor_commands;
+	int n_vendor_events;
+	u16 max_ap_assoc_sta;
+	u8 max_num_csa_counters;
+	u32 bss_select_support;
+	u8 nan_supported_bands;
+	u32 txq_limit;
+	u32 txq_memory_limit;
+	u32 txq_quantum;
+	unsigned long tx_queue_len;
+	u8 support_mbssid: 1;
+	u8 support_only_he_mbssid: 1;
+	const struct cfg80211_pmsr_capabilities *pmsr_capa;
+	struct {
+		u64 peer;
+		u64 vif;
+		u8 max_retry;
+	} tid_config_support;
+	u8 max_data_retry_count;
+	const struct cfg80211_sar_capa *sar_capa;
+	struct rfkill *rfkill;
+	u8 mbssid_max_interfaces;
+	u8 ema_max_profile_periodicity;
+	u16 max_num_akm_suites;
+	u16 hw_timestamp_max_peers;
+	u64 android_kabi_reserved1;
+	char priv[0];
+};
+
+struct mac_address {
+	u8 addr[6];
+};
+
+struct ieee80211_txrx_stypes {
+	u16 tx;
+	u16 rx;
+};
+
+struct ieee80211_iface_limit;
+
+struct ieee80211_iface_combination {
+	const struct ieee80211_iface_limit *limits;
+	u32 num_different_channels;
+	u16 max_interfaces;
+	u8 n_limits;
+	bool beacon_int_infra_match;
+	u8 radar_detect_widths;
+	u8 radar_detect_regions;
+	u32 beacon_int_min_gcd;
+};
+
+struct ieee80211_iface_limit {
+	u16 max;
+	u16 types;
+};
+
+struct wiphy_iftype_akm_suites {
+	u16 iftypes_mask;
+	const u32 *akm_suites;
+	int n_akm_suites;
+};
+
+struct wiphy_wowlan_tcp_support;
+
+struct wiphy_wowlan_support {
+	u32 flags;
+	int n_patterns;
+	int pattern_max_len;
+	int pattern_min_len;
+	int max_pkt_offset;
+	int max_nd_match_sets;
+	const struct wiphy_wowlan_tcp_support *tcp;
+};
+
+struct nl80211_wowlan_tcp_data_token_feature;
+
+struct wiphy_wowlan_tcp_support {
+	const struct nl80211_wowlan_tcp_data_token_feature *tok;
+	u32 data_payload_max;
+	u32 data_interval_max;
+	u32 wake_payload_max;
+	bool seq;
+};
+
+struct nl80211_wowlan_tcp_data_token_feature {
+	__u32 min_len;
+	__u32 max_len;
+	__u32 bufsize;
+};
+
+struct cfg80211_pkt_pattern;
+
+struct cfg80211_wowlan_tcp;
+
+struct cfg80211_sched_scan_request;
+
+struct cfg80211_wowlan {
+	bool any;
+	bool disconnect;
+	bool magic_pkt;
+	bool gtk_rekey_failure;
+	bool eap_identity_req;
+	bool four_way_handshake;
+	bool rfkill_release;
+	struct cfg80211_pkt_pattern *patterns;
+	struct cfg80211_wowlan_tcp *tcp;
+	int n_patterns;
+	struct cfg80211_sched_scan_request *nd_config;
+};
+
+struct cfg80211_pkt_pattern {
+	const u8 *mask;
+	const u8 *pattern;
+	int pattern_len;
+	int pkt_offset;
+};
+
+struct nl80211_wowlan_tcp_data_seq {
+	__u32 start;
+	__u32 offset;
+	__u32 len;
+};
+
+struct nl80211_wowlan_tcp_data_token {
+	__u32 offset;
+	__u32 len;
+	__u8 token_stream[0];
+};
+
+struct cfg80211_wowlan_tcp {
+	struct socket *sock;
+	__be32 src;
+	__be32 dst;
+	u16 src_port;
+	u16 dst_port;
+	u8 dst_mac[6];
+	int payload_len;
+	const u8 *payload;
+	struct nl80211_wowlan_tcp_data_seq payload_seq;
+	u32 data_interval;
+	u32 wake_len;
+	const u8 *wake_data;
+	const u8 *wake_mask;
+	u32 tokens_size;
+	struct nl80211_wowlan_tcp_data_token payload_tok;
+};
+
+enum nl80211_band {
+	NL80211_BAND_2GHZ = 0,
+	NL80211_BAND_5GHZ = 1,
+	NL80211_BAND_60GHZ = 2,
+	NL80211_BAND_6GHZ = 3,
+	NL80211_BAND_S1GHZ = 4,
+	NL80211_BAND_LC = 5,
+	NUM_NL80211_BANDS = 6,
+};
+
+struct cfg80211_bss_select_adjust {
+	enum nl80211_band band;
+	s8 delta;
+};
+
+struct cfg80211_ssid;
+
+struct cfg80211_match_set;
+
+struct cfg80211_sched_scan_plan;
+
+struct cfg80211_sched_scan_request {
+	u64 reqid;
+	struct cfg80211_ssid *ssids;
+	int n_ssids;
+	u32 n_channels;
+	const u8 *ie;
+	size_t ie_len;
+	u32 flags;
+	struct cfg80211_match_set *match_sets;
+	int n_match_sets;
+	s32 min_rssi_thold;
+	u32 delay;
+	struct cfg80211_sched_scan_plan *scan_plans;
+	int n_scan_plans;
+	u8 mac_addr[6];
+	u8 mac_addr_mask[6];
+	bool relative_rssi_set;
+	s8 relative_rssi;
+	struct cfg80211_bss_select_adjust rssi_adjust;
+	struct wiphy *wiphy;
+	struct net_device *dev;
+	unsigned long scan_start;
+	bool report_results;
+	struct callback_head callback_head;
+	u32 owner_nlportid;
+	bool nl_owner_dead;
+	struct list_head list;
+	u64 android_kabi_reserved1;
+	struct ieee80211_channel *channels[0];
+};
+
+struct cfg80211_ssid {
+	u8 ssid[32];
+	u8 ssid_len;
+};
+
+struct cfg80211_match_set {
+	struct cfg80211_ssid ssid;
+	u8 bssid[6];
+	s32 rssi_thold;
+	s32 per_band_rssi_thold[6];
+};
+
+struct cfg80211_sched_scan_plan {
+	u32 interval;
+	u32 iterations;
+};
+
+enum nl80211_dfs_state {
+	NL80211_DFS_USABLE = 0,
+	NL80211_DFS_UNAVAILABLE = 1,
+	NL80211_DFS_AVAILABLE = 2,
+};
+
+struct ieee80211_channel {
+	enum nl80211_band band;
+	u32 center_freq;
+	u16 freq_offset;
+	u16 hw_value;
+	u32 flags;
+	int max_antenna_gain;
+	int max_power;
+	int max_reg_power;
+	bool beacon_found;
+	u32 orig_flags;
+	int orig_mag;
+	int orig_mpwr;
+	enum nl80211_dfs_state dfs_state;
+	unsigned long dfs_state_entered;
+	unsigned int dfs_cac_ms;
+	s8 psd;
+};
+
+struct wiphy_iftype_ext_capab {
+	enum nl80211_iftype iftype;
+	const u8 *extended_capabilities;
+	const u8 *extended_capabilities_mask;
+	u8 extended_capabilities_len;
+	u16 eml_capabilities;
+	u16 mld_capa_and_ops;
+};
+
+struct ieee80211_mcs_info {
+	u8 rx_mask[10];
+	__le16 rx_highest;
+	u8 tx_params;
+	u8 reserved[3];
+};
+
+struct ieee80211_sta_ht_cap {
+	u16 cap;
+	bool ht_supported;
+	u8 ampdu_factor;
+	u8 ampdu_density;
+	struct ieee80211_mcs_info mcs;
+	short: 0;
+} __attribute__((packed));
+
+struct ieee80211_vht_mcs_info {
+	__le16 rx_mcs_map;
+	__le16 rx_highest;
+	__le16 tx_mcs_map;
+	__le16 tx_highest;
+};
+
+struct ieee80211_sta_vht_cap {
+	bool vht_supported;
+	u32 cap;
+	struct ieee80211_vht_mcs_info vht_mcs;
+};
+
+struct ieee80211_sta_s1g_cap {
+	bool s1g;
+	u8 cap[10];
+	u8 nss_mcs[5];
+};
+
+struct ieee80211_rate;
+
+struct ieee80211_sband_iftype_data;
+
+struct ieee80211_supported_band {
+	struct ieee80211_channel *channels;
+	struct ieee80211_rate *bitrates;
+	enum nl80211_band band;
+	int n_channels;
+	int n_bitrates;
+	struct ieee80211_sta_ht_cap ht_cap;
+	struct ieee80211_sta_vht_cap vht_cap;
+	struct ieee80211_sta_s1g_cap s1g_cap;
+	struct ieee80211_edmg edmg_cap;
+	u16 n_iftype_data;
+	const struct ieee80211_sband_iftype_data *iftype_data;
+};
+
+struct ieee80211_rate {
+	u32 flags;
+	u16 bitrate;
+	u16 hw_value;
+	u16 hw_value_short;
+};
+
+struct ieee80211_he_cap_elem {
+	u8 mac_cap_info[6];
+	u8 phy_cap_info[11];
+};
+
+struct ieee80211_he_mcs_nss_supp {
+	__le16 rx_mcs_80;
+	__le16 tx_mcs_80;
+	__le16 rx_mcs_160;
+	__le16 tx_mcs_160;
+	__le16 rx_mcs_80p80;
+	__le16 tx_mcs_80p80;
+};
+
+struct ieee80211_sta_he_cap {
+	bool has_he;
+	struct ieee80211_he_cap_elem he_cap_elem;
+	struct ieee80211_he_mcs_nss_supp he_mcs_nss_supp;
+	u8 ppe_thres[25];
+} __attribute__((packed));
+
+struct ieee80211_he_6ghz_capa {
+	__le16 capa;
+};
+
+struct ieee80211_eht_cap_elem_fixed {
+	u8 mac_cap_info[2];
+	u8 phy_cap_info[9];
+};
+
+struct ieee80211_eht_mcs_nss_supp_20mhz_only {
+	union {
+		struct {
+			u8 rx_tx_mcs7_max_nss;
+			u8 rx_tx_mcs9_max_nss;
+			u8 rx_tx_mcs11_max_nss;
+			u8 rx_tx_mcs13_max_nss;
+		};
+		u8 rx_tx_max_nss[4];
+	};
+};
+
+struct ieee80211_eht_mcs_nss_supp_bw {
+	union {
+		struct {
+			u8 rx_tx_mcs9_max_nss;
+			u8 rx_tx_mcs11_max_nss;
+			u8 rx_tx_mcs13_max_nss;
+		};
+		u8 rx_tx_max_nss[3];
+	};
+};
+
+struct ieee80211_eht_mcs_nss_supp {
+	union {
+		struct ieee80211_eht_mcs_nss_supp_20mhz_only only_20mhz;
+		struct {
+			struct ieee80211_eht_mcs_nss_supp_bw _80;
+			struct ieee80211_eht_mcs_nss_supp_bw _160;
+			struct ieee80211_eht_mcs_nss_supp_bw _320;
+		} bw;
+	};
+};
+
+struct ieee80211_sta_eht_cap {
+	bool has_eht;
+	struct ieee80211_eht_cap_elem_fixed eht_cap_elem;
+	struct ieee80211_eht_mcs_nss_supp eht_mcs_nss_supp;
+	u8 eht_ppe_thres[32];
+};
+
+struct ieee80211_sband_iftype_data {
+	u16 types_mask;
+	struct ieee80211_sta_he_cap he_cap;
+	struct ieee80211_he_6ghz_capa he_6ghz_capa;
+	struct ieee80211_sta_eht_cap eht_cap;
+	struct {
+		const u8 *data;
+		unsigned int len;
+	} vendor_elems;
+} __attribute__((packed));
+
+enum nl80211_reg_initiator {
+	NL80211_REGDOM_SET_BY_CORE = 0,
+	NL80211_REGDOM_SET_BY_USER = 1,
+	NL80211_REGDOM_SET_BY_DRIVER = 2,
+	NL80211_REGDOM_SET_BY_COUNTRY_IE = 3,
+};
+
+enum nl80211_user_reg_hint_type {
+	NL80211_USER_REG_HINT_USER = 0,
+	NL80211_USER_REG_HINT_CELL_BASE = 1,
+	NL80211_USER_REG_HINT_INDOOR = 2,
+};
+
+enum nl80211_dfs_regions {
+	NL80211_DFS_UNSET = 0,
+	NL80211_DFS_FCC = 1,
+	NL80211_DFS_ETSI = 2,
+	NL80211_DFS_JP = 3,
+};
+
+enum environment_cap {
+	ENVIRON_ANY = 0,
+	ENVIRON_INDOOR = 1,
+	ENVIRON_OUTDOOR = 2,
+};
+
+struct regulatory_request {
+	struct callback_head callback_head;
+	int wiphy_idx;
+	enum nl80211_reg_initiator initiator;
+	enum nl80211_user_reg_hint_type user_reg_hint_type;
+	char alpha2[3];
+	enum nl80211_dfs_regions dfs_region;
+	bool intersect;
+	bool processed;
+	enum environment_cap country_ie_env;
+	struct list_head list;
+};
+
+struct ieee80211_freq_range {
+	u32 start_freq_khz;
+	u32 end_freq_khz;
+	u32 max_bandwidth_khz;
+};
+
+struct ieee80211_power_rule {
+	u32 max_antenna_gain;
+	u32 max_eirp;
+};
+
+struct ieee80211_wmm_ac {
+	u16 cw_min;
+	u16 cw_max;
+	u16 cot;
+	u8 aifsn;
+};
+
+struct ieee80211_wmm_rule {
+	struct ieee80211_wmm_ac client[4];
+	struct ieee80211_wmm_ac ap[4];
+};
+
+struct ieee80211_reg_rule {
+	struct ieee80211_freq_range freq_range;
+	struct ieee80211_power_rule power_rule;
+	struct ieee80211_wmm_rule wmm_rule;
+	u32 flags;
+	u32 dfs_cac_ms;
+	bool has_wmm;
+	s8 psd;
+};
+
+struct ieee80211_regdomain {
+	struct callback_head callback_head;
+	u32 n_reg_rules;
+	char alpha2[3];
+	enum nl80211_dfs_regions dfs_region;
+	struct ieee80211_reg_rule reg_rules[0];
+};
+
+struct ieee80211_ht_cap {
+	__le16 cap_info;
+	u8 ampdu_params_info;
+	struct ieee80211_mcs_info mcs;
+	__le16 extended_ht_cap_info;
+	__le32 tx_BF_cap_info;
+	u8 antenna_selection_info;
+} __attribute__((packed));
+
+struct ieee80211_vht_cap {
+	__le32 vht_cap_info;
+	struct ieee80211_vht_mcs_info supp_mcs;
+};
+
+struct wiphy_coalesce_support {
+	int n_rules;
+	int max_delay;
+	int n_patterns;
+	int pattern_max_len;
+	int pattern_min_len;
+	int max_pkt_offset;
+};
+
+struct nl80211_vendor_cmd_info {
+	__u32 vendor_id;
+	__u32 subcmd;
+};
+
+struct wiphy_vendor_command {
+	struct nl80211_vendor_cmd_info info;
+	u32 flags;
+	int (*doit)(struct wiphy *, struct wireless_dev *, const void *, int);
+	int (*dumpit)(struct wiphy *, struct wireless_dev *, struct sk_buff *, const void *, int, unsigned long *);
+	const struct nla_policy *policy;
+	unsigned int maxattr;
+	u64 android_kabi_reserved1;
+};
+
+struct cfg80211_pmsr_capabilities {
+	unsigned int max_peers;
+	u8 report_ap_tsf: 1;
+	u8 randomize_mac_addr: 1;
+	struct {
+		u32 preambles;
+		u32 bandwidths;
+		s8 max_bursts_exponent;
+		u8 max_ftms_per_burst;
+		u8 supported: 1;
+		u8 asap: 1;
+		u8 non_asap: 1;
+		u8 request_lci: 1;
+		u8 request_civicloc: 1;
+		u8 trigger_based: 1;
+		u8 non_trigger_based: 1;
+	} ftm;
+};
+
+enum nl80211_sar_type {
+	NL80211_SAR_TYPE_POWER = 0,
+	NUM_NL80211_SAR_TYPE = 1,
+};
+
+struct cfg80211_sar_freq_ranges;
+
+struct cfg80211_sar_capa {
+	enum nl80211_sar_type type;
+	u32 num_freq_ranges;
+	const struct cfg80211_sar_freq_ranges *freq_ranges;
+};
+
+struct cfg80211_sar_freq_ranges {
+	u32 start_freq;
+	u32 end_freq;
+};
+
+struct iw_ioctl_description {
+	__u8 header_type;
+	__u8 token_type;
+	__u16 token_size;
+	__u16 min_tokens;
+	__u16 max_tokens;
+	__u32 flags;
+};
+
+struct compat_iw_point {
+	compat_caddr_t pointer;
+	__u16 length;
+	__u16 flags;
+};
+
+struct iwreq {
+	union {
+		char ifrn_name[16];
+	} ifr_ifrn;
+	union iwreq_data u;
+};
+
+typedef int (*wext_ioctl_func)(struct net_device *, struct iwreq *, unsigned int, struct iw_request_info *, iw_handler);
+
+struct iw_event {
+	__u16 len;
+	__u16 cmd;
+	union iwreq_data u;
+};
+
+struct __compat_iw_event {
+	__u16 len;
+	__u16 cmd;
+	union {
+		compat_caddr_t pointer;
+		struct {
+			struct {} __empty_ptr_bytes;
+			__u8 ptr_bytes[0];
+		};
+	};
+};
+
+struct iw_encode_ext {
+	__u32 ext_flags;
+	__u8 tx_seq[8];
+	__u8 rx_seq[8];
+	struct sockaddr addr;
+	__u16 alg;
+	__u16 key_len;
+	__u8 key[0];
+};
+
+struct iw_thrspy {
+	struct sockaddr addr;
+	struct iw_quality qual;
+	struct iw_quality low;
+	struct iw_quality high;
+};
+
+struct vsock_tap {
+	struct net_device *dev;
+	struct module *module;
+	struct list_head list;
+};
+
+struct vsock_diag_msg {
+	__u8 vdiag_family;
+	__u8 vdiag_type;
+	__u8 vdiag_state;
+	__u8 vdiag_shutdown;
+	__u32 vdiag_src_cid;
+	__u32 vdiag_src_port;
+	__u32 vdiag_dst_cid;
+	__u32 vdiag_dst_port;
+	__u32 vdiag_ino;
+	__u32 vdiag_cookie[2];
+};
+
+struct vsock_diag_req {
+	__u8 sdiag_family;
+	__u8 sdiag_protocol;
+	__u16 pad;
+	__u32 vdiag_states;
+	__u32 vdiag_ino;
+	__u32 vdiag_show;
+	__u32 vdiag_cookie[2];
+};
+
+typedef void (*btf_trace_virtio_transport_alloc_pkt)(void *, __u32, __u32, __u32, __u32, __u32, __u16, __u16, __u32);
+
+typedef void (*btf_trace_virtio_transport_recv_pkt)(void *, __u32, __u32, __u32, __u32, __u32, __u16, __u16, __u32, __u32, __u32);
+
+enum virtio_vsock_op {
+	VIRTIO_VSOCK_OP_INVALID = 0,
+	VIRTIO_VSOCK_OP_REQUEST = 1,
+	VIRTIO_VSOCK_OP_RESPONSE = 2,
+	VIRTIO_VSOCK_OP_RST = 3,
+	VIRTIO_VSOCK_OP_SHUTDOWN = 4,
+	VIRTIO_VSOCK_OP_RW = 5,
+	VIRTIO_VSOCK_OP_CREDIT_UPDATE = 6,
+	VIRTIO_VSOCK_OP_CREDIT_REQUEST = 7,
+};
+
+enum virtio_vsock_shutdown {
+	VIRTIO_VSOCK_SHUTDOWN_RCV = 1,
+	VIRTIO_VSOCK_SHUTDOWN_SEND = 2,
+};
+
+enum af_vsockmon_transport {
+	AF_VSOCK_TRANSPORT_UNKNOWN = 0,
+	AF_VSOCK_TRANSPORT_NO_INFO = 1,
+	AF_VSOCK_TRANSPORT_VIRTIO = 2,
+};
+
+enum af_vsockmon_op {
+	AF_VSOCK_OP_UNKNOWN = 0,
+	AF_VSOCK_OP_CONNECT = 1,
+	AF_VSOCK_OP_DISCONNECT = 2,
+	AF_VSOCK_OP_CONTROL = 3,
+	AF_VSOCK_OP_PAYLOAD = 4,
+};
+
+enum virtio_vsock_type {
+	VIRTIO_VSOCK_TYPE_STREAM = 1,
+	VIRTIO_VSOCK_TYPE_SEQPACKET = 2,
+};
+
+struct trace_event_raw_virtio_transport_alloc_pkt {
+	struct trace_entry ent;
+	__u32 src_cid;
+	__u32 src_port;
+	__u32 dst_cid;
+	__u32 dst_port;
+	__u32 len;
+	__u16 type;
+	__u16 op;
+	__u32 flags;
+	char __data[0];
+};
+
+struct trace_event_raw_virtio_transport_recv_pkt {
+	struct trace_entry ent;
+	__u32 src_cid;
+	__u32 src_port;
+	__u32 dst_cid;
+	__u32 dst_port;
+	__u32 len;
+	__u16 type;
+	__u16 op;
+	__u32 flags;
+	__u32 buf_alloc;
+	__u32 fwd_cnt;
+	char __data[0];
+};
+
+struct virtio_vsock_sock {
+	struct vsock_sock *vsk;
+	spinlock_t tx_lock;
+	spinlock_t rx_lock;
+	u32 tx_cnt;
+	u32 peer_fwd_cnt;
+	u32 peer_buf_alloc;
+	u32 fwd_cnt;
+	u32 last_fwd_cnt;
+	u32 rx_bytes;
+	u32 buf_alloc;
+	struct sk_buff_head rx_queue;
+	u32 msg_count;
+};
+
+struct virtio_vsock_pkt_info {
+	u32 remote_cid;
+	u32 remote_port;
+	struct vsock_sock *vsk;
+	struct msghdr *msg;
+	u32 pkt_len;
+	u16 type;
+	u16 op;
+	u32 flags;
+	bool reply;
+};
+
+struct trace_event_data_offsets_virtio_transport_alloc_pkt {};
+
+struct trace_event_data_offsets_virtio_transport_recv_pkt {};
+
+struct af_vsockmon_hdr {
+	__le64 src_cid;
+	__le64 dst_cid;
+	__le32 src_port;
+	__le32 dst_port;
+	__le16 op;
+	__le16 transport;
+	__le16 len;
+	__u8 reserved[2];
+};
+
+struct vsock_loopback {
+	struct workqueue_struct *workqueue;
+	struct sk_buff_head pkt_queue;
+	struct work_struct pkt_work;
+};
+
+struct xdp_ring;
+
+struct xsk_queue {
+	u32 ring_mask;
+	u32 nentries;
+	u32 cached_prod;
+	u32 cached_cons;
+	struct xdp_ring *ring;
+	u64 invalid_descs;
+	u64 queue_empty_descs;
+	size_t ring_vmalloc_size;
+};
+
+struct xdp_ring {
+	u32 producer;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	u32 pad1;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	u32 consumer;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	u32 pad2;
+	u32 flags;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	u32 pad3;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct xdp_rxtx_ring {
+	struct xdp_ring ptrs;
+	struct xdp_desc desc[0];
+};
+
+struct xdp_umem_ring {
+	struct xdp_ring ptrs;
+	u64 desc[0];
+};
+
+struct xsk_map;
+
+struct xsk_map_node {
+	struct list_head node;
+	struct xsk_map *map;
+	struct xdp_sock __attribute__((btf_type_tag("rcu"))) **map_entry;
+};
+
+struct xsk_map {
+	struct bpf_map map;
+	spinlock_t lock;
+	atomic_t count;
+	struct xdp_sock __attribute__((btf_type_tag("rcu"))) *xsk_map[0];
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+	long: 64;
+};
+
+struct sockaddr_xdp {
+	__u16 sxdp_family;
+	__u16 sxdp_flags;
+	__u32 sxdp_ifindex;
+	__u32 sxdp_queue_id;
+	__u32 sxdp_shared_umem_fd;
+};
+
+struct xdp_ring_offset_v1 {
+	__u64 producer;
+	__u64 consumer;
+	__u64 desc;
+};
+
+struct parsed_desc {
+	u32 mb;
+	u32 valid;
+};
+
+struct xdp_umem_reg {
+	__u64 addr;
+	__u64 len;
+	__u32 chunk_size;
+	__u32 headroom;
+	__u32 flags;
+};
+
+struct xdp_ring_offset {
+	__u64 producer;
+	__u64 consumer;
+	__u64 desc;
+	__u64 flags;
+};
+
+struct xdp_mmap_offsets {
+	struct xdp_ring_offset rx;
+	struct xdp_ring_offset tx;
+	struct xdp_ring_offset fr;
+	struct xdp_ring_offset cr;
+};
+
+struct xdp_options {
+	__u32 flags;
+};
+
+struct xdp_statistics {
+	__u64 rx_dropped;
+	__u64 rx_invalid_descs;
+	__u64 tx_invalid_descs;
+	__u64 rx_ring_full;
+	__u64 rx_fill_ring_empty_descs;
+	__u64 tx_ring_empty_descs;
+};
+
+struct xdp_mmap_offsets_v1 {
+	struct xdp_ring_offset_v1 rx;
+	struct xdp_ring_offset_v1 tx;
+	struct xdp_ring_offset_v1 fr;
+	struct xdp_ring_offset_v1 cr;
+};
+
+struct xsk_dma_map {
+	dma_addr_t *dma_pages;
+	struct device *dev;
+	struct net_device *netdev;
+	refcount_t users;
+	struct list_head list;
+	u32 dma_pages_cnt;
+	bool dma_need_sync;
+};
+
+struct pcibios_fwaddrmap {
+	struct list_head list;
+	struct pci_dev *dev;
+	resource_size_t fw_addr[17];
+};
+
+struct pci_check_idx_range {
+	int start;
+	int end;
+};
+
+struct pci_raw_ops {
+	int (*read)(unsigned int, unsigned int, unsigned int, int, int, u32 *);
+	int (*write)(unsigned int, unsigned int, unsigned int, int, int, u32);
+};
+
+struct pci_mmcfg_region {
+	struct list_head list;
+	struct resource res;
+	u64 address;
+	char *virt;
+	u16 segment;
+	u8 start_bus;
+	u8 end_bus;
+	char name[30];
+};
+
+struct pci_mmcfg_hostbridge_probe {
+	u32 bus;
+	u32 devfn;
+	u32 vendor;
+	u32 device;
+	const char * (*probe)();
+};
+
+struct acpi_table_mcfg {
+	struct acpi_table_header header;
+	u8 reserved[8];
+};
+
+struct acpi_mcfg_allocation {
+	u64 address;
+	u16 pci_segment;
+	u8 start_bus_number;
+	u8 end_bus_number;
+	u32 reserved;
+};
+
+typedef bool (*check_reserved_t)(u64, u64, enum e820_type);
+
+struct pci_root_info {
+	struct acpi_pci_root_info common;
+	struct pci_sysdata sd;
+	bool mcfg_added;
+	u8 start_bus;
+	u8 end_bus;
+};
+
+struct irq_info___2 {
+	u8 bus;
+	u8 devfn;
+	struct {
+		u8 link;
+		u16 bitmap;
+	} __attribute__((packed)) irq[4];
+	u8 slot;
+	u8 rfu;
+};
+
+struct irq_routing_table {
+	u32 signature;
+	u16 version;
+	u16 size;
+	u8 rtr_bus;
+	u8 rtr_devfn;
+	u16 exclusive_irqs;
+	u16 rtr_vendor;
+	u16 rtr_device;
+	u32 miniport_data;
+	u8 rfu[11];
+	u8 checksum;
+	struct irq_info___2 slots[0];
+};
+
+struct irq_router {
+	char *name;
+	u16 vendor;
+	u16 device;
+	int (*get)(struct pci_dev *, struct pci_dev *, int);
+	int (*set)(struct pci_dev *, struct pci_dev *, int, int);
+	int (*lvl)(struct pci_dev *, struct pci_dev *, int, int);
+};
+
+struct irq_router_handler {
+	u16 vendor;
+	int (*probe)(struct irq_router *, struct pci_dev *, u16);
+};
+
+struct irt_routing_table {
+	u32 signature;
+	u8 size;
+	u8 used;
+	u16 exclusive_irqs;
+	struct irq_info___2 slots[0];
+};
+
+enum pci_bf_sort_state {
+	pci_bf_sort_default = 0,
+	pci_force_nobf = 1,
+	pci_force_bf = 2,
+	pci_dmi_bf = 3,
+};
+
+struct pci_setup_rom {
+	struct setup_data data;
+	uint16_t vendor;
+	uint16_t devid;
+	uint64_t pcilen;
+	unsigned long segment;
+	unsigned long bus;
+	unsigned long device;
+	unsigned long function;
+	uint8_t romdata[0];
+};
+
+struct pci_root_res {
+	struct list_head list;
+	struct resource res;
+};
+
+struct pci_root_info___2 {
+	struct list_head list;
+	char name[12];
+	struct list_head resources;
+	struct resource busn;
+	int node;
+	int link;
+};
+
+struct amd_hostbridge {
+	u32 bus;
+	u32 slot;
+	u32 device;
+};
+
+struct saved_msr;
+
+struct saved_msrs {
+	unsigned int num;
+	struct saved_msr *array;
+};
+
+struct saved_context {
+	struct pt_regs regs;
+	u16 ds;
+	u16 es;
+	u16 fs;
+	u16 gs;
+	unsigned long kernelmode_gs_base;
+	unsigned long usermode_gs_base;
+	unsigned long fs_base;
+	unsigned long cr0;
+	unsigned long cr2;
+	unsigned long cr3;
+	unsigned long cr4;
+	u64 misc_enable;
+	struct saved_msrs saved_msrs;
+	unsigned long efer;
+	u16 gdt_pad;
+	struct desc_ptr gdt_desc;
+	u16 idt_pad;
+	struct desc_ptr idt;
+	u16 ldt;
+	u16 tss;
+	unsigned long tr;
+	unsigned long safety;
+	unsigned long return_address;
+	bool misc_enable_saved;
+} __attribute__((packed));
+
+struct saved_msr {
+	bool valid;
+	struct msr_info info;
+};
+
+typedef int (*pm_cpu_match_t)(const struct x86_cpu_id *);
+
+struct msr_enumeration {
+	u32 msr_no;
+	u32 feature;
+};
+
+typedef struct elf32_hdr Elf32_Ehdr;
+
+typedef struct elf32_phdr Elf32_Phdr;
+
+typedef struct elf64_phdr Elf64_Phdr;
+
+typedef struct elf32_note Elf32_Nhdr;
+
+struct compress_format {
+	unsigned char magic[2];
+	const char *name;
+	decompress_fn decompressor;
+};
+
+enum cpio_fields {
+	C_MAGIC = 0,
+	C_INO = 1,
+	C_MODE = 2,
+	C_UID = 3,
+	C_GID = 4,
+	C_NLINK = 5,
+	C_MTIME = 6,
+	C_FILESIZE = 7,
+	C_MAJ = 8,
+	C_MIN = 9,
+	C_RMAJ = 10,
+	C_RMIN = 11,
+	C_NAMESIZE = 12,
+	C_CHKSUM = 13,
+	C_NFIELDS = 14,
+};
+
+struct fprop_local_single {
+	unsigned long events;
+	unsigned int period;
+	raw_spinlock_t lock;
+};
+
+struct ida_bitmap {
+	unsigned long bitmap[16];
+};
+
+struct klist_waiter {
+	struct list_head list;
+	struct klist_node *node;
+	struct task_struct *process;
+	int woken;
+};
+
+struct uevent_sock {
+	struct list_head list;
+	struct sock *sk;
+};
+
+typedef void (*btf_trace_ma_op)(void *, const char *, struct ma_state *);
+
+typedef void (*btf_trace_ma_read)(void *, const char *, struct ma_state *);
+
+typedef void (*btf_trace_ma_write)(void *, const char *, struct ma_state *, unsigned long, void *);
+
+enum maple_type {
+	maple_dense = 0,
+	maple_leaf_64 = 1,
+	maple_range_64 = 2,
+	maple_arange_64 = 3,
+};
+
+struct maple_pnode;
+
+struct maple_metadata {
+	unsigned char end;
+	unsigned char gap;
+};
+
+struct maple_range_64 {
+	struct maple_pnode *parent;
+	unsigned long pivot[15];
+	union {
+		void __attribute__((btf_type_tag("rcu"))) *slot[16];
+		struct {
+			void __attribute__((btf_type_tag("rcu"))) *pad[15];
+			struct maple_metadata meta;
+		};
+	};
+};
+
+struct maple_arange_64 {
+	struct maple_pnode *parent;
+	unsigned long pivot[9];
+	void __attribute__((btf_type_tag("rcu"))) *slot[10];
+	unsigned long gap[10];
+	struct maple_metadata meta;
+};
+
+struct maple_node {
+	union {
+		struct {
+			struct maple_pnode *parent;
+			void __attribute__((btf_type_tag("rcu"))) *slot[31];
+		};
+		struct {
+			void *pad;
+			struct callback_head rcu;
+			struct maple_enode *piv_parent;
+			unsigned char parent_slot;
+			enum maple_type type;
+			unsigned char slot_len;
+			unsigned int ma_flags;
+		};
+		struct maple_range_64 mr64;
+		struct maple_arange_64 ma64;
+		struct maple_alloc alloc;
+	};
+};
+
+struct trace_event_raw_ma_op {
+	struct trace_entry ent;
+	const char *fn;
+	unsigned long min;
+	unsigned long max;
+	unsigned long index;
+	unsigned long last;
+	void *node;
+	char __data[0];
+};
+
+struct trace_event_raw_ma_read {
+	struct trace_entry ent;
+	const char *fn;
+	unsigned long min;
+	unsigned long max;
+	unsigned long index;
+	unsigned long last;
+	void *node;
+	char __data[0];
+};
+
+struct trace_event_raw_ma_write {
+	struct trace_entry ent;
+	const char *fn;
+	unsigned long min;
+	unsigned long max;
+	unsigned long index;
+	unsigned long last;
+	unsigned long piv;
+	void *val;
+	void *node;
+	char __data[0];
+};
+
+struct maple_topiary {
+	struct maple_pnode *parent;
+	struct maple_enode *next;
+};
+
+struct ma_wr_state {
+	struct ma_state *mas;
+	struct maple_node *node;
+	unsigned long r_min;
+	unsigned long r_max;
+	enum maple_type type;
+	unsigned char offset_end;
+	unsigned char node_end;
+	unsigned long *pivots;
+	unsigned long end_piv;
+	void __attribute__((btf_type_tag("rcu"))) **slots;
+	void *entry;
+	void *content;
+};
+
+struct maple_big_node {
+	struct maple_pnode *parent;
+	unsigned long pivot[33];
+	union {
+		struct maple_enode *slot[34];
+		struct {
+			unsigned long padding[21];
+			unsigned long gap[21];
+		};
+	};
+	unsigned char b_end;
+	enum maple_type type;
+};
+
+struct ma_topiary;
+
+struct maple_subtree_state {
+	struct ma_state *orig_l;
+	struct ma_state *orig_r;
+	struct ma_state *l;
+	struct ma_state *m;
+	struct ma_state *r;
+	struct ma_topiary *free;
+	struct ma_topiary *destroy;
+	struct maple_big_node *bn;
+};
+
+struct ma_topiary {
+	struct maple_enode *head;
+	struct maple_enode *tail;
+	struct maple_tree *mtree;
+};
+
+struct trace_event_data_offsets_ma_op {};
+
+struct trace_event_data_offsets_ma_read {};
+
+struct trace_event_data_offsets_ma_write {};
+
+struct radix_tree_preload {
+	local_lock_t lock;
+	unsigned int nr;
+	struct xa_node *nodes;
+};
+
+struct printf_spec {
+	unsigned int type: 8;
+	int field_width: 24;
+	unsigned int flags: 8;
+	unsigned int base: 8;
+	int precision: 16;
+};
+
+struct page_flags_fields {
+	int width;
+	int shift;
+	int mask;
+	const struct printf_spec *spec;
+	const char *name;
+};
+
+enum format_type {
+	FORMAT_TYPE_NONE = 0,
+	FORMAT_TYPE_WIDTH = 1,
+	FORMAT_TYPE_PRECISION = 2,
+	FORMAT_TYPE_CHAR = 3,
+	FORMAT_TYPE_STR = 4,
+	FORMAT_TYPE_PTR = 5,
+	FORMAT_TYPE_PERCENT_CHAR = 6,
+	FORMAT_TYPE_INVALID = 7,
+	FORMAT_TYPE_LONG_LONG = 8,
+	FORMAT_TYPE_ULONG = 9,
+	FORMAT_TYPE_LONG = 10,
+	FORMAT_TYPE_UBYTE = 11,
+	FORMAT_TYPE_BYTE = 12,
+	FORMAT_TYPE_USHORT = 13,
+	FORMAT_TYPE_SHORT = 14,
+	FORMAT_TYPE_UINT = 15,
+	FORMAT_TYPE_INT = 16,
+	FORMAT_TYPE_SIZE_T = 17,
+	FORMAT_TYPE_PTRDIFF = 18,
+};
+
+enum {
+	st_wordstart = 0,
+	st_wordcmp = 1,
+	st_wordskip = 2,
+};
+
+enum {
+	st_wordstart___2 = 0,
+	st_wordcmp___2 = 1,
+	st_wordskip___2 = 2,
+	st_bufcpy = 3,
+};
+
+enum reg_type {
+	REG_TYPE_RM = 0,
+	REG_TYPE_REG = 1,
+	REG_TYPE_INDEX = 2,
+	REG_TYPE_BASE = 3,
+};
+
+enum insn_mmio_type {
+	INSN_MMIO_DECODE_FAILED = 0,
+	INSN_MMIO_WRITE = 1,
+	INSN_MMIO_WRITE_IMM = 2,
+	INSN_MMIO_READ = 3,
+	INSN_MMIO_READ_ZERO_EXTEND = 4,
+	INSN_MMIO_READ_SIGN_EXTEND = 5,
+	INSN_MMIO_MOVS = 6,
+};
+
+#ifndef BPF_NO_PRESERVE_ACCESS_INDEX
+#pragma clang attribute pop
+#endif
+
+#endif /* __VMLINUX_H__ */
