From c4db6c6cc875ad8fe1248ace1883852f65bb3065 Mon Sep 17 00:00:00 2001 From: Roberto Scolaro Date: Thu, 12 Oct 2023 17:28:53 +0000 Subject: [PATCH] update(driver/modern_bpf): vmlinux + overlay definitions 5.15.0-76-generic aarch64 Signed-off-by: Roberto Scolaro --- .../modern_bpf/definitions/aarch64/overlay.h | 299 + .../modern_bpf/definitions/aarch64/vmlinux.h | 69124 +++++++++------- driver/modern_bpf/definitions/vmlinux.h | 1 + 3 files changed, 37905 insertions(+), 31519 deletions(-) create mode 100644 driver/modern_bpf/definitions/aarch64/overlay.h diff --git a/driver/modern_bpf/definitions/aarch64/overlay.h b/driver/modern_bpf/definitions/aarch64/overlay.h new file mode 100644 index 0000000000..79d4717e59 --- /dev/null +++ b/driver/modern_bpf/definitions/aarch64/overlay.h @@ -0,0 +1,299 @@ +#ifndef __OVERLAY_H__ +#define __OVERLAY_H__ + +#ifndef BPF_NO_PRESERVE_ACCESS_INDEX +#pragma clang attribute push (__attribute__((preserve_access_index)), apply_to = record) +#endif + +/*=============================== ARCH ARM64: 5.15.0-76-generic ===========================*/ + +struct ovl_config { + char *lowerdir; + char *upperdir; + char *workdir; + bool default_permissions; + bool redirect_dir; + bool redirect_follow; + const char *redirect_mode; + bool index; + bool uuid; + bool nfs_export; + int xino; + bool metacopy; + bool userxattr; + bool ovl_volatile; +}; + +struct ovl_sb { + struct super_block *sb; + dev_t pseudo_dev; + bool bad_uuid; + bool is_lower; +}; + +struct ovl_layer { + struct vfsmount *mnt; + struct inode *trap; + struct ovl_sb *fs; + int idx; + int fsid; +}; + +struct ovl_path { + const struct ovl_layer *layer; + struct dentry *dentry; +}; + +struct ovl_fs { + unsigned int numlayer; + unsigned int numfs; + const struct ovl_layer *layers; + struct ovl_sb *fs; + struct dentry *workbasedir; + struct dentry *workdir; + struct dentry *indexdir; + long int namelen; + struct ovl_config config; + const struct cred *creator_cred; + bool tmpfile; + bool noxattr; + bool upperdir_locked; + bool workdir_locked; + bool share_whiteout; + struct inode *workbasedir_trap; + struct inode *workdir_trap; + struct inode *indexdir_trap; + int xino_mode; + atomic_long_t last_ino; + struct dentry *whiteout; + errseq_t errseq; +}; + +struct ovl_entry { + union { + struct { + long unsigned int flags; + }; + struct callback_head rcu; + }; + unsigned int numlower; + struct ovl_path lowerstack[0]; +}; + +struct ovl_dir_cache; + +struct ovl_inode { + union { + struct ovl_dir_cache *cache; + struct inode *lowerdata; + }; + const char *redirect; + u64 version; + long unsigned int flags; + struct inode vfs_inode; + struct dentry *__upperdentry; + struct ovl_path lowerpath; + struct mutex lock; +}; + +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_METACOPY = 6, + OVL_XATTR_PROTATTR = 7, +}; + +enum ovl_inode_flag { + OVL_IMPURE = 0, + OVL_WHITEOUTS = 1, + OVL_INDEX = 2, + OVL_UPPERDATA = 3, + OVL_CONST_INO = 4, +}; + +enum ovl_entry_flag { + OVL_E_UPPER_ALIAS = 0, + OVL_E_OPAQUE = 1, + OVL_E_CONNECTED = 2, +}; + +enum { + OVL_XINO_OFF = 0, + OVL_XINO_AUTO = 1, + OVL_XINO_ON = 2, +}; + +struct ovl_inode_params { + struct inode *newinode; + struct dentry *upperdentry; + struct ovl_path *lowerpath; + bool index; + unsigned int numlower; + char *redirect; + struct dentry *lowerdata; +}; + +struct ovl_cattr { + dev_t rdev; + umode_t mode; + const char *link; + struct dentry *hardlink; +}; + +enum { + OPT_LOWERDIR = 0, + OPT_UPPERDIR = 1, + OPT_WORKDIR = 2, + OPT_DEFAULT_PERMISSIONS___2 = 3, + OPT_REDIRECT_DIR = 4, + OPT_INDEX_ON = 5, + OPT_INDEX_OFF = 6, + OPT_UUID_ON = 7, + OPT_UUID_OFF = 8, + OPT_NFS_EXPORT_ON = 9, + OPT_USERXATTR = 10, + OPT_NFS_EXPORT_OFF = 11, + OPT_XINO_ON = 12, + OPT_XINO_OFF = 13, + OPT_XINO_AUTO = 14, + OPT_METACOPY_ON = 15, + OPT_METACOPY_OFF = 16, + OPT_VOLATILE = 17, + OPT_ERR___2 = 18, +}; + +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_lookup_data { + struct super_block *sb; + struct qstr name; + bool is_dir; + bool opaque; + bool stop; + bool last; + char *redirect; + bool metacopy; +}; + +struct ovl_aio_req { + struct kiocb iocb; + refcount_t ref; + struct kiocb *orig_iocb; + struct fd fd; +}; + +enum ovl_copyop { + OVL_COPY = 0, + OVL_CLONE = 1, + OVL_DEDUPE = 2, +}; + +struct ovl_dir_cache { + long int refcount; + u64 version; + struct list_head entries; + struct rb_root root; +}; + +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_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_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_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; +}; + +struct ovl_cu_creds { + const struct cred *old; + struct cred *new; +}; + +/*=============================== ARCH ARM64: 5.15.0-76-generic ===========================*/ + +#ifndef BPF_NO_PRESERVE_ACCESS_INDEX +#pragma clang attribute pop +#endif + +#endif /* __OVERLAY_H__ */ diff --git a/driver/modern_bpf/definitions/aarch64/vmlinux.h b/driver/modern_bpf/definitions/aarch64/vmlinux.h index f353b7d7ba..e15edba6af 100644 --- a/driver/modern_bpf/definitions/aarch64/vmlinux.h +++ b/driver/modern_bpf/definitions/aarch64/vmlinux.h @@ -5,7 +5,7 @@ #pragma clang attribute push (__attribute__((preserve_access_index)), apply_to = record) #endif -/*=============================== ARCH ARM64: 5.11.0-1022-aws ===========================*/ +/*=============================== ARCH ARM64: 5.15.0-76-generic ===========================*/ typedef signed char __s8; @@ -68,8 +68,14 @@ typedef int __kernel_timer_t; typedef int __kernel_clockid_t; +typedef __u16 __be16; + typedef __u32 __le32; +typedef __u32 __be32; + +typedef __u32 __wsum; + typedef unsigned int __poll_t; typedef u32 __kernel_dev_t; @@ -108,8 +114,6 @@ typedef unsigned int fmode_t; typedef u64 phys_addr_t; -typedef phys_addr_t resource_size_t; - typedef long unsigned int irq_hw_number_t; typedef struct { @@ -164,6 +168,14 @@ struct static_key { }; }; +struct static_key_true { + struct static_key key; +}; + +struct static_key_false { + struct static_key key; +}; + typedef int (*initcall_t)(); typedef int initcall_entry_t; @@ -196,6 +208,7 @@ struct file_system_type { 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; }; @@ -205,16 +218,6 @@ struct obs_kernel_param { int early; }; -typedef bool pstate_check_t(long unsigned int); - -struct static_key_true { - struct static_key key; -}; - -struct static_key_false { - struct static_key key; -}; - typedef atomic64_t atomic_long_t; struct qspinlock { @@ -349,11 +352,8 @@ struct file_operations { int (*fadvise)(struct file *, loff_t, loff_t, int); }; -struct notifier_block; - -struct atomic_notifier_head { - spinlock_t lock; - struct notifier_block *head; +struct static_call_key { + void *func; }; enum system_states { @@ -366,18 +366,6 @@ enum system_states { SYSTEM_SUSPEND = 6, }; -struct taint_flag { - char c_true; - char c_false; - bool module; -}; - -enum ftrace_dump_mode { - DUMP_NONE = 0, - DUMP_ALL = 1, - DUMP_ORIG = 2, -}; - typedef __s64 time64_t; struct __kernel_timespec { @@ -385,11 +373,6 @@ struct __kernel_timespec { long long int tv_nsec; }; -struct timezone { - int tz_minuteswest; - int tz_dsttime; -}; - struct timespec64 { time64_t tv_sec; long int tv_nsec; @@ -402,32 +385,6 @@ struct bug_entry { short unsigned int flags; }; -enum ftr_type { - FTR_EXACT = 0, - FTR_LOWER_SAFE = 1, - FTR_HIGHER_SAFE = 2, - FTR_HIGHER_OR_ZERO_SAFE = 3, -}; - -struct arm64_ftr_bits { - bool sign; - bool visible; - bool strict; - enum ftr_type type; - u8 shift; - u8 width; - s64 safe_val; -}; - -struct arm64_ftr_reg { - const char *name; - u64 strict_mask; - u64 user_mask; - u64 sys_val; - u64 user_val; - const struct arm64_ftr_bits *ftr_bits; -}; - struct cpumask { long unsigned int bits[4]; }; @@ -484,6 +441,7 @@ struct pollfd { }; struct restart_block { + long unsigned int arch_data; long int (*fn)(struct restart_block *); union { struct { @@ -806,7 +764,7 @@ struct optimistic_spin_queue { struct mutex { atomic_long_t owner; - spinlock_t wait_lock; + raw_spinlock_t wait_lock; struct optimistic_spin_queue osq; struct list_head wait_list; }; @@ -821,6 +779,13 @@ struct page_frag { struct kmap_ctrl {}; +struct timer_list { + struct hlist_node entry; + long unsigned int expires; + void (*function)(struct timer_list *); + u32 flags; +}; + struct cpu_context { long unsigned int x19; long unsigned int x20; @@ -888,8 +853,8 @@ struct thread_struct { struct debug_info debug; struct ptrauth_keys_user keys_user; struct ptrauth_keys_kernel keys_kernel; - u64 sctlr_tcf0; - u64 gcr_user_excl; + u64 mte_ctrl; + u64 sctlr_user; long: 64; }; @@ -969,9 +934,13 @@ struct uprobe_task; struct vm_struct; +struct bpf_local_storage; + +struct bpf_run_ctx; + struct task_struct { struct thread_info thread_info; - volatile long int state; + unsigned int __state; void *stack; refcount_t usage; unsigned int flags; @@ -999,8 +968,11 @@ struct task_struct { long: 64; struct sched_entity se; struct sched_rt_entity rt; - struct task_group *sched_task_group; struct sched_dl_entity dl; + struct rb_node core_node; + long unsigned int core_cookie; + unsigned int core_occupation; + struct task_group *sched_task_group; struct uclamp_se uclamp_req[2]; struct uclamp_se uclamp[2]; struct hlist_head preempt_notifiers; @@ -1008,6 +980,7 @@ struct task_struct { unsigned int policy; int nr_cpus_allowed; const cpumask_t *cpus_ptr; + cpumask_t *user_cpus_ptr; cpumask_t cpus_mask; void *migration_pending; short unsigned int migration_disabled; @@ -1035,7 +1008,7 @@ struct task_struct { unsigned int sched_contributes_to_load: 1; unsigned int sched_migrated: 1; unsigned int sched_psi_wake_requeue: 1; - int: 28; + long: 28; unsigned int sched_remote_wakeup: 1; unsigned int in_execve: 1; unsigned int in_iowait: 1; @@ -1044,6 +1017,7 @@ struct task_struct { unsigned int frozen: 1; unsigned int use_memdelay: 1; unsigned int in_memstall: 1; + unsigned int in_eventfd: 1; long unsigned int atomic_flags; struct restart_block restart_block; pid_t pid; @@ -1063,6 +1037,7 @@ struct task_struct { struct completion *vfork_done; int *set_child_tid; int *clear_child_tid; + void *pf_io_worker; u64 utime; u64 stime; u64 gtime; @@ -1111,6 +1086,7 @@ struct task_struct { struct rb_root_cached pi_waiters; struct task_struct *pi_top_task; struct rt_mutex_waiter *pi_blocked_on; + unsigned int in_ubsan; void *journal_info; struct bio_list *bio_list; struct blk_plug *plug; @@ -1193,86 +1169,17 @@ struct task_struct { struct kmap_ctrl kmap_ctrl; 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 *bpf_storage; + struct bpf_run_ctx *bpf_ctx; struct llist_head kretprobe_instances; long: 64; struct thread_struct thread; }; -struct secondary_data { - void *stack; - struct task_struct *task; - long int status; -}; - -enum arch_timer_erratum_match_type { - ate_match_dt = 0, - ate_match_local_cap_id = 1, - ate_match_acpi_oem_info = 2, -}; - -struct clock_event_device; - -struct arch_timer_erratum_workaround { - enum arch_timer_erratum_match_type match_type; - const void *id; - const char *desc; - u32 (*read_cntp_tval_el0)(); - u32 (*read_cntv_tval_el0)(); - u64 (*read_cntpct_el0)(); - u64 (*read_cntvct_el0)(); - int (*set_next_event_phys)(long unsigned int, struct clock_event_device *); - int (*set_next_event_virt)(long unsigned int, struct clock_event_device *); - bool disable_compat_vdso; -}; - -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)(long unsigned int, 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; - long unsigned int 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 *); - long unsigned int min_delta_ticks; - long unsigned int 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; -}; - typedef s32 compat_long_t; typedef u32 compat_uptr_t; @@ -1346,224 +1253,9 @@ typedef struct { pteval_t pgprot; } pgprot_t; -enum module_state { - MODULE_STATE_LIVE = 0, - MODULE_STATE_COMING = 1, - MODULE_STATE_GOING = 2, - MODULE_STATE_UNFORMED = 3, -}; - -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; - 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; -}; - -struct module_param_attrs; - -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_layout { - void *base; - unsigned int size; - unsigned int text_size; - unsigned int ro_size; - unsigned int ro_after_init_size; - struct mod_tree_node mtn; -}; - -struct mod_plt_sec { - int plt_shndx; - int plt_num_entries; - int plt_max_entries; -}; - -struct plt_entry; - -struct mod_arch_specific { - struct mod_plt_sec core; - struct mod_plt_sec init; - struct plt_entry *ftrace_trampolines; -}; - -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 module_attribute; - -struct kernel_param; - -struct exception_table_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 error_injection_entry; - -struct module { - enum module_state state; - struct list_head list; - char name[56]; - struct module_kobject mkobj; - struct module_attribute *modinfo_attrs; - const char *version; - const char *srcversion; - 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; - const struct kernel_symbol *unused_syms; - const s32 *unused_crcs; - unsigned int num_unused_syms; - unsigned int num_unused_gpl_syms; - const struct kernel_symbol *unused_gpl_syms; - const s32 *unused_gpl_crcs; - bool sig_ok; - bool async_probe_requested; - const struct kernel_symbol *gpl_future_syms; - const s32 *gpl_future_crcs; - unsigned int num_gpl_future_syms; - unsigned int num_exentries; - struct exception_table_entry *extable; - int (*init)(); - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - struct module_layout core_layout; - struct module_layout init_layout; - struct mod_arch_specific arch; - long unsigned int taints; - unsigned int num_bugs; - struct list_head bug_list; - struct bug_entry *bug_table; - struct mod_kallsyms *kallsyms; - struct mod_kallsyms core_kallsyms; - struct module_sect_attrs *sect_attrs; - struct module_notes_attrs *notes_attrs; - char *args; - void *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; - unsigned int num_ftrace_callsites; - long unsigned int *ftrace_callsites; - void *kprobes_text_start; - unsigned int kprobes_text_size; - long unsigned int *kprobe_blacklist; - unsigned int num_kprobe_blacklist; - struct list_head source_list; - struct list_head target_list; - void (*exit)(); - atomic_t refcnt; - struct error_injection_entry *ei_funcs; - unsigned int num_ei_funcs; - long: 32; - long: 64; - long: 64; - long: 64; - long: 64; -}; - -enum pcpu_fc { - PCPU_FC_AUTO = 0, - PCPU_FC_EMBED = 1, - PCPU_FC_PAGE = 2, - PCPU_FC_NR = 3, -}; - -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; -}; +typedef struct { + u64 key[2]; +} siphash_key_t; enum perf_event_state { PERF_EVENT_STATE_DEAD = 4294967292, @@ -1625,7 +1317,11 @@ struct perf_event_attr { __u64 aux_output: 1; __u64 cgroup: 1; __u64 text_poke: 1; - __u64 __reserved_1: 30; + __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; @@ -1653,6 +1349,7 @@ struct perf_event_attr { __u16 __reserved_2; __u32 aux_sample_size; __u32 __reserved_3; + __u64 sig_data; }; struct hw_perf_event_extra { @@ -1782,6 +1479,8 @@ struct pid_namespace; struct bpf_prog; +struct trace_event_call; + struct event_filter; struct perf_cgroup; @@ -1808,7 +1507,6 @@ struct perf_event { u64 total_time_enabled; u64 total_time_running; u64 tstamp; - u64 shadow_ctx_time; struct perf_event_attr attr; u16 header_size; u16 id_header_size; @@ -1833,10 +1531,14 @@ struct perf_event { int rcu_pending; wait_queue_head_t waitq; struct fasync_struct *fasync; - int pending_wakeup; - int pending_kill; - int pending_disable; - struct irq_work pending; + unsigned int pending_wakeup; + unsigned int pending_kill; + unsigned int pending_disable; + unsigned int pending_sigtrap; + long unsigned int 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; @@ -1851,6 +1553,7 @@ struct perf_event { 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; struct ftrace_ops ftrace_ops; @@ -2045,14 +1748,7 @@ struct user_namespace { struct ctl_table_set set; struct ctl_table_header *sysctls; struct ucounts *ucounts; - int ucount_max[10]; -}; - -struct timer_list { - struct hlist_node entry; - long unsigned int expires; - void (*function)(struct timer_list *); - u32 flags; + long int ucount_max[16]; }; struct workqueue_struct; @@ -2070,10 +1766,56 @@ struct rcu_work { struct workqueue_struct *wq; }; +struct rhash_head { + struct rhash_head *next; +}; + +struct rhashtable; + +struct rhashtable_compare_arg { + struct rhashtable *ht; + const void *key; +}; + +typedef u32 (*rht_hashfn_t)(const void *, u32, u32); + +typedef u32 (*rht_obj_hashfn_t)(const void *, u32, u32); + +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 *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; +}; + typedef struct page *pgtable_t; struct address_space; +struct page_pool; + struct dev_pagemap; struct page { @@ -2086,7 +1828,14 @@ struct page { long unsigned int private; }; struct { - long unsigned int dma_addr[2]; + long unsigned int pp_magic; + struct page_pool *pp; + long unsigned int _pp_mapping_pad; + long unsigned int dma_addr; + union { + long unsigned int dma_addr_upper; + atomic_long_t pp_frag_count; + }; }; struct { union { @@ -2191,8 +1940,6 @@ struct hrtimer_cpu_base { struct hrtimer_clock_base clock_base[8]; }; -struct tick_device; - enum node_states { N_POSSIBLE = 0, N_ONLINE = 1, @@ -2256,6 +2003,7 @@ union __sifields { struct { void *_addr; union { + int _trapno; short int _addr_lsb; struct { char _dummy_bnd[8]; @@ -2266,6 +2014,11 @@ union __sifields { char _dummy_pkey[8]; __u32 _pkey; } _addr_pkey; + struct { + long unsigned int _data; + __u32 _type; + __u32 _flags; + } _perf; }; } _sigfault; struct { @@ -2288,21 +2041,12 @@ struct kernel_siginfo { }; }; -struct user_struct { - refcount_t __count; - atomic_t processes; - atomic_t sigpending; - atomic_t fanotify_listeners; - atomic_long_t epoll_watches; - long unsigned int mq_bytes; - long unsigned int locked_shm; - long unsigned int unix_inflight; - atomic_long_t pipe_bufs; - struct hlist_node uidhash_node; +struct ucounts { + struct hlist_node node; + struct user_namespace *ns; kuid_t uid; - atomic_long_t locked_vm; - atomic_t nr_watches; - struct ratelimit_state ratelimit; + atomic_t count; + atomic_long_t ucount[16]; }; struct sigaction { @@ -2457,17 +2201,11 @@ struct signal_struct { struct rseq { __u32 cpu_id_start; __u32 cpu_id; - union { - __u64 ptr64; - __u64 ptr; - } rseq_cs; + __u64 rseq_cs; __u32 flags; - long: 32; long: 64; }; -struct root_domain; - struct rq; struct rq_flags; @@ -2484,6 +2222,7 @@ struct sched_class { 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 *, const struct cpumask *, u32); @@ -2537,7 +2276,6 @@ struct mm_struct { atomic_t membarrier_state; atomic_t mm_users; atomic_t mm_count; - atomic_t has_pinned; atomic_long_t pgtables_bytes; int map_count; spinlock_t page_table_lock; @@ -2605,6 +2343,8 @@ struct kernel_cap_struct { typedef struct kernel_cap_struct kernel_cap_t; +struct user_struct; + struct group_info; struct cred { @@ -2631,6 +2371,7 @@ struct cred { void *security; struct user_struct *user; struct user_namespace *user_ns; + struct ucounts *ucounts; struct group_info *group_info; union { int non_rcu; @@ -2771,6 +2512,10 @@ struct reclaim_state { long unsigned int reclaimed_slab; }; +struct kref { + refcount_t refcount; +}; + struct percpu_counter { raw_spinlock_t lock; s64 count; @@ -2814,6 +2559,7 @@ struct bdi_writeback { 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]; long unsigned int congested; long unsigned int bw_time_stamp; @@ -2829,6 +2575,7 @@ struct bdi_writeback { spinlock_t work_lock; struct list_head work_list; struct delayed_work dwork; + struct delayed_work bw_dwork; long unsigned int dirty_sleep; struct list_head bdi_node; struct percpu_ref refcnt; @@ -2837,6 +2584,8 @@ struct bdi_writeback { 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; @@ -2887,7 +2636,7 @@ struct io_context { struct cgroup; struct css_set { - struct cgroup_subsys_state *subsys[13]; + struct cgroup_subsys_state *subsys[14]; refcount_t refcount; struct css_set *dom_cset; struct cgroup *dfl_cgrp; @@ -2896,12 +2645,13 @@ struct css_set { struct list_head mg_tasks; struct list_head dying_tasks; struct list_head task_iters; - struct list_head e_cset_node[13]; + struct list_head e_cset_node[14]; struct list_head threaded_csets; struct list_head threaded_csets_node; struct hlist_node hlist; struct list_head cgrp_links; - struct list_head mg_preload_node; + 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; @@ -2946,6 +2696,7 @@ struct perf_event_context { struct task_struct *task; u64 time; u64 timestamp; + u64 timeoffset; struct perf_event_context *parent_ctx; u64 parent_gen; u64 generation; @@ -2953,22 +2704,48 @@ struct perf_event_context { int nr_cgroups; void *task_ctx_data; struct callback_head callback_head; + local_t nr_pending; }; struct mempolicy { atomic_t refcnt; short unsigned int mode; short unsigned int flags; - union { - short int preferred_node; - nodemask_t nodes; - } v; + nodemask_t nodes; union { nodemask_t cpuset_mems_allowed; nodemask_t user_nodemask; } w; }; +struct pipe_buffer; + +struct watch_queue; + +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; + bool note_loss; + 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 watch_queue *watch_queue; +}; + struct task_delay_info { raw_spinlock_t lock; unsigned int flags; @@ -3022,7 +2799,6 @@ struct page_counter { long unsigned int low; long unsigned int high; long unsigned int max; - struct page_counter *parent; long unsigned int emin; atomic_long_t min_usage; atomic_long_t children_min_usage; @@ -3031,6 +2807,7 @@ struct page_counter { atomic_long_t children_low_usage; long unsigned int watermark; long unsigned int failcnt; + struct page_counter *parent; }; struct vmpressure { @@ -3044,6 +2821,8 @@ struct vmpressure { struct work_struct work; }; +struct kernfs_node; + struct cgroup_file { struct kernfs_node *kn; long unsigned int notified_at; @@ -3061,6 +2840,13 @@ struct memcg_padding { char x[0]; }; +struct memcg_vmstats { + long int state[42]; + long unsigned int events[99]; + long int state_pending[42]; + long unsigned int events_pending[99]; +}; + enum memcg_kmem_state { KMEM_NONE = 0, KMEM_ALLOCATED = 1, @@ -3141,8 +2927,7 @@ struct mem_cgroup { long: 64; long: 64; struct memcg_padding _pad1_; - atomic_long_t vmstats[41]; - atomic_long_t vmevents[95]; + struct memcg_vmstats vmstats; atomic_long_t memory_events[8]; atomic_long_t memory_events_local[8]; long unsigned int socket_pressure; @@ -3152,12 +2937,9 @@ struct mem_cgroup { enum memcg_kmem_state kmem_state; struct obj_cgroup *objcg; struct list_head objcg_list; - long: 64; - long: 64; struct memcg_padding _pad2_; atomic_t moving_account; struct task_struct *move_lock_task; - struct memcg_vmstats_percpu *vmstats_local; struct memcg_vmstats_percpu *vmstats_percpu; struct list_head cgwb_list; struct wb_domain cgwb_domain; @@ -3166,6 +2948,26 @@ struct mem_cgroup { spinlock_t event_list_lock; struct deferred_split deferred_split_queue; struct mem_cgroup_per_node *nodeinfo[0]; + long: 64; +}; + +struct kset; + +struct kobj_type; + +struct kobject { + const char *name; + struct list_head entry; + struct kobject *parent; + struct kset *kset; + 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; }; struct blk_integrity_profile; @@ -3193,6 +2995,33 @@ struct blk_rq_stat { u64 batch; }; +struct sbitmap_word; + +struct sbitmap { + unsigned int depth; + unsigned int shift; + unsigned int map_nr; + bool round_robin; + struct sbitmap_word *map; + unsigned int *alloc_hint; +}; + +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; +}; + +enum blk_bounce { + BLK_BOUNCE_NONE = 0, + BLK_BOUNCE_HIGH = 1, +}; + enum blk_zoned_model { BLK_ZONED_NONE = 0, BLK_ZONED_HA = 1, @@ -3200,7 +3029,7 @@ enum blk_zoned_model { }; struct queue_limits { - long unsigned int bounce_pfn; + enum blk_bounce bounce; long unsigned int seg_boundary_mask; long unsigned int virt_boundary_mask; unsigned int max_hw_sectors; @@ -3220,6 +3049,7 @@ struct queue_limits { unsigned int max_zone_append_sectors; unsigned int discard_granularity; unsigned int discard_alignment; + unsigned int zone_write_granularity; short unsigned int max_segments; short unsigned int max_integrity_segments; short unsigned int max_discard_segments; @@ -3229,15 +3059,6 @@ struct queue_limits { enum blk_zoned_model zoned; }; -struct bsg_ops; - -struct bsg_class_device { - struct device *class_dev; - int minor; - struct request_queue *queue; - const struct bsg_ops *ops; -}; - typedef void *mempool_alloc_t(gfp_t, void *); typedef void mempool_free_t(void *, void *); @@ -3255,17 +3076,22 @@ struct mempool_s { 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 *cache; mempool_t bio_pool; mempool_t bvec_pool; mempool_t bio_integrity_pool; mempool_t bvec_integrity_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; }; struct request; @@ -3282,6 +3108,8 @@ struct blk_mq_ctx; struct blk_mq_hw_ctx; +struct gendisk; + struct blk_keyslot_manager; struct blk_stat_callback; @@ -3307,19 +3135,17 @@ struct request_queue { unsigned int queue_depth; struct blk_mq_hw_ctx **queue_hw_ctx; unsigned int nr_hw_queues; - struct backing_dev_info *backing_dev_info; void *queuedata; long unsigned int queue_flags; atomic_t pm_only; int id; - gfp_t bounce_gfp; spinlock_t queue_lock; + struct gendisk *disk; struct kobject kobj; struct kobject *mq_kobj; struct blk_integrity integrity; struct device *dev; enum rpm_status rpm_status; - unsigned int nr_pending; long unsigned int nr_requests; unsigned int dma_pad_mask; unsigned int dma_alignment; @@ -3331,6 +3157,8 @@ struct request_queue { struct timer_list timeout; struct work_struct timeout_work; atomic_t nr_active_requests_shared_sbitmap; + struct sbitmap_queue sched_bitmap_tags; + struct sbitmap_queue sched_breserved_tags; struct list_head icq_list; long unsigned int blkcg_pols[1]; struct blkcg_gq *root_blkg; @@ -3342,8 +3170,6 @@ struct request_queue { long unsigned int *seq_zones_wlock; unsigned int max_open_zones; unsigned int max_active_zones; - unsigned int sg_timeout; - unsigned int sg_reserved_size; int node; struct mutex debugfs_mutex; struct blk_trace *blk_trace; @@ -3356,7 +3182,6 @@ struct request_queue { struct list_head unused_hctx_list; spinlock_t unused_hctx_lock; int mq_freeze_depth; - struct bsg_class_device bsg_dev; struct throtl_data *td; struct callback_head callback_head; wait_queue_head_t mq_freeze_wq; @@ -3414,10 +3239,7 @@ struct vm_struct { const void *caller; }; -union thread_union { - struct task_struct task; - long unsigned int stack[2048]; -}; +struct bpf_run_ctx {}; struct kstat { u32 result_mask; @@ -3440,23 +3262,6 @@ struct kstat { u64 mnt_id; }; -typedef u32 probe_opcode_t; - -typedef void probes_handler_t(u32, long int, struct pt_regs *); - -struct arch_probe_insn { - probe_opcode_t *insn; - pstate_check_t *pstate_cc; - probes_handler_t *handler; - long unsigned int restore; -}; - -typedef u32 kprobe_opcode_t; - -struct arch_specific_insn { - struct arch_probe_insn api; -}; - struct return_instance { struct uprobe *uprobe; long unsigned int func; @@ -3473,12 +3278,12 @@ 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; struct rw_semaphore i_mmap_rwsem; long unsigned int nrpages; - long unsigned int nrexceptional; long unsigned int writeback_index; const struct address_space_operations *a_ops; long unsigned int flags; @@ -3488,8 +3293,93 @@ struct address_space { void *private_data; }; +enum dma_data_direction { + DMA_BIDIRECTIONAL = 0, + DMA_TO_DEVICE = 1, + DMA_FROM_DEVICE = 2, + DMA_NONE = 3, +}; + +struct page_pool_params { + unsigned int flags; + unsigned int order; + unsigned int pool_size; + int nid; + struct device *dev; + enum dma_data_direction dma_dir; + unsigned int max_len; + unsigned int offset; +}; + +struct pp_alloc_cache { + u32 count; + struct page *cache[128]; +}; + +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 page_pool { + struct page_pool_params p; + struct delayed_work release_dw; + void (*disconnect)(void *); + long unsigned int defer_start; + long unsigned int defer_warn; + u32 pages_state_hold_cnt; + unsigned int frag_offset; + struct page *frag_page; + long int frag_users; + long: 64; + long: 64; + 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; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; +}; + struct vmem_altmap { - const long unsigned int base_pfn; + long unsigned int base_pfn; const long unsigned int end_pfn; const long unsigned int reserve; long unsigned int free; @@ -3513,8 +3403,7 @@ struct dev_pagemap_ops; struct dev_pagemap { struct vmem_altmap altmap; - struct percpu_ref *ref; - struct percpu_ref internal_ref; + struct percpu_ref ref; struct completion done; enum memory_type type; unsigned int flags; @@ -3592,7 +3481,8 @@ struct anon_vma { struct anon_vma *root; struct rw_semaphore rwsem; atomic_t refcount; - unsigned int degree; + long unsigned int num_children; + long unsigned int num_active_vmas; struct anon_vma *parent; struct rb_root_cached rb_root; }; @@ -3611,11 +3501,11 @@ struct vm_operations_struct { void (*open)(struct vm_area_struct *); void (*close)(struct vm_area_struct *); int (*may_split)(struct vm_area_struct *, long unsigned int); - int (*mremap)(struct vm_area_struct *, long unsigned int); + int (*mremap)(struct vm_area_struct *); int (*mprotect)(struct vm_area_struct *, long unsigned int, long unsigned int, long unsigned int); vm_fault_t (*fault)(struct vm_fault *); vm_fault_t (*huge_fault)(struct vm_fault *, enum page_entry_size); - void (*map_pages)(struct vm_fault *, long unsigned int, long unsigned int); + vm_fault_t (*map_pages)(struct vm_fault *, long unsigned int, long unsigned int); long unsigned int (*pagesize)(struct vm_area_struct *); vm_fault_t (*page_mkwrite)(struct vm_fault *); vm_fault_t (*pfn_mkwrite)(struct vm_fault *); @@ -3650,15 +3540,33 @@ struct linux_binfmt { long unsigned int min_coredump; }; +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, +}; + struct vm_fault { - struct vm_area_struct *vma; - unsigned int flags; - gfp_t gfp_mask; - long unsigned int pgoff; - long unsigned int address; + const struct { + struct vm_area_struct *vma; + gfp_t gfp_mask; + long unsigned int pgoff; + long unsigned int address; + }; + enum fault_flag flags; pmd_t *pmd; pud_t *pud; - pte_t orig_pte; + union { + pte_t orig_pte; + pmd_t orig_pmd; + }; struct page *cow_page; struct page *page; pte_t *pte; @@ -3718,7 +3626,8 @@ enum node_stat_item { NR_FOLL_PIN_RELEASED = 35, NR_KERNEL_STACK_KB = 36, NR_PAGETABLE = 37, - NR_VM_NODE_STAT_ITEMS = 38, + NR_SWAPCACHE = 38, + NR_VM_NODE_STAT_ITEMS = 39, }; enum lru_list { @@ -3743,7 +3652,9 @@ struct lruvec { struct pglist_data *pgdat; }; -struct per_cpu_pageset; +struct per_cpu_pages; + +struct per_cpu_zonestat; struct zone { long unsigned int _watermark[3]; @@ -3752,25 +3663,31 @@ struct zone { long int lowmem_reserve[5]; int node; struct pglist_data *zone_pgdat; - struct per_cpu_pageset *pageset; + struct per_cpu_pages *per_cpu_pageset; + struct per_cpu_zonestat *per_cpu_zonestats; int pageset_high; int pageset_batch; long unsigned int zone_start_pfn; atomic_long_t managed_pages; long unsigned int spanned_pages; long unsigned int present_pages; + long unsigned int present_early_pages; + long unsigned int cma_pages; const char *name; long unsigned int nr_isolate_pageblock; seqlock_t span_seqlock; int initialized; - long: 32; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; long: 64; long: 64; struct zone_padding _pad1_; struct free_area free_area[13]; long unsigned int flags; spinlock_t lock; - long: 32; long: 64; long: 64; long: 64; @@ -3787,10 +3704,10 @@ struct zone { int compact_order_failed; bool compact_blockskip_flush; bool contiguous; - short: 16; + long: 0; struct zone_padding _pad3_; atomic_long_t vm_stat[11]; - atomic_long_t vm_numa_stat[6]; + atomic_long_t vm_numa_event[6]; long: 64; long: 64; long: 64; @@ -3839,6 +3756,7 @@ struct pglist_data { enum zone_type kcompactd_highest_zoneidx; wait_queue_head_t kcompactd_wait; struct task_struct *kcompactd; + bool proactive_compact_trigger; long unsigned int totalreserve_pages; long unsigned int min_unmapped_pages; long unsigned int min_slab_pages; @@ -3847,7 +3765,6 @@ struct pglist_data { long: 64; long: 64; long: 64; - long: 64; struct zone_padding _pad1_; struct deferred_split deferred_split_queue; struct lruvec __lruvec; @@ -3855,8 +3772,7 @@ struct pglist_data { long: 64; struct zone_padding _pad2_; struct per_cpu_nodestat *per_cpu_nodestats; - atomic_long_t vm_stat[38]; - long: 64; + atomic_long_t vm_stat[39]; }; typedef unsigned int isolate_mode_t; @@ -3865,20 +3781,20 @@ struct per_cpu_pages { int count; int high; int batch; - struct list_head lists[3]; + short int free_factor; + short int expire; + struct list_head lists[15]; }; -struct per_cpu_pageset { - struct per_cpu_pages pcp; - s8 expire; - u16 vm_numa_stat_diff[6]; - s8 stat_threshold; +struct per_cpu_zonestat { s8 vm_stat_diff[11]; + s8 stat_threshold; + long unsigned int vm_numa_event[6]; }; struct per_cpu_nodestat { s8 stat_threshold; - s8 vm_node_stat_diff[38]; + s8 vm_node_stat_diff[39]; }; typedef struct pglist_data pg_data_t; @@ -3888,12 +3804,14 @@ struct rcu_segcblist { struct callback_head **tails[4]; long unsigned int gp_seq[4]; long int len; - u8 enabled; - u8 offloaded; + long int seglen[4]; + u8 flags; }; struct srcu_node; +struct srcu_struct; + struct srcu_data { long unsigned int srcu_lock_count[2]; long unsigned int srcu_unlock_count[2]; @@ -3915,6 +3833,10 @@ struct srcu_data { struct srcu_struct *ssp; long: 64; long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; struct srcu_node { @@ -3944,8 +3866,11 @@ struct srcu_struct { struct completion srcu_barrier_completion; atomic_t srcu_barrier_cpu_cnt; struct delayed_work work; + struct lockdep_map dep_map; }; +struct notifier_block; + typedef int (*notifier_fn_t)(struct notifier_block *, long unsigned int, void *); struct notifier_block { @@ -3959,24 +3884,8 @@ struct blocking_notifier_head { struct notifier_block *head; }; -struct cpu_topology { - int thread_id; - int core_id; - int package_id; - int llc_id; - cpumask_t thread_sibling; - cpumask_t core_sibling; - cpumask_t llc_sibling; -}; - -struct mem_section_usage { - long unsigned int subsection_map[8]; - long unsigned int pageblock_flags[0]; -}; - -struct mem_section { - long unsigned int section_mem_map; - struct mem_section_usage *usage; +struct raw_notifier_head { + struct notifier_block *head; }; typedef int proc_handler(struct ctl_table *, int, void *, size_t *, loff_t *); @@ -4012,12 +3921,6 @@ struct ctl_table_root { int (*permissions)(struct ctl_table_header *, struct ctl_table *); }; -enum umh_disable_depth { - UMH_ENABLED = 0, - UMH_FREEZING = 1, - UMH_DISABLED = 2, -}; - typedef __u64 Elf64_Addr; typedef __u16 Elf64_Half; @@ -4026,16 +3929,6 @@ typedef __u32 Elf64_Word; typedef __u64 Elf64_Xword; -typedef __s64 Elf64_Sxword; - -typedef struct { - Elf64_Sxword d_tag; - union { - Elf64_Xword d_val; - Elf64_Addr d_ptr; - } d_un; -} Elf64_Dyn; - struct elf64_sym { Elf64_Word st_name; unsigned char st_info; @@ -4045,6 +3938,8 @@ struct elf64_sym { Elf64_Xword st_size; }; +typedef struct elf64_sym Elf64_Sym; + struct hlist_bl_node; struct hlist_bl_head { @@ -4077,15 +3972,6 @@ struct qstr { const unsigned char *name; }; -struct dentry_stat_t { - long int nr_dentry; - long int nr_unused; - long int age_limit; - long int want_pages; - long int nr_negative; - long int dummy; -}; - struct dentry_operations; struct dentry { @@ -4309,6 +4195,8 @@ struct xattr_handler; struct fscrypt_operations; +struct fscrypt_keyring; + struct fsverity_operations; struct unicode_map; @@ -4336,7 +4224,7 @@ struct super_block { void *s_security; const struct xattr_handler **s_xattr; const struct fscrypt_operations *s_cop; - struct key *s_master_keys; + struct fscrypt_keyring *s_master_keys; const struct fsverity_operations *s_vop; struct unicode_map *s_encoding; __u16 s_encoding_flags; @@ -4365,7 +4253,7 @@ struct super_block { int cleancache_poolid; struct shrinker s_shrink; atomic_long_t s_remove_count; - atomic_long_t s_fsnotify_inode_refs; + atomic_long_t s_fsnotify_connectors; int s_readonly_remount; errseq_t s_wb_err; struct workqueue_struct *s_dio_done_wq; @@ -4377,7 +4265,7 @@ struct super_block { struct work_struct destroy_work; struct mutex s_sync_lock; int s_stack_depth; - int: 32; + long: 0; spinlock_t s_inode_list_lock; struct list_head s_inodes; spinlock_t s_inode_wblist_lock; @@ -4386,6 +4274,13 @@ struct super_block { long: 64; }; +struct vfsmount { + struct dentry *mnt_root; + struct super_block *mnt_sb; + int mnt_flags; + struct user_namespace *mnt_userns; +}; + struct shrink_control { gfp_t gfp_mask; int nid; @@ -4434,22 +4329,22 @@ struct psi_group_cpu; struct psi_group { struct mutex avgs_lock; struct psi_group_cpu *pcpu; - u64 avg_total[5]; + u64 avg_total[6]; u64 avg_last_update; u64 avg_next_update; struct delayed_work avgs_work; - u64 total[10]; - long unsigned int avg[15]; + u64 total[12]; + long unsigned int avg[18]; struct task_struct *poll_task; struct timer_list poll_timer; wait_queue_head_t poll_wait; atomic_t poll_wakeup; struct mutex trigger_lock; struct list_head triggers; - u32 nr_triggers[5]; + u32 nr_triggers[6]; u32 poll_states; u64 poll_min_period; - u64 polling_total[5]; + u64 polling_total[6]; u64 polling_next_update; u64 polling_until; }; @@ -4457,9 +4352,9 @@ struct psi_group { struct bpf_prog_array; struct cgroup_bpf { - struct bpf_prog_array *effective[38]; - struct list_head progs[38]; - u32 flags[38]; + struct bpf_prog_array *effective[23]; + struct list_head progs[23]; + u32 flags[23]; struct list_head storages; struct bpf_prog_array *inactive; struct percpu_ref refcnt; @@ -4496,10 +4391,10 @@ struct cgroup { u16 subtree_ss_mask; u16 old_subtree_control; u16 old_subtree_ss_mask; - struct cgroup_subsys_state *subsys[13]; + struct cgroup_subsys_state *subsys[14]; struct cgroup_root *root; struct list_head cset_links; - struct list_head e_csets[13]; + struct list_head e_csets[14]; struct cgroup *dom_cgrp; struct cgroup *old_dom_cgrp; struct cgroup_rstat_cpu *rstat_cpu; @@ -4566,6 +4461,18 @@ struct key_restriction { struct key_type *keytype; }; +struct user_struct { + refcount_t __count; + struct percpu_counter epoll_watches; + long unsigned int unix_inflight; + atomic_long_t pipe_bufs; + struct hlist_node uidhash_node; + kuid_t uid; + atomic_long_t locked_vm; + atomic_t nr_watches; + struct ratelimit_state ratelimit; +}; + struct group_info { atomic_t usage; int ngroups; @@ -4588,7 +4495,7 @@ struct taskstats { char ac_comm[32]; __u8 ac_sched; __u8 ac_pad[3]; - int: 32; + long: 0; __u32 ac_uid; __u32 ac_gid; __u32 ac_pid; @@ -4627,10 +4534,6 @@ struct delayed_call { void *arg; }; -typedef struct { - __u8 b[16]; -} guid_t; - struct io_cq { struct request_queue *q; struct io_context *ioc; @@ -4645,18 +4548,6 @@ struct io_cq { unsigned int flags; }; -struct files_stat_struct { - long unsigned int nr_files; - long unsigned int nr_free_files; - long unsigned int max_files; -}; - -struct inodes_stat_t { - long int nr_inodes; - long int nr_unused; - long int dummy[5]; -}; - struct wait_page_queue; struct kiocb { @@ -4740,11 +4631,6 @@ struct quota_format_type { struct quota_format_type *qf_next; }; -struct dqstats { - long unsigned int stat[8]; - struct percpu_counter counter[8]; -}; - struct quota_format_ops { int (*check_quota_file)(struct super_block *, int); int (*read_file_info)(struct super_block *, int); @@ -4832,6 +4718,152 @@ struct quotactl_ops { int (*rm_xquota)(struct super_block *, unsigned int); }; +enum module_state { + MODULE_STATE_LIVE = 0, + MODULE_STATE_COMING = 1, + MODULE_STATE_GOING = 2, + MODULE_STATE_UNFORMED = 3, +}; + +struct module_param_attrs; + +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_layout { + void *base; + unsigned int size; + unsigned int text_size; + unsigned int ro_size; + unsigned int ro_after_init_size; + struct mod_tree_node mtn; +}; + +struct mod_plt_sec { + int plt_shndx; + int plt_num_entries; + int plt_max_entries; +}; + +struct plt_entry; + +struct mod_arch_specific { + struct mod_plt_sec core; + struct mod_plt_sec init; + struct plt_entry *ftrace_trampolines; +}; + +struct mod_kallsyms { + Elf64_Sym *symtab; + unsigned int num_symtab; + char *strtab; + char *typetab; +}; + +typedef const int tracepoint_ptr_t; + +struct module_attribute; + +struct kernel_param; + +struct module_sect_attrs; + +struct module_notes_attrs; + +struct bpf_raw_event_map; + +struct trace_eval_map; + +struct error_injection_entry; + +struct module { + enum module_state state; + struct list_head list; + char name[56]; + struct module_kobject mkobj; + struct module_attribute *modinfo_attrs; + const char *version; + const char *srcversion; + 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)(); + struct module_layout core_layout; + struct module_layout init_layout; + struct mod_arch_specific arch; + long unsigned int taints; + unsigned int num_bugs; + struct list_head bug_list; + struct bug_entry *bug_table; + struct mod_kallsyms *kallsyms; + struct mod_kallsyms core_kallsyms; + struct module_sect_attrs *sect_attrs; + struct module_notes_attrs *notes_attrs; + char *args; + void *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; + unsigned int num_ftrace_callsites; + long unsigned int *ftrace_callsites; + void *kprobes_text_start; + unsigned int kprobes_text_size; + long unsigned int *kprobe_blacklist; + unsigned int num_kprobe_blacklist; + struct list_head source_list; + struct list_head target_list; + void (*exit)(); + atomic_t refcnt; + struct error_injection_entry *ei_funcs; + unsigned int num_ei_funcs; + long: 64; + long: 64; + long: 64; + long: 64; +}; + struct wait_page_queue { struct page *page; int bit_nr; @@ -4901,6 +4933,7 @@ struct writeback_control { struct readahead_control { struct file *file; struct address_space *mapping; + struct file_ra_state *ra; long unsigned int _index; unsigned int _nr_pages; unsigned int _batch_count; @@ -4913,13 +4946,16 @@ struct kvec; struct bio_vec; struct iov_iter { - unsigned int type; + u8 iter_type; + bool nofault; + bool data_source; size_t iov_offset; size_t count; union { const struct iovec *iov; const struct kvec *kvec; const struct bio_vec *bvec; + struct xarray *xarray; struct pipe_inode_info *pipe; }; union { @@ -4928,6 +4964,7 @@ struct iov_iter { unsigned int head; unsigned int start_head; }; + loff_t xarray_start; }; }; @@ -4945,6 +4982,7 @@ struct swap_cluster_list { struct percpu_cluster; struct swap_info_struct { + struct percpu_ref users; long unsigned int flags; short int prio; struct plist_node list; @@ -4965,6 +5003,7 @@ struct swap_info_struct { struct block_device *bdev; struct file *swap_file; unsigned int old_block_size; + struct completion comp; long unsigned int *frontswap_map; atomic_t frontswap_pages; spinlock_t lock; @@ -4985,30 +5024,32 @@ struct cdev { struct fiemap_extent_info; +struct fileattr; + 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 inode *, int); - struct posix_acl * (*get_acl)(struct inode *, int); + int (*permission)(struct user_namespace *, struct inode *, int); + struct posix_acl * (*get_acl)(struct inode *, int, bool); int (*readlink)(struct dentry *, char *, int); - int (*create)(struct inode *, struct dentry *, umode_t, bool); + int (*create)(struct user_namespace *, struct inode *, struct dentry *, umode_t, bool); int (*link)(struct dentry *, struct inode *, struct dentry *); int (*unlink)(struct inode *, struct dentry *); - int (*symlink)(struct inode *, struct dentry *, const char *); - int (*mkdir)(struct inode *, struct dentry *, umode_t); + int (*symlink)(struct user_namespace *, struct inode *, struct dentry *, const char *); + int (*mkdir)(struct user_namespace *, struct inode *, struct dentry *, umode_t); int (*rmdir)(struct inode *, struct dentry *); - int (*mknod)(struct inode *, struct dentry *, umode_t, dev_t); - int (*rename)(struct inode *, struct dentry *, struct inode *, struct dentry *, unsigned int); - int (*setattr)(struct dentry *, struct iattr *); - int (*getattr)(const struct path *, struct kstat *, u32, unsigned int); + int (*mknod)(struct user_namespace *, struct inode *, struct dentry *, umode_t, dev_t); + int (*rename)(struct user_namespace *, struct inode *, struct dentry *, struct inode *, struct dentry *, unsigned int); + int (*setattr)(struct user_namespace *, struct dentry *, struct iattr *); + int (*getattr)(struct user_namespace *, 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 *, struct timespec64 *, int); int (*atomic_open)(struct inode *, struct dentry *, struct file *, unsigned int, umode_t); - int (*tmpfile)(struct inode *, struct dentry *, umode_t); - int (*set_acl)(struct inode *, struct posix_acl *, int); - long: 64; - long: 64; + int (*tmpfile)(struct user_namespace *, struct inode *, struct dentry *, umode_t); + int (*set_acl)(struct user_namespace *, struct inode *, struct posix_acl *, int); + int (*fileattr_set)(struct user_namespace *, struct dentry *, struct fileattr *); + int (*fileattr_get)(struct dentry *, struct fileattr *); long: 64; }; @@ -5117,7 +5158,6 @@ struct super_operations { 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 ** (*get_dquots)(struct inode *); - int (*bdev_try_to_free_page)(struct super_block *, struct page *, gfp_t); long int (*nr_cached_objects)(struct super_block *, struct shrink_control *); long int (*free_cached_objects)(struct super_block *, struct shrink_control *); struct file * (*real_loop)(struct file *); @@ -5137,6 +5177,7 @@ struct export_operations { 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 *); + u64 (*fetch_iversion)(struct inode *); long unsigned int flags; }; @@ -5146,7 +5187,7 @@ struct xattr_handler { 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 dentry *, struct inode *, const char *, const void *, size_t, int); + int (*set)(const struct xattr_handler *, struct user_namespace *, struct dentry *, struct inode *, const char *, const void *, size_t, int); }; union fscrypt_policy; @@ -5266,6 +5307,13 @@ struct dev_pm_info { 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; @@ -5292,6 +5340,8 @@ struct dma_coherent_mem; struct cma; +struct io_tlb_mem; + struct device_node; struct fwnode_handle; @@ -5332,6 +5382,7 @@ struct device { struct list_head dma_pools; struct dma_coherent_mem *dma_mem; struct cma *cma_area; + struct io_tlb_mem *dma_io_tlb_mem; struct dev_archdata archdata; struct device_node *of_node; struct fwnode_handle *fwnode; @@ -5345,17 +5396,17 @@ struct device { void (*release)(struct device *); struct iommu_group *iommu_group; struct dev_iommu *iommu; + 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; }; struct disk_stats; -struct gendisk; - struct partition_meta_info; struct block_device { @@ -5367,19 +5418,15 @@ struct block_device { int bd_openers; struct inode *bd_inode; struct super_block *bd_super; - struct mutex bd_mutex; void *bd_claiming; struct device bd_device; void *bd_holder; int bd_holders; bool bd_write_holder; - struct list_head bd_holder_disks; struct kobject *bd_holder_dir; u8 bd_partno; - unsigned int bd_part_count; spinlock_t bd_size_lock; struct gendisk *bd_disk; - struct backing_dev_info *bd_bdi; int bd_fsfreeze_count; struct mutex bd_fsfreeze_mutex; struct super_block *bd_fsfreeze_sb; @@ -5518,13 +5565,12 @@ struct bio_integrity_payload; struct bio { struct bio *bi_next; - struct gendisk *bi_disk; + struct block_device *bi_bdev; unsigned int bi_opf; short unsigned int bi_flags; short unsigned int bi_ioprio; short unsigned int bi_write_hint; blk_status_t bi_status; - u8 bi_partno; atomic_t __bi_remaining; struct bvec_iter bi_iter; bio_end_io_t *bi_end_io; @@ -5550,6 +5596,7 @@ struct kernfs_elem_dir { long unsigned int subdirs; struct rb_root children; struct kernfs_root *root; + long unsigned int rev; }; struct kernfs_syscall_ops; @@ -5679,6 +5726,7 @@ 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 *); @@ -5722,12 +5770,6 @@ struct kset_uevent_ops { int (* const uevent)(struct kset *, struct kobject *, struct kobj_uevent_env *); }; -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 kernel_param_ops { unsigned int flags; int (*set)(const char *, const struct kernel_param *); @@ -5777,8 +5819,6 @@ struct tracepoint_func { int prio; }; -struct static_call_key; - struct tracepoint { const char *name; struct static_key key; @@ -5790,10 +5830,6 @@ struct tracepoint { struct tracepoint_func *funcs; }; -struct static_call_key { - void *func; -}; - struct bpf_raw_event_map { struct tracepoint *tp; void *bpf_func; @@ -5838,7 +5874,10 @@ struct trace_event_call { struct trace_event event; char *print_fmt; struct event_filter *filter; - void *mod; + union { + void *module; + atomic_t refcnt; + }; void *data; int flags; int perf_refcount; @@ -5882,6 +5921,8 @@ struct linux_binprm { char buf[256]; }; +struct core_vma_metadata; + struct coredump_params { const kernel_siginfo_t *siginfo; struct pt_regs *regs; @@ -5890,11 +5931,10 @@ struct coredump_params { long unsigned int mm_flags; loff_t written; loff_t pos; -}; - -struct sd_flag_debug { - unsigned int meta_flags; - char *name; + loff_t to_skip; + int vma_count; + size_t vma_data_size; + struct core_vma_metadata *vma_meta; }; struct em_perf_state { @@ -5910,17 +5950,6 @@ struct em_perf_domain { long unsigned int cpus[0]; }; -struct resource { - resource_size_t start; - resource_size_t end; - const char *name; - long unsigned int flags; - long unsigned int desc; - struct resource *parent; - struct resource *sibling; - struct resource *child; -}; - struct dev_pm_ops { int (*prepare)(struct device *); void (*complete)(struct device *); @@ -5952,6 +5981,8 @@ 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; }; @@ -6003,7 +6034,7 @@ struct bus_type { int (*uevent)(struct device *, struct kobj_uevent_env *); int (*probe)(struct device *); void (*sync_state)(struct device *); - int (*remove)(struct device *); + void (*remove)(struct device *); void (*shutdown)(struct device *); int (*online)(struct device *); int (*offline)(struct device *); @@ -6060,22 +6091,10 @@ enum iommu_cap { typedef u64 dma_addr_t; -enum iommu_attr { - DOMAIN_ATTR_GEOMETRY = 0, - DOMAIN_ATTR_PAGING = 1, - DOMAIN_ATTR_WINDOWS = 2, - DOMAIN_ATTR_FSL_PAMU_STASH = 3, - DOMAIN_ATTR_FSL_PAMU_ENABLE = 4, - DOMAIN_ATTR_FSL_PAMUV1 = 5, - DOMAIN_ATTR_NESTING = 6, - DOMAIN_ATTR_DMA_USE_FLUSH_QUEUE = 7, - DOMAIN_ATTR_IO_PGTABLE_CFG = 8, - DOMAIN_ATTR_MAX = 9, -}; - enum iommu_dev_features { IOMMU_DEV_FEAT_AUX = 0, IOMMU_DEV_FEAT_SVA = 1, + IOMMU_DEV_FEAT_IOPF = 2, }; struct iommu_domain; @@ -6105,22 +6124,22 @@ struct iommu_ops { int (*attach_dev)(struct iommu_domain *, struct device *); void (*detach_dev)(struct iommu_domain *, struct device *); int (*map)(struct iommu_domain *, long unsigned int, phys_addr_t, size_t, int, gfp_t); + int (*map_pages)(struct iommu_domain *, long unsigned int, phys_addr_t, size_t, size_t, int, gfp_t, size_t *); size_t (*unmap)(struct iommu_domain *, long unsigned int, size_t, struct iommu_iotlb_gather *); + size_t (*unmap_pages)(struct iommu_domain *, long unsigned int, size_t, size_t, struct iommu_iotlb_gather *); void (*flush_iotlb_all)(struct iommu_domain *); - void (*iotlb_sync_map)(struct iommu_domain *); + void (*iotlb_sync_map)(struct iommu_domain *, long unsigned int, size_t); void (*iotlb_sync)(struct iommu_domain *, struct iommu_iotlb_gather *); phys_addr_t (*iova_to_phys)(struct iommu_domain *, dma_addr_t); struct iommu_device * (*probe_device)(struct device *); void (*release_device)(struct device *); void (*probe_finalize)(struct device *); struct iommu_group * (*device_group)(struct device *); - int (*domain_get_attr)(struct iommu_domain *, enum iommu_attr, void *); - int (*domain_set_attr)(struct iommu_domain *, enum iommu_attr, void *); + int (*enable_nesting)(struct iommu_domain *); + int (*set_pgtable_quirks)(struct iommu_domain *, long unsigned int); void (*get_resv_regions)(struct device *, struct list_head *); void (*put_resv_regions)(struct device *, struct list_head *); void (*apply_resv_region)(struct device *, struct iommu_domain *, struct iommu_resv_region *); - int (*domain_window_enable)(struct iommu_domain *, u32, phys_addr_t, u64, int); - void (*domain_window_disable)(struct iommu_domain *, u32); int (*of_xlate)(struct device *, struct of_phandle_args *); bool (*is_attach_deferred)(struct iommu_domain *, struct device *); bool (*dev_has_feat)(struct device *, enum iommu_dev_features); @@ -6209,6 +6228,8 @@ struct irq_domain_ops; struct irq_domain_chip_generic; +struct irq_data; + struct irq_domain { struct list_head link; const char *name; @@ -6221,18 +6242,10 @@ struct irq_domain { struct irq_domain_chip_generic *gc; struct irq_domain *parent; irq_hw_number_t hwirq_max; - unsigned int revmap_direct_max_irq; unsigned int revmap_size; struct xarray revmap_tree; - struct mutex revmap_tree_mutex; - unsigned int linear_revmap[0]; -}; - -enum dma_data_direction { - DMA_BIDIRECTIONAL = 0, - DMA_TO_DEVICE = 1, - DMA_FROM_DEVICE = 2, - DMA_NONE = 3, + struct mutex revmap_mutex; + struct irq_data *revmap[0]; }; struct sg_table; @@ -6244,8 +6257,8 @@ struct dma_map_ops { void (*free)(struct device *, size_t, void *, dma_addr_t, long unsigned int); 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); - void * (*alloc_noncoherent)(struct device *, size_t, dma_addr_t *, enum dma_data_direction, gfp_t); - void (*free_noncoherent)(struct device *, size_t, void *, dma_addr_t, enum dma_data_direction); + struct sg_table * (*alloc_noncontiguous)(struct device *, size_t, enum dma_data_direction, gfp_t, long unsigned int); + 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, long unsigned int); int (*get_sgtable)(struct device *, struct sg_table *, void *, dma_addr_t, size_t, long unsigned int); dma_addr_t (*map_page)(struct device *, struct page *, long unsigned int, size_t, enum dma_data_direction, long unsigned int); @@ -6302,14 +6315,6 @@ struct device_node { void *data; }; -struct node { - struct device dev; - struct list_head access_list; - struct work_struct node_work; - struct list_head cache_attrs; - struct device *cache_dev; -}; - enum cpuhp_state { CPUHP_INVALID = 4294967295, CPUHP_OFFLINE = 0, @@ -6326,163 +6331,175 @@ enum cpuhp_state { CPUHP_SLUB_DEAD = 11, CPUHP_DEBUG_OBJ_DEAD = 12, CPUHP_MM_WRITEBACK_DEAD = 13, - CPUHP_MM_VMSTAT_DEAD = 14, - CPUHP_SOFTIRQ_DEAD = 15, - CPUHP_NET_MVNETA_DEAD = 16, - CPUHP_CPUIDLE_DEAD = 17, - CPUHP_ARM64_FPSIMD_DEAD = 18, - CPUHP_ARM_OMAP_WAKE_DEAD = 19, - CPUHP_IRQ_POLL_DEAD = 20, - CPUHP_BLOCK_SOFTIRQ_DEAD = 21, - CPUHP_ACPI_CPUDRV_DEAD = 22, - CPUHP_S390_PFAULT_DEAD = 23, - CPUHP_BLK_MQ_DEAD = 24, - CPUHP_FS_BUFF_DEAD = 25, - CPUHP_PRINTK_DEAD = 26, - CPUHP_MM_MEMCQ_DEAD = 27, - CPUHP_PERCPU_CNT_DEAD = 28, - CPUHP_RADIX_DEAD = 29, - CPUHP_PAGE_ALLOC_DEAD = 30, - CPUHP_NET_DEV_DEAD = 31, - CPUHP_PCI_XGENE_DEAD = 32, - CPUHP_IOMMU_INTEL_DEAD = 33, - CPUHP_LUSTRE_CFS_DEAD = 34, - CPUHP_AP_ARM_CACHE_B15_RAC_DEAD = 35, - CPUHP_PADATA_DEAD = 36, - CPUHP_WORKQUEUE_PREP = 37, - CPUHP_POWER_NUMA_PREPARE = 38, - CPUHP_HRTIMERS_PREPARE = 39, - CPUHP_PROFILE_PREPARE = 40, - CPUHP_X2APIC_PREPARE = 41, - CPUHP_SMPCFD_PREPARE = 42, - CPUHP_RELAY_PREPARE = 43, - CPUHP_SLAB_PREPARE = 44, - CPUHP_MD_RAID5_PREPARE = 45, - CPUHP_RCUTREE_PREP = 46, - CPUHP_CPUIDLE_COUPLED_PREPARE = 47, - CPUHP_POWERPC_PMAC_PREPARE = 48, - CPUHP_POWERPC_MMU_CTX_PREPARE = 49, - CPUHP_XEN_PREPARE = 50, - CPUHP_XEN_EVTCHN_PREPARE = 51, - CPUHP_ARM_SHMOBILE_SCU_PREPARE = 52, - CPUHP_SH_SH3X_PREPARE = 53, - CPUHP_NET_FLOW_PREPARE = 54, - CPUHP_TOPOLOGY_PREPARE = 55, - CPUHP_NET_IUCV_PREPARE = 56, - CPUHP_ARM_BL_PREPARE = 57, - CPUHP_TRACE_RB_PREPARE = 58, - CPUHP_MM_ZS_PREPARE = 59, - CPUHP_MM_ZSWP_MEM_PREPARE = 60, - CPUHP_MM_ZSWP_POOL_PREPARE = 61, - CPUHP_KVM_PPC_BOOK3S_PREPARE = 62, - CPUHP_ZCOMP_PREPARE = 63, - CPUHP_TIMERS_PREPARE = 64, - CPUHP_MIPS_SOC_PREPARE = 65, - CPUHP_BP_PREPARE_DYN = 66, - CPUHP_BP_PREPARE_DYN_END = 86, - CPUHP_BRINGUP_CPU = 87, - CPUHP_AP_IDLE_DEAD = 88, - CPUHP_AP_OFFLINE = 89, - CPUHP_AP_SCHED_STARTING = 90, - CPUHP_AP_RCUTREE_DYING = 91, - CPUHP_AP_CPU_PM_STARTING = 92, - CPUHP_AP_IRQ_GIC_STARTING = 93, - CPUHP_AP_IRQ_HIP04_STARTING = 94, - CPUHP_AP_IRQ_ARMADA_XP_STARTING = 95, - CPUHP_AP_IRQ_BCM2836_STARTING = 96, - CPUHP_AP_IRQ_MIPS_GIC_STARTING = 97, - CPUHP_AP_IRQ_RISCV_STARTING = 98, - CPUHP_AP_IRQ_SIFIVE_PLIC_STARTING = 99, - CPUHP_AP_ARM_MVEBU_COHERENCY = 100, - CPUHP_AP_MICROCODE_LOADER = 101, - CPUHP_AP_PERF_X86_AMD_UNCORE_STARTING = 102, - CPUHP_AP_PERF_X86_STARTING = 103, - CPUHP_AP_PERF_X86_AMD_IBS_STARTING = 104, - CPUHP_AP_PERF_X86_CQM_STARTING = 105, - CPUHP_AP_PERF_X86_CSTATE_STARTING = 106, - CPUHP_AP_PERF_XTENSA_STARTING = 107, - CPUHP_AP_MIPS_OP_LOONGSON3_STARTING = 108, - CPUHP_AP_ARM_SDEI_STARTING = 109, - CPUHP_AP_ARM_VFP_STARTING = 110, - CPUHP_AP_ARM64_DEBUG_MONITORS_STARTING = 111, - CPUHP_AP_PERF_ARM_HW_BREAKPOINT_STARTING = 112, - CPUHP_AP_PERF_ARM_ACPI_STARTING = 113, - CPUHP_AP_PERF_ARM_STARTING = 114, - CPUHP_AP_ARM_L2X0_STARTING = 115, - CPUHP_AP_EXYNOS4_MCT_TIMER_STARTING = 116, - CPUHP_AP_ARM_ARCH_TIMER_STARTING = 117, - CPUHP_AP_ARM_GLOBAL_TIMER_STARTING = 118, - CPUHP_AP_JCORE_TIMER_STARTING = 119, - CPUHP_AP_ARM_TWD_STARTING = 120, - CPUHP_AP_QCOM_TIMER_STARTING = 121, - CPUHP_AP_TEGRA_TIMER_STARTING = 122, - CPUHP_AP_ARMADA_TIMER_STARTING = 123, - CPUHP_AP_MARCO_TIMER_STARTING = 124, - CPUHP_AP_MIPS_GIC_TIMER_STARTING = 125, - CPUHP_AP_ARC_TIMER_STARTING = 126, - CPUHP_AP_RISCV_TIMER_STARTING = 127, - CPUHP_AP_CLINT_TIMER_STARTING = 128, - CPUHP_AP_CSKY_TIMER_STARTING = 129, - CPUHP_AP_TI_GP_TIMER_STARTING = 130, - CPUHP_AP_HYPERV_TIMER_STARTING = 131, - CPUHP_AP_KVM_STARTING = 132, - CPUHP_AP_KVM_ARM_VGIC_INIT_STARTING = 133, - CPUHP_AP_KVM_ARM_VGIC_STARTING = 134, - CPUHP_AP_KVM_ARM_TIMER_STARTING = 135, - CPUHP_AP_DUMMY_TIMER_STARTING = 136, - CPUHP_AP_ARM_XEN_STARTING = 137, - CPUHP_AP_ARM_CORESIGHT_STARTING = 138, - CPUHP_AP_ARM_CORESIGHT_CTI_STARTING = 139, - CPUHP_AP_ARM64_ISNDEP_STARTING = 140, - CPUHP_AP_SMPCFD_DYING = 141, - CPUHP_AP_X86_TBOOT_DYING = 142, - CPUHP_AP_ARM_CACHE_B15_RAC_DYING = 143, - CPUHP_AP_ONLINE = 144, - CPUHP_TEARDOWN_CPU = 145, - CPUHP_AP_ONLINE_IDLE = 146, - CPUHP_AP_SCHED_WAIT_EMPTY = 147, - CPUHP_AP_SMPBOOT_THREADS = 148, - CPUHP_AP_X86_VDSO_VMA_ONLINE = 149, - CPUHP_AP_IRQ_AFFINITY_ONLINE = 150, - CPUHP_AP_BLK_MQ_ONLINE = 151, - CPUHP_AP_ARM_MVEBU_SYNC_CLOCKS = 152, - CPUHP_AP_X86_INTEL_EPB_ONLINE = 153, - CPUHP_AP_PERF_ONLINE = 154, - CPUHP_AP_PERF_X86_ONLINE = 155, - CPUHP_AP_PERF_X86_UNCORE_ONLINE = 156, - CPUHP_AP_PERF_X86_AMD_UNCORE_ONLINE = 157, - CPUHP_AP_PERF_X86_AMD_POWER_ONLINE = 158, - CPUHP_AP_PERF_X86_RAPL_ONLINE = 159, - CPUHP_AP_PERF_X86_CQM_ONLINE = 160, - CPUHP_AP_PERF_X86_CSTATE_ONLINE = 161, - CPUHP_AP_PERF_S390_CF_ONLINE = 162, - CPUHP_AP_PERF_S390_SF_ONLINE = 163, - CPUHP_AP_PERF_ARM_CCI_ONLINE = 164, - CPUHP_AP_PERF_ARM_CCN_ONLINE = 165, - CPUHP_AP_PERF_ARM_HISI_DDRC_ONLINE = 166, - CPUHP_AP_PERF_ARM_HISI_HHA_ONLINE = 167, - CPUHP_AP_PERF_ARM_HISI_L3_ONLINE = 168, - CPUHP_AP_PERF_ARM_L2X0_ONLINE = 169, - CPUHP_AP_PERF_ARM_QCOM_L2_ONLINE = 170, - CPUHP_AP_PERF_ARM_QCOM_L3_ONLINE = 171, - CPUHP_AP_PERF_ARM_APM_XGENE_ONLINE = 172, - CPUHP_AP_PERF_ARM_CAVIUM_TX2_UNCORE_ONLINE = 173, - CPUHP_AP_PERF_POWERPC_NEST_IMC_ONLINE = 174, - CPUHP_AP_PERF_POWERPC_CORE_IMC_ONLINE = 175, - CPUHP_AP_PERF_POWERPC_THREAD_IMC_ONLINE = 176, - CPUHP_AP_PERF_POWERPC_TRACE_IMC_ONLINE = 177, - CPUHP_AP_PERF_POWERPC_HV_24x7_ONLINE = 178, - CPUHP_AP_PERF_POWERPC_HV_GPCI_ONLINE = 179, - CPUHP_AP_WATCHDOG_ONLINE = 180, - CPUHP_AP_WORKQUEUE_ONLINE = 181, - CPUHP_AP_RCUTREE_ONLINE = 182, - CPUHP_AP_BASE_CACHEINFO_ONLINE = 183, - CPUHP_AP_ONLINE_DYN = 184, - CPUHP_AP_ONLINE_DYN_END = 214, - CPUHP_AP_X86_HPET_ONLINE = 215, - CPUHP_AP_X86_KVM_CLK_ONLINE = 216, - CPUHP_AP_ACTIVE = 217, - CPUHP_ONLINE = 218, + CPUHP_MM_DEMOTION_DEAD = 14, + CPUHP_MM_VMSTAT_DEAD = 15, + CPUHP_SOFTIRQ_DEAD = 16, + CPUHP_NET_MVNETA_DEAD = 17, + CPUHP_CPUIDLE_DEAD = 18, + CPUHP_ARM64_FPSIMD_DEAD = 19, + CPUHP_ARM_OMAP_WAKE_DEAD = 20, + CPUHP_IRQ_POLL_DEAD = 21, + CPUHP_BLOCK_SOFTIRQ_DEAD = 22, + CPUHP_BIO_DEAD = 23, + CPUHP_ACPI_CPUDRV_DEAD = 24, + CPUHP_S390_PFAULT_DEAD = 25, + CPUHP_BLK_MQ_DEAD = 26, + CPUHP_FS_BUFF_DEAD = 27, + CPUHP_PRINTK_DEAD = 28, + CPUHP_MM_MEMCQ_DEAD = 29, + CPUHP_XFS_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_RANDOM_PREPARE = 40, + CPUHP_WORKQUEUE_PREP = 41, + CPUHP_POWER_NUMA_PREPARE = 42, + CPUHP_HRTIMERS_PREPARE = 43, + CPUHP_PROFILE_PREPARE = 44, + CPUHP_X2APIC_PREPARE = 45, + CPUHP_SMPCFD_PREPARE = 46, + CPUHP_RELAY_PREPARE = 47, + CPUHP_SLAB_PREPARE = 48, + CPUHP_MD_RAID5_PREPARE = 49, + CPUHP_RCUTREE_PREP = 50, + CPUHP_CPUIDLE_COUPLED_PREPARE = 51, + CPUHP_POWERPC_PMAC_PREPARE = 52, + CPUHP_POWERPC_MMU_CTX_PREPARE = 53, + CPUHP_XEN_PREPARE = 54, + CPUHP_XEN_EVTCHN_PREPARE = 55, + CPUHP_ARM_SHMOBILE_SCU_PREPARE = 56, + CPUHP_SH_SH3X_PREPARE = 57, + CPUHP_NET_FLOW_PREPARE = 58, + CPUHP_TOPOLOGY_PREPARE = 59, + CPUHP_NET_IUCV_PREPARE = 60, + CPUHP_ARM_BL_PREPARE = 61, + CPUHP_TRACE_RB_PREPARE = 62, + CPUHP_MM_ZS_PREPARE = 63, + CPUHP_MM_ZSWP_MEM_PREPARE = 64, + CPUHP_MM_ZSWP_POOL_PREPARE = 65, + CPUHP_KVM_PPC_BOOK3S_PREPARE = 66, + CPUHP_ZCOMP_PREPARE = 67, + CPUHP_TIMERS_PREPARE = 68, + CPUHP_MIPS_SOC_PREPARE = 69, + CPUHP_BP_PREPARE_DYN = 70, + CPUHP_BP_PREPARE_DYN_END = 90, + CPUHP_BRINGUP_CPU = 91, + CPUHP_AP_IDLE_DEAD = 92, + CPUHP_AP_OFFLINE = 93, + CPUHP_AP_SCHED_STARTING = 94, + CPUHP_AP_RCUTREE_DYING = 95, + CPUHP_AP_CPU_PM_STARTING = 96, + CPUHP_AP_IRQ_GIC_STARTING = 97, + CPUHP_AP_IRQ_HIP04_STARTING = 98, + CPUHP_AP_IRQ_APPLE_AIC_STARTING = 99, + CPUHP_AP_IRQ_ARMADA_XP_STARTING = 100, + CPUHP_AP_IRQ_BCM2836_STARTING = 101, + CPUHP_AP_IRQ_MIPS_GIC_STARTING = 102, + CPUHP_AP_IRQ_RISCV_STARTING = 103, + CPUHP_AP_IRQ_SIFIVE_PLIC_STARTING = 104, + CPUHP_AP_ARM_MVEBU_COHERENCY = 105, + CPUHP_AP_MICROCODE_LOADER = 106, + CPUHP_AP_PERF_X86_AMD_UNCORE_STARTING = 107, + CPUHP_AP_PERF_X86_STARTING = 108, + CPUHP_AP_PERF_X86_AMD_IBS_STARTING = 109, + CPUHP_AP_PERF_X86_CQM_STARTING = 110, + CPUHP_AP_PERF_X86_CSTATE_STARTING = 111, + CPUHP_AP_PERF_XTENSA_STARTING = 112, + CPUHP_AP_MIPS_OP_LOONGSON3_STARTING = 113, + CPUHP_AP_ARM_SDEI_STARTING = 114, + CPUHP_AP_ARM_VFP_STARTING = 115, + CPUHP_AP_ARM64_DEBUG_MONITORS_STARTING = 116, + CPUHP_AP_PERF_ARM_HW_BREAKPOINT_STARTING = 117, + CPUHP_AP_PERF_ARM_ACPI_STARTING = 118, + CPUHP_AP_PERF_ARM_STARTING = 119, + CPUHP_AP_ARM_L2X0_STARTING = 120, + CPUHP_AP_EXYNOS4_MCT_TIMER_STARTING = 121, + CPUHP_AP_ARM_ARCH_TIMER_STARTING = 122, + CPUHP_AP_ARM_GLOBAL_TIMER_STARTING = 123, + CPUHP_AP_JCORE_TIMER_STARTING = 124, + CPUHP_AP_ARM_TWD_STARTING = 125, + CPUHP_AP_QCOM_TIMER_STARTING = 126, + CPUHP_AP_TEGRA_TIMER_STARTING = 127, + CPUHP_AP_ARMADA_TIMER_STARTING = 128, + CPUHP_AP_MARCO_TIMER_STARTING = 129, + CPUHP_AP_MIPS_GIC_TIMER_STARTING = 130, + CPUHP_AP_ARC_TIMER_STARTING = 131, + CPUHP_AP_RISCV_TIMER_STARTING = 132, + CPUHP_AP_CLINT_TIMER_STARTING = 133, + CPUHP_AP_CSKY_TIMER_STARTING = 134, + CPUHP_AP_TI_GP_TIMER_STARTING = 135, + CPUHP_AP_HYPERV_TIMER_STARTING = 136, + CPUHP_AP_KVM_STARTING = 137, + CPUHP_AP_KVM_ARM_VGIC_INIT_STARTING = 138, + CPUHP_AP_KVM_ARM_VGIC_STARTING = 139, + CPUHP_AP_KVM_ARM_TIMER_STARTING = 140, + CPUHP_AP_DUMMY_TIMER_STARTING = 141, + CPUHP_AP_ARM_XEN_STARTING = 142, + CPUHP_AP_ARM_CORESIGHT_STARTING = 143, + CPUHP_AP_ARM_CORESIGHT_CTI_STARTING = 144, + CPUHP_AP_ARM64_ISNDEP_STARTING = 145, + CPUHP_AP_SMPCFD_DYING = 146, + CPUHP_AP_X86_TBOOT_DYING = 147, + CPUHP_AP_ARM_CACHE_B15_RAC_DYING = 148, + CPUHP_AP_ONLINE = 149, + CPUHP_TEARDOWN_CPU = 150, + CPUHP_AP_ONLINE_IDLE = 151, + CPUHP_AP_SCHED_WAIT_EMPTY = 152, + CPUHP_AP_SMPBOOT_THREADS = 153, + CPUHP_AP_X86_VDSO_VMA_ONLINE = 154, + CPUHP_AP_IRQ_AFFINITY_ONLINE = 155, + CPUHP_AP_BLK_MQ_ONLINE = 156, + CPUHP_AP_ARM_MVEBU_SYNC_CLOCKS = 157, + CPUHP_AP_X86_INTEL_EPB_ONLINE = 158, + CPUHP_AP_PERF_ONLINE = 159, + CPUHP_AP_PERF_X86_ONLINE = 160, + CPUHP_AP_PERF_X86_UNCORE_ONLINE = 161, + CPUHP_AP_PERF_X86_AMD_UNCORE_ONLINE = 162, + CPUHP_AP_PERF_X86_AMD_POWER_ONLINE = 163, + CPUHP_AP_PERF_X86_RAPL_ONLINE = 164, + CPUHP_AP_PERF_X86_CQM_ONLINE = 165, + CPUHP_AP_PERF_X86_CSTATE_ONLINE = 166, + CPUHP_AP_PERF_X86_IDXD_ONLINE = 167, + CPUHP_AP_PERF_S390_CF_ONLINE = 168, + CPUHP_AP_PERF_S390_SF_ONLINE = 169, + CPUHP_AP_PERF_ARM_CCI_ONLINE = 170, + CPUHP_AP_PERF_ARM_CCN_ONLINE = 171, + CPUHP_AP_PERF_ARM_HISI_DDRC_ONLINE = 172, + CPUHP_AP_PERF_ARM_HISI_HHA_ONLINE = 173, + CPUHP_AP_PERF_ARM_HISI_L3_ONLINE = 174, + CPUHP_AP_PERF_ARM_HISI_PA_ONLINE = 175, + CPUHP_AP_PERF_ARM_HISI_SLLC_ONLINE = 176, + CPUHP_AP_PERF_ARM_L2X0_ONLINE = 177, + CPUHP_AP_PERF_ARM_QCOM_L2_ONLINE = 178, + CPUHP_AP_PERF_ARM_QCOM_L3_ONLINE = 179, + CPUHP_AP_PERF_ARM_APM_XGENE_ONLINE = 180, + CPUHP_AP_PERF_ARM_CAVIUM_TX2_UNCORE_ONLINE = 181, + CPUHP_AP_PERF_POWERPC_NEST_IMC_ONLINE = 182, + CPUHP_AP_PERF_POWERPC_CORE_IMC_ONLINE = 183, + CPUHP_AP_PERF_POWERPC_THREAD_IMC_ONLINE = 184, + CPUHP_AP_PERF_POWERPC_TRACE_IMC_ONLINE = 185, + CPUHP_AP_PERF_POWERPC_HV_24x7_ONLINE = 186, + CPUHP_AP_PERF_POWERPC_HV_GPCI_ONLINE = 187, + CPUHP_AP_PERF_CSKY_ONLINE = 188, + CPUHP_AP_WATCHDOG_ONLINE = 189, + CPUHP_AP_WORKQUEUE_ONLINE = 190, + CPUHP_AP_RANDOM_ONLINE = 191, + CPUHP_AP_RCUTREE_ONLINE = 192, + CPUHP_AP_BASE_CACHEINFO_ONLINE = 193, + CPUHP_AP_ONLINE_DYN = 194, + CPUHP_AP_ONLINE_DYN_END = 224, + CPUHP_AP_MM_DEMOTION_ONLINE = 225, + CPUHP_AP_X86_HPET_ONLINE = 226, + CPUHP_AP_X86_KVM_CLK_ONLINE = 227, + CPUHP_AP_DTPM_CPU_ONLINE = 228, + CPUHP_AP_ACTIVE = 229, + CPUHP_ONLINE = 230, }; typedef void percpu_ref_func_t(struct percpu_ref *); @@ -6499,13 +6516,9 @@ struct percpu_ref_data { struct dev_pagemap_ops { void (*page_free)(struct page *); - void (*kill)(struct dev_pagemap *); - void (*cleanup)(struct dev_pagemap *); vm_fault_t (*migrate_to_ram)(struct vm_fault *); }; -typedef void compound_page_dtor(struct page *); - enum vm_event_item { PGPGIN = 0, PGPGOUT = 1, @@ -6534,79 +6547,79 @@ enum vm_event_item { PGREUSE = 24, PGSTEAL_KSWAPD = 25, PGSTEAL_DIRECT = 26, - PGSCAN_KSWAPD = 27, - PGSCAN_DIRECT = 28, - PGSCAN_DIRECT_THROTTLE = 29, - PGSCAN_ANON = 30, - PGSCAN_FILE = 31, - PGSTEAL_ANON = 32, - PGSTEAL_FILE = 33, - PGSCAN_ZONE_RECLAIM_FAILED = 34, - PGINODESTEAL = 35, - SLABS_SCANNED = 36, - KSWAPD_INODESTEAL = 37, - KSWAPD_LOW_WMARK_HIT_QUICKLY = 38, - KSWAPD_HIGH_WMARK_HIT_QUICKLY = 39, - PAGEOUTRUN = 40, - PGROTATED = 41, - DROP_PAGECACHE = 42, - DROP_SLAB = 43, - OOM_KILL = 44, - NUMA_PTE_UPDATES = 45, - NUMA_HUGE_PTE_UPDATES = 46, - NUMA_HINT_FAULTS = 47, - NUMA_HINT_FAULTS_LOCAL = 48, - NUMA_PAGE_MIGRATE = 49, - PGMIGRATE_SUCCESS = 50, - PGMIGRATE_FAIL = 51, - THP_MIGRATION_SUCCESS = 52, - THP_MIGRATION_FAIL = 53, - THP_MIGRATION_SPLIT = 54, - COMPACTMIGRATE_SCANNED = 55, - COMPACTFREE_SCANNED = 56, - COMPACTISOLATED = 57, - COMPACTSTALL = 58, - COMPACTFAIL = 59, - COMPACTSUCCESS = 60, - KCOMPACTD_WAKE = 61, - KCOMPACTD_MIGRATE_SCANNED = 62, - KCOMPACTD_FREE_SCANNED = 63, - HTLB_BUDDY_PGALLOC = 64, - HTLB_BUDDY_PGALLOC_FAIL = 65, - UNEVICTABLE_PGCULLED = 66, - UNEVICTABLE_PGSCANNED = 67, - UNEVICTABLE_PGRESCUED = 68, - UNEVICTABLE_PGMLOCKED = 69, - UNEVICTABLE_PGMUNLOCKED = 70, - UNEVICTABLE_PGCLEARED = 71, - UNEVICTABLE_PGSTRANDED = 72, - THP_FAULT_ALLOC = 73, - THP_FAULT_FALLBACK = 74, - THP_FAULT_FALLBACK_CHARGE = 75, - THP_COLLAPSE_ALLOC = 76, - THP_COLLAPSE_ALLOC_FAILED = 77, - THP_FILE_ALLOC = 78, - THP_FILE_FALLBACK = 79, - THP_FILE_FALLBACK_CHARGE = 80, - THP_FILE_MAPPED = 81, - THP_SPLIT_PAGE = 82, - THP_SPLIT_PAGE_FAILED = 83, - THP_DEFERRED_SPLIT_PAGE = 84, - THP_SPLIT_PMD = 85, - THP_ZERO_PAGE_ALLOC = 86, - THP_ZERO_PAGE_ALLOC_FAILED = 87, - THP_SWPOUT = 88, - THP_SWPOUT_FALLBACK = 89, - BALLOON_INFLATE = 90, - BALLOON_DEFLATE = 91, - BALLOON_MIGRATE = 92, - SWAP_RA = 93, - SWAP_RA_HIT = 94, - NR_VM_EVENT_ITEMS = 95, -}; - -struct vm_event_state { - long unsigned int event[95]; + PGDEMOTE_KSWAPD = 27, + PGDEMOTE_DIRECT = 28, + PGSCAN_KSWAPD = 29, + PGSCAN_DIRECT = 30, + PGSCAN_DIRECT_THROTTLE = 31, + PGSCAN_ANON = 32, + PGSCAN_FILE = 33, + PGSTEAL_ANON = 34, + PGSTEAL_FILE = 35, + PGSCAN_ZONE_RECLAIM_FAILED = 36, + PGINODESTEAL = 37, + SLABS_SCANNED = 38, + KSWAPD_INODESTEAL = 39, + KSWAPD_LOW_WMARK_HIT_QUICKLY = 40, + KSWAPD_HIGH_WMARK_HIT_QUICKLY = 41, + PAGEOUTRUN = 42, + PGROTATED = 43, + DROP_PAGECACHE = 44, + DROP_SLAB = 45, + OOM_KILL = 46, + NUMA_PTE_UPDATES = 47, + NUMA_HUGE_PTE_UPDATES = 48, + NUMA_HINT_FAULTS = 49, + NUMA_HINT_FAULTS_LOCAL = 50, + NUMA_PAGE_MIGRATE = 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, + HTLB_BUDDY_PGALLOC = 66, + HTLB_BUDDY_PGALLOC_FAIL = 67, + CMA_ALLOC_SUCCESS = 68, + CMA_ALLOC_FAIL = 69, + UNEVICTABLE_PGCULLED = 70, + UNEVICTABLE_PGSCANNED = 71, + UNEVICTABLE_PGRESCUED = 72, + UNEVICTABLE_PGMLOCKED = 73, + UNEVICTABLE_PGMUNLOCKED = 74, + UNEVICTABLE_PGCLEARED = 75, + UNEVICTABLE_PGSTRANDED = 76, + THP_FAULT_ALLOC = 77, + THP_FAULT_FALLBACK = 78, + THP_FAULT_FALLBACK_CHARGE = 79, + THP_COLLAPSE_ALLOC = 80, + THP_COLLAPSE_ALLOC_FAILED = 81, + THP_FILE_ALLOC = 82, + THP_FILE_FALLBACK = 83, + THP_FILE_FALLBACK_CHARGE = 84, + THP_FILE_MAPPED = 85, + THP_SPLIT_PAGE = 86, + THP_SPLIT_PAGE_FAILED = 87, + THP_DEFERRED_SPLIT_PAGE = 88, + THP_SPLIT_PMD = 89, + THP_ZERO_PAGE_ALLOC = 90, + THP_ZERO_PAGE_ALLOC_FAILED = 91, + THP_SWPOUT = 92, + THP_SWPOUT_FALLBACK = 93, + BALLOON_INFLATE = 94, + BALLOON_DEFLATE = 95, + BALLOON_MIGRATE = 96, + SWAP_RA = 97, + SWAP_RA_HIT = 98, + NR_VM_EVENT_ITEMS = 99, }; struct seq_operations { @@ -6635,18 +6648,6 @@ struct trace_seq { int full; }; -typedef struct { - unsigned int __softirq_pending; - long: 32; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; -} irq_cpustat_t; - struct irq_desc; typedef void (*irq_flow_handler_t)(struct irq_desc *); @@ -6773,9 +6774,10 @@ struct fwnode_reference_args { enum kmalloc_cache_type { KMALLOC_NORMAL = 0, - KMALLOC_RECLAIM = 1, - KMALLOC_DMA = 2, - NR_KMALLOC_TYPES = 3, + KMALLOC_CGROUP = 1, + KMALLOC_RECLAIM = 2, + KMALLOC_DMA = 3, + NR_KMALLOC_TYPES = 4, }; enum irqchip_irq_state { @@ -6915,11 +6917,6 @@ struct irq_domain_chip_generic { struct irq_chip_generic *gc[0]; }; -struct nmi_ctx { - u64 hcr; - unsigned int cnt; -}; - enum perf_sw_ids { PERF_COUNT_SW_CPU_CLOCK = 0, PERF_COUNT_SW_TASK_CLOCK = 1, @@ -6932,7 +6929,8 @@ enum perf_sw_ids { PERF_COUNT_SW_EMULATION_FAULTS = 8, PERF_COUNT_SW_DUMMY = 9, PERF_COUNT_SW_BPF_OUTPUT = 10, - PERF_COUNT_SW_MAX = 11, + PERF_COUNT_SW_CGROUP_SWITCHES = 11, + PERF_COUNT_SW_MAX = 12, }; union perf_mem_data_src { @@ -6946,7 +6944,8 @@ union perf_mem_data_src { __u64 mem_lvl_num: 4; __u64 mem_remote: 1; __u64 mem_snoopx: 2; - __u64 mem_rsvd: 24; + __u64 mem_blk: 3; + __u64 mem_rsvd: 21; }; }; @@ -6962,11 +6961,13 @@ struct perf_branch_entry { __u64 reserved: 40; }; -struct perf_guest_info_callbacks { - int (*is_in_guest)(); - int (*is_user_mode)(); - long unsigned int (*get_guest_ip)(); - void (*handle_intel_pt_intr)(); +union perf_sample_weight { + __u64 full; + struct { + __u32 var1_dw; + __u16 var2_w; + __u16 var3_w; + }; }; struct new_utsname { @@ -6985,6 +6986,741 @@ struct uts_namespace { struct ns_common ns; }; +struct prot_inuse; + +struct netns_core { + struct ctl_table_header *sysctl_hdr; + int sysctl_somaxconn; + int *sock_inuse; + struct prot_inuse *prot_inuse; +}; + +struct ipstats_mib; + +struct tcp_mib; + +struct linux_mib; + +struct udp_mib; + +struct linux_xfrm_mib; + +struct linux_tls_mib; + +struct mptcp_mib; + +struct icmp_mib; + +struct icmpmsg_mib; + +struct icmpv6_mib; + +struct icmpv6msg_mib; + +struct netns_mib { + struct ipstats_mib *ip_statistics; + struct ipstats_mib *ipv6_statistics; + struct tcp_mib *tcp_statistics; + struct linux_mib *net_statistics; + struct udp_mib *udp_statistics; + struct udp_mib *udp_stats_in6; + struct linux_xfrm_mib *xfrm_statistics; + struct linux_tls_mib *tls_statistics; + struct mptcp_mib *mptcp_statistics; + struct udp_mib *udplite_statistics; + struct udp_mib *udplite_stats_in6; + struct icmp_mib *icmp_statistics; + struct icmpmsg_mib *icmpmsg_statistics; + struct icmpv6_mib *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 netns_unix { + int sysctl_max_dgram_qlen; + struct ctl_table_header *ctl; +}; + +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 { + atomic_t tw_count; + char tw_pad[60]; + struct inet_hashinfo *hashinfo; + int sysctl_max_tw_buckets; +}; + +struct local_ports { + seqlock_t lock; + int range[2]; + bool warned; +}; + +struct ping_group_range { + seqlock_t lock; + kgid_t range[2]; +}; + +struct ipv4_devconf; + +struct ip_ra_chain; + +struct fib_rules_ops; + +struct fib_table; + +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 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 *ra_chain; + struct mutex ra_mutex; + struct fib_rules_ops *rules_ops; + struct fib_table *fib_main; + struct fib_table *fib_default; + unsigned int fib_rules_require_fldissect; + bool fib_has_custom_rules; + bool fib_has_custom_local_routes; + bool fib_offload_disabled; + atomic_t fib_num_tclassid_users; + struct hlist_head *fib_table_hash; + struct sock *fibnl; + struct sock **icmp_sk; + 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; + 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_raw_l3mdev_accept; + 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_l3mdev_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; + 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_autocorking; + u8 sysctl_tcp_reflect_tos; + u8 sysctl_tcp_comp_sack_nr; + 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]; + long unsigned int sysctl_tcp_comp_sack_delay_ns; + long unsigned int sysctl_tcp_comp_sack_slack_ns; + int sysctl_max_syn_backlog; + int sysctl_tcp_fastopen; + const struct tcp_congestion_ops *tcp_congestion_control; + struct tcp_fastopen_context *tcp_fastopen_ctx; + unsigned int sysctl_tcp_fastopen_blackhole_timeout; + atomic_t tfo_active_disable_times; + long unsigned int tfo_active_disable_stamp; + int sysctl_udp_wmem_min; + int sysctl_udp_rmem_min; + u8 sysctl_fib_notify_on_flag_change; + u8 sysctl_udp_l3mdev_accept; + 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; + long unsigned int *sysctl_local_reserved_ports; + int sysctl_ip_prot_sock; + struct list_head mr_tables; + struct fib_rules_ops *mr_rules_ops; + u32 sysctl_fib_multipath_hash_fields; + u8 sysctl_fib_multipath_use_neigh; + u8 sysctl_fib_multipath_hash_policy; + 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; + 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 { + short unsigned int family; + unsigned int gc_thresh; + int (*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 *, long unsigned int); + void (*destroy)(struct dst_entry *); + void (*ifdown)(struct dst_entry *, struct net_device *, int); + 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; + long unsigned int icmpv6_ratemask[4]; + long unsigned int *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; + bool skip_notify_on_dev_down; + u8 fib_notify_on_flag_change; +}; + +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; + long unsigned int ip6_rt_last_gc; + unsigned char flowlabel_has_excl; + bool fib6_has_custom_rules; + unsigned int fib6_rules_require_fldissect; + unsigned int fib6_routes_require_src; + 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 **icmp_sk; + struct sock *ndisc_sk; + struct sock *tcp_sk; + struct sock *igmp_sk; + struct sock *mc_autojoin_sk; + 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; +}; + +struct netns_sysctl_lowpan { + struct ctl_table_header *frags_hdr; +}; + +struct netns_ieee802154_lowpan { + struct netns_sysctl_lowpan sysctl; + struct fqdir *fqdir; +}; + +struct sctp_mib; + +struct netns_sctp { + struct sctp_mib *sctp_statistics; + struct proc_dir_entry *proc_net_sctp; + struct ctl_table_header *sysctl_header; + struct sock *ctl_sock; + struct sock *udp4_sock; + struct sock *udp6_sock; + int udp_port; + int encap_port; + struct list_head local_addr_list; + struct list_head addr_waitq; + struct timer_list addr_wq_timer; + struct list_head auto_asconf_splist; + spinlock_t addr_wq_lock; + spinlock_t local_addr_lock; + unsigned int rto_initial; + unsigned int rto_min; + unsigned int rto_max; + int rto_alpha; + int rto_beta; + int max_burst; + int cookie_preserve_enable; + char *sctp_hmac_alg; + unsigned int valid_cookie_life; + unsigned int sack_timeout; + unsigned int hb_interval; + unsigned int probe_interval; + int max_retrans_association; + int max_retrans_path; + int max_retrans_init; + int pf_retrans; + int ps_retrans; + int pf_enable; + int pf_expose; + int sndbuf_policy; + int rcvbuf_policy; + int default_auto_asconf; + int addip_enable; + int addip_noauth; + int prsctp_enable; + int reconf_enable; + int auth_enable; + int intl_enable; + int ecn_enable; + int scope_policy; + int rwnd_upd_shift; + long unsigned int max_autoclose; +}; + +struct nf_logger; + +struct nf_hook_entries; + +struct netns_nf { + struct proc_dir_entry *proc_netfilter; + const struct nf_logger *nf_loggers[13]; + struct ctl_table_header *nf_log_dir_header; + struct nf_hook_entries *hooks_ipv4[5]; + struct nf_hook_entries *hooks_ipv6[5]; + struct nf_hook_entries *hooks_arp[3]; + struct nf_hook_entries *hooks_bridge[5]; + struct nf_hook_entries *hooks_decnet[7]; + unsigned int defrag_ipv4_users; + unsigned int defrag_ipv6_users; +}; + +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; + unsigned int offload_timeout; +}; + +struct nf_udp_net { + unsigned int timeouts[2]; + unsigned int offload_timeout; +}; + +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 ct_pcpu; + +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_auto_assign_helper; + u8 sysctl_tstamp; + u8 sysctl_checksum; + struct ct_pcpu *pcpu_lists; + struct ip_conntrack_stat *stat; + struct nf_ct_event_notifier *nf_conntrack_event_cb; + struct nf_ip_net nf_ct_proto; + unsigned int labels_used; +}; + +struct netns_nftables { + u8 gencursor; +}; + +struct sk_buff_head { + struct sk_buff *next; + struct sk_buff *prev; + __u32 qlen; + spinlock_t lock; +}; + +struct netns_bpf { + struct bpf_prog_array *run_array[2]; + struct bpf_prog *progs[2]; + struct list_head links[2]; +}; + +struct xfrm_policy_hash { + struct hlist_head *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 *state_bydst; + struct hlist_head *state_bysrc; + struct hlist_head *state_byspi; + struct hlist_head *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; + 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; + 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; + long: 64; + long: 64; +}; + +struct netns_ipvs; + +struct mpls_route; + +struct netns_mpls { + int ip_ttl_propagate; + int default_ttl; + size_t platform_labels; + struct mpls_route **platform_label; + struct ctl_table_header *ctl; +}; + +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; +}; + +struct netns_xdp { + struct mutex lock; + struct hlist_head list; +}; + +struct netns_mctp { + struct list_head routes; + struct mutex bind_lock; + struct hlist_head binds; + spinlock_t keys_lock; + struct hlist_head keys; + unsigned int default_net; + struct mutex neigh_lock; + struct list_head neighbours; +}; + +struct smc_stats; + +struct smc_stats_rsn; + +struct netns_smc { + struct smc_stats *smc_stats; + struct mutex mutex_fback_rsn; + struct smc_stats_rsn *fback_rsn; +}; + +struct uevent_sock; + +struct net_generic; + +struct net { + refcount_t passive; + spinlock_t rules_mod_lock; + unsigned int dev_unreg_count; + unsigned int dev_base_seq; + int 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 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 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; + struct netns_ipv4 ipv4; + struct netns_ipv6 ipv6; + struct netns_ieee802154_lowpan ieee802154_lowpan; + struct netns_sctp sctp; + struct netns_nf nf; + struct netns_ct ct; + struct netns_nftables nft; + struct sk_buff_head wext_nlevents; + struct net_generic *gen; + struct netns_bpf bpf; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + struct netns_xfrm xfrm; + u64 net_cookie; + struct netns_ipvs *ipvs; + struct netns_mpls mpls; + struct netns_can can; + struct netns_xdp xdp; + struct netns_mctp mctp; + struct sock *crypto_nlsk; + struct sock *diag_nlsk; + struct netns_smc smc; + long: 64; +}; + struct cgroup_namespace { struct ns_common ns; struct user_namespace *user_ns; @@ -7010,14 +7746,6 @@ struct proc_ns_operations { struct ns_common * (*get_parent)(struct ns_common *); }; -struct ucounts { - struct hlist_node node; - struct user_namespace *ns; - kuid_t uid; - int count; - atomic_t ucount[10]; -}; - struct iovec { void *iov_base; __kernel_size_t iov_len; @@ -7032,1047 +7760,172 @@ struct ftrace_regs { struct pt_regs regs; }; -enum ftrace_tracing_type_t { - FTRACE_TYPE_ENTER = 0, - FTRACE_TYPE_RETURN = 1, -}; - -enum ftrace_bug_type { - FTRACE_BUG_UNKNOWN = 0, - FTRACE_BUG_INIT = 1, - FTRACE_BUG_NOP = 2, - FTRACE_BUG_CALL = 3, - FTRACE_BUG_UPDATE = 4, -}; - -struct ftrace_graph_ent { - long unsigned int func; - int depth; -} __attribute__((packed)); - -struct ftrace_graph_ret { - long unsigned int func; - int depth; - unsigned int overrun; - long long unsigned int calltime; - long long unsigned int rettime; -}; - -typedef void (*trace_func_graph_ret_t)(struct ftrace_graph_ret *); - -typedef int (*trace_func_graph_ent_t)(struct ftrace_graph_ent *); - struct perf_regs { __u64 abi; struct pt_regs *regs; }; -struct kernel_cpustat { - u64 cpustat[10]; -}; - -struct kernel_stat { - long unsigned int irqs_sum; - unsigned int softirqs[10]; -}; - struct u64_stats_sync {}; -struct bpf_insn { - __u8 code; - __u8 dst_reg: 4; - __u8 src_reg: 4; - __s16 off; - __s32 imm; -}; - struct bpf_cgroup_storage_key { __u64 cgroup_inode_id; __u32 attach_type; }; -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 = 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, -}; - -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, -}; - -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, - __MAX_BPF_ATTACH_TYPE = 38, -}; - -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; - }; - 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; - }; - }; - struct { - __u64 pathname; - __u32 bpf_fd; - __u32 file_flags; - }; - struct { - __u32 target_fd; - __u32 attach_bpf_fd; - __u32 attach_type; - __u32 attach_flags; - __u32 replace_bpf_fd; - }; - 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; - } 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 { - __u32 target_fd; - __u32 attach_type; - __u32 query_flags; - __u32 attach_flags; - __u64 prog_ids; - __u32 prog_cnt; - } 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; - }; - 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 { - __u32 prog_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; - }; - }; - } link_create; - struct { - __u32 link_fd; - __u32 new_prog_fd; - __u32 flags; - __u32 old_prog_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; -}; - -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_MAX_ID = 163, -}; - -struct bpf_func_info { - __u32 insn_off; - __u32 type_id; -}; - -struct bpf_line_info { - __u32 insn_off; - __u32 file_name_off; - __u32 line_off; - __u32 line_col; -}; - -struct bpf_iter_aux_info; - -typedef int (*bpf_iter_init_seq_priv_t)(void *, struct bpf_iter_aux_info *); - -struct bpf_map; - -struct bpf_iter_aux_info { - struct bpf_map *map; -}; - -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 btf; - -struct btf_type; - -struct bpf_prog_aux; - -struct bpf_local_storage_map; - -struct bpf_local_storage; - -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 *); - int (*map_lookup_and_delete_batch)(struct bpf_map *, const union bpf_attr *, union bpf_attr *); - int (*map_update_batch)(struct bpf_map *, const union bpf_attr *, union bpf_attr *); - int (*map_delete_batch)(struct bpf_map *, const union bpf_attr *, union bpf_attr *); - void * (*map_lookup_elem)(struct bpf_map *, void *); - int (*map_update_elem)(struct bpf_map *, void *, void *, u64); - int (*map_delete_elem)(struct bpf_map *, void *); - int (*map_push_elem)(struct bpf_map *, void *, u64); - int (*map_pop_elem)(struct bpf_map *, void *); - int (*map_peek_elem)(struct bpf_map *, void *); - void * (*map_fd_get_ptr)(struct bpf_map *, struct file *, int); - void (*map_fd_put_ptr)(void *); - 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 ** (*map_owner_storage_ptr)(void *); - bool (*map_meta_equal)(const struct bpf_map *, const struct bpf_map *); - const char * const map_btf_name; - int *map_btf_id; - const struct bpf_iter_seq_info *iter_seq_info; -}; - -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; - u32 map_flags; - int spin_lock_off; - u32 id; - int numa_node; - u32 btf_key_type_id; - u32 btf_value_type_id; - struct btf *btf; - struct mem_cgroup *memcg; - char name[16]; - u32 btf_vmlinux_value_type_id; - bool bypass_spec_v1; - bool frozen; - long: 16; - long: 64; - long: 64; - long: 64; - atomic64_t refcnt; - atomic64_t usercnt; - struct work_struct work; - struct mutex freeze_mutex; - u64 writecnt; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; -}; - -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 bpf_storage_buffer; -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 *base_btf; - u32 start_id; - u32 start_str_off; - char name[56]; - bool kernel_btf; -}; +struct bpf_cgroup_storage_map; -struct btf_type { - __u32 name_off; - __u32 info; +struct bpf_cgroup_storage { union { - __u32 size; - __u32 type; + struct bpf_storage_buffer *buf; + void *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_ksym { - long unsigned int start; - long unsigned int end; - char name[128]; - struct list_head lnode; - struct latch_tree_node tnode; - bool prog; -}; - -struct bpf_ctx_arg_aux; - -struct bpf_trampoline; - -struct bpf_jit_poke_descriptor; - -struct bpf_prog_ops; - -struct bpf_prog_offload; - -struct bpf_func_info_aux; - -struct bpf_prog_stats; - -struct bpf_prog_aux { - atomic64_t refcnt; - u32 used_map_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 offload_requested; - bool attach_btf_trace; - bool func_proto_unreliable; - bool sleepable; - bool tail_call_reachable; - struct hlist_node tramp_hlist; - 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; - 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 bpf_prog_array_item { struct bpf_prog *prog; - struct user_struct *user; - u64 load_time; - 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; - u32 num_exentries; - struct exception_table_entry *extable; - struct bpf_prog_stats *stats; union { - struct work_struct work; - struct callback_head rcu; + struct bpf_cgroup_storage *cgroup_storage[2]; + u64 bpf_cookie; }; }; -struct sock_filter { - __u16 code; - __u8 jt; - __u8 jf; - __u32 k; -}; - -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 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; - enum bpf_prog_type type; - enum bpf_attach_type expected_attach_type; - u32 len; - u32 jited_len; - u8 tag[8]; - struct bpf_prog_aux *aux; - struct sock_fprog_kern *orig_prog; - unsigned int (*bpf_func)(const void *, const struct bpf_insn *); - struct sock_filter insns[0]; - struct bpf_insn insnsi[0]; +struct bpf_prog_array { + struct callback_head rcu; + struct bpf_prog_array_item items[0]; }; -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_UNINIT_MAP_VALUE = 4, - ARG_PTR_TO_MAP_VALUE_OR_NULL = 5, - ARG_PTR_TO_MEM = 6, - ARG_PTR_TO_MEM_OR_NULL = 7, - ARG_PTR_TO_UNINIT_MEM = 8, - ARG_CONST_SIZE = 9, - ARG_CONST_SIZE_OR_ZERO = 10, - ARG_PTR_TO_CTX = 11, - ARG_PTR_TO_CTX_OR_NULL = 12, - ARG_ANYTHING = 13, - ARG_PTR_TO_SPIN_LOCK = 14, - ARG_PTR_TO_SOCK_COMMON = 15, - ARG_PTR_TO_INT = 16, - ARG_PTR_TO_LONG = 17, - ARG_PTR_TO_SOCKET = 18, - ARG_PTR_TO_SOCKET_OR_NULL = 19, - ARG_PTR_TO_BTF_ID = 20, - ARG_PTR_TO_ALLOC_MEM = 21, - ARG_PTR_TO_ALLOC_MEM_OR_NULL = 22, - ARG_CONST_ALLOC_SIZE_OR_ZERO = 23, - ARG_PTR_TO_BTF_ID_SOCK_COMMON = 24, - ARG_PTR_TO_PERCPU_BTF_ID = 25, - __BPF_ARG_TYPE_MAX = 26, -}; +typedef unsigned int sk_buff_data_t; -enum bpf_return_type { - RET_INTEGER = 0, - RET_VOID = 1, - RET_PTR_TO_MAP_VALUE = 2, - RET_PTR_TO_MAP_VALUE_OR_NULL = 3, - RET_PTR_TO_SOCKET_OR_NULL = 4, - RET_PTR_TO_TCP_SOCK_OR_NULL = 5, - RET_PTR_TO_SOCK_COMMON_OR_NULL = 6, - RET_PTR_TO_ALLOC_MEM_OR_NULL = 7, - RET_PTR_TO_BTF_ID_OR_NULL = 8, - RET_PTR_TO_MEM_OR_BTF_ID_OR_NULL = 9, - RET_PTR_TO_MEM_OR_BTF_ID = 10, - RET_PTR_TO_BTF_ID = 11, -}; +struct skb_ext; -struct bpf_func_proto { - u64 (*func)(u64, u64, u64, u64, u64); - bool gpl_only; - bool pkt_access; - enum bpf_return_type ret_type; +struct sk_buff { 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; + struct sk_buff *next; + struct sk_buff *prev; + union { + struct net_device *dev; + long unsigned int dev_scratch; + }; }; - enum bpf_arg_type arg_type[5]; + struct rb_node rbnode; + struct list_head list; + }; + union { + struct sock *sk; + int ip_defrag_offset; + }; + union { + ktime_t tstamp; + u64 skb_mstamp_ns; }; + char cb[48]; union { struct { - u32 *arg1_btf_id; - u32 *arg2_btf_id; - u32 *arg3_btf_id; - u32 *arg4_btf_id; - u32 *arg5_btf_id; + long unsigned int _skb_refdst; + void (*destructor)(struct sk_buff *); }; - u32 *arg_btf_id[5]; + struct list_head tcp_tsorted_anchor; + long unsigned int _sk_redir; }; - int *ret_btf_id; - bool (*allowed)(const struct bpf_prog *); -}; - -enum bpf_access_type { - BPF_READ = 1, - BPF_WRITE = 2, -}; - -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_VALUE_OR_NULL = 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_SOCKET_OR_NULL = 12, - PTR_TO_SOCK_COMMON = 13, - PTR_TO_SOCK_COMMON_OR_NULL = 14, - PTR_TO_TCP_SOCK = 15, - PTR_TO_TCP_SOCK_OR_NULL = 16, - PTR_TO_TP_BUFFER = 17, - PTR_TO_XDP_SOCK = 18, - PTR_TO_BTF_ID = 19, - PTR_TO_BTF_ID_OR_NULL = 20, - PTR_TO_MEM = 21, - PTR_TO_MEM_OR_NULL = 22, - PTR_TO_RDONLY_BUF = 23, - PTR_TO_RDONLY_BUF_OR_NULL = 24, - PTR_TO_RDWR_BUF = 25, - PTR_TO_RDWR_BUF_OR_NULL = 26, - PTR_TO_PERCPU_BTF_ID = 27, -}; - -struct bpf_verifier_log; - -struct bpf_insn_access_aux { - enum bpf_reg_type reg_type; + long unsigned int _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; + __u32 headers_start[0]; + __u8 __pkt_type_offset[0]; + __u8 pkt_type: 3; + __u8 ignore_df: 1; + __u8 nf_trace: 1; + __u8 ip_summed: 2; + __u8 ooo_okay: 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 __pkt_vlan_present_offset[0]; + __u8 vlan_present: 1; + __u8 csum_complete_sw: 1; + __u8 csum_level: 2; + __u8 csum_not_inet: 1; + __u8 dst_pending_confirm: 1; + __u8 ndisc_nodetype: 2; + __u8 ipvs_property: 1; + __u8 inner_protocol_type: 1; + __u8 remcsum_offload: 1; + __u8 offload_fwd_mark: 1; + __u8 offload_l3_fwd_mark: 1; + __u8 tc_skip_classify: 1; + __u8 tc_at_ingress: 1; + __u8 redirected: 1; + __u8 from_ingress: 1; + __u8 decrypted: 1; + __u8 slow_gro: 1; + __u8 scm_io_uring: 1; + __u16 tc_index; union { - int ctx_field_size; + __wsum csum; struct { - struct btf *btf; - u32 btf_id; + __u16 csum_start; + __u16 csum_offset; }; }; - struct bpf_verifier_log *log; -}; - -struct bpf_prog_ops { - int (*test_run)(struct bpf_prog *, const union bpf_attr *, union bpf_attr *); -}; - -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 btf *, const struct btf_type *, int, int, enum bpf_access_type, u32 *); -}; - -struct net_device; - -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; -}; - -struct bpf_prog_stats { - u64 cnt; - u64 nsecs; - struct u64_stats_sync syncp; -}; - -struct btf_func_model { - u8 ret_size; - u8 nr_args; - u8 arg_size[12]; -}; - -struct bpf_tramp_image { - void *image; - struct bpf_ksym ksym; - struct percpu_ref pcref; - void *ip_after_call; - void *ip_epilogue; + __u32 priority; + int skb_iif; + __u32 hash; + __be16 vlan_proto; + __u16 vlan_tci; union { - struct callback_head rcu; - struct work_struct work; + unsigned int napi_id; + unsigned int sender_cpu; }; -}; - -struct bpf_trampoline { - struct hlist_node hlist; - struct mutex mutex; - refcount_t refcnt; - 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; - u64 selector; - struct module *mod; -}; - -struct bpf_func_info_aux { - u16 linkage; - bool unreliable; -}; - -struct bpf_jit_poke_descriptor { - void *tailcall_target; - void *tailcall_bypass; - void *bypass_addr; - void *aux; + __u32 secmark; union { - struct { - struct bpf_map *map; - u32 key; - } tail_call; + __u32 mark; + __u32 reserved_tailroom; }; - bool tailcall_target_stable; - u8 adj_off; - u16 reason; - u32 insn_idx; -}; - -struct bpf_ctx_arg_aux { - u32 offset; - enum bpf_reg_type reg_type; - u32 btf_id; -}; - -struct bpf_cgroup_storage; - -struct bpf_prog_array_item { - struct bpf_prog *prog; - struct bpf_cgroup_storage *cgroup_storage[2]; -}; - -struct bpf_storage_buffer; - -struct bpf_cgroup_storage_map; - -struct bpf_cgroup_storage { union { - struct bpf_storage_buffer *buf; - void *percpu_buf; + __be16 inner_protocol; + __u8 inner_ipproto; }; - 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_prog_array { - struct callback_head rcu; - struct bpf_prog_array_item items[0]; -}; - -struct bpf_cgroup_storage_info { - struct task_struct *task; - struct bpf_cgroup_storage *storage[2]; + __u16 inner_transport_header; + __u16 inner_network_header; + __u16 inner_mac_header; + __be16 protocol; + __u16 transport_header; + __u16 network_header; + __u16 mac_header; + __u32 headers_end[0]; + 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 bpf_storage_buffer { @@ -8082,13 +7935,11 @@ struct bpf_storage_buffer { struct psi_group_cpu { seqcount_t seq; - unsigned int tasks[4]; + unsigned int tasks[5]; u32 state_mask; - u32 times[6]; + u32 times[7]; u64 state_start; - long: 64; - u32 times_prev[12]; - long: 64; + u32 times_prev[14]; long: 64; }; @@ -8289,7 +8140,7 @@ struct perf_sample_data { struct perf_raw_record *raw; struct perf_branch_stack *br_stack; u64 period; - u64 weight; + union perf_sample_weight weight; u64 txn; union perf_mem_data_src data_src; u64 type; @@ -8333,6 +8184,8 @@ struct perf_cgroup { struct perf_cgroup_info { u64 time; u64 timestamp; + u64 timeoffset; + int active; }; struct trace_entry { @@ -8361,6 +8214,9 @@ struct trace_iterator { long unsigned int iter_flags; void *temp; unsigned int temp_size; + char *fmt; + unsigned int fmt_size; + long int wait_index; struct trace_seq tmp_seq; cpumask_var_t started; bool snapshot; @@ -8436,8 +8292,7 @@ struct trace_event_buffer { struct ring_buffer_event *event; struct trace_event_file *trace_file; void *entry; - long unsigned int flags; - int pc; + unsigned int trace_ctx; struct pt_regs *regs; }; @@ -8462,8 +8317,10 @@ enum { TRACE_EVENT_FL_NO_SET_FILTER_BIT = 2, TRACE_EVENT_FL_IGNORE_ENABLE_BIT = 3, TRACE_EVENT_FL_TRACEPOINT_BIT = 4, - TRACE_EVENT_FL_KPROBE_BIT = 5, - TRACE_EVENT_FL_UPROBE_BIT = 6, + TRACE_EVENT_FL_DYNAMIC_BIT = 5, + TRACE_EVENT_FL_KPROBE_BIT = 6, + TRACE_EVENT_FL_UPROBE_BIT = 7, + TRACE_EVENT_FL_EPROBE_BIT = 8, }; enum { @@ -8472,720 +8329,94 @@ enum { TRACE_EVENT_FL_NO_SET_FILTER = 4, TRACE_EVENT_FL_IGNORE_ENABLE = 8, TRACE_EVENT_FL_TRACEPOINT = 16, - TRACE_EVENT_FL_KPROBE = 32, - TRACE_EVENT_FL_UPROBE = 64, + TRACE_EVENT_FL_DYNAMIC = 32, + TRACE_EVENT_FL_KPROBE = 64, + TRACE_EVENT_FL_UPROBE = 128, + TRACE_EVENT_FL_EPROBE = 256, }; 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, -}; - -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, -}; - -enum { - FILTER_OTHER = 0, - FILTER_STATIC_STRING = 1, - FILTER_DYN_STRING = 2, - FILTER_PTR_STRING = 3, - FILTER_TRACE_FN = 4, - FILTER_COMM = 5, - FILTER_CPU = 6, -}; - -enum memblock_flags { - MEMBLOCK_NONE = 0, - MEMBLOCK_HOTPLUG = 1, - MEMBLOCK_MIRROR = 2, - MEMBLOCK_NOMAP = 4, -}; - -struct memblock_region { - phys_addr_t base; - phys_addr_t size; - enum memblock_flags flags; - int nid; -}; - -struct memblock_type { - long unsigned int cnt; - long unsigned int max; - phys_addr_t total_size; - struct memblock_region *regions; - char *name; -}; - -struct memblock { - bool bottom_up; - phys_addr_t current_limit; - struct memblock_type memory; - struct memblock_type reserved; -}; - -struct property { - char *name; - int length; - void *value; - struct property *next; - long unsigned int _flags; - struct bin_attribute attr; -}; - -struct irq_fwspec { - struct fwnode_handle *fwnode; - int param_count; - u32 param[16]; -}; - -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, long unsigned int *, 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 *, long unsigned int *, unsigned int *); -}; - -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_generic_address { - u8 space_id; - u8 bit_width; - u8 bit_offset; - u8 access_width; - u64 address; -} __attribute__((packed)); - -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)); - -enum reboot_mode { - REBOOT_UNDEFINED = 4294967295, - REBOOT_COLD = 0, - REBOOT_WARM = 1, - REBOOT_HARD = 2, - REBOOT_SOFT = 3, - REBOOT_GPIO = 4, -}; - -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, -}; - -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 long unsigned int efi_status_t; - -typedef u8 efi_bool_t; - -typedef u16 efi_char16_t; - -typedef guid_t efi_guid_t; - -typedef struct { - u64 signature; - u32 revision; - u32 headersize; - u32 crc32; - u32 reserved; -} efi_table_hdr_t; - -typedef struct { - u32 type; - u32 pad; - u64 phys_addr; - u64 virt_addr; - u64 num_pages; - u64 attribute; -} efi_memory_desc_t; - -typedef struct { - efi_guid_t guid; - u32 headersize; - u32 flags; - u32 imagesize; -} efi_capsule_header_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 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 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 *, long unsigned int *, void *); - -typedef efi_status_t efi_get_next_variable_t(long unsigned int *, efi_char16_t *, efi_guid_t *); - -typedef efi_status_t efi_set_variable_t(efi_char16_t *, efi_guid_t *, u32, long unsigned int, void *); - -typedef efi_status_t efi_get_next_high_mono_count_t(u32 *); - -typedef void efi_reset_system_t(int, efi_status_t, long unsigned int, efi_char16_t *); - -typedef efi_status_t efi_set_virtual_address_map_t(long unsigned int, long unsigned int, u32, efi_memory_desc_t *); - -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 **, long unsigned int, long unsigned int); - -typedef efi_status_t efi_query_capsule_caps_t(efi_capsule_header_t **, long unsigned int, u64 *, int *); - -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; - long unsigned int desc_version; - long unsigned int desc_size; - long unsigned int flags; -}; - -struct efi { - const efi_runtime_services_t *runtime; - unsigned int runtime_version; - unsigned int runtime_supported_mask; - long unsigned int acpi; - long unsigned int acpi20; - long unsigned int smbios; - long unsigned int smbios3; - long unsigned int esrt; - long unsigned int tpm_log; - long unsigned int tpm_final_log; - long unsigned int mokvar_table; - 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; - long unsigned int flags; -}; - -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, -}; - -struct efi_runtime_work { - void *arg1; - void *arg2; - void *arg3; - void *arg4; - void *arg5; - efi_status_t status; - struct work_struct work; - enum efi_rts_ids efi_rts_id; - struct completion efi_rts_comp; -}; - -struct psci_operations { - u32 (*get_version)(); - int (*cpu_suspend)(u32, long unsigned int); - int (*cpu_off)(u32); - int (*cpu_on)(long unsigned int, long unsigned int); - int (*migrate)(long unsigned int); - int (*affinity_info)(long unsigned int, long unsigned int); - int (*migrate_info_type)(); -}; - -struct mpidr_hash { - u64 mask; - u32 shift_aff[4]; - u32 bits; -}; - -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_COUNT = 5, -}; - -struct xbc_node { - u16 next; - u16 child; - u16 parent; - u16 data; -}; - -enum con_scroll { - SM_UP = 0, - SM_DOWN = 1, -}; - -enum vc_intensity { - VCI_HALF_BRIGHT = 0, - VCI_NORMAL = 1, - VCI_BOLD = 2, - VCI_MASK = 3, -}; - -struct vc_data; - -struct console_font; - -struct consw { - struct module *owner; - const char * (*con_startup)(); - void (*con_init)(struct vc_data *, int); - void (*con_deinit)(struct vc_data *); - void (*con_clear)(struct vc_data *, int, int, int, int); - void (*con_putc)(struct vc_data *, int, int, int); - void (*con_putcs)(struct vc_data *, const short unsigned int *, int, int, int); - void (*con_cursor)(struct vc_data *, int); - bool (*con_scroll)(struct vc_data *, unsigned int, unsigned int, enum con_scroll, unsigned int); - int (*con_switch)(struct vc_data *); - int (*con_blank)(struct vc_data *, int, int); - int (*con_font_set)(struct vc_data *, struct console_font *, unsigned int); - int (*con_font_get)(struct vc_data *, struct console_font *); - int (*con_font_default)(struct vc_data *, struct console_font *, char *); - int (*con_resize)(struct vc_data *, unsigned int, unsigned int, unsigned int); - void (*con_set_palette)(struct vc_data *, const unsigned char *); - void (*con_scrolldelta)(struct vc_data *, int); - int (*con_set_origin)(struct vc_data *); - void (*con_save_screen)(struct vc_data *); - u8 (*con_build_attr)(struct vc_data *, u8, enum vc_intensity, bool, bool, bool, bool); - void (*con_invert_region)(struct vc_data *, u16 *, int); - u16 * (*con_screen_pos)(const struct vc_data *, int); - long unsigned int (*con_getxy)(struct vc_data *, long unsigned int, int *, int *); - void (*con_flush_scrollback)(struct vc_data *); - int (*con_debug_enter)(struct vc_data *); - int (*con_debug_leave)(struct vc_data *); -}; - -struct tty_buffer { - union { - struct tty_buffer *next; - struct llist_node free; - }; - int used; - int size; - int commit; - int read; - int flags; - long unsigned int 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; - long unsigned int flags; - long unsigned int iflags; - unsigned char console: 1; - unsigned char low_latency: 1; - struct mutex mutex; - struct mutex buf_mutex; - unsigned char *xmit_buf; - unsigned int close_delay; - unsigned int closing_wait; - int drain_delay; - struct kref kref; - void *client_data; -}; - -struct vc_state { - unsigned int x; - unsigned int y; - unsigned char color; - unsigned char Gx_charset[2]; - unsigned int charset: 1; - enum vc_intensity intensity; - bool italic; - bool underline; - bool blink; - bool reverse; -}; - -struct console_font { - unsigned int width; - unsigned int height; - unsigned int charcount; - unsigned char *data; -}; - -struct vt_mode { - char mode; - char waitv; - short int relsig; - short int acqsig; - short int frsig; -}; - -struct uni_pagedir; - -struct uni_screen; - -struct vc_data { - struct tty_port port; - struct vc_state state; - struct vc_state saved_state; - short unsigned int vc_num; - unsigned int vc_cols; - unsigned int vc_rows; - unsigned int vc_size_row; - unsigned int vc_scan_lines; - unsigned int vc_cell_height; - long unsigned int vc_origin; - long unsigned int vc_scr_end; - long unsigned int vc_visible_origin; - unsigned int vc_top; - unsigned int vc_bottom; - const struct consw *vc_sw; - short unsigned int *vc_screenbuf; - unsigned int vc_screenbuf_size; - unsigned char vc_mode; - unsigned char vc_attr; - unsigned char vc_def_color; - unsigned char vc_ulcolor; - unsigned char vc_itcolor; - unsigned char vc_halfcolor; - unsigned int vc_cursor_type; - short unsigned int vc_complement_mask; - short unsigned int vc_s_complement_mask; - long unsigned int vc_pos; - short unsigned int vc_hi_font_mask; - struct console_font vc_font; - short unsigned int vc_video_erase_char; - unsigned int vc_state; - unsigned int vc_npar; - unsigned int vc_par[16]; - struct vt_mode vt_mode; - struct pid *vt_pid; - int vt_newvt; - wait_queue_head_t paste_wait; - unsigned int vc_disp_ctrl: 1; - unsigned int vc_toggle_meta: 1; - unsigned int vc_decscnm: 1; - unsigned int vc_decom: 1; - unsigned int vc_decawm: 1; - unsigned int vc_deccm: 1; - unsigned int vc_decim: 1; - unsigned int vc_priv: 3; - unsigned int vc_need_wrap: 1; - unsigned int vc_can_do_color: 1; - unsigned int vc_report_mouse: 2; - unsigned char vc_utf: 1; - unsigned char vc_utf_count; - int vc_utf_char; - long unsigned int vc_tab_stop[4]; - unsigned char vc_palette[48]; - short unsigned int *vc_translate; - unsigned int vc_resize_user; - unsigned int vc_bell_pitch; - unsigned int vc_bell_duration; - short unsigned int vc_cur_blink_ms; - struct vc_data **vc_display_fg; - struct uni_pagedir *vc_uni_pagedir; - struct uni_pagedir **vc_uni_pagedir_loc; - struct uni_screen *vc_uni_screen; -}; - -struct tty_driver; - -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 int flags; - short int index; - int cflag; - void *data; - struct console *next; + 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, }; -struct kprobe; - -struct prev_kprobe { - struct kprobe *kp; - unsigned int status; +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, }; -typedef int (*kprobe_pre_handler_t)(struct kprobe *, struct pt_regs *); - -typedef void (*kprobe_post_handler_t)(struct kprobe *, struct pt_regs *, long unsigned int); +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, +}; -typedef int (*kprobe_fault_handler_t)(struct kprobe *, struct pt_regs *, int); +enum { + FILTER_OTHER = 0, + FILTER_STATIC_STRING = 1, + FILTER_DYN_STRING = 2, + FILTER_PTR_STRING = 3, + FILTER_TRACE_FN = 4, + FILTER_COMM = 5, + FILTER_CPU = 6, +}; -struct kprobe { - struct hlist_node hlist; - struct list_head list; - long unsigned int 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_fault_handler_t fault_handler; - kprobe_opcode_t opcode; - struct arch_specific_insn ainsn; - u32 flags; +struct property { + char *name; + int length; + void *value; + struct property *next; + long unsigned int _flags; + struct bin_attribute attr; }; -struct kprobe_ctlblk { - unsigned int kprobe_status; - long unsigned int saved_irqflag; - struct prev_kprobe prev_kprobe; +struct irq_fwspec { + struct fwnode_handle *fwnode; + int param_count; + u32 param[16]; }; -struct kretprobe_blackpoint { - const char *name; - void *addr; +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, long unsigned int *, 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 *, long unsigned int *, unsigned int *); }; -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 xbc_node { + u16 next; + u16 child; + u16 parent; + u16 data; }; enum wb_stat_item { @@ -9196,8 +8427,6 @@ enum wb_stat_item { NR_WB_STAT_ITEMS = 4, }; -struct disk_part_tbl; - struct block_device_operations; struct timer_rand_state; @@ -9215,14 +8444,18 @@ struct gendisk { char disk_name[32]; short unsigned int events; short unsigned int event_flags; - struct disk_part_tbl *part_tbl; + struct xarray part_tbl; struct block_device *part0; const struct block_device_operations *fops; struct request_queue *queue; void *private_data; int flags; long unsigned int state; + struct mutex open_mutex; + unsigned int open_partitions; + struct backing_dev_info *bdi; struct kobject *slave_dir; + struct list_head slave_bdevs; struct timer_rand_state *random; atomic_t sync_io; struct disk_events *ev; @@ -9231,6 +8464,7 @@ struct gendisk { int node_id; struct badblocks *bb; struct lockdep_map lockdep_map; + u64 diskseq; }; struct partition_meta_info { @@ -9241,7 +8475,6 @@ struct partition_meta_info { struct bio_integrity_payload { struct bio *bip_bio; struct bvec_iter bip_iter; - short unsigned int bip_slab; short unsigned int bip_vcnt; short unsigned int bip_max_vcnt; short unsigned int bip_flags; @@ -9276,7 +8509,7 @@ struct blkcg_gq { bool online; struct blkg_iostat_set *iostat_cpu; struct blkg_iostat_set iostat; - struct blkg_policy_data *pd[5]; + struct blkg_policy_data *pd[6]; spinlock_t async_bio_lock; struct bio_list async_bios; struct work_struct async_bio_work; @@ -9288,14 +8521,9 @@ struct blkcg_gq { struct callback_head callback_head; }; -typedef unsigned int blk_qc_t; +typedef __u32 blk_mq_req_flags_t; -struct disk_part_tbl { - struct callback_head callback_head; - int len; - struct block_device *last_lookup; - struct block_device *part[0]; -}; +typedef unsigned int blk_qc_t; struct blk_integrity_iter; @@ -9330,7 +8558,6 @@ struct block_device_operations { int (*compat_ioctl)(struct block_device *, fmode_t, unsigned int, long unsigned int); unsigned int (*check_events)(struct gendisk *, unsigned int); void (*unlock_native_capacity)(struct gendisk *); - int (*revalidate_disk)(struct gendisk *); int (*getgeo)(struct block_device *, struct hd_geometry *); int (*set_read_only)(struct block_device *, bool); void (*swap_slot_free_notify)(struct block_device *, long unsigned int); @@ -9338,95 +8565,62 @@ struct block_device_operations { char * (*devnode)(struct gendisk *, umode_t *); struct module *owner; const struct pr_ops *pr_ops; + int (*alternative_gpt_sector)(struct gendisk *, sector_t *); }; -enum kgdb_bptype { - BP_BREAKPOINT = 0, - BP_HARDWARE_BREAKPOINT = 1, - BP_WRITE_WATCHPOINT = 2, - BP_READ_WATCHPOINT = 3, - BP_ACCESS_WATCHPOINT = 4, - BP_POKE_BREAKPOINT = 5, -}; - -struct dbg_reg_def_t { - char *name; - int size; - int offset; -}; - -struct kgdb_arch { - unsigned char gdb_bpt_instr[4]; - long unsigned int flags; - int (*set_breakpoint)(long unsigned int, char *); - int (*remove_breakpoint)(long unsigned int, char *); - int (*set_hw_breakpoint)(long unsigned int, int, enum kgdb_bptype); - int (*remove_hw_breakpoint)(long unsigned int, int, enum kgdb_bptype); - void (*disable_hw_break)(struct pt_regs *); - void (*remove_all_hw_break)(); - void (*correct_hw_break)(); - void (*enable_nmi)(bool); +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]; }; -struct kgdb_io { - const char *name; - int (*read_char)(); - void (*write_char)(u8); - void (*flush)(); - int (*init)(); - void (*deinit)(); - void (*pre_exception)(); - void (*post_exception)(); - struct console *cons; +struct sbitmap_word { + long unsigned int depth; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long unsigned int word; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long unsigned int cleared; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; -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 sbq_wait_state { + atomic_t wait_cnt; + wait_queue_head_t wait; + long: 64; + long: 64; + long: 64; + long: 64; }; -struct bsg_ops { - int (*check_proto)(struct sg_io_v4 *); - int (*fill_hdr)(struct request *, struct sg_io_v4 *, fmode_t); - int (*complete_rq)(struct request *, struct sg_io_v4 *); - void (*free_rq)(struct request *); -}; +typedef void rq_end_io_fn(struct request *, blk_status_t); typedef __u32 req_flags_t; -typedef void rq_end_io_fn(struct request *, blk_status_t); - enum mq_rq_state { MQ_RQ_IDLE = 0, MQ_RQ_IN_FLIGHT = 1, @@ -9450,7 +8644,7 @@ struct request { struct list_head queuelist; union { struct hlist_node hash; - struct list_head ipi_list; + struct llist_node ipi_list; }; union { struct rb_node rb_node; @@ -9494,17 +8688,59 @@ struct request { void *end_io_data; }; -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]; +struct blk_mq_tags; + +struct blk_mq_hw_ctx { + struct { + spinlock_t lock; + struct list_head dispatch; + long unsigned int 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; + long unsigned int 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; + short unsigned int type; + short unsigned int 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; + long unsigned int queued; + long unsigned int run; + long unsigned int dispatched[7]; + 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; + long unsigned int poll_considered; + long unsigned int poll_invoked; + long unsigned int poll_success; + struct dentry *debugfs_dir; + struct dentry *sched_debugfs_dir; + struct list_head hctx_list; + struct srcu_struct srcu[0]; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; enum elv_merge { @@ -9596,8 +8832,10 @@ 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 *); - bool (*get_budget)(struct request_queue *); - void (*put_budget)(struct request_queue *); + 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 *, bool); int (*poll)(struct blk_mq_hw_ctx *); void (*complete)(struct request *); @@ -9612,6 +8850,32 @@ struct blk_mq_ops { void (*show_rq)(struct seq_file *, struct request *); }; +struct blk_mq_queue_map { + unsigned int *mq_map; + unsigned int nr_queues; + unsigned int queue_offset; +}; + +struct blk_mq_tag_set { + struct blk_mq_queue_map map[3]; + unsigned int nr_maps; + const struct blk_mq_ops *ops; + 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; + atomic_t active_queues_shared_sbitmap; + struct sbitmap_queue __bitmap_tags; + struct sbitmap_queue __breserved_tags; + struct blk_mq_tags **tags; + struct mutex tag_list_lock; + struct list_head tag_list; +}; + struct blk_integrity_iter { void *prot_buf; void *data_buf; @@ -9621,190 +8885,920 @@ struct blk_integrity_iter { const char *disk_name; }; -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, +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_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); +}; + +enum hctx_type { + HCTX_TYPE_DEFAULT = 0, + HCTX_TYPE_READ = 1, + HCTX_TYPE_POLL = 2, + HCTX_MAX_TYPES = 3, +}; + +struct blk_mq_queue_data { + struct request *rq; + bool last; +}; + +enum blkg_iostat_type { + BLKG_IOSTAT_READ = 0, + BLKG_IOSTAT_WRITE = 1, + BLKG_IOSTAT_DISCARD = 2, + BLKG_IOSTAT_NR = 3, +}; + +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 *blkg_hint; + struct hlist_head blkg_list; + struct blkcg_policy_data *cpd[6]; + struct list_head all_blkcgs_node; + char fc_app_id[129]; + struct list_head cgwb_list; +}; + +struct blkcg_policy_data { + struct blkcg *blkcg; + int plid; +}; + +struct blkg_policy_data { + struct blkcg_gq *blkg; + int plid; +}; + +enum memcg_stat_item { + MEMCG_SWAP = 39, + MEMCG_SOCK = 40, + MEMCG_PERCPU_B = 41, + MEMCG_NR_STAT = 42, +}; + +enum memcg_memory_event { + MEMCG_LOW = 0, + MEMCG_HIGH = 1, + MEMCG_MAX = 2, + MEMCG_OOM = 3, + MEMCG_OOM_KILL = 4, + MEMCG_SWAP_HIGH = 5, + MEMCG_SWAP_MAX = 6, + MEMCG_SWAP_FAIL = 7, + MEMCG_NR_MEMORY_EVENTS = 8, +}; + +enum mem_cgroup_events_target { + MEM_CGROUP_TARGET_THRESH = 0, + MEM_CGROUP_TARGET_SOFTLIMIT = 1, + MEM_CGROUP_NTARGETS = 2, +}; + +struct memcg_vmstats_percpu { + long int state[42]; + long unsigned int events[99]; + long int state_prev[42]; + long unsigned int events_prev[99]; + long unsigned int nr_page_events; + long unsigned int targets[2]; +}; + +struct mem_cgroup_reclaim_iter { + struct mem_cgroup *position; + unsigned int generation; +}; + +struct shrinker_info { + struct callback_head rcu; + atomic_long_t *nr_deferred; + long unsigned int *map; +}; + +struct lruvec_stats_percpu { + long int state[39]; + long int state_prev[39]; +}; + +struct lruvec_stats { + long int state[39]; + long int state_pending[39]; +}; + +struct mem_cgroup_per_node { + struct lruvec lruvec; + struct lruvec_stats_percpu *lruvec_stats_percpu; + struct lruvec_stats lruvec_stats; + long unsigned int lru_zone_size[25]; + struct mem_cgroup_reclaim_iter iter; + struct shrinker_info *shrinker_info; + struct rb_node tree_node; + long unsigned int usage_in_excess; + bool on_tree; + struct mem_cgroup *memcg; +}; + +struct eventfd_ctx; + +struct mem_cgroup_threshold { + struct eventfd_ctx *eventfd; + long unsigned int 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 percpu_cluster { + struct swap_cluster_info index; + unsigned int next; +}; + +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 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 fc_log { + refcount_t usage; + u8 head; + u8 tail; + u8 need_free; + struct module *owner; + char *buffer[8]; +}; + +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 *); +}; + +struct fs_parse_result { + bool negated; + union { + bool boolean; + int int_32; + unsigned int uint_32; + u64 uint_64; + }; +}; + +struct in6_addr { + union { + __u8 u6_addr8[16]; + __be16 u6_addr16[8]; + __be32 u6_addr32[4]; + } in6_u; +}; + +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_MAX = 28, +}; + +enum { + IPSTATS_MIB_NUM = 0, + IPSTATS_MIB_INPKTS = 1, + IPSTATS_MIB_INOCTETS = 2, + IPSTATS_MIB_INDELIVERS = 3, + IPSTATS_MIB_OUTFORWDATAGRAMS = 4, + IPSTATS_MIB_OUTPKTS = 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_MAX = 37, +}; + +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_MAX = 28, +}; + +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_MAX = 6, +}; + +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 { + 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, +}; + +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_MAX = 126, +}; + +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, +}; + +enum { + LINUX_MIB_TLSNUM = 0, + LINUX_MIB_TLSCURRTXSW = 1, + LINUX_MIB_TLSCURRRXSW = 2, + LINUX_MIB_TLSCURRTXDEVICE = 3, + LINUX_MIB_TLSCURRRXDEVICE = 4, + LINUX_MIB_TLSTXSW = 5, + LINUX_MIB_TLSRXSW = 6, + LINUX_MIB_TLSTXDEVICE = 7, + LINUX_MIB_TLSRXDEVICE = 8, + LINUX_MIB_TLSDECRYPTERROR = 9, + LINUX_MIB_TLSRXDEVICERESYNC = 10, + __LINUX_MIB_TLSMAX = 11, +}; + +struct ipstats_mib { + u64 mibs[37]; + struct u64_stats_sync syncp; +}; + +struct icmp_mib { + long unsigned int mibs[28]; +}; + +struct icmpmsg_mib { + atomic_long_t mibs[512]; +}; + +struct icmpv6_mib { + long unsigned int mibs[6]; +}; + +struct icmpv6msg_mib { + atomic_long_t mibs[512]; +}; + +struct tcp_mib { + long unsigned int mibs[16]; +}; + +struct udp_mib { + long unsigned int mibs[10]; +}; + +struct linux_mib { + long unsigned int mibs[126]; +}; + +struct linux_xfrm_mib { + long unsigned int mibs[29]; +}; + +struct linux_tls_mib { + long unsigned int mibs[11]; +}; + +struct inet_frags; + +struct fqdir { + long int high_thresh; + long int 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; + long: 64; + long: 64; + long: 64; + long: 64; + atomic_long_t mem; + struct work_struct destroy_work; + struct llist_node free_list; + long: 64; + long: 64; +}; + +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; +}; + +struct frag_v4_compare_key { + __be32 saddr; + __be32 daddr; + u32 user; + u32 vif; + __be16 id; + u16 protocol; +}; + +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 flags; + u16 max_size; + struct fqdir *fqdir; + struct callback_head rcu; +}; + +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 xfrm_state; + +struct lwtunnel_state; + +struct dst_entry { + struct net_device *dev; + struct dst_ops *ops; + long unsigned int _metrics; + long unsigned int expires; + struct xfrm_state *xfrm; + int (*input)(struct sk_buff *); + int (*output)(struct net *, struct sock *, struct sk_buff *); + short unsigned int flags; + short int obsolete; + short unsigned int header_len; + short unsigned int trailer_len; + atomic_t __refcnt; + int __use; + long unsigned int lastuse; + struct lwtunnel_state *lwtstate; + struct callback_head callback_head; + short int error; + short int __pad; + __u32 tclassid; +}; + +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, +}; + +enum { + NFPROTO_UNSPEC = 0, + NFPROTO_INET = 1, + NFPROTO_IPV4 = 2, + NFPROTO_ARP = 3, + NFPROTO_NETDEV = 5, + NFPROTO_BRIDGE = 7, + NFPROTO_IPV6 = 10, + NFPROTO_DECNET = 12, + NFPROTO_NUMPROTO = 13, }; -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); +enum nf_log_type { + NF_LOG_TYPE_LOG = 0, + NF_LOG_TYPE_ULOG = 1, + NF_LOG_TYPE_MAX = 2, }; -enum blkg_iostat_type { - BLKG_IOSTAT_READ = 0, - BLKG_IOSTAT_WRITE = 1, - BLKG_IOSTAT_DISCARD = 2, - BLKG_IOSTAT_NR = 3, -}; +typedef u8 u_int8_t; -struct blkcg_policy_data; +struct nf_loginfo; -struct blkcg { - struct cgroup_subsys_state css; - spinlock_t lock; - refcount_t online_pin; - struct xarray blkg_tree; - struct blkcg_gq *blkg_hint; - struct hlist_head blkg_list; - struct blkcg_policy_data *cpd[5]; - struct list_head all_blkcgs_node; - struct list_head cgwb_list; -}; +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 blkcg_policy_data { - struct blkcg *blkcg; - int plid; +struct nf_logger { + char *name; + enum nf_log_type type; + nf_logfn *logfn; + struct module *me; }; -struct blkg_policy_data { - struct blkcg_gq *blkg; - int plid; -}; +struct hlist_nulls_node; -enum memcg_stat_item { - MEMCG_SWAP = 38, - MEMCG_SOCK = 39, - MEMCG_PERCPU_B = 40, - MEMCG_NR_STAT = 41, +struct hlist_nulls_head { + struct hlist_nulls_node *first; }; -enum memcg_memory_event { - MEMCG_LOW = 0, - MEMCG_HIGH = 1, - MEMCG_MAX = 2, - MEMCG_OOM = 3, - MEMCG_OOM_KILL = 4, - MEMCG_SWAP_HIGH = 5, - MEMCG_SWAP_MAX = 6, - MEMCG_SWAP_FAIL = 7, - MEMCG_NR_MEMORY_EVENTS = 8, +struct hlist_nulls_node { + struct hlist_nulls_node *next; + struct hlist_nulls_node **pprev; }; -enum mem_cgroup_events_target { - MEM_CGROUP_TARGET_THRESH = 0, - MEM_CGROUP_TARGET_SOFTLIMIT = 1, - MEM_CGROUP_NTARGETS = 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, }; -struct memcg_vmstats_percpu { - long int stat[41]; - long unsigned int events[95]; - long unsigned int nr_page_events; - long unsigned int targets[2]; +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, }; -struct mem_cgroup_reclaim_iter { - struct mem_cgroup *position; - unsigned int generation; +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 lruvec_stat { - long int count[38]; +enum ip_conntrack_dir { + IP_CT_DIR_ORIGINAL = 0, + IP_CT_DIR_REPLY = 1, + IP_CT_DIR_MAX = 2, }; -struct memcg_shrinker_map { - struct callback_head rcu; - long unsigned int map[0]; +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 mem_cgroup_per_node { - struct lruvec lruvec; - struct lruvec_stat *lruvec_stat_local; - struct lruvec_stat *lruvec_stat_cpu; - atomic_long_t lruvec_stat[38]; - long unsigned int lru_zone_size[25]; - struct mem_cgroup_reclaim_iter iter; - struct memcg_shrinker_map *shrinker_map; - struct rb_node tree_node; - long unsigned int usage_in_excess; - bool on_tree; - struct mem_cgroup *memcg; +enum udp_conntrack { + UDP_CT_UNREPLIED = 0, + UDP_CT_REPLIED = 1, + UDP_CT_MAX = 2, }; -struct eventfd_ctx; - -struct mem_cgroup_threshold { - struct eventfd_ctx *eventfd; - long unsigned int threshold; +enum gre_conntrack { + GRE_CT_UNREPLIED = 0, + GRE_CT_REPLIED = 1, + GRE_CT_MAX = 2, }; -struct mem_cgroup_threshold_ary { - int current_threshold; - unsigned int size; - struct mem_cgroup_threshold entries[0]; +struct ct_pcpu { + spinlock_t lock; + struct hlist_nulls_head unconfirmed; + struct hlist_nulls_head dying; }; -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; - }; +enum { + XFRM_POLICY_IN = 0, + XFRM_POLICY_OUT = 1, + XFRM_POLICY_FWD = 2, + XFRM_POLICY_MASK = 3, + XFRM_POLICY_MAX = 3, }; -struct percpu_cluster { - struct swap_cluster_info index; - unsigned int next; +enum netns_bpf_attach_type { + NETNS_BPF_INVALID = 4294967295, + NETNS_BPF_FLOW_DISSECTOR = 0, + NETNS_BPF_SK_LOOKUP = 1, + MAX_NETNS_BPF_ATTACH_TYPE = 2, }; -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 pipe_buf_operations; -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 pipe_buffer { + struct page *page; + unsigned int offset; + unsigned int len; + const struct pipe_buf_operations *ops; + unsigned int flags; + long unsigned int private; }; -struct fc_log { - refcount_t usage; - u8 head; - u8 tail; - u8 need_free; - struct module *owner; - char *buffer[8]; +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 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 *); +struct skb_ext { + refcount_t refcnt; + u8 offset[4]; + u8 chunks; + long: 0; + char data[0]; }; -struct fs_parse_result { - bool negated; - union { - bool boolean; - int int_32; - unsigned int uint_32; - u64 uint_64; - }; +enum skb_ext_id { + SKB_EXT_BRIDGE_NF = 0, + SKB_EXT_SEC_PATH = 1, + TC_SKB_EXT = 2, + SKB_EXT_MPTCP = 3, + SKB_EXT_NUM = 4, }; struct trace_event_raw_initcall_level { @@ -9853,11 +9847,12 @@ struct elf32_note { Elf32_Word n_type; }; -struct file_system_type___2; - -struct file_operations___2; - -struct atomic_notifier_head___2; +enum pcpu_fc { + PCPU_FC_AUTO = 0, + PCPU_FC_EMBED = 1, + PCPU_FC_PAGE = 2, + PCPU_FC_NR = 3, +}; enum { UNAME26 = 131072, @@ -9922,8 +9917,6 @@ enum rseq_event_mask_bits { RSEQ_EVENT_MIGRATE_BIT = 2, }; -struct rw_semaphore___2; - enum { PROC_ROOT_INO = 1, PROC_IPC_INIT_INO = 4026531839, @@ -9936,64 +9929,10 @@ enum { typedef __u16 __le16; -typedef __u16 __be16; - -typedef __u32 __be32; - typedef __u64 __be64; -typedef __u32 __wsum; - -typedef u64 uint64_t; - typedef unsigned int slab_flags_t; -typedef struct __call_single_data call_single_data_t; - -struct rhash_head { - struct rhash_head *next; -}; - -struct rhashtable; - -struct rhashtable_compare_arg { - struct rhashtable *ht; - const void *key; -}; - -typedef u32 (*rht_hashfn_t)(const void *, u32, u32); - -typedef u32 (*rht_obj_hashfn_t)(const void *, u32, u32); - -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 *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 fs_struct { int users; spinlock_t lock; @@ -10004,44 +9943,6 @@ struct fs_struct { struct path pwd; }; -struct pipe_buffer; - -struct watch_queue; - -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; - bool note_loss; - unsigned int nr_accounted; - unsigned int readers; - unsigned int writers; - unsigned int files; - unsigned int r_counter; - unsigned int w_counter; - unsigned int 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 watch_queue *watch_queue; -}; - -struct raw_notifier_head { - struct notifier_block *head; -}; - -struct vfsmount { - struct dentry *mnt_root; - struct super_block *mnt_sb; - int mnt_flags; -}; - struct ld_semaphore { atomic_long_t count; raw_spinlock_t wait_lock; @@ -10074,10 +9975,14 @@ struct winsize { short unsigned int ws_ypixel; }; +struct tty_driver; + struct tty_operations; struct tty_ldisc; +struct tty_port; + struct tty_struct { int magic; struct kref kref; @@ -10092,25 +9997,27 @@ struct tty_struct { struct mutex throttle_mutex; struct rw_semaphore termios_rwsem; struct mutex winsize_mutex; - spinlock_t ctrl_lock; - spinlock_t flow_lock; struct ktermios termios; struct ktermios termios_locked; char name[64]; - struct pid *pgrp; - struct pid *session; long unsigned int flags; int count; struct winsize winsize; - long unsigned int stopped: 1; - long unsigned int flow_stopped: 1; - int: 30; - long unsigned int unused: 62; + struct { + spinlock_t lock; + bool stopped; + bool tco_stopped; + long unsigned int unused[0]; + } flow; + struct { + spinlock_t lock; + struct pid *pgrp; + struct pid *session; + unsigned char pktstatus; + bool packet; + long unsigned int unused[0]; + } ctrl; int hw_stopped; - long unsigned int ctrl_status: 8; - long unsigned int packet: 1; - int: 23; - long unsigned int unused_ctrl: 55; unsigned int receive_room; int flow_change; struct tty_struct *link; @@ -10155,10 +10062,6 @@ struct posix_acl { struct posix_acl_entry a_entries[0]; }; -struct ida { - struct xarray xa; -}; - typedef __u64 __addrpair; typedef __u32 __portpair; @@ -10167,23 +10070,8 @@ typedef struct { struct net *net; } possible_net_t; -struct in6_addr { - union { - __u8 u6_addr8[16]; - __be16 u6_addr16[8]; - __be32 u6_addr32[4]; - } in6_u; -}; - -struct hlist_nulls_node { - struct hlist_nulls_node *next; - struct hlist_nulls_node **pprev; -}; - struct proto; -struct inet_timewait_death_row; - struct sock_common { union { __addrpair skc_addrpair; @@ -10251,29 +10139,12 @@ typedef struct { wait_queue_head_t wq; } socket_lock_t; -struct sk_buff; - -struct sk_buff_head { - struct sk_buff *next; - struct sk_buff *prev; - __u32 qlen; - spinlock_t lock; -}; - typedef u64 netdev_features_t; struct sock_cgroup_data { - union { - struct { - u8 is_data: 1; - u8 no_refcnt: 1; - u8 unused: 6; - u8 padding; - u16 prioidx; - u32 classid; - }; - u64 val; - }; + struct cgroup *cgroup; + u32 classid; + u16 prioidx; }; struct sk_filter; @@ -10282,8 +10153,6 @@ struct socket_wq; struct xfrm_policy; -struct dst_entry; - struct socket; struct sock_reuseport; @@ -10313,6 +10182,8 @@ struct sock { }; struct xfrm_policy *sk_policy[2]; struct dst_entry *sk_rx_dst; + int sk_rx_dst_ifindex; + u32 sk_rx_dst_cookie; struct dst_entry *sk_dst_cache; atomic_t sk_omem_alloc; int sk_sndbuf; @@ -10362,13 +10233,15 @@ struct sock { kuid_t sk_uid; u8 sk_prefer_busy_poll; u16 sk_busy_poll_budget; + spinlock_t sk_peer_lock; struct pid *sk_peer_pid; const struct cred *sk_peer_cred; long int sk_rcvtimeo; ktime_t sk_stamp; u16 sk_tsflags; + int sk_bind_phc; u8 sk_shutdown; - u32 sk_tskey; + atomic_t sk_tskey; atomic_t sk_zckey; u8 sk_clockid; u8 sk_txtime_deadline_mode: 1; @@ -10393,16 +10266,6 @@ struct sock { typedef short unsigned int __kernel_sa_family_t; -struct __kernel_sockaddr_storage { - union { - struct { - __kernel_sa_family_t ss_family; - char __data[126]; - }; - void *__align; - }; -}; - typedef __kernel_sa_family_t sa_family_t; struct sockaddr { @@ -10520,6 +10383,31 @@ struct ifreq { } ifr_ifru; }; +struct tty_buffer { + union { + struct tty_buffer *next; + struct llist_node free; + }; + int used; + int size; + int commit; + int read; + int flags; + long unsigned int 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 serial_icounter_struct; struct serial_struct; @@ -10535,8 +10423,8 @@ struct tty_operations { int (*write)(struct tty_struct *, const unsigned char *, int); int (*put_char)(struct tty_struct *, unsigned char); void (*flush_chars)(struct tty_struct *); - int (*write_room)(struct tty_struct *); - int (*chars_in_buffer)(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, long unsigned int); long int (*compat_ioctl)(struct tty_struct *, unsigned int, long unsigned int); void (*set_termios)(struct tty_struct *, struct ktermios *); @@ -10588,8 +10476,35 @@ struct tty_driver { struct list_head tty_drivers; }; +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; + long unsigned int flags; + long unsigned int iflags; + unsigned char console: 1; + struct mutex mutex; + struct mutex buf_mutex; + unsigned char *xmit_buf; + unsigned int close_delay; + unsigned int closing_wait; + int drain_delay; + struct kref kref; + void *client_data; +}; + struct tty_ldisc_ops { - int magic; char *name; int num; int flags; @@ -10603,12 +10518,11 @@ struct tty_ldisc_ops { void (*set_termios)(struct tty_struct *, struct ktermios *); __poll_t (*poll)(struct tty_struct *, struct file *, struct poll_table_struct *); int (*hangup)(struct tty_struct *); - void (*receive_buf)(struct tty_struct *, const unsigned char *, char *, int); + void (*receive_buf)(struct tty_struct *, const unsigned char *, const char *, int); void (*write_wakeup)(struct tty_struct *); void (*dcd_change)(struct tty_struct *, unsigned int); - int (*receive_buf2)(struct tty_struct *, const unsigned char *, char *, int); + int (*receive_buf2)(struct tty_struct *, const unsigned char *, const char *, int); struct module *owner; - int refcount; }; struct tty_ldisc { @@ -10629,782 +10543,609 @@ struct tty_port_client_operations { void (*write_wakeup)(struct tty_port *); }; -struct prot_inuse; - -struct netns_core { - struct ctl_table_header *sysctl_hdr; - int sysctl_somaxconn; - int *sock_inuse; - struct prot_inuse *prot_inuse; -}; - -struct tcp_mib; - -struct ipstats_mib; - -struct linux_mib; - -struct udp_mib; - -struct icmp_mib; - -struct icmpmsg_mib; - -struct icmpv6_mib; - -struct icmpv6msg_mib; - -struct linux_xfrm_mib; - -struct linux_tls_mib; - -struct mptcp_mib; - -struct netns_mib { - struct tcp_mib *tcp_statistics; - struct ipstats_mib *ip_statistics; - struct linux_mib *net_statistics; - struct udp_mib *udp_statistics; - struct udp_mib *udplite_statistics; - struct icmp_mib *icmp_statistics; - struct icmpmsg_mib *icmpmsg_statistics; - struct proc_dir_entry *proc_net_devsnmp6; - struct udp_mib *udp_stats_in6; - struct udp_mib *udplite_stats_in6; - struct ipstats_mib *ipv6_statistics; - struct icmpv6_mib *icmpv6_statistics; - struct icmpv6msg_mib *icmpv6msg_statistics; - struct linux_xfrm_mib *xfrm_statistics; - struct linux_tls_mib *tls_statistics; - struct mptcp_mib *mptcp_statistics; -}; - -struct netns_packet { - struct mutex sklist_lock; - struct hlist_head sklist; -}; - -struct netns_unix { - int sysctl_max_dgram_qlen; - struct ctl_table_header *ctl; -}; - -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 local_ports { - seqlock_t lock; - int range[2]; - bool warned; -}; - -struct inet_hashinfo; - -struct inet_timewait_death_row { - atomic_t tw_count; - long: 32; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - struct inet_hashinfo *hashinfo; - int sysctl_max_tw_buckets; - long: 32; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; -}; - -struct ping_group_range { - seqlock_t lock; - kgid_t range[2]; -}; - typedef struct { - u64 key[2]; -} siphash_key_t; - -struct ipv4_devconf; - -struct ip_ra_chain; - -struct fib_rules_ops; - -struct fib_table; - -struct inet_peer_base; - -struct fqdir; - -struct xt_table; - -struct tcp_congestion_ops; - -struct tcp_fastopen_context; - -struct fib_notifier_ops; + local64_t v; +} u64_stats_t; -struct netns_ipv4 { - 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 *ra_chain; - struct mutex ra_mutex; - struct fib_rules_ops *rules_ops; - bool fib_has_custom_rules; - unsigned int fib_rules_require_fldissect; - struct fib_table *fib_main; - struct fib_table *fib_default; - bool fib_has_custom_local_routes; - int fib_num_tclassid_users; - struct hlist_head *fib_table_hash; - bool fib_offload_disabled; - struct sock *fibnl; - struct sock **icmp_sk; - struct sock *mc_autojoin_sk; - struct inet_peer_base *peers; - struct sock **tcp_sk; - struct fqdir *fqdir; - struct xt_table *iptable_filter; - struct xt_table *iptable_mangle; - struct xt_table *iptable_raw; - struct xt_table *arptable_filter; - struct xt_table *iptable_security; - struct xt_table *nat_table; - int sysctl_icmp_echo_ignore_all; - int sysctl_icmp_echo_ignore_broadcasts; - int sysctl_icmp_ignore_bogus_error_responses; - int sysctl_icmp_ratelimit; - int sysctl_icmp_ratemask; - int sysctl_icmp_errors_use_inbound_ifaddr; - struct local_ports ip_local_ports; - int sysctl_tcp_ecn; - int sysctl_tcp_ecn_fallback; - int sysctl_ip_default_ttl; - int sysctl_ip_no_pmtu_disc; - int sysctl_ip_fwd_use_pmtu; - int sysctl_ip_fwd_update_priority; - int sysctl_ip_nonlocal_bind; - int sysctl_ip_autobind_reuse; - int sysctl_ip_dynaddr; - int sysctl_ip_early_demux; - int sysctl_raw_l3mdev_accept; - int sysctl_tcp_early_demux; - int sysctl_udp_early_demux; - int sysctl_nexthop_compat_mode; - int sysctl_fwmark_reflect; - int sysctl_tcp_fwmark_accept; - int sysctl_tcp_l3mdev_accept; - int 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_probes; - int sysctl_tcp_keepalive_intvl; - int sysctl_tcp_syn_retries; - int sysctl_tcp_synack_retries; - int sysctl_tcp_syncookies; - int sysctl_tcp_reordering; - int sysctl_tcp_retries1; - int sysctl_tcp_retries2; - int sysctl_tcp_orphan_retries; - int sysctl_tcp_fin_timeout; - unsigned int sysctl_tcp_notsent_lowat; - int sysctl_tcp_tw_reuse; - int sysctl_tcp_sack; - int sysctl_tcp_window_scaling; - int sysctl_tcp_timestamps; - int sysctl_tcp_early_retrans; - int sysctl_tcp_recovery; - int sysctl_tcp_thin_linear_timeouts; - int sysctl_tcp_slow_start_after_idle; - int sysctl_tcp_retrans_collapse; - int sysctl_tcp_stdurg; - int sysctl_tcp_rfc1337; - int sysctl_tcp_abort_on_overflow; - int sysctl_tcp_fack; - int sysctl_tcp_max_reordering; - int sysctl_tcp_dsack; - int sysctl_tcp_app_win; - int sysctl_tcp_adv_win_scale; - int sysctl_tcp_frto; - int sysctl_tcp_nometrics_save; - int sysctl_tcp_no_ssthresh_metrics_save; - int sysctl_tcp_moderate_rcvbuf; - int sysctl_tcp_tso_win_divisor; - int sysctl_tcp_workaround_signed_windows; - int sysctl_tcp_limit_output_bytes; - int sysctl_tcp_challenge_ack_limit; - int sysctl_tcp_min_tso_segs; - int sysctl_tcp_min_rtt_wlen; - int sysctl_tcp_autocorking; - 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]; - int sysctl_tcp_comp_sack_nr; - long unsigned int sysctl_tcp_comp_sack_delay_ns; - long unsigned int sysctl_tcp_comp_sack_slack_ns; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - struct inet_timewait_death_row tcp_death_row; - int sysctl_max_syn_backlog; - int sysctl_tcp_fastopen; - const struct tcp_congestion_ops *tcp_congestion_control; - struct tcp_fastopen_context *tcp_fastopen_ctx; - spinlock_t tcp_fastopen_ctx_lock; - unsigned int sysctl_tcp_fastopen_blackhole_timeout; - atomic_t tfo_active_disable_times; - long unsigned int tfo_active_disable_stamp; - int sysctl_tcp_reflect_tos; - int sysctl_udp_wmem_min; - int sysctl_udp_rmem_min; - int sysctl_udp_l3mdev_accept; - int sysctl_igmp_max_memberships; - int sysctl_igmp_max_msf; - int sysctl_igmp_llm_reports; - int sysctl_igmp_qrv; - struct ping_group_range ping_group_range; - atomic_t dev_addr_genid; - long unsigned int *sysctl_local_reserved_ports; - int sysctl_ip_prot_sock; - struct list_head mr_tables; - struct fib_rules_ops *mr_rules_ops; - int sysctl_fib_multipath_use_neigh; - int sysctl_fib_multipath_hash_policy; - 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; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; +struct bpf_insn { + __u8 code; + __u8 dst_reg: 4; + __u8 src_reg: 4; + __s16 off; + __s32 imm; }; -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 bindv6only; - 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; - int multipath_hash_policy; - int flowlabel_consistency; - int auto_flowlabels; - int icmpv6_time; - int icmpv6_echo_ignore_all; - int icmpv6_echo_ignore_multicast; - int icmpv6_echo_ignore_anycast; - long unsigned int icmpv6_ratemask[4]; - long unsigned int *icmpv6_ratemask_ptr; - int anycast_src_echo_reply; - int ip_nonlocal_bind; - int fwmark_reflect; - int idgen_retries; - int idgen_delay; - int flowlabel_state_ranges; - 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; - bool skip_notify_on_dev_down; +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 = 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, }; -struct neighbour; - -struct dst_ops { - short unsigned int family; - unsigned int gc_thresh; - int (*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 *, long unsigned int); - void (*destroy)(struct dst_entry *); - void (*ifdown)(struct dst_entry *, struct net_device *, int); - 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; +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, }; -struct ipv6_devconf; - -struct fib6_info; - -struct rt6_info; - -struct rt6_statistics; - -struct fib6_table; - -struct seg6_pernet_data; +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, + __MAX_BPF_ATTACH_TYPE = 42, +}; -struct netns_ipv6 { - struct netns_sysctl_ipv6 sysctl; - struct ipv6_devconf *devconf_all; - struct ipv6_devconf *devconf_dflt; - struct inet_peer_base *peers; - struct fqdir *fqdir; - struct xt_table *ip6table_filter; - struct xt_table *ip6table_mangle; - struct xt_table *ip6table_raw; - struct xt_table *ip6table_security; - struct xt_table *ip6table_nat; - 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; - long: 64; - long: 64; - struct dst_ops ip6_dst_ops; - rwlock_t fib6_walker_lock; - spinlock_t fib6_gc_lock; - unsigned int ip6_rt_gc_expire; - long unsigned int ip6_rt_last_gc; - unsigned int fib6_rules_require_fldissect; - bool fib6_has_custom_rules; - unsigned int fib6_routes_require_src; - 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 **icmp_sk; - struct sock *ndisc_sk; - struct sock *tcp_sk; - struct sock *igmp_sk; - struct sock *mc_autojoin_sk; - 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; +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; + }; + 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; + }; + __u64 fd_array; + }; + struct { + __u64 pathname; + __u32 bpf_fd; + __u32 file_flags; + }; + struct { + __u32 target_fd; + __u32 attach_bpf_fd; + __u32 attach_type; + __u32 attach_flags; + __u32 replace_bpf_fd; + }; + 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; + } 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 { + __u32 target_fd; + __u32 attach_type; + __u32 query_flags; + __u32 attach_flags; + __u64 prog_ids; + __u32 prog_cnt; + } 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; + }; + 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 { - struct hlist_head head; - spinlock_t lock; - u32 seq; - } ip6addrlbl_table; -}; - -struct netns_sysctl_lowpan { - struct ctl_table_header *frags_hdr; + __u32 prog_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; + }; + } link_create; + struct { + __u32 link_fd; + __u32 new_prog_fd; + __u32 flags; + __u32 old_prog_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 netns_ieee802154_lowpan { - struct netns_sysctl_lowpan sysctl; - struct fqdir *fqdir; +struct bpf_func_info { + __u32 insn_off; + __u32 type_id; }; -struct sctp_mib; - -struct netns_sctp { - struct sctp_mib *sctp_statistics; - struct proc_dir_entry *proc_net_sctp; - struct ctl_table_header *sysctl_header; - struct sock *ctl_sock; - struct sock *udp4_sock; - struct sock *udp6_sock; - int udp_port; - int encap_port; - struct list_head local_addr_list; - struct list_head addr_waitq; - struct timer_list addr_wq_timer; - struct list_head auto_asconf_splist; - spinlock_t addr_wq_lock; - spinlock_t local_addr_lock; - unsigned int rto_initial; - unsigned int rto_min; - unsigned int rto_max; - int rto_alpha; - int rto_beta; - int max_burst; - int cookie_preserve_enable; - char *sctp_hmac_alg; - unsigned int valid_cookie_life; - unsigned int sack_timeout; - unsigned int hb_interval; - int max_retrans_association; - int max_retrans_path; - int max_retrans_init; - int pf_retrans; - int ps_retrans; - int pf_enable; - int pf_expose; - int sndbuf_policy; - int rcvbuf_policy; - int default_auto_asconf; - int addip_enable; - int addip_noauth; - int prsctp_enable; - int reconf_enable; - int auth_enable; - int intl_enable; - int ecn_enable; - int scope_policy; - int rwnd_upd_shift; - long unsigned int max_autoclose; +struct bpf_line_info { + __u32 insn_off; + __u32 file_name_off; + __u32 line_off; + __u32 line_col; }; -struct netns_dccp { - struct sock *v4_ctl_sk; - struct sock *v6_ctl_sk; -}; +typedef struct { + union { + void *kernel; + void *user; + }; + bool is_kernel: 1; +} sockptr_t; -struct nf_queue_handler; +struct bpf_iter_aux_info; -struct nf_logger; +typedef int (*bpf_iter_init_seq_priv_t)(void *, struct bpf_iter_aux_info *); -struct nf_hook_entries; +struct bpf_map; -struct netns_nf { - struct proc_dir_entry *proc_netfilter; - const struct nf_queue_handler *queue_handler; - const struct nf_logger *nf_loggers[13]; - struct ctl_table_header *nf_log_dir_header; - struct nf_hook_entries *hooks_ipv4[5]; - struct nf_hook_entries *hooks_ipv6[5]; - struct nf_hook_entries *hooks_arp[3]; - struct nf_hook_entries *hooks_bridge[5]; - struct nf_hook_entries *hooks_decnet[7]; - bool defrag_ipv4; - bool defrag_ipv6; +struct bpf_iter_aux_info { + struct bpf_map *map; }; -struct ebt_table; - -struct netns_xt { - struct list_head tables[13]; - bool notrack_deprecated_warning; - bool clusterip_deprecated_warning; - struct ebt_table *broute_table; - struct ebt_table *frame_filter; - struct ebt_table *frame_nat; -}; +typedef void (*bpf_iter_fini_seq_priv_t)(void *); -struct nf_generic_net { - unsigned int timeout; +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 nf_tcp_net { - unsigned int timeouts[14]; - int tcp_loose; - int tcp_be_liberal; - int tcp_max_retrans; -}; +struct btf; -struct nf_udp_net { - unsigned int timeouts[2]; -}; +struct btf_type; -struct nf_icmp_net { - unsigned int timeout; -}; +struct bpf_prog_aux; -struct nf_dccp_net { - int dccp_loose; - unsigned int dccp_timeout[10]; -}; +struct bpf_local_storage_map; -struct nf_sctp_net { - unsigned int timeouts[10]; -}; +struct bpf_verifier_env; -struct nf_gre_net { - struct list_head keymap_list; - unsigned int timeouts[2]; -}; +struct bpf_func_state; -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 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 *); + 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 *); + int (*map_update_batch)(struct bpf_map *, const union bpf_attr *, union bpf_attr *); + int (*map_delete_batch)(struct bpf_map *, const union bpf_attr *, union bpf_attr *); + void * (*map_lookup_elem)(struct bpf_map *, void *); + int (*map_update_elem)(struct bpf_map *, void *, void *, u64); + int (*map_delete_elem)(struct bpf_map *, void *); + int (*map_push_elem)(struct bpf_map *, void *, u64); + int (*map_pop_elem)(struct bpf_map *, void *); + int (*map_peek_elem)(struct bpf_map *, void *); + void * (*map_fd_get_ptr)(struct bpf_map *, struct file *, int); + void (*map_fd_put_ptr)(void *); + 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 ** (*map_owner_storage_ptr)(void *); + int (*map_redirect)(struct bpf_map *, u32, 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 *); + int (*map_for_each_callback)(struct bpf_map *, void *, void *, u64); + const char * const map_btf_name; + int *map_btf_id; + const struct bpf_iter_seq_info *iter_seq_info; }; -struct ct_pcpu; - -struct ip_conntrack_stat; - -struct nf_ct_event_notifier; - -struct nf_exp_event_notifier; - -struct netns_ct { - atomic_t count; - unsigned int expect_count; - struct delayed_work ecache_dwork; - bool ecache_dwork_pending; - bool auto_assign_helper_warned; - struct ctl_table_header *sysctl_header; - unsigned int sysctl_log_invalid; - int sysctl_events; - int sysctl_acct; - int sysctl_auto_assign_helper; - int sysctl_tstamp; - int sysctl_checksum; - struct ct_pcpu *pcpu_lists; - struct ip_conntrack_stat *stat; - struct nf_ct_event_notifier *nf_conntrack_event_cb; - struct nf_exp_event_notifier *nf_expect_event_cb; - struct nf_ip_net nf_ct_proto; - unsigned int labels_used; +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; + u32 map_flags; + int spin_lock_off; + int timer_off; + u32 id; + int numa_node; + u32 btf_key_type_id; + u32 btf_value_type_id; + struct btf *btf; + struct mem_cgroup *memcg; + char name[16]; + u32 btf_vmlinux_value_type_id; + bool bypass_spec_v1; + bool frozen; + long: 64; + long: 64; + atomic64_t refcnt; + atomic64_t usercnt; + struct work_struct work; + struct mutex freeze_mutex; + atomic64_t writecnt; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; -struct netns_nftables { - struct list_head tables; - struct list_head commit_list; - struct list_head module_list; - struct list_head notify_list; - struct mutex commit_mutex; - unsigned int base_seq; - u8 gencursor; - u8 validate_state; +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 netns_nf_frag { - struct fqdir *fqdir; +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 *base_btf; + u32 start_id; + u32 start_str_off; + char name[56]; + bool kernel_btf; }; -struct netns_bpf { - struct bpf_prog_array *run_array[2]; - struct bpf_prog *progs[2]; - struct list_head links[2]; +struct btf_type { + __u32 name_off; + __u32 info; + union { + __u32 size; + __u32 type; + }; }; -struct xfrm_policy_hash { - struct hlist_head *table; - unsigned int hmask; - u8 dbits4; - u8 sbits4; - u8 dbits6; - u8 sbits6; +struct bpf_ksym { + long unsigned int start; + long unsigned int end; + char name[128]; + struct list_head lnode; + struct latch_tree_node tnode; + bool prog; }; -struct xfrm_policy_hthresh { - struct work_struct work; - seqlock_t lock; - u8 lbits4; - u8 rbits4; - u8 lbits6; - u8 rbits6; -}; +struct bpf_ctx_arg_aux; -struct netns_xfrm { - struct list_head state_all; - struct hlist_head *state_bydst; - struct hlist_head *state_bysrc; - struct hlist_head *state_byspi; - 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; - 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; - 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_t xfrm_state_hash_generation; - seqcount_spinlock_t xfrm_policy_hash_generation; - spinlock_t xfrm_policy_lock; - struct mutex xfrm_cfg_mutex; - long: 64; - long: 64; -}; +struct bpf_trampoline; -struct netns_ipvs; +struct bpf_jit_poke_descriptor; -struct mpls_route; +struct bpf_kfunc_desc_tab; -struct netns_mpls { - int ip_ttl_propagate; - int default_ttl; - size_t platform_labels; - struct mpls_route **platform_label; - struct ctl_table_header *ctl; -}; +struct bpf_prog_ops; -struct can_dev_rcv_lists; +struct btf_mod_pair; -struct can_pkg_stats; +struct bpf_prog_offload; -struct can_rcv_lists_stats; +struct bpf_func_info_aux; -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; +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 offload_requested; + bool attach_btf_trace; + bool func_proto_unreliable; + bool sleepable; + bool tail_call_reachable; + struct hlist_node tramp_hlist; + 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; + 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; + 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; + u32 num_exentries; + struct exception_table_entry *extable; + union { + struct work_struct work; + struct callback_head rcu; + }; }; -struct netns_xdp { - struct mutex lock; - struct hlist_head list; +struct sock_filter { + __u16 code; + __u8 jt; + __u8 jf; + __u32 k; }; -struct uevent_sock; +struct bpf_prog_stats; -struct net_generic; +struct sock_fprog_kern; -struct net { - refcount_t passive; - spinlock_t rules_mod_lock; - unsigned int dev_unreg_count; - unsigned int dev_base_seq; - int 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 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 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; - struct netns_ipv4 ipv4; - struct netns_ipv6 ipv6; - struct netns_ieee802154_lowpan ieee802154_lowpan; - struct netns_sctp sctp; - struct netns_dccp dccp; - struct netns_nf nf; - struct netns_xt xt; - struct netns_ct ct; - struct netns_nftables nft; - struct netns_nf_frag nf_frag; - struct ctl_table_header *nf_frag_frags_hdr; - struct sock *nfnl; - struct sock *nfnl_stash; - struct list_head nfct_timeout_list; - struct sk_buff_head wext_nlevents; - struct net_generic *gen; - struct netns_bpf bpf; - long: 64; - long: 64; - struct netns_xfrm xfrm; - atomic64_t net_cookie; - struct netns_ipvs *ipvs; - struct netns_mpls mpls; - struct netns_can can; - struct netns_xdp xdp; - struct sock *crypto_nlsk; - struct sock *diag_nlsk; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; +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 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; + enum bpf_prog_type type; + enum bpf_attach_type expected_attach_type; + u32 len; + u32 jited_len; + u8 tag[8]; + struct bpf_prog_stats *stats; + int *active; + unsigned int (*bpf_func)(const void *, const struct bpf_insn *); + struct bpf_prog_aux *aux; + struct sock_fprog_kern *orig_prog; + struct sock_filter insns[0]; + struct bpf_insn insnsi[0]; }; -typedef struct { - local64_t v; -} u64_stats_t; - struct bpf_offloaded_map; struct bpf_map_dev_ops { @@ -11426,34 +11167,104 @@ struct bpf_offloaded_map { }; struct net_device_stats { - long unsigned int rx_packets; - long unsigned int tx_packets; - long unsigned int rx_bytes; - long unsigned int tx_bytes; - long unsigned int rx_errors; - long unsigned int tx_errors; - long unsigned int rx_dropped; - long unsigned int tx_dropped; - long unsigned int multicast; - long unsigned int collisions; - long unsigned int rx_length_errors; - long unsigned int rx_over_errors; - long unsigned int rx_crc_errors; - long unsigned int rx_frame_errors; - long unsigned int rx_fifo_errors; - long unsigned int rx_missed_errors; - long unsigned int tx_aborted_errors; - long unsigned int tx_carrier_errors; - long unsigned int tx_fifo_errors; - long unsigned int tx_heartbeat_errors; - long unsigned int tx_window_errors; - long unsigned int rx_compressed; - long unsigned int tx_compressed; + union { + long unsigned int rx_packets; + atomic_long_t __rx_packets; + }; + union { + long unsigned int tx_packets; + atomic_long_t __tx_packets; + }; + union { + long unsigned int rx_bytes; + atomic_long_t __rx_bytes; + }; + union { + long unsigned int tx_bytes; + atomic_long_t __tx_bytes; + }; + union { + long unsigned int rx_errors; + atomic_long_t __rx_errors; + }; + union { + long unsigned int tx_errors; + atomic_long_t __tx_errors; + }; + union { + long unsigned int rx_dropped; + atomic_long_t __rx_dropped; + }; + union { + long unsigned int tx_dropped; + atomic_long_t __tx_dropped; + }; + union { + long unsigned int multicast; + atomic_long_t __multicast; + }; + union { + long unsigned int collisions; + atomic_long_t __collisions; + }; + union { + long unsigned int rx_length_errors; + atomic_long_t __rx_length_errors; + }; + union { + long unsigned int rx_over_errors; + atomic_long_t __rx_over_errors; + }; + union { + long unsigned int rx_crc_errors; + atomic_long_t __rx_crc_errors; + }; + union { + long unsigned int rx_frame_errors; + atomic_long_t __rx_frame_errors; + }; + union { + long unsigned int rx_fifo_errors; + atomic_long_t __rx_fifo_errors; + }; + union { + long unsigned int rx_missed_errors; + atomic_long_t __rx_missed_errors; + }; + union { + long unsigned int tx_aborted_errors; + atomic_long_t __tx_aborted_errors; + }; + union { + long unsigned int tx_carrier_errors; + atomic_long_t __tx_carrier_errors; + }; + union { + long unsigned int tx_fifo_errors; + atomic_long_t __tx_fifo_errors; + }; + union { + long unsigned int tx_heartbeat_errors; + atomic_long_t __tx_heartbeat_errors; + }; + union { + long unsigned int tx_window_errors; + atomic_long_t __tx_window_errors; + }; + union { + long unsigned int rx_compressed; + atomic_long_t __rx_compressed; + }; + union { + long unsigned int 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; @@ -11462,6 +11273,8 @@ struct dn_dev; struct mpls_dev; +struct mctp_dev; + enum rx_handler_result { RX_HANDLER_CONSUMED = 0, RX_HANDLER_ANOTHER = 1, @@ -11504,12 +11317,12 @@ struct netdev_name_node; struct dev_ifalias; +struct net_device_ops; + struct iw_handler_def; struct iw_public_data; -struct net_device_ops; - struct ethtool_ops; struct l3mdev_ops; @@ -11532,752 +11345,354 @@ struct inet6_dev; struct wireless_dev; -struct wpan_dev; - -struct netdev_rx_queue; - -struct mini_Qdisc; - -struct netdev_queue; - -struct cpu_rmap; - -struct Qdisc; - -struct xdp_dev_bulk_queue; - -struct xps_dev_maps; - -struct netpoll_info; - -struct pcpu_lstats; - -struct pcpu_sw_netstats; - -struct rtnl_link_ops; - -struct dcbnl_rtnl_ops; - -struct netprio_map; - -struct phy_device; - -struct sfp_bus; - -struct udp_tunnel_nic_info; - -struct net_device { - char name[16]; - struct netdev_name_node *name_node; - struct dev_ifalias *ifalias; - long unsigned int mem_end; - long unsigned int mem_start; - long unsigned int base_addr; - int irq; - long unsigned int 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; - 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; - int ifindex; - int group; - struct net_device_stats stats; - atomic_long_t rx_dropped; - atomic_long_t tx_dropped; - atomic_long_t rx_nohandler; - 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 net_device_ops *netdev_ops; - const struct ethtool_ops *ethtool_ops; - const struct l3mdev_ops *l3mdev_ops; - const struct ndisc_ops *ndisc_ops; - const struct xfrmdev_ops *xfrmdev_ops; - const struct tlsdev_ops *tlsdev_ops; - const struct header_ops *header_ops; - unsigned int flags; - unsigned int priv_flags; - short unsigned int gflags; - short unsigned int padded; - unsigned char operstate; - unsigned char link_mode; - unsigned char if_port; - unsigned char dma; - unsigned int mtu; - unsigned int min_mtu; - unsigned int max_mtu; - short unsigned int type; - short unsigned int hard_header_len; - unsigned char min_header_len; - unsigned char name_assign_type; - short unsigned int needed_headroom; - short unsigned int needed_tailroom; - unsigned char perm_addr[32]; - unsigned char addr_assign_type; - unsigned char addr_len; - unsigned char upper_level; - unsigned char lower_level; - short unsigned int neigh_priv_len; - short unsigned int dev_id; - short unsigned int dev_port; - spinlock_t addr_list_lock; - 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 vlan_info *vlan_info; - struct dsa_port *dsa_ptr; - struct tipc_bearer *tipc_ptr; - void *atalk_ptr; - struct in_device *ip_ptr; - struct dn_dev *dn_ptr; - struct inet6_dev *ip6_ptr; - void *ax25_ptr; - struct wireless_dev *ieee80211_ptr; - struct wpan_dev *ieee802154_ptr; - struct mpls_dev *mpls_ptr; - unsigned char *dev_addr; - struct netdev_rx_queue *_rx; - unsigned int num_rx_queues; - unsigned int real_num_rx_queues; - struct bpf_prog *xdp_prog; - long unsigned int gro_flush_timeout; - int napi_defer_hard_irqs; - rx_handler_func_t *rx_handler; - void *rx_handler_data; - struct mini_Qdisc *miniq_ingress; - struct netdev_queue *ingress_queue; - struct nf_hook_entries *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; - long: 64; - long: 64; - long: 64; - struct netdev_queue *_tx; - unsigned int num_tx_queues; - unsigned int real_num_tx_queues; - struct Qdisc *qdisc; - unsigned int tx_queue_len; - spinlock_t tx_global_lock; - struct xdp_dev_bulk_queue *xdp_bulkq; - struct xps_dev_maps *xps_cpus_map; - struct xps_dev_maps *xps_rxqs_map; - struct mini_Qdisc *miniq_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 *pcpu_refcnt; - 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 *); - struct netpoll_info *npinfo; - possible_net_t nd_net; - void *ml_priv; - enum netdev_ml_priv_type ml_priv_type; - union { - struct pcpu_lstats *lstats; - struct pcpu_sw_netstats *tstats; - struct pcpu_dstats *dstats; - }; - struct garp_port *garp_port; - struct mrp_port *mrp_port; - 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; - u16 gso_max_segs; - const struct dcbnl_rtnl_ops *dcbnl_ops; - s16 num_tc; - struct netdev_tc_txq tc_to_txq[16]; - u8 prio_tc_map[16]; - unsigned int fcoe_ddp_xid; - struct netprio_map *priomap; - struct phy_device *phydev; - struct sfp_bus *sfp_bus; - struct lock_class_key *qdisc_tx_busylock; - struct lock_class_key *qdisc_running_key; - bool proto_down; - unsigned int wol_enabled: 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]; - long: 64; - long: 64; -}; - -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; - u32 image_off; - struct bpf_ksym ksym; -}; - -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; - long unsigned int dev_scratch; - }; - }; - struct rb_node rbnode; - struct list_head list; - }; - union { - struct sock *sk; - int ip_defrag_offset; - }; - union { - ktime_t tstamp; - u64 skb_mstamp_ns; - }; - char cb[48]; - union { - struct { - long unsigned int _skb_refdst; - void (*destructor)(struct sk_buff *); - }; - struct list_head tcp_tsorted_anchor; - }; - long unsigned int _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 active_extensions; - __u32 headers_start[0]; - __u8 __pkt_type_offset[0]; - __u8 pkt_type: 3; - __u8 ignore_df: 1; - __u8 nf_trace: 1; - __u8 ip_summed: 2; - __u8 ooo_okay: 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 __pkt_vlan_present_offset[0]; - __u8 vlan_present: 1; - __u8 csum_complete_sw: 1; - __u8 csum_level: 2; - __u8 csum_not_inet: 1; - __u8 dst_pending_confirm: 1; - __u8 ndisc_nodetype: 2; - __u8 ipvs_property: 1; - __u8 inner_protocol_type: 1; - __u8 remcsum_offload: 1; - __u8 offload_fwd_mark: 1; - __u8 offload_l3_fwd_mark: 1; - __u8 tc_skip_classify: 1; - __u8 tc_at_ingress: 1; - __u8 redirected: 1; - __u8 from_ingress: 1; - __u8 decrypted: 1; - __u16 tc_index; - union { - __wsum csum; - struct { - __u16 csum_start; - __u16 csum_offset; - }; - }; - __u32 priority; - int skb_iif; - __u32 hash; - __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; - __u32 headers_end[0]; - 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 scatterlist { - long unsigned int page_link; - unsigned int offset; - unsigned int length; - dma_addr_t dma_address; - unsigned int dma_length; -}; - -typedef int suspend_state_t; - -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, -}; - -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; - enum suspend_stat_step failed_steps[2]; -}; - -enum s2idle_states { - S2IDLE_STATE_NONE = 0, - S2IDLE_STATE_ENTER = 1, - S2IDLE_STATE_WAKE = 2, -}; - -enum { - Root_NFS = 255, - Root_CIFS = 254, - Root_RAM0 = 1048576, - Root_RAM1 = 1048577, - Root_FD0 = 2097152, - Root_HDA1 = 3145729, - Root_HDA2 = 3145730, - Root_SDA1 = 8388609, - Root_SDA2 = 8388610, - Root_HDC1 = 23068673, - Root_SR0 = 11534336, -}; - -struct xdr_buf { - struct kvec head[1]; - struct kvec tail[1]; - struct bio_vec *bvec; - struct page **pages; - unsigned int page_base; - unsigned int page_len; - unsigned int flags; - unsigned int buflen; - unsigned int len; -}; - -struct rpc_rqst; +struct wpan_dev; -struct xdr_stream { - __be32 *p; - struct xdr_buf *buf; - __be32 *end; - struct kvec *iov; - struct kvec scratch; - struct page **page_ptr; - unsigned int nwords; - struct rpc_rqst *rqst; -}; +struct netdev_rx_queue; -struct rpc_xprt; +struct mini_Qdisc; -struct rpc_task; +struct netdev_queue; -struct rpc_cred; +struct cpu_rmap; -struct rpc_rqst { - struct rpc_xprt *rq_xprt; - struct xdr_buf rq_snd_buf; - struct xdr_buf rq_rcv_buf; - struct rpc_task *rq_task; - struct rpc_cred *rq_cred; - __be32 rq_xid; - int rq_cong; - u32 rq_seqno; - int rq_enc_pages_num; - struct page **rq_enc_pages; - void (*rq_release_snd_buf)(struct rpc_rqst *); - union { - struct list_head rq_list; - struct rb_node rq_recv; - }; - struct list_head rq_xmit; - struct list_head rq_xmit2; - void *rq_buffer; - size_t rq_callsize; - void *rq_rbuffer; - size_t rq_rcvsize; - size_t rq_xmit_bytes_sent; - size_t rq_reply_bytes_recvd; - struct xdr_buf rq_private_buf; - long unsigned int rq_majortimeo; - long unsigned int rq_minortimeo; - long unsigned int rq_timeout; - ktime_t rq_rtt; - unsigned int rq_retries; - unsigned int rq_connect_cookie; - atomic_t rq_pin; - u32 rq_bytes_sent; - ktime_t rq_xtime; - int rq_ntrans; - struct list_head rq_bc_list; - long unsigned int rq_bc_pa_state; - struct list_head rq_bc_pa_list; -}; +struct Qdisc; -typedef void (*kxdreproc_t)(struct rpc_rqst *, struct xdr_stream *, const void *); +struct xdp_dev_bulk_queue; -typedef int (*kxdrdproc_t)(struct rpc_rqst *, struct xdr_stream *, void *); +struct xps_dev_maps; -struct rpc_procinfo; +struct netpoll_info; -struct rpc_message { - const struct rpc_procinfo *rpc_proc; - void *rpc_argp; - void *rpc_resp; - const struct cred *rpc_cred; -}; +struct pcpu_lstats; -struct rpc_procinfo { - u32 p_proc; - kxdreproc_t p_encode; - kxdrdproc_t p_decode; - unsigned int p_arglen; - unsigned int p_replen; - unsigned int p_timer; - u32 p_statidx; - const char *p_name; -}; +struct pcpu_sw_netstats; -struct rpc_wait { - struct list_head list; - struct list_head links; - struct list_head timer_list; -}; +struct rtnl_link_ops; -struct rpc_wait_queue; +struct dcbnl_rtnl_ops; -struct rpc_call_ops; +struct netprio_map; -struct rpc_clnt; +struct phy_device; -struct rpc_task { - atomic_t tk_count; - int tk_status; - struct list_head tk_task; - void (*tk_callback)(struct rpc_task *); - void (*tk_action)(struct rpc_task *); - long unsigned int tk_timeout; - long unsigned int tk_runstate; - struct rpc_wait_queue *tk_waitqueue; - union { - struct work_struct tk_work; - struct rpc_wait tk_wait; - } u; - int tk_rpc_status; - struct rpc_message tk_msg; - void *tk_calldata; - const struct rpc_call_ops *tk_ops; - struct rpc_clnt *tk_client; - struct rpc_xprt *tk_xprt; - struct rpc_cred *tk_op_cred; - struct rpc_rqst *tk_rqstp; - struct workqueue_struct *tk_workqueue; - ktime_t tk_start; - pid_t tk_owner; - short unsigned int tk_flags; - short unsigned int tk_timeouts; - short unsigned int tk_pid; - unsigned char tk_priority: 2; - unsigned char tk_garb_retry: 2; - unsigned char tk_cred_retry: 2; - unsigned char tk_rebind_retry: 2; -}; +struct sfp_bus; -struct rpc_timer { - struct list_head list; - long unsigned int expires; - struct delayed_work dwork; +struct udp_tunnel_nic_info; + +struct net_device { + char name[16]; + struct netdev_name_node *name_node; + struct dev_ifalias *ifalias; + long unsigned int mem_end; + long unsigned int mem_start; + long unsigned int base_addr; + long unsigned int 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; + unsigned int priv_flags; + const struct net_device_ops *netdev_ops; + int ifindex; + short unsigned int gflags; + short unsigned int hard_header_len; + unsigned int mtu; + short unsigned int needed_headroom; + short unsigned int 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; + short unsigned int type; + unsigned char min_header_len; + unsigned char name_assign_type; + int group; + struct net_device_stats stats; + atomic_long_t rx_dropped; + atomic_long_t tx_dropped; + atomic_long_t rx_nohandler; + 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 l3mdev_ops *l3mdev_ops; + const struct ndisc_ops *ndisc_ops; + const struct xfrmdev_ops *xfrmdev_ops; + const struct tlsdev_ops *tlsdev_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; + short unsigned int neigh_priv_len; + short unsigned int dev_id; + short unsigned int dev_port; + short unsigned int 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 vlan_info *vlan_info; + struct dsa_port *dsa_ptr; + struct tipc_bearer *tipc_ptr; + void *atalk_ptr; + struct in_device *ip_ptr; + struct dn_dev *dn_ptr; + struct inet6_dev *ip6_ptr; + void *ax25_ptr; + struct wireless_dev *ieee80211_ptr; + struct wpan_dev *ieee802154_ptr; + struct mpls_dev *mpls_ptr; + struct mctp_dev *mctp_ptr; + unsigned char *dev_addr; + struct netdev_rx_queue *_rx; + unsigned int num_rx_queues; + unsigned int real_num_rx_queues; + struct bpf_prog *xdp_prog; + long unsigned int gro_flush_timeout; + int napi_defer_hard_irqs; + rx_handler_func_t *rx_handler; + void *rx_handler_data; + struct mini_Qdisc *miniq_ingress; + struct netdev_queue *ingress_queue; + struct nf_hook_entries *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 *qdisc; + unsigned int tx_queue_len; + spinlock_t tx_global_lock; + struct xdp_dev_bulk_queue *xdp_bulkq; + struct xps_dev_maps *xps_maps[2]; + struct mini_Qdisc *miniq_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 *pcpu_refcnt; + 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 *); + struct netpoll_info *npinfo; + possible_net_t nd_net; + void *ml_priv; + enum netdev_ml_priv_type ml_priv_type; + union { + struct pcpu_lstats *lstats; + struct pcpu_sw_netstats *tstats; + struct pcpu_dstats *dstats; + }; + struct garp_port *garp_port; + struct mrp_port *mrp_port; + 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; + u16 gso_max_segs; + const struct dcbnl_rtnl_ops *dcbnl_ops; + s16 num_tc; + struct netdev_tc_txq tc_to_txq[16]; + u8 prio_tc_map[16]; + unsigned int fcoe_ddp_xid; + struct netprio_map *priomap; + struct phy_device *phydev; + struct sfp_bus *sfp_bus; + struct lock_class_key *qdisc_tx_busylock; + struct lock_class_key *qdisc_running_key; + 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]; + long: 64; }; -struct rpc_wait_queue { - spinlock_t lock; - struct list_head tasks[4]; - unsigned char maxpriority; - unsigned char priority; - unsigned char nr; - short unsigned int qlen; - struct rpc_timer timer_list; - const char *name; +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_PERCPU_BTF_ID = 19, + PTR_TO_FUNC = 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 = 1023, }; -struct rpc_call_ops { - void (*rpc_call_prepare)(struct rpc_task *, void *); - void (*rpc_call_done)(struct rpc_task *, void *); - void (*rpc_count_stats)(struct rpc_task *, void *); - void (*rpc_release)(void *); +struct bpf_prog_ops { + int (*test_run)(struct bpf_prog *, const union bpf_attr *, union bpf_attr *); }; -struct rpc_iostats; +struct bpf_offload_dev; -struct rpc_pipe_dir_head { - struct list_head pdh_entries; - struct dentry *pdh_dentry; +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; }; -struct rpc_rtt { - long unsigned int timeo; - long unsigned int srtt[5]; - long unsigned int sdrtt[5]; - int ntimeouts[5]; +struct btf_func_model { + u8 ret_size; + u8 nr_args; + u8 arg_size[12]; }; -struct rpc_timeout { - long unsigned int to_initval; - long unsigned int to_maxval; - long unsigned int to_increment; - unsigned int to_retries; - unsigned char to_exponential; +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 rpc_xprt_switch; - -struct rpc_xprt_iter_ops; - -struct rpc_xprt_iter { - struct rpc_xprt_switch *xpi_xpswitch; - struct rpc_xprt *xpi_cursor; - const struct rpc_xprt_iter_ops *xpi_ops; +struct bpf_trampoline { + struct hlist_node hlist; + struct mutex mutex; + refcount_t refcnt; + 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; + u64 selector; + struct module *mod; }; -struct rpc_auth; - -struct rpc_stat; - -struct rpc_program; +struct bpf_func_info_aux { + u16 linkage; + bool unreliable; +}; -struct rpc_clnt { - atomic_t cl_count; - unsigned int cl_clid; - struct list_head cl_clients; - struct list_head cl_tasks; - spinlock_t cl_lock; - struct rpc_xprt *cl_xprt; - const struct rpc_procinfo *cl_procinfo; - u32 cl_prog; - u32 cl_vers; - u32 cl_maxproc; - struct rpc_auth *cl_auth; - struct rpc_stat *cl_stats; - struct rpc_iostats *cl_metrics; - unsigned int cl_softrtry: 1; - unsigned int cl_softerr: 1; - unsigned int cl_discrtry: 1; - unsigned int cl_noretranstimeo: 1; - unsigned int cl_autobind: 1; - unsigned int cl_chatty: 1; - struct rpc_rtt *cl_rtt; - const struct rpc_timeout *cl_timeout; - atomic_t cl_swapper; - int cl_nodelen; - char cl_nodename[65]; - struct rpc_pipe_dir_head cl_pipedir_objects; - struct rpc_clnt *cl_parent; - struct rpc_rtt cl_rtt_default; - struct rpc_timeout cl_timeout_default; - const struct rpc_program *cl_program; - const char *cl_principal; - struct dentry *cl_debugfs; +struct bpf_jit_poke_descriptor { + void *tailcall_target; + void *tailcall_bypass; + void *bypass_addr; + void *aux; union { - struct rpc_xprt_iter cl_xpi; - struct work_struct cl_work; + struct { + struct bpf_map *map; + u32 key; + } tail_call; }; - const struct cred *cl_cred; + bool tailcall_target_stable; + u8 adj_off; + u16 reason; + u32 insn_idx; }; -struct svc_xprt; - -struct svc_serv; - -struct rpc_xprt_ops; - -struct rpc_xprt { - struct kref kref; - const struct rpc_xprt_ops *ops; - const struct rpc_timeout *timeout; - struct __kernel_sockaddr_storage addr; - size_t addrlen; - int prot; - long unsigned int cong; - long unsigned int cwnd; - size_t max_payload; - struct rpc_wait_queue binding; - struct rpc_wait_queue sending; - struct rpc_wait_queue pending; - struct rpc_wait_queue backlog; - struct list_head free; - unsigned int max_reqs; - unsigned int min_reqs; - unsigned int num_reqs; - long unsigned int state; - unsigned char resvport: 1; - unsigned char reuseport: 1; - atomic_t swapper; - unsigned int bind_index; - struct list_head xprt_switch; - long unsigned int bind_timeout; - long unsigned int reestablish_timeout; - unsigned int connect_cookie; - struct work_struct task_cleanup; - struct timer_list timer; - long unsigned int last_used; - long unsigned int idle_timeout; - long unsigned int connect_timeout; - long unsigned int max_reconnect_timeout; - atomic_long_t queuelen; - spinlock_t transport_lock; - spinlock_t reserve_lock; - spinlock_t queue_lock; - u32 xid; - struct rpc_task *snd_task; - struct list_head xmit_queue; - struct svc_xprt *bc_xprt; - struct svc_serv *bc_serv; - unsigned int bc_alloc_max; - unsigned int bc_alloc_count; - atomic_t bc_slot_count; - spinlock_t bc_pa_lock; - struct list_head bc_pa_list; - struct rb_root recv_queue; - struct { - long unsigned int bind_count; - long unsigned int connect_count; - long unsigned int connect_start; - long unsigned int connect_time; - long unsigned int sends; - long unsigned int recvs; - long unsigned int bad_xids; - long unsigned int max_slots; - long long unsigned int req_u; - long long unsigned int bklog_u; - long long unsigned int sending_u; - long long unsigned int pending_u; - } stat; - struct net *xprt_net; - const char *servername; - const char *address_strings[6]; - struct dentry *debugfs; - atomic_t inject_disconnect; - struct callback_head rcu; +struct bpf_ctx_arg_aux { + u32 offset; + enum bpf_reg_type reg_type; + u32 btf_id; }; -struct rpc_credops; - -struct rpc_cred { - struct hlist_node cr_hash; - struct list_head cr_lru; - struct callback_head cr_rcu; - struct rpc_auth *cr_auth; - const struct rpc_credops *cr_ops; - long unsigned int cr_expire; - long unsigned int cr_flags; - refcount_t cr_count; - const struct cred *cr_cred; +struct btf_mod_pair { + struct btf *btf; + struct module *module; }; -typedef u32 rpc_authflavor_t; +struct scatterlist { + long unsigned int page_link; + unsigned int offset; + unsigned int length; + dma_addr_t dma_address; + unsigned int dma_length; +}; -struct flow_dissector { - unsigned int used_keys; - short unsigned int offset[28]; +enum { + Root_NFS = 255, + Root_CIFS = 254, + Root_RAM0 = 1048576, + Root_RAM1 = 1048577, + Root_FD0 = 2097152, + Root_HDA1 = 3145729, + Root_HDA2 = 3145730, + Root_SDA1 = 8388609, + Root_SDA2 = 8388610, + Root_HDC1 = 23068673, + Root_SR0 = 11534336, }; struct flowi_tunnel { @@ -12311,7 +11726,6 @@ union flowi_uli { __le16 dport; __le16 sport; } dnports; - __be32 spi; __be32 gre_key; struct { __u8 type; @@ -12350,135 +11764,14 @@ struct flowi { } u; }; -struct ipstats_mib { - u64 mibs[37]; - struct u64_stats_sync syncp; -}; - -struct icmp_mib { - long unsigned int mibs[28]; -}; - -struct icmpmsg_mib { - atomic_long_t mibs[512]; -}; - -struct icmpv6_mib { - long unsigned int mibs[6]; -}; - struct icmpv6_mib_device { atomic_long_t mibs[6]; }; -struct icmpv6msg_mib { - atomic_long_t mibs[512]; -}; - struct icmpv6msg_mib_device { atomic_long_t mibs[512]; }; -struct tcp_mib { - long unsigned int mibs[16]; -}; - -struct udp_mib { - long unsigned int mibs[10]; -}; - -struct linux_mib { - long unsigned int mibs[124]; -}; - -struct linux_xfrm_mib { - long unsigned int mibs[29]; -}; - -struct linux_tls_mib { - long unsigned int mibs[11]; -}; - -struct inet_frags; - -struct fqdir { - long int high_thresh; - long int low_thresh; - int timeout; - int max_dist; - struct inet_frags *f; - struct net *net; - bool dead; - long: 56; - long: 64; - long: 64; - struct rhashtable rhashtable; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - atomic_long_t mem; - struct work_struct destroy_work; - struct llist_node free_list; - long: 64; - long: 64; -}; - -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; -}; - -struct frag_v4_compare_key { - __be32 saddr; - __be32 daddr; - u32 user; - u32 vif; - __be16 id; - u16 protocol; -}; - -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 flags; - u16 max_size; - struct fqdir *fqdir; - struct callback_head rcu; -}; - struct fib_rule; struct fib_lookup_arg; @@ -12500,7 +11793,7 @@ struct fib_rules_ops { 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 *, 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 *); @@ -12516,42 +11809,6 @@ struct fib_rules_ops { struct callback_head rcu; }; -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 { - struct list_head list; - u32 key; - u32 flags; - void (*init)(struct sock *); - void (*release)(struct sock *); - 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); - u32 (*undo_cwnd)(struct sock *); - void (*pkts_acked)(struct sock *, const struct ack_sample *); - u32 (*min_tso_segs)(struct sock *); - u32 (*sndbuf_expand)(struct sock *); - void (*cong_control)(struct sock *, const struct rate_sample *); - size_t (*get_info)(struct sock *, u32, int *, union tcp_cc_info *); - char name[16]; - struct module *owner; -}; - struct fib_notifier_ops { int family; struct list_head list; @@ -12561,32 +11818,6 @@ struct fib_notifier_ops { struct callback_head rcu; }; -struct xfrm_state; - -struct lwtunnel_state; - -struct dst_entry { - struct net_device *dev; - struct dst_ops *ops; - long unsigned int _metrics; - long unsigned int expires; - struct xfrm_state *xfrm; - int (*input)(struct sk_buff *); - int (*output)(struct net *, struct sock *, struct sk_buff *); - short unsigned int flags; - short int obsolete; - short unsigned int header_len; - short unsigned int trailer_len; - atomic_t __refcnt; - int __use; - long unsigned int lastuse; - struct lwtunnel_state *lwtstate; - struct callback_head callback_head; - short int error; - short int __pad; - __u32 tclassid; -}; - struct hh_cache { unsigned int hh_len; seqlock_t hh_lock; @@ -12618,7 +11849,7 @@ struct neighbour { __u8 dead; u8 protocol; seqlock_t ha_lock; - int: 32; + long: 0; unsigned char ha[32]; struct hh_cache hh; int (*output)(struct neighbour *, struct sk_buff *); @@ -12656,6 +11887,7 @@ struct ipv6_devconf { __s32 max_desync_factor; __s32 max_addresses; __s32 accept_ra_defrtr; + __u32 ra_defrtr_metric; __s32 accept_ra_min_hop_limit; __s32 accept_ra_pinfo; __s32 ignore_routes_with_linkdown; @@ -12666,7 +11898,7 @@ struct ipv6_devconf { __s32 proxy_ndp; __s32 accept_source_route; __s32 accept_ra_from_local; - __s32 mc_forwarding; + atomic_t mc_forwarding; __s32 disable_ipv6; __s32 drop_unicast_in_l2_multicast; __s32 accept_dad; @@ -12685,68 +11917,12 @@ struct ipv6_devconf { __s32 disable_policy; __s32 ndisc_tclass; __s32 rpl_seg_enabled; + __u32 ioam6_id; + __u32 ioam6_id_wide; + __u8 ioam6_enabled; struct ctl_table_header *sysctl_header; }; -struct nf_queue_entry; - -struct nf_queue_handler { - int (*outfn)(struct nf_queue_entry *, unsigned int); - void (*nf_hook_drop)(struct net *); -}; - -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 hlist_nulls_head { - struct hlist_nulls_node *first; -}; - -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; -}; - -struct ct_pcpu { - spinlock_t lock; - struct hlist_nulls_head unconfirmed; - struct hlist_nulls_head dying; -}; - -typedef struct { - union { - void *kernel; - void *user; - }; - bool is_kernel: 1; -} sockptr_t; - typedef enum { SS_FREE = 0, SS_UNCONNECTED = 1, @@ -12758,247 +11934,63 @@ typedef enum { struct socket_wq { wait_queue_head_t wait; struct fasync_struct *fasync_list; - long unsigned int flags; - struct callback_head rcu; - long: 64; -}; - -struct proto_ops; - -struct socket { - socket_state state; - short int type; - long unsigned int flags; - struct file *file; - struct sock *sk; - const struct proto_ops *ops; - long: 64; - long: 64; - long: 64; - struct socket_wq wq; -}; - -typedef int (*sk_read_actor_t)(read_descriptor_t *, struct sk_buff *, unsigned int, size_t); - -struct proto_ops { - int family; - unsigned int flags; - 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, long unsigned int); - int (*compat_ioctl)(struct socket *, unsigned int, long unsigned int); - int (*gettstamp)(struct socket *, void *, 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 *, int *); - 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 (*sendpage)(struct socket *, struct page *, int, size_t, int); - ssize_t (*splice_read)(struct socket *, loff_t *, struct pipe_inode_info *, size_t, unsigned int); - 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 (*sendpage_locked)(struct sock *, struct page *, int, size_t, int); - int (*sendmsg_locked)(struct sock *, struct msghdr *, size_t); - int (*set_rcvlowat)(struct sock *, int); -}; - -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; - long unsigned int 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 skb_ext { - refcount_t refcnt; - u8 offset[4]; - u8 chunks; - long: 56; - char data[0]; -}; - -struct skb_checksum_ops { - __wsum (*update)(const void *, int, __wsum); - __wsum (*combine)(__wsum, __wsum, int, int); -}; - -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 auth_cred { - const struct cred *cred; - const char *principal; -}; - -struct rpc_cred_cache; - -struct rpc_authops; - -struct rpc_auth { - unsigned int au_cslack; - unsigned int au_rslack; - unsigned int au_verfsize; - unsigned int au_ralign; - long unsigned int au_flags; - const struct rpc_authops *au_ops; - rpc_authflavor_t au_flavor; - refcount_t au_count; - struct rpc_cred_cache *au_credcache; -}; - -struct rpc_credops { - const char *cr_name; - int (*cr_init)(struct rpc_auth *, struct rpc_cred *); - void (*crdestroy)(struct rpc_cred *); - int (*crmatch)(struct auth_cred *, struct rpc_cred *, int); - int (*crmarshal)(struct rpc_task *, struct xdr_stream *); - int (*crrefresh)(struct rpc_task *); - int (*crvalidate)(struct rpc_task *, struct xdr_stream *); - int (*crwrap_req)(struct rpc_task *, struct xdr_stream *); - int (*crunwrap_resp)(struct rpc_task *, struct xdr_stream *); - int (*crkey_timeout)(struct rpc_cred *); - char * (*crstringify_acceptor)(struct rpc_cred *); - bool (*crneed_reencode)(struct rpc_task *); -}; - -struct rpc_auth_create_args; - -struct rpcsec_gss_info; - -struct rpc_authops { - struct module *owner; - rpc_authflavor_t au_flavor; - char *au_name; - struct rpc_auth * (*create)(const struct rpc_auth_create_args *, struct rpc_clnt *); - void (*destroy)(struct rpc_auth *); - int (*hash_cred)(struct auth_cred *, unsigned int); - struct rpc_cred * (*lookup_cred)(struct rpc_auth *, struct auth_cred *, int); - struct rpc_cred * (*crcreate)(struct rpc_auth *, struct auth_cred *, int, gfp_t); - rpc_authflavor_t (*info2flavor)(struct rpcsec_gss_info *); - int (*flavor2info)(rpc_authflavor_t, struct rpcsec_gss_info *); - int (*key_timeout)(struct rpc_auth *, struct rpc_cred *); -}; - -struct rpc_auth_create_args { - rpc_authflavor_t pseudoflavor; - const char *target_name; -}; - -struct rpcsec_gss_oid { - unsigned int len; - u8 data[32]; -}; - -struct rpcsec_gss_info { - struct rpcsec_gss_oid oid; - u32 qop; - u32 service; -}; - -struct rpc_xprt_ops { - void (*set_buffer_size)(struct rpc_xprt *, size_t, size_t); - int (*reserve_xprt)(struct rpc_xprt *, struct rpc_task *); - void (*release_xprt)(struct rpc_xprt *, struct rpc_task *); - void (*alloc_slot)(struct rpc_xprt *, struct rpc_task *); - void (*free_slot)(struct rpc_xprt *, struct rpc_rqst *); - void (*rpcbind)(struct rpc_task *); - void (*set_port)(struct rpc_xprt *, short unsigned int); - void (*connect)(struct rpc_xprt *, struct rpc_task *); - int (*buf_alloc)(struct rpc_task *); - void (*buf_free)(struct rpc_task *); - void (*prepare_request)(struct rpc_rqst *); - int (*send_request)(struct rpc_rqst *); - void (*wait_for_reply_request)(struct rpc_task *); - void (*timer)(struct rpc_xprt *, struct rpc_task *); - void (*release_request)(struct rpc_task *); - void (*close)(struct rpc_xprt *); - void (*destroy)(struct rpc_xprt *); - void (*set_connect_timeout)(struct rpc_xprt *, long unsigned int, long unsigned int); - void (*print_stats)(struct rpc_xprt *, struct seq_file *); - int (*enable_swap)(struct rpc_xprt *); - void (*disable_swap)(struct rpc_xprt *); - void (*inject_disconnect)(struct rpc_xprt *); - int (*bc_setup)(struct rpc_xprt *, unsigned int); - size_t (*bc_maxpayload)(struct rpc_xprt *); - unsigned int (*bc_num_slots)(struct rpc_xprt *); - void (*bc_free_rqst)(struct rpc_rqst *); - void (*bc_destroy)(struct rpc_xprt *, unsigned int); -}; - -struct rpc_xprt_switch { - spinlock_t xps_lock; - struct kref xps_kref; - unsigned int xps_nxprts; - unsigned int xps_nactive; - atomic_long_t xps_queuelen; - struct list_head xps_xprt_list; - struct net *xps_net; - const struct rpc_xprt_iter_ops *xps_iter_ops; - struct callback_head xps_rcu; -}; - -struct rpc_stat { - const struct rpc_program *program; - unsigned int netcnt; - unsigned int netudpcnt; - unsigned int nettcpcnt; - unsigned int nettcpconn; - unsigned int netreconn; - unsigned int rpccnt; - unsigned int rpcretrans; - unsigned int rpcauthrefresh; - unsigned int rpcgarbage; + long unsigned int flags; + struct callback_head rcu; + long: 64; }; -struct rpc_version; +struct proto_ops; -struct rpc_program { - const char *name; - u32 number; - unsigned int nrvers; - const struct rpc_version **version; - struct rpc_stat *stats; - const char *pipe_dir_name; +struct socket { + socket_state state; + short int type; + long unsigned int flags; + struct file *file; + struct sock *sk; + const struct proto_ops *ops; + long: 64; + long: 64; + long: 64; + struct socket_wq wq; }; -struct ipv6_params { - __s32 disable_ipv6; - __s32 autoconf; +typedef int (*sk_read_actor_t)(read_descriptor_t *, struct sk_buff *, unsigned int, size_t); + +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, long unsigned int); + int (*compat_ioctl)(struct socket *, unsigned int, long unsigned int); + int (*gettstamp)(struct socket *, void *, 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 *, int *); + 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 (*sendpage)(struct socket *, struct page *, int, size_t, int); + ssize_t (*splice_read)(struct socket *, loff_t *, struct pipe_inode_info *, size_t, unsigned int); + 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 (*sendpage_locked)(struct sock *, struct page *, int, size_t, int); + int (*sendmsg_locked)(struct sock *, struct msghdr *, size_t); + int (*set_rcvlowat)(struct sock *, int); }; struct dql { unsigned int num_queued; unsigned int adj_limit; unsigned int last_obj_cnt; - long: 32; long: 64; long: 64; long: 64; @@ -13015,7 +12007,6 @@ struct dql { unsigned int max_limit; unsigned int min_limit; unsigned int slack_hold_time; - long: 32; long: 64; long: 64; }; @@ -13168,13 +12159,26 @@ struct xdp_rxq_info { u32 reg_state; struct xdp_mem_info mem; unsigned int napi_id; - long: 32; long: 64; long: 64; long: 64; long: 64; }; +struct xdp_txq_info { + struct net_device *dev; +}; + +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; +}; + struct xdp_frame { void *data; u16 len; @@ -13356,30 +12360,6 @@ struct header_ops { __be16 (*parse_protocol)(const struct sk_buff *); }; -struct gro_list { - struct list_head list; - int count; -}; - -struct napi_struct { - struct list_head poll_list; - long unsigned int state; - int weight; - int defer_hard_irqs_count; - long unsigned int gro_bitmask; - int (*poll)(struct napi_struct *, int); - int poll_owner; - struct net_device *dev; - struct gro_list gro_hash[8]; - struct sk_buff *skb; - struct list_head rx_list; - int rx_count; - struct hrtimer timer; - struct list_head dev_list; - struct hlist_node napi_hash_node; - unsigned int napi_id; -}; - struct xsk_buff_pool; struct netdev_queue { @@ -13461,12 +12441,12 @@ struct Qdisc { struct sk_buff_head skb_bad_txq; spinlock_t busylock; spinlock_t seqlock; - bool empty; struct callback_head rcu; long: 64; long: 64; long: 64; long: 64; + long: 64; long int privdata[0]; }; @@ -13488,38 +12468,17 @@ struct rps_dev_flow_table { struct rps_dev_flow flows[0]; }; -struct rps_sock_flow_table { - u32 mask; - long: 32; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - u32 ents[0]; -}; - struct netdev_rx_queue { + struct xdp_rxq_info xdp_rxq; struct rps_map *rps_map; struct rps_dev_flow_table *rps_flow_table; struct kobject kobj; struct net_device *dev; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - struct xdp_rxq_info xdp_rxq; struct xsk_buff_pool *pool; long: 64; long: 64; long: 64; long: 64; - long: 64; - long: 64; - long: 64; }; struct xps_map { @@ -13531,6 +12490,8 @@ struct xps_map { struct xps_dev_maps { struct callback_head rcu; + unsigned int nr_ids; + s16 num_tc; struct xps_map *attr_map[0]; }; @@ -13550,6 +12511,50 @@ struct netdev_phys_item_id { unsigned char id_len; }; +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, +}; + +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 net_device_path_ctx { + const struct net_device *dev; + u8 daddr[6]; + int num_vlans; + struct { + u16 id; + __be16 proto; + } vlan[2]; +}; + enum tc_setup_type { TC_SETUP_QDISC_MQPRIO = 0, TC_SETUP_CLSU32 = 1, @@ -13569,6 +12574,7 @@ enum tc_setup_type { TC_SETUP_QDISC_ETS = 15, TC_SETUP_QDISC_TBF = 16, TC_SETUP_QDISC_FIFO = 17, + TC_SETUP_QDISC_HTB = 18, }; enum bpf_netdev_command { @@ -13617,8 +12623,6 @@ struct netdev_name_node { const char *name; }; -struct udp_tunnel_info; - struct devlink_port; struct ip_tunnel_parm; @@ -13636,6 +12640,10 @@ struct net_device_ops { 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 *, 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 *); @@ -13690,8 +12698,6 @@ struct net_device_ops { 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_udp_tunnel_add)(struct net_device *, struct udp_tunnel_info *); - void (*ndo_udp_tunnel_del)(struct net_device *, struct udp_tunnel_info *); 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); @@ -13701,10 +12707,12 @@ struct net_device_ops { 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); struct devlink_port * (*ndo_get_devlink_port)(struct net_device *); 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 *); }; struct neigh_parms { @@ -13775,6 +12783,8 @@ struct ethtool_eeprom; struct ethtool_coalesce; +struct kernel_ethtool_coalesce; + struct ethtool_ringparam; struct ethtool_pause_stats; @@ -13803,9 +12813,24 @@ 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_ops { + u32 cap_link_lanes_supported: 1; u32 supported_coalesce_params; void (*get_drvinfo)(struct net_device *, struct ethtool_drvinfo *); int (*get_regs_len)(struct net_device *); @@ -13820,8 +12845,8 @@ struct ethtool_ops { 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 *); - int (*set_coalesce)(struct net_device *, struct ethtool_coalesce *); + 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 *); int (*set_ringparam)(struct net_device *, struct ethtool_ringparam *); void (*get_pause_stats)(struct net_device *, struct ethtool_pause_stats *); @@ -13862,11 +12887,17 @@ struct ethtool_ops { 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 **); }; struct l3mdev_ops { @@ -13922,7 +12953,6 @@ struct inet6_dev { struct list_head addr_list; struct ifmcaddr6 *mc_list; struct ifmcaddr6 *mc_tomb; - spinlock_t mc_lock; unsigned char mc_qrv; unsigned char mc_gq_running; unsigned char mc_ifc_count; @@ -13931,9 +12961,16 @@ struct inet6_dev { long unsigned int mc_qi; long unsigned int mc_qri; long unsigned int mc_maxdelay; - struct timer_list mc_gq_timer; - struct timer_list mc_ifc_timer; - struct timer_list mc_dad_timer; + 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; @@ -13950,6 +12987,7 @@ struct inet6_dev { __u8 rs_probes; long unsigned int tstamp; struct callback_head rcu; + unsigned int ra_mtu; }; struct tcf_proto; @@ -13968,6 +13006,7 @@ 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; @@ -13997,6 +13036,8 @@ struct udp_tunnel_nic_table_info { unsigned int tunnel_types; }; +struct udp_tunnel_info; + struct udp_tunnel_nic_shared; struct udp_tunnel_nic_info { @@ -14008,54 +13049,6 @@ struct udp_tunnel_nic_info { struct udp_tunnel_nic_table_info tables[4]; }; -struct sd_flow_limit { - u64 count; - unsigned int num_buckets; - unsigned int history_head; - u16 history[128]; - u8 buckets[0]; -}; - -struct softnet_data { - struct list_head poll_list; - struct sk_buff_head process_queue; - unsigned int processed; - unsigned int time_squeeze; - unsigned int received_rps; - struct softnet_data *rps_ipi_list; - struct sd_flow_limit *flow_limit; - struct Qdisc *output_queue; - struct Qdisc **output_queue_tailp; - struct sk_buff *completion_queue; - struct sk_buff_head xfrm_backlog; - struct { - u16 recursion; - u8 more; - } xmit; - int: 32; - unsigned int input_queue_head; - long: 32; - 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 dropped; - struct sk_buff_head input_pkt_queue; - struct napi_struct backlog; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; -}; - enum { RTAX_UNSPEC = 0, RTAX_LOCK = 1, @@ -14115,14 +13108,6 @@ struct netlink_range_validation_signed { s64 max; }; -struct nl_info { - struct nlmsghdr *nlh; - struct net *nl_net; - u32 portid; - u8 skip_notify: 1; - u8 skip_notify_kernel: 1; -}; - enum flow_action_hw_stats_bit { FLOW_ACTION_HW_STATS_IMMEDIATE_BIT = 0, FLOW_ACTION_HW_STATS_DELAYED_BIT = 1, @@ -14161,6 +13146,7 @@ struct Qdisc_ops { 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); @@ -14180,7 +13166,7 @@ struct Qdisc_class_ops { void (*qlen_notify)(struct Qdisc *, long unsigned int); long unsigned int (*find)(struct Qdisc *, u32); int (*change)(struct Qdisc *, u32, u32, struct nlattr **, long unsigned int *, struct netlink_ext_ack *); - int (*delete)(struct Qdisc *, long unsigned int); + int (*delete)(struct Qdisc *, long unsigned int, struct netlink_ext_ack *); void (*walk)(struct Qdisc *, struct qdisc_walker *); struct tcf_block * (*tcf_block)(struct Qdisc *, long unsigned int, struct netlink_ext_ack *); long unsigned int (*bind_tcf)(struct Qdisc *, long unsigned int, u32); @@ -14259,7 +13245,7 @@ struct tcf_proto_ops { 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 *, long unsigned int, u32, struct nlattr **, void **, bool, bool, struct netlink_ext_ack *); + int (*change)(struct net *, struct sk_buff *, struct tcf_proto *, long unsigned int, 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); @@ -14296,29 +13282,20 @@ struct sock_fprog_kern { struct sock_filter *filter; }; +struct bpf_prog_stats { + u64_stats_t cnt; + u64_stats_t nsecs; + u64_stats_t misses; + struct u64_stats_sync syncp; + long: 64; +}; + struct sk_filter { refcount_t refcnt; struct callback_head rcu; struct bpf_prog *prog; }; -struct bpf_nh_params { - u32 nh_family; - union { - u32 ipv4_nh; - struct in6_addr ipv6_nh; - }; -}; - -struct bpf_redirect_info { - u32 flags; - u32 tgt_index; - void *tgt_value; - struct bpf_map *map; - u32 kern_flags; - struct bpf_nh_params nh; -}; - enum { NEIGH_VAR_MCAST_PROBES = 0, NEIGH_VAR_UCAST_PROBES = 1, @@ -14422,11 +13399,6 @@ struct neigh_hash_table { struct callback_head rcu; }; -struct dst_metrics { - u32 metrics[17]; - refcount_t refcnt; -}; - enum { TCP_ESTABLISHED = 1, TCP_SYN_SENT = 2, @@ -14504,6 +13476,8 @@ struct fib_lookup_arg { struct smc_hashinfo; +struct sk_psock; + struct request_sock_ops; struct timewait_sock_ops; @@ -14532,14 +13506,16 @@ struct proto { 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 *, short unsigned int); + int (*psock_update_sk_prot)(struct sock *, struct sk_psock *, bool); unsigned int inuse_idx; bool (*stream_memory_free)(const struct sock *, int); - bool (*stream_memory_read)(const struct sock *); + bool (*sock_is_readable)(struct sock *); void (*enter_memory_pressure)(struct sock *); void (*leave_memory_pressure)(struct sock *); atomic_long_t *memory_allocated; @@ -14557,7 +13533,7 @@ struct proto { slab_flags_t slab_flags; unsigned int useroffset; unsigned int usersize; - struct percpu_counter *orphan_count; + unsigned int *orphan_count; struct request_sock_ops *rsk_prot; struct timewait_sock_ops *twsk_prot; union { @@ -14628,12 +13604,6 @@ enum tsq_enum { TCP_MTU_REDUCED_DEFERRED = 5, }; -struct static_key_false_deferred { - struct static_key_false key; - long unsigned int timeout; - struct delayed_work work; -}; - struct ip6_sf_list { struct ip6_sf_list *sf_next; struct in6_addr sf_addr; @@ -14641,6 +13611,7 @@ struct ip6_sf_list { unsigned char sf_gsresp; unsigned char sf_oldin; unsigned char sf_crcount; + struct callback_head rcu; }; struct ifmcaddr6 { @@ -14652,897 +13623,147 @@ struct ifmcaddr6 { unsigned int mca_sfmode; unsigned char mca_crcount; long unsigned int mca_sfcount[2]; - struct timer_list mca_timer; + struct delayed_work mca_work; unsigned int mca_flags; int mca_users; refcount_t mca_refcnt; - spinlock_t mca_lock; long unsigned int mca_cstamp; - long unsigned int mca_tstamp; -}; - -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; - long unsigned int aca_cstamp; - long unsigned int aca_tstamp; - struct callback_head rcu; -}; - -struct fib6_result; - -struct fib6_nh; - -struct fib6_config; - -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_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 fib6_result { - struct fib6_nh *nh; - struct fib6_info *f6i; - u32 fib6_flags; - u8 fib6_type; - struct rt6_info *rt6; -}; - -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 *); -}; - -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, -}; - -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; - __u8 reserved: 6; - __u8 autoconf: 1; - __u8 onlink: 1; - __be32 valid; - __be32 prefered; - __be32 reserved2; - struct in6_addr prefix; -}; - -struct ip6_ra_chain { - struct ip6_ra_chain *next; - struct sock *sk; - int sel; - void (*destructor)(struct sock *); -}; - -struct rpc_xprt_iter_ops { - void (*xpi_rewind)(struct rpc_xprt_iter *); - struct rpc_xprt * (*xpi_xprt)(struct rpc_xprt_iter *); - struct rpc_xprt * (*xpi_next)(struct rpc_xprt_iter *); -}; - -struct rpc_version { - u32 number; - unsigned int nrprocs; - const struct rpc_procinfo *procs; - unsigned int *counts; -}; - -struct nfs_fh { - short unsigned int size; - unsigned char data[128]; -}; - -enum nfs3_stable_how { - NFS_UNSTABLE = 0, - NFS_DATA_SYNC = 1, - NFS_FILE_SYNC = 2, - NFS_INVALID_STABLE_HOW = 4294967295, -}; - -struct nfs4_label { - uint32_t lfs; - uint32_t pi; - u32 len; - char *label; -}; - -typedef struct { - char data[8]; -} nfs4_verifier; - -struct nfs4_stateid_struct { - union { - char data[16]; - struct { - __be32 seqid; - char other[12]; - }; - }; - enum { - NFS4_INVALID_STATEID_TYPE = 0, - NFS4_SPECIAL_STATEID_TYPE = 1, - NFS4_OPEN_STATEID_TYPE = 2, - NFS4_LOCK_STATEID_TYPE = 3, - NFS4_DELEGATION_STATEID_TYPE = 4, - NFS4_LAYOUT_STATEID_TYPE = 5, - NFS4_PNFS_DS_STATEID_TYPE = 6, - NFS4_REVOKED_STATEID_TYPE = 7, - } type; -}; - -typedef struct nfs4_stateid_struct nfs4_stateid; - -enum nfs_opnum4 { - OP_ACCESS = 3, - OP_CLOSE = 4, - OP_COMMIT = 5, - OP_CREATE = 6, - OP_DELEGPURGE = 7, - OP_DELEGRETURN = 8, - OP_GETATTR = 9, - OP_GETFH = 10, - OP_LINK = 11, - OP_LOCK = 12, - OP_LOCKT = 13, - OP_LOCKU = 14, - OP_LOOKUP = 15, - OP_LOOKUPP = 16, - OP_NVERIFY = 17, - OP_OPEN = 18, - OP_OPENATTR = 19, - OP_OPEN_CONFIRM = 20, - OP_OPEN_DOWNGRADE = 21, - OP_PUTFH = 22, - OP_PUTPUBFH = 23, - OP_PUTROOTFH = 24, - OP_READ = 25, - OP_READDIR = 26, - OP_READLINK = 27, - OP_REMOVE = 28, - OP_RENAME = 29, - OP_RENEW = 30, - OP_RESTOREFH = 31, - OP_SAVEFH = 32, - OP_SECINFO = 33, - OP_SETATTR = 34, - OP_SETCLIENTID = 35, - OP_SETCLIENTID_CONFIRM = 36, - OP_VERIFY = 37, - OP_WRITE = 38, - OP_RELEASE_LOCKOWNER = 39, - OP_BACKCHANNEL_CTL = 40, - OP_BIND_CONN_TO_SESSION = 41, - OP_EXCHANGE_ID = 42, - OP_CREATE_SESSION = 43, - OP_DESTROY_SESSION = 44, - OP_FREE_STATEID = 45, - OP_GET_DIR_DELEGATION = 46, - OP_GETDEVICEINFO = 47, - OP_GETDEVICELIST = 48, - OP_LAYOUTCOMMIT = 49, - OP_LAYOUTGET = 50, - OP_LAYOUTRETURN = 51, - OP_SECINFO_NO_NAME = 52, - OP_SEQUENCE = 53, - OP_SET_SSV = 54, - OP_TEST_STATEID = 55, - OP_WANT_DELEGATION = 56, - OP_DESTROY_CLIENTID = 57, - OP_RECLAIM_COMPLETE = 58, - OP_ALLOCATE = 59, - OP_COPY = 60, - OP_COPY_NOTIFY = 61, - OP_DEALLOCATE = 62, - OP_IO_ADVISE = 63, - OP_LAYOUTERROR = 64, - OP_LAYOUTSTATS = 65, - OP_OFFLOAD_CANCEL = 66, - OP_OFFLOAD_STATUS = 67, - OP_READ_PLUS = 68, - OP_SEEK = 69, - OP_WRITE_SAME = 70, - OP_CLONE = 71, - OP_GETXATTR = 72, - OP_SETXATTR = 73, - OP_LISTXATTRS = 74, - OP_REMOVEXATTR = 75, - OP_ILLEGAL = 10044, -}; - -struct nfs4_string { - unsigned int len; - char *data; -}; - -struct nfs_fsid { - uint64_t major; - uint64_t minor; -}; - -struct nfs4_threshold { - __u32 bm; - __u32 l_type; - __u64 rd_sz; - __u64 wr_sz; - __u64 rd_io_sz; - __u64 wr_io_sz; -}; - -struct nfs_fattr { - unsigned int valid; - umode_t mode; - __u32 nlink; - kuid_t uid; - kgid_t gid; - dev_t rdev; - __u64 size; - union { - struct { - __u32 blocksize; - __u32 blocks; - } nfs2; - struct { - __u64 used; - } nfs3; - } du; - struct nfs_fsid fsid; - __u64 fileid; - __u64 mounted_on_fileid; - struct timespec64 atime; - struct timespec64 mtime; - struct timespec64 ctime; - __u64 change_attr; - __u64 pre_change_attr; - __u64 pre_size; - struct timespec64 pre_mtime; - struct timespec64 pre_ctime; - long unsigned int time_start; - long unsigned int gencount; - struct nfs4_string *owner_name; - struct nfs4_string *group_name; - struct nfs4_threshold *mdsthreshold; - struct nfs4_label *label; -}; - -struct nfs_fsinfo { - struct nfs_fattr *fattr; - __u32 rtmax; - __u32 rtpref; - __u32 rtmult; - __u32 wtmax; - __u32 wtpref; - __u32 wtmult; - __u32 dtpref; - __u64 maxfilesize; - struct timespec64 time_delta; - __u32 lease_time; - __u32 nlayouttypes; - __u32 layouttype[8]; - __u32 blksize; - __u32 clone_blksize; - __u32 xattr_support; -}; - -struct nfs_fsstat { - struct nfs_fattr *fattr; - __u64 tbytes; - __u64 fbytes; - __u64 abytes; - __u64 tfiles; - __u64 ffiles; - __u64 afiles; -}; - -struct nfs_pathconf { - struct nfs_fattr *fattr; - __u32 max_link; - __u32 max_namelen; -}; - -struct nfs4_change_info { - u32 atomic; - u64 before; - u64 after; -}; - -struct nfs4_slot; - -struct nfs4_sequence_args { - struct nfs4_slot *sa_slot; - u8 sa_cache_this: 1; - u8 sa_privileged: 1; -}; - -struct nfs4_sequence_res { - struct nfs4_slot *sr_slot; - long unsigned int sr_timestamp; - int sr_status; - u32 sr_status_flags; - u32 sr_highest_slotid; - u32 sr_target_highest_slotid; -}; - -struct nfs_open_context; - -struct nfs_lock_context { - refcount_t count; - struct list_head list; - struct nfs_open_context *open_context; - fl_owner_t lockowner; - atomic_t io_count; - struct callback_head callback_head; -}; - -struct nfs4_state; - -struct nfs_open_context { - struct nfs_lock_context lock_context; - fl_owner_t flock_owner; - struct dentry *dentry; - const struct cred *cred; - struct rpc_cred *ll_cred; - struct nfs4_state *state; - fmode_t mode; - long unsigned int flags; - int error; - struct list_head list; - struct nfs4_threshold *mdsthreshold; - struct callback_head callback_head; -}; - -struct nlm_host; - -struct nfs_iostats; - -struct nfs_auth_info { - unsigned int flavor_len; - rpc_authflavor_t flavors[12]; -}; - -struct nfs_fscache_key; - -struct fscache_cookie; - -struct pnfs_layoutdriver_type; - -struct nfs_client; - -struct nfs_server { - struct nfs_client *nfs_client; - struct list_head client_link; - struct list_head master_link; - struct rpc_clnt *client; - struct rpc_clnt *client_acl; - struct nlm_host *nlm_host; - struct nfs_iostats *io_stats; - atomic_long_t writeback; - int flags; - unsigned int caps; - unsigned int rsize; - unsigned int rpages; - unsigned int wsize; - unsigned int wpages; - unsigned int wtmult; - unsigned int dtsize; - short unsigned int port; - unsigned int bsize; - unsigned int gxasize; - unsigned int sxasize; - unsigned int lxasize; - unsigned int acregmin; - unsigned int acregmax; - unsigned int acdirmin; - unsigned int acdirmax; - unsigned int namelen; - unsigned int options; - unsigned int clone_blksize; - struct nfs_fsid fsid; - __u64 maxfilesize; - struct timespec64 time_delta; - long unsigned int mount_time; - struct super_block *super; - dev_t s_dev; - struct nfs_auth_info auth_info; - struct nfs_fscache_key *fscache_key; - struct fscache_cookie *fscache; - u32 pnfs_blksize; - u32 attr_bitmask[3]; - u32 attr_bitmask_nl[3]; - u32 exclcreat_bitmask[3]; - u32 cache_consistency_bitmask[3]; - u32 acl_bitmask; - u32 fh_expire_type; - struct pnfs_layoutdriver_type *pnfs_curr_ld; - struct rpc_wait_queue roc_rpcwaitq; - void *pnfs_ld_data; - struct rb_root state_owners; - struct ida openowner_id; - struct ida lockowner_id; - struct list_head state_owners_lru; - struct list_head layouts; - struct list_head delegations; - struct list_head ss_copies; - long unsigned int mig_gen; - long unsigned int mig_status; - void (*destroy)(struct nfs_server *); - atomic_t active; - struct __kernel_sockaddr_storage mountd_address; - size_t mountd_addrlen; - u32 mountd_version; - short unsigned int mountd_port; - short unsigned int mountd_protocol; - struct rpc_wait_queue uoc_rpcwaitq; - unsigned int read_hdrsize; - const struct cred *cred; -}; - -struct nfs_subversion; - -struct idmap; - -struct nfs4_minor_version_ops; - -struct nfs4_slot_table; - -struct nfs4_session; - -struct nfs_rpc_ops; - -struct nfs41_server_owner; - -struct nfs41_server_scope; - -struct nfs41_impl_id; - -struct nfs_client { - refcount_t cl_count; - atomic_t cl_mds_count; - int cl_cons_state; - long unsigned int cl_res_state; - long unsigned int cl_flags; - struct __kernel_sockaddr_storage cl_addr; - size_t cl_addrlen; - char *cl_hostname; - char *cl_acceptor; - struct list_head cl_share_link; - struct list_head cl_superblocks; - struct rpc_clnt *cl_rpcclient; - const struct nfs_rpc_ops *rpc_ops; - int cl_proto; - struct nfs_subversion *cl_nfs_mod; - u32 cl_minorversion; - unsigned int cl_nconnect; - const char *cl_principal; - struct list_head cl_ds_clients; - u64 cl_clientid; - nfs4_verifier cl_confirm; - long unsigned int cl_state; - spinlock_t cl_lock; - long unsigned int cl_lease_time; - long unsigned int cl_last_renewal; - struct delayed_work cl_renewd; - struct rpc_wait_queue cl_rpcwaitq; - struct idmap *cl_idmap; - const char *cl_owner_id; - u32 cl_cb_ident; - const struct nfs4_minor_version_ops *cl_mvops; - long unsigned int cl_mig_gen; - struct nfs4_slot_table *cl_slot_tbl; - u32 cl_seqid; - u32 cl_exchange_flags; - struct nfs4_session *cl_session; - bool cl_preserve_clid; - struct nfs41_server_owner *cl_serverowner; - struct nfs41_server_scope *cl_serverscope; - struct nfs41_impl_id *cl_implid; - long unsigned int cl_sp4_flags; - wait_queue_head_t cl_lock_waitq; - char cl_ipaddr[48]; - struct fscache_cookie *fscache; - struct net *cl_net; - struct list_head pending_cb_stateids; -}; - -struct pnfs_layout_segment; - -struct nfs_write_verifier { - char data[8]; -}; - -struct nfs_writeverf { - struct nfs_write_verifier verifier; - enum nfs3_stable_how committed; -}; - -struct nfs_pgio_args { - struct nfs4_sequence_args seq_args; - struct nfs_fh *fh; - struct nfs_open_context *context; - struct nfs_lock_context *lock_context; - nfs4_stateid stateid; - __u64 offset; - __u32 count; - unsigned int pgbase; - struct page **pages; - union { - unsigned int replen; - struct { - const u32 *bitmask; - u32 bitmask_store[3]; - enum nfs3_stable_how stable; - }; - }; -}; - -struct nfs_pgio_res { - struct nfs4_sequence_res seq_res; - struct nfs_fattr *fattr; - __u64 count; - __u32 op_status; - union { - struct { - unsigned int replen; - int eof; - }; - struct { - struct nfs_writeverf *verf; - const struct nfs_server *server; - }; - }; -}; - -struct nfs_commitargs { - struct nfs4_sequence_args seq_args; - struct nfs_fh *fh; - __u64 offset; - __u32 count; - const u32 *bitmask; -}; - -struct nfs_commitres { - struct nfs4_sequence_res seq_res; - __u32 op_status; - struct nfs_fattr *fattr; - struct nfs_writeverf *verf; - const struct nfs_server *server; -}; - -struct nfs_removeargs { - struct nfs4_sequence_args seq_args; - const struct nfs_fh *fh; - struct qstr name; -}; - -struct nfs_removeres { - struct nfs4_sequence_res seq_res; - struct nfs_server *server; - struct nfs_fattr *dir_attr; - struct nfs4_change_info cinfo; -}; - -struct nfs_renameargs { - struct nfs4_sequence_args seq_args; - const struct nfs_fh *old_dir; - const struct nfs_fh *new_dir; - const struct qstr *old_name; - const struct qstr *new_name; -}; - -struct nfs_renameres { - struct nfs4_sequence_res seq_res; - struct nfs_server *server; - struct nfs4_change_info old_cinfo; - struct nfs_fattr *old_fattr; - struct nfs4_change_info new_cinfo; - struct nfs_fattr *new_fattr; -}; - -struct nfs_entry { - __u64 ino; - __u64 cookie; - __u64 prev_cookie; - const char *name; - unsigned int len; - int eof; - struct nfs_fh *fh; - struct nfs_fattr *fattr; - struct nfs4_label *label; - unsigned char d_type; - struct nfs_server *server; -}; - -struct nfs_readdir_arg { - struct dentry *dentry; - const struct cred *cred; - __be32 *verf; - u64 cookie; - struct page **pages; - unsigned int page_len; - bool plus; -}; - -struct nfs_readdir_res { - __be32 *verf; -}; - -struct nfstime4 { - u64 seconds; - u32 nseconds; -}; - -struct pnfs_commit_ops; - -struct pnfs_ds_commit_info { - struct list_head commits; - unsigned int nwritten; - unsigned int ncommitting; - const struct pnfs_commit_ops *ops; -}; - -struct nfs41_server_owner { - uint64_t minor_id; - uint32_t major_id_sz; - char major_id[1024]; -}; - -struct nfs41_server_scope { - uint32_t server_scope_sz; - char server_scope[1024]; -}; - -struct nfs41_impl_id { - char domain[1025]; - char name[1025]; - struct nfstime4 date; -}; - -struct nfs_page_array { - struct page **pagevec; - unsigned int npages; - struct page *page_array[8]; -}; - -struct nfs_page; - -struct nfs_rw_ops; - -struct nfs_io_completion; - -struct nfs_direct_req; - -struct nfs_pgio_completion_ops; - -struct nfs_pgio_header { - struct inode *inode; - const struct cred *cred; - struct list_head pages; - struct nfs_page *req; - struct nfs_writeverf verf; - fmode_t rw_mode; - struct pnfs_layout_segment *lseg; - loff_t io_start; - const struct rpc_call_ops *mds_ops; - void (*release)(struct nfs_pgio_header *); - const struct nfs_pgio_completion_ops *completion_ops; - const struct nfs_rw_ops *rw_ops; - struct nfs_io_completion *io_completion; - struct nfs_direct_req *dreq; - int pnfs_error; - int error; - unsigned int good_bytes; - long unsigned int flags; - struct rpc_task task; - struct nfs_fattr fattr; - struct nfs_pgio_args args; - struct nfs_pgio_res res; - long unsigned int timestamp; - int (*pgio_done_cb)(struct rpc_task *, struct nfs_pgio_header *); - __u64 mds_offset; - struct nfs_page_array page_array; - struct nfs_client *ds_clp; - u32 ds_commit_idx; - u32 pgio_mirror_idx; -}; - -struct nfs_pgio_completion_ops { - void (*error_cleanup)(struct list_head *, int); - void (*init_hdr)(struct nfs_pgio_header *); - void (*completion)(struct nfs_pgio_header *); - void (*reschedule_io)(struct nfs_pgio_header *); -}; - -struct nfs_mds_commit_info { - atomic_t rpcs_out; - atomic_long_t ncommit; - struct list_head list; -}; - -struct nfs_commit_data; - -struct nfs_commit_info; - -struct nfs_commit_completion_ops { - void (*completion)(struct nfs_commit_data *); - void (*resched_write)(struct nfs_commit_info *, struct nfs_page *); -}; - -struct nfs_commit_data { - struct rpc_task task; - struct inode *inode; - const struct cred *cred; - struct nfs_fattr fattr; - struct nfs_writeverf verf; - struct list_head pages; - struct list_head list; - struct nfs_direct_req *dreq; - struct nfs_commitargs args; - struct nfs_commitres res; - struct nfs_open_context *context; - struct pnfs_layout_segment *lseg; - struct nfs_client *ds_clp; - int ds_commit_index; - loff_t lwb; - const struct rpc_call_ops *mds_ops; - const struct nfs_commit_completion_ops *completion_ops; - int (*commit_done_cb)(struct rpc_task *, struct nfs_commit_data *); - long unsigned int flags; -}; - -struct nfs_commit_info { - struct inode *inode; - struct nfs_mds_commit_info *mds; - struct pnfs_ds_commit_info *ds; - struct nfs_direct_req *dreq; - const struct nfs_commit_completion_ops *completion_ops; + long unsigned int mca_tstamp; + struct callback_head rcu; }; -struct nfs_unlinkdata { - struct nfs_removeargs args; - struct nfs_removeres res; - struct dentry *dentry; - wait_queue_head_t wq; - const struct cred *cred; - struct nfs_fattr dir_attr; - long int timeout; +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; + long unsigned int aca_cstamp; + long unsigned int aca_tstamp; + struct callback_head rcu; }; -struct nfs_renamedata { - struct nfs_renameargs args; - struct nfs_renameres res; - const struct cred *cred; - struct inode *old_dir; - struct dentry *old_dentry; - struct nfs_fattr old_fattr; - struct inode *new_dir; - struct dentry *new_dentry; - struct nfs_fattr new_fattr; - void (*complete)(struct rpc_task *, struct nfs_renamedata *); - long int timeout; - bool cancelled; +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, }; -struct nlmclnt_operations; - -struct nfs_client_initdata; +struct nd_opt_hdr { + __u8 nd_opt_type; + __u8 nd_opt_len; +}; -struct nfs_access_entry; +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 nfs_rpc_ops { - u32 version; - const struct dentry_operations *dentry_ops; - const struct inode_operations *dir_inode_ops; - const struct inode_operations *file_inode_ops; - const struct file_operations *file_ops; - const struct nlmclnt_operations *nlmclnt_ops; - int (*getroot)(struct nfs_server *, struct nfs_fh *, struct nfs_fsinfo *); - int (*submount)(struct fs_context *, struct nfs_server *); - int (*try_get_tree)(struct fs_context *); - int (*getattr)(struct nfs_server *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *, struct inode *); - int (*setattr)(struct dentry *, struct nfs_fattr *, struct iattr *); - int (*lookup)(struct inode *, struct dentry *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *); - int (*lookupp)(struct inode *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *); - int (*access)(struct inode *, struct nfs_access_entry *); - int (*readlink)(struct inode *, struct page *, unsigned int, unsigned int); - int (*create)(struct inode *, struct dentry *, struct iattr *, int); - int (*remove)(struct inode *, struct dentry *); - void (*unlink_setup)(struct rpc_message *, struct dentry *, struct inode *); - void (*unlink_rpc_prepare)(struct rpc_task *, struct nfs_unlinkdata *); - int (*unlink_done)(struct rpc_task *, struct inode *); - void (*rename_setup)(struct rpc_message *, struct dentry *, struct dentry *); - void (*rename_rpc_prepare)(struct rpc_task *, struct nfs_renamedata *); - int (*rename_done)(struct rpc_task *, struct inode *, struct inode *); - int (*link)(struct inode *, struct inode *, const struct qstr *); - int (*symlink)(struct inode *, struct dentry *, struct page *, unsigned int, struct iattr *); - int (*mkdir)(struct inode *, struct dentry *, struct iattr *); - int (*rmdir)(struct inode *, const struct qstr *); - int (*readdir)(struct nfs_readdir_arg *, struct nfs_readdir_res *); - int (*mknod)(struct inode *, struct dentry *, struct iattr *, dev_t); - int (*statfs)(struct nfs_server *, struct nfs_fh *, struct nfs_fsstat *); - int (*fsinfo)(struct nfs_server *, struct nfs_fh *, struct nfs_fsinfo *); - int (*pathconf)(struct nfs_server *, struct nfs_fh *, struct nfs_pathconf *); - int (*set_capabilities)(struct nfs_server *, struct nfs_fh *); - int (*decode_dirent)(struct xdr_stream *, struct nfs_entry *, bool); - int (*pgio_rpc_prepare)(struct rpc_task *, struct nfs_pgio_header *); - void (*read_setup)(struct nfs_pgio_header *, struct rpc_message *); - int (*read_done)(struct rpc_task *, struct nfs_pgio_header *); - void (*write_setup)(struct nfs_pgio_header *, struct rpc_message *, struct rpc_clnt **); - int (*write_done)(struct rpc_task *, struct nfs_pgio_header *); - void (*commit_setup)(struct nfs_commit_data *, struct rpc_message *, struct rpc_clnt **); - void (*commit_rpc_prepare)(struct rpc_task *, struct nfs_commit_data *); - int (*commit_done)(struct rpc_task *, struct nfs_commit_data *); - int (*lock)(struct file *, int, struct file_lock *); - int (*lock_check_bounds)(const struct file_lock *); - void (*clear_acl_cache)(struct inode *); - void (*close_context)(struct nfs_open_context *, int); - struct inode * (*open_context)(struct inode *, struct nfs_open_context *, int, struct iattr *, int *); - int (*have_delegation)(struct inode *, fmode_t); - struct nfs_client * (*alloc_client)(const struct nfs_client_initdata *); - struct nfs_client * (*init_client)(struct nfs_client *, const struct nfs_client_initdata *); - void (*free_client)(struct nfs_client *); - struct nfs_server * (*create_server)(struct fs_context *); - struct nfs_server * (*clone_server)(struct nfs_server *, struct nfs_fh *, struct nfs_fattr *, rpc_authflavor_t); +struct prefix_info { + __u8 type; + __u8 length; + __u8 prefix_len; + __u8 reserved: 6; + __u8 autoconf: 1; + __u8 onlink: 1; + __be32 valid; + __be32 prefered; + __be32 reserved2; + struct in6_addr prefix; }; -struct nfs_access_entry { - struct rb_node rb_node; - struct list_head lru; - const struct cred *cred; - __u32 mask; - struct callback_head callback_head; +enum nfs_opnum4 { + OP_ACCESS = 3, + OP_CLOSE = 4, + OP_COMMIT = 5, + OP_CREATE = 6, + OP_DELEGPURGE = 7, + OP_DELEGRETURN = 8, + OP_GETATTR = 9, + OP_GETFH = 10, + OP_LINK = 11, + OP_LOCK = 12, + OP_LOCKT = 13, + OP_LOCKU = 14, + OP_LOOKUP = 15, + OP_LOOKUPP = 16, + OP_NVERIFY = 17, + OP_OPEN = 18, + OP_OPENATTR = 19, + OP_OPEN_CONFIRM = 20, + OP_OPEN_DOWNGRADE = 21, + OP_PUTFH = 22, + OP_PUTPUBFH = 23, + OP_PUTROOTFH = 24, + OP_READ = 25, + OP_READDIR = 26, + OP_READLINK = 27, + OP_REMOVE = 28, + OP_RENAME = 29, + OP_RENEW = 30, + OP_RESTOREFH = 31, + OP_SAVEFH = 32, + OP_SECINFO = 33, + OP_SETATTR = 34, + OP_SETCLIENTID = 35, + OP_SETCLIENTID_CONFIRM = 36, + OP_VERIFY = 37, + OP_WRITE = 38, + OP_RELEASE_LOCKOWNER = 39, + OP_BACKCHANNEL_CTL = 40, + OP_BIND_CONN_TO_SESSION = 41, + OP_EXCHANGE_ID = 42, + OP_CREATE_SESSION = 43, + OP_DESTROY_SESSION = 44, + OP_FREE_STATEID = 45, + OP_GET_DIR_DELEGATION = 46, + OP_GETDEVICEINFO = 47, + OP_GETDEVICELIST = 48, + OP_LAYOUTCOMMIT = 49, + OP_LAYOUTGET = 50, + OP_LAYOUTRETURN = 51, + OP_SECINFO_NO_NAME = 52, + OP_SEQUENCE = 53, + OP_SET_SSV = 54, + OP_TEST_STATEID = 55, + OP_WANT_DELEGATION = 56, + OP_DESTROY_CLIENTID = 57, + OP_RECLAIM_COMPLETE = 58, + OP_ALLOCATE = 59, + OP_COPY = 60, + OP_COPY_NOTIFY = 61, + OP_DEALLOCATE = 62, + OP_IO_ADVISE = 63, + OP_LAYOUTERROR = 64, + OP_LAYOUTSTATS = 65, + OP_OFFLOAD_CANCEL = 66, + OP_OFFLOAD_STATUS = 67, + OP_READ_PLUS = 68, + OP_SEEK = 69, + OP_WRITE_SAME = 70, + OP_CLONE = 71, + OP_GETXATTR = 72, + OP_SETXATTR = 73, + OP_LISTXATTRS = 74, + OP_REMOVEXATTR = 75, + OP_ILLEGAL = 10044, }; enum perf_branch_sample_type_shift { @@ -15585,41 +13806,43 @@ struct subprocess_info { void *data; }; -typedef __u64 Elf64_Off; +typedef phys_addr_t resource_size_t; -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 __va_list { + void *__stack; + void *__gr_top; + void *__vr_top; + int __gr_offs; + int __vr_offs; }; -typedef struct elf64_hdr Elf64_Ehdr; +typedef struct __va_list va_list; -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; +struct resource { + resource_size_t start; + resource_size_t end; + const char *name; + long unsigned int flags; + long unsigned int desc; + struct resource *parent; + struct resource *sibling; + struct resource *child; }; -typedef struct elf64_shdr Elf64_Shdr; +typedef u64 async_cookie_t; + +typedef void (*async_func_t)(void *, async_cookie_t); + +struct async_domain { + struct list_head pending; + unsigned int registered: 1; +}; + +enum umh_disable_depth { + UMH_ENABLED = 0, + UMH_FREEZING = 1, + UMH_DISABLED = 2, +}; struct hash { int ino; @@ -15649,87 +13872,6 @@ enum state { typedef int (*decompress_fn)(unsigned char *, long int, long int (*)(void *, long unsigned int), long int (*)(void *, long unsigned int), unsigned char *, long int *, void (*)(char *)); -typedef u32 note_buf_t[106]; - -struct kimage_arch { - void *dtb; - long unsigned int dtb_mem; - void *elf_headers; - long unsigned int elf_headers_mem; - long unsigned int elf_headers_sz; -}; - -typedef int kexec_probe_t(const char *, long unsigned int); - -struct kimage; - -typedef void *kexec_load_t(struct kimage *, char *, long unsigned int, char *, long unsigned int, char *, long unsigned int); - -typedef int kexec_cleanup_t(void *); - -typedef int kexec_verify_sig_t(const char *, long unsigned int); - -struct kexec_file_ops { - kexec_probe_t *probe; - kexec_load_t *load; - kexec_cleanup_t *cleanup; - kexec_verify_sig_t *verify_sig; -}; - -typedef long unsigned int kimage_entry_t; - -struct kexec_segment { - union { - void *buf; - void *kbuf; - }; - size_t bufsz; - long unsigned int mem; - size_t memsz; -}; - -struct purgatory_info { - const Elf64_Ehdr *ehdr; - Elf64_Shdr *sechdrs; - void *purgatory_buf; -}; - -struct kimage { - kimage_entry_t head; - kimage_entry_t *entry; - kimage_entry_t *last_entry; - long unsigned int start; - struct page *control_code_page; - struct page *swap_page; - void *vmcoreinfo_data_copy; - long unsigned int nr_segments; - struct kexec_segment segment[16]; - struct list_head control_pages; - struct list_head dest_pages; - struct list_head unusable_pages; - long unsigned int control_page; - unsigned int type: 1; - unsigned int preserve_context: 1; - unsigned int file_mode: 1; - struct kimage_arch arch; - void *kernel_buf; - long unsigned int kernel_buf_len; - void *initrd_buf; - long unsigned int initrd_buf_len; - char *cmdline_buf; - long unsigned int cmdline_buf_len; - const struct kexec_file_ops *fops; - void *image_loader_data; - struct purgatory_info purgatory_info; -}; - -enum sched_tunable_scaling { - SCHED_TUNABLESCALING_NONE = 0, - SCHED_TUNABLESCALING_LOG = 1, - SCHED_TUNABLESCALING_LINEAR = 2, - SCHED_TUNABLESCALING_END = 3, -}; - enum audit_ntp_type { AUDIT_NTP_OFFSET = 0, AUDIT_NTP_FREQ = 1, @@ -15740,18 +13882,16 @@ enum audit_ntp_type { AUDIT_NTP_NVALS = 6, }; -typedef long int (*syscall_fn_t)(const struct pt_regs *); - typedef long unsigned int uintptr_t; struct step_hook { struct list_head node; - int (*fn)(struct pt_regs *, unsigned int); + int (*fn)(struct pt_regs *, long unsigned int); }; struct break_hook { struct list_head node; - int (*fn)(struct pt_regs *, unsigned int); + int (*fn)(struct pt_regs *, long unsigned int); u16 imm; u16 mask; }; @@ -15779,7 +13919,7 @@ enum numa_stat_item { NUMA_INTERLEAVE_HIT = 3, NUMA_LOCAL = 4, NUMA_OTHER = 5, - NR_VM_NUMA_STAT_ITEMS = 6, + NR_VM_NUMA_EVENT_ITEMS = 6, }; enum zone_stat_item { @@ -15825,14 +13965,15 @@ enum { __SD_BALANCE_WAKE = 3, __SD_WAKE_AFFINE = 4, __SD_ASYM_CPUCAPACITY = 5, - __SD_SHARE_CPUCAPACITY = 6, - __SD_SHARE_PKG_RESOURCES = 7, - __SD_SERIALIZE = 8, - __SD_ASYM_PACKING = 9, - __SD_PREFER_SIBLING = 10, - __SD_OVERLAP = 11, - __SD_NUMA = 12, - __SD_FLAG_CNT = 13, + __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 { @@ -15888,6 +14029,11 @@ enum { TSK_TRACE_FL_GRAPH_BIT = 1, }; +struct nmi_ctx { + u64 hcr; + unsigned int cnt; +}; + struct midr_range { u32 model; u32 rv_min; @@ -15938,6 +14084,20 @@ struct fpsimd_last_state_struct { unsigned int sve_vl; }; +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; +}; + enum ctx_state { CONTEXT_DISABLED = 4294967295, CONTEXT_KERNEL = 0, @@ -15945,10 +14105,32 @@ enum ctx_state { CONTEXT_GUEST = 2, }; +enum stack_type { + STACK_TYPE_UNKNOWN = 0, + STACK_TYPE_TASK = 1, + STACK_TYPE_IRQ = 2, + STACK_TYPE_OVERFLOW = 3, + STACK_TYPE_SDEI_NORMAL = 4, + STACK_TYPE_SDEI_CRITICAL = 5, + __NR_STACK_TYPES = 6, +}; + +struct stack_info { + long unsigned int low; + long unsigned int high; + enum stack_type type; +}; + +struct sdei_registered_event; + struct plist_head { struct list_head node_list; }; +typedef struct { + __u8 b[16]; +} guid_t; + enum pm_qos_type { PM_QOS_UNITIALIZED = 0, PM_QOS_MAX = 1, @@ -15988,6 +14170,195 @@ struct dev_pm_qos { struct dev_pm_qos_request *flags_req; }; +enum reboot_mode { + REBOOT_UNDEFINED = 4294967295, + REBOOT_COLD = 0, + REBOOT_WARM = 1, + REBOOT_HARD = 2, + REBOOT_SOFT = 3, + REBOOT_GPIO = 4, +}; + +typedef long unsigned int efi_status_t; + +typedef u8 efi_bool_t; + +typedef u16 efi_char16_t; + +typedef guid_t efi_guid_t; + +typedef struct { + u64 signature; + u32 revision; + u32 headersize; + u32 crc32; + u32 reserved; +} efi_table_hdr_t; + +typedef struct { + u32 type; + u32 pad; + u64 phys_addr; + u64 virt_addr; + u64 num_pages; + u64 attribute; +} efi_memory_desc_t; + +typedef struct { + efi_guid_t guid; + u32 headersize; + u32 flags; + u32 imagesize; +} efi_capsule_header_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 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 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 *, long unsigned int *, void *); + +typedef efi_status_t efi_get_next_variable_t(long unsigned int *, efi_char16_t *, efi_guid_t *); + +typedef efi_status_t efi_set_variable_t(efi_char16_t *, efi_guid_t *, u32, long unsigned int, void *); + +typedef efi_status_t efi_get_next_high_mono_count_t(u32 *); + +typedef void efi_reset_system_t(int, efi_status_t, long unsigned int, efi_char16_t *); + +typedef efi_status_t efi_set_virtual_address_map_t(long unsigned int, long unsigned int, u32, efi_memory_desc_t *); + +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 **, long unsigned int, long unsigned int); + +typedef efi_status_t efi_query_capsule_caps_t(efi_capsule_header_t **, long unsigned int, u64 *, int *); + +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; + long unsigned int desc_version; + long unsigned int desc_size; + long unsigned int flags; +}; + +struct efi { + const efi_runtime_services_t *runtime; + unsigned int runtime_version; + unsigned int runtime_supported_mask; + long unsigned int acpi; + long unsigned int acpi20; + long unsigned int smbios; + long unsigned int smbios3; + long unsigned int esrt; + long unsigned int tpm_log; + long unsigned int tpm_final_log; + long unsigned int mokvar_table; + 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; + long unsigned int flags; +}; + +typedef __u32 Elf32_Addr; + +typedef __u16 Elf32_Half; + +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; }; @@ -16026,109 +14397,6 @@ struct dev_pm_qos_request { struct device *dev; }; -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; - unsigned int transition_delay_us; - bool dvfs_possible_from_any_cpu; - 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 freq_attr { - struct attribute attr; - ssize_t (*show)(struct cpufreq_policy *, char *); - ssize_t (*store)(struct cpufreq_policy *, const char *, size_t); -}; - -enum stack_type { - STACK_TYPE_UNKNOWN = 0, - STACK_TYPE_TASK = 1, - STACK_TYPE_IRQ = 2, - STACK_TYPE_OVERFLOW = 3, - STACK_TYPE_SDEI_NORMAL = 4, - STACK_TYPE_SDEI_CRITICAL = 5, - __NR_STACK_TYPES = 6, -}; - struct stackframe { long unsigned int fp; long unsigned int pc; @@ -16163,6 +14431,13 @@ struct user_pac_generic_keys { __int128 unsigned apgakey; }; +struct seccomp_data { + int nr; + __u32 arch; + __u64 instruction_pointer; + __u64 args[6]; +}; + typedef u32 compat_ulong_t; enum perf_type_id { @@ -16193,7 +14468,13 @@ enum ucount_type { UCOUNT_TIME_NAMESPACES = 7, UCOUNT_INOTIFY_INSTANCES = 8, UCOUNT_INOTIFY_WATCHES = 9, - UCOUNT_COUNTS = 10, + UCOUNT_FANOTIFY_GROUPS = 10, + UCOUNT_FANOTIFY_MARKS = 11, + UCOUNT_RLIMIT_NPROC = 12, + UCOUNT_RLIMIT_MSGQUEUE = 13, + UCOUNT_RLIMIT_SIGPENDING = 14, + UCOUNT_RLIMIT_MEMLOCK = 15, + UCOUNT_COUNTS = 16, }; enum cpu_usage_stat { @@ -16210,6 +14491,68 @@ enum cpu_usage_stat { NR_STATS = 10, }; +enum bpf_type_flag { + PTR_MAYBE_NULL = 256, + MEM_RDONLY = 512, + __BPF_TYPE_LAST_FLAG = 512, +}; + +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_UNINIT_MAP_VALUE = 4, + ARG_PTR_TO_MEM = 5, + ARG_PTR_TO_UNINIT_MEM = 6, + ARG_CONST_SIZE = 7, + ARG_CONST_SIZE_OR_ZERO = 8, + ARG_PTR_TO_CTX = 9, + ARG_ANYTHING = 10, + ARG_PTR_TO_SPIN_LOCK = 11, + ARG_PTR_TO_SOCK_COMMON = 12, + ARG_PTR_TO_INT = 13, + ARG_PTR_TO_LONG = 14, + ARG_PTR_TO_SOCKET = 15, + ARG_PTR_TO_BTF_ID = 16, + ARG_PTR_TO_ALLOC_MEM = 17, + ARG_CONST_ALLOC_SIZE_OR_ZERO = 18, + ARG_PTR_TO_BTF_ID_SOCK_COMMON = 19, + ARG_PTR_TO_PERCPU_BTF_ID = 20, + ARG_PTR_TO_FUNC = 21, + ARG_PTR_TO_STACK = 22, + ARG_PTR_TO_CONST_STR = 23, + ARG_PTR_TO_TIMER = 24, + __BPF_ARG_TYPE_MAX = 25, + ARG_PTR_TO_MAP_VALUE_OR_NULL = 259, + ARG_PTR_TO_MEM_OR_NULL = 261, + ARG_PTR_TO_CTX_OR_NULL = 265, + ARG_PTR_TO_SOCKET_OR_NULL = 271, + ARG_PTR_TO_ALLOC_MEM_OR_NULL = 273, + ARG_PTR_TO_STACK_OR_NULL = 278, + __BPF_ARG_TYPE_LIMIT = 1023, +}; + +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_ALLOC_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_ALLOC_MEM_OR_NULL = 262, + RET_PTR_TO_BTF_ID_OR_NULL = 264, + __BPF_RET_TYPE_LIMIT = 1023, +}; + enum bpf_cgroup_storage_type { BPF_CGROUP_STORAGE_SHARED = 0, BPF_CGROUP_STORAGE_PERCPU = 1, @@ -16224,12 +14567,41 @@ enum bpf_tramp_prog_type { BPF_TRAMP_REPLACE = 4, }; +enum cgroup_bpf_attach_type { + CGROUP_BPF_ATTACH_TYPE_INVALID = 4294967295, + 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, + MAX_CGROUP_BPF_ATTACH_TYPE = 23, +}; + enum psi_task_count { NR_IOWAIT = 0, NR_MEMSTALL = 1, NR_RUNNING = 2, NR_ONCPU = 3, - NR_PSI_TASK_COUNTS = 4, + NR_MEMSTALL_RUNNING = 4, + NR_PSI_TASK_COUNTS = 5, }; enum psi_states { @@ -16238,8 +14610,9 @@ enum psi_states { PSI_MEM_SOME = 2, PSI_MEM_FULL = 3, PSI_CPU_SOME = 4, - PSI_NONIDLE = 5, - NR_PSI_STATES = 6, + PSI_CPU_FULL = 5, + PSI_NONIDLE = 6, + NR_PSI_STATES = 7, }; enum psi_aggregators { @@ -16262,7 +14635,8 @@ enum cgroup_subsys_id { hugetlb_cgrp_id = 10, pids_cgrp_id = 11, rdma_cgrp_id = 12, - CGROUP_SUBSYS_COUNT = 13, + misc_cgrp_id = 13, + CGROUP_SUBSYS_COUNT = 14, }; enum { @@ -16327,12 +14701,6 @@ struct user_regset_view { u8 ei_osabi; }; -struct stack_info { - long unsigned int low; - long unsigned int high; - enum stack_type type; -}; - struct trace_event_raw_sys_enter { struct trace_entry ent; long int id; @@ -16369,9 +14737,10 @@ enum aarch64_regset { REGSET_SYSTEM_CALL = 5, REGSET_SVE = 6, REGSET_PAC_MASK = 7, - REGSET_PACA_KEYS = 8, - REGSET_PACG_KEYS = 9, - REGSET_TAGGED_ADDR_CTRL = 10, + REGSET_PAC_ENABLED_KEYS = 8, + REGSET_PACA_KEYS = 9, + REGSET_PACG_KEYS = 10, + REGSET_TAGGED_ADDR_CTRL = 11, }; enum compat_regset { @@ -16384,35 +14753,58 @@ enum ptrace_syscall_dir { PTRACE_SYSCALL_EXIT = 1, }; +struct atomic_notifier_head { + spinlock_t lock; + struct notifier_block *head; +}; + enum meminit_context { MEMINIT_EARLY = 0, MEMINIT_HOTPLUG = 1, }; +enum memblock_flags { + MEMBLOCK_NONE = 0, + MEMBLOCK_HOTPLUG = 1, + MEMBLOCK_MIRROR = 2, + MEMBLOCK_NOMAP = 4, +}; + +struct memblock_region { + phys_addr_t base; + phys_addr_t size; + enum memblock_flags flags; + int nid; +}; + +struct memblock_type { + long unsigned int cnt; + long unsigned int max; + phys_addr_t total_size; + struct memblock_region *regions; + char *name; +}; + +struct memblock { + bool bottom_up; + phys_addr_t current_limit; + struct memblock_type memory; + struct memblock_type reserved; +}; + +struct mpidr_hash { + u64 mask; + u32 shift_aff[4]; + u32 bits; +}; + struct cpu { int node_id; int hotpluggable; struct device dev; }; -struct cpuinfo_arm64 { - struct cpu cpu; - struct kobject kobj; - u32 reg_ctr; - u32 reg_cntfrq; - u32 reg_dczid; - u32 reg_midr; - u32 reg_revidr; - u64 reg_id_aa64dfr0; - u64 reg_id_aa64dfr1; - u64 reg_id_aa64isar0; - u64 reg_id_aa64isar1; - u64 reg_id_aa64mmfr0; - u64 reg_id_aa64mmfr1; - u64 reg_id_aa64mmfr2; - u64 reg_id_aa64pfr0; - u64 reg_id_aa64pfr1; - u64 reg_id_aa64zfr0; +struct cpuinfo_32bit { u32 reg_id_dfr0; u32 reg_id_dfr1; u32 reg_id_isar0; @@ -16434,6 +14826,29 @@ struct cpuinfo_arm64 { 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_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_aa64pfr0; + u64 reg_id_aa64pfr1; + u64 reg_id_aa64zfr0; + struct cpuinfo_32bit aarch32; u64 reg_zcr; }; @@ -16451,10 +14866,6 @@ struct cpu_operations { int (*cpu_suspend)(long unsigned int); }; -struct shared_info; - -struct start_info; - struct sigcontext { __u64 fault_address; __u64 regs[31]; @@ -16515,6 +14926,8 @@ struct siginfo { }; }; +typedef struct siginfo siginfo_t; + struct ksignal { struct k_sigaction ka; kernel_siginfo_t info; @@ -16603,38 +15016,68 @@ enum { PER_MASK = 255, }; -typedef bool (*stack_trace_consume_fn)(void *, long unsigned int); - -struct pv_time_ops { - long long unsigned int (*steal_clock)(int); -}; +typedef long int (*syscall_fn_t)(const struct pt_regs *); -struct paravirt_patch_template { - struct pv_time_ops time; -}; +typedef bool (*stack_trace_consume_fn)(void *, long unsigned int); enum lockdep_ok { LOCKDEP_STILL_OK = 0, LOCKDEP_NOW_UNRELIABLE = 1, }; +typedef bool pstate_check_t(long unsigned int); + enum bug_trap_type { BUG_TRAP_TYPE_NONE = 0, BUG_TRAP_TYPE_WARN = 1, BUG_TRAP_TYPE_BUG = 2, }; +enum ftr_type { + FTR_EXACT = 0, + FTR_LOWER_SAFE = 1, + FTR_HIGHER_SAFE = 2, + FTR_HIGHER_OR_ZERO_SAFE = 3, +}; + +struct arm64_ftr_bits { + bool sign; + bool visible; + bool strict; + enum ftr_type type; + u8 shift; + u8 width; + s64 safe_val; +}; + +struct arm64_ftr_override { + u64 val; + u64 mask; +}; + +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; +}; + enum siginfo_layout { SIL_KILL = 0, SIL_TIMER = 1, SIL_POLL = 2, SIL_FAULT = 3, - SIL_FAULT_MCEERR = 4, - SIL_FAULT_BNDERR = 5, - SIL_FAULT_PKUERR = 6, - SIL_CHLD = 7, - SIL_RT = 8, - SIL_SYS = 9, + 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 { @@ -16652,9 +15095,9 @@ struct undef_hook { }; struct sys64_hook { - unsigned int esr_mask; - unsigned int esr_val; - void (*handler)(unsigned int, struct pt_regs *); + long unsigned int esr_mask; + long unsigned int esr_val; + void (*handler)(long unsigned int, struct pt_regs *); }; struct timens_offset { @@ -16727,292 +15170,83 @@ struct vdso_data { enum vdso_abi { VDSO_ABI_AA64 = 0, - VDSO_ABI_AA32 = 1, -}; - -enum vvar_pages { - VVAR_DATA_PAGE_OFFSET = 0, - VVAR_TIMENS_PAGE_OFFSET = 1, - VVAR_NR_PAGES = 2, -}; - -struct vdso_abi_info { - const char *name; - const char *vdso_code_start; - const char *vdso_code_end; - long unsigned int vdso_pages; - struct vm_special_mapping *dm; - struct vm_special_mapping *cm; -}; - -enum aarch32_map { - AA32_MAP_VECTORS = 0, - AA32_MAP_SIGPAGE = 1, - AA32_MAP_VVAR = 2, - AA32_MAP_VDSO = 3, -}; - -enum aarch64_map { - AA64_MAP_VVAR = 0, - AA64_MAP_VDSO = 1, -}; - -enum aarch64_insn_encoding_class { - AARCH64_INSN_CLS_UNKNOWN = 0, - AARCH64_INSN_CLS_DP_IMM = 1, - AARCH64_INSN_CLS_DP_REG = 2, - AARCH64_INSN_CLS_DP_FPSIMD = 3, - AARCH64_INSN_CLS_LDST = 4, - AARCH64_INSN_CLS_BR_SYS = 5, -}; - -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_BTI = 1024, - AARCH64_INSN_HINT_BTIC = 1088, - AARCH64_INSN_HINT_BTIJ = 1152, - AARCH64_INSN_HINT_BTIJC = 1216, -}; - -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 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_variant { - AARCH64_INSN_VARIANT_32BIT = 0, - AARCH64_INSN_VARIANT_64BIT = 1, -}; - -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_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, -}; - -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_ldst_type { - AARCH64_INSN_LDST_LOAD_REG_OFFSET = 0, - AARCH64_INSN_LDST_STORE_REG_OFFSET = 1, - AARCH64_INSN_LDST_LOAD_PAIR_PRE_INDEX = 2, - AARCH64_INSN_LDST_STORE_PAIR_PRE_INDEX = 3, - AARCH64_INSN_LDST_LOAD_PAIR_POST_INDEX = 4, - AARCH64_INSN_LDST_STORE_PAIR_POST_INDEX = 5, - AARCH64_INSN_LDST_LOAD_EX = 6, - AARCH64_INSN_LDST_STORE_EX = 7, -}; - -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 aarch64_insn_movewide_type { - AARCH64_INSN_MOVEWIDE_ZERO = 0, - AARCH64_INSN_MOVEWIDE_KEEP = 1, - AARCH64_INSN_MOVEWIDE_INVERSE = 2, -}; - -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_data1_type { - AARCH64_INSN_DATA1_REVERSE_16 = 0, - AARCH64_INSN_DATA1_REVERSE_32 = 1, - AARCH64_INSN_DATA1_REVERSE_64 = 2, + VDSO_ABI_AA32 = 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 vvar_pages { + VVAR_DATA_PAGE_OFFSET = 0, + VVAR_TIMENS_PAGE_OFFSET = 1, + VVAR_NR_PAGES = 2, }; -enum aarch64_insn_data3_type { - AARCH64_INSN_DATA3_MADD = 0, - AARCH64_INSN_DATA3_MSUB = 1, +struct vdso_abi_info { + const char *name; + const char *vdso_code_start; + const char *vdso_code_end; + long unsigned int vdso_pages; + struct vm_special_mapping *dm; + struct vm_special_mapping *cm; }; -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, +enum aarch32_map { + AA32_MAP_VECTORS = 0, + AA32_MAP_SIGPAGE = 1, + AA32_MAP_VVAR = 2, + AA32_MAP_VDSO = 3, }; -enum aarch64_insn_prfm_type { - AARCH64_INSN_PRFM_TYPE_PLD = 0, - AARCH64_INSN_PRFM_TYPE_PLI = 1, - AARCH64_INSN_PRFM_TYPE_PST = 2, +enum aarch64_map { + AA64_MAP_VVAR = 0, + AA64_MAP_VDSO = 1, }; -enum aarch64_insn_prfm_target { - AARCH64_INSN_PRFM_TARGET_L1 = 0, - AARCH64_INSN_PRFM_TARGET_L2 = 1, - AARCH64_INSN_PRFM_TARGET_L3 = 2, +struct psci_operations { + u32 (*get_version)(); + int (*cpu_suspend)(u32, long unsigned int); + int (*cpu_off)(u32); + int (*cpu_on)(long unsigned int, long unsigned int); + int (*migrate)(long unsigned int); + int (*affinity_info)(long unsigned int, long unsigned int); + int (*migrate_info_type)(); }; -enum aarch64_insn_prfm_policy { - AARCH64_INSN_PRFM_POLICY_KEEP = 0, - AARCH64_INSN_PRFM_POLICY_STRM = 1, +struct return_address_data { + unsigned int level; + void *addr; }; -enum aarch64_insn_adr_type { - AARCH64_INSN_ADR_TYPE_ADRP = 0, - AARCH64_INSN_ADR_TYPE_ADR = 1, +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); }; -enum fixed_addresses { - FIX_HOLE = 0, - FIX_FDT_END = 1, - FIX_FDT = 1024, - FIX_EARLYCON_MEM_BASE = 1025, - FIX_TEXT_POKE0 = 1026, - FIX_APEI_GHES_IRQ = 1027, - FIX_APEI_GHES_SEA = 1028, - FIX_APEI_GHES_SDEI_NORMAL = 1029, - FIX_APEI_GHES_SDEI_CRITICAL = 1030, - FIX_ENTRY_TRAMP_DATA = 1031, - FIX_ENTRY_TRAMP_TEXT = 1032, - __end_of_permanent_fixed_addresses = 1033, - FIX_BTMAP_END = 1033, - FIX_BTMAP_BEGIN = 1480, - FIX_PTE = 1481, - FIX_PMD = 1482, - FIX_PUD = 1483, - FIX_PGD = 1484, - __end_of_fixed_addresses = 1485, -}; +typedef int (*cmp_func_t)(const void *, const void *); -struct aarch64_insn_patch { - void **text_addrs; - u32 *new_insns; - int insn_cnt; - atomic_t cpu_count; +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, }; -struct return_address_data { - unsigned int level; - void *addr; +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 { @@ -17021,6 +15255,11 @@ enum { CAP_COMPAT_HWCAP2 = 3, }; +struct secondary_data { + struct task_struct *task; + long int status; +}; + enum mitigation_state { SPECTRE_UNAFFECTED = 0, SPECTRE_MITIGATED = 1, @@ -17064,44 +15303,42 @@ enum pageflags { PG_xen_remapped = 10, PG_slob_free = 13, PG_double_map = 6, + PG_has_hwpoisoned = 17, PG_isolated = 18, PG_reported = 2, }; +enum fixed_addresses { + FIX_HOLE = 0, + FIX_FDT_END = 1, + FIX_FDT = 1024, + FIX_EARLYCON_MEM_BASE = 1025, + FIX_TEXT_POKE0 = 1026, + FIX_APEI_GHES_IRQ = 1027, + FIX_APEI_GHES_SEA = 1028, + FIX_APEI_GHES_SDEI_NORMAL = 1029, + FIX_APEI_GHES_SDEI_CRITICAL = 1030, + FIX_ENTRY_TRAMP_TEXT3 = 1031, + FIX_ENTRY_TRAMP_TEXT2 = 1032, + FIX_ENTRY_TRAMP_TEXT1 = 1033, + FIX_ENTRY_TRAMP_DATA = 1034, + __end_of_permanent_fixed_addresses = 1035, + FIX_BTMAP_END = 1035, + FIX_BTMAP_BEGIN = 1482, + FIX_PTE = 1483, + FIX_PMD = 1484, + FIX_PUD = 1485, + FIX_PGD = 1486, + __end_of_fixed_addresses = 1487, +}; + 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 psci_0_1_function_ids { - u32 cpu_suspend; - u32 cpu_on; - u32 cpu_off; - u32 migrate; -}; - -enum vgic_type { - VGIC_V2 = 0, - VGIC_V3 = 1, -}; - -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; - struct static_key_false gicv3_cpuif; - u32 ich_vtr_el2; -}; +typedef int (*cpu_stop_fn_t)(void *); enum kvm_mode { KVM_MODE_DEFAULT = 0, @@ -17146,64 +15383,41 @@ enum vcpu_sysreg { PMCNTENSET_EL0 = 92, PMINTENSET_EL1 = 93, PMOVSSET_EL0 = 94, - PMSWINC_EL0 = 95, - PMUSERENR_EL0 = 96, - APIAKEYLO_EL1 = 97, - APIAKEYHI_EL1 = 98, - APIBKEYLO_EL1 = 99, - APIBKEYHI_EL1 = 100, - APDAKEYLO_EL1 = 101, - APDAKEYHI_EL1 = 102, - APDBKEYLO_EL1 = 103, - APDBKEYHI_EL1 = 104, - APGAKEYLO_EL1 = 105, - APGAKEYHI_EL1 = 106, - ELR_EL1 = 107, - SP_EL1 = 108, - SPSR_EL1 = 109, - CNTVOFF_EL2 = 110, - CNTV_CVAL_EL0 = 111, - CNTV_CTL_EL0 = 112, - CNTP_CVAL_EL0 = 113, - CNTP_CTL_EL0 = 114, - DACR32_EL2 = 115, - IFSR32_EL2 = 116, - FPEXC32_EL2 = 117, - DBGVCR32_EL2 = 118, - NR_SYS_REGS = 119, -}; - -struct kvm_vcpu; - -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[119]; - struct kvm_vcpu *__hyp_running_vcpu; -}; - -struct kvm_pmu_events { - u32 events_host; - u32 events_guest; -}; - -struct kvm_host_data { - struct kvm_cpu_context host_ctxt; - struct kvm_pmu_events pmu_events; - long: 64; -}; - -struct kvm_host_psci_config { - u32 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; + PMUSERENR_EL0 = 95, + APIAKEYLO_EL1 = 96, + APIAKEYHI_EL1 = 97, + APIBKEYLO_EL1 = 98, + APIBKEYHI_EL1 = 99, + APDAKEYLO_EL1 = 100, + APDAKEYHI_EL1 = 101, + APDBKEYLO_EL1 = 102, + APDBKEYHI_EL1 = 103, + APGAKEYLO_EL1 = 104, + APGAKEYHI_EL1 = 105, + ELR_EL1 = 106, + SP_EL1 = 107, + SPSR_EL1 = 108, + CNTVOFF_EL2 = 109, + CNTV_CVAL_EL0 = 110, + CNTV_CTL_EL0 = 111, + CNTP_CVAL_EL0 = 112, + CNTP_CTL_EL0 = 113, + RGSR_EL1 = 114, + GCR_EL1 = 115, + TFSR_EL1 = 116, + TFSRE0_EL1 = 117, + DACR32_EL2 = 118, + IFSR32_EL2 = 119, + FPEXC32_EL2 = 120, + DBGVCR32_EL2 = 121, + NR_SYS_REGS = 122, +}; + +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, }; struct __ftr_reg_entry { @@ -17223,1050 +15437,234 @@ struct alt_instr { u8 alt_len; }; -typedef void (*alternative_cb_t)(struct alt_instr *, __le32 *, __le32 *, int); - -struct alt_region { - struct alt_instr *begin; - struct alt_instr *end; -}; - -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 { - 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 cpu_cacheinfo { - struct cacheinfo *info_list; - unsigned int num_levels; - unsigned int num_leaves; - bool cpu_map_populated; -}; - -typedef long unsigned int ulong; - -struct preempt_notifier; - -struct preempt_ops { - void (*sched_in)(struct preempt_notifier *, int); - void (*sched_out)(struct preempt_notifier *, struct task_struct *); -}; - -struct preempt_notifier { - struct hlist_node link; - struct preempt_ops *ops; -}; - -struct acpi_subtable_header { - u8 type; - u8 length; -}; - -struct acpi_hmat_structure { - u16 type; - u16 reserved; - u32 length; -}; - -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_RESERVED = 16, -}; - -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; -} __attribute__((packed)); - -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, -}; - -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 platform_msi_priv_data; - -struct platform_msi_desc { - struct platform_msi_priv_data *msi_priv_data; - u16 msi_index; -}; - -struct fsl_mc_msi_desc { - u16 msi_index; -}; - -struct ti_sci_inta_msi_desc { - u16 dev_index; -}; - -struct irq_affinity_desc; - -struct msi_desc { - struct list_head list; - unsigned int irq; - unsigned int nvec_used; - struct device *dev; - struct msi_msg msg; - struct irq_affinity_desc *affinity; - const void *iommu_cookie; - void (*write_msi_msg)(struct msi_desc *, void *); - void *write_msi_msg_data; - union { - struct { - u32 masked; - struct { - u8 is_msix: 1; - u8 multiple: 3; - u8 multi_cap: 3; - u8 maskbit: 1; - u8 is_64: 1; - u8 is_virtual: 1; - u16 entry_nr; - unsigned int default_irq; - } msi_attrib; - union { - u8 mask_pos; - void *mask_base; - }; - }; - struct platform_msi_desc platform; - struct fsl_mc_msi_desc fsl_mc; - struct ti_sci_inta_msi_desc inta; - }; -}; - -struct irq_affinity_desc { - struct cpumask mask; - unsigned int is_managed: 1; -}; - -union acpi_subtable_headers { - struct acpi_subtable_header common; - struct acpi_hmat_structure hmat; -}; - -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, -}; - -struct mmu_notifier; - -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 *, long unsigned int, long unsigned int); - int (*clear_young)(struct mmu_notifier *, struct mm_struct *, long unsigned int, long unsigned int); - int (*test_young)(struct mmu_notifier *, struct mm_struct *, long unsigned int); - void (*change_pte)(struct mmu_notifier *, struct mm_struct *, long unsigned int, 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 (*invalidate_range)(struct mmu_notifier *, struct mm_struct *, long unsigned int, long unsigned int); - struct mmu_notifier * (*alloc_notifier)(struct mm_struct *); - void (*free_notifier)(struct mmu_notifier *); -}; - -struct mmu_notifier { - struct hlist_node hlist; - const struct mmu_notifier_ops *ops; - struct mm_struct *mm; - struct callback_head rcu; - unsigned int users; -}; - -struct mmu_notifier_range { - struct vm_area_struct *vma; - struct mm_struct *mm; - long unsigned int start; - long unsigned int end; - unsigned int flags; - enum mmu_notifier_event event; - void *migrate_pgmap_owner; -}; - -struct kvm_guest_debug_arch { - __u64 dbg_bcr[16]; - __u64 dbg_bvr[16]; - __u64 dbg_wcr[16]; - __u64 dbg_wvr[16]; -}; - -struct kvm_debug_exit_arch { - __u32 hsr; - __u64 far; -}; - -struct kvm_sync_regs { - __u64 device_irq_level; -}; - -struct kvm_irq_level { - union { - __u32 irq; - __s32 status; - }; - __u32 level; -}; - -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_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; - __u32 longmode; - __u32 pad; - } 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 { - __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; - __u64 flags; - } 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; - char padding[256]; - }; - __u64 kvm_valid_regs; - __u64 kvm_dirty_regs; - union { - struct kvm_sync_regs regs; - char padding[2048]; - } s; -}; - -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_device_attr { - __u32 flags; - __u32 group; - __u64 attr; - __u64 addr; -}; - -struct kvm_dirty_gfn { - __u32 flags; - __u32 slot; - __u64 offset; -}; - -typedef u64 gpa_t; - -typedef u64 gfn_t; - -struct kvm_arch_memory_slot {}; - -struct kvm_memory_slot { - gfn_t base_gfn; - long unsigned int npages; - long unsigned int *dirty_bitmap; - struct kvm_arch_memory_slot arch; - long unsigned int userspace_addr; - u32 flags; - short int id; - u16 as_id; -}; - -struct kvm_mmu_memory_cache { - int nobjs; - gfp_t gfp_zero; - struct kmem_cache *kmem_cache; - void *objects[40]; -}; - -struct kvm_io_device; - -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 kvm_vcpu_stat { - u64 halt_successful_poll; - u64 halt_attempted_poll; - u64 halt_poll_success_ns; - u64 halt_poll_fail_ns; - u64 halt_poll_invalid; - u64 halt_wakeup; - u64 hvc_exit_stat; - u64 wfe_exit_stat; - u64 wfi_exit_stat; - u64 mmio_exit_user; - u64 mmio_exit_kernel; - u64 exits; -}; - -struct kvm_mmio_fragment { - gpa_t gpa; - void *data; - unsigned int len; -}; - -struct kvm_vcpu_fault_info { - u32 esr_el2; - u64 far_el2; - u64 hpfar_el2; - u64 disr_el1; -}; - -struct vgic_v2_cpu_if { - u32 vgic_hcr; - u32 vgic_vmcr; - u32 vgic_apr; - u32 vgic_lr[64]; - unsigned int used_lrs; -}; - -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 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; - bool (*get_input_level)(int); - void *owner; -}; - -enum iodev_type { - IODEV_CPUIF = 0, - IODEV_DIST = 1, - IODEV_REDIST = 2, - IODEV_ITS = 3, -}; - -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; - u64 pendbaser; - bool lpis_enabled; - u32 num_pri_bits; - u32 num_id_bits; -}; - -struct arch_timer_context { - struct kvm_vcpu *vcpu; - struct kvm_irq_level irq; - struct hrtimer hrtimer; - bool loaded; - u32 host_timer_irq; - u32 host_timer_irq_flags; -}; - -struct arch_timer_cpu { - struct arch_timer_context timers[2]; - struct hrtimer bg_timer; - bool enabled; -}; - -struct kvm_pmc { - u8 idx; - struct perf_event *perf_event; -}; - -struct kvm_pmu { - int irq_num; - struct kvm_pmc pmc[32]; - long unsigned int chained[1]; - bool created; - bool irq_level; - struct irq_work overflow_work; -}; - -struct vcpu_reset_state { - long unsigned int pc; - long unsigned int r0; - bool be; - bool reset; -}; - -struct kvm_s2_mmu; - -struct kvm_vcpu_arch { - struct kvm_cpu_context ctxt; - void *sve_state; - unsigned int sve_max_vl; - struct kvm_s2_mmu *hw_mmu; - u64 hcr_el2; - u32 mdcr_el2; - struct kvm_vcpu_fault_info fault; - u64 workaround_flags; - u64 flags; - struct kvm_guest_debug_arch *debug_ptr; - struct kvm_guest_debug_arch vcpu_debug_state; - struct kvm_guest_debug_arch external_debug_state; - struct thread_info *host_thread_info; - struct user_fpsimd_state *host_fpsimd_state; - struct { - struct kvm_guest_debug_arch regs; - u64 pmscr_el1; - } host_debug_state; - struct vgic_cpu vgic_cpu; - struct arch_timer_cpu timer_cpu; - struct kvm_pmu pmu; - struct { - u32 mdscr_el1; - } guest_debug_preserved; - bool power_off; - bool pause; - struct kvm_mmu_memory_cache mmu_page_cache; - int target; - long unsigned int features[1]; - bool has_run_once; - u64 vsesr_el2; - struct vcpu_reset_state reset_state; - bool sysregs_loaded_on_cpu; - struct { - u64 last_steal; - gpa_t base; - } steal; -}; - -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; - -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; - long unsigned int guest_debug; - int pre_pcpu; - struct list_head blocked_vcpu_list; - struct mutex mutex; - struct kvm_run *run; - struct rcuwait wait; - struct pid *pid; - int sigset_active; - sigset_t sigset; - struct kvm_vcpu_stat stat; - 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; - struct kvm_vcpu_arch arch; - struct kvm_dirty_ring dirty_ring; -}; - -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; - long unsigned int *db_bitmap; - int nr_db_lpis; - u32 vlpi_count[16]; -}; - -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 vgic_register_region { - unsigned int reg_offset; - unsigned int len; - unsigned int bits_per_irq; - unsigned int access_flags; - union { - long unsigned int (*read)(struct kvm_vcpu *, gpa_t, unsigned int); - long unsigned int (*its_read)(struct kvm *, struct vgic_its *, gpa_t, unsigned int); - }; - union { - void (*write)(struct kvm_vcpu *, gpa_t, unsigned int, long unsigned int); - void (*its_write)(struct kvm *, struct vgic_its *, gpa_t, unsigned int, long unsigned int); - }; - long unsigned int (*uaccess_read)(struct kvm_vcpu *, gpa_t, unsigned int); - union { - int (*uaccess_write)(struct kvm_vcpu *, gpa_t, unsigned int, long unsigned int); - int (*uaccess_its_write)(struct kvm *, struct vgic_its *, gpa_t, unsigned int, long unsigned int); - }; -}; - -struct kvm_device_ops; +typedef void (*alternative_cb_t)(struct alt_instr *, __le32 *, __le32 *, int); -struct kvm_device { - const struct kvm_device_ops *ops; - struct kvm *kvm; - void *private; - struct list_head vm_node; +struct alt_region { + struct alt_instr *begin; + struct alt_instr *end; }; -struct vgic_redist_region { - u32 index; - gpa_t base; - u32 count; - u32 free_index; - struct list_head list; +enum cache_type { + CACHE_TYPE_NOCACHE = 0, + CACHE_TYPE_INST = 1, + CACHE_TYPE_DATA = 2, + CACHE_TYPE_SEPARATE = 3, + CACHE_TYPE_UNIFIED = 4, }; -struct vgic_state_iter; +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 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; - 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 cpu_cacheinfo { + struct cacheinfo *info_list; + unsigned int num_levels; + unsigned int num_leaves; + bool cpu_map_populated; }; -struct kvm_vmid { - u64 vmid_gen; - u32 vmid; +struct acpi_subtable_header { + u8 type; + u8 length; }; -struct kvm_pgtable; +struct acpi_hmat_structure { + u16 type; + u16 reserved; + u32 length; +}; -struct kvm_s2_mmu { - struct kvm_vmid vmid; - phys_addr_t pgd_phys; - struct kvm_pgtable *pgt; - int *last_vcpu_ran; - struct kvm *kvm; +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_RESERVED = 17, }; -typedef u64 kvm_pte_t; +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; +} __attribute__((packed)); -struct kvm_pgtable { - u32 ia_bits; - u32 start_level; - kvm_pte_t *pgd; - struct kvm_s2_mmu *mmu; +struct acpi_prmt_module_header { + u16 revision; + u16 length; }; -struct kvm_vm_stat { - ulong remote_tlb_flush; +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, }; -struct kvm_arch { - struct kvm_s2_mmu mmu; - u64 vtcr; - int max_vcpus; - struct vgic_dist vgic; - u32 psci_version; - bool return_nisv_io_abort_to_user; - long unsigned int *pmu_filter; - unsigned int pmuver; - u8 pfr0_csv2; - u8 pfr0_csv3; +struct arch_msi_msg_addr_lo { + u32 address_lo; }; -struct kvm_memslots; - -struct kvm_io_bus; +typedef struct arch_msi_msg_addr_lo arch_msi_msg_addr_lo_t; -struct kvm_irq_routing_table; +struct arch_msi_msg_addr_hi { + u32 address_hi; +}; -struct kvm_stat_data; +typedef struct arch_msi_msg_addr_hi arch_msi_msg_addr_hi_t; -struct kvm { - spinlock_t mmu_lock; - struct mutex slots_lock; - struct mm_struct *mm; - struct kvm_memslots *memslots[1]; - struct kvm_vcpu *vcpus[512]; - atomic_t online_vcpus; - int created_vcpus; - int last_boosted_vcpu; - struct list_head vm_list; - struct mutex lock; - struct kvm_io_bus *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 *irq_routing; - struct hlist_head irq_ack_notifier_list; - struct mmu_notifier mmu_notifier; - long unsigned int mmu_notifier_seq; - long int mmu_notifier_count; - long int tlbs_dirty; - 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; - unsigned int max_halt_poll_ns; - u32 dirty_ring_size; +struct arch_msi_msg_data { + u32 data; }; -struct kvm_io_range { - gpa_t addr; - int len; - struct kvm_io_device *dev; -}; +typedef struct arch_msi_msg_data arch_msi_msg_data_t; -struct kvm_io_bus { - int dev_count; - int ioeventfd_count; - struct kvm_io_range range[0]; +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; + }; }; -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, +struct platform_msi_priv_data; + +struct platform_msi_desc { + struct platform_msi_priv_data *msi_priv_data; + u16 msi_index; }; -struct kvm_irq_routing_table { - int chip[988]; - u32 nr_rt_entries; - struct hlist_head map[0]; +struct fsl_mc_msi_desc { + u16 msi_index; }; -struct kvm_memslots { - u64 generation; - short int id_to_index[512]; - atomic_t lru_slot; - int used_slots; - struct kvm_memory_slot memslots[0]; +struct ti_sci_inta_msi_desc { + u16 dev_index; }; -struct kvm_stats_debugfs_item; +struct irq_affinity_desc; -struct kvm_stat_data { - struct kvm *kvm; - struct kvm_stats_debugfs_item *dbgfs_item; +struct msi_desc { + struct list_head list; + unsigned int irq; + unsigned int nvec_used; + struct device *dev; + struct msi_msg msg; + struct irq_affinity_desc *affinity; + const void *iommu_cookie; + void (*write_msi_msg)(struct msi_desc *, void *); + void *write_msi_msg_data; + union { + struct { + 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; + u16 entry_nr; + unsigned int default_irq; + } msi_attrib; + union { + u8 mask_pos; + void *mask_base; + }; + }; + struct platform_msi_desc platform; + struct fsl_mc_msi_desc fsl_mc; + struct ti_sci_inta_msi_desc inta; + }; }; -enum kvm_stat_kind { - KVM_STAT_VM = 0, - KVM_STAT_VCPU = 1, +struct irq_affinity_desc { + struct cpumask mask; + unsigned int is_managed: 1; }; -struct kvm_stats_debugfs_item { - const char *name; - int offset; - enum kvm_stat_kind kind; - int mode; +union acpi_subtable_headers { + struct acpi_subtable_header common; + struct acpi_hmat_structure hmat; + struct acpi_prmt_module_header prmt; }; -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 int (*ioctl)(struct kvm_device *, unsigned int, long unsigned int); - int (*mmap)(struct kvm_device *, struct vm_area_struct *); +typedef int (*acpi_tbl_entry_handler)(union acpi_subtable_headers *, const long unsigned int); + +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, }; struct trace_event_raw_ipi_raise { @@ -18307,211 +15705,139 @@ enum ipi_msg_type { typedef __u64 __le64; -typedef void *acpi_handle; - -typedef u64 phys_cpuid_t; - -struct thermal_cooling_device_ops; - -struct thermal_cooling_device { - int id; - char type[20]; - 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; -}; - -struct thermal_cooling_device_ops { - int (*get_max_state)(struct thermal_cooling_device *, long unsigned int *); - int (*get_cur_state)(struct thermal_cooling_device *, long unsigned int *); - int (*set_cur_state)(struct thermal_cooling_device *, long unsigned int); - int (*get_requested_power)(struct thermal_cooling_device *, u32 *); - int (*state2power)(struct thermal_cooling_device *, long unsigned int, u32 *); - int (*power2state)(struct thermal_cooling_device *, u32, long unsigned int *); -}; - -struct acpi_processor_cx { - u8 valid; - u8 type; - u32 address; - u8 entry_method; - u8 index; - u32 latency; - u8 bm_sts_skip; - char desc[32]; +enum scale_freq_source { + SCALE_FREQ_SOURCE_CPUFREQ = 0, + SCALE_FREQ_SOURCE_ARCH = 1, + SCALE_FREQ_SOURCE_CPPC = 2, }; -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 scale_freq_data { + enum scale_freq_source source; + void (*set_freq_scale)(); }; -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 cpu_topology { + int thread_id; + int core_id; + int package_id; + int llc_id; + cpumask_t thread_sibling; + cpumask_t core_sibling; + cpumask_t llc_sibling; }; -struct acpi_psd_package { - u64 num_entries; - u64 revision; - u64 domain; - u64 coord_type; - u64 num_processors; +enum cpufreq_table_sorting { + CPUFREQ_TABLE_UNSORTED = 0, + CPUFREQ_TABLE_SORTED_ASCENDING = 1, + CPUFREQ_TABLE_SORTED_DESCENDING = 2, }; -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_processor_px { - u64 core_frequency; - u64 power; - u64 transition_latency; - u64 bus_master_latency; - u64 control; - u64 status; +struct cpufreq_cpuinfo { + unsigned int max_freq; + unsigned int min_freq; + unsigned int transition_latency; }; -struct acpi_processor_performance { - unsigned int state; - unsigned int platform_limit; - struct acpi_pct_register control_register; - struct acpi_pct_register status_register; - short: 16; - unsigned int state_count; - int: 32; - struct acpi_processor_px *states; - struct acpi_psd_package domain_info; - cpumask_var_t shared_cpu_map; - unsigned int shared_type; - int: 32; -} __attribute__((packed)); +struct clk; -struct acpi_tsd_package { - u64 num_entries; - u64 revision; - u64 domain; - u64 coord_type; - u64 num_processors; -}; +struct cpufreq_governor; -struct acpi_processor_tx_tss { - u64 freqpercentage; - u64 power; - u64 transition_latency; - u64 control; - u64 status; -}; +struct cpufreq_frequency_table; -struct acpi_processor_tx { - u16 power; - u16 performance; -}; +struct cpufreq_stats; -struct acpi_processor; +struct thermal_cooling_device; -struct acpi_processor_throttling { - unsigned int state; - unsigned int platform_limit; - struct acpi_pct_register control_register; - struct acpi_pct_register status_register; - short: 16; - unsigned int state_count; - int: 32; - 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; - char: 8; +struct cpufreq_policy { + cpumask_var_t cpus; + cpumask_var_t related_cpus; + cpumask_var_t real_cpus; unsigned int shared_type; - struct acpi_processor_tx states[16]; - int: 32; -} __attribute__((packed)); - -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; + 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; + unsigned int transition_delay_us; + bool dvfs_possible_from_any_cpu; + 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 acpi_processor_lx { - int px; - int tx; +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 acpi_processor_limit { - struct acpi_processor_lx state; - struct acpi_processor_lx thermal; - struct acpi_processor_lx user; +struct cpufreq_frequency_table { + unsigned int flags; + unsigned int driver_data; + unsigned int frequency; }; -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 thermal_cooling_device_ops; -struct acpi_processor_errata { - u8 smp; - struct { - u8 throttle: 1; - u8 fdma: 1; - u8 reserved: 6; - u32 bmisx; - } piix4; +struct thermal_cooling_device { + int id; + char *type; + long unsigned int 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; }; -struct cpuidle_driver; +struct thermal_cooling_device_ops { + int (*get_max_state)(struct thermal_cooling_device *, long unsigned int *); + int (*get_cur_state)(struct thermal_cooling_device *, long unsigned int *); + int (*set_cur_state)(struct thermal_cooling_device *, long unsigned int); + int (*get_requested_power)(struct thermal_cooling_device *, u32 *); + int (*state2power)(struct thermal_cooling_device *, long unsigned int, u32 *); + int (*power2state)(struct thermal_cooling_device *, u32, long unsigned int *); +}; struct cpc_reg { u8 descriptor; @@ -18536,6 +15862,66 @@ struct arm_smccc_res { long unsigned int a3; }; +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_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_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, +}; + enum spectre_v4_policy { SPECTRE_V4_POLICY_MITIGATION_DYNAMIC = 0, SPECTRE_V4_POLICY_MITIGATION_ENABLED = 1, @@ -18547,6 +15933,35 @@ struct spectre_v4_param { enum spectre_v4_policy policy; }; +enum bhb_mitigation_bits { + BHB_LOOP = 0, + BHB_FW = 1, + BHB_HW = 2, + BHB_INSN = 3, +}; + +struct ftr_set_desc { + char name[20]; + struct arm64_ftr_override *override; + struct { + char name[10]; + u8 shift; + bool (*filter)(u64); + } fields[0]; +}; + +struct arm_cpuidle_irq_context { + long unsigned int pmr; + long unsigned int daif_bits; +}; + +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; @@ -18559,10 +15974,10 @@ typedef s32 compat_timer_t; typedef s32 compat_int_t; -typedef u64 compat_u64; - typedef u32 __compat_uid32_t; +typedef u64 compat_u64; + typedef u32 compat_sigset_word; struct compat_sigaltstack { @@ -18614,6 +16029,7 @@ struct compat_siginfo { struct { compat_uptr_t _addr; union { + int _trapno; short int _addr_lsb; struct { char _dummy_bnd[4]; @@ -18624,6 +16040,11 @@ struct compat_siginfo { char _dummy_pkey[4]; u32 _pkey; } _addr_pkey; + struct { + compat_ulong_t _data; + u32 _type; + u32 _flags; + } _perf; }; } _sigfault; struct { @@ -18713,6 +16134,14 @@ union __fpsimd_vreg { }; }; +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 dyn_arch_ftrace {}; struct dyn_ftrace { @@ -18730,6 +16159,10 @@ enum { FTRACE_MAY_SLEEP = 32, }; +typedef __u64 Elf64_Off; + +typedef __s64 Elf64_Sxword; + struct elf64_rela { Elf64_Addr r_offset; Elf64_Xword r_info; @@ -18738,6 +16171,40 @@ struct elf64_rela { typedef struct elf64_rela Elf64_Rela; +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 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; + enum aarch64_reloc_op { RELOC_OP_NONE = 0, RELOC_OP_ABS = 1, @@ -18750,6 +16217,20 @@ enum aarch64_insn_movw_imm_type { AARCH64_INSN_IMM_MOVKZ = 1, }; +typedef void (*swap_func_t)(void *, void *, int); + +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 aarch64_insn_adr_type { + AARCH64_INSN_ADR_TYPE_ADRP = 0, + AARCH64_INSN_ADR_TYPE_ADR = 1, +}; + enum perf_sample_regs_abi { PERF_SAMPLE_REGS_ABI_NONE = 0, PERF_SAMPLE_REGS_ABI_32 = 1, @@ -18793,6 +16274,13 @@ enum perf_event_arm_regs { PERF_REG_ARM64_MAX = 33, }; +struct perf_guest_info_callbacks { + int (*is_in_guest)(); + int (*is_user_mode)(); + long unsigned int (*get_guest_ip)(); + void (*handle_intel_pt_intr)(); +}; + struct perf_callchain_entry_ctx { struct perf_callchain_entry *entry; u32 max_stack; @@ -18980,6 +16468,14 @@ enum armpmu_attr_groups { ARMPMU_NR_ATTR_GROUPS = 4, }; +typedef int (*armpmu_init_fn)(struct arm_pmu *); + +struct pmu_probe_info { + unsigned int cpuid; + unsigned int mask; + armpmu_init_fn init; +}; + struct clock_read_data { u64 epoch_ns; u64 epoch_cyc; @@ -19010,67 +16506,166 @@ struct sleep_stack_data { long unsigned int callee_saved_regs[12]; }; -struct cpuidle_state_usage { - long long unsigned int disable; - long long unsigned int usage; - u64 time_ns; - long long unsigned int above; - long long unsigned int below; - long long unsigned int rejected; - long long unsigned int s2idle_usage; - long long unsigned int s2idle_time; -}; +typedef void *acpi_handle; -struct cpuidle_device; +typedef u64 phys_cpuid_t; -struct cpuidle_driver___2; +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 cpuidle_state { - char name[16]; +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]; - u64 exit_latency_ns; - u64 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___2 *, int); - int (*enter_dead)(struct cpuidle_device *, int); - int (*enter_s2idle)(struct cpuidle_device *, struct cpuidle_driver___2 *, int); }; -struct cpuidle_state_kobj; +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 cpuidle_driver_kobj; +struct acpi_psd_package { + u64 num_entries; + u64 revision; + u64 domain; + u64 coord_type; + u64 num_processors; +}; -struct cpuidle_device_kobj; +struct acpi_pct_register { + u8 descriptor; + u16 length; + u8 space_id; + u8 bit_width; + u8 bit_offset; + u8 reserved; + u64 address; +} __attribute__((packed)); -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; +struct acpi_processor_px { + u64 core_frequency; + u64 power; + u64 transition_latency; + u64 bus_master_latency; + u64 control; + u64 status; }; -struct cpuidle_driver___2 { - 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; +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_tsd_package { + u64 num_entries; + u64 revision; + u64 domain; + u64 coord_type; + u64 num_processors; +}; + +struct acpi_processor_tx_tss { + u64 freqpercentage; + u64 power; + u64 transition_latency; + u64 control; + u64 status; +}; + +struct acpi_processor_tx { + u16 power; + u16 performance; +}; + +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_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_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 { + 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; }; enum jump_label_type { @@ -19086,6 +16681,15 @@ struct die_args { int signr; }; +enum kgdb_bptype { + BP_BREAKPOINT = 0, + BP_HARDWARE_BREAKPOINT = 1, + BP_WRITE_WATCHPOINT = 2, + BP_READ_WATCHPOINT = 3, + BP_ACCESS_WATCHPOINT = 4, + BP_POKE_BREAKPOINT = 5, +}; + enum kgdb_bpstate { BP_UNDEFINED = 0, BP_REMOVED = 1, @@ -19100,6 +16704,66 @@ struct kgdb_bkpt { enum kgdb_bpstate state; }; +struct dbg_reg_def_t { + char *name; + int size; + int offset; +}; + +struct kgdb_arch { + unsigned char gdb_bpt_instr[4]; + long unsigned int flags; + int (*set_breakpoint)(long unsigned int, char *); + int (*remove_breakpoint)(long unsigned int, char *); + int (*set_hw_breakpoint)(long unsigned int, int, enum kgdb_bptype); + int (*remove_hw_breakpoint)(long unsigned int, int, enum kgdb_bptype); + void (*disable_hw_break)(struct pt_regs *); + void (*remove_all_hw_break)(); + void (*correct_hw_break)(); + void (*enable_nmi)(bool); +}; + +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 *, long unsigned int, void *); + struct pci_device_id { __u32 vendor; __u32 device; @@ -19108,6 +16772,7 @@ struct pci_device_id { __u32 class; __u32 class_mask; kernel_ulong_t driver_data; + __u32 override_only; }; struct resource_entry { @@ -19411,8 +17076,6 @@ struct pci_dev; struct pci_ops; -struct msi_controller; - struct pci_bus { struct list_head node; struct pci_bus *parent; @@ -19424,7 +17087,6 @@ struct pci_bus { struct list_head resources; struct resource busn_res; struct pci_ops *ops; - struct msi_controller *msi; void *sysdata; struct proc_dir_entry *procdir; unsigned char number; @@ -19440,6 +17102,7 @@ struct pci_bus { struct bin_attribute *legacy_io; struct bin_attribute *legacy_mem; unsigned int is_added: 1; + unsigned int unsafe_warn: 1; }; struct acpi_gpio_params { @@ -19478,6 +17141,12 @@ typedef unsigned int pcie_reset_state_t; typedef short unsigned int pci_dev_flags_t; +struct pci_vpd { + struct mutex lock; + unsigned int len; + u8 cap; +}; + struct aer_stats; struct rcec_ea; @@ -19486,8 +17155,6 @@ struct pci_driver; struct pcie_link_state; -struct pci_vpd; - struct pci_sriov; struct pci_dev { @@ -19509,6 +17176,7 @@ struct pci_dev { 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; @@ -19543,6 +17211,7 @@ struct pci_dev { struct pcie_link_state *link_state; unsigned int ltr_path: 1; u16 l1ss; + unsigned int pasid_no_tlp: 1; unsigned int eetlp_prefix_path: 1; pci_channel_state_t error_state; struct device dev; @@ -19572,7 +17241,6 @@ struct pci_dev { unsigned int state_saved: 1; unsigned int is_physfn: 1; unsigned int is_virtfn: 1; - unsigned int reset_fn: 1; unsigned int is_hotplug_bridge: 1; unsigned int shpc_managed: 1; unsigned int is_thunderbolt: 1; @@ -19590,16 +17258,16 @@ struct pci_dev { atomic_t enable_cnt; u32 saved_config_space[16]; struct hlist_head saved_cap_space; - struct bin_attribute *rom_attr; int rom_attr_enabled; struct bin_attribute *res_attr[17]; struct bin_attribute *res_attr_wc[17]; unsigned int broken_cmd_compl: 1; + u16 ptm_cap; unsigned int ptm_root: 1; unsigned int ptm_enabled: 1; u8 ptm_granularity; const struct attribute_group **msi_irq_groups; - struct pci_vpd *vpd; + struct pci_vpd vpd; u16 dpc_cap; unsigned int dpc_rp_extensions: 1; u8 dpc_rp_log_size; @@ -19619,6 +17287,7 @@ struct pci_dev { size_t romlen; char *driver_override; long unsigned int priv_flags; + u8 reset_methods[7]; }; struct pci_dynids { @@ -19638,8 +17307,11 @@ struct pci_driver { 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; }; @@ -19651,13 +17323,13 @@ struct pci_host_bridge { 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; - struct msi_controller *msi; unsigned int ignore_reset_delay: 1; unsigned int no_ext_tags: 1; unsigned int native_aer: 1; @@ -19668,6 +17340,7 @@ struct pci_host_bridge { unsigned int native_dpc: 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); long: 64; long: 64; @@ -19693,14 +17366,6 @@ struct pci_error_handlers { void (*resume)(struct pci_dev *); }; -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, -}; - struct acpi_pci_root_ops; struct acpi_pci_root_info { @@ -19744,6 +17409,8 @@ struct acpi_pci_generic_root_info { struct pci_config_window *cfg; }; +typedef bool (*smp_cond_func_t)(int, void *); + struct trace_event_raw_instruction_emulation { struct trace_entry ent; u32 __data_loc_instr; @@ -19789,23 +17456,88 @@ typedef u64 acpi_physical_address; typedef u32 acpi_status; -struct acpi_table_bgrt { - struct acpi_table_header header; - u16 version; - u8 status; - u8 image_type; - u64 image_address; - u32 image_offset_x; - u32 image_offset_y; +typedef char *acpi_string; + +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 gpio_desc; +struct acpi_generic_address { + u8 space_id; + u8 bit_width; + u8 bit_offset; + u8 access_width; + u64 address; +} __attribute__((packed)); -struct circ_buf { - char *buf; - int head; - int tail; -}; +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)); + +typedef int (*acpi_tbl_table_handler)(struct acpi_table_header *); struct serial_icounter_struct { int cts; @@ -19843,172 +17575,6 @@ struct serial_struct { long unsigned int iomap_base; }; -struct sysrq_key_op { - void (* const handler)(int); - const char * const help_msg; - const char * const action_msg; - const int enable_mask; -}; - -struct serial_rs485 { - __u32 flags; - __u32 delay_rts_before_send; - __u32 delay_rts_after_send; - __u32 padding[5]; -}; - -struct serial_iso7816 { - __u32 flags; - __u32 tg; - __u32 sc_fi; - __u32 sc_di; - __u32 clk; - __u32 reserved[5]; -}; - -struct 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 (*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 *, 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, long unsigned int); - int (*poll_init)(struct uart_port *); - void (*poll_put_char)(struct uart_port *, unsigned char); - int (*poll_get_char)(struct 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; -}; - -typedef unsigned int upf_t; - -typedef unsigned int upstat_t; - -struct uart_state; - -struct uart_port { - spinlock_t lock; - long unsigned int 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 *, 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 serial_rs485 *); - int (*iso7816_config)(struct uart_port *, struct serial_iso7816 *); - unsigned int irq; - long unsigned int 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; - int hw_stopped; - unsigned int mctrl; - unsigned int timeout; - 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; - long unsigned int sysrq; - unsigned int 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 gpio_desc *rs485_term_gpio; - struct serial_iso7816 iso7816; - void *private_data; -}; - -enum uart_pm_state { - UART_PM_STATE_ON = 0, - UART_PM_STATE_OFF = 3, - UART_PM_STATE_UNDEFINED = 4, -}; - -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 earlycon_device { - struct console *con; - struct uart_port port; - char options[16]; - unsigned int baud; -}; - -struct earlycon_id { - char name[15]; - char name_term; - char compatible[128]; - int (*setup)(struct earlycon_device *, const char *); -}; - enum acpi_srat_type { ACPI_SRAT_TYPE_CPU_AFFINITY = 0, ACPI_SRAT_TYPE_MEMORY_AFFINITY = 1, @@ -20095,6 +17661,82 @@ enum { IRQD_IRQ_ENABLED_ON_SUSPEND = 1073741824, }; +struct kimage_arch { + void *dtb; + phys_addr_t dtb_mem; + phys_addr_t kern_reloc; +}; + +typedef int kexec_probe_t(const char *, long unsigned int); + +struct kimage; + +typedef void *kexec_load_t(struct kimage *, char *, long unsigned int, char *, long unsigned int, char *, long unsigned int); + +typedef int kexec_cleanup_t(void *); + +typedef int kexec_verify_sig_t(const char *, long unsigned int); + +struct kexec_file_ops { + kexec_probe_t *probe; + kexec_load_t *load; + kexec_cleanup_t *cleanup; + kexec_verify_sig_t *verify_sig; +}; + +typedef long unsigned int kimage_entry_t; + +struct kexec_segment { + union { + void *buf; + void *kbuf; + }; + size_t bufsz; + long unsigned int mem; + size_t memsz; +}; + +struct purgatory_info { + const Elf64_Ehdr *ehdr; + Elf64_Shdr *sechdrs; + void *purgatory_buf; +}; + +struct kimage { + kimage_entry_t head; + kimage_entry_t *entry; + kimage_entry_t *last_entry; + long unsigned int start; + struct page *control_code_page; + struct page *swap_page; + void *vmcoreinfo_data_copy; + long unsigned int nr_segments; + struct kexec_segment segment[16]; + struct list_head control_pages; + struct list_head dest_pages; + struct list_head unusable_pages; + long unsigned int control_page; + unsigned int type: 1; + unsigned int preserve_context: 1; + unsigned int file_mode: 1; + struct kimage_arch arch; + void *kernel_buf; + long unsigned int kernel_buf_len; + void *initrd_buf; + long unsigned int initrd_buf_len; + char *cmdline_buf; + long unsigned int cmdline_buf_len; + const struct kexec_file_ops *fops; + void *image_loader_data; + struct purgatory_info purgatory_info; + void *ima_buffer; + phys_addr_t ima_buffer_addr; + size_t ima_buffer_size; + void *elf_headers; + long unsigned int elf_headers_sz; + long unsigned int elf_load_addr; +}; + typedef u8 uint8_t; struct kexec_buf { @@ -20158,10 +17800,6 @@ struct arm64_image_header { __le32 res5; }; -struct kobject___2; - -struct kobj_attribute___2; - typedef int sdei_event_callback(u32, struct pt_regs *, void *); struct sdei_registered_event { @@ -20176,6 +17814,23 @@ typedef struct { long unsigned int val; } swp_entry_t; +typedef u32 probe_opcode_t; + +typedef void probes_handler_t(u32, long int, struct pt_regs *); + +struct arch_probe_insn { + probe_opcode_t *insn; + pstate_check_t *pstate_cc; + probes_handler_t *handler; + long unsigned int restore; +}; + +typedef u32 kprobe_opcode_t; + +struct arch_specific_insn { + struct arch_probe_insn api; +}; + struct freelist_node { atomic_t refs; struct freelist_node *next; @@ -20185,6 +17840,37 @@ struct freelist_head { struct freelist_node *head; }; +struct kprobe; + +struct prev_kprobe { + struct kprobe *kp; + unsigned int status; +}; + +typedef int (*kprobe_pre_handler_t)(struct kprobe *, struct pt_regs *); + +typedef void (*kprobe_post_handler_t)(struct kprobe *, struct pt_regs *, long unsigned int); + +struct kprobe { + struct hlist_node hlist; + struct list_head list; + long unsigned int 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 kprobe_ctlblk { + unsigned int kprobe_status; + long unsigned int saved_irqflag; + struct prev_kprobe prev_kprobe; +}; + struct kretprobe_instance; typedef int (*kretprobe_handler_t)(struct kretprobe_instance *, struct pt_regs *); @@ -20221,12 +17907,32 @@ struct kretprobe { struct kretprobe_holder *rph; }; +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; +}; + enum probe_insn { INSN_REJECTED = 0, INSN_GOOD_NO_SLOT = 1, INSN_GOOD = 2, }; +enum aarch64_insn_encoding_class { + AARCH64_INSN_CLS_UNKNOWN = 0, + AARCH64_INSN_CLS_SVE = 1, + AARCH64_INSN_CLS_DP_IMM = 2, + AARCH64_INSN_CLS_DP_REG = 3, + AARCH64_INSN_CLS_DP_FPSIMD = 4, + AARCH64_INSN_CLS_LDST = 5, + AARCH64_INSN_CLS_BR_SYS = 6, +}; + enum aarch64_insn_special_register { AARCH64_INSN_SPCLREG_SPSR_EL1 = 49664, AARCH64_INSN_SPCLREG_ELR_EL1 = 49665, @@ -20265,15 +17971,32 @@ enum rp_check { RP_CHECK_RET = 2, }; -typedef s8 int8_t; +struct io_tlb_slot; + +struct io_tlb_mem { + phys_addr_t start; + phys_addr_t end; + long unsigned int nslabs; + long unsigned int used; + unsigned int index; + spinlock_t lock; + struct dentry *debugfs; + bool late_alloc; + bool force_bounce; + bool for_alloc; + struct io_tlb_slot *slots; +}; struct iommu_fault_param; +struct iopf_device_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; @@ -20384,6 +18107,8 @@ struct iommu_domain_geometry { bool force_aperture; }; +struct iommu_dma_cookie; + struct iommu_domain { unsigned int type; const struct iommu_ops *ops; @@ -20391,7 +18116,7 @@ struct iommu_domain { iommu_fault_handler_t handler; void *handler_token; struct iommu_domain_geometry geometry; - void *iova_cookie; + struct iommu_dma_cookie *iova_cookie; }; typedef int (*iommu_dev_fault_handler_t)(struct iommu_fault *, void *); @@ -20417,6 +18142,7 @@ struct iommu_iotlb_gather { long unsigned int end; size_t pgsize; struct page *freelist; + bool queued; }; struct iommu_device { @@ -20446,7 +18172,6 @@ struct iommu_fwspec { const struct iommu_ops *ops; struct fwnode_handle *iommu_fwnode; u32 flags; - u32 num_pasid_bits; unsigned int num_ids; u32 ids[0]; }; @@ -20457,105 +18182,10 @@ enum xen_domain_type { XEN_HVM_DOMAIN = 2, }; -struct hvm_start_info { - uint32_t magic; - uint32_t version; - uint32_t flags; - uint32_t nr_modules; - uint64_t modlist_paddr; - uint64_t cmdline_paddr; - uint64_t rsdp_paddr; - uint64_t memmap_paddr; - uint32_t memmap_entries; - uint32_t reserved; -}; - -typedef uint64_t xen_pfn_t; - -typedef uint64_t xen_ulong_t; - -struct arch_vcpu_info {}; - -struct arch_shared_info {}; - -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_wall_clock { - u32 version; - u32 sec; - u32 nsec; - u32 sec_hi; -}; - -struct vcpu_info { - uint8_t evtchn_upcall_pending; - uint8_t evtchn_upcall_mask; - xen_ulong_t evtchn_pending_sel; - struct arch_vcpu_info arch; - struct pvclock_vcpu_time_info time; -}; - -struct shared_info___2 { - struct vcpu_info vcpu_info[1]; - xen_ulong_t evtchn_pending[64]; - xen_ulong_t evtchn_mask[64]; - struct pvclock_wall_clock wc; - struct arch_shared_info arch; -}; - -struct start_info___2 { - char magic[32]; - long unsigned int nr_pages; - long unsigned int shared_info; - uint32_t flags; - xen_pfn_t store_mfn; - uint32_t store_evtchn; - union { - struct { - xen_pfn_t mfn; - uint32_t evtchn; - } domU; - struct { - uint32_t info_off; - uint32_t info_size; - } dom0; - } console; - long unsigned int pt_base; - long unsigned int nr_pt_frames; - long unsigned int mfn_list; - long unsigned int mod_start; - long unsigned int mod_len; - int8_t cmd_line[1024]; - long unsigned int first_p2m_pfn; - long unsigned int nr_p2m_frames; -}; - -struct balloon_stats { - long unsigned int current_pages; - long unsigned int target_pages; - long unsigned int target_unpopulated; - long unsigned int balloon_low; - long unsigned int balloon_high; - long unsigned int total_pages; - long unsigned int schedule_delay; - long unsigned int max_schedule_delay; - long unsigned int retry_count; - long unsigned int max_retry_count; -}; - -enum swiotlb_force { - SWIOTLB_NORMAL = 0, - SWIOTLB_FORCE = 1, - SWIOTLB_NO_FORCE = 2, +struct io_tlb_slot { + phys_addr_t orig_addr; + size_t alloc_size; + unsigned int list; }; typedef struct { @@ -20563,6 +18193,7 @@ typedef struct { } p4d_t; struct hstate { + struct mutex resize_lock; int next_nid_to_alloc; int next_nid_to_free; unsigned int order; @@ -20584,12 +18215,18 @@ struct hstate { }; struct fault_info { - int (*fn)(long unsigned int, unsigned int, struct pt_regs *); + int (*fn)(long unsigned int, long unsigned int, struct pt_regs *); int sig; int code; const char *name; }; +enum swiotlb_force { + SWIOTLB_NORMAL = 0, + SWIOTLB_FORCE = 1, + SWIOTLB_NO_FORCE = 2, +}; + typedef u64 p4dval_t; struct mhp_params { @@ -20597,6 +18234,16 @@ struct mhp_params { pgprot_t pgprot; }; +struct mem_section_usage { + long unsigned int subsection_map[1]; + long unsigned int pageblock_flags[0]; +}; + +struct mem_section { + long unsigned int section_mem_map; + struct mem_section_usage *usage; +}; + struct memory_notify { long unsigned int start_pfn; long unsigned int nr_pages; @@ -20606,31 +18253,12 @@ struct memory_notify { }; struct page_change_data { - pgprot_t set_mask; - pgprot_t clear_mask; -}; - -struct hugepage_subpool { - spinlock_t lock; - long int count; - long int max_hpages; - long int used_hpages; - struct hstate *hstate; - long int min_hpages; - long int rsv_hpages; -}; - -struct hugetlbfs_sb_info { - long int max_inodes; - long int free_inodes; - spinlock_t stat_lock; - struct hstate *hstate; - struct hugepage_subpool *spool; - kuid_t uid; - kgid_t gid; - umode_t mode; + pgprot_t set_mask; + pgprot_t clear_mask; }; +typedef long unsigned int vm_flags_t; + struct ptdump_range { long unsigned int start; long unsigned int end; @@ -20735,6 +18363,99 @@ enum { __MAX_BPF_REG = 11, }; +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, +}; + +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_ldst_type { + AARCH64_INSN_LDST_LOAD_REG_OFFSET = 0, + AARCH64_INSN_LDST_STORE_REG_OFFSET = 1, + AARCH64_INSN_LDST_LOAD_PAIR_PRE_INDEX = 2, + AARCH64_INSN_LDST_STORE_PAIR_PRE_INDEX = 3, + AARCH64_INSN_LDST_LOAD_PAIR_POST_INDEX = 4, + AARCH64_INSN_LDST_STORE_PAIR_POST_INDEX = 5, + AARCH64_INSN_LDST_LOAD_EX = 6, + AARCH64_INSN_LDST_STORE_EX = 7, +}; + +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_data1_type { + AARCH64_INSN_DATA1_REVERSE_16 = 0, + AARCH64_INSN_DATA1_REVERSE_32 = 1, + AARCH64_INSN_DATA1_REVERSE_64 = 2, +}; + +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_data3_type { + AARCH64_INSN_DATA3_MADD = 0, + AARCH64_INSN_DATA3_MSUB = 1, +}; + enum { DUMP_PREFIX_NONE = 0, DUMP_PREFIX_ADDRESS = 1, @@ -20743,10 +18464,12 @@ enum { struct bpf_binary_header { u32 pages; - int: 32; + long: 0; u8 image[0]; }; +typedef void (*bpf_jit_fill_hole_t)(void *, unsigned int); + struct jit_ctx { const struct bpf_prog *prog; int idx; @@ -20763,12 +18486,20 @@ struct arm64_jit_data { struct jit_ctx ctx; }; +typedef u64 gpa_t; + +typedef u64 gfn_t; + +typedef long unsigned int hva_t; + typedef u64 hpa_t; typedef u64 hfn_t; typedef hfn_t kvm_pfn_t; +struct kvm_memory_slot; + struct gfn_to_hva_cache { u64 generation; gpa_t gpa; @@ -20777,6 +18508,19 @@ struct gfn_to_hva_cache { struct kvm_memory_slot *memslot; }; +struct kvm_arch_memory_slot {}; + +struct kvm_memory_slot { + gfn_t base_gfn; + long unsigned int npages; + long unsigned int *dirty_bitmap; + struct kvm_arch_memory_slot arch; + long unsigned int userspace_addr; + u32 flags; + short int id; + u16 as_id; +}; + struct gfn_to_pfn_cache { u64 generation; gfn_t gfn; @@ -20784,6 +18528,372 @@ struct gfn_to_pfn_cache { bool dirty; }; +struct kvm_mmu_memory_cache { + int nobjs; + gfp_t gfp_zero; + struct kmem_cache *kmem_cache; + void *objects[40]; +}; + +struct kvm_vm_stat_generic { + u64 remote_tlb_flush; + u64 remote_tlb_flush_requests; +}; + +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]; +}; + +struct kvm_vcpu; + +struct kvm_io_device; + +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 preempt_ops; + +struct preempt_notifier { + struct hlist_node link; + struct preempt_ops *ops; +}; + +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[122]; + struct kvm_vcpu *__hyp_running_vcpu; + long: 64; +}; + +struct kvm_vcpu_fault_info { + u32 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; +}; + +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 { + 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; + u64 pendbaser; + bool lpis_enabled; + u32 num_pri_bits; + u32 num_id_bits; +}; + +struct kvm_irq_level { + union { + __u32 irq; + __s32 status; + }; + __u32 level; +}; + +struct arch_timer_context { + struct kvm_vcpu *vcpu; + struct kvm_irq_level irq; + struct hrtimer hrtimer; + bool loaded; + u32 host_timer_irq; + u32 host_timer_irq_flags; +}; + +struct arch_timer_cpu { + struct arch_timer_context timers[2]; + struct hrtimer bg_timer; + bool enabled; +}; + +struct kvm_pmc { + u8 idx; + struct perf_event *perf_event; +}; + +struct kvm_pmu { + int irq_num; + struct kvm_pmc pmc[32]; + long unsigned int chained[1]; + bool created; + bool irq_level; + struct irq_work overflow_work; +}; + +struct vcpu_reset_state { + long unsigned int pc; + long unsigned int r0; + bool be; + bool reset; +}; + +struct kvm_s2_mmu; + +struct kvm_vcpu_arch { + struct kvm_cpu_context ctxt; + void *sve_state; + unsigned int sve_max_vl; + 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; + u64 workaround_flags; + u64 flags; + struct kvm_guest_debug_arch *debug_ptr; + struct kvm_guest_debug_arch vcpu_debug_state; + struct kvm_guest_debug_arch external_debug_state; + struct thread_info *host_thread_info; + 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; + } guest_debug_preserved; + bool power_off; + bool pause; + struct kvm_mmu_memory_cache mmu_page_cache; + int target; + long unsigned int features[1]; + bool has_run_once; + u64 vsesr_el2; + struct vcpu_reset_state reset_state; + bool sysregs_loaded_on_cpu; + struct { + u64 last_steal; + gpa_t base; + } steal; +}; + +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_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; + +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; + long unsigned int guest_debug; + int pre_pcpu; + struct list_head blocked_vcpu_list; + struct mutex mutex; + struct kvm_run *run; + struct rcuwait wait; + struct pid *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; + struct kvm_vcpu_arch arch; + struct kvm_vcpu_stat stat; + char stats_id[48]; + struct kvm_dirty_ring dirty_ring; + int last_used_slot; + long: 64; +}; + +struct preempt_ops { + void (*sched_in)(struct preempt_notifier *, int); + void (*sched_out)(struct preempt_notifier *, struct task_struct *); +}; + enum kobject_action { KOBJ_ADD = 0, KOBJ_REMOVE = 1, @@ -20800,6 +18910,52 @@ struct trace_print_flags { const char *name; }; +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; + +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 *, long unsigned int, long unsigned int); + int (*clear_young)(struct mmu_notifier *, struct mm_struct *, long unsigned int, long unsigned int); + int (*test_young)(struct mmu_notifier *, struct mm_struct *, long unsigned int); + void (*change_pte)(struct mmu_notifier *, struct mm_struct *, long unsigned int, 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 (*invalidate_range)(struct mmu_notifier *, struct mm_struct *, long unsigned int, long unsigned int); + struct mmu_notifier * (*alloc_notifier)(struct mm_struct *); + void (*free_notifier)(struct mmu_notifier *); +}; + +struct mmu_notifier { + struct hlist_node hlist; + const struct mmu_notifier_ops *ops; + struct mm_struct *mm; + struct callback_head rcu; + unsigned int users; +}; + +struct mmu_notifier_range { + struct vm_area_struct *vma; + struct mm_struct *mm; + long unsigned int start; + long unsigned int end; + unsigned int flags; + enum mmu_notifier_event event; + void *owner; +}; + struct kvm_regs { struct user_pt_regs regs; __u64 sp_el1; @@ -20813,6 +18969,15 @@ struct kvm_sregs {}; struct kvm_fpu {}; +struct kvm_debug_exit_arch { + __u32 hsr; + __u64 far; +}; + +struct kvm_sync_regs { + __u64 device_irq_level; +}; + struct kvm_userspace_memory_region { __u32 slot; __u32 flags; @@ -20821,6 +18986,181 @@ struct kvm_userspace_memory_region { __u64 userspace_addr; }; +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_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; + __u32 longmode; + __u32 pad; + } 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; + __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; + __u64 flags; + } 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; + char padding[256]; + }; + __u64 kvm_valid_regs; + __u64 kvm_dirty_regs; + union { + struct kvm_sync_regs regs; + char padding[2048]; + } s; +}; + struct kvm_coalesced_mmio_zone { __u64 addr; __u32 size; @@ -20830,6 +19170,22 @@ struct kvm_coalesced_mmio_zone { }; }; +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_translation { __u64 linear_address; __u64 physical_address; @@ -20960,6 +19316,13 @@ struct kvm_create_device { __u32 flags; }; +struct kvm_device_attr { + __u32 flags; + __u32 group; + __u64 attr; + __u64 addr; +}; + enum kvm_device_type { KVM_DEV_TYPE_FSL_MPIC_20 = 1, KVM_DEV_TYPE_FSL_MPIC_42 = 2, @@ -20974,6 +19337,188 @@ enum kvm_device_type { KVM_DEV_TYPE_MAX = 11, }; +struct kvm_dirty_gfn { + __u32 flags; + __u32 slot; + __u64 offset; +}; + +struct kvm_stats_header { + __u32 flags; + __u32 name_size; + __u32 num_desc; + __u32 id_offset; + __u32 desc_offset; + __u32 data_offset; +}; + +struct kvm_stats_desc { + __u32 flags; + __s16 exponent; + __u16 size; + __u32 offset; + __u32 bucket_size; + char name[0]; +}; + +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; + long unsigned int *db_bitmap; + int nr_db_lpis; + u32 vlpi_count[16]; +}; + +struct irq_ops { + long unsigned int 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 vgic_register_region { + unsigned int reg_offset; + unsigned int len; + unsigned int bits_per_irq; + unsigned int access_flags; + union { + long unsigned int (*read)(struct kvm_vcpu *, gpa_t, unsigned int); + long unsigned int (*its_read)(struct kvm *, struct vgic_its *, gpa_t, unsigned int); + }; + union { + void (*write)(struct kvm_vcpu *, gpa_t, unsigned int, long unsigned int); + void (*its_write)(struct kvm *, struct vgic_its *, gpa_t, unsigned int, long unsigned int); + }; + long unsigned int (*uaccess_read)(struct kvm_vcpu *, gpa_t, unsigned int); + union { + int (*uaccess_write)(struct kvm_vcpu *, gpa_t, unsigned int, long unsigned int); + int (*uaccess_its_write)(struct kvm *, struct vgic_its *, gpa_t, unsigned int, long unsigned int); + }; +}; + +struct kvm_device_ops; + +struct kvm_device { + const struct kvm_device_ops *ops; + struct kvm *kvm; + void *private; + struct list_head vm_node; +}; + +struct vgic_redist_region { + u32 index; + gpa_t base; + u32 count; + u32 free_index; + struct list_head list; +}; + +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; + 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_vmid { + u64 vmid_gen; + u32 vmid; +}; + +struct kvm_pgtable; + +struct kvm_arch; + +struct kvm_s2_mmu { + struct kvm_vmid vmid; + phys_addr_t pgd_phys; + struct kvm_pgtable *pgt; + int *last_vcpu_ran; + struct kvm_arch *arch; +}; + +struct kvm_arch { + struct kvm_s2_mmu mmu; + u64 vtcr; + int max_vcpus; + struct vgic_dist vgic; + u32 psci_version; + bool return_nisv_io_abort_to_user; + long unsigned int *pmu_filter; + unsigned int pmuver; + u8 pfr0_csv2; + u8 pfr0_csv3; + bool mte_enabled; +}; + +struct kvm_vm_stat { + struct kvm_vm_stat_generic generic; +}; + +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_gfn_range { + struct kvm_memory_slot *slot; + gfn_t start; + gfn_t end; + pte_t pte; + bool may_block; +}; + enum { OUTSIDE_GUEST_MODE = 0, IN_GUEST_MODE = 1, @@ -20988,6 +19533,89 @@ struct kvm_host_map { kvm_pfn_t gfn; }; +struct kvm_memslots; + +struct kvm_irq_routing_table; + +struct kvm_stat_data; + +struct kvm { + spinlock_t mmu_lock; + struct mutex slots_lock; + struct mutex slots_arch_lock; + struct mm_struct *mm; + struct kvm_memslots *memslots[1]; + struct kvm_vcpu *vcpus[512]; + spinlock_t mn_invalidate_lock; + long unsigned int mn_active_invalidate_count; + struct rcuwait mn_memslots_update_rcuwait; + atomic_t online_vcpus; + int created_vcpus; + int last_boosted_vcpu; + struct list_head vm_list; + struct mutex lock; + struct kvm_io_bus *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 *irq_routing; + struct hlist_head irq_ack_notifier_list; + struct mmu_notifier mmu_notifier; + long unsigned int mmu_notifier_seq; + long int mmu_notifier_count; + long unsigned int mmu_notifier_range_start; + long unsigned int mmu_notifier_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; + unsigned int max_halt_poll_ns; + u32 dirty_ring_size; + bool vm_bugged; + char stats_id[48]; +}; + +struct kvm_irq_routing_table { + int chip[988]; + u32 nr_rt_entries; + struct hlist_head map[0]; +}; + +struct kvm_memslots { + u64 generation; + short int id_to_index[32767]; + atomic_t last_used_slot; + int used_slots; + struct kvm_memory_slot memslots[0]; +}; + +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; +}; + enum kvm_mr_change { KVM_MR_CREATE = 0, KVM_MR_DELETE = 1, @@ -20995,6 +19623,24 @@ enum kvm_mr_change { KVM_MR_FLAGS_ONLY = 3, }; +struct _kvm_stats_desc { + struct kvm_stats_desc desc; + char name[48]; +}; + +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 int (*ioctl)(struct kvm_device *, unsigned int, long unsigned int); + int (*mmap)(struct kvm_device *, struct vm_area_struct *); +}; + typedef int (*kvm_vm_thread_fn_t)(struct kvm *, uintptr_t); struct miscdevice { @@ -21061,15 +19707,6 @@ struct trace_event_raw_kvm_fpu { char __data[0]; }; -struct trace_event_raw_kvm_age_page { - struct trace_entry ent; - u64 hva; - u64 gfn; - u8 level; - u8 referenced; - char __data[0]; -}; - struct trace_event_raw_kvm_halt_poll_ns { struct trace_entry ent; bool grow; @@ -21103,6 +19740,32 @@ struct trace_event_raw_kvm_dirty_ring_exit { char __data[0]; }; +struct trace_event_raw_kvm_unmap_hva_range { + struct trace_entry ent; + long unsigned int start; + long unsigned int end; + char __data[0]; +}; + +struct trace_event_raw_kvm_set_spte_hva { + struct trace_entry ent; + long unsigned int hva; + char __data[0]; +}; + +struct trace_event_raw_kvm_age_hva { + struct trace_entry ent; + long unsigned int start; + long unsigned int end; + char __data[0]; +}; + +struct trace_event_raw_kvm_test_age_hva { + struct trace_entry ent; + long unsigned int hva; + char __data[0]; +}; + struct trace_event_data_offsets_kvm_userspace_exit {}; struct trace_event_data_offsets_kvm_vcpu_wakeup {}; @@ -21115,8 +19778,6 @@ struct trace_event_data_offsets_kvm_mmio {}; struct trace_event_data_offsets_kvm_fpu {}; -struct trace_event_data_offsets_kvm_age_page {}; - struct trace_event_data_offsets_kvm_halt_poll_ns {}; struct trace_event_data_offsets_kvm_dirty_ring_push {}; @@ -21125,6 +19786,14 @@ 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 {}; + typedef void (*btf_trace_kvm_userspace_exit)(void *, __u32, int); typedef void (*btf_trace_kvm_vcpu_wakeup)(void *, __u64, bool, bool); @@ -21137,8 +19806,6 @@ typedef void (*btf_trace_kvm_mmio)(void *, int, int, u64, void *); typedef void (*btf_trace_kvm_fpu)(void *, int); -typedef void (*btf_trace_kvm_age_page)(void *, ulong, int, struct kvm_memory_slot *, int); - 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); @@ -21147,6 +19814,31 @@ 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 *); +typedef void (*btf_trace_kvm_unmap_hva_range)(void *, long unsigned int, long unsigned int); + +typedef void (*btf_trace_kvm_set_spte_hva)(void *, long unsigned int); + +typedef void (*btf_trace_kvm_age_hva)(void *, long unsigned int, long unsigned int); + +typedef void (*btf_trace_kvm_test_age_hva)(void *, long unsigned int); + +typedef bool (*hva_handler_t)(struct kvm *, struct kvm_gfn_range *); + +typedef void (*on_lock_fn_t)(struct kvm *, long unsigned int, long unsigned int); + +typedef void (*on_unlock_fn_t)(struct kvm *); + +struct kvm_hva_range { + long unsigned int start; + long unsigned int end; + pte_t pte; + 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_cpu_compat_check { void *opaque; int *ret; @@ -21170,18 +19862,17 @@ struct kvm_coalesced_mmio_dev { enum { WORK_STRUCT_PENDING_BIT = 0, - WORK_STRUCT_DELAYED_BIT = 1, + 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_DELAYED = 2, + WORK_STRUCT_INACTIVE = 2, WORK_STRUCT_PWQ = 4, WORK_STRUCT_LINKED = 8, WORK_STRUCT_STATIC = 0, - WORK_NR_COLORS = 15, - WORK_NO_COLOR = 15, + WORK_NR_COLORS = 16, WORK_CPU_UNBOUND = 256, WORK_STRUCT_FLAG_BITS = 8, WORK_OFFQ_FLAG_BASE = 4, @@ -21198,7 +19889,7 @@ enum { WORK_BUSY_PENDING = 1, WORK_BUSY_RUNNING = 2, WORKER_DESC_LEN = 24, -}; +} __attribute__((mode(word))); struct irq_bypass_consumer; @@ -21327,6 +20018,13 @@ struct kvm_vfio { bool noncoherent; }; +struct psci_0_1_function_ids { + u32 cpu_suspend; + u32 cpu_on; + u32 cpu_off; + u32 migrate; +}; + struct kvm_vcpu_init { __u32 target; __u32 features[7]; @@ -21343,6 +20041,14 @@ struct kvm_vcpu_events { __u32 reserved[12]; }; +struct kvm_arm_copy_mte_tags { + __u64 guest_ipa; + __u64 length; + void *addr; + __u64 flags; + __u64 reserved[2]; +}; + struct kvm_reg_list { __u64 n; __u64 reg[0]; @@ -21364,6 +20070,38 @@ struct kvm_nvhe_init_params { long unsigned int tpidr_el2; long unsigned int stack_hyp_va; phys_addr_t pgd_pa; + long unsigned int hcr_el2; + long unsigned int vttbr; + long unsigned int vtcr; +}; + +enum vgic_type { + VGIC_V2 = 0, + VGIC_V3 = 1, +}; + +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; +}; + +enum kvm_arch_timers { + TIMER_PTIMER = 0, + TIMER_VTIMER = 1, + NR_KVM_TIMERS = 2, }; struct timer_map { @@ -21372,6 +20110,58 @@ struct timer_map { struct arch_timer_context *emul_ptimer; }; +typedef u64 kvm_pte_t; + +enum kvm_pgtable_stage2_flags { + KVM_PGTABLE_S2_NOFWB = 1, + KVM_PGTABLE_S2_IDMAP = 2, +}; + +enum kvm_pgtable_prot { + KVM_PGTABLE_PROT_X = 1, + KVM_PGTABLE_PROT_W = 2, + KVM_PGTABLE_PROT_R = 4, + KVM_PGTABLE_PROT_DEVICE = 8, + KVM_PGTABLE_PROT_SW0 = 0, + KVM_PGTABLE_PROT_SW1 = 0, + KVM_PGTABLE_PROT_SW2 = 0, + KVM_PGTABLE_PROT_SW3 = 0, +} __attribute__((mode(word))); + +typedef bool (*kvm_pgtable_force_pte_cb_t)(u64, u64, enum kvm_pgtable_prot); + +struct kvm_pgtable_mm_ops; + +struct kvm_pgtable { + u32 ia_bits; + u32 start_level; + kvm_pte_t *pgd; + struct kvm_pgtable_mm_ops *mm_ops; + struct kvm_s2_mmu *mmu; + enum kvm_pgtable_stage2_flags flags; + kvm_pgtable_force_pte_cb_t force_pte_cb; +}; + +struct kvm_pmu_events { + u32 events_host; + u32 events_guest; +}; + +struct kvm_host_data { + struct kvm_cpu_context host_ctxt; + struct kvm_pmu_events pmu_events; + long: 64; +}; + +struct kvm_host_psci_config { + u32 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 trace_event_raw_kvm_entry { struct trace_entry ent; long unsigned int vcpu_pc; @@ -21418,32 +20208,6 @@ struct trace_event_raw_kvm_mmio_emulate { char __data[0]; }; -struct trace_event_raw_kvm_unmap_hva_range { - struct trace_entry ent; - long unsigned int start; - long unsigned int end; - char __data[0]; -}; - -struct trace_event_raw_kvm_set_spte_hva { - struct trace_entry ent; - long unsigned int hva; - char __data[0]; -}; - -struct trace_event_raw_kvm_age_hva { - struct trace_entry ent; - long unsigned int start; - long unsigned int end; - char __data[0]; -}; - -struct trace_event_raw_kvm_test_age_hva { - struct trace_entry ent; - long unsigned int hva; - char __data[0]; -}; - struct trace_event_raw_kvm_set_way_flush { struct trace_entry ent; long unsigned int vcpu_pc; @@ -21517,14 +20281,6 @@ struct trace_event_data_offsets_kvm_irq_line {}; struct trace_event_data_offsets_kvm_mmio_emulate {}; -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 trace_event_data_offsets_kvm_set_way_flush {}; struct trace_event_data_offsets_kvm_toggle_cache {}; @@ -21553,14 +20309,6 @@ typedef void (*btf_trace_kvm_irq_line)(void *, unsigned int, int, int, int); typedef void (*btf_trace_kvm_mmio_emulate)(void *, long unsigned int, long unsigned int, long unsigned int); -typedef void (*btf_trace_kvm_unmap_hva_range)(void *, long unsigned int, long unsigned int); - -typedef void (*btf_trace_kvm_set_spte_hva)(void *, long unsigned int); - -typedef void (*btf_trace_kvm_age_hva)(void *, long unsigned int, long unsigned int); - -typedef void (*btf_trace_kvm_test_age_hva)(void *, long unsigned int); - typedef void (*btf_trace_kvm_set_way_flush)(void *, long unsigned int, bool); typedef void (*btf_trace_kvm_toggle_cache)(void *, long unsigned int, bool, bool); @@ -21577,19 +20325,53 @@ typedef void (*btf_trace_kvm_timer_hrtimer_expire)(void *, struct arch_timer_con typedef void (*btf_trace_kvm_timer_emulate)(void *, struct arch_timer_context *, bool); -enum kvm_pgtable_prot { - KVM_PGTABLE_PROT_X = 1, - KVM_PGTABLE_PROT_W = 2, - KVM_PGTABLE_PROT_R = 4, - KVM_PGTABLE_PROT_DEVICE = 8, +struct kvm_pgtable_mm_ops { + void * (*zalloc_page)(void *); + void * (*zalloc_pages_exact)(size_t); + void (*free_pages_exact)(void *, size_t); + 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 long unsigned int hva_t; +struct hugepage_subpool { + spinlock_t lock; + long int count; + long int max_hpages; + long int used_hpages; + struct hstate *hstate; + long int min_hpages; + long int rsv_hpages; +}; -enum kvm_arch_timers { - TIMER_PTIMER = 0, - TIMER_VTIMER = 1, - NR_KVM_TIMERS = 2, +struct hugetlbfs_sb_info { + long int max_inodes; + long int free_inodes; + spinlock_t stat_lock; + struct hstate *hstate; + struct hugepage_subpool *spool; + kuid_t uid; + kgid_t gid; + umode_t mode; +}; + +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 raw; + enum clocksource_ids cs_id; + unsigned int clock_was_set_seq; + u8 cs_was_changed_seq; }; struct sys_reg_params { @@ -21654,7 +20436,7 @@ struct trace_event_raw_kvm_arm_clear_debug { struct trace_event_raw_kvm_arm_set_dreg32 { struct trace_entry ent; const char *name; - __u32 value; + __u64 value; char __data[0]; }; @@ -21730,7 +20512,7 @@ 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 *, __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 *); @@ -21750,18 +20532,6 @@ struct sve_state_reg_region { unsigned int upad; }; -struct __va_list { - void *__stack; - void *__gr_top; - void *__vr_top; - int __gr_offs; - int __vr_offs; -}; - -typedef struct __va_list __gnuc_va_list; - -typedef __gnuc_va_list va_list; - struct va_format { const char *fmt; va_list *va; @@ -21825,6 +20595,14 @@ enum hrtimer_mode { HRTIMER_MODE_REL_PINNED_HARD = 11, }; +enum { + IRQCHIP_FWNODE_REAL = 0, + IRQCHIP_FWNODE_NAMED = 1, + IRQCHIP_FWNODE_NAMED_ID = 2, +}; + +typedef int (*list_cmp_func_t)(void *, const struct list_head *, const struct list_head *); + struct trace_event_raw_vgic_update_irq_pending { struct trace_entry ent; long unsigned int vcpu_id; @@ -21846,9 +20624,11 @@ 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 { @@ -21935,6 +20715,23 @@ enum exception_type { except_type_serror = 384, }; +union hyp_spinlock { + u32 __val; + struct { + u16 owner; + u16 next; + }; +}; + +typedef union hyp_spinlock hyp_spinlock_t; + +struct host_kvm { + struct kvm_arch arch; + struct kvm_pgtable pgt; + struct kvm_pgtable_mm_ops mm_ops; + hyp_spinlock_t lock; +}; + struct tlb_inv_context___2 { u64 tcr; }; @@ -21947,6 +20744,19 @@ struct psci_boot_args { long unsigned int r0; }; +struct hyp_page { + short unsigned int refcount; + short unsigned int order; +}; + +struct hyp_pool { + hyp_spinlock_t lock; + struct list_head free_area[13]; + phys_addr_t range_start; + phys_addr_t range_end; + short unsigned int max_order; +}; + enum kvm_pgtable_walk_flags { KVM_PGTABLE_WALK_LEAF = 1, KVM_PGTABLE_WALK_TABLE_PRE = 2, @@ -21961,6 +20771,17 @@ struct kvm_pgtable_walker { const enum kvm_pgtable_walk_flags flags; }; +enum pkvm_page_state { + PKVM_PAGE_OWNED = 0, + PKVM_PAGE_SHARED_OWNED = 0, + PKVM_PAGE_SHARED_BORROWED = 0, +} __attribute__((mode(word))); + +struct kvm_mem_range { + u64 start; + u64 end; +}; + struct kvm_pgtable_walk_data { struct kvm_pgtable *pgt; struct kvm_pgtable_walker *walker; @@ -21968,17 +20789,27 @@ struct kvm_pgtable_walk_data { u64 end; }; +struct leaf_walk_data { + kvm_pte_t pte; + u32 level; +}; + struct hyp_map_data { u64 phys; kvm_pte_t attr; + struct kvm_pgtable_mm_ops *mm_ops; }; struct stage2_map_data { u64 phys; kvm_pte_t attr; + u8 owner_id; kvm_pte_t *anchor; + kvm_pte_t *childp; struct kvm_s2_mmu *mmu; - struct kvm_mmu_memory_cache *memcache; + void *memcache; + struct kvm_pgtable_mm_ops *mm_ops; + bool force_pte; }; struct stage2_attr_data { @@ -21986,12 +20817,25 @@ struct stage2_attr_data { kvm_pte_t attr_clr; kvm_pte_t pte; u32 level; + struct kvm_pgtable_mm_ops *mm_ops; }; +typedef s8 int8_t; + typedef s16 int16_t; typedef u16 uint16_t; +typedef u64 uint64_t; + +typedef s64 int64_t; + +typedef uint64_t xen_pfn_t; + +typedef uint64_t xen_ulong_t; + +typedef int64_t xen_long_t; + typedef struct { union { unsigned char *p; @@ -22027,8 +20871,80 @@ typedef struct { }; } __guest_handle_uint32_t; +struct arch_vcpu_info {}; + +struct arch_shared_info {}; + +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_wall_clock { + u32 version; + u32 sec; + u32 nsec; + u32 sec_hi; +}; + typedef uint16_t domid_t; +struct multicall_entry { + xen_ulong_t op; + xen_long_t result; + xen_ulong_t args[6]; +}; + +struct vcpu_info { + uint8_t evtchn_upcall_pending; + uint8_t evtchn_upcall_mask; + xen_ulong_t evtchn_pending_sel; + struct arch_vcpu_info arch; + struct pvclock_vcpu_time_info time; +}; + +struct shared_info { + struct vcpu_info vcpu_info[1]; + xen_ulong_t evtchn_pending[64]; + xen_ulong_t evtchn_mask[64]; + struct pvclock_wall_clock wc; + uint32_t wc_sec_hi; + struct arch_shared_info arch; +}; + +struct start_info { + char magic[32]; + long unsigned int nr_pages; + long unsigned int shared_info; + uint32_t flags; + xen_pfn_t store_mfn; + uint32_t store_evtchn; + union { + struct { + xen_pfn_t mfn; + uint32_t evtchn; + } domU; + struct { + uint32_t info_off; + uint32_t info_size; + } dom0; + } console; + long unsigned int pt_base; + long unsigned int nr_pt_frames; + long unsigned int mfn_list; + long unsigned int mod_start; + long unsigned int mod_len; + int8_t cmd_line[1024]; + long unsigned int first_p2m_pfn; + long unsigned int nr_p2m_frames; +}; + enum vdso_clock_mode { VDSO_CLOCKMODE_NONE = 0, VDSO_CLOCKMODE_ARCHTIMER = 1, @@ -22044,10 +20960,12 @@ struct clocksource { 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; long unsigned int flags; int (*enable)(struct clocksource *); @@ -22447,17 +21365,6 @@ struct xsd_errors { const char *errstring; }; -typedef uint32_t XENSTORE_RING_IDX; - -struct xenstore_domain_interface { - char req[1024]; - char rsp[1024]; - XENSTORE_RING_IDX req_cons; - XENSTORE_RING_IDX req_prod; - XENSTORE_RING_IDX rsp_cons; - XENSTORE_RING_IDX rsp_prod; -}; - struct tk_read_base { struct clocksource *clock; u64 mask; @@ -22495,6 +21402,8 @@ struct timekeeper { u32 skip_second_overflow; }; +struct xen_dm_op_buf; + typedef uint16_t grant_status_t; typedef uint32_t grant_ref_t; @@ -22535,6 +21444,56 @@ struct gnttab_cache_flush { uint32_t op; }; +struct arm_smccc_1_2_regs { + long unsigned int a0; + long unsigned int a1; + long unsigned int a2; + long unsigned int a3; + long unsigned int a4; + long unsigned int a5; + long unsigned int a6; + long unsigned int a7; + long unsigned int a8; + long unsigned int a9; + long unsigned int a10; + long unsigned int a11; + long unsigned int a12; + long unsigned int a13; + long unsigned int a14; + long unsigned int a15; + long unsigned int a16; + long unsigned int a17; +}; + +struct hv_get_vp_registers_output { + union { + struct { + u32 a; + u32 b; + u32 c; + u32 d; + } as32; + struct { + u64 low; + u64 high; + } as64; + }; +}; + +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; + u32 isolation_config_a; + u32 isolation_config_b; +}; + +typedef void (*rcu_callback_t)(struct callback_head *); + enum tk_offsets { TK_OFFS_REAL = 0, TK_OFFS_BOOT = 1, @@ -22587,30 +21546,6 @@ struct files_struct { long: 64; }; -struct io_identity { - struct files_struct *files; - struct mm_struct *mm; - struct cgroup_subsys_state *blkcg_css; - const struct cred *creds; - struct nsproxy *nsproxy; - struct fs_struct *fs; - long unsigned int fsize; - kuid_t loginuid; - unsigned int sessionid; - refcount_t count; -}; - -struct io_uring_task { - struct xarray xa; - struct wait_queue_head wait; - struct file *last; - struct percpu_counter inflight; - struct io_identity __identity; - struct io_identity *identity; - atomic_t in_idle; - bool sqpoll; -}; - struct robust_list { struct robust_list *next; }; @@ -22633,6 +21568,7 @@ struct kernel_clone_args { pid_t *set_tid; size_t set_tid_size; int cgroup; + int io_thread; struct cgroup *cgrp; struct css_set *cset; }; @@ -22704,438 +21640,16 @@ typedef void (*btf_trace_task_newtask)(void *, struct task_struct *, long unsign typedef void (*btf_trace_task_rename)(void *, struct task_struct *, const char *); -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_MAX = 28, -}; - -enum { - IPSTATS_MIB_NUM = 0, - IPSTATS_MIB_INPKTS = 1, - IPSTATS_MIB_INOCTETS = 2, - IPSTATS_MIB_INDELIVERS = 3, - IPSTATS_MIB_OUTFORWDATAGRAMS = 4, - IPSTATS_MIB_OUTPKTS = 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_MAX = 37, -}; - -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_MAX = 28, -}; - -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_MAX = 6, -}; - -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 { - 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, -}; - -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_MAX = 124, -}; - -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, -}; - -enum { - LINUX_MIB_TLSNUM = 0, - LINUX_MIB_TLSCURRTXSW = 1, - LINUX_MIB_TLSCURRRXSW = 2, - LINUX_MIB_TLSCURRTXDEVICE = 3, - LINUX_MIB_TLSCURRRXDEVICE = 4, - LINUX_MIB_TLSTXSW = 5, - LINUX_MIB_TLSRXSW = 6, - LINUX_MIB_TLSTXDEVICE = 7, - LINUX_MIB_TLSRXDEVICE = 8, - LINUX_MIB_TLSDECRYPTERROR = 9, - LINUX_MIB_TLSRXDEVICERESYNC = 10, - __LINUX_MIB_TLSMAX = 11, -}; - -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, -}; - -enum { - NFPROTO_UNSPEC = 0, - NFPROTO_INET = 1, - NFPROTO_IPV4 = 2, - NFPROTO_ARP = 3, - NFPROTO_NETDEV = 5, - NFPROTO_BRIDGE = 7, - NFPROTO_IPV6 = 10, - NFPROTO_DECNET = 12, - NFPROTO_NUMPROTO = 13, -}; - -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 ip_conntrack_dir { - IP_CT_DIR_ORIGINAL = 0, - IP_CT_DIR_REPLY = 1, - IP_CT_DIR_MAX = 2, -}; - -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, -}; - -enum udp_conntrack { - UDP_CT_UNREPLIED = 0, - UDP_CT_REPLIED = 1, - UDP_CT_MAX = 2, -}; - -enum gre_conntrack { - GRE_CT_UNREPLIED = 0, - GRE_CT_REPLIED = 1, - GRE_CT_MAX = 2, -}; - -enum { - XFRM_POLICY_IN = 0, - XFRM_POLICY_OUT = 1, - XFRM_POLICY_FWD = 2, - XFRM_POLICY_MASK = 3, - XFRM_POLICY_MAX = 3, -}; - -enum netns_bpf_attach_type { - NETNS_BPF_INVALID = 4294967295, - NETNS_BPF_FLOW_DISSECTOR = 0, - NETNS_BPF_SK_LOOKUP = 1, - MAX_NETNS_BPF_ATTACH_TYPE = 2, +struct taint_flag { + char c_true; + char c_false; + bool module; }; -enum skb_ext_id { - SKB_EXT_BRIDGE_NF = 0, - SKB_EXT_SEC_PATH = 1, - TC_SKB_EXT = 2, - SKB_EXT_MPTCP = 3, - SKB_EXT_NUM = 4, +enum ftrace_dump_mode { + DUMP_NONE = 0, + DUMP_ALL = 1, + DUMP_ORIG = 2, }; enum kmsg_dump_reason { @@ -23147,17 +21661,6 @@ enum kmsg_dump_reason { KMSG_DUMP_MAX = 5, }; -struct vc { - struct vc_data *d; - struct work_struct SAK_work; -}; - -struct vt_spawn_console { - spinlock_t lock; - struct pid *pid; - int sig; -}; - enum con_flush_mode { CONSOLE_FLUSH_PENDING = 0, CONSOLE_REPLAY_ALL = 1, @@ -23349,6 +21852,17 @@ struct wait_opts { int notask_error; }; +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 *); }; @@ -23370,6 +21884,22 @@ enum { TASKLET_STATE_RUN = 1, }; +struct kernel_stat { + long unsigned int irqs_sum; + unsigned int softirqs[10]; +}; + +struct wait_bit_key { + void *flags; + int bit_nr; + long unsigned int timeout; +}; + +struct wait_bit_queue_entry { + struct wait_bit_key key; + struct wait_queue_entry wq_entry; +}; + struct trace_event_raw_irq_handler_entry { struct trace_entry ent; int irq; @@ -23425,14 +21955,23 @@ enum { IORES_DESC_SOFT_RESERVED = 8, }; -typedef void (*dr_release_t)(struct device *, void *); - enum { REGION_INTERSECTS = 0, REGION_DISJOINT = 1, REGION_MIXED = 2, }; +struct pseudo_fs_context { + const struct super_operations *ops; + const struct xattr_handler **xattr; + const struct dentry_operations *dops; + long unsigned int magic; +}; + +typedef void (*dr_release_t)(struct device *, void *); + +typedef int (*dr_match_t)(struct device *, void *, void *); + struct resource_constraint { resource_size_t min; resource_size_t max; @@ -23451,6 +21990,38 @@ struct region_devres { resource_size_t n; }; +typedef __kernel_clock_t clock_t; + +struct dentry_stat_t { + long int nr_dentry; + long int nr_unused; + long int age_limit; + long int want_pages; + long int nr_negative; + long int dummy; +}; + +struct files_stat_struct { + long unsigned int nr_files; + long unsigned int nr_free_files; + long unsigned int max_files; +}; + +struct inodes_stat_t { + long int nr_inodes; + long int nr_unused; + long int dummy[5]; +}; + +struct core_vma_metadata { + long unsigned int start; + long unsigned int end; + long unsigned int flags; + long unsigned int dump_size; + long unsigned int pgoff; + struct file *file; +}; + enum sysctl_writes_mode { SYSCTL_WRITES_LEGACY = 4294967295, SYSCTL_WRITES_WARN = 0, @@ -23482,15 +22053,15 @@ struct __user_cap_data_struct { typedef struct __user_cap_data_struct *cap_user_data_t; -typedef struct siginfo siginfo_t; - struct sigqueue { struct list_head list; int flags; kernel_siginfo_t info; - struct user_struct *user; + struct ucounts *ucounts; }; +typedef int wait_bit_action_f(struct wait_bit_key *, int); + struct ptrace_peeksiginfo_args { __u64 off; __u32 flags; @@ -23520,6 +22091,14 @@ struct ptrace_syscall_info { }; }; +struct ptrace_rseq_configuration { + __u64 rseq_abi_pointer; + __u32 rseq_abi_size; + __u32 signature; + __u32 flags; + __u32 pad; +}; + struct compat_iovec { compat_uptr_t iov_base; compat_size_t iov_len; @@ -23583,9 +22162,11 @@ typedef void (*btf_trace_signal_generate)(void *, int, struct kernel_siginfo *, typedef void (*btf_trace_signal_deliver)(void *, int, struct kernel_siginfo *, struct k_sigaction *); -typedef int (*get_char_func)(); - -typedef __kernel_clock_t clock_t; +enum sig_handler { + HANDLER_CURRENT = 0, + HANDLER_SIG_DFL = 1, + HANDLER_EXIT = 2, +}; struct sysinfo { __kernel_long_t uptime; @@ -23604,19 +22185,6 @@ struct sysinfo { char _f[0]; }; -struct rlimit64 { - __u64 rlim_cur; - __u64 rlim_max; -}; - -enum uts_proc { - UTS_PROC_OSTYPE = 0, - UTS_PROC_OSRELEASE = 1, - UTS_PROC_VERSION = 2, - UTS_PROC_HOSTNAME = 3, - UTS_PROC_DOMAINNAME = 4, -}; - struct prctl_mm_map { __u64 start_code; __u64 end_code; @@ -23634,6 +22202,19 @@ struct prctl_mm_map { __u32 exe_fd; }; +struct rlimit64 { + __u64 rlim_cur; + __u64 rlim_max; +}; + +enum uts_proc { + UTS_PROC_OSTYPE = 0, + UTS_PROC_OSRELEASE = 1, + UTS_PROC_VERSION = 2, + UTS_PROC_HOSTNAME = 3, + UTS_PROC_DOMAINNAME = 4, +}; + struct compat_tms { compat_clock_t tms_utime; compat_clock_t tms_stime; @@ -23753,6 +22334,10 @@ enum xa_lock_type { XA_LOCK_BH = 2, }; +struct ida { + struct xarray xa; +}; + struct __una_u32 { u32 x; }; @@ -23767,6 +22352,7 @@ struct worker { struct work_struct *current_work; work_func_t current_func; struct pool_workqueue *current_pwq; + unsigned int current_color; struct list_head scheduled; struct task_struct *task; struct worker_pool *pool; @@ -23786,10 +22372,10 @@ struct pool_workqueue { int work_color; int flush_color; int refcnt; - int nr_in_flight[15]; + int nr_in_flight[16]; int nr_active; int max_active; - struct list_head delayed_works; + struct list_head inactive_works; struct list_head pwqs_node; struct list_head mayday_node; struct work_struct unbound_release_work; @@ -23801,7 +22387,6 @@ struct pool_workqueue { long: 64; long: 64; long: 64; - long: 64; }; struct worker_pool { @@ -23825,7 +22410,6 @@ struct worker_pool { struct workqueue_attrs *attrs; struct hlist_node hash_node; int refcnt; - long: 32; long: 64; long: 64; long: 64; @@ -23876,7 +22460,7 @@ struct trace_event_raw_workqueue_queue_work { struct trace_entry ent; void *work; void *function; - void *workqueue; + u32 __data_loc_workqueue; unsigned int req_cpu; unsigned int cpu; char __data[0]; @@ -23902,7 +22486,9 @@ struct trace_event_raw_workqueue_execute_end { char __data[0]; }; -struct trace_event_data_offsets_workqueue_queue_work {}; +struct trace_event_data_offsets_workqueue_queue_work { + u32 workqueue; +}; struct trace_event_data_offsets_workqueue_activate_work {}; @@ -23996,15 +22582,16 @@ enum lockdown_reason { LOCKDOWN_DEBUGFS = 14, LOCKDOWN_XMON_WR = 15, LOCKDOWN_BPF_WRITE_USER = 16, - LOCKDOWN_INTEGRITY_MAX = 17, - LOCKDOWN_KCORE = 18, - LOCKDOWN_KPROBES = 19, - LOCKDOWN_BPF_READ = 20, - LOCKDOWN_PERF = 21, - LOCKDOWN_TRACEFS = 22, - LOCKDOWN_XMON_RW = 23, - LOCKDOWN_XFRM_SECRET = 24, - LOCKDOWN_CONFIDENTIALITY_MAX = 25, + LOCKDOWN_KGDB = 17, + LOCKDOWN_INTEGRITY_MAX = 18, + LOCKDOWN_KCORE = 19, + LOCKDOWN_KPROBES = 20, + LOCKDOWN_BPF_READ_KERNEL = 21, + LOCKDOWN_PERF = 22, + LOCKDOWN_TRACEFS = 23, + LOCKDOWN_XMON_RW = 24, + LOCKDOWN_XFRM_SECRET = 25, + LOCKDOWN_CONFIDENTIALITY_MAX = 26, }; struct kmalloced_param { @@ -24093,8 +22680,6 @@ struct kthread_flush_work { struct completion done; }; -struct pt_regs___2; - struct ipc_ids { int in_use; short unsigned int seq; @@ -24141,7 +22726,7 @@ struct srcu_notifier_head { }; struct lsmblob { - u32 secid[3]; + u32 secid[4]; }; enum what { @@ -24157,13 +22742,14 @@ enum what { PROC_EVENT_EXIT = 2147483648, }; -typedef u64 async_cookie_t; - -typedef void (*async_func_t)(void *, async_cookie_t); - -struct async_domain { - struct list_head pending; - unsigned int registered: 1; +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, }; struct async_entry { @@ -24212,6 +22798,10 @@ enum { CSD_FLAG_TYPE_MASK = 240, }; +typedef struct __call_single_data call_single_data_t; + +typedef int (*task_call_f)(struct task_struct *, void *); + struct dl_bw { raw_spinlock_t lock; u64 bw; @@ -24239,7 +22829,7 @@ struct cpupri { struct perf_domain; -struct root_domain___2 { +struct root_domain { atomic_t refcount; atomic_t rto_count; struct callback_head rcu; @@ -24271,15 +22861,14 @@ struct cfs_rq { unsigned int idle_h_nr_running; u64 exec_clock; u64 min_vruntime; + unsigned int forceidle_seq; + u64 min_vruntime_fi; struct rb_root_cached tasks_timeline; struct sched_entity *curr; struct sched_entity *next; struct sched_entity *last; struct sched_entity *skip; unsigned int nr_spread_over; - long: 32; - long: 64; - long: 64; long: 64; struct sched_avg avg; struct { @@ -24303,11 +22892,12 @@ struct cfs_rq { int on_list; struct list_head leaf_cfs_rq_list; struct task_group *tg; + int idle; int runtime_enabled; s64 runtime_remaining; u64 throttled_clock; - u64 throttled_clock_task; - u64 throttled_clock_task_time; + u64 throttled_clock_pelt; + u64 throttled_clock_pelt_time; int throttled; int throttle_count; struct list_head throttled_list; @@ -24323,6 +22913,7 @@ struct cfs_bandwidth { ktime_t period; u64 quota; u64 runtime; + u64 burst; s64 hierarchical_quota; u8 idle; u8 period_active; @@ -24340,7 +22931,7 @@ struct task_group { struct sched_entity **se; struct cfs_rq **cfs_rq; long unsigned int shares; - long: 64; + int idle; long: 64; long: 64; long: 64; @@ -24355,16 +22946,24 @@ struct task_group { unsigned int uclamp_pct[2]; struct uclamp_se uclamp_req[2]; struct uclamp_se uclamp[2]; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; -struct update_util_data { - void (*func)(struct update_util_data *, u64, unsigned int); +struct sched_domain_attr { + int relax_domain_level; }; struct sched_domain_shared { atomic_t ref; atomic_t nr_busy_cpus; int has_idle_cores; + int nr_idle_scan; }; struct sched_group; @@ -24425,6 +23024,7 @@ struct sched_group { unsigned int group_weight; struct sched_group_capacity *sgc; int asym_prefer_cpu; + int flags; long unsigned int cpumask[0]; }; @@ -24439,17 +23039,6 @@ struct sched_group_capacity { long unsigned int cpumask[0]; }; -struct wait_bit_key { - void *flags; - int bit_nr; - long unsigned int timeout; -}; - -struct wait_bit_queue_entry { - struct wait_bit_key key; - struct wait_queue_entry wq_entry; -}; - struct autogroup { struct kref kref; struct task_group *tg; @@ -24458,6 +23047,10 @@ struct autogroup { int nice; }; +struct kernel_cpustat { + u64 cpustat[10]; +}; + enum { MEMBARRIER_STATE_PRIVATE_EXPEDITED_READY = 1, MEMBARRIER_STATE_PRIVATE_EXPEDITED = 2, @@ -24476,6 +23069,7 @@ enum { CFTYPE_NO_PREFIX = 8, CFTYPE_WORLD_WRITABLE = 16, CFTYPE_DEBUG = 32, + CFTYPE_PRESSURE = 64, __CFTYPE_ONLY_ON_DFL = 65536, __CFTYPE_NOT_ON_DFL = 131072, }; @@ -24535,7 +23129,6 @@ struct trace_event_raw_sched_wakeup_template { char comm[16]; pid_t pid; int prio; - int success; int target_cpu; char __data[0]; }; @@ -24755,62 +23348,9 @@ typedef void (*btf_trace_sched_swap_numa)(void *, struct task_struct *, int, str typedef void (*btf_trace_sched_wake_idle_without_ipi)(void *, int); -struct wake_q_head { - struct wake_q_node *first; - struct wake_q_node **lastp; -}; - -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; -}; - -typedef int (*cpu_stop_fn_t)(void *); - -struct cpu_stop_done; - -struct cpu_stop_work { - struct list_head list; - cpu_stop_fn_t fn; - long unsigned int caller; - void *arg; - struct cpu_stop_done *done; -}; - -struct cpudl_item { - u64 dl; - int cpu; - int idx; -}; - -struct rt_prio_array { - long unsigned int bitmap[2]; - struct list_head queue[100]; -}; - -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 dl_bandwidth { - raw_spinlock_t dl_runtime_lock; - u64 dl_runtime; - u64 dl_period; -}; +typedef void (*btf_trace_pelt_cfs_tp)(void *, struct cfs_rq *); -typedef int (*tg_visitor)(struct task_group *, void *); +typedef void (*btf_trace_pelt_rt_tp)(void *, struct rq *); struct uclamp_bucket { long unsigned int value: 11; @@ -24822,6 +23362,11 @@ struct uclamp_rq { struct uclamp_bucket bucket[5]; }; +struct rt_prio_array { + long unsigned int bitmap[2]; + struct list_head queue[100]; +}; + struct rt_rq { struct rt_prio_array active; unsigned int rt_nr_running; @@ -24830,8 +23375,8 @@ struct rt_rq { int curr; int next; } highest_prio; - long unsigned int rt_nr_migratory; - long unsigned int rt_nr_total; + unsigned int rt_nr_migratory; + unsigned int rt_nr_total; int overloaded; struct plist_head pushable_tasks; int rt_queued; @@ -24843,12 +23388,12 @@ struct rt_rq { struct dl_rq { struct rb_root_cached root; - long unsigned int dl_nr_running; + unsigned int dl_nr_running; struct { u64 curr; u64 next; } earliest_dl; - long unsigned int dl_nr_migratory; + unsigned int dl_nr_migratory; int overloaded; struct rb_root_cached pushable_dl_tasks_root; u64 running_bw; @@ -24857,15 +23402,26 @@ struct dl_rq { u64 bw_ratio; }; +struct cpu_stop_done; + +struct cpu_stop_work { + struct list_head list; + cpu_stop_fn_t fn; + long unsigned int caller; + void *arg; + struct cpu_stop_done *done; +}; + +struct cpuidle_state; + struct rq { - raw_spinlock_t lock; + raw_spinlock_t __lock; unsigned int nr_running; unsigned int nr_numa_running; unsigned int nr_preferred_running; unsigned int numa_migrate_on; long unsigned int last_blocked_load_update_tick; unsigned int has_blocked_load; - long: 32; long: 64; long: 64; long: 64; @@ -24877,7 +23433,6 @@ struct rq { long: 64; struct uclamp_rq uclamp[2]; unsigned int uclamp_flags; - long: 32; long: 64; long: 64; long: 64; @@ -24886,7 +23441,7 @@ struct rq { struct dl_rq dl; struct list_head leaf_cfs_rq_list; struct list_head *tmp_alone_branch; - long unsigned int nr_uninterruptible; + unsigned int nr_uninterruptible; struct task_struct *curr; struct task_struct *idle; struct task_struct *stop; @@ -24897,17 +23452,20 @@ struct rq { long: 64; long: 64; long: 64; + long: 64; + long: 64; u64 clock_task; u64 clock_pelt; long unsigned int lost_idle_time; atomic_t nr_iowait; + u64 last_seen_need_resched_ns; + int ticks_without_resched; int membarrier_state; - struct root_domain___2 *rd; + struct root_domain *rd; struct sched_domain *sd; long unsigned int cpu_capacity; long unsigned int cpu_capacity_orig; struct callback_head *balance_callback; - unsigned char balance_push; unsigned char nohz_idle_balance; unsigned char idle_balance; long unsigned int misfit_task_load; @@ -24918,19 +23476,21 @@ struct rq { int online; struct list_head cfs_tasks; long: 64; - long: 64; - long: 64; struct sched_avg avg_rt; struct sched_avg avg_dl; struct sched_avg avg_thermal; u64 idle_stamp; u64 avg_idle; + long unsigned int wake_stamp; + u64 wake_avg_idle; u64 max_idle_balance_cost; struct rcuwait hotplug_wait; u64 prev_steal_time; long unsigned int calc_load_update; long int calc_load_active; long: 64; + long: 64; + long: 64; call_single_data_t hrtick_csd; struct hrtimer hrtick_timer; ktime_t hrtick_time; @@ -24945,11 +23505,139 @@ struct rq { unsigned int nr_pinned; unsigned int push_busy; struct cpu_stop_work push_work; - long: 64; - long: 64; - long: 64; + struct rq *core; + struct task_struct *core_pick; + unsigned int core_enabled; + unsigned int core_sched_seq; + struct rb_root core_tree; + unsigned int core_task_seq; + unsigned int core_pick_seq; + long unsigned int core_cookie; + unsigned char core_forceidle; + unsigned int core_forceidle_seq; +}; + +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); + +struct wake_q_head { + struct wake_q_node *first; + struct wake_q_node **lastp; +}; + +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 cpuidle_state_usage { + long long unsigned int disable; + long long unsigned int usage; + u64 time_ns; + long long unsigned int above; + long long unsigned int below; + long long unsigned int rejected; + long long unsigned int s2idle_usage; + long long unsigned int s2idle_time; +}; + +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_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; +}; + +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; +}; + +struct cpudl_item { + u64 dl; + int cpu; + int idx; +}; + +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 dl_bandwidth { + raw_spinlock_t dl_runtime_lock; + u64 dl_runtime; + u64 dl_period; }; +typedef int (*tg_visitor)(struct task_group *, void *); + struct perf_domain { struct em_perf_domain *em_pd; struct perf_domain *next; @@ -24962,12 +23650,6 @@ struct rq_flags { unsigned int clock_update_flags; }; -enum numa_topology_type { - NUMA_DIRECT = 0, - NUMA_GLUELESS_MESH = 1, - NUMA_BACKPLANE = 2, -}; - enum { __SCHED_FEAT_GENTLE_FAIR_SLEEPERS = 0, __SCHED_FEAT_START_DEBIT = 1, @@ -24976,24 +23658,31 @@ enum { __SCHED_FEAT_CACHE_HOT_BUDDY = 4, __SCHED_FEAT_WAKEUP_PREEMPTION = 5, __SCHED_FEAT_HRTICK = 6, - __SCHED_FEAT_DOUBLE_TICK = 7, - __SCHED_FEAT_NONTASK_CAPACITY = 8, - __SCHED_FEAT_TTWU_QUEUE = 9, - __SCHED_FEAT_SIS_AVG_CPU = 10, + __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_WARN_DOUBLE_CLOCK = 12, - __SCHED_FEAT_RT_PUSH_IPI = 13, - __SCHED_FEAT_RT_RUNTIME_SHARE = 14, - __SCHED_FEAT_LB_MIN = 15, - __SCHED_FEAT_ATTACH_AGE_LOAD = 16, - __SCHED_FEAT_WA_IDLE = 17, - __SCHED_FEAT_WA_WEIGHT = 18, - __SCHED_FEAT_WA_BIAS = 19, - __SCHED_FEAT_UTIL_EST = 20, - __SCHED_FEAT_UTIL_EST_FASTUP = 21, - __SCHED_FEAT_ALT_PERIOD = 22, - __SCHED_FEAT_BASE_SLICE = 23, - __SCHED_FEAT_NR = 24, + __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_UTIL_EST_FASTUP = 22, + __SCHED_FEAT_LATENCY_WARN = 23, + __SCHED_FEAT_ALT_PERIOD = 24, + __SCHED_FEAT_BASE_SLICE = 25, + __SCHED_FEAT_NR = 26, +}; + +enum cpu_util_type { + FREQUENCY_UTIL = 0, + ENERGY_UTIL = 1, }; struct set_affinity_pending; @@ -25044,13 +23733,20 @@ enum { SD_BALANCE_WAKE = 8, SD_WAKE_AFFINE = 16, SD_ASYM_CPUCAPACITY = 32, - SD_SHARE_CPUCAPACITY = 64, - SD_SHARE_PKG_RESOURCES = 128, - SD_SERIALIZE = 256, - SD_ASYM_PACKING = 512, - SD_PREFER_SIBLING = 1024, - SD_OVERLAP = 2048, - SD_NUMA = 4096, + 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 s2idle_states { + S2IDLE_STATE_NONE = 0, + S2IDLE_STATE_ENTER = 1, + S2IDLE_STATE_WAKE = 2, }; struct idle_timer { @@ -25058,8 +23754,6 @@ struct idle_timer { int done; }; -typedef void (*rcu_callback_t)(struct callback_head *); - struct numa_group { refcount_t refcount; spinlock_t lock; @@ -25073,6 +23767,23 @@ struct numa_group { long unsigned int faults[0]; }; +struct update_util_data { + void (*func)(struct update_util_data *, u64, unsigned int); +}; + +enum sched_tunable_scaling { + SCHED_TUNABLESCALING_NONE = 0, + SCHED_TUNABLESCALING_LOG = 1, + SCHED_TUNABLESCALING_LINEAR = 2, + SCHED_TUNABLESCALING_END = 3, +}; + +enum numa_topology_type { + NUMA_DIRECT = 0, + NUMA_GLUELESS_MESH = 1, + NUMA_BACKPLANE = 2, +}; + enum numa_faults_stats { NUMA_MEM = 0, NUMA_CPU = 1, @@ -25080,11 +23791,6 @@ enum numa_faults_stats { NUMA_CPUBUF = 3, }; -enum schedutil_type { - FREQUENCY_UTIL = 0, - ENERGY_UTIL = 1, -}; - enum numa_type { node_has_spare = 0, node_fully_busy = 1, @@ -25189,15 +23895,14 @@ struct sd_lb_stats { typedef struct rt_rq *rt_rq_iter_t; -typedef int wait_bit_action_f(struct wait_bit_key *, int); - struct swait_queue { struct task_struct *task; struct list_head task_list; }; -struct sched_domain_attr { - int relax_domain_level; +struct sd_flag_debug { + unsigned int meta_flags; + char *name; }; typedef const struct cpumask * (*sched_domain_mask_f)(int); @@ -25222,7 +23927,7 @@ struct sched_domain_topology_level { struct s_data { struct sched_domain **sd; - struct root_domain___2 *rd; + struct root_domain *rd; }; enum s_alloc { @@ -25232,19 +23937,21 @@ enum s_alloc { sa_none = 3, }; +struct asym_cap_data { + struct list_head link; + long unsigned int capacity; + long unsigned int cpus[0]; +}; + enum cpuacct_stat_index { CPUACCT_STAT_USER = 0, CPUACCT_STAT_SYSTEM = 1, CPUACCT_STAT_NSTATS = 2, }; -struct cpuacct_usage { - u64 usages[2]; -}; - struct cpuacct { struct cgroup_subsys_state css; - struct cpuacct_usage *cpuusage; + u64 *cpuusage; struct kernel_cpustat *cpustat; }; @@ -25359,7 +24066,10 @@ struct psi_trigger { int event; struct psi_window win; u64 last_event_time; - struct kref refcount; +}; + +struct sched_core_cookie { + refcount_t refcnt; }; struct ww_acquire_ctx; @@ -25383,12 +24093,6 @@ struct mutex_waiter { struct ww_acquire_ctx *ww_ctx; }; -enum mutex_trylock_recursive_enum { - MUTEX_TRYLOCK_FAILED = 0, - MUTEX_TRYLOCK_SUCCESS = 1, - MUTEX_TRYLOCK_RECURSIVE = 2, -}; - struct semaphore { raw_spinlock_t lock; unsigned int count; @@ -25411,6 +24115,7 @@ struct rwsem_waiter { struct task_struct *task; enum rwsem_waiter_type type; long unsigned int timeout; + bool handoff_set; }; enum rwsem_wake_type { @@ -25419,12 +24124,6 @@ enum rwsem_wake_type { RWSEM_WAKE_READ_OWNED = 2, }; -enum writer_wait_state { - WRITER_NOT_FIRST = 0, - WRITER_FIRST = 1, - WRITER_HANDOFF = 2, -}; - enum owner_state { OWNER_NULL = 1, OWNER_WRITER = 2, @@ -25449,26 +24148,35 @@ struct qnode { struct mcs_spinlock mcs; }; +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 hrtimer_sleeper { struct hrtimer timer; struct task_struct *task; }; -struct rt_mutex; - struct rt_mutex_waiter { struct rb_node tree_entry; struct rb_node pi_tree_entry; struct task_struct *task; - struct rt_mutex *lock; + struct rt_mutex_base *lock; + unsigned int wake_state; int prio; u64 deadline; + struct ww_acquire_ctx *ww_ctx; }; -struct rt_mutex { - raw_spinlock_t wait_lock; - struct rb_root_cached waiters; - struct task_struct *owner; +struct rt_wake_q_head { + struct wake_q_head head; + struct task_struct *rtlock_task; }; enum rtmutex_chainwalk { @@ -25487,6 +24195,38 @@ enum pm_qos_req_action { PM_QOS_REMOVE_REQ = 2, }; +typedef int suspend_state_t; + +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, +}; + +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; + enum suspend_stat_step failed_steps[2]; +}; + enum { TEST_NONE = 0, TEST_CORE = 1, @@ -25533,25 +24273,56 @@ struct wakelock { struct list_head lru; }; +struct sysrq_key_op { + void (* const handler)(int); + const char * const help_msg; + const char * const action_msg; + const int enable_mask; +}; + struct em_data_callback { int (*active_power)(long unsigned int *, long unsigned int *, struct device *); }; +typedef unsigned int uint; + +typedef struct { + seqcount_t seqcount; +} seqcount_latch_t; + struct dev_printk_info { char subsystem[16]; char device[48]; }; +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 int flags; + short int index; + int cflag; + uint ispeed; + uint ospeed; + void *data; + struct console *next; +}; + +struct kmsg_dump_iter { + u64 cur_seq; + u64 next_seq; +}; + struct kmsg_dumper { struct list_head list; void (*dump)(struct kmsg_dumper *, enum kmsg_dump_reason); enum kmsg_dump_reason max_reason; - bool active; bool registered; - u32 cur_idx; - u32 next_idx; - u64 cur_seq; - u64 next_seq; }; struct trace_event_raw_console { @@ -25636,6 +24407,11 @@ struct console_cmdline { char *options; }; +enum printk_info_flags { + LOG_NEWLINE = 2, + LOG_CONT = 8, +}; + enum devkmsg_log_bits { __DEVKMSG_LOG_BIT_ON = 0, __DEVKMSG_LOG_BIT_OFF = 1, @@ -25653,13 +24429,13 @@ enum con_msg_format_flags { MSG_FORMAT_SYSLOG = 1, }; -enum log_flags { - LOG_NEWLINE = 2, - LOG_CONT = 8, +struct latched_seq { + seqcount_latch_t latch; + u64 val[2]; }; struct devkmsg_user { - u64 seq; + atomic64_t seq; struct ratelimit_state rs; struct mutex lock; char buf[8192]; @@ -25673,12 +24449,7 @@ enum kdb_msgsrc { KDB_MSGSRC_PRINTK = 1, }; -struct printk_safe_seq_buf { - atomic_t len; - atomic_t message_lost; - struct irq_work work; - unsigned char buffer[8160]; -}; +struct dev_printk_info; struct prb_data_block { long unsigned int id; @@ -25696,6 +24467,7 @@ enum { IRQS_SUSPENDED = 2048, IRQS_TIMINGS = 4096, IRQS_NMI = 8192, + IRQS_SYSFS = 16384, }; enum { @@ -25713,6 +24485,7 @@ enum { _IRQ_IS_POLLED = 262144, _IRQ_DISABLE_UNLAZY = 524288, _IRQ_HIDDEN = 1048576, + _IRQ_NO_DEBUG = 2097152, _IRQF_MODIFY_MASK = 2096911, }; @@ -25721,6 +24494,7 @@ enum { IRQTF_WARNED = 1, IRQTF_AFFINITY = 2, IRQTF_FORCED_THREAD = 3, + IRQTF_READY = 4, }; enum { @@ -25741,7 +24515,6 @@ enum { IRQCHIP_SUPPORTS_NMI = 256, IRQCHIP_ENABLE_WAKEUP_ON_SUSPEND = 512, IRQCHIP_AFFINITY_PRE_STARTUP = 1024, - IRQCHIP_SHUTDOWN_ON_SUSPEND = 2048, }; enum { @@ -25780,15 +24553,10 @@ enum { IRQ_DOMAIN_FLAG_MSI = 16, IRQ_DOMAIN_FLAG_MSI_REMAP = 32, IRQ_DOMAIN_MSI_NOMASK_QUIRK = 64, + IRQ_DOMAIN_FLAG_NO_MAP = 128, IRQ_DOMAIN_FLAG_NONCORE = 65536, }; -enum { - IRQCHIP_FWNODE_REAL = 0, - IRQCHIP_FWNODE_NAMED = 1, - IRQCHIP_FWNODE_NAMED_ID = 2, -}; - struct irqchip_fwid { struct fwnode_handle fwnode; unsigned int type; @@ -25881,10 +24649,21 @@ struct trace_event_raw_rcu_utilization { 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_data_offsets_rcu_utilization {}; +struct trace_event_data_offsets_rcu_stall_warning {}; + typedef void (*btf_trace_rcu_utilization)(void *, const char *); +typedef void (*btf_trace_rcu_stall_warning)(void *, const char *, const char *); + struct rcu_tasks; typedef void (*rcu_tasks_gp_func_t)(struct rcu_tasks *); @@ -25932,6 +24711,8 @@ enum { GP_REPLAY = 4, }; +typedef long unsigned int ulong; + struct rcu_cblist { struct callback_head *head; struct callback_head **tail; @@ -25948,16 +24729,6 @@ enum rcutorture_type { INVALID_RCU_FLAVOR = 6, }; -enum tick_device_mode { - TICKDEV_MODE_PERIODIC = 0, - TICKDEV_MODE_ONESHOT = 1, -}; - -struct tick_device___2 { - struct clock_event_device *evtdev; - enum tick_device_mode mode; -}; - enum tick_dep_bits { TICK_DEP_BIT_POSIX_TIMER = 0, TICK_DEP_BIT_PERF_EVENTS = 1, @@ -26002,11 +24773,9 @@ struct rcu_node { long unsigned int boost_time; struct task_struct *boost_kthread_task; unsigned int boost_kthread_status; - long: 32; - long: 64; + long unsigned int n_boosts; long: 64; raw_spinlock_t fqslock; - long: 32; long: 64; long: 64; long: 64; @@ -26019,7 +24788,6 @@ struct rcu_node { wait_queue_head_t exp_wq[4]; struct rcu_exp_work rew; bool exp_need_flush; - long: 56; long: 64; long: 64; long: 64; @@ -26121,11 +24889,9 @@ struct rcu_state { long unsigned int n_force_qs_gpstart; const char *name; char abbr; - long: 56; long: 64; long: 64; raw_spinlock_t ofl_lock; - long: 32; long: 64; long: 64; long: 64; @@ -26159,16 +24925,17 @@ struct kfree_rcu_cpu { bool monitor_todo; bool initialized; int count; - struct work_struct page_cache_work; + 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 dma_sync_target { - SYNC_FOR_CPU = 0, - SYNC_FOR_DEVICE = 1, +struct dma_sgt_handle { + struct sg_table sgt; + struct page **pages; }; struct dma_devres { @@ -26178,6 +24945,20 @@ struct dma_devres { long unsigned int attrs; }; +struct cma_kobject; + +struct cma { + long unsigned int base_pfn; + long unsigned int count; + long unsigned int *bitmap; + unsigned int order_per_bit; + spinlock_t lock; + char name[64]; + atomic64_t nr_pages_succeeded; + atomic64_t nr_pages_failed; + struct cma_kobject *cma_kobj; +}; + struct reserved_mem_ops; struct reserved_mem { @@ -26282,6 +25063,11 @@ struct __kernel_itimerspec { struct __kernel_timespec it_value; }; +struct timezone { + int tz_minuteswest; + int tz_dsttime; +}; + struct itimerspec64 { struct timespec64 it_interval; struct timespec64 it_value; @@ -26313,7 +25099,6 @@ struct old_timex32 { s32 errcnt; s32 stbcnt; s32 tai; - long: 32; long: 64; long: 64; long: 64; @@ -26347,7 +25132,6 @@ struct __kernel_timex { long long int errcnt; long long int stbcnt; int tai; - long: 32; long: 64; long: 64; long: 64; @@ -26504,20 +25288,67 @@ struct process_timer { struct task_struct *task; }; +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)(long unsigned int, 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; + long unsigned int 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 *); + long unsigned int min_delta_ticks; + long unsigned int 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 tick_device_mode { + TICKDEV_MODE_PERIODIC = 0, + TICKDEV_MODE_ONESHOT = 1, +}; + +struct tick_device { + struct clock_event_device *evtdev; + enum tick_device_mode mode; +}; + struct ktime_timestamps { u64 mono; u64 boot; u64 real; }; -struct system_time_snapshot { - u64 cycles; - ktime_t real; - ktime_t raw; - unsigned int clock_was_set_seq; - u8 cs_was_changed_seq; -}; - struct system_device_crosststamp { ktime_t device; ktime_t sys_realtime; @@ -26529,10 +25360,6 @@ struct system_counterval_t { struct clocksource *cs; }; -typedef struct { - seqcount_t seqcount; -} seqcount_latch_t; - struct audit_ntp_val { long long int oldval; long long int newval; @@ -26614,6 +25441,7 @@ struct rtc_device { struct work_struct irqwork; int uie_unsupported; long unsigned int set_offset_nsec; + long unsigned int features[1]; time64_t range_min; timeu64_t range_max; time64_t start_secs; @@ -26870,8 +25698,6 @@ struct compat_sigevent { } _sigev_un; }; -typedef unsigned int uint; - struct posix_clock; struct posix_clock_operations { @@ -26910,8 +25736,6 @@ struct old_itimerval32 { struct old_timeval32 it_value; }; -typedef s64 int64_t; - struct ce_unbind { struct clock_event_device *ce; int res; @@ -26964,7 +25788,7 @@ union futex_key { struct futex_pi_state { struct list_head list; - struct rt_mutex pi_mutex; + struct rt_mutex_base pi_mutex; struct task_struct *owner; refcount_t refcount; union futex_key key; @@ -26979,6 +25803,16 @@ struct futex_q { struct rt_mutex_waiter *rt_waiter; union futex_key *requeue_pi_key; u32 bitset; + atomic_t requeue_state; +}; + +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 futex_hash_bucket { @@ -26997,10 +25831,12 @@ enum futex_access { FUTEX_WRITE = 1, }; -typedef bool (*smp_cond_func_t)(int, void *); +struct cfd_percpu { + call_single_data_t csd; +}; struct call_function_data { - call_single_data_t *csd; + struct cfd_percpu *pcpu; cpumask_var_t cpumask; cpumask_var_t cpumask_ipi; }; @@ -27061,20 +25897,6 @@ struct module_notes_attrs { struct bin_attribute attrs[0]; }; -enum mod_license { - NOT_GPL_ONLY = 0, - GPL_ONLY = 1, - WILL_BE_GPL_ONLY = 2, -}; - -struct symsearch { - const struct kernel_symbol *start; - const struct kernel_symbol *stop; - const s32 *crcs; - enum mod_license license; - bool unused; -}; - enum kernel_read_file_id { READING_UNKNOWN = 0, READING_FIRMWARE = 1, @@ -27188,6 +26010,18 @@ struct mod_tree_root { long unsigned int 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; +}; + struct find_symbol_arg { const char *name; bool gplok; @@ -27213,8 +26047,6 @@ struct module_signature { __be32 sig_len; }; -struct asymmetric_key_subtype; - enum pkey_id_type { PKEY_ID_PGP = 0, PKEY_ID_X509 = 1, @@ -27308,11 +26140,6 @@ struct elf64_note { Elf64_Word n_type; }; -struct elf_note_section { - struct elf64_note n_hdr; - u8 n_data[0]; -}; - typedef long unsigned int elf_greg_t; typedef elf_greg_t elf_gregset_t[34]; @@ -27323,7 +26150,7 @@ struct elf_siginfo { int si_errno; }; -struct elf_prstatus { +struct elf_prstatus_common { struct elf_siginfo pr_info; short int pr_cursig; long unsigned int pr_sigpend; @@ -27336,14 +26163,15 @@ struct elf_prstatus { struct __kernel_old_timeval pr_stime; struct __kernel_old_timeval pr_cutime; struct __kernel_old_timeval pr_cstime; +}; + +struct elf_prstatus { + struct elf_prstatus_common common; elf_gregset_t pr_reg; int pr_fpvalid; }; -struct kexec_sha_region { - long unsigned int start; - long unsigned int len; -}; +typedef u32 note_buf_t[106]; struct compat_kexec_segment { compat_uptr_t buf; @@ -27365,6 +26193,30 @@ struct elf64_phdr { typedef struct elf64_phdr Elf64_Phdr; +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 crypto_alg; struct crypto_tfm { @@ -27522,7 +26374,6 @@ struct shash_desc { struct crypto_shash { unsigned int descsize; - long: 32; long: 64; long: 64; long: 64; @@ -27541,6 +26392,11 @@ struct crypto_shash { struct crypto_tfm base; }; +struct kexec_sha_region { + long unsigned int start; + long unsigned int len; +}; + enum migrate_reason { MR_COMPACTION = 0, MR_MEMORY_FAILURE = 1, @@ -27549,12 +26405,12 @@ enum migrate_reason { MR_MEMPOLICY_MBIND = 4, MR_NUMA_MISPLACED = 5, MR_CONTIG_RANGE = 6, - MR_TYPES = 7, + MR_LONGTERM_PIN = 7, + MR_DEMOTION = 8, + MR_TYPES = 9, }; -typedef __kernel_ulong_t __kernel_ino_t; - -typedef __kernel_ino_t ino_t; +typedef __kernel_ulong_t ino_t; enum kernfs_node_type { KERNFS_DIR = 1, @@ -27584,7 +26440,8 @@ enum bpf_link_type { BPF_LINK_TYPE_ITER = 4, BPF_LINK_TYPE_NETNS = 5, BPF_LINK_TYPE_XDP = 6, - MAX_BPF_LINK_TYPE = 7, + BPF_LINK_TYPE_PERF_EVENT = 7, + MAX_BPF_LINK_TYPE = 8, }; struct bpf_link_info { @@ -27598,6 +26455,8 @@ struct bpf_link_info { } raw_tracepoint; struct { __u32 attach_type; + __u32 target_obj_id; + __u32 target_btf_id; } tracing; struct { __u64 cgroup_id; @@ -27653,6 +26512,7 @@ enum { CGRP_CPUSET_CLONE_CHILDREN = 1, CGRP_FREEZE = 2, CGRP_FROZEN = 3, + CGRP_KILL = 4, }; enum { @@ -27687,6 +26547,22 @@ struct cgroup_fs_context { char *release_agent; }; +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 cgrp_cset_link { struct cgroup *cgrp; struct css_set *cset; @@ -27712,8 +26588,8 @@ struct trace_event_raw_cgroup_root { struct trace_event_raw_cgroup { struct trace_entry ent; int root; - int id; int level; + u64 id; u32 __data_loc_path; char __data[0]; }; @@ -27721,8 +26597,8 @@ struct trace_event_raw_cgroup { struct trace_event_raw_cgroup_migrate { struct trace_entry ent; int dst_root; - int dst_id; int dst_level; + u64 dst_id; int pid; u32 __data_loc_dst_path; u32 __data_loc_comm; @@ -27732,8 +26608,8 @@ struct trace_event_raw_cgroup_migrate { struct trace_event_raw_cgroup_event { struct trace_entry ent; int root; - int id; int level; + u64 id; u32 __data_loc_path; int val; char __data[0]; @@ -27782,6 +26658,11 @@ typedef void (*btf_trace_cgroup_notify_populated)(void *, struct cgroup *, const typedef void (*btf_trace_cgroup_notify_frozen)(void *, struct cgroup *, const char *, int); +enum cgroup_opt_features { + OPT_FEATURE_PRESSURE = 0, + OPT_FEATURE_COUNT = 1, +}; + enum cgroup2_param { Opt_nsdelegate = 0, Opt_memory_localevents = 1, @@ -27887,6 +26768,8 @@ struct rdmacg_resource_pool { int num_max_cnt; }; +struct root_domain; + struct fmeter { int cnt; int val; @@ -27911,6 +26794,7 @@ struct cpuset { int partition_root_state; int use_parent_ecpus; int child_ecpus_count; + struct cgroup_file partition_file; }; struct tmpmasks { @@ -27962,6 +26846,21 @@ typedef enum { FILE_SPREAD_SLAB = 15, } cpuset_filetype_t; +enum misc_res_type { + MISC_CG_RES_TYPES = 0, +}; + +struct misc_res { + long unsigned int max; + atomic_long_t usage; + bool failed; +}; + +struct misc_cg { + struct cgroup_subsys_state css; + struct misc_res res[0]; +}; + struct kernel_pkey_query { __u32 supported_ops; __u32 key_size; @@ -28056,9 +26955,9 @@ typedef int __kernel_mqd_t; typedef __kernel_mqd_t mqd_t; enum audit_state { - AUDIT_DISABLED = 0, - AUDIT_BUILD_CONTEXT = 1, - AUDIT_RECORD_CONTEXT = 2, + AUDIT_STATE_DISABLED = 0, + AUDIT_STATE_BUILD = 1, + AUDIT_STATE_RECORD = 2, }; struct audit_cap_data { @@ -28105,6 +27004,8 @@ struct audit_proctitle { struct audit_aux_data; +struct __kernel_sockaddr_storage; + struct audit_tree_refs; struct audit_context { @@ -28200,11 +27101,25 @@ struct audit_context { 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 lsmcontext { char *context; u32 len; @@ -28252,6 +27167,22 @@ struct audit_sig_info { char ctx[0]; }; +enum skb_drop_reason { + SKB_DROP_REASON_NOT_SPECIFIED = 0, + SKB_DROP_REASON_NO_SOCKET = 1, + SKB_DROP_REASON_PKT_TOO_SMALL = 2, + SKB_DROP_REASON_TCP_CSUM = 3, + SKB_DROP_REASON_SOCKET_FILTER = 4, + SKB_DROP_REASON_UDP_CSUM = 5, + SKB_DROP_REASON_NETFILTER_DROP = 6, + SKB_DROP_REASON_OTHERHOST = 7, + SKB_DROP_REASON_IP_CSUM = 8, + SKB_DROP_REASON_IP_INHDR = 9, + SKB_DROP_REASON_IP_RPFILTER = 10, + SKB_DROP_REASON_UNICAST_IN_L2_MULTICAST = 11, + SKB_DROP_REASON_MAX = 12, +}; + struct net_generic { union { struct { @@ -28262,6 +27193,16 @@ struct net_generic { }; }; +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 scm_creds { u32 pid; kuid_t uid; @@ -28383,7 +27324,7 @@ struct audit_field { struct { bool lsm_isset; char *lsm_str; - void *lsm_rules[3]; + void *lsm_rules[4]; }; }; u32 op; @@ -28395,7 +27336,7 @@ struct audit_entry { struct audit_krule rule; }; -struct audit_buffer___2; +struct audit_buffer; typedef int __kernel_key_t; @@ -28416,7 +27357,6 @@ struct kern_ipc_perm { struct rhash_head khtnode; struct callback_head rcu; refcount_t refcount; - long: 32; long: 64; long: 64; long: 64; @@ -28549,12 +27489,12 @@ struct inotify_group_private_data { }; struct fanotify_group_private_data { + struct hlist_head *merge_hash; struct list_head access_list; wait_queue_head_t access_waitq; int flags; int f_flags; - unsigned int max_marks; - struct user_struct *user; + struct ucounts *ucounts; }; struct fsnotify_group { @@ -28568,7 +27508,6 @@ struct fsnotify_group { unsigned int priority; bool shutdown; struct mutex mark_mutex; - atomic_t num_marks; atomic_t user_waits; struct list_head marks_list; struct fasync_struct *fsn_fa; @@ -28601,7 +27540,6 @@ struct fsnotify_mark { struct fsnotify_event { struct list_head list; - long unsigned int objectid; }; struct audit_parent { @@ -28617,12 +27555,12 @@ struct audit_fsnotify_mark { struct audit_krule *rule; }; -struct audit_chunk___2; +struct audit_chunk; struct audit_tree { refcount_t count; int goner; - struct audit_chunk___2 *root; + struct audit_chunk *root; struct list_head chunks; struct list_head rules; struct list_head list; @@ -28631,13 +27569,13 @@ struct audit_tree { char pathname[0]; }; -struct node___2 { +struct node { struct list_head list; struct audit_tree *owner; unsigned int index; }; -struct audit_chunk___2 { +struct audit_chunk { struct list_head hash; long unsigned int key; struct fsnotify_mark *mark; @@ -28645,12 +27583,12 @@ struct audit_chunk___2 { int count; atomic_long_t refs; struct callback_head head; - struct node___2 owners[0]; + struct node owners[0]; }; struct audit_tree_mark { struct fsnotify_mark mark; - struct audit_chunk___2 *chunk; + struct audit_chunk *chunk; }; enum { @@ -28685,6 +27623,18 @@ enum kprobe_slot_state { SLOT_USED = 2, }; +struct kgdb_io { + const char *name; + int (*read_char)(); + void (*write_char)(u8); + void (*flush)(); + int (*init)(); + void (*deinit)(); + void (*pre_exception)(); + void (*post_exception)(); + struct console *cons; +}; + enum { KDB_NOT_INITIALIZED = 0, KDB_INIT_EARLY = 1, @@ -28714,18 +27664,7 @@ struct debuggerinfo_struct { bool rounding_up; }; -struct _kdb_bp { - long unsigned int bp_addr; - unsigned int bp_free: 1; - unsigned int bp_enabled: 1; - unsigned int bp_type: 4; - unsigned int bp_installed: 1; - unsigned int bp_delay: 1; - unsigned int bp_delayed: 1; - unsigned int bph_length; -}; - -typedef struct _kdb_bp kdb_bp_t; +typedef int (*get_char_func)(); typedef enum { KDB_ENABLE_ALL = 1, @@ -28756,6 +27695,18 @@ typedef enum { typedef int (*kdb_func_t)(int, const char **); +struct _kdbtab { + char *name; + kdb_func_t func; + char *usage; + char *help; + short int minlen; + kdb_cmdflags_t flags; + struct list_head list_node; +}; + +typedef struct _kdbtab kdbtab_t; + typedef enum { KDB_REASON_ENTER = 1, KDB_REASON_ENTER_SLAVE = 2, @@ -28785,17 +27736,6 @@ struct __ksymtab { typedef struct __ksymtab kdb_symtab_t; -struct _kdbtab { - char *cmd_name; - kdb_func_t cmd_func; - char *cmd_usage; - char *cmd_help; - short int cmd_minlen; - kdb_cmdflags_t cmd_flags; -}; - -typedef struct _kdbtab kdbtab_t; - typedef enum { KDB_DB_BPT = 0, KDB_DB_SS = 1, @@ -28810,30 +27750,31 @@ struct _kdbmsg { typedef struct _kdbmsg kdbmsg_t; -struct defcmd_set { - int count; - bool usable; - char *name; - char *usage; - char *help; - char **command; +struct kdb_macro { + kdbtab_t cmd; + struct list_head statements; }; -struct debug_alloc_header { - u32 next; - u32 size; - void *caller; +struct kdb_macro_statement { + char *statement; + struct list_head list_node; }; -typedef short unsigned int u_short; - -struct seccomp_data { - int nr; - __u32 arch; - __u64 instruction_pointer; - __u64 args[6]; +struct _kdb_bp { + long unsigned int bp_addr; + unsigned int bp_free: 1; + unsigned int bp_enabled: 1; + unsigned int bp_type: 4; + unsigned int bp_installed: 1; + unsigned int bp_delay: 1; + unsigned int bp_delayed: 1; + unsigned int bph_length; }; +typedef struct _kdb_bp kdb_bp_t; + +typedef short unsigned int u_short; + struct seccomp_notif_sizes { __u16 seccomp_notif; __u16 seccomp_notif_resp; @@ -28863,8 +27804,8 @@ struct seccomp_notif_addfd { }; struct action_cache { - long unsigned int allow_native[7]; - long unsigned int allow_compat[7]; + long unsigned int allow_native[8]; + long unsigned int allow_compat[8]; }; struct notification; @@ -28896,6 +27837,10 @@ struct compat_sock_fprog { compat_uptr_t filter; }; +typedef unsigned int (*bpf_dispatcher_fn)(const void *, const struct bpf_insn *, unsigned int (*)(const void *, const struct bpf_insn *)); + +typedef int (*bpf_aux_classic_check_t)(struct sock_filter *, unsigned int); + enum notify_state { SECCOMP_NOTIFY_INIT = 0, SECCOMP_NOTIFY_SENT = 1, @@ -28919,7 +27864,11 @@ struct seccomp_kaddfd { struct file *file; int fd; unsigned int flags; - int ret; + __u32 ioctl_flags; + union { + bool setfd; + int ret; + }; struct completion completion; struct list_head list; }; @@ -28956,7 +27905,6 @@ struct rchan_buf { size_t bytes_consumed; size_t early_bytes; unsigned int cpu; - long: 32; long: 64; long: 64; long: 64; @@ -29076,6 +28024,7 @@ enum { struct genl_multicast_group { char name[16]; + u8 flags; }; struct genl_ops; @@ -29191,25 +28140,24 @@ struct tp_probes { struct tracepoint_func probes[0]; }; -typedef int (*cmp_func_t)(const void *, const void *); - enum { TRACE_FTRACE_BIT = 0, TRACE_FTRACE_NMI_BIT = 1, TRACE_FTRACE_IRQ_BIT = 2, TRACE_FTRACE_SIRQ_BIT = 3, - TRACE_INTERNAL_BIT = 4, - TRACE_INTERNAL_NMI_BIT = 5, - TRACE_INTERNAL_IRQ_BIT = 6, - TRACE_INTERNAL_SIRQ_BIT = 7, - TRACE_BRANCH_BIT = 8, - TRACE_IRQ_BIT = 9, - TRACE_GRAPH_BIT = 10, - TRACE_GRAPH_DEPTH_START_BIT = 11, - TRACE_GRAPH_DEPTH_END_BIT = 12, - TRACE_GRAPH_NOTRACE_BIT = 13, - TRACE_TRANSITION_BIT = 14, - TRACE_RECORD_RECURSION_BIT = 15, + TRACE_FTRACE_TRANSITION_BIT = 4, + TRACE_INTERNAL_BIT = 5, + TRACE_INTERNAL_NMI_BIT = 6, + TRACE_INTERNAL_IRQ_BIT = 7, + TRACE_INTERNAL_SIRQ_BIT = 8, + TRACE_INTERNAL_TRANSITION_BIT = 9, + TRACE_BRANCH_BIT = 10, + TRACE_IRQ_BIT = 11, + TRACE_GRAPH_BIT = 12, + TRACE_GRAPH_DEPTH_START_BIT = 13, + TRACE_GRAPH_DEPTH_END_BIT = 14, + TRACE_GRAPH_NOTRACE_BIT = 15, + TRACE_RECORD_RECURSION_BIT = 16, }; enum { @@ -29217,6 +28165,7 @@ enum { TRACE_CTX_IRQ = 1, TRACE_CTX_SOFTIRQ = 2, TRACE_CTX_NORMAL = 3, + TRACE_CTX_TRANSITION = 4, }; enum { @@ -29254,6 +28203,14 @@ struct ftrace_func_entry { long unsigned int direct; }; +enum ftrace_bug_type { + FTRACE_BUG_UNKNOWN = 0, + FTRACE_BUG_INIT = 1, + FTRACE_BUG_NOP = 2, + FTRACE_BUG_CALL = 3, + FTRACE_BUG_UPDATE = 4, +}; + enum { FTRACE_FL_ENABLED = 2147483648, FTRACE_FL_REGS = 1073741824, @@ -29283,6 +28240,23 @@ enum { FTRACE_ITER_ENABLED = 64, }; +struct ftrace_graph_ent { + long unsigned int func; + int depth; +} __attribute__((packed)); + +struct ftrace_graph_ret { + long unsigned int func; + int depth; + unsigned int overrun; + long long unsigned int calltime; + long long unsigned int rettime; +}; + +typedef void (*trace_func_graph_ret_t)(struct ftrace_graph_ret *); + +typedef int (*trace_func_graph_ent_t)(struct ftrace_graph_ent *); + struct fgraph_ops { trace_func_graph_ent_t entryfunc; trace_func_graph_ret_t retfunc; @@ -29311,6 +28285,8 @@ struct trace_options; struct cond_snapshot; +struct trace_func_repeats; + struct trace_array { struct list_head list; char *name; @@ -29327,8 +28303,8 @@ struct trace_array { int buffer_disabled; int sys_refcount_enter; int sys_refcount_exit; - struct trace_event_file *enter_syscall_files[442]; - struct trace_event_file *exit_syscall_files[442]; + struct trace_event_file *enter_syscall_files[449]; + struct trace_event_file *exit_syscall_files[449]; int stop_count; int clock_id; int nr_topts; @@ -29359,9 +28335,10 @@ struct trace_array { struct list_head mod_trace; struct list_head mod_notrace; int function_enabled; - int time_stamp_abs_ref; + int no_filter_buffering_ref; struct list_head hist_vars; struct cond_snapshot *cond_snapshot; + struct trace_func_repeats *last_func_repeats; }; struct tracer_flags; @@ -29403,6 +28380,11 @@ struct trace_subsystem_dir { int nr_events; }; +struct trace_pid_list { + int pid_max; + long unsigned int *pids; +}; + struct trace_array_cpu { atomic_t disabled; void *buffer_page; @@ -29439,11 +28421,6 @@ struct trace_option_dentry { struct dentry *entry; }; -struct trace_pid_list { - int pid_max; - long unsigned int *pids; -}; - enum { TRACE_PIDS = 1, TRACE_NO_PIDS = 2, @@ -29456,6 +28433,13 @@ struct cond_snapshot { cond_update_fn_t update; }; +struct trace_func_repeats { + long unsigned int ip; + long unsigned int parent_ip; + long unsigned int count; + u64 ts_last_call; +}; + enum { TRACE_ARRAY_FL_GLOBAL = 1, }; @@ -29528,11 +28512,12 @@ enum trace_iterator_bits { TRACE_ITER_MARKERS_BIT = 20, TRACE_ITER_EVENT_FORK_BIT = 21, TRACE_ITER_PAUSE_ON_TRACE_BIT = 22, - TRACE_ITER_FUNCTION_BIT = 23, - TRACE_ITER_FUNC_FORK_BIT = 24, - TRACE_ITER_DISPLAY_GRAPH_BIT = 25, - TRACE_ITER_STACKTRACE_BIT = 26, - TRACE_ITER_LAST_BIT = 27, + TRACE_ITER_HASH_PTR_BIT = 23, + TRACE_ITER_FUNCTION_BIT = 24, + TRACE_ITER_FUNC_FORK_BIT = 25, + TRACE_ITER_DISPLAY_GRAPH_BIT = 26, + TRACE_ITER_STACKTRACE_BIT = 27, + TRACE_ITER_LAST_BIT = 28, }; struct event_subsystem { @@ -29601,7 +28586,7 @@ struct ftrace_page { struct ftrace_page *next; struct dyn_ftrace *records; int index; - int size; + int order; }; struct ftrace_rec_iter { @@ -29711,12 +28696,13 @@ struct rb_irq_work { struct irq_work work; wait_queue_head_t waiters; wait_queue_head_t full_waiters; + long int wait_index; bool waiters_pending; bool full_waiters_pending; bool wakeup_full; }; -struct trace_buffer___2 { +struct trace_buffer { unsigned int flags; int cpus; atomic_t record_disabled; @@ -29786,7 +28772,7 @@ struct ring_buffer_per_cpu { int cpu; atomic_t record_disabled; atomic_t resize_disabled; - struct trace_buffer___2 *buffer; + struct trace_buffer *buffer; raw_spinlock_t reader_lock; arch_spinlock_t lock; struct lock_class_key lock_key; @@ -29809,6 +28795,7 @@ struct ring_buffer_per_cpu { local_t committing; local_t commits; local_t pages_touched; + local_t pages_lost; local_t pages_read; long int last_pages_touch; size_t shortest_full; @@ -29816,6 +28803,7 @@ struct ring_buffer_per_cpu { long unsigned int read_bytes; rb_time_t write_stamp; rb_time_t before_stamp; + u64 event_stamp[5]; u64 read_stamp; long int nr_pages_to_update; struct list_head new_pages; @@ -29824,6 +28812,8 @@ struct ring_buffer_per_cpu { struct rb_irq_work irq_work; }; +typedef struct vfsmount * (*debugfs_automount_t)(struct dentry *, void *); + struct trace_export { struct trace_export *next; void (*write)(struct trace_export *, const void *, unsigned int); @@ -29842,14 +28832,14 @@ enum trace_iter_flags { TRACE_FILE_TIME_IN_NS = 4, }; -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, +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, }; enum trace_type { @@ -29869,8 +28859,11 @@ enum trace_type { TRACE_BLK = 13, TRACE_BPUTS = 14, TRACE_HWLAT = 15, - TRACE_RAW_DATA = 16, - __TRACE_LAST_TYPE = 17, + TRACE_OSNOISE = 16, + TRACE_TIMERLAT = 17, + TRACE_RAW_DATA = 18, + TRACE_FUNC_REPEATS = 19, + __TRACE_LAST_TYPE = 20, }; struct ftrace_entry { @@ -29910,14 +28903,13 @@ struct bputs_entry { const char *str; }; -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, +struct func_repeats_entry { + struct trace_entry ent; + long unsigned int ip; + long unsigned int parent_ip; + u16 count; + u16 top_delta_ts; + u32 bottom_delta_ts; }; enum trace_iterator_flags { @@ -29944,10 +28936,18 @@ enum trace_iterator_flags { TRACE_ITER_MARKERS = 1048576, TRACE_ITER_EVENT_FORK = 2097152, TRACE_ITER_PAUSE_ON_TRACE = 4194304, - TRACE_ITER_FUNCTION = 8388608, - TRACE_ITER_FUNC_FORK = 16777216, - TRACE_ITER_DISPLAY_GRAPH = 33554432, - TRACE_ITER_STACKTRACE = 67108864, + TRACE_ITER_HASH_PTR = 8388608, + TRACE_ITER_FUNCTION = 16777216, + TRACE_ITER_FUNC_FORK = 33554432, + TRACE_ITER_DISPLAY_GRAPH = 67108864, + TRACE_ITER_STACKTRACE = 134217728, +}; + +struct trace_min_max_param { + struct mutex *lock; + u64 *val; + u64 *min; + u64 *max; }; struct saved_cmdlines_buffer { @@ -29999,7 +28999,7 @@ struct buffer_ref { refcount_t refcount; }; -struct ftrace_func_mapper___2; +struct ftrace_func_mapper; struct ctx_switch_entry { struct trace_entry ent; @@ -30029,6 +29029,25 @@ struct hwlat_entry { 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 trace_mark { long long unsigned int val; char sym; @@ -30131,7 +29150,25 @@ struct tracing_map_ops { }; enum { + TRACE_FUNC_NO_OPTS = 0, TRACE_FUNC_OPT_STACK = 1, + TRACE_FUNC_OPT_NO_REPEATS = 2, + TRACE_FUNC_OPT_HIGHEST_BIT = 4, +}; + +enum { + MODE_NONE = 0, + MODE_ROUND_ROBIN = 1, + MODE_PER_CPU = 2, + MODE_MAX = 3, +}; + +struct hwlat_kthread_data { + struct task_struct *kthread; + u64 nmi_ts_start; + u64 nmi_total_ts; + int nmi_count; + int nmi_cpu; }; struct hwlat_sample { @@ -30149,6 +29186,7 @@ struct hwlat_data { u64 count; u64 sample_window; u64 sample_width; + int thread_mode; }; enum { @@ -30159,7 +29197,7 @@ enum { struct ftrace_graph_ent_entry { struct trace_entry ent; struct ftrace_graph_ent graph_ent; -} __attribute__((packed)); +}; struct ftrace_graph_ret_entry { struct trace_entry ent; @@ -30180,7 +29218,7 @@ struct fgraph_data { struct ftrace_graph_ret_entry ret; int failed; int cpu; - int: 32; + long: 0; } __attribute__((packed)); enum { @@ -30205,8 +29243,6 @@ struct bio_crypt_ctx { u64 bc_dun[4]; }; -typedef __u32 blk_mq_req_flags_t; - enum req_opf { REQ_OP_READ = 0, REQ_OP_WRITE = 1, @@ -30221,8 +29257,6 @@ enum req_opf { REQ_OP_ZONE_APPEND = 13, REQ_OP_ZONE_RESET = 15, REQ_OP_ZONE_RESET_ALL = 17, - REQ_OP_SCSI_IN = 32, - REQ_OP_SCSI_OUT = 33, REQ_OP_DRV_IN = 34, REQ_OP_DRV_OUT = 35, REQ_OP_LAST = 36, @@ -30241,99 +29275,33 @@ enum req_flag_bits { __REQ_FUA = 17, __REQ_PREFLUSH = 18, __REQ_RAHEAD = 19, - __REQ_BACKGROUND = 20, - __REQ_NOWAIT = 21, - __REQ_CGROUP_PUNT = 22, - __REQ_NOUNMAP = 23, - __REQ_HIPRI = 24, - __REQ_DRV = 25, - __REQ_SWAP = 26, - __REQ_NR_BITS = 27, -}; - -struct blk_mq_ctxs; - -struct blk_mq_ctx { - struct { - spinlock_t lock; - struct list_head rq_lists[3]; - long: 64; - }; - unsigned int cpu; - short unsigned int index_hw[3]; - struct blk_mq_hw_ctx *hctxs[3]; - long unsigned int rq_dispatched[2]; - long unsigned int rq_merged; - long unsigned int rq_completed[2]; - struct request_queue *queue; - struct blk_mq_ctxs *ctxs; - struct kobject kobj; - long: 64; - long: 64; - long: 64; - long: 64; -}; - -struct sbitmap_word; - -struct sbitmap { - unsigned int depth; - unsigned int shift; - unsigned int map_nr; - struct sbitmap_word *map; + __REQ_BACKGROUND = 20, + __REQ_NOWAIT = 21, + __REQ_CGROUP_PUNT = 22, + __REQ_NOUNMAP = 23, + __REQ_HIPRI = 24, + __REQ_DRV = 25, + __REQ_SWAP = 26, + __REQ_NR_BITS = 27, }; -struct blk_mq_tags; +struct blk_mq_ctxs; -struct blk_mq_hw_ctx { +struct blk_mq_ctx { struct { spinlock_t lock; - struct list_head dispatch; - long unsigned int state; - long: 64; - long: 64; - long: 64; + struct list_head rq_lists[3]; long: 64; }; - struct delayed_work run_work; - cpumask_var_t cpumask; - int next_cpu; - int next_cpu_batch; - long unsigned int flags; - void *sched_data; + unsigned int cpu; + short unsigned int index_hw[3]; + struct blk_mq_hw_ctx *hctxs[3]; + long unsigned int rq_dispatched[2]; + long unsigned int rq_merged; + long unsigned int rq_completed[2]; 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; - short unsigned int type; - short unsigned int 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; - long unsigned int queued; - long unsigned int run; - long unsigned int dispatched[7]; - unsigned int numa_node; - unsigned int queue_num; - atomic_t nr_active; - atomic_t elevator_queued; - struct hlist_node cpuhp_online; - struct hlist_node cpuhp_dead; + struct blk_mq_ctxs *ctxs; struct kobject kobj; - long unsigned int poll_considered; - long unsigned int poll_invoked; - long unsigned int poll_success; - struct dentry *debugfs_dir; - struct dentry *sched_debugfs_dir; - struct list_head hctx_list; - struct srcu_struct srcu[0]; - long: 64; - long: 64; long: 64; long: 64; long: 64; @@ -30372,8 +29340,6 @@ struct blk_trace { u32 pid; u32 dev; struct dentry *dir; - struct dentry *dropped_file; - struct dentry *msg_file; struct list_head running_list; atomic_t dropped; }; @@ -30389,45 +29355,6 @@ struct blk_flush_queue { spinlock_t mq_flush_lock; }; -struct blk_mq_queue_map { - unsigned int *mq_map; - unsigned int nr_queues; - unsigned int queue_offset; -}; - -struct sbq_wait_state; - -struct sbitmap_queue { - struct sbitmap sb; - unsigned int *alloc_hint; - unsigned int wake_batch; - atomic_t wake_index; - struct sbq_wait_state *ws; - atomic_t ws_active; - bool round_robin; - unsigned int min_shallow_depth; -}; - -struct blk_mq_tag_set { - struct blk_mq_queue_map map[3]; - unsigned int nr_maps; - const struct blk_mq_ops *ops; - 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; - atomic_t active_queues_shared_sbitmap; - struct sbitmap_queue __bitmap_tags; - struct sbitmap_queue __breserved_tags; - struct blk_mq_tags **tags; - struct mutex tag_list_lock; - struct list_head tag_list; -}; - enum blktrace_cat { BLK_TC_READ = 1, BLK_TC_WRITE = 2, @@ -30513,42 +29440,6 @@ struct blk_user_trace_setup { __u32 pid; }; -struct sbitmap_word { - long unsigned int depth; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long unsigned int word; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long unsigned int cleared; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; -}; - -struct sbq_wait_state { - atomic_t wait_cnt; - wait_queue_head_t wait; - long: 64; - long: 64; - long: 64; - long: 64; -}; - struct blk_mq_tags { unsigned int nr_tags; unsigned int nr_reserved_tags; @@ -30563,11 +29454,6 @@ struct blk_mq_tags { spinlock_t lock; }; -struct blk_mq_queue_data { - struct request *rq; - bool last; -}; - enum blk_crypto_mode_num { BLK_ENCRYPTION_MODE_INVALID = 0, BLK_ENCRYPTION_MODE_AES_256_XTS = 1, @@ -30589,12 +29475,6 @@ struct blk_crypto_key { u8 raw[64]; }; -struct blk_crypto_mode { - const char *cipher_str; - unsigned int keysize; - unsigned int ivsize; -}; - struct blk_mq_ctxs { struct kobject kobj; struct blk_mq_ctx *queue_ctx; @@ -30612,6 +29492,12 @@ struct ftrace_event_field { int is_signed; }; +struct module_string { + struct list_head next; + struct module *module; + char *str; +}; + enum { FORMAT_HEADER = 1, FORMAT_FIELD_SEPERATOR = 2, @@ -30674,9 +29560,10 @@ enum perf_event_sample_format { PERF_SAMPLE_CGROUP = 2097152, PERF_SAMPLE_DATA_PAGE_SIZE = 4194304, PERF_SAMPLE_CODE_PAGE_SIZE = 8388608, - PERF_SAMPLE_MAX = 16777216, + PERF_SAMPLE_WEIGHT_STRUCT = 16777216, + PERF_SAMPLE_MAX = 33554432, __PERF_SAMPLE_CALLCHAIN_EARLY = 0, -}; +} __attribute__((mode(word))); typedef long unsigned int perf_trace_t[256]; @@ -30758,6 +29645,10 @@ enum { PROCESS_OR = 4, }; +struct ustring_buffer { + char buffer[1024]; +}; + enum { TOO_MANY_CLOSE = 4294967295, TOO_MANY_OPEN = 4294967294, @@ -30775,6 +29666,10 @@ struct function_filter_data { int first_notrace; }; +enum { + EVENT_TRIGGER_FL_PROBE = 1, +}; + struct event_trigger_ops; struct event_command; @@ -30782,6 +29677,7 @@ struct event_command; struct event_trigger_data { long unsigned int count; int ref; + int flags; struct event_trigger_ops *ops; struct event_command *cmd_ops; struct event_filter *filter; @@ -30796,7 +29692,7 @@ struct event_trigger_data { }; struct event_trigger_ops { - void (*func)(struct event_trigger_data *, void *, struct ring_buffer_event *); + void (*func)(struct event_trigger_data *, struct trace_buffer *, void *, struct ring_buffer_event *); int (*init)(struct event_trigger_ops *, struct event_trigger_data *); void (*free)(struct event_trigger_ops *, struct event_trigger_data *); int (*print)(struct seq_file *, struct event_trigger_ops *, struct event_trigger_data *); @@ -30826,6 +29722,196 @@ enum event_command_flags { EVENT_CMD_FL_NEEDS_REC = 2, }; +struct eprobe_trace_entry_head { + struct trace_entry ent; + unsigned int type; +}; + +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; +}; + +typedef int (*print_type_func_t)(struct trace_seq *, void *, void *); + +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_MOD_BF = 17, + FETCH_OP_LP_ARRAY = 18, + FETCH_OP_TP_ARG = 19, + FETCH_OP_END = 20, + FETCH_NOP_SYMBOL = 21, +}; + +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; + }; + long unsigned int immediate; + void *data; + }; +}; + +struct fetch_type { + const char *name; + size_t size; + int is_signed; + print_type_func_t print; + const char *fmt; + const char *fmttype; +}; + +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_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 trace_probe { + struct list_head list; + struct trace_probe_event *event; + ssize_t size; + unsigned int nr_args; + struct probe_arg args[0]; +}; + +struct event_file_link { + struct trace_event_file *file; + struct list_head list; +}; + +enum probe_print_type { + PROBE_PRINT_NORMAL = 0, + PROBE_PRINT_RETURN = 1, + PROBE_PRINT_EVENT = 2, +}; + +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_MAXACT_NO_KPROBE = 6, + TP_ERR_BAD_MAXACT = 7, + TP_ERR_MAXACT_TOO_BIG = 8, + TP_ERR_BAD_PROBE_ADDR = 9, + TP_ERR_BAD_RETPROBE = 10, + TP_ERR_BAD_ADDR_SUFFIX = 11, + TP_ERR_NO_GROUP_NAME = 12, + TP_ERR_GROUP_TOO_LONG = 13, + TP_ERR_BAD_GROUP_NAME = 14, + TP_ERR_NO_EVENT_NAME = 15, + TP_ERR_EVENT_TOO_LONG = 16, + TP_ERR_BAD_EVENT_NAME = 17, + TP_ERR_EVENT_EXIST = 18, + TP_ERR_RETVAL_ON_PROBE = 19, + TP_ERR_BAD_STACK_NUM = 20, + TP_ERR_BAD_ARG_NUM = 21, + TP_ERR_BAD_VAR = 22, + TP_ERR_BAD_REG_NAME = 23, + TP_ERR_BAD_MEM_ADDR = 24, + TP_ERR_BAD_IMM = 25, + TP_ERR_IMMSTR_NO_CLOSE = 26, + TP_ERR_FILE_ON_KPROBE = 27, + TP_ERR_BAD_FILE_OFFS = 28, + TP_ERR_SYM_ON_UPROBE = 29, + TP_ERR_TOO_MANY_OPS = 30, + TP_ERR_DEREF_NEED_BRACE = 31, + TP_ERR_BAD_DEREF_OFFS = 32, + TP_ERR_DEREF_OPEN_BRACE = 33, + TP_ERR_COMM_CANT_DEREF = 34, + TP_ERR_BAD_FETCH_ARG = 35, + TP_ERR_ARRAY_NO_CLOSE = 36, + TP_ERR_BAD_ARRAY_SUFFIX = 37, + TP_ERR_BAD_ARRAY_NUM = 38, + TP_ERR_ARRAY_TOO_BIG = 39, + TP_ERR_BAD_TYPE = 40, + TP_ERR_BAD_STRING = 41, + TP_ERR_BAD_BITFIELD = 42, + TP_ERR_ARG_NAME_TOO_LONG = 43, + TP_ERR_NO_ARG_NAME = 44, + TP_ERR_BAD_ARG_NAME = 45, + TP_ERR_USED_ARG_NAME = 46, + TP_ERR_ARG_TOO_LONG = 47, + TP_ERR_NO_ARG_BODY = 48, + TP_ERR_BAD_INSN_BNDRY = 49, + TP_ERR_FAIL_REG_PROBE = 50, + TP_ERR_DIFF_PROBE_TYPE = 51, + TP_ERR_DIFF_ARG_TYPE = 52, + TP_ERR_SAME_PROBE = 53, +}; + +struct trace_eprobe { + const char *event_system; + const char *event_name; + struct trace_event_call *event; + struct dyn_event devent; + struct trace_probe tp; +}; + +struct eprobe_data { + struct trace_event_file *file; + struct trace_eprobe *ep; +}; + enum dynevent_type { DYNEVENT_TYPE_SYNTH = 1, DYNEVENT_TYPE_KPROBE = 2, @@ -30871,13 +29957,6 @@ struct synth_trace_event { u64 fields[0]; }; -struct dyn_event_operations; - -struct dyn_event { - struct list_head list; - struct dyn_event_operations *ops; -}; - struct synth_field; struct synth_event { @@ -30895,14 +29974,7 @@ struct synth_event { struct module *mod; }; -struct dyn_event_operations { - struct list_head list; - int (*create)(int, 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 *); -}; +typedef int (*dynevent_check_arg_fn_t)(void *); struct dynevent_arg { const char *str; @@ -30929,13 +30001,14 @@ struct synth_field { enum { SYNTH_ERR_BAD_NAME = 0, - SYNTH_ERR_CMD_INCOMPLETE = 1, - SYNTH_ERR_EVENT_EXISTS = 2, - SYNTH_ERR_TOO_MANY_FIELDS = 3, - SYNTH_ERR_INCOMPLETE_TYPE = 4, - SYNTH_ERR_INVALID_TYPE = 5, - SYNTH_ERR_INVALID_FIELD = 6, - SYNTH_ERR_CMD_TOO_LONG = 7, + 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, }; enum { @@ -30988,7 +30061,7 @@ enum { struct hist_field; -typedef u64 (*hist_field_fn_t)(struct hist_field *, struct tracing_map_elt *, struct ring_buffer_event *, void *); +typedef u64 (*hist_field_fn_t)(struct hist_field *, struct tracing_map_elt *, struct trace_buffer *, struct ring_buffer_event *, void *); struct hist_trigger_data; @@ -31013,6 +30086,7 @@ struct hist_field { unsigned int size; unsigned int offset; unsigned int is_signed; + long unsigned int buckets; const char *type; struct hist_field *operands[2]; struct hist_trigger_data *hist_data; @@ -31053,12 +30127,12 @@ struct hist_trigger_data { unsigned int n_var_refs; struct action_data *actions[8]; unsigned int n_actions; - struct field_var *field_vars[32]; + struct field_var *field_vars[64]; unsigned int n_field_vars; unsigned int n_field_var_str; - struct field_var_hist *field_var_hists[32]; + struct field_var_hist *field_var_hists[64]; unsigned int n_field_var_hists; - struct field_var *save_vars[32]; + struct field_var *save_vars[64]; unsigned int n_save_vars; unsigned int n_save_var_str; }; @@ -31081,6 +30155,7 @@ enum hist_field_flags { HIST_FIELD_FL_VAR_REF = 16384, HIST_FIELD_FL_CPU = 32768, HIST_FIELD_FL_ALIAS = 65536, + HIST_FIELD_FL_BUCKET = 131072, }; struct var_defs { @@ -31129,7 +30204,7 @@ enum action_id { ACTION_SNAPSHOT = 3, }; -typedef void (*action_fn_t)(struct hist_trigger_data *, struct tracing_map_elt *, void *, struct ring_buffer_event *, void *, struct action_data *, 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 *); typedef bool (*check_track_val_fn_t)(u64, u64); @@ -31139,8 +30214,8 @@ struct action_data { char *action_name; action_fn_t fn; unsigned int n_params; - char *params[32]; - unsigned int var_ref_idx[16]; + char *params[64]; + unsigned int var_ref_idx[64]; struct synth_event *synth_event; bool use_trace_keyword; char *synth_event_name; @@ -31172,7 +30247,8 @@ struct track_data { struct hist_elt_data { char *comm; u64 *var_ref_vals; - char *field_var_str[32]; + char **field_var_str; + int n_field_var_str; }; struct snapshot_context { @@ -31187,10 +30263,194 @@ struct hist_var_data { struct hist_trigger_data *hist_data; }; +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_MAX_ID = 176, +}; + enum { BPF_F_INDEX_MASK = 4294967295, BPF_F_CURRENT_CPU = 4294967295, BPF_F_CTXLEN_MASK = 0, +} __attribute__((mode(word))); + +enum { + BPF_F_GET_BRANCH_RECORDS_SIZE = 1, }; struct bpf_perf_event_value { @@ -31225,6 +30485,16 @@ enum { BTF_F_ZERO = 8, }; +struct bpf_local_storage_data; + +struct bpf_local_storage { + struct bpf_local_storage_data *cache[16]; + struct hlist_head list; + void *owner; + struct callback_head rcu; + raw_spinlock_t lock; +}; + struct bpf_local_storage_map_bucket; struct bpf_local_storage_map { @@ -31241,19 +30511,70 @@ struct bpf_local_storage_map { long: 64; }; -struct bpf_local_storage_data; +struct bpf_func_proto { + u64 (*func)(u64, u64, u64, u64, u64); + bool gpl_only; + bool pkt_access; + 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]; + }; + int *ret_btf_id; + bool (*allowed)(const struct bpf_prog *); +}; -struct bpf_local_storage { - struct bpf_local_storage_data *cache[16]; - struct hlist_head list; - void *owner; - struct callback_head rcu; - raw_spinlock_t lock; +enum bpf_access_type { + BPF_READ = 1, + BPF_WRITE = 2, +}; + +struct bpf_verifier_log; + +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; +}; + +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 btf *, const struct btf_type *, int, int, enum bpf_access_type, u32 *); + bool (*check_kfunc_call)(u32); }; struct bpf_array_aux { - enum bpf_prog_type type; - bool jited; + struct { + spinlock_t lock; + enum bpf_prog_type type; + bool jited; + } owner; struct list_head poke_progs; struct bpf_map *map; struct mutex poke_mutex; @@ -31287,6 +30608,13 @@ struct bpf_event_entry { typedef long unsigned int (*bpf_ctx_copy_t)(void *, const void *, long unsigned int, long unsigned int); +struct bpf_trace_run_ctx { + struct bpf_run_ctx run_ctx; + u64 bpf_cookie; +}; + +typedef u32 (*bpf_prog_run_fn)(const struct bpf_prog *, const void *); + typedef struct user_pt_regs bpf_user_pt_regs_t; struct bpf_perf_event_data { @@ -31312,268 +30640,6 @@ struct btf_id_set { u32 ids[0]; }; -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_dup; - struct hlist_head fs_context_parse_param; - struct hlist_head sb_alloc_security; - struct hlist_head sb_free_security; - struct hlist_head sb_free_mnt_opts; - struct hlist_head sb_eat_lsm_opts; - 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 sb_add_mnt_opt; - struct hlist_head move_mount; - struct hlist_head dentry_init_security; - struct hlist_head dentry_create_files_as; - struct hlist_head path_unlink; - struct hlist_head path_mkdir; - struct hlist_head path_rmdir; - struct hlist_head path_mknod; - struct hlist_head path_truncate; - struct hlist_head path_symlink; - struct hlist_head path_link; - struct hlist_head path_rename; - struct hlist_head path_chmod; - struct hlist_head path_chown; - struct hlist_head path_chroot; - 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_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_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 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 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_setpgid; - struct hlist_head task_getpgid; - struct hlist_head task_getsid; - struct hlist_head task_getsecid; - 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 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 post_notification; - struct hlist_head watch_key; - 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 ib_pkey_access; - struct hlist_head ib_endport_manage_subnet; - struct hlist_head ib_alloc_security; - struct hlist_head ib_free_security; - struct hlist_head xfrm_policy_alloc_security; - struct hlist_head xfrm_policy_clone_security; - struct hlist_head xfrm_policy_free_security; - struct hlist_head xfrm_policy_delete_security; - struct hlist_head xfrm_state_alloc; - struct hlist_head xfrm_state_alloc_acquire; - struct hlist_head xfrm_state_free_security; - struct hlist_head xfrm_state_delete_security; - struct hlist_head xfrm_policy_lookup; - struct hlist_head xfrm_state_pol_flow_match; - struct hlist_head xfrm_decode_session; - 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 lock_kernel_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 lsm_blob_sizes { - int lbs_cred; - int lbs_file; - int lbs_inode; - int lbs_sock; - int lbs_ipc; - int lbs_msg_msg; - int lbs_task; -}; - -enum lsm_order { - LSM_ORDER_FIRST = 4294967295, - LSM_ORDER_MUTABLE = 0, -}; - -struct lsm_info { - const char *name; - enum lsm_order order; - long unsigned int flags; - int *enabled; - int (*init)(); - struct lsm_blob_sizes *blobs; -}; - struct bpf_local_storage_map_bucket { struct hlist_head list; raw_spinlock_t lock; @@ -31619,10 +30685,6 @@ typedef u64 (*btf_bpf_probe_write_user)(void *, const void *, u32); typedef u64 (*btf_bpf_trace_printk)(char *, u32, u64, u64, u64); -struct bpf_seq_printf_buf { - char buf[768]; -}; - 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); @@ -31647,6 +30709,8 @@ 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); struct send_signal_irq_work { @@ -31664,6 +30728,14 @@ 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_attach_cookie_trace)(void *); + +typedef u64 (*btf_bpf_get_attach_cookie_pe)(struct bpf_perf_event_data_kern *); + 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); @@ -31695,155 +30767,6 @@ struct kretprobe_trace_entry_head { long unsigned int ret_ip; }; -typedef int (*print_type_func_t)(struct trace_seq *, void *, void *); - -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_MOD_BF = 17, - FETCH_OP_LP_ARRAY = 18, - FETCH_OP_END = 19, - FETCH_NOP_SYMBOL = 20, -}; - -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; - }; - long unsigned int immediate; - void *data; - }; -}; - -struct fetch_type { - const char *name; - size_t size; - int is_signed; - print_type_func_t print; - const char *fmt; - const char *fmttype; -}; - -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_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 trace_probe { - struct list_head list; - struct trace_probe_event *event; - ssize_t size; - unsigned int nr_args; - struct probe_arg args[0]; -}; - -struct event_file_link { - struct trace_event_file *file; - struct list_head list; -}; - -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_MAXACT_NO_KPROBE = 6, - TP_ERR_BAD_MAXACT = 7, - TP_ERR_MAXACT_TOO_BIG = 8, - TP_ERR_BAD_PROBE_ADDR = 9, - TP_ERR_BAD_RETPROBE = 10, - TP_ERR_BAD_ADDR_SUFFIX = 11, - TP_ERR_NO_GROUP_NAME = 12, - TP_ERR_GROUP_TOO_LONG = 13, - TP_ERR_BAD_GROUP_NAME = 14, - TP_ERR_NO_EVENT_NAME = 15, - TP_ERR_EVENT_TOO_LONG = 16, - TP_ERR_BAD_EVENT_NAME = 17, - TP_ERR_EVENT_EXIST = 18, - TP_ERR_RETVAL_ON_PROBE = 19, - TP_ERR_BAD_STACK_NUM = 20, - TP_ERR_BAD_ARG_NUM = 21, - TP_ERR_BAD_VAR = 22, - TP_ERR_BAD_REG_NAME = 23, - TP_ERR_BAD_MEM_ADDR = 24, - TP_ERR_BAD_IMM = 25, - TP_ERR_IMMSTR_NO_CLOSE = 26, - TP_ERR_FILE_ON_KPROBE = 27, - TP_ERR_BAD_FILE_OFFS = 28, - TP_ERR_SYM_ON_UPROBE = 29, - TP_ERR_TOO_MANY_OPS = 30, - TP_ERR_DEREF_NEED_BRACE = 31, - TP_ERR_BAD_DEREF_OFFS = 32, - TP_ERR_DEREF_OPEN_BRACE = 33, - TP_ERR_COMM_CANT_DEREF = 34, - TP_ERR_BAD_FETCH_ARG = 35, - TP_ERR_ARRAY_NO_CLOSE = 36, - TP_ERR_BAD_ARRAY_SUFFIX = 37, - TP_ERR_BAD_ARRAY_NUM = 38, - TP_ERR_ARRAY_TOO_BIG = 39, - TP_ERR_BAD_TYPE = 40, - TP_ERR_BAD_STRING = 41, - TP_ERR_BAD_BITFIELD = 42, - TP_ERR_ARG_NAME_TOO_LONG = 43, - TP_ERR_NO_ARG_NAME = 44, - TP_ERR_BAD_ARG_NAME = 45, - TP_ERR_USED_ARG_NAME = 46, - TP_ERR_ARG_TOO_LONG = 47, - TP_ERR_NO_ARG_BODY = 48, - TP_ERR_BAD_INSN_BNDRY = 49, - TP_ERR_FAIL_REG_PROBE = 50, - TP_ERR_DIFF_PROBE_TYPE = 51, - TP_ERR_DIFF_ARG_TYPE = 52, - TP_ERR_SAME_PROBE = 53, -}; - struct trace_kprobe { struct dyn_event devent; struct kretprobe rp; @@ -31852,6 +30775,22 @@ struct trace_kprobe { struct trace_probe tp; }; +enum error_detector { + ERROR_DETECTOR_KFENCE = 0, + ERROR_DETECTOR_KASAN = 1, +}; + +struct trace_event_raw_error_report_template { + struct trace_entry ent; + enum error_detector error_detector; + long unsigned int id; + char __data[0]; +}; + +struct trace_event_data_offsets_error_report_template {}; + +typedef void (*btf_trace_error_report_end)(void *, enum error_detector, long unsigned int); + struct trace_event_raw_cpu { struct trace_entry ent; u32 state; @@ -32087,8 +31026,6 @@ typedef void (*btf_trace_rpm_usage)(void *, struct device *, int); typedef void (*btf_trace_rpm_return_int)(void *, struct device *, long unsigned int, int); -typedef int (*dynevent_check_arg_fn_t)(void *); - struct trace_probe_log { const char *subsystem; const char **argv; @@ -32190,8 +31127,6 @@ struct xdp_cpumap_stats { unsigned int drop; }; -typedef void (*bpf_jit_fill_hole_t)(void *, unsigned int); - struct bpf_prog_dummy { struct bpf_prog prog; }; @@ -32208,8 +31143,6 @@ struct rhash_lock_head {}; struct zero_copy_allocator; -struct page_pool; - struct xdp_mem_allocator { struct xdp_mem_info mem; union { @@ -32337,13 +31270,13 @@ typedef void (*btf_trace_xdp_exception)(void *, const struct net_device *, const 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, const struct bpf_map *, u32); +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, const struct bpf_map *, 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, const struct bpf_map *, 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, const struct bpf_map *, 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); typedef void (*btf_trace_xdp_cpumap_kthread)(void *, int, unsigned int, unsigned int, int, struct xdp_cpumap_stats *); @@ -32369,6 +31302,7 @@ enum bpf_cmd { 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, @@ -32458,6 +31392,7 @@ struct bpf_prog_info { __u64 prog_tags; __u64 run_time_ns; __u64 run_cnt; + __u64 recursion_misses; }; struct bpf_map_info { @@ -32486,9 +31421,7 @@ struct bpf_btf_info { __u32 kernel_btf; }; -struct bpf_spin_lock { - __u32 val; -}; +typedef sockptr_t bpfptr_t; struct bpf_verifier_log { u32 level; @@ -32498,73 +31431,6 @@ struct bpf_verifier_log { u32 len_total; }; -struct bpf_attach_target_info { - struct btf_func_model fmodel; - long int tgt_addr; - const char *tgt_name; - const struct btf_type *tgt_type; -}; - -struct bpf_link_primer { - struct bpf_link *link; - struct file *file; - int fd; - u32 id; -}; - -struct tnum { - u64 value; - u64 mask; -}; - -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, -}; - -struct bpf_tracing_link { - struct bpf_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 btf_member { - __u32 name_off; - __u32 type; - __u32 offset; -}; - -enum btf_func_linkage { - BTF_FUNC_STATIC = 0, - BTF_FUNC_GLOBAL = 1, - BTF_FUNC_EXTERN = 2, -}; - -struct btf_var_secinfo { - __u32 type; - __u32 offset; - __u32 size; -}; - -enum sk_action { - SK_DROP = 0, - SK_PASS = 1, -}; - struct bpf_subprog_info { u32 start; u32 linfo_idx; @@ -32572,6 +31438,7 @@ struct bpf_subprog_info { bool has_tail_call; bool tail_call_reachable; bool has_ld_abs; + bool is_async_cb; }; struct bpf_id_pair { @@ -32600,7 +31467,9 @@ struct bpf_verifier_env { 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; @@ -32631,25 +31500,15 @@ struct bpf_verifier_env { u32 total_states; u32 peak_states; u32 longest_mark_read_walk; + bpfptr_t fd_array; + char type_str_buf[64]; }; -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 *); - int (*init_member)(const struct btf_type *, const struct btf_member *, void *, const void *); - int (*reg)(void *); - void (*unreg)(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; +struct tnum { + u64 value; + u64 mask; }; -typedef u32 (*bpf_convert_ctx_access_t)(enum bpf_access_type, const struct bpf_insn *, struct bpf_insn *, struct bpf_prog *, u32 *); - enum bpf_reg_liveness { REG_LIVE_NONE = 0, REG_LIVE_READ32 = 1, @@ -32664,7 +31523,10 @@ struct bpf_reg_state { s32 off; union { int range; - struct bpf_map *map_ptr; + struct { + struct bpf_map *map_ptr; + u32 map_uid; + }; struct { struct btf *btf; u32 btf_id; @@ -32674,6 +31536,7 @@ struct bpf_reg_state { long unsigned int raw1; long unsigned int raw2; } raw; + u32 subprogno; }; u32 id; u32 ref_obj_id; @@ -32693,34 +31556,49 @@ struct bpf_reg_state { bool precise; }; -enum bpf_stack_slot_type { - STACK_INVALID = 0, - STACK_SPILL = 1, - STACK_MISC = 2, - STACK_ZERO = 3, -}; - -struct bpf_stack_state { - struct bpf_reg_state spilled_ptr; - u8 slot_type[8]; -}; +struct bpf_reference_state; -struct bpf_reference_state { - int id; - int insn_idx; -}; +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; + bool in_async_callback_fn; int acquired_refs; struct bpf_reference_state *refs; int allocated_stack; struct bpf_stack_state *stack; }; +struct bpf_attach_target_info { + struct btf_func_model fmodel; + long int tgt_addr; + const char *tgt_name; + const struct btf_type *tgt_type; +}; + +struct bpf_link_primer { + struct bpf_link *link; + struct file *file; + int fd; + u32 id; +}; + +struct bpf_stack_state { + struct bpf_reg_state spilled_ptr; + u8 slot_type[8]; +}; + +struct bpf_reference_state { + int id; + int insn_idx; + int callback_ref; +}; + struct bpf_idx_pair { u32 prev_idx; u32 idx; @@ -32778,6 +31656,109 @@ struct bpf_insn_aux_data { bool prune_point; }; +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, +}; + +struct bpf_prog_kstats { + u64 nsecs; + u64 cnt; + u64 misses; +}; + +struct bpf_tracing_link { + struct bpf_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; +}; + +typedef u64 (*btf_bpf_sys_bpf)(int, void *, u32); + +typedef u64 (*btf_bpf_sys_close)(u32); + +struct btf_member { + __u32 name_off; + __u32 type; + __u32 offset; +}; + +struct btf_param { + __u32 name_off; + __u32 type; +}; + +enum btf_func_linkage { + BTF_FUNC_STATIC = 0, + BTF_FUNC_GLOBAL = 1, + BTF_FUNC_EXTERN = 2, +}; + +struct btf_var_secinfo { + __u32 type; + __u32 offset; + __u32 size; +}; + +enum sk_action { + SK_DROP = 0, + SK_PASS = 1, +}; + +struct bpf_kfunc_desc { + struct btf_func_model func_model; + u32 func_id; + s32 imm; +}; + +struct bpf_kfunc_desc_tab { + struct bpf_kfunc_desc descs[256]; + u32 nr_descs; +}; + +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 *); + int (*init_member)(const struct btf_type *, const struct btf_member *, void *, const void *); + int (*reg)(void *); + void (*unreg)(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; +}; + +typedef u32 (*bpf_convert_ctx_access_t)(enum bpf_access_type, const struct bpf_insn *, struct bpf_insn *, struct bpf_prog *, u32 *); + +enum bpf_stack_slot_type { + STACK_INVALID = 0, + STACK_SPILL = 1, + STACK_MISC = 2, + STACK_ZERO = 3, +}; + struct bpf_verifier_stack_elem { struct bpf_verifier_state st; int insn_idx; @@ -32800,7 +31781,8 @@ enum { BTF_SOCK_TYPE_TCP6 = 10, BTF_SOCK_TYPE_UDP = 11, BTF_SOCK_TYPE_UDP6 = 12, - MAX_BTF_SOCK_TYPE = 13, + BTF_SOCK_TYPE_UNIX = 13, + MAX_BTF_SOCK_TYPE = 14, }; typedef void (*bpf_insn_print_t)(void *, const char *, ...); @@ -32825,11 +31807,13 @@ struct bpf_call_arg_meta { int mem_size; u64 msize_max_value; int ref_obj_id; + int map_uid; int func_id; struct btf *btf; u32 btf_id; struct btf *ret_btf; u32 ret_btf_id; + u32 subprogno; }; enum reg_arg_type { @@ -32853,6 +31837,8 @@ enum { BEYOND_PKT_END = 4294967294, }; +typedef int (*set_callee_state_fn)(struct bpf_verifier_env *, struct bpf_func_state *, struct bpf_func_state *, int); + enum { REASON_BOUNDS = 4294967295, REASON_TYPE = 4294967294, @@ -32916,11 +31902,20 @@ struct bpf_mount_opts { umode_t mode; }; +struct bpf_spin_lock { + __u32 val; +}; + struct bpf_pidns_info { __u32 pid; __u32 tgid; }; +struct bpf_cg_run_ctx { + struct bpf_run_ctx run_ctx; + const struct bpf_prog_array_item *prog_item; +}; + typedef u64 (*btf_bpf_map_lookup_elem)(struct bpf_map *, void *); typedef u64 (*btf_bpf_map_update_elem)(struct bpf_map *, void *, void *, u64); @@ -32975,6 +31970,33 @@ typedef u64 (*btf_bpf_per_cpu_ptr)(const void *, u32); typedef u64 (*btf_bpf_this_cpu_ptr)(const void *); +struct bpf_bprintf_buffers { + char tmp_bufs[1536]; +}; + +typedef u64 (*btf_bpf_snprintf)(char *, u32, char *, const void *, u32); + +struct bpf_hrtimer { + struct hrtimer timer; + struct bpf_map *map; + struct bpf_prog *prog; + void *callback_fn; + void *value; +}; + +struct bpf_timer_kern { + struct bpf_hrtimer *timer; + struct bpf_spin_lock lock; +}; + +typedef u64 (*btf_bpf_timer_init)(struct bpf_timer_kern *, struct bpf_map *, u64); + +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 *); + union bpf_iter_link_info { struct { __u32 map_fd; @@ -32989,6 +32011,8 @@ typedef void (*bpf_iter_show_fdinfo_t)(const struct bpf_iter_aux_info *, struct typedef int (*bpf_iter_fill_link_info_t)(const struct bpf_iter_aux_info *, struct bpf_link_info *); +typedef const struct bpf_func_proto * (*bpf_iter_get_func_proto_t)(enum bpf_func_id, const struct bpf_prog *); + enum bpf_iter_feature { BPF_ITER_RESCHED = 1, }; @@ -32999,6 +32023,7 @@ struct bpf_iter_reg { 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]; @@ -33032,10 +32057,12 @@ struct bpf_iter_priv_data { u64 session_id; u64 seq_num; bool done_stop; - long: 56; + long: 0; u8 target_private[0]; }; +typedef u64 (*btf_bpf_for_each_map_elem)(struct bpf_map *, void *, void *, u64); + struct bpf_iter_seq_map_info { u32 map_id; }; @@ -33087,6 +32114,33 @@ struct bpf_iter__task_file { }; }; +struct bpf_iter_seq_task_vma_info { + struct bpf_iter_seq_task_common common; + struct task_struct *task; + struct vm_area_struct *vma; + u32 tid; + long unsigned int prev_vm_start; + long unsigned int prev_vm_end; +}; + +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, +}; + +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_prog_info { u32 prog_id; }; @@ -33143,7 +32197,6 @@ struct bpf_lru_list { unsigned int counts[2]; struct list_head *next_inactive_rotation; raw_spinlock_t lock; - long: 32; long: 64; long: 64; long: 64; @@ -33183,7 +32236,6 @@ struct bpf_lru { unsigned int hash_offset; unsigned int nr_scans; bool percpu; - long: 56; long: 64; long: 64; long: 64; @@ -33245,7 +32297,7 @@ struct htab_elem { struct bpf_lru_node lru_node; }; u32 hash; - int: 32; + long: 0; char key[0]; }; @@ -33268,6 +32320,8 @@ struct prog_poke_elem { struct bpf_prog_aux *aux; }; +struct task_struct; + enum bpf_lru_list_type { BPF_LRU_LIST_T_ACTIVE = 0, BPF_LRU_LIST_T_INACTIVE = 1, @@ -33296,7 +32350,6 @@ struct lpm_trie { size_t max_prefixlen; size_t data_size; spinlock_t lock; - long: 32; long: 64; long: 64; long: 64; @@ -33352,7 +32405,6 @@ struct bpf_ringbuf { u64 mask; struct page **pages; int nr_pages; - long: 32; long: 64; long: 64; long: 64; @@ -33361,7 +32413,6 @@ struct bpf_ringbuf { long: 64; long: 64; spinlock_t spinlock; - long: 32; long: 64; long: 64; long: 64; @@ -34911,8 +33962,57 @@ typedef u64 (*btf_bpf_ringbuf_output)(struct bpf_map *, void *, u64, u64); typedef u64 (*btf_bpf_ringbuf_query)(struct bpf_map *, u64); +struct bpf_local_storage_elem { + struct hlist_node map_node; + struct hlist_node snode; + struct bpf_local_storage *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)(struct bpf_map *, struct task_struct *, void *, u64); + +typedef u64 (*btf_bpf_task_storage_delete)(struct bpf_map *, struct task_struct *); + +struct lsm_blob_sizes { + int lbs_cred; + int lbs_file; + int lbs_inode; + int lbs_superblock; + int lbs_sock; + int lbs_ipc; + int lbs_msg_msg; + int lbs_task; +}; + +struct bpf_storage_blob { + struct bpf_local_storage *storage; +}; + +typedef u64 (*btf_bpf_inode_storage_get)(struct bpf_map *, struct inode *, void *, u64); + +typedef u64 (*btf_bpf_inode_storage_delete)(struct bpf_map *, struct inode *); + struct bpf_tramp_progs { - struct bpf_prog *progs[40]; + struct bpf_prog *progs[38]; int nr_progs; }; @@ -34927,11 +34027,6 @@ struct btf_array { __u32 nelems; }; -struct btf_param { - __u32 name_off; - __u32 type; -}; - enum { BTF_VAR_STATIC = 0, BTF_VAR_GLOBAL_ALLOCATED = 1, @@ -34977,7 +34072,7 @@ struct bpf_sock { __u32 src_ip4; __u32 src_ip6[4]; __u32 src_port; - __u32 dst_port; + __be16 dst_port; __u32 dst_ip4; __u32 dst_ip6[4]; __u32 state; @@ -35064,6 +34159,12 @@ struct sk_reuseport_md { __u32 ip_protocol; __u32 bind_inany; __u32 hash; + union { + struct bpf_sock *sk; + }; + union { + struct bpf_sock *migrating_sk; + }; }; struct bpf_sock_addr { @@ -35163,13 +34264,16 @@ struct bpf_sockopt { struct bpf_sk_lookup { union { - struct bpf_sock *sk; + union { + struct bpf_sock *sk; + }; + __u64 cookie; }; __u32 family; __u32 protocol; __u32 remote_ip4; __u32 remote_ip6[4]; - __u32 remote_port; + __be16 remote_port; __u32 local_ip4; __u32 local_ip6[4]; __u32 local_port; @@ -35179,6 +34283,7 @@ 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; @@ -35188,8 +34293,8 @@ struct sk_reuseport_kern { struct bpf_flow_dissector { struct bpf_flow_keys *flow_keys; const struct sk_buff *skb; - void *data; - void *data_end; + const void *data; + const void *data_end; }; struct inet_listen_hashbucket { @@ -35250,24 +34355,6 @@ struct tcp_fastopen_context { struct callback_head rcu; }; -struct in_addr { - __be32 s_addr; -}; - -struct xdp_txq_info { - struct net_device *dev; -}; - -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; -}; - struct bpf_sock_addr_kern { struct sock *sk; struct sockaddr *uaddr; @@ -35346,6 +34433,8 @@ 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; @@ -35354,68 +34443,86 @@ struct sock_reuseport { struct sock *socks[0]; }; -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 *, int *); - void (*addr2sockaddr)(struct sock *, struct sockaddr *); - void (*mtu_reduced)(struct sock *); -}; - -struct tcp_fastopen_cookie { - __le64 val[2]; - s8 len; - bool exp; +struct sk_psock_progs { + struct bpf_prog *msg_parser; + struct bpf_prog *stream_parser; + struct bpf_prog *stream_verdict; + struct bpf_prog *skb_verdict; }; -enum tcp_synack_type { - TCP_SYNACK_NORMAL = 0, - TCP_SYNACK_FASTOPEN = 1, - TCP_SYNACK_COOKIE = 2, +struct strp_stats { + long long unsigned int msgs; + long long unsigned int bytes; + unsigned int mem_fail; + unsigned int need_more_hdr; + unsigned int msg_too_big; + unsigned int msg_timeouts; + unsigned int bad_hdr_len; }; -struct tcp_md5sig_key; +struct strparser; -struct tcp_request_sock_ops { - u16 mss_clamp; - struct tcp_md5sig_key * (*req_md5_lookup)(const struct sock *, const struct sock *); - int (*calc_md5_hash)(char *, const struct tcp_md5sig_key *, const struct sock *, const struct sk_buff *); - __u32 (*cookie_init_seq)(const struct sk_buff *, __u16 *); - 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 strp_callbacks { + int (*parse_msg)(struct strparser *, struct sk_buff *); + void (*rcv_msg)(struct strparser *, struct sk_buff *); + int (*read_sock_done)(struct strparser *, int); + void (*abort_parser)(struct strparser *, int); + void (*lock)(struct strparser *); + void (*unlock)(struct strparser *); }; -union tcp_md5_addr { - struct in_addr a4; - struct in6_addr a6; +struct strparser { + struct sock *sk; + u32 stopped: 1; + u32 paused: 1; + u32 aborted: 1; + u32 interrupted: 1; + u32 unrecov_intr: 1; + struct sk_buff **skb_nextp; + struct sk_buff *skb_head; + unsigned int need_bytes; + struct delayed_work msg_timer_work; + struct work_struct work; + struct strp_stats stats; + struct strp_callbacks cb; }; -struct tcp_md5sig_key { - struct hlist_node node; - u8 keylen; - u8 family; - u8 prefixlen; - union tcp_md5_addr addr; - int l3index; - u8 key[80]; - struct callback_head rcu; +struct sk_psock_work_state { + struct sk_buff *skb; + u32 len; + u32 off; }; -struct ip_rt_acct { - __u32 o_bytes; - __u32 o_packets; - __u32 i_bytes; - __u32 i_packets; +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 strparser strp; + struct sk_buff_head ingress_skb; + struct list_head ingress_msg; + spinlock_t ingress_lock; + long unsigned int 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 int); + 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 work_struct work; + struct rcu_work rwork; }; struct inet_ehash_bucket { @@ -35444,6 +34551,7 @@ struct rate_sample { int losses; u32 acked_sacked; u32 prior_in_flight; + u32 last_end_seq; bool is_app_limited; bool is_retrans; bool is_ack_delayed; @@ -35603,6 +34711,10 @@ struct bpf_ctx_convert { 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; }; enum { @@ -35634,7 +34746,9 @@ enum { __ctx_convertBPF_PROG_TYPE_SK_LOOKUP = 25, __ctx_convertBPF_PROG_TYPE_STRUCT_OPS = 26, __ctx_convertBPF_PROG_TYPE_EXT = 27, - __ctx_convert_unused = 28, + __ctx_convertBPF_PROG_TYPE_LSM = 28, + __ctx_convertBPF_PROG_TYPE_SYSCALL = 29, + __ctx_convert_unused = 30, }; enum bpf_struct_walk_result { @@ -35649,11 +34763,38 @@ struct btf_show_snprintf { int len; }; +enum { + BTF_MODULE_F_LIVE = 1, +}; + 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 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; + u32 image_off; + struct bpf_ksym ksym; +}; + +enum { + BPF_F_BROADCAST = 8, + BPF_F_EXCLUDE_INGRESS = 16, }; struct bpf_devmap_val { @@ -35686,11 +34827,47 @@ enum net_device_flags { IFF_ECHO = 262144, }; +enum netdev_priv_flags { + IFF_802_1Q_VLAN = 1, + IFF_EBRIDGE = 2, + IFF_BONDING = 4, + IFF_ISATAP = 8, + IFF_WAN_HDLC = 16, + IFF_XMIT_DST_RELEASE = 32, + IFF_DONT_BRIDGE = 64, + IFF_DISABLE_NETPOLL = 128, + IFF_MACVLAN_PORT = 256, + IFF_BRIDGE_PORT = 512, + IFF_OVS_DATAPATH = 1024, + IFF_TX_SKB_SHARING = 2048, + IFF_UNICAST_FLT = 4096, + IFF_TEAM_PORT = 8192, + IFF_SUPP_NOFCS = 16384, + IFF_LIVE_ADDR_CHANGE = 32768, + IFF_MACVLAN = 65536, + IFF_XMIT_DST_RELEASE_PERM = 131072, + IFF_L3MDEV_MASTER = 262144, + IFF_NO_QUEUE = 524288, + IFF_OPENVSWITCH = 1048576, + IFF_L3MDEV_SLAVE = 2097152, + IFF_TEAM = 4194304, + IFF_RXFH_CONFIGURED = 8388608, + IFF_PHONY_HEADROOM = 16777216, + IFF_MACSEC = 33554432, + IFF_NO_RX_HANDLER = 67108864, + IFF_FAILOVER = 134217728, + IFF_FAILOVER_SLAVE = 268435456, + IFF_L3MDEV_RX_HANDLER = 536870912, + IFF_LIVE_RENAME_OK = 1073741824, + IFF_TX_SKB_NO_LINEAR = 2147483648, +}; + 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; }; @@ -35736,6 +34913,25 @@ struct netdev_notifier_info { struct netlink_ext_ack *extack; }; +struct bpf_nh_params { + u32 nh_family; + union { + u32 ipv4_nh; + struct in6_addr ipv6_nh; + }; +}; + +struct bpf_redirect_info { + u32 flags; + u32 tgt_index; + void *tgt_value; + struct bpf_map *map; + u32 map_id; + enum bpf_map_type map_type; + u32 kern_flags; + struct bpf_nh_params nh; +}; + struct bpf_dtab; struct bpf_dtab_netdev { @@ -35756,7 +34952,6 @@ struct bpf_dtab { spinlock_t index_lock; unsigned int items; u32 n_buckets; - long: 32; long: 64; long: 64; }; @@ -35769,59 +34964,6 @@ struct bpf_cpumap_val { } bpf_prog; }; -typedef struct bio_vec skb_frag_t; - -struct skb_shared_hwtstamps { - ktime_t hwtstamp; -}; - -struct skb_shared_info { - __u8 __unused; - __u8 meta_len; - __u8 nr_frags; - __u8 tx_flags; - short unsigned int gso_size; - short unsigned int gso_segs; - struct sk_buff *frag_list; - struct skb_shared_hwtstamps hwtstamps; - unsigned int gso_type; - u32 tskey; - atomic_t dataref; - void *destructor_arg; - skb_frag_t frags[17]; -}; - -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: 32; - 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_entry; struct xdp_bulk_queue { @@ -35859,27 +35001,6 @@ struct bpf_cpu_map { long: 64; }; -struct bpf_local_storage_elem { - struct hlist_node map_node; - struct hlist_node snode; - struct bpf_local_storage *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]; -}; - struct rhlist_head { struct rhash_head rhead; struct rhlist_head *next; @@ -35901,6 +35022,8 @@ struct bpf_offload_dev { void *priv; }; +typedef struct ns_common *ns_get_path_helper_t(void *); + struct bpf_offload_netdev { struct rhash_head l; struct net_device *netdev; @@ -35951,46 +35074,6 @@ enum { BPF_F_USER_BUILD_ID = 2048, }; -typedef __u32 Elf32_Addr; - -typedef __u16 Elf32_Half; - -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; -}; - -typedef struct elf32_hdr Elf32_Ehdr; - -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; -}; - -typedef struct elf32_phdr Elf32_Phdr; - -typedef struct elf32_note Elf32_Nhdr; - enum perf_callchain_context { PERF_CONTEXT_HV = 4294967264, PERF_CONTEXT_KERNEL = 4294967168, @@ -35999,7 +35082,7 @@ enum perf_callchain_context { PERF_CONTEXT_GUEST_KERNEL = 4294965120, PERF_CONTEXT_GUEST_USER = 4294964736, PERF_CONTEXT_MAX = 4294963201, -}; +} __attribute__((mode(word))); struct stack_map_bucket { struct pcpu_freelist_node fnode; @@ -36052,7 +35135,6 @@ struct qdisc_skb_cb { u16 tc_classid; }; unsigned char data[20]; - u16 mru; }; struct bpf_skb_data_end { @@ -36061,6 +35143,10 @@ struct bpf_skb_data_end { void *data_end; }; +struct bpf_sockopt_buf { + u8 data[32]; +}; + enum { TCPF_ESTABLISHED = 2, TCPF_SYN_SENT = 4, @@ -36084,6 +35170,8 @@ typedef u64 (*btf_bpf_sysctl_get_new_value)(struct bpf_sysctl_kern *, char *, si 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 *); + enum sock_type { SOCK_STREAM = 1, SOCK_DGRAM = 2, @@ -36181,11 +35269,18 @@ struct bpf_struct_ops_value { 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_prog **progs; void *image; struct bpf_struct_ops_value *uvalue; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; struct bpf_struct_ops_value kvalue; }; @@ -36200,13 +35295,56 @@ struct bpf_struct_ops_tcp_congestion_ops { long: 64; long: 64; struct tcp_congestion_ops data; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; }; +struct sembuf { + short unsigned int sem_num; + short int sem_op; + short int sem_flg; +}; + +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, +}; + +struct __key_reference_with_attributes; + +typedef struct __key_reference_with_attributes *key_ref_t; + +struct xfrm_sec_ctx { + __u8 ctx_doi; + __u8 ctx_alg; + __u16 ctx_len; + __u32 ctx_sid; + char ctx_str[0]; +}; + +struct xfrm_user_sec_ctx { + __u16 len; + __u16 exttype; + __u8 ctx_alg; + __u8 ctx_doi; + __u16 ctx_len; +}; + +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); + enum perf_branch_sample_type { PERF_SAMPLE_BRANCH_USER = 1, PERF_SAMPLE_BRANCH_KERNEL = 2, @@ -36393,6 +35531,11 @@ enum event_type_t { EVENT_ALL = 3, }; +struct __group_key { + int cpu; + struct cgroup *cgroup; +}; + struct stop_event_data { struct perf_event *event; unsigned int restart; @@ -36472,6 +35615,8 @@ struct perf_mmap_event { u64 ino_generation; u32 prot; u32 flags; + u8 build_id[20]; + u32 build_id_size; struct { struct perf_event_header header; u32 pid; @@ -36618,7 +35763,7 @@ struct xol_area { long unsigned int vaddr; }; -typedef long unsigned int vm_flags_t; +typedef int filler_t(void *, struct page *); struct page_vma_mapped_walk { struct page *page; @@ -36666,6 +35811,11 @@ struct delayed_uprobe { struct mm_struct *mm; }; +struct __uprobe_key { + struct inode *inode; + loff_t offset; +}; + struct map_info { struct map_info *next; struct mm_struct *mm; @@ -36699,7 +35849,7 @@ struct parallel_data { struct padata_shell *ps; struct padata_list *reorder_list; struct padata_serial_queue *squeue; - atomic_t refcnt; + refcount_t refcnt; unsigned int seq_nr; unsigned int processed; int cpu; @@ -36713,7 +35863,6 @@ struct parallel_data { long: 64; long: 64; spinlock_t lock; - long: 32; long: 64; long: 64; long: 64; @@ -36898,7 +36047,7 @@ struct watch_type_filter { struct watch_filter { union { struct callback_head rcu; - long unsigned int type_filter[2]; + long unsigned int type_filter[1]; }; u32 nr_filters; struct watch_type_filter filters[0]; @@ -36935,10 +36084,6 @@ struct watch { struct pkcs7_message; -struct __key_reference_with_attributes; - -typedef struct __key_reference_with_attributes *key_ref_t; - typedef int __kernel_rwf_t; enum positive_aop_returns { @@ -36946,12 +36091,17 @@ enum positive_aop_returns { AOP_TRUNCATED_PAGE = 524289, }; +struct vm_event_state { + long unsigned int event[99]; +}; + enum iter_type { - ITER_IOVEC = 4, - ITER_KVEC = 8, - ITER_BVEC = 16, - ITER_PIPE = 32, - ITER_DISCARD = 64, + ITER_IOVEC = 0, + ITER_KVEC = 1, + ITER_BVEC = 2, + ITER_PIPE = 3, + ITER_XARRAY = 4, + ITER_DISCARD = 5, }; enum mapping_flags { @@ -37086,11 +36236,14 @@ struct kmem_cache { struct kmem_cache_node *node[64]; }; +typedef struct {} local_lock_t; + struct kmem_cache_cpu { void **freelist; long unsigned int tid; struct page *page; struct page *partial; + local_lock_t lock; }; struct kmem_cache_node { @@ -37102,17 +36255,11 @@ struct kmem_cache_node { struct list_head full; }; -enum slab_state { - DOWN = 0, - PARTIAL = 1, - PARTIAL_NODE = 2, - UP = 3, - FULL = 4, -}; - -struct kmalloc_info_struct { - const char *name[3]; - unsigned int size; +struct zap_details { + struct address_space *check_mapping; + long unsigned int first_index; + long unsigned int last_index; + struct page *single_page; }; enum oom_constraint { @@ -37332,13 +36479,13 @@ struct dirty_throttle_control { long unsigned int pos_ratio; }; -typedef struct {} local_lock_t; +typedef void compound_page_dtor(struct page *); struct trace_event_raw_mm_lru_insertion { struct trace_entry ent; struct page *page; long unsigned int pfn; - int lru; + enum lru_list lru; long unsigned int flags; char __data[0]; }; @@ -37354,7 +36501,7 @@ struct trace_event_data_offsets_mm_lru_insertion {}; struct trace_event_data_offsets_mm_lru_activate {}; -typedef void (*btf_trace_mm_lru_insertion)(void *, struct page *, int); +typedef void (*btf_trace_mm_lru_insertion)(void *, struct page *); typedef void (*btf_trace_mm_lru_activate)(void *, struct page *); @@ -37382,6 +36529,11 @@ enum pgdat_flags { PGDAT_RECLAIM_LOCKED = 2, }; +enum zone_flags { + ZONE_BOOSTED_WATERMARK = 0, + ZONE_RECLAIM_ACTIVE = 1, +}; + struct reclaim_stat { unsigned int nr_dirty; unsigned int nr_unqueued_dirty; @@ -37395,16 +36547,28 @@ struct reclaim_stat { unsigned int nr_lazyfree_fail; }; +struct mem_cgroup_reclaim_cookie { + pg_data_t *pgdat; + unsigned int generation; +}; + enum ttu_flags { - TTU_MIGRATION = 1, - TTU_MUNLOCK = 2, TTU_SPLIT_HUGE_PMD = 4, TTU_IGNORE_MLOCK = 8, TTU_SYNC = 16, TTU_IGNORE_HWPOISON = 32, TTU_BATCH_FLUSH = 64, TTU_RMAP_LOCKED = 128, - TTU_SPLIT_FREEZE = 256, +}; + +typedef struct page *new_page_t(struct page *, long unsigned int); + +typedef void free_page_t(struct page *, long unsigned int); + +struct migration_target_control { + int nid; + nodemask_t *nmask; + gfp_t gfp_mask; }; struct trace_event_raw_mm_vmscan_kswapd_sleep { @@ -37477,7 +36641,7 @@ struct trace_event_raw_mm_vmscan_lru_isolate { long unsigned int nr_scanned; long unsigned int nr_skipped; long unsigned int nr_taken; - isolate_mode_t isolate_mode; + unsigned int isolate_mode; int lru; char __data[0]; }; @@ -37519,19 +36683,6 @@ struct trace_event_raw_mm_vmscan_lru_shrink_active { char __data[0]; }; -struct trace_event_raw_mm_vmscan_inactive_list_is_low { - struct trace_entry ent; - int nid; - int reclaim_idx; - long unsigned int total_inactive; - long unsigned int inactive; - long unsigned int total_active; - long unsigned int active; - long unsigned int ratio; - int reclaim_flags; - char __data[0]; -}; - struct trace_event_raw_mm_vmscan_node_reclaim_begin { struct trace_entry ent; int nid; @@ -37562,8 +36713,6 @@ 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_inactive_list_is_low {}; - struct trace_event_data_offsets_mm_vmscan_node_reclaim_begin {}; typedef void (*btf_trace_mm_vmscan_kswapd_sleep)(void *, int); @@ -37596,8 +36745,6 @@ typedef void (*btf_trace_mm_vmscan_lru_shrink_inactive)(void *, int, long unsign typedef void (*btf_trace_mm_vmscan_lru_shrink_active)(void *, int, long unsigned int, long unsigned int, long unsigned int, long unsigned int, int, int); -typedef void (*btf_trace_mm_vmscan_inactive_list_is_low)(void *, int, int, long unsigned int, long unsigned int, long unsigned int, long unsigned int, long unsigned 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 *, long unsigned int); @@ -37620,6 +36767,7 @@ struct scan_control { 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; @@ -37671,6 +36819,10 @@ enum transparent_hugepage_flag { TRANSPARENT_HUGEPAGE_USE_ZERO_PAGE_FLAG = 8, }; +struct xattr; + +typedef int (*initxattrs)(struct inode *, const struct xattr *, void *); + struct xattr { const char *name; void *value; @@ -37688,7 +36840,8 @@ enum { MPOL_BIND = 2, MPOL_INTERLEAVE = 3, MPOL_LOCAL = 4, - MPOL_MAX = 5, + MPOL_PREFERRED_MANY = 5, + MPOL_MAX = 6, }; struct shared_policy { @@ -37714,6 +36867,7 @@ struct shmem_inode_info { long unsigned int flags; long unsigned int alloced; long unsigned int swapped; + long unsigned int fallocend; struct list_head shrinklist; struct list_head swaplist; struct shared_policy policy; @@ -37727,7 +36881,7 @@ struct shmem_sb_info { struct percpu_counter used_blocks; long unsigned int max_inodes; long unsigned int free_inodes; - spinlock_t stat_lock; + raw_spinlock_t stat_lock; umode_t mode; unsigned char huge; kuid_t uid; @@ -37743,11 +36897,10 @@ struct shmem_sb_info { enum sgp_type { SGP_READ = 0, - SGP_CACHE = 1, - SGP_NOHUGE = 2, - SGP_HUGE = 3, - SGP_WRITE = 4, - SGP_FALLOC = 5, + SGP_NOALLOC = 1, + SGP_CACHE = 2, + SGP_WRITE = 3, + SGP_FALLOC = 4, }; enum fid_type { @@ -37911,13 +37064,6 @@ typedef void (*btf_trace_percpu_create_chunk)(void *, void *); typedef void (*btf_trace_percpu_destroy_chunk)(void *, void *); -enum pcpu_chunk_type { - PCPU_CHUNK_ROOT = 0, - PCPU_CHUNK_MEMCG = 1, - PCPU_NR_CHUNK_TYPES = 2, - PCPU_FAIL_ALLOC = 2, -}; - struct pcpu_block_md { int scan_hint; int scan_hint_start; @@ -37939,6 +37085,7 @@ struct pcpu_chunk { struct pcpu_block_md *md_blocks; void *data; bool immutable; + bool isolated; int start_offset; int end_offset; struct obj_cgroup **obj_cgroups; @@ -37969,13 +37116,21 @@ struct trace_event_raw_kmem_alloc_node { char __data[0]; }; -struct trace_event_raw_kmem_free { +struct trace_event_raw_kfree { struct trace_entry ent; long unsigned int call_site; const void *ptr; char __data[0]; }; +struct trace_event_raw_kmem_cache_free { + struct trace_entry ent; + long unsigned int call_site; + const void *ptr; + u32 __data_loc_name; + char __data[0]; +}; + struct trace_event_raw_mm_page_free { struct trace_entry ent; long unsigned int pfn; @@ -38038,7 +37193,11 @@ struct trace_event_data_offsets_kmem_alloc {}; struct trace_event_data_offsets_kmem_alloc_node {}; -struct trace_event_data_offsets_kmem_free {}; +struct trace_event_data_offsets_kfree {}; + +struct trace_event_data_offsets_kmem_cache_free { + u32 name; +}; struct trace_event_data_offsets_mm_page_free {}; @@ -38064,7 +37223,7 @@ typedef void (*btf_trace_kmem_cache_alloc_node)(void *, long unsigned int, const typedef void (*btf_trace_kfree)(void *, long unsigned int, const void *); -typedef void (*btf_trace_kmem_cache_free)(void *, long unsigned int, const void *); +typedef void (*btf_trace_kmem_cache_free)(void *, long unsigned int, const void *, const char *); typedef void (*btf_trace_mm_page_free)(void *, struct page *, unsigned int); @@ -38080,6 +37239,19 @@ typedef void (*btf_trace_mm_page_alloc_extfrag)(void *, struct page *, int, int, typedef void (*btf_trace_rss_stat)(void *, struct mm_struct *, int, long int); +enum slab_state { + DOWN = 0, + PARTIAL = 1, + PARTIAL_NODE = 2, + UP = 3, + FULL = 4, +}; + +struct kmalloc_info_struct { + const char *name[4]; + unsigned int size; +}; + struct slabinfo { long unsigned int active_objs; long unsigned int num_objs; @@ -38093,6 +37265,17 @@ struct slabinfo { unsigned int cache_order; }; +struct kmem_obj_info { + void *kp_ptr; + struct page *kp_page; + void *kp_objp; + long unsigned int kp_data_offset; + struct kmem_cache *kp_slab_cache; + void *kp_ret; + void *kp_stack[16]; + void *kp_free_stack[16]; +}; + enum pageblock_bits { PB_migrate = 0, PB_migrate_end = 2, @@ -38100,6 +37283,14 @@ enum pageblock_bits { NR_PAGEBLOCK_BITS = 4, }; +struct node___2 { + struct device dev; + struct list_head access_list; + struct work_struct node_work; + struct list_head cache_attrs; + struct device *cache_dev; +}; + struct alloc_context { struct zonelist *zonelist; nodemask_t *nodemask; @@ -38268,12 +37459,6 @@ typedef struct { long unsigned int pd; } hugepd_t; -struct migration_target_control { - int nid; - nodemask_t *nmask; - gfp_t gfp_mask; -}; - struct follow_page_context { struct dev_pagemap *pgmap; unsigned int page_mask; @@ -38322,21 +37507,18 @@ typedef void (*btf_trace_mmap_lock_acquire_returned)(void *, struct mm_struct *, typedef void (*btf_trace_mmap_lock_released)(void *, struct mm_struct *, const char *, bool); +struct memcg_path { + local_lock_t lock; + char *buf; + local_t buf_idx; +}; + typedef struct { u64 val; } pfn_t; typedef unsigned int pgtbl_mod_mask; -struct zap_details { - struct address_space *check_mapping; - long unsigned int first_index; - long unsigned int last_index; - struct page *single_page; -}; - -typedef int (*pte_fn_t)(pte_t *, long unsigned int, void *); - enum { SWP_USED = 1, SWP_WRITEOK = 2, @@ -38351,7 +37533,6 @@ enum { SWP_PAGE_DISCARD = 1024, SWP_STABLE_WRITES = 2048, SWP_SYNCHRONOUS_IO = 4096, - SWP_VALID = 8192, SWP_SCANNING = 16384, }; @@ -38427,6 +37608,7 @@ enum pgt_entry { NORMAL_PMD = 0, HPAGE_PMD = 1, NORMAL_PUD = 2, + HPAGE_PUD = 3, }; struct rmap_walk_control { @@ -38444,6 +37626,13 @@ struct page_referenced_arg { struct mem_cgroup *memcg; }; +struct make_exclusive_args { + struct mm_struct *mm; + long unsigned int address; + void *owner; + bool valid; +}; + struct vmap_area { long unsigned int va_start; long unsigned int va_end; @@ -38493,10 +37682,6 @@ struct page_frag_cache { bool pfmemalloc; }; -enum zone_flags { - ZONE_BOOSTED_WATERMARK = 0, -}; - enum mminit_level { MMINIT_WARNING = 0, MMINIT_VERIFY = 1, @@ -38505,6 +37690,10 @@ enum mminit_level { typedef int fpi_t; +struct pagesets { + local_lock_t lock; +}; + struct pcpu_drain { struct zone *zone; struct work_struct work; @@ -38516,6 +37705,72 @@ struct mminit_pfnnid_cache { int last_nid; }; +enum { + MMOP_OFFLINE = 0, + MMOP_ONLINE = 1, + MMOP_ONLINE_KERNEL = 2, + MMOP_ONLINE_MOVABLE = 3, +}; + +typedef int mhp_t; + +typedef void (*online_page_callback_t)(struct page *, unsigned int); + +struct memory_group { + int nid; + struct list_head memory_blocks; + long unsigned int present_kernel_pages; + long unsigned int present_movable_pages; + bool is_dynamic; + union { + struct { + long unsigned int max_pages; + } s; + struct { + long unsigned int unit_pages; + } d; + }; +}; + +struct memory_block { + long unsigned int start_section_nr; + long unsigned int state; + int online_type; + int nid; + struct device dev; + long unsigned int nr_vmemmap_pages; + struct memory_group *group; + struct list_head group_next; +}; + +typedef int (*walk_memory_blocks_func_t)(struct memory_block *, void *); + +typedef int (*walk_memory_groups_func_t)(struct memory_group *, void *); + +enum hugetlb_page_flags { + HPG_restore_reserve = 0, + HPG_migratable = 1, + HPG_temporary = 2, + HPG_freed = 3, + HPG_vmemmap_optimized = 4, + __NR_HPAGEFLAGS = 5, +}; + +enum { + ONLINE_POLICY_CONTIG_ZONES = 0, + ONLINE_POLICY_AUTO_MOVABLE = 1, +}; + +struct auto_movable_stats { + long unsigned int kernel_early_pages; + long unsigned int movable_pages; +}; + +struct auto_movable_group_stats { + long unsigned int movable_pages; + long unsigned int req_kernel_early_pages; +}; + enum mf_flags { MF_COUNT_INCREASED = 1, MF_ACTION_REQUIRED = 2, @@ -38539,9 +37794,12 @@ enum { BIO_THROTTLED = 7, BIO_TRACE_COMPLETION = 8, BIO_CGROUP_ACCT = 9, - BIO_TRACKED = 10, - BIO_ZONE_WRITE_LOCKED = 11, - BIO_FLAG_LAST = 12, + BIO_QOS_THROTTLED = 10, + BIO_QOS_MERGED = 11, + BIO_REMAPPED = 12, + BIO_ZONE_WRITE_LOCKED = 13, + BIO_PERCPU_CACHE = 14, + BIO_FLAG_LAST = 15, }; struct vma_swap_readahead { @@ -38551,6 +37809,12 @@ struct vma_swap_readahead { pte_t *ptes; }; +enum { + PERCPU_REF_INIT_ATOMIC = 1, + PERCPU_REF_INIT_DEAD = 2, + PERCPU_REF_ALLOW_REINIT = 4, +}; + union swap_header { struct { char reserved[4086]; @@ -38632,7 +37896,6 @@ struct acomp_req { unsigned int slen; unsigned int dlen; u32 flags; - long: 32; long: 64; long: 64; long: 64; @@ -38647,7 +37910,6 @@ struct crypto_acomp { int (*decompress)(struct acomp_req *); void (*dst_free)(struct scatterlist *); unsigned int reqsize; - long: 32; long: 64; long: 64; long: 64; @@ -38733,6 +37995,22 @@ enum string_size_units { STRING_UNITS_2 = 1, }; +typedef void (*node_registration_func_t)(struct node___2 *); + +enum mcopy_atomic_mode { + MCOPY_ATOMIC_NORMAL = 0, + MCOPY_ATOMIC_ZEROPAGE = 1, + MCOPY_ATOMIC_CONTINUE = 2, +}; + +enum { + SUBPAGE_INDEX_SUBPOOL = 1, + SUBPAGE_INDEX_CGROUP = 2, + SUBPAGE_INDEX_CGROUP_RSVD = 3, + __MAX_CGROUP_SUBPAGE_INDEX = 3, + __NR_USED_SUBPAGE = 4, +}; + struct resv_map { struct kref refs; spinlock_t lock; @@ -38778,6 +38056,7 @@ enum vma_resv_mode { VMA_COMMIT_RESV = 1, VMA_END_RESV = 2, VMA_ADD_RESV = 3, + VMA_DEL_RESV = 4, }; struct node_hstate { @@ -38811,6 +38090,14 @@ struct queue_pages { struct vm_area_struct *first; }; +struct vmemmap_remap_walk { + void (*remap_pte)(pte_t *, long unsigned int, struct vmemmap_remap_walk *); + long unsigned int nr_walked; + struct page *reuse_page; + long unsigned int reuse_addr; + struct list_head *vmemmap_pages; +}; + struct mmu_notifier_subscriptions { struct hlist_head list; bool has_itree; @@ -38948,6 +38235,12 @@ enum track_item { TRACK_FREE = 1, }; +struct slub_flush_work { + struct work_struct work; + struct kmem_cache *s; + bool skip; +}; + struct detached_freelist { struct page *page; void *tail; @@ -38972,6 +38265,7 @@ struct loc_track { long unsigned int max; long unsigned int count; struct location *loc; + loff_t idx; }; enum slab_stat_type { @@ -39001,33 +38295,61 @@ enum slab_modes { M_FREE = 3, }; -enum { - MEMORY_HOTPLUG_MIN_BOOTMEM_TYPE = 12, - SECTION_INFO = 12, - MIX_SECTION_INFO = 13, - NODE_INFO = 14, - MEMORY_HOTPLUG_MAX_BOOTMEM_TYPE = 14, +struct kcsan_scoped_access {}; + +enum kfence_object_state { + KFENCE_OBJECT_UNUSED = 0, + KFENCE_OBJECT_ALLOCATED = 1, + KFENCE_OBJECT_FREED = 2, }; -enum { - MMOP_OFFLINE = 0, - MMOP_ONLINE = 1, - MMOP_ONLINE_KERNEL = 2, - MMOP_ONLINE_MOVABLE = 3, +struct kfence_track { + pid_t pid; + int cpu; + u64 ts_nsec; + int num_stack_entries; + long unsigned int stack_entries[64]; }; -typedef int mhp_t; +struct kfence_metadata { + struct list_head list; + struct callback_head callback_head; + raw_spinlock_t lock; + enum kfence_object_state state; + long unsigned int addr; + size_t size; + struct kmem_cache *cache; + long unsigned int unprotected_page; + struct kfence_track alloc_track; + struct kfence_track free_track; + u32 alloc_stack_hash; + struct obj_cgroup *objcg; +}; -typedef void (*online_page_callback_t)(struct page *, unsigned int); +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 memory_block { - long unsigned int start_section_nr; - long unsigned int state; - int online_type; - int nid; - struct device dev; +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, }; +typedef __kernel_long_t __kernel_ptrdiff_t; + +typedef __kernel_ptrdiff_t ptrdiff_t; + struct buffer_head; typedef void bh_end_io_t(struct buffer_head *, int); @@ -39048,10 +38370,6 @@ struct buffer_head { spinlock_t b_uptodate_lock; }; -typedef struct page *new_page_t(struct page *, long unsigned int); - -typedef void free_page_t(struct page *, long unsigned int); - enum migrate_vma_direction { MIGRATE_VMA_SELECT_SYSTEM = 1, MIGRATE_VMA_SELECT_DEVICE_PRIVATE = 2, @@ -39101,10 +38419,21 @@ struct trace_event_raw_mm_migrate_pages { 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_data_offsets_mm_migrate_pages {}; +struct trace_event_data_offsets_mm_migrate_pages_start {}; + typedef void (*btf_trace_mm_migrate_pages)(void *, long unsigned int, long unsigned int, long unsigned int, long unsigned int, long unsigned int, enum migrate_mode, int); +typedef void (*btf_trace_mm_migrate_pages_start)(void *, enum migrate_mode, int); + enum scan_result { SCAN_FAIL = 0, SCAN_SUCCEED = 1, @@ -39204,11 +38533,6 @@ struct khugepaged_scan { long unsigned int address; }; -struct mem_cgroup_reclaim_cookie { - pg_data_t *pgdat; - unsigned int generation; -}; - struct mem_cgroup_tree_per_node { struct rb_root rb_root; struct rb_node *rb_rightmost; @@ -39259,7 +38583,6 @@ enum res_type { struct memory_stat { const char *name; - unsigned int ratio; unsigned int idx; }; @@ -39275,11 +38598,19 @@ enum oom_status { OOM_SKIPPED = 3, }; +struct obj_stock { + 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 memcg_stock_pcp { struct mem_cgroup *cached; unsigned int nr_pages; - struct obj_cgroup *cached_objcg; - unsigned int nr_bytes; + struct obj_stock task_obj; + struct obj_stock irq_obj; struct work_struct work; long unsigned int flags; }; @@ -39306,7 +38637,7 @@ enum mc_target_type { struct uncharge_gather { struct mem_cgroup *memcg; - long unsigned int nr_pages; + long unsigned int nr_memory; long unsigned int pgpgout; long unsigned int nr_kmem; struct page *dummy_page; @@ -39409,11 +38740,17 @@ struct to_kill { short int size_shift; }; +struct hwp_walk { + struct to_kill tk; + long unsigned int pfn; + int flags; +}; + struct page_state { long unsigned int mask; long unsigned int res; enum mf_action_page_type type; - int (*action)(struct page *, long unsigned int); + int (*action)(struct page_state *, struct page *); }; struct memory_failure_entry { @@ -39474,6 +38811,7 @@ struct zpool { void *pool; const struct zpool_ops *ops; bool evictable; + bool can_sleep_mapped; struct list_head list; }; @@ -39488,6 +38826,7 @@ struct zpool_driver { int (*malloc)(void *, size_t, gfp_t, long unsigned int *); void (*free)(void *, long unsigned int); int (*shrink)(void *, unsigned int, unsigned int *); + bool sleep_mapped; void * (*map)(void *, long unsigned int, enum zpool_mapmode); void (*unmap)(void *, long unsigned int); u64 (*total_size)(void *); @@ -39503,8 +38842,10 @@ struct zbud_ops { struct zbud_pool { spinlock_t lock; - struct list_head unbuddied[63]; - struct list_head buddied; + union { + struct list_head buddied; + struct list_head unbuddied[63]; + }; struct list_head lru; u64 pages_nr; const struct zbud_ops *ops; @@ -39615,39 +38956,57 @@ struct zs_compact_control { int obj_idx; }; -struct cma { - long unsigned int base_pfn; - long unsigned int count; - long unsigned int *bitmap; - unsigned int order_per_bit; - struct mutex lock; - char name[64]; -}; - -struct trace_event_raw_cma_alloc { +struct trace_event_raw_cma_alloc_class { struct trace_entry ent; + u32 __data_loc_name; long unsigned int pfn; const struct page *page; - unsigned int count; + long unsigned int count; unsigned int align; char __data[0]; }; struct trace_event_raw_cma_release { struct trace_entry ent; + u32 __data_loc_name; long unsigned int pfn; const struct page *page; - unsigned int count; + long unsigned int count; char __data[0]; }; -struct trace_event_data_offsets_cma_alloc {}; +struct trace_event_raw_cma_alloc_start { + struct trace_entry ent; + u32 __data_loc_name; + long unsigned int count; + unsigned int align; + char __data[0]; +}; + +struct trace_event_data_offsets_cma_alloc_class { + u32 name; +}; + +struct trace_event_data_offsets_cma_release { + u32 name; +}; + +struct trace_event_data_offsets_cma_alloc_start { + u32 name; +}; + +typedef void (*btf_trace_cma_release)(void *, const char *, long unsigned int, const struct page *, long unsigned int); -struct trace_event_data_offsets_cma_release {}; +typedef void (*btf_trace_cma_alloc_start)(void *, const char *, long unsigned int, unsigned int); -typedef void (*btf_trace_cma_alloc)(void *, long unsigned int, const struct page *, unsigned int, unsigned int); +typedef void (*btf_trace_cma_alloc_finish)(void *, const char *, long unsigned int, const struct page *, long unsigned int, unsigned int); -typedef void (*btf_trace_cma_release)(void *, long unsigned int, const struct page *, unsigned int); +typedef void (*btf_trace_cma_alloc_busy_retry)(void *, const char *, long unsigned int, const struct page *, long unsigned int, unsigned int); + +struct cma_kobject { + struct kobject kobj; + struct cma *cma; +}; struct balloon_dev_info { long unsigned int isolated_pages; @@ -39657,14 +39016,6 @@ struct balloon_dev_info { struct inode *inode; }; -struct frame_vector { - unsigned int nr_allocated; - unsigned int nr_frames; - bool got_ref; - bool is_pfns; - void *ptrs[0]; -}; - enum { BAD_STACK = 4294967295, NOT_STACK = 0, @@ -39680,7 +39031,7 @@ enum hmm_pfn_flags { HMM_PFN_REQ_FAULT = 0, HMM_PFN_REQ_WRITE = 0, HMM_PFN_FLAGS = 0, -}; +} __attribute__((mode(word))); struct hmm_range { struct mmu_interval_notifier *notifier; @@ -39710,10 +39061,26 @@ struct hugetlbfs_inode_info { unsigned int seals; }; +struct wp_walk { + struct mmu_notifier_range range; + long unsigned int tlbflush_start; + long unsigned int tlbflush_end; + long unsigned int total; +}; + +struct clean_walk { + struct wp_walk base; + long unsigned int bitmap_pgoff; + long unsigned int *bitmap; + long unsigned int start; + long unsigned int end; +}; + 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 { @@ -39730,8 +39097,6 @@ struct open_how { __u64 resolve; }; -struct fs_context_operations___2; - struct open_flags { int open_flag; umode_t mode; @@ -39774,6 +39139,8 @@ enum vfs_get_super_keying { vfs_get_independent_super = 3, }; +typedef struct kobject *kobj_probe_t(dev_t, int *, void *); + struct kobj_map; struct char_device_struct { @@ -39808,6 +39175,8 @@ struct stat { unsigned int __unused5; }; +typedef u16 compat_mode_t; + typedef u32 compat_ino_t; typedef u16 compat_ushort_t; @@ -39818,8 +39187,6 @@ typedef u16 __compat_uid16_t; typedef u16 __compat_gid16_t; -typedef u16 compat_mode_t; - typedef u32 compat_dev_t; struct compat_stat { @@ -39983,13 +39350,6 @@ enum inode_i_mutex_lock_class { I_MUTEX_PARENT2 = 5, }; -struct pseudo_fs_context { - const struct super_operations *ops; - const struct xattr_handler **xattr; - const struct dentry_operations *dops; - long unsigned int magic; -}; - struct name_snapshot { struct qstr name; unsigned char inline_name[32]; @@ -40008,6 +39368,7 @@ struct nameidata { struct path root; struct inode *inode; unsigned int flags; + unsigned int state; unsigned int seq; unsigned int m_seq; unsigned int r_seq; @@ -40024,6 +39385,17 @@ struct nameidata { umode_t dir_mode; }; +struct renamedata { + struct user_namespace *old_mnt_userns; + struct inode *old_dir; + struct dentry *old_dentry; + struct user_namespace *new_mnt_userns; + struct inode *new_dir; + struct dentry *new_dentry; + struct inode **delegated_inode; + unsigned int flags; +}; + enum { LAST_NORM = 0, LAST_ROOT = 1, @@ -40095,7 +39467,14 @@ struct file_dedupe_range { struct file_dedupe_range_info info[0]; }; -typedef int get_block_t(struct inode *, sector_t, struct buffer_head *, int); +struct fsxattr { + __u32 fsx_xflags; + __u32 fsx_extsize; + __u32 fsx_nextents; + __u32 fsx_projid; + __u32 fsx_cowextsize; + unsigned char fsx_pad[8]; +}; struct fiemap_extent; @@ -40106,6 +39485,17 @@ struct fiemap_extent_info { struct fiemap_extent *fi_extents_start; }; +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 space_resv { __s16 l_type; __s16 l_whence; @@ -40299,15 +39689,6 @@ struct select_data { struct list_head dispose; }; -struct fsxattr { - __u32 fsx_xflags; - __u32 fsx_extsize; - __u32 fsx_nextents; - __u32 fsx_projid; - __u32 fsx_cowextsize; - unsigned char fsx_pad[8]; -}; - enum file_time_flags { S_ATIME = 1, S_MTIME = 2, @@ -40315,6 +39696,13 @@ enum file_time_flags { S_VERSION = 8, }; +struct mount_attr { + __u64 attr_set; + __u64 attr_clr; + __u64 propagation; + __u64 userns_fd; +}; + struct proc_mounts { struct mnt_namespace *ns; struct path root; @@ -40322,12 +39710,36 @@ struct proc_mounts { struct mount cursor; }; +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; +}; + enum umount_tree_flags { UMOUNT_SYNC = 1, UMOUNT_PROPAGATE = 2, UMOUNT_CONNECTED = 4, }; +struct xattr_name { + char name[256]; +}; + +struct xattr_ctx { + union { + const void *cvalue; + void *value; + }; + void *kvalue; + size_t size; + struct xattr_name *kname; + unsigned int flags; +}; + struct unicode_map { const char *charset; int version; @@ -40681,10 +40093,9 @@ typedef void (*btf_trace_sb_mark_inode_writeback)(void *, struct inode *); typedef void (*btf_trace_sb_clear_inode_writeback)(void *, struct inode *); struct inode_switch_wbs_context { - struct inode *inode; + struct rcu_work work; struct bdi_writeback *new_wb; - struct callback_head callback_head; - struct work_struct work; + struct inode *inodes[0]; }; struct splice_desc { @@ -40711,11 +40122,16 @@ struct old_utimbuf32 { old_time32_t modtime; }; +struct prepend_buffer { + char *buf; + int len; +}; + typedef int __kernel_daddr_t; struct ustat { __kernel_daddr_t f_tfree; - __kernel_ino_t f_tinode; + long unsigned int f_tinode; char f_fname[6]; char f_fpack[6]; }; @@ -40776,7 +40192,7 @@ struct statfs64 { __kernel_long_t f_spare[4]; }; -struct compat_statfs64___2 { +struct compat_statfs64 { __u32 f_type; __u32 f_bsize; __u64 f_blocks; @@ -40791,8 +40207,6 @@ struct compat_statfs64___2 { __u32 f_spare[4]; } __attribute__((packed)); -typedef struct ns_common *ns_get_path_helper_t(void *); - struct ns_get_path_task_args { const struct proc_ns_operations *ns_ops; struct task_struct *task; @@ -40821,11 +40235,13 @@ enum fsconfig_command { FSCONFIG_CMD_RECONFIGURE = 7, }; +typedef int get_block_t(struct inode *, sector_t, struct buffer_head *, int); + struct dax_device; struct iomap_page_ops; -struct iomap___2 { +struct iomap { u64 addr; loff_t offset; u64 length; @@ -40839,8 +40255,8 @@ struct iomap___2 { }; struct iomap_page_ops { - int (*page_prepare)(struct inode *, loff_t, unsigned int, struct iomap___2 *); - void (*page_done)(struct inode *, loff_t, unsigned int, struct page *, struct iomap___2 *); + int (*page_prepare)(struct inode *, loff_t, unsigned int); + void (*page_done)(struct inode *, loff_t, unsigned int, struct page *); }; struct decrypt_bh_ctx { @@ -40857,48 +40273,6 @@ struct bh_accounting { int ratelimit; }; -enum stat_group { - STAT_READ = 0, - STAT_WRITE = 1, - STAT_DISCARD = 2, - STAT_FLUSH = 3, - NR_STAT_GROUPS = 4, -}; - -enum { - DISK_EVENT_MEDIA_CHANGE = 1, - DISK_EVENT_EJECT_REQUEST = 2, -}; - -enum { - BIOSET_NEED_BVECS = 1, - BIOSET_NEED_RESCUER = 2, -}; - -struct bdev_inode { - struct block_device bdev; - struct inode vfs_inode; -}; - -struct blkdev_dio { - union { - struct kiocb *iocb; - struct task_struct *waiter; - }; - size_t size; - atomic_t ref; - bool multi_bio: 1; - bool should_dirty: 1; - bool is_sync: 1; - struct bio bio; -}; - -struct bd_holder_disk { - struct list_head list; - struct gendisk *disk; - int refcnt; -}; - typedef int dio_iodone_t(struct kiocb *, loff_t, ssize_t, void *); typedef void dio_submit_t(struct bio *, struct inode *, loff_t); @@ -41119,12 +40493,17 @@ enum fanotify_event_type { FANOTIFY_EVENT_TYPE_PATH = 2, FANOTIFY_EVENT_TYPE_PATH_PERM = 3, FANOTIFY_EVENT_TYPE_OVERFLOW = 4, + __FANOTIFY_EVENT_TYPE_NUM = 5, }; struct fanotify_event { struct fsnotify_event fse; + struct hlist_node merge_list; u32 mask; - enum fanotify_event_type type; + struct { + unsigned int type: 3; + unsigned int hash: 29; + }; struct pid *pid; }; @@ -41176,6 +40555,11 @@ struct fanotify_event_info_fid { unsigned char handle[0]; }; +struct fanotify_event_info_pidfd { + struct fanotify_event_info_header hdr; + __s32 pidfd; +}; + struct fanotify_response { __s32 fd; __u32 response; @@ -41290,7 +40674,7 @@ struct timerfd_ctx { bool might_cancel; }; -struct eventfd_ctx___2 { +struct eventfd_ctx { struct kref kref; wait_queue_head_t wqh; __u64 count; @@ -41308,7 +40692,7 @@ struct userfaultfd_ctx { unsigned int flags; unsigned int features; bool released; - bool mmap_changing; + atomic_t mmap_changing; struct mm_struct *mm; }; @@ -41381,6 +40765,12 @@ struct uffdio_writeprotect { __u64 mode; }; +struct uffdio_continue { + struct uffdio_range range; + __u64 mode; + __s64 mapped; +}; + struct userfaultfd_fork_ctx { struct userfaultfd_ctx *orig; struct userfaultfd_ctx *new; @@ -41489,7 +40879,6 @@ struct kioctx { long: 64; struct { atomic_t reqs_available; - long: 32; long: 64; long: 64; long: 64; @@ -41516,7 +40905,6 @@ struct kioctx { unsigned int tail; unsigned int completed_events; spinlock_t completion_lock; - long: 32; long: 64; long: 64; long: 64; @@ -41527,7 +40915,6 @@ struct kioctx { struct page *internal_pages[8]; struct file *aio_ring_file; unsigned int id; - long: 32; long: 64; long: 64; long: 64; @@ -41556,8 +40943,9 @@ struct poll_iocb { struct file *file; struct wait_queue_head *head; __poll_t events; - bool done; bool cancelled; + bool work_scheduled; + bool work_need_resched; struct wait_queue_entry wait; struct work_struct work; }; @@ -41580,6 +40968,7 @@ struct aio_kiocb { struct aio_poll_table { struct poll_table_struct pt; struct aio_kiocb *iocb; + bool queued; int error; }; @@ -41593,493 +40982,625 @@ struct __compat_aio_sigset { compat_size_t sigsetsize; }; -typedef s32 compat_ssize_t; - -struct xa_limit { - u32 max; - u32 min; -}; - -enum { - PERCPU_REF_INIT_ATOMIC = 1, - PERCPU_REF_INIT_DEAD = 2, - PERCPU_REF_ALLOW_REINIT = 4, -}; - -struct user_msghdr { - void *msg_name; - int msg_namelen; - struct iovec *msg_iov; - __kernel_size_t msg_iovlen; - void *msg_control; - __kernel_size_t msg_controllen; - unsigned int msg_flags; -}; - -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 scm_fp_list { - short int count; - short int max; - struct user_struct *user; - struct file *fp[253]; +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 *); }; -struct unix_skb_parms { - struct pid *pid; - kuid_t uid; - kgid_t gid; - struct scm_fp_list *fp; - struct lsmblob lsmblob; - u32 consumed; +struct iomap_iter { + struct inode *inode; + loff_t pos; + u64 len; + s64 processed; + unsigned int flags; + struct iomap iomap; + struct iomap srcmap; }; -struct trace_event_raw_io_uring_create { +struct trace_event_raw_dax_pmd_fault_class { struct trace_entry ent; - int fd; - void *ctx; - u32 sq_entries; - u32 cq_entries; - u32 flags; + long unsigned int ino; + long unsigned int vm_start; + long unsigned int vm_end; + long unsigned int vm_flags; + long unsigned int address; + long unsigned int pgoff; + long unsigned int max_pgoff; + dev_t dev; + unsigned int flags; + int result; char __data[0]; }; -struct trace_event_raw_io_uring_register { +struct trace_event_raw_dax_pmd_load_hole_class { struct trace_entry ent; - void *ctx; - unsigned int opcode; - unsigned int nr_files; - unsigned int nr_bufs; - bool eventfd; - long int ret; + long unsigned int ino; + long unsigned int vm_flags; + long unsigned int address; + struct page *zero_page; + void *radix_entry; + dev_t dev; char __data[0]; }; -struct trace_event_raw_io_uring_file_get { +struct trace_event_raw_dax_pmd_insert_mapping_class { struct trace_entry ent; - void *ctx; - int fd; + long unsigned int ino; + long unsigned int vm_flags; + long unsigned int address; + long int length; + u64 pfn_val; + void *radix_entry; + dev_t dev; + int write; char __data[0]; }; -struct io_wq_work; - -struct trace_event_raw_io_uring_queue_async_work { +struct trace_event_raw_dax_pte_fault_class { struct trace_entry ent; - void *ctx; - int rw; - void *req; - struct io_wq_work *work; + long unsigned int ino; + long unsigned int vm_flags; + long unsigned int address; + long unsigned int pgoff; + dev_t dev; unsigned int flags; + int result; char __data[0]; }; -struct io_wq_work_node { - struct io_wq_work_node *next; -}; - -struct io_wq_work { - struct io_wq_work_node list; - struct io_identity *identity; - unsigned int flags; -}; - -struct trace_event_raw_io_uring_defer { +struct trace_event_raw_dax_insert_mapping { struct trace_entry ent; - void *ctx; - void *req; - long long unsigned int data; + long unsigned int ino; + long unsigned int vm_flags; + long unsigned int address; + void *radix_entry; + dev_t dev; + int write; char __data[0]; }; -struct trace_event_raw_io_uring_link { +struct trace_event_raw_dax_writeback_range_class { struct trace_entry ent; - void *ctx; - void *req; - void *target_req; + long unsigned int ino; + long unsigned int start_index; + long unsigned int end_index; + dev_t dev; char __data[0]; }; -struct trace_event_raw_io_uring_cqring_wait { +struct trace_event_raw_dax_writeback_one { struct trace_entry ent; - void *ctx; - int min_events; + long unsigned int ino; + long unsigned int pgoff; + long unsigned int pglen; + dev_t dev; char __data[0]; }; -struct trace_event_raw_io_uring_fail_link { - struct trace_entry ent; - void *req; - void *link; - char __data[0]; +struct trace_event_data_offsets_dax_pmd_fault_class {}; + +struct trace_event_data_offsets_dax_pmd_load_hole_class {}; + +struct trace_event_data_offsets_dax_pmd_insert_mapping_class {}; + +struct trace_event_data_offsets_dax_pte_fault_class {}; + +struct trace_event_data_offsets_dax_insert_mapping {}; + +struct trace_event_data_offsets_dax_writeback_range_class {}; + +struct trace_event_data_offsets_dax_writeback_one {}; + +typedef void (*btf_trace_dax_pmd_fault)(void *, struct inode *, struct vm_fault *, long unsigned int, int); + +typedef void (*btf_trace_dax_pmd_fault_done)(void *, struct inode *, struct vm_fault *, long unsigned int, int); + +typedef void (*btf_trace_dax_pmd_load_hole)(void *, struct inode *, struct vm_fault *, struct page *, void *); + +typedef void (*btf_trace_dax_pmd_load_hole_fallback)(void *, struct inode *, struct vm_fault *, struct page *, void *); + +typedef void (*btf_trace_dax_pmd_insert_mapping)(void *, struct inode *, struct vm_fault *, long int, pfn_t, void *); + +typedef void (*btf_trace_dax_pte_fault)(void *, struct inode *, struct vm_fault *, int); + +typedef void (*btf_trace_dax_pte_fault_done)(void *, struct inode *, struct vm_fault *, int); + +typedef void (*btf_trace_dax_load_hole)(void *, struct inode *, struct vm_fault *, int); + +typedef void (*btf_trace_dax_insert_pfn_mkwrite_no_entry)(void *, struct inode *, struct vm_fault *, int); + +typedef void (*btf_trace_dax_insert_pfn_mkwrite)(void *, struct inode *, struct vm_fault *, int); + +typedef void (*btf_trace_dax_insert_mapping)(void *, struct inode *, struct vm_fault *, void *); + +typedef void (*btf_trace_dax_writeback_range)(void *, struct inode *, long unsigned int, long unsigned int); + +typedef void (*btf_trace_dax_writeback_range_done)(void *, struct inode *, long unsigned int, long unsigned int); + +typedef void (*btf_trace_dax_writeback_one)(void *, struct inode *, long unsigned int, long unsigned int); + +struct exceptional_entry_key { + struct xarray *xa; + long unsigned int entry_start; }; -struct trace_event_raw_io_uring_complete { - struct trace_entry ent; - void *ctx; - u64 user_data; - long int res; - char __data[0]; +struct wait_exceptional_entry_queue { + wait_queue_entry_t wait; + struct exceptional_entry_key key; }; -struct trace_event_raw_io_uring_submit_sqe { - struct trace_entry ent; - void *ctx; - u8 opcode; - u64 user_data; - bool force_nonblock; - bool sq_thread; - char __data[0]; +enum dax_wake_mode { + WAKE_ALL = 0, + WAKE_NEXT = 1, }; -struct trace_event_raw_io_uring_poll_arm { - struct trace_entry ent; - void *ctx; - u8 opcode; - u64 user_data; - int mask; - int events; - char __data[0]; +struct crypto_skcipher; + +struct fscrypt_blk_crypto_key; + +struct fscrypt_prepared_key { + struct crypto_skcipher *tfm; + struct fscrypt_blk_crypto_key *blk_key; }; -struct trace_event_raw_io_uring_poll_wake { - struct trace_entry ent; - void *ctx; - u8 opcode; - u64 user_data; - int mask; - char __data[0]; +struct fscrypt_mode; + +struct fscrypt_master_key; + +struct fscrypt_direct_key; + +struct fscrypt_info { + struct fscrypt_prepared_key ci_enc_key; + bool ci_owns_key; + bool ci_inlinecrypt; + 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 skcipher_request { + unsigned int cryptlen; + u8 *iv; + struct scatterlist *src; + struct scatterlist *dst; + struct crypto_async_request base; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + void *__ctx[0]; +}; + +struct crypto_skcipher { + unsigned int reqsize; + long: 64; + long: 64; + long: 64; + 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 crypto_tfm base; }; -struct trace_event_raw_io_uring_task_add { - struct trace_entry ent; - void *ctx; - u8 opcode; - u64 user_data; - int mask; - char __data[0]; +struct fscrypt_key_specifier { + __u32 type; + __u32 __reserved; + union { + __u8 __reserved[32]; + __u8 descriptor[8]; + __u8 identifier[16]; + } u; }; -struct trace_event_raw_io_uring_task_run { - struct trace_entry ent; - void *ctx; - u8 opcode; - u64 user_data; - char __data[0]; +struct fscrypt_mode { + const char *friendly_name; + const char *cipher_str; + int keysize; + int security_strength; + int ivsize; + int logged_impl_name; + enum blk_crypto_mode_num blk_crypto_mode; }; -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_queue_async_work {}; - -struct trace_event_data_offsets_io_uring_defer {}; - -struct trace_event_data_offsets_io_uring_link {}; - -struct trace_event_data_offsets_io_uring_cqring_wait {}; +struct fscrypt_hkdf { + struct crypto_shash *hmac_tfm; +}; -struct trace_event_data_offsets_io_uring_fail_link {}; +struct fscrypt_master_key_secret { + struct fscrypt_hkdf hkdf; + u32 size; + u8 raw[64]; +}; -struct trace_event_data_offsets_io_uring_complete {}; +struct fscrypt_master_key { + struct super_block *mk_sb; + 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[10]; + struct fscrypt_prepared_key mk_iv_ino_lblk_64_keys[10]; + struct fscrypt_prepared_key mk_iv_ino_lblk_32_keys[10]; + siphash_key_t mk_ino_hash_key; + bool mk_ino_hash_key_initialized; +}; -struct trace_event_data_offsets_io_uring_submit_sqe {}; +typedef enum { + FS_DECRYPT = 0, + FS_ENCRYPT = 1, +} fscrypt_direction_t; -struct trace_event_data_offsets_io_uring_poll_arm {}; +union fscrypt_iv { + struct { + __le64 lblk_num; + u8 nonce[16]; + }; + u8 raw[32]; + __le64 dun[4]; +}; -struct trace_event_data_offsets_io_uring_poll_wake {}; +struct fscrypt_str { + unsigned char *name; + u32 len; +}; -struct trace_event_data_offsets_io_uring_task_add {}; +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 trace_event_data_offsets_io_uring_task_run {}; +struct fscrypt_nokey_name { + u32 dirhash[2]; + u8 bytes[149]; + u8 sha256[32]; +}; -typedef void (*btf_trace_io_uring_create)(void *, int, void *, u32, u32, u32); +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 *); + unsigned int descsize; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + unsigned int digestsize; + unsigned int statesize; + long: 64; + long: 64; + long: 64; + 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 crypto_alg base; +}; -typedef void (*btf_trace_io_uring_register)(void *, void *, unsigned int, unsigned int, unsigned int, bool, long int); +struct fscrypt_symlink_data { + __le16 len; + char encrypted_path[1]; +} __attribute__((packed)); -typedef void (*btf_trace_io_uring_file_get)(void *, void *, int); +enum key_state { + KEY_IS_UNINSTANTIATED = 0, + KEY_IS_POSITIVE = 1, +}; -typedef void (*btf_trace_io_uring_queue_async_work)(void *, void *, int, void *, struct io_wq_work *, unsigned int); +struct fscrypt_keyring { + spinlock_t lock; + struct hlist_head key_hashtable[128]; +}; -typedef void (*btf_trace_io_uring_defer)(void *, void *, void *, long long unsigned int); +struct fscrypt_provisioning_key_payload { + __u32 type; + __u32 __reserved; + __u8 raw[0]; +}; -typedef void (*btf_trace_io_uring_link)(void *, void *, void *, void *); +struct fscrypt_add_key_arg { + struct fscrypt_key_specifier key_spec; + __u32 raw_size; + __u32 key_id; + __u32 __reserved[8]; + __u8 raw[0]; +}; -typedef void (*btf_trace_io_uring_cqring_wait)(void *, void *, int); +struct fscrypt_remove_key_arg { + struct fscrypt_key_specifier key_spec; + __u32 removal_status_flags; + __u32 __reserved[5]; +}; -typedef void (*btf_trace_io_uring_fail_link)(void *, void *, void *); +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]; +}; -typedef void (*btf_trace_io_uring_complete)(void *, void *, u64, long int); +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; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + struct crypto_alg base; +}; -typedef void (*btf_trace_io_uring_submit_sqe)(void *, void *, u8, u64, bool, bool); +struct fscrypt_context_v1 { + u8 version; + u8 contents_encryption_mode; + u8 filenames_encryption_mode; + u8 flags; + u8 master_key_descriptor[8]; + u8 nonce[16]; +}; -typedef void (*btf_trace_io_uring_poll_arm)(void *, void *, u8, u64, int, int); +struct fscrypt_context_v2 { + u8 version; + u8 contents_encryption_mode; + u8 filenames_encryption_mode; + u8 flags; + u8 __reserved[4]; + u8 master_key_identifier[16]; + u8 nonce[16]; +}; -typedef void (*btf_trace_io_uring_poll_wake)(void *, void *, u8, u64, int); +union fscrypt_context { + u8 version; + struct fscrypt_context_v1 v1; + struct fscrypt_context_v2 v2; +}; -typedef void (*btf_trace_io_uring_task_add)(void *, void *, u8, u64, int); +struct crypto_template; -typedef void (*btf_trace_io_uring_task_run)(void *, void *, u8, u64); +struct crypto_spawn; -struct io_uring_sqe { - __u8 opcode; - __u8 flags; - __u16 ioprio; - __s32 fd; - union { - __u64 off; - __u64 addr2; - }; - 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; - }; - __u64 user_data; +struct crypto_instance { + struct crypto_alg alg; + struct crypto_template *tmpl; union { - struct { - union { - __u16 buf_index; - __u16 buf_group; - }; - __u16 personality; - __s32 splice_fd_in; - }; - __u64 __pad2[3]; + struct hlist_node list; + struct crypto_spawn *spawns; }; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + void *__ctx[0]; }; -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, +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; }; -enum { - 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_LAST = 37, -}; +struct rtattr; -struct io_uring_cqe { - __u64 user_data; - __s32 res; - __u32 flags; +struct crypto_template { + struct list_head list; + struct hlist_head instances; + struct module *module; + int (*create)(struct crypto_template *, struct rtattr **); + char name[128]; }; -enum { - IORING_CQE_BUFFER_SHIFT = 16, +struct user_key_payload { + struct callback_head rcu; + short unsigned int datalen; + long: 0; + char data[0]; }; -struct io_sqring_offsets { - __u32 head; - __u32 tail; - __u32 ring_mask; - __u32 ring_entries; - __u32 flags; - __u32 dropped; - __u32 array; - __u32 resv1; - __u64 resv2; +struct fscrypt_key { + __u32 mode; + __u8 raw[64]; + __u32 size; }; -struct io_cqring_offsets { - __u32 head; - __u32 tail; - __u32 ring_mask; - __u32 ring_entries; - __u32 overflow; - __u32 cqes; - __u32 flags; - __u32 resv1; - __u64 resv2; +struct fscrypt_direct_key { + 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 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 fscrypt_get_policy_ex_arg { + __u64 policy_size; + union { + __u8 version; + struct fscrypt_policy_v1 v1; + struct fscrypt_policy_v2 v2; + } policy; }; -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_LAST = 13, +struct fscrypt_dummy_policy { + const union fscrypt_policy *policy; }; -struct io_uring_files_update { - __u32 offset; - __u32 resv; - __u64 fds; +struct fscrypt_blk_crypto_key { + struct blk_crypto_key base; + int num_devs; + struct request_queue *devs[0]; }; -struct io_uring_probe_op { - __u8 op; - __u8 resv; - __u16 flags; - __u32 resv2; -}; +struct fsverity_hash_alg; -struct io_uring_probe { - __u8 last_op; - __u8 ops_len; - __u16 resv; - __u32 resv2[3]; - struct io_uring_probe_op ops[0]; +struct merkle_tree_params { + struct fsverity_hash_alg *hash_alg; + const u8 *hashstate; + unsigned int digest_size; + unsigned int block_size; + unsigned int hashes_per_block; + unsigned int log_blocksize; + unsigned int log_arity; + unsigned int num_levels; + u64 tree_size; + long unsigned int level0_blocks; + u64 level_start[8]; }; -struct io_uring_restriction { - __u16 opcode; - union { - __u8 register_op; - __u8 sqe_op; - __u8 sqe_flags; - }; - __u8 resv; - __u32 resv2[3]; +struct fsverity_info { + struct merkle_tree_params tree_params; + u8 root_hash[64]; + u8 file_digest[64]; + const struct inode *inode; }; -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 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 io_uring_getevents_arg { - __u64 sigmask; - __u32 sigmask_sz; - __u32 pad; - __u64 ts; +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]; }; -enum { - IO_WQ_WORK_CANCEL = 1, - IO_WQ_WORK_HASHED = 2, - IO_WQ_WORK_UNBOUND = 4, - IO_WQ_WORK_CONCURRENT = 16, - IO_WQ_WORK_FILES = 32, - IO_WQ_WORK_FS = 64, - IO_WQ_WORK_MM = 128, - IO_WQ_WORK_CREDS = 256, - IO_WQ_WORK_BLKCG = 512, - IO_WQ_WORK_FSIZE = 1024, - IO_WQ_HASH_SHIFT = 24, -}; +struct crypto_ahash; -enum io_wq_cancel { - IO_WQ_CANCEL_OK = 0, - IO_WQ_CANCEL_RUNNING = 1, - IO_WQ_CANCEL_NOTFOUND = 2, +struct fsverity_hash_alg { + struct crypto_ahash *tfm; + const char *name; + unsigned int digest_size; + unsigned int block_size; + mempool_t req_pool; }; -typedef struct io_wq_work *free_work_fn(struct io_wq_work *); - -typedef void io_wq_work_fn(struct io_wq_work *); +struct ahash_request; -struct io_wq_data { - struct user_struct *user; - io_wq_work_fn *do_work; - free_work_fn *free_work; +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 reqsize; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + struct crypto_tfm base; }; -struct io_uring { - u32 head; - long: 32; +struct ahash_request { + struct crypto_async_request base; + unsigned int nbytes; + struct scatterlist *src; + u8 *result; + void *priv; long: 64; long: 64; long: 64; long: 64; long: 64; long: 64; + void *__ctx[0]; +}; + +struct hash_alg_common { + unsigned int digestsize; + unsigned int statesize; long: 64; - u32 tail; - long: 32; long: 64; long: 64; long: 64; @@ -42087,1592 +41608,2003 @@ struct io_uring { long: 64; long: 64; long: 64; -}; - -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; - u32 sq_flags; - u32 cq_flags; - u32 cq_overflow; long: 64; long: 64; long: 64; long: 64; - struct io_uring_cqe cqes[0]; + long: 64; + long: 64; + long: 64; + struct crypto_alg base; }; -struct io_mapped_ubuf { - u64 ubuf; - size_t len; - struct bio_vec *bvec; - unsigned int nr_bvecs; - long unsigned int acct_pages; +struct fsverity_digest { + __u16 digest_algorithm; + __u16 digest_size; + __u8 digest[0]; }; -struct fixed_file_table { - struct file **files; +struct fsverity_read_metadata_arg { + __u64 metadata_type; + __u64 offset; + __u64 length; + __u64 buf_ptr; + __u64 __reserved; }; -struct fixed_file_data; +struct fsverity_formatted_digest { + char magic[8]; + __le16 digest_algorithm; + __le16 digest_size; + __u8 digest[0]; +}; -struct fixed_file_ref_node { - struct percpu_ref refs; - struct list_head node; - struct list_head file_list; - struct fixed_file_data *file_data; - struct llist_node llist; - bool done; +struct flock64 { + short int l_type; + short int l_whence; + __kernel_loff_t l_start; + __kernel_loff_t l_len; + __kernel_pid_t l_pid; }; -struct io_ring_ctx; +struct trace_event_raw_locks_get_lock_context { + struct trace_entry ent; + long unsigned int i_ino; + dev_t s_dev; + unsigned char type; + struct file_lock_context *ctx; + char __data[0]; +}; -struct fixed_file_data { - struct fixed_file_table *table; - struct io_ring_ctx *ctx; - struct fixed_file_ref_node *node; - struct percpu_ref refs; - struct completion done; - struct list_head ref_list; - spinlock_t lock; +struct trace_event_raw_filelock_lock { + struct trace_entry ent; + struct file_lock *fl; + long unsigned int 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 io_wq; +struct trace_event_raw_filelock_lease { + struct trace_entry ent; + struct file_lock *fl; + long unsigned int i_ino; + dev_t s_dev; + struct file_lock *fl_blocker; + fl_owner_t fl_owner; + unsigned int fl_flags; + unsigned char fl_type; + long unsigned int fl_break_time; + long unsigned int fl_downgrade_time; + char __data[0]; +}; -struct io_restriction { - long unsigned int register_op[1]; - long unsigned int sqe_op[1]; - u8 sqe_flags_allowed; - u8 sqe_flags_required; - bool registered; +struct trace_event_raw_generic_add_lease { + struct trace_entry ent; + long unsigned int 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 io_sq_data; +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 io_kiocb; +struct trace_event_data_offsets_locks_get_lock_context {}; -struct io_ring_ctx { - struct { - struct percpu_ref refs; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - }; - struct { - unsigned int flags; - unsigned int compat: 1; - unsigned int limit_mem: 1; - unsigned int cq_overflow_flushed: 1; - unsigned int drain_next: 1; - unsigned int eventfd_async: 1; - unsigned int restricted: 1; - unsigned int sqo_dead: 1; - u32 *sq_array; - unsigned int cached_sq_head; - unsigned int sq_entries; - unsigned int sq_mask; - unsigned int sq_thread_idle; - unsigned int cached_sq_dropped; - unsigned int cached_cq_overflow; - long unsigned int sq_check_overflow; - struct list_head defer_list; - struct list_head timeout_list; - struct list_head cq_overflow_list; - struct io_uring_sqe *sq_sqes; - long: 64; - long: 64; - long: 64; - }; - struct io_rings *rings; - struct io_wq *io_wq; - struct task_struct *sqo_task; - struct mm_struct *mm_account; - struct cgroup_subsys_state *sqo_blkcg_css; - struct io_sq_data *sq_data; - struct wait_queue_head sqo_sq_wait; - struct list_head sqd_list; - struct fixed_file_data *file_data; - unsigned int nr_user_files; - unsigned int nr_user_bufs; - struct io_mapped_ubuf *user_bufs; - struct user_struct *user; - const struct cred *creds; - kuid_t loginuid; - unsigned int sessionid; - struct completion ref_comp; - struct completion sq_thread_comp; - struct io_kiocb *fallback_req; - struct socket *ring_sock; - struct xarray io_buffers; - struct xarray personalities; - u32 pers_next; - struct { - unsigned int cached_cq_tail; - unsigned int cq_entries; - unsigned int cq_mask; - atomic_t cq_timeouts; - unsigned int cq_last_tm_flush; - long unsigned int cq_check_overflow; - struct wait_queue_head cq_wait; - struct fasync_struct *cq_fasync; - struct eventfd_ctx *cq_ev_fd; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - }; - struct { - struct mutex uring_lock; - wait_queue_head_t wait; - long: 64; - }; - struct { - spinlock_t completion_lock; - struct list_head iopoll_list; - struct hlist_head *cancel_hash; - unsigned int cancel_hash_bits; - bool poll_multi_file; - spinlock_t inflight_lock; - struct list_head inflight_list; - }; - struct delayed_work file_put_work; - struct llist_head file_put_llist; - struct work_struct exit_work; - struct io_restriction restrictions; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; -}; +struct trace_event_data_offsets_filelock_lock {}; -struct io_buffer { - struct list_head list; - __u64 addr; - __u32 len; - __u16 bid; -}; +struct trace_event_data_offsets_filelock_lease {}; -struct io_sq_data { - refcount_t refs; - struct mutex lock; - struct list_head ctx_list; - struct list_head ctx_new_list; - struct mutex ctx_lock; - struct task_struct *thread; - struct wait_queue_head wait; - unsigned int sq_thread_idle; -}; +struct trace_event_data_offsets_generic_add_lease {}; -struct io_rw { - struct kiocb kiocb; - u64 addr; - u64 len; +struct trace_event_data_offsets_leases_conflict {}; + +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 io_poll_iocb { - struct file *file; - struct wait_queue_head *head; - __poll_t events; - bool done; - bool canceled; - struct wait_queue_entry wait; +struct locks_iterator { + int li_cpu; + loff_t li_pos; }; -struct io_poll_remove { - struct file *file; - u64 addr; +typedef unsigned int __kernel_uid_t; + +typedef unsigned int __kernel_gid_t; + +struct gnu_property { + u32 pr_type; + u32 pr_datasz; }; -struct io_accept { - struct file *file; - struct sockaddr *addr; - int *addr_len; - int flags; - long unsigned int nofile; +struct elf_prpsinfo { + char pr_state; + char pr_sname; + char pr_zomb; + char pr_nice; + long unsigned int 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 io_sync { - struct file *file; - loff_t len; - loff_t off; - int flags; - int mode; +struct memelfnote { + const char *name; + int type; + unsigned int datasz; + void *data; }; -struct io_cancel { - struct file *file; - u64 addr; +struct elf_thread_core_info { + struct elf_thread_core_info *next; + struct task_struct *task; + struct elf_prstatus prstatus; + struct memelfnote notes[0]; }; -struct io_timeout { - struct file *file; - u32 off; - u32 target_seq; - struct list_head list; - struct io_kiocb *head; +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 io_timeout_rem { - struct file *file; - u64 addr; - struct timespec64 ts; - u32 flags; +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 io_connect { - struct file *file; - struct sockaddr *addr; - int addr_len; +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; }; -struct io_sr_msg { - struct file *file; - union { - struct user_msghdr *umsg; - void *buf; - }; - int msg_flags; - int bgid; - size_t len; - struct io_buffer *kbuf; +typedef u16 __compat_uid_t; + +typedef u16 __compat_gid_t; + +typedef unsigned int compat_elf_greg_t; + +typedef compat_elf_greg_t compat_elf_gregset_t[18]; + +struct compat_elf_siginfo { + compat_int_t si_signo; + compat_int_t si_code; + compat_int_t si_errno; }; -struct io_open { - struct file *file; - int dfd; - bool ignore_nonblock; - struct filename *filename; - struct open_how how; - long unsigned int nofile; +struct compat_elf_prstatus_common { + struct compat_elf_siginfo pr_info; + short int 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 io_close { - struct file *file; - int fd; +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 io_files_update { - struct file *file; - u64 arg; - u32 nr_args; - u32 offset; +struct compat_elf_prstatus { + struct compat_elf_prstatus_common common; + compat_elf_gregset_t pr_reg; + compat_int_t pr_fpvalid; }; -struct io_fadvise { - struct file *file; - u64 offset; - u32 len; - u32 advice; +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 io_madvise { - struct file *file; - u64 addr; - u32 len; - u32 advice; +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 io_epoll { - struct file *file; - int epfd; - int op; - int fd; - struct epoll_event event; +enum { + MBE_REFERENCED_B = 0, + MBE_REUSABLE_B = 1, }; -struct io_splice { - struct file *file_out; - struct file *file_in; - loff_t off_out; - loff_t off_in; - u64 len; - unsigned int flags; +struct mb_cache_entry { + struct list_head e_list; + struct hlist_bl_node e_hash_list; + atomic_t e_refcnt; + u32 e_key; + long unsigned int e_flags; + u64 e_value; }; -struct io_provide_buf { - struct file *file; - __u64 addr; - __u32 len; - __u32 bgid; - __u16 nbufs; - __u16 bid; +struct mb_cache { + struct hlist_bl_head *c_hash; + int c_bucket_bits; + long unsigned int c_max_entries; + spinlock_t c_list_lock; + struct list_head c_list; + long unsigned int c_entry_count; + struct shrinker c_shrink; + struct work_struct c_shrink_work; }; -struct io_statx { - struct file *file; - int dfd; - unsigned int mask; - unsigned int flags; - const char *filename; - struct statx *buffer; +struct posix_acl_xattr_entry { + __le16 e_tag; + __le16 e_perm; + __le32 e_id; }; -struct io_shutdown { - struct file *file; - int how; +struct posix_acl_xattr_header { + __le32 a_version; }; -struct io_rename { - struct file *file; - int old_dfd; - int new_dfd; - struct filename *oldpath; - struct filename *newpath; - int flags; +struct rpc_timer { + struct list_head list; + long unsigned int expires; + struct delayed_work dwork; }; -struct io_unlink { - struct file *file; - int dfd; - int flags; - struct filename *filename; +struct rpc_wait_queue { + spinlock_t lock; + struct list_head tasks[4]; + unsigned char maxpriority; + unsigned char priority; + unsigned char nr; + short unsigned int qlen; + struct rpc_timer timer_list; + const char *name; }; -struct io_completion { - struct file *file; +struct nfs_seqid_counter { + ktime_t create_time; + int owner_id; + int flags; + u32 counter; + spinlock_t lock; struct list_head list; - u32 cflags; + struct rpc_wait_queue wait; }; -struct async_poll; - -struct io_kiocb { +struct nfs4_stateid_struct { union { - struct file *file; - struct io_rw rw; - struct io_poll_iocb poll; - struct io_poll_remove poll_remove; - struct io_accept accept; - struct io_sync sync; - struct io_cancel cancel; - struct io_timeout timeout; - struct io_timeout_rem timeout_rem; - struct io_connect connect; - struct io_sr_msg sr_msg; - struct io_open open; - struct io_close close; - struct io_files_update files_update; - struct io_fadvise fadvise; - struct io_madvise madvise; - struct io_epoll epoll; - struct io_splice splice; - struct io_provide_buf pbuf; - struct io_statx statx; - struct io_shutdown shutdown; - struct io_rename rename; - struct io_unlink unlink; - struct io_completion compl; + char data[16]; + struct { + __be32 seqid; + char other[12]; + }; }; - void *async_data; - u8 opcode; - u8 iopoll_completed; - u16 buf_index; - u32 result; - struct io_ring_ctx *ctx; - unsigned int flags; - refcount_t refs; - struct task_struct *task; - u64 user_data; - struct io_kiocb *link; - struct percpu_ref *fixed_file_refs; - struct list_head inflight_entry; - struct callback_head task_work; - struct hlist_node hash_node; - struct async_poll *apoll; - struct io_wq_work work; + enum { + NFS4_INVALID_STATEID_TYPE = 0, + NFS4_SPECIAL_STATEID_TYPE = 1, + NFS4_OPEN_STATEID_TYPE = 2, + NFS4_LOCK_STATEID_TYPE = 3, + NFS4_DELEGATION_STATEID_TYPE = 4, + NFS4_LAYOUT_STATEID_TYPE = 5, + NFS4_PNFS_DS_STATEID_TYPE = 6, + NFS4_REVOKED_STATEID_TYPE = 7, + } type; }; -struct io_timeout_data { - struct io_kiocb *req; - struct hrtimer timer; - struct timespec64 ts; - enum hrtimer_mode mode; -}; +typedef struct nfs4_stateid_struct nfs4_stateid; -struct io_async_connect { - struct __kernel_sockaddr_storage address; -}; +struct nfs4_state; -struct io_async_msghdr { - struct iovec fast_iov[8]; - struct iovec *iov; - struct sockaddr *uaddr; - struct msghdr msg; - struct __kernel_sockaddr_storage addr; +struct nfs4_lock_state { + struct list_head ls_locks; + struct nfs4_state *ls_state; + long unsigned int ls_flags; + struct nfs_seqid_counter ls_seqid; + nfs4_stateid ls_stateid; + refcount_t ls_count; + fl_owner_t ls_owner; }; -struct io_async_rw { - struct iovec fast_iov[8]; - const struct iovec *free_iovec; - struct iov_iter iter; - size_t bytes_done; - struct wait_page_queue wpq; +struct xdr_netobj { + unsigned int len; + u8 *data; }; -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_FAIL_LINK_BIT = 6, - REQ_F_INFLIGHT_BIT = 7, - REQ_F_CUR_POS_BIT = 8, - REQ_F_NOWAIT_BIT = 9, - REQ_F_LINK_TIMEOUT_BIT = 10, - REQ_F_ISREG_BIT = 11, - REQ_F_NEED_CLEANUP_BIT = 12, - REQ_F_POLLED_BIT = 13, - REQ_F_BUFFER_SELECTED_BIT = 14, - REQ_F_NO_FILE_TABLE_BIT = 15, - REQ_F_WORK_INITIALIZED_BIT = 16, - REQ_F_LTIMEOUT_ACTIVE_BIT = 17, - __REQ_F_LAST_BIT = 18, +struct xdr_buf { + struct kvec head[1]; + struct kvec tail[1]; + struct bio_vec *bvec; + struct page **pages; + unsigned int page_base; + unsigned int page_len; + unsigned int flags; + unsigned int buflen; + unsigned int len; }; -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_FAIL_LINK = 64, - REQ_F_INFLIGHT = 128, - REQ_F_CUR_POS = 256, - REQ_F_NOWAIT = 512, - REQ_F_LINK_TIMEOUT = 1024, - REQ_F_ISREG = 2048, - REQ_F_NEED_CLEANUP = 4096, - REQ_F_POLLED = 8192, - REQ_F_BUFFER_SELECTED = 16384, - REQ_F_NO_FILE_TABLE = 32768, - REQ_F_WORK_INITIALIZED = 65536, - REQ_F_LTIMEOUT_ACTIVE = 131072, -}; +struct rpc_rqst; -struct async_poll { - struct io_poll_iocb poll; - struct io_poll_iocb *double_poll; +struct xdr_stream { + __be32 *p; + struct xdr_buf *buf; + __be32 *end; + struct kvec *iov; + struct kvec scratch; + struct page **page_ptr; + unsigned int nwords; + struct rpc_rqst *rqst; }; -struct io_defer_entry { - struct list_head list; - struct io_kiocb *req; - u32 seq; -}; +struct rpc_xprt; -struct io_comp_state { - unsigned int nr; - struct list_head list; - struct io_ring_ctx *ctx; -}; +struct rpc_task; -struct io_submit_state { - struct blk_plug plug; - void *reqs[8]; - unsigned int free_reqs; - bool plug_started; - struct io_comp_state comp; - struct file *file; - unsigned int fd; - unsigned int file_refs; - unsigned int ios_left; -}; +struct rpc_cred; -struct io_op_def { - unsigned int needs_file: 1; - unsigned int needs_file_no_error: 1; - unsigned int hash_reg_file: 1; - unsigned int unbound_nonreg_file: 1; - unsigned int not_supported: 1; - unsigned int pollin: 1; - unsigned int pollout: 1; - unsigned int buffer_select: 1; - unsigned int needs_async_data: 1; - unsigned int plug: 1; - short unsigned int async_size; - unsigned int work_flags; +struct rpc_rqst { + struct rpc_xprt *rq_xprt; + struct xdr_buf rq_snd_buf; + struct xdr_buf rq_rcv_buf; + struct rpc_task *rq_task; + struct rpc_cred *rq_cred; + __be32 rq_xid; + int rq_cong; + u32 rq_seqno; + int rq_enc_pages_num; + struct page **rq_enc_pages; + void (*rq_release_snd_buf)(struct rpc_rqst *); + union { + struct list_head rq_list; + struct rb_node rq_recv; + }; + struct list_head rq_xmit; + struct list_head rq_xmit2; + void *rq_buffer; + size_t rq_callsize; + void *rq_rbuffer; + size_t rq_rcvsize; + size_t rq_xmit_bytes_sent; + size_t rq_reply_bytes_recvd; + struct xdr_buf rq_private_buf; + long unsigned int rq_majortimeo; + long unsigned int rq_minortimeo; + long unsigned int rq_timeout; + ktime_t rq_rtt; + unsigned int rq_retries; + unsigned int rq_connect_cookie; + atomic_t rq_pin; + u32 rq_bytes_sent; + ktime_t rq_xtime; + int rq_ntrans; + struct list_head rq_bc_list; + long unsigned int rq_bc_pa_state; + struct list_head rq_bc_pa_list; }; -enum io_mem_account { - ACCT_LOCKED = 0, - ACCT_PINNED = 1, -}; +typedef void (*kxdreproc_t)(struct rpc_rqst *, struct xdr_stream *, const void *); -struct req_batch { - void *reqs[8]; - int to_free; - struct task_struct *task; - int task_refs; -}; +typedef int (*kxdrdproc_t)(struct rpc_rqst *, struct xdr_stream *, void *); -struct io_poll_table { - struct poll_table_struct pt; - struct io_kiocb *req; - int nr_entries; - int error; -}; +struct rpc_procinfo; -struct io_submit_link { - struct io_kiocb *head; - struct io_kiocb *last; +struct rpc_message { + const struct rpc_procinfo *rpc_proc; + void *rpc_argp; + void *rpc_resp; + const struct cred *rpc_cred; }; -struct io_wait_queue { - struct wait_queue_entry wq; - struct io_ring_ctx *ctx; - unsigned int to_wait; - unsigned int nr_timeouts; +struct rpc_procinfo { + u32 p_proc; + kxdreproc_t p_encode; + kxdrdproc_t p_decode; + unsigned int p_arglen; + unsigned int p_replen; + unsigned int p_timer; + u32 p_statidx; + const char *p_name; }; -struct io_file_put { +struct rpc_wait { struct list_head list; - struct file *file; + struct list_head links; + struct list_head timer_list; }; -struct io_task_cancel { - struct task_struct *task; - struct files_struct *files; -}; +struct rpc_call_ops; -struct io_identify; +struct rpc_clnt; -struct io_wq_work_list { - struct io_wq_work_node *first; - struct io_wq_work_node *last; +struct rpc_task { + atomic_t tk_count; + int tk_status; + struct list_head tk_task; + void (*tk_callback)(struct rpc_task *); + void (*tk_action)(struct rpc_task *); + long unsigned int tk_timeout; + long unsigned int tk_runstate; + struct rpc_wait_queue *tk_waitqueue; + union { + struct work_struct tk_work; + struct rpc_wait tk_wait; + } u; + int tk_rpc_status; + struct rpc_message tk_msg; + void *tk_calldata; + const struct rpc_call_ops *tk_ops; + struct rpc_clnt *tk_client; + struct rpc_xprt *tk_xprt; + struct rpc_cred *tk_op_cred; + struct rpc_rqst *tk_rqstp; + struct workqueue_struct *tk_workqueue; + ktime_t tk_start; + pid_t tk_owner; + short unsigned int tk_flags; + short unsigned int tk_timeouts; + short unsigned int tk_pid; + unsigned char tk_priority: 2; + unsigned char tk_garb_retry: 2; + unsigned char tk_cred_retry: 2; + unsigned char tk_rebind_retry: 2; }; -typedef bool work_cancel_fn(struct io_wq_work *, void *); +struct rpc_call_ops { + void (*rpc_call_prepare)(struct rpc_task *, void *); + void (*rpc_call_done)(struct rpc_task *, void *); + void (*rpc_count_stats)(struct rpc_task *, void *); + void (*rpc_release)(void *); +}; -enum { - IO_WORKER_F_UP = 1, - IO_WORKER_F_RUNNING = 2, - IO_WORKER_F_FREE = 4, - IO_WORKER_F_FIXED = 8, - IO_WORKER_F_BOUND = 16, +struct rpc_iostats; + +struct rpc_pipe_dir_head { + struct list_head pdh_entries; + struct dentry *pdh_dentry; }; -enum { - IO_WQ_BIT_EXIT = 0, - IO_WQ_BIT_ERROR = 1, +struct rpc_rtt { + long unsigned int timeo; + long unsigned int srtt[5]; + long unsigned int sdrtt[5]; + int ntimeouts[5]; }; -enum { - IO_WQE_FLAG_STALLED = 1, +struct rpc_timeout { + long unsigned int to_initval; + long unsigned int to_maxval; + long unsigned int to_increment; + unsigned int to_retries; + unsigned char to_exponential; }; -struct io_wqe; +struct rpc_sysfs_client; -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_wqe *wqe; - struct io_wq_work *cur_work; - spinlock_t lock; - struct callback_head rcu; - struct mm_struct *mm; - struct cgroup_subsys_state *blkcg_css; - const struct cred *cur_creds; - const struct cred *saved_creds; - struct files_struct *restore_files; - struct nsproxy *restore_nsproxy; - struct fs_struct *restore_fs; -}; +struct rpc_xprt_switch; -struct io_wqe_acct { - unsigned int nr_workers; - unsigned int max_workers; - atomic_t nr_running; +struct rpc_xprt_iter_ops; + +struct rpc_xprt_iter { + struct rpc_xprt_switch *xpi_xpswitch; + struct rpc_xprt *xpi_cursor; + const struct rpc_xprt_iter_ops *xpi_ops; }; -struct io_wq___2; +struct rpc_auth; -struct io_wqe { - struct { - raw_spinlock_t lock; - struct io_wq_work_list work_list; - long unsigned int hash_map; - unsigned int flags; - long: 32; - long: 64; - long: 64; - long: 64; +struct rpc_stat; + +struct rpc_program; + +struct rpc_clnt { + refcount_t cl_count; + unsigned int cl_clid; + struct list_head cl_clients; + struct list_head cl_tasks; + spinlock_t cl_lock; + struct rpc_xprt *cl_xprt; + const struct rpc_procinfo *cl_procinfo; + u32 cl_prog; + u32 cl_vers; + u32 cl_maxproc; + struct rpc_auth *cl_auth; + struct rpc_stat *cl_stats; + struct rpc_iostats *cl_metrics; + unsigned int cl_softrtry: 1; + unsigned int cl_softerr: 1; + unsigned int cl_discrtry: 1; + unsigned int cl_noretranstimeo: 1; + unsigned int cl_autobind: 1; + unsigned int cl_chatty: 1; + struct rpc_rtt *cl_rtt; + const struct rpc_timeout *cl_timeout; + atomic_t cl_swapper; + int cl_nodelen; + char cl_nodename[65]; + struct rpc_pipe_dir_head cl_pipedir_objects; + struct rpc_clnt *cl_parent; + struct rpc_rtt cl_rtt_default; + struct rpc_timeout cl_timeout_default; + const struct rpc_program *cl_program; + const char *cl_principal; + struct dentry *cl_debugfs; + struct rpc_sysfs_client *cl_sysfs; + union { + struct rpc_xprt_iter cl_xpi; + struct work_struct cl_work; }; - int node; - struct io_wqe_acct acct[2]; - struct hlist_nulls_head free_list; - struct list_head all_list; - struct io_wq___2 *wq; - struct io_wq_work *hash_tail[64]; + const struct cred *cl_cred; + unsigned int cl_max_connect; }; -enum { - IO_WQ_ACCT_BOUND = 0, - IO_WQ_ACCT_UNBOUND = 1, -}; +struct svc_xprt; + +struct rpc_sysfs_xprt; + +struct rpc_xprt_ops; + +struct svc_serv; -struct io_wq___2 { - struct io_wqe **wqes; +struct xprt_class; + +struct rpc_xprt { + struct kref kref; + const struct rpc_xprt_ops *ops; + unsigned int id; + const struct rpc_timeout *timeout; + struct __kernel_sockaddr_storage addr; + size_t addrlen; + int prot; + long unsigned int cong; + long unsigned int cwnd; + size_t max_payload; + struct rpc_wait_queue binding; + struct rpc_wait_queue sending; + struct rpc_wait_queue pending; + struct rpc_wait_queue backlog; + struct list_head free; + unsigned int max_reqs; + unsigned int min_reqs; + unsigned int num_reqs; long unsigned int state; - free_work_fn *free_work; - io_wq_work_fn *do_work; - struct task_struct *manager; - struct user_struct *user; - refcount_t refs; - struct completion done; - struct hlist_node cpuhp_node; - refcount_t use_refs; + unsigned char resvport: 1; + unsigned char reuseport: 1; + atomic_t swapper; + unsigned int bind_index; + struct list_head xprt_switch; + long unsigned int bind_timeout; + long unsigned int reestablish_timeout; + unsigned int connect_cookie; + struct work_struct task_cleanup; + struct timer_list timer; + long unsigned int last_used; + long unsigned int idle_timeout; + long unsigned int connect_timeout; + long unsigned int max_reconnect_timeout; + atomic_long_t queuelen; + spinlock_t transport_lock; + spinlock_t reserve_lock; + spinlock_t queue_lock; + u32 xid; + struct rpc_task *snd_task; + struct list_head xmit_queue; + atomic_long_t xmit_queuelen; + struct svc_xprt *bc_xprt; + struct svc_serv *bc_serv; + unsigned int bc_alloc_max; + unsigned int bc_alloc_count; + atomic_t bc_slot_count; + spinlock_t bc_pa_lock; + struct list_head bc_pa_list; + struct rb_root recv_queue; + struct { + long unsigned int bind_count; + long unsigned int connect_count; + long unsigned int connect_start; + long unsigned int connect_time; + long unsigned int sends; + long unsigned int recvs; + long unsigned int bad_xids; + long unsigned int max_slots; + long long unsigned int req_u; + long long unsigned int bklog_u; + long long unsigned int sending_u; + long long unsigned int pending_u; + } stat; + struct net *xprt_net; + const char *servername; + const char *address_strings[6]; + struct dentry *debugfs; + struct callback_head rcu; + const struct xprt_class *xprt_class; + struct rpc_sysfs_xprt *xprt_sysfs; + bool main; }; -struct io_cb_cancel_data { - work_cancel_fn *fn; - void *data; - int nr_running; - int nr_pending; - bool cancel_all; -}; +struct rpc_credops; -struct iomap_ops { - int (*iomap_begin)(struct inode *, loff_t, loff_t, unsigned int, struct iomap___2 *, struct iomap___2 *); - int (*iomap_end)(struct inode *, loff_t, loff_t, ssize_t, unsigned int, struct iomap___2 *); +struct rpc_cred { + struct hlist_node cr_hash; + struct list_head cr_lru; + struct callback_head cr_rcu; + struct rpc_auth *cr_auth; + const struct rpc_credops *cr_ops; + long unsigned int cr_expire; + long unsigned int cr_flags; + refcount_t cr_count; + const struct cred *cr_cred; }; -struct trace_event_raw_dax_pmd_fault_class { - struct trace_entry ent; - long unsigned int ino; - long unsigned int vm_start; - long unsigned int vm_end; - long unsigned int vm_flags; - long unsigned int address; - long unsigned int pgoff; - long unsigned int max_pgoff; - dev_t dev; - unsigned int flags; - int result; - char __data[0]; -}; +typedef u32 rpc_authflavor_t; -struct trace_event_raw_dax_pmd_load_hole_class { - struct trace_entry ent; - long unsigned int ino; - long unsigned int vm_flags; - long unsigned int address; - struct page *zero_page; - void *radix_entry; - dev_t dev; - char __data[0]; +struct auth_cred { + const struct cred *cred; + const char *principal; }; -struct trace_event_raw_dax_pmd_insert_mapping_class { - struct trace_entry ent; - long unsigned int ino; - long unsigned int vm_flags; - long unsigned int address; - long int length; - u64 pfn_val; - void *radix_entry; - dev_t dev; - int write; - char __data[0]; +struct rpc_cred_cache; + +struct rpc_authops; + +struct rpc_auth { + unsigned int au_cslack; + unsigned int au_rslack; + unsigned int au_verfsize; + unsigned int au_ralign; + long unsigned int au_flags; + const struct rpc_authops *au_ops; + rpc_authflavor_t au_flavor; + refcount_t au_count; + struct rpc_cred_cache *au_credcache; }; -struct trace_event_raw_dax_pte_fault_class { - struct trace_entry ent; - long unsigned int ino; - long unsigned int vm_flags; - long unsigned int address; - long unsigned int pgoff; - dev_t dev; - unsigned int flags; - int result; - char __data[0]; +struct rpc_credops { + const char *cr_name; + int (*cr_init)(struct rpc_auth *, struct rpc_cred *); + void (*crdestroy)(struct rpc_cred *); + int (*crmatch)(struct auth_cred *, struct rpc_cred *, int); + int (*crmarshal)(struct rpc_task *, struct xdr_stream *); + int (*crrefresh)(struct rpc_task *); + int (*crvalidate)(struct rpc_task *, struct xdr_stream *); + int (*crwrap_req)(struct rpc_task *, struct xdr_stream *); + int (*crunwrap_resp)(struct rpc_task *, struct xdr_stream *); + int (*crkey_timeout)(struct rpc_cred *); + char * (*crstringify_acceptor)(struct rpc_cred *); + bool (*crneed_reencode)(struct rpc_task *); }; -struct trace_event_raw_dax_insert_mapping { - struct trace_entry ent; - long unsigned int ino; - long unsigned int vm_flags; - long unsigned int address; - void *radix_entry; - dev_t dev; - int write; - char __data[0]; +struct rpc_auth_create_args; + +struct rpcsec_gss_info; + +struct rpc_authops { + struct module *owner; + rpc_authflavor_t au_flavor; + char *au_name; + struct rpc_auth * (*create)(const struct rpc_auth_create_args *, struct rpc_clnt *); + void (*destroy)(struct rpc_auth *); + int (*hash_cred)(struct auth_cred *, unsigned int); + struct rpc_cred * (*lookup_cred)(struct rpc_auth *, struct auth_cred *, int); + struct rpc_cred * (*crcreate)(struct rpc_auth *, struct auth_cred *, int, gfp_t); + rpc_authflavor_t (*info2flavor)(struct rpcsec_gss_info *); + int (*flavor2info)(rpc_authflavor_t, struct rpcsec_gss_info *); + int (*key_timeout)(struct rpc_auth *, struct rpc_cred *); }; -struct trace_event_raw_dax_writeback_range_class { - struct trace_entry ent; - long unsigned int ino; - long unsigned int start_index; - long unsigned int end_index; - dev_t dev; - char __data[0]; +struct rpc_auth_create_args { + rpc_authflavor_t pseudoflavor; + const char *target_name; }; -struct trace_event_raw_dax_writeback_one { - struct trace_entry ent; - long unsigned int ino; - long unsigned int pgoff; - long unsigned int pglen; - dev_t dev; - char __data[0]; +struct rpcsec_gss_oid { + unsigned int len; + u8 data[32]; }; -struct trace_event_data_offsets_dax_pmd_fault_class {}; +struct rpcsec_gss_info { + struct rpcsec_gss_oid oid; + u32 qop; + u32 service; +}; -struct trace_event_data_offsets_dax_pmd_load_hole_class {}; +struct rpc_xprt_ops { + void (*set_buffer_size)(struct rpc_xprt *, size_t, size_t); + int (*reserve_xprt)(struct rpc_xprt *, struct rpc_task *); + void (*release_xprt)(struct rpc_xprt *, struct rpc_task *); + void (*alloc_slot)(struct rpc_xprt *, struct rpc_task *); + void (*free_slot)(struct rpc_xprt *, struct rpc_rqst *); + void (*rpcbind)(struct rpc_task *); + void (*set_port)(struct rpc_xprt *, short unsigned int); + void (*connect)(struct rpc_xprt *, struct rpc_task *); + int (*buf_alloc)(struct rpc_task *); + void (*buf_free)(struct rpc_task *); + void (*prepare_request)(struct rpc_rqst *); + int (*send_request)(struct rpc_rqst *); + void (*wait_for_reply_request)(struct rpc_task *); + void (*timer)(struct rpc_xprt *, struct rpc_task *); + void (*release_request)(struct rpc_task *); + void (*close)(struct rpc_xprt *); + void (*destroy)(struct rpc_xprt *); + void (*set_connect_timeout)(struct rpc_xprt *, long unsigned int, long unsigned int); + void (*print_stats)(struct rpc_xprt *, struct seq_file *); + int (*enable_swap)(struct rpc_xprt *); + void (*disable_swap)(struct rpc_xprt *); + void (*inject_disconnect)(struct rpc_xprt *); + int (*bc_setup)(struct rpc_xprt *, unsigned int); + size_t (*bc_maxpayload)(struct rpc_xprt *); + unsigned int (*bc_num_slots)(struct rpc_xprt *); + void (*bc_free_rqst)(struct rpc_rqst *); + void (*bc_destroy)(struct rpc_xprt *, unsigned int); +}; -struct trace_event_data_offsets_dax_pmd_insert_mapping_class {}; +struct svc_program; -struct trace_event_data_offsets_dax_pte_fault_class {}; +struct svc_stat; -struct trace_event_data_offsets_dax_insert_mapping {}; +struct svc_pool; -struct trace_event_data_offsets_dax_writeback_range_class {}; +struct svc_serv_ops; -struct trace_event_data_offsets_dax_writeback_one {}; +struct svc_serv { + struct svc_program *sv_program; + struct svc_stat *sv_stats; + spinlock_t sv_lock; + unsigned int sv_nrthreads; + unsigned int sv_maxconn; + unsigned int sv_max_payload; + unsigned int sv_max_mesg; + unsigned int sv_xdrsize; + struct list_head sv_permsocks; + struct list_head sv_tempsocks; + int sv_tmpcnt; + struct timer_list sv_temptimer; + char *sv_name; + unsigned int sv_nrpools; + struct svc_pool *sv_pools; + const struct svc_serv_ops *sv_ops; + struct list_head sv_cb_list; + spinlock_t sv_cb_lock; + wait_queue_head_t sv_cb_waitq; + bool sv_bc_enabled; +}; -typedef void (*btf_trace_dax_pmd_fault)(void *, struct inode *, struct vm_fault *, long unsigned int, int); +struct xprt_create; -typedef void (*btf_trace_dax_pmd_fault_done)(void *, struct inode *, struct vm_fault *, long unsigned int, int); +struct xprt_class { + struct list_head list; + int ident; + struct rpc_xprt * (*setup)(struct xprt_create *); + struct module *owner; + char name[32]; + const char *netid[0]; +}; -typedef void (*btf_trace_dax_pmd_load_hole)(void *, struct inode *, struct vm_fault *, struct page *, void *); +struct xprt_create { + int ident; + struct net *net; + struct sockaddr *srcaddr; + struct sockaddr *dstaddr; + size_t addrlen; + const char *servername; + struct svc_xprt *bc_xprt; + struct rpc_xprt_switch *bc_xps; + unsigned int flags; +}; -typedef void (*btf_trace_dax_pmd_load_hole_fallback)(void *, struct inode *, struct vm_fault *, struct page *, void *); +struct rpc_sysfs_xprt_switch; -typedef void (*btf_trace_dax_pmd_insert_mapping)(void *, struct inode *, struct vm_fault *, long int, pfn_t, void *); +struct rpc_xprt_switch { + spinlock_t xps_lock; + struct kref xps_kref; + unsigned int xps_id; + unsigned int xps_nxprts; + unsigned int xps_nactive; + unsigned int xps_nunique_destaddr_xprts; + atomic_long_t xps_queuelen; + struct list_head xps_xprt_list; + struct net *xps_net; + const struct rpc_xprt_iter_ops *xps_iter_ops; + struct rpc_sysfs_xprt_switch *xps_sysfs; + struct callback_head xps_rcu; +}; -typedef void (*btf_trace_dax_pte_fault)(void *, struct inode *, struct vm_fault *, int); +struct rpc_stat { + const struct rpc_program *program; + unsigned int netcnt; + unsigned int netudpcnt; + unsigned int nettcpcnt; + unsigned int nettcpconn; + unsigned int netreconn; + unsigned int rpccnt; + unsigned int rpcretrans; + unsigned int rpcauthrefresh; + unsigned int rpcgarbage; +}; -typedef void (*btf_trace_dax_pte_fault_done)(void *, struct inode *, struct vm_fault *, int); +struct rpc_version; -typedef void (*btf_trace_dax_load_hole)(void *, struct inode *, struct vm_fault *, int); +struct rpc_program { + const char *name; + u32 number; + unsigned int nrvers; + const struct rpc_version **version; + struct rpc_stat *stats; + const char *pipe_dir_name; +}; -typedef void (*btf_trace_dax_insert_pfn_mkwrite_no_entry)(void *, struct inode *, struct vm_fault *, int); +struct svc_stat { + struct svc_program *program; + unsigned int netcnt; + unsigned int netudpcnt; + unsigned int nettcpcnt; + unsigned int nettcpconn; + unsigned int rpccnt; + unsigned int rpcbadfmt; + unsigned int rpcbadauth; + unsigned int rpcbadclnt; +}; -typedef void (*btf_trace_dax_insert_pfn_mkwrite)(void *, struct inode *, struct vm_fault *, int); +struct svc_version; -typedef void (*btf_trace_dax_insert_mapping)(void *, struct inode *, struct vm_fault *, void *); +struct svc_rqst; -typedef void (*btf_trace_dax_writeback_range)(void *, struct inode *, long unsigned int, long unsigned int); +struct svc_process_info; -typedef void (*btf_trace_dax_writeback_range_done)(void *, struct inode *, long unsigned int, long unsigned int); +struct svc_program { + struct svc_program *pg_next; + u32 pg_prog; + unsigned int pg_lovers; + unsigned int pg_hivers; + unsigned int pg_nvers; + const struct svc_version **pg_vers; + char *pg_name; + char *pg_class; + struct svc_stat *pg_stats; + int (*pg_authenticate)(struct svc_rqst *); + __be32 (*pg_init_request)(struct svc_rqst *, const struct svc_program *, struct svc_process_info *); + int (*pg_rpcbind_set)(struct net *, const struct svc_program *, u32, int, short unsigned int, short unsigned int); +}; -typedef void (*btf_trace_dax_writeback_one)(void *, struct inode *, long unsigned int, long unsigned int); +struct rpc_xprt_iter_ops { + void (*xpi_rewind)(struct rpc_xprt_iter *); + struct rpc_xprt * (*xpi_xprt)(struct rpc_xprt_iter *); + struct rpc_xprt * (*xpi_next)(struct rpc_xprt_iter *); +}; -struct exceptional_entry_key { - struct xarray *xa; - long unsigned int entry_start; +struct rpc_version { + u32 number; + unsigned int nrprocs; + const struct rpc_procinfo *procs; + unsigned int *counts; }; -struct wait_exceptional_entry_queue { - wait_queue_entry_t wait; - struct exceptional_entry_key key; +struct nfs_fh { + short unsigned int size; + unsigned char data[128]; }; -enum dax_wake_mode { - WAKE_ALL = 0, - WAKE_NEXT = 1, +enum nfs3_stable_how { + NFS_UNSTABLE = 0, + NFS_DATA_SYNC = 1, + NFS_FILE_SYNC = 2, + NFS_INVALID_STABLE_HOW = 4294967295, }; -struct crypto_skcipher; +struct nfs4_label { + uint32_t lfs; + uint32_t pi; + u32 len; + char *label; +}; -struct fscrypt_blk_crypto_key; +typedef struct { + char data[8]; +} nfs4_verifier; -struct fscrypt_prepared_key { - struct crypto_skcipher *tfm; - struct fscrypt_blk_crypto_key *blk_key; +enum nfs4_change_attr_type { + NFS4_CHANGE_TYPE_IS_MONOTONIC_INCR = 0, + NFS4_CHANGE_TYPE_IS_VERSION_COUNTER = 1, + NFS4_CHANGE_TYPE_IS_VERSION_COUNTER_NOPNFS = 2, + NFS4_CHANGE_TYPE_IS_TIME_METADATA = 3, + NFS4_CHANGE_TYPE_IS_UNDEFINED = 4, }; -struct fscrypt_mode; - -struct fscrypt_direct_key; +struct gss_api_mech; -struct fscrypt_info { - struct fscrypt_prepared_key ci_enc_key; - bool ci_owns_key; - bool ci_inlinecrypt; - struct fscrypt_mode *ci_mode; - struct inode *ci_inode; - struct 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 gss_ctx { + struct gss_api_mech *mech_type; + void *internal_ctx_id; + unsigned int slack; + unsigned int align; }; -struct skcipher_request { - unsigned int cryptlen; - u8 *iv; - struct scatterlist *src; - struct scatterlist *dst; - struct crypto_async_request base; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - void *__ctx[0]; -}; +struct gss_api_ops; -struct crypto_skcipher { - unsigned int reqsize; - long: 32; - long: 64; - long: 64; - long: 64; - 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 crypto_tfm base; -}; +struct pf_desc; -struct fscrypt_mode { - const char *friendly_name; - const char *cipher_str; - int keysize; - int ivsize; - int logged_impl_name; - enum blk_crypto_mode_num blk_crypto_mode; +struct gss_api_mech { + struct list_head gm_list; + struct module *gm_owner; + struct rpcsec_gss_oid gm_oid; + char *gm_name; + const struct gss_api_ops *gm_ops; + int gm_pf_num; + struct pf_desc *gm_pfs; + const char *gm_upcall_enctypes; }; -typedef enum { - FS_DECRYPT = 0, - FS_ENCRYPT = 1, -} fscrypt_direction_t; +struct auth_domain; -union fscrypt_iv { - struct { - __le64 lblk_num; - u8 nonce[16]; - }; - u8 raw[32]; - __le64 dun[4]; +struct pf_desc { + u32 pseudoflavor; + u32 qop; + u32 service; + char *name; + char *auth_domain_name; + struct auth_domain *domain; + bool datatouch; }; -struct fscrypt_str { - unsigned char *name; - u32 len; +struct auth_ops; + +struct auth_domain { + struct kref ref; + struct hlist_node hash; + char *name; + struct auth_ops *flavour; + struct callback_head callback_head; }; -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 gss_api_ops { + int (*gss_import_sec_context)(const void *, size_t, struct gss_ctx *, time64_t *, gfp_t); + u32 (*gss_get_mic)(struct gss_ctx *, struct xdr_buf *, struct xdr_netobj *); + u32 (*gss_verify_mic)(struct gss_ctx *, struct xdr_buf *, struct xdr_netobj *); + u32 (*gss_wrap)(struct gss_ctx *, int, struct xdr_buf *, struct page **); + u32 (*gss_unwrap)(struct gss_ctx *, int, int, struct xdr_buf *); + void (*gss_delete_sec_context)(void *); }; -struct fscrypt_nokey_name { - u32 dirhash[2]; - u8 bytes[149]; - u8 sha256[32]; +struct nfs4_string { + unsigned int len; + char *data; }; -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 *); - unsigned int descsize; - long: 32; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - unsigned int digestsize; - unsigned int statesize; - long: 64; - long: 64; - long: 64; - 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 crypto_alg base; +struct nfs_fsid { + uint64_t major; + uint64_t minor; }; -struct fscrypt_hkdf { - struct crypto_shash *hmac_tfm; +struct nfs4_threshold { + __u32 bm; + __u32 l_type; + __u64 rd_sz; + __u64 wr_sz; + __u64 rd_io_sz; + __u64 wr_io_sz; }; -struct fscrypt_key_specifier { - __u32 type; - __u32 __reserved; +struct nfs_fattr { + unsigned int valid; + umode_t mode; + __u32 nlink; + kuid_t uid; + kgid_t gid; + dev_t rdev; + __u64 size; union { - __u8 __reserved[32]; - __u8 descriptor[8]; - __u8 identifier[16]; - } u; + struct { + __u32 blocksize; + __u32 blocks; + } nfs2; + struct { + __u64 used; + } nfs3; + } du; + struct nfs_fsid fsid; + __u64 fileid; + __u64 mounted_on_fileid; + struct timespec64 atime; + struct timespec64 mtime; + struct timespec64 ctime; + __u64 change_attr; + __u64 pre_change_attr; + __u64 pre_size; + struct timespec64 pre_mtime; + struct timespec64 pre_ctime; + long unsigned int time_start; + long unsigned int gencount; + struct nfs4_string *owner_name; + struct nfs4_string *group_name; + struct nfs4_threshold *mdsthreshold; + struct nfs4_label *label; }; -struct fscrypt_symlink_data { - __le16 len; - char encrypted_path[1]; -} __attribute__((packed)); - -struct fscrypt_master_key_secret { - struct fscrypt_hkdf hkdf; - u32 size; - u8 raw[64]; +struct nfs_fsinfo { + struct nfs_fattr *fattr; + __u32 rtmax; + __u32 rtpref; + __u32 rtmult; + __u32 wtmax; + __u32 wtpref; + __u32 wtmult; + __u32 dtpref; + __u64 maxfilesize; + struct timespec64 time_delta; + __u32 lease_time; + __u32 nlayouttypes; + __u32 layouttype[8]; + __u32 blksize; + __u32 clone_blksize; + enum nfs4_change_attr_type change_attr_type; + __u32 xattr_support; }; -struct fscrypt_master_key { - struct fscrypt_master_key_secret mk_secret; - struct fscrypt_key_specifier mk_spec; - struct key *mk_users; - refcount_t mk_refcount; - struct list_head mk_decrypted_inodes; - spinlock_t mk_decrypted_inodes_lock; - struct fscrypt_prepared_key mk_direct_keys[10]; - struct fscrypt_prepared_key mk_iv_ino_lblk_64_keys[10]; - struct fscrypt_prepared_key mk_iv_ino_lblk_32_keys[10]; - siphash_key_t mk_ino_hash_key; - bool mk_ino_hash_key_initialized; +struct nfs_fsstat { + struct nfs_fattr *fattr; + __u64 tbytes; + __u64 fbytes; + __u64 abytes; + __u64 tfiles; + __u64 ffiles; + __u64 afiles; }; -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, +struct nfs_pathconf { + struct nfs_fattr *fattr; + __u32 max_link; + __u32 max_namelen; }; -enum key_state { - KEY_IS_UNINSTANTIATED = 0, - KEY_IS_POSITIVE = 1, +struct nfs4_change_info { + u32 atomic; + u64 before; + u64 after; }; -struct fscrypt_provisioning_key_payload { - __u32 type; - __u32 __reserved; - __u8 raw[0]; -}; +struct nfs4_slot; -struct fscrypt_add_key_arg { - struct fscrypt_key_specifier key_spec; - __u32 raw_size; - __u32 key_id; - __u32 __reserved[8]; - __u8 raw[0]; +struct nfs4_sequence_args { + struct nfs4_slot *sa_slot; + u8 sa_cache_this: 1; + u8 sa_privileged: 1; }; -struct fscrypt_remove_key_arg { - struct fscrypt_key_specifier key_spec; - __u32 removal_status_flags; - __u32 __reserved[5]; +struct nfs4_sequence_res { + struct nfs4_slot *sr_slot; + long unsigned int sr_timestamp; + int sr_status; + u32 sr_status_flags; + u32 sr_highest_slotid; + u32 sr_target_highest_slotid; }; -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 nfs_open_context; -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; - long: 32; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - struct crypto_alg base; +struct nfs_lock_context { + refcount_t count; + struct list_head list; + struct nfs_open_context *open_context; + fl_owner_t lockowner; + atomic_t io_count; + struct callback_head callback_head; }; -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 nfs_open_context { + struct nfs_lock_context lock_context; + fl_owner_t flock_owner; + struct dentry *dentry; + const struct cred *cred; + struct rpc_cred *ll_cred; + struct nfs4_state *state; + fmode_t mode; + long unsigned int flags; + int error; + struct list_head list; + struct nfs4_threshold *mdsthreshold; + struct callback_head callback_head; }; -struct fscrypt_context_v2 { - u8 version; - u8 contents_encryption_mode; - u8 filenames_encryption_mode; - u8 flags; - u8 __reserved[4]; - u8 master_key_identifier[16]; - u8 nonce[16]; -}; +struct nlm_host; -union fscrypt_context { - u8 version; - struct fscrypt_context_v1 v1; - struct fscrypt_context_v2 v2; +struct nfs_iostats; + +struct nfs_auth_info { + unsigned int flavor_len; + rpc_authflavor_t flavors[12]; }; -struct crypto_template; +struct nfs_fscache_key; -struct crypto_spawn; +struct fscache_cookie; -struct crypto_instance { - struct crypto_alg alg; - struct crypto_template *tmpl; - union { - struct hlist_node list; - struct crypto_spawn *spawns; - }; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - void *__ctx[0]; +struct pnfs_layoutdriver_type; + +struct nfs_client; + +struct nfs_server { + struct nfs_client *nfs_client; + struct list_head client_link; + struct list_head master_link; + struct rpc_clnt *client; + struct rpc_clnt *client_acl; + struct nlm_host *nlm_host; + struct nfs_iostats *io_stats; + atomic_long_t writeback; + unsigned int flags; + unsigned int fattr_valid; + unsigned int caps; + unsigned int rsize; + unsigned int rpages; + unsigned int wsize; + unsigned int wpages; + unsigned int wtmult; + unsigned int dtsize; + short unsigned int port; + unsigned int bsize; + unsigned int gxasize; + unsigned int sxasize; + unsigned int lxasize; + unsigned int acregmin; + unsigned int acregmax; + unsigned int acdirmin; + unsigned int acdirmax; + unsigned int namelen; + unsigned int options; + unsigned int clone_blksize; + enum nfs4_change_attr_type change_attr_type; + struct nfs_fsid fsid; + __u64 maxfilesize; + struct timespec64 time_delta; + long unsigned int mount_time; + struct super_block *super; + dev_t s_dev; + struct nfs_auth_info auth_info; + struct nfs_fscache_key *fscache_key; + struct fscache_cookie *fscache; + u32 pnfs_blksize; + u32 attr_bitmask[3]; + u32 attr_bitmask_nl[3]; + u32 exclcreat_bitmask[3]; + u32 cache_consistency_bitmask[3]; + u32 acl_bitmask; + u32 fh_expire_type; + struct pnfs_layoutdriver_type *pnfs_curr_ld; + struct rpc_wait_queue roc_rpcwaitq; + void *pnfs_ld_data; + struct rb_root state_owners; + struct ida openowner_id; + struct ida lockowner_id; + struct list_head state_owners_lru; + struct list_head layouts; + struct list_head delegations; + struct list_head ss_copies; + long unsigned int mig_gen; + long unsigned int mig_status; + void (*destroy)(struct nfs_server *); + atomic_t active; + struct __kernel_sockaddr_storage mountd_address; + size_t mountd_addrlen; + u32 mountd_version; + short unsigned int mountd_port; + short unsigned int mountd_protocol; + struct rpc_wait_queue uoc_rpcwaitq; + unsigned int read_hdrsize; + const struct cred *cred; + bool has_sec_mnt_opts; }; -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 nfs_subversion; + +struct idmap; + +struct nfs4_slot_table; + +struct nfs4_session; + +struct nfs_rpc_ops; + +struct nfs4_minor_version_ops; + +struct nfs41_server_owner; + +struct nfs41_server_scope; + +struct nfs41_impl_id; + +struct nfs_client { + refcount_t cl_count; + atomic_t cl_mds_count; + int cl_cons_state; + long unsigned int cl_res_state; + long unsigned int cl_flags; + struct __kernel_sockaddr_storage cl_addr; + size_t cl_addrlen; + char *cl_hostname; + char *cl_acceptor; + struct list_head cl_share_link; + struct list_head cl_superblocks; + struct rpc_clnt *cl_rpcclient; + const struct nfs_rpc_ops *rpc_ops; + int cl_proto; + struct nfs_subversion *cl_nfs_mod; + u32 cl_minorversion; + unsigned int cl_nconnect; + unsigned int cl_max_connect; + const char *cl_principal; + struct list_head cl_ds_clients; + u64 cl_clientid; + nfs4_verifier cl_confirm; + long unsigned int cl_state; + spinlock_t cl_lock; + long unsigned int cl_lease_time; + long unsigned int cl_last_renewal; + struct delayed_work cl_renewd; + struct rpc_wait_queue cl_rpcwaitq; + struct idmap *cl_idmap; + const char *cl_owner_id; + u32 cl_cb_ident; + const struct nfs4_minor_version_ops *cl_mvops; + long unsigned int cl_mig_gen; + struct nfs4_slot_table *cl_slot_tbl; + u32 cl_seqid; + u32 cl_exchange_flags; + struct nfs4_session *cl_session; + bool cl_preserve_clid; + struct nfs41_server_owner *cl_serverowner; + struct nfs41_server_scope *cl_serverscope; + struct nfs41_impl_id *cl_implid; + long unsigned int cl_sp4_flags; + wait_queue_head_t cl_lock_waitq; + char cl_ipaddr[48]; + struct fscache_cookie *fscache; + struct net *cl_net; + struct list_head pending_cb_stateids; }; -struct rtattr; +struct pnfs_layout_segment; -struct crypto_template { +struct nfs_seqid { + struct nfs_seqid_counter *sequence; struct list_head list; - struct hlist_head instances; - struct module *module; - int (*create)(struct crypto_template *, struct rtattr **); - char name[128]; + struct rpc_task *task; }; -struct user_key_payload { - struct callback_head rcu; - short unsigned int datalen; - long: 48; - char data[0]; +struct nfs_write_verifier { + char data[8]; }; -struct fscrypt_key { - __u32 mode; - __u8 raw[64]; - __u32 size; +struct nfs_writeverf { + struct nfs_write_verifier verifier; + enum nfs3_stable_how committed; }; -struct fscrypt_direct_key { - 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 nfs_pgio_args { + struct nfs4_sequence_args seq_args; + struct nfs_fh *fh; + struct nfs_open_context *context; + struct nfs_lock_context *lock_context; + nfs4_stateid stateid; + __u64 offset; + __u32 count; + unsigned int pgbase; + struct page **pages; + union { + unsigned int replen; + struct { + const u32 *bitmask; + u32 bitmask_store[3]; + enum nfs3_stable_how stable; + }; + }; }; -struct fscrypt_get_policy_ex_arg { - __u64 policy_size; +struct nfs_pgio_res { + struct nfs4_sequence_res seq_res; + struct nfs_fattr *fattr; + __u64 count; + __u32 op_status; union { - __u8 version; - struct fscrypt_policy_v1 v1; - struct fscrypt_policy_v2 v2; - } policy; + struct { + unsigned int replen; + int eof; + }; + struct { + struct nfs_writeverf *verf; + const struct nfs_server *server; + }; + }; }; -struct fscrypt_dummy_policy { - const union fscrypt_policy *policy; +struct nfs_commitargs { + struct nfs4_sequence_args seq_args; + struct nfs_fh *fh; + __u64 offset; + __u32 count; + const u32 *bitmask; }; -struct fscrypt_blk_crypto_key { - struct blk_crypto_key base; - int num_devs; - struct request_queue *devs[0]; +struct nfs_commitres { + struct nfs4_sequence_res seq_res; + __u32 op_status; + struct nfs_fattr *fattr; + struct nfs_writeverf *verf; + const struct nfs_server *server; }; -struct fsverity_hash_alg; - -struct merkle_tree_params { - struct fsverity_hash_alg *hash_alg; - const u8 *hashstate; - unsigned int digest_size; - unsigned int block_size; - unsigned int hashes_per_block; - unsigned int log_blocksize; - unsigned int log_arity; - unsigned int num_levels; - u64 tree_size; - long unsigned int level0_blocks; - u64 level_start[8]; +struct nfs_removeargs { + struct nfs4_sequence_args seq_args; + const struct nfs_fh *fh; + struct qstr name; }; -struct fsverity_info { - struct merkle_tree_params tree_params; - u8 root_hash[64]; - u8 file_digest[64]; - const struct inode *inode; +struct nfs_removeres { + struct nfs4_sequence_res seq_res; + struct nfs_server *server; + struct nfs_fattr *dir_attr; + struct nfs4_change_info cinfo; }; -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 nfs_renameargs { + struct nfs4_sequence_args seq_args; + const struct nfs_fh *old_dir; + const struct nfs_fh *new_dir; + const struct qstr *old_name; + const struct qstr *new_name; }; -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 nfs_renameres { + struct nfs4_sequence_res seq_res; + struct nfs_server *server; + struct nfs4_change_info old_cinfo; + struct nfs_fattr *old_fattr; + struct nfs4_change_info new_cinfo; + struct nfs_fattr *new_fattr; }; -struct crypto_ahash; - -struct fsverity_hash_alg { - struct crypto_ahash *tfm; +struct nfs_entry { + __u64 ino; + __u64 cookie; + __u64 prev_cookie; const char *name; - unsigned int digest_size; - unsigned int block_size; - mempool_t req_pool; + unsigned int len; + int eof; + struct nfs_fh *fh; + struct nfs_fattr *fattr; + struct nfs4_label *label; + unsigned char d_type; + struct nfs_server *server; }; -struct ahash_request; - -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 reqsize; - long: 32; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - struct crypto_tfm base; +struct nfs_readdir_arg { + struct dentry *dentry; + const struct cred *cred; + __be32 *verf; + u64 cookie; + struct page **pages; + unsigned int page_len; + bool plus; }; -struct ahash_request { - struct crypto_async_request base; - unsigned int nbytes; - struct scatterlist *src; - u8 *result; - void *priv; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - void *__ctx[0]; +struct nfs_readdir_res { + __be32 *verf; }; -struct hash_alg_common { - unsigned int digestsize; - unsigned int statesize; - long: 64; - long: 64; - long: 64; - 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 crypto_alg base; +struct nfs4_pathname { + unsigned int ncomponents; + struct nfs4_string components[512]; }; -struct fsverity_digest { - __u16 digest_algorithm; - __u16 digest_size; - __u8 digest[0]; +struct nfs4_fs_location { + unsigned int nservers; + struct nfs4_string servers[10]; + struct nfs4_pathname rootpath; }; -struct fsverity_formatted_digest { - char magic[8]; - __le16 digest_algorithm; - __le16 digest_size; - __u8 digest[0]; +struct nfs4_fs_locations { + struct nfs_fattr *fattr; + const struct nfs_server *server; + struct nfs4_pathname fs_path; + int nlocations; + struct nfs4_fs_location locations[10]; }; -struct flock64 { - short int l_type; - short int l_whence; - __kernel_loff_t l_start; - __kernel_loff_t l_len; - __kernel_pid_t l_pid; +struct nfstime4 { + u64 seconds; + u32 nseconds; }; -struct trace_event_raw_locks_get_lock_context { - struct trace_entry ent; - long unsigned int i_ino; - dev_t s_dev; - unsigned char type; - struct file_lock_context *ctx; - char __data[0]; +struct pnfs_commit_ops; + +struct pnfs_ds_commit_info { + struct list_head commits; + unsigned int nwritten; + unsigned int ncommitting; + const struct pnfs_commit_ops *ops; }; -struct trace_event_raw_filelock_lock { - struct trace_entry ent; - struct file_lock *fl; - long unsigned int 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 nfs41_server_owner { + uint64_t minor_id; + uint32_t major_id_sz; + char major_id[1024]; }; -struct trace_event_raw_filelock_lease { - struct trace_entry ent; - struct file_lock *fl; - long unsigned int i_ino; - dev_t s_dev; - struct file_lock *fl_blocker; - fl_owner_t fl_owner; - unsigned int fl_flags; - unsigned char fl_type; - long unsigned int fl_break_time; - long unsigned int fl_downgrade_time; - char __data[0]; +struct nfs41_server_scope { + uint32_t server_scope_sz; + char server_scope[1024]; }; -struct trace_event_raw_generic_add_lease { - struct trace_entry ent; - long unsigned int 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 nfs41_impl_id { + char domain[1025]; + char name[1025]; + struct nfstime4 date; }; -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 nfs_page_array { + struct page **pagevec; + unsigned int npages; + struct page *page_array[8]; }; -struct trace_event_data_offsets_locks_get_lock_context {}; +struct nfs_page; -struct trace_event_data_offsets_filelock_lock {}; +struct nfs_rw_ops; -struct trace_event_data_offsets_filelock_lease {}; +struct nfs_io_completion; -struct trace_event_data_offsets_generic_add_lease {}; +struct nfs_direct_req; -struct trace_event_data_offsets_leases_conflict {}; +struct nfs_pgio_completion_ops; -typedef void (*btf_trace_locks_get_lock_context)(void *, struct inode *, int, struct file_lock_context *); +struct nfs_pgio_header { + struct inode *inode; + const struct cred *cred; + struct list_head pages; + struct nfs_page *req; + struct nfs_writeverf verf; + fmode_t rw_mode; + struct pnfs_layout_segment *lseg; + loff_t io_start; + const struct rpc_call_ops *mds_ops; + void (*release)(struct nfs_pgio_header *); + const struct nfs_pgio_completion_ops *completion_ops; + const struct nfs_rw_ops *rw_ops; + struct nfs_io_completion *io_completion; + struct nfs_direct_req *dreq; + int pnfs_error; + int error; + unsigned int good_bytes; + long unsigned int flags; + struct rpc_task task; + struct nfs_fattr fattr; + struct nfs_pgio_args args; + struct nfs_pgio_res res; + long unsigned int timestamp; + int (*pgio_done_cb)(struct rpc_task *, struct nfs_pgio_header *); + __u64 mds_offset; + struct nfs_page_array page_array; + struct nfs_client *ds_clp; + u32 ds_commit_idx; + u32 pgio_mirror_idx; +}; -typedef void (*btf_trace_posix_lock_inode)(void *, struct inode *, struct file_lock *, int); +struct nfs_pgio_completion_ops { + void (*error_cleanup)(struct list_head *, int); + void (*init_hdr)(struct nfs_pgio_header *); + void (*completion)(struct nfs_pgio_header *); + void (*reschedule_io)(struct nfs_pgio_header *); +}; -typedef void (*btf_trace_fcntl_setlk)(void *, struct inode *, struct file_lock *, int); +struct nfs_mds_commit_info { + atomic_t rpcs_out; + atomic_long_t ncommit; + struct list_head list; +}; -typedef void (*btf_trace_locks_remove_posix)(void *, struct inode *, struct file_lock *, int); +struct nfs_commit_data; -typedef void (*btf_trace_flock_lock_inode)(void *, struct inode *, struct file_lock *, int); +struct nfs_commit_info; -typedef void (*btf_trace_break_lease_noblock)(void *, struct inode *, struct file_lock *); +struct nfs_commit_completion_ops { + void (*completion)(struct nfs_commit_data *); + void (*resched_write)(struct nfs_commit_info *, struct nfs_page *); +}; -typedef void (*btf_trace_break_lease_block)(void *, struct inode *, struct file_lock *); +struct nfs_commit_data { + struct rpc_task task; + struct inode *inode; + const struct cred *cred; + struct nfs_fattr fattr; + struct nfs_writeverf verf; + struct list_head pages; + struct list_head list; + struct nfs_direct_req *dreq; + struct nfs_commitargs args; + struct nfs_commitres res; + struct nfs_open_context *context; + struct pnfs_layout_segment *lseg; + struct nfs_client *ds_clp; + int ds_commit_index; + loff_t lwb; + const struct rpc_call_ops *mds_ops; + const struct nfs_commit_completion_ops *completion_ops; + int (*commit_done_cb)(struct rpc_task *, struct nfs_commit_data *); + long unsigned int flags; +}; -typedef void (*btf_trace_break_lease_unblock)(void *, struct inode *, struct file_lock *); +struct nfs_commit_info { + struct inode *inode; + struct nfs_mds_commit_info *mds; + struct pnfs_ds_commit_info *ds; + struct nfs_direct_req *dreq; + const struct nfs_commit_completion_ops *completion_ops; +}; -typedef void (*btf_trace_generic_delete_lease)(void *, struct inode *, struct file_lock *); +struct nfs_unlinkdata { + struct nfs_removeargs args; + struct nfs_removeres res; + struct dentry *dentry; + wait_queue_head_t wq; + const struct cred *cred; + struct nfs_fattr dir_attr; + long int timeout; +}; -typedef void (*btf_trace_time_out_leases)(void *, struct inode *, struct file_lock *); +struct nfs_renamedata { + struct nfs_renameargs args; + struct nfs_renameres res; + const struct cred *cred; + struct inode *old_dir; + struct dentry *old_dentry; + struct nfs_fattr old_fattr; + struct inode *new_dir; + struct dentry *new_dentry; + struct nfs_fattr new_fattr; + void (*complete)(struct rpc_task *, struct nfs_renamedata *); + long int timeout; + bool cancelled; +}; -typedef void (*btf_trace_generic_add_lease)(void *, struct inode *, struct file_lock *); +struct nlmclnt_operations; -typedef void (*btf_trace_leases_conflict)(void *, bool, struct file_lock *, struct file_lock *); +struct nfs_client_initdata; -struct file_lock_list_struct { - spinlock_t lock; - struct hlist_head hlist; +struct nfs_access_entry; + +struct nfs_rpc_ops { + u32 version; + const struct dentry_operations *dentry_ops; + const struct inode_operations *dir_inode_ops; + const struct inode_operations *file_inode_ops; + const struct file_operations *file_ops; + const struct nlmclnt_operations *nlmclnt_ops; + int (*getroot)(struct nfs_server *, struct nfs_fh *, struct nfs_fsinfo *); + int (*submount)(struct fs_context *, struct nfs_server *); + int (*try_get_tree)(struct fs_context *); + int (*getattr)(struct nfs_server *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *, struct inode *); + int (*setattr)(struct dentry *, struct nfs_fattr *, struct iattr *); + int (*lookup)(struct inode *, struct dentry *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *); + int (*lookupp)(struct inode *, struct nfs_fh *, struct nfs_fattr *, struct nfs4_label *); + int (*access)(struct inode *, struct nfs_access_entry *); + int (*readlink)(struct inode *, struct page *, unsigned int, unsigned int); + int (*create)(struct inode *, struct dentry *, struct iattr *, int); + int (*remove)(struct inode *, struct dentry *); + void (*unlink_setup)(struct rpc_message *, struct dentry *, struct inode *); + void (*unlink_rpc_prepare)(struct rpc_task *, struct nfs_unlinkdata *); + int (*unlink_done)(struct rpc_task *, struct inode *); + void (*rename_setup)(struct rpc_message *, struct dentry *, struct dentry *); + void (*rename_rpc_prepare)(struct rpc_task *, struct nfs_renamedata *); + int (*rename_done)(struct rpc_task *, struct inode *, struct inode *); + int (*link)(struct inode *, struct inode *, const struct qstr *); + int (*symlink)(struct inode *, struct dentry *, struct page *, unsigned int, struct iattr *); + int (*mkdir)(struct inode *, struct dentry *, struct iattr *); + int (*rmdir)(struct inode *, const struct qstr *); + int (*readdir)(struct nfs_readdir_arg *, struct nfs_readdir_res *); + int (*mknod)(struct inode *, struct dentry *, struct iattr *, dev_t); + int (*statfs)(struct nfs_server *, struct nfs_fh *, struct nfs_fsstat *); + int (*fsinfo)(struct nfs_server *, struct nfs_fh *, struct nfs_fsinfo *); + int (*pathconf)(struct nfs_server *, struct nfs_fh *, struct nfs_pathconf *); + int (*set_capabilities)(struct nfs_server *, struct nfs_fh *); + int (*decode_dirent)(struct xdr_stream *, struct nfs_entry *, bool); + int (*pgio_rpc_prepare)(struct rpc_task *, struct nfs_pgio_header *); + void (*read_setup)(struct nfs_pgio_header *, struct rpc_message *); + int (*read_done)(struct rpc_task *, struct nfs_pgio_header *); + void (*write_setup)(struct nfs_pgio_header *, struct rpc_message *, struct rpc_clnt **); + int (*write_done)(struct rpc_task *, struct nfs_pgio_header *); + void (*commit_setup)(struct nfs_commit_data *, struct rpc_message *, struct rpc_clnt **); + void (*commit_rpc_prepare)(struct rpc_task *, struct nfs_commit_data *); + int (*commit_done)(struct rpc_task *, struct nfs_commit_data *); + int (*lock)(struct file *, int, struct file_lock *); + int (*lock_check_bounds)(const struct file_lock *); + void (*clear_acl_cache)(struct inode *); + void (*close_context)(struct nfs_open_context *, int); + struct inode * (*open_context)(struct inode *, struct nfs_open_context *, int, struct iattr *, int *); + int (*have_delegation)(struct inode *, fmode_t); + struct nfs_client * (*alloc_client)(const struct nfs_client_initdata *); + struct nfs_client * (*init_client)(struct nfs_client *, const struct nfs_client_initdata *); + void (*free_client)(struct nfs_client *); + struct nfs_server * (*create_server)(struct fs_context *); + struct nfs_server * (*clone_server)(struct nfs_server *, struct nfs_fh *, struct nfs_fattr *, rpc_authflavor_t); + int (*discover_trunking)(struct nfs_server *, struct nfs_fh *); + void (*enable_swap)(struct inode *); + void (*disable_swap)(struct inode *); }; -struct locks_iterator { - int li_cpu; - loff_t li_pos; +struct nfs_access_entry { + struct rb_node rb_node; + struct list_head lru; + const struct cred *cred; + u64 timestamp; + __u32 mask; + struct callback_head callback_head; }; -typedef unsigned int __kernel_uid_t; +struct nfs4_state_recovery_ops; -typedef unsigned int __kernel_gid_t; +struct nfs4_state_maintenance_ops; -struct gnu_property { - u32 pr_type; - u32 pr_datasz; -}; +struct nfs4_mig_recovery_ops; -struct elf_prpsinfo { - char pr_state; - char pr_sname; - char pr_zomb; - char pr_nice; - long unsigned int 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 nfs4_minor_version_ops { + u32 minor_version; + unsigned int init_caps; + int (*init_client)(struct nfs_client *); + void (*shutdown_client)(struct nfs_client *); + bool (*match_stateid)(const nfs4_stateid *, const nfs4_stateid *); + int (*find_root_sec)(struct nfs_server *, struct nfs_fh *, struct nfs_fsinfo *); + void (*free_lock_state)(struct nfs_server *, struct nfs4_lock_state *); + int (*test_and_free_expired)(struct nfs_server *, nfs4_stateid *, const struct cred *); + struct nfs_seqid * (*alloc_seqid)(struct nfs_seqid_counter *, gfp_t); + void (*session_trunk)(struct rpc_clnt *, struct rpc_xprt *, void *); + const struct rpc_call_ops *call_sync_ops; + const struct nfs4_state_recovery_ops *reboot_recovery_ops; + const struct nfs4_state_recovery_ops *nograce_recovery_ops; + const struct nfs4_state_maintenance_ops *state_renewal_ops; + const struct nfs4_mig_recovery_ops *mig_recovery_ops; }; -struct core_vma_metadata { - long unsigned int start; - long unsigned int end; +struct nfs4_state_owner; + +struct nfs4_state { + struct list_head open_states; + struct list_head inode_states; + struct list_head lock_states; + struct nfs4_state_owner *owner; + struct inode *inode; long unsigned int flags; - long unsigned int dump_size; + spinlock_t state_lock; + seqlock_t seqlock; + nfs4_stateid stateid; + nfs4_stateid open_stateid; + unsigned int n_rdonly; + unsigned int n_wronly; + unsigned int n_rdwr; + fmode_t state; + refcount_t count; + wait_queue_head_t waitq; + struct callback_head callback_head; }; -struct memelfnote { - const char *name; - int type; - unsigned int datasz; - void *data; +struct cache_head { + struct hlist_node cache_list; + time64_t expiry_time; + time64_t last_refresh; + struct kref ref; + long unsigned int flags; }; -struct elf_thread_core_info { - struct elf_thread_core_info *next; - struct task_struct *task; - struct elf_prstatus prstatus; - struct memelfnote notes[0]; -}; +struct cache_deferred_req; -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 cache_req { + struct cache_deferred_req * (*defer)(struct cache_req *); + int thread_wait; }; -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; +struct cache_deferred_req { + struct hlist_node hash; + struct list_head recent; + struct cache_head *item; + void *owner; + void (*revisit)(struct cache_deferred_req *, int); }; -typedef u16 __compat_uid_t; - -typedef u16 __compat_gid_t; - -typedef unsigned int compat_elf_greg_t; +struct svc_cred { + kuid_t cr_uid; + kgid_t cr_gid; + struct group_info *cr_group_info; + u32 cr_flavor; + char *cr_raw_principal; + char *cr_principal; + char *cr_targ_princ; + struct gss_api_mech *cr_gss_mech; +}; -typedef compat_elf_greg_t compat_elf_gregset_t[18]; +struct auth_ops { + char *name; + struct module *owner; + int flavour; + int (*accept)(struct svc_rqst *); + int (*release)(struct svc_rqst *); + void (*domain_release)(struct auth_domain *); + int (*set_client)(struct svc_rqst *); +}; + +struct svc_cacherep; + +struct svc_procedure; + +struct svc_deferred_req; + +struct svc_rqst { + struct list_head rq_all; + struct callback_head rq_rcu_head; + struct svc_xprt *rq_xprt; + struct __kernel_sockaddr_storage rq_addr; + size_t rq_addrlen; + struct __kernel_sockaddr_storage rq_daddr; + size_t rq_daddrlen; + struct svc_serv *rq_server; + struct svc_pool *rq_pool; + const struct svc_procedure *rq_procinfo; + struct auth_ops *rq_authop; + struct svc_cred rq_cred; + void *rq_xprt_ctxt; + struct svc_deferred_req *rq_deferred; + size_t rq_xprt_hlen; + struct xdr_buf rq_arg; + struct xdr_stream rq_arg_stream; + struct xdr_stream rq_res_stream; + struct page *rq_scratch_page; + struct xdr_buf rq_res; + struct page *rq_pages[260]; + struct page **rq_respages; + struct page **rq_next_page; + struct page **rq_page_end; + struct pagevec rq_pvec; + struct kvec rq_vec[259]; + struct bio_vec rq_bvec[259]; + __be32 rq_xid; + u32 rq_prog; + u32 rq_vers; + u32 rq_proc; + u32 rq_prot; + int rq_cachetype; + long unsigned int rq_flags; + ktime_t rq_qtime; + void *rq_argp; + void *rq_resp; + void *rq_auth_data; + __be32 rq_auth_stat; + int rq_auth_slack; + int rq_reserved; + ktime_t rq_stime; + struct cache_req rq_chandle; + struct auth_domain *rq_client; + struct auth_domain *rq_gssclient; + struct svc_cacherep *rq_cacherep; + struct task_struct *rq_task; + spinlock_t rq_lock; + struct net *rq_bc_net; + void **rq_lease_breaker; +}; + +struct svc_pool_stats { + atomic_long_t packets; + long unsigned int sockets_queued; + atomic_long_t threads_woken; + atomic_long_t threads_timedout; +}; + +struct svc_pool { + unsigned int sp_id; + spinlock_t sp_lock; + struct list_head sp_sockets; + unsigned int sp_nrthreads; + struct list_head sp_all_threads; + struct svc_pool_stats sp_stats; + long unsigned int sp_flags; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; +}; + +struct svc_serv_ops { + void (*svo_shutdown)(struct svc_serv *, struct net *); + int (*svo_function)(void *); + void (*svo_enqueue_xprt)(struct svc_xprt *); + int (*svo_setup)(struct svc_serv *, struct svc_pool *, int); + struct module *svo_module; +}; + +struct svc_procedure { + __be32 (*pc_func)(struct svc_rqst *); + int (*pc_decode)(struct svc_rqst *, __be32 *); + int (*pc_encode)(struct svc_rqst *, __be32 *); + void (*pc_release)(struct svc_rqst *); + unsigned int pc_argsize; + unsigned int pc_ressize; + unsigned int pc_cachetype; + unsigned int pc_xdrressize; + const char *pc_name; +}; + +struct svc_deferred_req { + u32 prot; + struct svc_xprt *xprt; + struct __kernel_sockaddr_storage addr; + size_t addrlen; + struct __kernel_sockaddr_storage daddr; + size_t daddrlen; + void *xprt_ctxt; + struct cache_deferred_req handle; + size_t xprt_hlen; + int argslen; + __be32 args[0]; +}; -struct compat_elf_siginfo { - compat_int_t si_signo; - compat_int_t si_code; - compat_int_t si_errno; +struct svc_process_info { + union { + int (*dispatch)(struct svc_rqst *, __be32 *); + struct { + unsigned int lovers; + unsigned int hivers; + } mismatch; + }; }; -struct compat_elf_prstatus { - struct compat_elf_siginfo pr_info; - short int 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; - compat_elf_gregset_t pr_reg; - compat_int_t pr_fpvalid; +struct svc_version { + u32 vs_vers; + u32 vs_nproc; + const struct svc_procedure *vs_proc; + unsigned int *vs_count; + u32 vs_xdrsize; + bool vs_hidden; + bool vs_rpcb_optnl; + bool vs_need_cong_ctrl; + int (*vs_dispatch)(struct svc_rqst *, __be32 *); }; -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 nfs4_ssc_client_ops; + +struct nfs_ssc_client_ops; + +struct nfs_ssc_client_ops_tbl { + const struct nfs4_ssc_client_ops *ssc_nfs4_ops; + const struct nfs_ssc_client_ops *ssc_nfs_ops; }; -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 nfs4_ssc_client_ops { + struct file * (*sco_open)(struct vfsmount *, struct nfs_fh *, nfs4_stateid *); + void (*sco_close)(struct file *); }; -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 nfs_ssc_client_ops { + void (*sco_sb_deactive)(struct super_block *); }; -struct mb_cache_entry { - struct list_head e_list; - struct hlist_bl_node e_hash_list; - atomic_t e_refcnt; - u32 e_key; - u32 e_referenced: 1; - u32 e_reusable: 1; - u64 e_value; +struct nfs4_state_recovery_ops { + int owner_flag_bit; + int state_flag_bit; + int (*recover_open)(struct nfs4_state_owner *, struct nfs4_state *); + int (*recover_lock)(struct nfs4_state *, struct file_lock *); + int (*establish_clid)(struct nfs_client *, const struct cred *); + int (*reclaim_complete)(struct nfs_client *, const struct cred *); + int (*detect_trunking)(struct nfs_client *, struct nfs_client **, const struct cred *); }; -struct mb_cache { - struct hlist_bl_head *c_hash; - int c_bucket_bits; - long unsigned int c_max_entries; - spinlock_t c_list_lock; - struct list_head c_list; - long unsigned int c_entry_count; - struct shrinker c_shrink; - struct work_struct c_shrink_work; +struct nfs4_state_maintenance_ops { + int (*sched_state_renewal)(struct nfs_client *, const struct cred *, unsigned int); + const struct cred * (*get_state_renewal_cred)(struct nfs_client *); + int (*renew_lease)(struct nfs_client *, const struct cred *); }; -struct posix_acl_xattr_entry { - __le16 e_tag; - __le16 e_perm; - __le32 e_id; +struct nfs4_mig_recovery_ops { + int (*get_locations)(struct nfs_server *, struct nfs_fh *, struct nfs4_fs_locations *, struct page *, const struct cred *); + int (*fsid_present)(struct inode *, const struct cred *); }; -struct posix_acl_xattr_header { - __le32 a_version; +struct nfs4_state_owner { + struct nfs_server *so_server; + struct list_head so_lru; + long unsigned int so_expires; + struct rb_node so_server_node; + const struct cred *so_cred; + spinlock_t so_lock; + atomic_t so_count; + long unsigned int so_flags; + struct list_head so_states; + struct nfs_seqid_counter so_seqid; + seqcount_spinlock_t so_reclaim_seqcount; + struct mutex so_delegreturn_mutex; }; struct core_name { @@ -43694,8 +43626,8 @@ struct trace_event_raw_iomap_range_class { dev_t dev; u64 ino; loff_t size; - long unsigned int offset; - unsigned int length; + loff_t offset; + u64 length; char __data[0]; }; @@ -43712,15 +43644,14 @@ struct trace_event_raw_iomap_class { char __data[0]; }; -struct trace_event_raw_iomap_apply { +struct trace_event_raw_iomap_iter { struct trace_entry ent; dev_t dev; u64 ino; loff_t pos; - loff_t length; + u64 length; unsigned int flags; const void *ops; - void *actor; long unsigned int caller; char __data[0]; }; @@ -43731,27 +43662,31 @@ struct trace_event_data_offsets_iomap_range_class {}; struct trace_event_data_offsets_iomap_class {}; -struct trace_event_data_offsets_iomap_apply {}; +struct trace_event_data_offsets_iomap_iter {}; 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 *, long unsigned int, unsigned int); +typedef void (*btf_trace_iomap_writepage)(void *, struct inode *, loff_t, u64); -typedef void (*btf_trace_iomap_releasepage)(void *, struct inode *, long unsigned int, unsigned int); +typedef void (*btf_trace_iomap_releasepage)(void *, struct inode *, loff_t, u64); -typedef void (*btf_trace_iomap_invalidatepage)(void *, struct inode *, long unsigned int, unsigned int); +typedef void (*btf_trace_iomap_invalidatepage)(void *, struct inode *, loff_t, u64); -typedef void (*btf_trace_iomap_dio_invalidate_fail)(void *, struct inode *, long unsigned int, unsigned int); +typedef void (*btf_trace_iomap_dio_invalidate_fail)(void *, struct inode *, loff_t, u64); -typedef void (*btf_trace_iomap_apply_dstmap)(void *, struct inode *, struct iomap___2 *); +typedef void (*btf_trace_iomap_iter_dstmap)(void *, struct inode *, struct iomap *); -typedef void (*btf_trace_iomap_apply_srcmap)(void *, struct inode *, struct iomap___2 *); +typedef void (*btf_trace_iomap_iter_srcmap)(void *, struct inode *, struct iomap *); -typedef void (*btf_trace_iomap_apply)(void *, struct inode *, loff_t, loff_t, unsigned int, const void *, void *, long unsigned int); +typedef void (*btf_trace_iomap_iter)(void *, struct iomap_iter *, const void *, long unsigned int); -typedef loff_t (*iomap_actor_t)(struct inode *, loff_t, loff_t, void *, struct iomap___2 *, struct iomap___2 *); +enum { + BIOSET_NEED_BVECS = 1, + BIOSET_NEED_RESCUER = 2, + BIOSET_PERCPU_CACHE = 4, +}; struct iomap_ioend { struct list_head io_list; @@ -43760,7 +43695,6 @@ struct iomap_ioend { struct inode *io_inode; size_t io_size; loff_t io_offset; - void *io_private; struct bio *io_bio; struct bio io_inline_bio; }; @@ -43774,7 +43708,7 @@ struct iomap_writeback_ops { }; struct iomap_writepage_ctx { - struct iomap___2 iomap; + struct iomap iomap; struct iomap_ioend *ioend; const struct iomap_writeback_ops *ops; }; @@ -43793,13 +43727,9 @@ struct iomap_readpage_ctx { struct readahead_control *rac; }; -enum { - IOMAP_WRITE_F_UNSHARE = 1, -}; - struct iomap_dio_ops { int (*end_io)(struct kiocb *, ssize_t, int, unsigned int); - blk_qc_t (*submit_io)(struct inode *, struct iomap___2 *, struct bio *, loff_t); + blk_qc_t (*submit_io)(const struct iomap_iter *, struct bio *, loff_t); }; struct iomap_dio { @@ -43810,6 +43740,7 @@ struct iomap_dio { atomic_t ref; unsigned int flags; int error; + size_t done_before; bool wait_for_completion; union { struct { @@ -43824,18 +43755,14 @@ struct iomap_dio { }; }; -struct fiemap_ctx { - struct fiemap_extent_info *fi; - struct iomap___2 prev; -}; - struct iomap_swapfile_info { - struct iomap___2 iomap; + struct iomap iomap; struct swap_info_struct *sis; uint64_t lowest_ppage; uint64_t highest_ppage; long unsigned int nr_pages; int nr_extents; + struct file *file; }; enum { @@ -43853,6 +43780,11 @@ enum { DQF_INFO_DIRTY_B = 17, }; +struct dqstats { + long unsigned int stat[8]; + struct percpu_counter counter[8]; +}; + enum { _DQUOT_USAGE_ENABLED = 0, _DQUOT_LIMITS_ENABLED = 1, @@ -43941,7 +43873,10 @@ struct fs_quota_statv { __s32 qs_rtbtimelimit; __u16 qs_bwarnlimit; __u16 qs_iwarnlimit; - __u64 qs_pad2[8]; + __u16 qs_rtbwarnlimit; + __u16 qs_pad3; + __u32 qs_pad4; + __u64 qs_pad2[7]; }; struct if_dqblk { @@ -44114,6 +44049,12 @@ struct syscall_info { struct seccomp_data data; }; +enum resctrl_conf_type { + CDP_NONE = 0, + CDP_CODE = 1, + CDP_DATA = 2, +}; + typedef struct dentry *instantiate_t(struct dentry *, struct task_struct *, const void *); struct pid_entry { @@ -44163,7 +44104,7 @@ struct seq_net_private { struct net *net; }; -struct bpf_iter_aux_info___2; +struct bpf_iter_aux_info; enum kcore_type { KCORE_TEXT = 0, @@ -44171,14 +44112,11 @@ enum kcore_type { KCORE_RAM = 2, KCORE_VMEMMAP = 3, KCORE_USER = 4, - KCORE_OTHER = 5, - KCORE_REMAP = 6, }; struct kcore_list { struct list_head list; long unsigned int addr; - long unsigned int vaddr; size_t size; int type; }; @@ -44196,6 +44134,12 @@ struct vmcoredd_node { unsigned int size; }; +typedef struct elf32_hdr Elf32_Ehdr; + +typedef struct elf32_phdr Elf32_Phdr; + +typedef struct elf32_note Elf32_Nhdr; + typedef struct elf64_note Elf64_Nhdr; struct vmcoredd_header { @@ -44393,15 +44337,6 @@ struct pts_fs_info { struct dentry *ptmx_dentry; }; -struct dcookie_struct { - struct path path; - struct list_head hash_list; -}; - -struct dcookie_user { - struct list_head next; -}; - typedef unsigned int tid_t; struct transaction_chp_stats_s { @@ -44548,6 +44483,7 @@ struct jbd2_inode; struct journal_s { long unsigned int j_flags; + long unsigned int j_atomic_flags; int j_errno; struct mutex j_abort_mutex; struct buffer_head *j_sb_buffer; @@ -44567,6 +44503,9 @@ struct journal_s { 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; long unsigned int j_head; long unsigned int j_tail; long unsigned int j_free; @@ -44615,7 +44554,7 @@ struct journal_s { void *j_private; struct crypto_shash *j_chksum_driver; __u32 j_csum_seed; - void (*j_fc_cleanup_callback)(struct journal_s *, int); + 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); }; @@ -44676,7 +44615,6 @@ struct jbd2_inode { struct bgl_lock { spinlock_t lock; - long: 32; long: 64; long: 64; long: 64; @@ -44777,7 +44715,10 @@ struct ext4_fc_stats { unsigned int fc_ineligible_reason_count[10]; long unsigned int fc_num_commits; long unsigned int fc_ineligible_commits; + long unsigned int fc_failed_commits; + long unsigned int fc_skipped_commits; long unsigned int fc_numblks; + u64 s_fc_avg_commit_time; }; struct ext4_fc_alloc_region { @@ -44810,7 +44751,10 @@ struct ext4_inode_info { ext4_lblk_t i_dir_start_lookup; long unsigned int i_flags; struct rw_semaphore xattr_sem; - struct list_head i_orphan; + union { + struct list_head i_orphan; + unsigned int i_orphan_idx; + }; struct list_head i_fc_list; ext4_lblk_t i_fc_lblk_start; ext4_lblk_t i_fc_lblk_len; @@ -44819,7 +44763,6 @@ struct ext4_inode_info { struct mutex i_fc_lock; loff_t i_disksize; struct rw_semaphore i_data_sem; - struct rw_semaphore i_mmap_sem; struct inode vfs_inode; struct jbd2_inode *jinode; spinlock_t i_raw_lock; @@ -44953,11 +44896,28 @@ struct ext4_super_block { __u8 s_last_error_errcode; __le16 s_encoding; __le16 s_encoding_flags; - __le32 s_reserved[95]; + __le32 s_orphan_file_inum; + __le32 s_reserved[94]; __le32 s_checksum; }; -struct mb_cache___2; +struct ext4_journal_trigger { + struct jbd2_buffer_trigger_type tr_triggers; + struct super_block *sb; +}; + +struct ext4_orphan_block { + atomic_t ob_free_entries; + struct buffer_head *ob_bh; +}; + +struct ext4_orphan_info { + int of_blocks; + __u32 of_csum_seed; + struct ext4_orphan_block *of_binfo; +}; + +struct mb_cache; struct ext4_group_info; @@ -45014,9 +44974,10 @@ struct ext4_sb_info { struct super_block *s_sb; struct buffer_head *s_mmp_bh; struct journal_s *s_journal; - struct list_head s_orphan; - struct mutex s_orphan_lock; long unsigned int s_ext4_flags; + struct mutex s_orphan_lock; + struct list_head s_orphan; + struct ext4_orphan_info s_orphan_info; long unsigned int s_commit_interval; u32 s_max_batch_time; u32 s_min_batch_time; @@ -45033,7 +44994,15 @@ struct ext4_sb_info { 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 rb_root s_mb_avg_fragment_size_root; + rwlock_t s_mb_rb_lock; + struct list_head *s_mb_largest_free_orders; + rwlock_t *s_mb_largest_free_orders_locks; long unsigned int 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; @@ -45050,12 +45019,17 @@ struct ext4_sb_info { atomic_t s_bal_success; atomic_t s_bal_allocated; atomic_t s_bal_ex_scanned; + atomic_t s_bal_groups_scanned; atomic_t s_bal_goals; atomic_t s_bal_breaks; atomic_t s_bal_2orders; - spinlock_t s_bal_lock; - long unsigned int s_mb_buddies_generated; - long long unsigned int s_mb_generation_time; + atomic_t s_bal_cr0_bad_suggestions; + atomic_t s_bal_cr1_bad_suggestions; + atomic64_t s_bal_cX_groups_considered[4]; + atomic64_t s_bal_cX_hits[4]; + atomic64_t s_bal_cX_failed[4]; + 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; @@ -45079,14 +45053,12 @@ struct ext4_sb_info { struct list_head s_es_list; long int s_es_nr_inode; struct ext4_es_stats s_es_stats; - struct mb_cache___2 *s_ea_block_cache; - struct mb_cache___2 *s_ea_inode_cache; - long: 64; - long: 64; - long: 64; + 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; @@ -45113,20 +45085,21 @@ struct ext4_sb_info { time64_t s_last_error_time; struct work_struct s_error_work; atomic_t s_fc_subtid; - atomic_t s_fc_ineligible_updates; 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; - u64 s_fc_avg_commit_time; + tid_t s_fc_ineligible_tid; struct ext4_fc_replay_state s_fc_replay_state; long: 64; long: 64; long: 64; long: 64; long: 64; + long: 64; + long: 64; }; struct ext4_group_info { @@ -45136,8 +45109,11 @@ struct ext4_group_info { ext4_grpblk_t bb_free; ext4_grpblk_t bb_fragments; ext4_grpblk_t bb_largest_free_order; + ext4_group_t bb_group; struct list_head bb_prealloc_list; struct rw_semaphore alloc_sem; + struct rb_node bb_avg_fragment_size_rb; + struct list_head bb_largest_free_order_node; ext4_grpblk_t bb_counters[0]; }; @@ -45162,8 +45138,6 @@ struct ext4_li_request { long unsigned int lr_timeout; }; -struct iomap_ops___2; - struct ext4_map_blocks { ext4_fsblk_t m_pblk; ext4_lblk_t m_lblk; @@ -45171,6 +45145,13 @@ struct ext4_map_blocks { unsigned int m_flags; }; +typedef enum { + EXT4_IGET_NORMAL = 0, + EXT4_IGET_SPECIAL = 1, + EXT4_IGET_HANDLE = 2, + EXT4_IGET_BAD = 4, +} ext4_iget_flags; + struct ext4_system_zone { struct rb_node node; ext4_fsblk_t start_blk; @@ -45209,11 +45190,6 @@ enum { }; enum { - EXT4_FC_REASON_OK = 0, - EXT4_FC_REASON_INELIGIBLE = 1, - EXT4_FC_REASON_ALREADY_COMMITTED = 2, - EXT4_FC_REASON_FC_START_FAILED = 3, - EXT4_FC_REASON_FC_FAILED = 4, EXT4_FC_REASON_XATTR = 0, EXT4_FC_REASON_CROSS_RENAME = 1, EXT4_FC_REASON_JOURNAL_FLAG_CHANGE = 2, @@ -45223,10 +45199,20 @@ enum { EXT4_FC_REASON_RENAME_DIR = 6, EXT4_FC_REASON_FALLOC_RANGE = 7, EXT4_FC_REASON_INODE_JOURNAL_DATA = 8, - EXT4_FC_COMMIT_FAILED = 9, + EXT4_FC_REASON_ENCRYPTED_FILENAME = 9, EXT4_FC_REASON_MAX = 10, }; +enum ext4_journal_trigger_type { + EXT4_JTR_ORPHAN_FILE = 0, + EXT4_JTR_NONE = 1, +}; + +struct ext4_dir_entry_hash { + __le32 hash; + __le32 minor_hash; +}; + struct ext4_dir_entry_2 { __le32 inode; __le16 rec_len; @@ -45303,6 +45289,7 @@ enum { EXT4_STATE_LUSTRE_EA_INODE = 9, EXT4_STATE_VERITY_IN_PROGRESS = 10, EXT4_STATE_FC_COMMITTING = 11, + EXT4_STATE_ORPHAN_FILE = 12, }; struct ext4_iloc { @@ -45376,7 +45363,6 @@ enum { EXT4_MF_MNTDIR_SAMPLED = 0, EXT4_MF_FS_ABORTED = 1, EXT4_MF_FC_INELIGIBLE = 2, - EXT4_MF_FC_COMMITTING = 3, }; struct fsmap { @@ -45408,6 +45394,8 @@ struct ext4_fsmap_head { typedef int (*ext4_fsmap_format_t)(struct ext4_fsmap *, void *); +typedef int (*ext4_mballoc_query_range_fn)(struct super_block *, ext4_group_t, ext4_grpblk_t, ext4_grpblk_t, void *); + struct ext4_getfsmap_info { struct ext4_fsmap_head *gfi_head; ext4_fsmap_format_t gfi_formatter; @@ -45569,12 +45557,6 @@ struct ext4_io_submit { sector_t io_next_block; }; -typedef enum { - EXT4_IGET_NORMAL = 0, - EXT4_IGET_SPECIAL = 1, - EXT4_IGET_HANDLE = 2, -} ext4_iget_flags; - struct ext4_xattr_inode_array { unsigned int count; struct inode *inodes[0]; @@ -45710,11 +45692,14 @@ struct ext4_allocation_context { struct ext4_free_extent ac_g_ex; struct ext4_free_extent ac_b_ex; struct ext4_free_extent ac_f_ex; + ext4_group_t ac_last_optimal_group; + __u32 ac_groups_considered; + __u32 ac_flags; __u16 ac_groups_scanned; + __u16 ac_groups_linear_remaining; __u16 ac_found; __u16 ac_tail; __u16 ac_buddy; - __u16 ac_flags; __u8 ac_status; __u8 ac_criteria; __u8 ac_2order; @@ -45736,8 +45721,6 @@ struct ext4_buddy { ext4_group_t bd_group; }; -typedef int (*ext4_mballoc_query_range_fn)(struct super_block *, ext4_group_t, ext4_grpblk_t, ext4_grpblk_t, void *); - struct sg { struct ext4_group_info info; ext4_grpblk_t counters[18]; @@ -45887,6 +45870,14 @@ struct ext4_new_flex_group_data { ext4_group_t count; }; +enum stat_group { + STAT_READ = 0, + STAT_WRITE = 1, + STAT_DISCARD = 2, + STAT_FLUSH = 3, + NR_STAT_GROUPS = 4, +}; + enum { I_DATA_SEM_NORMAL = 0, I_DATA_SEM_OTHER = 1, @@ -46300,27 +46291,6 @@ struct trace_event_raw_ext4_read_block_bitmap_load { char __data[0]; }; -struct trace_event_raw_ext4_direct_IO_enter { - struct trace_entry ent; - dev_t dev; - ino_t ino; - loff_t pos; - long unsigned int len; - int rw; - char __data[0]; -}; - -struct trace_event_raw_ext4_direct_IO_exit { - struct trace_entry ent; - dev_t dev; - ino_t ino; - loff_t pos; - long unsigned int len; - int rw; - int ret; - char __data[0]; -}; - struct trace_event_raw_ext4__fallocate_mode { struct trace_entry ent; dev_t dev; @@ -46484,46 +46454,6 @@ struct trace_event_raw_ext4_get_implied_cluster_alloc_exit { char __data[0]; }; -struct trace_event_raw_ext4_ext_put_in_cache { - struct trace_entry ent; - dev_t dev; - ino_t ino; - ext4_lblk_t lblk; - unsigned int len; - ext4_fsblk_t start; - char __data[0]; -}; - -struct trace_event_raw_ext4_ext_in_cache { - struct trace_entry ent; - dev_t dev; - ino_t ino; - ext4_lblk_t lblk; - int ret; - char __data[0]; -}; - -struct trace_event_raw_ext4_find_delalloc_range { - struct trace_entry ent; - dev_t dev; - ino_t ino; - ext4_lblk_t from; - ext4_lblk_t to; - int reverse; - int found; - ext4_lblk_t found_blk; - char __data[0]; -}; - -struct trace_event_raw_ext4_get_reserved_cluster_alloc { - struct trace_entry ent; - dev_t dev; - ino_t ino; - ext4_lblk_t lblk; - unsigned int len; - char __data[0]; -}; - struct trace_event_raw_ext4_ext_show_extent { struct trace_entry ent; dev_t dev; @@ -46801,8 +46731,10 @@ struct trace_event_raw_ext4_fc_commit_stop { struct trace_event_raw_ext4_fc_stats { struct trace_entry ent; dev_t dev; - struct ext4_sb_info *sbi; - int count; + unsigned int fc_ineligible_rc[10]; + long unsigned int fc_commits; + long unsigned int fc_ineligible_commits; + long unsigned int fc_numblks; char __data[0]; }; @@ -46926,10 +46858,6 @@ struct trace_event_data_offsets_ext4__bitmap_load {}; struct trace_event_data_offsets_ext4_read_block_bitmap_load {}; -struct trace_event_data_offsets_ext4_direct_IO_enter {}; - -struct trace_event_data_offsets_ext4_direct_IO_exit {}; - struct trace_event_data_offsets_ext4__fallocate_mode {}; struct trace_event_data_offsets_ext4_fallocate_exit {}; @@ -46962,14 +46890,6 @@ 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_put_in_cache {}; - -struct trace_event_data_offsets_ext4_ext_in_cache {}; - -struct trace_event_data_offsets_ext4_find_delalloc_range {}; - -struct trace_event_data_offsets_ext4_get_reserved_cluster_alloc {}; - struct trace_event_data_offsets_ext4_ext_show_extent {}; struct trace_event_data_offsets_ext4_remove_blocks {}; @@ -47136,10 +47056,6 @@ typedef void (*btf_trace_ext4_load_inode_bitmap)(void *, struct super_block *, l typedef void (*btf_trace_ext4_read_block_bitmap_load)(void *, struct super_block *, long unsigned int, bool); -typedef void (*btf_trace_ext4_direct_IO_enter)(void *, struct inode *, loff_t, long unsigned int, int); - -typedef void (*btf_trace_ext4_direct_IO_exit)(void *, struct inode *, loff_t, long unsigned int, int, int); - 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); @@ -47156,15938 +47072,17491 @@ 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_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 *, long unsigned int); + +typedef void (*btf_trace_ext4_journal_start)(void *, struct super_block *, int, int, int, long unsigned int); + +typedef void (*btf_trace_ext4_journal_start_reserved)(void *, struct super_block *, int, long unsigned int); + +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, short unsigned int); + +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 *, long unsigned int); + +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 *); + +typedef void (*btf_trace_ext4_fc_commit_stop)(void *, struct super_block *, int, int); + +typedef void (*btf_trace_ext4_fc_stats)(void *, struct super_block *); + +typedef void (*btf_trace_ext4_fc_track_create)(void *, struct inode *, struct dentry *, int); + +typedef void (*btf_trace_ext4_fc_track_link)(void *, struct inode *, struct dentry *, int); + +typedef void (*btf_trace_ext4_fc_track_unlink)(void *, struct inode *, struct dentry *, int); + +typedef void (*btf_trace_ext4_fc_track_inode)(void *, struct inode *, int); + +typedef void (*btf_trace_ext4_fc_track_range)(void *, struct inode *, long int, long int, int); + +struct ext4_err_translation { + int code; + int errno; +}; + +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_err_cont = 7, + Opt_err_panic = 8, + Opt_err_ro = 9, + Opt_nouid32 = 10, + Opt_debug = 11, + Opt_removed = 12, + Opt_user_xattr = 13, + Opt_nouser_xattr = 14, + Opt_acl = 15, + Opt_noacl = 16, + Opt_auto_da_alloc = 17, + Opt_noauto_da_alloc = 18, + Opt_noload = 19, + Opt_commit = 20, + Opt_min_batch_time = 21, + Opt_max_batch_time = 22, + Opt_journal_dev = 23, + Opt_journal_path = 24, + Opt_journal_checksum = 25, + Opt_journal_async_commit = 26, + Opt_abort = 27, + Opt_data_journal = 28, + Opt_data_ordered = 29, + Opt_data_writeback = 30, + Opt_data_err_abort = 31, + Opt_data_err_ignore = 32, + Opt_test_dummy_encryption = 33, + Opt_inlinecrypt = 34, + Opt_usrjquota = 35, + Opt_grpjquota = 36, + Opt_offusrjquota = 37, + Opt_offgrpjquota = 38, + Opt_jqfmt_vfsold = 39, + Opt_jqfmt_vfsv0 = 40, + Opt_jqfmt_vfsv1 = 41, + Opt_quota = 42, + Opt_noquota = 43, + Opt_barrier = 44, + Opt_nobarrier = 45, + Opt_err___2 = 46, + Opt_usrquota = 47, + Opt_grpquota = 48, + Opt_prjquota = 49, + Opt_i_version = 50, + Opt_dax = 51, + Opt_dax_always = 52, + Opt_dax_inode = 53, + Opt_dax_never = 54, + Opt_stripe = 55, + Opt_delalloc = 56, + Opt_nodelalloc = 57, + Opt_warn_on_error = 58, + Opt_nowarn_on_error = 59, + Opt_mblk_io_submit = 60, + Opt_lazytime = 61, + Opt_nolazytime = 62, + Opt_debug_want_extra_isize = 63, + Opt_nomblk_io_submit = 64, + Opt_block_validity = 65, + Opt_noblock_validity = 66, + Opt_inode_readahead_blks = 67, + Opt_journal_ioprio = 68, + Opt_dioread_nolock = 69, + Opt_dioread_lock = 70, + Opt_discard = 71, + Opt_nodiscard = 72, + Opt_init_itable = 73, + Opt_noinit_itable = 74, + Opt_max_dir_size_kb = 75, + Opt_nojournal_checksum = 76, + Opt_nombcache = 77, + Opt_no_prefetch_block_bitmaps = 78, + Opt_mb_optimize_scan = 79, +}; + +struct mount_opts { + int token; + int mount_opt; + int flags; +}; + +struct ext4_sb_encodings { + __u16 magic; + char *name; + char *version; +}; + +struct ext4_parsed_options { + long unsigned int journal_devnum; + unsigned int journal_ioprio; + int mb_optimize_scan; +}; + +struct ext4_mount_options { + long unsigned int s_mount_opt; + long unsigned int s_mount_opt2; + kuid_t s_resuid; + kgid_t s_resgid; + long unsigned int s_commit_interval; + u32 s_min_batch_time; + u32 s_max_batch_time; + int s_jquota_fmt; + char *s_qf_names[3]; +}; + +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_attr { + struct attribute attr; + short int attr_id; + short int attr_ptr; + short unsigned int attr_size; + union { + int offset; + void *explicit_ptr; + } u; +}; + +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; +}; + +struct ext4_fc_tl { + __le16 fc_tag; + __le16 fc_len; +}; + +struct ext4_fc_head { + __le32 fc_features; + __le32 fc_tid; +}; + +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 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_fc_tail { + __le32 fc_tid; + __le32 fc_crc; +}; + +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 __track_dentry_update_args { + struct dentry *dentry; + int op; +}; + +struct __track_range_args { + ext4_lblk_t start; + ext4_lblk_t end; +}; + +struct dentry_info_args { + int parent_ino; + int dname_len; + int ino; + int inode_len; + char *dname; +}; + +struct ext4_orphan_block_tail { + __le32 ob_magic; + __le32 ob_checksum; +}; + +typedef struct { + __le16 e_tag; + __le16 e_perm; + __le32 e_id; +} ext4_acl_entry; + +typedef struct { + __le32 a_version; +} ext4_acl_header; + +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 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 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 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; + int nr_replays; + int nr_revokes; + int nr_revoke_hits; +}; + +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; + long long unsigned int blocknr; +}; + +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; + long unsigned int wait; + long unsigned int request_delay; + long unsigned int running; + long unsigned int locked; + long unsigned int flushing; + long unsigned int 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; + long unsigned int 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; + long unsigned int block_nr; + long unsigned int freed; + char __data[0]; +}; + +struct trace_event_raw_jbd2_write_superblock { + struct trace_entry ent; + dev_t dev; + int write_op; + char __data[0]; +}; + +struct trace_event_raw_jbd2_lock_buffer_stall { + struct trace_entry ent; + dev_t dev; + long unsigned int stall_ms; + char __data[0]; +}; + +struct trace_event_raw_jbd2_journal_shrink { + struct trace_entry ent; + dev_t dev; + long unsigned int nr_to_scan; + long unsigned int count; + char __data[0]; +}; + +struct trace_event_raw_jbd2_shrink_scan_exit { + struct trace_entry ent; + dev_t dev; + long unsigned int nr_to_scan; + long unsigned int nr_shrunk; + long unsigned int 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; + long unsigned int nr_freed; + long unsigned int nr_scanned; + 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 {}; + +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, long unsigned int, long unsigned int); + +typedef void (*btf_trace_jbd2_write_superblock)(void *, journal_t *, int); + +typedef void (*btf_trace_jbd2_lock_buffer_stall)(void *, dev_t, long unsigned int); + +typedef void (*btf_trace_jbd2_shrink_count)(void *, journal_t *, long unsigned int, long unsigned int); + +typedef void (*btf_trace_jbd2_shrink_scan_enter)(void *, journal_t *, long unsigned int, long unsigned int); + +typedef void (*btf_trace_jbd2_shrink_scan_exit)(void *, journal_t *, long unsigned int, long unsigned int, long unsigned int); + +typedef void (*btf_trace_jbd2_shrink_checkpoint_list)(void *, journal_t *, tid_t, tid_t, tid_t, long unsigned int, long unsigned int, tid_t); + +struct jbd2_stats_proc_session { + journal_t *journal; + struct transaction_stats_s *stats; + int start; + int max; +}; + +struct meta_entry { + u64 data_block; + unsigned int index_block; + short unsigned int offset; + short unsigned int pad; +}; + +struct meta_index { + unsigned int inode_number; + unsigned int offset; + short unsigned int entries; + short unsigned int skip; + short unsigned int locked; + short unsigned int pad; + struct meta_entry meta_entry[127]; +}; + +struct squashfs_cache_entry; + +struct squashfs_cache { + char *name; + int entries; + int curr_blk; + int next_blk; + int num_waiters; + int unused; + int block_size; + int pages; + spinlock_t lock; + wait_queue_head_t wait_queue; + struct squashfs_cache_entry *entry; +}; + +struct squashfs_page_actor; + +struct squashfs_cache_entry { + u64 block; + int length; + int refcount; + u64 next_index; + int pending; + int error; + int num_waiters; + wait_queue_head_t wait_queue; + struct squashfs_cache *cache; + void **data; + struct squashfs_page_actor *actor; +}; + +struct squashfs_page_actor { + union { + void **buffer; + struct page **page; + }; + void *pageaddr; + void * (*squashfs_first_page)(struct squashfs_page_actor *); + void * (*squashfs_next_page)(struct squashfs_page_actor *); + void (*squashfs_finish_page)(struct squashfs_page_actor *); + int pages; + int length; + int next_page; +}; + +struct squashfs_decompressor; + +struct squashfs_stream; + +struct squashfs_sb_info { + const struct squashfs_decompressor *decompressor; + int devblksize; + int devblksize_log2; + struct squashfs_cache *block_cache; + struct squashfs_cache *fragment_cache; + struct squashfs_cache *read_page; + int next_meta_index; + __le64 *id_table; + __le64 *fragment_index; + __le64 *xattr_id_table; + struct mutex meta_index_mutex; + struct meta_index *meta_index; + struct squashfs_stream *stream; + __le64 *inode_lookup_table; + u64 inode_table; + u64 directory_table; + u64 xattr_table; + unsigned int block_size; + short unsigned int block_log; + long long int bytes_used; + unsigned int inodes; + unsigned int fragments; + unsigned int xattr_ids; + unsigned int ids; + bool panic_on_errors; +}; + +struct squashfs_decompressor { + void * (*init)(struct squashfs_sb_info *, void *); + void * (*comp_opts)(struct squashfs_sb_info *, void *, int); + void (*free)(void *); + int (*decompress)(struct squashfs_sb_info *, void *, struct bio *, int, int, struct squashfs_page_actor *); + int id; + char *name; + int supported; +}; -typedef void (*btf_trace_ext4_ext_convert_to_initialized_fastpath)(void *, struct inode *, struct ext4_map_blocks *, struct ext4_extent *, struct ext4_extent *); +struct squashfs_dir_index { + __le32 index; + __le32 start_block; + __le32 size; + unsigned char name[0]; +}; -typedef void (*btf_trace_ext4_ext_map_blocks_enter)(void *, struct inode *, ext4_lblk_t, unsigned int, unsigned int); +struct squashfs_dir_entry { + __le16 offset; + __le16 inode_number; + __le16 type; + __le16 size; + char name[0]; +}; -typedef void (*btf_trace_ext4_ind_map_blocks_enter)(void *, struct inode *, ext4_lblk_t, unsigned int, unsigned int); +struct squashfs_dir_header { + __le32 count; + __le32 start_block; + __le32 inode_number; +}; -typedef void (*btf_trace_ext4_ext_map_blocks_exit)(void *, struct inode *, unsigned int, struct ext4_map_blocks *, int); +struct squashfs_inode_info { + u64 start; + int offset; + u64 xattr; + unsigned int xattr_size; + int xattr_count; + union { + struct { + u64 fragment_block; + int fragment_size; + int fragment_offset; + u64 block_list_start; + }; + struct { + u64 dir_idx_start; + int dir_idx_offset; + int dir_idx_cnt; + int parent; + }; + }; + struct inode vfs_inode; +}; -typedef void (*btf_trace_ext4_ind_map_blocks_exit)(void *, struct inode *, unsigned int, struct ext4_map_blocks *, int); +struct squashfs_fragment_entry { + __le64 start_block; + __le32 size; + unsigned int unused; +}; -typedef void (*btf_trace_ext4_ext_load_extent)(void *, struct inode *, ext4_lblk_t, ext4_fsblk_t); +struct squashfs_base_inode { + __le16 inode_type; + __le16 mode; + __le16 uid; + __le16 guid; + __le32 mtime; + __le32 inode_number; +}; -typedef void (*btf_trace_ext4_load_inode)(void *, struct super_block *, long unsigned int); +struct squashfs_ipc_inode { + __le16 inode_type; + __le16 mode; + __le16 uid; + __le16 guid; + __le32 mtime; + __le32 inode_number; + __le32 nlink; +}; -typedef void (*btf_trace_ext4_journal_start)(void *, struct super_block *, int, int, int, long unsigned int); +struct squashfs_lipc_inode { + __le16 inode_type; + __le16 mode; + __le16 uid; + __le16 guid; + __le32 mtime; + __le32 inode_number; + __le32 nlink; + __le32 xattr; +}; -typedef void (*btf_trace_ext4_journal_start_reserved)(void *, struct super_block *, int, long unsigned int); +struct squashfs_dev_inode { + __le16 inode_type; + __le16 mode; + __le16 uid; + __le16 guid; + __le32 mtime; + __le32 inode_number; + __le32 nlink; + __le32 rdev; +}; -typedef void (*btf_trace_ext4_trim_extent)(void *, struct super_block *, ext4_group_t, ext4_grpblk_t, ext4_grpblk_t); +struct squashfs_ldev_inode { + __le16 inode_type; + __le16 mode; + __le16 uid; + __le16 guid; + __le32 mtime; + __le32 inode_number; + __le32 nlink; + __le32 rdev; + __le32 xattr; +}; -typedef void (*btf_trace_ext4_trim_all_free)(void *, struct super_block *, ext4_group_t, ext4_grpblk_t, ext4_grpblk_t); +struct squashfs_symlink_inode { + __le16 inode_type; + __le16 mode; + __le16 uid; + __le16 guid; + __le32 mtime; + __le32 inode_number; + __le32 nlink; + __le32 symlink_size; + char symlink[0]; +}; -typedef void (*btf_trace_ext4_ext_handle_unwritten_extents)(void *, struct inode *, struct ext4_map_blocks *, int, unsigned int, ext4_fsblk_t); +struct squashfs_reg_inode { + __le16 inode_type; + __le16 mode; + __le16 uid; + __le16 guid; + __le32 mtime; + __le32 inode_number; + __le32 start_block; + __le32 fragment; + __le32 offset; + __le32 file_size; + __le16 block_list[0]; +}; -typedef void (*btf_trace_ext4_get_implied_cluster_alloc_exit)(void *, struct super_block *, struct ext4_map_blocks *, int); +struct squashfs_lreg_inode { + __le16 inode_type; + __le16 mode; + __le16 uid; + __le16 guid; + __le32 mtime; + __le32 inode_number; + __le64 start_block; + __le64 file_size; + __le64 sparse; + __le32 nlink; + __le32 fragment; + __le32 offset; + __le32 xattr; + __le16 block_list[0]; +}; -typedef void (*btf_trace_ext4_ext_put_in_cache)(void *, struct inode *, ext4_lblk_t, unsigned int, ext4_fsblk_t); +struct squashfs_dir_inode { + __le16 inode_type; + __le16 mode; + __le16 uid; + __le16 guid; + __le32 mtime; + __le32 inode_number; + __le32 start_block; + __le32 nlink; + __le16 file_size; + __le16 offset; + __le32 parent_inode; +}; -typedef void (*btf_trace_ext4_ext_in_cache)(void *, struct inode *, ext4_lblk_t, int); +struct squashfs_ldir_inode { + __le16 inode_type; + __le16 mode; + __le16 uid; + __le16 guid; + __le32 mtime; + __le32 inode_number; + __le32 nlink; + __le32 file_size; + __le32 start_block; + __le32 parent_inode; + __le16 i_count; + __le16 offset; + __le32 xattr; + struct squashfs_dir_index index[0]; +}; -typedef void (*btf_trace_ext4_find_delalloc_range)(void *, struct inode *, ext4_lblk_t, ext4_lblk_t, int, int, ext4_lblk_t); +union squashfs_inode { + struct squashfs_base_inode base; + struct squashfs_dev_inode dev; + struct squashfs_ldev_inode ldev; + struct squashfs_symlink_inode symlink; + struct squashfs_reg_inode reg; + struct squashfs_lreg_inode lreg; + struct squashfs_dir_inode dir; + struct squashfs_ldir_inode ldir; + struct squashfs_ipc_inode ipc; + struct squashfs_lipc_inode lipc; +}; -typedef void (*btf_trace_ext4_get_reserved_cluster_alloc)(void *, struct inode *, ext4_lblk_t, unsigned int); +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 void (*btf_trace_ext4_ext_show_extent)(void *, struct inode *, ext4_lblk_t, ext4_fsblk_t, short unsigned int); +enum Opt_errors { + Opt_errors_continue = 0, + Opt_errors_panic = 1, +}; -typedef void (*btf_trace_ext4_remove_blocks)(void *, struct inode *, struct ext4_extent *, ext4_lblk_t, ext4_fsblk_t, struct partial_cluster *); +enum squashfs_param { + Opt_errors = 0, +}; -typedef void (*btf_trace_ext4_ext_rm_leaf)(void *, struct inode *, ext4_lblk_t, struct ext4_extent *, struct partial_cluster *); +struct squashfs_mount_opts { + enum Opt_errors errors; +}; -typedef void (*btf_trace_ext4_ext_rm_idx)(void *, struct inode *, ext4_fsblk_t); +struct squashfs_stream { + void *stream; + struct mutex mutex; +}; -typedef void (*btf_trace_ext4_ext_remove_space)(void *, struct inode *, ext4_lblk_t, ext4_lblk_t, int); +struct squashfs_xattr_entry { + __le16 type; + __le16 size; + char data[0]; +}; -typedef void (*btf_trace_ext4_ext_remove_space_done)(void *, struct inode *, ext4_lblk_t, ext4_lblk_t, int, struct partial_cluster *, __le16); +struct squashfs_xattr_val { + __le32 vsize; + char value[0]; +}; -typedef void (*btf_trace_ext4_es_insert_extent)(void *, struct inode *, struct extent_status *); +struct squashfs_xattr_id { + __le64 xattr; + __le32 count; + __le32 size; +}; -typedef void (*btf_trace_ext4_es_cache_extent)(void *, struct inode *, struct extent_status *); +struct squashfs_xattr_id_table { + __le64 xattr_table_start; + __le32 xattr_ids; + __le32 unused; +}; -typedef void (*btf_trace_ext4_es_remove_extent)(void *, struct inode *, ext4_lblk_t, ext4_lblk_t); +struct lz4_comp_opts { + __le32 version; + __le32 flags; +}; -typedef void (*btf_trace_ext4_es_find_extent_range_enter)(void *, struct inode *, ext4_lblk_t); +struct squashfs_lz4 { + void *input; + void *output; +}; -typedef void (*btf_trace_ext4_es_find_extent_range_exit)(void *, struct inode *, struct extent_status *); +struct squashfs_lzo { + void *input; + void *output; +}; -typedef void (*btf_trace_ext4_es_lookup_extent_enter)(void *, struct inode *, ext4_lblk_t); +enum xz_mode { + XZ_SINGLE = 0, + XZ_PREALLOC = 1, + XZ_DYNALLOC = 2, +}; -typedef void (*btf_trace_ext4_es_lookup_extent_exit)(void *, struct inode *, struct extent_status *, int); +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 void (*btf_trace_ext4_es_shrink_count)(void *, struct super_block *, int, int); +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; +}; -typedef void (*btf_trace_ext4_es_shrink_scan_enter)(void *, struct super_block *, int, int); +struct xz_dec; -typedef void (*btf_trace_ext4_es_shrink_scan_exit)(void *, struct super_block *, int, int); +struct squashfs_xz { + struct xz_dec *state; + struct xz_buf buf; +}; -typedef void (*btf_trace_ext4_collapse_range)(void *, struct inode *, loff_t, loff_t); +struct disk_comp_opts { + __le32 dictionary_size; + __le32 flags; +}; -typedef void (*btf_trace_ext4_insert_range)(void *, struct inode *, loff_t, loff_t); +struct comp_opts { + int dict_size; +}; -typedef void (*btf_trace_ext4_es_shrink)(void *, struct super_block *, int, u64, int, int); +typedef unsigned char Byte; -typedef void (*btf_trace_ext4_es_insert_delayed_block)(void *, struct inode *, struct extent_status *, bool); +typedef long unsigned int uLong; -typedef void (*btf_trace_ext4_fsmap_low_key)(void *, struct super_block *, u32, u32, u64, u64, u64); +struct internal_state; -typedef void (*btf_trace_ext4_fsmap_high_key)(void *, struct super_block *, u32, u32, u64, u64, u64); +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; +}; -typedef void (*btf_trace_ext4_fsmap_mapping)(void *, struct super_block *, u32, u32, u64, u64, u64); +struct internal_state { + int dummy; +}; -typedef void (*btf_trace_ext4_getfsmap_low_key)(void *, struct super_block *, struct ext4_fsmap *); +typedef struct z_stream_s z_stream; -typedef void (*btf_trace_ext4_getfsmap_high_key)(void *, struct super_block *, struct ext4_fsmap *); +typedef z_stream *z_streamp; -typedef void (*btf_trace_ext4_getfsmap_mapping)(void *, struct super_block *, struct ext4_fsmap *); +typedef enum { + ZSTD_error_no_error = 0, + ZSTD_error_GENERIC = 1, + ZSTD_error_prefix_unknown = 2, + ZSTD_error_version_unsupported = 3, + ZSTD_error_parameter_unknown = 4, + ZSTD_error_frameParameter_unsupported = 5, + ZSTD_error_frameParameter_unsupportedBy32bits = 6, + ZSTD_error_frameParameter_windowTooLarge = 7, + ZSTD_error_compressionParameter_unsupported = 8, + ZSTD_error_init_missing = 9, + ZSTD_error_memory_allocation = 10, + ZSTD_error_stage_wrong = 11, + ZSTD_error_dstSize_tooSmall = 12, + ZSTD_error_srcSize_wrong = 13, + ZSTD_error_corruption_detected = 14, + ZSTD_error_checksum_wrong = 15, + ZSTD_error_tableLog_tooLarge = 16, + ZSTD_error_maxSymbolValue_tooLarge = 17, + ZSTD_error_maxSymbolValue_tooSmall = 18, + ZSTD_error_dictionary_corrupted = 19, + ZSTD_error_dictionary_wrong = 20, + ZSTD_error_dictionaryCreation_failed = 21, + ZSTD_error_maxCode = 22, +} ZSTD_ErrorCode; -typedef void (*btf_trace_ext4_shutdown)(void *, struct super_block *, long unsigned int); +struct ZSTD_inBuffer_s { + const void *src; + size_t size; + size_t pos; +}; -typedef void (*btf_trace_ext4_error)(void *, struct super_block *, const char *, unsigned int); +typedef struct ZSTD_inBuffer_s ZSTD_inBuffer; -typedef void (*btf_trace_ext4_prefetch_bitmaps)(void *, struct super_block *, ext4_group_t, ext4_group_t, unsigned int); +struct ZSTD_outBuffer_s { + void *dst; + size_t size; + size_t pos; +}; -typedef void (*btf_trace_ext4_lazy_itable_init)(void *, struct super_block *, ext4_group_t); +typedef struct ZSTD_outBuffer_s ZSTD_outBuffer; -typedef void (*btf_trace_ext4_fc_replay_scan)(void *, struct super_block *, int, int); +struct ZSTD_DStream_s; -typedef void (*btf_trace_ext4_fc_replay)(void *, struct super_block *, int, int, int, int); +typedef struct ZSTD_DStream_s ZSTD_DStream; -typedef void (*btf_trace_ext4_fc_commit_start)(void *, struct super_block *); +struct workspace { + void *mem; + size_t mem_size; + size_t window_size; +}; -typedef void (*btf_trace_ext4_fc_commit_stop)(void *, struct super_block *, int, int); +struct ramfs_mount_opts { + umode_t mode; +}; -typedef void (*btf_trace_ext4_fc_stats)(void *, struct super_block *); +struct ramfs_fs_info { + struct ramfs_mount_opts mount_opts; +}; -typedef void (*btf_trace_ext4_fc_track_create)(void *, struct inode *, struct dentry *, int); +enum ramfs_param { + Opt_mode___3 = 0, +}; -typedef void (*btf_trace_ext4_fc_track_link)(void *, struct inode *, struct dentry *, int); +enum hugetlbfs_size_type { + NO_SIZE = 0, + SIZE_STD = 1, + SIZE_PERCENT = 2, +}; -typedef void (*btf_trace_ext4_fc_track_unlink)(void *, struct inode *, struct dentry *, int); +struct hugetlbfs_fs_context { + struct hstate *hstate; + long long unsigned int max_size_opt; + long long unsigned int min_size_opt; + long int max_hpages; + long int nr_inodes; + long int min_hpages; + enum hugetlbfs_size_type max_val_type; + enum hugetlbfs_size_type min_val_type; + kuid_t uid; + kgid_t gid; + umode_t mode; +}; -typedef void (*btf_trace_ext4_fc_track_inode)(void *, struct inode *, int); +enum hugetlb_param { + Opt_gid___4 = 0, + Opt_min_size = 1, + Opt_mode___4 = 2, + Opt_nr_inodes___2 = 3, + Opt_pagesize = 4, + Opt_size___2 = 5, + Opt_uid___3 = 6, +}; -typedef void (*btf_trace_ext4_fc_track_range)(void *, struct inode *, long int, long int, int); +typedef u16 wchar_t; -struct ext4_err_translation { - int code; - int errno; +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; }; -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_err_cont = 7, - Opt_err_panic = 8, - Opt_err_ro = 9, - Opt_nouid32 = 10, - Opt_debug = 11, - Opt_removed = 12, - Opt_user_xattr = 13, - Opt_nouser_xattr = 14, - Opt_acl = 15, - Opt_noacl = 16, - Opt_auto_da_alloc = 17, - Opt_noauto_da_alloc = 18, - Opt_noload = 19, - Opt_commit = 20, - Opt_min_batch_time = 21, - Opt_max_batch_time = 22, - Opt_journal_dev = 23, - Opt_journal_path = 24, - Opt_journal_checksum = 25, - Opt_journal_async_commit = 26, - Opt_abort = 27, - Opt_data_journal = 28, - Opt_data_ordered = 29, - Opt_data_writeback = 30, - Opt_data_err_abort = 31, - Opt_data_err_ignore = 32, - Opt_test_dummy_encryption = 33, - Opt_inlinecrypt = 34, - Opt_usrjquota = 35, - Opt_grpjquota = 36, - Opt_offusrjquota = 37, - Opt_offgrpjquota = 38, - Opt_jqfmt_vfsold = 39, - Opt_jqfmt_vfsv0 = 40, - Opt_jqfmt_vfsv1 = 41, - Opt_quota = 42, - Opt_noquota = 43, - Opt_barrier = 44, - Opt_nobarrier = 45, - Opt_err___2 = 46, - Opt_usrquota = 47, - Opt_grpquota = 48, - Opt_prjquota = 49, - Opt_i_version = 50, - Opt_dax = 51, - Opt_dax_always = 52, - Opt_dax_inode = 53, - Opt_dax_never = 54, - Opt_stripe = 55, - Opt_delalloc = 56, - Opt_nodelalloc = 57, - Opt_warn_on_error = 58, - Opt_nowarn_on_error = 59, - Opt_mblk_io_submit = 60, - Opt_lazytime = 61, - Opt_nolazytime = 62, - Opt_debug_want_extra_isize = 63, - Opt_nomblk_io_submit = 64, - Opt_block_validity = 65, - Opt_noblock_validity = 66, - Opt_inode_readahead_blks = 67, - Opt_journal_ioprio = 68, - Opt_dioread_nolock = 69, - Opt_dioread_lock = 70, - Opt_discard = 71, - Opt_nodiscard = 72, - Opt_init_itable = 73, - Opt_noinit_itable = 74, - Opt_max_dir_size_kb = 75, - Opt_nojournal_checksum = 76, - Opt_nombcache = 77, - Opt_prefetch_block_bitmaps = 78, +struct fat_mount_options { + kuid_t fs_uid; + kgid_t fs_gid; + short unsigned int fs_fmask; + short unsigned int fs_dmask; + short unsigned int codepage; + int time_offset; + char *iocharset; + short unsigned int shortname; + unsigned char name_check; + unsigned char errors; + unsigned char nfs; + short unsigned int 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 mount_opts { - int token; - int mount_opt; - int flags; -}; +struct fatent_operations; -struct ext4_sb_encodings { - __u16 magic; - char *name; - char *version; +struct msdos_sb_info { + short unsigned int sec_per_clus; + short unsigned int cluster_bits; + unsigned int cluster_size; + unsigned char fats; + unsigned char fat_bits; + short unsigned int fat_start; + long unsigned int fat_length; + long unsigned int dir_start; + short unsigned int dir_entries; + long unsigned int data_start; + long unsigned int max_cluster; + long unsigned int root_cluster; + long unsigned int 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; }; -struct ext4_mount_options { - long unsigned int s_mount_opt; - long unsigned int s_mount_opt2; - kuid_t s_resuid; - kgid_t s_resgid; - long unsigned int s_commit_interval; - u32 s_min_batch_time; - u32 s_max_batch_time; - int s_jquota_fmt; - char *s_qf_names[3]; -}; +struct fat_entry; -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, +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 *); }; -enum { - ptr_explicit = 0, - ptr_ext4_sb_info_offset = 1, - ptr_ext4_super_block_offset = 2, +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 inode vfs_inode; }; -struct ext4_attr { - struct attribute attr; - short int attr_id; - short int attr_ptr; - short unsigned int attr_size; +struct fat_entry { + int entry; union { - int offset; - void *explicit_ptr; + u8 *ent12_p[2]; + __le16 *ent16_p; + __le32 *ent32_p; } u; + int nr_bhs; + struct buffer_head *bhs[2]; + struct inode *fat_inode; }; -struct ext4_xattr_header { - __le32 h_magic; - __le32 h_refcount; - __le32 h_blocks; - __le32 h_hash; - __le32 h_checksum; - __u32 h_reserved[3]; +struct fat_cache { + struct list_head cache_list; + int nr_contig; + int fcluster; + int dcluster; }; -struct ext4_xattr_block_find { - struct ext4_xattr_search s; - struct buffer_head *bh; +struct fat_cache_id { + unsigned int id; + int nr_contig; + int fcluster; + int dcluster; }; -struct ext4_fc_tl { - __le16 fc_tag; - __le16 fc_len; +struct compat_dirent { + u32 d_ino; + compat_off_t d_off; + u16 d_reclen; + char d_name[256]; }; -struct ext4_fc_head { - __le32 fc_features; - __le32 fc_tid; +enum utf16_endian { + UTF16_HOST_ENDIAN = 0, + UTF16_LITTLE_ENDIAN = 1, + UTF16_BIG_ENDIAN = 2, }; -struct ext4_fc_add_range { - __le32 fc_ino; - __u8 fc_ex[12]; +struct __fat_dirent { + long int d_ino; + __kernel_off_t d_off; + short unsigned int d_reclen; + char d_name[256]; }; -struct ext4_fc_del_range { - __le32 fc_ino; - __le32 fc_lblk; - __le32 fc_len; +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; }; -struct ext4_fc_dentry_info { - __le32 fc_parent_ino; - __le32 fc_ino; - __u8 fc_dname[0]; +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 ext4_fc_inode { - __le32 fc_ino; - __u8 fc_raw_inode[0]; +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 ext4_fc_tail { - __le32 fc_tid; - __le32 fc_crc; -}; +typedef long long unsigned int llu; -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; +enum { + PARSE_INVALID = 1, + PARSE_NOT_LONGNAME = 2, + PARSE_EOF = 3, }; -struct __track_dentry_update_args { - struct dentry *dentry; - int op; +struct fat_ioctl_filldir_callback { + struct dir_context ctx; + void *dirent; + int result; + const char *longname; + int long_len; + const char *shortname; + int short_len; }; -struct __track_range_args { - ext4_lblk_t start; - ext4_lblk_t end; +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 dentry_info_args { - int parent_ino; - int dname_len; - int ino; - int inode_len; - char *dname; +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; + }; }; -typedef struct { - __le16 e_tag; - __le16 e_perm; - __le32 e_id; -} ext4_acl_entry; +struct fat_boot_fsinfo { + __le32 signature1; + __le32 reserved1[120]; + __le32 signature2; + __le32 free_clusters; + __le32 next_cluster; + __le32 reserved2[4]; +}; -typedef struct { - __le32 a_version; -} ext4_acl_header; +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 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 fat_floppy_defaults { + unsigned int nr_sectors; + unsigned int sec_per_clus; + unsigned int dir_entries; + unsigned int media; + unsigned int fat_length; }; -struct journal_block_tag3_s { - __be32 t_blocknr; - __be32 t_flags; - __be32 t_blocknr_high; - __be32 t_checksum; +enum { + Opt_check_n = 0, + Opt_check_r = 1, + Opt_check_s = 2, + Opt_uid___4 = 3, + Opt_gid___5 = 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___2 = 33, + Opt_err_panic___2 = 34, + Opt_err_ro___2 = 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, }; -typedef struct journal_block_tag3_s journal_block_tag3_t; +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 journal_block_tag_s { - __be32 t_blocknr; - __be16 t_checksum; - __be16 t_flags; - __be32 t_blocknr_high; +struct shortname_info { + unsigned char lower: 1; + unsigned char upper: 1; + unsigned char valid: 1; }; -typedef struct journal_block_tag_s journal_block_tag_t; +struct ecryptfs_mount_crypt_stat; -struct jbd2_journal_block_tail { - __be32 t_checksum; +struct ecryptfs_crypt_stat { + u32 flags; + unsigned int file_version; + size_t iv_bytes; + size_t metadata_size; + size_t extent_size; + size_t key_size; + size_t extent_shift; + unsigned int extent_mask; + struct ecryptfs_mount_crypt_stat *mount_crypt_stat; + struct crypto_skcipher *tfm; + struct crypto_shash *hash_tfm; + unsigned char cipher[32]; + unsigned char key[64]; + unsigned char root_iv[16]; + struct list_head keysig_list; + struct mutex keysig_list_mutex; + struct mutex cs_tfm_mutex; + struct mutex cs_mutex; }; -struct jbd2_journal_revoke_header_s { - journal_header_t r_header; - __be32 r_count; +struct ecryptfs_mount_crypt_stat { + u32 flags; + struct list_head global_auth_tok_list; + struct mutex global_auth_tok_list_mutex; + size_t global_default_cipher_key_size; + size_t global_default_fn_cipher_key_bytes; + unsigned char global_default_cipher_name[32]; + unsigned char global_default_fn_cipher_name[32]; + char global_default_fnek_sig[17]; }; -typedef struct jbd2_journal_revoke_header_s jbd2_journal_revoke_header_t; - -struct recovery_info { - tid_t start_transaction; - tid_t end_transaction; - int nr_replays; - int nr_revokes; - int nr_revoke_hits; +struct ecryptfs_inode_info { + struct inode vfs_inode; + struct inode *wii_inode; + struct mutex lower_file_mutex; + atomic_t lower_file_count; + struct file *lower_file; + struct ecryptfs_crypt_stat crypt_stat; }; -struct jbd2_revoke_table_s { - int hash_size; - int hash_shift; - struct list_head *hash_table; +struct ecryptfs_dentry_info { + struct path lower_path; + struct callback_head rcu; }; -struct jbd2_revoke_record_s { - struct list_head hash; - tid_t sequence; - long long unsigned int blocknr; +struct ecryptfs_sb_info { + struct super_block *wsi_sb; + struct ecryptfs_mount_crypt_stat mount_crypt_stat; }; -struct trace_event_raw_jbd2_checkpoint { - struct trace_entry ent; - dev_t dev; - int result; - char __data[0]; +struct ecryptfs_file_info { + struct file *wfi_file; + struct ecryptfs_crypt_stat *crypt_stat; }; -struct trace_event_raw_jbd2_commit { - struct trace_entry ent; - dev_t dev; - char sync_commit; - int transaction; - char __data[0]; +struct ecryptfs_getdents_callback { + struct dir_context ctx; + struct dir_context *caller; + struct super_block *sb; + int filldir_called; + int entries_written; }; -struct trace_event_raw_jbd2_end_commit { - struct trace_entry ent; - dev_t dev; - char sync_commit; - int transaction; - int head; - char __data[0]; +struct ecryptfs_session_key { + u32 flags; + u32 encrypted_key_size; + u32 decrypted_key_size; + u8 encrypted_key[512]; + u8 decrypted_key[64]; }; -struct trace_event_raw_jbd2_submit_inode_data { - struct trace_entry ent; - dev_t dev; - ino_t ino; - char __data[0]; +struct ecryptfs_password { + u32 password_bytes; + s32 hash_algo; + u32 hash_iterations; + u32 session_key_encryption_key_bytes; + u32 flags; + u8 session_key_encryption_key[64]; + u8 signature[17]; + u8 salt[8]; }; -struct trace_event_raw_jbd2_handle_start_class { - struct trace_entry ent; - dev_t dev; - long unsigned int tid; - unsigned int type; - unsigned int line_no; - int requested_blocks; - char __data[0]; +struct ecryptfs_private_key { + u32 key_size; + u32 data_len; + u8 signature[17]; + char pki_type[17]; + u8 data[0]; }; -struct trace_event_raw_jbd2_handle_extend { - struct trace_entry ent; - dev_t dev; - long unsigned int tid; - unsigned int type; - unsigned int line_no; - int buffer_credits; - int requested_blocks; - char __data[0]; +struct ecryptfs_auth_tok { + u16 version; + u16 token_type; + u32 flags; + struct ecryptfs_session_key session_key; + u8 reserved[32]; + union { + struct ecryptfs_password password; + struct ecryptfs_private_key private_key; + } token; }; -struct trace_event_raw_jbd2_handle_stats { - struct trace_entry ent; - dev_t dev; - long unsigned int tid; - unsigned int type; - unsigned int line_no; - int interval; - int sync; - int requested_blocks; - int dirtied_blocks; - char __data[0]; +struct ecryptfs_global_auth_tok { + u32 flags; + struct list_head mount_crypt_stat_list; + struct key *global_auth_tok_key; + unsigned char sig[17]; }; -struct trace_event_raw_jbd2_run_stats { - struct trace_entry ent; - dev_t dev; - long unsigned int tid; - long unsigned int wait; - long unsigned int request_delay; - long unsigned int running; - long unsigned int locked; - long unsigned int flushing; - long unsigned int logging; - __u32 handle_count; - __u32 blocks; - __u32 blocks_logged; - char __data[0]; +struct ecryptfs_key_tfm { + struct crypto_skcipher *key_tfm; + size_t key_size; + struct mutex key_tfm_mutex; + struct list_head key_tfm_list; + unsigned char cipher_name[32]; }; -struct trace_event_raw_jbd2_checkpoint_stats { - struct trace_entry ent; - dev_t dev; - long unsigned int tid; - long unsigned int chp_time; - __u32 forced_to_close; - __u32 written; - __u32 dropped; - char __data[0]; +enum { + ecryptfs_opt_sig = 0, + ecryptfs_opt_ecryptfs_sig = 1, + ecryptfs_opt_cipher = 2, + ecryptfs_opt_ecryptfs_cipher = 3, + ecryptfs_opt_ecryptfs_key_bytes = 4, + ecryptfs_opt_passthrough = 5, + ecryptfs_opt_xattr_metadata = 6, + ecryptfs_opt_encrypted_view = 7, + ecryptfs_opt_fnek_sig = 8, + ecryptfs_opt_fn_cipher = 9, + ecryptfs_opt_fn_cipher_key_bytes = 10, + ecryptfs_opt_unlink_sigs = 11, + ecryptfs_opt_mount_auth_tok_only = 12, + ecryptfs_opt_check_dev_ruid = 13, + ecryptfs_opt_err = 14, }; -struct trace_event_raw_jbd2_update_log_tail { - struct trace_entry ent; - dev_t dev; - tid_t tail_sequence; - tid_t first_tid; - long unsigned int block_nr; - long unsigned int freed; - char __data[0]; +struct ecryptfs_cache_info { + struct kmem_cache **cache; + const char *name; + size_t size; + slab_flags_t flags; + void (*ctor)(void *); }; -struct trace_event_raw_jbd2_write_superblock { - struct trace_entry ent; - dev_t dev; - int write_op; - char __data[0]; +struct ecryptfs_key_sig { + struct list_head crypt_stat_list; + char keysig[17]; }; -struct trace_event_raw_jbd2_lock_buffer_stall { - struct trace_entry ent; - dev_t dev; - long unsigned int stall_ms; - char __data[0]; +struct ecryptfs_filename { + struct list_head crypt_stat_list; + u32 flags; + u32 seq_no; + char *filename; + char *encrypted_filename; + size_t filename_size; + size_t encrypted_filename_size; + char fnek_sig[16]; + char dentry_name[57]; }; -struct trace_event_data_offsets_jbd2_checkpoint {}; +struct extent_crypt_result { + struct completion completion; + int rc; +}; -struct trace_event_data_offsets_jbd2_commit {}; +struct ecryptfs_flag_map_elem { + u32 file_flag; + u32 local_flag; +}; -struct trace_event_data_offsets_jbd2_end_commit {}; +struct ecryptfs_cipher_code_str_map_elem { + char cipher_str[16]; + u8 cipher_code; +}; -struct trace_event_data_offsets_jbd2_submit_inode_data {}; +struct encrypted_key_payload { + struct callback_head rcu; + char *format; + char *master_desc; + char *datalen; + u8 *iv; + u8 *encrypted_data; + short unsigned int datablob_len; + short unsigned int decrypted_datalen; + short unsigned int payload_datalen; + short unsigned int encrypted_key_format; + u8 *decrypted_data; + u8 payload_data[0]; +}; -struct trace_event_data_offsets_jbd2_handle_start_class {}; +enum ecryptfs_token_types { + ECRYPTFS_PASSWORD = 0, + ECRYPTFS_PRIVATE_KEY = 1, +}; -struct trace_event_data_offsets_jbd2_handle_extend {}; +struct ecryptfs_key_record { + unsigned char type; + size_t enc_key_size; + unsigned char sig[8]; + unsigned char enc_key[512]; +}; -struct trace_event_data_offsets_jbd2_handle_stats {}; +struct ecryptfs_auth_tok_list_item { + unsigned char encrypted_session_key[64]; + struct list_head list; + struct ecryptfs_auth_tok auth_tok; +}; -struct trace_event_data_offsets_jbd2_run_stats {}; +struct ecryptfs_message { + u32 index; + u32 data_len; + u8 data[0]; +}; -struct trace_event_data_offsets_jbd2_checkpoint_stats {}; +struct ecryptfs_msg_ctx { + u8 state; + u8 type; + u32 index; + u32 counter; + size_t msg_size; + struct ecryptfs_message *msg; + struct task_struct *task; + struct list_head node; + struct list_head daemon_out_list; + struct mutex mux; +}; -struct trace_event_data_offsets_jbd2_update_log_tail {}; +struct ecryptfs_write_tag_70_packet_silly_stack { + u8 cipher_code; + size_t max_packet_size; + size_t packet_size_len; + size_t block_aligned_filename_size; + size_t block_size; + size_t i; + size_t j; + size_t num_rand_bytes; + struct mutex *tfm_mutex; + char *block_aligned_filename; + struct ecryptfs_auth_tok *auth_tok; + struct scatterlist src_sg[2]; + struct scatterlist dst_sg[2]; + struct crypto_skcipher *skcipher_tfm; + struct skcipher_request *skcipher_req; + char iv[16]; + char hash[16]; + char tmp_hash[16]; + struct crypto_shash *hash_tfm; + struct shash_desc *hash_desc; +}; -struct trace_event_data_offsets_jbd2_write_superblock {}; +struct ecryptfs_parse_tag_70_packet_silly_stack { + u8 cipher_code; + size_t max_packet_size; + size_t packet_size_len; + size_t parsed_tag_70_packet_size; + size_t block_aligned_filename_size; + size_t block_size; + size_t i; + struct mutex *tfm_mutex; + char *decrypted_filename; + struct ecryptfs_auth_tok *auth_tok; + struct scatterlist src_sg[2]; + struct scatterlist dst_sg[2]; + struct crypto_skcipher *skcipher_tfm; + struct skcipher_request *skcipher_req; + char fnek_sig_hex[17]; + char iv[16]; + char cipher_string[32]; +}; -struct trace_event_data_offsets_jbd2_lock_buffer_stall {}; +struct ecryptfs_open_req { + struct file **lower_file; + struct path path; + struct completion done; + struct list_head kthread_ctl_list; +}; -typedef void (*btf_trace_jbd2_checkpoint)(void *, journal_t *, int); +struct ecryptfs_kthread_ctl { + u32 flags; + struct mutex mux; + struct list_head req_list; + wait_queue_head_t wait; +}; -typedef void (*btf_trace_jbd2_start_commit)(void *, journal_t *, transaction_t *); +struct ecryptfs_daemon { + u32 flags; + u32 num_queued_msg_ctx; + struct file *file; + struct mutex mux; + struct list_head msg_ctx_out_queue; + wait_queue_head_t wait; + struct hlist_node euid_chain; +}; -typedef void (*btf_trace_jbd2_commit_locking)(void *, journal_t *, transaction_t *); +struct getdents_callback___2 { + struct dir_context ctx; + char *name; + u64 ino; + int found; + int sequence; +}; -typedef void (*btf_trace_jbd2_commit_flushing)(void *, journal_t *, transaction_t *); +typedef u32 unicode_t; -typedef void (*btf_trace_jbd2_commit_logging)(void *, journal_t *, transaction_t *); +struct utf8_table { + int cmask; + int cval; + int shift; + long int lmask; + long int lval; +}; -typedef void (*btf_trace_jbd2_drop_transaction)(void *, journal_t *, transaction_t *); +struct utf8data; -typedef void (*btf_trace_jbd2_end_commit)(void *, journal_t *, transaction_t *); +struct utf8cursor { + const struct utf8data *data; + const char *s; + const char *p; + const char *ss; + const char *sp; + unsigned int len; + unsigned int slen; + short int ccc; + short int nccc; + unsigned char hangul[12]; +}; -typedef void (*btf_trace_jbd2_submit_inode_data)(void *, struct inode *); +struct utf8data { + unsigned int maxage; + unsigned int offset; +}; -typedef void (*btf_trace_jbd2_handle_start)(void *, dev_t, long unsigned int, unsigned int, unsigned int, int); +typedef const unsigned char utf8trie_t; -typedef void (*btf_trace_jbd2_handle_restart)(void *, dev_t, long unsigned int, unsigned int, unsigned int, int); +typedef const unsigned char utf8leaf_t; -typedef void (*btf_trace_jbd2_handle_extend)(void *, dev_t, long unsigned int, unsigned int, unsigned int, int, int); +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, + CUSE_INIT = 4096, + CUSE_INIT_BSWAP_RESERVED = 1048576, + FUSE_INIT_BSWAP_RESERVED = 436207616, +}; -typedef void (*btf_trace_jbd2_handle_stats)(void *, dev_t, long unsigned int, unsigned int, unsigned int, int, int, int, int); +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, +}; -typedef void (*btf_trace_jbd2_run_stats)(void *, dev_t, long unsigned int, struct transaction_run_stats_s *); +struct fuse_forget_in { + uint64_t nlookup; +}; -typedef void (*btf_trace_jbd2_checkpoint_stats)(void *, dev_t, long unsigned int, struct transaction_chp_stats_s *); +struct fuse_forget_one { + uint64_t nodeid; + uint64_t nlookup; +}; -typedef void (*btf_trace_jbd2_update_log_tail)(void *, journal_t *, tid_t, long unsigned int, long unsigned int); +struct fuse_batch_forget_in { + uint32_t count; + uint32_t dummy; +}; -typedef void (*btf_trace_jbd2_write_superblock)(void *, journal_t *, int); +struct fuse_interrupt_in { + uint64_t unique; +}; -typedef void (*btf_trace_jbd2_lock_buffer_stall)(void *, dev_t, long unsigned int); +struct fuse_notify_poll_wakeup_out { + uint64_t kh; +}; -struct jbd2_stats_proc_session { - journal_t *journal; - struct transaction_stats_s *stats; - int start; - int max; +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; + uint32_t padding; }; -struct meta_entry { - u64 data_block; - unsigned int index_block; - short unsigned int offset; - short unsigned int pad; +struct fuse_out_header { + uint32_t len; + int32_t error; + uint64_t unique; }; -struct meta_index { - unsigned int inode_number; - unsigned int offset; - short unsigned int entries; - short unsigned int skip; - short unsigned int locked; - short unsigned int pad; - struct meta_entry meta_entry[127]; +struct fuse_notify_inval_inode_out { + uint64_t ino; + int64_t off; + int64_t len; }; -struct squashfs_cache_entry; +struct fuse_notify_inval_entry_out { + uint64_t parent; + uint32_t namelen; + uint32_t padding; +}; -struct squashfs_cache { - char *name; - int entries; - int curr_blk; - int next_blk; - int num_waiters; - int unused; - int block_size; - int pages; - spinlock_t lock; - wait_queue_head_t wait_queue; - struct squashfs_cache_entry *entry; +struct fuse_notify_delete_out { + uint64_t parent; + uint64_t child; + uint32_t namelen; + uint32_t padding; }; -struct squashfs_page_actor; +struct fuse_notify_store_out { + uint64_t nodeid; + uint64_t offset; + uint32_t size; + uint32_t padding; +}; -struct squashfs_cache_entry { - u64 block; - int length; - int refcount; - u64 next_index; - int pending; - int error; - int num_waiters; - wait_queue_head_t wait_queue; - struct squashfs_cache *cache; - void **data; - struct squashfs_page_actor *actor; +struct fuse_notify_retrieve_out { + uint64_t notify_unique; + uint64_t nodeid; + uint64_t offset; + uint32_t size; + uint32_t padding; }; -struct squashfs_page_actor { - union { - void **buffer; - struct page **page; - }; - void *pageaddr; - void * (*squashfs_first_page)(struct squashfs_page_actor *); - void * (*squashfs_next_page)(struct squashfs_page_actor *); - void (*squashfs_finish_page)(struct squashfs_page_actor *); - int pages; - int length; - int next_page; +struct fuse_notify_retrieve_in { + uint64_t dummy1; + uint64_t offset; + uint32_t size; + uint32_t dummy2; + uint64_t dummy3; + uint64_t dummy4; }; -struct squashfs_decompressor; +struct fuse_forget_link { + struct fuse_forget_one forget_one; + struct fuse_forget_link *next; +}; -struct squashfs_stream; +struct fuse_mount; -struct squashfs_sb_info { - const struct squashfs_decompressor *decompressor; - int devblksize; - int devblksize_log2; - struct squashfs_cache *block_cache; - struct squashfs_cache *fragment_cache; - struct squashfs_cache *read_page; - int next_meta_index; - __le64 *id_table; - __le64 *fragment_index; - __le64 *xattr_id_table; - struct mutex meta_index_mutex; - struct meta_index *meta_index; - struct squashfs_stream *stream; - __le64 *inode_lookup_table; - u64 inode_table; - u64 directory_table; - u64 xattr_table; - unsigned int block_size; - short unsigned int block_log; - long long int bytes_used; - unsigned int inodes; - unsigned int fragments; - int xattr_ids; - unsigned int ids; -}; +struct fuse_release_args; -struct squashfs_decompressor { - void * (*init)(struct squashfs_sb_info *, void *); - void * (*comp_opts)(struct squashfs_sb_info *, void *, int); - void (*free)(void *); - int (*decompress)(struct squashfs_sb_info *, void *, struct bio *, int, int, struct squashfs_page_actor *); - int id; - char *name; - int supported; +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 rb_node polled_node; + wait_queue_head_t poll_wait; + bool flock: 1; }; -struct squashfs_dir_index { - __le32 index; - __le32 start_block; - __le32 size; - unsigned char name[0]; -}; +struct fuse_conn; -struct squashfs_dir_entry { - __le16 offset; - __le16 inode_number; - __le16 type; - __le16 size; - char name[0]; +struct fuse_mount { + struct fuse_conn *fc; + struct super_block *sb; + struct list_head fc_entry; }; -struct squashfs_dir_header { - __le32 count; - __le32 start_block; - __le32 inode_number; +struct fuse_in_arg { + unsigned int size; + const void *value; }; -struct squashfs_inode_info { - u64 start; - int offset; - u64 xattr; - unsigned int xattr_size; - int xattr_count; - union { - struct { - u64 fragment_block; - int fragment_size; - int fragment_offset; - u64 block_list_start; - }; - struct { - u64 dir_idx_start; - int dir_idx_offset; - int dir_idx_cnt; - int parent; - }; - }; - struct inode vfs_inode; +struct fuse_arg { + unsigned int size; + void *value; }; -struct squashfs_fragment_entry { - __le64 start_block; - __le32 size; - unsigned int unused; +struct fuse_page_desc { + unsigned int length; + unsigned int offset; }; -struct squashfs_base_inode { - __le16 inode_type; - __le16 mode; - __le16 uid; - __le16 guid; - __le32 mtime; - __le32 inode_number; +struct fuse_args { + uint64_t nodeid; + uint32_t opcode; + short unsigned int in_numargs; + short unsigned int out_numargs; + 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; + struct fuse_in_arg in_args[3]; + struct fuse_arg out_args[2]; + void (*end)(struct fuse_mount *, struct fuse_args *, int); }; -struct squashfs_ipc_inode { - __le16 inode_type; - __le16 mode; - __le16 uid; - __le16 guid; - __le32 mtime; - __le32 inode_number; - __le32 nlink; +struct fuse_args_pages { + struct fuse_args args; + struct page **pages; + struct fuse_page_desc *descs; + unsigned int num_pages; }; -struct squashfs_lipc_inode { - __le16 inode_type; - __le16 mode; - __le16 uid; - __le16 guid; - __le32 mtime; - __le32 inode_number; - __le32 nlink; - __le32 xattr; +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, }; -struct squashfs_dev_inode { - __le16 inode_type; - __le16 mode; - __le16 uid; - __le16 guid; - __le32 mtime; - __le32 inode_number; - __le32 nlink; - __le32 rdev; +struct fuse_req { + struct list_head list; + struct list_head intr_entry; + struct fuse_args *args; + refcount_t count; + long unsigned int 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 squashfs_ldev_inode { - __le16 inode_type; - __le16 mode; - __le16 uid; - __le16 guid; - __le32 mtime; - __le32 inode_number; - __le32 nlink; - __le32 rdev; - __le32 xattr; -}; +struct fuse_iqueue; -struct squashfs_symlink_inode { - __le16 inode_type; - __le16 mode; - __le16 uid; - __le16 guid; - __le32 mtime; - __le32 inode_number; - __le32 nlink; - __le32 symlink_size; - char symlink[0]; +struct fuse_iqueue_ops { + void (*wake_forget_and_unlock)(struct fuse_iqueue *); + void (*wake_interrupt_and_unlock)(struct fuse_iqueue *); + void (*wake_pending_and_unlock)(struct fuse_iqueue *); + void (*release)(struct fuse_iqueue *); }; -struct squashfs_reg_inode { - __le16 inode_type; - __le16 mode; - __le16 uid; - __le16 guid; - __le32 mtime; - __le32 inode_number; - __le32 start_block; - __le32 fragment; - __le32 offset; - __le32 file_size; - __le16 block_list[0]; +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; }; -struct squashfs_lreg_inode { - __le16 inode_type; - __le16 mode; - __le16 uid; - __le16 guid; - __le32 mtime; - __le32 inode_number; - __le64 start_block; - __le64 file_size; - __le64 sparse; - __le32 nlink; - __le32 fragment; - __le32 offset; - __le32 xattr; - __le16 block_list[0]; +struct fuse_pqueue { + unsigned int connected; + spinlock_t lock; + struct list_head *processing; + struct list_head io; }; -struct squashfs_dir_inode { - __le16 inode_type; - __le16 mode; - __le16 uid; - __le16 guid; - __le32 mtime; - __le32 inode_number; - __le32 start_block; - __le32 nlink; - __le16 file_size; - __le16 offset; - __le32 parent_inode; +struct fuse_dev { + struct fuse_conn *fc; + struct fuse_pqueue pq; + struct list_head entry; }; -struct squashfs_ldir_inode { - __le16 inode_type; - __le16 mode; - __le16 uid; - __le16 guid; - __le32 mtime; - __le32 inode_number; - __le32 nlink; - __le32 file_size; - __le32 start_block; - __le32 parent_inode; - __le16 i_count; - __le16 offset; - __le32 xattr; - struct squashfs_dir_index index[0]; -}; +struct fuse_conn_dax; -union squashfs_inode { - struct squashfs_base_inode base; - struct squashfs_dev_inode dev; - struct squashfs_ldev_inode ldev; - struct squashfs_symlink_inode symlink; - struct squashfs_reg_inode reg; - struct squashfs_lreg_inode lreg; - struct squashfs_dir_inode dir; - struct squashfs_ldir_inode ldir; - struct squashfs_ipc_inode ipc; - struct squashfs_lipc_inode lipc; -}; +struct fuse_sync_bucket; -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; +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 sync_fs: 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 fuse_conn_dax *dax; + struct list_head mounts; + struct fuse_sync_bucket *curr_bucket; }; -struct squashfs_stream { - void *stream; - struct mutex mutex; +struct fuse_sync_bucket { + atomic_t count; + wait_queue_head_t waitq; + struct callback_head rcu; }; -struct squashfs_xattr_entry { - __le16 type; - __le16 size; - char data[0]; +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; + long unsigned int nr_segs; + struct page *pg; + unsigned int len; + unsigned int offset; + unsigned int move_pages: 1; }; -struct squashfs_xattr_val { - __le32 vsize; - char value[0]; +struct fuse_retrieve_args { + struct fuse_args_pages ap; + struct fuse_notify_retrieve_in inarg; }; -struct squashfs_xattr_id { - __le64 xattr; - __le32 count; - __le32 size; +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 squashfs_xattr_id_table { - __le64 xattr_table_start; - __le32 xattr_ids; - __le32 unused; +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 lz4_comp_opts { - __le32 version; - __le32 flags; +struct fuse_getattr_in { + uint32_t getattr_flags; + uint32_t dummy; + uint64_t fh; }; -struct squashfs_lz4 { - void *input; - void *output; +struct fuse_attr_out { + uint64_t attr_valid; + uint32_t attr_valid_nsec; + uint32_t dummy; + struct fuse_attr attr; }; -struct squashfs_lzo { - void *input; - void *output; +struct fuse_mknod_in { + uint32_t mode; + uint32_t rdev; + uint32_t umask; + uint32_t padding; }; -enum xz_mode { - XZ_SINGLE = 0, - XZ_PREALLOC = 1, - XZ_DYNALLOC = 2, +struct fuse_mkdir_in { + uint32_t mode; + uint32_t umask; }; -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, +struct fuse_rename2_in { + uint64_t newdir; + uint32_t flags; + uint32_t padding; }; -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; +struct fuse_link_in { + uint64_t oldnodeid; }; -struct xz_dec; +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 squashfs_xz { - struct xz_dec *state; - struct xz_buf buf; +struct fuse_create_in { + uint32_t flags; + uint32_t mode; + uint32_t umask; + uint32_t open_flags; }; -struct disk_comp_opts { - __le32 dictionary_size; - __le32 flags; +struct fuse_open_out { + uint64_t fh; + uint32_t open_flags; + uint32_t padding; }; -struct comp_opts { - int dict_size; +struct fuse_access_in { + uint32_t mask; + uint32_t padding; }; -typedef unsigned char Byte; +struct fuse_inode_dax; -typedef long unsigned int uLong; +struct fuse_inode { + struct inode inode; + u64 nodeid; + u64 nlookup; + struct fuse_forget_link *forget; + u64 i_time; + u32 inval_mask; + umode_t orig_i_mode; + 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; + }; + long unsigned int state; + struct mutex mutex; + spinlock_t lock; + struct fuse_inode_dax *dax; +}; -struct internal_state; +enum { + FUSE_I_ADVISE_RDPLUS = 0, + FUSE_I_INIT_RDPLUS = 1, + FUSE_I_SIZE_UNSTABLE = 2, + FUSE_I_BAD = 3, +}; -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 fuse_file_lock { + uint64_t start; + uint64_t end; + uint32_t type; + uint32_t pid; }; -struct internal_state { - int dummy; +struct fuse_open_in { + uint32_t flags; + uint32_t open_flags; }; -typedef struct z_stream_s z_stream; +struct fuse_release_in { + uint64_t fh; + uint32_t flags; + uint32_t release_flags; + uint64_t lock_owner; +}; -typedef enum { - ZSTD_error_no_error = 0, - ZSTD_error_GENERIC = 1, - ZSTD_error_prefix_unknown = 2, - ZSTD_error_version_unsupported = 3, - ZSTD_error_parameter_unknown = 4, - ZSTD_error_frameParameter_unsupported = 5, - ZSTD_error_frameParameter_unsupportedBy32bits = 6, - ZSTD_error_frameParameter_windowTooLarge = 7, - ZSTD_error_compressionParameter_unsupported = 8, - ZSTD_error_init_missing = 9, - ZSTD_error_memory_allocation = 10, - ZSTD_error_stage_wrong = 11, - ZSTD_error_dstSize_tooSmall = 12, - ZSTD_error_srcSize_wrong = 13, - ZSTD_error_corruption_detected = 14, - ZSTD_error_checksum_wrong = 15, - ZSTD_error_tableLog_tooLarge = 16, - ZSTD_error_maxSymbolValue_tooLarge = 17, - ZSTD_error_maxSymbolValue_tooSmall = 18, - ZSTD_error_dictionary_corrupted = 19, - ZSTD_error_dictionary_wrong = 20, - ZSTD_error_dictionaryCreation_failed = 21, - ZSTD_error_maxCode = 22, -} ZSTD_ErrorCode; +struct fuse_flush_in { + uint64_t fh; + uint32_t unused; + uint32_t padding; + uint64_t lock_owner; +}; -struct ZSTD_inBuffer_s { - const void *src; - size_t size; - size_t pos; +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; }; -typedef struct ZSTD_inBuffer_s ZSTD_inBuffer; +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 ZSTD_outBuffer_s { - void *dst; - size_t size; - size_t pos; +struct fuse_write_out { + uint32_t size; + uint32_t padding; }; -typedef struct ZSTD_outBuffer_s ZSTD_outBuffer; +struct fuse_fsync_in { + uint64_t fh; + uint32_t fsync_flags; + uint32_t padding; +}; -struct ZSTD_DStream_s; +struct fuse_lk_in { + uint64_t fh; + uint64_t owner; + struct fuse_file_lock lk; + uint32_t lk_flags; + uint32_t padding; +}; -typedef struct ZSTD_DStream_s ZSTD_DStream; +struct fuse_lk_out { + struct fuse_file_lock lk; +}; -struct workspace { - void *mem; - size_t mem_size; - size_t window_size; +struct fuse_bmap_in { + uint64_t block; + uint32_t blocksize; + uint32_t padding; }; -struct ramfs_mount_opts { - umode_t mode; +struct fuse_bmap_out { + uint64_t block; }; -struct ramfs_fs_info { - struct ramfs_mount_opts mount_opts; +struct fuse_poll_in { + uint64_t fh; + uint64_t kh; + uint32_t flags; + uint32_t events; }; -enum ramfs_param { - Opt_mode___3 = 0, +struct fuse_poll_out { + uint32_t revents; + uint32_t padding; }; -enum hugetlbfs_size_type { - NO_SIZE = 0, - SIZE_STD = 1, - SIZE_PERCENT = 2, +struct fuse_fallocate_in { + uint64_t fh; + uint64_t offset; + uint64_t length; + uint32_t mode; + uint32_t padding; }; -struct hugetlbfs_fs_context { - struct hstate *hstate; - long long unsigned int max_size_opt; - long long unsigned int min_size_opt; - long int max_hpages; - long int nr_inodes; - long int min_hpages; - enum hugetlbfs_size_type max_val_type; - enum hugetlbfs_size_type min_val_type; - kuid_t uid; - kgid_t gid; - umode_t mode; +struct fuse_lseek_in { + uint64_t fh; + uint64_t offset; + uint32_t whence; + uint32_t padding; }; -enum hugetlb_param { - Opt_gid___4 = 0, - Opt_min_size = 1, - Opt_mode___4 = 2, - Opt_nr_inodes___2 = 3, - Opt_pagesize = 4, - Opt_size___2 = 5, - Opt_uid___3 = 6, +struct fuse_lseek_out { + uint64_t offset; }; -typedef u16 wchar_t; +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 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 fuse_release_args { + struct fuse_args args; + struct fuse_release_in inarg; + struct inode *inode; }; -struct fat_mount_options { - kuid_t fs_uid; - kgid_t fs_gid; - short unsigned int fs_fmask; - short unsigned int fs_dmask; - short unsigned int codepage; - int time_offset; - char *iocharset; - short unsigned int shortname; - unsigned char name_check; - unsigned char errors; - unsigned char nfs; - short unsigned int 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 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 fatent_operations; +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 msdos_sb_info { - short unsigned int sec_per_clus; - short unsigned int cluster_bits; - unsigned int cluster_size; - unsigned char fats; - unsigned char fat_bits; - short unsigned int fat_start; - long unsigned int fat_length; - long unsigned int dir_start; - short unsigned int dir_entries; - long unsigned int data_start; - long unsigned int max_cluster; - long unsigned int root_cluster; - long unsigned int 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; +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 fat_entry; +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 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 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 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 inode vfs_inode; +struct fuse_statfs_out { + struct fuse_kstatfs st; }; -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; +struct fuse_init_in { + uint32_t major; + uint32_t minor; + uint32_t max_readahead; + uint32_t flags; }; -struct fat_cache { - struct list_head cache_list; - int nr_contig; - int fcluster; - int dcluster; +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 unused[8]; }; -struct fat_cache_id { - unsigned int id; - int nr_contig; - int fcluster; - int dcluster; +struct fuse_syncfs_in { + uint64_t padding; }; -struct compat_dirent { - u32 d_ino; - compat_off_t d_off; - u16 d_reclen; - char d_name[256]; +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; + bool dax: 1; + unsigned int max_read; + unsigned int blksize; + const char *subtype; + struct dax_device *dax_dev; + void **fudptr; }; -enum utf16_endian { - UTF16_HOST_ENDIAN = 0, - UTF16_LITTLE_ENDIAN = 1, - UTF16_BIG_ENDIAN = 2, +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_ERR = 10, }; -struct __fat_dirent { - long int d_ino; - __kernel_off_t d_off; - short unsigned int d_reclen; - char d_name[256]; +struct fuse_inode_handle { + u64 nodeid; + u32 generation; }; -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; +struct fuse_init_args { + struct fuse_args args; + struct fuse_init_in in; + struct fuse_init_out out; }; -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 fuse_setxattr_in { + uint32_t size; + uint32_t flags; + uint32_t setxattr_flags; + uint32_t padding; }; -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 fuse_getxattr_in { + uint32_t size; + uint32_t padding; }; -typedef long long unsigned int llu; +struct fuse_getxattr_out { + uint32_t size; + uint32_t padding; +}; -enum { - PARSE_INVALID = 1, - PARSE_NOT_LONGNAME = 2, - PARSE_EOF = 3, +struct fuse_dirent { + uint64_t ino; + uint64_t off; + uint32_t namelen; + uint32_t type; + char name[0]; }; -struct fat_ioctl_filldir_callback { - struct dir_context ctx; - void *dirent; - int result; - const char *longname; - int long_len; - const char *shortname; - int short_len; +struct fuse_direntplus { + struct fuse_entry_out entry_out; + struct fuse_dirent dirent; }; -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; +enum fuse_parse_result { + FOUND_ERR = 4294967295, + FOUND_NONE = 0, + FOUND_SOME = 1, + FOUND_ALL = 2, }; -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 fuse_ioctl_in { + uint64_t fh; + uint32_t flags; + uint32_t cmd; + uint64_t arg; + uint32_t in_size; + uint32_t out_size; }; -struct fat_boot_fsinfo { - __le32 signature1; - __le32 reserved1[120]; - __le32 signature2; - __le32 free_clusters; - __le32 next_cluster; - __le32 reserved2[4]; +struct fuse_ioctl_iovec { + uint64_t base; + uint64_t len; }; -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 fuse_ioctl_out { + int32_t result; + uint32_t flags; + uint32_t in_iovs; + uint32_t out_iovs; }; -struct fat_floppy_defaults { - unsigned int nr_sectors; - unsigned int sec_per_clus; - unsigned int dir_entries; - unsigned int media; - unsigned int fat_length; +struct fuse_setupmapping_in { + uint64_t fh; + uint64_t foffset; + uint64_t len; + uint64_t flags; + uint64_t moffset; }; -enum { - Opt_check_n = 0, - Opt_check_r = 1, - Opt_check_s = 2, - Opt_uid___4 = 3, - Opt_gid___5 = 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___2 = 33, - Opt_err_panic___2 = 34, - Opt_err_ro___2 = 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 fuse_removemapping_in { + uint32_t count; }; -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 fuse_removemapping_one { + uint64_t moffset; + uint64_t len; }; -struct shortname_info { - unsigned char lower: 1; - unsigned char upper: 1; - unsigned char valid: 1; +struct fuse_inode_dax { + struct rw_semaphore sem; + struct rb_root_cached tree; + long unsigned int nr; }; -struct ecryptfs_mount_crypt_stat; +struct fuse_conn_dax { + struct dax_device *dev; + spinlock_t lock; + long unsigned int nr_busy_ranges; + struct list_head busy_ranges; + struct delayed_work free_work; + wait_queue_head_t range_waitq; + long int nr_free_ranges; + struct list_head free_ranges; + long unsigned int nr_ranges; +}; -struct ecryptfs_crypt_stat { - u32 flags; - unsigned int file_version; - size_t iv_bytes; - size_t metadata_size; - size_t extent_size; - size_t key_size; - size_t extent_shift; - unsigned int extent_mask; - struct ecryptfs_mount_crypt_stat *mount_crypt_stat; - struct crypto_skcipher *tfm; - struct crypto_shash *hash_tfm; - unsigned char cipher[32]; - unsigned char key[64]; - unsigned char root_iv[16]; - struct list_head keysig_list; - struct mutex keysig_list_mutex; - struct mutex cs_tfm_mutex; - struct mutex cs_mutex; +struct fuse_dax_mapping { + struct inode *inode; + struct list_head list; + struct interval_tree_node itn; + struct list_head busy_list; + u64 window_offset; + loff_t length; + bool writable; + refcount_t refcnt; }; -struct ecryptfs_mount_crypt_stat { - u32 flags; - struct list_head global_auth_tok_list; - struct mutex global_auth_tok_list_mutex; - size_t global_default_cipher_key_size; - size_t global_default_fn_cipher_key_bytes; - unsigned char global_default_cipher_name[32]; - unsigned char global_default_fn_cipher_name[32]; - char global_default_fnek_sig[17]; +struct debugfs_fsdata { + const struct file_operations *real_fops; + refcount_t active_users; + struct completion active_users_drained; }; -struct ecryptfs_inode_info { - struct inode vfs_inode; - struct inode *wii_inode; - struct mutex lower_file_mutex; - atomic_t lower_file_count; - struct file *lower_file; - struct ecryptfs_crypt_stat crypt_stat; +struct debugfs_mount_opts { + kuid_t uid; + kgid_t gid; + umode_t mode; }; -struct ecryptfs_dentry_info { - struct path lower_path; - union { - struct ecryptfs_crypt_stat *crypt_stat; - struct callback_head rcu; - }; +enum { + Opt_uid___5 = 0, + Opt_gid___6 = 1, + Opt_mode___5 = 2, + Opt_err___4 = 3, }; -struct ecryptfs_sb_info { - struct super_block *wsi_sb; - struct ecryptfs_mount_crypt_stat mount_crypt_stat; +struct debugfs_fs_info { + struct debugfs_mount_opts mount_opts; }; -struct ecryptfs_file_info { - struct file *wfi_file; - struct ecryptfs_crypt_stat *crypt_stat; +struct debugfs_blob_wrapper { + void *data; + long unsigned int size; }; -struct ecryptfs_getdents_callback { - struct dir_context ctx; - struct dir_context *caller; - struct super_block *sb; - int filldir_called; - int entries_written; +struct debugfs_reg32 { + char *name; + long unsigned int offset; }; -struct ecryptfs_session_key { - u32 flags; - u32 encrypted_key_size; - u32 decrypted_key_size; - u8 encrypted_key[512]; - u8 decrypted_key[64]; +struct debugfs_regset32 { + const struct debugfs_reg32 *regs; + int nregs; + void *base; + struct device *dev; }; -struct ecryptfs_password { - u32 password_bytes; - s32 hash_algo; - u32 hash_iterations; - u32 session_key_encryption_key_bytes; - u32 flags; - u8 session_key_encryption_key[64]; - u8 signature[17]; - u8 salt[8]; +struct debugfs_u32_array { + u32 *array; + u32 n_elements; }; -struct ecryptfs_private_key { - u32 key_size; - u32 data_len; - u8 signature[17]; - char pki_type[17]; - u8 data[0]; +struct debugfs_devm_entry { + int (*read)(struct seq_file *, void *); + struct device *dev; }; -struct ecryptfs_auth_tok { - u16 version; - u16 token_type; - u32 flags; - struct ecryptfs_session_key session_key; - u8 reserved[32]; - union { - struct ecryptfs_password password; - struct ecryptfs_private_key private_key; - } token; +struct tracefs_dir_ops { + int (*mkdir)(const char *); + int (*rmdir)(const char *); }; -struct ecryptfs_global_auth_tok { - u32 flags; - struct list_head mount_crypt_stat_list; - struct key *global_auth_tok_key; - unsigned char sig[17]; +struct tracefs_mount_opts { + kuid_t uid; + kgid_t gid; + umode_t mode; + unsigned int opts; }; -enum { - ecryptfs_opt_sig = 0, - ecryptfs_opt_ecryptfs_sig = 1, - ecryptfs_opt_cipher = 2, - ecryptfs_opt_ecryptfs_cipher = 3, - ecryptfs_opt_ecryptfs_key_bytes = 4, - ecryptfs_opt_passthrough = 5, - ecryptfs_opt_xattr_metadata = 6, - ecryptfs_opt_encrypted_view = 7, - ecryptfs_opt_fnek_sig = 8, - ecryptfs_opt_fn_cipher = 9, - ecryptfs_opt_fn_cipher_key_bytes = 10, - ecryptfs_opt_unlink_sigs = 11, - ecryptfs_opt_mount_auth_tok_only = 12, - ecryptfs_opt_check_dev_ruid = 13, - ecryptfs_opt_err = 14, +struct tracefs_fs_info { + struct tracefs_mount_opts mount_opts; }; -struct ecryptfs_cache_info { - struct kmem_cache **cache; - const char *name; - size_t size; - slab_flags_t flags; - void (*ctor)(void *); +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, }; -struct ecryptfs_key_sig { - struct list_head crypt_stat_list; - char keysig[17]; +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; + int count; + enum kmsg_dump_reason reason; + unsigned int part; + bool compressed; }; -struct ecryptfs_filename { - struct list_head crypt_stat_list; - u32 flags; - u32 seq_no; - char *filename; - char *encrypted_filename; - size_t filename_size; - size_t encrypted_filename_size; - char fnek_sig[16]; - char dentry_name[57]; +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 *); + int (*erase)(struct pstore_record *); }; -struct ecryptfs_key_tfm { - struct crypto_skcipher *key_tfm; - size_t key_size; - struct mutex key_tfm_mutex; - struct list_head key_tfm_list; - unsigned char cipher_name[32]; +struct pstore_ftrace_record { + long unsigned int ip; + long unsigned int parent_ip; + u64 ts; }; -struct extent_crypt_result { - struct completion completion; - int rc; +struct pstore_private { + struct list_head list; + struct dentry *dentry; + struct pstore_record *record; + size_t total_size; }; -struct ecryptfs_flag_map_elem { - u32 file_flag; - u32 local_flag; +struct pstore_ftrace_seq_data { + const void *ptr; + size_t off; + size_t size; }; -struct ecryptfs_cipher_code_str_map_elem { - char cipher_str[16]; - u8 cipher_code; +enum { + Opt_kmsg_bytes = 0, + Opt_err___5 = 1, }; -struct encrypted_key_payload { - struct callback_head rcu; - char *format; - char *master_desc; - char *datalen; - u8 *iv; - u8 *encrypted_data; - short unsigned int datablob_len; - short unsigned int decrypted_datalen; - short unsigned int payload_datalen; - short unsigned int encrypted_key_format; - u8 *decrypted_data; - u8 payload_data[0]; +struct crypto_comp { + struct crypto_tfm base; }; -enum ecryptfs_token_types { - ECRYPTFS_PASSWORD = 0, - ECRYPTFS_PRIVATE_KEY = 1, +struct pstore_zbackend { + int (*zbufsize)(size_t); + const char *name; }; -struct ecryptfs_key_record { - unsigned char type; - size_t enc_key_size; - unsigned char sig[8]; - unsigned char enc_key[512]; -}; +struct efi_variable { + efi_char16_t VariableName[512]; + efi_guid_t VendorGuid; + long unsigned int DataSize; + __u8 Data[1024]; + efi_status_t Status; + __u32 Attributes; +} __attribute__((packed)); -struct ecryptfs_auth_tok_list_item { - unsigned char encrypted_session_key[64]; +struct efivar_entry { + struct efi_variable var; struct list_head list; - struct ecryptfs_auth_tok auth_tok; + struct kobject kobj; + bool scanning; + bool deleting; }; -struct ecryptfs_message { - u32 index; - u32 data_len; - u8 data[0]; -}; +typedef u16 ucs2_char_t; -struct ecryptfs_msg_ctx { - u8 state; - u8 type; - u32 index; - u32 counter; - size_t msg_size; - struct ecryptfs_message *msg; - struct task_struct *task; - struct list_head node; - struct list_head daemon_out_list; - struct mutex mux; -}; +typedef s32 compat_key_t; -struct ecryptfs_write_tag_70_packet_silly_stack { - u8 cipher_code; - size_t max_packet_size; - size_t packet_size_len; - size_t block_aligned_filename_size; - size_t block_size; - size_t i; - size_t j; - size_t num_rand_bytes; - struct mutex *tfm_mutex; - char *block_aligned_filename; - struct ecryptfs_auth_tok *auth_tok; - struct scatterlist src_sg[2]; - struct scatterlist dst_sg[2]; - struct crypto_skcipher *skcipher_tfm; - struct skcipher_request *skcipher_req; - char iv[16]; - char hash[16]; - char tmp_hash[16]; - struct crypto_shash *hash_tfm; - struct shash_desc *hash_desc; +typedef u32 __compat_gid32_t; + +struct ipc64_perm { + __kernel_key_t key; + __kernel_uid32_t uid; + __kernel_gid32_t gid; + __kernel_uid32_t cuid; + __kernel_gid32_t cgid; + __kernel_mode_t mode; + unsigned char __pad1[0]; + short unsigned int seq; + short unsigned int __pad2; + __kernel_ulong_t __unused1; + __kernel_ulong_t __unused2; }; -struct ecryptfs_parse_tag_70_packet_silly_stack { - u8 cipher_code; - size_t max_packet_size; - size_t packet_size_len; - size_t parsed_tag_70_packet_size; - size_t block_aligned_filename_size; - size_t block_size; - size_t i; - struct mutex *tfm_mutex; - char *decrypted_filename; - struct ecryptfs_auth_tok *auth_tok; - struct scatterlist src_sg[2]; - struct scatterlist dst_sg[2]; - struct crypto_skcipher *skcipher_tfm; - struct skcipher_request *skcipher_req; - char fnek_sig_hex[17]; - char iv[16]; - char cipher_string[32]; +struct compat_ipc64_perm { + compat_key_t key; + __compat_uid32_t uid; + __compat_gid32_t gid; + __compat_uid32_t cuid; + __compat_gid32_t cgid; + short unsigned int mode; + short unsigned int __pad1; + short unsigned int seq; + short unsigned int __pad2; + compat_ulong_t unused1; + compat_ulong_t unused2; }; -struct ecryptfs_open_req { - struct file **lower_file; - struct path path; - struct completion done; - struct list_head kthread_ctl_list; +struct compat_ipc_perm { + key_t key; + __compat_uid_t uid; + __compat_gid_t gid; + __compat_uid_t cuid; + __compat_gid_t cgid; + compat_mode_t mode; + short unsigned int seq; }; -struct ecryptfs_kthread_ctl { - u32 flags; - struct mutex mux; - struct list_head req_list; - wait_queue_head_t wait; +struct ipc_perm { + __kernel_key_t key; + __kernel_uid_t uid; + __kernel_gid_t gid; + __kernel_uid_t cuid; + __kernel_gid_t cgid; + __kernel_mode_t mode; + short unsigned int seq; }; -struct ecryptfs_daemon { - u32 flags; - u32 num_queued_msg_ctx; - struct file *file; - struct mutex mux; - struct list_head msg_ctx_out_queue; - wait_queue_head_t wait; - struct hlist_node euid_chain; +struct ipc_params { + key_t key; + int flg; + union { + size_t size; + int nsems; + } u; }; -struct getdents_callback___2 { - struct dir_context ctx; - char *name; - u64 ino; - int found; - int sequence; +struct ipc_ops { + int (*getnew)(struct ipc_namespace *, struct ipc_params *); + int (*associate)(struct kern_ipc_perm *, int); + int (*more_checks)(struct kern_ipc_perm *, struct ipc_params *); }; -typedef u32 unicode_t; +struct ipc_proc_iface { + const char *path; + const char *header; + int ids; + int (*show)(struct seq_file *, void *); +}; -struct utf8_table { - int cmask; - int cval; - int shift; - long int lmask; - long int lval; +struct ipc_proc_iter { + struct ipc_namespace *ns; + struct pid_namespace *pid_ns; + struct ipc_proc_iface *iface; }; -struct utf8data; +struct msg_msgseg; -struct utf8cursor { - const struct utf8data *data; - const char *s; - const char *p; - const char *ss; - const char *sp; - unsigned int len; - unsigned int slen; - short int ccc; - short int nccc; - unsigned char hangul[12]; +struct msg_msg { + struct list_head m_list; + long int m_type; + size_t m_ts; + struct msg_msgseg *next; + void *security; }; -struct utf8data { - unsigned int maxage; - unsigned int offset; +struct msg_msgseg { + struct msg_msgseg *next; }; -typedef const unsigned char utf8trie_t; +typedef int __kernel_ipc_pid_t; -typedef const unsigned char utf8leaf_t; +typedef __kernel_long_t __kernel_old_time_t; -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, - CUSE_INIT = 4096, - CUSE_INIT_BSWAP_RESERVED = 1048576, - FUSE_INIT_BSWAP_RESERVED = 436207616, +struct msgbuf { + __kernel_long_t mtype; + char mtext[1]; }; -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 msg; -struct fuse_forget_in { - uint64_t nlookup; +struct msqid_ds { + struct ipc_perm msg_perm; + struct msg *msg_first; + struct msg *msg_last; + __kernel_old_time_t msg_stime; + __kernel_old_time_t msg_rtime; + __kernel_old_time_t msg_ctime; + long unsigned int msg_lcbytes; + long unsigned int msg_lqbytes; + short unsigned int msg_cbytes; + short unsigned int msg_qnum; + short unsigned int msg_qbytes; + __kernel_ipc_pid_t msg_lspid; + __kernel_ipc_pid_t msg_lrpid; }; -struct fuse_forget_one { - uint64_t nodeid; - uint64_t nlookup; +struct msqid64_ds { + struct ipc64_perm msg_perm; + long int msg_stime; + long int msg_rtime; + long int msg_ctime; + long unsigned int msg_cbytes; + long unsigned int msg_qnum; + long unsigned int msg_qbytes; + __kernel_pid_t msg_lspid; + __kernel_pid_t msg_lrpid; + long unsigned int __unused4; + long unsigned int __unused5; }; -struct fuse_batch_forget_in { - uint32_t count; - uint32_t dummy; +struct msginfo { + int msgpool; + int msgmap; + int msgmax; + int msgmnb; + int msgmni; + int msgssz; + int msgtql; + short unsigned int msgseg; }; -struct fuse_interrupt_in { - uint64_t unique; -}; +typedef s32 compat_ssize_t; -struct fuse_notify_poll_wakeup_out { - uint64_t kh; -}; +typedef u16 compat_ipc_pid_t; -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; - uint32_t padding; +struct compat_msqid64_ds { + struct compat_ipc64_perm msg_perm; + compat_ulong_t msg_stime; + compat_ulong_t msg_stime_high; + compat_ulong_t msg_rtime; + compat_ulong_t msg_rtime_high; + compat_ulong_t msg_ctime; + compat_ulong_t msg_ctime_high; + compat_ulong_t msg_cbytes; + compat_ulong_t msg_qnum; + compat_ulong_t msg_qbytes; + compat_pid_t msg_lspid; + compat_pid_t msg_lrpid; + compat_ulong_t __unused4; + compat_ulong_t __unused5; }; -struct fuse_out_header { - uint32_t len; - int32_t error; - uint64_t unique; +struct msg_queue { + struct kern_ipc_perm q_perm; + time64_t q_stime; + time64_t q_rtime; + time64_t q_ctime; + long unsigned int q_cbytes; + long unsigned int q_qnum; + long unsigned int q_qbytes; + struct pid *q_lspid; + struct pid *q_lrpid; + struct list_head q_messages; + struct list_head q_receivers; + struct list_head q_senders; + long: 64; + long: 64; }; -struct fuse_notify_inval_inode_out { - uint64_t ino; - int64_t off; - int64_t len; +struct msg_receiver { + struct list_head r_list; + struct task_struct *r_tsk; + int r_mode; + long int r_msgtype; + long int r_maxsize; + struct msg_msg *r_msg; }; -struct fuse_notify_inval_entry_out { - uint64_t parent; - uint32_t namelen; - uint32_t padding; +struct msg_sender { + struct list_head list; + struct task_struct *tsk; + size_t msgsz; }; -struct fuse_notify_delete_out { - uint64_t parent; - uint64_t child; - uint32_t namelen; - uint32_t padding; +struct compat_msqid_ds { + struct compat_ipc_perm msg_perm; + compat_uptr_t msg_first; + compat_uptr_t msg_last; + old_time32_t msg_stime; + old_time32_t msg_rtime; + old_time32_t msg_ctime; + compat_ulong_t msg_lcbytes; + compat_ulong_t msg_lqbytes; + short unsigned int msg_cbytes; + short unsigned int msg_qnum; + short unsigned int msg_qbytes; + compat_ipc_pid_t msg_lspid; + compat_ipc_pid_t msg_lrpid; }; -struct fuse_notify_store_out { - uint64_t nodeid; - uint64_t offset; - uint32_t size; - uint32_t padding; +struct compat_msgbuf { + compat_long_t mtype; + char mtext[1]; }; -struct fuse_notify_retrieve_out { - uint64_t notify_unique; - uint64_t nodeid; - uint64_t offset; - uint32_t size; - uint32_t padding; -}; +struct sem; -struct fuse_notify_retrieve_in { - uint64_t dummy1; - uint64_t offset; - uint32_t size; - uint32_t dummy2; - uint64_t dummy3; - uint64_t dummy4; -}; +struct sem_queue; -struct fuse_forget_link { - struct fuse_forget_one forget_one; - struct fuse_forget_link *next; +struct sem_undo; + +struct semid_ds { + struct ipc_perm sem_perm; + __kernel_old_time_t sem_otime; + __kernel_old_time_t sem_ctime; + struct sem *sem_base; + struct sem_queue *sem_pending; + struct sem_queue **sem_pending_last; + struct sem_undo *undo; + short unsigned int sem_nsems; }; -struct fuse_mount; +struct sem { + int semval; + struct pid *sempid; + spinlock_t lock; + struct list_head pending_alter; + struct list_head pending_const; + time64_t sem_otime; +}; -struct fuse_release_args; +struct sem_queue { + struct list_head list; + struct task_struct *sleeper; + struct sem_undo *undo; + struct pid *pid; + int status; + struct sembuf *sops; + struct sembuf *blocking; + int nsops; + bool alter; + bool dupsop; +}; -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 rb_node polled_node; - wait_queue_head_t poll_wait; - bool flock: 1; +struct sem_undo { + struct list_head list_proc; + struct callback_head rcu; + struct sem_undo_list *ulp; + struct list_head list_id; + int semid; + short int *semadj; }; -struct fuse_conn; +struct semid64_ds { + struct ipc64_perm sem_perm; + long int sem_otime; + long int sem_ctime; + long unsigned int sem_nsems; + long unsigned int __unused3; + long unsigned int __unused4; +}; -struct fuse_mount { - struct fuse_conn *fc; - struct super_block *sb; - struct list_head fc_entry; +struct seminfo { + int semmap; + int semmni; + int semmns; + int semmnu; + int semmsl; + int semopm; + int semume; + int semusz; + int semvmx; + int semaem; }; -struct fuse_in_arg { - unsigned int size; - const void *value; +struct sem_undo_list { + refcount_t refcnt; + spinlock_t lock; + struct list_head list_proc; }; -struct fuse_arg { - unsigned int size; - void *value; +struct compat_semid64_ds { + struct compat_ipc64_perm sem_perm; + compat_ulong_t sem_otime; + compat_ulong_t sem_otime_high; + compat_ulong_t sem_ctime; + compat_ulong_t sem_ctime_high; + compat_ulong_t sem_nsems; + compat_ulong_t __unused3; + compat_ulong_t __unused4; }; -struct fuse_page_desc { - unsigned int length; - unsigned int offset; +struct sem_array { + struct kern_ipc_perm sem_perm; + time64_t sem_ctime; + struct list_head pending_alter; + struct list_head pending_const; + struct list_head list_id; + int sem_nsems; + int complex_count; + unsigned int use_global_lock; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + struct sem sems[0]; }; -struct fuse_args { - uint64_t nodeid; - uint32_t opcode; - short unsigned int in_numargs; - short unsigned int out_numargs; - bool force: 1; - bool noreply: 1; - bool nocreds: 1; - bool in_pages: 1; - bool out_pages: 1; - bool out_argvar: 1; - bool page_zeroing: 1; - bool page_replace: 1; - bool may_block: 1; - struct fuse_in_arg in_args[3]; - struct fuse_arg out_args[2]; - void (*end)(struct fuse_mount *, struct fuse_args *, int); +struct compat_semid_ds { + struct compat_ipc_perm sem_perm; + old_time32_t sem_otime; + old_time32_t sem_ctime; + compat_uptr_t sem_base; + compat_uptr_t sem_pending; + compat_uptr_t sem_pending_last; + compat_uptr_t undo; + short unsigned int sem_nsems; }; -struct fuse_args_pages { - struct fuse_args args; - struct page **pages; - struct fuse_page_desc *descs; - unsigned int num_pages; +struct shmid_ds { + struct ipc_perm shm_perm; + int shm_segsz; + __kernel_old_time_t shm_atime; + __kernel_old_time_t shm_dtime; + __kernel_old_time_t shm_ctime; + __kernel_ipc_pid_t shm_cpid; + __kernel_ipc_pid_t shm_lpid; + short unsigned int shm_nattch; + short unsigned int shm_unused; + void *shm_unused2; + void *shm_unused3; }; -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, +struct shmid64_ds { + struct ipc64_perm shm_perm; + size_t shm_segsz; + long int shm_atime; + long int shm_dtime; + long int shm_ctime; + __kernel_pid_t shm_cpid; + __kernel_pid_t shm_lpid; + long unsigned int shm_nattch; + long unsigned int __unused4; + long unsigned int __unused5; }; -struct fuse_req { - struct list_head list; - struct list_head intr_entry; - struct fuse_args *args; - refcount_t count; - long unsigned int 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 shminfo64 { + long unsigned int shmmax; + long unsigned int shmmin; + long unsigned int shmmni; + long unsigned int shmseg; + long unsigned int shmall; + long unsigned int __unused1; + long unsigned int __unused2; + long unsigned int __unused3; + long unsigned int __unused4; }; -struct fuse_iqueue; +struct shminfo { + int shmmax; + int shmmin; + int shmmni; + int shmseg; + int shmall; +}; -struct fuse_iqueue_ops { - void (*wake_forget_and_unlock)(struct fuse_iqueue *); - void (*wake_interrupt_and_unlock)(struct fuse_iqueue *); - void (*wake_pending_and_unlock)(struct fuse_iqueue *); - void (*release)(struct fuse_iqueue *); +struct shm_info { + int used_ids; + __kernel_ulong_t shm_tot; + __kernel_ulong_t shm_rss; + __kernel_ulong_t shm_swp; + __kernel_ulong_t swap_attempts; + __kernel_ulong_t swap_successes; }; -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; +struct compat_shmid64_ds { + struct compat_ipc64_perm shm_perm; + compat_size_t shm_segsz; + compat_ulong_t shm_atime; + compat_ulong_t shm_atime_high; + compat_ulong_t shm_dtime; + compat_ulong_t shm_dtime_high; + compat_ulong_t shm_ctime; + compat_ulong_t shm_ctime_high; + compat_pid_t shm_cpid; + compat_pid_t shm_lpid; + compat_ulong_t shm_nattch; + compat_ulong_t __unused4; + compat_ulong_t __unused5; }; -struct fuse_pqueue { - unsigned int connected; - spinlock_t lock; - struct list_head *processing; - struct list_head io; +struct shmid_kernel { + struct kern_ipc_perm shm_perm; + struct file *shm_file; + long unsigned int shm_nattch; + long unsigned int shm_segsz; + time64_t shm_atim; + time64_t shm_dtim; + time64_t shm_ctim; + struct pid *shm_cprid; + struct pid *shm_lprid; + struct ucounts *mlock_ucounts; + struct task_struct *shm_creator; + struct list_head shm_clist; + struct ipc_namespace *ns; + long: 64; + long: 64; + long: 64; }; -struct fuse_dev { - struct fuse_conn *fc; - struct fuse_pqueue pq; - struct list_head entry; +struct shm_file_data { + int id; + struct ipc_namespace *ns; + struct file *file; + const struct vm_operations_struct *vm_ops; }; -struct fuse_conn_dax; +struct compat_shmid_ds { + struct compat_ipc_perm shm_perm; + int shm_segsz; + old_time32_t shm_atime; + old_time32_t shm_dtime; + old_time32_t shm_ctime; + compat_ipc_pid_t shm_cpid; + compat_ipc_pid_t shm_lpid; + short unsigned int shm_nattch; + short unsigned int shm_unused; + compat_uptr_t shm_unused2; + compat_uptr_t shm_unused3; +}; -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; - 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 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; - 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 fuse_conn_dax *dax; - struct list_head mounts; +struct compat_shminfo64 { + compat_ulong_t shmmax; + compat_ulong_t shmmin; + compat_ulong_t shmmni; + compat_ulong_t shmseg; + compat_ulong_t shmall; + compat_ulong_t __unused1; + compat_ulong_t __unused2; + compat_ulong_t __unused3; + compat_ulong_t __unused4; }; -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; - long unsigned int nr_segs; - struct page *pg; - unsigned int len; - unsigned int offset; - unsigned int move_pages: 1; +struct compat_shm_info { + compat_int_t used_ids; + compat_ulong_t shm_tot; + compat_ulong_t shm_rss; + compat_ulong_t shm_swp; + compat_ulong_t swap_attempts; + compat_ulong_t swap_successes; }; -struct fuse_retrieve_args { - struct fuse_args_pages ap; - struct fuse_notify_retrieve_in inarg; +struct mqueue_fs_context { + struct ipc_namespace *ipc_ns; + bool newns; }; -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 posix_msg_tree_node { + struct rb_node rb_node; + struct list_head msg_list; + int priority; }; -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 ext_wait_queue { + struct task_struct *task; + struct list_head list; + struct msg_msg *msg; + int state; }; -struct fuse_getattr_in { - uint32_t getattr_flags; - uint32_t dummy; - uint64_t fh; +struct mqueue_inode_info { + spinlock_t lock; + struct inode vfs_inode; + wait_queue_head_t wait_q; + struct rb_root msg_tree; + struct rb_node *msg_tree_rightmost; + struct posix_msg_tree_node *node_cache; + struct mq_attr attr; + struct sigevent notify; + struct pid *notify_owner; + u32 notify_self_exec_id; + struct user_namespace *notify_user_ns; + struct ucounts *ucounts; + struct sock *notify_sock; + struct sk_buff *notify_cookie; + struct ext_wait_queue e_wait_q[2]; + long unsigned int qsize; }; -struct fuse_attr_out { - uint64_t attr_valid; - uint32_t attr_valid_nsec; - uint32_t dummy; - struct fuse_attr attr; +struct compat_mq_attr { + compat_long_t mq_flags; + compat_long_t mq_maxmsg; + compat_long_t mq_msgsize; + compat_long_t mq_curmsgs; + compat_long_t __reserved[4]; }; -struct fuse_mknod_in { - uint32_t mode; - uint32_t rdev; - uint32_t umask; - uint32_t padding; +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; }; -struct fuse_mkdir_in { - uint32_t mode; - uint32_t umask; +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 fuse_rename2_in { - uint64_t newdir; - uint32_t flags; - uint32_t padding; +struct key_notification { + struct watch_notification watch; + __u32 key_id; + __u32 aux; }; -struct fuse_link_in { - uint64_t oldnodeid; +struct assoc_array_edit; + +struct assoc_array_ops { + long unsigned int (*get_key_chunk)(const void *, int); + long unsigned int (*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 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 assoc_array_node { + struct assoc_array_ptr *back_pointer; + u8 parent_slot; + struct assoc_array_ptr *slots[16]; + long unsigned int nr_leaves_on_branch; }; -struct fuse_create_in { - uint32_t flags; - uint32_t mode; - uint32_t umask; - uint32_t open_flags; +struct assoc_array_shortcut { + struct assoc_array_ptr *back_pointer; + int parent_slot; + int skip_to_level; + struct assoc_array_ptr *next_node; + long unsigned int index_key[0]; }; -struct fuse_open_out { - uint64_t fh; - uint32_t open_flags; - uint32_t padding; +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 int 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 fuse_access_in { - uint32_t mask; - uint32_t padding; +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 fuse_inode_dax; +struct keyring_read_iterator_context { + size_t buflen; + size_t count; + key_serial_t *buffer; +}; -struct fuse_inode { - struct inode inode; - u64 nodeid; - u64 nlookup; - struct fuse_forget_link *forget; - u64 i_time; - u32 inval_mask; - umode_t orig_i_mode; - u64 orig_ino; - u64 attr_version; +struct keyctl_dh_params { 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; + __s32 private; + __s32 priv; }; - long unsigned int state; - struct mutex mutex; - spinlock_t lock; - struct rw_semaphore i_mmap_sem; - struct fuse_inode_dax *dax; + __s32 prime; + __s32 base; }; -enum { - FUSE_I_ADVISE_RDPLUS = 0, - FUSE_I_INIT_RDPLUS = 1, - FUSE_I_SIZE_UNSTABLE = 2, - FUSE_I_BAD = 3, +struct keyctl_kdf_params { + char *hashname; + char *otherinfo; + __u32 otherinfolen; + __u32 __spare[8]; }; -struct fuse_file_lock { - uint64_t start; - uint64_t end; - uint32_t type; - uint32_t pid; +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 fuse_open_in { - uint32_t flags; - uint32_t open_flags; +struct keyctl_pkey_params { + __s32 key_id; + __u32 in_len; + union { + __u32 out_len; + __u32 in2_len; + }; + __u32 __spare[7]; }; -struct fuse_release_in { - uint64_t fh; - uint32_t flags; - uint32_t release_flags; - uint64_t lock_owner; +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]; }; -struct fuse_flush_in { - uint64_t fh; - uint32_t unused; - uint32_t padding; - uint64_t lock_owner; +struct compat_keyctl_kdf_params { + compat_uptr_t hashname; + compat_uptr_t otherinfo; + __u32 otherinfolen; + __u32 __spare[8]; }; -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 kpp_request { + struct crypto_async_request base; + struct scatterlist *src; + struct scatterlist *dst; + unsigned int src_len; + unsigned int dst_len; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + void *__ctx[0]; }; -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 crypto_kpp { + struct crypto_tfm base; }; -struct fuse_write_out { - uint32_t size; - uint32_t padding; +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 *); + unsigned int reqsize; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + struct crypto_alg base; }; -struct fuse_fsync_in { - uint64_t fh; - uint32_t fsync_flags; - uint32_t padding; +struct dh { + void *key; + void *p; + void *q; + void *g; + unsigned int key_size; + unsigned int p_size; + unsigned int q_size; + unsigned int g_size; }; -struct fuse_lk_in { - uint64_t fh; - uint64_t owner; - struct fuse_file_lock lk; - uint32_t lk_flags; - uint32_t padding; +struct dh_completion { + struct completion completion; + int err; }; -struct fuse_lk_out { - struct fuse_file_lock lk; +struct kdf_sdesc { + struct shash_desc shash; + char ctx[0]; }; -struct fuse_bmap_in { - uint64_t block; - uint32_t blocksize; - uint32_t padding; +enum { + Opt_err___6 = 0, + Opt_enc = 1, + Opt_hash = 2, }; -struct fuse_bmap_out { - uint64_t block; +enum tpm_duration { + TPM_SHORT = 0, + TPM_MEDIUM = 1, + TPM_LONG = 2, + TPM_LONG_LONG = 3, + TPM_UNDEFINED = 4, + TPM_NUM_DURATIONS = 4, }; -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 trusted_key_payload { + struct callback_head rcu; + unsigned int key_len; + unsigned int blob_len; + unsigned char migratable; + unsigned char old_format; + unsigned char key[129]; + unsigned char blob[512]; }; -struct fuse_ioctl_iovec { - uint64_t base; - uint64_t len; +struct trusted_key_ops { + unsigned char migratable; + int (*init)(); + int (*seal)(struct trusted_key_payload *, char *); + int (*unseal)(struct trusted_key_payload *, char *); + int (*get_random)(unsigned char *, size_t); + void (*exit)(); }; -struct fuse_ioctl_out { - int32_t result; - uint32_t flags; - uint32_t in_iovs; - uint32_t out_iovs; +struct trusted_key_source { + char *name; + struct trusted_key_ops *ops; }; -struct fuse_poll_in { - uint64_t fh; - uint64_t kh; - uint32_t flags; - uint32_t events; +enum { + Opt_err___7 = 0, + Opt_new = 1, + Opt_load = 2, + Opt_update = 3, }; -struct fuse_poll_out { - uint32_t revents; - uint32_t padding; +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); + long unsigned int priv; + short unsigned int quality; + struct list_head list; + struct kref ref; + struct completion cleanup_done; }; -struct fuse_fallocate_in { - uint64_t fh; - uint64_t offset; - uint64_t length; - uint32_t mode; - uint32_t padding; +struct tpm_digest { + u16 alg_id; + u8 digest[64]; }; -struct fuse_lseek_in { - uint64_t fh; - uint64_t offset; - uint32_t whence; - uint32_t padding; +struct tpm_bank_info { + u16 alg_id; + u16 digest_size; + u16 crypto_id; }; -struct fuse_lseek_out { - uint64_t offset; +struct tpm_chip; + +struct tpm_class_ops { + unsigned int flags; + const u8 req_complete_mask; + const u8 req_complete_val; + bool (*req_canceled)(struct tpm_chip *, u8); + int (*recv)(struct tpm_chip *, u8 *, size_t); + int (*send)(struct tpm_chip *, u8 *, size_t); + void (*cancel)(struct tpm_chip *); + u8 (*status)(struct tpm_chip *); + void (*update_timeouts)(struct tpm_chip *, long unsigned int *); + void (*update_durations)(struct tpm_chip *, long unsigned int *); + int (*go_idle)(struct tpm_chip *); + int (*cmd_ready)(struct tpm_chip *); + int (*request_locality)(struct tpm_chip *, int); + int (*relinquish_locality)(struct tpm_chip *, int); + void (*clk_enable)(struct tpm_chip *, bool); }; -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 tpm_bios_log { + void *bios_event_log; + void *bios_event_log_end; }; -struct fuse_release_args { - struct fuse_args args; - struct fuse_release_in inarg; - struct inode *inode; +struct tpm_chip_seqops { + struct tpm_chip *chip; + const struct seq_operations *seqops; }; -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 tpm_space { + u32 context_tbl[3]; + u8 *context_buf; + u32 session_tbl[3]; + u8 *session_buf; + u32 buf_size; }; -struct fuse_io_args { +struct tpm_chip { + struct device dev; + struct device devs; + struct cdev cdev; + struct cdev cdevs; + struct rw_semaphore ops_sem; + const struct tpm_class_ops *ops; + struct tpm_bios_log log; + struct tpm_chip_seqops bin_log_seqops; + struct tpm_chip_seqops ascii_log_seqops; + unsigned int flags; + int dev_num; + long unsigned int is_open; + char hwrng_name[64]; + struct hwrng hwrng; + struct mutex tpm_mutex; + long unsigned int timeout_a; + long unsigned int timeout_b; + long unsigned int timeout_c; + long unsigned int timeout_d; + bool timeout_adjusted; + long unsigned int duration[4]; + bool duration_adjusted; + struct dentry *bios_dir[3]; + const struct attribute_group *groups[8]; + unsigned int groups_cnt; + u32 nr_allocated_banks; + struct tpm_bank_info *allocated_banks; + acpi_handle acpi_dev_handle; + char ppi_version[4]; + struct tpm_space work_space; + u32 last_cc; + u32 nr_commands; + u32 *cc_attrs_tbl; + int locality; +}; + +struct tpm_header { + __be16 tag; + __be32 length; 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; + __be32 ordinal; + __be32 return_code; }; - struct fuse_args_pages ap; - struct fuse_io_priv *io; - struct fuse_file *ff; -}; +} __attribute__((packed)); -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; +enum tpm_buf_flags { + TPM_BUF_OVERFLOW = 1, }; -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 tpm_buf { + unsigned int flags; + u8 *data; }; -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 trusted_key_options { + uint16_t keytype; + uint32_t keyhandle; + unsigned char keyauth[20]; + uint32_t blobauth_len; + unsigned char blobauth[20]; + uint32_t pcrinfo_len; + unsigned char pcrinfo[64]; + int pcrlock; + uint32_t hash; + uint32_t policydigest_len; + unsigned char policydigest[64]; + uint32_t policyhandle; }; -struct fuse_statfs_out { - struct fuse_kstatfs st; +struct osapsess { + uint32_t handle; + unsigned char secret[20]; + unsigned char enonce[20]; }; -struct fuse_init_in { - uint32_t major; - uint32_t minor; - uint32_t max_readahead; - uint32_t flags; +enum { + SEAL_keytype = 1, + SRK_keytype = 4, }; -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 unused[8]; +struct sdesc { + struct shash_desc shash; + char ctx[0]; }; -struct fuse_fs_context { - int fd; - 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; - bool dax: 1; - unsigned int max_read; - unsigned int blksize; - const char *subtype; - struct dax_device *dax_dev; - void **fudptr; +struct tpm_digests { + unsigned char encauth[20]; + unsigned char pubauth[20]; + unsigned char xorwork[40]; + unsigned char xorhash[20]; + unsigned char nonceodd[20]; }; 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_ERR = 10, + Opt_err___8 = 0, + Opt_keyhandle = 1, + Opt_keyauth = 2, + Opt_blobauth = 3, + Opt_pcrinfo = 4, + Opt_pcrlock = 5, + Opt_migratable = 6, + Opt_hash___2 = 7, + Opt_policydigest = 8, + Opt_policyhandle = 9, }; -struct fuse_inode_handle { - u64 nodeid; - u32 generation; -}; +typedef int (*asn1_action_t)(void *, size_t, unsigned char, const void *, size_t); -struct fuse_init_args { - struct fuse_args args; - struct fuse_init_in in; - struct fuse_init_out out; +struct asn1_decoder { + const unsigned char *machine; + size_t machlen; + const asn1_action_t *actions; }; -struct fuse_setxattr_in { - uint32_t size; - uint32_t flags; +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_spnego = 40, + OID_IAKerb = 41, + OID_PKU2U = 42, + OID_Scram = 43, + OID_certAuthInfoAccess = 44, + OID_sha1 = 45, + OID_id_ansip384r1 = 46, + OID_sha256 = 47, + OID_sha384 = 48, + OID_sha512 = 49, + OID_sha224 = 50, + OID_commonName = 51, + OID_surname = 52, + OID_countryName = 53, + OID_locality = 54, + OID_stateOrProvinceName = 55, + OID_organizationName = 56, + OID_organizationUnitName = 57, + OID_title = 58, + OID_description = 59, + OID_name = 60, + OID_givenName = 61, + OID_initials = 62, + OID_generationalQualifier = 63, + OID_subjectKeyIdentifier = 64, + OID_keyUsage = 65, + OID_subjectAltName = 66, + OID_issuerAltName = 67, + OID_basicConstraints = 68, + OID_crlDistributionPoints = 69, + OID_certPolicies = 70, + OID_authorityKeyIdentifier = 71, + OID_extKeyUsage = 72, + OID_NetlogonMechanism = 73, + OID_appleLocalKdcSupported = 74, + OID_gostCPSignA = 75, + OID_gostCPSignB = 76, + OID_gostCPSignC = 77, + OID_gost2012PKey256 = 78, + OID_gost2012PKey512 = 79, + OID_gost2012Digest256 = 80, + OID_gost2012Digest512 = 81, + OID_gost2012Signature256 = 82, + OID_gost2012Signature512 = 83, + OID_gostTC26Sign256A = 84, + OID_gostTC26Sign256B = 85, + OID_gostTC26Sign256C = 86, + OID_gostTC26Sign256D = 87, + OID_gostTC26Sign512A = 88, + OID_gostTC26Sign512B = 89, + OID_gostTC26Sign512C = 90, + OID_sm2 = 91, + OID_sm3 = 92, + OID_SM2_with_SM3 = 93, + OID_sm3WithRSAEncryption = 94, + OID_TPMLoadableKey = 95, + OID_TPMImportableKey = 96, + OID_TPMSealedData = 97, + OID__NR = 98, }; -struct fuse_getxattr_in { - uint32_t size; - uint32_t padding; +enum tpm_algorithms { + TPM_ALG_ERROR = 0, + TPM_ALG_SHA1 = 4, + TPM_ALG_KEYEDHASH = 8, + TPM_ALG_SHA256 = 11, + TPM_ALG_SHA384 = 12, + TPM_ALG_SHA512 = 13, + TPM_ALG_NULL = 16, + TPM_ALG_SM3_256 = 18, }; -struct fuse_getxattr_out { - uint32_t size; - uint32_t padding; +enum tpm2_structures { + TPM2_ST_NO_SESSIONS = 32769, + TPM2_ST_SESSIONS = 32770, }; -struct fuse_dirent { - uint64_t ino; - uint64_t off; - uint32_t namelen; - uint32_t type; - char name[0]; +enum tpm2_return_codes { + TPM2_RC_SUCCESS = 0, + TPM2_RC_HASH = 131, + TPM2_RC_HANDLE = 139, + TPM2_RC_INITIALIZE = 256, + TPM2_RC_FAILURE = 257, + TPM2_RC_DISABLED = 288, + TPM2_RC_COMMAND_CODE = 323, + TPM2_RC_TESTING = 2314, + TPM2_RC_REFERENCE_H0 = 2320, + TPM2_RC_RETRY = 2338, }; -struct fuse_direntplus { - struct fuse_entry_out entry_out; - struct fuse_dirent dirent; +enum tpm2_command_codes { + TPM2_CC_FIRST = 287, + TPM2_CC_HIERARCHY_CONTROL = 289, + TPM2_CC_HIERARCHY_CHANGE_AUTH = 297, + TPM2_CC_CREATE_PRIMARY = 305, + TPM2_CC_SEQUENCE_COMPLETE = 318, + TPM2_CC_SELF_TEST = 323, + TPM2_CC_STARTUP = 324, + TPM2_CC_SHUTDOWN = 325, + TPM2_CC_NV_READ = 334, + TPM2_CC_CREATE = 339, + TPM2_CC_LOAD = 343, + TPM2_CC_SEQUENCE_UPDATE = 348, + TPM2_CC_UNSEAL = 350, + TPM2_CC_CONTEXT_LOAD = 353, + TPM2_CC_CONTEXT_SAVE = 354, + TPM2_CC_FLUSH_CONTEXT = 357, + TPM2_CC_VERIFY_SIGNATURE = 375, + TPM2_CC_GET_CAPABILITY = 378, + TPM2_CC_GET_RANDOM = 379, + TPM2_CC_PCR_READ = 382, + TPM2_CC_PCR_EXTEND = 386, + TPM2_CC_EVENT_SEQUENCE_COMPLETE = 389, + TPM2_CC_HASH_SEQUENCE_START = 390, + TPM2_CC_CREATE_LOADED = 401, + TPM2_CC_LAST = 403, }; -enum fuse_parse_result { - FOUND_ERR = 4294967295, - FOUND_NONE = 0, - FOUND_SOME = 1, - FOUND_ALL = 2, +enum tpm2_permanent_handles { + TPM2_RS_PW = 1073741833, }; -struct fuse_setupmapping_in { - uint64_t fh; - uint64_t foffset; - uint64_t len; - uint64_t flags; - uint64_t moffset; +enum tpm2_object_attributes { + TPM2_OA_FIXED_TPM = 2, + TPM2_OA_FIXED_PARENT = 16, + TPM2_OA_USER_WITH_AUTH = 64, }; -struct fuse_removemapping_in { - uint32_t count; +enum tpm2_session_attributes { + TPM2_SA_CONTINUE_SESSION = 1, }; -struct fuse_removemapping_one { - uint64_t moffset; - uint64_t len; +struct tpm2_hash { + unsigned int crypto_id; + unsigned int tpm_id; }; -struct fuse_inode_dax { - struct rw_semaphore sem; - struct rb_root_cached tree; - long unsigned int nr; +struct tpm2_key_context { + u32 parent; + const u8 *pub; + u32 pub_len; + const u8 *priv; + u32 priv_len; }; -struct fuse_conn_dax { - struct dax_device *dev; - spinlock_t lock; - long unsigned int nr_busy_ranges; - struct list_head busy_ranges; - struct delayed_work free_work; - wait_queue_head_t range_waitq; - long int nr_free_ranges; - struct list_head free_ranges; - long unsigned int nr_ranges; +enum asn1_class { + ASN1_UNIV = 0, + ASN1_APPL = 1, + ASN1_CONT = 2, + ASN1_PRIV = 3, }; -struct fuse_dax_mapping { - struct inode *inode; - struct list_head list; - struct interval_tree_node itn; - struct list_head busy_list; - u64 window_offset; - loff_t length; - bool writable; - refcount_t refcnt; +enum asn1_method { + ASN1_PRIM = 0, + ASN1_CONS = 1, }; -typedef struct vfsmount * (*debugfs_automount_t)(struct dentry *, void *); - -struct debugfs_fsdata { - const struct file_operations *real_fops; - refcount_t active_users; - struct completion active_users_drained; +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 debugfs_mount_opts { - kuid_t uid; - kgid_t gid; - umode_t mode; +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 { - Opt_uid___5 = 0, - Opt_gid___6 = 1, - Opt_mode___5 = 2, - Opt_err___4 = 3, +enum tpm2key_actions { + ACT_tpm2_key_parent = 0, + ACT_tpm2_key_priv = 1, + ACT_tpm2_key_pub = 2, + ACT_tpm2_key_type = 3, + NR__tpm2key_actions = 4, }; -struct debugfs_fs_info { - struct debugfs_mount_opts mount_opts; +enum { + Opt_new___2 = 0, + Opt_load___2 = 1, + Opt_update___2 = 2, + Opt_err___9 = 3, }; -struct debugfs_blob_wrapper { - void *data; - long unsigned int size; +enum { + Opt_default = 0, + Opt_ecryptfs = 1, + Opt_enc32 = 2, + Opt_error = 3, }; -struct debugfs_reg32 { - char *name; - long unsigned int offset; +enum derived_key_type { + ENC_KEY = 0, + AUTH_KEY = 1, }; -struct debugfs_regset32 { - const struct debugfs_reg32 *regs; - int nregs; - void *base; - struct device *dev; +struct vfs_cap_data { + __le32 magic_etc; + struct { + __le32 permitted; + __le32 inheritable; + } data[2]; }; -struct debugfs_u32_array { - u32 *array; - u32 n_elements; +struct vfs_ns_cap_data { + __le32 magic_etc; + struct { + __le32 permitted; + __le32 inheritable; + } data[2]; + __le32 rootid; }; -struct debugfs_devm_entry { - int (*read)(struct seq_file *, void *); - struct device *dev; -}; +struct sctp_endpoint; -struct tracefs_dir_ops { - int (*mkdir)(const char *); - int (*rmdir)(const char *); +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 *, struct file *); + int (*ptrace_access_check)(struct task_struct *, unsigned int); + int (*ptrace_traceme)(struct task_struct *); + int (*capget)(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); + 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_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 *, long unsigned int, 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 *, long unsigned int, long unsigned int *); + int (*sb_clone_mnt_opts)(const struct super_block *, struct super_block *, long unsigned int, long unsigned int *); + int (*sb_add_mnt_opt)(const char *, const char *, int, void **); + int (*move_mount)(const struct path *, const struct path *); + int (*dentry_init_security)(struct dentry *, int, const struct qstr *, void **, u32 *); + int (*dentry_create_files_as)(struct dentry *, int, struct qstr *, const struct cred *, struct cred *); + int (*path_unlink)(const struct path *, struct dentry *); + int (*path_mkdir)(const struct path *, struct dentry *, umode_t); + int (*path_rmdir)(const struct path *, struct dentry *); + int (*path_mknod)(const struct path *, struct dentry *, umode_t, unsigned int); + int (*path_truncate)(const struct path *); + int (*path_symlink)(const struct path *, struct dentry *, const char *); + int (*path_link)(struct dentry *, const struct path *, struct dentry *); + int (*path_rename)(const struct path *, struct dentry *, const struct path *, struct dentry *); + int (*path_chmod)(const struct path *, umode_t); + int (*path_chown)(const struct path *, kuid_t, kgid_t); + int (*path_chroot)(const struct path *); + 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 *, const char **, void **, size_t *); + 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 user_namespace *, 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 user_namespace *, struct dentry *, const char *); + int (*inode_need_killpriv)(struct dentry *); + int (*inode_killpriv)(struct user_namespace *, struct dentry *); + int (*inode_getsecurity)(struct user_namespace *, 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, long unsigned int); + int (*mmap_addr)(long unsigned int); + int (*mmap_file)(struct file *, long unsigned int, long unsigned int, long unsigned int); + int (*file_mprotect)(struct vm_area_struct *, long unsigned int, long unsigned int); + int (*file_lock)(struct file *, unsigned int); + int (*file_fcntl)(struct file *, unsigned int, long unsigned int); + 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 (*task_alloc)(struct task_struct *, long unsigned int); + 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_setpgid)(struct task_struct *, pid_t); + int (*task_getpgid)(struct task_struct *); + int (*task_getsid)(struct task_struct *); + void (*task_getsecid_subj)(struct task_struct *, 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, long unsigned int, long unsigned int, long unsigned int, long unsigned int); + void (*task_to_inode)(struct task_struct *, struct inode *); + int (*ipc_permission)(struct kern_ipc_perm *, short int); + 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); + 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 *, 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 *, 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 (*post_notification)(const struct cred *, const struct cred *, struct watch_notification *); + int (*watch_key)(struct key *); + 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 *, char *, int *, 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)(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_endpoint *, struct sk_buff *); + int (*sctp_bind_connect)(struct sock *, int, struct sockaddr *, int); + void (*sctp_sk_clone)(struct sctp_endpoint *, struct sock *, struct sock *); + int (*ib_pkey_access)(void *, u64, u16); + int (*ib_endport_manage_subnet)(void *, const char *, u8); + int (*ib_alloc_security)(void **); + void (*ib_free_security)(void *); + int (*xfrm_policy_alloc_security)(struct xfrm_sec_ctx **, struct xfrm_user_sec_ctx *, gfp_t); + int (*xfrm_policy_clone_security)(struct xfrm_sec_ctx *, struct xfrm_sec_ctx **); + void (*xfrm_policy_free_security)(struct xfrm_sec_ctx *); + int (*xfrm_policy_delete_security)(struct xfrm_sec_ctx *); + int (*xfrm_state_alloc)(struct xfrm_state *, struct xfrm_user_sec_ctx *); + int (*xfrm_state_alloc_acquire)(struct xfrm_state *, struct xfrm_sec_ctx *, u32); + void (*xfrm_state_free_security)(struct xfrm_state *); + int (*xfrm_state_delete_security)(struct xfrm_state *); + int (*xfrm_policy_lookup)(struct xfrm_sec_ctx *, u32); + int (*xfrm_state_pol_flow_match)(struct xfrm_state *, struct xfrm_policy *, const struct flowi_common *); + int (*xfrm_decode_session)(struct sk_buff *, u32 *, int); + int (*key_alloc)(struct key *, const struct cred *, long unsigned int); + 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 (*lock_kernel_down)(const char *, 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 *); }; -struct tracefs_mount_opts { - kuid_t uid; - kgid_t gid; - umode_t mode; +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_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 sb_add_mnt_opt; + struct hlist_head move_mount; + struct hlist_head dentry_init_security; + struct hlist_head dentry_create_files_as; + struct hlist_head path_unlink; + struct hlist_head path_mkdir; + struct hlist_head path_rmdir; + struct hlist_head path_mknod; + struct hlist_head path_truncate; + struct hlist_head path_symlink; + struct hlist_head path_link; + struct hlist_head path_rename; + struct hlist_head path_chmod; + struct hlist_head path_chown; + struct hlist_head path_chroot; + 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_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 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 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_setpgid; + struct hlist_head task_getpgid; + struct hlist_head task_getsid; + struct hlist_head task_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 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 post_notification; + struct hlist_head watch_key; + 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 ib_pkey_access; + struct hlist_head ib_endport_manage_subnet; + struct hlist_head ib_alloc_security; + struct hlist_head ib_free_security; + struct hlist_head xfrm_policy_alloc_security; + struct hlist_head xfrm_policy_clone_security; + struct hlist_head xfrm_policy_free_security; + struct hlist_head xfrm_policy_delete_security; + struct hlist_head xfrm_state_alloc; + struct hlist_head xfrm_state_alloc_acquire; + struct hlist_head xfrm_state_free_security; + struct hlist_head xfrm_state_delete_security; + struct hlist_head xfrm_policy_lookup; + struct hlist_head xfrm_state_pol_flow_match; + struct hlist_head xfrm_decode_session; + 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 lock_kernel_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 tracefs_fs_info { - struct tracefs_mount_opts mount_opts; +struct lsm_id { + const char *lsm; + int slot; }; -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, +struct security_hook_list { + struct hlist_node list; + struct hlist_head *head; + union security_list_options hook; + struct lsm_id *lsmid; }; -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; - int count; - enum kmsg_dump_reason reason; - unsigned int part; - bool compressed; +enum lsm_order { + LSM_ORDER_FIRST = 4294967295, + LSM_ORDER_MUTABLE = 0, }; -struct pstore_info { - struct module *owner; +struct lsm_info { const char *name; - struct semaphore 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 *); - int (*erase)(struct pstore_record *); -}; - -struct pstore_ftrace_record { - long unsigned int ip; - long unsigned int parent_ip; - u64 ts; + enum lsm_order order; + long unsigned int flags; + int *enabled; + int (*init)(); + struct lsm_blob_sizes *blobs; }; -struct pstore_private { - struct list_head list; - struct dentry *dentry; - struct pstore_record *record; - size_t total_size; +enum lsm_event { + LSM_POLICY_CHANGE = 0, }; -struct pstore_ftrace_seq_data { - const void *ptr; - size_t off; - size_t size; +struct ethhdr { + unsigned char h_dest[6]; + unsigned char h_source[6]; + __be16 h_proto; }; -enum { - Opt_kmsg_bytes = 0, - Opt_err___5 = 1, +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 crypto_comp { - struct crypto_tfm base; +struct ethtool_wolinfo { + __u32 cmd; + __u32 supported; + __u32 wolopts; + __u8 sopass[6]; }; -struct pstore_zbackend { - int (*zbufsize)(size_t); - const char *name; +struct ethtool_tunable { + __u32 cmd; + __u32 id; + __u32 type_id; + __u32 len; + void *data[0]; }; -struct efi_variable { - efi_char16_t VariableName[512]; - efi_guid_t VendorGuid; - long unsigned int DataSize; - __u8 Data[1024]; - efi_status_t Status; - __u32 Attributes; -} __attribute__((packed)); - -struct efivar_entry { - struct efi_variable var; - struct list_head list; - struct kobject kobj; - bool scanning; - bool deleting; +struct ethtool_regs { + __u32 cmd; + __u32 version; + __u32 len; + __u8 data[0]; }; -typedef s32 compat_key_t; - -struct ipc64_perm { - __kernel_key_t key; - __kernel_uid32_t uid; - __kernel_gid32_t gid; - __kernel_uid32_t cuid; - __kernel_gid32_t cgid; - __kernel_mode_t mode; - unsigned char __pad1[0]; - short unsigned int seq; - short unsigned int __pad2; - __kernel_ulong_t __unused1; - __kernel_ulong_t __unused2; +struct ethtool_eeprom { + __u32 cmd; + __u32 magic; + __u32 offset; + __u32 len; + __u8 data[0]; }; -typedef u32 __compat_gid32_t; - -struct compat_ipc64_perm { - compat_key_t key; - __compat_uid32_t uid; - __compat_gid32_t gid; - __compat_uid32_t cuid; - __compat_gid32_t cgid; - short unsigned int mode; - short unsigned int __pad1; - short unsigned int seq; - short unsigned int __pad2; - compat_ulong_t unused1; - compat_ulong_t unused2; +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 compat_ipc_perm { - key_t key; - __compat_uid_t uid; - __compat_gid_t gid; - __compat_uid_t cuid; - __compat_gid_t cgid; - compat_mode_t mode; - short unsigned int seq; +struct ethtool_modinfo { + __u32 cmd; + __u32 type; + __u32 eeprom_len; + __u32 reserved[8]; }; -struct ipc_perm { - __kernel_key_t key; - __kernel_uid_t uid; - __kernel_gid_t gid; - __kernel_uid_t cuid; - __kernel_gid_t cgid; - __kernel_mode_t mode; - short unsigned int seq; +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 ipc_params { - key_t key; - int flg; - union { - size_t size; - int nsems; - } u; +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 ipc_ops { - int (*getnew)(struct ipc_namespace *, struct ipc_params *); - int (*associate)(struct kern_ipc_perm *, int); - int (*more_checks)(struct kern_ipc_perm *, struct ipc_params *); +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 ipc_proc_iface { - const char *path; - const char *header; - int ids; - int (*show)(struct seq_file *, void *); +struct ethtool_pauseparam { + __u32 cmd; + __u32 autoneg; + __u32 rx_pause; + __u32 tx_pause; }; -struct ipc_proc_iter { - struct ipc_namespace *ns; - struct pid_namespace *pid_ns; - struct ipc_proc_iface *iface; +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, }; -struct msg_msgseg; - -struct msg_msg { - struct list_head m_list; - long int m_type; - size_t m_ts; - struct msg_msgseg *next; - void *security; +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, }; -struct msg_msgseg { - struct msg_msgseg *next; +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, }; -typedef int __kernel_ipc_pid_t; - -typedef __kernel_long_t __kernel_old_time_t; - -struct msgbuf { - __kernel_long_t mtype; - char mtext[1]; +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, }; -struct msg; - -struct msqid_ds { - struct ipc_perm msg_perm; - struct msg *msg_first; - struct msg *msg_last; - __kernel_old_time_t msg_stime; - __kernel_old_time_t msg_rtime; - __kernel_old_time_t msg_ctime; - long unsigned int msg_lcbytes; - long unsigned int msg_lqbytes; - short unsigned int msg_cbytes; - short unsigned int msg_qnum; - short unsigned int msg_qbytes; - __kernel_ipc_pid_t msg_lspid; - __kernel_ipc_pid_t msg_lrpid; +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, }; -struct msqid64_ds { - struct ipc64_perm msg_perm; - long int msg_stime; - long int msg_rtime; - long int msg_ctime; - long unsigned int msg_cbytes; - long unsigned int msg_qnum; - long unsigned int msg_qbytes; - __kernel_pid_t msg_lspid; - __kernel_pid_t msg_lrpid; - long unsigned int __unused4; - long unsigned int __unused5; +enum ethtool_link_ext_substate_cable_issue { + ETHTOOL_LINK_EXT_SUBSTATE_CI_UNSUPPORTED_CABLE = 1, + ETHTOOL_LINK_EXT_SUBSTATE_CI_CABLE_TEST_FAILURE = 2, }; -struct msginfo { - int msgpool; - int msgmap; - int msgmax; - int msgmnb; - int msgmni; - int msgssz; - int msgtql; - short unsigned int msgseg; +struct ethtool_test { + __u32 cmd; + __u32 flags; + __u32 reserved; + __u32 len; + __u64 data[0]; }; -typedef u16 compat_ipc_pid_t; - -struct compat_msqid64_ds { - struct compat_ipc64_perm msg_perm; - compat_ulong_t msg_stime; - compat_ulong_t msg_stime_high; - compat_ulong_t msg_rtime; - compat_ulong_t msg_rtime_high; - compat_ulong_t msg_ctime; - compat_ulong_t msg_ctime_high; - compat_ulong_t msg_cbytes; - compat_ulong_t msg_qnum; - compat_ulong_t msg_qbytes; - compat_pid_t msg_lspid; - compat_pid_t msg_lrpid; - compat_ulong_t __unused4; - compat_ulong_t __unused5; +struct ethtool_stats { + __u32 cmd; + __u32 n_stats; + __u64 data[0]; }; -struct msg_queue { - struct kern_ipc_perm q_perm; - time64_t q_stime; - time64_t q_rtime; - time64_t q_ctime; - long unsigned int q_cbytes; - long unsigned int q_qnum; - long unsigned int q_qbytes; - struct pid *q_lspid; - struct pid *q_lrpid; - struct list_head q_messages; - struct list_head q_receivers; - struct list_head q_senders; - long: 64; - long: 64; +struct ethtool_tcpip4_spec { + __be32 ip4src; + __be32 ip4dst; + __be16 psrc; + __be16 pdst; + __u8 tos; }; -struct msg_receiver { - struct list_head r_list; - struct task_struct *r_tsk; - int r_mode; - long int r_msgtype; - long int r_maxsize; - struct msg_msg *r_msg; +struct ethtool_ah_espip4_spec { + __be32 ip4src; + __be32 ip4dst; + __be32 spi; + __u8 tos; }; -struct msg_sender { - struct list_head list; - struct task_struct *tsk; - size_t msgsz; +struct ethtool_usrip4_spec { + __be32 ip4src; + __be32 ip4dst; + __be32 l4_4_bytes; + __u8 tos; + __u8 ip_ver; + __u8 proto; }; -struct compat_msqid_ds { - struct compat_ipc_perm msg_perm; - compat_uptr_t msg_first; - compat_uptr_t msg_last; - old_time32_t msg_stime; - old_time32_t msg_rtime; - old_time32_t msg_ctime; - compat_ulong_t msg_lcbytes; - compat_ulong_t msg_lqbytes; - short unsigned int msg_cbytes; - short unsigned int msg_qnum; - short unsigned int msg_qbytes; - compat_ipc_pid_t msg_lspid; - compat_ipc_pid_t msg_lrpid; +struct ethtool_tcpip6_spec { + __be32 ip6src[4]; + __be32 ip6dst[4]; + __be16 psrc; + __be16 pdst; + __u8 tclass; }; -struct compat_msgbuf { - compat_long_t mtype; - char mtext[1]; +struct ethtool_ah_espip6_spec { + __be32 ip6src[4]; + __be32 ip6dst[4]; + __be32 spi; + __u8 tclass; }; -struct sem; - -struct sem_queue; - -struct sem_undo; - -struct semid_ds { - struct ipc_perm sem_perm; - __kernel_old_time_t sem_otime; - __kernel_old_time_t sem_ctime; - struct sem *sem_base; - struct sem_queue *sem_pending; - struct sem_queue **sem_pending_last; - struct sem_undo *undo; - short unsigned int sem_nsems; +struct ethtool_usrip6_spec { + __be32 ip6src[4]; + __be32 ip6dst[4]; + __be32 l4_4_bytes; + __u8 tclass; + __u8 l4_proto; }; -struct sem { - int semval; - struct pid *sempid; - spinlock_t lock; - struct list_head pending_alter; - struct list_head pending_const; - time64_t sem_otime; +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 sembuf; - -struct sem_queue { - struct list_head list; - struct task_struct *sleeper; - struct sem_undo *undo; - struct pid *pid; - int status; - struct sembuf *sops; - struct sembuf *blocking; - int nsops; - bool alter; - bool dupsop; +struct ethtool_flow_ext { + __u8 padding[2]; + unsigned char h_dest[6]; + __be16 vlan_etype; + __be16 vlan_tci; + __be32 data[2]; }; -struct sem_undo { - struct list_head list_proc; - struct callback_head rcu; - struct sem_undo_list *ulp; - struct list_head list_id; - int semid; - short int *semadj; +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 semid64_ds { - struct ipc64_perm sem_perm; - long int sem_otime; - long int sem_ctime; - long unsigned int sem_nsems; - long unsigned int __unused3; - long unsigned int __unused4; +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 sembuf { - short unsigned int sem_num; - short int sem_op; - short int sem_flg; +struct ethtool_flash { + __u32 cmd; + __u32 region; + char data[128]; }; -struct seminfo { - int semmap; - int semmni; - int semmns; - int semmnu; - int semmsl; - int semopm; - int semume; - int semusz; - int semvmx; - int semaem; +struct ethtool_dump { + __u32 cmd; + __u32 version; + __u32 flag; + __u32 len; + __u8 data[0]; }; -struct sem_undo_list { - refcount_t refcnt; - spinlock_t lock; - struct list_head list_proc; +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 compat_semid64_ds { - struct compat_ipc64_perm sem_perm; - compat_ulong_t sem_otime; - compat_ulong_t sem_otime_high; - compat_ulong_t sem_ctime; - compat_ulong_t sem_ctime_high; - compat_ulong_t sem_nsems; - compat_ulong_t __unused3; - compat_ulong_t __unused4; +struct ethtool_fecparam { + __u32 cmd; + __u32 active_fec; + __u32 fec; + __u32 reserved; }; -struct sem_array { - struct kern_ipc_perm sem_perm; - time64_t sem_ctime; - struct list_head pending_alter; - struct list_head pending_const; - struct list_head list_id; - int sem_nsems; - int complex_count; - unsigned int use_global_lock; - long: 32; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - struct sem sems[0]; +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_MASK_NBITS = 92, }; -struct compat_semid_ds { - struct compat_ipc_perm sem_perm; - old_time32_t sem_otime; - old_time32_t sem_ctime; - compat_uptr_t sem_base; - compat_uptr_t sem_pending; - compat_uptr_t sem_pending_last; - compat_uptr_t undo; - short unsigned int sem_nsems; +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 reserved1[1]; + __u32 reserved[7]; + __u32 link_mode_masks[0]; }; -struct shmid_ds { - struct ipc_perm shm_perm; - int shm_segsz; - __kernel_old_time_t shm_atime; - __kernel_old_time_t shm_dtime; - __kernel_old_time_t shm_ctime; - __kernel_ipc_pid_t shm_cpid; - __kernel_ipc_pid_t shm_lpid; - short unsigned int shm_nattch; - short unsigned int shm_unused; - void *shm_unused2; - void *shm_unused3; +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; + u32 __link_ext_substate; + }; }; -struct shmid64_ds { - struct ipc64_perm shm_perm; - size_t shm_segsz; - long int shm_atime; - long int shm_dtime; - long int shm_ctime; - __kernel_pid_t shm_cpid; - __kernel_pid_t shm_lpid; - long unsigned int shm_nattch; - long unsigned int __unused4; - long unsigned int __unused5; +struct ethtool_link_ksettings { + struct ethtool_link_settings base; + struct { + long unsigned int supported[2]; + long unsigned int advertising[2]; + long unsigned int lp_advertising[2]; + } link_modes; + u32 lanes; }; -struct shminfo64 { - long unsigned int shmmax; - long unsigned int shmmin; - long unsigned int shmmni; - long unsigned int shmseg; - long unsigned int shmall; - long unsigned int __unused1; - long unsigned int __unused2; - long unsigned int __unused3; - long unsigned int __unused4; +struct kernel_ethtool_coalesce { + u8 use_cqe_mode_tx; + u8 use_cqe_mode_rx; }; -struct shminfo { - int shmmax; - int shmmin; - int shmmni; - int shmseg; - int shmall; +struct ethtool_eth_mac_stats { + 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 shm_info { - int used_ids; - __kernel_ulong_t shm_tot; - __kernel_ulong_t shm_rss; - __kernel_ulong_t shm_swp; - __kernel_ulong_t swap_attempts; - __kernel_ulong_t swap_successes; +struct ethtool_eth_phy_stats { + u64 SymbolErrorDuringCarrier; }; -struct compat_shmid64_ds { - struct compat_ipc64_perm shm_perm; - compat_size_t shm_segsz; - compat_ulong_t shm_atime; - compat_ulong_t shm_atime_high; - compat_ulong_t shm_dtime; - compat_ulong_t shm_dtime_high; - compat_ulong_t shm_ctime; - compat_ulong_t shm_ctime_high; - compat_pid_t shm_cpid; - compat_pid_t shm_lpid; - compat_ulong_t shm_nattch; - compat_ulong_t __unused4; - compat_ulong_t __unused5; +struct ethtool_eth_ctrl_stats { + u64 MACControlFramesTransmitted; + u64 MACControlFramesReceived; + u64 UnsupportedOpcodesReceived; }; -struct shmid_kernel { - struct kern_ipc_perm shm_perm; - struct file *shm_file; - long unsigned int shm_nattch; - long unsigned int shm_segsz; - time64_t shm_atim; - time64_t shm_dtim; - time64_t shm_ctim; - struct pid *shm_cprid; - struct pid *shm_lprid; - struct user_struct *mlock_user; - struct task_struct *shm_creator; - struct list_head shm_clist; - long: 64; - long: 64; - long: 64; - long: 64; +struct ethtool_pause_stats { + u64 tx_pause_frames; + u64 rx_pause_frames; }; -struct shm_file_data { - int id; - struct ipc_namespace *ns; - struct file *file; - const struct vm_operations_struct *vm_ops; +struct ethtool_fec_stat { + u64 total; + u64 lanes[8]; }; -struct compat_shmid_ds { - struct compat_ipc_perm shm_perm; - int shm_segsz; - old_time32_t shm_atime; - old_time32_t shm_dtime; - old_time32_t shm_ctime; - compat_ipc_pid_t shm_cpid; - compat_ipc_pid_t shm_lpid; - short unsigned int shm_nattch; - short unsigned int shm_unused; - compat_uptr_t shm_unused2; - compat_uptr_t shm_unused3; +struct ethtool_fec_stats { + struct ethtool_fec_stat corrected_blocks; + struct ethtool_fec_stat uncorrectable_blocks; + struct ethtool_fec_stat corrected_bits; }; -struct compat_shminfo64 { - compat_ulong_t shmmax; - compat_ulong_t shmmin; - compat_ulong_t shmmni; - compat_ulong_t shmseg; - compat_ulong_t shmall; - compat_ulong_t __unused1; - compat_ulong_t __unused2; - compat_ulong_t __unused3; - compat_ulong_t __unused4; +struct ethtool_rmon_hist_range { + u16 low; + u16 high; }; -struct compat_shm_info { - compat_int_t used_ids; - compat_ulong_t shm_tot; - compat_ulong_t shm_rss; - compat_ulong_t shm_swp; - compat_ulong_t swap_attempts; - compat_ulong_t swap_successes; +struct ethtool_rmon_stats { + u64 undersize_pkts; + u64 oversize_pkts; + u64 fragments; + u64 jabbers; + u64 hist[10]; + u64 hist_tx[10]; }; -struct mqueue_fs_context { - struct ipc_namespace *ipc_ns; +struct ethtool_module_eeprom { + u32 offset; + u32 length; + u8 page; + u8 bank; + u8 i2c_address; + u8 *data; }; -struct posix_msg_tree_node { - struct rb_node rb_node; - struct list_head msg_list; - int priority; +enum ib_uverbs_write_cmds { + IB_USER_VERBS_CMD_GET_CONTEXT = 0, + IB_USER_VERBS_CMD_QUERY_DEVICE = 1, + IB_USER_VERBS_CMD_QUERY_PORT = 2, + IB_USER_VERBS_CMD_ALLOC_PD = 3, + IB_USER_VERBS_CMD_DEALLOC_PD = 4, + IB_USER_VERBS_CMD_CREATE_AH = 5, + IB_USER_VERBS_CMD_MODIFY_AH = 6, + IB_USER_VERBS_CMD_QUERY_AH = 7, + IB_USER_VERBS_CMD_DESTROY_AH = 8, + IB_USER_VERBS_CMD_REG_MR = 9, + IB_USER_VERBS_CMD_REG_SMR = 10, + IB_USER_VERBS_CMD_REREG_MR = 11, + IB_USER_VERBS_CMD_QUERY_MR = 12, + IB_USER_VERBS_CMD_DEREG_MR = 13, + IB_USER_VERBS_CMD_ALLOC_MW = 14, + IB_USER_VERBS_CMD_BIND_MW = 15, + IB_USER_VERBS_CMD_DEALLOC_MW = 16, + IB_USER_VERBS_CMD_CREATE_COMP_CHANNEL = 17, + IB_USER_VERBS_CMD_CREATE_CQ = 18, + IB_USER_VERBS_CMD_RESIZE_CQ = 19, + IB_USER_VERBS_CMD_DESTROY_CQ = 20, + IB_USER_VERBS_CMD_POLL_CQ = 21, + IB_USER_VERBS_CMD_PEEK_CQ = 22, + IB_USER_VERBS_CMD_REQ_NOTIFY_CQ = 23, + IB_USER_VERBS_CMD_CREATE_QP = 24, + IB_USER_VERBS_CMD_QUERY_QP = 25, + IB_USER_VERBS_CMD_MODIFY_QP = 26, + IB_USER_VERBS_CMD_DESTROY_QP = 27, + IB_USER_VERBS_CMD_POST_SEND = 28, + IB_USER_VERBS_CMD_POST_RECV = 29, + IB_USER_VERBS_CMD_ATTACH_MCAST = 30, + IB_USER_VERBS_CMD_DETACH_MCAST = 31, + IB_USER_VERBS_CMD_CREATE_SRQ = 32, + IB_USER_VERBS_CMD_MODIFY_SRQ = 33, + IB_USER_VERBS_CMD_QUERY_SRQ = 34, + IB_USER_VERBS_CMD_DESTROY_SRQ = 35, + IB_USER_VERBS_CMD_POST_SRQ_RECV = 36, + IB_USER_VERBS_CMD_OPEN_XRCD = 37, + IB_USER_VERBS_CMD_CLOSE_XRCD = 38, + IB_USER_VERBS_CMD_CREATE_XSRQ = 39, + IB_USER_VERBS_CMD_OPEN_QP = 40, }; -struct ext_wait_queue { - struct task_struct *task; - struct list_head list; - struct msg_msg *msg; - int state; +enum ib_uverbs_wc_opcode { + IB_UVERBS_WC_SEND = 0, + IB_UVERBS_WC_RDMA_WRITE = 1, + IB_UVERBS_WC_RDMA_READ = 2, + IB_UVERBS_WC_COMP_SWAP = 3, + IB_UVERBS_WC_FETCH_ADD = 4, + IB_UVERBS_WC_BIND_MW = 5, + IB_UVERBS_WC_LOCAL_INV = 6, + IB_UVERBS_WC_TSO = 7, }; -struct mqueue_inode_info { - spinlock_t lock; - struct inode vfs_inode; - wait_queue_head_t wait_q; - struct rb_root msg_tree; - struct rb_node *msg_tree_rightmost; - struct posix_msg_tree_node *node_cache; - struct mq_attr attr; - struct sigevent notify; - struct pid *notify_owner; - u32 notify_self_exec_id; - struct user_namespace *notify_user_ns; - struct user_struct *user; - struct sock *notify_sock; - struct sk_buff *notify_cookie; - struct ext_wait_queue e_wait_q[2]; - long unsigned int qsize; +enum ib_uverbs_create_qp_mask { + IB_UVERBS_CREATE_QP_MASK_IND_TABLE = 1, }; -struct compat_mq_attr { - compat_long_t mq_flags; - compat_long_t mq_maxmsg; - compat_long_t mq_msgsize; - compat_long_t mq_curmsgs; - compat_long_t __reserved[4]; +enum ib_uverbs_wr_opcode { + IB_UVERBS_WR_RDMA_WRITE = 0, + IB_UVERBS_WR_RDMA_WRITE_WITH_IMM = 1, + IB_UVERBS_WR_SEND = 2, + IB_UVERBS_WR_SEND_WITH_IMM = 3, + IB_UVERBS_WR_RDMA_READ = 4, + IB_UVERBS_WR_ATOMIC_CMP_AND_SWP = 5, + IB_UVERBS_WR_ATOMIC_FETCH_AND_ADD = 6, + IB_UVERBS_WR_LOCAL_INV = 7, + IB_UVERBS_WR_BIND_MW = 8, + IB_UVERBS_WR_SEND_WITH_INV = 9, + IB_UVERBS_WR_TSO = 10, + IB_UVERBS_WR_RDMA_READ_WITH_INV = 11, + IB_UVERBS_WR_MASKED_ATOMIC_CMP_AND_SWP = 12, + IB_UVERBS_WR_MASKED_ATOMIC_FETCH_AND_ADD = 13, }; -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 ib_uverbs_access_flags { + IB_UVERBS_ACCESS_LOCAL_WRITE = 1, + IB_UVERBS_ACCESS_REMOTE_WRITE = 2, + IB_UVERBS_ACCESS_REMOTE_READ = 4, + IB_UVERBS_ACCESS_REMOTE_ATOMIC = 8, + IB_UVERBS_ACCESS_MW_BIND = 16, + IB_UVERBS_ACCESS_ZERO_BASED = 32, + IB_UVERBS_ACCESS_ON_DEMAND = 64, + IB_UVERBS_ACCESS_HUGETLB = 128, + IB_UVERBS_ACCESS_RELAXED_ORDERING = 1048576, + IB_UVERBS_ACCESS_OPTIONAL_RANGE = 1072693248, }; -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, +enum ib_uverbs_srq_type { + IB_UVERBS_SRQT_BASIC = 0, + IB_UVERBS_SRQT_XRC = 1, + IB_UVERBS_SRQT_TM = 2, }; -struct key_notification { - struct watch_notification watch; - __u32 key_id; - __u32 aux; +enum ib_uverbs_wq_type { + IB_UVERBS_WQT_RQ = 0, }; -struct assoc_array_edit; +enum ib_uverbs_wq_flags { + IB_UVERBS_WQ_FLAGS_CVLAN_STRIPPING = 1, + IB_UVERBS_WQ_FLAGS_SCATTER_FCS = 2, + IB_UVERBS_WQ_FLAGS_DELAY_DROP = 4, + IB_UVERBS_WQ_FLAGS_PCI_WRITE_END_PADDING = 8, +}; -struct assoc_array_ops { - long unsigned int (*get_key_chunk)(const void *, int); - long unsigned int (*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 *); +enum ib_uverbs_qp_type { + IB_UVERBS_QPT_RC = 2, + IB_UVERBS_QPT_UC = 3, + IB_UVERBS_QPT_UD = 4, + IB_UVERBS_QPT_RAW_PACKET = 8, + IB_UVERBS_QPT_XRC_INI = 9, + IB_UVERBS_QPT_XRC_TGT = 10, + IB_UVERBS_QPT_DRIVER = 255, }; -struct assoc_array_node { - struct assoc_array_ptr *back_pointer; - u8 parent_slot; - struct assoc_array_ptr *slots[16]; - long unsigned int nr_leaves_on_branch; +enum ib_uverbs_qp_create_flags { + IB_UVERBS_QP_CREATE_BLOCK_MULTICAST_LOOPBACK = 2, + IB_UVERBS_QP_CREATE_SCATTER_FCS = 256, + IB_UVERBS_QP_CREATE_CVLAN_STRIPPING = 512, + IB_UVERBS_QP_CREATE_PCI_WRITE_END_PADDING = 2048, + IB_UVERBS_QP_CREATE_SQ_SIG_ALL = 4096, }; -struct assoc_array_shortcut { - struct assoc_array_ptr *back_pointer; - int parent_slot; - int skip_to_level; - struct assoc_array_ptr *next_node; - long unsigned int index_key[0]; +enum ib_uverbs_gid_type { + IB_UVERBS_GID_TYPE_IB = 0, + IB_UVERBS_GID_TYPE_ROCE_V1 = 1, + IB_UVERBS_GID_TYPE_ROCE_V2 = 2, }; -struct assoc_array_edit___2 { - 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 int 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]; +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 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 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 keyring_read_iterator_context { - size_t buflen; - size_t count; - key_serial_t *buffer; +struct lsm_ioctlop_audit { + struct path path; + u16 cmd; }; -struct keyctl_dh_params { - union { - __s32 private; - __s32 priv; - }; - __s32 prime; - __s32 base; +struct lsm_ibpkey_audit { + u64 subnet_prefix; + u16 pkey; }; -struct keyctl_kdf_params { - char *hashname; - char *otherinfo; - __u32 otherinfolen; - __u32 __spare[8]; +struct lsm_ibendport_audit { + const char *dev_name; + u8 port; }; -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 selinux_state; + +struct selinux_audit_data { + u32 ssid; + u32 tsid; + u16 tclass; + u32 requested; + u32 audited; + u32 denied; + int result; + struct selinux_state *state; }; -struct keyctl_pkey_params { - __s32 key_id; - __u32 in_len; +struct smack_audit_data; + +struct apparmor_audit_data; + +struct common_audit_data { + char type; union { - __u32 out_len; - __u32 in2_len; + 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; + } u; + union { + struct smack_audit_data *smack_audit_data; + struct selinux_audit_data *selinux_audit_data; + struct apparmor_audit_data *apparmor_audit_data; }; - __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 { + POLICYDB_CAPABILITY_NETPEER = 0, + POLICYDB_CAPABILITY_OPENPERM = 1, + POLICYDB_CAPABILITY_EXTSOCKCLASS = 2, + POLICYDB_CAPABILITY_ALWAYSNETWORK = 3, + POLICYDB_CAPABILITY_CGROUPSECLABEL = 4, + POLICYDB_CAPABILITY_NNP_NOSUID_TRANSITION = 5, + POLICYDB_CAPABILITY_GENFS_SECLABEL_SYMLINKS = 6, + POLICYDB_CAPABILITY_IOCTL_SKIP_CLOEXEC = 7, + __POLICYDB_CAPABILITY_MAX = 8, }; -struct compat_keyctl_kdf_params { - compat_uptr_t hashname; - compat_uptr_t otherinfo; - __u32 otherinfolen; - __u32 __spare[8]; -}; +struct selinux_avc; -struct kpp_request { - struct crypto_async_request base; - struct scatterlist *src; - struct scatterlist *dst; - unsigned int src_len; - unsigned int dst_len; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - void *__ctx[0]; +struct selinux_policy; + +struct selinux_state { + bool enforcing; + bool checkreqprot; + bool initialized; + bool policycap[8]; + struct page *status_page; + struct mutex status_lock; + struct selinux_avc *avc; + struct selinux_policy *policy; + struct mutex policy_mutex; }; -struct crypto_kpp { - struct crypto_tfm base; +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 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 *); - unsigned int reqsize; - long: 32; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - struct crypto_alg base; +struct selinux_avc { + unsigned int avc_cache_threshold; + struct avc_cache avc_cache; }; -struct dh { - void *key; - void *p; - void *q; - void *g; - unsigned int key_size; - unsigned int p_size; - unsigned int q_size; - unsigned int g_size; +struct av_decision { + u32 allowed; + u32 auditallow; + u32 auditdeny; + u32 seqno; + u32 flags; }; -struct dh_completion { - struct completion completion; - int err; +struct extended_perms_data { + u32 p[8]; }; -struct kdf_sdesc { - struct shash_desc shash; - char ctx[0]; +struct extended_perms_decision { + u8 used; + u8 driver; + struct extended_perms_data *allowed; + struct extended_perms_data *auditallow; + struct extended_perms_data *dontaudit; }; -enum { - Opt_err___6 = 0, - Opt_enc = 1, - Opt_hash = 2, +struct extended_perms { + u16 len; + struct extended_perms_data drivers; }; -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 avc_cache_stats { + unsigned int lookups; + unsigned int misses; + unsigned int allocations; + unsigned int reclaims; + unsigned int frees; }; -struct hwrng { +struct security_class_mapping { 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); - long unsigned int priv; - short unsigned int quality; - struct list_head list; - struct kref ref; - struct completion cleanup_done; + const char *perms[33]; }; -struct tpm_digest { - u16 alg_id; - u8 digest[64]; +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 tpm_bank_info { - u16 alg_id; - u16 digest_size; - u16 crypto_id; +struct trace_event_data_offsets_selinux_audited { + u32 scontext; + u32 tcontext; + u32 tclass; }; -struct tpm_chip; +typedef void (*btf_trace_selinux_audited)(void *, struct selinux_audit_data *, char *, char *, const char *); -struct tpm_class_ops { - unsigned int flags; - const u8 req_complete_mask; - const u8 req_complete_val; - bool (*req_canceled)(struct tpm_chip *, u8); - int (*recv)(struct tpm_chip *, u8 *, size_t); - int (*send)(struct tpm_chip *, u8 *, size_t); - void (*cancel)(struct tpm_chip *); - u8 (*status)(struct tpm_chip *); - void (*update_timeouts)(struct tpm_chip *, long unsigned int *); - void (*update_durations)(struct tpm_chip *, long unsigned int *); - int (*go_idle)(struct tpm_chip *); - int (*cmd_ready)(struct tpm_chip *); - int (*request_locality)(struct tpm_chip *, int); - int (*relinquish_locality)(struct tpm_chip *, int); - void (*clk_enable)(struct tpm_chip *, bool); -}; +struct avc_xperms_node; -struct tpm_bios_log { - void *bios_event_log; - void *bios_event_log_end; +struct avc_entry { + u32 ssid; + u32 tsid; + u16 tclass; + struct av_decision avd; + struct avc_xperms_node *xp_node; }; -struct tpm_chip_seqops { - struct tpm_chip *chip; - const struct seq_operations *seqops; +struct avc_xperms_node { + struct extended_perms xp; + struct list_head xpd_head; }; -struct tpm_space { - u32 context_tbl[3]; - u8 *context_buf; - u32 session_tbl[3]; - u8 *session_buf; - u32 buf_size; +struct avc_node { + struct avc_entry ae; + struct hlist_node list; + struct callback_head rhead; }; -struct tpm_chip { - struct device dev; - struct device devs; - struct cdev cdev; - struct cdev cdevs; - struct rw_semaphore ops_sem; - const struct tpm_class_ops *ops; - struct tpm_bios_log log; - struct tpm_chip_seqops bin_log_seqops; - struct tpm_chip_seqops ascii_log_seqops; - unsigned int flags; - int dev_num; - long unsigned int is_open; - char hwrng_name[64]; - struct hwrng hwrng; - struct mutex tpm_mutex; - long unsigned int timeout_a; - long unsigned int timeout_b; - long unsigned int timeout_c; - long unsigned int timeout_d; - bool timeout_adjusted; - long unsigned int duration[4]; - bool duration_adjusted; - struct dentry *bios_dir[3]; - const struct attribute_group *groups[3]; - unsigned int groups_cnt; - u32 nr_allocated_banks; - struct tpm_bank_info *allocated_banks; - acpi_handle acpi_dev_handle; - char ppi_version[4]; - struct tpm_space work_space; - u32 last_cc; - u32 nr_commands; - u32 *cc_attrs_tbl; - int locality; +struct avc_xperms_decision_node { + struct extended_perms_decision xpd; + struct list_head xpd_list; }; -enum tpm_duration { - TPM_SHORT = 0, - TPM_MEDIUM = 1, - TPM_LONG = 2, - TPM_LONG_LONG = 3, - TPM_UNDEFINED = 4, - TPM_NUM_DURATIONS = 4, +struct avc_callback_node { + int (*callback)(u32); + u32 events; + struct avc_callback_node *next; }; -struct tpm_header { - __be16 tag; - __be32 length; - union { - __be32 ordinal; - __be32 return_code; - }; -} __attribute__((packed)); +typedef __u16 __sum16; -enum tpm_buf_flags { - TPM_BUF_OVERFLOW = 1, +enum sctp_endpoint_type { + SCTP_EP_TYPE_SOCKET = 0, + SCTP_EP_TYPE_ASSOCIATION = 1, }; -struct tpm_buf { - unsigned int flags; - u8 *data; +struct sctp_chunk; + +struct sctp_inq { + struct list_head in_chunk_list; + struct sctp_chunk *in_progress; + struct work_struct immediate; }; -struct trusted_key_payload { - struct callback_head rcu; - unsigned int key_len; - unsigned int blob_len; - unsigned char migratable; - unsigned char key[129]; - unsigned char blob[512]; +struct sctp_bind_addr { + __u16 port; + struct list_head address_list; }; -struct trusted_key_options { - uint16_t keytype; - uint32_t keyhandle; - unsigned char keyauth[20]; - uint32_t blobauth_len; - unsigned char blobauth[20]; - uint32_t pcrinfo_len; - unsigned char pcrinfo[64]; - int pcrlock; - uint32_t hash; - uint32_t policydigest_len; - unsigned char policydigest[64]; - uint32_t policyhandle; +struct sctp_ep_common { + struct hlist_node node; + int hashent; + 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; }; -struct osapsess { - uint32_t handle; - unsigned char secret[20]; - unsigned char enonce[20]; +struct sctp_hmac_algo_param; + +struct sctp_chunks_param; + +struct sctp_endpoint { + struct sctp_ep_common base; + 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; + u32 secid; + u32 peer_secid; + struct callback_head rcu; }; -enum { - SEAL_keytype = 1, - SRK_keytype = 4, +struct sockaddr_in6 { + short unsigned int sin6_family; + __be16 sin6_port; + __be32 sin6_flowinfo; + struct in6_addr sin6_addr; + __u32 sin6_scope_id; }; -struct sdesc { - struct shash_desc shash; - char ctx[0]; +struct in_addr { + __be32 s_addr; }; -struct tpm_digests { - unsigned char encauth[20]; - unsigned char pubauth[20]; - unsigned char xorwork[40]; - unsigned char xorhash[20]; - unsigned char nonceodd[20]; +struct sockaddr_in { + __kernel_sa_family_t sin_family; + __be16 sin_port; + struct in_addr sin_addr; + unsigned char __pad[8]; }; -enum { - Opt_err___7 = 0, - Opt_new = 1, - Opt_load = 2, - Opt_update = 3, - Opt_keyhandle = 4, - Opt_keyauth = 5, - Opt_blobauth = 6, - Opt_pcrinfo = 7, - Opt_pcrlock = 8, - Opt_migratable = 9, - Opt_hash___2 = 10, - Opt_policydigest = 11, - Opt_policyhandle = 12, +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; }; -enum tpm_algorithms { - TPM_ALG_ERROR = 0, - TPM_ALG_SHA1 = 4, - TPM_ALG_KEYEDHASH = 8, - TPM_ALG_SHA256 = 11, - TPM_ALG_SHA384 = 12, - TPM_ALG_SHA512 = 13, - TPM_ALG_NULL = 16, - TPM_ALG_SM3_256 = 18, +struct nf_hook_entries { + u16 num_hook_entries; + struct nf_hook_entry hooks[0]; }; -enum tpm2_structures { - TPM2_ST_NO_SESSIONS = 32769, - TPM2_ST_SESSIONS = 32770, +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 *); }; -enum tpm2_return_codes { - TPM2_RC_SUCCESS = 0, - TPM2_RC_HASH = 131, - TPM2_RC_HANDLE = 139, - TPM2_RC_INITIALIZE = 256, - TPM2_RC_FAILURE = 257, - TPM2_RC_DISABLED = 288, - TPM2_RC_COMMAND_CODE = 323, - TPM2_RC_TESTING = 2314, - TPM2_RC_REFERENCE_H0 = 2320, - TPM2_RC_RETRY = 2338, +enum nf_hook_ops_type { + NF_HOOK_OP_UNDEFINED = 0, + NF_HOOK_OP_NF_TABLES = 1, }; -enum tpm2_command_codes { - TPM2_CC_FIRST = 287, - TPM2_CC_HIERARCHY_CONTROL = 289, - TPM2_CC_HIERARCHY_CHANGE_AUTH = 297, - TPM2_CC_CREATE_PRIMARY = 305, - TPM2_CC_SEQUENCE_COMPLETE = 318, - TPM2_CC_SELF_TEST = 323, - TPM2_CC_STARTUP = 324, - TPM2_CC_SHUTDOWN = 325, - TPM2_CC_NV_READ = 334, - TPM2_CC_CREATE = 339, - TPM2_CC_LOAD = 343, - TPM2_CC_SEQUENCE_UPDATE = 348, - TPM2_CC_UNSEAL = 350, - TPM2_CC_CONTEXT_LOAD = 353, - TPM2_CC_CONTEXT_SAVE = 354, - TPM2_CC_FLUSH_CONTEXT = 357, - TPM2_CC_VERIFY_SIGNATURE = 375, - TPM2_CC_GET_CAPABILITY = 378, - TPM2_CC_GET_RANDOM = 379, - TPM2_CC_PCR_READ = 382, - TPM2_CC_PCR_EXTEND = 386, - TPM2_CC_EVENT_SEQUENCE_COMPLETE = 389, - TPM2_CC_HASH_SEQUENCE_START = 390, - TPM2_CC_CREATE_LOADED = 401, - TPM2_CC_LAST = 403, +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 tpm2_permanent_handles { - TPM2_RS_PW = 1073741833, +enum nf_ip_hook_priorities { + NF_IP_PRI_FIRST = 2147483648, + NF_IP_PRI_RAW_BEFORE_DEFRAG = 4294966846, + NF_IP_PRI_CONNTRACK_DEFRAG = 4294966896, + NF_IP_PRI_RAW = 4294966996, + NF_IP_PRI_SELINUX_FIRST = 4294967071, + NF_IP_PRI_CONNTRACK = 4294967096, + NF_IP_PRI_MANGLE = 4294967146, + NF_IP_PRI_NAT_DST = 4294967196, + 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, }; -enum tpm2_object_attributes { - TPM2_OA_USER_WITH_AUTH = 64, +enum nf_ip6_hook_priorities { + NF_IP6_PRI_FIRST = 2147483648, + NF_IP6_PRI_RAW_BEFORE_DEFRAG = 4294966846, + NF_IP6_PRI_CONNTRACK_DEFRAG = 4294966896, + NF_IP6_PRI_RAW = 4294966996, + NF_IP6_PRI_SELINUX_FIRST = 4294967071, + NF_IP6_PRI_CONNTRACK = 4294967096, + NF_IP6_PRI_MANGLE = 4294967146, + NF_IP6_PRI_NAT_DST = 4294967196, + NF_IP6_PRI_FILTER = 0, + NF_IP6_PRI_SECURITY = 50, + NF_IP6_PRI_NAT_SRC = 100, + NF_IP6_PRI_SELINUX_LAST = 225, + NF_IP6_PRI_CONNTRACK_HELPER = 300, + NF_IP6_PRI_LAST = 2147483647, }; -enum tpm2_session_attributes { - TPM2_SA_CONTINUE_SESSION = 1, +struct socket_alloc { + struct socket socket; + struct inode vfs_inode; + long: 64; }; -struct tpm2_hash { - unsigned int crypto_id; - unsigned int tpm_id; +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]; }; -enum { - Opt_new___2 = 0, - Opt_load___2 = 1, - Opt_update___2 = 2, - Opt_err___8 = 3, +struct ip_options_rcu { + struct callback_head rcu; + struct ip_options opt; }; -enum { - Opt_default = 0, - Opt_ecryptfs = 1, - Opt_enc32 = 2, - Opt_error = 3, +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; }; -enum derived_key_type { - ENC_KEY = 0, - AUTH_KEY = 1, +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 vfs_cap_data { - __le32 magic_etc; - struct { - __le32 permitted; - __le32 inheritable; - } data[2]; +struct inet_cork_full { + struct inet_cork base; + struct flowi fl; }; -struct vfs_ns_cap_data { - __le32 magic_etc; - struct { - __le32 permitted; - __le32 inheritable; - } data[2]; - __le32 rootid; +struct ipv6_pinfo; + +struct ip_mc_socklist; + +struct inet_sock { + struct sock sk; + struct ipv6_pinfo *pinet6; + __be32 inet_saddr; + __s16 uc_ttl; + __u16 cmsg_flags; + struct ip_options_rcu *inet_opt; + __be16 inet_sport; + __u16 inet_id; + __u8 tos; + __u8 min_ttl; + __u8 mc_ttl; + __u8 pmtudisc; + __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 rcv_tos; + __u8 convert_csum; + int uc_index; + int mc_index; + __be32 mc_addr; + struct ip_mc_socklist *mc_list; + struct inet_cork_full cork; +}; + +struct in6_pktinfo { + struct in6_addr ipi6_addr; + int ipi6_ifindex; }; -struct sctp_endpoint; +struct inet6_cork { + struct ipv6_txoptions *opt; + u8 hop_limit; + u8 tclass; +}; -struct xfrm_sec_ctx; +struct ipv6_mc_socklist; -struct xfrm_user_sec_ctx; +struct ipv6_ac_socklist; -union security_list_options { - int (*binder_set_context_mgr)(struct task_struct *); - int (*binder_transaction)(struct task_struct *, struct task_struct *); - int (*binder_transfer_binder)(struct task_struct *, struct task_struct *); - int (*binder_transfer_file)(struct task_struct *, struct task_struct *, struct file *); - int (*ptrace_access_check)(struct task_struct *, unsigned int); - int (*ptrace_traceme)(struct task_struct *); - int (*capget)(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); - 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_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_free_security)(struct super_block *); - void (*sb_free_mnt_opts)(void *); - int (*sb_eat_lsm_opts)(char *, 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 *, long unsigned int, 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 *, long unsigned int, long unsigned int *); - int (*sb_clone_mnt_opts)(const struct super_block *, struct super_block *, long unsigned int, long unsigned int *); - int (*sb_add_mnt_opt)(const char *, const char *, int, void **); - int (*move_mount)(const struct path *, const struct path *); - int (*dentry_init_security)(struct dentry *, int, const struct qstr *, void **, u32 *); - int (*dentry_create_files_as)(struct dentry *, int, struct qstr *, const struct cred *, struct cred *); - int (*path_unlink)(const struct path *, struct dentry *); - int (*path_mkdir)(const struct path *, struct dentry *, umode_t); - int (*path_rmdir)(const struct path *, struct dentry *); - int (*path_mknod)(const struct path *, struct dentry *, umode_t, unsigned int); - int (*path_truncate)(const struct path *); - int (*path_symlink)(const struct path *, struct dentry *, const char *); - int (*path_link)(struct dentry *, const struct path *, struct dentry *); - int (*path_rename)(const struct path *, struct dentry *, const struct path *, struct dentry *); - int (*path_chmod)(const struct path *, umode_t); - int (*path_chown)(const struct path *, kuid_t, kgid_t); - int (*path_chroot)(const struct path *); - 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 *, const char **, void **, size_t *); - 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 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 dentry *, const char *); - int (*inode_need_killpriv)(struct dentry *); - int (*inode_killpriv)(struct dentry *); - int (*inode_getsecurity)(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, long unsigned int); - int (*mmap_addr)(long unsigned int); - int (*mmap_file)(struct file *, long unsigned int, long unsigned int, long unsigned int); - int (*file_mprotect)(struct vm_area_struct *, long unsigned int, long unsigned int); - int (*file_lock)(struct file *, unsigned int); - int (*file_fcntl)(struct file *, unsigned int, long unsigned int); - 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 (*task_alloc)(struct task_struct *, long unsigned int); - 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_setpgid)(struct task_struct *, pid_t); - int (*task_getpgid)(struct task_struct *); - int (*task_getsid)(struct task_struct *); - void (*task_getsecid)(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, long unsigned int, long unsigned int, long unsigned int, long unsigned int); - void (*task_to_inode)(struct task_struct *, struct inode *); - int (*ipc_permission)(struct kern_ipc_perm *, short int); - 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); - 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 *, 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 *, 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 (*post_notification)(const struct cred *, const struct cred *, struct watch_notification *); - int (*watch_key)(struct key *); - 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 *, char *, int *, 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)(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_endpoint *, struct sk_buff *); - int (*sctp_bind_connect)(struct sock *, int, struct sockaddr *, int); - void (*sctp_sk_clone)(struct sctp_endpoint *, struct sock *, struct sock *); - int (*ib_pkey_access)(void *, u64, u16); - int (*ib_endport_manage_subnet)(void *, const char *, u8); - int (*ib_alloc_security)(void **); - void (*ib_free_security)(void *); - int (*xfrm_policy_alloc_security)(struct xfrm_sec_ctx **, struct xfrm_user_sec_ctx *, gfp_t); - int (*xfrm_policy_clone_security)(struct xfrm_sec_ctx *, struct xfrm_sec_ctx **); - void (*xfrm_policy_free_security)(struct xfrm_sec_ctx *); - int (*xfrm_policy_delete_security)(struct xfrm_sec_ctx *); - int (*xfrm_state_alloc)(struct xfrm_state *, struct xfrm_user_sec_ctx *); - int (*xfrm_state_alloc_acquire)(struct xfrm_state *, struct xfrm_sec_ctx *, u32); - void (*xfrm_state_free_security)(struct xfrm_state *); - int (*xfrm_state_delete_security)(struct xfrm_state *); - int (*xfrm_policy_lookup)(struct xfrm_sec_ctx *, u32, u8); - int (*xfrm_state_pol_flow_match)(struct xfrm_state *, struct xfrm_policy *, const struct flowi_common *); - int (*xfrm_decode_session)(struct sk_buff *, u32 *, int); - int (*key_alloc)(struct key *, const struct cred *, long unsigned int); - 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 (*lock_kernel_down)(const char *, 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 *); -}; +struct ipv6_fl_socklist; -struct lsm_id { - const char *lsm; - int slot; +struct ipv6_pinfo { + struct in6_addr saddr; + struct in6_pktinfo sticky_pktinfo; + const struct in6_addr *daddr_cache; + const struct in6_addr *saddr_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 *ipv6_mc_list; + struct ipv6_ac_socklist *ipv6_ac_list; + struct ipv6_fl_socklist *ipv6_fl_list; + struct ipv6_txoptions *opt; + struct sk_buff *pktoptions; + struct sk_buff *rxpmtu; + struct inet6_cork cork; }; -struct security_hook_list { - struct hlist_node list; - struct hlist_head *head; - union security_list_options hook; - struct lsm_id *lsmid; +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; }; -enum lsm_event { - LSM_POLICY_CHANGE = 0, +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; + }; }; -typedef int (*initxattrs)(struct inode *, const struct xattr *, void *); +struct ipv6_rt_hdr { + __u8 nexthdr; + __u8 hdrlen; + __u8 type; + __u8 segments_left; +}; -struct xfrm_sec_ctx { - __u8 ctx_doi; - __u8 ctx_alg; - __u16 ctx_len; - __u32 ctx_sid; - char ctx_str[0]; +struct ipv6_opt_hdr { + __u8 nexthdr; + __u8 hdrlen; }; -struct xfrm_user_sec_ctx { - __u16 len; - __u16 exttype; - __u8 ctx_alg; - __u8 ctx_doi; - __u16 ctx_len; +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 ethhdr { - unsigned char h_dest[6]; - unsigned char h_source[6]; - __be16 h_proto; +struct udphdr { + __be16 source; + __be16 dest; + __be16 len; + __sum16 check; }; -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 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 ethtool_wolinfo { - __u32 cmd; - __u32 supported; - __u32 wolopts; - __u8 sopass[6]; +struct ip6_sf_socklist; + +struct ipv6_mc_socklist { + struct in6_addr addr; + int ifindex; + unsigned int sfmode; + struct ipv6_mc_socklist *next; + struct ip6_sf_socklist *sflist; + struct callback_head rcu; }; -struct ethtool_tunable { - __u32 cmd; - __u32 id; - __u32 type_id; - __u32 len; - void *data[0]; +struct ipv6_ac_socklist { + struct in6_addr acl_addr; + int acl_ifindex; + struct ipv6_ac_socklist *acl_next; }; -struct ethtool_regs { - __u32 cmd; - __u32 version; - __u32 len; - __u8 data[0]; +struct ip6_flowlabel; + +struct ipv6_fl_socklist { + struct ipv6_fl_socklist *next; + struct ip6_flowlabel *fl; + struct callback_head rcu; }; -struct ethtool_eeprom { - __u32 cmd; - __u32 magic; - __u32 offset; - __u32 len; - __u8 data[0]; +struct ip6_sf_socklist { + unsigned int sl_max; + unsigned int sl_count; + struct callback_head rcu; + struct in6_addr sl_addr[0]; }; -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 ip6_flowlabel { + struct ip6_flowlabel *next; + __be32 label; + atomic_t users; + struct in6_addr dst; + struct ipv6_txoptions *opt; + long unsigned int linger; + struct callback_head rcu; + u8 share; + union { + struct pid *pid; + kuid_t uid; + } owner; + long unsigned int lastuse; + long unsigned int expires; + struct net *fl_net; }; -struct ethtool_modinfo { - __u32 cmd; - __u32 type; - __u32 eeprom_len; - __u32 reserved[8]; +struct inet_skb_parm { + int iif; + struct ip_options opt; + u16 flags; + u16 frag_max_size; }; -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 tty_file_private { + struct tty_struct *tty; + struct file *file; + struct list_head list; }; -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 netlbl_lsm_cache { + refcount_t refcount; + void (*free)(const void *); + void *data; }; -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 netlbl_lsm_catmap { + u32 startbit; + u64 bitmap[4]; + struct netlbl_lsm_catmap *next; }; -struct ethtool_pauseparam { - __u32 cmd; - __u32 autoneg; - __u32 rx_pause; - __u32 tx_pause; +struct netlbl_lsm_secattr { + u32 flags; + u32 type; + char *domain; + struct netlbl_lsm_cache *cache; + struct { + struct { + struct netlbl_lsm_catmap *cat; + u32 lvl; + } mls; + struct lsmblob lsmblob; + } attr; }; -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, +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; }; -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 dccp_state { + DCCP_OPEN = 1, + DCCP_REQUESTING = 2, + DCCP_LISTEN = 10, + DCCP_RESPOND = 3, + DCCP_ACTIVE_CLOSEREQ = 4, + DCCP_PASSIVE_CLOSE = 8, + DCCP_CLOSING = 11, + DCCP_TIME_WAIT = 6, + DCCP_CLOSED = 7, + DCCP_NEW_SYN_RECV = 12, + DCCP_PARTOPEN = 13, + DCCP_PASSIVE_CLOSEREQ = 14, + DCCP_MAX_STATES = 15, }; -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, +typedef __s32 sctp_assoc_t; + +enum sctp_msg_flags { + MSG_NOTIFICATION = 32768, }; -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, +struct sctp_initmsg { + __u16 sinit_num_ostreams; + __u16 sinit_max_instreams; + __u16 sinit_max_attempts; + __u16 sinit_max_init_timeo; }; -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, +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; }; -enum ethtool_link_ext_substate_cable_issue { - ETHTOOL_LINK_EXT_SUBSTATE_CI_UNSUPPORTED_CABLE = 1, - ETHTOOL_LINK_EXT_SUBSTATE_CI_CABLE_TEST_FAILURE = 2, +struct sctp_rtoinfo { + sctp_assoc_t srto_assoc_id; + __u32 srto_initial; + __u32 srto_max; + __u32 srto_min; }; -struct ethtool_test { - __u32 cmd; - __u32 flags; - __u32 reserved; - __u32 len; - __u64 data[0]; +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 ethtool_stats { - __u32 cmd; - __u32 n_stats; - __u64 data[0]; +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 sctphdr { + __be16 source; + __be16 dest; + __be32 vtag; + __le32 checksum; }; -struct ethtool_tcpip4_spec { - __be32 ip4src; - __be32 ip4dst; - __be16 psrc; - __be16 pdst; - __u8 tos; +struct sctp_chunkhdr { + __u8 type; + __u8 flags; + __be16 length; }; -struct ethtool_ah_espip4_spec { - __be32 ip4src; - __be32 ip4dst; - __be32 spi; - __u8 tos; +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, }; -struct ethtool_usrip4_spec { - __be32 ip4src; - __be32 ip4dst; - __be32 l4_4_bytes; - __u8 tos; - __u8 ip_ver; - __u8 proto; +struct sctp_paramhdr { + __be16 type; + __be16 length; }; -struct ethtool_tcpip6_spec { - __be32 ip6src[4]; - __be32 ip6dst[4]; - __be16 psrc; - __be16 pdst; - __u8 tclass; +enum sctp_param { + SCTP_PARAM_HEARTBEAT_INFO = 256, + SCTP_PARAM_IPV4_ADDRESS = 1280, + SCTP_PARAM_IPV6_ADDRESS = 1536, + SCTP_PARAM_STATE_COOKIE = 1792, + SCTP_PARAM_UNRECOGNIZED_PARAMETERS = 2048, + SCTP_PARAM_COOKIE_PRESERVATIVE = 2304, + SCTP_PARAM_HOST_NAME_ADDRESS = 2816, + SCTP_PARAM_SUPPORTED_ADDRESS_TYPES = 3072, + SCTP_PARAM_ECN_CAPABLE = 128, + SCTP_PARAM_RANDOM = 640, + SCTP_PARAM_CHUNKS = 896, + SCTP_PARAM_HMAC_ALGO = 1152, + SCTP_PARAM_SUPPORTED_EXT = 2176, + SCTP_PARAM_FWD_TSN_SUPPORT = 192, + SCTP_PARAM_ADD_IP = 448, + SCTP_PARAM_DEL_IP = 704, + SCTP_PARAM_ERR_CAUSE = 960, + SCTP_PARAM_SET_PRIMARY = 1216, + SCTP_PARAM_SUCCESS_REPORT = 1472, + SCTP_PARAM_ADAPTATION_LAYER_IND = 1728, + SCTP_PARAM_RESET_OUT_REQUEST = 3328, + SCTP_PARAM_RESET_IN_REQUEST = 3584, + SCTP_PARAM_RESET_TSN_REQUEST = 3840, + SCTP_PARAM_RESET_RESPONSE = 4096, + SCTP_PARAM_RESET_ADD_OUT_STREAMS = 4352, + SCTP_PARAM_RESET_ADD_IN_STREAMS = 4608, }; -struct ethtool_ah_espip6_spec { - __be32 ip6src[4]; - __be32 ip6dst[4]; - __be32 spi; - __u8 tclass; +struct sctp_datahdr { + __be32 tsn; + __be16 stream; + __be16 ssn; + __u32 ppid; + __u8 payload[0]; }; -struct ethtool_usrip6_spec { - __be32 ip6src[4]; - __be32 ip6dst[4]; - __be32 l4_4_bytes; - __u8 tclass; - __u8 l4_proto; +struct sctp_idatahdr { + __be32 tsn; + __be16 stream; + __be16 reserved; + __be32 mid; + union { + __u32 ppid; + __be32 fsn; + }; + __u8 payload[0]; }; -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 sctp_inithdr { + __be32 init_tag; + __be32 a_rwnd; + __be16 num_outbound_streams; + __be16 num_inbound_streams; + __be32 initial_tsn; + __u8 params[0]; }; -struct ethtool_flow_ext { - __u8 padding[2]; - unsigned char h_dest[6]; - __be16 vlan_etype; - __be16 vlan_tci; - __be32 data[2]; +struct sctp_init_chunk { + struct sctp_chunkhdr chunk_hdr; + struct sctp_inithdr init_hdr; }; -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 sctp_ipv4addr_param { + struct sctp_paramhdr param_hdr; + struct in_addr addr; }; -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 sctp_ipv6addr_param { + struct sctp_paramhdr param_hdr; + struct in6_addr addr; }; -struct ethtool_flash { - __u32 cmd; - __u32 region; - char data[128]; +struct sctp_cookie_preserve_param { + struct sctp_paramhdr param_hdr; + __be32 lifespan_increment; }; -struct ethtool_dump { - __u32 cmd; - __u32 version; - __u32 flag; - __u32 len; - __u8 data[0]; +struct sctp_hostname_param { + struct sctp_paramhdr param_hdr; + uint8_t hostname[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 sctp_supported_addrs_param { + struct sctp_paramhdr param_hdr; + __be16 types[0]; }; -struct ethtool_fecparam { - __u32 cmd; - __u32 active_fec; - __u32 fec; - __u32 reserved; +struct sctp_adaptation_ind_param { + struct sctp_paramhdr param_hdr; + __be32 adaptation_ind; }; -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_MASK_NBITS = 92, +struct sctp_supported_ext_param { + struct sctp_paramhdr param_hdr; + __u8 chunks[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 reserved1[1]; - __u32 reserved[7]; - __u32 link_mode_masks[0]; +struct sctp_random_param { + struct sctp_paramhdr param_hdr; + __u8 random_val[0]; }; -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; - u8 __link_ext_substate; - }; +struct sctp_chunks_param { + struct sctp_paramhdr param_hdr; + __u8 chunks[0]; }; -struct ethtool_link_ksettings { - struct ethtool_link_settings base; - struct { - long unsigned int supported[2]; - long unsigned int advertising[2]; - long unsigned int lp_advertising[2]; - } link_modes; +struct sctp_hmac_algo_param { + struct sctp_paramhdr param_hdr; + __be16 hmac_ids[0]; }; -struct ethtool_pause_stats { - u64 tx_pause_frames; - u64 rx_pause_frames; +struct sctp_cookie_param { + struct sctp_paramhdr p; + __u8 body[0]; }; -enum ib_uverbs_write_cmds { - IB_USER_VERBS_CMD_GET_CONTEXT = 0, - IB_USER_VERBS_CMD_QUERY_DEVICE = 1, - IB_USER_VERBS_CMD_QUERY_PORT = 2, - IB_USER_VERBS_CMD_ALLOC_PD = 3, - IB_USER_VERBS_CMD_DEALLOC_PD = 4, - IB_USER_VERBS_CMD_CREATE_AH = 5, - IB_USER_VERBS_CMD_MODIFY_AH = 6, - IB_USER_VERBS_CMD_QUERY_AH = 7, - IB_USER_VERBS_CMD_DESTROY_AH = 8, - IB_USER_VERBS_CMD_REG_MR = 9, - IB_USER_VERBS_CMD_REG_SMR = 10, - IB_USER_VERBS_CMD_REREG_MR = 11, - IB_USER_VERBS_CMD_QUERY_MR = 12, - IB_USER_VERBS_CMD_DEREG_MR = 13, - IB_USER_VERBS_CMD_ALLOC_MW = 14, - IB_USER_VERBS_CMD_BIND_MW = 15, - IB_USER_VERBS_CMD_DEALLOC_MW = 16, - IB_USER_VERBS_CMD_CREATE_COMP_CHANNEL = 17, - IB_USER_VERBS_CMD_CREATE_CQ = 18, - IB_USER_VERBS_CMD_RESIZE_CQ = 19, - IB_USER_VERBS_CMD_DESTROY_CQ = 20, - IB_USER_VERBS_CMD_POLL_CQ = 21, - IB_USER_VERBS_CMD_PEEK_CQ = 22, - IB_USER_VERBS_CMD_REQ_NOTIFY_CQ = 23, - IB_USER_VERBS_CMD_CREATE_QP = 24, - IB_USER_VERBS_CMD_QUERY_QP = 25, - IB_USER_VERBS_CMD_MODIFY_QP = 26, - IB_USER_VERBS_CMD_DESTROY_QP = 27, - IB_USER_VERBS_CMD_POST_SEND = 28, - IB_USER_VERBS_CMD_POST_RECV = 29, - IB_USER_VERBS_CMD_ATTACH_MCAST = 30, - IB_USER_VERBS_CMD_DETACH_MCAST = 31, - IB_USER_VERBS_CMD_CREATE_SRQ = 32, - IB_USER_VERBS_CMD_MODIFY_SRQ = 33, - IB_USER_VERBS_CMD_QUERY_SRQ = 34, - IB_USER_VERBS_CMD_DESTROY_SRQ = 35, - IB_USER_VERBS_CMD_POST_SRQ_RECV = 36, - IB_USER_VERBS_CMD_OPEN_XRCD = 37, - IB_USER_VERBS_CMD_CLOSE_XRCD = 38, - IB_USER_VERBS_CMD_CREATE_XSRQ = 39, - IB_USER_VERBS_CMD_OPEN_QP = 40, +struct sctp_gap_ack_block { + __be16 start; + __be16 end; }; -enum ib_uverbs_wc_opcode { - IB_UVERBS_WC_SEND = 0, - IB_UVERBS_WC_RDMA_WRITE = 1, - IB_UVERBS_WC_RDMA_READ = 2, - IB_UVERBS_WC_COMP_SWAP = 3, - IB_UVERBS_WC_FETCH_ADD = 4, - IB_UVERBS_WC_BIND_MW = 5, - IB_UVERBS_WC_LOCAL_INV = 6, - IB_UVERBS_WC_TSO = 7, +union sctp_sack_variable { + struct sctp_gap_ack_block gab; + __be32 dup; }; -enum ib_uverbs_create_qp_mask { - IB_UVERBS_CREATE_QP_MASK_IND_TABLE = 1, +struct sctp_sackhdr { + __be32 cum_tsn_ack; + __be32 a_rwnd; + __be16 num_gap_ack_blocks; + __be16 num_dup_tsns; + union sctp_sack_variable variable[0]; }; -enum ib_uverbs_wr_opcode { - IB_UVERBS_WR_RDMA_WRITE = 0, - IB_UVERBS_WR_RDMA_WRITE_WITH_IMM = 1, - IB_UVERBS_WR_SEND = 2, - IB_UVERBS_WR_SEND_WITH_IMM = 3, - IB_UVERBS_WR_RDMA_READ = 4, - IB_UVERBS_WR_ATOMIC_CMP_AND_SWP = 5, - IB_UVERBS_WR_ATOMIC_FETCH_AND_ADD = 6, - IB_UVERBS_WR_LOCAL_INV = 7, - IB_UVERBS_WR_BIND_MW = 8, - IB_UVERBS_WR_SEND_WITH_INV = 9, - IB_UVERBS_WR_TSO = 10, - IB_UVERBS_WR_RDMA_READ_WITH_INV = 11, - IB_UVERBS_WR_MASKED_ATOMIC_CMP_AND_SWP = 12, - IB_UVERBS_WR_MASKED_ATOMIC_FETCH_AND_ADD = 13, +struct sctp_heartbeathdr { + struct sctp_paramhdr info; }; -enum ib_uverbs_access_flags { - IB_UVERBS_ACCESS_LOCAL_WRITE = 1, - IB_UVERBS_ACCESS_REMOTE_WRITE = 2, - IB_UVERBS_ACCESS_REMOTE_READ = 4, - IB_UVERBS_ACCESS_REMOTE_ATOMIC = 8, - IB_UVERBS_ACCESS_MW_BIND = 16, - IB_UVERBS_ACCESS_ZERO_BASED = 32, - IB_UVERBS_ACCESS_ON_DEMAND = 64, - IB_UVERBS_ACCESS_HUGETLB = 128, - IB_UVERBS_ACCESS_RELAXED_ORDERING = 1048576, - IB_UVERBS_ACCESS_OPTIONAL_RANGE = 1072693248, +struct sctp_shutdownhdr { + __be32 cum_tsn_ack; }; -enum ib_uverbs_srq_type { - IB_UVERBS_SRQT_BASIC = 0, - IB_UVERBS_SRQT_XRC = 1, - IB_UVERBS_SRQT_TM = 2, +struct sctp_errhdr { + __be16 cause; + __be16 length; + __u8 variable[0]; }; -enum ib_uverbs_wq_type { - IB_UVERBS_WQT_RQ = 0, +struct sctp_ecnehdr { + __be32 lowest_tsn; }; -enum ib_uverbs_wq_flags { - IB_UVERBS_WQ_FLAGS_CVLAN_STRIPPING = 1, - IB_UVERBS_WQ_FLAGS_SCATTER_FCS = 2, - IB_UVERBS_WQ_FLAGS_DELAY_DROP = 4, - IB_UVERBS_WQ_FLAGS_PCI_WRITE_END_PADDING = 8, +struct sctp_cwrhdr { + __be32 lowest_tsn; }; -enum ib_uverbs_qp_type { - IB_UVERBS_QPT_RC = 2, - IB_UVERBS_QPT_UC = 3, - IB_UVERBS_QPT_UD = 4, - IB_UVERBS_QPT_RAW_PACKET = 8, - IB_UVERBS_QPT_XRC_INI = 9, - IB_UVERBS_QPT_XRC_TGT = 10, - IB_UVERBS_QPT_DRIVER = 255, +struct sctp_fwdtsn_skip { + __be16 stream; + __be16 ssn; }; -enum ib_uverbs_qp_create_flags { - IB_UVERBS_QP_CREATE_BLOCK_MULTICAST_LOOPBACK = 2, - IB_UVERBS_QP_CREATE_SCATTER_FCS = 256, - IB_UVERBS_QP_CREATE_CVLAN_STRIPPING = 512, - IB_UVERBS_QP_CREATE_PCI_WRITE_END_PADDING = 2048, - IB_UVERBS_QP_CREATE_SQ_SIG_ALL = 4096, +struct sctp_fwdtsn_hdr { + __be32 new_cum_tsn; + struct sctp_fwdtsn_skip skip[0]; }; -enum ib_uverbs_gid_type { - IB_UVERBS_GID_TYPE_IB = 0, - IB_UVERBS_GID_TYPE_ROCE_V1 = 1, - IB_UVERBS_GID_TYPE_ROCE_V2 = 2, +struct sctp_ifwdtsn_skip { + __be16 stream; + __u8 reserved; + __u8 flags; + __be32 mid; }; -union ib_gid { - u8 raw[16]; - struct { - __be64 subnet_prefix; - __be64 interface_id; - } global; +struct sctp_ifwdtsn_hdr { + __be32 new_cum_tsn; + struct sctp_ifwdtsn_skip skip[0]; }; -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 sctp_addip_param { + struct sctp_paramhdr param_hdr; + __be32 crr_id; }; -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 sctp_addiphdr { + __be32 serial; + __u8 params[0]; }; -struct lsm_ioctlop_audit { - struct path path; - u16 cmd; +struct sctp_authhdr { + __be16 shkey_id; + __be16 hmac_id; + __u8 hmac[0]; }; -struct lsm_ibpkey_audit { - u64 subnet_prefix; - u16 pkey; +union sctp_addr { + struct sockaddr_in v4; + struct sockaddr_in6 v6; + struct sockaddr sa; }; -struct lsm_ibendport_audit { - char dev_name[64]; - u8 port; +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; + struct sctp_init_chunk peer_init[0]; }; -struct selinux_state; +struct sctp_tsnmap { + long unsigned int *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 selinux_audit_data { - u32 ssid; - u32 tsid; - u16 tclass; - u32 requested; - u32 audited; - u32 denied; - int result; - struct selinux_state *state; +struct sctp_inithdr_host { + __u32 init_tag; + __u32 a_rwnd; + __u16 num_outbound_streams; + __u16 num_inbound_streams; + __u32 initial_tsn; }; -struct smack_audit_data; +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 apparmor_audit_data; +struct sctp_stream_out_ext; -struct common_audit_data { - char type; +struct sctp_stream_out { 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; - } u; + __u32 mid; + __u16 ssn; + }; + __u32 mid_uo; + struct sctp_stream_out_ext *ext; + __u8 state; +}; + +struct sctp_stream_in { union { - struct smack_audit_data *smack_audit_data; - struct selinux_audit_data *selinux_audit_data; - struct apparmor_audit_data *apparmor_audit_data; + __u32 mid; + __u16 ssn; }; + __u32 mid_uo; + __u32 fsn; + __u32 fsn_uo; + char pd_mode; + char pd_mode_uo; }; -enum { - POLICYDB_CAPABILITY_NETPEER = 0, - POLICYDB_CAPABILITY_OPENPERM = 1, - POLICYDB_CAPABILITY_EXTSOCKCLASS = 2, - POLICYDB_CAPABILITY_ALWAYSNETWORK = 3, - POLICYDB_CAPABILITY_CGROUPSECLABEL = 4, - POLICYDB_CAPABILITY_NNP_NOSUID_TRANSITION = 5, - POLICYDB_CAPABILITY_GENFS_SECLABEL_SYMLINKS = 6, - __POLICYDB_CAPABILITY_MAX = 7, +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 sctp_stream_interleave *si; }; -struct lsm_id___2; +struct sctp_sched_ops; -struct selinux_avc; +struct sctp_association; -struct selinux_policy; +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 selinux_state { - bool enforcing; - bool checkreqprot; - bool initialized; - bool policycap[7]; - struct page *status_page; - struct mutex status_lock; - struct selinux_avc *avc; - struct selinux_policy *policy; - struct mutex policy_mutex; +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 avc_cache { - struct hlist_head slots[512]; - spinlock_t slots_lock[512]; - atomic_t lru_hint; - atomic_t active_nodes; - u32 latest_notif; +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 selinux_avc { - unsigned int avc_cache_threshold; - struct avc_cache avc_cache; +struct sctp_transport; + +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 hostname_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; + long unsigned int rto_initial; + long unsigned int rto_max; + long unsigned int rto_min; + int max_burst; + int max_retrans; + __u16 pf_retrans; + __u16 ps_retrans; + __u16 max_init_attempts; + __u16 init_retries; + long unsigned int max_init_timeo; + long unsigned int hbinterval; + long unsigned int probe_interval; + __be16 encap_port; + __u16 pathmaxrxt; + __u32 flowlabel; + __u8 dscp; + __u8 pmtu_pending; + __u32 pathmtu; + __u32 param_flags; + __u32 sackfreq; + long unsigned int sackdelay; + long unsigned int 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]; + struct callback_head rcu; }; -struct av_decision { - u32 allowed; - u32 auditallow; - u32 auditdeny; - u32 seqno; - u32 flags; +struct sctp_auth_bytes { + refcount_t refcnt; + __u32 len; + __u8 data[0]; }; -struct extended_perms_data { - u32 p[8]; +struct sctp_shared_key { + struct list_head key_list; + struct sctp_auth_bytes *key; + refcount_t refcnt; + __u16 key_id; + __u8 deactivated; }; -struct extended_perms_decision { - u8 used; - u8 driver; - struct extended_perms_data *allowed; - struct extended_perms_data *auditallow; - struct extended_perms_data *dontaudit; +enum { + SCTP_MAX_STREAM = 65535, }; -struct extended_perms { - u16 len; - struct extended_perms_data drivers; +enum sctp_event_timeout { + SCTP_EVENT_TIMEOUT_NONE = 0, + SCTP_EVENT_TIMEOUT_T1_COOKIE = 1, + SCTP_EVENT_TIMEOUT_T1_INIT = 2, + SCTP_EVENT_TIMEOUT_T2_SHUTDOWN = 3, + SCTP_EVENT_TIMEOUT_T3_RTX = 4, + SCTP_EVENT_TIMEOUT_T4_RTO = 5, + SCTP_EVENT_TIMEOUT_T5_SHUTDOWN_GUARD = 6, + SCTP_EVENT_TIMEOUT_HEARTBEAT = 7, + SCTP_EVENT_TIMEOUT_RECONF = 8, + SCTP_EVENT_TIMEOUT_PROBE = 9, + SCTP_EVENT_TIMEOUT_SACK = 10, + SCTP_EVENT_TIMEOUT_AUTOCLOSE = 11, }; -struct avc_cache_stats { - unsigned int lookups; - unsigned int misses; - unsigned int allocations; - unsigned int reclaims; - unsigned int frees; +enum { + SCTP_MAX_DUP_TSNS = 16, }; -struct security_class_mapping { - const char *name; - const char *perms[33]; +enum sctp_scope { + SCTP_SCOPE_GLOBAL = 0, + SCTP_SCOPE_PRIVATE = 1, + SCTP_SCOPE_LINK = 2, + SCTP_SCOPE_LOOPBACK = 3, + SCTP_SCOPE_UNUSABLE = 4, }; -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]; +enum { + SCTP_AUTH_HMAC_ID_RESERVED_0 = 0, + SCTP_AUTH_HMAC_ID_SHA1 = 1, + SCTP_AUTH_HMAC_ID_RESERVED_2 = 2, + SCTP_AUTH_HMAC_ID_SHA256 = 3, + __SCTP_AUTH_HMAC_MAX = 4, }; -struct trace_event_data_offsets_selinux_audited { - u32 scontext; - u32 tcontext; - u32 tclass; +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)); + +union sctp_addr_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; }; -typedef void (*btf_trace_selinux_audited)(void *, struct selinux_audit_data *, char *, char *, const char *); +struct sctp_sender_hb_info; -struct avc_xperms_node; +struct sctp_signed_cookie; -struct avc_entry { - u32 ssid; - u32 tsid; - u16 tclass; - struct av_decision avd; - struct avc_xperms_node *xp_node; +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; + long unsigned int 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 avc_xperms_node { - struct extended_perms xp; - struct list_head xpd_head; +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 *); }; -struct avc_node { - struct avc_entry ae; - struct hlist_node list; - struct callback_head rhead; +struct sctp_bind_bucket { + short unsigned int port; + signed char fastreuse; + signed char fastreuseport; + kuid_t fastuid; + struct hlist_node node; + struct hlist_head owner; + struct net *net; }; -struct avc_xperms_decision_node { - struct extended_perms_decision xpd; - struct list_head xpd_list; +enum sctp_socket_type { + SCTP_SOCKET_UDP = 0, + SCTP_SOCKET_UDP_HIGH_BANDWIDTH = 1, + SCTP_SOCKET_TCP = 2, }; -struct avc_callback_node { - int (*callback)(u32); - u32 events; - struct avc_callback_node *next; +struct sctp_pf; + +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; }; -typedef __u16 __sum16; +struct sctp_af; -typedef u16 u_int16_t; +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 rhltable { - struct rhashtable ht; +struct sctp_signed_cookie { + __u8 signature[32]; + __u32 __pad; + struct sctp_cookie c; +} __attribute__((packed)); + +union sctp_addr_param { + struct sctp_paramhdr p; + struct sctp_ipv4addr_param v4; + struct sctp_ipv6addr_param v6; }; -enum sctp_endpoint_type { - SCTP_EP_TYPE_SOCKET = 0, - SCTP_EP_TYPE_ASSOCIATION = 1, +struct sctp_sender_hb_info { + struct sctp_paramhdr param_hdr; + union sctp_addr daddr; + long unsigned int sent_at; + __u64 hb_nonce; + __u32 probe_size; }; -struct sctp_chunk; +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 *, int *); + 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 (*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 sctp_inq { - struct list_head in_chunk_list; - struct sctp_chunk *in_progress; - struct work_struct immediate; +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_bind_addr { - __u16 port; - struct list_head address_list; +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; + long unsigned int 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; + long unsigned int hbinterval; + long unsigned int probe_interval; + long unsigned int sackdelay; + __u32 sackfreq; + atomic_t mtu_info; + ktime_t last_time_heard; + long unsigned int last_time_sent; + long unsigned int 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; + short unsigned int 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 { + __u32 last_rtx_chunks; + __u16 pmtu; + __u16 probe_size; + __u16 probe_high; + __u8 probe_count: 3; + __u8 raise_count: 5; + __u8 state; + } pl; + __u64 hb_nonce; + struct callback_head rcu; }; -struct sctp_ep_common { - struct hlist_node node; - int hashent; - enum sctp_endpoint_type type; +struct sctp_datamsg { + struct list_head chunks; refcount_t refcnt; - bool dead; - struct sock *sk; - struct net *net; - struct sctp_inq inqueue; - struct sctp_bind_addr bind_addr; + long unsigned int expires_at; + int send_error; + u8 send_failed: 1; + u8 can_delay: 1; + u8 abandoned: 1; }; -struct sctp_hmac_algo_param; +struct sctp_stream_priorities { + struct list_head prio_sched; + struct list_head active; + struct sctp_stream_out_ext *next; + __u16 prio; +}; -struct sctp_chunks_param; +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 sctp_endpoint { - struct sctp_ep_common base; - 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; - u32 secid; - u32 peer_secid; +struct task_security_struct { + u32 osid; + u32 sid; + u32 exec_sid; + u32 create_sid; + u32 keycreate_sid; + u32 sockcreate_sid; }; -struct sockaddr_in6 { - short unsigned int sin6_family; - __be16 sin6_port; - __be32 sin6_flowinfo; - struct in6_addr sin6_addr; - __u32 sin6_scope_id; +enum label_initialized { + LABEL_INVALID = 0, + LABEL_INITIALIZED = 1, + LABEL_PENDING = 2, }; -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, +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 nf_conntrack { - atomic_t use; +struct file_security_struct { + u32 sid; + u32 fown_sid; + u32 isid; + u32 pseqno; }; -struct sockaddr_in { - __kernel_sa_family_t sin_family; - __be16 sin_port; - struct in_addr sin_addr; - unsigned char __pad[8]; +struct superblock_security_struct { + u32 sid; + u32 def_sid; + u32 mntpoint_sid; + short unsigned int behavior; + short unsigned int flags; + struct mutex lock; + struct list_head isec_head; + spinlock_t isec_lock; }; -struct nf_hook_state; - -typedef unsigned int nf_hookfn(void *, struct sk_buff *, const struct nf_hook_state *); +struct msg_security_struct { + u32 sid; +}; -struct nf_hook_entry { - nf_hookfn *hook; - void *priv; +struct ipc_security_struct { + u16 sclass; + u32 sid; }; -struct nf_hook_entries { - u16 num_hook_entries; - struct nf_hook_entry hooks[0]; +struct sk_security_struct { + enum { + NLBL_UNSET = 0, + NLBL_REQUIRE = 1, + NLBL_LABELED = 2, + NLBL_REQSKB = 3, + NLBL_CONNLABELED = 4, + } nlbl_state; + struct netlbl_lsm_secattr *nlbl_secattr; + u32 sid; + u32 peer_sid; + u16 sclass; + enum { + SCTP_ASSOC_UNSET = 0, + SCTP_ASSOC_SET = 1, + } sctp_assoc_state; }; -struct nf_hook_state { - unsigned int hook; - u_int8_t 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 tun_security_struct { + u32 sid; }; -struct nf_hook_ops { - nf_hookfn *hook; - struct net_device *dev; - void *priv; - u_int8_t pf; - unsigned int hooknum; - int priority; +struct key_security_struct { + u32 sid; }; -enum nf_nat_manip_type { - NF_NAT_MANIP_SRC = 0, - NF_NAT_MANIP_DST = 1, +struct ib_security_struct { + u32 sid; }; -struct nf_conn; +struct bpf_security_struct { + u32 sid; +}; -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); +struct perf_event_security_struct { + u32 sid; }; -struct nf_conntrack_zone { - u16 id; - u8 flags; - u8 dir; +struct selinux_mnt_opts { + const char *fscontext; + const char *context; + const char *rootcontext; + const char *defcontext; + u32 fscontext_sid; + u32 context_sid; + u32 rootcontext_sid; + u32 defcontext_sid; }; -union nf_inet_addr { - __u32 all[4]; - __be32 ip; - __be32 ip6[4]; - struct in_addr in; - struct in6_addr in6; +enum { + Opt_error___2 = 4294967295, + Opt_context = 0, + Opt_defcontext = 1, + Opt_fscontext = 2, + Opt_rootcontext = 3, + Opt_seclabel = 4, }; -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; +struct selinux_policy_convert_data; + +struct selinux_load_state { + struct selinux_policy *policy; + struct selinux_policy_convert_data *convert_data; }; -struct nf_conntrack_man { - union nf_inet_addr u3; - union nf_conntrack_man_proto u; - u_int16_t l3num; +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 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; - u_int8_t dir; - } dst; +struct selinux_fs_info { + struct dentry *bool_dir; + unsigned int bool_num; + char **bool_pending_names; + unsigned int *bool_pending_values; + struct dentry *class_dir; + long unsigned int last_class_ino; + bool policy_opened; + struct dentry *policycap_dir; + long unsigned int last_ino; + struct selinux_state *state; + struct super_block *sb; }; -struct nf_conntrack_tuple_hash { - struct hlist_nulls_node hnnode; - struct nf_conntrack_tuple tuple; +struct policy_load_memory { + size_t len; + void *data; }; -typedef u32 u_int32_t; +enum { + SELNL_MSG_SETENFORCE = 16, + SELNL_MSG_POLICYLOAD = 17, + SELNL_MSG_MAX = 18, +}; -typedef u64 u_int64_t; +enum selinux_nlgroups { + SELNLGRP_NONE = 0, + SELNLGRP_AVC = 1, + __SELNLGRP_MAX = 2, +}; -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; +struct selnl_msg_setenforce { + __s32 val; }; -struct ip_ct_sctp { - enum sctp_conntrack state; - __be32 vtag[2]; - u8 last_dir; - u8 flags; +struct selnl_msg_policyload { + __u32 seqno; }; -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; +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, }; -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; +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_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_MAX = 119, }; -struct nf_ct_udp { - long unsigned int stream_ts; +struct nlmsg_perm { + u16 nlmsg_type; + u32 perm; }; -struct nf_ct_gre { - unsigned int stream_timeout; - unsigned int timeout; +struct netif_security_struct { + struct net *ns; + int ifindex; + u32 sid; }; -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 sel_netif { + struct list_head list; + struct netif_security_struct nsec; + struct callback_head callback_head; }; -struct nf_ct_ext; +struct netnode_security_struct { + union { + __be32 ipv4; + struct in6_addr ipv6; + } addr; + u32 sid; + u16 family; +}; -struct nf_conn { - struct nf_conntrack ct_general; - spinlock_t lock; - u32 timeout; - struct nf_conntrack_zone zone; - struct nf_conntrack_tuple_hash tuplehash[2]; - long unsigned int status; - u16 cpu; - 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; +struct sel_netnode_bkt { + unsigned int size; + struct list_head list; }; -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 *); +struct sel_netnode { + struct netnode_security_struct nsec; + struct list_head list; + struct callback_head rcu; }; -struct nfnl_ct_hook { - struct nf_conn * (*get_ct)(const struct sk_buff *, enum ip_conntrack_info *); - 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); +struct netport_security_struct { + u32 sid; + u16 port; + u8 protocol; }; -enum nf_ip_hook_priorities { - NF_IP_PRI_FIRST = 2147483648, - NF_IP_PRI_RAW_BEFORE_DEFRAG = 4294966846, - NF_IP_PRI_CONNTRACK_DEFRAG = 4294966896, - NF_IP_PRI_RAW = 4294966996, - NF_IP_PRI_SELINUX_FIRST = 4294967071, - NF_IP_PRI_CONNTRACK = 4294967096, - NF_IP_PRI_MANGLE = 4294967146, - NF_IP_PRI_NAT_DST = 4294967196, - 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 sel_netport_bkt { + int size; + struct list_head list; }; -enum nf_ip6_hook_priorities { - NF_IP6_PRI_FIRST = 2147483648, - NF_IP6_PRI_RAW_BEFORE_DEFRAG = 4294966846, - NF_IP6_PRI_CONNTRACK_DEFRAG = 4294966896, - NF_IP6_PRI_RAW = 4294966996, - NF_IP6_PRI_SELINUX_FIRST = 4294967071, - NF_IP6_PRI_CONNTRACK = 4294967096, - NF_IP6_PRI_MANGLE = 4294967146, - NF_IP6_PRI_NAT_DST = 4294967196, - NF_IP6_PRI_FILTER = 0, - NF_IP6_PRI_SECURITY = 50, - NF_IP6_PRI_NAT_SRC = 100, - NF_IP6_PRI_SELINUX_LAST = 225, - NF_IP6_PRI_CONNTRACK_HELPER = 300, - NF_IP6_PRI_LAST = 2147483647, +struct sel_netport { + struct netport_security_struct psec; + struct list_head list; + struct callback_head rcu; }; -struct socket_alloc { - struct socket socket; - struct inode vfs_inode; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; +struct selinux_kernel_status { + u32 version; + u32 sequence; + u32 enforcing; + u32 policyload; + u32 deny_unknown; }; -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 ebitmap_node { + struct ebitmap_node *next; + long unsigned int maps[6]; + u32 startbit; }; -struct ip_options_rcu { - struct callback_head rcu; - struct ip_options opt; +struct ebitmap { + struct ebitmap_node *node; + u32 highbit; }; -struct ipv6_opt_hdr; +struct policy_file { + char *data; + size_t len; +}; -struct ipv6_rt_hdr; +struct hashtab_node { + void *key; + void *datum; + struct hashtab_node *next; +}; -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 hashtab { + struct hashtab_node **htable; + u32 size; + u32 nel; }; -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 hashtab_info { + u32 slots_used; + u32 max_chain_len; }; -struct inet_cork_full { - struct inet_cork base; - struct flowi fl; +struct hashtab_key_params { + u32 (*hash)(const void *); + int (*cmp)(const void *, const void *); }; -struct ipv6_pinfo; +struct symtab { + struct hashtab table; + u32 nprim; +}; -struct ip_mc_socklist; +struct mls_level { + u32 sens; + struct ebitmap cat; +}; -struct inet_sock { - struct sock sk; - struct ipv6_pinfo *pinet6; - __be32 inet_saddr; - __s16 uc_ttl; - __u16 cmsg_flags; - __be16 inet_sport; - __u16 inet_id; - struct ip_options_rcu *inet_opt; - int rx_dst_ifindex; - __u8 tos; - __u8 min_ttl; - __u8 mc_ttl; - __u8 pmtudisc; - __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 rcv_tos; - __u8 convert_csum; - int uc_index; - int mc_index; - __be32 mc_addr; - struct ip_mc_socklist *mc_list; - struct inet_cork_full cork; +struct mls_range { + struct mls_level level[2]; }; -struct in6_pktinfo { - struct in6_addr ipi6_addr; - int ipi6_ifindex; +struct context { + u32 user; + u32 role; + u32 type; + u32 len; + struct mls_range range; + char *str; }; -struct inet6_cork { - struct ipv6_txoptions *opt; - u8 hop_limit; - u8 tclass; +struct sidtab_str_cache; + +struct sidtab_entry { + u32 sid; + u32 hash; + struct context context; + struct sidtab_str_cache *cache; + struct hlist_node list; }; -struct ipv6_mc_socklist; +struct sidtab_str_cache { + struct callback_head rcu_member; + struct list_head lru_member; + struct sidtab_entry *parent; + u32 len; + char str[0]; +}; -struct ipv6_ac_socklist; +struct sidtab_node_inner; -struct ipv6_fl_socklist; +struct sidtab_node_leaf; -struct ipv6_pinfo { - struct in6_addr saddr; - struct in6_pktinfo sticky_pktinfo; - const struct in6_addr *daddr_cache; - const struct in6_addr *saddr_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; - __u32 rx_dst_cookie; - struct ipv6_mc_socklist *ipv6_mc_list; - struct ipv6_ac_socklist *ipv6_ac_list; - struct ipv6_fl_socklist *ipv6_fl_list; - struct ipv6_txoptions *opt; - struct sk_buff *pktoptions; - struct sk_buff *rxpmtu; - struct inet6_cork cork; +union sidtab_entry_inner { + struct sidtab_node_inner *ptr_inner; + struct sidtab_node_leaf *ptr_leaf; }; -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 sidtab_node_inner { + union sidtab_entry_inner entries[512]; }; -struct iphdr { - __u8 ihl: 4; - __u8 version: 4; - __u8 tos; - __be16 tot_len; - __be16 id; - __be16 frag_off; - __u8 ttl; - __u8 protocol; - __sum16 check; - __be32 saddr; - __be32 daddr; +struct sidtab_node_leaf { + struct sidtab_entry entries[39]; }; -struct ipv6_rt_hdr { - __u8 nexthdr; - __u8 hdrlen; - __u8 type; - __u8 segments_left; +struct sidtab_isid_entry { + int set; + struct sidtab_entry entry; }; -struct ipv6_opt_hdr { - __u8 nexthdr; - __u8 hdrlen; +struct sidtab; + +struct sidtab_convert_params { + int (*func)(struct context *, struct context *, void *, gfp_t); + void *args; + struct sidtab *target; }; -struct ipv6hdr { - __u8 priority: 4; - __u8 version: 4; - __u8 flow_lbl[3]; - __be16 payload_len; - __u8 nexthdr; - __u8 hop_limit; - struct in6_addr saddr; - struct in6_addr daddr; +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 udphdr { - __be16 source; - __be16 dest; - __be16 len; - __sum16 check; +struct avtab_key { + u16 source_type; + u16 target_type; + u16 target_class; + u16 specified; }; -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; +struct avtab_extended_perms { + u8 specified; + u8 driver; + struct extended_perms_data perms; }; -struct ip6_sf_socklist; +struct avtab_datum { + union { + u32 data; + struct avtab_extended_perms *xperms; + } u; +}; -struct ipv6_mc_socklist { - struct in6_addr addr; - int ifindex; - unsigned int sfmode; - struct ipv6_mc_socklist *next; - rwlock_t sflock; - struct ip6_sf_socklist *sflist; - struct callback_head rcu; +struct avtab_node { + struct avtab_key key; + struct avtab_datum datum; + struct avtab_node *next; }; -struct ipv6_ac_socklist { - struct in6_addr acl_addr; - int acl_ifindex; - struct ipv6_ac_socklist *acl_next; +struct avtab { + struct avtab_node **htable; + u32 nel; + u32 nslot; + u32 mask; }; -struct ip6_flowlabel; +struct type_set; -struct ipv6_fl_socklist { - struct ipv6_fl_socklist *next; - struct ip6_flowlabel *fl; - struct callback_head rcu; +struct constraint_expr { + u32 expr_type; + u32 attr; + u32 op; + struct ebitmap names; + struct type_set *type_names; + struct constraint_expr *next; }; -struct ip6_sf_socklist { - unsigned int sl_max; - unsigned int sl_count; - struct in6_addr sl_addr[0]; +struct type_set { + struct ebitmap types; + struct ebitmap negset; + u32 flags; }; -struct ip6_flowlabel { - struct ip6_flowlabel *next; - __be32 label; - atomic_t users; - struct in6_addr dst; - struct ipv6_txoptions *opt; - long unsigned int linger; - struct callback_head rcu; - u8 share; - union { - struct pid *pid; - kuid_t uid; - } owner; - long unsigned int lastuse; - long unsigned int expires; - struct net *fl_net; +struct constraint_node { + u32 permissions; + struct constraint_expr *expr; + struct constraint_node *next; }; -struct inet_skb_parm { - int iif; - struct ip_options opt; - u16 flags; - u16 frag_max_size; +struct common_datum { + u32 value; + struct symtab permissions; }; -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 *); +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 nf_queue_entry { - struct list_head list; - struct sk_buff *skb; - unsigned int id; - unsigned int hook_index; - struct net_device *physin; - struct net_device *physout; - struct nf_hook_state state; - u16 size; +struct role_datum { + u32 value; + u32 bounds; + struct ebitmap dominates; + struct ebitmap types; }; -struct tty_file_private { - struct tty_struct *tty; - struct file *file; - struct list_head list; +struct role_allow { + u32 role; + u32 new_role; + struct role_allow *next; }; -struct icmp_err { - int errno; - unsigned int fatal: 1; +struct type_datum { + u32 value; + u32 bounds; + unsigned char primary; + unsigned char attribute; }; -struct netlbl_lsm_cache { - refcount_t refcount; - void (*free)(const void *); - void *data; +struct user_datum { + u32 value; + u32 bounds; + struct ebitmap roles; + struct mls_range range; + struct mls_level dfltlevel; }; -struct netlbl_lsm_catmap { - u32 startbit; - u64 bitmap[4]; - struct netlbl_lsm_catmap *next; +struct cond_bool_datum { + __u32 value; + int state; }; -struct netlbl_lsm_secattr { - u32 flags; - u32 type; - char *domain; - struct netlbl_lsm_cache *cache; - struct { +struct ocontext { + union { + char *name; struct { - struct netlbl_lsm_catmap *cat; - u32 lvl; - } mls; - struct lsmblob lsmblob; - } attr; + 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 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 genfs { + char *fstype; + struct ocontext *head; + struct genfs *next; }; -enum dccp_state { - DCCP_OPEN = 1, - DCCP_REQUESTING = 2, - DCCP_LISTEN = 10, - DCCP_RESPOND = 3, - DCCP_ACTIVE_CLOSEREQ = 4, - DCCP_PASSIVE_CLOSE = 8, - DCCP_CLOSING = 11, - DCCP_TIME_WAIT = 6, - DCCP_CLOSED = 7, - DCCP_NEW_SYN_RECV = 12, - DCCP_PARTOPEN = 13, - DCCP_PASSIVE_CLOSEREQ = 14, - DCCP_MAX_STATES = 15, +struct cond_node; + +struct policydb { + int mls_enabled; + 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; }; -typedef __s32 sctp_assoc_t; - -enum sctp_msg_flags { - MSG_NOTIFICATION = 32768, +struct perm_datum { + u32 value; }; -struct sctp_initmsg { - __u16 sinit_num_ostreams; - __u16 sinit_max_instreams; - __u16 sinit_max_attempts; - __u16 sinit_max_init_timeo; +struct role_trans_key { + u32 role; + u32 type; + u32 tclass; }; -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 role_trans_datum { + u32 new_role; }; -struct sctp_rtoinfo { - sctp_assoc_t srto_assoc_id; - __u32 srto_initial; - __u32 srto_max; - __u32 srto_min; +struct filename_trans_key { + u32 ttype; + u16 tclass; + const char *name; }; -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 filename_trans_datum { + struct ebitmap stypes; + u32 otype; + struct filename_trans_datum *next; }; -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; - char: 8; -} __attribute__((packed)); - -struct sctphdr { - __be16 source; - __be16 dest; - __be32 vtag; - __le32 checksum; +struct level_datum { + struct mls_level *level; + unsigned char isalias; }; -struct sctp_chunkhdr { - __u8 type; - __u8 flags; - __be16 length; +struct cat_datum { + u32 value; + unsigned char isalias; }; -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, +struct range_trans { + u32 source_type; + u32 target_type; + u32 target_class; }; -struct sctp_paramhdr { - __be16 type; - __be16 length; +struct cond_expr_node; + +struct cond_expr { + struct cond_expr_node *nodes; + u32 len; }; -enum sctp_param { - SCTP_PARAM_HEARTBEAT_INFO = 256, - SCTP_PARAM_IPV4_ADDRESS = 1280, - SCTP_PARAM_IPV6_ADDRESS = 1536, - SCTP_PARAM_STATE_COOKIE = 1792, - SCTP_PARAM_UNRECOGNIZED_PARAMETERS = 2048, - SCTP_PARAM_COOKIE_PRESERVATIVE = 2304, - SCTP_PARAM_HOST_NAME_ADDRESS = 2816, - SCTP_PARAM_SUPPORTED_ADDRESS_TYPES = 3072, - SCTP_PARAM_ECN_CAPABLE = 128, - SCTP_PARAM_RANDOM = 640, - SCTP_PARAM_CHUNKS = 896, - SCTP_PARAM_HMAC_ALGO = 1152, - SCTP_PARAM_SUPPORTED_EXT = 2176, - SCTP_PARAM_FWD_TSN_SUPPORT = 192, - SCTP_PARAM_ADD_IP = 448, - SCTP_PARAM_DEL_IP = 704, - SCTP_PARAM_ERR_CAUSE = 960, - SCTP_PARAM_SET_PRIMARY = 1216, - SCTP_PARAM_SUCCESS_REPORT = 1472, - SCTP_PARAM_ADAPTATION_LAYER_IND = 1728, - SCTP_PARAM_RESET_OUT_REQUEST = 3328, - SCTP_PARAM_RESET_IN_REQUEST = 3584, - SCTP_PARAM_RESET_TSN_REQUEST = 3840, - SCTP_PARAM_RESET_RESPONSE = 4096, - SCTP_PARAM_RESET_ADD_OUT_STREAMS = 4352, - SCTP_PARAM_RESET_ADD_IN_STREAMS = 4608, +struct cond_av_list { + struct avtab_node **nodes; + u32 len; }; -struct sctp_datahdr { - __be32 tsn; - __be16 stream; - __be16 ssn; - __u32 ppid; - __u8 payload[0]; +struct cond_node { + int cur_state; + struct cond_expr expr; + struct cond_av_list true_list; + struct cond_av_list false_list; }; -struct sctp_idatahdr { - __be32 tsn; - __be16 stream; - __be16 reserved; - __be32 mid; - union { - __u32 ppid; - __be32 fsn; - }; - __u8 payload[0]; +struct policy_data { + struct policydb *p; + void *fp; }; -struct sctp_inithdr { - __be32 init_tag; - __be32 a_rwnd; - __be16 num_outbound_streams; - __be16 num_inbound_streams; - __be32 initial_tsn; - __u8 params[0]; +struct cond_expr_node { + u32 expr_type; + u32 bool; }; -struct sctp_init_chunk { - struct sctp_chunkhdr chunk_hdr; - struct sctp_inithdr init_hdr; +struct policydb_compat_info { + int version; + int sym_num; + int ocon_num; }; -struct sctp_ipv4addr_param { - struct sctp_paramhdr param_hdr; - struct in_addr addr; +struct selinux_mapping; + +struct selinux_map { + struct selinux_mapping *mapping; + u16 size; }; -struct sctp_ipv6addr_param { - struct sctp_paramhdr param_hdr; - struct in6_addr addr; +struct selinux_policy { + struct sidtab *sidtab; + struct policydb policydb; + struct selinux_map map; + u32 latest_granting; }; -struct sctp_cookie_preserve_param { - struct sctp_paramhdr param_hdr; - __be32 lifespan_increment; +struct convert_context_args { + struct selinux_state *state; + struct policydb *oldp; + struct policydb *newp; }; -struct sctp_hostname_param { - struct sctp_paramhdr param_hdr; - uint8_t hostname[0]; +struct selinux_policy_convert_data { + struct convert_context_args args; + struct sidtab_convert_params sidtab_params; }; -struct sctp_supported_addrs_param { - struct sctp_paramhdr param_hdr; - __be16 types[0]; +struct selinux_mapping { + u16 value; + unsigned int num_perms; + u32 perms[32]; }; -struct sctp_adaptation_ind_param { - struct sctp_paramhdr param_hdr; - __be32 adaptation_ind; +struct selinux_audit_rule { + u32 au_seqno; + struct context au_ctxt; }; -struct sctp_supported_ext_param { - struct sctp_paramhdr param_hdr; - __u8 chunks[0]; +struct cond_insertf_data { + struct policydb *p; + struct avtab_node **dst; + struct cond_av_list *other; }; -struct sctp_random_param { - struct sctp_paramhdr param_hdr; - __u8 random_val[0]; +struct rt6key { + struct in6_addr addr; + int plen; }; -struct sctp_chunks_param { - struct sctp_paramhdr param_hdr; - __u8 chunks[0]; +struct rtable; + +struct fnhe_hash_bucket; + +struct fib_nh_common { + struct net_device *nhc_dev; + 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 **nhc_pcpu_rth_output; + struct rtable *nhc_rth_input; + struct fnhe_hash_bucket *nhc_exceptions; }; -struct sctp_hmac_algo_param { - struct sctp_paramhdr param_hdr; - __be16 hmac_ids[0]; +struct rt6_exception_bucket; + +struct fib6_nh { + struct fib_nh_common nh_common; + long unsigned int last_probe; + struct rt6_info **rt6i_pcpu; + struct rt6_exception_bucket *rt6i_exception_bucket; }; -struct sctp_cookie_param { - struct sctp_paramhdr p; - __u8 body[0]; +struct fib6_node; + +struct dst_metrics; + +struct nexthop; + +struct fib6_info { + struct fib6_table *fib6_table; + struct fib6_info *fib6_next; + struct fib6_node *fib6_node; + union { + struct list_head fib6_siblings; + struct list_head nh_list; + }; + unsigned int fib6_nsiblings; + refcount_t fib6_ref; + long unsigned int 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; + struct fib6_nh fib6_nh[0]; }; -struct sctp_gap_ack_block { - __be16 start; - __be16 end; +struct uncached_list; + +struct rt6_info { + struct dst_entry dst; + struct fib6_info *from; + int sernum; + struct rt6key rt6i_dst; + struct rt6key rt6i_src; + struct in6_addr rt6i_gateway; + struct inet6_dev *rt6i_idev; + u32 rt6i_flags; + struct list_head rt6i_uncached; + struct uncached_list *rt6i_uncached_list; + short unsigned int rt6i_nfheader_len; }; -union sctp_sack_variable { - struct sctp_gap_ack_block gab; - __be32 dup; +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; + atomic_t fib_rt_uncache; }; -struct sctp_sackhdr { - __be32 cum_tsn_ack; - __be32 a_rwnd; - __be16 num_gap_ack_blocks; - __be16 num_dup_tsns; - union sctp_sack_variable variable[0]; +struct fib6_node { + struct fib6_node *parent; + struct fib6_node *left; + struct fib6_node *right; + struct fib6_node *subtree; + struct fib6_info *leaf; + __u16 fn_bit; + __u16 fn_flags; + int fn_sernum; + struct fib6_info *rr_ptr; + struct callback_head rcu; }; -struct sctp_heartbeathdr { - struct sctp_paramhdr info; +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 sctp_shutdownhdr { - __be32 cum_tsn_ack; +typedef union { + __be32 a4; + __be32 a6[4]; + struct in6_addr in6; +} xfrm_address_t; + +struct xfrm_id { + xfrm_address_t daddr; + __be32 spi; + __u8 proto; }; -struct sctp_errhdr { - __be16 cause; - __be16 length; - __u8 variable[0]; +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 sctp_ecnehdr { - __be32 lowest_tsn; +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 sctp_cwrhdr { - __be32 lowest_tsn; +struct xfrm_lifetime_cur { + __u64 bytes; + __u64 packets; + __u64 add_time; + __u64 use_time; }; -struct sctp_fwdtsn_skip { - __be16 stream; - __be16 ssn; +struct xfrm_replay_state { + __u32 oseq; + __u32 seq; + __u32 bitmap; }; -struct sctp_fwdtsn_hdr { - __be32 new_cum_tsn; - struct sctp_fwdtsn_skip skip[0]; +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 sctp_ifwdtsn_skip { - __be16 stream; - __u8 reserved; - __u8 flags; - __be32 mid; +struct xfrm_algo { + char alg_name[64]; + unsigned int alg_key_len; + char alg_key[0]; }; -struct sctp_ifwdtsn_hdr { - __be32 new_cum_tsn; - struct sctp_ifwdtsn_skip skip[0]; +struct xfrm_algo_auth { + char alg_name[64]; + unsigned int alg_key_len; + unsigned int alg_trunc_len; + char alg_key[0]; }; -struct sctp_addip_param { - struct sctp_paramhdr param_hdr; - __be32 crr_id; +struct xfrm_algo_aead { + char alg_name[64]; + unsigned int alg_key_len; + unsigned int alg_icv_len; + char alg_key[0]; }; -struct sctp_addiphdr { - __be32 serial; - __u8 params[0]; +struct xfrm_stats { + __u32 replay_window; + __u32 replay; + __u32 integrity_failed; }; -struct sctp_authhdr { - __be16 shkey_id; - __be16 hmac_id; - __u8 hmac[0]; +enum { + XFRM_POLICY_TYPE_MAIN = 0, + XFRM_POLICY_TYPE_SUB = 1, + XFRM_POLICY_TYPE_MAX = 2, + XFRM_POLICY_TYPE_ANY = 255, }; -union sctp_addr { - struct sockaddr_in v4; - struct sockaddr_in6 v6; - struct sockaddr sa; +struct xfrm_encap_tmpl { + __u16 encap_type; + __be16 encap_sport; + __be16 encap_dport; + xfrm_address_t encap_oa; }; -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; - struct sctp_init_chunk peer_init[0]; +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, }; -struct sctp_tsnmap { - long unsigned int *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 xfrm_mark { + __u32 v; + __u32 m; }; -struct sctp_inithdr_host { - __u32 init_tag; - __u32 a_rwnd; - __u16 num_outbound_streams; - __u16 num_inbound_streams; - __u32 initial_tsn; +struct xfrm_address_filter { + xfrm_address_t saddr; + xfrm_address_t daddr; + __u16 family; + __u8 splen; + __u8 dplen; }; -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 xfrm_state_walk { + struct list_head all; + u8 state; + u8 dying; + u8 proto; + u32 seq; + struct xfrm_address_filter *filter; }; -struct sctp_stream_out_ext; +enum xfrm_replay_mode { + XFRM_REPLAY_MODE_LEGACY = 0, + XFRM_REPLAY_MODE_BMP = 1, + XFRM_REPLAY_MODE_ESN = 2, +}; -struct sctp_stream_out { - union { - __u32 mid; - __u16 ssn; - }; - __u32 mid_uo; - struct sctp_stream_out_ext *ext; - __u8 state; +struct xfrm_state_offload { + struct net_device *dev; + struct net_device *real_dev; + long unsigned int offload_handle; + unsigned int num_exthdrs; + u8 flags; }; -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 xfrm_mode { + u8 encap; + u8 family; + u8 flags; }; -struct sctp_stream_interleave; +struct xfrm_type; -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; +struct xfrm_type_offload; + +struct xfrm_state { + possible_net_t xs_net; union { - struct { - struct list_head prio_list; - }; - struct { - struct list_head rr_list; - struct sctp_stream_out_ext *rr_next; - }; + struct hlist_node gclist; + struct hlist_node bydst; }; - struct sctp_stream_interleave *si; + 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 *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_state_offload xso; + long int 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 sctp_sched_ops; - -struct sctp_association; - -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 dst_metrics { + u32 metrics[17]; + refcount_t refcnt; }; -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 xfrm_policy_walk_entry { + struct list_head all; + u8 dead; }; -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 xfrm_policy_queue { + struct sk_buff_head hold_queue; + struct timer_list hold_timer; + long unsigned int timeout; }; -struct sctp_transport; - -struct sctp_auth_bytes; - -struct sctp_shared_key; +struct xfrm_tmpl { + struct xfrm_id id; + xfrm_address_t saddr; + short unsigned int encap_family; + u32 reqid; + u8 mode; + u8 share; + u8 optional; + u8 allalgs; + u32 aalgos; + u32 ealgos; + u32 calgos; +}; -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 hostname_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; - long unsigned int rto_initial; - long unsigned int rto_max; - long unsigned int rto_min; - int max_burst; - int max_retrans; - __u16 pf_retrans; - __u16 ps_retrans; - __u16 max_init_attempts; - __u16 init_retries; - long unsigned int max_init_timeo; - long unsigned int hbinterval; - __be16 encap_port; - __u16 pathmaxrxt; - __u32 flowlabel; - __u8 dscp; - __u8 pmtu_pending; - __u32 pathmtu; - __u32 param_flags; - __u32 sackfreq; - long unsigned int sackdelay; - long unsigned int timeouts[11]; - struct timer_list timers[11]; - 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]; +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 sctp_auth_bytes { - refcount_t refcnt; - __u32 len; - __u8 data[0]; +struct udp_hslot; + +struct udp_table { + struct udp_hslot *hash; + struct udp_hslot *hash2; + unsigned int mask; + unsigned int log; }; -struct sctp_shared_key { - struct list_head key_list; - struct sctp_auth_bytes *key; - refcount_t refcnt; - __u16 key_id; - __u8 deactivated; +struct fib_nh_exception { + struct fib_nh_exception *fnhe_next; + int fnhe_genid; + __be32 fnhe_daddr; + u32 fnhe_pmtu; + bool fnhe_mtu_locked; + __be32 fnhe_gw; + long unsigned int fnhe_expires; + struct rtable *fnhe_rth_input; + struct rtable *fnhe_rth_output; + long unsigned int fnhe_stamp; + struct callback_head rcu; }; -enum { - SCTP_MAX_STREAM = 65535, +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 list_head rt_uncached; + struct uncached_list *rt_uncached_list; }; -enum sctp_event_timeout { - SCTP_EVENT_TIMEOUT_NONE = 0, - SCTP_EVENT_TIMEOUT_T1_COOKIE = 1, - SCTP_EVENT_TIMEOUT_T1_INIT = 2, - SCTP_EVENT_TIMEOUT_T2_SHUTDOWN = 3, - SCTP_EVENT_TIMEOUT_T3_RTX = 4, - SCTP_EVENT_TIMEOUT_T4_RTO = 5, - SCTP_EVENT_TIMEOUT_T5_SHUTDOWN_GUARD = 6, - SCTP_EVENT_TIMEOUT_HEARTBEAT = 7, - SCTP_EVENT_TIMEOUT_RECONF = 8, - SCTP_EVENT_TIMEOUT_SACK = 9, - SCTP_EVENT_TIMEOUT_AUTOCLOSE = 10, +struct fnhe_hash_bucket { + struct fib_nh_exception *chain; }; -enum { - SCTP_MAX_DUP_TSNS = 16, +struct rt6_exception_bucket { + struct hlist_head chain; + int depth; }; -enum sctp_scope { - SCTP_SCOPE_GLOBAL = 0, - SCTP_SCOPE_PRIVATE = 1, - SCTP_SCOPE_LINK = 2, - SCTP_SCOPE_LOOPBACK = 3, - SCTP_SCOPE_UNUSABLE = 4, +struct xfrm_type { + struct module *owner; + u8 proto; + u8 flags; + int (*init_state)(struct xfrm_state *); + 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 *); }; -enum { - SCTP_AUTH_HMAC_ID_RESERVED_0 = 0, - SCTP_AUTH_HMAC_ID_SHA1 = 1, - SCTP_AUTH_HMAC_ID_RESERVED_2 = 2, - SCTP_AUTH_HMAC_ID_SHA256 = 3, - __SCTP_AUTH_HMAC_MAX = 4, +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 sctp_ulpevent { - struct sctp_association *asoc; - struct sctp_chunk *chunk; - unsigned int rmem_len; - union { - __u32 mid; - __u16 ssn; - }; +struct xfrm_dst { union { - __u32 ppid; - __u32 fsn; - }; - __u32 tsn; - __u32 cumtsn; - __u16 stream; - __u16 flags; - __u16 msg_flags; -} __attribute__((packed)); - -union sctp_addr_param; + 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; +}; -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 xfrm_offload { + struct { + __u32 low; + __u32 hi; + } seq; + __u32 flags; + __u32 status; + __u8 proto; + __u8 inner_ipproto; }; -struct sctp_sender_hb_info; +struct sec_path { + int len; + int olen; + struct xfrm_state *xvec[6]; + struct xfrm_offload ovec[1]; +}; -struct sctp_signed_cookie; +struct udp_hslot { + struct hlist_head head; + int count; + spinlock_t lock; +}; -struct sctp_datamsg; +struct pkey_security_struct { + u64 subnet_prefix; + u16 pkey; + u32 sid; +}; -struct sctp_chunk { +struct sel_ib_pkey_bkt { + int size; 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; - long unsigned int 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 tsn_missing_report: 2; - __u16 fast_retransmit: 2; }; -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 *); +struct sel_ib_pkey { + struct pkey_security_struct psec; + struct list_head list; + struct callback_head rcu; }; -struct sctp_bind_bucket { - short unsigned int port; - signed char fastreuse; - signed char fastreuseport; - kuid_t fastuid; - struct hlist_node node; - struct hlist_head owner; - struct net *net; +struct smack_audit_data { + const char *function; + char *subject; + char *object; + char *request; + int result; }; -struct sctp_bind_hashbucket { - spinlock_t lock; - struct hlist_head chain; +struct smack_known { + struct list_head list; + struct hlist_node smk_hashed; + char *smk_known; + u32 smk_secid; + struct netlbl_lsm_secattr smk_netlabel; + struct list_head smk_rules; + struct mutex smk_rules_lock; }; -struct sctp_hashbucket { - rwlock_t lock; - struct hlist_head chain; +struct superblock_smack { + struct smack_known *smk_root; + struct smack_known *smk_floor; + struct smack_known *smk_hat; + struct smack_known *smk_default; + int smk_flags; }; -struct sctp_globals { - struct list_head address_families; - struct sctp_hashbucket *ep_hashtable; - struct sctp_bind_hashbucket *port_hashtable; - struct rhltable transport_hashtable; - int ep_hashsize; - int port_hashsize; - __u16 max_instreams; - __u16 max_outstreams; - bool checksum_disable; +struct socket_smack { + struct smack_known *smk_out; + struct smack_known *smk_in; + struct smack_known *smk_packet; + int smk_state; }; -enum sctp_socket_type { - SCTP_SOCKET_UDP = 0, - SCTP_SOCKET_UDP_HIGH_BANDWIDTH = 1, - SCTP_SOCKET_TCP = 2, +struct inode_smack { + struct smack_known *smk_inode; + struct smack_known *smk_task; + struct smack_known *smk_mmap; + int smk_flags; }; -struct sctp_pf; +struct task_smack { + struct smack_known *smk_task; + struct smack_known *smk_forked; + struct list_head smk_rules; + struct mutex smk_rules_lock; + struct list_head smk_relabel; +}; -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; - __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 smack_rule { + struct list_head list; + struct smack_known *smk_subject; + struct smack_known *smk_object; + int smk_access; }; -struct sctp_af; +struct smk_net4addr { + struct list_head list; + struct in_addr smk_host; + struct in_addr smk_mask; + int smk_masks; + struct smack_known *smk_label; +}; -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 smk_net6addr { + struct list_head list; + struct in6_addr smk_host; + struct in6_addr smk_mask; + int smk_masks; + struct smack_known *smk_label; }; -struct sctp_signed_cookie { - __u8 signature[32]; - __u32 __pad; - struct sctp_cookie c; -} __attribute__((packed)); +struct smack_known_list_elem { + struct list_head list; + struct smack_known *smk_label; +}; -union sctp_addr_param { - struct sctp_paramhdr p; - struct sctp_ipv4addr_param v4; - struct sctp_ipv6addr_param v6; +enum { + Opt_error___3 = 4294967295, + Opt_fsdefault = 0, + Opt_fsfloor = 1, + Opt_fshat = 2, + Opt_fsroot = 3, + Opt_fstransmute = 4, }; -struct sctp_sender_hb_info { - struct sctp_paramhdr param_hdr; - union sctp_addr daddr; - long unsigned int sent_at; - __u64 hb_nonce; +struct smk_audit_info { + struct common_audit_data a; + struct smack_audit_data sad; }; -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 *, int *); - 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 (*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 smack_mnt_opts { + const char *fsdefault; + const char *fsfloor; + const char *fshat; + const char *fsroot; + const char *fstransmute; }; -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 netlbl_audit { + struct lsmblob lsmdata; + kuid_t loginuid; + unsigned int sessionid; }; -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; - long unsigned int 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; - long unsigned int hbinterval; - long unsigned int sackdelay; - __u32 sackfreq; - atomic_t mtu_info; - ktime_t last_time_heard; - long unsigned int last_time_sent; - long unsigned int 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; - short unsigned int 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 list_head transmitted; - struct sctp_packet packet; - struct list_head send_ready; +struct cipso_v4_std_map_tbl { struct { - __u32 next_tsn_at_change; - char changeover_active; - char cycling_changeover; - char cacc_saw_newack; - } cacc; - __u64 hb_nonce; + u32 *cipso; + u32 *local; + u32 cipso_size; + u32 local_size; + } lvl; + struct { + u32 *cipso; + u32 *local; + u32 cipso_size; + u32 local_size; + } cat; +}; + +struct cipso_v4_doi { + u32 doi; + u32 type; + union { + struct cipso_v4_std_map_tbl *std; + } map; + u8 tags[5]; + refcount_t refcount; + struct list_head list; struct callback_head rcu; }; -struct sctp_datamsg { - struct list_head chunks; - refcount_t refcnt; - long unsigned int expires_at; - int send_error; - u8 send_failed: 1; - u8 can_delay: 1; - u8 abandoned: 1; +enum smk_inos { + SMK_ROOT_INO = 2, + SMK_LOAD = 3, + SMK_CIPSO = 4, + SMK_DOI = 5, + SMK_DIRECT = 6, + SMK_AMBIENT = 7, + SMK_NET4ADDR = 8, + SMK_ONLYCAP = 9, + SMK_LOGGING = 10, + SMK_LOAD_SELF = 11, + SMK_ACCESSES = 12, + SMK_MAPPED = 13, + SMK_LOAD2 = 14, + SMK_LOAD_SELF2 = 15, + SMK_ACCESS2 = 16, + SMK_CIPSO2 = 17, + SMK_REVOKE_SUBJ = 18, + SMK_CHANGE_RULE = 19, + SMK_SYSLOG = 20, + SMK_PTRACE = 21, + SMK_NET6ADDR = 23, + SMK_RELABEL_SELF = 24, }; -struct sctp_stream_priorities { - struct list_head prio_sched; - struct list_head active; - struct sctp_stream_out_ext *next; - __u16 prio; +struct smack_parsed_rule { + struct smack_known *smk_subject; + struct smack_known *smk_object; + int smk_access1; + int smk_access2; }; -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 sockaddr_un { + __kernel_sa_family_t sun_family; + char sun_path[108]; }; -struct task_security_struct { - u32 osid; - u32 sid; - u32 exec_sid; - u32 create_sid; - u32 keycreate_sid; - u32 sockcreate_sid; +struct unix_address { + refcount_t refcnt; + int len; + unsigned int hash; + struct sockaddr_un name[0]; }; -enum label_initialized { - LABEL_INVALID = 0, - LABEL_INITIALIZED = 1, - LABEL_PENDING = 2, +struct scm_stat { + atomic_t nr_fds; }; -struct inode_security_struct { - struct inode *inode; - struct list_head list; - u32 task_sid; - u32 sid; - u16 sclass; - unsigned char initialized; +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; + atomic_long_t inflight; spinlock_t lock; + long unsigned int gc_flags; + long: 64; + long: 64; + long: 64; + long: 64; + struct socket_wq peer_wq; + wait_queue_entry_t peer_wake; + struct scm_stat scm_stat; + struct sk_buff *oob_skb; + long: 64; }; -struct file_security_struct { - u32 sid; - u32 fown_sid; - u32 isid; - u32 pseqno; +enum tomoyo_conditions_index { + TOMOYO_TASK_UID = 0, + TOMOYO_TASK_EUID = 1, + TOMOYO_TASK_SUID = 2, + TOMOYO_TASK_FSUID = 3, + TOMOYO_TASK_GID = 4, + TOMOYO_TASK_EGID = 5, + TOMOYO_TASK_SGID = 6, + TOMOYO_TASK_FSGID = 7, + TOMOYO_TASK_PID = 8, + TOMOYO_TASK_PPID = 9, + TOMOYO_EXEC_ARGC = 10, + TOMOYO_EXEC_ENVC = 11, + TOMOYO_TYPE_IS_SOCKET = 12, + TOMOYO_TYPE_IS_SYMLINK = 13, + TOMOYO_TYPE_IS_FILE = 14, + TOMOYO_TYPE_IS_BLOCK_DEV = 15, + TOMOYO_TYPE_IS_DIRECTORY = 16, + TOMOYO_TYPE_IS_CHAR_DEV = 17, + TOMOYO_TYPE_IS_FIFO = 18, + TOMOYO_MODE_SETUID = 19, + TOMOYO_MODE_SETGID = 20, + TOMOYO_MODE_STICKY = 21, + TOMOYO_MODE_OWNER_READ = 22, + TOMOYO_MODE_OWNER_WRITE = 23, + TOMOYO_MODE_OWNER_EXECUTE = 24, + TOMOYO_MODE_GROUP_READ = 25, + TOMOYO_MODE_GROUP_WRITE = 26, + TOMOYO_MODE_GROUP_EXECUTE = 27, + TOMOYO_MODE_OTHERS_READ = 28, + TOMOYO_MODE_OTHERS_WRITE = 29, + TOMOYO_MODE_OTHERS_EXECUTE = 30, + TOMOYO_EXEC_REALPATH = 31, + TOMOYO_SYMLINK_TARGET = 32, + TOMOYO_PATH1_UID = 33, + TOMOYO_PATH1_GID = 34, + TOMOYO_PATH1_INO = 35, + TOMOYO_PATH1_MAJOR = 36, + TOMOYO_PATH1_MINOR = 37, + TOMOYO_PATH1_PERM = 38, + TOMOYO_PATH1_TYPE = 39, + TOMOYO_PATH1_DEV_MAJOR = 40, + TOMOYO_PATH1_DEV_MINOR = 41, + TOMOYO_PATH2_UID = 42, + TOMOYO_PATH2_GID = 43, + TOMOYO_PATH2_INO = 44, + TOMOYO_PATH2_MAJOR = 45, + TOMOYO_PATH2_MINOR = 46, + TOMOYO_PATH2_PERM = 47, + TOMOYO_PATH2_TYPE = 48, + TOMOYO_PATH2_DEV_MAJOR = 49, + TOMOYO_PATH2_DEV_MINOR = 50, + TOMOYO_PATH1_PARENT_UID = 51, + TOMOYO_PATH1_PARENT_GID = 52, + TOMOYO_PATH1_PARENT_INO = 53, + TOMOYO_PATH1_PARENT_PERM = 54, + TOMOYO_PATH2_PARENT_UID = 55, + TOMOYO_PATH2_PARENT_GID = 56, + TOMOYO_PATH2_PARENT_INO = 57, + TOMOYO_PATH2_PARENT_PERM = 58, + TOMOYO_MAX_CONDITION_KEYWORD = 59, + TOMOYO_NUMBER_UNION = 60, + TOMOYO_NAME_UNION = 61, + TOMOYO_ARGV_ENTRY = 62, + TOMOYO_ENVP_ENTRY = 63, }; -struct superblock_security_struct { - u32 sid; - u32 def_sid; - u32 mntpoint_sid; - short unsigned int behavior; - short unsigned int flags; - struct mutex lock; - struct list_head isec_head; - spinlock_t isec_lock; +enum tomoyo_path_stat_index { + TOMOYO_PATH1 = 0, + TOMOYO_PATH1_PARENT = 1, + TOMOYO_PATH2 = 2, + TOMOYO_PATH2_PARENT = 3, + TOMOYO_MAX_PATH_STAT = 4, }; -struct msg_security_struct { - u32 sid; +enum tomoyo_mode_index { + TOMOYO_CONFIG_DISABLED = 0, + TOMOYO_CONFIG_LEARNING = 1, + TOMOYO_CONFIG_PERMISSIVE = 2, + TOMOYO_CONFIG_ENFORCING = 3, + TOMOYO_CONFIG_MAX_MODE = 4, + TOMOYO_CONFIG_WANT_REJECT_LOG = 64, + TOMOYO_CONFIG_WANT_GRANT_LOG = 128, + TOMOYO_CONFIG_USE_DEFAULT = 255, }; -struct ipc_security_struct { - u16 sclass; - u32 sid; +enum tomoyo_policy_id { + TOMOYO_ID_GROUP = 0, + TOMOYO_ID_ADDRESS_GROUP = 1, + TOMOYO_ID_PATH_GROUP = 2, + TOMOYO_ID_NUMBER_GROUP = 3, + TOMOYO_ID_TRANSITION_CONTROL = 4, + TOMOYO_ID_AGGREGATOR = 5, + TOMOYO_ID_MANAGER = 6, + TOMOYO_ID_CONDITION = 7, + TOMOYO_ID_NAME = 8, + TOMOYO_ID_ACL = 9, + TOMOYO_ID_DOMAIN = 10, + TOMOYO_MAX_POLICY = 11, }; -struct sk_security_struct { - enum { - NLBL_UNSET = 0, - NLBL_REQUIRE = 1, - NLBL_LABELED = 2, - NLBL_REQSKB = 3, - NLBL_CONNLABELED = 4, - } nlbl_state; - struct netlbl_lsm_secattr *nlbl_secattr; - u32 sid; - u32 peer_sid; - u16 sclass; - enum { - SCTP_ASSOC_UNSET = 0, - SCTP_ASSOC_SET = 1, - } sctp_assoc_state; +enum tomoyo_domain_info_flags_index { + TOMOYO_DIF_QUOTA_WARNED = 0, + TOMOYO_DIF_TRANSITION_FAILED = 1, + TOMOYO_MAX_DOMAIN_INFO_FLAGS = 2, }; -struct tun_security_struct { - u32 sid; +enum tomoyo_grant_log { + TOMOYO_GRANTLOG_AUTO = 0, + TOMOYO_GRANTLOG_NO = 1, + TOMOYO_GRANTLOG_YES = 2, }; -struct key_security_struct { - u32 sid; +enum tomoyo_group_id { + TOMOYO_PATH_GROUP = 0, + TOMOYO_NUMBER_GROUP = 1, + TOMOYO_ADDRESS_GROUP = 2, + TOMOYO_MAX_GROUP = 3, }; -struct ib_security_struct { - u32 sid; +enum tomoyo_path_acl_index { + TOMOYO_TYPE_EXECUTE = 0, + TOMOYO_TYPE_READ = 1, + TOMOYO_TYPE_WRITE = 2, + TOMOYO_TYPE_APPEND = 3, + TOMOYO_TYPE_UNLINK = 4, + TOMOYO_TYPE_GETATTR = 5, + TOMOYO_TYPE_RMDIR = 6, + TOMOYO_TYPE_TRUNCATE = 7, + TOMOYO_TYPE_SYMLINK = 8, + TOMOYO_TYPE_CHROOT = 9, + TOMOYO_TYPE_UMOUNT = 10, + TOMOYO_MAX_PATH_OPERATION = 11, }; -struct bpf_security_struct { - u32 sid; +enum tomoyo_memory_stat_type { + TOMOYO_MEMORY_POLICY = 0, + TOMOYO_MEMORY_AUDIT = 1, + TOMOYO_MEMORY_QUERY = 2, + TOMOYO_MAX_MEMORY_STAT = 3, }; -struct perf_event_security_struct { - u32 sid; +enum tomoyo_mkdev_acl_index { + TOMOYO_TYPE_MKBLOCK = 0, + TOMOYO_TYPE_MKCHAR = 1, + TOMOYO_MAX_MKDEV_OPERATION = 2, }; -struct selinux_mnt_opts { - const char *fscontext; - const char *context; - const char *rootcontext; - const char *defcontext; +enum tomoyo_network_acl_index { + TOMOYO_NETWORK_BIND = 0, + TOMOYO_NETWORK_LISTEN = 1, + TOMOYO_NETWORK_CONNECT = 2, + TOMOYO_NETWORK_SEND = 3, + TOMOYO_MAX_NETWORK_OPERATION = 4, }; -enum { - Opt_error___2 = 4294967295, - Opt_context = 0, - Opt_defcontext = 1, - Opt_fscontext = 2, - Opt_rootcontext = 3, - Opt_seclabel = 4, +enum tomoyo_path2_acl_index { + TOMOYO_TYPE_LINK = 0, + TOMOYO_TYPE_RENAME = 1, + TOMOYO_TYPE_PIVOT_ROOT = 2, + TOMOYO_MAX_PATH2_OPERATION = 3, }; -struct selinux_policy_convert_data; - -struct selinux_load_state { - struct selinux_policy *policy; - struct selinux_policy_convert_data *convert_data; +enum tomoyo_path_number_acl_index { + TOMOYO_TYPE_CREATE = 0, + TOMOYO_TYPE_MKDIR = 1, + TOMOYO_TYPE_MKFIFO = 2, + TOMOYO_TYPE_MKSOCK = 3, + TOMOYO_TYPE_IOCTL = 4, + TOMOYO_TYPE_CHMOD = 5, + TOMOYO_TYPE_CHOWN = 6, + TOMOYO_TYPE_CHGRP = 7, + TOMOYO_MAX_PATH_NUMBER_OPERATION = 8, }; -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, +enum tomoyo_securityfs_interface_index { + TOMOYO_DOMAINPOLICY = 0, + TOMOYO_EXCEPTIONPOLICY = 1, + TOMOYO_PROCESS_STATUS = 2, + TOMOYO_STAT = 3, + TOMOYO_AUDIT = 4, + TOMOYO_VERSION = 5, + TOMOYO_PROFILE = 6, + TOMOYO_QUERY = 7, + TOMOYO_MANAGER = 8, }; -struct selinux_fs_info { - struct dentry *bool_dir; - unsigned int bool_num; - char **bool_pending_names; - unsigned int *bool_pending_values; - struct dentry *class_dir; - long unsigned int last_class_ino; - bool policy_opened; - struct dentry *policycap_dir; - long unsigned int last_ino; - struct selinux_state *state; - struct super_block *sb; +enum tomoyo_mac_index { + TOMOYO_MAC_FILE_EXECUTE = 0, + TOMOYO_MAC_FILE_OPEN = 1, + TOMOYO_MAC_FILE_CREATE = 2, + TOMOYO_MAC_FILE_UNLINK = 3, + TOMOYO_MAC_FILE_GETATTR = 4, + TOMOYO_MAC_FILE_MKDIR = 5, + TOMOYO_MAC_FILE_RMDIR = 6, + TOMOYO_MAC_FILE_MKFIFO = 7, + TOMOYO_MAC_FILE_MKSOCK = 8, + TOMOYO_MAC_FILE_TRUNCATE = 9, + TOMOYO_MAC_FILE_SYMLINK = 10, + TOMOYO_MAC_FILE_MKBLOCK = 11, + TOMOYO_MAC_FILE_MKCHAR = 12, + TOMOYO_MAC_FILE_LINK = 13, + TOMOYO_MAC_FILE_RENAME = 14, + TOMOYO_MAC_FILE_CHMOD = 15, + TOMOYO_MAC_FILE_CHOWN = 16, + TOMOYO_MAC_FILE_CHGRP = 17, + TOMOYO_MAC_FILE_IOCTL = 18, + TOMOYO_MAC_FILE_CHROOT = 19, + TOMOYO_MAC_FILE_MOUNT = 20, + TOMOYO_MAC_FILE_UMOUNT = 21, + TOMOYO_MAC_FILE_PIVOT_ROOT = 22, + TOMOYO_MAC_NETWORK_INET_STREAM_BIND = 23, + TOMOYO_MAC_NETWORK_INET_STREAM_LISTEN = 24, + TOMOYO_MAC_NETWORK_INET_STREAM_CONNECT = 25, + TOMOYO_MAC_NETWORK_INET_DGRAM_BIND = 26, + TOMOYO_MAC_NETWORK_INET_DGRAM_SEND = 27, + TOMOYO_MAC_NETWORK_INET_RAW_BIND = 28, + TOMOYO_MAC_NETWORK_INET_RAW_SEND = 29, + TOMOYO_MAC_NETWORK_UNIX_STREAM_BIND = 30, + TOMOYO_MAC_NETWORK_UNIX_STREAM_LISTEN = 31, + TOMOYO_MAC_NETWORK_UNIX_STREAM_CONNECT = 32, + TOMOYO_MAC_NETWORK_UNIX_DGRAM_BIND = 33, + TOMOYO_MAC_NETWORK_UNIX_DGRAM_SEND = 34, + TOMOYO_MAC_NETWORK_UNIX_SEQPACKET_BIND = 35, + TOMOYO_MAC_NETWORK_UNIX_SEQPACKET_LISTEN = 36, + TOMOYO_MAC_NETWORK_UNIX_SEQPACKET_CONNECT = 37, + TOMOYO_MAC_ENVIRON = 38, + TOMOYO_MAX_MAC_INDEX = 39, }; -struct policy_load_memory { - size_t len; - void *data; +enum tomoyo_mac_category_index { + TOMOYO_MAC_CATEGORY_FILE = 0, + TOMOYO_MAC_CATEGORY_NETWORK = 1, + TOMOYO_MAC_CATEGORY_MISC = 2, + TOMOYO_MAX_MAC_CATEGORY_INDEX = 3, }; -enum { - SELNL_MSG_SETENFORCE = 16, - SELNL_MSG_POLICYLOAD = 17, - SELNL_MSG_MAX = 18, +enum tomoyo_pref_index { + TOMOYO_PREF_MAX_AUDIT_LOG = 0, + TOMOYO_PREF_MAX_LEARNING_ENTRY = 1, + TOMOYO_MAX_PREF = 2, }; -enum selinux_nlgroups { - SELNLGRP_NONE = 0, - SELNLGRP_AVC = 1, - __SELNLGRP_MAX = 2, -}; +struct tomoyo_shared_acl_head { + struct list_head list; + atomic_t users; +} __attribute__((packed)); -struct selnl_msg_setenforce { - __s32 val; +struct tomoyo_path_info { + const char *name; + u32 hash; + u16 const_len; + bool is_dir; + bool is_patterned; }; -struct selnl_msg_policyload { - __u32 seqno; -}; +struct tomoyo_obj_info; -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_MAX = 39, +struct tomoyo_execve; + +struct tomoyo_domain_info; + +struct tomoyo_acl_info; + +struct tomoyo_request_info { + struct tomoyo_obj_info *obj; + struct tomoyo_execve *ee; + struct tomoyo_domain_info *domain; + union { + struct { + const struct tomoyo_path_info *filename; + const struct tomoyo_path_info *matched_path; + u8 operation; + } path; + struct { + const struct tomoyo_path_info *filename1; + const struct tomoyo_path_info *filename2; + u8 operation; + } path2; + struct { + const struct tomoyo_path_info *filename; + unsigned int mode; + unsigned int major; + unsigned int minor; + u8 operation; + } mkdev; + struct { + const struct tomoyo_path_info *filename; + long unsigned int number; + u8 operation; + } path_number; + struct { + const struct tomoyo_path_info *name; + } environ; + struct { + const __be32 *address; + u16 port; + u8 protocol; + u8 operation; + bool is_ipv6; + } inet_network; + struct { + const struct tomoyo_path_info *address; + u8 protocol; + u8 operation; + } unix_network; + struct { + const struct tomoyo_path_info *type; + const struct tomoyo_path_info *dir; + const struct tomoyo_path_info *dev; + long unsigned int flags; + int need_dev; + } mount; + struct { + const struct tomoyo_path_info *domainname; + } task; + } param; + struct tomoyo_acl_info *matched_acl; + u8 param_type; + bool granted; + u8 retry; + u8 profile; + u8 mode; + u8 type; }; -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_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_MAX = 115, +struct tomoyo_mini_stat { + kuid_t uid; + kgid_t gid; + ino_t ino; + umode_t mode; + dev_t dev; + dev_t rdev; }; -struct nlmsg_perm { - u16 nlmsg_type; - u32 perm; +struct tomoyo_obj_info { + bool validate_done; + bool stat_valid[4]; + struct path path1; + struct path path2; + struct tomoyo_mini_stat stat[4]; + struct tomoyo_path_info *symlink_target; }; -struct netif_security_struct { - struct net *ns; - int ifindex; - u32 sid; +struct tomoyo_page_dump { + struct page *page; + char *data; }; -struct sel_netif { - struct list_head list; - struct netif_security_struct nsec; - struct callback_head callback_head; +struct tomoyo_execve { + struct tomoyo_request_info r; + struct tomoyo_obj_info obj; + struct linux_binprm *bprm; + const struct tomoyo_path_info *transition; + struct tomoyo_page_dump dump; + char *tmp; }; -struct netnode_security_struct { - union { - __be32 ipv4; - struct in6_addr ipv6; - } addr; - u32 sid; - u16 family; -}; +struct tomoyo_policy_namespace; -struct sel_netnode_bkt { - unsigned int size; +struct tomoyo_domain_info { struct list_head list; + struct list_head acl_info_list; + const struct tomoyo_path_info *domainname; + struct tomoyo_policy_namespace *ns; + long unsigned int group[4]; + u8 profile; + bool is_deleted; + bool flags[2]; + atomic_t users; }; -struct sel_netnode { - struct netnode_security_struct nsec; +struct tomoyo_condition; + +struct tomoyo_acl_info { struct list_head list; - struct callback_head rcu; -}; + struct tomoyo_condition *cond; + s8 is_deleted; + u8 type; +} __attribute__((packed)); -struct netport_security_struct { - u32 sid; - u16 port; - u8 protocol; +struct tomoyo_condition { + struct tomoyo_shared_acl_head head; + u32 size; + u16 condc; + u16 numbers_count; + u16 names_count; + u16 argc; + u16 envc; + u8 grant_log; + const struct tomoyo_path_info *transit; }; -struct sel_netport_bkt { - int size; - struct list_head list; +struct tomoyo_profile; + +struct tomoyo_policy_namespace { + struct tomoyo_profile *profile_ptr[256]; + struct list_head group_list[3]; + struct list_head policy_list[11]; + struct list_head acl_group[256]; + struct list_head namespace_list; + unsigned int profile_version; + const char *name; }; -struct sel_netport { - struct netport_security_struct psec; +struct tomoyo_io_buffer { + void (*read)(struct tomoyo_io_buffer *); + int (*write)(struct tomoyo_io_buffer *); + __poll_t (*poll)(struct file *, poll_table *); + struct mutex io_sem; + char *read_user_buf; + size_t read_user_buf_avail; + struct { + struct list_head *ns; + struct list_head *domain; + struct list_head *group; + struct list_head *acl; + size_t avail; + unsigned int step; + unsigned int query_index; + u16 index; + u16 cond_index; + u8 acl_group_index; + u8 cond_step; + u8 bit; + u8 w_pos; + bool eof; + bool print_this_domain_only; + bool print_transition_related_only; + bool print_cond_part; + const char *w[64]; + } r; + struct { + struct tomoyo_policy_namespace *ns; + struct tomoyo_domain_info *domain; + size_t avail; + bool is_delete; + } w; + char *read_buf; + size_t readbuf_size; + char *write_buf; + size_t writebuf_size; + enum tomoyo_securityfs_interface_index type; + u8 users; struct list_head list; - struct callback_head rcu; }; -struct selinux_kernel_status { - u32 version; - u32 sequence; - u32 enforcing; - u32 policyload; - u32 deny_unknown; +struct tomoyo_preference { + unsigned int learning_max_entry; + bool enforcing_verbose; + bool learning_verbose; + bool permissive_verbose; }; -struct ebitmap_node { - struct ebitmap_node *next; - long unsigned int maps[6]; - u32 startbit; +struct tomoyo_profile { + const struct tomoyo_path_info *comment; + struct tomoyo_preference *learning; + struct tomoyo_preference *permissive; + struct tomoyo_preference *enforcing; + struct tomoyo_preference preference; + u8 default_config; + u8 config[42]; + unsigned int pref[2]; }; -struct ebitmap { - struct ebitmap_node *node; - u32 highbit; +struct tomoyo_time { + u16 year; + u8 month; + u8 day; + u8 hour; + u8 min; + u8 sec; }; -struct policy_file { - char *data; - size_t len; +struct tomoyo_log { + struct list_head list; + char *log; + int size; }; -struct hashtab_node { - void *key; - void *datum; - struct hashtab_node *next; +enum tomoyo_value_type { + TOMOYO_VALUE_TYPE_INVALID = 0, + TOMOYO_VALUE_TYPE_DECIMAL = 1, + TOMOYO_VALUE_TYPE_OCTAL = 2, + TOMOYO_VALUE_TYPE_HEXADECIMAL = 3, }; -struct hashtab { - struct hashtab_node **htable; - u32 size; - u32 nel; +enum tomoyo_transition_type { + TOMOYO_TRANSITION_CONTROL_NO_RESET = 0, + TOMOYO_TRANSITION_CONTROL_RESET = 1, + TOMOYO_TRANSITION_CONTROL_NO_INITIALIZE = 2, + TOMOYO_TRANSITION_CONTROL_INITIALIZE = 3, + TOMOYO_TRANSITION_CONTROL_NO_KEEP = 4, + TOMOYO_TRANSITION_CONTROL_KEEP = 5, + TOMOYO_MAX_TRANSITION_TYPE = 6, }; -struct hashtab_info { - u32 slots_used; - u32 max_chain_len; +enum tomoyo_acl_entry_type_index { + TOMOYO_TYPE_PATH_ACL = 0, + TOMOYO_TYPE_PATH2_ACL = 1, + TOMOYO_TYPE_PATH_NUMBER_ACL = 2, + TOMOYO_TYPE_MKDEV_ACL = 3, + TOMOYO_TYPE_MOUNT_ACL = 4, + TOMOYO_TYPE_INET_ACL = 5, + TOMOYO_TYPE_UNIX_ACL = 6, + TOMOYO_TYPE_ENV_ACL = 7, + TOMOYO_TYPE_MANUAL_TASK_ACL = 8, }; -struct hashtab_key_params { - u32 (*hash)(const void *); - int (*cmp)(const void *, const void *); +enum tomoyo_policy_stat_type { + TOMOYO_STAT_POLICY_UPDATES = 0, + TOMOYO_STAT_POLICY_LEARNING = 1, + TOMOYO_STAT_POLICY_PERMISSIVE = 2, + TOMOYO_STAT_POLICY_ENFORCING = 3, + TOMOYO_MAX_POLICY_STAT = 4, }; -struct symtab { - struct hashtab table; - u32 nprim; +struct tomoyo_acl_head { + struct list_head list; + s8 is_deleted; +} __attribute__((packed)); + +struct tomoyo_name { + struct tomoyo_shared_acl_head head; + struct tomoyo_path_info entry; }; -struct mls_level { - u32 sens; - struct ebitmap cat; +struct tomoyo_group; + +struct tomoyo_name_union { + const struct tomoyo_path_info *filename; + struct tomoyo_group *group; }; -struct mls_range { - struct mls_level level[2]; +struct tomoyo_group { + struct tomoyo_shared_acl_head head; + const struct tomoyo_path_info *group_name; + struct list_head member_list; }; -struct context { - u32 user; - u32 role; - u32 type; - u32 len; - struct mls_range range; - char *str; +struct tomoyo_number_union { + long unsigned int values[2]; + struct tomoyo_group *group; + u8 value_type[2]; }; -struct sidtab_str_cache; +struct tomoyo_ipaddr_union { + struct in6_addr ip[2]; + struct tomoyo_group *group; + bool is_ipv6; +}; -struct sidtab_entry { - u32 sid; - u32 hash; - struct context context; - struct sidtab_str_cache *cache; - struct hlist_node list; +struct tomoyo_path_group { + struct tomoyo_acl_head head; + const struct tomoyo_path_info *member_name; }; -struct sidtab_str_cache { - struct callback_head rcu_member; - struct list_head lru_member; - struct sidtab_entry *parent; - u32 len; - char str[0]; +struct tomoyo_number_group { + struct tomoyo_acl_head head; + struct tomoyo_number_union number; }; -struct sidtab_node_inner; +struct tomoyo_address_group { + struct tomoyo_acl_head head; + struct tomoyo_ipaddr_union address; +}; -struct sidtab_node_leaf; +struct tomoyo_argv { + long unsigned int index; + const struct tomoyo_path_info *value; + bool is_not; +}; -union sidtab_entry_inner { - struct sidtab_node_inner *ptr_inner; - struct sidtab_node_leaf *ptr_leaf; +struct tomoyo_envp { + const struct tomoyo_path_info *name; + const struct tomoyo_path_info *value; + bool is_not; }; -struct sidtab_node_inner { - union sidtab_entry_inner entries[512]; +struct tomoyo_condition_element { + u8 left; + u8 right; + bool equals; }; -struct sidtab_node_leaf { - struct sidtab_entry entries[39]; +struct tomoyo_task_acl { + struct tomoyo_acl_info head; + const struct tomoyo_path_info *domainname; }; -struct sidtab_isid_entry { - int set; - struct sidtab_entry entry; +struct tomoyo_path_acl { + struct tomoyo_acl_info head; + u16 perm; + struct tomoyo_name_union name; }; -struct sidtab; +struct tomoyo_path_number_acl { + struct tomoyo_acl_info head; + u8 perm; + struct tomoyo_name_union name; + struct tomoyo_number_union number; +}; -struct sidtab_convert_params { - int (*func)(struct context *, struct context *, void *); - void *args; - struct sidtab *target; +struct tomoyo_mkdev_acl { + struct tomoyo_acl_info head; + u8 perm; + struct tomoyo_name_union name; + struct tomoyo_number_union mode; + struct tomoyo_number_union major; + struct tomoyo_number_union minor; }; -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 tomoyo_path2_acl { + struct tomoyo_acl_info head; + u8 perm; + struct tomoyo_name_union name1; + struct tomoyo_name_union name2; }; -struct avtab_key { - u16 source_type; - u16 target_type; - u16 target_class; - u16 specified; +struct tomoyo_mount_acl { + struct tomoyo_acl_info head; + struct tomoyo_name_union dev_name; + struct tomoyo_name_union dir_name; + struct tomoyo_name_union fs_type; + struct tomoyo_number_union flags; }; -struct avtab_extended_perms { - u8 specified; - u8 driver; - struct extended_perms_data perms; +struct tomoyo_env_acl { + struct tomoyo_acl_info head; + const struct tomoyo_path_info *env; }; -struct avtab_datum { - union { - u32 data; - struct avtab_extended_perms *xperms; - } u; +struct tomoyo_inet_acl { + struct tomoyo_acl_info head; + u8 protocol; + u8 perm; + struct tomoyo_ipaddr_union address; + struct tomoyo_number_union port; }; -struct avtab_node { - struct avtab_key key; - struct avtab_datum datum; - struct avtab_node *next; +struct tomoyo_unix_acl { + struct tomoyo_acl_info head; + u8 protocol; + u8 perm; + struct tomoyo_name_union name; }; -struct avtab { - struct avtab_node **htable; - u32 nel; - u32 nslot; - u32 mask; +struct tomoyo_acl_param { + char *data; + struct list_head *list; + struct tomoyo_policy_namespace *ns; + bool is_delete; }; -struct type_set; +struct tomoyo_transition_control { + struct tomoyo_acl_head head; + u8 type; + bool is_last_name; + const struct tomoyo_path_info *domainname; + const struct tomoyo_path_info *program; +}; -struct constraint_expr { - u32 expr_type; - u32 attr; - u32 op; - struct ebitmap names; - struct type_set *type_names; - struct constraint_expr *next; +struct tomoyo_aggregator { + struct tomoyo_acl_head head; + const struct tomoyo_path_info *original_name; + const struct tomoyo_path_info *aggregated_name; }; -struct type_set { - struct ebitmap types; - struct ebitmap negset; - u32 flags; +struct tomoyo_manager { + struct tomoyo_acl_head head; + const struct tomoyo_path_info *manager; }; -struct constraint_node { - u32 permissions; - struct constraint_expr *expr; - struct constraint_node *next; +struct tomoyo_task { + struct tomoyo_domain_info *domain_info; + struct tomoyo_domain_info *old_domain_info; }; -struct common_datum { - u32 value; - struct symtab permissions; +struct tomoyo_query { + struct list_head list; + struct tomoyo_domain_info *domain; + char *query; + size_t query_len; + unsigned int serial; + u8 timer; + u8 answer; + u8 retry; }; -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; +enum tomoyo_special_mount { + TOMOYO_MOUNT_BIND = 0, + TOMOYO_MOUNT_MOVE = 1, + TOMOYO_MOUNT_REMOUNT = 2, + TOMOYO_MOUNT_MAKE_UNBINDABLE = 3, + TOMOYO_MOUNT_MAKE_PRIVATE = 4, + TOMOYO_MOUNT_MAKE_SLAVE = 5, + TOMOYO_MOUNT_MAKE_SHARED = 6, + TOMOYO_MAX_SPECIAL_MOUNT = 7, }; -struct role_datum { - u32 value; - u32 bounds; - struct ebitmap dominates; - struct ebitmap types; +struct tomoyo_inet_addr_info { + __be16 port; + const __be32 *address; + bool is_ipv6; }; -struct role_allow { - u32 role; - u32 new_role; - struct role_allow *next; +struct tomoyo_unix_addr_info { + u8 *addr; + unsigned int addr_len; }; -struct type_datum { - u32 value; - u32 bounds; - unsigned char primary; - unsigned char attribute; +struct tomoyo_addr_info { + u8 protocol; + u8 operation; + struct tomoyo_inet_addr_info inet; + struct tomoyo_unix_addr_info unix0; }; -struct user_datum { - u32 value; - u32 bounds; - struct ebitmap roles; - struct mls_range range; - struct mls_level dfltlevel; +enum audit_mode { + AUDIT_NORMAL = 0, + AUDIT_QUIET_DENIED = 1, + AUDIT_QUIET = 2, + AUDIT_NOQUIET = 3, + AUDIT_ALL = 4, }; -struct cond_bool_datum { - __u32 value; - int state; +enum aa_sfs_type { + AA_SFS_TYPE_BOOLEAN = 0, + AA_SFS_TYPE_STRING = 1, + AA_SFS_TYPE_U64 = 2, + AA_SFS_TYPE_FOPS = 3, + AA_SFS_TYPE_DIR = 4, }; -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; +struct aa_sfs_entry { + const char *name; + struct dentry *dentry; + umode_t mode; + enum aa_sfs_type v_type; union { - u32 sclass; - u32 behavior; + bool boolean; + char *string; + long unsigned int u64; + struct aa_sfs_entry *files; } v; - struct context context[2]; - u32 sid[2]; - struct ocontext *next; + const struct file_operations *file_ops; }; -struct genfs { - char *fstype; - struct ocontext *head; - struct genfs *next; +enum aafs_ns_type { + AAFS_NS_DIR = 0, + AAFS_NS_PROFS = 1, + AAFS_NS_NS = 2, + AAFS_NS_RAW_DATA = 3, + AAFS_NS_LOAD = 4, + AAFS_NS_REPLACE = 5, + AAFS_NS_REMOVE = 6, + AAFS_NS_REVISION = 7, + AAFS_NS_COUNT = 8, + AAFS_NS_MAX_COUNT = 9, + AAFS_NS_SIZE = 10, + AAFS_NS_MAX_SIZE = 11, + AAFS_NS_OWNER = 12, + AAFS_NS_SIZEOF = 13, }; -struct cond_node; - -struct policydb { - int mls_enabled; - 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; +enum aafs_prof_type { + AAFS_PROF_DIR = 0, + AAFS_PROF_PROFS = 1, + AAFS_PROF_NAME = 2, + AAFS_PROF_MODE = 3, + AAFS_PROF_ATTACH = 4, + AAFS_PROF_HASH = 5, + AAFS_PROF_RAW_DATA = 6, + AAFS_PROF_RAW_HASH = 7, + AAFS_PROF_RAW_ABI = 8, + AAFS_PROF_SIZEOF = 9, }; -struct selinux_mapping; - -struct selinux_map { - struct selinux_mapping *mapping; - u16 size; +struct table_header { + u16 td_id; + u16 td_flags; + u32 td_hilen; + u32 td_lolen; + char td_data[0]; }; -struct selinux_policy { - struct sidtab *sidtab; - struct policydb policydb; - struct selinux_map map; - u32 latest_granting; +struct aa_dfa { + struct kref count; + u16 flags; + u32 max_oob; + struct table_header *tables[8]; }; -struct perm_datum { - u32 value; +struct aa_policy { + const char *name; + char *hname; + struct list_head list; + struct list_head profiles; }; -struct role_trans_key { - u32 role; - u32 type; - u32 tclass; +struct aa_labelset { + rwlock_t lock; + struct rb_root root; }; -struct role_trans_datum { - u32 new_role; +enum label_flags { + FLAG_HAT = 1, + FLAG_UNCONFINED = 2, + FLAG_NULL = 4, + FLAG_IX_ON_NAME_ERROR = 8, + FLAG_IMMUTIBLE = 16, + FLAG_USER_DEFINED = 32, + FLAG_NO_LIST_REF = 64, + FLAG_NS_COUNT = 128, + FLAG_IN_TREE = 256, + FLAG_PROFILE = 512, + FLAG_EXPLICIT = 1024, + FLAG_STALE = 2048, + FLAG_RENAMED = 4096, + FLAG_REVOKED = 8192, }; -struct filename_trans_key { - u32 ttype; - u16 tclass; - const char *name; -}; +struct aa_label; -struct filename_trans_datum { - struct ebitmap stypes; - u32 otype; - struct filename_trans_datum *next; +struct aa_proxy { + struct kref count; + struct aa_label *label; }; -struct level_datum { - struct mls_level *level; - unsigned char isalias; -}; +struct aa_profile; -struct cat_datum { - u32 value; - unsigned char isalias; +struct aa_label { + struct kref count; + struct rb_node node; + struct callback_head rcu; + struct aa_proxy *proxy; + char *hname; + long int flags; + u32 secid; + int size; + struct aa_profile *vec[0]; }; -struct range_trans { - u32 source_type; - u32 target_type; - u32 target_class; +struct label_it { + int i; + int j; }; -struct cond_expr_node; - -struct cond_expr { - struct cond_expr_node *nodes; - u32 len; +struct aa_policydb { + struct aa_dfa *dfa; + unsigned int start[18]; }; -struct cond_av_list { - struct avtab_node **nodes; - u32 len; +struct aa_domain { + int size; + char **table; }; -struct cond_node { - int cur_state; - struct cond_expr expr; - struct cond_av_list true_list; - struct cond_av_list false_list; +struct aa_file_rules { + unsigned int start; + struct aa_dfa *dfa; + struct aa_domain trans; }; -struct policy_data { - struct policydb *p; - void *fp; +struct aa_caps { + kernel_cap_t allow; + kernel_cap_t audit; + kernel_cap_t denied; + kernel_cap_t quiet; + kernel_cap_t kill; + kernel_cap_t extended; }; -struct cond_expr_node { - u32 expr_type; - u32 bool; +struct aa_rlimit { + unsigned int mask; + struct rlimit limits[16]; }; -struct selinux_mapping { - u16 value; - unsigned int num_perms; - u32 perms[32]; +struct aa_ns; + +struct aa_net_compat; + +struct aa_secmark; + +struct aa_loaddata; + +struct aa_profile { + struct aa_policy base; + struct aa_profile *parent; + struct aa_ns *ns; + const char *rename; + const char *attach; + struct aa_dfa *xmatch; + unsigned int xmatch_len; + enum audit_mode audit; + long int mode; + u32 path_flags; + const char *disconnected; + int size; + struct aa_policydb policy; + struct aa_file_rules file; + struct aa_caps caps; + struct aa_net_compat *net_compat; + int xattr_count; + char **xattrs; + struct aa_rlimit rlimits; + int secmark_count; + struct aa_secmark *secmark; + struct aa_loaddata *rawdata; + unsigned char *hash; + char *dirname; + struct dentry *dents[9]; + struct rhashtable *data; + struct aa_label label; }; -struct policydb_compat_info { - int version; - int sym_num; - int ocon_num; +struct aa_perms { + u32 allow; + u32 audit; + u32 deny; + u32 quiet; + u32 kill; + u32 stop; + u32 complain; + u32 cond; + u32 hide; + u32 prompt; + u16 xindex; }; -struct convert_context_args { - struct selinux_state *state; - struct policydb *oldp; - struct policydb *newp; +struct path_cond { + kuid_t uid; + umode_t mode; }; -struct selinux_policy_convert_data { - struct convert_context_args args; - struct sidtab_convert_params sidtab_params; +struct aa_net_compat { + u16 allow[46]; + u16 audit[46]; + u16 quiet[46]; }; -struct selinux_audit_rule { - u32 au_seqno; - struct context au_ctxt; +struct aa_secmark { + u8 audit; + u8 deny; + u32 secid; + char *label; }; -struct cond_insertf_data { - struct policydb *p; - struct avtab_node **dst; - struct cond_av_list *other; +enum profile_mode { + APPARMOR_ENFORCE = 0, + APPARMOR_COMPLAIN = 1, + APPARMOR_KILL = 2, + APPARMOR_UNCONFINED = 3, }; -struct rt6key { - struct in6_addr addr; - int plen; +struct aa_data { + char *key; + u32 size; + char *data; + struct rhash_head head; }; -struct rtable; +struct aa_ns_acct { + int max_size; + int max_count; + int size; + int count; +}; -struct fnhe_hash_bucket; +struct aa_ns { + struct aa_policy base; + struct aa_ns *parent; + struct mutex lock; + struct aa_ns_acct acct; + struct aa_profile *unconfined; + struct list_head sub_ns; + atomic_t uniq_null; + long int uniq_id; + int level; + long int revision; + wait_queue_head_t wait; + struct aa_labelset labels; + struct list_head rawdata_list; + struct dentry *dents[13]; +}; -struct fib_nh_common { - struct net_device *nhc_dev; - 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 **nhc_pcpu_rth_output; - struct rtable *nhc_rth_input; - struct fnhe_hash_bucket *nhc_exceptions; +struct aa_loaddata { + struct kref count; + struct list_head list; + struct work_struct work; + struct dentry *dents[6]; + struct aa_ns *ns; + char *name; + size_t size; + size_t compressed_size; + long int revision; + int abi; + unsigned char *hash; + char *data; }; -struct rt6_exception_bucket; +enum { + AAFS_LOADDATA_ABI = 0, + AAFS_LOADDATA_REVISION = 1, + AAFS_LOADDATA_HASH = 2, + AAFS_LOADDATA_DATA = 3, + AAFS_LOADDATA_COMPRESSED_SIZE = 4, + AAFS_LOADDATA_DIR = 5, + AAFS_LOADDATA_NDENTS = 6, +}; -struct fib6_nh { - struct fib_nh_common nh_common; - long unsigned int last_probe; - struct rt6_info **rt6i_pcpu; - struct rt6_exception_bucket *rt6i_exception_bucket; +struct rawdata_f_data { + struct aa_loaddata *loaddata; }; -struct fib6_node; +struct aa_revision { + struct aa_ns *ns; + long int last_read; +}; -struct nexthop; +struct multi_transaction { + struct kref count; + ssize_t size; + char data[0]; +}; -struct fib6_info { - struct fib6_table *fib6_table; - struct fib6_info *fib6_next; - struct fib6_node *fib6_node; +struct apparmor_audit_data { + int error; + int type; + const char *op; + struct aa_label *label; + const char *name; + const char *info; + u32 request; + u32 denied; union { - struct list_head fib6_siblings; - struct list_head nh_list; + struct { + struct aa_label *peer; + union { + struct { + const char *target; + kuid_t ouid; + } fs; + struct { + int rlim; + long unsigned int max; + } rlim; + struct { + int signal; + int unmappedsig; + }; + struct { + int type; + int protocol; + struct sock *peer_sk; + void *addr; + int addrlen; + } net; + }; + }; + struct { + struct aa_profile *profile; + const char *ns; + long int pos; + } iface; + struct { + const char *src_name; + const char *type; + const char *trans; + const char *data; + long unsigned int flags; + } mnt; }; - unsigned int fib6_nsiblings; - refcount_t fib6_ref; - long unsigned int 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 should_flush: 1; - u8 dst_nocount: 1; - u8 dst_nopolicy: 1; - u8 fib6_destroying: 1; - u8 offload: 1; - u8 trap: 1; - u8 unused: 2; - struct callback_head rcu; - struct nexthop *nh; - struct fib6_nh fib6_nh[0]; }; -struct uncached_list; - -struct rt6_info { - struct dst_entry dst; - struct fib6_info *from; - int sernum; - struct rt6key rt6i_dst; - struct rt6key rt6i_src; - struct in6_addr rt6i_gateway; - struct inet6_dev *rt6i_idev; - u32 rt6i_flags; - struct list_head rt6i_uncached; - struct uncached_list *rt6i_uncached_list; - short unsigned int rt6i_nfheader_len; +enum audit_type { + AUDIT_APPARMOR_AUDIT = 0, + AUDIT_APPARMOR_ALLOWED = 1, + AUDIT_APPARMOR_DENIED = 2, + AUDIT_APPARMOR_HINT = 3, + AUDIT_APPARMOR_STATUS = 4, + AUDIT_APPARMOR_ERROR = 5, + AUDIT_APPARMOR_KILL = 6, + AUDIT_APPARMOR_AUTO = 7, }; -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; - atomic_t fib_rt_uncache; +struct aa_audit_rule { + struct aa_label *label; }; -struct fib6_node { - struct fib6_node *parent; - struct fib6_node *left; - struct fib6_node *right; - struct fib6_node *subtree; - struct fib6_info *leaf; - __u16 fn_bit; - __u16 fn_flags; - int fn_sernum; - struct fib6_info *rr_ptr; - struct callback_head rcu; +struct audit_cache { + struct aa_profile *profile; + kernel_cap_t caps; }; -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 aa_task_ctx { + struct aa_label *nnp; + struct aa_label *onexec; + struct aa_label *previous; + u64 token; }; -typedef union { - __be32 a4; - __be32 a6[4]; - struct in6_addr in6; -} xfrm_address_t; +struct counted_str { + struct kref count; + char name[0]; +}; -struct xfrm_id { - xfrm_address_t daddr; - __be32 spi; - __u8 proto; +struct match_workbuf { + unsigned int count; + unsigned int pos; + unsigned int len; + unsigned int size; + unsigned int history[24]; }; -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; +enum path_flags { + PATH_IS_DIR = 1, + PATH_SOCK_COND = 2, + PATH_CONNECT_PATH = 4, + PATH_CHROOT_REL = 8, + PATH_CHROOT_NSCONNECT = 16, + PATH_DELEGATE_DELETED = 32768, + PATH_MEDIATE_DELETED = 65536, }; -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 aa_load_ent { + struct list_head list; + struct aa_profile *new; + struct aa_profile *old; + struct aa_profile *rename; + const char *ns_name; }; -struct xfrm_lifetime_cur { - __u64 bytes; - __u64 packets; - __u64 add_time; - __u64 use_time; +enum aa_code { + AA_U8 = 0, + AA_U16 = 1, + AA_U32 = 2, + AA_U64 = 3, + AA_NAME = 4, + AA_STRING = 5, + AA_BLOB = 6, + AA_STRUCT = 7, + AA_STRUCTEND = 8, + AA_LIST = 9, + AA_LISTEND = 10, + AA_ARRAY = 11, + AA_ARRAYEND = 12, }; -struct xfrm_replay_state { - __u32 oseq; - __u32 seq; - __u32 bitmap; +struct aa_ext { + void *start; + void *end; + void *pos; + u32 version; }; -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 aa_file_ctx { + spinlock_t lock; + struct aa_label *label; + u32 allow; }; -struct xfrm_algo { - char alg_name[64]; - unsigned int alg_key_len; - char alg_key[0]; +struct aa_sk_ctx { + struct aa_label *label; + struct aa_label *peer; + struct path path; }; -struct xfrm_algo_auth { - char alg_name[64]; - unsigned int alg_key_len; - unsigned int alg_trunc_len; - char alg_key[0]; +union aa_buffer { + struct list_head list; + char buffer[1]; }; -struct xfrm_algo_aead { - char alg_name[64]; - unsigned int alg_key_len; - unsigned int alg_icv_len; - char alg_key[0]; +struct ptrace_relation { + struct task_struct *tracer; + struct task_struct *tracee; + bool invalid; + struct list_head node; + struct callback_head rcu; }; -struct xfrm_stats { - __u32 replay_window; - __u32 replay; - __u32 integrity_failed; +struct access_report_info { + struct callback_head work; + const char *access; + struct task_struct *target; + struct task_struct *agent; }; -enum { - XFRM_POLICY_TYPE_MAIN = 0, - XFRM_POLICY_TYPE_SUB = 1, - XFRM_POLICY_TYPE_MAX = 2, - XFRM_POLICY_TYPE_ANY = 255, +enum sid_policy_type { + SIDPOL_DEFAULT = 0, + SIDPOL_CONSTRAINED = 1, + SIDPOL_ALLOWED = 2, }; -struct xfrm_encap_tmpl { - __u16 encap_type; - __be16 encap_sport; - __be16 encap_dport; - xfrm_address_t encap_oa; +typedef union { + kuid_t uid; + kgid_t gid; +} kid_t; + +enum setid_type { + UID = 0, + GID = 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_MAX = 32, +struct setid_rule { + struct hlist_node next; + kid_t src_id; + kid_t dst_id; + enum setid_type type; }; -struct xfrm_mark { - __u32 v; - __u32 m; +struct setid_ruleset { + struct hlist_head rules[256]; + char *policy_str; + struct callback_head rcu; + enum setid_type type; }; -struct xfrm_address_filter { - xfrm_address_t saddr; - xfrm_address_t daddr; - __u16 family; - __u8 splen; - __u8 dplen; +enum devcg_behavior { + DEVCG_DEFAULT_NONE = 0, + DEVCG_DEFAULT_ALLOW = 1, + DEVCG_DEFAULT_DENY = 2, }; -struct xfrm_state_walk { - struct list_head all; - u8 state; - u8 dying; - u8 proto; - u32 seq; - struct xfrm_address_filter *filter; +struct dev_exception_item { + u32 major; + u32 minor; + short int type; + short int access; + struct list_head list; + struct callback_head rcu; }; -struct xfrm_state_offload { - struct net_device *dev; - struct net_device *real_dev; - long unsigned int offload_handle; - unsigned int num_exthdrs; - u8 flags; +struct dev_cgroup { + struct cgroup_subsys_state css; + struct list_head exceptions; + enum devcg_behavior behavior; }; -struct xfrm_mode { - u8 encap; - u8 family; - u8 flags; +struct landlock_ruleset_attr { + __u64 handled_access_fs; }; -struct xfrm_replay; +enum landlock_rule_type { + LANDLOCK_RULE_PATH_BENEATH = 1, +}; -struct xfrm_type; +struct landlock_path_beneath_attr { + __u64 allowed_access; + __s32 parent_fd; +} __attribute__((packed)); -struct xfrm_type_offload; +typedef u16 access_mask_t; -struct xfrm_state { - possible_net_t xs_net; +struct landlock_hierarchy { + struct landlock_hierarchy *parent; + refcount_t usage; +}; + +struct landlock_ruleset { + struct rb_root root; + struct landlock_hierarchy *hierarchy; union { - struct hlist_node gclist; - struct hlist_node bydst; + struct work_struct work_free; + struct { + struct mutex lock; + refcount_t usage; + u32 num_rules; + u32 num_layers; + access_mask_t fs_access_masks[0]; + }; }; - struct hlist_node bysrc; - struct hlist_node byspi; - 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; - struct xfrm_encap_tmpl *encap; - struct sock *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; - const struct xfrm_replay *repl; - 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_state_offload xso; - long int 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_policy_walk_entry { - struct list_head all; - u8 dead; +struct landlock_cred_security { + struct landlock_ruleset *domain; }; -struct xfrm_policy_queue { - struct sk_buff_head hold_queue; - struct timer_list hold_timer; - long unsigned int timeout; +struct landlock_object; + +struct landlock_object_underops { + void (*release)(struct landlock_object * const); }; -struct xfrm_tmpl { - struct xfrm_id id; - xfrm_address_t saddr; - short unsigned int encap_family; - u32 reqid; - u8 mode; - u8 share; - u8 optional; - u8 allalgs; - u32 aalgos; - u32 ealgos; - u32 calgos; +struct landlock_object { + refcount_t usage; + spinlock_t lock; + void *underobj; + union { + struct callback_head rcu_free; + const struct landlock_object_underops *underops; + }; }; -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 landlock_layer { + u16 level; + access_mask_t access; }; -struct udp_hslot; +struct landlock_rule { + struct rb_node node; + struct landlock_object *object; + u32 num_layers; + struct landlock_layer layers[0]; +}; -struct udp_table { - struct udp_hslot *hash; - struct udp_hslot *hash2; - unsigned int mask; - unsigned int log; +typedef u16 layer_mask_t; + +struct landlock_inode_security { + struct landlock_object *object; }; -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; - long unsigned int 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; +struct landlock_superblock_security { + atomic_long_t inode_refs; }; -struct fib_nh_exception { - struct fib_nh_exception *fnhe_next; - int fnhe_genid; - __be32 fnhe_daddr; - u32 fnhe_pmtu; - bool fnhe_mtu_locked; - __be32 fnhe_gw; - long unsigned int fnhe_expires; - struct rtable *fnhe_rth_input; - struct rtable *fnhe_rth_output; - long unsigned int fnhe_stamp; - struct callback_head rcu; +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 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; +struct ima_digest_data { + u8 algo; + u8 length; union { - __be32 rt_gw4; - struct in6_addr rt_gw6; - }; - u32 rt_mtu_locked: 1; - u32 rt_pmtu: 31; - struct list_head rt_uncached; - struct uncached_list *rt_uncached_list; + struct { + u8 unused; + u8 type; + } sha1; + struct { + u8 type; + u8 algo; + } ng; + u8 data[2]; + } xattr; + u8 digest[0]; }; -struct fnhe_hash_bucket { - struct fib_nh_exception *chain; +struct integrity_iint_cache { + struct rb_node rb_node; + struct mutex mutex; + struct inode *inode; + u64 version; + long unsigned int flags; + long unsigned int measured_pcrs; + long unsigned int atomic_flags; + 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 rt6_exception_bucket { - struct hlist_head chain; - int depth; -}; +struct modsig; -struct xfrm_replay { - void (*advance)(struct xfrm_state *, __be32); - int (*check)(struct xfrm_state *, struct sk_buff *, __be32); - int (*recheck)(struct xfrm_state *, struct sk_buff *, __be32); - void (*notify)(struct xfrm_state *, int); - int (*overflow)(struct xfrm_state *, struct sk_buff *); +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; }; -struct xfrm_type { - char *description; - struct module *owner; - u8 proto; - u8 flags; - int (*init_state)(struct xfrm_state *); - 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 *); - int (*hdr_offset)(struct xfrm_state *, struct sk_buff *, u8 **); -}; +struct asymmetric_key_id; -struct xfrm_type_offload { - char *description; - 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 public_key_signature { + struct asymmetric_key_id *auth_ids[2]; + u8 *s; + u8 *digest; + u32 s_size; + u32 digest_size; + const char *pkey_algo; + const char *hash_algo; + const char *encoding; + const void *data; + unsigned int data_size; }; -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 asymmetric_key_id { + short unsigned int len; + unsigned char data[0]; }; -struct xfrm_offload { - struct { - __u32 low; - __u32 hi; - } seq; - __u32 flags; - __u32 status; - __u8 proto; +enum asymmetric_payload_bits { + asym_crypto = 0, + asym_subtype = 1, + asym_key_ids = 2, + asym_auth = 3, }; -struct sec_path { - int len; - int olen; - struct xfrm_state *xvec[6]; - struct xfrm_offload ovec[1]; +struct signature_v2_hdr { + uint8_t type; + uint8_t version; + uint8_t hash_algo; + __be32 keyid; + __be16 sig_size; + uint8_t sig[0]; +} __attribute__((packed)); + +typedef struct { + efi_guid_t signature_owner; + u8 signature_data[0]; +} efi_signature_data_t; + +typedef struct { + efi_guid_t signature_type; + u32 signature_list_size; + u32 signature_header_size; + u32 signature_size; + u8 signature_header[0]; +} efi_signature_list_t; + +typedef void (*efi_element_handler_t)(const char *, const void *, size_t); + +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 udp_hslot { - struct hlist_head head; - int count; - spinlock_t lock; +struct dmi_strmatch { + unsigned char slot: 7; + unsigned char exact_match: 1; + char substr[79]; }; -struct pkey_security_struct { - u64 subnet_prefix; - u16 pkey; - u32 sid; +struct dmi_system_id { + int (*callback)(const struct dmi_system_id *); + const char *ident; + struct dmi_strmatch matches[4]; + void *driver_data; }; -struct sel_ib_pkey_bkt { - int size; - struct list_head list; +struct efi_mokvar_table_entry { + char name[256]; + u64 data_size; + u8 data[0]; }; -struct sel_ib_pkey { - struct pkey_security_struct psec; - struct list_head list; - struct callback_head rcu; +struct evm_ima_xattr_data { + u8 type; + u8 data[0]; }; -struct smack_audit_data { - const char *function; - char *subject; - char *object; - char *request; - int result; +enum ima_show_type { + IMA_SHOW_BINARY = 0, + IMA_SHOW_BINARY_NO_FIELD_LEN = 1, + IMA_SHOW_BINARY_OLD_STRING_FMT = 2, + IMA_SHOW_ASCII = 3, }; -struct smack_known { - struct list_head list; - struct hlist_node smk_hashed; - char *smk_known; - u32 smk_secid; - struct netlbl_lsm_secattr smk_netlabel; - struct list_head smk_rules; - struct mutex smk_rules_lock; +struct ima_event_data { + struct integrity_iint_cache *iint; + struct file *file; + const unsigned char *filename; + struct evm_ima_xattr_data *xattr_value; + int xattr_len; + const struct modsig *modsig; + const char *violation; + const void *buf; + int buf_len; }; -struct superblock_smack { - struct smack_known *smk_root; - struct smack_known *smk_floor; - struct smack_known *smk_hat; - struct smack_known *smk_default; - int smk_flags; +struct ima_field_data { + u8 *data; + u32 len; }; -struct socket_smack { - struct smack_known *smk_out; - struct smack_known *smk_in; - struct smack_known *smk_packet; - int smk_state; +struct ima_template_field { + const char field_id[16]; + int (*field_init)(struct ima_event_data *, struct ima_field_data *); + void (*field_show)(struct seq_file *, enum ima_show_type, struct ima_field_data *); }; -struct inode_smack { - struct smack_known *smk_inode; - struct smack_known *smk_task; - struct smack_known *smk_mmap; - int smk_flags; +struct ima_template_desc { + struct list_head list; + char *name; + char *fmt; + int num_fields; + const struct ima_template_field **fields; }; -struct task_smack { - struct smack_known *smk_task; - struct smack_known *smk_forked; - struct list_head smk_rules; - struct mutex smk_rules_lock; - struct list_head smk_relabel; +struct ima_template_entry { + int pcr; + struct tpm_digest *digests; + struct ima_template_desc *template_desc; + u32 template_data_len; + struct ima_field_data template_data[0]; }; -struct smack_rule { - struct list_head list; - struct smack_known *smk_subject; - struct smack_known *smk_object; - int smk_access; +struct ima_queue_entry { + struct hlist_node hnext; + struct list_head later; + struct ima_template_entry *entry; }; -struct smk_net4addr { - struct list_head list; - struct in_addr smk_host; - struct in_addr smk_mask; - int smk_masks; - struct smack_known *smk_label; +struct ima_h_table { + atomic_long_t len; + atomic_long_t violations; + struct hlist_head queue[1024]; }; -struct smk_net6addr { - struct list_head list; - struct in6_addr smk_host; - struct in6_addr smk_mask; - int smk_masks; - struct smack_known *smk_label; +enum ima_fs_flags { + IMA_FS_BUSY = 0, }; -struct smack_known_list_elem { - struct list_head list; - struct smack_known *smk_label; +enum evm_ima_xattr_type { + IMA_XATTR_DIGEST = 1, + EVM_XATTR_HMAC = 2, + EVM_IMA_XATTR_DIGSIG = 3, + IMA_XATTR_DIGEST_NG = 4, + EVM_XATTR_PORTABLE_DIGSIG = 5, + IMA_XATTR_LAST = 6, }; -enum { - Opt_error___3 = 4294967295, - Opt_fsdefault = 0, - Opt_fsfloor = 1, - Opt_fshat = 2, - Opt_fsroot = 3, - Opt_fstransmute = 4, +enum ima_hooks { + NONE = 0, + FILE_CHECK = 1, + MMAP_CHECK = 2, + BPRM_CHECK = 3, + CREDS_CHECK = 4, + POST_SETATTR = 5, + MODULE_CHECK = 6, + FIRMWARE_CHECK = 7, + KEXEC_KERNEL_CHECK = 8, + KEXEC_INITRAMFS_CHECK = 9, + POLICY_CHECK = 10, + KEXEC_CMDLINE = 11, + KEY_CHECK = 12, + CRITICAL_DATA = 13, + SETXATTR_CHECK = 14, + MAX_CHECK = 15, }; -struct smk_audit_info { - struct common_audit_data a; - struct smack_audit_data sad; +enum tpm_pcrs { + TPM_PCR0 = 0, + TPM_PCR8 = 8, + TPM_PCR10 = 10, }; -struct smack_mnt_opts { - const char *fsdefault; - const char *fsfloor; - const char *fshat; - const char *fsroot; - const char *fstransmute; +struct ima_algo_desc { + struct crypto_shash *tfm; + enum hash_algo algo; }; -struct netlbl_audit { - struct lsmblob lsmdata; - kuid_t loginuid; - unsigned int sessionid; +enum lsm_rule_types { + LSM_OBJ_USER = 0, + LSM_OBJ_ROLE = 1, + LSM_OBJ_TYPE = 2, + LSM_SUBJ_USER = 3, + LSM_SUBJ_ROLE = 4, + LSM_SUBJ_TYPE = 5, }; -struct cipso_v4_std_map_tbl { - struct { - u32 *cipso; - u32 *local; - u32 cipso_size; - u32 local_size; - } lvl; - struct { - u32 *cipso; - u32 *local; - u32 cipso_size; - u32 local_size; - } cat; +enum policy_types { + ORIGINAL_TCB = 1, + DEFAULT_TCB = 2, }; -struct cipso_v4_doi { - u32 doi; - u32 type; - union { - struct cipso_v4_std_map_tbl *std; - } map; - u8 tags[5]; - refcount_t refcount; - struct list_head list; - struct callback_head rcu; +enum policy_rule_list { + IMA_DEFAULT_POLICY = 1, + IMA_CUSTOM_POLICY = 2, }; -enum smk_inos { - SMK_ROOT_INO = 2, - SMK_LOAD = 3, - SMK_CIPSO = 4, - SMK_DOI = 5, - SMK_DIRECT = 6, - SMK_AMBIENT = 7, - SMK_NET4ADDR = 8, - SMK_ONLYCAP = 9, - SMK_LOGGING = 10, - SMK_LOAD_SELF = 11, - SMK_ACCESSES = 12, - SMK_MAPPED = 13, - SMK_LOAD2 = 14, - SMK_LOAD_SELF2 = 15, - SMK_ACCESS2 = 16, - SMK_CIPSO2 = 17, - SMK_REVOKE_SUBJ = 18, - SMK_CHANGE_RULE = 19, - SMK_SYSLOG = 20, - SMK_PTRACE = 21, - SMK_NET6ADDR = 23, - SMK_RELABEL_SELF = 24, +struct ima_rule_opt_list { + size_t count; + char *items[0]; }; -struct smack_parsed_rule { - struct smack_known *smk_subject; - struct smack_known *smk_object; - int smk_access1; - int smk_access2; +struct ima_rule_entry { + struct list_head list; + int action; + unsigned int flags; + enum ima_hooks func; + int mask; + long unsigned int fsmagic; + uuid_t fsuuid; + kuid_t uid; + kuid_t fowner; + bool (*uid_op)(kuid_t, kuid_t); + bool (*fowner_op)(kuid_t, kuid_t); + int pcr; + unsigned int allowed_algos; + struct { + void *rules[4]; + char *args_p; + int type; + } lsm[6]; + char *fsname; + struct ima_rule_opt_list *keyrings; + struct ima_rule_opt_list *label; + struct ima_template_desc *template; }; -struct sockaddr_un { - __kernel_sa_family_t sun_family; - char sun_path[108]; +enum { + Opt_measure = 0, + Opt_dont_measure = 1, + Opt_appraise = 2, + Opt_dont_appraise = 3, + Opt_audit = 4, + Opt_hash___3 = 5, + Opt_dont_hash = 6, + Opt_obj_user = 7, + Opt_obj_role = 8, + Opt_obj_type = 9, + Opt_subj_user = 10, + Opt_subj_role = 11, + Opt_subj_type = 12, + Opt_func = 13, + Opt_mask = 14, + Opt_fsmagic = 15, + Opt_fsname = 16, + Opt_fsuuid = 17, + Opt_uid_eq = 18, + Opt_euid_eq = 19, + Opt_fowner_eq = 20, + Opt_uid_gt = 21, + Opt_euid_gt = 22, + Opt_fowner_gt = 23, + Opt_uid_lt = 24, + Opt_euid_lt = 25, + Opt_fowner_lt = 26, + Opt_appraise_type = 27, + Opt_appraise_flag = 28, + Opt_appraise_algos = 29, + Opt_permit_directio = 30, + Opt_pcr = 31, + Opt_template = 32, + Opt_keyrings = 33, + Opt_label = 34, + Opt_err___10 = 35, }; -struct unix_address { - refcount_t refcnt; - int len; - unsigned int hash; - struct sockaddr_un name[0]; +struct ima_kexec_hdr { + u16 version; + u16 _reserved0; + u32 _reserved1; + u64 buffer_size; + u64 count; }; -struct scm_stat { - atomic_t nr_fds; +enum header_fields { + HDR_PCR = 0, + HDR_DIGEST = 1, + HDR_TEMPLATE_NAME = 2, + HDR_TEMPLATE_DATA = 3, + HDR__LAST = 4, }; -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; - atomic_long_t inflight; - spinlock_t lock; - long unsigned int gc_flags; - struct socket_wq peer_wq; - wait_queue_entry_t peer_wake; - struct scm_stat scm_stat; - long: 32; - long: 64; - long: 64; +enum data_formats { + DATA_FMT_DIGEST = 0, + DATA_FMT_DIGEST_WITH_ALGO = 1, + DATA_FMT_STRING = 2, + DATA_FMT_HEX = 3, + DATA_FMT_UINT = 4, }; -enum tomoyo_conditions_index { - TOMOYO_TASK_UID = 0, - TOMOYO_TASK_EUID = 1, - TOMOYO_TASK_SUID = 2, - TOMOYO_TASK_FSUID = 3, - TOMOYO_TASK_GID = 4, - TOMOYO_TASK_EGID = 5, - TOMOYO_TASK_SGID = 6, - TOMOYO_TASK_FSGID = 7, - TOMOYO_TASK_PID = 8, - TOMOYO_TASK_PPID = 9, - TOMOYO_EXEC_ARGC = 10, - TOMOYO_EXEC_ENVC = 11, - TOMOYO_TYPE_IS_SOCKET = 12, - TOMOYO_TYPE_IS_SYMLINK = 13, - TOMOYO_TYPE_IS_FILE = 14, - TOMOYO_TYPE_IS_BLOCK_DEV = 15, - TOMOYO_TYPE_IS_DIRECTORY = 16, - TOMOYO_TYPE_IS_CHAR_DEV = 17, - TOMOYO_TYPE_IS_FIFO = 18, - TOMOYO_MODE_SETUID = 19, - TOMOYO_MODE_SETGID = 20, - TOMOYO_MODE_STICKY = 21, - TOMOYO_MODE_OWNER_READ = 22, - TOMOYO_MODE_OWNER_WRITE = 23, - TOMOYO_MODE_OWNER_EXECUTE = 24, - TOMOYO_MODE_GROUP_READ = 25, - TOMOYO_MODE_GROUP_WRITE = 26, - TOMOYO_MODE_GROUP_EXECUTE = 27, - TOMOYO_MODE_OTHERS_READ = 28, - TOMOYO_MODE_OTHERS_WRITE = 29, - TOMOYO_MODE_OTHERS_EXECUTE = 30, - TOMOYO_EXEC_REALPATH = 31, - TOMOYO_SYMLINK_TARGET = 32, - TOMOYO_PATH1_UID = 33, - TOMOYO_PATH1_GID = 34, - TOMOYO_PATH1_INO = 35, - TOMOYO_PATH1_MAJOR = 36, - TOMOYO_PATH1_MINOR = 37, - TOMOYO_PATH1_PERM = 38, - TOMOYO_PATH1_TYPE = 39, - TOMOYO_PATH1_DEV_MAJOR = 40, - TOMOYO_PATH1_DEV_MINOR = 41, - TOMOYO_PATH2_UID = 42, - TOMOYO_PATH2_GID = 43, - TOMOYO_PATH2_INO = 44, - TOMOYO_PATH2_MAJOR = 45, - TOMOYO_PATH2_MINOR = 46, - TOMOYO_PATH2_PERM = 47, - TOMOYO_PATH2_TYPE = 48, - TOMOYO_PATH2_DEV_MAJOR = 49, - TOMOYO_PATH2_DEV_MINOR = 50, - TOMOYO_PATH1_PARENT_UID = 51, - TOMOYO_PATH1_PARENT_GID = 52, - TOMOYO_PATH1_PARENT_INO = 53, - TOMOYO_PATH1_PARENT_PERM = 54, - TOMOYO_PATH2_PARENT_UID = 55, - TOMOYO_PATH2_PARENT_GID = 56, - TOMOYO_PATH2_PARENT_INO = 57, - TOMOYO_PATH2_PARENT_PERM = 58, - TOMOYO_MAX_CONDITION_KEYWORD = 59, - TOMOYO_NUMBER_UNION = 60, - TOMOYO_NAME_UNION = 61, - TOMOYO_ARGV_ENTRY = 62, - TOMOYO_ENVP_ENTRY = 63, +struct modsig { + struct pkcs7_message *pkcs7_msg; + enum hash_algo hash_algo; + const u8 *digest; + u32 digest_size; + int raw_pkcs7_len; + u8 raw_pkcs7[0]; }; -enum tomoyo_path_stat_index { - TOMOYO_PATH1 = 0, - TOMOYO_PATH1_PARENT = 1, - TOMOYO_PATH2 = 2, - TOMOYO_PATH2_PARENT = 3, - TOMOYO_MAX_PATH_STAT = 4, +struct ima_key_entry { + struct list_head list; + void *payload; + size_t payload_len; + char *keyring_name; }; -enum tomoyo_mode_index { - TOMOYO_CONFIG_DISABLED = 0, - TOMOYO_CONFIG_LEARNING = 1, - TOMOYO_CONFIG_PERMISSIVE = 2, - TOMOYO_CONFIG_ENFORCING = 3, - TOMOYO_CONFIG_MAX_MODE = 4, - TOMOYO_CONFIG_WANT_REJECT_LOG = 64, - TOMOYO_CONFIG_WANT_GRANT_LOG = 128, - TOMOYO_CONFIG_USE_DEFAULT = 255, +struct evm_xattr { + struct evm_ima_xattr_data data; + u8 digest[20]; }; -enum tomoyo_policy_id { - TOMOYO_ID_GROUP = 0, - TOMOYO_ID_ADDRESS_GROUP = 1, - TOMOYO_ID_PATH_GROUP = 2, - TOMOYO_ID_NUMBER_GROUP = 3, - TOMOYO_ID_TRANSITION_CONTROL = 4, - TOMOYO_ID_AGGREGATOR = 5, - TOMOYO_ID_MANAGER = 6, - TOMOYO_ID_CONDITION = 7, - TOMOYO_ID_NAME = 8, - TOMOYO_ID_ACL = 9, - TOMOYO_ID_DOMAIN = 10, - TOMOYO_MAX_POLICY = 11, +struct xattr_list { + struct list_head list; + char *name; + bool enabled; }; -enum tomoyo_domain_info_flags_index { - TOMOYO_DIF_QUOTA_WARNED = 0, - TOMOYO_DIF_TRANSITION_FAILED = 1, - TOMOYO_MAX_DOMAIN_INFO_FLAGS = 2, +struct evm_digest { + struct ima_digest_data hdr; + char digest[64]; }; -enum tomoyo_grant_log { - TOMOYO_GRANTLOG_AUTO = 0, - TOMOYO_GRANTLOG_NO = 1, - TOMOYO_GRANTLOG_YES = 2, +struct h_misc { + long unsigned int ino; + __u32 generation; + uid_t uid; + gid_t gid; + umode_t mode; }; -enum tomoyo_group_id { - TOMOYO_PATH_GROUP = 0, - TOMOYO_NUMBER_GROUP = 1, - TOMOYO_ADDRESS_GROUP = 2, - TOMOYO_MAX_GROUP = 3, +enum { + CRYPTO_MSG_ALG_REQUEST = 0, + CRYPTO_MSG_ALG_REGISTER = 1, + CRYPTO_MSG_ALG_LOADED = 2, }; -enum tomoyo_path_acl_index { - TOMOYO_TYPE_EXECUTE = 0, - TOMOYO_TYPE_READ = 1, - TOMOYO_TYPE_WRITE = 2, - TOMOYO_TYPE_APPEND = 3, - TOMOYO_TYPE_UNLINK = 4, - TOMOYO_TYPE_GETATTR = 5, - TOMOYO_TYPE_RMDIR = 6, - TOMOYO_TYPE_TRUNCATE = 7, - TOMOYO_TYPE_SYMLINK = 8, - TOMOYO_TYPE_CHROOT = 9, - TOMOYO_TYPE_UMOUNT = 10, - TOMOYO_MAX_PATH_OPERATION = 11, +struct crypto_larval { + struct crypto_alg alg; + struct crypto_alg *adult; + struct completion completion; + u32 mask; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; -enum tomoyo_memory_stat_type { - TOMOYO_MEMORY_POLICY = 0, - TOMOYO_MEMORY_AUDIT = 1, - TOMOYO_MEMORY_QUERY = 2, - TOMOYO_MAX_MEMORY_STAT = 3, +struct crypto_cipher { + struct crypto_tfm base; }; -enum tomoyo_mkdev_acl_index { - TOMOYO_TYPE_MKBLOCK = 0, - TOMOYO_TYPE_MKCHAR = 1, - TOMOYO_MAX_MKDEV_OPERATION = 2, +struct rtattr { + short unsigned int rta_len; + short unsigned int rta_type; }; -enum tomoyo_network_acl_index { - TOMOYO_NETWORK_BIND = 0, - TOMOYO_NETWORK_LISTEN = 1, - TOMOYO_NETWORK_CONNECT = 2, - TOMOYO_NETWORK_SEND = 3, - TOMOYO_MAX_NETWORK_OPERATION = 4, +struct crypto_queue { + struct list_head list; + struct list_head *backlog; + unsigned int qlen; + unsigned int max_qlen; }; -enum tomoyo_path2_acl_index { - TOMOYO_TYPE_LINK = 0, - TOMOYO_TYPE_RENAME = 1, - TOMOYO_TYPE_PIVOT_ROOT = 2, - TOMOYO_MAX_PATH2_OPERATION = 3, +struct crypto_attr_alg { + char name[128]; }; -enum tomoyo_path_number_acl_index { - TOMOYO_TYPE_CREATE = 0, - TOMOYO_TYPE_MKDIR = 1, - TOMOYO_TYPE_MKFIFO = 2, - TOMOYO_TYPE_MKSOCK = 3, - TOMOYO_TYPE_IOCTL = 4, - TOMOYO_TYPE_CHMOD = 5, - TOMOYO_TYPE_CHOWN = 6, - TOMOYO_TYPE_CHGRP = 7, - TOMOYO_MAX_PATH_NUMBER_OPERATION = 8, +struct crypto_attr_type { + u32 type; + u32 mask; }; -enum tomoyo_securityfs_interface_index { - TOMOYO_DOMAINPOLICY = 0, - TOMOYO_EXCEPTIONPOLICY = 1, - TOMOYO_PROCESS_STATUS = 2, - TOMOYO_STAT = 3, - TOMOYO_AUDIT = 4, - TOMOYO_VERSION = 5, - TOMOYO_PROFILE = 6, - TOMOYO_QUERY = 7, - TOMOYO_MANAGER = 8, +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 tomoyo_mac_index { - TOMOYO_MAC_FILE_EXECUTE = 0, - TOMOYO_MAC_FILE_OPEN = 1, - TOMOYO_MAC_FILE_CREATE = 2, - TOMOYO_MAC_FILE_UNLINK = 3, - TOMOYO_MAC_FILE_GETATTR = 4, - TOMOYO_MAC_FILE_MKDIR = 5, - TOMOYO_MAC_FILE_RMDIR = 6, - TOMOYO_MAC_FILE_MKFIFO = 7, - TOMOYO_MAC_FILE_MKSOCK = 8, - TOMOYO_MAC_FILE_TRUNCATE = 9, - TOMOYO_MAC_FILE_SYMLINK = 10, - TOMOYO_MAC_FILE_MKBLOCK = 11, - TOMOYO_MAC_FILE_MKCHAR = 12, - TOMOYO_MAC_FILE_LINK = 13, - TOMOYO_MAC_FILE_RENAME = 14, - TOMOYO_MAC_FILE_CHMOD = 15, - TOMOYO_MAC_FILE_CHOWN = 16, - TOMOYO_MAC_FILE_CHGRP = 17, - TOMOYO_MAC_FILE_IOCTL = 18, - TOMOYO_MAC_FILE_CHROOT = 19, - TOMOYO_MAC_FILE_MOUNT = 20, - TOMOYO_MAC_FILE_UMOUNT = 21, - TOMOYO_MAC_FILE_PIVOT_ROOT = 22, - TOMOYO_MAC_NETWORK_INET_STREAM_BIND = 23, - TOMOYO_MAC_NETWORK_INET_STREAM_LISTEN = 24, - TOMOYO_MAC_NETWORK_INET_STREAM_CONNECT = 25, - TOMOYO_MAC_NETWORK_INET_DGRAM_BIND = 26, - TOMOYO_MAC_NETWORK_INET_DGRAM_SEND = 27, - TOMOYO_MAC_NETWORK_INET_RAW_BIND = 28, - TOMOYO_MAC_NETWORK_INET_RAW_SEND = 29, - TOMOYO_MAC_NETWORK_UNIX_STREAM_BIND = 30, - TOMOYO_MAC_NETWORK_UNIX_STREAM_LISTEN = 31, - TOMOYO_MAC_NETWORK_UNIX_STREAM_CONNECT = 32, - TOMOYO_MAC_NETWORK_UNIX_DGRAM_BIND = 33, - TOMOYO_MAC_NETWORK_UNIX_DGRAM_SEND = 34, - TOMOYO_MAC_NETWORK_UNIX_SEQPACKET_BIND = 35, - TOMOYO_MAC_NETWORK_UNIX_SEQPACKET_LISTEN = 36, - TOMOYO_MAC_NETWORK_UNIX_SEQPACKET_CONNECT = 37, - TOMOYO_MAC_ENVIRON = 38, - TOMOYO_MAX_MAC_INDEX = 39, +enum xps_map_type { + XPS_CPUS = 0, + XPS_RXQS = 1, + XPS_MAPS_MAX = 2, }; -enum tomoyo_mac_category_index { - TOMOYO_MAC_CATEGORY_FILE = 0, - TOMOYO_MAC_CATEGORY_NETWORK = 1, - TOMOYO_MAC_CATEGORY_MISC = 2, - TOMOYO_MAX_MAC_CATEGORY_INDEX = 3, +enum bpf_xdp_mode { + XDP_MODE_SKB = 0, + XDP_MODE_DRV = 1, + XDP_MODE_HW = 2, + __MAX_XDP_MODE = 3, }; -enum tomoyo_pref_index { - TOMOYO_PREF_MAX_AUDIT_LOG = 0, - TOMOYO_PREF_MAX_LEARNING_ENTRY = 1, - TOMOYO_MAX_PREF = 2, +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, }; -struct tomoyo_shared_acl_head { - struct list_head list; - atomic_t users; -} __attribute__((packed)); +enum { + CRYPTOA_UNSPEC = 0, + CRYPTOA_ALG = 1, + CRYPTOA_TYPE = 2, + __CRYPTOA_MAX = 3, +}; -struct tomoyo_path_info { - const char *name; - u32 hash; - u16 const_len; - bool is_dir; - bool is_patterned; +struct scatter_walk { + struct scatterlist *sg; + unsigned int offset; }; -struct tomoyo_obj_info; +struct aead_request { + struct crypto_async_request base; + unsigned int assoclen; + unsigned int cryptlen; + u8 *iv; + struct scatterlist *src; + struct scatterlist *dst; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + void *__ctx[0]; +}; -struct tomoyo_execve; +struct crypto_aead; -struct tomoyo_domain_info; +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; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + struct crypto_alg base; +}; -struct tomoyo_acl_info; +struct crypto_aead { + unsigned int authsize; + unsigned int reqsize; + long: 64; + long: 64; + long: 64; + 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 crypto_tfm base; +}; -struct tomoyo_request_info { - struct tomoyo_obj_info *obj; - struct tomoyo_execve *ee; - struct tomoyo_domain_info *domain; +struct aead_instance { + void (*free)(struct aead_instance *); + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; union { struct { - const struct tomoyo_path_info *filename; - const struct tomoyo_path_info *matched_path; - u8 operation; - } path; - struct { - const struct tomoyo_path_info *filename1; - const struct tomoyo_path_info *filename2; - u8 operation; - } path2; - struct { - const struct tomoyo_path_info *filename; - unsigned int mode; - unsigned int major; - unsigned int minor; - u8 operation; - } mkdev; - struct { - const struct tomoyo_path_info *filename; - long unsigned int number; - u8 operation; - } path_number; - struct { - const struct tomoyo_path_info *name; - } environ; - struct { - const __be32 *address; - u16 port; - u8 protocol; - u8 operation; - bool is_ipv6; - } inet_network; - struct { - const struct tomoyo_path_info *address; - u8 protocol; - u8 operation; - } unix_network; - struct { - const struct tomoyo_path_info *type; - const struct tomoyo_path_info *dir; - const struct tomoyo_path_info *dev; - long unsigned int flags; - int need_dev; - } mount; - struct { - const struct tomoyo_path_info *domainname; - } task; - } param; - struct tomoyo_acl_info *matched_acl; - u8 param_type; - bool granted; - u8 retry; - u8 profile; - u8 mode; - u8 type; -}; - -struct tomoyo_mini_stat { - kuid_t uid; - kgid_t gid; - ino_t ino; - umode_t mode; - dev_t dev; - dev_t rdev; + char head[128]; + struct crypto_instance base; + } s; + struct aead_alg alg; + }; }; -struct tomoyo_obj_info { - bool validate_done; - bool stat_valid[4]; - struct path path1; - struct path path2; - struct tomoyo_mini_stat stat[4]; - struct tomoyo_path_info *symlink_target; +struct crypto_aead_spawn { + struct crypto_spawn base; }; -struct tomoyo_page_dump { - struct page *page; - char *data; +enum crypto_attr_type_t { + CRYPTOCFGA_UNSPEC = 0, + CRYPTOCFGA_PRIORITY_VAL = 1, + CRYPTOCFGA_REPORT_LARVAL = 2, + CRYPTOCFGA_REPORT_HASH = 3, + CRYPTOCFGA_REPORT_BLKCIPHER = 4, + CRYPTOCFGA_REPORT_AEAD = 5, + CRYPTOCFGA_REPORT_COMPRESS = 6, + CRYPTOCFGA_REPORT_RNG = 7, + CRYPTOCFGA_REPORT_CIPHER = 8, + CRYPTOCFGA_REPORT_AKCIPHER = 9, + CRYPTOCFGA_REPORT_KPP = 10, + CRYPTOCFGA_REPORT_ACOMP = 11, + CRYPTOCFGA_STAT_LARVAL = 12, + CRYPTOCFGA_STAT_HASH = 13, + CRYPTOCFGA_STAT_BLKCIPHER = 14, + CRYPTOCFGA_STAT_AEAD = 15, + CRYPTOCFGA_STAT_COMPRESS = 16, + CRYPTOCFGA_STAT_RNG = 17, + CRYPTOCFGA_STAT_CIPHER = 18, + CRYPTOCFGA_STAT_AKCIPHER = 19, + CRYPTOCFGA_STAT_KPP = 20, + CRYPTOCFGA_STAT_ACOMP = 21, + __CRYPTOCFGA_MAX = 22, }; -struct tomoyo_execve { - struct tomoyo_request_info r; - struct tomoyo_obj_info obj; - struct linux_binprm *bprm; - const struct tomoyo_path_info *transition; - struct tomoyo_page_dump dump; - char *tmp; +struct crypto_report_aead { + char type[64]; + char geniv[64]; + unsigned int blocksize; + unsigned int maxauthsize; + unsigned int ivsize; }; -struct tomoyo_policy_namespace; +struct crypto_sync_skcipher; -struct tomoyo_domain_info { - struct list_head list; - struct list_head acl_info_list; - const struct tomoyo_path_info *domainname; - struct tomoyo_policy_namespace *ns; - long unsigned int group[4]; - u8 profile; - bool is_deleted; - bool flags[2]; - atomic_t users; +struct aead_geniv_ctx { + spinlock_t lock; + struct crypto_aead *child; + struct crypto_sync_skcipher *sknull; + u8 salt[0]; }; -struct tomoyo_condition; - -struct tomoyo_acl_info { - struct list_head list; - struct tomoyo_condition *cond; - s8 is_deleted; - u8 type; -} __attribute__((packed)); +struct crypto_rng; -struct tomoyo_condition { - struct tomoyo_shared_acl_head head; - u32 size; - u16 condc; - u16 numbers_count; - u16 names_count; - u16 argc; - u16 envc; - u8 grant_log; - const struct tomoyo_path_info *transit; +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; + 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 crypto_alg base; }; -struct tomoyo_profile; - -struct tomoyo_policy_namespace { - struct tomoyo_profile *profile_ptr[256]; - struct list_head group_list[3]; - struct list_head policy_list[11]; - struct list_head acl_group[256]; - struct list_head namespace_list; - unsigned int profile_version; - const char *name; +struct crypto_rng { + struct crypto_tfm base; }; -struct tomoyo_io_buffer { - void (*read)(struct tomoyo_io_buffer *); - int (*write)(struct tomoyo_io_buffer *); - __poll_t (*poll)(struct file *, poll_table *); - struct mutex io_sem; - char *read_user_buf; - size_t read_user_buf_avail; - struct { - struct list_head *ns; - struct list_head *domain; - struct list_head *group; - struct list_head *acl; - size_t avail; - unsigned int step; - unsigned int query_index; - u16 index; - u16 cond_index; - u8 acl_group_index; - u8 cond_step; - u8 bit; - u8 w_pos; - bool eof; - bool print_this_domain_only; - bool print_transition_related_only; - bool print_cond_part; - const char *w[64]; - } r; - struct { - struct tomoyo_policy_namespace *ns; - struct tomoyo_domain_info *domain; - size_t avail; - bool is_delete; - } w; - char *read_buf; - size_t readbuf_size; - char *write_buf; - size_t writebuf_size; - enum tomoyo_securityfs_interface_index type; - u8 users; - struct list_head list; +struct crypto_cipher_spawn { + struct crypto_spawn base; }; -struct tomoyo_preference { - unsigned int learning_max_entry; - bool enforcing_verbose; - bool learning_verbose; - bool permissive_verbose; +struct crypto_sync_skcipher { + struct crypto_skcipher base; }; -struct tomoyo_profile { - const struct tomoyo_path_info *comment; - struct tomoyo_preference *learning; - struct tomoyo_preference *permissive; - struct tomoyo_preference *enforcing; - struct tomoyo_preference preference; - u8 default_config; - u8 config[42]; - unsigned int pref[2]; +struct skcipher_instance { + void (*free)(struct skcipher_instance *); + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + union { + struct { + char head[128]; + struct crypto_instance base; + } s; + struct skcipher_alg alg; + }; }; -struct tomoyo_time { - u16 year; - u8 month; - u8 day; - u8 hour; - u8 min; - u8 sec; +struct crypto_skcipher_spawn { + struct crypto_spawn base; }; -struct tomoyo_log { - struct list_head list; - char *log; - int size; +struct skcipher_walk { + union { + struct { + struct page *page; + long unsigned int offset; + } phys; + struct { + u8 *page; + void *addr; + } virt; + } src; + union { + struct { + struct page *page; + long unsigned int 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; }; -enum tomoyo_value_type { - TOMOYO_VALUE_TYPE_INVALID = 0, - TOMOYO_VALUE_TYPE_DECIMAL = 1, - TOMOYO_VALUE_TYPE_OCTAL = 2, - TOMOYO_VALUE_TYPE_HEXADECIMAL = 3, +struct skcipher_ctx_simple { + struct crypto_cipher *cipher; }; -enum tomoyo_transition_type { - TOMOYO_TRANSITION_CONTROL_NO_RESET = 0, - TOMOYO_TRANSITION_CONTROL_RESET = 1, - TOMOYO_TRANSITION_CONTROL_NO_INITIALIZE = 2, - TOMOYO_TRANSITION_CONTROL_INITIALIZE = 3, - TOMOYO_TRANSITION_CONTROL_NO_KEEP = 4, - TOMOYO_TRANSITION_CONTROL_KEEP = 5, - TOMOYO_MAX_TRANSITION_TYPE = 6, +struct crypto_report_blkcipher { + char type[64]; + char geniv[64]; + unsigned int blocksize; + unsigned int min_keysize; + unsigned int max_keysize; + unsigned int ivsize; }; -enum tomoyo_acl_entry_type_index { - TOMOYO_TYPE_PATH_ACL = 0, - TOMOYO_TYPE_PATH2_ACL = 1, - TOMOYO_TYPE_PATH_NUMBER_ACL = 2, - TOMOYO_TYPE_MKDEV_ACL = 3, - TOMOYO_TYPE_MOUNT_ACL = 4, - TOMOYO_TYPE_INET_ACL = 5, - TOMOYO_TYPE_UNIX_ACL = 6, - TOMOYO_TYPE_ENV_ACL = 7, - TOMOYO_TYPE_MANUAL_TASK_ACL = 8, +enum { + SKCIPHER_WALK_PHYS = 1, + SKCIPHER_WALK_SLOW = 2, + SKCIPHER_WALK_COPY = 4, + SKCIPHER_WALK_DIFF = 8, + SKCIPHER_WALK_SLEEP = 16, }; -enum tomoyo_policy_stat_type { - TOMOYO_STAT_POLICY_UPDATES = 0, - TOMOYO_STAT_POLICY_LEARNING = 1, - TOMOYO_STAT_POLICY_PERMISSIVE = 2, - TOMOYO_STAT_POLICY_ENFORCING = 3, - TOMOYO_MAX_POLICY_STAT = 4, +struct skcipher_walk_buffer { + struct list_head entry; + struct scatter_walk dst; + unsigned int len; + u8 *data; + u8 buffer[0]; }; -struct tomoyo_acl_head { - struct list_head list; - s8 is_deleted; -} __attribute__((packed)); - -struct tomoyo_name { - struct tomoyo_shared_acl_head head; - struct tomoyo_path_info entry; +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 *); + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + struct hash_alg_common halg; }; -struct tomoyo_group; +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 tomoyo_name_union { - const struct tomoyo_path_info *filename; - struct tomoyo_group *group; +struct ahash_instance { + void (*free)(struct ahash_instance *); + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + union { + struct { + char head[256]; + struct crypto_instance base; + } s; + struct ahash_alg alg; + }; }; -struct tomoyo_group { - struct tomoyo_shared_acl_head head; - const struct tomoyo_path_info *group_name; - struct list_head member_list; +struct crypto_ahash_spawn { + struct crypto_spawn base; }; -struct tomoyo_number_union { - long unsigned int values[2]; - struct tomoyo_group *group; - u8 value_type[2]; +struct crypto_report_hash { + char type[64]; + unsigned int blocksize; + unsigned int digestsize; }; -struct tomoyo_ipaddr_union { - struct in6_addr ip[2]; - struct tomoyo_group *group; - bool is_ipv6; +struct ahash_request_priv { + crypto_completion_t complete; + void *data; + u8 *result; + u32 flags; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + void *ubuf[0]; }; -struct tomoyo_path_group { - struct tomoyo_acl_head head; - const struct tomoyo_path_info *member_name; +struct shash_instance { + void (*free)(struct shash_instance *); + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + union { + struct { + char head[256]; + struct crypto_instance base; + } s; + struct shash_alg alg; + }; }; -struct tomoyo_number_group { - struct tomoyo_acl_head head; - struct tomoyo_number_union number; +struct crypto_shash_spawn { + struct crypto_spawn base; }; -struct tomoyo_address_group { - struct tomoyo_acl_head head; - struct tomoyo_ipaddr_union address; +struct crypto_report_akcipher { + char type[64]; }; -struct tomoyo_argv { - long unsigned int index; - const struct tomoyo_path_info *value; - bool is_not; +struct akcipher_request { + struct crypto_async_request base; + struct scatterlist *src; + struct scatterlist *dst; + unsigned int src_len; + unsigned int dst_len; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + void *__ctx[0]; }; -struct tomoyo_envp { - const struct tomoyo_path_info *name; - const struct tomoyo_path_info *value; - bool is_not; +struct crypto_akcipher { + struct crypto_tfm base; }; -struct tomoyo_condition_element { - u8 left; - u8 right; - bool equals; +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 *); + unsigned int reqsize; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + struct crypto_alg base; }; -struct tomoyo_task_acl { - struct tomoyo_acl_info head; - const struct tomoyo_path_info *domainname; +struct akcipher_instance { + void (*free)(struct akcipher_instance *); + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + union { + struct { + char head[128]; + struct crypto_instance base; + } s; + struct akcipher_alg alg; + }; }; -struct tomoyo_path_acl { - struct tomoyo_acl_info head; - u16 perm; - struct tomoyo_name_union name; +struct crypto_akcipher_spawn { + struct crypto_spawn base; }; -struct tomoyo_path_number_acl { - struct tomoyo_acl_info head; - u8 perm; - struct tomoyo_name_union name; - struct tomoyo_number_union number; +struct crypto_report_kpp { + char type[64]; }; -struct tomoyo_mkdev_acl { - struct tomoyo_acl_info head; - u8 perm; - struct tomoyo_name_union name; - struct tomoyo_number_union mode; - struct tomoyo_number_union major; - struct tomoyo_number_union minor; +typedef long unsigned int mpi_limb_t; + +struct gcry_mpi { + int alloced; + int nlimbs; + int nbits; + int sign; + unsigned int flags; + mpi_limb_t *d; }; -struct tomoyo_path2_acl { - struct tomoyo_acl_info head; - u8 perm; - struct tomoyo_name_union name1; - struct tomoyo_name_union name2; +typedef struct gcry_mpi *MPI; + +struct dh_ctx { + MPI p; + MPI q; + MPI g; + MPI xa; }; -struct tomoyo_mount_acl { - struct tomoyo_acl_info head; - struct tomoyo_name_union dev_name; - struct tomoyo_name_union dir_name; - struct tomoyo_name_union fs_type; - struct tomoyo_number_union flags; +enum { + CRYPTO_KPP_SECRET_TYPE_UNKNOWN = 0, + CRYPTO_KPP_SECRET_TYPE_DH = 1, + CRYPTO_KPP_SECRET_TYPE_ECDH = 2, }; -struct tomoyo_env_acl { - struct tomoyo_acl_info head; - const struct tomoyo_path_info *env; +struct kpp_secret { + short unsigned int type; + short unsigned int len; }; -struct tomoyo_inet_acl { - struct tomoyo_acl_info head; - u8 protocol; - u8 perm; - struct tomoyo_ipaddr_union address; - struct tomoyo_number_union port; +enum rsapubkey_actions { + ACT_rsa_get_e = 0, + ACT_rsa_get_n = 1, + NR__rsapubkey_actions = 2, }; -struct tomoyo_unix_acl { - struct tomoyo_acl_info head; - u8 protocol; - u8 perm; - struct tomoyo_name_union name; +enum rsaprivkey_actions { + ACT_rsa_get_d = 0, + ACT_rsa_get_dp = 1, + ACT_rsa_get_dq = 2, + ACT_rsa_get_e___2 = 3, + ACT_rsa_get_n___2 = 4, + ACT_rsa_get_p = 5, + ACT_rsa_get_q = 6, + ACT_rsa_get_qinv = 7, + NR__rsaprivkey_actions = 8, }; -struct tomoyo_acl_param { - char *data; - struct list_head *list; - struct tomoyo_policy_namespace *ns; - bool is_delete; +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 tomoyo_transition_control { - struct tomoyo_acl_head head; - u8 type; - bool is_last_name; - const struct tomoyo_path_info *domainname; - const struct tomoyo_path_info *program; +struct rsa_mpi_key { + MPI n; + MPI e; + MPI d; }; -struct tomoyo_aggregator { - struct tomoyo_acl_head head; - const struct tomoyo_path_info *original_name; - const struct tomoyo_path_info *aggregated_name; +struct asn1_decoder; + +struct rsa_asn1_template { + const char *name; + const u8 *data; + size_t size; }; -struct tomoyo_manager { - struct tomoyo_acl_head head; - const struct tomoyo_path_info *manager; +struct pkcs1pad_ctx { + struct crypto_akcipher *child; + unsigned int key_size; }; -struct tomoyo_task { - struct tomoyo_domain_info *domain_info; - struct tomoyo_domain_info *old_domain_info; +struct pkcs1pad_inst_ctx { + struct crypto_akcipher_spawn spawn; + const struct rsa_asn1_template *digest_info; }; -struct tomoyo_query { - struct list_head list; - struct tomoyo_domain_info *domain; - char *query; - size_t query_len; - unsigned int serial; - u8 timer; - u8 answer; - u8 retry; +struct pkcs1pad_request { + struct scatterlist in_sg[2]; + struct scatterlist out_sg[1]; + uint8_t *in_buf; + uint8_t *out_buf; + long: 64; + long: 64; + struct akcipher_request child_req; }; -enum tomoyo_special_mount { - TOMOYO_MOUNT_BIND = 0, - TOMOYO_MOUNT_MOVE = 1, - TOMOYO_MOUNT_REMOUNT = 2, - TOMOYO_MOUNT_MAKE_UNBINDABLE = 3, - TOMOYO_MOUNT_MAKE_PRIVATE = 4, - TOMOYO_MOUNT_MAKE_SLAVE = 5, - TOMOYO_MOUNT_MAKE_SHARED = 6, - TOMOYO_MAX_SPECIAL_MOUNT = 7, +struct crypto_report_acomp { + char type[64]; }; -struct tomoyo_inet_addr_info { - __be16 port; - const __be32 *address; - bool is_ipv6; +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; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + struct crypto_alg base; }; -struct tomoyo_unix_addr_info { - u8 *addr; - unsigned int addr_len; +struct crypto_report_comp { + char type[64]; }; -struct tomoyo_addr_info { - u8 protocol; - u8 operation; - struct tomoyo_inet_addr_info inet; - struct tomoyo_unix_addr_info unix0; +struct crypto_scomp { + struct crypto_tfm base; }; -enum audit_mode { - AUDIT_NORMAL = 0, - AUDIT_QUIET_DENIED = 1, - AUDIT_QUIET = 2, - AUDIT_NOQUIET = 3, - AUDIT_ALL = 4, +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 *); + 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 crypto_alg base; }; -enum aa_sfs_type { - AA_SFS_TYPE_BOOLEAN = 0, - AA_SFS_TYPE_STRING = 1, - AA_SFS_TYPE_U64 = 2, - AA_SFS_TYPE_FOPS = 3, - AA_SFS_TYPE_DIR = 4, +struct scomp_scratch { + spinlock_t lock; + void *src; + void *dst; }; -struct aa_sfs_entry { - const char *name; - struct dentry *dentry; - umode_t mode; - enum aa_sfs_type v_type; - union { - bool boolean; - char *string; - long unsigned int u64; - struct aa_sfs_entry *files; - } v; - const struct file_operations *file_ops; +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; }; -enum aafs_ns_type { - AAFS_NS_DIR = 0, - AAFS_NS_PROFS = 1, - AAFS_NS_NS = 2, - AAFS_NS_RAW_DATA = 3, - AAFS_NS_LOAD = 4, - AAFS_NS_REPLACE = 5, - AAFS_NS_REMOVE = 6, - AAFS_NS_REVISION = 7, - AAFS_NS_COUNT = 8, - AAFS_NS_MAX_COUNT = 9, - AAFS_NS_SIZE = 10, - AAFS_NS_MAX_SIZE = 11, - AAFS_NS_OWNER = 12, - AAFS_NS_SIZEOF = 13, +struct crypto_test_param { + char driver[128]; + char alg[128]; + u32 type; }; -enum aafs_prof_type { - AAFS_PROF_DIR = 0, - AAFS_PROF_PROFS = 1, - AAFS_PROF_NAME = 2, - AAFS_PROF_MODE = 3, - AAFS_PROF_ATTACH = 4, - AAFS_PROF_HASH = 5, - AAFS_PROF_RAW_DATA = 6, - AAFS_PROF_RAW_HASH = 7, - AAFS_PROF_RAW_ABI = 8, - AAFS_PROF_SIZEOF = 9, +struct hmac_ctx { + struct crypto_shash *hash; }; -struct table_header { - u16 td_id; - u16 td_flags; - u32 td_hilen; - u32 td_lolen; - char td_data[0]; +struct md5_state { + u32 hash[4]; + u32 block[16]; + u64 byte_count; }; -struct aa_dfa { - struct kref count; - u16 flags; - u32 max_oob; - struct table_header *tables[8]; +struct sha1_state { + u32 state[5]; + u64 count; + u8 buffer[64]; }; -struct aa_policy { - const char *name; - char *hname; - struct list_head list; - struct list_head profiles; -}; +typedef void sha1_block_fn(struct sha1_state *, const u8 *, int); -struct aa_labelset { - rwlock_t lock; - struct rb_root root; +struct sha256_state { + u32 state[8]; + u64 count; + u8 buf[64]; }; -enum label_flags { - FLAG_HAT = 1, - FLAG_UNCONFINED = 2, - FLAG_NULL = 4, - FLAG_IX_ON_NAME_ERROR = 8, - FLAG_IMMUTIBLE = 16, - FLAG_USER_DEFINED = 32, - FLAG_NO_LIST_REF = 64, - FLAG_NS_COUNT = 128, - FLAG_IN_TREE = 256, - FLAG_PROFILE = 512, - FLAG_EXPLICIT = 1024, - FLAG_STALE = 2048, - FLAG_RENAMED = 4096, - FLAG_REVOKED = 8192, +struct sha512_state { + u64 state[8]; + u64 count[2]; + u8 buf[128]; }; -struct aa_label; +typedef void sha512_block_fn(struct sha512_state *, const u8 *, int); -struct aa_proxy { - struct kref count; - struct aa_label *label; -}; +typedef struct { + u64 a; + u64 b; +} u128; -struct aa_profile; +typedef struct { + __be64 a; + __be64 b; +} be128; -struct aa_label { - struct kref count; - struct rb_node node; - struct callback_head rcu; - struct aa_proxy *proxy; - char *hname; - long int flags; - u32 secid; - int size; - struct aa_profile *vec[0]; +typedef struct { + __le64 b; + __le64 a; +} le128; + +struct gf128mul_4k { + be128 t[256]; }; -struct label_it { - int i; - int j; +struct gf128mul_64k { + struct gf128mul_4k *t[16]; }; -struct aa_policydb { - struct aa_dfa *dfa; - unsigned int start[18]; +struct crypto_cts_ctx { + struct crypto_skcipher *child; }; -struct aa_domain { - int size; - char **table; +struct crypto_cts_reqctx { + struct scatterlist sg[2]; + unsigned int offset; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + struct skcipher_request subreq; }; -struct aa_file_rules { - unsigned int start; - struct aa_dfa *dfa; - struct aa_domain trans; +struct xts_tfm_ctx { + struct crypto_skcipher *child; + struct crypto_cipher *tweak; }; -struct aa_caps { - kernel_cap_t allow; - kernel_cap_t audit; - kernel_cap_t denied; - kernel_cap_t quiet; - kernel_cap_t kill; - kernel_cap_t extended; +struct xts_instance_ctx { + struct crypto_skcipher_spawn spawn; + char name[128]; }; -struct aa_rlimit { - unsigned int mask; - struct rlimit limits[16]; +struct xts_request_ctx { + le128 t; + struct scatterlist *tail; + struct scatterlist sg[2]; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + struct skcipher_request subreq; }; -struct aa_ns; +struct crypto_rfc3686_ctx { + struct crypto_skcipher *child; + u8 nonce[4]; +}; -struct aa_net_compat; +struct crypto_rfc3686_req_ctx { + u8 iv[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; + struct skcipher_request subreq; +}; -struct aa_secmark; +struct gcm_instance_ctx { + struct crypto_skcipher_spawn ctr; + struct crypto_ahash_spawn ghash; +}; -struct aa_loaddata; +struct crypto_gcm_ctx { + struct crypto_skcipher *ctr; + struct crypto_ahash *ghash; +}; -struct aa_profile { - struct aa_policy base; - struct aa_profile *parent; - struct aa_ns *ns; - const char *rename; - const char *attach; - struct aa_dfa *xmatch; - int xmatch_len; - enum audit_mode audit; - long int mode; - u32 path_flags; - const char *disconnected; - int size; - struct aa_policydb policy; - struct aa_file_rules file; - struct aa_caps caps; - struct aa_net_compat *net_compat; - int xattr_count; - char **xattrs; - struct aa_rlimit rlimits; - int secmark_count; - struct aa_secmark *secmark; - struct aa_loaddata *rawdata; - unsigned char *hash; - char *dirname; - struct dentry *dents[9]; - struct rhashtable *data; - struct aa_label label; +struct crypto_rfc4106_ctx { + struct crypto_aead *child; + u8 nonce[4]; }; -struct aa_perms { - u32 allow; - u32 audit; - u32 deny; - u32 quiet; - u32 kill; - u32 stop; - u32 complain; - u32 cond; - u32 hide; - u32 prompt; - u16 xindex; +struct crypto_rfc4106_req_ctx { + struct scatterlist src[3]; + struct scatterlist dst[3]; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + struct aead_request subreq; }; -struct path_cond { - kuid_t uid; - umode_t mode; +struct crypto_rfc4543_instance_ctx { + struct crypto_aead_spawn aead; }; -struct aa_net_compat { - u16 allow[45]; - u16 audit[45]; - u16 quiet[45]; +struct crypto_rfc4543_ctx { + struct crypto_aead *child; + struct crypto_sync_skcipher *null; + u8 nonce[4]; }; -struct aa_secmark { - u8 audit; - u8 deny; - u32 secid; - char *label; +struct crypto_rfc4543_req_ctx { + struct aead_request subreq; }; -enum profile_mode { - APPARMOR_ENFORCE = 0, - APPARMOR_COMPLAIN = 1, - APPARMOR_KILL = 2, - APPARMOR_UNCONFINED = 3, +struct crypto_gcm_ghash_ctx { + unsigned int cryptlen; + struct scatterlist *src; + int (*complete)(struct aead_request *, u32); }; -struct aa_data { - char *key; - u32 size; - char *data; - struct rhash_head head; +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; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + union { + struct ahash_request ahreq; + struct skcipher_request skreq; + } u; }; -struct aa_ns_acct { - int max_size; - int max_count; - int size; - int count; +struct crypto_aes_ctx { + u32 key_enc[60]; + u32 key_dec[60]; + u32 key_length; }; -struct aa_ns { - struct aa_policy base; - struct aa_ns *parent; - struct mutex lock; - struct aa_ns_acct acct; - struct aa_profile *unconfined; - struct list_head sub_ns; - atomic_t uniq_null; - long int uniq_id; - int level; - long int revision; - wait_queue_head_t wait; - struct aa_labelset labels; - struct list_head rawdata_list; - struct dentry *dents[13]; +struct deflate_ctx { + struct z_stream_s comp_stream; + struct z_stream_s decomp_stream; }; -struct aa_loaddata { - struct kref count; - struct list_head list; - struct work_struct work; - struct dentry *dents[6]; - struct aa_ns *ns; - char *name; - size_t size; - size_t compressed_size; - long int revision; - int abi; - unsigned char *hash; - char *data; +struct chksum_ctx { + u32 key; }; -enum { - AAFS_LOADDATA_ABI = 0, - AAFS_LOADDATA_REVISION = 1, - AAFS_LOADDATA_HASH = 2, - AAFS_LOADDATA_DATA = 3, - AAFS_LOADDATA_COMPRESSED_SIZE = 4, - AAFS_LOADDATA_DIR = 5, - AAFS_LOADDATA_NDENTS = 6, +struct chksum_desc_ctx { + u32 crc; }; -struct rawdata_f_data { - struct aa_loaddata *loaddata; +struct chksum_desc_ctx___2 { + __u16 crc; }; -struct aa_revision { - struct aa_ns *ns; - long int last_read; +struct lzo_ctx { + void *lzo_comp_mem; }; -struct multi_transaction { - struct kref count; - ssize_t size; - char data[0]; +struct lzorle_ctx { + void *lzorle_comp_mem; }; -struct apparmor_audit_data { - int error; - int type; - const char *op; - struct aa_label *label; - const char *name; - const char *info; - u32 request; - u32 denied; - union { - struct { - struct aa_label *peer; - union { - struct { - const char *target; - kuid_t ouid; - } fs; - struct { - int rlim; - long unsigned int max; - } rlim; - struct { - int signal; - int unmappedsig; - }; - struct { - int type; - int protocol; - struct sock *peer_sk; - void *addr; - int addrlen; - } net; - }; - }; - struct { - struct aa_profile *profile; - const char *ns; - long int pos; - } iface; - struct { - const char *src_name; - const char *type; - const char *trans; - const char *data; - long unsigned int flags; - } mnt; - }; +struct crypto_report_rng { + char type[64]; + unsigned int seedsize; }; -enum audit_type { - AUDIT_APPARMOR_AUDIT = 0, - AUDIT_APPARMOR_ALLOWED = 1, - AUDIT_APPARMOR_DENIED = 2, - AUDIT_APPARMOR_HINT = 3, - AUDIT_APPARMOR_STATUS = 4, - AUDIT_APPARMOR_ERROR = 5, - AUDIT_APPARMOR_KILL = 6, - AUDIT_APPARMOR_AUTO = 7, +struct drbg_string { + const unsigned char *buf; + size_t len; + struct list_head list; }; -struct aa_audit_rule { - struct aa_label *label; +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]; }; -struct audit_cache { - struct aa_profile *profile; - kernel_cap_t caps; +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 *); }; -struct aa_task_ctx { - struct aa_label *nnp; - struct aa_label *onexec; - struct aa_label *previous; - u64 token; +enum drbg_seed_state { + DRBG_SEED_STATE_UNSEEDED = 0, + DRBG_SEED_STATE_PARTIAL = 1, + DRBG_SEED_STATE_FULL = 2, }; -struct counted_str { - struct kref count; - char name[0]; +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; + 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; }; -struct match_workbuf { - unsigned int count; - unsigned int pos; - unsigned int len; - unsigned int size; - unsigned int history[24]; +enum drbg_prefixes { + DRBG_PREFIX0 = 0, + DRBG_PREFIX1 = 1, + DRBG_PREFIX2 = 2, + DRBG_PREFIX3 = 3, }; -enum path_flags { - PATH_IS_DIR = 1, - PATH_SOCK_COND = 2, - PATH_CONNECT_PATH = 4, - PATH_CHROOT_REL = 8, - PATH_CHROOT_NSCONNECT = 16, - PATH_DELEGATE_DELETED = 32768, - PATH_MEDIATE_DELETED = 65536, +struct s { + __be32 conv; }; -struct aa_load_ent { - struct list_head list; - struct aa_profile *new; - struct aa_profile *old; - struct aa_profile *rename; - const char *ns_name; +struct rand_data { + __u64 data; + __u64 old_data; + __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; + int rct_count; + unsigned int apt_observations; + unsigned int apt_count; + unsigned int apt_base; + unsigned int apt_base_set: 1; + unsigned int health_failure: 1; }; -enum aa_code { - AA_U8 = 0, - AA_U16 = 1, - AA_U32 = 2, - AA_U64 = 3, - AA_NAME = 4, - AA_STRING = 5, - AA_BLOB = 6, - AA_STRUCT = 7, - AA_STRUCTEND = 8, - AA_LIST = 9, - AA_LISTEND = 10, - AA_ARRAY = 11, - AA_ARRAYEND = 12, +struct rand_data; + +struct jitterentropy { + spinlock_t jent_lock; + struct rand_data *entropy_collector; + unsigned int reset_cnt; }; -struct aa_ext { - void *start; - void *end; - void *pos; - u32 version; +struct ghash_ctx { + struct gf128mul_4k *gf128; }; -struct aa_file_ctx { - spinlock_t lock; - struct aa_label *label; - u32 allow; +struct ghash_desc_ctx { + u8 buffer[16]; + u32 bytes; }; -struct aa_sk_ctx { - struct aa_label *label; - struct aa_label *peer; - struct path path; +struct asymmetric_key_ids { + void *id[2]; }; -union aa_buffer { - struct list_head list; - char buffer[1]; +struct asymmetric_key_subtype { + struct module *owner; + const char *name; + short unsigned int 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 ptrace_relation { - struct task_struct *tracer; - struct task_struct *tracee; - bool invalid; - struct list_head node; - struct callback_head rcu; +struct asymmetric_key_parser { + struct list_head link; + struct module *owner; + const char *name; + int (*parse)(struct key_preparsed_payload *); }; -struct access_report_info { - struct callback_head work; - const char *access; - struct task_struct *target; - struct task_struct *agent; +enum x509_actions { + ACT_x509_extract_key_data = 0, + ACT_x509_extract_name_segment = 1, + ACT_x509_note_OID = 2, + ACT_x509_note_issuer = 3, + ACT_x509_note_not_after = 4, + ACT_x509_note_not_before = 5, + ACT_x509_note_params = 6, + ACT_x509_note_pkey_algo = 7, + ACT_x509_note_serial = 8, + ACT_x509_note_signature = 9, + ACT_x509_note_subject = 10, + ACT_x509_note_tbs_certificate = 11, + ACT_x509_process_extension = 12, + NR__x509_actions = 13, }; -enum sid_policy_type { - SIDPOL_DEFAULT = 0, - SIDPOL_CONSTRAINED = 1, - SIDPOL_ALLOWED = 2, +enum x509_akid_actions { + ACT_x509_akid_note_kid = 0, + ACT_x509_akid_note_name = 1, + ACT_x509_akid_note_serial = 2, + ACT_x509_extract_name_segment___2 = 3, + ACT_x509_note_OID___2 = 4, + NR__x509_akid_actions = 5, }; -typedef union { - kuid_t uid; - kgid_t gid; -} kid_t; +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_key; + bool unsupported_sig; + bool blacklisted; +}; -enum setid_type { - UID = 0, - GID = 1, +struct x509_parse_context { + struct x509_certificate *cert; + long unsigned int data; + const void *cert_start; + const void *key; + size_t key_size; + const void *params; + size_t params_size; + enum OID key_algo; + enum OID last_oid; + enum OID algo_oid; + unsigned char nr_mpi; + 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; }; -struct setid_rule { - struct hlist_node next; - kid_t src_id; - kid_t dst_id; - enum setid_type type; +enum pkcs7_actions { + ACT_pkcs7_check_content_type = 0, + ACT_pkcs7_extract_cert = 1, + ACT_pkcs7_note_OID = 2, + ACT_pkcs7_note_certificate_list = 3, + ACT_pkcs7_note_content = 4, + ACT_pkcs7_note_data = 5, + ACT_pkcs7_note_signed_info = 6, + ACT_pkcs7_note_signeddata_version = 7, + ACT_pkcs7_note_signerinfo_version = 8, + ACT_pkcs7_sig_note_authenticated_attr = 9, + ACT_pkcs7_sig_note_digest_algo = 10, + ACT_pkcs7_sig_note_issuer = 11, + ACT_pkcs7_sig_note_pkey_algo = 12, + ACT_pkcs7_sig_note_serial = 13, + ACT_pkcs7_sig_note_set_of_authattrs = 14, + ACT_pkcs7_sig_note_signature = 15, + ACT_pkcs7_sig_note_skid = 16, + NR__pkcs7_actions = 17, }; -struct setid_ruleset { - struct hlist_head rules[256]; - char *policy_str; - struct callback_head rcu; - enum setid_type type; +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; + long unsigned int aa_set; + time64_t signing_time; + struct public_key_signature *sig; }; -enum devcg_behavior { - DEVCG_DEFAULT_NONE = 0, - DEVCG_DEFAULT_ALLOW = 1, - DEVCG_DEFAULT_DENY = 2, +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 dev_exception_item { - u32 major; - u32 minor; - short int type; - short int access; - struct list_head list; - struct callback_head rcu; +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; + long unsigned int 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 dev_cgroup { - struct cgroup_subsys_state css; - struct list_head exceptions; - enum devcg_behavior behavior; +struct mz_hdr { + uint16_t magic; + uint16_t lbsize; + uint16_t blocks; + uint16_t relocs; + uint16_t hdrsize; + uint16_t min_extra_pps; + uint16_t max_extra_pps; + uint16_t ss; + uint16_t sp; + uint16_t checksum; + uint16_t ip; + uint16_t cs; + uint16_t reloc_table_offset; + uint16_t overlay_num; + uint16_t reserved0[4]; + uint16_t oem_id; + uint16_t oem_info; + uint16_t reserved1[10]; + uint32_t peaddr; + char message[0]; }; -enum integrity_status { - INTEGRITY_PASS = 0, - INTEGRITY_PASS_IMMUTABLE = 1, - INTEGRITY_FAIL = 2, - INTEGRITY_NOLABEL = 3, - INTEGRITY_NOXATTRS = 4, - INTEGRITY_UNKNOWN = 5, +struct pe_hdr { + uint32_t magic; + uint16_t machine; + uint16_t sections; + uint32_t timestamp; + uint32_t symbol_table; + uint32_t symbols; + uint16_t opt_hdr_size; + uint16_t flags; }; -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]; +struct pe32_opt_hdr { + uint16_t magic; + uint8_t ld_major; + uint8_t ld_minor; + uint32_t text_size; + uint32_t data_size; + uint32_t bss_size; + uint32_t entry_point; + uint32_t code_base; + uint32_t data_base; + uint32_t image_base; + uint32_t section_align; + uint32_t file_align; + uint16_t os_major; + uint16_t os_minor; + uint16_t image_major; + uint16_t image_minor; + uint16_t subsys_major; + uint16_t subsys_minor; + uint32_t win32_version; + uint32_t image_size; + uint32_t header_size; + uint32_t csum; + uint16_t subsys; + uint16_t dll_flags; + uint32_t stack_size_req; + uint32_t stack_size; + uint32_t heap_size_req; + uint32_t heap_size; + uint32_t loader_flags; + uint32_t data_dirs; }; -struct integrity_iint_cache { - struct rb_node rb_node; - struct mutex mutex; - struct inode *inode; - u64 version; - long unsigned int flags; - long unsigned int measured_pcrs; - long unsigned int atomic_flags; - 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 pe32plus_opt_hdr { + uint16_t magic; + uint8_t ld_major; + uint8_t ld_minor; + uint32_t text_size; + uint32_t data_size; + uint32_t bss_size; + uint32_t entry_point; + uint32_t code_base; + uint64_t image_base; + uint32_t section_align; + uint32_t file_align; + uint16_t os_major; + uint16_t os_minor; + uint16_t image_major; + uint16_t image_minor; + uint16_t subsys_major; + uint16_t subsys_minor; + uint32_t win32_version; + uint32_t image_size; + uint32_t header_size; + uint32_t csum; + uint16_t subsys; + uint16_t dll_flags; + uint64_t stack_size_req; + uint64_t stack_size; + uint64_t heap_size_req; + uint64_t heap_size; + uint32_t loader_flags; + uint32_t data_dirs; }; -struct modsig; - -struct asymmetric_key_id; - -struct public_key_signature { - struct asymmetric_key_id *auth_ids[2]; - u8 *s; - u8 *digest; - u32 s_size; - u32 digest_size; - const char *pkey_algo; - const char *hash_algo; - const char *encoding; - const void *data; - unsigned int data_size; +struct data_dirent { + uint32_t virtual_address; + uint32_t size; }; -struct asymmetric_key_id { - short unsigned int len; - unsigned char data[0]; +struct data_directory { + struct data_dirent exports; + struct data_dirent imports; + struct data_dirent resources; + struct data_dirent exceptions; + struct data_dirent certs; + struct data_dirent base_relocations; + struct data_dirent debug; + struct data_dirent arch; + struct data_dirent global_ptr; + struct data_dirent tls; + struct data_dirent load_config; + struct data_dirent bound_imports; + struct data_dirent import_addrs; + struct data_dirent delay_imports; + struct data_dirent clr_runtime_hdr; + struct data_dirent reserved; }; -struct signature_v2_hdr { - uint8_t type; - uint8_t version; - uint8_t hash_algo; - __be32 keyid; - __be16 sig_size; - uint8_t sig[0]; -} __attribute__((packed)); - -typedef struct { - efi_guid_t signature_owner; - u8 signature_data[0]; -} efi_signature_data_t; - -typedef struct { - efi_guid_t signature_type; - u32 signature_list_size; - u32 signature_header_size; - u32 signature_size; - u8 signature_header[0]; -} efi_signature_list_t; - -typedef void (*efi_element_handler_t)(const char *, const void *, size_t); - -struct efi_mokvar_table_entry { - char name[256]; - u64 data_size; - u8 data[0]; +struct section_header { + char name[8]; + uint32_t virtual_size; + uint32_t virtual_address; + uint32_t raw_data_size; + uint32_t data_addr; + uint32_t relocs; + uint32_t line_numbers; + uint16_t num_relocs; + uint16_t num_lin_numbers; + uint32_t flags; }; -struct evm_ima_xattr_data { - u8 type; - u8 data[0]; +struct win_certificate { + uint32_t length; + uint16_t revision; + uint16_t cert_type; }; -enum ima_show_type { - IMA_SHOW_BINARY = 0, - IMA_SHOW_BINARY_NO_FIELD_LEN = 1, - IMA_SHOW_BINARY_OLD_STRING_FMT = 2, - IMA_SHOW_ASCII = 3, +struct pefile_context { + unsigned int header_size; + unsigned int image_checksum_offset; + unsigned int cert_dirent_offset; + unsigned int n_data_dirents; + unsigned int n_sections; + unsigned int certs_size; + unsigned int sig_offset; + unsigned int sig_len; + const struct section_header *secs; + const void *digest; + unsigned int digest_len; + const char *digest_algo; }; -struct ima_event_data { - struct integrity_iint_cache *iint; - struct file *file; - const unsigned char *filename; - struct evm_ima_xattr_data *xattr_value; - int xattr_len; - const struct modsig *modsig; - const char *violation; - const void *buf; - int buf_len; +enum mscode_actions { + ACT_mscode_note_content_type = 0, + ACT_mscode_note_digest = 1, + ACT_mscode_note_digest_algo = 2, + NR__mscode_actions = 3, }; -struct ima_field_data { - u8 *data; - u32 len; +enum { + DISK_EVENT_MEDIA_CHANGE = 1, + DISK_EVENT_EJECT_REQUEST = 2, }; -struct ima_template_field { - const char field_id[16]; - int (*field_init)(struct ima_event_data *, struct ima_field_data *); - void (*field_show)(struct seq_file *, enum ima_show_type, struct ima_field_data *); +struct bdev_inode { + struct block_device bdev; + struct inode vfs_inode; }; -struct ima_template_desc { - struct list_head list; - char *name; - char *fmt; - int num_fields; - const struct ima_template_field **fields; +struct blkdev_dio { + union { + struct kiocb *iocb; + struct task_struct *waiter; + }; + size_t size; + atomic_t ref; + bool multi_bio: 1; + bool should_dirty: 1; + bool is_sync: 1; + struct bio bio; }; -struct ima_template_entry { - int pcr; - struct tpm_digest *digests; - struct ima_template_desc *template_desc; - u32 template_data_len; - struct ima_field_data template_data[0]; +struct bio_alloc_cache { + struct bio_list free_list; + unsigned int nr; }; -struct ima_queue_entry { - struct hlist_node hnext; - struct list_head later; - struct ima_template_entry *entry; +enum rq_qos_id { + RQ_QOS_WBT = 0, + RQ_QOS_LATENCY = 1, + RQ_QOS_COST = 2, + RQ_QOS_IOPRIO = 3, }; -struct ima_h_table { - atomic_long_t len; - atomic_long_t violations; - struct hlist_head queue[1024]; -}; +struct rq_qos_ops; -enum ima_fs_flags { - IMA_FS_BUSY = 0, +struct rq_qos { + struct rq_qos_ops *ops; + struct request_queue *q; + enum rq_qos_id id; + struct rq_qos *next; + struct dentry *debugfs_dir; }; -enum evm_ima_xattr_type { - IMA_XATTR_DIGEST = 1, - EVM_XATTR_HMAC = 2, - EVM_IMA_XATTR_DIGSIG = 3, - IMA_XATTR_DIGEST_NG = 4, - EVM_XATTR_PORTABLE_DIGSIG = 5, - IMA_XATTR_LAST = 6, +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; }; -enum ima_hooks { - NONE = 0, - FILE_CHECK = 1, - MMAP_CHECK = 2, - BPRM_CHECK = 3, - CREDS_CHECK = 4, - POST_SETATTR = 5, - MODULE_CHECK = 6, - FIRMWARE_CHECK = 7, - KEXEC_KERNEL_CHECK = 8, - KEXEC_INITRAMFS_CHECK = 9, - POLICY_CHECK = 10, - KEXEC_CMDLINE = 11, - KEY_CHECK = 12, - MAX_CHECK = 13, +struct biovec_slab { + int nr_vecs; + char *name; + struct kmem_cache *slab; }; -enum tpm_pcrs { - TPM_PCR0 = 0, - TPM_PCR8 = 8, - TPM_PCR10 = 10, +struct bio_slab { + struct kmem_cache *slab; + unsigned int slab_ref; + unsigned int slab_size; + char name[8]; }; -struct ima_algo_desc { - struct crypto_shash *tfm; - enum hash_algo algo; +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, }; -enum lsm_rule_types { - LSM_OBJ_USER = 0, - LSM_OBJ_ROLE = 1, - LSM_OBJ_TYPE = 2, - LSM_SUBJ_USER = 3, - LSM_SUBJ_ROLE = 4, - LSM_SUBJ_TYPE = 5, +enum { + WBT_RWQ_BG = 0, + WBT_RWQ_KSWAPD = 1, + WBT_RWQ_DISCARD = 2, + WBT_NUM_RWQ = 3, }; -enum policy_types { - ORIGINAL_TCB = 1, - DEFAULT_TCB = 2, +struct req_iterator { + struct bvec_iter iter; + struct bio *bio; }; -enum policy_rule_list { - IMA_DEFAULT_POLICY = 1, - IMA_CUSTOM_POLICY = 2, -}; +struct blk_plug_cb; -struct ima_rule_opt_list { - size_t count; - char *items[0]; -}; +typedef void (*blk_plug_cb_fn)(struct blk_plug_cb *, bool); -struct ima_rule_entry { +struct blk_plug_cb { struct list_head list; - int action; - unsigned int flags; - enum ima_hooks func; - int mask; - long unsigned int fsmagic; - uuid_t fsuuid; - kuid_t uid; - kuid_t fowner; - bool (*uid_op)(kuid_t, kuid_t); - bool (*fowner_op)(kuid_t, kuid_t); - int pcr; - struct { - void *rules[3]; - char *args_p; - int type; - } lsm[6]; - char *fsname; - struct ima_rule_opt_list *keyrings; - struct ima_template_desc *template; + blk_plug_cb_fn callback; + void *data; }; enum { - Opt_measure = 0, - Opt_dont_measure = 1, - Opt_appraise = 2, - Opt_dont_appraise = 3, - Opt_audit = 4, - Opt_hash___3 = 5, - Opt_dont_hash = 6, - Opt_obj_user = 7, - Opt_obj_role = 8, - Opt_obj_type = 9, - Opt_subj_user = 10, - Opt_subj_role = 11, - Opt_subj_type = 12, - Opt_func = 13, - Opt_mask = 14, - Opt_fsmagic = 15, - Opt_fsname = 16, - Opt_fsuuid = 17, - Opt_uid_eq = 18, - Opt_euid_eq = 19, - Opt_fowner_eq = 20, - Opt_uid_gt = 21, - Opt_euid_gt = 22, - Opt_fowner_gt = 23, - Opt_uid_lt = 24, - Opt_euid_lt = 25, - Opt_fowner_lt = 26, - Opt_appraise_type = 27, - Opt_appraise_flag = 28, - Opt_permit_directio = 29, - Opt_pcr = 30, - Opt_template = 31, - Opt_keyrings = 32, - Opt_err___9 = 33, + BLK_MQ_REQ_NOWAIT = 1, + BLK_MQ_REQ_RESERVED = 2, + BLK_MQ_REQ_PM = 4, }; -struct ima_kexec_hdr { - u16 version; - u16 _reserved0; - u32 _reserved1; - u64 buffer_size; - u64 count; +struct trace_event_raw_block_buffer { + struct trace_entry ent; + dev_t dev; + sector_t sector; + size_t size; + char __data[0]; }; -enum header_fields { - HDR_PCR = 0, - HDR_DIGEST = 1, - HDR_TEMPLATE_NAME = 2, - HDR_TEMPLATE_DATA = 3, - HDR__LAST = 4, +struct trace_event_raw_block_rq_requeue { + struct trace_entry ent; + dev_t dev; + sector_t sector; + unsigned int nr_sector; + char rwbs[8]; + u32 __data_loc_cmd; + char __data[0]; }; -enum data_formats { - DATA_FMT_DIGEST = 0, - DATA_FMT_DIGEST_WITH_ALGO = 1, - DATA_FMT_STRING = 2, - DATA_FMT_HEX = 3, +struct trace_event_raw_block_rq_complete { + struct trace_entry ent; + dev_t dev; + sector_t sector; + unsigned int nr_sector; + int error; + char rwbs[8]; + u32 __data_loc_cmd; + char __data[0]; }; -struct modsig___2 { - struct pkcs7_message *pkcs7_msg; - enum hash_algo hash_algo; - const u8 *digest; - u32 digest_size; - int raw_pkcs7_len; - u8 raw_pkcs7[0]; +struct trace_event_raw_block_rq { + struct trace_entry ent; + dev_t dev; + sector_t sector; + unsigned int nr_sector; + unsigned int bytes; + char rwbs[8]; + char comm[16]; + u32 __data_loc_cmd; + char __data[0]; }; -struct ima_key_entry { - struct list_head list; - void *payload; - size_t payload_len; - char *keyring_name; +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[8]; + char __data[0]; }; -struct evm_xattr { - struct evm_ima_xattr_data data; - u8 digest[20]; +struct trace_event_raw_block_bio { + struct trace_entry ent; + dev_t dev; + sector_t sector; + unsigned int nr_sector; + char rwbs[8]; + char comm[16]; + char __data[0]; }; -struct xattr_list { - struct list_head list; - char *name; +struct trace_event_raw_block_plug { + struct trace_entry ent; + char comm[16]; + char __data[0]; }; -struct evm_digest { - struct ima_digest_data hdr; - char digest[64]; +struct trace_event_raw_block_unplug { + struct trace_entry ent; + int nr_rq; + char comm[16]; + char __data[0]; }; -struct h_misc { - long unsigned int ino; - __u32 generation; - uid_t uid; - gid_t gid; - umode_t mode; +struct trace_event_raw_block_split { + struct trace_entry ent; + dev_t dev; + sector_t sector; + sector_t new_sector; + char rwbs[8]; + char comm[16]; + char __data[0]; }; -enum { - CRYPTO_MSG_ALG_REQUEST = 0, - CRYPTO_MSG_ALG_REGISTER = 1, - CRYPTO_MSG_ALG_LOADED = 2, +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[8]; + char __data[0]; }; -struct crypto_larval { - struct crypto_alg alg; - struct crypto_alg *adult; - struct completion completion; - u32 mask; - long: 32; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; +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[8]; + char __data[0]; }; -struct crypto_cipher { - struct crypto_tfm base; -}; +struct trace_event_data_offsets_block_buffer {}; -enum { - CRYPTOA_UNSPEC = 0, - CRYPTOA_ALG = 1, - CRYPTOA_TYPE = 2, - CRYPTOA_U32 = 3, - __CRYPTOA_MAX = 4, +struct trace_event_data_offsets_block_rq_requeue { + u32 cmd; }; -struct crypto_attr_alg { - char name[128]; +struct trace_event_data_offsets_block_rq_complete { + u32 cmd; }; -struct crypto_attr_type { - u32 type; - u32 mask; +struct trace_event_data_offsets_block_rq { + u32 cmd; }; -struct crypto_attr_u32 { - u32 num; -}; +struct trace_event_data_offsets_block_bio_complete {}; -struct rtattr { - short unsigned int rta_len; - short unsigned int rta_type; -}; +struct trace_event_data_offsets_block_bio {}; -struct crypto_queue { - struct list_head list; - struct list_head *backlog; - unsigned int qlen; - unsigned int max_qlen; -}; +struct trace_event_data_offsets_block_plug {}; -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, -}; +struct trace_event_data_offsets_block_unplug {}; -enum bpf_xdp_mode { - XDP_MODE_SKB = 0, - XDP_MODE_DRV = 1, - XDP_MODE_HW = 2, - __MAX_XDP_MODE = 3, -}; +struct trace_event_data_offsets_block_split {}; -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, -}; +struct trace_event_data_offsets_block_bio_remap {}; -struct scatter_walk { - struct scatterlist *sg; - unsigned int offset; -}; +struct trace_event_data_offsets_block_rq_remap {}; -struct aead_request { - struct crypto_async_request base; - unsigned int assoclen; - unsigned int cryptlen; - u8 *iv; - struct scatterlist *src; - struct scatterlist *dst; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - void *__ctx[0]; -}; +typedef void (*btf_trace_block_touch_buffer)(void *, struct buffer_head *); -struct crypto_aead; +typedef void (*btf_trace_block_dirty_buffer)(void *, struct buffer_head *); -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; - long: 32; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - struct crypto_alg base; -}; +typedef void (*btf_trace_block_rq_requeue)(void *, struct request *); -struct crypto_aead { - unsigned int authsize; - unsigned int reqsize; - long: 64; - long: 64; - long: 64; - 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 crypto_tfm base; -}; +typedef void (*btf_trace_block_rq_complete)(void *, struct request *, int, unsigned int); -struct aead_instance { - void (*free)(struct aead_instance *); - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - union { - struct { - char head[128]; - struct crypto_instance base; - } s; - struct aead_alg alg; - }; -}; +typedef void (*btf_trace_block_rq_insert)(void *, struct request *); -struct crypto_aead_spawn { - struct crypto_spawn base; -}; +typedef void (*btf_trace_block_rq_issue)(void *, struct request *); -enum crypto_attr_type_t { - CRYPTOCFGA_UNSPEC = 0, - CRYPTOCFGA_PRIORITY_VAL = 1, - CRYPTOCFGA_REPORT_LARVAL = 2, - CRYPTOCFGA_REPORT_HASH = 3, - CRYPTOCFGA_REPORT_BLKCIPHER = 4, - CRYPTOCFGA_REPORT_AEAD = 5, - CRYPTOCFGA_REPORT_COMPRESS = 6, - CRYPTOCFGA_REPORT_RNG = 7, - CRYPTOCFGA_REPORT_CIPHER = 8, - CRYPTOCFGA_REPORT_AKCIPHER = 9, - CRYPTOCFGA_REPORT_KPP = 10, - CRYPTOCFGA_REPORT_ACOMP = 11, - CRYPTOCFGA_STAT_LARVAL = 12, - CRYPTOCFGA_STAT_HASH = 13, - CRYPTOCFGA_STAT_BLKCIPHER = 14, - CRYPTOCFGA_STAT_AEAD = 15, - CRYPTOCFGA_STAT_COMPRESS = 16, - CRYPTOCFGA_STAT_RNG = 17, - CRYPTOCFGA_STAT_CIPHER = 18, - CRYPTOCFGA_STAT_AKCIPHER = 19, - CRYPTOCFGA_STAT_KPP = 20, - CRYPTOCFGA_STAT_ACOMP = 21, - __CRYPTOCFGA_MAX = 22, -}; +typedef void (*btf_trace_block_rq_merge)(void *, struct request *); -struct crypto_report_aead { - char type[64]; - char geniv[64]; - unsigned int blocksize; - unsigned int maxauthsize; - unsigned int ivsize; -}; +typedef void (*btf_trace_block_bio_complete)(void *, struct request_queue *, struct bio *); -struct crypto_sync_skcipher; +typedef void (*btf_trace_block_bio_bounce)(void *, struct bio *); -struct aead_geniv_ctx { - spinlock_t lock; - struct crypto_aead *child; - struct crypto_sync_skcipher *sknull; - u8 salt[0]; -}; +typedef void (*btf_trace_block_bio_backmerge)(void *, struct bio *); -struct crypto_rng; +typedef void (*btf_trace_block_bio_frontmerge)(void *, struct bio *); -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; - long: 32; - 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 crypto_alg base; +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_NO_TAG = 4294967295, + BLK_MQ_TAG_MIN = 1, + BLK_MQ_TAG_MAX = 4294967294, }; -struct crypto_rng { - struct crypto_tfm base; +struct queue_sysfs_entry { + struct attribute attr; + ssize_t (*show)(struct request_queue *, char *); + ssize_t (*store)(struct request_queue *, const char *, size_t); }; -struct crypto_cipher_spawn { - struct crypto_spawn base; +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, }; -struct crypto_sync_skcipher { - struct crypto_skcipher base; +enum { + ICQ_EXITED = 4, + ICQ_DESTROYED = 8, }; -struct skcipher_instance { - void (*free)(struct skcipher_instance *); - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - union { - struct { - char head[128]; - struct crypto_instance base; - } s; - struct skcipher_alg alg; - }; +struct rq_map_data { + struct page **pages; + int page_order; + int nr_entries; + long unsigned int offset; + int null_mapped; + int from_user; }; -struct crypto_skcipher_spawn { - struct crypto_spawn base; +struct bio_map_data { + bool is_our_pages: 1; + bool is_null_mapped: 1; + struct iov_iter iter; + struct iovec iov[0]; }; -struct skcipher_walk { - union { - struct { - struct page *page; - long unsigned int offset; - } phys; - struct { - u8 *page; - void *addr; - } virt; - } src; - union { - struct { - struct page *page; - long unsigned int 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; +enum bio_merge_status { + BIO_MERGE_OK = 0, + BIO_MERGE_NONE = 1, + BIO_MERGE_FAILED = 2, }; -struct skcipher_ctx_simple { - struct crypto_cipher *cipher; +typedef bool (*sb_for_each_fn)(struct sbitmap *, unsigned int, void *); + +typedef bool busy_iter_fn(struct blk_mq_hw_ctx *, struct request *, void *, bool); + +typedef bool busy_tag_iter_fn(struct request *, void *, bool); + +enum { + BLK_MQ_UNIQUE_TAG_BITS = 16, + BLK_MQ_UNIQUE_TAG_MASK = 65535, }; -struct crypto_report_blkcipher { - char type[64]; - char geniv[64]; - unsigned int blocksize; - unsigned int min_keysize; - unsigned int max_keysize; - unsigned int ivsize; +struct mq_inflight { + struct block_device *part; + unsigned int inflight[2]; }; -enum { - SKCIPHER_WALK_PHYS = 1, - SKCIPHER_WALK_SLOW = 2, - SKCIPHER_WALK_COPY = 4, - SKCIPHER_WALK_DIFF = 8, - SKCIPHER_WALK_SLEEP = 16, +struct flush_busy_ctx_data { + struct blk_mq_hw_ctx *hctx; + struct list_head *list; }; -struct skcipher_walk_buffer { - struct list_head entry; - struct scatter_walk dst; - unsigned int len; - u8 *data; - u8 buffer[0]; +struct dispatch_rq_data { + struct blk_mq_hw_ctx *hctx; + struct request *rq; }; -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 *); - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - struct hash_alg_common halg; +enum prep_dispatch { + PREP_DISPATCH_OK = 0, + PREP_DISPATCH_NO_TAG = 1, + PREP_DISPATCH_NO_BUDGET = 2, }; -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 rq_iter_data { + struct blk_mq_hw_ctx *hctx; + bool has_rq; }; -struct ahash_instance { - void (*free)(struct ahash_instance *); - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - union { - struct { - char head[256]; - struct crypto_instance base; - } s; - struct ahash_alg alg; - }; +struct blk_mq_qe_pair { + struct list_head node; + struct request_queue *q; + struct elevator_type *type; }; -struct crypto_ahash_spawn { - struct crypto_spawn base; +struct sbq_wait { + struct sbitmap_queue *sbq; + struct wait_queue_entry wait; }; -struct crypto_report_hash { - char type[64]; - unsigned int blocksize; - unsigned int digestsize; +struct bt_iter_data { + struct blk_mq_hw_ctx *hctx; + busy_iter_fn *fn; + void *data; + bool reserved; }; -struct ahash_request_priv { - crypto_completion_t complete; +struct bt_tags_iter_data { + struct blk_mq_tags *tags; + busy_tag_iter_fn *fn; void *data; - u8 *result; - u32 flags; - long: 32; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - void *ubuf[0]; + unsigned int flags; }; -struct shash_instance { - void (*free)(struct shash_instance *); - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - union { - struct { - char head[256]; - struct crypto_instance base; - } s; - struct shash_alg alg; - }; +struct blk_queue_stats { + struct list_head callbacks; + spinlock_t lock; + bool enable_accounting; }; -struct crypto_shash_spawn { - struct crypto_spawn base; +struct blk_mq_hw_ctx_sysfs_entry { + struct attribute attr; + ssize_t (*show)(struct blk_mq_hw_ctx *, char *); + ssize_t (*store)(struct blk_mq_hw_ctx *, const char *, size_t); }; -struct crypto_report_akcipher { - char type[64]; +typedef u32 compat_caddr_t; + +struct hd_geometry { + unsigned char heads; + unsigned char sectors; + short unsigned int cylinders; + long unsigned int start; }; -struct akcipher_request { - struct crypto_async_request base; - struct scatterlist *src; - struct scatterlist *dst; - unsigned int src_len; - unsigned int dst_len; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - void *__ctx[0]; +struct blkpg_ioctl_arg { + int op; + int flags; + int datalen; + void *data; +}; + +struct blkpg_partition { + long long int start; + long long int length; + int pno; + char devname[64]; + char volname[64]; +}; + +struct pr_reservation { + __u64 key; + __u32 type; + __u32 flags; }; -struct crypto_akcipher { - struct crypto_tfm base; +struct pr_registration { + __u64 old_key; + __u64 new_key; + __u32 flags; + __u32 __pad; }; -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 *); - unsigned int reqsize; - long: 32; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - struct crypto_alg base; +struct pr_preempt { + __u64 old_key; + __u64 new_key; + __u32 type; + __u32 flags; }; -struct akcipher_instance { - void (*free)(struct akcipher_instance *); - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - union { - struct { - char head[128]; - struct crypto_instance base; - } s; - struct akcipher_alg alg; - }; +struct pr_clear { + __u64 key; + __u32 flags; + __u32 __pad; }; -struct crypto_akcipher_spawn { - struct crypto_spawn base; +struct compat_blkpg_ioctl_arg { + compat_int_t op; + compat_int_t flags; + compat_int_t datalen; + compat_caddr_t data; }; -struct crypto_report_kpp { - char type[64]; +struct compat_hd_geometry { + unsigned char heads; + unsigned char sectors; + short unsigned int cylinders; + u32 start; }; -typedef long unsigned int mpi_limb_t; +struct klist_node; -struct gcry_mpi { - int alloced; - int nlimbs; - int nbits; - int sign; - unsigned int flags; - mpi_limb_t *d; +struct klist { + spinlock_t k_lock; + struct list_head k_list; + void (*get)(struct klist_node *); + void (*put)(struct klist_node *); }; -typedef struct gcry_mpi *MPI; +struct klist_node { + void *n_klist; + struct list_head n_node; + struct kref n_ref; +}; -struct dh_ctx { - MPI p; - MPI q; - MPI g; - MPI xa; +struct klist_iter { + struct klist *i_klist; + struct klist_node *i_cur; }; -enum { - CRYPTO_KPP_SECRET_TYPE_UNKNOWN = 0, - CRYPTO_KPP_SECRET_TYPE_DH = 1, - CRYPTO_KPP_SECRET_TYPE_ECDH = 2, +struct class_dev_iter { + struct klist_iter ki; + const struct device_type *type; }; -struct kpp_secret { - short unsigned int type; - short unsigned int len; +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; }; -enum asn1_class { - ASN1_UNIV = 0, - ASN1_APPL = 1, - ASN1_CONT = 2, - ASN1_PRIV = 3, +struct blk_major_name { + struct blk_major_name *next; + int major; + char name[16]; + void (*probe)(dev_t); }; -enum asn1_method { - ASN1_PRIM = 0, - ASN1_CONS = 1, +enum { + IOPRIO_WHO_PROCESS = 1, + IOPRIO_WHO_PGRP = 2, + IOPRIO_WHO_USER = 3, }; -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 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 int (*asn1_action_t)(void *, size_t, unsigned char, const void *, size_t); +typedef struct { + struct page *v; +} Sector; -struct asn1_decoder { - const unsigned char *machine; - size_t machlen; - const asn1_action_t *actions; +struct RigidDiskBlock { + __u32 rdb_ID; + __be32 rdb_SummedLongs; + __s32 rdb_ChkSum; + __u32 rdb_HostID; + __be32 rdb_BlockBytes; + __u32 rdb_Flags; + __u32 rdb_BadBlockList; + __be32 rdb_PartitionList; + __u32 rdb_FileSysHeaderList; + __u32 rdb_DriveInit; + __u32 rdb_Reserved1[6]; + __u32 rdb_Cylinders; + __u32 rdb_Sectors; + __u32 rdb_Heads; + __u32 rdb_Interleave; + __u32 rdb_Park; + __u32 rdb_Reserved2[3]; + __u32 rdb_WritePreComp; + __u32 rdb_ReducedWrite; + __u32 rdb_StepRate; + __u32 rdb_Reserved3[5]; + __u32 rdb_RDBBlocksLo; + __u32 rdb_RDBBlocksHi; + __u32 rdb_LoCylinder; + __u32 rdb_HiCylinder; + __u32 rdb_CylBlocks; + __u32 rdb_AutoParkSeconds; + __u32 rdb_HighRDSKBlock; + __u32 rdb_Reserved4; + char rdb_DiskVendor[8]; + char rdb_DiskProduct[16]; + char rdb_DiskRevision[4]; + char rdb_ControllerVendor[8]; + char rdb_ControllerProduct[16]; + char rdb_ControllerRevision[4]; + __u32 rdb_Reserved5[10]; }; -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, +struct PartitionBlock { + __be32 pb_ID; + __be32 pb_SummedLongs; + __s32 pb_ChkSum; + __u32 pb_HostID; + __be32 pb_Next; + __u32 pb_Flags; + __u32 pb_Reserved1[2]; + __u32 pb_DevFlags; + __u8 pb_DriveName[32]; + __u32 pb_Reserved2[15]; + __be32 pb_Environment[17]; + __u32 pb_EReserved[15]; }; -enum rsapubkey_actions { - ACT_rsa_get_e = 0, - ACT_rsa_get_n = 1, - NR__rsapubkey_actions = 2, +struct partition_info { + u8 flg; + char id[3]; + __be32 st; + __be32 siz; }; -enum rsaprivkey_actions { - ACT_rsa_get_d = 0, - ACT_rsa_get_dp = 1, - ACT_rsa_get_dq = 2, - ACT_rsa_get_e___2 = 3, - ACT_rsa_get_n___2 = 4, - ACT_rsa_get_p = 5, - ACT_rsa_get_q = 6, - ACT_rsa_get_qinv = 7, - NR__rsaprivkey_actions = 8, -}; +struct rootsector { + char unused[342]; + struct partition_info icdpart[8]; + char unused2[12]; + u32 hd_siz; + struct partition_info part[4]; + u32 bsl_st; + u32 bsl_cnt; + u16 checksum; +} __attribute__((packed)); -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 lvm_rec { + char lvm_id[4]; + char reserved4[16]; + __be32 lvmarea_len; + __be32 vgda_len; + __be32 vgda_psn[2]; + char reserved36[10]; + __be16 pp_size; + char reserved46[12]; + __be16 version; }; -struct rsa_mpi_key { - MPI n; - MPI e; - MPI d; +struct vgda { + __be32 secs; + __be32 usec; + char reserved8[16]; + __be16 numlvs; + __be16 maxlvs; + __be16 pp_size; + __be16 numpvs; + __be16 total_vgdas; + __be16 vgda_size; }; -struct crypto_template___2; - -struct asn1_decoder___2; +struct lvd { + __be16 lv_ix; + __be16 res2; + __be16 res4; + __be16 maxsize; + __be16 lv_state; + __be16 mirror; + __be16 mirror_policy; + __be16 num_lps; + __be16 res10[8]; +}; -struct rsa_asn1_template { - const char *name; - const u8 *data; - size_t size; +struct lvname { + char name[64]; }; -struct pkcs1pad_ctx { - struct crypto_akcipher *child; - unsigned int key_size; +struct ppe { + __be16 lv_ix; + short unsigned int res2; + short unsigned int res4; + __be16 lp_ix; + short unsigned int res8[12]; }; -struct pkcs1pad_inst_ctx { - struct crypto_akcipher_spawn spawn; - const struct rsa_asn1_template *digest_info; +struct pvd { + char reserved0[16]; + __be16 pp_count; + char reserved18[2]; + __be32 psn_part1; + char reserved24[8]; + struct ppe ppe[1016]; }; -struct pkcs1pad_request { - struct scatterlist in_sg[2]; - struct scatterlist out_sg[1]; - uint8_t *in_buf; - uint8_t *out_buf; - long: 64; - long: 64; - struct akcipher_request child_req; +struct lv_info { + short unsigned int pps_per_lv; + short unsigned int pps_found; + unsigned char lv_is_contiguous; }; -struct crypto_report_acomp { - char type[64]; +struct cmdline_subpart { + char name[32]; + sector_t from; + sector_t size; + int flags; + struct cmdline_subpart *next_subpart; }; -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; - long: 32; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - struct crypto_alg base; +struct cmdline_parts { + char name[32]; + unsigned int nr_subparts; + struct cmdline_subpart *subpart; + struct cmdline_parts *next_parts; }; -struct crypto_report_comp { - char type[64]; +struct mac_partition { + __be16 signature; + __be16 res1; + __be32 map_count; + __be32 start_block; + __be32 block_count; + char name[32]; + char type[32]; + __be32 data_start; + __be32 data_count; + __be32 status; + __be32 boot_start; + __be32 boot_size; + __be32 boot_load; + __be32 boot_load2; + __be32 boot_entry; + __be32 boot_entry2; + __be32 boot_cksum; + char processor[16]; }; -struct crypto_scomp { - struct crypto_tfm base; +struct mac_driver_desc { + __be16 signature; + __be16 block_size; + __be32 block_count; }; -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 *); - 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 crypto_alg base; +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 scomp_scratch { - spinlock_t lock; - void *src; - void *dst; +struct frag { + struct list_head list; + u32 group; + u8 num; + u8 rec; + u8 map; + u8 data[0]; }; -struct cryptomgr_param { - struct rtattr *tb[34]; - struct { - struct rtattr attr; - struct crypto_attr_type data; - } type; - union { - struct rtattr attr; - struct { - struct rtattr attr; - struct crypto_attr_alg data; - } alg; - struct { - struct rtattr attr; - struct crypto_attr_u32 data; - } nu32; - } attrs[32]; - char template[128]; - struct crypto_larval *larval; - u32 otype; - u32 omask; +struct privhead { + u16 ver_major; + u16 ver_minor; + u64 logical_disk_start; + u64 logical_disk_size; + u64 config_start; + u64 config_size; + uuid_t disk_id; }; -struct crypto_test_param { - char driver[128]; - char alg[128]; - u32 type; +struct tocblock { + u8 bitmap1_name[16]; + u64 bitmap1_start; + u64 bitmap1_size; + u8 bitmap2_name[16]; + u64 bitmap2_start; + u64 bitmap2_size; }; -struct hmac_ctx { - struct crypto_shash *hash; +struct vmdb { + u16 ver_major; + u16 ver_minor; + u32 vblk_size; + u32 vblk_offset; + u32 last_vblk_seq; }; -struct md5_state { - u32 hash[4]; - u32 block[16]; - u64 byte_count; +struct vblk_comp { + u8 state[16]; + u64 parent_id; + u8 type; + u8 children; + u16 chunksize; }; -struct sha1_state { - u32 state[5]; - u64 count; - u8 buffer[64]; +struct vblk_dgrp { + u8 disk_id[64]; }; -typedef void sha1_block_fn(struct sha1_state *, const u8 *, int); +struct vblk_disk { + uuid_t disk_id; + u8 alt_name[128]; +}; -struct sha256_state { - u32 state[8]; - u64 count; - u8 buf[64]; +struct vblk_part { + u64 start; + u64 size; + u64 volume_offset; + u64 parent_id; + u64 disk_id; + u8 partnum; }; -struct sha512_state { - u64 state[8]; - u64 count[2]; - u8 buf[128]; +struct vblk_volu { + u8 volume_type[16]; + u8 volume_state[16]; + u8 guid[16]; + u8 drive_hint[4]; + u64 size; + u8 partition_type; }; -typedef void sha512_block_fn(struct sha512_state *, const u8 *, int); +struct vblk { + u8 name[64]; + u64 obj_id; + u32 sequence; + u8 flags; + u8 type; + union { + struct vblk_comp comp; + struct vblk_dgrp dgrp; + struct vblk_disk disk; + struct vblk_part part; + struct vblk_volu volu; + } vblk; + struct list_head list; +}; -typedef struct { - u64 a; - u64 b; -} u128; +struct ldmdb { + struct privhead ph; + struct tocblock toc; + struct vmdb vm; + struct list_head v_dgrp; + struct list_head v_disk; + struct list_head v_volu; + struct list_head v_comp; + struct list_head v_part; +}; -typedef struct { - __be64 a; - __be64 b; -} be128; +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, +}; -typedef struct { - __le64 b; - __le64 a; -} le128; +struct solaris_x86_slice { + __le16 s_tag; + __le16 s_flag; + __le32 s_start; + __le32 s_size; +}; -struct gf128mul_4k { - be128 t[256]; +struct solaris_x86_vtoc { + unsigned int v_bootinfo[3]; + __le32 v_sanity; + __le32 v_version; + char v_volume[8]; + __le16 v_sectorsz; + __le16 v_nparts; + unsigned int v_reserved[10]; + struct solaris_x86_slice v_slice[16]; + unsigned int timestamp[16]; + char v_asciilabel[128]; }; -struct gf128mul_64k { - struct gf128mul_4k *t[16]; +struct bsd_partition { + __le32 p_size; + __le32 p_offset; + __le32 p_fsize; + __u8 p_fstype; + __u8 p_frag; + __le16 p_cpg; }; -struct crypto_cts_ctx { - struct crypto_skcipher *child; +struct bsd_disklabel { + __le32 d_magic; + __s16 d_type; + __s16 d_subtype; + char d_typename[16]; + char d_packname[16]; + __u32 d_secsize; + __u32 d_nsectors; + __u32 d_ntracks; + __u32 d_ncylinders; + __u32 d_secpercyl; + __u32 d_secperunit; + __u16 d_sparespertrack; + __u16 d_sparespercyl; + __u32 d_acylinders; + __u16 d_rpm; + __u16 d_interleave; + __u16 d_trackskew; + __u16 d_cylskew; + __u32 d_headswitch; + __u32 d_trkseek; + __u32 d_flags; + __u32 d_drivedata[5]; + __u32 d_spare[5]; + __le32 d_magic2; + __le16 d_checksum; + __le16 d_npartitions; + __le32 d_bbsize; + __le32 d_sbsize; + struct bsd_partition d_partitions[16]; }; -struct crypto_cts_reqctx { - struct scatterlist sg[2]; - unsigned int offset; - long: 32; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - struct skcipher_request subreq; +struct unixware_slice { + __le16 s_label; + __le16 s_flags; + __le32 start_sect; + __le32 nr_sects; }; -struct xts_tfm_ctx { - struct crypto_skcipher *child; - struct crypto_cipher *tweak; +struct unixware_vtoc { + __le32 v_magic; + __le32 v_version; + char v_name[8]; + __le16 v_nslices; + __le16 v_unknown1; + __le32 v_reserved[10]; + struct unixware_slice v_slice[16]; }; -struct xts_instance_ctx { - struct crypto_skcipher_spawn spawn; - char name[128]; +struct unixware_disklabel { + __le32 d_type; + __le32 d_magic; + __le32 d_version; + char d_serial[12]; + __le32 d_ncylinders; + __le32 d_ntracks; + __le32 d_nsectors; + __le32 d_secsize; + __le32 d_part_start; + __le32 d_unknown1[12]; + __le32 d_alt_tbl; + __le32 d_alt_len; + __le32 d_phys_cyl; + __le32 d_phys_trk; + __le32 d_phys_sec; + __le32 d_phys_bytes; + __le32 d_unknown2; + __le32 d_unknown3; + __le32 d_pad[8]; + struct unixware_vtoc vtoc; }; -struct xts_request_ctx { - le128 t; - struct scatterlist *tail; - struct scatterlist sg[2]; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - struct skcipher_request subreq; +struct d_partition { + __le32 p_size; + __le32 p_offset; + __le32 p_fsize; + u8 p_fstype; + u8 p_frag; + __le16 p_cpg; }; -struct crypto_rfc3686_ctx { - struct crypto_skcipher *child; - u8 nonce[4]; +struct disklabel { + __le32 d_magic; + __le16 d_type; + __le16 d_subtype; + u8 d_typename[16]; + u8 d_packname[16]; + __le32 d_secsize; + __le32 d_nsectors; + __le32 d_ntracks; + __le32 d_ncylinders; + __le32 d_secpercyl; + __le32 d_secprtunit; + __le16 d_sparespertrack; + __le16 d_sparespercyl; + __le32 d_acylinders; + __le16 d_rpm; + __le16 d_interleave; + __le16 d_trackskew; + __le16 d_cylskew; + __le32 d_headswitch; + __le32 d_trkseek; + __le32 d_flags; + __le32 d_drivedata[5]; + __le32 d_spare[5]; + __le32 d_magic2; + __le16 d_checksum; + __le16 d_npartitions; + __le32 d_bbsize; + __le32 d_sbsize; + struct d_partition d_partitions[18]; }; -struct crypto_rfc3686_req_ctx { - u8 iv[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; - struct skcipher_request subreq; +enum { + LINUX_RAID_PARTITION___2 = 253, }; -struct gcm_instance_ctx { - struct crypto_skcipher_spawn ctr; - struct crypto_ahash_spawn ghash; +struct sgi_volume { + s8 name[8]; + __be32 block_num; + __be32 num_bytes; }; -struct crypto_gcm_ctx { - struct crypto_skcipher *ctr; - struct crypto_ahash *ghash; +struct sgi_partition { + __be32 num_blocks; + __be32 first_block; + __be32 type; }; -struct crypto_rfc4106_ctx { - struct crypto_aead *child; - u8 nonce[4]; +struct sgi_disklabel { + __be32 magic_mushroom; + __be16 root_part_num; + __be16 swap_part_num; + s8 boot_file[16]; + u8 _unused0[48]; + struct sgi_volume volume[15]; + struct sgi_partition partitions[16]; + __be32 csum; + __be32 _unused1; }; -struct crypto_rfc4106_req_ctx { - struct scatterlist src[3]; - struct scatterlist dst[3]; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - struct aead_request subreq; +enum { + SUN_WHOLE_DISK = 5, + LINUX_RAID_PARTITION___3 = 253, }; -struct crypto_rfc4543_instance_ctx { - struct crypto_aead_spawn aead; +struct sun_info { + __be16 id; + __be16 flags; }; -struct crypto_rfc4543_ctx { - struct crypto_aead *child; - struct crypto_sync_skcipher *null; - u8 nonce[4]; +struct sun_vtoc { + __be32 version; + char volume[8]; + __be16 nparts; + struct sun_info infos[8]; + __be16 padding; + __be32 bootinfo[3]; + __be32 sanity; + __be32 reserved[10]; + __be32 timestamp[8]; }; -struct crypto_rfc4543_req_ctx { - struct aead_request subreq; +struct sun_partition { + __be32 start_cylinder; + __be32 num_sectors; }; -struct crypto_gcm_ghash_ctx { - unsigned int cryptlen; - struct scatterlist *src; - int (*complete)(struct aead_request *, u32); +struct sun_disklabel { + unsigned char info[128]; + struct sun_vtoc vtoc; + __be32 write_reinstruct; + __be32 read_reinstruct; + unsigned char spare[148]; + __be16 rspeed; + __be16 pcylcount; + __be16 sparecyl; + __be16 obs1; + __be16 obs2; + __be16 ilfact; + __be16 ncyl; + __be16 nacyl; + __be16 ntrks; + __be16 nsect; + __be16 obs3; + __be16 obs4; + struct sun_partition partitions[8]; + __be16 magic; + __be16 csum; }; -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; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - union { - struct ahash_request ahreq; - struct skcipher_request skreq; - } u; +struct pt_info { + s32 pi_nblocks; + u32 pi_blkoff; }; -struct crypto_aes_ctx { - u32 key_enc[60]; - u32 key_dec[60]; - u32 key_length; +struct ultrix_disklabel { + s32 pt_magic; + s32 pt_valid; + struct pt_info pt_part[8]; }; -struct deflate_ctx { - struct z_stream_s comp_stream; - struct z_stream_s decomp_stream; +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; }; -struct chksum_ctx { - u32 key; +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]; }; -struct chksum_desc_ctx { - u32 crc; +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; }; -struct chksum_desc_ctx___2 { - __u16 crc; +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 d_partition___2 { + __le32 p_res; + u8 p_fstype; + u8 p_res2[3]; + __le32 p_offset; + __le32 p_size; }; -struct lzo_ctx { - void *lzo_comp_mem; +struct disklabel___2 { + u8 d_reserved[270]; + struct d_partition___2 d_partitions[2]; + u8 d_blank[208]; + __le16 d_magic; +} __attribute__((packed)); + +struct volumeid { + u8 vid_unused[248]; + u8 vid_mac[8]; }; -struct lzorle_ctx { - void *lzorle_comp_mem; +struct dkconfig { + u8 ios_unused0[128]; + __be32 ios_slcblk; + __be16 ios_slccnt; + u8 ios_unused1[122]; }; -struct crypto_report_rng { - char type[64]; - unsigned int seedsize; +struct dkblk0 { + struct volumeid dk_vid; + struct dkconfig dk_ios; }; -struct random_ready_callback { - struct list_head list; - void (*func)(struct random_ready_callback *); - struct module *owner; +struct slice { + __be32 nblocks; + __be32 blkoff; }; -struct drbg_string { - const unsigned char *buf; - size_t len; - struct list_head list; +struct rq_wait { + wait_queue_head_t wait; + atomic_t inflight; }; -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]; +struct rq_depth { + unsigned int max_depth; + int scale_step; + bool scaled_max; + unsigned int queue_depth; + unsigned int default_depth; }; -struct drbg_state; +typedef bool acquire_inflight_cb_t(struct rq_wait *, void *); -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 *); -}; +typedef void cleanup_cb_t(struct rq_wait *, void *); -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; - bool seeded; - bool pr; - bool fips_primed; - unsigned char *prev; - struct work_struct seed_work; - struct crypto_rng *jent; - const struct drbg_state_ops *d_ops; - const struct drbg_core *core; - struct drbg_string test_data; - struct random_ready_callback random_ready; +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; }; -enum drbg_prefixes { - DRBG_PREFIX0 = 0, - DRBG_PREFIX1 = 1, - DRBG_PREFIX2 = 2, - DRBG_PREFIX3 = 3, +enum { + DISK_EVENT_FLAG_POLL = 1, + DISK_EVENT_FLAG_UEVENT = 2, }; -struct s { - __be32 conv; +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 int poll_msecs; + struct delayed_work dwork; }; -struct rand_data { - __u64 data; - __u64 old_data; - __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; - int rct_count; - unsigned int apt_observations; - unsigned int apt_count; - unsigned int apt_base; - unsigned int apt_base_set: 1; - unsigned int health_failure: 1; +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 rand_data___2; +typedef int bsg_sg_io_fn(struct request_queue *, struct sg_io_v4 *, fmode_t, unsigned int); -struct jitterentropy { - spinlock_t jent_lock; - struct rand_data___2 *entropy_collector; - unsigned int reset_cnt; +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 ghash_ctx { - struct gf128mul_4k *gf128; -}; +struct bsg_job; -struct ghash_desc_ctx { - u8 buffer[16]; - u32 bytes; -}; +typedef int bsg_job_fn(struct bsg_job *); -enum asymmetric_payload_bits { - asym_crypto = 0, - asym_subtype = 1, - asym_key_ids = 2, - asym_auth = 3, +struct bsg_buffer { + unsigned int payload_len; + int sg_cnt; + struct scatterlist *sg_list; }; -struct asymmetric_key_ids { - void *id[2]; +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; }; -struct asymmetric_key_subtype___2 { - struct module *owner; - const char *name; - short unsigned int 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 *); -}; +typedef enum blk_eh_timer_return bsg_timeout_fn(struct request *); -struct asymmetric_key_parser { - struct list_head link; - struct module *owner; - const char *name; - int (*parse)(struct key_preparsed_payload *); +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, }; -enum OID { - OID_id_dsa_with_sha1 = 0, - OID_id_dsa = 1, - OID_id_ecdsa_with_sha1 = 2, - OID_id_ecPublicKey = 3, - OID_rsaEncryption = 4, - OID_md2WithRSAEncryption = 5, - OID_md3WithRSAEncryption = 6, - OID_md4WithRSAEncryption = 7, - OID_sha1WithRSAEncryption = 8, - OID_sha256WithRSAEncryption = 9, - OID_sha384WithRSAEncryption = 10, - OID_sha512WithRSAEncryption = 11, - OID_sha224WithRSAEncryption = 12, - OID_data = 13, - OID_signed_data = 14, - OID_email_address = 15, - OID_contentType = 16, - OID_messageDigest = 17, - OID_signingTime = 18, - OID_smimeCapabilites = 19, - OID_smimeAuthenticatedAttrs = 20, - OID_md2 = 21, - OID_md4 = 22, - OID_md5 = 23, - OID_msIndirectData = 24, - OID_msStatementType = 25, - OID_msSpOpusInfo = 26, - OID_msPeImageDataObjId = 27, - OID_msIndividualSPKeyPurpose = 28, - OID_msOutlookExpress = 29, - OID_certAuthInfoAccess = 30, - OID_sha1 = 31, - OID_sha256 = 32, - OID_sha384 = 33, - OID_sha512 = 34, - OID_sha224 = 35, - OID_commonName = 36, - OID_surname = 37, - OID_countryName = 38, - OID_locality = 39, - OID_stateOrProvinceName = 40, - OID_organizationName = 41, - OID_organizationUnitName = 42, - OID_title = 43, - OID_description = 44, - OID_name = 45, - OID_givenName = 46, - OID_initials = 47, - OID_generationalQualifier = 48, - OID_subjectKeyIdentifier = 49, - OID_keyUsage = 50, - OID_subjectAltName = 51, - OID_issuerAltName = 52, - OID_basicConstraints = 53, - OID_crlDistributionPoints = 54, - OID_certPolicies = 55, - OID_authorityKeyIdentifier = 56, - OID_extKeyUsage = 57, - OID_gostCPSignA = 58, - OID_gostCPSignB = 59, - OID_gostCPSignC = 60, - OID_gost2012PKey256 = 61, - OID_gost2012PKey512 = 62, - OID_gost2012Digest256 = 63, - OID_gost2012Digest512 = 64, - OID_gost2012Signature256 = 65, - OID_gost2012Signature512 = 66, - OID_gostTC26Sign256A = 67, - OID_gostTC26Sign256B = 68, - OID_gostTC26Sign256C = 69, - OID_gostTC26Sign256D = 70, - OID_gostTC26Sign512A = 71, - OID_gostTC26Sign512B = 72, - OID_gostTC26Sign512C = 73, - OID_sm2 = 74, - OID_sm3 = 75, - OID_SM2_with_SM3 = 76, - OID_sm3WithRSAEncryption = 77, - OID__NR = 78, -}; +struct bsg_device; -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; +struct bsg_set { + struct blk_mq_tag_set tag_set; + struct bsg_device *bd; + bsg_job_fn *job_fn; + bsg_timeout_fn *timeout_fn; }; -enum x509_actions { - ACT_x509_extract_key_data = 0, - ACT_x509_extract_name_segment = 1, - ACT_x509_note_OID = 2, - ACT_x509_note_issuer = 3, - ACT_x509_note_not_after = 4, - ACT_x509_note_not_before = 5, - ACT_x509_note_params = 6, - ACT_x509_note_pkey_algo = 7, - ACT_x509_note_serial = 8, - ACT_x509_note_signature = 9, - ACT_x509_note_subject = 10, - ACT_x509_note_tbs_certificate = 11, - ACT_x509_process_extension = 12, - NR__x509_actions = 13, -}; +typedef struct blkcg_policy_data *blkcg_pol_alloc_cpd_fn(gfp_t); -enum x509_akid_actions { - ACT_x509_akid_note_kid = 0, - ACT_x509_akid_note_name = 1, - ACT_x509_akid_note_serial = 2, - ACT_x509_extract_name_segment___2 = 3, - ACT_x509_note_OID___2 = 4, - NR__x509_akid_actions = 5, -}; +typedef void blkcg_pol_init_cpd_fn(struct blkcg_policy_data *); -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_key; - bool unsupported_sig; - bool blacklisted; -}; +typedef void blkcg_pol_free_cpd_fn(struct blkcg_policy_data *); -struct x509_parse_context { - struct x509_certificate *cert; - long unsigned int data; - const void *cert_start; - const void *key; - size_t key_size; - const void *params; - size_t params_size; - enum OID key_algo; - enum OID last_oid; - enum OID algo_oid; - unsigned char nr_mpi; - 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; -}; +typedef void blkcg_pol_bind_cpd_fn(struct blkcg_policy_data *); -enum pkcs7_actions { - ACT_pkcs7_check_content_type = 0, - ACT_pkcs7_extract_cert = 1, - ACT_pkcs7_note_OID = 2, - ACT_pkcs7_note_certificate_list = 3, - ACT_pkcs7_note_content = 4, - ACT_pkcs7_note_data = 5, - ACT_pkcs7_note_signed_info = 6, - ACT_pkcs7_note_signeddata_version = 7, - ACT_pkcs7_note_signerinfo_version = 8, - ACT_pkcs7_sig_note_authenticated_attr = 9, - ACT_pkcs7_sig_note_digest_algo = 10, - ACT_pkcs7_sig_note_issuer = 11, - ACT_pkcs7_sig_note_pkey_algo = 12, - ACT_pkcs7_sig_note_serial = 13, - ACT_pkcs7_sig_note_set_of_authattrs = 14, - ACT_pkcs7_sig_note_signature = 15, - ACT_pkcs7_sig_note_skid = 16, - NR__pkcs7_actions = 17, -}; +typedef struct blkg_policy_data *blkcg_pol_alloc_pd_fn(gfp_t, struct request_queue *, struct blkcg *); -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; - long unsigned int aa_set; - time64_t signing_time; - struct public_key_signature *sig; -}; +typedef void blkcg_pol_init_pd_fn(struct blkg_policy_data *); -struct pkcs7_message___2 { - 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; -}; +typedef void blkcg_pol_online_pd_fn(struct blkg_policy_data *); -struct pkcs7_parse_context { - struct pkcs7_message___2 *msg; - struct pkcs7_signed_info *sinfo; - struct pkcs7_signed_info **ppsinfo; - struct x509_certificate *certs; - struct x509_certificate **ppcerts; - long unsigned int 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; -}; +typedef void blkcg_pol_offline_pd_fn(struct blkg_policy_data *); -struct mz_hdr { - uint16_t magic; - uint16_t lbsize; - uint16_t blocks; - uint16_t relocs; - uint16_t hdrsize; - uint16_t min_extra_pps; - uint16_t max_extra_pps; - uint16_t ss; - uint16_t sp; - uint16_t checksum; - uint16_t ip; - uint16_t cs; - uint16_t reloc_table_offset; - uint16_t overlay_num; - uint16_t reserved0[4]; - uint16_t oem_id; - uint16_t oem_info; - uint16_t reserved1[10]; - uint32_t peaddr; - char message[0]; -}; +typedef void blkcg_pol_free_pd_fn(struct blkg_policy_data *); -struct pe_hdr { - uint32_t magic; - uint16_t machine; - uint16_t sections; - uint32_t timestamp; - uint32_t symbol_table; - uint32_t symbols; - uint16_t opt_hdr_size; - uint16_t flags; -}; +typedef void blkcg_pol_reset_pd_stats_fn(struct blkg_policy_data *); -struct pe32_opt_hdr { - uint16_t magic; - uint8_t ld_major; - uint8_t ld_minor; - uint32_t text_size; - uint32_t data_size; - uint32_t bss_size; - uint32_t entry_point; - uint32_t code_base; - uint32_t data_base; - uint32_t image_base; - uint32_t section_align; - uint32_t file_align; - uint16_t os_major; - uint16_t os_minor; - uint16_t image_major; - uint16_t image_minor; - uint16_t subsys_major; - uint16_t subsys_minor; - uint32_t win32_version; - uint32_t image_size; - uint32_t header_size; - uint32_t csum; - uint16_t subsys; - uint16_t dll_flags; - uint32_t stack_size_req; - uint32_t stack_size; - uint32_t heap_size_req; - uint32_t heap_size; - uint32_t loader_flags; - uint32_t data_dirs; -}; +typedef bool blkcg_pol_stat_pd_fn(struct blkg_policy_data *, struct seq_file *); -struct pe32plus_opt_hdr { - uint16_t magic; - uint8_t ld_major; - uint8_t ld_minor; - uint32_t text_size; - uint32_t data_size; - uint32_t bss_size; - uint32_t entry_point; - uint32_t code_base; - uint64_t image_base; - uint32_t section_align; - uint32_t file_align; - uint16_t os_major; - uint16_t os_minor; - uint16_t image_major; - uint16_t image_minor; - uint16_t subsys_major; - uint16_t subsys_minor; - uint32_t win32_version; - uint32_t image_size; - uint32_t header_size; - uint32_t csum; - uint16_t subsys; - uint16_t dll_flags; - uint64_t stack_size_req; - uint64_t stack_size; - uint64_t heap_size_req; - uint64_t heap_size; - uint32_t loader_flags; - uint32_t data_dirs; +struct blkcg_policy { + int plid; + struct cftype *dfl_cftypes; + struct cftype *legacy_cftypes; + blkcg_pol_alloc_cpd_fn *cpd_alloc_fn; + blkcg_pol_init_cpd_fn *cpd_init_fn; + blkcg_pol_free_cpd_fn *cpd_free_fn; + blkcg_pol_bind_cpd_fn *cpd_bind_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 data_dirent { - uint32_t virtual_address; - uint32_t size; +struct blkg_conf_ctx { + struct block_device *bdev; + struct blkcg_gq *blkg; + char *body; }; -struct data_directory { - struct data_dirent exports; - struct data_dirent imports; - struct data_dirent resources; - struct data_dirent exceptions; - struct data_dirent certs; - struct data_dirent base_relocations; - struct data_dirent debug; - struct data_dirent arch; - struct data_dirent global_ptr; - struct data_dirent tls; - struct data_dirent load_config; - struct data_dirent bound_imports; - struct data_dirent import_addrs; - struct data_dirent delay_imports; - struct data_dirent clr_runtime_hdr; - struct data_dirent reserved; +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 section_header { - char name[8]; - uint32_t virtual_size; - uint32_t virtual_address; - uint32_t raw_data_size; - uint32_t data_addr; - uint32_t relocs; - uint32_t line_numbers; - uint16_t num_relocs; - uint16_t num_lin_numbers; - uint32_t flags; +struct blkg_rwstat { + struct percpu_counter cpu_cnt[5]; + atomic64_t aux_cnt[5]; }; -struct win_certificate { - uint32_t length; - uint16_t revision; - uint16_t cert_type; +struct blkg_rwstat_sample { + u64 cnt[5]; }; -struct pefile_context { - unsigned int header_size; - unsigned int image_checksum_offset; - unsigned int cert_dirent_offset; - unsigned int n_data_dirents; - unsigned int n_sections; - unsigned int certs_size; - unsigned int sig_offset; - unsigned int sig_len; - const struct section_header *secs; - const void *digest; - unsigned int digest_len; - const char *digest_algo; +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; + long unsigned int first_pending_disptime; + struct timer_list pending_timer; }; -enum mscode_actions { - ACT_mscode_note_content_type = 0, - ACT_mscode_note_digest = 1, - ACT_mscode_note_digest_algo = 2, - NR__mscode_actions = 3, +struct latency_bucket { + long unsigned int total_latency; + int samples; }; -struct biovec_slab { - int nr_vecs; - char *name; - struct kmem_cache *slab; +struct avg_latency_bucket { + long unsigned int latency; + bool valid; }; -enum rq_qos_id { - RQ_QOS_WBT = 0, - RQ_QOS_LATENCY = 1, - RQ_QOS_COST = 2, +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]; + long unsigned int low_upgrade_time; + long unsigned int low_downgrade_time; + unsigned int scale; + struct latency_bucket tmp_buckets[18]; + struct avg_latency_bucket avg_buckets[18]; + struct latency_bucket *latency_buckets[2]; + long unsigned int last_calculate_time; + long unsigned int filtered_latency; + bool track_bio_latency; }; -struct rq_qos_ops; - -struct rq_qos { - struct rq_qos_ops *ops; - struct request_queue *q; - enum rq_qos_id id; - struct rq_qos *next; - struct dentry *debugfs_dir; -}; +struct throtl_grp; -enum hctx_type { - HCTX_TYPE_DEFAULT = 0, - HCTX_TYPE_READ = 1, - HCTX_TYPE_POLL = 2, - HCTX_MAX_TYPES = 3, +struct throtl_qnode { + struct list_head node; + struct bio_list bios; + struct throtl_grp *tg; }; -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 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]; + long unsigned int disptime; + unsigned int flags; + bool has_rules[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]; + long unsigned int last_low_overflow_time[2]; + uint64_t last_bytes_disp[2]; + unsigned int last_io_disp[2]; + long unsigned int last_check_time; + long unsigned int latency_target; + long unsigned int latency_target_conf; + long unsigned int slice_start[2]; + long unsigned int slice_end[2]; + long unsigned int last_finish_time; + long unsigned int checked_last_finish_time; + long unsigned int avg_idletime; + long unsigned int idletime_threshold; + long unsigned int idletime_threshold_conf; + unsigned int bio_cnt; + unsigned int bad_bio_cnt; + long unsigned int bio_cnt_reset_time; + atomic_t io_split_cnt[2]; + atomic_t last_io_split_cnt[2]; + struct blkg_rwstat stat_bytes; + struct blkg_rwstat stat_ios; }; -struct bio_slab { - struct kmem_cache *slab; - unsigned int slab_ref; - unsigned int slab_size; - char name[8]; +enum tg_state_flags { + THROTL_TG_PENDING = 1, + THROTL_TG_WAS_EMPTY = 2, }; 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_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, + LIMIT_LOW = 0, + LIMIT_MAX = 1, + LIMIT_CNT = 2, }; -enum { - WBT_RWQ_BG = 0, - WBT_RWQ_KSWAPD = 1, - WBT_RWQ_DISCARD = 2, - WBT_NUM_RWQ = 3, +enum prio_policy { + POLICY_NO_CHANGE = 0, + POLICY_NONE_TO_RT = 1, + POLICY_RESTRICT_TO_BE = 2, + POLICY_ALL_TO_IDLE = 3, }; -struct req_iterator { - struct bvec_iter iter; - struct bio *bio; +struct ioprio_blkg { + struct blkg_policy_data pd; }; -struct blk_plug_cb; - -typedef void (*blk_plug_cb_fn)(struct blk_plug_cb *, bool); +struct ioprio_blkcg { + struct blkcg_policy_data cpd; + enum prio_policy prio_policy; +}; -struct blk_plug_cb { - struct list_head list; - blk_plug_cb_fn callback; - void *data; +struct blk_ioprio { + struct rq_qos rqos; }; enum { - BLK_MQ_REQ_NOWAIT = 1, - BLK_MQ_REQ_RESERVED = 2, - BLK_MQ_REQ_PM = 4, -}; + 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, + VTIME_PER_SEC_SHIFT = 37, + VTIME_PER_SEC = 0, + VTIME_PER_USEC = 137438, + VTIME_PER_NSEC = 137, + VRATE_MIN_PPM = 10000, + VRATE_MAX_PPM = 100000000, + VRATE_MIN = 1374, + VRATE_CLAMP_ADJ_PCT = 4, + 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, + AUTOP_CYCLE_NSEC = 1410065408, + IOC_PAGE_SHIFT = 12, + IOC_PAGE_SIZE = 4096, + IOC_SECT_TO_PAGE_SHIFT = 3, + LCOEF_RANDIO_PAGES = 4096, +} __attribute__((mode(word))); -struct trace_event_raw_block_buffer { - struct trace_entry ent; - dev_t dev; - sector_t sector; - size_t size; - char __data[0]; +enum ioc_running { + IOC_IDLE = 0, + IOC_RUNNING = 1, + IOC_STOP = 2, }; -struct trace_event_raw_block_rq_requeue { - struct trace_entry ent; - dev_t dev; - sector_t sector; - unsigned int nr_sector; - char rwbs[8]; - u32 __data_loc_cmd; - char __data[0]; +enum { + QOS_ENABLE = 0, + QOS_CTRL = 1, + NR_QOS_CTRL_PARAMS = 2, }; -struct trace_event_raw_block_rq_complete { - struct trace_entry ent; - dev_t dev; - sector_t sector; - unsigned int nr_sector; - int error; - char rwbs[8]; - u32 __data_loc_cmd; - char __data[0]; +enum { + QOS_RPPM = 0, + QOS_RLAT = 1, + QOS_WPPM = 2, + QOS_WLAT = 3, + QOS_MIN = 4, + QOS_MAX = 5, + NR_QOS_PARAMS = 6, }; -struct trace_event_raw_block_rq { - struct trace_entry ent; - dev_t dev; - sector_t sector; - unsigned int nr_sector; - unsigned int bytes; - char rwbs[8]; - char comm[16]; - u32 __data_loc_cmd; - char __data[0]; +enum { + COST_CTRL = 0, + COST_MODEL = 1, + NR_COST_CTRL_PARAMS = 2, }; -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[8]; - char __data[0]; +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, }; -struct trace_event_raw_block_bio { - struct trace_entry ent; - dev_t dev; - sector_t sector; - unsigned int nr_sector; - char rwbs[8]; - char comm[16]; - char __data[0]; +enum { + LCOEF_RPAGE = 0, + LCOEF_RSEQIO = 1, + LCOEF_RRANDIO = 2, + LCOEF_WPAGE = 3, + LCOEF_WSEQIO = 4, + LCOEF_WRANDIO = 5, + NR_LCOEFS = 6, }; -struct trace_event_raw_block_plug { - struct trace_entry ent; - char comm[16]; - char __data[0]; +enum { + AUTOP_INVALID = 0, + AUTOP_HDD = 1, + AUTOP_SSD_QD1 = 2, + AUTOP_SSD_DFL = 3, + AUTOP_SSD_FAST = 4, }; -struct trace_event_raw_block_unplug { - struct trace_entry ent; - int nr_rq; - char comm[16]; - char __data[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 trace_event_raw_block_split { - struct trace_entry ent; - dev_t dev; - sector_t sector; - sector_t new_sector; - char rwbs[8]; - char comm[16]; - char __data[0]; +struct ioc_margins { + s64 min; + s64 low; + s64 target; }; -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[8]; - char __data[0]; +struct ioc_missed { + local_t nr_met; + local_t nr_missed; + u32 last_met; + u32 last_missed; }; -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[8]; - char __data[0]; +struct ioc_pcpu_stat { + struct ioc_missed missed[2]; + local64_t rq_wait_ns; + u64 last_rq_wait_ns; }; -struct trace_event_data_offsets_block_buffer {}; - -struct trace_event_data_offsets_block_rq_requeue { - u32 cmd; +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 *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 trace_event_data_offsets_block_rq_complete { - u32 cmd; +struct iocg_pcpu_stat { + local64_t abs_vusage; }; -struct trace_event_data_offsets_block_rq { - u32 cmd; +struct iocg_stat { + u64 usage_us; + u64 wait_us; + u64 indebt_us; + u64 indelay_us; }; -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 {}; - -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 *, int, 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_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_NO_TAG = 4294967295, - BLK_MQ_TAG_MIN = 1, - BLK_MQ_TAG_MAX = 4294967294, +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 *pcpu_stat; + struct iocg_stat local_stat; + struct iocg_stat desc_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 queue_sysfs_entry { - struct attribute attr; - ssize_t (*show)(struct request_queue *, char *); - ssize_t (*store)(struct request_queue *, const char *, size_t); +struct ioc_cgrp { + struct blkcg_policy_data cpd; + unsigned int dfl_weight; }; -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, +struct ioc_now { + u64 now_ns; + u64 now; + u64 vnow; + u64 vrate; }; -enum { - ICQ_EXITED = 4, - ICQ_DESTROYED = 8, +struct iocg_wait { + struct wait_queue_entry wait; + struct bio *bio; + u64 abs_cost; + bool committed; }; -struct rq_map_data { - struct page **pages; - int page_order; - int nr_entries; - long unsigned int offset; - int null_mapped; - int from_user; +struct iocg_wake_ctx { + struct ioc_gq *iocg; + u32 hw_inuse; + s64 vbudget; }; -struct bio_map_data { - bool is_our_pages: 1; - bool is_null_mapped: 1; - struct iov_iter iter; - struct iovec iov[0]; +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]; }; -enum bio_merge_status { - BIO_MERGE_OK = 0, - BIO_MERGE_NONE = 1, - BIO_MERGE_FAILED = 2, +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]; }; -typedef bool (*sb_for_each_fn)(struct sbitmap *, unsigned int, void *); - -enum { - BLK_MQ_UNIQUE_TAG_BITS = 16, - BLK_MQ_UNIQUE_TAG_MASK = 65535, +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 mq_inflight { - struct block_device *part; - unsigned int inflight[2]; +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 flush_busy_ctx_data { - struct blk_mq_hw_ctx *hctx; - struct list_head *list; +struct trace_event_data_offsets_iocost_iocg_state { + u32 devname; + u32 cgroup; }; -struct dispatch_rq_data { - struct blk_mq_hw_ctx *hctx; - struct request *rq; +struct trace_event_data_offsets_iocg_inuse_update { + u32 devname; + u32 cgroup; }; -enum prep_dispatch { - PREP_DISPATCH_OK = 0, - PREP_DISPATCH_NO_TAG = 1, - PREP_DISPATCH_NO_BUDGET = 2, +struct trace_event_data_offsets_iocost_ioc_vrate_adj { + u32 devname; }; -struct rq_iter_data { - struct blk_mq_hw_ctx *hctx; - bool has_rq; +struct trace_event_data_offsets_iocost_iocg_forgive_debt { + u32 devname; + u32 cgroup; }; -struct blk_mq_qe_pair { - struct list_head node; - struct request_queue *q; - struct elevator_type *type; -}; +typedef void (*btf_trace_iocost_iocg_activate)(void *, struct ioc_gq *, const char *, struct ioc_now *, u64, u64, u64); -struct sbq_wait { - struct sbitmap_queue *sbq; - struct wait_queue_entry wait; -}; +typedef void (*btf_trace_iocost_iocg_idle)(void *, struct ioc_gq *, const char *, struct ioc_now *, u64, u64, u64); -typedef bool busy_iter_fn(struct blk_mq_hw_ctx *, struct request *, void *, bool); +typedef void (*btf_trace_iocost_inuse_shortage)(void *, struct ioc_gq *, const char *, struct ioc_now *, u32, u32, u64, u64); -typedef bool busy_tag_iter_fn(struct request *, void *, bool); +typedef void (*btf_trace_iocost_inuse_transfer)(void *, struct ioc_gq *, const char *, struct ioc_now *, u32, u32, u64, u64); -struct bt_iter_data { - struct blk_mq_hw_ctx *hctx; - busy_iter_fn *fn; - void *data; - bool reserved; -}; +typedef void (*btf_trace_iocost_inuse_adjust)(void *, struct ioc_gq *, const char *, struct ioc_now *, u32, u32, u64, u64); -struct bt_tags_iter_data { - struct blk_mq_tags *tags; - busy_tag_iter_fn *fn; - void *data; - unsigned int flags; -}; +typedef void (*btf_trace_iocost_ioc_vrate_adj)(void *, struct ioc *, u64, u32 *, u32, int, int); -struct blk_queue_stats { - struct list_head callbacks; - spinlock_t lock; - bool enable_accounting; +typedef void (*btf_trace_iocost_iocg_forgive_debt)(void *, struct ioc_gq *, const char *, struct ioc_now *, u32, u64, u64, u64, u64); + +enum dd_data_dir { + DD_READ = 0, + DD_WRITE = 1, }; -struct blk_mq_ctx_sysfs_entry { - struct attribute attr; - ssize_t (*show)(struct blk_mq_ctx *, char *); - ssize_t (*store)(struct blk_mq_ctx *, const char *, size_t); +enum { + DD_DIR_COUNT = 2, }; -struct blk_mq_hw_ctx_sysfs_entry { - struct attribute attr; - ssize_t (*show)(struct blk_mq_hw_ctx *, char *); - ssize_t (*store)(struct blk_mq_hw_ctx *, const char *, size_t); +enum dd_prio { + DD_RT_PRIO = 0, + DD_BE_PRIO = 1, + DD_IDLE_PRIO = 2, + DD_PRIO_MAX = 2, }; -typedef u32 compat_caddr_t; +enum { + DD_PRIO_COUNT = 3, +}; -struct hd_geometry { - unsigned char heads; - unsigned char sectors; - short unsigned int cylinders; - long unsigned int start; +struct io_stats_per_prio { + local_t inserted; + local_t merged; + local_t dispatched; + local_t completed; }; -struct blkpg_ioctl_arg { - int op; - int flags; - int datalen; - void *data; +struct io_stats { + struct io_stats_per_prio stats[3]; }; -struct blkpg_partition { - long long int start; - long long int length; - int pno; - char devname[64]; - char volname[64]; +struct dd_per_prio { + struct list_head dispatch; + struct rb_root sort_list[2]; + struct list_head fifo_list[2]; + struct request *next_rq[2]; }; -struct pr_reservation { - __u64 key; - __u32 type; - __u32 flags; +struct deadline_data { + struct dd_per_prio per_prio[3]; + enum dd_data_dir last_dir; + unsigned int batching; + unsigned int starved; + struct io_stats *stats; + int fifo_expire[2]; + int fifo_batch; + int writes_starved; + int front_merges; + u32 async_depth; + spinlock_t lock; + spinlock_t zone_lock; }; -struct pr_registration { - __u64 old_key; - __u64 new_key; - __u32 flags; - __u32 __pad; +enum bip_flags { + BIP_BLOCK_INTEGRITY = 1, + BIP_MAPPED_INTEGRITY = 2, + BIP_CTRL_NOCHECK = 4, + BIP_DISK_NOCHECK = 8, + BIP_IP_CHECKSUM = 16, }; -struct pr_preempt { - __u64 old_key; - __u64 new_key; - __u32 type; - __u32 flags; +enum blk_integrity_flags { + BLK_INTEGRITY_VERIFY = 1, + BLK_INTEGRITY_GENERATE = 2, + BLK_INTEGRITY_DEVICE_CAPABLE = 4, + BLK_INTEGRITY_IP_CHECKSUM = 8, }; -struct pr_clear { - __u64 key; - __u32 flags; - __u32 __pad; +struct integrity_sysfs_entry { + struct attribute attr; + ssize_t (*show)(struct blk_integrity *, char *); + ssize_t (*store)(struct blk_integrity *, const char *, size_t); }; -struct compat_blkpg_ioctl_arg { - compat_int_t op; - compat_int_t flags; - compat_int_t datalen; - compat_caddr_t data; +enum t10_dif_type { + T10_PI_TYPE0_PROTECTION = 0, + T10_PI_TYPE1_PROTECTION = 1, + T10_PI_TYPE2_PROTECTION = 2, + T10_PI_TYPE3_PROTECTION = 3, }; -struct compat_hd_geometry { - unsigned char heads; - unsigned char sectors; - short unsigned int cylinders; - u32 start; +struct t10_pi_tuple { + __be16 guard_tag; + __be16 app_tag; + __be32 ref_tag; }; -struct klist_node; +typedef __be16 csum_fn(void *, unsigned int); -struct klist { - spinlock_t k_lock; - struct list_head k_list; - void (*get)(struct klist_node *); - void (*put)(struct klist_node *); +struct virtio_device_id { + __u32 device; + __u32 vendor; }; -struct klist_node { - void *n_klist; - struct list_head n_node; - struct kref n_ref; -}; +struct virtio_device; -struct klist_iter { - struct klist *i_klist; - struct klist_node *i_cur; +struct virtqueue { + struct list_head list; + void (*callback)(struct virtqueue *); + const char *name; + struct virtio_device *vdev; + unsigned int index; + unsigned int num_free; + void *priv; }; -struct class_dev_iter { - struct klist_iter ki; - const struct device_type *type; -}; +struct vringh_config_ops; -enum { - DISK_EVENT_FLAG_POLL = 1, - DISK_EVENT_FLAG_UEVENT = 2, -}; +struct virtio_config_ops; -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 int poll_msecs; - struct delayed_work dwork; +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 badblocks { - struct device *dev; - int count; - int unacked_exist; - int shift; - u64 *page; - int changed; - seqlock_t lock; - sector_t sector; - sector_t size; -}; +typedef void vq_callback_t(struct virtqueue *); -struct disk_part_iter { - struct gendisk *disk; - struct block_device *part; - int idx; - unsigned int flags; -}; +struct virtio_shm_region; -struct blk_major_name { - struct blk_major_name *next; - int major; - char name[16]; - void (*probe)(dev_t); +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 *); + 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); }; -enum { - IOPRIO_WHO_PROCESS = 1, - IOPRIO_WHO_PGRP = 2, - IOPRIO_WHO_USER = 3, +struct virtio_shm_region { + u64 addr; + u64 len; }; -struct parsed_partitions { - struct block_device *bdev; - 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; -}; +struct irq_poll; -typedef struct { - struct page *v; -} Sector; +typedef int irq_poll_fn(struct irq_poll *, int); -struct RigidDiskBlock { - __u32 rdb_ID; - __be32 rdb_SummedLongs; - __s32 rdb_ChkSum; - __u32 rdb_HostID; - __be32 rdb_BlockBytes; - __u32 rdb_Flags; - __u32 rdb_BadBlockList; - __be32 rdb_PartitionList; - __u32 rdb_FileSysHeaderList; - __u32 rdb_DriveInit; - __u32 rdb_Reserved1[6]; - __u32 rdb_Cylinders; - __u32 rdb_Sectors; - __u32 rdb_Heads; - __u32 rdb_Interleave; - __u32 rdb_Park; - __u32 rdb_Reserved2[3]; - __u32 rdb_WritePreComp; - __u32 rdb_ReducedWrite; - __u32 rdb_StepRate; - __u32 rdb_Reserved3[5]; - __u32 rdb_RDBBlocksLo; - __u32 rdb_RDBBlocksHi; - __u32 rdb_LoCylinder; - __u32 rdb_HiCylinder; - __u32 rdb_CylBlocks; - __u32 rdb_AutoParkSeconds; - __u32 rdb_HighRDSKBlock; - __u32 rdb_Reserved4; - char rdb_DiskVendor[8]; - char rdb_DiskProduct[16]; - char rdb_DiskRevision[4]; - char rdb_ControllerVendor[8]; - char rdb_ControllerProduct[16]; - char rdb_ControllerRevision[4]; - __u32 rdb_Reserved5[10]; +struct irq_poll { + struct list_head list; + long unsigned int state; + int weight; + irq_poll_fn *poll; }; -struct PartitionBlock { - __be32 pb_ID; - __be32 pb_SummedLongs; - __s32 pb_ChkSum; - __u32 pb_HostID; - __be32 pb_Next; - __u32 pb_Flags; - __u32 pb_Reserved1[2]; - __u32 pb_DevFlags; - __u8 pb_DriveName[32]; - __u32 pb_Reserved2[15]; - __be32 pb_Environment[17]; - __u32 pb_EReserved[15]; +struct dim_sample { + ktime_t time; + u32 pkt_ctr; + u32 byte_ctr; + u16 event_ctr; + u32 comp_ctr; }; -struct partition_info { - u8 flg; - char id[3]; - __be32 st; - __be32 siz; +struct dim_stats { + int ppms; + int bpms; + int epms; + int cpms; + int cpe_ratio; }; -struct rootsector { - char unused[342]; - struct partition_info icdpart[8]; - char unused2[12]; - u32 hd_siz; - struct partition_info part[4]; - u32 bsl_st; - u32 bsl_cnt; - u16 checksum; -} __attribute__((packed)); - -struct lvm_rec { - char lvm_id[4]; - char reserved4[16]; - __be32 lvmarea_len; - __be32 vgda_len; - __be32 vgda_psn[2]; - char reserved36[10]; - __be16 pp_size; - char reserved46[12]; - __be16 version; +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; }; -struct vgda { - __be32 secs; - __be32 usec; - char reserved8[16]; - __be16 numlvs; - __be16 maxlvs; - __be16 pp_size; - __be16 numpvs; - __be16 total_vgdas; - __be16 vgda_size; +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, }; -struct lvd { - __be16 lv_ix; - __be16 res2; - __be16 res4; - __be16 maxsize; - __be16 lv_state; - __be16 mirror; - __be16 mirror_policy; - __be16 num_lps; - __be16 res10[8]; +enum rdma_nl_counter_mask { + RDMA_COUNTER_MASK_QP_TYPE = 1, + RDMA_COUNTER_MASK_PID = 2, }; -struct lvname { - char name[64]; +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 ppe { - __be16 lv_ix; - short unsigned int res2; - short unsigned int res4; - __be16 lp_ix; - short unsigned int res8[12]; +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 pvd { - char reserved0[16]; - __be16 pp_count; - char reserved18[2]; - __be32 psn_part1; - char reserved24[8]; - struct ppe ppe[1016]; +struct rdma_link_ops { + struct list_head list; + const char *type; + int (*newlink)(const char *, struct net_device *); }; -struct lv_info { - short unsigned int pps_per_lv; - short unsigned int pps_found; - unsigned char lv_is_contiguous; +struct auto_mode_param { + int qp_type; }; -struct cmdline_subpart { - char name[32]; - sector_t from; - sector_t size; - int flags; - struct cmdline_subpart *next_subpart; +struct rdma_counter_mode { + enum rdma_nl_counter_mode mode; + enum rdma_nl_counter_mask mask; + struct auto_mode_param param; }; -struct cmdline_parts { - char name[32]; - unsigned int nr_subparts; - struct cmdline_subpart *subpart; - struct cmdline_parts *next_parts; -}; +struct rdma_hw_stats; -struct mac_partition { - __be16 signature; - __be16 res1; - __be32 map_count; - __be32 start_block; - __be32 block_count; - char name[32]; - char type[32]; - __be32 data_start; - __be32 data_count; - __be32 status; - __be32 boot_start; - __be32 boot_size; - __be32 boot_load; - __be32 boot_load2; - __be32 boot_entry; - __be32 boot_entry2; - __be32 boot_cksum; - char processor[16]; +struct rdma_port_counter { + struct rdma_counter_mode mode; + struct rdma_hw_stats *hstats; + unsigned int num_counters; + struct mutex lock; }; -struct mac_driver_desc { - __be16 signature; - __be16 block_size; - __be32 block_count; +struct rdma_hw_stats { + struct mutex lock; + long unsigned int timestamp; + long unsigned int lifespan; + const char * const *names; + int num_counters; + u64 value[0]; }; -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 ib_device; -struct frag { - struct list_head list; - u32 group; - u8 num; - u8 rec; - u8 map; - u8 data[0]; +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 privhead { - u16 ver_major; - u16 ver_minor; - u64 logical_disk_start; - u64 logical_disk_size; - u64 config_start; - u64 config_size; - uuid_t disk_id; +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, }; -struct tocblock { - u8 bitmap1_name[16]; - u64 bitmap1_start; - u64 bitmap1_size; - u8 bitmap2_name[16]; - u64 bitmap2_start; - u64 bitmap2_size; +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 vmdb { - u16 ver_major; - u16 ver_minor; - u32 vblk_size; - u32 vblk_offset; - u32 last_vblk_seq; -}; +struct ib_mad; -struct vblk_comp { - u8 state[16]; - u64 parent_id; - u8 type; - u8 children; - u16 chunksize; +enum rdma_link_layer { + IB_LINK_LAYER_UNSPECIFIED = 0, + IB_LINK_LAYER_INFINIBAND = 1, + IB_LINK_LAYER_ETHERNET = 2, }; -struct vblk_dgrp { - u8 disk_id[64]; +enum rdma_netdev_t { + RDMA_NETDEV_OPA_VNIC = 0, + RDMA_NETDEV_IPOIB = 1, }; -struct vblk_disk { - uuid_t disk_id; - u8 alt_name[128]; +enum ib_srq_attr_mask { + IB_SRQ_MAX_WR = 1, + IB_SRQ_LIMIT = 2, }; -struct vblk_part { - u64 start; - u64 size; - u64 volume_offset; - u64 parent_id; - u64 disk_id; - u8 partnum; +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, }; -struct vblk_volu { - u8 volume_type[16]; - u8 volume_state[16]; - u8 guid[16]; - u8 drive_hint[4]; - u64 size; - u8 partition_type; +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 vblk { - u8 name[64]; - u64 obj_id; - u32 sequence; - u8 flags; - u8 type; - union { - struct vblk_comp comp; - struct vblk_dgrp dgrp; - struct vblk_disk disk; - struct vblk_part part; - struct vblk_volu volu; - } vblk; - struct list_head list; -}; +struct uverbs_attr_bundle; -struct ldmdb { - struct privhead ph; - struct tocblock toc; - struct vmdb vm; - struct list_head v_dgrp; - struct list_head v_disk; - struct list_head v_volu; - struct list_head v_comp; - struct list_head v_part; -}; +struct rdma_cm_id; -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 iw_cm_id; -struct solaris_x86_slice { - __le16 s_tag; - __le16 s_flag; - __le32 s_start; - __le32 s_size; -}; +struct iw_cm_conn_param; -struct solaris_x86_vtoc { - unsigned int v_bootinfo[3]; - __le32 v_sanity; - __le32 v_version; - char v_volume[8]; - __le16 v_sectorsz; - __le16 v_nparts; - unsigned int v_reserved[10]; - struct solaris_x86_slice v_slice[16]; - unsigned int timestamp[16]; - char v_asciilabel[128]; -}; +struct ib_qp; -struct bsd_partition { - __le32 p_size; - __le32 p_offset; - __le32 p_fsize; - __u8 p_fstype; - __u8 p_frag; - __le16 p_cpg; -}; +struct ib_send_wr; -struct bsd_disklabel { - __le32 d_magic; - __s16 d_type; - __s16 d_subtype; - char d_typename[16]; - char d_packname[16]; - __u32 d_secsize; - __u32 d_nsectors; - __u32 d_ntracks; - __u32 d_ncylinders; - __u32 d_secpercyl; - __u32 d_secperunit; - __u16 d_sparespertrack; - __u16 d_sparespercyl; - __u32 d_acylinders; - __u16 d_rpm; - __u16 d_interleave; - __u16 d_trackskew; - __u16 d_cylskew; - __u32 d_headswitch; - __u32 d_trkseek; - __u32 d_flags; - __u32 d_drivedata[5]; - __u32 d_spare[5]; - __le32 d_magic2; - __le16 d_checksum; - __le16 d_npartitions; - __le32 d_bbsize; - __le32 d_sbsize; - struct bsd_partition d_partitions[16]; -}; +struct ib_recv_wr; -struct unixware_slice { - __le16 s_label; - __le16 s_flags; - __le32 start_sect; - __le32 nr_sects; -}; +struct ib_cq; -struct unixware_vtoc { - __le32 v_magic; - __le32 v_version; - char v_name[8]; - __le16 v_nslices; - __le16 v_unknown1; - __le32 v_reserved[10]; - struct unixware_slice v_slice[16]; -}; +struct ib_wc; -struct unixware_disklabel { - __le32 d_type; - __le32 d_magic; - __le32 d_version; - char d_serial[12]; - __le32 d_ncylinders; - __le32 d_ntracks; - __le32 d_nsectors; - __le32 d_secsize; - __le32 d_part_start; - __le32 d_unknown1[12]; - __le32 d_alt_tbl; - __le32 d_alt_len; - __le32 d_phys_cyl; - __le32 d_phys_trk; - __le32 d_phys_sec; - __le32 d_phys_bytes; - __le32 d_unknown2; - __le32 d_unknown3; - __le32 d_pad[8]; - struct unixware_vtoc vtoc; -}; +struct ib_srq; -struct d_partition { - __le32 p_size; - __le32 p_offset; - __le32 p_fsize; - u8 p_fstype; - u8 p_frag; - __le16 p_cpg; -}; +struct ib_grh; -struct disklabel { - __le32 d_magic; - __le16 d_type; - __le16 d_subtype; - u8 d_typename[16]; - u8 d_packname[16]; - __le32 d_secsize; - __le32 d_nsectors; - __le32 d_ntracks; - __le32 d_ncylinders; - __le32 d_secpercyl; - __le32 d_secprtunit; - __le16 d_sparespertrack; - __le16 d_sparespercyl; - __le32 d_acylinders; - __le16 d_rpm; - __le16 d_interleave; - __le16 d_trackskew; - __le16 d_cylskew; - __le32 d_headswitch; - __le32 d_trkseek; - __le32 d_flags; - __le32 d_drivedata[5]; - __le32 d_spare[5]; - __le32 d_magic2; - __le16 d_checksum; - __le16 d_npartitions; - __le32 d_bbsize; - __le32 d_sbsize; - struct d_partition d_partitions[18]; -}; +struct ib_device_attr; -enum { - LINUX_RAID_PARTITION___2 = 253, -}; +struct ib_udata; -struct sgi_volume { - s8 name[8]; - __be32 block_num; - __be32 num_bytes; -}; +struct ib_device_modify; -struct sgi_partition { - __be32 num_blocks; - __be32 first_block; - __be32 type; -}; +struct ib_port_attr; -struct sgi_disklabel { - __be32 magic_mushroom; - __be16 root_part_num; - __be16 swap_part_num; - s8 boot_file[16]; - u8 _unused0[48]; - struct sgi_volume volume[15]; - struct sgi_partition partitions[16]; - __be32 csum; - __be32 _unused1; -}; +struct ib_port_modify; -enum { - SUN_WHOLE_DISK = 5, - LINUX_RAID_PARTITION___3 = 253, -}; +struct ib_port_immutable; -struct sun_info { - __be16 id; - __be16 flags; -}; +struct rdma_netdev_alloc_params; -struct sun_vtoc { - __be32 version; - char volume[8]; - __be16 nparts; - struct sun_info infos[8]; - __be16 padding; - __be32 bootinfo[3]; - __be32 sanity; - __be32 reserved[10]; - __be32 timestamp[8]; -}; +union ib_gid; -struct sun_partition { - __be32 start_cylinder; - __be32 num_sectors; -}; +struct ib_gid_attr; -struct sun_disklabel { - unsigned char info[128]; - struct sun_vtoc vtoc; - __be32 write_reinstruct; - __be32 read_reinstruct; - unsigned char spare[148]; - __be16 rspeed; - __be16 pcylcount; - __be16 sparecyl; - __be16 obs1; - __be16 obs2; - __be16 ilfact; - __be16 ncyl; - __be16 nacyl; - __be16 ntrks; - __be16 nsect; - __be16 obs3; - __be16 obs4; - struct sun_partition partitions[8]; - __be16 magic; - __be16 csum; -}; +struct ib_ucontext; + +struct rdma_user_mmap_entry; + +struct ib_pd; + +struct ib_ah; + +struct rdma_ah_init_attr; + +struct rdma_ah_attr; -struct pt_info { - s32 pi_nblocks; - u32 pi_blkoff; -}; +struct ib_srq_init_attr; -struct ultrix_disklabel { - s32 pt_magic; - s32 pt_valid; - struct pt_info pt_part[8]; -}; +struct ib_srq_attr; -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)); +struct ib_qp_init_attr; -typedef struct _gpt_header gpt_header; +struct ib_qp_attr; -struct _gpt_entry_attributes { - u64 required_to_function: 1; - u64 reserved: 47; - u64 type_guid_specific: 16; -}; +struct ib_cq_init_attr; -typedef struct _gpt_entry_attributes gpt_entry_attributes; +struct ib_mr; -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]; -}; +struct ib_sge; -typedef struct _gpt_entry gpt_entry; +struct ib_mr_status; -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; -}; +struct ib_mw; -typedef struct _gpt_mbr_record gpt_mbr_record; +struct ib_xrcd; -struct _legacy_mbr { - u8 boot_code[440]; - __le32 unique_mbr_signature; - __le16 unknown; - gpt_mbr_record partition_record[4]; - __le16 signature; -} __attribute__((packed)); +struct ib_flow; -typedef struct _legacy_mbr legacy_mbr; +struct ib_flow_attr; -struct d_partition___2 { - __le32 p_res; - u8 p_fstype; - u8 p_res2[3]; - __le32 p_offset; - __le32 p_size; -}; +struct ib_flow_action; -struct disklabel___2 { - u8 d_reserved[270]; - struct d_partition___2 d_partitions[2]; - u8 d_blank[208]; - __le16 d_magic; -} __attribute__((packed)); +struct ib_flow_action_attrs_esp; -struct volumeid { - u8 vid_unused[248]; - u8 vid_mac[8]; -}; +struct ib_wq; -struct dkconfig { - u8 ios_unused0[128]; - __be32 ios_slcblk; - __be16 ios_slccnt; - u8 ios_unused1[122]; -}; +struct ib_wq_init_attr; -struct dkblk0 { - struct volumeid dk_vid; - struct dkconfig dk_ios; -}; +struct ib_wq_attr; -struct slice { - __be32 nblocks; - __be32 blkoff; -}; +struct ib_rwq_ind_table; -struct rq_wait { - wait_queue_head_t wait; - atomic_t inflight; -}; +struct ib_rwq_ind_table_init_attr; -struct rq_depth { - unsigned int max_depth; - int scale_step; - bool scaled_max; - unsigned int queue_depth; - unsigned int default_depth; -}; +struct ib_dm; -typedef bool acquire_inflight_cb_t(struct rq_wait *, void *); +struct ib_dm_alloc_attr; -typedef void cleanup_cb_t(struct rq_wait *, void *); +struct ib_dm_mr_attr; -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 ib_counters; + +struct ib_counters_read_attr; + +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 *); + struct ib_flow_action * (*create_flow_action_esp)(struct ib_device *, const struct ib_flow_action_attrs_esp *, struct uverbs_attr_bundle *); + int (*destroy_flow_action)(struct ib_flow_action *); + int (*modify_flow_action_esp)(struct ib_flow_action *, const struct ib_flow_action_attrs_esp *, struct uverbs_attr_bundle *); + 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 (*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; }; -struct cdrom_device_ops; +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; +}; -struct cdrom_device_info { - const struct cdrom_device_ops *ops; - struct list_head list; - struct gendisk *disk; - void *handle; - int mask; - int speed; - int capacity; - unsigned int options: 30; - unsigned int mc_flags: 2; - unsigned int vfs_events; - unsigned int ioctl_events; - int use_count; - char name[20]; - __u8 sanyo_slot: 2; - __u8 keeplocked: 1; - __u8 reserved: 5; - int cdda_method; - __u8 last_sense; - __u8 media_written; - short unsigned int mmc3_profile; - int for_data; - int (*exit)(struct cdrom_device_info *); - int mrw_mode_page; +enum ib_atomic_cap { + IB_ATOMIC_NONE = 0, + IB_ATOMIC_HCA = 1, + IB_ATOMIC_GLOB = 2, }; -struct scsi_sense_hdr { - u8 response_code; - u8 sense_key; - u8 asc; - u8 ascq; - u8 byte4; - u8 byte5; - u8 byte6; - u8 additional_length; +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 cdrom_msf0 { - __u8 minute; - __u8 second; - __u8 frame; +struct ib_rss_caps { + u32 supported_qpts; + u32 max_rwq_indirection_tables; + u32 max_rwq_indirection_table_size; }; -union cdrom_addr { - struct cdrom_msf0 msf; - int lba; +struct ib_tm_caps { + u32 max_rndv_hdr_size; + u32 max_num_tags; + u32 flags; + u32 max_ops; + u32 max_sge; }; -struct cdrom_multisession { - union cdrom_addr addr; - __u8 xa_flag; - __u8 addr_format; +struct ib_cq_caps { + u16 max_cq_moderation_count; + u16 max_cq_moderation_period; }; -struct cdrom_mcn { - __u8 medium_catalog_number[14]; +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; + 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 request_sense; +struct hw_stats_device_data; -struct cdrom_generic_command { - unsigned char cmd[12]; - unsigned char *buffer; - unsigned int buflen; - int stat; - struct request_sense *sense; - unsigned char data_direction; - int quiet; - int timeout; +struct rdma_restrack_root; + +struct uapi_definition; + +struct ib_port_data; + +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 { - void *reserved[1]; - void *unused; + 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; + struct rdmacg_device cg_device; + 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 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]; +enum ib_signature_type { + IB_SIG_TYPE_NONE = 0, + IB_SIG_TYPE_T10_DIF = 1, }; -struct packet_command { - unsigned char cmd[12]; - unsigned char *buffer; - unsigned int buflen; - int stat; - struct scsi_sense_hdr *sshdr; - unsigned char data_direction; - int quiet; - int timeout; - void *reserved[1]; +enum ib_t10_dif_bg_type { + IB_T10DIF_CRC = 0, + IB_T10DIF_CSUM = 1, }; -struct cdrom_device_ops { - int (*open)(struct cdrom_device_info *, int); - void (*release)(struct cdrom_device_info *); - int (*drive_status)(struct cdrom_device_info *, int); - unsigned int (*check_events)(struct cdrom_device_info *, unsigned int, int); - int (*tray_move)(struct cdrom_device_info *, int); - int (*lock_door)(struct cdrom_device_info *, int); - int (*select_speed)(struct cdrom_device_info *, int); - int (*select_disc)(struct cdrom_device_info *, int); - int (*get_last_session)(struct cdrom_device_info *, struct cdrom_multisession *); - int (*get_mcn)(struct cdrom_device_info *, struct cdrom_mcn *); - int (*reset)(struct cdrom_device_info *); - int (*audio_ioctl)(struct cdrom_device_info *, unsigned int, void *); - const int capability; - int (*generic_packet)(struct cdrom_device_info *, struct packet_command *); +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 scsi_ioctl_command { - unsigned int inlen; - unsigned int outlen; - unsigned char data[0]; +struct ib_sig_domain { + enum ib_signature_type sig_type; + union { + struct ib_t10_dif_domain dif; + } sig; }; -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, +struct ib_sig_attrs { + u8 check_mask; + struct ib_sig_domain mem; + struct ib_sig_domain wire; + int meta_length; }; -struct scsi_request { - unsigned char __cmd[16]; - unsigned char *cmd; - short unsigned int cmd_len; - int result; - unsigned int sense_len; - unsigned int resid_len; - int retries; - void *sense; +enum ib_sig_err_type { + IB_SIG_BAD_GUARD = 0, + IB_SIG_BAD_REFTAG = 1, + IB_SIG_BAD_APPTAG = 2, }; -struct sg_io_hdr { - int interface_id; - int dxfer_direction; - unsigned char cmd_len; - unsigned char mx_sb_len; - short unsigned int iovec_count; - unsigned int dxfer_len; - void *dxferp; - unsigned char *cmdp; - void *sbp; - unsigned int timeout; - unsigned int flags; - int pack_id; - void *usr_ptr; - unsigned char status; - unsigned char masked_status; - unsigned char msg_status; - unsigned char sb_len_wr; - short unsigned int host_status; - short unsigned int driver_status; - int resid; - unsigned int duration; - unsigned int info; +struct ib_sig_err { + enum ib_sig_err_type err_type; + u32 expected; + u32 actual; + u64 sig_err_offset; + u32 key; }; -struct compat_sg_io_hdr { - compat_int_t interface_id; - compat_int_t dxfer_direction; - unsigned char cmd_len; - unsigned char mx_sb_len; - short unsigned int 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; - short unsigned int host_status; - short unsigned int driver_status; - compat_int_t resid; - compat_uint_t duration; - compat_uint_t info; +enum ib_uverbs_flow_action_esp_keymat { + IB_UVERBS_FLOW_ACTION_ESP_KEYMAT_AES_GCM = 0, }; -struct blk_cmd_filter { - long unsigned int read_ok[4]; - long unsigned int write_ok[4]; +struct ib_uverbs_flow_action_esp_keymat_aes_gcm { + __u64 iv; + __u32 iv_algo; + __u32 salt; + __u32 icv_len; + __u32 key_len; + __u32 aes_key[8]; }; -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; +enum ib_uverbs_flow_action_esp_replay { + IB_UVERBS_FLOW_ACTION_ESP_REPLAY_NONE = 0, + IB_UVERBS_FLOW_ACTION_ESP_REPLAY_BMP = 1, }; -enum { - OMAX_SB_LEN = 16, +struct ib_uverbs_flow_action_esp_replay_bmp { + __u32 size; }; -struct bsg_device { - struct request_queue *queue; - spinlock_t lock; - struct hlist_node dev_list; - refcount_t ref_count; - char name[20]; - int max_queue; +union ib_gid { + u8 raw[16]; + struct { + __be64 subnet_prefix; + __be64 interface_id; + } global; }; -struct bsg_job; - -typedef int bsg_job_fn(struct bsg_job *); - -struct bsg_buffer { - unsigned int payload_len; - int sg_cnt; - struct scatterlist *sg_list; +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 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; +struct ib_gid_attr { + struct net_device *ndev; + struct ib_device *device; + union ib_gid gid; + enum ib_gid_type gid_type; + u16 index; + u32 port_num; }; -typedef enum blk_eh_timer_return bsg_timeout_fn(struct request *); - -struct bsg_set { - struct blk_mq_tag_set tag_set; - bsg_job_fn *job_fn; - bsg_timeout_fn *timeout_fn; +struct ib_cq_init_attr { + unsigned int cqe; + u32 comp_vector; + u32 flags; }; -typedef struct blkcg_policy_data *blkcg_pol_alloc_cpd_fn(gfp_t); - -typedef void blkcg_pol_init_cpd_fn(struct blkcg_policy_data *); - -typedef void blkcg_pol_free_cpd_fn(struct blkcg_policy_data *); - -typedef void blkcg_pol_bind_cpd_fn(struct blkcg_policy_data *); - -typedef struct blkg_policy_data *blkcg_pol_alloc_pd_fn(gfp_t, struct request_queue *, struct blkcg *); - -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 size_t blkcg_pol_stat_pd_fn(struct blkg_policy_data *, char *, size_t); - -struct blkcg_policy { - int plid; - struct cftype *dfl_cftypes; - struct cftype *legacy_cftypes; - blkcg_pol_alloc_cpd_fn *cpd_alloc_fn; - blkcg_pol_init_cpd_fn *cpd_init_fn; - blkcg_pol_free_cpd_fn *cpd_free_fn; - blkcg_pol_bind_cpd_fn *cpd_bind_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 ib_dm_mr_attr { + u64 length; + u64 offset; + u32 access_flags; }; -struct blkg_conf_ctx { - struct block_device *bdev; - struct blkcg_gq *blkg; - char *body; +struct ib_dm_alloc_attr { + u64 length; + u32 alignment; + u32 flags; }; -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, +enum ib_mtu { + IB_MTU_256 = 1, + IB_MTU_512 = 2, + IB_MTU_1024 = 3, + IB_MTU_2048 = 4, + IB_MTU_4096 = 5, }; -struct blkg_rwstat { - struct percpu_counter cpu_cnt[5]; - atomic64_t aux_cnt[5]; +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, }; -struct blkg_rwstat_sample { - u64 cnt[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 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; - long unsigned int first_pending_disptime; - struct timer_list pending_timer; +struct ib_device_modify { + u64 sys_image_guid; + char node_desc[64]; }; -struct latency_bucket { - long unsigned int total_latency; - int samples; +struct ib_port_modify { + u32 set_port_cap_mask; + u32 clr_port_cap_mask; + u8 init_type; }; -struct avg_latency_bucket { - long unsigned int latency; - bool valid; +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 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]; - long unsigned int low_upgrade_time; - long unsigned int low_downgrade_time; - unsigned int scale; - struct latency_bucket tmp_buckets[18]; - struct avg_latency_bucket avg_buckets[18]; - struct latency_bucket *latency_buckets[2]; - long unsigned int last_calculate_time; - long unsigned int filtered_latency; - bool track_bio_latency; -}; +struct ib_ucq_object; -struct throtl_grp; +typedef void (*ib_comp_handler)(struct ib_cq *, void *); -struct throtl_qnode { - struct list_head node; - struct bio_list bios; - struct throtl_grp *tg; -}; +struct ib_event; -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]; - long unsigned int disptime; - unsigned int flags; - bool has_rules[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]; - long unsigned int last_low_overflow_time[2]; - uint64_t last_bytes_disp[2]; - unsigned int last_io_disp[2]; - long unsigned int last_check_time; - long unsigned int latency_target; - long unsigned int latency_target_conf; - long unsigned int slice_start[2]; - long unsigned int slice_end[2]; - long unsigned int last_finish_time; - long unsigned int checked_last_finish_time; - long unsigned int avg_idletime; - long unsigned int idletime_threshold; - long unsigned int idletime_threshold_conf; - unsigned int bio_cnt; - unsigned int bad_bio_cnt; - long unsigned int bio_cnt_reset_time; - atomic_t io_split_cnt[2]; - atomic_t last_io_split_cnt[2]; - struct blkg_rwstat stat_bytes; - struct blkg_rwstat stat_ios; +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 tg_state_flags { - THROTL_TG_PENDING = 1, - THROTL_TG_WAS_EMPTY = 2, -}; +struct ib_uqp_object; -enum { - LIMIT_LOW = 0, - LIMIT_MAX = 1, - LIMIT_CNT = 2, +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 { - 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, - VTIME_PER_SEC_SHIFT = 37, - VTIME_PER_SEC = 0, - VTIME_PER_USEC = 137438, - VTIME_PER_NSEC = 137, - VRATE_MIN_PPM = 10000, - VRATE_MAX_PPM = 100000000, - VRATE_MIN = 1374, - VRATE_CLAMP_ADJ_PCT = 4, - 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, - AUTOP_CYCLE_NSEC = 1410065408, - IOC_PAGE_SHIFT = 12, - IOC_PAGE_SIZE = 4096, - IOC_SECT_TO_PAGE_SHIFT = 3, - LCOEF_RANDIO_PAGES = 4096, -}; +struct ib_qp_security; -enum ioc_running { - IOC_IDLE = 0, - IOC_RUNNING = 1, - IOC_STOP = 2, +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; }; -enum { - QOS_ENABLE = 0, - QOS_CTRL = 1, - NR_QOS_CTRL_PARAMS = 2, +struct ib_usrq_object; + +enum ib_srq_type { + IB_SRQT_BASIC = 0, + IB_SRQT_XRC = 1, + IB_SRQT_TM = 2, }; -enum { - QOS_RPPM = 0, - QOS_RLAT = 1, - QOS_WPPM = 2, - QOS_WLAT = 3, - QOS_MIN = 4, - QOS_MAX = 5, - NR_QOS_PARAMS = 6, +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; }; -enum { - COST_CTRL = 0, - COST_MODEL = 1, - NR_COST_CTRL_PARAMS = 2, -}; +struct ib_uwq_object; -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 ib_wq_state { + IB_WQS_RESET = 0, + IB_WQS_RDY = 1, + IB_WQS_ERR = 2, }; -enum { - LCOEF_RPAGE = 0, - LCOEF_RSEQIO = 1, - LCOEF_RRANDIO = 2, - LCOEF_WPAGE = 3, - LCOEF_WSEQIO = 4, - LCOEF_WRANDIO = 5, - NR_LCOEFS = 6, +enum ib_wq_type { + IB_WQT_RQ = 0, }; -enum { - AUTOP_INVALID = 0, - AUTOP_HDD = 1, - AUTOP_SSD_QD1 = 2, - AUTOP_SSD_DFL = 3, - AUTOP_SSD_FAST = 4, +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; }; -struct ioc_params { - u32 qos[6]; - u64 i_lcoefs[6]; - u64 lcoefs[6]; - u32 too_fast_vrate_pct; - u32 too_slow_vrate_pct; +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 ioc_margins { - s64 min; - s64 low; - s64 target; +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 ioc_missed { - local_t nr_met; - local_t nr_missed; - u32 last_met; - u32 last_missed; +struct ib_grh { + __be32 version_tclass_flow; + __be16 paylen; + u8 next_hdr; + u8 hop_limit; + union ib_gid sgid; + union ib_gid dgid; }; -struct ioc_pcpu_stat { - struct ioc_missed missed[2]; - local64_t rq_wait_ns; - u64 last_rq_wait_ns; +struct ib_mr_status { + u32 fail_status; + struct ib_sig_err sig_err; }; -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 *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 rdma_ah_init_attr { + struct rdma_ah_attr *ah_attr; + u32 flags; + struct net_device *xmit_slave; }; -struct iocg_pcpu_stat { - local64_t abs_vusage; +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 iocg_stat { - u64 usage_us; - u64 wait_us; - u64 indebt_us; - u64 indelay_us; +struct ib_ah_attr { + u16 dlid; + u8 src_path_bits; }; -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 *pcpu_stat; - struct iocg_stat local_stat; - struct iocg_stat desc_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 roce_ah_attr { + u8 dmac[6]; }; -struct ioc_cgrp { - struct blkcg_policy_data cpd; - unsigned int dfl_weight; +struct opa_ah_attr { + u32 dlid; + u8 src_path_bits; + bool make_grd; }; -struct ioc_now { - u64 now_ns; - u64 now; - u64 vnow; - u64 vrate; +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 iocg_wait { - struct wait_queue_entry wait; - struct bio *bio; - u64 abs_cost; - bool committed; +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, }; -struct iocg_wake_ctx { - struct ioc_gq *iocg; - u32 hw_inuse; - s64 vbudget; +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_REG_MR = 8, + IB_WC_MASKED_COMP_SWAP = 9, + IB_WC_MASKED_FETCH_ADD = 10, + IB_WC_RECV = 128, + IB_WC_RECV_RDMA_WITH_IMM = 129, }; -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 ib_cqe { + void (*done)(struct ib_cq *, struct ib_wc *); }; -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 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 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 ib_srq_attr { + u32 max_wr; + u32 max_sge; + u32 srq_limit; }; -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 ib_xrcd { + struct ib_device *device; + atomic_t usecnt; + struct inode *inode; + struct rw_semaphore tgt_qps_rwsem; + struct xarray tgt_qps; }; -struct trace_event_data_offsets_iocost_iocg_state { - u32 devname; - u32 cgroup; +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 trace_event_data_offsets_iocg_inuse_update { - u32 devname; - u32 cgroup; +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; }; -struct trace_event_data_offsets_iocost_ioc_vrate_adj { - u32 devname; +enum ib_sig_type { + IB_SIGNAL_ALL_WR = 0, + IB_SIGNAL_REQ_WR = 1, }; -struct trace_event_data_offsets_iocost_iocg_forgive_debt { - u32 devname; - u32 cgroup; +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; }; -typedef void (*btf_trace_iocost_iocg_activate)(void *, struct ioc_gq *, const char *, struct ioc_now *, u64, u64, u64); +struct ib_uobject; -typedef void (*btf_trace_iocost_iocg_idle)(void *, struct ioc_gq *, const char *, struct ioc_now *, u64, u64, u64); +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; +}; -typedef void (*btf_trace_iocost_inuse_shortage)(void *, struct ioc_gq *, const char *, struct ioc_now *, u32, u32, u64, u64); +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, +}; -typedef void (*btf_trace_iocost_inuse_transfer)(void *, struct ioc_gq *, const char *, struct ioc_now *, u32, u32, u64, u64); +enum ib_mig_state { + IB_MIG_MIGRATED = 0, + IB_MIG_REARM = 1, + IB_MIG_ARMED = 2, +}; -typedef void (*btf_trace_iocost_inuse_adjust)(void *, struct ioc_gq *, const char *, struct ioc_now *, u32, u32, u64, u64); +enum ib_mw_type { + IB_MW_TYPE_1 = 1, + IB_MW_TYPE_2 = 2, +}; -typedef void (*btf_trace_iocost_ioc_vrate_adj)(void *, struct ioc *, u64, u32 *, u32, int, int); +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; +}; -typedef void (*btf_trace_iocost_iocg_forgive_debt)(void *, struct ioc_gq *, const char *, struct ioc_now *, u32, u64, u64, u64, u64); +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_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 deadline_data { - struct rb_root sort_list[2]; - struct list_head fifo_list[2]; - struct request *next_rq[2]; - unsigned int batching; - unsigned int starved; - int fifo_expire[2]; - int fifo_batch; - int writes_starved; - int front_merges; - spinlock_t lock; - spinlock_t zone_lock; - struct list_head dispatch; +struct ib_sge { + u64 addr; + u32 length; + u32 lkey; }; -enum bip_flags { - BIP_BLOCK_INTEGRITY = 1, - BIP_MAPPED_INTEGRITY = 2, - BIP_CTRL_NOCHECK = 4, - BIP_DISK_NOCHECK = 8, - BIP_IP_CHECKSUM = 16, +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; }; -enum blk_integrity_flags { - BLK_INTEGRITY_VERIFY = 1, - BLK_INTEGRITY_GENERATE = 2, - BLK_INTEGRITY_DEVICE_CAPABLE = 4, - BLK_INTEGRITY_IP_CHECKSUM = 8, +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 integrity_sysfs_entry { - struct attribute attr; - ssize_t (*show)(struct blk_integrity *, char *); - ssize_t (*store)(struct blk_integrity *, const char *, size_t); +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; }; -enum t10_dif_type { - T10_PI_TYPE0_PROTECTION = 0, - T10_PI_TYPE1_PROTECTION = 1, - T10_PI_TYPE2_PROTECTION = 2, - T10_PI_TYPE3_PROTECTION = 3, +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 t10_pi_tuple { - __be16 guard_tag; - __be16 app_tag; - __be32 ref_tag; +struct ib_rdmacg_object { + struct rdma_cgroup *cg; }; -typedef __be16 csum_fn(void *, unsigned int); +struct ib_uverbs_file; -struct virtio_device_id { - __u32 device; - __u32 vendor; +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 virtio_device; +struct uverbs_api_object; -struct virtqueue { +struct ib_uobject { + u64 user_handle; + struct ib_uverbs_file *ufile; + struct ib_ucontext *context; + void *object; struct list_head list; - void (*callback)(struct virtqueue *); - const char *name; - struct virtio_device *vdev; - unsigned int index; - unsigned int num_free; - void *priv; + 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 vringh_config_ops; - -struct virtio_config_ops; +struct ib_udata { + const void *inbuf; + void *outbuf; + size_t inlen; + size_t outlen; +}; -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 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; }; -typedef void vq_callback_t(struct virtqueue *); +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 virtio_shm_region; +struct ib_wq_attr { + enum ib_wq_state wq_state; + enum ib_wq_state curr_wq_state; + u32 flags; + u32 flags_mask; +}; -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 *); - 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); +struct ib_rwq_ind_table_init_attr { + u32 log_ind_tbl_size; + struct ib_wq **ind_tbl; }; -struct virtio_shm_region { - u64 addr; - u64 len; +enum port_pkey_state { + IB_PORT_PKEY_NOT_VALID = 0, + IB_PORT_PKEY_VALID = 1, + IB_PORT_PKEY_LISTED = 2, }; -struct irq_poll; +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; +}; -typedef int irq_poll_fn(struct irq_poll *, int); +struct ib_ports_pkeys; -struct irq_poll { - struct list_head list; - long unsigned int state; - int weight; - irq_poll_fn *poll; +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; }; -struct dim_sample { - ktime_t time; - u32 pkt_ctr; - u32 byte_ctr; - u16 event_ctr; - u32 comp_ctr; +struct ib_ports_pkeys { + struct ib_port_pkey main; + struct ib_port_pkey alt; }; -struct dim_stats { - int ppms; - int bpms; - int epms; - int cpms; - int cpe_ratio; +struct ib_dm { + struct ib_device *device; + u32 length; + u32 flags; + struct ib_uobject *uobject; + atomic_t usecnt; }; -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; +struct ib_mw { + struct ib_device *device; + struct ib_pd *pd; + struct ib_uobject *uobject; + u32 rkey; + enum ib_mw_type type; }; -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 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, }; -enum rdma_nl_counter_mask { - RDMA_COUNTER_MASK_QP_TYPE = 1, - RDMA_COUNTER_MASK_PID = 2, +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, }; -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_MAX = 7, +struct ib_flow_eth_filter { + u8 dst_mac[6]; + u8 src_mac[6]; + __be16 ether_type; + __be16 vlan_tag; + u8 real_sz[0]; }; -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_flow_spec_eth { + u32 type; + u16 size; + struct ib_flow_eth_filter val; + struct ib_flow_eth_filter mask; }; -struct rdma_link_ops { - struct list_head list; - const char *type; - int (*newlink)(const char *, struct net_device *); +struct ib_flow_ib_filter { + __be16 dlid; + __u8 sl; + u8 real_sz[0]; }; -struct auto_mode_param { - int qp_type; +struct ib_flow_spec_ib { + u32 type; + u16 size; + struct ib_flow_ib_filter val; + struct ib_flow_ib_filter mask; }; -struct rdma_counter_mode { - enum rdma_nl_counter_mode mode; - enum rdma_nl_counter_mask mask; - struct auto_mode_param param; +struct ib_flow_ipv4_filter { + __be32 src_ip; + __be32 dst_ip; + u8 proto; + u8 tos; + u8 ttl; + u8 flags; + u8 real_sz[0]; }; -struct rdma_hw_stats; - -struct rdma_port_counter { - struct rdma_counter_mode mode; - struct rdma_hw_stats *hstats; - unsigned int num_counters; - struct mutex lock; +struct ib_flow_spec_ipv4 { + u32 type; + u16 size; + struct ib_flow_ipv4_filter val; + struct ib_flow_ipv4_filter mask; }; -struct rdma_hw_stats { - struct mutex lock; - long unsigned int timestamp; - long unsigned int lifespan; - const char * const *names; - int num_counters; - u64 value[0]; +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_device; - -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; - u8 port; +struct ib_flow_spec_ipv6 { + u32 type; + u16 size; + struct ib_flow_ipv6_filter val; + struct ib_flow_ipv6_filter mask; }; -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_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, +struct ib_flow_tcp_udp_filter { + __be16 dst_port; + __be16 src_port; + u8 real_sz[0]; }; -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_flow_spec_tcp_udp { + u32 type; + u16 size; + struct ib_flow_tcp_udp_filter val; + struct ib_flow_tcp_udp_filter mask; }; -struct ib_mad; - -enum rdma_link_layer { - IB_LINK_LAYER_UNSPECIFIED = 0, - IB_LINK_LAYER_INFINIBAND = 1, - IB_LINK_LAYER_ETHERNET = 2, +struct ib_flow_tunnel_filter { + __be32 tunnel_id; + u8 real_sz[0]; }; -enum rdma_netdev_t { - RDMA_NETDEV_OPA_VNIC = 0, - RDMA_NETDEV_IPOIB = 1, +struct ib_flow_spec_tunnel { + u32 type; + u16 size; + struct ib_flow_tunnel_filter val; + struct ib_flow_tunnel_filter mask; }; -enum ib_srq_attr_mask { - IB_SRQ_MAX_WR = 1, - IB_SRQ_LIMIT = 2, +struct ib_flow_esp_filter { + __be32 spi; + __be32 seq; + u8 real_sz[0]; }; -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, +struct ib_flow_spec_esp { + u32 type; + u16 size; + struct ib_flow_esp_filter val; + struct ib_flow_esp_filter mask; }; -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 ib_flow_gre_filter { + __be16 c_ks_res0_ver; + __be16 protocol; + __be32 key; + u8 real_sz[0]; }; -struct uverbs_attr_bundle; - -struct rdma_cm_id; +struct ib_flow_spec_gre { + u32 type; + u16 size; + struct ib_flow_gre_filter val; + struct ib_flow_gre_filter mask; +}; -struct iw_cm_id; +struct ib_flow_mpls_filter { + __be32 tag; + u8 real_sz[0]; +}; -struct iw_cm_conn_param; +struct ib_flow_spec_mpls { + u32 type; + u16 size; + struct ib_flow_mpls_filter val; + struct ib_flow_mpls_filter mask; +}; -struct ib_qp; +struct ib_flow_spec_action_tag { + enum ib_flow_spec_type type; + u16 size; + u32 tag_id; +}; -struct ib_send_wr; +struct ib_flow_spec_action_drop { + enum ib_flow_spec_type type; + u16 size; +}; -struct ib_recv_wr; +struct ib_flow_spec_action_handle { + enum ib_flow_spec_type type; + u16 size; + struct ib_flow_action *act; +}; -struct ib_cq; +enum ib_flow_action_type { + IB_FLOW_ACTION_UNSPECIFIED = 0, + IB_FLOW_ACTION_ESP = 1, +}; -struct ib_wc; +struct ib_flow_action { + struct ib_device *device; + struct ib_uobject *uobject; + enum ib_flow_action_type type; + atomic_t usecnt; +}; -struct ib_srq; +struct ib_flow_spec_action_count { + enum ib_flow_spec_type type; + u16 size; + struct ib_counters *counters; +}; -struct ib_grh; +struct ib_counters { + struct ib_device *device; + struct ib_uobject *uobject; + atomic_t usecnt; +}; -struct ib_device_attr; +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_udata; +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]; +}; -struct ib_device_modify; +struct ib_flow { + struct ib_qp *qp; + struct ib_device *device; + struct ib_uobject *uobject; +}; -struct ib_port_attr; +struct ib_flow_action_attrs_esp_keymats { + enum ib_uverbs_flow_action_esp_keymat protocol; + union { + struct ib_uverbs_flow_action_esp_keymat_aes_gcm aes_gcm; + } keymat; +}; -struct ib_port_modify; +struct ib_flow_action_attrs_esp_replays { + enum ib_uverbs_flow_action_esp_replay protocol; + union { + struct ib_uverbs_flow_action_esp_replay_bmp bmp; + } replay; +}; -struct ib_port_immutable; +struct ib_flow_spec_list { + struct ib_flow_spec_list *next; + union ib_flow_spec spec; +}; -struct rdma_netdev_alloc_params; +struct ib_flow_action_attrs_esp { + struct ib_flow_action_attrs_esp_keymats *keymat; + struct ib_flow_action_attrs_esp_replays *replay; + struct ib_flow_spec_list *encap; + u32 esn; + u32 spi; + u32 seq; + u32 tfc_pad; + u64 flags; + u64 hard_limit_pkts; +}; -struct ib_gid_attr; +struct ib_pkey_cache; -struct ib_ucontext; +struct ib_gid_table; -struct rdma_user_mmap_entry; +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 ib_pd; +struct ib_port_immutable { + int pkey_tbl_len; + int gid_tbl_len; + u32 core_cap_flags; + u32 max_mad_size; +}; -struct ib_ah; +struct ib_port; -struct rdma_ah_init_attr; +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 *netdev; + struct hlist_node ndev_hash_link; + struct rdma_port_counter port_counter; + struct ib_port *sysfs; +}; -struct rdma_ah_attr; +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 ib_srq_init_attr; +struct ib_counters_read_attr { + u64 *counters_buff; + u32 ncounters; + u32 flags; +}; -struct ib_srq_attr; +struct rdma_user_mmap_entry { + struct kref ref; + struct ib_ucontext *ucontext; + long unsigned int start_pgoff; + size_t npages; + bool driver_removed; +}; -struct ib_qp_init_attr; +enum blk_zone_type { + BLK_ZONE_TYPE_CONVENTIONAL = 1, + BLK_ZONE_TYPE_SEQWRITE_REQ = 2, + BLK_ZONE_TYPE_SEQWRITE_PREF = 3, +}; -struct ib_qp_attr; +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 ib_cq_init_attr; +enum blk_zone_report_flags { + BLK_ZONE_REP_CAPACITY = 1, +}; -struct ib_mr; +struct blk_zone_report { + __u64 sector; + __u32 nr_zones; + __u32 flags; + struct blk_zone zones[0]; +}; -struct ib_sge; +struct blk_zone_range { + __u64 sector; + __u64 nr_sectors; +}; -struct ib_mr_status; +struct zone_report_args { + struct blk_zone *zones; +}; -struct ib_mw; +struct blk_revalidate_zone_args { + struct gendisk *disk; + long unsigned int *conv_zones_bitmap; + long unsigned int *seq_zones_wlock; + unsigned int nr_zones; + sector_t zone_sectors; + sector_t sector; +}; -struct ib_xrcd; +enum wbt_flags { + WBT_TRACKED = 1, + WBT_READ = 2, + WBT_KSWAPD = 4, + WBT_DISCARD = 8, + WBT_NR_BITS = 4, +}; -struct ib_flow; +enum { + WBT_STATE_ON_DEFAULT = 1, + WBT_STATE_ON_MANUAL = 2, + WBT_STATE_OFF_DEFAULT = 3, +}; -struct ib_flow_attr; +struct rq_wb { + unsigned int wb_background; + unsigned int wb_normal; + short int 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; + long unsigned int last_issue; + long unsigned int last_comp; + long unsigned int min_lat_nsec; + struct rq_qos rqos; + struct rq_wait rq_wait[3]; + struct rq_depth rq_depth; +}; -struct ib_flow_action; +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 ib_flow_action_attrs_esp; +struct trace_event_raw_wbt_lat { + struct trace_entry ent; + char name[32]; + long unsigned int lat; + char __data[0]; +}; -struct ib_wq; +struct trace_event_raw_wbt_step { + struct trace_entry ent; + char name[32]; + const char *msg; + int step; + long unsigned int window; + unsigned int bg; + unsigned int normal; + unsigned int max; + char __data[0]; +}; -struct ib_wq_init_attr; +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 ib_wq_attr; +struct trace_event_data_offsets_wbt_stat {}; -struct ib_rwq_ind_table; +struct trace_event_data_offsets_wbt_lat {}; -struct ib_rwq_ind_table_init_attr; +struct trace_event_data_offsets_wbt_step {}; -struct ib_dm; +struct trace_event_data_offsets_wbt_timer {}; -struct ib_dm_alloc_attr; +typedef void (*btf_trace_wbt_stat)(void *, struct backing_dev_info *, struct blk_rq_stat *); -struct ib_dm_mr_attr; +typedef void (*btf_trace_wbt_lat)(void *, struct backing_dev_info *, long unsigned int); -struct ib_counters; +typedef void (*btf_trace_wbt_step)(void *, struct backing_dev_info *, const char *, int, long unsigned int, unsigned int, unsigned int, unsigned int); -struct ib_counters_read_attr; +typedef void (*btf_trace_wbt_timer)(void *, struct backing_dev_info *, unsigned int, int, unsigned int); -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; - 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 (*req_ncomp_notif)(struct ib_cq *, int); - int (*post_srq_recv)(struct ib_srq *, const struct ib_recv_wr *, const struct ib_recv_wr **); - int (*process_mad)(struct ib_device *, int, u8, 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 *, u8, struct ib_port_attr *); - int (*modify_port)(struct ib_device *, u8, int, struct ib_port_modify *); - int (*get_port_immutable)(struct ib_device *, u8, struct ib_port_immutable *); - enum rdma_link_layer (*get_link_layer)(struct ib_device *, u8); - struct net_device * (*get_netdev)(struct ib_device *, u8); - struct net_device * (*alloc_rdma_netdev)(struct ib_device *, u8, enum rdma_netdev_t, const char *, unsigned char, void (*)(struct net_device *)); - int (*rdma_netdev_get_params)(struct ib_device *, u8, enum rdma_netdev_t, struct rdma_netdev_alloc_params *); - int (*query_gid)(struct ib_device *, u8, 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 *, u8, 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 *); - struct ib_qp * (*create_qp)(struct ib_pd *, 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 * (*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 *); - struct ib_flow_action * (*create_flow_action_esp)(struct ib_device *, const struct ib_flow_action_attrs_esp *, struct uverbs_attr_bundle *); - int (*destroy_flow_action)(struct ib_flow_action *); - int (*modify_flow_action_esp)(struct ib_flow_action *, const struct ib_flow_action_attrs_esp *, struct uverbs_attr_bundle *); - int (*set_vf_link_state)(struct ib_device *, int, u8, int); - int (*get_vf_config)(struct ib_device *, int, u8, struct ifla_vf_info *); - int (*get_vf_stats)(struct ib_device *, int, u8, struct ifla_vf_stats *); - int (*get_vf_guid)(struct ib_device *, int, u8, struct ifla_vf_guid *, struct ifla_vf_guid *); - int (*set_vf_guid)(struct ib_device *, int, u8, 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_stats)(struct ib_device *, u8); - int (*get_hw_stats)(struct ib_device *, struct rdma_hw_stats *, u8, int); - int (*init_port)(struct ib_device *, u8, struct kobject *); - 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 *); - 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_rwq_ind_table; - size_t size_ib_srq; - size_t size_ib_ucontext; - size_t size_ib_xrcd; +enum { + RWB_DEF_DEPTH = 16, + RWB_WINDOW_NSEC = 100000000, + RWB_MIN_WRITE_SAMPLES = 3, + RWB_UNKNOWN_BUMP = 5, }; -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 { + LAT_OK = 1, + LAT_UNKNOWN = 2, + LAT_UNKNOWN_WRITES = 3, + LAT_EXCEEDED = 4, }; -enum ib_atomic_cap { - IB_ATOMIC_NONE = 0, - IB_ATOMIC_HCA = 1, - IB_ATOMIC_GLOB = 2, +struct wbt_wait_data { + struct rq_wb *rwb; + enum wbt_flags wb_acct; + long unsigned int rw; }; -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 show_busy_params { + struct seq_file *m; + struct blk_mq_hw_ctx *hctx; }; -struct ib_rss_caps { - u32 supported_qpts; - u32 max_rwq_indirection_tables; - u32 max_rwq_indirection_table_size; +enum opal_mbr { + OPAL_MBR_ENABLE = 0, + OPAL_MBR_DISABLE = 1, }; -struct ib_tm_caps { - u32 max_rndv_hdr_size; - u32 max_num_tags; - u32 flags; - u32 max_ops; - u32 max_sge; +enum opal_mbr_done_flag { + OPAL_MBR_NOT_DONE = 0, + OPAL_MBR_DONE = 1, }; -struct ib_cq_caps { - u16 max_cq_moderation_count; - u16 max_cq_moderation_period; +enum opal_user { + OPAL_ADMIN1 = 0, + OPAL_USER1 = 1, + OPAL_USER2 = 2, + OPAL_USER3 = 3, + OPAL_USER4 = 4, + OPAL_USER5 = 5, + OPAL_USER6 = 6, + OPAL_USER7 = 7, + OPAL_USER8 = 8, + OPAL_USER9 = 9, }; -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; - 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; +enum opal_lock_state { + OPAL_RO = 1, + OPAL_RW = 2, + OPAL_LK = 4, }; -struct rdma_restrack_root; - -struct uapi_definition; - -struct ib_port_data; - -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[3]; - 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; - u8 phys_port_cnt; - struct ib_device_attr attrs; - struct attribute_group *hw_stats_ag; - struct rdma_hw_stats *hw_stats; - struct rdmacg_device cg_device; - 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 opal_key { + __u8 lr; + __u8 key_len; + __u8 __align[6]; + __u8 key[256]; }; -enum ib_signature_type { - IB_SIG_TYPE_NONE = 0, - IB_SIG_TYPE_T10_DIF = 1, +struct opal_lr_act { + struct opal_key key; + __u32 sum; + __u8 num_lrs; + __u8 lr[9]; + __u8 align[2]; }; -enum ib_t10_dif_bg_type { - IB_T10DIF_CRC = 0, - IB_T10DIF_CSUM = 1, +struct opal_session_info { + __u32 sum; + __u32 who; + struct opal_key opal_key; }; -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 opal_user_lr_setup { + __u64 range_start; + __u64 range_length; + __u32 RLE; + __u32 WLE; + struct opal_session_info session; }; -struct ib_sig_domain { - enum ib_signature_type sig_type; - union { - struct ib_t10_dif_domain dif; - } sig; +struct opal_lock_unlock { + struct opal_session_info session; + __u32 l_state; + __u8 __align[4]; }; -struct ib_sig_attrs { - u8 check_mask; - struct ib_sig_domain mem; - struct ib_sig_domain wire; - int meta_length; +struct opal_new_pw { + struct opal_session_info session; + struct opal_session_info new_user_pw; }; -enum ib_sig_err_type { - IB_SIG_BAD_GUARD = 0, - IB_SIG_BAD_REFTAG = 1, - IB_SIG_BAD_APPTAG = 2, +struct opal_mbr_data { + struct opal_key key; + __u8 enable_disable; + __u8 __align[7]; }; -struct ib_sig_err { - enum ib_sig_err_type err_type; - u32 expected; - u32 actual; - u64 sig_err_offset; - u32 key; +struct opal_mbr_done { + struct opal_key key; + __u8 done_flag; + __u8 __align[7]; }; -enum ib_uverbs_flow_action_esp_keymat { - IB_UVERBS_FLOW_ACTION_ESP_KEYMAT_AES_GCM = 0, +struct opal_shadow_mbr { + struct opal_key key; + const __u64 data; + __u64 offset; + __u64 size; }; -struct ib_uverbs_flow_action_esp_keymat_aes_gcm { - __u64 iv; - __u32 iv_algo; - __u32 salt; - __u32 icv_len; - __u32 key_len; - __u32 aes_key[8]; +enum opal_table_ops { + OPAL_READ_TABLE = 0, + OPAL_WRITE_TABLE = 1, }; -enum ib_uverbs_flow_action_esp_replay { - IB_UVERBS_FLOW_ACTION_ESP_REPLAY_NONE = 0, - IB_UVERBS_FLOW_ACTION_ESP_REPLAY_BMP = 1, +struct opal_read_write_table { + struct opal_key key; + const __u64 data; + const __u8 table_uid[8]; + __u64 offset; + __u64 size; + __u64 flags; + __u64 priv; }; -struct ib_uverbs_flow_action_esp_replay_bmp { - __u32 size; -}; +typedef int sec_send_recv(void *, u16, u8, void *, size_t, bool); -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, +enum { + TCG_SECP_00 = 0, + TCG_SECP_01 = 1, }; -struct ib_gid_attr { - struct net_device *ndev; - struct ib_device *device; - union ib_gid gid; - enum ib_gid_type gid_type; - u16 index; - u8 port_num; +enum opal_response_token { + OPAL_DTA_TOKENID_BYTESTRING = 224, + OPAL_DTA_TOKENID_SINT = 225, + OPAL_DTA_TOKENID_UINT = 226, + OPAL_DTA_TOKENID_TOKEN = 227, + OPAL_DTA_TOKENID_INVALID = 0, }; -struct ib_cq_init_attr { - unsigned int cqe; - u32 comp_vector; - u32 flags; +enum opal_uid { + OPAL_SMUID_UID = 0, + OPAL_THISSP_UID = 1, + OPAL_ADMINSP_UID = 2, + OPAL_LOCKINGSP_UID = 3, + OPAL_ENTERPRISE_LOCKINGSP_UID = 4, + OPAL_ANYBODY_UID = 5, + OPAL_SID_UID = 6, + OPAL_ADMIN1_UID = 7, + OPAL_USER1_UID = 8, + OPAL_USER2_UID = 9, + OPAL_PSID_UID = 10, + OPAL_ENTERPRISE_BANDMASTER0_UID = 11, + OPAL_ENTERPRISE_ERASEMASTER_UID = 12, + OPAL_TABLE_TABLE = 13, + OPAL_LOCKINGRANGE_GLOBAL = 14, + OPAL_LOCKINGRANGE_ACE_RDLOCKED = 15, + OPAL_LOCKINGRANGE_ACE_WRLOCKED = 16, + OPAL_MBRCONTROL = 17, + OPAL_MBR = 18, + OPAL_AUTHORITY_TABLE = 19, + OPAL_C_PIN_TABLE = 20, + OPAL_LOCKING_INFO_TABLE = 21, + OPAL_ENTERPRISE_LOCKING_INFO_TABLE = 22, + OPAL_DATASTORE = 23, + OPAL_C_PIN_MSID = 24, + OPAL_C_PIN_SID = 25, + OPAL_C_PIN_ADMIN1 = 26, + OPAL_HALF_UID_AUTHORITY_OBJ_REF = 27, + OPAL_HALF_UID_BOOLEAN_ACE = 28, + OPAL_UID_HEXFF = 29, }; -struct ib_dm_mr_attr { - u64 length; - u64 offset; - u32 access_flags; +enum opal_method { + OPAL_PROPERTIES = 0, + OPAL_STARTSESSION = 1, + OPAL_REVERT = 2, + OPAL_ACTIVATE = 3, + OPAL_EGET = 4, + OPAL_ESET = 5, + OPAL_NEXT = 6, + OPAL_EAUTHENTICATE = 7, + OPAL_GETACL = 8, + OPAL_GENKEY = 9, + OPAL_REVERTSP = 10, + OPAL_GET = 11, + OPAL_SET = 12, + OPAL_AUTHENTICATE = 13, + OPAL_RANDOM = 14, + OPAL_ERASE = 15, }; -struct ib_dm_alloc_attr { - u64 length; - u32 alignment; - u32 flags; +enum opal_token { + OPAL_TRUE = 1, + OPAL_FALSE = 0, + OPAL_BOOLEAN_EXPR = 3, + OPAL_TABLE = 0, + OPAL_STARTROW = 1, + OPAL_ENDROW = 2, + OPAL_STARTCOLUMN = 3, + OPAL_ENDCOLUMN = 4, + OPAL_VALUES = 1, + OPAL_TABLE_UID = 0, + OPAL_TABLE_NAME = 1, + OPAL_TABLE_COMMON = 2, + OPAL_TABLE_TEMPLATE = 3, + OPAL_TABLE_KIND = 4, + OPAL_TABLE_COLUMN = 5, + OPAL_TABLE_COLUMNS = 6, + OPAL_TABLE_ROWS = 7, + OPAL_TABLE_ROWS_FREE = 8, + OPAL_TABLE_ROW_BYTES = 9, + OPAL_TABLE_LASTID = 10, + OPAL_TABLE_MIN = 11, + OPAL_TABLE_MAX = 12, + OPAL_PIN = 3, + OPAL_RANGESTART = 3, + OPAL_RANGELENGTH = 4, + OPAL_READLOCKENABLED = 5, + OPAL_WRITELOCKENABLED = 6, + OPAL_READLOCKED = 7, + OPAL_WRITELOCKED = 8, + OPAL_ACTIVEKEY = 10, + OPAL_LIFECYCLE = 6, + OPAL_MAXRANGES = 4, + OPAL_MBRENABLE = 1, + OPAL_MBRDONE = 2, + OPAL_HOSTPROPERTIES = 0, + OPAL_STARTLIST = 240, + OPAL_ENDLIST = 241, + OPAL_STARTNAME = 242, + OPAL_ENDNAME = 243, + OPAL_CALL = 248, + OPAL_ENDOFDATA = 249, + OPAL_ENDOFSESSION = 250, + OPAL_STARTTRANSACTON = 251, + OPAL_ENDTRANSACTON = 252, + OPAL_EMPTYATOM = 255, + OPAL_WHERE = 0, }; -enum ib_mtu { - IB_MTU_256 = 1, - IB_MTU_512 = 2, - IB_MTU_1024 = 3, - IB_MTU_2048 = 4, - IB_MTU_4096 = 5, +enum opal_parameter { + OPAL_SUM_SET_LIST = 393216, }; -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, +struct opal_compacket { + __be32 reserved0; + u8 extendedComID[4]; + __be32 outstandingData; + __be32 minTransfer; + __be32 length; }; -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 opal_packet { + __be32 tsn; + __be32 hsn; + __be32 seq_number; + __be16 reserved0; + __be16 ack_type; + __be32 acknowledgment; + __be32 length; }; -struct ib_device_modify { - u64 sys_image_guid; - char node_desc[64]; +struct opal_data_subpacket { + u8 reserved0[6]; + __be16 kind; + __be32 length; }; -struct ib_port_modify { - u32 set_port_cap_mask; - u32 clr_port_cap_mask; - u8 init_type; +struct opal_header { + struct opal_compacket cp; + struct opal_packet pkt; + struct opal_data_subpacket subpkt; }; -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 d0_header { + __be32 length; + __be32 revision; + __be32 reserved01; + __be32 reserved02; + u8 ignored[32]; }; -struct ib_ucq_object; - -typedef void (*ib_comp_handler)(struct ib_cq *, void *); - -struct ib_event; - -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; +struct d0_tper_features { + u8 supported_features; + u8 reserved01[3]; + __be32 reserved02; + __be32 reserved03; }; -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, +struct d0_locking_features { + u8 supported_features; + u8 reserved01[3]; + __be32 reserved02; + __be32 reserved03; }; -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; - u8 port; - bool integrity_en; - struct rdma_restrack_entry res; - struct rdma_counter *counter; +struct d0_geometry_features { + u8 header[4]; + u8 reserved01; + u8 reserved02[7]; + __be32 logical_block_size; + __be64 alignment_granularity; + __be64 lowest_aligned_lba; }; -struct ib_usrq_object; - -enum ib_srq_type { - IB_SRQT_BASIC = 0, - IB_SRQT_XRC = 1, - IB_SRQT_TM = 2, +struct d0_opal_v100 { + __be16 baseComID; + __be16 numComIDs; }; -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 d0_single_user_mode { + __be32 num_locking_objects; + u8 reserved01; + u8 reserved02; + __be16 reserved03; + __be32 reserved04; }; -struct ib_uwq_object; +struct d0_opal_v200 { + __be16 baseComID; + __be16 numComIDs; + u8 range_crossing; + u8 num_locking_admin_auth[2]; + u8 num_locking_user_auth[2]; + u8 initialPIN; + u8 revertedPIN; + u8 reserved01; + __be32 reserved02; +}; -enum ib_wq_state { - IB_WQS_RESET = 0, - IB_WQS_RDY = 1, - IB_WQS_ERR = 2, +struct d0_features { + __be16 code; + u8 r_version; + u8 length; + u8 features[0]; }; -enum ib_wq_type { - IB_WQT_RQ = 0, +struct opal_dev; + +struct opal_step { + int (*fn)(struct opal_dev *, void *); + void *data; }; -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 opal_atom_width { + OPAL_WIDTH_TINY = 0, + OPAL_WIDTH_SHORT = 1, + OPAL_WIDTH_MEDIUM = 2, + OPAL_WIDTH_LONG = 3, + OPAL_WIDTH_TOKEN = 4, }; -struct ib_event { - struct ib_device *device; +struct opal_resp_tok { + const u8 *pos; + size_t len; + enum opal_response_token type; + enum opal_atom_width width; union { - struct ib_cq *cq; - struct ib_qp *qp; - struct ib_srq *srq; - struct ib_wq *wq; - u8 port_num; - } element; - enum ib_event_type event; + u64 u; + s64 s; + } stored; }; -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 parsed_resp { + int num; + struct opal_resp_tok toks[64]; }; -struct ib_grh { - __be32 version_tclass_flow; - __be16 paylen; - u8 next_hdr; - u8 hop_limit; - union ib_gid sgid; - union ib_gid dgid; +struct opal_dev { + bool supported; + bool mbr_enabled; + void *data; + sec_send_recv *send_recv; + struct mutex dev_lock; + u16 comid; + u32 hsn; + u32 tsn; + u64 align; + u64 lowest_lba; + size_t pos; + u8 *cmd; + u8 *resp; + struct parsed_resp parsed; + size_t prev_d_len; + void *prev_data; + struct list_head unlk_lst; }; -struct ib_mr_status { - u32 fail_status; - struct ib_sig_err sig_err; -}; +typedef int cont_fn(struct opal_dev *); -struct rdma_ah_init_attr { - struct rdma_ah_attr *ah_attr; - u32 flags; - struct net_device *xmit_slave; +struct opal_suspend_data { + struct opal_lock_unlock unlk; + u8 lr; + struct list_head node; }; -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 blk_ksm_keyslot { + atomic_t slot_refs; + struct list_head idle_slot_node; + struct hlist_node hash_node; + const struct blk_crypto_key *key; + struct blk_keyslot_manager *ksm; }; -struct ib_ah_attr { - u16 dlid; - u8 src_path_bits; +struct blk_ksm_ll_ops { + int (*keyslot_program)(struct blk_keyslot_manager *, const struct blk_crypto_key *, unsigned int); + int (*keyslot_evict)(struct blk_keyslot_manager *, const struct blk_crypto_key *, unsigned int); }; -struct roce_ah_attr { - u8 dmac[6]; +struct blk_keyslot_manager { + struct blk_ksm_ll_ops ksm_ll_ops; + unsigned int max_dun_bytes_supported; + unsigned int crypto_modes_supported[4]; + struct device *dev; + unsigned int num_slots; + struct rw_semaphore lock; + 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_ksm_keyslot *slots; }; -struct opa_ah_attr { - u32 dlid; - u8 src_path_bits; - bool make_grd; +struct blk_crypto_mode { + const char *cipher_str; + unsigned int keysize; + unsigned int ivsize; }; -struct rdma_ah_attr { - struct ib_global_route grh; - u8 sl; - u8 static_rate; - u8 port_num; - u8 ah_flags; - enum rdma_ah_attr_type type; +struct bio_fallback_crypt_ctx { + struct bio_crypt_ctx crypt_ctx; + struct bvec_iter crypt_iter; union { - struct ib_ah_attr ib; - struct roce_ah_attr roce; - struct opa_ah_attr opa; + struct { + struct work_struct work; + struct bio *bio; + }; + struct { + void *bi_private_orig; + bio_end_io_t *bi_end_io_orig; + }; }; }; -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, +struct blk_crypto_keyslot { + enum blk_crypto_mode_num crypto_mode; + struct crypto_skcipher *tfms[4]; }; -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_REG_MR = 8, - IB_WC_MASKED_COMP_SWAP = 9, - IB_WC_MASKED_FETCH_ADD = 10, - IB_WC_RECV = 128, - IB_WC_RECV_RDMA_WITH_IMM = 129, +union blk_crypto_iv { + __le64 dun[4]; + u8 bytes[32]; }; -struct ib_cqe { - void (*done)(struct ib_cq *, struct ib_wc *); +struct bd_holder_disk { + struct list_head list; + struct block_device *bdev; + int refcnt; }; -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; - u8 port_num; - u8 smac[6]; - u16 vlan_id; - u8 network_hdr_type; -}; +struct io_wq; -struct ib_srq_attr { - u32 max_wr; - u32 max_sge; - u32 srq_limit; -}; +struct io_wq_work_node; -struct ib_xrcd { - struct ib_device *device; - atomic_t usecnt; - struct inode *inode; - struct rw_semaphore tgt_qps_rwsem; - struct xarray tgt_qps; +struct io_wq_work_list { + struct io_wq_work_node *first; + struct io_wq_work_node *last; }; -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 io_ring_ctx; -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; +struct io_uring_task { + int cached_refs; + struct xarray xa; + struct wait_queue_head wait; + const struct io_ring_ctx *last; + struct io_wq *io_wq; + struct percpu_counter inflight; + atomic_t inflight_tracked; + atomic_t in_idle; + spinlock_t task_lock; + struct io_wq_work_list task_list; + struct callback_head task_work; + bool task_running; }; -enum ib_sig_type { - IB_SIGNAL_ALL_WR = 0, - IB_SIGNAL_REQ_WR = 1, +struct xa_limit { + u32 max; + u32 min; }; -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; - u8 port_num; - struct ib_rwq_ind_table *rwq_ind_tbl; - u32 source_qpn; +struct iov_iter_state { + size_t iov_offset; + size_t count; + long unsigned int nr_segs; }; -struct ib_uobject; - -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 user_msghdr { + void *msg_name; + int msg_namelen; + struct iovec *msg_iov; + __kernel_size_t msg_iovlen; + void *msg_control; + __kernel_size_t msg_controllen; + unsigned int msg_flags; }; -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, +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; }; -enum ib_mig_state { - IB_MIG_MIGRATED = 0, - IB_MIG_REARM = 1, - IB_MIG_ARMED = 2, +struct scm_fp_list { + short int count; + short int max; + struct user_struct *user; + struct file *fp[253]; }; -enum ib_mw_type { - IB_MW_TYPE_1 = 1, - IB_MW_TYPE_2 = 2, +struct unix_skb_parms { + struct pid *pid; + kuid_t uid; + kgid_t gid; + struct scm_fp_list *fp; + struct lsmblob lsmblob; + u32 consumed; }; -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; - u8 port_num; - u8 timeout; - u8 retry_cnt; - u8 rnr_retry; - u8 alt_port_num; - u8 alt_timeout; - u32 rate_limit; - struct net_device *xmit_slave; +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]; }; -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_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 trace_event_raw_io_uring_register { + struct trace_entry ent; + void *ctx; + unsigned int opcode; + unsigned int nr_files; + unsigned int nr_bufs; + bool eventfd; + long int ret; + char __data[0]; }; -struct ib_sge { - u64 addr; - u32 length; - u32 lkey; +struct trace_event_raw_io_uring_file_get { + struct trace_entry ent; + void *ctx; + int fd; + char __data[0]; }; -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 io_wq_work; -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 trace_event_raw_io_uring_queue_async_work { + struct trace_entry ent; + void *ctx; + int rw; + void *req; + struct io_wq_work *work; + unsigned int flags; + char __data[0]; }; -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 io_wq_work_node { + struct io_wq_work_node *next; }; -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 io_wq_work { + struct io_wq_work_node list; + unsigned int flags; }; -struct ib_rdmacg_object { - struct rdma_cgroup *cg; +struct trace_event_raw_io_uring_defer { + struct trace_entry ent; + void *ctx; + void *req; + long long unsigned int data; + char __data[0]; }; -struct ib_uverbs_file; - -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 trace_event_raw_io_uring_link { + struct trace_entry ent; + void *ctx; + void *req; + void *target_req; + char __data[0]; }; -struct uverbs_api_object; +struct trace_event_raw_io_uring_cqring_wait { + struct trace_entry ent; + void *ctx; + int min_events; + char __data[0]; +}; -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 trace_event_raw_io_uring_fail_link { + struct trace_entry ent; + void *req; + void *link; + char __data[0]; }; -struct ib_udata { - const void *inbuf; - void *outbuf; - size_t inlen; - size_t outlen; +struct trace_event_raw_io_uring_complete { + struct trace_entry ent; + void *ctx; + u64 user_data; + int res; + unsigned int cflags; + char __data[0]; }; -struct ib_pd { - u32 local_dma_lkey; +struct trace_event_raw_io_uring_submit_sqe { + struct trace_entry ent; + void *ctx; + void *req; + u8 opcode; + u64 user_data; 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; + bool force_nonblock; + bool sq_thread; + char __data[0]; }; -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 trace_event_raw_io_uring_poll_arm { + struct trace_entry ent; + void *ctx; + void *req; + u8 opcode; + u64 user_data; + int mask; + int events; + char __data[0]; }; -struct ib_wq_attr { - enum ib_wq_state wq_state; - enum ib_wq_state curr_wq_state; - u32 flags; - u32 flags_mask; +struct trace_event_raw_io_uring_poll_wake { + struct trace_entry ent; + void *ctx; + u8 opcode; + u64 user_data; + int mask; + char __data[0]; }; -struct ib_rwq_ind_table_init_attr { - u32 log_ind_tbl_size; - struct ib_wq **ind_tbl; +struct trace_event_raw_io_uring_task_add { + struct trace_entry ent; + void *ctx; + u8 opcode; + u64 user_data; + int mask; + char __data[0]; }; -enum port_pkey_state { - IB_PORT_PKEY_NOT_VALID = 0, - IB_PORT_PKEY_VALID = 1, - IB_PORT_PKEY_LISTED = 2, +struct trace_event_raw_io_uring_task_run { + struct trace_entry ent; + void *ctx; + void *req; + u8 opcode; + u64 user_data; + char __data[0]; }; -struct ib_port_pkey { - enum port_pkey_state state; - u16 pkey_index; - u8 port_num; - struct list_head qp_list; - struct list_head to_error_list; - struct ib_qp_security *sec; -}; +struct trace_event_data_offsets_io_uring_create {}; -struct ib_ports_pkeys; +struct trace_event_data_offsets_io_uring_register {}; -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; -}; +struct trace_event_data_offsets_io_uring_file_get {}; -struct ib_ports_pkeys { - struct ib_port_pkey main; - struct ib_port_pkey alt; -}; +struct trace_event_data_offsets_io_uring_queue_async_work {}; -struct ib_dm { - struct ib_device *device; - u32 length; - u32 flags; - struct ib_uobject *uobject; - atomic_t usecnt; -}; +struct trace_event_data_offsets_io_uring_defer {}; -struct ib_mw { - struct ib_device *device; - struct ib_pd *pd; - struct ib_uobject *uobject; - u32 rkey; - enum ib_mw_type type; -}; +struct trace_event_data_offsets_io_uring_link {}; -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 trace_event_data_offsets_io_uring_cqring_wait {}; -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 trace_event_data_offsets_io_uring_fail_link {}; -struct ib_flow_eth_filter { - u8 dst_mac[6]; - u8 src_mac[6]; - __be16 ether_type; - __be16 vlan_tag; - u8 real_sz[0]; -}; +struct trace_event_data_offsets_io_uring_complete {}; -struct ib_flow_spec_eth { - u32 type; - u16 size; - struct ib_flow_eth_filter val; - struct ib_flow_eth_filter mask; -}; +struct trace_event_data_offsets_io_uring_submit_sqe {}; -struct ib_flow_ib_filter { - __be16 dlid; - __u8 sl; - u8 real_sz[0]; +struct trace_event_data_offsets_io_uring_poll_arm {}; + +struct trace_event_data_offsets_io_uring_poll_wake {}; + +struct trace_event_data_offsets_io_uring_task_add {}; + +struct trace_event_data_offsets_io_uring_task_run {}; + +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, bool, long int); + +typedef void (*btf_trace_io_uring_file_get)(void *, void *, int); + +typedef void (*btf_trace_io_uring_queue_async_work)(void *, void *, int, void *, struct io_wq_work *, unsigned int); + +typedef void (*btf_trace_io_uring_defer)(void *, void *, void *, long long unsigned int); + +typedef void (*btf_trace_io_uring_link)(void *, void *, void *, void *); + +typedef void (*btf_trace_io_uring_cqring_wait)(void *, void *, int); + +typedef void (*btf_trace_io_uring_fail_link)(void *, void *, void *); + +typedef void (*btf_trace_io_uring_complete)(void *, void *, u64, int, unsigned int); + +typedef void (*btf_trace_io_uring_submit_sqe)(void *, void *, void *, u8, u64, u32, bool, bool); + +typedef void (*btf_trace_io_uring_poll_arm)(void *, void *, void *, u8, u64, int, int); + +typedef void (*btf_trace_io_uring_poll_wake)(void *, void *, u8, u64, int); + +typedef void (*btf_trace_io_uring_task_add)(void *, void *, u8, u64, int); + +typedef void (*btf_trace_io_uring_task_run)(void *, void *, void *, u8, u64); + +struct io_uring_sqe { + __u8 opcode; + __u8 flags; + __u16 ioprio; + __s32 fd; + union { + __u64 off; + __u64 addr2; + }; + 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; + }; + __u64 user_data; + union { + __u16 buf_index; + __u16 buf_group; + }; + __u16 personality; + union { + __s32 splice_fd_in; + __u32 file_index; + }; + __u64 __pad2[2]; }; -struct ib_flow_spec_ib { - u32 type; - u16 size; - struct ib_flow_ib_filter val; - struct ib_flow_ib_filter mask; +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, }; -struct ib_flow_ipv4_filter { - __be32 src_ip; - __be32 dst_ip; - u8 proto; - u8 tos; - u8 ttl; - u8 flags; - u8 real_sz[0]; +enum { + 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_LAST = 40, }; -struct ib_flow_spec_ipv4 { - u32 type; - u16 size; - struct ib_flow_ipv4_filter val; - struct ib_flow_ipv4_filter mask; +struct io_uring_cqe { + __u64 user_data; + __s32 res; + __u32 flags; }; -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]; +enum { + IORING_CQE_BUFFER_SHIFT = 16, }; -struct ib_flow_spec_ipv6 { - u32 type; - u16 size; - struct ib_flow_ipv6_filter val; - struct ib_flow_ipv6_filter mask; +struct io_sqring_offsets { + __u32 head; + __u32 tail; + __u32 ring_mask; + __u32 ring_entries; + __u32 flags; + __u32 dropped; + __u32 array; + __u32 resv1; + __u64 resv2; }; -struct ib_flow_tcp_udp_filter { - __be16 dst_port; - __be16 src_port; - u8 real_sz[0]; +struct io_cqring_offsets { + __u32 head; + __u32 tail; + __u32 ring_mask; + __u32 ring_entries; + __u32 overflow; + __u32 cqes; + __u32 flags; + __u32 resv1; + __u64 resv2; }; -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 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 ib_flow_tunnel_filter { - __be32 tunnel_id; - u8 real_sz[0]; +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_LAST = 20, }; -struct ib_flow_spec_tunnel { - u32 type; - u16 size; - struct ib_flow_tunnel_filter val; - struct ib_flow_tunnel_filter mask; +struct io_uring_rsrc_register { + __u32 nr; + __u32 resv; + __u64 resv2; + __u64 data; + __u64 tags; }; -struct ib_flow_esp_filter { - __be32 spi; - __be32 seq; - u8 real_sz[0]; +struct io_uring_rsrc_update2 { + __u32 offset; + __u32 resv; + __u64 data; + __u64 tags; + __u32 nr; + __u32 resv2; }; -struct ib_flow_spec_esp { - u32 type; - u16 size; - struct ib_flow_esp_filter val; - struct ib_flow_esp_filter mask; +struct io_uring_probe_op { + __u8 op; + __u8 resv; + __u16 flags; + __u32 resv2; }; -struct ib_flow_gre_filter { - __be16 c_ks_res0_ver; - __be16 protocol; - __be32 key; - u8 real_sz[0]; +struct io_uring_probe { + __u8 last_op; + __u8 ops_len; + __u16 resv; + __u32 resv2[3]; + struct io_uring_probe_op ops[0]; }; -struct ib_flow_spec_gre { - u32 type; - u16 size; - struct ib_flow_gre_filter val; - struct ib_flow_gre_filter mask; +struct io_uring_restriction { + __u16 opcode; + union { + __u8 register_op; + __u8 sqe_op; + __u8 sqe_flags; + }; + __u8 resv; + __u32 resv2[3]; }; -struct ib_flow_mpls_filter { - __be32 tag; - u8 real_sz[0]; +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 ib_flow_spec_mpls { - u32 type; - u16 size; - struct ib_flow_mpls_filter val; - struct ib_flow_mpls_filter mask; +struct io_uring_getevents_arg { + __u64 sigmask; + __u32 sigmask_sz; + __u32 pad; + __u64 ts; }; -struct ib_flow_spec_action_tag { - enum ib_flow_spec_type type; - u16 size; - u32 tag_id; +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, }; -struct ib_flow_spec_action_drop { - enum ib_flow_spec_type type; - u16 size; +enum io_wq_cancel { + IO_WQ_CANCEL_OK = 0, + IO_WQ_CANCEL_RUNNING = 1, + IO_WQ_CANCEL_NOTFOUND = 2, }; -struct ib_flow_spec_action_handle { - enum ib_flow_spec_type type; - u16 size; - struct ib_flow_action *act; +typedef struct io_wq_work *free_work_fn(struct io_wq_work *); + +typedef void io_wq_work_fn(struct io_wq_work *); + +struct io_wq_hash { + refcount_t refs; + long unsigned int map; + struct wait_queue_head wait; }; -enum ib_flow_action_type { - IB_FLOW_ACTION_UNSPECIFIED = 0, - IB_FLOW_ACTION_ESP = 1, +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 ib_flow_action { - struct ib_device *device; - struct ib_uobject *uobject; - enum ib_flow_action_type type; - atomic_t usecnt; +typedef bool work_cancel_fn(struct io_wq_work *, void *); + +struct io_uring { + u32 head; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + u32 tail; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; -struct ib_flow_spec_action_count { - enum ib_flow_spec_type type; - u16 size; - struct ib_counters *counters; +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; + u32 sq_flags; + u32 cq_flags; + u32 cq_overflow; + long: 64; + long: 64; + long: 64; + long: 64; + struct io_uring_cqe cqes[0]; }; -struct ib_counters { - struct ib_device *device; - struct ib_uobject *uobject; - atomic_t usecnt; +enum io_uring_cmd_flags { + IO_URING_F_NONBLOCK = 1, + IO_URING_F_COMPLETE_DEFER = 2, }; -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 io_mapped_ubuf { + u64 ubuf; + u64 ubuf_end; + unsigned int nr_bvecs; + long unsigned int acct_pages; + struct bio_vec bvec[0]; }; -struct ib_flow_attr { - enum ib_flow_attr_type type; - u16 size; - u16 priority; - u32 flags; - u8 num_of_specs; - u8 port; - union ib_flow_spec flows[0]; +struct io_overflow_cqe { + struct io_uring_cqe cqe; + struct list_head list; }; -struct ib_flow { - struct ib_qp *qp; - struct ib_device *device; - struct ib_uobject *uobject; +struct io_fixed_file { + long unsigned int file_ptr; }; -struct ib_flow_action_attrs_esp_keymats { - enum ib_uverbs_flow_action_esp_keymat protocol; +struct io_rsrc_put { + struct list_head list; + u64 tag; union { - struct ib_uverbs_flow_action_esp_keymat_aes_gcm aes_gcm; - } keymat; + void *rsrc; + struct file *file; + struct io_mapped_ubuf *buf; + }; }; -struct ib_flow_action_attrs_esp_replays { - enum ib_uverbs_flow_action_esp_replay protocol; - union { - struct ib_uverbs_flow_action_esp_replay_bmp bmp; - } replay; +struct io_file_table { + struct io_fixed_file *files; }; -struct ib_flow_spec_list { - struct ib_flow_spec_list *next; - union ib_flow_spec spec; -}; +struct io_rsrc_data; -struct ib_flow_action_attrs_esp { - struct ib_flow_action_attrs_esp_keymats *keymat; - struct ib_flow_action_attrs_esp_replays *replay; - struct ib_flow_spec_list *encap; - u32 esn; - u32 spi; - u32 seq; - u32 tfc_pad; - u64 flags; - u64 hard_limit_pkts; +struct io_rsrc_node { + struct percpu_ref refs; + struct list_head node; + struct list_head rsrc_list; + struct io_rsrc_data *rsrc_data; + struct llist_node llist; + bool done; }; -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; -}; +typedef void rsrc_put_fn(struct io_ring_ctx *, struct io_rsrc_put *); -struct ib_port_immutable { - int pkey_tbl_len; - int gid_tbl_len; - u32 core_cap_flags; - u32 max_mad_size; +struct io_rsrc_data { + struct io_ring_ctx *ctx; + u64 **tags; + unsigned int nr; + rsrc_put_fn *do_put; + atomic_t refs; + struct completion done; + bool quiesce; }; -struct ib_port_data { - struct ib_device *ib_dev; - struct ib_port_immutable immutable; - spinlock_t pkey_list_lock; - struct list_head pkey_list; - struct ib_port_cache cache; - spinlock_t netdev_lock; - struct net_device *netdev; - struct hlist_node ndev_hash_link; - struct rdma_port_counter port_counter; - struct rdma_hw_stats *hw_stats; -}; +struct io_kiocb; -struct rdma_netdev_alloc_params { - size_t sizeof_priv; - unsigned int txqs; - unsigned int rxqs; - void *param; - int (*initialize_rdma_netdev)(struct ib_device *, u8, struct net_device *, void *); +struct io_submit_link { + struct io_kiocb *head; + struct io_kiocb *last; }; -struct ib_counters_read_attr { - u64 *counters_buff; - u32 ncounters; - u32 flags; +struct io_submit_state { + struct blk_plug plug; + struct io_submit_link link; + void *reqs[32]; + unsigned int free_reqs; + bool plug_started; + struct io_kiocb *compl_reqs[32]; + unsigned int compl_nr; + struct list_head free_list; + unsigned int ios_left; }; -struct rdma_user_mmap_entry { - struct kref ref; - struct ib_ucontext *ucontext; - long unsigned int start_pgoff; - size_t npages; - bool driver_removed; +struct io_restriction { + long unsigned int register_op[1]; + long unsigned int sqe_op[1]; + u8 sqe_flags_allowed; + u8 sqe_flags_required; + bool registered; }; -enum blk_zone_type { - BLK_ZONE_TYPE_CONVENTIONAL = 1, - BLK_ZONE_TYPE_SEQWRITE_REQ = 2, - BLK_ZONE_TYPE_SEQWRITE_PREF = 3, -}; +struct io_sq_data; -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 io_ring_ctx { + struct { + struct percpu_ref refs; + struct io_rings *rings; + unsigned int flags; + unsigned int compat: 1; + unsigned int drain_next: 1; + unsigned int eventfd_async: 1; + unsigned int restricted: 1; + unsigned int off_timeout_used: 1; + unsigned int drain_active: 1; + long: 64; + long: 64; + 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 list_head defer_list; + struct io_rsrc_node *rsrc_node; + 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 list_head timeout_list; + struct list_head ltimeout_list; + struct list_head cq_overflow_list; + struct xarray io_buffers; + struct xarray personalities; + u32 pers_next; + unsigned int sq_thread_idle; + long: 64; + long: 64; + long: 64; + long: 64; + }; + struct list_head locked_free_list; + unsigned int locked_free_nr; + const struct cred *sq_creds; + struct io_sq_data *sq_data; + struct wait_queue_head sqo_sq_wait; + struct list_head sqd_list; + long unsigned int check_cq_overflow; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + struct { + unsigned int cached_cq_tail; + unsigned int cq_entries; + struct eventfd_ctx *cq_ev_fd; + struct wait_queue_head poll_wait; + struct wait_queue_head cq_wait; + unsigned int cq_extra; + atomic_t cq_timeouts; + unsigned int cq_last_tm_flush; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + }; + struct { + spinlock_t completion_lock; + spinlock_t timeout_lock; + struct list_head iopoll_list; + struct hlist_head *cancel_hash; + unsigned int cancel_hash_bits; + bool poll_multi_queue; + long: 64; + long: 64; + long: 64; + }; + struct io_restriction restrictions; + struct { + struct io_rsrc_node *rsrc_backup_node; + struct io_mapped_ubuf *dummy_ubuf; + struct io_rsrc_data *file_data; + struct io_rsrc_data *buf_data; + struct delayed_work rsrc_put_work; + struct llist_head rsrc_put_llist; + struct list_head rsrc_ref_list; + spinlock_t rsrc_ref_lock; + }; + struct { + struct socket *ring_sock; + 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; + }; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; -enum blk_zone_report_flags { - BLK_ZONE_REP_CAPACITY = 1, +struct io_buffer { + struct list_head list; + __u64 addr; + __u32 len; + __u16 bid; }; -struct blk_zone_report { - __u64 sector; - __u32 nr_zones; - __u32 flags; - struct blk_zone zones[0]; +enum { + IO_SQ_THREAD_SHOULD_STOP = 0, + IO_SQ_THREAD_SHOULD_PARK = 1, }; -struct blk_zone_range { - __u64 sector; - __u64 nr_sectors; +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; + long unsigned int state; + struct completion exited; }; -struct zone_report_args { - struct blk_zone *zones; +struct io_rw { + struct kiocb kiocb; + u64 addr; + u64 len; }; -struct blk_revalidate_zone_args { - struct gendisk *disk; - long unsigned int *conv_zones_bitmap; - long unsigned int *seq_zones_wlock; - unsigned int nr_zones; - sector_t zone_sectors; - sector_t sector; +struct io_poll_iocb { + struct file *file; + struct wait_queue_head *head; + __poll_t events; + int retries; + struct wait_queue_entry wait; }; -enum wbt_flags { - WBT_TRACKED = 1, - WBT_READ = 2, - WBT_KSWAPD = 4, - WBT_DISCARD = 8, - WBT_NR_BITS = 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; }; -enum { - WBT_STATE_ON_DEFAULT = 1, - WBT_STATE_ON_MANUAL = 2, - WBT_STATE_OFF_DEFAULT = 3, +struct io_accept { + struct file *file; + struct sockaddr *addr; + int *addr_len; + int flags; + u32 file_slot; + long unsigned int nofile; }; -struct rq_wb { - unsigned int wb_background; - unsigned int wb_normal; - short int 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; - long unsigned int last_issue; - long unsigned int last_comp; - long unsigned int min_lat_nsec; - struct rq_qos rqos; - struct rq_wait rq_wait[3]; - struct rq_depth rq_depth; +struct io_sync { + struct file *file; + loff_t len; + loff_t off; + int flags; + int mode; }; -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 io_cancel { + struct file *file; + u64 addr; }; -struct trace_event_raw_wbt_lat { - struct trace_entry ent; - char name[32]; - long unsigned int lat; - char __data[0]; +struct io_timeout { + struct file *file; + u32 off; + u32 target_seq; + struct list_head list; + struct io_kiocb *head; + struct io_kiocb *prev; }; -struct trace_event_raw_wbt_step { - struct trace_entry ent; - char name[32]; - const char *msg; - int step; - long unsigned int window; - unsigned int bg; - unsigned int normal; - unsigned int max; - char __data[0]; +struct io_timeout_rem { + struct file *file; + u64 addr; + struct timespec64 ts; + u32 flags; + bool ltimeout; }; -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 io_connect { + struct file *file; + struct sockaddr *addr; + int addr_len; }; -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 {}; - -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 *, long unsigned int); - -typedef void (*btf_trace_wbt_step)(void *, struct backing_dev_info *, const char *, int, long unsigned int, unsigned int, unsigned int, unsigned int); - -typedef void (*btf_trace_wbt_timer)(void *, struct backing_dev_info *, unsigned int, int, unsigned int); - -enum { - RWB_DEF_DEPTH = 16, - RWB_WINDOW_NSEC = 100000000, - RWB_MIN_WRITE_SAMPLES = 3, - RWB_UNKNOWN_BUMP = 5, +struct io_sr_msg { + struct file *file; + union { + struct compat_msghdr *umsg_compat; + struct user_msghdr *umsg; + void *buf; + }; + int msg_flags; + int bgid; + size_t len; + size_t done_io; + struct io_buffer *kbuf; }; -enum { - LAT_OK = 1, - LAT_UNKNOWN = 2, - LAT_UNKNOWN_WRITES = 3, - LAT_EXCEEDED = 4, +struct io_open { + struct file *file; + int dfd; + u32 file_slot; + struct filename *filename; + struct open_how how; + long unsigned int nofile; }; -struct wbt_wait_data { - struct rq_wb *rwb; - enum wbt_flags wb_acct; - long unsigned int rw; +struct io_close { + struct file *file; + int fd; + u32 file_slot; }; -struct show_busy_params { - struct seq_file *m; - struct blk_mq_hw_ctx *hctx; +struct io_rsrc_update { + struct file *file; + u64 arg; + u32 nr_args; + u32 offset; }; -enum opal_mbr { - OPAL_MBR_ENABLE = 0, - OPAL_MBR_DISABLE = 1, +struct io_fadvise { + struct file *file; + u64 offset; + u32 len; + u32 advice; }; -enum opal_mbr_done_flag { - OPAL_MBR_NOT_DONE = 0, - OPAL_MBR_DONE = 1, +struct io_madvise { + struct file *file; + u64 addr; + u32 len; + u32 advice; }; -enum opal_user { - OPAL_ADMIN1 = 0, - OPAL_USER1 = 1, - OPAL_USER2 = 2, - OPAL_USER3 = 3, - OPAL_USER4 = 4, - OPAL_USER5 = 5, - OPAL_USER6 = 6, - OPAL_USER7 = 7, - OPAL_USER8 = 8, - OPAL_USER9 = 9, +struct io_epoll { + struct file *file; + int epfd; + int op; + int fd; + struct epoll_event event; }; -enum opal_lock_state { - OPAL_RO = 1, - OPAL_RW = 2, - OPAL_LK = 4, +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 opal_key { - __u8 lr; - __u8 key_len; - __u8 __align[6]; - __u8 key[256]; +struct io_provide_buf { + struct file *file; + __u64 addr; + __u32 len; + __u32 bgid; + __u16 nbufs; + __u16 bid; }; -struct opal_lr_act { - struct opal_key key; - __u32 sum; - __u8 num_lrs; - __u8 lr[9]; - __u8 align[2]; +struct io_statx { + struct file *file; + int dfd; + unsigned int mask; + unsigned int flags; + const char *filename; + struct statx *buffer; }; -struct opal_session_info { - __u32 sum; - __u32 who; - struct opal_key opal_key; +struct io_shutdown { + struct file *file; + int how; }; -struct opal_user_lr_setup { - __u64 range_start; - __u64 range_length; - __u32 RLE; - __u32 WLE; - struct opal_session_info session; +struct io_rename { + struct file *file; + int old_dfd; + int new_dfd; + struct filename *oldpath; + struct filename *newpath; + int flags; }; -struct opal_lock_unlock { - struct opal_session_info session; - __u32 l_state; - __u8 __align[4]; +struct io_unlink { + struct file *file; + int dfd; + int flags; + struct filename *filename; }; -struct opal_new_pw { - struct opal_session_info session; - struct opal_session_info new_user_pw; +struct io_mkdir { + struct file *file; + int dfd; + umode_t mode; + struct filename *filename; }; -struct opal_mbr_data { - struct opal_key key; - __u8 enable_disable; - __u8 __align[7]; +struct io_symlink { + struct file *file; + int new_dfd; + struct filename *oldpath; + struct filename *newpath; }; -struct opal_mbr_done { - struct opal_key key; - __u8 done_flag; - __u8 __align[7]; +struct io_hardlink { + struct file *file; + int old_dfd; + int new_dfd; + struct filename *oldpath; + struct filename *newpath; + int flags; }; -struct opal_shadow_mbr { - struct opal_key key; - const __u64 data; - __u64 offset; - __u64 size; +struct io_completion { + struct file *file; + u32 cflags; }; -enum opal_table_ops { - OPAL_READ_TABLE = 0, - OPAL_WRITE_TABLE = 1, -}; +typedef void (*io_req_tw_func_t)(struct io_kiocb *, bool *); -struct opal_read_write_table { - struct opal_key key; - const __u64 data; - const __u8 table_uid[8]; - __u64 offset; - __u64 size; - __u64 flags; - __u64 priv; +struct io_task_work { + union { + struct io_wq_work_node node; + struct llist_node fallback_node; + }; + io_req_tw_func_t func; }; -typedef int sec_send_recv(void *, u16, u8, void *, size_t, bool); +struct async_poll; -enum { - TCG_SECP_00 = 0, - TCG_SECP_01 = 1, +struct io_kiocb { + union { + struct file *file; + struct io_rw rw; + struct io_poll_iocb poll; + struct io_poll_update poll_update; + struct io_accept accept; + struct io_sync sync; + struct io_cancel cancel; + struct io_timeout timeout; + struct io_timeout_rem timeout_rem; + struct io_connect connect; + struct io_sr_msg sr_msg; + struct io_open open; + struct io_close close; + struct io_rsrc_update rsrc_update; + struct io_fadvise fadvise; + struct io_madvise madvise; + struct io_epoll epoll; + struct io_splice splice; + struct io_provide_buf pbuf; + struct io_statx statx; + struct io_shutdown shutdown; + struct io_rename rename; + struct io_unlink unlink; + struct io_mkdir mkdir; + struct io_symlink symlink; + struct io_hardlink hardlink; + struct io_completion compl; + }; + void *async_data; + u8 opcode; + u8 iopoll_completed; + u16 buf_index; + u32 result; + struct io_ring_ctx *ctx; + unsigned int flags; + atomic_t refs; + struct task_struct *task; + u64 user_data; + struct io_kiocb *link; + struct percpu_ref *fixed_rsrc_refs; + struct list_head inflight_entry; + struct io_task_work io_task_work; + struct hlist_node hash_node; + struct async_poll *apoll; + struct io_wq_work work; + const struct cred *creds; + struct io_mapped_ubuf *imu; + struct io_buffer *kbuf; + atomic_t poll_refs; }; -enum opal_response_token { - OPAL_DTA_TOKENID_BYTESTRING = 224, - OPAL_DTA_TOKENID_SINT = 225, - OPAL_DTA_TOKENID_UINT = 226, - OPAL_DTA_TOKENID_TOKEN = 227, - OPAL_DTA_TOKENID_INVALID = 0, +struct io_timeout_data { + struct io_kiocb *req; + struct hrtimer timer; + struct timespec64 ts; + enum hrtimer_mode mode; + u32 flags; }; -enum opal_uid { - OPAL_SMUID_UID = 0, - OPAL_THISSP_UID = 1, - OPAL_ADMINSP_UID = 2, - OPAL_LOCKINGSP_UID = 3, - OPAL_ENTERPRISE_LOCKINGSP_UID = 4, - OPAL_ANYBODY_UID = 5, - OPAL_SID_UID = 6, - OPAL_ADMIN1_UID = 7, - OPAL_USER1_UID = 8, - OPAL_USER2_UID = 9, - OPAL_PSID_UID = 10, - OPAL_ENTERPRISE_BANDMASTER0_UID = 11, - OPAL_ENTERPRISE_ERASEMASTER_UID = 12, - OPAL_TABLE_TABLE = 13, - OPAL_LOCKINGRANGE_GLOBAL = 14, - OPAL_LOCKINGRANGE_ACE_RDLOCKED = 15, - OPAL_LOCKINGRANGE_ACE_WRLOCKED = 16, - OPAL_MBRCONTROL = 17, - OPAL_MBR = 18, - OPAL_AUTHORITY_TABLE = 19, - OPAL_C_PIN_TABLE = 20, - OPAL_LOCKING_INFO_TABLE = 21, - OPAL_ENTERPRISE_LOCKING_INFO_TABLE = 22, - OPAL_DATASTORE = 23, - OPAL_C_PIN_MSID = 24, - OPAL_C_PIN_SID = 25, - OPAL_C_PIN_ADMIN1 = 26, - OPAL_HALF_UID_AUTHORITY_OBJ_REF = 27, - OPAL_HALF_UID_BOOLEAN_ACE = 28, - OPAL_UID_HEXFF = 29, +struct io_async_connect { + struct __kernel_sockaddr_storage address; }; -enum opal_method { - OPAL_PROPERTIES = 0, - OPAL_STARTSESSION = 1, - OPAL_REVERT = 2, - OPAL_ACTIVATE = 3, - OPAL_EGET = 4, - OPAL_ESET = 5, - OPAL_NEXT = 6, - OPAL_EAUTHENTICATE = 7, - OPAL_GETACL = 8, - OPAL_GENKEY = 9, - OPAL_REVERTSP = 10, - OPAL_GET = 11, - OPAL_SET = 12, - OPAL_AUTHENTICATE = 13, - OPAL_RANDOM = 14, - OPAL_ERASE = 15, +struct io_async_msghdr { + struct iovec fast_iov[8]; + struct iovec *free_iov; + struct sockaddr *uaddr; + struct msghdr msg; + struct __kernel_sockaddr_storage addr; }; -enum opal_token { - OPAL_TRUE = 1, - OPAL_FALSE = 0, - OPAL_BOOLEAN_EXPR = 3, - OPAL_TABLE = 0, - OPAL_STARTROW = 1, - OPAL_ENDROW = 2, - OPAL_STARTCOLUMN = 3, - OPAL_ENDCOLUMN = 4, - OPAL_VALUES = 1, - OPAL_TABLE_UID = 0, - OPAL_TABLE_NAME = 1, - OPAL_TABLE_COMMON = 2, - OPAL_TABLE_TEMPLATE = 3, - OPAL_TABLE_KIND = 4, - OPAL_TABLE_COLUMN = 5, - OPAL_TABLE_COLUMNS = 6, - OPAL_TABLE_ROWS = 7, - OPAL_TABLE_ROWS_FREE = 8, - OPAL_TABLE_ROW_BYTES = 9, - OPAL_TABLE_LASTID = 10, - OPAL_TABLE_MIN = 11, - OPAL_TABLE_MAX = 12, - OPAL_PIN = 3, - OPAL_RANGESTART = 3, - OPAL_RANGELENGTH = 4, - OPAL_READLOCKENABLED = 5, - OPAL_WRITELOCKENABLED = 6, - OPAL_READLOCKED = 7, - OPAL_WRITELOCKED = 8, - OPAL_ACTIVEKEY = 10, - OPAL_LIFECYCLE = 6, - OPAL_MAXRANGES = 4, - OPAL_MBRENABLE = 1, - OPAL_MBRDONE = 2, - OPAL_HOSTPROPERTIES = 0, - OPAL_STARTLIST = 240, - OPAL_ENDLIST = 241, - OPAL_STARTNAME = 242, - OPAL_ENDNAME = 243, - OPAL_CALL = 248, - OPAL_ENDOFDATA = 249, - OPAL_ENDOFSESSION = 250, - OPAL_STARTTRANSACTON = 251, - OPAL_ENDTRANSACTON = 252, - OPAL_EMPTYATOM = 255, - OPAL_WHERE = 0, +struct io_async_rw { + struct iovec fast_iov[8]; + const struct iovec *free_iovec; + struct iov_iter iter; + struct iov_iter_state iter_state; + size_t bytes_done; + struct wait_page_queue wpq; }; -enum opal_parameter { - OPAL_SUM_SET_LIST = 393216, +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_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_COMPLETE_INLINE_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_PARTIAL_IO_BIT = 21, + REQ_F_NOWAIT_READ_BIT = 22, + REQ_F_NOWAIT_WRITE_BIT = 23, + REQ_F_ISREG_BIT = 24, + __REQ_F_LAST_BIT = 25, }; -struct opal_compacket { - __be32 reserved0; - u8 extendedComID[4]; - __be32 outstandingData; - __be32 minTransfer; - __be32 length; +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_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_COMPLETE_INLINE = 65536, + REQ_F_REISSUE = 131072, + REQ_F_NOWAIT_READ = 4194304, + REQ_F_NOWAIT_WRITE = 8388608, + REQ_F_ISREG = 16777216, + REQ_F_CREDS = 262144, + REQ_F_REFCOUNT = 524288, + REQ_F_ARM_LTIMEOUT = 1048576, + REQ_F_PARTIAL_IO = 2097152, }; -struct opal_packet { - __be32 tsn; - __be32 hsn; - __be32 seq_number; - __be16 reserved0; - __be16 ack_type; - __be32 acknowledgment; - __be32 length; +struct async_poll { + struct io_poll_iocb poll; + struct io_poll_iocb *double_poll; }; -struct opal_data_subpacket { - u8 reserved0[6]; - __be16 kind; - __be32 length; +enum { + IORING_RSRC_FILE = 0, + IORING_RSRC_BUFFER = 1, }; -struct opal_header { - struct opal_compacket cp; - struct opal_packet pkt; - struct opal_data_subpacket subpkt; +struct io_tctx_node { + struct list_head ctx_node; + struct task_struct *task; + struct io_ring_ctx *ctx; }; -struct d0_header { - __be32 length; - __be32 revision; - __be32 reserved01; - __be32 reserved02; - u8 ignored[32]; +struct io_defer_entry { + struct list_head list; + struct io_kiocb *req; + u32 seq; }; -struct d0_tper_features { - u8 supported_features; - u8 reserved01[3]; - __be32 reserved02; - __be32 reserved03; +struct io_op_def { + unsigned int needs_file: 1; + unsigned int hash_reg_file: 1; + unsigned int unbound_nonreg_file: 1; + unsigned int not_supported: 1; + unsigned int pollin: 1; + unsigned int pollout: 1; + unsigned int buffer_select: 1; + unsigned int needs_async_setup: 1; + unsigned int plug: 1; + short unsigned int async_size; }; -struct d0_locking_features { - u8 supported_features; - u8 reserved01[3]; - __be32 reserved02; - __be32 reserved03; +struct req_batch { + struct task_struct *task; + int task_refs; + int ctx_refs; }; -struct d0_geometry_features { - u8 header[4]; - u8 reserved01; - u8 reserved02[7]; - __be32 logical_block_size; - __be64 alignment_granularity; - __be64 lowest_aligned_lba; +struct io_poll_table { + struct poll_table_struct pt; + struct io_kiocb *req; + int nr_entries; + int error; }; -struct d0_opal_v100 { - __be16 baseComID; - __be16 numComIDs; +enum { + IO_APOLL_OK = 0, + IO_APOLL_ABORTED = 1, + IO_APOLL_READY = 2, }; -struct d0_single_user_mode { - __be32 num_locking_objects; - u8 reserved01; - u8 reserved02; - __be16 reserved03; - __be32 reserved04; +struct io_cancel_data { + struct io_ring_ctx *ctx; + u64 user_data; }; -struct d0_opal_v200 { - __be16 baseComID; - __be16 numComIDs; - u8 range_crossing; - u8 num_locking_admin_auth[2]; - u8 num_locking_user_auth[2]; - u8 initialPIN; - u8 revertedPIN; - u8 reserved01; - __be32 reserved02; +struct io_wait_queue { + struct wait_queue_entry wq; + struct io_ring_ctx *ctx; + unsigned int cq_tail; + unsigned int nr_timeouts; }; -struct d0_features { - __be16 code; - u8 r_version; - u8 length; - u8 features[0]; +struct io_tctx_exit { + struct callback_head task_work; + struct completion completion; + struct io_ring_ctx *ctx; }; -struct opal_dev; - -struct opal_step { - int (*fn)(struct opal_dev *, void *); - void *data; +struct io_task_cancel { + struct task_struct *task; + bool all; }; -enum opal_atom_width { - OPAL_WIDTH_TINY = 0, - OPAL_WIDTH_SHORT = 1, - OPAL_WIDTH_MEDIUM = 2, - OPAL_WIDTH_LONG = 3, - OPAL_WIDTH_TOKEN = 4, +struct creds; + +enum { + IO_WQ_BOUND = 0, + IO_WQ_UNBOUND = 1, }; -struct opal_resp_tok { - const u8 *pos; - size_t len; - enum opal_response_token type; - enum opal_atom_width width; - union { - u64 u; - s64 s; - } stored; +enum { + IO_WORKER_F_UP = 1, + IO_WORKER_F_RUNNING = 2, + IO_WORKER_F_FREE = 4, + IO_WORKER_F_BOUND = 8, }; -struct parsed_resp { - int num; - struct opal_resp_tok toks[64]; +enum { + IO_WQ_BIT_EXIT = 0, }; -struct opal_dev { - bool supported; - bool mbr_enabled; - void *data; - sec_send_recv *send_recv; - struct mutex dev_lock; - u16 comid; - u32 hsn; - u32 tsn; - u64 align; - u64 lowest_lba; - size_t pos; - u8 cmd[2048]; - u8 resp[2048]; - struct parsed_resp parsed; - size_t prev_d_len; - void *prev_data; - struct list_head unlk_lst; +enum { + IO_ACCT_STALLED_BIT = 0, }; -typedef int cont_fn(struct opal_dev *); +struct io_wqe; -struct opal_suspend_data { - struct opal_lock_unlock unlk; - u8 lr; - struct list_head node; +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_wqe *wqe; + struct io_wq_work *cur_work; + spinlock_t lock; + struct completion ref_done; + long unsigned int create_state; + struct callback_head create_work; + int create_index; + union { + struct callback_head rcu; + struct work_struct work; + }; }; -struct blk_ksm_keyslot { - atomic_t slot_refs; - struct list_head idle_slot_node; - struct hlist_node hash_node; - const struct blk_crypto_key *key; - struct blk_keyslot_manager *ksm; +struct io_wqe_acct { + unsigned int nr_workers; + unsigned int max_workers; + int index; + atomic_t nr_running; + struct io_wq_work_list work_list; + long unsigned int flags; }; -struct blk_ksm_ll_ops { - int (*keyslot_program)(struct blk_keyslot_manager *, const struct blk_crypto_key *, unsigned int); - int (*keyslot_evict)(struct blk_keyslot_manager *, const struct blk_crypto_key *, unsigned int); -}; +struct io_wq; -struct blk_keyslot_manager { - struct blk_ksm_ll_ops ksm_ll_ops; - unsigned int max_dun_bytes_supported; - unsigned int crypto_modes_supported[4]; - struct device *dev; - unsigned int num_slots; - struct rw_semaphore lock; - 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_ksm_keyslot *slots; +struct io_wqe { + raw_spinlock_t lock; + struct io_wqe_acct acct[2]; + int node; + struct hlist_nulls_head free_list; + struct list_head all_list; + struct wait_queue_entry wait; + struct io_wq *wq; + struct io_wq_work *hash_tail[64]; + cpumask_var_t cpu_mask; }; -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; - }; - }; +enum { + IO_WQ_ACCT_BOUND = 0, + IO_WQ_ACCT_UNBOUND = 1, + IO_WQ_ACCT_NR = 2, }; -struct blk_crypto_keyslot { - enum blk_crypto_mode_num crypto_mode; - struct crypto_skcipher *tfms[4]; +struct io_wq { + long unsigned int 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_wqe *wqes[0]; }; -union blk_crypto_iv { - __le64 dun[4]; - u8 bytes[32]; +struct io_cb_cancel_data { + work_cancel_fn *fn; + void *data; + int nr_running; + int nr_pending; + bool cancel_all; }; -typedef void (*swap_func_t)(void *, void *, int); +struct online_data { + unsigned int cpu; + bool online; +}; typedef int (*cmp_r_func_t)(const void *, const void *, const void *); @@ -63098,15 +64567,12 @@ struct siprand_state { long unsigned int v3; }; -typedef __kernel_long_t __kernel_ptrdiff_t; - -typedef __kernel_ptrdiff_t ptrdiff_t; - struct region { unsigned int start; unsigned int off; unsigned int group_len; unsigned int end; + unsigned int nbits; }; enum { @@ -63115,6 +64581,12 @@ enum { REG_OP_RELEASE = 2, }; +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); typedef void sg_free_fn(struct scatterlist *, unsigned int); @@ -63141,13 +64613,15 @@ struct sg_mapping_iter { unsigned int __flags; }; -typedef int (*list_cmp_func_t)(void *, const struct list_head *, const struct list_head *); - struct csum_state { __wsum csum; size_t off; }; +struct rhltable { + struct rhashtable ht; +}; + struct rhashtable_walker { struct list_head list; struct bucket_table *tbl; @@ -63193,10 +64667,41 @@ struct reciprocal_value_adv { bool is_wide_m; }; +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, +}; + enum devm_ioremap_type { DEVM_IOREMAP = 0, DEVM_IOREMAP_UC = 1, DEVM_IOREMAP_WC = 2, + DEVM_IOREMAP_NP = 3, }; struct pcim_iomap_devres { @@ -63301,8 +64806,6 @@ struct genpool_data_fixed { long unsigned int offset; }; -typedef z_stream *z_streamp; - typedef struct { unsigned char op; unsigned char bits; @@ -63382,17 +64885,17 @@ union uu { typedef unsigned int uInt; -struct inflate_workspace { - struct inflate_state inflate_state; - unsigned char working_window[32768]; -}; - typedef enum { CODES = 0, LENS = 1, DISTS = 2, } codetype; +struct inflate_workspace { + struct inflate_state inflate_state; + unsigned char working_window[32768]; +}; + typedef unsigned char uch; typedef short unsigned int ush; @@ -63527,18 +65030,16 @@ typedef struct config_s config; typedef struct tree_desc_s tree_desc; 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; + const uint8_t *externalDict; + size_t extDictSize; + const uint8_t *prefixEnd; + size_t prefixSize; +} LZ4_streamDecode_t_internal; typedef union { - long long unsigned int table[2052]; - LZ4_stream_t_internal internal_donotuse; -} LZ4_stream_t; + long long unsigned int table[4]; + LZ4_streamDecode_t_internal internal_donotuse; +} LZ4_streamDecode_t; typedef uint8_t BYTE; @@ -63550,40 +65051,12 @@ typedef uint64_t U64; 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 { - const uint8_t *externalDict; - size_t extDictSize; - const uint8_t *prefixEnd; - size_t prefixSize; -} LZ4_streamDecode_t_internal; - -typedef union { - long long unsigned int table[4]; - LZ4_streamDecode_t_internal internal_donotuse; -} LZ4_streamDecode_t; - typedef enum { endOnOutputSize = 0, endOnInputSize = 1, @@ -63594,270 +65067,6 @@ typedef enum { partial_decode = 1, } earlyEnd_directive; -typedef struct { - size_t bitContainer; - int bitPos; - char *startPtr; - char *ptr; - char *endPtr; -} BIT_CStream_t; - -typedef unsigned int FSE_CTable; - -typedef struct { - ptrdiff_t value; - const void *stateTable; - const void *symbolTT; - unsigned int stateLog; -} FSE_CState_t; - -typedef struct { - int deltaFindState; - U32 deltaNbBits; -} FSE_symbolCompressionTransform; - -typedef int16_t S16; - -struct HUF_CElt_s { - U16 val; - BYTE nbBits; -}; - -typedef struct HUF_CElt_s HUF_CElt; - -typedef enum { - HUF_repeat_none = 0, - HUF_repeat_check = 1, - HUF_repeat_valid = 2, -} HUF_repeat; - -struct nodeElt_s { - U32 count; - U16 parent; - BYTE byte; - BYTE nbBits; -}; - -typedef struct nodeElt_s nodeElt; - -typedef struct { - U32 base; - U32 curr; -} rankPos; - -typedef enum { - ZSTD_fast = 0, - ZSTD_dfast = 1, - ZSTD_greedy = 2, - ZSTD_lazy = 3, - ZSTD_lazy2 = 4, - ZSTD_btlazy2 = 5, - ZSTD_btopt = 6, - ZSTD_btopt2 = 7, -} ZSTD_strategy; - -typedef struct { - unsigned int windowLog; - unsigned int chainLog; - unsigned int hashLog; - unsigned int searchLog; - unsigned int searchLength; - unsigned int targetLength; - ZSTD_strategy strategy; -} ZSTD_compressionParameters; - -typedef struct { - unsigned int contentSizeFlag; - unsigned int checksumFlag; - unsigned int noDictIDFlag; -} ZSTD_frameParameters; - -typedef struct { - ZSTD_compressionParameters cParams; - ZSTD_frameParameters fParams; -} ZSTD_parameters; - -typedef enum { - ZSTDcs_created = 0, - ZSTDcs_init = 1, - ZSTDcs_ongoing = 2, - ZSTDcs_ending = 3, -} ZSTD_compressionStage_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 struct { - U32 price; - U32 off; - U32 mlen; - U32 litlen; - U32 rep[3]; -} ZSTD_optimal_t; - -typedef struct { - U32 off; - U32 len; -} ZSTD_match_t; - -struct seqDef_s; - -typedef struct seqDef_s seqDef; - -typedef struct { - seqDef *sequencesStart; - seqDef *sequences; - BYTE *litStart; - BYTE *lit; - BYTE *llCode; - BYTE *mlCode; - BYTE *ofCode; - U32 longLengthID; - U32 longLengthPos; - ZSTD_optimal_t *priceTable; - ZSTD_match_t *matchTable; - U32 *matchLengthFreq; - U32 *litLengthFreq; - U32 *litFreq; - U32 *offCodeFreq; - U32 matchLengthSum; - U32 matchSum; - U32 litLengthSum; - U32 litSum; - U32 offCodeSum; - U32 log2matchLengthSum; - U32 log2matchSum; - U32 log2litLengthSum; - U32 log2litSum; - U32 log2offCodeSum; - U32 factor; - U32 staticPrices; - U32 cachedPrice; - U32 cachedLitLength; - const BYTE *cachedLiterals; -} seqStore_t; - -struct HUF_CElt_s___2; - -typedef struct HUF_CElt_s___2 HUF_CElt___2; - -struct ZSTD_CCtx_s { - const BYTE *nextSrc; - const BYTE *base; - const BYTE *dictBase; - U32 dictLimit; - U32 lowLimit; - U32 nextToUpdate; - U32 nextToUpdate3; - U32 hashLog3; - U32 loadedDictEnd; - U32 forceWindow; - U32 forceRawDict; - ZSTD_compressionStage_e stage; - U32 rep[3]; - U32 repToConfirm[3]; - U32 dictID; - ZSTD_parameters params; - void *workSpace; - size_t workSpaceSize; - size_t blockSize; - U64 frameContentSize; - struct xxh64_state xxhState; - ZSTD_customMem customMem; - seqStore_t seqStore; - U32 *hashTable; - U32 *hashTable3; - U32 *chainTable; - HUF_CElt___2 *hufTable; - U32 flagStaticTables; - HUF_repeat flagStaticHufTable; - FSE_CTable offcodeCTable[187]; - FSE_CTable matchlengthCTable[363]; - FSE_CTable litlengthCTable[329]; - unsigned int tmpCounters[1536]; -}; - -typedef struct ZSTD_CCtx_s ZSTD_CCtx; - -struct ZSTD_CDict_s { - void *dictBuffer; - const void *dictContent; - size_t dictContentSize; - ZSTD_CCtx *refContext; -}; - -typedef struct ZSTD_CDict_s ZSTD_CDict; - -typedef enum { - zcss_init = 0, - zcss_load = 1, - zcss_flush = 2, - zcss_final = 3, -} ZSTD_cStreamStage; - -struct ZSTD_CStream_s { - ZSTD_CCtx *cctx; - ZSTD_CDict *cdictLocal; - const ZSTD_CDict *cdict; - char *inBuff; - size_t inBuffSize; - size_t inToCompress; - size_t inBuffPos; - size_t inBuffTarget; - size_t blockSize; - char *outBuff; - size_t outBuffSize; - size_t outBuffContentSize; - size_t outBuffFlushedSize; - ZSTD_cStreamStage stage; - U32 checksum; - U32 frameEnded; - U64 pledgedSrcSize; - U64 inputProcessed; - ZSTD_parameters params; - ZSTD_customMem customMem; -}; - -typedef struct ZSTD_CStream_s ZSTD_CStream; - -typedef int32_t S32; - -typedef enum { - set_basic = 0, - set_rle = 1, - set_compressed = 2, - set_repeat = 3, -} symbolEncodingType_e; - -struct seqDef_s { - U32 offset; - U16 litLength; - U16 matchLength; -}; - -typedef enum { - ZSTDcrp_continue = 0, - ZSTDcrp_noMemset = 1, - ZSTDcrp_fullReset = 2, -} ZSTD_compResetPolicy_e; - -typedef void (*ZSTD_blockCompressor)(ZSTD_CCtx *, const void *, size_t); - -typedef enum { - zsf_gather = 0, - zsf_flush = 1, - zsf_end = 2, -} ZSTD_flush_e; - -typedef size_t (*searchMax_f)(ZSTD_CCtx *, const BYTE *, const BYTE *, size_t *, U32, U32); - typedef struct { size_t bitContainer; unsigned int bitsConsumed; @@ -63872,29 +65081,6 @@ typedef enum { BIT_DStream_overflow = 3, } BIT_DStream_status; -typedef unsigned int FSE_DTable; - -typedef struct { - size_t state; - const void *table; -} FSE_DState_t; - -typedef struct { - U16 tableLog; - U16 fastMode; -} FSE_DTableHeader; - -typedef struct { - short unsigned int newState; - unsigned char symbol; - unsigned char nbBits; -} FSE_decode_t; - -typedef struct { - void *ptr; - const void *end; -} ZSTD_stack; - typedef U32 HUF_DTable; typedef struct { @@ -63927,6 +65113,8 @@ typedef struct { U32 decode256Time; } algo_time_t; +typedef unsigned int FSE_DTable; + typedef struct { FSE_DTable LLTable[513]; FSE_DTable OFTable[257]; @@ -63961,6 +65149,16 @@ typedef enum { ZSTDds_skipFrame = 7, } ZSTD_dStage; +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; + struct ZSTD_DCtx_s { const FSE_DTable *LLTptr; const FSE_DTable *MLTptr; @@ -64010,7 +65208,7 @@ typedef enum { zdss_flush = 4, } ZSTD_dStreamStage; -struct ZSTD_DStream_s___2 { +struct ZSTD_DStream_s { ZSTD_DCtx *dctx; ZSTD_DDict *ddictLocal; const ZSTD_DDict *ddict; @@ -64034,7 +65232,7 @@ struct ZSTD_DStream_s___2 { U32 hostageByte; }; -typedef struct ZSTD_DStream_s___2 ZSTD_DStream___2; +typedef struct ZSTD_DStream_s ZSTD_DStream___2; typedef enum { ZSTDnit_frameHeader = 0, @@ -64045,8 +65243,33 @@ typedef enum { ZSTDnit_skippableFrame = 5, } ZSTD_nextInputType_e; +typedef int16_t S16; + typedef uintptr_t uPtrDiff; +typedef struct { + size_t state; + const void *table; +} FSE_DState_t; + +typedef struct { + U16 tableLog; + U16 fastMode; +} FSE_DTableHeader; + +typedef struct { + short unsigned int newState; + unsigned char symbol; + unsigned char nbBits; +} FSE_decode_t; + +typedef enum { + set_basic = 0, + set_rle = 1, + set_compressed = 2, + set_repeat = 3, +} symbolEncodingType_e; + typedef struct { blockType_e blockType; U32 lastBlock; @@ -64076,6 +65299,11 @@ typedef struct { uPtrDiff gotoDict; } seqState_t; +typedef struct { + void *ptr; + const void *end; +} ZSTD_stack; + typedef uint64_t vli_type; enum xz_check { @@ -64095,7 +65323,7 @@ struct xz_dec_lzma2; struct xz_dec_bcj; -struct xz_dec___2 { +struct xz_dec { enum { SEQ_STREAM_HEADER = 0, SEQ_BLOCK_START = 1, @@ -64237,7 +65465,7 @@ struct lzma2_dec { bool need_props; }; -struct xz_dec_lzma2___2 { +struct xz_dec_lzma2 { struct rc_dec rc; struct dictionary dict; struct lzma2_dec lzma2; @@ -64248,7 +65476,7 @@ struct xz_dec_lzma2___2 { } temp; }; -struct xz_dec_bcj___2 { +struct xz_dec_bcj { enum { BCJ_X86 = 4, BCJ_POWERPC = 5, @@ -64472,11 +65700,11 @@ enum gcry_mpi_format { GCRYMPI_FMT_OPAQUE = 8, }; -struct barrett_ctx_s___2; +struct barrett_ctx_s; -typedef struct barrett_ctx_s___2 *mpi_barrett_t___2; +typedef struct barrett_ctx_s *mpi_barrett_t___2; -struct barrett_ctx_s___2 { +struct barrett_ctx_s { MPI m; int m_copied; int k; @@ -64592,7 +65820,85 @@ struct font_data { const unsigned char data[0]; }; -typedef u16 ucs2_char_t; +enum { + type_kind_int = 0, + type_kind_float = 1, + type_unknown = 65535, +}; + +struct type_descriptor { + u16 type_kind; + u16 type_info; + char type_name[1]; +}; + +struct source_location { + const char *file_name; + union { + long unsigned int reported; + struct { + u32 line; + u32 column; + }; + }; +}; + +struct overflow_data { + struct source_location location; + struct type_descriptor *type; +}; + +struct type_mismatch_data { + struct source_location location; + struct type_descriptor *type; + long unsigned int alignment; + unsigned char type_check_kind; +}; + +struct type_mismatch_data_v1 { + struct source_location location; + struct type_descriptor *type; + unsigned char log_alignment; + unsigned char type_check_kind; +}; + +struct type_mismatch_data_common { + struct source_location *location; + struct type_descriptor *type; + long unsigned int alignment; + unsigned char type_check_kind; +}; + +struct out_of_bounds_data { + struct source_location location; + struct type_descriptor *array_type; + struct type_descriptor *index_type; +}; + +struct shift_out_of_bounds_data { + struct source_location location; + struct type_descriptor *lhs_type; + struct type_descriptor *rhs_type; +}; + +struct unreachable_data { + struct source_location location; +}; + +struct invalid_value_data { + struct source_location location; + struct type_descriptor *type; +}; + +struct alignment_assumption_data { + struct source_location location; + struct source_location assumption_location; + struct type_descriptor *type; +}; + +typedef __int128 s_max; + +typedef __int128 unsigned u_max; struct firmware { size_t size; @@ -64731,6 +66037,25 @@ struct pldm_pci_record_id { typedef long unsigned int cycles_t; +enum aarch64_insn_prfm_type { + AARCH64_INSN_PRFM_TYPE_PLD = 0, + AARCH64_INSN_PRFM_TYPE_PLI = 1, + AARCH64_INSN_PRFM_TYPE_PST = 2, +}; + +enum aarch64_insn_prfm_target { + AARCH64_INSN_PRFM_TARGET_L1 = 0, + AARCH64_INSN_PRFM_TARGET_L2 = 1, + AARCH64_INSN_PRFM_TARGET_L3 = 2, +}; + +enum aarch64_insn_prfm_policy { + AARCH64_INSN_PRFM_POLICY_KEEP = 0, + AARCH64_INSN_PRFM_POLICY_STRM = 1, +}; + +struct warn_args; + struct compress_format { unsigned char magic[2]; const char *name; @@ -64807,9 +66132,9 @@ struct cstate { uint32_t rep3; }; -struct ZSTD_DCtx_s___2; +struct ZSTD_DCtx_s; -typedef struct ZSTD_DCtx_s___2 ZSTD_DCtx___2; +typedef struct ZSTD_DCtx_s ZSTD_DCtx___2; struct cpio_data { void *data; @@ -64876,6 +66201,8 @@ struct ida_bitmap { long unsigned int bitmap[16]; }; +struct pt_regs; + struct klist_waiter { struct list_head list; struct klist_node *node; @@ -64922,74 +66249,17 @@ typedef struct { long unsigned int key[2]; } hsiphash_key_t; -struct clk_hw; - -struct clk_rate_request { - long unsigned int rate; - long unsigned int min_rate; - long unsigned int max_rate; - long unsigned int best_parent_rate; - struct clk_hw *best_parent_hw; -}; - struct clk_core; -struct clk_init_data; - -struct clk_hw { +struct clk { struct clk_core *core; - struct clk *clk; - const struct clk_init_data *init; -}; - -struct clk_duty { - unsigned int num; - unsigned int den; -}; - -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 *); - long unsigned int (*recalc_rate)(struct clk_hw *, long unsigned int); - long int (*round_rate)(struct clk_hw *, long unsigned int, long unsigned int *); - 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 *, long unsigned int, long unsigned int); - int (*set_rate_and_parent)(struct clk_hw *, long unsigned int, long unsigned int, u8); - long unsigned int (*recalc_accuracy)(struct clk_hw *, long unsigned int); - 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 *); -}; - -struct clk_parent_data { - const struct clk_hw *hw; - const char *fw_name; - const char *name; - int index; -}; - -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; - long unsigned int flags; + struct device *dev; + const char *dev_id; + const char *con_id; + long unsigned int min_rate; + long unsigned int max_rate; + unsigned int exclusive_count; + struct hlist_node clks_node; }; enum format_type { @@ -65022,6 +66292,14 @@ struct printf_spec { int precision: 16; }; +struct page_flags_fields { + int width; + int shift; + int mask; + const struct printf_spec *spec; + const char *name; +}; + struct minmax_sample { u32 t; u32 v; @@ -65031,10 +66309,6 @@ struct minmax { struct minmax_sample s[3]; }; -typedef int (*acpi_tbl_table_handler)(struct acpi_table_header *); - -typedef int (*acpi_tbl_entry_handler)(union acpi_subtable_headers *, const long unsigned int); - struct acpi_probe_entry; typedef bool (*acpi_probe_entry_validate_subtbl)(struct acpi_subtable_header *, struct acpi_probe_entry *); @@ -65093,6 +66367,19 @@ struct owl_sirq_chip_data { u32 ext_irqs[3]; }; +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 sun4i_irq_chip_data { void *irq_base; struct irq_domain *irq_domain; @@ -65100,6 +66387,12 @@ struct sun4i_irq_chip_data { u32 mask_reg_offset; }; +struct sun6i_r_intc_variant { + u32 first_mux_irq; + u32 nr_mux_irqs; + u32 mux_valid[4]; +}; + enum { SUNXI_SRC_TYPE_LEVEL_LOW = 0, SUNXI_SRC_TYPE_EDGE_FALLING = 1, @@ -65132,6 +66425,23 @@ enum acpi_madt_gic_version { ACPI_MADT_GIC_VERSION_RESERVED = 5, }; +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_COUNT = 5, +}; + +struct gic_quirk { + const char *desc; + const char *compatible; + bool (*init)(void *); + u32 iidr; + u32 mask; +}; + union gic_base { void *common_base; void **percpu_base; @@ -65155,12 +66465,22 @@ struct gic_chip_data { unsigned int gic_irqs; }; -struct gic_quirk { - const char *desc; - const char *compatible; - bool (*init)(void *); - u32 iidr; - u32 mask; +struct clk_bulk_data { + const char *id; + struct clk *clk; +}; + +struct gic_clk_data { + unsigned int num_clocks; + const char * const *clocks; +}; + +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 acpi_table_madt { @@ -65476,16 +66796,6 @@ struct its_srat_map { u32 its_id; }; -struct msi_controller { - struct module *owner; - struct device *dev; - struct device_node *of_node; - struct list_head list; - int (*setup_irq)(struct msi_controller *, struct pci_dev *, struct msi_desc *); - int (*setup_irqs)(struct msi_controller *, struct pci_dev *, int, int); - void (*teardown_irq)(struct msi_controller *, unsigned int); -}; - enum device_link_state { DL_STATE_NONE = 4294967295, DL_STATE_DORMANT = 0, @@ -65581,7 +66891,7 @@ struct fsl_mc_io { }; }; -struct partition_desc___2 { +struct partition_desc { int nr_parts; struct partition_affinity *parts; struct irq_domain *domain; @@ -65590,6 +66900,8 @@ struct partition_desc___2 { struct irq_domain_ops ops; }; +typedef void (*irq_write_msi_msg_t)(struct msi_desc *, struct msi_msg *); + struct mbigen_device { struct platform_device *pdev; void *base; @@ -65614,6 +66926,13 @@ struct irqc_priv { atomic_t wakeup_path; }; +struct xintc_irq_chip { + void *base; + struct irq_domain *root_domain; + u32 intr_mask; + u32 nr_irq; +}; + struct bcm7038_l1_cpu; struct bcm7038_l1_chip { @@ -66091,6 +67410,21 @@ struct acpi_resource_uart_serialbus { 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_pin_function { u8 revision_id; u8 pin_config; @@ -66172,6 +67506,7 @@ union acpi_resource_data { 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; @@ -66185,7 +67520,9 @@ struct acpi_resource { u32 type; u32 length; union acpi_resource_data data; -} __attribute__((packed)); +}; + +typedef acpi_status (*acpi_walk_resource_callback)(struct acpi_resource *, void *); struct combiner_reg { void *addr; @@ -66537,6 +67874,16 @@ struct mst_intc_chip_data { unsigned int nr_irqs; void *base; bool no_eoi; + struct list_head entry; + u16 saved_polarity_conf[4]; +}; + +struct aic_irq_chip { + void *base; + struct irq_domain *hw_domain; + struct irq_domain *ipi_domain; + int nr_hw; + int ipi_hwirq; }; struct of_dev_auxdata { @@ -66546,6 +67893,160 @@ struct of_dev_auxdata { void *platform_data; }; +struct gpio_desc; + +struct circ_buf { + char *buf; + int head; + int tail; +}; + +struct serial_rs485 { + __u32 flags; + __u32 delay_rts_before_send; + __u32 delay_rts_after_send; + __u32 padding[5]; +}; + +struct serial_iso7816 { + __u32 flags; + __u32 tg; + __u32 sc_fi; + __u32 sc_di; + __u32 clk; + __u32 reserved[5]; +}; + +struct 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 (*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 *, 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, long unsigned int); + int (*poll_init)(struct uart_port *); + void (*poll_put_char)(struct uart_port *, unsigned char); + int (*poll_get_char)(struct 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; +}; + +typedef u64 upf_t; + +typedef unsigned int upstat_t; + +struct uart_state; + +struct uart_port { + spinlock_t lock; + long unsigned int 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 *, 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 serial_rs485 *); + int (*iso7816_config)(struct uart_port *, struct serial_iso7816 *); + unsigned int irq; + long unsigned int 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; + int hw_stopped; + unsigned int mctrl; + unsigned int timeout; + 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; + long unsigned int sysrq; + unsigned int 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; + const struct serial_rs485 *rs485_supported; + struct gpio_desc *rs485_term_gpio; + struct serial_iso7816 iso7816; + void *private_data; +}; + +enum uart_pm_state { + UART_PM_STATE_ON = 0, + UART_PM_STATE_OFF = 3, + UART_PM_STATE_UNDEFINED = 4, +}; + +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 plat_serial8250_port { long unsigned int iobase; void *membase; @@ -66613,6 +68114,12 @@ struct brcmstb_gisb_arb_device { u32 saved_timeout; }; +struct bus_attribute { + struct attribute attr; + ssize_t (*show)(struct bus_type *, char *); + ssize_t (*store)(struct bus_type *, const char *, size_t); +}; + struct fsl_mc_device_id { __u16 vendor; const char obj_type[16]; @@ -66624,6 +68131,11 @@ enum dev_dma_attr { DEV_DMA_COHERENT = 2, }; +struct fsl_mc_command { + __le64 header; + __le64 params[7]; +}; + struct fsl_mc_driver { struct device_driver driver; const struct fsl_mc_device_id *match_id_table; @@ -66654,11 +68166,6 @@ struct mc_cmd_header { __le16 cmd_id; }; -struct fsl_mc_command { - __le64 header; - __le64 params[7]; -}; - enum mc_cmd_status { MC_CMD_STATUS_OK = 0, MC_CMD_STATUS_READY = 1, @@ -66713,12 +68220,22 @@ struct dprc_endpoint { u16 if_id; }; +struct fsl_mc_uapi { + struct miscdevice misc; + struct device *device; + struct mutex mutex; + u32 local_instance_in_use; + struct fsl_mc_io *static_mc_io; +}; + struct fsl_mc_bus { struct fsl_mc_device mc_dev; struct fsl_mc_resource_pool resource_pools[4]; struct fsl_mc_device_irq *irq_resources; struct mutex scan_mutex; struct dprc_attributes dprc_attr; + struct fsl_mc_uapi uapi_misc; + int irq_enabled; }; struct fsl_mc_addr_translation_range; @@ -66927,6 +68444,67 @@ struct dpmcp_cmd_open { __le32 dpmcp_id; }; +struct uapi_priv_data { + struct fsl_mc_uapi *uapi; + struct fsl_mc_io *mc_io; +}; + +struct fsl_mc_cmd_desc { + u16 cmdid_value; + u16 cmdid_mask; + int size; + bool token; + int flags; +}; + +enum fsl_mc_cmd_index { + DPDBG_DUMP = 0, + DPDBG_SET = 1, + DPRC_GET_CONTAINER_ID = 2, + DPRC_CREATE_CONT = 3, + DPRC_DESTROY_CONT = 4, + DPRC_ASSIGN = 5, + DPRC_UNASSIGN = 6, + DPRC_GET_OBJ_COUNT = 7, + DPRC_GET_OBJ = 8, + DPRC_GET_RES_COUNT = 9, + DPRC_GET_RES_IDS = 10, + DPRC_SET_OBJ_LABEL = 11, + DPRC_SET_LOCKED = 12, + DPRC_CONNECT = 13, + DPRC_DISCONNECT = 14, + DPRC_GET_POOL = 15, + DPRC_GET_POOL_COUNT = 16, + DPRC_GET_CONNECTION = 17, + DPCI_GET_LINK_STATE = 18, + DPCI_GET_PEER_ATTR = 19, + DPAIOP_GET_SL_VERSION = 20, + DPAIOP_GET_STATE = 21, + DPMNG_GET_VERSION = 22, + DPSECI_GET_TX_QUEUE = 23, + DPMAC_GET_COUNTER = 24, + DPMAC_GET_MAC_ADDR = 25, + DPNI_SET_PRIM_MAC = 26, + DPNI_GET_PRIM_MAC = 27, + DPNI_GET_STATISTICS = 28, + DPNI_GET_LINK_STATE = 29, + DPNI_GET_MAX_FRAME_LENGTH = 30, + DPSW_GET_TAILDROP = 31, + DPSW_SET_TAILDROP = 32, + DPSW_IF_GET_COUNTER = 33, + DPSW_IF_GET_MAX_FRAME_LENGTH = 34, + DPDMUX_GET_COUNTER = 35, + DPDMUX_IF_GET_MAX_FRAME_LENGTH = 36, + GET_ATTR = 37, + GET_IRQ_MASK = 38, + GET_IRQ_STATUS = 39, + CLOSE = 40, + OPEN = 41, + GET_API_VERSION = 42, + DESTROY = 43, + CREATE = 44, +}; + struct imx_weim_devtype { unsigned int cs_count; unsigned int cs_regs_count; @@ -67037,6 +68615,7 @@ struct regmap_config { 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; @@ -67053,6 +68632,45 @@ struct regmap_range_cfg { unsigned int window_len; }; +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_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_write)(void *, unsigned int, unsigned int); + +typedef int (*regmap_hw_reg_update_bits)(void *, unsigned int, unsigned int, unsigned int); + +typedef struct regmap_async * (*regmap_hw_async_alloc)(); + +typedef void (*regmap_hw_free_context)(void *); + +struct regmap_bus { + bool fast_io; + 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_update_bits reg_update_bits; + regmap_hw_read read; + regmap_hw_reg_read reg_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; + bool free_on_exit; +}; + struct vexpress_syscfg { struct device *dev; void *base; @@ -67139,6 +68757,12 @@ enum phy_mode { PHY_MODE_DP = 19, }; +enum phy_media { + PHY_MEDIA_DEFAULT = 0, + PHY_MEDIA_SR = 1, + PHY_MEDIA_DAC = 2, +}; + union phy_configure_opts { struct phy_configure_opts_mipi_dphy mipi_dphy; struct phy_configure_opts_dp dp; @@ -67152,6 +68776,8 @@ struct phy_ops { 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 *); @@ -67211,7 +68837,7 @@ enum xgene_phy_mode { MODE_PCIE = 2, MODE_USB = 3, MODE_XFI = 4, - MODE_MAX = 5, + MODE_MAX___2 = 5, }; struct xgene_sata_override_param { @@ -67271,128 +68897,6 @@ struct mdio_device { unsigned int reset_deassert_delay; }; -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_UP = 3, - PHY_RUNNING = 4, - PHY_NOLINK = 5, - PHY_CABLETEST = 6, -}; - -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_RGMII = 8, - PHY_INTERFACE_MODE_RGMII_ID = 9, - PHY_INTERFACE_MODE_RGMII_RXID = 10, - PHY_INTERFACE_MODE_RGMII_TXID = 11, - PHY_INTERFACE_MODE_RTBI = 12, - PHY_INTERFACE_MODE_SMII = 13, - PHY_INTERFACE_MODE_XGMII = 14, - PHY_INTERFACE_MODE_XLGMII = 15, - PHY_INTERFACE_MODE_MOCA = 16, - PHY_INTERFACE_MODE_QSGMII = 17, - PHY_INTERFACE_MODE_TRGMII = 18, - PHY_INTERFACE_MODE_1000BASEX = 19, - PHY_INTERFACE_MODE_2500BASEX = 20, - PHY_INTERFACE_MODE_RXAUI = 21, - PHY_INTERFACE_MODE_XAUI = 22, - PHY_INTERFACE_MODE_10GBASER = 23, - PHY_INTERFACE_MODE_USXGMII = 24, - PHY_INTERFACE_MODE_10GKR = 25, - PHY_INTERFACE_MODE_MAX = 26, -} phy_interface_t; - -struct phylink; - -struct phy_driver; - -struct phy_led_trigger; - -struct phy_package_shared; - -struct mii_timestamper; - -struct phy_device { - struct mdio_device mdio; - struct phy_driver *drv; - 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 autoneg: 1; - unsigned int link: 1; - unsigned int autoneg_complete: 1; - unsigned int interrupts: 1; - 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; - long unsigned int supported[2]; - long unsigned int advertising[2]; - long unsigned int lp_advertising[2]; - long unsigned int adv_old[2]; - 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; - 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; - u8 mdix; - u8 mdix_ctrl; - void (*phy_link_change)(struct phy_device *, bool); - void (*adjust_link)(struct net_device *); - const struct macsec_ops *macsec_ops; -}; - -struct phy_tdr_config { - u32 first; - u32 last; - u32 step; - s8 pair; -}; - struct mdio_bus_stats { u64_stats_t transfers; u64_stats_t errors; @@ -67401,6 +68905,8 @@ struct mdio_bus_stats { struct u64_stats_sync syncp; }; +struct phy_package_shared; + struct mii_bus { struct module *owner; const char *name; @@ -67445,15 +68951,7 @@ struct mdio_driver { struct mdio_driver_common mdiodrv; int (*probe)(struct mdio_device *); void (*remove)(struct mdio_device *); -}; - -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; + void (*shutdown)(struct mdio_device *); }; struct phy_package_shared { @@ -67464,49 +68962,6 @@ struct phy_package_shared { void *priv; }; -struct phy_driver { - struct mdio_driver_common mdiodrv; - u32 phy_id; - char *name; - u32 phy_id_mask; - const long unsigned int * 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 (*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 *); -}; - enum brcm_sata_phy_version { BRCM_SATA_PHY_STB_16NM = 0, BRCM_SATA_PHY_STB_28NM = 1, @@ -67717,6 +69172,7 @@ struct gpio_irq_chip { bool threaded; int (*init_hw)(struct gpio_chip *); void (*init_valid_mask)(struct gpio_chip *, long unsigned int *, unsigned int); + bool initialized; long unsigned int *valid_mask; unsigned int first; void (*irq_enable)(struct irq_data *); @@ -67748,6 +69204,7 @@ struct gpio_chip { int (*add_pin_ranges)(struct gpio_chip *); int base; u16 ngpio; + u16 offset; const char * const *names; bool can_sleep; long unsigned int (*read_reg)(void *); @@ -67760,7 +69217,7 @@ struct gpio_chip { void *reg_dir_in; bool bgpio_dir_unreadable; int bgpio_bits; - spinlock_t bgpio_lock; + raw_spinlock_t bgpio_lock; long unsigned int bgpio_data; long unsigned int bgpio_dir; struct gpio_irq_chip irq; @@ -67768,6 +69225,7 @@ struct gpio_chip { struct device_node *of_node; unsigned int of_gpio_n_cells; int (*of_xlate)(struct gpio_chip *, const struct of_phandle_args *, u32 *); + int (*of_gpio_ranges_fallback)(struct gpio_chip *, struct device_node *); }; struct pinctrl_dev; @@ -67896,14 +69354,15 @@ enum pin_config_param { PIN_CONFIG_INPUT_ENABLE = 12, PIN_CONFIG_INPUT_SCHMITT = 13, PIN_CONFIG_INPUT_SCHMITT_ENABLE = 14, - PIN_CONFIG_LOW_POWER_MODE = 15, - PIN_CONFIG_OUTPUT_ENABLE = 16, + PIN_CONFIG_MODE_LOW_POWER = 15, + PIN_CONFIG_MODE_PWM = 16, PIN_CONFIG_OUTPUT = 17, - PIN_CONFIG_POWER_SOURCE = 18, - PIN_CONFIG_SLEEP_HARDWARE_STATE = 19, - PIN_CONFIG_SLEW_RATE = 20, + PIN_CONFIG_OUTPUT_ENABLE = 18, + PIN_CONFIG_PERSIST_STATE = 19, + PIN_CONFIG_POWER_SOURCE = 20, PIN_CONFIG_SKEW_DELAY = 21, - PIN_CONFIG_PERSIST_STATE = 22, + PIN_CONFIG_SLEEP_HARDWARE_STATE = 22, + PIN_CONFIG_SLEW_RATE = 23, PIN_CONFIG_END = 127, PIN_CONFIG_MAX = 255, }; @@ -67921,7 +69380,7 @@ struct pin_config_item { bool has_arg; }; -struct gpio_desc___2; +struct gpio_desc; struct gpio_device { int id; @@ -67930,17 +69389,18 @@ struct gpio_device { struct device *mockdev; struct module *owner; struct gpio_chip *chip; - struct gpio_desc___2 *descs; + struct gpio_desc *descs; int base; u16 ngpio; const char *label; void *data; struct list_head list; struct blocking_notifier_head notifier; + struct rw_semaphore sem; struct list_head pin_ranges; }; -struct gpio_desc___2 { +struct gpio_desc { struct gpio_device *gdev; long unsigned int flags; const char *label; @@ -68091,6 +69551,7 @@ struct amd_gpio { struct resource *res; struct platform_device *pdev; u32 *saved_regs; + int irq; }; struct bm1880_pctrl_group; @@ -68382,7 +69843,10 @@ struct regulator_ops { 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 (*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 *); @@ -68448,7 +69912,10 @@ struct regulator_dev { struct regulator_enable_gpio *ena_pin; unsigned int ena_gpio_state: 1; unsigned int is_switch: 1; - long unsigned int last_off_jiffy; + ktime_t last_off; + int cached_err; + bool use_cached_err; + spinlock_t err_lock; }; enum regulator_type { @@ -68512,6 +69979,10 @@ struct regulator_desc { 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; @@ -68538,6 +70009,12 @@ struct regulator_state { bool changeable; }; +struct notification_limit { + int prot; + int err; + int warn; +}; + struct regulation_constraints { const char *name; int min_uV; @@ -68555,6 +70032,10 @@ struct regulation_constraints { 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; @@ -68570,6 +70051,10 @@ struct regulation_constraints { 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; @@ -68853,6 +70338,25 @@ enum rockchip_pinctrl_type { RK3308 = 7, RK3368 = 8, RK3399 = 9, + RK3568 = 10, +}; + +struct rockchip_gpio_regs { + u32 port_dr; + u32 port_ddr; + u32 int_en; + u32 int_mask; + u32 int_type; + u32 int_polarity; + u32 int_bothedge; + u32 int_status; + u32 int_rawstatus; + u32 debounce; + u32 dbclk_div_en; + u32 dbclk_div_con; + u32 port_eoi; + u32 ext_port; + u32 version_id; }; struct rockchip_iomux { @@ -68883,9 +70387,11 @@ struct rockchip_drv { struct rockchip_pinctrl; struct rockchip_pin_bank { + struct device *dev; void *reg_base; struct regmap *regmap_pull; struct clk *clk; + struct clk *db_clk; int irq; u32 saved_masks; u32 pin_base; @@ -68902,9 +70408,13 @@ struct rockchip_pin_bank { struct gpio_chip gpio_chip; struct pinctrl_gpio_range grange; raw_spinlock_t slock; + const struct rockchip_gpio_regs *gpio_regs; + u32 gpio_type; u32 toggle_edge_mode; u32 recalced_mask; u32 route_mask; + struct list_head deferred_pins; + struct mutex deferred_lock; }; struct rockchip_pin_ctrl; @@ -68965,8 +70475,8 @@ struct rockchip_pin_ctrl { u32 niomux_recalced; struct rockchip_mux_route_data *iomux_routes; u32 niomux_routes; - void (*pull_calc_reg)(struct rockchip_pin_bank *, int, struct regmap **, int *, u8 *); - void (*drv_calc_reg)(struct rockchip_pin_bank *, int, struct regmap **, int *, u8 *); + int (*pull_calc_reg)(struct rockchip_pin_bank *, int, struct regmap **, int *, u8 *); + int (*drv_calc_reg)(struct rockchip_pin_bank *, int, struct regmap **, int *, u8 *); int (*schmitt_calc_reg)(struct rockchip_pin_bank *, int, struct regmap **, int *, u8 *); }; @@ -68976,6 +70486,13 @@ struct rockchip_pin_config { unsigned int nconfigs; }; +struct rockchip_pin_deferred { + struct list_head head; + unsigned int pin; + enum pin_config_param param; + u32 arg; +}; + struct rockchip_pin_group { const char *name; unsigned int npins; @@ -69086,6 +70603,12 @@ struct i2c_device_id { kernel_ulong_t driver_data; }; +struct software_node { + const char *name; + const struct software_node *parent; + const struct property_entry *properties; +}; + struct i2c_msg { __u16 addr; __u16 flags; @@ -69121,6 +70644,7 @@ struct i2c_client { int irq; struct list_head detected; i2c_slave_cb_t slave_cb; + void *devres_group_id; }; enum i2c_alert_protocol { @@ -69153,7 +70677,7 @@ struct i2c_board_info { void *platform_data; struct device_node *of_node; struct fwnode_handle *fwnode; - const struct property_entry *properties; + const struct software_node *swnode; const struct resource *resources; unsigned int num_resources; int irq; @@ -69187,6 +70711,7 @@ struct i2c_adapter { 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_algorithm { @@ -69309,6 +70834,343 @@ struct sx150x_pinctrl { const struct sx150x_device_data *data; }; +struct tegra_pinctrl_soc_data; + +struct tegra_pmx { + struct device *dev; + struct pinctrl_dev *pctl; + const struct tegra_pinctrl_soc_data *soc; + const char **group_pins; + int nbanks; + void **regs; + u32 *backup_regs; +}; + +struct tegra_function; + +struct tegra_pingroup; + +struct tegra_pinctrl_soc_data { + unsigned int ngpios; + const char *gpio_compatible; + const struct pinctrl_pin_desc *pins; + unsigned int npins; + struct tegra_function *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; +}; + +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 tegra_function { + const char *name; + const char **groups; + unsigned int ngroups; +}; + +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 drvtype_bit: 6; + s32 drvdn_width: 6; + s32 drvup_width: 6; + long: 2; + s32 slwr_width: 6; + s32 slwf_width: 6; + u32 parked_bitmask; +}; + +struct cfg_param { + const char *property; + enum tegra_pinconf_param param; +}; + +enum tegra_mux { + TEGRA_MUX_BLINK = 0, + TEGRA_MUX_CCLA = 1, + TEGRA_MUX_CEC = 2, + TEGRA_MUX_CLDVFS = 3, + TEGRA_MUX_CLK = 4, + TEGRA_MUX_CLK12 = 5, + TEGRA_MUX_CPU = 6, + TEGRA_MUX_CSI = 7, + TEGRA_MUX_DAP = 8, + TEGRA_MUX_DAP1 = 9, + TEGRA_MUX_DAP2 = 10, + TEGRA_MUX_DEV3 = 11, + TEGRA_MUX_DISPLAYA = 12, + TEGRA_MUX_DISPLAYA_ALT = 13, + TEGRA_MUX_DISPLAYB = 14, + TEGRA_MUX_DP = 15, + TEGRA_MUX_DSI_B = 16, + TEGRA_MUX_DTV = 17, + TEGRA_MUX_EXTPERIPH1 = 18, + TEGRA_MUX_EXTPERIPH2 = 19, + TEGRA_MUX_EXTPERIPH3 = 20, + TEGRA_MUX_GMI = 21, + TEGRA_MUX_GMI_ALT = 22, + TEGRA_MUX_HDA = 23, + TEGRA_MUX_HSI = 24, + TEGRA_MUX_I2C1 = 25, + TEGRA_MUX_I2C2 = 26, + TEGRA_MUX_I2C3 = 27, + TEGRA_MUX_I2C4 = 28, + TEGRA_MUX_I2CPWR = 29, + TEGRA_MUX_I2S0 = 30, + TEGRA_MUX_I2S1 = 31, + TEGRA_MUX_I2S2 = 32, + TEGRA_MUX_I2S3 = 33, + TEGRA_MUX_I2S4 = 34, + TEGRA_MUX_IRDA = 35, + TEGRA_MUX_KBC = 36, + TEGRA_MUX_OWR = 37, + TEGRA_MUX_PE = 38, + TEGRA_MUX_PE0 = 39, + TEGRA_MUX_PE1 = 40, + TEGRA_MUX_PMI = 41, + TEGRA_MUX_PWM0 = 42, + TEGRA_MUX_PWM1 = 43, + TEGRA_MUX_PWM2 = 44, + TEGRA_MUX_PWM3 = 45, + TEGRA_MUX_PWRON = 46, + TEGRA_MUX_RESET_OUT_N = 47, + TEGRA_MUX_RSVD1 = 48, + TEGRA_MUX_RSVD2 = 49, + TEGRA_MUX_RSVD3 = 50, + TEGRA_MUX_RSVD4 = 51, + TEGRA_MUX_RTCK = 52, + TEGRA_MUX_SATA = 53, + TEGRA_MUX_SDMMC1 = 54, + TEGRA_MUX_SDMMC2 = 55, + TEGRA_MUX_SDMMC3 = 56, + TEGRA_MUX_SDMMC4 = 57, + TEGRA_MUX_SOC = 58, + TEGRA_MUX_SPDIF = 59, + TEGRA_MUX_SPI1 = 60, + TEGRA_MUX_SPI2 = 61, + TEGRA_MUX_SPI3 = 62, + TEGRA_MUX_SPI4 = 63, + TEGRA_MUX_SPI5 = 64, + TEGRA_MUX_SPI6 = 65, + TEGRA_MUX_SYS = 66, + TEGRA_MUX_TMDS = 67, + TEGRA_MUX_TRACE = 68, + TEGRA_MUX_UARTA = 69, + TEGRA_MUX_UARTB = 70, + TEGRA_MUX_UARTC = 71, + TEGRA_MUX_UARTD = 72, + TEGRA_MUX_ULPI = 73, + TEGRA_MUX_USB = 74, + TEGRA_MUX_VGP1 = 75, + TEGRA_MUX_VGP2 = 76, + TEGRA_MUX_VGP3 = 77, + TEGRA_MUX_VGP4 = 78, + TEGRA_MUX_VGP5 = 79, + TEGRA_MUX_VGP6 = 80, + TEGRA_MUX_VI = 81, + TEGRA_MUX_VI_ALT1 = 82, + TEGRA_MUX_VI_ALT3 = 83, + TEGRA_MUX_VIMCLK2 = 84, + TEGRA_MUX_VIMCLK2_ALT = 85, +}; + +enum tegra_mux___2 { + TEGRA_MUX_AUD = 0, + TEGRA_MUX_BCL = 1, + TEGRA_MUX_BLINK___2 = 2, + TEGRA_MUX_CCLA___2 = 3, + TEGRA_MUX_CEC___2 = 4, + TEGRA_MUX_CLDVFS___2 = 5, + TEGRA_MUX_CLK___2 = 6, + TEGRA_MUX_CORE = 7, + TEGRA_MUX_CPU___2 = 8, + TEGRA_MUX_DISPLAYA___2 = 9, + TEGRA_MUX_DISPLAYB___2 = 10, + TEGRA_MUX_DMIC1 = 11, + TEGRA_MUX_DMIC2 = 12, + TEGRA_MUX_DMIC3 = 13, + TEGRA_MUX_DP___2 = 14, + TEGRA_MUX_DTV___2 = 15, + TEGRA_MUX_EXTPERIPH3___2 = 16, + TEGRA_MUX_I2C1___2 = 17, + TEGRA_MUX_I2C2___2 = 18, + TEGRA_MUX_I2C3___2 = 19, + TEGRA_MUX_I2CPMU = 20, + TEGRA_MUX_I2CVI = 21, + TEGRA_MUX_I2S1___2 = 22, + TEGRA_MUX_I2S2___2 = 23, + TEGRA_MUX_I2S3___2 = 24, + TEGRA_MUX_I2S4A = 25, + TEGRA_MUX_I2S4B = 26, + TEGRA_MUX_I2S5A = 27, + TEGRA_MUX_I2S5B = 28, + TEGRA_MUX_IQC0 = 29, + TEGRA_MUX_IQC1 = 30, + TEGRA_MUX_JTAG = 31, + TEGRA_MUX_PE___2 = 32, + TEGRA_MUX_PE0___2 = 33, + TEGRA_MUX_PE1___2 = 34, + TEGRA_MUX_PMI___2 = 35, + TEGRA_MUX_PWM0___2 = 36, + TEGRA_MUX_PWM1___2 = 37, + TEGRA_MUX_PWM2___2 = 38, + TEGRA_MUX_PWM3___2 = 39, + TEGRA_MUX_QSPI = 40, + TEGRA_MUX_RSVD0 = 41, + TEGRA_MUX_RSVD1___2 = 42, + TEGRA_MUX_RSVD2___2 = 43, + TEGRA_MUX_RSVD3___2 = 44, + TEGRA_MUX_SATA___2 = 45, + TEGRA_MUX_SDMMC1___2 = 46, + TEGRA_MUX_SDMMC3___2 = 47, + TEGRA_MUX_SHUTDOWN = 48, + TEGRA_MUX_SOC___2 = 49, + TEGRA_MUX_SOR0 = 50, + TEGRA_MUX_SOR1 = 51, + TEGRA_MUX_SPDIF___2 = 52, + TEGRA_MUX_SPI1___2 = 53, + TEGRA_MUX_SPI2___2 = 54, + TEGRA_MUX_SPI3___2 = 55, + TEGRA_MUX_SPI4___2 = 56, + TEGRA_MUX_SYS___2 = 57, + TEGRA_MUX_TOUCH = 58, + TEGRA_MUX_UART = 59, + TEGRA_MUX_UARTA___2 = 60, + TEGRA_MUX_UARTB___2 = 61, + TEGRA_MUX_UARTC___2 = 62, + TEGRA_MUX_UARTD___2 = 63, + TEGRA_MUX_USB___2 = 64, + TEGRA_MUX_VGP1___2 = 65, + TEGRA_MUX_VGP2___2 = 66, + TEGRA_MUX_VGP3___2 = 67, + TEGRA_MUX_VGP4___2 = 68, + TEGRA_MUX_VGP5___2 = 69, + TEGRA_MUX_VGP6___2 = 70, + TEGRA_MUX_VIMCLK = 71, + TEGRA_MUX_VIMCLK2___2 = 72, +}; + +enum pin_id { + TEGRA_PIN_PEX_L5_CLKREQ_N_PGG0 = 0, + TEGRA_PIN_PEX_L5_RST_N_PGG1 = 1, +}; + +enum tegra_mux_dt { + TEGRA_MUX_RSVD0___2 = 0, + TEGRA_MUX_RSVD1___3 = 1, + TEGRA_MUX_RSVD2___3 = 2, + TEGRA_MUX_RSVD3___3 = 3, + TEGRA_MUX_PE5 = 4, +}; + +struct tegra_xusb_padctl_function { + const char *name; + const char * const *groups; + unsigned int num_groups; +}; + +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_lane { + const char *name; + unsigned int offset; + unsigned int shift; + unsigned int mask; + unsigned int iddq; + const unsigned int *funcs; + unsigned int num_funcs; +}; + +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; +}; + +enum tegra_xusb_padctl_param { + TEGRA_XUSB_PADCTL_IDDQ = 0, +}; + +struct tegra_xusb_padctl_property { + const char *name; + enum tegra_xusb_padctl_param param; +}; + +enum tegra124_function { + TEGRA124_FUNC_SNPS = 0, + TEGRA124_FUNC_XUSB = 1, + TEGRA124_FUNC_UART = 2, + TEGRA124_FUNC_PCIE = 3, + TEGRA124_FUNC_USB3 = 4, + TEGRA124_FUNC_SATA = 5, + TEGRA124_FUNC_RSVD = 6, +}; + enum { PINCONF_BIAS = 0, PINCONF_SCHMITT = 1, @@ -69425,6 +71287,7 @@ struct sgpio_priv { u32 clock; u32 *regs; const struct sgpio_properties *properties; + spinlock_t lock; }; struct sgpio_port_addr { @@ -69521,59 +71384,6 @@ struct owl_pinctrl { unsigned int *irq; }; -enum s500_pinmux_functions { - S500_MUX_NOR = 0, - S500_MUX_ETH_RMII = 1, - S500_MUX_ETH_SMII = 2, - S500_MUX_SPI0 = 3, - S500_MUX_SPI1 = 4, - S500_MUX_SPI2 = 5, - S500_MUX_SPI3 = 6, - S500_MUX_SENS0 = 7, - S500_MUX_SENS1 = 8, - S500_MUX_UART0 = 9, - S500_MUX_UART1 = 10, - S500_MUX_UART2 = 11, - S500_MUX_UART3 = 12, - S500_MUX_UART4 = 13, - S500_MUX_UART5 = 14, - S500_MUX_UART6 = 15, - S500_MUX_I2S0 = 16, - S500_MUX_I2S1 = 17, - S500_MUX_PCM1 = 18, - S500_MUX_PCM0 = 19, - S500_MUX_KS = 20, - S500_MUX_JTAG = 21, - S500_MUX_PWM0 = 22, - S500_MUX_PWM1 = 23, - S500_MUX_PWM2 = 24, - S500_MUX_PWM3 = 25, - S500_MUX_PWM4 = 26, - S500_MUX_PWM5 = 27, - S500_MUX_P0 = 28, - S500_MUX_SD0 = 29, - S500_MUX_SD1 = 30, - S500_MUX_SD2 = 31, - S500_MUX_I2C0 = 32, - S500_MUX_I2C1 = 33, - S500_MUX_I2C3 = 34, - S500_MUX_DSI = 35, - S500_MUX_LVDS = 36, - S500_MUX_USB30 = 37, - S500_MUX_CLKO_25M = 38, - S500_MUX_MIPI_CSI = 39, - S500_MUX_NAND = 40, - S500_MUX_SPDIF = 41, - S500_MUX_TS = 42, - S500_MUX_LCD0 = 43, - S500_MUX_RESERVED = 44, -}; - -enum s500_pinconf_pull { - OWL_PINCONF_PULL_DOWN = 0, - OWL_PINCONF_PULL_UP = 1, -}; - enum s700_pinmux_functions { S700_MUX_NOR = 0, S700_MUX_ETH_RGMII = 1, @@ -69627,8 +71437,8 @@ enum s700_pinmux_functions { }; enum s700_pinconf_pull { - OWL_PINCONF_PULL_DOWN___2 = 0, - OWL_PINCONF_PULL_UP___2 = 1, + OWL_PINCONF_PULL_DOWN = 0, + OWL_PINCONF_PULL_UP = 1, }; enum s900_pinmux_functions { @@ -69688,8 +71498,8 @@ enum s900_pinmux_functions { enum s900_pinconf_pull { OWL_PINCONF_PULL_HIZ = 0, - OWL_PINCONF_PULL_DOWN___3 = 1, - OWL_PINCONF_PULL_UP___3 = 2, + OWL_PINCONF_PULL_DOWN___2 = 1, + OWL_PINCONF_PULL_UP___2 = 2, OWL_PINCONF_PULL_HOLD = 3, }; @@ -69931,7 +71741,7 @@ struct imx_sc_msg_req_pad_set { struct imx_sc_msg_req_pad_get { struct imx_sc_rpc_msg hdr; u16 pad; - short: 16; + long: 0; }; struct imx_sc_msg_resp_pad_get { @@ -70715,7 +72525,7 @@ struct msm_pingroup { unsigned int intr_target_bit: 5; unsigned int intr_target_kpss_val: 5; unsigned int intr_raw_status_bit: 5; - char: 1; + long: 1; unsigned int intr_polarity_bit: 5; unsigned int intr_detection_bit: 5; unsigned int intr_detection_width: 5; @@ -70901,6 +72711,7 @@ struct sh_pfc_soc_operations { unsigned int (*get_bias)(struct sh_pfc *, unsigned int); void (*set_bias)(struct sh_pfc *, unsigned int, unsigned int); int (*pin_to_pocctrl)(struct sh_pfc *, unsigned int, u32 *); + void * (*pin_to_portcr)(struct sh_pfc *, unsigned int); }; struct sh_pfc_pin_config { @@ -83625,6 +85436,18 @@ enum { PINMUX_MARK_END___6 = 1000, }; +enum { + GP_LAST___6 = 174, + PIN_DU_DOTCLKIN = 175, + PIN_EXTALR___5 = 176, + PIN_FSCLKST_N___4 = 177, + PIN_PRESETOUT_N___6 = 178, + PIN_TCK___6 = 179, + PIN_TDI___6 = 180, + PIN_TMS___6 = 181, + PIN_TRST_N___6 = 182, +}; + enum ioctrl_regs___3 { POCCTRL0___2 = 0, POCCTRL1 = 1, @@ -84812,6 +86635,19 @@ enum { PINMUX_MARK_END___7 = 1176, }; +enum { + GP_LAST___7 = 174, + PIN_DCUTCK_LPDCLK = 175, + PIN_DCUTDI_LPDI = 176, + PIN_DCUTMS = 177, + PIN_DCUTRST_N = 178, + PIN_DU_DOTCLKIN___2 = 179, + PIN_EXTALR___6 = 180, + PIN_FSCLKST___3 = 181, + PIN_FSCLKST_N___5 = 182, + PIN_PRESETOUT_N___7 = 183, +}; + enum ioctrl_regs___4 { POCCTRL0___3 = 0, POCCTRL1___2 = 1, @@ -86128,10 +87964,1655 @@ enum { PINMUX_MARK_END___8 = 1304, }; +enum { + GP_LAST___8 = 205, + PIN_DU_DOTCLKIN0___5 = 206, + PIN_FSCLKST_N___6 = 207, + PIN_MLB_REF___6 = 208, + PIN_PRESETOUT_N___8 = 209, + PIN_TCK___7 = 210, + PIN_TDI___7 = 211, + PIN_TMS___7 = 212, + PIN_TRST_N___7 = 213, +}; + enum ioctrl_regs___5 { TDSELCTRL___5 = 0, }; +enum { + PINMUX_RESERVED___9 = 0, + PINMUX_DATA_BEGIN___9 = 1, + GP_0_0_DATA___9 = 2, + GP_0_1_DATA___9 = 3, + GP_0_2_DATA___9 = 4, + GP_0_3_DATA___9 = 5, + GP_0_4_DATA___9 = 6, + GP_0_5_DATA___9 = 7, + GP_0_6_DATA___9 = 8, + GP_0_7_DATA___9 = 9, + GP_0_8_DATA___9 = 10, + GP_0_9_DATA___8 = 11, + GP_0_10_DATA___8 = 12, + GP_0_11_DATA___8 = 13, + GP_0_12_DATA___8 = 14, + GP_0_13_DATA___8 = 15, + GP_0_14_DATA___8 = 16, + GP_0_15_DATA___8 = 17, + GP_0_16_DATA___4 = 18, + GP_0_17_DATA___4 = 19, + GP_0_18_DATA___3 = 20, + GP_0_19_DATA___3 = 21, + GP_0_20_DATA___3 = 22, + GP_0_21_DATA___3 = 23, + GP_0_22_DATA = 24, + GP_0_23_DATA = 25, + GP_0_24_DATA = 26, + GP_0_25_DATA = 27, + GP_0_26_DATA = 28, + GP_0_27_DATA = 29, + GP_1_0_DATA___9 = 30, + GP_1_1_DATA___9 = 31, + GP_1_2_DATA___9 = 32, + GP_1_3_DATA___9 = 33, + GP_1_4_DATA___9 = 34, + GP_1_5_DATA___9 = 35, + GP_1_6_DATA___9 = 36, + GP_1_7_DATA___9 = 37, + GP_1_8_DATA___9 = 38, + GP_1_9_DATA___9 = 39, + GP_1_10_DATA___9 = 40, + GP_1_11_DATA___9 = 41, + GP_1_12_DATA___9 = 42, + GP_1_13_DATA___9 = 43, + GP_1_14_DATA___9 = 44, + GP_1_15_DATA___9 = 45, + GP_1_16_DATA___9 = 46, + GP_1_17_DATA___9 = 47, + GP_1_18_DATA___9 = 48, + GP_1_19_DATA___9 = 49, + GP_1_20_DATA___9 = 50, + GP_1_21_DATA___9 = 51, + GP_1_22_DATA___9 = 52, + GP_1_23_DATA___8 = 53, + GP_1_24_DATA___8 = 54, + GP_1_25_DATA___8 = 55, + GP_1_26_DATA___8 = 56, + GP_1_27_DATA___8 = 57, + GP_1_28_DATA___5 = 58, + GP_1_29_DATA___2 = 59, + GP_1_30_DATA___2 = 60, + GP_2_0_DATA___9 = 61, + GP_2_1_DATA___9 = 62, + GP_2_2_DATA___9 = 63, + GP_2_3_DATA___9 = 64, + GP_2_4_DATA___9 = 65, + GP_2_5_DATA___9 = 66, + GP_2_6_DATA___9 = 67, + GP_2_7_DATA___9 = 68, + GP_2_8_DATA___9 = 69, + GP_2_9_DATA___9 = 70, + GP_2_10_DATA___9 = 71, + GP_2_11_DATA___9 = 72, + GP_2_12_DATA___9 = 73, + GP_2_13_DATA___9 = 74, + GP_2_14_DATA___9 = 75, + GP_2_15_DATA___5 = 76, + GP_2_16_DATA___5 = 77, + GP_2_17_DATA___4 = 78, + GP_2_18_DATA___4 = 79, + GP_2_19_DATA___4 = 80, + GP_2_20_DATA___4 = 81, + GP_2_21_DATA___4 = 82, + GP_2_22_DATA___4 = 83, + GP_2_23_DATA___4 = 84, + GP_2_24_DATA___4 = 85, + GP_3_0_DATA___9 = 86, + GP_3_1_DATA___9 = 87, + GP_3_2_DATA___9 = 88, + GP_3_3_DATA___9 = 89, + GP_3_4_DATA___9 = 90, + GP_3_5_DATA___9 = 91, + GP_3_6_DATA___9 = 92, + GP_3_7_DATA___9 = 93, + GP_3_8_DATA___9 = 94, + GP_3_9_DATA___9 = 95, + GP_3_10_DATA___8 = 96, + GP_3_11_DATA___8 = 97, + GP_3_12_DATA___8 = 98, + GP_3_13_DATA___8 = 99, + GP_3_14_DATA___8 = 100, + GP_3_15_DATA___8 = 101, + GP_3_16_DATA___3 = 102, + GP_4_0_DATA___9 = 103, + GP_4_1_DATA___9 = 104, + GP_4_2_DATA___9 = 105, + GP_4_3_DATA___9 = 106, + GP_4_4_DATA___9 = 107, + GP_4_5_DATA___9 = 108, + GP_4_6_DATA___8 = 109, + GP_4_7_DATA___8 = 110, + GP_4_8_DATA___8 = 111, + GP_4_9_DATA___8 = 112, + GP_4_10_DATA___8 = 113, + GP_4_11_DATA___7 = 114, + GP_4_12_DATA___7 = 115, + GP_4_13_DATA___7 = 116, + GP_4_14_DATA___7 = 117, + GP_4_15_DATA___7 = 118, + GP_4_16_DATA___7 = 119, + GP_4_17_DATA___7 = 120, + GP_4_18_DATA___3 = 121, + GP_4_19_DATA___3 = 122, + GP_4_20_DATA___3 = 123, + GP_4_21_DATA___3 = 124, + GP_4_22_DATA___3 = 125, + GP_4_23_DATA___3 = 126, + GP_4_24_DATA___3 = 127, + GP_4_25_DATA___2 = 128, + GP_4_26_DATA___2 = 129, + GP_5_0_DATA___9 = 130, + GP_5_1_DATA___9 = 131, + GP_5_2_DATA___9 = 132, + GP_5_3_DATA___9 = 133, + GP_5_4_DATA___9 = 134, + GP_5_5_DATA___9 = 135, + GP_5_6_DATA___9 = 136, + GP_5_7_DATA___9 = 137, + GP_5_8_DATA___9 = 138, + GP_5_9_DATA___9 = 139, + GP_5_10_DATA___9 = 140, + GP_5_11_DATA___9 = 141, + GP_5_12_DATA___9 = 142, + GP_5_13_DATA___9 = 143, + GP_5_14_DATA___9 = 144, + GP_5_15_DATA___7 = 145, + GP_5_16_DATA___7 = 146, + GP_5_17_DATA___7 = 147, + GP_5_18_DATA___7 = 148, + GP_5_19_DATA___7 = 149, + GP_5_20_DATA___6 = 150, + GP_6_0_DATA___7 = 151, + GP_6_1_DATA___7 = 152, + GP_6_2_DATA___7 = 153, + GP_6_3_DATA___7 = 154, + GP_6_4_DATA___7 = 155, + GP_6_5_DATA___7 = 156, + GP_6_6_DATA___7 = 157, + GP_6_7_DATA___7 = 158, + GP_6_8_DATA___7 = 159, + GP_6_9_DATA___7 = 160, + GP_6_10_DATA___7 = 161, + GP_6_11_DATA___7 = 162, + GP_6_12_DATA___7 = 163, + GP_6_13_DATA___7 = 164, + GP_6_14_DATA___6 = 165, + GP_6_15_DATA___6 = 166, + GP_6_16_DATA___6 = 167, + GP_6_17_DATA___6 = 168, + GP_6_18_DATA___5 = 169, + GP_6_19_DATA___5 = 170, + GP_6_20_DATA___5 = 171, + GP_7_0_DATA___5 = 172, + GP_7_1_DATA___5 = 173, + GP_7_2_DATA___5 = 174, + GP_7_3_DATA___5 = 175, + GP_7_4_DATA = 176, + GP_7_5_DATA = 177, + GP_7_6_DATA = 178, + GP_7_7_DATA = 179, + GP_7_8_DATA = 180, + GP_7_9_DATA = 181, + GP_7_10_DATA = 182, + GP_7_11_DATA = 183, + GP_7_12_DATA = 184, + GP_7_13_DATA = 185, + GP_7_14_DATA = 186, + GP_7_15_DATA = 187, + GP_7_16_DATA = 188, + GP_7_17_DATA = 189, + GP_7_18_DATA = 190, + GP_7_19_DATA = 191, + GP_7_20_DATA = 192, + GP_8_0_DATA = 193, + GP_8_1_DATA = 194, + GP_8_2_DATA = 195, + GP_8_3_DATA = 196, + GP_8_4_DATA = 197, + GP_8_5_DATA = 198, + GP_8_6_DATA = 199, + GP_8_7_DATA = 200, + GP_8_8_DATA = 201, + GP_8_9_DATA = 202, + GP_8_10_DATA = 203, + GP_8_11_DATA = 204, + GP_8_12_DATA = 205, + GP_8_13_DATA = 206, + GP_8_14_DATA = 207, + GP_8_15_DATA = 208, + GP_8_16_DATA = 209, + GP_8_17_DATA = 210, + GP_8_18_DATA = 211, + GP_8_19_DATA = 212, + GP_8_20_DATA = 213, + GP_9_0_DATA = 214, + GP_9_1_DATA = 215, + GP_9_2_DATA = 216, + GP_9_3_DATA = 217, + GP_9_4_DATA = 218, + GP_9_5_DATA = 219, + GP_9_6_DATA = 220, + GP_9_7_DATA = 221, + GP_9_8_DATA = 222, + GP_9_9_DATA = 223, + GP_9_10_DATA = 224, + GP_9_11_DATA = 225, + GP_9_12_DATA = 226, + GP_9_13_DATA = 227, + GP_9_14_DATA = 228, + GP_9_15_DATA = 229, + GP_9_16_DATA = 230, + GP_9_17_DATA = 231, + GP_9_18_DATA = 232, + GP_9_19_DATA = 233, + GP_9_20_DATA = 234, + PINMUX_DATA_END___9 = 235, + PINMUX_FUNCTION_BEGIN___9 = 236, + GP_0_0_FN___9 = 237, + GP_0_1_FN___9 = 238, + GP_0_2_FN___9 = 239, + GP_0_3_FN___9 = 240, + GP_0_4_FN___9 = 241, + GP_0_5_FN___9 = 242, + GP_0_6_FN___9 = 243, + GP_0_7_FN___9 = 244, + GP_0_8_FN___9 = 245, + GP_0_9_FN___8 = 246, + GP_0_10_FN___8 = 247, + GP_0_11_FN___8 = 248, + GP_0_12_FN___8 = 249, + GP_0_13_FN___8 = 250, + GP_0_14_FN___8 = 251, + GP_0_15_FN___8 = 252, + GP_0_16_FN___4 = 253, + GP_0_17_FN___4 = 254, + GP_0_18_FN___3 = 255, + GP_0_19_FN___3 = 256, + GP_0_20_FN___3 = 257, + GP_0_21_FN___3 = 258, + GP_0_22_FN = 259, + GP_0_23_FN = 260, + GP_0_24_FN = 261, + GP_0_25_FN = 262, + GP_0_26_FN = 263, + GP_0_27_FN = 264, + GP_1_0_FN___9 = 265, + GP_1_1_FN___9 = 266, + GP_1_2_FN___9 = 267, + GP_1_3_FN___9 = 268, + GP_1_4_FN___9 = 269, + GP_1_5_FN___9 = 270, + GP_1_6_FN___9 = 271, + GP_1_7_FN___9 = 272, + GP_1_8_FN___9 = 273, + GP_1_9_FN___9 = 274, + GP_1_10_FN___9 = 275, + GP_1_11_FN___9 = 276, + GP_1_12_FN___9 = 277, + GP_1_13_FN___9 = 278, + GP_1_14_FN___9 = 279, + GP_1_15_FN___9 = 280, + GP_1_16_FN___9 = 281, + GP_1_17_FN___9 = 282, + GP_1_18_FN___9 = 283, + GP_1_19_FN___9 = 284, + GP_1_20_FN___9 = 285, + GP_1_21_FN___9 = 286, + GP_1_22_FN___9 = 287, + GP_1_23_FN___8 = 288, + GP_1_24_FN___8 = 289, + GP_1_25_FN___8 = 290, + GP_1_26_FN___8 = 291, + GP_1_27_FN___8 = 292, + GP_1_28_FN___5 = 293, + GP_1_29_FN___2 = 294, + GP_1_30_FN___2 = 295, + GP_2_0_FN___9 = 296, + GP_2_1_FN___9 = 297, + GP_2_2_FN___9 = 298, + GP_2_3_FN___9 = 299, + GP_2_4_FN___9 = 300, + GP_2_5_FN___9 = 301, + GP_2_6_FN___9 = 302, + GP_2_7_FN___9 = 303, + GP_2_8_FN___9 = 304, + GP_2_9_FN___9 = 305, + GP_2_10_FN___9 = 306, + GP_2_11_FN___9 = 307, + GP_2_12_FN___9 = 308, + GP_2_13_FN___9 = 309, + GP_2_14_FN___9 = 310, + GP_2_15_FN___5 = 311, + GP_2_16_FN___5 = 312, + GP_2_17_FN___4 = 313, + GP_2_18_FN___4 = 314, + GP_2_19_FN___4 = 315, + GP_2_20_FN___4 = 316, + GP_2_21_FN___4 = 317, + GP_2_22_FN___4 = 318, + GP_2_23_FN___4 = 319, + GP_2_24_FN___4 = 320, + GP_3_0_FN___9 = 321, + GP_3_1_FN___9 = 322, + GP_3_2_FN___9 = 323, + GP_3_3_FN___9 = 324, + GP_3_4_FN___9 = 325, + GP_3_5_FN___9 = 326, + GP_3_6_FN___9 = 327, + GP_3_7_FN___9 = 328, + GP_3_8_FN___9 = 329, + GP_3_9_FN___9 = 330, + GP_3_10_FN___8 = 331, + GP_3_11_FN___8 = 332, + GP_3_12_FN___8 = 333, + GP_3_13_FN___8 = 334, + GP_3_14_FN___8 = 335, + GP_3_15_FN___8 = 336, + GP_3_16_FN___3 = 337, + GP_4_0_FN___9 = 338, + GP_4_1_FN___9 = 339, + GP_4_2_FN___9 = 340, + GP_4_3_FN___9 = 341, + GP_4_4_FN___9 = 342, + GP_4_5_FN___9 = 343, + GP_4_6_FN___8 = 344, + GP_4_7_FN___8 = 345, + GP_4_8_FN___8 = 346, + GP_4_9_FN___8 = 347, + GP_4_10_FN___8 = 348, + GP_4_11_FN___7 = 349, + GP_4_12_FN___7 = 350, + GP_4_13_FN___7 = 351, + GP_4_14_FN___7 = 352, + GP_4_15_FN___7 = 353, + GP_4_16_FN___7 = 354, + GP_4_17_FN___7 = 355, + GP_4_18_FN___3 = 356, + GP_4_19_FN___3 = 357, + GP_4_20_FN___3 = 358, + GP_4_21_FN___3 = 359, + GP_4_22_FN___3 = 360, + GP_4_23_FN___3 = 361, + GP_4_24_FN___3 = 362, + GP_4_25_FN___2 = 363, + GP_4_26_FN___2 = 364, + GP_5_0_FN___9 = 365, + GP_5_1_FN___9 = 366, + GP_5_2_FN___9 = 367, + GP_5_3_FN___9 = 368, + GP_5_4_FN___9 = 369, + GP_5_5_FN___9 = 370, + GP_5_6_FN___9 = 371, + GP_5_7_FN___9 = 372, + GP_5_8_FN___9 = 373, + GP_5_9_FN___9 = 374, + GP_5_10_FN___9 = 375, + GP_5_11_FN___9 = 376, + GP_5_12_FN___9 = 377, + GP_5_13_FN___9 = 378, + GP_5_14_FN___9 = 379, + GP_5_15_FN___7 = 380, + GP_5_16_FN___7 = 381, + GP_5_17_FN___7 = 382, + GP_5_18_FN___7 = 383, + GP_5_19_FN___7 = 384, + GP_5_20_FN___6 = 385, + GP_6_0_FN___7 = 386, + GP_6_1_FN___7 = 387, + GP_6_2_FN___7 = 388, + GP_6_3_FN___7 = 389, + GP_6_4_FN___7 = 390, + GP_6_5_FN___7 = 391, + GP_6_6_FN___7 = 392, + GP_6_7_FN___7 = 393, + GP_6_8_FN___7 = 394, + GP_6_9_FN___7 = 395, + GP_6_10_FN___7 = 396, + GP_6_11_FN___7 = 397, + GP_6_12_FN___7 = 398, + GP_6_13_FN___7 = 399, + GP_6_14_FN___6 = 400, + GP_6_15_FN___6 = 401, + GP_6_16_FN___6 = 402, + GP_6_17_FN___6 = 403, + GP_6_18_FN___5 = 404, + GP_6_19_FN___5 = 405, + GP_6_20_FN___5 = 406, + GP_7_0_FN___5 = 407, + GP_7_1_FN___5 = 408, + GP_7_2_FN___5 = 409, + GP_7_3_FN___5 = 410, + GP_7_4_FN = 411, + GP_7_5_FN = 412, + GP_7_6_FN = 413, + GP_7_7_FN = 414, + GP_7_8_FN = 415, + GP_7_9_FN = 416, + GP_7_10_FN = 417, + GP_7_11_FN = 418, + GP_7_12_FN = 419, + GP_7_13_FN = 420, + GP_7_14_FN = 421, + GP_7_15_FN = 422, + GP_7_16_FN = 423, + GP_7_17_FN = 424, + GP_7_18_FN = 425, + GP_7_19_FN = 426, + GP_7_20_FN = 427, + GP_8_0_FN = 428, + GP_8_1_FN = 429, + GP_8_2_FN = 430, + GP_8_3_FN = 431, + GP_8_4_FN = 432, + GP_8_5_FN = 433, + GP_8_6_FN = 434, + GP_8_7_FN = 435, + GP_8_8_FN = 436, + GP_8_9_FN = 437, + GP_8_10_FN = 438, + GP_8_11_FN = 439, + GP_8_12_FN = 440, + GP_8_13_FN = 441, + GP_8_14_FN = 442, + GP_8_15_FN = 443, + GP_8_16_FN = 444, + GP_8_17_FN = 445, + GP_8_18_FN = 446, + GP_8_19_FN = 447, + GP_8_20_FN = 448, + GP_9_0_FN = 449, + GP_9_1_FN = 450, + GP_9_2_FN = 451, + GP_9_3_FN = 452, + GP_9_4_FN = 453, + GP_9_5_FN = 454, + GP_9_6_FN = 455, + GP_9_7_FN = 456, + GP_9_8_FN = 457, + GP_9_9_FN = 458, + GP_9_10_FN = 459, + GP_9_11_FN = 460, + GP_9_12_FN = 461, + GP_9_13_FN = 462, + GP_9_14_FN = 463, + GP_9_15_FN = 464, + GP_9_16_FN = 465, + GP_9_17_FN = 466, + GP_9_18_FN = 467, + GP_9_19_FN = 468, + GP_9_20_FN = 469, + FN_MMC_D7___4 = 470, + FN_MMC_D6___4 = 471, + FN_AVS1___5 = 472, + FN_MMC_D5___4 = 473, + FN_AVS0 = 474, + FN_MMC_D4___4 = 475, + FN_TCLK2_A___9 = 476, + FN_PCIE3_CLKREQ_N = 477, + FN_MMC_SD_CLK = 478, + FN_PCIE2_CLKREQ_N = 479, + FN_MMC_SD_D3 = 480, + FN_PCIE1_CLKREQ_N = 481, + FN_MMC_SD_D2 = 482, + FN_PCIE0_CLKREQ_N = 483, + FN_MMC_SD_D1 = 484, + FN_AVB2_AVTP_PPS = 485, + FN_AVB3_AVTP_PPS = 486, + FN_AVB4_AVTP_PPS = 487, + FN_AVB5_AVTP_PPS = 488, + FN_MMC_SD_D0 = 489, + FN_AVB2_AVTP_CAPTURE = 490, + FN_AVB3_AVTP_CAPTURE = 491, + FN_AVB4_AVTP_CAPTURE = 492, + FN_AVB5_AVTP_CAPTURE = 493, + FN_MMC_SD_CMD = 494, + FN_AVB2_AVTP_MATCH = 495, + FN_AVB3_AVTP_MATCH = 496, + FN_AVB4_AVTP_MATCH = 497, + FN_AVB5_AVTP_MATCH = 498, + FN_MMC_DS___2 = 499, + FN_AVB2_LINK = 500, + FN_AVB3_LINK = 501, + FN_AVB4_LINK = 502, + FN_AVB5_LINK = 503, + FN_SD_CD = 504, + FN_CANFD7_RX = 505, + FN_AVB0_PHY_INT___3 = 506, + FN_AVB1_PHY_INT = 507, + FN_AVB2_PHY_INT = 508, + FN_AVB3_PHY_INT = 509, + FN_AVB4_PHY_INT = 510, + FN_AVB5_PHY_INT = 511, + FN_SD_WP = 512, + FN_CANFD7_TX = 513, + FN_AVB2_MAGIC = 514, + FN_AVB3_MAGIC = 515, + FN_AVB4_MAGIC = 516, + FN_AVB5_MAGIC = 517, + FN_RPC_INT_N___5 = 518, + FN_CANFD6_RX = 519, + FN_AVB2_MDC = 520, + FN_AVB3_MDC = 521, + FN_AVB4_MDC = 522, + FN_AVB5_MDC = 523, + FN_RPC_WP_N___3 = 524, + FN_AVB2_MDIO = 525, + FN_AVB3_MDIO = 526, + FN_AVB4_MDIO = 527, + FN_AVB5_MDIO = 528, + FN_RPC_RESET_N___5 = 529, + FN_AVB2_TXCREFCLK = 530, + FN_AVB3_TXCREFCLK = 531, + FN_AVB4_TXCREFCLK = 532, + FN_AVB5_TXCREFCLK = 533, + FN_QSPI1_SSL___5 = 534, + FN_AVB2_TD3 = 535, + FN_AVB3_TD3 = 536, + FN_AVB4_TD3 = 537, + FN_AVB5_TD3 = 538, + FN_QSPI1_IO3___5 = 539, + FN_AVB2_TD2 = 540, + FN_AVB3_TD2 = 541, + FN_AVB4_TD2 = 542, + FN_AVB5_TD2 = 543, + FN_QSPI1_IO2___5 = 544, + FN_AVB2_TD1 = 545, + FN_AVB3_TD1 = 546, + FN_AVB4_TD1 = 547, + FN_AVB5_TD1 = 548, + FN_QSPI1_MISO_IO1___5 = 549, + FN_AVB2_TD0 = 550, + FN_AVB3_TD0 = 551, + FN_AVB4_TD0 = 552, + FN_AVB5_TD0 = 553, + FN_QSPI1_MOSI_IO0___5 = 554, + FN_AVB2_TXC = 555, + FN_AVB3_TXC = 556, + FN_AVB4_TXC = 557, + FN_AVB5_TXC = 558, + FN_QSPI1_SPCLK___5 = 559, + FN_AVB2_TX_CTL = 560, + FN_AVB3_TX_CTL = 561, + FN_AVB4_TX_CTL = 562, + FN_AVB5_TX_CTL = 563, + FN_QSPI0_SSL___5 = 564, + FN_AVB2_RD3 = 565, + FN_AVB3_RD3 = 566, + FN_AVB4_RD3 = 567, + FN_AVB5_RD3 = 568, + FN_QSPI0_IO3___5 = 569, + FN_CANFD1_RX___9 = 570, + FN_AVB2_RD2 = 571, + FN_AVB3_RD2 = 572, + FN_AVB4_RD2 = 573, + FN_AVB5_RD2 = 574, + FN_QSPI0_IO2___5 = 575, + FN_CANFD1_TX___9 = 576, + FN_AVB2_RD1 = 577, + FN_AVB3_RD1 = 578, + FN_AVB4_RD1 = 579, + FN_AVB5_RD1 = 580, + FN_QSPI0_MISO_IO1___5 = 581, + FN_AVB2_RD0 = 582, + FN_AVB3_RD0 = 583, + FN_AVB4_RD0 = 584, + FN_AVB5_RD0 = 585, + FN_QSPI0_MOSI_IO0___5 = 586, + FN_AVB2_RXC = 587, + FN_AVB3_RXC = 588, + FN_AVB4_RXC = 589, + FN_AVB5_RXC = 590, + FN_QSPI0_SPCLK___5 = 591, + FN_CAN_CLK___7 = 592, + FN_AVB2_RX_CTL = 593, + FN_AVB3_RX_CTL = 594, + FN_AVB4_RX_CTL = 595, + FN_AVB5_RX_CTL = 596, + FN_IP0SR1_3_0 = 597, + FN_SCIF_CLK___2 = 598, + FN_A0___8 = 599, + FN_IP1SR1_3_0 = 600, + FN_MSIOF0_SCK___9 = 601, + FN_DU_DR4___9 = 602, + FN_A8___8 = 603, + FN_IP2SR1_3_0 = 604, + FN_MSIOF1_SS1___5 = 605, + FN_HCTS3_N___8 = 606, + FN_RX3___3 = 607, + FN_DU_DG6___9 = 608, + FN_A16___8 = 609, + FN_IP3SR1_3_0 = 610, + FN_IRQ0___8 = 611, + FN_DU_DOTCLKOUT___3 = 612, + FN_A24___3 = 613, + FN_IP0SR1_7_4 = 614, + FN_HRX0___7 = 615, + FN_RX0___7 = 616, + FN_A1___8 = 617, + FN_IP1SR1_7_4 = 618, + FN_MSIOF0_SYNC___9 = 619, + FN_DU_DR5___9 = 620, + FN_A9___8 = 621, + FN_IP2SR1_7_4 = 622, + FN_MSIOF1_SS2___5 = 623, + FN_HTX3___3 = 624, + FN_TX3___3 = 625, + FN_DU_DG7___9 = 626, + FN_A17___8 = 627, + FN_IP3SR1_7_4 = 628, + FN_IRQ1___8 = 629, + FN_DU_HSYNC___3 = 630, + FN_A25___3 = 631, + FN_IP0SR1_11_8 = 632, + FN_HSCK0___7 = 633, + FN_SCK0___7 = 634, + FN_A2___8 = 635, + FN_IP1SR1_11_8 = 636, + FN_MSIOF0_SS1___9 = 637, + FN_DU_DR6___9 = 638, + FN_A10___8 = 639, + FN_IP2SR1_11_8 = 640, + FN_MSIOF2_RXD___4 = 641, + FN_HSCK1___3 = 642, + FN_SCK1___8 = 643, + FN_DU_DB2___9 = 644, + FN_A18___8 = 645, + FN_IP3SR1_11_8 = 646, + FN_IRQ2___8 = 647, + FN_DU_VSYNC___3 = 648, + FN_CS1_N_A26___3 = 649, + FN_IP0SR1_15_12 = 650, + FN_HRTS0_N___7 = 651, + FN_RTS0_N___8 = 652, + FN_A3___8 = 653, + FN_IP1SR1_15_12 = 654, + FN_MSIOF0_SS2___9 = 655, + FN_DU_DR7___9 = 656, + FN_A11___8 = 657, + FN_IP2SR1_15_12 = 658, + FN_MSIOF2_TXD___4 = 659, + FN_HCTS1_N___3 = 660, + FN_CTS1_N___9 = 661, + FN_DU_DB3___9 = 662, + FN_A19___8 = 663, + FN_IP3SR1_15_12 = 664, + FN_IRQ3___8 = 665, + FN_DU_ODDF_DISP_CDE = 666, + FN_CS0_N___8 = 667, + FN_IP0SR1_19_16 = 668, + FN_HCTS0_N___7 = 669, + FN_CTS0_N___8 = 670, + FN_A4___8 = 671, + FN_IP1SR1_19_16 = 672, + FN_MSIOF1_RXD___5 = 673, + FN_DU_DG2___9 = 674, + FN_A12___8 = 675, + FN_IP2SR1_19_16 = 676, + FN_MSIOF2_SCK___4 = 677, + FN_HRTS1_N___3 = 678, + FN_RTS1_N___9 = 679, + FN_DU_DB4___9 = 680, + FN_A20___2 = 681, + FN_IP3SR1_19_16 = 682, + FN_GP1_28 = 683, + FN_D0___8 = 684, + FN_IP0SR1_23_20 = 685, + FN_HTX0___7 = 686, + FN_TX0___7 = 687, + FN_A5___8 = 688, + FN_IP1SR1_23_20 = 689, + FN_MSIOF1_TXD___5 = 690, + FN_HRX3___3 = 691, + FN_SCK3___7 = 692, + FN_DU_DG3___9 = 693, + FN_A13___8 = 694, + FN_IP2SR1_23_20 = 695, + FN_MSIOF2_SYNC___3 = 696, + FN_HRX1___3 = 697, + FN_RX1_A___8 = 698, + FN_DU_DB5___9 = 699, + FN_A21___2 = 700, + FN_IP3SR1_23_20 = 701, + FN_GP1_29 = 702, + FN_D1___8 = 703, + FN_IP0SR1_27_24 = 704, + FN_MSIOF0_RXD___9 = 705, + FN_DU_DR2___9 = 706, + FN_A6___8 = 707, + FN_IP1SR1_27_24 = 708, + FN_MSIOF1_SCK___5 = 709, + FN_HSCK3___7 = 710, + FN_CTS3_N___7 = 711, + FN_DU_DG4___9 = 712, + FN_A14___8 = 713, + FN_IP2SR1_27_24 = 714, + FN_MSIOF2_SS1___4 = 715, + FN_HTX1___3 = 716, + FN_TX1_A___8 = 717, + FN_DU_DB6___9 = 718, + FN_A22___3 = 719, + FN_IP3SR1_27_24 = 720, + FN_GP1_30 = 721, + FN_D2___8 = 722, + FN_IP0SR1_31_28 = 723, + FN_MSIOF0_TXD___9 = 724, + FN_DU_DR3___9 = 725, + FN_A7___8 = 726, + FN_IP1SR1_31_28 = 727, + FN_MSIOF1_SYNC___5 = 728, + FN_HRTS3_N___8 = 729, + FN_RTS3_N___7 = 730, + FN_DU_DG5___9 = 731, + FN_A15___8 = 732, + FN_IP2SR1_31_28 = 733, + FN_MSIOF2_SS2___4 = 734, + FN_TCLK1_B___9 = 735, + FN_DU_DB7___9 = 736, + FN_A23___3 = 737, + FN_IP3SR1_31_28 = 738, + FN_IP0SR2_3_0 = 739, + FN_IPC_CLKIN = 740, + FN_IPC_CLKEN_IN = 741, + FN_DU_DOTCLKIN = 742, + FN_IP1SR2_3_0 = 743, + FN_GP2_08 = 744, + FN_HRX2___3 = 745, + FN_MSIOF4_SS1 = 746, + FN_RX4___3 = 747, + FN_D9___8 = 748, + FN_IP2SR2_3_0 = 749, + FN_FXR_TXDA_A = 750, + FN_MSIOF3_SS1___3 = 751, + FN_IP0SR2_7_4 = 752, + FN_IPC_CLKOUT = 753, + FN_IPC_CLKEN_OUT = 754, + FN_IP1SR2_7_4 = 755, + FN_GP2_09 = 756, + FN_HTX2___3 = 757, + FN_MSIOF4_SS2 = 758, + FN_TX4___3 = 759, + FN_D10___8 = 760, + FN_IP2SR2_7_4 = 761, + FN_RXDA_EXTFXR_A = 762, + FN_MSIOF3_SS2___3 = 763, + FN_BS_N___8 = 764, + FN_IP0SR2_11_8 = 765, + FN_GP2_02 = 766, + FN_D3___8 = 767, + FN_IP1SR2_11_8 = 768, + FN_GP2_10 = 769, + FN_TCLK2_B___9 = 770, + FN_MSIOF5_RXD = 771, + FN_D11___8 = 772, + FN_IP2SR2_11_8 = 773, + FN_FXR_TXDB___3 = 774, + FN_MSIOF3_RXD___3 = 775, + FN_RD_N___8 = 776, + FN_IP0SR2_15_12 = 777, + FN_GP2_03 = 778, + FN_D4___8 = 779, + FN_IP1SR2_15_12 = 780, + FN_GP2_11 = 781, + FN_TCLK3___2 = 782, + FN_MSIOF5_TXD = 783, + FN_D12___8 = 784, + FN_IP2SR2_15_12 = 785, + FN_RXDB_EXTFXR___3 = 786, + FN_MSIOF3_TXD___3 = 787, + FN_WE0_N___8 = 788, + FN_IP0SR2_19_16 = 789, + FN_GP2_04 = 790, + FN_MSIOF4_RXD = 791, + FN_D5___8 = 792, + FN_IP1SR2_19_16 = 793, + FN_GP2_12 = 794, + FN_TCLK4___2 = 795, + FN_MSIOF5_SCK = 796, + FN_D13___8 = 797, + FN_IP2SR2_19_16 = 798, + FN_CLK_EXTFXR___3 = 799, + FN_MSIOF3_SCK___3 = 800, + FN_WE1_N___8 = 801, + FN_IP0SR2_23_20 = 802, + FN_GP2_05 = 803, + FN_HSCK2___3 = 804, + FN_MSIOF4_TXD = 805, + FN_SCK4___3 = 806, + FN_D6___8 = 807, + FN_IP1SR2_23_20 = 808, + FN_GP2_13 = 809, + FN_MSIOF5_SYNC = 810, + FN_D14___8 = 811, + FN_IP2SR2_23_20 = 812, + FN_TPU0TO0___8 = 813, + FN_MSIOF3_SYNC___3 = 814, + FN_RD_WR_N___8 = 815, + FN_IP0SR2_27_24 = 816, + FN_GP2_06 = 817, + FN_HCTS2_N___3 = 818, + FN_MSIOF4_SCK = 819, + FN_CTS4_N___3 = 820, + FN_D7___8 = 821, + FN_IP1SR2_27_24 = 822, + FN_GP2_14 = 823, + FN_IRQ4___8 = 824, + FN_MSIOF5_SS1 = 825, + FN_D15___8 = 826, + FN_IP2SR2_27_24 = 827, + FN_TPU0TO1___8 = 828, + FN_CLKOUT___7 = 829, + FN_IP0SR2_31_28 = 830, + FN_GP2_07 = 831, + FN_HRTS2_N___3 = 832, + FN_MSIOF4_SYNC = 833, + FN_RTS4_N___3 = 834, + FN_D8___8 = 835, + FN_IP1SR2_31_28 = 836, + FN_GP2_15 = 837, + FN_IRQ5___8 = 838, + FN_MSIOF5_SS2 = 839, + FN_CPG_CPCKOUT___2 = 840, + FN_IP2SR2_31_28 = 841, + FN_TCLK1_A___9 = 842, + FN_EX_WAIT0___4 = 843, + FN_IP0SR3_3_0 = 844, + FN_IP1SR3_3_0 = 845, + FN_CANFD3_RX = 846, + FN_PWM3 = 847, + FN_IP0SR3_7_4 = 848, + FN_CANFD0_TX___3 = 849, + FN_FXR_TXDA_B = 850, + FN_TX1_B___8 = 851, + FN_IP1SR3_7_4 = 852, + FN_CANFD4_TX = 853, + FN_PWM4 = 854, + FN_FXR_CLKOUT1___2 = 855, + FN_IP0SR3_11_8 = 856, + FN_CANFD0_RX___3 = 857, + FN_RXDA_EXTFXR_B = 858, + FN_RX1_B___8 = 859, + FN_IP1SR3_11_8 = 860, + FN_CANFD4_RX = 861, + FN_FXR_CLKOUT2___2 = 862, + FN_IP0SR3_15_12 = 863, + FN_IP1SR3_15_12 = 864, + FN_CANFD5_TX = 865, + FN_FXR_TXENA_N___3 = 866, + FN_IP0SR3_19_16 = 867, + FN_IP1SR3_19_16 = 868, + FN_CANFD5_RX = 869, + FN_FXR_TXENB_N___3 = 870, + FN_IP0SR3_23_20 = 871, + FN_CANFD2_TX = 872, + FN_TPU0TO2___8 = 873, + FN_PWM0___5 = 874, + FN_IP1SR3_23_20 = 875, + FN_CANFD6_TX = 876, + FN_STPWT_EXTFXR = 877, + FN_IP0SR3_27_24 = 878, + FN_CANFD2_RX = 879, + FN_TPU0TO3___8 = 880, + FN_PWM1 = 881, + FN_IP1SR3_27_24 = 882, + FN_IP0SR3_31_28 = 883, + FN_CANFD3_TX = 884, + FN_PWM2 = 885, + FN_IP1SR3_31_28 = 886, + FN_IP0SR4_3_0 = 887, + FN_AVB0_RX_CTL___3 = 888, + FN_AVB0_MII_RX_DV = 889, + FN_IP1SR4_3_0 = 890, + FN_AVB0_TD0___3 = 891, + FN_AVB0_MII_TD0 = 892, + FN_IP2SR4_3_0 = 893, + FN_IP0SR4_7_4 = 894, + FN_AVB0_RXC___3 = 895, + FN_AVB0_MII_RXC = 896, + FN_IP1SR4_7_4 = 897, + FN_AVB0_TD1___3 = 898, + FN_AVB0_MII_TD1 = 899, + FN_IP2SR4_7_4 = 900, + FN_AVB0_LINK___3 = 901, + FN_AVB0_MII_TX_ER = 902, + FN_IP0SR4_11_8 = 903, + FN_AVB0_RD0___3 = 904, + FN_AVB0_MII_RD0 = 905, + FN_IP1SR4_11_8 = 906, + FN_AVB0_TD2___3 = 907, + FN_AVB0_MII_TD2 = 908, + FN_IP2SR4_11_8 = 909, + FN_AVB0_AVTP_MATCH___2 = 910, + FN_AVB0_MII_RX_ER = 911, + FN_CC5_OSCOUT = 912, + FN_IP0SR4_15_12 = 913, + FN_AVB0_RD1___3 = 914, + FN_AVB0_MII_RD1 = 915, + FN_IP1SR4_15_12 = 916, + FN_AVB0_TD3___3 = 917, + FN_AVB0_MII_TD3 = 918, + FN_IP2SR4_15_12 = 919, + FN_AVB0_AVTP_CAPTURE___2 = 920, + FN_AVB0_MII_CRS = 921, + FN_IP0SR4_19_16 = 922, + FN_AVB0_RD2___3 = 923, + FN_AVB0_MII_RD2 = 924, + FN_IP1SR4_19_16 = 925, + FN_AVB0_TXCREFCLK___3 = 926, + FN_IP2SR4_19_16 = 927, + FN_AVB0_AVTP_PPS___2 = 928, + FN_AVB0_MII_COL = 929, + FN_IP0SR4_23_20 = 930, + FN_AVB0_RD3___3 = 931, + FN_AVB0_MII_RD3 = 932, + FN_IP1SR4_23_20 = 933, + FN_AVB0_MDIO___3 = 934, + FN_IP2SR4_23_20 = 935, + FN_IP0SR4_27_24 = 936, + FN_AVB0_TX_CTL___3 = 937, + FN_AVB0_MII_TX_EN = 938, + FN_IP1SR4_27_24 = 939, + FN_AVB0_MDC___3 = 940, + FN_IP2SR4_27_24 = 941, + FN_IP0SR4_31_28 = 942, + FN_AVB0_TXC___3 = 943, + FN_AVB0_MII_TXC = 944, + FN_IP1SR4_31_28 = 945, + FN_AVB0_MAGIC___3 = 946, + FN_IP2SR4_31_28 = 947, + FN_IP0SR5_3_0 = 948, + FN_AVB1_RX_CTL = 949, + FN_AVB1_MII_RX_DV = 950, + FN_IP1SR5_3_0 = 951, + FN_AVB1_TD0 = 952, + FN_AVB1_MII_TD0 = 953, + FN_IP2SR5_3_0 = 954, + FN_IP0SR5_7_4 = 955, + FN_AVB1_RXC = 956, + FN_AVB1_MII_RXC = 957, + FN_IP1SR5_7_4 = 958, + FN_AVB1_TD1 = 959, + FN_AVB1_MII_TD1 = 960, + FN_IP2SR5_7_4 = 961, + FN_AVB1_LINK = 962, + FN_AVB1_MII_TX_ER = 963, + FN_IP0SR5_11_8 = 964, + FN_AVB1_RD0 = 965, + FN_AVB1_MII_RD0 = 966, + FN_IP1SR5_11_8 = 967, + FN_AVB1_TD2 = 968, + FN_AVB1_MII_TD2 = 969, + FN_IP2SR5_11_8 = 970, + FN_AVB1_AVTP_MATCH = 971, + FN_AVB1_MII_RX_ER = 972, + FN_IP0SR5_15_12 = 973, + FN_AVB1_RD1 = 974, + FN_AVB1_MII_RD1 = 975, + FN_IP1SR5_15_12 = 976, + FN_AVB1_TD3 = 977, + FN_AVB1_MII_TD3 = 978, + FN_IP2SR5_15_12 = 979, + FN_AVB1_AVTP_CAPTURE = 980, + FN_AVB1_MII_CRS = 981, + FN_IP0SR5_19_16 = 982, + FN_AVB1_RD2 = 983, + FN_AVB1_MII_RD2 = 984, + FN_IP1SR5_19_16 = 985, + FN_AVB1_TXCREFCLK = 986, + FN_IP2SR5_19_16 = 987, + FN_AVB1_AVTP_PPS = 988, + FN_AVB1_MII_COL = 989, + FN_IP0SR5_23_20 = 990, + FN_AVB1_RD3 = 991, + FN_AVB1_MII_RD3 = 992, + FN_IP1SR5_23_20 = 993, + FN_AVB1_MDIO = 994, + FN_IP2SR5_23_20 = 995, + FN_IP0SR5_27_24 = 996, + FN_AVB1_TX_CTL = 997, + FN_AVB1_MII_TX_EN = 998, + FN_IP1SR5_27_24 = 999, + FN_AVB1_MDC = 1000, + FN_IP2SR5_27_24 = 1001, + FN_IP0SR5_31_28 = 1002, + FN_AVB1_TXC = 1003, + FN_AVB1_MII_TXC = 1004, + FN_IP1SR5_31_28 = 1005, + FN_AVB1_MAGIC = 1006, + FN_IP2SR5_31_28 = 1007, + FN_SEL_I2C6_0___6 = 1008, + FN_SEL_I2C6_3 = 1009, + FN_SEL_I2C5_0 = 1010, + FN_SEL_I2C5_3 = 1011, + FN_SEL_I2C4_0 = 1012, + FN_SEL_I2C4_3 = 1013, + FN_SEL_I2C3_0___3 = 1014, + FN_SEL_I2C3_3 = 1015, + FN_SEL_I2C2_0___7 = 1016, + FN_SEL_I2C2_3___2 = 1017, + FN_SEL_I2C1_0___6 = 1018, + FN_SEL_I2C1_3___2 = 1019, + FN_SEL_I2C0_0 = 1020, + FN_SEL_I2C0_3 = 1021, + PINMUX_FUNCTION_END___9 = 1022, + PINMUX_MARK_BEGIN___9 = 1023, + MMC_D7_MARK___4 = 1024, + MMC_D6_MARK___4 = 1025, + AVS1_MARK___5 = 1026, + MMC_D5_MARK___4 = 1027, + AVS0_MARK = 1028, + MMC_D4_MARK___4 = 1029, + TCLK2_A_MARK___9 = 1030, + PCIE3_CLKREQ_N_MARK = 1031, + MMC_SD_CLK_MARK = 1032, + PCIE2_CLKREQ_N_MARK = 1033, + MMC_SD_D3_MARK = 1034, + PCIE1_CLKREQ_N_MARK = 1035, + MMC_SD_D2_MARK = 1036, + PCIE0_CLKREQ_N_MARK = 1037, + MMC_SD_D1_MARK = 1038, + AVB2_AVTP_PPS_MARK = 1039, + AVB3_AVTP_PPS_MARK = 1040, + AVB4_AVTP_PPS_MARK = 1041, + AVB5_AVTP_PPS_MARK = 1042, + MMC_SD_D0_MARK = 1043, + AVB2_AVTP_CAPTURE_MARK = 1044, + AVB3_AVTP_CAPTURE_MARK = 1045, + AVB4_AVTP_CAPTURE_MARK = 1046, + AVB5_AVTP_CAPTURE_MARK = 1047, + MMC_SD_CMD_MARK = 1048, + AVB2_AVTP_MATCH_MARK = 1049, + AVB3_AVTP_MATCH_MARK = 1050, + AVB4_AVTP_MATCH_MARK = 1051, + AVB5_AVTP_MATCH_MARK = 1052, + MMC_DS_MARK___2 = 1053, + AVB2_LINK_MARK = 1054, + AVB3_LINK_MARK = 1055, + AVB4_LINK_MARK = 1056, + AVB5_LINK_MARK = 1057, + SD_CD_MARK = 1058, + CANFD7_RX_MARK = 1059, + AVB0_PHY_INT_MARK___3 = 1060, + AVB1_PHY_INT_MARK = 1061, + AVB2_PHY_INT_MARK = 1062, + AVB3_PHY_INT_MARK = 1063, + AVB4_PHY_INT_MARK = 1064, + AVB5_PHY_INT_MARK = 1065, + SD_WP_MARK = 1066, + CANFD7_TX_MARK = 1067, + AVB2_MAGIC_MARK = 1068, + AVB3_MAGIC_MARK = 1069, + AVB4_MAGIC_MARK = 1070, + AVB5_MAGIC_MARK = 1071, + RPC_INT_N_MARK___5 = 1072, + CANFD6_RX_MARK = 1073, + AVB2_MDC_MARK = 1074, + AVB3_MDC_MARK = 1075, + AVB4_MDC_MARK = 1076, + AVB5_MDC_MARK = 1077, + RPC_WP_N_MARK___3 = 1078, + AVB2_MDIO_MARK = 1079, + AVB3_MDIO_MARK = 1080, + AVB4_MDIO_MARK = 1081, + AVB5_MDIO_MARK = 1082, + RPC_RESET_N_MARK___5 = 1083, + AVB2_TXCREFCLK_MARK = 1084, + AVB3_TXCREFCLK_MARK = 1085, + AVB4_TXCREFCLK_MARK = 1086, + AVB5_TXCREFCLK_MARK = 1087, + QSPI1_SSL_MARK___9 = 1088, + AVB2_TD3_MARK = 1089, + AVB3_TD3_MARK = 1090, + AVB4_TD3_MARK = 1091, + AVB5_TD3_MARK = 1092, + QSPI1_IO3_MARK___9 = 1093, + AVB2_TD2_MARK = 1094, + AVB3_TD2_MARK = 1095, + AVB4_TD2_MARK = 1096, + AVB5_TD2_MARK = 1097, + QSPI1_IO2_MARK___9 = 1098, + AVB2_TD1_MARK = 1099, + AVB3_TD1_MARK = 1100, + AVB4_TD1_MARK = 1101, + AVB5_TD1_MARK = 1102, + QSPI1_MISO_IO1_MARK___9 = 1103, + AVB2_TD0_MARK = 1104, + AVB3_TD0_MARK = 1105, + AVB4_TD0_MARK = 1106, + AVB5_TD0_MARK = 1107, + QSPI1_MOSI_IO0_MARK___9 = 1108, + AVB2_TXC_MARK = 1109, + AVB3_TXC_MARK = 1110, + AVB4_TXC_MARK = 1111, + AVB5_TXC_MARK = 1112, + QSPI1_SPCLK_MARK___9 = 1113, + AVB2_TX_CTL_MARK = 1114, + AVB3_TX_CTL_MARK = 1115, + AVB4_TX_CTL_MARK = 1116, + AVB5_TX_CTL_MARK = 1117, + QSPI0_SSL_MARK___9 = 1118, + AVB2_RD3_MARK = 1119, + AVB3_RD3_MARK = 1120, + AVB4_RD3_MARK = 1121, + AVB5_RD3_MARK = 1122, + QSPI0_IO3_MARK___9 = 1123, + CANFD1_RX_MARK___9 = 1124, + AVB2_RD2_MARK = 1125, + AVB3_RD2_MARK = 1126, + AVB4_RD2_MARK = 1127, + AVB5_RD2_MARK = 1128, + QSPI0_IO2_MARK___9 = 1129, + CANFD1_TX_MARK___9 = 1130, + AVB2_RD1_MARK = 1131, + AVB3_RD1_MARK = 1132, + AVB4_RD1_MARK = 1133, + AVB5_RD1_MARK = 1134, + QSPI0_MISO_IO1_MARK___9 = 1135, + AVB2_RD0_MARK = 1136, + AVB3_RD0_MARK = 1137, + AVB4_RD0_MARK = 1138, + AVB5_RD0_MARK = 1139, + QSPI0_MOSI_IO0_MARK___9 = 1140, + AVB2_RXC_MARK = 1141, + AVB3_RXC_MARK = 1142, + AVB4_RXC_MARK = 1143, + AVB5_RXC_MARK = 1144, + QSPI0_SPCLK_MARK___9 = 1145, + CAN_CLK_MARK___7 = 1146, + AVB2_RX_CTL_MARK = 1147, + AVB3_RX_CTL_MARK = 1148, + AVB4_RX_CTL_MARK = 1149, + AVB5_RX_CTL_MARK = 1150, + IP0SR1_3_0_MARK = 1151, + SCIF_CLK_MARK___2 = 1152, + A0_MARK___8 = 1153, + IP1SR1_3_0_MARK = 1154, + MSIOF0_SCK_MARK___9 = 1155, + DU_DR4_MARK___9 = 1156, + A8_MARK___8 = 1157, + IP2SR1_3_0_MARK = 1158, + MSIOF1_SS1_MARK___5 = 1159, + HCTS3_N_MARK___8 = 1160, + RX3_MARK___3 = 1161, + DU_DG6_MARK___9 = 1162, + A16_MARK___8 = 1163, + IP3SR1_3_0_MARK = 1164, + IRQ0_MARK___8 = 1165, + DU_DOTCLKOUT_MARK___3 = 1166, + A24_MARK___3 = 1167, + IP0SR1_7_4_MARK = 1168, + HRX0_MARK___7 = 1169, + RX0_MARK___7 = 1170, + A1_MARK___8 = 1171, + IP1SR1_7_4_MARK = 1172, + MSIOF0_SYNC_MARK___9 = 1173, + DU_DR5_MARK___9 = 1174, + A9_MARK___8 = 1175, + IP2SR1_7_4_MARK = 1176, + MSIOF1_SS2_MARK___5 = 1177, + HTX3_MARK___3 = 1178, + TX3_MARK___3 = 1179, + DU_DG7_MARK___9 = 1180, + A17_MARK___8 = 1181, + IP3SR1_7_4_MARK = 1182, + IRQ1_MARK___8 = 1183, + DU_HSYNC_MARK___3 = 1184, + A25_MARK___3 = 1185, + IP0SR1_11_8_MARK = 1186, + HSCK0_MARK___7 = 1187, + SCK0_MARK___7 = 1188, + A2_MARK___8 = 1189, + IP1SR1_11_8_MARK = 1190, + MSIOF0_SS1_MARK___9 = 1191, + DU_DR6_MARK___9 = 1192, + A10_MARK___8 = 1193, + IP2SR1_11_8_MARK = 1194, + MSIOF2_RXD_MARK___4 = 1195, + HSCK1_MARK___3 = 1196, + SCK1_MARK___8 = 1197, + DU_DB2_MARK___9 = 1198, + A18_MARK___8 = 1199, + IP3SR1_11_8_MARK = 1200, + IRQ2_MARK___8 = 1201, + DU_VSYNC_MARK___3 = 1202, + CS1_N_A26_MARK___3 = 1203, + IP0SR1_15_12_MARK = 1204, + HRTS0_N_MARK___7 = 1205, + RTS0_N_MARK___8 = 1206, + A3_MARK___8 = 1207, + IP1SR1_15_12_MARK = 1208, + MSIOF0_SS2_MARK___9 = 1209, + DU_DR7_MARK___9 = 1210, + A11_MARK___8 = 1211, + IP2SR1_15_12_MARK = 1212, + MSIOF2_TXD_MARK___4 = 1213, + HCTS1_N_MARK___3 = 1214, + CTS1_N_MARK___9 = 1215, + DU_DB3_MARK___9 = 1216, + A19_MARK___8 = 1217, + IP3SR1_15_12_MARK = 1218, + IRQ3_MARK___8 = 1219, + DU_ODDF_DISP_CDE_MARK = 1220, + CS0_N_MARK___8 = 1221, + IP0SR1_19_16_MARK = 1222, + HCTS0_N_MARK___7 = 1223, + CTS0_N_MARK___8 = 1224, + A4_MARK___8 = 1225, + IP1SR1_19_16_MARK = 1226, + MSIOF1_RXD_MARK___5 = 1227, + DU_DG2_MARK___9 = 1228, + A12_MARK___8 = 1229, + IP2SR1_19_16_MARK = 1230, + MSIOF2_SCK_MARK___4 = 1231, + HRTS1_N_MARK___3 = 1232, + RTS1_N_MARK___9 = 1233, + DU_DB4_MARK___9 = 1234, + A20_MARK___2 = 1235, + IP3SR1_19_16_MARK = 1236, + GP1_28_MARK = 1237, + D0_MARK___8 = 1238, + IP0SR1_23_20_MARK = 1239, + HTX0_MARK___7 = 1240, + TX0_MARK___7 = 1241, + A5_MARK___8 = 1242, + IP1SR1_23_20_MARK = 1243, + MSIOF1_TXD_MARK___5 = 1244, + HRX3_MARK___3 = 1245, + SCK3_MARK___7 = 1246, + DU_DG3_MARK___9 = 1247, + A13_MARK___8 = 1248, + IP2SR1_23_20_MARK = 1249, + MSIOF2_SYNC_MARK___3 = 1250, + HRX1_MARK___3 = 1251, + RX1_A_MARK___8 = 1252, + DU_DB5_MARK___9 = 1253, + A21_MARK___2 = 1254, + IP3SR1_23_20_MARK = 1255, + GP1_29_MARK = 1256, + D1_MARK___8 = 1257, + IP0SR1_27_24_MARK = 1258, + MSIOF0_RXD_MARK___9 = 1259, + DU_DR2_MARK___9 = 1260, + A6_MARK___8 = 1261, + IP1SR1_27_24_MARK = 1262, + MSIOF1_SCK_MARK___5 = 1263, + HSCK3_MARK___7 = 1264, + CTS3_N_MARK___7 = 1265, + DU_DG4_MARK___9 = 1266, + A14_MARK___8 = 1267, + IP2SR1_27_24_MARK = 1268, + MSIOF2_SS1_MARK___4 = 1269, + HTX1_MARK___3 = 1270, + TX1_A_MARK___8 = 1271, + DU_DB6_MARK___9 = 1272, + A22_MARK___3 = 1273, + IP3SR1_27_24_MARK = 1274, + GP1_30_MARK = 1275, + D2_MARK___8 = 1276, + IP0SR1_31_28_MARK = 1277, + MSIOF0_TXD_MARK___9 = 1278, + DU_DR3_MARK___9 = 1279, + A7_MARK___8 = 1280, + IP1SR1_31_28_MARK = 1281, + MSIOF1_SYNC_MARK___5 = 1282, + HRTS3_N_MARK___8 = 1283, + RTS3_N_MARK___7 = 1284, + DU_DG5_MARK___9 = 1285, + A15_MARK___8 = 1286, + IP2SR1_31_28_MARK = 1287, + MSIOF2_SS2_MARK___4 = 1288, + TCLK1_B_MARK___9 = 1289, + DU_DB7_MARK___9 = 1290, + A23_MARK___3 = 1291, + IP3SR1_31_28_MARK = 1292, + IP0SR2_3_0_MARK = 1293, + IPC_CLKIN_MARK = 1294, + IPC_CLKEN_IN_MARK = 1295, + DU_DOTCLKIN_MARK = 1296, + IP1SR2_3_0_MARK = 1297, + GP2_08_MARK = 1298, + HRX2_MARK___3 = 1299, + MSIOF4_SS1_MARK = 1300, + RX4_MARK___3 = 1301, + D9_MARK___8 = 1302, + IP2SR2_3_0_MARK = 1303, + FXR_TXDA_A_MARK = 1304, + MSIOF3_SS1_MARK___3 = 1305, + IP0SR2_7_4_MARK = 1306, + IPC_CLKOUT_MARK = 1307, + IPC_CLKEN_OUT_MARK = 1308, + IP1SR2_7_4_MARK = 1309, + GP2_09_MARK = 1310, + HTX2_MARK___3 = 1311, + MSIOF4_SS2_MARK = 1312, + TX4_MARK___3 = 1313, + D10_MARK___8 = 1314, + IP2SR2_7_4_MARK = 1315, + RXDA_EXTFXR_A_MARK = 1316, + MSIOF3_SS2_MARK___3 = 1317, + BS_N_MARK___8 = 1318, + IP0SR2_11_8_MARK = 1319, + GP2_02_MARK = 1320, + D3_MARK___8 = 1321, + IP1SR2_11_8_MARK = 1322, + GP2_10_MARK = 1323, + TCLK2_B_MARK___9 = 1324, + MSIOF5_RXD_MARK = 1325, + D11_MARK___8 = 1326, + IP2SR2_11_8_MARK = 1327, + FXR_TXDB_MARK___3 = 1328, + MSIOF3_RXD_MARK___3 = 1329, + RD_N_MARK___8 = 1330, + IP0SR2_15_12_MARK = 1331, + GP2_03_MARK = 1332, + D4_MARK___8 = 1333, + IP1SR2_15_12_MARK = 1334, + GP2_11_MARK = 1335, + TCLK3_MARK___2 = 1336, + MSIOF5_TXD_MARK = 1337, + D12_MARK___8 = 1338, + IP2SR2_15_12_MARK = 1339, + RXDB_EXTFXR_MARK___3 = 1340, + MSIOF3_TXD_MARK___3 = 1341, + WE0_N_MARK___8 = 1342, + IP0SR2_19_16_MARK = 1343, + GP2_04_MARK = 1344, + MSIOF4_RXD_MARK = 1345, + D5_MARK___8 = 1346, + IP1SR2_19_16_MARK = 1347, + GP2_12_MARK = 1348, + TCLK4_MARK___2 = 1349, + MSIOF5_SCK_MARK = 1350, + D13_MARK___8 = 1351, + IP2SR2_19_16_MARK = 1352, + CLK_EXTFXR_MARK___3 = 1353, + MSIOF3_SCK_MARK___3 = 1354, + WE1_N_MARK___8 = 1355, + IP0SR2_23_20_MARK = 1356, + GP2_05_MARK = 1357, + HSCK2_MARK___3 = 1358, + MSIOF4_TXD_MARK = 1359, + SCK4_MARK___3 = 1360, + D6_MARK___8 = 1361, + IP1SR2_23_20_MARK = 1362, + GP2_13_MARK = 1363, + MSIOF5_SYNC_MARK = 1364, + D14_MARK___8 = 1365, + IP2SR2_23_20_MARK = 1366, + TPU0TO0_MARK___8 = 1367, + MSIOF3_SYNC_MARK___3 = 1368, + RD_WR_N_MARK___8 = 1369, + IP0SR2_27_24_MARK = 1370, + GP2_06_MARK = 1371, + HCTS2_N_MARK___3 = 1372, + MSIOF4_SCK_MARK = 1373, + CTS4_N_MARK___3 = 1374, + D7_MARK___8 = 1375, + IP1SR2_27_24_MARK = 1376, + GP2_14_MARK = 1377, + IRQ4_MARK___8 = 1378, + MSIOF5_SS1_MARK = 1379, + D15_MARK___8 = 1380, + IP2SR2_27_24_MARK = 1381, + TPU0TO1_MARK___8 = 1382, + CLKOUT_MARK___8 = 1383, + IP0SR2_31_28_MARK = 1384, + GP2_07_MARK = 1385, + HRTS2_N_MARK___3 = 1386, + MSIOF4_SYNC_MARK = 1387, + RTS4_N_MARK___3 = 1388, + D8_MARK___8 = 1389, + IP1SR2_31_28_MARK = 1390, + GP2_15_MARK = 1391, + IRQ5_MARK___8 = 1392, + MSIOF5_SS2_MARK = 1393, + CPG_CPCKOUT_MARK___2 = 1394, + IP2SR2_31_28_MARK = 1395, + TCLK1_A_MARK___9 = 1396, + EX_WAIT0_MARK___4 = 1397, + IP0SR3_3_0_MARK = 1398, + IP1SR3_3_0_MARK = 1399, + CANFD3_RX_MARK = 1400, + PWM3_MARK = 1401, + IP0SR3_7_4_MARK = 1402, + CANFD0_TX_MARK___3 = 1403, + FXR_TXDA_B_MARK = 1404, + TX1_B_MARK___8 = 1405, + IP1SR3_7_4_MARK = 1406, + CANFD4_TX_MARK = 1407, + PWM4_MARK = 1408, + FXR_CLKOUT1_MARK___2 = 1409, + IP0SR3_11_8_MARK = 1410, + CANFD0_RX_MARK___3 = 1411, + RXDA_EXTFXR_B_MARK = 1412, + RX1_B_MARK___8 = 1413, + IP1SR3_11_8_MARK = 1414, + CANFD4_RX_MARK = 1415, + FXR_CLKOUT2_MARK___2 = 1416, + IP0SR3_15_12_MARK = 1417, + IP1SR3_15_12_MARK = 1418, + CANFD5_TX_MARK = 1419, + FXR_TXENA_N_MARK___3 = 1420, + IP0SR3_19_16_MARK = 1421, + IP1SR3_19_16_MARK = 1422, + CANFD5_RX_MARK = 1423, + FXR_TXENB_N_MARK___3 = 1424, + IP0SR3_23_20_MARK = 1425, + CANFD2_TX_MARK = 1426, + TPU0TO2_MARK___8 = 1427, + PWM0_MARK___5 = 1428, + IP1SR3_23_20_MARK = 1429, + CANFD6_TX_MARK = 1430, + STPWT_EXTFXR_MARK = 1431, + IP0SR3_27_24_MARK = 1432, + CANFD2_RX_MARK = 1433, + TPU0TO3_MARK___8 = 1434, + PWM1_MARK = 1435, + IP1SR3_27_24_MARK = 1436, + IP0SR3_31_28_MARK = 1437, + CANFD3_TX_MARK = 1438, + PWM2_MARK = 1439, + IP1SR3_31_28_MARK = 1440, + IP0SR4_3_0_MARK = 1441, + AVB0_RX_CTL_MARK___3 = 1442, + AVB0_MII_RX_DV_MARK = 1443, + IP1SR4_3_0_MARK = 1444, + AVB0_TD0_MARK___3 = 1445, + AVB0_MII_TD0_MARK = 1446, + IP2SR4_3_0_MARK = 1447, + IP0SR4_7_4_MARK = 1448, + AVB0_RXC_MARK___3 = 1449, + AVB0_MII_RXC_MARK = 1450, + IP1SR4_7_4_MARK = 1451, + AVB0_TD1_MARK___3 = 1452, + AVB0_MII_TD1_MARK = 1453, + IP2SR4_7_4_MARK = 1454, + AVB0_LINK_MARK___3 = 1455, + AVB0_MII_TX_ER_MARK = 1456, + IP0SR4_11_8_MARK = 1457, + AVB0_RD0_MARK___3 = 1458, + AVB0_MII_RD0_MARK = 1459, + IP1SR4_11_8_MARK = 1460, + AVB0_TD2_MARK___3 = 1461, + AVB0_MII_TD2_MARK = 1462, + IP2SR4_11_8_MARK = 1463, + AVB0_AVTP_MATCH_MARK___2 = 1464, + AVB0_MII_RX_ER_MARK = 1465, + CC5_OSCOUT_MARK = 1466, + IP0SR4_15_12_MARK = 1467, + AVB0_RD1_MARK___3 = 1468, + AVB0_MII_RD1_MARK = 1469, + IP1SR4_15_12_MARK = 1470, + AVB0_TD3_MARK___3 = 1471, + AVB0_MII_TD3_MARK = 1472, + IP2SR4_15_12_MARK = 1473, + AVB0_AVTP_CAPTURE_MARK___2 = 1474, + AVB0_MII_CRS_MARK = 1475, + IP0SR4_19_16_MARK = 1476, + AVB0_RD2_MARK___3 = 1477, + AVB0_MII_RD2_MARK = 1478, + IP1SR4_19_16_MARK = 1479, + AVB0_TXCREFCLK_MARK___3 = 1480, + IP2SR4_19_16_MARK = 1481, + AVB0_AVTP_PPS_MARK___2 = 1482, + AVB0_MII_COL_MARK = 1483, + IP0SR4_23_20_MARK = 1484, + AVB0_RD3_MARK___3 = 1485, + AVB0_MII_RD3_MARK = 1486, + IP1SR4_23_20_MARK = 1487, + AVB0_MDIO_MARK___3 = 1488, + IP2SR4_23_20_MARK = 1489, + IP0SR4_27_24_MARK = 1490, + AVB0_TX_CTL_MARK___3 = 1491, + AVB0_MII_TX_EN_MARK = 1492, + IP1SR4_27_24_MARK = 1493, + AVB0_MDC_MARK___3 = 1494, + IP2SR4_27_24_MARK = 1495, + IP0SR4_31_28_MARK = 1496, + AVB0_TXC_MARK___3 = 1497, + AVB0_MII_TXC_MARK = 1498, + IP1SR4_31_28_MARK = 1499, + AVB0_MAGIC_MARK___3 = 1500, + IP2SR4_31_28_MARK = 1501, + IP0SR5_3_0_MARK = 1502, + AVB1_RX_CTL_MARK = 1503, + AVB1_MII_RX_DV_MARK = 1504, + IP1SR5_3_0_MARK = 1505, + AVB1_TD0_MARK = 1506, + AVB1_MII_TD0_MARK = 1507, + IP2SR5_3_0_MARK = 1508, + IP0SR5_7_4_MARK = 1509, + AVB1_RXC_MARK = 1510, + AVB1_MII_RXC_MARK = 1511, + IP1SR5_7_4_MARK = 1512, + AVB1_TD1_MARK = 1513, + AVB1_MII_TD1_MARK = 1514, + IP2SR5_7_4_MARK = 1515, + AVB1_LINK_MARK = 1516, + AVB1_MII_TX_ER_MARK = 1517, + IP0SR5_11_8_MARK = 1518, + AVB1_RD0_MARK = 1519, + AVB1_MII_RD0_MARK = 1520, + IP1SR5_11_8_MARK = 1521, + AVB1_TD2_MARK = 1522, + AVB1_MII_TD2_MARK = 1523, + IP2SR5_11_8_MARK = 1524, + AVB1_AVTP_MATCH_MARK = 1525, + AVB1_MII_RX_ER_MARK = 1526, + IP0SR5_15_12_MARK = 1527, + AVB1_RD1_MARK = 1528, + AVB1_MII_RD1_MARK = 1529, + IP1SR5_15_12_MARK = 1530, + AVB1_TD3_MARK = 1531, + AVB1_MII_TD3_MARK = 1532, + IP2SR5_15_12_MARK = 1533, + AVB1_AVTP_CAPTURE_MARK = 1534, + AVB1_MII_CRS_MARK = 1535, + IP0SR5_19_16_MARK = 1536, + AVB1_RD2_MARK = 1537, + AVB1_MII_RD2_MARK = 1538, + IP1SR5_19_16_MARK = 1539, + AVB1_TXCREFCLK_MARK = 1540, + IP2SR5_19_16_MARK = 1541, + AVB1_AVTP_PPS_MARK = 1542, + AVB1_MII_COL_MARK = 1543, + IP0SR5_23_20_MARK = 1544, + AVB1_RD3_MARK = 1545, + AVB1_MII_RD3_MARK = 1546, + IP1SR5_23_20_MARK = 1547, + AVB1_MDIO_MARK = 1548, + IP2SR5_23_20_MARK = 1549, + IP0SR5_27_24_MARK = 1550, + AVB1_TX_CTL_MARK = 1551, + AVB1_MII_TX_EN_MARK = 1552, + IP1SR5_27_24_MARK = 1553, + AVB1_MDC_MARK = 1554, + IP2SR5_27_24_MARK = 1555, + IP0SR5_31_28_MARK = 1556, + AVB1_TXC_MARK = 1557, + AVB1_MII_TXC_MARK = 1558, + IP1SR5_31_28_MARK = 1559, + AVB1_MAGIC_MARK = 1560, + IP2SR5_31_28_MARK = 1561, + SEL_I2C6_0_MARK___6 = 1562, + SEL_I2C6_3_MARK = 1563, + SEL_I2C5_0_MARK = 1564, + SEL_I2C5_3_MARK = 1565, + SEL_I2C4_0_MARK = 1566, + SEL_I2C4_3_MARK = 1567, + SEL_I2C3_0_MARK___3 = 1568, + SEL_I2C3_3_MARK = 1569, + SEL_I2C2_0_MARK___7 = 1570, + SEL_I2C2_3_MARK___2 = 1571, + SEL_I2C1_0_MARK___6 = 1572, + SEL_I2C1_3_MARK___2 = 1573, + SEL_I2C0_0_MARK = 1574, + SEL_I2C0_3_MARK = 1575, + SCL0_MARK___8 = 1576, + SDA0_MARK___8 = 1577, + SCL1_MARK___4 = 1578, + SDA1_MARK___4 = 1579, + SCL2_MARK___3 = 1580, + SDA2_MARK___3 = 1581, + SCL3_MARK___6 = 1582, + SDA3_MARK___6 = 1583, + SCL4_MARK___4 = 1584, + SDA4_MARK___4 = 1585, + SCL5_MARK___7 = 1586, + SDA5_MARK___7 = 1587, + SCL6_MARK = 1588, + SDA6_MARK = 1589, + PINMUX_MARK_END___9 = 1590, +}; + +enum ioctrl_regs___6 { + POC0 = 0, + POC1 = 1, + POC2 = 2, + POC4 = 3, + POC5 = 4, + POC6 = 5, + POC7 = 6, + POC8 = 7, + POC9 = 8, + TD1SEL0 = 9, +}; + +struct rzg2l_dedicated_configs { + const char *name; + u32 config; +}; + +struct rzg2l_pinctrl_data { + const char * const *port_pins; + const u32 *port_pin_configs; + struct rzg2l_dedicated_configs *dedicated_pins; + unsigned int n_port_pins; + unsigned int n_dedicated_pins; +}; + +struct rzg2l_pinctrl { + struct pinctrl_dev *pctl; + struct pinctrl_desc desc; + struct pinctrl_pin_desc *pins; + const struct rzg2l_pinctrl_data *data; + void *base; + struct device *dev; + struct clk *clk; + struct gpio_chip gpio_chip; + struct pinctrl_gpio_range gpio_range; + spinlock_t lock; +}; + enum pin_type { GLOBAL_CTRL_PIN = 0, COMMON_PIN = 1, @@ -86835,6 +90316,9 @@ struct mtk_pinctrl_devdata { unsigned char port_align; struct mtk_eint_hw eint_hw; struct mtk_eint_regs *eint_regs; + unsigned int mode_mask; + unsigned int mode_per_reg; + unsigned int mode_shf; }; struct mtk_pinctrl { @@ -86874,7 +90358,8 @@ enum { PINCTRL_PIN_REG_DRV_EN = 19, PINCTRL_PIN_REG_DRV_E0 = 20, PINCTRL_PIN_REG_DRV_E1 = 21, - PINCTRL_PIN_REG_MAX = 22, + PINCTRL_PIN_REG_DRV_ADV = 22, + PINCTRL_PIN_REG_MAX = 23, }; enum { @@ -86971,6 +90456,7 @@ struct mtk_pinctrl___2 { struct mtk_eint *eint; struct mtk_pinctrl_group *groups; const char **grp_names; + spinlock_t lock; }; struct mtk_drive_desc { @@ -86996,6 +90482,54 @@ struct mt6397_chip { void *irq_data; }; +struct visconti_desc_pin { + struct pinctrl_pin_desc pin; + unsigned int dsel_offset; + unsigned int dsel_shift; + unsigned int pude_offset; + unsigned int pudsel_offset; + unsigned int pud_shift; +}; + +struct visconti_mux { + unsigned int offset; + unsigned int mask; + unsigned int val; +}; + +struct visconti_pin_group { + const char *name; + const unsigned int *pins; + unsigned int nr_pins; + struct visconti_mux mux; +}; + +struct visconti_pin_function { + const char *name; + const char * const *groups; + unsigned int nr_groups; +}; + +struct visconti_pinctrl_devdata { + const struct visconti_desc_pin *pins; + unsigned int nr_pins; + const struct visconti_pin_group *groups; + unsigned int nr_groups; + const struct visconti_pin_function *functions; + unsigned int nr_functions; + const struct visconti_mux *gpio_mux; + void (*unlock)(void *); +}; + +struct visconti_pinctrl { + void *base; + struct device *dev; + struct pinctrl_dev *pctl; + struct pinctrl_desc pctl_desc; + const struct visconti_pinctrl_devdata *devdata; + spinlock_t lock; +}; + struct gpio_pin_range { struct list_head node; struct pinctrl_dev *pctldev; @@ -87007,11 +90541,11 @@ struct gpio_array; struct gpio_descs { struct gpio_array *info; unsigned int ndescs; - struct gpio_desc___2 *desc[0]; + struct gpio_desc *desc[0]; }; struct gpio_array { - struct gpio_desc___2 **desc; + struct gpio_desc **desc; unsigned int size; struct gpio_chip *chip; long unsigned int *get_mask; @@ -87240,10 +90774,69 @@ struct gpio_v2_line_event { __u32 padding[6]; }; +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]; +}; + +struct gpiohandle_request { + __u32 lineoffsets[64]; + __u32 flags; + __u8 default_values[64]; + char consumer_label[32]; + __u32 lines; + int fd; +}; + +struct gpiohandle_config { + __u32 flags; + __u8 default_values[64]; + __u32 padding[4]; +}; + +struct gpiohandle_data { + __u8 values[64]; +}; + +struct gpioevent_request { + __u32 lineoffset; + __u32 handleflags; + __u32 eventflags; + char consumer_label[32]; + int fd; +}; + +struct gpioevent_data { + __u64 timestamp; + __u32 id; +}; + +typedef __poll_t (*poll_fn)(struct file *, struct poll_table_struct *); + +typedef long int (*ioctl_fn)(struct file *, unsigned int, long unsigned int); + +typedef ssize_t (*read_fn)(struct file *, char *, size_t, loff_t *); + +struct linehandle_state { + struct gpio_device *gdev; + const char *label; + struct gpio_desc *descs[64]; + u32 num_descs; +}; + struct linereq; struct line { - struct gpio_desc___2 *desc; + struct gpio_desc *desc; struct linereq *req; unsigned int irq; u64 eflags; @@ -87277,6 +90870,27 @@ struct linereq { struct line lines[0]; }; +struct lineevent_state { + struct gpio_device *gdev; + const char *label; + struct gpio_desc *desc; + u32 eflags; + int irq; + wait_queue_head_t wait; + 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 gpio_chardev_data { struct gpio_device *gdev; wait_queue_head_t wait; @@ -87293,6 +90907,7 @@ struct gpio_chardev_data { } events; struct notifier_block lineinfo_changed_nb; long unsigned int *watched_lines; + atomic_t watch_abi_version; }; struct class_attribute { @@ -87302,7 +90917,7 @@ struct class_attribute { }; struct gpiod_data { - struct gpio_desc___2 *desc; + struct gpio_desc *desc; struct mutex mutex; struct kernfs_node *value_kn; int irq; @@ -87310,48 +90925,21 @@ struct gpiod_data { bool direction_can_change; }; -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, -}; +typedef u8 acpi_adr_space_type; -struct dmi_strmatch { - unsigned char slot: 7; - unsigned char exact_match: 1; - char substr[79]; +struct acpi_object_list { + u32 count; + union acpi_object *pointer; }; -struct dmi_system_id { - int (*callback)(const struct dmi_system_id *); - const char *ident; - struct dmi_strmatch matches[4]; - void *driver_data; +struct acpi_buffer { + acpi_size length; + void *pointer; }; -typedef u8 acpi_adr_space_type; +typedef void (*acpi_object_handler)(acpi_handle, void *); + +typedef acpi_status (*acpi_adr_space_handler)(u32, acpi_physical_address, u32, u64 *, void *, void *); struct acpi_connection_info { u8 *connection; @@ -87359,6 +90947,8 @@ struct acpi_connection_info { u8 access_length; }; +typedef acpi_status (*acpi_adr_space_setup)(acpi_handle, u32, void *, void **); + struct acpi_gpiolib_dmi_quirk { bool no_edge_events_on_boot; char *ignore_wake; @@ -87373,13 +90963,13 @@ struct acpi_gpio_event { long unsigned int irqflags; bool irq_is_wake; bool irq_requested; - struct gpio_desc___2 *desc; + struct gpio_desc *desc; }; struct acpi_gpio_connection { struct list_head node; unsigned int pin; - struct gpio_desc___2 *desc; + struct gpio_desc *desc; }; struct acpi_gpio_chip { @@ -87396,7 +90986,7 @@ struct acpi_gpio_lookup { int index; u16 pin_index; bool active_low; - struct gpio_desc___2 *desc; + struct gpio_desc *desc; int n; }; @@ -87459,7 +91049,7 @@ struct mpc8xxx_gpio_chip { raw_spinlock_t lock; int (*direction_output)(struct gpio_chip *, unsigned int, int); struct irq_domain *irq; - unsigned int irqn; + int irqn; }; struct mpc8xxx_gpio_devtype { @@ -87483,6 +91073,7 @@ struct pwm_state { u64 duty_cycle; enum pwm_polarity polarity; bool enabled; + bool usage_power; }; struct pwm_chip; @@ -87536,6 +91127,7 @@ struct mvebu_gpio_chip; struct mvebu_pwm { struct regmap *regs; + u32 offset; long unsigned int clk_rate; struct gpio_desc *gpiod; struct pwm_chip chip; @@ -87736,7 +91328,7 @@ struct amba_device { struct amba_driver { struct device_driver drv; int (*probe)(struct amba_device *, const struct amba_id *); - int (*remove)(struct amba_device *); + void (*remove)(struct amba_device *); void (*shutdown)(struct amba_device *); const struct amba_id *id_table; }; @@ -88014,6 +91606,69 @@ struct tc3589x_gpio { u8 oldregs[15]; }; +struct tegra_gpio_port { + const char *name; + unsigned int bank; + unsigned int port; + unsigned int pins; +}; + +struct tegra186_pin_range { + unsigned int offset; + const char *group; +}; + +struct tegra_gpio_soc { + const struct tegra_gpio_port *ports; + unsigned int num_ports; + const char *name; + unsigned int instance; + const struct tegra186_pin_range *pin_ranges; + unsigned int num_pin_ranges; + const char *pinmux; +}; + +struct tegra_gpio { + struct gpio_chip gpio; + struct irq_chip intc; + unsigned int num_irq; + unsigned int *irq; + const struct tegra_gpio_soc *soc; + void *secure; + void *base; +}; + +struct tegra_gpio_bank { + unsigned int bank; + raw_spinlock_t lvl_lock[4]; + spinlock_t dbc_lock[4]; + u32 cnf[4]; + u32 out[4]; + u32 oe[4]; + u32 int_enb[4]; + u32 int_lvl[4]; + u32 wake_enb[4]; + u32 dbc_enb[4]; + u32 dbc_cnt[4]; +}; + +struct tegra_gpio_soc_config { + bool debounce_supported; + u32 bank_stride; + u32 upper_offset; +}; + +struct tegra_gpio_info { + struct device *dev; + void *regs; + struct tegra_gpio_bank *bank_info; + const struct tegra_gpio_soc_config *soc; + struct gpio_chip gc; + struct irq_chip ic; + u32 bank_count; + unsigned int *irqs; +}; + enum { TPS6586X_ID_SYS = 0, TPS6586X_ID_SM_0 = 1, @@ -88120,11 +91775,6 @@ struct tps65910_gpio { struct tps65910 *tps65910; }; -struct tps68470_gpio_data { - struct regmap *tps68470_regmap; - struct gpio_chip gc; -}; - struct xgene_gpio { struct gpio_chip chip; void *base; @@ -88135,10 +91785,17 @@ struct xgene_gpio { struct xgpio_instance { struct gpio_chip gc; void *regs; - unsigned int gpio_width[2]; - u32 gpio_state[2]; - u32 gpio_dir[2]; - spinlock_t gpio_lock[2]; + long unsigned int hw_map[1]; + long unsigned int sw_map[1]; + long unsigned int state[1]; + long unsigned int last_irq_read[1]; + long unsigned int dir[1]; + spinlock_t gpio_lock; + int irq; + struct irq_chip irqchip; + long unsigned int enable[1]; + long unsigned int rising_edge[1]; + long unsigned int falling_edge[1]; struct clk *clk; }; @@ -88271,6 +91928,7 @@ enum pci_dev_flags { PCI_DEV_FLAGS_NO_FLR_RESET = 1024, PCI_DEV_FLAGS_NO_RELAXED_ORDERING = 2048, PCI_DEV_FLAGS_ENABLE_ASPM = 4096, + PCI_DEV_FLAGS_HAS_MSI_MASKING = 8192, }; enum pci_bus_flags { @@ -88319,6 +91977,14 @@ enum { PCI_SCAN_ALL_PCIE_DEVS = 64, }; +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, +}; + struct hotplug_slot_ops { int (*enable_slot)(struct hotplug_slot *); int (*disable_slot)(struct hotplug_slot *); @@ -88328,7 +91994,7 @@ struct hotplug_slot_ops { 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 *, int); + int (*reset_slot)(struct hotplug_slot *, bool); }; enum pci_bar_type { @@ -88344,12 +92010,6 @@ struct pci_domain_busn_res { int domain_nr; }; -struct bus_attribute { - struct attribute attr; - ssize_t (*show)(struct bus_type *, char *); - ssize_t (*store)(struct bus_type *, const char *, size_t); -}; - enum pcie_reset_state { pcie_deassert_reset = 1, pcie_warm_reset = 2, @@ -88368,6 +92028,8 @@ enum pcie_link_width { PCIE_LNK_WIDTH_UNKNOWN = 255, }; +typedef int (*arch_set_vga_state_t)(struct pci_dev *, bool, unsigned int, u32); + struct pci_cap_saved_data { u16 cap_nr; bool cap_extended; @@ -88380,8 +92042,6 @@ struct pci_cap_saved_state { struct pci_cap_saved_data cap; }; -typedef int (*arch_set_vga_state_t)(struct pci_dev *, bool, unsigned int, u32); - struct pci_platform_pm_ops { bool (*bridge_d3)(struct pci_dev *); bool (*is_manageable)(struct pci_dev *); @@ -88393,6 +92053,11 @@ struct pci_platform_pm_ops { bool (*need_resume)(struct pci_dev *); }; +struct pci_reset_fn_method { + int (*reset_fn)(struct pci_dev *, bool); + char *name; +}; + struct pci_pme_device { struct list_head list; struct pci_dev *dev; @@ -88444,6 +92109,7 @@ struct pcie_port_service_driver { int (*resume)(struct pcie_device *); int (*runtime_suspend)(struct pcie_device *); int (*runtime_resume)(struct pcie_device *); + int (*slot_reset)(struct pcie_device *); void (*error_resume)(struct pci_dev *); int port_type; u32 service; @@ -88471,25 +92137,6 @@ enum pci_mmap_api { PCI_MMAP_PROCFS = 1, }; -struct pci_vpd_ops; - -struct pci_vpd { - const struct pci_vpd_ops *ops; - struct bin_attribute *attr; - struct mutex lock; - unsigned int len; - u16 flag; - u8 cap; - unsigned int busy: 1; - unsigned int valid: 1; -}; - -struct pci_vpd_ops { - ssize_t (*read)(struct pci_dev *, loff_t, size_t, void *); - ssize_t (*write)(struct pci_dev *, loff_t, size_t, const void *); - int (*set_size)(struct pci_dev *, size_t); -}; - struct pci_dev_resource { struct list_head list; struct resource *res; @@ -88525,7 +92172,7 @@ struct portdrv_service_data { u32 service; }; -typedef int (*pcie_pm_callback_t)(struct pcie_device *); +typedef int (*pcie_callback_t)(struct pcie_device *); struct walk_rcec_data { struct pci_dev *rcec; @@ -88548,7 +92195,7 @@ struct pcie_link_state { u32 aspm_enabled: 7; u32 aspm_capable: 7; u32 aspm_default: 7; - char: 4; + int: 4; u32 aspm_disable: 7; u32 clkpm_capable: 1; u32 clkpm_enabled: 1; @@ -88650,16 +92297,15 @@ struct pcie_pme_service_data { bool noirq; }; +typedef void (*acpi_notify_handler)(acpi_handle, u32, void *); + 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 acpi_buffer { - acpi_size length; - void *pointer; -}; +typedef acpi_status (*acpi_walk_callback)(acpi_handle, u32, void *, void **); struct acpi_bus_type { struct list_head list; @@ -88920,7 +92566,7 @@ struct ntb_ctrl_regs { struct pci_dev_reset_methods { u16 vendor; u16 device; - int (*reset)(struct pci_dev *, int); + int (*reset)(struct pci_dev *, bool); }; struct pci_dev_acs_enabled { @@ -88985,6 +92631,7 @@ struct controller { struct delayed_work button_work; struct hotplug_slot hotplug_slot; struct rw_semaphore reset_lock; + unsigned int depth; unsigned int ist_running; int request_result; wait_queue_head_t requester; @@ -89320,6 +92967,7 @@ struct pci_epf; 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_epf_bar { @@ -89342,16 +92990,27 @@ struct pci_epf { 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; struct list_head list; struct notifier_block nb; 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; + long unsigned int vfunction_num_map; + struct list_head pci_vepf; }; struct pci_epf_driver { int (*probe)(struct pci_epf *); - int (*remove)(struct pci_epf *); + void (*remove)(struct pci_epf *); struct device_driver driver; struct pci_epf_ops *ops; struct module *owner; @@ -89371,12 +93030,19 @@ struct pci_epc { struct pci_epc_mem *mem; unsigned int num_windows; u8 max_functions; + u8 *max_vfs; struct config_group *group; struct mutex lock; long unsigned int function_num_map; struct atomic_notifier_head notifier; }; +enum pci_epc_interface_type { + UNKNOWN_INTERFACE = 4294967295, + PRIMARY_INTERFACE = 0, + SECONDARY_INTERFACE = 1, +}; + enum pci_epc_irq_type { PCI_EPC_IRQ_UNKNOWN = 0, PCI_EPC_IRQ_LEGACY = 1, @@ -89387,19 +93053,20 @@ enum pci_epc_irq_type { struct pci_epc_features; struct pci_epc_ops { - int (*write_header)(struct pci_epc *, u8, struct pci_epf_header *); - int (*set_bar)(struct pci_epc *, u8, struct pci_epf_bar *); - void (*clear_bar)(struct pci_epc *, u8, struct pci_epf_bar *); - int (*map_addr)(struct pci_epc *, u8, phys_addr_t, u64, size_t); - void (*unmap_addr)(struct pci_epc *, u8, phys_addr_t); - int (*set_msi)(struct pci_epc *, u8, u8); - int (*get_msi)(struct pci_epc *, u8); - int (*set_msix)(struct pci_epc *, u8, u16, enum pci_barno, u32); - int (*get_msix)(struct pci_epc *, u8); - int (*raise_irq)(struct pci_epc *, u8, enum pci_epc_irq_type, u16); + 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); + const struct pci_epc_features * (*get_features)(struct pci_epc *, u8, u8); struct module *owner; }; @@ -89429,6 +93096,9 @@ struct pci_epc_mem { struct pci_epf_group { struct config_group group; + struct config_group primary_epc_group; + struct config_group secondary_epc_group; + struct delayed_work cfs_work; struct pci_epf *epf; int index; }; @@ -89509,6 +93179,7 @@ enum cdns_pcie_msg_routing { }; struct cdns_pcie_epf { + struct cdns_pcie_epf *epf; struct pci_epf_bar *epf_bar[6]; }; @@ -89545,6 +93216,7 @@ enum link_status { struct j721e_pcie { struct device *dev; + struct clk *refclk; u32 mode; u32 num_lanes; struct cdns_pcie *cdns_pcie; @@ -89578,6 +93250,47 @@ struct faraday_pci { struct clk *bus_clk; }; +enum { + LTSSM_DETECT_QUIET = 0, + LTSSM_DETECT_ACTIVE = 1, + LTSSM_POLLING_ACTIVE = 2, + LTSSM_POLLING_COMPLIANCE = 3, + LTSSM_POLLING_CONFIGURATION = 4, + LTSSM_CONFIG_LINKWIDTH_START = 5, + LTSSM_CONFIG_LINKWIDTH_ACCEPT = 6, + LTSSM_CONFIG_LANENUM_ACCEPT = 7, + LTSSM_CONFIG_LANENUM_WAIT = 8, + LTSSM_CONFIG_COMPLETE = 9, + LTSSM_CONFIG_IDLE = 10, + LTSSM_RECOVERY_RCVR_LOCK = 11, + LTSSM_RECOVERY_SPEED = 12, + LTSSM_RECOVERY_RCVR_CFG = 13, + LTSSM_RECOVERY_IDLE = 14, + LTSSM_L0 = 16, + LTSSM_RX_L0S_ENTRY = 17, + LTSSM_RX_L0S_IDLE = 18, + LTSSM_RX_L0S_FTS = 19, + LTSSM_TX_L0S_ENTRY = 20, + LTSSM_TX_L0S_IDLE = 21, + LTSSM_TX_L0S_FTS = 22, + LTSSM_L1_ENTRY = 23, + LTSSM_L1_IDLE = 24, + LTSSM_L2_IDLE = 25, + LTSSM_L2_TRANSMIT_WAKE = 26, + LTSSM_DISABLED = 32, + LTSSM_LOOPBACK_ENTRY_MASTER = 33, + LTSSM_LOOPBACK_ACTIVE_MASTER = 34, + LTSSM_LOOPBACK_EXIT_MASTER = 35, + LTSSM_LOOPBACK_ENTRY_SLAVE = 36, + LTSSM_LOOPBACK_ACTIVE_SLAVE = 37, + LTSSM_LOOPBACK_EXIT_SLAVE = 38, + LTSSM_HOT_RESET = 39, + LTSSM_RECOVERY_EQUALIZATION_PHASE0 = 40, + LTSSM_RECOVERY_EQUALIZATION_PHASE1 = 41, + LTSSM_RECOVERY_EQUALIZATION_PHASE2 = 42, + LTSSM_RECOVERY_EQUALIZATION_PHASE3 = 43, +}; + struct advk_pcie { struct platform_device *pdev; void *base; @@ -89588,23 +93301,117 @@ struct advk_pcie { u32 actions; } wins[8]; u8 wins_count; + struct irq_domain *rp_irq_domain; struct irq_domain *irq_domain; struct irq_chip irq_chip; raw_spinlock_t irq_lock; struct irq_domain *msi_domain; struct irq_domain *msi_inner_domain; - struct irq_chip msi_bottom_irq_chip; - struct irq_chip msi_irq_chip; - struct msi_domain_info msi_domain_info; + raw_spinlock_t msi_irq_lock; long unsigned int msi_used[1]; struct mutex msi_used_lock; - u16 msi_msg; int link_gen; struct pci_bridge_emul bridge; struct gpio_desc *reset_gpio; struct phy *phy; }; +struct regulator_bulk_data { + const char *supply; + struct regulator *consumer; + int ret; +}; + +struct tegra_msi { + long unsigned int used[4]; + struct irq_domain *domain; + struct mutex map_lock; + spinlock_t mask_lock; + void *virt; + dma_addr_t phys; + int irq; +}; + +struct tegra_pcie_port_soc { + struct { + u8 turnoff_bit; + u8 ack_bit; + } pme; +}; + +struct tegra_pcie_soc { + unsigned int num_ports; + const struct tegra_pcie_port_soc *ports; + unsigned int msi_base_shift; + long unsigned int afi_pex2_ctrl; + u32 pads_pll_ctl; + u32 tx_ref_sel; + u32 pads_refclk_cfg0; + u32 pads_refclk_cfg1; + u32 update_fc_threshold; + bool has_pex_clkreq_en; + bool has_pex_bias_ctrl; + bool has_intr_prsnt_sense; + bool has_cml_clk; + bool has_gen2; + bool force_pca_enable; + bool program_uphy; + bool update_clamp_threshold; + bool program_deskew_time; + bool update_fc_timer; + bool has_cache_bars; + struct { + struct { + u32 rp_ectl_2_r1; + u32 rp_ectl_4_r1; + u32 rp_ectl_5_r1; + u32 rp_ectl_6_r1; + u32 rp_ectl_2_r2; + u32 rp_ectl_4_r2; + u32 rp_ectl_5_r2; + u32 rp_ectl_6_r2; + } regs; + bool enable; + } ectl; +}; + +struct tegra_pcie { + struct device *dev; + void *pads; + void *afi; + void *cfg; + int irq; + struct resource cs; + struct clk *pex_clk; + struct clk *afi_clk; + struct clk *pll_e; + struct clk *cml_clk; + struct reset_control *pex_rst; + struct reset_control *afi_rst; + struct reset_control *pcie_xrst; + bool legacy_phy; + struct phy *phy; + struct tegra_msi msi; + struct list_head ports; + u32 xbar_config; + struct regulator_bulk_data *supplies; + unsigned int num_supplies; + const struct tegra_pcie_soc *soc; + struct dentry *debugfs; +}; + +struct tegra_pcie_port { + struct tegra_pcie *pcie; + struct device_node *np; + struct list_head list; + struct resource regs; + void *base; + unsigned int index; + unsigned int lanes; + struct phy **phys; + struct gpio_desc *reset_gpio; +}; + struct rcar_pcie { struct device *dev; void *base; @@ -89618,9 +93425,8 @@ enum { struct rcar_msi { long unsigned int used[1]; struct irq_domain *domain; - struct msi_controller chip; - long unsigned int pages; - struct mutex lock; + struct mutex map_lock; + spinlock_t mask_lock; int irq1; int irq2; }; @@ -89644,11 +93450,16 @@ struct rcar_pcie_endpoint { u32 num_ob_windows; }; +struct thunder_pem_pci { + u32 ea_entry[3]; + void *pem_reg_base; +}; + struct xilinx_pcie_port { void *reg_base; - u32 irq; - long unsigned int msi_pages; struct device *dev; + long unsigned int msi_map[2]; + struct mutex map_lock; struct irq_domain *msi_domain; struct irq_domain *leg_domain; struct list_head resources; @@ -89696,6 +93507,17 @@ struct xilinx_cpm_pcie_port { raw_spinlock_t lock; }; +struct xgene_pcie_port { + struct device_node *node; + struct device *dev; + struct clk *clk; + void *csr_base; + void *cfg_base; + long unsigned int cfg_addr; + bool link_up; + u32 version; +}; + struct xgene_msi; struct xgene_msi_group { @@ -89910,6 +93732,7 @@ struct mtk_pcie_port; struct mtk_pcie_soc { bool need_fix_class_id; bool need_fix_device_id; + bool no_msi; unsigned int device_id; struct pci_ops *ops; int (*startup)(struct mtk_pcie_port *); @@ -89942,31 +93765,38 @@ struct mtk_pcie_port { struct mtk_pcie { struct device *dev; void *base; + struct regmap *cfg; struct clk *free_ck; struct list_head ports; const struct mtk_pcie_soc *soc; }; -struct microsemi_pcie_port { - struct platform_device *pdev; - void *pcie_base_addr; +struct event_map { + u32 reg_mask; + u32 event_bit; +}; + +struct mc_msi { + struct mutex lock; + struct irq_domain *msi_domain; + struct irq_domain *dev_domain; + u32 num_vectors; + u64 vector_phy; + long unsigned int used[1]; +}; + +struct mc_port { void *axi_base_addr; - void *bridge_base_addr; - void *ctrl_base_addr; - int bridge; - u32 irq; - u8 root_busno; struct device *dev; - struct irq_domain *msi_domain; - struct irq_domain *leg_domain; - struct list_head resources; - struct mutex lock; - long unsigned int msi_irq_in_use[1]; + struct irq_domain *intx_domain; + struct irq_domain *event_domain; + raw_spinlock_t lock; + struct mc_msi msi; }; -struct acpi_object_list { - u32 count; - union acpi_object *pointer; +struct cause { + const char *sym; + const char *str; }; struct acpi_hest_generic_data { @@ -90154,11 +93984,6 @@ struct pm_domain_data { struct device *dev; }; -struct dev_power_governor { - bool (*power_down_ok)(struct dev_pm_domain *); - bool (*suspend_ok)(struct device *); -}; - enum imx6_pcie_variants { IMX6Q = 0, IMX6SX = 1, @@ -90193,6 +94018,7 @@ struct imx6_pcie { u32 tx_swing_full; u32 tx_swing_low; struct regulator *vpcie; + struct regulator *vph; void *phy_base; struct device *pd_pcie; struct device *pd_pcie_phy; @@ -90252,17 +94078,6 @@ struct ls_pcie_ep { const struct ls_pcie_ep_drvdata *drvdata; }; -struct clk_bulk_data { - const char *id; - struct clk *clk; -}; - -struct regulator_bulk_data { - const char *supply; - struct regulator *consumer; - int ret; -}; - struct qcom_pcie_resources_2_1_0 { struct clk_bulk_data clks[5]; struct reset_control *pci_reset; @@ -90319,7 +94134,8 @@ struct qcom_pcie_resources_2_3_3 { }; struct qcom_pcie_resources_2_7_0 { - struct clk_bulk_data clks[6]; + struct clk_bulk_data clks[7]; + int num_clks; struct regulator_bulk_data supplies[2]; struct reset_control *pci_reset; struct clk *pipe_clk; @@ -90364,6 +94180,30 @@ struct armada8k_pcie { unsigned int phy_count; }; +struct rockchip_pcie___2 { + struct dw_pcie pci; + void *apb_base; + struct phy *phy; + struct clk_bulk_data *clks; + unsigned int clk_cnt; + struct reset_control *rst; + struct gpio_desc *rst_gpio; + struct regulator *vpcie3v3; +}; + +struct keembay_pcie { + struct dw_pcie pci; + void *apb_base; + enum dw_pcie_device_mode mode; + struct clk *clk_master; + struct clk *clk_aux; + struct gpio_desc *reset; +}; + +struct keembay_pcie_of_data { + enum dw_pcie_device_mode mode; +}; + struct kirin_pcie { struct dw_pcie *pci; void *apb_base; @@ -90393,6 +94233,16 @@ struct histb_pcie { struct regulator *vpcie; }; +struct visconti_pcie { + struct dw_pcie pci; + void *ulreg_base; + void *smu_base; + void *mpu_base; + struct clk *refclk; + struct clk *coreclk; + struct clk *auxclk; +}; + struct al_pcie_acpi { void *dbi_base; }; @@ -90417,20 +94267,10 @@ struct al_pcie { struct al_pcie_target_bus_cfg target_bus_cfg; }; -struct thunder_pem_pci { - u32 ea_entry[3]; - void *pem_reg_base; -}; - -struct xgene_pcie_port { - struct device_node *node; - struct device *dev; - struct clk *clk; - void *csr_base; - void *cfg_base; - long unsigned int cfg_addr; - bool link_up; - u32 version; +struct tegra194_pcie_ecam { + void *config_base; + void *iatu_base; + void *dbi_base; }; struct rio_device_id { @@ -90581,6 +94421,8 @@ enum dmaengine_alignment { 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 { @@ -90670,6 +94512,7 @@ enum dma_slave_buswidth { 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 { @@ -91092,7 +94935,7 @@ enum hdmi_content_type { }; enum hdmi_metadata_type { - HDMI_STATIC_METADATA_TYPE1 = 1, + HDMI_STATIC_METADATA_TYPE1 = 0, }; enum hdmi_eotf { @@ -91276,6 +95119,148 @@ union hdmi_infoframe { struct hdmi_drm_infoframe drm; }; +enum con_scroll { + SM_UP = 0, + SM_DOWN = 1, +}; + +enum vc_intensity { + VCI_HALF_BRIGHT = 0, + VCI_NORMAL = 1, + VCI_BOLD = 2, + VCI_MASK = 3, +}; + +struct vc_data; + +struct console_font; + +struct consw { + struct module *owner; + const char * (*con_startup)(); + void (*con_init)(struct vc_data *, int); + void (*con_deinit)(struct vc_data *); + void (*con_clear)(struct vc_data *, int, int, int, int); + void (*con_putc)(struct vc_data *, int, int, int); + void (*con_putcs)(struct vc_data *, const short unsigned int *, int, int, int); + void (*con_cursor)(struct vc_data *, int); + bool (*con_scroll)(struct vc_data *, unsigned int, unsigned int, enum con_scroll, unsigned int); + int (*con_switch)(struct vc_data *); + int (*con_blank)(struct vc_data *, int, int); + int (*con_font_set)(struct vc_data *, struct console_font *, unsigned int); + int (*con_font_get)(struct vc_data *, struct console_font *); + int (*con_font_default)(struct vc_data *, struct console_font *, char *); + int (*con_resize)(struct vc_data *, unsigned int, unsigned int, unsigned int); + void (*con_set_palette)(struct vc_data *, const unsigned char *); + void (*con_scrolldelta)(struct vc_data *, int); + int (*con_set_origin)(struct vc_data *); + void (*con_save_screen)(struct vc_data *); + u8 (*con_build_attr)(struct vc_data *, u8, enum vc_intensity, bool, bool, bool, bool); + void (*con_invert_region)(struct vc_data *, u16 *, int); + u16 * (*con_screen_pos)(const struct vc_data *, int); + long unsigned int (*con_getxy)(struct vc_data *, long unsigned int, int *, int *); + void (*con_flush_scrollback)(struct vc_data *); + int (*con_debug_enter)(struct vc_data *); + int (*con_debug_leave)(struct vc_data *); +}; + +struct vc_state { + unsigned int x; + unsigned int y; + unsigned char color; + unsigned char Gx_charset[2]; + unsigned int charset: 1; + enum vc_intensity intensity; + bool italic; + bool underline; + bool blink; + bool reverse; +}; + +struct console_font { + unsigned int width; + unsigned int height; + unsigned int charcount; + unsigned char *data; +}; + +struct vt_mode { + char mode; + char waitv; + short int relsig; + short int acqsig; + short int frsig; +}; + +struct uni_pagedir; + +struct uni_screen; + +struct vc_data { + struct tty_port port; + struct vc_state state; + struct vc_state saved_state; + short unsigned int vc_num; + unsigned int vc_cols; + unsigned int vc_rows; + unsigned int vc_size_row; + unsigned int vc_scan_lines; + unsigned int vc_cell_height; + long unsigned int vc_origin; + long unsigned int vc_scr_end; + long unsigned int vc_visible_origin; + unsigned int vc_top; + unsigned int vc_bottom; + const struct consw *vc_sw; + short unsigned int *vc_screenbuf; + unsigned int vc_screenbuf_size; + unsigned char vc_mode; + unsigned char vc_attr; + unsigned char vc_def_color; + unsigned char vc_ulcolor; + unsigned char vc_itcolor; + unsigned char vc_halfcolor; + unsigned int vc_cursor_type; + short unsigned int vc_complement_mask; + short unsigned int vc_s_complement_mask; + long unsigned int vc_pos; + short unsigned int vc_hi_font_mask; + struct console_font vc_font; + short unsigned int vc_video_erase_char; + unsigned int vc_state; + unsigned int vc_npar; + unsigned int vc_par[16]; + struct vt_mode vt_mode; + struct pid *vt_pid; + int vt_newvt; + wait_queue_head_t paste_wait; + unsigned int vc_disp_ctrl: 1; + unsigned int vc_toggle_meta: 1; + unsigned int vc_decscnm: 1; + unsigned int vc_decom: 1; + unsigned int vc_decawm: 1; + unsigned int vc_deccm: 1; + unsigned int vc_decim: 1; + unsigned int vc_priv: 3; + unsigned int vc_need_wrap: 1; + unsigned int vc_can_do_color: 1; + unsigned int vc_report_mouse: 2; + unsigned char vc_utf: 1; + unsigned char vc_utf_count; + int vc_utf_char; + long unsigned int vc_tab_stop[4]; + unsigned char vc_palette[48]; + short unsigned int *vc_translate; + unsigned int vc_resize_user; + unsigned int vc_bell_pitch; + unsigned int vc_bell_duration; + short unsigned int vc_cur_blink_ms; + struct vc_data **vc_display_fg; + struct uni_pagedir *vc_uni_pagedir; + struct uni_pagedir **vc_uni_pagedir_loc; + struct uni_screen *vc_uni_screen; +}; + struct fb_fix_screeninfo { char id[16]; long unsigned int smem_start; @@ -91485,7 +95470,7 @@ struct fb_tile_ops; struct apertures_struct; struct fb_info { - atomic_t count; + refcount_t count; int node; int flags; int fbcon_rotate_hint; @@ -91521,6 +95506,7 @@ struct fb_info { void *par; struct apertures_struct *apertures; bool skip_vt_switch; + bool forced_out; }; struct fb_blit_caps { @@ -91668,13 +95654,6 @@ struct backlight_device { int use_count; }; -struct dmt_videomode { - u32 dmt_id; - u32 std_2byte_code; - u32 cvt_3byte_code; - const struct fb_videomode *mode; -}; - enum backlight_update_reason { BACKLIGHT_UPDATE_HOTKEY = 0, BACKLIGHT_UPDATE_SYSFS = 1, @@ -91692,15 +95671,6 @@ struct backlight_ops { int (*check_fb)(struct backlight_device *, struct fb_info *); }; -struct linux_logo { - int type; - unsigned int width; - unsigned int height; - unsigned int clutsize; - const unsigned char *clut; - const unsigned char *data; -}; - struct fb_cmap_user { __u32 start; __u32 len; @@ -91741,6 +95711,13 @@ struct fb_cmap32 { compat_caddr_t transp; }; +struct dmt_videomode { + u32 dmt_id; + u32 std_2byte_code; + u32 cvt_3byte_code; + const struct fb_videomode *mode; +}; + enum display_flags { DISPLAY_FLAGS_HSYNC_LOW = 1, DISPLAY_FLAGS_HSYNC_HIGH = 2, @@ -91823,10 +95800,14 @@ struct fb_con2fbmap { __u32 framebuffer; }; +struct vc { + struct vc_data *d; + struct work_struct SAK_work; +}; + struct fbcon_display { const u_char *fontdata; int userfont; - u_short scrollmode; u_short inverse; short int yscroll; int vrows; @@ -92075,102 +96056,21 @@ enum { TVP = 1, }; -enum { - CLCD_CAP_RGB444 = 1, - CLCD_CAP_RGB5551 = 2, - CLCD_CAP_RGB565 = 4, - CLCD_CAP_RGB888 = 8, - CLCD_CAP_BGR444 = 16, - CLCD_CAP_BGR5551 = 32, - CLCD_CAP_BGR565 = 64, - CLCD_CAP_BGR888 = 128, - CLCD_CAP_444 = 17, - CLCD_CAP_5551 = 34, - CLCD_CAP_565 = 68, - CLCD_CAP_888 = 136, - CLCD_CAP_RGB = 15, - CLCD_CAP_BGR = 240, - CLCD_CAP_ALL = 255, -}; - -struct clcd_panel { - struct fb_videomode mode; - short int width; - short int height; - u32 tim2; - u32 tim3; - u32 cntl; - u32 caps; - unsigned int bpp: 8; - unsigned int fixedtimings: 1; - unsigned int grayscale: 1; - unsigned int connector; - struct backlight_device *backlight; - bool bgr_connection; -}; - -struct clcd_regs { - u32 tim0; - u32 tim1; - u32 tim2; - u32 tim3; - u32 cntl; - long unsigned int pixclock; -}; - -struct clcd_fb; - -struct clcd_board { - const char *name; - u32 caps; - int (*check)(struct clcd_fb *, struct fb_var_screeninfo *); - void (*decode)(struct clcd_fb *, struct clcd_regs *); - void (*disable)(struct clcd_fb *); - void (*enable)(struct clcd_fb *); - int (*setup)(struct clcd_fb *); - int (*mmap)(struct clcd_fb *, struct vm_area_struct *); - void (*remove)(struct clcd_fb *); -}; - -struct clcd_fb { - struct fb_info fb; - struct amba_device *dev; - struct clk *clk; - struct clcd_panel *panel; - struct clcd_board *board; - void *board_data; - void *regs; - u16 off_ienb; - u16 off_cntl; - u32 clcd_cntl; - u32 cmap[16]; - bool clk_enabled; -}; - -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 chips_init_reg { unsigned char addr; unsigned char data; }; +struct acpi_table_bgrt { + struct acpi_table_header header; + u16 version; + u8 status; + u8 image_type; + u64 image_address; + u32 image_offset_x; + u32 image_offset_y; +}; + enum drm_panel_orientation { DRM_MODE_PANEL_ORIENTATION_UNKNOWN = 4294967295, DRM_MODE_PANEL_ORIENTATION_NORMAL = 0, @@ -92388,38 +96288,23 @@ struct di_mapping { uint32_t b2; }; -struct simplefb_format { - const char *name; - u32 bits_per_pixel; - struct fb_bitfield red; - struct fb_bitfield green; - struct fb_bitfield blue; - struct fb_bitfield transp; - u32 fourcc; -}; - -struct simplefb_platform_data { - u32 width; - u32 height; - u32 stride; - const char *format; -}; - -struct simplefb_params { - u32 width; - u32 height; - u32 stride; - struct simplefb_format *format; +struct timing_entry { + u32 min; + u32 typ; + u32 max; }; -struct simplefb_par { - u32 palette[16]; - bool clks_enabled; - unsigned int clk_count; - struct clk **clks; - bool regulators_enabled; - u32 regulator_count; - struct regulator **regulators; +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 display_timings { @@ -92452,6 +96337,7 @@ enum si_type { SI_KCS = 1, SI_SMIC = 2, SI_BT = 3, + SI_TYPE_MAX = 4, }; enum ipmi_addr_space { @@ -92596,32 +96482,10 @@ struct acpi_subtable_proc { int count; }; -struct transaction; - -struct acpi_ec { - acpi_handle handle; - int gpe; - int irq; - long unsigned int command_addr; - long unsigned int data_addr; - bool global_lock; - long unsigned int flags; - long unsigned int reference_count; - struct mutex mutex; - wait_queue_head_t wait; - struct list_head list; - struct transaction *curr; - spinlock_t lock; - struct work_struct work; - long unsigned int timestamp; - long unsigned int nr_pending_queries; - bool busy_polling; - unsigned int polling_guard; -}; - enum acpi_subtable_type { ACPI_SUBTABLE_COMMON = 0, ACPI_SUBTABLE_HMAT = 1, + ACPI_SUBTABLE_PRMT = 2, }; struct acpi_subtable_entry { @@ -92629,7 +96493,7 @@ struct acpi_subtable_entry { enum acpi_subtable_type type; }; -typedef char *acpi_string; +typedef u32 (*acpi_interface_handler)(acpi_string, u32); struct acpi_osi_entry { char string[64]; @@ -92646,8 +96510,6 @@ struct acpi_osi_config { unsigned int darwin_cmdline: 1; }; -typedef u32 acpi_name; - struct acpi_predefined_names { const char *name; u8 type; @@ -92658,26 +96520,8 @@ typedef u32 (*acpi_osd_handler)(void *); typedef void (*acpi_osd_exec_callback)(void *); -typedef u32 (*acpi_sci_handler)(void *); - typedef u32 (*acpi_gpe_handler)(acpi_handle, u32, void *); -typedef void (*acpi_notify_handler)(acpi_handle, u32, void *); - -typedef void (*acpi_object_handler)(acpi_handle, void *); - -typedef acpi_status (*acpi_init_handler)(acpi_handle, u32); - -typedef acpi_status (*acpi_exception_handler)(acpi_status, acpi_name, u16, u32, void *); - -typedef acpi_status (*acpi_table_handler)(u32, void *, void *); - -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 u32 (*acpi_interface_handler)(acpi_string, u32); - struct acpi_pci_id { u16 segment; u16 bus; @@ -92709,18 +96553,6 @@ typedef enum { OSL_EC_BURST_HANDLER = 6, } acpi_execute_type; -struct acpi_rw_lock { - void *writer_mutex; - void *reader_mutex; - u32 num_readers; -}; - -struct acpi_mutex_info { - void *mutex; - u32 use_count; - u64 thread_id; -}; - union acpi_operand_object; struct acpi_namespace_node { @@ -93119,13 +96951,6 @@ union acpi_operand_object { struct acpi_namespace_node node; }; -struct acpi_table_list { - struct acpi_table_desc *tables; - u32 current_table_count; - u32 max_table_count; - u8 flags; -}; - union acpi_parse_object; union acpi_generic_state; @@ -93204,12 +97029,6 @@ struct acpi_walk_state { acpi_parse_upwards ascending_callback; }; -struct acpi_sci_handler_info { - struct acpi_sci_handler_info *next; - acpi_sci_handler address; - void *context; -}; - struct acpi_gpe_handler_info { acpi_gpe_handler address; void *context; @@ -93476,13 +97295,6 @@ union acpi_generic_state { struct acpi_notify_info notify; }; -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_opcode_info { u32 parse_args; u32 runtime_args; @@ -93492,24 +97304,6 @@ struct acpi_opcode_info { u8 type; }; -struct acpi_comment_node { - char *comment; - struct acpi_comment_node *next; -}; - -struct acpi_bit_register_info { - u8 parent_register; - u8 bit_position; - u16 access_bit_mask; -}; - -struct acpi_interface_info { - char *name; - struct acpi_interface_info *next; - u8 flags; - u8 value; -}; - struct acpi_os_dpc { acpi_osd_exec_callback function; void *context; @@ -93634,6 +97428,8 @@ struct acpi_data_node_attr { typedef u32 (*acpi_event_handler)(void *); +typedef acpi_status (*acpi_table_handler)(u32, void *, void *); + enum acpi_bus_device_type { ACPI_BUS_TYPE_DEVICE = 0, ACPI_BUS_TYPE_POWER = 1, @@ -93715,21 +97511,20 @@ struct acpi_table_stao { u8 ignore_uart; } __attribute__((packed)); -enum acpi_reconfig_event { - ACPI_RECONFIG_DEVICE_ADD = 0, - ACPI_RECONFIG_DEVICE_REMOVE = 1, -}; - struct acpi_dep_data { struct list_head node; acpi_handle supplier; acpi_handle consumer; }; -struct acpi_table_events_work { +enum acpi_reconfig_event { + ACPI_RECONFIG_DEVICE_ADD = 0, + ACPI_RECONFIG_DEVICE_REMOVE = 1, +}; + +struct acpi_scan_clear_dep_work { struct work_struct work; - void *table; - u32 event; + struct acpi_device *adev; }; struct resource_win { @@ -93743,6 +97538,7 @@ struct irq_override_cmp { unsigned char triggering; unsigned char polarity; unsigned char shareable; + bool override; }; struct res_proc_context { @@ -93753,6 +97549,16 @@ struct res_proc_context { int error; }; +struct acpi_processor_errata { + u8 smp; + struct { + u8 throttle: 1; + u8 fdma: 1; + u8 reserved: 6; + u32 bmisx; + } piix4; +}; + typedef u32 acpi_event_status; struct acpi_table_ecdt { @@ -93764,6 +97570,31 @@ struct acpi_table_ecdt { u8 id[1]; } __attribute__((packed)); +struct transaction; + +struct acpi_ec { + acpi_handle handle; + int gpe; + int irq; + long unsigned int command_addr; + long unsigned int data_addr; + bool global_lock; + long unsigned int flags; + long unsigned int reference_count; + struct mutex mutex; + wait_queue_head_t wait; + struct list_head list; + struct transaction *curr; + spinlock_t lock; + struct work_struct work; + long unsigned int timestamp; + long unsigned int nr_pending_queries; + unsigned int events_in_progress; + unsigned int queries_in_progress; + bool busy_polling; + unsigned int polling_guard; +}; + struct transaction { const u8 *wdata; u8 *rdata; @@ -93811,6 +97642,7 @@ struct acpi_ec_query { struct transaction transaction; struct work_struct work; struct acpi_ec_query_handler *handler; + struct acpi_ec *ec; }; struct dock_station { @@ -93908,11 +97740,10 @@ struct acpi_power_dependent_device { struct acpi_power_resource { struct acpi_device device; struct list_head list_node; - char *name; u32 system_level; u32 order; unsigned int ref_count; - bool wakeup_enabled; + u8 state; struct mutex resource_lock; struct list_head dependents; }; @@ -94039,8 +97870,74 @@ struct acpi_wdat_entry { struct acpi_generic_address register_region; u32 value; u32 mask; +}; + +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; +}; + +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; +}; + enum { ACPI_REFCLASS_LOCAL = 0, ACPI_REFCLASS_ARG = 1, @@ -94064,6 +97961,12 @@ union acpi_descriptor { 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; @@ -94101,71 +98004,9 @@ struct acpi_init_walk_info { acpi_owner_id owner_id; }; -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; -}; +typedef u32 acpi_name; -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; -}; +typedef acpi_status (*acpi_exception_handler)(acpi_status, acpi_name, u16, u32, void *); enum { AML_FIELD_ACCESS_ANY = 0, @@ -94176,14 +98017,10 @@ enum { AML_FIELD_ACCESS_BUFFER = 5, }; -typedef enum { - ACPI_IMODE_LOAD_PASS1 = 1, - ACPI_IMODE_LOAD_PASS2 = 2, - ACPI_IMODE_EXECUTE = 3, -} acpi_interpreter_mode; - typedef acpi_status (*acpi_execute_op)(struct acpi_walk_state *); +typedef u32 acpi_mutex_handle; + struct acpi_reg_walk_info { u32 function; u32 reg_run_count; @@ -94242,6 +98079,8 @@ struct acpi_pci_device { struct acpi_pci_device *next; }; +typedef acpi_status (*acpi_init_handler)(acpi_handle, u32); + struct acpi_device_walk_info { struct acpi_table_desc *table_desc; struct acpi_evaluate_info *evaluate_info; @@ -94250,6 +98089,15 @@ struct acpi_device_walk_info { u32 num_INI; }; +typedef acpi_status (*acpi_pkg_callback)(u8, union acpi_operand_object *, union acpi_generic_state *, void *); + +struct acpi_table_list { + struct acpi_table_desc *tables; + u32 current_table_count; + u32 max_table_count; + u8 flags; +}; + enum acpi_return_package_types { ACPI_PTYPE1_FIXED = 1, ACPI_PTYPE1_VAR = 2, @@ -94292,7 +98140,11 @@ struct acpi_namestring_info { u8 fully_qualified; }; -typedef acpi_status (*acpi_walk_callback)(acpi_handle, u32, void *, void **); +struct acpi_rw_lock { + void *writer_mutex; + void *reader_mutex; + u32 num_readers; +}; struct acpi_get_devices_info { acpi_walk_callback user_function; @@ -94504,6 +98356,18 @@ struct aml_resource_common_serialbus { u16 type_data_length; } __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_i2c_serialbus { u8 descriptor_type; u16 resource_length; @@ -94645,6 +98509,7 @@ union aml_resource { 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; @@ -94671,36 +98536,39 @@ enum { ACPI_RSC_1BITFLAG = 3, ACPI_RSC_2BITFLAG = 4, ACPI_RSC_3BITFLAG = 5, - ACPI_RSC_ADDRESS = 6, - ACPI_RSC_BITMASK = 7, - ACPI_RSC_BITMASK16 = 8, - ACPI_RSC_COUNT = 9, - ACPI_RSC_COUNT16 = 10, - ACPI_RSC_COUNT_GPIO_PIN = 11, - ACPI_RSC_COUNT_GPIO_RES = 12, - ACPI_RSC_COUNT_GPIO_VEN = 13, - ACPI_RSC_COUNT_SERIAL_RES = 14, - ACPI_RSC_COUNT_SERIAL_VEN = 15, - ACPI_RSC_DATA8 = 16, - ACPI_RSC_EXIT_EQ = 17, - ACPI_RSC_EXIT_LE = 18, - ACPI_RSC_EXIT_NE = 19, - ACPI_RSC_LENGTH = 20, - ACPI_RSC_MOVE_GPIO_PIN = 21, - ACPI_RSC_MOVE_GPIO_RES = 22, - ACPI_RSC_MOVE_SERIAL_RES = 23, - ACPI_RSC_MOVE_SERIAL_VEN = 24, - ACPI_RSC_MOVE8 = 25, - ACPI_RSC_MOVE16 = 26, - ACPI_RSC_MOVE32 = 27, - ACPI_RSC_MOVE64 = 28, - ACPI_RSC_SET8 = 29, - ACPI_RSC_SOURCE = 30, - ACPI_RSC_SOURCEX = 31, + 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 u16 acpi_rs_length; +typedef acpi_status (*acpi_walk_aml_callback)(u8 *, u32, u32, u8, void **); + typedef u32 acpi_rsdesc_size; struct acpi_vendor_uuid { @@ -94708,8 +98576,6 @@ struct acpi_vendor_uuid { u8 data[16]; }; -typedef acpi_status (*acpi_walk_resource_callback)(struct acpi_resource *, void *); - struct acpi_vendor_walk_info { struct acpi_vendor_uuid *uuid; struct acpi_buffer *buffer; @@ -94743,6 +98609,13 @@ struct acpi_table_rsdp { 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_pkg_info { u8 *free_space; acpi_size length; @@ -94754,11 +98627,31 @@ struct acpi_exception_info { char *name; }; -typedef acpi_status (*acpi_pkg_callback)(u8, union acpi_operand_object *, union acpi_generic_state *, void *); +typedef u32 (*acpi_sci_handler)(void *); -typedef u32 acpi_mutex_handle; +struct acpi_mutex_info { + void *mutex; + u32 use_count; + u64 thread_id; +}; -typedef acpi_status (*acpi_walk_aml_callback)(u8 *, u32, u32, u8, void **); +struct acpi_sci_handler_info { + struct acpi_sci_handler_info *next; + acpi_sci_handler address; + void *context; +}; + +struct acpi_comment_node { + char *comment; + struct acpi_comment_node *next; +}; + +struct acpi_interface_info { + char *name; + struct acpi_interface_info *next; + u8 flags; + u8 value; +}; struct acpi_table_mcfg { struct acpi_table_header header; @@ -94808,8 +98701,8 @@ struct led_trigger; struct led_classdev { const char *name; - enum led_brightness brightness; - enum led_brightness max_brightness; + unsigned int brightness; + unsigned int max_brightness; int flags; long unsigned int work_flags; void (*brightness_set)(struct led_classdev *, enum led_brightness); @@ -95405,17 +99298,16 @@ struct thermal_zone_device { struct thermal_attr *trip_hyst_attrs; enum thermal_device_mode mode; void *devdata; - int trips; + int num_trips; long unsigned int trips_disabled; - int passive_delay; - int polling_delay; + long unsigned int passive_delay_jiffies; + long unsigned int polling_delay_jiffies; int temperature; int last_temperature; int emul_temperature; int passive; int prev_low_trip; int prev_high_trip; - unsigned int forced_passive; atomic_t need_update; struct thermal_zone_device_ops *ops; struct thermal_zone_params *tzp; @@ -95608,7 +99500,8 @@ struct acpi_hmat_locality { struct acpi_hmat_structure header; u8 flags; u8 data_type; - u16 reserved1; + u8 min_transfer_size; + u8 reserved1; u32 number_of_initiator_Pds; u32 number_of_target_Pds; u32 reserved2; @@ -95698,6 +99591,7 @@ struct acpi_memory_info { struct acpi_memory_device { struct acpi_device *device; struct list_head res_list; + int mgid; }; enum dmi_entry_type { @@ -95890,6 +99784,7 @@ struct mbox_controller { 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; }; @@ -96026,6 +99921,10 @@ struct acpi_pptt_cache { u16 line_size; }; +struct acpi_pptt_cache_v1 { + u32 cache_id; +}; + struct acpi_whea_header { u8 action; u8 instruction; @@ -96034,7 +99933,7 @@ struct acpi_whea_header { struct acpi_generic_address register_region; u64 value; u64 mask; -} __attribute__((packed)); +}; struct acpi_hest_header { u16 type; @@ -96170,7 +100069,7 @@ struct acpi_hest_generic { struct acpi_generic_address error_status_address; struct acpi_hest_notify notify; u32 error_block_length; -} __attribute__((packed)); +}; struct acpi_hest_ia_deferred_check { struct acpi_hest_header header; @@ -96452,17 +100351,6 @@ struct ghes_vendor_record_entry { char vendor_record[0]; }; -struct tps68470_pmic_table { - u32 address; - u32 reg; - u32 bitmask; -}; - -struct tps68470_pmic_opregion { - struct mutex lock; - struct regmap *regmap; -}; - struct acpi_table_iort { struct acpi_table_header header; u32 node_count; @@ -96474,7 +100362,7 @@ struct acpi_iort_node { u8 type; u16 length; u8 revision; - u32 reserved; + u32 identifier; u32 mapping_count; u32 mapping_offset; char node_data[1]; @@ -96487,6 +100375,7 @@ enum acpi_iort_node_type { ACPI_IORT_NODE_SMMU = 3, ACPI_IORT_NODE_SMMU_V3 = 4, ACPI_IORT_NODE_PMCG = 5, + ACPI_IORT_NODE_RMR = 6, }; struct acpi_iort_id_mapping { @@ -96586,7 +100475,8 @@ enum arch_timer_ppi_nr { ARCH_TIMER_PHYS_NONSECURE_PPI = 1, ARCH_TIMER_VIRT_PPI = 2, ARCH_TIMER_HYP_PPI = 3, - ARCH_TIMER_MAX_TIMER_PPI = 4, + ARCH_TIMER_HYP_VIRT_PPI = 4, + ARCH_TIMER_MAX_TIMER_PPI = 5, }; struct arch_timer_mem_frame { @@ -96666,6 +100556,80 @@ struct acpi_gtdt_descriptor { void *platform_timer; }; +struct acpi_table_viot { + struct acpi_table_header header; + u16 node_count; + u16 node_offset; + u8 reserved[8]; +}; + +struct acpi_viot_header { + u8 type; + u8 reserved; + u16 length; +}; + +enum acpi_viot_node_type { + ACPI_VIOT_NODE_PCI_RANGE = 1, + ACPI_VIOT_NODE_MMIO = 2, + ACPI_VIOT_NODE_VIRTIO_IOMMU_PCI = 3, + ACPI_VIOT_NODE_VIRTIO_IOMMU_MMIO = 4, + ACPI_VIOT_RESERVED = 5, +}; + +struct acpi_viot_pci_range { + struct acpi_viot_header header; + u32 endpoint_start; + u16 segment_start; + u16 segment_end; + u16 bdf_start; + u16 bdf_end; + u16 output_node; + u8 reserved[6]; +}; + +struct acpi_viot_mmio { + struct acpi_viot_header header; + u32 endpoint; + u64 base_address; + u16 output_node; + u8 reserved[6]; +}; + +struct acpi_viot_virtio_iommu_pci { + struct acpi_viot_header header; + u16 segment; + u16 bdf; + u8 reserved[8]; +}; + +struct acpi_viot_virtio_iommu_mmio { + struct acpi_viot_header header; + u8 reserved[4]; + u64 base_address; +}; + +struct viot_iommu { + unsigned int offset; + struct fwnode_handle *fwnode; + struct list_head list; +}; + +struct viot_endpoint { + union { + struct { + u16 segment_start; + u16 segment_end; + u16 bdf_start; + u16 bdf_end; + }; + u64 address; + }; + u32 endpoint_id; + struct viot_iommu *viommu; + struct list_head list; +}; + struct pnp_device_id { __u8 id[8]; kernel_ulong_t driver_data; @@ -96861,11 +100825,24 @@ struct find_data { unsigned int mask; }; +struct tegra_ahb { + void *regs; + struct device *dev; + u32 ctx[0]; +}; + +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; @@ -96874,6 +100851,72 @@ struct clk_lookup { struct clk_hw *clk_hw; }; +struct clk_init_data; + +struct clk_hw { + struct clk_core *core; + struct clk *clk; + const struct clk_init_data *init; +}; + +struct clk_rate_request { + long unsigned int rate; + long unsigned int min_rate; + long unsigned int max_rate; + long unsigned int best_parent_rate; + struct clk_hw *best_parent_hw; +}; + +struct clk_duty { + unsigned int num; + unsigned int den; +}; + +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 *); + long unsigned int (*recalc_rate)(struct clk_hw *, long unsigned int); + long int (*round_rate)(struct clk_hw *, long unsigned int, long unsigned int *); + 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 *, long unsigned int, long unsigned int); + int (*set_rate_and_parent)(struct clk_hw *, long unsigned int, long unsigned int, u8); + long unsigned int (*recalc_accuracy)(struct clk_hw *, long unsigned int); + 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 *); +}; + +struct clk_parent_data { + const struct clk_hw *hw; + const char *fw_name; + const char *name; + int index; +}; + +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; + long unsigned int flags; +}; + struct clk_lookup_alloc { struct clk_lookup cl; char dev_id[20]; @@ -96886,17 +100929,6 @@ struct clk_notifier { struct list_head node; }; -struct clk { - struct clk_core *core; - struct device *dev; - const char *dev_id; - const char *con_id; - long unsigned int min_rate; - long unsigned int max_rate; - unsigned int exclusive_count; - struct hlist_node clks_node; -}; - struct clk_notifier_data { struct clk *clk; long unsigned int old_rate; @@ -97247,6 +101279,25 @@ struct bm1880_pll_hw_clock { struct clk_init_data init; }; +struct s5_hw_clk { + struct clk_hw hw; + void *reg; +}; + +struct s5_clk_data { + void *base; + struct s5_hw_clk s5_hw[9]; +}; + +struct s5_pll_conf { + long unsigned int freq; + u8 div; + bool rot_ena; + u8 rot_sel; + u8 rot_dir; + u8 pre_div; +}; + struct fsl_sai_clk { struct clk_divider div; struct clk_gate gate; @@ -97777,6 +101828,7 @@ struct bcm2835_clock_data { bool is_mash_clock; bool low_jitter; u32 tcnt_mux; + bool round_up; }; struct bcm2835_gate_data { @@ -97890,7 +101942,7 @@ struct hisi_mux_clock { u8 shift; u8 width; u8 mux_flags; - u32 *table; + const u32 *table; const char *alias; }; @@ -97973,13 +102025,61 @@ struct clk_hisi_phase { 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 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 hisi_reset_controller { spinlock_t lock; void *membase; struct reset_controller_dev rcdev; }; -struct mbox_chan___2; +struct mbox_chan; struct hi6220_stub_clk { u32 id; @@ -97987,7 +102087,7 @@ struct hi6220_stub_clk { struct clk_hw hw; struct regmap *dfs_map; struct mbox_client cl; - struct mbox_chan___2 *mbox; + struct mbox_chan *mbox; }; struct hi6220_mbox_msg { @@ -98005,7 +102105,7 @@ union hi6220_mbox_data { struct hi3660_stub_clk_chan { struct mbox_client cl; - struct mbox_chan___2 *mbox; + struct mbox_chan *mbox; }; struct hi3660_stub_clk { @@ -98016,26 +102116,6 @@ struct hi3660_stub_clk { unsigned int rate; }; -enum imx_pll14xx_type { - PLL_1416X = 0, - PLL_1443X = 1, -}; - -struct imx_pll14xx_rate_table { - unsigned int rate; - unsigned int pdiv; - unsigned int mdiv; - unsigned int sdiv; - unsigned int kdiv; -}; - -struct imx_pll14xx_clk { - enum imx_pll14xx_type type; - const struct imx_pll14xx_rate_table *rate_table; - int rate_count; - int flags; -}; - struct clk_busy_divider { struct clk_divider div; const struct clk_ops *div_ops; @@ -98166,6 +102246,26 @@ struct clk_pllv4 { void *base; }; +enum imx_pll14xx_type { + PLL_1416X = 0, + PLL_1443X = 1, +}; + +struct imx_pll14xx_rate_table { + unsigned int rate; + unsigned int pdiv; + unsigned int mdiv; + unsigned int sdiv; + unsigned int kdiv; +}; + +struct imx_pll14xx_clk { + enum imx_pll14xx_type type; + const struct imx_pll14xx_rate_table *rate_table; + int rate_count; + int flags; +}; + struct clk_pll14xx { struct clk_hw hw; void *base; @@ -98201,6 +102301,13 @@ struct clk_sscg_pll { u8 bypass2; }; +struct arm_smccc_quirk { + int id; + union { + long unsigned int a6; + } state; +}; + enum imx_sc_pm_func { IMX_SC_PM_FUNC_UNKNOWN = 0, IMX_SC_PM_FUNC_SET_SYS_POWER_MODE = 19, @@ -98224,6 +102331,11 @@ enum imx_sc_pm_func { IMX_SC_PM_FUNC_CPU_START = 11, }; +struct imx_clk_scu_rsrc_table { + const u32 *rsrc; + u8 num; +}; + struct imx_scu_clk_node { const char *name; u32 rsrc; @@ -98238,10 +102350,20 @@ struct clk_scu { struct clk_hw hw; u16 rsrc_id; u8 clk_type; + struct clk_hw *parent; + u8 parent_index; bool is_enabled; u32 rate; }; +struct clk_gpr_scu { + struct clk_hw hw; + u16 rsrc_id; + u8 gpr_id; + u8 flags; + bool gate_invert; +}; + struct imx_sc_msg_req_set_clock_rate { struct imx_sc_rpc_msg hdr; __le32 rate; @@ -98296,7 +102418,7 @@ struct imx_sc_msg_req_clock_enable { u8 clk; u8 enable; u8 autog; - int: 24; + int: 0; }; struct clk_lpcg_scu { @@ -98397,6 +102519,11 @@ struct mtk_clk_divider { const struct clk_div_table *clk_div_table; }; +struct mtk_clk_desc { + const struct mtk_gate *clks; + size_t num_clks; +}; + struct mtk_pll_div_table { u32 div; long unsigned int freq; @@ -98405,13 +102532,13 @@ struct mtk_pll_div_table { struct mtk_pll_data { int id; const char *name; - uint32_t reg; - uint32_t pwr_reg; - uint32_t en_mask; - uint32_t pd_reg; - uint32_t tuner_reg; - uint32_t tuner_en_reg; - uint8_t tuner_en_bit; + u32 reg; + u32 pwr_reg; + u32 en_mask; + u32 pd_reg; + u32 tuner_reg; + u32 tuner_en_reg; + u8 tuner_en_bit; int pd_shift; unsigned int flags; const struct clk_ops *ops; @@ -98420,11 +102547,13 @@ struct mtk_pll_data { long unsigned int fmax; int pcwbits; int pcwibits; - uint32_t pcw_reg; + u32 pcw_reg; int pcw_shift; - uint32_t pcw_chg_reg; + u32 pcw_chg_reg; const struct mtk_pll_div_table *div_table; const char *parent_name; + u32 en_reg; + u8 pll_en_bit; }; struct mtk_clk_pll { @@ -98436,6 +102565,7 @@ struct mtk_clk_pll { void *tuner_en_addr; void *pcw_addr; void *pcw_chg_addr; + void *en_addr; const struct mtk_pll_data *data; }; @@ -98474,6 +102604,7 @@ struct mtk_clk_mux { struct regmap *regmap; const struct mtk_mux *data; spinlock_t *lock; + bool reparent; }; struct mtk_mux { @@ -99060,8 +103191,9 @@ enum rcar_r8a779a0_clk_types { CLK_TYPE_R8A779A0_PLL1 = 6, CLK_TYPE_R8A779A0_PLL2X_3X = 7, CLK_TYPE_R8A779A0_PLL5 = 8, - CLK_TYPE_R8A779A0_MDSEL = 9, - CLK_TYPE_R8A779A0_OSC = 10, + CLK_TYPE_R8A779A0_SD = 9, + CLK_TYPE_R8A779A0_MDSEL = 10, + CLK_TYPE_R8A779A0_OSC = 11, }; struct rcar_r8a779a0_cpg_pll_config { @@ -99099,11 +103231,142 @@ enum clk_ids___11 { MOD_CLK_BASE___11 = 64, }; +struct cpg_core_clk___2 { + const char *name; + unsigned int id; + unsigned int parent; + unsigned int div; + unsigned int mult; + unsigned int type; + unsigned int conf; + const struct clk_div_table *dtable; + const char * const *parent_names; + int flag; + int num_parents; +}; + +enum clk_types___2 { + CLK_TYPE_IN___2 = 0, + CLK_TYPE_FF___2 = 1, + CLK_TYPE_SAM_PLL = 2, + CLK_TYPE_DIV = 3, +}; + +struct rzg2l_mod_clk { + const char *name; + unsigned int id; + unsigned int parent; + u16 off; + u8 bit; +}; + +struct rzg2l_reset { + u16 off; + u8 bit; +}; + +struct rzg2l_cpg_info { + const struct cpg_core_clk___2 *core_clks; + unsigned int num_core_clks; + unsigned int last_dt_core_clk; + unsigned int num_total_core_clks; + const struct rzg2l_mod_clk *mod_clks; + unsigned int num_mod_clks; + unsigned int num_hw_mod_clks; + const struct rzg2l_reset *resets; + unsigned int num_resets; + const unsigned int *crit_mod_clks; + unsigned int num_crit_mod_clks; +}; + +enum clk_ids___12 { + LAST_DT_CORE_CLK___12 = 22, + CLK_EXTAL___12 = 23, + CLK_OSC_DIV1000 = 24, + CLK_PLL1___12 = 25, + CLK_PLL2___5 = 26, + CLK_PLL2_DIV2 = 27, + CLK_PLL2_DIV16 = 28, + CLK_PLL2_DIV20 = 29, + CLK_PLL3___11 = 30, + CLK_PLL3_DIV2 = 31, + CLK_PLL3_DIV2_4 = 32, + CLK_PLL3_DIV2_4_2 = 33, + CLK_PLL3_DIV4 = 34, + CLK_PLL4___6 = 35, + CLK_PLL5___2 = 36, + CLK_PLL5_DIV2___2 = 37, + CLK_PLL6 = 38, + CLK_P1_DIV2 = 39, + MOD_CLK_BASE___12 = 40, +}; + +struct cpg_simple_notifier { + struct notifier_block nb; + void *reg; + u32 saved; +}; + +struct sd_div_table { + u32 val; + unsigned int div; +}; + +struct sd_clock { + struct clk_hw hw; + const struct sd_div_table *div_table; + struct cpg_simple_notifier csn; + unsigned int div_num; + unsigned int cur_div_idx; +}; + +struct cpg_pll_clk { + struct clk_hw hw; + void *pllcr_reg; + void *pllecr_reg; + unsigned int fixed_mult; + u32 pllecr_pllst_mask; +}; + +struct cpg_z_clk { + struct clk_hw hw; + void *reg; + void *kick_reg; + long unsigned int max_rate; + unsigned int fixed_div; + u32 mask; +}; + +struct rpc_clock { + struct clk_divider div; + struct clk_gate gate; + struct cpg_simple_notifier csn; +}; + +struct rpcd2_clock { + struct clk_fixed_factor fixed; + struct clk_gate gate; +}; + +struct usb2_clock_sel_priv { + void *base; + struct clk_hw hw; + struct clk_bulk_data clks[2]; + struct reset_control *rsts; + bool extal; + bool xtal; +}; + enum gpd_status { GENPD_STATE_ON = 0, GENPD_STATE_OFF = 1, }; +struct dev_power_governor { + bool (*power_down_ok)(struct dev_pm_domain *); + bool (*suspend_ok)(struct device *); +}; + struct gpd_dev_ops { int (*start)(struct device *); int (*stop)(struct device *); @@ -99153,6 +103416,7 @@ struct generic_pm_domain { int (*set_performance_state)(struct generic_pm_domain *, unsigned int); struct gpd_dev_ops dev_ops; s64 max_off_time_ns; + ktime_t next_wakeup; bool max_off_time_changed; bool cached_power_down_ok; bool cached_power_down_state_idx; @@ -99182,140 +103446,33 @@ struct genpd_lock_ops { void (*unlock)(struct generic_pm_domain *); }; -struct r9a06g032_gate { - u16 gate; - u16 reset; - u16 ready; - u16 midle; - u16 scon; - u16 mirack; - u16 mistat; -}; - -struct r9a06g032_clkdesc { - const char *name; - uint32_t managed: 1; - uint32_t type: 3; - uint32_t index: 8; - uint32_t source: 8; - union { - struct r9a06g032_gate gate; - struct { - unsigned int div_min: 10; - unsigned int div_max: 10; - unsigned int reg: 10; - u16 div_table[4]; - }; - struct { - u16 div; - u16 mul; - }; - unsigned int factor; - unsigned int frequency; - struct { - uint16_t group: 1; - uint16_t index: 3; - u16 sel; - u16 g1; - u16 r1; - u16 g2; - u16 r2; - } dual; - }; -}; - -enum { - K_GATE = 0, - K_FFC = 1, - K_DIV = 2, - K_BITSEL = 3, - K_DUALGATE = 4, -}; - -struct r9a06g032_priv { - struct clk_onecell_data data; - spinlock_t lock; - void *reg; -}; - -struct r9a06g032_clk_gate { - struct clk_hw hw; - struct r9a06g032_priv *clocks; - u16 index; - struct r9a06g032_gate gate; -}; - -struct r9a06g032_clk_div { - struct clk_hw hw; - struct r9a06g032_priv *clocks; - u16 index; - u16 reg; - u16 min; - u16 max; - u8 table_size; - u16 table[8]; -}; - -struct r9a06g032_clk_bitsel { - struct clk_hw hw; - struct r9a06g032_priv *clocks; - u16 index; - u16 selector; -}; - -struct r9a06g032_clk_dualgate { - struct clk_hw hw; - struct r9a06g032_priv *clocks; - u16 index; - u16 selector; - struct r9a06g032_gate gate[2]; -}; - -struct cpg_simple_notifier { - struct notifier_block nb; - void *reg; - u32 saved; -}; - -struct cpg_z_clk { - struct clk_hw hw; - void *reg; - void *kick_reg; - long unsigned int mask; - unsigned int fixed_div; -}; - -struct sd_div_table { - u32 val; - unsigned int div; +struct rzg2l_cpg_priv { + struct reset_controller_dev rcdev; + struct device *dev; + void *base; + spinlock_t rmw_lock; + struct clk **clks; + unsigned int num_core_clks; + unsigned int num_mod_clks; + unsigned int num_resets; + unsigned int last_dt_core_clk; + struct raw_notifier_head notifiers; + const struct rzg2l_cpg_info *info; }; -struct sd_clock { +struct pll_clk { struct clk_hw hw; - const struct sd_div_table *div_table; - struct cpg_simple_notifier csn; - unsigned int div_num; - unsigned int cur_div_idx; -}; - -struct rpc_clock { - struct clk_divider div; - struct clk_gate gate; - struct cpg_simple_notifier csn; -}; - -struct rpcd2_clock { - struct clk_fixed_factor fixed; - struct clk_gate gate; + unsigned int conf; + unsigned int type; + void *base; + struct rzg2l_cpg_priv *priv; }; -struct usb2_clock_sel_priv { - void *base; +struct mstp_clock { struct clk_hw hw; - struct clk_bulk_data clks[2]; - struct reset_control *rsts; - bool extal; - bool xtal; + u16 off; + u8 bit; + struct rzg2l_cpg_priv *priv; }; struct cpg_mssr_priv { @@ -99340,7 +103497,7 @@ struct cpg_mssr_priv { struct clk *clks[0]; }; -struct mstp_clock { +struct mstp_clock___2 { struct clk_hw hw; u32 index; struct cpg_mssr_priv *priv; @@ -99356,8 +103513,7 @@ struct div6_clock { struct clk_hw hw; void *reg; unsigned int div; - u32 src_shift; - u32 src_width; + u32 src_mask; struct notifier_block nb; u8 parents[0]; }; @@ -99379,16 +103535,22 @@ struct rockchip_clk_provider { struct rockchip_pll_rate_table { long unsigned int rate; - unsigned int nr; - unsigned int nf; - unsigned int no; - unsigned int nb; - unsigned int fbdiv; - unsigned int postdiv1; - unsigned int refdiv; - unsigned int postdiv2; - unsigned int dsmpd; - unsigned int frac; + union { + struct { + unsigned int nr; + unsigned int nf; + unsigned int no; + unsigned int nb; + }; + struct { + unsigned int fbdiv; + unsigned int postdiv1; + unsigned int refdiv; + unsigned int postdiv2; + unsigned int dsmpd; + unsigned int frac; + }; + }; }; struct rockchip_pll_clock { @@ -99413,13 +103575,14 @@ struct rockchip_cpuclk_clksel { struct rockchip_cpuclk_rate_table { long unsigned int prate; - struct rockchip_cpuclk_clksel divs[2]; + struct rockchip_cpuclk_clksel divs[5]; }; struct rockchip_cpuclk_reg_data { - int core_reg; - u8 div_core_shift; - u32 div_core_mask; + int core_reg[4]; + u8 div_core_shift[4]; + u32 div_core_mask[4]; + int num_cores; u8 mux_core_alt; u8 mux_core_main; u8 mux_core_shift; @@ -99491,8 +103654,6 @@ struct rockchip_clk_pll { struct rockchip_cpuclk { struct clk_hw hw; - struct clk_mux cpu_mux; - const struct clk_ops *cpu_mux_ops; struct clk *alt_parent; void *reg_base; struct notifier_block clk_nb; @@ -99605,7 +103766,7 @@ struct clk_rk3399_inits { }; struct stratix10_clock_data { - struct clk_onecell_data clk_data; + struct clk_hw_onecell_data clk_data; void *base; }; @@ -99662,6 +103823,17 @@ struct socfpga_pll { struct clk_gate hw; }; +struct n5x_perip_c_clock { + unsigned int id; + const char *name; + const char *parent_name; + const char * const *parent_names; + u8 num_parents; + long unsigned int flags; + long unsigned int offset; + long unsigned int shift; +}; + struct socfpga_periph_clk { struct clk_gate hw; char *parent_name; @@ -99871,6 +104043,11 @@ struct ccu_reset { struct reset_controller_dev rcdev; }; +struct sunxi_ccu { + const struct sunxi_ccu_desc *desc; + struct ccu_reset reset; +}; + struct ccu_mux_fixed_prediv { u8 index; u16 div; @@ -100080,6 +104257,1053 @@ struct ccu_mp { struct ccu_common common; }; +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)(); +}; + +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_init_table { + unsigned int clk_id; + unsigned int parent_id; + long unsigned int rate; + int state; +}; + +struct tegra_clk_duplicate { + int clk_id; + struct clk_lookup lookup; +}; + +struct tegra_clk { + int dt_id; + bool present; +}; + +struct tegra_devclk { + int dt_id; + char *dev_id; + char *con_id; +}; + +typedef void (*tegra_clk_apply_init_table_func)(); + +struct tegra_clk_sync_source { + struct clk_hw hw; + long unsigned int rate; + long unsigned int max_rate; +}; + +struct rail_alignment { + int offset_uv; + int step_uv; +}; + +struct cvb_coefficients { + int c0; + int c1; + int c2; +}; + +struct cvb_table_freq_entry { + long unsigned int 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_dfll_soc_data { + struct device *dev; + long unsigned int 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)(); +}; + +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 dfll_rate_req { + long unsigned int rate; + long unsigned int dvco_target_rate; + int lut_index; + u8 mult_bits; + u8 scale_bits; +}; + +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; + long unsigned int ref_rate; + long unsigned int i2c_clk_rate; + long unsigned int 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; + long unsigned int 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]; + long unsigned int 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; + long unsigned int pwm_rate; + struct pinctrl *pwm_pin; + struct pinctrl_state *pwm_enable_state; + struct pinctrl_state *pwm_disable_state; + u32 reg_init_uV; +}; + +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; + long unsigned int 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 tegra_clk_pll_freq_table { + long unsigned int input_rate; + long unsigned int output_rate; + u32 n; + u32 m; + u8 p; + u8 cpcon; + u16 sdm_data; +}; + +struct pdiv_map { + u8 pdiv; + u8 hw_val; +}; + +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 tegra_clk_pll; + +struct tegra_clk_pll_params { + long unsigned int input_min; + long unsigned int input_max; + long unsigned int cf_min; + long unsigned int cf_max; + long unsigned int vco_min; + long unsigned int 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; + long unsigned int 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 *, long unsigned int, long unsigned int); + long unsigned int (*adjust_vco)(struct tegra_clk_pll_params *, long unsigned int); + 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 tegra_clk_pll { + struct clk_hw hw; + void *clk_base; + void *pmc; + spinlock_t *lock; + struct tegra_clk_pll_params *params; +}; + +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_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_audio_clk_info { + char *name; + struct tegra_clk_pll_params *pll_params; + int clk_id; + char *parent; +}; + +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_sync_source_initdata { + char *name; + long unsigned int rate; + long unsigned int 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; +}; + +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 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, +}; + +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; +}; + +struct dfll_fcpu_data { + const long unsigned int *cpu_max_freq_table; + unsigned int cpu_max_freq_table_size; + const struct cvb_table *cpu_cvb_tables; + unsigned int cpu_cvb_tables_size; +}; + +struct cpu_clk_suspend_context { + u32 clk_csite_src; + u32 cclkg_burst; + u32 cclkg_divider; +}; + +enum { + DOWN___2 = 0, + UP___2 = 1, +}; + +struct cpu_clk_suspend_context___2 { + u32 clk_csite_src; +}; + +struct tegra210_domain_mbist_war { + void (*handle_lvl2_ovr)(struct tegra210_domain_mbist_war *); + const u32 lvl2_offset; + const u32 lvl2_mask; + const unsigned int num_clks; + const unsigned int *clk_init_data; + struct clk_bulk_data *clks; +}; + +struct utmi_clk_param___2 { + u32 osc_frequency; + u8 enable_delay_count; + u16 stable_count; + u8 active_delay_count; + u16 xtal_freq_count; +}; + +struct tegra210_clk_emc_config { + long unsigned int rate; + bool same_freq; + u32 value; + long unsigned int parent_rate; + u8 parent; +}; + +struct tegra210_clk_emc_provider { + struct module *owner; + struct device *dev; + struct tegra210_clk_emc_config *configs; + unsigned int num_configs; + int (*set_rate)(struct device *, const struct tegra210_clk_emc_config *); +}; + +struct tegra210_clk_emc { + struct clk_hw hw; + void *regs; + struct tegra210_clk_emc_provider *provider; + struct clk *parents[8]; +}; + +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; +}; + +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_GET_ALL_INFO = 14, + CMD_CLK_GET_MAX_CLK_ID = 15, + CMD_CLK_GET_FMAX_AT_VMIN = 16, + CMD_CLK_MAX = 17, +}; + +struct cmd_clk_get_rate_request {}; + +struct cmd_clk_get_rate_response { + int64_t rate; +}; + +struct cmd_clk_set_rate_request { + int32_t unused; + int64_t rate; +} __attribute__((packed)); + +struct cmd_clk_set_rate_response { + int64_t rate; +}; + +struct cmd_clk_round_rate_request { + int32_t unused; + int64_t rate; +} __attribute__((packed)); + +struct cmd_clk_round_rate_response { + int64_t rate; +}; + +struct cmd_clk_get_parent_request {}; + +struct cmd_clk_get_parent_response { + uint32_t parent_id; +}; + +struct cmd_clk_set_parent_request { + uint32_t parent_id; +}; + +struct cmd_clk_set_parent_response { + uint32_t parent_id; +}; + +struct cmd_clk_is_enabled_request {}; + +struct cmd_clk_is_enabled_response { + int32_t state; +}; + +struct cmd_clk_enable_request {}; + +struct cmd_clk_disable_request {}; + +struct cmd_clk_get_all_info_request {}; + +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_max_clk_id_request {}; + +struct cmd_clk_get_max_clk_id_response { + uint32_t max_id; +}; + +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_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 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; + +struct tegra_bpmp_channel; + +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 tegra_bpmp_mb_data { + u32 code; + u32 flags; + u8 data[120]; +}; + +struct tegra_ivc; + +struct tegra_bpmp_channel { + struct tegra_bpmp *bpmp; + struct tegra_bpmp_mb_data *ib; + struct tegra_bpmp_mb_data *ob; + struct completion completion; + struct tegra_ivc *ivc; + unsigned int index; +}; + +struct tegra_bpmp_clk; + +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 { + long unsigned int *allocated; + long unsigned int *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; +}; + +struct tegra_bpmp_clk { + struct clk_hw hw; + struct tegra_bpmp *bpmp; + unsigned int id; + unsigned int num_parents; + unsigned int *parents; +}; + +struct tegra_bpmp_message { + unsigned int mrq; + struct { + const void *data; + size_t size; + } tx; + struct { + void *data; + size_t size; + int ret; + } rx; +}; + +struct tegra_bpmp_clk_info { + unsigned int id; + char name[40]; + unsigned int parents[16]; + unsigned int num_parents; + long unsigned int flags; +}; + +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 icst_params { long unsigned int ref; long unsigned int vco_max; @@ -100163,6 +105387,7 @@ struct zynqmp_pll { enum pll_mode { PLL_MODE_INT = 0, PLL_MODE_FRAC = 1, + PLL_MODE_ERROR = 2, }; struct zynqmp_clk_gate { @@ -100178,6 +105403,12 @@ enum pm_query_id { PM_QID_CLOCK_GET_FIXEDFACTOR_PARAMS = 3, PM_QID_CLOCK_GET_PARENTS = 4, PM_QID_CLOCK_GET_ATTRIBUTES = 5, + PM_QID_PINCTRL_GET_NUM_PINS = 6, + PM_QID_PINCTRL_GET_NUM_FUNCTIONS = 7, + PM_QID_PINCTRL_GET_NUM_FUNCTION_GROUPS = 8, + PM_QID_PINCTRL_GET_FUNCTION_NAME = 9, + PM_QID_PINCTRL_GET_FUNCTION_GROUPS = 10, + PM_QID_PINCTRL_GET_PIN_GROUPS = 11, PM_QID_CLOCK_GET_NUM_CLOCKS = 12, PM_QID_CLOCK_GET_MAX_DIVISOR = 13, }; @@ -100484,7 +105715,7 @@ struct pl08x_txd { bool cyclic; }; -struct dma_pool___2; +struct dma_pool; struct pl08x_driver_data { struct dma_device slave; @@ -100495,7 +105726,7 @@ struct pl08x_driver_data { const struct vendor_data *vd; struct pl08x_platform_data *pd; struct pl08x_phy_chan *phy_chans; - struct dma_pool___2 *pool; + struct dma_pool *pool; u8 lli_buses; u8 mem_buses; u8 lli_words; @@ -100543,7 +105774,7 @@ struct bcm2835_chan { unsigned int dreq; int ch; struct bcm2835_desc *desc; - struct dma_pool___2 *cb_pool; + struct dma_pool *cb_pool; void *chan_base; int irq_number; unsigned int irq_flags; @@ -100878,6 +106109,127 @@ union chan_param_mem { struct chan_param_mem_interleaved ip; }; +struct trace_event_raw_tegra_dma_tx_status { + struct trace_entry ent; + u32 __data_loc_chan; + dma_cookie_t cookie; + __u32 residue; + char __data[0]; +}; + +struct trace_event_raw_tegra_dma_complete_cb { + struct trace_entry ent; + u32 __data_loc_chan; + int count; + void *ptr; + char __data[0]; +}; + +struct trace_event_raw_tegra_dma_isr { + struct trace_entry ent; + u32 __data_loc_chan; + int irq; + char __data[0]; +}; + +struct trace_event_data_offsets_tegra_dma_tx_status { + u32 chan; +}; + +struct trace_event_data_offsets_tegra_dma_complete_cb { + u32 chan; +}; + +struct trace_event_data_offsets_tegra_dma_isr { + u32 chan; +}; + +typedef void (*btf_trace_tegra_dma_tx_status)(void *, struct dma_chan *, dma_cookie_t, struct dma_tx_state *); + +typedef void (*btf_trace_tegra_dma_complete_cb)(void *, struct dma_chan *, int, void *); + +typedef void (*btf_trace_tegra_dma_isr)(void *, struct dma_chan *, int); + +struct tegra_dma_chip_data { + unsigned int nr_channels; + unsigned int channel_reg_size; + unsigned int max_dma_count; + bool support_channel_pause; + bool support_separate_wcount_reg; +}; + +struct tegra_dma_channel_regs { + u32 csr; + u32 ahb_ptr; + u32 apb_ptr; + u32 ahb_seq; + u32 apb_seq; + u32 wcount; +}; + +struct tegra_dma_desc; + +struct tegra_dma_sg_req { + struct tegra_dma_channel_regs ch_regs; + unsigned int req_len; + bool configured; + bool last_sg; + struct list_head node; + struct tegra_dma_desc *dma_desc; + unsigned int words_xferred; +}; + +struct tegra_dma_desc { + struct dma_async_tx_descriptor txd; + unsigned int bytes_requested; + unsigned int bytes_transferred; + enum dma_status dma_status; + struct list_head node; + struct list_head tx_list; + struct list_head cb_node; + unsigned int cb_count; +}; + +struct tegra_dma_channel; + +typedef void (*dma_isr_handler)(struct tegra_dma_channel *, bool); + +struct tegra_dma; + +struct tegra_dma_channel { + struct dma_chan dma_chan; + char name[12]; + bool config_init; + unsigned int id; + void *chan_addr; + spinlock_t lock; + bool busy; + struct tegra_dma *tdma; + bool cyclic; + struct list_head free_sg_req; + struct list_head pending_sg_req; + struct list_head free_dma_desc; + struct list_head cb_desc; + dma_isr_handler isr_handler; + struct tasklet_struct tasklet; + unsigned int slave_id; + struct dma_slave_config dma_sconfig; + struct tegra_dma_channel_regs channel_reg; + struct wait_queue_head wq; +}; + +struct tegra_dma { + struct dma_device dma_dev; + struct device *dev; + struct clk *dma_clk; + struct reset_control *rst; + spinlock_t global_lock; + void *base_addr; + const struct tegra_dma_chip_data *chip_data; + u32 global_pause_count; + struct tegra_dma_channel channels[0]; +}; + enum k3_ring_mode { K3_RINGACC_RING_MODE_RING = 0, K3_RINGACC_RING_MODE_MESSAGE = 1, @@ -100980,7 +106332,6 @@ struct cppi5_tr_type1_t { u16 icnt1; u64 addr; s32 dim1; - long: 32; long: 64; }; @@ -101046,30 +106397,17 @@ enum psil_endpoint_type { struct psil_endpoint_config { enum psil_endpoint_type ep_type; + enum udma_tp_level channel_tpl; unsigned int pkt_mode: 1; unsigned int notdpkt: 1; unsigned int needs_epib: 1; - u32 psd_size; - enum udma_tp_level channel_tpl; unsigned int pdma_acc32: 1; unsigned int pdma_burst: 1; - int mapped_channel_id; + u32 psd_size; + s16 mapped_channel_id; u16 flow_start; u16 flow_num; - u16 default_flow_id; -}; - -struct psil_ep { - u32 thread_id; - struct psil_endpoint_config ep_config; -}; - -struct psil_ep_map { - char *name; - struct psil_ep *src; - int src_count; - struct psil_ep *dst; - int dst_count; + s16 default_flow_id; }; struct udma_static_tr { @@ -101131,6 +106469,7 @@ struct udma_match_data { bool enable_memcpy_support; u32 flags; u32 statictr_z_mask; + u8 burst_size[3]; }; struct udma_soc_data { @@ -101258,10 +106597,9 @@ struct udma_chan { enum udma_chan_state state; struct completion teardown_completed; struct udma_tx_drain tx_drain; - u32 bcnt; struct udma_chan_config config; bool use_dma_pool; - struct dma_pool___2 *hdesc_pool; + struct dma_pool *hdesc_pool; u32 id; }; @@ -101315,12 +106653,12 @@ struct k3_udma_glue_rx_channel_cfg { struct k3_udma_glue_rx_flow_cfg *def_flow_cfg; }; -struct udma_dev___2; +struct udma_dev; struct k3_udma_glue_common { struct device *dev; struct device chan_dev; - struct udma_dev___2 *udmax; + struct udma_dev *udmax; const struct udma_tisci_rm *tisci_rm; struct k3_ringacc *ringacc; u32 src_thread; @@ -101333,11 +106671,11 @@ struct k3_udma_glue_common { struct psil_endpoint_config *ep_config; }; -struct udma_tchan___2; +struct udma_tchan; struct k3_udma_glue_tx_channel { struct k3_udma_glue_common common; - struct udma_tchan___2 *udma_tchanx; + struct udma_tchan *udma_tchanx; int udma_tchan_id; struct k3_ring *ringtx; struct k3_ring *ringtxcq; @@ -101351,21 +106689,21 @@ struct k3_udma_glue_tx_channel { int udma_tflow_id; }; -struct udma_rflow___2; +struct udma_rflow; struct k3_udma_glue_rx_flow { - struct udma_rflow___2 *udma_rflow; + struct udma_rflow *udma_rflow; int udma_rflow_id; struct k3_ring *ringrx; struct k3_ring *ringrxfdq; int virq; }; -struct udma_rchan___2; +struct udma_rchan; struct k3_udma_glue_rx_channel { struct k3_udma_glue_common common; - struct udma_rchan___2 *udma_rchanx; + struct udma_rchan *udma_rchanx; int udma_rchan_id; bool remote; bool psil_paired; @@ -101376,12 +106714,17 @@ struct k3_udma_glue_rx_channel { u32 flows_ready; }; -typedef struct generic_pm_domain * (*genpd_xlate_t)(struct of_phandle_args *, void *); +struct psil_ep { + u32 thread_id; + struct psil_endpoint_config ep_config; +}; -struct genpd_onecell_data { - struct generic_pm_domain **domains; - unsigned int num_domains; - genpd_xlate_t xlate; +struct psil_ep_map { + char *name; + struct psil_ep *src; + int src_count; + struct psil_ep *dst; + int dst_count; }; struct owl_sps_domain_info { @@ -101552,6 +106895,27 @@ struct rpi_power_domain_packet { u32 on; }; +struct bcm_pmb { + struct device *dev; + void *base; + spinlock_t lock; + bool little_endian; + struct genpd_onecell_data genpd_onecell_data; +}; + +struct bcm_pmb_pd_data { + const char * const name; + int id; + u8 bus; + u8 device; +}; + +struct bcm_pmb_pm_domain { + struct bcm_pmb *pmb; + const struct bcm_pmb_pd_data *data; + struct generic_pm_domain genpd; +}; + struct soc_device; enum cpubiuctrl_regs { @@ -101568,8 +106932,6 @@ struct bman_hwerr_txt { const char *txt; }; -struct qman_portal; - enum qm_wq_class { qm_wq_portal = 0, qm_wq_pool = 1, @@ -101625,6 +106987,16 @@ struct bm_portal_config { struct bman_portal; +struct qman_portal; + +struct __qm_mcr_querycongestion { + u32 state[8]; +}; + +struct qman_cgrs { + struct __qm_mcr_querycongestion q; +}; + struct qm_portal_config { void *addr_virt_ce; void *addr_virt_ci; @@ -101727,7 +107099,7 @@ struct bm_portal { long: 64; }; -struct bman_portal___2 { +struct bman_portal { struct bm_portal p; long unsigned int irq_sources; const struct bm_portal_config *config; @@ -101740,7 +107112,7 @@ struct bman_portal___2 { struct bman_pool { u32 bpid; - struct bman_portal___2 *portal; + struct bman_portal *portal; struct bman_pool *next; }; @@ -101872,7 +107244,7 @@ struct qm_mcc_initfq { __be16 count; struct qm_fqd fqd; u8 __reserved2[30]; -} __attribute__((packed)); +}; struct qm_mcc_initcgr { u8 __reserve1[2]; @@ -101891,11 +107263,11 @@ enum qman_cb_dqrr_result { qman_cb_dqrr_consume_stop = 4, }; -struct qman_portal___2; +struct qman_portal; struct qman_fq; -typedef enum qman_cb_dqrr_result (*qman_cb_dqrr)(struct qman_portal___2 *, struct qman_fq *, const struct qm_dqrr_entry *, bool); +typedef enum qman_cb_dqrr_result (*qman_cb_dqrr)(struct qman_portal *, struct qman_fq *, const struct qm_dqrr_entry *, bool); struct qm_addr { void *ce; @@ -102004,9 +107376,7 @@ struct qm_portal { long: 64; }; -struct qman_cgrs; - -struct qman_portal___2 { +struct qman_portal { struct qm_portal p; long unsigned int bits; long unsigned int irq_sources; @@ -102026,7 +107396,7 @@ struct qman_portal___2 { long: 64; }; -typedef void (*qman_cb_mr)(struct qman_portal___2 *, struct qman_fq *, const union qm_mr_entry *); +typedef void (*qman_cb_mr)(struct qman_portal *, struct qman_fq *, const union qm_mr_entry *); struct qman_fq_cb { qman_cb_dqrr dqrr; @@ -102052,7 +107422,7 @@ struct qman_fq { struct qman_cgr; -typedef void (*qman_cb_cgr)(struct qman_portal___2 *, struct qman_cgr *, int); +typedef void (*qman_cb_cgr)(struct qman_portal *, struct qman_cgr *, int); struct qman_cgr { u32 cgrid; @@ -102097,10 +107467,6 @@ struct qm_mcr_querywq { u32 wq_len[8]; }; -struct __qm_mcr_querycongestion { - u32 state[8]; -}; - struct qm_mcr_querycongestion { u8 verb; u8 result; @@ -102122,10 +107488,6 @@ struct qm_mcr_querycgr { __be32 cscn_targ_swp[4]; }; -struct qman_cgrs { - struct __qm_mcr_querycongestion q; -}; - struct qm_eqcr_entry { u8 _ncw_verb; u8 dca; @@ -102168,7 +107530,7 @@ struct qm_mcr_queryfq { u8 __reserved1[8]; struct qm_fqd fqd; u8 __reserved2[30]; -} __attribute__((packed)); +}; struct qm_mcr_alterfq { u8 verb; @@ -102712,8 +108074,8 @@ struct qe_ic { __be32 *regs; struct irq_domain *irqhost; struct irq_chip hc_irq; - unsigned int virq_high; - unsigned int virq_low; + int virq_high; + int virq_low; }; struct qe_ic_info { @@ -102939,7 +108301,6 @@ struct ucc_fast_info { resource_size_t regs; int irq; u32 uccm_mask; - int bd_mem_part; int brkpt_support; int grant_support; int tsa; @@ -103044,13 +108405,15 @@ struct imx_pgc_domain { struct generic_pm_domain genpd; struct regmap *regmap; struct regulator *regulator; - struct clk *clk[6]; + struct reset_control *reset; + struct clk_bulk_data *clks; int num_clks; unsigned int pgc; const struct { u32 pxx; u32 map; - u32 hsk; + u32 hskreq; + u32 hskack; } bits; const int voltage; struct device *dev; @@ -103067,7 +108430,7 @@ struct imx8_soc_data { u32 (*soc_revision)(); }; -enum clk_id { +enum clk_id___2 { CLK_NONE = 0, CLK_MM = 1, CLK_MFG = 2, @@ -103088,7 +108451,7 @@ struct scp_domain_data { u32 sram_pdn_bits; u32 sram_pdn_ack_bits; u32 bus_prot_mask; - enum clk_id clk_id[3]; + enum clk_id___2 clk_id[3]; u8 caps; }; @@ -103170,6 +108533,7 @@ struct scpsys_domain { struct clk_bulk_data *subsys_clks; struct regmap *infracfg; struct regmap *smi; + struct regulator *supply; }; struct scpsys { @@ -103213,8 +108577,54 @@ enum mtk_ddp_comp_id { DDP_COMPONENT_ID_MAX = 29, }; +struct mtk_mmsys_routes { + u32 from_comp; + u32 to_comp; + u32 addr; + u32 mask; + u32 val; +}; + struct mtk_mmsys_driver_data { const char *clk_driver; + const struct mtk_mmsys_routes *routes; + const unsigned int num_routes; +}; + +struct mtk_mmsys { + void *regs; + const struct mtk_mmsys_driver_data *data; +}; + +struct mtk_mutex { + int id; + bool claimed; +}; + +enum mtk_mutex_sof_id { + MUTEX_SOF_SINGLE_MODE = 0, + MUTEX_SOF_DSI0 = 1, + MUTEX_SOF_DSI1 = 2, + MUTEX_SOF_DPI0 = 3, + MUTEX_SOF_DPI1 = 4, + MUTEX_SOF_DSI2 = 5, + MUTEX_SOF_DSI3 = 6, +}; + +struct mtk_mutex_data { + const unsigned int *mutex_mod; + const unsigned int *mutex_sof; + const unsigned int mutex_mod_reg; + const unsigned int mutex_sof_reg; + const bool no_clk; +}; + +struct mtk_mutex_ctx { + struct device *dev; + struct clk *clk; + void *regs; + struct mtk_mutex mutex[10]; + const struct mtk_mutex_data *data; }; struct meson_msr; @@ -103272,7 +108682,7 @@ struct meson_ee_pwrc_domain_desc { struct meson_ee_pwrc_top_domain *top_pd; unsigned int mem_pd_count; struct meson_ee_pwrc_mem_domain *mem_pd; - bool (*get_power)(struct meson_ee_pwrc_domain *); + bool (*is_powered_off)(struct meson_ee_pwrc_domain *); }; struct meson_ee_pwrc; @@ -103474,7 +108884,7 @@ struct rpmh_request { bool needs_free; }; -struct cache_req { +struct cache_req___2 { u32 addr; u32 sleep_val; u32 wake_val; @@ -103508,6 +108918,7 @@ struct rpmhpd { const bool active_only; unsigned int corner; unsigned int active_corner; + unsigned int enable_corner; u32 level[16]; size_t level_count; bool enabled; @@ -103527,7 +108938,7 @@ struct renesas_family { struct renesas_soc { const struct renesas_family *family; - u8 id; + u32 id; }; struct rcar_sysc_area { @@ -103606,6 +109017,7 @@ struct rockchip_grf_info { }; struct rockchip_domain_info { + const char *name; int pwr_mask; int status_mask; int req_mask; @@ -103673,7 +109085,403 @@ struct sunxi_sram_desc { }; struct sunxi_sramc_variant { - bool has_emac_clock; + int num_emac_clocks; +}; + +struct nvmem_cell_info { + const char *name; + unsigned int offset; + unsigned int bytes; + unsigned int bit_offset; + unsigned int nbits; +}; + +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_reg_read_t)(void *, unsigned int, void *, size_t); + +typedef int (*nvmem_reg_write_t)(void *, unsigned int, void *, size_t); + +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 nvmem_keepout { + unsigned int start; + unsigned int end; + unsigned char value; +}; + +struct nvmem_config { + struct device *dev; + const char *name; + int id; + struct module *owner; + const struct nvmem_cell_info *cells; + int ncells; + const struct nvmem_keepout *keepout; + unsigned int nkeepout; + enum nvmem_type type; + bool read_only; + bool root_only; + bool ignore_wp; + 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 tegra_fuse; + +struct tegra_fuse_info { + u32 (*read)(struct tegra_fuse *, unsigned int); + unsigned int size; + unsigned int spare; +}; + +struct nvmem_device; + +struct tegra_fuse_soc; + +struct tegra_fuse { + struct device *dev; + void *base; + phys_addr_t phys; + struct clk *clk; + 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_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 attribute_group *soc_attr_group; + bool clk_suspend_on; +}; + +enum { + THRESHOLD_INDEX_0 = 0, + THRESHOLD_INDEX_1 = 1, + THRESHOLD_INDEX_COUNT = 2, +}; + +struct tegra_core_opp_params { + bool init_state; +}; + +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, +}; + +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_N = 51, + TEGRA_IO_PAD_PEX_L1_RST_N = 52, + TEGRA_IO_PAD_PEX_L5_RST_N = 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 pmc_clk { + struct clk_hw hw; + long unsigned int offs; + u32 mux_shift; + u32 force_en_shift; +}; + +struct pmc_clk_gate { + struct clk_hw hw; + long unsigned int offs; + u32 shift; +}; + +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_pmc; + +struct tegra_powergate { + struct generic_pm_domain genpd; + struct tegra_pmc *pmc; + unsigned int id; + struct clk **clks; + unsigned int num_clks; + long unsigned int *clk_rates; + struct reset_control *reset; +}; + +struct tegra_pmc_soc; + +struct tegra_pmc { + struct device *dev; + void *base; + void *wake; + void *aotag; + void *scratch; + struct clk *clk; + struct dentry *debugfs; + const struct tegra_pmc_soc *soc; + bool tz_only; + long unsigned int 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; + long unsigned int 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; +}; + +struct tegra_io_pad_soc { + enum tegra_io_pad id; + unsigned int dpd; + unsigned int voltage; + const char *name; +}; + +struct tegra_pmc_regs { + unsigned int scratch0; + unsigned int dpd_req; + unsigned int dpd_status; + unsigned int dpd2_req; + unsigned int dpd2_status; + 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 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); + 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; + const struct pmc_clk_init_data *pmc_clks_data; + unsigned int num_pmc_clks; + bool has_blink_output; + bool has_usb_sleepwalk; +}; + +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 cmd_pg_query_abi_request { + uint32_t type; +}; + +struct cmd_pg_set_state_request { + uint32_t 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_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 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 tegra_powergate___2 { + struct generic_pm_domain genpd; + struct tegra_bpmp *bpmp; + unsigned int id; }; struct k3_ring_rt_regs { @@ -103712,13 +109520,13 @@ enum k3_ringacc_proxy_access_mode { PROXY_ACCESS_MODE_PEEK_TAIL = 3, }; -struct k3_ring___2; +struct k3_ring; struct k3_ring_ops { - int (*push_tail)(struct k3_ring___2 *, void *); - int (*push_head)(struct k3_ring___2 *, void *); - int (*pop_tail)(struct k3_ring___2 *, void *); - int (*pop_head)(struct k3_ring___2 *, void *); + int (*push_tail)(struct k3_ring *, void *); + int (*push_head)(struct k3_ring *, void *); + int (*pop_tail)(struct k3_ring *, void *); + int (*pop_head)(struct k3_ring *, void *); }; struct k3_ring_state { @@ -103729,9 +109537,9 @@ struct k3_ring_state { u32 tdown_complete: 1; }; -struct k3_ringacc___2; +struct k3_ringacc; -struct k3_ring___2 { +struct k3_ring { struct k3_ring_rt_regs *rt; struct k3_ring_fifo_regs *fifos; struct k3_ringacc_proxy_target_regs *proxy; @@ -103744,7 +109552,7 @@ struct k3_ring___2 { u32 flags; struct k3_ring_state state; u32 ring_id; - struct k3_ringacc___2 *parent; + struct k3_ringacc *parent; u32 use_count; int proxy_id; struct device *dma_dev; @@ -103753,7 +109561,7 @@ struct k3_ring___2 { struct k3_ringacc_ops; -struct k3_ringacc___2 { +struct k3_ringacc { struct device *dev; struct k3_ringacc_proxy_gcfg_regs *proxy_gcfg; void *proxy_target_base; @@ -103763,7 +109571,7 @@ struct k3_ringacc___2 { bool dma_ring_reset_quirk; u32 num_proxies; long unsigned int *proxy_inuse; - struct k3_ring___2 *rings; + struct k3_ring *rings; struct list_head list; struct mutex req_lock; const struct ti_sci_handle *tisci; @@ -103774,7 +109582,7 @@ struct k3_ringacc___2 { }; struct k3_ringacc_ops { - int (*init)(struct platform_device *, struct k3_ringacc___2 *); + int (*init)(struct platform_device *, struct k3_ringacc *); }; struct k3_ringacc_soc_data { @@ -103921,14 +109729,14 @@ struct vring_desc_state_packed { void *data; struct vring_packed_desc *indir_desc; u16 num; - u16 next; u16 last; }; -struct vring_desc_extra_packed { +struct vring_desc_extra { dma_addr_t addr; u32 len; u16 flags; + u16 next; }; struct vring_virtqueue { @@ -103942,12 +109750,14 @@ struct vring_virtqueue { unsigned int free_head; unsigned int num_added; u16 last_used_idx; + bool event_triggered; union { struct { 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; } split; @@ -103964,7 +109774,7 @@ struct vring_virtqueue { u16 next_avail_idx; u16 event_flags_shadow; struct vring_desc_state_packed *desc_state; - struct vring_desc_extra_packed *desc_extra; + 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; @@ -103976,20 +109786,6 @@ struct vring_virtqueue { bool we_own_ring; }; -struct virtio_mmio_device { - struct virtio_device vdev; - struct platform_device *pdev; - void *base; - long unsigned int version; - spinlock_t lock; - struct list_head virtqueues; -}; - -struct virtio_mmio_vq_info { - struct virtqueue *vq; - struct list_head node; -}; - struct virtio_pci_common_cfg { __le32 device_feature_select; __le32 device_feature; @@ -104012,6 +109808,35 @@ struct virtio_pci_common_cfg { __le32 queue_used_hi; }; +struct virtio_pci_modern_device { + struct pci_dev *pci_dev; + struct virtio_pci_common_cfg *common; + void *device; + void *notify_base; + resource_size_t notify_pa; + u8 *isr; + size_t notify_len; + size_t device_len; + int notify_map_cap; + u32 notify_offset_multiplier; + int modern_bars; + struct virtio_device_id id; +}; + +struct virtio_mmio_device { + struct virtio_device vdev; + struct platform_device *pdev; + void *base; + long unsigned int version; + spinlock_t lock; + struct list_head virtqueues; +}; + +struct virtio_mmio_vq_info { + struct virtqueue *vq; + struct list_head node; +}; + struct virtio_pci_vq_info { struct virtqueue *vq; struct list_head node; @@ -104021,15 +109846,8 @@ struct virtio_pci_vq_info { struct virtio_pci_device { struct virtio_device vdev; struct pci_dev *pci_dev; + struct virtio_pci_modern_device mdev; u8 *isr; - struct virtio_pci_common_cfg *common; - void *device; - void *notify_base; - size_t notify_len; - size_t device_len; - int notify_map_cap; - u32 notify_offset_multiplier; - int modern_bars; void *ioaddr; spinlock_t lock; struct list_head virtqueues; @@ -104091,19 +109909,15 @@ struct virtio_balloon { struct work_struct update_balloon_size_work; spinlock_t stop_update_lock; bool stop_update; - int: 24; long unsigned int config_read_bitmap; struct list_head free_page_list; spinlock_t free_page_list_lock; - int: 32; long unsigned int num_free_page_blocks; u32 cmd_id_received_cache; __virtio32 cmd_id_active; __virtio32 cmd_id_stop; - int: 32; wait_queue_head_t acked; unsigned int num_pages; - int: 32; struct balloon_dev_info vb_dev_info; struct mutex balloon_lock; unsigned int num_pfns; @@ -104113,7 +109927,7 @@ struct virtio_balloon { struct notifier_block oom_nb; struct virtqueue *reporting_vq; struct page_reporting_dev_info pr_dev_info; -} __attribute__((packed)); +}; struct xenbus_watch { struct list_head list; @@ -104267,7 +110081,7 @@ struct gnttab_ops { void (*update_entry)(grant_ref_t, domid_t, long unsigned int, unsigned int); int (*end_foreign_access_ref)(grant_ref_t, int); long unsigned int (*end_foreign_transfer_ref)(grant_ref_t); - int (*query_foreign_access)(grant_ref_t); + long unsigned int (*read_frame)(grant_ref_t); }; struct unmap_refs_callback_data { @@ -104288,6 +110102,19 @@ struct xen_feature_info { uint32_t submap; }; +struct balloon_stats { + long unsigned int current_pages; + long unsigned int target_pages; + long unsigned int target_unpopulated; + long unsigned int balloon_low; + long unsigned int balloon_high; + long unsigned int total_pages; + long unsigned int schedule_delay; + long unsigned int max_schedule_delay; + long unsigned int retry_count; + long unsigned int max_retry_count; +}; + enum bp_state { BP_DONE = 0, BP_WAIT = 1, @@ -104302,13 +110129,6 @@ enum shutdown_state { SHUTDOWN_HALT = 4, }; -enum suspend_modes { - NO_SUSPEND = 0, - XEN_SUSPEND = 1, - PM_SUSPEND = 2, - PM_HIBERNATION = 3, -}; - struct shutdown_handler { const char command[11]; bool flag; @@ -104458,6 +110278,36 @@ struct physdev_get_free_pirq { uint32_t pirq; }; +enum xenbus_state { + XenbusStateUnknown = 0, + XenbusStateInitialising = 1, + XenbusStateInitWait = 2, + XenbusStateInitialised = 3, + XenbusStateConnected = 4, + XenbusStateClosing = 5, + XenbusStateClosed = 6, + XenbusStateReconfiguring = 7, + XenbusStateReconfigured = 8, +}; + +struct xenbus_device { + const char *devicetype; + const char *nodename; + const char *otherend; + int otherend_id; + struct xenbus_watch otherend_watch; + struct device dev; + enum xenbus_state state; + struct completion down; + struct work_struct work; + struct semaphore reclaim_sem; + atomic_t event_channels; + atomic_t events; + atomic_t spurious_events; + atomic_t jiffies_eoi_delayed; + unsigned int spurious_threshold; +}; + struct evtchn_loop_ctrl; struct evtchn_ops { @@ -104517,6 +110367,7 @@ struct irq_info { unsigned char flags; uint16_t domid; } pirq; + struct xenbus_device *interdomain; } u; }; @@ -104560,38 +110411,6 @@ struct evtchn_alloc_unbound { evtchn_port_t port; }; -enum xenbus_state { - XenbusStateUnknown = 0, - XenbusStateInitialising = 1, - XenbusStateInitWait = 2, - XenbusStateInitialised = 3, - XenbusStateConnected = 4, - XenbusStateClosing = 5, - XenbusStateClosed = 6, - XenbusStateReconfiguring = 7, - XenbusStateReconfigured = 8, -}; - -struct xenbus_device { - const char *devicetype; - const char *nodename; - const char *otherend; - int otherend_id; - struct xenbus_watch otherend_watch; - struct device dev; - enum xenbus_state state; - struct completion down; - struct work_struct work; - struct semaphore reclaim_sem; -}; - -enum xenstore_init { - XS_UNKNOWN = 0, - XS_PV = 1, - XS_HVM = 2, - XS_LOCAL = 3, -}; - struct xenbus_map_node { struct list_head next; union { @@ -104659,6 +110478,17 @@ struct xsd_sockmsg { uint32_t len; }; +typedef uint32_t XENSTORE_RING_IDX; + +struct xenstore_domain_interface { + char req[1024]; + char rsp[1024]; + XENSTORE_RING_IDX req_cons; + XENSTORE_RING_IDX req_prod; + XENSTORE_RING_IDX rsp_cons; + XENSTORE_RING_IDX rsp_prod; +}; + struct xs_watch_event { struct list_head list; unsigned int len; @@ -104691,6 +110521,13 @@ struct xb_req_data { void *par; }; +enum xenstore_init { + XS_UNKNOWN = 0, + XS_PV = 1, + XS_HVM = 2, + XS_LOCAL = 3, +}; + struct xenbus_device_id { char devicetype[32]; }; @@ -104704,9 +110541,6 @@ struct xenbus_driver { int (*remove)(struct xenbus_device *); int (*suspend)(struct xenbus_device *); int (*resume)(struct xenbus_device *); - int (*freeze)(struct xenbus_device *); - int (*thaw)(struct xenbus_device *); - int (*restore)(struct xenbus_device *); int (*uevent)(struct xenbus_device *, struct kobj_uevent_env *); struct device_driver driver; int (*read_otherend_details)(struct xenbus_device *); @@ -104984,13 +110818,20 @@ enum usb3_link_state { USB3_LPM_U3 = 3, }; +enum usb_ssp_rate { + USB_SSP_GEN_UNKNOWN = 0, + USB_SSP_GEN_2x1 = 1, + USB_SSP_GEN_1x2 = 2, + USB_SSP_GEN_2x2 = 3, +}; + 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; - char: 8; + long: 0; struct list_head urb_list; void *hcpriv; struct ep_device *ep_dev; @@ -104998,7 +110839,7 @@ struct usb_host_endpoint { int extralen; int enabled; int streams; - int: 32; + long: 0; } __attribute__((packed)); struct usb_host_interface { @@ -105096,12 +110937,6 @@ struct usb_bus { struct wusb_dev; -enum usb_device_removable { - USB_DEVICE_REMOVABLE_UNKNOWN = 0, - USB_DEVICE_REMOVABLE = 1, - USB_DEVICE_FIXED = 2, -}; - struct usb2_lpm_parameters { unsigned int besl; int timeout; @@ -105124,6 +110959,7 @@ struct usb_device { 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]; @@ -105144,6 +110980,7 @@ struct usb_device { 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; @@ -105170,7 +111007,6 @@ struct usb_device { unsigned int port_is_suspended: 1; struct wusb_dev *wusb_dev; int slot_id; - enum usb_device_removable removable; struct usb2_lpm_parameters l1_params; struct usb3_lpm_parameters u1_params; struct usb3_lpm_parameters u2_params; @@ -105243,6 +111079,7 @@ struct urb { struct giveback_urb_bh { bool running; + bool high_prio; spinlock_t lock; struct list_head head; struct tasklet_struct bh; @@ -105299,7 +111136,7 @@ struct usb_hcd { struct mutex *bandwidth_mutex; struct usb_hcd *shared_hcd; struct usb_hcd *primary_hcd; - struct dma_pool___2 *pool[4]; + struct dma_pool *pool[4]; int state; struct gen_pool *localmem_pool; long unsigned int hcd_priv[0]; @@ -105351,12 +111188,7 @@ struct hc_driver { 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); -}; - -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); + int (*submit_single_step_set_feature)(struct usb_hcd *, struct urb *, int); }; struct physdev_dbgp_op { @@ -105491,6 +111323,12 @@ enum regulator_status { REGULATOR_STATUS_UNDEFINED = 8, }; +enum regulator_detection_severity { + REGULATOR_SEVERITY_PROT = 0, + REGULATOR_SEVERITY_ERR = 1, + REGULATOR_SEVERITY_WARN = 2, +}; + struct regulator_enable_gpio { struct list_head list; struct gpio_desc *gpiod; @@ -105614,6 +111452,34 @@ struct fixed_regulator_data { struct platform_device pdev; }; +struct regulator_err_state { + struct regulator_dev *rdev; + long unsigned int notifs; + long unsigned int errors; + int possible_errs; +}; + +struct regulator_irq_data { + struct regulator_err_state *states; + int num_states; + void *data; + long int opaque; +}; + +struct regulator_irq_desc { + const char *name; + int irq_flags; + 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 *, long unsigned int *); + int (*renable)(struct regulator_irq_data *); +}; + struct regulator_bulk_devres { struct regulator_bulk_data *consumers; int num_consumers; @@ -105629,7 +111495,21 @@ struct regulator_notifier_match { struct notifier_block *nb; }; -struct of_regulator_match___2 { +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; @@ -105638,19 +111518,18 @@ struct of_regulator_match___2 { }; struct devm_of_regulator_matches { - struct of_regulator_match___2 *matches; + struct of_regulator_match *matches; unsigned int num_matches; }; -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; + +struct reset_control_bulk_data { + const char *id; + struct reset_control *rstc; }; -struct reset_control___2 { +struct reset_control { struct reset_controller_dev *rcdev; struct list_head list; unsigned int id; @@ -105662,10 +111541,36 @@ struct reset_control___2 { atomic_t triggered_count; }; +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_array { - struct reset_control___2 base; + struct reset_control base; unsigned int num_rstcs; - struct reset_control___2 *rstc[0]; + struct reset_control *rstc[0]; +}; + +struct reset_control_bulk_devres { + int num_rstcs; + struct reset_control_bulk_data *rstcs; +}; + +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 berlin_reset_priv { @@ -105732,6 +111637,12 @@ enum imx8mp_src_registers { SRC_NOC_RCR = 84, }; +struct mchp_reset_context { + struct regmap *cpu_ctrl; + struct regmap *gcb_ctrl; + struct reset_controller_dev rcdev; +}; + struct meson_reset_param { int reg_count; int level_offset; @@ -106006,7 +111917,7 @@ struct ldsem_waiter { struct task_struct *task; }; -struct pts_fs_info___2; +struct pts_fs_info; struct tty_audit_buf { struct mutex mutex; @@ -106036,12 +111947,6 @@ struct sysrq_state { struct timer_list keyreset_timer; }; -struct consolefontdesc { - short unsigned int charcount; - short unsigned int charheight; - char *chardata; -}; - struct unipair { short unsigned int unicode; short unsigned int fontpos; @@ -106052,10 +111957,20 @@ struct unimapdesc { struct unipair *entries; }; -struct kbdiacruc { - unsigned int diacr; - unsigned int base; - unsigned int result; +struct kbentry { + unsigned char kb_table; + unsigned char kb_index; + short unsigned int kb_value; +}; + +struct kbsentry { + unsigned char kb_func; + unsigned char kb_string[512]; +}; + +struct kbkeycode { + unsigned int scancode; + unsigned int keycode; }; struct kbd_repeat { @@ -106105,18 +112020,18 @@ struct vt_setactivate { struct vt_mode mode; }; +struct vt_spawn_console { + spinlock_t lock; + struct pid *pid; + int sig; +}; + struct vt_event_wait { struct list_head list; struct vt_event event; int done; }; -struct compat_consolefontdesc { - short unsigned int charcount; - short unsigned int charheight; - compat_caddr_t chardata; -}; - struct compat_console_font_op { compat_uint_t op; compat_uint_t flags; @@ -106161,17 +112076,6 @@ struct vc_selection { int end; }; -struct kbentry { - unsigned char kb_table; - unsigned char kb_index; - short unsigned int kb_value; -}; - -struct kbsentry { - unsigned char kb_func; - unsigned char kb_string[512]; -}; - struct kbdiacr { unsigned char diacr; unsigned char base; @@ -106183,16 +112087,17 @@ struct kbdiacrs { struct kbdiacr kbdiacr[256]; }; +struct kbdiacruc { + unsigned int diacr; + unsigned int base; + unsigned int result; +}; + struct kbdiacrsuc { unsigned int kb_cnt; struct kbdiacruc kbdiacruc[256]; }; -struct kbkeycode { - unsigned int scancode; - unsigned int keycode; -}; - struct keyboard_notifier_param { struct vc_data *vc; int down; @@ -106209,7 +112114,7 @@ struct kbd_struct { char: 3; unsigned char default_ledflagstate: 4; unsigned char kbdmode: 3; - char: 1; + int: 1; unsigned char modeflags: 5; }; @@ -106333,6 +112238,20 @@ struct hv_ops { void (*dtr_rts)(struct hvc_struct *, int); }; +struct earlycon_device { + struct console *con; + struct uart_port port; + char options[16]; + unsigned int baud; +}; + +struct earlycon_id { + char name[15]; + char name_term; + char compatible[128]; + int (*setup)(struct earlycon_device *, const char *); +}; + typedef uint32_t XENCONS_RING_IDX; struct xencons_interface { @@ -106349,6 +112268,8 @@ struct xencons_info { struct xenbus_device *xbdev; struct xencons_interface *intf; unsigned int evtchn; + XENCONS_RING_IDX out_cons; + unsigned int out_cons_same; struct hvc_struct *hvc; int irq; int vtermno; @@ -106401,6 +112322,7 @@ struct uart_8250_port; 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 mctrl_gpios; @@ -106453,6 +112375,8 @@ struct uart_8250_em485 { 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; @@ -106574,7 +112498,7 @@ enum pci_board_num_t { pbn_b0_4_1250000 = 11, pbn_b0_2_1843200 = 12, pbn_b0_4_1843200 = 13, - pbn_b0_1_4000000 = 14, + pbn_b0_1_15625000 = 14, pbn_b0_bt_1_115200 = 15, pbn_b0_bt_2_115200 = 16, pbn_b0_bt_4_115200 = 17, @@ -106631,52 +112555,55 @@ enum pci_board_num_t { pbn_panacom2 = 68, pbn_panacom4 = 69, pbn_plx_romulus = 70, - pbn_endrun_2_4000000 = 71, - pbn_oxsemi = 72, - pbn_oxsemi_1_4000000 = 73, - pbn_oxsemi_2_4000000 = 74, - pbn_oxsemi_4_4000000 = 75, - pbn_oxsemi_8_4000000 = 76, - pbn_intel_i960 = 77, - pbn_sgi_ioc3 = 78, - pbn_computone_4 = 79, - pbn_computone_6 = 80, - pbn_computone_8 = 81, - pbn_sbsxrsio = 82, - pbn_pasemi_1682M = 83, - pbn_ni8430_2 = 84, - pbn_ni8430_4 = 85, - pbn_ni8430_8 = 86, - pbn_ni8430_16 = 87, - pbn_ADDIDATA_PCIe_1_3906250 = 88, - pbn_ADDIDATA_PCIe_2_3906250 = 89, - pbn_ADDIDATA_PCIe_4_3906250 = 90, - pbn_ADDIDATA_PCIe_8_3906250 = 91, - pbn_ce4100_1_115200 = 92, - pbn_omegapci = 93, - pbn_NETMOS9900_2s_115200 = 94, - pbn_brcm_trumanage = 95, - pbn_fintek_4 = 96, - pbn_fintek_8 = 97, - pbn_fintek_12 = 98, - pbn_fintek_F81504A = 99, - pbn_fintek_F81508A = 100, - pbn_fintek_F81512A = 101, - pbn_wch382_2 = 102, - pbn_wch384_4 = 103, - pbn_wch384_8 = 104, - pbn_pericom_PI7C9X7951 = 105, - pbn_pericom_PI7C9X7952 = 106, - pbn_pericom_PI7C9X7954 = 107, - pbn_pericom_PI7C9X7958 = 108, - pbn_sunix_pci_1s = 109, - pbn_sunix_pci_2s = 110, - pbn_sunix_pci_4s = 111, - pbn_sunix_pci_8s = 112, - pbn_sunix_pci_16s = 113, - pbn_moxa8250_2p = 114, - pbn_moxa8250_4p = 115, - pbn_moxa8250_8p = 116, + 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_pericom_PI7C9X7951 = 104, + pbn_pericom_PI7C9X7952 = 105, + pbn_pericom_PI7C9X7954 = 106, + pbn_pericom_PI7C9X7958 = 107, + pbn_sunix_pci_1s = 108, + pbn_sunix_pci_2s = 109, + pbn_sunix_pci_4s = 110, + pbn_sunix_pci_8s = 111, + pbn_sunix_pci_16s = 112, + pbn_titan_1_4000000 = 113, + pbn_titan_2_4000000 = 114, + pbn_titan_4_4000000 = 115, + pbn_titan_8_4000000 = 116, + pbn_moxa8250_2p = 117, + pbn_moxa8250_4p = 118, + pbn_moxa8250_8p = 119, }; struct fsl8250_data { @@ -106697,6 +112624,54 @@ struct dw8250_data { unsigned int uart_16550_compatible: 1; }; +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 omap8250_priv { + int line; + u8 habit; + u8 mdr1; + u8 efr; + u8 scr; + u8 wer; + u8 xon; + u8 xoff; + u8 delayed_restore; + u16 quot; + u8 tx_trigger; + u8 rx_trigger; + bool is_suspending; + int wakeirq; + int wakeups_enabled; + u32 latency; + u32 calc_latency; + struct pm_qos_request pm_qos_request; + struct work_struct qos_work; + struct uart_8250_dma omap8250_dma; + spinlock_t rx_dma_lock; + bool rx_dma_broken; + bool throttled; +}; + +struct omap8250_dma_params { + u32 rx_size; + u8 rx_trigger; + u8 tx_trigger; +}; + +struct omap8250_platdata { + struct omap8250_dma_params *dma_params; + u8 habit; +}; + enum dma_rx_status { DMA_RX_START = 0, DMA_RX_RUNNING = 1, @@ -106720,6 +112695,12 @@ enum { MTK_UART_FC_HW = 2, }; +struct tegra_uart { + struct clk *clk; + struct reset_control *rst; + int line; +}; + struct of_serial_info { struct clk *clk; struct reset_control *rst; @@ -106831,6 +112812,8 @@ struct uart_amba_port { unsigned int old_cr; 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; @@ -106888,6 +112871,9 @@ struct spi_device { int cs_gpio; 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 statistics; }; @@ -106914,14 +112900,16 @@ struct spi_controller { 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 *, struct spi_delay *, struct spi_delay *, struct spi_delay *); + 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; bool queued; struct kthread_worker *kworker; struct kthread_work pump_messages; @@ -106950,9 +112938,6 @@ struct spi_controller { 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; - struct spi_delay cs_setup; - struct spi_delay cs_hold; - struct spi_delay cs_inactive; int *cs_gpios; struct gpio_desc **cs_gpiods; bool use_gpio_descriptors; @@ -106998,11 +112983,11 @@ struct spi_transfer { dma_addr_t rx_dma; struct sg_table tx_sg; struct sg_table rx_sg; + unsigned int dummy_data: 1; unsigned int cs_change: 1; unsigned int tx_nbits: 3; unsigned int rx_nbits: 3; u8 bits_per_word; - u16 delay_usecs; struct spi_delay delay; struct spi_delay cs_change_delay; struct spi_delay word_delay; @@ -107031,6 +113016,7 @@ struct spi_controller_mem_ops { 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, long unsigned int, long unsigned int, long unsigned int); }; struct max310x_devtype { @@ -107105,6 +113091,8 @@ struct imx_port { struct scatterlist tx_sgl[2]; void *rx_buf; struct circ_buf rx_ring; + unsigned int rx_buf_size; + unsigned int rx_period_length; unsigned int rx_periods; dma_cookie_t rx_cookie; unsigned int tx_bytes; @@ -107191,6 +113179,16 @@ struct msm_baud_map { u8 rxstale; }; +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; +}; + enum { UART_IRQ_SUM = 0, UART_RX_IRQ = 0, @@ -107232,7 +113230,6 @@ struct mvebu_uart { struct uart_port *port; struct clk *clk; int irq[2]; - unsigned char *nb; struct mvebu_uart_driver_data *data; struct mvebu_uart_pm_regs pm_regs; }; @@ -107246,18 +113243,9 @@ struct owl_uart_port { struct clk *clk; }; -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 gpio_array; -struct mctrl_gpios___2 { +struct mctrl_gpios { struct uart_port *port; struct gpio_desc *gpio[6]; int irq[6]; @@ -107359,215 +113347,64 @@ struct memdev { }; struct timer_rand_state { - cycles_t last_time; + long unsigned int last_time; long int last_delta; long int last_delta2; }; -struct trace_event_raw_add_device_randomness { - struct trace_entry ent; - int bytes; - long unsigned int IP; - char __data[0]; -}; - -struct trace_event_raw_random__mix_pool_bytes { - struct trace_entry ent; - const char *pool_name; - int bytes; - long unsigned int IP; - char __data[0]; -}; - -struct trace_event_raw_credit_entropy_bits { - struct trace_entry ent; - const char *pool_name; - int bits; - int entropy_count; - long unsigned int IP; - char __data[0]; -}; - -struct trace_event_raw_push_to_pool { - struct trace_entry ent; - const char *pool_name; - int pool_bits; - int input_bits; - char __data[0]; -}; - -struct trace_event_raw_debit_entropy { - struct trace_entry ent; - const char *pool_name; - int debit_bits; - char __data[0]; -}; - -struct trace_event_raw_add_input_randomness { - struct trace_entry ent; - int input_bits; - char __data[0]; -}; - -struct trace_event_raw_add_disk_randomness { - struct trace_entry ent; - dev_t dev; - int input_bits; - char __data[0]; -}; - -struct trace_event_raw_xfer_secondary_pool { - struct trace_entry ent; - const char *pool_name; - int xfer_bits; - int request_bits; - int pool_entropy; - int input_entropy; - char __data[0]; -}; - -struct trace_event_raw_random__get_random_bytes { - struct trace_entry ent; - int nbytes; - long unsigned int IP; - char __data[0]; -}; - -struct trace_event_raw_random__extract_entropy { - struct trace_entry ent; - const char *pool_name; - int nbytes; - int entropy_count; - long unsigned int IP; - char __data[0]; +enum chacha_constants { + CHACHA_CONSTANT_EXPA = 1634760805, + CHACHA_CONSTANT_ND_3 = 857760878, + CHACHA_CONSTANT_2_BY = 2036477234, + CHACHA_CONSTANT_TE_K = 1797285236, }; -struct trace_event_raw_random_read { - struct trace_entry ent; - int got_bits; - int need_bits; - int pool_left; - int input_left; - char __data[0]; +enum { + CRNG_EMPTY = 0, + CRNG_EARLY = 1, + CRNG_READY = 2, }; -struct trace_event_raw_urandom_read { - struct trace_entry ent; - int got_bits; - int pool_left; - int input_left; - char __data[0]; +enum { + CRNG_RESEED_START_INTERVAL = 250, + CRNG_RESEED_INTERVAL = 15000, }; -struct trace_event_raw_prandom_u32 { - struct trace_entry ent; - unsigned int ret; - char __data[0]; +struct crng { + u8 key[32]; + long unsigned int generation; + local_lock_t lock; }; -struct trace_event_data_offsets_add_device_randomness {}; - -struct trace_event_data_offsets_random__mix_pool_bytes {}; - -struct trace_event_data_offsets_credit_entropy_bits {}; - -struct trace_event_data_offsets_push_to_pool {}; - -struct trace_event_data_offsets_debit_entropy {}; - -struct trace_event_data_offsets_add_input_randomness {}; - -struct trace_event_data_offsets_add_disk_randomness {}; - -struct trace_event_data_offsets_xfer_secondary_pool {}; - -struct trace_event_data_offsets_random__get_random_bytes {}; - -struct trace_event_data_offsets_random__extract_entropy {}; - -struct trace_event_data_offsets_random_read {}; - -struct trace_event_data_offsets_urandom_read {}; - -struct trace_event_data_offsets_prandom_u32 {}; - -typedef void (*btf_trace_add_device_randomness)(void *, int, long unsigned int); - -typedef void (*btf_trace_mix_pool_bytes)(void *, const char *, int, long unsigned int); - -typedef void (*btf_trace_mix_pool_bytes_nolock)(void *, const char *, int, long unsigned int); - -typedef void (*btf_trace_credit_entropy_bits)(void *, const char *, int, int, long unsigned int); - -typedef void (*btf_trace_push_to_pool)(void *, const char *, int, int); - -typedef void (*btf_trace_debit_entropy)(void *, const char *, int); - -typedef void (*btf_trace_add_input_randomness)(void *, int); - -typedef void (*btf_trace_add_disk_randomness)(void *, dev_t, int); - -typedef void (*btf_trace_xfer_secondary_pool)(void *, const char *, int, int, int, int); - -typedef void (*btf_trace_get_random_bytes)(void *, int, long unsigned int); - -typedef void (*btf_trace_get_random_bytes_arch)(void *, int, long unsigned int); - -typedef void (*btf_trace_extract_entropy)(void *, const char *, int, int, long unsigned int); - -typedef void (*btf_trace_extract_entropy_user)(void *, const char *, int, int, long unsigned int); - -typedef void (*btf_trace_random_read)(void *, int, int, int, int); - -typedef void (*btf_trace_urandom_read)(void *, int, int, int); - -typedef void (*btf_trace_prandom_u32)(void *, unsigned int); - -struct poolinfo { - int poolbitshift; - int poolwords; - int poolbytes; - int poolfracbits; - int tap1; - int tap2; - int tap3; - int tap4; - int tap5; +struct batch_u64 { + u64 entropy[12]; + local_lock_t lock; + long unsigned int generation; + unsigned int position; }; -struct crng_state { - __u32 state[16]; - long unsigned int init_time; - spinlock_t lock; +struct batch_u32 { + u32 entropy[24]; + local_lock_t lock; + long unsigned int generation; + unsigned int position; }; -struct entropy_store { - const struct poolinfo *poolinfo; - __u32 *pool; - const char *name; - spinlock_t lock; - short unsigned int add_ptr; - short unsigned int input_rotate; - int entropy_count; - unsigned int initialized: 1; - unsigned int last_data_init: 1; - __u8 last_data[10]; +enum { + POOL_BITS = 256, + POOL_READY_BITS = 256, + POOL_EARLY_BITS = 128, }; struct fast_pool { - __u32 pool[4]; + long unsigned int pool[4]; long unsigned int last; - short unsigned int reg_idx; - unsigned char count; + unsigned int count; + struct timer_list mix; }; -struct batched_entropy { - union { - u64 entropy_u64[8]; - u32 entropy_u32[16]; - }; - unsigned int position; - spinlock_t batch_lock; +enum { + MIX_INFLIGHT = 2147483648, }; struct ttyprintk_port { @@ -107575,20 +113412,6 @@ struct ttyprintk_port { spinlock_t spinlock; }; -struct console___2; - -struct kgdb_io___2 { - const char *name; - int (*read_char)(); - void (*write_char)(u8); - void (*flush)(); - int (*init)(); - void (*deinit)(); - void (*pre_exception)(); - void (*post_exception)(); - struct console___2 *cons; -}; - struct console___2 { struct list_head list; struct hvc_struct *hvc; @@ -107922,6 +113745,12 @@ struct tpm_readpubek_out { u8 checksum[20]; }; +struct tpm_pcr_attr { + int alg_id; + int pcr; + struct device_attribute attr; +}; + struct tcpa_event { u32 pcr_index; u32 event_type; @@ -108046,7 +113875,7 @@ struct acpi_tcpa { struct client_hdr client; struct server_hdr server; }; -} __attribute__((packed)); +}; struct linux_efi_tpm_eventlog { u32 size; @@ -108094,6 +113923,8 @@ enum tis_defaults { TIS_MEM_LEN = 20480, TIS_SHORT_TIMEOUT = 750, TIS_LONG_TIMEOUT = 2000, + TIS_TIMEOUT_MIN_ATML = 14700, + TIS_TIMEOUT_MAX_ATML = 15000, }; enum tpm_tis_flags { @@ -108115,6 +113946,8 @@ struct tpm_tis_data { wait_queue_head_t read_queue; const struct tpm_tis_phy_ops *phy_ops; short unsigned int rng_quality; + unsigned int timeout_min; + unsigned int timeout_max; }; struct tpm_tis_phy_ops { @@ -108233,7 +114066,9 @@ enum io_pgtable_fmt { ARM_64_LPAE_S2 = 3, ARM_V7S = 4, ARM_MALI_LPAE = 5, - IO_PGTABLE_NUM_FMTS = 6, + AMD_IOMMU_V1 = 6, + APPLE_DART = 7, + IO_PGTABLE_NUM_FMTS = 8, }; struct iommu_flush_ops { @@ -108285,12 +114120,18 @@ struct io_pgtable_cfg { u64 transtab; u64 memattr; } arm_mali_lpae_cfg; + struct { + u64 ttbr[4]; + u32 n_ttbrs; + } apple_dart_cfg; }; }; struct io_pgtable_ops { int (*map)(struct io_pgtable_ops *, long unsigned int, phys_addr_t, size_t, int, gfp_t); + int (*map_pages)(struct io_pgtable_ops *, long unsigned int, phys_addr_t, size_t, size_t, int, gfp_t, size_t *); size_t (*unmap)(struct io_pgtable_ops *, long unsigned int, size_t, struct iommu_iotlb_gather *); + size_t (*unmap_pages)(struct io_pgtable_ops *, long unsigned int, size_t, size_t, struct iommu_iotlb_gather *); phys_addr_t (*iova_to_phys)(struct io_pgtable_ops *, long unsigned int); }; @@ -108301,11 +114142,6 @@ struct io_pgtable { struct io_pgtable_ops ops; }; -struct io_pgtable_init_fns { - struct io_pgtable * (*alloc)(struct io_pgtable_cfg *, void *); - void (*free)(struct io_pgtable *); -}; - enum qcom_iommu_clk { CLK_IFACE = 0, CLK_BUS = 1, @@ -108342,10 +114178,6 @@ struct qcom_iommu_domain { struct iommu_fwspec *fwspec; }; -struct io_pgtable_domain_attr { - long unsigned int quirks; -}; - enum arm_smmu_s2cr_privcfg { S2CR_PRIVCFG_DEFAULT = 0, S2CR_PRIVCFG_DIPAN = 1, @@ -108448,6 +114280,7 @@ struct arm_smmu_impl { int (*alloc_context_bank)(struct arm_smmu_domain *, struct arm_smmu_device *, struct device *, int); void (*write_s2cr)(struct arm_smmu_device *, int); void (*write_sctlr)(struct arm_smmu_device *, int, u32); + void (*probe_finalize)(struct arm_smmu_device *, struct device *); }; struct arm_smmu_cfg; @@ -108475,6 +114308,7 @@ struct arm_smmu_cfg { }; enum arm_smmu_cbar_type cbar; enum arm_smmu_context_fmt fmt; + bool flush_walk_prefer_tlbiasid; }; enum arm_smmu_domain_stage { @@ -108487,7 +114321,7 @@ enum arm_smmu_domain_stage { struct arm_smmu_domain { struct arm_smmu_device *smmu; struct io_pgtable_ops *pgtbl_ops; - struct io_pgtable_domain_attr pgtbl_cfg; + long unsigned int pgtbl_quirks; const struct iommu_flush_ops *flush_ops; struct arm_smmu_cfg cfg; enum arm_smmu_domain_stage stage; @@ -108511,21 +114345,235 @@ struct cavium_smmu { u32 id_base; }; +struct icc_node; + +struct icc_node_data { + struct icc_node *node; + u32 tag; +}; + +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_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_timing { + long unsigned int rate; + u32 *emem_data; +}; + +struct tegra_mc_client { + unsigned int id; + 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 { + 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_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_mc_reset { + const char *name; + long unsigned int id; + unsigned int control; + unsigned int status; + unsigned int reset; + unsigned int bit; +}; + +struct tegra_mc; + +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 gart_device; + +struct tegra_smmu; + +struct tegra_mc_soc; + +struct tegra_mc { + struct device *dev; + struct tegra_smmu *smmu; + struct gart_device *gart; + void *regs; + struct clk *clk; + int irq; + const struct tegra_mc_soc *soc; + long unsigned int tick; + struct tegra_mc_timing *timings; + unsigned int num_timings; + struct reset_controller_dev reset; + struct icc_provider provider; + spinlock_t lock; + struct { + struct dentry *root; + } debugfs; +}; + +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_data * (*xlate_extended)(struct of_phandle_args *, void *); +}; + +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_soc { + const struct tegra_mc_client *clients; + unsigned int num_clients; + const long unsigned int *emem_regs; + unsigned int num_emem_regs; + unsigned int num_address_bits; + unsigned int atom_size; + u8 client_id_mask; + const struct tegra_smmu_soc *smmu; + u32 intmask; + 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; +}; + struct nvidia_smmu { struct arm_smmu_device smmu; void *bases[2]; + unsigned int num_instances; + struct tegra_mc *mc; +}; + +struct adreno_smmu_fault_info { + u64 far; + u64 ttbr0; + u32 contextidr; + u32 fsr; + u32 fsynr0; + u32 fsynr1; + u32 cbfrsynra; }; struct adreno_smmu_priv { const void *cookie; const struct io_pgtable_cfg * (*get_ttbr1_cfg)(const void *); int (*set_ttbr0_cfg)(const void *, const struct io_pgtable_cfg *); + void (*get_fault_info)(const void *, struct adreno_smmu_fault_info *); + void (*set_stall)(const void *, bool); + void (*resume_translation)(const void *, bool); }; struct qcom_smmu { struct arm_smmu_device smmu; bool bypass_quirk; u8 bypass_cbndx; + u32 stall_enabled; +}; + +enum iommu_fault_type { + IOMMU_FAULT_DMA_UNRECOV = 1, + IOMMU_FAULT_PAGE_REQ = 2, +}; + +enum iommu_fault_reason { + IOMMU_FAULT_REASON_UNKNOWN = 0, + IOMMU_FAULT_REASON_PASID_FETCH = 1, + IOMMU_FAULT_REASON_BAD_PASID_ENTRY = 2, + IOMMU_FAULT_REASON_PASID_INVALID = 3, + IOMMU_FAULT_REASON_WALK_EABT = 4, + IOMMU_FAULT_REASON_PTE_FETCH = 5, + IOMMU_FAULT_REASON_PERMISSION = 6, + IOMMU_FAULT_REASON_ACCESS = 7, + IOMMU_FAULT_REASON_OOR_ADDRESS = 8, +}; + +enum iommu_page_response_code { + IOMMU_PAGE_RESP_SUCCESS = 0, + IOMMU_PAGE_RESP_INVALID = 1, + IOMMU_PAGE_RESP_FAILURE = 2, }; enum pri_resp { @@ -108540,8 +114588,6 @@ struct arm_smmu_cmdq_ent { union { struct { u32 sid; - u8 size; - u64 addr; } prefetch; struct { u32 sid; @@ -108574,6 +114620,11 @@ struct arm_smmu_cmdq_ent { u16 grpid; enum pri_resp resp; } pri; + struct { + u32 sid; + u16 stag; + u8 resp; + } resume; struct { u64 msiaddr; } sync; @@ -108594,7 +114645,6 @@ struct arm_smmu_ll_queue { u8 __pad[64]; }; u32 max_n_shift; - long: 32; long: 64; long: 64; long: 64; @@ -108641,11 +114691,12 @@ struct arm_smmu_cmdq_batch { int num; }; +struct iopf_queue; + struct arm_smmu_evtq { struct arm_smmu_queue q; + struct iopf_queue *iopf; u32 max_stalls; - long: 32; - long: 64; long: 64; long: 64; long: 64; @@ -108732,13 +114783,18 @@ struct arm_smmu_device___2 { unsigned int sid_bits; struct arm_smmu_strtab_cfg strtab_cfg; struct iommu_device iommu; + struct rb_root streams; + struct mutex streams_mutex; long: 64; long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; +}; + +struct arm_smmu_master; + +struct arm_smmu_stream { + u32 id; + struct arm_smmu_master *master; + struct rb_node node; }; struct arm_smmu_domain___2; @@ -108748,10 +114804,12 @@ struct arm_smmu_master { struct device *dev; struct arm_smmu_domain___2 *domain; struct list_head domain_head; - u32 *sids; - unsigned int num_sids; + struct arm_smmu_stream *streams; + unsigned int num_streams; bool ats_enabled; + bool stall_enabled; bool sva_enabled; + bool iopf_enabled; struct list_head bonds; unsigned int ssid_bits; }; @@ -108760,7 +114818,7 @@ struct arm_smmu_domain___2 { struct arm_smmu_device___2 *smmu; struct mutex init_mutex; struct io_pgtable_ops *pgtbl_ops; - bool non_strict; + bool stall_enabled; atomic_t nr_ats_masters; enum arm_smmu_domain_stage stage; union { @@ -108785,6 +114843,8 @@ struct arm_smmu_option_prop { const char *prop; }; +typedef unsigned int ioasid_t; + struct arm_smmu_mmu_notifier { struct mmu_notifier mn; struct arm_smmu_ctx_desc *cd; @@ -108817,13 +114877,6 @@ struct iommu_group { struct list_head entry; }; -typedef unsigned int ioasid_t; - -enum iommu_fault_type { - IOMMU_FAULT_DMA_UNRECOV = 1, - IOMMU_FAULT_PAGE_REQ = 2, -}; - enum iommu_inv_granularity { IOMMU_INV_GRANU_DOMAIN = 0, IOMMU_INV_GRANU_PASID = 1, @@ -108922,6 +114975,11 @@ typedef void (*btf_trace_unmap)(void *, long unsigned int, size_t, size_t); typedef void (*btf_trace_io_page_fault)(void *, struct device *, long unsigned int, int); +enum iommu_dma_cookie_type { + IOMMU_DMA_IOVA_COOKIE = 0, + IOMMU_DMA_MSI_COOKIE = 1, +}; + struct iova { struct rb_node node; long unsigned int pfn_hi; @@ -108965,6 +115023,17 @@ struct iova_domain { iova_entry_dtor entry_dtor; struct timer_list fq_timer; atomic_t fq_timer_on; + struct hlist_node cpuhp_dead; +}; + +struct iommu_dma_cookie { + enum iommu_dma_cookie_type type; + union { + struct iova_domain iovad; + dma_addr_t msi_iova; + }; + struct list_head msi_page_list; + struct iommu_domain *fq_domain; }; struct iova_fq_entry { @@ -108987,19 +115056,9 @@ struct iommu_dma_msi_page { phys_addr_t phys; }; -enum iommu_dma_cookie_type { - IOMMU_DMA_IOVA_COOKIE = 0, - IOMMU_DMA_MSI_COOKIE = 1, -}; - -struct iommu_dma_cookie { - enum iommu_dma_cookie_type type; - union { - struct iova_domain iovad; - dma_addr_t msi_iova; - }; - struct list_head msi_page_list; - struct iommu_domain *fq_domain; +struct io_pgtable_init_fns { + struct io_pgtable * (*alloc)(struct io_pgtable_cfg *, void *); + void (*free)(struct io_pgtable *); }; struct arm_lpae_io_pgtable { @@ -109069,6 +115128,15 @@ struct rk_iommu_domain { struct iommu_domain domain; }; +struct rk_iommu_ops { + phys_addr_t (*pt_address)(u32); + u32 (*mk_dtentries)(dma_addr_t); + u32 (*mk_ptentries)(phys_addr_t, int); + phys_addr_t (*dte_addr_phys)(u32); + u32 (*dma_addr_dte)(dma_addr_t); + u64 dma_bit_mask; +}; + struct rk_iommu { struct device *dev; void **bases; @@ -109116,6 +115184,42 @@ enum sun50i_iommu_aci { SUN50I_IOMMU_ACI_RD_WR = 4, }; +struct tegra_smmu { + void *regs; + struct device *dev; + struct tegra_mc *mc; + const struct tegra_smmu_soc *soc; + struct list_head groups; + long unsigned int pfn_mask; + long unsigned int tlb_mask; + long unsigned int *asids; + struct mutex lock; + struct list_head list; + struct dentry *debugfs; + struct iommu_device iommu; +}; + +struct tegra_smmu_group { + struct list_head list; + struct tegra_smmu *smmu; + const struct tegra_smmu_group_soc *soc; + struct iommu_group *group; + unsigned int swgroup; +}; + +struct tegra_smmu_as { + struct iommu_domain domain; + struct tegra_smmu *smmu; + unsigned int use_count; + spinlock_t lock; + u32 *count; + struct page **pts; + struct page *pd; + dma_addr_t pd_dma; + unsigned int id; + u32 attr; +}; + struct virtio_iommu_range_64 { __le64 start; __le64 end; @@ -109255,6 +115359,33 @@ struct viommu_event { }; }; +struct iopf_queue; + +struct iopf_device_param { + struct device *dev; + struct iopf_queue *queue; + struct list_head queue_list; + struct list_head partial; +}; + +struct iopf_queue { + struct workqueue_struct *wq; + struct list_head devices; + struct mutex lock; +}; + +struct iopf_fault { + struct iommu_fault fault; + struct list_head list; +}; + +struct iopf_group { + struct iopf_fault last_fault; + struct list_head faults; + struct work_struct work; + struct device *dev; +}; + struct cb_id { __u32 idx; __u32 val; @@ -109388,419 +115519,6 @@ struct local_event { __u32 count; }; -struct nvm_ioctl_info_tgt { - __u32 version[3]; - __u32 reserved; - char tgtname[48]; -}; - -struct nvm_ioctl_info { - __u32 version[3]; - __u16 tgtsize; - __u16 reserved16; - __u32 reserved[12]; - struct nvm_ioctl_info_tgt tgts[63]; -}; - -struct nvm_ioctl_device_info { - char devname[32]; - char bmname[48]; - __u32 bmversion[3]; - __u32 flags; - __u32 reserved[8]; -}; - -struct nvm_ioctl_get_devices { - __u32 nr_devices; - __u32 reserved[31]; - struct nvm_ioctl_device_info info[31]; -}; - -struct nvm_ioctl_create_simple { - __u32 lun_begin; - __u32 lun_end; -}; - -struct nvm_ioctl_create_extended { - __u16 lun_begin; - __u16 lun_end; - __u16 op; - __u16 rsv; -}; - -enum { - NVM_CONFIG_TYPE_SIMPLE = 0, - NVM_CONFIG_TYPE_EXTENDED = 1, -}; - -struct nvm_ioctl_create_conf { - __u32 type; - union { - struct nvm_ioctl_create_simple s; - struct nvm_ioctl_create_extended e; - }; -}; - -enum { - NVM_TARGET_FACTORY = 1, -}; - -struct nvm_ioctl_create { - char dev[32]; - char tgttype[48]; - char tgtname[32]; - __u32 flags; - struct nvm_ioctl_create_conf conf; -}; - -struct nvm_ioctl_remove { - char tgtname[32]; - __u32 flags; -}; - -struct nvm_ioctl_dev_init { - char dev[32]; - char mmtype[8]; - __u32 flags; -}; - -enum { - NVM_FACTORY_ERASE_ONLY_USER = 1, - NVM_FACTORY_RESET_HOST_BLKS = 2, - NVM_FACTORY_RESET_GRWN_BBLKS = 4, - NVM_FACTORY_NR_BITS = 8, -}; - -struct nvm_ioctl_dev_factory { - char dev[32]; - __u32 flags; -}; - -enum { - NVM_INFO_CMD = 32, - NVM_GET_DEVICES_CMD = 33, - NVM_DEV_CREATE_CMD = 34, - NVM_DEV_REMOVE_CMD = 35, - NVM_DEV_INIT_CMD = 36, - NVM_DEV_FACTORY_CMD = 37, - NVM_DEV_VIO_ADMIN_CMD = 65, - NVM_DEV_VIO_CMD = 66, - NVM_DEV_VIO_USER_CMD = 67, -}; - -enum { - NVM_OCSSD_SPEC_12 = 12, - NVM_OCSSD_SPEC_20 = 20, -}; - -struct ppa_addr { - union { - struct { - u64 ch: 8; - u64 lun: 8; - u64 blk: 16; - u64 reserved: 32; - } a; - struct { - u64 ch: 8; - u64 lun: 8; - u64 blk: 16; - u64 pg: 16; - u64 pl: 4; - u64 sec: 4; - u64 reserved: 8; - } g; - struct { - u64 grp: 8; - u64 pu: 8; - u64 chk: 16; - u64 sec: 24; - u64 reserved: 8; - } m; - struct { - u64 line: 63; - u64 is_cached: 1; - } c; - u64 ppa; - }; -}; - -struct nvm_dev; - -typedef int nvm_id_fn(struct nvm_dev *); - -struct nvm_addrf { - u8 ch_len; - u8 lun_len; - u8 chk_len; - u8 sec_len; - u8 rsv_len[2]; - u8 ch_offset; - u8 lun_offset; - u8 chk_offset; - u8 sec_offset; - u8 rsv_off[2]; - u64 ch_mask; - u64 lun_mask; - u64 chk_mask; - u64 sec_mask; - u64 rsv_mask[2]; -}; - -struct nvm_geo { - u8 major_ver_id; - u8 minor_ver_id; - u8 version; - int num_ch; - int num_lun; - int all_luns; - int all_chunks; - int op; - sector_t total_secs; - u32 num_chk; - u32 clba; - u16 csecs; - u16 sos; - bool ext; - u32 mdts; - u32 ws_min; - u32 ws_opt; - u32 mw_cunits; - u32 maxoc; - u32 maxocpu; - u32 mccap; - u32 trdt; - u32 trdm; - u32 tprt; - u32 tprm; - u32 tbet; - u32 tbem; - struct nvm_addrf addrf; - u8 vmnt; - u32 cap; - u32 dom; - u8 mtype; - u8 fmtype; - u16 cpar; - u32 mpos; - u8 num_pln; - u8 pln_mode; - u16 num_pg; - u16 fpg_sz; -}; - -struct nvm_dev_ops; - -struct nvm_dev { - struct nvm_dev_ops *ops; - struct list_head devices; - struct nvm_geo geo; - long unsigned int *lun_map; - void *dma_pool; - struct request_queue *q; - char name[32]; - void *private_data; - struct kref ref; - void *rmap; - struct mutex mlock; - spinlock_t lock; - struct list_head area_list; - struct list_head targets; -}; - -typedef int nvm_op_bb_tbl_fn(struct nvm_dev *, struct ppa_addr, u8 *); - -typedef int nvm_op_set_bb_fn(struct nvm_dev *, struct ppa_addr *, int, int); - -struct nvm_chk_meta; - -typedef int nvm_get_chk_meta_fn(struct nvm_dev *, sector_t, int, struct nvm_chk_meta *); - -struct nvm_chk_meta { - u8 state; - u8 type; - u8 wi; - u8 rsvd[5]; - u64 slba; - u64 cnlb; - u64 wp; -}; - -struct nvm_rq; - -typedef int nvm_submit_io_fn(struct nvm_dev *, struct nvm_rq *, void *); - -typedef void nvm_end_io_fn(struct nvm_rq *); - -struct nvm_tgt_dev; - -struct nvm_rq { - struct nvm_tgt_dev *dev; - struct bio *bio; - union { - struct ppa_addr ppa_addr; - dma_addr_t dma_ppa_list; - }; - struct ppa_addr *ppa_list; - void *meta_list; - dma_addr_t dma_meta_list; - nvm_end_io_fn *end_io; - uint8_t opcode; - uint16_t nr_ppas; - uint16_t flags; - u64 ppa_status; - int error; - int is_seq; - void *private; -}; - -typedef void *nvm_create_dma_pool_fn(struct nvm_dev *, char *, int); - -typedef void nvm_destroy_dma_pool_fn(void *); - -typedef void *nvm_dev_dma_alloc_fn(struct nvm_dev *, void *, gfp_t, dma_addr_t *); - -typedef void nvm_dev_dma_free_fn(void *, void *, dma_addr_t); - -struct nvm_dev_ops { - nvm_id_fn *identity; - nvm_op_bb_tbl_fn *get_bb_tbl; - nvm_op_set_bb_fn *set_bb_tbl; - nvm_get_chk_meta_fn *get_chk_meta; - nvm_submit_io_fn *submit_io; - nvm_create_dma_pool_fn *create_dma_pool; - nvm_destroy_dma_pool_fn *destroy_dma_pool; - nvm_dev_dma_alloc_fn *dev_dma_alloc; - nvm_dev_dma_free_fn *dev_dma_free; -}; - -enum { - NVM_RSP_L2P = 1, - NVM_RSP_ECC = 2, - NVM_ADDRMODE_LINEAR = 0, - NVM_ADDRMODE_CHANNEL = 1, - NVM_PLANE_SINGLE = 1, - NVM_PLANE_DOUBLE = 2, - NVM_PLANE_QUAD = 4, - NVM_RSP_SUCCESS = 0, - NVM_RSP_NOT_CHANGEABLE = 1, - NVM_RSP_ERR_FAILWRITE = 16639, - NVM_RSP_ERR_EMPTYPAGE = 17151, - NVM_RSP_ERR_FAILECC = 17025, - NVM_RSP_ERR_FAILCRC = 16388, - NVM_RSP_WARN_HIGHECC = 18176, - NVM_OP_PWRITE = 145, - NVM_OP_PREAD = 146, - NVM_OP_ERASE = 144, - NVM_IO_SNGL_ACCESS = 0, - NVM_IO_DUAL_ACCESS = 1, - NVM_IO_QUAD_ACCESS = 2, - NVM_IO_SUSPEND = 128, - NVM_IO_SLC_MODE = 256, - NVM_IO_SCRAMBLE_ENABLE = 512, - NVM_BLK_T_FREE = 0, - NVM_BLK_T_BAD = 1, - NVM_BLK_T_GRWN_BAD = 2, - NVM_BLK_T_DEV = 4, - NVM_BLK_T_HOST = 8, - NVM_ID_CAP_SLC = 1, - NVM_ID_CAP_CMD_SUSPEND = 2, - NVM_ID_CAP_SCRAMBLE = 4, - NVM_ID_CAP_ENCRYPT = 8, - NVM_ID_FMTYPE_SLC = 0, - NVM_ID_FMTYPE_MLC = 1, - NVM_ID_DCAP_BBLKMGMT = 1, - NVM_UD_DCAP_ECC = 2, -}; - -struct nvm_addrf_12 { - u8 ch_len; - u8 lun_len; - u8 blk_len; - u8 pg_len; - u8 pln_len; - u8 sec_len; - u8 ch_offset; - u8 lun_offset; - u8 blk_offset; - u8 pg_offset; - u8 pln_offset; - u8 sec_offset; - u64 ch_mask; - u64 lun_mask; - u64 blk_mask; - u64 pg_mask; - u64 pln_mask; - u64 sec_mask; -}; - -enum { - NVM_CHK_ST_FREE = 1, - NVM_CHK_ST_CLOSED = 2, - NVM_CHK_ST_OPEN = 4, - NVM_CHK_ST_OFFLINE = 8, - NVM_CHK_TP_W_SEQ = 1, - NVM_CHK_TP_W_RAN = 2, - NVM_CHK_TP_SZ_SPEC = 16, -}; - -struct nvm_tgt_type; - -struct nvm_target { - struct list_head list; - struct nvm_tgt_dev *dev; - struct nvm_tgt_type *type; - struct gendisk *disk; -}; - -struct nvm_tgt_dev { - struct nvm_geo geo; - struct ppa_addr *luns; - struct request_queue *q; - struct nvm_dev *parent; - void *map; -}; - -typedef sector_t nvm_tgt_capacity_fn(void *); - -typedef void *nvm_tgt_init_fn(struct nvm_tgt_dev *, struct gendisk *, int); - -typedef void nvm_tgt_exit_fn(void *, bool); - -typedef int nvm_tgt_sysfs_init_fn(struct gendisk *); - -typedef void nvm_tgt_sysfs_exit_fn(struct gendisk *); - -struct nvm_tgt_type { - const char *name; - unsigned int version[3]; - int flags; - const struct block_device_operations *bops; - nvm_tgt_capacity_fn *capacity; - nvm_tgt_init_fn *init; - nvm_tgt_exit_fn *exit; - nvm_tgt_sysfs_init_fn *sysfs_init; - nvm_tgt_sysfs_exit_fn *sysfs_exit; - struct list_head list; - struct module *owner; -}; - -enum { - NVM_TGT_F_DEV_L2P = 0, - NVM_TGT_F_HOST_L2P = 1, -}; - -struct nvm_ch_map { - int ch_off; - int num_lun; - int *lun_offs; -}; - -struct nvm_dev_map { - struct nvm_ch_map *chnls; - int num_ch; -}; - struct component_ops { int (*bind)(struct device *, struct device *, void *); void (*unbind)(struct device *, struct device *, void *); @@ -109843,9 +115561,8 @@ struct master { struct list_head node; bool bound; const struct component_master_ops *ops; - struct device *dev; + struct device *parent; struct component_match *match; - struct dentry *dentry; }; struct fwnode_link { @@ -109964,8 +115681,6 @@ struct cpu_attr { const struct cpumask * const map; }; -typedef struct kobject *kobj_probe_t(dev_t, int *, void *); - struct probe { struct probe *next; dev_t dev; @@ -109976,19 +115691,19 @@ struct probe { void *data; }; -struct kobj_map___2 { +struct kobj_map { struct probe *probes[255]; struct mutex *lock; }; -typedef int (*dr_match_t)(struct device *, void *, void *); - struct devres_node { struct list_head entry; dr_release_t release; + const char *name; + size_t size; }; -struct devres___2 { +struct devres { struct devres_node node; long: 64; long: 64; @@ -110001,8 +115716,6 @@ struct devres___2 { long: 64; long: 64; long: 64; - long: 64; - long: 64; u8 data[0]; }; @@ -110059,36 +115772,209 @@ struct anon_transport_class { typedef void * (*devcon_match_fn_t)(struct fwnode_handle *, const char *, void *); +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_UP = 3, + PHY_RUNNING = 4, + PHY_NOLINK = 5, + PHY_CABLETEST = 6, +}; + +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_QSGMII = 18, + PHY_INTERFACE_MODE_TRGMII = 19, + PHY_INTERFACE_MODE_100BASEX = 20, + PHY_INTERFACE_MODE_1000BASEX = 21, + PHY_INTERFACE_MODE_2500BASEX = 22, + PHY_INTERFACE_MODE_5GBASER = 23, + PHY_INTERFACE_MODE_RXAUI = 24, + PHY_INTERFACE_MODE_XAUI = 25, + PHY_INTERFACE_MODE_10GBASER = 26, + PHY_INTERFACE_MODE_25GBASER = 27, + PHY_INTERFACE_MODE_USXGMII = 28, + PHY_INTERFACE_MODE_10GKR = 29, + PHY_INTERFACE_MODE_MAX = 30, +} phy_interface_t; + +struct phylink; + +struct phy_driver; + +struct phy_led_trigger; + +struct mii_timestamper; + +struct phy_device { + struct mdio_device mdio; + struct phy_driver *drv; + 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 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; + 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; + long unsigned int supported[2]; + long unsigned int advertising[2]; + long unsigned int lp_advertising[2]; + long unsigned int adv_old[2]; + 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; + 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; + u8 mdix; + u8 mdix_ctrl; + void (*phy_link_change)(struct phy_device *, bool); + void (*adjust_link)(struct net_device *); + const struct macsec_ops *macsec_ops; +}; + +struct phy_tdr_config { + u32 first; + u32 last; + u32 step; + s8 pair; +}; + +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; +}; + +struct phy_driver { + struct mdio_driver_common mdiodrv; + u32 phy_id; + char *name; + u32 phy_id_mask; + const long unsigned int * 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 (*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 *); +}; + struct cache_type_info { const char *size_prop; const char *line_size_props[2]; const char *nr_sets_prop; }; -struct software_node; - struct software_node_ref_args { const struct software_node *node; unsigned int nargs; u64 args[8]; }; -struct software_node { - const char *name; - const struct software_node *parent; - const struct property_entry *properties; -}; - struct swnode { - int id; 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 auxiliary_device_id { @@ -110157,6 +116043,9 @@ struct generic_pm_domain_data { struct notifier_block *power_nb; int cpu; unsigned int performance_state; + unsigned int default_pstate; + unsigned int rpm_pstate; + ktime_t next_wakeup; void *data; }; @@ -110176,8 +116065,9 @@ struct pm_clk_notifier_block { enum pce_status { PCE_STATUS_NONE = 0, PCE_STATUS_ACQUIRED = 1, - PCE_STATUS_ENABLED = 2, - PCE_STATUS_ERROR = 3, + PCE_STATUS_PREPARED = 2, + PCE_STATUS_ENABLED = 3, + PCE_STATUS_ERROR = 4, }; struct pm_clock_entry { @@ -110185,6 +116075,7 @@ struct pm_clock_entry { char *con_id; struct clk *clk; enum pce_status status; + bool enabled_when_prepared; }; struct firmware_fallback_config { @@ -110281,10 +116172,6 @@ struct fw_sysfs { struct firmware *fw; }; -typedef void (*node_registration_func_t)(struct node *); - -typedef int (*walk_memory_blocks_func_t)(struct memory_block *, void *); - struct node_access_nodes { struct device dev; struct list_head list_node; @@ -110308,52 +116195,14 @@ struct for_each_memory_block_cb_data { void *arg; }; -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 *); - -struct regmap___2; +struct regmap; struct regmap_async { struct list_head list; - struct regmap___2 *map; + struct regmap *map; void *work_buf; }; -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_write)(void *, unsigned int, unsigned int); - -typedef int (*regmap_hw_reg_update_bits)(void *, unsigned int, unsigned int, unsigned int); - -typedef struct regmap_async * (*regmap_hw_async_alloc)(); - -typedef void (*regmap_hw_free_context)(void *); - -struct regmap_bus { - bool fast_io; - 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_update_bits reg_update_bits; - regmap_hw_read read; - regmap_hw_reg_read reg_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; -}; - struct reg_field { unsigned int reg; unsigned int lsb; @@ -110367,7 +116216,7 @@ struct regmap_format { size_t reg_bytes; size_t pad_bytes; size_t val_bytes; - void (*format_write)(struct regmap___2 *, unsigned int, unsigned int); + 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 *); @@ -110378,13 +116227,17 @@ struct hwspinlock; struct regcache_ops; -struct regmap___2 { +struct regmap { union { struct mutex mutex; struct { spinlock_t spinlock; long unsigned int spinlock_flags; }; + struct { + raw_spinlock_t raw_spinlock; + long unsigned int raw_spinlock_flags; + }; }; regmap_lock lock; regmap_unlock unlock; @@ -110462,19 +116315,19 @@ struct regmap___2 { struct regcache_ops { const char *name; enum regcache_type type; - int (*init)(struct regmap___2 *); - int (*exit)(struct regmap___2 *); - void (*debugfs_init)(struct regmap___2 *); - int (*read)(struct regmap___2 *, unsigned int, unsigned int *); - int (*write)(struct regmap___2 *, unsigned int, unsigned int); - int (*sync)(struct regmap___2 *, unsigned int, unsigned int); - int (*drop)(struct regmap___2 *, unsigned int, unsigned int); + 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 regmap_range_node { struct rb_node node; const char *name; - struct regmap___2 *map; + struct regmap *map; unsigned int range_min; unsigned int range_max; unsigned int selector_reg; @@ -110485,7 +116338,7 @@ struct regmap_range_node { }; struct regmap_field { - struct regmap___2 *regmap; + struct regmap *regmap; unsigned int mask; unsigned int shift; unsigned int reg; @@ -110564,35 +116417,35 @@ struct trace_event_data_offsets_regcache_drop_region { u32 name; }; -typedef void (*btf_trace_regmap_reg_write)(void *, struct regmap___2 *, unsigned int, unsigned int); +typedef void (*btf_trace_regmap_reg_write)(void *, struct regmap *, unsigned int, unsigned int); -typedef void (*btf_trace_regmap_reg_read)(void *, struct regmap___2 *, unsigned int, unsigned int); +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___2 *, unsigned int, unsigned int); +typedef void (*btf_trace_regmap_reg_read_cache)(void *, struct regmap *, unsigned int, unsigned int); -typedef void (*btf_trace_regmap_hw_read_start)(void *, struct regmap___2 *, unsigned int, 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___2 *, 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___2 *, 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___2 *, 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___2 *, const char *, const char *); +typedef void (*btf_trace_regcache_sync)(void *, struct regmap *, const char *, const char *); -typedef void (*btf_trace_regmap_cache_only)(void *, struct regmap___2 *, bool); +typedef void (*btf_trace_regmap_cache_only)(void *, struct regmap *, bool); -typedef void (*btf_trace_regmap_cache_bypass)(void *, struct regmap___2 *, bool); +typedef void (*btf_trace_regmap_cache_bypass)(void *, struct regmap *, bool); -typedef void (*btf_trace_regmap_async_write_start)(void *, struct regmap___2 *, unsigned int, int); +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___2 *); +typedef void (*btf_trace_regmap_async_io_complete)(void *, struct regmap *); -typedef void (*btf_trace_regmap_async_complete_start)(void *, struct regmap___2 *); +typedef void (*btf_trace_regmap_async_complete_start)(void *, struct regmap *); -typedef void (*btf_trace_regmap_async_complete_done)(void *, struct regmap___2 *); +typedef void (*btf_trace_regmap_async_complete_done)(void *, struct regmap *); -typedef void (*btf_trace_regcache_drop_region)(void *, struct regmap___2 *, unsigned int, unsigned int); +typedef void (*btf_trace_regcache_drop_region)(void *, struct regmap *, unsigned int, unsigned int); struct regcache_rbtree_node { void *block; @@ -110616,7 +116469,7 @@ struct regmap_debugfs_off_cache { }; struct regmap_debugfs_node { - struct regmap___2 *map; + struct regmap *map; struct list_head link; }; @@ -110669,6 +116522,7 @@ struct regmap_irq_chip { unsigned int ack_base; unsigned int wake_base; unsigned int type_base; + unsigned int *virt_reg_base; unsigned int irq_reg_stride; bool mask_writeonly: 1; bool init_ack_masked: 1; @@ -110681,20 +116535,24 @@ struct regmap_irq_chip { bool type_invert: 1; bool type_in_mask: 1; bool clear_on_unmask: 1; + bool not_fixed_stride: 1; + bool status_invert: 1; int num_regs; const struct regmap_irq *irqs; int num_irqs; int num_type_reg; + int num_virt_regs; unsigned int type_reg_stride; int (*handle_pre_irq)(void *); int (*handle_post_irq)(void *); + int (*set_type_virt)(unsigned int **, unsigned int, long unsigned int, int); void *irq_drv_data; }; -struct regmap_irq_chip_data___2 { +struct regmap_irq_chip_data { struct mutex lock; struct irq_chip irq_chip; - struct regmap___2 *map; + struct regmap *map; const struct regmap_irq_chip *chip; int irq_base; struct irq_domain *domain; @@ -110708,12 +116566,13 @@ struct regmap_irq_chip_data___2 { unsigned int *wake_buf; unsigned int *type_buf; unsigned int *type_buf_def; + unsigned int **virt_buf; unsigned int irq_reg_stride; unsigned int type_reg_stride; bool clear_status: 1; }; -struct soc_device___2 { +struct soc_device { struct device dev; struct soc_device_attribute *attr; int soc_dev_num; @@ -110730,16 +116589,32 @@ struct devcd_entry { 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; + const struct attribute_group **msi_irq_groups; msi_alloc_info_t arg; irq_write_msi_msg_t write_msg; int devid; }; +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; +}; + +typedef void (*btf_trace_devres_log)(void *, struct device *, const char *, void *, const char *, size_t); + typedef unsigned int __kernel_old_dev_t; enum { @@ -110791,6 +116666,7 @@ enum { Lo_unbound = 0, Lo_bound = 1, Lo_rundown = 2, + Lo_deleting = 3, }; struct loop_func_table; @@ -110817,13 +116693,20 @@ struct loop_device { gfp_t old_gfp_mask; spinlock_t lo_lock; int lo_state; - struct kthread_worker worker; - struct task_struct *worker_task; + 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_func_table { @@ -110836,13 +116719,24 @@ struct loop_func_table { }; struct loop_cmd { - struct kthread_work work; + struct list_head list_entry; bool use_aio; atomic_t ref; long int ret; struct kiocb iocb; struct bio_vec *bvec; - struct cgroup_subsys_state *css; + struct cgroup_subsys_state *blkcg_css; + struct cgroup_subsys_state *memcg_css; +}; + +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; + long unsigned int last_ran_at; }; struct compat_loop_info { @@ -110860,6 +116754,96 @@ struct compat_loop_info { char reserved[4]; }; +struct cdrom_device_ops; + +struct cdrom_device_info { + const struct cdrom_device_ops *ops; + struct list_head list; + struct gendisk *disk; + void *handle; + int mask; + int speed; + int capacity; + unsigned int options: 30; + unsigned int mc_flags: 2; + unsigned int vfs_events; + unsigned int ioctl_events; + int use_count; + char name[20]; + __u8 sanyo_slot: 2; + __u8 keeplocked: 1; + __u8 reserved: 5; + int cdda_method; + __u8 last_sense; + __u8 media_written; + short unsigned int mmc3_profile; + int for_data; + int (*exit)(struct cdrom_device_info *); + int mrw_mode_page; +}; + +struct scsi_sense_hdr { + u8 response_code; + u8 sense_key; + u8 asc; + u8 ascq; + u8 byte4; + u8 byte5; + u8 byte6; + u8 additional_length; +}; + +struct cdrom_msf0 { + __u8 minute; + __u8 second; + __u8 frame; +}; + +union cdrom_addr { + struct cdrom_msf0 msf; + int lba; +}; + +struct cdrom_multisession { + union cdrom_addr addr; + __u8 xa_flag; + __u8 addr_format; +}; + +struct cdrom_mcn { + __u8 medium_catalog_number[14]; +}; + +struct packet_command { + unsigned char cmd[12]; + unsigned char *buffer; + unsigned int buflen; + int stat; + struct scsi_sense_hdr *sshdr; + unsigned char data_direction; + int quiet; + int timeout; + void *reserved[1]; +}; + +struct cdrom_device_ops { + int (*open)(struct cdrom_device_info *, int); + void (*release)(struct cdrom_device_info *); + int (*drive_status)(struct cdrom_device_info *, int); + unsigned int (*check_events)(struct cdrom_device_info *, unsigned int, int); + int (*tray_move)(struct cdrom_device_info *, int); + int (*lock_door)(struct cdrom_device_info *, int); + int (*select_speed)(struct cdrom_device_info *, int); + int (*select_disc)(struct cdrom_device_info *, int); + int (*get_last_session)(struct cdrom_device_info *, struct cdrom_multisession *); + int (*get_mcn)(struct cdrom_device_info *, struct cdrom_mcn *); + int (*reset)(struct cdrom_device_info *); + int (*audio_ioctl)(struct cdrom_device_info *, unsigned int, void *); + int (*generic_packet)(struct cdrom_device_info *, struct packet_command *); + int (*read_cdda_bpc)(struct cdrom_device_info *, void *, u32, u32, u8 *); + const int capability; +}; + typedef unsigned int RING_IDX; typedef uint16_t blkif_vdev_t; @@ -110918,7 +116902,7 @@ struct blkif_request { struct blkif_request_other other; struct blkif_request_indirect indirect; } u; -} __attribute__((packed)); +}; struct blkif_response { uint64_t id; @@ -110936,7 +116920,7 @@ struct blkif_sring { RING_IDX req_event; RING_IDX rsp_prod; RING_IDX rsp_event; - uint8_t pad[48]; + uint8_t __pad[48]; union blkif_sring_entry ring[1]; }; @@ -110951,8 +116935,7 @@ enum blkif_state { BLKIF_STATE_DISCONNECTED = 0, BLKIF_STATE_CONNECTED = 1, BLKIF_STATE_SUSPENDED = 2, - BLKIF_STATE_FREEZING = 3, - BLKIF_STATE_FROZEN = 4, + BLKIF_STATE_ERROR = 3, }; struct grant { @@ -110962,10 +116945,11 @@ struct grant { }; enum blk_req_status { - REQ_WAITING = 0, - REQ_DONE = 1, - REQ_ERROR = 2, - REQ_EOPNOTSUPP = 3, + REQ_PROCESSING = 0, + REQ_WAITING = 1, + REQ_DONE = 2, + REQ_ERROR = 3, + REQ_EOPNOTSUPP = 4, }; struct blk_shadow { @@ -111016,7 +117000,9 @@ struct blkfront_info { unsigned int feature_fua: 1; unsigned int feature_discard: 1; unsigned int feature_secdiscard: 1; + unsigned int feature_persistent_parm: 1; unsigned int feature_persistent: 1; + unsigned int bounce: 1; unsigned int discard_granularity; unsigned int discard_alignment; unsigned int max_indirect_segments; @@ -111028,7 +117014,6 @@ struct blkfront_info { struct list_head requests; struct bio_list bio_list; struct list_head info_list; - struct completion wait_backend_disconnected; }; struct setup_rw_req { @@ -111052,6 +117037,11 @@ struct copy_from_grant { char *bvec_data; }; +struct sram_config { + int (*init)(); + bool map_only_reserved; +}; + struct sram_partition { void *base; struct gen_pool *pool; @@ -111061,8 +117051,10 @@ struct sram_partition { }; struct sram_dev { + const struct sram_config *config; struct device *dev; void *virt_base; + bool no_memory_wc; struct gen_pool *pool; struct clk *clk; struct sram_partition *partition; @@ -111073,6 +117065,7 @@ struct sram_reserve { struct list_head list; u32 start; u32 size; + struct resource res; bool export; bool pool; bool protect_exec; @@ -111091,7 +117084,7 @@ struct mfd_cell { int (*resume)(struct platform_device *); void *platform_data; size_t pdata_size; - const struct property_entry *properties; + const struct software_node *swnode; const char *of_compatible; const u64 of_reg; bool use_of_reg; @@ -111464,127 +117457,6 @@ struct lochnagar_config { int npatch; }; -struct arizona_ldo1_pdata { - const struct regulator_init_data *init_data; -}; - -struct arizona_micsupp_pdata { - const struct regulator_init_data *init_data; -}; - -struct arizona_micbias { - int mV; - unsigned int ext_cap: 1; - unsigned int discharge: 1; - unsigned int soft_start: 1; - unsigned int bypass: 1; -}; - -struct arizona_micd_config { - unsigned int src; - unsigned int bias; - bool gpio; -}; - -struct arizona_micd_range { - int max; - int key; -}; - -struct arizona_pdata { - struct gpio_desc *reset; - struct arizona_micsupp_pdata micvdd; - struct arizona_ldo1_pdata ldo1; - int clk32k_src; - unsigned int irq_flags; - int gpio_base; - unsigned int gpio_defaults[5]; - unsigned int max_channels_clocked[3]; - bool jd_gpio5; - bool jd_gpio5_nopull; - bool jd_invert; - bool hpdet_acc_id; - bool hpdet_acc_id_line; - int hpdet_id_gpio; - unsigned int hpdet_channel; - bool micd_software_compare; - unsigned int micd_detect_debounce; - int micd_pol_gpio; - unsigned int micd_bias_start_time; - unsigned int micd_rate; - unsigned int micd_dbtime; - unsigned int micd_timeout; - bool micd_force_micbias; - const struct arizona_micd_range *micd_ranges; - int num_micd_ranges; - struct arizona_micd_config *micd_configs; - int num_micd_configs; - int dmic_ref[4]; - struct arizona_micbias micbias[3]; - int inmode[4]; - int out_mono[6]; - unsigned int out_vol_limit[12]; - unsigned int spk_mute[2]; - unsigned int spk_fmt[2]; - unsigned int hap_act; - int irq_gpio; - unsigned int gpsw; -}; - -enum { - ARIZONA_MCLK1 = 0, - ARIZONA_MCLK2 = 1, - ARIZONA_NUM_MCLK = 2, -}; - -enum arizona_type { - WM5102 = 1, - WM5110 = 2, - WM8997 = 3, - WM8280 = 4, - WM8998 = 5, - WM1814 = 6, - WM1831 = 7, - CS47L24 = 8, -}; - -struct snd_soc_dapm_context; - -struct arizona { - struct regmap *regmap; - struct device *dev; - enum arizona_type type; - unsigned int rev; - int num_core_supplies; - struct regulator_bulk_data core_supplies[2]; - struct regulator *dcvdd; - bool has_fully_powered_off; - struct arizona_pdata pdata; - unsigned int external_dcvdd: 1; - int irq; - struct irq_domain *virq; - struct regmap_irq_chip_data *aod_irq_chip; - struct regmap_irq_chip_data *irq_chip; - bool hpdet_clamp; - unsigned int hp_ena; - struct mutex clk_lock; - int clk32k_ref; - struct clk *mclk[2]; - bool ctrlif_error; - struct snd_soc_dapm_context *dapm; - int tdm_width[3]; - int tdm_slots[3]; - uint16_t dac_comp_coeff; - uint8_t dac_comp_enabled; - struct mutex dac_comp_lock; - struct blocking_notifier_head notifier; -}; - -struct arizona_sysclk_state { - unsigned int fll; - unsigned int sysclk; -}; - struct wm8400_platform_data { int (*platform_init)(struct device *); }; @@ -113913,58 +119785,7 @@ struct max8998_irq_data { int mask; }; -struct max8997_dev___2; - -struct abx500_ops { - int (*get_chip_id)(struct device *); - int (*get_register)(struct device *, u8, u8, u8 *); - int (*set_register)(struct device *, u8, u8, u8); - int (*get_register_page)(struct device *, u8, u8, u8 *, u8); - int (*set_register_page)(struct device *, u8, u8, u8 *, u8); - int (*mask_and_set_register)(struct device *, u8, u8, u8, u8); - int (*event_registers_startup_state_get)(struct device *, u8 *); - int (*startup_irq_enabled)(struct device *, unsigned int); - void (*dump_all_banks)(struct device *); -}; - -struct abx500_device_entry { - struct list_head list; - struct abx500_ops ops; - struct device *dev; -}; - -struct ab3100 { - struct mutex access_mutex; - struct device *dev; - struct i2c_client *i2c_client; - struct i2c_client *testreg_client; - char chip_name[32]; - u8 chip_id; - struct blocking_notifier_head event_subscribers; - u8 startup_events[3]; - bool startup_events_read; -}; - -struct ab3100_platform_data { - struct regulator_init_data reg_constraints[10]; - u8 reg_initvals[12]; - int external_voltage; -}; - -struct ab3100_get_set_reg_priv { - struct ab3100 *ab3100; - bool mode; -}; - -struct ab3100_init_setting { - u8 abreg; - u8 setting; -}; - -struct ab_family_id { - u8 id; - char *name; -}; +struct max8997_dev; struct adp5520_gpio_platform_data { unsigned int gpio_start; @@ -114299,10 +120120,8 @@ struct sec_pmic_dev { struct regmap *regmap_pmic; struct i2c_client *i2c; long unsigned int device_type; - int irq_base; int irq; struct regmap_irq_chip_data *irq_data; - bool wakeup; }; struct sec_regulator_data; @@ -114312,12 +120131,7 @@ struct sec_opmode_data; struct sec_platform_data { struct sec_regulator_data *regulators; struct sec_opmode_data *opmode; - int device_type; int num_regulators; - int irq_base; - int (*cfg_pmic_irq)(); - bool wakeup; - bool buck_voltage_lock; int buck_gpios[3]; int buck_ds[3]; unsigned int buck2_voltage[8]; @@ -114326,32 +120140,11 @@ struct sec_platform_data { bool buck3_gpiodvs; unsigned int buck4_voltage[8]; bool buck4_gpiodvs; - int buck_set1; - int buck_set2; - int buck_set3; - int buck2_enable; - int buck3_enable; - int buck4_enable; int buck_default_idx; - int buck2_default_idx; - int buck3_default_idx; - int buck4_default_idx; int buck_ramp_delay; - int buck2_ramp_delay; - int buck34_ramp_delay; - int buck5_ramp_delay; - int buck16_ramp_delay; - int buck7810_ramp_delay; - int buck9_ramp_delay; - int buck24_ramp_delay; - int buck3_ramp_delay; - int buck7_ramp_delay; - int buck8910_ramp_delay; - bool buck1_ramp_enable; bool buck2_ramp_enable; bool buck3_ramp_enable; bool buck4_ramp_enable; - bool buck6_ramp_enable; int buck2_init; int buck3_init; int buck4_init; @@ -115299,6 +121092,11 @@ enum as3722_irq { AS3722_IRQ_MAX = 32, }; +struct altr_a10sr { + struct device *dev; + struct regmap *regmap; +}; + struct altr_sysmgr { struct regmap *regmap; }; @@ -115562,14 +121360,6 @@ struct nd_region { struct nd_mapping mapping[0]; }; -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_size { __u32 status; __u32 config_size; @@ -115618,6 +121408,7 @@ struct nd_cmd_pkg { enum nvdimm_event { NVDIMM_REVALIDATE_POISON = 0, + NVDIMM_REVALIDATE_REGION = 1, }; enum nvdimm_claim_class { @@ -115633,7 +121424,7 @@ struct nd_device_driver { struct device_driver drv; long unsigned int type; int (*probe)(struct device *); - int (*remove)(struct device *); + void (*remove)(struct device *); void (*shutdown)(struct device *); void (*notify)(struct device *, enum nvdimm_event); }; @@ -115756,6 +121547,14 @@ struct nd_blk_region { struct nd_region nd_region; }; +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_label_id { char id[50]; }; @@ -115901,7 +121700,6 @@ enum alloc_loc { struct btt { struct gendisk *btt_disk; - struct request_queue *btt_queue; struct list_head arena_list; struct dentry *debugfs_dir; struct nd_btt *nd_btt; @@ -116032,7 +121830,7 @@ struct dax_device_driver { struct list_head ids; int match_always; int (*probe)(struct dev_dax *); - int (*remove)(struct dev_dax *); + void (*remove)(struct dev_dax *); }; struct dax_id { @@ -116152,8 +121950,8 @@ struct dma_buf { void *priv; struct dma_resv *resv; wait_queue_head_t poll; - struct dma_buf_poll_cb_t cb_excl; - struct dma_buf_poll_cb_t cb_shared; + struct dma_buf_poll_cb_t cb_in; + struct dma_buf_poll_cb_t cb_out; }; struct dma_buf_attach_ops; @@ -116261,12 +122059,14 @@ struct dma_fence_array { struct dma_fence_chain { struct dma_fence base; - spinlock_t lock; struct dma_fence *prev; u64 prev_seqno; struct dma_fence *fence; - struct dma_fence_cb cb; - struct irq_work work; + union { + struct dma_fence_cb cb; + struct irq_work work; + }; + spinlock_t lock; }; enum seqno_fence_condition { @@ -116285,7 +122085,7 @@ struct seqno_fence { struct dma_heap; struct dma_heap_ops { - int (*allocate)(struct dma_heap *, long unsigned int, long unsigned int, long unsigned int); + struct dma_buf * (*allocate)(struct dma_heap *, long unsigned int, long unsigned int, long unsigned int); }; struct dma_heap { @@ -116449,6 +122249,56 @@ struct udmabuf { struct miscdevice *device; }; +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, +}; + +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_TARGET_FAILURE = 16, + DID_NEXUS_FAILURE = 17, + DID_ALLOC_FAILURE = 18, + DID_MEDIUM_ERROR = 19, + DID_TRANSPORT_MARGINAL = 20, +}; + +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, +}; + typedef __u64 blist_flags_t; enum scsi_device_state { @@ -116480,7 +122330,7 @@ struct scsi_device { struct request_queue *request_queue; struct list_head siblings; struct list_head same_target_siblings; - atomic_t device_busy; + struct sbitmap budget_map; atomic_t device_blocked; atomic_t restarts; spinlock_t list_lock; @@ -116511,7 +122361,6 @@ struct scsi_device { struct scsi_vpd *vpd_pg83; struct scsi_vpd *vpd_pg80; struct scsi_vpd *vpd_pg89; - unsigned char current_tag; struct scsi_target *sdev_target; blist_flags_t sdev_bflags; unsigned int eh_timeout; @@ -116562,6 +122411,8 @@ struct scsi_device { 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; bool offline_already; atomic_t disk_events_disable_depth; long unsigned int supported_events[1]; @@ -116580,6 +122431,9 @@ struct scsi_device { 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; @@ -116608,6 +122462,7 @@ struct Scsi_Host { 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; @@ -116636,8 +122491,8 @@ struct Scsi_Host { long unsigned int dma_boundary; long unsigned int virt_boundary_mask; unsigned int nr_hw_queues; + unsigned int nr_maps; unsigned int active_mode: 2; - unsigned int unchecked_isa_dma: 1; unsigned int host_self_blocked: 1; unsigned int reverse_ordering: 1; unsigned int tmf_in_progress: 1; @@ -116697,6 +122552,83 @@ struct scsi_target { long unsigned int starget_data[0]; }; +struct scsi_host_cmd_pool; + +struct scsi_cmnd; + +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 *); + int (*compat_ioctl)(struct scsi_device *, unsigned int, void *); + 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 *, long unsigned int); + void (*scan_start)(struct Scsi_Host *); + int (*change_queue_depth)(struct scsi_device *, int); + int (*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 blk_eh_timer_return (*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; + struct proc_dir_entry *proc_dir; + int can_queue; + int this_id; + short unsigned int sg_tablesize; + short unsigned int sg_prot_tablesize; + unsigned int max_sectors; + unsigned int max_segment_size; + long unsigned int dma_boundary; + long unsigned int virt_boundary_mask; + short int cmd_per_lun; + unsigned char present; + 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 max_host_blocked; + struct device_attribute **shost_attrs; + struct device_attribute **sdev_attrs; + const struct attribute_group **sdev_groups; + u64 vendor_id; + struct scsi_host_cmd_pool *cmd_pool; + int rpm_autosuspend_delay; +}; + +struct scsi_request { + unsigned char __cmd[16]; + unsigned char *cmd; + short unsigned int cmd_len; + int result; + unsigned int sense_len; + unsigned int resid_len; + int retries; + void *sense; +}; + struct scsi_data_buffer { struct sg_table table; unsigned int length; @@ -116722,6 +122654,7 @@ struct scsi_cmnd { struct delayed_work abort_work; struct callback_head rcu; int eh_eflags; + int budget_token; long unsigned int jiffies_at_alloc; int retries; int allowed; @@ -116735,7 +122668,6 @@ struct scsi_cmnd { struct scsi_data_buffer *prot_sdb; unsigned int underflow; unsigned int transfersize; - struct request *request; unsigned char *sense_buffer; void (*scsi_done)(struct scsi_cmnd *); struct scsi_pointer SCp; @@ -116743,7 +122675,6 @@ struct scsi_cmnd { int result; int flags; long unsigned int state; - unsigned char tag; unsigned int extra_len; }; @@ -116767,69 +122698,6 @@ struct scsi_driver { void (*eh_reset)(struct scsi_cmnd *); }; -struct scsi_host_cmd_pool; - -struct scsi_host_template { - struct module *module; - const char *name; - const char * (*info)(struct Scsi_Host *); - int (*ioctl)(struct scsi_device *, unsigned int, void *); - int (*compat_ioctl)(struct scsi_device *, unsigned int, void *); - int (*init_cmd_priv)(struct Scsi_Host *, struct scsi_cmnd *); - int (*exit_cmd_priv)(struct Scsi_Host *, struct scsi_cmnd *); - int (*queuecommand)(struct Scsi_Host *, struct scsi_cmnd *); - void (*commit_rqs)(struct Scsi_Host *, u16); - 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 *, long unsigned int); - void (*scan_start)(struct Scsi_Host *); - int (*change_queue_depth)(struct scsi_device *, int); - int (*map_queues)(struct Scsi_Host *); - 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 blk_eh_timer_return (*eh_timed_out)(struct scsi_cmnd *); - int (*host_reset)(struct Scsi_Host *, int); - const char *proc_name; - struct proc_dir_entry *proc_dir; - int can_queue; - int this_id; - short unsigned int sg_tablesize; - short unsigned int sg_prot_tablesize; - unsigned int max_sectors; - unsigned int max_segment_size; - long unsigned int dma_boundary; - long unsigned int virt_boundary_mask; - short int cmd_per_lun; - unsigned char present; - int tag_alloc_policy; - unsigned int track_queue_depth: 1; - unsigned int supported_mode: 2; - unsigned int unchecked_isa_dma: 1; - unsigned int emulated: 1; - unsigned int skip_settle_delay: 1; - unsigned int no_write_same: 1; - unsigned int host_tagset: 1; - unsigned int max_host_blocked; - struct device_attribute **shost_attrs; - struct device_attribute **sdev_attrs; - const struct attribute_group **sdev_groups; - u64 vendor_id; - unsigned int cmd_size; - struct scsi_host_cmd_pool *cmd_pool; - int rpm_autosuspend_delay; -}; - struct trace_event_raw_scsi_dispatch_cmd_start { struct trace_entry ent; unsigned int host_no; @@ -116926,18 +122794,157 @@ struct scsi_host_busy_iter_data { void *priv; }; +struct request_sense; + +struct cdrom_generic_command { + unsigned char cmd[12]; + unsigned char *buffer; + unsigned int buflen; + int stat; + struct request_sense *sense; + unsigned char data_direction; + int quiet; + int timeout; + union { + void *reserved[1]; + void *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]; +}; + +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, +}; + +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; + short unsigned int iovec_count; + unsigned int dxfer_len; + void *dxferp; + unsigned char *cmdp; + void *sbp; + unsigned int timeout; + unsigned int flags; + int pack_id; + void *usr_ptr; + unsigned char status; + unsigned char masked_status; + unsigned char msg_status; + unsigned char sb_len_wr; + short unsigned int host_status; + short unsigned int driver_status; + int resid; + unsigned int duration; + unsigned int info; +}; + +struct compat_sg_io_hdr { + compat_int_t interface_id; + compat_int_t dxfer_direction; + unsigned char cmd_len; + unsigned char mx_sb_len; + short unsigned int 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; + short unsigned int host_status; + short unsigned int driver_status; + compat_int_t resid; + compat_uint_t duration; + compat_uint_t 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; +}; + +enum { + OMAX_SB_LEN = 16, +}; + typedef void (*activate_complete)(void *, int); struct scsi_device_handler { struct list_head list; struct module *module; const char *name; - int (*check_sense)(struct scsi_device *, struct scsi_sense_hdr *); + 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 *); @@ -116960,14 +122967,6 @@ struct scsi_eh_save { struct scatterlist sense_sgl; }; -struct scsi_varlen_cdb_hdr { - __u8 opcode; - __u8 control; - __u8 misc[5]; - __u8 additional_cdb_length; - __be16 service_action; -}; - struct scsi_mode_data { __u32 length; __u16 block_descriptor_length; @@ -117078,6 +123077,14 @@ struct scsi_nl_hdr { __u16 msglen; }; +struct scsi_varlen_cdb_hdr { + __u8 opcode; + __u8 control; + __u8 misc[5]; + __u8 additional_cdb_length; + __be16 service_action; +}; + enum { SCSI_DH_OK = 0, SCSI_DH_DEV_FAILED = 1, @@ -117141,14 +123148,14 @@ enum { SD_ZERO_WS10_UNMAP = 3, }; -struct opal_dev___2; +struct opal_dev; struct scsi_disk { struct scsi_driver *driver; struct scsi_device *device; struct device dev; struct gendisk *disk; - struct opal_dev___2 *opal_dev; + struct opal_dev *opal_dev; u32 nr_zones; u32 rev_nr_zones; u32 zone_blocks; @@ -117271,6 +123278,8 @@ struct scsi_cd { struct gendisk *disk; }; +typedef struct scsi_cd Scsi_CD; + struct cdrom_ti { __u8 cdti_trk0; __u8 cdti_ind0; @@ -117292,8 +123301,6 @@ struct cdrom_tocentry { __u8 cdte_datamode; }; -typedef struct scsi_cd Scsi_CD; - struct ccs_modesel_head { __u8 _r1; __u8 medium; @@ -117417,7 +123424,7 @@ struct sg_device { bool exclude; int open_cnt; char sgdebug; - struct gendisk *disk; + char name[32]; struct cdev *cdev; struct kref d_ref; }; @@ -117442,1916 +123449,6 @@ struct sg_proc_deviter { size_t max; }; -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_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; - __u32 data_len; - __u32 cdw10; - __u32 cdw11; - __u32 cdw12; - __u32 cdw13; - __u32 cdw14; - __u32 cdw15; - __u32 timeout_ms; - __u32 rsvd2; - __u64 result; -}; - -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]; -}; - -enum { - NVME_PS_FLAGS_MAX_POWER_SCALE = 1, - NVME_PS_FLAGS_NON_OP_STATE = 2, -}; - -enum nvme_ctrl_attr { - NVME_CTRL_ATTR_HID_128_BIT = 1, - NVME_CTRL_ATTR_TBKAS = 64, -}; - -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[28]; - __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[244]; - struct nvme_id_power_state psd[32]; - __u8 vs[1024]; -}; - -enum { - 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_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, -}; - -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[16]; - __u8 rsvd192[192]; - __u8 vs[3712]; -}; - -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_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_CSI_NVM = 0, - NVME_CSI_ZNS = 2, -}; - -enum { - NVME_DIR_IDENTIFY = 0, - NVME_DIR_STREAMS = 1, - NVME_DIR_SND_ID_OP_ENABLE = 1, - NVME_DIR_SND_ST_OP_REL_ID = 1, - NVME_DIR_SND_ST_OP_REL_RSC = 2, - NVME_DIR_RCV_ID_OP_PARAM = 1, - NVME_DIR_RCV_ST_OP_PARAM = 1, - NVME_DIR_RCV_ST_OP_STATUS = 2, - NVME_DIR_RCV_ST_OP_RESOURCE = 3, - NVME_DIR_ENDIR = 1, -}; - -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_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, -}; - -struct nvme_ns_id_desc { - __u8 nidt; - __u8 nidl; - __le16 reserved; -}; - -enum { - NVME_NIDT_EUI64 = 1, - NVME_NIDT_NGUID = 2, - NVME_NIDT_UUID = 3, - NVME_NIDT_CSI = 4, -}; - -struct nvme_fw_slot_info_log { - __u8 afi; - __u8 rsvd1[7]; - __le64 frs[7]; - __u8 rsvd64[448]; -}; - -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 = 196608, - NVME_CMD_EFFECTS_UUID_SEL = 524288, -}; - -struct nvme_effects_log { - __le32 acs[256]; - __le32 iocs[256]; - __u8 resv[2048]; -}; - -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, -}; - -struct nvme_ana_rsp_hdr { - __le64 chgcnt; - __le16 ngrps; - __le16 rsvd10[3]; -}; - -enum { - NVME_AER_ERROR = 0, - NVME_AER_SMART = 1, - NVME_AER_NOTICE = 2, - NVME_AER_CSS = 6, - NVME_AER_VS = 7, -}; - -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_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, -}; - -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; -}; - -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, -}; - -struct nvme_common_command { - __u8 opcode; - __u8 flags; - __u16 command_id; - __le32 nsid; - __le32 cdw2[2]; - __le64 metadata; - union nvme_data_ptr dptr; - __le32 cdw10; - __le32 cdw11; - __le32 cdw12; - __le32 cdw13; - __le32 cdw14; - __le32 cdw15; -}; - -struct nvme_rw_command { - __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; -}; - -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, -}; - -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]; -}; - -enum { - NVME_DSMGMT_IDR = 1, - NVME_DSMGMT_IDW = 2, - NVME_DSMGMT_AD = 4, -}; - -struct nvme_dsm_range { - __le32 cattr; - __le32 nlb; - __le64 slba; -}; - -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; -}; - -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, -}; - -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_feat_auto_pst { - __le64 entries[32]; -}; - -struct nvme_feat_host_behavior { - __u8 acre; - __u8 resv1[511]; -}; - -enum { - NVME_ENABLE_ACRE = 1, -}; - -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, -}; - -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_abort_cmd { - __u8 opcode; - __u8 flags; - __u16 command_id; - __u32 rsvd1[9]; - __le16 sqid; - __u16 cid; - __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_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 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]; -}; - -enum nvmf_fabrics_opcode { - nvme_fabrics_command = 127, -}; - -enum nvmf_capsule_command { - nvme_fabrics_type_property_set = 0, - nvme_fabrics_type_connect = 1, - nvme_fabrics_type_property_get = 4, -}; - -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 nvme_dbbuf { - __u8 opcode; - __u8 flags; - __u16 command_id; - __u32 rsvd1[5]; - __le64 prp1; - __le64 prp2; - __u32 rsvd12[6]; -}; - -struct streams_directive_params { - __le16 msl; - __le16 nssa; - __le16 nsso; - __u8 rsvd[10]; - __le32 sws; - __le16 sgs; - __le16 nsa; - __le16 nso; - __u8 rsvd2[6]; -}; - -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 nvme_dbbuf dbbuf; - struct nvme_directive_cmd directive; - }; -}; - -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_SGL_INVALID_OFFSET = 22, - NVME_SC_SGL_INVALID_SUBTYPE = 23, - NVME_SC_SANITIZE_FAILED = 28, - NVME_SC_SANITIZE_IN_PROGRESS = 29, - NVME_SC_NS_WRITE_PROTECTED = 32, - NVME_SC_CMD_INTERRUPTED = 33, - NVME_SC_LBA_RANGE = 128, - NVME_SC_CAP_EXCEEDED = 129, - NVME_SC_NS_NOT_READY = 130, - NVME_SC_RESERVATION_CONFLICT = 131, - 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_BP_WRITE_PROHIBITED = 286, - NVME_SC_PMR_SAN_PROHIBITED = 291, - 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_ANA_PERSISTENT_LOSS = 769, - NVME_SC_ANA_INACCESSIBLE = 770, - NVME_SC_ANA_TRANSITION = 771, - NVME_SC_HOST_PATH_ERROR = 880, - NVME_SC_HOST_ABORTED_CMD = 881, - NVME_SC_CRD = 6144, - NVME_SC_DNR = 16384, -}; - -union nvme_result { - __le16 u16; - __le32 u32; - __le64 u64; -}; - -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_LIGHTNVM = 64, - 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, -}; - -struct nvme_ctrl; - -struct nvme_request { - struct nvme_command *cmd; - union nvme_result result; - u8 genctr; - u8 retries; - u8 flags; - u16 status; - struct nvme_ctrl *ctrl; -}; - -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_fault_inject {}; - -struct nvme_ctrl_ops; - -struct nvme_subsystem; - -struct nvmf_ctrl_options; - -struct nvme_ctrl { - bool comp_seen; - enum nvme_ctrl_state state; - bool identified; - 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___2 *opal_dev; - char name[12]; - u16 cntlid; - u32 ctrl_config; - u16 mtfa; - u32 queue_count; - u64 cap; - u32 max_hw_sectors; - u32 max_segments; - u32 max_integrity_segments; - u32 max_zone_append; - u16 crdt[3]; - u16 oncs; - u16 oacs; - u16 nssa; - u16 nr_streams; - 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; - long unsigned int 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; - struct work_struct fw_act_work; - long unsigned int 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; - u32 hmpre; - u32 hmmin; - u32 hmminds; - u16 hmmaxd; - u32 ioccsz; - u32 iorcsz; - u16 icdoff; - u16 maxcmd; - int nr_reconnects; - long unsigned int flags; - struct nvmf_ctrl_options *opts; - struct page *discard_page; - long unsigned int discard_page_busy; - struct nvme_fault_inject fault_inject; -}; - -enum { - NVME_REQ_CANCELLED = 1, - NVME_REQ_USERCMD = 2, -}; - -struct nvme_ctrl_ops { - const char *name; - struct module *module; - unsigned int flags; - 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 *); - int (*get_address)(struct nvme_ctrl *, char *, int); -}; - -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; - u16 vendor_id; - u16 awupf; - struct ida ns_ida; - enum nvme_iopolicy iopolicy; -}; - -struct nvmf_host; - -struct nvmf_ctrl_options { - unsigned int mask; - char *transport; - char *subsysnqn; - char *traddr; - char *trsvcid; - char *host_traddr; - 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; - int max_reconnects; - 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 nvme_ns_ids { - u8 eui64[8]; - u8 nguid[16]; - uuid_t uuid; - u8 csi; -}; - -struct nvme_ns; - -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 gendisk *disk; - struct bio_list requeue_list; - spinlock_t requeue_lock; - struct work_struct requeue_work; - struct mutex lock; - long unsigned int flags; - struct nvme_ns *current_path[0]; -}; - -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 nvm_dev *ndev; - struct kref kref; - struct nvme_ns_head *head; - int lba_shift; - u16 ms; - u16 sgs; - u32 sws; - u8 pi_type; - u64 zsze; - long unsigned int features; - long unsigned int flags; - struct nvme_fault_inject fault_inject; -}; - -enum nvme_ns_features { - NVME_NS_EXT_LBAS = 1, - NVME_NS_METADATA_SUPPORTED = 2, -}; - -struct nvmf_host { - struct kref ref; - struct list_head list; - char nqn[223]; - uuid_t id; -}; - -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]; -}; - -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 {}; - -typedef void (*btf_trace_nvme_setup_cmd)(void *, struct request *, struct nvme_command *); - -typedef void (*btf_trace_nvme_complete_rq)(void *, struct request *); - -typedef void (*btf_trace_nvme_async_event)(void *, struct nvme_ctrl *, u32); - -typedef void (*btf_trace_nvme_sq)(void *, struct request *, __le16, int); - -enum nvme_disposition { - COMPLETE = 0, - RETRY = 1, - FAILOVER = 2, -}; - -struct nvme_core_quirk_entry { - u16 vid; - const char *mn; - const char *fr; - long unsigned int quirks; -}; - -struct nvme_ana_group_desc { - __le32 grpid; - __le32 nnsids; - __le64 chgcnt; - __u8 state; - __u8 rsvd17[15]; - __le32 nsids[0]; -}; - -struct nvm_user_vio { - __u8 opcode; - __u8 flags; - __u16 control; - __u16 nppas; - __u16 rsvd; - __u64 metadata; - __u64 addr; - __u64 ppa_list; - __u32 metadata_len; - __u32 data_len; - __u64 status; - __u32 result; - __u32 rsvd3[3]; -}; - -struct nvm_passthru_vio { - __u8 opcode; - __u8 flags; - __u8 rsvd[2]; - __u32 nsid; - __u32 cdw2; - __u32 cdw3; - __u64 metadata; - __u64 addr; - __u32 metadata_len; - __u32 data_len; - __u64 ppa_list; - __u16 nppas; - __u16 control; - __u32 cdw13; - __u32 cdw14; - __u32 cdw15; - __u64 status; - __u32 result; - __u32 timeout_ms; -}; - -enum nvme_nvm_admin_opcode { - nvme_nvm_admin_identity = 226, - nvme_nvm_admin_get_bb_tbl = 242, - nvme_nvm_admin_set_bb_tbl = 241, -}; - -enum nvme_nvm_log_page { - NVME_NVM_LOG_REPORT_CHUNK = 202, -}; - -struct nvme_nvm_ph_rw { - __u8 opcode; - __u8 flags; - __u16 command_id; - __le32 nsid; - __u64 rsvd2; - __le64 metadata; - __le64 prp1; - __le64 prp2; - __le64 spba; - __le16 length; - __le16 control; - __le32 dsmgmt; - __le64 resv; -}; - -struct nvme_nvm_erase_blk { - __u8 opcode; - __u8 flags; - __u16 command_id; - __le32 nsid; - __u64 rsvd[2]; - __le64 prp1; - __le64 prp2; - __le64 spba; - __le16 length; - __le16 control; - __le32 dsmgmt; - __le64 resv; -}; - -struct nvme_nvm_identity { - __u8 opcode; - __u8 flags; - __u16 command_id; - __le32 nsid; - __u64 rsvd[2]; - __le64 prp1; - __le64 prp2; - __u32 rsvd11[6]; -}; - -struct nvme_nvm_getbbtbl { - __u8 opcode; - __u8 flags; - __u16 command_id; - __le32 nsid; - __u64 rsvd[2]; - __le64 prp1; - __le64 prp2; - __le64 spba; - __u32 rsvd4[4]; -}; - -struct nvme_nvm_setbbtbl { - __u8 opcode; - __u8 flags; - __u16 command_id; - __le32 nsid; - __le64 rsvd[2]; - __le64 prp1; - __le64 prp2; - __le64 spba; - __le16 nlb; - __u8 value; - __u8 rsvd3; - __u32 rsvd4[3]; -}; - -struct nvme_nvm_command { - union { - struct nvme_common_command common; - struct nvme_nvm_ph_rw ph_rw; - struct nvme_nvm_erase_blk erase; - struct nvme_nvm_identity identity; - struct nvme_nvm_getbbtbl get_bb; - struct nvme_nvm_setbbtbl set_bb; - }; -}; - -struct nvme_nvm_id12_grp { - __u8 mtype; - __u8 fmtype; - __le16 res16; - __u8 num_ch; - __u8 num_lun; - __u8 num_pln; - __u8 rsvd1; - __le16 num_chk; - __le16 num_pg; - __le16 fpg_sz; - __le16 csecs; - __le16 sos; - __le16 rsvd2; - __le32 trdt; - __le32 trdm; - __le32 tprt; - __le32 tprm; - __le32 tbet; - __le32 tbem; - __le32 mpos; - __le32 mccap; - __le16 cpar; - __u8 reserved[906]; -}; - -struct nvme_nvm_id12_addrf { - __u8 ch_offset; - __u8 ch_len; - __u8 lun_offset; - __u8 lun_len; - __u8 pln_offset; - __u8 pln_len; - __u8 blk_offset; - __u8 blk_len; - __u8 pg_offset; - __u8 pg_len; - __u8 sec_offset; - __u8 sec_len; - __u8 res[4]; -}; - -struct nvme_nvm_id12 { - __u8 ver_id; - __u8 vmnt; - __u8 cgrps; - __u8 res; - __le32 cap; - __le32 dom; - struct nvme_nvm_id12_addrf ppaf; - __u8 resv[228]; - struct nvme_nvm_id12_grp grp; - __u8 resv2[2880]; -}; - -struct nvme_nvm_bb_tbl { - __u8 tblid[4]; - __le16 verid; - __le16 revid; - __le32 rvsd1; - __le32 tblks; - __le32 tfact; - __le32 tgrown; - __le32 tdresv; - __le32 thresv; - __le32 rsvd2[8]; - __u8 blk[0]; -}; - -struct nvme_nvm_id20_addrf { - __u8 grp_len; - __u8 pu_len; - __u8 chk_len; - __u8 lba_len; - __u8 resv[4]; -}; - -struct nvme_nvm_id20 { - __u8 mjr; - __u8 mnr; - __u8 resv[6]; - struct nvme_nvm_id20_addrf lbaf; - __le32 mccap; - __u8 resv2[12]; - __u8 wit; - __u8 resv3[31]; - __le16 num_grp; - __le16 num_pu; - __le32 num_chk; - __le32 clba; - __u8 resv4[52]; - __le32 ws_min; - __le32 ws_opt; - __le32 mw_cunits; - __le32 maxoc; - __le32 maxocpu; - __u8 resv5[44]; - __le32 trdt; - __le32 trdm; - __le32 twrt; - __le32 twrm; - __le32 tcrst; - __le32 tcrsm; - __u8 resv6[40]; - __u8 resv7[2816]; - __u8 vs[1024]; -}; - -struct nvme_nvm_chk_meta { - __u8 state; - __u8 type; - __u8 wi; - __u8 rsvd[5]; - __le64 slba; - __le64 cnlb; - __le64 wp; -}; - -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[16]; - __u8 rsvd3072[768]; - __u8 vs[256]; -}; - -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]; -}; - -enum { - NVME_ZONE_TYPE_SEQWRITE_REQ = 2, -}; - -struct nvme_zone_report { - __le64 nr_zones; - __u8 resv8[56]; - struct nvme_zone_descriptor entries[0]; -}; - -enum { - NVME_ZRA_ZONE_REPORT = 0, - NVME_ZRASF_ZONE_REPORT_ALL = 0, - NVME_REPORT_ZONE_PARTIAL = 1, -}; - -enum hwmon_sensor_types { - hwmon_chip = 0, - hwmon_temp = 1, - hwmon_in = 2, - hwmon_curr = 3, - hwmon_power = 4, - hwmon_energy = 5, - hwmon_humidity = 6, - hwmon_fan = 7, - hwmon_pwm = 8, - hwmon_intrusion = 9, - hwmon_max = 10, -}; - -enum hwmon_chip_attributes { - hwmon_chip_temp_reset_history = 0, - hwmon_chip_in_reset_history = 1, - hwmon_chip_curr_reset_history = 2, - hwmon_chip_power_reset_history = 3, - hwmon_chip_register_tz = 4, - hwmon_chip_update_interval = 5, - hwmon_chip_alarms = 6, - hwmon_chip_samples = 7, - hwmon_chip_curr_samples = 8, - hwmon_chip_in_samples = 9, - hwmon_chip_power_samples = 10, - hwmon_chip_temp_samples = 11, -}; - -enum hwmon_temp_attributes { - hwmon_temp_enable = 0, - hwmon_temp_input = 1, - hwmon_temp_type = 2, - hwmon_temp_lcrit = 3, - hwmon_temp_lcrit_hyst = 4, - hwmon_temp_min = 5, - hwmon_temp_min_hyst = 6, - hwmon_temp_max = 7, - hwmon_temp_max_hyst = 8, - hwmon_temp_crit = 9, - hwmon_temp_crit_hyst = 10, - hwmon_temp_emergency = 11, - hwmon_temp_emergency_hyst = 12, - hwmon_temp_alarm = 13, - hwmon_temp_lcrit_alarm = 14, - hwmon_temp_min_alarm = 15, - hwmon_temp_max_alarm = 16, - hwmon_temp_crit_alarm = 17, - hwmon_temp_emergency_alarm = 18, - hwmon_temp_fault = 19, - hwmon_temp_offset = 20, - hwmon_temp_label = 21, - hwmon_temp_lowest = 22, - hwmon_temp_highest = 23, - hwmon_temp_reset_history = 24, - hwmon_temp_rated_min = 25, - hwmon_temp_rated_max = 26, -}; - -struct hwmon_ops { - umode_t (*is_visible)(const void *, enum hwmon_sensor_types, u32, int); - int (*read)(struct device *, enum hwmon_sensor_types, u32, int, long int *); - int (*read_string)(struct device *, enum hwmon_sensor_types, u32, int, const char **); - int (*write)(struct device *, enum hwmon_sensor_types, u32, int, long int); -}; - -struct hwmon_channel_info { - enum hwmon_sensor_types type; - const u32 *config; -}; - -struct hwmon_chip_info { - const struct hwmon_ops *ops; - const struct hwmon_channel_info **info; -}; - -struct nvme_smart_log { - __u8 critical_warning; - __u8 temperature[2]; - __u8 avail_spare; - __u8 spare_thresh; - __u8 percent_used; - __u8 endu_grp_crit_warn_sumry; - __u8 rsvd7[25]; - __u8 data_units_read[16]; - __u8 data_units_written[16]; - __u8 host_reads[16]; - __u8 host_writes[16]; - __u8 ctrl_busy_time[16]; - __u8 power_cycles[16]; - __u8 power_on_hours[16]; - __u8 unsafe_shutdowns[16]; - __u8 media_errors[16]; - __u8 num_err_log_entries[16]; - __le32 warning_temp_time; - __le32 critical_comp_time; - __le16 temp_sensor[8]; - __le32 thm_temp1_trans_count; - __le32 thm_temp2_trans_count; - __le32 thm_temp1_total_time; - __le32 thm_temp2_total_time; - __u8 rsvd232[280]; -}; - -enum { - NVME_SMART_CRIT_SPARE = 1, - NVME_SMART_CRIT_TEMPERATURE = 2, - NVME_SMART_CRIT_RELIABILITY = 4, - NVME_SMART_CRIT_MEDIA = 8, - NVME_SMART_CRIT_VOLATILE_MEMORY = 16, -}; - -enum { - NVME_TEMP_THRESH_MASK = 65535, - NVME_TEMP_THRESH_SELECT_SHIFT = 16, - NVME_TEMP_THRESH_TYPE_UNDER = 1048576, -}; - -struct nvme_hwmon_data { - struct nvme_ctrl *ctrl; - struct nvme_smart_log log; - struct mutex read_lock; -}; - -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, -}; - -enum { - NVME_HOST_MEM_ENABLE = 1, - NVME_HOST_MEM_RETURN = 2, -}; - -struct nvme_host_mem_buf_desc { - __le64 addr; - __le32 size; - __u32 rsvd; -}; - -struct nvme_completion { - union nvme_result result; - __le16 sq_head; - __le16 sq_id; - __u16 command_id; - __le16 status; -}; - -struct nvme_queue; - -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___2 *prp_page_pool; - struct dma_pool___2 *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; - long unsigned int bar_mapped_size; - struct work_struct remove_work; - struct mutex shutdown_lock; - bool subsystem; - u64 cmb_size; - bool cmb_use_sqes; - u32 cmbsz; - u32 cmbloc; - struct nvme_ctrl ctrl; - u32 last_ps; - mempool_t *iod_mempool; - u32 *dbbuf_dbs; - dma_addr_t dbbuf_dbs_dma_addr; - u32 *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_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; - long unsigned int flags; - u32 *dbbuf_sq_db; - u32 *dbbuf_cq_db; - u32 *dbbuf_sq_ei; - u32 *dbbuf_cq_ei; - struct completion delete_done; -}; - -struct nvme_iod { - struct nvme_request req; - struct nvme_queue *nvmeq; - bool use_sgl; - int aborted; - int npages; - int nents; - dma_addr_t first_dma; - unsigned int dma_len; - dma_addr_t meta_dma; - struct scatterlist *sg; -}; - enum { ATA_MAX_DEVICES = 2, ATA_MAX_PRD = 256, @@ -119842,6 +123939,7 @@ enum { ATA_DFLAG_ACPI_DISABLED = 268435456, ATA_DFLAG_D_SENSE = 536870912, ATA_DFLAG_ZAC = 1073741824, + ATA_DFLAG_FEATURES_MASK = 202899712, ATA_DEV_UNKNOWN = 0, ATA_DEV_ATA = 1, ATA_DEV_ATA_UNSUP = 2, @@ -119980,7 +124078,7 @@ enum { ATA_EH_PMP_TRIES = 5, ATA_EH_PMP_LINK_TRIES = 3, SATA_PMP_RW_TIMEOUT = 3000, - ATA_EH_CMD_TIMEOUT_TABLE_SIZE = 6, + ATA_EH_CMD_TIMEOUT_TABLE_SIZE = 7, ATA_HORKAGE_DIAGNOSTIC = 1, ATA_HORKAGE_NODMA = 2, ATA_HORKAGE_NONCQ = 4, @@ -120007,6 +124105,7 @@ enum { ATA_HORKAGE_NOTRIM = 16777216, ATA_HORKAGE_MAX_SEC_1024 = 33554432, ATA_HORKAGE_MAX_TRIM_128M = 67108864, + ATA_HORKAGE_NO_NCQ_ON_ATI = 134217728, ATA_DMA_MASK_ATA = 1, ATA_DMA_MASK_ATAPI = 2, ATA_DMA_MASK_CFA = 4, @@ -120077,13 +124176,19 @@ struct ata_taskfile { u8 hob_lbal; u8 hob_lbam; u8 hob_lbah; - u8 feature; + union { + u8 error; + u8 feature; + }; u8 nsect; u8 lbal; u8 lbam; u8 lbah; u8 device; - u8 command; + union { + u8 status; + u8 command; + }; u32 auxiliary; }; @@ -120138,7 +124243,7 @@ struct ata_eh_info { struct ata_eh_context { struct ata_eh_info i; int tries[2]; - int cmd_timeout_idx[12]; + int cmd_timeout_idx[14]; unsigned int classes[2]; unsigned int did_probe_mask; unsigned int unloaded_mask; @@ -120186,8 +124291,6 @@ struct ata_device { u16 cylinders; u16 heads; u16 sectors; - long: 16; - long: 64; long: 64; long: 64; long: 64; @@ -120225,8 +124328,6 @@ struct ata_link { struct ata_eh_info eh_info; struct ata_eh_context eh_context; long: 64; - long: 64; - long: 64; struct ata_device device[2]; long unsigned int last_lpm_change; long: 64; @@ -120416,8 +124517,6 @@ struct ata_port { int em_message_type; void *private_data; struct ata_acpi_gtm __acpi_init_gtm; - long: 32; - long: 64; long: 64; long: 64; long: 64; @@ -120884,7 +124983,7 @@ enum { ICH_MAP = 144, PCS_6 = 146, PCS_7 = 148, - EM_MAX_SLOTS = 8, + EM_MAX_SLOTS = 15, EM_MAX_RETRY = 5, EM_CTL_RST = 512, EM_CTL_TM = 256, @@ -120900,7 +124999,7 @@ enum { EM_MSG_TYPE_SAFTE = 2, EM_MSG_TYPE_SES2 = 4, EM_MSG_TYPE_SGPIO = 8, -}; +} __attribute__((mode(word))); struct ahci_host_priv { unsigned int flags; @@ -121073,7 +125172,7 @@ struct ahci_port_priv { bool fbs_supported; bool fbs_enabled; int fbs_last_dev; - struct ahci_em_priv em_priv[8]; + struct ahci_em_priv em_priv[15]; char *irq_desc; }; @@ -121318,9 +125417,7 @@ struct vga_device { unsigned int io_norm_cnt; unsigned int mem_norm_cnt; bool bridge_has_one_vga; - void *cookie; - void (*irq_set_state)(void *, bool); - unsigned int (*set_vga_decode)(void *, bool); + unsigned int (*set_decode)(struct pci_dev *, bool); }; struct vga_arb_user_card { @@ -121360,7 +125457,7 @@ struct spi_replaced_transfers { struct spi_board_info { char modalias[32]; const void *platform_data; - const struct property_entry *properties; + const struct software_node *swnode; void *controller_data; int irq; u32 max_speed_hz; @@ -121430,6 +125527,26 @@ struct trace_event_raw_spi_controller { char __data[0]; }; +struct trace_event_raw_spi_setup { + struct trace_entry ent; + int bus_num; + int chip_select; + long unsigned int 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; + long unsigned int mode; + bool enable; + char __data[0]; +}; + struct trace_event_raw_spi_message { struct trace_entry ent; int bus_num; @@ -121461,6 +125578,10 @@ struct trace_event_raw_spi_transfer { 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 {}; @@ -121474,6 +125595,10 @@ typedef void (*btf_trace_spi_controller_idle)(void *, struct spi_controller *); 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 *); @@ -121496,6 +125621,8 @@ struct acpi_spi_lookup { int irq; u8 bits_per_word; u8 chip_select; + int n; + int index; }; struct spi_mem_driver { @@ -121675,11 +125802,6 @@ struct mii_if_info { void (*mdio_write)(struct net_device *, int, int, int); }; -struct devprobe2 { - struct net_device * (*probe)(int); - int status; -}; - enum { NETIF_F_SG_BIT = 0, NETIF_F_IP_CSUM_BIT = 1, @@ -121742,51 +125864,42 @@ enum { NETIF_F_HW_TLS_RECORD_BIT = 56, NETIF_F_GRO_FRAGLIST_BIT = 57, NETIF_F_HW_MACSEC_BIT = 58, - NETDEV_FEATURE_COUNT = 59, + 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, +}; + +typedef struct bio_vec skb_frag_t; + +struct skb_shared_hwtstamps { + ktime_t hwtstamp; }; enum { SKBTX_HW_TSTAMP = 1, SKBTX_SW_TSTAMP = 2, SKBTX_IN_PROGRESS = 4, - SKBTX_DEV_ZEROCOPY = 8, SKBTX_WIFI_STATUS = 16, - SKBTX_SHARED_FRAG = 32, SKBTX_SCHED_TSTAMP = 64, }; -enum netdev_priv_flags { - IFF_802_1Q_VLAN = 1, - IFF_EBRIDGE = 2, - IFF_BONDING = 4, - IFF_ISATAP = 8, - IFF_WAN_HDLC = 16, - IFF_XMIT_DST_RELEASE = 32, - IFF_DONT_BRIDGE = 64, - IFF_DISABLE_NETPOLL = 128, - IFF_MACVLAN_PORT = 256, - IFF_BRIDGE_PORT = 512, - IFF_OVS_DATAPATH = 1024, - IFF_TX_SKB_SHARING = 2048, - IFF_UNICAST_FLT = 4096, - IFF_TEAM_PORT = 8192, - IFF_SUPP_NOFCS = 16384, - IFF_LIVE_ADDR_CHANGE = 32768, - IFF_MACVLAN = 65536, - IFF_XMIT_DST_RELEASE_PERM = 131072, - IFF_L3MDEV_MASTER = 262144, - IFF_NO_QUEUE = 524288, - IFF_OPENVSWITCH = 1048576, - IFF_L3MDEV_SLAVE = 2097152, - IFF_TEAM = 4194304, - IFF_RXFH_CONFIGURED = 8388608, - IFF_PHONY_HEADROOM = 16777216, - IFF_MACSEC = 33554432, - IFF_NO_RX_HANDLER = 67108864, - IFF_FAILOVER = 134217728, - IFF_FAILOVER_SLAVE = 268435456, - IFF_L3MDEV_RX_HANDLER = 536870912, - IFF_LIVE_RENAME_OK = 1073741824, +struct skb_shared_info { + __u8 flags; + __u8 meta_len; + __u8 nr_frags; + __u8 tx_flags; + short unsigned int gso_size; + short unsigned int gso_segs; + struct sk_buff *frag_list; + struct skb_shared_hwtstamps hwtstamps; + unsigned int gso_type; + u32 tskey; + atomic_t dataref; + void *destructor_arg; + skb_frag_t frags[17]; }; struct mdio_board_info { @@ -121836,8 +125949,23 @@ enum { ETHTOOL_MSG_CABLE_TEST_NTF = 27, ETHTOOL_MSG_CABLE_TEST_TDR_NTF = 28, ETHTOOL_MSG_TUNNEL_INFO_GET_REPLY = 29, - __ETHTOOL_MSG_KERNEL_CNT = 30, - ETHTOOL_MSG_KERNEL_MAX = 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_KERNEL_CNT = 35, + ETHTOOL_MSG_KERNEL_MAX = 34, +}; + +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_CNT = 5, + ETHTOOL_A_STATS_MAX = 4, }; struct phy_led_trigger { @@ -122128,6 +126256,7 @@ struct sfp_socket_ops { void (*stop)(struct sfp *); int (*module_info)(struct sfp *, struct ethtool_modinfo *); int (*module_eeprom)(struct sfp *, struct ethtool_eeprom *, u8 *); + int (*module_eeprom_by_page)(struct sfp *, const struct ethtool_module_eeprom *, struct netlink_ext_ack *); }; struct sfp_quirk { @@ -122160,6 +126289,23 @@ struct fixed_phy { struct gpio_desc *link_gpiod; }; +struct mdiobb_ctrl; + +struct mdiobb_ops { + struct module *owner; + void (*set_mdc)(struct mdiobb_ctrl *, int); + void (*set_mdio_dir)(struct mdiobb_ctrl *, int); + void (*set_mdio_data)(struct mdiobb_ctrl *, int); + int (*get_mdio_data)(struct mdiobb_ctrl *); +}; + +struct mdiobb_ctrl { + const struct mdiobb_ops *ops; + unsigned int override_op_c22; + u8 op_c22_read; + u8 op_c22_write; +}; + struct mdio_mux_child_bus; struct mdio_mux_parent_bus { @@ -122198,18 +126344,32 @@ struct flow_dissector_key_basic { u8 padding; }; +struct flow_dissector { + unsigned int used_keys; + short unsigned int offset[28]; +}; + struct flow_keys_basic { struct flow_dissector_key_control control; struct flow_dissector_key_basic basic; }; +struct nf_conntrack { + refcount_t use; +}; + +enum { + SKBFL_ZEROCOPY_ENABLE = 1, + SKBFL_SHARED_FRAG = 2, +}; + struct mmpin { struct user_struct *user; unsigned int num_pg; }; struct ubuf_info { - void (*callback)(struct ubuf_info *, bool); + void (*callback)(struct sk_buff *, struct ubuf_info *, bool); union { struct { long unsigned int desc; @@ -122223,6 +126383,7 @@ struct ubuf_info { }; }; refcount_t refcnt; + u8 flags; struct mmpin mmp; }; @@ -122262,12 +126423,59 @@ enum { __IFLA_TUN_MAX = 10, }; +struct gro_list { + struct list_head list; + int count; +}; + +struct napi_struct { + struct list_head poll_list; + long unsigned int state; + int weight; + int defer_hard_irqs_count; + long unsigned int gro_bitmask; + int (*poll)(struct napi_struct *, int); + int poll_owner; + struct net_device *dev; + struct gro_list gro_hash[8]; + struct sk_buff *skb; + struct list_head rx_list; + int rx_count; + struct hrtimer timer; + struct list_head dev_list; + struct hlist_node napi_hash_node; + unsigned int napi_id; + struct task_struct *thread; +}; + +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; + enum netdev_queue_state_t { __QUEUE_STATE_DRV_XOFF = 0, __QUEUE_STATE_STACK_XOFF = 1, __QUEUE_STATE_FROZEN = 2, }; +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 ip_tunnel_parm { char name[16]; int link; @@ -122351,7 +126559,7 @@ struct fib_info { struct hlist_node fib_lhash; struct list_head nh_list; struct net *fib_net; - int fib_treeref; + refcount_t fib_treeref; refcount_t fib_clntref; unsigned int fib_flags; unsigned char fib_dead; @@ -122406,40 +126614,57 @@ struct nh_info { }; }; +struct nh_grp_entry; + +struct nh_res_bucket { + struct nh_grp_entry *nh_entry; + atomic_long_t used_time; + long unsigned int migrated_time; + bool occupied; + u8 nh_flags; +}; + struct nh_grp_entry { struct nexthop *nh; u8 weight; - atomic_t upper_bound; + 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 net *net; + u32 nhg_id; + struct delayed_work upkeep_dw; + struct list_head uw_nh_entries; + long unsigned int unbalanced_since; + u32 idle_timer; + u32 unbalanced_timer; + u16 num_nh_buckets; + struct nh_res_bucket nh_buckets[0]; +}; + struct nh_group { struct nh_group *spare; u16 num_nh; - bool mpath; + bool is_multipath; + bool hash_threshold; + bool resilient; bool fdb_nh; bool has_v4; + struct nh_res_table *res_table; struct nh_grp_entry nh_entries[0]; }; -struct ip_tunnel_encap { - u16 type; - u16 flags; - __be16 sport; - __be16 dport; -}; - -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); -}; - -typedef struct { - char ax25_call[7]; -} ax25_address; - enum { AX25_VALUES_IPDEFMODE = 0, AX25_VALUES_AXDEFMODE = 1, @@ -122458,89 +126683,6 @@ enum { AX25_MAX_VALUES = 14, }; -typedef struct { - ax25_address calls[8]; - unsigned char repeated[8]; - unsigned char ndigi; - signed char lastrepeat; -} ax25_digi; - -typedef struct { - char slave; - struct timer_list slave_timer; - short unsigned int slave_timeout; -} ax25_dama_info; - -struct ax25_dev { - struct ax25_dev *next; - struct net_device *dev; - struct net_device *forward; - struct ctl_table_header *sysheader; - int values[14]; - ax25_dama_info dama; -}; - -typedef struct ax25_dev ax25_dev; - -struct ax25_cb { - struct hlist_node ax25_node; - ax25_address source_addr; - ax25_address dest_addr; - ax25_digi *digipeat; - ax25_dev *ax25_dev; - unsigned char iamdigi; - unsigned char state; - unsigned char modulus; - unsigned char pidincl; - short unsigned int vs; - short unsigned int vr; - short unsigned int va; - unsigned char condition; - unsigned char backoff; - unsigned char n2; - unsigned char n2count; - struct timer_list t1timer; - struct timer_list t2timer; - struct timer_list t3timer; - struct timer_list idletimer; - long unsigned int t1; - long unsigned int t2; - long unsigned int t3; - long unsigned int idle; - long unsigned int rtt; - short unsigned int paclen; - short unsigned int fragno; - short unsigned int fraglen; - struct sk_buff_head write_queue; - struct sk_buff_head reseq_queue; - struct sk_buff_head ack_queue; - struct sk_buff_head frag_queue; - unsigned char window; - struct timer_list timer; - struct timer_list dtimer; - struct sock *sk; - refcount_t refcount; -}; - -typedef struct ax25_cb ax25_cb; - -struct rose_neigh { - struct rose_neigh *next; - ax25_address callsign; - ax25_digi *digipeat; - ax25_cb *ax25; - struct net_device *dev; - short unsigned int count; - short unsigned int use; - unsigned int number; - char restarted; - char dce_mode; - char loopback; - struct sk_buff_head queue; - struct timer_list t0timer; - struct timer_list ftimer; -}; - enum nl802154_cca_modes { __NL802154_CCA_INVALID = 0, NL802154_CCA_ENERGY = 1, @@ -122611,7 +126753,6 @@ struct wpan_phy { possible_net_t _net; long: 64; long: 64; - long: 64; char priv[0]; }; @@ -122639,6 +126780,10 @@ struct tun_struct; struct tun_file { struct sock sk; long: 64; + long: 64; + long: 64; + long: 64; + long: 64; struct socket socket; struct tun_struct *tun; struct fasync_struct *fasync; @@ -122656,7 +126801,6 @@ struct tun_file { long: 64; long: 64; long: 64; - long: 64; struct ptr_ring tx_ring; struct xdp_rxq_info xdp_rxq; }; @@ -122692,6 +126836,8 @@ struct tun_struct { struct tun_prog *steering_prog; struct tun_prog *filter_prog; struct ethtool_link_ksettings link_ksettings; + struct file *file; + struct ifreq *ifr; }; struct tun_page { @@ -122706,7 +126852,6 @@ struct tun_flow_entry { u32 rxhash; u32 rps_rxhash; int queue_index; - long: 32; long: 64; long unsigned int updated; long: 64; @@ -122830,7 +126975,7 @@ struct ssb_sprom_core_pwr_info { struct ssb_sprom { u8 revision; - char: 8; + short: 0; u8 il0mac[6]; u8 et0mac[6]; u8 et1mac[6]; @@ -123062,6 +127207,7 @@ enum devlink_port_flavour { 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 { @@ -123082,6 +127228,13 @@ struct devlink_port_pci_vf_attrs { 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; @@ -123092,18 +127245,20 @@ struct devlink_port_attrs { 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_rate; + struct devlink_port { struct list_head list; struct list_head param_list; struct list_head region_list; struct devlink *devlink; unsigned int index; - bool registered; spinlock_t type_lock; enum devlink_port_type type; enum devlink_port_type desired_type; @@ -123114,6 +127269,7 @@ struct devlink_port { struct delayed_work type_warn_dw; struct list_head reporter_list; struct mutex reporters_lock; + struct devlink_rate *devlink_rate; }; enum phylink_op_type { @@ -123128,6 +127284,8 @@ struct phylink_config { enum phylink_op_type type; bool pcs_poll; bool poll_fixed_state; + bool mac_managed_pm; + bool ovr_an_inband; void (*get_fixed_state)(struct phylink_config *, struct phylink_link_state *); }; @@ -123135,8 +127293,6 @@ struct dsa_device_ops; struct dsa_switch_tree; -struct packet_type; - struct dsa_switch; struct dsa_netdevice_ops; @@ -123148,8 +127304,7 @@ struct dsa_port { }; const struct dsa_device_ops *tag_ops; struct dsa_switch_tree *dst; - struct sk_buff * (*rcv)(struct sk_buff *, struct net_device *, struct packet_type *); - bool (*filter)(const struct sk_buff *, struct net_device *); + struct sk_buff * (*rcv)(struct sk_buff *, struct net_device *); enum { DSA_PORT_TYPE_UNUSED = 0, DSA_PORT_TYPE_CPU = 1, @@ -123160,32 +127315,53 @@ struct dsa_port { unsigned int index; const char *name; struct dsa_port *cpu_dp; - const char *mac; + u8 mac[6]; struct device_node *dn; unsigned int ageing_time; bool vlan_filtering; + bool learning; u8 stp_state; struct net_device *bridge_dev; + int bridge_num; struct devlink_port devlink_port; bool devlink_port_setup; struct phylink *pl; struct phylink_config pl_config; + struct net_device *lag_dev; + bool lag_tx_enabled; + struct net_device *hsr_dev; struct list_head list; void *priv; const struct ethtool_ops *orig_ethtool_ops; const struct dsa_netdevice_ops *netdev_ops; + struct list_head fdbs; + struct list_head mdbs; bool setup; }; -struct packet_type { - __be16 type; - bool ignore_outgoing; - struct net_device *dev; - 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 *); - void *af_packet_priv; - struct list_head list; +enum netdev_lag_tx_type { + NETDEV_LAG_TX_TYPE_UNKNOWN = 0, + NETDEV_LAG_TX_TYPE_RANDOM = 1, + NETDEV_LAG_TX_TYPE_BROADCAST = 2, + NETDEV_LAG_TX_TYPE_ROUNDROBIN = 3, + NETDEV_LAG_TX_TYPE_ACTIVEBACKUP = 4, + NETDEV_LAG_TX_TYPE_HASH = 5, +}; + +enum netdev_lag_hash { + NETDEV_LAG_HASH_NONE = 0, + NETDEV_LAG_HASH_L2 = 1, + NETDEV_LAG_HASH_L34 = 2, + NETDEV_LAG_HASH_L23 = 3, + NETDEV_LAG_HASH_E23 = 4, + NETDEV_LAG_HASH_E34 = 5, + NETDEV_LAG_HASH_VLAN_SRCMAC = 6, + NETDEV_LAG_HASH_UNKNOWN = 7, +}; + +struct netdev_lag_upper_info { + enum netdev_lag_tx_type tx_type; + enum netdev_lag_hash hash_type; }; struct netdev_notifier_changeupper_info { @@ -123213,7 +127389,12 @@ enum ethtool_stringset { ETH_SS_TS_TX_TYPES = 13, ETH_SS_TS_RX_FILTERS = 14, ETH_SS_UDP_TUNNEL_TYPES = 15, - ETH_SS_COUNT = 16, + 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 flow_match { @@ -123252,7 +127433,8 @@ enum flow_action_id { FLOW_ACTION_MPLS_POP = 26, FLOW_ACTION_MPLS_MANGLE = 27, FLOW_ACTION_GATE = 28, - NUM_FLOW_ACTIONS = 29, + FLOW_ACTION_PPPOE_PUSH = 29, + NUM_FLOW_ACTIONS = 30, }; enum flow_action_hw_stats { @@ -123323,6 +127505,8 @@ struct flow_action_entry { u32 index; u32 burst; u64 rate_bytes_ps; + u64 burst_pkt; + u64 rate_pkt_ps; u32 mtu; } police; struct { @@ -123334,6 +127518,7 @@ struct flow_action_entry { long unsigned int cookie; u32 mark; u32 labels[4]; + bool orig_dir; } ct_metadata; struct { u32 label; @@ -123360,6 +127545,9 @@ struct flow_action_entry { u32 num_entries; struct action_gate_entry *entries; } gate; + struct { + u16 sid; + } pppoe; }; struct flow_action_cookie *cookie; }; @@ -123457,6 +127645,11 @@ enum devlink_eswitch_encap_mode { DEVLINK_ESWITCH_ENCAP_MODE_BASIC = 1, }; +enum devlink_rate_type { + DEVLINK_RATE_TYPE_LEAF = 0, + DEVLINK_RATE_TYPE_NODE = 1, +}; + enum devlink_param_cmode { DEVLINK_PARAM_CMODE_RUNTIME = 0, DEVLINK_PARAM_CMODE_DRIVERINIT = 1, @@ -123497,6 +127690,16 @@ enum devlink_dpipe_field_mapping_type { DEVLINK_DPIPE_FIELD_MAPPING_TYPE_IFINDEX = 1, }; +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_dev_stats { u32 reload_stats[6]; u32 remote_reload_stats[6]; @@ -123507,8 +127710,9 @@ struct devlink_dpipe_headers; struct devlink_ops; struct devlink { - struct list_head list; + u32 index; struct list_head port_list; + struct list_head rate_list; struct list_head sb_list; struct list_head dpipe_table_list; struct list_head resource_list; @@ -123528,9 +127732,8 @@ struct devlink { struct mutex lock; u8 reload_failed: 1; u8 reload_enabled: 1; - u8 registered: 1; - long: 61; - long: 64; + refcount_t refcount; + struct completion comp; char priv[0]; }; @@ -123553,6 +127756,8 @@ struct devlink_trap_group; struct devlink_trap_policer; +struct devlink_port_new_attrs; + struct devlink_ops { u32 supported_flash_update_params; long unsigned int reload_actions; @@ -123586,12 +127791,53 @@ struct devlink_ops { 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_function_hw_addr_get)(struct devlink *, struct devlink_port *, u8 *, int *, struct netlink_ext_ack *); - int (*port_function_hw_addr_set)(struct devlink *, struct devlink_port *, const u8 *, int, struct netlink_ext_ack *); + int (*port_function_hw_addr_get)(struct devlink_port *, u8 *, int *, struct netlink_ext_ack *); + int (*port_function_hw_addr_set)(struct devlink_port *, const u8 *, int, struct netlink_ext_ack *); + int (*port_new)(struct devlink *, const struct devlink_port_new_attrs *, struct netlink_ext_ack *, unsigned int *); + int (*port_del)(struct devlink *, unsigned int, 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 (*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_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_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 *); +}; + +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; + }; + }; +}; + +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 devlink_sb_pool_info { @@ -123662,8 +127908,9 @@ struct devlink_trap { u32 metadata_cap; }; -struct switchdev_trans { - bool ph_prepare; +struct switchdev_brport_flags { + long unsigned int val; + long unsigned int mask; }; enum switchdev_obj_id { @@ -123681,6 +127928,7 @@ enum switchdev_obj_id { }; struct switchdev_obj { + struct list_head list; struct net_device *orig_dev; enum switchdev_obj_id id; u32 flags; @@ -123691,8 +127939,7 @@ struct switchdev_obj { struct switchdev_obj_port_vlan { struct switchdev_obj obj; u16 flags; - u16 vid_begin; - u16 vid_end; + u16 vid; }; struct switchdev_obj_port_mdb { @@ -123701,9 +127948,25 @@ struct switchdev_obj_port_mdb { u16 vid; }; +struct switchdev_obj_mrp { + struct switchdev_obj obj; + struct net_device *p_port; + struct net_device *s_port; + u32 ring_id; + u16 prio; +}; + +struct switchdev_obj_ring_role_mrp { + struct switchdev_obj obj; + u8 ring_role; + u32 ring_id; + u8 sw_backup; +}; + enum dsa_tag_protocol { DSA_TAG_PROTO_NONE = 0, DSA_TAG_PROTO_BRCM = 1, + DSA_TAG_PROTO_BRCM_LEGACY = 22, DSA_TAG_PROTO_BRCM_PREPEND = 2, DSA_TAG_PROTO_DSA = 3, DSA_TAG_PROTO_EDSA = 4, @@ -123721,22 +127984,25 @@ enum dsa_tag_protocol { DSA_TAG_PROTO_AR9331 = 16, DSA_TAG_PROTO_RTL4_A = 17, DSA_TAG_PROTO_HELLCREEK = 18, + DSA_TAG_PROTO_XRS700X = 19, + DSA_TAG_PROTO_OCELOT_8021Q = 20, + DSA_TAG_PROTO_SEVILLE = 21, + DSA_TAG_PROTO_SJA1110 = 23, }; struct dsa_device_ops { struct sk_buff * (*xmit)(struct sk_buff *, struct net_device *); - struct sk_buff * (*rcv)(struct sk_buff *, struct net_device *, struct packet_type *); + struct sk_buff * (*rcv)(struct sk_buff *, struct net_device *); void (*flow_dissect)(const struct sk_buff *, __be16 *, int *); - bool (*filter)(const struct sk_buff *, struct net_device *); - unsigned int overhead; + unsigned int needed_headroom; + unsigned int needed_tailroom; const char *name; enum dsa_tag_protocol proto; bool promisc_on_master; - bool tail_tag; }; struct dsa_netdevice_ops { - int (*ndo_do_ioctl)(struct net_device *, struct ifreq *, int); + int (*ndo_eth_ioctl)(struct net_device *, struct ifreq *, int); }; struct dsa_switch_tree { @@ -123745,9 +128011,14 @@ struct dsa_switch_tree { unsigned int index; struct kref refcount; bool setup; + const struct dsa_device_ops *tag_ops; + enum dsa_tag_protocol default_proto; struct dsa_platform_data *pd; struct list_head ports; struct list_head rtable; + struct net_device **lags; + unsigned int lags_len; + unsigned int last_switch; }; struct dsa_mall_mirror_tc_entry { @@ -123760,6 +128031,8 @@ struct dsa_mall_policer_tc_entry { u64 rate_bytes_per_sec; }; +struct dsa_8021q_context; + struct dsa_switch_ops; struct dsa_switch { @@ -123775,14 +128048,19 @@ struct dsa_switch { struct mii_bus *slave_mii_bus; unsigned int ageing_time_min; unsigned int ageing_time_max; + struct dsa_8021q_context *tag_8021q_ctx; struct devlink *devlink; unsigned int num_tx_queues; bool vlan_filtering_is_global; + bool needs_standalone_vlan_filtering; bool configure_vlan_while_not_filtering; bool untag_bridge_pvid; + bool assisted_learning_on_cpu_port; bool vlan_filtering; bool pcs_poll; bool mtu_enforcement_ingress; + unsigned int num_lag_ids; + unsigned int num_fwd_offloading_bridges; size_t num_ports; }; @@ -123790,6 +128068,7 @@ typedef int dsa_fdb_dump_cb_t(const unsigned char *, u16, bool, void *); struct dsa_switch_ops { enum dsa_tag_protocol (*get_tag_protocol)(struct dsa_switch *, int, enum dsa_tag_protocol); + int (*change_tag_protocol)(struct dsa_switch *, int, enum dsa_tag_protocol); int (*setup)(struct dsa_switch *); void (*teardown)(struct dsa_switch *); int (*port_setup)(struct dsa_switch *, int); @@ -123810,6 +128089,8 @@ struct dsa_switch_ops { void (*get_ethtool_stats)(struct dsa_switch *, int, uint64_t *); int (*get_sset_count)(struct dsa_switch *, int, int); void (*get_ethtool_phy_stats)(struct dsa_switch *, int, uint64_t *); + void (*get_stats64)(struct dsa_switch *, int, struct rtnl_link_stats64 *); + void (*self_test)(struct dsa_switch *, int, struct ethtool_test *, u64 *); void (*get_wol)(struct dsa_switch *, int, struct ethtool_wolinfo *); int (*set_wol)(struct dsa_switch *, int, struct ethtool_wolinfo *); int (*get_ts_info)(struct dsa_switch *, int, struct ethtool_ts_info *); @@ -123828,18 +128109,19 @@ struct dsa_switch_ops { int (*set_ageing_time)(struct dsa_switch *, unsigned int); int (*port_bridge_join)(struct dsa_switch *, int, struct net_device *); void (*port_bridge_leave)(struct dsa_switch *, int, struct net_device *); + int (*port_bridge_tx_fwd_offload)(struct dsa_switch *, int, struct net_device *, int); + void (*port_bridge_tx_fwd_unoffload)(struct dsa_switch *, int, struct net_device *, int); void (*port_stp_state_set)(struct dsa_switch *, int, u8); void (*port_fast_age)(struct dsa_switch *, int); - int (*port_egress_floods)(struct dsa_switch *, int, bool, bool); - int (*port_vlan_filtering)(struct dsa_switch *, int, bool, struct switchdev_trans *); - int (*port_vlan_prepare)(struct dsa_switch *, int, const struct switchdev_obj_port_vlan *); - void (*port_vlan_add)(struct dsa_switch *, int, const struct switchdev_obj_port_vlan *); + int (*port_pre_bridge_flags)(struct dsa_switch *, int, struct switchdev_brport_flags, struct netlink_ext_ack *); + int (*port_bridge_flags)(struct dsa_switch *, int, struct switchdev_brport_flags, struct netlink_ext_ack *); + int (*port_vlan_filtering)(struct dsa_switch *, int, bool, struct netlink_ext_ack *); + int (*port_vlan_add)(struct dsa_switch *, int, const struct switchdev_obj_port_vlan *, struct netlink_ext_ack *); int (*port_vlan_del)(struct dsa_switch *, int, const struct switchdev_obj_port_vlan *); int (*port_fdb_add)(struct dsa_switch *, int, const unsigned char *, u16); int (*port_fdb_del)(struct dsa_switch *, int, const unsigned char *, u16); int (*port_fdb_dump)(struct dsa_switch *, int, dsa_fdb_dump_cb_t *, void *); - int (*port_mdb_prepare)(struct dsa_switch *, int, const struct switchdev_obj_port_mdb *); - void (*port_mdb_add)(struct dsa_switch *, int, const struct switchdev_obj_port_mdb *); + int (*port_mdb_add)(struct dsa_switch *, int, const struct switchdev_obj_port_mdb *); int (*port_mdb_del)(struct dsa_switch *, int, const struct switchdev_obj_port_mdb *); int (*get_rxnfc)(struct dsa_switch *, int, struct ethtool_rxnfc *, u32 *); int (*set_rxnfc)(struct dsa_switch *, int, struct ethtool_rxnfc *); @@ -123853,15 +128135,39 @@ struct dsa_switch_ops { int (*port_setup_tc)(struct dsa_switch *, int, enum tc_setup_type, void *); int (*crosschip_bridge_join)(struct dsa_switch *, int, int, int, struct net_device *); void (*crosschip_bridge_leave)(struct dsa_switch *, int, int, int, struct net_device *); + int (*crosschip_lag_change)(struct dsa_switch *, int, int); + int (*crosschip_lag_join)(struct dsa_switch *, int, int, struct net_device *, struct netdev_lag_upper_info *); + int (*crosschip_lag_leave)(struct dsa_switch *, int, int, struct net_device *); int (*port_hwtstamp_get)(struct dsa_switch *, int, struct ifreq *); int (*port_hwtstamp_set)(struct dsa_switch *, int, struct ifreq *); - bool (*port_txtstamp)(struct dsa_switch *, int, struct sk_buff *, unsigned int); + void (*port_txtstamp)(struct dsa_switch *, int, struct sk_buff *); bool (*port_rxtstamp)(struct dsa_switch *, int, struct sk_buff *, unsigned int); int (*devlink_param_get)(struct dsa_switch *, u32, struct devlink_param_gset_ctx *); int (*devlink_param_set)(struct dsa_switch *, u32, struct devlink_param_gset_ctx *); int (*devlink_info_get)(struct dsa_switch *, struct devlink_info_req *, struct netlink_ext_ack *); + int (*devlink_sb_pool_get)(struct dsa_switch *, unsigned int, u16, struct devlink_sb_pool_info *); + int (*devlink_sb_pool_set)(struct dsa_switch *, unsigned int, u16, u32, enum devlink_sb_threshold_type, struct netlink_ext_ack *); + int (*devlink_sb_port_pool_get)(struct dsa_switch *, int, unsigned int, u16, u32 *); + int (*devlink_sb_port_pool_set)(struct dsa_switch *, int, unsigned int, u16, u32, struct netlink_ext_ack *); + int (*devlink_sb_tc_pool_bind_get)(struct dsa_switch *, int, unsigned int, u16, enum devlink_sb_pool_type, u16 *, u32 *); + int (*devlink_sb_tc_pool_bind_set)(struct dsa_switch *, int, unsigned int, u16, enum devlink_sb_pool_type, u16, u32, struct netlink_ext_ack *); + int (*devlink_sb_occ_snapshot)(struct dsa_switch *, unsigned int); + int (*devlink_sb_occ_max_clear)(struct dsa_switch *, unsigned int); + int (*devlink_sb_occ_port_pool_get)(struct dsa_switch *, int, unsigned int, u16, u32 *, u32 *); + int (*devlink_sb_occ_tc_port_bind_get)(struct dsa_switch *, int, unsigned int, u16, enum devlink_sb_pool_type, u32 *, u32 *); int (*port_change_mtu)(struct dsa_switch *, int, int); int (*port_max_mtu)(struct dsa_switch *, int); + int (*port_lag_change)(struct dsa_switch *, int); + int (*port_lag_join)(struct dsa_switch *, int, struct net_device *, struct netdev_lag_upper_info *); + int (*port_lag_leave)(struct dsa_switch *, int, struct net_device *); + int (*port_hsr_join)(struct dsa_switch *, int, struct net_device *); + int (*port_hsr_leave)(struct dsa_switch *, int, struct net_device *); + int (*port_mrp_add)(struct dsa_switch *, int, const struct switchdev_obj_mrp *); + int (*port_mrp_del)(struct dsa_switch *, int, const struct switchdev_obj_mrp *); + int (*port_mrp_add_ring_role)(struct dsa_switch *, int, const struct switchdev_obj_ring_role_mrp *); + int (*port_mrp_del_ring_role)(struct dsa_switch *, int, const struct switchdev_obj_ring_role_mrp *); + int (*tag_8021q_vlan_add)(struct dsa_switch *, int, u16, u16); + int (*tag_8021q_vlan_del)(struct dsa_switch *, int, u16); }; struct bgmac_slot_info { @@ -123951,6 +128257,7 @@ struct bgmac_stat { struct netdev_hw_addr { struct list_head list; + struct rb_node node; unsigned char addr[32]; unsigned char type; bool global_use; @@ -123994,8 +128301,9 @@ enum { SOF_TIMESTAMPING_OPT_STATS = 4096, SOF_TIMESTAMPING_OPT_PKTINFO = 8192, SOF_TIMESTAMPING_OPT_TX_SWHW = 16384, - SOF_TIMESTAMPING_LAST = 16384, - SOF_TIMESTAMPING_MASK = 32767, + SOF_TIMESTAMPING_BIND_PHC = 32768, + SOF_TIMESTAMPING_LAST = 32768, + SOF_TIMESTAMPING_MASK = 65535, }; enum hwtstamp_tx_types { @@ -124026,6 +128334,14 @@ enum hwtstamp_rx_filters { __HWTSTAMP_FILTER_CNT = 16, }; +enum tunable_id { + ETHTOOL_ID_UNSPEC = 0, + ETHTOOL_RX_COPYBREAK = 1, + ETHTOOL_TX_COPYBREAK = 2, + ETHTOOL_PFC_PREVENTION_TOUT = 3, + __ETHTOOL_TUNABLE_COUNT = 4, +}; + struct tso_t { int next_frag_idx; int size; @@ -124036,14 +128352,6 @@ struct tso_t { u32 tcp_seq; }; -enum tunable_id { - ETHTOOL_ID_UNSPEC = 0, - ETHTOOL_RX_COPYBREAK = 1, - ETHTOOL_TX_COPYBREAK = 2, - ETHTOOL_PFC_PREVENTION_TOUT = 3, - __ETHTOOL_TUNABLE_COUNT = 4, -}; - struct fec_platform_data { phy_interface_t phy; unsigned char mac[6]; @@ -124105,7 +128413,7 @@ struct ptp_clock_request { struct ptp_clock_info { struct module *owner; - char name[16]; + char name[32]; s32 max_adj; int n_alarm; int n_ext_ts; @@ -124185,6 +128493,7 @@ struct fec_enet_private { struct clk *clk_ref; struct clk *clk_enet_out; struct clk *clk_ptp; + struct clk *clk_2x_txclk; bool ptp_clk_on; struct mutex ptp_clk_mutex; unsigned int num_tx_queues; @@ -124199,6 +128508,8 @@ struct fec_enet_private { uint phy_speed; phy_interface_t phy_interface; struct device_node *phy_node; + bool rgmii_txc_dly; + bool rgmii_rxc_dly; int link; int full_duplex; int speed; @@ -124206,6 +128517,7 @@ struct fec_enet_private { bool bufdesc_ex; int pause_flag; int wol_flag; + int wake_irq; u32 quirks; struct napi_struct napi; int csum_flags; @@ -124231,6 +128543,8 @@ struct fec_enet_private { unsigned int tx_pkts_itr; unsigned int tx_time_itr; unsigned int itr_clk_rate; + struct ethtool_eee eee; + unsigned int clk_ref_rate; u32 rx_copybreak; unsigned int ptp_inc; int pps_channel; @@ -124252,6 +128566,8 @@ enum imx_fec_type { MVF600_FEC = 5, IMX6SX_FEC = 6, IMX6UL_FEC = 7, + IMX8MQ_FEC = 8, + IMX8QM_FEC = 9, }; struct fec_stat { @@ -124296,6 +128612,7 @@ struct tgec_mdio_controller { struct mdio_fsl_priv { struct tgec_mdio_controller *mdio_base; bool is_little_endian; + bool has_a009885; bool has_a011043; }; @@ -124388,7 +128705,7 @@ struct fman_kg_regs; typedef irqreturn_t fman_bus_error_cb(struct fman *, u8, u64, u8, u16); -struct muram_info___2; +struct muram_info; struct fman_keygen; @@ -124432,7 +128749,7 @@ struct fman { spinlock_t spinlock; struct fman_state_struct *state; struct fman_cfg *cfg; - struct muram_info___2 *muram; + struct muram_info *muram; struct fman_keygen *keygen; long unsigned int cam_offset; size_t cam_size; @@ -124750,7 +129067,7 @@ struct fman_kg_pe_regs { u32 fmkg_pe_cpp; }; -struct fman_kg_regs___2 { +struct fman_kg_regs { u32 fmkg_gcr; u32 res004; u32 res008; @@ -124789,9 +129106,9 @@ struct keygen_scheme { u32 match_vector; }; -struct fman_keygen___2 { +struct fman_keygen { struct keygen_scheme schemes[32]; - struct fman_kg_regs___2 *keygen_regs; + struct fman_kg_regs *keygen_regs; }; struct fman_buf_pool_depletion { @@ -125133,7 +129450,7 @@ struct fman_mac_params { struct device_node *internal_phy_node; }; -struct fman_port___2; +struct fman_port; struct fman_mac; @@ -125142,7 +129459,7 @@ struct mac_priv_s; struct mac_device { struct resource *res; u8 addr[6]; - struct fman_port___2 *port[2]; + struct fman_port *port[2]; u32 if_support; struct phy_device *phy_dev; phy_interface_t phy_if; @@ -125310,7 +129627,7 @@ struct dtsec_cfg { u32 back_to_back_ipg; }; -struct fman_mac___2 { +struct fman_mac { struct dtsec_regs *regs; u64 addr; phy_interface_t phy_if; @@ -125485,7 +129802,7 @@ struct memac_cfg { u32 tx_ipg_length; }; -struct fman_mac___3 { +struct fman_mac___2 { struct memac_regs *regs; u64 addr; phy_interface_t phy_if; @@ -125614,7 +129931,7 @@ struct tgec_cfg { u32 tx_ipg_length; }; -struct fman_mac___4 { +struct fman_mac___3 { struct tgec_regs *regs; u64 addr; u16 max_speed; @@ -125670,6 +129987,7 @@ struct mdio_platform_data { struct davinci_mdio_of_param { int autosuspend_delay_ms; + bool manual_mode; }; struct davinci_mdio_regs { @@ -125684,7 +130002,9 @@ struct davinci_mdio_regs { u32 userintmasked; u32 userintmaskset; u32 userintmaskclr; - u32 __reserved_1[20]; + u32 manualif; + u32 poll; + u32 __reserved_1[18]; struct { u32 access; u32 physel; @@ -125693,6 +130013,7 @@ struct davinci_mdio_regs { struct davinci_mdio_data { struct mdio_platform_data pdata; + struct mdiobb_ctrl bb_ctrl; struct davinci_mdio_regs *regs; struct clk *clk; struct device *dev; @@ -125701,6 +130022,11 @@ struct davinci_mdio_data { long unsigned int access_time; bool skip_scan; u32 clk_div; + bool manual_mode; +}; + +struct k3_mdio_soc_data { + bool manual_mode; }; enum { @@ -125761,7 +130087,9 @@ enum { IFLA_ALT_IFNAME = 53, IFLA_PERM_ADDRESS = 54, IFLA_PROTO_DOWN_REASON = 55, - __IFLA_MAX = 56, + IFLA_PARENT_DEV_NAME = 56, + IFLA_PARENT_DEV_BUS_NAME = 57, + __IFLA_MAX = 58, }; enum { @@ -125850,6 +130178,7 @@ struct ppp_channel; struct ppp_channel_ops { int (*start_xmit)(struct ppp_channel *, struct sk_buff *); int (*ioctl)(struct ppp_channel *, unsigned int, long unsigned int); + int (*fill_forward_path)(struct net_device_path_ctx *, struct net_device_path *, const struct ppp_channel *); }; struct ppp_channel { @@ -126029,87 +130358,95 @@ struct compressor_entry { struct compressor *comp; }; -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 wl1251_platform_data { + int power_gpio; + int irq; + bool use_eeprom; }; -struct net_protocol { - int (*early_demux)(struct sk_buff *); - int (*early_demux_handler)(struct sk_buff *); - int (*handler)(struct sk_buff *); - int (*err_handler)(struct sk_buff *, u32); - unsigned int no_policy: 1; - unsigned int netns_ok: 1; - unsigned int icmp_strict_tag_validation: 1; +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, }; -struct inet6_protocol { - void (*early_demux)(struct sk_buff *); - void (*early_demux_handler)(struct sk_buff *); - int (*handler)(struct sk_buff *); - int (*err_handler)(struct sk_buff *, struct inet6_skb_parm *, u8, u8, int, __be32); - unsigned int flags; +enum wwan_port_type { + WWAN_PORT_AT = 0, + WWAN_PORT_MBIM = 1, + WWAN_PORT_QMI = 2, + WWAN_PORT_QCDM = 3, + WWAN_PORT_FIREHOSE = 4, + __WWAN_PORT_MAX = 5, + WWAN_PORT_MAX = 4, + WWAN_PORT_UNKNOWN = 5, }; -struct net_offload { - struct offload_callbacks callbacks; - unsigned int flags; +struct wwan_port; + +struct wwan_port_ops { + int (*start)(struct wwan_port *); + void (*stop)(struct wwan_port *); + int (*tx)(struct wwan_port *, struct sk_buff *); + int (*tx_blocking)(struct wwan_port *, struct sk_buff *); + __poll_t (*tx_poll)(struct wwan_port *, struct file *, poll_table *); }; -struct wl1251_platform_data { - int power_gpio; - int irq; - bool use_eeprom; +struct wwan_port { + enum wwan_port_type type; + unsigned int start_count; + long unsigned int flags; + const struct wwan_port_ops *ops; + struct mutex ops_lock; + struct device dev; + struct sk_buff_head rxq; + wait_queue_head_t waitqueue; + struct mutex data_lock; + union { + struct { + struct ktermios termios; + int mdmbits; + } at_data; + }; }; -struct pp_alloc_cache { - u32 count; - void *cache[128]; +struct wwan_netdev_priv { + u32 link_id; + long: 0; + u8 drv_priv[0]; }; -struct page_pool_params { - unsigned int flags; - unsigned int order; - unsigned int pool_size; - int nid; - struct device *dev; - enum dma_data_direction dma_dir; - unsigned int max_len; - unsigned int offset; +struct wwan_ops { + unsigned int priv_size; + void (*setup)(struct net_device *); + int (*newlink)(void *, struct net_device *, u32, struct netlink_ext_ack *); + void (*dellink)(void *, struct net_device *, struct list_head *); }; -struct page_pool { - struct page_pool_params p; - struct delayed_work release_dw; - void (*disconnect)(void *); - long unsigned int defer_start; - long unsigned int defer_warn; - u32 pages_state_hold_cnt; - long: 32; - long: 64; - long: 64; - long: 64; - long: 64; - 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; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; +struct ifinfomsg { + unsigned char ifi_family; + unsigned char __ifi_pad; + short unsigned int ifi_type; + int ifi_index; + unsigned int ifi_flags; + unsigned int ifi_change; +}; + +enum { + IFLA_WWAN_UNSPEC = 0, + IFLA_WWAN_LINK_ID = 1, + __IFLA_WWAN_MAX = 2, +}; + +struct wwan_device { + unsigned int id; + struct device dev; + atomic_t port_id; + const struct wwan_ops *ops; + void *ops_ctxt; }; struct xen_netif_tx_request { @@ -126174,7 +130511,7 @@ struct xen_netif_tx_sring { RING_IDX req_event; RING_IDX rsp_prod; RING_IDX rsp_event; - uint8_t pad[48]; + uint8_t __pad[48]; union xen_netif_tx_sring_entry ring[1]; }; @@ -126195,7 +130532,7 @@ struct xen_netif_rx_sring { RING_IDX req_event; RING_IDX rsp_prod; RING_IDX rsp_event; - uint8_t pad[48]; + uint8_t __pad[48]; union xen_netif_rx_sring_entry ring[1]; }; @@ -126206,12 +130543,6 @@ struct xen_netif_rx_front_ring { struct xen_netif_rx_sring *sring; }; -enum netif_freeze_state { - NETIF_FREEZE_STATE_UNFROZEN = 0, - NETIF_FREEZE_STATE_FREEZING = 1, - NETIF_FREEZE_STATE_FROZEN = 2, -}; - struct netfront_cb { int pull_to; }; @@ -126222,11 +130553,6 @@ struct netfront_stats { struct u64_stats_sync syncp; }; -union skb_entry { - struct sk_buff *skb; - long unsigned int link; -}; - struct netfront_info; struct netfront_queue { @@ -126244,13 +130570,13 @@ struct netfront_queue { spinlock_t tx_lock; struct xen_netif_tx_front_ring tx; int tx_ring_ref; - union skb_entry tx_skbs[256]; + struct sk_buff *tx_skbs[256]; + short unsigned int tx_link[256]; grant_ref_t gref_tx_head; grant_ref_t grant_tx_ref[256]; struct page *grant_tx_page[256]; unsigned int tx_skb_freelist; - long: 32; - long: 64; + unsigned int tx_pend_queue; long: 64; spinlock_t rx_lock; struct xen_netif_rx_front_ring rx; @@ -126259,11 +130585,12 @@ struct netfront_queue { struct sk_buff *rx_skbs[256]; grant_ref_t gref_rx_head; grant_ref_t grant_rx_ref[256]; + unsigned int rx_rsp_unconsumed; + spinlock_t rx_cons_lock; struct page_pool *page_pool; long: 64; long: 64; long: 64; - long: 64; struct xdp_rxq_info xdp_rxq; }; @@ -126276,9 +130603,9 @@ struct netfront_info { struct netfront_stats *tx_stats; bool netback_has_xdp_headroom; bool netfront_xdp_enabled; + bool broken; + bool bounce; atomic_t rx_gso_checksum_fixup; - int freeze_state; - struct completion wait_backend_disconnected; }; struct netfront_rx_info { @@ -126291,6 +130618,7 @@ struct xennet_gnttab_make_txreq { struct sk_buff *skb; struct page *page; struct xen_netif_tx_request *tx; + struct xen_netif_tx_request tx_local; unsigned int size; }; @@ -126948,6 +131276,11 @@ struct each_dev_arg { int (*fn)(struct usb_device *, void *); }; +struct each_hub_arg { + void *data; + int (*fn)(struct device *, void *); +}; + struct usb_qualifier_descriptor { __u8 bLength; __u8 bDescriptorType; @@ -126981,7 +131314,7 @@ enum hub_led_mode { INDICATOR_AMBER_BLINK_OFF = 5, INDICATOR_ALT_BLINK = 6, INDICATOR_ALT_BLINK_OFF = 7, -}; +} __attribute__((mode(byte))); struct usb_tt_clear { struct list_head clear_list; @@ -127014,6 +131347,12 @@ struct usb_ctrlrequest { __le16 wLength; }; +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); +}; + struct usb_sg_request { int status; size_t bytes; @@ -127337,7 +131676,7 @@ struct usbdevfs_ioctl32 { compat_caddr_t data; }; -struct usb_dev_state___2 { +struct usb_dev_state { struct list_head list; struct usb_device *dev; struct file *file; @@ -127367,12 +131706,12 @@ struct usb_memory { void *mem; dma_addr_t dma_handle; long unsigned int vm_start; - struct usb_dev_state___2 *ps; + struct usb_dev_state *ps; }; struct async { struct list_head asynclist; - struct usb_dev_state___2 *ps; + struct usb_dev_state *ps; struct pid *pid; const struct cred *cred; unsigned int signr; @@ -127390,7 +131729,7 @@ struct async { enum snoop_when { SUBMIT = 0, - COMPLETE___2 = 1, + COMPLETE = 1, }; struct quirk_entry { @@ -127404,7 +131743,7 @@ struct class_info { char *class_name; }; -struct usb_phy_roothub___2 { +struct usb_phy_roothub { struct phy *phy; struct list_head list; }; @@ -127531,7 +131870,10 @@ struct usb_gadget_ops { 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 *); }; struct usb_udc; @@ -127544,6 +131886,8 @@ struct usb_gadget { 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; @@ -127600,16 +131944,16 @@ struct dwc2_hw_params { unsigned int enable_dynamic_fifo: 1; unsigned int en_multiple_tx_fifo: 1; unsigned int rx_fifo_size: 16; - char: 8; + int: 8; unsigned int host_nperio_tx_fifo_size: 16; unsigned int dev_nperio_tx_fifo_size: 16; unsigned int host_perio_tx_fifo_size: 16; unsigned int nperio_tx_q_depth: 3; unsigned int host_perio_tx_q_depth: 3; unsigned int dev_token_q_depth: 5; - char: 5; + int: 5; unsigned int max_transfer_size: 26; - char: 6; + long: 6; unsigned int max_packet_count: 11; unsigned int host_channels: 5; unsigned int hs_phy_type: 2; @@ -127618,7 +131962,7 @@ struct dwc2_hw_params { unsigned int acg_enable: 1; unsigned int num_dev_ep: 4; unsigned int num_dev_in_eps: 4; - char: 2; + int: 2; unsigned int num_dev_perio_in_ep: 4; unsigned int total_fifo_size: 16; unsigned int power_optimized: 1; @@ -127649,6 +131993,7 @@ struct dwc2_core_params { bool uframe_sched; bool external_id_pin_ctl; int power_down; + bool no_clock_gating; bool lpm; bool lpm_clock_gating; bool besl; @@ -127762,6 +132107,8 @@ struct dwc2_hsotg { unsigned int gadget_enabled: 1; unsigned int ll_hw_enabled: 1; unsigned int hibernated: 1; + unsigned int in_ppd: 1; + bool bus_suspended; unsigned int reset_phy_on_wake: 1; unsigned int need_phy_for_wake: 1; unsigned int phy_off_for_suspend: 1; @@ -127803,7 +132150,6 @@ struct dwc2_hsotg { u16 periodic_usecs; long unsigned int hs_periodic_bitmap[13]; u16 periodic_qh_count; - bool bus_suspended; bool new_connection; u16 last_frame_num; struct list_head free_hc_list; @@ -127851,7 +132197,7 @@ struct dwc2_host_chan { unsigned int ep_is_in: 1; unsigned int speed: 4; unsigned int ep_type: 2; - char: 6; + int: 6; unsigned int max_packet: 11; unsigned int data_pid_start: 2; unsigned int multi_count: 2; @@ -127974,6 +132320,8 @@ struct usb_role_switch_desc { const char *name; }; +typedef void (*set_params_cb)(struct dwc2_hsotg *); + struct dwc2_hcd_pipe_info { u8 dev_addr; u8 ep_num; @@ -128192,10 +132540,10 @@ struct ehci_hcd { long unsigned int port_c_suspend; long unsigned int suspended_ports; long unsigned int resuming_ports; - struct dma_pool___2 *qh_pool; - struct dma_pool___2 *qtd_pool; - struct dma_pool___2 *itd_pool; - struct dma_pool___2 *sitd_pool; + struct dma_pool *qh_pool; + struct dma_pool *qtd_pool; + struct dma_pool *itd_pool; + struct dma_pool *sitd_pool; unsigned int random_frame; long unsigned int next_statechange; ktime_t last_periodic_enable; @@ -128215,6 +132563,8 @@ struct ehci_hcd { 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; __le32 *ohci_hcctrl_reg; unsigned int has_hostpc: 1; unsigned int has_tdi_phy_lpm: 1; @@ -128247,12 +132597,21 @@ struct ehci_regs { u32 txfill_tuning; u32 reserved2[6]; u32 configured_flag; - u32 port_status[0]; - u32 reserved3[9]; - u32 usbmode; - u32 reserved4[6]; - u32 hostpc[0]; - u32 reserved5[17]; + 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; }; @@ -128364,7 +132723,6 @@ struct ehci_qh_hw { __le32 hw_token; __le32 hw_buf[5]; __le32 hw_buf_hi[5]; - long: 32; long: 64; long: 64; long: 64; @@ -128552,8 +132910,8 @@ struct ohci_hcd { struct ed *ed_controltail; struct ed *periodic[32]; void (*start_hnp)(struct ohci_hcd *); - struct dma_pool___2 *td_cache; - struct dma_pool___2 *ed_cache; + struct dma_pool *td_cache; + struct dma_pool *ed_cache; struct td *td_hash[64]; struct td *dl_start; struct td *dl_end; @@ -128644,11 +133002,10 @@ enum uhci_rh_state { }; struct uhci_hcd { - struct dentry *dentry; long unsigned int io_addr; void *regs; - struct dma_pool___2 *qh_pool; - struct dma_pool___2 *td_pool; + struct dma_pool *qh_pool; + struct dma_pool *td_pool; struct uhci_td *term_td; struct uhci_qh *skelqh[11]; struct uhci_qh *next_qh; @@ -128862,7 +133219,6 @@ struct xhci_ring { struct xhci_segment *deq_seg; struct list_head td_list; u32 cycle_state; - unsigned int err_count; unsigned int stream_id; unsigned int num_segs; unsigned int num_trbs_free; @@ -128882,12 +133238,17 @@ struct xhci_bw_info { unsigned int type; }; +struct xhci_virt_device; + struct xhci_hcd; 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 timer_list stop_cmd_timer; @@ -128901,6 +133262,25 @@ struct xhci_virt_ep { bool use_extended_tbc; }; +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; + long unsigned int flags; + u16 current_mel; + void *debugfs_private; +}; + struct xhci_erst_entry; struct xhci_erst { @@ -128950,8 +133330,6 @@ struct xhci_device_context_array; struct xhci_scratchpad; -struct xhci_virt_device; - struct xhci_root_port_bw_info; struct xhci_port_cap; @@ -128977,6 +133355,7 @@ struct xhci_hcd { u8 max_ports; u8 isoc_threshold; u32 imod_interval; + u32 isoc_bei_interval; int event_ring_max; int page_size; int page_shift; @@ -129000,11 +133379,12 @@ struct xhci_hcd { struct xhci_command *lpm_command; struct xhci_virt_device *devs[256]; struct xhci_root_port_bw_info *rh_bw; - struct dma_pool___2 *device_pool; - struct dma_pool___2 *segment_pool; - struct dma_pool___2 *small_streams_pool; - struct dma_pool___2 *medium_streams_pool; + 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; + long unsigned int run_graceperiod; u32 command; struct s3_save s3; long long unsigned int quirks; @@ -129059,22 +133439,6 @@ struct xhci_interval_bw_table { unsigned int ss_bw_out; }; -struct xhci_tt_bw_info; - -struct xhci_virt_device { - 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; - long unsigned int flags; - u16 current_mel; - void *debugfs_private; -}; - struct xhci_tt_bw_info { struct list_head tt_list; int slot_id; @@ -129099,22 +133463,26 @@ enum xhci_setup_dev { SETUP_CONTEXT_ADDRESS = 1, }; +enum xhci_cancelled_td_status { + TD_DIRTY = 0, + TD_HALTED = 1, + TD_CLEARING_CACHE = 2, + TD_CLEARED = 3, +}; + 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; -}; - -struct xhci_dequeue_state { - struct xhci_segment *new_deq_seg; - union xhci_trb *new_deq_ptr; - int new_cycle_state; - unsigned int stream_id; + unsigned int num_trbs; }; struct xhci_erst_entry { @@ -129149,14 +133517,18 @@ struct xhci_port { int hcd_portnum; struct xhci_hub *rhub; struct xhci_port_cap *port_cap; + unsigned int lpm_incapable: 1; }; 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); }; typedef void (*xhci_get_quirks_t)(struct device *, struct xhci_hcd *); @@ -129586,83 +133958,6 @@ struct dbc_port { bool registered; }; -struct mu3h_sch_tt { - long unsigned int ss_bit_map[1]; - u32 fs_bus_bw[64]; - struct list_head ep_list; - struct usb_tt *usb_tt; - int tt_port; -}; - -struct mu3h_sch_bw_info { - u32 bus_bw[64]; - struct list_head bw_ep_list; -}; - -struct mu3h_sch_ep_info { - u32 esit; - u32 num_budget_microframes; - u32 bw_cost_per_microframe; - struct list_head endpoint; - struct list_head tt_endpoint; - struct mu3h_sch_tt *sch_tt; - u32 ep_type; - u32 maxpkt; - void *ep; - bool allocated; - u32 offset; - u32 repeat; - u32 pkts; - u32 cs_count; - u32 burst_mode; - u32 bw_budget_table[0]; -}; - -struct mu3c_ippc_regs { - __le32 ip_pw_ctr0; - __le32 ip_pw_ctr1; - __le32 ip_pw_ctr2; - __le32 ip_pw_ctr3; - __le32 ip_pw_sts1; - __le32 ip_pw_sts2; - __le32 reserved0[3]; - __le32 ip_xhci_cap; - __le32 reserved1[2]; - __le64 u3_ctrl_p[4]; - __le64 u2_ctrl_p[5]; - __le32 reserved2; - __le32 u2_phy_pll; - __le32 reserved3[33]; -}; - -struct xhci_hcd_mtk { - struct device *dev; - struct usb_hcd *hcd; - struct mu3h_sch_bw_info *sch_array; - struct list_head bw_ep_chk_list; - struct mu3c_ippc_regs *ippc_regs; - bool has_ippc; - int num_u2_ports; - int num_u3_ports; - int u3p_dis_msk; - struct regulator *vusb33; - struct regulator *vbus; - struct clk *sys_clk; - struct clk *xhci_clk; - struct clk *ref_clk; - struct clk *mcu_clk; - struct clk *dma_clk; - struct regmap *pericfg; - struct phy **phys; - int num_phys; - bool lpm_support; - bool u2_lpm_disable; - bool uwk_en; - struct regmap *uwk; - u32 uwk_reg_base; - u32 uwk_vers; -}; - struct xhci_regset { char name[32]; struct debugfs_regset32 regset; @@ -129858,6 +134153,14 @@ struct input_dev_poller { 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 mousedev_hw_data { int dx; int dy; @@ -129995,14 +134298,6 @@ struct atkbd { int num_function_row_keys; }; -struct touchscreen_properties { - unsigned int max_x; - unsigned int max_y; - bool invert_x; - bool invert_y; - bool swap_x_y; -}; - struct uinput_ff_upload { __u32 request_id; __s32 retval; @@ -130165,57 +134460,6 @@ enum { year = 3, }; -struct nvmem_cell_info { - const char *name; - unsigned int offset; - unsigned int bytes; - unsigned int bit_offset; - unsigned int nbits; -}; - -typedef int (*nvmem_reg_read_t)(void *, unsigned int, void *, size_t); - -typedef int (*nvmem_reg_write_t)(void *, unsigned int, void *, size_t); - -enum nvmem_type { - NVMEM_TYPE_UNKNOWN = 0, - NVMEM_TYPE_EEPROM = 1, - NVMEM_TYPE_OTP = 2, - NVMEM_TYPE_BATTERY_BACKED = 3, -}; - -struct nvmem_keepout { - unsigned int start; - unsigned int end; - unsigned char value; -}; - -struct nvmem_config { - struct device *dev; - const char *name; - int id; - struct module *owner; - struct gpio_desc *wp_gpio; - const struct nvmem_cell_info *cells; - int ncells; - const struct nvmem_keepout *keepout; - unsigned int nkeepout; - enum nvmem_type type; - bool read_only; - bool root_only; - 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_device; - struct rtc_plat_data { struct rtc_device *rtc; void *ioaddr; @@ -130245,7 +134489,7 @@ struct sun6i_rtc_dev { const struct sun6i_rtc_clk_data *data; void *base; int irq; - long unsigned int alarm; + time64_t alarm; struct clk_hw hw; struct clk_hw *int_osc; struct clk *losc; @@ -130344,11 +134588,7 @@ typedef void (*btf_trace_i2c_reply)(void *, const struct i2c_adapter *, const st typedef void (*btf_trace_i2c_result)(void *, const struct i2c_adapter *, int, int); -struct i2c_dummy_devres { - struct i2c_client *client; -}; - -struct class_compat___2; +struct class_compat; struct i2c_cmd_arg { unsigned int cmd; @@ -130542,10 +134782,6 @@ struct dw_i2c_dev { bool suspended; }; -struct dw_i2c_platform_data { - unsigned int i2c_scl_freq; -}; - struct omap_i2c_bus_platform_data { u32 clkrate; u32 rev; @@ -130720,7 +134956,7 @@ struct timestamp_event_queue { spinlock_t lock; }; -struct ptp_clock___2 { +struct ptp_clock { struct posix_clock clock; struct device dev; struct ptp_clock_info *info; @@ -130739,6 +134975,20 @@ struct ptp_clock___2 { const struct attribute_group *pin_attr_groups[2]; struct kthread_worker *kworker; struct kthread_delayed_work aux_work; + unsigned int max_vclocks; + unsigned int n_vclocks; + int *vclock_index; + struct mutex n_vclocks_mux; + bool is_virtual_clock; +}; + +struct ptp_vclock { + struct ptp_clock *pclock; + struct ptp_clock_info info; + struct ptp_clock *clock; + struct cyclecounter cc; + struct timecounter tc; + spinlock_t lock; }; struct ptp_clock_caps { @@ -130791,6 +135041,20 @@ struct mt6323_pwrc { u32 base; }; +struct reset_props { + const char *syscon; + u32 protect_reg; + u32 vcore_protect; + u32 if_si_owner_bit; +}; + +struct ocelot_reset_context { + void *base; + struct regmap *cpu_ctrl; + const struct reset_props *props; + struct notifier_block restart_handler; +}; + struct ltc2952_poweroff { struct hrtimer timer_trigger; struct hrtimer timer_wde; @@ -130804,6 +135068,18 @@ struct ltc2952_poweroff { struct notifier_block panic_notifier; }; +struct tps65086 { + struct device *dev; + struct regmap *regmap; + int irq; + struct regmap_irq_chip_data *irq_data; +}; + +struct tps65086_restart { + struct notifier_block handler; + struct device *dev; +}; + enum vexpress_reset_func { FUNC_RESET = 0, FUNC_SHUTDOWN = 1, @@ -130833,6 +135109,7 @@ struct power_supply_resistance_temp_table { }; struct power_supply_battery_info { + unsigned int technology; int energy_full_design_uwh; int charge_full_design_uah; int voltage_min_design_uv; @@ -130906,6 +135183,50 @@ struct power_supply_attr { int text_values_len; }; +enum hwmon_sensor_types { + hwmon_chip = 0, + hwmon_temp = 1, + hwmon_in = 2, + hwmon_curr = 3, + hwmon_power = 4, + hwmon_energy = 5, + hwmon_humidity = 6, + hwmon_fan = 7, + hwmon_pwm = 8, + hwmon_intrusion = 9, + hwmon_max = 10, +}; + +enum hwmon_temp_attributes { + hwmon_temp_enable = 0, + hwmon_temp_input = 1, + hwmon_temp_type = 2, + hwmon_temp_lcrit = 3, + hwmon_temp_lcrit_hyst = 4, + hwmon_temp_min = 5, + hwmon_temp_min_hyst = 6, + hwmon_temp_max = 7, + hwmon_temp_max_hyst = 8, + hwmon_temp_crit = 9, + hwmon_temp_crit_hyst = 10, + hwmon_temp_emergency = 11, + hwmon_temp_emergency_hyst = 12, + hwmon_temp_alarm = 13, + hwmon_temp_lcrit_alarm = 14, + hwmon_temp_min_alarm = 15, + hwmon_temp_max_alarm = 16, + hwmon_temp_crit_alarm = 17, + hwmon_temp_emergency_alarm = 18, + hwmon_temp_fault = 19, + hwmon_temp_offset = 20, + hwmon_temp_label = 21, + hwmon_temp_lowest = 22, + hwmon_temp_highest = 23, + hwmon_temp_reset_history = 24, + hwmon_temp_rated_min = 25, + hwmon_temp_rated_max = 26, +}; + enum hwmon_in_attributes { hwmon_in_enable = 0, hwmon_in_input = 1, @@ -130948,6 +135269,23 @@ enum hwmon_curr_attributes { hwmon_curr_rated_max = 17, }; +struct hwmon_ops { + umode_t (*is_visible)(const void *, enum hwmon_sensor_types, u32, int); + int (*read)(struct device *, enum hwmon_sensor_types, u32, int, long int *); + int (*read_string)(struct device *, enum hwmon_sensor_types, u32, int, const char **); + int (*write)(struct device *, enum hwmon_sensor_types, u32, int, long int); +}; + +struct hwmon_channel_info { + enum hwmon_sensor_types type; + const u32 *config; +}; + +struct hwmon_chip_info { + const struct hwmon_ops *ops; + const struct hwmon_channel_info **info; +}; + struct power_supply_hwmon { struct power_supply *psy; long unsigned int *props; @@ -130964,6 +135302,21 @@ enum cm_batt_temp { CM_BATT_COLD = 2, }; +enum hwmon_chip_attributes { + hwmon_chip_temp_reset_history = 0, + hwmon_chip_in_reset_history = 1, + hwmon_chip_curr_reset_history = 2, + hwmon_chip_power_reset_history = 3, + hwmon_chip_register_tz = 4, + hwmon_chip_update_interval = 5, + hwmon_chip_alarms = 6, + hwmon_chip_samples = 7, + hwmon_chip_curr_samples = 8, + hwmon_chip_in_samples = 9, + hwmon_chip_power_samples = 10, + hwmon_chip_temp_samples = 11, +}; + enum hwmon_power_attributes { hwmon_power_enable = 0, hwmon_power_average = 1, @@ -131429,20 +135782,12 @@ struct power_allocator_params { u32 sustainable_power; }; -struct time_in_idle { - u64 time; - u64 timestamp; -}; - struct cpufreq_cooling_device { - int id; u32 last_load; unsigned int cpufreq_state; unsigned int max_level; struct em_perf_domain *em; struct cpufreq_policy *policy; - struct list_head node; - struct time_in_idle *idle_time; struct freq_qos_request qos_req; }; @@ -131463,6 +135808,7 @@ struct devfreq_dev_profile { long unsigned int initial_freq; unsigned int polling_ms; enum devfreq_timer timer; + bool is_cooling_device; int (*target)(struct device *, long unsigned int *, u32); int (*get_dev_status)(struct device *, struct devfreq_dev_status *); int (*get_cur_freq)(struct device *, long unsigned int *); @@ -131486,11 +135832,13 @@ struct devfreq { 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; long unsigned int 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; long unsigned int scaling_min_freq; @@ -131501,6 +135849,7 @@ struct devfreq { 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; }; @@ -131519,7 +135868,6 @@ struct devfreq_cooling_power { }; struct devfreq_cooling_device { - int id; struct thermal_cooling_device *cdev; struct devfreq *devfreq; long unsigned int cooling_state; @@ -131630,6 +135978,7 @@ struct watchdog_device { 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; long unsigned int status; @@ -131964,10 +136313,10 @@ struct mddev { } bitmap_info; atomic_t max_corr_read_errors; struct list_head all_mddevs; - struct attribute_group *to_remove; + const struct attribute_group *to_remove; struct bio_set bio_set; struct bio_set sync_set; - mempool_t md_io_pool; + struct bio_set io_acct_set; struct bio *flush_bio; atomic_t flush_pending; ktime_t start_flush; @@ -132178,6 +136527,12 @@ struct md_sysfs_entry { ssize_t (*store)(struct mddev *, const char *, size_t); }; +struct md_io_acct { + struct bio *orig_bio; + long unsigned int start_time; + struct bio bio_clone; +}; + struct bitmap_page { char *map; unsigned int hijacked: 1; @@ -132185,14 +136540,6 @@ struct bitmap_page { unsigned int count: 30; }; -struct md_io { - struct mddev *mddev; - bio_end_io_t *orig_bi_end_io; - void *orig_bi_private; - long unsigned int start_time; - struct block_device *part; -}; - struct super_type { char *name; struct module *owner; @@ -132302,6 +136649,7 @@ struct dm_device { typedef enum { STATUSTYPE_INFO = 0, STATUSTYPE_TABLE = 1, + STATUSTYPE_IMA = 2, } status_type_t; union map_info___2 { @@ -132333,6 +136681,7 @@ struct dm_target { bool flush_supported: 1; bool discards_supported: 1; bool limit_swap_bios: 1; + bool emulate_zone_append: 1; }; typedef void (*dm_dtr_fn)(struct dm_target *); @@ -132453,12 +136802,12 @@ enum dm_queue_mode { DM_TYPE_DAX_BIO_BASED = 3, }; -struct mapped_device___2; +struct mapped_device; struct dm_md_mempools; struct dm_table { - struct mapped_device___2 *md; + struct mapped_device *md; enum dm_queue_mode type; unsigned int depth; unsigned int counts[16]; @@ -132476,6 +136825,7 @@ struct dm_table { void (*event_fn)(void *); void *event_context; struct dm_md_mempools *mempools; + struct blk_keyslot_manager *ksm; }; struct dm_stats_last_position; @@ -132484,8 +136834,7 @@ struct dm_stats { struct mutex mutex; struct list_head list; struct dm_stats_last_position *last; - sector_t last_sector; - unsigned int last_rw; + bool precise_timestamps; }; struct dm_stats_aux { @@ -132493,12 +136842,26 @@ struct dm_stats_aux { long long unsigned int duration_ns; }; +struct dm_ima_device_table_metadata { + char *device_metadata; + unsigned int device_metadata_len; + unsigned int num_targets; + char *hash; + unsigned int hash_len; +}; + +struct dm_ima_measurements { + struct dm_ima_device_table_metadata active_table; + struct dm_ima_device_table_metadata inactive_table; + unsigned int dm_version_str_len; +}; + struct dm_kobject_holder { struct kobject kobj; struct completion completion; }; -struct mapped_device___2 { +struct mapped_device { struct mutex suspend_lock; struct mutex table_devices_lock; struct list_head table_devices; @@ -132515,6 +136878,7 @@ struct mapped_device___2 { char name[16]; struct gendisk *disk; struct dax_device *dax_dev; + long unsigned int *pending_io; struct work_struct work; wait_queue_head_t wait; spinlock_t deferred_lock; @@ -132538,23 +136902,13 @@ struct mapped_device___2 { struct blk_mq_tag_set *tag_set; bool init_tio_pdu: 1; struct srcu_struct io_barrier; -}; - -struct dm_md_mempools { - struct bio_set bs; - struct bio_set io_bs; + unsigned int nr_zones; + unsigned int *zwp_offset; + struct dm_ima_measurements ima; }; struct dm_io; -struct clone_info { - struct dm_table *map; - struct bio *bio; - struct dm_io *io; - sector_t sector; - unsigned int sector_count; -}; - struct dm_target_io { unsigned int magic; struct dm_io *io; @@ -132567,7 +136921,7 @@ struct dm_target_io { struct dm_io { unsigned int magic; - struct mapped_device___2 *md; + struct mapped_device *md; blk_status_t status; atomic_t io_count; struct bio *orig_bio; @@ -132577,6 +136931,19 @@ struct dm_io { struct dm_target_io tio; }; +struct dm_md_mempools { + struct bio_set bs; + struct bio_set io_bs; +}; + +struct clone_info { + struct dm_table *map; + struct bio *bio; + struct dm_io *io; + sector_t sector; + unsigned int sector_count; +}; + struct table_device { struct list_head list; refcount_t count; @@ -132607,6 +136974,16 @@ struct dm_dev_internal { struct dm_dev *dm_dev; }; +struct dm_keyslot_manager { + struct blk_keyslot_manager ksm; + struct mapped_device *md; +}; + +struct dm_keyslot_evict_args { + const struct blk_crypto_key *key; + int err; +}; + enum suspend_mode { PRESUSPEND = 0, PRESUSPEND_UNDO = 1, @@ -132684,11 +137061,13 @@ struct dm_file { }; struct hash_cell { - struct list_head name_list; - struct list_head uuid_list; + struct rb_node name_node; + struct rb_node uuid_node; + bool name_set; + bool uuid_set; char *name; char *uuid; - struct mapped_device___2 *md; + struct mapped_device *md; struct dm_table *new_map; }; @@ -132700,7 +137079,7 @@ struct vers_iter { uint32_t flags; }; -typedef int (*ioctl_fn)(struct file *, struct dm_ioctl *, size_t); +typedef int (*ioctl_fn___2)(struct file *, struct dm_ioctl *, size_t); struct dm_io_region { struct block_device *bdev; @@ -132813,7 +137192,7 @@ struct dm_kcopyd_client { struct kcopyd_job { struct dm_kcopyd_client *kc; struct list_head list; - long unsigned int flags; + unsigned int flags; int read_err; long unsigned int write_err; int rw; @@ -132832,8 +137211,8 @@ struct kcopyd_job { struct dm_sysfs_attr { struct attribute attr; - ssize_t (*show)(struct mapped_device___2 *, char *); - ssize_t (*store)(struct mapped_device___2 *, const char *, size_t); + ssize_t (*show)(struct mapped_device *, char *); + ssize_t (*store)(struct mapped_device *, const char *, size_t); }; struct dm_stats_last_position { @@ -132887,7 +137266,7 @@ struct dm_rq_clone_bio_info { }; struct dm_rq_target_io { - struct mapped_device___2 *md; + struct mapped_device *md; struct dm_target *ti; struct request *orig; struct request *clone; @@ -132944,8 +137323,11 @@ enum mem_type { MEM_LRDDR4 = 21, MEM_LPDDR4 = 22, MEM_DDR5 = 23, - MEM_NVDIMM = 24, - MEM_WIO2 = 25, + MEM_RDDR5 = 24, + MEM_LRDDR5 = 25, + MEM_NVDIMM = 26, + MEM_WIO2 = 27, + MEM_HBM2 = 28, }; enum edac_type { @@ -133339,12 +137721,15 @@ enum opp_table_access { struct icc_path; -struct dev_pm_opp___2; +struct dev_pm_opp; struct dev_pm_set_opp_data; -struct opp_table___2 { +struct dev_pm_opp_supply; + +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; @@ -133355,10 +137740,12 @@ struct opp_table___2 { unsigned int voltage_tolerance_v1; unsigned int parsed_static_opps; enum opp_table_access shared_opp; - struct dev_pm_opp___2 *suspend_opp; + long unsigned int current_rate; + 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___2 **required_opp_tables; + struct opp_table **required_opp_tables; unsigned int required_opp_count; unsigned int *supported_hw; unsigned int supported_hw_count; @@ -133372,16 +137759,15 @@ struct opp_table___2 { bool genpd_performance_state; bool is_genpd; int (*set_opp)(struct dev_pm_set_opp_data *); + struct dev_pm_opp_supply *sod_supplies; struct dev_pm_set_opp_data *set_opp_data; struct dentry *dentry; char dentry_name[255]; }; -struct dev_pm_opp_supply; - struct dev_pm_opp_icc_bw; -struct dev_pm_opp___2 { +struct dev_pm_opp { struct list_head node; struct kref kref; bool available; @@ -133395,10 +137781,11 @@ struct dev_pm_opp___2 { struct dev_pm_opp_supply *supplies; struct dev_pm_opp_icc_bw *bandwidth; long unsigned int clock_latency_ns; - struct dev_pm_opp___2 **required_opps; - struct opp_table___2 *opp_table; + struct dev_pm_opp **required_opps; + struct opp_table *opp_table; struct device_node *np; struct dentry *dentry; + const char *of_name; }; enum dev_pm_opp_event { @@ -133456,6 +137843,12 @@ struct cpufreq_freqs { u8 flags; }; +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_driver { char name[16]; u16 flags; @@ -133467,7 +137860,6 @@ struct cpufreq_driver { int (*target_index)(struct cpufreq_policy *, unsigned int); unsigned int (*fast_switch)(struct cpufreq_policy *, unsigned int); void (*adjust_perf)(unsigned int, long unsigned int, long unsigned int, long unsigned int); - unsigned int (*resolve_freq)(struct cpufreq_policy *, unsigned int); unsigned int (*get_intermediate)(struct cpufreq_policy *, unsigned int); int (*target_intermediate)(struct cpufreq_policy *, unsigned int); unsigned int (*get)(unsigned int); @@ -133476,13 +137868,12 @@ struct cpufreq_driver { int (*online)(struct cpufreq_policy *); int (*offline)(struct cpufreq_policy *); int (*exit)(struct cpufreq_policy *); - void (*stop_cpu)(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_stats { @@ -133503,8 +137894,11 @@ enum { OD_SUB_SAMPLE = 1, }; +struct dbs_governor; + struct dbs_data { struct gov_attr_set attr_set; + struct dbs_governor *gov; void *tuners; unsigned int ignore_nice_load; unsigned int sampling_rate; @@ -133513,6 +137907,20 @@ struct dbs_data { unsigned int io_is_busy; }; +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 policy_dbs_info { struct cpufreq_policy *policy; struct mutex update_mutex; @@ -133529,18 +137937,6 @@ struct policy_dbs_info { bool work_in_progress; }; -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 od_ops { unsigned int (*powersave_bias_target)(struct cpufreq_policy *, unsigned int, unsigned int); }; @@ -133594,13 +137990,21 @@ struct private_data { bool have_static_opps; }; +struct tegra124_cpufreq_priv { + struct clk *cpu_clk; + struct clk *pllp_clk; + struct clk *pllx_clk; + struct clk *dfll_clk; + struct platform_device *cpufreq_dt_pdev; +}; + struct cpuidle_governor { char name[16]; struct list_head governor_list; unsigned int rating; - int (*enable)(struct cpuidle_driver___2 *, struct cpuidle_device *); - void (*disable)(struct cpuidle_driver___2 *, struct cpuidle_device *); - int (*select)(struct cpuidle_driver___2 *, struct cpuidle_device *, bool *); + 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); }; @@ -133613,7 +138017,7 @@ struct cpuidle_state_kobj { }; struct cpuidle_driver_kobj { - struct cpuidle_driver___2 *drv; + struct cpuidle_driver *drv; struct completion kobj_unregister; struct kobject kobj; }; @@ -133638,8 +138042,8 @@ struct cpuidle_state_attr { struct cpuidle_driver_attr { struct attribute attr; - ssize_t (*show)(struct cpuidle_driver___2 *, char *); - ssize_t (*store)(struct cpuidle_driver___2 *, const char *, size_t); + ssize_t (*show)(struct cpuidle_driver *, char *); + ssize_t (*store)(struct cpuidle_driver *, const char *, size_t); }; struct ladder_device_state { @@ -133669,18 +138073,19 @@ struct menu_device { int interval_ptr; }; -struct teo_idle_state { - unsigned int early_hits; +struct teo_bin { + unsigned int intercepts; unsigned int hits; - unsigned int misses; + unsigned int recent; }; struct teo_cpu { - u64 time_span_ns; - u64 sleep_length_ns; - struct teo_idle_state states[10]; - int interval_idx; - u64 intervals[8]; + 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]; }; struct psci_cpuidle_data { @@ -133787,6 +138192,7 @@ struct mmc_ext_csd { 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; @@ -133827,6 +138233,15 @@ struct sd_switch_caps { 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; @@ -133885,6 +138300,8 @@ struct mmc_card { 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; @@ -133902,7 +138319,6 @@ struct mmc_card { struct dentry *debugfs_root; struct mmc_part part[7]; unsigned int nr_parts; - unsigned int bouncesz; struct workqueue_struct *complete_wq; }; @@ -133979,13 +138395,11 @@ struct mmc_host { struct mmc_ios ios; unsigned int use_spi_crc: 1; unsigned int claimed: 1; - unsigned int bus_dead: 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 use_blk_mq: 1; unsigned int retune_crc_disable: 1; unsigned int can_dma_map_merge: 1; int rescan_disable; @@ -134004,7 +138418,6 @@ struct mmc_host { int detect_change; struct mmc_slot slot; const struct mmc_bus_ops *bus_ops; - unsigned int bus_refs; unsigned int sdio_irqs; struct task_struct *sdio_irq_thread; struct delayed_work sdio_irq_work; @@ -134025,8 +138438,9 @@ struct mmc_host { int cqe_qdepth; bool cqe_enabled; bool cqe_on; + struct blk_keyslot_manager ksm; bool hsq_enabled; - long: 8; + long: 64; long: 64; long: 64; long: 64; @@ -134079,6 +138493,8 @@ 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_host_ops { @@ -134141,6 +138557,7 @@ struct mmc_bus_ops { 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 trace_event_raw_mmc_request_start { @@ -134224,6 +138641,8 @@ 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, }; struct mmc_driver { @@ -134233,6 +138652,16 @@ struct mmc_driver { 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; @@ -134246,6 +138675,17 @@ struct mmc_fixup { int data; }; +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 { @@ -134307,35 +138747,6 @@ struct mmc_gpio { u32 cd_debounce_delay_ms; }; -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]; -}; - -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, @@ -134369,6 +138780,35 @@ struct mmc_queue_req { int retries; }; +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]; +}; + +enum mmc_issued { + MMC_REQ_STARTED = 0, + MMC_REQ_BUSY = 1, + MMC_REQ_FAILED_TO_START = 2, + MMC_REQ_FINISHED = 3, +}; + struct mmc_blk_data; struct mmc_queue { @@ -134381,7 +138821,6 @@ struct mmc_queue { int in_flight[3]; unsigned int cqe_busy; bool busy; - bool use_cqe; bool recovery_needed; bool in_recovery; bool rw_wait; @@ -134401,18 +138840,21 @@ struct mmc_blk_data { struct list_head part; struct list_head rpmbs; unsigned int flags; - unsigned int usage; + struct kref kref; unsigned int read_only; unsigned int part_type; unsigned int reset_done; unsigned int part_curr; - struct device_attribute force_ro; - struct device_attribute power_ro_lock; int area_type; struct dentry *status_dentry; struct dentry *ext_csd_dentry; }; +struct mmc_blk_busy_data { + struct mmc_card *card; + u32 status; +}; + struct mmc_rpmb_data { struct device dev; struct cdev chrdev; @@ -134578,10 +139020,10 @@ struct sdmmc_dlyb { u32 max; }; -struct pci_dev___2; +struct pci_dev; struct sdhci_pci_data { - struct pci_dev___2 *pdev; + struct pci_dev *pdev; int slotno; int rst_n_gpio; int cd_gpio; @@ -134589,6 +139031,12 @@ struct sdhci_pci_data { void (*cleanup)(struct sdhci_pci_data *); }; +enum led_default_state { + LEDS_DEFSTATE_OFF = 0, + LEDS_DEFSTATE_ON = 1, + LEDS_DEFSTATE_KEEP = 2, +}; + struct led_init_data { struct fwnode_handle *fwnode; const char *default_label; @@ -134689,9 +139137,9 @@ struct rpi_firmware_property_tag_header { u32 req_resp_size; }; -struct rpi_firmware___2 { +struct rpi_firmware { struct mbox_client cl; - struct mbox_chan___2 *chan; + struct mbox_chan *chan; struct completion c; u32 enabled; struct kref consumers; @@ -134777,13 +139225,6 @@ struct qcom_scm_wb_entry { void *entry; }; -struct arm_smccc_quirk { - int id; - union { - long unsigned int a6; - } state; -}; - struct arm_smccc_args { long unsigned int args[8]; }; @@ -134802,6 +139243,23 @@ struct scm_legacy_response { __le32 is_complete; }; +struct simplefb_platform_data { + u32 width; + u32 height; + u32 stride; + const char *format; +}; + +struct simplefb_format { + const char *name; + u32 bits_per_pixel; + struct fb_bitfield red; + struct fb_bitfield green; + struct fb_bitfield blue; + struct fb_bitfield transp; + u32 fourcc; +}; + struct ti_msgmgr_message { size_t len; u8 *buf; @@ -135152,8 +139610,8 @@ struct ti_sci_info { size_t debug_region_size; struct ti_sci_handle handle; struct mbox_client cl; - struct mbox_chan___2 *chan_tx; - struct mbox_chan___2 *chan_rx; + struct mbox_chan *chan_tx; + struct mbox_chan *chan_rx; struct ti_sci_xfers_info minfo; struct list_head node; u8 host_id; @@ -135170,177 +139628,24 @@ struct scmi_revision_info { char sub_vendor_id[16]; }; -struct scmi_clock_info { - char name[16]; - bool rate_discrete; - union { - struct { - int num_rates; - u64 rates[16]; - } list; - struct { - u64 min_rate; - u64 max_rate; - u64 step_size; - } range; - }; -}; - -struct scmi_handle; - -struct scmi_clk_ops { - int (*count_get)(const struct scmi_handle *); - const struct scmi_clock_info * (*info_get)(const struct scmi_handle *, u32); - int (*rate_get)(const struct scmi_handle *, u32, u64 *); - int (*rate_set)(const struct scmi_handle *, u32, u64); - int (*enable)(const struct scmi_handle *, u32); - int (*disable)(const struct scmi_handle *, u32); -}; - -struct scmi_perf_ops; - -struct scmi_power_ops; +struct scmi_xfer_ops; -struct scmi_sensor_ops; - -struct scmi_reset_ops; - -struct scmi_voltage_ops; - -struct scmi_notify_ops; - -struct scmi_handle { +struct scmi_protocol_handle { struct device *dev; - struct scmi_revision_info *version; - const struct scmi_perf_ops *perf_ops; - const struct scmi_clk_ops *clk_ops; - const struct scmi_power_ops *power_ops; - const struct scmi_sensor_ops *sensor_ops; - const struct scmi_reset_ops *reset_ops; - const struct scmi_voltage_ops *voltage_ops; - const struct scmi_notify_ops *notify_ops; - void *perf_priv; - void *clk_priv; - void *power_priv; - void *sensor_priv; - void *reset_priv; - void *voltage_priv; - void *notify_priv; - void *system_priv; -}; - -struct scmi_perf_ops { - int (*limits_set)(const struct scmi_handle *, u32, u32, u32); - int (*limits_get)(const struct scmi_handle *, u32, u32 *, u32 *); - int (*level_set)(const struct scmi_handle *, u32, u32, bool); - int (*level_get)(const struct scmi_handle *, u32, u32 *, bool); - int (*device_domain_id)(struct device *); - int (*transition_latency_get)(const struct scmi_handle *, struct device *); - int (*device_opps_add)(const struct scmi_handle *, struct device *); - int (*freq_set)(const struct scmi_handle *, u32, long unsigned int, bool); - int (*freq_get)(const struct scmi_handle *, u32, long unsigned int *, bool); - int (*est_power_get)(const struct scmi_handle *, u32, long unsigned int *, long unsigned int *); - bool (*fast_switch_possible)(const struct scmi_handle *, struct device *); - bool (*power_scale_mw_get)(const struct scmi_handle *); -}; - -struct scmi_power_ops { - int (*num_domains_get)(const struct scmi_handle *); - char * (*name_get)(const struct scmi_handle *, u32); - int (*state_set)(const struct scmi_handle *, u32, u32); - int (*state_get)(const struct scmi_handle *, u32, u32 *); -}; - -struct scmi_sensor_reading { - long long int value; - long long unsigned int timestamp; -}; - -struct scmi_range_attrs { - long long int min_range; - long long int max_range; -}; - -struct scmi_sensor_axis_info { - unsigned int id; - unsigned int type; - int scale; - char name[16]; - bool extended_attrs; - unsigned int resolution; - int exponent; - struct scmi_range_attrs attrs; -}; - -struct scmi_sensor_intervals_info { - bool segmented; - unsigned int count; - unsigned int *desc; - unsigned int prealloc_pool[16]; -}; - -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[16]; - bool extended_scalar_attrs; - unsigned int sensor_power; - unsigned int resolution; - int exponent; - struct scmi_range_attrs scalar_attrs; -}; - -struct scmi_sensor_ops { - int (*count_get)(const struct scmi_handle *); - const struct scmi_sensor_info * (*info_get)(const struct scmi_handle *, u32); - int (*trip_point_config)(const struct scmi_handle *, u32, u8, u64); - int (*reading_get)(const struct scmi_handle *, u32, u64 *); - int (*reading_get_timestamped)(const struct scmi_handle *, u32, u8, struct scmi_sensor_reading *); - int (*config_get)(const struct scmi_handle *, u32, u32 *); - int (*config_set)(const struct scmi_handle *, u32, u32); + const struct scmi_xfer_ops *xops; + int (*set_priv)(const struct scmi_protocol_handle *, void *); + void * (*get_priv)(const struct scmi_protocol_handle *); }; -struct scmi_reset_ops { - int (*num_domains_get)(const struct scmi_handle *); - char * (*name_get)(const struct scmi_handle *, u32); - int (*latency_get)(const struct scmi_handle *, u32); - int (*reset)(const struct scmi_handle *, u32); - int (*assert)(const struct scmi_handle *, u32); - int (*deassert)(const struct scmi_handle *, u32); -}; +struct scmi_device; -struct scmi_voltage_info { - unsigned int id; - bool segmented; - bool negative_volts_allowed; - unsigned int attributes; - char name[16]; - unsigned int num_levels; - int *levels_uv; -}; - -struct scmi_voltage_ops { - int (*num_domains_get)(const struct scmi_handle *); - const struct scmi_voltage_info * (*info_get)(const struct scmi_handle *, u32); - int (*config_set)(const struct scmi_handle *, u32, u32); - int (*config_get)(const struct scmi_handle *, u32, u32 *); - int (*level_set)(const struct scmi_handle *, u32, u32, s32); - int (*level_get)(const struct scmi_handle *, u32, s32 *); -}; +struct scmi_handle; struct scmi_notify_ops { - int (*register_event_notifier)(const struct scmi_handle *, u8, u8, u32 *, struct notifier_block *); - int (*unregister_event_notifier)(const struct scmi_handle *, u8, u8, u32 *, struct notifier_block *); + 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 { @@ -135351,6 +139656,14 @@ struct scmi_device { struct scmi_handle *handle; }; +struct scmi_handle { + struct device *dev; + struct scmi_revision_info *version; + const void * (*devm_protocol_get)(struct scmi_device *, u8, struct scmi_protocol_handle **); + void (*devm_protocol_put)(struct scmi_device *, u8); + const struct scmi_notify_ops *notify_ops; +}; + struct scmi_device_id { u8 protocol_id; const char *name; @@ -135364,11 +139677,30 @@ struct scmi_driver { struct device_driver driver; }; -typedef int (*scmi_prot_init_fn_t)(struct scmi_handle *); +struct scmi_event { + u8 id; + size_t max_payld_sz; + size_t max_report_sz; +}; + +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_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_msg_hdr { u8 id; u8 protocol_id; + u8 type; u16 seq; u32 status; bool poll_completion; @@ -135386,6 +139718,50 @@ struct scmi_xfer { 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; + spinlock_t lock; + void *priv; +}; + +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 *); +}; + +typedef int (*scmi_prot_init_ph_fn_t)(const struct scmi_protocol_handle *); + +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; +}; + +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, +}; + +enum scmi_common_cmd { + PROTOCOL_VERSION = 0, + PROTOCOL_ATTRIBUTES = 1, + PROTOCOL_MESSAGE_ATTRIBUTES = 2, }; struct scmi_chan_info { @@ -135395,9 +139771,11 @@ struct scmi_chan_info { }; struct scmi_transport_ops { + int (*link_supplier)(struct device *); bool (*chan_available)(struct device *, 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); void (*fetch_response)(struct scmi_chan_info *, struct scmi_xfer *); @@ -135407,29 +139785,14 @@ 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; }; -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, -}; - -enum scmi_common_cmd { - PROTOCOL_VERSION = 0, - PROTOCOL_ATTRIBUTES = 1, - PROTOCOL_MESSAGE_ATTRIBUTES = 2, -}; - struct trace_event_raw_scmi_xfer_begin { struct trace_entry ent; int transfer_id; @@ -135486,10 +139849,26 @@ enum scmi_error_codes { SCMI_ERR_PROTOCOL = 4294967286, }; +struct scmi_requested_dev { + const struct scmi_device_id *id_table; + struct list_head node; +}; + struct scmi_xfers_info { - struct scmi_xfer *xfer_block; long unsigned int *xfer_alloc_table; spinlock_t xfer_lock; + int max_msg; + struct hlist_head free_xfers; + struct hlist_head pending_xfers[512]; +}; + +struct scmi_protocol_instance { + const struct scmi_handle *handle; + const struct scmi_protocol *proto; + void *gid; + refcount_t users; + void *priv; + struct scmi_protocol_handle ph; }; struct scmi_info { @@ -135501,25 +139880,18 @@ struct scmi_info { 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; + void *notify_priv; struct list_head node; int users; }; -struct scmi_prot_devnames { - int protocol_id; - char *names[2]; -}; - -struct scmi_event { - u8 id; - size_t max_payld_sz; - size_t max_report_sz; -}; - -struct scmi_event_ops { - int (*set_notify_enabled)(const struct scmi_handle *, u8, u32, bool); - void * (*fill_custom_report)(const struct scmi_handle *, u8, ktime_t, const void *, size_t, void *, u32 *); +struct scmi_protocol_devres { + const struct scmi_handle *handle; + u8 protocol_id; }; struct scmi_registered_events_desc; @@ -135556,6 +139928,7 @@ struct scmi_registered_events_desc { 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]; }; @@ -135584,6 +139957,15 @@ struct scmi_event_handler { 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_notification_events { SCMI_EVENT_POWER_STATE_CHANGED = 0, SCMI_EVENT_PERFORMANCE_LIMITS_CHANGED = 0, @@ -135621,6 +140003,11 @@ struct scmi_msg_resp_base_attributes { __le16 reserved; }; +struct scmi_msg_resp_base_discover_agent { + __le32 agent_id; + u8 name[16]; +}; + struct scmi_msg_base_error_notify { __le32 event_control; }; @@ -135631,6 +140018,31 @@ struct scmi_base_error_notify_payld { __le64 msg_reports[1024]; }; +struct scmi_clock_info { + char name[16]; + bool rate_discrete; + union { + struct { + int num_rates; + u64 rates[16]; + } list; + struct { + u64 min_rate; + u64 max_rate; + u64 step_size; + } range; + }; +}; + +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); + int (*disable)(const struct scmi_protocol_handle *, u32); +}; + enum scmi_clock_protocol_cmd { CLOCK_ATTRIBUTES = 3, CLOCK_DESCRIBE_RATES = 4, @@ -135683,6 +140095,21 @@ struct clock_info { struct scmi_clock_info *clk; }; +struct scmi_perf_proto_ops { + 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 (*device_domain_id)(struct device *); + int (*transition_latency_get)(const struct scmi_protocol_handle *, struct device *); + int (*device_opps_add)(const struct scmi_protocol_handle *, struct device *); + int (*freq_set)(const struct scmi_protocol_handle *, u32, long unsigned int, bool); + int (*freq_get)(const struct scmi_protocol_handle *, u32, long unsigned int *, bool); + int (*est_power_get)(const struct scmi_protocol_handle *, u32, long unsigned int *, long unsigned int *); + bool (*fast_switch_possible)(const struct scmi_protocol_handle *, struct device *); + bool (*power_scale_mw_get)(const struct scmi_protocol_handle *); +}; + struct scmi_perf_limits_report { ktime_t timestamp; unsigned int agent_id; @@ -135841,6 +140268,13 @@ struct scmi_perf_info { struct perf_dom_info *dom_info; }; +struct scmi_power_proto_ops { + int (*num_domains_get)(const struct scmi_protocol_handle *); + 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 *); +}; + struct scmi_power_state_changed_report { ktime_t timestamp; unsigned int agent_id; @@ -135900,6 +140334,15 @@ struct scmi_power_info { struct power_dom_info *dom_info; }; +struct scmi_reset_proto_ops { + int (*num_domains_get)(const struct scmi_protocol_handle *); + 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); +}; + struct scmi_reset_issued_report { ktime_t timestamp; unsigned int agent_id; @@ -135949,6 +140392,65 @@ struct scmi_reset_info { struct reset_dom_info *dom_info; }; +struct scmi_sensor_reading { + long long int value; + long long unsigned int timestamp; +}; + +struct scmi_range_attrs { + long long int min_range; + long long int max_range; +}; + +struct scmi_sensor_axis_info { + unsigned int id; + unsigned int type; + int scale; + char name[16]; + bool extended_attrs; + unsigned int resolution; + int exponent; + struct scmi_range_attrs attrs; +}; + +struct scmi_sensor_intervals_info { + bool segmented; + unsigned int count; + unsigned int *desc; + unsigned int prealloc_pool[16]; +}; + +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[16]; + bool extended_scalar_attrs; + unsigned int sensor_power; + unsigned int resolution; + int exponent; + struct scmi_range_attrs scalar_attrs; +}; + +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); +}; + struct scmi_sensor_trip_point_report { ktime_t timestamp; unsigned int agent_id; @@ -136123,6 +140625,25 @@ struct scmi_system_info { u32 version; }; +struct scmi_voltage_info { + unsigned int id; + bool segmented; + bool negative_volts_allowed; + unsigned int attributes; + char name[16]; + unsigned int num_levels; + int *levels_uv; +}; + +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, u32, s32); + int (*level_get)(const struct scmi_protocol_handle *, u32, s32 *); +}; + enum scmi_voltage_protocol_cmd { VOLTAGE_DOMAIN_ATTRIBUTES = 3, VOLTAGE_DESCRIBE_LEVELS = 4, @@ -136174,20 +140695,47 @@ struct scmi_shared_mem { u8 msg_payload[0]; }; -struct scmi_shared_mem___2; +struct scmi_shared_mem; struct scmi_mailbox { struct mbox_client cl; - struct mbox_chan___2 *chan; + struct mbox_chan *chan; struct scmi_chan_info *cinfo; - struct scmi_shared_mem___2 *shmem; + struct scmi_shared_mem *shmem; }; struct scmi_smc { struct scmi_chan_info *cinfo; - struct scmi_shared_mem___2 *shmem; + struct scmi_shared_mem *shmem; struct mutex shmem_lock; u32 func_id; + int irq; + struct completion tx_complete; +}; + +struct scmi_msg_payld { + __le32 msg_header; + __le32 msg_payload[0]; +}; + +struct scmi_vio_channel { + struct virtqueue *vqueue; + struct scmi_chan_info *cinfo; + struct list_head free_list; + bool is_rx; + bool ready; + unsigned int max_msg; + spinlock_t lock; + spinlock_t ready_lock; +}; + +struct scmi_msg_payld; + +struct scmi_vio_msg { + struct scmi_msg_payld *request; + struct scmi_msg_payld *input; + struct list_head list; + unsigned int rx_len; }; struct meson_sm_cmd { @@ -136202,7 +140750,7 @@ struct meson_sm_chip { struct meson_sm_cmd cmd[0]; }; -struct meson_sm_firmware___2 { +struct meson_sm_firmware { const struct meson_sm_chip *chip; void *sm_shmem_in_base; void *sm_shmem_out_base; @@ -136415,11 +140963,91 @@ struct cper_sec_fw_err_rec_ref { guid_t record_identifier_guid; }; +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, +}; + +struct efi_runtime_work { + void *arg1; + void *arg2; + void *arg3; + void *arg4; + void *arg5; + efi_status_t status; + struct work_struct work; + enum efi_rts_ids efi_rts_id; + struct completion efi_rts_comp; +}; + struct efi_mokvar_sysfs_attr { struct bin_attribute bin_attr; struct list_head node; }; +enum { + M_I17 = 0, + M_I20 = 1, + M_I20_SR = 2, + M_I24 = 3, + M_I24_8_1 = 4, + M_I24_10_1 = 5, + M_I27_11_1 = 6, + M_MINI = 7, + M_MINI_3_1 = 8, + M_MINI_4_1 = 9, + M_MB = 10, + M_MB_2 = 11, + M_MB_3 = 12, + M_MB_5_1 = 13, + M_MB_6_1 = 14, + M_MB_7_1 = 15, + M_MB_SR = 16, + M_MBA = 17, + M_MBA_3 = 18, + M_MBP = 19, + M_MBP_2 = 20, + M_MBP_2_2 = 21, + M_MBP_SR = 22, + M_MBP_4 = 23, + M_MBP_5_1 = 24, + M_MBP_5_2 = 25, + M_MBP_5_3 = 26, + M_MBP_6_1 = 27, + M_MBP_6_2 = 28, + M_MBP_7_1 = 29, + M_MBP_8_2 = 30, + M_UNKNOWN = 31, +}; + +struct efifb_dmi_info { + char *optname; + long unsigned int base; + int stride; + int width; + int height; + int flags; +}; + +enum { + OVERRIDE_NONE = 0, + OVERRIDE_BASE = 1, + OVERRIDE_STRIDE = 2, + OVERRIDE_HEIGHT = 4, + OVERRIDE_WIDTH = 8, +}; + typedef void *efi_event_t; typedef void (*efi_event_notify_t)(efi_event_t, void *); @@ -136636,17 +141264,17 @@ enum imx_misc_func { IMX_SC_MISC_FUNC_GET_BUTTON_STATUS = 18, }; -struct imx_sc_ipc___2; +struct imx_sc_ipc; struct imx_sc_chan { - struct imx_sc_ipc___2 *sc_ipc; + struct imx_sc_ipc *sc_ipc; struct mbox_client cl; - struct mbox_chan___2 *ch; + struct mbox_chan *ch; int idx; struct completion tx_done; }; -struct imx_sc_ipc___2 { +struct imx_sc_ipc { struct imx_sc_chan chans[8]; struct device *dev; struct mutex lock; @@ -136761,7 +141389,7 @@ enum imx_sc_rm_func { struct imx_sc_msg_rm_rsrc_owned { struct imx_sc_rpc_msg hdr; u16 resource; - short: 16; + long: 0; }; struct imx_sc_msg_misc_get_soc_id { @@ -136812,6 +141440,208 @@ typedef long unsigned int psci_fn(long unsigned int, long unsigned int, long uns typedef int (*psci_initcall_t)(const struct device_node *); +struct mrq_ping_request { + uint32_t challenge; +}; + +struct mrq_ping_response { + uint32_t reply; +}; + +struct mrq_query_tag_request { + uint32_t addr; +}; + +struct mrq_query_fw_tag_response { + uint8_t tag[32]; +}; + +struct mrq_query_abi_request { + uint32_t mrq; +}; + +struct mrq_query_abi_response { + int32_t status; +}; + +struct tegra_ivc_header; + +struct tegra_ivc { + struct device *peer; + struct { + struct tegra_ivc_header *channel; + unsigned int position; + dma_addr_t phys; + } rx; + struct { + struct tegra_ivc_header *channel; + 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 tegra210_bpmp { + void *atomics; + void *arb_sema; + struct irq_data *tx_irq_data; +}; + +struct tegra186_bpmp { + struct tegra_bpmp *parent; + struct { + struct gen_pool *pool; + dma_addr_t phys; + void *virt; + } tx; + struct { + struct gen_pool *pool; + dma_addr_t phys; + void *virt; + } rx; + struct { + struct mbox_client client; + struct mbox_chan *channel; + } mbox; +}; + +enum mrq_debugfs_commands { + CMD_DEBUGFS_READ = 1, + CMD_DEBUGFS_WRITE = 2, + CMD_DEBUGFS_DUMPDIR = 3, + CMD_DEBUGFS_MAX = 4, +}; + +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 cmd_debugfs_fileop_response { + uint32_t reserved; + uint32_t nbytes; +}; + +struct cmd_debugfs_dumpdir_response { + uint32_t reserved; + uint32_t nbytes; +}; + +struct mrq_debugfs_request { + uint32_t cmd; + union { + struct cmd_debugfs_fileop_request fop; + struct cmd_debugfs_dumpdir_request dumpdir; + }; +}; + +struct mrq_debugfs_response { + int32_t reserved; + union { + struct cmd_debugfs_fileop_response fop; + struct cmd_debugfs_dumpdir_response dumpdir; + }; +}; + +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, +}; + +struct cmd_debug_fopen_request { + char name[116]; +}; + +struct cmd_debug_fopen_response { + uint32_t fd; + uint32_t datalen; +}; + +struct cmd_debug_fread_request { + uint32_t fd; +}; + +struct cmd_debug_fread_response { + uint32_t readlen; + char data[116]; +}; + +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 mrq_debug_response { + union { + struct cmd_debug_fopen_response fop; + struct cmd_debug_fread_response frd; + }; +}; + +struct seqbuf { + char *buf; + size_t pos; + size_t size; +}; + +struct tegra_ivc_header { + union { + struct { + u32 count; + u32 state; + }; + u8 pad[64]; + } tx; + union { + u32 count; + u8 pad[64]; + } rx; +}; + +enum tegra_ivc_state { + TEGRA_IVC_STATE_ESTABLISHED = 0, + TEGRA_IVC_STATE_SYNC = 1, + TEGRA_IVC_STATE_ACK = 2, +}; + enum pm_api_id { PM_GET_API_VERSION = 1, PM_SYSTEM_SHUTDOWN = 12, @@ -136824,6 +141654,12 @@ enum pm_api_id { PM_FPGA_LOAD = 22, PM_FPGA_GET_STATUS = 23, PM_GET_CHIPID = 24, + PM_PINCTRL_REQUEST = 28, + PM_PINCTRL_RELEASE = 29, + PM_PINCTRL_GET_FUNCTION = 30, + PM_PINCTRL_SET_FUNCTION = 31, + PM_PINCTRL_CONFIG_PARAM_GET = 32, + PM_PINCTRL_CONFIG_PARAM_SET = 33, PM_IOCTL = 34, PM_QUERY_DATA = 35, PM_CLOCK_ENABLE = 36, @@ -136837,7 +141673,6 @@ enum pm_api_id { PM_CLOCK_GETPARENT = 44, PM_SECURE_AES = 47, PM_FEATURE_CHECK = 63, - PM_API_MAX = 64, }; enum pm_ret_status { @@ -136974,8 +141809,6 @@ struct sh_cmt_channel { struct clocksource cs; u64 total_cycles; bool cs_enabled; - long: 56; - long: 64; long: 64; long: 64; long: 64; @@ -136987,6 +141820,7 @@ struct sh_cmt_device { void *mapbase; struct clk *clk; long unsigned int rate; + unsigned int reg_delay; raw_spinlock_t lock; struct sh_cmt_channel *channels; unsigned int num_channels; @@ -137019,7 +141853,6 @@ struct sh_tmu_channel { long: 64; long: 64; long: 64; - long: 64; }; struct sh_tmu_device { @@ -137089,6 +141922,25 @@ enum arch_timer_spi_nr { ARCH_TIMER_MAX_TIMER_SPI = 2, }; +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; + u32 (*read_cntp_tval_el0)(); + u32 (*read_cntv_tval_el0)(); + u64 (*read_cntpct_el0)(); + u64 (*read_cntvct_el0)(); + int (*set_next_event_phys)(long unsigned int, struct clock_event_device *); + int (*set_next_event_virt)(long unsigned int, struct clock_event_device *); + bool disable_compat_vdso; +}; + struct arch_timer { void *base; long: 64; @@ -137156,6 +142008,11 @@ struct mchp_pit64b_clkevt { struct clock_event_device clkevt; }; +struct mchp_pit64b_clksrc { + struct mchp_pit64b_timer timer; + struct clocksource clksrc; +}; + struct alias_prop { struct list_head link; const char *alias; @@ -137172,6 +142029,8 @@ struct of_endpoint { struct supplier_bindings { struct device_node * (*parse_prop)(struct device_node *, const char *, int); + bool optional; + bool node_not_dev; }; struct of_changeset_entry { @@ -137396,7 +142255,7 @@ struct ec_response_motion_sensor_data { int16_t add_info[2]; }; }; -} __attribute__((packed)); +}; struct ec_response_motion_sense_fifo_info { uint16_t size; @@ -137502,7 +142361,7 @@ struct ec_response_motion_sense { uint8_t module_flags; uint8_t sensor_count; struct ec_response_motion_sensor_data sensor[0]; - } __attribute__((packed)) dump; + } dump; struct { uint8_t type; uint8_t location; @@ -137593,7 +142452,7 @@ union ec_response_get_next_data_v1 { struct { uint8_t reserved[3]; struct ec_response_motion_sense_fifo_info info; - } __attribute__((packed)) sensor_fifo; + } sensor_fifo; uint32_t buttons; uint32_t switches; uint32_t fp_events; @@ -137675,24 +142534,6 @@ struct cros_ec_dev { u32 features[2]; }; -enum { - CROS_EC_SENSOR_LAST_TS = 0, - CROS_EC_SENSOR_NEW_TS = 1, - CROS_EC_SENSOR_ALL_TS = 2, -}; - -struct cros_ec_sensors_ts_filter_state { - s64 x_offset; - s64 y_offset; - s64 x_history[64]; - s64 y_history[64]; - s64 m_history[64]; - int history_len; - s64 temp_buf[64]; - s64 median_m; - s64 median_error; -}; - struct trace_event_raw_cros_ec_request_start { struct trace_entry ent; uint32_t version; @@ -137715,60 +142556,14 @@ struct trace_event_raw_cros_ec_request_done { char __data[0]; }; -struct trace_event_raw_cros_ec_sensorhub_timestamp { - struct trace_entry ent; - u32 ec_sample_timestamp; - u32 ec_fifo_timestamp; - s64 fifo_timestamp; - s64 current_timestamp; - s64 current_time; - s64 delta; - char __data[0]; -}; - -struct trace_event_raw_cros_ec_sensorhub_data { - struct trace_entry ent; - u32 ec_sensor_num; - u32 ec_fifo_timestamp; - s64 fifo_timestamp; - s64 current_timestamp; - s64 current_time; - s64 delta; - char __data[0]; -}; - -struct trace_event_raw_cros_ec_sensorhub_filter { - struct trace_entry ent; - s64 dx; - s64 dy; - s64 median_m; - s64 median_error; - s64 history_len; - s64 x; - s64 y; - char __data[0]; -}; - struct trace_event_data_offsets_cros_ec_request_start {}; struct trace_event_data_offsets_cros_ec_request_done {}; -struct trace_event_data_offsets_cros_ec_sensorhub_timestamp {}; - -struct trace_event_data_offsets_cros_ec_sensorhub_data {}; - -struct trace_event_data_offsets_cros_ec_sensorhub_filter {}; - typedef void (*btf_trace_cros_ec_request_start)(void *, struct cros_ec_command *); typedef void (*btf_trace_cros_ec_request_done)(void *, struct cros_ec_command *, int); -typedef void (*btf_trace_cros_ec_sensorhub_timestamp)(void *, u32, u32, s64, s64, s64); - -typedef void (*btf_trace_cros_ec_sensorhub_data)(void *, u32, u32, s64, s64, s64); - -typedef void (*btf_trace_cros_ec_sensorhub_filter)(void *, struct cros_ec_sensors_ts_filter_state *, s64, s64); - struct rockchip_mbox_msg { u32 cmd; int rx_size; @@ -137807,7 +142602,8 @@ enum acpi_pcct_type { 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_RESERVED = 5, + ACPI_PCCT_TYPE_HW_REG_COMM_SUBSPACE = 5, + ACPI_PCCT_TYPE_RESERVED = 6, }; struct acpi_pcct_subspace { @@ -137897,6 +142693,64 @@ struct ti_msgmgr_inst { struct mbox_chan *chans; }; +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; + long unsigned int mask; +}; + +struct tegra_hsp_doorbell { + struct tegra_hsp_channel channel; + struct list_head list; + const char *name; + unsigned int master; + unsigned int index; +}; + +struct tegra_hsp_mailbox { + struct tegra_hsp_channel channel; + unsigned int index; + bool producer; +}; + +struct tegra_hsp_db_map { + const char *name; + unsigned int master; + unsigned int index; +}; + +struct tegra_hsp_soc { + const struct tegra_hsp_db_map *map; + bool has_per_mb_ie; +}; + struct zynqmp_ipi_mchan { int is_opened; void *req_buf; @@ -137948,17 +142802,17 @@ struct qcom_ipcc { int irq; }; -struct hwspinlock___2; +struct hwspinlock; struct hwspinlock_ops { - int (*trylock)(struct hwspinlock___2 *); - void (*unlock)(struct hwspinlock___2 *); - void (*relax)(struct hwspinlock___2 *); + int (*trylock)(struct hwspinlock *); + void (*unlock)(struct hwspinlock *); + void (*relax)(struct hwspinlock *); }; struct hwspinlock_device; -struct hwspinlock___2 { +struct hwspinlock { struct hwspinlock_device *bank; spinlock_t lock; void *priv; @@ -137969,7 +142823,7 @@ struct hwspinlock_device { const struct hwspinlock_ops *ops; int base_id; int num_locks; - struct hwspinlock___2 lock[0]; + struct hwspinlock lock[0]; }; struct resource_table { @@ -138043,6 +142897,7 @@ struct rproc; struct rproc_mem_entry { void *va; + bool is_iomem; dma_addr_t dma; size_t len; u32 da; @@ -138091,11 +142946,11 @@ struct rproc { 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 autonomous; struct list_head dump_segments; int nb_vdev; u8 elf_class; @@ -138115,11 +142970,13 @@ struct rproc_ops { 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); + 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 *); @@ -138133,8 +142990,9 @@ enum rproc_state { RPROC_RUNNING = 2, RPROC_CRASHED = 3, RPROC_DELETED = 4, - RPROC_DETACHED = 5, - RPROC_LAST = 6, + RPROC_ATTACHED = 5, + RPROC_DETACHED = 6, + RPROC_LAST = 7, }; enum rproc_crash_type { @@ -138297,7 +143155,7 @@ union extcon_property_value { struct extcon_cable; -struct extcon_dev___2 { +struct extcon_dev { const char *name; const unsigned int *supported_cable; const u32 *mutually_exclusive; @@ -138316,7 +143174,7 @@ struct extcon_dev___2 { }; struct extcon_cable { - struct extcon_dev___2 *edev; + struct extcon_dev *edev; int cable_index; struct attribute_group attr_g; struct device_attribute attr_name; @@ -138339,7 +143197,7 @@ struct __extcon_info { }; struct extcon_dev_notifier_devres { - struct extcon_dev___2 *edev; + struct extcon_dev *edev; unsigned int id; struct notifier_block *nb; }; @@ -138544,50 +143402,177 @@ struct fsl_ifc_ctrl { bool little_endian; }; -struct mtk_smi_larb_iommu { - struct device *dev; - unsigned int mmu; +enum { + C0D0U0 = 0, + C0D0U1 = 1, + C0D1U0 = 2, + C0D1U1 = 3, + C1D0U0 = 4, + C1D0U1 = 5, + C1D1U0 = 6, + C1D1U1 = 7, + DRAM_CLKTREE_NUM = 8, +}; + +struct tegra210_emc_per_channel_regs { + u16 bank; + u16 offset; }; -enum mtk_smi_gen { - MTK_SMI_GEN1 = 0, - MTK_SMI_GEN2 = 1, +struct tegra210_emc_table_register_offsets { + u16 burst[221]; + u16 trim[138]; + u16 burst_mc[33]; + u16 la_scale[24]; + struct tegra210_emc_per_channel_regs burst_per_channel[8]; + struct tegra210_emc_per_channel_regs trim_per_channel[10]; + struct tegra210_emc_per_channel_regs vref_per_channel[4]; }; -struct mtk_smi_common_plat { - enum mtk_smi_gen gen; - bool has_gals; - u32 bus_sel; +struct tegra210_emc_timing { + u32 revision; + const char dvfs_ver[60]; + u32 rate; + u32 min_volt; + u32 gpu_min_volt; + const char clock_src[32]; + u32 clk_src_emc; + u32 needs_training; + u32 training_pattern; + u32 trained; + u32 periodic_training; + u32 trained_dram_clktree[8]; + u32 current_dram_clktree[8]; + u32 run_clocks; + u32 tree_margin; + u32 num_burst; + u32 num_burst_per_ch; + u32 num_trim; + u32 num_trim_per_ch; + u32 num_mc_regs; + u32 num_up_down; + u32 vref_num; + u32 training_mod_num; + u32 dram_timing_num; + u32 ptfv_list[12]; + u32 burst_regs[221]; + u32 burst_reg_per_ch[8]; + u32 shadow_regs_ca_train[221]; + u32 shadow_regs_quse_train[221]; + u32 shadow_regs_rdwr_train[221]; + u32 trim_regs[138]; + u32 trim_perch_regs[10]; + u32 vref_perch_regs[4]; + u32 dram_timings[5]; + u32 training_mod_regs[20]; + u32 save_restore_mod_regs[12]; + u32 burst_mc_regs[33]; + u32 la_scale_regs[24]; + u32 min_mrs_wait; + u32 emc_mrw; + u32 emc_mrw2; + u32 emc_mrw3; + u32 emc_mrw4; + u32 emc_mrw9; + u32 emc_mrs; + u32 emc_emrs; + u32 emc_emrs2; + u32 emc_auto_cal_config; + u32 emc_auto_cal_config2; + u32 emc_auto_cal_config3; + u32 emc_auto_cal_config4; + u32 emc_auto_cal_config5; + u32 emc_auto_cal_config6; + u32 emc_auto_cal_config7; + u32 emc_auto_cal_config8; + u32 emc_cfg_2; + u32 emc_sel_dpd_ctrl; + u32 emc_fdpd_ctrl_cmd_no_ramp; + u32 dll_clk_src; + u32 clk_out_enb_x_0_clk_enb_emc_dll; + u32 latency; }; -struct mtk_smi_larb_gen { - int port_in_larb[17]; - void (*config_port)(struct device *); - unsigned int larb_direct_to_common_mask; - bool has_gals; +enum tegra210_emc_refresh { + TEGRA210_EMC_REFRESH_NOMINAL = 0, + TEGRA210_EMC_REFRESH_2X = 1, + TEGRA210_EMC_REFRESH_4X = 2, + TEGRA210_EMC_REFRESH_THROTTLE = 3, }; -struct mtk_smi { +struct tegra_mc; + +struct tegra210_emc_sequence; + +struct tegra210_emc { + struct tegra_mc *mc; struct device *dev; - struct clk *clk_apb; - struct clk *clk_smi; - struct clk *clk_gals0; - struct clk *clk_gals1; - struct clk *clk_async; - union { - void *smi_ao_base; - void *base; - }; - const struct mtk_smi_common_plat *plat; + struct clk *clk; + struct tegra210_emc_timing *nominal; + struct tegra210_emc_timing *derated; + struct tegra210_emc_timing *timings; + unsigned int num_timings; + const struct tegra210_emc_table_register_offsets *offsets; + const struct tegra210_emc_sequence *sequence; + spinlock_t lock; + void *regs; + void *channel[2]; + unsigned int num_channels; + unsigned int num_devices; + unsigned int dram_type; + struct tegra210_emc_timing *last; + struct tegra210_emc_timing *next; + unsigned int training_interval; + struct timer_list training; + enum tegra210_emc_refresh refresh; + unsigned int refresh_poll_interval; + struct timer_list refresh_timer; + unsigned int temperature; + atomic_t refresh_poll; + ktime_t clkchange_time; + int clkchange_delay; + long unsigned int resume_rate; + struct { + struct dentry *root; + long unsigned int min_rate; + long unsigned int max_rate; + unsigned int temperature; + } debugfs; + struct tegra210_clk_emc_provider provider; }; -struct mtk_smi_larb { - struct mtk_smi smi; - void *base; - struct device *smi_common_dev; - const struct mtk_smi_larb_gen *larb_gen; - int larbid; - u32 *mmu; +struct tegra210_emc_sequence { + u8 revision; + void (*set_clock)(struct tegra210_emc *, u32); + u32 (*periodic_compensation)(struct tegra210_emc *); +}; + +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 tegra186_emc_dvfs { + long unsigned int latency; + long unsigned int rate; +}; + +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; + long unsigned int min_rate; + long unsigned int max_rate; + } debugfs; }; enum vme_resource_type { @@ -138674,7 +143659,7 @@ struct vme_driver { const char *name; int (*match)(struct vme_dev *); int (*probe)(struct vme_dev *); - int (*remove)(struct vme_dev *); + void (*remove)(struct vme_dev *); struct device_driver driver; struct list_head devices; }; @@ -138827,6 +143812,43 @@ struct powercap_zone_constraint_ops { const char * (*get_name)(struct powercap_zone *, int); }; +struct dtpm_ops; + +struct dtpm { + struct powercap_zone zone; + struct dtpm *parent; + struct list_head sibling; + struct list_head children; + struct dtpm_ops *ops; + long unsigned int flags; + u64 power_limit; + u64 power_max; + u64 power_min; + int weight; + void *private; +}; + +struct dtpm_ops { + u64 (*set_power_uw)(struct dtpm *, u64); + u64 (*get_power_uw)(struct dtpm *); + void (*release)(struct dtpm *); +}; + +struct dtpm_descr; + +typedef int (*dtpm_init_t)(struct dtpm_descr *); + +struct dtpm_descr { + struct dtpm *parent; + const char *name; + dtpm_init_t init; +}; + +struct dtpm_cpu { + struct freq_qos_request qos_req; + int cpu; +}; + struct powercap_constraint_attr { struct device_attribute power_limit_attr; struct device_attribute time_window_attr; @@ -138842,7 +143864,7 @@ struct idle_inject_thread { int should_run; }; -struct idle_inject_device___2 { +struct idle_inject_device { struct hrtimer timer; unsigned int idle_duration_us; unsigned int run_duration_us; @@ -138971,53 +143993,6 @@ struct pmu_irq_ops { void (*free_pmuirq)(unsigned int, int, void *); }; -typedef int (*armpmu_init_fn)(struct arm_pmu *); - -struct pmu_probe_info { - unsigned int cpuid; - unsigned int mask; - armpmu_init_fn init; -}; - -struct hisi_pmu; - -struct hisi_uncore_ops { - void (*write_evtype)(struct hisi_pmu *, int, u32); - int (*get_event_idx)(struct perf_event *); - u64 (*read_counter)(struct hisi_pmu *, struct hw_perf_event *); - void (*write_counter)(struct hisi_pmu *, struct hw_perf_event *, u64); - void (*enable_counter)(struct hisi_pmu *, struct hw_perf_event *); - void (*disable_counter)(struct hisi_pmu *, struct hw_perf_event *); - void (*enable_counter_int)(struct hisi_pmu *, struct hw_perf_event *); - void (*disable_counter_int)(struct hisi_pmu *, struct hw_perf_event *); - void (*start_counters)(struct hisi_pmu *); - void (*stop_counters)(struct hisi_pmu *); -}; - -struct hisi_pmu_hwevents { - struct perf_event *hw_events[16]; - long unsigned int used_mask[1]; -}; - -struct hisi_pmu { - struct pmu pmu; - const struct hisi_uncore_ops *ops; - struct hisi_pmu_hwevents pmu_events; - cpumask_t associated_cpus; - int on_cpu; - int irq; - struct device *dev; - struct hlist_node node; - int sccl_id; - int ccl_id; - void *base; - u32 index_id; - int num_counters; - int counter_bits; - int check_event; - u32 identifier; -}; - struct cluster_pmu; struct l2cache_pmu { @@ -139226,14 +144201,6 @@ typedef void (*btf_trace_aer_event)(void *, const char *, const u32, const u8, c typedef void (*btf_trace_memory_failure_event)(void *, long unsigned int, int, int); -struct nvmem_cell_lookup { - const char *nvmem_name; - const char *cell_name; - const char *dev_id; - const char *con_id; - struct list_head node; -}; - enum { NVMEM_ADD = 1, NVMEM_REMOVE = 2, @@ -139248,7 +144215,7 @@ struct nvmem_cell_table { struct list_head node; }; -struct nvmem_device___2 { +struct nvmem_device { struct module *owner; struct device dev; int stride; @@ -139278,7 +144245,7 @@ struct nvmem_cell { int bit_offset; int nbits; struct device_node *np; - struct nvmem_device___2 *nvmem; + struct nvmem_device *nvmem; struct list_head node; }; @@ -139287,8 +144254,6 @@ struct zynqmp_nvmem_data { struct nvmem_device *nvmem; }; -struct icc_node; - struct icc_req { struct hlist_node req_node; struct icc_node *node; @@ -139299,57 +144264,17 @@ struct icc_req { u32 peak_bw; }; -struct icc_path___2 { +struct icc_path { const char *name; size_t num_nodes; struct icc_req reqs[0]; }; -struct icc_node_data { - struct icc_node *node; - u32 tag; -}; - -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_onecell_data { unsigned int num_nodes; struct icc_node *nodes[0]; }; -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 trace_event_raw_icc_set_bw { struct trace_entry ent; u32 __data_loc_path_name; @@ -139381,9 +144306,9 @@ struct trace_event_data_offsets_icc_set_bw_end { u32 dev; }; -typedef void (*btf_trace_icc_set_bw)(void *, struct icc_path___2 *, struct icc_node *, int, u32, u32); +typedef void (*btf_trace_icc_set_bw)(void *, struct icc_path *, struct icc_node *, int, u32, u32); -typedef void (*btf_trace_icc_set_bw_end)(void *, struct icc_path___2 *, int); +typedef void (*btf_trace_icc_set_bw_end)(void *, struct icc_path *, int); struct icc_bulk_data { struct icc_path *path; @@ -139459,11 +144384,6 @@ struct compat_ifreq { } ifr_ifru; }; -struct compat_ifconf { - compat_int_t ifc_len; - compat_caddr_t ifcbuf; -}; - enum sock_shutdown_cmd { SHUT_RD = 0, SHUT_WR = 1, @@ -139626,6 +144546,8 @@ struct sock_exterr_skb { u8 unused: 7; }; +struct net_bridge; + struct used_address { struct __kernel_sockaddr_storage name; unsigned int name_len; @@ -139652,6 +144574,57 @@ struct prot_inuse { int val[64]; }; +struct sd_flow_limit { + u64 count; + unsigned int num_buckets; + unsigned int history_head; + u16 history[128]; + u8 buckets[0]; +}; + +struct softnet_data { + struct list_head poll_list; + struct sk_buff_head process_queue; + unsigned int processed; + unsigned int time_squeeze; + unsigned int received_rps; + struct softnet_data *rps_ipi_list; + struct sd_flow_limit *flow_limit; + struct Qdisc *output_queue; + struct Qdisc **output_queue_tailp; + struct sk_buff *completion_queue; + struct sk_buff_head xfrm_backlog; + struct { + u16 recursion; + u8 more; + } xmit; + long: 0; + 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 dropped; + struct sk_buff_head input_pkt_queue; + struct napi_struct backlog; + long: 64; + long: 64; + long: 64; + long: 64; +}; + +struct so_timestamping { + int flags; + int bind_phc; +}; + enum txtime_flags { SOF_TXTIME_DEADLINE_MODE = 1, SOF_TXTIME_REPORT_ERRORS = 2, @@ -139696,6 +144669,22 @@ struct request_sock_queue { struct fastopen_queue fastopenq; }; +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 *, int *); + void (*addr2sockaddr)(struct sock *, struct sockaddr *); + void (*mtu_reduced)(struct sock *); +}; + struct inet_bind_bucket; struct tcp_ulp_ops; @@ -139740,10 +144729,10 @@ struct inet_connection_sock { __u16 rcv_mss; } icsk_ack; struct { - int enabled; int search_high; int search_low; - int probe_size; + u32 probe_size: 31; + u32 enabled: 1; u32 probe_timestamp; } icsk_mtup; u32 icsk_probes_tstamp; @@ -139778,6 +144767,12 @@ struct tcp_ulp_ops { struct module *owner; }; +struct tcp_fastopen_cookie { + __le64 val[2]; + s8 len; + bool exp; +}; + struct tcp_sack_block { u32 start_seq; u32 end_seq; @@ -139893,7 +144888,7 @@ struct tcp_sock { u32 packets_out; u32 retrans_out; u32 max_packets_out; - u32 max_packets_seq; + u32 cwnd_usage_seq; u16 urg_data; u8 ecn_flags; u8 keepalive_probes; @@ -139974,6 +144969,8 @@ struct tcp_sock { struct saved_syn *saved_syn; }; +struct tcp_md5sig_key; + struct tcp_sock_af_ops { struct tcp_md5sig_key * (*md5_lookup)(const struct sock *, const struct sock *); int (*calc_md5_hash)(char *, const struct tcp_md5sig_key *, const struct sock *, const struct sk_buff *); @@ -139993,6 +144990,30 @@ struct tcp_fastopen_request { struct ubuf_info *uarg; }; +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 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 cgroup_cls_state { struct cgroup_subsys_state css; u32 classid; @@ -140041,6 +145062,8 @@ struct inet_request_sock { }; }; +struct tcp_request_sock_ops; + struct tcp_request_sock { struct inet_request_sock req; const struct tcp_request_sock_ops *af_specific; @@ -140057,6 +145080,23 @@ struct tcp_request_sock { 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 tcp_md5sig_key * (*req_md5_lookup)(const struct sock *, const struct sock *); + int (*calc_md5_hash)(char *, const struct tcp_md5sig_key *, const struct sock *, const struct sk_buff *); + __u32 (*cookie_init_seq)(const struct sk_buff *, __u16 *); + 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 *); +}; + enum { SKB_FCLONE_UNAVAILABLE = 0, SKB_FCLONE_ORIG = 1, @@ -140080,6 +145120,11 @@ struct skb_seq_state { __u32 frag_off; }; +struct skb_checksum_ops { + __wsum (*update)(const void *, int, __wsum); + __wsum (*combine)(__wsum, __wsum, int, int); +}; + struct skb_gso_cb { union { int mac_offset; @@ -140153,7 +145198,11 @@ struct napi_alloc_cache { void *skb_cache[64]; }; -struct ahash_request___2; +typedef int (*sendmsg_func)(struct sock *, struct msghdr *, struct kvec *, size_t, size_t); + +typedef int (*sendpage_func)(struct sock *, struct page *, int, size_t, int); + +struct ahash_request; struct scm_cookie { struct pid *pid; @@ -140296,6 +145345,10 @@ struct gen_cookie { long: 64; }; +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 *); + enum rtnl_link_flags { RTNL_FLAG_DOIT_UNLOCKED = 1, }; @@ -140319,6 +145372,12 @@ struct rtnl_net_dump_cb { int s_idx; }; +typedef u16 u_int16_t; + +typedef u32 u_int32_t; + +typedef u64 u_int64_t; + enum flow_dissect_ret { FLOW_DISSECT_RET_OUT_GOOD = 0, FLOW_DISSECT_RET_OUT_BAD = 1, @@ -140341,6 +145400,8 @@ struct flow_dissector_key_vlan { __be16 vlan_tci; }; __be16 vlan_tpid; + __be16 vlan_eth_type; + u16 padding; }; struct flow_dissector_mpls_lse { @@ -140458,36 +145519,99 @@ struct flow_keys { struct flow_dissector_key_ports ports; struct flow_dissector_key_icmp icmp; struct flow_dissector_key_addrs addrs; - int: 32; + long: 0; }; struct flow_keys_digest { u8 data[16]; }; -struct xt_table_info; +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, +}; -struct xt_table { - struct list_head list; - unsigned int valid_hooks; - struct xt_table_info *private; - struct module *me; - u_int8_t af; - int priority; - int (*table_init)(struct net *); - const char name[32]; +union nf_inet_addr { + __u32 all[4]; + __be32 ip; + __be32 ip6[4]; + struct in_addr in; + struct in6_addr in6; }; -struct nf_ct_event; +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 nf_ct_event_notifier { - int (*fcn)(unsigned int, struct nf_ct_event *); +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; +}; + +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; }; +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; +}; + +struct ip_ct_sctp { + enum sctp_conntrack state; + __be32 vtag[2]; + u8 last_dir; + u8 flags; +}; + +struct nf_ct_event; + struct nf_exp_event; -struct nf_exp_event_notifier { - int (*fcn)(unsigned int, 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 *); }; enum bpf_ret_code { @@ -140503,6 +145627,16 @@ enum { BPF_FLOW_DISSECTOR_F_STOP_AT_ENCAP = 4, }; +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, +}; + struct ip_tunnel_key { __be64 tun_id; union { @@ -140560,7 +145694,8 @@ enum lwtunnel_encap_types { LWTUNNEL_ENCAP_BPF = 6, LWTUNNEL_ENCAP_SEG6_LOCAL = 7, LWTUNNEL_ENCAP_RPL = 8, - __LWTUNNEL_ENCAP_MAX = 9, + LWTUNNEL_ENCAP_IOAM6 = 9, + __LWTUNNEL_ENCAP_MAX = 10, }; enum metadata_type { @@ -140651,6 +145786,30 @@ struct mpls_label { __be32 entry; }; +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)); + enum batadv_packettype { BATADV_IV_OGM = 0, BATADV_BCAST = 1, @@ -140672,42 +145831,97 @@ struct batadv_unicast_packet { __u8 dest[6]; }; -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 nf_conntrack_zone { + u16 id; + u8 flags; + u8 dir; }; -struct nf_conntrack_tuple_mask { +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 nf_conntrack_man_proto u; - } src; + 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; + u_int8_t dir; + } dst; +}; + +struct nf_conntrack_tuple_hash { + struct hlist_nulls_node hnnode; + struct nf_conntrack_tuple tuple; +}; + +struct nf_ct_udp { + long unsigned int stream_ts; }; -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 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_zone zone; + struct nf_conntrack_tuple_hash tuplehash[2]; + long unsigned int status; + u16 cpu; + 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; +}; + +struct nf_conntrack_tuple_mask { 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; + union nf_inet_addr u3; + union nf_conntrack_man_proto u; + } src; }; struct nf_ct_ext { @@ -140774,9 +145988,23 @@ struct _flow_keys_digest_data { __be32 dst; }; +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, +}; + struct tc_skb_ext { __u32 chain; __u16 mru; + __u16 zone; + u8 post_ct: 1; + u8 post_ct_snat: 1; + u8 post_ct_dnat: 1; }; struct ipv4_devconf { @@ -140790,16 +146018,6 @@ enum nf_dev_hooks { NF_NETDEV_NUMHOOKS = 1, }; -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, -}; - struct ifbond { __s32 bond_mode; __s32 num_slaves; @@ -140818,11 +146036,6 @@ struct ifslave { typedef struct ifslave ifslave; -struct netdev_boot_setup { - char name[16]; - struct ifmap map; -}; - enum { NAPIF_STATE_SCHED = 1, NAPIF_STATE_MISSED = 2, @@ -140832,19 +146045,15 @@ enum { 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 gro_result { - GRO_MERGED = 0, - GRO_MERGED_FREE = 1, - GRO_HELD = 2, - GRO_NORMAL = 3, - GRO_DROP = 4, - GRO_CONSUMED = 5, +struct net_device_path_stack { + int num_paths; + struct net_device_path path[5]; }; -typedef enum gro_result gro_result_t; - struct bpf_xdp_link { struct bpf_link link; struct net_device *dev; @@ -140867,13 +146076,6 @@ struct netpoll_info { struct callback_head rcu; }; -struct udp_tunnel_info { - short unsigned int type; - sa_family_t sa_family; - __be16 port; - u8 hw_priv; -}; - struct in_ifaddr; struct ip_mc_list; @@ -140903,6 +146105,24 @@ struct in_device { struct callback_head callback_head; }; +struct packet_type { + __be16 type; + bool ignore_outgoing; + struct net_device *dev; + 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; +}; + +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; @@ -140978,6 +146198,7 @@ enum qdisc_state_t { __QDISC_STATE_SCHED = 0, __QDISC_STATE_DEACTIVATED = 1, __QDISC_STATE_MISSED = 2, + __QDISC_STATE_DRAINING = 3, }; struct tcf_walker { @@ -141025,6 +146246,15 @@ enum { __IPV4_DEVCONF_MAX = 33, }; +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 in_ifaddr { struct hlist_node hash; struct in_ifaddr *ifa_next; @@ -141045,21 +146275,18 @@ struct in_ifaddr { long unsigned int ifa_tstamp; }; +struct udp_tunnel_info { + short unsigned int 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; }; -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 *); -}; - struct dev_kfree_skb_cb { enum skb_free_reason reason; }; @@ -141317,17 +146544,9 @@ enum { IFLA_BRPORT_BACKUP_PORT = 34, IFLA_BRPORT_MRP_RING_OPEN = 35, IFLA_BRPORT_MRP_IN_OPEN = 36, - __IFLA_BRPORT_MAX = 37, -}; - -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, + IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT = 37, + IFLA_BRPORT_MCAST_EHT_HOSTS_CNT = 38, + __IFLA_BRPORT_MAX = 39, }; enum { @@ -141561,26 +146780,13 @@ struct rta_cacheinfo { __u32 rta_tsage; }; -struct ifinfomsg { - unsigned char ifi_family; - unsigned char __ifi_pad; - short unsigned int ifi_type; - int ifi_index; - unsigned int ifi_flags; - unsigned int ifi_change; -}; - -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 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 *); - int (*set_link_af)(struct net_device *, const struct nlattr *); + 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 *); }; @@ -141652,6 +146858,7 @@ enum { 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, }; enum { @@ -141819,7 +147026,10 @@ struct bpf_fib_lookup { __u8 l4_protocol; __be16 sport; __be16 dport; - __u16 tot_len; + union { + __u16 tot_len; + __u16 mtu_result; + }; __u32 ifindex; union { __u8 tos; @@ -141848,6 +147058,16 @@ struct bpf_redir_neigh { }; }; +enum bpf_check_mtu_flags { + BPF_MTU_CHK_SEGS = 1, +}; + +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 rt_scope_t { RT_SCOPE_UNIVERSE = 0, RT_SCOPE_SITE = 200, @@ -141865,7 +147085,13 @@ enum rt_class_t { RT_TABLE_MAX = 4294967295, }; -typedef int (*bpf_aux_classic_check_t)(struct sock_filter *, unsigned int); +struct nl_info { + struct nlmsghdr *nlh; + struct net *nl_net; + u32 portid; + u8 skip_notify: 1; + u8 skip_notify_kernel: 1; +}; struct inet_timewait_sock { struct sock_common __tw_common; @@ -141913,6 +147139,7 @@ struct udp_sock { __u8 pcflag; __u8 unused[3]; int (*encap_rcv)(struct sock *, struct sk_buff *); + void (*encap_err_rcv)(struct sock *, struct sk_buff *, unsigned int); 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 *); @@ -141920,13 +147147,8 @@ struct udp_sock { long: 64; long: 64; long: 64; - long: 64; - long: 64; - long: 64; - long: 64; struct sk_buff_head reader_queue; int forward_deficit; - long: 32; long: 64; long: 64; long: 64; @@ -141947,6 +147169,77 @@ struct tcp6_sock { struct ipv6_pinfo inet6; }; +struct fib6_result; + +struct fib6_config; + +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 *); +}; + +struct fib6_result { + struct fib6_nh *nh; + struct fib6_info *f6i; + u32 fib6_flags; + u8 fib6_type; + struct rt6_info *rt6; +}; + +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; + long unsigned int 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; +}; + +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 *); +}; + struct fib_result { __be32 prefix; unsigned char prefixlen; @@ -141999,54 +147292,23 @@ struct tcp_skb_cb { struct inet_skb_parm h4; struct inet6_skb_parm h6; } header; - struct { - __u32 flags; - struct sock *sk_redir; - void *data_end; - } bpf; }; }; -struct strp_stats { - long long unsigned int msgs; - long long unsigned int bytes; - unsigned int mem_fail; - unsigned int need_more_hdr; - unsigned int msg_too_big; - unsigned int msg_timeouts; - unsigned int bad_hdr_len; -}; - -struct strparser; - -struct strp_callbacks { - int (*parse_msg)(struct strparser *, struct sk_buff *); - void (*rcv_msg)(struct strparser *, struct sk_buff *); - int (*read_sock_done)(struct strparser *, int); - void (*abort_parser)(struct strparser *, int); - void (*lock)(struct strparser *); - void (*unlock)(struct strparser *); +struct strp_msg { + int full_len; + int offset; }; -struct strparser { - struct sock *sk; - u32 stopped: 1; - u32 paused: 1; - u32 aborted: 1; - u32 interrupted: 1; - u32 unrecov_intr: 1; - struct sk_buff **skb_nextp; - struct sk_buff *skb_head; - unsigned int need_bytes; - struct delayed_work msg_timer_work; - struct work_struct work; - struct strp_stats stats; - struct strp_callbacks cb; +struct _strp_msg { + struct strp_msg strp; + int accum_len; }; -struct strp_msg { - int full_len; - int offset; +struct sk_skb_cb { + unsigned char data[20]; + struct _strp_msg strp; + u64 temp_reg; }; struct xdp_umem { @@ -142066,25 +147328,14 @@ struct xdp_umem { struct work_struct work; }; -struct xdp_sock; +struct xsk_queue; -struct xsk_map { - struct bpf_map map; - spinlock_t lock; - struct xdp_sock *xsk_map[0]; - long: 64; - long: 64; - long: 64; +struct xdp_sock { + struct sock sk; long: 64; long: 64; long: 64; long: 64; -}; - -struct xsk_queue; - -struct xdp_sock { - struct sock sk; long: 64; struct xsk_queue *rx; struct net_device *dev; @@ -142140,7 +147391,8 @@ enum { SEG6_LOCAL_ACTION_END_AS = 13, SEG6_LOCAL_ACTION_END_AM = 14, SEG6_LOCAL_ACTION_END_BPF = 15, - __SEG6_LOCAL_ACTION_MAX = 16, + SEG6_LOCAL_ACTION_END_DT46 = 16, + __SEG6_LOCAL_ACTION_MAX = 17, }; struct seg6_bpf_srh_state { @@ -142392,14 +147644,24 @@ 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_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); @@ -142418,6 +147680,10 @@ typedef u64 (*btf_bpf_xdp_fib_lookup)(struct xdp_buff *, struct bpf_fib_lookup * 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); @@ -142486,7 +147752,9 @@ typedef u64 (*btf_bpf_skc_to_udp6_sock)(struct sock *); typedef u64 (*btf_bpf_sock_from_file)(struct file *); -struct bpf_dtab_netdev___2; +struct bpf_cpu_map_entry; + +struct bpf_dtab_netdev; enum { INET_DIAG_REQ_NONE = 0, @@ -142513,7 +147781,10 @@ struct broadcast_sk { struct work_struct work; }; -typedef int gifconf_func_t(struct net_device *, char *, int, int); +struct compat_ifconf { + compat_int_t ifc_len; + compat_caddr_t ifcbuf; +}; struct fib_notifier_info { int family; @@ -142551,6 +147822,8 @@ struct xdp_attachment_info { struct xdp_buff_xsk; +struct xdp_desc; + struct xsk_buff_pool { struct device *dev; struct net_device *netdev; @@ -142562,7 +147835,6 @@ struct xsk_buff_pool { struct list_head free_list; u32 heads_cnt; u16 queue_id; - long: 16; long: 64; long: 64; long: 64; @@ -142570,6 +147842,7 @@ struct xsk_buff_pool { 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; @@ -142588,7 +147861,12 @@ struct xsk_buff_pool { long: 64; long: 64; long: 64; - long: 64; +}; + +struct xdp_desc { + __u64 addr; + __u32 len; + __u32 options; }; struct xdp_buff_xsk { @@ -142733,7 +148011,6 @@ struct flow_indr_dev { flow_indr_block_bind_cb_t *cb; void *cb_priv; refcount_t refcnt; - struct callback_head rcu; }; struct flow_indir_dev_info { @@ -142760,68 +148037,6 @@ struct netdev_queue_attribute { ssize_t (*store)(struct netdev_queue *, const char *, size_t); }; -enum __sk_action { - __SK_DROP = 0, - __SK_PASS = 1, - __SK_REDIRECT = 2, - __SK_NONE = 3, -}; - -struct sk_psock_progs { - struct bpf_prog *msg_parser; - struct bpf_prog *skb_parser; - struct bpf_prog *skb_verdict; -}; - -enum sk_psock_state_bits { - SK_PSOCK_TX_ENABLED = 0, -}; - -struct sk_psock_link { - struct list_head list; - struct bpf_map *map; - void *link_raw; -}; - -struct sk_psock_parser { - struct strparser strp; - bool enabled; - void (*saved_data_ready)(struct sock *); -}; - -struct sk_psock_work_state { - struct sk_buff *skb; - u32 len; - u32 off; -}; - -struct sk_psock { - struct sock *sk; - struct sock *sk_redir; - u32 apply_bytes; - u32 cork_bytes; - u32 eval; - struct sk_msg *cork; - struct sk_psock_progs progs; - struct sk_psock_parser parser; - struct sk_buff_head ingress_skb; - struct list_head ingress_msg; - long unsigned int state; - struct list_head link; - spinlock_t link_lock; - refcount_t refcnt; - void (*saved_unhash)(struct sock *); - void (*saved_close)(struct sock *, long int); - void (*saved_write_space)(struct sock *); - struct proto *sk_proto; - struct sk_psock_work_state work_state; - struct work_struct work; - union { - struct callback_head rcu; - struct work_struct gc; - }; -}; - struct inet6_ifaddr { struct in6_addr addr; __u32 prefix_len; @@ -142843,6 +148058,7 @@ struct inet6_ifaddr { 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; @@ -142908,6 +148124,7 @@ struct trace_event_raw_kfree_skb { void *skbaddr; void *location; short unsigned int protocol; + enum skb_drop_reason reason; char __data[0]; }; @@ -142930,7 +148147,7 @@ struct trace_event_data_offsets_consume_skb {}; struct trace_event_data_offsets_skb_copy_datagram_iovec {}; -typedef void (*btf_trace_kfree_skb)(void *, struct sk_buff *, void *); +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 *); @@ -143106,7 +148323,7 @@ struct trace_event_raw_sock_rcvqueue_full { struct trace_event_raw_sock_exceed_buf_limit { struct trace_entry ent; char name[32]; - long int *sysctl_mem; + long int sysctl_mem[3]; long int allocated; int sysctl_rmem; int rmem_alloc; @@ -143133,18 +148350,36 @@ struct trace_event_raw_inet_sock_set_state { 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_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 {}; + 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, 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 *); + struct trace_event_raw_udp_fail_queue_rcv_skb { struct trace_entry ent; int rc; @@ -143163,6 +148398,7 @@ struct trace_event_raw_tcp_event_sk_skb { int state; __u16 sport; __u16 dport; + __u16 family; __u8 saddr[4]; __u8 daddr[4]; __u8 saddr_v6[16]; @@ -143175,6 +148411,7 @@ struct trace_event_raw_tcp_event_sk { const void *skaddr; __u16 sport; __u16 dport; + __u16 family; __u8 saddr[4]; __u8 daddr[4]; __u8 saddr_v6[16]; @@ -143189,6 +148426,7 @@ struct trace_event_raw_tcp_retransmit_synack { const void *req; __u16 sport; __u16 dport; + __u16 family; __u8 saddr[4]; __u8 daddr[4]; __u8 saddr_v6[16]; @@ -143202,6 +148440,7 @@ struct trace_event_raw_tcp_probe { __u8 daddr[28]; __u16 sport; __u16 dport; + __u16 family; __u32 mark; __u16 data_len; __u32 snd_nxt; @@ -143215,6 +148454,14 @@ struct trace_event_raw_tcp_probe { 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_data_offsets_tcp_event_sk_skb {}; struct trace_event_data_offsets_tcp_event_sk {}; @@ -143223,6 +148470,8 @@ struct trace_event_data_offsets_tcp_retransmit_synack {}; struct trace_event_data_offsets_tcp_probe {}; +struct trace_event_data_offsets_tcp_event_skb {}; + 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 *); @@ -143237,6 +148486,8 @@ typedef void (*btf_trace_tcp_retransmit_synack)(void *, const struct sock *, con typedef void (*btf_trace_tcp_probe)(void *, struct sock *, struct sk_buff *); +typedef void (*btf_trace_tcp_bad_csum)(void *, const struct sk_buff *); + struct trace_event_raw_fib_table_lookup { struct trace_entry ent; u32 tb_id; @@ -143276,6 +148527,17 @@ struct trace_event_raw_qdisc_dequeue { 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; @@ -143304,6 +148566,8 @@ struct trace_event_raw_qdisc_create { 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; @@ -143321,6 +148585,8 @@ struct trace_event_data_offsets_qdisc_create { 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 *); @@ -143394,19 +148660,37 @@ struct bridge_mcast_other_query { long unsigned int delay_time; }; -struct net_bridge_port; - struct bridge_mcast_querier { struct br_ip addr; + int port_ifidx; + seqcount_spinlock_t seq; +}; + +struct bridge_mcast_stats { + struct br_mcast_stats mstats; + struct u64_stats_sync syncp; +}; + +struct net_bridge_port; + +struct net_bridge_vlan; + +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; }; struct net_bridge; struct net_bridge_vlan_group; -struct bridge_mcast_stats; - struct net_bridge_port { struct net_bridge *br; struct net_device *dev; @@ -143431,24 +148715,78 @@ struct net_bridge_port { struct timer_list message_age_timer; struct kobject kobj; struct callback_head rcu; - struct bridge_mcast_own_query ip4_own_query; - struct bridge_mcast_own_query ip6_own_query; - unsigned char multicast_router; + struct net_bridge_mcast_port multicast_ctx; struct bridge_mcast_stats *mcast_stats; - struct timer_list multicast_router_timer; + u32 multicast_eht_hosts_limit; + u32 multicast_eht_hosts_cnt; struct hlist_head mglist; - struct hlist_node rlist; char sysfs_name[16]; struct netpoll *np; - int offload_fwd_mark; + int hwdom; + int offload_count; + struct netdev_phys_item_id ppid; u16 group_fwd_mask; u16 backup_redirected_cnt; struct bridge_stp_xstats stp_xstats; }; -struct bridge_mcast_stats { - struct br_mcast_stats mstats; - struct u64_stats_sync syncp; +struct metadata_dst; + +struct br_tunnel_info { + __be64 tunnel_id; + struct metadata_dst *tunnel_dst; +}; + +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; + long unsigned int multicast_last_member_interval; + long unsigned int multicast_membership_interval; + long unsigned int multicast_querier_interval; + long unsigned int multicast_query_interval; + long unsigned int multicast_query_response_interval; + long unsigned int 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 net_bridge_vlan { + struct rhash_head vnode; + struct rhash_head tnode; + u16 vid; + u16 flags; + u16 priv_flags; + u8 state; + struct pcpu_sw_netstats *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; + }; + struct list_head vlist; + struct callback_head rcu; }; struct net_bridge { @@ -143488,32 +148826,14 @@ struct net_bridge { BR_KERNEL_STP = 1, BR_USER_STP = 2, } stp_enabled; + struct net_bridge_mcast multicast_ctx; + struct bridge_mcast_stats *mcast_stats; u32 hash_max; - u32 multicast_last_member_count; - u32 multicast_startup_query_count; - u8 multicast_igmp_version; - u8 multicast_router; - u8 multicast_mld_version; spinlock_t multicast_lock; - long unsigned int multicast_last_member_interval; - long unsigned int multicast_membership_interval; - long unsigned int multicast_querier_interval; - long unsigned int multicast_query_interval; - long unsigned int multicast_query_response_interval; - long unsigned int multicast_startup_query_interval; struct rhashtable mdb_hash_tbl; struct rhashtable sg_port_tbl; struct hlist_head mcast_gc_list; struct hlist_head mdb_list; - struct hlist_head router_list; - struct timer_list multicast_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 bridge_mcast_stats *mcast_stats; - struct bridge_mcast_other_query ip6_other_query; - struct bridge_mcast_own_query ip6_own_query; - struct bridge_mcast_querier ip6_querier; struct work_struct mcast_gc_work; struct timer_list hello_timer; struct timer_list tcn_timer; @@ -143521,7 +148841,8 @@ struct net_bridge { struct delayed_work gc_work; struct kobject *ifobj; u32 auto_cnt; - int offload_fwd_mark; + int last_hwdom; + long unsigned int busy_hwdoms; struct hlist_head fdb_list; struct hlist_head mrp_list; struct hlist_head mep_list; @@ -143558,10 +148879,6 @@ struct net_bridge_fdb_entry { long: 64; }; -struct nf_br_ops { - int (*br_dev_xmit_hook)(struct sk_buff *); -}; - struct trace_event_raw_br_fdb_add { struct trace_entry ent; u8 ndm_flags; @@ -143879,7 +149196,7 @@ struct dm_hw_stat_delta { }; struct net_dm_alert_ops { - void (*kfree_skb_probe)(void *, struct sk_buff *, void *); + void (*kfree_skb_probe)(void *, struct sk_buff *, void *, enum skb_drop_reason); void (*napi_poll_probe)(void *, struct napi_struct *, int, int); void (*work_item_func)(struct work_struct *); void (*hw_work_item_func)(struct work_struct *); @@ -143893,30 +149210,48 @@ struct net_dm_skb_cb { }; }; -struct clock_identity { - u8 id[8]; +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 port_identity { - struct clock_identity clock_identity; - __be16 port_number; +struct net_packet_attrs { + unsigned char *src; + 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 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; +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 netsfhdr { + __be32 version; + __be64 magic; + u8 id; } __attribute__((packed)); +struct net_test { + char name[32]; + int (*fn)(struct net_device *); +}; + struct update_classid_context { u32 classid; unsigned int batch; @@ -143974,81 +149309,6 @@ struct bpf_lwt { int family; }; -struct bpf_stab { - struct bpf_map map; - struct sock **sks; - struct sk_psock_progs progs; - raw_spinlock_t lock; - long: 32; - long: 64; - long: 64; - long: 64; -}; - -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); - -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 bpf_shtab_elem { - struct callback_head rcu; - u32 hash; - struct sock *sk; - struct hlist_node node; - u8 key[0]; -}; - -struct bpf_shtab_bucket { - struct hlist_head head; - raw_spinlock_t lock; -}; - -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: 32; - long: 64; - long: 64; -}; - -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 sock_hash_seq_info { - struct bpf_map *map; - struct bpf_shtab *htab; - u32 bucket_id; -}; - struct dst_cache_pcpu { long unsigned int refresh_ts; struct dst_entry *dst; @@ -144134,8 +149394,12 @@ enum devlink_command { DEVLINK_CMD_TRAP_POLICER_NEW = 71, DEVLINK_CMD_TRAP_POLICER_DEL = 72, DEVLINK_CMD_HEALTH_REPORTER_TEST = 73, - __DEVLINK_CMD_MAX = 74, - DEVLINK_CMD_MAX = 73, + DEVLINK_CMD_RATE_GET = 74, + DEVLINK_CMD_RATE_SET = 75, + DEVLINK_CMD_RATE_NEW = 76, + DEVLINK_CMD_RATE_DEL = 77, + __DEVLINK_CMD_MAX = 78, + DEVLINK_CMD_MAX = 77, }; enum devlink_eswitch_mode { @@ -144328,8 +149592,14 @@ enum devlink_attr { DEVLINK_ATTR_REMOTE_RELOAD_STATS = 161, DEVLINK_ATTR_RELOAD_ACTION_INFO = 162, DEVLINK_ATTR_RELOAD_ACTION_STATS = 163, - __DEVLINK_ATTR_MAX = 164, - DEVLINK_ATTR_MAX = 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_MAX = 170, + DEVLINK_ATTR_MAX = 169, }; enum devlink_dpipe_match_type { @@ -144365,8 +149635,10 @@ enum devlink_resource_unit { enum devlink_port_function_attr { DEVLINK_PORT_FUNCTION_ATTR_UNSPEC = 0, DEVLINK_PORT_FUNCTION_ATTR_HW_ADDR = 1, - __DEVLINK_PORT_FUNCTION_ATTR_MAX = 2, - DEVLINK_PORT_FUNCTION_ATTR_MAX = 1, + DEVLINK_PORT_FN_ATTR_STATE = 2, + DEVLINK_PORT_FN_ATTR_OPSTATE = 3, + __DEVLINK_PORT_FUNCTION_ATTR_MAX = 4, + DEVLINK_PORT_FUNCTION_ATTR_MAX = 3, }; struct devlink_dpipe_match { @@ -144506,8 +149778,11 @@ enum devlink_param_generic_id { 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_MAX = 11, - DEVLINK_PARAM_GENERIC_ID_MAX = 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_MAX = 14, + DEVLINK_PARAM_GENERIC_ID_MAX = 13, }; struct devlink_region_ops { @@ -144658,8 +149933,9 @@ enum devlink_trap_generic_id { 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_MAX = 91, - DEVLINK_TRAP_GENERIC_ID_MAX = 90, + DEVLINK_TRAP_GENERIC_ID_DMAC_FILTER = 91, + __DEVLINK_TRAP_GENERIC_ID_MAX = 92, + DEVLINK_TRAP_GENERIC_ID_MAX = 91, }; enum devlink_trap_group_generic_id { @@ -144906,9 +150182,92 @@ struct gro_cell { struct napi_struct napi; }; -enum { - BPF_LOCAL_STORAGE_GET_F_CREATE = 1, - BPF_SK_STORAGE_GET_F_CREATE = 1, +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, +}; + +struct sk_psock_link { + struct list_head list; + struct bpf_map *map; + void *link_raw; +}; + +struct bpf_stab { + struct bpf_map map; + struct sock **sks; + struct sk_psock_progs progs; + raw_spinlock_t lock; + long: 64; + long: 64; +}; + +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); + +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 bpf_shtab_elem { + struct callback_head rcu; + u32 hash; + struct sock *sk; + struct hlist_node node; + u8 key[0]; +}; + +struct bpf_shtab_bucket { + struct hlist_head head; + raw_spinlock_t lock; +}; + +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; +}; + +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 sock_hash_seq_info { + struct bpf_map *map; + struct bpf_shtab *htab; + u32 bucket_id; }; enum { @@ -144965,16 +150324,14 @@ struct bpf_iter__bpf_sk_storage_map { }; }; +struct nvmem_cell; + struct compat_cmsghdr { compat_size_t cmsg_len; compat_int_t cmsg_level; compat_int_t cmsg_type; }; -typedef struct sk_buff * (*gro_receive_t)(struct list_head *, struct sk_buff *); - -struct nvmem_cell___2; - struct fch_hdr { __u8 daddr[6]; __u8 saddr[6]; @@ -145073,7 +150430,7 @@ struct vlan_pcpu_stats { u32 tx_dropped; }; -struct netpoll___2; +struct netpoll; struct skb_array { struct ptr_ring ring; @@ -145095,17 +150452,24 @@ struct macvlan_dev { u16 flags; unsigned int macaddr_count; u32 bc_queue_len_req; - struct netpoll___2 *netpoll; + struct netpoll *netpoll; }; struct psched_ratecfg { u64 rate_bytes_ps; u32 mult; u16 overhead; + u16 mpu; u8 linklayer; u8 shift; }; +struct psched_pktrate { + u64 rate_pkts_ps; + u32 mult; + u8 shift; +}; + struct mini_Qdisc_pair { struct mini_Qdisc miniq1; struct mini_Qdisc miniq2; @@ -145356,7 +150720,7 @@ struct tc_action_ops { 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 **, int, int, bool, struct tcf_proto *, u32, struct netlink_ext_ack *); + 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 *); @@ -145426,6 +150790,7 @@ struct tcf_pedit { struct tc_action common; unsigned char tcfp_nkeys; unsigned char tcfp_flags; + u32 tcfp_off_max_hint; struct tc_pedit_key *tcfp_keys; struct tcf_pedit_key_ex *tcfp_keys_ex; }; @@ -145489,10 +150854,13 @@ struct tcf_police_params { 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; }; @@ -145509,11 +150877,11 @@ struct tcf_police { spinlock_t tcfp_lock; s64 tcfp_toks; s64 tcfp_ptoks; + s64 tcfp_pkttoks; s64 tcfp_t_c; long: 64; long: 64; long: 64; - long: 64; }; struct tcf_sample { @@ -145541,154 +150909,6 @@ struct tcf_skbedit { struct tcf_skbedit_params *params; }; -struct nf_conntrack_l4proto___2; - -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 nf_nat_range2 { unsigned int flags; union nf_inet_addr min_addr; @@ -145936,6 +151156,18 @@ struct netlink_tap { struct list_head list; }; +struct trace_event_raw_netlink_extack { + struct trace_entry ent; + u32 __data_loc_msg; + char __data[0]; +}; + +struct trace_event_data_offsets_netlink_extack { + u32 msg; +}; + +typedef void (*btf_trace_netlink_extack)(void *, const char *); + struct netlink_sock { struct sock sk; u32 portid; @@ -146141,7 +151373,7 @@ enum netlink_policy_type_attr { NL_POLICY_TYPE_ATTR_MAX = 12, }; -struct netlink_policy_dump_state___2 { +struct netlink_policy_dump_state { unsigned int policy_idx; unsigned int attr_idx; unsigned int n_alloc; @@ -146161,6 +151393,16 @@ struct trace_event_data_offsets_bpf_test_finish {}; 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; +}; + struct bpf_fentry_test_t { struct bpf_fentry_test_t *a; }; @@ -146273,6 +151515,15 @@ struct ethtool_per_queue_op { char data[0]; }; +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, +}; + enum { ETH_RSS_HASH_TOP_BIT = 0, ETH_RSS_HASH_XOR_BIT = 1, @@ -146309,12 +151560,11 @@ struct ethtool_rx_flow_key { struct flow_dissector_key_ip ip; struct flow_dissector_key_vlan vlan; struct flow_dissector_key_eth_addrs eth_addrs; - long: 48; }; struct ethtool_rx_flow_match { struct flow_dissector dissector; - int: 32; + long: 0; struct ethtool_rx_flow_key key; struct ethtool_rx_flow_key mask; }; @@ -146326,6 +151576,12 @@ enum { __ETHTOOL_UDP_TUNNEL_TYPE_CNT = 3, }; +struct link_mode_info { + int speed; + u8 lanes; + u8 duplex; +}; + enum { ETHTOOL_MSG_USER_NONE = 0, ETHTOOL_MSG_STRSET_GET = 1, @@ -146356,8 +151612,13 @@ enum { ETHTOOL_MSG_CABLE_TEST_ACT = 26, ETHTOOL_MSG_CABLE_TEST_TDR_ACT = 27, ETHTOOL_MSG_TUNNEL_INFO_GET = 28, - __ETHTOOL_MSG_USER_CNT = 29, - ETHTOOL_MSG_USER_MAX = 28, + ETHTOOL_MSG_FEC_GET = 29, + ETHTOOL_MSG_FEC_SET = 30, + ETHTOOL_MSG_MODULE_EEPROM_GET = 31, + ETHTOOL_MSG_STATS_GET = 32, + ETHTOOL_MSG_PHC_VCLOCKS_GET = 33, + __ETHTOOL_MSG_USER_CNT = 34, + ETHTOOL_MSG_USER_MAX = 33, }; enum { @@ -146400,8 +151661,9 @@ enum { ETHTOOL_A_LINKMODES_DUPLEX = 6, ETHTOOL_A_LINKMODES_MASTER_SLAVE_CFG = 7, ETHTOOL_A_LINKMODES_MASTER_SLAVE_STATE = 8, - __ETHTOOL_A_LINKMODES_CNT = 9, - ETHTOOL_A_LINKMODES_MAX = 8, + ETHTOOL_A_LINKMODES_LANES = 9, + __ETHTOOL_A_LINKMODES_CNT = 10, + ETHTOOL_A_LINKMODES_MAX = 9, }; enum { @@ -146507,8 +151769,10 @@ enum { 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_CNT = 24, - ETHTOOL_A_COALESCE_MAX = 23, + ETHTOOL_A_COALESCE_USE_CQE_MODE_TX = 24, + ETHTOOL_A_COALESCE_USE_CQE_MODE_RX = 25, + __ETHTOOL_A_COALESCE_CNT = 26, + ETHTOOL_A_COALESCE_MAX = 25, }; enum { @@ -146546,6 +151810,15 @@ enum { ETHTOOL_A_TSINFO_MAX = 5, }; +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, +}; + enum { ETHTOOL_A_CABLE_TEST_UNSPEC = 0, ETHTOOL_A_CABLE_TEST_HEADER = 1, @@ -146569,6 +151842,88 @@ enum { ETHTOOL_A_TUNNEL_INFO_MAX = 2, }; +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_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, +}; + +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_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, +}; + enum ethtool_multicast_groups { ETHNL_MCGRP_MONITOR = 0, }; @@ -146681,7 +152036,7 @@ struct strset_req_info { struct strset_reply_data { struct ethnl_reply_data base; - struct strset_info sets[16]; + struct strset_info sets[21]; }; struct linkinfo_reply_data { @@ -146697,11 +152052,6 @@ struct linkmodes_reply_data { bool peer_empty; }; -struct link_mode_info { - int speed; - u8 duplex; -}; - struct linkstate_reply_data { struct ethnl_reply_data base; int link; @@ -146751,6 +152101,7 @@ struct channels_reply_data { struct coalesce_reply_data { struct ethnl_reply_data base; struct ethtool_coalesce coalesce; + struct kernel_ethtool_coalesce kernel_coalesce; u32 supported_params; }; @@ -146905,17 +152256,147 @@ enum udp_tunnel_nic_info_flags { UDP_TUNNEL_NIC_INFO_STATIC_IANA_VXLAN = 8, }; +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 *); +}; + struct ethnl_tunnel_info_dump_ctx { struct ethnl_req_info req_info; int pos_hash; int pos_idx; }; +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; + long unsigned int 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; +}; + +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_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 = 4, +}; + +struct stats_req_info { + struct ethnl_req_info base; + long unsigned int stat_mask[1]; +}; + +struct stats_reply_data { + struct ethnl_reply_data base; + 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; + const struct ethtool_rmon_hist_range *rmon_ranges; +}; + +struct phc_vclocks_reply_data { + struct ethnl_reply_data base; + int num; + int *index; +}; + struct nf_hook_entries_rcu_head { struct callback_head head; void *allocation; }; +struct nf_conn; + +enum nf_nat_manip_type; + +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); +}; + +struct nf_conntrack_tuple; + +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 *); +}; + +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); +}; + +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 *); +}; + +struct nf_queue_entry { + struct list_head list; + struct sk_buff *skb; + unsigned int id; + unsigned int hook_index; + struct net_device *physin; + struct net_device *physout; + struct nf_hook_state state; + u16 size; +}; + struct nf_loginfo { u_int8_t type; union { @@ -146969,6 +152450,11 @@ struct ip6_rt_info { u_int32_t mark; }; +struct nf_queue_handler { + int (*outfn)(struct nf_queue_entry *, unsigned int); + void (*nf_hook_drop)(struct net *); +}; + struct nf_sockopt_ops { struct list_head list; u_int8_t pf; @@ -147095,7 +152581,8 @@ struct fib_rt_info { u8 type; u8 offload: 1; u8 trap: 1; - u8 unused: 6; + u8 offload_failed: 1; + u8 unused: 5; }; struct uncached_list { @@ -147103,6 +152590,13 @@ struct uncached_list { struct list_head head; }; +struct ip_rt_acct { + __u32 o_bytes; + __u32 o_packets; + __u32 i_bytes; + __u32 i_packets; +}; + struct rt_cache_stat { unsigned int in_slow_tot; unsigned int in_slow_mc; @@ -147123,9 +152617,9 @@ struct fib_alias { u8 fa_slen; u32 tb_id; s16 fa_default; - u8 offload: 1; - u8 trap: 1; - u8 unused: 6; + u8 offload; + u8 trap; + u8 offload_failed; struct callback_head rcu; }; @@ -147134,6 +152628,11 @@ struct fib_prop { u8 scope; }; +struct net_offload { + struct offload_callbacks callbacks; + unsigned int flags; +}; + struct raw_hashinfo { rwlock_t lock; struct hlist_head ht[256]; @@ -147222,11 +152721,22 @@ struct ip_mreq_source { }; struct ip_msfilter { - __be32 imsf_multiaddr; - __be32 imsf_interface; - __u32 imsf_fmode; - __u32 imsf_numsrc; - __be32 imsf_slist[1]; + union { + struct { + __be32 imsf_multiaddr_aux; + __be32 imsf_interface_aux; + __u32 imsf_fmode_aux; + __u32 imsf_numsrc_aux; + __be32 imsf_slist[1]; + }; + struct { + __be32 imsf_multiaddr; + __be32 imsf_interface; + __u32 imsf_fmode; + __u32 imsf_numsrc; + __be32 imsf_slist_flex[0]; + }; + }; }; struct group_req { @@ -147241,11 +152751,22 @@ struct group_source_req { }; struct group_filter { - __u32 gf_interface; - struct __kernel_sockaddr_storage gf_group; - __u32 gf_fmode; - __u32 gf_numsrc; - struct __kernel_sockaddr_storage gf_slist[1]; + 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 in_pktinfo { @@ -147266,12 +152787,23 @@ struct compat_group_source_req { } __attribute__((packed)); struct compat_group_filter { - __u32 gf_interface; - struct __kernel_sockaddr_storage gf_group; - __u32 gf_fmode; - __u32 gf_numsrc; - struct __kernel_sockaddr_storage gf_slist[1]; -} __attribute__((packed)); + 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)); + }; +}; enum { BPFILTER_IPT_SO_SET_REPLACE = 64, @@ -147287,13 +152819,6 @@ enum { BPFILTER_IPT_GET_MAX = 68, }; -struct bpfilter_umh_ops { - struct umd_info info; - struct mutex lock; - int (*sockopt)(struct sock *, int, sockptr_t, unsigned int, bool); - int (*start)(); -}; - struct tcpvegas_info { __u32 tcpv_enabled; __u32 tcpv_rttcnt; @@ -147466,6 +152991,7 @@ enum { TCP_NLA_TIMEOUT_REHASH = 23, TCP_NLA_BYTES_NOTSENT = 24, TCP_NLA_EDT = 25, + TCP_NLA_TTL = 26, }; struct tcp_zerocopy_receive { @@ -147477,6 +153003,10 @@ struct tcp_zerocopy_receive { __u64 copybuf_address; __s32 copybuf_len; __u32 flags; + __u64 msg_control; + __u64 msg_controllen; + __u32 msg_flags; + __u32 reserved; }; struct tcp_md5sig_pool { @@ -147492,6 +153022,11 @@ enum tcp_chrono { __TCP_CHRONO_MAX = 4, }; +enum { + TCP_CMSG_INQ = 1, + TCP_CMSG_TS = 2, +}; + struct tcp_splice_state { struct pipe_inode_info *pipe; size_t len; @@ -147510,6 +153045,12 @@ struct tcp_sack_block_wire { __be32 end_seq; }; +struct static_key_false_deferred { + struct static_key_false key; + long unsigned int timeout; + struct delayed_work work; +}; + struct mptcp_ext { union { u64 data_ack; @@ -147518,6 +153059,7 @@ struct mptcp_ext { u64 data_seq; u32 subflow_seq; u16 data_len; + __sum16 csum; u8 use_map: 1; u8 dsn64: 1; u8 data_fin: 1; @@ -147525,7 +153067,9 @@ struct mptcp_ext { u8 ack64: 1; u8 mpc_map: 1; u8 frozen: 1; - u8 __unused: 1; + u8 reset_transient: 1; + u8 reset_reason: 4; + u8 csum_reqd: 1; }; enum tcp_queue { @@ -147570,25 +153114,54 @@ enum tsq_flags { TCPF_MTU_REDUCED_DEFERRED = 32, }; -struct mptcp_out_options { - u16 suboptions; - u64 sndr_key; - u64 rcvr_key; +struct mptcp_rm_list { + u8 ids[8]; + u8 nr; +}; + +struct mptcp_addr_info { + u8 id; + sa_family_t family; + __be16 port; union { struct in_addr addr; struct in6_addr addr6; }; - u8 addr_id; - u16 port; - u64 ahmac; - u8 rm_id; +}; + +struct mptcp_out_options { + u16 suboptions; + struct mptcp_rm_list rm_list; u8 join_id; u8 backup; - u32 nonce; - u64 thmac; - u32 token; - u8 hmac[20]; - struct mptcp_ext ext_copy; + u8 reset_reason: 4; + u8 reset_transient: 1; + u8 csum_reqd: 1; + u8 allow_join_id0: 1; + union { + struct { + u64 sndr_key; + u64 rcvr_key; + u64 data_seq; + u32 subflow_seq; + u16 data_len; + __sum16 csum; + }; + struct { + struct mptcp_addr_info addr; + u64 ahmac; + }; + struct { + struct mptcp_ext ext_copy; + u64 fail_seq; + }; + struct { + u32 nonce; + u32 token; + u64 thmac; + u8 hmac[20]; + }; + }; }; struct tcp_out_options { @@ -147619,6 +153192,11 @@ struct tcp_md5sig { __u8 tcpm_key[80]; }; +struct icmp_err { + int errno; + unsigned int fatal: 1; +}; + enum tcp_tw_status { TCP_TW_SUCCESS = 0, TCP_TW_RST = 1, @@ -147647,7 +153225,6 @@ struct tcp_iter_state { struct seq_net_private p; enum tcp_seq_states state; struct sock *syn_wait_sk; - struct tcp_seq_afinfo *bpf_seq_afinfo; int bucket; int offset; int sbucket; @@ -147655,6 +153232,15 @@ struct tcp_iter_state { loff_t last_pos; }; +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 bpf_iter__tcp { union { struct bpf_iter_meta *meta; @@ -147749,6 +153335,19 @@ struct raw_frag_vec { int hlen; }; +struct ip_tunnel_encap { + u16 type; + u16 flags; + __be16 sport; + __be16 dport; +}; + +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_skb_cb { union { struct inet_skb_parm h4; @@ -147784,7 +153383,7 @@ struct bpf_iter__udp { struct udp_sock *udp_sk; }; uid_t uid; - int: 32; + long: 0; int bucket; }; @@ -147797,6 +153396,8 @@ struct inet_protosw { unsigned char flags; }; +typedef struct sk_buff * (*gro_receive_t)(struct list_head *, struct sk_buff *); + typedef struct sk_buff * (*gro_receive_sk_t)(struct sock *, struct list_head *, struct sk_buff *); typedef struct sock * (*udp_lookup_t)(const struct sk_buff *, __be16, __be16); @@ -147809,6 +153410,10 @@ struct arpreq { char arp_dev[16]; }; +typedef struct { + char ax25_call[7]; +} ax25_address; + enum ip_conntrack_status { IPS_EXPECTED_BIT = 0, IPS_EXPECTED = 1, @@ -147869,13 +153474,25 @@ struct icmp_extobj_hdr { __u8 class_type; }; -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 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 icmp_bxm { @@ -147984,6 +153601,15 @@ struct rtentry { short unsigned int rt_irtt; }; +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 compat_rtentry { u32 rt_pad1; struct sockaddr rt_dst; @@ -148360,7 +153986,8 @@ struct nexthop_grp { enum { NEXTHOP_GRP_TYPE_MPATH = 0, - __NEXTHOP_GRP_TYPE_MAX = 1, + NEXTHOP_GRP_TYPE_RES = 1, + __NEXTHOP_GRP_TYPE_MAX = 2, }; enum { @@ -148376,7 +154003,28 @@ enum { NHA_GROUPS = 9, NHA_MASTER = 10, NHA_FDB = 11, - __NHA_MAX = 12, + NHA_RES_GROUP = 12, + NHA_RES_BUCKET = 13, + __NHA_MAX = 14, +}; + +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_config { @@ -148394,6 +154042,12 @@ struct nh_config { } gw; struct nlattr *nh_grp; u16 nh_grp_type; + u16 nh_grp_res_num_buckets; + long unsigned int nh_grp_res_idle_timer; + long unsigned int 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; @@ -148403,6 +154057,15 @@ struct nh_config { 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, }; struct nh_notifier_single_info { @@ -148429,17 +154092,63 @@ struct nh_notifier_grp_info { struct nh_notifier_grp_entry_info nh_entries[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_notifier_res_table_info { + u16 num_nh_buckets; + struct nh_notifier_single_info nhs[0]; +}; + struct nh_notifier_info { struct net *net; struct netlink_ext_ack *extack; u32 id; - bool is_grp; + 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_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; + u32 done_nh_idx; +}; + +struct rtm_dump_nexthop_bucket_data { + struct rtm_dump_res_bucket_ctx *ctx; + struct nh_dump_filter filter; +}; + +struct bpfilter_umh_ops { + struct umd_info info; + struct mutex lock; + int (*sockopt)(struct sock *, int, sockptr_t, unsigned int, bool); + int (*start)(); +}; + struct snmp_mib { const char *name; int entry; @@ -148743,7 +154452,6 @@ struct tls_rec { struct scatterlist sg_content_type; char aad_space[13]; u8 iv_data[16]; - long: 24; long: 64; long: 64; struct aead_request aead_req; @@ -148777,7 +154485,9 @@ enum { enum { TCP_BPF_BASE = 0, TCP_BPF_TX = 1, - TCP_BPF_NUM_CFGS = 2, + TCP_BPF_RX = 2, + TCP_BPF_TXRX = 3, + TCP_BPF_NUM_CFGS = 4, }; enum { @@ -149093,7 +154803,7 @@ struct ip_tunnel { long unsigned int err_time; int err_count; u32 i_seqno; - u32 o_seqno; + atomic_t o_seqno; int tun_hlen; u32 index; u8 erspan_ver; @@ -149149,7 +154859,7 @@ struct ip6_tnl { int err_count; long unsigned int err_time; __u32 i_seqno; - __u32 o_seqno; + atomic_t o_seqno; int hlen; int tun_hlen; int encap_hlen; @@ -149179,7 +154889,8 @@ struct ip_tunnel_prl_entry { }; struct xfrm_trans_tasklet { - struct tasklet_struct tasklet; + struct work_struct work; + spinlock_t queue_lock; struct sk_buff_head queue; }; @@ -149226,6 +154937,27 @@ struct unix_stream_read_state { unsigned int splice_flags; }; +struct bpf_iter__unix { + union { + struct bpf_iter_meta *meta; + }; + union { + struct unix_sock *unix_sk; + }; + uid_t uid; +}; + +struct ioam6_pernet_data { + struct mutex lock; + struct rhashtable namespaces; + struct rhashtable schemas; +}; + +struct ipv6_params { + __s32 disable_ipv6; + __s32 autoconf; +}; + enum flowlabel_reflect { FLOWLABEL_REFLECT_ESTABLISHED = 1, FLOWLABEL_REFLECT_TCP_RESET = 2, @@ -149286,6 +155018,13 @@ struct ip6_frag_state { u8 nexthdr; }; +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; @@ -149295,6 +155034,12 @@ struct ipcm6_cookie { __u16 gso_size; }; +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 { IFLA_INET6_UNSPEC = 0, IFLA_INET6_FLAGS = 1, @@ -149305,7 +155050,8 @@ enum { IFLA_INET6_ICMP6STATS = 6, IFLA_INET6_TOKEN = 7, IFLA_INET6_ADDR_GEN_MODE = 8, - __IFLA_INET6_MAX = 9, + IFLA_INET6_RA_MTU = 9, + __IFLA_INET6_MAX = 10, }; enum in6_addr_gen_mode { @@ -149404,7 +155150,11 @@ enum { DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN = 49, DEVCONF_NDISC_TCLASS = 50, DEVCONF_RPL_SEG_ENABLED = 51, - DEVCONF_MAX = 52, + DEVCONF_RA_DEFRTR_METRIC = 52, + DEVCONF_IOAM6_ENABLED = 53, + DEVCONF_IOAM6_ID = 54, + DEVCONF_IOAM6_ID_WIDE = 55, + DEVCONF_MAX = 56, }; enum { @@ -149557,6 +155307,8 @@ struct rt6_exception { struct callback_head rcu; }; +typedef struct rt6_info * (*pol_lookup_t)(struct net *, struct fib6_table *, struct flowi6 *, const struct sk_buff *, int); + struct route_info { __u8 type; __u8 length; @@ -149961,9 +155713,70 @@ struct ipv6_rpl_sr_hdr { } segments; }; -struct tlvtype_proc { - int type; - bool (*func)(struct sk_buff *, int); +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 *schema; + __be16 id; + __be32 data; + __be64 data_wide; +}; + +struct ioam6_schema { + struct rhash_head head; + struct callback_head rcu; + struct ioam6_namespace *ns; + u32 id; + int len; + __be32 hdr; + u8 data[0]; }; struct ip6fl_iter_state { @@ -150008,6 +155821,30 @@ struct seg6_hmac_info { u8 alg_id; }; +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, +}; + typedef short unsigned int mifi_t; typedef __u32 if_mask; @@ -150120,13 +155957,13 @@ struct br_input_skb_cb { u8 src_port_isolated: 1; u8 vlan_filtered: 1; u8 br_netfilter_broute: 1; - int offload_fwd_mark; + u8 tx_fwd_offload: 1; + int src_hwdom; + long unsigned int fwd_hwdoms; }; struct nf_bridge_frag_data; -typedef struct rt6_info * (*pol_lookup_t)(struct net *, struct fib6_table *, struct flowi6 *, const struct sk_buff *, int); - struct fib6_rule { struct fib_rule common; struct rt6key src; @@ -150207,6 +156044,12 @@ enum l3mdev_type { __L3MDEV_TYPE_MAX = 2, }; +enum { + IP6_FH_F_FRAG = 1, + IP6_FH_F_AUTH = 2, + IP6_FH_F_SKIP_RH = 4, +}; + enum { SEG6_LOCAL_UNSPEC = 0, SEG6_LOCAL_ACTION = 1, @@ -150218,7 +156061,8 @@ enum { SEG6_LOCAL_OIF = 7, SEG6_LOCAL_BPF = 8, SEG6_LOCAL_VRFTABLE = 9, - __SEG6_LOCAL_MAX = 10, + SEG6_LOCAL_COUNTERS = 10, + __SEG6_LOCAL_MAX = 11, }; enum { @@ -150228,6 +156072,15 @@ enum { __SEG6_LOCAL_BPF_PROG_MAX = 3, }; +enum { + SEG6_LOCAL_CNT_UNSPEC = 0, + SEG6_LOCAL_CNT_PAD = 1, + SEG6_LOCAL_CNT_PACKETS = 2, + SEG6_LOCAL_CNT_BYTES = 3, + SEG6_LOCAL_CNT_ERRORS = 4, + __SEG6_LOCAL_CNT_MAX = 5, +}; + struct seg6_local_lwt; struct seg6_local_lwtunnel_ops { @@ -150246,11 +156099,11 @@ struct seg6_end_dt_info { struct net *net; int vrf_ifindex; int vrf_table; - __be16 proto; u16 family; - int hdrlen; }; +struct pcpu_seg6_local_counters; + struct seg6_action_desc; struct seg6_local_lwt { @@ -150263,6 +156116,7 @@ struct seg6_local_lwt { int oif; struct bpf_lwt_prog bpf; struct seg6_end_dt_info dt_info; + struct pcpu_seg6_local_counters *pcpu_counters; int headroom; struct seg6_action_desc *desc; long unsigned int parsed_optattrs; @@ -150277,6 +156131,19 @@ struct seg6_action_desc { struct seg6_local_lwtunnel_ops slwt_ops; }; +struct pcpu_seg6_local_counters { + u64_stats_t packets; + u64_stats_t bytes; + u64_stats_t errors; + struct u64_stats_sync syncp; +}; + +struct seg6_local_counters { + __u64 packets; + __u64 bytes; + __u64 errors; +}; + struct seg6_action_param { int (*parse)(struct nlattr **, struct seg6_local_lwt *); int (*put)(struct sk_buff *, struct seg6_local_lwt *); @@ -150304,9 +156171,20 @@ struct seg6_hmac_algo { }; enum { - IP6_FH_F_FRAG = 1, - IP6_FH_F_AUTH = 2, - IP6_FH_F_SKIP_RH = 4, + IOAM6_IPTUNNEL_UNSPEC = 0, + IOAM6_IPTUNNEL_TRACE = 1, + __IOAM6_IPTUNNEL_MAX = 2, +}; + +struct ioam6_lwt_encap { + struct ipv6_opt_hdr eh; + u8 pad[2]; + struct ioam6_hdr ioamh; + struct ioam6_trace_hdr traceh; +}; + +struct ioam6_lwt { + struct ioam6_lwt_encap tuninfo; }; struct sockaddr_pkt { @@ -150537,6 +156415,13 @@ struct packet_fanout { long: 64; struct packet_type prot_hook; struct sock *arr[0]; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; struct packet_rollover { @@ -150580,9 +156465,19 @@ struct packet_sock { struct net_device *cached_dev; int (*xmit)(struct sk_buff *); long: 64; + long: 64; + long: 64; + long: 64; + long: 64; struct packet_type prot_hook; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; atomic_t tp_drops; - long: 32; long: 64; long: 64; long: 64; @@ -150616,11 +156511,6 @@ struct packet_skb_cb { } sa; }; -struct _strp_msg { - struct strp_msg strp; - int accum_len; -}; - struct vlan_group { unsigned int nr_vlan_devs; struct hlist_node hlist; @@ -150788,14 +156678,12 @@ struct cfg80211_ibss_params { bool control_port; bool control_port_over_nl80211; bool userspace_handles_dfs; - int: 24; int mcast_rate[5]; struct ieee80211_ht_cap ht_capa; struct ieee80211_ht_cap ht_capa_mask; struct key_params *wep_keys; int wep_tx_key; - int: 32; -} __attribute__((packed)); +}; enum nl80211_auth_type { NL80211_AUTHTYPE_OPEN_SYSTEM = 0, @@ -150895,17 +156783,14 @@ struct cfg80211_connect_params { const u8 *ssid; size_t ssid_len; enum nl80211_auth_type auth_type; - int: 32; const u8 *ie; size_t ie_len; bool privacy; - int: 24; enum nl80211_mfp mfp; struct cfg80211_crypto_settings crypto; const u8 *key; u8 key_len; u8 key_idx; - short: 16; u32 flags; int bg_scan_period; struct ieee80211_ht_cap ht_capa; @@ -150913,7 +156798,6 @@ struct cfg80211_connect_params { struct ieee80211_vht_cap vht_capa; struct ieee80211_vht_cap vht_capa_mask; bool pbss; - int: 24; struct cfg80211_bss_selection bss_select; const u8 *prev_bssid; const u8 *fils_erp_username; @@ -150921,14 +156805,11 @@ struct cfg80211_connect_params { const u8 *fils_erp_realm; size_t fils_erp_realm_len; u16 fils_erp_next_seq_num; - long: 48; const u8 *fils_erp_rrk; size_t fils_erp_rrk_len; bool want_1x; - int: 24; struct ieee80211_edmg edmg; - int: 32; -} __attribute__((packed)); +}; struct cfg80211_cqm_config; @@ -150941,11 +156822,12 @@ struct wireless_dev { struct net_device *netdev; u32 identifier; struct list_head mgmt_registrations; - spinlock_t mgmt_registrations_lock; u8 mgmt_registrations_need_update: 1; struct mutex mtx; bool use_4addr; bool is_running; + bool registered; + bool registering; u8 address[6]; u8 ssid[32]; u8 ssid_len; @@ -151025,7 +156907,13 @@ struct compat_iw_point { struct __compat_iw_event { __u16 len; __u16 cmd; - compat_caddr_t pointer; + union { + compat_caddr_t pointer; + struct { + struct {} __empty_ptr_bytes; + __u8 ptr_bytes[0]; + }; + }; }; enum nl80211_reg_initiator { @@ -151149,8 +157037,12 @@ enum nl80211_ext_feature_index { NL80211_EXT_FEATURE_FILS_DISCOVERY = 52, NL80211_EXT_FEATURE_UNSOL_BCAST_PROBE_RESP = 53, NL80211_EXT_FEATURE_BEACON_RATE_HE = 54, - NUM_NL80211_EXT_FEATURES = 55, - MAX_NL80211_EXT_FEATURES = 54, + NL80211_EXT_FEATURE_SECURE_LTF = 55, + NL80211_EXT_FEATURE_SECURE_RTT = 56, + NL80211_EXT_FEATURE_PROT_RANGE_NEGO_AND_MEASURE = 57, + NL80211_EXT_FEATURE_BSS_COLOR = 58, + NUM_NL80211_EXT_FEATURES = 59, + MAX_NL80211_EXT_FEATURES = 58, }; enum nl80211_dfs_state { @@ -151187,6 +157079,8 @@ struct ieee80211_he_6ghz_capa { __le16 capa; }; +struct rfkill; + enum environment_cap { ENVIRON_ANY = 0, ENVIRON_INDOOR = 1, @@ -151277,7 +157171,7 @@ struct ieee80211_sta_ht_cap { u8 ampdu_factor; u8 ampdu_density; struct ieee80211_mcs_info mcs; - char: 8; + short: 0; } __attribute__((packed)); struct ieee80211_sta_vht_cap { @@ -151297,7 +157191,11 @@ struct ieee80211_sband_iftype_data { u16 types_mask; struct ieee80211_sta_he_cap he_cap; struct ieee80211_he_6ghz_capa he_6ghz_capa; - char: 8; + long: 0; + struct { + const u8 *data; + unsigned int len; + } vendor_elems; } __attribute__((packed)); struct ieee80211_sta_s1g_cap { @@ -151375,6 +157273,7 @@ struct wiphy_vendor_command; struct cfg80211_pmsr_capabilities; struct wiphy { + struct mutex mtx; u8 perm_addr[6]; u8 addr_mask[6]; struct mac_address___2 *addresses; @@ -151388,7 +157287,7 @@ struct wiphy { u32 flags; u32 regulatory_flags; u32 features; - u8 ext_features[7]; + u8 ext_features[8]; u32 ap_sme_capa; enum cfg80211_signal_type signal_type; int bss_priv_size; @@ -151461,6 +157360,9 @@ struct wiphy { } tid_config_support; u8 max_data_retry_count; const struct cfg80211_sar_capa *sar_capa; + struct rfkill *rfkill; + long: 64; + long: 64; long: 64; char priv[0]; }; @@ -152248,7 +158150,7 @@ struct switchdev_attr { void (*complete)(struct net_device *, int, void *); union { u8 stp_state; - long unsigned int brport_flags; + struct switchdev_brport_flags brport_flags; bool mrouter; clock_t ageing_time; bool vlan_filtering; @@ -152258,6 +158160,14 @@ struct switchdev_attr { } u; }; +struct switchdev_brport { + struct net_device *dev; + const void *ctx; + struct notifier_block *atomic_nb; + struct notifier_block *blocking_nb; + bool tx_fwd_offload; +}; + enum switchdev_notifier_type { SWITCHDEV_FDB_ADD_TO_BRIDGE = 1, SWITCHDEV_FDB_DEL_TO_BRIDGE = 2, @@ -152273,27 +158183,42 @@ enum switchdev_notifier_type { 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, }; struct switchdev_notifier_info { struct net_device *dev; struct netlink_ext_ack *extack; + const void *ctx; +}; + +struct switchdev_notifier_fdb_info { + struct switchdev_notifier_info info; + const unsigned char *addr; + u16 vid; + u8 added_by_user: 1; + u8 is_local: 1; + u8 offloaded: 1; }; struct switchdev_notifier_port_obj_info { struct switchdev_notifier_info info; const struct switchdev_obj *obj; - struct switchdev_trans *trans; bool handled; }; struct switchdev_notifier_port_attr_info { struct switchdev_notifier_info info; const struct switchdev_attr *attr; - struct switchdev_trans *trans; bool handled; }; +struct switchdev_notifier_brport_info { + struct switchdev_notifier_info info; + const struct switchdev_brport brport; +}; + typedef void switchdev_deferred_func_t(struct net_device *, const void *); struct switchdev_deferred_item { @@ -152303,6 +158228,13 @@ struct switchdev_deferred_item { long unsigned int data[0]; }; +struct switchdev_nested_priv { + bool (*check_cb)(const struct net_device *); + bool (*foreign_dev_check_cb)(const struct net_device *, const struct net_device *); + const struct net_device *dev; + struct net_device *lower_dev; +}; + typedef int (*lookup_by_table_id_t)(struct net *, u32); struct l3mdev_handler { @@ -152316,30 +158248,6 @@ struct ncsi_dev { void (*handler)(struct ncsi_dev *); }; -enum { - NCSI_CAP_BASE = 0, - NCSI_CAP_GENERIC = 0, - NCSI_CAP_BC = 1, - NCSI_CAP_MC = 2, - NCSI_CAP_BUFFER = 3, - NCSI_CAP_AEN = 4, - NCSI_CAP_VLAN = 5, - NCSI_CAP_MAX = 6, -}; - -enum { - NCSI_MODE_BASE = 0, - NCSI_MODE_ENABLE = 0, - NCSI_MODE_TX_ENABLE = 1, - NCSI_MODE_LINK = 2, - NCSI_MODE_VLAN = 3, - NCSI_MODE_BC = 4, - NCSI_MODE_MC = 5, - NCSI_MODE_AEN = 6, - NCSI_MODE_FC = 7, - NCSI_MODE_MAX = 8, -}; - struct ncsi_channel_version { u32 version; u32 alpha2; @@ -152651,6 +158559,17 @@ struct ncsi_cmd_handler { int (*handler)(struct sk_buff *, struct ncsi_cmd_arg *); }; +enum { + NCSI_CAP_BASE = 0, + NCSI_CAP_GENERIC = 0, + NCSI_CAP_BC = 1, + NCSI_CAP_MC = 2, + NCSI_CAP_BUFFER = 3, + NCSI_CAP_AEN = 4, + NCSI_CAP_VLAN = 5, + NCSI_CAP_MAX = 6, +}; + enum { NCSI_CAP_GENERIC_HWA = 1, NCSI_CAP_GENERIC_HDS = 2, @@ -152685,6 +158604,19 @@ enum { NCSI_CAP_VLAN_MASK = 7, }; +enum { + NCSI_MODE_BASE = 0, + NCSI_MODE_ENABLE = 0, + NCSI_MODE_TX_ENABLE = 1, + NCSI_MODE_LINK = 2, + NCSI_MODE_VLAN = 3, + NCSI_MODE_BC = 4, + NCSI_MODE_MC = 5, + NCSI_MODE_AEN = 6, + NCSI_MODE_FC = 7, + NCSI_MODE_MAX = 8, +}; + struct ncsi_rsp_pkt_hdr { struct ncsi_pkt_hdr common; __be16 code; @@ -152718,6 +158650,11 @@ struct ncsi_rsp_oem_bcm_pkt { unsigned char data[0]; }; +struct ncsi_rsp_oem_intel_pkt { + unsigned char cmd; + unsigned char data[0]; +}; + struct ncsi_rsp_gls_pkt { struct ncsi_rsp_pkt_hdr rsp; __be32 status; @@ -152920,10 +158857,11 @@ enum { ncsi_dev_state_probe_mlx_gma = 516, ncsi_dev_state_probe_mlx_smaf = 517, ncsi_dev_state_probe_cis = 518, - ncsi_dev_state_probe_gvi = 519, - ncsi_dev_state_probe_gc = 520, - ncsi_dev_state_probe_gls = 521, - ncsi_dev_state_probe_dp = 522, + ncsi_dev_state_probe_keep_phy = 519, + ncsi_dev_state_probe_gvi = 520, + ncsi_dev_state_probe_gc = 521, + ncsi_dev_state_probe_gls = 522, + ncsi_dev_state_probe_dp = 523, ncsi_dev_state_config_sp = 769, ncsi_dev_state_config_cis = 770, ncsi_dev_state_config_oem_gma = 771, @@ -153052,10 +158990,17 @@ struct xdp_options { __u32 flags; }; -struct xdp_desc { - __u64 addr; - __u32 len; - __u32 options; +struct xsk_map { + struct bpf_map map; + spinlock_t lock; + struct xdp_sock *xsk_map[0]; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; struct xdp_ring; @@ -153091,7 +159036,6 @@ struct xsk_map_node { struct xdp_ring { u32 producer; - long: 32; long: 64; long: 64; long: 64; @@ -153100,7 +159044,6 @@ struct xdp_ring { long: 64; long: 64; u32 pad1; - long: 32; long: 64; long: 64; long: 64; @@ -153109,7 +159052,6 @@ struct xdp_ring { long: 64; long: 64; u32 consumer; - long: 32; long: 64; long: 64; long: 64; @@ -153127,7 +159069,6 @@ struct xdp_ring { long: 64; long: 64; u32 pad3; - long: 32; long: 64; long: 64; long: 64; @@ -153158,7 +159099,19 @@ struct xsk_dma_map { }; struct mptcp_mib { - long unsigned int mibs[23]; + long unsigned int mibs[43]; +}; + +enum mptcp_event_type { + MPTCP_EVENT_UNSPEC = 0, + MPTCP_EVENT_CREATED = 1, + MPTCP_EVENT_ESTABLISHED = 2, + MPTCP_EVENT_CLOSED = 3, + MPTCP_EVENT_ANNOUNCED = 6, + MPTCP_EVENT_REMOVED = 7, + MPTCP_EVENT_SUB_ESTABLISHED = 10, + MPTCP_EVENT_SUB_CLOSED = 11, + MPTCP_EVENT_SUB_PRIORITY = 13, }; struct mptcp_options_received { @@ -153168,56 +159121,29 @@ struct mptcp_options_received { u64 data_seq; u32 subflow_seq; u16 data_len; - u16 mp_capable: 1; - u16 mp_join: 1; - u16 fastclose: 1; - u16 dss: 1; - u16 add_addr: 1; - u16 rm_addr: 1; - u16 family: 4; - u16 echo: 1; - u16 backup: 1; + __sum16 csum; + u16 suboptions; u32 token; u32 nonce; + u16 use_map: 1; + u16 dsn64: 1; + u16 data_fin: 1; + u16 use_ack: 1; + u16 ack64: 1; + u16 mpc_map: 1; + u16 reset_reason: 4; + u16 reset_transient: 1; + u16 echo: 1; + u16 backup: 1; + u16 deny_join_id0: 1; + u16 __unused: 2; + u8 join_id; u64 thmac; u8 hmac[20]; - u8 join_id; - u8 use_map: 1; - u8 dsn64: 1; - u8 data_fin: 1; - u8 use_ack: 1; - u8 ack64: 1; - u8 mpc_map: 1; - u8 __unused: 2; - u8 addr_id; - u8 rm_id; - union { - struct in_addr addr; - struct in6_addr addr6; - }; + struct mptcp_addr_info addr; + struct mptcp_rm_list rm_list; u64 ahmac; - u16 port; -}; - -struct mptcp_addr_info { - sa_family_t family; - __be16 port; - u8 id; - u8 flags; - int ifindex; - union { - struct in_addr addr; - struct in6_addr addr6; - }; -}; - -enum mptcp_pm_status { - MPTCP_PM_ADD_ADDR_RECEIVED = 0, - MPTCP_PM_ADD_ADDR_SEND_ACK = 1, - MPTCP_PM_RM_ADDR_RECEIVED = 2, - MPTCP_PM_ESTABLISHED = 3, - MPTCP_PM_ALREADY_ESTABLISHED = 4, - MPTCP_PM_SUBFLOW_ESTABLISHED = 5, + u64 fail_seq; }; struct mptcp_pm_data { @@ -153230,16 +159156,14 @@ struct mptcp_pm_data { bool work_pending; bool accept_addr; bool accept_subflow; + bool remote_deny_join_id0; u8 add_addr_signaled; u8 add_addr_accepted; u8 local_addr_used; u8 subflows; - u8 add_addr_signal_max; - u8 add_addr_accept_max; - u8 local_addr_max; - u8 subflows_max; u8 status; - u8 rm_id; + struct mptcp_rm_list rm_list_tx; + struct mptcp_rm_list rm_list_rx; }; struct mptcp_data_frag { @@ -153265,28 +159189,27 @@ struct mptcp_sock { struct sock *last_snd; int snd_burst; int old_wspace; + u64 recovery_snd_nxt; u64 snd_una; u64 wnd_end; long unsigned int timer_ival; u32 token; - int rmem_pending; int rmem_released; long unsigned int flags; + bool recovery; bool can_ack; bool fully_established; bool rcv_data_fin; bool snd_data_fin_enable; bool rcv_fastclose; bool use_64bit_ack; + bool csum_enabled; spinlock_t join_list_lock; - struct sock *ack_hint; struct work_struct work; struct sk_buff *ooo_last_skb; struct rb_root out_of_order_queue; struct sk_buff_head receive_queue; - struct sk_buff_head skb_tx_cache; int tx_pending_data; - int size_goal_cache; struct list_head conn_list; struct list_head rtx_queue; struct mptcp_data_frag *first_pending; @@ -153300,6 +159223,8 @@ struct mptcp_sock { u64 time; u64 rtt_us; } rcvq_space; + u32 setsockopt_seq; + char ca_name[16]; }; struct mptcp_subflow_request_sock { @@ -153307,6 +159232,8 @@ struct mptcp_subflow_request_sock { u16 mp_capable: 1; u16 mp_join: 1; u16 backup: 1; + u16 csum_reqd: 1; + u16 allow_join_id0: 1; u8 local_id; u8 remote_id; u64 local_key; @@ -153325,6 +159252,11 @@ enum mptcp_data_avail { MPTCP_SUBFLOW_DATA_AVAIL = 1, }; +struct mptcp_delegated_action { + struct napi_struct napi; + struct list_head head; +}; + struct mptcp_subflow_context { struct list_head node; u64 local_key; @@ -153337,6 +159269,8 @@ struct mptcp_subflow_context { u32 map_subflow_seq; u32 ssn_offset; u32 map_data_len; + __wsum map_data_csum; + u32 map_csum_len; u32 request_mptcp: 1; u32 request_join: 1; u32 request_bkup: 1; @@ -153346,11 +159280,17 @@ struct mptcp_subflow_context { u32 pm_notified: 1; u32 conn_finished: 1; u32 map_valid: 1; + u32 map_csum_reqd: 1; + u32 map_data_fin: 1; u32 mpc_map: 1; u32 backup: 1; + u32 send_mp_prio: 1; + u32 send_mp_fail: 1; u32 rx_eof: 1; u32 can_ack: 1; u32 disposable: 1; + u32 stale: 1; + u32 valid_csum_seen: 1; enum mptcp_data_avail data_avail; u32 remote_nonce; u64 thmac; @@ -153359,6 +159299,14 @@ struct mptcp_subflow_context { u8 hmac[20]; u8 local_id; u8 remote_id; + u8 reset_seen: 1; + u8 reset_transient: 1; + u8 reset_reason: 4; + u8 stale_count; + long int delegated_status; + struct list_head delegated_node; + u32 setsockopt_seq; + u32 stale_rcv_tstamp; struct sock *tcp_sock; struct sock *conn; const struct inet_connection_sock_af_ops *icsk_af_ops; @@ -153372,34 +159320,123 @@ struct mptcp_subflow_context { enum linux_mptcp_mib_field { MPTCP_MIB_NUM = 0, MPTCP_MIB_MPCAPABLEPASSIVE = 1, - MPTCP_MIB_MPCAPABLEPASSIVEACK = 2, - MPTCP_MIB_MPCAPABLEPASSIVEFALLBACK = 3, - MPTCP_MIB_MPCAPABLEACTIVEFALLBACK = 4, - MPTCP_MIB_RETRANSSEGS = 5, - MPTCP_MIB_JOINNOTOKEN = 6, - MPTCP_MIB_JOINSYNRX = 7, - MPTCP_MIB_JOINSYNACKRX = 8, - MPTCP_MIB_JOINSYNACKMAC = 9, - MPTCP_MIB_JOINACKRX = 10, - MPTCP_MIB_JOINACKMAC = 11, - MPTCP_MIB_DSSNOMATCH = 12, - MPTCP_MIB_INFINITEMAPRX = 13, - MPTCP_MIB_OFOQUEUETAIL = 14, - MPTCP_MIB_OFOQUEUE = 15, - MPTCP_MIB_OFOMERGE = 16, - MPTCP_MIB_NODSSWINDOW = 17, - MPTCP_MIB_DUPDATA = 18, - MPTCP_MIB_ADDADDR = 19, - MPTCP_MIB_ECHOADD = 20, - MPTCP_MIB_RMADDR = 21, - MPTCP_MIB_RMSUBFLOW = 22, - __MPTCP_MIB_MAX = 23, + MPTCP_MIB_MPCAPABLEACTIVE = 2, + MPTCP_MIB_MPCAPABLEACTIVEACK = 3, + MPTCP_MIB_MPCAPABLEPASSIVEACK = 4, + MPTCP_MIB_MPCAPABLEPASSIVEFALLBACK = 5, + MPTCP_MIB_MPCAPABLEACTIVEFALLBACK = 6, + MPTCP_MIB_TOKENFALLBACKINIT = 7, + MPTCP_MIB_RETRANSSEGS = 8, + MPTCP_MIB_JOINNOTOKEN = 9, + MPTCP_MIB_JOINSYNRX = 10, + MPTCP_MIB_JOINSYNACKRX = 11, + MPTCP_MIB_JOINSYNACKMAC = 12, + MPTCP_MIB_JOINACKRX = 13, + MPTCP_MIB_JOINACKMAC = 14, + MPTCP_MIB_DSSNOMATCH = 15, + MPTCP_MIB_INFINITEMAPRX = 16, + MPTCP_MIB_DSSTCPMISMATCH = 17, + MPTCP_MIB_DATACSUMERR = 18, + MPTCP_MIB_OFOQUEUETAIL = 19, + MPTCP_MIB_OFOQUEUE = 20, + MPTCP_MIB_OFOMERGE = 21, + MPTCP_MIB_NODSSWINDOW = 22, + MPTCP_MIB_DUPDATA = 23, + MPTCP_MIB_ADDADDR = 24, + MPTCP_MIB_ECHOADD = 25, + MPTCP_MIB_PORTADD = 26, + MPTCP_MIB_ADDADDRDROP = 27, + MPTCP_MIB_JOINPORTSYNRX = 28, + MPTCP_MIB_JOINPORTSYNACKRX = 29, + MPTCP_MIB_JOINPORTACKRX = 30, + MPTCP_MIB_MISMATCHPORTSYNRX = 31, + MPTCP_MIB_MISMATCHPORTACKRX = 32, + MPTCP_MIB_RMADDR = 33, + MPTCP_MIB_RMADDRDROP = 34, + MPTCP_MIB_RMSUBFLOW = 35, + MPTCP_MIB_MPPRIOTX = 36, + MPTCP_MIB_MPPRIORX = 37, + MPTCP_MIB_MPFAILTX = 38, + MPTCP_MIB_MPFAILRX = 39, + MPTCP_MIB_RCVPRUNED = 40, + MPTCP_MIB_SUBFLOWSTALE = 41, + MPTCP_MIB_SUBFLOWRECOVER = 42, + __MPTCP_MIB_MAX = 43, +}; + +struct trace_event_raw_mptcp_subflow_get_send { + struct trace_entry ent; + bool active; + bool free; + u32 snd_wnd; + u32 pace; + u8 backup; + u64 ratio; + char __data[0]; }; +struct trace_event_raw_mptcp_dump_mpext { + struct trace_entry ent; + u64 data_ack; + u64 data_seq; + u32 subflow_seq; + u16 data_len; + u16 csum; + u8 use_map; + u8 dsn64; + u8 data_fin; + u8 use_ack; + u8 ack64; + u8 mpc_map; + u8 frozen; + u8 reset_transient; + u8 reset_reason; + u8 csum_reqd; + char __data[0]; +}; + +struct trace_event_raw_ack_update_msk { + struct trace_entry ent; + u64 data_ack; + u64 old_snd_una; + u64 new_snd_una; + u64 new_wnd_end; + u64 msk_wnd_end; + char __data[0]; +}; + +struct trace_event_raw_subflow_check_data_avail { + struct trace_entry ent; + u8 status; + const void *skb; + char __data[0]; +}; + +struct trace_event_data_offsets_mptcp_subflow_get_send {}; + +struct trace_event_data_offsets_mptcp_dump_mpext {}; + +struct trace_event_data_offsets_ack_update_msk {}; + +struct trace_event_data_offsets_subflow_check_data_avail {}; + +typedef void (*btf_trace_mptcp_subflow_get_send)(void *, struct mptcp_subflow_context *); + +typedef void (*btf_trace_get_mapping_status)(void *, struct mptcp_ext *); + +typedef void (*btf_trace_ack_update_msk)(void *, u64, u64, u64, u64, u64); + +typedef void (*btf_trace_subflow_check_data_avail)(void *, __u8, struct sk_buff *); + struct mptcp_skb_cb { u64 map_seq; u64 end_seq; u32 offset; + u8 has_rxtstamp: 1; +}; + +enum { + MPTCP_CMSG_TS = 1, }; struct mptcp_sendmsg_info { @@ -153408,6 +159445,7 @@ struct mptcp_sendmsg_info { u16 limit; u16 sent; unsigned int flags; + bool data_lock_held; }; struct subflow_send_info { @@ -153426,11 +159464,18 @@ enum mapping_status { enum mptcp_addr_signal_status { MPTCP_ADD_ADDR_SIGNAL = 0, MPTCP_ADD_ADDR_ECHO = 1, - MPTCP_ADD_ADDR_IPV6 = 2, - MPTCP_ADD_ADDR_PORT = 3, - MPTCP_RM_ADDR_SIGNAL = 4, + MPTCP_RM_ADDR_SIGNAL = 2, +}; + +struct csum_pseudo_header { + __be64 data_seq; + __be32 subflow_seq; + __be16 data_len; + __sum16 csum; }; +struct mptcp_pm_add_entry; + struct token_bucket { spinlock_t lock; int chain_len; @@ -153440,8 +159485,20 @@ struct token_bucket { struct mptcp_pernet { struct ctl_table_header *ctl_table_hdr; - int mptcp_enabled; unsigned int add_addr_timeout; + unsigned int stale_loss_cnt; + u8 mptcp_enabled; + u8 checksum_enabled; + u8 allow_join_initial_addr_port; +}; + +enum mptcp_pm_status { + MPTCP_PM_ADD_ADDR_RECEIVED = 0, + MPTCP_PM_ADD_ADDR_SEND_ACK = 1, + MPTCP_PM_RM_ADDR_RECEIVED = 2, + MPTCP_PM_ESTABLISHED = 3, + MPTCP_PM_ALREADY_ESTABLISHED = 4, + MPTCP_PM_SUBFLOW_ESTABLISHED = 5, }; enum { @@ -153496,13 +159553,38 @@ enum { MPTCP_PM_CMD_FLUSH_ADDRS = 4, MPTCP_PM_CMD_SET_LIMITS = 5, MPTCP_PM_CMD_GET_LIMITS = 6, - __MPTCP_PM_CMD_AFTER_LAST = 7, + MPTCP_PM_CMD_SET_FLAGS = 7, + __MPTCP_PM_CMD_AFTER_LAST = 8, +}; + +enum mptcp_event_attr { + MPTCP_ATTR_UNSPEC = 0, + MPTCP_ATTR_TOKEN = 1, + MPTCP_ATTR_FAMILY = 2, + MPTCP_ATTR_LOC_ID = 3, + MPTCP_ATTR_REM_ID = 4, + MPTCP_ATTR_SADDR4 = 5, + MPTCP_ATTR_SADDR6 = 6, + MPTCP_ATTR_DADDR4 = 7, + MPTCP_ATTR_DADDR6 = 8, + MPTCP_ATTR_SPORT = 9, + MPTCP_ATTR_DPORT = 10, + MPTCP_ATTR_BACKUP = 11, + MPTCP_ATTR_ERROR = 12, + MPTCP_ATTR_FLAGS = 13, + MPTCP_ATTR_TIMEOUT = 14, + MPTCP_ATTR_IF_IDX = 15, + MPTCP_ATTR_RESET_REASON = 16, + MPTCP_ATTR_RESET_FLAGS = 17, + __MPTCP_ATTR_AFTER_LAST = 18, }; struct mptcp_pm_addr_entry { struct list_head list; struct mptcp_addr_info addr; - struct callback_head rcu; + u8 flags; + int ifindex; + struct socket *lsk; }; struct mptcp_pm_add_entry { @@ -153517,11 +159599,13 @@ struct pm_nl_pernet { spinlock_t lock; struct list_head local_addr_list; unsigned int addrs; + unsigned int stale_loss_cnt; unsigned int add_addr_signal_max; unsigned int add_addr_accept_max; unsigned int local_addr_max; unsigned int subflows_max; unsigned int next_id; + long unsigned int id_bitmap[4]; }; struct join_entry { @@ -153582,6 +159666,8 @@ struct efi_boot_memmap { long unsigned int *buff_size; }; +typedef efi_status_t (*efi_exit_boot_map_processing)(struct efi_boot_memmap *, void *); + struct exit_boot_struct { efi_memory_desc_t *runtime_map; int *runtime_entry_count; @@ -153669,10 +159755,14 @@ union efi_rng_protocol { 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_handle_t, efi_tcg2_event_log_format, efi_physical_addr_t *, efi_physical_addr_t *, efi_bool_t *); + 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 *); void *hash_log_extend_event; void *submit_command; void *get_active_pcr_banks; @@ -153690,8 +159780,6 @@ union efi_tcg2_protocol { } mixed_mode; }; -typedef union efi_tcg2_protocol efi_tcg2_protocol_t; - struct efi_vendor_dev_path { struct efi_generic_dev_path header; efi_guid_t vendorguid; @@ -153728,8 +159816,6 @@ typedef struct { const void *optional_data; } efi_load_option_unpacked_t; -typedef efi_status_t (*efi_exit_boot_map_processing)(struct efi_boot_memmap *, void *); - typedef struct { u64 size; u64 file_size; @@ -153851,7 +159937,7 @@ union efi_pci_io_protocol { } mixed_mode; }; -/*=============================== ARCH ARM64: 5.11.0-1022-aws ===========================*/ +/*=============================== ARCH ARM64: 5.15.0-76-generic ===========================*/ #ifndef BPF_NO_PRESERVE_ACCESS_INDEX #pragma clang attribute pop diff --git a/driver/modern_bpf/definitions/vmlinux.h b/driver/modern_bpf/definitions/vmlinux.h index 0c58ac02d8..677363d34b 100644 --- a/driver/modern_bpf/definitions/vmlinux.h +++ b/driver/modern_bpf/definitions/vmlinux.h @@ -11,6 +11,7 @@ #include "x86_64/overlay.h" #elif defined(__TARGET_ARCH_arm64) #include "aarch64/vmlinux.h" +#include "aarch64/overlay.h" #elif defined(__TARGET_ARCH_s390) #include "s390x/vmlinux.h" #endif